@gravitylabsllc/porthole 0.2.1 → 0.2.2

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/trace.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"trace.js","sourceRoot":"","sources":["../src/trace.ts"],"names":[],"mappings":"AAIA;;;;;;GAMG;AAEH;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,CAAC;AA+D/B,+LAA+L;AAC/L,MAAM,CAAC,MAAM,GAAG,GAAG,CAAC,KAAc,EAAE,QAAQ,GAAG,CAAC,EAAU,EAAE;IAC1D,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IAC5C,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;IAC7B,OAAO,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC;AACrD,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,GAAG,GAAG,CAAC,KAAc,EAAE,QAAQ,GAAG,EAAE,EAAU,EAAE,CAC3D,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,IAAI,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAE/E;;;;;;;;;;;GAWG;AACH,SAAS,UAAU,CAAC,MAAgB,EAAE,KAAa;IACjD,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,CAAC,CAAC;IAClC,MAAM,MAAM,GAAG,CAAC,GAAG,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IACjD,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;IAC7E,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;AACnC,CAAC;AAmCD,8EAA8E;AAC9E,8EAA8E;AAC9E,MAAM,WAAW,GAAG,CAAC,IAAU,EAAyB,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;AACtE,MAAM,MAAM,GAAG,CAAC,IAAU,EAAoB,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC;AAE3D;;;;;;;;;;;;;;GAcG;AACH,SAAS,KAAK,CAAC,MAAqB,EAAE,MAAc;IAClD,MAAM,IAAI,GAAG,IAAI,GAAG,EAAyD,CAAC;IAC9E,MAAM,GAAG,GAAW,EAAE,CAAC;IACvB,IAAI,MAAM,GAAG,CAAC,CAAC;IAEf,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;QACnC,MAAM,EAAE,GAAG,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAC9B,IAAI,KAAK,CAAC,KAAK,KAAK,GAAG,MAAM,QAAQ,EAAE,CAAC;YACtC,wEAAwE;YACxE,yEAAyE;YACzE,uEAAuE;YACvE,oDAAoD;YACpD,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;gBAAE,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,KAAK,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;QACrE,CAAC;aAAM,IAAI,KAAK,CAAC,KAAK,KAAK,GAAG,MAAM,MAAM,EAAE,CAAC;YAC3C,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAC7B,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;YAChB,MAAM,EAAE,GAAG,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,OAAO,CAAC,EAAE,CAAC;YACpF,GAAG,CAAC,IAAI,CAAC;gBACP,IAAI,EAAE,KAAK;gBACX,EAAE;gBACF,IAAI,EAAE,KAAK,CAAC,IAAI;gBAChB,OAAO,EAAE,KAAK,CAAC,CAAC;gBAChB,SAAS,EAAE,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI;aACvC,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,mDAAmD;IACnD,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC;QACpC,GAAG,CAAC,IAAI,CAAC;YACP,IAAI,EAAE,IAAI;YACV,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,EAAE;YAC9B,SAAS,EAAE,OAAO,CAAC,EAAE;YACrB,IAAI,EAAE,OAAO,CAAC,IAAI;SACnB,CAAC,CAAC;IACL,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,MAAqB;IAC7C,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,OAAO,CAAC,CAAC;IACzD,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC;IAC3D,MAAM,EAAE,GAAG,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IAC/B,MAAM,IAAI,GAAG,KAAK,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACnC,MAAM,IAAI,GAAG,KAAK,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACnC,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,WAAW,CAAC,CAAC;IAChE,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,QAAQ,CAAC,CAAC;IAC1D,MAAM,EAAE,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,IAAI,CAAC,CAAC;IAElD,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAkB,CAAC;IAC3C,KAAK,MAAM,KAAK,IAAI,SAAS,EAAE,CAAC;QAC9B,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC;QACxC,QAAQ,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IACxD,CAAC;IAED,OAAO;QACL,eAAe,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;QAChF,gBAAgB,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC;QACtF,cAAc,EAAE,UAAU,CACxB,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,EACtC,IAAI,CACL;QAED,mBAAmB,EAAE,MAAM,CAAC,MAAM;QAClC,oBAAoB,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC;QAC7F,sBAAsB,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;QAElF,2EAA2E;QAC3E,2EAA2E;QAC3E,0DAA0D;QAC1D,YAAY,EAAE,EAAE,CAAC,MAAM;QACvB,cAAc,EAAE,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,MAAM;QACxC,iBAAiB,EAAE,EAAE,CAAC,MAAM,CAC1B,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,KAAK,MAAM,IAAI,CAAC,CAAC,IAAI,CAAC,YAAY,KAAK,IAAI,CACtE,CAAC,MAAM;QACR,kDAAkD;QAClD,UAAU,EAAE,UAAU,CACpB,EAAE,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EACvC,IAAI,CACL;QAED,YAAY,EAAE,IAAI,CAAC,MAAM;QACzB,gBAAgB,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,MAAM;QAC5C,aAAa,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK,KAAK,SAAS,CAAC;aACvF,MAAM;QACT,gDAAgD;QAChD,YAAY,EAAE,UAAU,CACtB,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EACzC,IAAI,CACL;QAED,iBAAiB,EAAE,SAAS,CAAC,MAAM;QACnC,wBAAwB,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QAE5E,mBAAmB,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC;QAC1F,kBAAkB,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC;QACzF,qBAAqB,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;QAE3E,WAAW,EAAE,IAAI,CAAC,MAAM;QACxB,gBAAgB,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,MAAM;QAC5C,cAAc,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,KAAK,MAAM,CAAC,CAAC,MAAM;QACrE,eAAe,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,QAAQ,CAAC,CAAC,MAAM;KAC3E,CAAC;AACJ,CAAC;AAED;;;;;;;;GAQG;AACH,SAAS,WAAW,CAAC,MAAqB;IACxC,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,SAAS,CAAC;IAC1C,MAAM,EAAE,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAClC,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC;AACxD,CAAC;AAED,8EAA8E;AAC9E,SAAS,UAAU,CAAC,KAAa;IAC/B,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,SAAS,CAAC;IACzC,MAAM,MAAM,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;IACrF,MAAM,IAAI,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;IAClE,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,EAAE,EAAE,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC;AAC9D,CAAC;AAED,6EAA6E;AAC7E,SAAS,MAAM,CAAC,KAAqB,EAAE,EAAU;IAC/C,IAAI,OAA2B,CAAC;IAChC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,IAAI,IAAI,CAAC,EAAE,IAAI,EAAE;YAAE,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC;;YACnC,MAAM;IACb,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,aAAa,CAAC,SAAiB;IAC7C,MAAM,EAAE,GAAG,SAAS,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC;IAC1C,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,GAAG,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,CAAC;AAC3C,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,UAAU,cAAc,CAAC,OAAgD;IAC7E,MAAM,EAAE,GAAG,aAAa,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IAC5C,OAAO,OAAO,CAAC,OAAO;QACpB,CAAC,CAAC,GAAG,EAAE,eAAe,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,8BAA8B;QACjF,CAAC,CAAC,GAAG,EAAE,SAAS,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC;AACtD,CAAC;AAaD;;;;;;GAMG;AACH,MAAM,UAAU,gBAAgB,CAAC,KAAkB;IACjD,IAAI,KAAK,CAAC,KAAK,KAAK,QAAQ,IAAI,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,SAAS;QAAE,OAAO,IAAI,CAAC;IAChF,OAAO;QACL,KAAK,EAAE,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC;QAC5B,MAAM,EAAE,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC;QAC9B,GAAG,EAAE,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC;QACxB,KAAK,EAAE,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC;QAC5B,WAAW,EAAE,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC;QACxC,SAAS,EAAE,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,EAAE,EAAE,CAAC;QACxC,YAAY,EAAE,KAAK,CAAC,IAAI,CAAC,YAAY,KAAK,MAAM,IAAI,KAAK,CAAC,IAAI,CAAC,YAAY,KAAK,IAAI;KACrF,CAAC;AACJ,CAAC;AAKD;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,UAAU,cAAc,CAAC,MAQ9B;IACC,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,cAAc,EAAE,GAAG,MAAM,CAAC;IAExD,IAAI,MAAM,GAA4C,IAAI,CAAC;IAC3D,KAAK,MAAM,KAAK,IAAI,UAAU,EAAE,CAAC;QAC/B,IAAI,KAAK,CAAC,CAAC,GAAG,QAAQ;YAAE,SAAS;QACjC,MAAM,IAAI,GAAG,gBAAgB,CAAC,KAAK,CAAC,CAAC;QACrC,IAAI,CAAC,IAAI;YAAE,SAAS;QACpB,IAAI,CAAC,MAAM,IAAI,KAAK,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC;YAAE,MAAM,GAAG,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC;IACnE,CAAC;IACD,IAAI,MAAM;QAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC;IAE3F,IAAI,cAAc;QAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,cAAc,CAAC,SAAS,EAAE,IAAI,EAAE,cAAc,EAAE,CAAC;IAEzG,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC;AAC1C,CAAC;AAED;;;;;;;;GAQG;AACH,SAAS,gBAAgB,CACvB,IAAY,EACZ,EAAU,EACV,IAAmC,EACnC,QAAiG,EACjG,KAAqB;IAErB,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IACjC,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,SAAS,CAAC;IAExC,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,IAAI,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC3E,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAClD,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC;IAE1B,OAAO;QACL,EAAE;QACF,QAAQ,EAAE,SAAS;QACnB,UAAU,EAAE,UAAU;QACtB,KAAK,EACH,GAAG,KAAK,IAAI,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,IAAI,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,GAAG;YACjF,8DAA8D,MAAM,CAAC,SAAS,IAAI;QACpF,MAAM,EAAE,WAAW,KAAK,kFAAkF;QAC1G,KAAK;QACL,MAAM,EAAE,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,SAAS,CAAC;QACvC,QAAQ,EAAE,EAAE,eAAe,EAAE,MAAM,CAAC,SAAS,EAAE,GAAG,QAAQ,EAAE;QAC5D,wEAAwE;QACxE,oEAAoE;QACpE,mEAAmE;QACnE,wEAAwE;QACxE,MAAM,EAAE,EAAE,IAAI,EAAE,MAAM,CAAC,SAAS,EAAE,EAAE,EAAE,MAAM,CAAC,SAAS,GAAG,MAAM,CAAC,SAAS,EAAE;KAC5E,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,UAAU,CACxB,MAAqB,EACrB,KAAqB,EACrB,SAAiB;AACjB,gWAAgW;AAChW,OAAO,GAAG,KAAK;IAEf,MAAM,QAAQ,GAAc,EAAE,CAAC;IAC/B,MAAM,EAAE,GAAG,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IAC/B,MAAM,IAAI,GAAG,KAAK,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACnC,MAAM,IAAI,GAAG,KAAK,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAEnC,2EAA2E;IAC3E,4EAA4E;IAC5E,yEAAyE;IACzE,0EAA0E;IAC1E,wDAAwD;IACxD,MAAM,MAAM,GAAG,EAAE;SACd,MAAM,CAAC,WAAW,CAAC;SACnB,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,KAAK,MAAM,IAAI,CAAC,CAAC,IAAI,CAAC,YAAY,KAAK,IAAI,CAAC,CAAC;IACjF,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACtB,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC9D,QAAQ,CAAC,IAAI,CAAC;YACZ,EAAE,EAAE,mBAAmB;YACvB,QAAQ,EAAE,OAAO;YACjB,UAAU,EAAE,UAAU;YACtB,KAAK,EAAE,GAAG,MAAM,CAAC,MAAM,aAAa,MAAM,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,yBAAyB;YACtG,MAAM,EAAE,aAAa,KAAK,CAAC,EAAE,OAAO,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE;YACtE,KAAK,EAAE,MAAM,CAAC,MAAM;YACpB,QAAQ,EAAE,EAAE,OAAO,EAAE,KAAK,CAAC,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;YACzD,MAAM,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,SAAS,IAAI,KAAK,CAAC,OAAO,EAAE,EAAE,EAAE,KAAK,CAAC,OAAO,EAAE;SACtE,CAAC,CAAC;IACL,CAAC;IAED,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC;IAC3D,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACtB,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CACnC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CACzD,CAAC;QACF,QAAQ,CAAC,IAAI,CAAC;YACZ,EAAE,EAAE,mBAAmB;YACvB,QAAQ,EAAE,OAAO;YACjB,UAAU,EAAE,UAAU;YACtB,KAAK,EAAE,2BAA2B,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI;YAChE,MAAM,EAAE,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,SAAS;YACvD,KAAK,EAAE,MAAM,CAAC,MAAM;YACpB,MAAM,EAAE,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC;YAC9B,QAAQ,EAAE;gBACR,EAAE,EAAE,KAAK,CAAC,CAAC;gBACX,KAAK,EAAE,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;aACrD;YACD,yEAAyE;YACzE,+DAA+D;YAC/D,MAAM,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,EAAE,EAAE,KAAK,CAAC,CAAC,EAAE;SACpE,CAAC,CAAC;IACL,CAAC;IAED,4EAA4E;IAC5E,4EAA4E;IAC5E,2EAA2E;IAC3E,0EAA0E;IAC1E,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC;IAC/G,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACtB,MAAM,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;QACxB,QAAQ,CAAC,IAAI,CAAC;YACZ,EAAE,EAAE,aAAa;YACjB,QAAQ,EAAE,OAAO;YACjB,UAAU,EAAE,UAAU;YACtB,KAAK,EAAE,GAAG,MAAM,CAAC,MAAM,SAAS,MAAM,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,SAAS;YAC/E,MAAM,EAAE,GAAG,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;YAC/G,KAAK,EAAE,MAAM,CAAC,MAAM;YACpB,MAAM,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,SAAS,IAAI,KAAK,CAAC,OAAO,EAAE,EAAE,EAAE,KAAK,CAAC,OAAO,EAAE;SACtE,CAAC,CAAC;IACL,CAAC;IAED,2EAA2E;IAC3E,4DAA4D;IAC5D,MAAM,IAAI,GAAG;QACX,gBAAgB,CACd,IAAI,EACJ,iBAAiB,EACjB,EAAE,GAAG,EAAE,WAAW,EAAE,IAAI,EAAE,YAAY,EAAE,EACxC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;YACT,KAAK,EAAE,GAAG,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,mBAAmB;YAC3E,QAAQ,EAAE,EAAE,MAAM,EAAE,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;SAC3D,CAAC,EACF,KAAK,CACN;QACD,gBAAgB,CACd,EAAE,EACF,eAAe,EACf,EAAE,GAAG,EAAE,gBAAgB,EAAE,IAAI,EAAE,kBAAkB,EAAE,EACnD,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;YACT,KAAK,EAAE,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,oBAAoB;YACzD,QAAQ,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;SACjC,CAAC,EACF,KAAK,CACN;QACD,gBAAgB,CACd,IAAI,EACJ,iBAAiB,EACjB,EAAE,GAAG,EAAE,gBAAgB,EAAE,IAAI,EAAE,iBAAiB,EAAE,EAClD,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;YACT,KAAK,EAAE,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,kBAAkB;YAC3D,QAAQ,EAAE,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE;SACrD,CAAC,EACF,KAAK,CACN;KACF,CAAC,MAAM,CAAC,CAAC,OAAO,EAAsB,EAAE,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC;IACjE,QAAQ,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC;IAEvB,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,OAAO,CAAC,CAAC;IACzD,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACtB,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QAC/E,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC5F,MAAM,MAAM,GAAG,IAAI,GAAG,EAAkB,CAAC;QACzC,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;YAC3B,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YACzC,IAAI,KAAK;gBAAE,MAAM,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;QAC7D,CAAC;QACD,MAAM,SAAS,GAAG,CAAC,GAAG,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACvE,QAAQ,CAAC,IAAI,CAAC;YACZ,EAAE,EAAE,gBAAgB;YACpB,QAAQ,EAAE,SAAS;YACnB,UAAU,EAAE,OAAO,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,UAAU;YAC/C,KAAK,EAAE,GAAG,MAAM,yCAAyC,cAAc,CAAC,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC,GAAG;YAClG,MAAM,EAAE,SAAS;gBACf,CAAC,CAAC,SAAS,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,sBAAsB,SAAS,CAAC,CAAC,CAAC,EAAE;gBACtE,CAAC,CAAC,SAAS;YACb,KAAK,EAAE,MAAM;YACb,MAAM,EAAE,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC;YAC9B,yEAAyE;YACzE,sEAAsE;YACtE,uBAAuB;YACvB,MAAM,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,EAAE,EAAE,KAAK,CAAC,CAAC,EAAE;SACjE,CAAC,CAAC;IACL,CAAC;IAED,MAAM,EAAE,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,IAAI,IAAI,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC;IAC9E,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAClB,MAAM,MAAM,GAAG,EAAE,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC;QACpE,QAAQ,CAAC,IAAI,CAAC;YACZ,EAAE,EAAE,aAAa;YACjB,QAAQ,EAAE,SAAS;YACnB,UAAU,EAAE,UAAU;YACtB,KAAK,EAAE,GAAG,EAAE,CAAC,MAAM,4CAA4C,MAAM,IAAI;YACzE,KAAK,EAAE,EAAE,CAAC,MAAM;YAChB,wEAAwE;YACxE,wEAAwE;YACxE,wEAAwE;YACxE,4DAA4D;YAC5D,MAAM,EAAE,WAAW,CAAC,EAAE,CAAC;SACxB,CAAC,CAAC;IACL,CAAC;IAED,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,QAAQ,IAAI,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,YAAY,CAAC,CAAC;IAC9F,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACrB,QAAQ,CAAC,IAAI,CAAC;YACZ,EAAE,EAAE,aAAa;YACjB,QAAQ,EAAE,SAAS;YACnB,UAAU,EAAE,UAAU;YACtB,KAAK,EAAE,oCAAoC,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,EAAE;YAClG,MAAM,EAAE,gBAAgB,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;YACjE,KAAK,EAAE,KAAK,CAAC,MAAM;YACnB,MAAM,EAAE,WAAW,CAAC,KAAK,CAAC;SAC3B,CAAC,CAAC;IACL,CAAC;IAED,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,KAAK,MAAM,CAAC,CAAC;IAC/D,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACvB,QAAQ,CAAC,IAAI,CAAC;YACZ,EAAE,EAAE,cAAc;YAClB,QAAQ,EAAE,SAAS;YACnB,UAAU,EAAE,UAAU;YACtB,KAAK,EAAE,GAAG,OAAO,CAAC,MAAM,eAAe,OAAO,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,UAAU;YACtF,KAAK,EAAE,OAAO,CAAC,MAAM;YACrB,MAAM,EAAE,UAAU,CAAC,OAAO,CAAC;SAC5B,CAAC,CAAC;IACL,CAAC;IAED,uDAAuD;IACvD,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,WAAW,CAAC,CAAC;IAChE,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACzB,MAAM,MAAM,GAAG,IAAI,GAAG,EAAkB,CAAC;QACzC,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAkB,CAAC;QAC3C,KAAK,MAAM,KAAK,IAAI,SAAS,EAAE,CAAC;YAC9B,MAAM,IAAI,GAAG,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAClC,IAAI,IAAI;gBAAE,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;YACxD,KAAK,MAAM,GAAG,IAAK,KAAK,CAAC,IAAI,CAAC,WAAoC,IAAI,EAAE,EAAE,CAAC;gBACzE,QAAQ,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;YAClD,CAAC;QACH,CAAC;QACD,MAAM,OAAO,GAAG,CAAC,GAAG,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACrE,MAAM,OAAO,GAAG,CAAC,GAAG,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACvE,IAAI,OAAO,IAAI,OAAO,CAAC,CAAC,CAAC,IAAI,GAAG,EAAE,CAAC;YACjC,QAAQ,CAAC,IAAI,CAAC;gBACZ,EAAE,EAAE,mBAAmB;gBACvB,QAAQ,EAAE,MAAM;gBAChB,UAAU,EAAE,YAAY;gBACxB,KAAK,EAAE,GAAG,OAAO,CAAC,CAAC,CAAC,eAAe,OAAO,CAAC,CAAC,CAAC,QAAQ;gBACrD,MAAM,EAAE,OAAO;oBACb,CAAC,CAAC,gCAAgC,OAAO,CAAC,CAAC,CAAC,wBAAwB;oBACpE,CAAC,CAAC,SAAS;gBACb,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC;gBACjB,kEAAkE;gBAClE,kEAAkE;gBAClE,mDAAmD;gBACnD,MAAM,EAAE,WAAW,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;aAC9E,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,2EAA2E;IAC3E,qEAAqE;IACrE,yEAAyE;IACzE,0EAA0E;IAC1E,0EAA0E;IAC1E,yEAAyE;IACzE,0EAA0E;IAC1E,sCAAsC;IACtC,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,MAAM,CAAC,CAAC;IACvD,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,MAAM,GAAG,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACrC,MAAM,QAAQ,GAAyB,kBAAkB,CAAC,GAAG,CAAC,MAAM,CAAC;YACnE,CAAC,CAAC,OAAO;YACT,CAAC,CAAC,MAAM,KAAK,uBAAuB;gBAClC,CAAC,CAAC,MAAM;gBACR,CAAC,CAAC,SAAS,CAAC;QAChB,IAAI,CAAC,QAAQ;YAAE,SAAS;QAExB,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QACtF,MAAM,cAAc,GAAG,IAAI,CAAC,IAAI,CAAC,cAAc,KAAK,IAAI,CAAC;QACzD,MAAM,KAAK,GAAG,WAAW,CAAC,CAAC,CAAC,GAAG,WAAW,GAAG,cAAc,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,kBAAkB,CAAC;QACvG,MAAM,QAAQ,GAAG,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,SAAS,CAAC;QAEtE,uEAAuE;QACvE,oEAAoE;QACpE,uEAAuE;QACvE,0EAA0E;QAC1E,+DAA+D;QAC/D,MAAM,QAAQ,GAAG,mGAAmG,CAAC;QACrH,MAAM,WAAW,GAAG,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,SAAS,CAAC;QAE5D,QAAQ,CAAC,IAAI,CAAC;YACZ,EAAE,EAAE,QAAQ,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE;YACtC,QAAQ;YACR,UAAU,EAAE,UAAU;YACtB,KAAK,EAAE,GAAG,MAAM,MAAM,KAAK,EAAE,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAClE,MAAM,EAAE,WAAW,CAAC,CAAC,CAAC,GAAG,WAAW,KAAK,QAAQ,GAAG,CAAC,CAAC,CAAC,QAAQ;YAC/D,MAAM,EAAE,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC;YAC7B,QAAQ,EAAE;gBACR,MAAM;gBACN,WAAW;gBACX,cAAc;gBACd,SAAS,EAAE,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC;gBACnC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;aAClC;YACD,QAAQ,EAAE,IAAI;SACf,CAAC,CAAC;IACL,CAAC;IAED,MAAM,KAAK,GAA6B,EAAE,KAAK,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC;IAC1E,OAAO,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC;AACxE,CAAC;AAED,yHAAyH;AACzH,MAAM,kBAAkB,GAAG,IAAI,GAAG,CAAC;IACjC,YAAY;IACZ,cAAc;IACd,qBAAqB;IACrB,mBAAmB;IACnB,iCAAiC;CAClC,CAAC,CAAC;AAEH,MAAM,UAAU,UAAU,CAAC,OAS1B;IACC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC;IAE3C,MAAM,MAAM,GAAG,OAAO,CAAC,OAAO;QAC5B,CAAC,CAAC,EAAE,KAAK,EAAE,GAAG,CAAC,KAAK,EAAE,MAAM,CAAC,EAAE,MAAM,EAAE,GAAG,CAAC,KAAK,EAAE,MAAM,CAAC,EAAE,SAAS,EAAE,OAAO,CAAC,SAAS,EAAE;QACzF,CAAC,CAAC,EAAE,GAAG,OAAO,CAAC,IAAI,EAAE,SAAS,EAAE,OAAO,CAAC,SAAS,EAAE,CAAC;IAEtD,MAAM,KAAK,GAAG,MAAM;SACjB,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,MAAM,CAAC;SACjC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QACX,EAAE,EAAE,CAAC,CAAC,CAAC;QACP,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC;QACxB,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,SAAS;KACxC,CAAC,CAAC,CAAC;IAEN,OAAO;QACL,QAAQ,EAAE,aAAa;QACvB,QAAQ,EAAE,OAAO,CAAC,QAAQ;QAC1B,UAAU,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;QACpC,UAAU,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC;QAC1C,MAAM,EAAE,OAAO,CAAC,MAAM;QACtB,GAAG,EAAE;YACH,WAAW,EAAE,GAAG,CAAC,KAAK,EAAE,WAAW,CAAC;YACpC,WAAW,EAAE,KAAK,EAAE,WAAW,IAAI,IAAI;SACxC;QACD,MAAM;QACN,KAAK;QACL,OAAO,EAAE,SAAS,CAAC,MAAM,CAAC;QAC1B,QAAQ,EAAE,UAAU,CAAC,MAAM,EAAE,KAAK,EAAE,OAAO,CAAC,SAAS,EAAE,OAAO,CAAC,OAAO,CAAC;QACvE,MAAM,EAAE,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS;KAChD,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"trace.js","sourceRoot":"","sources":["../src/trace.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@gravitylabsllc/porthole",
3
- "version": "0.2.1",
3
+ "version": "0.2.2",
4
4
  "description": "MCP server and live timeline for Porthole: query a running Android app for recomposition counts, frame timing, main-thread stalls, navigation, state, in-flight work and logs, and capture and query Perfetto system traces.",
