@sooneocean/claude-hud 0.6.0 → 0.8.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/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAC1D,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAC3C,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AACxC,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC1C,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEzC,OAAO,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAE/D,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,kBAAkB,EAAE,SAAS,EAAE,UAAU,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAClG,OAAO,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AACxE,OAAO,EAAE,cAAc,EAAE,UAAU,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,YAAY,EAAE,mBAAmB,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAC9I,OAAO,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AACxE,OAAO,EAAE,kBAAkB,EAAE,eAAe,EAAE,YAAY,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAC5H,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,kBAAkB,EAAE,cAAc,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAChG,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACrE,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAC5D,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAChD,OAAO,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AAgBrE,SAAS,KAAK;IACZ,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IACzB,OAAO,GAAG,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC;AAClC,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,IAAI,CAAC,YAA+B,EAAE;IAC1D,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,QAAQ,CAAC,YAAY,CAAC,IAAI,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,GAAG,CAAC;IACrF,MAAM,MAAM,GAAG,KAAK,EAAE,CAAC;IACvB,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAE7B,MAAM,IAAI,GAAa;QACrB,SAAS;QACT,eAAe;QACf,YAAY;QACZ,YAAY;QACZ,QAAQ;QACR,UAAU,EAAE,CAAC,GAAY,EAAE,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC;QAC7C,gBAAgB;QAChB,WAAW;QACX,MAAM;QACN,GAAG,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE;QACrB,GAAG,EAAE,OAAO,CAAC,GAAG;QAChB,GAAG,SAAS;KACb,CAAC;IAEF,IAAI,CAAC;QACH,MAAM,EAAE,GAAG,KAAK,EAAE,CAAC;QACnB,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,SAAS,EAAE,CAAC;QACrC,IAAI,KAAK;YAAE,OAAO,CAAC,KAAK,CAAC,kCAAkC,EAAE,EAAE,IAAI,CAAC,CAAC;QAErE,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,iEAAiE;YACjE,MAAM,OAAO,GAAG,OAAO,CAAC,QAAQ,KAAK,QAAQ,CAAC;YAC9C,IAAI,CAAC,GAAG,CAAC,8BAA8B,CAAC,CAAC;YACzC,IAAI,OAAO,EAAE,CAAC;gBACZ,IAAI,CAAC,GAAG,CAAC,yFAAyF,CAAC,CAAC;YACtG,CAAC;YACD,OAAO;QACT,CAAC;QAED,eAAe,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAC3B,MAAM,cAAc,GAAG,KAAK,CAAC,eAAe,IAAI,EAAE,CAAC;QACnD,MAAM,EAAE,GAAG,KAAK,EAAE,CAAC;QACnB,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,cAAc,CAAC,CAAC;QAC9D,IAAI,KAAK;YAAE,OAAO,CAAC,KAAK,CAAC,wCAAwC,EAAE,EAAE,IAAI,CAAC,CAAC;QAE3E,MAAM,EAAE,aAAa,EAAE,UAAU,EAAE,QAAQ,EAAE,UAAU,EAAE,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAE/F,MAAM,QAAQ,GAAG,kBAAkB,EAAE,CAAC;QAEtC,MAAM,WAAW,GAAG,aAAa,CAAC,QAAQ,CAAC,CAAC;QAC5C,IAAI,KAAK,IAAI,WAAW;YAAE,OAAO,CAAC,KAAK,CAAC,2CAA2C,CAAC,CAAC;QAErF,MAAM,EAAE,GAAG,KAAK,EAAE,CAAC;QACnB,IAAI,MAAM,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAC9C,IAAI,KAAK;YAAE,OAAO,CAAC,KAAK,CAAC,mCAAmC,EAAE,EAAE,IAAI,CAAC,CAAC;QACtE,MAAM,GAAG,cAAc,CAAC,MAAM,EAAE,gBAAgB,EAAE,EAAE,QAAQ,CAAC,CAAC;QAC9D,MAAM,EAAE,GAAG,KAAK,EAAE,CAAC;QACnB,MAAM,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC,OAAO;YACxC,CAAC,CAAC,MAAM,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,GAAG,CAAC;YACpC,CAAC,CAAC,IAAI,CAAC;QACT,IAAI,KAAK;YAAE,OAAO,CAAC,KAAK,CAAC,kCAAkC,EAAE,EAAE,IAAI,CAAC,CAAC;QAErE,uEAAuE;QACvE,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAC9B,MAAM,EAAE,GAAG,KAAK,EAAE,CAAC;QACnB,MAAM,SAAS,GAAG,MAAM,CAAC,OAAO,CAAC,SAAS,KAAK,KAAK;YAClD,CAAC,CAAC,MAAM,IAAI,CAAC,QAAQ,CAAC;gBAClB,IAAI,EAAE;oBACJ,UAAU,EAAE,MAAM,CAAC,KAAK,CAAC,eAAe,GAAG,IAAI;oBAC/C,iBAAiB,EAAE,MAAM,CAAC,KAAK,CAAC,sBAAsB,GAAG,IAAI;iBAC9D;aACF,CAAC;YACJ,CAAC,CAAC,IAAI,CAAC;QACT,IAAI,KAAK;YAAE,OAAO,CAAC,KAAK,CAAC,iCAAiC,EAAE,EAAE,IAAI,CAAC,CAAC;QACpE,IAAI,MAAM,CAAC,OAAO,CAAC,SAAS,KAAK,KAAK,IAAI,SAAS,KAAK,IAAI,EAAE,CAAC;YAC7D,YAAY,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,UAAU,EAAE,QAAQ,CAAC,CAAC;QAClD,CAAC;QACD,MAAM,UAAU,GAAG,WAAW,CAAC,QAAQ,CAAC,CAAC;QAEzC,MAAM,QAAQ,GAAG,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACzC,MAAM,UAAU,GAAG,QAAQ,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QAEtE,MAAM,eAAe,GAAG,qBAAqB,CAAC,UAAU,CAAC,YAAY,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;QAEjF,0CAA0C;QAC1C,IAAI,eAAe,GAAqC,EAAE,CAAC;QAC3D,IAAI,MAAM,CAAC,OAAO,CAAC,cAAc,IAAI,CAAC,WAAW,EAAE,CAAC;YAClD,MAAM,SAAS,GAAG,aAAa,CAAC,MAAM,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;YAC7D,eAAe,GAAG,MAAM,iBAAiB,CAAC,SAAS,CAAC,CAAC;QACvD,CAAC;QAED,6EAA6E;QAC7E,MAAM,WAAW,GAAG,KAAK,CAAC,cAAc,EAAE,aAAa,EAAE,YAAY,CAAC;QACtE,IAAI,WAAW,IAAI,CAAC,WAAW,EAAE,CAAC;YAChC,oBAAoB,CAAC,WAAW,EAAE,UAAU,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;QAChE,CAAC;QAED,oEAAoE;QACpE,MAAM,UAAU,GAAG,SAAS,CAAS,mBAAmB,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;QAC9E,IAAI,UAAU,KAAK,IAAI,IAAI,WAAW,IAAI,IAAI,IAAI,WAAW,GAAG,UAAU,EAAE,CAAC;YAC3E,MAAM,KAAK,GAAG,WAAW,GAAG,UAAU,CAAC;YACvC,IAAI,KAAK,GAAG,GAAG,EAAE,CAAC,CAAC,qCAAqC;gBACtD,iBAAiB,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;YACrC,CAAC;QACH,CAAC;QACD,IAAI,WAAW,IAAI,IAAI;YAAE,UAAU,CAAC,mBAAmB,EAAE,WAAW,EAAE,QAAQ,CAAC,CAAC;QAEhF,YAAY;QACZ,IAAI,QAAQ,GAA8B,IAAI,CAAC;QAC/C,MAAM,WAAW,GAAG,KAAK,CAAC,cAAc,EAAE,mBAAmB,CAAC;QAC9D,IAAI,MAAM,CAAC,OAAO,CAAC,YAAY,IAAI,WAAW,IAAI,IAAI,IAAI,WAAW,IAAI,IAAI,EAAE,CAAC;YAC9E,mBAAmB,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;YAC3C,QAAQ,GAAG,iBAAiB,CAAC,WAAW,EAAE,WAAW,EAAE,QAAQ,CAAC,CAAC;QACnE,CAAC;QAED,kBAAkB;QAClB,MAAM,cAAc,GAAG,iBAAiB,CAAC,KAAK,CAAC,CAAC;QAEhD,4BAA4B;QAC5B,IAAI,UAAU,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACjC,gBAAgB,CAAC,UAAU,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;QAChD,CAAC;QAED,gBAAgB;QAChB,kBAAkB,CAAC,QAAQ,EAAE;YAC3B,cAAc;YACd,SAAS,EAAE,UAAU,CAAC,KAAK,CAAC,MAAM;YAClC,UAAU,EAAE,UAAU,CAAC,MAAM,CAAC,MAAM;SACrC,CAAC,CAAC;QACH,MAAM,YAAY,GAAG,eAAe,CAAC,QAAQ,CAAC,CAAC;QAC/C,MAAM,SAAS,GAAG,YAAY,CAAC,QAAQ,CAAC,CAAC;QAEzC,SAAS;QACT,IAAI,MAAM,GAA4B,EAAE,CAAC;QACzC,IAAI,MAAM,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC;YAC9B,MAAM,GAAG,cAAc,CAAC;gBACtB,cAAc;gBACd,cAAc,EAAE,SAAS,EAAE,QAAQ,IAAI,CAAC;gBACxC,cAAc,EAAE,SAAS,EAAE,QAAQ,IAAI,CAAC;gBACxC,uBAAuB,EAAE,QAAQ,EAAE,uBAAuB,IAAI,IAAI;gBAClE,cAAc,EAAE,SAAS,EAAE,eAAe;oBACxC,CAAC,CAAC,eAAe,CAAC,SAAS,CAAC,eAAe,CAAC;oBAC5C,CAAC,CAAC,IAAI;gBACR,WAAW,EAAE,MAAM,CAAC,MAAM;gBAC1B,QAAQ;aACT,CAAC,CAAC;YAEH,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACtB,kBAAkB,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;YACvC,CAAC;YAED,IAAI,UAAU,CAAC,MAAM,EAAE,QAAQ,CAAC,EAAE,CAAC;gBACjC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;gBAC7B,IAAI,MAAM,CAAC,OAAO,CAAC,iBAAiB,EAAE,CAAC;oBACrC,MAAM,aAAa,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC;oBACpE,IAAI,aAAa,EAAE,CAAC;wBAClB,gBAAgB,CAAC,YAAY,EAAE,aAAa,CAAC,OAAO,CAAC,CAAC;oBACxD,CAAC;gBACH,CAAC;YACH,CAAC;YAED,IAAI,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;gBACvB,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC;oBACpE,YAAY,CAAC,MAAM,CAAC,MAAM,CAAC,IAAc,EAAE,KAAK,CAAC,CAAC;gBACpD,CAAC;YACH,CAAC;YAED,IAAI,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;gBAC1B,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC;oBACpE,WAAW,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;gBAC5C,CAAC;YACH,CAAC;QACH,CAAC;QAED,wBAAwB;QACxB,MAAM,WAAW,GAAG,UAAU,CAAC,YAAY;YACzC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,UAAU,CAAC,YAAY,CAAC,OAAO,EAAE,CAAC,GAAG,KAAK,CAAC;YACtE,CAAC,CAAC,CAAC,CAAC;QACN,MAAM,YAAY,GAAG,mBAAmB,CACtC,SAAS,EAAE,QAAQ,IAAI,CAAC,EACxB,SAAS,EAAE,eAAe,IAAI,IAAI,EAClC,WAAW,CACZ,CAAC;QAEF,MAAM,YAAY,GAAG,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,YAAY,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QAEpF,MAAM,UAAU,GAAG,aAAa,CAAC,QAAQ,CAAC,CAAC;QAC3C,MAAM,aAAa,GAAG,iBAAiB,CAAC,QAAQ,CAAC,CAAC;QAElD,sDAAsD;QACtD,MAAM,aAAa,GAAG,SAAS,CAAS,mBAAmB,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC;QAC9E,MAAM,WAAW,GAAG,GAAG,YAAY,CAAC,cAAc,IAAI,YAAY,CAAC,gBAAgB,IAAI,YAAY,CAAC,kBAAkB,EAAE,CAAC;QACzH,IAAI,aAAa,KAAK,WAAW,EAAE,CAAC;YAClC,UAAU,CAAC,mBAAmB,EAAE,WAAW,EAAE,QAAQ,CAAC,CAAC;YACvD,kBAAkB,CAAC;gBACjB,SAAS,EAAE,UAAU,CAAC,YAAY,EAAE,WAAW,EAAE,IAAI,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;gBAC7E,QAAQ,EAAE,eAAe;gBACzB,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,YAAY,IAAI,SAAS;gBAC7C,kBAAkB,EAAE,YAAY,CAAC,kBAAkB;gBACnD,gBAAgB,EAAE,YAAY,CAAC,gBAAgB;gBAC/C,cAAc,EAAE,YAAY,CAAC,cAAc;gBAC3C,cAAc,EAAE,YAAY,CAAC,cAAc;aAC5C,CAAC,CAAC;QACL,CAAC;QAED,oDAAoD;QACpD,MAAM,gBAAgB,GAAG,SAAS,CAAU,oBAAoB,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,EAAE,QAAQ,CAAC,CAAC;QACjG,IAAI,CAAC,gBAAgB,IAAI,UAAU,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACvD,MAAM,WAAW,GAAG,cAAc,EAAE,CAAC;YACrC,IAAI,WAAW,EAAE,CAAC;gBAChB,OAAO,CAAC,KAAK,CAAC,gBAAgB,oBAAoB,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;gBACnE,UAAU,CAAC,oBAAoB,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC;YACnD,CAAC;QACH,CAAC;QAED,2CAA2C;QAC3C,MAAM,eAAe,GAAG;YACtB,KAAK;YACL,UAAU;YACV,QAAQ;YACR,YAAY;YACZ,aAAa;YACb,UAAU;YACV,QAAQ;YACR,UAAU;YACV,eAAe;YACf,SAAS;YACT,SAAS;YACT,MAAM;YACN,UAAU;YACV,eAAe;YACf,MAAM;YACN,SAAS;YACT,aAAa,EAAE,gBAAgB,EAAE;YACjC,YAAY;YACZ,UAAU;YACV,YAAY,EAAE,eAAe,EAAE;YAC/B,UAAU;YACV,MAAM,EAAE,MAAM,CAAC,MAAM,IAAI,YAAY,EAAE;YACvC,aAAa;YACb,YAAY;SACb,CAAC;QACF,MAAM,WAAW,GAAG,MAAM,CAAC,OAAO,CAAC,UAAU;YAC3C,CAAC,CAAC,cAAc,CAAC,eAAgC,CAAC;YAClD,CAAC,CAAC,EAAE,CAAC;QAEP,MAAM,GAAG,GAAkB;YACzB,GAAG,eAAe;YAClB,WAAW;SACZ,CAAC;QAEF,MAAM,EAAE,GAAG,KAAK,EAAE,CAAC;QACnB,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACjB,IAAI,KAAK;YAAE,OAAO,CAAC,KAAK,CAAC,+BAA+B,EAAE,EAAE,IAAI,CAAC,CAAC;QAClE,IAAI,KAAK;YAAE,OAAO,CAAC,KAAK,CAAC,8BAA8B,MAAM,EAAE,IAAI,CAAC,CAAC;QAErE,mBAAmB,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,EAAE,QAAQ,CAAC,CAAC;IACxD,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,CAAC,GAAG,CAAC,qBAAqB,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC;IAC5F,CAAC;AACH,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,YAAmB,EAAE,MAAoB,GAAG,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE;IAC7F,IAAI,CAAC,YAAY,EAAE,CAAC;QAClB,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,MAAM,EAAE,GAAG,GAAG,EAAE,GAAG,YAAY,CAAC,OAAO,EAAE,CAAC;IAC1C,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,GAAG,KAAK,CAAC,CAAC;IAEpC,IAAI,IAAI,GAAG,CAAC;QAAE,OAAO,KAAK,CAAC;IAC3B,IAAI,IAAI,GAAG,EAAE;QAAE,OAAO,GAAG,IAAI,GAAG,CAAC;IAEjC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,EAAE,CAAC,CAAC;IACpC,MAAM,aAAa,GAAG,IAAI,GAAG,EAAE,CAAC;IAChC,OAAO,GAAG,KAAK,KAAK,aAAa,GAAG,CAAC;AACvC,CAAC;AAED,MAAM,UAAU,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAClD,MAAM,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACjC,MAAM,UAAU,GAAG,CAAC,CAAS,EAAE,CAAS,EAAW,EAAE;IACnD,IAAI,CAAC;QACH,OAAO,YAAY,CAAC,CAAC,CAAC,KAAK,YAAY,CAAC,CAAC,CAAC,CAAC;IAC7C,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,CAAC,KAAK,CAAC,CAAC;IACjB,CAAC;AACH,CAAC,CAAC;AACF,IAAI,QAAQ,IAAI,UAAU,CAAC,QAAQ,EAAE,UAAU,CAAC,EAAE,CAAC;IACjD,KAAK,IAAI,EAAE,CAAC;AACd,CAAC"}
@@ -0,0 +1,3 @@
1
+ export declare function shouldDegrade(cacheDir: string): boolean;
2
+ export declare function recordExecutionTime(ms: number, cacheDir: string): void;
3
+ //# sourceMappingURL=perf-guard.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"perf-guard.d.ts","sourceRoot":"","sources":["../src/perf-guard.ts"],"names":[],"mappings":"AAYA,wBAAgB,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAGvD;AAED,wBAAgB,mBAAmB,CAAC,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI,CAyBtE"}
@@ -0,0 +1,33 @@
1
+ import { readCache, writeCache } from './cache.js';
2
+ const DEBUG = process.env.DEBUG?.includes('claude-hud') || process.env.DEBUG === '*';
3
+ const PERF_KEY = 'perf-history';
4
+ const TTL = 24 * 60 * 60 * 1000;
5
+ const BUDGET_MS = 250; // Leave 50ms margin from 300ms
6
+ export function shouldDegrade(cacheDir) {
7
+ const history = readCache(PERF_KEY, TTL, cacheDir);
8
+ return history?.degradeMode ?? false;
9
+ }
10
+ export function recordExecutionTime(ms, cacheDir) {
11
+ const history = readCache(PERF_KEY, TTL, cacheDir) ?? {
12
+ recentTimes: [],
13
+ degradeMode: false,
14
+ };
15
+ history.recentTimes.push(ms);
16
+ if (history.recentTimes.length > 10)
17
+ history.recentTimes.shift();
18
+ // Check if average of last 5 exceeds budget
19
+ const recent5 = history.recentTimes.slice(-5);
20
+ if (recent5.length >= 5) {
21
+ const avg = recent5.reduce((a, b) => a + b, 0) / recent5.length;
22
+ const wasDegrade = history.degradeMode;
23
+ history.degradeMode = avg > BUDGET_MS;
24
+ if (history.degradeMode && !wasDegrade && DEBUG) {
25
+ console.error(`[claude-hud:perf] degrading — avg ${Math.round(avg)}ms > ${BUDGET_MS}ms budget`);
26
+ }
27
+ if (!history.degradeMode && wasDegrade && DEBUG) {
28
+ console.error(`[claude-hud:perf] recovered — avg ${Math.round(avg)}ms`);
29
+ }
30
+ }
31
+ writeCache(PERF_KEY, history, cacheDir);
32
+ }
33
+ //# sourceMappingURL=perf-guard.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"perf-guard.js","sourceRoot":"","sources":["../src/perf-guard.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAEnD,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,QAAQ,CAAC,YAAY,CAAC,IAAI,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,GAAG,CAAC;AACrF,MAAM,QAAQ,GAAG,cAAc,CAAC;AAChC,MAAM,GAAG,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;AAChC,MAAM,SAAS,GAAG,GAAG,CAAC,CAAC,+BAA+B;AAOtD,MAAM,UAAU,aAAa,CAAC,QAAgB;IAC5C,MAAM,OAAO,GAAG,SAAS,CAAc,QAAQ,EAAE,GAAG,EAAE,QAAQ,CAAC,CAAC;IAChE,OAAO,OAAO,EAAE,WAAW,IAAI,KAAK,CAAC;AACvC,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,EAAU,EAAE,QAAgB;IAC9D,MAAM,OAAO,GAAG,SAAS,CAAc,QAAQ,EAAE,GAAG,EAAE,QAAQ,CAAC,IAAI;QACjE,WAAW,EAAE,EAAE;QACf,WAAW,EAAE,KAAK;KACnB,CAAC;IAEF,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAC7B,IAAI,OAAO,CAAC,WAAW,CAAC,MAAM,GAAG,EAAE;QAAE,OAAO,CAAC,WAAW,CAAC,KAAK,EAAE,CAAC;IAEjE,4CAA4C;IAC5C,MAAM,OAAO,GAAG,OAAO,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IAC9C,IAAI,OAAO,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;QACxB,MAAM,GAAG,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC;QAChE,MAAM,UAAU,GAAG,OAAO,CAAC,WAAW,CAAC;QACvC,OAAO,CAAC,WAAW,GAAG,GAAG,GAAG,SAAS,CAAC;QAEtC,IAAI,OAAO,CAAC,WAAW,IAAI,CAAC,UAAU,IAAI,KAAK,EAAE,CAAC;YAChD,OAAO,CAAC,KAAK,CAAC,qCAAqC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,SAAS,WAAW,CAAC,CAAC;QAClG,CAAC;QACD,IAAI,CAAC,OAAO,CAAC,WAAW,IAAI,UAAU,IAAI,KAAK,EAAE,CAAC;YAChD,OAAO,CAAC,KAAK,CAAC,qCAAqC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAC1E,CAAC;IACH,CAAC;IAED,UAAU,CAAC,QAAQ,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC;AAC1C,CAAC"}
@@ -0,0 +1,14 @@
1
+ import type { HudConfig } from './config.js';
2
+ interface Preset {
3
+ name: string;
4
+ description: string;
5
+ config: Partial<HudConfig>;
6
+ createdAt: string;
7
+ }
8
+ export declare function loadPresets(): Preset[];
9
+ export declare function savePreset(name: string, description: string, config: Partial<HudConfig>): void;
10
+ export declare function getPreset(name: string): Preset | undefined;
11
+ export declare function deletePreset(name: string): boolean;
12
+ export declare function exportPresetAsJson(preset: Preset): string;
13
+ export {};
14
+ //# sourceMappingURL=presets.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"presets.d.ts","sourceRoot":"","sources":["../src/presets.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAI7C,UAAU,MAAM;IACd,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC;IAC3B,SAAS,EAAE,MAAM,CAAC;CACnB;AAOD,wBAAgB,WAAW,IAAI,MAAM,EAAE,CAMtC;AAED,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,SAAS,CAAC,GAAG,IAAI,CAW9F;AAED,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAE1D;AAED,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAQlD;AAED,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAEzD"}
@@ -0,0 +1,47 @@
1
+ import fs from 'node:fs';
2
+ import path from 'node:path';
3
+ const DEBUG = process.env.DEBUG?.includes('claude-hud') || process.env.DEBUG === '*';
4
+ function getPresetsPath() {
5
+ const configDir = process.env.CLAUDE_CONFIG_DIR || path.join(process.env.HOME || '', '.claude');
6
+ return path.join(configDir, 'plugins', 'claude-hud', 'presets.json');
7
+ }
8
+ export function loadPresets() {
9
+ try {
10
+ return JSON.parse(fs.readFileSync(getPresetsPath(), 'utf-8'));
11
+ }
12
+ catch {
13
+ return [];
14
+ }
15
+ }
16
+ export function savePreset(name, description, config) {
17
+ const presets = loadPresets();
18
+ const existing = presets.findIndex(p => p.name === name);
19
+ const preset = { name, description, config, createdAt: new Date().toISOString() };
20
+ if (existing >= 0)
21
+ presets[existing] = preset;
22
+ else
23
+ presets.push(preset);
24
+ const dir = path.dirname(getPresetsPath());
25
+ fs.mkdirSync(dir, { recursive: true });
26
+ fs.writeFileSync(getPresetsPath(), JSON.stringify(presets, null, 2));
27
+ if (DEBUG)
28
+ console.error(`[claude-hud:presets] saved preset "${name}"`);
29
+ }
30
+ export function getPreset(name) {
31
+ return loadPresets().find(p => p.name === name);
32
+ }
33
+ export function deletePreset(name) {
34
+ const presets = loadPresets();
35
+ const idx = presets.findIndex(p => p.name === name);
36
+ if (idx < 0)
37
+ return false;
38
+ presets.splice(idx, 1);
39
+ fs.writeFileSync(getPresetsPath(), JSON.stringify(presets, null, 2));
40
+ if (DEBUG)
41
+ console.error(`[claude-hud:presets] deleted preset "${name}"`);
42
+ return true;
43
+ }
44
+ export function exportPresetAsJson(preset) {
45
+ return JSON.stringify(preset, null, 2);
46
+ }
47
+ //# sourceMappingURL=presets.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"presets.js","sourceRoot":"","sources":["../src/presets.ts"],"names":[],"mappings":"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"}
@@ -7,10 +7,13 @@ export interface SessionRecord {
7
7
  autocompactCount: number;
8
8
  totalToolCalls: number;
9
9
  totalAgentRuns: number;
10
+ tags?: string[];
10
11
  }
