@mesadev/agentblame 0.2.11 → 3.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/agentblame.js +3500 -0
- package/dist/blame.d.ts +4 -1
- package/dist/blame.js +280 -78
- package/dist/blame.js.map +1 -1
- package/dist/capture.d.ts +4 -7
- package/dist/capture.js +464 -486
- package/dist/capture.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +334 -72
- package/dist/index.js.map +1 -1
- package/dist/lib/analytics.d.ts +179 -0
- package/dist/lib/analytics.js +833 -0
- package/dist/lib/analytics.js.map +1 -0
- package/dist/lib/attribution.d.ts +54 -0
- package/dist/lib/attribution.js +266 -0
- package/dist/lib/attribution.js.map +1 -0
- package/dist/lib/checkpoint.d.ts +97 -0
- package/dist/lib/checkpoint.js +441 -0
- package/dist/lib/checkpoint.js.map +1 -0
- package/dist/lib/config.d.ts +46 -0
- package/dist/lib/config.js +123 -0
- package/dist/lib/config.js.map +1 -0
- package/dist/lib/database.d.ts +115 -85
- package/dist/lib/database.js +305 -325
- package/dist/lib/database.js.map +1 -1
- package/dist/lib/delta.d.ts +78 -0
- package/dist/lib/delta.js +309 -0
- package/dist/lib/delta.js.map +1 -0
- package/dist/lib/git/gitBlame.js +9 -4
- package/dist/lib/git/gitBlame.js.map +1 -1
- package/dist/lib/git/gitConfig.d.ts +5 -3
- package/dist/lib/git/gitConfig.js +41 -6
- package/dist/lib/git/gitConfig.js.map +1 -1
- package/dist/lib/git/gitDiff.d.ts +13 -1
- package/dist/lib/git/gitDiff.js +39 -7
- package/dist/lib/git/gitDiff.js.map +1 -1
- package/dist/lib/git/gitNotes.d.ts +30 -4
- package/dist/lib/git/gitNotes.js +140 -24
- package/dist/lib/git/gitNotes.js.map +1 -1
- package/dist/lib/hooks.d.ts +1 -0
- package/dist/lib/hooks.js +148 -27
- package/dist/lib/hooks.js.map +1 -1
- package/dist/lib/index.d.ts +7 -0
- package/dist/lib/index.js +13 -0
- package/dist/lib/index.js.map +1 -1
- package/dist/lib/storage.d.ts +163 -0
- package/dist/lib/storage.js +823 -0
- package/dist/lib/storage.js.map +1 -0
- package/dist/lib/trace.d.ts +118 -0
- package/dist/lib/trace.js +499 -0
- package/dist/lib/trace.js.map +1 -0
- package/dist/lib/types.d.ts +322 -114
- package/dist/lib/types.js +2 -1
- package/dist/lib/types.js.map +1 -1
- package/dist/lib/util.d.ts +8 -8
- package/dist/lib/util.js +18 -22
- package/dist/lib/util.js.map +1 -1
- package/dist/lib/watcher.d.ts +104 -0
- package/dist/lib/watcher.js +398 -0
- package/dist/lib/watcher.js.map +1 -0
- package/dist/post-merge.js +460 -421
- package/dist/post-merge.js.map +1 -1
- package/dist/process.d.ts +6 -5
- package/dist/process.js +182 -158
- package/dist/process.js.map +1 -1
- package/dist/sync.js +172 -131
- package/dist/sync.js.map +1 -1
- package/package.json +3 -2
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"analytics.js","sourceRoot":"","sources":["../../src/lib/analytics.ts"],"names":[],"mappings":";AAAA;;;;;;;GAOG;;AAoDH,gDAIC;AAKD,8CAmCC;AAKD,gDA2BC;AAoBD,gDAoDC;AA+ID,wCAgFC;AAKD,gCAaC;AASD,0CAeC;AA8BD,wCASC;AAKD,sCASC;AAMD,4CA+DC;AAKD,8CAaC;AAKD,oCAYC;AAKD,sCA2BC;AAKD,wCAYC;AAKD,0CAiCC;AASD,gCAKC;AAKD,kDAMC;AAKD,oCAMC;AAKD,sDAGC;AASD,sCAgCC;AAKD,wDAmBC;AAKD,0CAuBC;AAkBD,gDAyDC;AASD,sCAyBC;AAKD,wCAmBC;AASD,wDA2BC;AAKD,kDAmBC;AAKD,gDAeC;AAjiCD,2DAA2C;AAC3C,uCAA0C;AAe1C,gFAAgF;AAChF,YAAY;AACZ,gFAAgF;AAEhF,MAAM,aAAa,GAAG,iCAAiC,CAAC;AACxD,MAAM,iBAAiB,GAAG,EAAE,CAAC,CAAC,uCAAuC;AACrE,MAAM,gBAAgB,GAAG,EAAE,CAAC,CAAC,qCAAqC;AAElE,gFAAgF;AAChF,eAAe;AACf,gFAAgF;AAEhF;;GAEG;AACH,SAAS,cAAc;IACrB,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC;IACvB,OAAO,GAAG,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,kBAAkB;AAC3D,CAAC;AAED;;GAEG;AACH,SAAS,QAAQ;IACf,OAAO,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AAChD,CAAC;AAED,gFAAgF;AAChF,4BAA4B;AAC5B,gFAAgF;AAEhF;;GAEG;AACI,KAAK,UAAU,kBAAkB,CACtC,QAAgB;IAEhB,OAAO,IAAA,uBAAa,EAAC,QAAQ,CAAC,CAAC;AACjC,CAAC;AAED;;GAEG;AACI,KAAK,UAAU,iBAAiB,CACrC,QAAgB;IAEhB,MAAM,MAAM,GAAG,MAAM,kBAAkB,CAAC,QAAQ,CAAC,CAAC;IAClD,IAAI,CAAC,MAAM;QAAE,OAAO,IAAI,CAAC;IAEzB,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;QAC7B,MAAM,IAAI,GAAG,IAAA,0BAAK,EAAC,KAAK,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,aAAa,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE;YAC3E,GAAG,EAAE,QAAQ;YACb,KAAK,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC;SAClC,CAAC,CAAC;QAEH,IAAI,MAAM,GAAG,EAAE,CAAC;QAEhB,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE;YAC9B,MAAM,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;QAC5B,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE;YACxB,IAAI,IAAI,KAAK,CAAC,IAAI,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC;gBAChC,IAAI,CAAC;oBACH,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;oBAChC,OAAO,CAAC,IAAqB,CAAC,CAAC;gBACjC,CAAC;gBAAC,MAAM,CAAC;oBACP,OAAO,CAAC,IAAI,CAAC,CAAC;gBAChB,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,IAAI,CAAC,CAAC;YAChB,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE;YACpB,OAAO,CAAC,IAAI,CAAC,CAAC;QAChB,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC;AAED;;GAEG;AACI,KAAK,UAAU,kBAAkB,CACtC,QAAgB,EAChB,SAAwB;IAExB,MAAM,MAAM,GAAG,MAAM,kBAAkB,CAAC,QAAQ,CAAC,CAAC;IAClD,IAAI,CAAC,MAAM;QAAE,OAAO,KAAK,CAAC;IAE1B,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;IAEnD,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;QAC7B,MAAM,IAAI,GAAG,IAAA,0BAAK,EAChB,KAAK,EACL,CAAC,OAAO,EAAE,OAAO,EAAE,aAAa,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,CAAC,EACrE;YACE,GAAG,EAAE,QAAQ;YACb,KAAK,EAAE,CAAC,QAAQ,EAAE,QAAQ,EAAE,MAAM,CAAC;SACpC,CACF,CAAC;QAEF,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE;YACxB,OAAO,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC;QACtB,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE;YACpB,OAAO,CAAC,KAAK,CAAC,CAAC;QACjB,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC;AAiBD;;GAEG;AACH,SAAgB,kBAAkB,CAChC,QAAyC,EACzC,gBAUC;IAED,MAAM,KAAK,GAAgB;QACzB,OAAO,EAAE,CAAC;QACV,UAAU,EAAE,CAAC;QACb,OAAO,EAAE,EAAE;QACX,OAAO,EAAE,EAAE;QACX,QAAQ,EAAE,EAAE;KACb,CAAC;IAEF,MAAM,UAAU,GAAG,IAAI,GAAG,EAAU,CAAC;IAErC,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,MAAM,CAAC,gBAAgB,CAAC,EAAE,CAAC;QACnD,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAClC,MAAM,SAAS,GAAG,KAAK,CAAC,OAAO,GAAG,KAAK,CAAC,SAAS,GAAG,CAAC,CAAC;YACtD,KAAK,CAAC,OAAO,IAAI,SAAS,CAAC;YAE3B,MAAM,OAAO,GAAG,QAAQ,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;YAC1C,IAAI,OAAO,EAAE,CAAC;gBACZ,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;gBAEhC,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;gBAC5B,IAAI,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,UAAU,EAAE,CAAC;oBACrE,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,SAAS,CAAC;gBACjE,CAAC;gBAED,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;oBAClB,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,SAAS,CAAC;gBACjF,CAAC;YACH,CAAC;QACH,CAAC;QAED,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;YACrC,KAAK,CAAC,UAAU,IAAI,KAAK,CAAC,OAAO,GAAG,KAAK,CAAC,SAAS,GAAG,CAAC,CAAC;QAC1D,CAAC;IACH,CAAC;IAED,KAAK,CAAC,QAAQ,GAAG,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IAExC,OAAO,KAAK,CAAC;AACf,CAAC;AAED,gFAAgF;AAChF,yBAAyB;AACzB,gFAAgF;AAEhF;;GAEG;AACH,SAAS,qBAAqB;IAC5B,OAAO;QACL,MAAM,EAAE,EAAE;QACV,KAAK,EAAE,EAAE;KACV,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,SAAS,mBAAmB,CAAC,CAAiB,EAAE,CAAiB;IAC/D,MAAM,MAAM,GAAmB,EAAE,GAAG,CAAC,EAAE,CAAC;IACxC,KAAK,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;QAC/C,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YACxB,MAAM,GAAG,GAAG,KAAgB,CAAC;YAC7B,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK,CAAC;QAC3C,CAAC;IACH,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;GAEG;AACH,SAAS,mBAAmB,CAAC,CAAiB,EAAE,CAAiB;IAC/D,MAAM,MAAM,GAAmB,EAAE,GAAG,CAAC,EAAE,CAAC;IACxC,KAAK,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;QAC/C,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK,CAAC;IAC/C,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;GAEG;AACH,SAAS,sBAAsB,CAC7B,MAAyB,EACzB,WAAwB,EACxB,IAAY;IAEZ,mCAAmC;IACnC,IAAI,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;IAEpD,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,SAAS,GAAG;YACV,IAAI;YACJ,OAAO,EAAE,CAAC;YACV,UAAU,EAAE,CAAC;YACb,YAAY,EAAE,CAAC;YACf,OAAO,EAAE,CAAC;YACV,OAAO,EAAE,EAAE;YACX,OAAO,EAAE,EAAE;YACX,OAAO,EAAE,CAAC;SACX,CAAC;QACF,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IACzB,CAAC;IAED,sBAAsB;IACtB,SAAS,CAAC,OAAO,IAAI,WAAW,CAAC,OAAO,CAAC;IACzC,SAAS,CAAC,UAAU,IAAI,WAAW,CAAC,UAAU,CAAC;IAC/C,SAAS,CAAC,OAAO,GAAG,mBAAmB,CAAC,SAAS,CAAC,OAAO,EAAE,WAAW,CAAC,OAAO,CAAC,CAAC;IAChF,SAAS,CAAC,OAAO,GAAG,mBAAmB,CAAC,SAAS,CAAC,OAAO,EAAE,WAAW,CAAC,OAAO,CAAC,CAAC;IAChF,SAAS,CAAC,OAAO,IAAI,CAAC,CAAC;IAEvB,8CAA8C;IAC9C,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;IAEpD,yBAAyB;IACzB,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,iBAAiB,CAAC,CAAC;AAC5C,CAAC;AAED;;GAEG;AACH,SAAS,qBAAqB,CAC5B,KAAuB,EACvB,WAAwB,EACxB,IAAY;IAEZ,+BAA+B;IAC/B,IAAI,UAAU,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;IAEpD,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,UAAU,GAAG;YACX,IAAI;YACJ,OAAO,EAAE,CAAC;YACV,UAAU,EAAE,CAAC;YACb,YAAY,EAAE,CAAC;YACf,OAAO,EAAE,CAAC;YACV,OAAO,EAAE,EAAE;YACX,OAAO,EAAE,EAAE;YACX,OAAO,EAAE,CAAC;SACX,CAAC;QACF,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IACzB,CAAC;IAED,uBAAuB;IACvB,UAAU,CAAC,OAAO,IAAI,WAAW,CAAC,OAAO,CAAC;IAC1C,UAAU,CAAC,UAAU,IAAI,WAAW,CAAC,UAAU,CAAC;IAChD,UAAU,CAAC,OAAO,GAAG,mBAAmB,CAAC,UAAU,CAAC,OAAO,EAAE,WAAW,CAAC,OAAO,CAAC,CAAC;IAClF,UAAU,CAAC,OAAO,GAAG,mBAAmB,CAAC,UAAU,CAAC,OAAO,EAAE,WAAW,CAAC,OAAO,CAAC,CAAC;IAClF,UAAU,CAAC,OAAO,IAAI,CAAC,CAAC;IAExB,8CAA8C;IAC9C,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;IAEnD,wBAAwB;IACxB,OAAO,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,gBAAgB,CAAC,CAAC;AAC1C,CAAC;AAED;;GAEG;AACH,SAAS,gBAAgB,CACvB,UAAkC,EAClC,WAAwB;IAExB,MAAM,EAAE,GAAG,UAAU,IAAI,qBAAqB,EAAE,CAAC;IACjD,MAAM,IAAI,GAAG,cAAc,EAAE,CAAC;IAC9B,MAAM,KAAK,GAAG,QAAQ,EAAE,CAAC;IAEzB,OAAO;QACL,MAAM,EAAE,sBAAsB,CAAC,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,EAAE,WAAW,EAAE,IAAI,CAAC;QACjE,KAAK,EAAE,qBAAqB,CAAC,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,EAAE,WAAW,EAAE,KAAK,CAAC;KAChE,CAAC;AACJ,CAAC;AAED,gFAAgF;AAChF,kBAAkB;AAClB,gFAAgF;AAEhF;;GAEG;AACH,SAAgB,cAAc,CAC5B,QAA8B,EAC9B,WAAwB,EACxB,YAAqB;IAErB,MAAM,IAAI,GAAkB,QAAQ,IAAI;QACtC,CAAC,EAAE,CAAC;QACJ,OAAO,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;QACjC,OAAO,EAAE;YACP,UAAU,EAAE,CAAC;YACb,OAAO,EAAE,CAAC;YACV,UAAU,EAAE,CAAC;YACb,YAAY,EAAE,CAAC;YACf,OAAO,EAAE,CAAC;YACV,OAAO,EAAE,EAAE;YACX,OAAO,EAAE,EAAE;SACZ;QACD,YAAY,EAAE,EAAE;QAChB,SAAS,EAAE,EAAE;QACb,UAAU,EAAE,qBAAqB,EAAE;KACpC,CAAC;IAEF,iBAAiB;IACjB,IAAI,CAAC,OAAO,CAAC,OAAO,IAAI,WAAW,CAAC,OAAO,CAAC;IAC5C,IAAI,CAAC,OAAO,CAAC,UAAU,IAAI,WAAW,CAAC,UAAU,CAAC;IAClD,IAAI,CAAC,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC;IAEzE,wBAAwB;IACxB,KAAK,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,OAAO,CAAC,EAAE,CAAC;QACjE,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YACxB,MAAM,GAAG,GAAG,KAAgB,CAAC;YAC7B,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK,CAAC;QACvE,CAAC;IACH,CAAC;IAED,wBAAwB;IACxB,KAAK,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,OAAO,CAAC,EAAE,CAAC;QACjE,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK,CAAC;IAC3E,CAAC;IAED,2BAA2B;IAC3B,IAAI,YAAY,EAAE,CAAC;QACjB,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,EAAE,CAAC;YACrC,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,GAAG;gBAChC,OAAO,EAAE,CAAC;gBACV,GAAG,EAAE,CAAC;gBACN,OAAO,EAAE,CAAC;gBACV,OAAO,EAAE,CAAC;gBACV,UAAU,EAAE,CAAC;gBACb,YAAY,EAAE,CAAC;gBACf,SAAS,EAAE,EAAE;aACd,CAAC;QACJ,CAAC;QAED,MAAM,WAAW,GAAG,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,CAAC;QACpD,WAAW,CAAC,OAAO,IAAI,CAAC,CAAC;QACzB,WAAW,CAAC,OAAO,IAAI,WAAW,CAAC,OAAO,CAAC;QAC3C,WAAW,CAAC,UAAU,IAAI,WAAW,CAAC,UAAU,CAAC;QAEjD,oBAAoB;QACpB,MAAM,WAAW,GAAG,IAAI,GAAG,EAAkB,CAAC;QAC9C,KAAK,MAAM,KAAK,IAAI,WAAW,CAAC,SAAS,EAAE,CAAC;YAC1C,WAAW,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;QAC5D,CAAC;QACD,KAAK,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,OAAO,CAAC,EAAE,CAAC;YACjE,WAAW,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC;QAChE,CAAC;QAED,WAAW,CAAC,SAAS,GAAG,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,CAAC;aACtD,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;aAC3B,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;aACX,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC;IAC7B,CAAC;IAED,qBAAqB;IACrB,IAAI,CAAC,UAAU,GAAG,gBAAgB,CAAC,IAAI,CAAC,UAAU,EAAE,WAAW,CAAC,CAAC;IAEjE,IAAI,CAAC,OAAO,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IAExC,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;GAEG;AACH,SAAgB,UAAU,CACxB,SAAwB,EACxB,EAAW;IAEX,SAAS,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IAEhC,IAAI,SAAS,CAAC,SAAS,CAAC,MAAM,GAAG,GAAG,EAAE,CAAC;QACrC,SAAS,CAAC,SAAS,GAAG,SAAS,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IAC1D,CAAC;IAED,SAAS,CAAC,OAAO,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IAE7C,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,gFAAgF;AAChF,sCAAsC;AACtC,gFAAgF;AAEhF;;GAEG;AACI,KAAK,UAAU,eAAe,CACnC,QAAgB,EAChB,WAAwB,EACxB,YAAqB;IAErB,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,MAAM,iBAAiB,CAAC,QAAQ,CAAC,CAAC;QACnD,MAAM,OAAO,GAAG,cAAc,CAAC,QAAQ,EAAE,WAAW,EAAE,YAAY,CAAC,CAAC;QACpE,OAAO,MAAM,kBAAkB,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IACrD,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAI,OAAO,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;YACjC,OAAO,CAAC,KAAK,CAAC,0CAA0C,EAAE,GAAG,CAAC,CAAC;QACjE,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAuBD,gFAAgF;AAChF,gBAAgB;AAChB,gFAAgF;AAEhF;;GAEG;AACH,SAAgB,cAAc,CAC5B,SAAwB,EACxB,QAAgB,EAAE;IAElB,IAAI,CAAC,SAAS,CAAC,UAAU,EAAE,MAAM,EAAE,CAAC;QAClC,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,OAAO,SAAS,CAAC,UAAU,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;AACrD,CAAC;AAED;;GAEG;AACH,SAAgB,aAAa,CAC3B,SAAwB,EACxB,OAAe,EAAE;IAEjB,IAAI,CAAC,SAAS,CAAC,UAAU,EAAE,KAAK,EAAE,CAAC;QACjC,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,OAAO,SAAS,CAAC,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;AACnD,CAAC;AAED;;;GAGG;AACH,SAAgB,gBAAgB,CAC9B,SAAwB,EACxB,KAAgB;IAEhB,QAAQ,KAAK,EAAE,CAAC;QACd,KAAK,KAAK,CAAC,CAAC,CAAC;YACX,MAAM,MAAM,GAAG,cAAc,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;YAC7C,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;gBACxB,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,YAAY;gBACrC,OAAO,EAAE,CAAC,CAAC,OAAO;gBAClB,UAAU,EAAE,CAAC,CAAC,UAAU;gBACxB,OAAO,EAAE,CAAC,CAAC,OAAO;gBAClB,OAAO,EAAE,CAAC,CAAC,OAAO;gBAClB,OAAO,EAAE,CAAC,CAAC,OAAO;aACnB,CAAC,CAAC,CAAC;QACN,CAAC;QACD,KAAK,IAAI,CAAC,CAAC,CAAC;YACV,MAAM,MAAM,GAAG,cAAc,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;YAC7C,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;gBACxB,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,aAAa;gBACrC,OAAO,EAAE,CAAC,CAAC,OAAO;gBAClB,UAAU,EAAE,CAAC,CAAC,UAAU;gBACxB,OAAO,EAAE,CAAC,CAAC,OAAO;gBAClB,OAAO,EAAE,CAAC,CAAC,OAAO;gBAClB,OAAO,EAAE,CAAC,CAAC,OAAO;aACnB,CAAC,CAAC,CAAC;QACN,CAAC;QACD,KAAK,IAAI,CAAC,CAAC,CAAC;YACV,MAAM,KAAK,GAAG,aAAa,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC;YAC1C,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;gBACvB,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,UAAU;gBAClC,OAAO,EAAE,CAAC,CAAC,OAAO;gBAClB,UAAU,EAAE,CAAC,CAAC,UAAU;gBACxB,OAAO,EAAE,CAAC,CAAC,OAAO;gBAClB,OAAO,EAAE,CAAC,CAAC,OAAO;gBAClB,OAAO,EAAE,CAAC,CAAC,OAAO;aACnB,CAAC,CAAC,CAAC;QACN,CAAC;QACD,KAAK,IAAI,CAAC,CAAC,CAAC;YACV,MAAM,KAAK,GAAG,aAAa,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;YAC3C,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;gBACvB,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,UAAU;gBAClC,OAAO,EAAE,CAAC,CAAC,OAAO;gBAClB,UAAU,EAAE,CAAC,CAAC,UAAU;gBACxB,OAAO,EAAE,CAAC,CAAC,OAAO;gBAClB,OAAO,EAAE,CAAC,CAAC,OAAO;gBAClB,OAAO,EAAE,CAAC,CAAC,OAAO;aACnB,CAAC,CAAC,CAAC;QACN,CAAC;QACD,KAAK,KAAK,CAAC;QACX,OAAO,CAAC,CAAC,CAAC;YACR,yDAAyD;YACzD,MAAM,KAAK,GAAG,aAAa,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;YAC3C,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;gBACvB,KAAK,EAAE,CAAC,CAAC,IAAI;gBACb,OAAO,EAAE,CAAC,CAAC,OAAO;gBAClB,UAAU,EAAE,CAAC,CAAC,UAAU;gBACxB,OAAO,EAAE,CAAC,CAAC,OAAO;gBAClB,OAAO,EAAE,CAAC,CAAC,OAAO;gBAClB,OAAO,EAAE,CAAC,CAAC,OAAO;aACnB,CAAC,CAAC,CAAC;QACN,CAAC;IACH,CAAC;AACH,CAAC;AAED;;GAEG;AACH,SAAgB,iBAAiB,CAC/B,SAAwB,EACxB,QAAmB,IAAI;IAEvB,MAAM,KAAK,GAAG,gBAAgB,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;IAEjD,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;QACrB,MAAM,KAAK,GAAG,CAAC,CAAC,OAAO,GAAG,CAAC,CAAC,UAAU,CAAC;QACvC,OAAO;YACL,KAAK,EAAE,CAAC,CAAC,KAAK;YACd,OAAO,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,GAAG,KAAK,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;SAC/D,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC;AAED;;GAEG;AACH,SAAgB,YAAY,CAC1B,SAAwB,EACxB,QAAmB,IAAI;IAEvB,MAAM,KAAK,GAAG,gBAAgB,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;IAEjD,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QACvB,KAAK,EAAE,CAAC,CAAC,KAAK;QACd,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,MAAM,IAAI,CAAC;QAC7B,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,MAAM,IAAI,CAAC;QAC7B,QAAQ,EAAE,CAAC,CAAC,OAAO,CAAC,QAAQ,IAAI,CAAC;KAClC,CAAC,CAAC,CAAC;AACN,CAAC;AAED;;GAEG;AACH,SAAgB,aAAa,CAC3B,SAAwB,EACxB,QAAmB,IAAI,EACvB,OAAe,CAAC;IAEhB,MAAM,KAAK,GAAG,gBAAgB,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;IAEjD,2CAA2C;IAC3C,MAAM,WAAW,GAAG,IAAI,GAAG,EAAkB,CAAC;IAC9C,KAAK,MAAM,CAAC,IAAI,KAAK,EAAE,CAAC;QACtB,KAAK,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;YACvD,WAAW,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC;QAChE,CAAC;IACH,CAAC;IAED,MAAM,SAAS,GAAG,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,CAAC;SAChD,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;SAC3B,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC;SACd,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC;IAE3B,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;QACrB,MAAM,MAAM,GAA2B,EAAE,CAAC;QAC1C,KAAK,MAAM,KAAK,IAAI,SAAS,EAAE,CAAC;YAC9B,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACxC,CAAC;QACD,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,MAAM,EAAE,CAAC;IACpC,CAAC,CAAC,CAAC;AACL,CAAC;AAED;;GAEG;AACH,SAAgB,cAAc,CAC5B,SAAwB,EACxB,QAAmB,IAAI;IAEvB,MAAM,KAAK,GAAG,gBAAgB,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;IAEjD,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QACvB,KAAK,EAAE,CAAC,CAAC,KAAK;QACd,OAAO,EAAE,CAAC,CAAC,OAAO;QAClB,OAAO,EAAE,CAAC,CAAC,OAAO;QAClB,UAAU,EAAE,CAAC,CAAC,UAAU;KACzB,CAAC,CAAC,CAAC;AACN,CAAC;AAED;;GAEG;AACH,SAAgB,eAAe,CAC7B,SAAwB,EACxB,KAAgB;IAEhB,IAAI,KAAK,KAAK,KAAK,EAAE,CAAC;QACpB,OAAO;YACL,OAAO,EAAE,SAAS,CAAC,OAAO,CAAC,OAAO;YAClC,UAAU,EAAE,SAAS,CAAC,OAAO,CAAC,UAAU;YACxC,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;YACrF,OAAO,EAAE,SAAS,CAAC,OAAO,CAAC,OAAO;YAClC,OAAO,EAAE,SAAS,CAAC,OAAO,CAAC,OAAO;SACnC,CAAC;IACJ,CAAC;IAED,MAAM,KAAK,GAAG,gBAAgB,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;IAEjD,MAAM,MAAM,GAAG;QACb,OAAO,EAAE,CAAC;QACV,UAAU,EAAE,CAAC;QACb,OAAO,EAAE,CAAC;QACV,OAAO,EAAE,EAAoB;QAC7B,OAAO,EAAE,EAAoB;KAC9B,CAAC;IAEF,KAAK,MAAM,CAAC,IAAI,KAAK,EAAE,CAAC;QACtB,MAAM,CAAC,OAAO,IAAI,CAAC,CAAC,OAAO,CAAC;QAC5B,MAAM,CAAC,UAAU,IAAI,CAAC,CAAC,UAAU,CAAC;QAClC,MAAM,CAAC,OAAO,IAAI,CAAC,CAAC,OAAO,CAAC;QAC5B,MAAM,CAAC,OAAO,GAAG,mBAAmB,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC;QAChE,MAAM,CAAC,OAAO,GAAG,mBAAmB,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC;IAClE,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,gFAAgF;AAChF,oBAAoB;AACpB,gFAAgF;AAEhF;;GAEG;AACI,KAAK,UAAU,UAAU,CAC9B,QAAgB;IAEhB,MAAM,SAAS,GAAG,MAAM,iBAAiB,CAAC,QAAQ,CAAC,CAAC;IACpD,OAAO,SAAS,EAAE,OAAO,IAAI,IAAI,CAAC;AACpC,CAAC;AAED;;GAEG;AACI,KAAK,UAAU,mBAAmB,CACvC,QAAgB,EAChB,KAAa;IAEb,MAAM,SAAS,GAAG,MAAM,iBAAiB,CAAC,QAAQ,CAAC,CAAC;IACpD,OAAO,SAAS,EAAE,YAAY,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC;AAChD,CAAC;AAED;;GAEG;AACI,KAAK,UAAU,YAAY,CAChC,QAAgB,EAChB,KAAK,GAAG,EAAE;IAEV,MAAM,SAAS,GAAG,MAAM,iBAAiB,CAAC,QAAQ,CAAC,CAAC;IACpD,OAAO,SAAS,EAAE,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC;AACpD,CAAC;AAED;;GAEG;AACH,SAAgB,qBAAqB,CAAC,OAAyB;IAC7D,IAAI,OAAO,CAAC,UAAU,KAAK,CAAC;QAAE,OAAO,CAAC,CAAC;IACvC,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,OAAO,GAAG,OAAO,CAAC,UAAU,CAAC,GAAG,GAAG,CAAC,CAAC;AAClE,CAAC;AAED,gFAAgF;AAChF,4BAA4B;AAC5B,gFAAgF;AAEhF;;GAEG;AACH,SAAgB,aAAa,CAAC,OAAyB;IACrD,MAAM,SAAS,GAAG,qBAAqB,CAAC,OAAO,CAAC,CAAC;IACjD,MAAM,KAAK,GAAa,EAAE,CAAC;IAE3B,KAAK,CAAC,IAAI,CAAC,gBAAgB,OAAO,CAAC,UAAU,CAAC,cAAc,EAAE,EAAE,CAAC,CAAC;IAClE,KAAK,CAAC,IAAI,CAAC,aAAa,OAAO,CAAC,OAAO,CAAC,cAAc,EAAE,KAAK,SAAS,IAAI,CAAC,CAAC;IAC5E,KAAK,CAAC,IAAI,CAAC,gBAAgB,OAAO,CAAC,UAAU,CAAC,cAAc,EAAE,EAAE,CAAC,CAAC;IAElE,IAAI,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,GAAG,CAAC,IAAI,OAAO,CAAC,OAAO,GAAG,CAAC,EAAE,CAAC;QACnE,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACf,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QACxB,KAAK,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;YAC7D,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;gBACxB,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,GAAG,CAAC,CAAC;gBAC5D,KAAK,CAAC,IAAI,CAAC,KAAK,KAAK,KAAK,KAAK,CAAC,cAAc,EAAE,KAAK,OAAO,IAAI,CAAC,CAAC;YACpE,CAAC;QACH,CAAC;IACH,CAAC;IAED,IAAI,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,GAAG,CAAC,IAAI,OAAO,CAAC,OAAO,GAAG,CAAC,EAAE,CAAC;QACnE,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACf,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QACxB,MAAM,YAAY,GAAG,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC;aACjD,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;aAC3B,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACf,KAAK,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,YAAY,EAAE,CAAC;YAC1C,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,GAAG,CAAC,CAAC;YAC5D,KAAK,CAAC,IAAI,CAAC,KAAK,KAAK,KAAK,KAAK,CAAC,cAAc,EAAE,KAAK,OAAO,IAAI,CAAC,CAAC;QACpE,CAAC;IACH,CAAC;IAED,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC;AAED;;GAEG;AACH,SAAgB,sBAAsB,CACpC,KAAa,EACb,KAAuB;IAEvB,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,GAAG,KAAK,CAAC,UAAU,CAAC;IAC/C,MAAM,SAAS,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,OAAO,GAAG,KAAK,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAE5E,MAAM,KAAK,GAAa,EAAE,CAAC;IAE3B,KAAK,CAAC,IAAI,CAAC,gBAAgB,KAAK,EAAE,CAAC,CAAC;IACpC,KAAK,CAAC,IAAI,CAAC,YAAY,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;IACxC,KAAK,CAAC,IAAI,CAAC,aAAa,KAAK,CAAC,OAAO,CAAC,cAAc,EAAE,KAAK,SAAS,IAAI,CAAC,CAAC;IAC1E,KAAK,CAAC,IAAI,CAAC,gBAAgB,KAAK,CAAC,UAAU,CAAC,cAAc,EAAE,EAAE,CAAC,CAAC;IAEhE,IAAI,KAAK,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC/B,KAAK,CAAC,IAAI,CAAC,eAAe,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAC1D,CAAC;IAED,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC;AAED;;GAEG;AACH,SAAgB,eAAe,CAAC,MAAgB,EAAE,QAAgB,EAAE;IAClE,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC;IAEnC,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,CAAC;IAChC,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,CAAC;IAChC,MAAM,KAAK,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,CAAC;IAE7B,MAAM,MAAM,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;IAExD,6BAA6B;IAC7B,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,GAAG,KAAK,CAAC,CAAC,CAAC;IAC5D,MAAM,OAAO,GAAa,EAAE,CAAC;IAC7B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,IAAI,OAAO,CAAC,MAAM,GAAG,KAAK,EAAE,CAAC,IAAI,IAAI,EAAE,CAAC;QACvE,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;IAC1B,CAAC;IAED,OAAO,OAAO;SACX,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;QACT,MAAM,UAAU,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC,GAAG,KAAK,CAAC;QACrC,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;QAClF,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;IACvB,CAAC,CAAC;SACD,IAAI,CAAC,EAAE,CAAC,CAAC;AACd,CAAC;AAED;;GAEG;AACH,SAAS,aAAa,CAAC,KAAgB;IACrC,QAAQ,KAAK,EAAE,CAAC;QACd,KAAK,KAAK,CAAC,CAAC,OAAO,eAAe,CAAC;QACnC,KAAK,IAAI,CAAC,CAAC,OAAO,aAAa,CAAC;QAChC,KAAK,IAAI,CAAC,CAAC,OAAO,WAAW,CAAC;QAC9B,KAAK,IAAI,CAAC,CAAC,OAAO,YAAY,CAAC;QAC/B,KAAK,KAAK,CAAC,CAAC,OAAO,UAAU,CAAC;IAChC,CAAC;AACH,CAAC;AAED;;GAEG;AACH,SAAgB,kBAAkB,CAAC,SAAwB,EAAE,QAAmB,IAAI;IAClF,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,MAAM,KAAK,GAAG,gBAAgB,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;IACjD,MAAM,UAAU,GAAG,aAAa,CAAC,KAAK,CAAC,CAAC;IAExC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,IAAI,KAAK,KAAK,KAAK,EAAE,CAAC;QAC1C,OAAO,8BAA8B,CAAC;IACxC,CAAC;IAED,oBAAoB;IACpB,MAAM,UAAU,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;QACjC,MAAM,KAAK,GAAG,CAAC,CAAC,OAAO,GAAG,CAAC,CAAC,UAAU,CAAC;QACvC,OAAO,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,GAAG,KAAK,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC/D,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,6BAA6B;IAE3C,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC1B,KAAK,CAAC,IAAI,CAAC,SAAS,UAAU,MAAM,eAAe,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;QAEnE,qBAAqB;QACrB,MAAM,SAAS,GAAG,UAAU,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC;QACzD,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC;QACpF,MAAM,QAAQ,GAAG,SAAS,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;QACzE,KAAK,CAAC,IAAI,CAAC,cAAc,SAAS,WAAW,KAAK,MAAM,QAAQ,EAAE,CAAC,CAAC;IACtE,CAAC;IAED,kBAAkB;IAClB,MAAM,OAAO,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,CAAC;IACtD,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACvB,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACf,KAAK,CAAC,IAAI,CAAC,YAAY,UAAU,MAAM,eAAe,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QACnE,KAAK,CAAC,IAAI,CAAC,YAAY,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;IAC/D,CAAC;IAED,iBAAiB;IACjB,MAAM,SAAS,GAAG,YAAY,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;IACjD,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACzB,MAAM,WAAW,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;QAChE,MAAM,WAAW,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;QAChE,MAAM,aAAa,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;QACpE,MAAM,SAAS,GAAG,WAAW,GAAG,WAAW,GAAG,aAAa,CAAC;QAE5D,IAAI,SAAS,GAAG,CAAC,EAAE,CAAC;YAClB,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACf,KAAK,CAAC,IAAI,CAAC,eAAe,UAAU,IAAI,CAAC,CAAC;YAC1C,IAAI,WAAW,GAAG,CAAC,EAAE,CAAC;gBACpB,KAAK,CAAC,IAAI,CAAC,aAAa,WAAW,WAAW,IAAI,CAAC,KAAK,CAAC,CAAC,WAAW,GAAG,SAAS,CAAC,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC;YACjG,CAAC;YACD,IAAI,WAAW,GAAG,CAAC,EAAE,CAAC;gBACpB,KAAK,CAAC,IAAI,CAAC,aAAa,WAAW,WAAW,IAAI,CAAC,KAAK,CAAC,CAAC,WAAW,GAAG,SAAS,CAAC,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC;YACjG,CAAC;YACD,IAAI,aAAa,GAAG,CAAC,EAAE,CAAC;gBACtB,KAAK,CAAC,IAAI,CAAC,eAAe,aAAa,WAAW,IAAI,CAAC,KAAK,CAAC,CAAC,aAAa,GAAG,SAAS,CAAC,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC;YACvG,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC;AAED,gFAAgF;AAChF,2BAA2B;AAC3B,gFAAgF;AAEhF;;GAEG;AACI,KAAK,UAAU,aAAa,CAAC,QAAgB;IAClD,MAAM,QAAQ,GAAG,MAAM,iBAAiB,CAAC,QAAQ,CAAC,CAAC;IAEnD,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,MAAM,OAAO,GAAkB;YAC7B,CAAC,EAAE,CAAC;YACJ,OAAO,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;YACjC,OAAO,EAAE;gBACP,UAAU,EAAE,CAAC;gBACb,OAAO,EAAE,CAAC;gBACV,UAAU,EAAE,CAAC;gBACb,YAAY,EAAE,CAAC;gBACf,OAAO,EAAE,CAAC;gBACV,OAAO,EAAE,EAAE;gBACX,OAAO,EAAE,EAAE;aACZ;YACD,YAAY,EAAE,EAAE;YAChB,SAAS,EAAE,EAAE;YACb,UAAU,EAAE,qBAAqB,EAAE;SACpC,CAAC;QAEF,OAAO,MAAM,kBAAkB,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IACrD,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;GAEG;AACI,KAAK,UAAU,cAAc,CAAC,QAAgB;IACnD,MAAM,OAAO,GAAkB;QAC7B,CAAC,EAAE,CAAC;QACJ,OAAO,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;QACjC,OAAO,EAAE;YACP,UAAU,EAAE,CAAC;YACb,OAAO,EAAE,CAAC;YACV,UAAU,EAAE,CAAC;YACb,YAAY,EAAE,CAAC;YACf,OAAO,EAAE,CAAC;YACV,OAAO,EAAE,EAAE;YACX,OAAO,EAAE,EAAE;SACZ;QACD,YAAY,EAAE,EAAE;QAChB,SAAS,EAAE,EAAE;QACb,UAAU,EAAE,qBAAqB,EAAE;KACpC,CAAC;IAEF,OAAO,MAAM,kBAAkB,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;AACrD,CAAC;AAED,gFAAgF;AAChF,iCAAiC;AACjC,gFAAgF;AAEhF;;GAEG;AACI,KAAK,UAAU,sBAAsB,CAC1C,QAAgB;IAEhB,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;QAC7B,MAAM,IAAI,GAAG,IAAA,0BAAK,EAChB,KAAK,EACL;YACE,QAAQ;YACR,SAAS;YACT,OAAO;YACP,oBAAoB;YACpB,IAAI,aAAa,IAAI,aAAa,EAAE;SACrC,EACD;YACE,GAAG,EAAE,QAAQ;YACb,KAAK,EAAE,CAAC,QAAQ,EAAE,QAAQ,EAAE,QAAQ,CAAC;SACtC,CACF,CAAC;QAEF,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE;YACxB,OAAO,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC;QACtB,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE;YACpB,OAAO,CAAC,KAAK,CAAC,CAAC;QACjB,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC;AAED;;GAEG;AACI,KAAK,UAAU,mBAAmB,CAAC,QAAgB;IACxD,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;QAC7B,MAAM,IAAI,GAAG,IAAA,0BAAK,EAChB,KAAK,EACL,CAAC,OAAO,EAAE,QAAQ,EAAE,GAAG,aAAa,IAAI,aAAa,EAAE,CAAC,EACxD;YACE,GAAG,EAAE,QAAQ;YACb,KAAK,EAAE,CAAC,QAAQ,EAAE,QAAQ,EAAE,QAAQ,CAAC;SACtC,CACF,CAAC;QAEF,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE;YACxB,OAAO,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC;QACtB,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE;YACpB,OAAO,CAAC,KAAK,CAAC,CAAC;QACjB,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC;AAED;;GAEG;AACI,KAAK,UAAU,kBAAkB,CAAC,QAAgB;IACvD,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;QAC7B,MAAM,IAAI,GAAG,IAAA,0BAAK,EAAC,KAAK,EAAE,CAAC,MAAM,EAAE,QAAQ,EAAE,aAAa,CAAC,EAAE;YAC3D,GAAG,EAAE,QAAQ;YACb,KAAK,EAAE,CAAC,QAAQ,EAAE,QAAQ,EAAE,QAAQ,CAAC;SACtC,CAAC,CAAC;QAEH,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE;YACxB,OAAO,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC;QACtB,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE;YACpB,OAAO,CAAC,KAAK,CAAC,CAAC;QACjB,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Attribution Module v3
|
|
3
|
+
*
|
|
4
|
+
* Computes line attributions by replaying edit deltas.
|
|
5
|
+
* At commit time, replays all deltas to determine which lines
|
|
6
|
+
* were written by AI vs human, and links to specific prompts.
|
|
7
|
+
*
|
|
8
|
+
* Algorithm:
|
|
9
|
+
* 1. Start with empty attributions (or git blame for existing lines)
|
|
10
|
+
* 2. For each delta in chronological order:
|
|
11
|
+
* - Shift existing attributions based on insertions/deletions
|
|
12
|
+
* - Remove attributions for deleted lines
|
|
13
|
+
* - Add attributions for inserted lines
|
|
14
|
+
* 3. Merge adjacent same-author ranges
|
|
15
|
+
*/
|
|
16
|
+
import type { EditDelta, LineAttribution, ComputedFileAttribution } from "./types";
|
|
17
|
+
/**
|
|
18
|
+
* Apply a single delta to existing attributions
|
|
19
|
+
* Returns updated attributions and new line count
|
|
20
|
+
*/
|
|
21
|
+
export declare function applyDelta(attributions: LineAttribution[], delta: EditDelta, lineCount: number): {
|
|
22
|
+
attributions: LineAttribution[];
|
|
23
|
+
lineCount: number;
|
|
24
|
+
};
|
|
25
|
+
/**
|
|
26
|
+
* Merge adjacent attributions with the same author
|
|
27
|
+
*/
|
|
28
|
+
export declare function mergeAttributions(attrs: LineAttribution[]): LineAttribution[];
|
|
29
|
+
/**
|
|
30
|
+
* Compute final attributions for a file by replaying all deltas
|
|
31
|
+
*/
|
|
32
|
+
export declare function computeFileAttributions(repoRoot: string, baseSha: string, filePath: string): Promise<ComputedFileAttribution>;
|
|
33
|
+
/**
|
|
34
|
+
* Compute attributions for multiple files
|
|
35
|
+
*/
|
|
36
|
+
export declare function computeAttributionsForFiles(repoRoot: string, baseSha: string, files: string[]): Promise<Record<string, ComputedFileAttribution>>;
|
|
37
|
+
/**
|
|
38
|
+
* Count total AI lines from attributions
|
|
39
|
+
*/
|
|
40
|
+
export declare function countAILines(attribution: ComputedFileAttribution): number;
|
|
41
|
+
/**
|
|
42
|
+
* Count total human lines from attributions
|
|
43
|
+
*/
|
|
44
|
+
export declare function countHumanLines(attribution: ComputedFileAttribution): number;
|
|
45
|
+
/**
|
|
46
|
+
* Get attribution summary for a file
|
|
47
|
+
*/
|
|
48
|
+
export declare function getAttributionSummary(attribution: ComputedFileAttribution): {
|
|
49
|
+
totalLines: number;
|
|
50
|
+
aiLines: number;
|
|
51
|
+
humanLines: number;
|
|
52
|
+
aiPercent: number;
|
|
53
|
+
sessionCount: number;
|
|
54
|
+
};
|
|
@@ -0,0 +1,266 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Attribution Module v3
|
|
4
|
+
*
|
|
5
|
+
* Computes line attributions by replaying edit deltas.
|
|
6
|
+
* At commit time, replays all deltas to determine which lines
|
|
7
|
+
* were written by AI vs human, and links to specific prompts.
|
|
8
|
+
*
|
|
9
|
+
* Algorithm:
|
|
10
|
+
* 1. Start with empty attributions (or git blame for existing lines)
|
|
11
|
+
* 2. For each delta in chronological order:
|
|
12
|
+
* - Shift existing attributions based on insertions/deletions
|
|
13
|
+
* - Remove attributions for deleted lines
|
|
14
|
+
* - Add attributions for inserted lines
|
|
15
|
+
* 3. Merge adjacent same-author ranges
|
|
16
|
+
*/
|
|
17
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
18
|
+
exports.applyDelta = applyDelta;
|
|
19
|
+
exports.mergeAttributions = mergeAttributions;
|
|
20
|
+
exports.computeFileAttributions = computeFileAttributions;
|
|
21
|
+
exports.computeAttributionsForFiles = computeAttributionsForFiles;
|
|
22
|
+
exports.countAILines = countAILines;
|
|
23
|
+
exports.countHumanLines = countHumanLines;
|
|
24
|
+
exports.getAttributionSummary = getAttributionSummary;
|
|
25
|
+
const delta_1 = require("./delta");
|
|
26
|
+
const storage_1 = require("./storage");
|
|
27
|
+
// =============================================================================
|
|
28
|
+
// Delta Replay
|
|
29
|
+
// =============================================================================
|
|
30
|
+
/**
|
|
31
|
+
* Apply a single delta to existing attributions
|
|
32
|
+
* Returns updated attributions and new line count
|
|
33
|
+
*/
|
|
34
|
+
function applyDelta(attributions, delta, lineCount) {
|
|
35
|
+
// Sort hunks by oldStart in reverse order to process from bottom to top
|
|
36
|
+
// This prevents line number shifts from affecting earlier hunks
|
|
37
|
+
const sortedHunks = [...delta.hunks].sort((a, b) => b.oldStart - a.oldStart);
|
|
38
|
+
let result = [...attributions];
|
|
39
|
+
let newLineCount = lineCount;
|
|
40
|
+
for (const hunk of sortedHunks) {
|
|
41
|
+
const { oldStart, oldCount, newStart, newCount } = hunk;
|
|
42
|
+
const shift = newCount - oldCount;
|
|
43
|
+
// Update line count
|
|
44
|
+
newLineCount += shift;
|
|
45
|
+
// Process existing attributions
|
|
46
|
+
const updated = [];
|
|
47
|
+
for (const attr of result) {
|
|
48
|
+
// Case 1: Attribution is entirely before the hunk - unchanged
|
|
49
|
+
if (attr.endLine < oldStart) {
|
|
50
|
+
updated.push(attr);
|
|
51
|
+
continue;
|
|
52
|
+
}
|
|
53
|
+
// Case 2: Attribution is entirely after the hunk - shift
|
|
54
|
+
if (attr.startLine >= oldStart + oldCount) {
|
|
55
|
+
updated.push({
|
|
56
|
+
...attr,
|
|
57
|
+
startLine: attr.startLine + shift,
|
|
58
|
+
endLine: attr.endLine + shift,
|
|
59
|
+
});
|
|
60
|
+
continue;
|
|
61
|
+
}
|
|
62
|
+
// Case 3: Attribution overlaps with deleted region
|
|
63
|
+
// Split into before and after parts, removing the deleted portion
|
|
64
|
+
// Part before deletion
|
|
65
|
+
if (attr.startLine < oldStart) {
|
|
66
|
+
updated.push({
|
|
67
|
+
...attr,
|
|
68
|
+
endLine: oldStart - 1,
|
|
69
|
+
});
|
|
70
|
+
}
|
|
71
|
+
// Part after deletion (shifted)
|
|
72
|
+
if (attr.endLine >= oldStart + oldCount) {
|
|
73
|
+
const newStartLine = newStart + newCount;
|
|
74
|
+
const originalEndOffset = attr.endLine - (oldStart + oldCount - 1);
|
|
75
|
+
updated.push({
|
|
76
|
+
...attr,
|
|
77
|
+
startLine: newStartLine,
|
|
78
|
+
endLine: newStartLine + originalEndOffset - 1,
|
|
79
|
+
});
|
|
80
|
+
}
|
|
81
|
+
// The part that overlaps with deletion is removed (overwritten)
|
|
82
|
+
// If this was an AI attribution being overwritten by human, track it
|
|
83
|
+
if (delta.sessionId === null && attr.sessionId) {
|
|
84
|
+
// Human overwrote AI - we could track this as 'overrode'
|
|
85
|
+
// For now, we just remove the attribution
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
// Add attribution for new lines (if any)
|
|
89
|
+
if (newCount > 0 && delta.sessionId !== null) {
|
|
90
|
+
updated.push({
|
|
91
|
+
startLine: newStart,
|
|
92
|
+
endLine: newStart + newCount - 1,
|
|
93
|
+
sessionId: delta.sessionId,
|
|
94
|
+
promptId: delta.promptId,
|
|
95
|
+
});
|
|
96
|
+
}
|
|
97
|
+
result = updated;
|
|
98
|
+
}
|
|
99
|
+
return {
|
|
100
|
+
attributions: mergeAttributions(result),
|
|
101
|
+
lineCount: newLineCount,
|
|
102
|
+
};
|
|
103
|
+
}
|
|
104
|
+
/**
|
|
105
|
+
* Merge adjacent attributions with the same author
|
|
106
|
+
*/
|
|
107
|
+
function mergeAttributions(attrs) {
|
|
108
|
+
if (attrs.length === 0) {
|
|
109
|
+
return [];
|
|
110
|
+
}
|
|
111
|
+
// Sort by start line
|
|
112
|
+
const sorted = [...attrs].sort((a, b) => a.startLine - b.startLine);
|
|
113
|
+
const merged = [];
|
|
114
|
+
let current = { ...sorted[0] };
|
|
115
|
+
for (let i = 1; i < sorted.length; i++) {
|
|
116
|
+
const next = sorted[i];
|
|
117
|
+
// Check if can merge: same session, same prompt, adjacent or overlapping
|
|
118
|
+
if (current.sessionId === next.sessionId &&
|
|
119
|
+
current.promptId === next.promptId &&
|
|
120
|
+
next.startLine <= current.endLine + 1) {
|
|
121
|
+
// Merge: extend current to include next
|
|
122
|
+
current.endLine = Math.max(current.endLine, next.endLine);
|
|
123
|
+
}
|
|
124
|
+
else {
|
|
125
|
+
// Can't merge: push current and start new
|
|
126
|
+
merged.push(current);
|
|
127
|
+
current = { ...next };
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
// Push last one
|
|
131
|
+
merged.push(current);
|
|
132
|
+
// Filter out invalid ranges
|
|
133
|
+
return merged.filter((attr) => attr.startLine <= attr.endLine);
|
|
134
|
+
}
|
|
135
|
+
// =============================================================================
|
|
136
|
+
// Full Attribution Computation
|
|
137
|
+
// =============================================================================
|
|
138
|
+
/**
|
|
139
|
+
* Compute final attributions for a file by replaying all deltas
|
|
140
|
+
*/
|
|
141
|
+
async function computeFileAttributions(repoRoot, baseSha, filePath) {
|
|
142
|
+
// Load deltas for this file
|
|
143
|
+
const deltas = (0, delta_1.readDeltasForFile)(repoRoot, baseSha, filePath);
|
|
144
|
+
if (deltas.length === 0) {
|
|
145
|
+
return { aiRanges: [], humanRanges: [] };
|
|
146
|
+
}
|
|
147
|
+
if (process.env.AGENTBLAME_DEBUG) {
|
|
148
|
+
console.error(`[agentblame] computeFileAttributions: ${filePath}`);
|
|
149
|
+
console.error(`[agentblame] deltas: ${deltas.length}`);
|
|
150
|
+
for (const d of deltas) {
|
|
151
|
+
const sid = d.sessionId?.slice(0, 8) || 'HUMAN';
|
|
152
|
+
console.error(`[agentblame] ${sid}: L${d.hunks[0]?.newStart}+${d.hunks[0]?.newCount}`);
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
// Get initial line count from the file at baseSha
|
|
156
|
+
const initialContent = await (0, storage_1.getFileAtCommit)(repoRoot, baseSha, filePath);
|
|
157
|
+
let lineCount = initialContent ? initialContent.split("\n").length : 0;
|
|
158
|
+
// Replay deltas in chronological order
|
|
159
|
+
let attributions = [];
|
|
160
|
+
for (const delta of deltas) {
|
|
161
|
+
const result = applyDelta(attributions, delta, lineCount);
|
|
162
|
+
attributions = result.attributions;
|
|
163
|
+
lineCount = result.lineCount;
|
|
164
|
+
if (process.env.AGENTBLAME_DEBUG) {
|
|
165
|
+
const sid = delta.sessionId?.slice(0, 8) || 'HUMAN';
|
|
166
|
+
console.error(`[agentblame] after ${sid}: attrs=${attributions.map(a => `${a.sessionId?.slice(0, 8)}:L${a.startLine}-${a.endLine}`).join(', ')}`);
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
// Separate AI vs human ranges
|
|
170
|
+
const aiRanges = attributions.filter((attr) => attr.sessionId !== null);
|
|
171
|
+
if (process.env.AGENTBLAME_DEBUG) {
|
|
172
|
+
console.error(`[agentblame] final aiRanges: ${aiRanges.map(a => `${a.sessionId?.slice(0, 8)}:L${a.startLine}-${a.endLine}`).join(', ')}`);
|
|
173
|
+
}
|
|
174
|
+
// Compute human ranges as gaps in AI ranges
|
|
175
|
+
const humanRanges = computeHumanRanges(aiRanges, lineCount);
|
|
176
|
+
return { aiRanges, humanRanges };
|
|
177
|
+
}
|
|
178
|
+
/**
|
|
179
|
+
* Compute human ranges as gaps between AI ranges
|
|
180
|
+
*/
|
|
181
|
+
function computeHumanRanges(aiRanges, totalLines) {
|
|
182
|
+
if (totalLines === 0) {
|
|
183
|
+
return [];
|
|
184
|
+
}
|
|
185
|
+
// Sort AI ranges
|
|
186
|
+
const sorted = [...aiRanges].sort((a, b) => a.startLine - b.startLine);
|
|
187
|
+
const humanRanges = [];
|
|
188
|
+
let currentLine = 1;
|
|
189
|
+
for (const range of sorted) {
|
|
190
|
+
// Gap before this AI range
|
|
191
|
+
if (range.startLine > currentLine) {
|
|
192
|
+
humanRanges.push({
|
|
193
|
+
startLine: currentLine,
|
|
194
|
+
endLine: range.startLine - 1,
|
|
195
|
+
});
|
|
196
|
+
}
|
|
197
|
+
currentLine = Math.max(currentLine, range.endLine + 1);
|
|
198
|
+
}
|
|
199
|
+
// Gap after last AI range
|
|
200
|
+
if (currentLine <= totalLines) {
|
|
201
|
+
humanRanges.push({
|
|
202
|
+
startLine: currentLine,
|
|
203
|
+
endLine: totalLines,
|
|
204
|
+
});
|
|
205
|
+
}
|
|
206
|
+
return humanRanges;
|
|
207
|
+
}
|
|
208
|
+
/**
|
|
209
|
+
* Compute attributions for multiple files
|
|
210
|
+
*/
|
|
211
|
+
async function computeAttributionsForFiles(repoRoot, baseSha, files) {
|
|
212
|
+
const result = {};
|
|
213
|
+
// Process files in parallel for performance
|
|
214
|
+
const promises = files.map(async (file) => {
|
|
215
|
+
const attribution = await computeFileAttributions(repoRoot, baseSha, file);
|
|
216
|
+
return { file, attribution };
|
|
217
|
+
});
|
|
218
|
+
const results = await Promise.all(promises);
|
|
219
|
+
for (const { file, attribution } of results) {
|
|
220
|
+
result[file] = attribution;
|
|
221
|
+
}
|
|
222
|
+
return result;
|
|
223
|
+
}
|
|
224
|
+
// =============================================================================
|
|
225
|
+
// Statistics
|
|
226
|
+
// =============================================================================
|
|
227
|
+
/**
|
|
228
|
+
* Count total AI lines from attributions
|
|
229
|
+
*/
|
|
230
|
+
function countAILines(attribution) {
|
|
231
|
+
let count = 0;
|
|
232
|
+
for (const range of attribution.aiRanges) {
|
|
233
|
+
count += range.endLine - range.startLine + 1;
|
|
234
|
+
}
|
|
235
|
+
return count;
|
|
236
|
+
}
|
|
237
|
+
/**
|
|
238
|
+
* Count total human lines from attributions
|
|
239
|
+
*/
|
|
240
|
+
function countHumanLines(attribution) {
|
|
241
|
+
let count = 0;
|
|
242
|
+
for (const range of attribution.humanRanges) {
|
|
243
|
+
count += range.endLine - range.startLine + 1;
|
|
244
|
+
}
|
|
245
|
+
return count;
|
|
246
|
+
}
|
|
247
|
+
/**
|
|
248
|
+
* Get attribution summary for a file
|
|
249
|
+
*/
|
|
250
|
+
function getAttributionSummary(attribution) {
|
|
251
|
+
const aiLines = countAILines(attribution);
|
|
252
|
+
const humanLines = countHumanLines(attribution);
|
|
253
|
+
const totalLines = aiLines + humanLines;
|
|
254
|
+
const sessions = new Set();
|
|
255
|
+
for (const range of attribution.aiRanges) {
|
|
256
|
+
sessions.add(range.sessionId);
|
|
257
|
+
}
|
|
258
|
+
return {
|
|
259
|
+
totalLines,
|
|
260
|
+
aiLines,
|
|
261
|
+
humanLines,
|
|
262
|
+
aiPercent: totalLines > 0 ? Math.round((aiLines / totalLines) * 100) : 0,
|
|
263
|
+
sessionCount: sessions.size,
|
|
264
|
+
};
|
|
265
|
+
}
|
|
266
|
+
//# sourceMappingURL=attribution.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"attribution.js","sourceRoot":"","sources":["../../src/lib/attribution.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Checkpoint Module v3
|
|
3
|
+
*
|
|
4
|
+
* Bulletproof capture of file states before AI edits.
|
|
5
|
+
* This replaces the file watcher approach with a deterministic checkpoint system.
|
|
6
|
+
*
|
|
7
|
+
* Strategy:
|
|
8
|
+
* - Cursor: beforeSubmitPrompt captures modified files, afterFileEdit uses checkpoint
|
|
9
|
+
* - Claude: PreToolUse captures target file, PostToolUse uses checkpoint
|
|
10
|
+
* - OpenCode: tool.execute.before captures target file, tool.execute.after uses checkpoint
|
|
11
|
+
*
|
|
12
|
+
* Storage: .git/agentblame/checkpoints/{conversation_id}.json
|
|
13
|
+
*/
|
|
14
|
+
export interface FileCheckpoint {
|
|
15
|
+
blobSha: string;
|
|
16
|
+
contentHash: string;
|
|
17
|
+
timestamp: string;
|
|
18
|
+
}
|
|
19
|
+
export interface Checkpoint {
|
|
20
|
+
conversationId: string;
|
|
21
|
+
timestamp: string;
|
|
22
|
+
files: Record<string, FileCheckpoint>;
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Compute a fast content hash for comparison
|
|
26
|
+
* Uses SHA256 truncated to 16 chars for efficiency
|
|
27
|
+
*/
|
|
28
|
+
export declare function hashContent(content: string): string;
|
|
29
|
+
/**
|
|
30
|
+
* Check if a file has changed since the checkpoint
|
|
31
|
+
* Returns true if the file content differs from the checkpoint
|
|
32
|
+
*/
|
|
33
|
+
export declare function hasFileChanged(repoRoot: string, conversationId: string, filePath: string): Promise<boolean>;
|
|
34
|
+
/**
|
|
35
|
+
* Get checkpoint content for a file (loads from git blob)
|
|
36
|
+
*/
|
|
37
|
+
export declare function getCheckpointContent(repoRoot: string, conversationId: string, filePath: string): Promise<string | null>;
|
|
38
|
+
/**
|
|
39
|
+
* Get the checkpoints directory path
|
|
40
|
+
*/
|
|
41
|
+
export declare function getCheckpointsDir(repoRoot: string): string;
|
|
42
|
+
/**
|
|
43
|
+
* Get the checkpoint file path for a conversation
|
|
44
|
+
*/
|
|
45
|
+
export declare function getCheckpointPath(repoRoot: string, conversationId: string): string;
|
|
46
|
+
/**
|
|
47
|
+
* Ensure checkpoints directory exists
|
|
48
|
+
*/
|
|
49
|
+
export declare function ensureCheckpointsDir(repoRoot: string): void;
|
|
50
|
+
/**
|
|
51
|
+
* Save a checkpoint for a conversation
|
|
52
|
+
*/
|
|
53
|
+
export declare function saveCheckpoint(repoRoot: string, checkpoint: Checkpoint): void;
|
|
54
|
+
/**
|
|
55
|
+
* Load a checkpoint for a conversation
|
|
56
|
+
*/
|
|
57
|
+
export declare function loadCheckpoint(repoRoot: string, conversationId: string): Checkpoint | null;
|
|
58
|
+
/**
|
|
59
|
+
* Update a checkpoint with a new file state
|
|
60
|
+
*/
|
|
61
|
+
export declare function updateCheckpointFile(repoRoot: string, conversationId: string, filePath: string, blobSha: string, contentHash: string): void;
|
|
62
|
+
/**
|
|
63
|
+
* Update checkpoint with content (computes hash and stores blob)
|
|
64
|
+
*/
|
|
65
|
+
export declare function updateCheckpointWithContent(repoRoot: string, conversationId: string, filePath: string, content: string): Promise<void>;
|
|
66
|
+
/**
|
|
67
|
+
* Get the "before" blob for a file from checkpoint
|
|
68
|
+
* Returns null if no checkpoint exists for this file
|
|
69
|
+
*/
|
|
70
|
+
export declare function getCheckpointBlob(repoRoot: string, conversationId: string, filePath: string): string | null;
|
|
71
|
+
/**
|
|
72
|
+
* Delete a checkpoint (cleanup after commit or session end)
|
|
73
|
+
*/
|
|
74
|
+
export declare function deleteCheckpoint(repoRoot: string, conversationId: string): void;
|
|
75
|
+
/**
|
|
76
|
+
* Clean up old checkpoints (older than specified hours)
|
|
77
|
+
*/
|
|
78
|
+
export declare function cleanupOldCheckpoints(repoRoot: string, maxAgeHours?: number): number;
|
|
79
|
+
/**
|
|
80
|
+
* Get list of modified files from git status (staged + unstaged)
|
|
81
|
+
* These are files that may have human edits since last commit
|
|
82
|
+
*/
|
|
83
|
+
export declare function getGitModifiedFiles(repoRoot: string): Promise<string[]>;
|
|
84
|
+
/**
|
|
85
|
+
* Capture checkpoint for Cursor's beforeSubmitPrompt
|
|
86
|
+
* Captures all modified files (from git status) since they may have human edits
|
|
87
|
+
*/
|
|
88
|
+
export declare function captureBeforePromptCheckpoint(repoRoot: string, conversationId: string): Promise<Checkpoint>;
|
|
89
|
+
/**
|
|
90
|
+
* Capture checkpoint for a single file (Claude PreToolUse / OpenCode tool.execute.before)
|
|
91
|
+
* More efficient than capturing all modified files since we know the target
|
|
92
|
+
*/
|
|
93
|
+
export declare function captureFileCheckpoint(repoRoot: string, conversationId: string, filePath: string): Promise<string | null>;
|
|
94
|
+
/**
|
|
95
|
+
* Get the "before" blob for a file, using checkpoint if available, else git HEAD
|
|
96
|
+
*/
|
|
97
|
+
export declare function getBeforeBlob(repoRoot: string, conversationId: string, filePath: string): Promise<string | null>;
|