@lucianfialho/build-in-public-mcp 0.3.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.
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;AAEA;;;GAGG;;AAEH,wEAAmE;AACnE,wEAAiF;AACjF,iEAG4C;AAE5C,+CAAoD;AACpD,sDAK+B;AAC/B,sDAM+B;AAC/B,0EAAuF;AAEvF,sBAAsB;AACtB,MAAM,MAAM,GAAG,IAAI,iBAAM,CACvB;IACE,IAAI,EAAE,iBAAiB;IACvB,OAAO,EAAE,OAAO;CACjB,EACD;IACE,YAAY,EAAE;QACZ,KAAK,EAAE,EAAE;KACV;CACF,CACF,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,iBAAiB,CAAC,iCAAsB,EAAE,KAAK,IAAI,EAAE;IAC1D,OAAO;QACL,KAAK,EAAE;YACL;gBACE,IAAI,EAAE,iBAAiB;gBACvB,WAAW,EACT,wEAAwE;gBAC1E,WAAW,EAAE;oBACX,IAAI,EAAE,QAAQ;oBACd,UAAU,EAAE;wBACV,OAAO,EAAE;4BACP,IAAI,EAAE,QAAQ;4BACd,WAAW,EAAE,gDAAgD;yBAC9D;qBACF;oBACD,QAAQ,EAAE,CAAC,SAAS,CAAC;iBACtB;aACF;YACD;gBACE,IAAI,EAAE,kBAAkB;gBACxB,WAAW,EACT,8EAA8E;gBAChF,WAAW,EAAE;oBACX,IAAI,EAAE,QAAQ;oBACd,UAAU,EAAE;wBACV,QAAQ,EAAE;4BACR,IAAI,EAAE,OAAO;4BACb,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;4BACzB,WAAW,EAAE,wCAAwC;yBACtD;wBACD,cAAc,EAAE;4BACd,IAAI,EAAE,QAAQ;4BACd,WAAW,EAAE,0EAA0E;yBACxF;qBACF;oBACD,QAAQ,EAAE,CAAC,UAAU,CAAC;iBACvB;aACF;YACD;gBACE,IAAI,EAAE,sBAAsB;gBAC5B,WAAW,EACT,8DAA8D;gBAChE,WAAW,EAAE;oBACX,IAAI,EAAE,QAAQ;oBACd,UAAU,EAAE,EAAE;iBACf;aACF;YACD;gBACE,IAAI,EAAE,kBAAkB;gBACxB,WAAW,EAAE,kDAAkD;gBAC/D,WAAW,EAAE;oBACX,IAAI,EAAE,QAAQ;oBACd,UAAU,EAAE,EAAE;iBACf;aACF;YACD;gBACE,IAAI,EAAE,mBAAmB;gBACzB,WAAW,EACT,iEAAiE;gBACnE,WAAW,EAAE;oBACX,IAAI,EAAE,QAAQ;oBACd,UAAU,EAAE;wBACV,SAAS,EAAE;4BACT,IAAI,EAAE,QAAQ;4BACd,WAAW,EAAE,4DAA4D;yBAC1E;qBACF;iBACF;aACF;YACD;gBACE,IAAI,EAAE,wBAAwB;gBAC9B,WAAW,EAAE,yDAAyD;gBACtE,WAAW,EAAE;oBACX,IAAI,EAAE,QAAQ;oBACd,UAAU,EAAE;wBACV,OAAO,EAAE;4BACP,IAAI,EAAE,QAAQ;4BACd,WAAW,EAAE,sBAAsB;yBACpC;qBACF;oBACD,QAAQ,EAAE,CAAC,SAAS,CAAC;iBACtB;aACF;YACD;gBACE,IAAI,EAAE,uBAAuB;gBAC7B,WAAW,EAAE,kCAAkC;gBAC/C,WAAW,EAAE;oBACX,IAAI,EAAE,QAAQ;oBACd,UAAU,EAAE;wBACV,SAAS,EAAE;4BACT,IAAI,EAAE,QAAQ;4BACd,WAAW,EAAE,4DAA4D;yBAC1E;qBACF;iBACF;aACF;SACF;KACF,CAAC;AACJ,CAAC,CAAC,CAAC;AAEH;;GAEG;AACH,MAAM,CAAC,iBAAiB,CAAC,gCAAqB,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE;IAChE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC;IAEjD,IAAI,CAAC;QACH,QAAQ,IAAI,EAAE,CAAC;YACb,KAAK,iBAAiB,CAAC,CAAC,CAAC;gBACvB,MAAM,EAAE,OAAO,EAAE,GAAG,IAA2B,CAAC;gBAEhD,IAAI,CAAC,OAAO,EAAE,CAAC;oBACb,MAAM,IAAI,KAAK,CAAC,qBAAqB,CAAC,CAAC;gBACzC,CAAC;gBAED,IAAI,OAAO,CAAC,MAAM,GAAG,GAAG,EAAE,CAAC;oBACzB,MAAM,IAAI,KAAK,CACb,sBAAsB,OAAO,CAAC,MAAM,uBAAuB,CAC5D,CAAC;gBACJ,CAAC;gBAED,uBAAuB;gBACvB,IAAI,CAAC,IAAA,4BAAe,GAAE,EAAE,CAAC;oBACvB,OAAO;wBACL,OAAO,EAAE;4BACP;gCACE,IAAI,EAAE,MAAM;gCACZ,IAAI,EACF,yBAAyB;oCACzB,qEAAqE;6BACxE;yBACF;wBACD,OAAO,EAAE,IAAI;qBACd,CAAC;gBACJ,CAAC;gBAED,aAAa;gBACb,MAAM,MAAM,GAAG,MAAM,IAAA,sBAAS,EAAC,OAAO,CAAC,CAAC;gBAExC,OAAO;oBACL,OAAO,EAAE;wBACP;4BACE,IAAI,EAAE,MAAM;4BACZ,IAAI,EACF,kCAAkC;gCAClC,MAAM,MAAM,CAAC,GAAG,MAAM;gCACtB,aAAa,OAAO,GAAG;yBAC1B;qBACF;iBACF,CAAC;YACJ,CAAC;YAED,KAAK,kBAAkB,CAAC,CAAC,CAAC;gBACxB,MAAM,EAAE,QAAQ,EAAE,cAAc,EAAE,GAAG,IAAuD,CAAC;gBAE7F,IAAI,CAAC,QAAQ,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;oBACvC,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC,CAAC;gBAC3D,CAAC;gBAED,2BAA2B;gBAC3B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;oBACzC,IAAI,QAAQ,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,GAAG,EAAE,CAAC;wBAC7B,MAAM,IAAI,KAAK,CACb,WAAW,CAAC,GAAG,CAAC,iBAAiB,QAAQ,CAAC,CAAC,CAAC,CAAC,MAAM,uBAAuB,CAC3E,CAAC;oBACJ,CAAC;gBACH,CAAC;gBAED,uBAAuB;gBACvB,IAAI,CAAC,IAAA,4BAAe,GAAE,EAAE,CAAC;oBACvB,OAAO;wBACL,OAAO,EAAE;4BACP;gCACE,IAAI,EAAE,MAAM;gCACZ,IAAI,EACF,yBAAyB;oCACzB,qEAAqE;6BACxE;yBACF;wBACD,OAAO,EAAE,IAAI;qBACd,CAAC;gBACJ,CAAC;gBAED,cAAc;gBACd,MAAM,MAAM,GAAG,MAAM,IAAA,uBAAU,EAAC,QAAQ,EAAE,cAAc,CAAC,CAAC;gBAE1D,OAAO;oBACL,OAAO,EAAE;wBACP;4BACE,IAAI,EAAE,MAAM;4BACZ,IAAI,EACF,mCAAmC;gCACnC,MAAM,QAAQ,CAAC,MAAM,qBAAqB;gCAC1C,wBAAwB,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM;gCAC5C,oBAAoB,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,GAAG,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;yBACrF;qBACF;iBACF,CAAC;YACJ,CAAC;YAED,KAAK,sBAAsB,CAAC,CAAC,CAAC;gBAC5B,OAAO,CAAC,KAAK,CAAC,gCAAgC,CAAC,CAAC;gBAChD,OAAO,CAAC,KAAK,CAAC,6CAA6C,CAAC,CAAC;gBAC7D,OAAO,CAAC,KAAK,CACX,6EAA6E,CAC9E,CAAC;gBAEF,IAAI,CAAC;oBACH,MAAM,MAAM,GAAG,MAAM,IAAA,2BAAgB,GAAE,CAAC;oBAExC,qBAAqB;oBACrB,MAAM,IAAI,GAAG,MAAM,IAAA,8BAAiB,GAAE,CAAC;oBAEvC,OAAO;wBACL,OAAO,EAAE;4BACP;gCACE,IAAI,EAAE,MAAM;gCACZ,IAAI,EACF,kCAAkC;oCAClC,yBAAyB,IAAI,CAAC,QAAQ,KAAK,IAAI,CAAC,IAAI,KAAK;oCACzD,uBAAuB,IAAA,0BAAa,GAAE,gBAAgB;oCACtD,oBAAoB;oCACpB,sCAAsC;oCACtC,wCAAwC;6BAC3C;yBACF;qBACF,CAAC;gBACJ,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBACf,MAAM,YAAY,GAChB,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;oBACzD,OAAO;wBACL,OAAO,EAAE;4BACP;gCACE,IAAI,EAAE,MAAM;gCACZ,IAAI,EACF,0BAA0B;oCAC1B,UAAU,YAAY,MAAM;oCAC5B,kBAAkB;oCAClB,2CAA2C;oCAC3C,sCAAsC;oCACtC,mCAAmC;6BACtC;yBACF;wBACD,OAAO,EAAE,IAAI;qBACd,CAAC;gBACJ,CAAC;YACH,CAAC;YAED,KAAK,kBAAkB,CAAC,CAAC,CAAC;gBACxB,MAAM,aAAa,GAAG,IAAA,4BAAe,GAAE,CAAC;gBAExC,IAAI,UAAU,GAAG,0CAA0C,CAAC;gBAC5D,UAAU,IAAI,kBAAkB,CAAC;gBACjC,UAAU,IAAI,YAAY,IAAA,0BAAa,GAAE,MAAM,CAAC;gBAEhD,8BAA8B;gBAC9B,UAAU,IAAI,6BAA6B,CAAC;gBAC5C,UAAU,IAAI,sBAAsB,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,WAAW,IAAI,CAAC;gBAC5F,UAAU,IAAI,yBAAyB,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,WAAW,IAAI,CAAC;gBAClG,UAAU,IAAI,2BAA2B,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,WAAW,IAAI,CAAC;gBACtG,UAAU,IAAI,4BAA4B,OAAO,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,WAAW,MAAM,CAAC;gBAE1G,IAAI,aAAa,EAAE,CAAC;oBAClB,IAAI,CAAC;wBACH,MAAM,IAAI,GAAG,MAAM,IAAA,8BAAiB,GAAE,CAAC;wBACvC,UAAU,IAAI,wBAAwB,IAAI,CAAC,QAAQ,KAAK,IAAI,CAAC,IAAI,OAAO,CAAC;wBACzE,UAAU,IAAI,oBAAoB,CAAC;wBACnC,UAAU,IAAI,+CAA+C,CAAC;wBAC9D,UAAU,IAAI,iDAAiD,CAAC;oBAClE,CAAC;oBAAC,OAAO,KAAK,EAAE,CAAC;wBACf,UAAU,IAAI,8DAA8D,CAAC;wBAC7E,UAAU,IAAI,kDAAkD,CAAC;oBACnE,CAAC;gBACH,CAAC;qBAAM,CAAC;oBACN,UAAU,IAAI,yBAAyB,CAAC;oBACxC,UAAU,IAAI,yDAAyD,CAAC;gBAC1E,CAAC;gBAED,OAAO;oBACL,OAAO,EAAE;wBACP;4BACE,IAAI,EAAE,MAAM;4BACZ,IAAI,EAAE,UAAU;yBACjB;qBACF;iBACF,CAAC;YACJ,CAAC;YAED,KAAK,mBAAmB,CAAC,CAAC,CAAC;gBACzB,uBAAuB;gBACvB,MAAM,OAAO,GAAG,IAAA,+BAAkB,GAAE,CAAC;gBAErC,IAAI,CAAC,OAAO,EAAE,CAAC;oBACb,OAAO;wBACL,OAAO,EAAE;4BACP;gCACE,IAAI,EAAE,MAAM;gCACZ,IAAI,EACF,kCAAkC;oCAClC,qEAAqE;oCACrE,wDAAwD;6BAC3D;yBACF;qBACF,CAAC;gBACJ,CAAC;gBAED,uBAAuB;gBACvB,MAAM,WAAW,GAAG,IAAA,0CAAmB,EAAC,OAAO,CAAC,CAAC;gBACjD,MAAM,UAAU,GAAG,IAAA,sCAAe,EAAC,OAAO,CAAC,CAAC;gBAE5C,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;oBAC7B,OAAO;wBACL,OAAO,EAAE;4BACP;gCACE,IAAI,EAAE,MAAM;gCACZ,IAAI,EACF,kCAAkC;oCAClC,uBAAuB,CAAC,UAAU,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO;oCAC3D,+CAA+C;oCAC/C,8BAA8B;oCAC9B,iCAAiC;oCACjC,uCAAuC;6BAC1C;yBACF;qBACF,CAAC;gBACJ,CAAC;gBAED,IAAI,YAAY,GAAG,yBAAyB,WAAW,CAAC,MAAM,OAAO,CAAC;gBACtE,YAAY,IAAI,uBAAuB,CAAC,UAAU,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC;gBAE5E,WAAW,CAAC,OAAO,CAAC,CAAC,UAAU,EAAE,KAAK,EAAE,EAAE;oBACxC,YAAY,IAAI,GAAG,KAAK,GAAG,CAAC,MAAM,CAAC,UAAU,CAAC,UAAU,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,iBAAiB,UAAU,CAAC,IAAI,IAAI,CAAC;oBAC/G,YAAY,IAAI,MAAM,UAAU,CAAC,MAAM,MAAM,CAAC;oBAC9C,YAAY,IAAI,OAAO,UAAU,CAAC,OAAO,OAAO,CAAC;gBACnD,CAAC,CAAC,CAAC;gBAEH,YAAY,IAAI,yDAAyD,CAAC;gBAE1E,OAAO;oBACL,OAAO,EAAE;wBACP;4BACE,IAAI,EAAE,MAAM;4BACZ,IAAI,EAAE,YAAY;yBACnB;qBACF;iBACF,CAAC;YACJ,CAAC;YAED,KAAK,wBAAwB,CAAC,CAAC,CAAC;gBAC9B,MAAM,EAAE,OAAO,EAAE,GAAG,IAAwB,CAAC;gBAE7C,IAAI,CAAC,OAAO,EAAE,CAAC;oBACb,MAAM,IAAI,KAAK,CAAC,qBAAqB,CAAC,CAAC;gBACzC,CAAC;gBAED,mBAAmB;gBACnB,IAAA,+BAAkB,EAAC,OAAyB,CAAC,CAAC;gBAE9C,OAAO;oBACL,OAAO,EAAE;wBACP;4BACE,IAAI,EAAE,MAAM;4BACZ,IAAI,EACF,4CAA4C;gCAC5C,mBAAmB,OAAO,CAAC,aAAa,EAAE,MAAM,IAAI,CAAC,IAAI;gCACzD,iBAAiB,OAAO,CAAC,WAAW,EAAE,MAAM,IAAI,CAAC,IAAI;gCACrD,YAAY,OAAO,CAAC,OAAO,EAAE,MAAM,IAAI,CAAC,MAAM;gCAC9C,4EAA4E;yBAC/E;qBACF;iBACF,CAAC;YACJ,CAAC;YAED,KAAK,uBAAuB,CAAC,CAAC,CAAC;gBAC7B,MAAM,OAAO,GAAG,IAAA,+BAAkB,GAAE,CAAC;gBAErC,IAAI,CAAC,OAAO,EAAE,CAAC;oBACb,OAAO;wBACL,OAAO,EAAE;4BACP;gCACE,IAAI,EAAE,MAAM;gCACZ,IAAI,EACF,kCAAkC;oCAClC,mHAAmH;6BACtH;yBACF;qBACF,CAAC;gBACJ,CAAC;gBAED,IAAI,WAAW,GAAG,wBAAwB,CAAC;gBAC3C,WAAW,IAAI,eAAe,OAAO,CAAC,SAAS,IAAI,CAAC;gBACpD,WAAW,IAAI,YAAY,IAAI,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,cAAc,EAAE,IAAI,CAAC;gBAC5E,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC;oBACxB,WAAW,IAAI,iBAAiB,IAAI,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,cAAc,EAAE,IAAI,CAAC;gBACrF,CAAC;gBACD,WAAW,IAAI,IAAI,CAAC;gBAEpB,WAAW,IAAI,sBAAsB,OAAO,CAAC,aAAa,EAAE,MAAM,IAAI,CAAC,IAAI,CAAC;gBAC5E,WAAW,IAAI,qBAAqB,OAAO,CAAC,WAAW,EAAE,MAAM,IAAI,CAAC,IAAI,CAAC;gBACzE,WAAW,IAAI,kBAAkB,OAAO,CAAC,SAAS,EAAE,MAAM,IAAI,CAAC,IAAI,CAAC;gBACpE,WAAW,IAAI,qBAAqB,OAAO,CAAC,YAAY,EAAE,MAAM,IAAI,CAAC,IAAI,CAAC;gBAC1E,WAAW,IAAI,mBAAmB,OAAO,CAAC,OAAO,EAAE,MAAM,IAAI,CAAC,IAAI,CAAC;gBACnE,WAAW,IAAI,mBAAmB,OAAO,CAAC,YAAY,EAAE,MAAM,IAAI,CAAC,IAAI,CAAC;gBACxE,WAAW,IAAI,kBAAkB,OAAO,CAAC,UAAU,EAAE,MAAM,IAAI,CAAC,IAAI,CAAC;gBACrE,WAAW,IAAI,iBAAiB,OAAO,CAAC,SAAS,EAAE,MAAM,IAAI,CAAC,MAAM,CAAC;gBAErE,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC;oBACxB,WAAW,IAAI,0BAA0B,CAAC;oBAC1C,IAAI,OAAO,CAAC,cAAc,EAAE,CAAC;wBAC3B,WAAW,IAAI,aAAa,OAAO,CAAC,cAAc,KAAK,CAAC;oBAC1D,CAAC;gBACH,CAAC;gBAED,OAAO;oBACL,OAAO,EAAE;wBACP;4BACE,IAAI,EAAE,MAAM;4BACZ,IAAI,EAAE,WAAW;yBAClB;qBACF;iBACF,CAAC;YACJ,CAAC;YAED;gBACE,MAAM,IAAI,KAAK,CAAC,iBAAiB,IAAI,EAAE,CAAC,CAAC;QAC7C,CAAC;IACH,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,YAAY,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAC5E,OAAO;YACL,OAAO,EAAE;gBACP;oBACE,IAAI,EAAE,MAAM;oBACZ,IAAI,EAAE,YAAY,YAAY,EAAE;iBACjC;aACF;YACD,OAAO,EAAE,IAAI;SACd,CAAC;IACJ,CAAC;AACH,CAAC,CAAC,CAAC;AAEH;;GAEG;AACH,KAAK,UAAU,IAAI;IACjB,MAAM,SAAS,GAAG,IAAI,+BAAoB,EAAE,CAAC;IAC7C,MAAM,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IAEhC,kDAAkD;IAClD,OAAO,CAAC,KAAK,CAAC,uCAAuC,CAAC,CAAC;IACvD,OAAO,CAAC,KAAK,CAAC,mBAAmB,CAAC,CAAC;IACnC,OAAO,CAAC,KAAK,CAAC,qBAAqB,CAAC,CAAC;IACrC,OAAO,CAAC,KAAK,CAAC,aAAa,EAAE,IAAA,0BAAa,GAAE,CAAC,CAAC;IAC9C,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;AACpB,CAAC;AAED,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;IACrB,OAAO,CAAC,KAAK,CAAC,2BAA2B,EAAE,KAAK,CAAC,CAAC;IAClD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
@@ -0,0 +1,22 @@
1
+ /**
2
+ * Git Analyzer for Build in Public
3
+ * Parses git commit information and generates tweet-friendly summaries
4
+ */
5
+ import { GitCommit } from './storage.js';
6
+ /**
7
+ * Parse a git commit from command output or structured data
8
+ */
9
+ export declare function parseCommit(commitData: any): GitCommit | null;
10
+ /**
11
+ * Format commit message for Twitter (280 char limit)
12
+ */
13
+ export declare function formatCommitTweet(commit: GitCommit): string;
14
+ /**
15
+ * Summarize multiple commits into a thread
16
+ */
17
+ export declare function summarizeCommits(commits: GitCommit[]): string[];
18
+ /**
19
+ * Extract key changes from commit
20
+ */
21
+ export declare function extractKeyChanges(commit: GitCommit): string[];
22
+ //# sourceMappingURL=git-analyzer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"git-analyzer.d.ts","sourceRoot":"","sources":["../../src/services/git-analyzer.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAEzC;;GAEG;AACH,wBAAgB,WAAW,CAAC,UAAU,EAAE,GAAG,GAAG,SAAS,GAAG,IAAI,CAoB7D;AA2BD;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,SAAS,GAAG,MAAM,CA+B3D;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,SAAS,EAAE,GAAG,MAAM,EAAE,CAiC/D;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,SAAS,GAAG,MAAM,EAAE,CAa7D"}
@@ -0,0 +1,168 @@
1
+ "use strict";
2
+ /**
3
+ * Git Analyzer for Build in Public
4
+ * Parses git commit information and generates tweet-friendly summaries
5
+ */
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.parseCommit = parseCommit;
8
+ exports.formatCommitTweet = formatCommitTweet;
9
+ exports.summarizeCommits = summarizeCommits;
10
+ exports.extractKeyChanges = extractKeyChanges;
11
+ /**
12
+ * Parse a git commit from command output or structured data
13
+ */
14
+ function parseCommit(commitData) {
15
+ try {
16
+ if (typeof commitData === 'string') {
17
+ // Parse from git log format
18
+ return parseCommitFromLog(commitData);
19
+ }
20
+ // Already structured
21
+ return {
22
+ hash: commitData.hash || '',
23
+ message: commitData.message || '',
24
+ filesChanged: commitData.filesChanged || [],
25
+ timestamp: commitData.timestamp || new Date().toISOString(),
26
+ additions: commitData.additions,
27
+ deletions: commitData.deletions,
28
+ };
29
+ }
30
+ catch (error) {
31
+ console.error('Failed to parse commit:', error);
32
+ return null;
33
+ }
34
+ }
35
+ /**
36
+ * Parse commit from git log output
37
+ * Expected format: hash|author|timestamp|message|files
38
+ */
39
+ function parseCommitFromLog(logOutput) {
40
+ const lines = logOutput.trim().split('\n');
41
+ if (lines.length === 0) {
42
+ return null;
43
+ }
44
+ const firstLine = lines[0];
45
+ const parts = firstLine.split('|');
46
+ if (parts.length < 4) {
47
+ return null;
48
+ }
49
+ return {
50
+ hash: parts[0].trim(),
51
+ message: parts[3].trim(),
52
+ filesChanged: parts[4] ? parts[4].split(',').map((f) => f.trim()) : [],
53
+ timestamp: parts[2].trim(),
54
+ };
55
+ }
56
+ /**
57
+ * Format commit message for Twitter (280 char limit)
58
+ */
59
+ function formatCommitTweet(commit) {
60
+ const filesCount = commit.filesChanged.length;
61
+ const filesText = filesCount === 1 ? '1 file' : `${filesCount} files`;
62
+ let tweet = `📝 ${commit.message}\n\n`;
63
+ tweet += `Changed ${filesText}`;
64
+ if (commit.additions !== undefined || commit.deletions !== undefined) {
65
+ tweet += ` (+${commit.additions || 0}/-${commit.deletions || 0})`;
66
+ }
67
+ tweet += `\n\n#BuildInPublic #Git`;
68
+ // Ensure 280 char limit
69
+ if (tweet.length > 280) {
70
+ // Truncate commit message if needed
71
+ const maxMessageLen = 280 - 70; // Reserve space for metadata
72
+ const truncatedMessage = commit.message.length > maxMessageLen
73
+ ? commit.message.substring(0, maxMessageLen - 3) + '...'
74
+ : commit.message;
75
+ tweet = `📝 ${truncatedMessage}\n\n`;
76
+ tweet += `Changed ${filesText}`;
77
+ if (commit.additions !== undefined || commit.deletions !== undefined) {
78
+ tweet += ` (+${commit.additions || 0}/-${commit.deletions || 0})`;
79
+ }
80
+ tweet += `\n\n#BuildInPublic #Git`;
81
+ }
82
+ return tweet;
83
+ }
84
+ /**
85
+ * Summarize multiple commits into a thread
86
+ */
87
+ function summarizeCommits(commits) {
88
+ if (commits.length === 0) {
89
+ return [];
90
+ }
91
+ if (commits.length === 1) {
92
+ return [formatCommitTweet(commits[0])];
93
+ }
94
+ const thread = [];
95
+ // First tweet: overview
96
+ let overview = `🚀 Just pushed ${commits.length} commits!\n\n`;
97
+ overview += `Summary of changes:\n`;
98
+ overview += commits
99
+ .slice(0, 3)
100
+ .map((c, i) => `${i + 1}. ${c.message}`)
101
+ .join('\n');
102
+ if (commits.length > 3) {
103
+ overview += `\n... and ${commits.length - 3} more`;
104
+ }
105
+ overview += `\n\n#BuildInPublic`;
106
+ thread.push(overview);
107
+ // Additional tweets for detailed commits (if space allows)
108
+ commits.slice(0, 3).forEach((commit) => {
109
+ thread.push(formatCommitTweet(commit));
110
+ });
111
+ return thread;
112
+ }
113
+ /**
114
+ * Extract key changes from commit
115
+ */
116
+ function extractKeyChanges(commit) {
117
+ const changes = [];
118
+ // Categorize file changes
119
+ const categories = categorizeFiles(commit.filesChanged);
120
+ Object.entries(categories).forEach(([category, files]) => {
121
+ if (files.length > 0) {
122
+ changes.push(`${category}: ${files.length} file(s)`);
123
+ }
124
+ });
125
+ return changes;
126
+ }
127
+ /**
128
+ * Categorize files by type
129
+ */
130
+ function categorizeFiles(files) {
131
+ const categories = {
132
+ 'Code': [],
133
+ 'Tests': [],
134
+ 'Docs': [],
135
+ 'Config': [],
136
+ 'Other': [],
137
+ };
138
+ files.forEach((file) => {
139
+ const lower = file.toLowerCase();
140
+ if (lower.includes('test') || lower.includes('spec')) {
141
+ categories['Tests'].push(file);
142
+ }
143
+ else if (lower.endsWith('.md') ||
144
+ lower.includes('readme') ||
145
+ lower.includes('doc')) {
146
+ categories['Docs'].push(file);
147
+ }
148
+ else if (lower.includes('config') ||
149
+ lower.endsWith('.json') ||
150
+ lower.endsWith('.yaml') ||
151
+ lower.endsWith('.yml')) {
152
+ categories['Config'].push(file);
153
+ }
154
+ else if (lower.endsWith('.ts') ||
155
+ lower.endsWith('.js') ||
156
+ lower.endsWith('.py') ||
157
+ lower.endsWith('.java') ||
158
+ lower.endsWith('.go') ||
159
+ lower.endsWith('.rs')) {
160
+ categories['Code'].push(file);
161
+ }
162
+ else {
163
+ categories['Other'].push(file);
164
+ }
165
+ });
166
+ return categories;
167
+ }
168
+ //# sourceMappingURL=git-analyzer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"git-analyzer.js","sourceRoot":"","sources":["../../src/services/git-analyzer.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,111 @@
1
+ /**
2
+ * Local file storage for Build in Public
3
+ * Manages auth tokens, context, and history in ~/.build-in-public/
4
+ */
5
+ export interface AuthTokens {
6
+ apiKey: string;
7
+ apiSecret: string;
8
+ accessToken: string;
9
+ accessTokenSecret: string;
10
+ }
11
+ export interface TweetHistory {
12
+ tweets: Array<{
13
+ id: string;
14
+ url: string;
15
+ message: string;
16
+ timestamp: string;
17
+ }>;
18
+ threads: Array<{
19
+ id: string;
20
+ urls: string[];
21
+ messages: string[];
22
+ timestamp: string;
23
+ }>;
24
+ }
25
+ export interface GitCommit {
26
+ hash: string;
27
+ message: string;
28
+ filesChanged: string[];
29
+ timestamp: string;
30
+ additions?: number;
31
+ deletions?: number;
32
+ }
33
+ export interface Command {
34
+ command: string;
35
+ description: string;
36
+ timestamp?: string;
37
+ }
38
+ export interface SessionContext {
39
+ sessionId: string;
40
+ startTime: string;
41
+ lastUpdated?: string;
42
+ filesModified: string[];
43
+ commandsRun: Command[];
44
+ toolsUsed: string[];
45
+ userMessages: string[];
46
+ commits: GitCommit[];
47
+ achievements: string[];
48
+ challenges: string[];
49
+ learnings: string[];
50
+ shouldTweet: boolean;
51
+ triggerMessage?: string;
52
+ customMessage?: string;
53
+ }
54
+ /**
55
+ * Ensure storage directory exists
56
+ */
57
+ export declare function ensureStorageDir(): void;
58
+ /**
59
+ * Check if auth tokens exist (either in env vars or file)
60
+ */
61
+ export declare function hasAuthTokens(): boolean;
62
+ /**
63
+ * Save auth tokens to file
64
+ */
65
+ export declare function saveAuthTokens(tokens: AuthTokens): void;
66
+ /**
67
+ * Load auth tokens from environment variables or file
68
+ * Priority: environment variables > auth.json file
69
+ */
70
+ export declare function loadAuthTokens(): AuthTokens | null;
71
+ /**
72
+ * Delete auth tokens (for re-auth)
73
+ */
74
+ export declare function deleteAuthTokens(): void;
75
+ /**
76
+ * Save session context
77
+ */
78
+ export declare function saveContext(context: SessionContext): void;
79
+ /**
80
+ * Load session context
81
+ */
82
+ export declare function loadContext(): SessionContext | null;
83
+ /**
84
+ * Add tweet to history
85
+ */
86
+ export declare function addTweetToHistory(id: string, url: string, message: string): void;
87
+ /**
88
+ * Add thread to history
89
+ */
90
+ export declare function addThreadToHistory(id: string, urls: string[], messages: string[]): void;
91
+ /**
92
+ * Get storage directory path
93
+ */
94
+ export declare function getStorageDir(): string;
95
+ /**
96
+ * Save session context
97
+ */
98
+ export declare function saveSessionContext(context: SessionContext): void;
99
+ /**
100
+ * Load session context
101
+ */
102
+ export declare function loadSessionContext(): SessionContext | null;
103
+ /**
104
+ * Clear session context
105
+ */
106
+ export declare function clearSessionContext(): void;
107
+ /**
108
+ * Check if session context exists
109
+ */
110
+ export declare function hasSessionContext(): boolean;
111
+ //# sourceMappingURL=storage.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"storage.d.ts","sourceRoot":"","sources":["../../src/services/storage.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,260 @@
1
+ "use strict";
2
+ /**
3
+ * Local file storage for Build in Public
4
+ * Manages auth tokens, context, and history in ~/.build-in-public/
5
+ */
6
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
7
+ if (k2 === undefined) k2 = k;
8
+ var desc = Object.getOwnPropertyDescriptor(m, k);
9
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
10
+ desc = { enumerable: true, get: function() { return m[k]; } };
11
+ }
12
+ Object.defineProperty(o, k2, desc);
13
+ }) : (function(o, m, k, k2) {
14
+ if (k2 === undefined) k2 = k;
15
+ o[k2] = m[k];
16
+ }));
17
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
18
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
19
+ }) : function(o, v) {
20
+ o["default"] = v;
21
+ });
22
+ var __importStar = (this && this.__importStar) || (function () {
23
+ var ownKeys = function(o) {
24
+ ownKeys = Object.getOwnPropertyNames || function (o) {
25
+ var ar = [];
26
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
27
+ return ar;
28
+ };
29
+ return ownKeys(o);
30
+ };
31
+ return function (mod) {
32
+ if (mod && mod.__esModule) return mod;
33
+ var result = {};
34
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
35
+ __setModuleDefault(result, mod);
36
+ return result;
37
+ };
38
+ })();
39
+ Object.defineProperty(exports, "__esModule", { value: true });
40
+ exports.ensureStorageDir = ensureStorageDir;
41
+ exports.hasAuthTokens = hasAuthTokens;
42
+ exports.saveAuthTokens = saveAuthTokens;
43
+ exports.loadAuthTokens = loadAuthTokens;
44
+ exports.deleteAuthTokens = deleteAuthTokens;
45
+ exports.saveContext = saveContext;
46
+ exports.loadContext = loadContext;
47
+ exports.addTweetToHistory = addTweetToHistory;
48
+ exports.addThreadToHistory = addThreadToHistory;
49
+ exports.getStorageDir = getStorageDir;
50
+ exports.saveSessionContext = saveSessionContext;
51
+ exports.loadSessionContext = loadSessionContext;
52
+ exports.clearSessionContext = clearSessionContext;
53
+ exports.hasSessionContext = hasSessionContext;
54
+ const fs = __importStar(require("fs"));
55
+ const path = __importStar(require("path"));
56
+ const os = __importStar(require("os"));
57
+ const STORAGE_DIR = path.join(os.homedir(), '.build-in-public');
58
+ const AUTH_FILE = path.join(STORAGE_DIR, 'auth.json');
59
+ const CONTEXT_FILE = path.join(STORAGE_DIR, 'context.json');
60
+ const HISTORY_FILE = path.join(STORAGE_DIR, 'history.json');
61
+ /**
62
+ * Ensure storage directory exists
63
+ */
64
+ function ensureStorageDir() {
65
+ if (!fs.existsSync(STORAGE_DIR)) {
66
+ fs.mkdirSync(STORAGE_DIR, { recursive: true, mode: 0o700 }); // rwx------
67
+ console.error(`📁 Created storage directory: ${STORAGE_DIR}`);
68
+ }
69
+ }
70
+ /**
71
+ * Check if auth tokens exist (either in env vars or file)
72
+ */
73
+ function hasAuthTokens() {
74
+ // Check environment variables first
75
+ const hasEnvTokens = !!process.env.TWITTER_API_KEY &&
76
+ !!process.env.TWITTER_API_SECRET &&
77
+ !!process.env.TWITTER_ACCESS_TOKEN &&
78
+ !!process.env.TWITTER_ACCESS_SECRET;
79
+ return hasEnvTokens || fs.existsSync(AUTH_FILE);
80
+ }
81
+ /**
82
+ * Save auth tokens to file
83
+ */
84
+ function saveAuthTokens(tokens) {
85
+ ensureStorageDir();
86
+ fs.writeFileSync(AUTH_FILE, JSON.stringify(tokens, null, 2), {
87
+ mode: 0o600, // rw-------
88
+ });
89
+ console.error('✅ Auth tokens saved to:', AUTH_FILE);
90
+ }
91
+ /**
92
+ * Load auth tokens from environment variables or file
93
+ * Priority: environment variables > auth.json file
94
+ */
95
+ function loadAuthTokens() {
96
+ // Try environment variables first (following Supabase MCP pattern)
97
+ console.error('🔍 Debug: Checking env vars:', {
98
+ hasApiKey: !!process.env.TWITTER_API_KEY,
99
+ hasApiSecret: !!process.env.TWITTER_API_SECRET,
100
+ hasAccessToken: !!process.env.TWITTER_ACCESS_TOKEN,
101
+ hasAccessSecret: !!process.env.TWITTER_ACCESS_SECRET,
102
+ });
103
+ if (process.env.TWITTER_API_KEY &&
104
+ process.env.TWITTER_API_SECRET &&
105
+ process.env.TWITTER_ACCESS_TOKEN &&
106
+ process.env.TWITTER_ACCESS_SECRET) {
107
+ console.error('🔐 Using Twitter credentials from environment variables');
108
+ return {
109
+ apiKey: process.env.TWITTER_API_KEY,
110
+ apiSecret: process.env.TWITTER_API_SECRET,
111
+ accessToken: process.env.TWITTER_ACCESS_TOKEN,
112
+ accessTokenSecret: process.env.TWITTER_ACCESS_SECRET,
113
+ };
114
+ }
115
+ // Fall back to auth.json file
116
+ if (!fs.existsSync(AUTH_FILE)) {
117
+ return null;
118
+ }
119
+ try {
120
+ const data = fs.readFileSync(AUTH_FILE, 'utf-8');
121
+ console.error('🔐 Using Twitter credentials from:', AUTH_FILE);
122
+ return JSON.parse(data);
123
+ }
124
+ catch (error) {
125
+ console.error('❌ Failed to load auth tokens:', error);
126
+ return null;
127
+ }
128
+ }
129
+ /**
130
+ * Delete auth tokens (for re-auth)
131
+ */
132
+ function deleteAuthTokens() {
133
+ if (fs.existsSync(AUTH_FILE)) {
134
+ fs.unlinkSync(AUTH_FILE);
135
+ console.error('🗑️ Auth tokens deleted');
136
+ }
137
+ }
138
+ /**
139
+ * Save session context
140
+ */
141
+ function saveContext(context) {
142
+ ensureStorageDir();
143
+ const data = {
144
+ ...context,
145
+ lastUpdated: new Date().toISOString(),
146
+ };
147
+ fs.writeFileSync(CONTEXT_FILE, JSON.stringify(data, null, 2));
148
+ }
149
+ /**
150
+ * Load session context
151
+ */
152
+ function loadContext() {
153
+ if (!fs.existsSync(CONTEXT_FILE)) {
154
+ return null;
155
+ }
156
+ try {
157
+ const data = fs.readFileSync(CONTEXT_FILE, 'utf-8');
158
+ return JSON.parse(data);
159
+ }
160
+ catch (error) {
161
+ console.error('❌ Failed to load context:', error);
162
+ return null;
163
+ }
164
+ }
165
+ /**
166
+ * Add tweet to history
167
+ */
168
+ function addTweetToHistory(id, url, message) {
169
+ ensureStorageDir();
170
+ let history = { tweets: [], threads: [] };
171
+ if (fs.existsSync(HISTORY_FILE)) {
172
+ try {
173
+ const data = fs.readFileSync(HISTORY_FILE, 'utf-8');
174
+ history = JSON.parse(data);
175
+ }
176
+ catch (error) {
177
+ console.error('⚠️ Failed to load history, creating new:', error);
178
+ }
179
+ }
180
+ history.tweets.push({
181
+ id,
182
+ url,
183
+ message,
184
+ timestamp: new Date().toISOString(),
185
+ });
186
+ fs.writeFileSync(HISTORY_FILE, JSON.stringify(history, null, 2));
187
+ }
188
+ /**
189
+ * Add thread to history
190
+ */
191
+ function addThreadToHistory(id, urls, messages) {
192
+ ensureStorageDir();
193
+ let history = { tweets: [], threads: [] };
194
+ if (fs.existsSync(HISTORY_FILE)) {
195
+ try {
196
+ const data = fs.readFileSync(HISTORY_FILE, 'utf-8');
197
+ history = JSON.parse(data);
198
+ }
199
+ catch (error) {
200
+ console.error('⚠️ Failed to load history, creating new:', error);
201
+ }
202
+ }
203
+ history.threads.push({
204
+ id,
205
+ urls,
206
+ messages,
207
+ timestamp: new Date().toISOString(),
208
+ });
209
+ fs.writeFileSync(HISTORY_FILE, JSON.stringify(history, null, 2));
210
+ }
211
+ /**
212
+ * Get storage directory path
213
+ */
214
+ function getStorageDir() {
215
+ return STORAGE_DIR;
216
+ }
217
+ /**
218
+ * Save session context
219
+ */
220
+ function saveSessionContext(context) {
221
+ ensureStorageDir();
222
+ const data = {
223
+ ...context,
224
+ lastUpdated: new Date().toISOString(),
225
+ };
226
+ fs.writeFileSync(CONTEXT_FILE, JSON.stringify(data, null, 2));
227
+ console.error('💾 Session context saved');
228
+ }
229
+ /**
230
+ * Load session context
231
+ */
232
+ function loadSessionContext() {
233
+ if (!fs.existsSync(CONTEXT_FILE)) {
234
+ return null;
235
+ }
236
+ try {
237
+ const data = fs.readFileSync(CONTEXT_FILE, 'utf-8');
238
+ return JSON.parse(data);
239
+ }
240
+ catch (error) {
241
+ console.error('❌ Failed to load session context:', error);
242
+ return null;
243
+ }
244
+ }
245
+ /**
246
+ * Clear session context
247
+ */
248
+ function clearSessionContext() {
249
+ if (fs.existsSync(CONTEXT_FILE)) {
250
+ fs.unlinkSync(CONTEXT_FILE);
251
+ console.error('🗑️ Session context cleared');
252
+ }
253
+ }
254
+ /**
255
+ * Check if session context exists
256
+ */
257
+ function hasSessionContext() {
258
+ return fs.existsSync(CONTEXT_FILE);
259
+ }
260
+ //# sourceMappingURL=storage.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"storage.js","sourceRoot":"","sources":["../../src/services/storage.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,20 @@
1
+ /**
2
+ * Suggestion Engine for Build in Public
3
+ * Analyzes session context and generates intelligent tweet suggestions
4
+ */
5
+ import { SessionContext } from './storage.js';
6
+ export interface Suggestion {
7
+ message: string;
8
+ confidence: number;
9
+ reason: string;
10
+ type: 'commit' | 'achievement' | 'session' | 'learning';
11
+ }
12
+ /**
13
+ * Generate tweet suggestions based on session context
14
+ */
15
+ export declare function generateSuggestions(context: SessionContext): Suggestion[];
16
+ /**
17
+ * Calculate confidence score for suggestions
18
+ */
19
+ export declare function scoreConfidence(context: SessionContext): number;
20
+ //# sourceMappingURL=suggestion-engine.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"suggestion-engine.d.ts","sourceRoot":"","sources":["../../src/services/suggestion-engine.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,cAAc,EAAa,MAAM,cAAc,CAAC;AAEzD,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,QAAQ,GAAG,aAAa,GAAG,SAAS,GAAG,UAAU,CAAC;CACzD;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,cAAc,GAAG,UAAU,EAAE,CAuCzE;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,cAAc,GAAG,MAAM,CA8B/D"}