diff --git a/.gitignore b/.gitignore index 6dc71a57..eb8a0623 100644 --- a/.gitignore +++ b/.gitignore @@ -1,6 +1,6 @@ node_modules dist/ -coverage +coverage/ .DS_Store *.log diff --git a/coverage/clover.xml b/coverage/clover.xml deleted file mode 100644 index b03bd39b..00000000 --- a/coverage/clover.xml +++ /dev/null @@ -1,3084 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/coverage/coverage-final.json b/coverage/coverage-final.json deleted file mode 100644 index 02ce8a41..00000000 --- a/coverage/coverage-final.json +++ /dev/null @@ -1,77 +0,0 @@ -{"/home/joao/projects/cracked-dev-cli/src/commands/run.ts": {"path":"/home/joao/projects/cracked-dev-cli/src/commands/run.ts","statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":51}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":75}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":60}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":58}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":80}},"5":{"start":{"line":6,"column":0},"end":{"line":6,"column":90}},"6":{"start":{"line":7,"column":0},"end":{"line":7,"column":66}},"7":{"start":{"line":8,"column":0},"end":{"line":8,"column":37}},"8":{"start":{"line":9,"column":0},"end":{"line":9,"column":37}},"9":{"start":{"line":10,"column":0},"end":{"line":10,"column":58}},"10":{"start":{"line":43,"column":4},"end":{"line":43,"column":24}},"11":{"start":{"line":44,"column":4},"end":{"line":44,"column":58}},"12":{"start":{"line":45,"column":4},"end":{"line":45,"column":56}},"13":{"start":{"line":46,"column":4},"end":{"line":46,"column":58}},"14":{"start":{"line":47,"column":4},"end":{"line":47,"column":58}},"15":{"start":{"line":48,"column":4},"end":{"line":48,"column":71}},"16":{"start":{"line":49,"column":4},"end":{"line":53,"column":7}},"17":{"start":{"line":57,"column":45},"end":{"line":57,"column":47}},"18":{"start":{"line":59,"column":4},"end":{"line":59,"column":39}},"19":{"start":{"line":59,"column":24},"end":{"line":59,"column":39}},"20":{"start":{"line":61,"column":18},"end":{"line":61,"column":42}},"21":{"start":{"line":62,"column":4},"end":{"line":73,"column":5}},"22":{"start":{"line":63,"column":27},"end":{"line":63,"column":49}},"23":{"start":{"line":64,"column":6},"end":{"line":64,"column":35}},"24":{"start":{"line":64,"column":26},"end":{"line":64,"column":35}},"25":{"start":{"line":67,"column":6},"end":{"line":72,"column":34}},"26":{"start":{"line":67,"column":28},"end":{"line":67,"column":48}},"27":{"start":{"line":68,"column":11},"end":{"line":72,"column":34}},"28":{"start":{"line":68,"column":34},"end":{"line":68,"column":55}},"29":{"start":{"line":69,"column":11},"end":{"line":72,"column":34}},"30":{"start":{"line":70,"column":8},"end":{"line":71,"column":48}},"31":{"start":{"line":70,"column":33},"end":{"line":70,"column":66}},"32":{"start":{"line":71,"column":13},"end":{"line":71,"column":48}},"33":{"start":{"line":72,"column":13},"end":{"line":72,"column":34}},"34":{"start":{"line":75,"column":4},"end":{"line":75,"column":19}},"35":{"start":{"line":79,"column":28},"end":{"line":79,"column":49}},"36":{"start":{"line":81,"column":4},"end":{"line":84,"column":5}},"37":{"start":{"line":82,"column":6},"end":{"line":82,"column":47}},"38":{"start":{"line":83,"column":6},"end":{"line":83,"column":13}},"39":{"start":{"line":86,"column":19},"end":{"line":86,"column":49}},"40":{"start":{"line":88,"column":4},"end":{"line":92,"column":5}},"41":{"start":{"line":89,"column":6},"end":{"line":91,"column":8}},"42":{"start":{"line":94,"column":26},"end":{"line":94,"column":53}},"43":{"start":{"line":96,"column":4},"end":{"line":98,"column":5}},"44":{"start":{"line":97,"column":6},"end":{"line":97,"column":78}},"45":{"start":{"line":100,"column":4},"end":{"line":102,"column":5}},"46":{"start":{"line":101,"column":6},"end":{"line":101,"column":77}},"47":{"start":{"line":104,"column":4},"end":{"line":157,"column":5}},"48":{"start":{"line":105,"column":6},"end":{"line":107,"column":7}},"49":{"start":{"line":106,"column":8},"end":{"line":106,"column":72}},"50":{"start":{"line":109,"column":43},"end":{"line":113,"column":8}},"51":{"start":{"line":116,"column":6},"end":{"line":118,"column":7}},"52":{"start":{"line":117,"column":8},"end":{"line":117,"column":65}},"53":{"start":{"line":120,"column":6},"end":{"line":120,"column":63}},"54":{"start":{"line":122,"column":6},"end":{"line":124,"column":8}},"55":{"start":{"line":126,"column":20},"end":{"line":126,"column":51}},"56":{"start":{"line":127,"column":6},"end":{"line":127,"column":62}},"57":{"start":{"line":129,"column":6},"end":{"line":153,"column":7}},"58":{"start":{"line":130,"column":8},"end":{"line":130,"column":42}},"59":{"start":{"line":132,"column":8},"end":{"line":132,"column":58}},"60":{"start":{"line":133,"column":8},"end":{"line":152,"column":11}},"61":{"start":{"line":134,"column":10},"end":{"line":151,"column":11}},"62":{"start":{"line":135,"column":27},"end":{"line":135,"column":70}},"63":{"start":{"line":136,"column":12},"end":{"line":145,"column":13}},"64":{"start":{"line":137,"column":14},"end":{"line":137,"column":40}},"65":{"start":{"line":138,"column":14},"end":{"line":144,"column":15}},"66":{"start":{"line":139,"column":16},"end":{"line":139,"column":48}},"67":{"start":{"line":140,"column":16},"end":{"line":143,"column":19}},"68":{"start":{"line":141,"column":18},"end":{"line":141,"column":50}},"69":{"start":{"line":142,"column":18},"end":{"line":142,"column":73}},"70":{"start":{"line":146,"column":12},"end":{"line":146,"column":42}},"71":{"start":{"line":147,"column":12},"end":{"line":147,"column":28}},"72":{"start":{"line":149,"column":12},"end":{"line":149,"column":42}},"73":{"start":{"line":150,"column":12},"end":{"line":150,"column":49}},"74":{"start":{"line":155,"column":6},"end":{"line":155,"column":36}},"75":{"start":{"line":156,"column":6},"end":{"line":156,"column":43}},"76":{"start":{"line":12,"column":0},"end":{"line":12,"column":13}},"77":{"start":{"line":13,"column":9},"end":{"line":13,"column":78}},"78":{"start":{"line":15,"column":9},"end":{"line":19,"column":4}},"79":{"start":{"line":21,"column":9},"end":{"line":26,"column":4}},"80":{"start":{"line":28,"column":9},"end":{"line":33,"column":4}}},"fnMap":{"0":{"name":"(anonymous_6)","decl":{"start":{"line":42,"column":2},"end":{"line":42,"column":14}},"loc":{"start":{"line":42,"column":41},"end":{"line":54,"column":3}}},"1":{"name":"(anonymous_7)","decl":{"start":{"line":56,"column":10},"end":{"line":56,"column":22}},"loc":{"start":{"line":56,"column":44},"end":{"line":76,"column":3}}},"2":{"name":"(anonymous_8)","decl":{"start":{"line":78,"column":2},"end":{"line":78,"column":7}},"loc":{"start":{"line":78,"column":11},"end":{"line":158,"column":3}}},"3":{"name":"(anonymous_9)","decl":{"start":{"line":133,"column":29},"end":{"line":133,"column":34}},"loc":{"start":{"line":133,"column":40},"end":{"line":152,"column":9}}},"4":{"name":"(anonymous_10)","decl":{"start":{"line":140,"column":39},"end":{"line":140,"column":40}},"loc":{"start":{"line":140,"column":62},"end":{"line":143,"column":17}}}},"branchMap":{"0":{"loc":{"start":{"line":59,"column":4},"end":{"line":59,"column":39}},"type":"if","locations":[{"start":{"line":59,"column":4},"end":{"line":59,"column":39}}]},"1":{"loc":{"start":{"line":64,"column":6},"end":{"line":64,"column":35}},"type":"if","locations":[{"start":{"line":64,"column":6},"end":{"line":64,"column":35}}]},"2":{"loc":{"start":{"line":64,"column":10},"end":{"line":64,"column":24}},"type":"binary-expr","locations":[{"start":{"line":64,"column":10},"end":{"line":64,"column":14}},{"start":{"line":64,"column":18},"end":{"line":64,"column":24}}]},"3":{"loc":{"start":{"line":67,"column":6},"end":{"line":72,"column":34}},"type":"if","locations":[{"start":{"line":67,"column":6},"end":{"line":72,"column":34}},{"start":{"line":68,"column":11},"end":{"line":72,"column":34}}]},"4":{"loc":{"start":{"line":68,"column":11},"end":{"line":72,"column":34}},"type":"if","locations":[{"start":{"line":68,"column":11},"end":{"line":72,"column":34}},{"start":{"line":69,"column":11},"end":{"line":72,"column":34}}]},"5":{"loc":{"start":{"line":69,"column":11},"end":{"line":72,"column":34}},"type":"if","locations":[{"start":{"line":69,"column":11},"end":{"line":72,"column":34}},{"start":{"line":72,"column":13},"end":{"line":72,"column":34}}]},"6":{"loc":{"start":{"line":70,"column":8},"end":{"line":71,"column":48}},"type":"if","locations":[{"start":{"line":70,"column":8},"end":{"line":71,"column":48}},{"start":{"line":71,"column":13},"end":{"line":71,"column":48}}]},"7":{"loc":{"start":{"line":81,"column":4},"end":{"line":84,"column":5}},"type":"if","locations":[{"start":{"line":81,"column":4},"end":{"line":84,"column":5}}]},"8":{"loc":{"start":{"line":88,"column":4},"end":{"line":92,"column":5}},"type":"if","locations":[{"start":{"line":88,"column":4},"end":{"line":92,"column":5}}]},"9":{"loc":{"start":{"line":94,"column":26},"end":{"line":94,"column":53}},"type":"binary-expr","locations":[{"start":{"line":94,"column":26},"end":{"line":94,"column":44}},{"start":{"line":94,"column":48},"end":{"line":94,"column":53}}]},"10":{"loc":{"start":{"line":96,"column":4},"end":{"line":98,"column":5}},"type":"if","locations":[{"start":{"line":96,"column":4},"end":{"line":98,"column":5}}]},"11":{"loc":{"start":{"line":96,"column":8},"end":{"line":96,"column":37}},"type":"binary-expr","locations":[{"start":{"line":96,"column":8},"end":{"line":96,"column":21}},{"start":{"line":96,"column":25},"end":{"line":96,"column":37}}]},"12":{"loc":{"start":{"line":100,"column":4},"end":{"line":102,"column":5}},"type":"if","locations":[{"start":{"line":100,"column":4},"end":{"line":102,"column":5}}]},"13":{"loc":{"start":{"line":100,"column":8},"end":{"line":100,"column":39}},"type":"binary-expr","locations":[{"start":{"line":100,"column":8},"end":{"line":100,"column":22}},{"start":{"line":100,"column":26},"end":{"line":100,"column":39}}]},"14":{"loc":{"start":{"line":105,"column":6},"end":{"line":107,"column":7}},"type":"if","locations":[{"start":{"line":105,"column":6},"end":{"line":107,"column":7}}]},"15":{"loc":{"start":{"line":111,"column":35},"end":{"line":111,"column":55}},"type":"binary-expr","locations":[{"start":{"line":111,"column":35},"end":{"line":111,"column":49}},{"start":{"line":111,"column":53},"end":{"line":111,"column":55}}]},"16":{"loc":{"start":{"line":116,"column":6},"end":{"line":118,"column":7}},"type":"if","locations":[{"start":{"line":116,"column":6},"end":{"line":118,"column":7}}]},"17":{"loc":{"start":{"line":129,"column":6},"end":{"line":153,"column":7}},"type":"if","locations":[{"start":{"line":129,"column":6},"end":{"line":153,"column":7}},{"start":{"line":131,"column":13},"end":{"line":153,"column":7}}]},"18":{"loc":{"start":{"line":136,"column":12},"end":{"line":145,"column":13}},"type":"if","locations":[{"start":{"line":136,"column":12},"end":{"line":145,"column":13}}]},"19":{"loc":{"start":{"line":136,"column":16},"end":{"line":136,"column":41}},"type":"binary-expr","locations":[{"start":{"line":136,"column":16},"end":{"line":136,"column":31}},{"start":{"line":136,"column":35},"end":{"line":136,"column":41}}]},"20":{"loc":{"start":{"line":138,"column":14},"end":{"line":144,"column":15}},"type":"if","locations":[{"start":{"line":138,"column":14},"end":{"line":144,"column":15}}]}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":1,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0,"47":0,"48":0,"49":0,"50":0,"51":0,"52":0,"53":0,"54":0,"55":0,"56":0,"57":0,"58":0,"59":0,"60":0,"61":0,"62":0,"63":0,"64":0,"65":0,"66":0,"67":0,"68":0,"69":0,"70":0,"71":0,"72":0,"73":0,"74":0,"75":0,"76":1,"77":1,"78":1,"79":1,"80":1},"f":{"0":0,"1":0,"2":0,"3":0,"4":0},"b":{"0":[0],"1":[0],"2":[0,0],"3":[0,0],"4":[0,0],"5":[0,0],"6":[0,0],"7":[0],"8":[0],"9":[0,0],"10":[0],"11":[0,0],"12":[0],"13":[0,0],"14":[0],"15":[0,0],"16":[0],"17":[0,0],"18":[0],"19":[0,0],"20":[0]}} -,"/home/joao/projects/cracked-dev-cli/src/constants/colors.ts": {"path":"/home/joao/projects/cracked-dev-cli/src/constants/colors.ts","statementMap":{"0":{"start":{"line":1,"column":13},"end":{"line":8,"column":2}}},"fnMap":{},"branchMap":{},"s":{"0":32},"f":{},"b":{}} -,"/home/joao/projects/cracked-dev-cli/src/constants/defaultInstructions.ts": {"path":"/home/joao/projects/cracked-dev-cli/src/constants/defaultInstructions.ts","statementMap":{"0":{"start":{"line":1,"column":13},"end":{"line":2,"column":106}}},"fnMap":{},"branchMap":{},"s":{"0":2},"f":{},"b":{}} -,"/home/joao/projects/cracked-dev-cli/src/constants/modelScaling.ts": {"path":"/home/joao/projects/cracked-dev-cli/src/constants/modelScaling.ts","statementMap":{"0":{"start":{"line":1,"column":13},"end":{"line":1,"column":49}}},"fnMap":{},"branchMap":{},"s":{"0":20},"f":{},"b":{}} -,"/home/joao/projects/cracked-dev-cli/src/constants/openRouterClient.ts": {"path":"/home/joao/projects/cracked-dev-cli/src/constants/openRouterClient.ts","statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":56}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":45}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":37}},"3":{"start":{"line":5,"column":38},"end":{"line":31,"column":1}},"4":{"start":{"line":6,"column":24},"end":{"line":6,"column":56}},"5":{"start":{"line":7,"column":17},"end":{"line":7,"column":42}},"6":{"start":{"line":9,"column":42},"end":{"line":12,"column":4}},"7":{"start":{"line":14,"column":2},"end":{"line":16,"column":3}},"8":{"start":{"line":15,"column":4},"end":{"line":15,"column":44}},"9":{"start":{"line":18,"column":2},"end":{"line":20,"column":3}},"10":{"start":{"line":19,"column":4},"end":{"line":19,"column":40}},"11":{"start":{"line":22,"column":2},"end":{"line":30,"column":5}},"12":{"start":{"line":5,"column":13},"end":{"line":5,"column":38}},"13":{"start":{"line":33,"column":13},"end":{"line":35,"column":2}}},"fnMap":{"0":{"name":"(anonymous_1)","decl":{"start":{"line":5,"column":38},"end":{"line":5,"column":39}},"loc":{"start":{"line":5,"column":73},"end":{"line":31,"column":1}}}},"branchMap":{"0":{"loc":{"start":{"line":14,"column":2},"end":{"line":16,"column":3}},"type":"if","locations":[{"start":{"line":14,"column":2},"end":{"line":16,"column":3}}]},"1":{"loc":{"start":{"line":18,"column":2},"end":{"line":20,"column":3}},"type":"if","locations":[{"start":{"line":18,"column":2},"end":{"line":20,"column":3}}]}},"s":{"0":26,"1":26,"2":26,"3":26,"4":26,"5":26,"6":26,"7":26,"8":26,"9":26,"10":26,"11":26,"12":26,"13":26},"f":{"0":26},"b":{"0":[26],"1":[26]}} -,"/home/joao/projects/cracked-dev-cli/src/constants/writeConstants.ts": {"path":"/home/joao/projects/cracked-dev-cli/src/constants/writeConstants.ts","statementMap":{"0":{"start":{"line":1,"column":13},"end":{"line":1,"column":59}}},"fnMap":{},"branchMap":{},"s":{"0":15},"f":{},"b":{}} -,"/home/joao/projects/cracked-dev-cli/src/jest/mocks/UnitTestMocker.ts": {"path":"/home/joao/projects/cracked-dev-cli/src/jest/mocks/UnitTestMocker.ts","statementMap":{"0":{"start":{"line":5,"column":10},"end":{"line":5,"column":68}},"1":{"start":{"line":6,"column":10},"end":{"line":6,"column":69}},"2":{"start":{"line":12,"column":16},"end":{"line":12,"column":61}},"3":{"start":{"line":14,"column":4},"end":{"line":16,"column":5}},"4":{"start":{"line":15,"column":6},"end":{"line":15,"column":38}},"5":{"start":{"line":17,"column":4},"end":{"line":17,"column":43}},"6":{"start":{"line":19,"column":4},"end":{"line":19,"column":15}},"7":{"start":{"line":27,"column":22},"end":{"line":27,"column":37}},"8":{"start":{"line":28,"column":23},"end":{"line":28,"column":73}},"9":{"start":{"line":29,"column":20},"end":{"line":29,"column":76}},"10":{"start":{"line":31,"column":16},"end":{"line":31,"column":55}},"11":{"start":{"line":32,"column":4},"end":{"line":38,"column":5}},"12":{"start":{"line":34,"column":6},"end":{"line":34,"column":41}},"13":{"start":{"line":37,"column":6},"end":{"line":37,"column":39}},"14":{"start":{"line":40,"column":4},"end":{"line":42,"column":5}},"15":{"start":{"line":41,"column":6},"end":{"line":41,"column":37}},"16":{"start":{"line":43,"column":4},"end":{"line":43,"column":42}},"17":{"start":{"line":45,"column":4},"end":{"line":45,"column":15}},"18":{"start":{"line":53,"column":22},"end":{"line":53,"column":37}},"19":{"start":{"line":54,"column":16},"end":{"line":56,"column":41}},"20":{"start":{"line":58,"column":4},"end":{"line":60,"column":5}},"21":{"start":{"line":59,"column":6},"end":{"line":59,"column":37}},"22":{"start":{"line":61,"column":4},"end":{"line":61,"column":42}},"23":{"start":{"line":63,"column":4},"end":{"line":63,"column":15}},"24":{"start":{"line":78,"column":16},"end":{"line":82,"column":41}},"25":{"start":{"line":84,"column":4},"end":{"line":86,"column":5}},"26":{"start":{"line":85,"column":6},"end":{"line":85,"column":39}},"27":{"start":{"line":87,"column":4},"end":{"line":87,"column":44}},"28":{"start":{"line":89,"column":4},"end":{"line":89,"column":15}},"29":{"start":{"line":104,"column":23},"end":{"line":104,"column":70}},"30":{"start":{"line":105,"column":20},"end":{"line":105,"column":76}},"31":{"start":{"line":107,"column":16},"end":{"line":110,"column":null}},"32":{"start":{"line":113,"column":4},"end":{"line":120,"column":5}},"33":{"start":{"line":116,"column":6},"end":{"line":116,"column":41}},"34":{"start":{"line":119,"column":6},"end":{"line":119,"column":39}},"35":{"start":{"line":122,"column":4},"end":{"line":124,"column":5}},"36":{"start":{"line":123,"column":6},"end":{"line":123,"column":39}},"37":{"start":{"line":126,"column":4},"end":{"line":126,"column":44}},"38":{"start":{"line":128,"column":4},"end":{"line":128,"column":15}},"39":{"start":{"line":133,"column":16},"end":{"line":133,"column":52}},"40":{"start":{"line":135,"column":4},"end":{"line":137,"column":5}},"41":{"start":{"line":136,"column":6},"end":{"line":136,"column":39}},"42":{"start":{"line":138,"column":4},"end":{"line":138,"column":44}},"43":{"start":{"line":140,"column":4},"end":{"line":140,"column":15}},"44":{"start":{"line":144,"column":4},"end":{"line":149,"column":7}},"45":{"start":{"line":145,"column":6},"end":{"line":148,"column":9}},"46":{"start":{"line":146,"column":8},"end":{"line":146,"column":26}},"47":{"start":{"line":147,"column":8},"end":{"line":147,"column":24}},"48":{"start":{"line":150,"column":4},"end":{"line":150,"column":28}},"49":{"start":{"line":152,"column":4},"end":{"line":157,"column":7}},"50":{"start":{"line":153,"column":6},"end":{"line":156,"column":9}},"51":{"start":{"line":154,"column":8},"end":{"line":154,"column":26}},"52":{"start":{"line":155,"column":8},"end":{"line":155,"column":24}},"53":{"start":{"line":4,"column":0},"end":{"line":4,"column":13}}},"fnMap":{"0":{"name":"(anonymous_0)","decl":{"start":{"line":4,"column":0},"end":{"line":4,"column":13}},"loc":{"start":{"line":4,"column":0},"end":{"line":159,"column":1}}},"1":{"name":"(anonymous_1)","decl":{"start":{"line":8,"column":2},"end":{"line":8,"column":14}},"loc":{"start":{"line":10,"column":19},"end":{"line":20,"column":3}}},"2":{"name":"(anonymous_2)","decl":{"start":{"line":22,"column":2},"end":{"line":22,"column":15}},"loc":{"start":{"line":25,"column":23},"end":{"line":46,"column":3}}},"3":{"name":"(anonymous_3)","decl":{"start":{"line":48,"column":2},"end":{"line":48,"column":19}},"loc":{"start":{"line":51,"column":21},"end":{"line":64,"column":3}}},"4":{"name":"(anonymous_4)","decl":{"start":{"line":73,"column":2},"end":{"line":73,"column":26}},"loc":{"start":{"line":76,"column":21},"end":{"line":90,"column":3}}},"5":{"name":"(anonymous_5)","decl":{"start":{"line":99,"column":2},"end":{"line":99,"column":12}},"loc":{"start":{"line":102,"column":23},"end":{"line":129,"column":3}}},"6":{"name":"(anonymous_6)","decl":{"start":{"line":131,"column":2},"end":{"line":131,"column":11}},"loc":{"start":{"line":131,"column":41},"end":{"line":141,"column":3}}},"7":{"name":"(anonymous_7)","decl":{"start":{"line":143,"column":2},"end":{"line":143,"column":15}},"loc":{"start":{"line":143,"column":15},"end":{"line":158,"column":3}}},"8":{"name":"(anonymous_8)","decl":{"start":{"line":144,"column":28},"end":{"line":144,"column":29}},"loc":{"start":{"line":144,"column":38},"end":{"line":149,"column":5}}},"9":{"name":"(anonymous_9)","decl":{"start":{"line":145,"column":20},"end":{"line":145,"column":21}},"loc":{"start":{"line":145,"column":28},"end":{"line":148,"column":7}}},"10":{"name":"(anonymous_10)","decl":{"start":{"line":152,"column":29},"end":{"line":152,"column":30}},"loc":{"start":{"line":152,"column":39},"end":{"line":157,"column":5}}},"11":{"name":"(anonymous_11)","decl":{"start":{"line":153,"column":20},"end":{"line":153,"column":21}},"loc":{"start":{"line":153,"column":28},"end":{"line":156,"column":7}}}},"branchMap":{"0":{"loc":{"start":{"line":14,"column":4},"end":{"line":16,"column":5}},"type":"if","locations":[{"start":{"line":14,"column":4},"end":{"line":16,"column":5}}]},"1":{"loc":{"start":{"line":32,"column":4},"end":{"line":38,"column":5}},"type":"if","locations":[{"start":{"line":32,"column":4},"end":{"line":38,"column":5}},{"start":{"line":35,"column":11},"end":{"line":38,"column":5}}]},"2":{"loc":{"start":{"line":32,"column":8},"end":{"line":32,"column":52}},"type":"binary-expr","locations":[{"start":{"line":32,"column":8},"end":{"line":32,"column":15}},{"start":{"line":32,"column":19},"end":{"line":32,"column":52}}]},"3":{"loc":{"start":{"line":40,"column":4},"end":{"line":42,"column":5}},"type":"if","locations":[{"start":{"line":40,"column":4},"end":{"line":42,"column":5}}]},"4":{"loc":{"start":{"line":58,"column":4},"end":{"line":60,"column":5}},"type":"if","locations":[{"start":{"line":58,"column":4},"end":{"line":60,"column":5}}]},"5":{"loc":{"start":{"line":84,"column":4},"end":{"line":86,"column":5}},"type":"if","locations":[{"start":{"line":84,"column":4},"end":{"line":86,"column":5}}]},"6":{"loc":{"start":{"line":113,"column":4},"end":{"line":120,"column":5}},"type":"if","locations":[{"start":{"line":113,"column":4},"end":{"line":120,"column":5}},{"start":{"line":117,"column":11},"end":{"line":120,"column":5}}]},"7":{"loc":{"start":{"line":113,"column":8},"end":{"line":113,"column":52}},"type":"binary-expr","locations":[{"start":{"line":113,"column":8},"end":{"line":113,"column":15}},{"start":{"line":113,"column":19},"end":{"line":113,"column":52}}]},"8":{"loc":{"start":{"line":122,"column":4},"end":{"line":124,"column":5}},"type":"if","locations":[{"start":{"line":122,"column":4},"end":{"line":124,"column":5}}]},"9":{"loc":{"start":{"line":135,"column":4},"end":{"line":137,"column":5}},"type":"if","locations":[{"start":{"line":135,"column":4},"end":{"line":137,"column":5}}]}},"s":{"0":257,"1":257,"2":276,"3":276,"4":118,"5":276,"6":276,"7":568,"8":568,"9":568,"10":568,"11":568,"12":7,"13":561,"14":568,"15":295,"16":568,"17":568,"18":610,"19":610,"20":610,"21":242,"22":610,"23":610,"24":11,"25":11,"26":4,"27":11,"28":11,"29":114,"30":114,"31":114,"32":114,"33":2,"34":112,"35":114,"36":20,"37":114,"38":114,"39":39,"40":39,"41":5,"42":39,"43":39,"44":304,"45":537,"46":1178,"47":1178,"48":304,"49":304,"50":306,"51":1912,"52":1912,"53":24},"f":{"0":257,"1":276,"2":568,"3":610,"4":11,"5":114,"6":39,"7":304,"8":537,"9":1178,"10":306,"11":1912},"b":{"0":[118],"1":[7,561],"2":[568,10],"3":[295],"4":[242],"5":[4],"6":[2,112],"7":[114,4],"8":[20],"9":[5]}} -,"/home/joao/projects/cracked-dev-cli/src/services/ConfigService.ts": {"path":"/home/joao/projects/cracked-dev-cli/src/services/ConfigService.ts","statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":26}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":25}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":29}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":42}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":24}},"5":{"start":{"line":7,"column":21},"end":{"line":58,"column":2}},"6":{"start":{"line":63,"column":7},"end":{"line":186,"column":null}},"7":{"start":{"line":64,"column":19},"end":{"line":64,"column":61}},"8":{"start":{"line":65,"column":19},"end":{"line":65,"column":63}},"9":{"start":{"line":68,"column":29},"end":{"line":70,"column":10}},"10":{"start":{"line":72,"column":4},"end":{"line":79,"column":5}},"11":{"start":{"line":74,"column":8},"end":{"line":76,"column":48}},"12":{"start":{"line":78,"column":6},"end":{"line":78,"column":60}},"13":{"start":{"line":83,"column":4},"end":{"line":163,"column":5}},"14":{"start":{"line":84,"column":6},"end":{"line":84,"column":67}},"15":{"start":{"line":86,"column":28},"end":{"line":144,"column":8}},"16":{"start":{"line":145,"column":6},"end":{"line":148,"column":8}},"17":{"start":{"line":149,"column":6},"end":{"line":151,"column":8}},"18":{"start":{"line":152,"column":6},"end":{"line":156,"column":8}},"19":{"start":{"line":158,"column":6},"end":{"line":158,"column":29}},"20":{"start":{"line":160,"column":6},"end":{"line":162,"column":8}},"21":{"start":{"line":167,"column":4},"end":{"line":169,"column":5}},"22":{"start":{"line":168,"column":6},"end":{"line":168,"column":33}},"23":{"start":{"line":171,"column":20},"end":{"line":171,"column":62}},"24":{"start":{"line":172,"column":19},"end":{"line":172,"column":38}},"25":{"start":{"line":174,"column":25},"end":{"line":174,"column":55}},"26":{"start":{"line":176,"column":4},"end":{"line":182,"column":5}},"27":{"start":{"line":177,"column":6},"end":{"line":180,"column":8}},"28":{"start":{"line":181,"column":6},"end":{"line":181,"column":62}},"29":{"start":{"line":184,"column":4},"end":{"line":184,"column":29}},"30":{"start":{"line":63,"column":13},"end":{"line":63,"column":26}},"31":{"start":{"line":63,"column":13},"end":{"line":186,"column":null}}},"fnMap":{"0":{"name":"(anonymous_8)","decl":{"start":{"line":63,"column":7},"end":{"line":63,"column":13}},"loc":{"start":{"line":63,"column":7},"end":{"line":186,"column":1}}},"1":{"name":"(anonymous_9)","decl":{"start":{"line":67,"column":10},"end":{"line":67,"column":25}},"loc":{"start":{"line":67,"column":25},"end":{"line":80,"column":3}}},"2":{"name":"(anonymous_10)","decl":{"start":{"line":82,"column":9},"end":{"line":82,"column":28}},"loc":{"start":{"line":82,"column":28},"end":{"line":164,"column":3}}},"3":{"name":"(anonymous_11)","decl":{"start":{"line":166,"column":9},"end":{"line":166,"column":18}},"loc":{"start":{"line":166,"column":18},"end":{"line":185,"column":3}}}},"branchMap":{"0":{"loc":{"start":{"line":68,"column":29},"end":{"line":70,"column":10}},"type":"cond-expr","locations":[{"start":{"line":69,"column":8},"end":{"line":69,"column":53}},{"start":{"line":70,"column":8},"end":{"line":70,"column":10}}]},"1":{"loc":{"start":{"line":72,"column":4},"end":{"line":79,"column":5}},"type":"if","locations":[{"start":{"line":72,"column":4},"end":{"line":79,"column":5}}]},"2":{"loc":{"start":{"line":74,"column":8},"end":{"line":76,"column":48}},"type":"cond-expr","locations":[{"start":{"line":75,"column":12},"end":{"line":75,"column":46}},{"start":{"line":76,"column":12},"end":{"line":76,"column":48}}]},"3":{"loc":{"start":{"line":74,"column":8},"end":{"line":74,"column":66}},"type":"binary-expr","locations":[{"start":{"line":74,"column":8},"end":{"line":74,"column":39}},{"start":{"line":74,"column":43},"end":{"line":74,"column":66}}]},"4":{"loc":{"start":{"line":83,"column":4},"end":{"line":163,"column":5}},"type":"if","locations":[{"start":{"line":83,"column":4},"end":{"line":163,"column":5}}]},"5":{"loc":{"start":{"line":167,"column":4},"end":{"line":169,"column":5}},"type":"if","locations":[{"start":{"line":167,"column":4},"end":{"line":169,"column":5}}]},"6":{"loc":{"start":{"line":176,"column":4},"end":{"line":182,"column":5}},"type":"if","locations":[{"start":{"line":176,"column":4},"end":{"line":182,"column":5}}]}},"s":{"0":30,"1":30,"2":30,"3":30,"4":30,"5":30,"6":30,"7":531,"8":531,"9":2,"10":2,"11":2,"12":2,"13":3,"14":2,"15":2,"16":2,"17":2,"18":2,"19":2,"20":2,"21":270,"22":1,"23":270,"24":270,"25":270,"26":270,"27":2,"28":2,"29":268,"30":30,"31":30},"f":{"0":531,"1":2,"2":3,"3":270},"b":{"0":[0,2],"1":[2],"2":[2,0],"3":[2,2],"4":[2],"5":[1],"6":[2]}} -,"/home/joao/projects/cracked-dev-cli/src/services/CrackedAgent.ts": {"path":"/home/joao/projects/cracked-dev-cli/src/services/CrackedAgent.ts","statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":70}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":65}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":68}},"3":{"start":{"line":5,"column":0},"end":{"line":5,"column":68}},"4":{"start":{"line":6,"column":0},"end":{"line":6,"column":73}},"5":{"start":{"line":7,"column":0},"end":{"line":7,"column":60}},"6":{"start":{"line":8,"column":0},"end":{"line":8,"column":66}},"7":{"start":{"line":9,"column":0},"end":{"line":9,"column":53}},"8":{"start":{"line":10,"column":0},"end":{"line":10,"column":50}},"9":{"start":{"line":11,"column":0},"end":{"line":11,"column":50}},"10":{"start":{"line":32,"column":7},"end":{"line":283,"column":null}},"11":{"start":{"line":38,"column":12},"end":{"line":38,"column":24}},"12":{"start":{"line":39,"column":12},"end":{"line":39,"column":28}},"13":{"start":{"line":40,"column":12},"end":{"line":40,"column":25}},"14":{"start":{"line":41,"column":12},"end":{"line":41,"column":27}},"15":{"start":{"line":42,"column":12},"end":{"line":42,"column":27}},"16":{"start":{"line":43,"column":12},"end":{"line":43,"column":26}},"17":{"start":{"line":44,"column":12},"end":{"line":44,"column":26}},"18":{"start":{"line":34,"column":10},"end":{"line":34,"column":45}},"19":{"start":{"line":35,"column":10},"end":{"line":35,"column":36}},"20":{"start":{"line":51,"column":4},"end":{"line":51,"column":47}},"21":{"start":{"line":53,"column":25},"end":{"line":53,"column":59}},"22":{"start":{"line":54,"column":4},"end":{"line":54,"column":60}},"23":{"start":{"line":56,"column":29},"end":{"line":59,"column":null}},"24":{"start":{"line":63,"column":4},"end":{"line":65,"column":5}},"25":{"start":{"line":64,"column":6},"end":{"line":64,"column":38}},"26":{"start":{"line":67,"column":4},"end":{"line":70,"column":7}},"27":{"start":{"line":72,"column":4},"end":{"line":79,"column":5}},"28":{"start":{"line":73,"column":6},"end":{"line":78,"column":8}},"29":{"start":{"line":81,"column":19},"end":{"line":85,"column":null}},"30":{"start":{"line":88,"column":4},"end":{"line":88,"column":18}},"31":{"start":{"line":92,"column":25},"end":{"line":101,"column":6}},"32":{"start":{"line":103,"column":4},"end":{"line":103,"column":50}},"33":{"start":{"line":104,"column":4},"end":{"line":104,"column":62}},"34":{"start":{"line":105,"column":4},"end":{"line":105,"column":31}},"35":{"start":{"line":106,"column":4},"end":{"line":106,"column":31}},"36":{"start":{"line":108,"column":4},"end":{"line":110,"column":5}},"37":{"start":{"line":109,"column":6},"end":{"line":109,"column":38}},"38":{"start":{"line":112,"column":4},"end":{"line":112,"column":66}},"39":{"start":{"line":113,"column":4},"end":{"line":113,"column":47}},"40":{"start":{"line":115,"column":4},"end":{"line":115,"column":24}},"41":{"start":{"line":119,"column":25},"end":{"line":119,"column":60}},"42":{"start":{"line":120,"column":4},"end":{"line":125,"column":5}},"43":{"start":{"line":121,"column":30},"end":{"line":121,"column":65}},"44":{"start":{"line":122,"column":6},"end":{"line":124,"column":8}},"45":{"start":{"line":129,"column":4},"end":{"line":129,"column":41}},"46":{"start":{"line":129,"column":34},"end":{"line":129,"column":41}},"47":{"start":{"line":131,"column":23},"end":{"line":131,"column":43}},"48":{"start":{"line":132,"column":4},"end":{"line":136,"column":5}},"49":{"start":{"line":133,"column":6},"end":{"line":135,"column":8}},"50":{"start":{"line":138,"column":4},"end":{"line":143,"column":5}},"51":{"start":{"line":139,"column":6},"end":{"line":141,"column":9}},"52":{"start":{"line":142,"column":6},"end":{"line":142,"column":51}},"53":{"start":{"line":145,"column":4},"end":{"line":147,"column":5}},"54":{"start":{"line":146,"column":6},"end":{"line":146,"column":59}},"55":{"start":{"line":156,"column":19},"end":{"line":156,"column":21}},"56":{"start":{"line":157,"column":4},"end":{"line":166,"column":6}},"57":{"start":{"line":161,"column":8},"end":{"line":161,"column":26}},"58":{"start":{"line":162,"column":8},"end":{"line":162,"column":49}},"59":{"start":{"line":163,"column":8},"end":{"line":163,"column":36}},"60":{"start":{"line":167,"column":4},"end":{"line":167,"column":31}},"61":{"start":{"line":169,"column":4},"end":{"line":169,"column":43}},"62":{"start":{"line":169,"column":19},"end":{"line":169,"column":43}},"63":{"start":{"line":172,"column":6},"end":{"line":176,"column":null}},"64":{"start":{"line":179,"column":4},"end":{"line":182,"column":6}},"65":{"start":{"line":191,"column":21},"end":{"line":191,"column":72}},"66":{"start":{"line":193,"column":4},"end":{"line":196,"column":7}},"67":{"start":{"line":198,"column":4},"end":{"line":198,"column":43}},"68":{"start":{"line":198,"column":19},"end":{"line":198,"column":43}},"69":{"start":{"line":201,"column":6},"end":{"line":201,"column":78}},"70":{"start":{"line":203,"column":4},"end":{"line":206,"column":6}},"71":{"start":{"line":218,"column":4},"end":{"line":218,"column":31}},"72":{"start":{"line":219,"column":19},"end":{"line":266,"column":null}},"73":{"start":{"line":223,"column":34},"end":{"line":226,"column":null}},"74":{"start":{"line":229,"column":8},"end":{"line":265,"column":9}},"75":{"start":{"line":230,"column":33},"end":{"line":230,"column":35}},"76":{"start":{"line":231,"column":10},"end":{"line":239,"column":12}},"77":{"start":{"line":235,"column":14},"end":{"line":235,"column":40}},"78":{"start":{"line":236,"column":14},"end":{"line":236,"column":42}},"79":{"start":{"line":240,"column":10},"end":{"line":240,"column":37}},"80":{"start":{"line":242,"column":33},"end":{"line":246,"column":null}},"81":{"start":{"line":249,"column":10},"end":{"line":249,"column":69}},"82":{"start":{"line":251,"column":35},"end":{"line":254,"column":null}},"83":{"start":{"line":257,"column":33},"end":{"line":261,"column":null}},"84":{"start":{"line":264,"column":10},"end":{"line":264,"column":69}},"85":{"start":{"line":269,"column":4},"end":{"line":272,"column":6}},"86":{"start":{"line":276,"column":4},"end":{"line":276,"column":45}},"87":{"start":{"line":280,"column":4},"end":{"line":280,"column":40}},"88":{"start":{"line":281,"column":4},"end":{"line":281,"column":35}},"89":{"start":{"line":32,"column":13},"end":{"line":32,"column":25}},"90":{"start":{"line":32,"column":13},"end":{"line":283,"column":null}}},"fnMap":{"0":{"name":"(anonymous_2)","decl":{"start":{"line":37,"column":2},"end":{"line":37,"column":null}},"loc":{"start":{"line":44,"column":38},"end":{"line":45,"column":6}}},"1":{"name":"(anonymous_3)","decl":{"start":{"line":47,"column":2},"end":{"line":47,"column":7}},"loc":{"start":{"line":49,"column":32},"end":{"line":89,"column":3}}},"2":{"name":"(anonymous_4)","decl":{"start":{"line":91,"column":10},"end":{"line":91,"column":15}},"loc":{"start":{"line":91,"column":59},"end":{"line":116,"column":3}}},"3":{"name":"(anonymous_5)","decl":{"start":{"line":118,"column":10},"end":{"line":118,"column":15}},"loc":{"start":{"line":118,"column":43},"end":{"line":126,"column":3}}},"4":{"name":"(anonymous_6)","decl":{"start":{"line":128,"column":10},"end":{"line":128,"column":15}},"loc":{"start":{"line":128,"column":62},"end":{"line":148,"column":3}}},"5":{"name":"(anonymous_7)","decl":{"start":{"line":150,"column":10},"end":{"line":150,"column":15}},"loc":{"start":{"line":154,"column":20},"end":{"line":183,"column":3}}},"6":{"name":"(anonymous_8)","decl":{"start":{"line":160,"column":6},"end":{"line":160,"column":11}},"loc":{"start":{"line":160,"column":30},"end":{"line":164,"column":7}}},"7":{"name":"(anonymous_9)","decl":{"start":{"line":185,"column":10},"end":{"line":185,"column":15}},"loc":{"start":{"line":189,"column":20},"end":{"line":207,"column":3}}},"8":{"name":"(anonymous_10)","decl":{"start":{"line":209,"column":10},"end":{"line":209,"column":15}},"loc":{"start":{"line":213,"column":20},"end":{"line":273,"column":3}}},"9":{"name":"(anonymous_11)","decl":{"start":{"line":222,"column":6},"end":{"line":222,"column":11}},"loc":{"start":{"line":222,"column":36},"end":{"line":266,"column":7}}},"10":{"name":"(anonymous_12)","decl":{"start":{"line":234,"column":12},"end":{"line":234,"column":17}},"loc":{"start":{"line":234,"column":36},"end":{"line":237,"column":13}}},"11":{"name":"(anonymous_13)","decl":{"start":{"line":275,"column":2},"end":{"line":275,"column":24}},"loc":{"start":{"line":275,"column":24},"end":{"line":277,"column":3}}},"12":{"name":"(anonymous_14)","decl":{"start":{"line":279,"column":2},"end":{"line":279,"column":26}},"loc":{"start":{"line":279,"column":26},"end":{"line":282,"column":3}}}},"branchMap":{"0":{"loc":{"start":{"line":63,"column":4},"end":{"line":65,"column":5}},"type":"if","locations":[{"start":{"line":63,"column":4},"end":{"line":65,"column":5}}]},"1":{"loc":{"start":{"line":72,"column":4},"end":{"line":79,"column":5}},"type":"if","locations":[{"start":{"line":72,"column":4},"end":{"line":79,"column":5}}]},"2":{"loc":{"start":{"line":108,"column":4},"end":{"line":110,"column":5}},"type":"if","locations":[{"start":{"line":108,"column":4},"end":{"line":110,"column":5}}]},"3":{"loc":{"start":{"line":120,"column":4},"end":{"line":125,"column":5}},"type":"if","locations":[{"start":{"line":120,"column":4},"end":{"line":125,"column":5}}]},"4":{"loc":{"start":{"line":129,"column":4},"end":{"line":129,"column":41}},"type":"if","locations":[{"start":{"line":129,"column":4},"end":{"line":129,"column":41}}]},"5":{"loc":{"start":{"line":132,"column":4},"end":{"line":136,"column":5}},"type":"if","locations":[{"start":{"line":132,"column":4},"end":{"line":136,"column":5}}]},"6":{"loc":{"start":{"line":138,"column":4},"end":{"line":143,"column":5}},"type":"if","locations":[{"start":{"line":138,"column":4},"end":{"line":143,"column":5}}]},"7":{"loc":{"start":{"line":145,"column":4},"end":{"line":147,"column":5}},"type":"if","locations":[{"start":{"line":145,"column":4},"end":{"line":147,"column":5}}]},"8":{"loc":{"start":{"line":169,"column":4},"end":{"line":169,"column":43}},"type":"if","locations":[{"start":{"line":169,"column":4},"end":{"line":169,"column":43}}]},"9":{"loc":{"start":{"line":171,"column":12},"end":{"line":171,"column":24}},"type":"default-arg","locations":[{"start":{"line":171,"column":22},"end":{"line":171,"column":24}}]},"10":{"loc":{"start":{"line":180,"column":16},"end":{"line":180,"column":44}},"type":"binary-expr","locations":[{"start":{"line":180,"column":16},"end":{"line":180,"column":32}},{"start":{"line":180,"column":36},"end":{"line":180,"column":44}}]},"11":{"loc":{"start":{"line":198,"column":4},"end":{"line":198,"column":43}},"type":"if","locations":[{"start":{"line":198,"column":4},"end":{"line":198,"column":43}}]},"12":{"loc":{"start":{"line":200,"column":12},"end":{"line":200,"column":24}},"type":"default-arg","locations":[{"start":{"line":200,"column":22},"end":{"line":200,"column":24}}]},"13":{"loc":{"start":{"line":204,"column":16},"end":{"line":204,"column":44}},"type":"binary-expr","locations":[{"start":{"line":204,"column":16},"end":{"line":204,"column":32}},{"start":{"line":204,"column":36},"end":{"line":204,"column":44}}]},"14":{"loc":{"start":{"line":229,"column":8},"end":{"line":265,"column":9}},"type":"if","locations":[{"start":{"line":229,"column":8},"end":{"line":265,"column":9}},{"start":{"line":250,"column":15},"end":{"line":265,"column":9}}]},"15":{"loc":{"start":{"line":249,"column":17},"end":{"line":249,"column":68}},"type":"binary-expr","locations":[{"start":{"line":249,"column":17},"end":{"line":249,"column":48}},{"start":{"line":249,"column":52},"end":{"line":249,"column":68}}]},"16":{"loc":{"start":{"line":264,"column":17},"end":{"line":264,"column":68}},"type":"binary-expr","locations":[{"start":{"line":264,"column":17},"end":{"line":264,"column":48}},{"start":{"line":264,"column":52},"end":{"line":264,"column":68}}]},"17":{"loc":{"start":{"line":270,"column":15},"end":{"line":270,"column":36}},"type":"binary-expr","locations":[{"start":{"line":270,"column":15},"end":{"line":270,"column":30}},{"start":{"line":270,"column":34},"end":{"line":270,"column":36}}]}},"s":{"0":2,"1":2,"2":2,"3":2,"4":2,"5":2,"6":2,"7":2,"8":2,"9":2,"10":2,"11":21,"12":21,"13":21,"14":21,"15":21,"16":21,"17":21,"18":21,"19":21,"20":18,"21":18,"22":18,"23":18,"24":18,"25":18,"26":18,"27":18,"28":1,"29":17,"30":17,"31":18,"32":18,"33":18,"34":18,"35":18,"36":18,"37":1,"38":18,"39":18,"40":18,"41":18,"42":18,"43":0,"44":0,"45":18,"46":0,"47":18,"48":18,"49":1,"50":18,"51":2,"52":2,"53":18,"54":16,"55":1,"56":1,"57":1,"58":1,"59":1,"60":1,"61":1,"62":0,"63":1,"64":1,"65":17,"66":17,"67":17,"68":0,"69":17,"70":17,"71":18,"72":18,"73":0,"74":0,"75":0,"76":0,"77":0,"78":0,"79":0,"80":0,"81":0,"82":0,"83":0,"84":0,"85":18,"86":1,"87":2,"88":2,"89":2,"90":2},"f":{"0":21,"1":18,"2":18,"3":18,"4":18,"5":1,"6":1,"7":17,"8":18,"9":0,"10":0,"11":1,"12":2},"b":{"0":[18],"1":[1],"2":[1],"3":[0],"4":[0],"5":[1],"6":[2],"7":[16],"8":[0],"9":[0],"10":[1,1],"11":[0],"12":[0],"13":[17,17],"14":[0,0],"15":[0,0],"16":[0,0],"17":[18,0]}} -,"/home/joao/projects/cracked-dev-cli/src/services/FileManagement/DirectoryScanner.ts": {"path":"/home/joao/projects/cracked-dev-cli/src/services/FileManagement/DirectoryScanner.ts","statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":56}},"1":{"start":{"line":7,"column":0},"end":{"line":7,"column":20}},"2":{"start":{"line":8,"column":0},"end":{"line":8,"column":24}},"3":{"start":{"line":9,"column":0},"end":{"line":9,"column":50}},"4":{"start":{"line":12,"column":7},"end":{"line":102,"column":null}},"5":{"start":{"line":15,"column":45},"end":{"line":15,"column":60}},"6":{"start":{"line":13,"column":19},"end":{"line":13,"column":62}},"7":{"start":{"line":16,"column":4},"end":{"line":18,"column":5}},"8":{"start":{"line":17,"column":6},"end":{"line":17,"column":72}},"9":{"start":{"line":22,"column":19},"end":{"line":22,"column":49}},"10":{"start":{"line":23,"column":4},"end":{"line":31,"column":6}},"11":{"start":{"line":42,"column":4},"end":{"line":42,"column":53}},"12":{"start":{"line":42,"column":33},"end":{"line":42,"column":53}},"13":{"start":{"line":44,"column":18},"end":{"line":44,"column":41}},"14":{"start":{"line":46,"column":4},"end":{"line":64,"column":7}},"15":{"start":{"line":47,"column":6},"end":{"line":47,"column":40}},"16":{"start":{"line":47,"column":33},"end":{"line":47,"column":40}},"17":{"start":{"line":49,"column":23},"end":{"line":49,"column":47}},"18":{"start":{"line":50,"column":27},"end":{"line":50,"column":60}},"19":{"start":{"line":52,"column":6},"end":{"line":63,"column":7}},"20":{"start":{"line":53,"column":8},"end":{"line":60,"column":10}},"21":{"start":{"line":62,"column":8},"end":{"line":62,"column":40}},"22":{"start":{"line":66,"column":4},"end":{"line":66,"column":24}},"23":{"start":{"line":73,"column":4},"end":{"line":100,"column":5}},"24":{"start":{"line":74,"column":29},"end":{"line":74,"column":48}},"25":{"start":{"line":75,"column":26},"end":{"line":75,"column":59}},"26":{"start":{"line":76,"column":21},"end":{"line":79,"column":8}},"27":{"start":{"line":80,"column":27},"end":{"line":80,"column":48}},"28":{"start":{"line":82,"column":20},"end":{"line":89,"column":14}},"29":{"start":{"line":91,"column":6},"end":{"line":94,"column":8}},"30":{"start":{"line":93,"column":31},"end":{"line":93,"column":39}},"31":{"start":{"line":96,"column":6},"end":{"line":99,"column":8}},"32":{"start":{"line":12,"column":13},"end":{"line":12,"column":29}},"33":{"start":{"line":12,"column":13},"end":{"line":102,"column":null}}},"fnMap":{"0":{"name":"(anonymous_5)","decl":{"start":{"line":15,"column":2},"end":{"line":15,"column":15}},"loc":{"start":{"line":15,"column":73},"end":{"line":19,"column":3}}},"1":{"name":"(anonymous_6)","decl":{"start":{"line":21,"column":2},"end":{"line":21,"column":14}},"loc":{"start":{"line":21,"column":28},"end":{"line":32,"column":3}}},"2":{"name":"(anonymous_7)","decl":{"start":{"line":34,"column":10},"end":{"line":34,"column":21}},"loc":{"start":{"line":40,"column":24},"end":{"line":67,"column":3}}},"3":{"name":"(anonymous_8)","decl":{"start":{"line":46,"column":18},"end":{"line":46,"column":19}},"loc":{"start":{"line":46,"column":27},"end":{"line":64,"column":5}}},"4":{"name":"(anonymous_9)","decl":{"start":{"line":69,"column":9},"end":{"line":69,"column":14}},"loc":{"start":{"line":71,"column":38},"end":{"line":101,"column":3}}},"5":{"name":"(anonymous_10)","decl":{"start":{"line":93,"column":24},"end":{"line":93,"column":25}},"loc":{"start":{"line":93,"column":31},"end":{"line":93,"column":39}}}},"branchMap":{"0":{"loc":{"start":{"line":16,"column":4},"end":{"line":18,"column":5}},"type":"if","locations":[{"start":{"line":16,"column":4},"end":{"line":18,"column":5}}]},"1":{"loc":{"start":{"line":37,"column":4},"end":{"line":37,"column":31}},"type":"default-arg","locations":[{"start":{"line":37,"column":29},"end":{"line":37,"column":31}}]},"2":{"loc":{"start":{"line":38,"column":4},"end":{"line":38,"column":25}},"type":"default-arg","locations":[{"start":{"line":38,"column":23},"end":{"line":38,"column":25}}]},"3":{"loc":{"start":{"line":39,"column":4},"end":{"line":39,"column":28}},"type":"default-arg","locations":[{"start":{"line":39,"column":27},"end":{"line":39,"column":28}}]},"4":{"loc":{"start":{"line":40,"column":4},"end":{"line":40,"column":24}},"type":"default-arg","locations":[{"start":{"line":40,"column":23},"end":{"line":40,"column":24}}]},"5":{"loc":{"start":{"line":42,"column":4},"end":{"line":42,"column":53}},"type":"if","locations":[{"start":{"line":42,"column":4},"end":{"line":42,"column":53}}]},"6":{"loc":{"start":{"line":47,"column":6},"end":{"line":47,"column":40}},"type":"if","locations":[{"start":{"line":47,"column":6},"end":{"line":47,"column":40}}]},"7":{"loc":{"start":{"line":52,"column":6},"end":{"line":63,"column":7}},"type":"if","locations":[{"start":{"line":52,"column":6},"end":{"line":63,"column":7}},{"start":{"line":61,"column":13},"end":{"line":63,"column":7}}]},"8":{"loc":{"start":{"line":71,"column":4},"end":{"line":71,"column":38}},"type":"default-arg","locations":[{"start":{"line":71,"column":36},"end":{"line":71,"column":38}}]},"9":{"loc":{"start":{"line":78,"column":12},"end":{"line":78,"column":51}},"type":"binary-expr","locations":[{"start":{"line":78,"column":12},"end":{"line":78,"column":26}},{"start":{"line":78,"column":30},"end":{"line":78,"column":51}}]},"10":{"loc":{"start":{"line":98,"column":15},"end":{"line":98,"column":72}},"type":"cond-expr","locations":[{"start":{"line":98,"column":40},"end":{"line":98,"column":45}},{"start":{"line":98,"column":48},"end":{"line":98,"column":72}}]}},"s":{"0":6,"1":6,"2":6,"3":6,"4":6,"5":100,"6":100,"7":100,"8":0,"9":2,"10":2,"11":191,"12":0,"13":191,"14":191,"15":796,"16":7,"17":789,"18":789,"19":789,"20":189,"21":600,"22":191,"23":2,"24":2,"25":2,"26":2,"27":2,"28":2,"29":2,"30":600,"31":0,"32":6,"33":6},"f":{"0":100,"1":2,"2":191,"3":796,"4":2,"5":600},"b":{"0":[0],"1":[0],"2":[0],"3":[0],"4":[0],"5":[0],"6":[7],"7":[189,600],"8":[1],"9":[2,1],"10":[0,0]}} -,"/home/joao/projects/cracked-dev-cli/src/services/FileManagement/Errors.ts": {"path":"/home/joao/projects/cracked-dev-cli/src/services/FileManagement/Errors.ts","statementMap":{"0":{"start":{"line":3,"column":8},"end":{"line":3,"column":41}},"1":{"start":{"line":4,"column":8},"end":{"line":4,"column":40}},"2":{"start":{"line":1,"column":0},"end":{"line":1,"column":13}},"3":{"start":{"line":10,"column":8},"end":{"line":10,"column":59}},"4":{"start":{"line":11,"column":8},"end":{"line":11,"column":36}},"5":{"start":{"line":8,"column":4},"end":{"line":8,"column":17}},"6":{"start":{"line":17,"column":8},"end":{"line":17,"column":59}},"7":{"start":{"line":18,"column":8},"end":{"line":18,"column":39}},"8":{"start":{"line":15,"column":4},"end":{"line":15,"column":17}}},"fnMap":{"0":{"name":"(anonymous_0)","decl":{"start":{"line":2,"column":6},"end":{"line":2,"column":18}},"loc":{"start":{"line":2,"column":30},"end":{"line":5,"column":7}}},"1":{"name":"(anonymous_1)","decl":{"start":{"line":9,"column":6},"end":{"line":9,"column":18}},"loc":{"start":{"line":9,"column":47},"end":{"line":12,"column":7}}},"2":{"name":"(anonymous_2)","decl":{"start":{"line":16,"column":6},"end":{"line":16,"column":18}},"loc":{"start":{"line":16,"column":30},"end":{"line":19,"column":7}}}},"branchMap":{},"s":{"0":0,"1":0,"2":3,"3":0,"4":0,"5":3,"6":0,"7":0,"8":3},"f":{"0":0,"1":0,"2":0},"b":{}} -,"/home/joao/projects/cracked-dev-cli/src/services/FileManagement/FileOperations.ts": {"path":"/home/joao/projects/cracked-dev-cli/src/services/FileManagement/FileOperations.ts","statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":65}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":69}},"2":{"start":{"line":8,"column":0},"end":{"line":8,"column":60}},"3":{"start":{"line":9,"column":0},"end":{"line":9,"column":26}},"4":{"start":{"line":10,"column":0},"end":{"line":10,"column":24}},"5":{"start":{"line":11,"column":0},"end":{"line":11,"column":42}},"6":{"start":{"line":14,"column":7},"end":{"line":242,"column":null}},"7":{"start":{"line":16,"column":12},"end":{"line":16,"column":26}},"8":{"start":{"line":17,"column":12},"end":{"line":17,"column":24}},"9":{"start":{"line":18,"column":12},"end":{"line":18,"column":25}},"10":{"start":{"line":22,"column":22},"end":{"line":22,"column":32}},"11":{"start":{"line":25,"column":4},"end":{"line":38,"column":5}},"12":{"start":{"line":26,"column":6},"end":{"line":37,"column":9}},"13":{"start":{"line":27,"column":26},"end":{"line":35,"column":9}},"14":{"start":{"line":28,"column":10},"end":{"line":34,"column":11}},"15":{"start":{"line":29,"column":12},"end":{"line":29,"column":22}},"16":{"start":{"line":30,"column":17},"end":{"line":34,"column":11}},"17":{"start":{"line":31,"column":12},"end":{"line":31,"column":71}},"18":{"start":{"line":33,"column":12},"end":{"line":33,"column":38}},"19":{"start":{"line":36,"column":8},"end":{"line":36,"column":20}},"20":{"start":{"line":41,"column":18},"end":{"line":41,"column":60}},"21":{"start":{"line":42,"column":4},"end":{"line":44,"column":5}},"22":{"start":{"line":43,"column":6},"end":{"line":43,"column":18}},"23":{"start":{"line":48,"column":4},"end":{"line":48,"column":35}},"24":{"start":{"line":49,"column":25},"end":{"line":49,"column":69}},"25":{"start":{"line":50,"column":4},"end":{"line":50,"column":36}},"26":{"start":{"line":54,"column":4},"end":{"line":54,"column":35}},"27":{"start":{"line":57,"column":4},"end":{"line":59,"column":5}},"28":{"start":{"line":58,"column":6},"end":{"line":58,"column":22}},"29":{"start":{"line":62,"column":25},"end":{"line":64,"column":null}},"30":{"start":{"line":66,"column":4},"end":{"line":73,"column":5}},"31":{"start":{"line":67,"column":24},"end":{"line":67,"column":39}},"32":{"start":{"line":68,"column":6},"end":{"line":71,"column":8}},"33":{"start":{"line":72,"column":6},"end":{"line":72,"column":23}},"34":{"start":{"line":76,"column":25},"end":{"line":76,"column":69}},"35":{"start":{"line":77,"column":4},"end":{"line":83,"column":5}},"36":{"start":{"line":78,"column":6},"end":{"line":81,"column":8}},"37":{"start":{"line":82,"column":6},"end":{"line":82,"column":26}},"38":{"start":{"line":85,"column":4},"end":{"line":85,"column":20}},"39":{"start":{"line":89,"column":4},"end":{"line":101,"column":5}},"40":{"start":{"line":90,"column":27},"end":{"line":90,"column":58}},"41":{"start":{"line":91,"column":6},"end":{"line":96,"column":7}},"42":{"start":{"line":92,"column":8},"end":{"line":95,"column":10}},"43":{"start":{"line":97,"column":22},"end":{"line":97,"column":62}},"44":{"start":{"line":98,"column":6},"end":{"line":98,"column":46}},"45":{"start":{"line":100,"column":6},"end":{"line":100,"column":55}},"46":{"start":{"line":105,"column":4},"end":{"line":143,"column":5}},"47":{"start":{"line":106,"column":6},"end":{"line":108,"column":7}},"48":{"start":{"line":107,"column":8},"end":{"line":107,"column":73}},"49":{"start":{"line":110,"column":37},"end":{"line":110,"column":39}},"50":{"start":{"line":111,"column":31},"end":{"line":111,"column":33}},"51":{"start":{"line":113,"column":6},"end":{"line":129,"column":7}},"52":{"start":{"line":114,"column":8},"end":{"line":128,"column":9}},"53":{"start":{"line":115,"column":31},"end":{"line":115,"column":62}},"54":{"start":{"line":116,"column":10},"end":{"line":119,"column":11}},"55":{"start":{"line":117,"column":12},"end":{"line":117,"column":60}},"56":{"start":{"line":118,"column":12},"end":{"line":118,"column":21}},"57":{"start":{"line":120,"column":26},"end":{"line":120,"column":66}},"58":{"start":{"line":121,"column":10},"end":{"line":125,"column":11}},"59":{"start":{"line":122,"column":12},"end":{"line":122,"column":69}},"60":{"start":{"line":124,"column":12},"end":{"line":124,"column":58}},"61":{"start":{"line":127,"column":10},"end":{"line":127,"column":66}},"62":{"start":{"line":131,"column":6},"end":{"line":138,"column":7}},"63":{"start":{"line":132,"column":8},"end":{"line":137,"column":10}},"64":{"start":{"line":140,"column":6},"end":{"line":140,"column":64}},"65":{"start":{"line":142,"column":6},"end":{"line":142,"column":55}},"66":{"start":{"line":150,"column":4},"end":{"line":156,"column":5}},"67":{"start":{"line":151,"column":6},"end":{"line":151,"column":49}},"68":{"start":{"line":152,"column":6},"end":{"line":152,"column":44}},"69":{"start":{"line":153,"column":6},"end":{"line":153,"column":31}},"70":{"start":{"line":155,"column":6},"end":{"line":155,"column":55}},"71":{"start":{"line":160,"column":4},"end":{"line":172,"column":5}},"72":{"start":{"line":161,"column":27},"end":{"line":161,"column":58}},"73":{"start":{"line":162,"column":6},"end":{"line":167,"column":7}},"74":{"start":{"line":163,"column":8},"end":{"line":166,"column":10}},"75":{"start":{"line":168,"column":6},"end":{"line":168,"column":36}},"76":{"start":{"line":169,"column":6},"end":{"line":169,"column":31}},"77":{"start":{"line":171,"column":6},"end":{"line":171,"column":55}},"78":{"start":{"line":179,"column":4},"end":{"line":192,"column":5}},"79":{"start":{"line":180,"column":29},"end":{"line":180,"column":58}},"80":{"start":{"line":181,"column":6},"end":{"line":186,"column":7}},"81":{"start":{"line":182,"column":8},"end":{"line":185,"column":10}},"82":{"start":{"line":187,"column":6},"end":{"line":187,"column":52}},"83":{"start":{"line":188,"column":6},"end":{"line":188,"column":49}},"84":{"start":{"line":189,"column":6},"end":{"line":189,"column":31}},"85":{"start":{"line":191,"column":6},"end":{"line":191,"column":55}},"86":{"start":{"line":199,"column":4},"end":{"line":212,"column":5}},"87":{"start":{"line":200,"column":29},"end":{"line":200,"column":58}},"88":{"start":{"line":201,"column":6},"end":{"line":206,"column":7}},"89":{"start":{"line":202,"column":8},"end":{"line":205,"column":10}},"90":{"start":{"line":207,"column":6},"end":{"line":207,"column":52}},"91":{"start":{"line":208,"column":6},"end":{"line":208,"column":70}},"92":{"start":{"line":209,"column":6},"end":{"line":209,"column":31}},"93":{"start":{"line":211,"column":6},"end":{"line":211,"column":55}},"94":{"start":{"line":216,"column":25},"end":{"line":216,"column":56}},"95":{"start":{"line":217,"column":4},"end":{"line":217,"column":39}},"96":{"start":{"line":221,"column":4},"end":{"line":240,"column":5}},"97":{"start":{"line":222,"column":27},"end":{"line":222,"column":58}},"98":{"start":{"line":223,"column":6},"end":{"line":228,"column":7}},"99":{"start":{"line":224,"column":8},"end":{"line":227,"column":10}},"100":{"start":{"line":229,"column":20},"end":{"line":229,"column":47}},"101":{"start":{"line":230,"column":36},"end":{"line":236,"column":8}},"102":{"start":{"line":237,"column":6},"end":{"line":237,"column":48}},"103":{"start":{"line":239,"column":6},"end":{"line":239,"column":55}},"104":{"start":{"line":14,"column":13},"end":{"line":14,"column":27}},"105":{"start":{"line":14,"column":13},"end":{"line":242,"column":null}}},"fnMap":{"0":{"name":"(anonymous_3)","decl":{"start":{"line":15,"column":2},"end":{"line":15,"column":null}},"loc":{"start":{"line":18,"column":36},"end":{"line":19,"column":6}}},"1":{"name":"(anonymous_4)","decl":{"start":{"line":21,"column":10},"end":{"line":21,"column":15}},"loc":{"start":{"line":21,"column":56},"end":{"line":45,"column":3}}},"2":{"name":"(anonymous_5)","decl":{"start":{"line":26,"column":30},"end":{"line":26,"column":31}},"loc":{"start":{"line":26,"column":50},"end":{"line":37,"column":7}}},"3":{"name":"(anonymous_6)","decl":{"start":{"line":27,"column":26},"end":{"line":27,"column":29}},"loc":{"start":{"line":27,"column":31},"end":{"line":35,"column":9}}},"4":{"name":"(anonymous_7)","decl":{"start":{"line":47,"column":2},"end":{"line":47,"column":7}},"loc":{"start":{"line":47,"column":40},"end":{"line":51,"column":3}}},"5":{"name":"(anonymous_8)","decl":{"start":{"line":53,"column":10},"end":{"line":53,"column":15}},"loc":{"start":{"line":53,"column":43},"end":{"line":86,"column":3}}},"6":{"name":"(anonymous_9)","decl":{"start":{"line":88,"column":2},"end":{"line":88,"column":7}},"loc":{"start":{"line":88,"column":29},"end":{"line":102,"column":3}}},"7":{"name":"(anonymous_10)","decl":{"start":{"line":104,"column":2},"end":{"line":104,"column":7}},"loc":{"start":{"line":104,"column":40},"end":{"line":144,"column":3}}},"8":{"name":"(anonymous_11)","decl":{"start":{"line":146,"column":2},"end":{"line":146,"column":7}},"loc":{"start":{"line":148,"column":28},"end":{"line":157,"column":3}}},"9":{"name":"(anonymous_12)","decl":{"start":{"line":159,"column":2},"end":{"line":159,"column":7}},"loc":{"start":{"line":159,"column":31},"end":{"line":173,"column":3}}},"10":{"name":"(anonymous_13)","decl":{"start":{"line":175,"column":2},"end":{"line":175,"column":7}},"loc":{"start":{"line":177,"column":23},"end":{"line":193,"column":3}}},"11":{"name":"(anonymous_14)","decl":{"start":{"line":195,"column":2},"end":{"line":195,"column":7}},"loc":{"start":{"line":197,"column":23},"end":{"line":213,"column":3}}},"12":{"name":"(anonymous_15)","decl":{"start":{"line":215,"column":2},"end":{"line":215,"column":7}},"loc":{"start":{"line":215,"column":31},"end":{"line":218,"column":3}}},"13":{"name":"(anonymous_16)","decl":{"start":{"line":220,"column":2},"end":{"line":220,"column":7}},"loc":{"start":{"line":220,"column":30},"end":{"line":241,"column":3}}}},"branchMap":{"0":{"loc":{"start":{"line":21,"column":34},"end":{"line":21,"column":56}},"type":"default-arg","locations":[{"start":{"line":21,"column":52},"end":{"line":21,"column":56}}]},"1":{"loc":{"start":{"line":25,"column":4},"end":{"line":38,"column":5}},"type":"if","locations":[{"start":{"line":25,"column":4},"end":{"line":38,"column":5}}]},"2":{"loc":{"start":{"line":28,"column":10},"end":{"line":34,"column":11}},"type":"if","locations":[{"start":{"line":28,"column":10},"end":{"line":34,"column":11}},{"start":{"line":30,"column":17},"end":{"line":34,"column":11}}]},"3":{"loc":{"start":{"line":30,"column":17},"end":{"line":34,"column":11}},"type":"if","locations":[{"start":{"line":30,"column":17},"end":{"line":34,"column":11}},{"start":{"line":32,"column":17},"end":{"line":34,"column":11}}]},"4":{"loc":{"start":{"line":42,"column":4},"end":{"line":44,"column":5}},"type":"if","locations":[{"start":{"line":42,"column":4},"end":{"line":44,"column":5}}]},"5":{"loc":{"start":{"line":50,"column":11},"end":{"line":50,"column":35}},"type":"binary-expr","locations":[{"start":{"line":50,"column":11},"end":{"line":50,"column":23}},{"start":{"line":50,"column":27},"end":{"line":50,"column":35}}]},"6":{"loc":{"start":{"line":57,"column":4},"end":{"line":59,"column":5}},"type":"if","locations":[{"start":{"line":57,"column":4},"end":{"line":59,"column":5}}]},"7":{"loc":{"start":{"line":66,"column":4},"end":{"line":73,"column":5}},"type":"if","locations":[{"start":{"line":66,"column":4},"end":{"line":73,"column":5}}]},"8":{"loc":{"start":{"line":77,"column":4},"end":{"line":83,"column":5}},"type":"if","locations":[{"start":{"line":77,"column":4},"end":{"line":83,"column":5}}]},"9":{"loc":{"start":{"line":77,"column":8},"end":{"line":77,"column":59}},"type":"binary-expr","locations":[{"start":{"line":77,"column":8},"end":{"line":77,"column":20}},{"start":{"line":77,"column":25},"end":{"line":77,"column":58}}]},"10":{"loc":{"start":{"line":91,"column":6},"end":{"line":96,"column":7}},"type":"if","locations":[{"start":{"line":91,"column":6},"end":{"line":96,"column":7}}]},"11":{"loc":{"start":{"line":106,"column":6},"end":{"line":108,"column":7}},"type":"if","locations":[{"start":{"line":106,"column":6},"end":{"line":108,"column":7}}]},"12":{"loc":{"start":{"line":116,"column":10},"end":{"line":119,"column":11}},"type":"if","locations":[{"start":{"line":116,"column":10},"end":{"line":119,"column":11}}]},"13":{"loc":{"start":{"line":121,"column":10},"end":{"line":125,"column":11}},"type":"if","locations":[{"start":{"line":121,"column":10},"end":{"line":125,"column":11}},{"start":{"line":123,"column":17},"end":{"line":125,"column":11}}]},"14":{"loc":{"start":{"line":131,"column":6},"end":{"line":138,"column":7}},"type":"if","locations":[{"start":{"line":131,"column":6},"end":{"line":138,"column":7}}]},"15":{"loc":{"start":{"line":162,"column":6},"end":{"line":167,"column":7}},"type":"if","locations":[{"start":{"line":162,"column":6},"end":{"line":167,"column":7}}]},"16":{"loc":{"start":{"line":181,"column":6},"end":{"line":186,"column":7}},"type":"if","locations":[{"start":{"line":181,"column":6},"end":{"line":186,"column":7}}]},"17":{"loc":{"start":{"line":201,"column":6},"end":{"line":206,"column":7}},"type":"if","locations":[{"start":{"line":201,"column":6},"end":{"line":206,"column":7}}]},"18":{"loc":{"start":{"line":223,"column":6},"end":{"line":228,"column":7}},"type":"if","locations":[{"start":{"line":223,"column":6},"end":{"line":228,"column":7}}]}},"s":{"0":17,"1":17,"2":17,"3":17,"4":17,"5":17,"6":17,"7":14,"8":14,"9":14,"10":11,"11":11,"12":1,"13":1,"14":502,"15":0,"16":502,"17":1,"18":501,"19":1,"20":10,"21":10,"22":0,"23":0,"24":0,"25":0,"26":11,"27":10,"28":9,"29":1,"30":1,"31":0,"32":0,"33":0,"34":1,"35":1,"36":0,"37":0,"38":1,"39":2,"40":2,"41":1,"42":0,"43":1,"44":1,"45":1,"46":3,"47":3,"48":1,"49":2,"50":2,"51":2,"52":4,"53":4,"54":4,"55":1,"56":1,"57":3,"58":3,"59":3,"60":0,"61":0,"62":2,"63":1,"64":1,"65":0,"66":1,"67":1,"68":1,"69":1,"70":0,"71":1,"72":1,"73":1,"74":0,"75":1,"76":1,"77":0,"78":1,"79":1,"80":1,"81":0,"82":1,"83":1,"84":1,"85":0,"86":1,"87":1,"88":1,"89":0,"90":1,"91":1,"92":1,"93":0,"94":1,"95":1,"96":1,"97":1,"98":1,"99":0,"100":1,"101":1,"102":1,"103":0,"104":17,"105":17},"f":{"0":14,"1":11,"2":1,"3":502,"4":0,"5":11,"6":2,"7":3,"8":1,"9":1,"10":1,"11":1,"12":1,"13":1},"b":{"0":[11],"1":[1],"2":[0,502],"3":[1,501],"4":[0],"5":[0,0],"6":[9],"7":[0],"8":[0],"9":[1,1],"10":[0],"11":[1],"12":[1],"13":[3,0],"14":[1],"15":[0],"16":[0],"17":[0],"18":[0]}} -,"/home/joao/projects/cracked-dev-cli/src/services/FileManagement/FileReader.ts": {"path":"/home/joao/projects/cracked-dev-cli/src/services/FileManagement/FileReader.ts","statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":null}},"1":{"start":{"line":6,"column":0},"end":{"line":6,"column":45}},"2":{"start":{"line":7,"column":0},"end":{"line":7,"column":42}},"3":{"start":{"line":10,"column":7},"end":{"line":37,"column":null}},"4":{"start":{"line":12,"column":4},"end":{"line":24,"column":5}},"5":{"start":{"line":13,"column":6},"end":{"line":13,"column":44}},"6":{"start":{"line":14,"column":6},"end":{"line":14,"column":50}},"7":{"start":{"line":16,"column":6},"end":{"line":22,"column":7}},"8":{"start":{"line":21,"column":8},"end":{"line":21,"column":57}},"9":{"start":{"line":23,"column":6},"end":{"line":23,"column":18}},"10":{"start":{"line":28,"column":18},"end":{"line":28,"column":38}},"11":{"start":{"line":29,"column":4},"end":{"line":31,"column":5}},"12":{"start":{"line":30,"column":6},"end":{"line":30,"column":65}},"13":{"start":{"line":35,"column":4},"end":{"line":35,"column":39}},"14":{"start":{"line":10,"column":13},"end":{"line":10,"column":23}},"15":{"start":{"line":10,"column":13},"end":{"line":37,"column":null}}},"fnMap":{"0":{"name":"(anonymous_1)","decl":{"start":{"line":11,"column":9},"end":{"line":11,"column":14}},"loc":{"start":{"line":11,"column":52},"end":{"line":25,"column":3}}},"1":{"name":"(anonymous_2)","decl":{"start":{"line":27,"column":10},"end":{"line":27,"column":15}},"loc":{"start":{"line":27,"column":49},"end":{"line":32,"column":3}}},"2":{"name":"(anonymous_3)","decl":{"start":{"line":34,"column":10},"end":{"line":34,"column":15}},"loc":{"start":{"line":34,"column":48},"end":{"line":36,"column":3}}}},"branchMap":{"0":{"loc":{"start":{"line":16,"column":6},"end":{"line":22,"column":7}},"type":"if","locations":[{"start":{"line":16,"column":6},"end":{"line":22,"column":7}}]},"1":{"loc":{"start":{"line":17,"column":8},"end":{"line":19,"column":41}},"type":"binary-expr","locations":[{"start":{"line":17,"column":8},"end":{"line":17,"column":42}},{"start":{"line":18,"column":8},"end":{"line":18,"column":38}},{"start":{"line":19,"column":8},"end":{"line":19,"column":41}}]},"2":{"loc":{"start":{"line":29,"column":4},"end":{"line":31,"column":5}},"type":"if","locations":[{"start":{"line":29,"column":4},"end":{"line":31,"column":5}}]}},"s":{"0":3,"1":3,"2":3,"3":3,"4":2,"5":2,"6":1,"7":1,"8":0,"9":1,"10":2,"11":1,"12":0,"13":1,"14":3,"15":3},"f":{"0":2,"1":2,"2":1},"b":{"0":[0],"1":[1,1,1],"2":[0]}} -,"/home/joao/projects/cracked-dev-cli/src/services/FileManagement/FileSearch.ts": {"path":"/home/joao/projects/cracked-dev-cli/src/services/FileManagement/FileSearch.ts","statementMap":{"0":{"start":{"line":5,"column":0},"end":{"line":5,"column":27}},"1":{"start":{"line":6,"column":0},"end":{"line":6,"column":26}},"2":{"start":{"line":7,"column":0},"end":{"line":7,"column":27}},"3":{"start":{"line":8,"column":0},"end":{"line":8,"column":24}},"4":{"start":{"line":9,"column":0},"end":{"line":9,"column":42}},"5":{"start":{"line":10,"column":0},"end":{"line":10,"column":53}},"6":{"start":{"line":24,"column":7},"end":{"line":200,"column":null}},"7":{"start":{"line":25,"column":22},"end":{"line":25,"column":35}},"8":{"start":{"line":28,"column":32},"end":{"line":28,"column":34}},"9":{"start":{"line":29,"column":14},"end":{"line":29,"column":37}},"10":{"start":{"line":30,"column":4},"end":{"line":33,"column":5}},"11":{"start":{"line":31,"column":6},"end":{"line":31,"column":26}},"12":{"start":{"line":32,"column":6},"end":{"line":32,"column":45}},"13":{"start":{"line":34,"column":4},"end":{"line":34,"column":21}},"14":{"start":{"line":41,"column":4},"end":{"line":67,"column":5}},"15":{"start":{"line":42,"column":22},"end":{"line":46,"column":8}},"16":{"start":{"line":48,"column":43},"end":{"line":48,"column":45}},"17":{"start":{"line":50,"column":6},"end":{"line":61,"column":7}},"18":{"start":{"line":51,"column":24},"end":{"line":51,"column":57}},"19":{"start":{"line":52,"column":22},"end":{"line":52,"column":41}},"20":{"start":{"line":54,"column":8},"end":{"line":60,"column":11}},"21":{"start":{"line":56,"column":47},"end":{"line":59,"column":12}},"22":{"start":{"line":63,"column":6},"end":{"line":63,"column":21}},"23":{"start":{"line":65,"column":6},"end":{"line":65,"column":54}},"24":{"start":{"line":66,"column":6},"end":{"line":66,"column":16}},"25":{"start":{"line":74,"column":4},"end":{"line":123,"column":5}},"26":{"start":{"line":75,"column":22},"end":{"line":79,"column":8}},"27":{"start":{"line":81,"column":43},"end":{"line":81,"column":45}},"28":{"start":{"line":82,"column":27},"end":{"line":82,"column":54}},"29":{"start":{"line":84,"column":6},"end":{"line":117,"column":7}},"30":{"start":{"line":85,"column":8},"end":{"line":116,"column":9}},"31":{"start":{"line":86,"column":24},"end":{"line":86,"column":44}},"32":{"start":{"line":87,"column":10},"end":{"line":87,"column":40}},"33":{"start":{"line":87,"column":31},"end":{"line":87,"column":40}},"34":{"start":{"line":89,"column":26},"end":{"line":89,"column":59}},"35":{"start":{"line":90,"column":24},"end":{"line":90,"column":43}},"36":{"start":{"line":91,"column":26},"end":{"line":91,"column":28}},"37":{"start":{"line":93,"column":10},"end":{"line":106,"column":11}},"38":{"start":{"line":93,"column":23},"end":{"line":93,"column":24}},"39":{"start":{"line":94,"column":25},"end":{"line":94,"column":33}},"40":{"start":{"line":95,"column":33},"end":{"line":95,"column":51}},"41":{"start":{"line":97,"column":30},"end":{"line":97,"column":77}},"42":{"start":{"line":99,"column":12},"end":{"line":105,"column":13}},"43":{"start":{"line":100,"column":14},"end":{"line":104,"column":17}},"44":{"start":{"line":108,"column":10},"end":{"line":113,"column":11}},"45":{"start":{"line":109,"column":12},"end":{"line":112,"column":15}},"46":{"start":{"line":115,"column":10},"end":{"line":115,"column":66}},"47":{"start":{"line":119,"column":6},"end":{"line":119,"column":21}},"48":{"start":{"line":121,"column":6},"end":{"line":121,"column":54}},"49":{"start":{"line":122,"column":6},"end":{"line":122,"column":16}},"50":{"start":{"line":127,"column":4},"end":{"line":198,"column":5}},"51":{"start":{"line":128,"column":25},"end":{"line":128,"column":44}},"52":{"start":{"line":129,"column":24},"end":{"line":129,"column":42}},"53":{"start":{"line":131,"column":6},"end":{"line":136,"column":9}},"54":{"start":{"line":139,"column":22},"end":{"line":144,"column":8}},"55":{"start":{"line":147,"column":39},"end":{"line":151,"column":9}},"56":{"start":{"line":147,"column":63},"end":{"line":151,"column":8}},"57":{"start":{"line":154,"column":27},"end":{"line":155,"column":null}},"58":{"start":{"line":155,"column":19},"end":{"line":155,"column":44}},"59":{"start":{"line":158,"column":6},"end":{"line":158,"column":72}},"60":{"start":{"line":160,"column":6},"end":{"line":177,"column":7}},"61":{"start":{"line":162,"column":21},"end":{"line":166,"column":10}},"62":{"start":{"line":168,"column":24},"end":{"line":168,"column":46}},"63":{"start":{"line":169,"column":8},"end":{"line":169,"column":78}},"64":{"start":{"line":171,"column":8},"end":{"line":173,"column":9}},"65":{"start":{"line":172,"column":10},"end":{"line":172,"column":75}},"66":{"start":{"line":172,"column":53},"end":{"line":172,"column":73}},"67":{"start":{"line":176,"column":8},"end":{"line":176,"column":59}},"68":{"start":{"line":176,"column":43},"end":{"line":176,"column":57}},"69":{"start":{"line":180,"column":19},"end":{"line":187,"column":8}},"70":{"start":{"line":189,"column":22},"end":{"line":189,"column":45}},"71":{"start":{"line":190,"column":6},"end":{"line":190,"column":74}},"72":{"start":{"line":192,"column":6},"end":{"line":194,"column":59}},"73":{"start":{"line":193,"column":40},"end":{"line":193,"column":74}},"74":{"start":{"line":194,"column":37},"end":{"line":194,"column":57}},"75":{"start":{"line":196,"column":6},"end":{"line":196,"column":51}},"76":{"start":{"line":197,"column":6},"end":{"line":197,"column":16}},"77":{"start":{"line":24,"column":13},"end":{"line":24,"column":23}},"78":{"start":{"line":24,"column":13},"end":{"line":200,"column":null}}},"fnMap":{"0":{"name":"(anonymous_3)","decl":{"start":{"line":25,"column":2},"end":{"line":25,"column":22}},"loc":{"start":{"line":25,"column":46},"end":{"line":25,"column":50}}},"1":{"name":"(anonymous_4)","decl":{"start":{"line":27,"column":10},"end":{"line":27,"column":24}},"loc":{"start":{"line":27,"column":56},"end":{"line":35,"column":3}}},"2":{"name":"(anonymous_5)","decl":{"start":{"line":37,"column":2},"end":{"line":37,"column":7}},"loc":{"start":{"line":39,"column":21},"end":{"line":68,"column":3}}},"3":{"name":"(anonymous_6)","decl":{"start":{"line":56,"column":29},"end":{"line":56,"column":30}},"loc":{"start":{"line":56,"column":47},"end":{"line":59,"column":12}}},"4":{"name":"(anonymous_7)","decl":{"start":{"line":70,"column":2},"end":{"line":70,"column":7}},"loc":{"start":{"line":72,"column":21},"end":{"line":124,"column":3}}},"5":{"name":"(anonymous_8)","decl":{"start":{"line":126,"column":2},"end":{"line":126,"column":7}},"loc":{"start":{"line":126,"column":50},"end":{"line":199,"column":3}}},"6":{"name":"(anonymous_9)","decl":{"start":{"line":147,"column":51},"end":{"line":147,"column":52}},"loc":{"start":{"line":147,"column":63},"end":{"line":151,"column":8}}},"7":{"name":"(anonymous_10)","decl":{"start":{"line":155,"column":8},"end":{"line":155,"column":9}},"loc":{"start":{"line":155,"column":19},"end":{"line":155,"column":44}}},"8":{"name":"(anonymous_11)","decl":{"start":{"line":172,"column":29},"end":{"line":172,"column":30}},"loc":{"start":{"line":172,"column":53},"end":{"line":172,"column":73}}},"9":{"name":"(anonymous_12)","decl":{"start":{"line":176,"column":32},"end":{"line":176,"column":33}},"loc":{"start":{"line":176,"column":43},"end":{"line":176,"column":57}}},"10":{"name":"(anonymous_13)","decl":{"start":{"line":193,"column":16},"end":{"line":193,"column":17}},"loc":{"start":{"line":193,"column":40},"end":{"line":193,"column":74}}},"11":{"name":"(anonymous_14)","decl":{"start":{"line":194,"column":13},"end":{"line":194,"column":14}},"loc":{"start":{"line":194,"column":37},"end":{"line":194,"column":57}}}},"branchMap":{"0":{"loc":{"start":{"line":87,"column":10},"end":{"line":87,"column":40}},"type":"if","locations":[{"start":{"line":87,"column":10},"end":{"line":87,"column":40}}]},"1":{"loc":{"start":{"line":108,"column":10},"end":{"line":113,"column":11}},"type":"if","locations":[{"start":{"line":108,"column":10},"end":{"line":113,"column":11}}]},"2":{"loc":{"start":{"line":160,"column":6},"end":{"line":177,"column":7}},"type":"if","locations":[{"start":{"line":160,"column":6},"end":{"line":177,"column":7}}]},"3":{"loc":{"start":{"line":171,"column":8},"end":{"line":173,"column":9}},"type":"if","locations":[{"start":{"line":171,"column":8},"end":{"line":173,"column":9}}]},"4":{"loc":{"start":{"line":193,"column":40},"end":{"line":193,"column":74}},"type":"binary-expr","locations":[{"start":{"line":193,"column":40},"end":{"line":193,"column":52}},{"start":{"line":193,"column":56},"end":{"line":193,"column":74}}]}},"s":{"0":19,"1":19,"2":19,"3":19,"4":19,"5":19,"6":19,"7":26,"8":48,"9":48,"10":48,"11":5242796,"12":5242796,"13":48,"14":2,"15":2,"16":2,"17":2,"18":6,"19":6,"20":6,"21":6,"22":2,"23":0,"24":0,"25":10,"26":10,"27":10,"28":10,"29":10,"30":48,"31":48,"32":48,"33":0,"34":48,"35":48,"36":48,"37":48,"38":48,"39":48,"40":48,"41":48,"42":48,"43":5242796,"44":48,"45":12,"46":0,"47":10,"48":0,"49":0,"50":5,"51":5,"52":5,"53":5,"54":5,"55":5,"56":18,"57":5,"58":18,"59":5,"60":5,"61":1,"62":1,"63":1,"64":1,"65":0,"66":0,"67":1,"68":1,"69":4,"70":4,"71":4,"72":4,"73":3,"74":3,"75":0,"76":0,"77":19,"78":19},"f":{"0":26,"1":48,"2":2,"3":6,"4":10,"5":5,"6":18,"7":18,"8":0,"9":1,"10":3,"11":3},"b":{"0":[0],"1":[12],"2":[1],"3":[0],"4":[3,3]}} -,"/home/joao/projects/cracked-dev-cli/src/services/FileManagement/PathAdjuster.ts": {"path":"/home/joao/projects/cracked-dev-cli/src/services/FileManagement/PathAdjuster.ts","statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":27}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":31}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":32}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":24}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":42}},"5":{"start":{"line":14,"column":7},"end":{"line":155,"column":null}},"6":{"start":{"line":15,"column":10},"end":{"line":15,"column":34}},"7":{"start":{"line":17,"column":10},"end":{"line":17,"column":39}},"8":{"start":{"line":18,"column":10},"end":{"line":18,"column":51}},"9":{"start":{"line":19,"column":10},"end":{"line":19,"column":48}},"10":{"start":{"line":22,"column":59},"end":{"line":25,"column":6}},"11":{"start":{"line":27,"column":4},"end":{"line":27,"column":58}},"12":{"start":{"line":29,"column":4},"end":{"line":32,"column":7}},"13":{"start":{"line":30,"column":6},"end":{"line":30,"column":39}},"14":{"start":{"line":31,"column":6},"end":{"line":31,"column":65}},"15":{"start":{"line":40,"column":4},"end":{"line":40,"column":28}},"16":{"start":{"line":44,"column":4},"end":{"line":44,"column":36}},"17":{"start":{"line":48,"column":4},"end":{"line":58,"column":5}},"18":{"start":{"line":49,"column":6},"end":{"line":49,"column":65}},"19":{"start":{"line":50,"column":6},"end":{"line":50,"column":45}},"20":{"start":{"line":51,"column":6},"end":{"line":51,"column":30}},"21":{"start":{"line":52,"column":6},"end":{"line":52,"column":38}},"22":{"start":{"line":54,"column":6},"end":{"line":54,"column":31}},"23":{"start":{"line":55,"column":6},"end":{"line":56,"column":66}},"24":{"start":{"line":57,"column":6},"end":{"line":57,"column":37}},"25":{"start":{"line":62,"column":4},"end":{"line":74,"column":5}},"26":{"start":{"line":63,"column":22},"end":{"line":68,"column":8}},"27":{"start":{"line":69,"column":6},"end":{"line":69,"column":63}},"28":{"start":{"line":69,"column":39},"end":{"line":69,"column":61}},"29":{"start":{"line":71,"column":6},"end":{"line":73,"column":8}},"30":{"start":{"line":81,"column":4},"end":{"line":85,"column":5}},"31":{"start":{"line":82,"column":6},"end":{"line":84,"column":8}},"32":{"start":{"line":87,"column":30},"end":{"line":87,"column":73}},"33":{"start":{"line":89,"column":20},"end":{"line":89,"column":69}},"34":{"start":{"line":91,"column":4},"end":{"line":96,"column":5}},"35":{"start":{"line":92,"column":24},"end":{"line":92,"column":34}},"36":{"start":{"line":93,"column":6},"end":{"line":95,"column":7}},"37":{"start":{"line":94,"column":8},"end":{"line":94,"column":30}},"38":{"start":{"line":98,"column":4},"end":{"line":98,"column":16}},"39":{"start":{"line":102,"column":4},"end":{"line":110,"column":5}},"40":{"start":{"line":103,"column":21},"end":{"line":103,"column":53}},"41":{"start":{"line":104,"column":6},"end":{"line":104,"column":32}},"42":{"start":{"line":104,"column":19},"end":{"line":104,"column":32}},"43":{"start":{"line":106,"column":20},"end":{"line":106,"column":47}},"44":{"start":{"line":107,"column":6},"end":{"line":107,"column":28}},"45":{"start":{"line":109,"column":6},"end":{"line":109,"column":19}},"46":{"start":{"line":117,"column":4},"end":{"line":119,"column":5}},"47":{"start":{"line":118,"column":6},"end":{"line":118,"column":30}},"48":{"start":{"line":121,"column":25},"end":{"line":121,"column":68}},"49":{"start":{"line":122,"column":4},"end":{"line":124,"column":5}},"50":{"start":{"line":123,"column":6},"end":{"line":123,"column":26}},"51":{"start":{"line":126,"column":4},"end":{"line":126,"column":16}},"52":{"start":{"line":130,"column":4},"end":{"line":135,"column":5}},"53":{"start":{"line":131,"column":27},"end":{"line":131,"column":70}},"54":{"start":{"line":132,"column":6},"end":{"line":134,"column":7}},"55":{"start":{"line":133,"column":8},"end":{"line":133,"column":28}},"56":{"start":{"line":137,"column":27},"end":{"line":137,"column":53}},"57":{"start":{"line":139,"column":4},"end":{"line":141,"column":5}},"58":{"start":{"line":140,"column":6},"end":{"line":140,"column":60}},"59":{"start":{"line":143,"column":4},"end":{"line":143,"column":61}},"60":{"start":{"line":147,"column":4},"end":{"line":153,"column":5}},"61":{"start":{"line":148,"column":6},"end":{"line":148,"column":65}},"62":{"start":{"line":149,"column":6},"end":{"line":149,"column":45}},"63":{"start":{"line":151,"column":6},"end":{"line":151,"column":59}},"64":{"start":{"line":152,"column":6},"end":{"line":152,"column":18}},"65":{"start":{"line":14,"column":13},"end":{"line":14,"column":25}},"66":{"start":{"line":14,"column":13},"end":{"line":155,"column":null}}},"fnMap":{"0":{"name":"(anonymous_9)","decl":{"start":{"line":21,"column":2},"end":{"line":21,"column":null}},"loc":{"start":{"line":21,"column":2},"end":{"line":33,"column":3}}},"1":{"name":"(anonymous_10)","decl":{"start":{"line":29,"column":28},"end":{"line":29,"column":29}},"loc":{"start":{"line":29,"column":38},"end":{"line":32,"column":5}}},"2":{"name":"(anonymous_11)","decl":{"start":{"line":35,"column":9},"end":{"line":35,"column":14}},"loc":{"start":{"line":35,"column":22},"end":{"line":37,"column":3}}},"3":{"name":"(anonymous_12)","decl":{"start":{"line":39,"column":9},"end":{"line":39,"column":22}},"loc":{"start":{"line":39,"column":22},"end":{"line":41,"column":3}}},"4":{"name":"(anonymous_13)","decl":{"start":{"line":43,"column":9},"end":{"line":43,"column":31}},"loc":{"start":{"line":43,"column":31},"end":{"line":45,"column":3}}},"5":{"name":"(anonymous_14)","decl":{"start":{"line":47,"column":10},"end":{"line":47,"column":15}},"loc":{"start":{"line":47,"column":26},"end":{"line":59,"column":3}}},"6":{"name":"(anonymous_15)","decl":{"start":{"line":61,"column":10},"end":{"line":61,"column":15}},"loc":{"start":{"line":61,"column":39},"end":{"line":75,"column":3}}},"7":{"name":"(anonymous_16)","decl":{"start":{"line":69,"column":25},"end":{"line":69,"column":26}},"loc":{"start":{"line":69,"column":39},"end":{"line":69,"column":61}}},"8":{"name":"(anonymous_17)","decl":{"start":{"line":77,"column":9},"end":{"line":77,"column":25}},"loc":{"start":{"line":79,"column":27},"end":{"line":99,"column":3}}},"9":{"name":"(anonymous_18)","decl":{"start":{"line":101,"column":9},"end":{"line":101,"column":21}},"loc":{"start":{"line":101,"column":38},"end":{"line":111,"column":3}}},"10":{"name":"(anonymous_19)","decl":{"start":{"line":113,"column":9},"end":{"line":113,"column":14}},"loc":{"start":{"line":115,"column":27},"end":{"line":127,"column":3}}},"11":{"name":"(anonymous_20)","decl":{"start":{"line":129,"column":9},"end":{"line":129,"column":23}},"loc":{"start":{"line":129,"column":44},"end":{"line":144,"column":3}}},"12":{"name":"(anonymous_21)","decl":{"start":{"line":146,"column":9},"end":{"line":146,"column":14}},"loc":{"start":{"line":146,"column":31},"end":{"line":154,"column":3}}}},"branchMap":{"0":{"loc":{"start":{"line":56,"column":8},"end":{"line":56,"column":65}},"type":"cond-expr","locations":[{"start":{"line":56,"column":33},"end":{"line":56,"column":38}},{"start":{"line":56,"column":41},"end":{"line":56,"column":65}}]},"1":{"loc":{"start":{"line":72,"column":34},"end":{"line":72,"column":88}},"type":"cond-expr","locations":[{"start":{"line":72,"column":59},"end":{"line":72,"column":72}},{"start":{"line":72,"column":75},"end":{"line":72,"column":88}}]},"2":{"loc":{"start":{"line":79,"column":4},"end":{"line":79,"column":27}},"type":"default-arg","locations":[{"start":{"line":79,"column":24},"end":{"line":79,"column":27}}]},"3":{"loc":{"start":{"line":81,"column":4},"end":{"line":85,"column":5}},"type":"if","locations":[{"start":{"line":81,"column":4},"end":{"line":85,"column":5}}]},"4":{"loc":{"start":{"line":91,"column":4},"end":{"line":96,"column":5}},"type":"if","locations":[{"start":{"line":91,"column":4},"end":{"line":96,"column":5}}]},"5":{"loc":{"start":{"line":93,"column":6},"end":{"line":95,"column":7}},"type":"if","locations":[{"start":{"line":93,"column":6},"end":{"line":95,"column":7}}]},"6":{"loc":{"start":{"line":93,"column":10},"end":{"line":93,"column":75}},"type":"binary-expr","locations":[{"start":{"line":93,"column":10},"end":{"line":93,"column":39}},{"start":{"line":93,"column":43},"end":{"line":93,"column":75}}]},"7":{"loc":{"start":{"line":104,"column":6},"end":{"line":104,"column":32}},"type":"if","locations":[{"start":{"line":104,"column":6},"end":{"line":104,"column":32}}]},"8":{"loc":{"start":{"line":115,"column":4},"end":{"line":115,"column":27}},"type":"default-arg","locations":[{"start":{"line":115,"column":24},"end":{"line":115,"column":27}}]},"9":{"loc":{"start":{"line":117,"column":4},"end":{"line":119,"column":5}},"type":"if","locations":[{"start":{"line":117,"column":4},"end":{"line":119,"column":5}}]},"10":{"loc":{"start":{"line":122,"column":4},"end":{"line":124,"column":5}},"type":"if","locations":[{"start":{"line":122,"column":4},"end":{"line":124,"column":5}}]},"11":{"loc":{"start":{"line":122,"column":8},"end":{"line":122,"column":55}},"type":"binary-expr","locations":[{"start":{"line":122,"column":8},"end":{"line":122,"column":20}},{"start":{"line":122,"column":24},"end":{"line":122,"column":55}}]},"12":{"loc":{"start":{"line":130,"column":4},"end":{"line":135,"column":5}},"type":"if","locations":[{"start":{"line":130,"column":4},"end":{"line":135,"column":5}}]},"13":{"loc":{"start":{"line":132,"column":6},"end":{"line":134,"column":7}},"type":"if","locations":[{"start":{"line":132,"column":6},"end":{"line":134,"column":7}}]},"14":{"loc":{"start":{"line":139,"column":4},"end":{"line":141,"column":5}},"type":"if","locations":[{"start":{"line":139,"column":4},"end":{"line":141,"column":5}}]}},"s":{"0":19,"1":19,"2":19,"3":19,"4":19,"5":19,"6":42,"7":42,"8":42,"9":42,"10":42,"11":42,"12":42,"13":1,"14":1,"15":2,"16":2,"17":42,"18":42,"19":41,"20":41,"21":41,"22":1,"23":1,"24":1,"25":44,"26":44,"27":42,"28":834820,"29":2,"30":6,"31":1,"32":5,"33":5,"34":5,"35":3,"36":3,"37":3,"38":2,"39":6,"40":6,"41":6,"42":1,"43":5,"44":5,"45":0,"46":3,"47":0,"48":3,"49":3,"50":2,"51":1,"52":3,"53":1,"54":1,"55":1,"56":2,"57":2,"58":1,"59":1,"60":2,"61":2,"62":1,"63":1,"64":1,"65":19,"66":19},"f":{"0":42,"1":1,"2":16,"3":2,"4":2,"5":42,"6":44,"7":834820,"8":6,"9":6,"10":3,"11":3,"12":2},"b":{"0":[1,0],"1":[2,0],"2":[3],"3":[1],"4":[3],"5":[3],"6":[3,3],"7":[1],"8":[3],"9":[0],"10":[2],"11":[3,2],"12":[1],"13":[1],"14":[1]}} -,"/home/joao/projects/cracked-dev-cli/src/services/LLM/LLMContextCreator.ts": {"path":"/home/joao/projects/cracked-dev-cli/src/services/LLM/LLMContextCreator.ts","statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":56}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":77}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":70}},"3":{"start":{"line":5,"column":0},"end":{"line":5,"column":62}},"4":{"start":{"line":6,"column":0},"end":{"line":6,"column":25}},"5":{"start":{"line":7,"column":0},"end":{"line":7,"column":42}},"6":{"start":{"line":8,"column":0},"end":{"line":8,"column":72}},"7":{"start":{"line":9,"column":0},"end":{"line":9,"column":46}},"8":{"start":{"line":19,"column":7},"end":{"line":182,"column":null}},"9":{"start":{"line":21,"column":12},"end":{"line":21,"column":30}},"10":{"start":{"line":22,"column":12},"end":{"line":22,"column":28}},"11":{"start":{"line":23,"column":12},"end":{"line":23,"column":25}},"12":{"start":{"line":24,"column":12},"end":{"line":24,"column":27}},"13":{"start":{"line":25,"column":12},"end":{"line":25,"column":26}},"14":{"start":{"line":26,"column":12},"end":{"line":26,"column":35}},"15":{"start":{"line":30,"column":19},"end":{"line":30,"column":49}},"16":{"start":{"line":32,"column":4},"end":{"line":44,"column":5}},"17":{"start":{"line":33,"column":6},"end":{"line":43,"column":7}},"18":{"start":{"line":34,"column":29},"end":{"line":36,"column":null}},"19":{"start":{"line":38,"column":8},"end":{"line":38,"column":35}},"20":{"start":{"line":40,"column":8},"end":{"line":42,"column":10}},"21":{"start":{"line":46,"column":4},"end":{"line":48,"column":5}},"22":{"start":{"line":47,"column":6},"end":{"line":47,"column":39}},"23":{"start":{"line":50,"column":4},"end":{"line":52,"column":6}},"24":{"start":{"line":60,"column":40},"end":{"line":62,"column":6}},"25":{"start":{"line":64,"column":4},"end":{"line":80,"column":5}},"26":{"start":{"line":66,"column":6},"end":{"line":66,"column":37}},"27":{"start":{"line":68,"column":6},"end":{"line":68,"column":50}},"28":{"start":{"line":70,"column":48},"end":{"line":73,"column":8}},"29":{"start":{"line":75,"column":6},"end":{"line":79,"column":9}},"30":{"start":{"line":82,"column":4},"end":{"line":82,"column":53}},"31":{"start":{"line":86,"column":23},"end":{"line":86,"column":61}},"32":{"start":{"line":87,"column":4},"end":{"line":89,"column":5}},"33":{"start":{"line":88,"column":6},"end":{"line":88,"column":71}},"34":{"start":{"line":91,"column":4},"end":{"line":91,"column":77}},"35":{"start":{"line":95,"column":17},"end":{"line":95,"column":63}},"36":{"start":{"line":96,"column":19},"end":{"line":96,"column":49}},"37":{"start":{"line":98,"column":4},"end":{"line":100,"column":5}},"38":{"start":{"line":99,"column":6},"end":{"line":99,"column":16}},"39":{"start":{"line":102,"column":27},"end":{"line":102,"column":63}},"40":{"start":{"line":103,"column":26},"end":{"line":103,"column":72}},"41":{"start":{"line":104,"column":28},"end":{"line":104,"column":71}},"42":{"start":{"line":106,"column":4},"end":{"line":117,"column":36}},"43":{"start":{"line":111,"column":28},"end":{"line":111,"column":49}},"44":{"start":{"line":123,"column":19},"end":{"line":123,"column":49}},"45":{"start":{"line":124,"column":24},"end":{"line":124,"column":65}},"46":{"start":{"line":125,"column":31},"end":{"line":125,"column":66}},"47":{"start":{"line":127,"column":23},"end":{"line":129,"column":10}},"48":{"start":{"line":131,"column":41},"end":{"line":138,"column":6}},"49":{"start":{"line":140,"column":4},"end":{"line":169,"column":2}},"50":{"start":{"line":173,"column":24},"end":{"line":173,"column":65}},"51":{"start":{"line":174,"column":4},"end":{"line":174,"column":68}},"52":{"start":{"line":178,"column":19},"end":{"line":178,"column":73}},"53":{"start":{"line":180,"column":4},"end":{"line":180,"column":18}},"54":{"start":{"line":19,"column":13},"end":{"line":19,"column":30}},"55":{"start":{"line":19,"column":13},"end":{"line":182,"column":null}}},"fnMap":{"0":{"name":"(anonymous_8)","decl":{"start":{"line":20,"column":2},"end":{"line":20,"column":null}},"loc":{"start":{"line":26,"column":56},"end":{"line":27,"column":6}}},"1":{"name":"(anonymous_9)","decl":{"start":{"line":29,"column":10},"end":{"line":29,"column":15}},"loc":{"start":{"line":29,"column":38},"end":{"line":53,"column":3}}},"2":{"name":"(anonymous_10)","decl":{"start":{"line":55,"column":2},"end":{"line":55,"column":7}},"loc":{"start":{"line":58,"column":34},"end":{"line":83,"column":3}}},"3":{"name":"(anonymous_11)","decl":{"start":{"line":85,"column":10},"end":{"line":85,"column":15}},"loc":{"start":{"line":85,"column":50},"end":{"line":92,"column":3}}},"4":{"name":"(anonymous_12)","decl":{"start":{"line":94,"column":10},"end":{"line":94,"column":15}},"loc":{"start":{"line":94,"column":43},"end":{"line":118,"column":3}}},"5":{"name":"(anonymous_13)","decl":{"start":{"line":111,"column":7},"end":{"line":111,"column":8}},"loc":{"start":{"line":111,"column":28},"end":{"line":111,"column":49}}},"6":{"name":"(anonymous_14)","decl":{"start":{"line":120,"column":10},"end":{"line":120,"column":15}},"loc":{"start":{"line":121,"column":27},"end":{"line":170,"column":3}}},"7":{"name":"(anonymous_15)","decl":{"start":{"line":172,"column":10},"end":{"line":172,"column":33}},"loc":{"start":{"line":172,"column":57},"end":{"line":175,"column":3}}},"8":{"name":"(anonymous_16)","decl":{"start":{"line":177,"column":2},"end":{"line":177,"column":7}},"loc":{"start":{"line":177,"column":43},"end":{"line":181,"column":3}}}},"branchMap":{"0":{"loc":{"start":{"line":32,"column":4},"end":{"line":44,"column":5}},"type":"if","locations":[{"start":{"line":32,"column":4},"end":{"line":44,"column":5}}]},"1":{"loc":{"start":{"line":46,"column":4},"end":{"line":48,"column":5}},"type":"if","locations":[{"start":{"line":46,"column":4},"end":{"line":48,"column":5}}]},"2":{"loc":{"start":{"line":58,"column":4},"end":{"line":58,"column":34}},"type":"default-arg","locations":[{"start":{"line":58,"column":30},"end":{"line":58,"column":34}}]},"3":{"loc":{"start":{"line":64,"column":4},"end":{"line":80,"column":5}},"type":"if","locations":[{"start":{"line":64,"column":4},"end":{"line":80,"column":5}}]},"4":{"loc":{"start":{"line":87,"column":4},"end":{"line":89,"column":5}},"type":"if","locations":[{"start":{"line":87,"column":4},"end":{"line":89,"column":5}}]},"5":{"loc":{"start":{"line":98,"column":4},"end":{"line":100,"column":5}},"type":"if","locations":[{"start":{"line":98,"column":4},"end":{"line":100,"column":5}}]},"6":{"loc":{"start":{"line":102,"column":27},"end":{"line":102,"column":63}},"type":"binary-expr","locations":[{"start":{"line":102,"column":27},"end":{"line":102,"column":48}},{"start":{"line":102,"column":52},"end":{"line":102,"column":63}}]},"7":{"loc":{"start":{"line":103,"column":26},"end":{"line":103,"column":72}},"type":"binary-expr","locations":[{"start":{"line":103,"column":26},"end":{"line":103,"column":46}},{"start":{"line":103,"column":50},"end":{"line":103,"column":72}}]},"8":{"loc":{"start":{"line":104,"column":28},"end":{"line":104,"column":71}},"type":"binary-expr","locations":[{"start":{"line":104,"column":28},"end":{"line":104,"column":50}},{"start":{"line":104,"column":54},"end":{"line":104,"column":71}}]},"9":{"loc":{"start":{"line":127,"column":23},"end":{"line":129,"column":10}},"type":"cond-expr","locations":[{"start":{"line":128,"column":8},"end":{"line":128,"column":34}},{"start":{"line":129,"column":8},"end":{"line":129,"column":10}}]},"10":{"loc":{"start":{"line":150,"column":2},"end":{"line":153,"column":null}},"type":"binary-expr","locations":[{"start":{"line":150,"column":2},"end":{"line":150,"column":20}},{"start":{"line":151,"column":2},"end":{"line":153,"column":null}}]},"11":{"loc":{"start":{"line":162,"column":2},"end":{"line":162,"column":37}},"type":"cond-expr","locations":[{"start":{"line":162,"column":15},"end":{"line":162,"column":32}},{"start":{"line":162,"column":35},"end":{"line":162,"column":37}}]},"12":{"loc":{"start":{"line":163,"column":2},"end":{"line":163,"column":55}},"type":"cond-expr","locations":[{"start":{"line":163,"column":24},"end":{"line":163,"column":50}},{"start":{"line":163,"column":53},"end":{"line":163,"column":55}}]}},"s":{"0":5,"1":5,"2":5,"3":5,"4":5,"5":5,"6":5,"7":5,"8":5,"9":99,"10":99,"11":99,"12":99,"13":99,"14":99,"15":7,"16":7,"17":2,"18":2,"19":1,"20":1,"21":5,"22":4,"23":1,"24":5,"25":5,"26":4,"27":4,"28":4,"29":3,"30":1,"31":4,"32":4,"33":1,"34":3,"35":4,"36":4,"37":4,"38":1,"39":3,"40":3,"41":3,"42":3,"43":6,"44":3,"45":3,"46":3,"47":3,"48":3,"49":3,"50":1,"51":1,"52":0,"53":0,"54":5,"55":5},"f":{"0":99,"1":7,"2":5,"3":4,"4":4,"5":6,"6":3,"7":1,"8":0},"b":{"0":[2],"1":[4],"2":[0],"3":[4],"4":[1],"5":[1],"6":[3,3],"7":[3,3],"8":[3,3],"9":[2,1],"10":[3,3],"11":[2,1],"12":[2,1]}} -,"/home/joao/projects/cracked-dev-cli/src/services/LLM/LLMProvider.ts": {"path":"/home/joao/projects/cracked-dev-cli/src/services/LLM/LLMProvider.ts","statementMap":{"0":{"start":{"line":5,"column":0},"end":{"line":5,"column":80}},"1":{"start":{"line":6,"column":0},"end":{"line":6,"column":64}},"2":{"start":{"line":8,"column":0},"end":{"line":8,"column":null}},"3":{"start":{"line":9,"column":2},"end":{"line":9,"column":null}},"4":{"start":{"line":14,"column":24},"end":{"line":136,"column":null}},"5":{"start":{"line":16,"column":10},"end":{"line":16,"column":54}},"6":{"start":{"line":19,"column":4},"end":{"line":19,"column":31}},"7":{"start":{"line":20,"column":4},"end":{"line":20,"column":56}},"8":{"start":{"line":26,"column":4},"end":{"line":32,"column":5}},"9":{"start":{"line":28,"column":8},"end":{"line":28,"column":52}},"10":{"start":{"line":29,"column":8},"end":{"line":29,"column":14}},"11":{"start":{"line":31,"column":8},"end":{"line":31,"column":62}},"12":{"start":{"line":34,"column":4},"end":{"line":34,"column":39}},"13":{"start":{"line":35,"column":4},"end":{"line":35,"column":36}},"14":{"start":{"line":39,"column":21},"end":{"line":39,"column":69}},"15":{"start":{"line":40,"column":4},"end":{"line":42,"column":5}},"16":{"start":{"line":41,"column":6},"end":{"line":41,"column":60}},"17":{"start":{"line":43,"column":4},"end":{"line":43,"column":20}},"18":{"start":{"line":47,"column":4},"end":{"line":47,"column":36}},"19":{"start":{"line":55,"column":4},"end":{"line":57,"column":5}},"20":{"start":{"line":56,"column":6},"end":{"line":56,"column":50}},"21":{"start":{"line":58,"column":4},"end":{"line":58,"column":69}},"22":{"start":{"line":67,"column":4},"end":{"line":69,"column":5}},"23":{"start":{"line":68,"column":6},"end":{"line":68,"column":50}},"24":{"start":{"line":70,"column":4},"end":{"line":75,"column":6}},"25":{"start":{"line":79,"column":4},"end":{"line":81,"column":5}},"26":{"start":{"line":80,"column":6},"end":{"line":80,"column":50}},"27":{"start":{"line":82,"column":4},"end":{"line":82,"column":52}},"28":{"start":{"line":86,"column":4},"end":{"line":88,"column":5}},"29":{"start":{"line":87,"column":6},"end":{"line":87,"column":50}},"30":{"start":{"line":89,"column":4},"end":{"line":89,"column":57}},"31":{"start":{"line":93,"column":4},"end":{"line":95,"column":5}},"32":{"start":{"line":94,"column":6},"end":{"line":94,"column":50}},"33":{"start":{"line":96,"column":4},"end":{"line":96,"column":61}},"34":{"start":{"line":100,"column":4},"end":{"line":102,"column":5}},"35":{"start":{"line":101,"column":6},"end":{"line":101,"column":50}},"36":{"start":{"line":103,"column":4},"end":{"line":103,"column":53}},"37":{"start":{"line":107,"column":4},"end":{"line":109,"column":5}},"38":{"start":{"line":108,"column":6},"end":{"line":108,"column":50}},"39":{"start":{"line":110,"column":4},"end":{"line":110,"column":53}},"40":{"start":{"line":114,"column":4},"end":{"line":116,"column":5}},"41":{"start":{"line":115,"column":6},"end":{"line":115,"column":50}},"42":{"start":{"line":117,"column":4},"end":{"line":117,"column":52}},"43":{"start":{"line":126,"column":4},"end":{"line":128,"column":5}},"44":{"start":{"line":127,"column":6},"end":{"line":127,"column":50}},"45":{"start":{"line":129,"column":4},"end":{"line":134,"column":6}},"46":{"start":{"line":14,"column":13},"end":{"line":14,"column":24}},"47":{"start":{"line":14,"column":13},"end":{"line":136,"column":null}}},"fnMap":{"0":{"name":"(anonymous_2)","decl":{"start":{"line":8,"column":0},"end":{"line":8,"column":12}},"loc":{"start":{"line":8,"column":27},"end":{"line":10,"column":1}}},"1":{"name":"(anonymous_3)","decl":{"start":{"line":18,"column":2},"end":{"line":18,"column":null}},"loc":{"start":{"line":18,"column":2},"end":{"line":21,"column":3}}},"2":{"name":"(anonymous_4)","decl":{"start":{"line":23,"column":10},"end":{"line":23,"column":28}},"loc":{"start":{"line":23,"column":50},"end":{"line":36,"column":3}}},"3":{"name":"(anonymous_5)","decl":{"start":{"line":38,"column":9},"end":{"line":38,"column":15}},"loc":{"start":{"line":38,"column":49},"end":{"line":44,"column":3}}},"4":{"name":"(anonymous_6)","decl":{"start":{"line":46,"column":10},"end":{"line":46,"column":21}},"loc":{"start":{"line":46,"column":43},"end":{"line":48,"column":3}}},"5":{"name":"(anonymous_7)","decl":{"start":{"line":50,"column":9},"end":{"line":50,"column":20}},"loc":{"start":{"line":53,"column":37},"end":{"line":59,"column":3}}},"6":{"name":"(anonymous_8)","decl":{"start":{"line":61,"column":9},"end":{"line":61,"column":31}},"loc":{"start":{"line":65,"column":37},"end":{"line":76,"column":3}}},"7":{"name":"(anonymous_9)","decl":{"start":{"line":78,"column":9},"end":{"line":78,"column":33}},"loc":{"start":{"line":78,"column":33},"end":{"line":83,"column":3}}},"8":{"name":"(anonymous_10)","decl":{"start":{"line":85,"column":9},"end":{"line":85,"column":31}},"loc":{"start":{"line":85,"column":31},"end":{"line":90,"column":3}}},"9":{"name":"(anonymous_11)","decl":{"start":{"line":92,"column":9},"end":{"line":92,"column":30}},"loc":{"start":{"line":92,"column":51},"end":{"line":97,"column":3}}},"10":{"name":"(anonymous_12)","decl":{"start":{"line":99,"column":9},"end":{"line":99,"column":27}},"loc":{"start":{"line":99,"column":27},"end":{"line":104,"column":3}}},"11":{"name":"(anonymous_13)","decl":{"start":{"line":106,"column":9},"end":{"line":106,"column":22}},"loc":{"start":{"line":106,"column":36},"end":{"line":111,"column":3}}},"12":{"name":"(anonymous_14)","decl":{"start":{"line":113,"column":9},"end":{"line":113,"column":21}},"loc":{"start":{"line":113,"column":35},"end":{"line":118,"column":3}}},"13":{"name":"(anonymous_15)","decl":{"start":{"line":120,"column":9},"end":{"line":120,"column":22}},"loc":{"start":{"line":124,"column":37},"end":{"line":135,"column":3}}}},"branchMap":{"0":{"loc":{"start":{"line":8,"column":12},"end":{"line":8,"column":null}},"type":"binary-expr","locations":[{"start":{"line":8,"column":12},"end":{"line":8,"column":27}},{"start":{"line":8,"column":27},"end":{"line":8,"column":null}}]},"1":{"loc":{"start":{"line":26,"column":4},"end":{"line":32,"column":5}},"type":"switch","locations":[{"start":{"line":27,"column":6},"end":{"line":29,"column":14}},{"start":{"line":30,"column":6},"end":{"line":31,"column":62}}]},"2":{"loc":{"start":{"line":40,"column":4},"end":{"line":42,"column":5}},"type":"if","locations":[{"start":{"line":40,"column":4},"end":{"line":42,"column":5}}]},"3":{"loc":{"start":{"line":55,"column":4},"end":{"line":57,"column":5}},"type":"if","locations":[{"start":{"line":55,"column":4},"end":{"line":57,"column":5}}]},"4":{"loc":{"start":{"line":67,"column":4},"end":{"line":69,"column":5}},"type":"if","locations":[{"start":{"line":67,"column":4},"end":{"line":69,"column":5}}]},"5":{"loc":{"start":{"line":79,"column":4},"end":{"line":81,"column":5}},"type":"if","locations":[{"start":{"line":79,"column":4},"end":{"line":81,"column":5}}]},"6":{"loc":{"start":{"line":86,"column":4},"end":{"line":88,"column":5}},"type":"if","locations":[{"start":{"line":86,"column":4},"end":{"line":88,"column":5}}]},"7":{"loc":{"start":{"line":93,"column":4},"end":{"line":95,"column":5}},"type":"if","locations":[{"start":{"line":93,"column":4},"end":{"line":95,"column":5}}]},"8":{"loc":{"start":{"line":100,"column":4},"end":{"line":102,"column":5}},"type":"if","locations":[{"start":{"line":100,"column":4},"end":{"line":102,"column":5}}]},"9":{"loc":{"start":{"line":107,"column":4},"end":{"line":109,"column":5}},"type":"if","locations":[{"start":{"line":107,"column":4},"end":{"line":109,"column":5}}]},"10":{"loc":{"start":{"line":114,"column":4},"end":{"line":116,"column":5}},"type":"if","locations":[{"start":{"line":114,"column":4},"end":{"line":116,"column":5}}]},"11":{"loc":{"start":{"line":126,"column":4},"end":{"line":128,"column":5}},"type":"if","locations":[{"start":{"line":126,"column":4},"end":{"line":128,"column":5}}]}},"s":{"0":3,"1":3,"2":3,"3":3,"4":3,"5":35,"6":35,"7":35,"8":35,"9":35,"10":35,"11":0,"12":35,"13":35,"14":2,"15":2,"16":1,"17":1,"18":2,"19":6,"20":0,"21":6,"22":8,"23":0,"24":8,"25":1,"26":0,"27":1,"28":3,"29":0,"30":3,"31":3,"32":0,"33":3,"34":3,"35":0,"36":3,"37":3,"38":0,"39":3,"40":3,"41":0,"42":3,"43":3,"44":0,"45":3,"46":3,"47":3},"f":{"0":3,"1":35,"2":35,"3":2,"4":2,"5":6,"6":8,"7":1,"8":3,"9":3,"10":3,"11":3,"12":3,"13":3},"b":{"0":[3,3],"1":[35,0],"2":[1],"3":[0],"4":[0],"5":[0],"6":[0],"7":[0],"8":[0],"9":[0],"10":[0],"11":[0]}} -,"/home/joao/projects/cracked-dev-cli/src/services/LLM/ModelInfo.ts": {"path":"/home/joao/projects/cracked-dev-cli/src/services/LLM/ModelInfo.ts","statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":63}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":60}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":37}},"3":{"start":{"line":7,"column":7},"end":{"line":183,"column":null}},"4":{"start":{"line":20,"column":22},"end":{"line":20,"column":35}},"5":{"start":{"line":8,"column":10},"end":{"line":8,"column":60}},"6":{"start":{"line":9,"column":10},"end":{"line":9,"column":45}},"7":{"start":{"line":10,"column":10},"end":{"line":10,"column":53}},"8":{"start":{"line":11,"column":10},"end":{"line":11,"column":39}},"9":{"start":{"line":12,"column":10},"end":{"line":18,"column":9}},"10":{"start":{"line":23,"column":4},"end":{"line":40,"column":5}},"11":{"start":{"line":24,"column":23},"end":{"line":24,"column":60}},"12":{"start":{"line":25,"column":35},"end":{"line":25,"column":53}},"13":{"start":{"line":28,"column":6},"end":{"line":28,"column":32}},"14":{"start":{"line":30,"column":6},"end":{"line":32,"column":9}},"15":{"start":{"line":31,"column":8},"end":{"line":31,"column":47}},"16":{"start":{"line":34,"column":6},"end":{"line":34,"column":30}},"17":{"start":{"line":36,"column":6},"end":{"line":38,"column":9}},"18":{"start":{"line":39,"column":6},"end":{"line":39,"column":18}},"19":{"start":{"line":44,"column":4},"end":{"line":46,"column":5}},"20":{"start":{"line":45,"column":6},"end":{"line":45,"column":30}},"21":{"start":{"line":50,"column":4},"end":{"line":50,"column":35}},"22":{"start":{"line":52,"column":4},"end":{"line":54,"column":5}},"23":{"start":{"line":53,"column":6},"end":{"line":53,"column":13}},"24":{"start":{"line":56,"column":4},"end":{"line":60,"column":5}},"25":{"start":{"line":57,"column":6},"end":{"line":59,"column":8}},"26":{"start":{"line":62,"column":22},"end":{"line":62,"column":53}},"27":{"start":{"line":63,"column":4},"end":{"line":63,"column":32}},"28":{"start":{"line":64,"column":4},"end":{"line":64,"column":38}},"29":{"start":{"line":66,"column":4},"end":{"line":68,"column":5}},"30":{"start":{"line":67,"column":6},"end":{"line":67,"column":13}},"31":{"start":{"line":70,"column":4},"end":{"line":74,"column":7}},"32":{"start":{"line":78,"column":4},"end":{"line":78,"column":29}},"33":{"start":{"line":82,"column":4},"end":{"line":82,"column":35}},"34":{"start":{"line":83,"column":4},"end":{"line":83,"column":42}},"35":{"start":{"line":87,"column":4},"end":{"line":87,"column":33}},"36":{"start":{"line":91,"column":4},"end":{"line":91,"column":35}},"37":{"start":{"line":92,"column":4},"end":{"line":92,"column":59}},"38":{"start":{"line":96,"column":4},"end":{"line":96,"column":35}},"39":{"start":{"line":97,"column":22},"end":{"line":97,"column":54}},"40":{"start":{"line":98,"column":4},"end":{"line":98,"column":47}},"41":{"start":{"line":102,"column":4},"end":{"line":102,"column":35}},"42":{"start":{"line":103,"column":4},"end":{"line":103,"column":48}},"43":{"start":{"line":107,"column":4},"end":{"line":107,"column":35}},"44":{"start":{"line":108,"column":22},"end":{"line":108,"column":52}},"45":{"start":{"line":110,"column":4},"end":{"line":116,"column":5}},"46":{"start":{"line":111,"column":30},"end":{"line":111,"column":66}},"47":{"start":{"line":112,"column":6},"end":{"line":115,"column":9}},"48":{"start":{"line":118,"column":4},"end":{"line":118,"column":21}},"49":{"start":{"line":122,"column":4},"end":{"line":122,"column":35}},"50":{"start":{"line":123,"column":22},"end":{"line":123,"column":54}},"51":{"start":{"line":124,"column":4},"end":{"line":124,"column":65}},"52":{"start":{"line":128,"column":4},"end":{"line":128,"column":35}},"53":{"start":{"line":129,"column":4},"end":{"line":129,"column":77}},"54":{"start":{"line":133,"column":4},"end":{"line":133,"column":35}},"55":{"start":{"line":135,"column":4},"end":{"line":137,"column":5}},"56":{"start":{"line":136,"column":6},"end":{"line":136,"column":13}},"57":{"start":{"line":139,"column":26},"end":{"line":139,"column":62}},"58":{"start":{"line":140,"column":25},"end":{"line":140,"column":72}},"59":{"start":{"line":142,"column":4},"end":{"line":148,"column":7}},"60":{"start":{"line":156,"column":4},"end":{"line":156,"column":35}},"61":{"start":{"line":158,"column":4},"end":{"line":160,"column":5}},"62":{"start":{"line":159,"column":6},"end":{"line":159,"column":13}},"63":{"start":{"line":162,"column":4},"end":{"line":164,"column":5}},"64":{"start":{"line":163,"column":6},"end":{"line":163,"column":48}},"65":{"start":{"line":166,"column":4},"end":{"line":166,"column":53}},"66":{"start":{"line":168,"column":4},"end":{"line":171,"column":7}},"67":{"start":{"line":181,"column":4},"end":{"line":181,"column":29}},"68":{"start":{"line":7,"column":13},"end":{"line":7,"column":22}},"69":{"start":{"line":7,"column":13},"end":{"line":183,"column":null}}},"fnMap":{"0":{"name":"(anonymous_2)","decl":{"start":{"line":20,"column":2},"end":{"line":20,"column":22}},"loc":{"start":{"line":20,"column":46},"end":{"line":20,"column":50}}},"1":{"name":"(anonymous_3)","decl":{"start":{"line":22,"column":2},"end":{"line":22,"column":7}},"loc":{"start":{"line":22,"column":18},"end":{"line":41,"column":3}}},"2":{"name":"(anonymous_4)","decl":{"start":{"line":30,"column":21},"end":{"line":30,"column":22}},"loc":{"start":{"line":30,"column":31},"end":{"line":32,"column":7}}},"3":{"name":"(anonymous_5)","decl":{"start":{"line":43,"column":10},"end":{"line":43,"column":15}},"loc":{"start":{"line":43,"column":33},"end":{"line":47,"column":3}}},"4":{"name":"(anonymous_6)","decl":{"start":{"line":49,"column":2},"end":{"line":49,"column":7}},"loc":{"start":{"line":49,"column":39},"end":{"line":75,"column":3}}},"5":{"name":"(anonymous_7)","decl":{"start":{"line":77,"column":2},"end":{"line":77,"column":17}},"loc":{"start":{"line":77,"column":17},"end":{"line":79,"column":3}}},"6":{"name":"(anonymous_8)","decl":{"start":{"line":81,"column":2},"end":{"line":81,"column":7}},"loc":{"start":{"line":81,"column":36},"end":{"line":84,"column":3}}},"7":{"name":"(anonymous_9)","decl":{"start":{"line":86,"column":2},"end":{"line":86,"column":21}},"loc":{"start":{"line":86,"column":21},"end":{"line":88,"column":3}}},"8":{"name":"(anonymous_10)","decl":{"start":{"line":90,"column":2},"end":{"line":90,"column":7}},"loc":{"start":{"line":90,"column":36},"end":{"line":93,"column":3}}},"9":{"name":"(anonymous_11)","decl":{"start":{"line":95,"column":2},"end":{"line":95,"column":7}},"loc":{"start":{"line":95,"column":45},"end":{"line":99,"column":3}}},"10":{"name":"(anonymous_12)","decl":{"start":{"line":101,"column":2},"end":{"line":101,"column":7}},"loc":{"start":{"line":101,"column":20},"end":{"line":104,"column":3}}},"11":{"name":"(anonymous_13)","decl":{"start":{"line":106,"column":2},"end":{"line":106,"column":7}},"loc":{"start":{"line":106,"column":40},"end":{"line":119,"column":3}}},"12":{"name":"(anonymous_14)","decl":{"start":{"line":121,"column":2},"end":{"line":121,"column":7}},"loc":{"start":{"line":121,"column":51},"end":{"line":125,"column":3}}},"13":{"name":"(anonymous_15)","decl":{"start":{"line":127,"column":2},"end":{"line":127,"column":7}},"loc":{"start":{"line":127,"column":42},"end":{"line":130,"column":3}}},"14":{"name":"(anonymous_16)","decl":{"start":{"line":132,"column":2},"end":{"line":132,"column":7}},"loc":{"start":{"line":132,"column":47},"end":{"line":149,"column":3}}},"15":{"name":"(anonymous_17)","decl":{"start":{"line":151,"column":2},"end":{"line":151,"column":7}},"loc":{"start":{"line":155,"column":3},"end":{"line":172,"column":3}}},"16":{"name":"(anonymous_18)","decl":{"start":{"line":174,"column":2},"end":{"line":174,"column":17}},"loc":{"start":{"line":174,"column":17},"end":{"line":182,"column":3}}}},"branchMap":{"0":{"loc":{"start":{"line":44,"column":4},"end":{"line":46,"column":5}},"type":"if","locations":[{"start":{"line":44,"column":4},"end":{"line":46,"column":5}}]},"1":{"loc":{"start":{"line":52,"column":4},"end":{"line":54,"column":5}},"type":"if","locations":[{"start":{"line":52,"column":4},"end":{"line":54,"column":5}}]},"2":{"loc":{"start":{"line":52,"column":8},"end":{"line":52,"column":62}},"type":"binary-expr","locations":[{"start":{"line":52,"column":8},"end":{"line":52,"column":37}},{"start":{"line":52,"column":41},"end":{"line":52,"column":62}}]},"3":{"loc":{"start":{"line":56,"column":4},"end":{"line":60,"column":5}},"type":"if","locations":[{"start":{"line":56,"column":4},"end":{"line":60,"column":5}}]},"4":{"loc":{"start":{"line":66,"column":4},"end":{"line":68,"column":5}},"type":"if","locations":[{"start":{"line":66,"column":4},"end":{"line":68,"column":5}}]},"5":{"loc":{"start":{"line":92,"column":11},"end":{"line":92,"column":58}},"type":"binary-expr","locations":[{"start":{"line":92,"column":11},"end":{"line":92,"column":48}},{"start":{"line":92,"column":52},"end":{"line":92,"column":58}}]},"6":{"loc":{"start":{"line":98,"column":11},"end":{"line":98,"column":46}},"type":"binary-expr","locations":[{"start":{"line":98,"column":11},"end":{"line":98,"column":36}},{"start":{"line":98,"column":40},"end":{"line":98,"column":46}}]},"7":{"loc":{"start":{"line":110,"column":4},"end":{"line":116,"column":5}},"type":"if","locations":[{"start":{"line":110,"column":4},"end":{"line":116,"column":5}}]},"8":{"loc":{"start":{"line":124,"column":11},"end":{"line":124,"column":64}},"type":"binary-expr","locations":[{"start":{"line":124,"column":11},"end":{"line":124,"column":56}},{"start":{"line":124,"column":60},"end":{"line":124,"column":64}}]},"9":{"loc":{"start":{"line":129,"column":11},"end":{"line":129,"column":76}},"type":"binary-expr","locations":[{"start":{"line":129,"column":11},"end":{"line":129,"column":68}},{"start":{"line":129,"column":72},"end":{"line":129,"column":76}}]},"10":{"loc":{"start":{"line":135,"column":4},"end":{"line":137,"column":5}},"type":"if","locations":[{"start":{"line":135,"column":4},"end":{"line":137,"column":5}}]},"11":{"loc":{"start":{"line":158,"column":4},"end":{"line":160,"column":5}},"type":"if","locations":[{"start":{"line":158,"column":4},"end":{"line":160,"column":5}}]},"12":{"loc":{"start":{"line":162,"column":4},"end":{"line":164,"column":5}},"type":"if","locations":[{"start":{"line":162,"column":4},"end":{"line":164,"column":5}}]}},"s":{"0":26,"1":26,"2":26,"3":26,"4":1,"5":1,"6":1,"7":1,"8":1,"9":1,"10":20,"11":20,"12":19,"13":19,"14":19,"15":38,"16":19,"17":1,"18":1,"19":32,"20":0,"21":9,"22":9,"23":5,"24":4,"25":0,"26":4,"27":4,"28":4,"29":4,"30":0,"31":4,"32":0,"33":6,"34":6,"35":2,"36":2,"37":2,"38":2,"39":2,"40":2,"41":1,"42":1,"43":6,"44":6,"45":6,"46":1,"47":1,"48":6,"49":2,"50":2,"51":2,"52":2,"53":2,"54":2,"55":2,"56":1,"57":1,"58":1,"59":1,"60":0,"61":0,"62":0,"63":0,"64":0,"65":0,"66":0,"67":0,"68":26,"69":26},"f":{"0":1,"1":20,"2":38,"3":32,"4":9,"5":0,"6":6,"7":2,"8":2,"9":2,"10":1,"11":6,"12":2,"13":2,"14":2,"15":0,"16":0},"b":{"0":[0],"1":[5],"2":[9,5],"3":[0],"4":[0],"5":[2,1],"6":[2,1],"7":[1],"8":[2,1],"9":[2,1],"10":[1],"11":[0],"12":[0]}} -,"/home/joao/projects/cracked-dev-cli/src/services/LLM/ModelManager.ts": {"path":"/home/joao/projects/cracked-dev-cli/src/services/LLM/ModelManager.ts","statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":60}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":37}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":40}},"3":{"start":{"line":6,"column":7},"end":{"line":23,"column":null}},"4":{"start":{"line":10,"column":12},"end":{"line":10,"column":23}},"5":{"start":{"line":11,"column":12},"end":{"line":11,"column":25}},"6":{"start":{"line":7,"column":10},"end":{"line":7,"column":36}},"7":{"start":{"line":15,"column":4},"end":{"line":15,"column":30}},"8":{"start":{"line":16,"column":4},"end":{"line":16,"column":42}},"9":{"start":{"line":17,"column":4},"end":{"line":17,"column":69}},"10":{"start":{"line":21,"column":4},"end":{"line":21,"column":29}},"11":{"start":{"line":6,"column":13},"end":{"line":6,"column":25}},"12":{"start":{"line":6,"column":13},"end":{"line":23,"column":null}}},"fnMap":{"0":{"name":"(anonymous_2)","decl":{"start":{"line":9,"column":2},"end":{"line":9,"column":null}},"loc":{"start":{"line":11,"column":36},"end":{"line":12,"column":6}}},"1":{"name":"(anonymous_3)","decl":{"start":{"line":14,"column":9},"end":{"line":14,"column":24}},"loc":{"start":{"line":14,"column":38},"end":{"line":18,"column":3}}},"2":{"name":"(anonymous_4)","decl":{"start":{"line":20,"column":9},"end":{"line":20,"column":24}},"loc":{"start":{"line":20,"column":24},"end":{"line":22,"column":3}}}},"branchMap":{},"s":{"0":25,"1":25,"2":25,"3":25,"4":85,"5":85,"6":85,"7":44,"8":44,"9":44,"10":36,"11":25,"12":25},"f":{"0":85,"1":44,"2":36},"b":{}} -,"/home/joao/projects/cracked-dev-cli/src/services/LLM/ModelScaler.ts": {"path":"/home/joao/projects/cracked-dev-cli/src/services/LLM/ModelScaler.ts","statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":75}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":60}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":37}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":49}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":46}},"5":{"start":{"line":6,"column":0},"end":{"line":6,"column":46}},"6":{"start":{"line":7,"column":0},"end":{"line":7,"column":43}},"7":{"start":{"line":10,"column":7},"end":{"line":128,"column":null}},"8":{"start":{"line":16,"column":12},"end":{"line":16,"column":25}},"9":{"start":{"line":17,"column":12},"end":{"line":17,"column":27}},"10":{"start":{"line":18,"column":12},"end":{"line":18,"column":26}},"11":{"start":{"line":19,"column":12},"end":{"line":19,"column":26}},"12":{"start":{"line":11,"column":10},"end":{"line":11,"column":55}},"13":{"start":{"line":12,"column":10},"end":{"line":12,"column":37}},"14":{"start":{"line":13,"column":10},"end":{"line":13,"column":45}},"15":{"start":{"line":21,"column":19},"end":{"line":21,"column":49}},"16":{"start":{"line":22,"column":4},"end":{"line":22,"column":56}},"17":{"start":{"line":26,"column":4},"end":{"line":26,"column":34}},"18":{"start":{"line":30,"column":25},"end":{"line":30,"column":60}},"19":{"start":{"line":32,"column":4},"end":{"line":34,"column":5}},"20":{"start":{"line":33,"column":6},"end":{"line":33,"column":13}},"21":{"start":{"line":36,"column":4},"end":{"line":36,"column":35}},"22":{"start":{"line":37,"column":25},"end":{"line":37,"column":60}},"23":{"start":{"line":40,"column":4},"end":{"line":42,"column":5}},"24":{"start":{"line":41,"column":6},"end":{"line":41,"column":60}},"25":{"start":{"line":46,"column":4},"end":{"line":46,"column":42}},"26":{"start":{"line":46,"column":33},"end":{"line":46,"column":42}},"27":{"start":{"line":47,"column":4},"end":{"line":47,"column":47}},"28":{"start":{"line":51,"column":4},"end":{"line":51,"column":42}},"29":{"start":{"line":51,"column":33},"end":{"line":51,"column":42}},"30":{"start":{"line":52,"column":4},"end":{"line":52,"column":31}},"31":{"start":{"line":56,"column":4},"end":{"line":56,"column":29}},"32":{"start":{"line":57,"column":4},"end":{"line":57,"column":28}},"33":{"start":{"line":58,"column":19},"end":{"line":58,"column":49}},"34":{"start":{"line":59,"column":4},"end":{"line":59,"column":56}},"35":{"start":{"line":60,"column":4},"end":{"line":60,"column":61}},"36":{"start":{"line":64,"column":4},"end":{"line":64,"column":40}},"37":{"start":{"line":64,"column":33},"end":{"line":64,"column":40}},"38":{"start":{"line":66,"column":4},"end":{"line":66,"column":26}},"39":{"start":{"line":67,"column":25},"end":{"line":67,"column":60}},"40":{"start":{"line":68,"column":4},"end":{"line":68,"column":53}},"41":{"start":{"line":72,"column":19},"end":{"line":72,"column":56}},"42":{"start":{"line":73,"column":4},"end":{"line":73,"column":55}},"43":{"start":{"line":80,"column":4},"end":{"line":80,"column":40}},"44":{"start":{"line":80,"column":33},"end":{"line":80,"column":40}},"45":{"start":{"line":82,"column":21},"end":{"line":82,"column":42}},"46":{"start":{"line":83,"column":21},"end":{"line":85,"column":null}},"47":{"start":{"line":88,"column":4},"end":{"line":95,"column":7}},"48":{"start":{"line":97,"column":4},"end":{"line":97,"column":54}},"49":{"start":{"line":104,"column":19},"end":{"line":104,"column":49}},"50":{"start":{"line":105,"column":28},"end":{"line":105,"column":59}},"51":{"start":{"line":107,"column":4},"end":{"line":107,"column":48}},"52":{"start":{"line":107,"column":19},"end":{"line":107,"column":48}},"53":{"start":{"line":109,"column":18},"end":{"line":109,"column":40}},"54":{"start":{"line":111,"column":4},"end":{"line":124,"column":5}},"55":{"start":{"line":111,"column":17},"end":{"line":111,"column":18}},"56":{"start":{"line":112,"column":31},"end":{"line":114,"column":61}},"57":{"start":{"line":114,"column":32},"end":{"line":114,"column":57}},"58":{"start":{"line":116,"column":6},"end":{"line":121,"column":7}},"59":{"start":{"line":120,"column":8},"end":{"line":120,"column":17}},"60":{"start":{"line":123,"column":6},"end":{"line":123,"column":35}},"61":{"start":{"line":126,"column":4},"end":{"line":126,"column":58}},"62":{"start":{"line":10,"column":13},"end":{"line":10,"column":24}},"63":{"start":{"line":10,"column":13},"end":{"line":128,"column":null}}},"fnMap":{"0":{"name":"(anonymous_2)","decl":{"start":{"line":15,"column":2},"end":{"line":15,"column":null}},"loc":{"start":{"line":19,"column":38},"end":{"line":23,"column":3}}},"1":{"name":"(anonymous_3)","decl":{"start":{"line":25,"column":2},"end":{"line":25,"column":21}},"loc":{"start":{"line":25,"column":21},"end":{"line":27,"column":3}}},"2":{"name":"(anonymous_4)","decl":{"start":{"line":29,"column":2},"end":{"line":29,"column":7}},"loc":{"start":{"line":29,"column":42},"end":{"line":43,"column":3}}},"3":{"name":"(anonymous_5)","decl":{"start":{"line":45,"column":2},"end":{"line":45,"column":13}},"loc":{"start":{"line":45,"column":30},"end":{"line":48,"column":3}}},"4":{"name":"(anonymous_6)","decl":{"start":{"line":50,"column":2},"end":{"line":50,"column":19}},"loc":{"start":{"line":50,"column":19},"end":{"line":53,"column":3}}},"5":{"name":"(anonymous_7)","decl":{"start":{"line":55,"column":2},"end":{"line":55,"column":7}},"loc":{"start":{"line":55,"column":7},"end":{"line":61,"column":3}}},"6":{"name":"(anonymous_8)","decl":{"start":{"line":63,"column":10},"end":{"line":63,"column":25}},"loc":{"start":{"line":63,"column":42},"end":{"line":69,"column":3}}},"7":{"name":"(anonymous_9)","decl":{"start":{"line":71,"column":10},"end":{"line":71,"column":24}},"loc":{"start":{"line":71,"column":24},"end":{"line":74,"column":3}}},"8":{"name":"(anonymous_10)","decl":{"start":{"line":76,"column":10},"end":{"line":76,"column":15}},"loc":{"start":{"line":78,"column":24},"end":{"line":98,"column":3}}},"9":{"name":"(anonymous_11)","decl":{"start":{"line":100,"column":10},"end":{"line":100,"column":29}},"loc":{"start":{"line":102,"column":23},"end":{"line":127,"column":3}}},"10":{"name":"(anonymous_12)","decl":{"start":{"line":114,"column":16},"end":{"line":114,"column":17}},"loc":{"start":{"line":114,"column":32},"end":{"line":114,"column":57}}}},"branchMap":{"0":{"loc":{"start":{"line":22,"column":29},"end":{"line":22,"column":55}},"type":"binary-expr","locations":[{"start":{"line":22,"column":29},"end":{"line":22,"column":46}},{"start":{"line":22,"column":50},"end":{"line":22,"column":55}}]},"1":{"loc":{"start":{"line":32,"column":4},"end":{"line":34,"column":5}},"type":"if","locations":[{"start":{"line":32,"column":4},"end":{"line":34,"column":5}}]},"2":{"loc":{"start":{"line":32,"column":8},"end":{"line":32,"column":65}},"type":"binary-expr","locations":[{"start":{"line":32,"column":8},"end":{"line":32,"column":31}},{"start":{"line":32,"column":35},"end":{"line":32,"column":65}}]},"3":{"loc":{"start":{"line":37,"column":25},"end":{"line":37,"column":60}},"type":"binary-expr","locations":[{"start":{"line":37,"column":25},"end":{"line":37,"column":55}},{"start":{"line":37,"column":59},"end":{"line":37,"column":60}}]},"4":{"loc":{"start":{"line":40,"column":4},"end":{"line":42,"column":5}},"type":"if","locations":[{"start":{"line":40,"column":4},"end":{"line":42,"column":5}}]},"5":{"loc":{"start":{"line":46,"column":4},"end":{"line":46,"column":42}},"type":"if","locations":[{"start":{"line":46,"column":4},"end":{"line":46,"column":42}}]},"6":{"loc":{"start":{"line":47,"column":11},"end":{"line":47,"column":46}},"type":"binary-expr","locations":[{"start":{"line":47,"column":11},"end":{"line":47,"column":41}},{"start":{"line":47,"column":45},"end":{"line":47,"column":46}}]},"7":{"loc":{"start":{"line":51,"column":4},"end":{"line":51,"column":42}},"type":"if","locations":[{"start":{"line":51,"column":4},"end":{"line":51,"column":42}}]},"8":{"loc":{"start":{"line":59,"column":29},"end":{"line":59,"column":55}},"type":"binary-expr","locations":[{"start":{"line":59,"column":29},"end":{"line":59,"column":46}},{"start":{"line":59,"column":50},"end":{"line":59,"column":55}}]},"9":{"loc":{"start":{"line":64,"column":4},"end":{"line":64,"column":40}},"type":"if","locations":[{"start":{"line":64,"column":4},"end":{"line":64,"column":40}}]},"10":{"loc":{"start":{"line":67,"column":25},"end":{"line":67,"column":60}},"type":"binary-expr","locations":[{"start":{"line":67,"column":25},"end":{"line":67,"column":55}},{"start":{"line":67,"column":59},"end":{"line":67,"column":60}}]},"11":{"loc":{"start":{"line":73,"column":11},"end":{"line":73,"column":54}},"type":"cond-expr","locations":[{"start":{"line":73,"column":31},"end":{"line":73,"column":50}},{"start":{"line":73,"column":53},"end":{"line":73,"column":54}}]},"12":{"loc":{"start":{"line":80,"column":4},"end":{"line":80,"column":40}},"type":"if","locations":[{"start":{"line":80,"column":4},"end":{"line":80,"column":40}}]},"13":{"loc":{"start":{"line":107,"column":4},"end":{"line":107,"column":48}},"type":"if","locations":[{"start":{"line":107,"column":4},"end":{"line":107,"column":48}}]},"14":{"loc":{"start":{"line":116,"column":6},"end":{"line":121,"column":7}},"type":"if","locations":[{"start":{"line":116,"column":6},"end":{"line":121,"column":7}}]},"15":{"loc":{"start":{"line":117,"column":8},"end":{"line":118,"column":56}},"type":"binary-expr","locations":[{"start":{"line":117,"column":8},"end":{"line":117,"column":68}},{"start":{"line":118,"column":8},"end":{"line":118,"column":56}}]}},"s":{"0":20,"1":20,"2":20,"3":20,"4":20,"5":20,"6":20,"7":20,"8":56,"9":56,"10":56,"11":56,"12":56,"13":56,"14":56,"15":56,"16":56,"17":0,"18":19,"19":19,"20":7,"21":12,"22":12,"23":12,"24":4,"25":4,"26":1,"27":3,"28":3,"29":1,"30":2,"31":12,"32":12,"33":12,"34":12,"35":12,"36":12,"37":0,"38":12,"39":12,"40":12,"41":4,"42":4,"43":4,"44":0,"45":4,"46":4,"47":4,"48":4,"49":11,"50":11,"51":11,"52":1,"53":10,"54":10,"55":10,"56":22,"57":15,"58":22,"59":13,"60":9,"61":1,"62":20,"63":20},"f":{"0":56,"1":0,"2":19,"3":4,"4":3,"5":12,"6":12,"7":4,"8":4,"9":11,"10":15},"b":{"0":[56,0],"1":[7],"2":[19,15],"3":[12,0],"4":[4],"5":[1],"6":[3,1],"7":[1],"8":[12,1],"9":[0],"10":[12,4],"11":[4,0],"12":[0],"13":[1],"14":[13],"15":[22,12]}} -,"/home/joao/projects/cracked-dev-cli/src/services/LLM/PhaseManager.ts": {"path":"/home/joao/projects/cracked-dev-cli/src/services/LLM/PhaseManager.ts","statementMap":{"0":{"start":{"line":2,"column":0},"end":{"line":2,"column":56}},"1":{"start":{"line":3,"column":0},"end":{"line":3,"column":49}},"2":{"start":{"line":4,"column":0},"end":{"line":4,"column":46}},"3":{"start":{"line":5,"column":0},"end":{"line":5,"column":54}},"4":{"start":{"line":6,"column":0},"end":{"line":6,"column":57}},"5":{"start":{"line":10,"column":7},"end":{"line":108,"column":null}},"6":{"start":{"line":15,"column":12},"end":{"line":15,"column":27}},"7":{"start":{"line":16,"column":12},"end":{"line":16,"column":26}},"8":{"start":{"line":11,"column":10},"end":{"line":11,"column":48}},"9":{"start":{"line":12,"column":10},"end":{"line":12,"column":61}},"10":{"start":{"line":20,"column":19},"end":{"line":20,"column":49}},"11":{"start":{"line":23,"column":4},"end":{"line":46,"column":7}},"12":{"start":{"line":49,"column":4},"end":{"line":49,"column":40}},"13":{"start":{"line":52,"column":22},"end":{"line":52,"column":60}},"14":{"start":{"line":54,"column":4},"end":{"line":56,"column":5}},"15":{"start":{"line":55,"column":6},"end":{"line":55,"column":59}},"16":{"start":{"line":58,"column":4},"end":{"line":58,"column":55}},"17":{"start":{"line":62,"column":4},"end":{"line":62,"column":29}},"18":{"start":{"line":67,"column":4},"end":{"line":69,"column":5}},"19":{"start":{"line":68,"column":6},"end":{"line":68,"column":24}},"20":{"start":{"line":71,"column":19},"end":{"line":71,"column":59}},"21":{"start":{"line":72,"column":4},"end":{"line":74,"column":5}},"22":{"start":{"line":73,"column":6},"end":{"line":73,"column":79}},"23":{"start":{"line":75,"column":4},"end":{"line":75,"column":18}},"24":{"start":{"line":79,"column":4},"end":{"line":79,"column":30}},"25":{"start":{"line":83,"column":19},"end":{"line":83,"column":47}},"26":{"start":{"line":84,"column":4},"end":{"line":86,"column":5}},"27":{"start":{"line":85,"column":6},"end":{"line":85,"column":67}},"28":{"start":{"line":87,"column":4},"end":{"line":87,"column":18}},"29":{"start":{"line":91,"column":4},"end":{"line":101,"column":5}},"30":{"start":{"line":93,"column":8},"end":{"line":93,"column":43}},"31":{"start":{"line":94,"column":8},"end":{"line":94,"column":14}},"32":{"start":{"line":96,"column":8},"end":{"line":96,"column":42}},"33":{"start":{"line":97,"column":8},"end":{"line":97,"column":14}},"34":{"start":{"line":100,"column":8},"end":{"line":100,"column":14}},"35":{"start":{"line":102,"column":4},"end":{"line":102,"column":29}},"36":{"start":{"line":106,"column":4},"end":{"line":106,"column":40}},"37":{"start":{"line":10,"column":13},"end":{"line":10,"column":25}},"38":{"start":{"line":10,"column":13},"end":{"line":108,"column":null}}},"fnMap":{"0":{"name":"(anonymous_2)","decl":{"start":{"line":14,"column":2},"end":{"line":14,"column":null}},"loc":{"start":{"line":16,"column":38},"end":{"line":17,"column":6}}},"1":{"name":"(anonymous_3)","decl":{"start":{"line":19,"column":9},"end":{"line":19,"column":31}},"loc":{"start":{"line":19,"column":31},"end":{"line":59,"column":3}}},"2":{"name":"(anonymous_4)","decl":{"start":{"line":61,"column":2},"end":{"line":61,"column":17}},"loc":{"start":{"line":61,"column":17},"end":{"line":63,"column":3}}},"3":{"name":"(anonymous_5)","decl":{"start":{"line":65,"column":2},"end":{"line":65,"column":23}},"loc":{"start":{"line":65,"column":23},"end":{"line":76,"column":3}}},"4":{"name":"(anonymous_6)","decl":{"start":{"line":78,"column":2},"end":{"line":78,"column":10}},"loc":{"start":{"line":78,"column":23},"end":{"line":80,"column":3}}},"5":{"name":"(anonymous_7)","decl":{"start":{"line":82,"column":2},"end":{"line":82,"column":16}},"loc":{"start":{"line":82,"column":29},"end":{"line":88,"column":3}}},"6":{"name":"(anonymous_8)","decl":{"start":{"line":90,"column":2},"end":{"line":90,"column":11}},"loc":{"start":{"line":90,"column":11},"end":{"line":103,"column":3}}},"7":{"name":"(anonymous_9)","decl":{"start":{"line":105,"column":2},"end":{"line":105,"column":12}},"loc":{"start":{"line":105,"column":12},"end":{"line":107,"column":3}}}},"branchMap":{"0":{"loc":{"start":{"line":29,"column":12},"end":{"line":29,"column":75}},"type":"binary-expr","locations":[{"start":{"line":29,"column":12},"end":{"line":29,"column":33}},{"start":{"line":29,"column":37},"end":{"line":29,"column":75}}]},"1":{"loc":{"start":{"line":36,"column":17},"end":{"line":36,"column":78}},"type":"binary-expr","locations":[{"start":{"line":36,"column":17},"end":{"line":36,"column":37}},{"start":{"line":36,"column":41},"end":{"line":36,"column":78}}]},"2":{"loc":{"start":{"line":43,"column":17},"end":{"line":43,"column":76}},"type":"binary-expr","locations":[{"start":{"line":43,"column":17},"end":{"line":43,"column":36}},{"start":{"line":43,"column":40},"end":{"line":43,"column":76}}]},"3":{"loc":{"start":{"line":54,"column":4},"end":{"line":56,"column":5}},"type":"if","locations":[{"start":{"line":54,"column":4},"end":{"line":56,"column":5}}]},"4":{"loc":{"start":{"line":67,"column":4},"end":{"line":69,"column":5}},"type":"if","locations":[{"start":{"line":67,"column":4},"end":{"line":69,"column":5}}]},"5":{"loc":{"start":{"line":72,"column":4},"end":{"line":74,"column":5}},"type":"if","locations":[{"start":{"line":72,"column":4},"end":{"line":74,"column":5}}]},"6":{"loc":{"start":{"line":84,"column":4},"end":{"line":86,"column":5}},"type":"if","locations":[{"start":{"line":84,"column":4},"end":{"line":86,"column":5}}]},"7":{"loc":{"start":{"line":91,"column":4},"end":{"line":101,"column":5}},"type":"switch","locations":[{"start":{"line":92,"column":6},"end":{"line":94,"column":14}},{"start":{"line":95,"column":6},"end":{"line":97,"column":14}},{"start":{"line":98,"column":6},"end":{"line":100,"column":14}}]}},"s":{"0":25,"1":25,"2":25,"3":25,"4":25,"5":25,"6":87,"7":87,"8":87,"9":87,"10":28,"11":28,"12":28,"13":28,"14":28,"15":0,"16":28,"17":25,"18":1,"19":0,"20":1,"21":1,"22":0,"23":1,"24":1,"25":7,"26":7,"27":1,"28":6,"29":4,"30":2,"31":2,"32":1,"33":1,"34":1,"35":4,"36":5,"37":25,"38":25},"f":{"0":87,"1":28,"2":25,"3":1,"4":1,"5":7,"6":4,"7":5},"b":{"0":[28,1],"1":[28,1],"2":[28,1],"3":[0],"4":[0],"5":[0],"6":[1],"7":[2,1,1]}} -,"/home/joao/projects/cracked-dev-cli/src/services/LLM/PhaseTransitionService.ts": {"path":"/home/joao/projects/cracked-dev-cli/src/services/LLM/PhaseTransitionService.ts","statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":38}},"1":{"start":{"line":3,"column":0},"end":{"line":3,"column":72}},"2":{"start":{"line":4,"column":0},"end":{"line":4,"column":68}},"3":{"start":{"line":5,"column":0},"end":{"line":5,"column":46}},"4":{"start":{"line":6,"column":0},"end":{"line":6,"column":46}},"5":{"start":{"line":7,"column":0},"end":{"line":7,"column":43}},"6":{"start":{"line":10,"column":7},"end":{"line":82,"column":null}},"7":{"start":{"line":12,"column":12},"end":{"line":12,"column":26}},"8":{"start":{"line":13,"column":12},"end":{"line":13,"column":26}},"9":{"start":{"line":14,"column":12},"end":{"line":14,"column":33}},"10":{"start":{"line":15,"column":12},"end":{"line":15,"column":35}},"11":{"start":{"line":19,"column":25},"end":{"line":19,"column":60}},"12":{"start":{"line":20,"column":22},"end":{"line":20,"column":53}},"13":{"start":{"line":22,"column":4},"end":{"line":22,"column":51}},"14":{"start":{"line":23,"column":4},"end":{"line":25,"column":5}},"15":{"start":{"line":24,"column":6},"end":{"line":24,"column":60}},"16":{"start":{"line":28,"column":4},"end":{"line":30,"column":6}},"17":{"start":{"line":33,"column":4},"end":{"line":33,"column":34}},"18":{"start":{"line":36,"column":28},"end":{"line":36,"column":69}},"19":{"start":{"line":39,"column":4},"end":{"line":39,"column":67}},"20":{"start":{"line":42,"column":4},"end":{"line":44,"column":7}},"21":{"start":{"line":46,"column":4},"end":{"line":49,"column":6}},"22":{"start":{"line":51,"column":4},"end":{"line":54,"column":6}},"23":{"start":{"line":58,"column":4},"end":{"line":67,"column":5}},"24":{"start":{"line":60,"column":8},"end":{"line":60,"column":30}},"25":{"start":{"line":62,"column":8},"end":{"line":62,"column":29}},"26":{"start":{"line":64,"column":8},"end":{"line":64,"column":31}},"27":{"start":{"line":66,"column":8},"end":{"line":66,"column":31}},"28":{"start":{"line":71,"column":4},"end":{"line":80,"column":5}},"29":{"start":{"line":73,"column":8},"end":{"line":73,"column":21}},"30":{"start":{"line":75,"column":8},"end":{"line":75,"column":21}},"31":{"start":{"line":77,"column":8},"end":{"line":77,"column":20}},"32":{"start":{"line":79,"column":8},"end":{"line":79,"column":20}},"33":{"start":{"line":10,"column":13},"end":{"line":10,"column":35}},"34":{"start":{"line":10,"column":13},"end":{"line":82,"column":null}}},"fnMap":{"0":{"name":"(anonymous_2)","decl":{"start":{"line":11,"column":2},"end":{"line":11,"column":null}},"loc":{"start":{"line":15,"column":56},"end":{"line":16,"column":6}}},"1":{"name":"(anonymous_3)","decl":{"start":{"line":18,"column":2},"end":{"line":18,"column":7}},"loc":{"start":{"line":18,"column":29},"end":{"line":55,"column":3}}},"2":{"name":"(anonymous_4)","decl":{"start":{"line":57,"column":10},"end":{"line":57,"column":22}},"loc":{"start":{"line":57,"column":42},"end":{"line":68,"column":3}}},"3":{"name":"(anonymous_5)","decl":{"start":{"line":70,"column":10},"end":{"line":70,"column":23}},"loc":{"start":{"line":70,"column":36},"end":{"line":81,"column":3}}}},"branchMap":{"0":{"loc":{"start":{"line":23,"column":4},"end":{"line":25,"column":5}},"type":"if","locations":[{"start":{"line":23,"column":4},"end":{"line":25,"column":5}}]},"1":{"loc":{"start":{"line":58,"column":4},"end":{"line":67,"column":5}},"type":"switch","locations":[{"start":{"line":59,"column":6},"end":{"line":60,"column":30}},{"start":{"line":61,"column":6},"end":{"line":62,"column":29}},{"start":{"line":63,"column":6},"end":{"line":64,"column":31}},{"start":{"line":65,"column":6},"end":{"line":66,"column":31}}]},"2":{"loc":{"start":{"line":71,"column":4},"end":{"line":80,"column":5}},"type":"switch","locations":[{"start":{"line":72,"column":6},"end":{"line":73,"column":21}},{"start":{"line":74,"column":6},"end":{"line":75,"column":21}},{"start":{"line":76,"column":6},"end":{"line":77,"column":20}},{"start":{"line":78,"column":6},"end":{"line":79,"column":20}}]}},"s":{"0":17,"1":17,"2":17,"3":17,"4":17,"5":17,"6":17,"7":6,"8":6,"9":6,"10":6,"11":5,"12":5,"13":5,"14":5,"15":0,"16":5,"17":5,"18":5,"19":5,"20":5,"21":5,"22":5,"23":5,"24":5,"25":0,"26":0,"27":0,"28":10,"29":5,"30":5,"31":0,"32":0,"33":17,"34":17},"f":{"0":6,"1":5,"2":5,"3":10},"b":{"0":[0],"1":[5,0,0,0],"2":[5,5,0,0]}} -,"/home/joao/projects/cracked-dev-cli/src/services/LLM/actions/ActionExecutor.ts": {"path":"/home/joao/projects/cracked-dev-cli/src/services/LLM/actions/ActionExecutor.ts","statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":42}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":73}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":71}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":78}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":53}},"5":{"start":{"line":6,"column":0},"end":{"line":6,"column":49}},"6":{"start":{"line":10,"column":7},"end":{"line":197,"column":null}},"7":{"start":{"line":12,"column":12},"end":{"line":12,"column":27}},"8":{"start":{"line":13,"column":12},"end":{"line":13,"column":25}},"9":{"start":{"line":14,"column":12},"end":{"line":14,"column":34}},"10":{"start":{"line":15,"column":12},"end":{"line":15,"column":35}},"11":{"start":{"line":19,"column":4},"end":{"line":195,"column":5}},"12":{"start":{"line":21,"column":33},"end":{"line":21,"column":56}},"13":{"start":{"line":24,"column":6},"end":{"line":43,"column":7}},"14":{"start":{"line":25,"column":8},"end":{"line":42,"column":9}},"15":{"start":{"line":30,"column":24},"end":{"line":31,"column":null}},"16":{"start":{"line":33,"column":10},"end":{"line":36,"column":13}},"17":{"start":{"line":37,"column":10},"end":{"line":40,"column":12}},"18":{"start":{"line":41,"column":10},"end":{"line":41,"column":43}},"19":{"start":{"line":46,"column":26},"end":{"line":46,"column":52}},"20":{"start":{"line":47,"column":22},"end":{"line":47,"column":66}},"21":{"start":{"line":49,"column":6},"end":{"line":62,"column":7}},"22":{"start":{"line":50,"column":22},"end":{"line":51,"column":null}},"23":{"start":{"line":53,"column":8},"end":{"line":56,"column":11}},"24":{"start":{"line":57,"column":8},"end":{"line":60,"column":10}},"25":{"start":{"line":61,"column":8},"end":{"line":61,"column":41}},"26":{"start":{"line":65,"column":6},"end":{"line":82,"column":7}},"27":{"start":{"line":66,"column":8},"end":{"line":81,"column":9}},"28":{"start":{"line":67,"column":10},"end":{"line":80,"column":11}},"29":{"start":{"line":68,"column":12},"end":{"line":68,"column":60}},"30":{"start":{"line":70,"column":26},"end":{"line":70,"column":73}},"31":{"start":{"line":71,"column":12},"end":{"line":74,"column":15}},"32":{"start":{"line":75,"column":12},"end":{"line":78,"column":14}},"33":{"start":{"line":79,"column":12},"end":{"line":79,"column":45}},"34":{"start":{"line":85,"column":38},"end":{"line":85,"column":55}},"35":{"start":{"line":86,"column":6},"end":{"line":165,"column":7}},"36":{"start":{"line":87,"column":23},"end":{"line":87,"column":49}},"37":{"start":{"line":88,"column":8},"end":{"line":88,"column":30}},"38":{"start":{"line":88,"column":21},"end":{"line":88,"column":30}},"39":{"start":{"line":90,"column":31},"end":{"line":91,"column":null}},"40":{"start":{"line":93,"column":8},"end":{"line":106,"column":9}},"41":{"start":{"line":94,"column":24},"end":{"line":95,"column":null}},"42":{"start":{"line":97,"column":10},"end":{"line":100,"column":13}},"43":{"start":{"line":101,"column":10},"end":{"line":104,"column":12}},"44":{"start":{"line":105,"column":10},"end":{"line":105,"column":43}},"45":{"start":{"line":109,"column":26},"end":{"line":109,"column":64}},"46":{"start":{"line":110,"column":8},"end":{"line":114,"column":9}},"47":{"start":{"line":111,"column":10},"end":{"line":113,"column":12}},"48":{"start":{"line":117,"column":8},"end":{"line":117,"column":66}},"49":{"start":{"line":120,"column":8},"end":{"line":120,"column":75}},"50":{"start":{"line":123,"column":8},"end":{"line":143,"column":9}},"51":{"start":{"line":124,"column":10},"end":{"line":134,"column":11}},"52":{"start":{"line":125,"column":12},"end":{"line":128,"column":14}},"53":{"start":{"line":130,"column":12},"end":{"line":133,"column":14}},"54":{"start":{"line":136,"column":31},"end":{"line":138,"column":29}},"55":{"start":{"line":139,"column":10},"end":{"line":142,"column":12}},"56":{"start":{"line":146,"column":8},"end":{"line":150,"column":10}},"57":{"start":{"line":152,"column":8},"end":{"line":156,"column":9}},"58":{"start":{"line":154,"column":10},"end":{"line":154,"column":35}},"59":{"start":{"line":155,"column":10},"end":{"line":155,"column":16}},"60":{"start":{"line":159,"column":8},"end":{"line":164,"column":9}},"61":{"start":{"line":160,"column":10},"end":{"line":163,"column":12}},"62":{"start":{"line":168,"column":36},"end":{"line":168,"column":74}},"63":{"start":{"line":171,"column":6},"end":{"line":171,"column":31}},"64":{"start":{"line":174,"column":6},"end":{"line":176,"column":21}},"65":{"start":{"line":179,"column":6},"end":{"line":179,"column":31}},"66":{"start":{"line":182,"column":6},"end":{"line":185,"column":9}},"67":{"start":{"line":186,"column":6},"end":{"line":189,"column":8}},"68":{"start":{"line":191,"column":6},"end":{"line":194,"column":8}},"69":{"start":{"line":10,"column":13},"end":{"line":10,"column":27}},"70":{"start":{"line":10,"column":13},"end":{"line":197,"column":null}}},"fnMap":{"0":{"name":"(anonymous_2)","decl":{"start":{"line":11,"column":2},"end":{"line":11,"column":null}},"loc":{"start":{"line":15,"column":56},"end":{"line":16,"column":6}}},"1":{"name":"(anonymous_3)","decl":{"start":{"line":18,"column":2},"end":{"line":18,"column":7}},"loc":{"start":{"line":18,"column":40},"end":{"line":196,"column":3}}}},"branchMap":{"0":{"loc":{"start":{"line":25,"column":8},"end":{"line":42,"column":9}},"type":"if","locations":[{"start":{"line":25,"column":8},"end":{"line":42,"column":9}}]},"1":{"loc":{"start":{"line":26,"column":10},"end":{"line":28,"column":50}},"type":"binary-expr","locations":[{"start":{"line":26,"column":10},"end":{"line":26,"column":41}},{"start":{"line":27,"column":10},"end":{"line":27,"column":49}},{"start":{"line":28,"column":10},"end":{"line":28,"column":50}}]},"2":{"loc":{"start":{"line":49,"column":6},"end":{"line":62,"column":7}},"type":"if","locations":[{"start":{"line":49,"column":6},"end":{"line":62,"column":7}}]},"3":{"loc":{"start":{"line":66,"column":8},"end":{"line":81,"column":9}},"type":"if","locations":[{"start":{"line":66,"column":8},"end":{"line":81,"column":9}}]},"4":{"loc":{"start":{"line":66,"column":12},"end":{"line":66,"column":61}},"type":"binary-expr","locations":[{"start":{"line":66,"column":12},"end":{"line":66,"column":33}},{"start":{"line":66,"column":37},"end":{"line":66,"column":61}}]},"5":{"loc":{"start":{"line":67,"column":10},"end":{"line":80,"column":11}},"type":"if","locations":[{"start":{"line":67,"column":10},"end":{"line":80,"column":11}},{"start":{"line":69,"column":17},"end":{"line":80,"column":11}}]},"6":{"loc":{"start":{"line":88,"column":8},"end":{"line":88,"column":30}},"type":"if","locations":[{"start":{"line":88,"column":8},"end":{"line":88,"column":30}}]},"7":{"loc":{"start":{"line":93,"column":8},"end":{"line":106,"column":9}},"type":"if","locations":[{"start":{"line":93,"column":8},"end":{"line":106,"column":9}}]},"8":{"loc":{"start":{"line":110,"column":8},"end":{"line":114,"column":9}},"type":"if","locations":[{"start":{"line":110,"column":8},"end":{"line":114,"column":9}}]},"9":{"loc":{"start":{"line":112,"column":17},"end":{"line":112,"column":68}},"type":"binary-expr","locations":[{"start":{"line":112,"column":17},"end":{"line":112,"column":38}},{"start":{"line":112,"column":42},"end":{"line":112,"column":68}}]},"10":{"loc":{"start":{"line":123,"column":8},"end":{"line":143,"column":9}},"type":"if","locations":[{"start":{"line":123,"column":8},"end":{"line":143,"column":9}},{"start":{"line":135,"column":15},"end":{"line":143,"column":9}}]},"11":{"loc":{"start":{"line":124,"column":10},"end":{"line":134,"column":11}},"type":"if","locations":[{"start":{"line":124,"column":10},"end":{"line":134,"column":11}},{"start":{"line":129,"column":17},"end":{"line":134,"column":11}}]},"12":{"loc":{"start":{"line":136,"column":31},"end":{"line":138,"column":29}},"type":"cond-expr","locations":[{"start":{"line":137,"column":14},"end":{"line":137,"column":38}},{"start":{"line":138,"column":14},"end":{"line":138,"column":29}}]},"13":{"loc":{"start":{"line":152,"column":8},"end":{"line":156,"column":9}},"type":"if","locations":[{"start":{"line":152,"column":8},"end":{"line":156,"column":9}}]},"14":{"loc":{"start":{"line":159,"column":8},"end":{"line":164,"column":9}},"type":"if","locations":[{"start":{"line":159,"column":8},"end":{"line":164,"column":9}}]},"15":{"loc":{"start":{"line":159,"column":12},"end":{"line":159,"column":63}},"type":"binary-expr","locations":[{"start":{"line":159,"column":12},"end":{"line":159,"column":41}},{"start":{"line":159,"column":45},"end":{"line":159,"column":63}}]},"16":{"loc":{"start":{"line":174,"column":13},"end":{"line":176,"column":20}},"type":"cond-expr","locations":[{"start":{"line":175,"column":10},"end":{"line":175,"column":68}},{"start":{"line":176,"column":10},"end":{"line":176,"column":20}}]}},"s":{"0":6,"1":6,"2":6,"3":6,"4":6,"5":6,"6":6,"7":100,"8":100,"9":100,"10":100,"11":7,"12":7,"13":7,"14":73,"15":1,"16":1,"17":1,"18":1,"19":6,"20":6,"21":6,"22":3,"23":3,"24":3,"25":3,"26":3,"27":3,"28":3,"29":2,"30":1,"31":1,"32":1,"33":1,"34":2,"35":2,"36":2,"37":2,"38":0,"39":2,"40":2,"41":0,"42":0,"43":0,"44":0,"45":2,"46":2,"47":2,"48":2,"49":2,"50":2,"51":2,"52":1,"53":1,"54":0,"55":0,"56":2,"57":2,"58":0,"59":0,"60":2,"61":1,"62":2,"63":2,"64":2,"65":0,"66":0,"67":0,"68":0,"69":6,"70":6},"f":{"0":100,"1":7},"b":{"0":[1],"1":[73,5,2],"2":[3],"3":[3],"4":[3,3],"5":[2,1],"6":[0],"7":[0],"8":[2],"9":[2,0],"10":[2,0],"11":[1,1],"12":[0,0],"13":[0],"14":[1],"15":[2,1],"16":[0,2]}} -,"/home/joao/projects/cracked-dev-cli/src/services/LLM/actions/ActionTagsExtractor.ts": {"path":"/home/joao/projects/cracked-dev-cli/src/services/LLM/actions/ActionTagsExtractor.ts","statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":42}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":67}},"2":{"start":{"line":5,"column":7},"end":{"line":131,"column":null}},"3":{"start":{"line":8,"column":21},"end":{"line":8,"column":38}},"4":{"start":{"line":9,"column":23},"end":{"line":9,"column":46}},"5":{"start":{"line":11,"column":4},"end":{"line":16,"column":5}},"6":{"start":{"line":12,"column":24},"end":{"line":12,"column":41}},"7":{"start":{"line":13,"column":6},"end":{"line":15,"column":9}},"8":{"start":{"line":14,"column":8},"end":{"line":14,"column":33}},"9":{"start":{"line":18,"column":4},"end":{"line":18,"column":32}},"10":{"start":{"line":28,"column":23},"end":{"line":28,"column":46}},"11":{"start":{"line":31,"column":4},"end":{"line":40,"column":5}},"12":{"start":{"line":32,"column":24},"end":{"line":33,"column":15}},"13":{"start":{"line":34,"column":25},"end":{"line":35,"column":15}},"14":{"start":{"line":37,"column":6},"end":{"line":39,"column":7}},"15":{"start":{"line":38,"column":8},"end":{"line":38,"column":141}},"16":{"start":{"line":43,"column":26},"end":{"line":43,"column":49}},"17":{"start":{"line":45,"column":4},"end":{"line":54,"column":5}},"18":{"start":{"line":46,"column":24},"end":{"line":47,"column":15}},"19":{"start":{"line":48,"column":25},"end":{"line":49,"column":15}},"20":{"start":{"line":51,"column":6},"end":{"line":53,"column":7}},"21":{"start":{"line":52,"column":8},"end":{"line":52,"column":141}},"22":{"start":{"line":56,"column":4},"end":{"line":56,"column":14}},"23":{"start":{"line":66,"column":18},"end":{"line":66,"column":74}},"24":{"start":{"line":67,"column":20},"end":{"line":67,"column":55}},"25":{"start":{"line":69,"column":4},"end":{"line":69,"column":42}},"26":{"start":{"line":69,"column":30},"end":{"line":69,"column":42}},"27":{"start":{"line":70,"column":4},"end":{"line":70,"column":58}},"28":{"start":{"line":70,"column":30},"end":{"line":70,"column":58}},"29":{"start":{"line":71,"column":4},"end":{"line":71,"column":51}},"30":{"start":{"line":71,"column":34},"end":{"line":71,"column":49}},"31":{"start":{"line":81,"column":18},"end":{"line":81,"column":74}},"32":{"start":{"line":82,"column":20},"end":{"line":82,"column":43}},"33":{"start":{"line":83,"column":4},"end":{"line":83,"column":63}},"34":{"start":{"line":83,"column":46},"end":{"line":83,"column":61}},"35":{"start":{"line":93,"column":23},"end":{"line":93,"column":56}},"36":{"start":{"line":94,"column":4},"end":{"line":94,"column":60}},"37":{"start":{"line":94,"column":50},"end":{"line":94,"column":60}},"38":{"start":{"line":96,"column":4},"end":{"line":99,"column":23}},"39":{"start":{"line":98,"column":21},"end":{"line":98,"column":32}},"40":{"start":{"line":114,"column":26},"end":{"line":114,"column":61}},"41":{"start":{"line":115,"column":4},"end":{"line":115,"column":66}},"42":{"start":{"line":115,"column":56},"end":{"line":115,"column":66}},"43":{"start":{"line":117,"column":4},"end":{"line":117,"column":53}},"44":{"start":{"line":127,"column":18},"end":{"line":127,"column":72}},"45":{"start":{"line":128,"column":20},"end":{"line":128,"column":40}},"46":{"start":{"line":129,"column":4},"end":{"line":129,"column":63}},"47":{"start":{"line":129,"column":44},"end":{"line":129,"column":56}},"48":{"start":{"line":5,"column":13},"end":{"line":5,"column":32}},"49":{"start":{"line":5,"column":13},"end":{"line":131,"column":null}}},"fnMap":{"0":{"name":"(anonymous_1)","decl":{"start":{"line":6,"column":10},"end":{"line":6,"column":26}},"loc":{"start":{"line":6,"column":26},"end":{"line":19,"column":3}}},"1":{"name":"(anonymous_2)","decl":{"start":{"line":13,"column":36},"end":{"line":13,"column":37}},"loc":{"start":{"line":13,"column":46},"end":{"line":15,"column":7}}},"2":{"name":"(anonymous_3)","decl":{"start":{"line":26,"column":2},"end":{"line":26,"column":19}},"loc":{"start":{"line":26,"column":35},"end":{"line":57,"column":3}}},"3":{"name":"(anonymous_4)","decl":{"start":{"line":65,"column":2},"end":{"line":65,"column":12}},"loc":{"start":{"line":65,"column":45},"end":{"line":72,"column":3}}},"4":{"name":"(anonymous_5)","decl":{"start":{"line":71,"column":23},"end":{"line":71,"column":24}},"loc":{"start":{"line":71,"column":34},"end":{"line":71,"column":49}}},"5":{"name":"(anonymous_6)","decl":{"start":{"line":80,"column":2},"end":{"line":80,"column":13}},"loc":{"start":{"line":80,"column":46},"end":{"line":84,"column":3}}},"6":{"name":"(anonymous_7)","decl":{"start":{"line":83,"column":35},"end":{"line":83,"column":36}},"loc":{"start":{"line":83,"column":46},"end":{"line":83,"column":61}}},"7":{"name":"(anonymous_8)","decl":{"start":{"line":92,"column":2},"end":{"line":92,"column":17}},"loc":{"start":{"line":92,"column":50},"end":{"line":100,"column":3}}},"8":{"name":"(anonymous_9)","decl":{"start":{"line":98,"column":11},"end":{"line":98,"column":12}},"loc":{"start":{"line":98,"column":21},"end":{"line":98,"column":32}}},"9":{"name":"(anonymous_10)","decl":{"start":{"line":109,"column":2},"end":{"line":109,"column":19}},"loc":{"start":{"line":112,"column":20},"end":{"line":118,"column":3}}},"10":{"name":"(anonymous_11)","decl":{"start":{"line":126,"column":2},"end":{"line":126,"column":27}},"loc":{"start":{"line":126,"column":60},"end":{"line":130,"column":3}}},"11":{"name":"(anonymous_12)","decl":{"start":{"line":129,"column":33},"end":{"line":129,"column":34}},"loc":{"start":{"line":129,"column":44},"end":{"line":129,"column":56}}}},"branchMap":{"0":{"loc":{"start":{"line":32,"column":25},"end":{"line":32,"column":73}},"type":"binary-expr","locations":[{"start":{"line":32,"column":25},"end":{"line":32,"column":67}},{"start":{"line":32,"column":71},"end":{"line":32,"column":73}}]},"1":{"loc":{"start":{"line":34,"column":26},"end":{"line":34,"column":75}},"type":"binary-expr","locations":[{"start":{"line":34,"column":26},"end":{"line":34,"column":69}},{"start":{"line":34,"column":73},"end":{"line":34,"column":75}}]},"2":{"loc":{"start":{"line":37,"column":6},"end":{"line":39,"column":7}},"type":"if","locations":[{"start":{"line":37,"column":6},"end":{"line":39,"column":7}}]},"3":{"loc":{"start":{"line":38,"column":74},"end":{"line":38,"column":120}},"type":"cond-expr","locations":[{"start":{"line":38,"column":99},"end":{"line":38,"column":108}},{"start":{"line":38,"column":111},"end":{"line":38,"column":120}}]},"4":{"loc":{"start":{"line":46,"column":25},"end":{"line":46,"column":73}},"type":"binary-expr","locations":[{"start":{"line":46,"column":25},"end":{"line":46,"column":67}},{"start":{"line":46,"column":71},"end":{"line":46,"column":73}}]},"5":{"loc":{"start":{"line":48,"column":26},"end":{"line":48,"column":75}},"type":"binary-expr","locations":[{"start":{"line":48,"column":26},"end":{"line":48,"column":69}},{"start":{"line":48,"column":73},"end":{"line":48,"column":75}}]},"6":{"loc":{"start":{"line":51,"column":6},"end":{"line":53,"column":7}},"type":"if","locations":[{"start":{"line":51,"column":6},"end":{"line":53,"column":7}}]},"7":{"loc":{"start":{"line":52,"column":74},"end":{"line":52,"column":120}},"type":"cond-expr","locations":[{"start":{"line":52,"column":99},"end":{"line":52,"column":108}},{"start":{"line":52,"column":111},"end":{"line":52,"column":120}}]},"8":{"loc":{"start":{"line":69,"column":4},"end":{"line":69,"column":42}},"type":"if","locations":[{"start":{"line":69,"column":4},"end":{"line":69,"column":42}}]},"9":{"loc":{"start":{"line":70,"column":4},"end":{"line":70,"column":58}},"type":"if","locations":[{"start":{"line":70,"column":4},"end":{"line":70,"column":58}}]},"10":{"loc":{"start":{"line":94,"column":4},"end":{"line":94,"column":60}},"type":"if","locations":[{"start":{"line":94,"column":4},"end":{"line":94,"column":60}}]},"11":{"loc":{"start":{"line":94,"column":8},"end":{"line":94,"column":48}},"type":"binary-expr","locations":[{"start":{"line":94,"column":8},"end":{"line":94,"column":19}},{"start":{"line":94,"column":23},"end":{"line":94,"column":48}}]},"12":{"loc":{"start":{"line":115,"column":4},"end":{"line":115,"column":66}},"type":"if","locations":[{"start":{"line":115,"column":4},"end":{"line":115,"column":66}}]},"13":{"loc":{"start":{"line":115,"column":8},"end":{"line":115,"column":54}},"type":"binary-expr","locations":[{"start":{"line":115,"column":8},"end":{"line":115,"column":22}},{"start":{"line":115,"column":26},"end":{"line":115,"column":54}}]},"14":{"loc":{"start":{"line":129,"column":11},"end":{"line":129,"column":62}},"type":"cond-expr","locations":[{"start":{"line":129,"column":21},"end":{"line":129,"column":57}},{"start":{"line":129,"column":60},"end":{"line":129,"column":62}}]}},"s":{"0":16,"1":16,"2":16,"3":4,"4":4,"5":4,"6":48,"7":48,"8":64,"9":4,"10":6,"11":6,"12":52,"13":52,"14":52,"15":2,"16":4,"17":4,"18":32,"19":32,"20":32,"21":0,"22":4,"23":15,"24":15,"25":15,"26":4,"27":11,"28":11,"29":0,"30":0,"31":6,"32":6,"33":6,"34":7,"35":3,"36":3,"37":1,"38":2,"39":6,"40":4,"41":4,"42":1,"43":3,"44":0,"45":0,"46":0,"47":0,"48":16,"49":16},"f":{"0":4,"1":64,"2":6,"3":15,"4":0,"5":6,"6":7,"7":3,"8":6,"9":4,"10":0,"11":0},"b":{"0":[52,46],"1":[52,46],"2":[2],"3":[1,1],"4":[32,26],"5":[32,26],"6":[0],"7":[0,0],"8":[4],"9":[11],"10":[1],"11":[3,2],"12":[1],"13":[4,3],"14":[0,0]}} -,"/home/joao/projects/cracked-dev-cli/src/services/LLM/actions/ActionsParser.ts": {"path":"/home/joao/projects/cracked-dev-cli/src/services/LLM/actions/ActionsParser.ts","statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":68}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":80}},"2":{"start":{"line":9,"column":0},"end":{"line":9,"column":60}},"3":{"start":{"line":10,"column":0},"end":{"line":10,"column":69}},"4":{"start":{"line":11,"column":0},"end":{"line":11,"column":24}},"5":{"start":{"line":12,"column":0},"end":{"line":12,"column":42}},"6":{"start":{"line":13,"column":0},"end":{"line":13,"column":36}},"7":{"start":{"line":14,"column":0},"end":{"line":14,"column":67}},"8":{"start":{"line":23,"column":7},"end":{"line":444,"column":null}},"9":{"start":{"line":31,"column":12},"end":{"line":31,"column":25}},"10":{"start":{"line":32,"column":12},"end":{"line":32,"column":28}},"11":{"start":{"line":33,"column":12},"end":{"line":33,"column":31}},"12":{"start":{"line":34,"column":12},"end":{"line":34,"column":33}},"13":{"start":{"line":24,"column":10},"end":{"line":24,"column":44}},"14":{"start":{"line":25,"column":10},"end":{"line":25,"column":46}},"15":{"start":{"line":26,"column":10},"end":{"line":26,"column":43}},"16":{"start":{"line":27,"column":10},"end":{"line":27,"column":39}},"17":{"start":{"line":28,"column":10},"end":{"line":28,"column":36}},"18":{"start":{"line":38,"column":4},"end":{"line":38,"column":35}},"19":{"start":{"line":39,"column":4},"end":{"line":39,"column":36}},"20":{"start":{"line":40,"column":4},"end":{"line":40,"column":33}},"21":{"start":{"line":41,"column":4},"end":{"line":41,"column":28}},"22":{"start":{"line":45,"column":4},"end":{"line":45,"column":16}},"23":{"start":{"line":49,"column":4},"end":{"line":52,"column":7}},"24":{"start":{"line":50,"column":24},"end":{"line":50,"column":41}},"25":{"start":{"line":51,"column":6},"end":{"line":51,"column":74}},"26":{"start":{"line":51,"column":51},"end":{"line":51,"column":72}},"27":{"start":{"line":57,"column":24},"end":{"line":57,"column":54}},"28":{"start":{"line":58,"column":24},"end":{"line":58,"column":76}},"29":{"start":{"line":59,"column":4},"end":{"line":59,"column":34}},"30":{"start":{"line":59,"column":22},"end":{"line":59,"column":34}},"31":{"start":{"line":61,"column":22},"end":{"line":61,"column":43}},"32":{"start":{"line":62,"column":18},"end":{"line":62,"column":38}},"33":{"start":{"line":63,"column":4},"end":{"line":63,"column":28}},"34":{"start":{"line":63,"column":16},"end":{"line":63,"column":28}},"35":{"start":{"line":65,"column":4},"end":{"line":65,"column":49}},"36":{"start":{"line":69,"column":24},"end":{"line":69,"column":69}},"37":{"start":{"line":70,"column":4},"end":{"line":70,"column":34}},"38":{"start":{"line":70,"column":22},"end":{"line":70,"column":34}},"39":{"start":{"line":72,"column":21},"end":{"line":72,"column":51}},"40":{"start":{"line":73,"column":4},"end":{"line":73,"column":31}},"41":{"start":{"line":73,"column":19},"end":{"line":73,"column":31}},"42":{"start":{"line":75,"column":4},"end":{"line":75,"column":23}},"43":{"start":{"line":80,"column":25},"end":{"line":80,"column":78}},"44":{"start":{"line":81,"column":4},"end":{"line":83,"column":5}},"45":{"start":{"line":82,"column":6},"end":{"line":82,"column":29}},"46":{"start":{"line":86,"column":22},"end":{"line":86,"column":64}},"47":{"start":{"line":87,"column":4},"end":{"line":89,"column":5}},"48":{"start":{"line":88,"column":6},"end":{"line":88,"column":26}},"49":{"start":{"line":92,"column":4},"end":{"line":94,"column":5}},"50":{"start":{"line":93,"column":6},"end":{"line":93,"column":27}},"51":{"start":{"line":96,"column":4},"end":{"line":96,"column":14}},"52":{"start":{"line":102,"column":4},"end":{"line":128,"column":7}},"53":{"start":{"line":103,"column":34},"end":{"line":103,"column":36}},"54":{"start":{"line":105,"column":6},"end":{"line":114,"column":7}},"55":{"start":{"line":107,"column":28},"end":{"line":112,"column":10}},"56":{"start":{"line":108,"column":10},"end":{"line":108,"column":51}},"57":{"start":{"line":108,"column":38},"end":{"line":108,"column":51}},"58":{"start":{"line":109,"column":30},"end":{"line":109,"column":70}},"59":{"start":{"line":110,"column":31},"end":{"line":110,"column":76}},"60":{"start":{"line":111,"column":10},"end":{"line":111,"column":52}},"61":{"start":{"line":113,"column":8},"end":{"line":113,"column":62}},"62":{"start":{"line":113,"column":49},"end":{"line":113,"column":59}},"63":{"start":{"line":116,"column":6},"end":{"line":125,"column":7}},"64":{"start":{"line":118,"column":29},"end":{"line":123,"column":10}},"65":{"start":{"line":119,"column":10},"end":{"line":119,"column":52}},"66":{"start":{"line":119,"column":39},"end":{"line":119,"column":52}},"67":{"start":{"line":120,"column":28},"end":{"line":120,"column":59}},"68":{"start":{"line":121,"column":29},"end":{"line":121,"column":65}},"69":{"start":{"line":122,"column":10},"end":{"line":122,"column":42}},"70":{"start":{"line":124,"column":8},"end":{"line":124,"column":63}},"71":{"start":{"line":124,"column":50},"end":{"line":124,"column":60}},"72":{"start":{"line":127,"column":6},"end":{"line":127,"column":38}},"73":{"start":{"line":134,"column":35},"end":{"line":134,"column":37}},"74":{"start":{"line":135,"column":31},"end":{"line":135,"column":43}},"75":{"start":{"line":138,"column":29},"end":{"line":141,"column":5}},"76":{"start":{"line":139,"column":24},"end":{"line":139,"column":49}},"77":{"start":{"line":140,"column":6},"end":{"line":140,"column":50}},"78":{"start":{"line":143,"column":4},"end":{"line":190,"column":5}},"79":{"start":{"line":144,"column":48},"end":{"line":144,"column":50}},"80":{"start":{"line":145,"column":52},"end":{"line":145,"column":54}},"81":{"start":{"line":148,"column":6},"end":{"line":162,"column":9}},"82":{"start":{"line":150,"column":10},"end":{"line":154,"column":null}},"83":{"start":{"line":153,"column":14},"end":{"line":154,"column":69}},"84":{"start":{"line":153,"column":34},"end":{"line":153,"column":54}},"85":{"start":{"line":154,"column":47},"end":{"line":154,"column":68}},"86":{"start":{"line":157,"column":8},"end":{"line":161,"column":9}},"87":{"start":{"line":158,"column":10},"end":{"line":158,"column":36}},"88":{"start":{"line":160,"column":10},"end":{"line":160,"column":40}},"89":{"start":{"line":165,"column":6},"end":{"line":186,"column":7}},"90":{"start":{"line":166,"column":32},"end":{"line":166,"column":69}},"91":{"start":{"line":167,"column":34},"end":{"line":168,"column":null}},"92":{"start":{"line":168,"column":22},"end":{"line":168,"column":47}},"93":{"start":{"line":172,"column":8},"end":{"line":177,"column":9}},"94":{"start":{"line":173,"column":10},"end":{"line":176,"column":13}},"95":{"start":{"line":180,"column":8},"end":{"line":185,"column":11}},"96":{"start":{"line":181,"column":10},"end":{"line":184,"column":13}},"97":{"start":{"line":188,"column":6},"end":{"line":188,"column":36}},"98":{"start":{"line":189,"column":6},"end":{"line":189,"column":51}},"99":{"start":{"line":192,"column":4},"end":{"line":192,"column":22}},"100":{"start":{"line":196,"column":25},"end":{"line":196,"column":57}},"101":{"start":{"line":200,"column":6},"end":{"line":200,"column":62}},"102":{"start":{"line":201,"column":4},"end":{"line":206,"column":5}},"103":{"start":{"line":202,"column":6},"end":{"line":204,"column":9}},"104":{"start":{"line":205,"column":6},"end":{"line":205,"column":28}},"105":{"start":{"line":209,"column":41},"end":{"line":209,"column":43}},"106":{"start":{"line":210,"column":23},"end":{"line":210,"column":46}},"107":{"start":{"line":211,"column":25},"end":{"line":213,"column":null}},"108":{"start":{"line":215,"column":20},"end":{"line":215,"column":67}},"109":{"start":{"line":217,"column":4},"end":{"line":228,"column":5}},"110":{"start":{"line":218,"column":22},"end":{"line":218,"column":30}},"111":{"start":{"line":219,"column":19},"end":{"line":219,"column":34}},"112":{"start":{"line":220,"column":6},"end":{"line":227,"column":7}},"113":{"start":{"line":221,"column":8},"end":{"line":225,"column":11}},"114":{"start":{"line":226,"column":8},"end":{"line":226,"column":41}},"115":{"start":{"line":230,"column":36},"end":{"line":230,"column":74}},"116":{"start":{"line":231,"column":4},"end":{"line":231,"column":61}},"117":{"start":{"line":235,"column":4},"end":{"line":235,"column":39}},"118":{"start":{"line":239,"column":4},"end":{"line":239,"column":35}},"119":{"start":{"line":240,"column":4},"end":{"line":240,"column":28}},"120":{"start":{"line":244,"column":4},"end":{"line":244,"column":37}},"121":{"start":{"line":248,"column":4},"end":{"line":248,"column":35}},"122":{"start":{"line":252,"column":4},"end":{"line":252,"column":36}},"123":{"start":{"line":256,"column":4},"end":{"line":256,"column":32}},"124":{"start":{"line":260,"column":4},"end":{"line":260,"column":33}},"125":{"start":{"line":264,"column":24},"end":{"line":264,"column":62}},"126":{"start":{"line":265,"column":4},"end":{"line":265,"column":69}},"127":{"start":{"line":265,"column":22},"end":{"line":265,"column":69}},"128":{"start":{"line":267,"column":28},"end":{"line":267,"column":39}},"129":{"start":{"line":269,"column":4},"end":{"line":271,"column":5}},"130":{"start":{"line":270,"column":6},"end":{"line":270,"column":117}},"131":{"start":{"line":273,"column":4},"end":{"line":284,"column":5}},"132":{"start":{"line":274,"column":21},"end":{"line":278,"column":null}},"133":{"start":{"line":280,"column":6},"end":{"line":282,"column":7}},"134":{"start":{"line":281,"column":8},"end":{"line":281,"column":27}},"135":{"start":{"line":283,"column":6},"end":{"line":283,"column":129}},"136":{"start":{"line":286,"column":4},"end":{"line":288,"column":5}},"137":{"start":{"line":287,"column":6},"end":{"line":287,"column":133}},"138":{"start":{"line":290,"column":4},"end":{"line":292,"column":5}},"139":{"start":{"line":291,"column":6},"end":{"line":291,"column":46}},"140":{"start":{"line":294,"column":4},"end":{"line":300,"column":5}},"141":{"start":{"line":295,"column":19},"end":{"line":295,"column":49}},"142":{"start":{"line":296,"column":6},"end":{"line":298,"column":7}},"143":{"start":{"line":297,"column":8},"end":{"line":297,"column":37}},"144":{"start":{"line":299,"column":6},"end":{"line":299,"column":54}},"145":{"start":{"line":302,"column":4},"end":{"line":304,"column":5}},"146":{"start":{"line":303,"column":6},"end":{"line":303,"column":67}},"147":{"start":{"line":306,"column":4},"end":{"line":306,"column":134}},"148":{"start":{"line":314,"column":4},"end":{"line":442,"column":5}},"149":{"start":{"line":315,"column":6},"end":{"line":315,"column":32}},"150":{"start":{"line":317,"column":28},"end":{"line":317,"column":55}},"151":{"start":{"line":319,"column":62},"end":{"line":319,"column":64}},"152":{"start":{"line":320,"column":26},"end":{"line":320,"column":31}},"153":{"start":{"line":321,"column":21},"end":{"line":321,"column":26}},"154":{"start":{"line":323,"column":6},"end":{"line":404,"column":7}},"155":{"start":{"line":324,"column":8},"end":{"line":324,"column":28}},"156":{"start":{"line":324,"column":22},"end":{"line":324,"column":28}},"157":{"start":{"line":326,"column":8},"end":{"line":403,"column":9}},"158":{"start":{"line":327,"column":33},"end":{"line":333,"column":null}},"159":{"start":{"line":328,"column":12},"end":{"line":333,"column":17}},"160":{"start":{"line":330,"column":33},"end":{"line":333,"column":16}},"161":{"start":{"line":335,"column":31},"end":{"line":335,"column":64}},"162":{"start":{"line":336,"column":10},"end":{"line":336,"column":40}},"163":{"start":{"line":339,"column":10},"end":{"line":348,"column":11}},"164":{"start":{"line":340,"column":12},"end":{"line":347,"column":13}},"165":{"start":{"line":341,"column":14},"end":{"line":344,"column":17}},"166":{"start":{"line":345,"column":14},"end":{"line":345,"column":30}},"167":{"start":{"line":346,"column":14},"end":{"line":346,"column":20}},"168":{"start":{"line":350,"column":10},"end":{"line":366,"column":11}},"169":{"start":{"line":351,"column":12},"end":{"line":365,"column":13}},"170":{"start":{"line":352,"column":14},"end":{"line":364,"column":15}},"171":{"start":{"line":353,"column":34},"end":{"line":353,"column":71}},"172":{"start":{"line":354,"column":16},"end":{"line":363,"column":17}},"173":{"start":{"line":355,"column":18},"end":{"line":355,"column":58}},"174":{"start":{"line":356,"column":18},"end":{"line":362,"column":20}},"175":{"start":{"line":368,"column":10},"end":{"line":402,"column":11}},"176":{"start":{"line":369,"column":27},"end":{"line":370,"column":null}},"177":{"start":{"line":373,"column":12},"end":{"line":376,"column":15}},"178":{"start":{"line":378,"column":12},"end":{"line":378,"column":61}},"179":{"start":{"line":380,"column":12},"end":{"line":387,"column":13}},"180":{"start":{"line":381,"column":14},"end":{"line":384,"column":17}},"181":{"start":{"line":385,"column":14},"end":{"line":385,"column":30}},"182":{"start":{"line":386,"column":14},"end":{"line":386,"column":20}},"183":{"start":{"line":389,"column":12},"end":{"line":401,"column":13}},"184":{"start":{"line":390,"column":32},"end":{"line":390,"column":62}},"185":{"start":{"line":391,"column":14},"end":{"line":400,"column":15}},"186":{"start":{"line":392,"column":16},"end":{"line":392,"column":56}},"187":{"start":{"line":393,"column":16},"end":{"line":399,"column":18}},"188":{"start":{"line":406,"column":28},"end":{"line":407,"column":null}},"189":{"start":{"line":407,"column":32},"end":{"line":407,"column":79}},"190":{"start":{"line":410,"column":6},"end":{"line":415,"column":7}},"191":{"start":{"line":411,"column":8},"end":{"line":413,"column":11}},"192":{"start":{"line":414,"column":8},"end":{"line":414,"column":51}},"193":{"start":{"line":417,"column":28},"end":{"line":419,"column":21}},"194":{"start":{"line":418,"column":37},"end":{"line":418,"column":76}},"195":{"start":{"line":423,"column":6},"end":{"line":433,"column":7}},"196":{"start":{"line":424,"column":8},"end":{"line":424,"column":60}},"197":{"start":{"line":425,"column":8},"end":{"line":432,"column":10}},"198":{"start":{"line":435,"column":6},"end":{"line":435,"column":67}},"199":{"start":{"line":437,"column":6},"end":{"line":437,"column":63}},"200":{"start":{"line":438,"column":6},"end":{"line":440,"column":9}},"201":{"start":{"line":441,"column":6},"end":{"line":441,"column":29}},"202":{"start":{"line":23,"column":13},"end":{"line":23,"column":26}},"203":{"start":{"line":23,"column":13},"end":{"line":444,"column":null}}},"fnMap":{"0":{"name":"(anonymous_3)","decl":{"start":{"line":30,"column":2},"end":{"line":30,"column":null}},"loc":{"start":{"line":34,"column":52},"end":{"line":35,"column":6}}},"1":{"name":"(anonymous_4)","decl":{"start":{"line":37,"column":2},"end":{"line":37,"column":7}},"loc":{"start":{"line":37,"column":7},"end":{"line":42,"column":3}}},"2":{"name":"(anonymous_5)","decl":{"start":{"line":44,"column":2},"end":{"line":44,"column":19}},"loc":{"start":{"line":44,"column":32},"end":{"line":46,"column":3}}},"3":{"name":"(anonymous_6)","decl":{"start":{"line":48,"column":10},"end":{"line":48,"column":33}},"loc":{"start":{"line":48,"column":33},"end":{"line":53,"column":3}}},"4":{"name":"(anonymous_7)","decl":{"start":{"line":49,"column":42},"end":{"line":49,"column":43}},"loc":{"start":{"line":49,"column":50},"end":{"line":52,"column":5}}},"5":{"name":"(anonymous_8)","decl":{"start":{"line":51,"column":40},"end":{"line":51,"column":41}},"loc":{"start":{"line":51,"column":51},"end":{"line":51,"column":72}}},"6":{"name":"(anonymous_9)","decl":{"start":{"line":55,"column":2},"end":{"line":55,"column":17}},"loc":{"start":{"line":55,"column":29},"end":{"line":66,"column":3}}},"7":{"name":"(anonymous_10)","decl":{"start":{"line":68,"column":2},"end":{"line":68,"column":12}},"loc":{"start":{"line":68,"column":24},"end":{"line":76,"column":3}}},"8":{"name":"(anonymous_11)","decl":{"start":{"line":78,"column":10},"end":{"line":78,"column":34}},"loc":{"start":{"line":78,"column":56},"end":{"line":97,"column":3}}},"9":{"name":"(anonymous_12)","decl":{"start":{"line":99,"column":10},"end":{"line":99,"column":34}},"loc":{"start":{"line":100,"column":32},"end":{"line":129,"column":3}}},"10":{"name":"(anonymous_13)","decl":{"start":{"line":102,"column":23},"end":{"line":102,"column":24}},"loc":{"start":{"line":102,"column":34},"end":{"line":128,"column":5}}},"11":{"name":"(anonymous_14)","decl":{"start":{"line":107,"column":43},"end":{"line":107,"column":44}},"loc":{"start":{"line":107,"column":49},"end":{"line":112,"column":9}}},"12":{"name":"(anonymous_15)","decl":{"start":{"line":113,"column":42},"end":{"line":113,"column":43}},"loc":{"start":{"line":113,"column":49},"end":{"line":113,"column":59}}},"13":{"name":"(anonymous_16)","decl":{"start":{"line":118,"column":44},"end":{"line":118,"column":45}},"loc":{"start":{"line":118,"column":50},"end":{"line":123,"column":9}}},"14":{"name":"(anonymous_17)","decl":{"start":{"line":124,"column":43},"end":{"line":124,"column":44}},"loc":{"start":{"line":124,"column":50},"end":{"line":124,"column":60}}},"15":{"name":"(anonymous_18)","decl":{"start":{"line":131,"column":10},"end":{"line":131,"column":29}},"loc":{"start":{"line":132,"column":32},"end":{"line":193,"column":3}}},"16":{"name":"(anonymous_19)","decl":{"start":{"line":138,"column":29},"end":{"line":138,"column":30}},"loc":{"start":{"line":138,"column":59},"end":{"line":141,"column":5}}},"17":{"name":"(anonymous_20)","decl":{"start":{"line":148,"column":33},"end":{"line":148,"column":34}},"loc":{"start":{"line":148,"column":44},"end":{"line":162,"column":7}}},"18":{"name":"(anonymous_21)","decl":{"start":{"line":152,"column":12},"end":{"line":152,"column":13}},"loc":{"start":{"line":153,"column":14},"end":{"line":154,"column":69}}},"19":{"name":"(anonymous_22)","decl":{"start":{"line":153,"column":27},"end":{"line":153,"column":28}},"loc":{"start":{"line":153,"column":34},"end":{"line":153,"column":54}}},"20":{"name":"(anonymous_23)","decl":{"start":{"line":154,"column":39},"end":{"line":154,"column":40}},"loc":{"start":{"line":154,"column":47},"end":{"line":154,"column":68}}},"21":{"name":"(anonymous_24)","decl":{"start":{"line":168,"column":10},"end":{"line":168,"column":11}},"loc":{"start":{"line":168,"column":22},"end":{"line":168,"column":47}}},"22":{"name":"(anonymous_25)","decl":{"start":{"line":180,"column":34},"end":{"line":180,"column":35}},"loc":{"start":{"line":180,"column":45},"end":{"line":185,"column":9}}},"23":{"name":"(anonymous_26)","decl":{"start":{"line":195,"column":2},"end":{"line":195,"column":18}},"loc":{"start":{"line":195,"column":31},"end":{"line":232,"column":3}}},"24":{"name":"(anonymous_27)","decl":{"start":{"line":234,"column":2},"end":{"line":234,"column":16}},"loc":{"start":{"line":234,"column":30},"end":{"line":236,"column":3}}},"25":{"name":"(anonymous_28)","decl":{"start":{"line":238,"column":2},"end":{"line":238,"column":13}},"loc":{"start":{"line":238,"column":13},"end":{"line":241,"column":3}}},"26":{"name":"(anonymous_29)","decl":{"start":{"line":243,"column":2},"end":{"line":243,"column":6}},"loc":{"start":{"line":243,"column":12},"end":{"line":245,"column":3}}},"27":{"name":"(anonymous_30)","decl":{"start":{"line":247,"column":2},"end":{"line":247,"column":6}},"loc":{"start":{"line":247,"column":18},"end":{"line":249,"column":3}}},"28":{"name":"(anonymous_31)","decl":{"start":{"line":251,"column":2},"end":{"line":251,"column":6}},"loc":{"start":{"line":251,"column":33},"end":{"line":253,"column":3}}},"29":{"name":"(anonymous_32)","decl":{"start":{"line":255,"column":2},"end":{"line":255,"column":6}},"loc":{"start":{"line":255,"column":16},"end":{"line":257,"column":3}}},"30":{"name":"(anonymous_33)","decl":{"start":{"line":259,"column":2},"end":{"line":259,"column":6}},"loc":{"start":{"line":259,"column":31},"end":{"line":261,"column":3}}},"31":{"name":"(anonymous_34)","decl":{"start":{"line":263,"column":10},"end":{"line":263,"column":28}},"loc":{"start":{"line":263,"column":56},"end":{"line":307,"column":3}}},"32":{"name":"(anonymous_35)","decl":{"start":{"line":309,"column":2},"end":{"line":309,"column":7}},"loc":{"start":{"line":312,"column":53},"end":{"line":443,"column":3}}},"33":{"name":"(anonymous_36)","decl":{"start":{"line":327,"column":51},"end":{"line":327,"column":52}},"loc":{"start":{"line":328,"column":12},"end":{"line":333,"column":17}}},"34":{"name":"(anonymous_37)","decl":{"start":{"line":330,"column":20},"end":{"line":330,"column":21}},"loc":{"start":{"line":330,"column":33},"end":{"line":333,"column":16}}},"35":{"name":"(anonymous_38)","decl":{"start":{"line":407,"column":8},"end":{"line":407,"column":9}},"loc":{"start":{"line":407,"column":32},"end":{"line":407,"column":79}}},"36":{"name":"(anonymous_39)","decl":{"start":{"line":418,"column":13},"end":{"line":418,"column":14}},"loc":{"start":{"line":418,"column":37},"end":{"line":418,"column":76}}}},"branchMap":{"0":{"loc":{"start":{"line":59,"column":4},"end":{"line":59,"column":34}},"type":"if","locations":[{"start":{"line":59,"column":4},"end":{"line":59,"column":34}}]},"1":{"loc":{"start":{"line":63,"column":4},"end":{"line":63,"column":28}},"type":"if","locations":[{"start":{"line":63,"column":4},"end":{"line":63,"column":28}}]},"2":{"loc":{"start":{"line":70,"column":4},"end":{"line":70,"column":34}},"type":"if","locations":[{"start":{"line":70,"column":4},"end":{"line":70,"column":34}}]},"3":{"loc":{"start":{"line":73,"column":4},"end":{"line":73,"column":31}},"type":"if","locations":[{"start":{"line":73,"column":4},"end":{"line":73,"column":31}}]},"4":{"loc":{"start":{"line":81,"column":4},"end":{"line":83,"column":5}},"type":"if","locations":[{"start":{"line":81,"column":4},"end":{"line":83,"column":5}}]},"5":{"loc":{"start":{"line":87,"column":4},"end":{"line":89,"column":5}},"type":"if","locations":[{"start":{"line":87,"column":4},"end":{"line":89,"column":5}}]},"6":{"loc":{"start":{"line":92,"column":4},"end":{"line":94,"column":5}},"type":"if","locations":[{"start":{"line":92,"column":4},"end":{"line":94,"column":5}}]},"7":{"loc":{"start":{"line":105,"column":6},"end":{"line":114,"column":7}},"type":"if","locations":[{"start":{"line":105,"column":6},"end":{"line":114,"column":7}}]},"8":{"loc":{"start":{"line":108,"column":10},"end":{"line":108,"column":51}},"type":"if","locations":[{"start":{"line":108,"column":10},"end":{"line":108,"column":51}}]},"9":{"loc":{"start":{"line":116,"column":6},"end":{"line":125,"column":7}},"type":"if","locations":[{"start":{"line":116,"column":6},"end":{"line":125,"column":7}}]},"10":{"loc":{"start":{"line":119,"column":10},"end":{"line":119,"column":52}},"type":"if","locations":[{"start":{"line":119,"column":10},"end":{"line":119,"column":52}}]},"11":{"loc":{"start":{"line":150,"column":10},"end":{"line":154,"column":null}},"type":"binary-expr","locations":[{"start":{"line":150,"column":10},"end":{"line":150,"column":35}},{"start":{"line":151,"column":10},"end":{"line":154,"column":null}}]},"12":{"loc":{"start":{"line":153,"column":14},"end":{"line":154,"column":69}},"type":"binary-expr","locations":[{"start":{"line":153,"column":14},"end":{"line":153,"column":76}},{"start":{"line":154,"column":14},"end":{"line":154,"column":69}}]},"13":{"loc":{"start":{"line":157,"column":8},"end":{"line":161,"column":9}},"type":"if","locations":[{"start":{"line":157,"column":8},"end":{"line":161,"column":9}},{"start":{"line":159,"column":15},"end":{"line":161,"column":9}}]},"14":{"loc":{"start":{"line":165,"column":6},"end":{"line":186,"column":7}},"type":"if","locations":[{"start":{"line":165,"column":6},"end":{"line":186,"column":7}}]},"15":{"loc":{"start":{"line":172,"column":8},"end":{"line":177,"column":9}},"type":"if","locations":[{"start":{"line":172,"column":8},"end":{"line":177,"column":9}}]},"16":{"loc":{"start":{"line":201,"column":4},"end":{"line":206,"column":5}},"type":"if","locations":[{"start":{"line":201,"column":4},"end":{"line":206,"column":5}}]},"17":{"loc":{"start":{"line":220,"column":6},"end":{"line":227,"column":7}},"type":"if","locations":[{"start":{"line":220,"column":6},"end":{"line":227,"column":7}}]},"18":{"loc":{"start":{"line":265,"column":4},"end":{"line":265,"column":69}},"type":"if","locations":[{"start":{"line":265,"column":4},"end":{"line":265,"column":69}}]},"19":{"loc":{"start":{"line":269,"column":4},"end":{"line":271,"column":5}},"type":"if","locations":[{"start":{"line":269,"column":4},"end":{"line":271,"column":5}}]},"20":{"loc":{"start":{"line":269,"column":8},"end":{"line":269,"column":58}},"type":"binary-expr","locations":[{"start":{"line":269,"column":8},"end":{"line":269,"column":40}},{"start":{"line":269,"column":44},"end":{"line":269,"column":58}}]},"21":{"loc":{"start":{"line":273,"column":4},"end":{"line":284,"column":5}},"type":"if","locations":[{"start":{"line":273,"column":4},"end":{"line":284,"column":5}}]},"22":{"loc":{"start":{"line":273,"column":8},"end":{"line":273,"column":52}},"type":"binary-expr","locations":[{"start":{"line":273,"column":8},"end":{"line":273,"column":34}},{"start":{"line":273,"column":38},"end":{"line":273,"column":52}}]},"23":{"loc":{"start":{"line":280,"column":6},"end":{"line":282,"column":7}},"type":"if","locations":[{"start":{"line":280,"column":6},"end":{"line":282,"column":7}}]},"24":{"loc":{"start":{"line":280,"column":10},"end":{"line":280,"column":76}},"type":"binary-expr","locations":[{"start":{"line":280,"column":10},"end":{"line":280,"column":41}},{"start":{"line":280,"column":45},"end":{"line":280,"column":76}}]},"25":{"loc":{"start":{"line":286,"column":4},"end":{"line":288,"column":5}},"type":"if","locations":[{"start":{"line":286,"column":4},"end":{"line":288,"column":5}}]},"26":{"loc":{"start":{"line":286,"column":8},"end":{"line":286,"column":52}},"type":"binary-expr","locations":[{"start":{"line":286,"column":8},"end":{"line":286,"column":34}},{"start":{"line":286,"column":38},"end":{"line":286,"column":52}}]},"27":{"loc":{"start":{"line":290,"column":4},"end":{"line":292,"column":5}},"type":"if","locations":[{"start":{"line":290,"column":4},"end":{"line":292,"column":5}}]},"28":{"loc":{"start":{"line":290,"column":8},"end":{"line":290,"column":51}},"type":"binary-expr","locations":[{"start":{"line":290,"column":8},"end":{"line":290,"column":33}},{"start":{"line":290,"column":37},"end":{"line":290,"column":51}}]},"29":{"loc":{"start":{"line":294,"column":4},"end":{"line":300,"column":5}},"type":"if","locations":[{"start":{"line":294,"column":4},"end":{"line":300,"column":5}}]},"30":{"loc":{"start":{"line":294,"column":8},"end":{"line":294,"column":52}},"type":"binary-expr","locations":[{"start":{"line":294,"column":8},"end":{"line":294,"column":34}},{"start":{"line":294,"column":38},"end":{"line":294,"column":52}}]},"31":{"loc":{"start":{"line":296,"column":6},"end":{"line":298,"column":7}},"type":"if","locations":[{"start":{"line":296,"column":6},"end":{"line":298,"column":7}}]},"32":{"loc":{"start":{"line":296,"column":10},"end":{"line":296,"column":42}},"type":"binary-expr","locations":[{"start":{"line":296,"column":10},"end":{"line":296,"column":26}},{"start":{"line":296,"column":30},"end":{"line":296,"column":42}}]},"33":{"loc":{"start":{"line":302,"column":4},"end":{"line":304,"column":5}},"type":"if","locations":[{"start":{"line":302,"column":4},"end":{"line":304,"column":5}}]},"34":{"loc":{"start":{"line":302,"column":8},"end":{"line":302,"column":63}},"type":"binary-expr","locations":[{"start":{"line":302,"column":8},"end":{"line":302,"column":45}},{"start":{"line":302,"column":49},"end":{"line":302,"column":63}}]},"35":{"loc":{"start":{"line":306,"column":71},"end":{"line":306,"column":131}},"type":"binary-expr","locations":[{"start":{"line":306,"column":71},"end":{"line":306,"column":85}},{"start":{"line":306,"column":89},"end":{"line":306,"column":131}}]},"36":{"loc":{"start":{"line":324,"column":8},"end":{"line":324,"column":28}},"type":"if","locations":[{"start":{"line":324,"column":8},"end":{"line":324,"column":28}}]},"37":{"loc":{"start":{"line":326,"column":8},"end":{"line":403,"column":9}},"type":"if","locations":[{"start":{"line":326,"column":8},"end":{"line":403,"column":9}},{"start":{"line":367,"column":15},"end":{"line":403,"column":9}}]},"38":{"loc":{"start":{"line":340,"column":12},"end":{"line":347,"column":13}},"type":"if","locations":[{"start":{"line":340,"column":12},"end":{"line":347,"column":13}}]},"39":{"loc":{"start":{"line":350,"column":10},"end":{"line":366,"column":11}},"type":"if","locations":[{"start":{"line":350,"column":10},"end":{"line":366,"column":11}}]},"40":{"loc":{"start":{"line":352,"column":14},"end":{"line":364,"column":15}},"type":"if","locations":[{"start":{"line":352,"column":14},"end":{"line":364,"column":15}}]},"41":{"loc":{"start":{"line":354,"column":16},"end":{"line":363,"column":17}},"type":"if","locations":[{"start":{"line":354,"column":16},"end":{"line":363,"column":17}}]},"42":{"loc":{"start":{"line":380,"column":12},"end":{"line":387,"column":13}},"type":"if","locations":[{"start":{"line":380,"column":12},"end":{"line":387,"column":13}}]},"43":{"loc":{"start":{"line":389,"column":12},"end":{"line":401,"column":13}},"type":"if","locations":[{"start":{"line":389,"column":12},"end":{"line":401,"column":13}}]},"44":{"loc":{"start":{"line":391,"column":14},"end":{"line":400,"column":15}},"type":"if","locations":[{"start":{"line":391,"column":14},"end":{"line":400,"column":15}}]},"45":{"loc":{"start":{"line":407,"column":32},"end":{"line":407,"column":79}},"type":"binary-expr","locations":[{"start":{"line":407,"column":32},"end":{"line":407,"column":61}},{"start":{"line":407,"column":65},"end":{"line":407,"column":79}}]},"46":{"loc":{"start":{"line":410,"column":6},"end":{"line":415,"column":7}},"type":"if","locations":[{"start":{"line":410,"column":6},"end":{"line":415,"column":7}}]},"47":{"loc":{"start":{"line":423,"column":6},"end":{"line":433,"column":7}},"type":"if","locations":[{"start":{"line":423,"column":6},"end":{"line":433,"column":7}}]}},"s":{"0":4,"1":4,"2":4,"3":4,"4":4,"5":4,"6":4,"7":4,"8":4,"9":69,"10":69,"11":69,"12":69,"13":69,"14":69,"15":69,"16":69,"17":69,"18":38,"19":38,"20":38,"21":38,"22":1,"23":3,"24":36,"25":36,"26":42,"27":3,"28":3,"29":3,"30":1,"31":2,"32":2,"33":2,"34":1,"35":1,"36":3,"37":3,"38":1,"39":2,"40":2,"41":1,"42":1,"43":6,"44":6,"45":0,"46":6,"47":6,"48":6,"49":0,"50":0,"51":0,"52":13,"53":17,"54":17,"55":6,"56":11,"57":8,"58":3,"59":3,"60":3,"61":6,"62":0,"63":17,"64":0,"65":0,"66":0,"67":0,"68":0,"69":0,"70":0,"71":0,"72":17,"73":13,"74":13,"75":13,"76":34,"77":34,"78":13,"79":12,"80":12,"81":12,"82":17,"83":0,"84":0,"85":0,"86":17,"87":17,"88":0,"89":12,"90":12,"91":12,"92":17,"93":12,"94":8,"95":12,"96":7,"97":12,"98":12,"99":13,"100":14,"101":14,"102":14,"103":1,"104":1,"105":13,"106":13,"107":13,"108":13,"109":13,"110":18,"111":18,"112":18,"113":17,"114":17,"115":13,"116":13,"117":2,"118":0,"119":0,"120":2,"121":1,"122":1,"123":1,"124":1,"125":8,"126":8,"127":0,"128":8,"129":8,"130":0,"131":8,"132":3,"133":3,"134":0,"135":3,"136":5,"137":1,"138":4,"139":0,"140":4,"141":0,"142":0,"143":0,"144":0,"145":4,"146":1,"147":3,"148":7,"149":7,"150":7,"151":7,"152":7,"153":7,"154":7,"155":8,"156":0,"157":8,"158":4,"159":5,"160":5,"161":4,"162":4,"163":4,"164":5,"165":0,"166":0,"167":0,"168":4,"169":4,"170":5,"171":0,"172":0,"173":0,"174":0,"175":4,"176":4,"177":4,"178":4,"179":4,"180":1,"181":1,"182":1,"183":3,"184":2,"185":2,"186":1,"187":1,"188":7,"189":9,"190":7,"191":1,"192":1,"193":6,"194":8,"195":6,"196":5,"197":5,"198":6,"199":0,"200":0,"201":0,"202":4,"203":4},"f":{"0":69,"1":38,"2":1,"3":3,"4":36,"5":42,"6":3,"7":3,"8":6,"9":13,"10":17,"11":11,"12":0,"13":0,"14":0,"15":13,"16":34,"17":17,"18":0,"19":0,"20":0,"21":17,"22":7,"23":14,"24":2,"25":0,"26":2,"27":1,"28":1,"29":1,"30":1,"31":8,"32":7,"33":5,"34":5,"35":9,"36":8},"b":{"0":[1],"1":[1],"2":[1],"3":[1],"4":[0],"5":[6],"6":[0],"7":[6],"8":[8],"9":[0],"10":[0],"11":[17,0],"12":[0,0],"13":[17,0],"14":[12],"15":[8],"16":[1],"17":[17],"18":[0],"19":[0],"20":[8,0],"21":[3],"22":[8,3],"23":[0],"24":[3,3],"25":[1],"26":[5,1],"27":[0],"28":[4,0],"29":[0],"30":[4,0],"31":[0],"32":[0,0],"33":[1],"34":[4,1],"35":[3,2],"36":[0],"37":[4,4],"38":[0],"39":[4],"40":[0],"41":[0],"42":[1],"43":[2],"44":[1],"45":[9,1],"46":[1],"47":[5]}} -,"/home/joao/projects/cracked-dev-cli/src/services/LLM/actions/CommandAction.ts": {"path":"/home/joao/projects/cracked-dev-cli/src/services/LLM/actions/CommandAction.ts","statementMap":{"0":{"start":{"line":2,"column":0},"end":{"line":2,"column":60}},"1":{"start":{"line":3,"column":0},"end":{"line":3,"column":59}},"2":{"start":{"line":4,"column":0},"end":{"line":4,"column":26}},"3":{"start":{"line":5,"column":0},"end":{"line":5,"column":64}},"4":{"start":{"line":6,"column":0},"end":{"line":6,"column":42}},"5":{"start":{"line":7,"column":0},"end":{"line":7,"column":60}},"6":{"start":{"line":8,"column":0},"end":{"line":8,"column":90}},"7":{"start":{"line":9,"column":0},"end":{"line":9,"column":47}},"8":{"start":{"line":17,"column":7},"end":{"line":168,"column":null}},"9":{"start":{"line":23,"column":4},"end":{"line":23,"column":31}},"10":{"start":{"line":19,"column":14},"end":{"line":19,"column":35}},"11":{"start":{"line":20,"column":12},"end":{"line":20,"column":25}},"12":{"start":{"line":21,"column":12},"end":{"line":21,"column":26}},"13":{"start":{"line":27,"column":4},"end":{"line":27,"column":21}},"14":{"start":{"line":31,"column":16},"end":{"line":31,"column":39}},"15":{"start":{"line":32,"column":18},"end":{"line":32,"column":76}},"16":{"start":{"line":33,"column":4},"end":{"line":36,"column":5}},"17":{"start":{"line":34,"column":6},"end":{"line":34,"column":60}},"18":{"start":{"line":35,"column":6},"end":{"line":35,"column":29}},"19":{"start":{"line":39,"column":20},"end":{"line":42,"column":13}},"20":{"start":{"line":44,"column":4},"end":{"line":44,"column":47}},"21":{"start":{"line":45,"column":4},"end":{"line":45,"column":23}},"22":{"start":{"line":49,"column":24},"end":{"line":49,"column":47}},"23":{"start":{"line":51,"column":4},"end":{"line":53,"column":5}},"24":{"start":{"line":52,"column":6},"end":{"line":52,"column":43}},"25":{"start":{"line":55,"column":4},"end":{"line":55,"column":16}},"26":{"start":{"line":61,"column":4},"end":{"line":68,"column":5}},"27":{"start":{"line":62,"column":26},"end":{"line":62,"column":49}},"28":{"start":{"line":63,"column":6},"end":{"line":63,"column":52}},"29":{"start":{"line":64,"column":6},"end":{"line":64,"column":42}},"30":{"start":{"line":67,"column":6},"end":{"line":67,"column":64}},"31":{"start":{"line":72,"column":4},"end":{"line":75,"column":6}},"32":{"start":{"line":82,"column":4},"end":{"line":166,"column":7}},"33":{"start":{"line":83,"column":29},"end":{"line":83,"column":47}},"34":{"start":{"line":84,"column":20},"end":{"line":84,"column":65}},"35":{"start":{"line":86,"column":23},"end":{"line":86,"column":25}},"36":{"start":{"line":87,"column":23},"end":{"line":87,"column":25}},"37":{"start":{"line":88,"column":23},"end":{"line":88,"column":28}},"38":{"start":{"line":91,"column":25},"end":{"line":91,"column":27}},"39":{"start":{"line":92,"column":25},"end":{"line":92,"column":27}},"40":{"start":{"line":95,"column":6},"end":{"line":106,"column":9}},"41":{"start":{"line":96,"column":22},"end":{"line":96,"column":37}},"42":{"start":{"line":97,"column":8},"end":{"line":97,"column":30}},"43":{"start":{"line":98,"column":30},"end":{"line":98,"column":67}},"44":{"start":{"line":99,"column":8},"end":{"line":99,"column":36}},"45":{"start":{"line":100,"column":8},"end":{"line":100,"column":26}},"46":{"start":{"line":103,"column":8},"end":{"line":105,"column":9}},"47":{"start":{"line":104,"column":10},"end":{"line":104,"column":51}},"48":{"start":{"line":109,"column":6},"end":{"line":120,"column":9}},"49":{"start":{"line":110,"column":22},"end":{"line":110,"column":37}},"50":{"start":{"line":111,"column":8},"end":{"line":111,"column":30}},"51":{"start":{"line":112,"column":30},"end":{"line":112,"column":67}},"52":{"start":{"line":113,"column":8},"end":{"line":113,"column":36}},"53":{"start":{"line":114,"column":8},"end":{"line":114,"column":26}},"54":{"start":{"line":117,"column":8},"end":{"line":119,"column":9}},"55":{"start":{"line":118,"column":10},"end":{"line":118,"column":49}},"56":{"start":{"line":122,"column":33},"end":{"line":150,"column":7}},"57":{"start":{"line":123,"column":8},"end":{"line":149,"column":9}},"58":{"start":{"line":124,"column":10},"end":{"line":124,"column":28}},"59":{"start":{"line":126,"column":10},"end":{"line":128,"column":11}},"60":{"start":{"line":127,"column":12},"end":{"line":127,"column":64}},"61":{"start":{"line":129,"column":10},"end":{"line":131,"column":11}},"62":{"start":{"line":130,"column":12},"end":{"line":130,"column":64}},"63":{"start":{"line":133,"column":24},"end":{"line":134,"column":148}},"64":{"start":{"line":137,"column":25},"end":{"line":137,"column":48}},"65":{"start":{"line":139,"column":12},"end":{"line":140,"column":41}},"66":{"start":{"line":142,"column":10},"end":{"line":146,"column":13}},"67":{"start":{"line":148,"column":10},"end":{"line":148,"column":60}},"68":{"start":{"line":152,"column":6},"end":{"line":154,"column":9}},"69":{"start":{"line":153,"column":8},"end":{"line":153,"column":33}},"70":{"start":{"line":156,"column":6},"end":{"line":165,"column":9}},"71":{"start":{"line":157,"column":8},"end":{"line":160,"column":11}},"72":{"start":{"line":162,"column":8},"end":{"line":164,"column":10}},"73":{"start":{"line":17,"column":13},"end":{"line":17,"column":26}},"74":{"start":{"line":17,"column":13},"end":{"line":168,"column":null}}},"fnMap":{"0":{"name":"(anonymous_3)","decl":{"start":{"line":18,"column":2},"end":{"line":18,"column":null}},"loc":{"start":{"line":21,"column":38},"end":{"line":24,"column":3}}},"1":{"name":"(anonymous_4)","decl":{"start":{"line":26,"column":12},"end":{"line":26,"column":24}},"loc":{"start":{"line":26,"column":24},"end":{"line":28,"column":3}}},"2":{"name":"(anonymous_5)","decl":{"start":{"line":30,"column":12},"end":{"line":30,"column":23}},"loc":{"start":{"line":30,"column":39},"end":{"line":46,"column":3}}},"3":{"name":"(anonymous_6)","decl":{"start":{"line":48,"column":12},"end":{"line":48,"column":26}},"loc":{"start":{"line":48,"column":54},"end":{"line":56,"column":3}}},"4":{"name":"(anonymous_7)","decl":{"start":{"line":58,"column":12},"end":{"line":58,"column":17}},"loc":{"start":{"line":59,"column":31},"end":{"line":69,"column":3}}},"5":{"name":"(anonymous_8)","decl":{"start":{"line":71,"column":10},"end":{"line":71,"column":27}},"loc":{"start":{"line":71,"column":27},"end":{"line":76,"column":3}}},"6":{"name":"(anonymous_9)","decl":{"start":{"line":78,"column":10},"end":{"line":78,"column":15}},"loc":{"start":{"line":80,"column":38},"end":{"line":167,"column":3}}},"7":{"name":"(anonymous_10)","decl":{"start":{"line":82,"column":23},"end":{"line":82,"column":24}},"loc":{"start":{"line":82,"column":35},"end":{"line":166,"column":5}}},"8":{"name":"(anonymous_11)","decl":{"start":{"line":95,"column":30},"end":{"line":95,"column":31}},"loc":{"start":{"line":95,"column":47},"end":{"line":106,"column":7}}},"9":{"name":"(anonymous_12)","decl":{"start":{"line":109,"column":30},"end":{"line":109,"column":31}},"loc":{"start":{"line":109,"column":47},"end":{"line":120,"column":7}}},"10":{"name":"(anonymous_13)","decl":{"start":{"line":122,"column":33},"end":{"line":122,"column":34}},"loc":{"start":{"line":122,"column":68},"end":{"line":150,"column":7}}},"11":{"name":"(anonymous_14)","decl":{"start":{"line":152,"column":24},"end":{"line":152,"column":25}},"loc":{"start":{"line":152,"column":33},"end":{"line":154,"column":7}}},"12":{"name":"(anonymous_15)","decl":{"start":{"line":156,"column":24},"end":{"line":156,"column":25}},"loc":{"start":{"line":156,"column":34},"end":{"line":165,"column":7}}}},"branchMap":{"0":{"loc":{"start":{"line":33,"column":4},"end":{"line":36,"column":5}},"type":"if","locations":[{"start":{"line":33,"column":4},"end":{"line":36,"column":5}}]},"1":{"loc":{"start":{"line":51,"column":4},"end":{"line":53,"column":5}},"type":"if","locations":[{"start":{"line":51,"column":4},"end":{"line":53,"column":5}}]},"2":{"loc":{"start":{"line":51,"column":8},"end":{"line":51,"column":47}},"type":"binary-expr","locations":[{"start":{"line":51,"column":8},"end":{"line":51,"column":16}},{"start":{"line":51,"column":20},"end":{"line":51,"column":47}}]},"3":{"loc":{"start":{"line":73,"column":6},"end":{"line":74,"column":46}},"type":"binary-expr","locations":[{"start":{"line":73,"column":6},"end":{"line":73,"column":37}},{"start":{"line":74,"column":6},"end":{"line":74,"column":46}}]},"4":{"loc":{"start":{"line":103,"column":8},"end":{"line":105,"column":9}},"type":"if","locations":[{"start":{"line":103,"column":8},"end":{"line":105,"column":9}}]},"5":{"loc":{"start":{"line":117,"column":8},"end":{"line":119,"column":9}},"type":"if","locations":[{"start":{"line":117,"column":8},"end":{"line":119,"column":9}}]},"6":{"loc":{"start":{"line":122,"column":34},"end":{"line":122,"column":64}},"type":"default-arg","locations":[{"start":{"line":122,"column":60},"end":{"line":122,"column":64}}]},"7":{"loc":{"start":{"line":123,"column":8},"end":{"line":149,"column":9}},"type":"if","locations":[{"start":{"line":123,"column":8},"end":{"line":149,"column":9}}]},"8":{"loc":{"start":{"line":126,"column":10},"end":{"line":128,"column":11}},"type":"if","locations":[{"start":{"line":126,"column":10},"end":{"line":128,"column":11}}]},"9":{"loc":{"start":{"line":129,"column":10},"end":{"line":131,"column":11}},"type":"if","locations":[{"start":{"line":129,"column":10},"end":{"line":131,"column":11}}]},"10":{"loc":{"start":{"line":139,"column":13},"end":{"line":139,"column":69}},"type":"binary-expr","locations":[{"start":{"line":139,"column":13},"end":{"line":139,"column":19}},{"start":{"line":139,"column":23},"end":{"line":139,"column":69}}]},"11":{"loc":{"start":{"line":140,"column":13},"end":{"line":140,"column":40}},"type":"cond-expr","locations":[{"start":{"line":140,"column":30},"end":{"line":140,"column":35}},{"start":{"line":140,"column":38},"end":{"line":140,"column":40}}]}},"s":{"0":16,"1":16,"2":16,"3":16,"4":16,"5":16,"6":16,"7":16,"8":16,"9":9,"10":9,"11":9,"12":9,"13":44,"14":9,"15":9,"16":9,"17":1,"18":1,"19":8,"20":8,"21":8,"22":9,"23":9,"24":1,"25":8,"26":8,"27":8,"28":8,"29":8,"30":0,"31":11,"32":8,"33":8,"34":8,"35":8,"36":8,"37":8,"38":8,"39":8,"40":8,"41":9,"42":9,"43":9,"44":9,"45":9,"46":9,"47":0,"48":8,"49":2,"50":2,"51":2,"52":2,"53":2,"54":2,"55":0,"56":8,"57":8,"58":8,"59":8,"60":0,"61":8,"62":0,"63":8,"64":8,"65":8,"66":8,"67":8,"68":8,"69":8,"70":8,"71":0,"72":0,"73":16,"74":16},"f":{"0":9,"1":44,"2":9,"3":9,"4":8,"5":11,"6":8,"7":8,"8":9,"9":2,"10":8,"11":8,"12":0},"b":{"0":[1],"1":[1],"2":[9,8],"3":[11,0],"4":[0],"5":[0],"6":[0],"7":[8],"8":[0],"9":[0],"10":[8,1],"11":[1,7]}} -,"/home/joao/projects/cracked-dev-cli/src/services/LLM/actions/CopyFileAction.ts": {"path":"/home/joao/projects/cracked-dev-cli/src/services/LLM/actions/CopyFileAction.ts","statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":73}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":42}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":60}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":92}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":47}},"5":{"start":{"line":15,"column":7},"end":{"line":73,"column":null}},"6":{"start":{"line":20,"column":4},"end":{"line":20,"column":31}},"7":{"start":{"line":17,"column":14},"end":{"line":17,"column":35}},"8":{"start":{"line":18,"column":12},"end":{"line":18,"column":28}},"9":{"start":{"line":24,"column":4},"end":{"line":24,"column":21}},"10":{"start":{"line":28,"column":46},"end":{"line":28,"column":70}},"11":{"start":{"line":30,"column":4},"end":{"line":32,"column":5}},"12":{"start":{"line":31,"column":6},"end":{"line":31,"column":39}},"13":{"start":{"line":33,"column":4},"end":{"line":35,"column":5}},"14":{"start":{"line":34,"column":6},"end":{"line":34,"column":44}},"15":{"start":{"line":37,"column":4},"end":{"line":37,"column":16}},"16":{"start":{"line":42,"column":27},"end":{"line":42,"column":78}},"17":{"start":{"line":43,"column":4},"end":{"line":45,"column":5}},"18":{"start":{"line":44,"column":6},"end":{"line":44,"column":52}},"19":{"start":{"line":47,"column":4},"end":{"line":47,"column":34}},"20":{"start":{"line":53,"column":4},"end":{"line":71,"column":5}},"21":{"start":{"line":54,"column":48},"end":{"line":54,"column":72}},"22":{"start":{"line":56,"column":6},"end":{"line":56,"column":50}},"23":{"start":{"line":57,"column":6},"end":{"line":57,"column":60}},"24":{"start":{"line":59,"column":21},"end":{"line":61,"column":null}},"25":{"start":{"line":64,"column":6},"end":{"line":66,"column":7}},"26":{"start":{"line":65,"column":8},"end":{"line":65,"column":53}},"27":{"start":{"line":68,"column":6},"end":{"line":68,"column":51}},"28":{"start":{"line":70,"column":6},"end":{"line":70,"column":52}},"29":{"start":{"line":15,"column":13},"end":{"line":15,"column":27}},"30":{"start":{"line":15,"column":13},"end":{"line":73,"column":null}}},"fnMap":{"0":{"name":"(anonymous_2)","decl":{"start":{"line":16,"column":2},"end":{"line":16,"column":null}},"loc":{"start":{"line":18,"column":42},"end":{"line":21,"column":3}}},"1":{"name":"(anonymous_3)","decl":{"start":{"line":23,"column":12},"end":{"line":23,"column":24}},"loc":{"start":{"line":23,"column":24},"end":{"line":25,"column":3}}},"2":{"name":"(anonymous_4)","decl":{"start":{"line":27,"column":12},"end":{"line":27,"column":26}},"loc":{"start":{"line":27,"column":54},"end":{"line":38,"column":3}}},"3":{"name":"(anonymous_5)","decl":{"start":{"line":40,"column":2},"end":{"line":40,"column":7}},"loc":{"start":{"line":40,"column":31},"end":{"line":48,"column":3}}},"4":{"name":"(anonymous_6)","decl":{"start":{"line":50,"column":12},"end":{"line":50,"column":17}},"loc":{"start":{"line":51,"column":31},"end":{"line":72,"column":3}}}},"branchMap":{"0":{"loc":{"start":{"line":30,"column":4},"end":{"line":32,"column":5}},"type":"if","locations":[{"start":{"line":30,"column":4},"end":{"line":32,"column":5}}]},"1":{"loc":{"start":{"line":33,"column":4},"end":{"line":35,"column":5}},"type":"if","locations":[{"start":{"line":33,"column":4},"end":{"line":35,"column":5}}]},"2":{"loc":{"start":{"line":43,"column":4},"end":{"line":45,"column":5}},"type":"if","locations":[{"start":{"line":43,"column":4},"end":{"line":45,"column":5}}]},"3":{"loc":{"start":{"line":64,"column":6},"end":{"line":66,"column":7}},"type":"if","locations":[{"start":{"line":64,"column":6},"end":{"line":66,"column":7}}]}},"s":{"0":16,"1":16,"2":16,"3":16,"4":16,"5":16,"6":1,"7":1,"8":1,"9":22,"10":5,"11":5,"12":1,"13":4,"14":1,"15":3,"16":8,"17":8,"18":3,"19":5,"20":3,"21":3,"22":3,"23":3,"24":3,"25":2,"26":1,"27":1,"28":1,"29":16,"30":16},"f":{"0":1,"1":22,"2":5,"3":8,"4":3},"b":{"0":[1],"1":[1],"2":[3],"3":[1]}} -,"/home/joao/projects/cracked-dev-cli/src/services/LLM/actions/DeleteFileAction.ts": {"path":"/home/joao/projects/cracked-dev-cli/src/services/LLM/actions/DeleteFileAction.ts","statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":73}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":42}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":60}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":96}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":47}},"5":{"start":{"line":14,"column":7},"end":{"line":74,"column":null}},"6":{"start":{"line":19,"column":4},"end":{"line":19,"column":31}},"7":{"start":{"line":16,"column":14},"end":{"line":16,"column":35}},"8":{"start":{"line":17,"column":12},"end":{"line":17,"column":28}},"9":{"start":{"line":23,"column":4},"end":{"line":23,"column":21}},"10":{"start":{"line":27,"column":21},"end":{"line":27,"column":47}},"11":{"start":{"line":29,"column":4},"end":{"line":31,"column":5}},"12":{"start":{"line":30,"column":6},"end":{"line":30,"column":48}},"13":{"start":{"line":33,"column":4},"end":{"line":33,"column":16}},"14":{"start":{"line":39,"column":4},"end":{"line":56,"column":5}},"15":{"start":{"line":40,"column":33},"end":{"line":40,"column":59}},"16":{"start":{"line":42,"column":6},"end":{"line":42,"column":69}},"17":{"start":{"line":43,"column":21},"end":{"line":43,"column":63}},"18":{"start":{"line":45,"column":6},"end":{"line":48,"column":7}},"19":{"start":{"line":46,"column":8},"end":{"line":46,"column":92}},"20":{"start":{"line":47,"column":8},"end":{"line":47,"column":53}},"21":{"start":{"line":50,"column":6},"end":{"line":50,"column":69}},"22":{"start":{"line":51,"column":6},"end":{"line":51,"column":51}},"23":{"start":{"line":53,"column":33},"end":{"line":53,"column":59}},"24":{"start":{"line":54,"column":6},"end":{"line":54,"column":110}},"25":{"start":{"line":55,"column":6},"end":{"line":55,"column":52}},"26":{"start":{"line":61,"column":4},"end":{"line":65,"column":5}},"27":{"start":{"line":62,"column":6},"end":{"line":62,"column":55}},"28":{"start":{"line":64,"column":6},"end":{"line":64,"column":71}},"29":{"start":{"line":67,"column":28},"end":{"line":67,"column":55}},"30":{"start":{"line":68,"column":4},"end":{"line":70,"column":5}},"31":{"start":{"line":69,"column":6},"end":{"line":69,"column":64}},"32":{"start":{"line":72,"column":4},"end":{"line":72,"column":40}},"33":{"start":{"line":14,"column":13},"end":{"line":14,"column":29}},"34":{"start":{"line":14,"column":13},"end":{"line":74,"column":null}}},"fnMap":{"0":{"name":"(anonymous_2)","decl":{"start":{"line":15,"column":2},"end":{"line":15,"column":null}},"loc":{"start":{"line":17,"column":42},"end":{"line":20,"column":3}}},"1":{"name":"(anonymous_3)","decl":{"start":{"line":22,"column":12},"end":{"line":22,"column":24}},"loc":{"start":{"line":22,"column":24},"end":{"line":24,"column":3}}},"2":{"name":"(anonymous_4)","decl":{"start":{"line":26,"column":12},"end":{"line":26,"column":26}},"loc":{"start":{"line":26,"column":54},"end":{"line":34,"column":3}}},"3":{"name":"(anonymous_5)","decl":{"start":{"line":36,"column":12},"end":{"line":36,"column":17}},"loc":{"start":{"line":37,"column":31},"end":{"line":57,"column":3}}},"4":{"name":"(anonymous_6)","decl":{"start":{"line":59,"column":2},"end":{"line":59,"column":7}},"loc":{"start":{"line":59,"column":31},"end":{"line":73,"column":3}}}},"branchMap":{"0":{"loc":{"start":{"line":29,"column":4},"end":{"line":31,"column":5}},"type":"if","locations":[{"start":{"line":29,"column":4},"end":{"line":31,"column":5}}]},"1":{"loc":{"start":{"line":29,"column":8},"end":{"line":29,"column":48}},"type":"binary-expr","locations":[{"start":{"line":29,"column":8},"end":{"line":29,"column":32}},{"start":{"line":29,"column":36},"end":{"line":29,"column":48}}]},"2":{"loc":{"start":{"line":45,"column":6},"end":{"line":48,"column":7}},"type":"if","locations":[{"start":{"line":45,"column":6},"end":{"line":48,"column":7}}]},"3":{"loc":{"start":{"line":68,"column":4},"end":{"line":70,"column":5}},"type":"if","locations":[{"start":{"line":68,"column":4},"end":{"line":70,"column":5}}]}},"s":{"0":16,"1":16,"2":16,"3":16,"4":16,"5":16,"6":5,"7":5,"8":5,"9":6,"10":5,"11":5,"12":2,"13":3,"14":3,"15":3,"16":3,"17":3,"18":3,"19":2,"20":2,"21":1,"22":1,"23":0,"24":0,"25":0,"26":5,"27":5,"28":0,"29":5,"30":5,"31":2,"32":3,"33":16,"34":16},"f":{"0":5,"1":6,"2":5,"3":3,"4":5},"b":{"0":[2],"1":[5,4],"2":[2],"3":[2]}} -,"/home/joao/projects/cracked-dev-cli/src/services/LLM/actions/EndPhaseAction.ts": {"path":"/home/joao/projects/cracked-dev-cli/src/services/LLM/actions/EndPhaseAction.ts","statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":42}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":67}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":60}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":79}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":47}},"5":{"start":{"line":10,"column":7},"end":{"line":37,"column":null}},"6":{"start":{"line":15,"column":4},"end":{"line":15,"column":31}},"7":{"start":{"line":13,"column":12},"end":{"line":13,"column":36}},"8":{"start":{"line":21,"column":4},"end":{"line":26,"column":5}},"9":{"start":{"line":22,"column":19},"end":{"line":22,"column":76}},"10":{"start":{"line":23,"column":6},"end":{"line":23,"column":44}},"11":{"start":{"line":25,"column":6},"end":{"line":25,"column":43}},"12":{"start":{"line":31,"column":4},"end":{"line":31,"column":16}},"13":{"start":{"line":35,"column":4},"end":{"line":35,"column":35}},"14":{"start":{"line":10,"column":13},"end":{"line":10,"column":27}},"15":{"start":{"line":10,"column":13},"end":{"line":37,"column":null}}},"fnMap":{"0":{"name":"(anonymous_2)","decl":{"start":{"line":11,"column":2},"end":{"line":11,"column":null}},"loc":{"start":{"line":13,"column":58},"end":{"line":16,"column":3}}},"1":{"name":"(anonymous_3)","decl":{"start":{"line":18,"column":12},"end":{"line":18,"column":17}},"loc":{"start":{"line":19,"column":31},"end":{"line":27,"column":3}}},"2":{"name":"(anonymous_4)","decl":{"start":{"line":29,"column":12},"end":{"line":29,"column":26}},"loc":{"start":{"line":29,"column":54},"end":{"line":32,"column":3}}},"3":{"name":"(anonymous_5)","decl":{"start":{"line":34,"column":12},"end":{"line":34,"column":24}},"loc":{"start":{"line":34,"column":24},"end":{"line":36,"column":3}}}},"branchMap":{},"s":{"0":16,"1":16,"2":16,"3":16,"4":16,"5":16,"6":5,"7":5,"8":2,"9":2,"10":1,"11":1,"12":2,"13":6,"14":16,"15":16},"f":{"0":5,"1":2,"2":2,"3":6},"b":{}} -,"/home/joao/projects/cracked-dev-cli/src/services/LLM/actions/EndTaskAction.ts": {"path":"/home/joao/projects/cracked-dev-cli/src/services/LLM/actions/EndTaskAction.ts","statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":42}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":60}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":90}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":47}},"4":{"start":{"line":9,"column":7},"end":{"line":42,"column":null}},"5":{"start":{"line":11,"column":4},"end":{"line":11,"column":31}},"6":{"start":{"line":10,"column":24},"end":{"line":10,"column":45}},"7":{"start":{"line":15,"column":4},"end":{"line":15,"column":21}},"8":{"start":{"line":19,"column":20},"end":{"line":19,"column":44}},"9":{"start":{"line":21,"column":4},"end":{"line":23,"column":5}},"10":{"start":{"line":22,"column":6},"end":{"line":22,"column":35}},"11":{"start":{"line":25,"column":4},"end":{"line":25,"column":16}},"12":{"start":{"line":31,"column":20},"end":{"line":31,"column":44}},"13":{"start":{"line":33,"column":4},"end":{"line":33,"column":49}},"14":{"start":{"line":34,"column":4},"end":{"line":34,"column":45}},"15":{"start":{"line":39,"column":18},"end":{"line":39,"column":67}},"16":{"start":{"line":40,"column":4},"end":{"line":40,"column":43}},"17":{"start":{"line":9,"column":13},"end":{"line":9,"column":26}},"18":{"start":{"line":9,"column":13},"end":{"line":42,"column":null}}},"fnMap":{"0":{"name":"(anonymous_2)","decl":{"start":{"line":10,"column":2},"end":{"line":10,"column":24}},"loc":{"start":{"line":10,"column":64},"end":{"line":12,"column":3}}},"1":{"name":"(anonymous_3)","decl":{"start":{"line":14,"column":12},"end":{"line":14,"column":24}},"loc":{"start":{"line":14,"column":24},"end":{"line":16,"column":3}}},"2":{"name":"(anonymous_4)","decl":{"start":{"line":18,"column":12},"end":{"line":18,"column":26}},"loc":{"start":{"line":18,"column":54},"end":{"line":26,"column":3}}},"3":{"name":"(anonymous_5)","decl":{"start":{"line":28,"column":12},"end":{"line":28,"column":17}},"loc":{"start":{"line":29,"column":31},"end":{"line":35,"column":3}}},"4":{"name":"(anonymous_6)","decl":{"start":{"line":37,"column":12},"end":{"line":37,"column":23}},"loc":{"start":{"line":37,"column":39},"end":{"line":41,"column":3}}}},"branchMap":{"0":{"loc":{"start":{"line":21,"column":4},"end":{"line":23,"column":5}},"type":"if","locations":[{"start":{"line":21,"column":4},"end":{"line":23,"column":5}}]}},"s":{"0":16,"1":16,"2":16,"3":16,"4":16,"5":1,"6":1,"7":12,"8":5,"9":5,"10":3,"11":2,"12":2,"13":2,"14":2,"15":5,"16":5,"17":16,"18":16},"f":{"0":1,"1":12,"2":5,"3":2,"4":5},"b":{"0":[3]}} -,"/home/joao/projects/cracked-dev-cli/src/services/LLM/actions/FetchUrlAction.ts": {"path":"/home/joao/projects/cracked-dev-cli/src/services/LLM/actions/FetchUrlAction.ts","statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":45}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":42}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":60}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":92}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":47}},"5":{"start":{"line":14,"column":7},"end":{"line":66,"column":null}},"6":{"start":{"line":16,"column":4},"end":{"line":16,"column":31}},"7":{"start":{"line":15,"column":24},"end":{"line":15,"column":45}},"8":{"start":{"line":20,"column":4},"end":{"line":20,"column":21}},"9":{"start":{"line":24,"column":20},"end":{"line":24,"column":44}},"10":{"start":{"line":26,"column":4},"end":{"line":28,"column":5}},"11":{"start":{"line":27,"column":6},"end":{"line":27,"column":31}},"12":{"start":{"line":30,"column":4},"end":{"line":35,"column":5}},"13":{"start":{"line":31,"column":6},"end":{"line":31,"column":19}},"14":{"start":{"line":32,"column":6},"end":{"line":32,"column":18}},"15":{"start":{"line":34,"column":6},"end":{"line":34,"column":91}},"16":{"start":{"line":41,"column":4},"end":{"line":52,"column":5}},"17":{"start":{"line":42,"column":22},"end":{"line":42,"column":46}},"18":{"start":{"line":44,"column":6},"end":{"line":44,"column":43}},"19":{"start":{"line":46,"column":19},"end":{"line":46,"column":43}},"20":{"start":{"line":47,"column":6},"end":{"line":47,"column":44}},"21":{"start":{"line":49,"column":6},"end":{"line":51,"column":8}},"22":{"start":{"line":56,"column":4},"end":{"line":64,"column":5}},"23":{"start":{"line":57,"column":41},"end":{"line":57,"column":61}},"24":{"start":{"line":58,"column":6},"end":{"line":58,"column":27}},"25":{"start":{"line":60,"column":6},"end":{"line":62,"column":7}},"26":{"start":{"line":61,"column":8},"end":{"line":61,"column":59}},"27":{"start":{"line":63,"column":6},"end":{"line":63,"column":62}},"28":{"start":{"line":14,"column":13},"end":{"line":14,"column":27}},"29":{"start":{"line":14,"column":13},"end":{"line":66,"column":null}}},"fnMap":{"0":{"name":"(anonymous_3)","decl":{"start":{"line":15,"column":2},"end":{"line":15,"column":24}},"loc":{"start":{"line":15,"column":64},"end":{"line":17,"column":3}}},"1":{"name":"(anonymous_4)","decl":{"start":{"line":19,"column":12},"end":{"line":19,"column":24}},"loc":{"start":{"line":19,"column":24},"end":{"line":21,"column":3}}},"2":{"name":"(anonymous_5)","decl":{"start":{"line":23,"column":12},"end":{"line":23,"column":26}},"loc":{"start":{"line":23,"column":54},"end":{"line":36,"column":3}}},"3":{"name":"(anonymous_6)","decl":{"start":{"line":38,"column":12},"end":{"line":38,"column":17}},"loc":{"start":{"line":39,"column":31},"end":{"line":53,"column":3}}},"4":{"name":"(anonymous_7)","decl":{"start":{"line":55,"column":10},"end":{"line":55,"column":15}},"loc":{"start":{"line":55,"column":45},"end":{"line":65,"column":3}}}},"branchMap":{"0":{"loc":{"start":{"line":26,"column":4},"end":{"line":28,"column":5}},"type":"if","locations":[{"start":{"line":26,"column":4},"end":{"line":28,"column":5}}]},"1":{"loc":{"start":{"line":50,"column":8},"end":{"line":50,"column":73}},"type":"cond-expr","locations":[{"start":{"line":50,"column":33},"end":{"line":50,"column":38}},{"start":{"line":50,"column":41},"end":{"line":50,"column":73}}]},"2":{"loc":{"start":{"line":60,"column":6},"end":{"line":62,"column":7}},"type":"if","locations":[{"start":{"line":60,"column":6},"end":{"line":62,"column":7}}]}},"s":{"0":16,"1":16,"2":16,"3":16,"4":16,"5":16,"6":4,"7":4,"8":14,"9":4,"10":4,"11":1,"12":3,"13":3,"14":2,"15":1,"16":2,"17":2,"18":2,"19":2,"20":1,"21":1,"22":2,"23":2,"24":1,"25":1,"26":0,"27":1,"28":16,"29":16},"f":{"0":4,"1":14,"2":4,"3":2,"4":2},"b":{"0":[1],"1":[1,0],"2":[0]}} -,"/home/joao/projects/cracked-dev-cli/src/services/LLM/actions/MoveFileAction.ts": {"path":"/home/joao/projects/cracked-dev-cli/src/services/LLM/actions/MoveFileAction.ts","statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":73}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":42}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":60}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":92}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":47}},"5":{"start":{"line":15,"column":7},"end":{"line":93,"column":null}},"6":{"start":{"line":20,"column":4},"end":{"line":20,"column":31}},"7":{"start":{"line":17,"column":14},"end":{"line":17,"column":35}},"8":{"start":{"line":18,"column":12},"end":{"line":18,"column":28}},"9":{"start":{"line":24,"column":4},"end":{"line":24,"column":21}},"10":{"start":{"line":29,"column":16},"end":{"line":29,"column":39}},"11":{"start":{"line":30,"column":18},"end":{"line":30,"column":76}},"12":{"start":{"line":31,"column":4},"end":{"line":34,"column":5}},"13":{"start":{"line":32,"column":6},"end":{"line":32,"column":57}},"14":{"start":{"line":33,"column":6},"end":{"line":33,"column":55}},"15":{"start":{"line":36,"column":23},"end":{"line":36,"column":31}},"16":{"start":{"line":37,"column":24},"end":{"line":39,"column":null}},"17":{"start":{"line":41,"column":29},"end":{"line":43,"column":null}},"18":{"start":{"line":46,"column":21},"end":{"line":49,"column":5}},"19":{"start":{"line":47,"column":6},"end":{"line":47,"column":28}},"20":{"start":{"line":47,"column":18},"end":{"line":47,"column":28}},"21":{"start":{"line":48,"column":6},"end":{"line":48,"column":74}},"22":{"start":{"line":51,"column":4},"end":{"line":54,"column":6}},"23":{"start":{"line":58,"column":46},"end":{"line":58,"column":70}},"24":{"start":{"line":60,"column":4},"end":{"line":62,"column":5}},"25":{"start":{"line":61,"column":6},"end":{"line":61,"column":39}},"26":{"start":{"line":63,"column":4},"end":{"line":65,"column":5}},"27":{"start":{"line":64,"column":6},"end":{"line":64,"column":44}},"28":{"start":{"line":67,"column":4},"end":{"line":67,"column":16}},"29":{"start":{"line":73,"column":4},"end":{"line":91,"column":5}},"30":{"start":{"line":74,"column":48},"end":{"line":74,"column":72}},"31":{"start":{"line":76,"column":6},"end":{"line":76,"column":50}},"32":{"start":{"line":77,"column":6},"end":{"line":77,"column":60}},"33":{"start":{"line":79,"column":21},"end":{"line":81,"column":null}},"34":{"start":{"line":84,"column":6},"end":{"line":86,"column":7}},"35":{"start":{"line":85,"column":8},"end":{"line":85,"column":53}},"36":{"start":{"line":88,"column":6},"end":{"line":88,"column":51}},"37":{"start":{"line":90,"column":6},"end":{"line":90,"column":52}},"38":{"start":{"line":15,"column":13},"end":{"line":15,"column":27}},"39":{"start":{"line":15,"column":13},"end":{"line":93,"column":null}}},"fnMap":{"0":{"name":"(anonymous_2)","decl":{"start":{"line":16,"column":2},"end":{"line":16,"column":null}},"loc":{"start":{"line":18,"column":42},"end":{"line":21,"column":3}}},"1":{"name":"(anonymous_3)","decl":{"start":{"line":23,"column":12},"end":{"line":23,"column":24}},"loc":{"start":{"line":23,"column":24},"end":{"line":25,"column":3}}},"2":{"name":"(anonymous_4)","decl":{"start":{"line":27,"column":12},"end":{"line":27,"column":23}},"loc":{"start":{"line":27,"column":39},"end":{"line":55,"column":3}}},"3":{"name":"(anonymous_5)","decl":{"start":{"line":46,"column":21},"end":{"line":46,"column":22}},"loc":{"start":{"line":46,"column":65},"end":{"line":49,"column":5}}},"4":{"name":"(anonymous_6)","decl":{"start":{"line":57,"column":12},"end":{"line":57,"column":26}},"loc":{"start":{"line":57,"column":54},"end":{"line":68,"column":3}}},"5":{"name":"(anonymous_7)","decl":{"start":{"line":70,"column":12},"end":{"line":70,"column":17}},"loc":{"start":{"line":71,"column":31},"end":{"line":92,"column":3}}}},"branchMap":{"0":{"loc":{"start":{"line":31,"column":4},"end":{"line":34,"column":5}},"type":"if","locations":[{"start":{"line":31,"column":4},"end":{"line":34,"column":5}}]},"1":{"loc":{"start":{"line":47,"column":6},"end":{"line":47,"column":28}},"type":"if","locations":[{"start":{"line":47,"column":6},"end":{"line":47,"column":28}}]},"2":{"loc":{"start":{"line":48,"column":13},"end":{"line":48,"column":73}},"type":"cond-expr","locations":[{"start":{"line":48,"column":36},"end":{"line":48,"column":58}},{"start":{"line":48,"column":61},"end":{"line":48,"column":73}}]},"3":{"loc":{"start":{"line":48,"column":36},"end":{"line":48,"column":58}},"type":"binary-expr","locations":[{"start":{"line":48,"column":36},"end":{"line":48,"column":52}},{"start":{"line":48,"column":56},"end":{"line":48,"column":58}}]},"4":{"loc":{"start":{"line":60,"column":4},"end":{"line":62,"column":5}},"type":"if","locations":[{"start":{"line":60,"column":4},"end":{"line":62,"column":5}}]},"5":{"loc":{"start":{"line":63,"column":4},"end":{"line":65,"column":5}},"type":"if","locations":[{"start":{"line":63,"column":4},"end":{"line":65,"column":5}}]},"6":{"loc":{"start":{"line":84,"column":6},"end":{"line":86,"column":7}},"type":"if","locations":[{"start":{"line":84,"column":6},"end":{"line":86,"column":7}}]}},"s":{"0":17,"1":17,"2":17,"3":17,"4":17,"5":17,"6":5,"7":5,"8":5,"9":21,"10":5,"11":5,"12":5,"13":0,"14":0,"15":5,"16":5,"17":5,"18":5,"19":10,"20":2,"21":8,"22":5,"23":5,"24":5,"25":1,"26":4,"27":1,"28":3,"29":3,"30":3,"31":3,"32":3,"33":3,"34":3,"35":1,"36":2,"37":0,"38":17,"39":17},"f":{"0":5,"1":21,"2":5,"3":10,"4":5,"5":3},"b":{"0":[0],"1":[2],"2":[0,8],"3":[0,0],"4":[1],"5":[1],"6":[1]}} -,"/home/joao/projects/cracked-dev-cli/src/services/LLM/actions/ReadFileAction.ts": {"path":"/home/joao/projects/cracked-dev-cli/src/services/LLM/actions/ReadFileAction.ts","statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":73}},"1":{"start":{"line":4,"column":0},"end":{"line":4,"column":60}},"2":{"start":{"line":5,"column":0},"end":{"line":5,"column":42}},"3":{"start":{"line":6,"column":0},"end":{"line":6,"column":60}},"4":{"start":{"line":7,"column":0},"end":{"line":7,"column":92}},"5":{"start":{"line":8,"column":0},"end":{"line":8,"column":47}},"6":{"start":{"line":16,"column":7},"end":{"line":113,"column":null}},"7":{"start":{"line":22,"column":4},"end":{"line":22,"column":31}},"8":{"start":{"line":18,"column":14},"end":{"line":18,"column":35}},"9":{"start":{"line":19,"column":12},"end":{"line":19,"column":28}},"10":{"start":{"line":20,"column":12},"end":{"line":20,"column":25}},"11":{"start":{"line":26,"column":4},"end":{"line":26,"column":21}},"12":{"start":{"line":30,"column":18},"end":{"line":30,"column":29}},"13":{"start":{"line":32,"column":4},"end":{"line":34,"column":5}},"14":{"start":{"line":33,"column":6},"end":{"line":33,"column":52}},"15":{"start":{"line":36,"column":25},"end":{"line":36,"column":54}},"16":{"start":{"line":36,"column":48},"end":{"line":36,"column":53}},"17":{"start":{"line":37,"column":4},"end":{"line":39,"column":5}},"18":{"start":{"line":38,"column":6},"end":{"line":38,"column":121}},"19":{"start":{"line":41,"column":4},"end":{"line":41,"column":16}},"20":{"start":{"line":48,"column":4},"end":{"line":54,"column":5}},"21":{"start":{"line":50,"column":20},"end":{"line":50,"column":73}},"22":{"start":{"line":51,"column":22},"end":{"line":51,"column":57}},"23":{"start":{"line":52,"column":20},"end":{"line":52,"column":59}},"24":{"start":{"line":52,"column":43},"end":{"line":52,"column":58}},"25":{"start":{"line":53,"column":6},"end":{"line":53,"column":45}},"26":{"start":{"line":57,"column":4},"end":{"line":57,"column":55}},"27":{"start":{"line":64,"column":22},"end":{"line":64,"column":78}},"28":{"start":{"line":67,"column":4},"end":{"line":69,"column":5}},"29":{"start":{"line":68,"column":6},"end":{"line":68,"column":55}},"30":{"start":{"line":72,"column":4},"end":{"line":72,"column":53}},"31":{"start":{"line":76,"column":19},"end":{"line":76,"column":59}},"32":{"start":{"line":77,"column":4},"end":{"line":77,"column":42}},"33":{"start":{"line":83,"column":19},"end":{"line":83,"column":68}},"34":{"start":{"line":84,"column":4},"end":{"line":84,"column":62}},"35":{"start":{"line":86,"column":4},"end":{"line":90,"column":5}},"36":{"start":{"line":87,"column":6},"end":{"line":89,"column":8}},"37":{"start":{"line":92,"column":4},"end":{"line":92,"column":71}},"38":{"start":{"line":93,"column":4},"end":{"line":93,"column":32}},"39":{"start":{"line":95,"column":4},"end":{"line":95,"column":49}},"40":{"start":{"line":99,"column":4},"end":{"line":103,"column":5}},"41":{"start":{"line":100,"column":6},"end":{"line":100,"column":73}},"42":{"start":{"line":102,"column":6},"end":{"line":102,"column":63}},"43":{"start":{"line":105,"column":4},"end":{"line":105,"column":32}},"44":{"start":{"line":107,"column":4},"end":{"line":111,"column":6}},"45":{"start":{"line":16,"column":13},"end":{"line":16,"column":27}},"46":{"start":{"line":16,"column":13},"end":{"line":113,"column":null}}},"fnMap":{"0":{"name":"(anonymous_2)","decl":{"start":{"line":17,"column":2},"end":{"line":17,"column":null}},"loc":{"start":{"line":20,"column":36},"end":{"line":23,"column":3}}},"1":{"name":"(anonymous_3)","decl":{"start":{"line":25,"column":12},"end":{"line":25,"column":24}},"loc":{"start":{"line":25,"column":24},"end":{"line":27,"column":3}}},"2":{"name":"(anonymous_4)","decl":{"start":{"line":29,"column":12},"end":{"line":29,"column":26}},"loc":{"start":{"line":29,"column":50},"end":{"line":42,"column":3}}},"3":{"name":"(anonymous_5)","decl":{"start":{"line":36,"column":38},"end":{"line":36,"column":39}},"loc":{"start":{"line":36,"column":48},"end":{"line":36,"column":53}}},"4":{"name":"(anonymous_6)","decl":{"start":{"line":44,"column":12},"end":{"line":44,"column":29}},"loc":{"start":{"line":46,"column":21},"end":{"line":58,"column":3}}},"5":{"name":"(anonymous_7)","decl":{"start":{"line":52,"column":32},"end":{"line":52,"column":33}},"loc":{"start":{"line":52,"column":43},"end":{"line":52,"column":58}}},"6":{"name":"(anonymous_8)","decl":{"start":{"line":60,"column":12},"end":{"line":60,"column":17}},"loc":{"start":{"line":61,"column":27},"end":{"line":73,"column":3}}},"7":{"name":"(anonymous_9)","decl":{"start":{"line":75,"column":10},"end":{"line":75,"column":15}},"loc":{"start":{"line":75,"column":49},"end":{"line":78,"column":3}}},"8":{"name":"(anonymous_10)","decl":{"start":{"line":80,"column":10},"end":{"line":80,"column":15}},"loc":{"start":{"line":81,"column":23},"end":{"line":96,"column":3}}},"9":{"name":"(anonymous_11)","decl":{"start":{"line":98,"column":10},"end":{"line":98,"column":27}},"loc":{"start":{"line":98,"column":56},"end":{"line":112,"column":3}}}},"branchMap":{"0":{"loc":{"start":{"line":32,"column":4},"end":{"line":34,"column":5}},"type":"if","locations":[{"start":{"line":32,"column":4},"end":{"line":34,"column":5}}]},"1":{"loc":{"start":{"line":32,"column":8},"end":{"line":32,"column":61}},"type":"binary-expr","locations":[{"start":{"line":32,"column":8},"end":{"line":32,"column":14}},{"start":{"line":32,"column":18},"end":{"line":32,"column":39}},{"start":{"line":32,"column":43},"end":{"line":32,"column":61}}]},"2":{"loc":{"start":{"line":37,"column":4},"end":{"line":39,"column":5}},"type":"if","locations":[{"start":{"line":37,"column":4},"end":{"line":39,"column":5}}]},"3":{"loc":{"start":{"line":48,"column":4},"end":{"line":54,"column":5}},"type":"if","locations":[{"start":{"line":48,"column":4},"end":{"line":54,"column":5}}]},"4":{"loc":{"start":{"line":53,"column":13},"end":{"line":53,"column":44}},"type":"cond-expr","locations":[{"start":{"line":53,"column":32},"end":{"line":53,"column":37}},{"start":{"line":53,"column":40},"end":{"line":53,"column":44}}]},"5":{"loc":{"start":{"line":64,"column":22},"end":{"line":64,"column":78}},"type":"cond-expr","locations":[{"start":{"line":64,"column":51},"end":{"line":64,"column":62}},{"start":{"line":64,"column":65},"end":{"line":64,"column":78}}]},"6":{"loc":{"start":{"line":67,"column":4},"end":{"line":69,"column":5}},"type":"if","locations":[{"start":{"line":67,"column":4},"end":{"line":69,"column":5}}]},"7":{"loc":{"start":{"line":86,"column":4},"end":{"line":90,"column":5}},"type":"if","locations":[{"start":{"line":86,"column":4},"end":{"line":90,"column":5}}]},"8":{"loc":{"start":{"line":86,"column":8},"end":{"line":86,"column":39}},"type":"binary-expr","locations":[{"start":{"line":86,"column":8},"end":{"line":86,"column":23}},{"start":{"line":86,"column":27},"end":{"line":86,"column":39}}]},"9":{"loc":{"start":{"line":88,"column":8},"end":{"line":88,"column":55}},"type":"binary-expr","locations":[{"start":{"line":88,"column":8},"end":{"line":88,"column":20}},{"start":{"line":88,"column":24},"end":{"line":88,"column":55}}]},"10":{"loc":{"start":{"line":99,"column":4},"end":{"line":103,"column":5}},"type":"if","locations":[{"start":{"line":99,"column":4},"end":{"line":103,"column":5}},{"start":{"line":101,"column":11},"end":{"line":103,"column":5}}]},"11":{"loc":{"start":{"line":102,"column":20},"end":{"line":102,"column":61}},"type":"binary-expr","locations":[{"start":{"line":102,"column":20},"end":{"line":102,"column":42}},{"start":{"line":102,"column":46},"end":{"line":102,"column":61}}]}},"s":{"0":16,"1":16,"2":16,"3":16,"4":16,"5":16,"6":16,"7":1,"8":1,"9":1,"10":1,"11":25,"12":7,"13":7,"14":1,"15":6,"16":9,"17":6,"18":1,"19":5,"20":7,"21":7,"22":7,"23":7,"24":9,"25":7,"26":0,"27":5,"28":5,"29":2,"30":3,"31":2,"32":2,"33":3,"34":3,"35":3,"36":2,"37":1,"38":1,"39":1,"40":2,"41":1,"42":1,"43":2,"44":2,"45":16,"46":16},"f":{"0":1,"1":25,"2":7,"3":9,"4":7,"5":9,"6":5,"7":2,"8":3,"9":2},"b":{"0":[1],"1":[7,6,6],"2":[1],"3":[7],"4":[6,1],"5":[5,0],"6":[2],"7":[2],"8":[3,1],"9":[2,0],"10":[1,1],"11":[1,0]}} -,"/home/joao/projects/cracked-dev-cli/src/services/LLM/actions/RelativePathLookupAction.ts": {"path":"/home/joao/projects/cracked-dev-cli/src/services/LLM/actions/RelativePathLookupAction.ts","statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":69}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":24}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":42}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":60}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":112}},"5":{"start":{"line":6,"column":0},"end":{"line":6,"column":47}},"6":{"start":{"line":17,"column":7},"end":{"line":126,"column":null}},"7":{"start":{"line":22,"column":4},"end":{"line":22,"column":31}},"8":{"start":{"line":19,"column":14},"end":{"line":19,"column":35}},"9":{"start":{"line":20,"column":12},"end":{"line":20,"column":26}},"10":{"start":{"line":26,"column":4},"end":{"line":26,"column":21}},"11":{"start":{"line":31,"column":16},"end":{"line":31,"column":39}},"12":{"start":{"line":32,"column":18},"end":{"line":32,"column":76}},"13":{"start":{"line":33,"column":4},"end":{"line":36,"column":5}},"14":{"start":{"line":34,"column":6},"end":{"line":34,"column":68}},"15":{"start":{"line":35,"column":6},"end":{"line":35,"column":65}},"16":{"start":{"line":38,"column":23},"end":{"line":38,"column":31}},"17":{"start":{"line":39,"column":24},"end":{"line":41,"column":null}},"18":{"start":{"line":43,"column":17},"end":{"line":43,"column":72}},"19":{"start":{"line":44,"column":22},"end":{"line":46,"column":null}},"20":{"start":{"line":49,"column":21},"end":{"line":52,"column":5}},"21":{"start":{"line":50,"column":6},"end":{"line":50,"column":28}},"22":{"start":{"line":50,"column":18},"end":{"line":50,"column":28}},"23":{"start":{"line":51,"column":6},"end":{"line":51,"column":74}},"24":{"start":{"line":54,"column":4},"end":{"line":58,"column":6}},"25":{"start":{"line":62,"column":45},"end":{"line":62,"column":79}},"26":{"start":{"line":64,"column":4},"end":{"line":66,"column":5}},"27":{"start":{"line":65,"column":6},"end":{"line":65,"column":39}},"28":{"start":{"line":67,"column":4},"end":{"line":69,"column":5}},"29":{"start":{"line":68,"column":6},"end":{"line":68,"column":32}},"30":{"start":{"line":70,"column":4},"end":{"line":72,"column":5}},"31":{"start":{"line":71,"column":6},"end":{"line":71,"column":49}},"32":{"start":{"line":74,"column":4},"end":{"line":74,"column":16}},"33":{"start":{"line":80,"column":4},"end":{"line":124,"column":5}},"34":{"start":{"line":85,"column":10},"end":{"line":85,"column":44}},"35":{"start":{"line":88,"column":24},"end":{"line":88,"column":49}},"36":{"start":{"line":91,"column":29},"end":{"line":91,"column":66}},"37":{"start":{"line":94,"column":27},"end":{"line":96,"column":null}},"38":{"start":{"line":99,"column":6},"end":{"line":117,"column":7}},"39":{"start":{"line":101,"column":32},"end":{"line":101,"column":70}},"40":{"start":{"line":103,"column":30},"end":{"line":105,"column":34}},"41":{"start":{"line":107,"column":23},"end":{"line":111,"column":10}},"42":{"start":{"line":113,"column":8},"end":{"line":115,"column":10}},"43":{"start":{"line":116,"column":8},"end":{"line":116,"column":48}},"44":{"start":{"line":119,"column":6},"end":{"line":119,"column":45}},"45":{"start":{"line":120,"column":6},"end":{"line":120,"column":44}},"46":{"start":{"line":122,"column":6},"end":{"line":122,"column":71}},"47":{"start":{"line":123,"column":6},"end":{"line":123,"column":52}},"48":{"start":{"line":17,"column":13},"end":{"line":17,"column":37}},"49":{"start":{"line":17,"column":13},"end":{"line":126,"column":null}}},"fnMap":{"0":{"name":"(anonymous_3)","decl":{"start":{"line":18,"column":2},"end":{"line":18,"column":null}},"loc":{"start":{"line":20,"column":38},"end":{"line":23,"column":3}}},"1":{"name":"(anonymous_4)","decl":{"start":{"line":25,"column":12},"end":{"line":25,"column":24}},"loc":{"start":{"line":25,"column":24},"end":{"line":27,"column":3}}},"2":{"name":"(anonymous_5)","decl":{"start":{"line":29,"column":12},"end":{"line":29,"column":23}},"loc":{"start":{"line":29,"column":39},"end":{"line":59,"column":3}}},"3":{"name":"(anonymous_6)","decl":{"start":{"line":49,"column":21},"end":{"line":49,"column":22}},"loc":{"start":{"line":49,"column":65},"end":{"line":52,"column":5}}},"4":{"name":"(anonymous_7)","decl":{"start":{"line":61,"column":12},"end":{"line":61,"column":26}},"loc":{"start":{"line":61,"column":54},"end":{"line":75,"column":3}}},"5":{"name":"(anonymous_8)","decl":{"start":{"line":77,"column":12},"end":{"line":77,"column":17}},"loc":{"start":{"line":78,"column":31},"end":{"line":125,"column":3}}}},"branchMap":{"0":{"loc":{"start":{"line":33,"column":4},"end":{"line":36,"column":5}},"type":"if","locations":[{"start":{"line":33,"column":4},"end":{"line":36,"column":5}}]},"1":{"loc":{"start":{"line":50,"column":6},"end":{"line":50,"column":28}},"type":"if","locations":[{"start":{"line":50,"column":6},"end":{"line":50,"column":28}}]},"2":{"loc":{"start":{"line":51,"column":13},"end":{"line":51,"column":73}},"type":"cond-expr","locations":[{"start":{"line":51,"column":36},"end":{"line":51,"column":58}},{"start":{"line":51,"column":61},"end":{"line":51,"column":73}}]},"3":{"loc":{"start":{"line":51,"column":36},"end":{"line":51,"column":58}},"type":"binary-expr","locations":[{"start":{"line":51,"column":36},"end":{"line":51,"column":52}},{"start":{"line":51,"column":56},"end":{"line":51,"column":58}}]},"4":{"loc":{"start":{"line":57,"column":17},"end":{"line":57,"column":72}},"type":"cond-expr","locations":[{"start":{"line":57,"column":29},"end":{"line":57,"column":60}},{"start":{"line":57,"column":63},"end":{"line":57,"column":72}}]},"5":{"loc":{"start":{"line":64,"column":4},"end":{"line":66,"column":5}},"type":"if","locations":[{"start":{"line":64,"column":4},"end":{"line":66,"column":5}}]},"6":{"loc":{"start":{"line":67,"column":4},"end":{"line":69,"column":5}},"type":"if","locations":[{"start":{"line":67,"column":4},"end":{"line":69,"column":5}}]},"7":{"loc":{"start":{"line":70,"column":4},"end":{"line":72,"column":5}},"type":"if","locations":[{"start":{"line":70,"column":4},"end":{"line":72,"column":5}}]},"8":{"loc":{"start":{"line":70,"column":8},"end":{"line":70,"column":68}},"type":"binary-expr","locations":[{"start":{"line":70,"column":8},"end":{"line":70,"column":31}},{"start":{"line":70,"column":36},"end":{"line":70,"column":50}},{"start":{"line":70,"column":54},"end":{"line":70,"column":67}}]},"9":{"loc":{"start":{"line":84,"column":8},"end":{"line":84,"column":23}},"type":"default-arg","locations":[{"start":{"line":84,"column":20},"end":{"line":84,"column":23}}]},"10":{"loc":{"start":{"line":99,"column":6},"end":{"line":117,"column":7}},"type":"if","locations":[{"start":{"line":99,"column":6},"end":{"line":117,"column":7}}]},"11":{"loc":{"start":{"line":103,"column":30},"end":{"line":105,"column":34}},"type":"cond-expr","locations":[{"start":{"line":104,"column":12},"end":{"line":104,"column":27}},{"start":{"line":105,"column":12},"end":{"line":105,"column":34}}]}},"s":{"0":17,"1":17,"2":17,"3":17,"4":17,"5":17,"6":17,"7":9,"8":9,"9":9,"10":29,"11":8,"12":8,"13":8,"14":0,"15":0,"16":8,"17":8,"18":8,"19":8,"20":8,"21":18,"22":2,"23":16,"24":8,"25":8,"26":8,"27":1,"28":7,"29":1,"30":6,"31":1,"32":5,"33":5,"34":5,"35":5,"36":5,"37":5,"38":4,"39":3,"40":3,"41":3,"42":3,"43":3,"44":1,"45":1,"46":1,"47":1,"48":17,"49":17},"f":{"0":9,"1":29,"2":8,"3":18,"4":8,"5":5},"b":{"0":[0],"1":[2],"2":[0,16],"3":[0,0],"4":[2,6],"5":[1],"6":[1],"7":[1],"8":[6,2,2],"9":[4],"10":[3],"11":[3,0]}} -,"/home/joao/projects/cracked-dev-cli/src/services/LLM/actions/SearchAction.ts": {"path":"/home/joao/projects/cracked-dev-cli/src/services/LLM/actions/SearchAction.ts","statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":65}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":42}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":60}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":null}},"4":{"start":{"line":8,"column":0},"end":{"line":8,"column":47}},"5":{"start":{"line":19,"column":7},"end":{"line":112,"column":null}},"6":{"start":{"line":26,"column":4},"end":{"line":26,"column":31}},"7":{"start":{"line":23,"column":14},"end":{"line":23,"column":35}},"8":{"start":{"line":24,"column":12},"end":{"line":24,"column":24}},"9":{"start":{"line":20,"column":10},"end":{"line":20,"column":71}},"10":{"start":{"line":31,"column":4},"end":{"line":33,"column":22}},"11":{"start":{"line":34,"column":4},"end":{"line":34,"column":34}},"12":{"start":{"line":38,"column":4},"end":{"line":40,"column":34}},"13":{"start":{"line":45,"column":16},"end":{"line":45,"column":39}},"14":{"start":{"line":46,"column":18},"end":{"line":46,"column":76}},"15":{"start":{"line":47,"column":4},"end":{"line":50,"column":5}},"16":{"start":{"line":48,"column":6},"end":{"line":48,"column":54}},"17":{"start":{"line":49,"column":6},"end":{"line":49,"column":41}},"18":{"start":{"line":52,"column":23},"end":{"line":52,"column":31}},"19":{"start":{"line":53,"column":22},"end":{"line":55,"column":null}},"20":{"start":{"line":57,"column":17},"end":{"line":57,"column":72}},"21":{"start":{"line":59,"column":21},"end":{"line":62,"column":5}},"22":{"start":{"line":60,"column":6},"end":{"line":60,"column":28}},"23":{"start":{"line":60,"column":18},"end":{"line":60,"column":28}},"24":{"start":{"line":61,"column":6},"end":{"line":61,"column":74}},"25":{"start":{"line":64,"column":4},"end":{"line":67,"column":6}},"26":{"start":{"line":71,"column":32},"end":{"line":71,"column":54}},"27":{"start":{"line":73,"column":4},"end":{"line":75,"column":5}},"28":{"start":{"line":74,"column":6},"end":{"line":74,"column":37}},"29":{"start":{"line":76,"column":4},"end":{"line":78,"column":5}},"30":{"start":{"line":77,"column":6},"end":{"line":77,"column":39}},"31":{"start":{"line":80,"column":4},"end":{"line":80,"column":16}},"32":{"start":{"line":86,"column":4},"end":{"line":110,"column":5}},"33":{"start":{"line":87,"column":34},"end":{"line":87,"column":56}},"34":{"start":{"line":89,"column":6},"end":{"line":89,"column":59}},"35":{"start":{"line":90,"column":6},"end":{"line":90,"column":43}},"36":{"start":{"line":91,"column":6},"end":{"line":91,"column":55}},"37":{"start":{"line":94,"column":6},"end":{"line":98,"column":7}},"38":{"start":{"line":95,"column":8},"end":{"line":95,"column":71}},"39":{"start":{"line":97,"column":8},"end":{"line":97,"column":68}},"40":{"start":{"line":100,"column":6},"end":{"line":103,"column":7}},"41":{"start":{"line":101,"column":8},"end":{"line":101,"column":41}},"42":{"start":{"line":102,"column":8},"end":{"line":102,"column":44}},"43":{"start":{"line":105,"column":6},"end":{"line":105,"column":57}},"44":{"start":{"line":106,"column":6},"end":{"line":106,"column":47}},"45":{"start":{"line":108,"column":6},"end":{"line":108,"column":66}},"46":{"start":{"line":109,"column":6},"end":{"line":109,"column":52}},"47":{"start":{"line":19,"column":13},"end":{"line":19,"column":25}},"48":{"start":{"line":19,"column":13},"end":{"line":112,"column":null}}},"fnMap":{"0":{"name":"(anonymous_2)","decl":{"start":{"line":22,"column":2},"end":{"line":22,"column":null}},"loc":{"start":{"line":24,"column":34},"end":{"line":27,"column":3}}},"1":{"name":"(anonymous_3)","decl":{"start":{"line":29,"column":2},"end":{"line":29,"column":7}},"loc":{"start":{"line":29,"column":31},"end":{"line":35,"column":3}}},"2":{"name":"(anonymous_4)","decl":{"start":{"line":37,"column":12},"end":{"line":37,"column":24}},"loc":{"start":{"line":37,"column":24},"end":{"line":41,"column":3}}},"3":{"name":"(anonymous_5)","decl":{"start":{"line":43,"column":12},"end":{"line":43,"column":23}},"loc":{"start":{"line":43,"column":39},"end":{"line":68,"column":3}}},"4":{"name":"(anonymous_6)","decl":{"start":{"line":59,"column":21},"end":{"line":59,"column":22}},"loc":{"start":{"line":59,"column":65},"end":{"line":62,"column":5}}},"5":{"name":"(anonymous_7)","decl":{"start":{"line":70,"column":12},"end":{"line":70,"column":26}},"loc":{"start":{"line":70,"column":54},"end":{"line":81,"column":3}}},"6":{"name":"(anonymous_8)","decl":{"start":{"line":83,"column":12},"end":{"line":83,"column":17}},"loc":{"start":{"line":84,"column":31},"end":{"line":111,"column":3}}}},"branchMap":{"0":{"loc":{"start":{"line":31,"column":23},"end":{"line":33,"column":21}},"type":"cond-expr","locations":[{"start":{"line":32,"column":8},"end":{"line":32,"column":23}},{"start":{"line":33,"column":8},"end":{"line":33,"column":21}}]},"1":{"loc":{"start":{"line":38,"column":11},"end":{"line":40,"column":33}},"type":"cond-expr","locations":[{"start":{"line":39,"column":8},"end":{"line":39,"column":35}},{"start":{"line":40,"column":8},"end":{"line":40,"column":33}}]},"2":{"loc":{"start":{"line":47,"column":4},"end":{"line":50,"column":5}},"type":"if","locations":[{"start":{"line":47,"column":4},"end":{"line":50,"column":5}}]},"3":{"loc":{"start":{"line":60,"column":6},"end":{"line":60,"column":28}},"type":"if","locations":[{"start":{"line":60,"column":6},"end":{"line":60,"column":28}}]},"4":{"loc":{"start":{"line":61,"column":13},"end":{"line":61,"column":73}},"type":"cond-expr","locations":[{"start":{"line":61,"column":36},"end":{"line":61,"column":58}},{"start":{"line":61,"column":61},"end":{"line":61,"column":73}}]},"5":{"loc":{"start":{"line":61,"column":36},"end":{"line":61,"column":58}},"type":"binary-expr","locations":[{"start":{"line":61,"column":36},"end":{"line":61,"column":52}},{"start":{"line":61,"column":56},"end":{"line":61,"column":58}}]},"6":{"loc":{"start":{"line":73,"column":4},"end":{"line":75,"column":5}},"type":"if","locations":[{"start":{"line":73,"column":4},"end":{"line":75,"column":5}}]},"7":{"loc":{"start":{"line":76,"column":4},"end":{"line":78,"column":5}},"type":"if","locations":[{"start":{"line":76,"column":4},"end":{"line":78,"column":5}}]},"8":{"loc":{"start":{"line":94,"column":6},"end":{"line":98,"column":7}},"type":"if","locations":[{"start":{"line":94,"column":6},"end":{"line":98,"column":7}},{"start":{"line":96,"column":13},"end":{"line":98,"column":7}}]},"9":{"loc":{"start":{"line":100,"column":6},"end":{"line":103,"column":7}},"type":"if","locations":[{"start":{"line":100,"column":6},"end":{"line":103,"column":7}}]},"10":{"loc":{"start":{"line":100,"column":10},"end":{"line":100,"column":42}},"type":"binary-expr","locations":[{"start":{"line":100,"column":10},"end":{"line":100,"column":18}},{"start":{"line":100,"column":22},"end":{"line":100,"column":42}}]}},"s":{"0":17,"1":17,"2":17,"3":17,"4":17,"5":17,"6":7,"7":7,"8":7,"9":7,"10":7,"11":7,"12":41,"13":7,"14":7,"15":7,"16":0,"17":0,"18":7,"19":7,"20":7,"21":7,"22":14,"23":2,"24":12,"25":7,"26":7,"27":7,"28":1,"29":6,"30":1,"31":5,"32":5,"33":5,"34":5,"35":5,"36":5,"37":5,"38":2,"39":3,"40":5,"41":2,"42":2,"43":3,"44":3,"45":0,"46":0,"47":17,"48":17},"f":{"0":7,"1":7,"2":41,"3":7,"4":14,"5":7,"6":5},"b":{"0":[2,5],"1":[14,27],"2":[0],"3":[2],"4":[0,12],"5":[0,0],"6":[1],"7":[1],"8":[2,3],"9":[2],"10":[5,5]}} -,"/home/joao/projects/cracked-dev-cli/src/services/LLM/actions/WriteFileAction.ts": {"path":"/home/joao/projects/cracked-dev-cli/src/services/LLM/actions/WriteFileAction.ts","statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":85}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":73}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":56}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":69}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":24}},"5":{"start":{"line":6,"column":0},"end":{"line":6,"column":42}},"6":{"start":{"line":7,"column":0},"end":{"line":7,"column":60}},"7":{"start":{"line":8,"column":0},"end":{"line":8,"column":94}},"8":{"start":{"line":9,"column":0},"end":{"line":9,"column":47}},"9":{"start":{"line":18,"column":28},"end":{"line":18,"column":30}},"10":{"start":{"line":19,"column":31},"end":{"line":19,"column":64}},"11":{"start":{"line":20,"column":24},"end":{"line":20,"column":29}},"12":{"start":{"line":23,"column":7},"end":{"line":234,"column":null}},"13":{"start":{"line":30,"column":4},"end":{"line":30,"column":31}},"14":{"start":{"line":25,"column":14},"end":{"line":25,"column":35}},"15":{"start":{"line":26,"column":12},"end":{"line":26,"column":28}},"16":{"start":{"line":27,"column":12},"end":{"line":27,"column":31}},"17":{"start":{"line":28,"column":12},"end":{"line":28,"column":25}},"18":{"start":{"line":34,"column":4},"end":{"line":34,"column":46}},"19":{"start":{"line":38,"column":4},"end":{"line":38,"column":46}},"20":{"start":{"line":42,"column":4},"end":{"line":42,"column":46}},"21":{"start":{"line":46,"column":4},"end":{"line":46,"column":21}},"22":{"start":{"line":50,"column":4},"end":{"line":75,"column":5}},"23":{"start":{"line":51,"column":42},"end":{"line":51,"column":67}},"24":{"start":{"line":53,"column":6},"end":{"line":55,"column":7}},"25":{"start":{"line":54,"column":8},"end":{"line":54,"column":39}},"26":{"start":{"line":56,"column":6},"end":{"line":58,"column":7}},"27":{"start":{"line":57,"column":8},"end":{"line":57,"column":42}},"28":{"start":{"line":61,"column":6},"end":{"line":63,"column":7}},"29":{"start":{"line":62,"column":8},"end":{"line":62,"column":47}},"30":{"start":{"line":66,"column":31},"end":{"line":66,"column":65}},"31":{"start":{"line":67,"column":6},"end":{"line":69,"column":7}},"32":{"start":{"line":68,"column":8},"end":{"line":68,"column":137}},"33":{"start":{"line":71,"column":6},"end":{"line":71,"column":18}},"34":{"start":{"line":73,"column":6},"end":{"line":73,"column":57}},"35":{"start":{"line":74,"column":6},"end":{"line":74,"column":91}},"36":{"start":{"line":82,"column":4},"end":{"line":101,"column":5}},"37":{"start":{"line":84,"column":6},"end":{"line":93,"column":7}},"38":{"start":{"line":85,"column":29},"end":{"line":85,"column":76}},"39":{"start":{"line":86,"column":8},"end":{"line":91,"column":9}},"40":{"start":{"line":87,"column":10},"end":{"line":89,"column":12}},"41":{"start":{"line":90,"column":10},"end":{"line":90,"column":22}},"42":{"start":{"line":92,"column":8},"end":{"line":92,"column":38}},"43":{"start":{"line":96,"column":20},"end":{"line":96,"column":63}},"44":{"start":{"line":97,"column":6},"end":{"line":97,"column":53}},"45":{"start":{"line":99,"column":6},"end":{"line":99,"column":73}},"46":{"start":{"line":100,"column":6},"end":{"line":100,"column":18}},"47":{"start":{"line":107,"column":4},"end":{"line":148,"column":5}},"48":{"start":{"line":109,"column":8},"end":{"line":109,"column":33}},"49":{"start":{"line":112,"column":23},"end":{"line":112,"column":70}},"50":{"start":{"line":113,"column":6},"end":{"line":113,"column":51}},"51":{"start":{"line":116,"column":27},"end":{"line":116,"column":78}},"52":{"start":{"line":117,"column":6},"end":{"line":119,"column":7}},"53":{"start":{"line":118,"column":8},"end":{"line":118,"column":28}},"54":{"start":{"line":122,"column":29},"end":{"line":124,"column":8}},"55":{"start":{"line":125,"column":6},"end":{"line":129,"column":7}},"56":{"start":{"line":126,"column":8},"end":{"line":128,"column":10}},"57":{"start":{"line":132,"column":21},"end":{"line":132,"column":78}},"58":{"start":{"line":134,"column":6},"end":{"line":137,"column":7}},"59":{"start":{"line":135,"column":8},"end":{"line":135,"column":75}},"60":{"start":{"line":136,"column":8},"end":{"line":136,"column":53}},"61":{"start":{"line":139,"column":6},"end":{"line":141,"column":8}},"62":{"start":{"line":142,"column":6},"end":{"line":142,"column":40}},"63":{"start":{"line":144,"column":6},"end":{"line":144,"column":69}},"64":{"start":{"line":145,"column":6},"end":{"line":147,"column":8}},"65":{"start":{"line":155,"column":4},"end":{"line":195,"column":5}},"66":{"start":{"line":156,"column":21},"end":{"line":156,"column":63}},"67":{"start":{"line":157,"column":6},"end":{"line":160,"column":7}},"68":{"start":{"line":158,"column":8},"end":{"line":158,"column":55}},"69":{"start":{"line":159,"column":8},"end":{"line":159,"column":42}},"70":{"start":{"line":162,"column":6},"end":{"line":162,"column":50}},"71":{"start":{"line":163,"column":6},"end":{"line":163,"column":51}},"72":{"start":{"line":165,"column":25},"end":{"line":165,"column":65}},"73":{"start":{"line":166,"column":6},"end":{"line":171,"column":7}},"74":{"start":{"line":167,"column":8},"end":{"line":169,"column":10}},"75":{"start":{"line":170,"column":8},"end":{"line":170,"column":42}},"76":{"start":{"line":173,"column":30},"end":{"line":173,"column":55}},"77":{"start":{"line":174,"column":32},"end":{"line":176,"column":null}},"78":{"start":{"line":179,"column":6},"end":{"line":181,"column":8}},"79":{"start":{"line":183,"column":6},"end":{"line":187,"column":7}},"80":{"start":{"line":184,"column":8},"end":{"line":186,"column":10}},"81":{"start":{"line":189,"column":6},"end":{"line":189,"column":40}},"82":{"start":{"line":191,"column":6},"end":{"line":191,"column":60}},"83":{"start":{"line":192,"column":6},"end":{"line":194,"column":8}},"84":{"start":{"line":202,"column":27},"end":{"line":202,"column":56}},"85":{"start":{"line":203,"column":22},"end":{"line":203,"column":46}},"86":{"start":{"line":205,"column":4},"end":{"line":205,"column":39}},"87":{"start":{"line":205,"column":30},"end":{"line":205,"column":39}},"88":{"start":{"line":207,"column":26},"end":{"line":207,"column":65}},"89":{"start":{"line":208,"column":4},"end":{"line":208,"column":50}},"90":{"start":{"line":212,"column":4},"end":{"line":232,"column":5}},"91":{"start":{"line":214,"column":6},"end":{"line":217,"column":7}},"92":{"start":{"line":215,"column":8},"end":{"line":215,"column":55}},"93":{"start":{"line":216,"column":8},"end":{"line":216,"column":21}},"94":{"start":{"line":220,"column":32},"end":{"line":222,"column":54}},"95":{"start":{"line":222,"column":24},"end":{"line":222,"column":53}},"96":{"start":{"line":223,"column":6},"end":{"line":226,"column":7}},"97":{"start":{"line":224,"column":8},"end":{"line":224,"column":67}},"98":{"start":{"line":225,"column":8},"end":{"line":225,"column":21}},"99":{"start":{"line":228,"column":6},"end":{"line":228,"column":18}},"100":{"start":{"line":230,"column":6},"end":{"line":230,"column":57}},"101":{"start":{"line":231,"column":6},"end":{"line":231,"column":19}},"102":{"start":{"line":23,"column":13},"end":{"line":23,"column":28}},"103":{"start":{"line":23,"column":13},"end":{"line":234,"column":null}}},"fnMap":{"0":{"name":"(anonymous_3)","decl":{"start":{"line":24,"column":2},"end":{"line":24,"column":null}},"loc":{"start":{"line":28,"column":36},"end":{"line":31,"column":3}}},"1":{"name":"(anonymous_4)","decl":{"start":{"line":33,"column":12},"end":{"line":33,"column":22}},"loc":{"start":{"line":33,"column":38},"end":{"line":35,"column":3}}},"2":{"name":"(anonymous_5)","decl":{"start":{"line":37,"column":12},"end":{"line":37,"column":20}},"loc":{"start":{"line":37,"column":36},"end":{"line":39,"column":3}}},"3":{"name":"(anonymous_6)","decl":{"start":{"line":41,"column":12},"end":{"line":41,"column":19}},"loc":{"start":{"line":41,"column":35},"end":{"line":43,"column":3}}},"4":{"name":"(anonymous_7)","decl":{"start":{"line":45,"column":12},"end":{"line":45,"column":24}},"loc":{"start":{"line":45,"column":24},"end":{"line":47,"column":3}}},"5":{"name":"(anonymous_8)","decl":{"start":{"line":49,"column":12},"end":{"line":49,"column":26}},"loc":{"start":{"line":49,"column":54},"end":{"line":76,"column":3}}},"6":{"name":"(anonymous_9)","decl":{"start":{"line":78,"column":12},"end":{"line":78,"column":29}},"loc":{"start":{"line":80,"column":21},"end":{"line":102,"column":3}}},"7":{"name":"(anonymous_10)","decl":{"start":{"line":104,"column":12},"end":{"line":104,"column":17}},"loc":{"start":{"line":105,"column":31},"end":{"line":149,"column":3}}},"8":{"name":"(anonymous_11)","decl":{"start":{"line":151,"column":10},"end":{"line":151,"column":15}},"loc":{"start":{"line":153,"column":22},"end":{"line":196,"column":3}}},"9":{"name":"(anonymous_12)","decl":{"start":{"line":198,"column":10},"end":{"line":198,"column":36}},"loc":{"start":{"line":200,"column":22},"end":{"line":209,"column":3}}},"10":{"name":"(anonymous_13)","decl":{"start":{"line":211,"column":10},"end":{"line":211,"column":24}},"loc":{"start":{"line":211,"column":40},"end":{"line":233,"column":3}}},"11":{"name":"(anonymous_14)","decl":{"start":{"line":222,"column":14},"end":{"line":222,"column":15}},"loc":{"start":{"line":222,"column":24},"end":{"line":222,"column":53}}}},"branchMap":{"0":{"loc":{"start":{"line":53,"column":6},"end":{"line":55,"column":7}},"type":"if","locations":[{"start":{"line":53,"column":6},"end":{"line":55,"column":7}}]},"1":{"loc":{"start":{"line":56,"column":6},"end":{"line":58,"column":7}},"type":"if","locations":[{"start":{"line":56,"column":6},"end":{"line":58,"column":7}}]},"2":{"loc":{"start":{"line":61,"column":6},"end":{"line":63,"column":7}},"type":"if","locations":[{"start":{"line":61,"column":6},"end":{"line":63,"column":7}}]},"3":{"loc":{"start":{"line":67,"column":6},"end":{"line":69,"column":7}},"type":"if","locations":[{"start":{"line":67,"column":6},"end":{"line":69,"column":7}}]},"4":{"loc":{"start":{"line":74,"column":34},"end":{"line":74,"column":88}},"type":"cond-expr","locations":[{"start":{"line":74,"column":59},"end":{"line":74,"column":72}},{"start":{"line":74,"column":75},"end":{"line":74,"column":88}}]},"5":{"loc":{"start":{"line":84,"column":6},"end":{"line":93,"column":7}},"type":"if","locations":[{"start":{"line":84,"column":6},"end":{"line":93,"column":7}}]},"6":{"loc":{"start":{"line":86,"column":8},"end":{"line":91,"column":9}},"type":"if","locations":[{"start":{"line":86,"column":8},"end":{"line":91,"column":9}}]},"7":{"loc":{"start":{"line":97,"column":13},"end":{"line":97,"column":52}},"type":"cond-expr","locations":[{"start":{"line":97,"column":36},"end":{"line":97,"column":44}},{"start":{"line":97,"column":47},"end":{"line":97,"column":52}}]},"8":{"loc":{"start":{"line":117,"column":6},"end":{"line":119,"column":7}},"type":"if","locations":[{"start":{"line":117,"column":6},"end":{"line":119,"column":7}}]},"9":{"loc":{"start":{"line":125,"column":6},"end":{"line":129,"column":7}},"type":"if","locations":[{"start":{"line":125,"column":6},"end":{"line":129,"column":7}}]},"10":{"loc":{"start":{"line":134,"column":6},"end":{"line":137,"column":7}},"type":"if","locations":[{"start":{"line":134,"column":6},"end":{"line":137,"column":7}}]},"11":{"loc":{"start":{"line":146,"column":29},"end":{"line":146,"column":83}},"type":"cond-expr","locations":[{"start":{"line":146,"column":54},"end":{"line":146,"column":67}},{"start":{"line":146,"column":70},"end":{"line":146,"column":83}}]},"12":{"loc":{"start":{"line":157,"column":6},"end":{"line":160,"column":7}},"type":"if","locations":[{"start":{"line":157,"column":6},"end":{"line":160,"column":7}}]},"13":{"loc":{"start":{"line":166,"column":6},"end":{"line":171,"column":7}},"type":"if","locations":[{"start":{"line":166,"column":6},"end":{"line":171,"column":7}}]},"14":{"loc":{"start":{"line":183,"column":6},"end":{"line":187,"column":7}},"type":"if","locations":[{"start":{"line":183,"column":6},"end":{"line":187,"column":7}}]},"15":{"loc":{"start":{"line":193,"column":43},"end":{"line":193,"column":97}},"type":"cond-expr","locations":[{"start":{"line":193,"column":68},"end":{"line":193,"column":81}},{"start":{"line":193,"column":84},"end":{"line":193,"column":97}}]},"16":{"loc":{"start":{"line":205,"column":4},"end":{"line":205,"column":39}},"type":"if","locations":[{"start":{"line":205,"column":4},"end":{"line":205,"column":39}}]},"17":{"loc":{"start":{"line":214,"column":6},"end":{"line":217,"column":7}},"type":"if","locations":[{"start":{"line":214,"column":6},"end":{"line":217,"column":7}}]},"18":{"loc":{"start":{"line":223,"column":6},"end":{"line":226,"column":7}},"type":"if","locations":[{"start":{"line":223,"column":6},"end":{"line":226,"column":7}}]}},"s":{"0":17,"1":17,"2":17,"3":17,"4":17,"5":17,"6":17,"7":17,"8":17,"9":17,"10":17,"11":17,"12":17,"13":24,"14":24,"15":24,"16":24,"17":24,"18":4,"19":9,"20":56,"21":59,"22":22,"23":22,"24":22,"25":1,"26":21,"27":1,"28":20,"29":1,"30":19,"31":19,"32":1,"33":18,"34":0,"35":0,"36":44,"37":44,"38":22,"39":22,"40":1,"41":1,"42":21,"43":22,"44":22,"45":0,"46":0,"47":18,"48":18,"49":18,"50":18,"51":18,"52":18,"53":1,"54":17,"55":17,"56":2,"57":15,"58":15,"59":1,"60":1,"61":14,"62":14,"63":0,"64":0,"65":18,"66":18,"67":18,"68":11,"69":11,"70":7,"71":7,"72":7,"73":7,"74":1,"75":1,"76":6,"77":6,"78":6,"79":6,"80":1,"81":5,"82":0,"83":0,"84":6,"85":6,"86":6,"87":1,"88":5,"89":5,"90":17,"91":17,"92":1,"93":1,"94":16,"95":28,"96":16,"97":1,"98":1,"99":15,"100":0,"101":0,"102":17,"103":17},"f":{"0":24,"1":4,"2":9,"3":56,"4":59,"5":22,"6":44,"7":18,"8":18,"9":6,"10":17,"11":28},"b":{"0":[1],"1":[1],"2":[1],"3":[1],"4":[0,0],"5":[22],"6":[1],"7":[0,22],"8":[1],"9":[2],"10":[1],"11":[0,0],"12":[11],"13":[1],"14":[1],"15":[0,0],"16":[1],"17":[1],"18":[1]}} -,"/home/joao/projects/cracked-dev-cli/src/services/LLM/actions/blueprints/commandActionBlueprint.ts": {"path":"/home/joao/projects/cracked-dev-cli/src/services/LLM/actions/blueprints/commandActionBlueprint.ts","statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":49}},"1":{"start":{"line":3,"column":0},"end":{"line":3,"column":57}},"2":{"start":{"line":5,"column":13},"end":{"line":13,"column":2}}},"fnMap":{},"branchMap":{},"s":{"0":16,"1":16,"2":16},"f":{},"b":{}} -,"/home/joao/projects/cracked-dev-cli/src/services/LLM/actions/blueprints/copyFileActionBlueprint.ts": {"path":"/home/joao/projects/cracked-dev-cli/src/services/LLM/actions/blueprints/copyFileActionBlueprint.ts","statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":51}},"1":{"start":{"line":3,"column":0},"end":{"line":3,"column":57}},"2":{"start":{"line":5,"column":13},"end":{"line":26,"column":2}},"3":{"start":{"line":17,"column":33},"end":{"line":17,"column":78}},"4":{"start":{"line":23,"column":33},"end":{"line":23,"column":78}}},"fnMap":{"0":{"name":"(anonymous_0)","decl":{"start":{"line":17,"column":17},"end":{"line":17,"column":18}},"loc":{"start":{"line":17,"column":33},"end":{"line":17,"column":78}}},"1":{"name":"(anonymous_1)","decl":{"start":{"line":23,"column":17},"end":{"line":23,"column":18}},"loc":{"start":{"line":23,"column":33},"end":{"line":23,"column":78}}}},"branchMap":{"0":{"loc":{"start":{"line":17,"column":33},"end":{"line":17,"column":78}},"type":"binary-expr","locations":[{"start":{"line":17,"column":33},"end":{"line":17,"column":58}},{"start":{"line":17,"column":62},"end":{"line":17,"column":78}}]},"1":{"loc":{"start":{"line":23,"column":33},"end":{"line":23,"column":78}},"type":"binary-expr","locations":[{"start":{"line":23,"column":33},"end":{"line":23,"column":58}},{"start":{"line":23,"column":62},"end":{"line":23,"column":78}}]}},"s":{"0":16,"1":16,"2":16,"3":0,"4":0},"f":{"0":0,"1":0},"b":{"0":[0,0],"1":[0,0]}} -,"/home/joao/projects/cracked-dev-cli/src/services/LLM/actions/blueprints/deleteFileActionBlueprint.ts": {"path":"/home/joao/projects/cracked-dev-cli/src/services/LLM/actions/blueprints/deleteFileActionBlueprint.ts","statementMap":{"0":{"start":{"line":2,"column":0},"end":{"line":2,"column":55}},"1":{"start":{"line":3,"column":0},"end":{"line":3,"column":57}},"2":{"start":{"line":5,"column":13},"end":{"line":20,"column":2}},"3":{"start":{"line":17,"column":33},"end":{"line":17,"column":78}}},"fnMap":{"0":{"name":"(anonymous_0)","decl":{"start":{"line":17,"column":17},"end":{"line":17,"column":18}},"loc":{"start":{"line":17,"column":33},"end":{"line":17,"column":78}}}},"branchMap":{"0":{"loc":{"start":{"line":17,"column":33},"end":{"line":17,"column":78}},"type":"binary-expr","locations":[{"start":{"line":17,"column":33},"end":{"line":17,"column":58}},{"start":{"line":17,"column":62},"end":{"line":17,"column":78}}]}},"s":{"0":16,"1":16,"2":16,"3":0},"f":{"0":0},"b":{"0":[0,0]}} -,"/home/joao/projects/cracked-dev-cli/src/services/LLM/actions/blueprints/endPhaseActionBlueprint.ts": {"path":"/home/joao/projects/cracked-dev-cli/src/services/LLM/actions/blueprints/endPhaseActionBlueprint.ts","statementMap":{"0":{"start":{"line":2,"column":0},"end":{"line":2,"column":51}},"1":{"start":{"line":3,"column":0},"end":{"line":3,"column":57}},"2":{"start":{"line":5,"column":13},"end":{"line":12,"column":2}}},"fnMap":{},"branchMap":{},"s":{"0":16,"1":16,"2":16},"f":{},"b":{}} -,"/home/joao/projects/cracked-dev-cli/src/services/LLM/actions/blueprints/endTaskActionBlueprint.ts": {"path":"/home/joao/projects/cracked-dev-cli/src/services/LLM/actions/blueprints/endTaskActionBlueprint.ts","statementMap":{"0":{"start":{"line":2,"column":0},"end":{"line":2,"column":49}},"1":{"start":{"line":3,"column":0},"end":{"line":3,"column":57}},"2":{"start":{"line":5,"column":13},"end":{"line":13,"column":2}}},"fnMap":{},"branchMap":{},"s":{"0":16,"1":16,"2":16},"f":{},"b":{}} -,"/home/joao/projects/cracked-dev-cli/src/services/LLM/actions/blueprints/fetchUrlActionBlueprint.ts": {"path":"/home/joao/projects/cracked-dev-cli/src/services/LLM/actions/blueprints/fetchUrlActionBlueprint.ts","statementMap":{"0":{"start":{"line":2,"column":0},"end":{"line":2,"column":51}},"1":{"start":{"line":3,"column":0},"end":{"line":3,"column":57}},"2":{"start":{"line":5,"column":13},"end":{"line":23,"column":2}},"3":{"start":{"line":18,"column":8},"end":{"line":20,"column":69}}},"fnMap":{"0":{"name":"(anonymous_0)","decl":{"start":{"line":17,"column":17},"end":{"line":17,"column":18}},"loc":{"start":{"line":18,"column":8},"end":{"line":20,"column":69}}}},"branchMap":{"0":{"loc":{"start":{"line":18,"column":8},"end":{"line":20,"column":69}},"type":"binary-expr","locations":[{"start":{"line":18,"column":8},"end":{"line":18,"column":33}},{"start":{"line":19,"column":8},"end":{"line":19,"column":24}},{"start":{"line":20,"column":9},"end":{"line":20,"column":36}},{"start":{"line":20,"column":40},"end":{"line":20,"column":68}}]}},"s":{"0":16,"1":16,"2":16,"3":0},"f":{"0":0},"b":{"0":[0,0,0,0]}} -,"/home/joao/projects/cracked-dev-cli/src/services/LLM/actions/blueprints/index.ts": {"path":"/home/joao/projects/cracked-dev-cli/src/services/LLM/actions/blueprints/index.ts","statementMap":{"0":{"start":{"line":36,"column":0},"end":{"line":36,"column":16}},"1":{"start":{"line":41,"column":0},"end":{"line":41,"column":16}},"2":{"start":{"line":46,"column":0},"end":{"line":46,"column":16}},"3":{"start":{"line":52,"column":0},"end":{"line":52,"column":16}},"4":{"start":{"line":2,"column":0},"end":{"line":2,"column":66}},"5":{"start":{"line":3,"column":0},"end":{"line":3,"column":68}},"6":{"start":{"line":4,"column":0},"end":{"line":4,"column":72}},"7":{"start":{"line":5,"column":0},"end":{"line":5,"column":68}},"8":{"start":{"line":6,"column":0},"end":{"line":6,"column":66}},"9":{"start":{"line":7,"column":0},"end":{"line":7,"column":68}},"10":{"start":{"line":8,"column":0},"end":{"line":8,"column":68}},"11":{"start":{"line":9,"column":0},"end":{"line":9,"column":68}},"12":{"start":{"line":10,"column":0},"end":{"line":10,"column":88}},"13":{"start":{"line":11,"column":0},"end":{"line":11,"column":null}},"14":{"start":{"line":15,"column":0},"end":{"line":15,"column":70}},"15":{"start":{"line":17,"column":13},"end":{"line":30,"column":11}},"16":{"start":{"line":37,"column":2},"end":{"line":37,"column":32}},"17":{"start":{"line":42,"column":2},"end":{"line":42,"column":55}},"18":{"start":{"line":47,"column":20},"end":{"line":47,"column":42}},"19":{"start":{"line":48,"column":2},"end":{"line":48,"column":59}},"20":{"start":{"line":53,"column":2},"end":{"line":53,"column":53}}},"fnMap":{"0":{"name":"getBlueprint","decl":{"start":{"line":36,"column":16},"end":{"line":36,"column":28}},"loc":{"start":{"line":36,"column":43},"end":{"line":38,"column":1}}},"1":{"name":"getActionTags","decl":{"start":{"line":41,"column":16},"end":{"line":41,"column":29}},"loc":{"start":{"line":41,"column":29},"end":{"line":43,"column":1}}},"2":{"name":"isActionImplemented","decl":{"start":{"line":46,"column":16},"end":{"line":46,"column":35}},"loc":{"start":{"line":46,"column":50},"end":{"line":49,"column":1}}},"3":{"name":"getImplementedActions","decl":{"start":{"line":52,"column":16},"end":{"line":52,"column":37}},"loc":{"start":{"line":52,"column":37},"end":{"line":54,"column":1}}}},"branchMap":{"0":{"loc":{"start":{"line":48,"column":12},"end":{"line":48,"column":57}},"type":"binary-expr","locations":[{"start":{"line":48,"column":12},"end":{"line":48,"column":21}},{"start":{"line":48,"column":25},"end":{"line":48,"column":40}},{"start":{"line":48,"column":44},"end":{"line":48,"column":57}}]}},"s":{"0":16,"1":16,"2":16,"3":16,"4":16,"5":16,"6":16,"7":16,"8":16,"9":16,"10":16,"11":16,"12":16,"13":16,"14":16,"15":16,"16":122,"17":133,"18":1596,"19":1596,"20":133},"f":{"0":122,"1":133,"2":1596,"3":133},"b":{"0":[1596,1596,1596]}} -,"/home/joao/projects/cracked-dev-cli/src/services/LLM/actions/blueprints/moveFileActionBlueprint.ts": {"path":"/home/joao/projects/cracked-dev-cli/src/services/LLM/actions/blueprints/moveFileActionBlueprint.ts","statementMap":{"0":{"start":{"line":2,"column":0},"end":{"line":2,"column":51}},"1":{"start":{"line":3,"column":0},"end":{"line":3,"column":57}},"2":{"start":{"line":5,"column":13},"end":{"line":26,"column":2}},"3":{"start":{"line":17,"column":33},"end":{"line":17,"column":78}},"4":{"start":{"line":23,"column":33},"end":{"line":23,"column":78}}},"fnMap":{"0":{"name":"(anonymous_0)","decl":{"start":{"line":17,"column":17},"end":{"line":17,"column":18}},"loc":{"start":{"line":17,"column":33},"end":{"line":17,"column":78}}},"1":{"name":"(anonymous_1)","decl":{"start":{"line":23,"column":17},"end":{"line":23,"column":18}},"loc":{"start":{"line":23,"column":33},"end":{"line":23,"column":78}}}},"branchMap":{"0":{"loc":{"start":{"line":17,"column":33},"end":{"line":17,"column":78}},"type":"binary-expr","locations":[{"start":{"line":17,"column":33},"end":{"line":17,"column":58}},{"start":{"line":17,"column":62},"end":{"line":17,"column":78}}]},"1":{"loc":{"start":{"line":23,"column":33},"end":{"line":23,"column":78}},"type":"binary-expr","locations":[{"start":{"line":23,"column":33},"end":{"line":23,"column":58}},{"start":{"line":23,"column":62},"end":{"line":23,"column":78}}]}},"s":{"0":17,"1":17,"2":17,"3":0,"4":0},"f":{"0":0,"1":0},"b":{"0":[0,0],"1":[0,0]}} -,"/home/joao/projects/cracked-dev-cli/src/services/LLM/actions/blueprints/readFileActionBlueprint.ts": {"path":"/home/joao/projects/cracked-dev-cli/src/services/LLM/actions/blueprints/readFileActionBlueprint.ts","statementMap":{"0":{"start":{"line":2,"column":0},"end":{"line":2,"column":51}},"1":{"start":{"line":3,"column":0},"end":{"line":3,"column":57}},"2":{"start":{"line":5,"column":13},"end":{"line":22,"column":2}},"3":{"start":{"line":19,"column":8},"end":{"line":19,"column":53}}},"fnMap":{"0":{"name":"(anonymous_0)","decl":{"start":{"line":18,"column":17},"end":{"line":18,"column":18}},"loc":{"start":{"line":19,"column":8},"end":{"line":19,"column":53}}}},"branchMap":{"0":{"loc":{"start":{"line":19,"column":8},"end":{"line":19,"column":53}},"type":"binary-expr","locations":[{"start":{"line":19,"column":8},"end":{"line":19,"column":33}},{"start":{"line":19,"column":37},"end":{"line":19,"column":53}}]}},"s":{"0":16,"1":16,"2":16,"3":0},"f":{"0":0},"b":{"0":[0,0]}} -,"/home/joao/projects/cracked-dev-cli/src/services/LLM/actions/blueprints/relativePathLookupActionBlueprint.ts": {"path":"/home/joao/projects/cracked-dev-cli/src/services/LLM/actions/blueprints/relativePathLookupActionBlueprint.ts","statementMap":{"0":{"start":{"line":2,"column":0},"end":{"line":2,"column":71}},"1":{"start":{"line":3,"column":0},"end":{"line":3,"column":57}},"2":{"start":{"line":5,"column":13},"end":{"line":33,"column":2}},"3":{"start":{"line":17,"column":33},"end":{"line":17,"column":78}},"4":{"start":{"line":23,"column":33},"end":{"line":23,"column":78}},"5":{"start":{"line":30,"column":8},"end":{"line":30,"column":72}}},"fnMap":{"0":{"name":"(anonymous_0)","decl":{"start":{"line":17,"column":17},"end":{"line":17,"column":18}},"loc":{"start":{"line":17,"column":33},"end":{"line":17,"column":78}}},"1":{"name":"(anonymous_1)","decl":{"start":{"line":23,"column":17},"end":{"line":23,"column":18}},"loc":{"start":{"line":23,"column":33},"end":{"line":23,"column":78}}},"2":{"name":"(anonymous_2)","decl":{"start":{"line":29,"column":17},"end":{"line":29,"column":18}},"loc":{"start":{"line":30,"column":8},"end":{"line":30,"column":72}}}},"branchMap":{"0":{"loc":{"start":{"line":17,"column":33},"end":{"line":17,"column":78}},"type":"binary-expr","locations":[{"start":{"line":17,"column":33},"end":{"line":17,"column":58}},{"start":{"line":17,"column":62},"end":{"line":17,"column":78}}]},"1":{"loc":{"start":{"line":23,"column":33},"end":{"line":23,"column":78}},"type":"binary-expr","locations":[{"start":{"line":23,"column":33},"end":{"line":23,"column":58}},{"start":{"line":23,"column":62},"end":{"line":23,"column":78}}]},"2":{"loc":{"start":{"line":30,"column":8},"end":{"line":30,"column":72}},"type":"binary-expr","locations":[{"start":{"line":30,"column":8},"end":{"line":30,"column":14}},{"start":{"line":30,"column":19},"end":{"line":30,"column":44}},{"start":{"line":30,"column":48},"end":{"line":30,"column":57}},{"start":{"line":30,"column":61},"end":{"line":30,"column":71}}]}},"s":{"0":17,"1":17,"2":17,"3":0,"4":0,"5":0},"f":{"0":0,"1":0,"2":0},"b":{"0":[0,0],"1":[0,0],"2":[0,0,0,0]}} -,"/home/joao/projects/cracked-dev-cli/src/services/LLM/actions/blueprints/searchActionsBlueprint.ts": {"path":"/home/joao/projects/cracked-dev-cli/src/services/LLM/actions/blueprints/searchActionsBlueprint.ts","statementMap":{"0":{"start":{"line":2,"column":0},"end":{"line":2,"column":47}},"1":{"start":{"line":3,"column":0},"end":{"line":3,"column":57}},"2":{"start":{"line":5,"column":13},"end":{"line":26,"column":2}},"3":{"start":{"line":17,"column":33},"end":{"line":17,"column":78}},"4":{"start":{"line":23,"column":33},"end":{"line":23,"column":78}},"5":{"start":{"line":28,"column":13},"end":{"line":49,"column":2}},"6":{"start":{"line":40,"column":33},"end":{"line":40,"column":78}},"7":{"start":{"line":46,"column":33},"end":{"line":46,"column":78}}},"fnMap":{"0":{"name":"(anonymous_0)","decl":{"start":{"line":17,"column":17},"end":{"line":17,"column":18}},"loc":{"start":{"line":17,"column":33},"end":{"line":17,"column":78}}},"1":{"name":"(anonymous_1)","decl":{"start":{"line":23,"column":17},"end":{"line":23,"column":18}},"loc":{"start":{"line":23,"column":33},"end":{"line":23,"column":78}}},"2":{"name":"(anonymous_2)","decl":{"start":{"line":40,"column":17},"end":{"line":40,"column":18}},"loc":{"start":{"line":40,"column":33},"end":{"line":40,"column":78}}},"3":{"name":"(anonymous_3)","decl":{"start":{"line":46,"column":17},"end":{"line":46,"column":18}},"loc":{"start":{"line":46,"column":33},"end":{"line":46,"column":78}}}},"branchMap":{"0":{"loc":{"start":{"line":17,"column":33},"end":{"line":17,"column":78}},"type":"binary-expr","locations":[{"start":{"line":17,"column":33},"end":{"line":17,"column":58}},{"start":{"line":17,"column":62},"end":{"line":17,"column":78}}]},"1":{"loc":{"start":{"line":23,"column":33},"end":{"line":23,"column":78}},"type":"binary-expr","locations":[{"start":{"line":23,"column":33},"end":{"line":23,"column":58}},{"start":{"line":23,"column":62},"end":{"line":23,"column":78}}]},"2":{"loc":{"start":{"line":40,"column":33},"end":{"line":40,"column":78}},"type":"binary-expr","locations":[{"start":{"line":40,"column":33},"end":{"line":40,"column":58}},{"start":{"line":40,"column":62},"end":{"line":40,"column":78}}]},"3":{"loc":{"start":{"line":46,"column":33},"end":{"line":46,"column":78}},"type":"binary-expr","locations":[{"start":{"line":46,"column":33},"end":{"line":46,"column":58}},{"start":{"line":46,"column":62},"end":{"line":46,"column":78}}]}},"s":{"0":17,"1":17,"2":17,"3":0,"4":0,"5":17,"6":0,"7":0},"f":{"0":0,"1":0,"2":0,"3":0},"b":{"0":[0,0],"1":[0,0],"2":[0,0],"3":[0,0]}} -,"/home/joao/projects/cracked-dev-cli/src/services/LLM/actions/blueprints/writeFileActionBlueprint.ts": {"path":"/home/joao/projects/cracked-dev-cli/src/services/LLM/actions/blueprints/writeFileActionBlueprint.ts","statementMap":{"0":{"start":{"line":2,"column":0},"end":{"line":2,"column":57}},"1":{"start":{"line":3,"column":0},"end":{"line":3,"column":53}},"2":{"start":{"line":5,"column":13},"end":{"line":29,"column":2}},"3":{"start":{"line":19,"column":8},"end":{"line":19,"column":53}},"4":{"start":{"line":26,"column":54},"end":{"line":26,"column":79}}},"fnMap":{"0":{"name":"(anonymous_0)","decl":{"start":{"line":18,"column":17},"end":{"line":18,"column":18}},"loc":{"start":{"line":19,"column":8},"end":{"line":19,"column":53}}},"1":{"name":"(anonymous_1)","decl":{"start":{"line":26,"column":17},"end":{"line":26,"column":18}},"loc":{"start":{"line":26,"column":54},"end":{"line":26,"column":79}}}},"branchMap":{"0":{"loc":{"start":{"line":19,"column":8},"end":{"line":19,"column":53}},"type":"binary-expr","locations":[{"start":{"line":19,"column":8},"end":{"line":19,"column":33}},{"start":{"line":19,"column":37},"end":{"line":19,"column":53}}]}},"s":{"0":17,"1":17,"2":17,"3":0,"4":0},"f":{"0":0,"1":0},"b":{"0":[0,0]}} -,"/home/joao/projects/cracked-dev-cli/src/services/LLM/actions/core/ActionFactory.ts": {"path":"/home/joao/projects/cracked-dev-cli/src/services/LLM/actions/core/ActionFactory.ts","statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":53}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":null}},"2":{"start":{"line":10,"column":7},"end":{"line":80,"column":null}},"3":{"start":{"line":11,"column":10},"end":{"line":11,"column":68}},"4":{"start":{"line":12,"column":10},"end":{"line":12,"column":58}},"5":{"start":{"line":16,"column":31},"end":{"line":16,"column":54}},"6":{"start":{"line":17,"column":4},"end":{"line":22,"column":7}},"7":{"start":{"line":18,"column":24},"end":{"line":18,"column":46}},"8":{"start":{"line":19,"column":6},"end":{"line":21,"column":7}},"9":{"start":{"line":20,"column":8},"end":{"line":20,"column":48}},"10":{"start":{"line":26,"column":4},"end":{"line":26,"column":40}},"11":{"start":{"line":30,"column":4},"end":{"line":30,"column":52}},"12":{"start":{"line":35,"column":4},"end":{"line":37,"column":5}},"13":{"start":{"line":36,"column":6},"end":{"line":36,"column":41}},"14":{"start":{"line":39,"column":22},"end":{"line":39,"column":44}},"15":{"start":{"line":40,"column":4},"end":{"line":42,"column":5}},"16":{"start":{"line":41,"column":6},"end":{"line":41,"column":23}},"17":{"start":{"line":44,"column":4},"end":{"line":52,"column":5}},"18":{"start":{"line":46,"column":23},"end":{"line":46,"column":68}},"19":{"start":{"line":47,"column":6},"end":{"line":47,"column":44}},"20":{"start":{"line":48,"column":6},"end":{"line":48,"column":22}},"21":{"start":{"line":50,"column":6},"end":{"line":50,"column":75}},"22":{"start":{"line":51,"column":6},"end":{"line":51,"column":23}},"23":{"start":{"line":56,"column":22},"end":{"line":56,"column":44}},"24":{"start":{"line":57,"column":4},"end":{"line":59,"column":5}},"25":{"start":{"line":58,"column":6},"end":{"line":58,"column":43}},"26":{"start":{"line":61,"column":4},"end":{"line":63,"column":5}},"27":{"start":{"line":62,"column":6},"end":{"line":62,"column":18}},"28":{"start":{"line":65,"column":4},"end":{"line":76,"column":5}},"29":{"start":{"line":66,"column":6},"end":{"line":68,"column":7}},"30":{"start":{"line":67,"column":8},"end":{"line":67,"column":59}},"31":{"start":{"line":70,"column":6},"end":{"line":75,"column":7}},"32":{"start":{"line":71,"column":24},"end":{"line":71,"column":59}},"33":{"start":{"line":72,"column":8},"end":{"line":74,"column":9}},"34":{"start":{"line":73,"column":10},"end":{"line":73,"column":62}},"35":{"start":{"line":78,"column":4},"end":{"line":78,"column":16}},"36":{"start":{"line":10,"column":13},"end":{"line":10,"column":26}},"37":{"start":{"line":10,"column":13},"end":{"line":80,"column":null}}},"fnMap":{"0":{"name":"(anonymous_2)","decl":{"start":{"line":14,"column":2},"end":{"line":14,"column":null}},"loc":{"start":{"line":14,"column":2},"end":{"line":23,"column":3}}},"1":{"name":"(anonymous_3)","decl":{"start":{"line":17,"column":31},"end":{"line":17,"column":32}},"loc":{"start":{"line":17,"column":39},"end":{"line":22,"column":5}}},"2":{"name":"(anonymous_4)","decl":{"start":{"line":25,"column":2},"end":{"line":25,"column":14}},"loc":{"start":{"line":25,"column":26},"end":{"line":27,"column":3}}},"3":{"name":"(anonymous_5)","decl":{"start":{"line":29,"column":2},"end":{"line":29,"column":18}},"loc":{"start":{"line":29,"column":18},"end":{"line":31,"column":3}}},"4":{"name":"(anonymous_6)","decl":{"start":{"line":33,"column":2},"end":{"line":33,"column":14}},"loc":{"start":{"line":33,"column":29},"end":{"line":53,"column":3}}},"5":{"name":"(anonymous_7)","decl":{"start":{"line":55,"column":2},"end":{"line":55,"column":20}},"loc":{"start":{"line":55,"column":61},"end":{"line":79,"column":3}}}},"branchMap":{"0":{"loc":{"start":{"line":19,"column":6},"end":{"line":21,"column":7}},"type":"if","locations":[{"start":{"line":19,"column":6},"end":{"line":21,"column":7}}]},"1":{"loc":{"start":{"line":35,"column":4},"end":{"line":37,"column":5}},"type":"if","locations":[{"start":{"line":35,"column":4},"end":{"line":37,"column":5}}]},"2":{"loc":{"start":{"line":40,"column":4},"end":{"line":42,"column":5}},"type":"if","locations":[{"start":{"line":40,"column":4},"end":{"line":42,"column":5}}]},"3":{"loc":{"start":{"line":40,"column":8},"end":{"line":40,"column":38}},"type":"binary-expr","locations":[{"start":{"line":40,"column":8},"end":{"line":40,"column":18}},{"start":{"line":40,"column":22},"end":{"line":40,"column":38}}]},"4":{"loc":{"start":{"line":57,"column":4},"end":{"line":59,"column":5}},"type":"if","locations":[{"start":{"line":57,"column":4},"end":{"line":59,"column":5}}]},"5":{"loc":{"start":{"line":61,"column":4},"end":{"line":63,"column":5}},"type":"if","locations":[{"start":{"line":61,"column":4},"end":{"line":63,"column":5}}]},"6":{"loc":{"start":{"line":66,"column":6},"end":{"line":68,"column":7}},"type":"if","locations":[{"start":{"line":66,"column":6},"end":{"line":68,"column":7}}]},"7":{"loc":{"start":{"line":66,"column":10},"end":{"line":66,"column":51}},"type":"binary-expr","locations":[{"start":{"line":66,"column":10},"end":{"line":66,"column":24}},{"start":{"line":66,"column":28},"end":{"line":66,"column":51}}]},"8":{"loc":{"start":{"line":70,"column":6},"end":{"line":75,"column":7}},"type":"if","locations":[{"start":{"line":70,"column":6},"end":{"line":75,"column":7}}]},"9":{"loc":{"start":{"line":70,"column":10},"end":{"line":70,"column":61}},"type":"binary-expr","locations":[{"start":{"line":70,"column":10},"end":{"line":70,"column":25}},{"start":{"line":70,"column":29},"end":{"line":70,"column":61}}]},"10":{"loc":{"start":{"line":72,"column":8},"end":{"line":74,"column":9}},"type":"if","locations":[{"start":{"line":72,"column":8},"end":{"line":74,"column":9}}]}},"s":{"0":6,"1":6,"2":6,"3":100,"4":100,"5":100,"6":100,"7":1200,"8":1200,"9":1200,"10":2,"11":0,"12":2,"13":0,"14":2,"15":2,"16":0,"17":2,"18":2,"19":2,"20":2,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":6,"37":6},"f":{"0":100,"1":1200,"2":2,"3":0,"4":2,"5":0},"b":{"0":[1200],"1":[0],"2":[0],"3":[2,2],"4":[0],"5":[0],"6":[0],"7":[0,0],"8":[0],"9":[0,0],"10":[0]}} -,"/home/joao/projects/cracked-dev-cli/src/services/LLM/actions/core/ActionQueue.ts": {"path":"/home/joao/projects/cracked-dev-cli/src/services/LLM/actions/core/ActionQueue.ts","statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":37}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":56}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":57}},"3":{"start":{"line":15,"column":7},"end":{"line":96,"column":null}},"4":{"start":{"line":16,"column":10},"end":{"line":16,"column":37}},"5":{"start":{"line":17,"column":10},"end":{"line":17,"column":61}},"6":{"start":{"line":20,"column":22},"end":{"line":20,"column":53}},"7":{"start":{"line":21,"column":21},"end":{"line":21,"column":62}},"8":{"start":{"line":22,"column":31},"end":{"line":22,"column":69}},"9":{"start":{"line":24,"column":4},"end":{"line":29,"column":7}},"10":{"start":{"line":32,"column":4},"end":{"line":32,"column":55}},"11":{"start":{"line":32,"column":30},"end":{"line":32,"column":53}},"12":{"start":{"line":36,"column":4},"end":{"line":38,"column":5}},"13":{"start":{"line":37,"column":6},"end":{"line":37,"column":23}},"14":{"start":{"line":41,"column":23},"end":{"line":41,"column":66}},"15":{"start":{"line":41,"column":51},"end":{"line":41,"column":65}},"16":{"start":{"line":43,"column":4},"end":{"line":45,"column":5}},"17":{"start":{"line":44,"column":6},"end":{"line":44,"column":23}},"18":{"start":{"line":48,"column":4},"end":{"line":51,"column":5}},"19":{"start":{"line":49,"column":20},"end":{"line":49,"column":50}},"20":{"start":{"line":50,"column":6},"end":{"line":50,"column":34}},"21":{"start":{"line":53,"column":4},"end":{"line":53,"column":22}},"22":{"start":{"line":57,"column":24},"end":{"line":58,"column":null}},"23":{"start":{"line":58,"column":18},"end":{"line":58,"column":68}},"24":{"start":{"line":61,"column":4},"end":{"line":77,"column":5}},"25":{"start":{"line":62,"column":21},"end":{"line":62,"column":44}},"26":{"start":{"line":64,"column":6},"end":{"line":76,"column":7}},"27":{"start":{"line":66,"column":8},"end":{"line":66,"column":69}},"28":{"start":{"line":68,"column":8},"end":{"line":68,"column":42}},"29":{"start":{"line":69,"column":13},"end":{"line":76,"column":7}},"30":{"start":{"line":75,"column":8},"end":{"line":75,"column":42}},"31":{"start":{"line":81,"column":4},"end":{"line":81,"column":33}},"32":{"start":{"line":85,"column":4},"end":{"line":85,"column":35}},"33":{"start":{"line":89,"column":4},"end":{"line":89,"column":29}},"34":{"start":{"line":93,"column":4},"end":{"line":93,"column":20}},"35":{"start":{"line":94,"column":4},"end":{"line":94,"column":34}},"36":{"start":{"line":15,"column":13},"end":{"line":15,"column":24}},"37":{"start":{"line":15,"column":13},"end":{"line":96,"column":null}}},"fnMap":{"0":{"name":"(anonymous_1)","decl":{"start":{"line":15,"column":7},"end":{"line":15,"column":13}},"loc":{"start":{"line":15,"column":7},"end":{"line":96,"column":1}}},"1":{"name":"(anonymous_2)","decl":{"start":{"line":19,"column":2},"end":{"line":19,"column":9}},"loc":{"start":{"line":19,"column":39},"end":{"line":33,"column":3}}},"2":{"name":"(anonymous_3)","decl":{"start":{"line":32,"column":20},"end":{"line":32,"column":21}},"loc":{"start":{"line":32,"column":30},"end":{"line":32,"column":53}}},"3":{"name":"(anonymous_4)","decl":{"start":{"line":35,"column":2},"end":{"line":35,"column":9}},"loc":{"start":{"line":35,"column":9},"end":{"line":54,"column":3}}},"4":{"name":"(anonymous_5)","decl":{"start":{"line":41,"column":39},"end":{"line":41,"column":40}},"loc":{"start":{"line":41,"column":51},"end":{"line":41,"column":65}}},"5":{"name":"(anonymous_6)","decl":{"start":{"line":56,"column":2},"end":{"line":56,"column":17}},"loc":{"start":{"line":56,"column":70},"end":{"line":78,"column":3}}},"6":{"name":"(anonymous_7)","decl":{"start":{"line":58,"column":6},"end":{"line":58,"column":7}},"loc":{"start":{"line":58,"column":18},"end":{"line":58,"column":68}}},"7":{"name":"(anonymous_8)","decl":{"start":{"line":80,"column":2},"end":{"line":80,"column":21}},"loc":{"start":{"line":80,"column":21},"end":{"line":82,"column":3}}},"8":{"name":"(anonymous_9)","decl":{"start":{"line":84,"column":2},"end":{"line":84,"column":9}},"loc":{"start":{"line":84,"column":9},"end":{"line":86,"column":3}}},"9":{"name":"(anonymous_10)","decl":{"start":{"line":88,"column":2},"end":{"line":88,"column":6}},"loc":{"start":{"line":88,"column":6},"end":{"line":90,"column":3}}},"10":{"name":"(anonymous_11)","decl":{"start":{"line":92,"column":2},"end":{"line":92,"column":7}},"loc":{"start":{"line":92,"column":7},"end":{"line":95,"column":3}}}},"branchMap":{"0":{"loc":{"start":{"line":21,"column":21},"end":{"line":21,"column":62}},"type":"binary-expr","locations":[{"start":{"line":21,"column":21},"end":{"line":21,"column":40}},{"start":{"line":21,"column":44},"end":{"line":21,"column":62}}]},"1":{"loc":{"start":{"line":22,"column":31},"end":{"line":22,"column":69}},"type":"binary-expr","locations":[{"start":{"line":22,"column":31},"end":{"line":22,"column":60}},{"start":{"line":22,"column":64},"end":{"line":22,"column":69}}]},"2":{"loc":{"start":{"line":36,"column":4},"end":{"line":38,"column":5}},"type":"if","locations":[{"start":{"line":36,"column":4},"end":{"line":38,"column":5}}]},"3":{"loc":{"start":{"line":43,"column":4},"end":{"line":45,"column":5}},"type":"if","locations":[{"start":{"line":43,"column":4},"end":{"line":45,"column":5}}]},"4":{"loc":{"start":{"line":48,"column":4},"end":{"line":51,"column":5}},"type":"if","locations":[{"start":{"line":48,"column":4},"end":{"line":51,"column":5}}]},"5":{"loc":{"start":{"line":58,"column":18},"end":{"line":58,"column":68}},"type":"binary-expr","locations":[{"start":{"line":58,"column":18},"end":{"line":58,"column":38}},{"start":{"line":58,"column":42},"end":{"line":58,"column":68}}]},"6":{"loc":{"start":{"line":61,"column":4},"end":{"line":77,"column":5}},"type":"if","locations":[{"start":{"line":61,"column":4},"end":{"line":77,"column":5}}]},"7":{"loc":{"start":{"line":64,"column":6},"end":{"line":76,"column":7}},"type":"if","locations":[{"start":{"line":64,"column":6},"end":{"line":76,"column":7}},{"start":{"line":69,"column":13},"end":{"line":76,"column":7}}]},"8":{"loc":{"start":{"line":64,"column":10},"end":{"line":64,"column":53}},"type":"binary-expr","locations":[{"start":{"line":64,"column":10},"end":{"line":64,"column":35}},{"start":{"line":64,"column":39},"end":{"line":64,"column":53}}]},"9":{"loc":{"start":{"line":69,"column":13},"end":{"line":76,"column":7}},"type":"if","locations":[{"start":{"line":69,"column":13},"end":{"line":76,"column":7}},{"start":{"line":73,"column":13},"end":{"line":76,"column":7}}]},"10":{"loc":{"start":{"line":69,"column":17},"end":{"line":69,"column":61}},"type":"binary-expr","locations":[{"start":{"line":69,"column":17},"end":{"line":69,"column":42}},{"start":{"line":69,"column":46},"end":{"line":69,"column":61}}]}},"s":{"0":7,"1":7,"2":7,"3":7,"4":26,"5":26,"6":24,"7":24,"8":24,"9":24,"10":24,"11":15,"12":21,"13":1,"14":20,"15":20,"16":20,"17":0,"18":20,"19":12,"20":12,"21":20,"22":8,"23":7,"24":8,"25":7,"26":7,"27":5,"28":5,"29":2,"30":1,"31":5,"32":7,"33":6,"34":17,"35":17,"36":7,"37":7},"f":{"0":26,"1":24,"2":15,"3":21,"4":20,"5":8,"6":7,"7":5,"8":7,"9":6,"10":17},"b":{"0":[24,0],"1":[24,16],"2":[1],"3":[0],"4":[12],"5":[7,7],"6":[7],"7":[5,2],"8":[7,6],"9":[1,1],"10":[2,1]}} -,"/home/joao/projects/cracked-dev-cli/src/services/LLM/actions/core/BaseAction.ts": {"path":"/home/joao/projects/cracked-dev-cli/src/services/LLM/actions/core/BaseAction.ts","statementMap":{"0":{"start":{"line":6,"column":24},"end":{"line":6,"column":64}},"1":{"start":{"line":15,"column":22},"end":{"line":15,"column":41}},"2":{"start":{"line":17,"column":6},"end":{"line":17,"column":70}},"3":{"start":{"line":17,"column":57},"end":{"line":17,"column":63}},"4":{"start":{"line":19,"column":40},"end":{"line":19,"column":42}},"5":{"start":{"line":20,"column":4},"end":{"line":25,"column":5}},"6":{"start":{"line":21,"column":20},"end":{"line":21,"column":62}},"7":{"start":{"line":22,"column":6},"end":{"line":24,"column":7}},"8":{"start":{"line":23,"column":8},"end":{"line":23,"column":34}},"9":{"start":{"line":27,"column":4},"end":{"line":27,"column":18}},"10":{"start":{"line":35,"column":4},"end":{"line":35,"column":67}},"11":{"start":{"line":39,"column":4},"end":{"line":72,"column":5}},"12":{"start":{"line":41,"column":24},"end":{"line":41,"column":43}},"13":{"start":{"line":42,"column":6},"end":{"line":44,"column":7}},"14":{"start":{"line":43,"column":8},"end":{"line":43,"column":68}},"15":{"start":{"line":47,"column":21},"end":{"line":47,"column":46}},"16":{"start":{"line":50,"column":30},"end":{"line":50,"column":57}},"17":{"start":{"line":51,"column":6},"end":{"line":54,"column":7}},"18":{"start":{"line":52,"column":8},"end":{"line":52,"column":39}},"19":{"start":{"line":53,"column":8},"end":{"line":53,"column":55}},"20":{"start":{"line":57,"column":21},"end":{"line":57,"column":55}},"21":{"start":{"line":60,"column":6},"end":{"line":64,"column":7}},"22":{"start":{"line":61,"column":8},"end":{"line":61,"column":56}},"23":{"start":{"line":63,"column":8},"end":{"line":63,"column":75}},"24":{"start":{"line":66,"column":6},"end":{"line":66,"column":20}},"25":{"start":{"line":69,"column":8},"end":{"line":69,"column":62}},"26":{"start":{"line":70,"column":6},"end":{"line":70,"column":34}},"27":{"start":{"line":71,"column":6},"end":{"line":71,"column":52}},"28":{"start":{"line":76,"column":4},"end":{"line":76,"column":63}},"29":{"start":{"line":80,"column":4},"end":{"line":80,"column":61}},"30":{"start":{"line":84,"column":4},"end":{"line":84,"column":60}},"31":{"start":{"line":88,"column":4},"end":{"line":91,"column":6}},"32":{"start":{"line":95,"column":21},"end":{"line":95,"column":73}},"33":{"start":{"line":96,"column":4},"end":{"line":99,"column":6}},"34":{"start":{"line":5,"column":0},"end":{"line":5,"column":22}}},"fnMap":{"0":{"name":"(anonymous_0)","decl":{"start":{"line":6,"column":2},"end":{"line":6,"column":24}},"loc":{"start":{"line":6,"column":64},"end":{"line":6,"column":68}}},"1":{"name":"(anonymous_1)","decl":{"start":{"line":14,"column":12},"end":{"line":14,"column":23}},"loc":{"start":{"line":14,"column":39},"end":{"line":28,"column":3}}},"2":{"name":"(anonymous_2)","decl":{"start":{"line":17,"column":32},"end":{"line":17,"column":33}},"loc":{"start":{"line":17,"column":57},"end":{"line":17,"column":63}}},"3":{"name":"(anonymous_3)","decl":{"start":{"line":31,"column":12},"end":{"line":31,"column":29}},"loc":{"start":{"line":33,"column":21},"end":{"line":36,"column":3}}},"4":{"name":"(anonymous_4)","decl":{"start":{"line":38,"column":2},"end":{"line":38,"column":7}},"loc":{"start":{"line":38,"column":31},"end":{"line":73,"column":3}}},"5":{"name":"(anonymous_5)","decl":{"start":{"line":75,"column":12},"end":{"line":75,"column":20}},"loc":{"start":{"line":75,"column":36},"end":{"line":77,"column":3}}},"6":{"name":"(anonymous_6)","decl":{"start":{"line":79,"column":12},"end":{"line":79,"column":19}},"loc":{"start":{"line":79,"column":35},"end":{"line":81,"column":3}}},"7":{"name":"(anonymous_7)","decl":{"start":{"line":83,"column":12},"end":{"line":83,"column":22}},"loc":{"start":{"line":83,"column":38},"end":{"line":85,"column":3}}},"8":{"name":"(anonymous_8)","decl":{"start":{"line":87,"column":12},"end":{"line":87,"column":31}},"loc":{"start":{"line":87,"column":42},"end":{"line":92,"column":3}}},"9":{"name":"(anonymous_9)","decl":{"start":{"line":94,"column":12},"end":{"line":94,"column":29}},"loc":{"start":{"line":94,"column":51},"end":{"line":100,"column":3}}}},"branchMap":{"0":{"loc":{"start":{"line":17,"column":6},"end":{"line":17,"column":70}},"type":"binary-expr","locations":[{"start":{"line":17,"column":6},"end":{"line":17,"column":64}},{"start":{"line":17,"column":68},"end":{"line":17,"column":70}}]},"1":{"loc":{"start":{"line":22,"column":6},"end":{"line":24,"column":7}},"type":"if","locations":[{"start":{"line":22,"column":6},"end":{"line":24,"column":7}}]},"2":{"loc":{"start":{"line":42,"column":6},"end":{"line":44,"column":7}},"type":"if","locations":[{"start":{"line":42,"column":6},"end":{"line":44,"column":7}}]},"3":{"loc":{"start":{"line":51,"column":6},"end":{"line":54,"column":7}},"type":"if","locations":[{"start":{"line":51,"column":6},"end":{"line":54,"column":7}}]},"4":{"loc":{"start":{"line":60,"column":6},"end":{"line":64,"column":7}},"type":"if","locations":[{"start":{"line":60,"column":6},"end":{"line":64,"column":7}},{"start":{"line":62,"column":13},"end":{"line":64,"column":7}}]},"5":{"loc":{"start":{"line":69,"column":8},"end":{"line":69,"column":62}},"type":"cond-expr","locations":[{"start":{"line":69,"column":33},"end":{"line":69,"column":46}},{"start":{"line":69,"column":49},"end":{"line":69,"column":62}}]},"6":{"loc":{"start":{"line":95,"column":21},"end":{"line":95,"column":73}},"type":"cond-expr","locations":[{"start":{"line":95,"column":49},"end":{"line":95,"column":65}},{"start":{"line":95,"column":68},"end":{"line":95,"column":73}}]}},"s":{"0":71,"1":40,"2":40,"3":65,"4":40,"5":40,"6":65,"7":65,"8":59,"9":40,"10":36,"11":74,"12":74,"13":74,"14":0,"15":74,"16":74,"17":74,"18":21,"19":21,"20":53,"21":53,"22":40,"23":13,"24":53,"25":0,"26":0,"27":0,"28":31,"29":54,"30":48,"31":57,"32":40,"33":40,"34":20},"f":{"0":71,"1":40,"2":65,"3":36,"4":74,"5":31,"6":54,"7":48,"8":57,"9":40},"b":{"0":[40,0],"1":[59],"2":[0],"3":[21],"4":[40,13],"5":[0,0],"6":[27,13]}} -,"/home/joao/projects/cracked-dev-cli/src/services/LLM/actions/types/ActionPriority.ts": {"path":"/home/joao/projects/cracked-dev-cli/src/services/LLM/actions/types/ActionPriority.ts","statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":null}},"1":{"start":{"line":6,"column":2},"end":{"line":6,"column":null}},"2":{"start":{"line":12,"column":2},"end":{"line":12,"column":null}},"3":{"start":{"line":18,"column":2},"end":{"line":18,"column":null}},"4":{"start":{"line":24,"column":2},"end":{"line":24,"column":null}},"5":{"start":{"line":30,"column":2},"end":{"line":30,"column":null}}},"fnMap":{"0":{"name":"(anonymous_0)","decl":{"start":{"line":1,"column":0},"end":{"line":1,"column":12}},"loc":{"start":{"line":1,"column":26},"end":{"line":31,"column":1}}}},"branchMap":{"0":{"loc":{"start":{"line":1,"column":12},"end":{"line":1,"column":null}},"type":"binary-expr","locations":[{"start":{"line":1,"column":12},"end":{"line":1,"column":26}},{"start":{"line":1,"column":26},"end":{"line":1,"column":null}}]}},"s":{"0":21,"1":21,"2":21,"3":21,"4":21,"5":21},"f":{"0":21},"b":{"0":[21,21]}} -,"/home/joao/projects/cracked-dev-cli/src/services/LLM/context/MessageContextBuilder.ts": {"path":"/home/joao/projects/cracked-dev-cli/src/services/LLM/context/MessageContextBuilder.ts","statementMap":{"0":{"start":{"line":2,"column":0},"end":{"line":2,"column":53}},"1":{"start":{"line":3,"column":0},"end":{"line":3,"column":68}},"2":{"start":{"line":15,"column":7},"end":{"line":242,"column":null}},"3":{"start":{"line":16,"column":22},"end":{"line":16,"column":33}},"4":{"start":{"line":24,"column":4},"end":{"line":26,"column":5}},"5":{"start":{"line":25,"column":6},"end":{"line":25,"column":49}},"6":{"start":{"line":28,"column":49},"end":{"line":28,"column":66}},"7":{"start":{"line":29,"column":24},"end":{"line":29,"column":74}},"8":{"start":{"line":30,"column":23},"end":{"line":30,"column":72}},"9":{"start":{"line":31,"column":37},"end":{"line":31,"column":75}},"10":{"start":{"line":32,"column":34},"end":{"line":32,"column":69}},"11":{"start":{"line":33,"column":37},"end":{"line":33,"column":75}},"12":{"start":{"line":34,"column":39},"end":{"line":34,"column":75}},"13":{"start":{"line":36,"column":4},"end":{"line":44,"column":5}},"14":{"start":{"line":38,"column":6},"end":{"line":38,"column":39}},"15":{"start":{"line":39,"column":6},"end":{"line":43,"column":9}},"16":{"start":{"line":46,"column":4},"end":{"line":46,"column":45}},"17":{"start":{"line":48,"column":4},"end":{"line":66,"column":6}},"18":{"start":{"line":50,"column":8},"end":{"line":64,"column":9}},"19":{"start":{"line":51,"column":36},"end":{"line":52,"column":null}},"20":{"start":{"line":54,"column":10},"end":{"line":57,"column":13}},"21":{"start":{"line":59,"column":36},"end":{"line":59,"column":77}},"22":{"start":{"line":60,"column":10},"end":{"line":63,"column":13}},"23":{"start":{"line":68,"column":4},"end":{"line":74,"column":6}},"24":{"start":{"line":85,"column":34},"end":{"line":85,"column":69}},"25":{"start":{"line":86,"column":37},"end":{"line":86,"column":75}},"26":{"start":{"line":88,"column":4},"end":{"line":127,"column":5}},"27":{"start":{"line":89,"column":32},"end":{"line":89,"column":72}},"28":{"start":{"line":91,"column":6},"end":{"line":93,"column":7}},"29":{"start":{"line":92,"column":8},"end":{"line":92,"column":27}},"30":{"start":{"line":95,"column":24},"end":{"line":99,"column":8}},"31":{"start":{"line":101,"column":6},"end":{"line":106,"column":9}},"32":{"start":{"line":108,"column":32},"end":{"line":108,"column":69}},"33":{"start":{"line":111,"column":6},"end":{"line":113,"column":7}},"34":{"start":{"line":112,"column":8},"end":{"line":112,"column":27}},"35":{"start":{"line":115,"column":24},"end":{"line":119,"column":8}},"36":{"start":{"line":121,"column":6},"end":{"line":126,"column":9}},"37":{"start":{"line":129,"column":4},"end":{"line":135,"column":6}},"38":{"start":{"line":141,"column":24},"end":{"line":143,"column":10}},"39":{"start":{"line":145,"column":61},"end":{"line":145,"column":63}},"40":{"start":{"line":148,"column":37},"end":{"line":150,"column":50}},"41":{"start":{"line":150,"column":21},"end":{"line":150,"column":46}},"42":{"start":{"line":152,"column":4},"end":{"line":157,"column":5}},"43":{"start":{"line":153,"column":6},"end":{"line":156,"column":9}},"44":{"start":{"line":160,"column":46},"end":{"line":163,"column":47}},"45":{"start":{"line":163,"column":21},"end":{"line":163,"column":46}},"46":{"start":{"line":166,"column":4},"end":{"line":211,"column":5}},"47":{"start":{"line":167,"column":6},"end":{"line":210,"column":7}},"48":{"start":{"line":170,"column":10},"end":{"line":174,"column":23}},"49":{"start":{"line":175,"column":26},"end":{"line":175,"column":79}},"50":{"start":{"line":176,"column":24},"end":{"line":178,"column":76}},"51":{"start":{"line":180,"column":8},"end":{"line":183,"column":11}},"52":{"start":{"line":187,"column":10},"end":{"line":191,"column":23}},"53":{"start":{"line":192,"column":26},"end":{"line":192,"column":79}},"54":{"start":{"line":196,"column":10},"end":{"line":204,"column":16}},"55":{"start":{"line":206,"column":8},"end":{"line":209,"column":11}},"56":{"start":{"line":213,"column":4},"end":{"line":217,"column":6}},"57":{"start":{"line":223,"column":25},"end":{"line":225,"column":50}},"58":{"start":{"line":225,"column":21},"end":{"line":225,"column":46}},"59":{"start":{"line":226,"column":4},"end":{"line":226,"column":41}},"60":{"start":{"line":233,"column":4},"end":{"line":233,"column":48}},"61":{"start":{"line":240,"column":4},"end":{"line":240,"column":54}},"62":{"start":{"line":15,"column":13},"end":{"line":15,"column":34}},"63":{"start":{"line":15,"column":13},"end":{"line":242,"column":null}}},"fnMap":{"0":{"name":"(anonymous_2)","decl":{"start":{"line":16,"column":2},"end":{"line":16,"column":22}},"loc":{"start":{"line":16,"column":56},"end":{"line":16,"column":60}}},"1":{"name":"(anonymous_3)","decl":{"start":{"line":18,"column":9},"end":{"line":18,"column":28}},"loc":{"start":{"line":22,"column":36},"end":{"line":75,"column":3}}},"2":{"name":"(anonymous_4)","decl":{"start":{"line":49,"column":6},"end":{"line":49,"column":7}},"loc":{"start":{"line":49,"column":68},"end":{"line":65,"column":7}}},"3":{"name":"(anonymous_5)","decl":{"start":{"line":77,"column":9},"end":{"line":77,"column":30}},"loc":{"start":{"line":83,"column":18},"end":{"line":136,"column":3}}},"4":{"name":"(anonymous_6)","decl":{"start":{"line":138,"column":9},"end":{"line":138,"column":26}},"loc":{"start":{"line":139,"column":36},"end":{"line":218,"column":3}}},"5":{"name":"(anonymous_7)","decl":{"start":{"line":150,"column":11},"end":{"line":150,"column":12}},"loc":{"start":{"line":150,"column":21},"end":{"line":150,"column":46}}},"6":{"name":"(anonymous_8)","decl":{"start":{"line":163,"column":11},"end":{"line":163,"column":12}},"loc":{"start":{"line":163,"column":21},"end":{"line":163,"column":46}}},"7":{"name":"(anonymous_9)","decl":{"start":{"line":220,"column":9},"end":{"line":220,"column":35}},"loc":{"start":{"line":221,"column":36},"end":{"line":227,"column":3}}},"8":{"name":"(anonymous_10)","decl":{"start":{"line":225,"column":11},"end":{"line":225,"column":12}},"loc":{"start":{"line":225,"column":21},"end":{"line":225,"column":46}}},"9":{"name":"(anonymous_11)","decl":{"start":{"line":229,"column":9},"end":{"line":229,"column":25}},"loc":{"start":{"line":231,"column":36},"end":{"line":234,"column":3}}},"10":{"name":"(anonymous_12)","decl":{"start":{"line":236,"column":9},"end":{"line":236,"column":28}},"loc":{"start":{"line":238,"column":36},"end":{"line":241,"column":3}}}},"branchMap":{"0":{"loc":{"start":{"line":24,"column":4},"end":{"line":26,"column":5}},"type":"if","locations":[{"start":{"line":24,"column":4},"end":{"line":26,"column":5}}]},"1":{"loc":{"start":{"line":36,"column":4},"end":{"line":44,"column":5}},"type":"if","locations":[{"start":{"line":36,"column":4},"end":{"line":44,"column":5}}]},"2":{"loc":{"start":{"line":50,"column":8},"end":{"line":64,"column":9}},"type":"if","locations":[{"start":{"line":50,"column":8},"end":{"line":64,"column":9}},{"start":{"line":58,"column":15},"end":{"line":64,"column":9}}]},"3":{"loc":{"start":{"line":88,"column":4},"end":{"line":127,"column":5}},"type":"if","locations":[{"start":{"line":88,"column":4},"end":{"line":127,"column":5}},{"start":{"line":107,"column":11},"end":{"line":127,"column":5}}]},"4":{"loc":{"start":{"line":91,"column":6},"end":{"line":93,"column":7}},"type":"if","locations":[{"start":{"line":91,"column":6},"end":{"line":93,"column":7}}]},"5":{"loc":{"start":{"line":91,"column":10},"end":{"line":91,"column":65}},"type":"binary-expr","locations":[{"start":{"line":91,"column":10},"end":{"line":91,"column":27}},{"start":{"line":91,"column":31},"end":{"line":91,"column":65}}]},"6":{"loc":{"start":{"line":95,"column":24},"end":{"line":99,"column":8}},"type":"binary-expr","locations":[{"start":{"line":95,"column":24},"end":{"line":95,"column":41}},{"start":{"line":95,"column":45},"end":{"line":99,"column":8}}]},"7":{"loc":{"start":{"line":111,"column":6},"end":{"line":113,"column":7}},"type":"if","locations":[{"start":{"line":111,"column":6},"end":{"line":113,"column":7}}]},"8":{"loc":{"start":{"line":111,"column":10},"end":{"line":111,"column":65}},"type":"binary-expr","locations":[{"start":{"line":111,"column":10},"end":{"line":111,"column":27}},{"start":{"line":111,"column":31},"end":{"line":111,"column":65}}]},"9":{"loc":{"start":{"line":115,"column":24},"end":{"line":119,"column":8}},"type":"binary-expr","locations":[{"start":{"line":115,"column":24},"end":{"line":115,"column":41}},{"start":{"line":115,"column":45},"end":{"line":119,"column":8}}]},"10":{"loc":{"start":{"line":141,"column":24},"end":{"line":143,"column":10}},"type":"cond-expr","locations":[{"start":{"line":142,"column":8},"end":{"line":142,"column":78}},{"start":{"line":143,"column":8},"end":{"line":143,"column":10}}]},"11":{"loc":{"start":{"line":152,"column":4},"end":{"line":157,"column":5}},"type":"if","locations":[{"start":{"line":152,"column":4},"end":{"line":157,"column":5}}]},"12":{"loc":{"start":{"line":167,"column":6},"end":{"line":210,"column":7}},"type":"if","locations":[{"start":{"line":167,"column":6},"end":{"line":210,"column":7}},{"start":{"line":184,"column":13},"end":{"line":210,"column":7}}]},"13":{"loc":{"start":{"line":170,"column":10},"end":{"line":174,"column":23}},"type":"cond-expr","locations":[{"start":{"line":171,"column":14},"end":{"line":173,"column":24}},{"start":{"line":174,"column":14},"end":{"line":174,"column":23}}]},"14":{"loc":{"start":{"line":171,"column":14},"end":{"line":173,"column":24}},"type":"cond-expr","locations":[{"start":{"line":172,"column":16},"end":{"line":172,"column":25}},{"start":{"line":173,"column":16},"end":{"line":173,"column":24}}]},"15":{"loc":{"start":{"line":175,"column":26},"end":{"line":175,"column":79}},"type":"cond-expr","locations":[{"start":{"line":175,"column":44},"end":{"line":175,"column":74}},{"start":{"line":175,"column":77},"end":{"line":175,"column":79}}]},"16":{"loc":{"start":{"line":176,"column":24},"end":{"line":178,"column":76}},"type":"cond-expr","locations":[{"start":{"line":177,"column":12},"end":{"line":177,"column":97}},{"start":{"line":178,"column":12},"end":{"line":178,"column":76}}]},"17":{"loc":{"start":{"line":187,"column":10},"end":{"line":191,"column":23}},"type":"cond-expr","locations":[{"start":{"line":188,"column":14},"end":{"line":190,"column":24}},{"start":{"line":191,"column":14},"end":{"line":191,"column":23}}]},"18":{"loc":{"start":{"line":188,"column":14},"end":{"line":190,"column":24}},"type":"cond-expr","locations":[{"start":{"line":189,"column":16},"end":{"line":189,"column":25}},{"start":{"line":190,"column":16},"end":{"line":190,"column":24}}]},"19":{"loc":{"start":{"line":192,"column":26},"end":{"line":192,"column":79}},"type":"cond-expr","locations":[{"start":{"line":192,"column":44},"end":{"line":192,"column":74}},{"start":{"line":192,"column":77},"end":{"line":192,"column":79}}]},"20":{"loc":{"start":{"line":196,"column":10},"end":{"line":204,"column":16}},"type":"cond-expr","locations":[{"start":{"line":197,"column":14},"end":{"line":199,"column":16}},{"start":{"line":200,"column":14},"end":{"line":204,"column":16}}]},"21":{"loc":{"start":{"line":196,"column":10},"end":{"line":196,"column":62}},"type":"binary-expr","locations":[{"start":{"line":196,"column":10},"end":{"line":196,"column":41}},{"start":{"line":196,"column":45},"end":{"line":196,"column":62}}]},"22":{"loc":{"start":{"line":198,"column":16},"end":{"line":198,"column":null}},"type":"cond-expr","locations":[{"start":{"line":198,"column":36},"end":{"line":198,"column":70}},{"start":{"line":198,"column":73},"end":{"line":198,"column":null}}]},"23":{"loc":{"start":{"line":200,"column":17},"end":{"line":200,"column":77}},"type":"cond-expr","locations":[{"start":{"line":200,"column":50},"end":{"line":200,"column":62}},{"start":{"line":200,"column":65},"end":{"line":200,"column":77}}]},"24":{"loc":{"start":{"line":203,"column":16},"end":{"line":203,"column":null}},"type":"cond-expr","locations":[{"start":{"line":203,"column":36},"end":{"line":203,"column":70}},{"start":{"line":203,"column":73},"end":{"line":203,"column":null}}]},"25":{"loc":{"start":{"line":226,"column":11},"end":{"line":226,"column":40}},"type":"binary-expr","locations":[{"start":{"line":226,"column":11},"end":{"line":226,"column":32}},{"start":{"line":226,"column":36},"end":{"line":226,"column":40}}]}},"s":{"0":25,"1":25,"2":25,"3":85,"4":20,"5":1,"6":19,"7":19,"8":19,"9":19,"10":19,"11":19,"12":19,"13":19,"14":2,"15":2,"16":19,"17":19,"18":3,"19":0,"20":0,"21":3,"22":3,"23":19,"24":18,"25":18,"26":18,"27":4,"28":4,"29":2,"30":2,"31":2,"32":14,"33":14,"34":2,"35":12,"36":12,"37":14,"38":5,"39":5,"40":5,"41":0,"42":5,"43":1,"44":5,"45":3,"46":5,"47":4,"48":2,"49":2,"50":2,"51":2,"52":2,"53":2,"54":2,"55":2,"56":5,"57":1,"58":1,"59":1,"60":2,"61":2,"62":25,"63":25},"f":{"0":85,"1":20,"2":3,"3":18,"4":5,"5":0,"6":3,"7":1,"8":1,"9":2,"10":2},"b":{"0":[1],"1":[2],"2":[0,3],"3":[4,14],"4":[2],"5":[4,2],"6":[2,2],"7":[2],"8":[14,5],"9":[12,9],"10":[1,4],"11":[1],"12":[2,2],"13":[2,0],"14":[1,1],"15":[1,1],"16":[2,0],"17":[2,0],"18":[1,1],"19":[1,1],"20":[0,2],"21":[2,1],"22":[0,0],"23":[1,1],"24":[2,0],"25":[1,0]}} -,"/home/joao/projects/cracked-dev-cli/src/services/LLM/context/MessageContextCleanup.ts": {"path":"/home/joao/projects/cracked-dev-cli/src/services/LLM/context/MessageContextCleanup.ts","statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":61}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":37}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":41}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":64}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":64}},"5":{"start":{"line":6,"column":0},"end":{"line":6,"column":60}},"6":{"start":{"line":9,"column":7},"end":{"line":71,"column":null}},"7":{"start":{"line":11,"column":12},"end":{"line":11,"column":25}},"8":{"start":{"line":12,"column":12},"end":{"line":12,"column":23}},"9":{"start":{"line":13,"column":12},"end":{"line":13,"column":33}},"10":{"start":{"line":14,"column":12},"end":{"line":14,"column":35}},"11":{"start":{"line":15,"column":12},"end":{"line":15,"column":35}},"12":{"start":{"line":19,"column":24},"end":{"line":19,"column":65}},"13":{"start":{"line":20,"column":22},"end":{"line":20,"column":73}},"14":{"start":{"line":22,"column":31},"end":{"line":23,"column":55}},"15":{"start":{"line":23,"column":6},"end":{"line":23,"column":55}},"16":{"start":{"line":25,"column":21},"end":{"line":25,"column":78}},"17":{"start":{"line":27,"column":26},"end":{"line":29,"column":null}},"18":{"start":{"line":28,"column":24},"end":{"line":28,"column":65}},"19":{"start":{"line":32,"column":4},"end":{"line":34,"column":5}},"20":{"start":{"line":33,"column":6},"end":{"line":33,"column":19}},"21":{"start":{"line":36,"column":27},"end":{"line":36,"column":40}},"22":{"start":{"line":38,"column":24},"end":{"line":38,"column":37}},"23":{"start":{"line":40,"column":4},"end":{"line":45,"column":5}},"24":{"start":{"line":41,"column":29},"end":{"line":41,"column":51}},"25":{"start":{"line":42,"column":6},"end":{"line":44,"column":7}},"26":{"start":{"line":43,"column":8},"end":{"line":43,"column":68}},"27":{"start":{"line":46,"column":27},"end":{"line":48,"column":null}},"28":{"start":{"line":51,"column":4},"end":{"line":68,"column":5}},"29":{"start":{"line":52,"column":29},"end":{"line":53,"column":null}},"30":{"start":{"line":56,"column":6},"end":{"line":59,"column":9}},"31":{"start":{"line":61,"column":6},"end":{"line":63,"column":8}},"32":{"start":{"line":66,"column":6},"end":{"line":66,"column":60}},"33":{"start":{"line":67,"column":6},"end":{"line":67,"column":18}},"34":{"start":{"line":69,"column":4},"end":{"line":69,"column":17}},"35":{"start":{"line":9,"column":13},"end":{"line":9,"column":34}},"36":{"start":{"line":9,"column":13},"end":{"line":71,"column":null}}},"fnMap":{"0":{"name":"(anonymous_2)","decl":{"start":{"line":10,"column":2},"end":{"line":10,"column":null}},"loc":{"start":{"line":15,"column":56},"end":{"line":16,"column":6}}},"1":{"name":"(anonymous_3)","decl":{"start":{"line":18,"column":2},"end":{"line":18,"column":7}},"loc":{"start":{"line":18,"column":22},"end":{"line":70,"column":3}}},"2":{"name":"(anonymous_4)","decl":{"start":{"line":22,"column":31},"end":{"line":22,"column":32}},"loc":{"start":{"line":23,"column":6},"end":{"line":23,"column":55}}},"3":{"name":"(anonymous_5)","decl":{"start":{"line":28,"column":6},"end":{"line":28,"column":7}},"loc":{"start":{"line":28,"column":24},"end":{"line":28,"column":65}}}},"branchMap":{"0":{"loc":{"start":{"line":32,"column":4},"end":{"line":34,"column":5}},"type":"if","locations":[{"start":{"line":32,"column":4},"end":{"line":34,"column":5}}]},"1":{"loc":{"start":{"line":40,"column":11},"end":{"line":40,"column":65}},"type":"binary-expr","locations":[{"start":{"line":40,"column":11},"end":{"line":40,"column":36}},{"start":{"line":40,"column":40},"end":{"line":40,"column":65}}]},"2":{"loc":{"start":{"line":42,"column":6},"end":{"line":44,"column":7}},"type":"if","locations":[{"start":{"line":42,"column":6},"end":{"line":44,"column":7}}]},"3":{"loc":{"start":{"line":51,"column":4},"end":{"line":68,"column":5}},"type":"if","locations":[{"start":{"line":51,"column":4},"end":{"line":68,"column":5}}]}},"s":{"0":9,"1":9,"2":9,"3":9,"4":9,"5":9,"6":9,"7":82,"8":82,"9":82,"10":82,"11":82,"12":8,"13":8,"14":8,"15":13,"16":8,"17":8,"18":8,"19":8,"20":6,"21":2,"22":2,"23":2,"24":5,"25":5,"26":5,"27":2,"28":2,"29":2,"30":2,"31":2,"32":2,"33":2,"34":0,"35":9,"36":9},"f":{"0":82,"1":8,"2":13,"3":8},"b":{"0":[6],"1":[7,6],"2":[5],"3":[2]}} -,"/home/joao/projects/cracked-dev-cli/src/services/LLM/context/MessageContextExtractor.ts": {"path":"/home/joao/projects/cracked-dev-cli/src/services/LLM/context/MessageContextExtractor.ts","statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":37}},"1":{"start":{"line":10,"column":7},"end":{"line":74,"column":null}},"2":{"start":{"line":12,"column":4},"end":{"line":18,"column":14}},"3":{"start":{"line":22,"column":43},"end":{"line":22,"column":45}},"4":{"start":{"line":23,"column":16},"end":{"line":23,"column":26}},"5":{"start":{"line":26,"column":24},"end":{"line":27,"column":null}},"6":{"start":{"line":29,"column":4},"end":{"line":37,"column":7}},"7":{"start":{"line":30,"column":6},"end":{"line":36,"column":7}},"8":{"start":{"line":31,"column":8},"end":{"line":35,"column":11}},"9":{"start":{"line":40,"column":25},"end":{"line":41,"column":null}},"10":{"start":{"line":43,"column":4},"end":{"line":51,"column":7}},"11":{"start":{"line":44,"column":6},"end":{"line":50,"column":7}},"12":{"start":{"line":45,"column":8},"end":{"line":49,"column":11}},"13":{"start":{"line":54,"column":27},"end":{"line":55,"column":null}},"14":{"start":{"line":57,"column":4},"end":{"line":65,"column":7}},"15":{"start":{"line":58,"column":6},"end":{"line":64,"column":7}},"16":{"start":{"line":59,"column":8},"end":{"line":63,"column":11}},"17":{"start":{"line":67,"column":4},"end":{"line":67,"column":22}},"18":{"start":{"line":71,"column":18},"end":{"line":71,"column":75}},"19":{"start":{"line":72,"column":4},"end":{"line":72,"column":42}},"20":{"start":{"line":10,"column":13},"end":{"line":10,"column":36}},"21":{"start":{"line":10,"column":13},"end":{"line":74,"column":null}}},"fnMap":{"0":{"name":"(anonymous_1)","decl":{"start":{"line":11,"column":9},"end":{"line":11,"column":35}},"loc":{"start":{"line":11,"column":51},"end":{"line":19,"column":3}}},"1":{"name":"(anonymous_2)","decl":{"start":{"line":21,"column":9},"end":{"line":21,"column":26}},"loc":{"start":{"line":21,"column":42},"end":{"line":68,"column":3}}},"2":{"name":"(anonymous_3)","decl":{"start":{"line":29,"column":24},"end":{"line":29,"column":25}},"loc":{"start":{"line":29,"column":34},"end":{"line":37,"column":5}}},"3":{"name":"(anonymous_4)","decl":{"start":{"line":43,"column":25},"end":{"line":43,"column":26}},"loc":{"start":{"line":43,"column":35},"end":{"line":51,"column":5}}},"4":{"name":"(anonymous_5)","decl":{"start":{"line":57,"column":27},"end":{"line":57,"column":28}},"loc":{"start":{"line":57,"column":37},"end":{"line":65,"column":5}}},"5":{"name":"(anonymous_6)","decl":{"start":{"line":70,"column":9},"end":{"line":70,"column":27}},"loc":{"start":{"line":70,"column":43},"end":{"line":73,"column":3}}}},"branchMap":{"0":{"loc":{"start":{"line":30,"column":6},"end":{"line":36,"column":7}},"type":"if","locations":[{"start":{"line":30,"column":6},"end":{"line":36,"column":7}}]},"1":{"loc":{"start":{"line":44,"column":6},"end":{"line":50,"column":7}},"type":"if","locations":[{"start":{"line":44,"column":6},"end":{"line":50,"column":7}}]},"2":{"loc":{"start":{"line":58,"column":6},"end":{"line":64,"column":7}},"type":"if","locations":[{"start":{"line":58,"column":6},"end":{"line":64,"column":7}}]},"3":{"loc":{"start":{"line":72,"column":11},"end":{"line":72,"column":41}},"type":"cond-expr","locations":[{"start":{"line":72,"column":19},"end":{"line":72,"column":34}},{"start":{"line":72,"column":37},"end":{"line":72,"column":41}}]}},"s":{"0":26,"1":26,"2":4,"3":16,"4":16,"5":16,"6":16,"7":1,"8":1,"9":16,"10":16,"11":1,"12":1,"13":16,"14":16,"15":1,"16":1,"17":16,"18":22,"19":22,"20":26,"21":26},"f":{"0":4,"1":16,"2":1,"3":1,"4":1,"5":22},"b":{"0":[1],"1":[1],"2":[1],"3":[4,18]}} -,"/home/joao/projects/cracked-dev-cli/src/services/LLM/context/MessageContextHistory.ts": {"path":"/home/joao/projects/cracked-dev-cli/src/services/LLM/context/MessageContextHistory.ts","statementMap":{"0":{"start":{"line":2,"column":0},"end":{"line":2,"column":53}},"1":{"start":{"line":3,"column":0},"end":{"line":3,"column":47}},"2":{"start":{"line":4,"column":0},"end":{"line":4,"column":64}},"3":{"start":{"line":5,"column":0},"end":{"line":5,"column":null}},"4":{"start":{"line":9,"column":0},"end":{"line":9,"column":60}},"5":{"start":{"line":13,"column":7},"end":{"line":150,"column":null}},"6":{"start":{"line":15,"column":12},"end":{"line":15,"column":33}},"7":{"start":{"line":16,"column":12},"end":{"line":16,"column":34}},"8":{"start":{"line":17,"column":12},"end":{"line":17,"column":26}},"9":{"start":{"line":18,"column":12},"end":{"line":18,"column":35}},"10":{"start":{"line":23,"column":6},"end":{"line":23,"column":67}},"11":{"start":{"line":24,"column":4},"end":{"line":24,"column":37}},"12":{"start":{"line":24,"column":30},"end":{"line":24,"column":37}},"13":{"start":{"line":26,"column":26},"end":{"line":28,"column":19}},"14":{"start":{"line":27,"column":20},"end":{"line":27,"column":49}},"15":{"start":{"line":29,"column":4},"end":{"line":29,"column":55}},"16":{"start":{"line":30,"column":4},"end":{"line":33,"column":7}},"17":{"start":{"line":37,"column":4},"end":{"line":39,"column":5}},"18":{"start":{"line":38,"column":6},"end":{"line":38,"column":47}},"19":{"start":{"line":41,"column":4},"end":{"line":43,"column":5}},"20":{"start":{"line":42,"column":6},"end":{"line":42,"column":49}},"21":{"start":{"line":45,"column":24},"end":{"line":49,"column":null}},"22":{"start":{"line":51,"column":4},"end":{"line":51,"column":57}},"23":{"start":{"line":53,"column":4},"end":{"line":58,"column":5}},"24":{"start":{"line":54,"column":6},"end":{"line":57,"column":9}},"25":{"start":{"line":60,"column":4},"end":{"line":60,"column":16}},"26":{"start":{"line":64,"column":4},"end":{"line":64,"column":76}},"27":{"start":{"line":64,"column":69},"end":{"line":64,"column":76}},"28":{"start":{"line":65,"column":4},"end":{"line":65,"column":50}},"29":{"start":{"line":69,"column":4},"end":{"line":69,"column":71}},"30":{"start":{"line":73,"column":4},"end":{"line":73,"column":76}},"31":{"start":{"line":73,"column":69},"end":{"line":73,"column":76}},"32":{"start":{"line":74,"column":4},"end":{"line":74,"column":62}},"33":{"start":{"line":83,"column":22},"end":{"line":83,"column":63}},"34":{"start":{"line":85,"column":4},"end":{"line":115,"column":5}},"35":{"start":{"line":86,"column":19},"end":{"line":86,"column":58}},"36":{"start":{"line":87,"column":6},"end":{"line":94,"column":8}},"37":{"start":{"line":95,"column":11},"end":{"line":115,"column":5}},"38":{"start":{"line":96,"column":19},"end":{"line":96,"column":59}},"39":{"start":{"line":97,"column":6},"end":{"line":104,"column":8}},"40":{"start":{"line":105,"column":11},"end":{"line":115,"column":5}},"41":{"start":{"line":106,"column":22},"end":{"line":106,"column":67}},"42":{"start":{"line":107,"column":6},"end":{"line":114,"column":8}},"43":{"start":{"line":117,"column":4},"end":{"line":117,"column":57}},"44":{"start":{"line":121,"column":4},"end":{"line":123,"column":6}},"45":{"start":{"line":127,"column":4},"end":{"line":127,"column":37}},"46":{"start":{"line":128,"column":4},"end":{"line":128,"column":48}},"47":{"start":{"line":132,"column":4},"end":{"line":134,"column":7}},"48":{"start":{"line":138,"column":4},"end":{"line":138,"column":72}},"49":{"start":{"line":142,"column":4},"end":{"line":142,"column":76}},"50":{"start":{"line":142,"column":69},"end":{"line":142,"column":76}},"51":{"start":{"line":143,"column":4},"end":{"line":148,"column":6}},"52":{"start":{"line":13,"column":13},"end":{"line":13,"column":34}},"53":{"start":{"line":13,"column":13},"end":{"line":150,"column":null}}},"fnMap":{"0":{"name":"(anonymous_2)","decl":{"start":{"line":14,"column":2},"end":{"line":14,"column":null}},"loc":{"start":{"line":18,"column":56},"end":{"line":19,"column":6}}},"1":{"name":"(anonymous_3)","decl":{"start":{"line":21,"column":9},"end":{"line":21,"column":33}},"loc":{"start":{"line":21,"column":33},"end":{"line":34,"column":3}}},"2":{"name":"(anonymous_4)","decl":{"start":{"line":27,"column":11},"end":{"line":27,"column":12}},"loc":{"start":{"line":27,"column":20},"end":{"line":27,"column":49}}},"3":{"name":"(anonymous_5)","decl":{"start":{"line":36,"column":9},"end":{"line":36,"column":19}},"loc":{"start":{"line":36,"column":61},"end":{"line":61,"column":3}}},"4":{"name":"(anonymous_6)","decl":{"start":{"line":63,"column":10},"end":{"line":63,"column":20}},"loc":{"start":{"line":63,"column":57},"end":{"line":66,"column":3}}},"5":{"name":"(anonymous_7)","decl":{"start":{"line":68,"column":10},"end":{"line":68,"column":26}},"loc":{"start":{"line":68,"column":26},"end":{"line":70,"column":3}}},"6":{"name":"(anonymous_8)","decl":{"start":{"line":72,"column":9},"end":{"line":72,"column":24}},"loc":{"start":{"line":72,"column":69},"end":{"line":75,"column":3}}},"7":{"name":"(anonymous_9)","decl":{"start":{"line":77,"column":9},"end":{"line":77,"column":48}},"loc":{"start":{"line":81,"column":18},"end":{"line":118,"column":3}}},"8":{"name":"(anonymous_10)","decl":{"start":{"line":120,"column":9},"end":{"line":120,"column":20}},"loc":{"start":{"line":120,"column":20},"end":{"line":124,"column":3}}},"9":{"name":"(anonymous_11)","decl":{"start":{"line":126,"column":9},"end":{"line":126,"column":14}},"loc":{"start":{"line":126,"column":14},"end":{"line":129,"column":3}}},"10":{"name":"(anonymous_12)","decl":{"start":{"line":131,"column":9},"end":{"line":131,"column":30}},"loc":{"start":{"line":131,"column":51},"end":{"line":135,"column":3}}},"11":{"name":"(anonymous_13)","decl":{"start":{"line":137,"column":9},"end":{"line":137,"column":30}},"loc":{"start":{"line":137,"column":30},"end":{"line":139,"column":3}}},"12":{"name":"(anonymous_14)","decl":{"start":{"line":141,"column":9},"end":{"line":141,"column":22}},"loc":{"start":{"line":141,"column":22},"end":{"line":149,"column":3}}}},"branchMap":{"0":{"loc":{"start":{"line":24,"column":4},"end":{"line":24,"column":37}},"type":"if","locations":[{"start":{"line":24,"column":4},"end":{"line":24,"column":37}}]},"1":{"loc":{"start":{"line":36,"column":51},"end":{"line":36,"column":61}},"type":"default-arg","locations":[{"start":{"line":36,"column":57},"end":{"line":36,"column":61}}]},"2":{"loc":{"start":{"line":37,"column":4},"end":{"line":39,"column":5}},"type":"if","locations":[{"start":{"line":37,"column":4},"end":{"line":39,"column":5}}]},"3":{"loc":{"start":{"line":41,"column":4},"end":{"line":43,"column":5}},"type":"if","locations":[{"start":{"line":41,"column":4},"end":{"line":43,"column":5}}]},"4":{"loc":{"start":{"line":53,"column":4},"end":{"line":58,"column":5}},"type":"if","locations":[{"start":{"line":53,"column":4},"end":{"line":58,"column":5}}]},"5":{"loc":{"start":{"line":64,"column":4},"end":{"line":64,"column":76}},"type":"if","locations":[{"start":{"line":64,"column":4},"end":{"line":64,"column":76}}]},"6":{"loc":{"start":{"line":64,"column":8},"end":{"line":64,"column":67}},"type":"binary-expr","locations":[{"start":{"line":64,"column":8},"end":{"line":64,"column":39}},{"start":{"line":64,"column":43},"end":{"line":64,"column":67}}]},"7":{"loc":{"start":{"line":73,"column":4},"end":{"line":73,"column":76}},"type":"if","locations":[{"start":{"line":73,"column":4},"end":{"line":73,"column":76}}]},"8":{"loc":{"start":{"line":73,"column":8},"end":{"line":73,"column":67}},"type":"binary-expr","locations":[{"start":{"line":73,"column":8},"end":{"line":73,"column":39}},{"start":{"line":73,"column":43},"end":{"line":73,"column":67}}]},"9":{"loc":{"start":{"line":85,"column":4},"end":{"line":115,"column":5}},"type":"if","locations":[{"start":{"line":85,"column":4},"end":{"line":115,"column":5}},{"start":{"line":95,"column":11},"end":{"line":115,"column":5}}]},"10":{"loc":{"start":{"line":95,"column":11},"end":{"line":115,"column":5}},"type":"if","locations":[{"start":{"line":95,"column":11},"end":{"line":115,"column":5}},{"start":{"line":105,"column":11},"end":{"line":115,"column":5}}]},"11":{"loc":{"start":{"line":105,"column":11},"end":{"line":115,"column":5}},"type":"if","locations":[{"start":{"line":105,"column":11},"end":{"line":115,"column":5}}]},"12":{"loc":{"start":{"line":142,"column":4},"end":{"line":142,"column":76}},"type":"if","locations":[{"start":{"line":142,"column":4},"end":{"line":142,"column":76}}]},"13":{"loc":{"start":{"line":142,"column":8},"end":{"line":142,"column":67}},"type":"binary-expr","locations":[{"start":{"line":142,"column":8},"end":{"line":142,"column":39}},{"start":{"line":142,"column":43},"end":{"line":142,"column":67}}]}},"s":{"0":23,"1":23,"2":23,"3":23,"4":23,"5":23,"6":83,"7":83,"8":83,"9":83,"10":2,"11":2,"12":1,"13":1,"14":2,"15":1,"16":1,"17":16,"18":1,"19":15,"20":1,"21":14,"22":14,"23":14,"24":13,"25":14,"26":16,"27":15,"28":1,"29":0,"30":3,"31":2,"32":1,"33":3,"34":3,"35":1,"36":1,"37":2,"38":1,"39":1,"40":1,"41":1,"42":1,"43":3,"44":1,"45":1,"46":1,"47":1,"48":1,"49":3,"50":2,"51":1,"52":23,"53":23},"f":{"0":83,"1":2,"2":2,"3":16,"4":16,"5":0,"6":3,"7":3,"8":1,"9":1,"10":1,"11":1,"12":3},"b":{"0":[1],"1":[15],"2":[1],"3":[1],"4":[13],"5":[15],"6":[16,2],"7":[2],"8":[3,2],"9":[1,2],"10":[1,1],"11":[1],"12":[2],"13":[3,2]}} -,"/home/joao/projects/cracked-dev-cli/src/services/LLM/context/MessageContextLimiter.ts": {"path":"/home/joao/projects/cracked-dev-cli/src/services/LLM/context/MessageContextLimiter.ts","statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":53}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":64}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":60}},"3":{"start":{"line":5,"column":0},"end":{"line":5,"column":62}},"4":{"start":{"line":9,"column":7},"end":{"line":38,"column":null}},"5":{"start":{"line":11,"column":12},"end":{"line":11,"column":35}},"6":{"start":{"line":12,"column":12},"end":{"line":12,"column":33}},"7":{"start":{"line":13,"column":12},"end":{"line":13,"column":34}},"8":{"start":{"line":17,"column":23},"end":{"line":17,"column":72}},"9":{"start":{"line":19,"column":4},"end":{"line":22,"column":5}},"10":{"start":{"line":20,"column":6},"end":{"line":20,"column":27}},"11":{"start":{"line":21,"column":6},"end":{"line":21,"column":18}},"12":{"start":{"line":23,"column":4},"end":{"line":23,"column":17}},"13":{"start":{"line":28,"column":4},"end":{"line":28,"column":76}},"14":{"start":{"line":28,"column":69},"end":{"line":28,"column":76}},"15":{"start":{"line":29,"column":4},"end":{"line":32,"column":6}},"16":{"start":{"line":36,"column":4},"end":{"line":36,"column":71}},"17":{"start":{"line":9,"column":13},"end":{"line":9,"column":34}},"18":{"start":{"line":9,"column":13},"end":{"line":38,"column":null}}},"fnMap":{"0":{"name":"(anonymous_2)","decl":{"start":{"line":10,"column":2},"end":{"line":10,"column":null}},"loc":{"start":{"line":13,"column":54},"end":{"line":14,"column":6}}},"1":{"name":"(anonymous_3)","decl":{"start":{"line":16,"column":9},"end":{"line":16,"column":14}},"loc":{"start":{"line":16,"column":29},"end":{"line":24,"column":3}}},"2":{"name":"(anonymous_4)","decl":{"start":{"line":26,"column":10},"end":{"line":26,"column":23}},"loc":{"start":{"line":26,"column":23},"end":{"line":33,"column":3}}},"3":{"name":"(anonymous_5)","decl":{"start":{"line":35,"column":10},"end":{"line":35,"column":26}},"loc":{"start":{"line":35,"column":26},"end":{"line":37,"column":3}}}},"branchMap":{"0":{"loc":{"start":{"line":19,"column":4},"end":{"line":22,"column":5}},"type":"if","locations":[{"start":{"line":19,"column":4},"end":{"line":22,"column":5}}]},"1":{"loc":{"start":{"line":28,"column":4},"end":{"line":28,"column":76}},"type":"if","locations":[{"start":{"line":28,"column":4},"end":{"line":28,"column":76}}]},"2":{"loc":{"start":{"line":28,"column":8},"end":{"line":28,"column":67}},"type":"binary-expr","locations":[{"start":{"line":28,"column":8},"end":{"line":28,"column":39}},{"start":{"line":28,"column":43},"end":{"line":28,"column":67}}]}},"s":{"0":6,"1":6,"2":6,"3":6,"4":6,"5":54,"6":54,"7":54,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":6,"18":6},"f":{"0":54,"1":0,"2":0,"3":0},"b":{"0":[0],"1":[0],"2":[0,0]}} -,"/home/joao/projects/cracked-dev-cli/src/services/LLM/context/MessageContextLogger.ts": {"path":"/home/joao/projects/cracked-dev-cli/src/services/LLM/context/MessageContextLogger.ts","statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":56}},"1":{"start":{"line":3,"column":0},"end":{"line":3,"column":60}},"2":{"start":{"line":4,"column":0},"end":{"line":4,"column":25}},"3":{"start":{"line":5,"column":0},"end":{"line":5,"column":29}},"4":{"start":{"line":6,"column":0},"end":{"line":6,"column":45}},"5":{"start":{"line":7,"column":0},"end":{"line":7,"column":64}},"6":{"start":{"line":8,"column":0},"end":{"line":8,"column":60}},"7":{"start":{"line":17,"column":7},"end":{"line":219,"column":null}},"8":{"start":{"line":23,"column":12},"end":{"line":23,"column":25}},"9":{"start":{"line":24,"column":12},"end":{"line":24,"column":27}},"10":{"start":{"line":26,"column":12},"end":{"line":26,"column":35}},"11":{"start":{"line":28,"column":12},"end":{"line":28,"column":33}},"12":{"start":{"line":30,"column":4},"end":{"line":30,"column":47}},"13":{"start":{"line":31,"column":4},"end":{"line":35,"column":6}},"14":{"start":{"line":36,"column":4},"end":{"line":40,"column":6}},"15":{"start":{"line":41,"column":4},"end":{"line":41,"column":36}},"16":{"start":{"line":42,"column":4},"end":{"line":42,"column":35}},"17":{"start":{"line":46,"column":19},"end":{"line":46,"column":49}},"18":{"start":{"line":47,"column":4},"end":{"line":47,"column":41}},"19":{"start":{"line":51,"column":19},"end":{"line":51,"column":57}},"20":{"start":{"line":52,"column":4},"end":{"line":54,"column":5}},"21":{"start":{"line":53,"column":6},"end":{"line":53,"column":48}},"22":{"start":{"line":58,"column":4},"end":{"line":73,"column":5}},"23":{"start":{"line":59,"column":6},"end":{"line":66,"column":7}},"24":{"start":{"line":60,"column":8},"end":{"line":60,"column":69}},"25":{"start":{"line":61,"column":8},"end":{"line":65,"column":10}},"26":{"start":{"line":68,"column":6},"end":{"line":72,"column":8}},"27":{"start":{"line":77,"column":4},"end":{"line":89,"column":5}},"28":{"start":{"line":78,"column":6},"end":{"line":78,"column":38}},"29":{"start":{"line":79,"column":6},"end":{"line":79,"column":61}},"30":{"start":{"line":80,"column":6},"end":{"line":80,"column":67}},"31":{"start":{"line":81,"column":6},"end":{"line":83,"column":9}},"32":{"start":{"line":85,"column":6},"end":{"line":88,"column":9}},"33":{"start":{"line":93,"column":4},"end":{"line":105,"column":5}},"34":{"start":{"line":94,"column":6},"end":{"line":94,"column":38}},"35":{"start":{"line":95,"column":6},"end":{"line":95,"column":37}},"36":{"start":{"line":96,"column":24},"end":{"line":96,"column":48}},"37":{"start":{"line":97,"column":23},"end":{"line":97,"column":78}},"38":{"start":{"line":98,"column":6},"end":{"line":98,"column":68}},"39":{"start":{"line":99,"column":6},"end":{"line":99,"column":75}},"40":{"start":{"line":101,"column":6},"end":{"line":104,"column":9}},"41":{"start":{"line":109,"column":4},"end":{"line":140,"column":5}},"42":{"start":{"line":110,"column":6},"end":{"line":110,"column":38}},"43":{"start":{"line":111,"column":6},"end":{"line":111,"column":37}},"44":{"start":{"line":112,"column":24},"end":{"line":112,"column":48}},"45":{"start":{"line":113,"column":21},"end":{"line":113,"column":58}},"46":{"start":{"line":114,"column":22},"end":{"line":118,"column":14}},"47":{"start":{"line":119,"column":23},"end":{"line":119,"column":80}},"48":{"start":{"line":120,"column":6},"end":{"line":120,"column":68}},"49":{"start":{"line":123,"column":26},"end":{"line":123,"column":67}},"50":{"start":{"line":125,"column":8},"end":{"line":131,"column":null}},"51":{"start":{"line":133,"column":6},"end":{"line":133,"column":66}},"52":{"start":{"line":135,"column":6},"end":{"line":139,"column":8}},"53":{"start":{"line":147,"column":4},"end":{"line":191,"column":5}},"54":{"start":{"line":148,"column":6},"end":{"line":148,"column":38}},"55":{"start":{"line":149,"column":6},"end":{"line":149,"column":37}},"56":{"start":{"line":151,"column":6},"end":{"line":158,"column":7}},"57":{"start":{"line":152,"column":26},"end":{"line":152,"column":50}},"58":{"start":{"line":153,"column":8},"end":{"line":157,"column":10}},"59":{"start":{"line":160,"column":6},"end":{"line":167,"column":9}},"60":{"start":{"line":161,"column":26},"end":{"line":161,"column":50}},"61":{"start":{"line":162,"column":8},"end":{"line":166,"column":10}},"62":{"start":{"line":169,"column":26},"end":{"line":173,"column":8}},"63":{"start":{"line":175,"column":6},"end":{"line":179,"column":8}},"64":{"start":{"line":181,"column":6},"end":{"line":185,"column":9}},"65":{"start":{"line":187,"column":6},"end":{"line":190,"column":9}},"66":{"start":{"line":195,"column":4},"end":{"line":195,"column":29}},"67":{"start":{"line":199,"column":4},"end":{"line":199,"column":36}},"68":{"start":{"line":203,"column":4},"end":{"line":203,"column":40}},"69":{"start":{"line":207,"column":4},"end":{"line":217,"column":5}},"70":{"start":{"line":208,"column":26},"end":{"line":208,"column":79}},"71":{"start":{"line":209,"column":6},"end":{"line":209,"column":46}},"72":{"start":{"line":211,"column":6},"end":{"line":215,"column":8}},"73":{"start":{"line":216,"column":6},"end":{"line":216,"column":16}},"74":{"start":{"line":17,"column":13},"end":{"line":17,"column":33}},"75":{"start":{"line":17,"column":13},"end":{"line":219,"column":null}}},"fnMap":{"0":{"name":"(anonymous_10)","decl":{"start":{"line":22,"column":2},"end":{"line":22,"column":null}},"loc":{"start":{"line":28,"column":52},"end":{"line":43,"column":3}}},"1":{"name":"(anonymous_11)","decl":{"start":{"line":45,"column":10},"end":{"line":45,"column":25}},"loc":{"start":{"line":45,"column":25},"end":{"line":48,"column":3}}},"2":{"name":"(anonymous_12)","decl":{"start":{"line":50,"column":10},"end":{"line":50,"column":34}},"loc":{"start":{"line":50,"column":34},"end":{"line":55,"column":3}}},"3":{"name":"(anonymous_13)","decl":{"start":{"line":57,"column":10},"end":{"line":57,"column":33}},"loc":{"start":{"line":57,"column":33},"end":{"line":74,"column":3}}},"4":{"name":"(anonymous_14)","decl":{"start":{"line":76,"column":2},"end":{"line":76,"column":17}},"loc":{"start":{"line":76,"column":17},"end":{"line":90,"column":3}}},"5":{"name":"(anonymous_15)","decl":{"start":{"line":92,"column":2},"end":{"line":92,"column":12}},"loc":{"start":{"line":92,"column":49},"end":{"line":106,"column":3}}},"6":{"name":"(anonymous_16)","decl":{"start":{"line":108,"column":2},"end":{"line":108,"column":17}},"loc":{"start":{"line":108,"column":62},"end":{"line":141,"column":3}}},"7":{"name":"(anonymous_17)","decl":{"start":{"line":143,"column":2},"end":{"line":143,"column":27}},"loc":{"start":{"line":145,"column":37},"end":{"line":192,"column":3}}},"8":{"name":"(anonymous_18)","decl":{"start":{"line":160,"column":23},"end":{"line":160,"column":24}},"loc":{"start":{"line":160,"column":35},"end":{"line":167,"column":7}}},"9":{"name":"(anonymous_19)","decl":{"start":{"line":194,"column":2},"end":{"line":194,"column":21}},"loc":{"start":{"line":194,"column":21},"end":{"line":196,"column":3}}},"10":{"name":"(anonymous_20)","decl":{"start":{"line":198,"column":2},"end":{"line":198,"column":24}},"loc":{"start":{"line":198,"column":24},"end":{"line":200,"column":3}}},"11":{"name":"(anonymous_21)","decl":{"start":{"line":202,"column":2},"end":{"line":202,"column":28}},"loc":{"start":{"line":202,"column":28},"end":{"line":204,"column":3}}},"12":{"name":"(anonymous_22)","decl":{"start":{"line":206,"column":2},"end":{"line":206,"column":24}},"loc":{"start":{"line":206,"column":24},"end":{"line":218,"column":3}}}},"branchMap":{"0":{"loc":{"start":{"line":47,"column":11},"end":{"line":47,"column":40}},"type":"binary-expr","locations":[{"start":{"line":47,"column":11},"end":{"line":47,"column":30}},{"start":{"line":47,"column":34},"end":{"line":47,"column":40}}]},"1":{"loc":{"start":{"line":52,"column":4},"end":{"line":54,"column":5}},"type":"if","locations":[{"start":{"line":52,"column":4},"end":{"line":54,"column":5}}]},"2":{"loc":{"start":{"line":59,"column":6},"end":{"line":66,"column":7}},"type":"if","locations":[{"start":{"line":59,"column":6},"end":{"line":66,"column":7}}]},"3":{"loc":{"start":{"line":113,"column":21},"end":{"line":113,"column":58}},"type":"cond-expr","locations":[{"start":{"line":113,"column":38},"end":{"line":113,"column":47}},{"start":{"line":113,"column":50},"end":{"line":113,"column":58}}]},"4":{"loc":{"start":{"line":114,"column":22},"end":{"line":118,"column":14}},"type":"cond-expr","locations":[{"start":{"line":115,"column":10},"end":{"line":115,"column":45}},{"start":{"line":116,"column":10},"end":{"line":118,"column":14}}]},"5":{"loc":{"start":{"line":116,"column":10},"end":{"line":118,"column":14}},"type":"cond-expr","locations":[{"start":{"line":117,"column":12},"end":{"line":117,"column":33}},{"start":{"line":118,"column":12},"end":{"line":118,"column":14}}]},"6":{"loc":{"start":{"line":128,"column":10},"end":{"line":128,"column":29}},"type":"binary-expr","locations":[{"start":{"line":128,"column":10},"end":{"line":128,"column":23}},{"start":{"line":128,"column":27},"end":{"line":128,"column":29}}]},"7":{"loc":{"start":{"line":151,"column":6},"end":{"line":158,"column":7}},"type":"if","locations":[{"start":{"line":151,"column":6},"end":{"line":158,"column":7}}]}},"s":{"0":24,"1":24,"2":24,"3":24,"4":24,"5":24,"6":24,"7":24,"8":84,"9":84,"10":84,"11":84,"12":84,"13":84,"14":84,"15":84,"16":84,"17":84,"18":84,"19":106,"20":106,"21":2,"22":103,"23":103,"24":2,"25":1,"26":1,"27":3,"28":3,"29":3,"30":2,"31":2,"32":1,"33":4,"34":4,"35":4,"36":4,"37":4,"38":4,"39":3,"40":1,"41":11,"42":11,"43":11,"44":11,"45":11,"46":11,"47":11,"48":11,"49":10,"50":10,"51":10,"52":1,"53":4,"54":4,"55":4,"56":4,"57":3,"58":3,"59":3,"60":4,"61":4,"62":3,"63":3,"64":3,"65":1,"66":1,"67":2,"68":4,"69":2,"70":2,"71":1,"72":1,"73":1,"74":24,"75":24},"f":{"0":84,"1":84,"2":106,"3":103,"4":3,"5":4,"6":11,"7":4,"8":4,"9":1,"10":2,"11":4,"12":2},"b":{"0":[84,84],"1":[2],"2":[2],"3":[5,6],"4":[6,5],"5":[3,2],"6":[10,8],"7":[3]}} -,"/home/joao/projects/cracked-dev-cli/src/services/LLM/context/MessageContextPhase.ts": {"path":"/home/joao/projects/cracked-dev-cli/src/services/LLM/context/MessageContextPhase.ts","statementMap":{"0":{"start":{"line":2,"column":0},"end":{"line":2,"column":53}},"1":{"start":{"line":3,"column":0},"end":{"line":3,"column":47}},"2":{"start":{"line":4,"column":0},"end":{"line":4,"column":60}},"3":{"start":{"line":6,"column":0},"end":{"line":6,"column":64}},"4":{"start":{"line":7,"column":0},"end":{"line":7,"column":64}},"5":{"start":{"line":8,"column":0},"end":{"line":8,"column":62}},"6":{"start":{"line":12,"column":7},"end":{"line":39,"column":null}},"7":{"start":{"line":14,"column":12},"end":{"line":14,"column":33}},"8":{"start":{"line":15,"column":12},"end":{"line":15,"column":34}},"9":{"start":{"line":16,"column":12},"end":{"line":16,"column":35}},"10":{"start":{"line":17,"column":12},"end":{"line":17,"column":26}},"11":{"start":{"line":18,"column":12},"end":{"line":18,"column":35}},"12":{"start":{"line":22,"column":24},"end":{"line":22,"column":65}},"13":{"start":{"line":25,"column":4},"end":{"line":31,"column":7}},"14":{"start":{"line":33,"column":4},"end":{"line":33,"column":47}},"15":{"start":{"line":37,"column":4},"end":{"line":37,"column":71}},"16":{"start":{"line":12,"column":13},"end":{"line":12,"column":32}},"17":{"start":{"line":12,"column":13},"end":{"line":39,"column":null}}},"fnMap":{"0":{"name":"(anonymous_2)","decl":{"start":{"line":13,"column":2},"end":{"line":13,"column":null}},"loc":{"start":{"line":18,"column":56},"end":{"line":19,"column":6}}},"1":{"name":"(anonymous_3)","decl":{"start":{"line":21,"column":9},"end":{"line":21,"column":28}},"loc":{"start":{"line":21,"column":28},"end":{"line":34,"column":3}}},"2":{"name":"(anonymous_4)","decl":{"start":{"line":36,"column":10},"end":{"line":36,"column":26}},"loc":{"start":{"line":36,"column":26},"end":{"line":38,"column":3}}}},"branchMap":{},"s":{"0":19,"1":19,"2":19,"3":19,"4":19,"5":19,"6":19,"7":2,"8":2,"9":2,"10":2,"11":2,"12":0,"13":0,"14":0,"15":0,"16":19,"17":19},"f":{"0":2,"1":0,"2":0},"b":{}} -,"/home/joao/projects/cracked-dev-cli/src/services/LLM/context/MessageContextStore.ts": {"path":"/home/joao/projects/cracked-dev-cli/src/services/LLM/context/MessageContextStore.ts","statementMap":{"0":{"start":{"line":2,"column":0},"end":{"line":2,"column":37}},"1":{"start":{"line":37,"column":7},"end":{"line":99,"column":null}},"2":{"start":{"line":38,"column":10},"end":{"line":44,"column":4}},"3":{"start":{"line":47,"column":4},"end":{"line":47,"column":28}},"4":{"start":{"line":51,"column":4},"end":{"line":72,"column":6}},"5":{"start":{"line":76,"column":4},"end":{"line":82,"column":6}},"6":{"start":{"line":86,"column":4},"end":{"line":86,"column":38}},"7":{"start":{"line":90,"column":16},"end":{"line":90,"column":17}},"8":{"start":{"line":91,"column":4},"end":{"line":93,"column":5}},"9":{"start":{"line":92,"column":6},"end":{"line":92,"column":76}},"10":{"start":{"line":94,"column":4},"end":{"line":96,"column":7}},"11":{"start":{"line":95,"column":6},"end":{"line":95,"column":56}},"12":{"start":{"line":97,"column":4},"end":{"line":97,"column":17}},"13":{"start":{"line":37,"column":13},"end":{"line":37,"column":32}},"14":{"start":{"line":37,"column":13},"end":{"line":99,"column":null}}},"fnMap":{"0":{"name":"(anonymous_1)","decl":{"start":{"line":37,"column":7},"end":{"line":37,"column":13}},"loc":{"start":{"line":37,"column":7},"end":{"line":99,"column":1}}},"1":{"name":"(anonymous_2)","decl":{"start":{"line":46,"column":9},"end":{"line":46,"column":23}},"loc":{"start":{"line":46,"column":23},"end":{"line":48,"column":3}}},"2":{"name":"(anonymous_3)","decl":{"start":{"line":50,"column":9},"end":{"line":50,"column":23}},"loc":{"start":{"line":50,"column":58},"end":{"line":73,"column":3}}},"3":{"name":"(anonymous_4)","decl":{"start":{"line":75,"column":9},"end":{"line":75,"column":14}},"loc":{"start":{"line":75,"column":14},"end":{"line":83,"column":3}}},"4":{"name":"(anonymous_5)","decl":{"start":{"line":85,"column":9},"end":{"line":85,"column":27}},"loc":{"start":{"line":85,"column":40},"end":{"line":87,"column":3}}},"5":{"name":"(anonymous_6)","decl":{"start":{"line":89,"column":9},"end":{"line":89,"column":27}},"loc":{"start":{"line":89,"column":27},"end":{"line":98,"column":3}}},"6":{"name":"(anonymous_7)","decl":{"start":{"line":94,"column":49},"end":{"line":94,"column":50}},"loc":{"start":{"line":94,"column":61},"end":{"line":96,"column":5}}}},"branchMap":{"0":{"loc":{"start":{"line":53,"column":8},"end":{"line":55,"column":46}},"type":"cond-expr","locations":[{"start":{"line":54,"column":12},"end":{"line":54,"column":56}},{"start":{"line":55,"column":12},"end":{"line":55,"column":46}}]},"1":{"loc":{"start":{"line":54,"column":25},"end":{"line":54,"column":53}},"type":"binary-expr","locations":[{"start":{"line":54,"column":25},"end":{"line":54,"column":47}},{"start":{"line":54,"column":51},"end":{"line":54,"column":53}}]},"2":{"loc":{"start":{"line":57,"column":8},"end":{"line":59,"column":43}},"type":"cond-expr","locations":[{"start":{"line":58,"column":12},"end":{"line":58,"column":53}},{"start":{"line":59,"column":12},"end":{"line":59,"column":43}}]},"3":{"loc":{"start":{"line":58,"column":25},"end":{"line":58,"column":50}},"type":"binary-expr","locations":[{"start":{"line":58,"column":25},"end":{"line":58,"column":44}},{"start":{"line":58,"column":48},"end":{"line":58,"column":50}}]},"4":{"loc":{"start":{"line":61,"column":8},"end":{"line":63,"column":46}},"type":"cond-expr","locations":[{"start":{"line":62,"column":12},"end":{"line":62,"column":56}},{"start":{"line":63,"column":12},"end":{"line":63,"column":46}}]},"5":{"loc":{"start":{"line":62,"column":25},"end":{"line":62,"column":53}},"type":"binary-expr","locations":[{"start":{"line":62,"column":25},"end":{"line":62,"column":47}},{"start":{"line":62,"column":51},"end":{"line":62,"column":53}}]},"6":{"loc":{"start":{"line":65,"column":8},"end":{"line":67,"column":48}},"type":"cond-expr","locations":[{"start":{"line":66,"column":12},"end":{"line":66,"column":36}},{"start":{"line":67,"column":12},"end":{"line":67,"column":48}}]},"7":{"loc":{"start":{"line":69,"column":8},"end":{"line":71,"column":47}},"type":"cond-expr","locations":[{"start":{"line":70,"column":12},"end":{"line":70,"column":35}},{"start":{"line":71,"column":12},"end":{"line":71,"column":47}}]},"8":{"loc":{"start":{"line":91,"column":4},"end":{"line":93,"column":5}},"type":"if","locations":[{"start":{"line":91,"column":4},"end":{"line":93,"column":5}}]}},"s":{"0":26,"1":26,"2":86,"3":51,"4":57,"5":2,"6":1,"7":2,"8":2,"9":1,"10":2,"11":4,"12":2,"13":26,"14":26},"f":{"0":86,"1":51,"2":57,"3":2,"4":1,"5":2,"6":4},"b":{"0":[48,9],"1":[48,0],"2":[50,7],"3":[50,0],"4":[50,7],"5":[50,0],"6":[50,7],"7":[48,9],"8":[1]}} -,"/home/joao/projects/cracked-dev-cli/src/services/LLM/context/MessageContextTokenCount.ts": {"path":"/home/joao/projects/cracked-dev-cli/src/services/LLM/context/MessageContextTokenCount.ts","statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":42}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":60}},"2":{"start":{"line":5,"column":7},"end":{"line":27,"column":null}},"3":{"start":{"line":6,"column":22},"end":{"line":6,"column":43}},"4":{"start":{"line":9,"column":4},"end":{"line":9,"column":38}},"5":{"start":{"line":13,"column":24},"end":{"line":13,"column":65}},"6":{"start":{"line":14,"column":20},"end":{"line":14,"column":51}},"7":{"start":{"line":15,"column":31},"end":{"line":15,"column":61}},"8":{"start":{"line":16,"column":16},"end":{"line":16,"column":17}},"9":{"start":{"line":18,"column":4},"end":{"line":20,"column":5}},"10":{"start":{"line":19,"column":6},"end":{"line":19,"column":59}},"11":{"start":{"line":22,"column":4},"end":{"line":25,"column":6}},"12":{"start":{"line":23,"column":24},"end":{"line":23,"column":70}},"13":{"start":{"line":5,"column":13},"end":{"line":5,"column":38}},"14":{"start":{"line":5,"column":13},"end":{"line":27,"column":null}}},"fnMap":{"0":{"name":"(anonymous_2)","decl":{"start":{"line":6,"column":2},"end":{"line":6,"column":22}},"loc":{"start":{"line":6,"column":62},"end":{"line":6,"column":66}}},"1":{"name":"(anonymous_3)","decl":{"start":{"line":8,"column":2},"end":{"line":8,"column":20}},"loc":{"start":{"line":8,"column":33},"end":{"line":10,"column":3}}},"2":{"name":"(anonymous_4)","decl":{"start":{"line":12,"column":2},"end":{"line":12,"column":20}},"loc":{"start":{"line":12,"column":20},"end":{"line":26,"column":3}}},"3":{"name":"(anonymous_5)","decl":{"start":{"line":23,"column":6},"end":{"line":23,"column":7}},"loc":{"start":{"line":23,"column":24},"end":{"line":23,"column":70}}}},"branchMap":{"0":{"loc":{"start":{"line":18,"column":4},"end":{"line":20,"column":5}},"type":"if","locations":[{"start":{"line":18,"column":4},"end":{"line":20,"column":5}}]}},"s":{"0":7,"1":7,"2":7,"3":54,"4":0,"5":3,"6":3,"7":3,"8":3,"9":3,"10":0,"11":3,"12":0,"13":7,"14":7},"f":{"0":54,"1":0,"2":3,"3":0},"b":{"0":[0]}} -,"/home/joao/projects/cracked-dev-cli/src/services/LLM/context/MessageConversationLogger.ts": {"path":"/home/joao/projects/cracked-dev-cli/src/services/LLM/context/MessageConversationLogger.ts","statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":56}},"1":{"start":{"line":3,"column":0},"end":{"line":3,"column":60}},"2":{"start":{"line":4,"column":0},"end":{"line":4,"column":25}},"3":{"start":{"line":5,"column":0},"end":{"line":5,"column":29}},"4":{"start":{"line":6,"column":0},"end":{"line":6,"column":37}},"5":{"start":{"line":15,"column":7},"end":{"line":205,"column":null}},"6":{"start":{"line":21,"column":12},"end":{"line":21,"column":25}},"7":{"start":{"line":22,"column":12},"end":{"line":22,"column":27}},"8":{"start":{"line":24,"column":4},"end":{"line":24,"column":47}},"9":{"start":{"line":25,"column":4},"end":{"line":29,"column":6}},"10":{"start":{"line":30,"column":4},"end":{"line":34,"column":6}},"11":{"start":{"line":35,"column":4},"end":{"line":35,"column":36}},"12":{"start":{"line":36,"column":4},"end":{"line":36,"column":35}},"13":{"start":{"line":40,"column":19},"end":{"line":40,"column":49}},"14":{"start":{"line":41,"column":4},"end":{"line":41,"column":41}},"15":{"start":{"line":45,"column":19},"end":{"line":45,"column":57}},"16":{"start":{"line":46,"column":4},"end":{"line":48,"column":5}},"17":{"start":{"line":47,"column":6},"end":{"line":47,"column":48}},"18":{"start":{"line":52,"column":4},"end":{"line":67,"column":5}},"19":{"start":{"line":53,"column":6},"end":{"line":60,"column":7}},"20":{"start":{"line":54,"column":8},"end":{"line":54,"column":69}},"21":{"start":{"line":55,"column":8},"end":{"line":59,"column":10}},"22":{"start":{"line":62,"column":6},"end":{"line":66,"column":8}},"23":{"start":{"line":71,"column":4},"end":{"line":84,"column":5}},"24":{"start":{"line":72,"column":6},"end":{"line":72,"column":38}},"25":{"start":{"line":73,"column":6},"end":{"line":73,"column":61}},"26":{"start":{"line":74,"column":6},"end":{"line":74,"column":67}},"27":{"start":{"line":75,"column":6},"end":{"line":77,"column":9}},"28":{"start":{"line":79,"column":6},"end":{"line":83,"column":8}},"29":{"start":{"line":88,"column":4},"end":{"line":100,"column":5}},"30":{"start":{"line":89,"column":6},"end":{"line":89,"column":38}},"31":{"start":{"line":90,"column":6},"end":{"line":90,"column":37}},"32":{"start":{"line":91,"column":24},"end":{"line":91,"column":48}},"33":{"start":{"line":92,"column":23},"end":{"line":92,"column":78}},"34":{"start":{"line":93,"column":6},"end":{"line":93,"column":68}},"35":{"start":{"line":94,"column":6},"end":{"line":94,"column":80}},"36":{"start":{"line":96,"column":6},"end":{"line":99,"column":9}},"37":{"start":{"line":104,"column":4},"end":{"line":122,"column":5}},"38":{"start":{"line":105,"column":6},"end":{"line":105,"column":38}},"39":{"start":{"line":106,"column":6},"end":{"line":106,"column":37}},"40":{"start":{"line":107,"column":24},"end":{"line":107,"column":48}},"41":{"start":{"line":108,"column":21},"end":{"line":108,"column":58}},"42":{"start":{"line":109,"column":22},"end":{"line":113,"column":14}},"43":{"start":{"line":114,"column":23},"end":{"line":114,"column":80}},"44":{"start":{"line":115,"column":6},"end":{"line":115,"column":68}},"45":{"start":{"line":117,"column":6},"end":{"line":121,"column":8}},"46":{"start":{"line":129,"column":4},"end":{"line":177,"column":5}},"47":{"start":{"line":130,"column":6},"end":{"line":130,"column":38}},"48":{"start":{"line":131,"column":6},"end":{"line":131,"column":37}},"49":{"start":{"line":133,"column":6},"end":{"line":140,"column":7}},"50":{"start":{"line":134,"column":26},"end":{"line":134,"column":50}},"51":{"start":{"line":135,"column":8},"end":{"line":139,"column":10}},"52":{"start":{"line":142,"column":6},"end":{"line":149,"column":9}},"53":{"start":{"line":143,"column":26},"end":{"line":143,"column":50}},"54":{"start":{"line":144,"column":8},"end":{"line":148,"column":10}},"55":{"start":{"line":151,"column":26},"end":{"line":155,"column":8}},"56":{"start":{"line":157,"column":6},"end":{"line":161,"column":8}},"57":{"start":{"line":163,"column":6},"end":{"line":171,"column":8}},"58":{"start":{"line":173,"column":6},"end":{"line":176,"column":9}},"59":{"start":{"line":181,"column":4},"end":{"line":181,"column":29}},"60":{"start":{"line":185,"column":4},"end":{"line":185,"column":36}},"61":{"start":{"line":189,"column":4},"end":{"line":189,"column":40}},"62":{"start":{"line":193,"column":4},"end":{"line":203,"column":5}},"63":{"start":{"line":194,"column":26},"end":{"line":194,"column":79}},"64":{"start":{"line":195,"column":6},"end":{"line":195,"column":46}},"65":{"start":{"line":197,"column":6},"end":{"line":201,"column":8}},"66":{"start":{"line":202,"column":6},"end":{"line":202,"column":16}},"67":{"start":{"line":15,"column":13},"end":{"line":15,"column":38}},"68":{"start":{"line":15,"column":13},"end":{"line":205,"column":null}}},"fnMap":{"0":{"name":"(anonymous_8)","decl":{"start":{"line":20,"column":2},"end":{"line":20,"column":null}},"loc":{"start":{"line":22,"column":40},"end":{"line":37,"column":3}}},"1":{"name":"(anonymous_9)","decl":{"start":{"line":39,"column":10},"end":{"line":39,"column":25}},"loc":{"start":{"line":39,"column":25},"end":{"line":42,"column":3}}},"2":{"name":"(anonymous_10)","decl":{"start":{"line":44,"column":10},"end":{"line":44,"column":34}},"loc":{"start":{"line":44,"column":34},"end":{"line":49,"column":3}}},"3":{"name":"(anonymous_11)","decl":{"start":{"line":51,"column":10},"end":{"line":51,"column":33}},"loc":{"start":{"line":51,"column":33},"end":{"line":68,"column":3}}},"4":{"name":"(anonymous_12)","decl":{"start":{"line":70,"column":2},"end":{"line":70,"column":17}},"loc":{"start":{"line":70,"column":17},"end":{"line":85,"column":3}}},"5":{"name":"(anonymous_13)","decl":{"start":{"line":87,"column":2},"end":{"line":87,"column":12}},"loc":{"start":{"line":87,"column":49},"end":{"line":101,"column":3}}},"6":{"name":"(anonymous_14)","decl":{"start":{"line":103,"column":2},"end":{"line":103,"column":17}},"loc":{"start":{"line":103,"column":55},"end":{"line":123,"column":3}}},"7":{"name":"(anonymous_15)","decl":{"start":{"line":125,"column":2},"end":{"line":125,"column":27}},"loc":{"start":{"line":127,"column":37},"end":{"line":178,"column":3}}},"8":{"name":"(anonymous_16)","decl":{"start":{"line":142,"column":23},"end":{"line":142,"column":24}},"loc":{"start":{"line":142,"column":35},"end":{"line":149,"column":7}}},"9":{"name":"(anonymous_17)","decl":{"start":{"line":180,"column":2},"end":{"line":180,"column":21}},"loc":{"start":{"line":180,"column":21},"end":{"line":182,"column":3}}},"10":{"name":"(anonymous_18)","decl":{"start":{"line":184,"column":2},"end":{"line":184,"column":24}},"loc":{"start":{"line":184,"column":24},"end":{"line":186,"column":3}}},"11":{"name":"(anonymous_19)","decl":{"start":{"line":188,"column":2},"end":{"line":188,"column":28}},"loc":{"start":{"line":188,"column":28},"end":{"line":190,"column":3}}},"12":{"name":"(anonymous_20)","decl":{"start":{"line":192,"column":2},"end":{"line":192,"column":24}},"loc":{"start":{"line":192,"column":24},"end":{"line":204,"column":3}}}},"branchMap":{"0":{"loc":{"start":{"line":41,"column":11},"end":{"line":41,"column":40}},"type":"binary-expr","locations":[{"start":{"line":41,"column":11},"end":{"line":41,"column":30}},{"start":{"line":41,"column":34},"end":{"line":41,"column":40}}]},"1":{"loc":{"start":{"line":46,"column":4},"end":{"line":48,"column":5}},"type":"if","locations":[{"start":{"line":46,"column":4},"end":{"line":48,"column":5}}]},"2":{"loc":{"start":{"line":53,"column":6},"end":{"line":60,"column":7}},"type":"if","locations":[{"start":{"line":53,"column":6},"end":{"line":60,"column":7}}]},"3":{"loc":{"start":{"line":108,"column":21},"end":{"line":108,"column":58}},"type":"cond-expr","locations":[{"start":{"line":108,"column":38},"end":{"line":108,"column":47}},{"start":{"line":108,"column":50},"end":{"line":108,"column":58}}]},"4":{"loc":{"start":{"line":109,"column":22},"end":{"line":113,"column":14}},"type":"cond-expr","locations":[{"start":{"line":110,"column":10},"end":{"line":110,"column":45}},{"start":{"line":111,"column":10},"end":{"line":113,"column":14}}]},"5":{"loc":{"start":{"line":111,"column":10},"end":{"line":113,"column":14}},"type":"cond-expr","locations":[{"start":{"line":112,"column":12},"end":{"line":112,"column":33}},{"start":{"line":113,"column":12},"end":{"line":113,"column":14}}]},"6":{"loc":{"start":{"line":133,"column":6},"end":{"line":140,"column":7}},"type":"if","locations":[{"start":{"line":133,"column":6},"end":{"line":140,"column":7}}]}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":5,"7":5,"8":5,"9":5,"10":5,"11":5,"12":5,"13":5,"14":5,"15":9,"16":9,"17":0,"18":8,"19":8,"20":0,"21":0,"22":0,"23":1,"24":1,"25":1,"26":1,"27":1,"28":0,"29":2,"30":2,"31":2,"32":2,"33":2,"34":2,"35":2,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0,"46":1,"47":1,"48":1,"49":1,"50":0,"51":0,"52":1,"53":2,"54":2,"55":1,"56":1,"57":1,"58":0,"59":0,"60":0,"61":1,"62":1,"63":1,"64":1,"65":0,"66":0,"67":1,"68":1},"f":{"0":5,"1":5,"2":9,"3":8,"4":1,"5":2,"6":0,"7":1,"8":2,"9":0,"10":0,"11":1,"12":1},"b":{"0":[5,0],"1":[0],"2":[0],"3":[0,0],"4":[0,0],"5":[0,0],"6":[0]}} -,"/home/joao/projects/cracked-dev-cli/src/services/LLM/phases/blueprints/discoveryPhaseBlueprint.ts": {"path":"/home/joao/projects/cracked-dev-cli/src/services/LLM/phases/blueprints/discoveryPhaseBlueprint.ts","statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":56}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":37}},"2":{"start":{"line":5,"column":22},"end":{"line":5,"column":54}},"3":{"start":{"line":6,"column":15},"end":{"line":6,"column":40}},"4":{"start":{"line":8,"column":13},"end":{"line":110,"column":2}},"5":{"start":{"line":10,"column":46},"end":{"line":109,"column":null}}},"fnMap":{"0":{"name":"(anonymous_0)","decl":{"start":{"line":10,"column":18},"end":{"line":10,"column":19}},"loc":{"start":{"line":10,"column":46},"end":{"line":109,"column":null}}}},"branchMap":{"0":{"loc":{"start":{"line":100,"column":23},"end":{"line":100,"column":57}},"type":"binary-expr","locations":[{"start":{"line":100,"column":23},"end":{"line":100,"column":42}},{"start":{"line":100,"column":46},"end":{"line":100,"column":57}}]},"1":{"loc":{"start":{"line":101,"column":29},"end":{"line":101,"column":81}},"type":"binary-expr","locations":[{"start":{"line":101,"column":29},"end":{"line":101,"column":47}},{"start":{"line":101,"column":51},"end":{"line":101,"column":81}}]},"2":{"loc":{"start":{"line":102,"column":24},"end":{"line":102,"column":58}},"type":"binary-expr","locations":[{"start":{"line":102,"column":24},"end":{"line":102,"column":44}},{"start":{"line":102,"column":48},"end":{"line":102,"column":58}}]},"3":{"loc":{"start":{"line":105,"column":2},"end":{"line":105,"column":24}},"type":"binary-expr","locations":[{"start":{"line":105,"column":2},"end":{"line":105,"column":18}},{"start":{"line":105,"column":22},"end":{"line":105,"column":24}}]},"4":{"loc":{"start":{"line":107,"column":2},"end":{"line":107,"column":31}},"type":"binary-expr","locations":[{"start":{"line":107,"column":2},"end":{"line":107,"column":25}},{"start":{"line":107,"column":29},"end":{"line":107,"column":31}}]}},"s":{"0":25,"1":25,"2":25,"3":25,"4":25,"5":0},"f":{"0":0},"b":{"0":[0,0],"1":[0,0],"2":[0,0],"3":[0,0],"4":[0,0]}} -,"/home/joao/projects/cracked-dev-cli/src/services/LLM/phases/blueprints/executePhaseBlueprint.ts": {"path":"/home/joao/projects/cracked-dev-cli/src/services/LLM/phases/blueprints/executePhaseBlueprint.ts","statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":56}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":37}},"2":{"start":{"line":5,"column":22},"end":{"line":5,"column":54}},"3":{"start":{"line":6,"column":15},"end":{"line":6,"column":40}},"4":{"start":{"line":8,"column":13},"end":{"line":255,"column":2}},"5":{"start":{"line":10,"column":46},"end":{"line":254,"column":null}}},"fnMap":{"0":{"name":"(anonymous_0)","decl":{"start":{"line":10,"column":18},"end":{"line":10,"column":19}},"loc":{"start":{"line":10,"column":46},"end":{"line":254,"column":null}}}},"branchMap":{"0":{"loc":{"start":{"line":161,"column":23},"end":{"line":161,"column":57}},"type":"binary-expr","locations":[{"start":{"line":161,"column":23},"end":{"line":161,"column":42}},{"start":{"line":161,"column":46},"end":{"line":161,"column":57}}]},"1":{"loc":{"start":{"line":162,"column":29},"end":{"line":162,"column":81}},"type":"binary-expr","locations":[{"start":{"line":162,"column":29},"end":{"line":162,"column":47}},{"start":{"line":162,"column":51},"end":{"line":162,"column":81}}]},"2":{"loc":{"start":{"line":163,"column":24},"end":{"line":163,"column":65}},"type":"binary-expr","locations":[{"start":{"line":163,"column":24},"end":{"line":163,"column":44}},{"start":{"line":163,"column":48},"end":{"line":163,"column":65}}]},"3":{"loc":{"start":{"line":251,"column":2},"end":{"line":251,"column":69}},"type":"cond-expr","locations":[{"start":{"line":251,"column":21},"end":{"line":251,"column":64}},{"start":{"line":251,"column":67},"end":{"line":251,"column":69}}]}},"s":{"0":25,"1":25,"2":25,"3":25,"4":25,"5":0},"f":{"0":0},"b":{"0":[0,0],"1":[0,0],"2":[0,0],"3":[0,0]}} -,"/home/joao/projects/cracked-dev-cli/src/services/LLM/phases/blueprints/index.ts": {"path":"/home/joao/projects/cracked-dev-cli/src/services/LLM/phases/blueprints/index.ts","statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":47}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":68}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":64}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":66}},"4":{"start":{"line":6,"column":13},"end":{"line":10,"column":2}},"5":{"start":{"line":12,"column":0},"end":{"line":12,"column":42}},"6":{"start":{"line":13,"column":0},"end":{"line":13,"column":40}},"7":{"start":{"line":14,"column":0},"end":{"line":14,"column":41}}},"fnMap":{},"branchMap":{},"s":{"0":25,"1":25,"2":25,"3":25,"4":25,"5":25,"6":25,"7":25},"f":{},"b":{}} -,"/home/joao/projects/cracked-dev-cli/src/services/LLM/phases/blueprints/strategyPhaseBlueprint.ts": {"path":"/home/joao/projects/cracked-dev-cli/src/services/LLM/phases/blueprints/strategyPhaseBlueprint.ts","statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":56}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":37}},"2":{"start":{"line":5,"column":22},"end":{"line":5,"column":54}},"3":{"start":{"line":6,"column":15},"end":{"line":6,"column":40}},"4":{"start":{"line":8,"column":13},"end":{"line":85,"column":2}},"5":{"start":{"line":10,"column":46},"end":{"line":84,"column":null}}},"fnMap":{"0":{"name":"(anonymous_0)","decl":{"start":{"line":10,"column":18},"end":{"line":10,"column":19}},"loc":{"start":{"line":10,"column":46},"end":{"line":84,"column":null}}}},"branchMap":{},"s":{"0":25,"1":25,"2":25,"3":25,"4":25,"5":0},"f":{"0":0},"b":{}} -,"/home/joao/projects/cracked-dev-cli/src/services/LLM/types/PhaseTypes.ts": {"path":"/home/joao/projects/cracked-dev-cli/src/services/LLM/types/PhaseTypes.ts","statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":null}},"1":{"start":{"line":2,"column":2},"end":{"line":2,"column":null}},"2":{"start":{"line":3,"column":2},"end":{"line":3,"column":null}},"3":{"start":{"line":4,"column":2},"end":{"line":4,"column":null}}},"fnMap":{"0":{"name":"(anonymous_0)","decl":{"start":{"line":1,"column":0},"end":{"line":1,"column":12}},"loc":{"start":{"line":1,"column":17},"end":{"line":5,"column":1}}}},"branchMap":{"0":{"loc":{"start":{"line":1,"column":12},"end":{"line":1,"column":null}},"type":"binary-expr","locations":[{"start":{"line":1,"column":12},"end":{"line":1,"column":17}},{"start":{"line":1,"column":17},"end":{"line":1,"column":null}}]}},"s":{"0":25,"1":25,"2":25,"3":25},"f":{"0":25},"b":{"0":[25,25]}} -,"/home/joao/projects/cracked-dev-cli/src/services/LLM/utils/ModelUtils.ts": {"path":"/home/joao/projects/cracked-dev-cli/src/services/LLM/utils/ModelUtils.ts","statementMap":{"0":{"start":{"line":16,"column":2},"end":{"line":16,"column":82}},"1":{"start":{"line":18,"column":23},"end":{"line":18,"column":27}},"2":{"start":{"line":19,"column":25},"end":{"line":19,"column":26}},"3":{"start":{"line":22,"column":25},"end":{"line":26,"column":11}},"4":{"start":{"line":28,"column":32},"end":{"line":30,"column":1}},"5":{"start":{"line":29,"column":2},"end":{"line":29,"column":43}},"6":{"start":{"line":28,"column":13},"end":{"line":28,"column":32}},"7":{"start":{"line":32,"column":28},"end":{"line":37,"column":1}},"8":{"start":{"line":35,"column":16},"end":{"line":35,"column":57}},"9":{"start":{"line":36,"column":2},"end":{"line":36,"column":58}},"10":{"start":{"line":32,"column":13},"end":{"line":32,"column":28}},"11":{"start":{"line":39,"column":30},"end":{"line":56,"column":1}},"12":{"start":{"line":41,"column":27},"end":{"line":41,"column":62}},"13":{"start":{"line":42,"column":19},"end":{"line":42,"column":20}},"14":{"start":{"line":43,"column":23},"end":{"line":43,"column":27}},"15":{"start":{"line":45,"column":2},"end":{"line":50,"column":3}},"16":{"start":{"line":46,"column":24},"end":{"line":46,"column":46}},"17":{"start":{"line":47,"column":4},"end":{"line":47,"column":54}},"18":{"start":{"line":48,"column":4},"end":{"line":48,"column":20}},"19":{"start":{"line":49,"column":4},"end":{"line":49,"column":59}},"20":{"start":{"line":53,"column":24},"end":{"line":53,"column":62}},"21":{"start":{"line":55,"column":2},"end":{"line":55,"column":36}},"22":{"start":{"line":39,"column":13},"end":{"line":39,"column":30}},"23":{"start":{"line":58,"column":32},"end":{"line":67,"column":1}},"24":{"start":{"line":63,"column":2},"end":{"line":63,"column":67}},"25":{"start":{"line":63,"column":54},"end":{"line":63,"column":67}},"26":{"start":{"line":65,"column":20},"end":{"line":65,"column":47}},"27":{"start":{"line":66,"column":2},"end":{"line":66,"column":46}},"28":{"start":{"line":58,"column":13},"end":{"line":58,"column":32}},"29":{"start":{"line":69,"column":38},"end":{"line":94,"column":1}},"30":{"start":{"line":70,"column":2},"end":{"line":72,"column":3}},"31":{"start":{"line":71,"column":4},"end":{"line":71,"column":21}},"32":{"start":{"line":74,"column":27},"end":{"line":74,"column":29}},"33":{"start":{"line":75,"column":18},"end":{"line":75,"column":25}},"34":{"start":{"line":77,"column":2},"end":{"line":91,"column":3}},"35":{"start":{"line":78,"column":20},"end":{"line":78,"column":34}},"36":{"start":{"line":79,"column":4},"end":{"line":87,"column":5}},"37":{"start":{"line":81,"column":27},"end":{"line":83,"column":28}},"38":{"start":{"line":84,"column":6},"end":{"line":86,"column":7}},"39":{"start":{"line":85,"column":8},"end":{"line":85,"column":37}},"40":{"start":{"line":88,"column":18},"end":{"line":88,"column":47}},"41":{"start":{"line":89,"column":4},"end":{"line":89,"column":23}},"42":{"start":{"line":90,"column":4},"end":{"line":90,"column":43}},"43":{"start":{"line":93,"column":2},"end":{"line":93,"column":16}},"44":{"start":{"line":69,"column":13},"end":{"line":69,"column":38}},"45":{"start":{"line":96,"column":36},"end":{"line":152,"column":1}},"46":{"start":{"line":102,"column":2},"end":{"line":104,"column":3}},"47":{"start":{"line":103,"column":4},"end":{"line":103,"column":19}},"48":{"start":{"line":106,"column":20},"end":{"line":106,"column":39}},"49":{"start":{"line":107,"column":22},"end":{"line":107,"column":72}},"50":{"start":{"line":108,"column":17},"end":{"line":108,"column":48}},"51":{"start":{"line":111,"column":2},"end":{"line":119,"column":3}},"52":{"start":{"line":112,"column":4},"end":{"line":118,"column":6}},"53":{"start":{"line":122,"column":2},"end":{"line":145,"column":3}},"54":{"start":{"line":123,"column":29},"end":{"line":127,"column":7}},"55":{"start":{"line":123,"column":57},"end":{"line":127,"column":6}},"56":{"start":{"line":130,"column":4},"end":{"line":130,"column":57}},"57":{"start":{"line":130,"column":36},"end":{"line":130,"column":55}},"58":{"start":{"line":133,"column":28},"end":{"line":133,"column":59}},"59":{"start":{"line":134,"column":33},"end":{"line":135,"column":null}},"60":{"start":{"line":135,"column":60},"end":{"line":135,"column":67}},"61":{"start":{"line":138,"column":4},"end":{"line":144,"column":8}},"62":{"start":{"line":138,"column":39},"end":{"line":144,"column":6}},"63":{"start":{"line":148,"column":2},"end":{"line":151,"column":6}},"64":{"start":{"line":148,"column":32},"end":{"line":151,"column":4}},"65":{"start":{"line":96,"column":13},"end":{"line":96,"column":36}}},"fnMap":{"0":{"name":"(anonymous_0)","decl":{"start":{"line":28,"column":32},"end":{"line":28,"column":33}},"loc":{"start":{"line":28,"column":59},"end":{"line":30,"column":1}}},"1":{"name":"(anonymous_1)","decl":{"start":{"line":32,"column":28},"end":{"line":32,"column":null}},"loc":{"start":{"line":34,"column":42},"end":{"line":37,"column":1}}},"2":{"name":"(anonymous_2)","decl":{"start":{"line":39,"column":30},"end":{"line":39,"column":31}},"loc":{"start":{"line":39,"column":55},"end":{"line":56,"column":1}}},"3":{"name":"(anonymous_3)","decl":{"start":{"line":58,"column":32},"end":{"line":58,"column":null}},"loc":{"start":{"line":62,"column":13},"end":{"line":67,"column":1}}},"4":{"name":"(anonymous_4)","decl":{"start":{"line":69,"column":38},"end":{"line":69,"column":39}},"loc":{"start":{"line":69,"column":68},"end":{"line":94,"column":1}}},"5":{"name":"(anonymous_5)","decl":{"start":{"line":96,"column":36},"end":{"line":96,"column":null}},"loc":{"start":{"line":101,"column":32},"end":{"line":152,"column":1}}},"6":{"name":"(anonymous_6)","decl":{"start":{"line":123,"column":40},"end":{"line":123,"column":41}},"loc":{"start":{"line":123,"column":57},"end":{"line":127,"column":6}}},"7":{"name":"(anonymous_7)","decl":{"start":{"line":130,"column":26},"end":{"line":130,"column":27}},"loc":{"start":{"line":130,"column":36},"end":{"line":130,"column":55}}},"8":{"name":"(anonymous_8)","decl":{"start":{"line":135,"column":53},"end":{"line":135,"column":54}},"loc":{"start":{"line":135,"column":60},"end":{"line":135,"column":67}}},"9":{"name":"(anonymous_9)","decl":{"start":{"line":138,"column":22},"end":{"line":138,"column":23}},"loc":{"start":{"line":138,"column":39},"end":{"line":144,"column":6}}},"10":{"name":"(anonymous_10)","decl":{"start":{"line":148,"column":20},"end":{"line":148,"column":21}},"loc":{"start":{"line":148,"column":32},"end":{"line":151,"column":4}}}},"branchMap":{"0":{"loc":{"start":{"line":36,"column":10},"end":{"line":36,"column":57}},"type":"binary-expr","locations":[{"start":{"line":36,"column":10},"end":{"line":36,"column":49}},{"start":{"line":36,"column":53},"end":{"line":36,"column":57}}]},"1":{"loc":{"start":{"line":41,"column":27},"end":{"line":41,"column":62}},"type":"binary-expr","locations":[{"start":{"line":41,"column":27},"end":{"line":41,"column":56}},{"start":{"line":41,"column":60},"end":{"line":41,"column":62}}]},"2":{"loc":{"start":{"line":63,"column":2},"end":{"line":63,"column":67}},"type":"if","locations":[{"start":{"line":63,"column":2},"end":{"line":63,"column":67}}]},"3":{"loc":{"start":{"line":63,"column":6},"end":{"line":63,"column":52}},"type":"binary-expr","locations":[{"start":{"line":63,"column":6},"end":{"line":63,"column":16}},{"start":{"line":63,"column":20},"end":{"line":63,"column":52}}]},"4":{"loc":{"start":{"line":70,"column":2},"end":{"line":72,"column":3}},"type":"if","locations":[{"start":{"line":70,"column":2},"end":{"line":72,"column":3}}]},"5":{"loc":{"start":{"line":79,"column":4},"end":{"line":87,"column":5}},"type":"if","locations":[{"start":{"line":79,"column":4},"end":{"line":87,"column":5}}]},"6":{"loc":{"start":{"line":84,"column":6},"end":{"line":86,"column":7}},"type":"if","locations":[{"start":{"line":84,"column":6},"end":{"line":86,"column":7}}]},"7":{"loc":{"start":{"line":102,"column":2},"end":{"line":104,"column":3}},"type":"if","locations":[{"start":{"line":102,"column":2},"end":{"line":104,"column":3}}]},"8":{"loc":{"start":{"line":111,"column":2},"end":{"line":119,"column":3}},"type":"if","locations":[{"start":{"line":111,"column":2},"end":{"line":119,"column":3}}]},"9":{"loc":{"start":{"line":116,"column":12},"end":{"line":116,"column":67}},"type":"binary-expr","locations":[{"start":{"line":116,"column":12},"end":{"line":116,"column":23}},{"start":{"line":116,"column":27},"end":{"line":116,"column":67}}]},"10":{"loc":{"start":{"line":122,"column":2},"end":{"line":145,"column":3}},"type":"if","locations":[{"start":{"line":122,"column":2},"end":{"line":145,"column":3}}]},"11":{"loc":{"start":{"line":141,"column":10},"end":{"line":143,"column":8}},"type":"binary-expr","locations":[{"start":{"line":141,"column":10},"end":{"line":141,"column":39}},{"start":{"line":141,"column":43},"end":{"line":143,"column":8}}]}},"s":{"0":7,"1":7,"2":7,"3":7,"4":7,"5":56,"6":7,"7":7,"8":21,"9":21,"10":7,"11":7,"12":29,"13":29,"14":29,"15":29,"16":4,"17":4,"18":4,"19":4,"20":29,"21":29,"22":7,"23":7,"24":22,"25":2,"26":20,"27":20,"28":7,"29":7,"30":21,"31":16,"32":5,"33":5,"34":5,"35":10,"36":10,"37":5,"38":5,"39":1,"40":10,"41":10,"42":10,"43":5,"44":7,"45":7,"46":26,"47":10,"48":16,"49":16,"50":16,"51":16,"52":14,"53":2,"54":2,"55":4,"56":2,"57":2,"58":2,"59":2,"60":3,"61":2,"62":4,"63":0,"64":0,"65":7},"f":{"0":56,"1":21,"2":29,"3":22,"4":21,"5":26,"6":4,"7":2,"8":3,"9":4,"10":0},"b":{"0":[21,1],"1":[29,26],"2":[2],"3":[22,21],"4":[16],"5":[5],"6":[1],"7":[10],"8":[14],"9":[14,2],"10":[2],"11":[4,3]}} -,"/home/joao/projects/cracked-dev-cli/src/services/LLM/utils/ProjectInfo.ts": {"path":"/home/joao/projects/cracked-dev-cli/src/services/LLM/utils/ProjectInfo.ts","statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":20}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":24}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":42}},"3":{"start":{"line":12,"column":7},"end":{"line":173,"column":null}},"4":{"start":{"line":16,"column":18},"end":{"line":18,"column":6}},"5":{"start":{"line":19,"column":28},"end":{"line":27,"column":6}},"6":{"start":{"line":29,"column":32},"end":{"line":30,"column":null}},"7":{"start":{"line":30,"column":6},"end":{"line":30,"column":72}},"8":{"start":{"line":30,"column":29},"end":{"line":30,"column":71}},"9":{"start":{"line":33,"column":4},"end":{"line":38,"column":5}},"10":{"start":{"line":34,"column":6},"end":{"line":37,"column":8}},"11":{"start":{"line":40,"column":4},"end":{"line":56,"column":5}},"12":{"start":{"line":42,"column":8},"end":{"line":42,"column":69}},"13":{"start":{"line":45,"column":8},"end":{"line":45,"column":71}},"14":{"start":{"line":47,"column":8},"end":{"line":47,"column":69}},"15":{"start":{"line":49,"column":8},"end":{"line":49,"column":67}},"16":{"start":{"line":51,"column":8},"end":{"line":55,"column":10}},"17":{"start":{"line":63,"column":4},"end":{"line":78,"column":5}},"18":{"start":{"line":64,"column":30},"end":{"line":64,"column":68}},"19":{"start":{"line":65,"column":22},"end":{"line":65,"column":74}},"20":{"start":{"line":66,"column":26},"end":{"line":66,"column":45}},"21":{"start":{"line":68,"column":6},"end":{"line":75,"column":8}},"22":{"start":{"line":77,"column":6},"end":{"line":77,"column":67}},"23":{"start":{"line":85,"column":4},"end":{"line":105,"column":5}},"24":{"start":{"line":86,"column":35},"end":{"line":86,"column":37}},"25":{"start":{"line":87,"column":22},"end":{"line":87,"column":60}},"26":{"start":{"line":88,"column":22},"end":{"line":88,"column":66}},"27":{"start":{"line":90,"column":6},"end":{"line":96,"column":7}},"28":{"start":{"line":91,"column":8},"end":{"line":95,"column":46}},"29":{"start":{"line":93,"column":25},"end":{"line":93,"column":36}},"30":{"start":{"line":94,"column":28},"end":{"line":94,"column":57}},"31":{"start":{"line":95,"column":25},"end":{"line":95,"column":44}},"32":{"start":{"line":98,"column":6},"end":{"line":102,"column":8}},"33":{"start":{"line":104,"column":6},"end":{"line":104,"column":67}},"34":{"start":{"line":112,"column":4},"end":{"line":141,"column":5}},"35":{"start":{"line":113,"column":24},"end":{"line":113,"column":62}},"36":{"start":{"line":114,"column":22},"end":{"line":114,"column":68}},"37":{"start":{"line":116,"column":37},"end":{"line":116,"column":39}},"38":{"start":{"line":117,"column":26},"end":{"line":117,"column":31}},"39":{"start":{"line":119,"column":6},"end":{"line":128,"column":9}},"40":{"start":{"line":120,"column":8},"end":{"line":127,"column":9}},"41":{"start":{"line":121,"column":10},"end":{"line":121,"column":31}},"42":{"start":{"line":122,"column":15},"end":{"line":127,"column":9}},"43":{"start":{"line":123,"column":10},"end":{"line":123,"column":32}},"44":{"start":{"line":124,"column":15},"end":{"line":127,"column":9}},"45":{"start":{"line":125,"column":22},"end":{"line":125,"column":47}},"46":{"start":{"line":126,"column":10},"end":{"line":126,"column":33}},"47":{"start":{"line":130,"column":6},"end":{"line":138,"column":8}},"48":{"start":{"line":140,"column":6},"end":{"line":140,"column":67}},"49":{"start":{"line":148,"column":4},"end":{"line":171,"column":5}},"50":{"start":{"line":149,"column":22},"end":{"line":149,"column":60}},"51":{"start":{"line":150,"column":22},"end":{"line":150,"column":66}},"52":{"start":{"line":152,"column":37},"end":{"line":152,"column":39}},"53":{"start":{"line":153,"column":6},"end":{"line":158,"column":9}},"54":{"start":{"line":154,"column":28},"end":{"line":154,"column":39}},"55":{"start":{"line":155,"column":8},"end":{"line":157,"column":9}},"56":{"start":{"line":156,"column":10},"end":{"line":156,"column":55}},"57":{"start":{"line":160,"column":6},"end":{"line":168,"column":8}},"58":{"start":{"line":170,"column":6},"end":{"line":170,"column":67}},"59":{"start":{"line":12,"column":13},"end":{"line":12,"column":24}},"60":{"start":{"line":12,"column":13},"end":{"line":173,"column":null}}},"fnMap":{"0":{"name":"(anonymous_3)","decl":{"start":{"line":13,"column":2},"end":{"line":13,"column":17}},"loc":{"start":{"line":13,"column":2},"end":{"line":13,"column":18}}},"1":{"name":"(anonymous_4)","decl":{"start":{"line":15,"column":2},"end":{"line":15,"column":7}},"loc":{"start":{"line":15,"column":45},"end":{"line":57,"column":3}}},"2":{"name":"(anonymous_5)","decl":{"start":{"line":29,"column":53},"end":{"line":29,"column":54}},"loc":{"start":{"line":30,"column":6},"end":{"line":30,"column":72}}},"3":{"name":"(anonymous_6)","decl":{"start":{"line":30,"column":17},"end":{"line":30,"column":18}},"loc":{"start":{"line":30,"column":29},"end":{"line":30,"column":71}}},"4":{"name":"(anonymous_7)","decl":{"start":{"line":59,"column":10},"end":{"line":59,"column":15}},"loc":{"start":{"line":61,"column":26},"end":{"line":79,"column":3}}},"5":{"name":"(anonymous_8)","decl":{"start":{"line":81,"column":10},"end":{"line":81,"column":15}},"loc":{"start":{"line":83,"column":26},"end":{"line":106,"column":3}}},"6":{"name":"(anonymous_9)","decl":{"start":{"line":93,"column":15},"end":{"line":93,"column":16}},"loc":{"start":{"line":93,"column":25},"end":{"line":93,"column":36}}},"7":{"name":"(anonymous_10)","decl":{"start":{"line":94,"column":18},"end":{"line":94,"column":19}},"loc":{"start":{"line":94,"column":28},"end":{"line":94,"column":57}}},"8":{"name":"(anonymous_11)","decl":{"start":{"line":95,"column":15},"end":{"line":95,"column":16}},"loc":{"start":{"line":95,"column":25},"end":{"line":95,"column":44}}},"9":{"name":"(anonymous_12)","decl":{"start":{"line":108,"column":10},"end":{"line":108,"column":15}},"loc":{"start":{"line":110,"column":26},"end":{"line":142,"column":3}}},"10":{"name":"(anonymous_13)","decl":{"start":{"line":119,"column":34},"end":{"line":119,"column":35}},"loc":{"start":{"line":119,"column":43},"end":{"line":128,"column":7}}},"11":{"name":"(anonymous_14)","decl":{"start":{"line":144,"column":10},"end":{"line":144,"column":15}},"loc":{"start":{"line":146,"column":26},"end":{"line":172,"column":3}}},"12":{"name":"(anonymous_15)","decl":{"start":{"line":153,"column":34},"end":{"line":153,"column":35}},"loc":{"start":{"line":153,"column":43},"end":{"line":158,"column":7}}}},"branchMap":{"0":{"loc":{"start":{"line":30,"column":29},"end":{"line":30,"column":71}},"type":"binary-expr","locations":[{"start":{"line":30,"column":29},"end":{"line":30,"column":44}},{"start":{"line":30,"column":48},"end":{"line":30,"column":71}}]},"1":{"loc":{"start":{"line":33,"column":4},"end":{"line":38,"column":5}},"type":"if","locations":[{"start":{"line":33,"column":4},"end":{"line":38,"column":5}}]},"2":{"loc":{"start":{"line":40,"column":4},"end":{"line":56,"column":5}},"type":"switch","locations":[{"start":{"line":41,"column":6},"end":{"line":42,"column":69}},{"start":{"line":43,"column":6},"end":{"line":43,"column":30}},{"start":{"line":44,"column":6},"end":{"line":45,"column":71}},{"start":{"line":46,"column":6},"end":{"line":47,"column":69}},{"start":{"line":48,"column":6},"end":{"line":49,"column":67}},{"start":{"line":50,"column":6},"end":{"line":55,"column":10}}]},"3":{"loc":{"start":{"line":70,"column":25},"end":{"line":70,"column":55}},"type":"binary-expr","locations":[{"start":{"line":70,"column":25},"end":{"line":70,"column":49}},{"start":{"line":70,"column":53},"end":{"line":70,"column":55}}]},"4":{"loc":{"start":{"line":71,"column":25},"end":{"line":71,"column":58}},"type":"binary-expr","locations":[{"start":{"line":71,"column":25},"end":{"line":71,"column":52}},{"start":{"line":71,"column":56},"end":{"line":71,"column":58}}]},"5":{"loc":{"start":{"line":73,"column":17},"end":{"line":73,"column":42}},"type":"binary-expr","locations":[{"start":{"line":73,"column":17},"end":{"line":73,"column":36}},{"start":{"line":73,"column":40},"end":{"line":73,"column":42}}]},"6":{"loc":{"start":{"line":90,"column":6},"end":{"line":96,"column":7}},"type":"if","locations":[{"start":{"line":90,"column":6},"end":{"line":96,"column":7}}]},"7":{"loc":{"start":{"line":94,"column":28},"end":{"line":94,"column":57}},"type":"binary-expr","locations":[{"start":{"line":94,"column":28},"end":{"line":94,"column":32}},{"start":{"line":94,"column":36},"end":{"line":94,"column":57}}]},"8":{"loc":{"start":{"line":120,"column":8},"end":{"line":127,"column":9}},"type":"if","locations":[{"start":{"line":120,"column":8},"end":{"line":127,"column":9}},{"start":{"line":122,"column":15},"end":{"line":127,"column":9}}]},"9":{"loc":{"start":{"line":122,"column":15},"end":{"line":127,"column":9}},"type":"if","locations":[{"start":{"line":122,"column":15},"end":{"line":127,"column":9}},{"start":{"line":124,"column":15},"end":{"line":127,"column":9}}]},"10":{"loc":{"start":{"line":124,"column":15},"end":{"line":127,"column":9}},"type":"if","locations":[{"start":{"line":124,"column":15},"end":{"line":127,"column":9}}]},"11":{"loc":{"start":{"line":124,"column":19},"end":{"line":124,"column":54}},"type":"binary-expr","locations":[{"start":{"line":124,"column":19},"end":{"line":124,"column":32}},{"start":{"line":124,"column":36},"end":{"line":124,"column":54}}]},"12":{"loc":{"start":{"line":155,"column":8},"end":{"line":157,"column":9}},"type":"if","locations":[{"start":{"line":155,"column":8},"end":{"line":157,"column":9}}]},"13":{"loc":{"start":{"line":155,"column":12},"end":{"line":155,"column":84}},"type":"binary-expr","locations":[{"start":{"line":155,"column":12},"end":{"line":155,"column":41}},{"start":{"line":155,"column":45},"end":{"line":155,"column":84}}]}},"s":{"0":6,"1":6,"2":6,"3":6,"4":5,"5":5,"6":5,"7":17,"8":17,"9":5,"10":1,"11":4,"12":1,"13":1,"14":1,"15":1,"16":0,"17":1,"18":1,"19":1,"20":1,"21":1,"22":0,"23":1,"24":1,"25":1,"26":1,"27":1,"28":1,"29":5,"30":5,"31":2,"32":1,"33":0,"34":1,"35":1,"36":1,"37":1,"38":1,"39":1,"40":5,"41":1,"42":4,"43":0,"44":4,"45":2,"46":2,"47":1,"48":0,"49":1,"50":1,"51":1,"52":1,"53":1,"54":10,"55":10,"56":2,"57":1,"58":0,"59":6,"60":6},"f":{"0":104,"1":5,"2":17,"3":17,"4":1,"5":1,"6":5,"7":5,"8":2,"9":1,"10":5,"11":1,"12":10},"b":{"0":[17,17],"1":[1],"2":[1,1,1,1,1,0],"3":[1,0],"4":[1,0],"5":[1,0],"6":[1],"7":[5,3],"8":[1,4],"9":[0,4],"10":[2],"11":[4,3],"12":[2],"13":[10,10]}} -,"/home/joao/projects/cracked-dev-cli/src/services/LLMProviders/OpenRouter/OpenRouterAPI.ts": {"path":"/home/joao/projects/cracked-dev-cli/src/services/LLMProviders/OpenRouter/OpenRouterAPI.ts","statementMap":{"0":{"start":{"line":3,"column":0},"end":{"line":3,"column":85}},"1":{"start":{"line":4,"column":0},"end":{"line":4,"column":85}},"2":{"start":{"line":5,"column":0},"end":{"line":5,"column":92}},"3":{"start":{"line":6,"column":0},"end":{"line":6,"column":63}},"4":{"start":{"line":11,"column":0},"end":{"line":11,"column":52}},"5":{"start":{"line":12,"column":0},"end":{"line":12,"column":58}},"6":{"start":{"line":13,"column":0},"end":{"line":13,"column":56}},"7":{"start":{"line":14,"column":0},"end":{"line":14,"column":null}},"8":{"start":{"line":19,"column":0},"end":{"line":19,"column":60}},"9":{"start":{"line":20,"column":0},"end":{"line":20,"column":69}},"10":{"start":{"line":21,"column":0},"end":{"line":21,"column":45}},"11":{"start":{"line":22,"column":0},"end":{"line":22,"column":72}},"12":{"start":{"line":30,"column":4},"end":{"line":30,"column":19}},"13":{"start":{"line":27,"column":20},"end":{"line":27,"column":32}},"14":{"start":{"line":28,"column":20},"end":{"line":28,"column":55}},"15":{"start":{"line":31,"column":4},"end":{"line":31,"column":27}},"16":{"start":{"line":24,"column":0},"end":{"line":24,"column":13}},"17":{"start":{"line":46,"column":7},"end":{"line":529,"column":null}},"18":{"start":{"line":55,"column":12},"end":{"line":55,"column":31}},"19":{"start":{"line":56,"column":12},"end":{"line":56,"column":26}},"20":{"start":{"line":57,"column":12},"end":{"line":57,"column":23}},"21":{"start":{"line":58,"column":12},"end":{"line":58,"column":25}},"22":{"start":{"line":59,"column":12},"end":{"line":59,"column":25}},"23":{"start":{"line":61,"column":12},"end":{"line":61,"column":25}},"24":{"start":{"line":62,"column":12},"end":{"line":62,"column":35}},"25":{"start":{"line":63,"column":12},"end":{"line":63,"column":35}},"26":{"start":{"line":64,"column":12},"end":{"line":64,"column":38}},"27":{"start":{"line":48,"column":10},"end":{"line":48,"column":36}},"28":{"start":{"line":49,"column":10},"end":{"line":49,"column":33}},"29":{"start":{"line":50,"column":10},"end":{"line":50,"column":36}},"30":{"start":{"line":52,"column":10},"end":{"line":52,"column":35}},"31":{"start":{"line":66,"column":4},"end":{"line":66,"column":39}},"32":{"start":{"line":67,"column":4},"end":{"line":67,"column":31}},"33":{"start":{"line":71,"column":4},"end":{"line":77,"column":5}},"34":{"start":{"line":72,"column":6},"end":{"line":72,"column":40}},"35":{"start":{"line":74,"column":6},"end":{"line":76,"column":9}},"36":{"start":{"line":81,"column":4},"end":{"line":83,"column":5}},"37":{"start":{"line":82,"column":6},"end":{"line":82,"column":16}},"38":{"start":{"line":85,"column":4},"end":{"line":88,"column":6}},"39":{"start":{"line":96,"column":18},"end":{"line":96,"column":28}},"40":{"start":{"line":97,"column":20},"end":{"line":97,"column":51}},"41":{"start":{"line":99,"column":4},"end":{"line":105,"column":7}},"42":{"start":{"line":111,"column":4},"end":{"line":133,"column":5}},"43":{"start":{"line":112,"column":20},"end":{"line":112,"column":47}},"44":{"start":{"line":114,"column":6},"end":{"line":116,"column":7}},"45":{"start":{"line":115,"column":8},"end":{"line":115,"column":73}},"46":{"start":{"line":118,"column":6},"end":{"line":132,"column":7}},"47":{"start":{"line":122,"column":22},"end":{"line":122,"column":57}},"48":{"start":{"line":123,"column":29},"end":{"line":123,"column":78}},"49":{"start":{"line":124,"column":8},"end":{"line":131,"column":10}},"50":{"start":{"line":135,"column":4},"end":{"line":137,"column":5}},"51":{"start":{"line":136,"column":6},"end":{"line":136,"column":19}},"52":{"start":{"line":139,"column":4},"end":{"line":143,"column":6}},"53":{"start":{"line":151,"column":29},"end":{"line":152,"column":null}},"54":{"start":{"line":152,"column":15},"end":{"line":152,"column":45}},"55":{"start":{"line":155,"column":4},"end":{"line":163,"column":8}},"56":{"start":{"line":155,"column":49},"end":{"line":163,"column":6}},"57":{"start":{"line":171,"column":21},"end":{"line":171,"column":50}},"58":{"start":{"line":172,"column":25},"end":{"line":172,"column":69}},"59":{"start":{"line":174,"column":4},"end":{"line":202,"column":5}},"60":{"start":{"line":175,"column":6},"end":{"line":175,"column":57}},"61":{"start":{"line":177,"column":32},"end":{"line":179,"column":null}},"62":{"start":{"line":182,"column":6},"end":{"line":182,"column":48}},"63":{"start":{"line":184,"column":23},"end":{"line":188,"column":8}},"64":{"start":{"line":190,"column":31},"end":{"line":190,"column":71}},"65":{"start":{"line":192,"column":6},"end":{"line":192,"column":61}},"66":{"start":{"line":193,"column":6},"end":{"line":193,"column":75}},"67":{"start":{"line":195,"column":23},"end":{"line":195,"column":68}},"68":{"start":{"line":196,"column":20},"end":{"line":196,"column":52}},"69":{"start":{"line":197,"column":6},"end":{"line":197,"column":53}},"70":{"start":{"line":199,"column":6},"end":{"line":199,"column":30}},"71":{"start":{"line":201,"column":6},"end":{"line":201,"column":45}},"72":{"start":{"line":211,"column":4},"end":{"line":213,"column":5}},"73":{"start":{"line":212,"column":6},"end":{"line":212,"column":53}},"74":{"start":{"line":214,"column":4},"end":{"line":214,"column":53}},"75":{"start":{"line":218,"column":4},"end":{"line":218,"column":39}},"76":{"start":{"line":222,"column":4},"end":{"line":222,"column":52}},"77":{"start":{"line":226,"column":4},"end":{"line":226,"column":67}},"78":{"start":{"line":227,"column":4},"end":{"line":229,"column":6}},"79":{"start":{"line":233,"column":4},"end":{"line":238,"column":5}},"80":{"start":{"line":234,"column":6},"end":{"line":234,"column":40}},"81":{"start":{"line":235,"column":6},"end":{"line":235,"column":43}},"82":{"start":{"line":237,"column":6},"end":{"line":237,"column":45}},"83":{"start":{"line":242,"column":4},"end":{"line":242,"column":50}},"84":{"start":{"line":246,"column":17},"end":{"line":246,"column":57}},"85":{"start":{"line":247,"column":4},"end":{"line":247,"column":64}},"86":{"start":{"line":255,"column":4},"end":{"line":258,"column":7}},"87":{"start":{"line":260,"column":4},"end":{"line":271,"column":5}},"88":{"start":{"line":262,"column":8},"end":{"line":262,"column":57}},"89":{"start":{"line":263,"column":6},"end":{"line":270,"column":7}},"90":{"start":{"line":264,"column":8},"end":{"line":268,"column":10}},"91":{"start":{"line":269,"column":8},"end":{"line":269,"column":15}},"92":{"start":{"line":273,"column":4},"end":{"line":273,"column":24}},"93":{"start":{"line":280,"column":4},"end":{"line":295,"column":5}},"94":{"start":{"line":281,"column":6},"end":{"line":283,"column":7}},"95":{"start":{"line":282,"column":8},"end":{"line":282,"column":49}},"96":{"start":{"line":284,"column":6},"end":{"line":284,"column":31}},"97":{"start":{"line":286,"column":6},"end":{"line":289,"column":7}},"98":{"start":{"line":287,"column":8},"end":{"line":287,"column":77}},"99":{"start":{"line":287,"column":39},"end":{"line":287,"column":75}},"100":{"start":{"line":288,"column":8},"end":{"line":288,"column":65}},"101":{"start":{"line":291,"column":6},"end":{"line":293,"column":7}},"102":{"start":{"line":292,"column":8},"end":{"line":292,"column":20}},"103":{"start":{"line":294,"column":6},"end":{"line":294,"column":45}},"104":{"start":{"line":299,"column":4},"end":{"line":305,"column":5}},"105":{"start":{"line":300,"column":6},"end":{"line":304,"column":8}},"106":{"start":{"line":306,"column":16},"end":{"line":306,"column":60}},"107":{"start":{"line":307,"column":4},"end":{"line":312,"column":6}},"108":{"start":{"line":319,"column":4},"end":{"line":350,"column":5}},"109":{"start":{"line":320,"column":22},"end":{"line":320,"column":59}},"110":{"start":{"line":321,"column":6},"end":{"line":327,"column":7}},"111":{"start":{"line":326,"column":8},"end":{"line":326,"column":31}},"112":{"start":{"line":329,"column":21},"end":{"line":329,"column":40}},"113":{"start":{"line":331,"column":6},"end":{"line":333,"column":7}},"114":{"start":{"line":332,"column":8},"end":{"line":332,"column":52}},"115":{"start":{"line":335,"column":6},"end":{"line":337,"column":7}},"116":{"start":{"line":336,"column":8},"end":{"line":336,"column":60}},"117":{"start":{"line":339,"column":27},"end":{"line":339,"column":62}},"118":{"start":{"line":340,"column":6},"end":{"line":342,"column":7}},"119":{"start":{"line":341,"column":8},"end":{"line":341,"column":31}},"120":{"start":{"line":344,"column":29},"end":{"line":344,"column":72}},"121":{"start":{"line":346,"column":6},"end":{"line":346,"column":41}},"122":{"start":{"line":348,"column":6},"end":{"line":348,"column":80}},"123":{"start":{"line":349,"column":6},"end":{"line":349,"column":29}},"124":{"start":{"line":357,"column":4},"end":{"line":357,"column":31}},"125":{"start":{"line":359,"column":18},"end":{"line":359,"column":20}},"126":{"start":{"line":362,"column":21},"end":{"line":362,"column":50}},"127":{"start":{"line":363,"column":4},"end":{"line":363,"column":45}},"128":{"start":{"line":365,"column":4},"end":{"line":369,"column":5}},"129":{"start":{"line":366,"column":21},"end":{"line":366,"column":63}},"130":{"start":{"line":367,"column":6},"end":{"line":367,"column":45}},"131":{"start":{"line":367,"column":24},"end":{"line":367,"column":45}},"132":{"start":{"line":368,"column":6},"end":{"line":368,"column":32}},"133":{"start":{"line":371,"column":4},"end":{"line":371,"column":30}},"134":{"start":{"line":380,"column":21},"end":{"line":380,"column":50}},"135":{"start":{"line":381,"column":25},"end":{"line":381,"column":69}},"136":{"start":{"line":383,"column":27},"end":{"line":383,"column":29}},"137":{"start":{"line":384,"column":4},"end":{"line":384,"column":27}},"138":{"start":{"line":386,"column":4},"end":{"line":508,"column":5}},"139":{"start":{"line":387,"column":6},"end":{"line":387,"column":57}},"140":{"start":{"line":389,"column":32},"end":{"line":391,"column":null}},"141":{"start":{"line":394,"column":6},"end":{"line":394,"column":37}},"142":{"start":{"line":396,"column":30},"end":{"line":490,"column":7}},"143":{"start":{"line":397,"column":25},"end":{"line":408,"column":null}},"144":{"start":{"line":411,"column":8},"end":{"line":489,"column":9}},"145":{"start":{"line":412,"column":10},"end":{"line":412,"column":38}},"146":{"start":{"line":414,"column":10},"end":{"line":474,"column":13}},"147":{"start":{"line":415,"column":32},"end":{"line":418,"column":13}},"148":{"start":{"line":416,"column":14},"end":{"line":416,"column":76}},"149":{"start":{"line":417,"column":14},"end":{"line":417,"column":26}},"150":{"start":{"line":420,"column":12},"end":{"line":445,"column":15}},"151":{"start":{"line":421,"column":14},"end":{"line":424,"column":15}},"152":{"start":{"line":422,"column":16},"end":{"line":422,"column":37}},"153":{"start":{"line":423,"column":16},"end":{"line":423,"column":23}},"154":{"start":{"line":426,"column":41},"end":{"line":427,"column":null}},"155":{"start":{"line":430,"column":14},"end":{"line":439,"column":15}},"156":{"start":{"line":431,"column":33},"end":{"line":434,"column":null}},"157":{"start":{"line":436,"column":16},"end":{"line":436,"column":68}},"158":{"start":{"line":437,"column":16},"end":{"line":437,"column":33}},"159":{"start":{"line":438,"column":16},"end":{"line":438,"column":23}},"160":{"start":{"line":441,"column":14},"end":{"line":444,"column":15}},"161":{"start":{"line":442,"column":16},"end":{"line":442,"column":44}},"162":{"start":{"line":443,"column":16},"end":{"line":443,"column":34}},"163":{"start":{"line":447,"column":12},"end":{"line":471,"column":15}},"164":{"start":{"line":448,"column":14},"end":{"line":448,"column":39}},"165":{"start":{"line":448,"column":32},"end":{"line":448,"column":39}},"166":{"start":{"line":450,"column":14},"end":{"line":468,"column":15}},"167":{"start":{"line":451,"column":43},"end":{"line":452,"column":null}},"168":{"start":{"line":454,"column":16},"end":{"line":463,"column":17}},"169":{"start":{"line":455,"column":18},"end":{"line":461,"column":20}},"170":{"start":{"line":462,"column":18},"end":{"line":462,"column":25}},"171":{"start":{"line":464,"column":16},"end":{"line":467,"column":17}},"172":{"start":{"line":465,"column":18},"end":{"line":465,"column":46}},"173":{"start":{"line":466,"column":18},"end":{"line":466,"column":36}},"174":{"start":{"line":469,"column":14},"end":{"line":469,"column":35}},"175":{"start":{"line":470,"column":14},"end":{"line":470,"column":24}},"176":{"start":{"line":473,"column":12},"end":{"line":473,"column":49}},"177":{"start":{"line":476,"column":10},"end":{"line":486,"column":11}},"178":{"start":{"line":477,"column":12},"end":{"line":477,"column":67}},"179":{"start":{"line":478,"column":12},"end":{"line":481,"column":14}},"180":{"start":{"line":483,"column":29},"end":{"line":483,"column":74}},"181":{"start":{"line":484,"column":26},"end":{"line":484,"column":58}},"182":{"start":{"line":485,"column":12},"end":{"line":485,"column":59}},"183":{"start":{"line":488,"column":10},"end":{"line":488,"column":22}},"184":{"start":{"line":492,"column":6},"end":{"line":492,"column":55}},"185":{"start":{"line":495,"column":8},"end":{"line":495,"column":76}},"186":{"start":{"line":496,"column":6},"end":{"line":496,"column":64}},"187":{"start":{"line":498,"column":6},"end":{"line":505,"column":7}},"188":{"start":{"line":499,"column":8},"end":{"line":499,"column":63}},"189":{"start":{"line":500,"column":8},"end":{"line":500,"column":77}},"190":{"start":{"line":502,"column":25},"end":{"line":502,"column":70}},"191":{"start":{"line":503,"column":22},"end":{"line":503,"column":54}},"192":{"start":{"line":504,"column":8},"end":{"line":504,"column":55}},"193":{"start":{"line":507,"column":6},"end":{"line":507,"column":27}},"194":{"start":{"line":512,"column":4},"end":{"line":516,"column":5}},"195":{"start":{"line":513,"column":6},"end":{"line":513,"column":39}},"196":{"start":{"line":514,"column":6},"end":{"line":514,"column":28}},"197":{"start":{"line":515,"column":6},"end":{"line":515,"column":25}},"198":{"start":{"line":517,"column":4},"end":{"line":517,"column":27}},"199":{"start":{"line":518,"column":4},"end":{"line":518,"column":25}},"200":{"start":{"line":522,"column":4},"end":{"line":522,"column":24}},"201":{"start":{"line":523,"column":4},"end":{"line":527,"column":5}},"202":{"start":{"line":524,"column":6},"end":{"line":524,"column":39}},"203":{"start":{"line":525,"column":6},"end":{"line":525,"column":28}},"204":{"start":{"line":526,"column":6},"end":{"line":526,"column":25}},"205":{"start":{"line":46,"column":13},"end":{"line":46,"column":26}},"206":{"start":{"line":46,"column":13},"end":{"line":529,"column":null}}},"fnMap":{"0":{"name":"(anonymous_4)","decl":{"start":{"line":25,"column":2},"end":{"line":25,"column":null}},"loc":{"start":{"line":28,"column":57},"end":{"line":32,"column":3}}},"1":{"name":"(anonymous_5)","decl":{"start":{"line":54,"column":2},"end":{"line":54,"column":null}},"loc":{"start":{"line":64,"column":63},"end":{"line":68,"column":3}}},"2":{"name":"(anonymous_6)","decl":{"start":{"line":70,"column":10},"end":{"line":70,"column":15}},"loc":{"start":{"line":70,"column":35},"end":{"line":78,"column":3}}},"3":{"name":"(anonymous_7)","decl":{"start":{"line":80,"column":10},"end":{"line":80,"column":29}},"loc":{"start":{"line":80,"column":43},"end":{"line":89,"column":3}}},"4":{"name":"(anonymous_8)","decl":{"start":{"line":91,"column":10},"end":{"line":91,"column":15}},"loc":{"start":{"line":94,"column":21},"end":{"line":106,"column":3}}},"5":{"name":"(anonymous_9)","decl":{"start":{"line":108,"column":10},"end":{"line":108,"column":15}},"loc":{"start":{"line":109,"column":37},"end":{"line":144,"column":3}}},"6":{"name":"(anonymous_10)","decl":{"start":{"line":146,"column":10},"end":{"line":146,"column":24}},"loc":{"start":{"line":148,"column":17},"end":{"line":164,"column":3}}},"7":{"name":"(anonymous_11)","decl":{"start":{"line":152,"column":6},"end":{"line":152,"column":7}},"loc":{"start":{"line":152,"column":15},"end":{"line":152,"column":45}}},"8":{"name":"(anonymous_12)","decl":{"start":{"line":155,"column":32},"end":{"line":155,"column":33}},"loc":{"start":{"line":155,"column":49},"end":{"line":163,"column":6}}},"9":{"name":"(anonymous_13)","decl":{"start":{"line":166,"column":2},"end":{"line":166,"column":7}},"loc":{"start":{"line":169,"column":37},"end":{"line":203,"column":3}}},"10":{"name":"(anonymous_14)","decl":{"start":{"line":205,"column":2},"end":{"line":205,"column":7}},"loc":{"start":{"line":209,"column":37},"end":{"line":215,"column":3}}},"11":{"name":"(anonymous_15)","decl":{"start":{"line":217,"column":2},"end":{"line":217,"column":7}},"loc":{"start":{"line":217,"column":32},"end":{"line":219,"column":3}}},"12":{"name":"(anonymous_16)","decl":{"start":{"line":221,"column":2},"end":{"line":221,"column":24}},"loc":{"start":{"line":221,"column":24},"end":{"line":223,"column":3}}},"13":{"name":"(anonymous_17)","decl":{"start":{"line":225,"column":2},"end":{"line":225,"column":23}},"loc":{"start":{"line":225,"column":44},"end":{"line":230,"column":3}}},"14":{"name":"(anonymous_18)","decl":{"start":{"line":232,"column":2},"end":{"line":232,"column":7}},"loc":{"start":{"line":232,"column":26},"end":{"line":239,"column":3}}},"15":{"name":"(anonymous_19)","decl":{"start":{"line":241,"column":2},"end":{"line":241,"column":7}},"loc":{"start":{"line":241,"column":35},"end":{"line":243,"column":3}}},"16":{"name":"(anonymous_20)","decl":{"start":{"line":245,"column":2},"end":{"line":245,"column":7}},"loc":{"start":{"line":245,"column":34},"end":{"line":248,"column":3}}},"17":{"name":"(anonymous_21)","decl":{"start":{"line":250,"column":10},"end":{"line":250,"column":15}},"loc":{"start":{"line":253,"column":55},"end":{"line":274,"column":3}}},"18":{"name":"(anonymous_22)","decl":{"start":{"line":276,"column":10},"end":{"line":276,"column":15}},"loc":{"start":{"line":278,"column":37},"end":{"line":296,"column":3}}},"19":{"name":"(anonymous_23)","decl":{"start":{"line":287,"column":26},"end":{"line":287,"column":27}},"loc":{"start":{"line":287,"column":39},"end":{"line":287,"column":75}}},"20":{"name":"(anonymous_24)","decl":{"start":{"line":298,"column":10},"end":{"line":298,"column":26}},"loc":{"start":{"line":298,"column":41},"end":{"line":313,"column":3}}},"21":{"name":"(anonymous_25)","decl":{"start":{"line":315,"column":10},"end":{"line":315,"column":15}},"loc":{"start":{"line":315,"column":54},"end":{"line":351,"column":3}}},"22":{"name":"(anonymous_26)","decl":{"start":{"line":353,"column":10},"end":{"line":353,"column":15}},"loc":{"start":{"line":353,"column":46},"end":{"line":372,"column":3}}},"23":{"name":"(anonymous_27)","decl":{"start":{"line":374,"column":2},"end":{"line":374,"column":7}},"loc":{"start":{"line":378,"column":37},"end":{"line":509,"column":3}}},"24":{"name":"(anonymous_28)","decl":{"start":{"line":396,"column":30},"end":{"line":396,"column":35}},"loc":{"start":{"line":396,"column":41},"end":{"line":490,"column":7}}},"25":{"name":"(anonymous_29)","decl":{"start":{"line":414,"column":34},"end":{"line":414,"column":35}},"loc":{"start":{"line":414,"column":54},"end":{"line":474,"column":11}}},"26":{"name":"(anonymous_30)","decl":{"start":{"line":415,"column":32},"end":{"line":415,"column":33}},"loc":{"start":{"line":415,"column":47},"end":{"line":418,"column":13}}},"27":{"name":"(anonymous_31)","decl":{"start":{"line":420,"column":35},"end":{"line":420,"column":40}},"loc":{"start":{"line":420,"column":59},"end":{"line":445,"column":13}}},"28":{"name":"(anonymous_32)","decl":{"start":{"line":447,"column":34},"end":{"line":447,"column":39}},"loc":{"start":{"line":447,"column":45},"end":{"line":471,"column":13}}},"29":{"name":"(anonymous_33)","decl":{"start":{"line":511,"column":10},"end":{"line":511,"column":23}},"loc":{"start":{"line":511,"column":23},"end":{"line":519,"column":3}}},"30":{"name":"(anonymous_34)","decl":{"start":{"line":521,"column":2},"end":{"line":521,"column":14}},"loc":{"start":{"line":521,"column":14},"end":{"line":528,"column":3}}}},"branchMap":{"0":{"loc":{"start":{"line":28,"column":20},"end":{"line":28,"column":57}},"type":"default-arg","locations":[{"start":{"line":28,"column":55},"end":{"line":28,"column":57}}]},"1":{"loc":{"start":{"line":81,"column":4},"end":{"line":83,"column":5}},"type":"if","locations":[{"start":{"line":81,"column":4},"end":{"line":83,"column":5}}]},"2":{"loc":{"start":{"line":94,"column":4},"end":{"line":94,"column":21}},"type":"default-arg","locations":[{"start":{"line":94,"column":19},"end":{"line":94,"column":21}}]},"3":{"loc":{"start":{"line":111,"column":4},"end":{"line":133,"column":5}},"type":"if","locations":[{"start":{"line":111,"column":4},"end":{"line":133,"column":5}}]},"4":{"loc":{"start":{"line":114,"column":6},"end":{"line":116,"column":7}},"type":"if","locations":[{"start":{"line":114,"column":6},"end":{"line":116,"column":7}}]},"5":{"loc":{"start":{"line":118,"column":6},"end":{"line":132,"column":7}},"type":"if","locations":[{"start":{"line":118,"column":6},"end":{"line":132,"column":7}}]},"6":{"loc":{"start":{"line":119,"column":8},"end":{"line":120,"column":45}},"type":"binary-expr","locations":[{"start":{"line":119,"column":8},"end":{"line":119,"column":38}},{"start":{"line":120,"column":8},"end":{"line":120,"column":45}}]},"7":{"loc":{"start":{"line":135,"column":4},"end":{"line":137,"column":5}},"type":"if","locations":[{"start":{"line":135,"column":4},"end":{"line":137,"column":5}}]},"8":{"loc":{"start":{"line":140,"column":7},"end":{"line":140,"column":62}},"type":"binary-expr","locations":[{"start":{"line":140,"column":7},"end":{"line":140,"column":31}},{"start":{"line":140,"column":35},"end":{"line":140,"column":62}}]},"9":{"loc":{"start":{"line":172,"column":25},"end":{"line":172,"column":69}},"type":"binary-expr","locations":[{"start":{"line":172,"column":25},"end":{"line":172,"column":60}},{"start":{"line":172,"column":64},"end":{"line":172,"column":69}}]},"10":{"loc":{"start":{"line":211,"column":4},"end":{"line":213,"column":5}},"type":"if","locations":[{"start":{"line":211,"column":4},"end":{"line":213,"column":5}}]},"11":{"loc":{"start":{"line":247,"column":11},"end":{"line":247,"column":63}},"type":"cond-expr","locations":[{"start":{"line":247,"column":19},"end":{"line":247,"column":58}},{"start":{"line":247,"column":61},"end":{"line":247,"column":63}}]},"12":{"loc":{"start":{"line":260,"column":4},"end":{"line":271,"column":5}},"type":"if","locations":[{"start":{"line":260,"column":4},"end":{"line":271,"column":5}}]},"13":{"loc":{"start":{"line":263,"column":6},"end":{"line":270,"column":7}},"type":"if","locations":[{"start":{"line":263,"column":6},"end":{"line":270,"column":7}}]},"14":{"loc":{"start":{"line":278,"column":4},"end":{"line":278,"column":37}},"type":"default-arg","locations":[{"start":{"line":278,"column":22},"end":{"line":278,"column":37}}]},"15":{"loc":{"start":{"line":281,"column":6},"end":{"line":283,"column":7}},"type":"if","locations":[{"start":{"line":281,"column":6},"end":{"line":283,"column":7}}]},"16":{"loc":{"start":{"line":286,"column":6},"end":{"line":289,"column":7}},"type":"if","locations":[{"start":{"line":286,"column":6},"end":{"line":289,"column":7}}]},"17":{"loc":{"start":{"line":286,"column":10},"end":{"line":286,"column":53}},"type":"binary-expr","locations":[{"start":{"line":286,"column":10},"end":{"line":286,"column":21}},{"start":{"line":286,"column":25},"end":{"line":286,"column":53}}]},"18":{"loc":{"start":{"line":291,"column":6},"end":{"line":293,"column":7}},"type":"if","locations":[{"start":{"line":291,"column":6},"end":{"line":293,"column":7}}]},"19":{"loc":{"start":{"line":299,"column":4},"end":{"line":305,"column":5}},"type":"if","locations":[{"start":{"line":299,"column":4},"end":{"line":305,"column":5}}]},"20":{"loc":{"start":{"line":301,"column":8},"end":{"line":303,"column":44}},"type":"binary-expr","locations":[{"start":{"line":301,"column":8},"end":{"line":301,"column":38}},{"start":{"line":302,"column":8},"end":{"line":302,"column":48}},{"start":{"line":303,"column":8},"end":{"line":303,"column":44}}]},"21":{"loc":{"start":{"line":308,"column":6},"end":{"line":311,"column":38}},"type":"binary-expr","locations":[{"start":{"line":308,"column":6},"end":{"line":308,"column":31}},{"start":{"line":309,"column":6},"end":{"line":309,"column":30}},{"start":{"line":310,"column":6},"end":{"line":310,"column":38}},{"start":{"line":311,"column":6},"end":{"line":311,"column":38}}]},"22":{"loc":{"start":{"line":321,"column":6},"end":{"line":327,"column":7}},"type":"if","locations":[{"start":{"line":321,"column":6},"end":{"line":327,"column":7}}]},"23":{"loc":{"start":{"line":322,"column":8},"end":{"line":324,"column":68}},"type":"binary-expr","locations":[{"start":{"line":322,"column":8},"end":{"line":322,"column":16}},{"start":{"line":323,"column":8},"end":{"line":323,"column":28}},{"start":{"line":324,"column":9},"end":{"line":324,"column":33}},{"start":{"line":324,"column":37},"end":{"line":324,"column":67}}]},"24":{"loc":{"start":{"line":331,"column":6},"end":{"line":333,"column":7}},"type":"if","locations":[{"start":{"line":331,"column":6},"end":{"line":333,"column":7}}]},"25":{"loc":{"start":{"line":335,"column":6},"end":{"line":337,"column":7}},"type":"if","locations":[{"start":{"line":335,"column":6},"end":{"line":337,"column":7}}]},"26":{"loc":{"start":{"line":340,"column":6},"end":{"line":342,"column":7}},"type":"if","locations":[{"start":{"line":340,"column":6},"end":{"line":342,"column":7}}]},"27":{"loc":{"start":{"line":363,"column":24},"end":{"line":363,"column":44}},"type":"binary-expr","locations":[{"start":{"line":363,"column":24},"end":{"line":363,"column":38}},{"start":{"line":363,"column":42},"end":{"line":363,"column":44}}]},"28":{"loc":{"start":{"line":367,"column":6},"end":{"line":367,"column":45}},"type":"if","locations":[{"start":{"line":367,"column":6},"end":{"line":367,"column":45}}]},"29":{"loc":{"start":{"line":381,"column":25},"end":{"line":381,"column":69}},"type":"binary-expr","locations":[{"start":{"line":381,"column":25},"end":{"line":381,"column":60}},{"start":{"line":381,"column":64},"end":{"line":381,"column":69}}]},"30":{"loc":{"start":{"line":421,"column":14},"end":{"line":424,"column":15}},"type":"if","locations":[{"start":{"line":421,"column":14},"end":{"line":424,"column":15}}]},"31":{"loc":{"start":{"line":430,"column":14},"end":{"line":439,"column":15}},"type":"if","locations":[{"start":{"line":430,"column":14},"end":{"line":439,"column":15}}]},"32":{"loc":{"start":{"line":432,"column":18},"end":{"line":432,"column":49}},"type":"binary-expr","locations":[{"start":{"line":432,"column":18},"end":{"line":432,"column":31}},{"start":{"line":432,"column":35},"end":{"line":432,"column":49}}]},"33":{"loc":{"start":{"line":434,"column":18},"end":{"line":434,"column":37}},"type":"binary-expr","locations":[{"start":{"line":434,"column":18},"end":{"line":434,"column":31}},{"start":{"line":434,"column":35},"end":{"line":434,"column":37}}]},"34":{"loc":{"start":{"line":441,"column":14},"end":{"line":444,"column":15}},"type":"if","locations":[{"start":{"line":441,"column":14},"end":{"line":444,"column":15}}]},"35":{"loc":{"start":{"line":448,"column":14},"end":{"line":448,"column":39}},"type":"if","locations":[{"start":{"line":448,"column":14},"end":{"line":448,"column":39}}]},"36":{"loc":{"start":{"line":450,"column":14},"end":{"line":468,"column":15}},"type":"if","locations":[{"start":{"line":450,"column":14},"end":{"line":468,"column":15}}]},"37":{"loc":{"start":{"line":454,"column":16},"end":{"line":463,"column":17}},"type":"if","locations":[{"start":{"line":454,"column":16},"end":{"line":463,"column":17}}]},"38":{"loc":{"start":{"line":457,"column":22},"end":{"line":457,"column":53}},"type":"binary-expr","locations":[{"start":{"line":457,"column":22},"end":{"line":457,"column":35}},{"start":{"line":457,"column":39},"end":{"line":457,"column":53}}]},"39":{"loc":{"start":{"line":459,"column":22},"end":{"line":459,"column":41}},"type":"binary-expr","locations":[{"start":{"line":459,"column":22},"end":{"line":459,"column":35}},{"start":{"line":459,"column":39},"end":{"line":459,"column":41}}]},"40":{"loc":{"start":{"line":464,"column":16},"end":{"line":467,"column":17}},"type":"if","locations":[{"start":{"line":464,"column":16},"end":{"line":467,"column":17}}]},"41":{"loc":{"start":{"line":476,"column":10},"end":{"line":486,"column":11}},"type":"if","locations":[{"start":{"line":476,"column":10},"end":{"line":486,"column":11}}]},"42":{"loc":{"start":{"line":476,"column":14},"end":{"line":476,"column":47}},"type":"binary-expr","locations":[{"start":{"line":476,"column":14},"end":{"line":476,"column":30}},{"start":{"line":476,"column":34},"end":{"line":476,"column":47}}]},"43":{"loc":{"start":{"line":495,"column":8},"end":{"line":495,"column":76}},"type":"cond-expr","locations":[{"start":{"line":495,"column":36},"end":{"line":495,"column":41}},{"start":{"line":495,"column":44},"end":{"line":495,"column":76}}]},"44":{"loc":{"start":{"line":498,"column":6},"end":{"line":505,"column":7}},"type":"if","locations":[{"start":{"line":498,"column":6},"end":{"line":505,"column":7}}]},"45":{"loc":{"start":{"line":498,"column":10},"end":{"line":498,"column":43}},"type":"binary-expr","locations":[{"start":{"line":498,"column":10},"end":{"line":498,"column":26}},{"start":{"line":498,"column":30},"end":{"line":498,"column":43}}]},"46":{"loc":{"start":{"line":512,"column":4},"end":{"line":516,"column":5}},"type":"if","locations":[{"start":{"line":512,"column":4},"end":{"line":516,"column":5}}]},"47":{"loc":{"start":{"line":523,"column":4},"end":{"line":527,"column":5}},"type":"if","locations":[{"start":{"line":523,"column":4},"end":{"line":527,"column":5}}]}},"s":{"0":6,"1":6,"2":6,"3":6,"4":6,"5":6,"6":6,"7":6,"8":6,"9":6,"10":6,"11":6,"12":7,"13":7,"14":7,"15":7,"16":6,"17":6,"18":54,"19":54,"20":54,"21":54,"22":54,"23":54,"24":54,"25":54,"26":54,"27":54,"28":54,"29":54,"30":54,"31":54,"32":54,"33":54,"34":54,"35":0,"36":15,"37":4,"38":11,"39":15,"40":15,"41":15,"42":1,"43":1,"44":1,"45":1,"46":0,"47":0,"48":0,"49":0,"50":0,"51":0,"52":0,"53":15,"54":20,"55":15,"56":20,"57":9,"58":9,"59":9,"60":9,"61":9,"62":9,"63":9,"64":8,"65":8,"66":8,"67":8,"68":8,"69":8,"70":8,"71":1,"72":2,"73":2,"74":2,"75":1,"76":16,"77":3,"78":3,"79":1,"80":1,"81":1,"82":0,"83":1,"84":0,"85":0,"86":3,"87":3,"88":0,"89":0,"90":0,"91":0,"92":3,"93":7,"94":7,"95":1,"96":6,"97":3,"98":1,"99":1,"100":1,"101":2,"102":2,"103":0,"104":3,"105":3,"106":0,"107":0,"108":11,"109":11,"110":11,"111":4,"112":7,"113":7,"114":1,"115":6,"116":0,"117":6,"118":6,"119":0,"120":6,"121":6,"122":0,"123":0,"124":11,"125":11,"126":11,"127":11,"128":11,"129":11,"130":11,"131":1,"132":11,"133":11,"134":6,"135":6,"136":6,"137":6,"138":6,"139":6,"140":6,"141":6,"142":6,"143":6,"144":4,"145":4,"146":4,"147":4,"148":0,"149":0,"150":4,"151":11,"152":0,"153":0,"154":11,"155":11,"156":1,"157":1,"158":1,"159":1,"160":10,"161":6,"162":6,"163":4,"164":4,"165":0,"166":4,"167":0,"168":0,"169":0,"170":0,"171":0,"172":0,"173":0,"174":4,"175":4,"176":4,"177":4,"178":0,"179":0,"180":0,"181":0,"182":0,"183":0,"184":6,"185":2,"186":2,"187":2,"188":0,"189":0,"190":0,"191":0,"192":0,"193":6,"194":10,"195":4,"196":4,"197":4,"198":10,"199":10,"200":1,"201":1,"202":0,"203":0,"204":0,"205":6,"206":6},"f":{"0":7,"1":54,"2":54,"3":15,"4":15,"5":1,"6":15,"7":20,"8":20,"9":9,"10":2,"11":1,"12":16,"13":3,"14":1,"15":1,"16":0,"17":3,"18":7,"19":1,"20":3,"21":11,"22":11,"23":6,"24":6,"25":4,"26":0,"27":11,"28":4,"29":10,"30":1},"b":{"0":[4],"1":[4],"2":[9],"3":[1],"4":[1],"5":[0],"6":[0,0],"7":[0],"8":[0,0],"9":[9,0],"10":[2],"11":[0,0],"12":[0],"13":[0],"14":[6],"15":[1],"16":[1],"17":[3,3],"18":[2],"19":[3],"20":[3,2,2],"21":[0,0,0,0],"22":[4],"23":[11,11,7,0],"24":[1],"25":[0],"26":[0],"27":[11,11],"28":[1],"29":[6,0],"30":[0],"31":[1],"32":[1,0],"33":[1,0],"34":[6],"35":[0],"36":[0],"37":[0],"38":[0,0],"39":[0,0],"40":[0],"41":[0],"42":[4,0],"43":[2,0],"44":[0],"45":[2,0],"46":[4],"47":[0]}} -,"/home/joao/projects/cracked-dev-cli/src/services/LLMProviders/OpenRouter/OpenRouterAPICostTracking.ts": {"path":"/home/joao/projects/cracked-dev-cli/src/services/LLMProviders/OpenRouter/OpenRouterAPICostTracking.ts","statementMap":{"0":{"start":{"line":2,"column":0},"end":{"line":2,"column":42}},"1":{"start":{"line":22,"column":7},"end":{"line":74,"column":null}},"2":{"start":{"line":26,"column":23},"end":{"line":26,"column":50}},"3":{"start":{"line":27,"column":27},"end":{"line":27,"column":58}},"4":{"start":{"line":29,"column":22},"end":{"line":29,"column":23}},"5":{"start":{"line":30,"column":20},"end":{"line":30,"column":21}},"6":{"start":{"line":32,"column":4},"end":{"line":51,"column":5}},"7":{"start":{"line":33,"column":25},"end":{"line":33,"column":40}},"8":{"start":{"line":34,"column":6},"end":{"line":50,"column":7}},"9":{"start":{"line":36,"column":31},"end":{"line":41,"column":13}},"10":{"start":{"line":38,"column":12},"end":{"line":39,"column":52}},"11":{"start":{"line":40,"column":10},"end":{"line":40,"column":28}},"12":{"start":{"line":43,"column":8},"end":{"line":43,"column":36}},"13":{"start":{"line":46,"column":26},"end":{"line":46,"column":59}},"14":{"start":{"line":47,"column":8},"end":{"line":49,"column":55}},"15":{"start":{"line":53,"column":4},"end":{"line":56,"column":6}},"16":{"start":{"line":63,"column":4},"end":{"line":72,"column":5}},"17":{"start":{"line":64,"column":41},"end":{"line":64,"column":77}},"18":{"start":{"line":66,"column":6},"end":{"line":66,"column":67}},"19":{"start":{"line":67,"column":6},"end":{"line":67,"column":65}},"20":{"start":{"line":69,"column":6},"end":{"line":71,"column":8}},"21":{"start":{"line":22,"column":13},"end":{"line":22,"column":38}},"22":{"start":{"line":22,"column":13},"end":{"line":74,"column":null}}},"fnMap":{"0":{"name":"(anonymous_2)","decl":{"start":{"line":23,"column":2},"end":{"line":23,"column":17}},"loc":{"start":{"line":23,"column":2},"end":{"line":23,"column":18}}},"1":{"name":"(anonymous_3)","decl":{"start":{"line":25,"column":10},"end":{"line":25,"column":24}},"loc":{"start":{"line":25,"column":65},"end":{"line":57,"column":3}}},"2":{"name":"(anonymous_4)","decl":{"start":{"line":36,"column":49},"end":{"line":36,"column":50}},"loc":{"start":{"line":36,"column":64},"end":{"line":41,"column":9}}},"3":{"name":"(anonymous_5)","decl":{"start":{"line":59,"column":9},"end":{"line":59,"column":21}},"loc":{"start":{"line":61,"column":23},"end":{"line":73,"column":3}}}},"branchMap":{"0":{"loc":{"start":{"line":34,"column":6},"end":{"line":50,"column":7}},"type":"if","locations":[{"start":{"line":34,"column":6},"end":{"line":50,"column":7}}]},"1":{"loc":{"start":{"line":63,"column":4},"end":{"line":72,"column":5}},"type":"if","locations":[{"start":{"line":63,"column":4},"end":{"line":72,"column":5}},{"start":{"line":68,"column":11},"end":{"line":72,"column":5}}]},"2":{"loc":{"start":{"line":63,"column":8},"end":{"line":63,"column":25}},"type":"binary-expr","locations":[{"start":{"line":63,"column":8},"end":{"line":63,"column":16}},{"start":{"line":63,"column":20},"end":{"line":63,"column":25}}]}},"s":{"0":6,"1":6,"2":8,"3":8,"4":8,"5":8,"6":8,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":8,"16":8,"17":8,"18":8,"19":8,"20":0,"21":6,"22":6},"f":{"0":54,"1":8,"2":0,"3":8},"b":{"0":[0],"1":[8,0],"2":[8,8]}} -,"/home/joao/projects/cracked-dev-cli/src/services/logging/DebugLogger.ts": {"path":"/home/joao/projects/cracked-dev-cli/src/services/logging/DebugLogger.ts","statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":43}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":53}},"2":{"start":{"line":6,"column":7},"end":{"line":55,"column":null}},"3":{"start":{"line":7,"column":10},"end":{"line":7,"column":33}},"4":{"start":{"line":12,"column":4},"end":{"line":12,"column":23}},"5":{"start":{"line":16,"column":4},"end":{"line":18,"column":5}},"6":{"start":{"line":17,"column":6},"end":{"line":17,"column":18}},"7":{"start":{"line":20,"column":4},"end":{"line":29,"column":5}},"8":{"start":{"line":21,"column":6},"end":{"line":28,"column":7}},"9":{"start":{"line":22,"column":8},"end":{"line":25,"column":33}},"10":{"start":{"line":27,"column":8},"end":{"line":27,"column":28}},"11":{"start":{"line":31,"column":4},"end":{"line":31,"column":24}},"12":{"start":{"line":35,"column":4},"end":{"line":35,"column":28}},"13":{"start":{"line":35,"column":21},"end":{"line":35,"column":28}},"14":{"start":{"line":37,"column":22},"end":{"line":37,"column":46}},"15":{"start":{"line":38,"column":20},"end":{"line":38,"column":42}},"16":{"start":{"line":39,"column":23},"end":{"line":39,"column":37}},"17":{"start":{"line":41,"column":4},"end":{"line":41,"column":25}},"18":{"start":{"line":42,"column":4},"end":{"line":42,"column":69}},"19":{"start":{"line":43,"column":4},"end":{"line":43,"column":70}},"20":{"start":{"line":45,"column":4},"end":{"line":53,"column":5}},"21":{"start":{"line":46,"column":6},"end":{"line":46,"column":61}},"22":{"start":{"line":47,"column":28},"end":{"line":50,"column":19}},"23":{"start":{"line":49,"column":23},"end":{"line":49,"column":34}},"24":{"start":{"line":51,"column":6},"end":{"line":51,"column":67}},"25":{"start":{"line":52,"column":6},"end":{"line":52,"column":30}},"26":{"start":{"line":6,"column":13},"end":{"line":6,"column":24}},"27":{"start":{"line":6,"column":13},"end":{"line":55,"column":null}}},"fnMap":{"0":{"name":"(anonymous_2)","decl":{"start":{"line":9,"column":2},"end":{"line":9,"column":17}},"loc":{"start":{"line":9,"column":2},"end":{"line":9,"column":18}}},"1":{"name":"(anonymous_3)","decl":{"start":{"line":11,"column":2},"end":{"line":11,"column":10}},"loc":{"start":{"line":11,"column":25},"end":{"line":13,"column":3}}},"2":{"name":"(anonymous_4)","decl":{"start":{"line":15,"column":10},"end":{"line":15,"column":20}},"loc":{"start":{"line":15,"column":30},"end":{"line":32,"column":3}}},"3":{"name":"(anonymous_5)","decl":{"start":{"line":34,"column":2},"end":{"line":34,"column":5}},"loc":{"start":{"line":34,"column":47},"end":{"line":54,"column":3}}},"4":{"name":"(anonymous_6)","decl":{"start":{"line":49,"column":13},"end":{"line":49,"column":14}},"loc":{"start":{"line":49,"column":23},"end":{"line":49,"column":34}}}},"branchMap":{"0":{"loc":{"start":{"line":16,"column":4},"end":{"line":18,"column":5}},"type":"if","locations":[{"start":{"line":16,"column":4},"end":{"line":18,"column":5}}]},"1":{"loc":{"start":{"line":20,"column":4},"end":{"line":29,"column":5}},"type":"if","locations":[{"start":{"line":20,"column":4},"end":{"line":29,"column":5}}]},"2":{"loc":{"start":{"line":35,"column":4},"end":{"line":35,"column":28}},"type":"if","locations":[{"start":{"line":35,"column":4},"end":{"line":35,"column":28}}]},"3":{"loc":{"start":{"line":45,"column":4},"end":{"line":53,"column":5}},"type":"if","locations":[{"start":{"line":45,"column":4},"end":{"line":53,"column":5}}]}},"s":{"0":32,"1":32,"2":32,"3":103,"4":4,"5":1,"6":0,"7":1,"8":1,"9":1,"10":0,"11":0,"12":76,"13":72,"14":4,"15":4,"16":4,"17":4,"18":4,"19":4,"20":4,"21":1,"22":1,"23":4,"24":1,"25":1,"26":32,"27":32},"f":{"0":103,"1":4,"2":1,"3":76,"4":4},"b":{"0":[0],"1":[1],"2":[72],"3":[1]}} -,"/home/joao/projects/cracked-dev-cli/src/services/streaming/InteractiveSessionManager.ts": {"path":"/home/joao/projects/cracked-dev-cli/src/services/streaming/InteractiveSessionManager.ts","statementMap":{"0":{"start":{"line":2,"column":0},"end":{"line":2,"column":80}},"1":{"start":{"line":4,"column":0},"end":{"line":4,"column":37}},"2":{"start":{"line":5,"column":0},"end":{"line":5,"column":27}},"3":{"start":{"line":8,"column":7},"end":{"line":135,"column":null}},"4":{"start":{"line":17,"column":22},"end":{"line":17,"column":37}},"5":{"start":{"line":9,"column":10},"end":{"line":9,"column":38}},"6":{"start":{"line":10,"column":10},"end":{"line":10,"column":68}},"7":{"start":{"line":11,"column":10},"end":{"line":11,"column":63}},"8":{"start":{"line":12,"column":10},"end":{"line":12,"column":51}},"9":{"start":{"line":13,"column":10},"end":{"line":13,"column":47}},"10":{"start":{"line":14,"column":10},"end":{"line":14,"column":44}},"11":{"start":{"line":15,"column":10},"end":{"line":15,"column":30}},"12":{"start":{"line":20,"column":4},"end":{"line":20,"column":17}},"13":{"start":{"line":21,"column":4},"end":{"line":21,"column":23}},"14":{"start":{"line":22,"column":4},"end":{"line":22,"column":27}},"15":{"start":{"line":26,"column":4},"end":{"line":26,"column":25}},"16":{"start":{"line":26,"column":18},"end":{"line":26,"column":25}},"17":{"start":{"line":28,"column":4},"end":{"line":43,"column":5}},"18":{"start":{"line":29,"column":6},"end":{"line":29,"column":37}},"19":{"start":{"line":30,"column":6},"end":{"line":30,"column":29}},"20":{"start":{"line":32,"column":6},"end":{"line":40,"column":8}},"21":{"start":{"line":33,"column":20},"end":{"line":33,"column":37}},"22":{"start":{"line":34,"column":8},"end":{"line":39,"column":9}},"23":{"start":{"line":36,"column":10},"end":{"line":36,"column":44}},"24":{"start":{"line":37,"column":10},"end":{"line":37,"column":48}},"25":{"start":{"line":38,"column":10},"end":{"line":38,"column":38}},"26":{"start":{"line":42,"column":6},"end":{"line":42,"column":53}},"27":{"start":{"line":47,"column":4},"end":{"line":47,"column":25}},"28":{"start":{"line":47,"column":18},"end":{"line":47,"column":25}},"29":{"start":{"line":49,"column":4},"end":{"line":49,"column":66}},"30":{"start":{"line":50,"column":4},"end":{"line":50,"column":21}},"31":{"start":{"line":53,"column":4},"end":{"line":58,"column":5}},"32":{"start":{"line":54,"column":6},"end":{"line":54,"column":50}},"33":{"start":{"line":57,"column":6},"end":{"line":57,"column":23}},"34":{"start":{"line":62,"column":4},"end":{"line":62,"column":57}},"35":{"start":{"line":62,"column":50},"end":{"line":62,"column":57}},"36":{"start":{"line":64,"column":4},"end":{"line":68,"column":5}},"37":{"start":{"line":65,"column":6},"end":{"line":65,"column":30}},"38":{"start":{"line":66,"column":6},"end":{"line":66,"column":21}},"39":{"start":{"line":67,"column":6},"end":{"line":67,"column":22}},"40":{"start":{"line":70,"column":4},"end":{"line":70,"column":32}},"41":{"start":{"line":72,"column":4},"end":{"line":86,"column":5}},"42":{"start":{"line":73,"column":21},"end":{"line":73,"column":66}},"43":{"start":{"line":74,"column":6},"end":{"line":83,"column":7}},"44":{"start":{"line":75,"column":8},"end":{"line":75,"column":52}},"45":{"start":{"line":76,"column":8},"end":{"line":82,"column":9}},"46":{"start":{"line":77,"column":10},"end":{"line":77,"column":45}},"47":{"start":{"line":78,"column":10},"end":{"line":81,"column":13}},"48":{"start":{"line":79,"column":12},"end":{"line":79,"column":47}},"49":{"start":{"line":80,"column":12},"end":{"line":80,"column":70}},"50":{"start":{"line":85,"column":6},"end":{"line":85,"column":56}},"51":{"start":{"line":88,"column":4},"end":{"line":88,"column":21}},"52":{"start":{"line":92,"column":4},"end":{"line":92,"column":25}},"53":{"start":{"line":92,"column":18},"end":{"line":92,"column":25}},"54":{"start":{"line":94,"column":4},"end":{"line":96,"column":6}},"55":{"start":{"line":97,"column":4},"end":{"line":97,"column":33}},"56":{"start":{"line":98,"column":4},"end":{"line":98,"column":21}},"57":{"start":{"line":100,"column":4},"end":{"line":102,"column":6}},"58":{"start":{"line":101,"column":6},"end":{"line":101,"column":36}},"59":{"start":{"line":104,"column":4},"end":{"line":107,"column":6}},"60":{"start":{"line":105,"column":6},"end":{"line":105,"column":21}},"61":{"start":{"line":106,"column":6},"end":{"line":106,"column":22}},"62":{"start":{"line":109,"column":4},"end":{"line":109,"column":41}},"63":{"start":{"line":110,"column":4},"end":{"line":110,"column":43}},"64":{"start":{"line":114,"column":4},"end":{"line":117,"column":5}},"65":{"start":{"line":115,"column":6},"end":{"line":115,"column":65}},"66":{"start":{"line":116,"column":6},"end":{"line":116,"column":38}},"67":{"start":{"line":119,"column":4},"end":{"line":121,"column":5}},"68":{"start":{"line":120,"column":6},"end":{"line":120,"column":55}},"69":{"start":{"line":123,"column":4},"end":{"line":125,"column":5}},"70":{"start":{"line":124,"column":6},"end":{"line":124,"column":57}},"71":{"start":{"line":127,"column":4},"end":{"line":130,"column":5}},"72":{"start":{"line":128,"column":6},"end":{"line":128,"column":22}},"73":{"start":{"line":129,"column":6},"end":{"line":129,"column":21}},"74":{"start":{"line":132,"column":4},"end":{"line":132,"column":22}},"75":{"start":{"line":133,"column":4},"end":{"line":133,"column":24}},"76":{"start":{"line":8,"column":13},"end":{"line":8,"column":38}},"77":{"start":{"line":8,"column":13},"end":{"line":135,"column":null}}},"fnMap":{"0":{"name":"(anonymous_8)","decl":{"start":{"line":17,"column":2},"end":{"line":17,"column":22}},"loc":{"start":{"line":17,"column":50},"end":{"line":17,"column":54}}},"1":{"name":"(anonymous_9)","decl":{"start":{"line":19,"column":9},"end":{"line":19,"column":19}},"loc":{"start":{"line":19,"column":77},"end":{"line":23,"column":3}}},"2":{"name":"(anonymous_10)","decl":{"start":{"line":25,"column":10},"end":{"line":25,"column":31}},"loc":{"start":{"line":25,"column":31},"end":{"line":44,"column":3}}},"3":{"name":"(anonymous_11)","decl":{"start":{"line":32,"column":29},"end":{"line":32,"column":34}},"loc":{"start":{"line":32,"column":54},"end":{"line":40,"column":7}}},"4":{"name":"(anonymous_12)","decl":{"start":{"line":46,"column":10},"end":{"line":46,"column":15}},"loc":{"start":{"line":46,"column":30},"end":{"line":59,"column":3}}},"5":{"name":"(anonymous_13)","decl":{"start":{"line":61,"column":10},"end":{"line":61,"column":15}},"loc":{"start":{"line":61,"column":41},"end":{"line":89,"column":3}}},"6":{"name":"(anonymous_14)","decl":{"start":{"line":78,"column":33},"end":{"line":78,"column":34}},"loc":{"start":{"line":78,"column":56},"end":{"line":81,"column":11}}},"7":{"name":"(anonymous_15)","decl":{"start":{"line":91,"column":9},"end":{"line":91,"column":14}},"loc":{"start":{"line":91,"column":20},"end":{"line":111,"column":3}}},"8":{"name":"(anonymous_16)","decl":{"start":{"line":100,"column":23},"end":{"line":100,"column":28}},"loc":{"start":{"line":100,"column":47},"end":{"line":102,"column":5}}},"9":{"name":"(anonymous_17)","decl":{"start":{"line":104,"column":24},"end":{"line":104,"column":27}},"loc":{"start":{"line":104,"column":29},"end":{"line":107,"column":5}}},"10":{"name":"(anonymous_18)","decl":{"start":{"line":113,"column":9},"end":{"line":113,"column":16}},"loc":{"start":{"line":113,"column":16},"end":{"line":134,"column":3}}}},"branchMap":{"0":{"loc":{"start":{"line":26,"column":4},"end":{"line":26,"column":25}},"type":"if","locations":[{"start":{"line":26,"column":4},"end":{"line":26,"column":25}}]},"1":{"loc":{"start":{"line":28,"column":4},"end":{"line":43,"column":5}},"type":"if","locations":[{"start":{"line":28,"column":4},"end":{"line":43,"column":5}}]},"2":{"loc":{"start":{"line":34,"column":8},"end":{"line":39,"column":9}},"type":"if","locations":[{"start":{"line":34,"column":8},"end":{"line":39,"column":9}}]},"3":{"loc":{"start":{"line":47,"column":4},"end":{"line":47,"column":25}},"type":"if","locations":[{"start":{"line":47,"column":4},"end":{"line":47,"column":25}}]},"4":{"loc":{"start":{"line":53,"column":4},"end":{"line":58,"column":5}},"type":"if","locations":[{"start":{"line":53,"column":4},"end":{"line":58,"column":5}},{"start":{"line":55,"column":11},"end":{"line":58,"column":5}}]},"5":{"loc":{"start":{"line":62,"column":4},"end":{"line":62,"column":57}},"type":"if","locations":[{"start":{"line":62,"column":4},"end":{"line":62,"column":57}}]},"6":{"loc":{"start":{"line":62,"column":8},"end":{"line":62,"column":48}},"type":"binary-expr","locations":[{"start":{"line":62,"column":8},"end":{"line":62,"column":16}},{"start":{"line":62,"column":20},"end":{"line":62,"column":31}},{"start":{"line":62,"column":35},"end":{"line":62,"column":48}}]},"7":{"loc":{"start":{"line":64,"column":4},"end":{"line":68,"column":5}},"type":"if","locations":[{"start":{"line":64,"column":4},"end":{"line":68,"column":5}}]},"8":{"loc":{"start":{"line":74,"column":6},"end":{"line":83,"column":7}},"type":"if","locations":[{"start":{"line":74,"column":6},"end":{"line":83,"column":7}}]},"9":{"loc":{"start":{"line":74,"column":10},"end":{"line":74,"column":40}},"type":"binary-expr","locations":[{"start":{"line":74,"column":10},"end":{"line":74,"column":30}},{"start":{"line":74,"column":34},"end":{"line":74,"column":40}}]},"10":{"loc":{"start":{"line":76,"column":8},"end":{"line":82,"column":9}},"type":"if","locations":[{"start":{"line":76,"column":8},"end":{"line":82,"column":9}}]},"11":{"loc":{"start":{"line":92,"column":4},"end":{"line":92,"column":25}},"type":"if","locations":[{"start":{"line":92,"column":4},"end":{"line":92,"column":25}}]},"12":{"loc":{"start":{"line":114,"column":4},"end":{"line":117,"column":5}},"type":"if","locations":[{"start":{"line":114,"column":4},"end":{"line":117,"column":5}}]},"13":{"loc":{"start":{"line":114,"column":8},"end":{"line":114,"column":71}},"type":"binary-expr","locations":[{"start":{"line":114,"column":8},"end":{"line":114,"column":28}},{"start":{"line":114,"column":32},"end":{"line":114,"column":71}}]},"14":{"loc":{"start":{"line":119,"column":4},"end":{"line":121,"column":5}},"type":"if","locations":[{"start":{"line":119,"column":4},"end":{"line":121,"column":5}}]},"15":{"loc":{"start":{"line":119,"column":8},"end":{"line":119,"column":35}},"type":"binary-expr","locations":[{"start":{"line":119,"column":8},"end":{"line":119,"column":24}},{"start":{"line":119,"column":28},"end":{"line":119,"column":35}}]},"16":{"loc":{"start":{"line":123,"column":4},"end":{"line":125,"column":5}},"type":"if","locations":[{"start":{"line":123,"column":4},"end":{"line":125,"column":5}}]},"17":{"loc":{"start":{"line":123,"column":8},"end":{"line":123,"column":36}},"type":"binary-expr","locations":[{"start":{"line":123,"column":8},"end":{"line":123,"column":25}},{"start":{"line":123,"column":29},"end":{"line":123,"column":36}}]},"18":{"loc":{"start":{"line":127,"column":4},"end":{"line":130,"column":5}},"type":"if","locations":[{"start":{"line":127,"column":4},"end":{"line":130,"column":5}}]}},"s":{"0":1,"1":1,"2":1,"3":1,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0,"47":0,"48":0,"49":0,"50":0,"51":0,"52":0,"53":0,"54":0,"55":0,"56":0,"57":0,"58":0,"59":0,"60":0,"61":0,"62":0,"63":0,"64":0,"65":0,"66":0,"67":0,"68":0,"69":0,"70":0,"71":0,"72":0,"73":0,"74":0,"75":0,"76":1,"77":1},"f":{"0":0,"1":0,"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0},"b":{"0":[0],"1":[0],"2":[0],"3":[0],"4":[0,0],"5":[0],"6":[0,0,0],"7":[0],"8":[0],"9":[0,0],"10":[0],"11":[0],"12":[0],"13":[0,0],"14":[0],"15":[0,0],"16":[0],"17":[0,0],"18":[0]}} -,"/home/joao/projects/cracked-dev-cli/src/services/streaming/StreamHandler.ts": {"path":"/home/joao/projects/cracked-dev-cli/src/services/streaming/StreamHandler.ts","statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":68}},"1":{"start":{"line":3,"column":0},"end":{"line":3,"column":60}},"2":{"start":{"line":4,"column":0},"end":{"line":4,"column":42}},"3":{"start":{"line":6,"column":0},"end":{"line":6,"column":68}},"4":{"start":{"line":8,"column":24},"end":{"line":8,"column":40}},"5":{"start":{"line":9,"column":19},"end":{"line":9,"column":30}},"6":{"start":{"line":10,"column":23},"end":{"line":10,"column":28}},"7":{"start":{"line":27,"column":7},"end":{"line":359,"column":null}},"8":{"start":{"line":35,"column":12},"end":{"line":35,"column":25}},"9":{"start":{"line":36,"column":12},"end":{"line":36,"column":27}},"10":{"start":{"line":28,"column":10},"end":{"line":28,"column":38}},"11":{"start":{"line":29,"column":10},"end":{"line":29,"column":44}},"12":{"start":{"line":30,"column":10},"end":{"line":30,"column":53}},"13":{"start":{"line":31,"column":10},"end":{"line":31,"column":33}},"14":{"start":{"line":32,"column":10},"end":{"line":32,"column":56}},"15":{"start":{"line":40,"column":4},"end":{"line":40,"column":29}},"16":{"start":{"line":41,"column":4},"end":{"line":41,"column":34}},"17":{"start":{"line":42,"column":4},"end":{"line":42,"column":44}},"18":{"start":{"line":43,"column":4},"end":{"line":43,"column":24}},"19":{"start":{"line":44,"column":4},"end":{"line":44,"column":31}},"20":{"start":{"line":45,"column":4},"end":{"line":45,"column":32}},"21":{"start":{"line":49,"column":4},"end":{"line":49,"column":31}},"22":{"start":{"line":53,"column":4},"end":{"line":54,"column":78}},"23":{"start":{"line":54,"column":6},"end":{"line":54,"column":78}},"24":{"start":{"line":56,"column":4},"end":{"line":123,"column":5}},"25":{"start":{"line":58,"column":8},"end":{"line":63,"column":10}},"26":{"start":{"line":65,"column":8},"end":{"line":73,"column":10}},"27":{"start":{"line":75,"column":8},"end":{"line":82,"column":10}},"28":{"start":{"line":84,"column":8},"end":{"line":88,"column":10}},"29":{"start":{"line":90,"column":8},"end":{"line":94,"column":10}},"30":{"start":{"line":96,"column":8},"end":{"line":101,"column":10}},"31":{"start":{"line":103,"column":8},"end":{"line":108,"column":10}},"32":{"start":{"line":110,"column":8},"end":{"line":115,"column":10}},"33":{"start":{"line":117,"column":8},"end":{"line":122,"column":10}},"34":{"start":{"line":127,"column":43},"end":{"line":127,"column":73}},"35":{"start":{"line":129,"column":4},"end":{"line":129,"column":35}},"36":{"start":{"line":130,"column":4},"end":{"line":130,"column":39}},"37":{"start":{"line":131,"column":4},"end":{"line":131,"column":43}},"38":{"start":{"line":132,"column":4},"end":{"line":132,"column":38}},"39":{"start":{"line":134,"column":4},"end":{"line":134,"column":39}},"40":{"start":{"line":135,"column":4},"end":{"line":135,"column":43}},"41":{"start":{"line":137,"column":4},"end":{"line":141,"column":5}},"42":{"start":{"line":138,"column":6},"end":{"line":138,"column":35}},"43":{"start":{"line":139,"column":6},"end":{"line":139,"column":41}},"44":{"start":{"line":140,"column":6},"end":{"line":140,"column":51}},"45":{"start":{"line":143,"column":4},"end":{"line":143,"column":38}},"46":{"start":{"line":144,"column":4},"end":{"line":144,"column":33}},"47":{"start":{"line":147,"column":4},"end":{"line":147,"column":66}},"48":{"start":{"line":151,"column":4},"end":{"line":155,"column":5}},"49":{"start":{"line":152,"column":6},"end":{"line":152,"column":33}},"50":{"start":{"line":154,"column":6},"end":{"line":154,"column":54}},"51":{"start":{"line":159,"column":4},"end":{"line":165,"column":5}},"52":{"start":{"line":160,"column":6},"end":{"line":162,"column":7}},"53":{"start":{"line":161,"column":9},"end":{"line":161,"column":53}},"54":{"start":{"line":164,"column":6},"end":{"line":164,"column":50}},"55":{"start":{"line":169,"column":4},"end":{"line":175,"column":5}},"56":{"start":{"line":170,"column":6},"end":{"line":172,"column":7}},"57":{"start":{"line":171,"column":9},"end":{"line":171,"column":52}},"58":{"start":{"line":174,"column":6},"end":{"line":174,"column":50}},"59":{"start":{"line":179,"column":4},"end":{"line":179,"column":28}},"60":{"start":{"line":179,"column":16},"end":{"line":179,"column":28}},"61":{"start":{"line":181,"column":29},"end":{"line":181,"column":31}},"62":{"start":{"line":182,"column":25},"end":{"line":182,"column":30}},"63":{"start":{"line":184,"column":4},"end":{"line":188,"column":5}},"64":{"start":{"line":185,"column":29},"end":{"line":185,"column":64}},"65":{"start":{"line":186,"column":6},"end":{"line":186,"column":34}},"66":{"start":{"line":187,"column":6},"end":{"line":187,"column":56}},"67":{"start":{"line":190,"column":4},"end":{"line":190,"column":18}},"68":{"start":{"line":195,"column":21},"end":{"line":195,"column":32}},"69":{"start":{"line":196,"column":4},"end":{"line":196,"column":63}},"70":{"start":{"line":197,"column":4},"end":{"line":197,"column":49}},"71":{"start":{"line":198,"column":4},"end":{"line":198,"column":37}},"72":{"start":{"line":199,"column":4},"end":{"line":199,"column":59}},"73":{"start":{"line":201,"column":4},"end":{"line":204,"column":7}},"74":{"start":{"line":208,"column":4},"end":{"line":208,"column":32}},"75":{"start":{"line":209,"column":4},"end":{"line":218,"column":23}},"76":{"start":{"line":210,"column":6},"end":{"line":216,"column":8}},"77":{"start":{"line":217,"column":6},"end":{"line":217,"column":19}},"78":{"start":{"line":222,"column":4},"end":{"line":225,"column":5}},"79":{"start":{"line":223,"column":6},"end":{"line":223,"column":41}},"80":{"start":{"line":224,"column":6},"end":{"line":224,"column":34}},"81":{"start":{"line":238,"column":4},"end":{"line":238,"column":44}},"82":{"start":{"line":239,"column":4},"end":{"line":239,"column":32}},"83":{"start":{"line":241,"column":4},"end":{"line":257,"column":5}},"84":{"start":{"line":242,"column":6},"end":{"line":256,"column":7}},"85":{"start":{"line":243,"column":22},"end":{"line":243,"column":45}},"86":{"start":{"line":244,"column":25},"end":{"line":247,"column":null}},"87":{"start":{"line":249,"column":8},"end":{"line":249,"column":36}},"88":{"start":{"line":250,"column":8},"end":{"line":250,"column":18}},"89":{"start":{"line":252,"column":8},"end":{"line":254,"column":10}},"90":{"start":{"line":255,"column":8},"end":{"line":255,"column":18}},"91":{"start":{"line":259,"column":19},"end":{"line":259,"column":43}},"92":{"start":{"line":261,"column":4},"end":{"line":276,"column":5}},"93":{"start":{"line":262,"column":6},"end":{"line":270,"column":7}},"94":{"start":{"line":263,"column":8},"end":{"line":263,"column":36}},"95":{"start":{"line":264,"column":8},"end":{"line":269,"column":10}},"96":{"start":{"line":272,"column":6},"end":{"line":272,"column":39}},"97":{"start":{"line":273,"column":6},"end":{"line":273,"column":50}},"98":{"start":{"line":274,"column":6},"end":{"line":274,"column":38}},"99":{"start":{"line":275,"column":6},"end":{"line":275,"column":41}},"100":{"start":{"line":278,"column":30},"end":{"line":279,"column":null}},"101":{"start":{"line":282,"column":4},"end":{"line":286,"column":5}},"102":{"start":{"line":283,"column":6},"end":{"line":283,"column":43}},"103":{"start":{"line":284,"column":6},"end":{"line":284,"column":35}},"104":{"start":{"line":285,"column":6},"end":{"line":285,"column":35}},"105":{"start":{"line":288,"column":4},"end":{"line":355,"column":5}},"106":{"start":{"line":289,"column":6},"end":{"line":289,"column":45}},"107":{"start":{"line":291,"column":6},"end":{"line":354,"column":7}},"108":{"start":{"line":292,"column":29},"end":{"line":321,"column":null}},"109":{"start":{"line":296,"column":33},"end":{"line":296,"column":35}},"110":{"start":{"line":297,"column":12},"end":{"line":305,"column":15}},"111":{"start":{"line":298,"column":14},"end":{"line":301,"column":15}},"112":{"start":{"line":299,"column":16},"end":{"line":299,"column":41}},"113":{"start":{"line":300,"column":16},"end":{"line":300,"column":23}},"114":{"start":{"line":302,"column":14},"end":{"line":302,"column":44}},"115":{"start":{"line":303,"column":14},"end":{"line":303,"column":38}},"116":{"start":{"line":304,"column":14},"end":{"line":304,"column":54}},"117":{"start":{"line":307,"column":12},"end":{"line":316,"column":13}},"118":{"start":{"line":308,"column":14},"end":{"line":308,"column":42}},"119":{"start":{"line":309,"column":14},"end":{"line":315,"column":16}},"120":{"start":{"line":318,"column":12},"end":{"line":318,"column":50}},"121":{"start":{"line":319,"column":12},"end":{"line":319,"column":53}},"122":{"start":{"line":320,"column":12},"end":{"line":320,"column":34}},"123":{"start":{"line":325,"column":8},"end":{"line":325,"column":35}},"124":{"start":{"line":326,"column":8},"end":{"line":326,"column":38}},"125":{"start":{"line":327,"column":8},"end":{"line":327,"column":28}},"126":{"start":{"line":330,"column":8},"end":{"line":330,"column":37}},"127":{"start":{"line":331,"column":8},"end":{"line":331,"column":44}},"128":{"start":{"line":332,"column":8},"end":{"line":332,"column":29}},"129":{"start":{"line":333,"column":8},"end":{"line":333,"column":29}},"130":{"start":{"line":334,"column":8},"end":{"line":334,"column":37}},"131":{"start":{"line":336,"column":8},"end":{"line":336,"column":36}},"132":{"start":{"line":338,"column":8},"end":{"line":338,"column":36}},"133":{"start":{"line":340,"column":8},"end":{"line":340,"column":77}},"134":{"start":{"line":341,"column":8},"end":{"line":351,"column":9}},"135":{"start":{"line":342,"column":10},"end":{"line":342,"column":35}},"136":{"start":{"line":344,"column":10},"end":{"line":350,"column":12}},"137":{"start":{"line":352,"column":8},"end":{"line":352,"column":21}},"138":{"start":{"line":353,"column":8},"end":{"line":353,"column":18}},"139":{"start":{"line":357,"column":4},"end":{"line":357,"column":14}},"140":{"start":{"line":27,"column":13},"end":{"line":27,"column":26}},"141":{"start":{"line":27,"column":13},"end":{"line":359,"column":null}}},"fnMap":{"0":{"name":"(anonymous_2)","decl":{"start":{"line":34,"column":2},"end":{"line":34,"column":null}},"loc":{"start":{"line":36,"column":40},"end":{"line":37,"column":6}}},"1":{"name":"(anonymous_3)","decl":{"start":{"line":39,"column":2},"end":{"line":39,"column":7}},"loc":{"start":{"line":39,"column":7},"end":{"line":46,"column":3}}},"2":{"name":"(anonymous_4)","decl":{"start":{"line":48,"column":2},"end":{"line":48,"column":6}},"loc":{"start":{"line":48,"column":14},"end":{"line":50,"column":3}}},"3":{"name":"(anonymous_5)","decl":{"start":{"line":52,"column":10},"end":{"line":52,"column":28}},"loc":{"start":{"line":52,"column":44},"end":{"line":124,"column":3}}},"4":{"name":"(anonymous_6)","decl":{"start":{"line":126,"column":10},"end":{"line":126,"column":22}},"loc":{"start":{"line":126,"column":38},"end":{"line":148,"column":3}}},"5":{"name":"(anonymous_7)","decl":{"start":{"line":150,"column":10},"end":{"line":150,"column":27}},"loc":{"start":{"line":150,"column":40},"end":{"line":156,"column":3}}},"6":{"name":"(anonymous_8)","decl":{"start":{"line":158,"column":10},"end":{"line":158,"column":23}},"loc":{"start":{"line":158,"column":23},"end":{"line":166,"column":3}}},"7":{"name":"(anonymous_9)","decl":{"start":{"line":168,"column":10},"end":{"line":168,"column":22}},"loc":{"start":{"line":168,"column":32},"end":{"line":176,"column":3}}},"8":{"name":"(anonymous_10)","decl":{"start":{"line":178,"column":10},"end":{"line":178,"column":22}},"loc":{"start":{"line":178,"column":36},"end":{"line":191,"column":3}}},"9":{"name":"(anonymous_11)","decl":{"start":{"line":193,"column":10},"end":{"line":193,"column":30}},"loc":{"start":{"line":193,"column":30},"end":{"line":205,"column":3}}},"10":{"name":"(anonymous_12)","decl":{"start":{"line":207,"column":10},"end":{"line":207,"column":30}},"loc":{"start":{"line":207,"column":30},"end":{"line":219,"column":3}}},"11":{"name":"(anonymous_13)","decl":{"start":{"line":209,"column":38},"end":{"line":209,"column":41}},"loc":{"start":{"line":209,"column":43},"end":{"line":218,"column":5}}},"12":{"name":"(anonymous_14)","decl":{"start":{"line":221,"column":10},"end":{"line":221,"column":30}},"loc":{"start":{"line":221,"column":30},"end":{"line":226,"column":3}}},"13":{"name":"(anonymous_15)","decl":{"start":{"line":228,"column":2},"end":{"line":228,"column":7}},"loc":{"start":{"line":236,"column":37},"end":{"line":358,"column":3}}},"14":{"name":"(anonymous_16)","decl":{"start":{"line":295,"column":10},"end":{"line":295,"column":15}},"loc":{"start":{"line":295,"column":28},"end":{"line":321,"column":11}}},"15":{"name":"(anonymous_17)","decl":{"start":{"line":297,"column":42},"end":{"line":297,"column":43}},"loc":{"start":{"line":297,"column":78},"end":{"line":305,"column":13}}}},"branchMap":{"0":{"loc":{"start":{"line":53,"column":4},"end":{"line":54,"column":78}},"type":"if","locations":[{"start":{"line":53,"column":4},"end":{"line":54,"column":78}}]},"1":{"loc":{"start":{"line":56,"column":4},"end":{"line":123,"column":5}},"type":"switch","locations":[{"start":{"line":57,"column":6},"end":{"line":63,"column":10}},{"start":{"line":64,"column":6},"end":{"line":73,"column":10}},{"start":{"line":74,"column":6},"end":{"line":82,"column":10}},{"start":{"line":83,"column":6},"end":{"line":88,"column":10}},{"start":{"line":89,"column":6},"end":{"line":94,"column":10}},{"start":{"line":95,"column":6},"end":{"line":101,"column":10}},{"start":{"line":102,"column":6},"end":{"line":108,"column":10}},{"start":{"line":109,"column":6},"end":{"line":115,"column":10}},{"start":{"line":116,"column":6},"end":{"line":122,"column":10}}]},"2":{"loc":{"start":{"line":68,"column":12},"end":{"line":70,"column":null}},"type":"cond-expr","locations":[{"start":{"line":69,"column":16},"end":{"line":69,"column":68}},{"start":{"line":70,"column":16},"end":{"line":70,"column":null}}]},"3":{"loc":{"start":{"line":78,"column":12},"end":{"line":78,"column":null}},"type":"cond-expr","locations":[{"start":{"line":78,"column":37},"end":{"line":78,"column":64}},{"start":{"line":78,"column":67},"end":{"line":78,"column":null}}]},"4":{"loc":{"start":{"line":119,"column":19},"end":{"line":119,"column":66}},"type":"binary-expr","locations":[{"start":{"line":119,"column":19},"end":{"line":119,"column":32}},{"start":{"line":119,"column":36},"end":{"line":119,"column":66}}]},"5":{"loc":{"start":{"line":137,"column":4},"end":{"line":141,"column":5}},"type":"if","locations":[{"start":{"line":137,"column":4},"end":{"line":141,"column":5}}]},"6":{"loc":{"start":{"line":160,"column":6},"end":{"line":162,"column":7}},"type":"if","locations":[{"start":{"line":160,"column":6},"end":{"line":162,"column":7}}]},"7":{"loc":{"start":{"line":170,"column":6},"end":{"line":172,"column":7}},"type":"if","locations":[{"start":{"line":170,"column":6},"end":{"line":172,"column":7}}]},"8":{"loc":{"start":{"line":179,"column":4},"end":{"line":179,"column":28}},"type":"if","locations":[{"start":{"line":179,"column":4},"end":{"line":179,"column":28}}]},"9":{"loc":{"start":{"line":222,"column":4},"end":{"line":225,"column":5}},"type":"if","locations":[{"start":{"line":222,"column":4},"end":{"line":225,"column":5}}]},"10":{"loc":{"start":{"line":241,"column":4},"end":{"line":257,"column":5}},"type":"if","locations":[{"start":{"line":241,"column":4},"end":{"line":257,"column":5}}]},"11":{"loc":{"start":{"line":245,"column":10},"end":{"line":245,"column":42}},"type":"binary-expr","locations":[{"start":{"line":245,"column":10},"end":{"line":245,"column":23}},{"start":{"line":245,"column":27},"end":{"line":245,"column":42}}]},"12":{"loc":{"start":{"line":246,"column":10},"end":{"line":246,"column":39}},"type":"binary-expr","locations":[{"start":{"line":246,"column":10},"end":{"line":246,"column":20}},{"start":{"line":246,"column":24},"end":{"line":246,"column":39}}]},"13":{"loc":{"start":{"line":262,"column":6},"end":{"line":270,"column":7}},"type":"if","locations":[{"start":{"line":262,"column":6},"end":{"line":270,"column":7}}]},"14":{"loc":{"start":{"line":282,"column":4},"end":{"line":286,"column":5}},"type":"if","locations":[{"start":{"line":282,"column":4},"end":{"line":286,"column":5}}]},"15":{"loc":{"start":{"line":282,"column":8},"end":{"line":282,"column":59}},"type":"binary-expr","locations":[{"start":{"line":282,"column":8},"end":{"line":282,"column":38}},{"start":{"line":282,"column":42},"end":{"line":282,"column":59}}]},"16":{"loc":{"start":{"line":288,"column":4},"end":{"line":355,"column":5}},"type":"if","locations":[{"start":{"line":288,"column":4},"end":{"line":355,"column":5}}]},"17":{"loc":{"start":{"line":288,"column":8},"end":{"line":288,"column":65}},"type":"binary-expr","locations":[{"start":{"line":288,"column":8},"end":{"line":288,"column":29}},{"start":{"line":288,"column":33},"end":{"line":288,"column":65}}]},"18":{"loc":{"start":{"line":298,"column":14},"end":{"line":301,"column":15}},"type":"if","locations":[{"start":{"line":298,"column":14},"end":{"line":301,"column":15}}]},"19":{"loc":{"start":{"line":307,"column":12},"end":{"line":316,"column":13}},"type":"if","locations":[{"start":{"line":307,"column":12},"end":{"line":316,"column":13}}]},"20":{"loc":{"start":{"line":341,"column":8},"end":{"line":351,"column":9}},"type":"if","locations":[{"start":{"line":341,"column":8},"end":{"line":351,"column":9}},{"start":{"line":343,"column":15},"end":{"line":351,"column":9}}]},"21":{"loc":{"start":{"line":346,"column":14},"end":{"line":346,"column":70}},"type":"binary-expr","locations":[{"start":{"line":346,"column":14},"end":{"line":346,"column":27}},{"start":{"line":346,"column":31},"end":{"line":346,"column":70}}]}},"s":{"0":3,"1":3,"2":3,"3":3,"4":3,"5":3,"6":3,"7":3,"8":30,"9":30,"10":30,"11":30,"12":30,"13":30,"14":30,"15":2,"16":2,"17":2,"18":2,"19":2,"20":2,"21":0,"22":1,"23":0,"24":1,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":1,"34":1,"35":1,"36":1,"37":1,"38":1,"39":1,"40":1,"41":1,"42":1,"43":1,"44":1,"45":1,"46":1,"47":1,"48":34,"49":34,"50":0,"51":3,"52":3,"53":0,"54":0,"55":3,"56":3,"57":0,"58":0,"59":9,"60":1,"61":8,"62":8,"63":8,"64":8,"65":8,"66":8,"67":8,"68":0,"69":0,"70":0,"71":0,"72":0,"73":0,"74":9,"75":9,"76":0,"77":0,"78":14,"79":4,"80":4,"81":9,"82":9,"83":9,"84":0,"85":0,"86":0,"87":0,"88":0,"89":0,"90":0,"91":9,"92":9,"93":9,"94":0,"95":0,"96":9,"97":9,"98":9,"99":9,"100":9,"101":9,"102":5,"103":5,"104":5,"105":9,"106":4,"107":4,"108":4,"109":0,"110":0,"111":0,"112":0,"113":0,"114":0,"115":0,"116":0,"117":0,"118":0,"119":0,"120":0,"121":0,"122":0,"123":3,"124":3,"125":3,"126":3,"127":3,"128":3,"129":3,"130":3,"131":3,"132":3,"133":1,"134":1,"135":0,"136":1,"137":1,"138":1,"139":5,"140":3,"141":3},"f":{"0":30,"1":2,"2":0,"3":1,"4":1,"5":34,"6":3,"7":3,"8":9,"9":0,"10":9,"11":0,"12":14,"13":9,"14":0,"15":0},"b":{"0":[0],"1":[0,0,0,0,0,0,0,0,1],"2":[0,0],"3":[0,0],"4":[1,0],"5":[1],"6":[0],"7":[0],"8":[1],"9":[4],"10":[0],"11":[0,0],"12":[0,0],"13":[0],"14":[5],"15":[9,9],"16":[4],"17":[9,5],"18":[0],"19":[0],"20":[0,1],"21":[1,0]}} -,"/home/joao/projects/cracked-dev-cli/src/services/text/AnsiStripper.ts": {"path":"/home/joao/projects/cracked-dev-cli/src/services/text/AnsiStripper.ts","statementMap":{"0":{"start":{"line":3,"column":0},"end":{"line":3,"column":42}},"1":{"start":{"line":22,"column":4},"end":{"line":24,"column":5}},"2":{"start":{"line":23,"column":6},"end":{"line":23,"column":52}},"3":{"start":{"line":25,"column":4},"end":{"line":25,"column":53}},"4":{"start":{"line":11,"column":13},"end":{"line":11,"column":25}},"5":{"start":{"line":13,"column":26},"end":{"line":13,"column":46}},"6":{"start":{"line":11,"column":13},"end":{"line":27,"column":null}}},"fnMap":{"0":{"name":"(anonymous_1)","decl":{"start":{"line":21,"column":9},"end":{"line":21,"column":14}},"loc":{"start":{"line":21,"column":28},"end":{"line":26,"column":3}}}},"branchMap":{"0":{"loc":{"start":{"line":22,"column":4},"end":{"line":24,"column":5}},"type":"if","locations":[{"start":{"line":22,"column":4},"end":{"line":24,"column":5}}]}},"s":{"0":16,"1":11,"2":0,"3":11,"4":16,"5":16,"6":16},"f":{"0":11},"b":{"0":[0]}} -,"/home/joao/projects/cracked-dev-cli/src/services/text/HTMLEntityDecoder.ts": {"path":"/home/joao/projects/cracked-dev-cli/src/services/text/HTMLEntityDecoder.ts","statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":20}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":38}},"2":{"start":{"line":10,"column":7},"end":{"line":69,"column":null}},"3":{"start":{"line":18,"column":4},"end":{"line":20,"column":5}},"4":{"start":{"line":19,"column":6},"end":{"line":19,"column":16}},"5":{"start":{"line":22,"column":17},"end":{"line":22,"column":21}},"6":{"start":{"line":25,"column":4},"end":{"line":27,"column":5}},"7":{"start":{"line":26,"column":6},"end":{"line":26,"column":67}},"8":{"start":{"line":30,"column":4},"end":{"line":30,"column":29}},"9":{"start":{"line":40,"column":4},"end":{"line":67,"column":7}},"10":{"start":{"line":41,"column":6},"end":{"line":45,"column":7}},"11":{"start":{"line":43,"column":21},"end":{"line":43,"column":42}},"12":{"start":{"line":44,"column":8},"end":{"line":44,"column":41}},"13":{"start":{"line":48,"column":56},"end":{"line":58,"column":8}},"14":{"start":{"line":61,"column":6},"end":{"line":63,"column":7}},"15":{"start":{"line":62,"column":8},"end":{"line":62,"column":75}},"16":{"start":{"line":66,"column":6},"end":{"line":66,"column":42}},"17":{"start":{"line":10,"column":13},"end":{"line":10,"column":30}},"18":{"start":{"line":10,"column":13},"end":{"line":69,"column":null}}},"fnMap":{"0":{"name":"(anonymous_2)","decl":{"start":{"line":17,"column":2},"end":{"line":17,"column":8}},"loc":{"start":{"line":17,"column":58},"end":{"line":31,"column":3}}},"1":{"name":"(anonymous_3)","decl":{"start":{"line":39,"column":10},"end":{"line":39,"column":24}},"loc":{"start":{"line":39,"column":54},"end":{"line":68,"column":3}}},"2":{"name":"(anonymous_4)","decl":{"start":{"line":40,"column":53},"end":{"line":40,"column":54}},"loc":{"start":{"line":40,"column":78},"end":{"line":67,"column":5}}}},"branchMap":{"0":{"loc":{"start":{"line":18,"column":4},"end":{"line":20,"column":5}},"type":"if","locations":[{"start":{"line":18,"column":4},"end":{"line":20,"column":5}}]},"1":{"loc":{"start":{"line":25,"column":4},"end":{"line":27,"column":5}},"type":"if","locations":[{"start":{"line":25,"column":4},"end":{"line":27,"column":5}}]},"2":{"loc":{"start":{"line":25,"column":8},"end":{"line":25,"column":59}},"type":"binary-expr","locations":[{"start":{"line":25,"column":8},"end":{"line":25,"column":38}},{"start":{"line":25,"column":42},"end":{"line":25,"column":59}}]},"3":{"loc":{"start":{"line":41,"column":6},"end":{"line":45,"column":7}},"type":"if","locations":[{"start":{"line":41,"column":6},"end":{"line":45,"column":7}}]},"4":{"loc":{"start":{"line":61,"column":6},"end":{"line":63,"column":7}},"type":"if","locations":[{"start":{"line":61,"column":6},"end":{"line":63,"column":7}}]},"5":{"loc":{"start":{"line":62,"column":15},"end":{"line":62,"column":74}},"type":"cond-expr","locations":[{"start":{"line":62,"column":38},"end":{"line":62,"column":66}},{"start":{"line":62,"column":69},"end":{"line":62,"column":74}}]},"6":{"loc":{"start":{"line":62,"column":38},"end":{"line":62,"column":66}},"type":"binary-expr","locations":[{"start":{"line":62,"column":38},"end":{"line":62,"column":58}},{"start":{"line":62,"column":62},"end":{"line":62,"column":66}}]},"7":{"loc":{"start":{"line":66,"column":13},"end":{"line":66,"column":41}},"type":"binary-expr","locations":[{"start":{"line":66,"column":13},"end":{"line":66,"column":33}},{"start":{"line":66,"column":37},"end":{"line":66,"column":41}}]}},"s":{"0":20,"1":20,"2":20,"3":8,"4":1,"5":7,"6":7,"7":6,"8":7,"9":14,"10":31,"11":2,"12":2,"13":29,"14":29,"15":18,"16":11,"17":20,"18":20},"f":{"0":8,"1":14,"2":31},"b":{"0":[1],"1":[6],"2":[7,3],"3":[2],"4":[18],"5":[13,5],"6":[13,0],"7":[11,2]}} -} diff --git a/coverage/lcov-report/base.css b/coverage/lcov-report/base.css deleted file mode 100644 index f418035b..00000000 --- a/coverage/lcov-report/base.css +++ /dev/null @@ -1,224 +0,0 @@ -body, html { - margin:0; padding: 0; - height: 100%; -} -body { - font-family: Helvetica Neue, Helvetica, Arial; - font-size: 14px; - color:#333; -} -.small { font-size: 12px; } -*, *:after, *:before { - -webkit-box-sizing:border-box; - -moz-box-sizing:border-box; - box-sizing:border-box; - } -h1 { font-size: 20px; margin: 0;} -h2 { font-size: 14px; } -pre { - font: 12px/1.4 Consolas, "Liberation Mono", Menlo, Courier, monospace; - margin: 0; - padding: 0; - -moz-tab-size: 2; - -o-tab-size: 2; - tab-size: 2; -} -a { color:#0074D9; text-decoration:none; } -a:hover { text-decoration:underline; } -.strong { font-weight: bold; } -.space-top1 { padding: 10px 0 0 0; } -.pad2y { padding: 20px 0; } -.pad1y { padding: 10px 0; } -.pad2x { padding: 0 20px; } -.pad2 { padding: 20px; } -.pad1 { padding: 10px; } -.space-left2 { padding-left:55px; } -.space-right2 { padding-right:20px; } -.center { text-align:center; } -.clearfix { display:block; } -.clearfix:after { - content:''; - display:block; - height:0; - clear:both; - visibility:hidden; - } -.fl { float: left; } -@media only screen and (max-width:640px) { - .col3 { width:100%; max-width:100%; } - .hide-mobile { display:none!important; } -} - -.quiet { - color: #7f7f7f; - color: rgba(0,0,0,0.5); -} -.quiet a { opacity: 0.7; } - -.fraction { - font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace; - font-size: 10px; - color: #555; - background: #E8E8E8; - padding: 4px 5px; - border-radius: 3px; - vertical-align: middle; -} - -div.path a:link, div.path a:visited { color: #333; } -table.coverage { - border-collapse: collapse; - margin: 10px 0 0 0; - padding: 0; -} - -table.coverage td { - margin: 0; - padding: 0; - vertical-align: top; -} -table.coverage td.line-count { - text-align: right; - padding: 0 5px 0 20px; -} -table.coverage td.line-coverage { - text-align: right; - padding-right: 10px; - min-width:20px; -} - -table.coverage td span.cline-any { - display: inline-block; - padding: 0 5px; - width: 100%; -} -.missing-if-branch { - display: inline-block; - margin-right: 5px; - border-radius: 3px; - position: relative; - padding: 0 4px; - background: #333; - color: yellow; -} - -.skip-if-branch { - display: none; - margin-right: 10px; - position: relative; - padding: 0 4px; - background: #ccc; - color: white; -} -.missing-if-branch .typ, .skip-if-branch .typ { - color: inherit !important; -} -.coverage-summary { - border-collapse: collapse; - width: 100%; -} -.coverage-summary tr { border-bottom: 1px solid #bbb; } -.keyline-all { border: 1px solid #ddd; } -.coverage-summary td, .coverage-summary th { padding: 10px; } -.coverage-summary tbody { border: 1px solid #bbb; } -.coverage-summary td { border-right: 1px solid #bbb; } -.coverage-summary td:last-child { border-right: none; } -.coverage-summary th { - text-align: left; - font-weight: normal; - white-space: nowrap; -} -.coverage-summary th.file { border-right: none !important; } -.coverage-summary th.pct { } -.coverage-summary th.pic, -.coverage-summary th.abs, -.coverage-summary td.pct, -.coverage-summary td.abs { text-align: right; } -.coverage-summary td.file { white-space: nowrap; } -.coverage-summary td.pic { min-width: 120px !important; } -.coverage-summary tfoot td { } - -.coverage-summary .sorter { - height: 10px; - width: 7px; - display: inline-block; - margin-left: 0.5em; - background: url(sort-arrow-sprite.png) no-repeat scroll 0 0 transparent; -} -.coverage-summary .sorted .sorter { - background-position: 0 -20px; -} -.coverage-summary .sorted-desc .sorter { - background-position: 0 -10px; -} -.status-line { height: 10px; } -/* yellow */ -.cbranch-no { background: yellow !important; color: #111; } -/* dark red */ -.red.solid, .status-line.low, .low .cover-fill { background:#C21F39 } -.low .chart { border:1px solid #C21F39 } -.highlighted, -.highlighted .cstat-no, .highlighted .fstat-no, .highlighted .cbranch-no{ - background: #C21F39 !important; -} -/* medium red */ -.cstat-no, .fstat-no, .cbranch-no, .cbranch-no { background:#F6C6CE } -/* light red */ -.low, .cline-no { background:#FCE1E5 } -/* light green */ -.high, .cline-yes { background:rgb(230,245,208) } -/* medium green */ -.cstat-yes { background:rgb(161,215,106) } -/* dark green */ -.status-line.high, .high .cover-fill { background:rgb(77,146,33) } -.high .chart { border:1px solid rgb(77,146,33) } -/* dark yellow (gold) */ -.status-line.medium, .medium .cover-fill { background: #f9cd0b; } -.medium .chart { border:1px solid #f9cd0b; } -/* light yellow */ -.medium { background: #fff4c2; } - -.cstat-skip { background: #ddd; color: #111; } -.fstat-skip { background: #ddd; color: #111 !important; } -.cbranch-skip { background: #ddd !important; color: #111; } - -span.cline-neutral { background: #eaeaea; } - -.coverage-summary td.empty { - opacity: .5; - padding-top: 4px; - padding-bottom: 4px; - line-height: 1; - color: #888; -} - -.cover-fill, .cover-empty { - display:inline-block; - height: 12px; -} -.chart { - line-height: 0; -} -.cover-empty { - background: white; -} -.cover-full { - border-right: none !important; -} -pre.prettyprint { - border: none !important; - padding: 0 !important; - margin: 0 !important; -} -.com { color: #999 !important; } -.ignore-none { color: #999; font-weight: normal; } - -.wrapper { - min-height: 100%; - height: auto !important; - height: 100%; - margin: 0 auto -48px; -} -.footer, .push { - height: 48px; -} diff --git a/coverage/lcov-report/block-navigation.js b/coverage/lcov-report/block-navigation.js deleted file mode 100644 index cc121302..00000000 --- a/coverage/lcov-report/block-navigation.js +++ /dev/null @@ -1,87 +0,0 @@ -/* eslint-disable */ -var jumpToCode = (function init() { - // Classes of code we would like to highlight in the file view - var missingCoverageClasses = ['.cbranch-no', '.cstat-no', '.fstat-no']; - - // Elements to highlight in the file listing view - var fileListingElements = ['td.pct.low']; - - // We don't want to select elements that are direct descendants of another match - var notSelector = ':not(' + missingCoverageClasses.join('):not(') + ') > '; // becomes `:not(a):not(b) > ` - - // Selecter that finds elements on the page to which we can jump - var selector = - fileListingElements.join(', ') + - ', ' + - notSelector + - missingCoverageClasses.join(', ' + notSelector); // becomes `:not(a):not(b) > a, :not(a):not(b) > b` - - // The NodeList of matching elements - var missingCoverageElements = document.querySelectorAll(selector); - - var currentIndex; - - function toggleClass(index) { - missingCoverageElements - .item(currentIndex) - .classList.remove('highlighted'); - missingCoverageElements.item(index).classList.add('highlighted'); - } - - function makeCurrent(index) { - toggleClass(index); - currentIndex = index; - missingCoverageElements.item(index).scrollIntoView({ - behavior: 'smooth', - block: 'center', - inline: 'center' - }); - } - - function goToPrevious() { - var nextIndex = 0; - if (typeof currentIndex !== 'number' || currentIndex === 0) { - nextIndex = missingCoverageElements.length - 1; - } else if (missingCoverageElements.length > 1) { - nextIndex = currentIndex - 1; - } - - makeCurrent(nextIndex); - } - - function goToNext() { - var nextIndex = 0; - - if ( - typeof currentIndex === 'number' && - currentIndex < missingCoverageElements.length - 1 - ) { - nextIndex = currentIndex + 1; - } - - makeCurrent(nextIndex); - } - - return function jump(event) { - if ( - document.getElementById('fileSearch') === document.activeElement && - document.activeElement != null - ) { - // if we're currently focused on the search input, we don't want to navigate - return; - } - - switch (event.which) { - case 78: // n - case 74: // j - goToNext(); - break; - case 66: // b - case 75: // k - case 80: // p - goToPrevious(); - break; - } - }; -})(); -window.addEventListener('keydown', jumpToCode); diff --git a/coverage/lcov-report/commands/index.html b/coverage/lcov-report/commands/index.html deleted file mode 100644 index 90195c67..00000000 --- a/coverage/lcov-report/commands/index.html +++ /dev/null @@ -1,116 +0,0 @@ - - - - - - Code coverage report for commands - - - - - - - - - -
-
-

All files commands

-
- -
- 18.51% - Statements - 15/81 -
- - -
- 0% - Branches - 0/32 -
- - -
- 0% - Functions - 0/5 -
- - -
- 19.73% - Lines - 15/76 -
- - -
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

- -
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
FileStatementsBranchesFunctionsLines
run.ts -
-
18.51%15/810%0/320%0/519.73%15/76
-
-
-
- - - - - - - - \ No newline at end of file diff --git a/coverage/lcov-report/commands/run.ts.html b/coverage/lcov-report/commands/run.ts.html deleted file mode 100644 index 3c5600f0..00000000 --- a/coverage/lcov-report/commands/run.ts.html +++ /dev/null @@ -1,562 +0,0 @@ - - - - - - Code coverage report for commands/run.ts - - - - - - - - - -
-
-

All files / commands run.ts

-
- -
- 18.51% - Statements - 15/81 -
- - -
- 0% - Branches - 0/32 -
- - -
- 0% - Functions - 0/5 -
- - -
- 19.73% - Lines - 15/76 -
- - -
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

- -
-
-

-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -18 -19 -20 -21 -22 -23 -24 -25 -26 -27 -28 -29 -30 -31 -32 -33 -34 -35 -36 -37 -38 -39 -40 -41 -42 -43 -44 -45 -46 -47 -48 -49 -50 -51 -52 -53 -54 -55 -56 -57 -58 -59 -60 -61 -62 -63 -64 -65 -66 -67 -68 -69 -70 -71 -72 -73 -74 -75 -76 -77 -78 -79 -80 -81 -82 -83 -84 -85 -86 -87 -88 -89 -90 -91 -92 -93 -94 -95 -96 -97 -98 -99 -100 -101 -102 -103 -104 -105 -106 -107 -108 -109 -110 -111 -112 -113 -114 -115 -116 -117 -118 -119 -120 -121 -122 -123 -124 -125 -126 -127 -128 -129 -130 -131 -132 -133 -134 -135 -136 -137 -138 -139 -140 -141 -142 -143 -144 -145 -146 -147 -148 -149 -150 -151 -152 -153 -154 -155 -156 -157 -158 -159 -1601x -1x -1x -1x -1x -1x -1x -1x -1x -1x -  -1x -1x -  -1x -  -  -  -  -  -1x -  -  -  -  -  -  -1x -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  - 
import { Args, Command, Flags } from "@oclif/core";
-import { CrackedAgent, CrackedAgentOptions } from "@services/CrackedAgent";
-import { LLMProviderType } from "@services/LLM/LLMProvider";
-import { ModelManager } from "@services/LLM/ModelManager";
-import { OpenRouterAPI } from "@services/LLMProviders/OpenRouter/OpenRouterAPI";
-import { InteractiveSessionManager } from "@services/streaming/InteractiveSessionManager";
-import { StreamHandler } from "@services/streaming/StreamHandler";
-import * as readline from "readline";
-import { container } from "tsyringe";
-import { ConfigService } from "../services/ConfigService";
- 
-export class Run extends Command {
-  static description = "AI agent for performing operations on local projects";
- 
-  static examples = [
-    "$ run 'Add error handling'",
-    "$ run --interactive # Start interactive mode",
-    "$ run --init # Initialize configuration",
-  ];
- 
-  static flags = {
-    init: Flags.boolean({
-      description: "Initialize a default crkdrc.json configuration file",
-      exclusive: ["interactive"],
-    }),
-  };
- 
-  static args = {
-    message: Args.string({
-      description: "Message describing the operation to perform",
-      required: false,
-    }),
-  };
- 
-  private configService: ConfigService;
-  private modelManager: ModelManager;
-  private streamHandler: StreamHandler;
-  private openRouterAPI: OpenRouterAPI;
-  private sessionManager: InteractiveSessionManager;
-  private rl: readline.Interface;
- 
-  constructor(argv: string[], config: any) {
-    super(argv, config);
-    this.configService = container.resolve(ConfigService);
-    this.modelManager = container.resolve(ModelManager);
-    this.streamHandler = container.resolve(StreamHandler);
-    this.openRouterAPI = container.resolve(OpenRouterAPI);
-    this.sessionManager = container.resolve(InteractiveSessionManager);
-    this.rl = readline.createInterface({
-      input: process.stdin,
-      output: process.stdout,
-      prompt: "> ",
-    });
-  }
- 
-  private parseOptions(optionsString: string): Record<string, unknown> {
-    const options: Record<string, unknown> = {};
- 
-    Iif (!optionsString) return options;
- 
-    const pairs = optionsString.split(",");
-    for (const pair of pairs) {
-      const [key, value] = pair.trim().split("=");
-      Iif (!key || !value) continue;
- 
-      // Convert value to appropriate type
-      if (value === "true") options[key] = true;
-      else if (value === "false") options[key] = false;
-      else if (!isNaN(Number(value))) {
-        if (value.includes(".")) options[key] = parseFloat(value);
-        else options[key] = parseInt(value, 10);
-      } else options[key] = value;
-    }
- 
-    return options;
-  }
- 
-  async run(): Promise<void> {
-    const { args, flags } = await this.parse(Run);
- 
-    Iif (flags.init) {
-      this.configService.createDefaultConfig();
-      return;
-    }
- 
-    const config = this.configService.getConfig();
- 
-    Iif (!config.openRouterApiKey) {
-      this.error(
-        "OpenRouter API key is required. Please add it to crkdrc.json",
-      );
-    }
- 
-    const isInteractive = config.interactive ?? false;
- 
-    Iif (isInteractive && args.message) {
-      this.error("Cannot provide both interactive mode and message argument");
-    }
- 
-    Iif (!isInteractive && !args.message) {
-      this.error("Must provide either interactive mode or message argument");
-    }
- 
-    try {
-      Iif (!config.discoveryModel) {
-        throw new Error("Discovery model is required in configuration");
-      }
- 
-      const options: CrackedAgentOptions = {
-        ...config,
-        options: this.parseOptions(config.options || ""),
-        provider: config.provider as LLMProviderType,
-      };
- 
-      // Validate provider
-      Iif (!Object.values(LLMProviderType).includes(options.provider!)) {
-        throw new Error(`Invalid provider: ${options.provider}`);
-      }
- 
-      this.modelManager.setCurrentModel(config.discoveryModel);
- 
-      console.log(
-        `Using ${options.provider} provider and model: ${this.modelManager.getCurrentModel()}`,
-      );
- 
-      const agent = container.resolve(CrackedAgent);
-      this.sessionManager.initialize(this.rl, agent, options);
- 
-      if (isInteractive) {
-        await this.sessionManager.start();
-      } else {
-        console.log("Press Enter to start the stream...");
-        this.rl.once("line", async () => {
-          try {
-            const result = await agent.execute(args.message!, options);
-            Iif (!options.stream && result) {
-              this.log(result.response);
-              Iif (result.actions?.length) {
-                this.log("\nExecuted Actions:");
-                result.actions.forEach(({ action, result }) => {
-                  this.log(`\nAction: ${action}`);
-                  this.log(`Result: ${JSON.stringify(result, null, 2)}`);
-                });
-              }
-            }
-            this.sessionManager.cleanup();
-            process.exit(0);
-          } catch (error) {
-            this.sessionManager.cleanup();
-            this.error((error as Error).message);
-          }
-        });
-      }
-    } catch (error) {
-      this.sessionManager.cleanup();
-      this.error((error as Error).message);
-    }
-  }
-}
- 
- -
-
- - - - - - - - \ No newline at end of file diff --git a/coverage/lcov-report/constants/colors.ts.html b/coverage/lcov-report/constants/colors.ts.html deleted file mode 100644 index 0912a5bc..00000000 --- a/coverage/lcov-report/constants/colors.ts.html +++ /dev/null @@ -1,109 +0,0 @@ - - - - - - Code coverage report for constants/colors.ts - - - - - - - - - -
-
-

All files / constants colors.ts

-
- -
- 100% - Statements - 1/1 -
- - -
- 100% - Branches - 0/0 -
- - -
- 100% - Functions - 0/0 -
- - -
- 100% - Lines - 1/1 -
- - -
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

- -
-
-

-
1 -2 -3 -4 -5 -6 -7 -8 -932x -  -  -  -  -  -  -  - 
export const Colors = {
-  reset: "\x1b[0m",
-  cyan: "\x1b[36m",
-  yellow: "\x1b[33m",
-  green: "\x1b[32m",
-  magenta: "\x1b[35m",
-  blue: "\x1b[34m",
-};
- 
- -
-
- - - - - - - - \ No newline at end of file diff --git a/coverage/lcov-report/constants/defaultInstructions.ts.html b/coverage/lcov-report/constants/defaultInstructions.ts.html deleted file mode 100644 index e1a73bb3..00000000 --- a/coverage/lcov-report/constants/defaultInstructions.ts.html +++ /dev/null @@ -1,91 +0,0 @@ - - - - - - Code coverage report for constants/defaultInstructions.ts - - - - - - - - - -
-
-

All files / constants defaultInstructions.ts

-
- -
- 100% - Statements - 1/1 -
- - -
- 100% - Branches - 0/0 -
- - -
- 100% - Functions - 0/0 -
- - -
- 100% - Lines - 1/1 -
- - -
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

- -
-
-

-
1 -2 -32x -  - 
export const DEFAULT_INSTRUCTIONS =
-  "You're an expert software engineer, master of your craft. Think deeply for each answer, ill tip $200.";
- 
- -
-
- - - - - - - - \ No newline at end of file diff --git a/coverage/lcov-report/constants/index.html b/coverage/lcov-report/constants/index.html deleted file mode 100644 index 8660a68c..00000000 --- a/coverage/lcov-report/constants/index.html +++ /dev/null @@ -1,176 +0,0 @@ - - - - - - Code coverage report for constants - - - - - - - - - -
-
-

All files constants

-
- -
- 100% - Statements - 18/18 -
- - -
- 100% - Branches - 2/2 -
- - -
- 100% - Functions - 1/1 -
- - -
- 100% - Lines - 17/17 -
- - -
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

- -
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
FileStatementsBranchesFunctionsLines
colors.ts -
-
100%1/1100%0/0100%0/0100%1/1
defaultInstructions.ts -
-
100%1/1100%0/0100%0/0100%1/1
modelScaling.ts -
-
100%1/1100%0/0100%0/0100%1/1
openRouterClient.ts -
-
100%14/14100%2/2100%1/1100%13/13
writeConstants.ts -
-
100%1/1100%0/0100%0/0100%1/1
-
-
-
- - - - - - - - \ No newline at end of file diff --git a/coverage/lcov-report/constants/modelScaling.ts.html b/coverage/lcov-report/constants/modelScaling.ts.html deleted file mode 100644 index 31217eb9..00000000 --- a/coverage/lcov-report/constants/modelScaling.ts.html +++ /dev/null @@ -1,88 +0,0 @@ - - - - - - Code coverage report for constants/modelScaling.ts - - - - - - - - - -
-
-

All files / constants modelScaling.ts

-
- -
- 100% - Statements - 1/1 -
- - -
- 100% - Branches - 0/0 -
- - -
- 100% - Functions - 0/0 -
- - -
- 100% - Lines - 1/1 -
- - -
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

- -
-
-

-
1 -220x - 
export const MODEL_SCALING_INITIAL_TRY_COUNT = 2;
- 
- -
-
- - - - - - - - \ No newline at end of file diff --git a/coverage/lcov-report/constants/openRouterClient.ts.html b/coverage/lcov-report/constants/openRouterClient.ts.html deleted file mode 100644 index fe57ba36..00000000 --- a/coverage/lcov-report/constants/openRouterClient.ts.html +++ /dev/null @@ -1,190 +0,0 @@ - - - - - - Code coverage report for constants/openRouterClient.ts - - - - - - - - - -
-
-

All files / constants openRouterClient.ts

-
- -
- 100% - Statements - 14/14 -
- - -
- 100% - Branches - 2/2 -
- - -
- 100% - Functions - 1/1 -
- - -
- 100% - Lines - 13/13 -
- - -
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

- -
-
-

-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -18 -19 -20 -21 -22 -23 -24 -25 -26 -27 -28 -29 -30 -31 -32 -33 -34 -35 -3626x -26x -26x -  -26x -26x -26x -  -26x -  -  -  -  -26x -26x -  -  -26x -26x -  -  -26x -  -  -  -  -  -  -  -  -  -  -26x -  -  - 
import { ConfigService } from "@services/ConfigService";
-import axios, { AxiosInstance } from "axios";
-import { container } from "tsyringe";
- 
-export const createOpenRouterClient = (baseURL: string): AxiosInstance => {
-  const configService = container.resolve(ConfigService);
-  const config = configService.getConfig();
- 
-  const headers: Record<string, string> = {
-    Authorization: `Bearer ${config.openRouterApiKey}`,
-    "Content-Type": "application/json",
-  };
- 
-  if (config.appUrl) {
-    headers["HTTP-Referer"] = config.appUrl;
-  }
- 
-  if (config.appName) {
-    headers["X-Title"] = config.appName;
-  }
- 
-  return axios.create({
-    baseURL,
-    // Remove timeout for streaming support
-    timeout: 0,
-    headers,
-    // Add necessary axios config for proper streaming
-    maxBodyLength: Infinity,
-    maxContentLength: Infinity,
-  });
-};
- 
-export const openRouterClient = createOpenRouterClient(
-  "https://openrouter.ai/api/v1",
-);
- 
- -
-
- - - - - - - - \ No newline at end of file diff --git a/coverage/lcov-report/constants/writeConstants.ts.html b/coverage/lcov-report/constants/writeConstants.ts.html deleted file mode 100644 index 4ec6c8d8..00000000 --- a/coverage/lcov-report/constants/writeConstants.ts.html +++ /dev/null @@ -1,88 +0,0 @@ - - - - - - Code coverage report for constants/writeConstants.ts - - - - - - - - - -
-
-

All files / constants writeConstants.ts

-
- -
- 100% - Statements - 1/1 -
- - -
- 100% - Branches - 0/0 -
- - -
- 100% - Functions - 0/0 -
- - -
- 100% - Lines - 1/1 -
- - -
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

- -
-
-

-
1 -215x - 
export const BLOCK_WRITE_IF_CONTENT_REMOVAL_THRESHOLD = 90;
- 
- -
-
- - - - - - - - \ No newline at end of file diff --git a/coverage/lcov-report/favicon.png b/coverage/lcov-report/favicon.png deleted file mode 100644 index c1525b81..00000000 Binary files a/coverage/lcov-report/favicon.png and /dev/null differ diff --git a/coverage/lcov-report/index.html b/coverage/lcov-report/index.html deleted file mode 100644 index 1fa4aa49..00000000 --- a/coverage/lcov-report/index.html +++ /dev/null @@ -1,371 +0,0 @@ - - - - - - Code coverage report for All files - - - - - - - - - -
-
-

All files

-
- -
- 82.22% - Statements - 2443/2971 -
- - -
- 59.62% - Branches - 539/904 -
- - -
- 83.99% - Functions - 425/506 -
- - -
- 82.15% - Lines - 2297/2796 -
- - -
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

- -
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
FileStatementsBranchesFunctionsLines
commands -
-
18.51%15/810%0/320%0/519.73%15/76
constants -
-
100%18/18100%2/2100%1/1100%17/17
jest/mocks -
-
100%54/54100%14/14100%12/12100%54/54
services -
-
86.17%106/12355.88%19/3488.23%15/1787.93%102/116
services/FileManagement -
-
85.2%265/31160.29%41/6890.19%46/5185.27%249/292
services/LLM -
-
88.92%289/32569.38%68/9892.42%61/6688.85%271/305
services/LLM/actions -
-
89.03%731/82170.86%163/23091.47%118/12989.43%686/767
services/LLM/actions/blueprints -
-
77.46%55/718.1%3/3720%4/2077.46%55/71
services/LLM/actions/core -
-
79.27%88/11160.46%26/4392.59%25/2777.88%81/104
services/LLM/actions/types -
-
100%6/6100%2/2100%1/1100%6/6
services/LLM/context -
-
88.94%346/38977.86%95/12284.61%66/7888.46%322/364
services/LLM/phases/blueprints -
-
88.46%23/260%0/180%0/388.46%23/26
services/LLM/types -
-
100%4/4100%2/2100%1/1100%4/4
services/LLM/utils -
-
93.7%119/12788.88%40/4595.83%23/2493.8%106/113
services/LLMProviders/OpenRouter -
-
75.21%173/23049.33%37/7591.42%32/3574.77%166/222
services/logging -
-
89.28%25/2875%3/4100%5/588%22/25
services/streaming -
-
45.9%101/22020%13/6540.74%11/2745.49%96/211
services/text -
-
96.15%25/2684.61%11/13100%4/495.65%22/23
-
-
-
- - - - - - - - \ No newline at end of file diff --git a/coverage/lcov-report/jest/mocks/UnitTestMocker.ts.html b/coverage/lcov-report/jest/mocks/UnitTestMocker.ts.html deleted file mode 100644 index 14cd58fe..00000000 --- a/coverage/lcov-report/jest/mocks/UnitTestMocker.ts.html +++ /dev/null @@ -1,562 +0,0 @@ - - - - - - Code coverage report for jest/mocks/UnitTestMocker.ts - - - - - - - - - -
-
-

All files / jest/mocks UnitTestMocker.ts

-
- -
- 100% - Statements - 54/54 -
- - -
- 100% - Branches - 14/14 -
- - -
- 100% - Functions - 12/12 -
- - -
- 100% - Lines - 54/54 -
- - -
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

- -
-
-

-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -18 -19 -20 -21 -22 -23 -24 -25 -26 -27 -28 -29 -30 -31 -32 -33 -34 -35 -36 -37 -38 -39 -40 -41 -42 -43 -44 -45 -46 -47 -48 -49 -50 -51 -52 -53 -54 -55 -56 -57 -58 -59 -60 -61 -62 -63 -64 -65 -66 -67 -68 -69 -70 -71 -72 -73 -74 -75 -76 -77 -78 -79 -80 -81 -82 -83 -84 -85 -86 -87 -88 -89 -90 -91 -92 -93 -94 -95 -96 -97 -98 -99 -100 -101 -102 -103 -104 -105 -106 -107 -108 -109 -110 -111 -112 -113 -114 -115 -116 -117 -118 -119 -120 -121 -122 -123 -124 -125 -126 -127 -128 -129 -130 -131 -132 -133 -134 -135 -136 -137 -138 -139 -140 -141 -142 -143 -144 -145 -146 -147 -148 -149 -150 -151 -152 -153 -154 -155 -156 -157 -158 -159 -160  -  -  -24x -257x -257x -  -  -  -  -  -276x -  -276x -118x -  -276x -  -276x -  -  -  -  -  -  -  -568x -568x -568x -  -568x -568x -  -7x -  -  -561x -  -  -568x -295x -  -568x -  -568x -  -  -  -  -  -  -  -610x -610x -  -  -  -610x -242x -  -610x -  -610x -  -  -  -  -  -  -  -  -  -  -  -  -  -  -11x -  -  -  -  -  -11x -4x -  -11x -  -11x -  -  -  -  -  -  -  -  -  -  -  -  -  -  -114x -114x -  -114x -  -  -  -  -  -114x -  -  -2x -  -  -112x -  -  -114x -20x -  -  -114x -  -114x -  -  -  -  -39x -  -39x -5x -  -39x -  -39x -  -  -  -304x -537x -1178x -1178x -  -  -304x -  -304x -306x -1912x -1912x -  -  -  -  - 
/* eslint-disable @typescript-eslint/ban-ts-comment */
-// UnitTestMocker.ts
- 
-export class UnitTestMocker {
-  private classMocks: Map<any, jest.SpyInstance<any>[]> = new Map();
-  private moduleMocks: Map<any, jest.SpyInstance<any>[]> = new Map();
- 
-  spyPrototype<T, Return>(
-    Class: new (...args: any[]) => T,
-    method: keyof T,
-  ): jest.SpyInstance<Return> {
-    const spy = jest.spyOn(Class.prototype, method as string);
- 
-    if (!this.moduleMocks.has(Class)) {
-      this.moduleMocks.set(Class, []);
-    }
-    this.moduleMocks.get(Class)?.push(spy);
- 
-    return spy;
-  }
- 
-  mockPrototype<T, Return>(
-    Class: new (...args: any[]) => T,
-    method: keyof T,
-    returnValue: Return,
-  ): jest.SpyInstance<Return> {
-    const prototype = Class.prototype;
-    const descriptor = Object.getOwnPropertyDescriptor(prototype, method);
-    const isAsync = descriptor?.value?.constructor?.name === "AsyncFunction";
- 
-    const spy = jest.spyOn(prototype, method as string);
-    if (isAsync && !(returnValue instanceof Promise)) {
-      // If method is async but return value isn't a Promise, wrap it
-      spy.mockResolvedValue(returnValue);
-    } else {
-      // If method is sync or return value is already a Promise, use as is
-      spy.mockReturnValue(returnValue);
-    }
- 
-    if (!this.classMocks.has(Class)) {
-      this.classMocks.set(Class, []);
-    }
-    this.classMocks.get(Class)?.push(spy);
- 
-    return spy;
-  }
- 
-  mockPrototypeWith<T, F extends (...args: any[]) => any>(
-    Class: new (...args: any[]) => T,
-    method: keyof T,
-    implementation: F,
-  ): jest.SpyInstance<ReturnType<F>> {
-    const prototype = Class.prototype;
-    const spy = jest
-      .spyOn(prototype, method as string)
-      .mockImplementation(implementation);
- 
-    if (!this.classMocks.has(Class)) {
-      this.classMocks.set(Class, []);
-    }
-    this.classMocks.get(Class)?.push(spy);
- 
-    return spy;
-  }
- 
-  /**
-   * Mocks a module function with a specific implementation.
-   * @param module The module object containing the function.
-   * @param method The function name to spy on.
-   * @param implementation The implementation to use when the function is called.
-   * @returns The jest spy instance.
-   */
-  mockModuleImplementation<T, F extends (...args: any[]) => any>(
-    module: T,
-    method: keyof T,
-    implementation: F,
-  ): jest.SpyInstance<ReturnType<F>> {
-    const spy = jest
-      //@ts-ignore
-      .spyOn(module, method as string)
-      //@ts-ignore
-      .mockImplementation(implementation);
- 
-    if (!this.moduleMocks.has(module)) {
-      this.moduleMocks.set(module, []);
-    }
-    this.moduleMocks.get(module)?.push(spy);
- 
-    return spy;
-  }
- 
-  /**
-   * Mocks a module function to return a specific value.
-   * @param module The module object containing the function.
-   * @param method The function name to spy on.
-   * @param returnValue The value to return when the function is called.
-   * @returns The jest spy instance.
-   */
-  mockModule<T, Return>(
-    module: T,
-    method: keyof T,
-    returnValue: Return,
-  ): jest.SpyInstance<Return> {
-    const descriptor = Object.getOwnPropertyDescriptor(module, method);
-    const isAsync = descriptor?.value?.constructor?.name === "AsyncFunction";
- 
-    const spy = jest.spyOn(
-      //@ts-ignore
-      module,
-      method as string,
-    ) as jest.SpyInstance<Return>;
- 
-    if (isAsync && !(returnValue instanceof Promise)) {
-      // If method is async but return value isn't a Promise, wrap it
-      //@ts-ignore
-      spy.mockResolvedValue(returnValue);
-    } else {
-      // If method is sync or return value is already a Promise, use as is
-      spy.mockReturnValue(returnValue);
-    }
- 
-    if (!this.moduleMocks.has(module)) {
-      this.moduleMocks.set(module, []);
-    }
- 
-    this.moduleMocks.get(module)?.push(spy);
- 
-    return spy;
-  }
- 
-  spyModule<T>(module: T, method: keyof T): jest.SpyInstance<any> {
-    //@ts-ignore
-    const spy = jest.spyOn(module, method as string);
- 
-    if (!this.moduleMocks.has(module)) {
-      this.moduleMocks.set(module, []);
-    }
-    this.moduleMocks.get(module)?.push(spy);
- 
-    return spy;
-  }
- 
-  clearAllMocks(): void {
-    this.classMocks.forEach((spies) => {
-      spies.forEach((spy) => {
-        spy.mockRestore();
-        spy.mockClear();
-      });
-    });
-    this.classMocks.clear();
- 
-    this.moduleMocks.forEach((spies) => {
-      spies.forEach((spy) => {
-        spy.mockRestore();
-        spy.mockClear();
-      });
-    });
-  }
-}
- 
- -
-
- - - - - - - - \ No newline at end of file diff --git a/coverage/lcov-report/jest/mocks/index.html b/coverage/lcov-report/jest/mocks/index.html deleted file mode 100644 index b63779b2..00000000 --- a/coverage/lcov-report/jest/mocks/index.html +++ /dev/null @@ -1,116 +0,0 @@ - - - - - - Code coverage report for jest/mocks - - - - - - - - - -
-
-

All files jest/mocks

-
- -
- 100% - Statements - 54/54 -
- - -
- 100% - Branches - 14/14 -
- - -
- 100% - Functions - 12/12 -
- - -
- 100% - Lines - 54/54 -
- - -
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

- -
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
FileStatementsBranchesFunctionsLines
UnitTestMocker.ts -
-
100%54/54100%14/14100%12/12100%54/54
-
-
-
- - - - - - - - \ No newline at end of file diff --git a/coverage/lcov-report/prettify.css b/coverage/lcov-report/prettify.css deleted file mode 100644 index b317a7cd..00000000 --- a/coverage/lcov-report/prettify.css +++ /dev/null @@ -1 +0,0 @@ -.pln{color:#000}@media screen{.str{color:#080}.kwd{color:#008}.com{color:#800}.typ{color:#606}.lit{color:#066}.pun,.opn,.clo{color:#660}.tag{color:#008}.atn{color:#606}.atv{color:#080}.dec,.var{color:#606}.fun{color:red}}@media print,projection{.str{color:#060}.kwd{color:#006;font-weight:bold}.com{color:#600;font-style:italic}.typ{color:#404;font-weight:bold}.lit{color:#044}.pun,.opn,.clo{color:#440}.tag{color:#006;font-weight:bold}.atn{color:#404}.atv{color:#060}}pre.prettyprint{padding:2px;border:1px solid #888}ol.linenums{margin-top:0;margin-bottom:0}li.L0,li.L1,li.L2,li.L3,li.L5,li.L6,li.L7,li.L8{list-style-type:none}li.L1,li.L3,li.L5,li.L7,li.L9{background:#eee} diff --git a/coverage/lcov-report/prettify.js b/coverage/lcov-report/prettify.js deleted file mode 100644 index b3225238..00000000 --- a/coverage/lcov-report/prettify.js +++ /dev/null @@ -1,2 +0,0 @@ -/* eslint-disable */ -window.PR_SHOULD_USE_CONTINUATION=true;(function(){var h=["break,continue,do,else,for,if,return,while"];var u=[h,"auto,case,char,const,default,double,enum,extern,float,goto,int,long,register,short,signed,sizeof,static,struct,switch,typedef,union,unsigned,void,volatile"];var p=[u,"catch,class,delete,false,import,new,operator,private,protected,public,this,throw,true,try,typeof"];var l=[p,"alignof,align_union,asm,axiom,bool,concept,concept_map,const_cast,constexpr,decltype,dynamic_cast,explicit,export,friend,inline,late_check,mutable,namespace,nullptr,reinterpret_cast,static_assert,static_cast,template,typeid,typename,using,virtual,where"];var x=[p,"abstract,boolean,byte,extends,final,finally,implements,import,instanceof,null,native,package,strictfp,super,synchronized,throws,transient"];var R=[x,"as,base,by,checked,decimal,delegate,descending,dynamic,event,fixed,foreach,from,group,implicit,in,interface,internal,into,is,lock,object,out,override,orderby,params,partial,readonly,ref,sbyte,sealed,stackalloc,string,select,uint,ulong,unchecked,unsafe,ushort,var"];var r="all,and,by,catch,class,else,extends,false,finally,for,if,in,is,isnt,loop,new,no,not,null,of,off,on,or,return,super,then,true,try,unless,until,when,while,yes";var w=[p,"debugger,eval,export,function,get,null,set,undefined,var,with,Infinity,NaN"];var s="caller,delete,die,do,dump,elsif,eval,exit,foreach,for,goto,if,import,last,local,my,next,no,our,print,package,redo,require,sub,undef,unless,until,use,wantarray,while,BEGIN,END";var I=[h,"and,as,assert,class,def,del,elif,except,exec,finally,from,global,import,in,is,lambda,nonlocal,not,or,pass,print,raise,try,with,yield,False,True,None"];var f=[h,"alias,and,begin,case,class,def,defined,elsif,end,ensure,false,in,module,next,nil,not,or,redo,rescue,retry,self,super,then,true,undef,unless,until,when,yield,BEGIN,END"];var H=[h,"case,done,elif,esac,eval,fi,function,in,local,set,then,until"];var A=[l,R,w,s+I,f,H];var e=/^(DIR|FILE|vector|(de|priority_)?queue|list|stack|(const_)?iterator|(multi)?(set|map)|bitset|u?(int|float)\d*)/;var C="str";var z="kwd";var j="com";var O="typ";var G="lit";var L="pun";var F="pln";var m="tag";var E="dec";var J="src";var P="atn";var n="atv";var N="nocode";var M="(?:^^\\.?|[+-]|\\!|\\!=|\\!==|\\#|\\%|\\%=|&|&&|&&=|&=|\\(|\\*|\\*=|\\+=|\\,|\\-=|\\->|\\/|\\/=|:|::|\\;|<|<<|<<=|<=|=|==|===|>|>=|>>|>>=|>>>|>>>=|\\?|\\@|\\[|\\^|\\^=|\\^\\^|\\^\\^=|\\{|\\||\\|=|\\|\\||\\|\\|=|\\~|break|case|continue|delete|do|else|finally|instanceof|return|throw|try|typeof)\\s*";function k(Z){var ad=0;var S=false;var ac=false;for(var V=0,U=Z.length;V122)){if(!(al<65||ag>90)){af.push([Math.max(65,ag)|32,Math.min(al,90)|32])}if(!(al<97||ag>122)){af.push([Math.max(97,ag)&~32,Math.min(al,122)&~32])}}}}af.sort(function(av,au){return(av[0]-au[0])||(au[1]-av[1])});var ai=[];var ap=[NaN,NaN];for(var ar=0;arat[0]){if(at[1]+1>at[0]){an.push("-")}an.push(T(at[1]))}}an.push("]");return an.join("")}function W(al){var aj=al.source.match(new RegExp("(?:\\[(?:[^\\x5C\\x5D]|\\\\[\\s\\S])*\\]|\\\\u[A-Fa-f0-9]{4}|\\\\x[A-Fa-f0-9]{2}|\\\\[0-9]+|\\\\[^ux0-9]|\\(\\?[:!=]|[\\(\\)\\^]|[^\\x5B\\x5C\\(\\)\\^]+)","g"));var ah=aj.length;var an=[];for(var ak=0,am=0;ak=2&&ai==="["){aj[ak]=X(ag)}else{if(ai!=="\\"){aj[ak]=ag.replace(/[a-zA-Z]/g,function(ao){var ap=ao.charCodeAt(0);return"["+String.fromCharCode(ap&~32,ap|32)+"]"})}}}}return aj.join("")}var aa=[];for(var V=0,U=Z.length;V=0;){S[ac.charAt(ae)]=Y}}var af=Y[1];var aa=""+af;if(!ag.hasOwnProperty(aa)){ah.push(af);ag[aa]=null}}ah.push(/[\0-\uffff]/);V=k(ah)})();var X=T.length;var W=function(ah){var Z=ah.sourceCode,Y=ah.basePos;var ad=[Y,F];var af=0;var an=Z.match(V)||[];var aj={};for(var ae=0,aq=an.length;ae=5&&"lang-"===ap.substring(0,5);if(am&&!(ai&&typeof ai[1]==="string")){am=false;ap=J}if(!am){aj[ag]=ap}}var ab=af;af+=ag.length;if(!am){ad.push(Y+ab,ap)}else{var al=ai[1];var ak=ag.indexOf(al);var ac=ak+al.length;if(ai[2]){ac=ag.length-ai[2].length;ak=ac-al.length}var ar=ap.substring(5);B(Y+ab,ag.substring(0,ak),W,ad);B(Y+ab+ak,al,q(ar,al),ad);B(Y+ab+ac,ag.substring(ac),W,ad)}}ah.decorations=ad};return W}function i(T){var W=[],S=[];if(T.tripleQuotedStrings){W.push([C,/^(?:\'\'\'(?:[^\'\\]|\\[\s\S]|\'{1,2}(?=[^\']))*(?:\'\'\'|$)|\"\"\"(?:[^\"\\]|\\[\s\S]|\"{1,2}(?=[^\"]))*(?:\"\"\"|$)|\'(?:[^\\\']|\\[\s\S])*(?:\'|$)|\"(?:[^\\\"]|\\[\s\S])*(?:\"|$))/,null,"'\""])}else{if(T.multiLineStrings){W.push([C,/^(?:\'(?:[^\\\']|\\[\s\S])*(?:\'|$)|\"(?:[^\\\"]|\\[\s\S])*(?:\"|$)|\`(?:[^\\\`]|\\[\s\S])*(?:\`|$))/,null,"'\"`"])}else{W.push([C,/^(?:\'(?:[^\\\'\r\n]|\\.)*(?:\'|$)|\"(?:[^\\\"\r\n]|\\.)*(?:\"|$))/,null,"\"'"])}}if(T.verbatimStrings){S.push([C,/^@\"(?:[^\"]|\"\")*(?:\"|$)/,null])}var Y=T.hashComments;if(Y){if(T.cStyleComments){if(Y>1){W.push([j,/^#(?:##(?:[^#]|#(?!##))*(?:###|$)|.*)/,null,"#"])}else{W.push([j,/^#(?:(?:define|elif|else|endif|error|ifdef|include|ifndef|line|pragma|undef|warning)\b|[^\r\n]*)/,null,"#"])}S.push([C,/^<(?:(?:(?:\.\.\/)*|\/?)(?:[\w-]+(?:\/[\w-]+)+)?[\w-]+\.h|[a-z]\w*)>/,null])}else{W.push([j,/^#[^\r\n]*/,null,"#"])}}if(T.cStyleComments){S.push([j,/^\/\/[^\r\n]*/,null]);S.push([j,/^\/\*[\s\S]*?(?:\*\/|$)/,null])}if(T.regexLiterals){var X=("/(?=[^/*])(?:[^/\\x5B\\x5C]|\\x5C[\\s\\S]|\\x5B(?:[^\\x5C\\x5D]|\\x5C[\\s\\S])*(?:\\x5D|$))+/");S.push(["lang-regex",new RegExp("^"+M+"("+X+")")])}var V=T.types;if(V){S.push([O,V])}var U=(""+T.keywords).replace(/^ | $/g,"");if(U.length){S.push([z,new RegExp("^(?:"+U.replace(/[\s,]+/g,"|")+")\\b"),null])}W.push([F,/^\s+/,null," \r\n\t\xA0"]);S.push([G,/^@[a-z_$][a-z_$@0-9]*/i,null],[O,/^(?:[@_]?[A-Z]+[a-z][A-Za-z_$@0-9]*|\w+_t\b)/,null],[F,/^[a-z_$][a-z_$@0-9]*/i,null],[G,new RegExp("^(?:0x[a-f0-9]+|(?:\\d(?:_\\d+)*\\d*(?:\\.\\d*)?|\\.\\d\\+)(?:e[+\\-]?\\d+)?)[a-z]*","i"),null,"0123456789"],[F,/^\\[\s\S]?/,null],[L,/^.[^\s\w\.$@\'\"\`\/\#\\]*/,null]);return g(W,S)}var K=i({keywords:A,hashComments:true,cStyleComments:true,multiLineStrings:true,regexLiterals:true});function Q(V,ag){var U=/(?:^|\s)nocode(?:\s|$)/;var ab=/\r\n?|\n/;var ac=V.ownerDocument;var S;if(V.currentStyle){S=V.currentStyle.whiteSpace}else{if(window.getComputedStyle){S=ac.defaultView.getComputedStyle(V,null).getPropertyValue("white-space")}}var Z=S&&"pre"===S.substring(0,3);var af=ac.createElement("LI");while(V.firstChild){af.appendChild(V.firstChild)}var W=[af];function ae(al){switch(al.nodeType){case 1:if(U.test(al.className)){break}if("BR"===al.nodeName){ad(al);if(al.parentNode){al.parentNode.removeChild(al)}}else{for(var an=al.firstChild;an;an=an.nextSibling){ae(an)}}break;case 3:case 4:if(Z){var am=al.nodeValue;var aj=am.match(ab);if(aj){var ai=am.substring(0,aj.index);al.nodeValue=ai;var ah=am.substring(aj.index+aj[0].length);if(ah){var ak=al.parentNode;ak.insertBefore(ac.createTextNode(ah),al.nextSibling)}ad(al);if(!ai){al.parentNode.removeChild(al)}}}break}}function ad(ak){while(!ak.nextSibling){ak=ak.parentNode;if(!ak){return}}function ai(al,ar){var aq=ar?al.cloneNode(false):al;var ao=al.parentNode;if(ao){var ap=ai(ao,1);var an=al.nextSibling;ap.appendChild(aq);for(var am=an;am;am=an){an=am.nextSibling;ap.appendChild(am)}}return aq}var ah=ai(ak.nextSibling,0);for(var aj;(aj=ah.parentNode)&&aj.nodeType===1;){ah=aj}W.push(ah)}for(var Y=0;Y=S){ah+=2}if(V>=ap){Z+=2}}}var t={};function c(U,V){for(var S=V.length;--S>=0;){var T=V[S];if(!t.hasOwnProperty(T)){t[T]=U}else{if(window.console){console.warn("cannot override language handler %s",T)}}}}function q(T,S){if(!(T&&t.hasOwnProperty(T))){T=/^\s*]*(?:>|$)/],[j,/^<\!--[\s\S]*?(?:-\->|$)/],["lang-",/^<\?([\s\S]+?)(?:\?>|$)/],["lang-",/^<%([\s\S]+?)(?:%>|$)/],[L,/^(?:<[%?]|[%?]>)/],["lang-",/^]*>([\s\S]+?)<\/xmp\b[^>]*>/i],["lang-js",/^]*>([\s\S]*?)(<\/script\b[^>]*>)/i],["lang-css",/^]*>([\s\S]*?)(<\/style\b[^>]*>)/i],["lang-in.tag",/^(<\/?[a-z][^<>]*>)/i]]),["default-markup","htm","html","mxml","xhtml","xml","xsl"]);c(g([[F,/^[\s]+/,null," \t\r\n"],[n,/^(?:\"[^\"]*\"?|\'[^\']*\'?)/,null,"\"'"]],[[m,/^^<\/?[a-z](?:[\w.:-]*\w)?|\/?>$/i],[P,/^(?!style[\s=]|on)[a-z](?:[\w:-]*\w)?/i],["lang-uq.val",/^=\s*([^>\'\"\s]*(?:[^>\'\"\s\/]|\/(?=\s)))/],[L,/^[=<>\/]+/],["lang-js",/^on\w+\s*=\s*\"([^\"]+)\"/i],["lang-js",/^on\w+\s*=\s*\'([^\']+)\'/i],["lang-js",/^on\w+\s*=\s*([^\"\'>\s]+)/i],["lang-css",/^style\s*=\s*\"([^\"]+)\"/i],["lang-css",/^style\s*=\s*\'([^\']+)\'/i],["lang-css",/^style\s*=\s*([^\"\'>\s]+)/i]]),["in.tag"]);c(g([],[[n,/^[\s\S]+/]]),["uq.val"]);c(i({keywords:l,hashComments:true,cStyleComments:true,types:e}),["c","cc","cpp","cxx","cyc","m"]);c(i({keywords:"null,true,false"}),["json"]);c(i({keywords:R,hashComments:true,cStyleComments:true,verbatimStrings:true,types:e}),["cs"]);c(i({keywords:x,cStyleComments:true}),["java"]);c(i({keywords:H,hashComments:true,multiLineStrings:true}),["bsh","csh","sh"]);c(i({keywords:I,hashComments:true,multiLineStrings:true,tripleQuotedStrings:true}),["cv","py"]);c(i({keywords:s,hashComments:true,multiLineStrings:true,regexLiterals:true}),["perl","pl","pm"]);c(i({keywords:f,hashComments:true,multiLineStrings:true,regexLiterals:true}),["rb"]);c(i({keywords:w,cStyleComments:true,regexLiterals:true}),["js"]);c(i({keywords:r,hashComments:3,cStyleComments:true,multilineStrings:true,tripleQuotedStrings:true,regexLiterals:true}),["coffee"]);c(g([],[[C,/^[\s\S]+/]]),["regex"]);function d(V){var U=V.langExtension;try{var S=a(V.sourceNode);var T=S.sourceCode;V.sourceCode=T;V.spans=S.spans;V.basePos=0;q(U,T)(V);D(V)}catch(W){if("console" in window){console.log(W&&W.stack?W.stack:W)}}}function y(W,V,U){var S=document.createElement("PRE");S.innerHTML=W;if(U){Q(S,U)}var T={langExtension:V,numberLines:U,sourceNode:S};d(T);return S.innerHTML}function b(ad){function Y(af){return document.getElementsByTagName(af)}var ac=[Y("pre"),Y("code"),Y("xmp")];var T=[];for(var aa=0;aa=0){var ah=ai.match(ab);var am;if(!ah&&(am=o(aj))&&"CODE"===am.tagName){ah=am.className.match(ab)}if(ah){ah=ah[1]}var al=false;for(var ak=aj.parentNode;ak;ak=ak.parentNode){if((ak.tagName==="pre"||ak.tagName==="code"||ak.tagName==="xmp")&&ak.className&&ak.className.indexOf("prettyprint")>=0){al=true;break}}if(!al){var af=aj.className.match(/\blinenums\b(?::(\d+))?/);af=af?af[1]&&af[1].length?+af[1]:true:false;if(af){Q(aj,af)}S={langExtension:ah,sourceNode:aj,numberLines:af};d(S)}}}if(X]*(?:>|$)/],[PR.PR_COMMENT,/^<\!--[\s\S]*?(?:-\->|$)/],[PR.PR_PUNCTUATION,/^(?:<[%?]|[%?]>)/],["lang-",/^<\?([\s\S]+?)(?:\?>|$)/],["lang-",/^<%([\s\S]+?)(?:%>|$)/],["lang-",/^]*>([\s\S]+?)<\/xmp\b[^>]*>/i],["lang-handlebars",/^]*type\s*=\s*['"]?text\/x-handlebars-template['"]?\b[^>]*>([\s\S]*?)(<\/script\b[^>]*>)/i],["lang-js",/^]*>([\s\S]*?)(<\/script\b[^>]*>)/i],["lang-css",/^]*>([\s\S]*?)(<\/style\b[^>]*>)/i],["lang-in.tag",/^(<\/?[a-z][^<>]*>)/i],[PR.PR_DECLARATION,/^{{[#^>/]?\s*[\w.][^}]*}}/],[PR.PR_DECLARATION,/^{{&?\s*[\w.][^}]*}}/],[PR.PR_DECLARATION,/^{{{>?\s*[\w.][^}]*}}}/],[PR.PR_COMMENT,/^{{![^}]*}}/]]),["handlebars","hbs"]);PR.registerLangHandler(PR.createSimpleLexer([[PR.PR_PLAIN,/^[ \t\r\n\f]+/,null," \t\r\n\f"]],[[PR.PR_STRING,/^\"(?:[^\n\r\f\\\"]|\\(?:\r\n?|\n|\f)|\\[\s\S])*\"/,null],[PR.PR_STRING,/^\'(?:[^\n\r\f\\\']|\\(?:\r\n?|\n|\f)|\\[\s\S])*\'/,null],["lang-css-str",/^url\(([^\)\"\']*)\)/i],[PR.PR_KEYWORD,/^(?:url|rgb|\!important|@import|@page|@media|@charset|inherit)(?=[^\-\w]|$)/i,null],["lang-css-kw",/^(-?(?:[_a-z]|(?:\\[0-9a-f]+ ?))(?:[_a-z0-9\-]|\\(?:\\[0-9a-f]+ ?))*)\s*:/i],[PR.PR_COMMENT,/^\/\*[^*]*\*+(?:[^\/*][^*]*\*+)*\//],[PR.PR_COMMENT,/^(?:)/],[PR.PR_LITERAL,/^(?:\d+|\d*\.\d+)(?:%|[a-z]+)?/i],[PR.PR_LITERAL,/^#(?:[0-9a-f]{3}){1,2}/i],[PR.PR_PLAIN,/^-?(?:[_a-z]|(?:\\[\da-f]+ ?))(?:[_a-z\d\-]|\\(?:\\[\da-f]+ ?))*/i],[PR.PR_PUNCTUATION,/^[^\s\w\'\"]+/]]),["css"]);PR.registerLangHandler(PR.createSimpleLexer([],[[PR.PR_KEYWORD,/^-?(?:[_a-z]|(?:\\[\da-f]+ ?))(?:[_a-z\d\-]|\\(?:\\[\da-f]+ ?))*/i]]),["css-kw"]);PR.registerLangHandler(PR.createSimpleLexer([],[[PR.PR_STRING,/^[^\)\"\']+/]]),["css-str"]); diff --git a/coverage/lcov-report/services/ConfigService.ts.html b/coverage/lcov-report/services/ConfigService.ts.html deleted file mode 100644 index 3c228999..00000000 --- a/coverage/lcov-report/services/ConfigService.ts.html +++ /dev/null @@ -1,643 +0,0 @@ - - - - - - Code coverage report for services/ConfigService.ts - - - - - - - - - -
-
-

All files / services ConfigService.ts

-
- -
- 100% - Statements - 32/32 -
- - -
- 80% - Branches - 8/10 -
- - -
- 100% - Functions - 4/4 -
- - -
- 100% - Lines - 30/30 -
- - -
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

- -
-
-

-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -18 -19 -20 -21 -22 -23 -24 -25 -26 -27 -28 -29 -30 -31 -32 -33 -34 -35 -36 -37 -38 -39 -40 -41 -42 -43 -44 -45 -46 -47 -48 -49 -50 -51 -52 -53 -54 -55 -56 -57 -58 -59 -60 -61 -62 -63 -64 -65 -66 -67 -68 -69 -70 -71 -72 -73 -74 -75 -76 -77 -78 -79 -80 -81 -82 -83 -84 -85 -86 -87 -88 -89 -90 -91 -92 -93 -94 -95 -96 -97 -98 -99 -100 -101 -102 -103 -104 -105 -106 -107 -108 -109 -110 -111 -112 -113 -114 -115 -116 -117 -118 -119 -120 -121 -122 -123 -124 -125 -126 -127 -128 -129 -130 -131 -132 -133 -134 -135 -136 -137 -138 -139 -140 -141 -142 -143 -144 -145 -146 -147 -148 -149 -150 -151 -152 -153 -154 -155 -156 -157 -158 -159 -160 -161 -162 -163 -164 -165 -166 -167 -168 -169 -170 -171 -172 -173 -174 -175 -176 -177 -178 -179 -180 -181 -182 -183 -184 -185 -186 -18730x -30x -30x -30x -30x -  -30x -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -30x -531x -531x -  -  -2x -  -  -  -2x -  -2x -  -  -  -2x -  -  -  -  -3x -2x -  -2x -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -2x -  -  -  -2x -  -  -2x -  -  -  -  -  -2x -  -2x -  -  -  -  -  -  -270x -1x -  -  -270x -270x -  -270x -  -270x -2x -  -  -  -2x -  -  -268x -  -  - 
import chalk from "chalk";
-import * as fs from "fs";
-import * as path from "path";
-import { autoInjectable } from "tsyringe";
-import { z } from "zod";
- 
-const configSchema = z.object({
-  provider: z.string(),
-  customInstructions: z.string().optional(),
-  customInstructionsPath: z.string().optional(),
-  interactive: z.boolean(),
-  stream: z.boolean(),
-  debug: z.boolean(),
-  options: z.string(),
-  openRouterApiKey: z.string(),
-  appUrl: z.string().optional().default("https://localhost:8080"),
-  appName: z.string().optional().default("MyApp"),
-  autoScaler: z.boolean().optional(),
-  autoScaleMaxTryPerModel: z.number().optional(),
-  includeAllFilesOnEnvToContext: z.boolean().optional(),
-  // Phase-specific model configurations
-  discoveryModel: z.string().optional().default("google/gemini-flash-1.5-8b"),
-  strategyModel: z.string().optional().default("qwen/qwq-32b-preview"),
-  executeModel: z
-    .string()
-    .optional()
-    .default("anthropic/claude-3.5-sonnet:beta"),
-  autoScaleAvailableModels: z.array(
-    z.object({
-      id: z.string(),
-      description: z.string(),
-      maxWriteTries: z.number(),
-      maxGlobalTries: z.number(),
-    }),
-  ),
-  runAllTestsCmd: z.string().optional(),
-  runOneTestCmd: z.string().optional(),
-  runTypeCheckCmd: z.string().optional(),
-  enableConversationLog: z.boolean().optional(),
-  logDirectory: z.string().optional(),
-  directoryScanner: z
-    .object({
-      defaultIgnore: z
-        .array(z.string())
-        .default(["dist", "coverage", ".next", "build", ".cache", ".husky"]),
-      maxDepth: z.number().default(8),
-      allFiles: z.boolean().default(true),
-      directoryFirst: z.boolean().default(true),
-      excludeDirectories: z.boolean().default(false),
-    })
-    .default({
-      defaultIgnore: ["dist", "coverage", ".next", "build", ".cache", ".husky"],
-      maxDepth: 8,
-      allFiles: true,
-      directoryFirst: true,
-      excludeDirectories: false,
-    }),
-});
- 
-export type Config = z.infer<typeof configSchema>;
- 
-@autoInjectable()
-export class ConfigService {
-  private readonly CONFIG_PATH = path.resolve("crkdrc.json");
-  private readonly GITIGNORE_PATH = path.resolve(".gitignore");
- 
-  private ensureGitIgnore(): void {
-    const gitignoreContent = fs.existsSync(this.GITIGNORE_PATH)
-      ? fs.readFileSync(this.GITIGNORE_PATH, "utf-8")
-      : "";
- 
-    if (!gitignoreContent.includes("crkdrc.json")) {
-      const updatedContent =
-        gitignoreContent.endsWith("\n") || gitignoreContent === ""
-          ? `${gitignoreContent}crkdrc.json\n`
-          : `${gitignoreContent}\ncrkdrc.json\n`;
- 
-      fs.writeFileSync(this.GITIGNORE_PATH, updatedContent);
-    }
-  }
- 
-  public createDefaultConfig(): void {
-    if (!fs.existsSync(this.CONFIG_PATH)) {
-      console.log("Creating default crkdrc.json configuration...");
- 
-      const defaultConfig = {
-        provider: "open-router",
-        customInstructions: "Follow clean code principles",
-        customInstructionsPath: "",
-        interactive: true,
-        stream: true,
-        debug: false,
-        options:
-          "temperature=0,top_p=0.1,top_k=1,frequence_penalty=0.0,presence_penalty=0.0,repetition_penalty=1.0",
-        openRouterApiKey: "",
-        appUrl: "https://localhost:8080",
-        appName: "MyCrackedApp",
-        autoScaler: true,
-        autoScaleMaxTryPerModel: 2,
-        // Phase-specific model configurations
-        discoveryModel: "google/gemini-flash-1.5-8b",
-        strategyModel: "qwen/qwq-32b-preview",
-        executeModel: "anthropic/claude-3.5-sonnet:beta",
-        includeAllFilesOnEnvToContext: false,
-        autoScaleAvailableModels: [
-          {
-            id: "qwen/qwen-2.5-coder-32b-instruct",
-            description: "Cheap, fast, slightly better than GPT4o-mini",
-            maxWriteTries: 5,
-            maxGlobalTries: 10,
-          },
-          {
-            id: "anthropic/claude-3.5-sonnet:beta",
-            description: "Scaled model for retry attempts",
-            maxWriteTries: 5,
-            maxGlobalTries: 15,
-          },
-          {
-            id: "openai/gpt-4o-2024-11-20",
-            description: "Scaled model for retry attempts",
-            maxWriteTries: 2,
-            maxGlobalTries: 20,
-          },
-        ],
-        runAllTestsCmd: "yarn test",
-        runOneTestCmd: "yarn test {relativeTestPath}",
-        runTypeCheckCmd: "yarn typecheck",
-        enableConversationLog: false,
-        logDirectory: "logs",
-        directoryScanner: {
-          defaultIgnore: [
-            "dist",
-            "coverage",
-            ".next",
-            "build",
-            ".cache",
-            ".husky",
-          ],
-          maxDepth: 8,
-          allFiles: true,
-          directoryFirst: true,
-          excludeDirectories: false,
-        },
-      };
-      fs.writeFileSync(
-        this.CONFIG_PATH,
-        JSON.stringify(defaultConfig, null, 4),
-      );
-      console.log(
-        "Default crkdrc.json configuration created. Please adjust it.",
-      );
-      console.log(
-        chalk.yellow(
-          "Warning: No OpenRouter API key provided. Please add it to crkdrc.json.",
-        ),
-      );
- 
-      this.ensureGitIgnore();
- 
-      chalk.green(
-        "CrackedDevCLI config generated. Please, add Provider and API Key to crkdrc.json.",
-      );
-    }
-  }
- 
-  public getConfig(): Config {
-    if (!fs.existsSync(this.CONFIG_PATH)) {
-      this.createDefaultConfig();
-    }
- 
-    const rawData = fs.readFileSync(this.CONFIG_PATH, "utf-8");
-    const config = JSON.parse(rawData);
- 
-    const parsedConfig = configSchema.safeParse(config);
- 
-    if (!parsedConfig.success) {
-      console.error(
-        "Invalid configuration in crkdrc.json:",
-        parsedConfig.error,
-      );
-      throw new Error("Invalid configuration in crkdrc.json");
-    }
- 
-    return parsedConfig.data;
-  }
-}
- 
- -
-
- - - - - - - - \ No newline at end of file diff --git a/coverage/lcov-report/services/CrackedAgent.ts.html b/coverage/lcov-report/services/CrackedAgent.ts.html deleted file mode 100644 index b09881b6..00000000 --- a/coverage/lcov-report/services/CrackedAgent.ts.html +++ /dev/null @@ -1,934 +0,0 @@ - - - - - - Code coverage report for services/CrackedAgent.ts - - - - - - - - - -
-
-

All files / services CrackedAgent.ts

-
- -
- 81.31% - Statements - 74/91 -
- - -
- 45.83% - Branches - 11/24 -
- - -
- 84.61% - Functions - 11/13 -
- - -
- 83.72% - Lines - 72/86 -
- - -
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

- -
-
-

-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -18 -19 -20 -21 -22 -23 -24 -25 -26 -27 -28 -29 -30 -31 -32 -33 -34 -35 -36 -37 -38 -39 -40 -41 -42 -43 -44 -45 -46 -47 -48 -49 -50 -51 -52 -53 -54 -55 -56 -57 -58 -59 -60 -61 -62 -63 -64 -65 -66 -67 -68 -69 -70 -71 -72 -73 -74 -75 -76 -77 -78 -79 -80 -81 -82 -83 -84 -85 -86 -87 -88 -89 -90 -91 -92 -93 -94 -95 -96 -97 -98 -99 -100 -101 -102 -103 -104 -105 -106 -107 -108 -109 -110 -111 -112 -113 -114 -115 -116 -117 -118 -119 -120 -121 -122 -123 -124 -125 -126 -127 -128 -129 -130 -131 -132 -133 -134 -135 -136 -137 -138 -139 -140 -141 -142 -143 -144 -145 -146 -147 -148 -149 -150 -151 -152 -153 -154 -155 -156 -157 -158 -159 -160 -161 -162 -163 -164 -165 -166 -167 -168 -169 -170 -171 -172 -173 -174 -175 -176 -177 -178 -179 -180 -181 -182 -183 -184 -185 -186 -187 -188 -189 -190 -191 -192 -193 -194 -195 -196 -197 -198 -199 -200 -201 -202 -203 -204 -205 -206 -207 -208 -209 -210 -211 -212 -213 -214 -215 -216 -217 -218 -219 -220 -221 -222 -223 -224 -225 -226 -227 -228 -229 -230 -231 -232 -233 -234 -235 -236 -237 -238 -239 -240 -241 -242 -243 -244 -245 -246 -247 -248 -249 -250 -251 -252 -253 -254 -255 -256 -257 -258 -259 -260 -261 -262 -263 -264 -265 -266 -267 -268 -269 -270 -271 -272 -273 -274 -275 -276 -277 -278 -279 -280 -281 -282 -283 -2842x -2x -2x -  -2x -2x -2x -2x -2x -2x -2x -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -2x -  -21x -21x -  -  -21x -21x -21x -21x -21x -21x -21x -  -  -  -  -  -  -18x -  -18x -18x -  -18x -  -  -  -  -  -  -18x -18x -  -  -18x -  -  -  -  -18x -1x -  -  -  -  -  -  -  -17x -  -  -  -  -  -  -17x -  -  -  -18x -  -  -  -  -  -  -  -  -  -  -18x -18x -18x -18x -  -18x -1x -  -  -18x -18x -  -18x -  -  -  -18x -18x -  -  -  -  -  -  -  -  -18x -  -18x -18x -1x -  -  -  -  -18x -2x -  -  -2x -  -  -18x -16x -  -  -  -  -  -  -  -  -  -1x -1x -  -  -  -1x -1x -1x -  -  -  -1x -  -1x -  -  -1x -  -  -  -  -  -  -1x -  -  -  -  -  -  -  -  -  -  -  -17x -  -17x -  -  -  -  -17x -  -  -17x -  -17x -  -  -  -  -  -  -  -  -  -  -  -  -  -  -18x -18x -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -18x -  -  -  -  -  -  -1x -  -  -  -2x -2x -  -  - 
import { DEFAULT_INSTRUCTIONS } from "@constants/defaultInstructions";
-import { FileReader } from "@services/FileManagement/FileReader";
-import { ActionsParser } from "@services/LLM/actions/ActionsParser";
-import { ILLMProvider } from "@services/LLM/ILLMProvider";
-import { LLMContextCreator } from "@services/LLM/LLMContextCreator";
-import { LLMProvider, LLMProviderType } from "@services/LLM/LLMProvider";
-import { DebugLogger } from "@services/logging/DebugLogger";
-import { StreamHandler } from "@services/streaming/StreamHandler";
-import { autoInjectable, singleton } from "tsyringe";
-import { ModelManager } from "./LLM/ModelManager";
-import { PhaseManager } from "./LLM/PhaseManager";
- 
-export interface CrackedAgentOptions {
-  root?: string;
-  instructionsPath?: string;
-  instructions?: string;
-  provider?: LLMProviderType;
-  stream?: boolean;
-  debug?: boolean;
-  options?: Record<string, unknown>;
-  clearContext?: boolean;
-  autoScaler?: boolean;
-}
- 
-export interface ExecutionResult {
-  response: string;
-  actions?: Array<{ action: string; result: any }>;
-}
- 
-@autoInjectable()
-@singleton()
-export class CrackedAgent {
-  private llm!: ILLMProvider;
-  private isFirstInteraction: boolean = true;
-  private currentModel: string = "";
- 
-  constructor(
-    private fileReader: FileReader,
-    private contextCreator: LLMContextCreator,
-    private debugLogger: DebugLogger,
-    private actionsParser: ActionsParser,
-    private streamHandler: StreamHandler,
-    private phaseManager: PhaseManager,
-    private modelManager: ModelManager,
-  ) {}
- 
-  async execute(
-    message: string,
-    options: CrackedAgentOptions,
-  ): Promise<ExecutionResult> {
-    this.phaseManager.initializePhaseConfigs();
- 
-    const finalOptions = await this.setupExecution(options);
-    this.currentModel = this.modelManager.getCurrentModel();
- 
-    const formattedMessage = await this.contextCreator.create(
-      message,
-      finalOptions.root,
-      this.isFirstInteraction,
-    );
- 
-    // Update isFirstInteraction before returning
-    if (this.isFirstInteraction) {
-      this.isFirstInteraction = false;
-    }
- 
-    this.debugLogger.log("Message", "Sending message to LLM", {
-      message: formattedMessage,
-      conversationHistory: this.llm.getConversationContext(),
-    });
- 
-    if (finalOptions.stream) {
-      return await this.handleStreamExecution(
-        formattedMessage,
-        this.currentModel,
-        finalOptions.options,
-        finalOptions.stream,
-      );
-    }
- 
-    const result = await this.handleNormalExecution(
-      formattedMessage,
-      this.currentModel,
-      finalOptions.options,
-      finalOptions.stream,
-    );
- 
-    return result;
-  }
- 
-  private async setupExecution(options: CrackedAgentOptions) {
-    const finalOptions = {
-      root: process.cwd(),
-      provider: LLMProviderType.OpenRouter,
-      stream: false,
-      debug: false,
-      options: {},
-      clearContext: false,
-      autoScaler: false,
-      ...options,
-    };
- 
-    this.debugLogger.setDebug(finalOptions.debug);
-    this.llm = LLMProvider.getInstance(finalOptions.provider);
-    this.streamHandler.reset();
-    this.actionsParser.reset();
- 
-    if (finalOptions.clearContext) {
-      this.clearConversationHistory();
-    }
- 
-    await this.validateModel(this.modelManager.getCurrentModel());
-    await this.setupInstructions(finalOptions);
- 
-    return finalOptions;
-  }
- 
-  private async validateModel(model: string) {
-    const isValidModel = await this.llm.validateModel(model);
-    Iif (!isValidModel) {
-      const availableModels = await this.llm.getAvailableModels();
-      throw new Error(
-        `Invalid model: ${model}. Available models: ${availableModels.join(", ")}`,
-      );
-    }
-  }
- 
-  private async setupInstructions(options: CrackedAgentOptions) {
-    Iif (!this.isFirstInteraction) return;
- 
-    let instructions = options.instructions;
-    if (options.instructionsPath) {
-      instructions = await this.fileReader.readInstructionsFile(
-        options.instructionsPath,
-      );
-    }
- 
-    if (instructions) {
-      this.debugLogger.log("Instructions", "Adding system instructions", {
-        instructions,
-      });
-      this.llm.addSystemInstructions(instructions);
-    }
- 
-    if (!instructions) {
-      this.llm.addSystemInstructions(DEFAULT_INSTRUCTIONS);
-    }
-  }
- 
-  private async handleStreamExecution(
-    message: string,
-    model: string,
-    options?: Record<string, unknown>,
-    stream?: boolean,
-  ): Promise<ExecutionResult> {
-    let response = "";
-    await this.llm.streamMessage(
-      model,
-      message,
-      async (chunk: string) => {
-        response += chunk;
-        this.actionsParser.appendToBuffer(chunk);
-        process.stdout.write(chunk);
-      },
-      options,
-    );
-    process.stdout.write("\n");
- 
-    Iif (!response) return { response: "" };
- 
-    const { actions = [], followupResponse } =
-      await this.parseAndExecuteWithCallback(
-        this.actionsParser.buffer,
-        model,
-        options,
-        stream,
-      );
- 
-    return {
-      response: followupResponse || response,
-      actions,
-    };
-  }
- 
-  private async handleNormalExecution(
-    message: string,
-    model: string,
-    options?: Record<string, unknown>,
-    stream?: boolean,
-  ): Promise<ExecutionResult> {
-    const response = await this.llm.sendMessage(model, message, options);
- 
-    this.debugLogger.log("Response", "Received LLM response", {
-      response,
-      conversationHistory: this.llm.getConversationContext(),
-    });
- 
-    Iif (!response) return { response: "" };
- 
-    const { actions = [], followupResponse } =
-      await this.parseAndExecuteWithCallback(response, model, options, stream);
- 
-    return {
-      response: followupResponse || response,
-      actions,
-    };
-  }
- 
-  private async parseAndExecuteWithCallback(
-    response: string,
-    model: string,
-    options?: Record<string, unknown>,
-    stream?: boolean,
-  ): Promise<{
-    actions: Array<{ action: string; result: any }>;
-    followupResponse?: string;
-  }> {
-    this.actionsParser.reset();
-    const result = await this.actionsParser.parseAndExecuteActions(
-      response,
-      model,
-      async (followupMsg: string) => {
-        const formattedFollowup = await this.contextCreator.create(
-          followupMsg,
-          process.cwd(),
-          false,
-        );
- 
-        if (stream) {
-          let followupResponse = "";
-          await this.llm.streamMessage(
-            this.currentModel,
-            formattedFollowup,
-            async (chunk: string) => {
-              followupResponse += chunk;
-              process.stdout.write(chunk);
-            },
-            options,
-          );
-          process.stdout.write("\n");
- 
-          const followupResult = await this.parseAndExecuteWithCallback(
-            followupResponse,
-            this.currentModel,
-            options,
-            stream,
-          );
- 
-          return followupResult.followupResponse || followupResponse;
-        } else {
-          const followupResponse = await this.llm.sendMessage(
-            this.currentModel,
-            formattedFollowup,
-            options,
-          );
- 
-          const followupResult = await this.parseAndExecuteWithCallback(
-            followupResponse,
-            this.currentModel,
-            options,
-            stream,
-          );
- 
-          return followupResult.followupResponse || followupResponse;
-        }
-      },
-    );
- 
-    return {
-      actions: result?.actions || [],
-      followupResponse: result?.followupResponse,
-    };
-  }
- 
-  getConversationHistory() {
-    return this.llm.getConversationContext();
-  }
- 
-  clearConversationHistory() {
-    this.llm.clearConversationContext();
-    this.isFirstInteraction = true;
-  }
-}
- 
- -
-
- - - - - - - - \ No newline at end of file diff --git a/coverage/lcov-report/services/FileManagement/DirectoryScanner.ts.html b/coverage/lcov-report/services/FileManagement/DirectoryScanner.ts.html deleted file mode 100644 index a6a2954f..00000000 --- a/coverage/lcov-report/services/FileManagement/DirectoryScanner.ts.html +++ /dev/null @@ -1,391 +0,0 @@ - - - - - - Code coverage report for services/FileManagement/DirectoryScanner.ts - - - - - - - - - -
-
-

All files / services/FileManagement DirectoryScanner.ts

-
- -
- 91.17% - Statements - 31/34 -
- - -
- 42.85% - Branches - 6/14 -
- - -
- 100% - Functions - 6/6 -
- - -
- 93.33% - Lines - 28/30 -
- - -
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

- -
-
-

-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -18 -19 -20 -21 -22 -23 -24 -25 -26 -27 -28 -29 -30 -31 -32 -33 -34 -35 -36 -37 -38 -39 -40 -41 -42 -43 -44 -45 -46 -47 -48 -49 -50 -51 -52 -53 -54 -55 -56 -57 -58 -59 -60 -61 -62 -63 -64 -65 -66 -67 -68 -69 -70 -71 -72 -73 -74 -75 -76 -77 -78 -79 -80 -81 -82 -83 -84 -85 -86 -87 -88 -89 -90 -91 -92 -93 -94 -95 -96 -97 -98 -99 -100 -101 -102 -1036x -  -  -  -  -  -6x -6x -6x -  -  -6x -100x -  -100x -100x -  -  -  -  -  -2x -2x -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -191x -  -191x -  -191x -796x -  -789x -789x -  -789x -189x -  -  -  -  -  -  -  -  -600x -  -  -  -191x -  -  -  -  -  -  -2x -2x -2x -2x -  -  -  -2x -  -2x -  -  -  -  -  -  -  -  -2x -  -600x -  -  -  -  -  -  -  -  -  - 
import { ConfigService } from "@services/ConfigService";
-import {
-  IDirectoryScanner,
-  TreeOptions,
-} from "@services/FileManagement/types/DirectoryScannerTypes";
-import { IFileOperationResult } from "@services/FileManagement/types/FileManagementTypes";
-import fs from "fs";
-import path from "path";
-import { autoInjectable, inject } from "tsyringe";
- 
-@autoInjectable()
-export class DirectoryScanner implements IDirectoryScanner {
-  private readonly REQUIRED_IGNORE = ["node_modules", ".git"];
- 
-  constructor(@inject(ConfigService) private configService: ConfigService) {
-    Iif (!configService) {
-      throw new Error("ConfigService is required for DirectoryScanner");
-    }
-  }
- 
-  private get defaultOptions(): TreeOptions {
-    const config = this.configService.getConfig();
-    return {
-      ignore: config.directoryScanner.defaultIgnore,
-      allFiles: config.directoryScanner.allFiles,
-      maxDepth: config.directoryScanner.maxDepth,
-      noreport: true,
-      base: ".",
-      directoryFirst: config.directoryScanner.directoryFirst,
-      excludeDirectories: config.directoryScanner.excludeDirectories,
-    };
-  }
- 
-  private getAllFiles(
-    dirPath: string,
-    basePath: string,
-    arrayOfFiles: string[] = [],
-    ignore: string[] = [],
-    currentDepth: number = 0,
-    maxDepth: number = 4,
-  ): string[] {
-    Iif (currentDepth > maxDepth) return arrayOfFiles;
- 
-    const files = fs.readdirSync(dirPath);
- 
-    files.forEach((file) => {
-      if (ignore.includes(file)) return;
- 
-      const fullPath = path.join(dirPath, file);
-      const relativePath = path.relative(basePath, fullPath);
- 
-      if (fs.statSync(fullPath).isDirectory()) {
-        this.getAllFiles(
-          fullPath,
-          basePath,
-          arrayOfFiles,
-          ignore,
-          currentDepth + 1,
-          maxDepth,
-        );
-      } else {
-        arrayOfFiles.push(relativePath);
-      }
-    });
- 
-    return arrayOfFiles;
-  }
- 
-  public async scan(
-    dirPath: string,
-    options: Partial<TreeOptions> = {},
-  ): Promise<IFileOperationResult> {
-    try {
-      const defaultOptions = this.defaultOptions;
-      const scanOptions = { ...defaultOptions, ...options };
-      const ignore = [
-        ...this.REQUIRED_IGNORE,
-        ...(options.ignore || defaultOptions.ignore),
-      ];
-      const absolutePath = path.resolve(dirPath);
- 
-      const files = this.getAllFiles(
-        absolutePath,
-        absolutePath,
-        [],
-        ignore,
-        0,
-        scanOptions.maxDepth,
-      ).sort();
- 
-      return {
-        success: true,
-        data: files.map((f) => f.trim()).join("\n"),
-      };
-    } catch (error) {
-      return {
-        success: false,
-        error: error instanceof Error ? error : new Error(String(error)),
-      };
-    }
-  }
-}
- 
- -
-
- - - - - - - - \ No newline at end of file diff --git a/coverage/lcov-report/services/FileManagement/Errors.ts.html b/coverage/lcov-report/services/FileManagement/Errors.ts.html deleted file mode 100644 index 414cdbf8..00000000 --- a/coverage/lcov-report/services/FileManagement/Errors.ts.html +++ /dev/null @@ -1,142 +0,0 @@ - - - - - - Code coverage report for services/FileManagement/Errors.ts - - - - - - - - - -
-
-

All files / services/FileManagement Errors.ts

-
- -
- 33.33% - Statements - 3/9 -
- - -
- 100% - Branches - 0/0 -
- - -
- 0% - Functions - 0/3 -
- - -
- 33.33% - Lines - 3/9 -
- - -
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

- -
-
-

-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -18 -19 -203x -  -  -  -  -  -  -3x -  -  -  -  -  -  -3x -  -  -  -  - 
export class FileNotFoundError extends Error {
-      constructor(path: string) {
-        super(`File not found: ${path}`);
-        this.name = "FileNotFoundError";
-      }
-    }
- 
-    export class FileReadError extends Error {
-      constructor(path: string, message: string) {
-        super(`Failed to read file: ${path} - ${message}`);
-        this.name = "FileReadError";
-      }
-    }
- 
-    export class InvalidFileError extends Error {
-      constructor(path: string) {
-        super(`Instructions path must be a file: ${path}`);
-        this.name = "InvalidFileError";
-      }
-    }
- -
-
- - - - - - - - \ No newline at end of file diff --git a/coverage/lcov-report/services/FileManagement/FileOperations.ts.html b/coverage/lcov-report/services/FileManagement/FileOperations.ts.html deleted file mode 100644 index 02f94070..00000000 --- a/coverage/lcov-report/services/FileManagement/FileOperations.ts.html +++ /dev/null @@ -1,811 +0,0 @@ - - - - - - Code coverage report for services/FileManagement/FileOperations.ts - - - - - - - - - -
-
-

All files / services/FileManagement FileOperations.ts

-
- -
- 78.3% - Statements - 83/106 -
- - -
- 50% - Branches - 12/24 -
- - -
- 92.85% - Functions - 13/14 -
- - -
- 77.88% - Lines - 81/104 -
- - -
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

- -
-
-

-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -18 -19 -20 -21 -22 -23 -24 -25 -26 -27 -28 -29 -30 -31 -32 -33 -34 -35 -36 -37 -38 -39 -40 -41 -42 -43 -44 -45 -46 -47 -48 -49 -50 -51 -52 -53 -54 -55 -56 -57 -58 -59 -60 -61 -62 -63 -64 -65 -66 -67 -68 -69 -70 -71 -72 -73 -74 -75 -76 -77 -78 -79 -80 -81 -82 -83 -84 -85 -86 -87 -88 -89 -90 -91 -92 -93 -94 -95 -96 -97 -98 -99 -100 -101 -102 -103 -104 -105 -106 -107 -108 -109 -110 -111 -112 -113 -114 -115 -116 -117 -118 -119 -120 -121 -122 -123 -124 -125 -126 -127 -128 -129 -130 -131 -132 -133 -134 -135 -136 -137 -138 -139 -140 -141 -142 -143 -144 -145 -146 -147 -148 -149 -150 -151 -152 -153 -154 -155 -156 -157 -158 -159 -160 -161 -162 -163 -164 -165 -166 -167 -168 -169 -170 -171 -172 -173 -174 -175 -176 -177 -178 -179 -180 -181 -182 -183 -184 -185 -186 -187 -188 -189 -190 -191 -192 -193 -194 -195 -196 -197 -198 -199 -200 -201 -202 -203 -204 -205 -206 -207 -208 -209 -210 -211 -212 -213 -214 -215 -216 -217 -218 -219 -220 -221 -222 -223 -224 -225 -226 -227 -228 -229 -230 -231 -232 -233 -234 -235 -236 -237 -238 -239 -240 -241 -242 -24317x -17x -  -  -  -  -  -17x -17x -17x -17x -  -  -17x -  -14x -14x -14x -  -  -  -11x -  -  -11x -1x -1x -502x -  -502x -1x -  -501x -  -  -1x -  -  -  -  -10x -10x -  -  -  -  -  -  -  -  -  -  -  -11x -  -  -10x -9x -  -  -  -1x -  -  -  -1x -  -  -  -  -  -  -  -  -  -1x -1x -  -  -  -  -  -  -  -1x -  -  -  -2x -2x -1x -  -  -  -  -  -1x -1x -  -1x -  -  -  -  -3x -3x -1x -  -  -2x -2x -  -2x -4x -4x -4x -1x -1x -  -3x -3x -3x -  -  -  -  -  -  -  -  -2x -1x -  -  -  -  -  -  -  -1x -  -  -  -  -  -  -  -  -  -1x -1x -1x -1x -  -  -  -  -  -  -1x -1x -1x -  -  -  -  -  -1x -1x -  -  -  -  -  -  -  -  -  -1x -1x -1x -  -  -  -  -  -1x -1x -1x -  -  -  -  -  -  -  -  -  -1x -1x -1x -  -  -  -  -  -1x -1x -1x -  -  -  -  -  -  -1x -1x -  -  -  -1x -1x -1x -  -  -  -  -  -1x -1x -  -  -  -  -  -  -1x -  -  -  -  -  - 
import { FileSearch } from "@services/FileManagement/FileSearch";
-import { PathAdjuster } from "@services/FileManagement/PathAdjuster";
-import {
-  IFileOperationResult,
-  IFileOperations,
-  IFileStats,
-} from "@services/FileManagement/types/FileManagementTypes";
-import { DebugLogger } from "@services/logging/DebugLogger";
-import fs from "fs-extra";
-import path from "path";
-import { autoInjectable } from "tsyringe";
- 
-@autoInjectable()
-export class FileOperations implements IFileOperations {
-  constructor(
-    private pathAdjuster: PathAdjuster,
-    private fileSearch: FileSearch,
-    private debugLogger: DebugLogger,
-  ) {}
- 
-  private async ensureInitialized(timeout: number = 5000): Promise<void> {
-    const startTime = Date.now();
- 
-    // Wait for initialization if not already initialized
-    if (!this.pathAdjuster.isInitialized()) {
-      await new Promise<void>((resolve, reject) => {
-        const checkInit = () => {
-          Iif (this.pathAdjuster.isInitialized()) {
-            resolve();
-          } else if (Date.now() - startTime > timeout) {
-            reject(new Error("PathAdjuster initialization timed out"));
-          } else {
-            setTimeout(checkInit, 10);
-          }
-        };
-        checkInit();
-      });
-    }
- 
-    // Check for initialization errors
-    const error = this.pathAdjuster.getInitializationError();
-    Iif (error) {
-      throw error;
-    }
-  }
- 
-  async getAdjustedPath(filePath: string): Promise<string> {
-    await this.ensureInitialized();
-    const adjustedPath = await this.pathAdjuster.adjustPath(filePath);
-    return adjustedPath || filePath;
-  }
- 
-  private async adjustPath(filePath: string): Promise<string> {
-    await this.ensureInitialized();
- 
-    // If path exists, return as is
-    if (await fs.pathExists(filePath)) {
-      return filePath;
-    }
- 
-    // For read operations, try to find similar files
-    const similarFiles = await this.fileSearch.findByName(
-      path.basename(filePath),
-      process.cwd(),
-    );
-    Iif (similarFiles.length > 0) {
-      const bestMatch = similarFiles[0];
-      this.debugLogger.log(
-        "FileOperations",
-        `Found similar file: ${bestMatch} for ${filePath}`,
-      );
-      return bestMatch;
-    }
- 
-    // If no similar files found, try PathAdjuster
-    const adjustedPath = await this.pathAdjuster.adjustPath(filePath);
-    Iif (adjustedPath && (await fs.pathExists(adjustedPath))) {
-      this.debugLogger.log(
-        "FileOperations > PathAdjuster",
-        `Adjusted path: ${adjustedPath}`,
-      );
-      return adjustedPath;
-    }
- 
-    return filePath;
-  }
- 
-  async read(filePath: string): Promise<IFileOperationResult> {
-    try {
-      const adjustedPath = await this.adjustPath(filePath);
-      Iif (!(await fs.pathExists(adjustedPath))) {
-        return {
-          success: false,
-          error: new Error(`File does not exist: ${filePath}`),
-        };
-      }
-      const content = await fs.readFile(adjustedPath, "utf-8");
-      return { success: true, data: content };
-    } catch (error) {
-      return { success: false, error: error as Error };
-    }
-  }
- 
-  async readMultiple(filePaths: string[]): Promise<IFileOperationResult> {
-    try {
-      if (!filePaths?.length) {
-        return { success: false, error: new Error("No files provided") };
-      }
- 
-      const fileContents: string[] = [];
-      const errors: string[] = [];
- 
-      for (const filePath of filePaths) {
-        try {
-          const adjustedPath = await this.adjustPath(filePath);
-          if (!(await fs.pathExists(adjustedPath))) {
-            errors.push(`${filePath}: File does not exist`);
-            continue;
-          }
-          const content = await fs.readFile(adjustedPath, "utf-8");
-          if (content) {
-            fileContents.push(`[File: ${adjustedPath}]\n${content}`);
-          } else E{
-            errors.push(`${adjustedPath}: Empty content`);
-          }
-        } catch (error) {
-          errors.push(`${filePath}: ${(error as Error).message}`);
-        }
-      }
- 
-      if (errors.length > 0) {
-        return {
-          success: false,
-          error: new Error(
-            `Failed to read files: ${errors.join(", ")}. Try using search_file action to find the proper path.`,
-          ),
-        };
-      }
- 
-      return { success: true, data: fileContents.join("\n\n") };
-    } catch (error) {
-      return { success: false, error: error as Error };
-    }
-  }
- 
-  async write(
-    filePath: string,
-    content: string | Buffer,
-  ): Promise<IFileOperationResult> {
-    try {
-      await fs.ensureDir(path.dirname(filePath));
-      await fs.writeFile(filePath, content);
-      return { success: true };
-    } catch (error) {
-      return { success: false, error: error as Error };
-    }
-  }
- 
-  async delete(filePath: string): Promise<IFileOperationResult> {
-    try {
-      const adjustedPath = await this.adjustPath(filePath);
-      Iif (!(await fs.pathExists(adjustedPath))) {
-        return {
-          success: false,
-          error: new Error(`File does not exist: ${filePath}`),
-        };
-      }
-      await fs.remove(adjustedPath);
-      return { success: true };
-    } catch (error) {
-      return { success: false, error: error as Error };
-    }
-  }
- 
-  async copy(
-    source: string,
-    destination: string,
-  ): Promise<IFileOperationResult> {
-    try {
-      const adjustedSource = await this.adjustPath(source);
-      Iif (!(await fs.pathExists(adjustedSource))) {
-        return {
-          success: false,
-          error: new Error(`Source file does not exist: ${source}`),
-        };
-      }
-      await fs.ensureDir(path.dirname(destination));
-      await fs.copy(adjustedSource, destination);
-      return { success: true };
-    } catch (error) {
-      return { success: false, error: error as Error };
-    }
-  }
- 
-  async move(
-    source: string,
-    destination: string,
-  ): Promise<IFileOperationResult> {
-    try {
-      const adjustedSource = await this.adjustPath(source);
-      Iif (!(await fs.pathExists(adjustedSource))) {
-        return {
-          success: false,
-          error: new Error(`Source file does not exist: ${source}`),
-        };
-      }
-      await fs.ensureDir(path.dirname(destination));
-      await fs.move(adjustedSource, destination, { overwrite: true });
-      return { success: true };
-    } catch (error) {
-      return { success: false, error: error as Error };
-    }
-  }
- 
-  async exists(filePath: string): Promise<boolean> {
-    const adjustedPath = await this.adjustPath(filePath);
-    return fs.pathExists(adjustedPath);
-  }
- 
-  async stats(filePath: string): Promise<IFileOperationResult> {
-    try {
-      const adjustedPath = await this.adjustPath(filePath);
-      Iif (!(await fs.pathExists(adjustedPath))) {
-        return {
-          success: false,
-          error: new Error(`File does not exist: ${filePath}`),
-        };
-      }
-      const stats = await fs.stat(adjustedPath);
-      const fileStats: IFileStats = {
-        size: stats.size,
-        createdAt: stats.birthtime,
-        modifiedAt: stats.mtime,
-        isDirectory: stats.isDirectory(),
-        path: adjustedPath,
-      };
-      return { success: true, data: fileStats };
-    } catch (error) {
-      return { success: false, error: error as Error };
-    }
-  }
-}
- 
- -
-
- - - - - - - - \ No newline at end of file diff --git a/coverage/lcov-report/services/FileManagement/FileReader.ts.html b/coverage/lcov-report/services/FileManagement/FileReader.ts.html deleted file mode 100644 index 6809ea69..00000000 --- a/coverage/lcov-report/services/FileManagement/FileReader.ts.html +++ /dev/null @@ -1,196 +0,0 @@ - - - - - - Code coverage report for services/FileManagement/FileReader.ts - - - - - - - - - -
-
-

All files / services/FileManagement FileReader.ts

-
- -
- 87.5% - Statements - 14/16 -
- - -
- 60% - Branches - 3/5 -
- - -
- 100% - Functions - 3/3 -
- - -
- 85.71% - Lines - 12/14 -
- - -
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

- -
-
-

-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -18 -19 -20 -21 -22 -23 -24 -25 -26 -27 -28 -29 -30 -31 -32 -33 -34 -35 -36 -37 -383x -  -  -  -  -3x -3x -  -  -3x -  -2x -2x -1x -  -1x -  -  -  -  -  -  -1x -  -  -  -  -2x -1x -  -  -  -  -  -1x -  -  - 
import {
-  FileNotFoundError,
-  FileReadError,
-  InvalidFileError,
-} from "@services/FileManagement/Errors";
-import { readFile, stat } from "fs/promises";
-import { autoInjectable } from "tsyringe";
- 
-@autoInjectable()
-export class FileReader {
-  public async readInstructionsFile(filePath: string): Promise<string> {
-    try {
-      await this.validateFilePath(filePath);
-      return await this.readFileContent(filePath);
-    } catch (error) {
-      Iif (
-        error instanceof FileNotFoundError ||
-        error instanceof FileReadError ||
-        error instanceof InvalidFileError
-      ) {
-        throw new FileReadError(filePath, error.message);
-      }
-      throw error;
-    }
-  }
- 
-  private async validateFilePath(filePath: string): Promise<void> {
-    const stats = await stat(filePath);
-    Iif (!stats.isFile()) {
-      throw new Error(`Provided path ${filePath} is not a file`);
-    }
-  }
- 
-  private async readFileContent(filePath: string): Promise<string> {
-    return readFile(filePath, "utf-8");
-  }
-}
- 
- -
-
- - - - - - - - \ No newline at end of file diff --git a/coverage/lcov-report/services/FileManagement/FileSearch.ts.html b/coverage/lcov-report/services/FileManagement/FileSearch.ts.html deleted file mode 100644 index aaf9e4c2..00000000 --- a/coverage/lcov-report/services/FileManagement/FileSearch.ts.html +++ /dev/null @@ -1,685 +0,0 @@ - - - - - - Code coverage report for services/FileManagement/FileSearch.ts - - - - - - - - - -
-
-

All files / services/FileManagement FileSearch.ts

-
- -
- 87.34% - Statements - 69/79 -
- - -
- 66.66% - Branches - 4/6 -
- - -
- 91.66% - Functions - 11/12 -
- - -
- 88.88% - Lines - 64/72 -
- - -
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

- -
-
-

-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -18 -19 -20 -21 -22 -23 -24 -25 -26 -27 -28 -29 -30 -31 -32 -33 -34 -35 -36 -37 -38 -39 -40 -41 -42 -43 -44 -45 -46 -47 -48 -49 -50 -51 -52 -53 -54 -55 -56 -57 -58 -59 -60 -61 -62 -63 -64 -65 -66 -67 -68 -69 -70 -71 -72 -73 -74 -75 -76 -77 -78 -79 -80 -81 -82 -83 -84 -85 -86 -87 -88 -89 -90 -91 -92 -93 -94 -95 -96 -97 -98 -99 -100 -101 -102 -103 -104 -105 -106 -107 -108 -109 -110 -111 -112 -113 -114 -115 -116 -117 -118 -119 -120 -121 -122 -123 -124 -125 -126 -127 -128 -129 -130 -131 -132 -133 -134 -135 -136 -137 -138 -139 -140 -141 -142 -143 -144 -145 -146 -147 -148 -149 -150 -151 -152 -153 -154 -155 -156 -157 -158 -159 -160 -161 -162 -163 -164 -165 -166 -167 -168 -169 -170 -171 -172 -173 -174 -175 -176 -177 -178 -179 -180 -181 -182 -183 -184 -185 -186 -187 -188 -189 -190 -191 -192 -193 -194 -195 -196 -197 -198 -199 -200 -201  -  -  -  -19x -19x -19x -19x -19x -19x -  -  -  -  -  -  -  -  -  -  -  -  -  -19x -26x -  -  -48x -48x -48x -5242796x -5242796x -  -48x -  -  -  -  -  -  -2x -2x -  -  -  -  -  -2x -  -2x -6x -6x -  -6x -  -6x -  -  -  -  -  -  -2x -  -  -  -  -  -  -  -  -  -  -10x -10x -  -  -  -  -  -10x -10x -  -10x -48x -48x -48x -  -48x -48x -48x -  -48x -48x -48x -  -48x -  -48x -5242796x -  -  -  -  -  -  -  -48x -12x -  -  -  -  -  -  -  -  -  -10x -  -  -  -  -  -  -  -5x -5x -5x -  -5x -  -  -  -  -  -  -  -5x -  -  -  -  -  -  -  -18x -  -  -  -  -  -  -5x -18x -  -  -5x -  -5x -  -1x -  -  -  -  -  -1x -1x -  -1x -  -  -  -  -1x -  -  -  -4x -  -  -  -  -  -  -  -  -4x -4x -  -4x -3x -3x -  -  -  -  -  -  - 
import {
-  IFileSearch,
-  IFileSearchResult,
-} from "@services/FileManagement/types/FileManagementTypes";
-import fg from "fast-glob";
-import fs from "fs-extra";
-import Fuse from "fuse.js";
-import path from "path";
-import { autoInjectable } from "tsyringe";
-import { DebugLogger } from "../logging/DebugLogger";
- 
-interface FileEntry {
-  fullPath: string;
-  name: string;
-  dir: string;
-}
- 
-interface FuseResult {
-  item: FileEntry;
-  score?: number;
-}
- 
-@autoInjectable()
-export class FileSearch implements IFileSearch {
-  constructor(private debugLogger: DebugLogger) {}
- 
-  private findAllMatches(text: string, searchStr: string): number[] {
-    const positions: number[] = [];
-    let pos = text.indexOf(searchStr);
-    while (pos !== -1) {
-      positions.push(pos);
-      pos = text.indexOf(searchStr, pos + 1);
-    }
-    return positions;
-  }
- 
-  async findByPattern(
-    pattern: string,
-    directory: string,
-  ): Promise<IFileSearchResult[]> {
-    try {
-      const entries = await fg(pattern, {
-        cwd: directory,
-        dot: true,
-        absolute: true,
-      });
- 
-      const results: IFileSearchResult[] = [];
- 
-      for (const entry of entries) {
-        const content = await fs.readFile(entry, "utf-8");
-        const lines = content.split("\n");
- 
-        results.push({
-          path: entry,
-          matches: lines.map((line, index) => ({
-            line: index + 1,
-            content: line,
-          })),
-        });
-      }
- 
-      return results;
-    } catch (error) {
-      console.error("Error in findByPattern:", error);
-      return [];
-    }
-  }
- 
-  async findByContent(
-    searchContent: string,
-    directory: string,
-  ): Promise<IFileSearchResult[]> {
-    try {
-      const entries = await fg("**/*", {
-        cwd: directory,
-        dot: true,
-        absolute: true,
-      });
- 
-      const results: IFileSearchResult[] = [];
-      const searchTarget = searchContent.toLowerCase();
- 
-      for (const entry of entries) {
-        try {
-          const stats = await fs.stat(entry);
-          Iif (!stats.isFile()) continue;
- 
-          const content = await fs.readFile(entry, "utf-8");
-          const lines = content.split("\n");
-          const matches = [];
- 
-          for (let i = 0; i < lines.length; i++) {
-            const line = lines[i];
-            const lineToSearch = line.toLowerCase();
- 
-            const positions = this.findAllMatches(lineToSearch, searchTarget);
- 
-            for (const pos of positions) {
-              matches.push({
-                line: i + 1,
-                content: line,
-                position: pos,
-              });
-            }
-          }
- 
-          if (matches.length > 0) {
-            results.push({
-              path: entry,
-              matches,
-            });
-          }
-        } catch (error) {
-          console.error(`Error processing file ${entry}:`, error);
-        }
-      }
- 
-      return results;
-    } catch (error) {
-      console.error("Error in findByContent:", error);
-      return [];
-    }
-  }
- 
-  async findByName(name: string, directory: string): Promise<string[]> {
-    try {
-      const targetName = path.basename(name);
-      const targetDir = path.dirname(name);
- 
-      this.debugLogger.log("FileSearch", "findByName input", {
-        name,
-        targetName,
-        targetDir,
-        directory,
-      });
- 
-      // Get all files in directory
-      const entries = await fg("**/*", {
-        cwd: directory,
-        dot: true,
-        absolute: true,
-        onlyFiles: true,
-      });
- 
-      // Convert to FileEntry objects
-      const fileEntries: FileEntry[] = entries.map((entry) => ({
-        fullPath: entry,
-        name: path.basename(entry),
-        dir: path.dirname(entry),
-      }));
- 
-      // First try exact name matches
-      const exactMatches = fileEntries.filter(
-        (entry) => entry.name === targetName,
-      );
- 
-      this.debugLogger.log("FileSearch", "exact matches", exactMatches);
- 
-      if (exactMatches.length > 0) {
-        // If we have exact matches, sort by directory similarity
-        const fuse = new Fuse<FileEntry>(exactMatches, {
-          includeScore: true,
-          threshold: 0.3,
-          keys: ["dir"],
-        });
- 
-        const results = fuse.search(targetDir);
-        this.debugLogger.log("FileSearch", "dir similarity results", results);
- 
-        Iif (results.length > 0) {
-          return results.map((result: FuseResult) => result.item.fullPath);
-        }
- 
-        // If no directory matches, return all exact name matches
-        return exactMatches.map((entry) => entry.fullPath);
-      }
- 
-      // If no exact matches, try fuzzy name matching
-      const fuse = new Fuse<FileEntry>(fileEntries, {
-        includeScore: true,
-        threshold: 0.3,
-        keys: [
-          { name: "name", weight: 3 }, // Filename is most important
-          { name: "dir", weight: 1 }, // Directory path has less weight
-        ],
-      });
- 
-      const results = fuse.search(targetName);
-      this.debugLogger.log("FileSearch", "fuzzy search results", results);
- 
-      return results
-        .filter((result: FuseResult) => result.score && result.score < 0.3)
-        .map((result: FuseResult) => result.item.fullPath);
-    } catch (error) {
-      console.error("Error in findByName:", error);
-      return [];
-    }
-  }
-}
- 
- -
-
- - - - - - - - \ No newline at end of file diff --git a/coverage/lcov-report/services/FileManagement/PathAdjuster.ts.html b/coverage/lcov-report/services/FileManagement/PathAdjuster.ts.html deleted file mode 100644 index 5fbb9f90..00000000 --- a/coverage/lcov-report/services/FileManagement/PathAdjuster.ts.html +++ /dev/null @@ -1,547 +0,0 @@ - - - - - - Code coverage report for services/FileManagement/PathAdjuster.ts - - - - - - - - - -
-
-

All files / services/FileManagement PathAdjuster.ts

-
- -
- 97.01% - Statements - 65/67 -
- - -
- 84.21% - Branches - 16/19 -
- - -
- 100% - Functions - 13/13 -
- - -
- 96.82% - Lines - 61/63 -
- - -
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

- -
-
-

-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -18 -19 -20 -21 -22 -23 -24 -25 -26 -27 -28 -29 -30 -31 -32 -33 -34 -35 -36 -37 -38 -39 -40 -41 -42 -43 -44 -45 -46 -47 -48 -49 -50 -51 -52 -53 -54 -55 -56 -57 -58 -59 -60 -61 -62 -63 -64 -65 -66 -67 -68 -69 -70 -71 -72 -73 -74 -75 -76 -77 -78 -79 -80 -81 -82 -83 -84 -85 -86 -87 -88 -89 -90 -91 -92 -93 -94 -95 -96 -97 -98 -99 -100 -101 -102 -103 -104 -105 -106 -107 -108 -109 -110 -111 -112 -113 -114 -115 -116 -117 -118 -119 -120 -121 -122 -123 -124 -125 -126 -127 -128 -129 -130 -131 -132 -133 -134 -135 -136 -137 -138 -139 -140 -141 -142 -143 -144 -145 -146 -147 -148 -149 -150 -151 -152 -153 -154 -15519x -19x -19x -19x -19x -  -  -  -  -  -  -  -  -19x -42x -  -42x -42x -42x -  -  -42x -  -  -  -  -42x -  -42x -1x -1x -  -  -  -  -  -  -  -  -2x -  -  -  -2x -  -  -  -42x -42x -41x -41x -41x -  -1x -1x -  -1x -  -  -  -  -44x -44x -  -  -  -  -  -834820x -  -2x -  -  -  -  -  -  -  -  -  -6x -1x -  -  -  -  -5x -  -5x -  -5x -3x -3x -3x -  -  -  -2x -  -  -  -6x -6x -6x -  -5x -5x -  -  -  -  -  -  -  -  -  -3x -  -  -  -3x -3x -2x -  -  -1x -  -  -  -3x -1x -1x -1x -  -  -  -2x -  -2x -1x -  -  -1x -  -  -  -2x -2x -1x -  -1x -1x -  -  - 
import fg from "fast-glob";
-import fsExtra from "fs-extra";
-import * as Fuse from "fuse.js";
-import path from "path";
-import { autoInjectable } from "tsyringe";
- 
-/**
- * PathAdjuster Class
- *
- * This class is responsible for adjusting incorrect file paths by finding the closest matching existing path.
- * It uses fast-glob for efficient file discovery, Fuse.js for fuzzy matching, and fs-extra for file system operations.
- */
-@autoInjectable()
-export class PathAdjuster {
-  private allFiles: string[] = [];
-  private fuse: Fuse.default<string>;
-  private initialized: boolean = false;
-  private initializationError: Error | null = null;
-  private baseDirectory: string = process.cwd();
- 
-  constructor() {
-    const defaultFuzzyOptions: Fuse.IFuseOptions<string> = {
-      includeScore: true,
-      threshold: 0.4,
-    };
- 
-    this.fuse = new Fuse.default([], defaultFuzzyOptions);
- 
-    this.initialize().catch((error) => {
-      this.initializationError = error;
-      console.error("Failed to initialize PathAdjuster:", error);
-    });
-  }
- 
-  public async cleanup(): Promise<void> {
-    // No cleanup needed
-  }
- 
-  public isInitialized(): boolean {
-    return this.initialized;
-  }
- 
-  public getInitializationError(): Error | null {
-    return this.initializationError;
-  }
- 
-  private async initialize(): Promise<void> {
-    try {
-      this.allFiles = await this.getAllFiles(this.baseDirectory);
-      this.fuse.setCollection(this.allFiles);
-      this.initialized = true;
-      this.initializationError = null;
-    } catch (error) {
-      this.initialized = false;
-      this.initializationError =
-        error instanceof Error ? error : new Error(String(error));
-      throw this.initializationError;
-    }
-  }
- 
-  private async getAllFiles(dir: string): Promise<string[]> {
-    try {
-      const entries = await fg.sync("**/*", {
-        cwd: dir,
-        absolute: true,
-        onlyFiles: true,
-        followSymbolicLinks: true,
-      });
-      return entries.map((filePath) => path.resolve(filePath));
-    } catch (error) {
-      throw new Error(
-        `Failed to fetch files: ${error instanceof Error ? error.message : String(error)}`,
-      );
-    }
-  }
- 
-  public findClosestMatch(
-    wrongPath: string,
-    threshold: number = 0.6,
-  ): string | null {
-    if (!this.initialized) {
-      throw new Error(
-        "PathAdjuster not initialized. Check initialization status with isInitialized()",
-      );
-    }
- 
-    const absoluteWrongPath = path.resolve(this.baseDirectory, wrongPath);
- 
-    const results = this.fuse.search(absoluteWrongPath, { limit: 1 });
- 
-    if (results.length > 0) {
-      const bestMatch = results[0];
-      if (bestMatch.score !== undefined && bestMatch.score <= 1 - threshold) {
-        return bestMatch.item;
-      }
-    }
- 
-    return null;
-  }
- 
-  public validatePath(filePath: string): boolean {
-    try {
-      const exists = fsExtra.pathExistsSync(filePath);
-      if (!exists) return false;
-      
-      const stats = fsExtra.lstatSync(filePath);
-      return stats.isFile();
-    } catch (error) {
-      return false;
-    }
-  }
- 
-  public async adjustPath(
-    wrongPath: string,
-    threshold: number = 0.6,
-  ): Promise<string | null> {
-    Iif (!this.initialized) {
-      await this.initialize();
-    }
- 
-    const closestMatch = this.findClosestMatch(wrongPath, threshold);
-    if (closestMatch && this.validatePath(closestMatch)) {
-      return closestMatch;
-    }
- 
-    return null;
-  }
- 
-  public toRelativePath(absolutePath: string): string {
-    if (!path.isAbsolute(absolutePath)) {
-      const possiblePath = path.join(this.baseDirectory, absolutePath);
-      if (this.validatePath(possiblePath)) {
-        return absolutePath;
-      }
-    }
- 
-    const normalizedPath = path.resolve(absolutePath);
- 
-    if (!normalizedPath.startsWith(this.baseDirectory)) {
-      throw new Error("Path is outside the base directory");
-    }
- 
-    return path.relative(this.baseDirectory, normalizedPath);
-  }
- 
-  public async refreshFilePaths(): Promise<void> {
-    try {
-      this.allFiles = await this.getAllFiles(this.baseDirectory);
-      this.fuse.setCollection(this.allFiles);
-    } catch (error) {
-      console.error("Error refreshing file paths:", error);
-      throw error;
-    }
-  }
-}
- -
-
- - - - - - - - \ No newline at end of file diff --git a/coverage/lcov-report/services/FileManagement/index.html b/coverage/lcov-report/services/FileManagement/index.html deleted file mode 100644 index 2de760ee..00000000 --- a/coverage/lcov-report/services/FileManagement/index.html +++ /dev/null @@ -1,191 +0,0 @@ - - - - - - Code coverage report for services/FileManagement - - - - - - - - - -
-
-

All files services/FileManagement

-
- -
- 85.2% - Statements - 265/311 -
- - -
- 60.29% - Branches - 41/68 -
- - -
- 90.19% - Functions - 46/51 -
- - -
- 85.27% - Lines - 249/292 -
- - -
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

- -
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
FileStatementsBranchesFunctionsLines
DirectoryScanner.ts -
-
91.17%31/3442.85%6/14100%6/693.33%28/30
Errors.ts -
-
33.33%3/9100%0/00%0/333.33%3/9
FileOperations.ts -
-
78.3%83/10650%12/2492.85%13/1477.88%81/104
FileReader.ts -
-
87.5%14/1660%3/5100%3/385.71%12/14
FileSearch.ts -
-
87.34%69/7966.66%4/691.66%11/1288.88%64/72
PathAdjuster.ts -
-
97.01%65/6784.21%16/19100%13/1396.82%61/63
-
-
-
- - - - - - - - \ No newline at end of file diff --git a/coverage/lcov-report/services/LLM/LLMContextCreator.ts.html b/coverage/lcov-report/services/LLM/LLMContextCreator.ts.html deleted file mode 100644 index 06549c05..00000000 --- a/coverage/lcov-report/services/LLM/LLMContextCreator.ts.html +++ /dev/null @@ -1,631 +0,0 @@ - - - - - - Code coverage report for services/LLM/LLMContextCreator.ts - - - - - - - - - -
-
-

All files / services/LLM LLMContextCreator.ts

-
- -
- 96.42% - Statements - 54/56 -
- - -
- 95% - Branches - 19/20 -
- - -
- 88.88% - Functions - 8/9 -
- - -
- 96.29% - Lines - 52/54 -
- - -
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

- -
-
-

-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -18 -19 -20 -21 -22 -23 -24 -25 -26 -27 -28 -29 -30 -31 -32 -33 -34 -35 -36 -37 -38 -39 -40 -41 -42 -43 -44 -45 -46 -47 -48 -49 -50 -51 -52 -53 -54 -55 -56 -57 -58 -59 -60 -61 -62 -63 -64 -65 -66 -67 -68 -69 -70 -71 -72 -73 -74 -75 -76 -77 -78 -79 -80 -81 -82 -83 -84 -85 -86 -87 -88 -89 -90 -91 -92 -93 -94 -95 -96 -97 -98 -99 -100 -101 -102 -103 -104 -105 -106 -107 -108 -109 -110 -111 -112 -113 -114 -115 -116 -117 -118 -119 -120 -121 -122 -123 -124 -125 -126 -127 -128 -129 -130 -131 -132 -133 -134 -135 -136 -137 -138 -139 -140 -141 -142 -143 -144 -145 -146 -147 -148 -149 -150 -151 -152 -153 -154 -155 -156 -157 -158 -159 -160 -161 -162 -163 -164 -165 -166 -167 -168 -169 -170 -171 -172 -173 -174 -175 -176 -177 -178 -179 -180 -181 -182 -1835x -5x -5x -  -5x -5x -5x -5x -5x -  -  -  -  -  -  -  -  -  -5x -  -99x -99x -99x -99x -99x -99x -  -  -  -7x -  -7x -2x -2x -  -  -  -1x -  -1x -  -  -  -  -  -5x -4x -  -  -1x -  -  -  -  -  -  -  -  -  -5x -  -  -  -5x -  -4x -  -4x -  -4x -  -  -  -  -3x -  -  -  -  -  -  -1x -  -  -  -4x -4x -1x -  -  -3x -  -  -  -4x -4x -  -4x -1x -  -  -3x -3x -3x -  -3x -  -  -  -  -6x -  -  -  -  -  -  -  -  -  -  -  -3x -3x -3x -  -3x -  -  -  -3x -  -  -  -  -  -  -  -  -3x -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -1x -1x -  -  -  -  -  -  -  -  - 
import { ConfigService } from "@services/ConfigService";
-import { DirectoryScanner } from "@services/FileManagement/DirectoryScanner";
-import { ActionExecutor } from "@services/LLM/actions/ActionExecutor";
-import { IActionResult } from "@services/LLM/actions/types/ActionTypes";
-import { ProjectInfo } from "@services/LLM/utils/ProjectInfo";
-import * as fs from "fs";
-import { autoInjectable } from "tsyringe";
-import { MessageContextCleaner } from "./context/MessageContextCleanup";
-import { PhaseManager } from "./PhaseManager";
-import { IPhasePromptArgs } from "./types/PhaseTypes";
- 
-interface MessageContext {
-  message: string;
-  environmentDetails?: string;
-  projectInfo?: string;
-}
- 
-@autoInjectable()
-export class LLMContextCreator {
-  constructor(
-    private directoryScanner: DirectoryScanner,
-    private actionExecutor: ActionExecutor,
-    private projectInfo: ProjectInfo,
-    private configService: ConfigService,
-    private phaseManager: PhaseManager,
-    private messageContextCleanup: MessageContextCleaner,
-  ) {}
- 
-  private async loadCustomInstructions(): Promise<string> {
-    const config = this.configService.getConfig();
- 
-    if (config.customInstructionsPath) {
-      try {
-        const instructions = await fs.promises.readFile(
-          config.customInstructionsPath,
-          "utf-8",
-        );
-        return instructions.trim();
-      } catch (error) {
-        throw Error(
-          `Failed to load custom instructions from ${config.customInstructionsPath}, check if the file exists and is accessible.`,
-        );
-      }
-    }
- 
-    if (config.customInstructions) {
-      return config.customInstructions;
-    }
- 
-    throw new Error(
-      "No custom instructions provided. Either customInstructionsPath or customInstructions must be set in config.",
-    );
-  }
- 
-  async create(
-    message: string,
-    root: string,
-    isFirstMessage: boolean = true,
-  ): Promise<string> {
-    const baseContext: MessageContext = {
-      message,
-    };
- 
-    if (isFirstMessage) {
-      // Reset to discovery phase on first message
-      this.phaseManager.resetPhase();
-      // Clear message context only on first message
-      this.messageContextCleanup.cleanupContext();
- 
-      const [environmentDetails, projectInfo] = await Promise.all([
-        this.getEnvironmentDetails(root),
-        this.getProjectInfo(root),
-      ]);
- 
-      return this.formatFirstTimeMessage({
-        ...baseContext,
-        environmentDetails,
-        projectInfo,
-      });
-    }
- 
-    return this.formatSequentialMessage(baseContext);
-  }
- 
-  private async getEnvironmentDetails(root: string): Promise<string> {
-    const scanResult = await this.directoryScanner.scan(root);
-    if (!scanResult.success) {
-      throw new Error(`Failed to scan directory: ${scanResult.error}`);
-    }
- 
-    return `# Current Working Directory (${root}) Files\n${scanResult.data}`;
-  }
- 
-  private async getProjectInfo(root: string): Promise<string> {
-    const info = await this.projectInfo.gatherProjectInfo(root);
-    const config = this.configService.getConfig();
- 
-    if (!info.dependencyFile) {
-      return "";
-    }
- 
-    const runAllTestsCmd = config.runAllTestsCmd || "yarn test";
-    const runOneTestCmd = config.runOneTestCmd || "yarn test {testPath}";
-    const runTypeCheckCmd = config.runTypeCheckCmd || "yarn type-check";
- 
-    return `# Project Dependencies (from ${info.dependencyFile})
-Main Dependencies: ${info.mainDependencies.join(", ")}
- 
-# Available Scripts
-${Object.entries(info.scripts)
-  .map(([name, command]) => `${name}: ${command}`)
-  .join("\n")}
- 
-# Test Commands
-Run All Tests: ${runAllTestsCmd}
-Run Single Test: ${runOneTestCmd}
-Run Type Check: ${runTypeCheckCmd}`;
-  }
- 
-  private async formatFirstTimeMessage(
-    context: MessageContext,
-  ): Promise<string> {
-    const config = this.configService.getConfig();
-    const phaseConfig = this.phaseManager.getCurrentPhaseConfig();
-    const customInstructions = await this.loadCustomInstructions();
- 
-    const envDetails = config.includeAllFilesOnEnvToContext
-      ? context.environmentDetails
-      : "";
- 
-    const promptArgs: IPhasePromptArgs = {
-      message: context.message,
-      environmentDetails: envDetails,
-      projectInfo: context.projectInfo,
-      runAllTestsCmd: config.runAllTestsCmd,
-      runOneTestCmd: config.runOneTestCmd,
-      runTypeCheckCmd: config.runTypeCheckCmd,
-    };
- 
-    return `
-# Task
-${context.message}
- 
-    
-    <instructions details="NEVER_OUTPUT">
-<!-- These are internal instructions. Just follow them. Do not output. -->
- 
- 
-${
-  customInstructions &&
-  `
-# Custom Instructions
-${customInstructions}`
-}
- 
-## Initial Instructions
-- Keep messages brief, clear, and concise.
-- Break tasks into prioritized steps.
-- Use available actions sequentially.
- 
-# Additional Instructions
-${envDetails ? `\n${envDetails}` : ""}
-${context.projectInfo ? `\n${context.projectInfo}` : ""}
- 
-## Phase Instructions
-${phaseConfig.generatePrompt(promptArgs)}
- 
-</instructions>
-`;
-  }
- 
-  private formatSequentialMessage(context: MessageContext): string {
-    const phaseConfig = this.phaseManager.getCurrentPhaseConfig();
-    return phaseConfig.generatePrompt({ message: context.message });
-  }
- 
-  async executeAction(actionContent: string): Promise<IActionResult> {
-    const result = await this.actionExecutor.executeAction(actionContent);
- 
-    return result;
-  }
-}
- 
- -
-
- - - - - - - - \ No newline at end of file diff --git a/coverage/lcov-report/services/LLM/LLMProvider.ts.html b/coverage/lcov-report/services/LLM/LLMProvider.ts.html deleted file mode 100644 index ddf2eb46..00000000 --- a/coverage/lcov-report/services/LLM/LLMProvider.ts.html +++ /dev/null @@ -1,493 +0,0 @@ - - - - - - Code coverage report for services/LLM/LLMProvider.ts - - - - - - - - - -
-
-

All files / services/LLM LLMProvider.ts

-
- -
- 79.16% - Statements - 38/48 -
- - -
- 28.57% - Branches - 4/14 -
- - -
- 100% - Functions - 14/14 -
- - -
- 78.26% - Lines - 36/46 -
- - -
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

- -
-
-

-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -18 -19 -20 -21 -22 -23 -24 -25 -26 -27 -28 -29 -30 -31 -32 -33 -34 -35 -36 -37 -38 -39 -40 -41 -42 -43 -44 -45 -46 -47 -48 -49 -50 -51 -52 -53 -54 -55 -56 -57 -58 -59 -60 -61 -62 -63 -64 -65 -66 -67 -68 -69 -70 -71 -72 -73 -74 -75 -76 -77 -78 -79 -80 -81 -82 -83 -84 -85 -86 -87 -88 -89 -90 -91 -92 -93 -94 -95 -96 -97 -98 -99 -100 -101 -102 -103 -104 -105 -106 -107 -108 -109 -110 -111 -112 -113 -114 -115 -116 -117 -118 -119 -120 -121 -122 -123 -124 -125 -126 -127 -128 -129 -130 -131 -132 -133 -134 -135 -136 -137  -  -  -  -3x -3x -  -3x -3x -  -  -  -  -3x -  -35x -  -  -35x -35x -  -  -  -  -  -35x -  -35x -35x -  -  -  -  -35x -35x -  -  -  -2x -2x -1x -  -1x -  -  -  -2x -  -  -  -  -  -  -  -6x -  -  -6x -  -  -  -  -  -  -  -  -8x -  -  -8x -  -  -  -  -  -  -  -  -1x -  -  -1x -  -  -  -3x -  -  -3x -  -  -  -3x -  -  -3x -  -  -  -3x -  -  -3x -  -  -  -3x -  -  -3x -  -  -  -3x -  -  -3x -  -  -  -  -  -  -  -  -3x -  -  -3x -  -  -  -  -  -  -  - 
import {
-  IConversationHistoryMessage,
-  ILLMProvider,
-} from "@services/LLM/ILLMProvider";
-import { OpenRouterAPI } from "@services/LLMProviders/OpenRouter/OpenRouterAPI";
-import { autoInjectable, container, singleton } from "tsyringe";
- 
-export enum LLMProviderType {
-  OpenRouter = "open-router",
-}
- 
-@singleton()
-@autoInjectable()
-export class LLMProvider implements ILLMProvider {
-  private providers: Map<LLMProviderType, ILLMProvider>;
-  private currentProvider: ILLMProvider | null = null;
- 
-  constructor() {
-    this.providers = new Map();
-    this.initializeProvider(LLMProviderType.OpenRouter);
-  }
- 
-  private initializeProvider(type: LLMProviderType): void {
-    let provider: ILLMProvider;
- 
-    switch (type) {
-      case LLMProviderType.OpenRouter:
-        provider = container.resolve(OpenRouterAPI);
-        break;
-      default:
-        throw new Error(`Unsupported provider type: ${type}`);
-    }
- 
-    this.providers.set(type, provider);
-    this.currentProvider = provider;
-  }
- 
-  public static getInstance(type: LLMProviderType): ILLMProvider {
-    const provider = container.resolve(LLMProvider).getProvider(type);
-    if (!provider) {
-      throw new Error(`Unsupported provider type: ${type}`);
-    }
-    return provider;
-  }
- 
-  private getProvider(type: LLMProviderType): ILLMProvider | undefined {
-    return this.providers.get(type);
-  }
- 
-  public sendMessage(
-    model: string,
-    message: string,
-    options?: Record<string, unknown>,
-  ): Promise<string> {
-    Iif (!this.currentProvider) {
-      throw new Error("Current provider not set");
-    }
-    return this.currentProvider.sendMessage(model, message, options);
-  }
- 
-  public sendMessageWithContext(
-    model: string,
-    message: string,
-    systemInstructions?: string,
-    options?: Record<string, unknown>,
-  ): Promise<string> {
-    Iif (!this.currentProvider) {
-      throw new Error("Current provider not set");
-    }
-    return this.currentProvider.sendMessageWithContext(
-      model,
-      message,
-      systemInstructions,
-      options,
-    );
-  }
- 
-  public clearConversationContext(): void {
-    Iif (!this.currentProvider) {
-      throw new Error("Current provider not set");
-    }
-    this.currentProvider.clearConversationContext();
-  }
- 
-  public getConversationContext(): IConversationHistoryMessage[] {
-    Iif (!this.currentProvider) {
-      throw new Error("Current provider not set");
-    }
-    return this.currentProvider.getConversationContext();
-  }
- 
-  public addSystemInstructions(instructions: string): void {
-    Iif (!this.currentProvider) {
-      throw new Error("Current provider not set");
-    }
-    this.currentProvider.addSystemInstructions(instructions);
-  }
- 
-  public getAvailableModels(): Promise<string[]> {
-    Iif (!this.currentProvider) {
-      throw new Error("Current provider not set");
-    }
-    return this.currentProvider.getAvailableModels();
-  }
- 
-  public validateModel(model: string): Promise<boolean> {
-    Iif (!this.currentProvider) {
-      throw new Error("Current provider not set");
-    }
-    return this.currentProvider.validateModel(model);
-  }
- 
-  public getModelInfo(model: string): Promise<Record<string, unknown>> {
-    Iif (!this.currentProvider) {
-      throw new Error("Current provider not set");
-    }
-    return this.currentProvider.getModelInfo(model);
-  }
- 
-  public streamMessage(
-    model: string,
-    message: string,
-    callback: (chunk: string) => void,
-    options?: Record<string, unknown>,
-  ): Promise<void> {
-    Iif (!this.currentProvider) {
-      throw new Error("Current provider not set");
-    }
-    return this.currentProvider.streamMessage(
-      model,
-      message,
-      callback,
-      options,
-    );
-  }
-}
- 
- -
-
- - - - - - - - \ No newline at end of file diff --git a/coverage/lcov-report/services/LLM/ModelInfo.ts.html b/coverage/lcov-report/services/LLM/ModelInfo.ts.html deleted file mode 100644 index 1d40fba4..00000000 --- a/coverage/lcov-report/services/LLM/ModelInfo.ts.html +++ /dev/null @@ -1,634 +0,0 @@ - - - - - - Code coverage report for services/LLM/ModelInfo.ts - - - - - - - - - -
-
-

All files / services/LLM ModelInfo.ts

-
- -
- 82.85% - Statements - 58/70 -
- - -
- 72.22% - Branches - 13/18 -
- - -
- 82.35% - Functions - 14/17 -
- - -
- 82.35% - Lines - 56/68 -
- - -
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

- -
-
-

-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -18 -19 -20 -21 -22 -23 -24 -25 -26 -27 -28 -29 -30 -31 -32 -33 -34 -35 -36 -37 -38 -39 -40 -41 -42 -43 -44 -45 -46 -47 -48 -49 -50 -51 -52 -53 -54 -55 -56 -57 -58 -59 -60 -61 -62 -63 -64 -65 -66 -67 -68 -69 -70 -71 -72 -73 -74 -75 -76 -77 -78 -79 -80 -81 -82 -83 -84 -85 -86 -87 -88 -89 -90 -91 -92 -93 -94 -95 -96 -97 -98 -99 -100 -101 -102 -103 -104 -105 -106 -107 -108 -109 -110 -111 -112 -113 -114 -115 -116 -117 -118 -119 -120 -121 -122 -123 -124 -125 -126 -127 -128 -129 -130 -131 -132 -133 -134 -135 -136 -137 -138 -139 -140 -141 -142 -143 -144 -145 -146 -147 -148 -149 -150 -151 -152 -153 -154 -155 -156 -157 -158 -159 -160 -161 -162 -163 -164 -165 -166 -167 -168 -169 -170 -171 -172 -173 -174 -175 -176 -177 -178 -179 -180 -181 -182 -183 -18426x -26x -26x -  -  -  -26x -1x -1x -1x -1x -1x -  -  -  -  -  -  -  -1x -  -  -20x -20x -19x -  -  -19x -  -19x -38x -  -  -19x -  -1x -  -  -1x -  -  -  -  -32x -  -  -  -  -  -9x -  -9x -5x -  -  -4x -  -  -  -  -  -4x -4x -4x -  -4x -  -  -  -4x -  -  -  -  -  -  -  -  -  -  -  -6x -6x -  -  -  -2x -  -  -  -2x -2x -  -  -  -2x -2x -2x -  -  -  -1x -1x -  -  -  -6x -6x -  -6x -1x -1x -  -  -  -  -  -6x -  -  -  -2x -2x -2x -  -  -  -2x -2x -  -  -  -2x -  -2x -1x -  -  -1x -1x -  -1x -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  - 
import { openRouterClient } from "@constants/openRouterClient";
-import { DebugLogger } from "@services/logging/DebugLogger";
-import { singleton } from "tsyringe";
-import { IModelInfo } from "./types/ModelTypes";
- 
-@singleton()
-export class ModelInfo {
-  private modelInfoMap: Map<string, IModelInfo> = new Map();
-  private currentModel: string | null = null;
-  private currentModelInfo: IModelInfo | null = null;
-  private initialized: boolean = false;
-  private usageHistory: {
-    [model: string]: {
-      prompt_tokens: number;
-      completion_tokens: number;
-      total_tokens: number;
-    }[];
-  } = {};
- 
-  constructor(private debugLogger: DebugLogger) {}
- 
-  async initialize(): Promise<void> {
-    try {
-      const response = await openRouterClient.get("/models");
-      const models: IModelInfo[] = response.data.data;
- 
-      // Clear existing models before adding new ones
-      this.modelInfoMap.clear();
- 
-      models.forEach((model) => {
-        this.modelInfoMap.set(model.id, model);
-      });
- 
-      this.initialized = true;
-    } catch (error) {
-      this.debugLogger.log("ModelInfo", "Failed to initialize model list", {
-        error,
-      });
-      throw error;
-    }
-  }
- 
-  private async ensureInitialized(): Promise<void> {
-    Iif (!this.initialized) {
-      await this.initialize();
-    }
-  }
- 
-  async setCurrentModel(modelId: string): Promise<void> {
-    await this.ensureInitialized();
- 
-    if (modelId === this.currentModel && this.currentModelInfo) {
-      return; // Already tracking this model
-    }
- 
-    Iif (!(await this.isModelAvailable(modelId))) {
-      throw new Error(
-        `Invalid model: ${modelId}. Available models: ${Array.from(this.modelInfoMap.keys()).join(", ")}`,
-      );
-    }
- 
-    const modelInfo = this.modelInfoMap.get(modelId)!; // Safe to use ! here since we checked availability
-    this.currentModel = modelId;
-    this.currentModelInfo = modelInfo;
- 
-    Iif (!modelInfo) {
-      return;
-    }
- 
-    this.debugLogger.log("ModelInfo", "Current model info", {
-      model: modelId,
-      contextLength: modelInfo.context_length,
-      maxCompletionTokens: modelInfo.top_provider.max_completion_tokens,
-    });
-  }
- 
-  getCurrentModel(): string | null {
-    return this.currentModel;
-  }
- 
-  async getModelInfo(modelId: string): Promise<IModelInfo | undefined> {
-    await this.ensureInitialized();
-    return this.modelInfoMap.get(modelId);
-  }
- 
-  getCurrentModelInfo(): IModelInfo | null {
-    return this.currentModelInfo;
-  }
- 
-  async getCurrentModelContextLength(): Promise<number> {
-    await this.ensureInitialized();
-    return this.currentModelInfo?.context_length || 128000; // Default fallback
-  }
- 
-  async getModelContextLength(modelId: string): Promise<number> {
-    await this.ensureInitialized();
-    const modelInfo = await this.getModelInfo(modelId);
-    return modelInfo?.context_length || 128000; // Default fallback
-  }
- 
-  async getAllModels(): Promise<string[]> {
-    await this.ensureInitialized();
-    return Array.from(this.modelInfoMap.keys());
-  }
- 
-  async isModelAvailable(modelId: string): Promise<boolean> {
-    await this.ensureInitialized();
-    const available = this.modelInfoMap.has(modelId);
- 
-    if (!available) {
-      const availableModels = Array.from(this.modelInfoMap.keys());
-      this.debugLogger.log("ModelInfo", "Model not found in available models", {
-        modelId,
-        availableModels,
-      });
-    }
- 
-    return available;
-  }
- 
-  async getModelMaxCompletionTokens(modelId: string): Promise<number> {
-    await this.ensureInitialized();
-    const modelInfo = await this.getModelInfo(modelId);
-    return modelInfo?.top_provider.max_completion_tokens || 4096; // Default fallback
-  }
- 
-  async getCurrentModelMaxCompletionTokens(): Promise<number> {
-    await this.ensureInitialized();
-    return this.currentModelInfo?.top_provider.max_completion_tokens || 4096; // Default fallback
-  }
- 
-  async logCurrentModelUsage(usedTokens: number): Promise<void> {
-    await this.ensureInitialized();
- 
-    if (!this.currentModelInfo) {
-      return;
-    }
- 
-    const contextLength = this.currentModelInfo.context_length;
-    const usagePercent = ((usedTokens / contextLength) * 100).toFixed(1);
- 
-    this.debugLogger.log("ModelInfo", "Token usage", {
-      model: this.currentModel,
-      used: usedTokens,
-      total: contextLength,
-      percentage: `${usagePercent}%`,
-      remaining: contextLength - usedTokens,
-    });
-  }
- 
-  async logDetailedUsage(usage: {
-    prompt_tokens: number;
-    completion_tokens: number;
-    total_tokens: number;
-  }): Promise<void> {
-    await this.ensureInitialized();
- 
-    Iif (!this.currentModel) {
-      return;
-    }
- 
-    Iif (!this.usageHistory[this.currentModel]) {
-      this.usageHistory[this.currentModel] = [];
-    }
- 
-    this.usageHistory[this.currentModel].push(usage);
- 
-    this.debugLogger.log("ModelInfo", "Detailed token usage", {
-      model: this.currentModel,
-      usage,
-    });
-  }
- 
-  getUsageHistory(): {
-    [model: string]: {
-      prompt_tokens: number;
-      completion_tokens: number;
-      total_tokens: number;
-    }[];
-  } {
-    return this.usageHistory;
-  }
-}
- 
- -
-
- - - - - - - - \ No newline at end of file diff --git a/coverage/lcov-report/services/LLM/ModelManager.ts.html b/coverage/lcov-report/services/LLM/ModelManager.ts.html deleted file mode 100644 index 9cd2a8cf..00000000 --- a/coverage/lcov-report/services/LLM/ModelManager.ts.html +++ /dev/null @@ -1,154 +0,0 @@ - - - - - - Code coverage report for services/LLM/ModelManager.ts - - - - - - - - - -
-
-

All files / services/LLM ModelManager.ts

-
- -
- 100% - Statements - 13/13 -
- - -
- 100% - Branches - 0/0 -
- - -
- 100% - Functions - 3/3 -
- - -
- 100% - Lines - 11/11 -
- - -
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

- -
-
-

-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -18 -19 -20 -21 -22 -23 -2425x -25x -25x -  -  -25x -85x -  -  -85x -85x -  -  -  -44x -44x -44x -  -  -  -36x -  -  - 
import { DebugLogger } from "@services/logging/DebugLogger";
-import { singleton } from "tsyringe";
-import { ModelInfo } from "./ModelInfo";
- 
-@singleton()
-export class ModelManager {
-  private currentModel: string = "";
- 
-  constructor(
-    private modelInfo: ModelInfo,
-    private debugLogger: DebugLogger,
-  ) {}
- 
-  public setCurrentModel(model: string): void {
-    this.currentModel = model;
-    this.modelInfo.setCurrentModel(model);
-    this.debugLogger.log("ModelManager", "Model updated", { model });
-  }
- 
-  public getCurrentModel(): string {
-    return this.currentModel;
-  }
-}
- 
- -
-
- - - - - - - - \ No newline at end of file diff --git a/coverage/lcov-report/services/LLM/ModelScaler.ts.html b/coverage/lcov-report/services/LLM/ModelScaler.ts.html deleted file mode 100644 index 07e6badc..00000000 --- a/coverage/lcov-report/services/LLM/ModelScaler.ts.html +++ /dev/null @@ -1,469 +0,0 @@ - - - - - - Code coverage report for services/LLM/ModelScaler.ts - - - - - - - - - -
-
-

All files / services/LLM ModelScaler.ts

-
- -
- 95.31% - Statements - 61/64 -
- - -
- 79.16% - Branches - 19/24 -
- - -
- 90.9% - Functions - 10/11 -
- - -
- 98.21% - Lines - 55/56 -
- - -
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

- -
-
-

-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -18 -19 -20 -21 -22 -23 -24 -25 -26 -27 -28 -29 -30 -31 -32 -33 -34 -35 -36 -37 -38 -39 -40 -41 -42 -43 -44 -45 -46 -47 -48 -49 -50 -51 -52 -53 -54 -55 -56 -57 -58 -59 -60 -61 -62 -63 -64 -65 -66 -67 -68 -69 -70 -71 -72 -73 -74 -75 -76 -77 -78 -79 -80 -81 -82 -83 -84 -85 -86 -87 -88 -89 -90 -91 -92 -93 -94 -95 -96 -97 -98 -99 -100 -101 -102 -103 -104 -105 -106 -107 -108 -109 -110 -111 -112 -113 -114 -115 -116 -117 -118 -119 -120 -121 -122 -123 -124 -125 -126 -127 -128 -12920x -20x -20x -20x -20x -20x -20x -  -  -20x -56x -56x -56x -  -  -56x -56x -56x -56x -  -56x -56x -  -  -  -  -  -  -  -19x -  -19x -7x -  -  -12x -12x -  -  -12x -4x -  -  -  -  -4x -3x -  -  -  -3x -2x -  -  -  -12x -12x -12x -12x -12x -  -  -  -12x -  -12x -12x -12x -  -  -  -4x -4x -  -  -  -  -  -  -4x -  -4x -4x -  -  -  -  -4x -  -  -  -  -  -  -  -  -4x -  -  -  -  -  -  -11x -11x -  -11x -  -10x -  -10x -22x -  -15x -  -22x -  -  -  -13x -  -  -9x -  -  -1x -  -  - 
import { MODEL_SCALING_INITIAL_TRY_COUNT } from "@/constants/modelScaling";
-import { DebugLogger } from "@services/logging/DebugLogger";
-import { singleton } from "tsyringe";
-import { ConfigService } from "../ConfigService";
-import { ModelManager } from "./ModelManager";
-import { PhaseManager } from "./PhaseManager";
-import { Phase } from "./types/PhaseTypes";
- 
-@singleton()
-export class ModelScaler {
-  private tryCountMap: Map<string, number> = new Map();
-  private globalTryCount: number = 0;
-  private autoScalerEnabled: boolean = false;
- 
-  constructor(
-    private debugLogger: DebugLogger,
-    private configService: ConfigService,
-    private modelManager: ModelManager,
-    private phaseManager: PhaseManager,
-  ) {
-    const config = this.configService.getConfig();
-    this.autoScalerEnabled = config.autoScaler || false;
-  }
- 
-  isAutoScalerEnabled(): boolean {
-    return this.autoScalerEnabled;
-  }
- 
-  async incrementTryCount(filePath: string): Promise<void> {
-    const currentPhase = this.phaseManager.getCurrentPhase();
- 
-    if (!this.autoScalerEnabled || currentPhase !== Phase.Execute) {
-      return;
-    }
- 
-    this.incrementCounts(filePath);
-    const currentCount = this.tryCountMap.get(filePath) || 0;
- 
-    // Only scale if we've exceeded the threshold
-    if (currentCount > MODEL_SCALING_INITIAL_TRY_COUNT) {
-      await this.handleModelScaling(filePath, currentCount);
-    }
-  }
- 
-  getTryCount(filePath: string): number {
-    if (!this.autoScalerEnabled) return 0;
-    return this.tryCountMap.get(filePath) || 0;
-  }
- 
-  getGlobalTryCount(): number {
-    if (!this.autoScalerEnabled) return 0;
-    return this.globalTryCount;
-  }
- 
-  reset(): void {
-    this.tryCountMap.clear();
-    this.globalTryCount = 0;
-    const config = this.configService.getConfig();
-    this.autoScalerEnabled = config.autoScaler || false;
-    this.modelManager.setCurrentModel(config.discoveryModel);
-  }
- 
-  private incrementCounts(filePath: string): void {
-    Iif (!this.autoScalerEnabled) return;
- 
-    this.globalTryCount++;
-    const currentCount = this.tryCountMap.get(filePath) || 0;
-    this.tryCountMap.set(filePath, currentCount + 1);
-  }
- 
-  private getMaxTryCount(): number {
-    const values = Array.from(this.tryCountMap.values());
-    return values.length > 0 ? Math.max(...values) : 0;
-  }
- 
-  private async handleModelScaling(
-    filePath: string,
-    currentCount: number,
-  ): Promise<void> {
-    Iif (!this.autoScalerEnabled) return;
- 
-    const maxTries = this.getMaxTryCount();
-    const newModel = this.getModelForTryCount(
-      maxTries.toString(),
-      this.globalTryCount,
-    );
- 
-    this.debugLogger.log("Model", "Incrementing try count", {
-      filePath,
-      fileCount: currentCount + 1,
-      globalCount: this.globalTryCount,
-      maxTries,
-      newModel,
-      phase: this.phaseManager.getCurrentPhase(),
-    });
- 
-    await this.modelManager.setCurrentModel(newModel);
-  }
- 
-  private getModelForTryCount(
-    tryCount: string | null,
-    globalTries: number,
-  ): string {
-    const config = this.configService.getConfig();
-    const availableModels = config.autoScaleAvailableModels;
- 
-    if (!tryCount) return availableModels[0].id;
- 
-    const tries = parseInt(tryCount, 10);
- 
-    for (let i = 0; i < availableModels.length; i++) {
-      const previousTriesSum = availableModels
-        .slice(0, i)
-        .reduce((sum, model) => sum + model.maxWriteTries, 0);
- 
-      if (
-        tries >= previousTriesSum + availableModels[i].maxWriteTries ||
-        globalTries >= availableModels[i].maxGlobalTries
-      ) {
-        continue;
-      }
- 
-      return availableModels[i].id;
-    }
- 
-    return availableModels[availableModels.length - 1].id;
-  }
-}
- 
- -
-
- - - - - - - - \ No newline at end of file diff --git a/coverage/lcov-report/services/LLM/PhaseManager.ts.html b/coverage/lcov-report/services/LLM/PhaseManager.ts.html deleted file mode 100644 index 4ecc8d73..00000000 --- a/coverage/lcov-report/services/LLM/PhaseManager.ts.html +++ /dev/null @@ -1,409 +0,0 @@ - - - - - - Code coverage report for services/LLM/PhaseManager.ts - - - - - - - - - -
-
-

All files / services/LLM PhaseManager.ts

-
- -
- 92.3% - Statements - 36/39 -
- - -
- 76.92% - Branches - 10/13 -
- - -
- 100% - Functions - 8/8 -
- - -
- 91.89% - Lines - 34/37 -
- - -
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

- -
-
-

-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -18 -19 -20 -21 -22 -23 -24 -25 -26 -27 -28 -29 -30 -31 -32 -33 -34 -35 -36 -37 -38 -39 -40 -41 -42 -43 -44 -45 -46 -47 -48 -49 -50 -51 -52 -53 -54 -55 -56 -57 -58 -59 -60 -61 -62 -63 -64 -65 -66 -67 -68 -69 -70 -71 -72 -73 -74 -75 -76 -77 -78 -79 -80 -81 -82 -83 -84 -85 -86 -87 -88 -89 -90 -91 -92 -93 -94 -95 -96 -97 -98 -99 -100 -101 -102 -103 -104 -105 -106 -107 -108 -109  -25x -25x -25x -25x -25x -  -  -  -25x -87x -87x -  -  -87x -87x -  -  -  -28x -  -  -28x -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -28x -  -  -28x -  -28x -  -  -  -28x -  -  -  -25x -  -  -  -  -1x -  -  -  -1x -1x -  -  -1x -  -  -  -1x -  -  -  -7x -7x -1x -  -6x -  -  -  -4x -  -2x -2x -  -1x -1x -  -  -1x -  -4x -  -  -  -5x -  -  - 
// services/PhaseManager.ts
-import { ConfigService } from "@services/ConfigService";
-import { injectable, singleton } from "tsyringe";
-import { ModelManager } from "./ModelManager";
-import { phaseBlueprints } from "./phases/blueprints";
-import { IPhaseConfig, Phase } from "./types/PhaseTypes";
- 
-@injectable()
-@singleton()
-export class PhaseManager {
-  private currentPhase: Phase = Phase.Discovery;
-  private phaseConfigs: Map<Phase, IPhaseConfig> = new Map();
- 
-  constructor(
-    private configService: ConfigService,
-    private modelManager: ModelManager,
-  ) {}
- 
-  public initializePhaseConfigs() {
-    const config = this.configService.getConfig();
- 
-    // Initialize configs using blueprints but override models from config if provided
-    this.phaseConfigs = new Map([
-      [
-        Phase.Discovery,
-        {
-          ...phaseBlueprints[Phase.Discovery],
-          model:
-            config.discoveryModel || phaseBlueprints[Phase.Discovery].model,
-        },
-      ],
-      [
-        Phase.Strategy,
-        {
-          ...phaseBlueprints[Phase.Strategy],
-          model: config.strategyModel || phaseBlueprints[Phase.Strategy].model,
-        },
-      ],
-      [
-        Phase.Execute,
-        {
-          ...phaseBlueprints[Phase.Execute],
-          model: config.executeModel || phaseBlueprints[Phase.Execute].model,
-        },
-      ],
-    ]);
- 
-    // set initial phase
-    this.currentPhase = Phase.Discovery;
- 
-    // set initial model
-    const phaseData = this.phaseConfigs.get(Phase.Discovery);
- 
-    Iif (!phaseData) {
-      throw new Error("No data found for Discovery phase");
-    }
- 
-    this.modelManager.setCurrentModel(phaseData.model);
-  }
- 
-  getCurrentPhase(): Phase {
-    return this.currentPhase;
-  }
- 
-  getCurrentPhaseConfig(): IPhaseConfig {
-    // reset if not set
-    Iif (!this.currentPhase) {
-      this.resetPhase();
-    }
- 
-    const config = this.phaseConfigs.get(this.currentPhase);
-    Iif (!config) {
-      throw new Error(`No configuration found for phase ${this.currentPhase}`);
-    }
-    return config;
-  }
- 
-  setPhase(phase: Phase) {
-    this.currentPhase = phase;
-  }
- 
-  getPhaseConfig(phase: Phase): IPhaseConfig {
-    const config = this.phaseConfigs.get(phase);
-    if (!config) {
-      throw new Error(`No configuration found for phase ${phase}`);
-    }
-    return config;
-  }
- 
-  nextPhase(): Phase {
-    switch (this.currentPhase) {
-      case Phase.Discovery:
-        this.currentPhase = Phase.Strategy;
-        break;
-      case Phase.Strategy:
-        this.currentPhase = Phase.Execute;
-        break;
-      case Phase.Execute:
-        // Execute is the final phase, stays there
-        break;
-    }
-    return this.currentPhase;
-  }
- 
-  resetPhase() {
-    this.currentPhase = Phase.Discovery;
-  }
-}
- 
- -
-
- - - - - - - - \ No newline at end of file diff --git a/coverage/lcov-report/services/LLM/PhaseTransitionService.ts.html b/coverage/lcov-report/services/LLM/PhaseTransitionService.ts.html deleted file mode 100644 index 1efa777b..00000000 --- a/coverage/lcov-report/services/LLM/PhaseTransitionService.ts.html +++ /dev/null @@ -1,331 +0,0 @@ - - - - - - Code coverage report for services/LLM/PhaseTransitionService.ts - - - - - - - - - -
-
-

All files / services/LLM PhaseTransitionService.ts

-
- -
- 82.85% - Statements - 29/35 -
- - -
- 33.33% - Branches - 3/9 -
- - -
- 100% - Functions - 4/4 -
- - -
- 81.81% - Lines - 27/33 -
- - -
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

- -
-
-

-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -18 -19 -20 -21 -22 -23 -24 -25 -26 -27 -28 -29 -30 -31 -32 -33 -34 -35 -36 -37 -38 -39 -40 -41 -42 -43 -44 -45 -46 -47 -48 -49 -50 -51 -52 -53 -54 -55 -56 -57 -58 -59 -60 -61 -62 -63 -64 -65 -66 -67 -68 -69 -70 -71 -72 -73 -74 -75 -76 -77 -78 -79 -80 -81 -82 -8317x -  -17x -17x -17x -17x -17x -  -  -17x -  -6x -6x -6x -6x -  -  -  -5x -5x -  -5x -5x -  -  -  -  -5x -  -  -  -  -5x -  -  -5x -  -  -5x -  -  -5x -  -  -  -5x -  -  -  -  -5x -  -  -  -  -  -  -5x -  -5x -  -  -  -  -  -  -  -  -  -  -10x -  -5x -  -5x -  -  -  -  -  -  -  - 
import { injectable } from "tsyringe";
-import { WriteActionData } from "./actions/types/ActionTypes";
-import { MessageContextHistory } from "./context/MessageContextHistory";
-import { MessageContextPhase } from "./context/MessageContextPhase";
-import { ModelManager } from "./ModelManager";
-import { PhaseManager } from "./PhaseManager";
-import { Phase } from "./types/PhaseTypes";
- 
-@injectable()
-export class PhaseTransitionService {
-  constructor(
-    private phaseManager: PhaseManager,
-    private modelManager: ModelManager,
-    private messageContextPhase: MessageContextPhase,
-    private messageContextHistory: MessageContextHistory,
-  ) {}
- 
-  async transitionToNextPhase(): Promise<WriteActionData> {
-    const currentPhase = this.phaseManager.getCurrentPhase();
-    const nextPhase = this.getNextPhase(currentPhase);
- 
-    this.messageContextPhase.cleanupPhaseContent();
-    Iif (currentPhase === Phase.Strategy) {
-      this.messageContextHistory.mergeConversationHistory();
-    }
- 
-    // Log phase transition with emojis
-    console.log(
-      `🔄 Phase Transition: ${this.getPhaseEmoji(currentPhase)}${currentPhase} ➡️ ${this.getPhaseEmoji(nextPhase)}${nextPhase}`,
-    );
- 
-    // Move to next phase
-    this.phaseManager.nextPhase();
- 
-    // Get the new phase's config
-    const nextPhaseConfig = this.phaseManager.getCurrentPhaseConfig();
- 
-    // Update model for the new phase
-    await this.modelManager.setCurrentModel(nextPhaseConfig.model);
- 
-    // Generate prompt but don't include it in the response
-    nextPhaseConfig.generatePrompt({
-      message: "Continue with the next phase based on previous findings.",
-    });
- 
-    this.messageContextHistory.addMessage(
-      "system",
-      `Current phase is ${nextPhase}`,
-    );
- 
-    return {
-      regenerate: true,
-      selectedModel: nextPhaseConfig.model,
-    };
-  }
- 
-  private getNextPhase(currentPhase: Phase): Phase {
-    switch (currentPhase) {
-      case Phase.Discovery:
-        return Phase.Strategy;
-      case Phase.Strategy:
-        return Phase.Execute;
-      case Phase.Execute:
-        return Phase.Discovery;
-      default:
-        return Phase.Discovery;
-    }
-  }
- 
-  private getPhaseEmoji(phase: Phase): string {
-    switch (phase) {
-      case Phase.Discovery:
-        return "🔍 ";
-      case Phase.Strategy:
-        return "🎯 ";
-      case Phase.Execute:
-        return "⚡ ";
-      default:
-        return "❓ ";
-    }
-  }
-}
- 
- -
-
- - - - - - - - \ No newline at end of file diff --git a/coverage/lcov-report/services/LLM/actions/ActionExecutor.ts.html b/coverage/lcov-report/services/LLM/actions/ActionExecutor.ts.html deleted file mode 100644 index 6a4273e2..00000000 --- a/coverage/lcov-report/services/LLM/actions/ActionExecutor.ts.html +++ /dev/null @@ -1,676 +0,0 @@ - - - - - - Code coverage report for services/LLM/actions/ActionExecutor.ts - - - - - - - - - -
-
-

All files / services/LLM/actions ActionExecutor.ts

-
- -
- 81.69% - Statements - 58/71 -
- - -
- 70.37% - Branches - 19/27 -
- - -
- 100% - Functions - 2/2 -
- - -
- 82.35% - Lines - 56/68 -
- - -
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

- -
-
-

-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -18 -19 -20 -21 -22 -23 -24 -25 -26 -27 -28 -29 -30 -31 -32 -33 -34 -35 -36 -37 -38 -39 -40 -41 -42 -43 -44 -45 -46 -47 -48 -49 -50 -51 -52 -53 -54 -55 -56 -57 -58 -59 -60 -61 -62 -63 -64 -65 -66 -67 -68 -69 -70 -71 -72 -73 -74 -75 -76 -77 -78 -79 -80 -81 -82 -83 -84 -85 -86 -87 -88 -89 -90 -91 -92 -93 -94 -95 -96 -97 -98 -99 -100 -101 -102 -103 -104 -105 -106 -107 -108 -109 -110 -111 -112 -113 -114 -115 -116 -117 -118 -119 -120 -121 -122 -123 -124 -125 -126 -127 -128 -129 -130 -131 -132 -133 -134 -135 -136 -137 -138 -139 -140 -141 -142 -143 -144 -145 -146 -147 -148 -149 -150 -151 -152 -153 -154 -155 -156 -157 -158 -159 -160 -161 -162 -163 -164 -165 -166 -167 -168 -169 -170 -171 -172 -173 -174 -175 -176 -177 -178 -179 -180 -181 -182 -183 -184 -185 -186 -187 -188 -189 -190 -191 -192 -193 -194 -195 -196 -197 -1986x -6x -6x -6x -6x -6x -  -  -  -6x -  -100x -100x -100x -100x -  -  -  -7x -  -7x -  -  -7x -73x -  -  -  -  -1x -  -  -1x -  -  -  -1x -  -  -  -1x -  -  -  -  -6x -6x -  -6x -3x -  -  -3x -  -  -  -3x -  -  -  -3x -  -  -  -3x -3x -3x -2x -  -1x -1x -  -  -  -1x -  -  -  -1x -  -  -  -  -  -2x -2x -2x -2x -  -2x -  -  -2x -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -2x -2x -2x -  -  -  -  -  -2x -  -  -2x -  -  -2x -2x -1x -  -  -  -  -1x -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -2x -  -  -  -  -  -2x -  -  -  -  -  -  -2x -1x -  -  -  -  -  -  -  -2x -  -  -2x -  -  -2x -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  - 
import { autoInjectable } from "tsyringe";
-import { MessageContextHistory } from "../context/MessageContextHistory";
-import { MessageContextLogger } from "../context/MessageContextLogger";
-import { ActionTag, getBlueprint, getImplementedActions } from "./blueprints";
-import { ActionFactory } from "./core/ActionFactory";
-import { ActionQueue } from "./core/ActionQueue";
-import { IActionResult } from "./types/ActionTypes";
- 
-@autoInjectable()
-export class ActionExecutor {
-  constructor(
-    private actionFactory: ActionFactory,
-    private actionQueue: ActionQueue,
-    private messageContextLogger: MessageContextLogger,
-    private messageContextHistory: MessageContextHistory,
-  ) {}
- 
-  async executeAction(actionText: string): Promise<IActionResult> {
-    try {
-      // Get all implemented action types
-      const implementedActions = getImplementedActions();
- 
-      // Validate XML structure
-      for (const actionType of implementedActions) {
-        if (
-          actionText.includes(actionType) &&
-          !actionText.includes(`<${actionType}>`) &&
-          !actionText.includes(`</${actionType}>`)
-        ) {
-          const error = new Error(
-            `Found "${actionType}" without proper XML tag structure. Tags must be wrapped in < > brackets. For example: <${actionType}>content</${actionType}>`,
-          );
-          this.messageContextLogger.logActionResult(actionType, {
-            success: false,
-            error,
-          });
-          this.messageContextHistory.addMessage(
-            "system",
-            `Action ${actionType} failed: Invalid XML structure`,
-          );
-          return { success: false, error };
-        }
-      }
- 
-      // Extract actions using regex
-      const actionMatch = /<(\w+)>([\s\S]*?)<\/\1>/g;
-      const matches = Array.from(actionText.matchAll(actionMatch));
- 
-      if (!matches.length) {
-        const error = new Error(
-          "No valid action tags found. Actions must be wrapped in XML-style tags.",
-        );
-        this.messageContextLogger.logActionResult("unknown", {
-          success: false,
-          error,
-        });
-        this.messageContextHistory.addMessage(
-          "system",
-          "Action failed: No valid action tags found",
-        );
-        return { success: false, error };
-      }
- 
-      // Queue all actions
-      for (const [fullMatch, actionType] of matches) {
-        if (actionType !== "path" && actionType !== "content") {
-          if (implementedActions.includes(actionType as ActionTag)) {
-            this.actionQueue.enqueue(actionType, fullMatch);
-          } else {
-            const error = new Error(`Unknown action type: ${actionType}`);
-            this.messageContextLogger.logActionResult(actionType, {
-              success: false,
-              error,
-            });
-            this.messageContextHistory.addMessage(
-              "system",
-              `Action failed: Unknown type ${actionType}`,
-            );
-            return { success: false, error };
-          }
-        }
-      }
- 
-      // Process actions in order
-      let lastResult: IActionResult = { success: true };
-      while (!this.actionQueue.isEmpty()) {
-        const action = this.actionQueue.dequeue();
-        Iif (!action) continue;
- 
-        const actionInstance = this.actionFactory.createAction(
-          action.type as ActionTag,
-        );
-        Iif (!actionInstance) {
-          const error = new Error(
-            `Failed to create action instance for "${action.type}"`,
-          );
-          this.messageContextLogger.logActionResult(action.type, {
-            success: false,
-            error,
-          });
-          this.messageContextHistory.addMessage(
-            "system",
-            `Action ${action.type} failed: Could not create instance`,
-          );
-          return { success: false, error };
-        }
- 
-        // Get blueprint for logging
-        const blueprint = getBlueprint(action.type as ActionTag);
-        if (blueprint) {
-          console.log(
-            `⚡ ${blueprint.description || `Executing ${action.type}`}...`,
-          );
-        }
- 
-        // Execute action
-        lastResult = await actionInstance.execute(action.content);
- 
-        // Log the result
-        this.messageContextLogger.logActionResult(action.type, lastResult);
- 
-        // Add result to conversation history
-        if (lastResult.success) {
-          if (lastResult.data) {
-            this.messageContextHistory.addMessage(
-              "system",
-              `Action ${action.type} succeeded: ${JSON.stringify(lastResult.data)}`,
-            );
-          } else {
-            this.messageContextHistory.addMessage(
-              "system",
-              `Action ${action.type} succeeded`,
-            );
-          }
-        } else E{
-          const errorMessage = lastResult.error
-            ? lastResult.error.message
-            : "Unknown error";
-          this.messageContextHistory.addMessage(
-            "system",
-            `Action ${action.type} failed: ${errorMessage}`,
-          );
-        }
- 
-        // Store result in queue for processing requirements
-        this.actionQueue.setActionResult(
-          action.type,
-          action.content,
-          lastResult,
-        );
- 
-        Iif (!lastResult.success) {
-          // Clear queue on error
-          this.actionQueue.clear();
-          break;
-        }
- 
-        // If this action requires processing, include its results in the final output
-        if (blueprint?.requiresProcessing && lastResult.success) {
-          lastResult = {
-            ...lastResult,
-            processedResults: this.actionQueue.getProcessedResults(),
-          };
-        }
-      }
- 
-      // Get final processed results before clearing
-      const finalProcessedResults = this.actionQueue.getProcessedResults();
- 
-      // Clear queue before returning
-      this.actionQueue.clear();
- 
-      // Include processed results in final output if there are any
-      return finalProcessedResults.size > 0
-        ? { ...lastResult, processedResults: finalProcessedResults }
-        : lastResult;
-    } catch (error) {
-      // Clear queue on error
-      this.actionQueue.clear();
- 
-      // Log the error
-      this.messageContextLogger.logActionResult("unknown", {
-        success: false,
-        error: error as Error,
-      });
-      this.messageContextHistory.addMessage(
-        "system",
-        `Action failed with error: ${(error as Error).message}`,
-      );
- 
-      return {
-        success: false,
-        error: error as Error,
-      };
-    }
-  }
-}
- 
- -
-
- - - - - - - - \ No newline at end of file diff --git a/coverage/lcov-report/services/LLM/actions/ActionTagsExtractor.ts.html b/coverage/lcov-report/services/LLM/actions/ActionTagsExtractor.ts.html deleted file mode 100644 index f4c5325d..00000000 --- a/coverage/lcov-report/services/LLM/actions/ActionTagsExtractor.ts.html +++ /dev/null @@ -1,475 +0,0 @@ - - - - - - Code coverage report for services/LLM/actions/ActionTagsExtractor.ts - - - - - - - - - -
-
-

All files / services/LLM/actions ActionTagsExtractor.ts

-
- -
- 86% - Statements - 43/50 -
- - -
- 79.16% - Branches - 19/24 -
- - -
- 75% - Functions - 9/12 -
- - -
- 87.8% - Lines - 36/41 -
- - -
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

- -
-
-

-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -18 -19 -20 -21 -22 -23 -24 -25 -26 -27 -28 -29 -30 -31 -32 -33 -34 -35 -36 -37 -38 -39 -40 -41 -42 -43 -44 -45 -46 -47 -48 -49 -50 -51 -52 -53 -54 -55 -56 -57 -58 -59 -60 -61 -62 -63 -64 -65 -66 -67 -68 -69 -70 -71 -72 -73 -74 -75 -76 -77 -78 -79 -80 -81 -82 -83 -84 -85 -86 -87 -88 -89 -90 -91 -92 -93 -94 -95 -96 -97 -98 -99 -100 -101 -102 -103 -104 -105 -106 -107 -108 -109 -110 -111 -112 -113 -114 -115 -116 -117 -118 -119 -120 -121 -122 -123 -124 -125 -126 -127 -128 -129 -130 -13116x -16x -  -  -16x -  -  -4x -4x -  -4x -48x -48x -64x -  -  -  -4x -  -  -  -  -  -  -  -  -  -6x -  -  -6x -52x -  -52x -  -  -52x -2x -  -  -  -  -4x -  -4x -32x -  -32x -  -  -32x -  -  -  -  -4x -  -  -  -  -  -  -  -  -  -15x -15x -  -15x -11x -  -  -  -  -  -  -  -  -  -  -6x -6x -7x -  -  -  -  -  -  -  -  -  -3x -3x -  -2x -  -6x -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -4x -4x -  -3x -  -  -  -  -  -  -  -  -  -  -  -  -  - 
import { autoInjectable } from "tsyringe";
-import { getBlueprint, getImplementedActions } from "./blueprints";
- 
-@autoInjectable()
-export class ActionTagsExtractor {
-  private getParameterTags(): string[] {
-    // Get all parameter names from all action blueprints
-    const paramSet = new Set<string>();
-    const actionTags = getImplementedActions();
- 
-    for (const tag of actionTags) {
-      const blueprint = getBlueprint(tag);
-      blueprint.parameters?.forEach((param) => {
-        paramSet.add(param.name);
-      });
-    }
- 
-    return Array.from(paramSet);
-  }
- 
-  /**
-   * Validates if a tag has proper XML structure
-   * @param content Full text content to validate
-   * @returns Message indicating if structure is valid or what's wrong
-   */
-  validateStructure(content: string): string {
-    // Get implemented action tags dynamically
-    const actionTags = getImplementedActions();
- 
-    // First validate the outer action tags
-    for (const tag of actionTags) {
-      const openCount = (content.match(new RegExp(`<${tag}>`, "g")) || [])
-        .length;
-      const closeCount = (content.match(new RegExp(`</${tag}>`, "g")) || [])
-        .length;
- 
-      if (openCount !== closeCount) {
-        return `We need to use proper tag structure, try again. Missing ${openCount > closeCount ? "closing" : "opening"} tag for <${tag}>.`;
-      }
-    }
- 
-    // Then validate inner parameter tags
-    const parameterTags = this.getParameterTags();
- 
-    for (const tag of parameterTags) {
-      const openCount = (content.match(new RegExp(`<${tag}>`, "g")) || [])
-        .length;
-      const closeCount = (content.match(new RegExp(`</${tag}>`, "g")) || [])
-        .length;
- 
-      Iif (openCount !== closeCount) {
-        return `We need to use proper tag structure, try again. Missing ${openCount > closeCount ? "closing" : "opening"} tag for <${tag}>.`;
-      }
-    }
- 
-    return "";
-  }
- 
-  /**
-   * Extracts content from a single tag
-   * @param content Full text content
-   * @param tagName Name of the tag to extract
-   * @returns The content within the tag or null if not found
-   */
-  extractTag(content: string, tagName: string): string | string[] | null {
-    const regex = new RegExp(`<${tagName}>([\\s\\S]*?)</${tagName}>`, "g");
-    const matches = Array.from(content.matchAll(regex));
- 
-    if (matches.length === 0) return null;
-    if (matches.length === 1) return matches[0][1].trim();
-    return matches.map((match) => match[1].trim());
-  }
- 
-  /**
-   * Extracts content from multiple instances of the same tag
-   * @param content Full text content
-   * @param tagName Name of the tag to extract
-   * @returns Array of content within each instance of the tag
-   */
-  extractTags(content: string, tagName: string): string[] {
-    const regex = new RegExp(`<${tagName}>([\\s\\S]*?)</${tagName}>`, "g");
-    const matches = content.matchAll(regex);
-    return Array.from(matches).map((match) => match[1].trim());
-  }
- 
-  /**
-   * Extracts content from a tag and splits it into lines
-   * @param content Full text content
-   * @param tagName Name of the tag to extract
-   * @returns Array of non-empty trimmed lines from the tag content
-   */
-  extractTagLines(content: string, tagName: string): string[] {
-    const tagContent = this.extractTag(content, tagName);
-    if (!tagContent || Array.isArray(tagContent)) return [];
- 
-    return tagContent
-      .split("\n")
-      .map((line) => line.trim())
-      .filter(Boolean);
-  }
- 
-  /**
-   * Extracts nested tags from within a parent tag
-   * @param content Full text content
-   * @param parentTag Parent tag name
-   * @param childTag string
-   * @returns Array of content within child tags, found within the parent tag
-   */
-  extractNestedTags(
-    content: string,
-    parentTag: string,
-    childTag: string,
-  ): string[] {
-    const parentContent = this.extractTag(content, parentTag);
-    if (!parentContent || Array.isArray(parentContent)) return [];
- 
-    return this.extractTags(parentContent, childTag);
-  }
- 
-  /**
-   * Extracts all instances of a tag with their complete content
-   * @param content Full text content
-   * @param tagName Name of the tag to extract
-   * @returns Array of complete tag contents including nested tags
-   */
-  extractAllTagsWithContent(content: string, tagName: string): string[] {
-    const regex = new RegExp(`<${tagName}>[\\s\\S]*?</${tagName}>`, "g");
-    const matches = content.match(regex);
-    return matches ? matches.map((match) => match.trim()) : [];
-  }
-}
- -
-
- - - - - - - - \ No newline at end of file diff --git a/coverage/lcov-report/services/LLM/actions/ActionsParser.ts.html b/coverage/lcov-report/services/LLM/actions/ActionsParser.ts.html deleted file mode 100644 index 138de744..00000000 --- a/coverage/lcov-report/services/LLM/actions/ActionsParser.ts.html +++ /dev/null @@ -1,1417 +0,0 @@ - - - - - - Code coverage report for services/LLM/actions/ActionsParser.ts - - - - - - - - - -
-
-

All files / services/LLM/actions ActionsParser.ts

-
- -
- 81.37% - Statements - 166/204 -
- - -
- 62.9% - Branches - 39/62 -
- - -
- 81.08% - Functions - 30/37 -
- - -
- 83.15% - Lines - 158/190 -
- - -
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

- -
-
-

-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -18 -19 -20 -21 -22 -23 -24 -25 -26 -27 -28 -29 -30 -31 -32 -33 -34 -35 -36 -37 -38 -39 -40 -41 -42 -43 -44 -45 -46 -47 -48 -49 -50 -51 -52 -53 -54 -55 -56 -57 -58 -59 -60 -61 -62 -63 -64 -65 -66 -67 -68 -69 -70 -71 -72 -73 -74 -75 -76 -77 -78 -79 -80 -81 -82 -83 -84 -85 -86 -87 -88 -89 -90 -91 -92 -93 -94 -95 -96 -97 -98 -99 -100 -101 -102 -103 -104 -105 -106 -107 -108 -109 -110 -111 -112 -113 -114 -115 -116 -117 -118 -119 -120 -121 -122 -123 -124 -125 -126 -127 -128 -129 -130 -131 -132 -133 -134 -135 -136 -137 -138 -139 -140 -141 -142 -143 -144 -145 -146 -147 -148 -149 -150 -151 -152 -153 -154 -155 -156 -157 -158 -159 -160 -161 -162 -163 -164 -165 -166 -167 -168 -169 -170 -171 -172 -173 -174 -175 -176 -177 -178 -179 -180 -181 -182 -183 -184 -185 -186 -187 -188 -189 -190 -191 -192 -193 -194 -195 -196 -197 -198 -199 -200 -201 -202 -203 -204 -205 -206 -207 -208 -209 -210 -211 -212 -213 -214 -215 -216 -217 -218 -219 -220 -221 -222 -223 -224 -225 -226 -227 -228 -229 -230 -231 -232 -233 -234 -235 -236 -237 -238 -239 -240 -241 -242 -243 -244 -245 -246 -247 -248 -249 -250 -251 -252 -253 -254 -255 -256 -257 -258 -259 -260 -261 -262 -263 -264 -265 -266 -267 -268 -269 -270 -271 -272 -273 -274 -275 -276 -277 -278 -279 -280 -281 -282 -283 -284 -285 -286 -287 -288 -289 -290 -291 -292 -293 -294 -295 -296 -297 -298 -299 -300 -301 -302 -303 -304 -305 -306 -307 -308 -309 -310 -311 -312 -313 -314 -315 -316 -317 -318 -319 -320 -321 -322 -323 -324 -325 -326 -327 -328 -329 -330 -331 -332 -333 -334 -335 -336 -337 -338 -339 -340 -341 -342 -343 -344 -345 -346 -347 -348 -349 -350 -351 -352 -353 -354 -355 -356 -357 -358 -359 -360 -361 -362 -363 -364 -365 -366 -367 -368 -369 -370 -371 -372 -373 -374 -375 -376 -377 -378 -379 -380 -381 -382 -383 -384 -385 -386 -387 -388 -389 -390 -391 -392 -393 -394 -395 -396 -397 -398 -399 -400 -401 -402 -403 -404 -405 -406 -407 -408 -409 -410 -411 -412 -413 -414 -415 -416 -417 -418 -419 -420 -421 -422 -423 -424 -425 -426 -427 -428 -429 -430 -431 -432 -433 -434 -435 -436 -437 -438 -439 -440 -441 -442 -443 -444 -4454x -4x -  -  -  -  -  -  -4x -4x -4x -4x -4x -4x -  -  -  -  -  -  -  -  -4x -69x -69x -69x -69x -69x -  -  -69x -69x -69x -69x -  -  -  -38x -38x -38x -38x -  -  -  -1x -  -  -  -3x -36x -42x -  -  -  -  -  -3x -3x -3x -  -2x -2x -2x -  -1x -  -  -  -3x -3x -  -2x -2x -  -1x -  -  -  -  -6x -6x -  -  -  -  -6x -6x -6x -  -  -  -  -  -  -  -  -  -  -  -  -  -13x -17x -  -17x -  -6x -11x -3x -3x -3x -  -6x -  -  -17x -  -  -  -  -  -  -  -  -  -  -17x -  -  -  -  -  -  -13x -13x -  -  -13x -34x -34x -  -  -13x -12x -12x -  -  -12x -  -17x -  -  -  -  -  -  -17x -17x -  -  -  -  -  -  -12x -12x -12x -17x -  -  -  -12x -8x -  -  -  -  -  -  -12x -7x -  -  -  -  -  -  -12x -12x -  -  -13x -  -  -  -14x -  -  -  -14x -14x -1x -  -  -1x -  -  -  -13x -13x -13x -  -  -  -13x -  -13x -18x -18x -18x -17x -  -  -  -  -17x -  -  -  -13x -13x -  -  -  -2x -  -  -  -  -  -  -  -  -2x -  -  -  -1x -  -  -  -1x -  -  -  -1x -  -  -  -1x -  -  -  -8x -8x -  -8x -  -8x -  -  -  -8x -3x -  -  -  -  -  -3x -  -  -3x -  -  -5x -1x -  -  -4x -  -  -  -4x -  -  -  -  -  -  -  -4x -1x -  -  -3x -  -  -  -  -  -  -  -7x -7x -  -7x -  -7x -7x -7x -  -7x -8x -  -8x -4x -5x -  -5x -  -  -  -  -4x -4x -  -  -4x -5x -  -  -  -  -  -  -  -  -  -4x -4x -5x -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -4x -4x -  -  -  -4x -  -  -  -  -4x -  -4x -1x -  -  -  -1x -1x -  -  -3x -2x -2x -1x -1x -  -  -  -  -  -  -  -  -  -  -  -  -7x -9x -  -  -7x -1x -  -  -1x -  -  -6x -8x -  -  -  -  -6x -5x -5x -  -  -  -  -  -  -  -  -  -6x -  -  -  -  -  -  -  -  -  - 
import { LLMContextCreator } from "@services/LLM/LLMContextCreator";
-import { ActionTagsExtractor } from "@services/LLM/actions/ActionTagsExtractor";
-import {
-  IActionDependency,
-  IActionExecutionPlan,
-  IActionGroup,
-  WriteActionData,
-} from "@services/LLM/actions/types/ActionTypes";
-import { DebugLogger } from "@services/logging/DebugLogger";
-import { HtmlEntityDecoder } from "@services/text/HTMLEntityDecoder";
-import path from "path";
-import { autoInjectable } from "tsyringe";
-import { v4 as uuidv4 } from "uuid";
-import { getBlueprint, getImplementedActions } from "./blueprints";
- 
-export interface ActionExecutionResult {
-  actions: Array<{ action: string; result: any }>;
-  followupResponse?: string;
-  selectedModel?: string;
-}
- 
-@autoInjectable()
-export class ActionsParser {
-  private currentMessageBuffer: string = "";
-  private isProcessingAction: boolean = false;
-  private messageComplete: boolean = false;
-  private processedTags: string[] = [];
-  private currentModel: string = "";
- 
-  constructor(
-    private debugLogger: DebugLogger,
-    private contextCreator: LLMContextCreator,
-    private htmlEntityDecoder: HtmlEntityDecoder,
-    private actionTagsExtractor: ActionTagsExtractor,
-  ) {}
- 
-  reset() {
-    this.currentMessageBuffer = "";
-    this.isProcessingAction = false;
-    this.messageComplete = false;
-    this.processedTags = [];
-  }
- 
-  isCompleteMessage(text: string): boolean {
-    return true;
-  }
- 
-  private getActionsWithPathParam(): string[] {
-    return getImplementedActions().filter((tag) => {
-      const blueprint = getBlueprint(tag);
-      return blueprint.parameters?.some((param) => param.name === "path");
-    });
-  }
- 
-  extractFilePath(tag: string): string | null {
-    // Get actions that have a path parameter from their blueprints
-    const fileActions = this.getActionsWithPathParam();
-    const actionMatch = new RegExp(`<(${fileActions.join("|")})>`).exec(tag);
-    if (!actionMatch) return null;
- 
-    const pathMatch = /<path>(.*?)<\/path>/;
-    const match = tag.match(pathMatch);
-    if (!match) return null;
- 
-    return path.resolve(process.cwd(), match[1]);
-  }
- 
-  extractUrl(tag: string): string | null {
-    const actionMatch = /<fetch_url>[\s\S]*?<\/fetch_url>/i.exec(tag);
-    if (!actionMatch) return null;
- 
-    const urlMatch = /<url>(.*?)<\/url>/i.exec(tag);
-    if (!urlMatch) return null;
- 
-    return urlMatch[1];
-  }
- 
-  private extractContentFromAction(actionContent: string): string {
-    // First try to find content tag
-    const contentMatch = actionContent.match(/<content>([\s\S]*?)<\/content>/);
-    Iif (contentMatch) {
-      return contentMatch[1];
-    }
- 
-    // If no content tag, try to find path tag for file operations
-    const pathMatch = actionContent.match(/<path>(.*?)<\/path>/);
-    if (pathMatch) {
-      return pathMatch[1];
-    }
- 
-    // For read_file actions, we want the entire content for dependency tracking
-    Iif (actionContent.includes("<read_file>")) {
-      return actionContent;
-    }
- 
-    return "";
-  }
- 
-  private detectActionDependencies(
-    actions: IActionDependency[],
-  ): IActionDependency[] {
-    return actions.map((action) => {
-      const dependsOn: string[] = [];
- 
-      if (action.type === "write_file") {
-        // Find read_file actions whose content is used in this write_file
-        const readActions = actions.filter((a) => {
-          if (a.type !== "read_file") return false;
-          const readContent = this.extractContentFromAction(a.content);
-          const writeContent = this.extractContentFromAction(action.content);
-          return writeContent.includes(readContent);
-        });
-        dependsOn.push(...readActions.map((a) => a.actionId));
-      }
- 
-      Iif (["move_file", "delete_file", "copy_file"].includes(action.type)) {
-        // These actions should wait for any write operations on the same file
-        const writeActions = actions.filter((a) => {
-          Iif (a.type !== "write_file") return false;
-          const writePath = this.extractFilePath(a.content);
-          const actionPath = this.extractFilePath(action.content);
-          return writePath === actionPath;
-        });
-        dependsOn.push(...writeActions.map((a) => a.actionId));
-      }
- 
-      return { ...action, dependsOn };
-    });
-  }
- 
-  private createExecutionPlan(
-    actions: IActionDependency[],
-  ): IActionExecutionPlan {
-    const groups: IActionGroup[] = [];
-    const unprocessedActions = [...actions];
- 
-    // Helper to check if an action can be executed in parallel
-    const canRunInParallel = (action: IActionDependency) => {
-      const blueprint = getBlueprint(action.type);
-      return blueprint.canRunInParallel !== false;
-    };
- 
-    while (unprocessedActions.length > 0) {
-      const currentGroup: IActionDependency[] = [];
-      const remainingActions: IActionDependency[] = [];
- 
-      // First, find all actions that can be executed (no pending dependencies)
-      unprocessedActions.forEach((action) => {
-        const canExecute =
-          !action.dependsOn?.length ||
-          action.dependsOn.every(
-            (depId) =>
-              actions.find((a) => a.actionId === depId)?.type === "end_task" ||
-              !unprocessedActions.find((ua) => ua.actionId === depId),
-          );
- 
-        if (canExecute) {
-          currentGroup.push(action);
-        } else E{
-          remainingActions.push(action);
-        }
-      });
- 
-      // If we have actions that can be executed, split them into parallel and sequential groups
-      if (currentGroup.length > 0) {
-        const parallelActions = currentGroup.filter(canRunInParallel);
-        const sequentialActions = currentGroup.filter(
-          (action) => !canRunInParallel(action),
-        );
- 
-        // Add parallel actions as one group if there are any
-        if (parallelActions.length > 0) {
-          groups.push({
-            actions: parallelActions,
-            parallel: true,
-          });
-        }
- 
-        // Add each sequential action as its own group
-        sequentialActions.forEach((action) => {
-          groups.push({
-            actions: [action],
-            parallel: false,
-          });
-        });
-      }
- 
-      unprocessedActions.length = 0;
-      unprocessedActions.push(...remainingActions);
-    }
- 
-    return { groups };
-  }
- 
-  findCompleteTags(text: string): IActionExecutionPlan {
-    const combinedText = this.currentMessageBuffer + text;
- 
-    // Validate tag structure before processing
-    const validationError =
-      this.actionTagsExtractor.validateStructure(combinedText);
-    if (validationError) {
-      this.debugLogger.log("Validation", "Tag structure validation failed", {
-        error: validationError,
-      });
-      return { groups: [] };
-    }
- 
-    // Find all action tags in order of appearance
-    const actions: IActionDependency[] = [];
-    const actionTags = getImplementedActions();
-    const allTagsRegex = new RegExp(
-      `<(${actionTags.join("|")})>[\\s\\S]*?</\\1>`,
-      "g",
-    );
-    const matches = Array.from(combinedText.matchAll(allTagsRegex));
- 
-    for (const match of matches) {
-      const content = match[0];
-      const type = match[1] as any; // The captured tag name
-      if (!this.processedTags.includes(content)) {
-        actions.push({
-          actionId: uuidv4(),
-          type,
-          content,
-        });
-        this.processedTags.push(content);
-      }
-    }
- 
-    const actionsWithDependencies = this.detectActionDependencies(actions);
-    return this.createExecutionPlan(actionsWithDependencies);
-  }
- 
-  appendToBuffer(chunk: string) {
-    this.currentMessageBuffer += chunk;
-  }
- 
-  clearBuffer() {
-    this.currentMessageBuffer = "";
-    this.processedTags = [];
-  }
- 
-  get buffer() {
-    return this.currentMessageBuffer;
-  }
- 
-  get isProcessing() {
-    return this.isProcessingAction;
-  }
- 
-  set isProcessing(value: boolean) {
-    this.isProcessingAction = value;
-  }
- 
-  get isComplete() {
-    return this.messageComplete;
-  }
- 
-  set isComplete(value: boolean) {
-    this.messageComplete = value;
-  }
- 
-  private formatActionResult(action: string, result: any): string {
-    const actionMatch = /<(\w+)>([\s\S]*?)<\/\1>/.exec(action);
-    Iif (!actionMatch) return `[Action Result] Invalid action format`;
- 
-    const [_, actionType] = actionMatch;
- 
-    Iif (actionType === "execute_command" && result.success) {
-      return `Command execution result:\n\n${result.data}\n\nPlease analyze this output and continue with the task.`;
-    }
- 
-    if (actionType === "read_file" && result.success) {
-      const output = this.htmlEntityDecoder.decode(
-        JSON.stringify(result.data),
-        {
-          unescape: true,
-        },
-      );
-      Iif (typeof result.data === "string" && result.data.includes("# File:")) {
-        return result.data;
-      }
-      return `Here's the content of the requested file:\n\n${output}\n\nPlease analyze this content and continue with the task.`;
-    }
- 
-    if (actionType === "fetch_url" && result.success) {
-      return `Here's the content fetched from the URL:\n\n${result.data}\n\nPlease analyze this content and continue with the task.`;
-    }
- 
-    Iif (actionType === "end_task" && result.success) {
-      return `Task completed: ${result.data}`;
-    }
- 
-    Iif (actionType === "end_phase" && result.success) {
-      const data = result.data as WriteActionData;
-      Iif (data?.regenerate && data?.prompt) {
-        return data.prompt as string;
-      }
-      return `Phase completed. Moving to next phase.`;
-    }
- 
-    if (actionType === "relative_path_lookup" && result.success) {
-      return `Found matching path: ${JSON.stringify(result.data)}`;
-    }
- 
-    return `[Action Result] ${actionType}: ${JSON.stringify(result)} ${result.success && "Proceed to next previously planned step."}`;
-  }
- 
-  async parseAndExecuteActions(
-    text: string,
-    model: string,
-    llmCallback: (message: string) => Promise<string>,
-  ): Promise<ActionExecutionResult> {
-    try {
-      this.currentModel = model;
- 
-      const executionPlan = this.findCompleteTags(text);
- 
-      const results: Array<{ action: string; result: any }> = [];
-      let selectedModel = model;
-      let hasError = false;
- 
-      for (const group of executionPlan.groups) {
-        Iif (hasError) break;
- 
-        if (group.parallel) {
-          const actionPromises = group.actions.map((action) =>
-            this.contextCreator
-              .executeAction(action.content)
-              .then((result) => ({
-                action: action.content,
-                result,
-              })),
-          );
-          const groupResults = await Promise.all(actionPromises);
-          results.push(...groupResults);
- 
-          // Check for errors in parallel actions
-          for (const result of groupResults) {
-            Iif (!result.result.success) {
-              this.debugLogger.log("Action", "Action failed", {
-                action: result.action,
-                result: result.result,
-              });
-              hasError = true;
-              break;
-            }
-          }
- 
-          if (!hasError) {
-            for (const result of groupResults) {
-              Iif (result.action.includes("<write_file>")) {
-                const writeData = result.result.data as WriteActionData;
-                Iif (writeData?.selectedModel) {
-                  selectedModel = writeData.selectedModel;
-                  this.debugLogger.log(
-                    "Model",
-                    "Updated model from write action",
-                    {
-                      model: selectedModel,
-                    },
-                  );
-                }
-              }
-            }
-          }
-        } else {
-          for (const action of group.actions) {
-            const result = await this.contextCreator.executeAction(
-              action.content,
-            );
- 
-            this.debugLogger.log("Action", "Action executed", {
-              action: action.content,
-              result,
-            });
- 
-            results.push({ action: action.content, result });
- 
-            if (!result.success) {
-              this.debugLogger.log("Action", "Action failed", {
-                action: action.content,
-                result,
-              });
-              hasError = true;
-              break;
-            }
- 
-            if (action.type === "write_file") {
-              const writeData = result.data as WriteActionData;
-              if (writeData?.selectedModel) {
-                selectedModel = writeData.selectedModel;
-                this.debugLogger.log(
-                  "Model",
-                  "Updated model from write action",
-                  {
-                    model: selectedModel,
-                  },
-                );
-              }
-            }
-          }
-        }
-      }
- 
-      const endTaskAction = results.find(
-        ({ action, result }) => action.includes("<end_task>") && result.success,
-      );
- 
-      if (endTaskAction) {
-        this.debugLogger.log("EndTask", "Task completed", {
-          message: endTaskAction.result.data,
-        });
-        return { actions: results, selectedModel };
-      }
- 
-      const actionResults = results
-        .map(({ action, result }) => this.formatActionResult(action, result))
-        .join("\n\n");
- 
-      // Only get followupResponse if there were no errors
-      let followupResponse;
-      if (!hasError) {
-        followupResponse = await llmCallback(actionResults);
-        this.debugLogger.log(
-          "Response",
-          "Received LLM response for action results",
-          {
-            response: followupResponse,
-            selectedModel,
-          },
-        );
-      }
- 
-      return { actions: results, followupResponse, selectedModel };
-    } catch (error) {
-      console.error("Error in parseAndExecuteActions:", error);
-      this.debugLogger.log("Error", "Failed to parse and execute actions", {
-        error,
-      });
-      return { actions: [] };
-    }
-  }
-}
- 
- -
-
- - - - - - - - \ No newline at end of file diff --git a/coverage/lcov-report/services/LLM/actions/CommandAction.ts.html b/coverage/lcov-report/services/LLM/actions/CommandAction.ts.html deleted file mode 100644 index b7a7ceb7..00000000 --- a/coverage/lcov-report/services/LLM/actions/CommandAction.ts.html +++ /dev/null @@ -1,589 +0,0 @@ - - - - - - Code coverage report for services/LLM/actions/CommandAction.ts - - - - - - - - - -
-
-

All files / services/LLM/actions CommandAction.ts

-
- -
- 90.66% - Statements - 68/75 -
- - -
- 62.5% - Branches - 10/16 -
- - -
- 92.3% - Functions - 12/13 -
- - -
- 90.41% - Lines - 66/73 -
- - -
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

- -
-
-

-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -18 -19 -20 -21 -22 -23 -24 -25 -26 -27 -28 -29 -30 -31 -32 -33 -34 -35 -36 -37 -38 -39 -40 -41 -42 -43 -44 -45 -46 -47 -48 -49 -50 -51 -52 -53 -54 -55 -56 -57 -58 -59 -60 -61 -62 -63 -64 -65 -66 -67 -68 -69 -70 -71 -72 -73 -74 -75 -76 -77 -78 -79 -80 -81 -82 -83 -84 -85 -86 -87 -88 -89 -90 -91 -92 -93 -94 -95 -96 -97 -98 -99 -100 -101 -102 -103 -104 -105 -106 -107 -108 -109 -110 -111 -112 -113 -114 -115 -116 -117 -118 -119 -120 -121 -122 -123 -124 -125 -126 -127 -128 -129 -130 -131 -132 -133 -134 -135 -136 -137 -138 -139 -140 -141 -142 -143 -144 -145 -146 -147 -148 -149 -150 -151 -152 -153 -154 -155 -156 -157 -158 -159 -160 -161 -162 -163 -164 -165 -166 -167 -168 -169  -16x -16x -16x -16x -16x -16x -16x -16x -  -  -  -  -  -  -  -16x -  -9x -9x -9x -  -9x -  -  -  -44x -  -  -  -9x -9x -9x -1x -1x -  -  -  -8x -  -  -  -  -8x -8x -  -  -  -9x -  -9x -1x -  -  -8x -  -  -  -  -  -8x -8x -8x -8x -  -  -  -  -  -  -  -11x -  -  -  -  -  -  -  -  -  -8x -8x -8x -  -8x -8x -8x -  -  -8x -8x -  -  -8x -9x -9x -9x -9x -9x -  -  -9x -  -  -  -  -  -8x -2x -2x -2x -2x -2x -  -  -2x -  -  -  -  -8x -8x -8x -  -8x -  -  -8x -  -  -  -8x -  -  -  -8x -  -8x -  -  -8x -  -  -  -  -  -8x -  -  -  -8x -8x -  -  -8x -  -  -  -  -  -  -  -  -  -  -  -  - 
import { IActionResult } from "@services/LLM/actions/types/ActionTypes";
-import { DebugLogger } from "@services/logging/DebugLogger";
-import { AnsiStripper } from "@services/text/AnsiStripper";
-import chalk from "chalk";
-import { spawn, SpawnOptionsWithoutStdio } from "child_process";
-import { autoInjectable } from "tsyringe";
-import { ActionTagsExtractor } from "./ActionTagsExtractor";
-import { commandActionBlueprint as blueprint } from "./blueprints/commandActionBlueprint";
-import { BaseAction } from "./core/BaseAction";
-import { IActionBlueprint } from "./core/IAction";
- 
-interface CommandParams {
-  command: string;
-}
- 
-@autoInjectable()
-export class CommandAction extends BaseAction {
-  constructor(
-    protected actionTagsExtractor: ActionTagsExtractor,
-    private debugLogger: DebugLogger,
-    private ansiStripper: AnsiStripper,
-  ) {
-    super(actionTagsExtractor);
-  }
- 
-  protected getBlueprint(): IActionBlueprint {
-    return blueprint;
-  }
- 
-  protected parseParams(content: string): Record<string, any> {
-    const tag = this.getBlueprint().tag;
-    const match = content.match(new RegExp(`<${tag}>[\\s\\S]*?<\\/${tag}>`));
-    if (!match) {
-      this.logError("Failed to parse command from content");
-      return { command: "" };
-    }
- 
-    // Extract the command from between the tags and trim whitespace
-    const command = match[0]
-      .replace(new RegExp(`^<${tag}>`), "")
-      .replace(new RegExp(`<\\/${tag}>$`), "")
-      .trim();
- 
-    this.logInfo(`Parsed command: ${command}`);
-    return { command };
-  }
- 
-  protected validateParams(params: Record<string, any>): string | null {
-    const { command } = params as CommandParams;
- 
-    if (!command || command.trim().length === 0) {
-      return "No valid command to execute";
-    }
- 
-    return null;
-  }
- 
-  protected async executeInternal(
-    params: Record<string, any>,
-  ): Promise<IActionResult> {
-    try {
-      const { command } = params as CommandParams;
-      this.logInfo(`Executing command: ${command}`);
-      return this.executeCommand(command);
-    } catch (error) {
-      // Even on error, return success with the error message as output
-      return this.createSuccessResult((error as Error).message);
-    }
-  }
- 
-  private isTestEnvironment(): boolean {
-    return (
-      process.env.NODE_ENV === "test" ||
-      process.env.JEST_WORKER_ID !== undefined
-    );
-  }
- 
-  private async executeCommand(
-    command: string,
-    options?: SpawnOptionsWithoutStdio,
-  ): Promise<IActionResult> {
-    return new Promise((resolve) => {
-      const [cmd, ...args] = command.split(" ");
-      const child = spawn(cmd, args, { ...options, shell: true });
- 
-      let stdoutData = "";
-      let stderrData = "";
-      let isResolved = false;
- 
-      // Buffers to handle partial ANSI codes
-      let stdoutBuffer = "";
-      let stderrBuffer = "";
- 
-      // Handle standard output data
-      child.stdout.on("data", (data: Buffer) => {
-        const chunk = data.toString();
-        stdoutBuffer += chunk;
-        const strippedChunk = this.ansiStripper.strip(stdoutBuffer);
-        stdoutData += strippedChunk;
-        stdoutBuffer = ""; // Reset buffer after processing
- 
-        // Only stream to console if not in test environment
-        Iif (!this.isTestEnvironment()) {
-          process.stdout.write(chalk.green(chunk));
-        }
-      });
- 
-      // Handle standard error data
-      child.stderr.on("data", (data: Buffer) => {
-        const chunk = data.toString();
-        stderrBuffer += chunk;
-        const strippedChunk = this.ansiStripper.strip(stderrBuffer);
-        stderrData += strippedChunk;
-        stderrBuffer = ""; // Reset buffer after processing
- 
-        // Only stream to console if not in test environment
-        Iif (!this.isTestEnvironment()) {
-          process.stderr.write(chalk.red(chunk));
-        }
-      });
- 
-      const finalizeAndResolve = (exitCode: number | null = null) => {
-        if (!isResolved) {
-          isResolved = true;
-          // Process any remaining buffered data
-          Iif (stdoutBuffer) {
-            stdoutData += this.ansiStripper.strip(stdoutBuffer);
-          }
-          Iif (stderrBuffer) {
-            stderrData += this.ansiStripper.strip(stderrBuffer);
-          }
- 
-          const extra = `CRITICAL: If you're unsure why the command failed prioritize read_file to get more context from files related to the failure and a better understanding of the problem, instead of jumping to write_file right away with a solution
-            \n\n If you're stuck with the same problem over and over TRY DIFFERENT SOLUTIONS, don't keep trying the same thing over and over again`;
- 
-          // Add the exit code message if there's no output
-          const output = stdoutData + stderrData;
-          const combinedOutput =
-            (output || `Command completed with exit code ${exitCode}`) +
-            (exitCode === 1 ? extra : "");
- 
-          this.debugLogger.log("CommandAction", "Command execution completed", {
-            command,
-            exitCode,
-            output: combinedOutput,
-          });
- 
-          resolve(this.createSuccessResult(combinedOutput));
-        }
-      };
- 
-      child.on("close", (code) => {
-        finalizeAndResolve(code);
-      });
- 
-      child.on("error", (error) => {
-        this.debugLogger.log("CommandAction", "Command execution error", {
-          command,
-          error: error.message,
-        });
-        // Return success with error message as output
-        resolve(
-          this.createSuccessResult(`${error.message}: command not found`),
-        );
-      });
-    });
-  }
-}
- 
- -
-
- - - - - - - - \ No newline at end of file diff --git a/coverage/lcov-report/services/LLM/actions/CopyFileAction.ts.html b/coverage/lcov-report/services/LLM/actions/CopyFileAction.ts.html deleted file mode 100644 index d2595b84..00000000 --- a/coverage/lcov-report/services/LLM/actions/CopyFileAction.ts.html +++ /dev/null @@ -1,304 +0,0 @@ - - - - - - Code coverage report for services/LLM/actions/CopyFileAction.ts - - - - - - - - - -
-
-

All files / services/LLM/actions CopyFileAction.ts

-
- -
- 100% - Statements - 31/31 -
- - -
- 100% - Branches - 4/4 -
- - -
- 100% - Functions - 5/5 -
- - -
- 100% - Lines - 29/29 -
- - -
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

- -
-
-

-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -18 -19 -20 -21 -22 -23 -24 -25 -26 -27 -28 -29 -30 -31 -32 -33 -34 -35 -36 -37 -38 -39 -40 -41 -42 -43 -44 -45 -46 -47 -48 -49 -50 -51 -52 -53 -54 -55 -56 -57 -58 -59 -60 -61 -62 -63 -64 -65 -66 -67 -68 -69 -70 -71 -72 -73 -7416x -16x -16x -16x -16x -  -  -  -  -  -  -  -  -  -16x -  -1x -1x -  -1x -  -  -  -22x -  -  -  -5x -  -5x -1x -  -4x -1x -  -  -3x -  -  -  -  -8x -8x -3x -  -  -5x -  -  -  -  -  -3x -3x -  -3x -3x -  -3x -  -  -  -  -2x -1x -  -  -1x -  -1x -  -  -  - 
import { FileOperations } from "@services/FileManagement/FileOperations";
-import { autoInjectable } from "tsyringe";
-import { ActionTagsExtractor } from "./ActionTagsExtractor";
-import { copyFileActionBlueprint as blueprint } from "./blueprints/copyFileActionBlueprint";
-import { BaseAction } from "./core/BaseAction";
-import { IActionBlueprint } from "./core/IAction";
-import { IActionResult } from "./types/ActionTypes";
- 
-interface CopyFileParams {
-  source_path: string;
-  destination_path: string;
-}
- 
-@autoInjectable()
-export class CopyFileAction extends BaseAction {
-  constructor(
-    protected actionTagsExtractor: ActionTagsExtractor,
-    private fileOperations: FileOperations,
-  ) {
-    super(actionTagsExtractor);
-  }
- 
-  protected getBlueprint(): IActionBlueprint {
-    return blueprint;
-  }
- 
-  protected validateParams(params: Record<string, any>): string | null {
-    const { source_path, destination_path } = params as CopyFileParams;
- 
-    if (!source_path) {
-      return "No source path provided";
-    }
-    if (!destination_path) {
-      return "No destination path provided";
-    }
- 
-    return null;
-  }
- 
-  async execute(content: string): Promise<IActionResult> {
-    // Validate XML structure first
-    const structureError = this.actionTagsExtractor.validateStructure(content);
-    if (structureError) {
-      return this.createErrorResult(structureError);
-    }
- 
-    return super.execute(content);
-  }
- 
-  protected async executeInternal(
-    params: Record<string, any>,
-  ): Promise<IActionResult> {
-    try {
-      const { source_path, destination_path } = params as CopyFileParams;
- 
-      this.logInfo(`Source path: ${source_path}`);
-      this.logInfo(`Destination path: ${destination_path}`);
- 
-      const result = await this.fileOperations.copy(
-        source_path,
-        destination_path,
-      );
- 
-      if (!result.success) {
-        return this.createErrorResult(result.error!);
-      }
- 
-      return this.createSuccessResult(result.data);
-    } catch (error) {
-      return this.createErrorResult(error as Error);
-    }
-  }
-}
- 
- -
-
- - - - - - - - \ No newline at end of file diff --git a/coverage/lcov-report/services/LLM/actions/DeleteFileAction.ts.html b/coverage/lcov-report/services/LLM/actions/DeleteFileAction.ts.html deleted file mode 100644 index 8bf65756..00000000 --- a/coverage/lcov-report/services/LLM/actions/DeleteFileAction.ts.html +++ /dev/null @@ -1,304 +0,0 @@ - - - - - - Code coverage report for services/LLM/actions/DeleteFileAction.ts - - - - - - - - - -
-
-

All files / services/LLM/actions DeleteFileAction.ts

-
- -
- 88.57% - Statements - 31/35 -
- - -
- 100% - Branches - 5/5 -
- - -
- 100% - Functions - 5/5 -
- - -
- 87.87% - Lines - 29/33 -
- - -
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

- -
-
-

-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -18 -19 -20 -21 -22 -23 -24 -25 -26 -27 -28 -29 -30 -31 -32 -33 -34 -35 -36 -37 -38 -39 -40 -41 -42 -43 -44 -45 -46 -47 -48 -49 -50 -51 -52 -53 -54 -55 -56 -57 -58 -59 -60 -61 -62 -63 -64 -65 -66 -67 -68 -69 -70 -71 -72 -73 -7416x -16x -16x -16x -16x -  -  -  -  -  -  -  -  -16x -  -5x -5x -  -5x -  -  -  -6x -  -  -  -5x -  -5x -2x -  -  -3x -  -  -  -  -  -3x -3x -  -3x -3x -  -3x -2x -2x -  -  -1x -1x -  -  -  -  -  -  -  -  -  -5x -5x -  -  -  -  -5x -5x -2x -  -  -3x -  - 
import { FileOperations } from "@services/FileManagement/FileOperations";
-import { autoInjectable } from "tsyringe";
-import { ActionTagsExtractor } from "./ActionTagsExtractor";
-import { deleteFileActionBlueprint as blueprint } from "./blueprints/deleteFileActionBlueprint";
-import { BaseAction } from "./core/BaseAction";
-import { IActionBlueprint } from "./core/IAction";
-import { IActionResult } from "./types/ActionTypes";
- 
-interface DeleteFileParams {
-  path: string;
-}
- 
-@autoInjectable()
-export class DeleteFileAction extends BaseAction {
-  constructor(
-    protected actionTagsExtractor: ActionTagsExtractor,
-    private fileOperations: FileOperations,
-  ) {
-    super(actionTagsExtractor);
-  }
- 
-  protected getBlueprint(): IActionBlueprint {
-    return blueprint;
-  }
- 
-  protected validateParams(params: Record<string, any>): string | null {
-    const { path } = params as DeleteFileParams;
- 
-    if (typeof path !== "string" || !path.trim()) {
-      return "Invalid or no file path provided";
-    }
- 
-    return null;
-  }
- 
-  protected async executeInternal(
-    params: Record<string, any>,
-  ): Promise<IActionResult> {
-    try {
-      const { path: filePath } = params as DeleteFileParams;
- 
-      this.logInfo(`Attempting to delete file at path: ${filePath}`);
-      const result = await this.fileOperations.delete(filePath);
- 
-      if (!result.success) {
-        this.logError(`Failed to delete file at path: ${filePath}. Error: ${result.error}`);
-        return this.createErrorResult(result.error!);
-      }
- 
-      this.logInfo(`Successfully deleted file at path: ${filePath}`);
-      return this.createSuccessResult(result.data);
-    } catch (error) {
-      const { path: filePath } = params as DeleteFileParams;
-      this.logError(`An unexpected error occurred while deleting file at path: ${filePath}. Error: ${error}`);
-      return this.createErrorResult(error as Error);
-    }
-  }
- 
-  async execute(content: string): Promise<IActionResult> {
-    let params: DeleteFileParams;
-    try {
-      params = JSON.parse(content) as DeleteFileParams;
-    } catch (error) {
-      return this.createErrorResult(new Error("Invalid JSON content"));
-    }
- 
-    const validationError = this.validateParams(params);
-    if (validationError) {
-      return this.createErrorResult(new Error(validationError));
-    }
- 
-    return this.executeInternal(params);
-  }
-}
- -
-
- - - - - - - - \ No newline at end of file diff --git a/coverage/lcov-report/services/LLM/actions/EndPhaseAction.ts.html b/coverage/lcov-report/services/LLM/actions/EndPhaseAction.ts.html deleted file mode 100644 index 1aedf2bd..00000000 --- a/coverage/lcov-report/services/LLM/actions/EndPhaseAction.ts.html +++ /dev/null @@ -1,196 +0,0 @@ - - - - - - Code coverage report for services/LLM/actions/EndPhaseAction.ts - - - - - - - - - -
-
-

All files / services/LLM/actions EndPhaseAction.ts

-
- -
- 100% - Statements - 16/16 -
- - -
- 100% - Branches - 0/0 -
- - -
- 100% - Functions - 4/4 -
- - -
- 100% - Lines - 14/14 -
- - -
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

- -
-
-

-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -18 -19 -20 -21 -22 -23 -24 -25 -26 -27 -28 -29 -30 -31 -32 -33 -34 -35 -36 -37 -3816x -16x -16x -16x -16x -  -  -  -  -16x -  -  -5x -  -5x -  -  -  -  -  -2x -2x -1x -  -1x -  -  -  -  -  -2x -  -  -  -6x -  -  - 
import { autoInjectable } from "tsyringe";
-import { PhaseTransitionService } from "../PhaseTransitionService";
-import { ActionTagsExtractor } from "./ActionTagsExtractor";
-import { endPhaseActionBlueprint } from "./blueprints/endPhaseActionBlueprint";
-import { BaseAction } from "./core/BaseAction";
-import { IActionBlueprint } from "./core/IAction";
-import { IActionResult } from "./types/ActionTypes";
- 
-@autoInjectable()
-export class EndPhaseAction extends BaseAction {
-  constructor(
-    actionTagsExtractor: ActionTagsExtractor,
-    private phaseTransitionService: PhaseTransitionService,
-  ) {
-    super(actionTagsExtractor);
-  }
- 
-  protected async executeInternal(
-    params: Record<string, any>,
-  ): Promise<IActionResult> {
-    try {
-      const data = await this.phaseTransitionService.transitionToNextPhase();
-      return this.createSuccessResult(data);
-    } catch (error) {
-      return this.createErrorResult(error);
-    }
-  }
- 
-  protected validateParams(params: Record<string, any>): string | null {
-    // No params to validate
-    return null;
-  }
- 
-  protected getBlueprint(): IActionBlueprint {
-    return endPhaseActionBlueprint;
-  }
-}
- 
- -
-
- - - - - - - - \ No newline at end of file diff --git a/coverage/lcov-report/services/LLM/actions/EndTaskAction.ts.html b/coverage/lcov-report/services/LLM/actions/EndTaskAction.ts.html deleted file mode 100644 index f34eb596..00000000 --- a/coverage/lcov-report/services/LLM/actions/EndTaskAction.ts.html +++ /dev/null @@ -1,211 +0,0 @@ - - - - - - Code coverage report for services/LLM/actions/EndTaskAction.ts - - - - - - - - - -
-
-

All files / services/LLM/actions EndTaskAction.ts

-
- -
- 100% - Statements - 19/19 -
- - -
- 100% - Branches - 1/1 -
- - -
- 100% - Functions - 5/5 -
- - -
- 100% - Lines - 17/17 -
- - -
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

- -
-
-

-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -18 -19 -20 -21 -22 -23 -24 -25 -26 -27 -28 -29 -30 -31 -32 -33 -34 -35 -36 -37 -38 -39 -40 -41 -42 -4316x -16x -16x -16x -  -  -  -  -16x -1x -1x -  -  -  -12x -  -  -  -5x -  -5x -3x -  -  -2x -  -  -  -  -  -2x -  -2x -2x -  -  -  -  -5x -5x -  -  - 
import { autoInjectable } from "tsyringe";
-import { ActionTagsExtractor } from "./ActionTagsExtractor";
-import { endTaskActionBlueprint as blueprint } from "./blueprints/endTaskActionBlueprint";
-import { BaseAction } from "./core/BaseAction";
-import { IActionBlueprint } from "./core/IAction";
-import { IActionResult } from "./types/ActionTypes";
- 
-@autoInjectable()
-export class EndTaskAction extends BaseAction {
-  constructor(protected actionTagsExtractor: ActionTagsExtractor) {
-    super(actionTagsExtractor);
-  }
- 
-  protected getBlueprint(): IActionBlueprint {
-    return blueprint;
-  }
- 
-  protected validateParams(params: Record<string, any>): string | null {
-    const content = params.content as string;
- 
-    if (!content?.trim()) {
-      return "No message provided";
-    }
- 
-    return null;
-  }
- 
-  protected async executeInternal(
-    params: Record<string, any>,
-  ): Promise<IActionResult> {
-    const message = params.content as string;
- 
-    this.logInfo(`End task message: ${message}`);
-    return this.createSuccessResult(message);
-  }
- 
-  protected parseParams(content: string): Record<string, any> {
-    // Extract the content between the end_task tags
-    const match = content.match(/<end_task>([\s\S]*?)<\/end_task>/);
-    return { content: match?.[1]?.trim() };
-  }
-}
- 
- -
-
- - - - - - - - \ No newline at end of file diff --git a/coverage/lcov-report/services/LLM/actions/FetchUrlAction.ts.html b/coverage/lcov-report/services/LLM/actions/FetchUrlAction.ts.html deleted file mode 100644 index 9cee486c..00000000 --- a/coverage/lcov-report/services/LLM/actions/FetchUrlAction.ts.html +++ /dev/null @@ -1,283 +0,0 @@ - - - - - - Code coverage report for services/LLM/actions/FetchUrlAction.ts - - - - - - - - - -
-
-

All files / services/LLM/actions FetchUrlAction.ts

-
- -
- 96.66% - Statements - 29/30 -
- - -
- 50% - Branches - 2/4 -
- - -
- 100% - Functions - 5/5 -
- - -
- 96.42% - Lines - 27/28 -
- - -
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

- -
-
-

-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -18 -19 -20 -21 -22 -23 -24 -25 -26 -27 -28 -29 -30 -31 -32 -33 -34 -35 -36 -37 -38 -39 -40 -41 -42 -43 -44 -45 -46 -47 -48 -49 -50 -51 -52 -53 -54 -55 -56 -57 -58 -59 -60 -61 -62 -63 -64 -65 -66 -6716x -16x -16x -16x -16x -  -  -  -  -  -  -  -  -16x -4x -4x -  -  -  -14x -  -  -  -4x -  -4x -1x -  -  -3x -3x -2x -  -1x -  -  -  -  -  -  -2x -2x -  -2x -  -2x -1x -  -1x -  -  -  -  -  -  -2x -2x -1x -  -1x -  -  -1x -  -  -  - 
import axios, { AxiosResponse } from "axios";
-import { autoInjectable } from "tsyringe";
-import { ActionTagsExtractor } from "./ActionTagsExtractor";
-import { fetchUrlActionBlueprint as blueprint } from "./blueprints/fetchUrlActionBlueprint";
-import { BaseAction } from "./core/BaseAction";
-import { IActionBlueprint } from "./core/IAction";
-import { IActionResult } from "./types/ActionTypes";
- 
-interface FetchUrlParams {
-  url: string;
-}
- 
-@autoInjectable()
-export class FetchUrlAction extends BaseAction {
-  constructor(protected actionTagsExtractor: ActionTagsExtractor) {
-    super(actionTagsExtractor);
-  }
- 
-  protected getBlueprint(): IActionBlueprint {
-    return blueprint;
-  }
- 
-  protected validateParams(params: Record<string, any>): string | null {
-    const { url } = params as FetchUrlParams;
- 
-    if (!url) {
-      return "No URL provided";
-    }
- 
-    try {
-      new URL(url); // Validate URL format
-      return null;
-    } catch {
-      return "Invalid URL format. Must be a valid URL with protocol (http:// or https://)";
-    }
-  }
- 
-  protected async executeInternal(
-    params: Record<string, any>,
-  ): Promise<IActionResult> {
-    try {
-      const { url } = params as FetchUrlParams;
- 
-      this.logInfo(`Fetching URL: ${url}`);
- 
-      const data = await this.fetchUrl(url);
-      return this.createSuccessResult(data);
-    } catch (error) {
-      return this.createErrorResult(
-        error instanceof Error ? error : new Error("Failed to fetch URL"),
-      );
-    }
-  }
- 
-  private async fetchUrl<T = any>(url: string): Promise<T> {
-    try {
-      const response: AxiosResponse<T> = await axios.get(url);
-      return response.data;
-    } catch (error: any) {
-      Iif (axios.isAxiosError(error)) {
-        throw new Error(`Network error: ${error.message}`);
-      }
-      throw new Error(`Error fetching URL: ${error.message}`);
-    }
-  }
-}
- 
- -
-
- - - - - - - - \ No newline at end of file diff --git a/coverage/lcov-report/services/LLM/actions/MoveFileAction.ts.html b/coverage/lcov-report/services/LLM/actions/MoveFileAction.ts.html deleted file mode 100644 index 22ce729b..00000000 --- a/coverage/lcov-report/services/LLM/actions/MoveFileAction.ts.html +++ /dev/null @@ -1,364 +0,0 @@ - - - - - - Code coverage report for services/LLM/actions/MoveFileAction.ts - - - - - - - - - -
-
-

All files / services/LLM/actions MoveFileAction.ts

-
- -
- 92.5% - Statements - 37/40 -
- - -
- 55.55% - Branches - 5/9 -
- - -
- 100% - Functions - 6/6 -
- - -
- 91.89% - Lines - 34/37 -
- - -
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

- -
-
-

-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -18 -19 -20 -21 -22 -23 -24 -25 -26 -27 -28 -29 -30 -31 -32 -33 -34 -35 -36 -37 -38 -39 -40 -41 -42 -43 -44 -45 -46 -47 -48 -49 -50 -51 -52 -53 -54 -55 -56 -57 -58 -59 -60 -61 -62 -63 -64 -65 -66 -67 -68 -69 -70 -71 -72 -73 -74 -75 -76 -77 -78 -79 -80 -81 -82 -83 -84 -85 -86 -87 -88 -89 -90 -91 -92 -93 -9417x -17x -17x -17x -17x -  -  -  -  -  -  -  -  -  -17x -  -5x -5x -  -5x -  -  -  -21x -  -  -  -  -5x -5x -5x -  -  -  -  -5x -5x -  -  -  -5x -  -  -  -  -5x -10x -8x -  -  -5x -  -  -  -  -  -  -5x -  -5x -1x -  -4x -1x -  -  -3x -  -  -  -  -  -3x -3x -  -3x -3x -  -3x -  -  -  -  -3x -1x -  -  -2x -  -  -  -  -  - 
import { FileOperations } from "@services/FileManagement/FileOperations";
-import { autoInjectable } from "tsyringe";
-import { ActionTagsExtractor } from "./ActionTagsExtractor";
-import { moveFileActionBlueprint as blueprint } from "./blueprints/moveFileActionBlueprint";
-import { BaseAction } from "./core/BaseAction";
-import { IActionBlueprint } from "./core/IAction";
-import { IActionResult } from "./types/ActionTypes";
- 
-interface MoveFileParams {
-  source_path: string;
-  destination_path: string;
-}
- 
-@autoInjectable()
-export class MoveFileAction extends BaseAction {
-  constructor(
-    protected actionTagsExtractor: ActionTagsExtractor,
-    private fileOperations: FileOperations,
-  ) {
-    super(actionTagsExtractor);
-  }
- 
-  protected getBlueprint(): IActionBlueprint {
-    return blueprint;
-  }
- 
-  protected parseParams(content: string): Record<string, any> {
-    // First extract the content from the outer tag
-    const tag = this.getBlueprint().tag;
-    const match = content.match(new RegExp(`<${tag}>[\\s\\S]*?<\\/${tag}>`));
-    Iif (!match) {
-      this.logError("Failed to parse move file content");
-      return { source_path: "", destination_path: "" };
-    }
- 
-    const tagContent = match[0];
-    const source_path = this.actionTagsExtractor.extractTag(
-      tagContent,
-      "source_path",
-    );
-    const destination_path = this.actionTagsExtractor.extractTag(
-      tagContent,
-      "destination_path",
-    );
- 
-    const getValue = (value: string | string[] | null): string => {
-      if (!value) return "";
-      return Array.isArray(value) ? value[0]?.trim() || "" : value.trim();
-    };
- 
-    return {
-      source_path: getValue(source_path),
-      destination_path: getValue(destination_path),
-    };
-  }
- 
-  protected validateParams(params: Record<string, any>): string | null {
-    const { source_path, destination_path } = params as MoveFileParams;
- 
-    if (!source_path) {
-      return "No source path provided";
-    }
-    if (!destination_path) {
-      return "No destination path provided";
-    }
- 
-    return null;
-  }
- 
-  protected async executeInternal(
-    params: Record<string, any>,
-  ): Promise<IActionResult> {
-    try {
-      const { source_path, destination_path } = params as MoveFileParams;
- 
-      this.logInfo(`Source path: ${source_path}`);
-      this.logInfo(`Destination path: ${destination_path}`);
- 
-      const result = await this.fileOperations.move(
-        source_path,
-        destination_path,
-      );
- 
-      if (!result.success) {
-        return this.createErrorResult(result.error!);
-      }
- 
-      return this.createSuccessResult(result.data);
-    } catch (error) {
-      return this.createErrorResult(error as Error);
-    }
-  }
-}
- 
- -
-
- - - - - - - - \ No newline at end of file diff --git a/coverage/lcov-report/services/LLM/actions/ReadFileAction.ts.html b/coverage/lcov-report/services/LLM/actions/ReadFileAction.ts.html deleted file mode 100644 index 956c3901..00000000 --- a/coverage/lcov-report/services/LLM/actions/ReadFileAction.ts.html +++ /dev/null @@ -1,424 +0,0 @@ - - - - - - Code coverage report for services/LLM/actions/ReadFileAction.ts - - - - - - - - - -
-
-

All files / services/LLM/actions ReadFileAction.ts

-
- -
- 97.87% - Statements - 46/47 -
- - -
- 85% - Branches - 17/20 -
- - -
- 100% - Functions - 10/10 -
- - -
- 97.67% - Lines - 42/43 -
- - -
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

- -
-
-

-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -18 -19 -20 -21 -22 -23 -24 -25 -26 -27 -28 -29 -30 -31 -32 -33 -34 -35 -36 -37 -38 -39 -40 -41 -42 -43 -44 -45 -46 -47 -48 -49 -50 -51 -52 -53 -54 -55 -56 -57 -58 -59 -60 -61 -62 -63 -64 -65 -66 -67 -68 -69 -70 -71 -72 -73 -74 -75 -76 -77 -78 -79 -80 -81 -82 -83 -84 -85 -86 -87 -88 -89 -90 -91 -92 -93 -94 -95 -96 -97 -98 -99 -100 -101 -102 -103 -104 -105 -106 -107 -108 -109 -110 -111 -112 -113 -11416x -  -  -16x -16x -16x -16x -16x -  -  -  -  -  -  -  -16x -  -1x -1x -1x -  -1x -  -  -  -25x -  -  -  -7x -  -7x -1x -  -  -9x -6x -1x -  -  -5x -  -  -  -  -  -  -7x -  -7x -7x -9x -7x -  -  -  -  -  -  -  -  -  -  -5x -  -  -5x -2x -  -  -  -3x -  -  -  -2x -2x -  -  -  -  -  -3x -3x -  -3x -2x -  -  -  -  -1x -1x -  -1x -  -  -  -2x -1x -  -1x -  -  -2x -  -2x -  -  -  -  -  -  - 
import { FileOperations } from "@services/FileManagement/FileOperations";
-import { IFileOperationResult } from "@services/FileManagement/types/FileManagementTypes";
-import { IActionResult } from "@services/LLM/actions/types/ActionTypes";
-import { DebugLogger } from "@services/logging/DebugLogger";
-import { autoInjectable } from "tsyringe";
-import { ActionTagsExtractor } from "./ActionTagsExtractor";
-import { readFileActionBlueprint as blueprint } from "./blueprints/readFileActionBlueprint";
-import { BaseAction } from "./core/BaseAction";
-import { IActionBlueprint } from "./core/IAction";
- 
-interface IReadFileParams {
-  path: string[];
-}
- 
-@autoInjectable()
-export class ReadFileAction extends BaseAction {
-  constructor(
-    protected actionTagsExtractor: ActionTagsExtractor,
-    private fileOperations: FileOperations,
-    private debugLogger: DebugLogger,
-  ) {
-    super(actionTagsExtractor);
-  }
- 
-  protected getBlueprint(): IActionBlueprint {
-    return blueprint;
-  }
- 
-  protected validateParams(params: IReadFileParams): string | null {
-    const paths = params.path;
- 
-    if (!paths || !Array.isArray(paths) || paths.length === 0) {
-      return "Must include at least one <path> tag";
-    }
- 
-    const invalidPaths = paths.filter((path) => !path);
-    if (invalidPaths.length > 0) {
-      return `Invalid paths found: ${invalidPaths.join(", ")}. Try using a <search_file> to find the correct file path.`;
-    }
- 
-    return null;
-  }
- 
-  protected extractParamValue(
-    content: string,
-    paramName: string,
-  ): string | string[] | null {
-    if (paramName === "path") {
-      // Extract all path tags
-      const regex = new RegExp(`<${paramName}>(.*?)</${paramName}>`, "g");
-      const matches = Array.from(content.matchAll(regex));
-      const paths = matches.map((match) => match[1].trim());
-      return paths.length > 0 ? paths : null;
-    }
- 
-    // Use default extraction for other parameters
-    return super.extractParamValue(content, paramName);
-  }
- 
-  protected async executeInternal(
-    params: IReadFileParams,
-  ): Promise<IActionResult> {
-    // Extract paths either from path tags or from raw content
-    const filePaths = Array.isArray(params.path) ? params.path : [params.path];
- 
-    // If only one path, use single file read
-    if (filePaths.length === 1) {
-      return await this.handleSingleFile(filePaths[0]);
-    }
- 
-    // Handle multiple files
-    return await this.handleMultipleFiles(filePaths);
-  }
- 
-  private async handleSingleFile(filePath: string): Promise<IActionResult> {
-    const result = await this.fileOperations.read(filePath);
-    return this.convertFileResult(result);
-  }
- 
-  private async handleMultipleFiles(
-    filePaths: string[],
-  ): Promise<IActionResult> {
-    const result = await this.fileOperations.readMultiple(filePaths);
-    this.debugLogger.log("ReadFileAction", "execute", result);
- 
-    if (!result.success || !result.data) {
-      return this.createErrorResult(
-        result.error || "Failed to read multiple files",
-      );
-    }
- 
-    this.logSuccess("Action completed successfully. Please wait...\n");
-    console.log("-".repeat(50));
- 
-    return this.createSuccessResult(result.data);
-  }
- 
-  private convertFileResult(result: IFileOperationResult): IActionResult {
-    if (result?.success) {
-      this.logSuccess("Action completed successfully. Please wait...\n");
-    } else {
-      this.logError(result?.error?.message || "Unknown error");
-    }
- 
-    console.log("-".repeat(50));
- 
-    return {
-      success: !!result?.success,
-      data: result?.data,
-      error: result?.error,
-    };
-  }
-}
- 
- -
-
- - - - - - - - \ No newline at end of file diff --git a/coverage/lcov-report/services/LLM/actions/RelativePathLookupAction.ts.html b/coverage/lcov-report/services/LLM/actions/RelativePathLookupAction.ts.html deleted file mode 100644 index 9e4981f4..00000000 --- a/coverage/lcov-report/services/LLM/actions/RelativePathLookupAction.ts.html +++ /dev/null @@ -1,463 +0,0 @@ - - - - - - Code coverage report for services/LLM/actions/RelativePathLookupAction.ts - - - - - - - - - -
-
-

All files / services/LLM/actions RelativePathLookupAction.ts

-
- -
- 96% - Statements - 48/50 -
- - -
- 72.22% - Branches - 13/18 -
- - -
- 100% - Functions - 6/6 -
- - -
- 95.74% - Lines - 45/47 -
- - -
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

- -
-
-

-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -18 -19 -20 -21 -22 -23 -24 -25 -26 -27 -28 -29 -30 -31 -32 -33 -34 -35 -36 -37 -38 -39 -40 -41 -42 -43 -44 -45 -46 -47 -48 -49 -50 -51 -52 -53 -54 -55 -56 -57 -58 -59 -60 -61 -62 -63 -64 -65 -66 -67 -68 -69 -70 -71 -72 -73 -74 -75 -76 -77 -78 -79 -80 -81 -82 -83 -84 -85 -86 -87 -88 -89 -90 -91 -92 -93 -94 -95 -96 -97 -98 -99 -100 -101 -102 -103 -104 -105 -106 -107 -108 -109 -110 -111 -112 -113 -114 -115 -116 -117 -118 -119 -120 -121 -122 -123 -124 -125 -126 -12717x -17x -17x -17x -17x -17x -  -  -  -  -  -  -  -  -  -  -17x -  -9x -9x -  -9x -  -  -  -29x -  -  -  -  -8x -8x -8x -  -  -  -  -8x -8x -  -  -  -8x -8x -  -  -  -  -8x -18x -16x -  -  -8x -  -  -  -  -  -  -  -8x -  -8x -1x -  -7x -1x -  -6x -1x -  -  -5x -  -  -  -  -  -5x -  -  -  -  -5x -  -  -5x -  -  -5x -  -  -5x -  -  -  -  -4x -  -3x -  -3x -  -  -  -3x -  -  -  -  -  -3x -  -  -3x -  -  -1x -1x -  -1x -1x -  -  -  - 
import { PathAdjuster } from "@services/FileManagement/PathAdjuster";
-import path from "path";
-import { autoInjectable } from "tsyringe";
-import { ActionTagsExtractor } from "./ActionTagsExtractor";
-import { relativePathLookupActionBlueprint as blueprint } from "./blueprints/relativePathLookupActionBlueprint";
-import { BaseAction } from "./core/BaseAction";
-import { IActionBlueprint } from "./core/IAction";
-import { IActionResult } from "./types/ActionTypes";
- 
-interface RelativePathLookupParams {
-  source_path: string;
-  path: string;
-  threshold?: number;
-}
- 
-@autoInjectable()
-export class RelativePathLookupAction extends BaseAction {
-  constructor(
-    protected actionTagsExtractor: ActionTagsExtractor,
-    private pathAdjuster: PathAdjuster,
-  ) {
-    super(actionTagsExtractor);
-  }
- 
-  protected getBlueprint(): IActionBlueprint {
-    return blueprint;
-  }
- 
-  protected parseParams(content: string): Record<string, any> {
-    // First extract the content from the outer tag
-    const tag = this.getBlueprint().tag;
-    const match = content.match(new RegExp(`<${tag}>[\\s\\S]*?<\\/${tag}>`));
-    Iif (!match) {
-      this.logError("Failed to parse relative path lookup content");
-      return { source_path: "", path: "", threshold: undefined };
-    }
- 
-    const tagContent = match[0];
-    const source_path = this.actionTagsExtractor.extractTag(
-      tagContent,
-      "source_path",
-    );
-    const path = this.actionTagsExtractor.extractTag(tagContent, "path");
-    const threshold = this.actionTagsExtractor.extractTag(
-      tagContent,
-      "threshold",
-    );
- 
-    const getValue = (value: string | string[] | null): string => {
-      if (!value) return "";
-      return Array.isArray(value) ? value[0]?.trim() || "" : value.trim();
-    };
- 
-    return {
-      source_path: getValue(source_path),
-      path: getValue(path),
-      threshold: threshold ? parseFloat(getValue(threshold)) : undefined,
-    };
-  }
- 
-  protected validateParams(params: Record<string, any>): string | null {
-    const { source_path, path, threshold } = params as RelativePathLookupParams;
- 
-    if (!source_path) {
-      return "No source_path provided";
-    }
-    if (!path) {
-      return "No path provided";
-    }
-    if (threshold !== undefined && (threshold <= 0 || threshold > 1)) {
-      return "Threshold must be between 0 and 1";
-    }
- 
-    return null;
-  }
- 
-  protected async executeInternal(
-    params: Record<string, any>,
-  ): Promise<IActionResult> {
-    try {
-      const {
-        source_path,
-        path: relativePath,
-        threshold = 0.6,
-      } = params as RelativePathLookupParams;
- 
-      // Get the directory of the source file to resolve relative paths from
-      const sourceDir = path.dirname(source_path);
- 
-      // Resolve the full path of the import relative to the source file
-      const fullImportPath = path.resolve(sourceDir, relativePath);
- 
-      // Use PathAdjuster to find the correct path
-      const adjustedPath = await this.pathAdjuster.adjustPath(
-        fullImportPath,
-        threshold,
-      );
- 
-      if (adjustedPath) {
-        // Convert the adjusted absolute path back to a relative path from the source file
-        const newRelativePath = path.relative(sourceDir, adjustedPath);
-        // Ensure proper directory separator and add ./ if needed
-        const formattedPath = newRelativePath.startsWith(".")
-          ? newRelativePath
-          : "./" + newRelativePath;
- 
-        const result = {
-          originalPath: relativePath,
-          newPath: formattedPath.replace(/\\/g, "/"), // Ensure forward slashes
-          absolutePath: adjustedPath,
-        };
- 
-        this.logSuccess(
-          `Found adjusted path: ${result.newPath} (absolute: ${result.absolutePath})`,
-        );
-        return this.createSuccessResult(result);
-      }
- 
-      this.logInfo("No adjusted path found");
-      return this.createSuccessResult(null);
-    } catch (error) {
-      this.logError(`Path lookup failed: ${(error as Error).message}`);
-      return this.createErrorResult(error as Error);
-    }
-  }
-}
- 
- -
-
- - - - - - - - \ No newline at end of file diff --git a/coverage/lcov-report/services/LLM/actions/SearchAction.ts.html b/coverage/lcov-report/services/LLM/actions/SearchAction.ts.html deleted file mode 100644 index 02ea82a9..00000000 --- a/coverage/lcov-report/services/LLM/actions/SearchAction.ts.html +++ /dev/null @@ -1,421 +0,0 @@ - - - - - - Code coverage report for services/LLM/actions/SearchAction.ts - - - - - - - - - -
-
-

All files / services/LLM/actions SearchAction.ts

-
- -
- 91.83% - Statements - 45/49 -
- - -
- 76.47% - Branches - 13/17 -
- - -
- 100% - Functions - 7/7 -
- - -
- 91.3% - Lines - 42/46 -
- - -
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

- -
-
-

-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -18 -19 -20 -21 -22 -23 -24 -25 -26 -27 -28 -29 -30 -31 -32 -33 -34 -35 -36 -37 -38 -39 -40 -41 -42 -43 -44 -45 -46 -47 -48 -49 -50 -51 -52 -53 -54 -55 -56 -57 -58 -59 -60 -61 -62 -63 -64 -65 -66 -67 -68 -69 -70 -71 -72 -73 -74 -75 -76 -77 -78 -79 -80 -81 -82 -83 -84 -85 -86 -87 -88 -89 -90 -91 -92 -93 -94 -95 -96 -97 -98 -99 -100 -101 -102 -103 -104 -105 -106 -107 -108 -109 -110 -111 -112 -11317x -17x -17x -17x -  -  -  -17x -  -  -  -  -  -  -  -  -  -  -17x -7x -  -  -7x -7x -  -7x -  -  -  -  -7x -  -  -7x -  -  -  -41x -  -  -  -  -  -  -7x -7x -7x -  -  -  -  -7x -7x -  -  -  -7x -  -7x -14x -12x -  -  -7x -  -  -  -  -  -  -7x -  -7x -1x -  -6x -1x -  -  -5x -  -  -  -  -  -5x -5x -  -5x -5x -5x -  -  -5x -2x -  -3x -  -  -5x -2x -2x -  -  -3x -3x -  -  -  -  -  -  - 
import { FileSearch } from "@services/FileManagement/FileSearch";
-import { autoInjectable } from "tsyringe";
-import { ActionTagsExtractor } from "./ActionTagsExtractor";
-import {
-  searchFileActionBlueprint,
-  searchStringActionBlueprint,
-} from "./blueprints/searchActionsBlueprint";
-import { BaseAction } from "./core/BaseAction";
-import { IActionBlueprint } from "./core/IAction";
-import { IActionResult } from "./types/ActionTypes";
- 
-interface SearchParams {
-  directory: string;
-  term: string;
-  type: "search_string" | "search_file";
-}
- 
-@autoInjectable()
-export class SearchAction extends BaseAction {
-  private currentType: "search_string" | "search_file" = "search_file";
- 
-  constructor(
-    protected actionTagsExtractor: ActionTagsExtractor,
-    private fileSearch: FileSearch,
-  ) {
-    super(actionTagsExtractor);
-  }
- 
-  async execute(content: string): Promise<IActionResult> {
-    // Determine action type from the content
-    this.currentType = content.includes("<search_string>")
-      ? "search_string"
-      : "search_file";
-    return super.execute(content);
-  }
- 
-  protected getBlueprint(): IActionBlueprint {
-    return this.currentType === "search_string"
-      ? searchStringActionBlueprint
-      : searchFileActionBlueprint;
-  }
- 
-  protected parseParams(content: string): Record<string, any> {
-    // First extract the content from the outer tag (search_string or search_file)
-    const tag = this.getBlueprint().tag;
-    const match = content.match(new RegExp(`<${tag}>[\\s\\S]*?<\\/${tag}>`));
-    Iif (!match) {
-      this.logError("Failed to parse search content");
-      return { directory: "", term: "" };
-    }
- 
-    const tagContent = match[0];
-    const directory = this.actionTagsExtractor.extractTag(
-      tagContent,
-      "directory",
-    );
-    const term = this.actionTagsExtractor.extractTag(tagContent, "term");
- 
-    const getValue = (value: string | string[] | null): string => {
-      if (!value) return "";
-      return Array.isArray(value) ? value[0]?.trim() || "" : value.trim();
-    };
- 
-    return {
-      directory: getValue(directory),
-      term: getValue(term),
-    };
-  }
- 
-  protected validateParams(params: Record<string, any>): string | null {
-    const { directory, term } = params as SearchParams;
- 
-    if (!directory) {
-      return "No directory provided";
-    }
-    if (!term) {
-      return "No search term provided";
-    }
- 
-    return null;
-  }
- 
-  protected async executeInternal(
-    params: Record<string, any>,
-  ): Promise<IActionResult> {
-    try {
-      const { directory, term } = params as SearchParams;
- 
-      this.logInfo(`Searching in directory: ${directory}`);
-      this.logInfo(`Search term: ${term}`);
-      this.logInfo(`Search type: ${this.currentType}`);
- 
-      let results;
-      if (this.currentType === "search_string") {
-        results = await this.fileSearch.findByContent(term, directory);
-      } else {
-        results = await this.fileSearch.findByName(term, directory);
-      }
- 
-      if (!results || results.length === 0) {
-        this.logInfo("No results found");
-        return this.createSuccessResult([]);
-      }
- 
-      this.logSuccess(`Found ${results.length} results`);
-      return this.createSuccessResult(results);
-    } catch (error) {
-      this.logError(`Search failed: ${(error as Error).message}`);
-      return this.createErrorResult(error as Error);
-    }
-  }
-}
- 
- -
-
- - - - - - - - \ No newline at end of file diff --git a/coverage/lcov-report/services/LLM/actions/WriteFileAction.ts.html b/coverage/lcov-report/services/LLM/actions/WriteFileAction.ts.html deleted file mode 100644 index 2e26604d..00000000 --- a/coverage/lcov-report/services/LLM/actions/WriteFileAction.ts.html +++ /dev/null @@ -1,787 +0,0 @@ - - - - - - Code coverage report for services/LLM/actions/WriteFileAction.ts - - - - - - - - - -
-
-

All files / services/LLM/actions WriteFileAction.ts

-
- -
- 90.38% - Statements - 94/104 -
- - -
- 69.56% - Branches - 16/23 -
- - -
- 100% - Functions - 12/12 -
- - -
- 90.09% - Lines - 91/101 -
- - -
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

- -
-
-

-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -18 -19 -20 -21 -22 -23 -24 -25 -26 -27 -28 -29 -30 -31 -32 -33 -34 -35 -36 -37 -38 -39 -40 -41 -42 -43 -44 -45 -46 -47 -48 -49 -50 -51 -52 -53 -54 -55 -56 -57 -58 -59 -60 -61 -62 -63 -64 -65 -66 -67 -68 -69 -70 -71 -72 -73 -74 -75 -76 -77 -78 -79 -80 -81 -82 -83 -84 -85 -86 -87 -88 -89 -90 -91 -92 -93 -94 -95 -96 -97 -98 -99 -100 -101 -102 -103 -104 -105 -106 -107 -108 -109 -110 -111 -112 -113 -114 -115 -116 -117 -118 -119 -120 -121 -122 -123 -124 -125 -126 -127 -128 -129 -130 -131 -132 -133 -134 -135 -136 -137 -138 -139 -140 -141 -142 -143 -144 -145 -146 -147 -148 -149 -150 -151 -152 -153 -154 -155 -156 -157 -158 -159 -160 -161 -162 -163 -164 -165 -166 -167 -168 -169 -170 -171 -172 -173 -174 -175 -176 -177 -178 -179 -180 -181 -182 -183 -184 -185 -186 -187 -188 -189 -190 -191 -192 -193 -194 -195 -196 -197 -198 -199 -200 -201 -202 -203 -204 -205 -206 -207 -208 -209 -210 -211 -212 -213 -214 -215 -216 -217 -218 -219 -220 -221 -222 -223 -224 -225 -226 -227 -228 -229 -230 -231 -232 -233 -234 -23517x -17x -17x -17x -17x -17x -17x -17x -17x -  -  -  -  -  -  -  -  -17x -17x -17x -  -  -17x -  -24x -24x -24x -24x -  -24x -  -  -  -4x -  -  -  -9x -  -  -  -56x -  -  -  -59x -  -  -  -22x -22x -  -22x -1x -  -21x -1x -  -  -  -20x -1x -  -  -  -19x -19x -1x -  -  -18x -  -  -  -  -  -  -  -  -  -  -44x -  -44x -22x -22x -1x -  -  -1x -  -21x -  -  -  -22x -22x -  -  -  -  -  -  -  -  -  -18x -  -18x -  -  -18x -18x -  -  -18x -18x -1x -  -  -  -17x -  -  -17x -2x -  -  -  -  -  -15x -  -15x -1x -1x -  -  -14x -  -  -14x -  -  -  -  -  -  -  -  -  -  -  -  -18x -18x -18x -11x -11x -  -  -7x -7x -  -7x -7x -1x -  -  -1x -  -  -6x -6x -  -  -  -  -6x -  -  -  -6x -1x -  -  -  -  -5x -  -  -  -  -  -  -  -  -  -  -  -  -6x -6x -  -6x -  -5x -5x -  -  -  -17x -  -17x -1x -1x -  -  -  -16x -  -28x -16x -1x -1x -  -  -15x -  -  -  -  -  -  - 
import { BLOCK_WRITE_IF_CONTENT_REMOVAL_THRESHOLD } from "@constants/writeConstants";
-import { FileOperations } from "@services/FileManagement/FileOperations";
-import { ModelScaler } from "@services/LLM/ModelScaler";
-import { HtmlEntityDecoder } from "@services/text/HTMLEntityDecoder";
-import path from "path";
-import { autoInjectable } from "tsyringe";
-import { ActionTagsExtractor } from "./ActionTagsExtractor";
-import { writeFileActionBlueprint as blueprint } from "./blueprints/writeFileActionBlueprint";
-import { BaseAction } from "./core/BaseAction";
-import { IActionBlueprint } from "./core/IAction";
-import { IActionResult } from "./types/ActionTypes";
- 
-interface WriteFileParams {
-  path: string;
-  content: string;
-}
- 
-const MAX_CONTENT_SIZE_MB = 10;
-const MAX_CONTENT_SIZE_BYTES = MAX_CONTENT_SIZE_MB * 1024 * 1024;
-const MAX_LINE_LENGTH = 10000;
- 
-@autoInjectable()
-export class WriteFileAction extends BaseAction {
-  constructor(
-    protected actionTagsExtractor: ActionTagsExtractor,
-    private fileOperations: FileOperations,
-    private htmlEntityDecoder: HtmlEntityDecoder,
-    private modelScaler: ModelScaler,
-  ) {
-    super(actionTagsExtractor);
-  }
- 
-  protected logWarning(message: string): void {
-    console.warn(`⚠️ write_file: ${message}`);
-  }
- 
-  protected logError(message: string): void {
-    console.error(`❌ write_file: ${message}`);
-  }
- 
-  protected logInfo(message: string): void {
-    console.info(`ℹ️ write_file: ${message}`);
-  }
- 
-  protected getBlueprint(): IActionBlueprint {
-    return blueprint;
-  }
- 
-  protected validateParams(params: Record<string, any>): string | null {
-    try {
-      const { path: filePath, content } = params as WriteFileParams;
- 
-      if (!filePath) {
-        return "No file path provided";
-      }
-      if (!content) {
-        return "No file content provided";
-      }
- 
-      // Validate path
-      if (filePath.includes("..")) {
-        return "Path traversal is not allowed";
-      }
- 
-      // Validate content size
-      const contentSizeBytes = Buffer.byteLength(content, "utf8");
-      if (contentSizeBytes > MAX_CONTENT_SIZE_BYTES) {
-        return `Content size (${(contentSizeBytes / 1024 / 1024).toFixed(2)}MB) exceeds maximum allowed size (${MAX_CONTENT_SIZE_MB}MB)`;
-      }
- 
-      return null;
-    } catch (error) {
-      this.logError(`Error in validateParams: ${error}`);
-      return `Validation error: ${error instanceof Error ? error.message : String(error)}`;
-    }
-  }
- 
-  protected extractParamValue(
-    content: string,
-    paramName: string,
-  ): string | string[] | null {
-    try {
-      // Handle content parameter specially to preserve nested tags
-      if (paramName === "content") {
-        const contentMatch = content.match(/<content>([\s\S]*?)<\/content>/);
-        if (!contentMatch) {
-          this.logWarning(
-            `Failed to extract content parameter from: ${content.substring(0, 100)}...`,
-          );
-          return null;
-        }
-        return contentMatch[1].trim();
-      }
- 
-      // Use default extraction for other parameters
-      const value = super.extractParamValue(content, paramName);
-      return Array.isArray(value) ? value[0] : value;
-    } catch (error) {
-      this.logError(`Error extracting parameter ${paramName}: ${error}`);
-      return null;
-    }
-  }
- 
-  protected async executeInternal(
-    params: Record<string, any>,
-  ): Promise<IActionResult> {
-    try {
-      const { path: rawFilePath, content: fileContent } =
-        params as WriteFileParams;
- 
-      // Normalize path
-      const filePath = path.normalize(rawFilePath).replace(/\\/g, "/");
-      this.logInfo(`Writing to file: ${filePath}`);
- 
-      // Check for large content removal if file exists
-      const removalCheck = await this.checkLargeRemoval(filePath, fileContent);
-      if (!removalCheck.success) {
-        return removalCheck;
-      }
- 
-      // Decode and validate content
-      const decodedContent = this.htmlEntityDecoder.decode(fileContent, {
-        unescapeChars: ['"'],
-      });
-      if (!this.isValidContent(decodedContent)) {
-        return this.createErrorResult(
-          "Invalid content detected after decoding",
-        );
-      }
- 
-      // Write file
-      const result = await this.fileOperations.write(filePath, decodedContent);
- 
-      if (!result.success) {
-        this.logError(`Failed to write file ${filePath}: ${result.error}`);
-        return this.createErrorResult(result.error!);
-      }
- 
-      this.logInfo(
-        `Successfully wrote ${Buffer.byteLength(decodedContent, "utf8")} bytes to ${filePath}`,
-      );
-      return this.createSuccessResult();
-    } catch (error) {
-      this.logError(`Unexpected error in WriteFileAction: ${error}`);
-      return this.createErrorResult(
-        `Unexpected error: ${error instanceof Error ? error.message : String(error)}`,
-      );
-    }
-  }
- 
-  private async checkLargeRemoval(
-    filePath: string,
-    newContent: string,
-  ): Promise<IActionResult> {
-    try {
-      const exists = await this.fileOperations.exists(filePath);
-      if (!exists) {
-        this.logInfo(`Creating new file: ${filePath}`);
-        return this.createSuccessResult();
-      }
- 
-      this.logInfo(`File exists at: ${filePath}`);
-      this.modelScaler.incrementTryCount(filePath);
- 
-      const readResult = await this.fileOperations.read(filePath);
-      if (!readResult.success) {
-        this.logWarning(
-          `Could not read existing file ${filePath}: ${readResult.error}`,
-        );
-        return this.createSuccessResult();
-      }
- 
-      const existingContent = readResult.data as string;
-      const removalPercentage = this.calculateRemovalPercentage(
-        existingContent,
-        newContent,
-      );
- 
-      this.logInfo(
-        `Content removal percentage: ${removalPercentage.toFixed(1)}%`,
-      );
- 
-      if (removalPercentage > BLOCK_WRITE_IF_CONTENT_REMOVAL_THRESHOLD) {
-        return this.createErrorResult(
-          `Prevented removal of ${removalPercentage.toFixed(1)}% of file content. This appears to be a potential error. Please review the changes and ensure only necessary modifications are made.`,
-        );
-      }
- 
-      return this.createSuccessResult();
-    } catch (error) {
-      this.logError(`Error in checkLargeRemoval: ${error}`);
-      return this.createErrorResult(
-        `Error checking content removal: ${error instanceof Error ? error.message : String(error)}`,
-      );
-    }
-  }
- 
-  private calculateRemovalPercentage(
-    existingContent: string,
-    newContent: string,
-  ): number {
-    const existingLength = existingContent.trim().length;
-    const newLength = newContent.trim().length;
- 
-    if (existingLength === 0) return 0;
- 
-    const removedLength = Math.max(0, existingLength - newLength);
-    return (removedLength / existingLength) * 100;
-  }
- 
-  private isValidContent(content: string): boolean {
-    try {
-      // Check for null bytes and other potentially dangerous content
-      if (content.includes("\0")) {
-        this.logWarning("Content contains null bytes");
-        return false;
-      }
- 
-      // Check for reasonable line length
-      const hasExcessiveLines = content
-        .split("\n")
-        .some((line) => line.length > MAX_LINE_LENGTH);
-      if (hasExcessiveLines) {
-        this.logWarning("Content contains excessively long lines");
-        return false;
-      }
- 
-      return true;
-    } catch (error) {
-      this.logError(`Error in isValidContent: ${error}`);
-      return false;
-    }
-  }
-}
- 
- -
-
- - - - - - - - \ No newline at end of file diff --git a/coverage/lcov-report/services/LLM/actions/blueprints/commandActionBlueprint.ts.html b/coverage/lcov-report/services/LLM/actions/blueprints/commandActionBlueprint.ts.html deleted file mode 100644 index 7e72d4d7..00000000 --- a/coverage/lcov-report/services/LLM/actions/blueprints/commandActionBlueprint.ts.html +++ /dev/null @@ -1,124 +0,0 @@ - - - - - - Code coverage report for services/LLM/actions/blueprints/commandActionBlueprint.ts - - - - - - - - - -
-
-

All files / services/LLM/actions/blueprints commandActionBlueprint.ts

-
- -
- 100% - Statements - 3/3 -
- - -
- 100% - Branches - 0/0 -
- - -
- 100% - Functions - 0/0 -
- - -
- 100% - Lines - 3/3 -
- - -
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

- -
-
-

-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -1416x -  -16x -  -16x -  -  -  -  -  -  -  -  - 
import { CommandAction } from "../CommandAction";
-import { IActionBlueprint } from "../core/IAction";
-import { ActionPriority } from "../types/ActionPriority";
- 
-export const commandActionBlueprint: IActionBlueprint = {
-  tag: "execute_command",
-  class: CommandAction,
-  description: "Executes a system command with output streaming",
-  priority: ActionPriority.LOW,
-  canRunInParallel: false,
-  requiresProcessing: true,
-  parameters: [], // No parameters since we extract command from tag content
-};
- 
- -
-
- - - - - - - - \ No newline at end of file diff --git a/coverage/lcov-report/services/LLM/actions/blueprints/copyFileActionBlueprint.ts.html b/coverage/lcov-report/services/LLM/actions/blueprints/copyFileActionBlueprint.ts.html deleted file mode 100644 index bad6fd3e..00000000 --- a/coverage/lcov-report/services/LLM/actions/blueprints/copyFileActionBlueprint.ts.html +++ /dev/null @@ -1,163 +0,0 @@ - - - - - - Code coverage report for services/LLM/actions/blueprints/copyFileActionBlueprint.ts - - - - - - - - - -
-
-

All files / services/LLM/actions/blueprints copyFileActionBlueprint.ts

-
- -
- 60% - Statements - 3/5 -
- - -
- 0% - Branches - 0/4 -
- - -
- 0% - Functions - 0/2 -
- - -
- 60% - Lines - 3/5 -
- - -
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

- -
-
-

-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -18 -19 -20 -21 -22 -23 -24 -25 -26 -2716x -  -16x -  -16x -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  - 
import { CopyFileAction } from "../CopyFileAction";
-import { IActionBlueprint } from "../core/IAction";
-import { ActionPriority } from "../types/ActionPriority";
- 
-export const copyFileActionBlueprint: IActionBlueprint = {
-  tag: "copy_file",
-  class: CopyFileAction,
-  description: "Copy a file from source to destination path",
-  priority: ActionPriority.MEDIUM,
-  canRunInParallel: true,
-  requiresProcessing: false,
-  parameters: [
-    {
-      name: "source_path",
-      required: true,
-      description: "The source path of the file to copy",
-      validator: (value: any) => typeof value === "string" && value.length > 0,
-    },
-    {
-      name: "destination_path",
-      required: true,
-      description: "The destination path for the file copy",
-      validator: (value: any) => typeof value === "string" && value.length > 0,
-    },
-  ],
-};
- 
- -
-
- - - - - - - - \ No newline at end of file diff --git a/coverage/lcov-report/services/LLM/actions/blueprints/deleteFileActionBlueprint.ts.html b/coverage/lcov-report/services/LLM/actions/blueprints/deleteFileActionBlueprint.ts.html deleted file mode 100644 index 55b94030..00000000 --- a/coverage/lcov-report/services/LLM/actions/blueprints/deleteFileActionBlueprint.ts.html +++ /dev/null @@ -1,145 +0,0 @@ - - - - - - Code coverage report for services/LLM/actions/blueprints/deleteFileActionBlueprint.ts - - - - - - - - - -
-
-

All files / services/LLM/actions/blueprints deleteFileActionBlueprint.ts

-
- -
- 75% - Statements - 3/4 -
- - -
- 0% - Branches - 0/2 -
- - -
- 0% - Functions - 0/1 -
- - -
- 75% - Lines - 3/4 -
- - -
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

- -
-
-

-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -18 -19 -20 -21  -16x -16x -  -16x -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  - 
import { IActionBlueprint } from "../core/IAction";
-import { DeleteFileAction } from "../DeleteFileAction";
-import { ActionPriority } from "../types/ActionPriority";
- 
-export const deleteFileActionBlueprint: IActionBlueprint = {
-  tag: "delete_file",
-  class: DeleteFileAction,
-  description: "Delete a file at the specified path",
-  priority: ActionPriority.MEDIUM,
-  canRunInParallel: false,
-  requiresProcessing: false,
-  parameters: [
-    {
-      name: "path",
-      required: true,
-      description: "The path of the file to delete",
-      validator: (value: any) => typeof value === "string" && value.length > 0,
-    },
-  ],
-};
- 
- -
-
- - - - - - - - \ No newline at end of file diff --git a/coverage/lcov-report/services/LLM/actions/blueprints/endPhaseActionBlueprint.ts.html b/coverage/lcov-report/services/LLM/actions/blueprints/endPhaseActionBlueprint.ts.html deleted file mode 100644 index 3b50a911..00000000 --- a/coverage/lcov-report/services/LLM/actions/blueprints/endPhaseActionBlueprint.ts.html +++ /dev/null @@ -1,121 +0,0 @@ - - - - - - Code coverage report for services/LLM/actions/blueprints/endPhaseActionBlueprint.ts - - - - - - - - - -
-
-

All files / services/LLM/actions/blueprints endPhaseActionBlueprint.ts

-
- -
- 100% - Statements - 3/3 -
- - -
- 100% - Branches - 0/0 -
- - -
- 100% - Functions - 0/0 -
- - -
- 100% - Lines - 3/3 -
- - -
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

- -
-
-

-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13  -16x -16x -  -16x -  -  -  -  -  -  -  - 
import { IActionBlueprint } from "../core/IAction";
-import { EndPhaseAction } from "../EndPhaseAction";
-import { ActionPriority } from "../types/ActionPriority";
- 
-export const endPhaseActionBlueprint: IActionBlueprint = {
-  tag: "end_phase",
-  class: EndPhaseAction,
-  description: "Ends the current phase and transitions to the next phase",
-  parameters: [],
-  requiresProcessing: true,
-  priority: ActionPriority.CRITICAL, // High priority to ensure phase transition happens before other actions
-};
- 
- -
-
- - - - - - - - \ No newline at end of file diff --git a/coverage/lcov-report/services/LLM/actions/blueprints/endTaskActionBlueprint.ts.html b/coverage/lcov-report/services/LLM/actions/blueprints/endTaskActionBlueprint.ts.html deleted file mode 100644 index 285e7c52..00000000 --- a/coverage/lcov-report/services/LLM/actions/blueprints/endTaskActionBlueprint.ts.html +++ /dev/null @@ -1,124 +0,0 @@ - - - - - - Code coverage report for services/LLM/actions/blueprints/endTaskActionBlueprint.ts - - - - - - - - - -
-
-

All files / services/LLM/actions/blueprints endTaskActionBlueprint.ts

-
- -
- 100% - Statements - 3/3 -
- - -
- 100% - Branches - 0/0 -
- - -
- 100% - Functions - 0/0 -
- - -
- 100% - Lines - 3/3 -
- - -
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

- -
-
-

-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14  -16x -16x -  -16x -  -  -  -  -  -  -  -  - 
import { IActionBlueprint } from "../core/IAction";
-import { EndTaskAction } from "../EndTaskAction";
-import { ActionPriority } from "../types/ActionPriority";
- 
-export const endTaskActionBlueprint: IActionBlueprint = {
-  tag: "end_task",
-  class: EndTaskAction,
-  description: "Mark a task as complete with a message",
-  priority: ActionPriority.LOWEST,
-  canRunInParallel: false,
-  requiresProcessing: false,
-  parameters: [],
-};
- 
- -
-
- - - - - - - - \ No newline at end of file diff --git a/coverage/lcov-report/services/LLM/actions/blueprints/fetchUrlActionBlueprint.ts.html b/coverage/lcov-report/services/LLM/actions/blueprints/fetchUrlActionBlueprint.ts.html deleted file mode 100644 index f893677a..00000000 --- a/coverage/lcov-report/services/LLM/actions/blueprints/fetchUrlActionBlueprint.ts.html +++ /dev/null @@ -1,154 +0,0 @@ - - - - - - Code coverage report for services/LLM/actions/blueprints/fetchUrlActionBlueprint.ts - - - - - - - - - -
-
-

All files / services/LLM/actions/blueprints fetchUrlActionBlueprint.ts

-
- -
- 75% - Statements - 3/4 -
- - -
- 0% - Branches - 0/4 -
- - -
- 0% - Functions - 0/1 -
- - -
- 75% - Lines - 3/4 -
- - -
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

- -
-
-

-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -18 -19 -20 -21 -22 -23 -24  -16x -16x -  -16x -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  - 
import { IActionBlueprint } from "../core/IAction";
-import { FetchUrlAction } from "../FetchUrlAction";
-import { ActionPriority } from "../types/ActionPriority";
- 
-export const fetchUrlActionBlueprint: IActionBlueprint = {
-  tag: "fetch_url",
-  class: FetchUrlAction,
-  description: "Fetch content from a URL",
-  priority: ActionPriority.LOW,
-  canRunInParallel: true,
-  requiresProcessing: true,
-  parameters: [
-    {
-      name: "url",
-      required: true,
-      description: "The URL to fetch content from",
-      validator: (value: any) =>
-        typeof value === "string" &&
-        value.length > 0 &&
-        (value.startsWith("http://") || value.startsWith("https://")),
-    },
-  ],
-};
- 
- -
-
- - - - - - - - \ No newline at end of file diff --git a/coverage/lcov-report/services/LLM/actions/blueprints/index.html b/coverage/lcov-report/services/LLM/actions/blueprints/index.html deleted file mode 100644 index 4d4a279f..00000000 --- a/coverage/lcov-report/services/LLM/actions/blueprints/index.html +++ /dev/null @@ -1,281 +0,0 @@ - - - - - - Code coverage report for services/LLM/actions/blueprints - - - - - - - - - -
-
-

All files services/LLM/actions/blueprints

-
- -
- 77.46% - Statements - 55/71 -
- - -
- 8.1% - Branches - 3/37 -
- - -
- 20% - Functions - 4/20 -
- - -
- 77.46% - Lines - 55/71 -
- - -
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

- -
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
FileStatementsBranchesFunctionsLines
commandActionBlueprint.ts -
-
100%3/3100%0/0100%0/0100%3/3
copyFileActionBlueprint.ts -
-
60%3/50%0/40%0/260%3/5
deleteFileActionBlueprint.ts -
-
75%3/40%0/20%0/175%3/4
endPhaseActionBlueprint.ts -
-
100%3/3100%0/0100%0/0100%3/3
endTaskActionBlueprint.ts -
-
100%3/3100%0/0100%0/0100%3/3
fetchUrlActionBlueprint.ts -
-
75%3/40%0/40%0/175%3/4
index.ts -
-
100%21/21100%3/3100%4/4100%21/21
moveFileActionBlueprint.ts -
-
60%3/50%0/40%0/260%3/5
readFileActionBlueprint.ts -
-
75%3/40%0/20%0/175%3/4
relativePathLookupActionBlueprint.ts -
-
50%3/60%0/80%0/350%3/6
searchActionsBlueprint.ts -
-
50%4/80%0/80%0/450%4/8
writeFileActionBlueprint.ts -
-
60%3/50%0/20%0/260%3/5
-
-
-
- - - - - - - - \ No newline at end of file diff --git a/coverage/lcov-report/services/LLM/actions/blueprints/index.ts.html b/coverage/lcov-report/services/LLM/actions/blueprints/index.ts.html deleted file mode 100644 index 640d6024..00000000 --- a/coverage/lcov-report/services/LLM/actions/blueprints/index.ts.html +++ /dev/null @@ -1,247 +0,0 @@ - - - - - - Code coverage report for services/LLM/actions/blueprints/index.ts - - - - - - - - - -
-
-

All files / services/LLM/actions/blueprints index.ts

-
- -
- 100% - Statements - 21/21 -
- - -
- 100% - Branches - 3/3 -
- - -
- 100% - Functions - 4/4 -
- - -
- 100% - Lines - 21/21 -
- - -
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

- -
-
-

-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -18 -19 -20 -21 -22 -23 -24 -25 -26 -27 -28 -29 -30 -31 -32 -33 -34 -35 -36 -37 -38 -39 -40 -41 -42 -43 -44 -45 -46 -47 -48 -49 -50 -51 -52 -53 -54 -55  -16x -16x -16x -16x -16x -16x -16x -16x -16x -16x -  -  -  -16x -  -16x -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -16x -122x -  -  -  -16x -133x -  -  -  -16x -1596x -1596x -  -  -  -16x -133x -  - 
import { IActionBlueprint } from "../core/IAction";
-import { commandActionBlueprint } from "./commandActionBlueprint";
-import { copyFileActionBlueprint } from "./copyFileActionBlueprint";
-import { deleteFileActionBlueprint } from "./deleteFileActionBlueprint";
-import { endPhaseActionBlueprint } from "./endPhaseActionBlueprint";
-import { endTaskActionBlueprint } from "./endTaskActionBlueprint";
-import { fetchUrlActionBlueprint } from "./fetchUrlActionBlueprint";
-import { moveFileActionBlueprint } from "./moveFileActionBlueprint";
-import { readFileActionBlueprint } from "./readFileActionBlueprint";
-import { relativePathLookupActionBlueprint } from "./relativePathLookupActionBlueprint";
-import {
-  searchFileActionBlueprint,
-  searchStringActionBlueprint,
-} from "./searchActionsBlueprint";
-import { writeFileActionBlueprint } from "./writeFileActionBlueprint";
- 
-export const actionsBlueprints = {
-  write_file: writeFileActionBlueprint,
-  read_file: readFileActionBlueprint,
-  execute_command: commandActionBlueprint,
-  search_string: searchStringActionBlueprint,
-  search_file: searchFileActionBlueprint,
-  end_task: endTaskActionBlueprint,
-  end_phase: endPhaseActionBlueprint,
-  relative_path_lookup: relativePathLookupActionBlueprint,
-  delete_file: deleteFileActionBlueprint,
-  move_file: moveFileActionBlueprint,
-  fetch_url: fetchUrlActionBlueprint,
-  copy_file: copyFileActionBlueprint,
-} as const;
- 
-// Infer action types from blueprints
-export type ActionTag = keyof typeof actionsBlueprints;
- 
-// Helper to get blueprint by tag
-export function getBlueprint(tag: ActionTag): IActionBlueprint {
-  return actionsBlueprints[tag];
-}
- 
-// Helper to get all registered action tags
-export function getActionTags(): ActionTag[] {
-  return Object.keys(actionsBlueprints) as ActionTag[];
-}
- 
-// Helper to check if an action is fully implemented
-export function isActionImplemented(tag: ActionTag): boolean {
-  const blueprint = actionsBlueprints[tag];
-  return !!(blueprint && blueprint.class && blueprint.tag);
-}
- 
-// Get only implemented actions
-export function getImplementedActions(): ActionTag[] {
-  return getActionTags().filter(isActionImplemented);
-}
- 
- -
-
- - - - - - - - \ No newline at end of file diff --git a/coverage/lcov-report/services/LLM/actions/blueprints/moveFileActionBlueprint.ts.html b/coverage/lcov-report/services/LLM/actions/blueprints/moveFileActionBlueprint.ts.html deleted file mode 100644 index 2b6ee2e4..00000000 --- a/coverage/lcov-report/services/LLM/actions/blueprints/moveFileActionBlueprint.ts.html +++ /dev/null @@ -1,163 +0,0 @@ - - - - - - Code coverage report for services/LLM/actions/blueprints/moveFileActionBlueprint.ts - - - - - - - - - -
-
-

All files / services/LLM/actions/blueprints moveFileActionBlueprint.ts

-
- -
- 60% - Statements - 3/5 -
- - -
- 0% - Branches - 0/4 -
- - -
- 0% - Functions - 0/2 -
- - -
- 60% - Lines - 3/5 -
- - -
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

- -
-
-

-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -18 -19 -20 -21 -22 -23 -24 -25 -26 -27  -17x -17x -  -17x -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  - 
import { IActionBlueprint } from "../core/IAction";
-import { MoveFileAction } from "../MoveFileAction";
-import { ActionPriority } from "../types/ActionPriority";
- 
-export const moveFileActionBlueprint: IActionBlueprint = {
-  tag: "move_file",
-  class: MoveFileAction,
-  description: "Move a file from source to destination path",
-  priority: ActionPriority.MEDIUM,
-  canRunInParallel: false,
-  requiresProcessing: false,
-  parameters: [
-    {
-      name: "source_path",
-      required: true,
-      description: "The source path of the file to move",
-      validator: (value: any) => typeof value === "string" && value.length > 0,
-    },
-    {
-      name: "destination_path",
-      required: true,
-      description: "The destination path for the file",
-      validator: (value: any) => typeof value === "string" && value.length > 0,
-    },
-  ],
-};
- 
- -
-
- - - - - - - - \ No newline at end of file diff --git a/coverage/lcov-report/services/LLM/actions/blueprints/readFileActionBlueprint.ts.html b/coverage/lcov-report/services/LLM/actions/blueprints/readFileActionBlueprint.ts.html deleted file mode 100644 index 31224476..00000000 --- a/coverage/lcov-report/services/LLM/actions/blueprints/readFileActionBlueprint.ts.html +++ /dev/null @@ -1,151 +0,0 @@ - - - - - - Code coverage report for services/LLM/actions/blueprints/readFileActionBlueprint.ts - - - - - - - - - -
-
-

All files / services/LLM/actions/blueprints readFileActionBlueprint.ts

-
- -
- 75% - Statements - 3/4 -
- - -
- 0% - Branches - 0/2 -
- - -
- 0% - Functions - 0/1 -
- - -
- 75% - Lines - 3/4 -
- - -
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

- -
-
-

-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -18 -19 -20 -21 -22 -23  -16x -16x -  -16x -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  - 
import { IActionBlueprint } from "../core/IAction";
-import { ReadFileAction } from "../ReadFileAction";
-import { ActionPriority } from "../types/ActionPriority";
- 
-export const readFileActionBlueprint: IActionBlueprint = {
-  tag: "read_file",
-  class: ReadFileAction,
-  description: "Reads content from one or more files",
-  priority: ActionPriority.CRITICAL,
-  canRunInParallel: true,
-  requiresProcessing: true,
-  parameters: [
-    {
-      name: "path",
-      required: true,
-      description:
-        "The path(s) of the file(s) to read. Can specify multiple path tags.",
-      validator: (value: unknown): value is string =>
-        typeof value === "string" && value.length > 0,
-    },
-  ],
-};
- 
- -
-
- - - - - - - - \ No newline at end of file diff --git a/coverage/lcov-report/services/LLM/actions/blueprints/relativePathLookupActionBlueprint.ts.html b/coverage/lcov-report/services/LLM/actions/blueprints/relativePathLookupActionBlueprint.ts.html deleted file mode 100644 index 88d14d9b..00000000 --- a/coverage/lcov-report/services/LLM/actions/blueprints/relativePathLookupActionBlueprint.ts.html +++ /dev/null @@ -1,184 +0,0 @@ - - - - - - Code coverage report for services/LLM/actions/blueprints/relativePathLookupActionBlueprint.ts - - - - - - - - - -
-
-

All files / services/LLM/actions/blueprints relativePathLookupActionBlueprint.ts

-
- -
- 50% - Statements - 3/6 -
- - -
- 0% - Branches - 0/8 -
- - -
- 0% - Functions - 0/3 -
- - -
- 50% - Lines - 3/6 -
- - -
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

- -
-
-

-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -18 -19 -20 -21 -22 -23 -24 -25 -26 -27 -28 -29 -30 -31 -32 -33 -34  -17x -17x -  -17x -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  - 
import { IActionBlueprint } from "../core/IAction";
-import { RelativePathLookupAction } from "../RelativePathLookupAction";
-import { ActionPriority } from "../types/ActionPriority";
- 
-export const relativePathLookupActionBlueprint: IActionBlueprint = {
-  tag: "relative_path_lookup",
-  class: RelativePathLookupAction,
-  description: "Adjust and validate relative file paths",
-  priority: ActionPriority.HIGH,
-  canRunInParallel: true,
-  requiresProcessing: true,
-  parameters: [
-    {
-      name: "source_path",
-      required: true,
-      description: "The source file path to resolve relative paths from",
-      validator: (value: any) => typeof value === "string" && value.length > 0,
-    },
-    {
-      name: "path",
-      required: true,
-      description: "The relative path to adjust",
-      validator: (value: any) => typeof value === "string" && value.length > 0,
-    },
-    {
-      name: "threshold",
-      required: false,
-      description: "Similarity threshold for path matching (default: 0.6)",
-      validator: (value: any) =>
-        !value || (typeof value === "number" && value > 0 && value <= 1),
-    },
-  ],
-};
- 
- -
-
- - - - - - - - \ No newline at end of file diff --git a/coverage/lcov-report/services/LLM/actions/blueprints/searchActionsBlueprint.ts.html b/coverage/lcov-report/services/LLM/actions/blueprints/searchActionsBlueprint.ts.html deleted file mode 100644 index 524c3f2c..00000000 --- a/coverage/lcov-report/services/LLM/actions/blueprints/searchActionsBlueprint.ts.html +++ /dev/null @@ -1,232 +0,0 @@ - - - - - - Code coverage report for services/LLM/actions/blueprints/searchActionsBlueprint.ts - - - - - - - - - -
-
-

All files / services/LLM/actions/blueprints searchActionsBlueprint.ts

-
- -
- 50% - Statements - 4/8 -
- - -
- 0% - Branches - 0/8 -
- - -
- 0% - Functions - 0/4 -
- - -
- 50% - Lines - 4/8 -
- - -
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

- -
-
-

-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -18 -19 -20 -21 -22 -23 -24 -25 -26 -27 -28 -29 -30 -31 -32 -33 -34 -35 -36 -37 -38 -39 -40 -41 -42 -43 -44 -45 -46 -47 -48 -49 -50  -17x -17x -  -17x -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -17x -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  - 
import { IActionBlueprint } from "../core/IAction";
-import { SearchAction } from "../SearchAction";
-import { ActionPriority } from "../types/ActionPriority";
- 
-export const searchStringActionBlueprint: IActionBlueprint = {
-  tag: "search_string",
-  class: SearchAction,
-  description: "Search for content within files",
-  priority: ActionPriority.HIGH,
-  canRunInParallel: true,
-  requiresProcessing: true,
-  parameters: [
-    {
-      name: "directory",
-      required: true,
-      description: "The directory to search in",
-      validator: (value: any) => typeof value === "string" && value.length > 0,
-    },
-    {
-      name: "term",
-      required: true,
-      description: "The content to search for",
-      validator: (value: any) => typeof value === "string" && value.length > 0,
-    },
-  ],
-};
- 
-export const searchFileActionBlueprint: IActionBlueprint = {
-  tag: "search_file",
-  class: SearchAction,
-  description: "Search for files by name",
-  priority: ActionPriority.HIGH,
-  canRunInParallel: true,
-  requiresProcessing: true,
-  parameters: [
-    {
-      name: "directory",
-      required: true,
-      description: "The directory to search in",
-      validator: (value: any) => typeof value === "string" && value.length > 0,
-    },
-    {
-      name: "term",
-      required: true,
-      description: "The filename pattern to search for",
-      validator: (value: any) => typeof value === "string" && value.length > 0,
-    },
-  ],
-};
- 
- -
-
- - - - - - - - \ No newline at end of file diff --git a/coverage/lcov-report/services/LLM/actions/blueprints/writeFileActionBlueprint.ts.html b/coverage/lcov-report/services/LLM/actions/blueprints/writeFileActionBlueprint.ts.html deleted file mode 100644 index b518c0d9..00000000 --- a/coverage/lcov-report/services/LLM/actions/blueprints/writeFileActionBlueprint.ts.html +++ /dev/null @@ -1,172 +0,0 @@ - - - - - - Code coverage report for services/LLM/actions/blueprints/writeFileActionBlueprint.ts - - - - - - - - - -
-
-

All files / services/LLM/actions/blueprints writeFileActionBlueprint.ts

-
- -
- 60% - Statements - 3/5 -
- - -
- 0% - Branches - 0/2 -
- - -
- 0% - Functions - 0/2 -
- - -
- 60% - Lines - 3/5 -
- - -
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

- -
-
-

-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -18 -19 -20 -21 -22 -23 -24 -25 -26 -27 -28 -29 -30  -17x -17x -  -17x -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  - 
import { IActionBlueprint } from "../core/IAction";
-import { ActionPriority } from "../types/ActionPriority";
-import { WriteFileAction } from "../WriteFileAction";
- 
-export const writeFileActionBlueprint: IActionBlueprint = {
-  tag: "write_file",
-  class: WriteFileAction,
-  description:
-    "Writes content to a file with safety checks for content removal",
-  priority: ActionPriority.MEDIUM,
-  canRunInParallel: false,
-  requiresProcessing: false,
-  parameters: [
-    {
-      name: "path",
-      required: true,
-      description: "The path where the file will be written",
-      validator: (value: unknown): value is string =>
-        typeof value === "string" && value.length > 0,
-    },
-    {
-      name: "content",
-      required: true,
-      description:
-        "The content to write to the file. Must not remove too much existing content if file exists.",
-      validator: (value: unknown): value is string => typeof value === "string",
-    },
-  ],
-};
- 
- -
-
- - - - - - - - \ No newline at end of file diff --git a/coverage/lcov-report/services/LLM/actions/core/ActionFactory.ts.html b/coverage/lcov-report/services/LLM/actions/core/ActionFactory.ts.html deleted file mode 100644 index 3ecbb43f..00000000 --- a/coverage/lcov-report/services/LLM/actions/core/ActionFactory.ts.html +++ /dev/null @@ -1,325 +0,0 @@ - - - - - - Code coverage report for services/LLM/actions/core/ActionFactory.ts - - - - - - - - - -
-
-

All files / services/LLM/actions/core ActionFactory.ts

-
- -
- 52.63% - Statements - 20/38 -
- - -
- 21.42% - Branches - 3/14 -
- - -
- 66.66% - Functions - 4/6 -
- - -
- 50% - Lines - 18/36 -
- - -
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

- -
-
-

-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -18 -19 -20 -21 -22 -23 -24 -25 -26 -27 -28 -29 -30 -31 -32 -33 -34 -35 -36 -37 -38 -39 -40 -41 -42 -43 -44 -45 -46 -47 -48 -49 -50 -51 -52 -53 -54 -55 -56 -57 -58 -59 -60 -61 -62 -63 -64 -65 -66 -67 -68 -69 -70 -71 -72 -73 -74 -75 -76 -77 -78 -79 -80 -816x -6x -  -  -  -  -  -  -  -6x -100x -100x -  -  -  -100x -100x -1200x -1200x -1200x -  -  -  -  -  -2x -  -  -  -  -  -  -  -  -2x -  -  -  -2x -2x -  -  -  -2x -  -2x -2x -2x -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  - 
import { autoInjectable, container } from "tsyringe";
-import {
-  actionsBlueprints,
-  ActionTag,
-  getImplementedActions,
-} from "../blueprints";
-import { IAction, IActionBlueprint } from "./IAction";
- 
-@autoInjectable()
-export class ActionFactory {
-  private blueprintCache: Map<string, IActionBlueprint> = new Map();
-  private instanceCache: Map<string, IAction> = new Map();
- 
-  constructor() {
-    // Initialize blueprint cache with only implemented actions
-    const implementedActions = getImplementedActions();
-    implementedActions.forEach((tag) => {
-      const blueprint = actionsBlueprints[tag];
-      if (blueprint) {
-        this.blueprintCache.set(tag, blueprint);
-      }
-    });
-  }
- 
-  getBlueprint(tag: string): IActionBlueprint | undefined {
-    return this.blueprintCache.get(tag);
-  }
- 
-  getAllBlueprints(): IActionBlueprint[] {
-    return Array.from(this.blueprintCache.values());
-  }
- 
-  createAction(tag: ActionTag): IAction | undefined {
-    // Check instance cache first
-    Iif (this.instanceCache.has(tag)) {
-      return this.instanceCache.get(tag);
-    }
- 
-    const blueprint = this.getBlueprint(tag);
-    Iif (!blueprint || !blueprint.class) {
-      return undefined;
-    }
- 
-    try {
-      // Create new instance using tsyringe container
-      const instance = container.resolve(blueprint.class) as IAction;
-      this.instanceCache.set(tag, instance);
-      return instance;
-    } catch (error) {
-      console.error(`Failed to create action instance for ${tag}:`, error);
-      return undefined;
-    }
-  }
- 
-  validateParameters(tag: string, params: Record<string, any>): string | null {
-    const blueprint = this.getBlueprint(tag);
-    Iif (!blueprint) {
-      return `Unknown action type: ${tag}`;
-    }
- 
-    Iif (!blueprint.parameters) {
-      return null;
-    }
- 
-    for (const param of blueprint.parameters) {
-      Iif (param.required && !(param.name in params)) {
-        return `Missing required parameter: ${param.name}`;
-      }
- 
-      Iif (param.validator && params[param.name] !== undefined) {
-        const isValid = param.validator(params[param.name]);
-        Iif (!isValid) {
-          return `Invalid value for parameter: ${param.name}`;
-        }
-      }
-    }
- 
-    return null;
-  }
-}
- 
- -
-
- - - - - - - - \ No newline at end of file diff --git a/coverage/lcov-report/services/LLM/actions/core/ActionQueue.ts.html b/coverage/lcov-report/services/LLM/actions/core/ActionQueue.ts.html deleted file mode 100644 index bfc9b913..00000000 --- a/coverage/lcov-report/services/LLM/actions/core/ActionQueue.ts.html +++ /dev/null @@ -1,373 +0,0 @@ - - - - - - Code coverage report for services/LLM/actions/core/ActionQueue.ts - - - - - - - - - -
-
-

All files / services/LLM/actions/core ActionQueue.ts

-
- -
- 97.36% - Statements - 37/38 -
- - -
- 88.88% - Branches - 16/18 -
- - -
- 100% - Functions - 11/11 -
- - -
- 97.05% - Lines - 33/34 -
- - -
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

- -
-
-

-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -18 -19 -20 -21 -22 -23 -24 -25 -26 -27 -28 -29 -30 -31 -32 -33 -34 -35 -36 -37 -38 -39 -40 -41 -42 -43 -44 -45 -46 -47 -48 -49 -50 -51 -52 -53 -54 -55 -56 -57 -58 -59 -60 -61 -62 -63 -64 -65 -66 -67 -68 -69 -70 -71 -72 -73 -74 -75 -76 -77 -78 -79 -80 -81 -82 -83 -84 -85 -86 -87 -88 -89 -90 -91 -92 -93 -94 -95 -96 -977x -7x -7x -  -  -  -  -  -  -  -  -  -  -  -7x -26x -26x -  -  -24x -24x -24x -  -24x -  -  -  -  -  -  -  -24x -  -  -  -21x -1x -  -  -  -20x -  -20x -  -  -  -  -20x -12x -12x -  -  -20x -  -  -  -8x -7x -  -  -8x -7x -  -7x -  -5x -  -5x -2x -  -  -  -  -  -1x -  -  -  -  -  -5x -  -  -  -7x -  -  -  -6x -  -  -  -17x -17x -  -  - 
import { singleton } from "tsyringe";
-import { ActionTag, getBlueprint } from "../blueprints";
-import { ActionPriority } from "../types/ActionPriority";
-import { IActionResult } from "../types/ActionTypes";
- 
-interface QueuedAction {
-  type: string;
-  content: string;
-  priority: ActionPriority;
-  requiresProcessing: boolean;
-  result?: IActionResult;
-}
- 
-@singleton()
-export class ActionQueue {
-  private queue: QueuedAction[] = [];
-  private processedResults: Map<string, unknown> = new Map();
- 
-  enqueue(type: string, content: string): void {
-    const blueprint = getBlueprint(type as ActionTag);
-    const priority = blueprint?.priority || ActionPriority.LOW;
-    const requiresProcessing = blueprint?.requiresProcessing || false;
- 
-    this.queue.push({
-      type,
-      content,
-      priority,
-      requiresProcessing,
-    });
- 
-    // Sort queue by priority (lower numbers = higher priority)
-    this.queue.sort((a, b) => a.priority - b.priority);
-  }
- 
-  dequeue(): QueuedAction | undefined {
-    if (this.queue.length === 0) {
-      return undefined;
-    }
- 
-    // Get the highest priority action that hasn't been processed
-    const nextAction = this.queue.find((action) => !action.result);
- 
-    Iif (!nextAction) {
-      return undefined;
-    }
- 
-    // If it doesn't require processing, remove it from the queue
-    if (!nextAction.requiresProcessing) {
-      const index = this.queue.indexOf(nextAction);
-      this.queue.splice(index, 1);
-    }
- 
-    return nextAction;
-  }
- 
-  setActionResult(type: string, content: string, result: IActionResult): void {
-    const actionIndex = this.queue.findIndex(
-      (action) => action.type === type && action.content === content,
-    );
- 
-    if (actionIndex !== -1) {
-      const action = this.queue[actionIndex];
- 
-      if (action.requiresProcessing && result.success) {
-        // Store processed results
-        this.processedResults.set(`${type}:${content}`, result.data);
-        // Remove the processed action from the queue
-        this.queue.splice(actionIndex, 1);
-      } else if (action.requiresProcessing && !result.success) {
-        // Optionally, you can handle failed processing here
-        // For example, you might want to retry or log the failure
-        // Currently, the action remains in the queue for potential reprocessing
-      } else {
-        // If the action does not require processing, remove it
-        this.queue.splice(actionIndex, 1);
-      }
-    }
-  }
- 
-  getProcessedResults(): Map<string, unknown> {
-    return this.processedResults;
-  }
- 
-  isEmpty(): boolean {
-    return this.queue.length === 0;
-  }
- 
-  size(): number {
-    return this.queue.length;
-  }
- 
-  clear(): void {
-    this.queue = [];
-    this.processedResults.clear();
-  }
-}
- 
- -
-
- - - - - - - - \ No newline at end of file diff --git a/coverage/lcov-report/services/LLM/actions/core/BaseAction.ts.html b/coverage/lcov-report/services/LLM/actions/core/BaseAction.ts.html deleted file mode 100644 index 4055ea95..00000000 --- a/coverage/lcov-report/services/LLM/actions/core/BaseAction.ts.html +++ /dev/null @@ -1,388 +0,0 @@ - - - - - - Code coverage report for services/LLM/actions/core/BaseAction.ts - - - - - - - - - -
-
-

All files / services/LLM/actions/core BaseAction.ts

-
- -
- 88.57% - Statements - 31/35 -
- - -
- 63.63% - Branches - 7/11 -
- - -
- 100% - Functions - 10/10 -
- - -
- 88.23% - Lines - 30/34 -
- - -
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

- -
-
-

-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -18 -19 -20 -21 -22 -23 -24 -25 -26 -27 -28 -29 -30 -31 -32 -33 -34 -35 -36 -37 -38 -39 -40 -41 -42 -43 -44 -45 -46 -47 -48 -49 -50 -51 -52 -53 -54 -55 -56 -57 -58 -59 -60 -61 -62 -63 -64 -65 -66 -67 -68 -69 -70 -71 -72 -73 -74 -75 -76 -77 -78 -79 -80 -81 -82 -83 -84 -85 -86 -87 -88 -89 -90 -91 -92 -93 -94 -95 -96 -97 -98 -99 -100 -101 -102  -  -  -  -20x -71x -  -  -  -  -  -  -  -  -40x -  -65x -  -40x -40x -65x -65x -59x -  -  -  -40x -  -  -  -  -  -  -  -36x -  -  -  -74x -  -74x -74x -  -  -  -  -74x -  -  -74x -74x -21x -21x -  -  -  -53x -  -  -53x -40x -  -13x -  -  -53x -  -  -  -  -  -  -  -  -  -31x -  -  -  -54x -  -  -  -48x -  -  -  -57x -  -  -  -  -  -  -40x -40x -  -  -  -  -  - 
import { ActionTagsExtractor } from "../ActionTagsExtractor";
-import { IActionResult } from "../types/ActionTypes";
-import { IAction, IActionBlueprint, IActionParameter } from "./IAction";
- 
-export abstract class BaseAction implements IAction {
-  constructor(protected actionTagsExtractor: ActionTagsExtractor) {}
- 
-  protected abstract executeInternal(
-    params: Record<string, any>,
-  ): Promise<IActionResult>;
-  protected abstract validateParams(params: Record<string, any>): string | null;
-  protected abstract getBlueprint(): IActionBlueprint;
- 
-  protected parseParams(content: string): Record<string, any> {
-    const blueprint = this.getBlueprint();
-    const paramNames =
-      blueprint.parameters?.map((p: IActionParameter) => p.name) || [];
- 
-    const params: Record<string, any> = {};
-    for (const paramName of paramNames) {
-      const value = this.extractParamValue(content, paramName);
-      if (value !== null) {
-        params[paramName] = value;
-      }
-    }
- 
-    return params;
-  }
- 
-  // Allow actions to override this method for custom parameter extraction
-  protected extractParamValue(
-    content: string,
-    paramName: string,
-  ): string | string[] | null {
-    return this.actionTagsExtractor.extractTag(content, paramName);
-  }
- 
-  async execute(content: string): Promise<IActionResult> {
-    try {
-      // Get blueprint for validation
-      const blueprint = this.getBlueprint();
-      Iif (!blueprint) {
-        return this.createErrorResult("Action blueprint not found");
-      }
- 
-      // Parse parameters from content
-      const params = this.parseParams(content);
- 
-      // Validate parameters
-      const validationError = this.validateParams(params);
-      if (validationError) {
-        this.logError(validationError);
-        return this.createErrorResult(validationError);
-      }
- 
-      // Execute action-specific logic
-      const result = await this.executeInternal(params);
- 
-      // Log result for debugging
-      if (result.success) {
-        this.logSuccess(`Action executed successfully`);
-      } else {
-        this.logError(`Action execution failed: ${result.error?.message}`);
-      }
- 
-      return result;
-    } catch (error) {
-      const errorMessage =
-        error instanceof Error ? error.message : String(error);
-      this.logError(errorMessage);
-      return this.createErrorResult(error as Error);
-    }
-  }
- 
-  protected logError(message: string): void {
-    console.error(`🚫 ${this.getBlueprint().tag}: ${message}`);
-  }
- 
-  protected logInfo(message: string): void {
-    console.log(`ℹ️ ${this.getBlueprint().tag}: ${message}`);
-  }
- 
-  protected logSuccess(message: string): void {
-    console.log(`✅ ${this.getBlueprint().tag}: ${message}`);
-  }
- 
-  protected createSuccessResult(data?: any): IActionResult {
-    return {
-      success: true,
-      data,
-    };
-  }
- 
-  protected createErrorResult(error: string | Error): IActionResult {
-    const errorObj = typeof error === "string" ? new Error(error) : error;
-    return {
-      success: false,
-      error: errorObj,
-    };
-  }
-}
- 
- -
-
- - - - - - - - \ No newline at end of file diff --git a/coverage/lcov-report/services/LLM/actions/core/index.html b/coverage/lcov-report/services/LLM/actions/core/index.html deleted file mode 100644 index 7cb53d92..00000000 --- a/coverage/lcov-report/services/LLM/actions/core/index.html +++ /dev/null @@ -1,146 +0,0 @@ - - - - - - Code coverage report for services/LLM/actions/core - - - - - - - - - -
-
-

All files services/LLM/actions/core

-
- -
- 79.27% - Statements - 88/111 -
- - -
- 60.46% - Branches - 26/43 -
- - -
- 92.59% - Functions - 25/27 -
- - -
- 77.88% - Lines - 81/104 -
- - -
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

- -
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
FileStatementsBranchesFunctionsLines
ActionFactory.ts -
-
52.63%20/3821.42%3/1466.66%4/650%18/36
ActionQueue.ts -
-
97.36%37/3888.88%16/18100%11/1197.05%33/34
BaseAction.ts -
-
88.57%31/3563.63%7/11100%10/1088.23%30/34
-
-
-
- - - - - - - - \ No newline at end of file diff --git a/coverage/lcov-report/services/LLM/actions/index.html b/coverage/lcov-report/services/LLM/actions/index.html deleted file mode 100644 index 426f68d9..00000000 --- a/coverage/lcov-report/services/LLM/actions/index.html +++ /dev/null @@ -1,311 +0,0 @@ - - - - - - Code coverage report for services/LLM/actions - - - - - - - - - -
-
-

All files services/LLM/actions

-
- -
- 89.03% - Statements - 731/821 -
- - -
- 70.86% - Branches - 163/230 -
- - -
- 91.47% - Functions - 118/129 -
- - -
- 89.43% - Lines - 686/767 -
- - -
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

- -
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
FileStatementsBranchesFunctionsLines
ActionExecutor.ts -
-
81.69%58/7170.37%19/27100%2/282.35%56/68
ActionTagsExtractor.ts -
-
86%43/5079.16%19/2475%9/1287.8%36/41
ActionsParser.ts -
-
81.37%166/20462.9%39/6281.08%30/3783.15%158/190
CommandAction.ts -
-
90.66%68/7562.5%10/1692.3%12/1390.41%66/73
CopyFileAction.ts -
-
100%31/31100%4/4100%5/5100%29/29
DeleteFileAction.ts -
-
88.57%31/35100%5/5100%5/587.87%29/33
EndPhaseAction.ts -
-
100%16/16100%0/0100%4/4100%14/14
EndTaskAction.ts -
-
100%19/19100%1/1100%5/5100%17/17
FetchUrlAction.ts -
-
96.66%29/3050%2/4100%5/596.42%27/28
MoveFileAction.ts -
-
92.5%37/4055.55%5/9100%6/691.89%34/37
ReadFileAction.ts -
-
97.87%46/4785%17/20100%10/1097.67%42/43
RelativePathLookupAction.ts -
-
96%48/5072.22%13/18100%6/695.74%45/47
SearchAction.ts -
-
91.83%45/4976.47%13/17100%7/791.3%42/46
WriteFileAction.ts -
-
90.38%94/10469.56%16/23100%12/1290.09%91/101
-
-
-
- - - - - - - - \ No newline at end of file diff --git a/coverage/lcov-report/services/LLM/actions/types/ActionPriority.ts.html b/coverage/lcov-report/services/LLM/actions/types/ActionPriority.ts.html deleted file mode 100644 index b0725168..00000000 --- a/coverage/lcov-report/services/LLM/actions/types/ActionPriority.ts.html +++ /dev/null @@ -1,178 +0,0 @@ - - - - - - Code coverage report for services/LLM/actions/types/ActionPriority.ts - - - - - - - - - -
-
-

All files / services/LLM/actions/types ActionPriority.ts

-
- -
- 100% - Statements - 6/6 -
- - -
- 100% - Branches - 2/2 -
- - -
- 100% - Functions - 1/1 -
- - -
- 100% - Lines - 6/6 -
- - -
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

- -
-
-

-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -18 -19 -20 -21 -22 -23 -24 -25 -26 -27 -28 -29 -30 -31 -3221x -  -  -  -  -21x -  -  -  -  -  -21x -  -  -  -  -  -21x -  -  -  -  -  -21x -  -  -  -  -  -21x -  - 
export enum ActionPriority {
-  /**
-   * Critical priority for actions that must be executed first
-   * Example: read_file when mixed with other actions
-   */
-  CRITICAL = 1,
- 
-  /**
-   * High priority for actions that should be executed early
-   * Example: search operations, path lookups
-   */
-  HIGH = 2,
- 
-  /**
-   * Medium priority for standard file operations
-   * Example: write_file, move_file, copy_file
-   */
-  MEDIUM = 3,
- 
-  /**
-   * Low priority for actions that should be executed later
-   * Example: fetch_url, execute_command
-   */
-  LOW = 4,
- 
-  /**
-   * Lowest priority for actions that should be executed last
-   * Example: end_task
-   */
-  LOWEST = 5,
-}
- 
- -
-
- - - - - - - - \ No newline at end of file diff --git a/coverage/lcov-report/services/LLM/actions/types/index.html b/coverage/lcov-report/services/LLM/actions/types/index.html deleted file mode 100644 index 47f2c058..00000000 --- a/coverage/lcov-report/services/LLM/actions/types/index.html +++ /dev/null @@ -1,116 +0,0 @@ - - - - - - Code coverage report for services/LLM/actions/types - - - - - - - - - -
-
-

All files services/LLM/actions/types

-
- -
- 100% - Statements - 6/6 -
- - -
- 100% - Branches - 2/2 -
- - -
- 100% - Functions - 1/1 -
- - -
- 100% - Lines - 6/6 -
- - -
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

- -
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
FileStatementsBranchesFunctionsLines
ActionPriority.ts -
-
100%6/6100%2/2100%1/1100%6/6
-
-
-
- - - - - - - - \ No newline at end of file diff --git a/coverage/lcov-report/services/LLM/context/MessageContextBuilder.ts.html b/coverage/lcov-report/services/LLM/context/MessageContextBuilder.ts.html deleted file mode 100644 index 5fcc889e..00000000 --- a/coverage/lcov-report/services/LLM/context/MessageContextBuilder.ts.html +++ /dev/null @@ -1,811 +0,0 @@ - - - - - - Code coverage report for services/LLM/context/MessageContextBuilder.ts - - - - - - - - - -
-
-

All files / services/LLM/context MessageContextBuilder.ts

-
- -
- 95.31% - Statements - 61/64 -
- - -
- 80.85% - Branches - 38/47 -
- - -
- 90.9% - Functions - 10/11 -
- - -
- 95.16% - Lines - 59/62 -
- - -
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

- -
-
-

-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -18 -19 -20 -21 -22 -23 -24 -25 -26 -27 -28 -29 -30 -31 -32 -33 -34 -35 -36 -37 -38 -39 -40 -41 -42 -43 -44 -45 -46 -47 -48 -49 -50 -51 -52 -53 -54 -55 -56 -57 -58 -59 -60 -61 -62 -63 -64 -65 -66 -67 -68 -69 -70 -71 -72 -73 -74 -75 -76 -77 -78 -79 -80 -81 -82 -83 -84 -85 -86 -87 -88 -89 -90 -91 -92 -93 -94 -95 -96 -97 -98 -99 -100 -101 -102 -103 -104 -105 -106 -107 -108 -109 -110 -111 -112 -113 -114 -115 -116 -117 -118 -119 -120 -121 -122 -123 -124 -125 -126 -127 -128 -129 -130 -131 -132 -133 -134 -135 -136 -137 -138 -139 -140 -141 -142 -143 -144 -145 -146 -147 -148 -149 -150 -151 -152 -153 -154 -155 -156 -157 -158 -159 -160 -161 -162 -163 -164 -165 -166 -167 -168 -169 -170 -171 -172 -173 -174 -175 -176 -177 -178 -179 -180 -181 -182 -183 -184 -185 -186 -187 -188 -189 -190 -191 -192 -193 -194 -195 -196 -197 -198 -199 -200 -201 -202 -203 -204 -205 -206 -207 -208 -209 -210 -211 -212 -213 -214 -215 -216 -217 -218 -219 -220 -221 -222 -223 -224 -225 -226 -227 -228 -229 -230 -231 -232 -233 -234 -235 -236 -237 -238 -239 -240 -241 -242 -243  -25x -25x -  -  -  -  -  -  -  -  -  -  -  -25x -85x -  -  -  -  -  -  -  -20x -1x -  -  -19x -19x -19x -19x -19x -19x -19x -  -19x -  -2x -2x -  -  -  -  -  -  -19x -  -19x -  -3x -  -  -  -  -  -  -  -  -3x -3x -  -  -  -  -  -  -  -19x -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -18x -18x -  -18x -4x -  -4x -2x -  -  -2x -  -  -  -  -  -2x -  -  -  -  -  -  -14x -  -  -14x -2x -  -  -12x -  -  -  -  -  -12x -  -  -  -  -  -  -  -14x -  -  -  -  -  -  -  -  -  -  -  -5x -  -  -  -5x -  -  -5x -  -  -  -5x -1x -  -  -  -  -  -  -5x -  -  -3x -  -  -5x -4x -  -  -2x -  -  -  -  -2x -2x -  -  -  -2x -  -  -  -  -  -  -2x -  -  -  -  -2x -  -  -  -2x -  -  -  -  -  -  -  -  -  -2x -  -  -  -  -  -  -5x -  -  -  -  -  -  -  -  -  -1x -  -1x -1x -  -  -  -  -  -  -2x -  -  -  -  -  -  -2x -  -  - 
import { IConversationHistoryMessage } from "@services/LLM/ILLMProvider";
-import { autoInjectable, singleton } from "tsyringe";
-import { MessageContextExtractor } from "./MessageContextExtractor";
-import {
-  IMessageContextData,
-  MessageCommandOperation,
-  MessageFileOperation,
-} from "./MessageContextStore";
- 
-type MessageRole = "user" | "assistant" | "system";
-type MessageOperation = MessageFileOperation | MessageCommandOperation;
- 
-@singleton()
-@autoInjectable()
-export class MessageContextBuilder {
-  constructor(private extractor: MessageContextExtractor) {}
- 
-  public buildMessageContext(
-    role: MessageRole,
-    content: string,
-    currentPhase: string,
-    contextData: IMessageContextData,
-  ): IMessageContextData {
-    if (content.trim() === "") {
-      throw new Error("Content cannot be empty");
-    }
- 
-    const message: IConversationHistoryMessage = { role, content };
-    const phasePrompt = this.extractor.extractPhasePrompt(message.content);
-    const operations = this.extractor.extractOperations(message.content);
-    const updatedPhaseInstructions = new Map(contextData.phaseInstructions);
-    const updatedFileOperations = new Map(contextData.fileOperations);
-    const updatedCommandOperations = new Map(contextData.commandOperations);
-    const updatedConversationHistory = [...contextData.conversationHistory];
- 
-    if (phasePrompt) {
-      // Only store phase prompt for current phase
-      updatedPhaseInstructions.clear(); // Clear old phase prompts
-      updatedPhaseInstructions.set(currentPhase, {
-        content: phasePrompt,
-        timestamp: Date.now(),
-        phase: currentPhase,
-      });
-    }
- 
-    updatedConversationHistory.push(message);
- 
-    operations.forEach(
-      (operation: MessageFileOperation | MessageCommandOperation) => {
-        Iif (operation.type === "execute_command") {
-          const existingOperation = updatedCommandOperations.get(
-            operation.command,
-          );
-          updatedCommandOperations.set(operation.command, {
-            ...existingOperation,
-            ...operation,
-          });
-        } else {
-          const existingOperation = updatedFileOperations.get(operation.path);
-          updatedFileOperations.set(operation.path, {
-            ...existingOperation,
-            ...operation,
-          });
-        }
-      },
-    );
- 
-    return {
-      ...contextData,
-      phaseInstructions: updatedPhaseInstructions,
-      conversationHistory: updatedConversationHistory,
-      fileOperations: updatedFileOperations,
-      commandOperations: updatedCommandOperations,
-    };
-  }
- 
-  public updateOperationResult(
-    type: "read_file" | "write_file" | "execute_command",
-    identifier: string,
-    result: string,
-    contextData: IMessageContextData,
-    success?: boolean,
-    error?: string,
-  ): IMessageContextData {
-    const updatedFileOperations = new Map(contextData.fileOperations);
-    const updatedCommandOperations = new Map(contextData.commandOperations);
- 
-    if (type === "execute_command") {
-      const existingOperation = updatedCommandOperations.get(identifier);
-      // Only update the operation if it doesn't exist or wasn't a success
-      if (existingOperation && existingOperation.success === true) {
-        return contextData;
-      }
- 
-      const operation = existingOperation || {
-        type: "execute_command",
-        command: identifier,
-        timestamp: Date.now(),
-      };
- 
-      updatedCommandOperations.set(identifier, {
-        ...operation,
-        output: result,
-        success,
-        error,
-      });
-    } else {
-      const existingOperation = updatedFileOperations.get(identifier);
- 
-      // Only update the operation if it doesn't exist or wasn't a success
-      if (existingOperation && existingOperation.success === true) {
-        return contextData;
-      }
- 
-      const operation = existingOperation || {
-        type,
-        path: identifier,
-        timestamp: Date.now(),
-      };
- 
-      updatedFileOperations.set(identifier, {
-        ...operation,
-        content: result,
-        success,
-        error,
-      });
-    }
- 
-    return {
-      ...contextData,
-      fileOperations: updatedFileOperations,
-      commandOperations: updatedCommandOperations,
-      phaseInstructions: new Map(contextData.phaseInstructions),
-      conversationHistory: [...contextData.conversationHistory],
-    };
-  }
- 
-  public getMessageContext(
-    contextData: IMessageContextData,
-  ): IConversationHistoryMessage[] {
-    const baseContext = contextData.systemInstructions
-      ? [{ role: "system" as const, content: contextData.systemInstructions }]
-      : [];
- 
-    const operationsContext: IConversationHistoryMessage[] = [];
- 
-    // Add current phase instructions only
-    const currentPhaseInstructions = Array.from(
-      contextData.phaseInstructions.values(),
-    ).sort((a, b) => b.timestamp - a.timestamp)[0];
- 
-    if (currentPhaseInstructions) {
-      operationsContext.push({
-        role: "system",
-        content: `<phase_prompt>${currentPhaseInstructions.content}</phase_prompt>`,
-      });
-    }
- 
-    // Sort operations by timestamp
-    const allOperations: MessageOperation[] = [
-      ...Array.from(contextData.fileOperations.values()),
-      ...Array.from(contextData.commandOperations.values()),
-    ].sort((a, b) => a.timestamp - b.timestamp);
- 
-    // Add operations in chronological order
-    for (const operation of allOperations) {
-      if ("command" in operation) {
-        // Handle command operations
-        const status =
-          operation.success !== undefined
-            ? operation.success
-              ? "SUCCESS"
-              : "FAILED"
-            : "PENDING";
-        const errorInfo = operation.error ? ` (Error: ${operation.error})` : "";
-        const content = operation.output
-          ? `Command: ${operation.command} [${status}${errorInfo}]\nOutput:\n${operation.output}`
-          : `Command executed: ${operation.command} [${status}${errorInfo}]`;
- 
-        operationsContext.push({
-          role: "system",
-          content,
-        });
-      } else {
-        // Handle file operations
-        const status =
-          operation.success !== undefined
-            ? operation.success
-              ? "SUCCESS"
-              : "FAILED"
-            : "PENDING";
-        const errorInfo = operation.error ? ` (Error: ${operation.error})` : "";
- 
-        // Make successful write operations more prominent with file path
-        const content =
-          operation.type === "write_file" && operation.success
-            ? `FILE CREATED AND EXISTS: ${operation.path} [${status}${errorInfo}]${
-                operation.content ? `\nContent:\n${operation.content}` : ""
-              }`
-            : `${operation.type === "read_file" ? "Content of" : "Written to"} ${
-                operation.path
-              } [${status}${errorInfo}]${
-                operation.content ? `\nContent:\n${operation.content}` : ""
-              }`;
- 
-        operationsContext.push({
-          role: "system",
-          content,
-        });
-      }
-    }
- 
-    return [
-      ...baseContext,
-      ...operationsContext,
-      ...contextData.conversationHistory,
-    ];
-  }
- 
-  public getLatestPhaseInstructions(
-    contextData: IMessageContextData,
-  ): string | null {
-    const instructions = Array.from(
-      contextData.phaseInstructions.values(),
-    ).sort((a, b) => b.timestamp - a.timestamp)[0];
-    return instructions?.content ?? null;
-  }
- 
-  public getFileOperation(
-    path: string,
-    contextData: IMessageContextData,
-  ): MessageFileOperation | undefined {
-    return contextData.fileOperations.get(path);
-  }
- 
-  public getCommandOperation(
-    command: string,
-    contextData: IMessageContextData,
-  ): MessageCommandOperation | undefined {
-    return contextData.commandOperations.get(command);
-  }
-}
- 
- -
-
- - - - - - - - \ No newline at end of file diff --git a/coverage/lcov-report/services/LLM/context/MessageContextCleanup.ts.html b/coverage/lcov-report/services/LLM/context/MessageContextCleanup.ts.html deleted file mode 100644 index fb4d168f..00000000 --- a/coverage/lcov-report/services/LLM/context/MessageContextCleanup.ts.html +++ /dev/null @@ -1,298 +0,0 @@ - - - - - - Code coverage report for services/LLM/context/MessageContextCleanup.ts - - - - - - - - - -
-
-

All files / services/LLM/context MessageContextCleanup.ts

-
- -
- 97.29% - Statements - 36/37 -
- - -
- 100% - Branches - 5/5 -
- - -
- 100% - Functions - 4/4 -
- - -
- 97.14% - Lines - 34/35 -
- - -
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

- -
-
-

-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -18 -19 -20 -21 -22 -23 -24 -25 -26 -27 -28 -29 -30 -31 -32 -33 -34 -35 -36 -37 -38 -39 -40 -41 -42 -43 -44 -45 -46 -47 -48 -49 -50 -51 -52 -53 -54 -55 -56 -57 -58 -59 -60 -61 -62 -63 -64 -65 -66 -67 -68 -69 -70 -71 -729x -9x -9x -9x -9x -9x -  -  -9x -  -82x -82x -82x -82x -82x -  -  -  -8x -8x -  -8x -13x -  -8x -  -8x -8x -  -  -  -8x -6x -  -  -2x -  -2x -  -2x -5x -5x -5x -  -  -2x -  -  -  -  -2x -2x -  -  -  -2x -  -  -  -  -2x -  -  -  -  -2x -2x -  -  -  -  - 
import { DebugLogger } from "@/services/logging/DebugLogger";
-import { singleton } from "tsyringe";
-import { ModelInfo } from "../ModelInfo";
-import { MessageContextBuilder } from "./MessageContextBuilder";
-import { MessageContextHistory } from "./MessageContextHistory";
-import { MessageContextStore } from "./MessageContextStore";
- 
-@singleton()
-export class MessageContextCleaner {
-  constructor(
-    private debugLogger: DebugLogger,
-    private modelInfo: ModelInfo,
-    private messageContextStore: MessageContextStore,
-    private messageContextBuilder: MessageContextBuilder,
-    private messageContextHistory: MessageContextHistory,
-  ) {}
- 
-  async cleanupContext(): Promise<boolean> {
-    const contextData = this.messageContextStore.getContextData();
-    const maxTokens = await this.modelInfo.getCurrentModelContextLength();
- 
-    const estimateTokenCount = (text: string) =>
-      this.messageContextStore.estimateTokenCount(text);
- 
-    const messages = this.messageContextBuilder.getMessageContext(contextData);
- 
-    const currentTokens = messages.reduce(
-      (sum, message) => sum + estimateTokenCount(message.content),
-      0,
-    );
- 
-    if (currentTokens <= maxTokens) {
-      return false; // No cleanup needed
-    }
- 
-    const cleanedHistory = [...messages];
- 
-    let cleanedTokens = currentTokens;
- 
-    while (cleanedTokens > maxTokens && cleanedHistory.length > 0) {
-      const removedMessage = cleanedHistory.shift();
-      if (removedMessage) {
-        cleanedTokens -= estimateTokenCount(removedMessage.content);
-      }
-    }
-    const removedHistory = messages.slice(
-      0,
-      messages.length - cleanedHistory.length,
-    );
- 
-    if (removedHistory.length > 0) {
-      const updatedHistory = contextData.conversationHistory.slice(
-        removedHistory.length,
-      );
- 
-      this.debugLogger.log("Context", "Context cleanup performed", {
-        maxTokens,
-        removedMessages: removedHistory.length,
-      });
- 
-      await this.modelInfo.logCurrentModelUsage(
-        this.messageContextStore.getTotalTokenCount(),
-      );
- 
-      // Update history through the history service
-      this.messageContextHistory.mergeConversationHistory();
-      return true; // Cleanup was performed
-    }
-    return false; // No cleanup was performed
-  }
-}
- 
- -
-
- - - - - - - - \ No newline at end of file diff --git a/coverage/lcov-report/services/LLM/context/MessageContextExtractor.ts.html b/coverage/lcov-report/services/LLM/context/MessageContextExtractor.ts.html deleted file mode 100644 index 26f6e1be..00000000 --- a/coverage/lcov-report/services/LLM/context/MessageContextExtractor.ts.html +++ /dev/null @@ -1,307 +0,0 @@ - - - - - - Code coverage report for services/LLM/context/MessageContextExtractor.ts - - - - - - - - - -
-
-

All files / services/LLM/context MessageContextExtractor.ts

-
- -
- 100% - Statements - 22/22 -
- - -
- 100% - Branches - 5/5 -
- - -
- 100% - Functions - 6/6 -
- - -
- 100% - Lines - 20/20 -
- - -
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

- -
-
-

-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -18 -19 -20 -21 -22 -23 -24 -25 -26 -27 -28 -29 -30 -31 -32 -33 -34 -35 -36 -37 -38 -39 -40 -41 -42 -43 -44 -45 -46 -47 -48 -49 -50 -51 -52 -53 -54 -55 -56 -57 -58 -59 -60 -61 -62 -63 -64 -65 -66 -67 -68 -69 -70 -71 -72 -73 -74 -7526x -  -  -  -  -  -  -  -  -26x -  -4x -  -  -  -  -  -  -  -  -  -16x -16x -  -  -16x -  -  -16x -1x -1x -  -  -  -  -  -  -  -  -16x -  -  -16x -1x -1x -  -  -  -  -  -  -  -  -16x -  -  -16x -1x -1x -  -  -  -  -  -  -  -16x -  -  -  -22x -22x -  -  - 
import { singleton } from "tsyringe";
-import {
-  MessageCommandOperation,
-  MessageFileOperation,
-} from "./MessageContextStore";
- 
-type MessageOperation = MessageFileOperation | MessageCommandOperation;
- 
-@singleton()
-export class MessageContextExtractor {
-  public extractNonOperationContent(content: string): string {
-    return content
-      .replace(/<read_file>[\s\S]*?<\/read_file>/g, "")
-      .replace(/<write_file>[\s\S]*?<\/write_file>/g, "")
-      .replace(/<execute_command>[\s\S]*?<\/execute_command>/g, "")
-      .replace(/<phase_prompt>[\s\S]*?<\/phase_prompt>/g, "")
-      .replace(/\s+/g, " ")
-      .trim();
-  }
- 
-  public extractOperations(content: string): MessageOperation[] {
-    const operations: MessageOperation[] = [];
-    const now = Date.now();
- 
-    // Extract read_file operations
-    const readMatches = Array.from(
-      content.matchAll(/<read_file>[\s\S]*?<path>(.*?)<\/path>/g),
-    );
-    readMatches.forEach((match) => {
-      if (match[1]) {
-        operations.push({
-          type: "read_file",
-          path: match[1],
-          timestamp: now,
-        });
-      }
-    });
- 
-    // Extract write_file operations
-    const writeMatches = Array.from(
-      content.matchAll(/<write_file>[\s\S]*?<path>(.*?)<\/path>/g),
-    );
-    writeMatches.forEach((match) => {
-      if (match[1]) {
-        operations.push({
-          type: "write_file",
-          path: match[1],
-          timestamp: now,
-        });
-      }
-    });
- 
-    // Extract execute_command operations
-    const commandMatches = Array.from(
-      content.matchAll(/<execute_command>[\s\S]*?<command>(.*?)<\/command>/g),
-    );
-    commandMatches.forEach((match) => {
-      if (match[1]) {
-        operations.push({
-          type: "execute_command",
-          command: match[1],
-          timestamp: now,
-        });
-      }
-    });
- 
-    return operations;
-  }
- 
-  public extractPhasePrompt(content: string): string | null {
-    const match = content.match(/<phase_prompt>([\s\S]*?)<\/phase_prompt>/);
-    return match ? match[1].trim() : null;
-  }
-}
- 
- -
-
- - - - - - - - \ No newline at end of file diff --git a/coverage/lcov-report/services/LLM/context/MessageContextHistory.ts.html b/coverage/lcov-report/services/LLM/context/MessageContextHistory.ts.html deleted file mode 100644 index 595313d5..00000000 --- a/coverage/lcov-report/services/LLM/context/MessageContextHistory.ts.html +++ /dev/null @@ -1,535 +0,0 @@ - - - - - - Code coverage report for services/LLM/context/MessageContextHistory.ts - - - - - - - - - -
-
-

All files / services/LLM/context MessageContextHistory.ts

-
- -
- 98.14% - Statements - 53/54 -
- - -
- 100% - Branches - 19/19 -
- - -
- 92.3% - Functions - 12/13 -
- - -
- 97.91% - Lines - 47/48 -
- - -
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

- -
-
-

-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -18 -19 -20 -21 -22 -23 -24 -25 -26 -27 -28 -29 -30 -31 -32 -33 -34 -35 -36 -37 -38 -39 -40 -41 -42 -43 -44 -45 -46 -47 -48 -49 -50 -51 -52 -53 -54 -55 -56 -57 -58 -59 -60 -61 -62 -63 -64 -65 -66 -67 -68 -69 -70 -71 -72 -73 -74 -75 -76 -77 -78 -79 -80 -81 -82 -83 -84 -85 -86 -87 -88 -89 -90 -91 -92 -93 -94 -95 -96 -97 -98 -99 -100 -101 -102 -103 -104 -105 -106 -107 -108 -109 -110 -111 -112 -113 -114 -115 -116 -117 -118 -119 -120 -121 -122 -123 -124 -125 -126 -127 -128 -129 -130 -131 -132 -133 -134 -135 -136 -137 -138 -139 -140 -141 -142 -143 -144 -145 -146 -147 -148 -149 -150 -151  -23x -23x -23x -23x -  -  -  -23x -  -  -  -23x -  -83x -83x -83x -83x -  -  -  -  -2x -2x -  -1x -2x -  -1x -1x -  -  -  -  -  -  -16x -1x -  -  -15x -1x -  -  -14x -  -  -  -  -  -14x -  -14x -13x -  -  -  -  -  -14x -  -  -  -16x -1x -  -  -  -  -  -  -  -3x -1x -  -  -  -  -  -  -  -  -3x -  -3x -1x -1x -  -  -  -  -  -  -  -2x -1x -1x -  -  -  -  -  -  -  -1x -1x -1x -  -  -  -  -  -  -  -  -  -3x -  -  -  -1x -  -  -  -  -  -1x -1x -  -  -  -1x -  -  -  -  -  -1x -  -  -  -3x -1x -  -  -  -  -  -  -  - 
import { IConversationHistoryMessage } from "@services/LLM/ILLMProvider";
-import { autoInjectable, singleton } from "tsyringe";
-import { PhaseManager } from "../PhaseManager";
-import { MessageContextBuilder } from "./MessageContextBuilder";
-import {
-  MessageContextLogger,
-  MessageIActionResult,
-} from "./MessageContextLogger";
-import { MessageContextStore } from "./MessageContextStore";
- 
-@singleton()
-@autoInjectable()
-export class MessageContextHistory {
-  constructor(
-    private messageContextStore: MessageContextStore,
-    private messageContextLogger: MessageContextLogger,
-    private phaseManager: PhaseManager,
-    private messageContextBuilder: MessageContextBuilder,
-  ) {}
- 
-  public mergeConversationHistory(): void {
-    const history =
-      this.messageContextStore.getContextData().conversationHistory;
-    if (history.length === 0) return;
- 
-    const mergedContent = history
-      .map((msg) => `${msg.role}: ${msg.content}`)
-      .join("\n\n");
-    this.addMessage("assistant", mergedContent, false);
-    this.messageContextStore.setContextData({
-      conversationHistory: [],
-      phaseInstructions: new Map(),
-    });
-  }
- 
-  public addMessage(role: string, content: string, log = true): boolean {
-    if (!["user", "assistant", "system"].includes(role)) {
-      throw new Error(`Invalid role: ${role}`);
-    }
- 
-    if (content.trim() === "") {
-      throw new Error("Content cannot be empty");
-    }
- 
-    const updatedData = this.messageContextBuilder.buildMessageContext(
-      role as "user" | "assistant" | "system",
-      content,
-      this.phaseManager.getCurrentPhase(),
-      this.messageContextStore.getContextData(),
-    );
-    this.messageContextStore.setContextData(updatedData);
- 
-    if (log) {
-      this.logMessage({
-        role: role as "user" | "assistant" | "system",
-        content,
-      });
-    }
- 
-    return true;
-  }
- 
-  private logMessage(message: IConversationHistoryMessage): void {
-    if (process.env.NODE_ENV === "test" || !this.isLoggingEnabled()) return;
-    this.messageContextLogger.logMessage(message);
-  }
- 
-  private isLoggingEnabled(): boolean {
-    return this.messageContextLogger.getConversationLogPath() !== null;
-  }
- 
-  public logActionResult(action: string, result: MessageIActionResult): void {
-    if (process.env.NODE_ENV === "test" || !this.isLoggingEnabled()) return;
-    this.messageContextLogger.logActionResult(action, result);
-  }
- 
-  public updateMessageContextWithOperationResult(
-    action: string,
-    result: string,
-    success?: boolean,
-    error?: string,
-  ): void {
-    let updatedData = this.messageContextStore.getContextData();
- 
-    if (action.startsWith("read_file:")) {
-      const path = action.replace("read_file:", "").trim();
-      updatedData = this.messageContextBuilder.updateOperationResult(
-        "read_file",
-        path,
-        result,
-        updatedData,
-        success,
-        error,
-      );
-    } else if (action.startsWith("write_file:")) {
-      const path = action.replace("write_file:", "").trim();
-      updatedData = this.messageContextBuilder.updateOperationResult(
-        "write_file",
-        path,
-        result,
-        updatedData,
-        success,
-        error,
-      );
-    } else if (action.startsWith("execute_command:")) {
-      const command = action.replace("execute_command:", "").trim();
-      updatedData = this.messageContextBuilder.updateOperationResult(
-        "execute_command",
-        command,
-        result,
-        updatedData,
-        success,
-        error,
-      );
-    }
- 
-    this.messageContextStore.setContextData(updatedData);
-  }
- 
-  public getMessages(): IConversationHistoryMessage[] {
-    return this.messageContextBuilder.getMessageContext(
-      this.messageContextStore.getContextData(),
-    );
-  }
- 
-  public clear(): void {
-    this.messageContextStore.clear();
-    this.messageContextLogger.cleanupLogFiles();
-  }
- 
-  public setSystemInstructions(instructions: string): void {
-    this.messageContextStore.setContextData({
-      systemInstructions: instructions,
-    });
-  }
- 
-  public getSystemInstructions(): string | null {
-    return this.messageContextStore.getContextData().systemInstructions;
-  }
- 
-  public updateLogFile(): void {
-    if (process.env.NODE_ENV === "test" || !this.isLoggingEnabled()) return;
-    this.messageContextLogger.updateConversationHistory(
-      this.messageContextBuilder.getMessageContext(
-        this.messageContextStore.getContextData(),
-      ),
-      this.messageContextStore.getContextData().systemInstructions,
-    );
-  }
-}
- 
- -
-
- - - - - - - - \ No newline at end of file diff --git a/coverage/lcov-report/services/LLM/context/MessageContextLimiter.ts.html b/coverage/lcov-report/services/LLM/context/MessageContextLimiter.ts.html deleted file mode 100644 index 5c903ded..00000000 --- a/coverage/lcov-report/services/LLM/context/MessageContextLimiter.ts.html +++ /dev/null @@ -1,199 +0,0 @@ - - - - - - Code coverage report for services/LLM/context/MessageContextLimiter.ts - - - - - - - - - -
-
-

All files / services/LLM/context MessageContextLimiter.ts

-
- -
- 52.63% - Statements - 10/19 -
- - -
- 0% - Branches - 0/4 -
- - -
- 25% - Functions - 1/4 -
- - -
- 50% - Lines - 8/16 -
- - -
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

- -
-
-

-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -18 -19 -20 -21 -22 -23 -24 -25 -26 -27 -28 -29 -30 -31 -32 -33 -34 -35 -36 -37 -38 -396x -6x -6x -  -6x -  -  -  -6x -  -54x -54x -54x -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  - 
import { autoInjectable, singleton } from "tsyringe";
-import { MessageContextCleaner } from "./MessageContextCleanup";
-import { MessageContextStore } from "./MessageContextStore";
- 
-import { MessageContextLogger } from "./MessageContextLogger";
- 
-@singleton()
-@autoInjectable()
-export class MessageContextLimiter {
-  constructor(
-    private messageContextCleanup: MessageContextCleaner,
-    private messageContextStore: MessageContextStore,
-    private messageContextLogger: MessageContextLogger,
-  ) {}
- 
-  public async cleanupContext(): Promise<boolean> {
-    const wasCleaned = await this.messageContextCleanup.cleanupContext();
- 
-    Iif (wasCleaned) {
-      this.updateLogFile();
-      return true;
-    }
-    return false;
-  }
- 
-  private updateLogFile(): void {
-    // Skip logging in test environment or if disabled
-    Iif (process.env.NODE_ENV === "test" || !this.isLoggingEnabled()) return;
-    this.messageContextLogger.updateConversationHistory(
-      this.messageContextStore.getContextData().conversationHistory,
-      this.messageContextStore.getContextData().systemInstructions,
-    );
-  }
- 
-  private isLoggingEnabled(): boolean {
-    return this.messageContextLogger.getConversationLogPath() !== null;
-  }
-}
- 
- -
-
- - - - - - - - \ No newline at end of file diff --git a/coverage/lcov-report/services/LLM/context/MessageContextLogger.ts.html b/coverage/lcov-report/services/LLM/context/MessageContextLogger.ts.html deleted file mode 100644 index 64c7ba35..00000000 --- a/coverage/lcov-report/services/LLM/context/MessageContextLogger.ts.html +++ /dev/null @@ -1,742 +0,0 @@ - - - - - - Code coverage report for services/LLM/context/MessageContextLogger.ts - - - - - - - - - -
-
-

All files / services/LLM/context MessageContextLogger.ts

-
- -
- 100% - Statements - 76/76 -
- - -
- 100% - Branches - 13/13 -
- - -
- 100% - Functions - 13/13 -
- - -
- 100% - Lines - 74/74 -
- - -
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

- -
-
-

-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -18 -19 -20 -21 -22 -23 -24 -25 -26 -27 -28 -29 -30 -31 -32 -33 -34 -35 -36 -37 -38 -39 -40 -41 -42 -43 -44 -45 -46 -47 -48 -49 -50 -51 -52 -53 -54 -55 -56 -57 -58 -59 -60 -61 -62 -63 -64 -65 -66 -67 -68 -69 -70 -71 -72 -73 -74 -75 -76 -77 -78 -79 -80 -81 -82 -83 -84 -85 -86 -87 -88 -89 -90 -91 -92 -93 -94 -95 -96 -97 -98 -99 -100 -101 -102 -103 -104 -105 -106 -107 -108 -109 -110 -111 -112 -113 -114 -115 -116 -117 -118 -119 -120 -121 -122 -123 -124 -125 -126 -127 -128 -129 -130 -131 -132 -133 -134 -135 -136 -137 -138 -139 -140 -141 -142 -143 -144 -145 -146 -147 -148 -149 -150 -151 -152 -153 -154 -155 -156 -157 -158 -159 -160 -161 -162 -163 -164 -165 -166 -167 -168 -169 -170 -171 -172 -173 -174 -175 -176 -177 -178 -179 -180 -181 -182 -183 -184 -185 -186 -187 -188 -189 -190 -191 -192 -193 -194 -195 -196 -197 -198 -199 -200 -201 -202 -203 -204 -205 -206 -207 -208 -209 -210 -211 -212 -213 -214 -215 -216 -217 -218 -219 -22024x -  -24x -24x -24x -24x -24x -24x -  -  -  -  -  -  -  -  -24x -  -  -  -  -  -84x -84x -  -84x -  -84x -  -84x -84x -  -  -  -  -84x -  -  -  -  -84x -84x -  -  -  -84x -84x -  -  -  -106x -106x -2x -  -  -  -  -103x -103x -2x -1x -  -  -  -  -  -  -1x -  -  -  -  -  -  -  -  -3x -3x -3x -2x -2x -  -  -  -1x -  -  -  -  -  -  -  -4x -4x -4x -4x -4x -4x -3x -  -1x -  -  -  -  -  -  -  -11x -11x -11x -11x -11x -11x -  -  -  -  -11x -11x -  -  -10x -  -10x -  -  -  -  -  -  -  -10x -  -1x -  -  -  -  -  -  -  -  -  -  -  -4x -4x -4x -  -4x -3x -3x -  -  -  -  -  -  -3x -4x -4x -  -  -  -  -  -  -3x -  -  -  -  -  -3x -  -  -  -  -  -3x -  -  -  -  -  -1x -  -  -  -  -  -  -  -1x -  -  -  -2x -  -  -  -4x -  -  -  -2x -2x -1x -  -1x -  -  -  -  -1x -  -  -  - 
import { ConfigService } from "@services/ConfigService";
-import { IConversationHistoryMessage } from "@services/LLM/ILLMProvider";
-import { DebugLogger } from "@services/logging/DebugLogger";
-import * as fs from "fs";
-import * as path from "path";
-import { inject, singleton } from "tsyringe";
-import { MessageContextBuilder } from "./MessageContextBuilder";
-import { MessageContextStore } from "./MessageContextStore";
- 
-export interface MessageIActionResult {
-  success: boolean;
-  error?: Error;
-  result?: string;
-}
- 
-@singleton()
-export class MessageContextLogger {
-  private readonly logDirectory: string;
-  private readonly conversationLogPath: string;
-  private readonly conversationHistoryPath: string;
- 
-  constructor(
-    private debugLogger: DebugLogger,
-    private configService: ConfigService,
-    @inject(MessageContextBuilder)
-    private messageContextBuilder: MessageContextBuilder,
-    @inject(MessageContextStore)
-    private messageContextStore: MessageContextStore,
-  ) {
-    this.logDirectory = this.getLogDirectory();
-    this.conversationLogPath = path.join(
-      process.cwd(),
-      this.logDirectory,
-      "conversation.log",
-    );
-    this.conversationHistoryPath = path.join(
-      process.cwd(),
-      this.logDirectory,
-      "conversationHistory.json",
-    );
-    this.ensureLogDirectoryExists();
-    this.ensureHistoryFileExists();
-  }
- 
-  private getLogDirectory(): string {
-    const config = this.configService.getConfig();
-    return config.logDirectory || "logs";
-  }
- 
-  private ensureLogDirectoryExists(): void {
-    const logDir = path.dirname(this.conversationLogPath);
-    if (!fs.existsSync(logDir)) {
-      fs.mkdirSync(logDir, { recursive: true });
-    }
-  }
- 
-  private ensureHistoryFileExists(): void {
-    try {
-      if (!fs.existsSync(this.conversationHistoryPath)) {
-        fs.writeFileSync(this.conversationHistoryPath, "[]", "utf8");
-        this.debugLogger.log(
-          "MessageLogger",
-          "Created conversation history file",
-          { path: this.conversationHistoryPath },
-        );
-      }
-    } catch (error) {
-      this.debugLogger.log(
-        "MessageLogger",
-        "Error creating conversation history file",
-        { error, path: this.conversationHistoryPath },
-      );
-    }
-  }
- 
-  cleanupLogFiles(): void {
-    try {
-      this.ensureLogDirectoryExists();
-      fs.writeFileSync(this.conversationLogPath, "", "utf8");
-      fs.writeFileSync(this.conversationHistoryPath, "[]", "utf8");
-      this.debugLogger.log("MessageLogger", "Log files cleaned up", {
-        logDirectory: this.logDirectory,
-      });
-    } catch (error) {
-      this.debugLogger.log("MessageLogger", "Error cleaning up log files", {
-        error,
-        logDirectory: this.logDirectory,
-      });
-    }
-  }
- 
-  logMessage(message: IConversationHistoryMessage): void {
-    try {
-      this.ensureLogDirectoryExists();
-      this.ensureHistoryFileExists();
-      const timestamp = new Date().toISOString();
-      const logEntry = `[${timestamp}] ${message.role}: ${message.content}\\n`;
-      fs.appendFileSync(this.conversationLogPath, logEntry, "utf8");
-      this.debugLogger.log("MessageLogger", "Message logged", { message });
-    } catch (error) {
-      this.debugLogger.log("MessageLogger", "Error writing to log file", {
-        error,
-        logDirectory: this.logDirectory,
-      });
-    }
-  }
- 
-  logActionResult(action: string, result: MessageIActionResult): void {
-    try {
-      this.ensureLogDirectoryExists();
-      this.ensureHistoryFileExists();
-      const timestamp = new Date().toISOString();
-      const status = result.success ? "SUCCESS" : "FAILED";
-      const details = result.error
-        ? ` - Error: ${result.error.message}`
-        : result.result
-          ? ` - ${result.result}`
-          : "";
-      const logEntry = `[${timestamp}] ACTION ${action}: ${status}${details}\\n`;
-      fs.appendFileSync(this.conversationLogPath, logEntry, "utf8");
- 
-      // Update operation result in context
-      const contextData = this.messageContextStore.getContextData();
-      const updatedContextData =
-        this.messageContextBuilder.updateOperationResult(
-          action as any,
-          action,
-          result.result || "",
-          contextData,
-          result.success,
-          result.error?.message,
-        );
-      this.messageContextStore.setContextData(updatedContextData); // <-- Corrected line
-    } catch (error) {
-      this.debugLogger.log(
-        "MessageLogger",
-        "Error writing action result to log file",
-        { error, logDirectory: this.logDirectory },
-      );
-    }
-  }
- 
-  updateConversationHistory(
-    messages: IConversationHistoryMessage[],
-    systemInstructions: string | null,
-  ): void {
-    try {
-      this.ensureLogDirectoryExists();
-      this.ensureHistoryFileExists();
- 
-      if (systemInstructions) {
-        const timestamp = new Date().toISOString();
-        fs.appendFileSync(
-          this.conversationLogPath,
-          `[${timestamp}] system: ${systemInstructions}\\n`,
-          "utf8",
-        );
-      }
- 
-      messages.forEach((message) => {
-        const timestamp = new Date().toISOString();
-        fs.appendFileSync(
-          this.conversationLogPath,
-          `[${timestamp}] ${message.role}: ${message.content}\\n`,
-          "utf8",
-        );
-      });
- 
-      const historyData = {
-        timestamp: new Date().toISOString(),
-        systemInstructions,
-        messages,
-      };
- 
-      fs.writeFileSync(
-        this.conversationHistoryPath,
-        JSON.stringify(historyData, null, 2),
-        "utf8",
-      );
- 
-      this.debugLogger.log("MessageLogger", "Conversation history updated", {
-        messagesCount: messages.length,
-        hasSystemInstructions: !!systemInstructions,
-        logDirectory: this.logDirectory,
-      });
-    } catch (error) {
-      this.debugLogger.log("MessageLogger", "Error updating log files", {
-        error,
-        logDirectory: this.logDirectory,
-      });
-    }
-  }
- 
-  getLogDirectoryPath(): string {
-    return this.logDirectory;
-  }
- 
-  getConversationLogPath(): string {
-    return this.conversationLogPath;
-  }
- 
-  getConversationHistoryPath(): string {
-    return this.conversationHistoryPath;
-  }
- 
-  getConversationHistory(): IConversationHistoryMessage[] {
-    try {
-      const historyData = fs.readFileSync(this.conversationHistoryPath, "utf8");
-      return JSON.parse(historyData).messages;
-    } catch (error) {
-      this.debugLogger.log(
-        "MessageLogger",
-        "Error reading conversation history",
-        { error, logDirectory: this.logDirectory },
-      );
-      return [];
-    }
-  }
-}
- 
- -
-
- - - - - - - - \ No newline at end of file diff --git a/coverage/lcov-report/services/LLM/context/MessageContextPhase.ts.html b/coverage/lcov-report/services/LLM/context/MessageContextPhase.ts.html deleted file mode 100644 index 21a5f886..00000000 --- a/coverage/lcov-report/services/LLM/context/MessageContextPhase.ts.html +++ /dev/null @@ -1,202 +0,0 @@ - - - - - - Code coverage report for services/LLM/context/MessageContextPhase.ts - - - - - - - - - -
-
-

All files / services/LLM/context MessageContextPhase.ts

-
- -
- 77.77% - Statements - 14/18 -
- - -
- 100% - Branches - 0/0 -
- - -
- 33.33% - Functions - 1/3 -
- - -
- 75% - Lines - 12/16 -
- - -
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

- -
-
-

-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -18 -19 -20 -21 -22 -23 -24 -25 -26 -27 -28 -29 -30 -31 -32 -33 -34 -35 -36 -37 -38 -39 -40  -19x -19x -19x -  -19x -19x -19x -  -  -  -19x -  -2x -2x -2x -2x -2x -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  - 
// services/messageContext/MessageContextPhase.ts
-import { autoInjectable, singleton } from "tsyringe";
-import { PhaseManager } from "../PhaseManager";
-import { MessageContextStore } from "./MessageContextStore";
- 
-import { MessageContextBuilder } from "./MessageContextBuilder";
-import { MessageContextHistory } from "./MessageContextHistory";
-import { MessageContextLogger } from "./MessageContextLogger";
- 
-@singleton()
-@autoInjectable()
-export class MessageContextPhase {
-  constructor(
-    private messageContextStore: MessageContextStore,
-    private messageContextLogger: MessageContextLogger,
-    private messageContextBuilder: MessageContextBuilder,
-    private phaseManager: PhaseManager,
-    private messageContextHistory: MessageContextHistory,
-  ) {}
- 
-  public cleanupPhaseContent(): void {
-    const currentData = this.messageContextStore.getContextData();
- 
-    // Clear all previous phase instructions when transitioning
-    this.messageContextStore.setContextData({
-      phaseInstructions: new Map(),
-      fileOperations: new Map(currentData.fileOperations),
-      commandOperations: new Map(currentData.commandOperations),
-      conversationHistory: [...currentData.conversationHistory],
-      systemInstructions: currentData.systemInstructions,
-    });
- 
-    this.messageContextHistory.updateLogFile();
-  }
- 
-  private isLoggingEnabled(): boolean {
-    return this.messageContextLogger.getConversationLogPath() !== null;
-  }
-}
- 
- -
-
- - - - - - - - \ No newline at end of file diff --git a/coverage/lcov-report/services/LLM/context/MessageContextStore.ts.html b/coverage/lcov-report/services/LLM/context/MessageContextStore.ts.html deleted file mode 100644 index 7f7b0c17..00000000 --- a/coverage/lcov-report/services/LLM/context/MessageContextStore.ts.html +++ /dev/null @@ -1,382 +0,0 @@ - - - - - - Code coverage report for services/LLM/context/MessageContextStore.ts - - - - - - - - - -
-
-

All files / services/LLM/context MessageContextStore.ts

-
- -
- 100% - Statements - 15/15 -
- - -
- 82.35% - Branches - 14/17 -
- - -
- 100% - Functions - 7/7 -
- - -
- 100% - Lines - 13/13 -
- - -
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

- -
-
-

-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -18 -19 -20 -21 -22 -23 -24 -25 -26 -27 -28 -29 -30 -31 -32 -33 -34 -35 -36 -37 -38 -39 -40 -41 -42 -43 -44 -45 -46 -47 -48 -49 -50 -51 -52 -53 -54 -55 -56 -57 -58 -59 -60 -61 -62 -63 -64 -65 -66 -67 -68 -69 -70 -71 -72 -73 -74 -75 -76 -77 -78 -79 -80 -81 -82 -83 -84 -85 -86 -87 -88 -89 -90 -91 -92 -93 -94 -95 -96 -97 -98 -99 -100  -26x -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -26x -86x -  -  -  -  -  -  -  -  -51x -  -  -  -57x -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -2x -  -  -  -  -  -  -  -  -  -1x -  -  -  -2x -2x -1x -  -2x -4x -  -2x -  -  - 
import { IConversationHistoryMessage } from "@services/LLM/ILLMProvider";
-import { singleton } from "tsyringe";
- 
-export interface BaseOperation {
-  timestamp: number;
-  success?: boolean;
-  error?: string;
-}
- 
-export interface MessageFileOperation extends BaseOperation {
-  type: "read_file" | "write_file";
-  path: string;
-  content?: string;
-}
- 
-export interface MessageCommandOperation extends BaseOperation {
-  type: "execute_command";
-  command: string;
-  output?: string;
-}
- 
-export interface MessagePhaseInstruction {
-  phase: string;
-  content: string;
-  timestamp: number;
-}
- 
-export interface IMessageContextData {
-  phaseInstructions: Map<string, MessagePhaseInstruction>;
-  fileOperations: Map<string, MessageFileOperation>;
-  commandOperations: Map<string, MessageCommandOperation>;
-  conversationHistory: IConversationHistoryMessage[];
-  systemInstructions: string | null;
-}
- 
-@singleton()
-export class MessageContextStore {
-  private contextData: IMessageContextData = {
-    phaseInstructions: new Map(),
-    fileOperations: new Map(),
-    commandOperations: new Map(),
-    conversationHistory: [],
-    systemInstructions: null,
-  };
- 
-  public getContextData(): IMessageContextData {
-    return this.contextData;
-  }
- 
-  public setContextData(data: Partial<IMessageContextData>): void {
-    this.contextData = {
-      phaseInstructions:
-        data.phaseInstructions !== undefined
-          ? new Map([...(data.phaseInstructions || [])])
-          : this.contextData.phaseInstructions,
-      fileOperations:
-        data.fileOperations !== undefined
-          ? new Map([...(data.fileOperations || [])])
-          : this.contextData.fileOperations,
-      commandOperations:
-        data.commandOperations !== undefined
-          ? new Map([...(data.commandOperations || [])])
-          : this.contextData.commandOperations,
-      conversationHistory:
-        data.conversationHistory !== undefined
-          ? data.conversationHistory
-          : this.contextData.conversationHistory,
-      systemInstructions:
-        data.systemInstructions !== undefined
-          ? data.systemInstructions
-          : this.contextData.systemInstructions,
-    };
-  }
- 
-  public clear(): void {
-    this.contextData = {
-      phaseInstructions: new Map(),
-      fileOperations: new Map(),
-      commandOperations: new Map(),
-      conversationHistory: [],
-      systemInstructions: null,
-    };
-  }
- 
-  public estimateTokenCount(text: string): number {
-    return Math.ceil(text.length / 4);
-  }
- 
-  public getTotalTokenCount(): number {
-    let total = 0;
-    if (this.contextData.systemInstructions) {
-      total += this.estimateTokenCount(this.contextData.systemInstructions);
-    }
-    this.contextData.conversationHistory.forEach((message) => {
-      total += this.estimateTokenCount(message.content);
-    });
-    return total;
-  }
-}
- 
- -
-
- - - - - - - - \ No newline at end of file diff --git a/coverage/lcov-report/services/LLM/context/MessageContextTokenCount.ts.html b/coverage/lcov-report/services/LLM/context/MessageContextTokenCount.ts.html deleted file mode 100644 index ff07c9af..00000000 --- a/coverage/lcov-report/services/LLM/context/MessageContextTokenCount.ts.html +++ /dev/null @@ -1,166 +0,0 @@ - - - - - - Code coverage report for services/LLM/context/MessageContextTokenCount.ts - - - - - - - - - -
-
-

All files / services/LLM/context MessageContextTokenCount.ts

-
- -
- 80% - Statements - 12/15 -
- - -
- 0% - Branches - 0/1 -
- - -
- 50% - Functions - 2/4 -
- - -
- 76.92% - Lines - 10/13 -
- - -
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

- -
-
-

-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -18 -19 -20 -21 -22 -23 -24 -25 -26 -27 -287x -7x -  -  -7x -54x -  -  -  -  -  -  -3x -3x -3x -3x -  -3x -  -  -  -3x -  -  -  -  -  - 
import { autoInjectable } from "tsyringe";
-import { MessageContextStore } from "./MessageContextStore";
- 
-@autoInjectable()
-export class MesssageContextTokenCount {
-  constructor(private messageContextStore: MessageContextStore) {}
- 
-  estimateTokenCount(text: string): number {
-    return Math.ceil(text.length / 4);
-  }
- 
-  getTotalTokenCount(): number {
-    const contextData = this.messageContextStore.getContextData();
-    const history = contextData.conversationHistory;
-    const systemInstructions = contextData.systemInstructions;
-    let total = 0;
- 
-    Iif (systemInstructions) {
-      total += this.estimateTokenCount(systemInstructions);
-    }
- 
-    return history.reduce(
-      (sum, message) => sum + this.estimateTokenCount(message.content),
-      total,
-    );
-  }
-}
- 
- -
-
- - - - - - - - \ No newline at end of file diff --git a/coverage/lcov-report/services/LLM/context/MessageConversationLogger.ts.html b/coverage/lcov-report/services/LLM/context/MessageConversationLogger.ts.html deleted file mode 100644 index cd121dd8..00000000 --- a/coverage/lcov-report/services/LLM/context/MessageConversationLogger.ts.html +++ /dev/null @@ -1,697 +0,0 @@ - - - - - - Code coverage report for services/LLM/context/MessageConversationLogger.ts - - - - - - - - - -
-
-

All files / services/LLM/context MessageConversationLogger.ts

-
- -
- 68.11% - Statements - 47/69 -
- - -
- 9.09% - Branches - 1/11 -
- - -
- 76.92% - Functions - 10/13 -
- - -
- 67.16% - Lines - 45/67 -
- - -
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

- -
-
-

-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -18 -19 -20 -21 -22 -23 -24 -25 -26 -27 -28 -29 -30 -31 -32 -33 -34 -35 -36 -37 -38 -39 -40 -41 -42 -43 -44 -45 -46 -47 -48 -49 -50 -51 -52 -53 -54 -55 -56 -57 -58 -59 -60 -61 -62 -63 -64 -65 -66 -67 -68 -69 -70 -71 -72 -73 -74 -75 -76 -77 -78 -79 -80 -81 -82 -83 -84 -85 -86 -87 -88 -89 -90 -91 -92 -93 -94 -95 -96 -97 -98 -99 -100 -101 -102 -103 -104 -105 -106 -107 -108 -109 -110 -111 -112 -113 -114 -115 -116 -117 -118 -119 -120 -121 -122 -123 -124 -125 -126 -127 -128 -129 -130 -131 -132 -133 -134 -135 -136 -137 -138 -139 -140 -141 -142 -143 -144 -145 -146 -147 -148 -149 -150 -151 -152 -153 -154 -155 -156 -157 -158 -159 -160 -161 -162 -163 -164 -165 -166 -167 -168 -169 -170 -171 -172 -173 -174 -175 -176 -177 -178 -179 -180 -181 -182 -183 -184 -185 -186 -187 -188 -189 -190 -191 -192 -193 -194 -195 -196 -197 -198 -199 -200 -201 -202 -203 -204 -2051x -  -1x -1x -1x -1x -  -  -  -  -  -  -  -  -1x -  -  -  -  -  -5x -5x -  -5x -5x -  -  -  -  -5x -  -  -  -  -5x -5x -  -  -  -5x -5x -  -  -  -9x -9x -  -  -  -  -  -8x -8x -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -1x -1x -1x -1x -1x -  -  -  -  -  -  -  -  -  -  -  -  -2x -2x -2x -2x -2x -2x -2x -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -1x -1x -1x -  -1x -  -  -  -  -  -  -  -  -1x -2x -2x -  -  -  -  -  -  -1x -  -  -  -  -  -1x -  -  -  -  -  -1x -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -1x -  -  -  -1x -1x -1x -  -  -  -  -  -  -  -  -  - 
import { ConfigService } from "@services/ConfigService";
-import { IConversationHistoryMessage } from "@services/LLM/ILLMProvider";
-import { DebugLogger } from "@services/logging/DebugLogger";
-import * as fs from "fs";
-import * as path from "path";
-import { singleton } from "tsyringe";
- 
-export interface IActionResult {
-  success: boolean;
-  error?: Error;
-  result?: string;
-}
- 
-@singleton()
-export class MessageConversationLogger {
-  private readonly logDirectory: string;
-  private readonly conversationLogPath: string;
-  private readonly conversationHistoryPath: string;
- 
-  constructor(
-    private debugLogger: DebugLogger,
-    private configService: ConfigService,
-  ) {
-    this.logDirectory = this.getLogDirectory();
-    this.conversationLogPath = path.join(
-      process.cwd(),
-      this.logDirectory,
-      "conversation.log",
-    );
-    this.conversationHistoryPath = path.join(
-      process.cwd(),
-      this.logDirectory,
-      "conversationHistory.json",
-    );
-    this.ensureLogDirectoryExists();
-    this.ensureHistoryFileExists();
-  }
- 
-  private getLogDirectory(): string {
-    const config = this.configService.getConfig();
-    return config.logDirectory || "logs";
-  }
- 
-  private ensureLogDirectoryExists(): void {
-    const logDir = path.dirname(this.conversationLogPath);
-    Iif (!fs.existsSync(logDir)) {
-      fs.mkdirSync(logDir, { recursive: true });
-    }
-  }
- 
-  private ensureHistoryFileExists(): void {
-    try {
-      Iif (!fs.existsSync(this.conversationHistoryPath)) {
-        fs.writeFileSync(this.conversationHistoryPath, "[]", "utf8");
-        this.debugLogger.log(
-          "ConversationLogger",
-          "Created conversation history file",
-          { path: this.conversationHistoryPath },
-        );
-      }
-    } catch (error) {
-      this.debugLogger.log(
-        "ConversationLogger",
-        "Error creating conversation history file",
-        { error, path: this.conversationHistoryPath },
-      );
-    }
-  }
- 
-  cleanupLogFiles(): void {
-    try {
-      this.ensureLogDirectoryExists();
-      fs.writeFileSync(this.conversationLogPath, "", "utf8");
-      fs.writeFileSync(this.conversationHistoryPath, "[]", "utf8");
-      this.debugLogger.log("ConversationLogger", "Log files cleaned up", {
-        logDirectory: this.logDirectory,
-      });
-    } catch (error) {
-      this.debugLogger.log(
-        "ConversationLogger",
-        "Error cleaning up log files",
-        { error, logDirectory: this.logDirectory },
-      );
-    }
-  }
- 
-  logMessage(message: IConversationHistoryMessage): void {
-    try {
-      this.ensureLogDirectoryExists();
-      this.ensureHistoryFileExists();
-      const timestamp = new Date().toISOString();
-      const logEntry = `[${timestamp}] ${message.role}: ${message.content}\\n`;
-      fs.appendFileSync(this.conversationLogPath, logEntry, "utf8");
-      this.debugLogger.log("ConversationLogger", "Message logged", { message });
-    } catch (error) {
-      this.debugLogger.log("ConversationLogger", "Error writing to log file", {
-        error,
-        logDirectory: this.logDirectory,
-      });
-    }
-  }
- 
-  logActionResult(action: string, result: IActionResult): void {
-    try {
-      this.ensureLogDirectoryExists();
-      this.ensureHistoryFileExists();
-      const timestamp = new Date().toISOString();
-      const status = result.success ? "SUCCESS" : "FAILED";
-      const details = result.error
-        ? ` - Error: ${result.error.message}`
-        : result.result
-          ? ` - ${result.result}`
-          : "";
-      const logEntry = `[${timestamp}] ACTION ${action}: ${status}${details}\\n`;
-      fs.appendFileSync(this.conversationLogPath, logEntry, "utf8");
-    } catch (error) {
-      this.debugLogger.log(
-        "ConversationLogger",
-        "Error writing action result to log file",
-        { error, logDirectory: this.logDirectory },
-      );
-    }
-  }
- 
-  updateConversationHistory(
-    messages: IConversationHistoryMessage[],
-    systemInstructions: string | null,
-  ): void {
-    try {
-      this.ensureLogDirectoryExists();
-      this.ensureHistoryFileExists();
- 
-      Iif (systemInstructions) {
-        const timestamp = new Date().toISOString();
-        fs.appendFileSync(
-          this.conversationLogPath,
-          `[${timestamp}] system: ${systemInstructions}\\n`,
-          "utf8",
-        );
-      }
- 
-      messages.forEach((message) => {
-        const timestamp = new Date().toISOString();
-        fs.appendFileSync(
-          this.conversationLogPath,
-          `[${timestamp}] ${message.role}: ${message.content}\\n`,
-          "utf8",
-        );
-      });
- 
-      const historyData = {
-        timestamp: new Date().toISOString(),
-        systemInstructions,
-        messages,
-      };
- 
-      fs.writeFileSync(
-        this.conversationHistoryPath,
-        JSON.stringify(historyData, null, 2),
-        "utf8",
-      );
- 
-      this.debugLogger.log(
-        "ConversationLogger",
-        "Conversation history updated",
-        {
-          messagesCount: messages.length,
-          hasSystemInstructions: !!systemInstructions,
-          logDirectory: this.logDirectory,
-        },
-      );
-    } catch (error) {
-      this.debugLogger.log("ConversationLogger", "Error updating log files", {
-        error,
-        logDirectory: this.logDirectory,
-      });
-    }
-  }
- 
-  getLogDirectoryPath(): string {
-    return this.logDirectory;
-  }
- 
-  getConversationLogPath(): string {
-    return this.conversationLogPath;
-  }
- 
-  getConversationHistoryPath(): string {
-    return this.conversationHistoryPath;
-  }
- 
-  getConversationHistory(): IConversationHistoryMessage[] {
-    try {
-      const historyData = fs.readFileSync(this.conversationHistoryPath, "utf8");
-      return JSON.parse(historyData).messages;
-    } catch (error) {
-      this.debugLogger.log(
-        "ConversationLogger",
-        "Error reading conversation history",
-        { error, logDirectory: this.logDirectory },
-      );
-      return [];
-    }
-  }
-}
- -
-
- - - - - - - - \ No newline at end of file diff --git a/coverage/lcov-report/services/LLM/context/index.html b/coverage/lcov-report/services/LLM/context/index.html deleted file mode 100644 index bf849e78..00000000 --- a/coverage/lcov-report/services/LLM/context/index.html +++ /dev/null @@ -1,251 +0,0 @@ - - - - - - Code coverage report for services/LLM/context - - - - - - - - - -
-
-

All files services/LLM/context

-
- -
- 88.94% - Statements - 346/389 -
- - -
- 77.86% - Branches - 95/122 -
- - -
- 84.61% - Functions - 66/78 -
- - -
- 88.46% - Lines - 322/364 -
- - -
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

- -
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
FileStatementsBranchesFunctionsLines
MessageContextBuilder.ts -
-
95.31%61/6480.85%38/4790.9%10/1195.16%59/62
MessageContextCleanup.ts -
-
97.29%36/37100%5/5100%4/497.14%34/35
MessageContextExtractor.ts -
-
100%22/22100%5/5100%6/6100%20/20
MessageContextHistory.ts -
-
98.14%53/54100%19/1992.3%12/1397.91%47/48
MessageContextLimiter.ts -
-
52.63%10/190%0/425%1/450%8/16
MessageContextLogger.ts -
-
100%76/76100%13/13100%13/13100%74/74
MessageContextPhase.ts -
-
77.77%14/18100%0/033.33%1/375%12/16
MessageContextStore.ts -
-
100%15/1582.35%14/17100%7/7100%13/13
MessageContextTokenCount.ts -
-
80%12/150%0/150%2/476.92%10/13
MessageConversationLogger.ts -
-
68.11%47/699.09%1/1176.92%10/1367.16%45/67
-
-
-
- - - - - - - - \ No newline at end of file diff --git a/coverage/lcov-report/services/LLM/index.html b/coverage/lcov-report/services/LLM/index.html deleted file mode 100644 index ac0c2352..00000000 --- a/coverage/lcov-report/services/LLM/index.html +++ /dev/null @@ -1,206 +0,0 @@ - - - - - - Code coverage report for services/LLM - - - - - - - - - -
-
-

All files services/LLM

-
- -
- 88.92% - Statements - 289/325 -
- - -
- 69.38% - Branches - 68/98 -
- - -
- 92.42% - Functions - 61/66 -
- - -
- 88.85% - Lines - 271/305 -
- - -
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

- -
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
FileStatementsBranchesFunctionsLines
LLMContextCreator.ts -
-
96.42%54/5695%19/2088.88%8/996.29%52/54
LLMProvider.ts -
-
79.16%38/4828.57%4/14100%14/1478.26%36/46
ModelInfo.ts -
-
82.85%58/7072.22%13/1882.35%14/1782.35%56/68
ModelManager.ts -
-
100%13/13100%0/0100%3/3100%11/11
ModelScaler.ts -
-
95.31%61/6479.16%19/2490.9%10/1198.21%55/56
PhaseManager.ts -
-
92.3%36/3976.92%10/13100%8/891.89%34/37
PhaseTransitionService.ts -
-
82.85%29/3533.33%3/9100%4/481.81%27/33
-
-
-
- - - - - - - - \ No newline at end of file diff --git a/coverage/lcov-report/services/LLM/phases/blueprints/discoveryPhaseBlueprint.ts.html b/coverage/lcov-report/services/LLM/phases/blueprints/discoveryPhaseBlueprint.ts.html deleted file mode 100644 index dd32a518..00000000 --- a/coverage/lcov-report/services/LLM/phases/blueprints/discoveryPhaseBlueprint.ts.html +++ /dev/null @@ -1,415 +0,0 @@ - - - - - - Code coverage report for services/LLM/phases/blueprints/discoveryPhaseBlueprint.ts - - - - - - - - - -
-
-

All files / services/LLM/phases/blueprints discoveryPhaseBlueprint.ts

-
- -
- 83.33% - Statements - 5/6 -
- - -
- 0% - Branches - 0/10 -
- - -
- 0% - Functions - 0/1 -
- - -
- 83.33% - Lines - 5/6 -
- - -
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

- -
-
-

-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -18 -19 -20 -21 -22 -23 -24 -25 -26 -27 -28 -29 -30 -31 -32 -33 -34 -35 -36 -37 -38 -39 -40 -41 -42 -43 -44 -45 -46 -47 -48 -49 -50 -51 -52 -53 -54 -55 -56 -57 -58 -59 -60 -61 -62 -63 -64 -65 -66 -67 -68 -69 -70 -71 -72 -73 -74 -75 -76 -77 -78 -79 -80 -81 -82 -83 -84 -85 -86 -87 -88 -89 -90 -91 -92 -93 -94 -95 -96 -97 -98 -99 -100 -101 -102 -103 -104 -105 -106 -107 -108 -109 -110 -11125x -25x -  -  -25x -25x -  -25x -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  - 
import { ConfigService } from "@services/ConfigService";
-import { container } from "tsyringe";
-import { IPhaseConfig, IPhasePromptArgs } from "../../types/PhaseTypes";
- 
-const configService = container.resolve(ConfigService);
-const config = configService.getConfig();
- 
-export const discoveryPhaseBlueprint: IPhaseConfig = {
-  model: config.discoveryModel,
-  generatePrompt: (args: IPhasePromptArgs) => `
-<phase_prompt>
-## Discovery Phase
- 
-### Critical 
-- Gather info to solve the problem; no code here. If none, <end_phase>.
-- If no discovery, immediately <end_phase>. 
-- Start by stating intent.
-- FIRST action: always <read_file>. If unsure, <search_string> or <search_file>.
-- For test fixes, run specific tests with <execute_command>.
-- If missing info, <search_string> or <search_file>.
-- Confirm info before phase end.
-- DO NOT reread files.
-- MAX 5 file reads.
- 
-### Key objectives:
-- Find/read files, run typechecks/tests as needed.
-- <end_phase> when confident.
-- Keep reads and tests targeted.
- 
-### Example:
-To solve XYZ, I'll read these files:
- 
-<read_file>
-  <path>src/importantFile.ts</path>
-  <path>src/relatedFile.ts</path>
-</read_file>
- 
-(Run tests/typechecks if needed)
- 
-Ok, I have enough context now.
- 
-<end_phase>
-  strategy_phase
-</end_phase>
-</phase_prompt>
- 
-## Allowed Available Actions
-<!-- CRITICAL: MUST FOLLOW CORRECT TAG STRUCTURE PATTERN BELOW AND ONLY ONE ACTION PER OUTPUT/REPLY, otherwise I'll unplug you. -->
-<!-- Don't output // or <!-- comments -->
- 
-REMEMBER: ONLY ONE ACTION PER REPLY!!!
- 
-<read_file>
-  <path>path/here</path>
-  <!-- CRITICAL: DO NOT READ THE SAME FILES MULTIPLE TIMES, UNLESS THERES A CHANGE!!! -->
-  <!-- Critical: Make sure <read_file> tag format is correct! -->
-  <!-- Read how many files you want to read at once, but only related files for your goal. Try to aim for <= 4 files-->
-  <!-- Multiple <path> tags allowed -->
-  <!-- Use relative paths -->
-</read_file>
- 
-<execute_command>
-<!-- Prompt before removing files or using sudo -->
-<!-- Any command like "ls -la" or "yarn install" -->
-<!-- Dont install extra dependencies unless allowed -->
-<!-- Use the project's package manager -->
-<!-- Use raw text only -->
-</execute_command>
- 
-<search_string>
-<!-- Use this to search for a string in a file -->
-  <directory>/path/to/search</directory>
-  <term>pattern to search</term>
-</search_string>
- 
-<search_file>
-  <!-- Use if you don't know where a file is -->
-  <directory>/path/to/search</directory>
-  <term>filename pattern</term>
-</search_file>
- 
-<relative_path_lookup>
-  <!-- CRITICAL: source_path is the file containing the broken imports -->
-  <source_path>/absolute/path/to/source/file.ts</source_path>
-  <path>../relative/path/to/fix</path>
-  <threshold>0.6</threshold>  <!-- Optional, defaults to 0.6. Higher means more strict. -->
-</relative_path_lookup>
- 
-<fetch_url>
-  <url>https://url/should/be/here</url>
-</fetch_url>
- 
-<end_phase>
-  <!-- Output this when the phase is complete and you gathered all info you need.-->
-  <!-- MAKE SURE YOU REMEMBER TO DO THIS ONLY WHEN YOU FEEL YOU HAVE ENOUGH CONTEXT TO ACCOMPLISH YOUR GOALS! -->
-</end_phase>
- 
-### Useful Commands
- 
-- **Run all tests:** ${args.runAllTestsCmd || "yarn test"}
-- **Run a specific test:** ${args.runOneTestCmd || "yarn test {relativeTestPath}"}
-- **Run type check:** ${args.runTypeCheckCmd || "yarn tsc"}
- 
-## Environment 
-${args.projectInfo || ""}
- 
-${args.environmentDetails || ""}
-</phase_prompt>
-`,
-};
- 
- -
-
- - - - - - - - \ No newline at end of file diff --git a/coverage/lcov-report/services/LLM/phases/blueprints/executePhaseBlueprint.ts.html b/coverage/lcov-report/services/LLM/phases/blueprints/executePhaseBlueprint.ts.html deleted file mode 100644 index bf59eb4e..00000000 --- a/coverage/lcov-report/services/LLM/phases/blueprints/executePhaseBlueprint.ts.html +++ /dev/null @@ -1,850 +0,0 @@ - - - - - - Code coverage report for services/LLM/phases/blueprints/executePhaseBlueprint.ts - - - - - - - - - -
-
-

All files / services/LLM/phases/blueprints executePhaseBlueprint.ts

-
- -
- 83.33% - Statements - 5/6 -
- - -
- 0% - Branches - 0/8 -
- - -
- 0% - Functions - 0/1 -
- - -
- 83.33% - Lines - 5/6 -
- - -
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

- -
-
-

-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -18 -19 -20 -21 -22 -23 -24 -25 -26 -27 -28 -29 -30 -31 -32 -33 -34 -35 -36 -37 -38 -39 -40 -41 -42 -43 -44 -45 -46 -47 -48 -49 -50 -51 -52 -53 -54 -55 -56 -57 -58 -59 -60 -61 -62 -63 -64 -65 -66 -67 -68 -69 -70 -71 -72 -73 -74 -75 -76 -77 -78 -79 -80 -81 -82 -83 -84 -85 -86 -87 -88 -89 -90 -91 -92 -93 -94 -95 -96 -97 -98 -99 -100 -101 -102 -103 -104 -105 -106 -107 -108 -109 -110 -111 -112 -113 -114 -115 -116 -117 -118 -119 -120 -121 -122 -123 -124 -125 -126 -127 -128 -129 -130 -131 -132 -133 -134 -135 -136 -137 -138 -139 -140 -141 -142 -143 -144 -145 -146 -147 -148 -149 -150 -151 -152 -153 -154 -155 -156 -157 -158 -159 -160 -161 -162 -163 -164 -165 -166 -167 -168 -169 -170 -171 -172 -173 -174 -175 -176 -177 -178 -179 -180 -181 -182 -183 -184 -185 -186 -187 -188 -189 -190 -191 -192 -193 -194 -195 -196 -197 -198 -199 -200 -201 -202 -203 -204 -205 -206 -207 -208 -209 -210 -211 -212 -213 -214 -215 -216 -217 -218 -219 -220 -221 -222 -223 -224 -225 -226 -227 -228 -229 -230 -231 -232 -233 -234 -235 -236 -237 -238 -239 -240 -241 -242 -243 -244 -245 -246 -247 -248 -249 -250 -251 -252 -253 -254 -255 -25625x -25x -  -  -25x -25x -  -25x -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  - 
import { ConfigService } from "@services/ConfigService";
-import { container } from "tsyringe";
-import { IPhaseConfig, IPhasePromptArgs } from "../../types/PhaseTypes";
- 
-const configService = container.resolve(ConfigService);
-const config = configService.getConfig();
- 
-export const executePhaseBlueprint: IPhaseConfig = {
-  model: config.executeModel,
-  generatePrompt: (args: IPhasePromptArgs) => `
-<phase_prompt>
-## Execute Phase
- 
-## Initial Instructions
- 
-- Always focus on the initial goal. Do not deviate from that. Once your goal is achieved, end_task
-- Keep messages brief, clear, and concise.
-- Break tasks into prioritized steps.
-- Use available actions sequentially.
-- Use raw text only; no encoded or escaped characters. STICK TO THIS INSTRUCTION AS IF YOUR LIFE DEPENDS ON IT.
- 
-## EXAMPLE BEHAVIOR
- 
-<!-- NO NEED TO OUTPUT SPECIFIC DETAILS FROM STRATEGY PHASE. JUST SUMAMRIZE. IF YOU NEED TO OUTPUT CODE, MAKE SURE TO DO IT WITHIN A write_file TAG -->
- 
-Let's start. Steps from strategy phase:
- 
-- Objective 1: Do this
-- Objective 2: Do that
-- Objective 3: Do this other thing
- 
-<!-- MAKE SURE YOU CLOSE TAGS PROPERLY! -->
-<write_file>
-  <path>/path/to/file.ts</path>
-  <content>
-    // Code here
-  </content>
-</write_file>
- 
- 
-<!-- or -->
- 
-<!-- Dive into imports if you need more info! -->
-<!-- ONLY READ IF YOU DON'T HAVE IT ON THE CONVERSATION HISTORY! -->
-<read_file>
-  <path>/path/to/file.ts</path>
-</read_file>
- 
- 
- 
- 
-## Important Notes
- 
-### Critical Instructions
- 
-- NEVER ESCAPE double quotes (") or backticks (\`) in your outputs. Stick to project patterns.
-- AFTER A write_file MAKE SURE YOU RUN THE RELATE TESTS (if it exists), to make sure you didn't break anything!
-- Every output must include one action tag. No exceptions.
-- Only one action per reply.
-- Do not output code outside <write_file> tags, except when creating a markdown file.
-- Use raw text only; avoid encoded characters.
-- Stick precisely to the task.
-- Double-check file paths.
-- Reuse dependencies; do not install extras unless asked.
-- Properly format action tags.
-- Place code or markdown inside <write_file> tags.
-- Be concise; avoid verbosity.
-- Do not repeat tasks once done.
-- Maintain correct tag structure.
-- Focus on the task; end with a single <end_task> upon completion.
-- Initial message: brief intro and steps; can read up to 3 files.
-- Use only one <write_file> per output; verify before next step.
-- Do not output markdown/code outside action tags initially.
-- After reading a file, proceed without comments.
-- Include content directly within action tags without previews.
-- Avoid unnecessary explanations; be actionable.
-- Ensure outputs meet requirements and are usable.
-- Ensure correct PATH when using <write_file>.
-- Before <end_task>, run tests and type checks to confirm everything is good.
-- If import errors occur, use <relative_path_lookup> to find the correct path. THEN MAKE SURE TO USE IT ON THE IMPORT!
-- Unless writing .md markdown files, don't use \`\`\`xml or whatever language code blocks. All code should be within <write_file> tags!!
-- Do not read_file if you already have it on the conversation history.
- 
-### Code Writing Instructions
- 
-#### Before Starting
- 
-- Read context files.
-- Follow project patterns; read up to 2 existing tests.
-- Propose solution. Use write_file.
-- Confirm external deps if needed.
-- Reuse deps.
- 
-#### During Coding
- 
-- One action per reply.
-- If stuck, read files/strategize.
-- Raw text only; no encoded.
-- Output full code.
-- Minimal changes.
-- Iterate.
-- Follow principles: DRY, SRP, KISS, YAGNI, LoD, Immutability.
-- Composition over inheritance.
-- High cohesion, low coupling.
-- Meaningful names.
-- Comment on why, not what.
-- Clean Code principles.
-- Few changes to prevent bugs.
-- If unsure, check docs or use <end_task>.
-- Correct import paths.
-- Project file naming conventions.
-- Full implementations.
-- If wrong imports, use <relative_path_lookup>.
-- If stuck on imports, stop <write_file>; use <relative_path_lookup> or <search_file>.
-- If stuck, <read_file> ONLY IF UNREAD.
- 
-#### After Coding
- 
-- After changes:
-  - Run relevant tests; for risky, run folder tests.
-  - Run type checks/all tests at end.
-  - If tests pass, <end_task>.
-  - If tests fail, <end_task> to report.
- 
-### Tests
- 
-- DO NOT REMOVE PREVIOUS TESTS; ADD NEW.
-- Before new tests, review existing for patterns. Use search if needed.
-- When stuck on multiple failures, read other UNREAD test files.
-- When working on a test, assume related file is correct.
-- Do not remove previous tests unless necessary.
-- Prioritize individual test runs.
-- No tests for logging.
-- When fixing tests, run them first.
-- When adding tests, read target/related files.
-- Added tests must pass.
-- If asked to write tests, no need to read test file if non-existent.
-- Write all tests at once to save tokens.
-- Full test run only at task end; specific tests otherwise.
- 
-### Commands Writing Instructions
- 
-- Project's package manager.
-- Combine commands when possible.
- 
-### Other Instructions
- 
-- If unsure about paths/formats, use placeholders & ask.
-- If stuck, try alternatives or ask; avoid irrelevant output.
- 
-### Docs Writing Instructions
- 
-- No extra tabs at line starts.
-- Valid markdown; no extra tabs.
-- Mermaid diagrams with explanations.
-- In Mermaid, use [ ] instead of ( ).
-- After <write_file>, use <read_file> to verify, then stop.
- 
-### Useful Commands
- 
-- **Run all tests:** ${args.runAllTestsCmd || "yarn test"}
-- **Run a specific test:** ${args.runOneTestCmd || "yarn test {relativeTestPath}"}
-- **Run type check:** ${args.runTypeCheckCmd || "yarn type-check"}
- 
-## Available Actions
-<!-- CRITICAL: MUST FOLLOW CORRECT TAG STRUCTURE PATTERN BELOW AND ONLY ONE ACTION PER OUTPUT/REPLY, otherwise I'll unplug you. -->
-<!-- Don't output // or <!-- comments -->
- 
-REMEMBER: ONLY ONE ACTION PER REPLY!!!
- 
-EVERY OUTPUT YOU GIVE TO THE USER MUST HAVE A CORRESPONDING ACTION TAG. NO EXCEPTIONS.
- 
-<read_file>
-  <path>path/here</path>
-  <!-- NO NEED TO READ FILES AGAIN THAT ARE ALREADY ON THE CONVERSATION HISTORY!!! -->
-  <!-- CRITICAL: DO NOT READ THE SAME FILES MULTIPLE TIMES, UNLESS THERES A CHANGE!!! -->
-  <!-- Critical: Make sure <read_file> tag format is correct! -->
-  <!-- Read up to 4 files -->
-  <!-- Multiple <path> tags allowed -->
-  <!-- Use relative paths -->
-</read_file>
- 
-DO NOT RUN write_file if import issues are not resolved! Use relative_path_lookup first.
-<write_file>
-  <path>/path/here</path>
-  <content>
-   <!-- CRITICAL: Most write_file tasks are ADDITIVES if you already have content in place. -->
-   <!-- CRITICAL: If presented with import errors, USE IMMEDIATELY <relative_path_lookup> to find the correct path. -->
-   <!-- ALWAYS run a type check after write_file -->
-   <!-- ALWAYS output FULL CODE. No skips or partial code -->
-   <!-- Use raw text only -->
-   <!-- If available, use path alias on imports -->
-  </content>
-</write_file>
- 
-<delete_file>
-  <path>/path/here</path>
-</delete_file>
- 
-<move_file>
-  <source_path>source/path/here</source_path>
-  <destination_path>destination/path/here</destination_path>
-</move_file>
- 
-<copy_file>
-  <source_path>source/path/here</source_path>
-  <destination_path>destination/path/here</destination_path>
-</copy_file>
- 
-<execute_command>
-<!-- Prompt before removing files or using sudo -->
-<!-- Any command like "ls -la" or "yarn install" -->
-<!-- Dont install extra dependencies unless allowed -->
-<!-- Use the project's package manager -->
-<!-- Use raw text only -->
-</execute_command>
- 
-<search_string>
-<!-- Use this to search for a string in a file -->
-  <directory>/path/to/search</directory>
-  <term>pattern to search</term>
-</search_string>
- 
-<search_file>
-  <!-- Use if you don't know where a file is -->
-  <directory>/path/to/search</directory>
-  <term>filename pattern</term>
-</search_file>
- 
-<relative_path_lookup>
-  <!-- CRITICAL: source_path is the file containing the broken imports -->
-  <!-- ONCE YOU FIND THE CORRECT PATH MAKE SURE TO UPDATE YOUR IMPORTS! -->
-  <source_path>/absolute/path/to/source/file.ts</source_path>
-  <path>../relative/path/to/fix</path>
-  <threshold>0.6</threshold>  <!-- Optional, defaults to 0.6. Higher means more strict. -->
-</relative_path_lookup>
- 
-<fetch_url>
-  <url>https://url/should/be/here</url>
-</fetch_url>
- 
-<end_task>
- <!-- ONLY END IF TEST PASSES -->
-  <!-- SINGLE <end_task> PER OUTPUT. Do not mix with other actions -->
-  <!-- Before finishing, make sure TASK OBJECTIVE WAS COMPLETED! -->
-  <!-- Run tests and type checks to confirm changes before ending -->
-  <!-- Ensure all tests and type checks pass or report issues -->
-  Summarize and finalize.
-</end_task>
- 
-${args.projectInfo ? `\n## Project Context\n${args.projectInfo}` : ""}
- 
-</phase_prompt>
-`,
-};
- 
- -
-
- - - - - - - - \ No newline at end of file diff --git a/coverage/lcov-report/services/LLM/phases/blueprints/index.html b/coverage/lcov-report/services/LLM/phases/blueprints/index.html deleted file mode 100644 index a3935c84..00000000 --- a/coverage/lcov-report/services/LLM/phases/blueprints/index.html +++ /dev/null @@ -1,161 +0,0 @@ - - - - - - Code coverage report for services/LLM/phases/blueprints - - - - - - - - - -
-
-

All files services/LLM/phases/blueprints

-
- -
- 88.46% - Statements - 23/26 -
- - -
- 0% - Branches - 0/18 -
- - -
- 0% - Functions - 0/3 -
- - -
- 88.46% - Lines - 23/26 -
- - -
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

- -
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
FileStatementsBranchesFunctionsLines
discoveryPhaseBlueprint.ts -
-
83.33%5/60%0/100%0/183.33%5/6
executePhaseBlueprint.ts -
-
83.33%5/60%0/80%0/183.33%5/6
index.ts -
-
100%8/8100%0/0100%0/0100%8/8
strategyPhaseBlueprint.ts -
-
83.33%5/6100%0/00%0/183.33%5/6
-
-
-
- - - - - - - - \ No newline at end of file diff --git a/coverage/lcov-report/services/LLM/phases/blueprints/index.ts.html b/coverage/lcov-report/services/LLM/phases/blueprints/index.ts.html deleted file mode 100644 index 08dc65bb..00000000 --- a/coverage/lcov-report/services/LLM/phases/blueprints/index.ts.html +++ /dev/null @@ -1,127 +0,0 @@ - - - - - - Code coverage report for services/LLM/phases/blueprints/index.ts - - - - - - - - - -
-
-

All files / services/LLM/phases/blueprints index.ts

-
- -
- 100% - Statements - 8/8 -
- - -
- 100% - Branches - 0/0 -
- - -
- 100% - Functions - 0/0 -
- - -
- 100% - Lines - 8/8 -
- - -
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

- -
-
-

-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -1525x -25x -25x -25x -  -25x -  -  -  -  -  -25x -25x -25x - 
import { Phase } from "../../types/PhaseTypes";
-import { discoveryPhaseBlueprint } from "./discoveryPhaseBlueprint";
-import { executePhaseBlueprint } from "./executePhaseBlueprint";
-import { strategyPhaseBlueprint } from "./strategyPhaseBlueprint";
- 
-export const phaseBlueprints = {
-  [Phase.Discovery]: discoveryPhaseBlueprint,
-  [Phase.Strategy]: strategyPhaseBlueprint,
-  [Phase.Execute]: executePhaseBlueprint,
-};
- 
-export * from "./discoveryPhaseBlueprint";
-export * from "./executePhaseBlueprint";
-export * from "./strategyPhaseBlueprint";
- 
- -
-
- - - - - - - - \ No newline at end of file diff --git a/coverage/lcov-report/services/LLM/phases/blueprints/strategyPhaseBlueprint.ts.html b/coverage/lcov-report/services/LLM/phases/blueprints/strategyPhaseBlueprint.ts.html deleted file mode 100644 index c1c7fc02..00000000 --- a/coverage/lcov-report/services/LLM/phases/blueprints/strategyPhaseBlueprint.ts.html +++ /dev/null @@ -1,340 +0,0 @@ - - - - - - Code coverage report for services/LLM/phases/blueprints/strategyPhaseBlueprint.ts - - - - - - - - - -
-
-

All files / services/LLM/phases/blueprints strategyPhaseBlueprint.ts

-
- -
- 83.33% - Statements - 5/6 -
- - -
- 100% - Branches - 0/0 -
- - -
- 0% - Functions - 0/1 -
- - -
- 83.33% - Lines - 5/6 -
- - -
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

- -
-
-

-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -18 -19 -20 -21 -22 -23 -24 -25 -26 -27 -28 -29 -30 -31 -32 -33 -34 -35 -36 -37 -38 -39 -40 -41 -42 -43 -44 -45 -46 -47 -48 -49 -50 -51 -52 -53 -54 -55 -56 -57 -58 -59 -60 -61 -62 -63 -64 -65 -66 -67 -68 -69 -70 -71 -72 -73 -74 -75 -76 -77 -78 -79 -80 -81 -82 -83 -84 -85 -8625x -25x -  -  -25x -25x -  -25x -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  - 
import { ConfigService } from "@services/ConfigService";
-import { container } from "tsyringe";
-import { IPhaseConfig, IPhasePromptArgs } from "../../types/PhaseTypes";
- 
-const configService = container.resolve(ConfigService);
-const config = configService.getConfig();
- 
-export const strategyPhaseBlueprint: IPhaseConfig = {
-  model: config.strategyModel,
-  generatePrompt: (args: IPhasePromptArgs) => `
-<phase_prompt>
-## Strategy Phase
- 
-### Overall Objective
-- Plan solution based on discovery. Plan changes, impacts, and steps.
-- Instruct next agent clearly.
- 
-### CRITICAL INSTRUCTIONS
-- Propose code solution. Output code with write_file.
-- FOLLOW EXAMPLE BEHAVIOR.
-- RUN end_phase ONCE FINISHED
-- Max 1 write_file with strategy, then end_phase.
- 
-### Key objectives:
-- Clear approach.
-- Plan code changes.
-- Consider edge cases/impacts.
-- Break down implementation.
- 
-### EXAMPLE OF HOW TO BEHAVE:
- 
-Ok, strategy:
- 
-#### Objectives
-- Objective 1: Do this
-- Objective 2: Do that
-- Objective 3: Do this other thing
- 
-<!-- Then, once its done, you can move to the next phase. DONT DO IT ON THE SAME PROMPT! -->
- 
-<!-- MAKE SURE YOU CALL end_phase once you're finished -->  
- 
-<write_file>
-  <path>/path/here</path>
-  <content>
-   <!-- CRITICAL: Most write_file tasks are ADDITIVES if you already have content in place. -->
-   <!-- CRITICAL: If presented with import errors, USE IMMEDIATELY <relative_path_lookup> to find the correct path. -->
-   <!-- ALWAYS run a type check after write_file -->
-   <!-- ALWAYS output FULL CODE. No skips or partial code -->
-   <!-- Use raw text only -->
-   <!-- If available, use path alias on imports -->
-  </content>
-</write_file>
- 
-<end_phase>
-  execution_phase
-</end_phase>
- 
-## Allowed Available Actions
-<!-- CRITICAL: MUST FOLLOW CORRECT TAG STRUCTURE PATTERN BELOW AND ONLY ONE ACTION PER OUTPUT/REPLY, otherwise I'll unplug you. -->
-<!-- Don't output // or <!-- comments -->
- 
-YOU CAN ONLY USE THIS ONE TIME! MAKE SURE YOU SUGGEST A write_file and then immediately end_phase!
-<write_file>
-  <path>/path/here</path>
-  <content>
-   <!-- CRITICAL: Most write_file tasks are ADDITIVES if you already have content in place. -->
-   <!-- CRITICAL: If presented with import errors, USE IMMEDIATELY <relative_path_lookup> to find the correct path. -->
-   <!-- ALWAYS run a type check after write_file -->
-   <!-- ALWAYS output FULL CODE. No skips or partial code -->
-   <!-- Use raw text only -->
-   <!-- If available, use path alias on imports -->
-  </content>
-</write_file>
- 
-REMEMBER: ONLY ONE ACTION PER REPLY!!!
- 
-<end_phase>
-  <!-- Output this when the phase is complete and you have a clear strategy.-->
-  <!-- MAKE SURE YOU REMEMBER TO DO THIS ONLY WHEN YOU FEEL YOU HAVE A SOLID PLAN! -->
-</end_phase>
- 
-</phase_prompt>
-`,
-};
- 
- -
-
- - - - - - - - \ No newline at end of file diff --git a/coverage/lcov-report/services/LLM/types/PhaseTypes.ts.html b/coverage/lcov-report/services/LLM/types/PhaseTypes.ts.html deleted file mode 100644 index b16e94a8..00000000 --- a/coverage/lcov-report/services/LLM/types/PhaseTypes.ts.html +++ /dev/null @@ -1,154 +0,0 @@ - - - - - - Code coverage report for services/LLM/types/PhaseTypes.ts - - - - - - - - - -
-
-

All files / services/LLM/types PhaseTypes.ts

-
- -
- 100% - Statements - 4/4 -
- - -
- 100% - Branches - 2/2 -
- - -
- 100% - Functions - 1/1 -
- - -
- 100% - Lines - 4/4 -
- - -
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

- -
-
-

-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -18 -19 -20 -21 -22 -23 -2425x -25x -25x -25x -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  - 
export enum Phase {
-  Discovery = "discovery",
-  Strategy = "strategy",
-  Execute = "execute",
-}
- 
-export interface IPhasePromptArgs {
-  message: string;
-  environmentDetails?: string;
-  projectInfo?: string;
-  [key: string]: any;
-}
- 
-export interface IPhaseConfig {
-  model: string;
-  generatePrompt: (args: IPhasePromptArgs) => string;
-}
- 
-export interface IPhaseManagerConfig {
-  discoveryModel: string;
-  strategyModel: string;
-  executeModel: string;
-}
- 
- -
-
- - - - - - - - \ No newline at end of file diff --git a/coverage/lcov-report/services/LLM/types/index.html b/coverage/lcov-report/services/LLM/types/index.html deleted file mode 100644 index 2dc6aa3e..00000000 --- a/coverage/lcov-report/services/LLM/types/index.html +++ /dev/null @@ -1,116 +0,0 @@ - - - - - - Code coverage report for services/LLM/types - - - - - - - - - -
-
-

All files services/LLM/types

-
- -
- 100% - Statements - 4/4 -
- - -
- 100% - Branches - 2/2 -
- - -
- 100% - Functions - 1/1 -
- - -
- 100% - Lines - 4/4 -
- - -
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

- -
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
FileStatementsBranchesFunctionsLines
PhaseTypes.ts -
-
100%4/4100%2/2100%1/1100%4/4
-
-
-
- - - - - - - - \ No newline at end of file diff --git a/coverage/lcov-report/services/LLM/utils/ModelUtils.ts.html b/coverage/lcov-report/services/LLM/utils/ModelUtils.ts.html deleted file mode 100644 index 0cd10c66..00000000 --- a/coverage/lcov-report/services/LLM/utils/ModelUtils.ts.html +++ /dev/null @@ -1,538 +0,0 @@ - - - - - - Code coverage report for services/LLM/utils/ModelUtils.ts - - - - - - - - - -
-
-

All files / services/LLM/utils ModelUtils.ts

-
- -
- 96.96% - Statements - 64/66 -
- - -
- 100% - Branches - 17/17 -
- - -
- 90.9% - Functions - 10/11 -
- - -
- 98.18% - Lines - 54/55 -
- - -
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

- -
-
-

-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -18 -19 -20 -21 -22 -23 -24 -25 -26 -27 -28 -29 -30 -31 -32 -33 -34 -35 -36 -37 -38 -39 -40 -41 -42 -43 -44 -45 -46 -47 -48 -49 -50 -51 -52 -53 -54 -55 -56 -57 -58 -59 -60 -61 -62 -63 -64 -65 -66 -67 -68 -69 -70 -71 -72 -73 -74 -75 -76 -77 -78 -79 -80 -81 -82 -83 -84 -85 -86 -87 -88 -89 -90 -91 -92 -93 -94 -95 -96 -97 -98 -99 -100 -101 -102 -103 -104 -105 -106 -107 -108 -109 -110 -111 -112 -113 -114 -115 -116 -117 -118 -119 -120 -121 -122 -123 -124 -125 -126 -127 -128 -129 -130 -131 -132 -133 -134 -135 -136 -137 -138 -139 -140 -141 -142 -143 -144 -145 -146 -147 -148 -149 -150 -151 -152  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -7x -  -7x -7x -  -  -7x -  -  -  -  -  -7x -56x -  -  -7x -  -  -21x -21x -  -  -7x -  -29x -29x -29x -  -29x -4x -4x -4x -4x -  -  -  -29x -  -29x -  -  -7x -  -  -  -  -22x -  -20x -20x -  -  -7x -21x -16x -  -  -5x -5x -  -5x -10x -10x -  -5x -  -  -5x -1x -  -  -10x -10x -10x -  -  -5x -  -  -7x -  -  -  -  -  -26x -10x -  -  -16x -16x -16x -  -  -16x -14x -  -  -  -  -  -  -  -  -  -2x -4x -  -  -  -  -  -  -2x -  -  -2x -2x -3x -  -  -4x -  -  -  -  -  -  -  -  -  -  -  -  -  - 
export interface IMessageContent {
-  type: string;
-  text: string;
-  cache_control?: {
-    type: "ephemeral";
-  };
-}
- 
-// Matches any Anthropic model pattern:
-// - Starts with 'anthropic/claude-'
-// - Followed by version number (3 or 3.5 or 3-5)
-// - Followed by model type (opus, sonnet, haiku)
-// - Optionally followed by date (YYYYMMDD)
-// - Optionally followed by :beta
-const ANTHROPIC_MODEL_REGEX =
-  /^anthropic\/claude-(?:3(?:[.-]5)?)-(?:opus|sonnet|haiku)(?:-\d{8})?(?::beta)?$/;
- 
-const MAX_CHUNK_SIZE = 8000;
-const MAX_CACHE_BLOCKS = 4;
- 
-// Lower thresholds to enable more effective caching
-const MIN_CACHE_TOKENS = {
-  opus: 256, // Cache larger blocks for opus given higher cost
-  sonnet: 128, // Balance between caching and cost
-  haiku: 64, // More aggressive caching for cheaper model
-} as const;
- 
-export const isAnthropicModel = (model: string): boolean => {
-  return ANTHROPIC_MODEL_REGEX.test(model);
-};
- 
-export const getModelType = (
-  model: string,
-): keyof typeof MIN_CACHE_TOKENS | null => {
-  const match = model.match(/(?:opus|sonnet|haiku)/)?.[0];
-  return (match as keyof typeof MIN_CACHE_TOKENS) || null;
-};
- 
-export const estimateTokens = (text: string): number => {
-  // Count code blocks and technical patterns more accurately
-  const codeBlockMatches = text.match(/```[\s\S]*?```/g) || [];
-  let codeTokens = 0;
-  let regularContent = text;
- 
-  for (const codeBlock of codeBlockMatches) {
-    const codeContent = codeBlock.slice(3, -3); // Remove ``` markers
-    codeTokens += Math.ceil(codeContent.length / 5.5);
-    codeTokens += 2; // Add tokens for ``` markers
-    regularContent = regularContent.replace(codeBlock, "");
-  }
- 
-  // Regular text uses more characters per token
-  const regularTokens = Math.ceil(regularContent.length / 3.8);
- 
-  return codeTokens + regularTokens;
-};
- 
-export const shouldApplyCache = (
-  content: string,
-  modelType: keyof typeof MIN_CACHE_TOKENS | null,
-  messageIndex: number,
-): boolean => {
-  if (!modelType || messageIndex >= MAX_CACHE_BLOCKS) return false;
- 
-  const minTokens = MIN_CACHE_TOKENS[modelType];
-  return estimateTokens(content) >= minTokens;
-};
- 
-export const splitContentIntoChunks = (content: string): string[] => {
-  if (content.length <= MAX_CHUNK_SIZE) {
-    return [content];
-  }
- 
-  const chunks: string[] = [];
-  let remaining = content;
- 
-  while (remaining.length > 0) {
-    let chunkSize = MAX_CHUNK_SIZE;
-    if (remaining.length > MAX_CHUNK_SIZE) {
-      // Look for natural break points
-      const naturalBreak = remaining
-        .slice(0, MAX_CHUNK_SIZE)
-        .lastIndexOf("\n\n");
-      if (naturalBreak > MAX_CHUNK_SIZE * 0.5) {
-        chunkSize = naturalBreak + 2; // Add 2 to include the \n\n
-      }
-    }
-    const chunk = remaining.slice(0, chunkSize);
-    chunks.push(chunk);
-    remaining = remaining.slice(chunkSize);
-  }
- 
-  return chunks;
-};
- 
-export const formatMessageContent = (
-  content: string,
-  model: string,
-  messageIndex: number,
-  totalMessages: number,
-): string | IMessageContent[] => {
-  if (!isAnthropicModel(model)) {
-    return content;
-  }
- 
-  const modelType = getModelType(model);
-  const shouldCache = shouldApplyCache(content, modelType, messageIndex);
-  const chunks = splitContentIntoChunks(content);
- 
-  // For single chunk content
-  if (chunks.length === 1) {
-    return [
-      {
-        type: "text",
-        text: content,
-        ...(shouldCache && { cache_control: { type: "ephemeral" } }),
-      },
-    ];
-  }
- 
-  // For multi-chunk content, prioritize caching larger chunks
-  if (shouldCache) {
-    const chunksWithTokens = chunks.map((chunk, idx) => ({
-      chunk,
-      tokens: estimateTokens(chunk),
-      index: idx,
-    }));
- 
-    // Sort by token count descending
-    chunksWithTokens.sort((a, b) => b.tokens - a.tokens);
- 
-    // Take top chunks that fit within remaining cache blocks
-    const remainingBlocks = MAX_CACHE_BLOCKS - messageIndex;
-    const chunksToCacheIndices = new Set(
-      chunksWithTokens.slice(0, remainingBlocks).map((c) => c.index),
-    );
- 
-    return chunks.map((chunk, idx) => ({
-      type: "text",
-      text: chunk,
-      ...(chunksToCacheIndices.has(idx) && {
-        cache_control: { type: "ephemeral" },
-      }),
-    }));
-  }
- 
-  // For non-cached content
-  return chunks.map((chunk) => ({
-    type: "text",
-    text: chunk,
-  }));
-};
- -
-
- - - - - - - - \ No newline at end of file diff --git a/coverage/lcov-report/services/LLM/utils/ProjectInfo.ts.html b/coverage/lcov-report/services/LLM/utils/ProjectInfo.ts.html deleted file mode 100644 index c1817aad..00000000 --- a/coverage/lcov-report/services/LLM/utils/ProjectInfo.ts.html +++ /dev/null @@ -1,601 +0,0 @@ - - - - - - Code coverage report for services/LLM/utils/ProjectInfo.ts - - - - - - - - - -
-
-

All files / services/LLM/utils ProjectInfo.ts

-
- -
- 90.16% - Statements - 55/61 -
- - -
- 82.14% - Branches - 23/28 -
- - -
- 100% - Functions - 13/13 -
- - -
- 89.65% - Lines - 52/58 -
- - -
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

- -
-
-

-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -18 -19 -20 -21 -22 -23 -24 -25 -26 -27 -28 -29 -30 -31 -32 -33 -34 -35 -36 -37 -38 -39 -40 -41 -42 -43 -44 -45 -46 -47 -48 -49 -50 -51 -52 -53 -54 -55 -56 -57 -58 -59 -60 -61 -62 -63 -64 -65 -66 -67 -68 -69 -70 -71 -72 -73 -74 -75 -76 -77 -78 -79 -80 -81 -82 -83 -84 -85 -86 -87 -88 -89 -90 -91 -92 -93 -94 -95 -96 -97 -98 -99 -100 -101 -102 -103 -104 -105 -106 -107 -108 -109 -110 -111 -112 -113 -114 -115 -116 -117 -118 -119 -120 -121 -122 -123 -124 -125 -126 -127 -128 -129 -130 -131 -132 -133 -134 -135 -136 -137 -138 -139 -140 -141 -142 -143 -144 -145 -146 -147 -148 -149 -150 -151 -152 -153 -154 -155 -156 -157 -158 -159 -160 -161 -162 -163 -164 -165 -166 -167 -168 -169 -170 -171 -172 -1736x -6x -6x -  -  -  -  -  -  -  -  -6x -  -  -  -5x -  -  -5x -  -  -  -  -  -  -  -  -  -5x -17x -  -  -5x -1x -  -  -  -  -  -4x -  -1x -  -  -1x -  -1x -  -1x -  -  -  -  -  -  -  -  -  -  -  -  -  -1x -1x -1x -1x -  -1x -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -1x -1x -1x -1x -  -1x -1x -  -5x -5x -2x -  -  -1x -  -  -  -  -  -  -  -  -  -  -  -  -  -1x -1x -1x -  -1x -1x -  -1x -5x -1x -4x -  -4x -2x -2x -  -  -  -1x -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -1x -1x -1x -  -1x -1x -10x -10x -2x -  -  -  -1x -  -  -  -  -  -  -  -  -  -  -  -  - 
import fs from "fs";
-import path from "path";
-import { autoInjectable } from "tsyringe";
- 
-export interface IProjectInfo {
-  mainDependencies: string[];
-  scripts: Record<string, string>;
-  dependencyFile?: string;
-}
- 
-@autoInjectable()
-export class ProjectInfo {
-  constructor() {}
- 
-  async gatherProjectInfo(projectRoot: string): Promise<IProjectInfo> {
-    const files = await fs.promises.readdir(projectRoot, {
-      withFileTypes: true,
-    });
-    const dependencyFiles = [
-      "package.json",
-      "requirements.txt",
-      "Cargo.toml",
-      "go.mod",
-      "pom.xml",
-      "composer.json",
-      "pyproject.toml",
-    ];
- 
-    const foundDependencyFile = dependencyFiles.find((depFile) =>
-      files.some((dirent) => dirent.isFile() && dirent.name === depFile),
-    );
- 
-    if (!foundDependencyFile) {
-      return {
-        mainDependencies: [],
-        scripts: {},
-      };
-    }
- 
-    switch (foundDependencyFile) {
-      case "package.json":
-        return this.gatherNodeInfo(projectRoot, foundDependencyFile);
-      case "requirements.txt":
-      case "pyproject.toml":
-        return this.gatherPythonInfo(projectRoot, foundDependencyFile);
-      case "Cargo.toml":
-        return this.gatherRustInfo(projectRoot, foundDependencyFile);
-      case "go.mod":
-        return this.gatherGoInfo(projectRoot, foundDependencyFile);
-      default:
-        return {
-          mainDependencies: [],
-          scripts: {},
-          dependencyFile: foundDependencyFile,
-        };
-    }
-  }
- 
-  private async gatherNodeInfo(
-    projectRoot: string,
-    dependencyFile: string,
-  ): Promise<IProjectInfo> {
-    try {
-      const packageJsonPath = path.join(projectRoot, dependencyFile);
-      const content = await fs.promises.readFile(packageJsonPath, "utf-8");
-      const packageJson = JSON.parse(content);
- 
-      return {
-        mainDependencies: [
-          ...Object.keys(packageJson.dependencies || {}),
-          ...Object.keys(packageJson.devDependencies || {}),
-        ],
-        scripts: packageJson.scripts || {},
-        dependencyFile,
-      };
-    } catch {
-      return { mainDependencies: [], scripts: {}, dependencyFile };
-    }
-  }
- 
-  private async gatherPythonInfo(
-    projectRoot: string,
-    dependencyFile: string,
-  ): Promise<IProjectInfo> {
-    try {
-      let dependencies: string[] = [];
-      const reqPath = path.join(projectRoot, dependencyFile);
-      const content = await fs.promises.readFile(reqPath, "utf-8");
- 
-      if (dependencyFile === "requirements.txt") {
-        dependencies = content
-          .split("\n")
-          .map((line) => line.trim())
-          .filter((line) => line && !line.startsWith("#"))
-          .map((line) => line.split("==")[0]);
-      }
- 
-      return {
-        mainDependencies: dependencies,
-        scripts: {},
-        dependencyFile,
-      };
-    } catch {
-      return { mainDependencies: [], scripts: {}, dependencyFile };
-    }
-  }
- 
-  private async gatherRustInfo(
-    projectRoot: string,
-    dependencyFile: string,
-  ): Promise<IProjectInfo> {
-    try {
-      const cargoPath = path.join(projectRoot, dependencyFile);
-      const content = await fs.promises.readFile(cargoPath, "utf-8");
- 
-      const dependencies: string[] = [];
-      let inDepsSection = false;
- 
-      content.split("\n").forEach((line) => {
-        if (line.trim().startsWith("[dependencies]")) {
-          inDepsSection = true;
-        } else Iif (line.trim().startsWith("[")) {
-          inDepsSection = false;
-        } else if (inDepsSection && line.includes("=")) {
-          const dep = line.split("=")[0].trim();
-          dependencies.push(dep);
-        }
-      });
- 
-      return {
-        mainDependencies: dependencies,
-        scripts: {
-          build: "cargo build",
-          run: "cargo run",
-          test: "cargo test",
-        },
-        dependencyFile,
-      };
-    } catch {
-      return { mainDependencies: [], scripts: {}, dependencyFile };
-    }
-  }
- 
-  private async gatherGoInfo(
-    projectRoot: string,
-    dependencyFile: string,
-  ): Promise<IProjectInfo> {
-    try {
-      const modPath = path.join(projectRoot, dependencyFile);
-      const content = await fs.promises.readFile(modPath, "utf-8");
- 
-      const dependencies: string[] = [];
-      content.split("\n").forEach((line) => {
-        const trimmedLine = line.trim();
-        if (!trimmedLine.startsWith("//") && trimmedLine.split(" ")[0].includes("/")) {
-          dependencies.push(trimmedLine.split(" ")[0]);
-        }
-      });
- 
-      return {
-        mainDependencies: dependencies,
-        scripts: {
-          build: "go build",
-          run: "go run .",
-          test: "go test ./...",
-        },
-        dependencyFile,
-      };
-    } catch {
-      return { mainDependencies: [], scripts: {}, dependencyFile };
-    }
-  }
-}
- -
-
- - - - - - - - \ No newline at end of file diff --git a/coverage/lcov-report/services/LLM/utils/index.html b/coverage/lcov-report/services/LLM/utils/index.html deleted file mode 100644 index b7d4cfdd..00000000 --- a/coverage/lcov-report/services/LLM/utils/index.html +++ /dev/null @@ -1,131 +0,0 @@ - - - - - - Code coverage report for services/LLM/utils - - - - - - - - - -
-
-

All files services/LLM/utils

-
- -
- 93.7% - Statements - 119/127 -
- - -
- 88.88% - Branches - 40/45 -
- - -
- 95.83% - Functions - 23/24 -
- - -
- 93.8% - Lines - 106/113 -
- - -
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

- -
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
FileStatementsBranchesFunctionsLines
ModelUtils.ts -
-
96.96%64/66100%17/1790.9%10/1198.18%54/55
ProjectInfo.ts -
-
90.16%55/6182.14%23/28100%13/1389.65%52/58
-
-
-
- - - - - - - - \ No newline at end of file diff --git a/coverage/lcov-report/services/LLMProviders/OpenRouter/OpenRouterAPI.ts.html b/coverage/lcov-report/services/LLMProviders/OpenRouter/OpenRouterAPI.ts.html deleted file mode 100644 index e55194e5..00000000 --- a/coverage/lcov-report/services/LLMProviders/OpenRouter/OpenRouterAPI.ts.html +++ /dev/null @@ -1,1672 +0,0 @@ - - - - - - Code coverage report for services/LLMProviders/OpenRouter/OpenRouterAPI.ts - - - - - - - - - -
-
-

All files / services/LLMProviders/OpenRouter OpenRouterAPI.ts

-
- -
- 76.81% - Statements - 159/207 -
- - -
- 48.57% - Branches - 34/70 -
- - -
- 93.54% - Functions - 29/31 -
- - -
- 76.61% - Lines - 154/201 -
- - -
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

- -
-
-

-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -18 -19 -20 -21 -22 -23 -24 -25 -26 -27 -28 -29 -30 -31 -32 -33 -34 -35 -36 -37 -38 -39 -40 -41 -42 -43 -44 -45 -46 -47 -48 -49 -50 -51 -52 -53 -54 -55 -56 -57 -58 -59 -60 -61 -62 -63 -64 -65 -66 -67 -68 -69 -70 -71 -72 -73 -74 -75 -76 -77 -78 -79 -80 -81 -82 -83 -84 -85 -86 -87 -88 -89 -90 -91 -92 -93 -94 -95 -96 -97 -98 -99 -100 -101 -102 -103 -104 -105 -106 -107 -108 -109 -110 -111 -112 -113 -114 -115 -116 -117 -118 -119 -120 -121 -122 -123 -124 -125 -126 -127 -128 -129 -130 -131 -132 -133 -134 -135 -136 -137 -138 -139 -140 -141 -142 -143 -144 -145 -146 -147 -148 -149 -150 -151 -152 -153 -154 -155 -156 -157 -158 -159 -160 -161 -162 -163 -164 -165 -166 -167 -168 -169 -170 -171 -172 -173 -174 -175 -176 -177 -178 -179 -180 -181 -182 -183 -184 -185 -186 -187 -188 -189 -190 -191 -192 -193 -194 -195 -196 -197 -198 -199 -200 -201 -202 -203 -204 -205 -206 -207 -208 -209 -210 -211 -212 -213 -214 -215 -216 -217 -218 -219 -220 -221 -222 -223 -224 -225 -226 -227 -228 -229 -230 -231 -232 -233 -234 -235 -236 -237 -238 -239 -240 -241 -242 -243 -244 -245 -246 -247 -248 -249 -250 -251 -252 -253 -254 -255 -256 -257 -258 -259 -260 -261 -262 -263 -264 -265 -266 -267 -268 -269 -270 -271 -272 -273 -274 -275 -276 -277 -278 -279 -280 -281 -282 -283 -284 -285 -286 -287 -288 -289 -290 -291 -292 -293 -294 -295 -296 -297 -298 -299 -300 -301 -302 -303 -304 -305 -306 -307 -308 -309 -310 -311 -312 -313 -314 -315 -316 -317 -318 -319 -320 -321 -322 -323 -324 -325 -326 -327 -328 -329 -330 -331 -332 -333 -334 -335 -336 -337 -338 -339 -340 -341 -342 -343 -344 -345 -346 -347 -348 -349 -350 -351 -352 -353 -354 -355 -356 -357 -358 -359 -360 -361 -362 -363 -364 -365 -366 -367 -368 -369 -370 -371 -372 -373 -374 -375 -376 -377 -378 -379 -380 -381 -382 -383 -384 -385 -386 -387 -388 -389 -390 -391 -392 -393 -394 -395 -396 -397 -398 -399 -400 -401 -402 -403 -404 -405 -406 -407 -408 -409 -410 -411 -412 -413 -414 -415 -416 -417 -418 -419 -420 -421 -422 -423 -424 -425 -426 -427 -428 -429 -430 -431 -432 -433 -434 -435 -436 -437 -438 -439 -440 -441 -442 -443 -444 -445 -446 -447 -448 -449 -450 -451 -452 -453 -454 -455 -456 -457 -458 -459 -460 -461 -462 -463 -464 -465 -466 -467 -468 -469 -470 -471 -472 -473 -474 -475 -476 -477 -478 -479 -480 -481 -482 -483 -484 -485 -486 -487 -488 -489 -490 -491 -492 -493 -494 -495 -496 -497 -498 -499 -500 -501 -502 -503 -504 -505 -506 -507 -508 -509 -510 -511 -512 -513 -514 -515 -516 -517 -518 -519 -520 -521 -522 -523 -524 -525 -526 -527 -528 -529 -530  -  -6x -6x -6x -6x -  -  -  -  -6x -6x -6x -6x -  -  -  -  -6x -6x -6x -6x -  -6x -  -  -7x -7x -  -7x -7x -  -  -  -  -  -  -  -  -  -  -  -  -  -  -6x -  -54x -54x -54x -  -54x -  -  -54x -54x -54x -54x -54x -  -54x -54x -54x -54x -  -54x -54x -  -  -  -54x -54x -  -  -  -  -  -  -  -  -15x -4x -  -  -11x -  -  -  -  -  -  -  -  -  -  -15x -15x -  -15x -  -  -  -  -  -  -  -  -  -  -  -1x -1x -  -1x -1x -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -15x -20x -  -  -20x -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -9x -9x -  -9x -9x -  -9x -  -  -  -  -9x -  -9x -  -  -  -  -  -8x -  -8x -8x -  -8x -8x -8x -  -8x -  -1x -  -  -  -  -  -  -  -  -  -2x -2x -  -2x -  -  -  -1x -  -  -  -16x -  -  -  -3x -3x -  -  -  -  -  -1x -1x -1x -  -  -  -  -  -  -1x -  -  -  -  -  -  -  -  -  -  -  -  -3x -  -  -  -  -3x -  -  -  -  -  -  -  -  -  -  -  -  -3x -  -  -  -  -  -  -7x -7x -1x -  -6x -  -3x -1x -1x -  -  -2x -2x -  -  -  -  -  -  -3x -3x -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -11x -11x -11x -  -  -  -  -4x -  -  -7x -  -7x -1x -  -  -6x -  -  -  -6x -6x -  -  -  -6x -  -6x -  -  -  -  -  -  -  -  -  -  -11x -  -11x -  -  -11x -11x -  -11x -11x -11x -11x -  -  -11x -  -  -  -  -  -  -  -  -6x -6x -  -6x -6x -  -6x -6x -  -6x -  -  -  -  -6x -  -6x -6x -  -  -  -  -  -  -  -  -  -  -  -  -  -4x -4x -  -4x -4x -  -  -  -  -4x -11x -  -  -  -  -11x -  -  -  -11x -1x -  -  -  -  -1x -1x -1x -  -  -10x -6x -6x -  -  -  -4x -4x -  -4x -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -4x -4x -  -  -4x -  -  -4x -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -6x -  -  -2x -2x -  -2x -  -  -  -  -  -  -  -  -6x -  -  -  -  -10x -4x -4x -4x -  -10x -10x -  -  -  -1x -1x -  -  -  -  -  -  - 
// services/LLM/OpenRouterAPI.ts
-/* eslint-disable no-useless-catch */
-import { MessageContextHistory } from "@/services/LLM/context/MessageContextHistory";
-import { MessageContextLimiter } from "@/services/LLM/context/MessageContextLimiter";
-import { MesssageContextTokenCount } from "@/services/LLM/context/MessageContextTokenCount";
-import { openRouterClient } from "@constants/openRouterClient";
-import {
-  IConversationHistoryMessage,
-  ILLMProvider,
-} from "@services/LLM/ILLMProvider";
-import { ModelInfo } from "@services/LLM/ModelInfo";
-import { ModelManager } from "@services/LLM/ModelManager";
-import { ModelScaler } from "@services/LLM/ModelScaler";
-import {
-  formatMessageContent,
-  IMessageContent,
-  isAnthropicModel,
-} from "@services/LLM/utils/ModelUtils";
-import { DebugLogger } from "@services/logging/DebugLogger";
-import { HtmlEntityDecoder } from "@services/text/HTMLEntityDecoder";
-import { inject, singleton } from "tsyringe";
-import { OpenRouterAPICostTracking } from "./OpenRouterAPICostTracking"; // Import the new class
- 
-export class LLMError extends Error {
-  constructor(
-    message: string,
-    public readonly type: string,
-    public readonly details: Record<string, unknown> = {},
-  ) {
-    super(message);
-    this.name = "LLMError";
-  }
-}
- 
-interface IFormattedMessage {
-  role: string;
-  content: string | IMessageContent[];
-}
- 
-interface IStreamError {
-  message?: string;
-  details?: Record<string, unknown>;
-}
- 
-@singleton()
-export class OpenRouterAPI implements ILLMProvider {
-  private readonly httpClient: typeof openRouterClient;
-  private streamBuffer: string = "";
-  private maxRetries: number = 3;
-  private retryDelay: number = 1000;
-  private stream: any;
-  private aborted: boolean = false;
- 
-  constructor(
-    private htmlEntityDecoder: HtmlEntityDecoder,
-    private modelManager: ModelManager,
-    private modelInfo: ModelInfo,
-    private debugLogger: DebugLogger,
-    private modelScaler: ModelScaler,
-    @inject(OpenRouterAPICostTracking)
-    private costTracker: OpenRouterAPICostTracking,
-    private messageContextHistory: MessageContextHistory,
-    private messageContextLimiter: MessageContextLimiter,
-    private messageContextTokenCount: MesssageContextTokenCount,
-  ) {
-    this.httpClient = openRouterClient;
-    this.initializeModelInfo();
-  }
- 
-  private async initializeModelInfo(): Promise<void> {
-    try {
-      await this.modelInfo.initialize();
-    } catch (error) {
-      this.debugLogger.log("Model", "Failed to initialize model info", {
-        error,
-      });
-    }
-  }
- 
-  private getAnthropicHeaders(model: string): Record<string, string> {
-    if (!isAnthropicModel(model)) {
-      return {};
-    }
- 
-    return {
-      "anthropic-beta": "prompt-caching-2024-07-31",
-      "anthropic-version": "2023-06-01",
-    };
-  }
- 
-  private async makeRequest(
-    endpoint: string,
-    data: any,
-    options: any = {},
-  ): Promise<any> {
-    const model = data.model;
-    const headers = this.getAnthropicHeaders(model);
- 
-    return this.httpClient.post(endpoint, data, {
-      ...options,
-      headers: {
-        ...options.headers,
-        ...headers,
-      },
-    });
-  }
- 
-  private async handleLLMError(
-    error: Error | LLMError | unknown,
-  ): Promise<LLMError> {
-    if ((error as any)?.response?.data) {
-      const data = (error as any).response.data;
- 
-      if (data.error?.message) {
-        return new LLMError(data.error.message, "API_ERROR", data.error);
-      }
- 
-      Iif (
-        typeof data.error === "string" &&
-        data.error.includes("context length")
-      ) {
-        const model = this.modelManager.getCurrentModel();
-        const contextLimit = await this.modelInfo.getModelContextLength(model);
-        return new LLMError(
-          "Maximum context length exceeded",
-          "CONTEXT_LENGTH_EXCEEDED",
-          {
-            maxLength: contextLimit,
-            currentLength: this.messageContextTokenCount.getTotalTokenCount(),
-          },
-        );
-      }
-    }
- 
-    Iif (error instanceof LLMError) {
-      return error;
-    }
- 
-    return new LLMError(
-      (error as Error)?.message || "An unknown error occurred",
-      "UNKNOWN_ERROR",
-      { originalError: error },
-    );
-  }
- 
-  private formatMessages(
-    messages: IConversationHistoryMessage[],
-    model: string,
-  ): IFormattedMessage[] {
-    // Filter out messages with empty content before formatting
-    const filteredMessages = messages.filter(
-      (msg) => msg.content?.trim().length > 0,
-    );
- 
-    return filteredMessages.map((msg, index) => ({
-      role: msg.role,
-      content: formatMessageContent(
-        msg.content,
-        model,
-        index,
-        filteredMessages.length,
-      ),
-    }));
-  }
- 
-  async sendMessage(
-    model: string,
-    message: string,
-    options?: Record<string, unknown>,
-  ): Promise<string> {
-    const messages = this.getConversationContext();
-    const currentModel = this.modelManager.getCurrentModel() || model;
- 
-    try {
-      await this.modelInfo.setCurrentModel(currentModel);
- 
-      const formattedMessages = this.formatMessages(
-        [...messages, { role: "user", content: message }],
-        currentModel,
-      );
- 
-      console.log("SENDING", formattedMessages);
- 
-      const response = await this.makeRequest("/chat/completions", {
-        model: currentModel,
-        messages: formattedMessages,
-        ...options,
-      });
- 
-      const assistantMessage = response.data.choices[0].message.content;
- 
-      this.messageContextHistory.addMessage("user", message);
-      this.messageContextHistory.addMessage("assistant", assistantMessage);
- 
-      const priceAll = this.modelInfo.getCurrentModelInfo()?.pricing;
-      const usage = this.modelInfo.getUsageHistory();
-      this.costTracker.logChatCosts(priceAll, usage);
- 
-      return assistantMessage;
-    } catch (error) {
-      throw await this.handleLLMError(error);
-    }
-  }
- 
-  async sendMessageWithContext(
-    model: string,
-    message: string,
-    systemInstructions?: string,
-    options?: Record<string, unknown>,
-  ): Promise<string> {
-    if (systemInstructions) {
-      this.addSystemInstructions(systemInstructions);
-    }
-    return this.sendMessage(model, message, options);
-  }
- 
-  async clearConversationContext(): Promise<void> {
-    this.messageContextHistory.clear();
-  }
- 
-  getConversationContext(): IConversationHistoryMessage[] {
-    return this.messageContextHistory.getMessages();
-  }
- 
-  addSystemInstructions(instructions: string): void {
-    this.messageContextHistory.setSystemInstructions(instructions);
-    this.modelInfo.logCurrentModelUsage(
-      this.messageContextTokenCount.getTotalTokenCount(),
-    );
-  }
- 
-  async getAvailableModels(): Promise<string[]> {
-    try {
-      await this.modelInfo.initialize();
-      return this.modelInfo.getAllModels();
-    } catch (error) {
-      throw await this.handleLLMError(error);
-    }
-  }
- 
-  async validateModel(model: string): Promise<boolean> {
-    return this.modelInfo.isModelAvailable(model);
-  }
- 
-  async getModelInfo(model: string): Promise<Record<string, unknown>> {
-    const info = await this.modelInfo.getModelInfo(model);
-    return info ? ({ ...info } as Record<string, unknown>) : {};
-  }
- 
-  private async handleStreamError(
-    error: LLMError,
-    message: string,
-    callback: (chunk: string, error?: LLMError) => void,
-  ): Promise<void> {
-    this.debugLogger.log("Model", "Stream error", {
-      error: error.type,
-      message,
-    });
- 
-    Iif (error.type === "CONTEXT_LENGTH_EXCEEDED") {
-      const wasContextCleaned =
-        await this.messageContextLimiter.cleanupContext();
-      Iif (wasContextCleaned) {
-        await this.streamMessage(
-          this.modelManager.getCurrentModel(),
-          message,
-          callback,
-        );
-        return;
-      }
-    }
- 
-    callback("", error);
-  }
- 
-  private async retryStreamOperation<T>(
-    operation: () => Promise<T>,
-    retries: number = this.maxRetries,
-  ): Promise<T> {
-    try {
-      if (this.aborted) {
-        throw new LLMError("Aborted", "ABORTED");
-      }
-      return await operation();
-    } catch (error) {
-      if (retries > 0 && this.isRetryableError(error)) {
-        await new Promise((resolve) => setTimeout(resolve, this.retryDelay));
-        return this.retryStreamOperation(operation, retries - 1);
-      }
- 
-      if (error instanceof LLMError) {
-        throw error;
-      }
-      throw await this.handleLLMError(error);
-    }
-  }
- 
-  private isRetryableError(error: unknown): boolean {
-    if (error instanceof LLMError) {
-      return (
-        error.type === "NETWORK_ERROR" ||
-        error.type === "CONTEXT_LENGTH_EXCEEDED" ||
-        error.type === "RATE_LIMIT_EXCEEDED"
-      );
-    }
-    const err = error as { code?: string; message?: string };
-    return !!(
-      err.code === "ECONNRESET" ||
-      err.code === "ETIMEDOUT" ||
-      err.message?.includes("network") ||
-      err.message?.includes("timeout")
-    );
-  }
- 
-  private async processCompleteMessage(message: string): Promise<{
-    content: string;
-    error?: IStreamError;
-  }> {
-    try {
-      const jsonStr = message.replace(/^data: /, "").trim();
-      if (
-        !jsonStr ||
-        jsonStr === "[DONE]" ||
-        (!jsonStr.startsWith("{") && !jsonStr.startsWith("data: {"))
-      ) {
-        return { content: "" };
-      }
- 
-      const parsed = JSON.parse(jsonStr);
- 
-      if (parsed.error) {
-        return { content: "", error: parsed.error };
-      }
- 
-      Iif (parsed.usage) {
-        await this.modelInfo.logDetailedUsage(parsed.usage);
-      }
- 
-      const deltaContent = parsed.choices?.[0]?.delta?.content;
-      Iif (!deltaContent) {
-        return { content: "" };
-      }
- 
-      const decodedContent = this.htmlEntityDecoder.decode(deltaContent);
- 
-      return { content: decodedContent };
-    } catch (e) {
-      this.debugLogger.log("Error", "Error parsing stream chunk", { error: e });
-      return { content: "" };
-    }
-  }
- 
-  private async parseStreamChunk(chunk: string): Promise<{
-    content: string;
-    error?: IStreamError;
-  }> {
-    this.streamBuffer += chunk;
- 
-    let content = "";
-    let error;
- 
-    const messages = this.streamBuffer.split("\n");
-    this.streamBuffer = messages.pop() || "";
- 
-    for (const message of messages) {
-      const result = await this.processCompleteMessage(message);
-      if (result.error) error = result.error;
-      content += result.content;
-    }
- 
-    return { content, error };
-  }
- 
-  async streamMessage(
-    model: string,
-    message: string,
-    callback: (chunk: string, error?: LLMError) => void,
-    options?: Record<string, unknown>,
-  ): Promise<void> {
-    const messages = this.getConversationContext();
-    const currentModel = this.modelManager.getCurrentModel() || model;
- 
-    let assistantMessage = "";
-    this.streamBuffer = "";
- 
-    try {
-      await this.modelInfo.setCurrentModel(currentModel);
- 
-      const formattedMessages = this.formatMessages(
-        [...messages, { role: "user", content: message }],
-        currentModel,
-      );
- 
-      console.log(formattedMessages);
- 
-      const streamOperation = async () => {
-        const response = await this.makeRequest(
-          "/chat/completions",
-          {
-            model: currentModel,
-            messages: formattedMessages,
-            stream: true,
-            ...options,
-          },
-          {
-            responseType: "stream",
-            timeout: 0,
-          },
-        );
- 
-        try {
-          this.stream = response.data;
- 
-          await new Promise<void>((resolve, reject) => {
-            const handleError = (err: Error) => {
-              this.debugLogger.log("Error", "Stream error", { error: err });
-              reject(err);
-            };
- 
-            this.stream.on("data", async (chunk: Buffer) => {
-              Iif (this.aborted) {
-                this.cleanupStream();
-                return;
-              }
- 
-              const { content, error } = await this.parseStreamChunk(
-                chunk.toString(),
-              );
- 
-              if (error) {
-                const llmError = new LLMError(
-                  error.message || "Stream error",
-                  "STREAM_ERROR",
-                  error.details || {},
-                );
-                this.handleStreamError(llmError, message, callback);
-                reject(llmError);
-                return;
-              }
- 
-              if (content) {
-                assistantMessage += content;
-                callback(content);
-              }
-            });
- 
-            this.stream.on("end", async () => {
-              Iif (this.aborted) return;
- 
-              Iif (this.streamBuffer) {
-                const { content, error } = await this.parseStreamChunk(
-                  this.streamBuffer,
-                );
-                Iif (error) {
-                  handleError(
-                    new LLMError(
-                      error.message || "Stream error",
-                      "STREAM_ERROR",
-                      error.details || {},
-                    ),
-                  );
-                  return;
-                }
-                Iif (content) {
-                  assistantMessage += content;
-                  callback(content);
-                }
-              }
-              this.cleanupStream();
-              resolve();
-            });
- 
-            this.stream.on("error", handleError);
-          });
- 
-          Iif (assistantMessage && !this.aborted) {
-            this.messageContextHistory.addMessage("user", message);
-            this.messageContextHistory.addMessage(
-              "assistant",
-              assistantMessage,
-            );
- 
-            const priceAll = this.modelInfo.getCurrentModelInfo()?.pricing;
-            const usage = this.modelInfo.getUsageHistory();
-            this.costTracker.logChatCosts(priceAll, usage);
-          }
-        } catch (error) {
-          throw error;
-        }
-      };
- 
-      await this.retryStreamOperation(streamOperation);
-    } catch (error) {
-      const llmError =
-        error instanceof LLMError ? error : await this.handleLLMError(error);
-      await this.handleStreamError(llmError, message, callback);
- 
-      Iif (assistantMessage && !this.aborted) {
-        this.messageContextHistory.addMessage("user", message);
-        this.messageContextHistory.addMessage("assistant", assistantMessage);
- 
-        const priceAll = this.modelInfo.getCurrentModelInfo()?.pricing;
-        const usage = this.modelInfo.getUsageHistory();
-        this.costTracker.logChatCosts(priceAll, usage);
-      }
-    } finally {
-      this.cleanupStream();
-    }
-  }
- 
-  private cleanupStream(): void {
-    if (this.stream) {
-      this.stream.removeAllListeners();
-      this.stream.destroy();
-      this.stream = null;
-    }
-    this.streamBuffer = "";
-    this.aborted = false;
-  }
- 
-  cancelStream() {
-    this.aborted = true;
-    Iif (this.stream) {
-      this.stream.removeAllListeners();
-      this.stream.destroy();
-      this.stream = null;
-    }
-  }
-}
- 
- -
-
- - - - - - - - \ No newline at end of file diff --git a/coverage/lcov-report/services/LLMProviders/OpenRouter/OpenRouterAPICostTracking.ts.html b/coverage/lcov-report/services/LLMProviders/OpenRouter/OpenRouterAPICostTracking.ts.html deleted file mode 100644 index f025ee46..00000000 --- a/coverage/lcov-report/services/LLMProviders/OpenRouter/OpenRouterAPICostTracking.ts.html +++ /dev/null @@ -1,307 +0,0 @@ - - - - - - Code coverage report for services/LLMProviders/OpenRouter/OpenRouterAPICostTracking.ts - - - - - - - - - -
-
-

All files / services/LLMProviders/OpenRouter OpenRouterAPICostTracking.ts

-
- -
- 60.86% - Statements - 14/23 -
- - -
- 60% - Branches - 3/5 -
- - -
- 75% - Functions - 3/4 -
- - -
- 57.14% - Lines - 12/21 -
- - -
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

- -
-
-

-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -18 -19 -20 -21 -22 -23 -24 -25 -26 -27 -28 -29 -30 -31 -32 -33 -34 -35 -36 -37 -38 -39 -40 -41 -42 -43 -44 -45 -46 -47 -48 -49 -50 -51 -52 -53 -54 -55 -56 -57 -58 -59 -60 -61 -62 -63 -64 -65 -66 -67 -68 -69 -70 -71 -72 -73 -74 -75  -6x -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -6x -  -  -  -8x -8x -  -8x -8x -  -8x -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -8x -  -  -  -  -  -  -  -  -  -8x -8x -  -8x -8x -  -  -  -  -  -  -  - 
// OpenRouterAPICostTracking.ts
-import { autoInjectable } from "tsyringe";
- 
-interface PriceInfo {
-  prompt: string;
-  completion: string;
-  image: string;
-  request: string;
-}
- 
-interface UsageEntry {
-  prompt_tokens: number;
-  completion_tokens: number;
-  total_tokens: number;
-}
- 
-interface UsageHistory {
-  [modelName: string]: UsageEntry[];
-}
- 
-@autoInjectable()
-export class OpenRouterAPICostTracking {
-  constructor() {}
- 
-  private calculateCosts(priceAll: PriceInfo, usage: UsageHistory) {
-    const promptRate = parseFloat(priceAll.prompt);
-    const completionRate = parseFloat(priceAll.completion);
- 
-    let currentCost = 0;
-    let totalCost = 0;
- 
-    for (const modelKey in usage) {
-      const modelUsage = usage[modelKey];
-      Iif (modelUsage.length > 0) {
-        // Calculate total cost for the model
-        const modelTotalCost = modelUsage.reduce((sum, entry) => {
-          const cost =
-            entry.prompt_tokens * promptRate +
-            entry.completion_tokens * completionRate;
-          return sum + cost;
-        }, 0);
- 
-        totalCost += modelTotalCost;
- 
-        // Calculate current cost (last usage entry for the model)
-        const lastUsage = modelUsage[modelUsage.length - 1];
-        currentCost =
-          lastUsage.prompt_tokens * promptRate +
-          lastUsage.completion_tokens * completionRate;
-      }
-    }
- 
-    return {
-      currentCost,
-      totalCost,
-    };
-  }
- 
-  public logChatCosts(
-    priceAll: PriceInfo | undefined,
-    usage: UsageHistory,
-  ): void {
-    if (priceAll && usage) {
-      const { currentCost, totalCost } = this.calculateCosts(priceAll, usage);
- 
-      console.log("Current Chat Cost: $", currentCost.toFixed(10));
-      console.log("Total Chat Cost:   $", totalCost.toFixed(10));
-    } else E{
-      console.log(
-        "PriceInfo or UsageHistory is undefined, cannot calculate costs.",
-      );
-    }
-  }
-}
- 
- -
-
- - - - - - - - \ No newline at end of file diff --git a/coverage/lcov-report/services/LLMProviders/OpenRouter/index.html b/coverage/lcov-report/services/LLMProviders/OpenRouter/index.html deleted file mode 100644 index 266b817b..00000000 --- a/coverage/lcov-report/services/LLMProviders/OpenRouter/index.html +++ /dev/null @@ -1,131 +0,0 @@ - - - - - - Code coverage report for services/LLMProviders/OpenRouter - - - - - - - - - -
-
-

All files services/LLMProviders/OpenRouter

-
- -
- 75.21% - Statements - 173/230 -
- - -
- 49.33% - Branches - 37/75 -
- - -
- 91.42% - Functions - 32/35 -
- - -
- 74.77% - Lines - 166/222 -
- - -
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

- -
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
FileStatementsBranchesFunctionsLines
OpenRouterAPI.ts -
-
76.81%159/20748.57%34/7093.54%29/3176.61%154/201
OpenRouterAPICostTracking.ts -
-
60.86%14/2360%3/575%3/457.14%12/21
-
-
-
- - - - - - - - \ No newline at end of file diff --git a/coverage/lcov-report/services/index.html b/coverage/lcov-report/services/index.html deleted file mode 100644 index 03717c70..00000000 --- a/coverage/lcov-report/services/index.html +++ /dev/null @@ -1,131 +0,0 @@ - - - - - - Code coverage report for services - - - - - - - - - -
-
-

All files services

-
- -
- 86.17% - Statements - 106/123 -
- - -
- 55.88% - Branches - 19/34 -
- - -
- 88.23% - Functions - 15/17 -
- - -
- 87.93% - Lines - 102/116 -
- - -
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

- -
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
FileStatementsBranchesFunctionsLines
ConfigService.ts -
-
100%32/3280%8/10100%4/4100%30/30
CrackedAgent.ts -
-
81.31%74/9145.83%11/2484.61%11/1383.72%72/86
-
-
-
- - - - - - - - \ No newline at end of file diff --git a/coverage/lcov-report/services/logging/DebugLogger.ts.html b/coverage/lcov-report/services/logging/DebugLogger.ts.html deleted file mode 100644 index 85b5a5b8..00000000 --- a/coverage/lcov-report/services/logging/DebugLogger.ts.html +++ /dev/null @@ -1,250 +0,0 @@ - - - - - - Code coverage report for services/logging/DebugLogger.ts - - - - - - - - - -
-
-

All files / services/logging DebugLogger.ts

-
- -
- 89.28% - Statements - 25/28 -
- - -
- 75% - Branches - 3/4 -
- - -
- 100% - Functions - 5/5 -
- - -
- 88% - Lines - 22/25 -
- - -
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

- -
-
-

-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -18 -19 -20 -21 -22 -23 -24 -25 -26 -27 -28 -29 -30 -31 -32 -33 -34 -35 -36 -37 -38 -39 -40 -41 -42 -43 -44 -45 -46 -47 -48 -49 -50 -51 -52 -53 -54 -55 -5632x -32x -  -  -  -32x -103x -  -  -  -  -4x -  -  -  -1x -  -  -  -1x -1x -1x -  -  -  -  -  -  -  -  -  -  -  -  -76x -  -4x -4x -4x -  -4x -4x -4x -  -4x -1x -1x -  -4x -  -1x -1x -  -  -  - 
import { Colors } from "@constants/colors";
-import { autoInjectable, singleton } from "tsyringe";
- 
-@singleton()
-@autoInjectable()
-export class DebugLogger {
-  private debug: boolean = false;
- 
-  constructor() {}
- 
-  setDebug(debug: boolean) {
-    this.debug = debug;
-  }
- 
-  private formatData(data: any): string {
-    Iif (typeof data === "string") {
-      return data;
-    }
- 
-    if (typeof data === "object") {
-      try {
-        return JSON.stringify(data, null, 2)
-          .replace(/\\\\/g, "\\")
-          .replace(/\\"/g, '"')
-          .replace(/\\n/g, "\n");
-      } catch {
-        return String(data);
-      }
-    }
- 
-    return String(data);
-  }
- 
-  log(type: string, message: string, data?: any) {
-    if (!this.debug) return;
- 
-    const timestamp = new Date().toISOString();
-    const divider = "\n" + "═".repeat(100);
-    const subDivider = "─".repeat(80);
- 
-    console.log(divider);
-    console.log(`${Colors.cyan}DEBUG${Colors.reset} [${timestamp}]`);
-    console.log(`${Colors.yellow}${type}${Colors.reset}: ${message}`);
- 
-    if (data) {
-      console.log(`\n${Colors.magenta}Data:${Colors.reset}`);
-      const formattedData = this.formatData(data)
-        .split("\n")
-        .map((line) => `  ${line}`)
-        .join("\n");
-      console.log(`${Colors.blue}${formattedData}${Colors.reset}`);
-      console.log(subDivider);
-    }
-  }
-}
- 
- -
-
- - - - - - - - \ No newline at end of file diff --git a/coverage/lcov-report/services/logging/index.html b/coverage/lcov-report/services/logging/index.html deleted file mode 100644 index cb06e90d..00000000 --- a/coverage/lcov-report/services/logging/index.html +++ /dev/null @@ -1,116 +0,0 @@ - - - - - - Code coverage report for services/logging - - - - - - - - - -
-
-

All files services/logging

-
- -
- 89.28% - Statements - 25/28 -
- - -
- 75% - Branches - 3/4 -
- - -
- 100% - Functions - 5/5 -
- - -
- 88% - Lines - 22/25 -
- - -
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

- -
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
FileStatementsBranchesFunctionsLines
DebugLogger.ts -
-
89.28%25/2875%3/4100%5/588%22/25
-
-
-
- - - - - - - - \ No newline at end of file diff --git a/coverage/lcov-report/services/streaming/InteractiveSessionManager.ts.html b/coverage/lcov-report/services/streaming/InteractiveSessionManager.ts.html deleted file mode 100644 index 47153013..00000000 --- a/coverage/lcov-report/services/streaming/InteractiveSessionManager.ts.html +++ /dev/null @@ -1,490 +0,0 @@ - - - - - - Code coverage report for services/streaming/InteractiveSessionManager.ts - - - - - - - - - -
-
-

All files / services/streaming InteractiveSessionManager.ts

-
- -
- 7.69% - Statements - 6/78 -
- - -
- 0% - Branches - 0/26 -
- - -
- 0% - Functions - 0/11 -
- - -
- 5.55% - Lines - 4/72 -
- - -
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

- -
-
-

-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -18 -19 -20 -21 -22 -23 -24 -25 -26 -27 -28 -29 -30 -31 -32 -33 -34 -35 -36 -37 -38 -39 -40 -41 -42 -43 -44 -45 -46 -47 -48 -49 -50 -51 -52 -53 -54 -55 -56 -57 -58 -59 -60 -61 -62 -63 -64 -65 -66 -67 -68 -69 -70 -71 -72 -73 -74 -75 -76 -77 -78 -79 -80 -81 -82 -83 -84 -85 -86 -87 -88 -89 -90 -91 -92 -93 -94 -95 -96 -97 -98 -99 -100 -101 -102 -103 -104 -105 -106 -107 -108 -109 -110 -111 -112 -113 -114 -115 -116 -117 -118 -119 -120 -121 -122 -123 -124 -125 -126 -127 -128 -129 -130 -131 -132 -133 -134 -135 -136  -1x -  -1x -1x -  -  -1x -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  - 
import { CrackedAgent } from "@services/CrackedAgent";
-import { OpenRouterAPI } from "@services/LLMProviders/OpenRouter/OpenRouterAPI";
-import * as readline from "readline";
-import { singleton } from "tsyringe";
-import * as tty from "tty";
- 
-@singleton()
-export class InteractiveSessionManager {
-  private currentMessage: string = "";
-  private keypressHandler: ((buffer: Buffer) => void) | null = null;
-  private lineHandler: ((input: string) => void) | null = null;
-  private closeHandler: (() => void) | null = null;
-  private rl: readline.Interface | null = null;
-  private agent: CrackedAgent | null = null;
-  private options: any = null;
- 
-  constructor(private openRouterAPI: OpenRouterAPI) {}
- 
-  public initialize(rl: readline.Interface, agent: CrackedAgent, options: any) {
-    this.rl = rl;
-    this.agent = agent;
-    this.options = options;
-  }
- 
-  private setupKeypressHandling() {
-    Iif (!this.rl) return;
- 
-    Iif (process.stdin instanceof tty.ReadStream) {
-      process.stdin.setRawMode(true);
-      process.stdin.resume();
- 
-      this.keypressHandler = async (buffer: Buffer) => {
-        const key = buffer.toString();
-        Iif (key === "\u001B") {
-          // Escape key
-          this.openRouterAPI.cancelStream();
-          console.log("\nStreaming cancelled.");
-          await this.restartSession();
-        }
-      };
- 
-      process.stdin.on("data", this.keypressHandler);
-    }
-  }
- 
-  private async restartSession() {
-    Iif (!this.rl) return;
- 
-    console.log("Please type your new prompt and press enter...");
-    this.rl.prompt();
- 
-    // If we have a current message, restart with it
-    if (this.currentMessage) {
-      await this.handleInput(this.currentMessage);
-    } else {
-      // Otherwise, prompt for new input
-      this.rl.prompt();
-    }
-  }
- 
-  private async handleInput(input: string) {
-    Iif (!this.rl || !this.agent || !this.options) return;
- 
-    Iif (input.toLowerCase() === "exit") {
-      console.log("Goodbye!");
-      this.cleanup();
-      process.exit(0);
-    }
- 
-    this.currentMessage = input;
- 
-    try {
-      const result = await this.agent.execute(input, this.options);
-      Iif (!this.options.stream && result) {
-        console.log("\nResponse:", result.response);
-        Iif (result.actions?.length) {
-          console.log("\nExecuted Actions:");
-          result.actions.forEach(({ action, result }) => {
-            console.log(`\nAction: ${action}`);
-            console.log(`Result: ${JSON.stringify(result, null, 2)}`);
-          });
-        }
-      }
-    } catch (error) {
-      console.error("Error:", (error as Error).message);
-    }
- 
-    this.rl.prompt();
-  }
- 
-  public async start() {
-    Iif (!this.rl) return;
- 
-    console.log(
-      'Interactive mode started. Type "exit" or press Ctrl+C to quit.',
-    );
-    this.setupKeypressHandling();
-    this.rl.prompt();
- 
-    this.lineHandler = async (input: string) => {
-      await this.handleInput(input);
-    };
- 
-    this.closeHandler = () => {
-      this.cleanup();
-      process.exit(0);
-    };
- 
-    this.rl.on("line", this.lineHandler);
-    this.rl.on("close", this.closeHandler);
-  }
- 
-  public cleanup() {
-    Iif (this.keypressHandler && process.stdin instanceof tty.ReadStream) {
-      process.stdin.removeListener("data", this.keypressHandler);
-      process.stdin.setRawMode(false);
-    }
- 
-    Iif (this.lineHandler && this.rl) {
-      this.rl.removeListener("line", this.lineHandler);
-    }
- 
-    Iif (this.closeHandler && this.rl) {
-      this.rl.removeListener("close", this.closeHandler);
-    }
- 
-    Iif (this.rl) {
-      this.rl.close();
-      this.rl = null;
-    }
- 
-    this.agent = null;
-    this.options = null;
-  }
-}
- 
- -
-
- - - - - - - - \ No newline at end of file diff --git a/coverage/lcov-report/services/streaming/StreamHandler.ts.html b/coverage/lcov-report/services/streaming/StreamHandler.ts.html deleted file mode 100644 index 5bceb101..00000000 --- a/coverage/lcov-report/services/streaming/StreamHandler.ts.html +++ /dev/null @@ -1,1162 +0,0 @@ - - - - - - Code coverage report for services/streaming/StreamHandler.ts - - - - - - - - - -
-
-

All files / services/streaming StreamHandler.ts

-
- -
- 66.9% - Statements - 95/142 -
- - -
- 33.33% - Branches - 13/39 -
- - -
- 68.75% - Functions - 11/16 -
- - -
- 66.18% - Lines - 92/139 -
- - -
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

- -
-
-

-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -18 -19 -20 -21 -22 -23 -24 -25 -26 -27 -28 -29 -30 -31 -32 -33 -34 -35 -36 -37 -38 -39 -40 -41 -42 -43 -44 -45 -46 -47 -48 -49 -50 -51 -52 -53 -54 -55 -56 -57 -58 -59 -60 -61 -62 -63 -64 -65 -66 -67 -68 -69 -70 -71 -72 -73 -74 -75 -76 -77 -78 -79 -80 -81 -82 -83 -84 -85 -86 -87 -88 -89 -90 -91 -92 -93 -94 -95 -96 -97 -98 -99 -100 -101 -102 -103 -104 -105 -106 -107 -108 -109 -110 -111 -112 -113 -114 -115 -116 -117 -118 -119 -120 -121 -122 -123 -124 -125 -126 -127 -128 -129 -130 -131 -132 -133 -134 -135 -136 -137 -138 -139 -140 -141 -142 -143 -144 -145 -146 -147 -148 -149 -150 -151 -152 -153 -154 -155 -156 -157 -158 -159 -160 -161 -162 -163 -164 -165 -166 -167 -168 -169 -170 -171 -172 -173 -174 -175 -176 -177 -178 -179 -180 -181 -182 -183 -184 -185 -186 -187 -188 -189 -190 -191 -192 -193 -194 -195 -196 -197 -198 -199 -200 -201 -202 -203 -204 -205 -206 -207 -208 -209 -210 -211 -212 -213 -214 -215 -216 -217 -218 -219 -220 -221 -222 -223 -224 -225 -226 -227 -228 -229 -230 -231 -232 -233 -234 -235 -236 -237 -238 -239 -240 -241 -242 -243 -244 -245 -246 -247 -248 -249 -250 -251 -252 -253 -254 -255 -256 -257 -258 -259 -260 -261 -262 -263 -264 -265 -266 -267 -268 -269 -270 -271 -272 -273 -274 -275 -276 -277 -278 -279 -280 -281 -282 -283 -284 -285 -286 -287 -288 -289 -290 -291 -292 -293 -294 -295 -296 -297 -298 -299 -300 -301 -302 -303 -304 -305 -306 -307 -308 -309 -310 -311 -312 -313 -314 -315 -316 -317 -318 -319 -320 -321 -322 -323 -324 -325 -326 -327 -328 -329 -330 -331 -332 -333 -334 -335 -336 -337 -338 -339 -340 -341 -342 -343 -344 -345 -346 -347 -348 -349 -350 -351 -352 -353 -354 -355 -356 -357 -358 -359 -3603x -  -3x -3x -  -3x -  -3x -3x -3x -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -3x -30x -30x -30x -30x -30x -  -  -30x -30x -  -  -  -2x -2x -2x -2x -2x -2x -  -  -  -  -  -  -  -1x -  -  -1x -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -1x -  -  -  -  -  -  -  -  -  -1x -  -1x -1x -1x -1x -  -1x -1x -  -1x -1x -1x -1x -  -  -1x -1x -  -  -1x -  -  -  -34x -34x -  -  -  -  -  -  -3x -3x -  -  -  -  -  -  -  -  -3x -3x -  -  -  -  -  -  -  -  -9x -  -8x -8x -  -8x -8x -8x -8x -  -  -8x -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -9x -9x -  -  -  -  -  -  -  -  -  -  -  -  -14x -4x -4x -  -  -  -  -  -  -  -  -  -  -  -  -  -9x -9x -  -9x -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -9x -  -9x -9x -  -  -  -  -  -  -  -  -  -9x -9x -9x -9x -  -  -9x -  -  -  -9x -5x -5x -5x -  -  -9x -4x -  -4x -4x -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -3x -3x -3x -  -  -3x -3x -3x -3x -3x -  -3x -  -3x -  -1x -1x -  -  -1x -  -  -  -  -  -  -  -1x -1x -  -  -  -5x -  -  - 
import { ActionsParser } from "@services/LLM/actions/ActionsParser";
- 
-import { DebugLogger } from "@services/logging/DebugLogger";
-import { autoInjectable } from "tsyringe";
-import { WriteStream } from "tty";
-import { LLMError } from "../LLMProviders/OpenRouter/OpenRouterAPI";
- 
-const MAX_BUFFER_SIZE = 10 * 1024 * 1024; // 10MB default max buffer size
-const CHUNK_SIZE = 1024 * 1024; // 1MB chunk size for processing
-const STREAM_TIMEOUT = 10000; // 10 seconds timeout for inactivity
- 
-export interface StreamCallback {
-  (message: string): Promise<string>;
-}
- 
-export interface StreamChunkCallback {
-  (chunk: string, error?: LLMError): void;
-}
- 
-interface ErrorDisplay {
-  title: string;
-  details: string;
-  suggestion?: string;
-}
- 
-@autoInjectable()
-export class StreamHandler {
-  private responseBuffer: string = "";
-  private isStreamComplete: boolean = false;
-  private lastActivityTimestamp: number = Date.now();
-  private bufferSize: number = 0;
-  private inactivityTimer: NodeJS.Timeout | null = null;
- 
-  constructor(
-    private debugLogger: DebugLogger,
-    private actionsParser: ActionsParser,
-  ) {}
- 
-  reset() {
-    this.responseBuffer = "";
-    this.isStreamComplete = false;
-    this.lastActivityTimestamp = Date.now();
-    this.bufferSize = 0;
-    this.actionsParser.reset();
-    this.clearInactivityTimer();
-  }
- 
-  get response() {
-    return this.responseBuffer;
-  }
- 
-  private formatErrorDisplay(error: LLMError): ErrorDisplay {
-    Iif (!error)
-      return { title: "Unknown Error", details: "An unknown error occurred" };
- 
-    switch (error.type) {
-      case "CONTEXT_LENGTH_EXCEEDED":
-        return {
-          title: "Context Length Exceeded",
-          details: `Maximum context length (${error.details?.maxLength} tokens) exceeded. Current length: ${error.details?.currentLength} tokens.`,
-          suggestion:
-            "Try reducing the conversation history or splitting your request into smaller chunks.",
-        };
-      case "RATE_LIMIT_EXCEEDED":
-        return {
-          title: "Rate Limit Exceeded",
-          details: `API rate limit reached.${
-            error.details?.retryAfter
-              ? ` Try again in ${error.details.retryAfter} seconds.`
-              : ""
-          }`,
-          suggestion: "Please wait before making another request.",
-        };
-      case "MODEL_ERROR":
-        return {
-          title: "Model Error",
-          details: `Error with model${
-            error.details?.modelId ? ` ${error.details.modelId}` : ""
-          }: ${error.message}`,
-          suggestion:
-            "Try using a different model or reducing the complexity of your request.",
-        };
-      case "INSUFFICIENT_QUOTA":
-        return {
-          title: "Insufficient Token Budget",
-          details: `Required: ${error.details?.required}, Available: ${error.details?.available}`,
-          suggestion: "Please check your API quota or upgrade your plan.",
-        };
-      case "NETWORK_ERROR":
-        return {
-          title: "Network Error",
-          details: error.message,
-          suggestion: "Check your internet connection and try again.",
-        };
-      case "STREAM_TIMEOUT":
-        return {
-          title: "Stream Timeout",
-          details: "The stream was inactive for too long.",
-          suggestion:
-            "Try your request again. If the issue persists, try reducing the complexity of your request.",
-        };
-      case "STREAM_ERROR":
-        return {
-          title: "Stream Error",
-          details: error.message,
-          suggestion:
-            "Try your request again with a different prompt or model.",
-        };
-      case "BUFFER_OVERFLOW":
-        return {
-          title: "Buffer Overflow",
-          details: "The stream buffer has exceeded its maximum size limit.",
-          suggestion:
-            "Try processing the stream in smaller chunks or increase the buffer size limit.",
-        };
-      default:
-        return {
-          title: "Error",
-          details: error.message || "An unexpected error occurred",
-          suggestion:
-            "Try your request again. If the issue persists, try with different parameters.",
-        };
-    }
-  }
- 
-  private displayError(error: LLMError) {
-    const { title, details, suggestion } = this.formatErrorDisplay(error);
- 
-    this.safeWriteToStdout("\n\n");
-    this.safeWriteToStdout("\x1b[31m"); // Red color
-    this.safeWriteToStdout(`❌ ${title}\n`);
-    this.safeWriteToStdout("\x1b[0m"); // Reset color
- 
-    this.safeWriteToStdout("\x1b[37m"); // Light gray color
-    this.safeWriteToStdout(`${details}\n`);
- 
-    if (suggestion) {
-      this.safeWriteToStdout("\n");
-      this.safeWriteToStdout("\x1b[36m"); // Cyan color
-      this.safeWriteToStdout(`💡 ${suggestion}\n`);
-    }
- 
-    this.safeWriteToStdout("\x1b[0m"); // Reset color
-    this.safeWriteToStdout("\n");
- 
-    // Log error to debug logger
-    this.debugLogger.log("Error", details, { title, suggestion });
-  }
- 
-  private safeWriteToStdout(text: string) {
-    try {
-      process.stdout.write(text);
-    } catch (error) {
-      console.error("Error writing to stdout", error);
-    }
-  }
- 
-  private safeClearLine() {
-    try {
-      Iif ((process.stdout as WriteStream).clearLine) {
-        (process.stdout as WriteStream).clearLine(0);
-      }
-    } catch (error) {
-      console.error("Error clearing line", error);
-    }
-  }
- 
-  private safeCursorTo(x: number) {
-    try {
-      Iif ((process.stdout as WriteStream).cursorTo) {
-        (process.stdout as WriteStream).cursorTo(x);
-      }
-    } catch (error) {
-      console.error("Error moving cursor", error);
-    }
-  }
- 
-  private processChunk(chunk: string): string[] {
-    if (!chunk) return [""];
- 
-    const chunks: string[] = [];
-    let remainingChunk = chunk;
- 
-    while (remainingChunk.length > 0) {
-      const chunkToProcess = remainingChunk.slice(0, CHUNK_SIZE);
-      chunks.push(chunkToProcess);
-      remainingChunk = remainingChunk.slice(CHUNK_SIZE);
-    }
- 
-    return chunks;
-  }
- 
-  private handleBufferOverflow() {
-    // Keep the last 1MB of data when overflow occurs
-    const keepSize = 1024 * 1024;
-    this.responseBuffer = this.responseBuffer.slice(-keepSize);
-    this.bufferSize = this.responseBuffer.length;
-    this.actionsParser.clearBuffer();
-    this.actionsParser.appendToBuffer(this.responseBuffer);
- 
-    this.debugLogger.log("Buffer Overflow", "Buffer size limit exceeded", {
-      maxSize: MAX_BUFFER_SIZE,
-      currentSize: this.bufferSize,
-    });
-  }
- 
-  private startInactivityTimer() {
-    this.clearInactivityTimer();
-    this.inactivityTimer = setTimeout(() => {
-      this.displayError(
-        new LLMError(
-          "The stream was inactive for too long.",
-          "STREAM_TIMEOUT",
-          { timeout: STREAM_TIMEOUT },
-        ),
-      );
-      this.reset();
-    }, STREAM_TIMEOUT);
-  }
- 
-  private clearInactivityTimer() {
-    if (this.inactivityTimer) {
-      clearTimeout(this.inactivityTimer);
-      this.inactivityTimer = null;
-    }
-  }
- 
-  async handleChunk(
-    chunk: string,
-    model: string,
-    llmCallback: StreamCallback,
-    streamCallback: (
-      message: string,
-      callback: StreamChunkCallback,
-    ) => Promise<void>,
-    options?: Record<string, unknown>,
-  ) {
-    this.lastActivityTimestamp = Date.now();
-    this.startInactivityTimer();
- 
-    Iif (chunk.startsWith('{"error":')) {
-      try {
-        const error = JSON.parse(chunk).error;
-        const llmError = new LLMError(
-          error.message || "Unknown error",
-          error.type || "UNKNOWN_ERROR",
-          error.details,
-        );
-        this.displayError(llmError);
-        return [];
-      } catch (e) {
-        this.displayError(
-          new LLMError("Unknown error", "UNKNOWN_ERROR", { originalError: e }),
-        );
-        return [];
-      }
-    }
- 
-    const chunks = this.processChunk(chunk);
- 
-    for (const subChunk of chunks) {
-      Iif (this.bufferSize + subChunk.length > MAX_BUFFER_SIZE) {
-        this.handleBufferOverflow();
-        this.displayError(
-          new LLMError("Buffer size limit exceeded", "BUFFER_OVERFLOW", {
-            maxSize: MAX_BUFFER_SIZE,
-            currentSize: this.bufferSize,
-          }),
-        );
-      }
- 
-      this.safeWriteToStdout(subChunk);
-      this.actionsParser.appendToBuffer(subChunk);
-      this.responseBuffer += subChunk;
-      this.bufferSize += subChunk.length;
-    }
- 
-    const isMessageComplete = this.actionsParser.isCompleteMessage(
-      this.actionsParser.buffer,
-    );
- 
-    if (!this.actionsParser.isComplete && isMessageComplete) {
-      this.actionsParser.isComplete = true;
-      this.isStreamComplete = true;
-      this.safeWriteToStdout("\n");
-    }
- 
-    if (this.isStreamComplete && !this.actionsParser.isProcessing) {
-      this.actionsParser.isProcessing = true;
- 
-      try {
-        const actionResult = await this.actionsParser.parseAndExecuteActions(
-          this.actionsParser.buffer,
-          model,
-          async (message) => {
-            let actionResponse = "";
-            await streamCallback(message, (chunk: string, error?: LLMError) => {
-              Iif (error) {
-                this.displayError(error);
-                return;
-              }
-              this.safeWriteToStdout(chunk);
-              actionResponse += chunk;
-              this.lastActivityTimestamp = Date.now();
-            });
- 
-            Iif (this.bufferSize + actionResponse.length > MAX_BUFFER_SIZE) {
-              this.handleBufferOverflow();
-              this.displayError(
-                new LLMError(
-                  "Buffer size limit exceeded after action",
-                  "BUFFER_OVERFLOW",
-                  { maxSize: MAX_BUFFER_SIZE, currentSize: this.bufferSize },
-                ),
-              );
-            }
- 
-            this.responseBuffer += actionResponse;
-            this.bufferSize += actionResponse.length;
-            return actionResponse;
-          },
-        );
- 
-        // Properly reset state after action execution
-        this.actionsParser.reset();
-        this.isStreamComplete = false;
-        this.bufferSize = 0;
- 
-        // Refresh terminal state for new input
-        this.safeWriteToStdout("\n");
-        this.safeWriteToStdout("\x1B[?25h"); // Show cursor
-        this.safeClearLine();
-        this.safeCursorTo(0);
-        this.safeWriteToStdout("> ");
- 
-        this.clearInactivityTimer();
- 
-        return actionResult.actions;
-      } catch (error) {
-        this.debugLogger.log("Error", "Error processing actions", { error });
-        Iif (error instanceof LLMError) {
-          this.displayError(error);
-        } else {
-          this.displayError(
-            new LLMError(
-              error.message || "Unknown error during action execution",
-              "ACTION_ERROR",
-              { originalError: error },
-            ),
-          );
-        }
-        this.reset();
-        return [];
-      }
-    }
- 
-    return [];
-  }
-}
- 
- -
-
- - - - - - - - \ No newline at end of file diff --git a/coverage/lcov-report/services/streaming/index.html b/coverage/lcov-report/services/streaming/index.html deleted file mode 100644 index 77289a57..00000000 --- a/coverage/lcov-report/services/streaming/index.html +++ /dev/null @@ -1,131 +0,0 @@ - - - - - - Code coverage report for services/streaming - - - - - - - - - -
-
-

All files services/streaming

-
- -
- 45.9% - Statements - 101/220 -
- - -
- 20% - Branches - 13/65 -
- - -
- 40.74% - Functions - 11/27 -
- - -
- 45.49% - Lines - 96/211 -
- - -
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

- -
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
FileStatementsBranchesFunctionsLines
InteractiveSessionManager.ts -
-
7.69%6/780%0/260%0/115.55%4/72
StreamHandler.ts -
-
66.9%95/14233.33%13/3968.75%11/1666.18%92/139
-
-
-
- - - - - - - - \ No newline at end of file diff --git a/coverage/lcov-report/services/text/AnsiStripper.ts.html b/coverage/lcov-report/services/text/AnsiStripper.ts.html deleted file mode 100644 index 8ca98958..00000000 --- a/coverage/lcov-report/services/text/AnsiStripper.ts.html +++ /dev/null @@ -1,166 +0,0 @@ - - - - - - Code coverage report for services/text/AnsiStripper.ts - - - - - - - - - -
-
-

All files / services/text AnsiStripper.ts

-
- -
- 85.71% - Statements - 6/7 -
- - -
- 0% - Branches - 0/1 -
- - -
- 100% - Functions - 1/1 -
- - -
- 83.33% - Lines - 5/6 -
- - -
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

- -
-
-

-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -18 -19 -20 -21 -22 -23 -24 -25 -26 -27 -28  -  -16x -  -  -  -  -  -  -  -16x -  -16x -  -  -  -  -  -  -  -  -11x -  -  -11x -  -  - 
/* eslint-disable no-control-regex */
- 
-import { autoInjectable } from "tsyringe";
- 
-/**
- * AnsiStripper Class
- *
- * This class provides functionality to remove ANSI escape codes from strings.
- */
-@autoInjectable()
-export class AnsiStripper {
-  // Regular expression to match ANSI escape codes
-  private static readonly ansiRegex: RegExp = /\x1B\[[0-?]*[ -/]*[@-~]/g;
- 
-  /**
-   * Strips ANSI escape codes from the input string.
-   *
-   * @param input - The string potentially containing ANSI escape codes.
-   * @returns The cleaned string without ANSI codes.
-   */
-  public strip(input: string): string {
-    Iif (typeof input !== "string") {
-      throw new TypeError("Input must be a string");
-    }
-    return input.replace(AnsiStripper.ansiRegex, "");
-  }
-}
- 
- -
-
- - - - - - - - \ No newline at end of file diff --git a/coverage/lcov-report/services/text/HTMLEntityDecoder.ts.html b/coverage/lcov-report/services/text/HTMLEntityDecoder.ts.html deleted file mode 100644 index b8af7fda..00000000 --- a/coverage/lcov-report/services/text/HTMLEntityDecoder.ts.html +++ /dev/null @@ -1,292 +0,0 @@ - - - - - - Code coverage report for services/text/HTMLEntityDecoder.ts - - - - - - - - - -
-
-

All files / services/text HTMLEntityDecoder.ts

-
- -
- 100% - Statements - 19/19 -
- - -
- 91.66% - Branches - 11/12 -
- - -
- 100% - Functions - 3/3 -
- - -
- 100% - Lines - 17/17 -
- - -
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

- -
-
-

-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -18 -19 -20 -21 -22 -23 -24 -25 -26 -27 -28 -29 -30 -31 -32 -33 -34 -35 -36 -37 -38 -39 -40 -41 -42 -43 -44 -45 -46 -47 -48 -49 -50 -51 -52 -53 -54 -55 -56 -57 -58 -59 -60 -61 -62 -63 -64 -65 -66 -67 -68 -69 -7020x -20x -  -  -  -  -  -  -  -20x -  -  -  -  -  -  -  -8x -1x -  -  -7x -  -  -7x -6x -  -  -  -7x -  -  -  -  -  -  -  -  -  -14x -31x -  -2x -2x -  -  -  -29x -  -  -  -  -  -  -  -  -  -  -  -  -29x -18x -  -  -  -11x -  -  -  - 
import he from "he";
-import { injectable } from "tsyringe";
- 
-interface IHtmlEntityDecoderOptions {
-  unescape?: boolean;
-  unescapeChars?: string[];
-}
- 
-@injectable()
-export class HtmlEntityDecoder {
-  /**
-   * Decodes HTML entities and cleans up character escaping in the provided text.
-   * @param text The string containing HTML entities and escaped characters.
-   * @param options Configuration options for decoding
-   * @returns The decoded and unescaped string.
-   */
-  decode(text: string, options?: IHtmlEntityDecoderOptions): string {
-    if (!text) {
-      return "";
-    }
- 
-    let result = text;
- 
-    // Always unescape if unescapeChars are provided, regardless of unescape option
-    if (options?.unescapeChars?.length || options?.unescape) {
-      result = this.unescapeString(result, options?.unescapeChars);
-    }
- 
-    // Step 2: Decode HTML entities
-    return he.decode(result);
-  }
- 
-  /**
-   * Unescapes specific backslash-escaped characters in a string.
-   * @param str The string with escaped characters.
-   * @param chars Optional array of specific characters to unescape
-   * @returns The unescaped string.
-   */
-  private unescapeString(str: string, chars?: string[]): string {
-    return str.replace(/\\u([0-9a-fA-F]{4})|\\(.)/g, (match, unicode, char) => {
-      if (unicode) {
-        // Handle Unicode escape sequences
-        const code = parseInt(unicode, 16);
-        return String.fromCharCode(code);
-      }
- 
-      // Special characters map for escaped sequences
-      const specialCharMap: { [key: string]: string } = {
-        n: "\n",
-        t: "\t",
-        r: "\r",
-        b: "\b",
-        f: "\f",
-        '"': '"',
-        "'": "'",
-        "\\": "\\",
-        "/": "/",
-      };
- 
-      // If specific chars are provided, only unescape those
-      if (chars) {
-        return chars.includes(char) ? specialCharMap[char] || char : match;
-      }
- 
-      // Handle other escaped characters when no specific chars are provided
-      return specialCharMap[char] || char;
-    });
-  }
-}
- 
- -
-
- - - - - - - - \ No newline at end of file diff --git a/coverage/lcov-report/services/text/index.html b/coverage/lcov-report/services/text/index.html deleted file mode 100644 index 29b435b4..00000000 --- a/coverage/lcov-report/services/text/index.html +++ /dev/null @@ -1,131 +0,0 @@ - - - - - - Code coverage report for services/text - - - - - - - - - -
-
-

All files services/text

-
- -
- 96.15% - Statements - 25/26 -
- - -
- 84.61% - Branches - 11/13 -
- - -
- 100% - Functions - 4/4 -
- - -
- 95.65% - Lines - 22/23 -
- - -
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

- -
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
FileStatementsBranchesFunctionsLines
AnsiStripper.ts -
-
85.71%6/70%0/1100%1/183.33%5/6
HTMLEntityDecoder.ts -
-
100%19/1991.66%11/12100%3/3100%17/17
-
-
-
- - - - - - - - \ No newline at end of file diff --git a/coverage/lcov-report/sort-arrow-sprite.png b/coverage/lcov-report/sort-arrow-sprite.png deleted file mode 100644 index 6ed68316..00000000 Binary files a/coverage/lcov-report/sort-arrow-sprite.png and /dev/null differ diff --git a/coverage/lcov-report/sorter.js b/coverage/lcov-report/sorter.js deleted file mode 100644 index 2bb296a8..00000000 --- a/coverage/lcov-report/sorter.js +++ /dev/null @@ -1,196 +0,0 @@ -/* eslint-disable */ -var addSorting = (function() { - 'use strict'; - var cols, - currentSort = { - index: 0, - desc: false - }; - - // returns the summary table element - function getTable() { - return document.querySelector('.coverage-summary'); - } - // returns the thead element of the summary table - function getTableHeader() { - return getTable().querySelector('thead tr'); - } - // returns the tbody element of the summary table - function getTableBody() { - return getTable().querySelector('tbody'); - } - // returns the th element for nth column - function getNthColumn(n) { - return getTableHeader().querySelectorAll('th')[n]; - } - - function onFilterInput() { - const searchValue = document.getElementById('fileSearch').value; - const rows = document.getElementsByTagName('tbody')[0].children; - for (let i = 0; i < rows.length; i++) { - const row = rows[i]; - if ( - row.textContent - .toLowerCase() - .includes(searchValue.toLowerCase()) - ) { - row.style.display = ''; - } else { - row.style.display = 'none'; - } - } - } - - // loads the search box - function addSearchBox() { - var template = document.getElementById('filterTemplate'); - var templateClone = template.content.cloneNode(true); - templateClone.getElementById('fileSearch').oninput = onFilterInput; - template.parentElement.appendChild(templateClone); - } - - // loads all columns - function loadColumns() { - var colNodes = getTableHeader().querySelectorAll('th'), - colNode, - cols = [], - col, - i; - - for (i = 0; i < colNodes.length; i += 1) { - colNode = colNodes[i]; - col = { - key: colNode.getAttribute('data-col'), - sortable: !colNode.getAttribute('data-nosort'), - type: colNode.getAttribute('data-type') || 'string' - }; - cols.push(col); - if (col.sortable) { - col.defaultDescSort = col.type === 'number'; - colNode.innerHTML = - colNode.innerHTML + ''; - } - } - return cols; - } - // attaches a data attribute to every tr element with an object - // of data values keyed by column name - function loadRowData(tableRow) { - var tableCols = tableRow.querySelectorAll('td'), - colNode, - col, - data = {}, - i, - val; - for (i = 0; i < tableCols.length; i += 1) { - colNode = tableCols[i]; - col = cols[i]; - val = colNode.getAttribute('data-value'); - if (col.type === 'number') { - val = Number(val); - } - data[col.key] = val; - } - return data; - } - // loads all row data - function loadData() { - var rows = getTableBody().querySelectorAll('tr'), - i; - - for (i = 0; i < rows.length; i += 1) { - rows[i].data = loadRowData(rows[i]); - } - } - // sorts the table using the data for the ith column - function sortByIndex(index, desc) { - var key = cols[index].key, - sorter = function(a, b) { - a = a.data[key]; - b = b.data[key]; - return a < b ? -1 : a > b ? 1 : 0; - }, - finalSorter = sorter, - tableBody = document.querySelector('.coverage-summary tbody'), - rowNodes = tableBody.querySelectorAll('tr'), - rows = [], - i; - - if (desc) { - finalSorter = function(a, b) { - return -1 * sorter(a, b); - }; - } - - for (i = 0; i < rowNodes.length; i += 1) { - rows.push(rowNodes[i]); - tableBody.removeChild(rowNodes[i]); - } - - rows.sort(finalSorter); - - for (i = 0; i < rows.length; i += 1) { - tableBody.appendChild(rows[i]); - } - } - // removes sort indicators for current column being sorted - function removeSortIndicators() { - var col = getNthColumn(currentSort.index), - cls = col.className; - - cls = cls.replace(/ sorted$/, '').replace(/ sorted-desc$/, ''); - col.className = cls; - } - // adds sort indicators for current column being sorted - function addSortIndicators() { - getNthColumn(currentSort.index).className += currentSort.desc - ? ' sorted-desc' - : ' sorted'; - } - // adds event listeners for all sorter widgets - function enableUI() { - var i, - el, - ithSorter = function ithSorter(i) { - var col = cols[i]; - - return function() { - var desc = col.defaultDescSort; - - if (currentSort.index === i) { - desc = !currentSort.desc; - } - sortByIndex(i, desc); - removeSortIndicators(); - currentSort.index = i; - currentSort.desc = desc; - addSortIndicators(); - }; - }; - for (i = 0; i < cols.length; i += 1) { - if (cols[i].sortable) { - // add the click event handler on the th so users - // dont have to click on those tiny arrows - el = getNthColumn(i).querySelector('.sorter').parentElement; - if (el.addEventListener) { - el.addEventListener('click', ithSorter(i)); - } else { - el.attachEvent('onclick', ithSorter(i)); - } - } - } - } - // adds sorting functionality to the UI - return function() { - if (!getTable()) { - return; - } - cols = loadColumns(); - loadData(); - addSearchBox(); - addSortIndicators(); - enableUI(); - }; -})(); - -window.addEventListener('load', addSorting); diff --git a/coverage/lcov.info b/coverage/lcov.info deleted file mode 100644 index 0f4e660d..00000000 --- a/coverage/lcov.info +++ /dev/null @@ -1,5396 +0,0 @@ -TN: -SF:src/commands/run.ts -FN:42,(anonymous_6) -FN:56,(anonymous_7) -FN:78,(anonymous_8) -FN:133,(anonymous_9) -FN:140,(anonymous_10) -FNF:5 -FNH:0 -FNDA:0,(anonymous_6) -FNDA:0,(anonymous_7) -FNDA:0,(anonymous_8) -FNDA:0,(anonymous_9) -FNDA:0,(anonymous_10) -DA:1,1 -DA:2,1 -DA:3,1 -DA:4,1 -DA:5,1 -DA:6,1 -DA:7,1 -DA:8,1 -DA:9,1 -DA:10,1 -DA:12,1 -DA:13,1 -DA:15,1 -DA:21,1 -DA:28,1 -DA:43,0 -DA:44,0 -DA:45,0 -DA:46,0 -DA:47,0 -DA:48,0 -DA:49,0 -DA:57,0 -DA:59,0 -DA:61,0 -DA:62,0 -DA:63,0 -DA:64,0 -DA:67,0 -DA:68,0 -DA:69,0 -DA:70,0 -DA:71,0 -DA:72,0 -DA:75,0 -DA:79,0 -DA:81,0 -DA:82,0 -DA:83,0 -DA:86,0 -DA:88,0 -DA:89,0 -DA:94,0 -DA:96,0 -DA:97,0 -DA:100,0 -DA:101,0 -DA:104,0 -DA:105,0 -DA:106,0 -DA:109,0 -DA:116,0 -DA:117,0 -DA:120,0 -DA:122,0 -DA:126,0 -DA:127,0 -DA:129,0 -DA:130,0 -DA:132,0 -DA:133,0 -DA:134,0 -DA:135,0 -DA:136,0 -DA:137,0 -DA:138,0 -DA:139,0 -DA:140,0 -DA:141,0 -DA:142,0 -DA:146,0 -DA:147,0 -DA:149,0 -DA:150,0 -DA:155,0 -DA:156,0 -LF:76 -LH:15 -BRDA:59,0,0,0 -BRDA:64,1,0,0 -BRDA:64,2,0,0 -BRDA:64,2,1,0 -BRDA:67,3,0,0 -BRDA:67,3,1,0 -BRDA:68,4,0,0 -BRDA:68,4,1,0 -BRDA:69,5,0,0 -BRDA:69,5,1,0 -BRDA:70,6,0,0 -BRDA:70,6,1,0 -BRDA:81,7,0,0 -BRDA:88,8,0,0 -BRDA:94,9,0,0 -BRDA:94,9,1,0 -BRDA:96,10,0,0 -BRDA:96,11,0,0 -BRDA:96,11,1,0 -BRDA:100,12,0,0 -BRDA:100,13,0,0 -BRDA:100,13,1,0 -BRDA:105,14,0,0 -BRDA:111,15,0,0 -BRDA:111,15,1,0 -BRDA:116,16,0,0 -BRDA:129,17,0,0 -BRDA:129,17,1,0 -BRDA:136,18,0,0 -BRDA:136,19,0,0 -BRDA:136,19,1,0 -BRDA:138,20,0,0 -BRF:32 -BRH:0 -end_of_record -TN: -SF:src/constants/colors.ts -FNF:0 -FNH:0 -DA:1,32 -LF:1 -LH:1 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/constants/defaultInstructions.ts -FNF:0 -FNH:0 -DA:1,2 -LF:1 -LH:1 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/constants/modelScaling.ts -FNF:0 -FNH:0 -DA:1,20 -LF:1 -LH:1 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/constants/openRouterClient.ts -FN:5,(anonymous_1) -FNF:1 -FNH:1 -FNDA:26,(anonymous_1) -DA:1,26 -DA:2,26 -DA:3,26 -DA:5,26 -DA:6,26 -DA:7,26 -DA:9,26 -DA:14,26 -DA:15,26 -DA:18,26 -DA:19,26 -DA:22,26 -DA:33,26 -LF:13 -LH:13 -BRDA:14,0,0,26 -BRDA:18,1,0,26 -BRF:2 -BRH:2 -end_of_record -TN: -SF:src/constants/writeConstants.ts -FNF:0 -FNH:0 -DA:1,15 -LF:1 -LH:1 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/jest/mocks/UnitTestMocker.ts -FN:4,(anonymous_0) -FN:8,(anonymous_1) -FN:22,(anonymous_2) -FN:48,(anonymous_3) -FN:73,(anonymous_4) -FN:99,(anonymous_5) -FN:131,(anonymous_6) -FN:143,(anonymous_7) -FN:144,(anonymous_8) -FN:145,(anonymous_9) -FN:152,(anonymous_10) -FN:153,(anonymous_11) -FNF:12 -FNH:12 -FNDA:257,(anonymous_0) -FNDA:276,(anonymous_1) -FNDA:568,(anonymous_2) -FNDA:610,(anonymous_3) -FNDA:11,(anonymous_4) -FNDA:114,(anonymous_5) -FNDA:39,(anonymous_6) -FNDA:304,(anonymous_7) -FNDA:537,(anonymous_8) -FNDA:1178,(anonymous_9) -FNDA:306,(anonymous_10) -FNDA:1912,(anonymous_11) -DA:4,24 -DA:5,257 -DA:6,257 -DA:12,276 -DA:14,276 -DA:15,118 -DA:17,276 -DA:19,276 -DA:27,568 -DA:28,568 -DA:29,568 -DA:31,568 -DA:32,568 -DA:34,7 -DA:37,561 -DA:40,568 -DA:41,295 -DA:43,568 -DA:45,568 -DA:53,610 -DA:54,610 -DA:58,610 -DA:59,242 -DA:61,610 -DA:63,610 -DA:78,11 -DA:84,11 -DA:85,4 -DA:87,11 -DA:89,11 -DA:104,114 -DA:105,114 -DA:107,114 -DA:113,114 -DA:116,2 -DA:119,112 -DA:122,114 -DA:123,20 -DA:126,114 -DA:128,114 -DA:133,39 -DA:135,39 -DA:136,5 -DA:138,39 -DA:140,39 -DA:144,304 -DA:145,537 -DA:146,1178 -DA:147,1178 -DA:150,304 -DA:152,304 -DA:153,306 -DA:154,1912 -DA:155,1912 -LF:54 -LH:54 -BRDA:14,0,0,118 -BRDA:32,1,0,7 -BRDA:32,1,1,561 -BRDA:32,2,0,568 -BRDA:32,2,1,10 -BRDA:40,3,0,295 -BRDA:58,4,0,242 -BRDA:84,5,0,4 -BRDA:113,6,0,2 -BRDA:113,6,1,112 -BRDA:113,7,0,114 -BRDA:113,7,1,4 -BRDA:122,8,0,20 -BRDA:135,9,0,5 -BRF:14 -BRH:14 -end_of_record -TN: -SF:src/services/ConfigService.ts -FN:63,(anonymous_8) -FN:67,(anonymous_9) -FN:82,(anonymous_10) -FN:166,(anonymous_11) -FNF:4 -FNH:4 -FNDA:531,(anonymous_8) -FNDA:2,(anonymous_9) -FNDA:3,(anonymous_10) -FNDA:270,(anonymous_11) -DA:1,30 -DA:2,30 -DA:3,30 -DA:4,30 -DA:5,30 -DA:7,30 -DA:63,30 -DA:64,531 -DA:65,531 -DA:68,2 -DA:72,2 -DA:74,2 -DA:78,2 -DA:83,3 -DA:84,2 -DA:86,2 -DA:145,2 -DA:149,2 -DA:152,2 -DA:158,2 -DA:160,2 -DA:167,270 -DA:168,1 -DA:171,270 -DA:172,270 -DA:174,270 -DA:176,270 -DA:177,2 -DA:181,2 -DA:184,268 -LF:30 -LH:30 -BRDA:68,0,0,0 -BRDA:68,0,1,2 -BRDA:72,1,0,2 -BRDA:74,2,0,2 -BRDA:74,2,1,0 -BRDA:74,3,0,2 -BRDA:74,3,1,2 -BRDA:83,4,0,2 -BRDA:167,5,0,1 -BRDA:176,6,0,2 -BRF:10 -BRH:8 -end_of_record -TN: -SF:src/services/CrackedAgent.ts -FN:37,(anonymous_2) -FN:47,(anonymous_3) -FN:91,(anonymous_4) -FN:118,(anonymous_5) -FN:128,(anonymous_6) -FN:150,(anonymous_7) -FN:160,(anonymous_8) -FN:185,(anonymous_9) -FN:209,(anonymous_10) -FN:222,(anonymous_11) -FN:234,(anonymous_12) -FN:275,(anonymous_13) -FN:279,(anonymous_14) -FNF:13 -FNH:11 -FNDA:21,(anonymous_2) -FNDA:18,(anonymous_3) -FNDA:18,(anonymous_4) -FNDA:18,(anonymous_5) -FNDA:18,(anonymous_6) -FNDA:1,(anonymous_7) -FNDA:1,(anonymous_8) -FNDA:17,(anonymous_9) -FNDA:18,(anonymous_10) -FNDA:0,(anonymous_11) -FNDA:0,(anonymous_12) -FNDA:1,(anonymous_13) -FNDA:2,(anonymous_14) -DA:1,2 -DA:2,2 -DA:3,2 -DA:5,2 -DA:6,2 -DA:7,2 -DA:8,2 -DA:9,2 -DA:10,2 -DA:11,2 -DA:32,2 -DA:34,21 -DA:35,21 -DA:38,21 -DA:39,21 -DA:40,21 -DA:41,21 -DA:42,21 -DA:43,21 -DA:44,21 -DA:51,18 -DA:53,18 -DA:54,18 -DA:56,18 -DA:63,18 -DA:64,18 -DA:67,18 -DA:72,18 -DA:73,1 -DA:81,17 -DA:88,17 -DA:92,18 -DA:103,18 -DA:104,18 -DA:105,18 -DA:106,18 -DA:108,18 -DA:109,1 -DA:112,18 -DA:113,18 -DA:115,18 -DA:119,18 -DA:120,18 -DA:121,0 -DA:122,0 -DA:129,18 -DA:131,18 -DA:132,18 -DA:133,1 -DA:138,18 -DA:139,2 -DA:142,2 -DA:145,18 -DA:146,16 -DA:156,1 -DA:157,1 -DA:161,1 -DA:162,1 -DA:163,1 -DA:167,1 -DA:169,1 -DA:172,1 -DA:179,1 -DA:191,17 -DA:193,17 -DA:198,17 -DA:201,17 -DA:203,17 -DA:218,18 -DA:219,18 -DA:223,0 -DA:229,0 -DA:230,0 -DA:231,0 -DA:235,0 -DA:236,0 -DA:240,0 -DA:242,0 -DA:249,0 -DA:251,0 -DA:257,0 -DA:264,0 -DA:269,18 -DA:276,1 -DA:280,2 -DA:281,2 -LF:86 -LH:72 -BRDA:63,0,0,18 -BRDA:72,1,0,1 -BRDA:108,2,0,1 -BRDA:120,3,0,0 -BRDA:129,4,0,0 -BRDA:132,5,0,1 -BRDA:138,6,0,2 -BRDA:145,7,0,16 -BRDA:169,8,0,0 -BRDA:171,9,0,0 -BRDA:180,10,0,1 -BRDA:180,10,1,1 -BRDA:198,11,0,0 -BRDA:200,12,0,0 -BRDA:204,13,0,17 -BRDA:204,13,1,17 -BRDA:229,14,0,0 -BRDA:229,14,1,0 -BRDA:249,15,0,0 -BRDA:249,15,1,0 -BRDA:264,16,0,0 -BRDA:264,16,1,0 -BRDA:270,17,0,18 -BRDA:270,17,1,0 -BRF:24 -BRH:11 -end_of_record -TN: -SF:src/services/FileManagement/DirectoryScanner.ts -FN:15,(anonymous_5) -FN:21,(anonymous_6) -FN:34,(anonymous_7) -FN:46,(anonymous_8) -FN:69,(anonymous_9) -FN:93,(anonymous_10) -FNF:6 -FNH:6 -FNDA:100,(anonymous_5) -FNDA:2,(anonymous_6) -FNDA:191,(anonymous_7) -FNDA:796,(anonymous_8) -FNDA:2,(anonymous_9) -FNDA:600,(anonymous_10) -DA:1,6 -DA:7,6 -DA:8,6 -DA:9,6 -DA:12,6 -DA:13,100 -DA:15,100 -DA:16,100 -DA:17,0 -DA:22,2 -DA:23,2 -DA:42,191 -DA:44,191 -DA:46,191 -DA:47,796 -DA:49,789 -DA:50,789 -DA:52,789 -DA:53,189 -DA:62,600 -DA:66,191 -DA:73,2 -DA:74,2 -DA:75,2 -DA:76,2 -DA:80,2 -DA:82,2 -DA:91,2 -DA:93,600 -DA:96,0 -LF:30 -LH:28 -BRDA:16,0,0,0 -BRDA:37,1,0,0 -BRDA:38,2,0,0 -BRDA:39,3,0,0 -BRDA:40,4,0,0 -BRDA:42,5,0,0 -BRDA:47,6,0,7 -BRDA:52,7,0,189 -BRDA:52,7,1,600 -BRDA:71,8,0,1 -BRDA:78,9,0,2 -BRDA:78,9,1,1 -BRDA:98,10,0,0 -BRDA:98,10,1,0 -BRF:14 -BRH:6 -end_of_record -TN: -SF:src/services/FileManagement/Errors.ts -FN:2,(anonymous_0) -FN:9,(anonymous_1) -FN:16,(anonymous_2) -FNF:3 -FNH:0 -FNDA:0,(anonymous_0) -FNDA:0,(anonymous_1) -FNDA:0,(anonymous_2) -DA:1,3 -DA:3,0 -DA:4,0 -DA:8,3 -DA:10,0 -DA:11,0 -DA:15,3 -DA:17,0 -DA:18,0 -LF:9 -LH:3 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/services/FileManagement/FileOperations.ts -FN:15,(anonymous_3) -FN:21,(anonymous_4) -FN:26,(anonymous_5) -FN:27,(anonymous_6) -FN:47,(anonymous_7) -FN:53,(anonymous_8) -FN:88,(anonymous_9) -FN:104,(anonymous_10) -FN:146,(anonymous_11) -FN:159,(anonymous_12) -FN:175,(anonymous_13) -FN:195,(anonymous_14) -FN:215,(anonymous_15) -FN:220,(anonymous_16) -FNF:14 -FNH:13 -FNDA:14,(anonymous_3) -FNDA:11,(anonymous_4) -FNDA:1,(anonymous_5) -FNDA:502,(anonymous_6) -FNDA:0,(anonymous_7) -FNDA:11,(anonymous_8) -FNDA:2,(anonymous_9) -FNDA:3,(anonymous_10) -FNDA:1,(anonymous_11) -FNDA:1,(anonymous_12) -FNDA:1,(anonymous_13) -FNDA:1,(anonymous_14) -FNDA:1,(anonymous_15) -FNDA:1,(anonymous_16) -DA:1,17 -DA:2,17 -DA:8,17 -DA:9,17 -DA:10,17 -DA:11,17 -DA:14,17 -DA:16,14 -DA:17,14 -DA:18,14 -DA:22,11 -DA:25,11 -DA:26,1 -DA:27,1 -DA:28,502 -DA:29,0 -DA:30,502 -DA:31,1 -DA:33,501 -DA:36,1 -DA:41,10 -DA:42,10 -DA:43,0 -DA:48,0 -DA:49,0 -DA:50,0 -DA:54,11 -DA:57,10 -DA:58,9 -DA:62,1 -DA:66,1 -DA:67,0 -DA:68,0 -DA:72,0 -DA:76,1 -DA:77,1 -DA:78,0 -DA:82,0 -DA:85,1 -DA:89,2 -DA:90,2 -DA:91,1 -DA:92,0 -DA:97,1 -DA:98,1 -DA:100,1 -DA:105,3 -DA:106,3 -DA:107,1 -DA:110,2 -DA:111,2 -DA:113,2 -DA:114,4 -DA:115,4 -DA:116,4 -DA:117,1 -DA:118,1 -DA:120,3 -DA:121,3 -DA:122,3 -DA:124,0 -DA:127,0 -DA:131,2 -DA:132,1 -DA:140,1 -DA:142,0 -DA:150,1 -DA:151,1 -DA:152,1 -DA:153,1 -DA:155,0 -DA:160,1 -DA:161,1 -DA:162,1 -DA:163,0 -DA:168,1 -DA:169,1 -DA:171,0 -DA:179,1 -DA:180,1 -DA:181,1 -DA:182,0 -DA:187,1 -DA:188,1 -DA:189,1 -DA:191,0 -DA:199,1 -DA:200,1 -DA:201,1 -DA:202,0 -DA:207,1 -DA:208,1 -DA:209,1 -DA:211,0 -DA:216,1 -DA:217,1 -DA:221,1 -DA:222,1 -DA:223,1 -DA:224,0 -DA:229,1 -DA:230,1 -DA:237,1 -DA:239,0 -LF:104 -LH:81 -BRDA:21,0,0,11 -BRDA:25,1,0,1 -BRDA:28,2,0,0 -BRDA:28,2,1,502 -BRDA:30,3,0,1 -BRDA:30,3,1,501 -BRDA:42,4,0,0 -BRDA:50,5,0,0 -BRDA:50,5,1,0 -BRDA:57,6,0,9 -BRDA:66,7,0,0 -BRDA:77,8,0,0 -BRDA:77,9,0,1 -BRDA:77,9,1,1 -BRDA:91,10,0,0 -BRDA:106,11,0,1 -BRDA:116,12,0,1 -BRDA:121,13,0,3 -BRDA:121,13,1,0 -BRDA:131,14,0,1 -BRDA:162,15,0,0 -BRDA:181,16,0,0 -BRDA:201,17,0,0 -BRDA:223,18,0,0 -BRF:24 -BRH:12 -end_of_record -TN: -SF:src/services/FileManagement/FileReader.ts -FN:11,(anonymous_1) -FN:27,(anonymous_2) -FN:34,(anonymous_3) -FNF:3 -FNH:3 -FNDA:2,(anonymous_1) -FNDA:2,(anonymous_2) -FNDA:1,(anonymous_3) -DA:1,3 -DA:6,3 -DA:7,3 -DA:10,3 -DA:12,2 -DA:13,2 -DA:14,1 -DA:16,1 -DA:21,0 -DA:23,1 -DA:28,2 -DA:29,1 -DA:30,0 -DA:35,1 -LF:14 -LH:12 -BRDA:16,0,0,0 -BRDA:17,1,0,1 -BRDA:17,1,1,1 -BRDA:17,1,2,1 -BRDA:29,2,0,0 -BRF:5 -BRH:3 -end_of_record -TN: -SF:src/services/FileManagement/FileSearch.ts -FN:25,(anonymous_3) -FN:27,(anonymous_4) -FN:37,(anonymous_5) -FN:56,(anonymous_6) -FN:70,(anonymous_7) -FN:126,(anonymous_8) -FN:147,(anonymous_9) -FN:155,(anonymous_10) -FN:172,(anonymous_11) -FN:176,(anonymous_12) -FN:193,(anonymous_13) -FN:194,(anonymous_14) -FNF:12 -FNH:11 -FNDA:26,(anonymous_3) -FNDA:48,(anonymous_4) -FNDA:2,(anonymous_5) -FNDA:6,(anonymous_6) -FNDA:10,(anonymous_7) -FNDA:5,(anonymous_8) -FNDA:18,(anonymous_9) -FNDA:18,(anonymous_10) -FNDA:0,(anonymous_11) -FNDA:1,(anonymous_12) -FNDA:3,(anonymous_13) -FNDA:3,(anonymous_14) -DA:5,19 -DA:6,19 -DA:7,19 -DA:8,19 -DA:9,19 -DA:10,19 -DA:24,19 -DA:25,26 -DA:28,48 -DA:29,48 -DA:30,48 -DA:31,5242796 -DA:32,5242796 -DA:34,48 -DA:41,2 -DA:42,2 -DA:48,2 -DA:50,2 -DA:51,6 -DA:52,6 -DA:54,6 -DA:56,6 -DA:63,2 -DA:65,0 -DA:66,0 -DA:74,10 -DA:75,10 -DA:81,10 -DA:82,10 -DA:84,10 -DA:85,48 -DA:86,48 -DA:87,48 -DA:89,48 -DA:90,48 -DA:91,48 -DA:93,48 -DA:94,48 -DA:95,48 -DA:97,48 -DA:99,48 -DA:100,5242796 -DA:108,48 -DA:109,12 -DA:115,0 -DA:119,10 -DA:121,0 -DA:122,0 -DA:127,5 -DA:128,5 -DA:129,5 -DA:131,5 -DA:139,5 -DA:147,18 -DA:154,5 -DA:155,18 -DA:158,5 -DA:160,5 -DA:162,1 -DA:168,1 -DA:169,1 -DA:171,1 -DA:172,0 -DA:176,1 -DA:180,4 -DA:189,4 -DA:190,4 -DA:192,4 -DA:193,3 -DA:194,3 -DA:196,0 -DA:197,0 -LF:72 -LH:64 -BRDA:87,0,0,0 -BRDA:108,1,0,12 -BRDA:160,2,0,1 -BRDA:171,3,0,0 -BRDA:193,4,0,3 -BRDA:193,4,1,3 -BRF:6 -BRH:4 -end_of_record -TN: -SF:src/services/FileManagement/PathAdjuster.ts -FN:21,(anonymous_9) -FN:29,(anonymous_10) -FN:35,(anonymous_11) -FN:39,(anonymous_12) -FN:43,(anonymous_13) -FN:47,(anonymous_14) -FN:61,(anonymous_15) -FN:69,(anonymous_16) -FN:77,(anonymous_17) -FN:101,(anonymous_18) -FN:113,(anonymous_19) -FN:129,(anonymous_20) -FN:146,(anonymous_21) -FNF:13 -FNH:13 -FNDA:42,(anonymous_9) -FNDA:1,(anonymous_10) -FNDA:16,(anonymous_11) -FNDA:2,(anonymous_12) -FNDA:2,(anonymous_13) -FNDA:42,(anonymous_14) -FNDA:44,(anonymous_15) -FNDA:834820,(anonymous_16) -FNDA:6,(anonymous_17) -FNDA:6,(anonymous_18) -FNDA:3,(anonymous_19) -FNDA:3,(anonymous_20) -FNDA:2,(anonymous_21) -DA:1,19 -DA:2,19 -DA:3,19 -DA:4,19 -DA:5,19 -DA:14,19 -DA:15,42 -DA:17,42 -DA:18,42 -DA:19,42 -DA:22,42 -DA:27,42 -DA:29,42 -DA:30,1 -DA:31,1 -DA:40,2 -DA:44,2 -DA:48,42 -DA:49,42 -DA:50,41 -DA:51,41 -DA:52,41 -DA:54,1 -DA:55,1 -DA:57,1 -DA:62,44 -DA:63,44 -DA:69,834820 -DA:71,2 -DA:81,6 -DA:82,1 -DA:87,5 -DA:89,5 -DA:91,5 -DA:92,3 -DA:93,3 -DA:94,3 -DA:98,2 -DA:102,6 -DA:103,6 -DA:104,6 -DA:106,5 -DA:107,5 -DA:109,0 -DA:117,3 -DA:118,0 -DA:121,3 -DA:122,3 -DA:123,2 -DA:126,1 -DA:130,3 -DA:131,1 -DA:132,1 -DA:133,1 -DA:137,2 -DA:139,2 -DA:140,1 -DA:143,1 -DA:147,2 -DA:148,2 -DA:149,1 -DA:151,1 -DA:152,1 -LF:63 -LH:61 -BRDA:56,0,0,1 -BRDA:56,0,1,0 -BRDA:72,1,0,2 -BRDA:72,1,1,0 -BRDA:79,2,0,3 -BRDA:81,3,0,1 -BRDA:91,4,0,3 -BRDA:93,5,0,3 -BRDA:93,6,0,3 -BRDA:93,6,1,3 -BRDA:104,7,0,1 -BRDA:115,8,0,3 -BRDA:117,9,0,0 -BRDA:122,10,0,2 -BRDA:122,11,0,3 -BRDA:122,11,1,2 -BRDA:130,12,0,1 -BRDA:132,13,0,1 -BRDA:139,14,0,1 -BRF:19 -BRH:16 -end_of_record -TN: -SF:src/services/LLM/LLMContextCreator.ts -FN:20,(anonymous_8) -FN:29,(anonymous_9) -FN:55,(anonymous_10) -FN:85,(anonymous_11) -FN:94,(anonymous_12) -FN:111,(anonymous_13) -FN:120,(anonymous_14) -FN:172,(anonymous_15) -FN:177,(anonymous_16) -FNF:9 -FNH:8 -FNDA:99,(anonymous_8) -FNDA:7,(anonymous_9) -FNDA:5,(anonymous_10) -FNDA:4,(anonymous_11) -FNDA:4,(anonymous_12) -FNDA:6,(anonymous_13) -FNDA:3,(anonymous_14) -FNDA:1,(anonymous_15) -FNDA:0,(anonymous_16) -DA:1,5 -DA:2,5 -DA:3,5 -DA:5,5 -DA:6,5 -DA:7,5 -DA:8,5 -DA:9,5 -DA:19,5 -DA:21,99 -DA:22,99 -DA:23,99 -DA:24,99 -DA:25,99 -DA:26,99 -DA:30,7 -DA:32,7 -DA:33,2 -DA:34,2 -DA:38,1 -DA:40,1 -DA:46,5 -DA:47,4 -DA:50,1 -DA:60,5 -DA:64,5 -DA:66,4 -DA:68,4 -DA:70,4 -DA:75,3 -DA:82,1 -DA:86,4 -DA:87,4 -DA:88,1 -DA:91,3 -DA:95,4 -DA:96,4 -DA:98,4 -DA:99,1 -DA:102,3 -DA:103,3 -DA:104,3 -DA:106,3 -DA:111,6 -DA:123,3 -DA:124,3 -DA:125,3 -DA:127,3 -DA:131,3 -DA:140,3 -DA:173,1 -DA:174,1 -DA:178,0 -DA:180,0 -LF:54 -LH:52 -BRDA:32,0,0,2 -BRDA:46,1,0,4 -BRDA:58,2,0,0 -BRDA:64,3,0,4 -BRDA:87,4,0,1 -BRDA:98,5,0,1 -BRDA:102,6,0,3 -BRDA:102,6,1,3 -BRDA:103,7,0,3 -BRDA:103,7,1,3 -BRDA:104,8,0,3 -BRDA:104,8,1,3 -BRDA:127,9,0,2 -BRDA:127,9,1,1 -BRDA:150,10,0,3 -BRDA:150,10,1,3 -BRDA:162,11,0,2 -BRDA:162,11,1,1 -BRDA:163,12,0,2 -BRDA:163,12,1,1 -BRF:20 -BRH:19 -end_of_record -TN: -SF:src/services/LLM/LLMProvider.ts -FN:8,(anonymous_2) -FN:18,(anonymous_3) -FN:23,(anonymous_4) -FN:38,(anonymous_5) -FN:46,(anonymous_6) -FN:50,(anonymous_7) -FN:61,(anonymous_8) -FN:78,(anonymous_9) -FN:85,(anonymous_10) -FN:92,(anonymous_11) -FN:99,(anonymous_12) -FN:106,(anonymous_13) -FN:113,(anonymous_14) -FN:120,(anonymous_15) -FNF:14 -FNH:14 -FNDA:3,(anonymous_2) -FNDA:35,(anonymous_3) -FNDA:35,(anonymous_4) -FNDA:2,(anonymous_5) -FNDA:2,(anonymous_6) -FNDA:6,(anonymous_7) -FNDA:8,(anonymous_8) -FNDA:1,(anonymous_9) -FNDA:3,(anonymous_10) -FNDA:3,(anonymous_11) -FNDA:3,(anonymous_12) -FNDA:3,(anonymous_13) -FNDA:3,(anonymous_14) -FNDA:3,(anonymous_15) -DA:5,3 -DA:6,3 -DA:8,3 -DA:9,3 -DA:14,3 -DA:16,35 -DA:19,35 -DA:20,35 -DA:26,35 -DA:28,35 -DA:29,35 -DA:31,0 -DA:34,35 -DA:35,35 -DA:39,2 -DA:40,2 -DA:41,1 -DA:43,1 -DA:47,2 -DA:55,6 -DA:56,0 -DA:58,6 -DA:67,8 -DA:68,0 -DA:70,8 -DA:79,1 -DA:80,0 -DA:82,1 -DA:86,3 -DA:87,0 -DA:89,3 -DA:93,3 -DA:94,0 -DA:96,3 -DA:100,3 -DA:101,0 -DA:103,3 -DA:107,3 -DA:108,0 -DA:110,3 -DA:114,3 -DA:115,0 -DA:117,3 -DA:126,3 -DA:127,0 -DA:129,3 -LF:46 -LH:36 -BRDA:8,0,0,3 -BRDA:8,0,1,3 -BRDA:26,1,0,35 -BRDA:26,1,1,0 -BRDA:40,2,0,1 -BRDA:55,3,0,0 -BRDA:67,4,0,0 -BRDA:79,5,0,0 -BRDA:86,6,0,0 -BRDA:93,7,0,0 -BRDA:100,8,0,0 -BRDA:107,9,0,0 -BRDA:114,10,0,0 -BRDA:126,11,0,0 -BRF:14 -BRH:4 -end_of_record -TN: -SF:src/services/LLM/ModelInfo.ts -FN:20,(anonymous_2) -FN:22,(anonymous_3) -FN:30,(anonymous_4) -FN:43,(anonymous_5) -FN:49,(anonymous_6) -FN:77,(anonymous_7) -FN:81,(anonymous_8) -FN:86,(anonymous_9) -FN:90,(anonymous_10) -FN:95,(anonymous_11) -FN:101,(anonymous_12) -FN:106,(anonymous_13) -FN:121,(anonymous_14) -FN:127,(anonymous_15) -FN:132,(anonymous_16) -FN:151,(anonymous_17) -FN:174,(anonymous_18) -FNF:17 -FNH:14 -FNDA:1,(anonymous_2) -FNDA:20,(anonymous_3) -FNDA:38,(anonymous_4) -FNDA:32,(anonymous_5) -FNDA:9,(anonymous_6) -FNDA:0,(anonymous_7) -FNDA:6,(anonymous_8) -FNDA:2,(anonymous_9) -FNDA:2,(anonymous_10) -FNDA:2,(anonymous_11) -FNDA:1,(anonymous_12) -FNDA:6,(anonymous_13) -FNDA:2,(anonymous_14) -FNDA:2,(anonymous_15) -FNDA:2,(anonymous_16) -FNDA:0,(anonymous_17) -FNDA:0,(anonymous_18) -DA:1,26 -DA:2,26 -DA:3,26 -DA:7,26 -DA:8,1 -DA:9,1 -DA:10,1 -DA:11,1 -DA:12,1 -DA:20,1 -DA:23,20 -DA:24,20 -DA:25,19 -DA:28,19 -DA:30,19 -DA:31,38 -DA:34,19 -DA:36,1 -DA:39,1 -DA:44,32 -DA:45,0 -DA:50,9 -DA:52,9 -DA:53,5 -DA:56,4 -DA:57,0 -DA:62,4 -DA:63,4 -DA:64,4 -DA:66,4 -DA:67,0 -DA:70,4 -DA:78,0 -DA:82,6 -DA:83,6 -DA:87,2 -DA:91,2 -DA:92,2 -DA:96,2 -DA:97,2 -DA:98,2 -DA:102,1 -DA:103,1 -DA:107,6 -DA:108,6 -DA:110,6 -DA:111,1 -DA:112,1 -DA:118,6 -DA:122,2 -DA:123,2 -DA:124,2 -DA:128,2 -DA:129,2 -DA:133,2 -DA:135,2 -DA:136,1 -DA:139,1 -DA:140,1 -DA:142,1 -DA:156,0 -DA:158,0 -DA:159,0 -DA:162,0 -DA:163,0 -DA:166,0 -DA:168,0 -DA:181,0 -LF:68 -LH:56 -BRDA:44,0,0,0 -BRDA:52,1,0,5 -BRDA:52,2,0,9 -BRDA:52,2,1,5 -BRDA:56,3,0,0 -BRDA:66,4,0,0 -BRDA:92,5,0,2 -BRDA:92,5,1,1 -BRDA:98,6,0,2 -BRDA:98,6,1,1 -BRDA:110,7,0,1 -BRDA:124,8,0,2 -BRDA:124,8,1,1 -BRDA:129,9,0,2 -BRDA:129,9,1,1 -BRDA:135,10,0,1 -BRDA:158,11,0,0 -BRDA:162,12,0,0 -BRF:18 -BRH:13 -end_of_record -TN: -SF:src/services/LLM/ModelManager.ts -FN:9,(anonymous_2) -FN:14,(anonymous_3) -FN:20,(anonymous_4) -FNF:3 -FNH:3 -FNDA:85,(anonymous_2) -FNDA:44,(anonymous_3) -FNDA:36,(anonymous_4) -DA:1,25 -DA:2,25 -DA:3,25 -DA:6,25 -DA:7,85 -DA:10,85 -DA:11,85 -DA:15,44 -DA:16,44 -DA:17,44 -DA:21,36 -LF:11 -LH:11 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/services/LLM/ModelScaler.ts -FN:15,(anonymous_2) -FN:25,(anonymous_3) -FN:29,(anonymous_4) -FN:45,(anonymous_5) -FN:50,(anonymous_6) -FN:55,(anonymous_7) -FN:63,(anonymous_8) -FN:71,(anonymous_9) -FN:76,(anonymous_10) -FN:100,(anonymous_11) -FN:114,(anonymous_12) -FNF:11 -FNH:10 -FNDA:56,(anonymous_2) -FNDA:0,(anonymous_3) -FNDA:19,(anonymous_4) -FNDA:4,(anonymous_5) -FNDA:3,(anonymous_6) -FNDA:12,(anonymous_7) -FNDA:12,(anonymous_8) -FNDA:4,(anonymous_9) -FNDA:4,(anonymous_10) -FNDA:11,(anonymous_11) -FNDA:15,(anonymous_12) -DA:1,20 -DA:2,20 -DA:3,20 -DA:4,20 -DA:5,20 -DA:6,20 -DA:7,20 -DA:10,20 -DA:11,56 -DA:12,56 -DA:13,56 -DA:16,56 -DA:17,56 -DA:18,56 -DA:19,56 -DA:21,56 -DA:22,56 -DA:26,0 -DA:30,19 -DA:32,19 -DA:33,7 -DA:36,12 -DA:37,12 -DA:40,12 -DA:41,4 -DA:46,4 -DA:47,3 -DA:51,3 -DA:52,2 -DA:56,12 -DA:57,12 -DA:58,12 -DA:59,12 -DA:60,12 -DA:64,12 -DA:66,12 -DA:67,12 -DA:68,12 -DA:72,4 -DA:73,4 -DA:80,4 -DA:82,4 -DA:83,4 -DA:88,4 -DA:97,4 -DA:104,11 -DA:105,11 -DA:107,11 -DA:109,10 -DA:111,10 -DA:112,22 -DA:114,15 -DA:116,22 -DA:120,13 -DA:123,9 -DA:126,1 -LF:56 -LH:55 -BRDA:22,0,0,56 -BRDA:22,0,1,0 -BRDA:32,1,0,7 -BRDA:32,2,0,19 -BRDA:32,2,1,15 -BRDA:37,3,0,12 -BRDA:37,3,1,0 -BRDA:40,4,0,4 -BRDA:46,5,0,1 -BRDA:47,6,0,3 -BRDA:47,6,1,1 -BRDA:51,7,0,1 -BRDA:59,8,0,12 -BRDA:59,8,1,1 -BRDA:64,9,0,0 -BRDA:67,10,0,12 -BRDA:67,10,1,4 -BRDA:73,11,0,4 -BRDA:73,11,1,0 -BRDA:80,12,0,0 -BRDA:107,13,0,1 -BRDA:116,14,0,13 -BRDA:117,15,0,22 -BRDA:117,15,1,12 -BRF:24 -BRH:19 -end_of_record -TN: -SF:src/services/LLM/PhaseManager.ts -FN:14,(anonymous_2) -FN:19,(anonymous_3) -FN:61,(anonymous_4) -FN:65,(anonymous_5) -FN:78,(anonymous_6) -FN:82,(anonymous_7) -FN:90,(anonymous_8) -FN:105,(anonymous_9) -FNF:8 -FNH:8 -FNDA:87,(anonymous_2) -FNDA:28,(anonymous_3) -FNDA:25,(anonymous_4) -FNDA:1,(anonymous_5) -FNDA:1,(anonymous_6) -FNDA:7,(anonymous_7) -FNDA:4,(anonymous_8) -FNDA:5,(anonymous_9) -DA:2,25 -DA:3,25 -DA:4,25 -DA:5,25 -DA:6,25 -DA:10,25 -DA:11,87 -DA:12,87 -DA:15,87 -DA:16,87 -DA:20,28 -DA:23,28 -DA:49,28 -DA:52,28 -DA:54,28 -DA:55,0 -DA:58,28 -DA:62,25 -DA:67,1 -DA:68,0 -DA:71,1 -DA:72,1 -DA:73,0 -DA:75,1 -DA:79,1 -DA:83,7 -DA:84,7 -DA:85,1 -DA:87,6 -DA:91,4 -DA:93,2 -DA:94,2 -DA:96,1 -DA:97,1 -DA:100,1 -DA:102,4 -DA:106,5 -LF:37 -LH:34 -BRDA:29,0,0,28 -BRDA:29,0,1,1 -BRDA:36,1,0,28 -BRDA:36,1,1,1 -BRDA:43,2,0,28 -BRDA:43,2,1,1 -BRDA:54,3,0,0 -BRDA:67,4,0,0 -BRDA:72,5,0,0 -BRDA:84,6,0,1 -BRDA:91,7,0,2 -BRDA:91,7,1,1 -BRDA:91,7,2,1 -BRF:13 -BRH:10 -end_of_record -TN: -SF:src/services/LLM/PhaseTransitionService.ts -FN:11,(anonymous_2) -FN:18,(anonymous_3) -FN:57,(anonymous_4) -FN:70,(anonymous_5) -FNF:4 -FNH:4 -FNDA:6,(anonymous_2) -FNDA:5,(anonymous_3) -FNDA:5,(anonymous_4) -FNDA:10,(anonymous_5) -DA:1,17 -DA:3,17 -DA:4,17 -DA:5,17 -DA:6,17 -DA:7,17 -DA:10,17 -DA:12,6 -DA:13,6 -DA:14,6 -DA:15,6 -DA:19,5 -DA:20,5 -DA:22,5 -DA:23,5 -DA:24,0 -DA:28,5 -DA:33,5 -DA:36,5 -DA:39,5 -DA:42,5 -DA:46,5 -DA:51,5 -DA:58,5 -DA:60,5 -DA:62,0 -DA:64,0 -DA:66,0 -DA:71,10 -DA:73,5 -DA:75,5 -DA:77,0 -DA:79,0 -LF:33 -LH:27 -BRDA:23,0,0,0 -BRDA:58,1,0,5 -BRDA:58,1,1,0 -BRDA:58,1,2,0 -BRDA:58,1,3,0 -BRDA:71,2,0,5 -BRDA:71,2,1,5 -BRDA:71,2,2,0 -BRDA:71,2,3,0 -BRF:9 -BRH:3 -end_of_record -TN: -SF:src/services/LLM/actions/ActionExecutor.ts -FN:11,(anonymous_2) -FN:18,(anonymous_3) -FNF:2 -FNH:2 -FNDA:100,(anonymous_2) -FNDA:7,(anonymous_3) -DA:1,6 -DA:2,6 -DA:3,6 -DA:4,6 -DA:5,6 -DA:6,6 -DA:10,6 -DA:12,100 -DA:13,100 -DA:14,100 -DA:15,100 -DA:19,7 -DA:21,7 -DA:24,7 -DA:25,73 -DA:30,1 -DA:33,1 -DA:37,1 -DA:41,1 -DA:46,6 -DA:47,6 -DA:49,6 -DA:50,3 -DA:53,3 -DA:57,3 -DA:61,3 -DA:65,3 -DA:66,3 -DA:67,3 -DA:68,2 -DA:70,1 -DA:71,1 -DA:75,1 -DA:79,1 -DA:85,2 -DA:86,2 -DA:87,2 -DA:88,2 -DA:90,2 -DA:93,2 -DA:94,0 -DA:97,0 -DA:101,0 -DA:105,0 -DA:109,2 -DA:110,2 -DA:111,2 -DA:117,2 -DA:120,2 -DA:123,2 -DA:124,2 -DA:125,1 -DA:130,1 -DA:136,0 -DA:139,0 -DA:146,2 -DA:152,2 -DA:154,0 -DA:155,0 -DA:159,2 -DA:160,1 -DA:168,2 -DA:171,2 -DA:174,2 -DA:179,0 -DA:182,0 -DA:186,0 -DA:191,0 -LF:68 -LH:56 -BRDA:25,0,0,1 -BRDA:26,1,0,73 -BRDA:26,1,1,5 -BRDA:26,1,2,2 -BRDA:49,2,0,3 -BRDA:66,3,0,3 -BRDA:66,4,0,3 -BRDA:66,4,1,3 -BRDA:67,5,0,2 -BRDA:67,5,1,1 -BRDA:88,6,0,0 -BRDA:93,7,0,0 -BRDA:110,8,0,2 -BRDA:112,9,0,2 -BRDA:112,9,1,0 -BRDA:123,10,0,2 -BRDA:123,10,1,0 -BRDA:124,11,0,1 -BRDA:124,11,1,1 -BRDA:136,12,0,0 -BRDA:136,12,1,0 -BRDA:152,13,0,0 -BRDA:159,14,0,1 -BRDA:159,15,0,2 -BRDA:159,15,1,1 -BRDA:174,16,0,0 -BRDA:174,16,1,2 -BRF:27 -BRH:19 -end_of_record -TN: -SF:src/services/LLM/actions/ActionTagsExtractor.ts -FN:6,(anonymous_1) -FN:13,(anonymous_2) -FN:26,(anonymous_3) -FN:65,(anonymous_4) -FN:71,(anonymous_5) -FN:80,(anonymous_6) -FN:83,(anonymous_7) -FN:92,(anonymous_8) -FN:98,(anonymous_9) -FN:109,(anonymous_10) -FN:126,(anonymous_11) -FN:129,(anonymous_12) -FNF:12 -FNH:9 -FNDA:4,(anonymous_1) -FNDA:64,(anonymous_2) -FNDA:6,(anonymous_3) -FNDA:15,(anonymous_4) -FNDA:0,(anonymous_5) -FNDA:6,(anonymous_6) -FNDA:7,(anonymous_7) -FNDA:3,(anonymous_8) -FNDA:6,(anonymous_9) -FNDA:4,(anonymous_10) -FNDA:0,(anonymous_11) -FNDA:0,(anonymous_12) -DA:1,16 -DA:2,16 -DA:5,16 -DA:8,4 -DA:9,4 -DA:11,4 -DA:12,48 -DA:13,48 -DA:14,64 -DA:18,4 -DA:28,6 -DA:31,6 -DA:32,52 -DA:34,52 -DA:37,52 -DA:38,2 -DA:43,4 -DA:45,4 -DA:46,32 -DA:48,32 -DA:51,32 -DA:52,0 -DA:56,4 -DA:66,15 -DA:67,15 -DA:69,15 -DA:70,11 -DA:71,0 -DA:81,6 -DA:82,6 -DA:83,7 -DA:93,3 -DA:94,3 -DA:96,2 -DA:98,6 -DA:114,4 -DA:115,4 -DA:117,3 -DA:127,0 -DA:128,0 -DA:129,0 -LF:41 -LH:36 -BRDA:32,0,0,52 -BRDA:32,0,1,46 -BRDA:34,1,0,52 -BRDA:34,1,1,46 -BRDA:37,2,0,2 -BRDA:38,3,0,1 -BRDA:38,3,1,1 -BRDA:46,4,0,32 -BRDA:46,4,1,26 -BRDA:48,5,0,32 -BRDA:48,5,1,26 -BRDA:51,6,0,0 -BRDA:52,7,0,0 -BRDA:52,7,1,0 -BRDA:69,8,0,4 -BRDA:70,9,0,11 -BRDA:94,10,0,1 -BRDA:94,11,0,3 -BRDA:94,11,1,2 -BRDA:115,12,0,1 -BRDA:115,13,0,4 -BRDA:115,13,1,3 -BRDA:129,14,0,0 -BRDA:129,14,1,0 -BRF:24 -BRH:19 -end_of_record -TN: -SF:src/services/LLM/actions/ActionsParser.ts -FN:30,(anonymous_3) -FN:37,(anonymous_4) -FN:44,(anonymous_5) -FN:48,(anonymous_6) -FN:49,(anonymous_7) -FN:51,(anonymous_8) -FN:55,(anonymous_9) -FN:68,(anonymous_10) -FN:78,(anonymous_11) -FN:99,(anonymous_12) -FN:102,(anonymous_13) -FN:107,(anonymous_14) -FN:113,(anonymous_15) -FN:118,(anonymous_16) -FN:124,(anonymous_17) -FN:131,(anonymous_18) -FN:138,(anonymous_19) -FN:148,(anonymous_20) -FN:152,(anonymous_21) -FN:153,(anonymous_22) -FN:154,(anonymous_23) -FN:168,(anonymous_24) -FN:180,(anonymous_25) -FN:195,(anonymous_26) -FN:234,(anonymous_27) -FN:238,(anonymous_28) -FN:243,(anonymous_29) -FN:247,(anonymous_30) -FN:251,(anonymous_31) -FN:255,(anonymous_32) -FN:259,(anonymous_33) -FN:263,(anonymous_34) -FN:309,(anonymous_35) -FN:327,(anonymous_36) -FN:330,(anonymous_37) -FN:407,(anonymous_38) -FN:418,(anonymous_39) -FNF:37 -FNH:30 -FNDA:69,(anonymous_3) -FNDA:38,(anonymous_4) -FNDA:1,(anonymous_5) -FNDA:3,(anonymous_6) -FNDA:36,(anonymous_7) -FNDA:42,(anonymous_8) -FNDA:3,(anonymous_9) -FNDA:3,(anonymous_10) -FNDA:6,(anonymous_11) -FNDA:13,(anonymous_12) -FNDA:17,(anonymous_13) -FNDA:11,(anonymous_14) -FNDA:0,(anonymous_15) -FNDA:0,(anonymous_16) -FNDA:0,(anonymous_17) -FNDA:13,(anonymous_18) -FNDA:34,(anonymous_19) -FNDA:17,(anonymous_20) -FNDA:0,(anonymous_21) -FNDA:0,(anonymous_22) -FNDA:0,(anonymous_23) -FNDA:17,(anonymous_24) -FNDA:7,(anonymous_25) -FNDA:14,(anonymous_26) -FNDA:2,(anonymous_27) -FNDA:0,(anonymous_28) -FNDA:2,(anonymous_29) -FNDA:1,(anonymous_30) -FNDA:1,(anonymous_31) -FNDA:1,(anonymous_32) -FNDA:1,(anonymous_33) -FNDA:8,(anonymous_34) -FNDA:7,(anonymous_35) -FNDA:5,(anonymous_36) -FNDA:5,(anonymous_37) -FNDA:9,(anonymous_38) -FNDA:8,(anonymous_39) -DA:1,4 -DA:2,4 -DA:9,4 -DA:10,4 -DA:11,4 -DA:12,4 -DA:13,4 -DA:14,4 -DA:23,4 -DA:24,69 -DA:25,69 -DA:26,69 -DA:27,69 -DA:28,69 -DA:31,69 -DA:32,69 -DA:33,69 -DA:34,69 -DA:38,38 -DA:39,38 -DA:40,38 -DA:41,38 -DA:45,1 -DA:49,3 -DA:50,36 -DA:51,42 -DA:57,3 -DA:58,3 -DA:59,3 -DA:61,2 -DA:62,2 -DA:63,2 -DA:65,1 -DA:69,3 -DA:70,3 -DA:72,2 -DA:73,2 -DA:75,1 -DA:80,6 -DA:81,6 -DA:82,0 -DA:86,6 -DA:87,6 -DA:88,6 -DA:92,0 -DA:93,0 -DA:96,0 -DA:102,13 -DA:103,17 -DA:105,17 -DA:107,6 -DA:108,11 -DA:109,3 -DA:110,3 -DA:111,3 -DA:113,6 -DA:116,17 -DA:118,0 -DA:119,0 -DA:120,0 -DA:121,0 -DA:122,0 -DA:124,0 -DA:127,17 -DA:134,13 -DA:135,13 -DA:138,13 -DA:139,34 -DA:140,34 -DA:143,13 -DA:144,12 -DA:145,12 -DA:148,12 -DA:150,17 -DA:153,0 -DA:154,0 -DA:157,17 -DA:158,17 -DA:160,0 -DA:165,12 -DA:166,12 -DA:167,12 -DA:168,17 -DA:172,12 -DA:173,8 -DA:180,12 -DA:181,7 -DA:188,12 -DA:189,12 -DA:192,13 -DA:196,14 -DA:200,14 -DA:201,14 -DA:202,1 -DA:205,1 -DA:209,13 -DA:210,13 -DA:211,13 -DA:215,13 -DA:217,13 -DA:218,18 -DA:219,18 -DA:220,18 -DA:221,17 -DA:226,17 -DA:230,13 -DA:231,13 -DA:235,2 -DA:239,0 -DA:240,0 -DA:244,2 -DA:248,1 -DA:252,1 -DA:256,1 -DA:260,1 -DA:264,8 -DA:265,8 -DA:267,8 -DA:269,8 -DA:270,0 -DA:273,8 -DA:274,3 -DA:280,3 -DA:281,0 -DA:283,3 -DA:286,5 -DA:287,1 -DA:290,4 -DA:291,0 -DA:294,4 -DA:295,0 -DA:296,0 -DA:297,0 -DA:299,0 -DA:302,4 -DA:303,1 -DA:306,3 -DA:314,7 -DA:315,7 -DA:317,7 -DA:319,7 -DA:320,7 -DA:321,7 -DA:323,7 -DA:324,8 -DA:326,8 -DA:327,4 -DA:328,5 -DA:330,5 -DA:335,4 -DA:336,4 -DA:339,4 -DA:340,5 -DA:341,0 -DA:345,0 -DA:346,0 -DA:350,4 -DA:351,4 -DA:352,5 -DA:353,0 -DA:354,0 -DA:355,0 -DA:356,0 -DA:368,4 -DA:369,4 -DA:373,4 -DA:378,4 -DA:380,4 -DA:381,1 -DA:385,1 -DA:386,1 -DA:389,3 -DA:390,2 -DA:391,2 -DA:392,1 -DA:393,1 -DA:406,7 -DA:407,9 -DA:410,7 -DA:411,1 -DA:414,1 -DA:417,6 -DA:418,8 -DA:423,6 -DA:424,5 -DA:425,5 -DA:435,6 -DA:437,0 -DA:438,0 -DA:441,0 -LF:190 -LH:158 -BRDA:59,0,0,1 -BRDA:63,1,0,1 -BRDA:70,2,0,1 -BRDA:73,3,0,1 -BRDA:81,4,0,0 -BRDA:87,5,0,6 -BRDA:92,6,0,0 -BRDA:105,7,0,6 -BRDA:108,8,0,8 -BRDA:116,9,0,0 -BRDA:119,10,0,0 -BRDA:150,11,0,17 -BRDA:150,11,1,0 -BRDA:153,12,0,0 -BRDA:153,12,1,0 -BRDA:157,13,0,17 -BRDA:157,13,1,0 -BRDA:165,14,0,12 -BRDA:172,15,0,8 -BRDA:201,16,0,1 -BRDA:220,17,0,17 -BRDA:265,18,0,0 -BRDA:269,19,0,0 -BRDA:269,20,0,8 -BRDA:269,20,1,0 -BRDA:273,21,0,3 -BRDA:273,22,0,8 -BRDA:273,22,1,3 -BRDA:280,23,0,0 -BRDA:280,24,0,3 -BRDA:280,24,1,3 -BRDA:286,25,0,1 -BRDA:286,26,0,5 -BRDA:286,26,1,1 -BRDA:290,27,0,0 -BRDA:290,28,0,4 -BRDA:290,28,1,0 -BRDA:294,29,0,0 -BRDA:294,30,0,4 -BRDA:294,30,1,0 -BRDA:296,31,0,0 -BRDA:296,32,0,0 -BRDA:296,32,1,0 -BRDA:302,33,0,1 -BRDA:302,34,0,4 -BRDA:302,34,1,1 -BRDA:306,35,0,3 -BRDA:306,35,1,2 -BRDA:324,36,0,0 -BRDA:326,37,0,4 -BRDA:326,37,1,4 -BRDA:340,38,0,0 -BRDA:350,39,0,4 -BRDA:352,40,0,0 -BRDA:354,41,0,0 -BRDA:380,42,0,1 -BRDA:389,43,0,2 -BRDA:391,44,0,1 -BRDA:407,45,0,9 -BRDA:407,45,1,1 -BRDA:410,46,0,1 -BRDA:423,47,0,5 -BRF:62 -BRH:39 -end_of_record -TN: -SF:src/services/LLM/actions/CommandAction.ts -FN:18,(anonymous_3) -FN:26,(anonymous_4) -FN:30,(anonymous_5) -FN:48,(anonymous_6) -FN:58,(anonymous_7) -FN:71,(anonymous_8) -FN:78,(anonymous_9) -FN:82,(anonymous_10) -FN:95,(anonymous_11) -FN:109,(anonymous_12) -FN:122,(anonymous_13) -FN:152,(anonymous_14) -FN:156,(anonymous_15) -FNF:13 -FNH:12 -FNDA:9,(anonymous_3) -FNDA:44,(anonymous_4) -FNDA:9,(anonymous_5) -FNDA:9,(anonymous_6) -FNDA:8,(anonymous_7) -FNDA:11,(anonymous_8) -FNDA:8,(anonymous_9) -FNDA:8,(anonymous_10) -FNDA:9,(anonymous_11) -FNDA:2,(anonymous_12) -FNDA:8,(anonymous_13) -FNDA:8,(anonymous_14) -FNDA:0,(anonymous_15) -DA:2,16 -DA:3,16 -DA:4,16 -DA:5,16 -DA:6,16 -DA:7,16 -DA:8,16 -DA:9,16 -DA:17,16 -DA:19,9 -DA:20,9 -DA:21,9 -DA:23,9 -DA:27,44 -DA:31,9 -DA:32,9 -DA:33,9 -DA:34,1 -DA:35,1 -DA:39,8 -DA:44,8 -DA:45,8 -DA:49,9 -DA:51,9 -DA:52,1 -DA:55,8 -DA:61,8 -DA:62,8 -DA:63,8 -DA:64,8 -DA:67,0 -DA:72,11 -DA:82,8 -DA:83,8 -DA:84,8 -DA:86,8 -DA:87,8 -DA:88,8 -DA:91,8 -DA:92,8 -DA:95,8 -DA:96,9 -DA:97,9 -DA:98,9 -DA:99,9 -DA:100,9 -DA:103,9 -DA:104,0 -DA:109,8 -DA:110,2 -DA:111,2 -DA:112,2 -DA:113,2 -DA:114,2 -DA:117,2 -DA:118,0 -DA:122,8 -DA:123,8 -DA:124,8 -DA:126,8 -DA:127,0 -DA:129,8 -DA:130,0 -DA:133,8 -DA:137,8 -DA:139,8 -DA:142,8 -DA:148,8 -DA:152,8 -DA:153,8 -DA:156,8 -DA:157,0 -DA:162,0 -LF:73 -LH:66 -BRDA:33,0,0,1 -BRDA:51,1,0,1 -BRDA:51,2,0,9 -BRDA:51,2,1,8 -BRDA:73,3,0,11 -BRDA:73,3,1,0 -BRDA:103,4,0,0 -BRDA:117,5,0,0 -BRDA:122,6,0,0 -BRDA:123,7,0,8 -BRDA:126,8,0,0 -BRDA:129,9,0,0 -BRDA:139,10,0,8 -BRDA:139,10,1,1 -BRDA:140,11,0,1 -BRDA:140,11,1,7 -BRF:16 -BRH:10 -end_of_record -TN: -SF:src/services/LLM/actions/CopyFileAction.ts -FN:16,(anonymous_2) -FN:23,(anonymous_3) -FN:27,(anonymous_4) -FN:40,(anonymous_5) -FN:50,(anonymous_6) -FNF:5 -FNH:5 -FNDA:1,(anonymous_2) -FNDA:22,(anonymous_3) -FNDA:5,(anonymous_4) -FNDA:8,(anonymous_5) -FNDA:3,(anonymous_6) -DA:1,16 -DA:2,16 -DA:3,16 -DA:4,16 -DA:5,16 -DA:15,16 -DA:17,1 -DA:18,1 -DA:20,1 -DA:24,22 -DA:28,5 -DA:30,5 -DA:31,1 -DA:33,4 -DA:34,1 -DA:37,3 -DA:42,8 -DA:43,8 -DA:44,3 -DA:47,5 -DA:53,3 -DA:54,3 -DA:56,3 -DA:57,3 -DA:59,3 -DA:64,2 -DA:65,1 -DA:68,1 -DA:70,1 -LF:29 -LH:29 -BRDA:30,0,0,1 -BRDA:33,1,0,1 -BRDA:43,2,0,3 -BRDA:64,3,0,1 -BRF:4 -BRH:4 -end_of_record -TN: -SF:src/services/LLM/actions/DeleteFileAction.ts -FN:15,(anonymous_2) -FN:22,(anonymous_3) -FN:26,(anonymous_4) -FN:36,(anonymous_5) -FN:59,(anonymous_6) -FNF:5 -FNH:5 -FNDA:5,(anonymous_2) -FNDA:6,(anonymous_3) -FNDA:5,(anonymous_4) -FNDA:3,(anonymous_5) -FNDA:5,(anonymous_6) -DA:1,16 -DA:2,16 -DA:3,16 -DA:4,16 -DA:5,16 -DA:14,16 -DA:16,5 -DA:17,5 -DA:19,5 -DA:23,6 -DA:27,5 -DA:29,5 -DA:30,2 -DA:33,3 -DA:39,3 -DA:40,3 -DA:42,3 -DA:43,3 -DA:45,3 -DA:46,2 -DA:47,2 -DA:50,1 -DA:51,1 -DA:53,0 -DA:54,0 -DA:55,0 -DA:61,5 -DA:62,5 -DA:64,0 -DA:67,5 -DA:68,5 -DA:69,2 -DA:72,3 -LF:33 -LH:29 -BRDA:29,0,0,2 -BRDA:29,1,0,5 -BRDA:29,1,1,4 -BRDA:45,2,0,2 -BRDA:68,3,0,2 -BRF:5 -BRH:5 -end_of_record -TN: -SF:src/services/LLM/actions/EndPhaseAction.ts -FN:11,(anonymous_2) -FN:18,(anonymous_3) -FN:29,(anonymous_4) -FN:34,(anonymous_5) -FNF:4 -FNH:4 -FNDA:5,(anonymous_2) -FNDA:2,(anonymous_3) -FNDA:2,(anonymous_4) -FNDA:6,(anonymous_5) -DA:1,16 -DA:2,16 -DA:3,16 -DA:4,16 -DA:5,16 -DA:10,16 -DA:13,5 -DA:15,5 -DA:21,2 -DA:22,2 -DA:23,1 -DA:25,1 -DA:31,2 -DA:35,6 -LF:14 -LH:14 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/services/LLM/actions/EndTaskAction.ts -FN:10,(anonymous_2) -FN:14,(anonymous_3) -FN:18,(anonymous_4) -FN:28,(anonymous_5) -FN:37,(anonymous_6) -FNF:5 -FNH:5 -FNDA:1,(anonymous_2) -FNDA:12,(anonymous_3) -FNDA:5,(anonymous_4) -FNDA:2,(anonymous_5) -FNDA:5,(anonymous_6) -DA:1,16 -DA:2,16 -DA:3,16 -DA:4,16 -DA:9,16 -DA:10,1 -DA:11,1 -DA:15,12 -DA:19,5 -DA:21,5 -DA:22,3 -DA:25,2 -DA:31,2 -DA:33,2 -DA:34,2 -DA:39,5 -DA:40,5 -LF:17 -LH:17 -BRDA:21,0,0,3 -BRF:1 -BRH:1 -end_of_record -TN: -SF:src/services/LLM/actions/FetchUrlAction.ts -FN:15,(anonymous_3) -FN:19,(anonymous_4) -FN:23,(anonymous_5) -FN:38,(anonymous_6) -FN:55,(anonymous_7) -FNF:5 -FNH:5 -FNDA:4,(anonymous_3) -FNDA:14,(anonymous_4) -FNDA:4,(anonymous_5) -FNDA:2,(anonymous_6) -FNDA:2,(anonymous_7) -DA:1,16 -DA:2,16 -DA:3,16 -DA:4,16 -DA:5,16 -DA:14,16 -DA:15,4 -DA:16,4 -DA:20,14 -DA:24,4 -DA:26,4 -DA:27,1 -DA:30,3 -DA:31,3 -DA:32,2 -DA:34,1 -DA:41,2 -DA:42,2 -DA:44,2 -DA:46,2 -DA:47,1 -DA:49,1 -DA:56,2 -DA:57,2 -DA:58,1 -DA:60,1 -DA:61,0 -DA:63,1 -LF:28 -LH:27 -BRDA:26,0,0,1 -BRDA:50,1,0,1 -BRDA:50,1,1,0 -BRDA:60,2,0,0 -BRF:4 -BRH:2 -end_of_record -TN: -SF:src/services/LLM/actions/MoveFileAction.ts -FN:16,(anonymous_2) -FN:23,(anonymous_3) -FN:27,(anonymous_4) -FN:46,(anonymous_5) -FN:57,(anonymous_6) -FN:70,(anonymous_7) -FNF:6 -FNH:6 -FNDA:5,(anonymous_2) -FNDA:21,(anonymous_3) -FNDA:5,(anonymous_4) -FNDA:10,(anonymous_5) -FNDA:5,(anonymous_6) -FNDA:3,(anonymous_7) -DA:1,17 -DA:2,17 -DA:3,17 -DA:4,17 -DA:5,17 -DA:15,17 -DA:17,5 -DA:18,5 -DA:20,5 -DA:24,21 -DA:29,5 -DA:30,5 -DA:31,5 -DA:32,0 -DA:33,0 -DA:36,5 -DA:37,5 -DA:41,5 -DA:46,5 -DA:47,10 -DA:48,8 -DA:51,5 -DA:58,5 -DA:60,5 -DA:61,1 -DA:63,4 -DA:64,1 -DA:67,3 -DA:73,3 -DA:74,3 -DA:76,3 -DA:77,3 -DA:79,3 -DA:84,3 -DA:85,1 -DA:88,2 -DA:90,0 -LF:37 -LH:34 -BRDA:31,0,0,0 -BRDA:47,1,0,2 -BRDA:48,2,0,0 -BRDA:48,2,1,8 -BRDA:48,3,0,0 -BRDA:48,3,1,0 -BRDA:60,4,0,1 -BRDA:63,5,0,1 -BRDA:84,6,0,1 -BRF:9 -BRH:5 -end_of_record -TN: -SF:src/services/LLM/actions/ReadFileAction.ts -FN:17,(anonymous_2) -FN:25,(anonymous_3) -FN:29,(anonymous_4) -FN:36,(anonymous_5) -FN:44,(anonymous_6) -FN:52,(anonymous_7) -FN:60,(anonymous_8) -FN:75,(anonymous_9) -FN:80,(anonymous_10) -FN:98,(anonymous_11) -FNF:10 -FNH:10 -FNDA:1,(anonymous_2) -FNDA:25,(anonymous_3) -FNDA:7,(anonymous_4) -FNDA:9,(anonymous_5) -FNDA:7,(anonymous_6) -FNDA:9,(anonymous_7) -FNDA:5,(anonymous_8) -FNDA:2,(anonymous_9) -FNDA:3,(anonymous_10) -FNDA:2,(anonymous_11) -DA:1,16 -DA:4,16 -DA:5,16 -DA:6,16 -DA:7,16 -DA:8,16 -DA:16,16 -DA:18,1 -DA:19,1 -DA:20,1 -DA:22,1 -DA:26,25 -DA:30,7 -DA:32,7 -DA:33,1 -DA:36,9 -DA:37,6 -DA:38,1 -DA:41,5 -DA:48,7 -DA:50,7 -DA:51,7 -DA:52,9 -DA:53,7 -DA:57,0 -DA:64,5 -DA:67,5 -DA:68,2 -DA:72,3 -DA:76,2 -DA:77,2 -DA:83,3 -DA:84,3 -DA:86,3 -DA:87,2 -DA:92,1 -DA:93,1 -DA:95,1 -DA:99,2 -DA:100,1 -DA:102,1 -DA:105,2 -DA:107,2 -LF:43 -LH:42 -BRDA:32,0,0,1 -BRDA:32,1,0,7 -BRDA:32,1,1,6 -BRDA:32,1,2,6 -BRDA:37,2,0,1 -BRDA:48,3,0,7 -BRDA:53,4,0,6 -BRDA:53,4,1,1 -BRDA:64,5,0,5 -BRDA:64,5,1,0 -BRDA:67,6,0,2 -BRDA:86,7,0,2 -BRDA:86,8,0,3 -BRDA:86,8,1,1 -BRDA:88,9,0,2 -BRDA:88,9,1,0 -BRDA:99,10,0,1 -BRDA:99,10,1,1 -BRDA:102,11,0,1 -BRDA:102,11,1,0 -BRF:20 -BRH:17 -end_of_record -TN: -SF:src/services/LLM/actions/RelativePathLookupAction.ts -FN:18,(anonymous_3) -FN:25,(anonymous_4) -FN:29,(anonymous_5) -FN:49,(anonymous_6) -FN:61,(anonymous_7) -FN:77,(anonymous_8) -FNF:6 -FNH:6 -FNDA:9,(anonymous_3) -FNDA:29,(anonymous_4) -FNDA:8,(anonymous_5) -FNDA:18,(anonymous_6) -FNDA:8,(anonymous_7) -FNDA:5,(anonymous_8) -DA:1,17 -DA:2,17 -DA:3,17 -DA:4,17 -DA:5,17 -DA:6,17 -DA:17,17 -DA:19,9 -DA:20,9 -DA:22,9 -DA:26,29 -DA:31,8 -DA:32,8 -DA:33,8 -DA:34,0 -DA:35,0 -DA:38,8 -DA:39,8 -DA:43,8 -DA:44,8 -DA:49,8 -DA:50,18 -DA:51,16 -DA:54,8 -DA:62,8 -DA:64,8 -DA:65,1 -DA:67,7 -DA:68,1 -DA:70,6 -DA:71,1 -DA:74,5 -DA:80,5 -DA:85,5 -DA:88,5 -DA:91,5 -DA:94,5 -DA:99,4 -DA:101,3 -DA:103,3 -DA:107,3 -DA:113,3 -DA:116,3 -DA:119,1 -DA:120,1 -DA:122,1 -DA:123,1 -LF:47 -LH:45 -BRDA:33,0,0,0 -BRDA:50,1,0,2 -BRDA:51,2,0,0 -BRDA:51,2,1,16 -BRDA:51,3,0,0 -BRDA:51,3,1,0 -BRDA:57,4,0,2 -BRDA:57,4,1,6 -BRDA:64,5,0,1 -BRDA:67,6,0,1 -BRDA:70,7,0,1 -BRDA:70,8,0,6 -BRDA:70,8,1,2 -BRDA:70,8,2,2 -BRDA:84,9,0,4 -BRDA:99,10,0,3 -BRDA:103,11,0,3 -BRDA:103,11,1,0 -BRF:18 -BRH:13 -end_of_record -TN: -SF:src/services/LLM/actions/SearchAction.ts -FN:22,(anonymous_2) -FN:29,(anonymous_3) -FN:37,(anonymous_4) -FN:43,(anonymous_5) -FN:59,(anonymous_6) -FN:70,(anonymous_7) -FN:83,(anonymous_8) -FNF:7 -FNH:7 -FNDA:7,(anonymous_2) -FNDA:7,(anonymous_3) -FNDA:41,(anonymous_4) -FNDA:7,(anonymous_5) -FNDA:14,(anonymous_6) -FNDA:7,(anonymous_7) -FNDA:5,(anonymous_8) -DA:1,17 -DA:2,17 -DA:3,17 -DA:4,17 -DA:8,17 -DA:19,17 -DA:20,7 -DA:23,7 -DA:24,7 -DA:26,7 -DA:31,7 -DA:34,7 -DA:38,41 -DA:45,7 -DA:46,7 -DA:47,7 -DA:48,0 -DA:49,0 -DA:52,7 -DA:53,7 -DA:57,7 -DA:59,7 -DA:60,14 -DA:61,12 -DA:64,7 -DA:71,7 -DA:73,7 -DA:74,1 -DA:76,6 -DA:77,1 -DA:80,5 -DA:86,5 -DA:87,5 -DA:89,5 -DA:90,5 -DA:91,5 -DA:94,5 -DA:95,2 -DA:97,3 -DA:100,5 -DA:101,2 -DA:102,2 -DA:105,3 -DA:106,3 -DA:108,0 -DA:109,0 -LF:46 -LH:42 -BRDA:31,0,0,2 -BRDA:31,0,1,5 -BRDA:38,1,0,14 -BRDA:38,1,1,27 -BRDA:47,2,0,0 -BRDA:60,3,0,2 -BRDA:61,4,0,0 -BRDA:61,4,1,12 -BRDA:61,5,0,0 -BRDA:61,5,1,0 -BRDA:73,6,0,1 -BRDA:76,7,0,1 -BRDA:94,8,0,2 -BRDA:94,8,1,3 -BRDA:100,9,0,2 -BRDA:100,10,0,5 -BRDA:100,10,1,5 -BRF:17 -BRH:13 -end_of_record -TN: -SF:src/services/LLM/actions/WriteFileAction.ts -FN:24,(anonymous_3) -FN:33,(anonymous_4) -FN:37,(anonymous_5) -FN:41,(anonymous_6) -FN:45,(anonymous_7) -FN:49,(anonymous_8) -FN:78,(anonymous_9) -FN:104,(anonymous_10) -FN:151,(anonymous_11) -FN:198,(anonymous_12) -FN:211,(anonymous_13) -FN:222,(anonymous_14) -FNF:12 -FNH:12 -FNDA:24,(anonymous_3) -FNDA:4,(anonymous_4) -FNDA:9,(anonymous_5) -FNDA:56,(anonymous_6) -FNDA:59,(anonymous_7) -FNDA:22,(anonymous_8) -FNDA:44,(anonymous_9) -FNDA:18,(anonymous_10) -FNDA:18,(anonymous_11) -FNDA:6,(anonymous_12) -FNDA:17,(anonymous_13) -FNDA:28,(anonymous_14) -DA:1,17 -DA:2,17 -DA:3,17 -DA:4,17 -DA:5,17 -DA:6,17 -DA:7,17 -DA:8,17 -DA:9,17 -DA:18,17 -DA:19,17 -DA:20,17 -DA:23,17 -DA:25,24 -DA:26,24 -DA:27,24 -DA:28,24 -DA:30,24 -DA:34,4 -DA:38,9 -DA:42,56 -DA:46,59 -DA:50,22 -DA:51,22 -DA:53,22 -DA:54,1 -DA:56,21 -DA:57,1 -DA:61,20 -DA:62,1 -DA:66,19 -DA:67,19 -DA:68,1 -DA:71,18 -DA:73,0 -DA:74,0 -DA:82,44 -DA:84,44 -DA:85,22 -DA:86,22 -DA:87,1 -DA:90,1 -DA:92,21 -DA:96,22 -DA:97,22 -DA:99,0 -DA:100,0 -DA:107,18 -DA:109,18 -DA:112,18 -DA:113,18 -DA:116,18 -DA:117,18 -DA:118,1 -DA:122,17 -DA:125,17 -DA:126,2 -DA:132,15 -DA:134,15 -DA:135,1 -DA:136,1 -DA:139,14 -DA:142,14 -DA:144,0 -DA:145,0 -DA:155,18 -DA:156,18 -DA:157,18 -DA:158,11 -DA:159,11 -DA:162,7 -DA:163,7 -DA:165,7 -DA:166,7 -DA:167,1 -DA:170,1 -DA:173,6 -DA:174,6 -DA:179,6 -DA:183,6 -DA:184,1 -DA:189,5 -DA:191,0 -DA:192,0 -DA:202,6 -DA:203,6 -DA:205,6 -DA:207,5 -DA:208,5 -DA:212,17 -DA:214,17 -DA:215,1 -DA:216,1 -DA:220,16 -DA:222,28 -DA:223,16 -DA:224,1 -DA:225,1 -DA:228,15 -DA:230,0 -DA:231,0 -LF:101 -LH:91 -BRDA:53,0,0,1 -BRDA:56,1,0,1 -BRDA:61,2,0,1 -BRDA:67,3,0,1 -BRDA:74,4,0,0 -BRDA:74,4,1,0 -BRDA:84,5,0,22 -BRDA:86,6,0,1 -BRDA:97,7,0,0 -BRDA:97,7,1,22 -BRDA:117,8,0,1 -BRDA:125,9,0,2 -BRDA:134,10,0,1 -BRDA:146,11,0,0 -BRDA:146,11,1,0 -BRDA:157,12,0,11 -BRDA:166,13,0,1 -BRDA:183,14,0,1 -BRDA:193,15,0,0 -BRDA:193,15,1,0 -BRDA:205,16,0,1 -BRDA:214,17,0,1 -BRDA:223,18,0,1 -BRF:23 -BRH:16 -end_of_record -TN: -SF:src/services/LLM/actions/blueprints/commandActionBlueprint.ts -FNF:0 -FNH:0 -DA:1,16 -DA:3,16 -DA:5,16 -LF:3 -LH:3 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/services/LLM/actions/blueprints/copyFileActionBlueprint.ts -FN:17,(anonymous_0) -FN:23,(anonymous_1) -FNF:2 -FNH:0 -FNDA:0,(anonymous_0) -FNDA:0,(anonymous_1) -DA:1,16 -DA:3,16 -DA:5,16 -DA:17,0 -DA:23,0 -LF:5 -LH:3 -BRDA:17,0,0,0 -BRDA:17,0,1,0 -BRDA:23,1,0,0 -BRDA:23,1,1,0 -BRF:4 -BRH:0 -end_of_record -TN: -SF:src/services/LLM/actions/blueprints/deleteFileActionBlueprint.ts -FN:17,(anonymous_0) -FNF:1 -FNH:0 -FNDA:0,(anonymous_0) -DA:2,16 -DA:3,16 -DA:5,16 -DA:17,0 -LF:4 -LH:3 -BRDA:17,0,0,0 -BRDA:17,0,1,0 -BRF:2 -BRH:0 -end_of_record -TN: -SF:src/services/LLM/actions/blueprints/endPhaseActionBlueprint.ts -FNF:0 -FNH:0 -DA:2,16 -DA:3,16 -DA:5,16 -LF:3 -LH:3 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/services/LLM/actions/blueprints/endTaskActionBlueprint.ts -FNF:0 -FNH:0 -DA:2,16 -DA:3,16 -DA:5,16 -LF:3 -LH:3 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/services/LLM/actions/blueprints/fetchUrlActionBlueprint.ts -FN:17,(anonymous_0) -FNF:1 -FNH:0 -FNDA:0,(anonymous_0) -DA:2,16 -DA:3,16 -DA:5,16 -DA:18,0 -LF:4 -LH:3 -BRDA:18,0,0,0 -BRDA:18,0,1,0 -BRDA:18,0,2,0 -BRDA:18,0,3,0 -BRF:4 -BRH:0 -end_of_record -TN: -SF:src/services/LLM/actions/blueprints/index.ts -FN:36,getBlueprint -FN:41,getActionTags -FN:46,isActionImplemented -FN:52,getImplementedActions -FNF:4 -FNH:4 -FNDA:122,getBlueprint -FNDA:133,getActionTags -FNDA:1596,isActionImplemented -FNDA:133,getImplementedActions -DA:2,16 -DA:3,16 -DA:4,16 -DA:5,16 -DA:6,16 -DA:7,16 -DA:8,16 -DA:9,16 -DA:10,16 -DA:11,16 -DA:15,16 -DA:17,16 -DA:36,16 -DA:37,122 -DA:41,16 -DA:42,133 -DA:46,16 -DA:47,1596 -DA:48,1596 -DA:52,16 -DA:53,133 -LF:21 -LH:21 -BRDA:48,0,0,1596 -BRDA:48,0,1,1596 -BRDA:48,0,2,1596 -BRF:3 -BRH:3 -end_of_record -TN: -SF:src/services/LLM/actions/blueprints/moveFileActionBlueprint.ts -FN:17,(anonymous_0) -FN:23,(anonymous_1) -FNF:2 -FNH:0 -FNDA:0,(anonymous_0) -FNDA:0,(anonymous_1) -DA:2,17 -DA:3,17 -DA:5,17 -DA:17,0 -DA:23,0 -LF:5 -LH:3 -BRDA:17,0,0,0 -BRDA:17,0,1,0 -BRDA:23,1,0,0 -BRDA:23,1,1,0 -BRF:4 -BRH:0 -end_of_record -TN: -SF:src/services/LLM/actions/blueprints/readFileActionBlueprint.ts -FN:18,(anonymous_0) -FNF:1 -FNH:0 -FNDA:0,(anonymous_0) -DA:2,16 -DA:3,16 -DA:5,16 -DA:19,0 -LF:4 -LH:3 -BRDA:19,0,0,0 -BRDA:19,0,1,0 -BRF:2 -BRH:0 -end_of_record -TN: -SF:src/services/LLM/actions/blueprints/relativePathLookupActionBlueprint.ts -FN:17,(anonymous_0) -FN:23,(anonymous_1) -FN:29,(anonymous_2) -FNF:3 -FNH:0 -FNDA:0,(anonymous_0) -FNDA:0,(anonymous_1) -FNDA:0,(anonymous_2) -DA:2,17 -DA:3,17 -DA:5,17 -DA:17,0 -DA:23,0 -DA:30,0 -LF:6 -LH:3 -BRDA:17,0,0,0 -BRDA:17,0,1,0 -BRDA:23,1,0,0 -BRDA:23,1,1,0 -BRDA:30,2,0,0 -BRDA:30,2,1,0 -BRDA:30,2,2,0 -BRDA:30,2,3,0 -BRF:8 -BRH:0 -end_of_record -TN: -SF:src/services/LLM/actions/blueprints/searchActionsBlueprint.ts -FN:17,(anonymous_0) -FN:23,(anonymous_1) -FN:40,(anonymous_2) -FN:46,(anonymous_3) -FNF:4 -FNH:0 -FNDA:0,(anonymous_0) -FNDA:0,(anonymous_1) -FNDA:0,(anonymous_2) -FNDA:0,(anonymous_3) -DA:2,17 -DA:3,17 -DA:5,17 -DA:17,0 -DA:23,0 -DA:28,17 -DA:40,0 -DA:46,0 -LF:8 -LH:4 -BRDA:17,0,0,0 -BRDA:17,0,1,0 -BRDA:23,1,0,0 -BRDA:23,1,1,0 -BRDA:40,2,0,0 -BRDA:40,2,1,0 -BRDA:46,3,0,0 -BRDA:46,3,1,0 -BRF:8 -BRH:0 -end_of_record -TN: -SF:src/services/LLM/actions/blueprints/writeFileActionBlueprint.ts -FN:18,(anonymous_0) -FN:26,(anonymous_1) -FNF:2 -FNH:0 -FNDA:0,(anonymous_0) -FNDA:0,(anonymous_1) -DA:2,17 -DA:3,17 -DA:5,17 -DA:19,0 -DA:26,0 -LF:5 -LH:3 -BRDA:19,0,0,0 -BRDA:19,0,1,0 -BRF:2 -BRH:0 -end_of_record -TN: -SF:src/services/LLM/actions/core/ActionFactory.ts -FN:14,(anonymous_2) -FN:17,(anonymous_3) -FN:25,(anonymous_4) -FN:29,(anonymous_5) -FN:33,(anonymous_6) -FN:55,(anonymous_7) -FNF:6 -FNH:4 -FNDA:100,(anonymous_2) -FNDA:1200,(anonymous_3) -FNDA:2,(anonymous_4) -FNDA:0,(anonymous_5) -FNDA:2,(anonymous_6) -FNDA:0,(anonymous_7) -DA:1,6 -DA:2,6 -DA:10,6 -DA:11,100 -DA:12,100 -DA:16,100 -DA:17,100 -DA:18,1200 -DA:19,1200 -DA:20,1200 -DA:26,2 -DA:30,0 -DA:35,2 -DA:36,0 -DA:39,2 -DA:40,2 -DA:41,0 -DA:44,2 -DA:46,2 -DA:47,2 -DA:48,2 -DA:50,0 -DA:51,0 -DA:56,0 -DA:57,0 -DA:58,0 -DA:61,0 -DA:62,0 -DA:65,0 -DA:66,0 -DA:67,0 -DA:70,0 -DA:71,0 -DA:72,0 -DA:73,0 -DA:78,0 -LF:36 -LH:18 -BRDA:19,0,0,1200 -BRDA:35,1,0,0 -BRDA:40,2,0,0 -BRDA:40,3,0,2 -BRDA:40,3,1,2 -BRDA:57,4,0,0 -BRDA:61,5,0,0 -BRDA:66,6,0,0 -BRDA:66,7,0,0 -BRDA:66,7,1,0 -BRDA:70,8,0,0 -BRDA:70,9,0,0 -BRDA:70,9,1,0 -BRDA:72,10,0,0 -BRF:14 -BRH:3 -end_of_record -TN: -SF:src/services/LLM/actions/core/ActionQueue.ts -FN:15,(anonymous_1) -FN:19,(anonymous_2) -FN:32,(anonymous_3) -FN:35,(anonymous_4) -FN:41,(anonymous_5) -FN:56,(anonymous_6) -FN:58,(anonymous_7) -FN:80,(anonymous_8) -FN:84,(anonymous_9) -FN:88,(anonymous_10) -FN:92,(anonymous_11) -FNF:11 -FNH:11 -FNDA:26,(anonymous_1) -FNDA:24,(anonymous_2) -FNDA:15,(anonymous_3) -FNDA:21,(anonymous_4) -FNDA:20,(anonymous_5) -FNDA:8,(anonymous_6) -FNDA:7,(anonymous_7) -FNDA:5,(anonymous_8) -FNDA:7,(anonymous_9) -FNDA:6,(anonymous_10) -FNDA:17,(anonymous_11) -DA:1,7 -DA:2,7 -DA:3,7 -DA:15,7 -DA:16,26 -DA:17,26 -DA:20,24 -DA:21,24 -DA:22,24 -DA:24,24 -DA:32,24 -DA:36,21 -DA:37,1 -DA:41,20 -DA:43,20 -DA:44,0 -DA:48,20 -DA:49,12 -DA:50,12 -DA:53,20 -DA:57,8 -DA:58,7 -DA:61,8 -DA:62,7 -DA:64,7 -DA:66,5 -DA:68,5 -DA:69,2 -DA:75,1 -DA:81,5 -DA:85,7 -DA:89,6 -DA:93,17 -DA:94,17 -LF:34 -LH:33 -BRDA:21,0,0,24 -BRDA:21,0,1,0 -BRDA:22,1,0,24 -BRDA:22,1,1,16 -BRDA:36,2,0,1 -BRDA:43,3,0,0 -BRDA:48,4,0,12 -BRDA:58,5,0,7 -BRDA:58,5,1,7 -BRDA:61,6,0,7 -BRDA:64,7,0,5 -BRDA:64,7,1,2 -BRDA:64,8,0,7 -BRDA:64,8,1,6 -BRDA:69,9,0,1 -BRDA:69,9,1,1 -BRDA:69,10,0,2 -BRDA:69,10,1,1 -BRF:18 -BRH:16 -end_of_record -TN: -SF:src/services/LLM/actions/core/BaseAction.ts -FN:6,(anonymous_0) -FN:14,(anonymous_1) -FN:17,(anonymous_2) -FN:31,(anonymous_3) -FN:38,(anonymous_4) -FN:75,(anonymous_5) -FN:79,(anonymous_6) -FN:83,(anonymous_7) -FN:87,(anonymous_8) -FN:94,(anonymous_9) -FNF:10 -FNH:10 -FNDA:71,(anonymous_0) -FNDA:40,(anonymous_1) -FNDA:65,(anonymous_2) -FNDA:36,(anonymous_3) -FNDA:74,(anonymous_4) -FNDA:31,(anonymous_5) -FNDA:54,(anonymous_6) -FNDA:48,(anonymous_7) -FNDA:57,(anonymous_8) -FNDA:40,(anonymous_9) -DA:5,20 -DA:6,71 -DA:15,40 -DA:17,65 -DA:19,40 -DA:20,40 -DA:21,65 -DA:22,65 -DA:23,59 -DA:27,40 -DA:35,36 -DA:39,74 -DA:41,74 -DA:42,74 -DA:43,0 -DA:47,74 -DA:50,74 -DA:51,74 -DA:52,21 -DA:53,21 -DA:57,53 -DA:60,53 -DA:61,40 -DA:63,13 -DA:66,53 -DA:69,0 -DA:70,0 -DA:71,0 -DA:76,31 -DA:80,54 -DA:84,48 -DA:88,57 -DA:95,40 -DA:96,40 -LF:34 -LH:30 -BRDA:17,0,0,40 -BRDA:17,0,1,0 -BRDA:22,1,0,59 -BRDA:42,2,0,0 -BRDA:51,3,0,21 -BRDA:60,4,0,40 -BRDA:60,4,1,13 -BRDA:69,5,0,0 -BRDA:69,5,1,0 -BRDA:95,6,0,27 -BRDA:95,6,1,13 -BRF:11 -BRH:7 -end_of_record -TN: -SF:src/services/LLM/actions/types/ActionPriority.ts -FN:1,(anonymous_0) -FNF:1 -FNH:1 -FNDA:21,(anonymous_0) -DA:1,21 -DA:6,21 -DA:12,21 -DA:18,21 -DA:24,21 -DA:30,21 -LF:6 -LH:6 -BRDA:1,0,0,21 -BRDA:1,0,1,21 -BRF:2 -BRH:2 -end_of_record -TN: -SF:src/services/LLM/context/MessageContextBuilder.ts -FN:16,(anonymous_2) -FN:18,(anonymous_3) -FN:49,(anonymous_4) -FN:77,(anonymous_5) -FN:138,(anonymous_6) -FN:150,(anonymous_7) -FN:163,(anonymous_8) -FN:220,(anonymous_9) -FN:225,(anonymous_10) -FN:229,(anonymous_11) -FN:236,(anonymous_12) -FNF:11 -FNH:10 -FNDA:85,(anonymous_2) -FNDA:20,(anonymous_3) -FNDA:3,(anonymous_4) -FNDA:18,(anonymous_5) -FNDA:5,(anonymous_6) -FNDA:0,(anonymous_7) -FNDA:3,(anonymous_8) -FNDA:1,(anonymous_9) -FNDA:1,(anonymous_10) -FNDA:2,(anonymous_11) -FNDA:2,(anonymous_12) -DA:2,25 -DA:3,25 -DA:15,25 -DA:16,85 -DA:24,20 -DA:25,1 -DA:28,19 -DA:29,19 -DA:30,19 -DA:31,19 -DA:32,19 -DA:33,19 -DA:34,19 -DA:36,19 -DA:38,2 -DA:39,2 -DA:46,19 -DA:48,19 -DA:50,3 -DA:51,0 -DA:54,0 -DA:59,3 -DA:60,3 -DA:68,19 -DA:85,18 -DA:86,18 -DA:88,18 -DA:89,4 -DA:91,4 -DA:92,2 -DA:95,2 -DA:101,2 -DA:108,14 -DA:111,14 -DA:112,2 -DA:115,12 -DA:121,12 -DA:129,14 -DA:141,5 -DA:145,5 -DA:148,5 -DA:150,0 -DA:152,5 -DA:153,1 -DA:160,5 -DA:163,3 -DA:166,5 -DA:167,4 -DA:170,2 -DA:175,2 -DA:176,2 -DA:180,2 -DA:187,2 -DA:192,2 -DA:196,2 -DA:206,2 -DA:213,5 -DA:223,1 -DA:225,1 -DA:226,1 -DA:233,2 -DA:240,2 -LF:62 -LH:59 -BRDA:24,0,0,1 -BRDA:36,1,0,2 -BRDA:50,2,0,0 -BRDA:50,2,1,3 -BRDA:88,3,0,4 -BRDA:88,3,1,14 -BRDA:91,4,0,2 -BRDA:91,5,0,4 -BRDA:91,5,1,2 -BRDA:95,6,0,2 -BRDA:95,6,1,2 -BRDA:111,7,0,2 -BRDA:111,8,0,14 -BRDA:111,8,1,5 -BRDA:115,9,0,12 -BRDA:115,9,1,9 -BRDA:141,10,0,1 -BRDA:141,10,1,4 -BRDA:152,11,0,1 -BRDA:167,12,0,2 -BRDA:167,12,1,2 -BRDA:170,13,0,2 -BRDA:170,13,1,0 -BRDA:171,14,0,1 -BRDA:171,14,1,1 -BRDA:175,15,0,1 -BRDA:175,15,1,1 -BRDA:176,16,0,2 -BRDA:176,16,1,0 -BRDA:187,17,0,2 -BRDA:187,17,1,0 -BRDA:188,18,0,1 -BRDA:188,18,1,1 -BRDA:192,19,0,1 -BRDA:192,19,1,1 -BRDA:196,20,0,0 -BRDA:196,20,1,2 -BRDA:196,21,0,2 -BRDA:196,21,1,1 -BRDA:198,22,0,0 -BRDA:198,22,1,0 -BRDA:200,23,0,1 -BRDA:200,23,1,1 -BRDA:203,24,0,2 -BRDA:203,24,1,0 -BRDA:226,25,0,1 -BRDA:226,25,1,0 -BRF:47 -BRH:38 -end_of_record -TN: -SF:src/services/LLM/context/MessageContextCleanup.ts -FN:10,(anonymous_2) -FN:18,(anonymous_3) -FN:22,(anonymous_4) -FN:28,(anonymous_5) -FNF:4 -FNH:4 -FNDA:82,(anonymous_2) -FNDA:8,(anonymous_3) -FNDA:13,(anonymous_4) -FNDA:8,(anonymous_5) -DA:1,9 -DA:2,9 -DA:3,9 -DA:4,9 -DA:5,9 -DA:6,9 -DA:9,9 -DA:11,82 -DA:12,82 -DA:13,82 -DA:14,82 -DA:15,82 -DA:19,8 -DA:20,8 -DA:22,8 -DA:23,13 -DA:25,8 -DA:27,8 -DA:28,8 -DA:32,8 -DA:33,6 -DA:36,2 -DA:38,2 -DA:40,2 -DA:41,5 -DA:42,5 -DA:43,5 -DA:46,2 -DA:51,2 -DA:52,2 -DA:56,2 -DA:61,2 -DA:66,2 -DA:67,2 -DA:69,0 -LF:35 -LH:34 -BRDA:32,0,0,6 -BRDA:40,1,0,7 -BRDA:40,1,1,6 -BRDA:42,2,0,5 -BRDA:51,3,0,2 -BRF:5 -BRH:5 -end_of_record -TN: -SF:src/services/LLM/context/MessageContextExtractor.ts -FN:11,(anonymous_1) -FN:21,(anonymous_2) -FN:29,(anonymous_3) -FN:43,(anonymous_4) -FN:57,(anonymous_5) -FN:70,(anonymous_6) -FNF:6 -FNH:6 -FNDA:4,(anonymous_1) -FNDA:16,(anonymous_2) -FNDA:1,(anonymous_3) -FNDA:1,(anonymous_4) -FNDA:1,(anonymous_5) -FNDA:22,(anonymous_6) -DA:1,26 -DA:10,26 -DA:12,4 -DA:22,16 -DA:23,16 -DA:26,16 -DA:29,16 -DA:30,1 -DA:31,1 -DA:40,16 -DA:43,16 -DA:44,1 -DA:45,1 -DA:54,16 -DA:57,16 -DA:58,1 -DA:59,1 -DA:67,16 -DA:71,22 -DA:72,22 -LF:20 -LH:20 -BRDA:30,0,0,1 -BRDA:44,1,0,1 -BRDA:58,2,0,1 -BRDA:72,3,0,4 -BRDA:72,3,1,18 -BRF:5 -BRH:5 -end_of_record -TN: -SF:src/services/LLM/context/MessageContextHistory.ts -FN:14,(anonymous_2) -FN:21,(anonymous_3) -FN:27,(anonymous_4) -FN:36,(anonymous_5) -FN:63,(anonymous_6) -FN:68,(anonymous_7) -FN:72,(anonymous_8) -FN:77,(anonymous_9) -FN:120,(anonymous_10) -FN:126,(anonymous_11) -FN:131,(anonymous_12) -FN:137,(anonymous_13) -FN:141,(anonymous_14) -FNF:13 -FNH:12 -FNDA:83,(anonymous_2) -FNDA:2,(anonymous_3) -FNDA:2,(anonymous_4) -FNDA:16,(anonymous_5) -FNDA:16,(anonymous_6) -FNDA:0,(anonymous_7) -FNDA:3,(anonymous_8) -FNDA:3,(anonymous_9) -FNDA:1,(anonymous_10) -FNDA:1,(anonymous_11) -FNDA:1,(anonymous_12) -FNDA:1,(anonymous_13) -FNDA:3,(anonymous_14) -DA:2,23 -DA:3,23 -DA:4,23 -DA:5,23 -DA:9,23 -DA:13,23 -DA:15,83 -DA:16,83 -DA:17,83 -DA:18,83 -DA:23,2 -DA:24,2 -DA:26,1 -DA:27,2 -DA:29,1 -DA:30,1 -DA:37,16 -DA:38,1 -DA:41,15 -DA:42,1 -DA:45,14 -DA:51,14 -DA:53,14 -DA:54,13 -DA:60,14 -DA:64,16 -DA:65,1 -DA:69,0 -DA:73,3 -DA:74,1 -DA:83,3 -DA:85,3 -DA:86,1 -DA:87,1 -DA:95,2 -DA:96,1 -DA:97,1 -DA:105,1 -DA:106,1 -DA:107,1 -DA:117,3 -DA:121,1 -DA:127,1 -DA:128,1 -DA:132,1 -DA:138,1 -DA:142,3 -DA:143,1 -LF:48 -LH:47 -BRDA:24,0,0,1 -BRDA:36,1,0,15 -BRDA:37,2,0,1 -BRDA:41,3,0,1 -BRDA:53,4,0,13 -BRDA:64,5,0,15 -BRDA:64,6,0,16 -BRDA:64,6,1,2 -BRDA:73,7,0,2 -BRDA:73,8,0,3 -BRDA:73,8,1,2 -BRDA:85,9,0,1 -BRDA:85,9,1,2 -BRDA:95,10,0,1 -BRDA:95,10,1,1 -BRDA:105,11,0,1 -BRDA:142,12,0,2 -BRDA:142,13,0,3 -BRDA:142,13,1,2 -BRF:19 -BRH:19 -end_of_record -TN: -SF:src/services/LLM/context/MessageContextLimiter.ts -FN:10,(anonymous_2) -FN:16,(anonymous_3) -FN:26,(anonymous_4) -FN:35,(anonymous_5) -FNF:4 -FNH:1 -FNDA:54,(anonymous_2) -FNDA:0,(anonymous_3) -FNDA:0,(anonymous_4) -FNDA:0,(anonymous_5) -DA:1,6 -DA:2,6 -DA:3,6 -DA:5,6 -DA:9,6 -DA:11,54 -DA:12,54 -DA:13,54 -DA:17,0 -DA:19,0 -DA:20,0 -DA:21,0 -DA:23,0 -DA:28,0 -DA:29,0 -DA:36,0 -LF:16 -LH:8 -BRDA:19,0,0,0 -BRDA:28,1,0,0 -BRDA:28,2,0,0 -BRDA:28,2,1,0 -BRF:4 -BRH:0 -end_of_record -TN: -SF:src/services/LLM/context/MessageContextLogger.ts -FN:22,(anonymous_10) -FN:45,(anonymous_11) -FN:50,(anonymous_12) -FN:57,(anonymous_13) -FN:76,(anonymous_14) -FN:92,(anonymous_15) -FN:108,(anonymous_16) -FN:143,(anonymous_17) -FN:160,(anonymous_18) -FN:194,(anonymous_19) -FN:198,(anonymous_20) -FN:202,(anonymous_21) -FN:206,(anonymous_22) -FNF:13 -FNH:13 -FNDA:84,(anonymous_10) -FNDA:84,(anonymous_11) -FNDA:106,(anonymous_12) -FNDA:103,(anonymous_13) -FNDA:3,(anonymous_14) -FNDA:4,(anonymous_15) -FNDA:11,(anonymous_16) -FNDA:4,(anonymous_17) -FNDA:4,(anonymous_18) -FNDA:1,(anonymous_19) -FNDA:2,(anonymous_20) -FNDA:4,(anonymous_21) -FNDA:2,(anonymous_22) -DA:1,24 -DA:3,24 -DA:4,24 -DA:5,24 -DA:6,24 -DA:7,24 -DA:8,24 -DA:17,24 -DA:23,84 -DA:24,84 -DA:26,84 -DA:28,84 -DA:30,84 -DA:31,84 -DA:36,84 -DA:41,84 -DA:42,84 -DA:46,84 -DA:47,84 -DA:51,106 -DA:52,106 -DA:53,2 -DA:58,103 -DA:59,103 -DA:60,2 -DA:61,1 -DA:68,1 -DA:77,3 -DA:78,3 -DA:79,3 -DA:80,2 -DA:81,2 -DA:85,1 -DA:93,4 -DA:94,4 -DA:95,4 -DA:96,4 -DA:97,4 -DA:98,4 -DA:99,3 -DA:101,1 -DA:109,11 -DA:110,11 -DA:111,11 -DA:112,11 -DA:113,11 -DA:114,11 -DA:119,11 -DA:120,11 -DA:123,10 -DA:125,10 -DA:133,10 -DA:135,1 -DA:147,4 -DA:148,4 -DA:149,4 -DA:151,4 -DA:152,3 -DA:153,3 -DA:160,3 -DA:161,4 -DA:162,4 -DA:169,3 -DA:175,3 -DA:181,3 -DA:187,1 -DA:195,1 -DA:199,2 -DA:203,4 -DA:207,2 -DA:208,2 -DA:209,1 -DA:211,1 -DA:216,1 -LF:74 -LH:74 -BRDA:47,0,0,84 -BRDA:47,0,1,84 -BRDA:52,1,0,2 -BRDA:59,2,0,2 -BRDA:113,3,0,5 -BRDA:113,3,1,6 -BRDA:114,4,0,6 -BRDA:114,4,1,5 -BRDA:116,5,0,3 -BRDA:116,5,1,2 -BRDA:128,6,0,10 -BRDA:128,6,1,8 -BRDA:151,7,0,3 -BRF:13 -BRH:13 -end_of_record -TN: -SF:src/services/LLM/context/MessageContextPhase.ts -FN:13,(anonymous_2) -FN:21,(anonymous_3) -FN:36,(anonymous_4) -FNF:3 -FNH:1 -FNDA:2,(anonymous_2) -FNDA:0,(anonymous_3) -FNDA:0,(anonymous_4) -DA:2,19 -DA:3,19 -DA:4,19 -DA:6,19 -DA:7,19 -DA:8,19 -DA:12,19 -DA:14,2 -DA:15,2 -DA:16,2 -DA:17,2 -DA:18,2 -DA:22,0 -DA:25,0 -DA:33,0 -DA:37,0 -LF:16 -LH:12 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/services/LLM/context/MessageContextStore.ts -FN:37,(anonymous_1) -FN:46,(anonymous_2) -FN:50,(anonymous_3) -FN:75,(anonymous_4) -FN:85,(anonymous_5) -FN:89,(anonymous_6) -FN:94,(anonymous_7) -FNF:7 -FNH:7 -FNDA:86,(anonymous_1) -FNDA:51,(anonymous_2) -FNDA:57,(anonymous_3) -FNDA:2,(anonymous_4) -FNDA:1,(anonymous_5) -FNDA:2,(anonymous_6) -FNDA:4,(anonymous_7) -DA:2,26 -DA:37,26 -DA:38,86 -DA:47,51 -DA:51,57 -DA:76,2 -DA:86,1 -DA:90,2 -DA:91,2 -DA:92,1 -DA:94,2 -DA:95,4 -DA:97,2 -LF:13 -LH:13 -BRDA:53,0,0,48 -BRDA:53,0,1,9 -BRDA:54,1,0,48 -BRDA:54,1,1,0 -BRDA:57,2,0,50 -BRDA:57,2,1,7 -BRDA:58,3,0,50 -BRDA:58,3,1,0 -BRDA:61,4,0,50 -BRDA:61,4,1,7 -BRDA:62,5,0,50 -BRDA:62,5,1,0 -BRDA:65,6,0,50 -BRDA:65,6,1,7 -BRDA:69,7,0,48 -BRDA:69,7,1,9 -BRDA:91,8,0,1 -BRF:17 -BRH:14 -end_of_record -TN: -SF:src/services/LLM/context/MessageContextTokenCount.ts -FN:6,(anonymous_2) -FN:8,(anonymous_3) -FN:12,(anonymous_4) -FN:23,(anonymous_5) -FNF:4 -FNH:2 -FNDA:54,(anonymous_2) -FNDA:0,(anonymous_3) -FNDA:3,(anonymous_4) -FNDA:0,(anonymous_5) -DA:1,7 -DA:2,7 -DA:5,7 -DA:6,54 -DA:9,0 -DA:13,3 -DA:14,3 -DA:15,3 -DA:16,3 -DA:18,3 -DA:19,0 -DA:22,3 -DA:23,0 -LF:13 -LH:10 -BRDA:18,0,0,0 -BRF:1 -BRH:0 -end_of_record -TN: -SF:src/services/LLM/context/MessageConversationLogger.ts -FN:20,(anonymous_8) -FN:39,(anonymous_9) -FN:44,(anonymous_10) -FN:51,(anonymous_11) -FN:70,(anonymous_12) -FN:87,(anonymous_13) -FN:103,(anonymous_14) -FN:125,(anonymous_15) -FN:142,(anonymous_16) -FN:180,(anonymous_17) -FN:184,(anonymous_18) -FN:188,(anonymous_19) -FN:192,(anonymous_20) -FNF:13 -FNH:10 -FNDA:5,(anonymous_8) -FNDA:5,(anonymous_9) -FNDA:9,(anonymous_10) -FNDA:8,(anonymous_11) -FNDA:1,(anonymous_12) -FNDA:2,(anonymous_13) -FNDA:0,(anonymous_14) -FNDA:1,(anonymous_15) -FNDA:2,(anonymous_16) -FNDA:0,(anonymous_17) -FNDA:0,(anonymous_18) -FNDA:1,(anonymous_19) -FNDA:1,(anonymous_20) -DA:1,1 -DA:3,1 -DA:4,1 -DA:5,1 -DA:6,1 -DA:15,1 -DA:21,5 -DA:22,5 -DA:24,5 -DA:25,5 -DA:30,5 -DA:35,5 -DA:36,5 -DA:40,5 -DA:41,5 -DA:45,9 -DA:46,9 -DA:47,0 -DA:52,8 -DA:53,8 -DA:54,0 -DA:55,0 -DA:62,0 -DA:71,1 -DA:72,1 -DA:73,1 -DA:74,1 -DA:75,1 -DA:79,0 -DA:88,2 -DA:89,2 -DA:90,2 -DA:91,2 -DA:92,2 -DA:93,2 -DA:94,2 -DA:96,0 -DA:104,0 -DA:105,0 -DA:106,0 -DA:107,0 -DA:108,0 -DA:109,0 -DA:114,0 -DA:115,0 -DA:117,0 -DA:129,1 -DA:130,1 -DA:131,1 -DA:133,1 -DA:134,0 -DA:135,0 -DA:142,1 -DA:143,2 -DA:144,2 -DA:151,1 -DA:157,1 -DA:163,1 -DA:173,0 -DA:181,0 -DA:185,0 -DA:189,1 -DA:193,1 -DA:194,1 -DA:195,1 -DA:197,0 -DA:202,0 -LF:67 -LH:45 -BRDA:41,0,0,5 -BRDA:41,0,1,0 -BRDA:46,1,0,0 -BRDA:53,2,0,0 -BRDA:108,3,0,0 -BRDA:108,3,1,0 -BRDA:109,4,0,0 -BRDA:109,4,1,0 -BRDA:111,5,0,0 -BRDA:111,5,1,0 -BRDA:133,6,0,0 -BRF:11 -BRH:1 -end_of_record -TN: -SF:src/services/LLM/phases/blueprints/discoveryPhaseBlueprint.ts -FN:10,(anonymous_0) -FNF:1 -FNH:0 -FNDA:0,(anonymous_0) -DA:1,25 -DA:2,25 -DA:5,25 -DA:6,25 -DA:8,25 -DA:10,0 -LF:6 -LH:5 -BRDA:100,0,0,0 -BRDA:100,0,1,0 -BRDA:101,1,0,0 -BRDA:101,1,1,0 -BRDA:102,2,0,0 -BRDA:102,2,1,0 -BRDA:105,3,0,0 -BRDA:105,3,1,0 -BRDA:107,4,0,0 -BRDA:107,4,1,0 -BRF:10 -BRH:0 -end_of_record -TN: -SF:src/services/LLM/phases/blueprints/executePhaseBlueprint.ts -FN:10,(anonymous_0) -FNF:1 -FNH:0 -FNDA:0,(anonymous_0) -DA:1,25 -DA:2,25 -DA:5,25 -DA:6,25 -DA:8,25 -DA:10,0 -LF:6 -LH:5 -BRDA:161,0,0,0 -BRDA:161,0,1,0 -BRDA:162,1,0,0 -BRDA:162,1,1,0 -BRDA:163,2,0,0 -BRDA:163,2,1,0 -BRDA:251,3,0,0 -BRDA:251,3,1,0 -BRF:8 -BRH:0 -end_of_record -TN: -SF:src/services/LLM/phases/blueprints/index.ts -FNF:0 -FNH:0 -DA:1,25 -DA:2,25 -DA:3,25 -DA:4,25 -DA:6,25 -DA:12,25 -DA:13,25 -DA:14,25 -LF:8 -LH:8 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/services/LLM/phases/blueprints/strategyPhaseBlueprint.ts -FN:10,(anonymous_0) -FNF:1 -FNH:0 -FNDA:0,(anonymous_0) -DA:1,25 -DA:2,25 -DA:5,25 -DA:6,25 -DA:8,25 -DA:10,0 -LF:6 -LH:5 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/services/LLM/types/PhaseTypes.ts -FN:1,(anonymous_0) -FNF:1 -FNH:1 -FNDA:25,(anonymous_0) -DA:1,25 -DA:2,25 -DA:3,25 -DA:4,25 -LF:4 -LH:4 -BRDA:1,0,0,25 -BRDA:1,0,1,25 -BRF:2 -BRH:2 -end_of_record -TN: -SF:src/services/LLM/utils/ModelUtils.ts -FN:28,(anonymous_0) -FN:32,(anonymous_1) -FN:39,(anonymous_2) -FN:58,(anonymous_3) -FN:69,(anonymous_4) -FN:96,(anonymous_5) -FN:123,(anonymous_6) -FN:130,(anonymous_7) -FN:135,(anonymous_8) -FN:138,(anonymous_9) -FN:148,(anonymous_10) -FNF:11 -FNH:10 -FNDA:56,(anonymous_0) -FNDA:21,(anonymous_1) -FNDA:29,(anonymous_2) -FNDA:22,(anonymous_3) -FNDA:21,(anonymous_4) -FNDA:26,(anonymous_5) -FNDA:4,(anonymous_6) -FNDA:2,(anonymous_7) -FNDA:3,(anonymous_8) -FNDA:4,(anonymous_9) -FNDA:0,(anonymous_10) -DA:16,7 -DA:18,7 -DA:19,7 -DA:22,7 -DA:28,7 -DA:29,56 -DA:32,7 -DA:35,21 -DA:36,21 -DA:39,7 -DA:41,29 -DA:42,29 -DA:43,29 -DA:45,29 -DA:46,4 -DA:47,4 -DA:48,4 -DA:49,4 -DA:53,29 -DA:55,29 -DA:58,7 -DA:63,22 -DA:65,20 -DA:66,20 -DA:69,7 -DA:70,21 -DA:71,16 -DA:74,5 -DA:75,5 -DA:77,5 -DA:78,10 -DA:79,10 -DA:81,5 -DA:84,5 -DA:85,1 -DA:88,10 -DA:89,10 -DA:90,10 -DA:93,5 -DA:96,7 -DA:102,26 -DA:103,10 -DA:106,16 -DA:107,16 -DA:108,16 -DA:111,16 -DA:112,14 -DA:122,2 -DA:123,4 -DA:130,2 -DA:133,2 -DA:134,2 -DA:135,3 -DA:138,4 -DA:148,0 -LF:55 -LH:54 -BRDA:36,0,0,21 -BRDA:36,0,1,1 -BRDA:41,1,0,29 -BRDA:41,1,1,26 -BRDA:63,2,0,2 -BRDA:63,3,0,22 -BRDA:63,3,1,21 -BRDA:70,4,0,16 -BRDA:79,5,0,5 -BRDA:84,6,0,1 -BRDA:102,7,0,10 -BRDA:111,8,0,14 -BRDA:116,9,0,14 -BRDA:116,9,1,2 -BRDA:122,10,0,2 -BRDA:141,11,0,4 -BRDA:141,11,1,3 -BRF:17 -BRH:17 -end_of_record -TN: -SF:src/services/LLM/utils/ProjectInfo.ts -FN:13,(anonymous_3) -FN:15,(anonymous_4) -FN:29,(anonymous_5) -FN:30,(anonymous_6) -FN:59,(anonymous_7) -FN:81,(anonymous_8) -FN:93,(anonymous_9) -FN:94,(anonymous_10) -FN:95,(anonymous_11) -FN:108,(anonymous_12) -FN:119,(anonymous_13) -FN:144,(anonymous_14) -FN:153,(anonymous_15) -FNF:13 -FNH:13 -FNDA:104,(anonymous_3) -FNDA:5,(anonymous_4) -FNDA:17,(anonymous_5) -FNDA:17,(anonymous_6) -FNDA:1,(anonymous_7) -FNDA:1,(anonymous_8) -FNDA:5,(anonymous_9) -FNDA:5,(anonymous_10) -FNDA:2,(anonymous_11) -FNDA:1,(anonymous_12) -FNDA:5,(anonymous_13) -FNDA:1,(anonymous_14) -FNDA:10,(anonymous_15) -DA:1,6 -DA:2,6 -DA:3,6 -DA:12,6 -DA:16,5 -DA:19,5 -DA:29,5 -DA:30,17 -DA:33,5 -DA:34,1 -DA:40,4 -DA:42,1 -DA:45,1 -DA:47,1 -DA:49,1 -DA:51,0 -DA:63,1 -DA:64,1 -DA:65,1 -DA:66,1 -DA:68,1 -DA:77,0 -DA:85,1 -DA:86,1 -DA:87,1 -DA:88,1 -DA:90,1 -DA:91,1 -DA:93,5 -DA:94,5 -DA:95,2 -DA:98,1 -DA:104,0 -DA:112,1 -DA:113,1 -DA:114,1 -DA:116,1 -DA:117,1 -DA:119,1 -DA:120,5 -DA:121,1 -DA:122,4 -DA:123,0 -DA:124,4 -DA:125,2 -DA:126,2 -DA:130,1 -DA:140,0 -DA:148,1 -DA:149,1 -DA:150,1 -DA:152,1 -DA:153,1 -DA:154,10 -DA:155,10 -DA:156,2 -DA:160,1 -DA:170,0 -LF:58 -LH:52 -BRDA:30,0,0,17 -BRDA:30,0,1,17 -BRDA:33,1,0,1 -BRDA:40,2,0,1 -BRDA:40,2,1,1 -BRDA:40,2,2,1 -BRDA:40,2,3,1 -BRDA:40,2,4,1 -BRDA:40,2,5,0 -BRDA:70,3,0,1 -BRDA:70,3,1,0 -BRDA:71,4,0,1 -BRDA:71,4,1,0 -BRDA:73,5,0,1 -BRDA:73,5,1,0 -BRDA:90,6,0,1 -BRDA:94,7,0,5 -BRDA:94,7,1,3 -BRDA:120,8,0,1 -BRDA:120,8,1,4 -BRDA:122,9,0,0 -BRDA:122,9,1,4 -BRDA:124,10,0,2 -BRDA:124,11,0,4 -BRDA:124,11,1,3 -BRDA:155,12,0,2 -BRDA:155,13,0,10 -BRDA:155,13,1,10 -BRF:28 -BRH:23 -end_of_record -TN: -SF:src/services/LLMProviders/OpenRouter/OpenRouterAPI.ts -FN:25,(anonymous_4) -FN:54,(anonymous_5) -FN:70,(anonymous_6) -FN:80,(anonymous_7) -FN:91,(anonymous_8) -FN:108,(anonymous_9) -FN:146,(anonymous_10) -FN:152,(anonymous_11) -FN:155,(anonymous_12) -FN:166,(anonymous_13) -FN:205,(anonymous_14) -FN:217,(anonymous_15) -FN:221,(anonymous_16) -FN:225,(anonymous_17) -FN:232,(anonymous_18) -FN:241,(anonymous_19) -FN:245,(anonymous_20) -FN:250,(anonymous_21) -FN:276,(anonymous_22) -FN:287,(anonymous_23) -FN:298,(anonymous_24) -FN:315,(anonymous_25) -FN:353,(anonymous_26) -FN:374,(anonymous_27) -FN:396,(anonymous_28) -FN:414,(anonymous_29) -FN:415,(anonymous_30) -FN:420,(anonymous_31) -FN:447,(anonymous_32) -FN:511,(anonymous_33) -FN:521,(anonymous_34) -FNF:31 -FNH:29 -FNDA:7,(anonymous_4) -FNDA:54,(anonymous_5) -FNDA:54,(anonymous_6) -FNDA:15,(anonymous_7) -FNDA:15,(anonymous_8) -FNDA:1,(anonymous_9) -FNDA:15,(anonymous_10) -FNDA:20,(anonymous_11) -FNDA:20,(anonymous_12) -FNDA:9,(anonymous_13) -FNDA:2,(anonymous_14) -FNDA:1,(anonymous_15) -FNDA:16,(anonymous_16) -FNDA:3,(anonymous_17) -FNDA:1,(anonymous_18) -FNDA:1,(anonymous_19) -FNDA:0,(anonymous_20) -FNDA:3,(anonymous_21) -FNDA:7,(anonymous_22) -FNDA:1,(anonymous_23) -FNDA:3,(anonymous_24) -FNDA:11,(anonymous_25) -FNDA:11,(anonymous_26) -FNDA:6,(anonymous_27) -FNDA:6,(anonymous_28) -FNDA:4,(anonymous_29) -FNDA:0,(anonymous_30) -FNDA:11,(anonymous_31) -FNDA:4,(anonymous_32) -FNDA:10,(anonymous_33) -FNDA:1,(anonymous_34) -DA:3,6 -DA:4,6 -DA:5,6 -DA:6,6 -DA:11,6 -DA:12,6 -DA:13,6 -DA:14,6 -DA:19,6 -DA:20,6 -DA:21,6 -DA:22,6 -DA:24,6 -DA:27,7 -DA:28,7 -DA:30,7 -DA:31,7 -DA:46,6 -DA:48,54 -DA:49,54 -DA:50,54 -DA:52,54 -DA:55,54 -DA:56,54 -DA:57,54 -DA:58,54 -DA:59,54 -DA:61,54 -DA:62,54 -DA:63,54 -DA:64,54 -DA:66,54 -DA:67,54 -DA:71,54 -DA:72,54 -DA:74,0 -DA:81,15 -DA:82,4 -DA:85,11 -DA:96,15 -DA:97,15 -DA:99,15 -DA:111,1 -DA:112,1 -DA:114,1 -DA:115,1 -DA:118,0 -DA:122,0 -DA:123,0 -DA:124,0 -DA:135,0 -DA:136,0 -DA:139,0 -DA:151,15 -DA:152,20 -DA:155,20 -DA:171,9 -DA:172,9 -DA:174,9 -DA:175,9 -DA:177,9 -DA:182,9 -DA:184,9 -DA:190,8 -DA:192,8 -DA:193,8 -DA:195,8 -DA:196,8 -DA:197,8 -DA:199,8 -DA:201,1 -DA:211,2 -DA:212,2 -DA:214,2 -DA:218,1 -DA:222,16 -DA:226,3 -DA:227,3 -DA:233,1 -DA:234,1 -DA:235,1 -DA:237,0 -DA:242,1 -DA:246,0 -DA:247,0 -DA:255,3 -DA:260,3 -DA:262,0 -DA:263,0 -DA:264,0 -DA:269,0 -DA:273,3 -DA:280,7 -DA:281,7 -DA:282,1 -DA:284,6 -DA:286,3 -DA:287,1 -DA:288,1 -DA:291,2 -DA:292,2 -DA:294,0 -DA:299,3 -DA:300,3 -DA:306,0 -DA:307,0 -DA:319,11 -DA:320,11 -DA:321,11 -DA:326,4 -DA:329,7 -DA:331,7 -DA:332,1 -DA:335,6 -DA:336,0 -DA:339,6 -DA:340,6 -DA:341,0 -DA:344,6 -DA:346,6 -DA:348,0 -DA:349,0 -DA:357,11 -DA:359,11 -DA:362,11 -DA:363,11 -DA:365,11 -DA:366,11 -DA:367,11 -DA:368,11 -DA:371,11 -DA:380,6 -DA:381,6 -DA:383,6 -DA:384,6 -DA:386,6 -DA:387,6 -DA:389,6 -DA:394,6 -DA:396,6 -DA:397,6 -DA:411,4 -DA:412,4 -DA:414,4 -DA:415,4 -DA:416,0 -DA:417,0 -DA:420,4 -DA:421,11 -DA:422,0 -DA:423,0 -DA:426,11 -DA:430,11 -DA:431,1 -DA:436,1 -DA:437,1 -DA:438,1 -DA:441,10 -DA:442,6 -DA:443,6 -DA:447,4 -DA:448,4 -DA:450,4 -DA:451,0 -DA:454,0 -DA:455,0 -DA:462,0 -DA:464,0 -DA:465,0 -DA:466,0 -DA:469,4 -DA:470,4 -DA:473,4 -DA:476,4 -DA:477,0 -DA:478,0 -DA:483,0 -DA:484,0 -DA:485,0 -DA:488,0 -DA:492,6 -DA:495,2 -DA:496,2 -DA:498,2 -DA:499,0 -DA:500,0 -DA:502,0 -DA:503,0 -DA:504,0 -DA:507,6 -DA:512,10 -DA:513,4 -DA:514,4 -DA:515,4 -DA:517,10 -DA:518,10 -DA:522,1 -DA:523,1 -DA:524,0 -DA:525,0 -DA:526,0 -LF:201 -LH:154 -BRDA:28,0,0,4 -BRDA:81,1,0,4 -BRDA:94,2,0,9 -BRDA:111,3,0,1 -BRDA:114,4,0,1 -BRDA:118,5,0,0 -BRDA:119,6,0,0 -BRDA:119,6,1,0 -BRDA:135,7,0,0 -BRDA:140,8,0,0 -BRDA:140,8,1,0 -BRDA:172,9,0,9 -BRDA:172,9,1,0 -BRDA:211,10,0,2 -BRDA:247,11,0,0 -BRDA:247,11,1,0 -BRDA:260,12,0,0 -BRDA:263,13,0,0 -BRDA:278,14,0,6 -BRDA:281,15,0,1 -BRDA:286,16,0,1 -BRDA:286,17,0,3 -BRDA:286,17,1,3 -BRDA:291,18,0,2 -BRDA:299,19,0,3 -BRDA:301,20,0,3 -BRDA:301,20,1,2 -BRDA:301,20,2,2 -BRDA:308,21,0,0 -BRDA:308,21,1,0 -BRDA:308,21,2,0 -BRDA:308,21,3,0 -BRDA:321,22,0,4 -BRDA:322,23,0,11 -BRDA:322,23,1,11 -BRDA:322,23,2,7 -BRDA:322,23,3,0 -BRDA:331,24,0,1 -BRDA:335,25,0,0 -BRDA:340,26,0,0 -BRDA:363,27,0,11 -BRDA:363,27,1,11 -BRDA:367,28,0,1 -BRDA:381,29,0,6 -BRDA:381,29,1,0 -BRDA:421,30,0,0 -BRDA:430,31,0,1 -BRDA:432,32,0,1 -BRDA:432,32,1,0 -BRDA:434,33,0,1 -BRDA:434,33,1,0 -BRDA:441,34,0,6 -BRDA:448,35,0,0 -BRDA:450,36,0,0 -BRDA:454,37,0,0 -BRDA:457,38,0,0 -BRDA:457,38,1,0 -BRDA:459,39,0,0 -BRDA:459,39,1,0 -BRDA:464,40,0,0 -BRDA:476,41,0,0 -BRDA:476,42,0,4 -BRDA:476,42,1,0 -BRDA:495,43,0,2 -BRDA:495,43,1,0 -BRDA:498,44,0,0 -BRDA:498,45,0,2 -BRDA:498,45,1,0 -BRDA:512,46,0,4 -BRDA:523,47,0,0 -BRF:70 -BRH:34 -end_of_record -TN: -SF:src/services/LLMProviders/OpenRouter/OpenRouterAPICostTracking.ts -FN:23,(anonymous_2) -FN:25,(anonymous_3) -FN:36,(anonymous_4) -FN:59,(anonymous_5) -FNF:4 -FNH:3 -FNDA:54,(anonymous_2) -FNDA:8,(anonymous_3) -FNDA:0,(anonymous_4) -FNDA:8,(anonymous_5) -DA:2,6 -DA:22,6 -DA:26,8 -DA:27,8 -DA:29,8 -DA:30,8 -DA:32,8 -DA:33,0 -DA:34,0 -DA:36,0 -DA:38,0 -DA:40,0 -DA:43,0 -DA:46,0 -DA:47,0 -DA:53,8 -DA:63,8 -DA:64,8 -DA:66,8 -DA:67,8 -DA:69,0 -LF:21 -LH:12 -BRDA:34,0,0,0 -BRDA:63,1,0,8 -BRDA:63,1,1,0 -BRDA:63,2,0,8 -BRDA:63,2,1,8 -BRF:5 -BRH:3 -end_of_record -TN: -SF:src/services/logging/DebugLogger.ts -FN:9,(anonymous_2) -FN:11,(anonymous_3) -FN:15,(anonymous_4) -FN:34,(anonymous_5) -FN:49,(anonymous_6) -FNF:5 -FNH:5 -FNDA:103,(anonymous_2) -FNDA:4,(anonymous_3) -FNDA:1,(anonymous_4) -FNDA:76,(anonymous_5) -FNDA:4,(anonymous_6) -DA:1,32 -DA:2,32 -DA:6,32 -DA:7,103 -DA:12,4 -DA:16,1 -DA:17,0 -DA:20,1 -DA:21,1 -DA:22,1 -DA:27,0 -DA:31,0 -DA:35,76 -DA:37,4 -DA:38,4 -DA:39,4 -DA:41,4 -DA:42,4 -DA:43,4 -DA:45,4 -DA:46,1 -DA:47,1 -DA:49,4 -DA:51,1 -DA:52,1 -LF:25 -LH:22 -BRDA:16,0,0,0 -BRDA:20,1,0,1 -BRDA:35,2,0,72 -BRDA:45,3,0,1 -BRF:4 -BRH:3 -end_of_record -TN: -SF:src/services/streaming/InteractiveSessionManager.ts -FN:17,(anonymous_8) -FN:19,(anonymous_9) -FN:25,(anonymous_10) -FN:32,(anonymous_11) -FN:46,(anonymous_12) -FN:61,(anonymous_13) -FN:78,(anonymous_14) -FN:91,(anonymous_15) -FN:100,(anonymous_16) -FN:104,(anonymous_17) -FN:113,(anonymous_18) -FNF:11 -FNH:0 -FNDA:0,(anonymous_8) -FNDA:0,(anonymous_9) -FNDA:0,(anonymous_10) -FNDA:0,(anonymous_11) -FNDA:0,(anonymous_12) -FNDA:0,(anonymous_13) -FNDA:0,(anonymous_14) -FNDA:0,(anonymous_15) -FNDA:0,(anonymous_16) -FNDA:0,(anonymous_17) -FNDA:0,(anonymous_18) -DA:2,1 -DA:4,1 -DA:5,1 -DA:8,1 -DA:9,0 -DA:10,0 -DA:11,0 -DA:12,0 -DA:13,0 -DA:14,0 -DA:15,0 -DA:17,0 -DA:20,0 -DA:21,0 -DA:22,0 -DA:26,0 -DA:28,0 -DA:29,0 -DA:30,0 -DA:32,0 -DA:33,0 -DA:34,0 -DA:36,0 -DA:37,0 -DA:38,0 -DA:42,0 -DA:47,0 -DA:49,0 -DA:50,0 -DA:53,0 -DA:54,0 -DA:57,0 -DA:62,0 -DA:64,0 -DA:65,0 -DA:66,0 -DA:67,0 -DA:70,0 -DA:72,0 -DA:73,0 -DA:74,0 -DA:75,0 -DA:76,0 -DA:77,0 -DA:78,0 -DA:79,0 -DA:80,0 -DA:85,0 -DA:88,0 -DA:92,0 -DA:94,0 -DA:97,0 -DA:98,0 -DA:100,0 -DA:101,0 -DA:104,0 -DA:105,0 -DA:106,0 -DA:109,0 -DA:110,0 -DA:114,0 -DA:115,0 -DA:116,0 -DA:119,0 -DA:120,0 -DA:123,0 -DA:124,0 -DA:127,0 -DA:128,0 -DA:129,0 -DA:132,0 -DA:133,0 -LF:72 -LH:4 -BRDA:26,0,0,0 -BRDA:28,1,0,0 -BRDA:34,2,0,0 -BRDA:47,3,0,0 -BRDA:53,4,0,0 -BRDA:53,4,1,0 -BRDA:62,5,0,0 -BRDA:62,6,0,0 -BRDA:62,6,1,0 -BRDA:62,6,2,0 -BRDA:64,7,0,0 -BRDA:74,8,0,0 -BRDA:74,9,0,0 -BRDA:74,9,1,0 -BRDA:76,10,0,0 -BRDA:92,11,0,0 -BRDA:114,12,0,0 -BRDA:114,13,0,0 -BRDA:114,13,1,0 -BRDA:119,14,0,0 -BRDA:119,15,0,0 -BRDA:119,15,1,0 -BRDA:123,16,0,0 -BRDA:123,17,0,0 -BRDA:123,17,1,0 -BRDA:127,18,0,0 -BRF:26 -BRH:0 -end_of_record -TN: -SF:src/services/streaming/StreamHandler.ts -FN:34,(anonymous_2) -FN:39,(anonymous_3) -FN:48,(anonymous_4) -FN:52,(anonymous_5) -FN:126,(anonymous_6) -FN:150,(anonymous_7) -FN:158,(anonymous_8) -FN:168,(anonymous_9) -FN:178,(anonymous_10) -FN:193,(anonymous_11) -FN:207,(anonymous_12) -FN:209,(anonymous_13) -FN:221,(anonymous_14) -FN:228,(anonymous_15) -FN:295,(anonymous_16) -FN:297,(anonymous_17) -FNF:16 -FNH:11 -FNDA:30,(anonymous_2) -FNDA:2,(anonymous_3) -FNDA:0,(anonymous_4) -FNDA:1,(anonymous_5) -FNDA:1,(anonymous_6) -FNDA:34,(anonymous_7) -FNDA:3,(anonymous_8) -FNDA:3,(anonymous_9) -FNDA:9,(anonymous_10) -FNDA:0,(anonymous_11) -FNDA:9,(anonymous_12) -FNDA:0,(anonymous_13) -FNDA:14,(anonymous_14) -FNDA:9,(anonymous_15) -FNDA:0,(anonymous_16) -FNDA:0,(anonymous_17) -DA:1,3 -DA:3,3 -DA:4,3 -DA:6,3 -DA:8,3 -DA:9,3 -DA:10,3 -DA:27,3 -DA:28,30 -DA:29,30 -DA:30,30 -DA:31,30 -DA:32,30 -DA:35,30 -DA:36,30 -DA:40,2 -DA:41,2 -DA:42,2 -DA:43,2 -DA:44,2 -DA:45,2 -DA:49,0 -DA:53,1 -DA:54,0 -DA:56,1 -DA:58,0 -DA:65,0 -DA:75,0 -DA:84,0 -DA:90,0 -DA:96,0 -DA:103,0 -DA:110,0 -DA:117,1 -DA:127,1 -DA:129,1 -DA:130,1 -DA:131,1 -DA:132,1 -DA:134,1 -DA:135,1 -DA:137,1 -DA:138,1 -DA:139,1 -DA:140,1 -DA:143,1 -DA:144,1 -DA:147,1 -DA:151,34 -DA:152,34 -DA:154,0 -DA:159,3 -DA:160,3 -DA:161,0 -DA:164,0 -DA:169,3 -DA:170,3 -DA:171,0 -DA:174,0 -DA:179,9 -DA:181,8 -DA:182,8 -DA:184,8 -DA:185,8 -DA:186,8 -DA:187,8 -DA:190,8 -DA:195,0 -DA:196,0 -DA:197,0 -DA:198,0 -DA:199,0 -DA:201,0 -DA:208,9 -DA:209,9 -DA:210,0 -DA:217,0 -DA:222,14 -DA:223,4 -DA:224,4 -DA:238,9 -DA:239,9 -DA:241,9 -DA:242,0 -DA:243,0 -DA:244,0 -DA:249,0 -DA:250,0 -DA:252,0 -DA:255,0 -DA:259,9 -DA:261,9 -DA:262,9 -DA:263,0 -DA:264,0 -DA:272,9 -DA:273,9 -DA:274,9 -DA:275,9 -DA:278,9 -DA:282,9 -DA:283,5 -DA:284,5 -DA:285,5 -DA:288,9 -DA:289,4 -DA:291,4 -DA:292,4 -DA:296,0 -DA:297,0 -DA:298,0 -DA:299,0 -DA:300,0 -DA:302,0 -DA:303,0 -DA:304,0 -DA:307,0 -DA:308,0 -DA:309,0 -DA:318,0 -DA:319,0 -DA:320,0 -DA:325,3 -DA:326,3 -DA:327,3 -DA:330,3 -DA:331,3 -DA:332,3 -DA:333,3 -DA:334,3 -DA:336,3 -DA:338,3 -DA:340,1 -DA:341,1 -DA:342,0 -DA:344,1 -DA:352,1 -DA:353,1 -DA:357,5 -LF:139 -LH:92 -BRDA:53,0,0,0 -BRDA:56,1,0,0 -BRDA:56,1,1,0 -BRDA:56,1,2,0 -BRDA:56,1,3,0 -BRDA:56,1,4,0 -BRDA:56,1,5,0 -BRDA:56,1,6,0 -BRDA:56,1,7,0 -BRDA:56,1,8,1 -BRDA:68,2,0,0 -BRDA:68,2,1,0 -BRDA:78,3,0,0 -BRDA:78,3,1,0 -BRDA:119,4,0,1 -BRDA:119,4,1,0 -BRDA:137,5,0,1 -BRDA:160,6,0,0 -BRDA:170,7,0,0 -BRDA:179,8,0,1 -BRDA:222,9,0,4 -BRDA:241,10,0,0 -BRDA:245,11,0,0 -BRDA:245,11,1,0 -BRDA:246,12,0,0 -BRDA:246,12,1,0 -BRDA:262,13,0,0 -BRDA:282,14,0,5 -BRDA:282,15,0,9 -BRDA:282,15,1,9 -BRDA:288,16,0,4 -BRDA:288,17,0,9 -BRDA:288,17,1,5 -BRDA:298,18,0,0 -BRDA:307,19,0,0 -BRDA:341,20,0,0 -BRDA:341,20,1,1 -BRDA:346,21,0,1 -BRDA:346,21,1,0 -BRF:39 -BRH:13 -end_of_record -TN: -SF:src/services/text/AnsiStripper.ts -FN:21,(anonymous_1) -FNF:1 -FNH:1 -FNDA:11,(anonymous_1) -DA:3,16 -DA:11,16 -DA:13,16 -DA:22,11 -DA:23,0 -DA:25,11 -LF:6 -LH:5 -BRDA:22,0,0,0 -BRF:1 -BRH:0 -end_of_record -TN: -SF:src/services/text/HTMLEntityDecoder.ts -FN:17,(anonymous_2) -FN:39,(anonymous_3) -FN:40,(anonymous_4) -FNF:3 -FNH:3 -FNDA:8,(anonymous_2) -FNDA:14,(anonymous_3) -FNDA:31,(anonymous_4) -DA:1,20 -DA:2,20 -DA:10,20 -DA:18,8 -DA:19,1 -DA:22,7 -DA:25,7 -DA:26,6 -DA:30,7 -DA:40,14 -DA:41,31 -DA:43,2 -DA:44,2 -DA:48,29 -DA:61,29 -DA:62,18 -DA:66,11 -LF:17 -LH:17 -BRDA:18,0,0,1 -BRDA:25,1,0,6 -BRDA:25,2,0,7 -BRDA:25,2,1,3 -BRDA:41,3,0,2 -BRDA:61,4,0,18 -BRDA:62,5,0,13 -BRDA:62,5,1,5 -BRDA:62,6,0,13 -BRDA:62,6,1,0 -BRDA:66,7,0,11 -BRDA:66,7,1,2 -BRF:12 -BRH:11 -end_of_record diff --git a/src/__tests__/ConfigService.test.ts b/src/__tests__/ConfigService.test.ts index 50505cc9..967455fe 100644 --- a/src/__tests__/ConfigService.test.ts +++ b/src/__tests__/ConfigService.test.ts @@ -7,17 +7,170 @@ jest.mock("fs"); jest.mock("chalk"); describe("ConfigService", () => { - const mockConfigPath = path.resolve("crkdrc.json"); const mockGitignorePath = path.resolve(".gitignore"); + const defaultConfigPath = path.resolve("crkdrc.json"); + const customConfigPath = path.resolve("custom/path/config.json"); let configService: ConfigService; + const validMockConfig = { + provider: "open-router", + projectLanguage: "typescript", + packageManager: "yarn", + interactive: true, + stream: true, + debug: false, + options: "temperature=0", + openRouterApiKey: "test-key", + autoScaleAvailableModels: [], // Required by schema + }; + beforeEach(() => { jest.clearAllMocks(); - configService = new ConfigService(); + // Set up default mock responses + (fs.existsSync as jest.Mock).mockReturnValue(true); + (fs.readFileSync as jest.Mock).mockReturnValue( + JSON.stringify(validMockConfig), + ); + }); + + describe("config path handling", () => { + beforeEach(() => { + jest.clearAllMocks(); + }); + + it("should use crkdrc.json as default path (backward compatibility)", () => { + configService = new ConfigService(); + (fs.readFileSync as jest.Mock).mockReturnValue( + JSON.stringify(validMockConfig), + ); + + expect((configService as any).CONFIG_PATH).toBe(defaultConfigPath); + const config = configService.getConfig(); + expect(config).toBeDefined(); + expect(fs.readFileSync).toHaveBeenCalledWith(defaultConfigPath, "utf-8"); + }); + + it("should handle valid custom path correctly", () => { + const validPath = "path/to/custom/config.json"; + configService = new ConfigService(); + configService.setConfigPath(validPath); + (fs.readFileSync as jest.Mock).mockReturnValue( + JSON.stringify(validMockConfig), + ); + + expect((configService as any).CONFIG_PATH).toBe(path.resolve(validPath)); + const config = configService.getConfig(); + expect(config).toBeDefined(); + expect(fs.readFileSync).toHaveBeenCalledWith( + path.resolve(validPath), + "utf-8", + ); + }); + + it("should fall back to default path when given invalid path", () => { + const invalidPaths = ["", " ", null, undefined]; + + invalidPaths.forEach((invalidPath) => { + configService = new ConfigService(); + configService.setConfigPath(invalidPath as string); + expect((configService as any).CONFIG_PATH).toBe( + path.resolve("crkdrc.json"), + ); + }); + }); + + it("should create config file when using non-existent path", () => { + const nonExistentPath = "non/existent/config.json"; + configService = new ConfigService(); + configService.setConfigPath(nonExistentPath); + + (fs.existsSync as jest.Mock).mockReturnValue(false); + (fs.writeFileSync as jest.Mock).mockImplementation(() => {}); + + // Should attempt to create config at the specified path + configService.createDefaultConfig(); + + expect(fs.writeFileSync).toHaveBeenCalledWith( + path.resolve(nonExistentPath), + expect.any(String), + ); + }); + + it("should use default path when no custom path provided", () => { + configService = new ConfigService(); + expect((configService as any).CONFIG_PATH).toBe(defaultConfigPath); + }); + + it("should use custom path when provided", () => { + configService = new ConfigService(); + configService.setConfigPath("custom/path/config.json"); + expect((configService as any).CONFIG_PATH).toBe(customConfigPath); + }); + + it("should create config at custom path when it doesn't exist", () => { + configService = new ConfigService(); + configService.setConfigPath(customConfigPath); + (fs.existsSync as jest.Mock).mockReturnValue(false); + (fs.writeFileSync as jest.Mock).mockImplementation(() => {}); + + configService.createDefaultConfig(); + + expect(fs.writeFileSync).toHaveBeenCalledWith( + customConfigPath, + expect.any(String), + ); + }); + + it("should read config from custom path", () => { + const mockConfig = { + provider: "open-router", + projectLanguage: "typescript", + packageManager: "yarn", + interactive: true, + stream: true, + debug: false, + options: "temperature=0", + openRouterApiKey: "test-key", + autoScaleAvailableModels: [], // Required by schema + }; + + configService = new ConfigService(); + configService.setConfigPath(customConfigPath); + (fs.existsSync as jest.Mock).mockReturnValue(true); + (fs.readFileSync as jest.Mock).mockReturnValue( + JSON.stringify(mockConfig), + ); + + const config = configService.getConfig(); + + expect(fs.readFileSync).toHaveBeenCalledWith(customConfigPath, "utf-8"); + expect(config).toMatchObject(mockConfig); + }); + + it("should handle empty path by using default", () => { + configService = new ConfigService(); + configService.setConfigPath(""); + expect((configService as any).CONFIG_PATH).toBe(defaultConfigPath); + }); + + it("should handle non-existent custom path by creating default config", () => { + configService = new ConfigService(); + configService.setConfigPath(customConfigPath); + (fs.existsSync as jest.Mock).mockReturnValue(false); + (fs.writeFileSync as jest.Mock).mockImplementation(() => {}); + + configService.getConfig(); + + expect(fs.writeFileSync).toHaveBeenCalledWith( + customConfigPath, + expect.any(String), + ); + }); }); describe("createDefaultConfig", () => { it("should create a default config file if it does not exist", () => { + configService = new ConfigService(); (fs.existsSync as jest.Mock) .mockReturnValueOnce(false) // for config file .mockReturnValueOnce(false); // for gitignore @@ -26,9 +179,9 @@ describe("ConfigService", () => { configService.createDefaultConfig(); - expect(fs.existsSync).toHaveBeenCalledWith(mockConfigPath); + expect(fs.existsSync).toHaveBeenCalledWith(defaultConfigPath); expect(fs.writeFileSync).toHaveBeenCalledWith( - mockConfigPath, + defaultConfigPath, expect.any(String), ); expect(fs.writeFileSync).toHaveBeenCalledWith( @@ -41,11 +194,12 @@ describe("ConfigService", () => { }); it("should not create a default config file if it already exists", () => { + configService = new ConfigService(); (fs.existsSync as jest.Mock).mockReturnValue(true); configService.createDefaultConfig(); - expect(fs.existsSync).toHaveBeenCalledWith(mockConfigPath); + expect(fs.existsSync).toHaveBeenCalledWith(defaultConfigPath); expect(fs.writeFileSync).not.toHaveBeenCalled(); }); }); @@ -132,6 +286,7 @@ describe("ConfigService", () => { timeoutSeconds: 0, }; + configService = new ConfigService(); (fs.existsSync as jest.Mock).mockReturnValue(true); (fs.readFileSync as jest.Mock).mockReturnValue( JSON.stringify(mockConfig), @@ -139,32 +294,31 @@ describe("ConfigService", () => { const config = configService.getConfig(); - expect(fs.existsSync).toHaveBeenCalledWith(mockConfigPath); - expect(fs.readFileSync).toHaveBeenCalledWith(mockConfigPath, "utf-8"); + expect(fs.existsSync).toHaveBeenCalledWith(defaultConfigPath); + expect(fs.readFileSync).toHaveBeenCalledWith(defaultConfigPath, "utf-8"); expect(config).toEqual(mockConfig); }); it("should validate project language and package manager", () => { const mockInvalidConfig = { provider: "open-router", - projectLanguage: "invalid-language", - packageManager: "invalid-manager", - customInstructions: "Follow clean code principles", interactive: true, stream: true, debug: false, options: "temperature=0", openRouterApiKey: "test-key", + autoScaleAvailableModels: [], + projectLanguage: 123, + packageManager: undefined, }; + configService = new ConfigService(); (fs.existsSync as jest.Mock).mockReturnValue(true); (fs.readFileSync as jest.Mock).mockReturnValue( JSON.stringify(mockInvalidConfig), ); - expect(() => configService.getConfig()).toThrow( - "Invalid configuration in crkdrc.json", - ); + expect(() => configService.getConfig()).toThrow(); }); it("should throw an error for an invalid config file", () => { @@ -177,8 +331,10 @@ describe("ConfigService", () => { debug: "false", // Should be boolean options: 456, // Should be string openRouterApiKey: 123, // Should be string + autoScaleAvailableModels: [], // Add required field }; + configService = new ConfigService(); (fs.existsSync as jest.Mock).mockReturnValue(true); (fs.readFileSync as jest.Mock).mockReturnValue( JSON.stringify(mockInvalidConfig), @@ -190,6 +346,7 @@ describe("ConfigService", () => { }); it("should throw an error if the config file does not exist or is empty", () => { + configService = new ConfigService(); (fs.existsSync as jest.Mock).mockReturnValue(false); (fs.readFileSync as jest.Mock).mockReturnValue("{}"); @@ -197,7 +354,25 @@ describe("ConfigService", () => { "Invalid configuration in crkdrc.json", ); - expect(fs.existsSync).toHaveBeenCalledWith(mockConfigPath); + expect(fs.existsSync).toHaveBeenCalledWith(defaultConfigPath); + }); + + it("should accept valid project language and package manager", () => { + const mockConfig = { + ...validMockConfig, + projectLanguage: "ruby", // Valid enum value + packageManager: "bundler", // Valid enum value + }; + + configService = new ConfigService(); + (fs.existsSync as jest.Mock).mockReturnValue(true); + (fs.readFileSync as jest.Mock).mockReturnValue( + JSON.stringify(mockConfig), + ); + + const config = configService.getConfig(); + expect(config.projectLanguage).toBe("ruby"); + expect(config.packageManager).toBe("bundler"); }); it("should accept any string for project language and package manager", () => { @@ -241,6 +416,7 @@ describe("ConfigService", () => { referenceExamples: {}, }; + configService = new ConfigService(); (fs.existsSync as jest.Mock).mockReturnValue(true); (fs.readFileSync as jest.Mock).mockReturnValue( JSON.stringify(mockConfig), diff --git a/src/commands/run.ts b/src/commands/run.ts index c51c85ef..15b73bfc 100644 --- a/src/commands/run.ts +++ b/src/commands/run.ts @@ -9,6 +9,7 @@ import { ModelManager } from "@services/LLM/ModelManager"; import { OpenRouterAPI } from "@services/LLMProviders/OpenRouter/OpenRouterAPI"; import { InteractiveSessionManager } from "@services/streaming/InteractiveSessionManager"; import { StreamHandler } from "@services/streaming/StreamHandler"; +import * as path from "path"; import * as readline from "readline"; import { container } from "tsyringe"; import { ConfigService } from "../services/ConfigService"; @@ -28,6 +29,11 @@ export class Run extends Command { description: "Initialize a default crkdrc.json configuration file", exclusive: ["interactive"], }), + config: Flags.string({ + char: "c", + description: "Path to custom configuration file (default: crkdrc.json)", + default: path.resolve("crkdrc.json"), + }), timeout: Flags.integer({ description: "Set timeout for the operation in seconds", exclusive: ["init"], @@ -40,20 +46,28 @@ export class Run extends Command { }), }; - private configService: ConfigService; - private modelManager: ModelManager; - private streamHandler: StreamHandler; - private openRouterAPI: OpenRouterAPI; - private sessionManager: InteractiveSessionManager; - private rl: readline.Interface; + private configService!: ConfigService; + private modelManager!: ModelManager; + private streamHandler!: StreamHandler; + private openRouterAPI!: OpenRouterAPI; + private sessionManager!: InteractiveSessionManager; + private rl!: readline.Interface; constructor(argv: string[], config: any) { super(argv, config); + } + + private async initializeServices(): Promise { + const { flags } = await this.parse(Run); + this.configService = container.resolve(ConfigService); + this.configService.setConfigPath(flags.config); + this.modelManager = container.resolve(ModelManager); this.streamHandler = container.resolve(StreamHandler); this.openRouterAPI = container.resolve(OpenRouterAPI); this.sessionManager = container.resolve(InteractiveSessionManager); + this.rl = readline.createInterface({ input: process.stdin, output: process.stdout, @@ -84,6 +98,7 @@ export class Run extends Command { } async run(): Promise { + await this.initializeServices(); const { args, flags } = await this.parse(Run); if (flags.init) { diff --git a/src/services/ConfigService.ts b/src/services/ConfigService.ts index b38ad394..3ef4bc39 100644 --- a/src/services/ConfigService.ts +++ b/src/services/ConfigService.ts @@ -1,7 +1,7 @@ import chalk from "chalk"; import * as fs from "fs"; import * as path from "path"; -import { autoInjectable } from "tsyringe"; +import { singleton } from "tsyringe"; import { z } from "zod"; const configSchema = z.object({ @@ -102,11 +102,23 @@ const configSchema = z.object({ export type Config = z.infer; -@autoInjectable() +@singleton() export class ConfigService { - private readonly CONFIG_PATH = path.resolve("crkdrc.json"); + private CONFIG_PATH: string; private readonly GITIGNORE_PATH = path.resolve(".gitignore"); + constructor() { + this.CONFIG_PATH = path.resolve("crkdrc.json"); + } + + public setConfigPath(configPath?: string): void { + if (configPath && configPath.trim()) { + this.CONFIG_PATH = path.resolve(configPath.trim()); + } else { + this.CONFIG_PATH = path.resolve("crkdrc.json"); + } + } + private ensureGitIgnore(): void { const gitignoreContent = fs.existsSync(this.GITIGNORE_PATH) ? fs.readFileSync(this.GITIGNORE_PATH, "utf-8")