11
12
  export declare function loadHistory(): SessionRecord[];
12
13
  export declare function saveCurrentSession(record: Omit<SessionRecord, 'endTime'>): void;
13
14
  export declare function getLastSession(): SessionRecord | null;
15
+ export declare function tagCurrentSession(tags: string[], _cacheDir: string): void;
16
+ export declare function getSessionsByTag(tag: string): SessionRecord[];
14
17
  export declare function formatSessionSummary(record: SessionRecord): string;
15
18
  export interface SessionComparison {
16
19
  durationDelta: string;
@@ -1 +1 @@
1
- {"version":3,"file":"session-history.d.ts","sourceRoot":"","sources":["../src/session-history.ts"],"names":[],"mappings":"AAKA,MAAM,WAAW,aAAa;IAC5B,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,kBAAkB,EAAE,MAAM,CAAC;IAC3B,gBAAgB,EAAE,MAAM,CAAC;IACzB,cAAc,EAAE,MAAM,CAAC;IACvB,cAAc,EAAE,MAAM,CAAC;CACxB;AAOD,wBAAgB,WAAW,IAAI,aAAa,EAAE,CAQ7C;AAED,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,IAAI,CAAC,aAAa,EAAE,SAAS,CAAC,GAAG,IAAI,CAoB/E;AAED,wBAAgB,cAAc,IAAI,aAAa,GAAG,IAAI,CAIrD;AAED,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,aAAa,GAAG,MAAM,CAElE;AAED,MAAM,WAAW,iBAAiB;IAChC,aAAa,EAAE,MAAM,CAAC;IACtB,cAAc,EAAE,MAAM,CAAC;IACvB,aAAa,EAAE,MAAM,CAAC;CACvB;AAED,wBAAgB,sBAAsB,CACpC,OAAO,EAAE;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,EAClE,SAAS,EAAE,MAAM,GAChB,iBAAiB,GAAG,IAAI,CAe1B;AAED,MAAM,WAAW,eAAe;IAC9B,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,aAAa,EAAE,CAAC;IAC1B,OAAO,EAAE;QACP,aAAa,EAAE,MAAM,CAAC;QACtB,cAAc,EAAE,MAAM,CAAC;QACvB,eAAe,EAAE,MAAM,CAAC;QACxB,iBAAiB,EAAE,MAAM,CAAC;KAC3B,CAAC;CACH;AAED,wBAAgB,eAAe,IAAI,eAAe,CAgBjD;AAED,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAI5D;AAED,MAAM,WAAW,aAAa;IAC5B,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,aAAa,EAAE,MAAM,CAAC;IACtB,cAAc,EAAE,MAAM,CAAC;IACvB,cAAc,EAAE,MAAM,CAAC;IACvB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,eAAe,EAAE,MAAM,CAAC;IACxB,aAAa,EAAE,MAAM,CAAC;IACtB,kBAAkB,EAAE,MAAM,CAAC;CAC5B;AAED,wBAAgB,qBAAqB,IAAI,aAAa,GAAG,IAAI,CAuC5D;AAED,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,aAAa,GAAG,MAAM,CAOlE"}
1
+ {"version":3,"file":"session-history.d.ts","sourceRoot":"","sources":["../src/session-history.ts"],"names":[],"mappings":"AAKA,MAAM,WAAW,aAAa;IAC5B,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,kBAAkB,EAAE,MAAM,CAAC;IAC3B,gBAAgB,EAAE,MAAM,CAAC;IACzB,cAAc,EAAE,MAAM,CAAC;IACvB,cAAc,EAAE,MAAM,CAAC;IACvB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;CACjB;AAOD,wBAAgB,WAAW,IAAI,aAAa,EAAE,CAQ7C;AAED,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,IAAI,CAAC,aAAa,EAAE,SAAS,CAAC,GAAG,IAAI,CAoB/E;AAED,wBAAgB,cAAc,IAAI,aAAa,GAAG,IAAI,CAIrD;AAED,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,SAAS,EAAE,MAAM,GAAG,IAAI,CAYzE;AAED,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,aAAa,EAAE,CAE7D;AAED,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,aAAa,GAAG,MAAM,CAElE;AAED,MAAM,WAAW,iBAAiB;IAChC,aAAa,EAAE,MAAM,CAAC;IACtB,cAAc,EAAE,MAAM,CAAC;IACvB,aAAa,EAAE,MAAM,CAAC;CACvB;AAED,wBAAgB,sBAAsB,CACpC,OAAO,EAAE;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,EAClE,SAAS,EAAE,MAAM,GAChB,iBAAiB,GAAG,IAAI,CAe1B;AAED,MAAM,WAAW,eAAe;IAC9B,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,aAAa,EAAE,CAAC;IAC1B,OAAO,EAAE;QACP,aAAa,EAAE,MAAM,CAAC;QACtB,cAAc,EAAE,MAAM,CAAC;QACvB,eAAe,EAAE,MAAM,CAAC;QACxB,iBAAiB,EAAE,MAAM,CAAC;KAC3B,CAAC;CACH;AAED,wBAAgB,eAAe,IAAI,eAAe,CAgBjD;AAED,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAI5D;AAED,MAAM,WAAW,aAAa;IAC5B,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,aAAa,EAAE,MAAM,CAAC;IACtB,cAAc,EAAE,MAAM,CAAC;IACvB,cAAc,EAAE,MAAM,CAAC;IACvB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,eAAe,EAAE,MAAM,CAAC;IACxB,aAAa,EAAE,MAAM,CAAC;IACtB,kBAAkB,EAAE,MAAM,CAAC;CAC5B;AAED,wBAAgB,qBAAqB,IAAI,aAAa,GAAG,IAAI,CAuC5D;AAED,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,aAAa,GAAG,MAAM,CAOlE"}
@@ -40,6 +40,22 @@ export function getLastSession() {
40
40
  // Return the second-to-last (last completed session, not current)
41
41
  return history.length >= 2 ? history[history.length - 2] : null;
42
42
  }
43
+ export function tagCurrentSession(tags, _cacheDir) {
44
+ const history = loadHistory();
45
+ if (history.length === 0)
46
+ return;
47
+ // Tag the most recent session
48
+ const last = history[history.length - 1];
49
+ last.tags = [...new Set([...(last.tags || []), ...tags])];
50
+ const dir = path.dirname(getHistoryPath());
51
+ fs.mkdirSync(dir, { recursive: true });
52
+ fs.writeFileSync(getHistoryPath(), JSON.stringify(history, null, 2));
53
+ if (DEBUG)
54
+ console.error(`[claude-hud:session-history] tagged session with: ${tags.join(', ')}`);
55
+ }
56
+ export function getSessionsByTag(tag) {
57
+ return loadHistory().filter(s => s.tags?.includes(tag));
58
+ }
43
59
  export function formatSessionSummary(record) {
44
60
  return `Last: ${record.model} ${record.duration} | ${record.peakContextPercent}% peak | ${record.totalToolCalls} tools | ${record.autocompactCount} compacts`;
45
61
  }
@@ -1 +1 @@
1
- {"version":3,"file":"session-history.js","sourceRoot":"","sources":["../src/session-history.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"session-history.js","sourceRoot":"","sources":["../src/session-history.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sooneocean/claude-hud",
3
- "version": "0.6.0",
3
+ "version": "0.8.0",
4
4
  "description": "Enhanced real-time statusline HUD for Claude Code — with cache, alerts, frameworks, themes, and Dashboard Rich visuals",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
package/src/alert.ts CHANGED
@@ -129,6 +129,29 @@ export function predictRateLimitHit(
129
129
  return `~${hours}h ${mins}m`;
130
130
  }
131
131
 
132
+ export function sendWebhook(url: string, alert: Alert): void {
133
+ try {
134
+ const payload = JSON.stringify({
135
+ type: alert.type,
136
+ message: alert.message,
137
+ timestamp: new Date().toISOString(),
138
+ source: 'claude-hud',
139
+ });
140
+
141
+ // Fire and forget — don't block HUD rendering
142
+ fetch(url, {
143
+ method: 'POST',
144
+ headers: { 'Content-Type': 'application/json' },
145
+ body: payload,
146
+ signal: AbortSignal.timeout(3000),
147
+ }).catch(() => {
148
+ if (DEBUG) console.error('[claude-hud:alert] webhook failed');
149
+ });
150
+ } catch {
151
+ if (DEBUG) console.error('[claude-hud:alert] webhook error');
152
+ }
153
+ }
154
+
132
155
  export function runAlertHook(hook: string, alert: Alert): void {
133
156
  try {
134
157
  const env = {
package/src/config.ts CHANGED
@@ -94,9 +94,11 @@ export interface HudConfig {
94
94
  context: { warningThreshold: number; criticalThreshold: number; actions: AlertAction };
95
95
  usage5h: { warningThreshold: number; criticalThreshold: number; actions: AlertAction };
96
96
  usage7d: { warningThreshold: number; actions: AlertAction };
97
- hook?: string; // shell command to run on any alert trigger
97
+ hook?: string; // shell command to run on any alert trigger
98
+ webhook?: string; // URL to POST alert data as JSON
98
99
  };
99
100
  locale: Locale;
101
+ schemaVersion: number;
100
102
  }
101
103
 
102
104
  export const DEFAULT_CONFIG: HudConfig = {
@@ -164,6 +166,7 @@ export const DEFAULT_CONFIG: HudConfig = {
164
166
  usage7d: { warningThreshold: 80, actions: { visual: true, bell: false, predict: true } },
165
167
  },
166
168
  locale: 'en' as Locale,
169
+ schemaVersion: 1,
167
170
  };
168
171
 
169
172
  export function getConfigPath(): string {
@@ -272,8 +275,18 @@ function validatePositiveInt(value: unknown, defaultValue: number): number {
272
275
  }
273
276
 
274
277
  export function mergeConfig(userConfig: Partial<HudConfig>): HudConfig {
278
+ const DEBUG = process.env.DEBUG?.includes('claude-hud') || process.env.DEBUG === '*';
275
279
  const migrated = migrateConfig(userConfig);
276
280
 
281
+ // Schema version migration
282
+ const schemaVersion = typeof userConfig.schemaVersion === 'number' ? userConfig.schemaVersion : 0;
283
+
284
+ if (schemaVersion < 1) {
285
+ // Migrate from v0 (no schema version) to v1
286
+ // Currently no-op — future breaking changes will add migration steps here
287
+ if (DEBUG) console.error('[claude-hud:config] migrating config from schema v0 to v1');
288
+ }
289
+
277
290
  const lineLayout = validateLineLayout(migrated.lineLayout)
278
291
  ? migrated.lineLayout
279
292
  : DEFAULT_CONFIG.lineLayout;
@@ -489,27 +502,102 @@ export function mergeConfig(userConfig: Partial<HudConfig>): HudConfig {
489
502
  actions: mergeAlertActions(migrated.alerts?.usage7d?.actions, DEFAULT_CONFIG.alerts.usage7d.actions),
490
503
  },
491
504
  hook: typeof migrated.alerts?.hook === 'string' ? migrated.alerts.hook : undefined,
505
+ webhook: typeof migrated.alerts?.webhook === 'string' ? migrated.alerts.webhook : undefined,
492
506
  };
493
507
 
494
508
  const locale = (migrated.locale === 'en' || migrated.locale === 'zh' || migrated.locale === 'ja')
495
509
  ? migrated.locale
496
510
  : DEFAULT_CONFIG.locale;
497
511
 
498
- return { lineLayout, showSeparators, pathLevels, elementOrder, gitStatus, display, theme, usage, colors, frameworks, alerts, locale };
512
+ const mergedSchemaVersion = 1; // Always set to current
513
+ return { lineLayout, showSeparators, pathLevels, elementOrder, gitStatus, display, theme, usage, colors, frameworks, alerts, locale, schemaVersion: mergedSchemaVersion };
499
514
  }
500
515
 
501
- export async function loadConfig(): Promise<HudConfig> {
516
+ export function validateConfigWithWarnings(userConfig: Record<string, unknown>): string[] {
517
+ const warnings: string[] = [];
518
+
519
+ const knownTopLevel = new Set([
520
+ 'lineLayout', 'showSeparators', 'pathLevels', 'elementOrder',
521
+ 'gitStatus', 'display', 'usage', 'colors', 'frameworks', 'alerts', 'theme', 'locale',
522
+ 'schemaVersion',
523
+ ]);
524
+
525
+ for (const key of Object.keys(userConfig)) {
526
+ if (!knownTopLevel.has(key)) {
527
+ warnings.push(`Unknown config key: "${key}" — will be ignored`);
528
+ }
529
+ }
530
+
531
+ // Type checks
532
+ if (userConfig.theme !== undefined && typeof userConfig.theme !== 'string') {
533
+ warnings.push(`"theme" should be a string, got ${typeof userConfig.theme}`);
534
+ }
535
+
536
+ if (userConfig.locale !== undefined && !['en', 'zh', 'ja'].includes(userConfig.locale as string)) {
537
+ warnings.push(`"locale" should be "en", "zh", or "ja", got "${userConfig.locale}"`);
538
+ }
539
+
540
+ const display = userConfig.display;
541
+ if (display && typeof display === 'object') {
542
+ const knownDisplay = new Set([
543
+ 'showModel', 'showProject', 'showContextBar', 'contextValue',
544
+ 'showConfigCounts', 'showDuration', 'showSpeed', 'showUsage',
545
+ 'usageBarEnabled', 'showTools', 'showAgents', 'showTodos',
546
+ 'showSessionName', 'showTokenBreakdown', 'autocompactBuffer',
547
+ 'usageThreshold', 'sevenDayThreshold', 'environmentThreshold',
548
+ 'customLine', 'showFrameworks', 'showBurnRate', 'showAlerts',
549
+ 'activityIndicator', 'treePrefixes', 'mergeToolsAgents', 'barStyle',
550
+ 'showCost', 'showNotifications', 'autoCompactSwitch', 'autoTune',
551
+ ]);
552
+ for (const key of Object.keys(display as Record<string, unknown>)) {
553
+ if (!knownDisplay.has(key)) {
554
+ warnings.push(`Unknown display key: "display.${key}" — will be ignored`);
555
+ }
556
+ }
557
+ }
558
+
559
+ return warnings;
560
+ }
561
+
562
+ export async function loadConfig(cwd?: string): Promise<HudConfig> {
502
563
  const configPath = getConfigPath();
564
+ const DEBUG = process.env.DEBUG?.includes('claude-hud') || process.env.DEBUG === '*';
565
+
566
+ let projectConfig: Partial<HudConfig> = {};
567
+ let userConfig: Partial<HudConfig> = {};
568
+
569
+ // 1. Read project-level config (.claude-hud.json in project root)
570
+ if (cwd) {
571
+ try {
572
+ const projectPath = path.join(cwd, '.claude-hud.json');
573
+ if (fs.existsSync(projectPath)) {
574
+ projectConfig = JSON.parse(fs.readFileSync(projectPath, 'utf-8'));
575
+ if (DEBUG) console.error('[claude-hud:config] loaded project config from .claude-hud.json');
576
+ }
577
+ } catch {
578
+ if (DEBUG) console.error('[claude-hud:config] error reading .claude-hud.json');
579
+ }
580
+ }
503
581
 
582
+ // 2. Read user config (existing logic)
504
583
  try {
505
- if (!fs.existsSync(configPath)) {
506
- return DEFAULT_CONFIG;
584
+ if (fs.existsSync(configPath)) {
585
+ const content = fs.readFileSync(configPath, 'utf-8');
586
+ userConfig = JSON.parse(content) as Partial<HudConfig>;
507
587
  }
508
-
509
- const content = fs.readFileSync(configPath, 'utf-8');
510
- const userConfig = JSON.parse(content) as Partial<HudConfig>;
511
- return mergeConfig(userConfig);
512
588
  } catch {
513
- return DEFAULT_CONFIG;
589
+ // ignore
590
+ }
591
+
592
+ // 3. Merge: defaults <- project <- user (user overrides project)
593
+ const merged = { ...projectConfig, ...userConfig };
594
+
595
+ const warnings = validateConfigWithWarnings(merged as Record<string, unknown>);
596
+ if (DEBUG && warnings.length > 0) {
597
+ for (const w of warnings) {
598
+ console.error(`[claude-hud:config] ⚠ ${w}`);
599
+ }
514
600
  }
601
+
602
+ return mergeConfig(merged);
515
603
  }
package/src/index.ts CHANGED
@@ -5,13 +5,14 @@ import { countConfigs } from './config-reader.js';
5
5
  import { getGitStatus } from './git.js';
6
6
  import { getUsage } from './usage-api.js';
7
7
  import { loadConfig } from './config.js';
8
+ import type { HudConfig } from './config.js';
8
9
  import { parseExtraCmdArg, runExtraCmd } from './extra-cmd.js';
9
10
  import type { RenderContext } from './types.js';
10
11
  import { fileURLToPath } from 'node:url';
11
12
  import { realpathSync } from 'node:fs';
12
13
  import { getDefaultCacheDir, readCache, writeCache, readLatency, writeLatency } from './cache.js';
13
14
  import { loadProviders, fetchAllProviders } from './providers/index.js';
14
- import { evaluateAlerts, shouldBell, sendNotification, recordAlertHistory, runAlertHook, predictRateLimitHit } from './alert.js';
15
+ import { evaluateAlerts, shouldBell, sendNotification, recordAlertHistory, runAlertHook, predictRateLimitHit, sendWebhook } from './alert.js';
15
16
  import { calculateBurnRate, recordTokenSnapshot } from './burn-rate.js';
16
17
  import { updateSessionStats, getSessionStats, getSparkline, updatePromptStats, updateAgentStats } from './session-stats.js';
17
18
  import { getTerminalWidth } from './utils/terminal.js';
@@ -25,6 +26,7 @@ import { loadCustomWidgets } from './custom-widgets.js';
25
26
  import { updateTokenAnalytics } from './token-analytics.js';
26
27
  import { getSuggestions } from './suggestions.js';
27
28
  import { autoTuneConfig } from './auto-tune.js';
29
+ import { shouldDegrade, recordExecutionTime } from './perf-guard.js';
28
30
 
29
31
  export type MainDeps = {
30
32
  readStdin: typeof readStdin;
@@ -32,7 +34,7 @@ export type MainDeps = {
32
34
  countConfigs: typeof countConfigs;
33
35
  getGitStatus: typeof getGitStatus;
34
36
  getUsage: typeof getUsage;
35
- loadConfig: typeof loadConfig;
37
+ loadConfig: (cwd?: string) => Promise<HudConfig>;
36
38
  parseExtraCmdArg: typeof parseExtraCmdArg;
37
39
  runExtraCmd: typeof runExtraCmd;
38
40
  render: typeof render;
@@ -40,14 +42,23 @@ export type MainDeps = {
40
42
  log: (...args: unknown[]) => void;
41
43
  };
42
44
 
45
+ function timer() {
46
+ const start = Date.now();
47
+ return () => Date.now() - start;
48
+ }
49
+
43
50
  export async function main(overrides: Partial<MainDeps> = {}): Promise<void> {
51
+ const DEBUG = process.env.DEBUG?.includes('claude-hud') || process.env.DEBUG === '*';
52
+ const tTotal = timer();
53
+ const perfStart = Date.now();
54
+
44
55
  const deps: MainDeps = {
45
56
  readStdin,
46
57
  parseTranscript,
47
58
  countConfigs,
48
59
  getGitStatus,
49
60
  getUsage,
50
- loadConfig,
61
+ loadConfig: (cwd?: string) => loadConfig(cwd),
51
62
  parseExtraCmdArg,
52
63
  runExtraCmd,
53
64
  render,
@@ -57,7 +68,9 @@ export async function main(overrides: Partial<MainDeps> = {}): Promise<void> {
57
68
  };
58
69
 
59
70
  try {
71
+ const t1 = timer();
60
72
  const stdin = await deps.readStdin();
73
+ if (DEBUG) console.error(`[claude-hud:timing] readStdin: ${t1()}ms`);
61
74
 
62
75
  if (!stdin) {
63
76
  // Running without stdin - this happens during setup verification
@@ -71,20 +84,30 @@ export async function main(overrides: Partial<MainDeps> = {}): Promise<void> {
71
84
 
72
85
  registerSession(stdin.cwd);
73
86
  const transcriptPath = stdin.transcript_path ?? '';
87
+ const t2 = timer();
74
88
  const transcript = await deps.parseTranscript(transcriptPath);
89
+ if (DEBUG) console.error(`[claude-hud:timing] parseTranscript: ${t2()}ms`);
75
90
 
76
91
  const { claudeMdCount, rulesCount, mcpCount, hooksCount } = await deps.countConfigs(stdin.cwd);
77
92
 
78
93
  const cacheDir = getDefaultCacheDir();
79
94
 
80
- let config = await deps.loadConfig();
95
+ const degradeMode = shouldDegrade(cacheDir);
96
+ if (DEBUG && degradeMode) console.error('[claude-hud:perf] running in degrade mode');
97
+
98
+ const t3 = timer();
99
+ let config = await deps.loadConfig(stdin.cwd);
100
+ if (DEBUG) console.error(`[claude-hud:timing] loadConfig: ${t3()}ms`);
81
101
  config = autoTuneConfig(config, getTerminalWidth(), cacheDir);
102
+ const t4 = timer();
82
103
  const gitStatus = config.gitStatus.enabled
83
104
  ? await deps.getGitStatus(stdin.cwd)
84
105
  : null;
106
+ if (DEBUG) console.error(`[claude-hud:timing] gitStatus: ${t4()}ms`);
85
107
 
86
108
  // Only fetch usage if enabled in config (replaces env var requirement)
87
109
  const usageStart = Date.now();
110
+ const t5 = timer();
88
111
  const usageData = config.display.showUsage !== false
89
112
  ? await deps.getUsage({
90
113
  ttls: {
@@ -93,6 +116,7 @@ export async function main(overrides: Partial<MainDeps> = {}): Promise<void> {
93
116
  },
94
117
  })
95
118
  : null;
119
+ if (DEBUG) console.error(`[claude-hud:timing] usageApi: ${t5()}ms`);
96
120
  if (config.display.showUsage !== false && usageData !== null) {
97
121
  writeLatency(Date.now() - usageStart, cacheDir);
98
122
  }
@@ -103,16 +127,16 @@ export async function main(overrides: Partial<MainDeps> = {}): Promise<void> {
103
127
 
104
128
  const sessionDuration = formatSessionDuration(transcript.sessionStart, deps.now);
105
129
 
106
- // Framework providers
130
+ // Framework providers — skip if degrading
107
131
  let frameworkStatus: RenderContext['frameworkStatus'] = [];
108
- if (config.display.showFrameworks) {
132
+ if (config.display.showFrameworks && !degradeMode) {
109
133
  const providers = loadProviders(config.frameworks, cacheDir);
110
134
  frameworkStatus = await fetchAllProviders(providers);
111
135
  }
112
136
 
113
- // Token analytics (data collection only, no HUD display)
137
+ // Token analytics (data collection only, no HUD display) — skip if degrading
114
138
  const inputTokens = stdin.context_window?.current_usage?.input_tokens;
115
- if (inputTokens) {
139
+ if (inputTokens && !degradeMode) {
116
140
  updateTokenAnalytics(inputTokens, transcript.tools, cacheDir);
117
141
  }
118
142
 
@@ -185,6 +209,12 @@ export async function main(overrides: Partial<MainDeps> = {}): Promise<void> {
185
209
  runAlertHook(config.alerts.hook as string, alert);
186
210
  }
187
211
  }
212
+
213
+ if (config.alerts.webhook) {
214
+ for (const alert of alerts.filter(a => a.type.includes('critical'))) {
215
+ sendWebhook(config.alerts.webhook, alert);
216
+ }
217
+ }
188
218
  }
189
219
 
190
220
  // Rate limit prediction
@@ -264,7 +294,12 @@ export async function main(overrides: Partial<MainDeps> = {}): Promise<void> {
264
294
  suggestions,
265
295
  };
266
296
 
297
+ const t6 = timer();
267
298
  deps.render(ctx);
299
+ if (DEBUG) console.error(`[claude-hud:timing] render: ${t6()}ms`);
300
+ if (DEBUG) console.error(`[claude-hud:timing] total: ${tTotal()}ms`);
301
+
302
+ recordExecutionTime(Date.now() - perfStart, cacheDir);
268
303
  } catch (error) {
269
304
  deps.log('[claude-hud] Error:', error instanceof Error ? error.message : 'Unknown error');
270
305
  }
@@ -0,0 +1,43 @@
1
+ import { readCache, writeCache } from './cache.js';
2
+
3
+ const DEBUG = process.env.DEBUG?.includes('claude-hud') || process.env.DEBUG === '*';
4
+ const PERF_KEY = 'perf-history';
5
+ const TTL = 24 * 60 * 60 * 1000;
6
+ const BUDGET_MS = 250; // Leave 50ms margin from 300ms
7
+
8
+ interface PerfHistory {
9
+ recentTimes: number[]; // last 10 execution times
10
+ degradeMode: boolean;
11
+ }
12
+
13
+ export function shouldDegrade(cacheDir: string): boolean {
14
+ const history = readCache<PerfHistory>(PERF_KEY, TTL, cacheDir);
15
+ return history?.degradeMode ?? false;
16
+ }
17
+
18
+ export function recordExecutionTime(ms: number, cacheDir: string): void {
19
+ const history = readCache<PerfHistory>(PERF_KEY, TTL, cacheDir) ?? {
20
+ recentTimes: [],
21
+ degradeMode: false,
22
+ };
23
+
24
+ history.recentTimes.push(ms);
25
+ if (history.recentTimes.length > 10) history.recentTimes.shift();
26
+
27
+ // Check if average of last 5 exceeds budget
28
+ const recent5 = history.recentTimes.slice(-5);
29
+ if (recent5.length >= 5) {
30
+ const avg = recent5.reduce((a, b) => a + b, 0) / recent5.length;
31
+ const wasDegrade = history.degradeMode;
32
+ history.degradeMode = avg > BUDGET_MS;
33
+
34
+ if (history.degradeMode && !wasDegrade && DEBUG) {
35
+ console.error(`[claude-hud:perf] degrading — avg ${Math.round(avg)}ms > ${BUDGET_MS}ms budget`);
36
+ }
37
+ if (!history.degradeMode && wasDegrade && DEBUG) {
38
+ console.error(`[claude-hud:perf] recovered — avg ${Math.round(avg)}ms`);
39
+ }
40
+ }
41
+
42
+ writeCache(PERF_KEY, history, cacheDir);
43
+ }