5
5
  "type": "module",
6
6
  "bin": {
package/src/device.ts CHANGED
@@ -175,6 +175,36 @@ export class DeviceClient extends EventEmitter {
175
175
  */
176
176
  protocolMismatch: string | null = null;
177
177
 
178
+ /**
179
+ * GRA-197: null unless `hello.packageName` disagrees with
180
+ * [applicationId] — set synchronously in `connect()`'s hello handler,
181
+ * right beside [protocolMismatch] and for the same reasons: computed the
182
+ * instant `hello` lands rather than deferred to whichever tool asks
183
+ * later, so a reader is never looking at a stale answer for a previous
184
+ * connection, and cleared wherever `protocolMismatch` is (the "close"
185
+ * handler below), since both are facts about the `hello` that produced
186
+ * them and neither survives it.
187
+ *
188
+ * Unlike `protocolMismatch`, this is a refusal to trust *identity*, not
189
+ * *wire format* — the app answering the port is a real, working Porthole
190
+ * app, just not the one this server was configured for (another Porthole
191
+ * app on the device holding the same port is the concrete incident this
192
+ * guards, GRA-197's own report). The founder's ruling is "warn loudly, do
193
+ * not refuse": this never blocks a request or a connection, it only
194
+ * surfaces the fact everywhere a caller might otherwise be misled by an
195
+ * unqualified "connected".
196
+ */
197
+ packageMismatch: string | null = null;
198
+
199
+ /**
200
+ * GRA-197: what this server was started for, from `PORTHOLE_APPLICATION_ID`
201
+ * — undefined when unset, which means "no expectation configured" and
202
+ * disables the check entirely (see the hello handler): a server pointed at
203
+ * an app on purpose, with no plugin-generated `.mcp.json` in the loop at
204
+ * all, must see no behaviour change from this ticket.
205
+ */
206
+ private readonly applicationId: string | undefined;
207
+
178
208
  /**
179
209
  * GRA-53 `#session-writer`: null (persistence off) unless a sessions root
180
210
  * is given. `undefined`/omitted is the default on purpose — every existing
@@ -190,9 +220,11 @@ export class DeviceClient extends EventEmitter {
190
220
  private readonly host: string,
191
221
  readonly port: number,
192
222
  sessionsRoot?: string,
223
+ applicationId?: string,
193
224
  ) {
194
225
  super();
195
226
  this.sessions = sessionsRoot ? new SessionWriter(sessionsRoot) : null;
227
+ this.applicationId = applicationId;
196
228
  }
197
229
 
198
230
  start(): void {
@@ -271,6 +303,20 @@ export class DeviceClient extends EventEmitter {
271
303
  `${PROTOCOL_VERSION}. Update the app's Porthole runtime dependency to a version that ` +
272
304
  `speaks protocol ${PROTOCOL_VERSION}, or pin the npm package this MCP server runs from ` +
273
305
  `(in .mcp.json) to the version that matches the app.`;
306
+ // GRA-197: same placement and the same reasoning as protocolMismatch
307
+ // just above — computed the instant hello lands, synchronously, so
308
+ // it sits between `this.hello = hello` and the emit below without
309
+ // reopening GRA-191's race. `this.applicationId` unset means no
310
+ // expectation was configured at all (an ordinary `porthole { }`
311
+ // with no applicationId, or a server started with no
312
+ // PORTHOLE_APPLICATION_ID), which must be indistinguishable from
313
+ // today's behaviour rather than read as "expected no package".
314
+ this.packageMismatch =
315
+ this.applicationId === undefined || hello.packageName === this.applicationId
316
+ ? null
317
+ : `Connected to \`${hello.packageName}\`, but this MCP server was configured for ` +
318
+ `\`${this.applicationId}\` (PORTHOLE_APPLICATION_ID). Another Porthole app on the ` +
319
+ `device is holding the port — stop it, or give this app its own port.`;
274
320
  // GRA-191: `this.hello = hello` above and this emit must stay
275
321
  // exactly this close together, with nothing between them that can
276
322
  // yield to the event loop. GRA-53 used to put
@@ -351,6 +397,8 @@ export class DeviceClient extends EventEmitter {
351
397
  // gone (a new connection will get its own, possibly no longer
352
398
  // mismatched) there is nothing left for this to still be true about.
353
399
  this.protocolMismatch = null;
400
+ // GRA-197: same reasoning, same place.
401
+ this.packageMismatch = null;
354
402
  this.failPending("device disconnected");
355
403
  this.setState("disconnected");
356
404
  this.scheduleReconnect();
@@ -555,6 +603,16 @@ export class DeviceClient extends EventEmitter {
555
603
  " 2. the adb bridge is up: 'adb forward tcp:PORT tcp:PORT', which",
556
604
  " 'porthole ui' and './gradlew portholeConnect' both do for you",
557
605
  ` 3. nothing else on this machine is holding ${this.port}`,
606
+ // GRA-197: the two cases that incident's own report named — a wrong
607
+ // app answering is only reachable from here for a device that is not
608
+ // even accepting connections on the port; a device that is, but
609
+ // answers as the wrong app, is packageMismatch's territory above,
610
+ // reached while "connected", not from this message at all.
611
+ " 4. another Porthole app on the device isn't already holding this port — stop it, or " +
612
+ "give this app its own port with 'porthole { port.set(...) }'",
613
+ " 5. there's only one adb transport for this device — wireless plus wired both attached " +
614
+ "makes 'adb forward' ambiguous and it fails silently for this port; pin one with " +
615
+ "'porthole { deviceSerial.set(...) }'",
558
616
  ]
559
617
  .filter(Boolean)
560
618
  .join("\n");
@@ -0,0 +1,142 @@
1
+ // Copyright 2026 Gravity Labs
2
+ // SPDX-License-Identifier: Apache-2.0
3
+
4
+ /**
5
+ * Every value `EventFrame.event` can carry — the runtime's own
6
+ * `EventKinds` object (`runtime/src/main/kotlin/live/gravitylabs/porthole/
7
+ * protocol/Protocol.kt`), mirrored on this side of the wire.
8
+ *
9
+ * This is the one list `timeline`'s `kinds` filter can be asked about (see
10
+ * `index.ts`'s `kinds` zod param, generated from this array so the
11
+ * description text cannot list a kind the filter does not actually accept,
12
+ * or omit one it does) and the one `eventKinds.test.ts` compares against
13
+ * Protocol.kt's own source, so a kind added on only one side of the wire
14
+ * fails a test instead of one side silently not recognising it. Order here
15
+ * is the order the description groups them in: the nine kinds a UI lane
16
+ * already showed before GRA-200, then the rest.
17
+ *
18
+ * Deliberately does NOT include `DeviceCollector`'s own sub-kinds
19
+ * (`profile`, `trimMemory`, `foreground`, …) — those travel inside a
20
+ * `device` event's `data.kind` field, never as `EventFrame.event` itself,
21
+ * so `kinds: ["trimMemory"]` would silently match nothing. `trace.ts`'s
22
+ * `resolveProfile`/`findingsOf` read them by their own literal strings,
23
+ * matching Protocol.kt's separate `DeviceEventKinds` object.
24
+ */
25
+ export const EVENT_KINDS = [
26
+ "recompose",
27
+ "state_write",
28
+ "frame",
29
+ "nav",
30
+ "http_start",
31
+ "http_end",
32
+ "db_start",
33
+ "db_end",
34
+ "log",
35
+ "log_append",
36
+ "mark",
37
+ "device",
38
+ "exit",
39
+ "work_start",
40
+ "work_end",
41
+ "blocked",
42
+ "gc",
43
+ "memory",
44
+ ] as const;
45
+
46
+ export type EventKind = (typeof EVENT_KINDS)[number];
47
+
48
+ /**
49
+ * One clause of `timeline`'s `kinds` description: which of [EVENT_KINDS]
50
+ * this covers, and one sentence saying where each is narrated — GRA-200's
51
+ * own requirement, so an agent reading the tool's schema does not have to
52
+ * call `timeline` once per kind to discover that `exit` is better read from
53
+ * `porthole_status` or that `device` is mostly raw but its startup profile
54
+ * feeds two other tools' numbers.
55
+ */
56
+ export interface KindGroup {
57
+ kinds: readonly EventKind[];
58
+ /** One clause, no leading capital, no trailing period — joined below. */
59
+ narrated: string;
60
+ }
61
+
62
+ const KIND_GROUPS: readonly KindGroup[] = [
63
+ {
64
+ kinds: ["exit"],
65
+ narrated:
66
+ "narrated in `porthole_status` (its `exits` list and `exitTrace` RPC); `findings`' own " +
67
+ "`alsoInWindow` block also inventories every exit in the window it examined, including the " +
68
+ "ones that did not cross a severity worth a finding on their own",
69
+ },
70
+ {
71
+ kinds: ["memory", "gc"],
72
+ narrated:
73
+ "raw here; `gc` becomes a `findings` entry only when a collection blocks the app, and a " +
74
+ "device's `trimMemory` sub-kind (below) becomes one whenever the system actually asks for " +
75
+ "memory back — `memory`'s own periodic samples never do, and stay raw everywhere but " +
76
+ "`findings`' `alsoInWindow` count",
77
+ },
78
+ {
79
+ kinds: ["device"],
80
+ narrated:
81
+ "raw here; its one-time startup profile sub-kind is what `findings` and `frames` read their " +
82
+ "frame budget from, and its other sub-kinds cover lifecycle changes (`foreground`/" +
83
+ "`background`), rotation, theme, font scale, power and network — see `DeviceEventKinds` in " +
84
+ "Protocol.kt for the full set",
85
+ },
86
+ {
87
+ kinds: [
88
+ "recompose",
89
+ "state_write",
90
+ "frame",
91
+ "nav",
92
+ "http_start",
93
+ "http_end",
94
+ "db_start",
95
+ "db_end",
96
+ "log",
97
+ ],
98
+ narrated: "raw here, as before",
99
+ },
100
+ {
101
+ kinds: ["log_append", "mark", "work_start", "work_end", "blocked"],
102
+ narrated: "raw here",
103
+ },
104
+ ];
105
+
106
+ /**
107
+ * Refuses to describe a set of groups that silently drops or invents a
108
+ * kind — a clause removed from `groups` without removing its kind from
109
+ * `kinds` (or the reverse) throws here rather than shipping a description
110
+ * that quietly stopped matching the filter it documents. Exported (rather
111
+ * than inlined into [timelineKindsDescription]) so a test can hand it a
112
+ * synthetic, deliberately-broken group list without having to break the
113
+ * real [KIND_GROUPS]/[EVENT_KINDS] to prove the check works at all.
114
+ */
115
+ export function validateKindCoverage<K extends string>(
116
+ groups: readonly { kinds: readonly K[] }[],
117
+ kinds: readonly K[],
118
+ ): void {
119
+ const covered = groups.flatMap((g) => g.kinds);
120
+ const coveredSet = new Set(covered);
121
+ const missing = kinds.filter((k) => !coveredSet.has(k));
122
+ if (missing.length > 0) {
123
+ throw new Error(`timelineKindsDescription() does not narrate: ${missing.join(", ")}`);
124
+ }
125
+ if (covered.length !== coveredSet.size) {
126
+ throw new Error("timelineKindsDescription() lists the same kind in more than one group.");
127
+ }
128
+ const known = new Set(kinds);
129
+ const unknown = covered.filter((k) => !known.has(k));
130
+ if (unknown.length > 0) {
131
+ throw new Error(`timelineKindsDescription() narrates a kind EVENT_KINDS does not have: ${unknown.join(", ")}`);
132
+ }
133
+ }
134
+
135
+ /** Builds `timeline`'s `kinds` param description from [KIND_GROUPS] — see [validateKindCoverage]. */
136
+ export function timelineKindsDescription(): string {
137
+ validateKindCoverage(KIND_GROUPS, EVENT_KINDS);
138
+ const clauses = KIND_GROUPS.map(
139
+ (g) => `${g.kinds.map((k) => `\`${k}\``).join("/")} — ${g.narrated}`,
140
+ );
141
+ return "Filter by event kind. " + clauses.join("; ") + ".";
142
+ }
package/src/index.ts CHANGED
@@ -24,7 +24,17 @@ import { existsSync, mkdirSync, statSync } from "node:fs";
24
24
  import { spawnSync } from "node:child_process";
25
25
  import { join, resolve } from "node:path";
26
26
  import { pathToFileURL } from "node:url";
27
- import { buildTrace, describeBudget, num, resolveProfile, str, type Finding } from "./trace.js";
27
+ import {
28
+ alsoInWindowOf,
29
+ alsoInWindowSentence,
30
+ buildTrace,
31
+ describeBudget,
32
+ num,
33
+ resolveProfile,
34
+ str,
35
+ type Finding,
36
+ } from "./trace.js";
37
+ import { timelineKindsDescription } from "./eventKinds.js";
28
38
  import {
29
39
  UNKNOWN_DEVICE_ID,
30
40
  clippedMsOf,
@@ -43,6 +53,12 @@ const pkg = JSON.parse(readFileSync(new URL("../package.json", import.meta.url),
43
53
  const HOST = process.env.PORTHOLE_HOST ?? "127.0.0.1";
44
54
  const PORT = Number(process.env.PORTHOLE_PORT ?? 8677);
45
55
  const UI_PORT = Number(process.env.PORTHOLE_UI_PORT ?? 8678);
56
+ /**
57
+ * GRA-197: the plugin's own knowledge of which app this server is for, when
58
+ * it wrote one — absent (not empty) when it did not, which is what tells
59
+ * `DeviceClient` to skip the check entirely rather than compare against "".
60
+ */
61
+ const APPLICATION_ID = process.env.PORTHOLE_APPLICATION_ID || undefined;
46
62
 
47
63
  /**
48
64
  * GRA-89: how much longer than the plan's own recording duration
@@ -215,7 +231,9 @@ export function createPortholeServer(options: PortholeServerOptions = {}): Porth
215
231
  // persistence; a test that injects its own `options.device` (the harness
216
232
  // in `testing/harness.ts`, or a hand-built fake) is unaffected — this
217
233
  // branch only runs when nothing was injected.
218
- const device = options.device ?? new DeviceClient(HOST, PORT, sessionsRootPath(resolveProjectRoot().directory));
234
+ const device =
235
+ options.device ??
236
+ new DeviceClient(HOST, PORT, sessionsRootPath(resolveProjectRoot().directory), APPLICATION_ID);
219
237
  const timeline = options.timeline ?? new TimelineServer(device, UI_PORT);
220
238
  const adbEnv = options.adbEnv;
221
239
  const adbBinary = options.adbBinary;
@@ -867,7 +885,16 @@ export function createPortholeServer(options: PortholeServerOptions = {}): Porth
867
885
  const firstEver = pendingFirstEverNote;
868
886
  pendingFirstEverNote = null;
869
887
  const narrated = firstEver ? `${firstEver}${summary}` : summary;
870
- const withBanner = banner ? `${banner}\n${narrated}` : narrated;
888
+ // GRA-197: "warn loudly, do not refuse" means every successful result,
889
+ // from every tool, leads with the package mismatch while one stands —
890
+ // here, in the one place all of them pass through, so no tool can
891
+ // forget it (the same reason the GRA-55 banner lives here and not in
892
+ // each handler). A summary that already *is* the mismatch text —
893
+ // porthole_status's, and findings' empty-ring branch — is left alone
894
+ // rather than said twice.
895
+ const mismatch = device.packageMismatch;
896
+ const led = mismatch && !summary.startsWith(mismatch) ? `⚠ ${mismatch}\n${narrated}` : narrated;
897
+ const withBanner = banner ? `${banner}\n${led}` : led;
871
898
  const withSinceLast =
872
899
  payload !== null && typeof payload === "object" && !Array.isArray(payload)
873
900
  ? { ...(payload as Record<string, unknown>), sinceLast }
@@ -1028,6 +1055,9 @@ export function createPortholeServer(options: PortholeServerOptions = {}): Porth
1028
1055
  // reading structured data (not just the text) can branch on it
1029
1056
  // without string-matching `summary`.
1030
1057
  protocolMismatch: device.protocolMismatch,
1058
+ // GRA-197: same shape, beside it — null unless PORTHOLE_APPLICATION_ID
1059
+ // was configured and disagrees with the connected hello.
1060
+ packageMismatch: device.packageMismatch,
1031
1061
  sdkDir: sdkDir.directory,
1032
1062
  sdkDirSource: sdkDir.source,
1033
1063
  projectRoot: projectRoot.directory,
@@ -1036,17 +1066,21 @@ export function createPortholeServer(options: PortholeServerOptions = {}): Porth
1036
1066
  exits,
1037
1067
  exitTrace: exitTraceResult,
1038
1068
  };
1039
- // GRA-96: a protocol mismatch takes priority over the normal "here is
1069
+ // GRA-96/GRA-197: a mismatch takes priority over the normal "here is
1040
1070
  // what's connected" sentence — hello did land and the socket is fine,
1041
- // but the one thing worth saying is that the two sides disagree on the
1042
- // wire format, not the collector list a mismatched build may not even
1043
- // be able to report honestly. This is what turns AC1's "specific,
1044
- // actionable message... not a generic failure" into the actual summary
1045
- // text an agent reads, rather than a field it has to know to check.
1071
+ // but the one thing worth saying is that something disagrees, not the
1072
+ // collector list a mismatched build may not even be able to report
1073
+ // honestly. packageMismatch leads: talking to the wrong app entirely
1074
+ // is the more fundamental problem, and its protocol is not this
1075
+ // server's concern until it is talking to the right one. This is what
1076
+ // turns AC1's "specific, actionable message... not a generic failure"
1077
+ // into the actual summary text an agent reads, rather than a field it
1078
+ // has to know to check.
1046
1079
  const summary =
1047
1080
  notice +
1048
1081
  deathNotice +
1049
1082
  (pending ??
1083
+ device.packageMismatch ??
1050
1084
  device.protocolMismatch ??
1051
1085
  `Connected to ${device.hello!.packageName} on ${device.hello!.device} ` +
1052
1086
  `(API ${device.hello!.sdkInt}). Collectors: ${device.hello!.collectors.join(", ")}.`);
@@ -1075,7 +1109,13 @@ export function createPortholeServer(options: PortholeServerOptions = {}): Porth
1075
1109
  "there being nothing there.\n\n" +
1076
1110
  "An empty list means nothing crossed a threshold in this window. It does not mean the app " +
1077
1111
  "is fast, and it does not mean the window contained the problem — check `window` against " +
1078
- "the moment you care about before concluding anything from silence.",
1112
+ "the moment you care about before concluding anything from silence.\n\n" +
1113
+ "`alsoInWindow` (present only when there is something to say) is an inventory, not a second " +
1114
+ "opinion: process exits, device events, memory samples, GC and memory-trim signals that " +
1115
+ "were in the window whether or not they crossed a threshold worth a finding — an exit " +
1116
+ "already covered by a finding above still appears here too, because a finding is a " +
1117
+ "judgement and this is a count. Absent means genuinely nothing to add, not that this tool " +
1118
+ "declined to look.",
1079
1119
  inputSchema: windowShape,
1080
1120
  annotations: { readOnlyHint: true },
1081
1121
  },
@@ -1118,6 +1158,13 @@ export function createPortholeServer(options: PortholeServerOptions = {}): Porth
1118
1158
  if (pending !== null) {
1119
1159
  return ok(notice + pending, { window: null, findings: [], connected, exitedProcess });
1120
1160
  }
1161
+ // GRA-197: the same "leads with it" rule porthole_status's summary
1162
+ // follows, on an otherwise unrelated tool — a mismatched app is worth
1163
+ // saying here too, not only from porthole_status, since this is
1164
+ // often the first tool an agent calls.
1165
+ if (device.packageMismatch) {
1166
+ return ok(notice + device.packageMismatch, { window: null, findings: [], connected, exitedProcess });
1167
+ }
1121
1168
  const summary = `Connected to ${device.hello!.packageName}, nothing buffered yet. Ask again in a moment.`;
1122
1169
  return ok(notice + summary, { window: null, findings: [], connected, exitedProcess });
1123
1170
  }
@@ -1234,6 +1281,13 @@ export function createPortholeServer(options: PortholeServerOptions = {}): Porth
1234
1281
 
1235
1282
  const findings = trace.findings.map(withFollowUp);
1236
1283
 
1284
+ // GRA-200: built from the same windowed `events` `trace` itself came
1285
+ // from, so this can never name a different window than the findings
1286
+ // beside it. See alsoInWindowOf's own comment in trace.ts for why an
1287
+ // exit that already produced a finding still appears here too.
1288
+ const also = alsoInWindowOf(events);
1289
+ const alsoSentence = alsoInWindowSentence(also);
1290
+
1237
1291
  // GRA-55: classified against whatever the *previous* findings call
1238
1292
  // left in the watermark, before this call's own digest overwrites it
1239
1293
  // — order matters here, `recordDigest` below must come after reading
@@ -1270,6 +1324,13 @@ export function createPortholeServer(options: PortholeServerOptions = {}): Porth
1270
1324
  findings: classified.findings,
1271
1325
  connected,
1272
1326
  exitedProcess,
1327
+ // GRA-200: absent, not `{}` or all-undefined, when there is nothing
1328
+ // to list — see alsoInWindowOf's own comment for why this is what
1329
+ // keeps the common case's payload byte-identical to before this
1330
+ // ticket. The spread (not `alsoInWindow: also`) is what actually
1331
+ // omits the key when `also` is `undefined`, rather than shipping a
1332
+ // key whose value happens to be `undefined`.
1333
+ ...(also ? { alsoInWindow: also } : {}),
1273
1334
  };
1274
1335
 
1275
1336
  const shortfall = clipped.start + clipped.end;
@@ -1287,7 +1348,8 @@ export function createPortholeServer(options: PortholeServerOptions = {}): Porth
1287
1348
  "it is a question the buffer cannot answer."
1288
1349
  : `Nothing crossed a threshold in the ${Math.round(span.ms / 1000)}s examined ` +
1289
1350
  `(${events.length} events). That is not the same as the app being fast.${missing}`) +
1290
- classificationNote,
1351
+ classificationNote +
1352
+ (alsoSentence ? ` ${alsoSentence}` : ""),
1291
1353
  payload,
1292
1354
  );
1293
1355
  }
@@ -1304,7 +1366,8 @@ export function createPortholeServer(options: PortholeServerOptions = {}): Porth
1304
1366
  return ok(
1305
1367
  notice +
1306
1368
  `${findings.length} finding(s) over ${Math.round(span.ms / 1000)}s (${tally}). ` +
1307
- `Worst: ${worst.title} [${worst.confidence}].${missing}${classificationNote}`,
1369
+ `Worst: ${worst.title} [${worst.confidence}].${missing}${classificationNote}` +
1370
+ (alsoSentence ? ` ${alsoSentence}` : ""),
1308
1371
  payload,
1309
1372
  );
1310
1373
  },
@@ -2376,13 +2439,7 @@ export function createPortholeServer(options: PortholeServerOptions = {}): Porth
2376
2439
  "what the app was doing while a call was open.",
2377
2440
  inputSchema: {
2378
2441
  ...windowShape,
2379
- kinds: z
2380
- .array(z.string())
2381
- .optional()
2382
- .describe(
2383
- "Filter by event name: recompose, state_write, frame, nav, http_start, http_end, " +
2384
- "db_start, db_end, log.",
2385
- ),
2442
+ kinds: z.array(z.string()).optional().describe(timelineKindsDescription()),
2386
2443
  limit: z
2387
2444
  .number()
2388
2445
  .int()
package/src/moment.ts CHANGED
@@ -1,6 +1,7 @@
1
1
  // Copyright 2026 Gravity Labs
2
2
  // SPDX-License-Identifier: Apache-2.0
3
3
  import type { DeviceEvent } from "./device.js";
4
+ import { alsoInWindowOf, alsoInWindowSentence, type AlsoInWindow } from "./trace.js";
4
5
 
5
6
  /**
6
7
  * What the app was doing at one moment.
@@ -48,6 +49,15 @@ export interface Moment {
48
49
  stalls: Array<{ durationMs: number; top: string; at: number }>;
49
50
  frames: { missed: number; worstMs: number };
50
51
  logs: Array<{ level: string; tag: string; message: string; at: number }>;
52
+ /**
53
+ * GRA-200: the same inventory `findings`' payload carries, scoped to this
54
+ * moment's own `window` rather than to whatever span `findings` was asked
55
+ * about — so a process exit that lands inside the few seconds either side
56
+ * of `at` is visible here even when nobody has called `findings` for this
57
+ * window at all. Absent, not empty, when there is nothing to add — see
58
+ * `alsoInWindowOf`'s own comment in trace.ts.
59
+ */
60
+ alsoInWindow?: AlsoInWindow;
51
61
  }
52
62
 
53
63
  /**
@@ -232,6 +242,12 @@ export function momentOf(events: DeviceEvent[], at: number, spreadMs = 2_000): M
232
242
 
233
243
  const frames = events.filter((e) => e.event === "frame" && within(e));
234
244
 
245
+ // GRA-200: scoped to this moment's own window, not the whole buffer — the
246
+ // same function `findings` calls, on a different slice of the same
247
+ // `events`, which is what keeps the two tools' wording identical for the
248
+ // same underlying fact instead of two hand-written descriptions of it.
249
+ const alsoInWindow = alsoInWindowOf(events.filter(within));
250
+
235
251
  return {
236
252
  at,
237
253
  window: { from, to },
@@ -268,6 +284,7 @@ export function momentOf(events: DeviceEvent[], at: number, spreadMs = 2_000): M
268
284
  message: str(e.data.message).slice(0, 300),
269
285
  at: e.t,
270
286
  })),
287
+ ...(alsoInWindow ? { alsoInWindow } : {}),
271
288
  };
272
289
  }
273
290
 
@@ -302,5 +319,12 @@ export function describe(moment: Moment): string {
302
319
  parts.push(`State written just before: ${keys.join(", ")}.`);
303
320
  }
304
321
 
322
+ // GRA-200: the same sentence findings' own summary appends for the same
323
+ // underlying fact (see alsoInWindowOf/alsoInWindowSentence in trace.ts) —
324
+ // most often an exit that falls inside this moment's window, which
325
+ // otherwise had no way to surface here at all.
326
+ const alsoSentence = alsoInWindowSentence(moment.alsoInWindow);
327
+ if (alsoSentence) parts.push(alsoSentence);
328
+
305
329
  return parts.join(" ");
306
330
  }
package/src/timeline.ts CHANGED
@@ -309,7 +309,11 @@ export class TimelineServer {
309
309
  this.startedAt = startedAt;
310
310
  this.events = [];
311
311
  }
312
- this.broadcast({ type: "hello", hello });
312
+ // GRA-197: read synchronously, same call stack as the "hello" emit
313
+ // itself (see device.ts's own comment on packageMismatch) — this
314
+ // listener runs before anything else can observe a later hello, so
315
+ // there is no staleness window to worry about here either.
316
+ this.broadcast({ type: "hello", hello, packageMismatch: this.device.packageMismatch });
313
317
  void this.backfill();
314
318
  });
315
319
  }
@@ -936,6 +940,11 @@ export class TimelineServer {
936
940
  type: "init",
937
941
  state: this.device.state,
938
942
  hello: this.device.hello,
943
+ // GRA-197: so a tab opened after the mismatch was established
944
+ // (not only one open live through the hello that caused it) still
945
+ // sees it — the same reason `state`/`hello` themselves are sent
946
+ // here rather than left for the client to infer from silence.
947
+ packageMismatch: this.device.packageMismatch,
939
948
  events: this.events,
940
949
  }),
941
950
  );