claude-statusline 2.1.3 → 2.1.5

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/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA;;;GAGG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,IAAI,CAAC;AAClC,OAAO,EAAE,UAAU,EAAU,MAAM,kBAAkB,CAAC;AACtD,OAAO,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AACtE,OAAO,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AACxC,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,aAAa,EAAE,qBAAqB,EAAa,MAAM,iBAAiB,CAAC;AAClF,OAAO,EAAE,gBAAgB,EAAE,YAAY,EAAE,aAAa,EAAE,mBAAmB,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC;AAC1H,OAAO,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AAyB7E;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,IAAI;IACxB,IAAI,CAAC;QACH,qBAAqB;QACrB,MAAM,MAAM,GAAG,UAAU,EAAE,CAAC;QAE5B,wBAAwB;QACxB,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC,MAAM,CAAC,CAAC;QAChC,MAAM,MAAM,GAAG,IAAI,aAAa,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;QAChD,MAAM,WAAW,GAAG,IAAI,mBAAmB,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;QAE3D,mCAAmC;QACnC,MAAM,mBAAmB,CAAC,MAAM,CAAC,CAAC;QAElC,qCAAqC;QACrC,MAAM,KAAK,GAAG,MAAM,SAAS,EAAE,CAAC;QAChC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC,EAAE,CAAC;YAClD,OAAO,CAAC,KAAK,CAAC,gCAAgC,CAAC,CAAC;YAChD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,iCAAiC;QACjC,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,GAAG,gBAAgB,CAAC,KAAK,CAAC,CAAC;QACtE,IAAI,CAAC,OAAO,IAAI,CAAC,SAAS,EAAE,CAAC;YAC3B,OAAO,CAAC,KAAK,CAAC,2DAA2D,CAAC,CAAC;YAC3E,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,qBAAqB;QACrB,MAAM,UAAU,GAAG,MAAM,iBAAiB,CAAC,OAAO,CAAC,CAAC;QACpD,IAAI,CAAC,UAAU,EAAE,CAAC;YAChB,OAAO,CAAC,KAAK,CAAC,4CAA4C,EAAE,OAAO,CAAC,CAAC;YACrE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,0DAA0D;QAC1D,MAAM,UAAU,GAAmB;YACjC,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC;YAC1B,WAAW,CAAC,kBAAkB,EAAE;YAChC,aAAa,CAAC,MAAM,CAAC;SACtB,CAAC;QAEF,yDAAyD;QACzD,IAAI,aAAiC,CAAC;QACtC,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;YACpB,UAAU,CAAC,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC,CAAC;QAC5C,CAAC;QAED,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QAC9C,MAAM,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC;QAE5C,0DAA0D;QAC1D,IAAI,MAAM,CAAC,QAAQ,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC1C,aAAa,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;QAC7B,CAAC;QAED,mBAAmB;QACnB,MAAM,UAAU,GAAG,MAAM,eAAe,CAAC;YACvC,OAAO;YACP,SAAS;YACT,aAAa;YACb,OAAO;YACP,OAAO;YACP,OAAO;YACP,GAAG,CAAC,aAAa,IAAI,EAAE,aAAa,EAAE,CAAC,EAAE,0BAA0B;YACnE,MAAM;YACN,MAAM;SACP,CAAC,CAAC;QAEH,gBAAgB;QAChB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;IAEnC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,SAAS,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;QACjF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,SAAS;IACtB,IAAI,CAAC;QACH,MAAM,KAAK,GAAG,YAAY,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,yBAAyB;QACjE,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;QACxC,OAAO,MAAqB,CAAC;IAC/B,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,IAAI,KAAK,CAAC,kCAAkC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IAC9G,CAAC;AACH,CAAC;AAED;;GAEG;AACH,SAAS,gBAAgB,CAAC,KAAkB;IAC1C,MAAM,OAAO,GAAG,KAAK,CAAC,SAAS,EAAE,WAAW,IAAI,EAAE,CAAC;IACnD,MAAM,SAAS,GAAG,KAAK,CAAC,KAAK,EAAE,YAAY,IAAI,SAAS,CAAC;IACzD,MAAM,aAAa,GAAG,KAAK,CAAC,cAAc,CAAC;IAE3C,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,CAAC;AAC/C,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,eAAe,CAAC,MAU9B;IACC,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,aAAa,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,CAAC;IAE/G,mBAAmB;IACnB,MAAM,WAAW,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,IAAI,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,IAAI,SAAS,CAAC;IAEvF,0BAA0B;IAC1B,IAAI,SAAS,GAAG,EAAE,CAAC;IACnB,IAAI,OAAO,EAAE,CAAC;QACZ,SAAS,GAAG,MAAM,CAAC,eAAe,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IACvD,CAAC;IAED,mCAAmC;IACnC,IAAI,UAAU,GAAG,EAAE,CAAC;IACpB,IAAI,OAAO,EAAE,CAAC;QACZ,MAAM,UAAU,GAAG,qBAAqB,CAAC,OAAO,CAAC,CAAC;QAClD,MAAM,YAAY,GAAG,IAAI,oBAAoB,CAAC,UAAU,CAAC,CAAC;QAC1D,UAAU,GAAG,IAAI,YAAY,CAAC,eAAe,CAAC,OAAO,CAAC,EAAE,CAAC;IAC3D,CAAC;IAEC,oCAAoC;IACpC,IAAI,YAAY,GAAG,EAAE,CAAC;IACtB,IAAI,aAAa,IAAI,CAAC,MAAM,CAAC,eAAe,EAAE,CAAC;QAC7C,MAAM,UAAU,GAAG,gCAAgC,CAAC,aAAa,CAAC,CAAC;QACnE,IAAI,UAAU,KAAK,IAAI,EAAE,CAAC;YACxB,YAAY,GAAG,IAAI,OAAO,CAAC,aAAa,GAAG,UAAU,GAAG,CAAC;QAC3D,CAAC;IACH,CAAC;IAEH,qBAAqB;IACrB,MAAM,WAAW,GAAG,GAAG,OAAO,CAAC,KAAK,GAAG,SAAS,GAAG,UAAU,GAAG,YAAY,EAAE,CAAC;IAE/E,qBAAqB;IACrB,IAAI,UAAU,GAAG,GAAG,WAAW,GAAG,SAAS,IAAI,WAAW,EAAE,CAAC;IAE7D,oCAAoC;IACpC,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;QACpB,IAAI,CAAC,aAAa,EAAE,CAAC;YACnB,OAAO,CAAC,KAAK,CAAC,mEAAmE,CAAC,CAAC;YACnF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QACD,UAAU,GAAG,oBAAoB,CAAC;YAChC,UAAU;YACV,WAAW;YACX,SAAS;YACT,WAAW;YACX,aAAa;YACb,MAAM;YACN,OAAO;SACR,CAAC,CAAC;IACL,CAAC;IACD,qDAAqD;IAErD,OAAO,UAAU,CAAC;AACpB,CAAC;AAED;;GAEG;AACH,SAAS,gCAAgC,CAAC,aAAyD;IACjG,IAAI,CAAC;QACH,MAAM,EAAE,aAAa,EAAE,mBAAmB,EAAE,GAAG,aAAa,CAAC;QAE7D,IAAI,CAAC,mBAAmB,IAAI,mBAAmB,KAAK,CAAC,EAAE,CAAC;YACtD,OAAO,IAAI,CAAC;QACd,CAAC;QAED,4EAA4E;QAC5E,+DAA+D;QAC/D,IAAI,CAAC,aAAa,EAAE,CAAC;YACnB,OAAO,CAAC,CAAC;QACX,CAAC;QAED,wEAAwE;QACxE,qEAAqE;QACrE,gCAAgC;QAChC,MAAM,SAAS,GAAG,aAAa,CAAC,YAAY;YAC3B,CAAC,aAAa,CAAC,2BAA2B,IAAI,CAAC,CAAC;YAChD,CAAC,aAAa,CAAC,uBAAuB,IAAI,CAAC,CAAC,CAAC;QAE9D,uBAAuB;QACvB,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,SAAS,GAAG,mBAAmB,CAAC,GAAG,GAAG,CAAC,CAAC;QAEvE,sCAAsC;QACtC,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC,CAAC;IAChD,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,CAAC,CAAC;IACX,CAAC;AACH,CAAC;AAED;;GAEG;AACH,SAAS,oBAAoB,CAAC,MAQ7B;IACC,MAAM,EAAE,UAAU,EAAE,WAAW,EAAE,SAAS,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,EAAE,GAAG,MAAM,CAAC;IAE1F,wDAAwD;IACxD,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,aAAa,GAAG,MAAM,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;IAChE,MAAM,UAAU,GAAG,GAAG,WAAW,GAAG,SAAS,EAAE,CAAC;IAEhD,8DAA8D;IAC9D,MAAM,sBAAsB,GAAG,qBAAqB,CAAC,UAAU,CAAC,CAAC;IACjE,IAAI,sBAAsB,IAAI,MAAM,EAAE,CAAC;QACrC,OAAO,UAAU,CAAC;IACpB,CAAC;IAED,gFAAgF;IAChF,MAAM,sBAAsB,GAAG,qBAAqB,CAAC,UAAU,CAAC,CAAC;IACjE,IAAI,sBAAsB,GAAG,CAAC,IAAI,MAAM,EAAE,CAAC;QACzC,yDAAyD;QACzD,oDAAoD;QACpD,IAAI,MAAM,CAAC,UAAU,EAAE,CAAC;YACtB,0CAA0C;YAC1C,MAAM,WAAW,GAAG,MAAM,GAAG,sBAAsB,GAAG,CAAC,CAAC;YACxD,MAAM,cAAc,GAAG,YAAY,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC;YAC9D,OAAO,GAAG,UAAU,IAAI,cAAc,EAAE,CAAC;QAC3C,CAAC;aAAM,CAAC;YACN,gCAAgC;YAChC,MAAM,WAAW,GAAG,MAAM,GAAG,sBAAsB,GAAG,CAAC,CAAC;YAExD,gEAAgE;YAChE,uDAAuD;YACvD,MAAM,gBAAgB,GAAG,QAAQ,CAAC;YAClC,MAAM,iBAAiB,GAAG,qBAAqB,CAAC,WAAW,CAAC,CAAC;YAC7D,IAAI,gBAAgB,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,iBAAiB,GAAG,WAAW,EAAE,CAAC;gBAC1E,iCAAiC;gBACjC,OAAO,GAAG,UAAU,KAAK,WAAW,EAAE,CAAC;YACzC,CAAC;YAED,MAAM,YAAY,GAAG,aAAa,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC;YAC7D,OAAO,GAAG,UAAU,IAAI,YAAY,EAAE,CAAC;QACzC,CAAC;IACH,CAAC;IAED,uCAAuC;IACvC,MAAM,SAAS,GAAG,aAAa,CAAC,WAAW,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IACxE,IAAI,SAAS,EAAE,CAAC;QACd,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,iBAAiB;IACjB,OAAO,YAAY,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;AAC1C,CAAC;AAED;;GAEG;AACH,SAAS,aAAa,CAAC,IAAY,EAAE,SAAiB;IACpD,6CAA6C;IAC7C,MAAM,YAAY,GAAG,qBAAqB,CAAC,IAAI,CAAC,CAAC;IACjD,IAAI,YAAY,IAAI,SAAS,EAAE,CAAC;QAC9B,OAAO,IAAI,CAAC;IACd,CAAC;IAED,2DAA2D;IAC3D,MAAM,gBAAgB,GAAG,QAAQ,CAAC,CAAC,gCAAgC;IACnE,IAAI,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QAChC,OAAO,0BAA0B,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;IACrD,CAAC;IAED,8CAA8C;IAC9C,IAAI,UAAU,GAAG,KAAK,CAAC;IAEvB,8EAA8E;IAC9E,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,2CAA2C;IAC3E,IAAI,mBAAmB,GAAG,CAAC,CAAC;IAC5B,IAAI,cAAc,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,sBAAsB;IACzD,IAAI,cAAc,GAAG,CAAC,CAAC,CAAC;IAExB,6CAA6C;IAC7C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACtC,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;QACtB,IAAI,CAAC,IAAI;YAAE,MAAM;QAEjB,0CAA0C;QAC1C,IAAI,IAAI,KAAK,GAAG,EAAE,CAAC;YACjB,cAAc,GAAG,CAAC,CAAC;QACrB,CAAC;QAED,6CAA6C;QAC7C,MAAM,SAAS,GAAG,qBAAqB,CAAC,IAAI,CAAC,CAAC;QAC9C,mBAAmB,IAAI,SAAS,CAAC;QAEjC,yCAAyC;QACzC,IAAI,mBAAmB,GAAG,SAAS,EAAE,CAAC;YACpC,gDAAgD;YAChD,IAAI,cAAc,IAAI,CAAC,EAAE,CAAC;gBACxB,cAAc,GAAG,cAAc,CAAC;YAClC,CAAC;iBAAM,CAAC;gBACN,iDAAiD;gBACjD,cAAc,GAAG,CAAC,CAAC;YACrB,CAAC;YACD,UAAU,GAAG,cAAc,IAAI,CAAC,CAAC;YACjC,MAAM;QACR,CAAC;IACH,CAAC;IAED,mCAAmC;IACnC,IAAI,cAAc,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;QACnC,OAAO,IAAI,CAAC;IACd,CAAC;IAED,uFAAuF;IACvF,6EAA6E;IAC7E,MAAM,SAAS,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IACnD,MAAM,cAAc,GAAG,SAAS,IAAI,SAAS,KAAK,GAAG,IAAI,MAAM,CAAC,UAAU,CAAC,SAAS,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC;IAClG,IAAI,CAAC,UAAU,IAAI,SAAS,GAAG,mBAAmB,GAAG,CAAC,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC;QAC3E,OAAO,IAAI,CAAC;IACd,CAAC;IAED,wEAAwE;IACxE,wDAAwD;IACxD,IAAI,cAAc,IAAI,cAAc,IAAI,CAAC,IAAI,SAAS,IAAI,CAAC,EAAE,CAAC;QAC5D,iFAAiF;QACjF,IAAI,SAAS,GAAG,CAAC,CAAC;QAClB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACtC,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;YACtB,IAAI,CAAC,IAAI;gBAAE,MAAM;YACjB,SAAS,IAAI,qBAAqB,CAAC,IAAI,CAAC,CAAC;YACzC,IAAI,SAAS,IAAI,CAAC,IAAI,SAAS,IAAI,SAAS,EAAE,CAAC;gBAC7C,cAAc,GAAG,CAAC,CAAC;gBACnB,UAAU,GAAG,IAAI,CAAC;gBAClB,MAAM;YACR,CAAC;QACH,CAAC;IACH,CAAC;IAED,4CAA4C;IAC5C,MAAM,UAAU,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,cAAc,CAAC,CAAC;IAClD,MAAM,WAAW,GAAG,KAAK,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;IAEhD,6DAA6D;IAC7D,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,IAAI,WAAW,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE,CAAC;QACrD,WAAW,CAAC,KAAK,EAAE,CAAC;IACtB,CAAC;IAED,oCAAoC;IACpC,MAAM,SAAS,GAAG,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACtC,MAAM,UAAU,GAAG,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAExC,kDAAkD;IAClD,IAAI,UAAU,EAAE,CAAC;QACf,OAAO,GAAG,SAAS,KAAK,UAAU,EAAE,CAAC;IACvC,CAAC;SAAM,CAAC;QACN,OAAO,SAAS,CAAC;IACnB,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,SAAS,0BAA0B,CAAC,IAAY,EAAE,SAAiB;IACjE,6CAA6C;IAC7C,MAAM,YAAY,GAAG,qBAAqB,CAAC,IAAI,CAAC,CAAC;IACjD,IAAI,YAAY,IAAI,SAAS,EAAE,CAAC;QAC9B,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAE/B,uDAAuD;IACvD,MAAM,cAAc,GAAa,EAAE,CAAC;IACpC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACtC,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE,CAAC;YACrB,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACzB,CAAC;IACH,CAAC;IAED,wEAAwE;IACxE,mEAAmE;IACnE,2FAA2F;IAE3F,IAAI,gBAAgB,GAAG,CAAC,CAAC,CAAC;IAC1B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACtC,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;QACtB,IAAI,IAAI,KAAK,GAAG,IAAI,IAAI,KAAK,GAAG,EAAE,CAAC;YACjC,gBAAgB,GAAG,CAAC,CAAC;YACrB,MAAM;QACR,CAAC;IACH,CAAC;IAED,yFAAyF;IACzF,qDAAqD;IACrD,IAAI,gBAAgB,GAAG,CAAC,EAAE,CAAC;QACzB,sCAAsC;QACtC,MAAM,kBAAkB,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,gBAAgB,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC;QAExF,IAAI,kBAAkB,GAAG,CAAC,EAAE,CAAC;YAC3B,qFAAqF;YACrF,MAAM,WAAW,GAAG,KAAK,CAAC,KAAK,CAAC,kBAAkB,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACjE,MAAM,gBAAgB,GAAG,qBAAqB,CAAC,WAAW,CAAC,CAAC;YAC5D,IAAI,gBAAgB,IAAI,SAAS,EAAE,CAAC;gBAClC,uDAAuD;gBACvD,MAAM,SAAS,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,kBAAkB,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;gBAC9D,OAAO,GAAG,SAAS,KAAK,WAAW,EAAE,CAAC;YACxC,CAAC;QACH,CAAC;IACH,CAAC;IAED,kFAAkF;IAClF,kFAAkF;IAClF,IAAI,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC9B,MAAM,oBAAoB,GAAG,cAAc,CAAC,CAAC,CAAC,CAAC;QAC/C,IAAI,oBAAoB,KAAK,SAAS,IAAI,oBAAoB,GAAG,CAAC,EAAE,CAAC;YACnE,qDAAqD;YACrD,MAAM,SAAS,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,oBAAoB,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YAChE,MAAM,cAAc,GAAG,qBAAqB,CAAC,SAAS,CAAC,CAAC;YACxD,IAAI,cAAc,IAAI,SAAS,EAAE,CAAC;gBAChC,MAAM,aAAa,GAAG,KAAK,CAAC,KAAK,CAAC,oBAAoB,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;gBACrE,IAAI,aAAa,EAAE,CAAC;oBAClB,OAAO,GAAG,SAAS,KAAK,aAAa,EAAE,CAAC;gBAC1C,CAAC;gBACD,OAAO,SAAS,CAAC;YACnB,CAAC;QACH,CAAC;IACH,CAAC;IAED,sEAAsE;IACtE,4DAA4D;IAC5D,IAAI,YAAY,GAAG,CAAC,CAAC;IACrB,IAAI,cAAc,GAAG,KAAK,CAAC,MAAM,CAAC;IAElC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACtC,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;QACtB,IAAI,CAAC,IAAI;YAAE,MAAM;QACjB,MAAM,SAAS,GAAG,qBAAqB,CAAC,IAAI,CAAC,CAAC;QAC9C,IAAI,YAAY,GAAG,SAAS,GAAG,SAAS,EAAE,CAAC;YACzC,cAAc,GAAG,CAAC,CAAC;YACnB,MAAM;QACR,CAAC;QACD,YAAY,IAAI,SAAS,CAAC;IAC5B,CAAC;IAED,kCAAkC;IAClC,IAAI,cAAc,GAAG,KAAK,CAAC,MAAM,IAAI,cAAc,GAAG,CAAC,EAAE,CAAC;QACxD,MAAM,SAAS,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,cAAc,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAC1D,MAAM,UAAU,GAAG,KAAK,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACxD,IAAI,UAAU,EAAE,CAAC;YACf,OAAO,GAAG,SAAS,KAAK,UAAU,EAAE,CAAC;QACvC,CAAC;QACD,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED,sDAAsD;AACtD,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,KAAK,UAAU,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;IACpD,IAAI,EAAE,CAAC;AACT,CAAC","sourcesContent":["#!/usr/bin/env node\n\n/**\n * Claude Statusline - TypeScript v2.0\n * Main entry point\n */\n\nimport { readFileSync } from 'fs';\nimport { loadConfig, Config } from './core/config.js';\nimport { validateInput, validateDirectory } from './core/security.js';\nimport { Cache } from './core/cache.js';\nimport { GitOperations } from './git/status.js';\nimport { detectSymbols, getEnvironmentSymbols, SymbolSet } from './ui/symbols.js';\nimport { getTerminalWidth, truncateText, smartTruncate, debugWidthDetection, getStringDisplayWidth } from './ui/width.js';\nimport { EnvironmentDetector, EnvironmentFormatter } from './env/context.js';\n\n/**\n * Claude Code input interface\n */\ninterface ClaudeInput {\n workspace: {\n current_dir: string;\n };\n model: {\n display_name: string;\n };\n context_window?: {\n total_input_tokens: number;\n total_output_tokens: number;\n context_window_size: number;\n current_usage: {\n input_tokens: number;\n output_tokens: number;\n cache_creation_input_tokens: number;\n cache_read_input_tokens: number;\n };\n };\n}\n\n/**\n * Main execution function\n */\nexport async function main(): Promise<void> {\n try {\n // Load configuration\n const config = loadConfig();\n\n // Initialize components\n const cache = new Cache(config);\n const gitOps = new GitOperations(config, cache);\n const envDetector = new EnvironmentDetector(config, cache);\n\n // Debug width detection if enabled\n await debugWidthDetection(config);\n\n // Read and validate input from stdin\n const input = await readInput();\n if (!validateInput(JSON.stringify(input), config)) {\n console.error('[ERROR] Invalid input received');\n process.exit(1);\n }\n\n // Extract information from input\n const { fullDir, modelName, contextWindow } = extractInputInfo(input);\n if (!fullDir || !modelName) {\n console.error('[ERROR] Failed to extract required information from input');\n process.exit(1);\n }\n\n // Validate directory\n const isValidDir = await validateDirectory(fullDir);\n if (!isValidDir) {\n console.error('[ERROR] Invalid or inaccessible directory:', fullDir);\n process.exit(1);\n }\n\n // Get components (run in parallel for better performance)\n const operations: Promise<any>[] = [\n gitOps.getGitInfo(fullDir),\n envDetector.getEnvironmentInfo(),\n detectSymbols(config),\n ];\n\n // Only get terminal width if smart truncation is enabled\n let terminalWidth: number | undefined;\n if (config.truncate) {\n operations.push(getTerminalWidth(config));\n }\n\n const results = await Promise.all(operations);\n const [gitInfo, envInfo, symbols] = results;\n\n // Extract terminal width from results if it was requested\n if (config.truncate && results.length > 3) {\n terminalWidth = results[3];\n }\n\n // Build statusline\n const statusline = await buildStatusline({\n fullDir,\n modelName,\n contextWindow,\n gitInfo,\n envInfo,\n symbols,\n ...(terminalWidth && { terminalWidth }), // Only include if defined\n config,\n gitOps,\n });\n\n // Output result\n process.stdout.write(statusline);\n\n } catch (error) {\n console.error('[ERROR]', error instanceof Error ? error.message : String(error));\n process.exit(1);\n }\n}\n\n/**\n * Read JSON input from stdin\n */\nasync function readInput(): Promise<ClaudeInput> {\n try {\n const input = readFileSync(0, 'utf-8'); // Read from stdin (fd 0)\n const parsed = JSON.parse(input.trim());\n return parsed as ClaudeInput;\n } catch (error) {\n throw new Error(`Failed to read or parse input: ${error instanceof Error ? error.message : String(error)}`);\n }\n}\n\n/**\n * Extract directory and model name from Claude input\n */\nfunction extractInputInfo(input: ClaudeInput): { fullDir: string; modelName: string; contextWindow?: ClaudeInput['context_window'] } {\n const fullDir = input.workspace?.current_dir || '';\n const modelName = input.model?.display_name || 'Unknown';\n const contextWindow = input.context_window;\n\n return { fullDir, modelName, contextWindow };\n}\n\n/**\n * Build the complete statusline string\n */\nasync function buildStatusline(params: {\n fullDir: string;\n modelName: string;\n contextWindow?: ClaudeInput['context_window'];\n gitInfo: any;\n envInfo: any;\n symbols: SymbolSet;\n terminalWidth?: number; // Optional - only needed for smart truncation\n config: Config;\n gitOps: GitOperations;\n}): Promise<string> {\n const { fullDir, modelName, contextWindow, gitInfo, envInfo, symbols, terminalWidth, config, gitOps } = params;\n\n // Get project name\n const projectName = fullDir.split('/').pop() || fullDir.split('\\\\').pop() || 'project';\n\n // Build git status string\n let gitStatus = '';\n if (gitInfo) {\n gitStatus = gitOps.formatGitStatus(gitInfo, symbols);\n }\n\n // Build environment context string\n let envContext = '';\n if (envInfo) {\n const envSymbols = getEnvironmentSymbols(symbols);\n const envFormatter = new EnvironmentFormatter(envSymbols);\n envContext = ` ${envFormatter.formatWithIcons(envInfo)}`;\n }\n\n // Build context window usage string\n let contextUsage = '';\n if (contextWindow && !config.noContextWindow) {\n const percentage = calculateContextWindowPercentage(contextWindow);\n if (percentage !== null) {\n contextUsage = ` ${symbols.contextWindow}${percentage}%`;\n }\n }\n\n // Build model string\n const modelString = `${symbols.model}${modelName}${envContext}${contextUsage}`;\n\n // Initial statusline\n let statusline = `${projectName}${gitStatus} ${modelString}`;\n\n // Apply smart truncation if enabled\n if (config.truncate) {\n if (!terminalWidth) {\n console.error('[ERROR] Smart truncation enabled but terminal width not available');\n process.exit(1);\n }\n statusline = applySmartTruncation({\n statusline,\n projectName,\n gitStatus,\n modelString,\n terminalWidth,\n config,\n symbols,\n });\n }\n // No basic truncation - let terminal handle overflow\n\n return statusline;\n}\n\n/**\n * Calculate context window usage percentage\n */\nfunction calculateContextWindowPercentage(contextWindow: NonNullable<ClaudeInput['context_window']>): number | null {\n try {\n const { current_usage, context_window_size } = contextWindow;\n\n if (!context_window_size || context_window_size === 0) {\n return null;\n }\n\n // If current_usage is null or undefined, we cannot calculate the percentage\n // This matches the official Claude Code documentation behavior\n if (!current_usage) {\n return 0;\n }\n\n // Calculate total tokens used (input + cache tokens from current_usage)\n // Note: Output tokens are NOT included in context window calculation\n // per Claude Code documentation\n const totalUsed = current_usage.input_tokens +\n (current_usage.cache_creation_input_tokens || 0) +\n (current_usage.cache_read_input_tokens || 0);\n\n // Calculate percentage\n const percentage = Math.round((totalUsed / context_window_size) * 100);\n\n // Cap at 100% and ensure non-negative\n return Math.max(0, Math.min(100, percentage));\n } catch {\n return 0;\n }\n}\n\n/**\n * Apply smart truncation with branch prioritization\n */\nfunction applySmartTruncation(params: {\n statusline: string;\n projectName: string;\n gitStatus: string;\n modelString: string;\n terminalWidth: number;\n config: Config;\n symbols: SymbolSet;\n}): string {\n const { statusline, projectName, gitStatus, modelString, terminalWidth, config } = params;\n\n // Use 15-char margin for Claude telemetry compatibility\n const maxLen = Math.max(terminalWidth - config.rightMargin, 30);\n const projectGit = `${projectName}${gitStatus}`;\n\n // Check if everything fits (using display width for accuracy)\n const statuslineDisplayWidth = getStringDisplayWidth(statusline);\n if (statuslineDisplayWidth <= maxLen) {\n return statusline;\n }\n\n // Check if project + space fits, truncate model part only (using display width)\n const projectGitDisplayWidth = getStringDisplayWidth(projectGit);\n if (projectGitDisplayWidth + 1 <= maxLen) {\n // Smart truncation with soft-wrapping (default behavior)\n // Allow disabling soft-wrapping with config setting\n if (config.noSoftWrap) {\n // Legacy behavior: simple truncation only\n const modelMaxLen = maxLen - projectGitDisplayWidth - 1;\n const truncatedModel = truncateText(modelString, modelMaxLen);\n return `${projectGit} ${truncatedModel}`;\n } else {\n // Default: soft-wrap model part\n const modelMaxLen = maxLen - projectGitDisplayWidth - 1;\n\n // If model string needs wrapping and it starts with model icon,\n // prefer wrapping the entire model string to next line\n const modelIconPattern = /^[󰚩*]/;\n const modelDisplayWidth = getStringDisplayWidth(modelString);\n if (modelIconPattern.test(modelString) && modelDisplayWidth > modelMaxLen) {\n // Wrap entire model to next line\n return `${projectGit}\\n${modelString}`;\n }\n\n const wrappedModel = applySoftWrap(modelString, modelMaxLen);\n return `${projectGit} ${wrappedModel}`;\n }\n }\n\n // Smart truncation of project+git part\n const truncated = smartTruncate(projectName, gitStatus, maxLen, config);\n if (truncated) {\n return truncated;\n }\n\n // Basic fallback\n return truncateText(statusline, maxLen);\n}\n\n/**\n * Apply soft wrapping to text\n */\nfunction applySoftWrap(text: string, maxLength: number): string {\n // Use display width for accurate measurement\n const displayWidth = getStringDisplayWidth(text);\n if (displayWidth <= maxLength) {\n return text;\n }\n\n // Check if this is a model string (starts with model icon)\n const modelIconPattern = /^[󰚩*]/; // Nerd Font or ASCII model icon\n if (modelIconPattern.test(text)) {\n return applySoftWrapToModelString(text, maxLength);\n }\n\n // Find a good break point using display width\n let foundBreak = false;\n\n // Work with actual Unicode characters to avoid splitting multi-byte sequences\n const chars = Array.from(text); // This splits by actual Unicode characters\n let currentDisplayWidth = 0;\n let breakCharIndex = chars.length; // Default to no break\n let lastSpaceIndex = -1;\n\n // Find the best break point by display width\n for (let i = 0; i < chars.length; i++) {\n const char = chars[i];\n if (!char) break;\n\n // Track spaces for potential break points\n if (char === ' ') {\n lastSpaceIndex = i;\n }\n\n // Calculate display width for this character\n const charWidth = getStringDisplayWidth(char);\n currentDisplayWidth += charWidth;\n\n // Check if we've exceeded the max length\n if (currentDisplayWidth > maxLength) {\n // If we found a space before this point, use it\n if (lastSpaceIndex >= 0) {\n breakCharIndex = lastSpaceIndex;\n } else {\n // No space found, break before current character\n breakCharIndex = i;\n }\n foundBreak = lastSpaceIndex >= 0;\n break;\n }\n }\n\n // If everything fits, return as is\n if (breakCharIndex >= chars.length) {\n return text;\n }\n\n // If no safe break found and we're very close to max_length, just fit without wrapping\n // But only if we're not dealing with a model string that starts with an icon\n const firstChar = chars.length > 0 ? chars[0] : '';\n const startsWithIcon = firstChar && firstChar !== ' ' && Buffer.byteLength(firstChar, 'utf8') > 1;\n if (!foundBreak && maxLength - currentDisplayWidth > -3 && !startsWithIcon) {\n return text;\n }\n\n // Special case: if we're starting with an icon and breaking very early,\n // try to keep at least the icon and 1-2 more characters\n if (startsWithIcon && breakCharIndex <= 2 && maxLength >= 3) {\n // Find a better break point after at least 3 characters total (by display width)\n let testWidth = 0;\n for (let i = 0; i < chars.length; i++) {\n const char = chars[i];\n if (!char) break;\n testWidth += getStringDisplayWidth(char);\n if (testWidth >= 3 || testWidth >= maxLength) {\n breakCharIndex = i;\n foundBreak = true;\n break;\n }\n }\n }\n\n // Build the strings using character indices\n const firstChars = chars.slice(0, breakCharIndex);\n const secondChars = chars.slice(breakCharIndex);\n\n // Remove leading space from second line if we broke at space\n if (secondChars.length > 0 && secondChars[0] === ' ') {\n secondChars.shift();\n }\n\n // Join characters back into strings\n const firstLine = firstChars.join('');\n const secondLine = secondChars.join('');\n\n // Only wrap if second line has meaningful content\n if (secondLine) {\n return `${firstLine}\\n${secondLine}`;\n } else {\n return firstLine;\n }\n}\n\n/**\n * Apply soft wrapping specifically to model strings, keeping the model icon\n * with the model name and context usage as a unit\n */\nfunction applySoftWrapToModelString(text: string, maxLength: number): string {\n // Use display width for accurate measurement\n const displayWidth = getStringDisplayWidth(text);\n if (displayWidth <= maxLength) {\n return text;\n }\n\n const chars = Array.from(text);\n\n // Find all space positions to understand the structure\n const spacePositions: number[] = [];\n for (let i = 0; i < chars.length; i++) {\n if (chars[i] === ' ') {\n spacePositions.push(i);\n }\n }\n\n // If we have context usage (marked by context window icon like ⚡︎ or #)\n // The structure is: [icon][model] [env] [context icon][percentage]\n // We want to prefer keeping: [icon][model] [context icon][percentage] together if possible\n\n let contextIconIndex = -1;\n for (let i = 0; i < chars.length; i++) {\n const char = chars[i];\n if (char === '⚡' || char === '#') {\n contextIconIndex = i;\n break;\n }\n }\n\n // Strategy 1: If we have context usage, try to keep it with the model on the second line\n // This ensures the icon and percentage stay together\n if (contextIconIndex > 0) {\n // Find the space before context usage\n const spaceBeforeContext = chars.findIndex((c, i) => i < contextIconIndex && c === ' ');\n\n if (spaceBeforeContext > 0) {\n // Check if we can fit model + icon + percentage on second line (using display width)\n const contextPart = chars.slice(spaceBeforeContext + 1).join('');\n const contextPartWidth = getStringDisplayWidth(contextPart);\n if (contextPartWidth <= maxLength) {\n // Put model name on first line, context on second line\n const modelPart = chars.slice(0, spaceBeforeContext).join('');\n return `${modelPart}\\n${contextPart}`;\n }\n }\n }\n\n // Strategy 2: Try to find a break point that keeps the model icon with model name\n // Look for first space after model name (if no context or if context doesn't fit)\n if (spacePositions.length > 0) {\n const firstSpaceAfterModel = spacePositions[0];\n if (firstSpaceAfterModel !== undefined && firstSpaceAfterModel > 1) {\n // Check if the model part fits (using display width)\n const modelPart = chars.slice(0, firstSpaceAfterModel).join('');\n const modelPartWidth = getStringDisplayWidth(modelPart);\n if (modelPartWidth <= maxLength) {\n const remainingPart = chars.slice(firstSpaceAfterModel + 1).join('');\n if (remainingPart) {\n return `${modelPart}\\n${remainingPart}`;\n }\n return modelPart;\n }\n }\n }\n\n // Strategy 3: Find break point by display width (not character count)\n // This is the critical fix for the garbled output artifacts\n let currentWidth = 0;\n let breakCharIndex = chars.length;\n\n for (let i = 0; i < chars.length; i++) {\n const char = chars[i];\n if (!char) break;\n const charWidth = getStringDisplayWidth(char);\n if (currentWidth + charWidth > maxLength) {\n breakCharIndex = i;\n break;\n }\n currentWidth += charWidth;\n }\n\n // If we found a valid break point\n if (breakCharIndex < chars.length && breakCharIndex > 0) {\n const firstPart = chars.slice(0, breakCharIndex).join('');\n const secondPart = chars.slice(breakCharIndex).join('');\n if (secondPart) {\n return `${firstPart}\\n${secondPart}`;\n }\n return firstPart;\n }\n\n return text;\n}\n\n// Run main function if this file is executed directly\nif (import.meta.url === `file://${process.argv[1]}`) {\n main();\n}"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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","sourcesContent":["#!/usr/bin/env node\n\n/**\n * Claude Statusline - TypeScript v2.0\n * Main entry point\n */\n\nimport { readFileSync } from 'fs';\nimport { loadConfig, Config } from './core/config.js';\nimport { validateInput, validateDirectory } from './core/security.js';\nimport { Cache } from './core/cache.js';\nimport { GitOperations } from './git/status.js';\nimport { detectSymbols, getEnvironmentSymbols, SymbolSet } from './ui/symbols.js';\nimport { getTerminalWidth, truncateText, smartTruncate, debugWidthDetection, getStringDisplayWidth } from './ui/width.js';\nimport { EnvironmentDetector, EnvironmentFormatter } from './env/context.js';\n\n/**\n * Claude Code input interface\n */\ninterface ClaudeInput {\n workspace: {\n current_dir: string;\n };\n model: {\n display_name: string;\n };\n context_window?: {\n total_input_tokens: number;\n total_output_tokens: number;\n context_window_size: number;\n // New in Claude Code v2.1.15: Pre-calculated percentages\n used_percentage?: number;\n remaining_percentage?: number;\n // Legacy: Current usage for manual calculation\n current_usage?: {\n input_tokens: number;\n output_tokens: number;\n cache_creation_input_tokens: number;\n cache_read_input_tokens: number;\n };\n };\n}\n\n/**\n * Main execution function\n */\nexport async function main(): Promise<void> {\n try {\n // Load configuration\n const config = loadConfig();\n\n // Initialize components\n const cache = new Cache(config);\n const gitOps = new GitOperations(config, cache);\n const envDetector = new EnvironmentDetector(config, cache);\n\n // Debug width detection if enabled\n await debugWidthDetection(config);\n\n // Read and validate input from stdin\n const input = await readInput();\n if (!validateInput(JSON.stringify(input), config)) {\n console.error('[ERROR] Invalid input received');\n process.exit(1);\n }\n\n // Extract information from input\n const { fullDir, modelName, contextWindow } = extractInputInfo(input);\n if (!fullDir || !modelName) {\n console.error('[ERROR] Failed to extract required information from input');\n process.exit(1);\n }\n\n // Validate directory\n const isValidDir = await validateDirectory(fullDir);\n if (!isValidDir) {\n console.error('[ERROR] Invalid or inaccessible directory:', fullDir);\n process.exit(1);\n }\n\n // Get components (run in parallel for better performance)\n const operations: Promise<any>[] = [\n gitOps.getGitInfo(fullDir),\n envDetector.getEnvironmentInfo(),\n detectSymbols(config),\n ];\n\n // Only get terminal width if smart truncation is enabled\n let terminalWidth: number | undefined;\n if (config.truncate) {\n operations.push(getTerminalWidth(config));\n }\n\n const results = await Promise.all(operations);\n const [gitInfo, envInfo, symbols] = results;\n\n // Extract terminal width from results if it was requested\n if (config.truncate && results.length > 3) {\n terminalWidth = results[3];\n }\n\n // Build statusline\n const statusline = await buildStatusline({\n fullDir,\n modelName,\n contextWindow,\n gitInfo,\n envInfo,\n symbols,\n ...(terminalWidth && { terminalWidth }), // Only include if defined\n config,\n gitOps,\n });\n\n // Output result\n process.stdout.write(statusline);\n\n } catch (error) {\n console.error('[ERROR]', error instanceof Error ? error.message : String(error));\n process.exit(1);\n }\n}\n\n/**\n * Read JSON input from stdin\n */\nasync function readInput(): Promise<ClaudeInput> {\n try {\n const input = readFileSync(0, 'utf-8'); // Read from stdin (fd 0)\n const parsed = JSON.parse(input.trim());\n return parsed as ClaudeInput;\n } catch (error) {\n throw new Error(`Failed to read or parse input: ${error instanceof Error ? error.message : String(error)}`);\n }\n}\n\n/**\n * Extract directory and model name from Claude input\n */\nfunction extractInputInfo(input: ClaudeInput): { fullDir: string; modelName: string; contextWindow?: ClaudeInput['context_window'] } {\n const fullDir = input.workspace?.current_dir || '';\n const modelName = input.model?.display_name || 'Unknown';\n const contextWindow = input.context_window;\n\n return { fullDir, modelName, contextWindow };\n}\n\n/**\n * Build the complete statusline string\n */\nasync function buildStatusline(params: {\n fullDir: string;\n modelName: string;\n contextWindow?: ClaudeInput['context_window'];\n gitInfo: any;\n envInfo: any;\n symbols: SymbolSet;\n terminalWidth?: number; // Optional - only needed for smart truncation\n config: Config;\n gitOps: GitOperations;\n}): Promise<string> {\n const { fullDir, modelName, contextWindow, gitInfo, envInfo, symbols, terminalWidth, config, gitOps } = params;\n\n // Get project name\n const projectName = fullDir.split('/').pop() || fullDir.split('\\\\').pop() || 'project';\n\n // Build git status string\n let gitStatus = '';\n if (gitInfo) {\n gitStatus = gitOps.formatGitStatus(gitInfo, symbols);\n }\n\n // Build environment context string\n let envContext = '';\n if (envInfo) {\n const envSymbols = getEnvironmentSymbols(symbols);\n const envFormatter = new EnvironmentFormatter(envSymbols);\n envContext = ` ${envFormatter.formatWithIcons(envInfo)}`;\n }\n\n // Build context window usage string\n let contextUsage = '';\n if (contextWindow && !config.noContextWindow) {\n const percentage = calculateContextWindowPercentage(contextWindow);\n if (percentage !== null) {\n contextUsage = ` ${symbols.contextWindow}${percentage}%`;\n }\n }\n\n // Build model string\n const modelString = `${symbols.model}${modelName}${envContext}${contextUsage}`;\n\n // Initial statusline\n let statusline = `${projectName}${gitStatus} ${modelString}`;\n\n // Apply smart truncation if enabled\n if (config.truncate) {\n if (!terminalWidth) {\n console.error('[ERROR] Smart truncation enabled but terminal width not available');\n process.exit(1);\n }\n statusline = applySmartTruncation({\n statusline,\n projectName,\n gitStatus,\n modelString,\n terminalWidth,\n config,\n symbols,\n });\n }\n // No basic truncation - let terminal handle overflow\n\n return statusline;\n}\n\n/**\n * Calculate context window usage percentage\n *\n * WORKAROUND for Claude Code v2.1.8+ bug where current_usage is all zeros\n * and used_percentage is incorrectly set to 0.\n *\n * See: https://github.com/anthropics/claude-code/issues/19724\n * See: https://github.com/anthropics/claude-code/issues/18944\n *\n * Strategy:\n * 1. Try used_percentage if it's non-zero (for working versions)\n * 2. Fall back to total_input_tokens (works in v2.1.8+)\n * 3. Fall back to current_usage (for v2.1.7 and earlier)\n */\nfunction calculateContextWindowPercentage(contextWindow: NonNullable<ClaudeInput['context_window']>): number | null {\n try {\n const { total_input_tokens, context_window_size, used_percentage, current_usage } = contextWindow;\n\n // Validate context_window_size\n if (!context_window_size || context_window_size === 0) {\n return null;\n }\n\n // Strategy 1: Try pre-calculated percentage if it's non-zero\n // This handles versions where the field is populated correctly\n if (used_percentage !== undefined && used_percentage !== null && used_percentage > 0) {\n return Math.max(0, Math.min(100, Math.round(used_percentage)));\n }\n\n // Strategy 2: Calculate from total_input_tokens\n // This is the workaround for v2.1.8+ where used_percentage is broken\n // but total_input_tokens contains the actual value\n if (total_input_tokens && total_input_tokens > 0) {\n const percentage = Math.round((total_input_tokens / context_window_size) * 100);\n return Math.max(0, Math.min(100, percentage));\n }\n\n // Strategy 3: Fall back to current_usage for v2.1.7 and earlier\n if (current_usage) {\n const totalUsed = current_usage.input_tokens +\n (current_usage.cache_creation_input_tokens || 0) +\n (current_usage.cache_read_input_tokens || 0);\n\n if (totalUsed > 0) {\n const percentage = Math.round((totalUsed / context_window_size) * 100);\n return Math.max(0, Math.min(100, percentage));\n }\n }\n\n // No valid token data found\n return 0;\n } catch {\n return 0;\n }\n}\n\n/**\n * Apply smart truncation with branch prioritization\n */\nfunction applySmartTruncation(params: {\n statusline: string;\n projectName: string;\n gitStatus: string;\n modelString: string;\n terminalWidth: number;\n config: Config;\n symbols: SymbolSet;\n}): string {\n const { statusline, projectName, gitStatus, modelString, terminalWidth, config } = params;\n\n // Use 15-char margin for Claude telemetry compatibility\n const maxLen = Math.max(terminalWidth - config.rightMargin, 30);\n const projectGit = `${projectName}${gitStatus}`;\n\n // Check if everything fits (using display width for accuracy)\n const statuslineDisplayWidth = getStringDisplayWidth(statusline);\n if (statuslineDisplayWidth <= maxLen) {\n return statusline;\n }\n\n // Check if project + space fits, truncate model part only (using display width)\n const projectGitDisplayWidth = getStringDisplayWidth(projectGit);\n if (projectGitDisplayWidth + 1 <= maxLen) {\n // Smart truncation with soft-wrapping (default behavior)\n // Allow disabling soft-wrapping with config setting\n if (config.noSoftWrap) {\n // Legacy behavior: simple truncation only\n const modelMaxLen = maxLen - projectGitDisplayWidth - 1;\n const truncatedModel = truncateText(modelString, modelMaxLen);\n return `${projectGit} ${truncatedModel}`;\n } else {\n // Default: soft-wrap model part\n const modelMaxLen = maxLen - projectGitDisplayWidth - 1;\n\n // If model string needs wrapping and it starts with model icon,\n // prefer wrapping the entire model string to next line\n const modelIconPattern = /^[󰚩*]/;\n const modelDisplayWidth = getStringDisplayWidth(modelString);\n if (modelIconPattern.test(modelString) && modelDisplayWidth > modelMaxLen) {\n // Wrap entire model to next line\n return `${projectGit}\\n${modelString}`;\n }\n\n const wrappedModel = applySoftWrap(modelString, modelMaxLen);\n return `${projectGit} ${wrappedModel}`;\n }\n }\n\n // Smart truncation of project+git part\n const truncated = smartTruncate(projectName, gitStatus, maxLen, config);\n if (truncated) {\n return truncated;\n }\n\n // Basic fallback\n return truncateText(statusline, maxLen);\n}\n\n/**\n * Apply soft wrapping to text\n */\nfunction applySoftWrap(text: string, maxLength: number): string {\n // Use display width for accurate measurement\n const displayWidth = getStringDisplayWidth(text);\n if (displayWidth <= maxLength) {\n return text;\n }\n\n // Check if this is a model string (starts with model icon)\n const modelIconPattern = /^[󰚩*]/; // Nerd Font or ASCII model icon\n if (modelIconPattern.test(text)) {\n return applySoftWrapToModelString(text, maxLength);\n }\n\n // Find a good break point using display width\n let foundBreak = false;\n\n // Work with actual Unicode characters to avoid splitting multi-byte sequences\n const chars = Array.from(text); // This splits by actual Unicode characters\n let currentDisplayWidth = 0;\n let breakCharIndex = chars.length; // Default to no break\n let lastSpaceIndex = -1;\n\n // Find the best break point by display width\n for (let i = 0; i < chars.length; i++) {\n const char = chars[i];\n if (!char) break;\n\n // Track spaces for potential break points\n if (char === ' ') {\n lastSpaceIndex = i;\n }\n\n // Calculate display width for this character\n const charWidth = getStringDisplayWidth(char);\n currentDisplayWidth += charWidth;\n\n // Check if we've exceeded the max length\n if (currentDisplayWidth > maxLength) {\n // If we found a space before this point, use it\n if (lastSpaceIndex >= 0) {\n breakCharIndex = lastSpaceIndex;\n } else {\n // No space found, break before current character\n breakCharIndex = i;\n }\n foundBreak = lastSpaceIndex >= 0;\n break;\n }\n }\n\n // If everything fits, return as is\n if (breakCharIndex >= chars.length) {\n return text;\n }\n\n // If no safe break found and we're very close to max_length, just fit without wrapping\n // But only if we're not dealing with a model string that starts with an icon\n const firstChar = chars.length > 0 ? chars[0] : '';\n const startsWithIcon = firstChar && firstChar !== ' ' && Buffer.byteLength(firstChar, 'utf8') > 1;\n if (!foundBreak && maxLength - currentDisplayWidth > -3 && !startsWithIcon) {\n return text;\n }\n\n // Special case: if we're starting with an icon and breaking very early,\n // try to keep at least the icon and 1-2 more characters\n if (startsWithIcon && breakCharIndex <= 2 && maxLength >= 3) {\n // Find a better break point after at least 3 characters total (by display width)\n let testWidth = 0;\n for (let i = 0; i < chars.length; i++) {\n const char = chars[i];\n if (!char) break;\n testWidth += getStringDisplayWidth(char);\n if (testWidth >= 3 || testWidth >= maxLength) {\n breakCharIndex = i;\n foundBreak = true;\n break;\n }\n }\n }\n\n // Build the strings using character indices\n const firstChars = chars.slice(0, breakCharIndex);\n const secondChars = chars.slice(breakCharIndex);\n\n // Remove leading space from second line if we broke at space\n if (secondChars.length > 0 && secondChars[0] === ' ') {\n secondChars.shift();\n }\n\n // Join characters back into strings\n const firstLine = firstChars.join('');\n const secondLine = secondChars.join('');\n\n // Only wrap if second line has meaningful content\n if (secondLine) {\n return `${firstLine}\\n${secondLine}`;\n } else {\n return firstLine;\n }\n}\n\n/**\n * Apply soft wrapping specifically to model strings, keeping the model icon\n * with the model name and context usage as a unit\n */\nfunction applySoftWrapToModelString(text: string, maxLength: number): string {\n // Use display width for accurate measurement\n const displayWidth = getStringDisplayWidth(text);\n if (displayWidth <= maxLength) {\n return text;\n }\n\n const chars = Array.from(text);\n\n // Find all space positions to understand the structure\n const spacePositions: number[] = [];\n for (let i = 0; i < chars.length; i++) {\n if (chars[i] === ' ') {\n spacePositions.push(i);\n }\n }\n\n // If we have context usage (marked by context window icon like ⚡︎ or #)\n // The structure is: [icon][model] [env] [context icon][percentage]\n // We want to prefer keeping: [icon][model] [context icon][percentage] together if possible\n\n let contextIconIndex = -1;\n for (let i = 0; i < chars.length; i++) {\n const char = chars[i];\n if (char === '⚡' || char === '#') {\n contextIconIndex = i;\n break;\n }\n }\n\n // Strategy 1: If we have context usage, try to keep it with the model on the second line\n // This ensures the icon and percentage stay together\n if (contextIconIndex > 0) {\n // Find the space before context usage\n const spaceBeforeContext = chars.findIndex((c, i) => i < contextIconIndex && c === ' ');\n\n if (spaceBeforeContext > 0) {\n // Check if we can fit model + icon + percentage on second line (using display width)\n const contextPart = chars.slice(spaceBeforeContext + 1).join('');\n const contextPartWidth = getStringDisplayWidth(contextPart);\n if (contextPartWidth <= maxLength) {\n // Put model name on first line, context on second line\n const modelPart = chars.slice(0, spaceBeforeContext).join('');\n return `${modelPart}\\n${contextPart}`;\n }\n }\n }\n\n // Strategy 2: Try to find a break point that keeps the model icon with model name\n // Look for first space after model name (if no context or if context doesn't fit)\n if (spacePositions.length > 0) {\n const firstSpaceAfterModel = spacePositions[0];\n if (firstSpaceAfterModel !== undefined && firstSpaceAfterModel > 1) {\n // Check if the model part fits (using display width)\n const modelPart = chars.slice(0, firstSpaceAfterModel).join('');\n const modelPartWidth = getStringDisplayWidth(modelPart);\n if (modelPartWidth <= maxLength) {\n const remainingPart = chars.slice(firstSpaceAfterModel + 1).join('');\n if (remainingPart) {\n return `${modelPart}\\n${remainingPart}`;\n }\n return modelPart;\n }\n }\n }\n\n // Strategy 3: Find break point by display width (not character count)\n // This is the critical fix for the garbled output artifacts\n let currentWidth = 0;\n let breakCharIndex = chars.length;\n\n for (let i = 0; i < chars.length; i++) {\n const char = chars[i];\n if (!char) break;\n const charWidth = getStringDisplayWidth(char);\n if (currentWidth + charWidth > maxLength) {\n breakCharIndex = i;\n break;\n }\n currentWidth += charWidth;\n }\n\n // If we found a valid break point\n if (breakCharIndex < chars.length && breakCharIndex > 0) {\n const firstPart = chars.slice(0, breakCharIndex).join('');\n const secondPart = chars.slice(breakCharIndex).join('');\n if (secondPart) {\n return `${firstPart}\\n${secondPart}`;\n }\n return firstPart;\n }\n\n return text;\n}\n\n// Run main function if this file is executed directly\nif (import.meta.url === `file://${process.argv[1]}`) {\n main();\n}"]}
@@ -0,0 +1,479 @@
1
+ {
2
+ "inputs": {
3
+ "src/core/config.ts": {
4
+ "bytes": 6754,
5
+ "imports": [
6
+ {
7
+ "path": "zod",
8
+ "kind": "import-statement",
9
+ "external": true
10
+ },
11
+ {
12
+ "path": "fs",
13
+ "kind": "import-statement",
14
+ "external": true
15
+ },
16
+ {
17
+ "path": "os",
18
+ "kind": "import-statement",
19
+ "external": true
20
+ },
21
+ {
22
+ "path": "path",
23
+ "kind": "import-statement",
24
+ "external": true
25
+ },
26
+ {
27
+ "path": "yaml",
28
+ "kind": "import-statement",
29
+ "external": true
30
+ }
31
+ ],
32
+ "format": "esm"
33
+ },
34
+ "src/core/security.ts": {
35
+ "bytes": 4599,
36
+ "imports": [
37
+ {
38
+ "path": "./config.js",
39
+ "kind": "import-statement",
40
+ "external": true
41
+ },
42
+ {
43
+ "path": "fs/promises",
44
+ "kind": "dynamic-import",
45
+ "external": true
46
+ },
47
+ {
48
+ "path": "fs",
49
+ "kind": "dynamic-import",
50
+ "external": true
51
+ }
52
+ ],
53
+ "format": "esm"
54
+ },
55
+ "src/core/cache.ts": {
56
+ "bytes": 7063,
57
+ "imports": [
58
+ {
59
+ "path": "fs/promises",
60
+ "kind": "import-statement",
61
+ "external": true
62
+ },
63
+ {
64
+ "path": "fs",
65
+ "kind": "import-statement",
66
+ "external": true
67
+ },
68
+ {
69
+ "path": "path",
70
+ "kind": "import-statement",
71
+ "external": true
72
+ },
73
+ {
74
+ "path": "./config.js",
75
+ "kind": "import-statement",
76
+ "external": true
77
+ },
78
+ {
79
+ "path": "fs/promises",
80
+ "kind": "dynamic-import",
81
+ "external": true
82
+ },
83
+ {
84
+ "path": "fs/promises",
85
+ "kind": "dynamic-import",
86
+ "external": true
87
+ },
88
+ {
89
+ "path": "fs/promises",
90
+ "kind": "dynamic-import",
91
+ "external": true
92
+ },
93
+ {
94
+ "path": "child_process",
95
+ "kind": "dynamic-import",
96
+ "external": true
97
+ },
98
+ {
99
+ "path": "util",
100
+ "kind": "dynamic-import",
101
+ "external": true
102
+ }
103
+ ],
104
+ "format": "esm"
105
+ },
106
+ "src/git/native.ts": {
107
+ "bytes": 3861,
108
+ "imports": [
109
+ {
110
+ "path": "child_process",
111
+ "kind": "import-statement",
112
+ "external": true
113
+ }
114
+ ],
115
+ "format": "esm"
116
+ },
117
+ "src/git/status.ts": {
118
+ "bytes": 8767,
119
+ "imports": [
120
+ {
121
+ "path": "../core/config.js",
122
+ "kind": "import-statement",
123
+ "external": true
124
+ },
125
+ {
126
+ "path": "src/core/cache.ts",
127
+ "kind": "import-statement",
128
+ "original": "../core/cache.js"
129
+ },
130
+ {
131
+ "path": "src/git/native.ts",
132
+ "kind": "import-statement",
133
+ "original": "./native.js"
134
+ }
135
+ ],
136
+ "format": "esm"
137
+ },
138
+ "src/ui/symbols.ts": {
139
+ "bytes": 10486,
140
+ "imports": [
141
+ {
142
+ "path": "../core/config.js",
143
+ "kind": "import-statement",
144
+ "external": true
145
+ },
146
+ {
147
+ "path": "child_process",
148
+ "kind": "dynamic-import",
149
+ "external": true
150
+ },
151
+ {
152
+ "path": "util",
153
+ "kind": "dynamic-import",
154
+ "external": true
155
+ },
156
+ {
157
+ "path": "fs/promises",
158
+ "kind": "dynamic-import",
159
+ "external": true
160
+ },
161
+ {
162
+ "path": "os",
163
+ "kind": "dynamic-import",
164
+ "external": true
165
+ },
166
+ {
167
+ "path": "child_process",
168
+ "kind": "dynamic-import",
169
+ "external": true
170
+ },
171
+ {
172
+ "path": "util",
173
+ "kind": "dynamic-import",
174
+ "external": true
175
+ }
176
+ ],
177
+ "format": "esm"
178
+ },
179
+ "src/ui/width.ts": {
180
+ "bytes": 11061,
181
+ "imports": [
182
+ {
183
+ "path": "../core/config.js",
184
+ "kind": "import-statement",
185
+ "external": true
186
+ },
187
+ {
188
+ "path": "child_process",
189
+ "kind": "dynamic-import",
190
+ "external": true
191
+ },
192
+ {
193
+ "path": "util",
194
+ "kind": "dynamic-import",
195
+ "external": true
196
+ },
197
+ {
198
+ "path": "child_process",
199
+ "kind": "dynamic-import",
200
+ "external": true
201
+ },
202
+ {
203
+ "path": "util",
204
+ "kind": "dynamic-import",
205
+ "external": true
206
+ }
207
+ ],
208
+ "format": "esm"
209
+ },
210
+ "src/env/context.ts": {
211
+ "bytes": 9791,
212
+ "imports": [
213
+ {
214
+ "path": "../core/config.js",
215
+ "kind": "import-statement",
216
+ "external": true
217
+ },
218
+ {
219
+ "path": "src/core/cache.ts",
220
+ "kind": "import-statement",
221
+ "original": "../core/cache.js"
222
+ },
223
+ {
224
+ "path": "../ui/symbols.js",
225
+ "kind": "import-statement",
226
+ "external": true
227
+ },
228
+ {
229
+ "path": "child_process",
230
+ "kind": "dynamic-import",
231
+ "external": true
232
+ },
233
+ {
234
+ "path": "util",
235
+ "kind": "dynamic-import",
236
+ "external": true
237
+ }
238
+ ],
239
+ "format": "esm"
240
+ },
241
+ "src/index.ts": {
242
+ "bytes": 17466,
243
+ "imports": [
244
+ {
245
+ "path": "fs",
246
+ "kind": "import-statement",
247
+ "external": true
248
+ },
249
+ {
250
+ "path": "src/core/config.ts",
251
+ "kind": "import-statement",
252
+ "original": "./core/config.js"
253
+ },
254
+ {
255
+ "path": "src/core/security.ts",
256
+ "kind": "import-statement",
257
+ "original": "./core/security.js"
258
+ },
259
+ {
260
+ "path": "src/core/cache.ts",
261
+ "kind": "import-statement",
262
+ "original": "./core/cache.js"
263
+ },
264
+ {
265
+ "path": "src/git/status.ts",
266
+ "kind": "import-statement",
267
+ "original": "./git/status.js"
268
+ },
269
+ {
270
+ "path": "src/ui/symbols.ts",
271
+ "kind": "import-statement",
272
+ "original": "./ui/symbols.js"
273
+ },
274
+ {
275
+ "path": "src/ui/width.ts",
276
+ "kind": "import-statement",
277
+ "original": "./ui/width.js"
278
+ },
279
+ {
280
+ "path": "src/env/context.ts",
281
+ "kind": "import-statement",
282
+ "original": "./env/context.js"
283
+ }
284
+ ],
285
+ "format": "esm"
286
+ }
287
+ },
288
+ "outputs": {
289
+ "dist/index.bundle.js.map": {
290
+ "imports": [],
291
+ "exports": [],
292
+ "inputs": {},
293
+ "bytes": 119546
294
+ },
295
+ "dist/index.bundle.js": {
296
+ "imports": [
297
+ {
298
+ "path": "fs",
299
+ "kind": "import-statement",
300
+ "external": true
301
+ },
302
+ {
303
+ "path": "zod",
304
+ "kind": "import-statement",
305
+ "external": true
306
+ },
307
+ {
308
+ "path": "fs",
309
+ "kind": "import-statement",
310
+ "external": true
311
+ },
312
+ {
313
+ "path": "os",
314
+ "kind": "import-statement",
315
+ "external": true
316
+ },
317
+ {
318
+ "path": "path",
319
+ "kind": "import-statement",
320
+ "external": true
321
+ },
322
+ {
323
+ "path": "yaml",
324
+ "kind": "import-statement",
325
+ "external": true
326
+ },
327
+ {
328
+ "path": "fs/promises",
329
+ "kind": "dynamic-import",
330
+ "external": true
331
+ },
332
+ {
333
+ "path": "fs",
334
+ "kind": "dynamic-import",
335
+ "external": true
336
+ },
337
+ {
338
+ "path": "fs/promises",
339
+ "kind": "import-statement",
340
+ "external": true
341
+ },
342
+ {
343
+ "path": "fs",
344
+ "kind": "import-statement",
345
+ "external": true
346
+ },
347
+ {
348
+ "path": "path",
349
+ "kind": "import-statement",
350
+ "external": true
351
+ },
352
+ {
353
+ "path": "fs/promises",
354
+ "kind": "dynamic-import",
355
+ "external": true
356
+ },
357
+ {
358
+ "path": "fs/promises",
359
+ "kind": "dynamic-import",
360
+ "external": true
361
+ },
362
+ {
363
+ "path": "fs/promises",
364
+ "kind": "dynamic-import",
365
+ "external": true
366
+ },
367
+ {
368
+ "path": "child_process",
369
+ "kind": "dynamic-import",
370
+ "external": true
371
+ },
372
+ {
373
+ "path": "util",
374
+ "kind": "dynamic-import",
375
+ "external": true
376
+ },
377
+ {
378
+ "path": "child_process",
379
+ "kind": "import-statement",
380
+ "external": true
381
+ },
382
+ {
383
+ "path": "child_process",
384
+ "kind": "dynamic-import",
385
+ "external": true
386
+ },
387
+ {
388
+ "path": "util",
389
+ "kind": "dynamic-import",
390
+ "external": true
391
+ },
392
+ {
393
+ "path": "fs/promises",
394
+ "kind": "dynamic-import",
395
+ "external": true
396
+ },
397
+ {
398
+ "path": "os",
399
+ "kind": "dynamic-import",
400
+ "external": true
401
+ },
402
+ {
403
+ "path": "child_process",
404
+ "kind": "dynamic-import",
405
+ "external": true
406
+ },
407
+ {
408
+ "path": "util",
409
+ "kind": "dynamic-import",
410
+ "external": true
411
+ },
412
+ {
413
+ "path": "child_process",
414
+ "kind": "dynamic-import",
415
+ "external": true
416
+ },
417
+ {
418
+ "path": "util",
419
+ "kind": "dynamic-import",
420
+ "external": true
421
+ },
422
+ {
423
+ "path": "child_process",
424
+ "kind": "dynamic-import",
425
+ "external": true
426
+ },
427
+ {
428
+ "path": "util",
429
+ "kind": "dynamic-import",
430
+ "external": true
431
+ },
432
+ {
433
+ "path": "child_process",
434
+ "kind": "dynamic-import",
435
+ "external": true
436
+ },
437
+ {
438
+ "path": "util",
439
+ "kind": "dynamic-import",
440
+ "external": true
441
+ }
442
+ ],
443
+ "exports": [
444
+ "main"
445
+ ],
446
+ "entryPoint": "src/index.ts",
447
+ "inputs": {
448
+ "src/index.ts": {
449
+ "bytesInOutput": 10181
450
+ },
451
+ "src/core/config.ts": {
452
+ "bytesInOutput": 4415
453
+ },
454
+ "src/core/security.ts": {
455
+ "bytesInOutput": 2344
456
+ },
457
+ "src/core/cache.ts": {
458
+ "bytesInOutput": 5638
459
+ },
460
+ "src/git/native.ts": {
461
+ "bytesInOutput": 2808
462
+ },
463
+ "src/git/status.ts": {
464
+ "bytesInOutput": 6430
465
+ },
466
+ "src/ui/symbols.ts": {
467
+ "bytesInOutput": 7286
468
+ },
469
+ "src/ui/width.ts": {
470
+ "bytesInOutput": 6321
471
+ },
472
+ "src/env/context.ts": {
473
+ "bytesInOutput": 7285
474
+ }
475
+ },
476
+ "bytes": 53001
477
+ }
478
+ }
479
+ }
@@ -239,7 +239,7 @@
239
239
  "format": "esm"
240
240
  },
241
241
  "src/index.ts": {
242
- "bytes": 16333,
242
+ "bytes": 17466,
243
243
  "imports": [
244
244
  {
245
245
  "path": "fs",
@@ -440,7 +440,7 @@
440
440
  "entryPoint": "src/index.ts",
441
441
  "inputs": {
442
442
  "src/index.ts": {
443
- "bytesInOutput": 3444
443
+ "bytesInOutput": 3631
444
444
  },
445
445
  "src/core/config.ts": {
446
446
  "bytesInOutput": 2741
@@ -467,7 +467,7 @@
467
467
  "bytesInOutput": 3027
468
468
  }
469
469
  },
470
- "bytes": 21903
470
+ "bytes": 22090
471
471
  }
472
472
  }
473
473
  }