@burdenoff/mcp-libs 2026.719.2 → 2026.720.1
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.
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/modules/mybodyshield/operations.ts","../../../src/modules/mybodyshield/tools/shared.ts","../../../src/modules/mybodyshield/tools/programs.ts","../../../src/modules/mybodyshield/tools/workouts.ts","../../../src/modules/mybodyshield/tools/sessions.ts","../../../src/modules/mybodyshield/tools/nutrition.ts","../../../src/modules/mybodyshield/tools/meals.ts","../../../src/modules/mybodyshield/tools/goals.ts","../../../src/modules/mybodyshield/tools/metrics.ts","../../../src/modules/mybodyshield/tools/recovery.ts","../../../src/modules/mybodyshield/tools/coaching.ts","../../../src/modules/mybodyshield/tools/health.ts","../../../src/modules/mybodyshield/resources.ts","../../../src/modules/mybodyshield/prompts.ts","../../../src/modules/mybodyshield/index.ts"],"names":["z"],"mappings":";;;;AA2BO,IAAM,gBAAA,GAAmB;AAAA;AAAA,CAAA;AAIzB,IAAM,eAAA,GAAkB;AAAA;AAAA;AAAA,CAAA;AAKxB,IAAM,cAAA,GAAiB;AAAA;AAAA;AAAA,CAAA;AAKvB,IAAM,cAAA,GAAiB;AAAA;AAAA;AAAA,CAAA;AAKvB,IAAM,kBAAA,GAAqB;AAAA;AAAA;AAAA,CAAA;AAK3B,IAAM,cAAA,GAAiB;AAAA;AAAA;AAAA,CAAA;AAKvB,IAAM,WAAA,GAAc;AAAA;AAAA;AAAA,CAAA;AAKpB,IAAM,qBAAA,GAAwB;AAAA;AAAA;AAAA,CAAA;AAK9B,IAAM,mBAAA,GAAsB;AAAA;AAAA;AAAA,CAAA;AAK5B,IAAM,WAAA,GAAc;AAAA;AAAA;AAAA,CAAA;AAKpB,IAAM,kBAAA,GAAqB;AAAA;AAAA;AAAA,CAAA;AAK3B,IAAM,eAAA,GAAkB;AAAA;AAAA,CAAA;AAIxB,IAAM,eAAA,GAAkB;AAAA;AAAA;AAAA,CAAA;AASxB,IAAM,WAAA,GAAc;AAAA;AAAA;AAAA,MAAA,EAGnB,cAAc;AAAA;AAAA,QAAA,EAEZ,cAAc;AAAA,oBAAA,EACF,eAAe,CAAA;AAAA;AAAA;AAAA;AAAA,CAAA;AAM9B,IAAM,aAAA,GAAgB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,cAAA,EAOb,cAAc,CAAA;AAAA,iBAAA,EACX,gBAAgB,CAAA;AAAA;AAAA;AAAA,CAAA;AAK5B,IAAM,cAAA,GAAiB;AAAA;AAAA,sCAAA,EAEU,cAAc,CAAA;AAAA;AAAA,CAAA;AAI/C,IAAM,cAAA,GAAiB;AAAA;AAAA,+CAAA,EAEmB,cAAc,CAAA;AAAA;AAAA,CAAA;AAIxD,IAAM,kBAAA,GAAqB;AAAA;AAAA,qDAAA,EAEqB,cAAc,CAAA;AAAA;AAAA,CAAA;AAI9D,IAAM,eAAA,GAAkB;AAAA;AAAA;AAAA;AAAA,CAAA;AAUxB,IAAM,qBAAA,GAAwB;AAAA;AAAA;AAAA,MAAA,EAG7B,cAAc;AAAA,kBAAA,EACF,eAAe,CAAA;AAAA;AAAA;AAAA,CAAA;AAK5B,IAAM,WAAA,GAAc;AAAA;AAAA,mCAAA,EAEU,cAAc,CAAA;AAAA;AAAA,CAAA;AAI5C,IAAM,YAAA,GAAe;AAAA;AAAA,oCAAA,EAEU,eAAe,CAAA;AAAA;AAAA,CAAA;AAQ9C,IAAM,WAAA,GAAc;AAAA;AAAA;AAAA,MAAA,EAGnB,cAAc;AAAA,aAAA,EACP,kBAAkB,CAAA;AAAA;AAAA;AAAA,CAAA;AAK1B,IAAM,aAAA,GAAgB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,QAAA,EAQnB,cAAc;AAAA,eAAA,EACP,kBAAkB,CAAA;AAAA;AAAA,iBAAA,EAEhB,gBAAgB,CAAA;AAAA;AAAA;AAAA,CAAA;AAK5B,IAAM,aAAA,GAAgB;AAAA;AAAA;AAAA,MAAA,EAGrB,cAAc;AAAA,aAAA,EACP,kBAAkB,CAAA;AAAA;AAAA;AAAA,CAAA;AAK1B,IAAM,gBAAA,GAAmB;AAAA;AAAA;AAAA,MAAA,EAGxB,cAAc;AAAA,aAAA,EACP,kBAAkB,CAAA;AAAA;AAAA;AAAA,CAAA;AAK1B,IAAM,OAAA,GAAU;AAAA;AAAA,+BAAA,EAEU,kBAAkB,CAAA;AAAA;AAAA,CAAA;AAQ5C,IAAM,kBAAA,GAAqB;AAAA;AAAA;AAAA,MAAA,EAG1B,qBAAqB;AAAA,cAAA,EACb,WAAW,CAAA;AAAA;AAAA;AAAA,CAAA;AAKpB,IAAM,qBAAA,GAAwB;AAAA;AAAA;AAAA,MAAA,EAG7B,qBAAqB;AAAA,cAAA,EACb,WAAW,CAAA;AAAA;AAAA;AAAA,CAAA;AAKpB,IAAM,qBAAA,GAAwB;AAAA;AAAA,4CAAA,EAES,qBAAqB,CAAA;AAAA;AAAA,CAAA;AAI5D,IAAM,qBAAA,GAAwB;AAAA;AAAA;AAAA;AAAA;AAAA,qDAAA,EAKkB,qBAAqB,CAAA;AAAA;AAAA,CAAA;AAIrE,IAAM,uBAAA,GAA0B;AAAA;AAAA,wCAAA,EAEG,qBAAqB,CAAA;AAAA;AAAA,CAAA;AAIxD,IAAM,YAAA,GAAe;AAAA;AAAA,uDAAA,EAE6B,mBAAmB,CAAA;AAAA;AAAA,CAAA;AAQrE,IAAM,UAAA,GAAa;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,cAAA,EAOV,WAAW,CAAA;AAAA,iBAAA,EACR,gBAAgB,CAAA;AAAA;AAAA;AAAA,CAAA;AAK5B,IAAM,QAAA,GAAW;AAAA;AAAA,gCAAA,EAEU,WAAW,CAAA;AAAA;AAAA,CAAA;AAItC,IAAM,WAAA,GAAc;AAAA;AAAA;AAAA;AAAA,CAAA;AAUpB,IAAM,QAAA,GAAW;AAAA;AAAA,uBAAA,EAEC,WAAW,CAAA;AAAA;AAAA,CAAA;AAI7B,IAAM,UAAA,GAAa;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,cAAA,EAOV,WAAW,CAAA;AAAA,iBAAA,EACR,gBAAgB,CAAA;AAAA;AAAA;AAAA,CAAA;AAK5B,IAAM,WAAA,GAAc;AAAA;AAAA,mCAAA,EAEU,WAAW,CAAA;AAAA;AAAA,CAAA;AAIzC,IAAM,WAAA,GAAc;AAAA;AAAA,4CAAA,EAEmB,WAAW,CAAA;AAAA;AAAA,CAAA;AAIlD,IAAM,YAAA,GAAe;AAAA;AAAA,8BAAA,EAEI,WAAW,CAAA;AAAA;AAAA,CAAA;AAQpC,IAAM,iBAAA,GAAoB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,cAAA,EAOjB,kBAAkB,CAAA;AAAA,iBAAA,EACf,gBAAgB,CAAA;AAAA;AAAA;AAAA,CAAA;AAK5B,IAAM,kBAAA,GAAqB;AAAA;AAAA,yCAAA,EAES,kBAAkB,CAAA;AAAA;AAAA,CAAA;AAQtD,IAAM,kBAAA,GAAqB;AAAA;AAAA,gEAAA,EAEgC,eAAe,CAAA;AAAA;AAAA,CAAA;AAI1E,IAAM,YAAA,GAAe;AAAA;AAAA,oCAAA,EAEU,eAAe,CAAA;AAAA;AAAA,CAAA;AAQ9C,IAAM,aAAA,GAAgB;AAAA;AAAA,4DAAA,EAEiC,eAAe,CAAA;AAAA;AAAA,CAAA;AAItE,IAAM,eAAA,GAAkB;AAAA;AAAA,uCAAA,EAEU,eAAe,CAAA;AAAA;AAAA,CAAA;AAIjD,IAAM,mBAAA,GAAsB;AAAA;AAAA,sDAAA,EAEqB,eAAe,CAAA;AAAA;AAAA,CAAA;AAQhE,IAAM,MAAA,GAAS;AAAA;AAAA;AAAA;AAAA,CAAA;AC3Yf,IAAM,YAAA,GAAe,CAAA,CACzB,IAAA,CAAK,CAAC,WAAA,EAAa,iBAAA,EAAmB,UAAA,EAAY,aAAA,EAAe,UAAA,EAAY,aAAa,CAAC,CAAA,CAC3F,SAAS,4CAA4C,CAAA;AAEjD,IAAM,cAAA,GAAiB,CAAA,CAC3B,IAAA,CAAK,CAAC,WAAA,EAAa,UAAA,EAAY,QAAA,EAAU,QAAQ,CAAC,CAAA,CAClD,QAAA,CAAS,4CAA4C,CAAA;AAEjD,IAAM,gBAAA,GAAmB,CAAA,CAC7B,IAAA,CAAK,CAAC,UAAA,EAAY,UAAA,EAAY,OAAA,EAAS,cAAc,CAAC,CAAA,CACtD,QAAA,CAAS,sDAAsD,CAAA;AAE3D,IAAM,gBAAA,GAAmB,CAAA,CAC7B,IAAA,CAAK,CAAC,OAAA,EAAS,QAAA,EAAU,aAAA,EAAe,MAAM,CAAC,CAAA,CAC/C,QAAA,CAAS,oDAAoD,CAAA;AAEzD,IAAM,iBAAA,GAAoB,CAAA,CAC9B,IAAA,CAAK,CAAC,QAAA,EAAU,UAAA,EAAY,WAAA,EAAa,OAAO,CAAC,CAAA,CACjD,QAAA,CAAS,2DAA2D,CAAA;AAEhE,IAAM,eAAA,GAAkB,CAAA,CAC5B,IAAA,CAAK,CAAC,QAAA,EAAU,MAAA,EAAQ,UAAA,EAAY,UAAA,EAAY,UAAA,EAAY,MAAM,CAAC,CAAA,CACnE,SAAS,oCAAoC,CAAA;AAEzC,IAAM,eAAA,GAAkB,CAAA,CAC5B,IAAA,CAAK,CAAC,QAAQ,MAAA,EAAQ,OAAA,EAAS,MAAA,EAAQ,WAAA,EAAa,MAAA,EAAQ,WAAW,CAAC,CAAA,CACxE,SAAS,2DAA2D,CAAA;AAEhE,IAAM,iBAAA,GAAoB,CAAA,CAC9B,IAAA,CAAK,CAAC,WAAA,EAAa,aAAA,EAAe,WAAA,EAAa,SAAS,CAAC,CAAA,CACzD,QAAA,CAAS,uDAAuD,CAAA;AAE5D,IAAM,YAAA,GAAe,CAAA,CACzB,IAAA,CAAK,CAAC,WAAA,EAAa,QAAA,EAAU,OAAA,EAAS,OAAO,CAAC,CAAA,CAC9C,QAAA,CAAS,+CAA+C,CAAA;AAEpD,IAAM,kBAAA,GAAqB,CAAA,CAC/B,IAAA,CAAK,CAAC,OAAO,UAAA,EAAY,OAAA,EAAS,MAAA,EAAQ,oBAAA,EAAsB,SAAS,OAAA,EAAS,QAAQ,CAAC,CAAA,CAC3F,SAAS,8CAA8C,CAAA;AAEnD,IAAM,kBAAA,GAAqB,CAAA,CAC/B,IAAA,CAAK,CAAC,MAAA,EAAQ,WAAA,EAAa,OAAA,EAAS,UAAA,EAAY,QAAQ,CAAC,CAAA,CACzD,QAAA,CAAS,uDAAuD,CAAA;AAE5D,IAAM,kBAAA,GAAqB,CAAA,CAC/B,IAAA,CAAK,CAAC,QAAA,EAAU,OAAA,EAAS,QAAA,EAAU,SAAS,CAAC,CAAA,CAC7C,QAAA,CAAS,gEAA2D,CAAA;;;ACzChE,SAAS,oBAAA,CACd,MAAA,EACA,GAAA,EACA,KAAA,EACM;AACN,EAAA,MAAA,CAAO,YAAA;AAAA,IACL,KAAA,CAAM,WAAA,CAAY,GAAA,CAAI,WAAA,EAAa,cAAc,CAAC,CAAA;AAAA,IAClD;AAAA,MACE,KAAA,EAAO,sBAAA;AAAA,MACP,WAAA,EACE,kGAAA;AAAA,MACF,WAAA,EAAa,EAAE,EAAA,EAAIA,CAAAA,CAAE,QAAO,CAAE,QAAA,CAAS,YAAY,CAAA;AAAE,KACvD;AAAA,IACA,OAAO,EAAE,EAAA,EAAG,KAAM;AAChB,MAAA,IAAI;AACF,QAAA,MAAM,IAAA,GAAO,MAAM,GAAA,CAAI,GAAA,CAAI,UAAU,OAAA,CAE9B,WAAA,EAAa,EAAE,EAAA,EAAI,CAAA;AAC1B,QAAA,IAAI,CAAC,IAAA,CAAK,UAAA,SAAmB,WAAA,CAAY,CAAA,QAAA,EAAW,EAAE,CAAA,UAAA,CAAY,CAAA;AAClE,QAAA,OAAO,UAAA,CAAW,KAAK,UAAU,CAAA;AAAA,MACnC,SAAS,KAAA,EAAO;AACd,QAAA,GAAA,CAAI,MAAA,CAAO,MAAM,kCAAA,EAAoC,EAAE,OAAO,MAAA,CAAO,KAAK,GAAG,CAAA;AAC7E,QAAA,OAAO,WAAA;AAAA,UACL,0BAA0B,KAAA,YAAiB,KAAA,GAAQ,MAAM,OAAA,GAAU,MAAA,CAAO,KAAK,CAAC,CAAA;AAAA,SAClF;AAAA,MACF;AAAA,IACF;AAAA,GACF;AAEA,EAAA,MAAA,CAAO,YAAA;AAAA,IACL,KAAA,CAAM,WAAA,CAAY,GAAA,CAAI,WAAA,EAAa,eAAe,CAAC,CAAA;AAAA,IACnD;AAAA,MACE,KAAA,EAAO,wBAAA;AAAA,MACP,WAAA,EACE,0JAAA;AAAA,MACF,WAAA,EAAa;AAAA,QACX,UAAUA,CAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,4BAA4B,CAAA;AAAA,QACrE,MAAA,EAAQ,iBAAA,CAAkB,QAAA,EAAS,CAAE,SAAS,0BAA0B,CAAA;AAAA,QACxE,KAAA,EAAOA,EAAE,MAAA,EAAO,CAAE,KAAI,CAAE,QAAA,EAAS,CAAE,QAAA,CAAS,wBAAwB,CAAA;AAAA,QACpE,MAAA,EAAQA,EAAE,MAAA,EAAO,CAAE,KAAI,CAAE,QAAA,EAAS,CAAE,QAAA,CAAS,+BAA+B,CAAA;AAAA,QAC5E,QAAQA,CAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,0BAA0B;AAAA;AACnE,KACF;AAAA,IACA,OAAO,EAAE,QAAA,EAAU,QAAQ,KAAA,EAAO,MAAA,EAAQ,QAAO,KAAM;AACrD,MAAA,IAAI;AACF,QAAA,MAAM,OAAO,MAAM,GAAA,CAAI,GAAA,CAAI,SAAA,CAAU,QAE9B,aAAA,EAAe;AAAA,UACpB,QAAA;AAAA,UACA,MAAA;AAAA,UACA,UAAA,EAAY,EAAE,KAAA,EAAO,KAAA,IAAS,IAAI,MAAA,EAAQ,MAAA,IAAU,GAAG,MAAA;AAAO,SAC/D,CAAA;AACD,QAAA,OAAO,UAAA,CAAW,KAAK,eAAe,CAAA;AAAA,MACxC,SAAS,KAAA,EAAO;AACd,QAAA,GAAA,CAAI,MAAA,CAAO,MAAM,mCAAA,EAAqC,EAAE,OAAO,MAAA,CAAO,KAAK,GAAG,CAAA;AAC9E,QAAA,OAAO,WAAA;AAAA,UACL,4BAA4B,KAAA,YAAiB,KAAA,GAAQ,MAAM,OAAA,GAAU,MAAA,CAAO,KAAK,CAAC,CAAA;AAAA,SACpF;AAAA,MACF;AAAA,IACF;AAAA,GACF;AAEA,EAAA,MAAA,CAAO,YAAA;AAAA,IACL,KAAA,CAAM,WAAA,CAAY,GAAA,CAAI,WAAA,EAAa,iBAAiB,CAAC,CAAA;AAAA,IACrD;AAAA,MACE,KAAA,EAAO,yBAAA;AAAA,MACP,WAAA,EACE,6HAAA;AAAA,MACF,WAAA,EAAa;AAAA,QACX,IAAA,EAAMA,EAAE,MAAA,EAAO,CAAE,IAAI,CAAC,CAAA,CAAE,SAAS,cAAc,CAAA;AAAA,QAC/C,UAAUA,CAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,qCAAqC,CAAA;AAAA,QAC9E,SAASA,CAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,uCAAuC,CAAA;AAAA,QAC/E,aAAaA,CAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,qBAAqB,CAAA;AAAA,QACjE,QAAA,EAAU,YAAA,CAAa,QAAA,EAAS,CAAE,SAAS,wCAAwC,CAAA;AAAA,QACnF,KAAA,EAAO,gBAAA,CAAiB,QAAA,EAAS,CAAE,SAAS,yCAAyC,CAAA;AAAA,QACrF,KAAA,EAAO,gBAAA,CAAiB,QAAA,EAAS,CAAE,SAAS,qCAAqC,CAAA;AAAA,QACjF,WAAA,EAAaA,EAAE,MAAA,EAAO,CAAE,KAAI,CAAE,QAAA,EAAS,CAAE,QAAA,CAAS,wBAAwB,CAAA;AAAA,QAC1E,KAAA,EAAOA,EAAE,MAAA,EAAO,CAAE,KAAI,CAAE,QAAA,EAAS,CAAE,QAAA,CAAS,yBAAyB,CAAA;AAAA,QACrE,WAAWA,CAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,gCAAgC,CAAA;AAAA,QAC1E,SAASA,CAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,8BAA8B,CAAA;AAAA,QACtE,IAAA,EAAMA,CAAAA,CAAE,KAAA,CAAMA,CAAAA,CAAE,MAAA,EAAQ,CAAA,CAAE,QAAA,EAAS,CAAE,QAAA,CAAS,gBAAgB;AAAA;AAChE,KACF;AAAA,IACA,OAAO;AAAA,MACL,IAAA;AAAA,MACA,QAAA;AAAA,MACA,OAAA;AAAA,MACA,WAAA;AAAA,MACA,QAAA;AAAA,MACA,KAAA;AAAA,MACA,KAAA;AAAA,MACA,WAAA;AAAA,MACA,KAAA;AAAA,MACA,SAAA;AAAA,MACA,OAAA;AAAA,MACA;AAAA,KACF,KAAM;AACJ,MAAA,IAAI;AACF,QAAA,MAAM,KAAA,GAAiC,EAAE,IAAA,EAAK;AAC9C,QAAA,IAAI,QAAA,KAAa,KAAA,CAAA,EAAW,KAAA,CAAM,QAAA,GAAW,QAAA;AAC7C,QAAA,IAAI,OAAA,KAAY,KAAA,CAAA,EAAW,KAAA,CAAM,OAAA,GAAU,OAAA;AAC3C,QAAA,IAAI,WAAA,KAAgB,KAAA,CAAA,EAAW,KAAA,CAAM,WAAA,GAAc,WAAA;AACnD,QAAA,IAAI,QAAA,KAAa,KAAA,CAAA,EAAW,KAAA,CAAM,QAAA,GAAW,QAAA;AAC7C,QAAA,IAAI,KAAA,KAAU,KAAA,CAAA,EAAW,KAAA,CAAM,KAAA,GAAQ,KAAA;AACvC,QAAA,IAAI,KAAA,KAAU,KAAA,CAAA,EAAW,KAAA,CAAM,KAAA,GAAQ,KAAA;AACvC,QAAA,IAAI,WAAA,KAAgB,KAAA,CAAA,EAAW,KAAA,CAAM,WAAA,GAAc,WAAA;AACnD,QAAA,IAAI,KAAA,KAAU,KAAA,CAAA,EAAW,KAAA,CAAM,KAAA,GAAQ,KAAA;AACvC,QAAA,IAAI,SAAA,KAAc,KAAA,CAAA,EAAW,KAAA,CAAM,SAAA,GAAY,SAAA;AAC/C,QAAA,IAAI,OAAA,KAAY,KAAA,CAAA,EAAW,KAAA,CAAM,OAAA,GAAU,OAAA;AAC3C,QAAA,IAAI,IAAA,KAAS,KAAA,CAAA,EAAW,KAAA,CAAM,IAAA,GAAO,IAAA;AAErC,QAAA,MAAM,IAAA,GAAO,MAAM,GAAA,CAAI,GAAA,CAAI,UAAU,OAAA,CAE9B,cAAA,EAAgB,EAAE,KAAA,EAAO,CAAA;AAChC,QAAA,OAAO,UAAA,CAAW,KAAK,gBAAgB,CAAA;AAAA,MACzC,SAAS,KAAA,EAAO;AACd,QAAA,GAAA,CAAI,MAAA,CAAO,MAAM,qCAAA,EAAuC,EAAE,OAAO,MAAA,CAAO,KAAK,GAAG,CAAA;AAChF,QAAA,OAAO,WAAA;AAAA,UACL,6BAA6B,KAAA,YAAiB,KAAA,GAAQ,MAAM,OAAA,GAAU,MAAA,CAAO,KAAK,CAAC,CAAA;AAAA,SACrF;AAAA,MACF;AAAA,IACF;AAAA,GACF;AAEA,EAAA,MAAA,CAAO,YAAA;AAAA,IACL,KAAA,CAAM,WAAA,CAAY,GAAA,CAAI,WAAA,EAAa,iBAAiB,CAAC,CAAA;AAAA,IACrD;AAAA,MACE,KAAA,EAAO,yBAAA;AAAA,MACP,WAAA,EACE,0HAAA;AAAA,MACF,WAAA,EAAa;AAAA,QACX,EAAA,EAAIA,CAAAA,CAAE,MAAA,EAAO,CAAE,SAAS,YAAY,CAAA;AAAA,QACpC,MAAMA,CAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,cAAc,CAAA;AAAA,QACnD,aAAaA,CAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,qBAAqB,CAAA;AAAA,QACjE,SAASA,CAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,yBAAyB,CAAA;AAAA,QACjE,QAAA,EAAU,YAAA,CAAa,QAAA,EAAS,CAAE,SAAS,sBAAsB,CAAA;AAAA,QACjE,KAAA,EAAO,gBAAA,CAAiB,QAAA,EAAS,CAAE,SAAS,uBAAuB,CAAA;AAAA,QACnE,KAAA,EAAO,gBAAA,CAAiB,QAAA,EAAS,CAAE,SAAS,6BAA6B,CAAA;AAAA,QACzE,WAAA,EAAaA,EAAE,MAAA,EAAO,CAAE,KAAI,CAAE,QAAA,EAAS,CAAE,QAAA,CAAS,gCAAgC,CAAA;AAAA,QAClF,KAAA,EAAOA,EAAE,MAAA,EAAO,CAAE,KAAI,CAAE,QAAA,EAAS,CAAE,QAAA,CAAS,iCAAiC,CAAA;AAAA,QAC7E,WAAWA,CAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,wCAAwC,CAAA;AAAA,QAClF,SAASA,CAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,sCAAsC,CAAA;AAAA,QAC9E,IAAA,EAAMA,CAAAA,CAAE,KAAA,CAAMA,CAAAA,CAAE,MAAA,EAAQ,CAAA,CAAE,QAAA,EAAS,CAAE,QAAA,CAAS,cAAc;AAAA;AAC9D,KACF;AAAA,IACA,OAAO;AAAA,MACL,EAAA;AAAA,MACA,IAAA;AAAA,MACA,WAAA;AAAA,MACA,OAAA;AAAA,MACA,QAAA;AAAA,MACA,KAAA;AAAA,MACA,KAAA;AAAA,MACA,WAAA;AAAA,MACA,KAAA;AAAA,MACA,SAAA;AAAA,MACA,OAAA;AAAA,MACA;AAAA,KACF,KAAM;AACJ,MAAA,IAAI;AACF,QAAA,MAAM,QAAiC,EAAC;AACxC,QAAA,IAAI,IAAA,KAAS,KAAA,CAAA,EAAW,KAAA,CAAM,IAAA,GAAO,IAAA;AACrC,QAAA,IAAI,WAAA,KAAgB,KAAA,CAAA,EAAW,KAAA,CAAM,WAAA,GAAc,WAAA;AACnD,QAAA,IAAI,OAAA,KAAY,KAAA,CAAA,EAAW,KAAA,CAAM,OAAA,GAAU,OAAA;AAC3C,QAAA,IAAI,QAAA,KAAa,KAAA,CAAA,EAAW,KAAA,CAAM,QAAA,GAAW,QAAA;AAC7C,QAAA,IAAI,KAAA,KAAU,KAAA,CAAA,EAAW,KAAA,CAAM,KAAA,GAAQ,KAAA;AACvC,QAAA,IAAI,KAAA,KAAU,KAAA,CAAA,EAAW,KAAA,CAAM,KAAA,GAAQ,KAAA;AACvC,QAAA,IAAI,WAAA,KAAgB,KAAA,CAAA,EAAW,KAAA,CAAM,WAAA,GAAc,WAAA;AACnD,QAAA,IAAI,KAAA,KAAU,KAAA,CAAA,EAAW,KAAA,CAAM,KAAA,GAAQ,KAAA;AACvC,QAAA,IAAI,SAAA,KAAc,KAAA,CAAA,EAAW,KAAA,CAAM,SAAA,GAAY,SAAA;AAC/C,QAAA,IAAI,OAAA,KAAY,KAAA,CAAA,EAAW,KAAA,CAAM,OAAA,GAAU,OAAA;AAC3C,QAAA,IAAI,IAAA,KAAS,KAAA,CAAA,EAAW,KAAA,CAAM,IAAA,GAAO,IAAA;AAErC,QAAA,IAAI,MAAA,CAAO,IAAA,CAAK,KAAK,CAAA,CAAE,WAAW,CAAA,EAAG;AACnC,UAAA,OAAO,WAAA;AAAA,YACL;AAAA,WACF;AAAA,QACF;AAEA,QAAA,MAAM,IAAA,GAAO,MAAM,GAAA,CAAI,GAAA,CAAI,SAAA,CAAU,QAE9B,cAAA,EAAgB,EAAE,EAAA,EAAI,KAAA,EAAO,CAAA;AACpC,QAAA,OAAO,UAAA,CAAW,KAAK,gBAAgB,CAAA;AAAA,MACzC,SAAS,KAAA,EAAO;AACd,QAAA,GAAA,CAAI,MAAA,CAAO,MAAM,qCAAA,EAAuC,EAAE,OAAO,MAAA,CAAO,KAAK,GAAG,CAAA;AAChF,QAAA,OAAO,WAAA;AAAA,UACL,6BAA6B,KAAA,YAAiB,KAAA,GAAQ,MAAM,OAAA,GAAU,MAAA,CAAO,KAAK,CAAC,CAAA;AAAA,SACrF;AAAA,MACF;AAAA,IACF;AAAA,GACF;AAEA,EAAA,MAAA,CAAO,YAAA;AAAA,IACL,KAAA,CAAM,WAAA,CAAY,GAAA,CAAI,WAAA,EAAa,qBAAqB,CAAC,CAAA;AAAA,IACzD;AAAA,MACE,KAAA,EAAO,6BAAA;AAAA,MACP,WAAA,EACE,mHAAA;AAAA,MACF,WAAA,EAAa;AAAA,QACX,EAAA,EAAIA,CAAAA,CAAE,MAAA,EAAO,CAAE,SAAS,YAAY,CAAA;AAAA,QACpC,MAAA,EAAQ,iBAAA,CAAkB,QAAA,CAAS,yBAAyB;AAAA;AAC9D,KACF;AAAA,IACA,OAAO,EAAE,EAAA,EAAI,MAAA,EAAO,KAAM;AACxB,MAAA,IAAI;AACF,QAAA,MAAM,IAAA,GAAO,MAAM,GAAA,CAAI,GAAA,CAAI,SAAA,CAAU,QAE9B,kBAAA,EAAoB,EAAE,EAAA,EAAI,MAAA,EAAQ,CAAA;AACzC,QAAA,OAAO,UAAA,CAAW,KAAK,oBAAoB,CAAA;AAAA,MAC7C,SAAS,KAAA,EAAO;AACd,QAAA,GAAA,CAAI,MAAA,CAAO,MAAM,yCAAA,EAA2C,EAAE,OAAO,MAAA,CAAO,KAAK,GAAG,CAAA;AACpF,QAAA,OAAO,WAAA;AAAA,UACL,iCAAiC,KAAA,YAAiB,KAAA,GAAQ,MAAM,OAAA,GAAU,MAAA,CAAO,KAAK,CAAC,CAAA;AAAA,SACzF;AAAA,MACF;AAAA,IACF;AAAA,GACF;AAEA,EAAA,MAAA,CAAO,YAAA;AAAA,IACL,KAAA,CAAM,WAAA,CAAY,GAAA,CAAI,WAAA,EAAa,kBAAkB,CAAC,CAAA;AAAA,IACtD;AAAA,MACE,KAAA,EAAO,0BAAA;AAAA,MACP,WAAA,EAAa,4DAAA;AAAA,MACb,WAAA,EAAa,EAAE,EAAA,EAAIA,CAAAA,CAAE,QAAO,CAAE,QAAA,CAAS,YAAY,CAAA;AAAE,KACvD;AAAA,IACA,OAAO,EAAE,EAAA,EAAG,KAAM;AAChB,MAAA,IAAI;AACF,QAAA,MAAM,IAAA,GAAO,MAAM,GAAA,CAAI,GAAA,CAAI,SAAA,CAAU,OAAA;AAAA,UAC/B,eAAA;AAAA,UACJ,EAAE,EAAA;AAAG,SACP;AACA,QAAA,OAAO,UAAA,CAAW,EAAE,QAAA,EAAU,IAAA,CAAK,mBAAmB,CAAA;AAAA,MACxD,SAAS,KAAA,EAAO;AACd,QAAA,GAAA,CAAI,MAAA,CAAO,MAAM,sCAAA,EAAwC,EAAE,OAAO,MAAA,CAAO,KAAK,GAAG,CAAA;AACjF,QAAA,OAAO,WAAA;AAAA,UACL,8BAA8B,KAAA,YAAiB,KAAA,GAAQ,MAAM,OAAA,GAAU,MAAA,CAAO,KAAK,CAAC,CAAA;AAAA,SACtF;AAAA,MACF;AAAA,IACF;AAAA,GACF;AACF;AChPO,SAAS,oBAAA,CACd,MAAA,EACA,GAAA,EACA,KAAA,EACM;AACN,EAAA,MAAA,CAAO,YAAA;AAAA,IACL,KAAA,CAAM,WAAA,CAAY,GAAA,CAAI,WAAA,EAAa,eAAe,CAAC,CAAA;AAAA,IACnD;AAAA,MACE,KAAA,EAAO,uBAAA;AAAA,MACP,WAAA,EAAa,4EAAA;AAAA,MACb,WAAA,EAAa,EAAE,SAAA,EAAWA,CAAAA,CAAE,QAAO,CAAE,QAAA,CAAS,YAAY,CAAA;AAAE,KAC9D;AAAA,IACA,OAAO,EAAE,SAAA,EAAU,KAAM;AACvB,MAAA,IAAI;AACF,QAAA,MAAM,IAAA,GAAO,MAAM,GAAA,CAAI,GAAA,CAAI,UAAU,OAAA,CAE9B,qBAAA,EAAuB,EAAE,SAAA,EAAW,CAAA;AAC3C,QAAA,OAAO,UAAA,CAAW,KAAK,kBAAkB,CAAA;AAAA,MAC3C,SAAS,KAAA,EAAO;AACd,QAAA,GAAA,CAAI,MAAA,CAAO,MAAM,mCAAA,EAAqC,EAAE,OAAO,MAAA,CAAO,KAAK,GAAG,CAAA;AAC9E,QAAA,OAAO,WAAA;AAAA,UACL,oCAAoC,KAAA,YAAiB,KAAA,GAAQ,MAAM,OAAA,GAAU,MAAA,CAAO,KAAK,CAAC,CAAA;AAAA,SAC5F;AAAA,MACF;AAAA,IACF;AAAA,GACF;AAEA,EAAA,MAAA,CAAO,YAAA;AAAA,IACL,KAAA,CAAM,WAAA,CAAY,GAAA,CAAI,WAAA,EAAa,cAAc,CAAC,CAAA;AAAA,IAClD;AAAA,MACE,KAAA,EAAO,aAAA;AAAA,MACP,WAAA,EACE,+FAAA;AAAA,MACF,WAAA,EAAa;AAAA,QACX,SAAA,EAAWA,CAAAA,CAAE,MAAA,EAAO,CAAE,SAAS,mBAAmB,CAAA;AAAA,QAClD,IAAA,EAAMA,EAAE,MAAA,EAAO,CAAE,IAAI,CAAC,CAAA,CAAE,SAAS,cAAc,CAAA;AAAA,QAC/C,aAAaA,CAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,qBAAqB,CAAA;AAAA,QACjE,IAAA,EAAM,eAAA,CAAgB,QAAA,EAAS,CAAE,SAAS,iCAAiC,CAAA;AAAA,QAC3E,SAAA,EAAWA,EAAE,MAAA,EAAO,CAAE,KAAI,CAAE,QAAA,EAAS,CAAE,QAAA,CAAS,mBAAmB,CAAA;AAAA,QACnE,UAAA,EAAYA,EAAE,MAAA,EAAO,CAAE,KAAI,CAAE,QAAA,EAAS,CAAE,QAAA,CAAS,qBAAqB,CAAA;AAAA,QACtE,WAAA,EAAaA,EAAE,MAAA,EAAO,CAAE,KAAI,CAAE,QAAA,EAAS,CAAE,QAAA,CAAS,6BAA6B,CAAA;AAAA,QAC/E,UAAA,EAAYA,EAAE,MAAA,EAAO,CAAE,KAAI,CAAE,QAAA,EAAS,CAAE,QAAA,CAAS,6BAA6B;AAAA;AAChF,KACF;AAAA,IACA,OAAO;AAAA,MACL,SAAA;AAAA,MACA,IAAA;AAAA,MACA,WAAA;AAAA,MACA,IAAA;AAAA,MACA,SAAA;AAAA,MACA,UAAA;AAAA,MACA,WAAA;AAAA,MACA;AAAA,KACF,KAAM;AACJ,MAAA,IAAI;AACF,QAAA,MAAM,KAAA,GAAiC,EAAE,SAAA,EAAW,IAAA,EAAK;AACzD,QAAA,IAAI,WAAA,KAAgB,KAAA,CAAA,EAAW,KAAA,CAAM,WAAA,GAAc,WAAA;AACnD,QAAA,IAAI,IAAA,KAAS,KAAA,CAAA,EAAW,KAAA,CAAM,IAAA,GAAO,IAAA;AACrC,QAAA,IAAI,SAAA,KAAc,KAAA,CAAA,EAAW,KAAA,CAAM,SAAA,GAAY,SAAA;AAC/C,QAAA,IAAI,UAAA,KAAe,KAAA,CAAA,EAAW,KAAA,CAAM,UAAA,GAAa,UAAA;AACjD,QAAA,IAAI,WAAA,KAAgB,KAAA,CAAA,EAAW,KAAA,CAAM,WAAA,GAAc,WAAA;AACnD,QAAA,IAAI,UAAA,KAAe,KAAA,CAAA,EAAW,KAAA,CAAM,UAAA,GAAa,UAAA;AAEjD,QAAA,MAAM,IAAA,GAAO,MAAM,GAAA,CAAI,GAAA,CAAI,UAAU,OAAA,CAE9B,WAAA,EAAa,EAAE,KAAA,EAAO,CAAA;AAC7B,QAAA,OAAO,UAAA,CAAW,KAAK,aAAa,CAAA;AAAA,MACtC,SAAS,KAAA,EAAO;AACd,QAAA,GAAA,CAAI,MAAA,CAAO,MAAM,kCAAA,EAAoC,EAAE,OAAO,MAAA,CAAO,KAAK,GAAG,CAAA;AAC7E,QAAA,OAAO,WAAA;AAAA,UACL,0BAA0B,KAAA,YAAiB,KAAA,GAAQ,MAAM,OAAA,GAAU,MAAA,CAAO,KAAK,CAAC,CAAA;AAAA,SAClF;AAAA,MACF;AAAA,IACF;AAAA,GACF;AAEA,EAAA,MAAA,CAAO,YAAA;AAAA,IACL,KAAA,CAAM,WAAA,CAAY,GAAA,CAAI,WAAA,EAAa,eAAe,CAAC,CAAA;AAAA,IACnD;AAAA,MACE,KAAA,EAAO,cAAA;AAAA,MACP,WAAA,EACE,6KAAA;AAAA,MACF,WAAA,EAAa;AAAA,QACX,SAAA,EAAWA,CAAAA,CAAE,MAAA,EAAO,CAAE,SAAS,mBAAmB,CAAA;AAAA,QAClD,IAAA,EAAMA,EAAE,MAAA,EAAO,CAAE,IAAI,CAAC,CAAA,CAAE,SAAS,eAAe,CAAA;AAAA,QAChD,cAAcA,CAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,qBAAqB,CAAA;AAAA,QAClE,WAAA,EAAa,eAAA,CAAgB,QAAA,EAAS,CAAE,SAAS,yCAAyC,CAAA;AAAA,QAC1F,IAAA,EAAMA,EAAE,MAAA,EAAO,CAAE,KAAI,CAAE,QAAA,EAAS,CAAE,QAAA,CAAS,gBAAgB,CAAA;AAAA,QAC3D,IAAA,EAAMA,EAAE,MAAA,EAAO,CAAE,KAAI,CAAE,QAAA,EAAS,CAAE,QAAA,CAAS,cAAc,CAAA;AAAA,QACzD,WAAA,EAAaA,EAAE,MAAA,EAAO,CAAE,KAAI,CAAE,QAAA,EAAS,CAAE,QAAA,CAAS,6BAA6B,CAAA;AAAA,QAC/E,cAAcA,CAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,uBAAuB,CAAA;AAAA,QACpE,UAAA,EAAYA,EAAE,MAAA,EAAO,CAAE,KAAI,CAAE,QAAA,EAAS,CAAE,QAAA,CAAS,6BAA6B,CAAA;AAAA,QAC9E,YAAYA,CAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,6CAA6C;AAAA;AAC1F,KACF;AAAA,IACA,OAAO;AAAA,MACL,SAAA;AAAA,MACA,IAAA;AAAA,MACA,YAAA;AAAA,MACA,WAAA;AAAA,MACA,IAAA;AAAA,MACA,IAAA;AAAA,MACA,WAAA;AAAA,MACA,YAAA;AAAA,MACA,UAAA;AAAA,MACA;AAAA,KACF,KAAM;AACJ,MAAA,IAAI;AACF,QAAA,MAAM,KAAA,GAAiC,EAAE,SAAA,EAAW,IAAA,EAAK;AACzD,QAAA,IAAI,YAAA,KAAiB,KAAA,CAAA,EAAW,KAAA,CAAM,YAAA,GAAe,YAAA;AACrD,QAAA,IAAI,WAAA,KAAgB,KAAA,CAAA,EAAW,KAAA,CAAM,WAAA,GAAc,WAAA;AACnD,QAAA,IAAI,IAAA,KAAS,KAAA,CAAA,EAAW,KAAA,CAAM,IAAA,GAAO,IAAA;AACrC,QAAA,IAAI,IAAA,KAAS,KAAA,CAAA,EAAW,KAAA,CAAM,IAAA,GAAO,IAAA;AACrC,QAAA,IAAI,WAAA,KAAgB,KAAA,CAAA,EAAW,KAAA,CAAM,WAAA,GAAc,WAAA;AACnD,QAAA,IAAI,YAAA,KAAiB,KAAA,CAAA,EAAW,KAAA,CAAM,YAAA,GAAe,YAAA;AACrD,QAAA,IAAI,UAAA,KAAe,KAAA,CAAA,EAAW,KAAA,CAAM,UAAA,GAAa,UAAA;AACjD,QAAA,IAAI,UAAA,KAAe,KAAA,CAAA,EAAW,KAAA,CAAM,UAAA,GAAa,UAAA;AAEjD,QAAA,MAAM,IAAA,GAAO,MAAM,GAAA,CAAI,GAAA,CAAI,UAAU,OAAA,CAE9B,YAAA,EAAc,EAAE,KAAA,EAAO,CAAA;AAC9B,QAAA,OAAO,UAAA,CAAW,KAAK,cAAc,CAAA;AAAA,MACvC,SAAS,KAAA,EAAO;AACd,QAAA,GAAA,CAAI,MAAA,CAAO,MAAM,mCAAA,EAAqC,EAAE,OAAO,MAAA,CAAO,KAAK,GAAG,CAAA;AAC9E,QAAA,OAAO,WAAA;AAAA,UACL,2BAA2B,KAAA,YAAiB,KAAA,GAAQ,MAAM,OAAA,GAAU,MAAA,CAAO,KAAK,CAAC,CAAA;AAAA,SACnF;AAAA,MACF;AAAA,IACF;AAAA,GACF;AACF;AClIO,SAAS,oBAAA,CACd,MAAA,EACA,GAAA,EACA,KAAA,EACM;AACN,EAAA,MAAA,CAAO,YAAA;AAAA,IACL,KAAA,CAAM,WAAA,CAAY,GAAA,CAAI,WAAA,EAAa,cAAc,CAAC,CAAA;AAAA,IAClD;AAAA,MACE,KAAA,EAAO,qBAAA;AAAA,MACP,WAAA,EAAa,kEAAA;AAAA,MACb,WAAA,EAAa,EAAE,EAAA,EAAIA,CAAAA,CAAE,QAAO,CAAE,QAAA,CAAS,oBAAoB,CAAA;AAAE,KAC/D;AAAA,IACA,OAAO,EAAE,EAAA,EAAG,KAAM;AAChB,MAAA,IAAI;AACF,QAAA,MAAM,IAAA,GAAO,MAAM,GAAA,CAAI,GAAA,CAAI,UAAU,OAAA,CAE9B,WAAA,EAAa,EAAE,EAAA,EAAI,CAAA;AAC1B,QAAA,IAAI,CAAC,IAAA,CAAK,UAAA,SAAmB,WAAA,CAAY,CAAA,QAAA,EAAW,EAAE,CAAA,UAAA,CAAY,CAAA;AAClE,QAAA,OAAO,UAAA,CAAW,KAAK,UAAU,CAAA;AAAA,MACnC,SAAS,KAAA,EAAO;AACd,QAAA,GAAA,CAAI,MAAA,CAAO,MAAM,kCAAA,EAAoC,EAAE,OAAO,MAAA,CAAO,KAAK,GAAG,CAAA;AAC7E,QAAA,OAAO,WAAA;AAAA,UACL,0BAA0B,KAAA,YAAiB,KAAA,GAAQ,MAAM,OAAA,GAAU,MAAA,CAAO,KAAK,CAAC,CAAA;AAAA,SAClF;AAAA,MACF;AAAA,IACF;AAAA,GACF;AAEA,EAAA,MAAA,CAAO,YAAA;AAAA,IACL,KAAA,CAAM,WAAA,CAAY,GAAA,CAAI,WAAA,EAAa,eAAe,CAAC,CAAA;AAAA,IACnD;AAAA,MACE,KAAA,EAAO,uBAAA;AAAA,MACP,WAAA,EACE,gJAAA;AAAA,MACF,WAAA,EAAa;AAAA,QACX,WAAWA,CAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,sBAAsB,CAAA;AAAA,QAChE,MAAA,EAAQ,iBAAA,CAAkB,QAAA,EAAS,CAAE,SAAS,0BAA0B,CAAA;AAAA,QACxE,KAAA,EAAOA,EAAE,MAAA,EAAO,CAAE,KAAI,CAAE,QAAA,EAAS,CAAE,QAAA,CAAS,wBAAwB,CAAA;AAAA,QACpE,MAAA,EAAQA,EAAE,MAAA,EAAO,CAAE,KAAI,CAAE,QAAA,EAAS,CAAE,QAAA,CAAS,+BAA+B,CAAA;AAAA,QAC5E,QAAQA,CAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,0BAA0B;AAAA;AACnE,KACF;AAAA,IACA,OAAO,EAAE,SAAA,EAAW,QAAQ,KAAA,EAAO,MAAA,EAAQ,QAAO,KAAM;AACtD,MAAA,IAAI;AACF,QAAA,MAAM,OAAO,MAAM,GAAA,CAAI,GAAA,CAAI,SAAA,CAAU,QAE9B,aAAA,EAAe;AAAA,UACpB,SAAA;AAAA,UACA,MAAA;AAAA,UACA,UAAA,EAAY,EAAE,KAAA,EAAO,KAAA,IAAS,IAAI,MAAA,EAAQ,MAAA,IAAU,GAAG,MAAA;AAAO,SAC/D,CAAA;AACD,QAAA,OAAO,UAAA,CAAW,KAAK,eAAe,CAAA;AAAA,MACxC,SAAS,KAAA,EAAO;AACd,QAAA,GAAA,CAAI,MAAA,CAAO,MAAM,mCAAA,EAAqC,EAAE,OAAO,MAAA,CAAO,KAAK,GAAG,CAAA;AAC9E,QAAA,OAAO,WAAA;AAAA,UACL,4BAA4B,KAAA,YAAiB,KAAA,GAAQ,MAAM,OAAA,GAAU,MAAA,CAAO,KAAK,CAAC,CAAA;AAAA,SACpF;AAAA,MACF;AAAA,IACF;AAAA,GACF;AAEA,EAAA,MAAA,CAAO,YAAA;AAAA,IACL,KAAA,CAAM,WAAA,CAAY,GAAA,CAAI,WAAA,EAAa,gBAAgB,CAAC,CAAA;AAAA,IACpD;AAAA,MACE,KAAA,EAAO,uBAAA;AAAA,MACP,WAAA,EACE,mKAAA;AAAA,MACF,WAAA,EAAa;AAAA,QACX,WAAWA,CAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,yBAAyB,CAAA;AAAA,QACnE,WAAWA,CAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,gCAAgC,CAAA;AAAA,QAC1E,cAAcA,CAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,oCAAoC,CAAA;AAAA,QACjF,OAAOA,CAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,eAAe;AAAA;AACvD,KACF;AAAA,IACA,OAAO,EAAE,SAAA,EAAW,SAAA,EAAW,YAAA,EAAc,OAAM,KAAM;AACvD,MAAA,IAAI;AACF,QAAA,MAAM,QAAiC,EAAC;AACxC,QAAA,IAAI,SAAA,KAAc,KAAA,CAAA,EAAW,KAAA,CAAM,SAAA,GAAY,SAAA;AAC/C,QAAA,IAAI,SAAA,KAAc,KAAA,CAAA,EAAW,KAAA,CAAM,SAAA,GAAY,SAAA;AAC/C,QAAA,IAAI,YAAA,KAAiB,KAAA,CAAA,EAAW,KAAA,CAAM,YAAA,GAAe,YAAA;AACrD,QAAA,IAAI,KAAA,KAAU,KAAA,CAAA,EAAW,KAAA,CAAM,KAAA,GAAQ,KAAA;AAEvC,QAAA,MAAM,IAAA,GAAO,MAAM,GAAA,CAAI,GAAA,CAAI,UAAU,OAAA,CAE9B,aAAA,EAAe,EAAE,KAAA,EAAO,CAAA;AAC/B,QAAA,OAAO,UAAA,CAAW,KAAK,eAAe,CAAA;AAAA,MACxC,SAAS,KAAA,EAAO;AACd,QAAA,GAAA,CAAI,MAAA,CAAO,MAAM,oCAAA,EAAsC,EAAE,OAAO,MAAA,CAAO,KAAK,GAAG,CAAA;AAC/E,QAAA,OAAO,WAAA;AAAA,UACL,4BAA4B,KAAA,YAAiB,KAAA,GAAQ,MAAM,OAAA,GAAU,MAAA,CAAO,KAAK,CAAC,CAAA;AAAA,SACpF;AAAA,MACF;AAAA,IACF;AAAA,GACF;AAEA,EAAA,MAAA,CAAO,YAAA;AAAA,IACL,KAAA,CAAM,WAAA,CAAY,GAAA,CAAI,WAAA,EAAa,mBAAmB,CAAC,CAAA;AAAA,IACvD;AAAA,MACE,KAAA,EAAO,0BAAA;AAAA,MACP,WAAA,EACE,kGAAA;AAAA,MACF,WAAA,EAAa;AAAA,QACX,EAAA,EAAIA,CAAAA,CAAE,MAAA,EAAO,CAAE,SAAS,oBAAoB,CAAA;AAAA,QAC5C,cAAA,EAAgBA,EAAE,MAAA,EAAO,CAAE,KAAI,CAAE,QAAA,EAAS,CAAE,QAAA,CAAS,2BAA2B,CAAA;AAAA,QAChF,iBAAA,EAAmBA,EAAE,MAAA,EAAO,CAAE,KAAI,CAAE,QAAA,EAAS,CAAE,QAAA,CAAS,0BAA0B,CAAA;AAAA,QAClF,OAAOA,CAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,kBAAkB;AAAA;AAC1D,KACF;AAAA,IACA,OAAO,EAAE,EAAA,EAAI,cAAA,EAAgB,iBAAA,EAAmB,OAAM,KAAM;AAC1D,MAAA,IAAI;AACF,QAAA,MAAM,QAAiC,EAAC;AACxC,QAAA,IAAI,cAAA,KAAmB,KAAA,CAAA,EAAW,KAAA,CAAM,cAAA,GAAiB,cAAA;AACzD,QAAA,IAAI,iBAAA,KAAsB,KAAA,CAAA,EAAW,KAAA,CAAM,iBAAA,GAAoB,iBAAA;AAC/D,QAAA,IAAI,KAAA,KAAU,KAAA,CAAA,EAAW,KAAA,CAAM,KAAA,GAAQ,KAAA;AAEvC,QAAA,MAAM,IAAA,GAAO,MAAM,GAAA,CAAI,GAAA,CAAI,SAAA,CAAU,QAE9B,gBAAA,EAAkB,EAAE,EAAA,EAAI,KAAA,EAAO,CAAA;AACtC,QAAA,OAAO,UAAA,CAAW,KAAK,kBAAkB,CAAA;AAAA,MAC3C,SAAS,KAAA,EAAO;AACd,QAAA,GAAA,CAAI,MAAA,CAAO,MAAM,uCAAA,EAAyC,EAAE,OAAO,MAAA,CAAO,KAAK,GAAG,CAAA;AAClF,QAAA,OAAO,WAAA;AAAA,UACL,+BAA+B,KAAA,YAAiB,KAAA,GAAQ,MAAM,OAAA,GAAU,MAAA,CAAO,KAAK,CAAC,CAAA;AAAA,SACvF;AAAA,MACF;AAAA,IACF;AAAA,GACF;AAEA,EAAA,MAAA,CAAO,YAAA;AAAA,IACL,KAAA,CAAM,WAAA,CAAY,GAAA,CAAI,WAAA,EAAa,UAAU,CAAC,CAAA;AAAA,IAC9C;AAAA,MACE,KAAA,EAAO,iBAAA;AAAA,MACP,WAAA,EACE,oLAAA;AAAA,MACF,WAAA,EAAa;AAAA,QACX,SAAA,EAAWA,CAAAA,CAAE,MAAA,EAAO,CAAE,SAAS,2BAA2B,CAAA;AAAA,QAC1D,YAAA,EAAcA,EAAE,MAAA,EAAO,CAAE,IAAI,CAAC,CAAA,CAAE,SAAS,4BAA4B,CAAA;AAAA,QACrE,SAAA,EAAWA,EAAE,MAAA,EAAO,CAAE,KAAI,CAAE,QAAA,EAAS,CAAE,QAAA,CAAS,iCAAiC,CAAA;AAAA,QACjF,IAAA,EAAMA,EAAE,MAAA,EAAO,CAAE,KAAI,CAAE,QAAA,EAAS,CAAE,QAAA,CAAS,uBAAuB,CAAA;AAAA,QAClE,QAAQA,CAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,aAAa,CAAA;AAAA,QACpD,WAAWA,CAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,6BAA6B,CAAA;AAAA,QACvE,WAAA,EAAaA,EAAE,MAAA,EAAO,CAAE,KAAI,CAAE,QAAA,EAAS,CAAE,QAAA,CAAS,8BAA8B,CAAA;AAAA,QAChF,kBAAkBA,CAAAA,CAAE,OAAA,GAAU,QAAA,EAAS,CAAE,SAAS,2BAA2B;AAAA;AAC/E,KACF;AAAA,IACA,OAAO;AAAA,MACL,SAAA;AAAA,MACA,YAAA;AAAA,MACA,SAAA;AAAA,MACA,IAAA;AAAA,MACA,MAAA;AAAA,MACA,SAAA;AAAA,MACA,WAAA;AAAA,MACA;AAAA,KACF,KAAM;AACJ,MAAA,IAAI;AACF,QAAA,MAAM,KAAA,GAAiC,EAAE,SAAA,EAAW,YAAA,EAAa;AACjE,QAAA,IAAI,SAAA,KAAc,KAAA,CAAA,EAAW,KAAA,CAAM,SAAA,GAAY,SAAA;AAC/C,QAAA,IAAI,IAAA,KAAS,KAAA,CAAA,EAAW,KAAA,CAAM,IAAA,GAAO,IAAA;AACrC,QAAA,IAAI,MAAA,KAAW,KAAA,CAAA,EAAW,KAAA,CAAM,MAAA,GAAS,MAAA;AACzC,QAAA,IAAI,SAAA,KAAc,KAAA,CAAA,EAAW,KAAA,CAAM,SAAA,GAAY,SAAA;AAC/C,QAAA,IAAI,WAAA,KAAgB,KAAA,CAAA,EAAW,KAAA,CAAM,WAAA,GAAc,WAAA;AACnD,QAAA,IAAI,gBAAA,KAAqB,KAAA,CAAA,EAAW,KAAA,CAAM,gBAAA,GAAmB,gBAAA;AAE7D,QAAA,MAAM,IAAA,GAAO,MAAM,GAAA,CAAI,GAAA,CAAI,UAAU,OAAA,CAE9B,OAAA,EAAS,EAAE,KAAA,EAAO,CAAA;AACzB,QAAA,OAAO,UAAA,CAAW,KAAK,SAAS,CAAA;AAAA,MAClC,SAAS,KAAA,EAAO;AACd,QAAA,GAAA,CAAI,MAAA,CAAO,MAAM,8BAAA,EAAgC,EAAE,OAAO,MAAA,CAAO,KAAK,GAAG,CAAA;AACzE,QAAA,OAAO,WAAA;AAAA,UACL,sBAAsB,KAAA,YAAiB,KAAA,GAAQ,MAAM,OAAA,GAAU,MAAA,CAAO,KAAK,CAAC,CAAA;AAAA,SAC9E;AAAA,MACF;AAAA,IACF;AAAA,GACF;AACF;AChLO,SAAS,sBAAA,CACd,MAAA,EACA,GAAA,EACA,KAAA,EACM;AACN,EAAA,MAAA,CAAO,YAAA;AAAA,IACL,KAAA,CAAM,WAAA,CAAY,GAAA,CAAI,WAAA,EAAa,eAAe,CAAC,CAAA;AAAA,IACnD;AAAA,MACE,KAAA,EAAO,oBAAA;AAAA,MACP,WAAA,EAAa,kEAAA;AAAA,MACb,WAAA,EAAa,EAAE,EAAA,EAAIA,CAAAA,CAAE,QAAO,CAAE,QAAA,CAAS,mBAAmB,CAAA;AAAE,KAC9D;AAAA,IACA,OAAO,EAAE,EAAA,EAAG,KAAM;AAChB,MAAA,IAAI;AACF,QAAA,MAAM,IAAA,GAAO,MAAM,GAAA,CAAI,GAAA,CAAI,UAAU,OAAA,CAE9B,kBAAA,EAAoB,EAAE,EAAA,EAAI,CAAA;AACjC,QAAA,IAAI,CAAC,IAAA,CAAK,gBAAA,SAAyB,WAAA,CAAY,CAAA,eAAA,EAAkB,EAAE,CAAA,UAAA,CAAY,CAAA;AAC/E,QAAA,OAAO,UAAA,CAAW,KAAK,gBAAgB,CAAA;AAAA,MACzC,SAAS,KAAA,EAAO;AACd,QAAA,GAAA,CAAI,MAAA,CAAO,MAAM,mCAAA,EAAqC,EAAE,OAAO,MAAA,CAAO,KAAK,GAAG,CAAA;AAC9E,QAAA,OAAO,WAAA;AAAA,UACL,iCAAiC,KAAA,YAAiB,KAAA,GAAQ,MAAM,OAAA,GAAU,MAAA,CAAO,KAAK,CAAC,CAAA;AAAA,SACzF;AAAA,MACF;AAAA,IACF;AAAA,GACF;AAEA,EAAA,MAAA,CAAO,YAAA;AAAA,IACL,KAAA,CAAM,WAAA,CAAY,GAAA,CAAI,WAAA,EAAa,kBAAkB,CAAC,CAAA;AAAA,IACtD;AAAA,MACE,KAAA,EAAO,2BAAA;AAAA,MACP,WAAA,EACE,kJAAA;AAAA,MACF,WAAA,EAAa;AAAA,QACX,UAAUA,CAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,2CAA2C;AAAA;AACtF,KACF;AAAA,IACA,OAAO,EAAE,QAAA,EAAS,KAAM;AACtB,MAAA,IAAI;AACF,QAAA,MAAM,IAAA,GAAO,MAAM,GAAA,CAAI,GAAA,CAAI,UAAU,OAAA,CAE9B,qBAAA,EAAuB,EAAE,QAAA,EAAU,CAAA;AAC1C,QAAA,OAAO,UAAA,CAAW,KAAK,sBAAsB,CAAA;AAAA,MAC/C,SAAS,KAAA,EAAO;AACd,QAAA,GAAA,CAAI,MAAA,CAAO,MAAM,sCAAA,EAAwC,EAAE,OAAO,MAAA,CAAO,KAAK,GAAG,CAAA;AACjF,QAAA,OAAO,WAAA;AAAA,UACL,wCAAwC,KAAA,YAAiB,KAAA,GAAQ,MAAM,OAAA,GAAU,MAAA,CAAO,KAAK,CAAC,CAAA;AAAA,SAChG;AAAA,MACF;AAAA,IACF;AAAA,GACF;AAEA,EAAA,MAAA,CAAO,YAAA;AAAA,IACL,KAAA,CAAM,WAAA,CAAY,GAAA,CAAI,WAAA,EAAa,kBAAkB,CAAC,CAAA;AAAA,IACtD;AAAA,MACE,KAAA,EAAO,uBAAA;AAAA,MACP,WAAA,EACE,yGAAA;AAAA,MACF,WAAA,EAAa;AAAA,QACX,IAAA,EAAMA,EAAE,MAAA,EAAO,CAAE,IAAI,CAAC,CAAA,CAAE,SAAS,WAAW,CAAA;AAAA,QAC5C,UAAUA,CAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,kCAAkC,CAAA;AAAA,QAC3E,SAASA,CAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,oCAAoC,CAAA;AAAA,QAC5E,QAAA,EAAU,YAAA,CAAa,QAAA,EAAS,CAAE,SAAS,gCAAgC,CAAA;AAAA,QAC3E,aAAA,EAAeA,EAAE,MAAA,EAAO,CAAE,KAAI,CAAE,QAAA,EAAS,CAAE,QAAA,CAAS,sBAAsB,CAAA;AAAA,QAC1E,aAAA,EAAeA,EAAE,MAAA,EAAO,CAAE,KAAI,CAAE,QAAA,EAAS,CAAE,QAAA,CAAS,0BAA0B,CAAA;AAAA,QAC9E,WAAA,EAAaA,EAAE,MAAA,EAAO,CAAE,KAAI,CAAE,QAAA,EAAS,CAAE,QAAA,CAAS,+BAA+B,CAAA;AAAA,QACjF,SAAA,EAAWA,EAAE,MAAA,EAAO,CAAE,KAAI,CAAE,QAAA,EAAS,CAAE,QAAA,CAAS,sBAAsB,CAAA;AAAA,QACtE,WAAWA,CAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,gCAAgC,CAAA;AAAA,QAC1E,SAASA,CAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,8BAA8B,CAAA;AAAA,QACtE,OAAOA,CAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,YAAY;AAAA;AACpD,KACF;AAAA,IACA,OAAO;AAAA,MACL,IAAA;AAAA,MACA,QAAA;AAAA,MACA,OAAA;AAAA,MACA,QAAA;AAAA,MACA,aAAA;AAAA,MACA,aAAA;AAAA,MACA,WAAA;AAAA,MACA,SAAA;AAAA,MACA,SAAA;AAAA,MACA,OAAA;AAAA,MACA;AAAA,KACF,KAAM;AACJ,MAAA,IAAI;AACF,QAAA,MAAM,KAAA,GAAiC,EAAE,IAAA,EAAK;AAC9C,QAAA,IAAI,QAAA,KAAa,KAAA,CAAA,EAAW,KAAA,CAAM,QAAA,GAAW,QAAA;AAC7C,QAAA,IAAI,OAAA,KAAY,KAAA,CAAA,EAAW,KAAA,CAAM,OAAA,GAAU,OAAA;AAC3C,QAAA,IAAI,QAAA,KAAa,KAAA,CAAA,EAAW,KAAA,CAAM,QAAA,GAAW,QAAA;AAC7C,QAAA,IAAI,aAAA,KAAkB,KAAA,CAAA,EAAW,KAAA,CAAM,aAAA,GAAgB,aAAA;AACvD,QAAA,IAAI,aAAA,KAAkB,KAAA,CAAA,EAAW,KAAA,CAAM,aAAA,GAAgB,aAAA;AACvD,QAAA,IAAI,WAAA,KAAgB,KAAA,CAAA,EAAW,KAAA,CAAM,WAAA,GAAc,WAAA;AACnD,QAAA,IAAI,SAAA,KAAc,KAAA,CAAA,EAAW,KAAA,CAAM,SAAA,GAAY,SAAA;AAC/C,QAAA,IAAI,SAAA,KAAc,KAAA,CAAA,EAAW,KAAA,CAAM,SAAA,GAAY,SAAA;AAC/C,QAAA,IAAI,OAAA,KAAY,KAAA,CAAA,EAAW,KAAA,CAAM,OAAA,GAAU,OAAA;AAC3C,QAAA,IAAI,KAAA,KAAU,KAAA,CAAA,EAAW,KAAA,CAAM,KAAA,GAAQ,KAAA;AAEvC,QAAA,MAAM,IAAA,GAAO,MAAM,GAAA,CAAI,GAAA,CAAI,UAAU,OAAA,CAE9B,qBAAA,EAAuB,EAAE,KAAA,EAAO,CAAA;AACvC,QAAA,OAAO,UAAA,CAAW,KAAK,sBAAsB,CAAA;AAAA,MAC/C,SAAS,KAAA,EAAO;AACd,QAAA,GAAA,CAAI,MAAA,CAAO,MAAM,sCAAA,EAAwC,EAAE,OAAO,MAAA,CAAO,KAAK,GAAG,CAAA;AACjF,QAAA,OAAO,WAAA;AAAA,UACL,oCAAoC,KAAA,YAAiB,KAAA,GAAQ,MAAM,OAAA,GAAU,MAAA,CAAO,KAAK,CAAC,CAAA;AAAA,SAC5F;AAAA,MACF;AAAA,IACF;AAAA,GACF;AAEA,EAAA,MAAA,CAAO,YAAA;AAAA,IACL,KAAA,CAAM,WAAA,CAAY,GAAA,CAAI,WAAA,EAAa,kBAAkB,CAAC,CAAA;AAAA,IACtD;AAAA,MACE,KAAA,EAAO,uBAAA;AAAA,MACP,WAAA,EACE,+HAAA;AAAA,MACF,WAAA,EAAa;AAAA,QACX,EAAA,EAAIA,CAAAA,CAAE,MAAA,EAAO,CAAE,SAAS,mBAAmB,CAAA;AAAA,QAC3C,MAAMA,CAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,cAAc,CAAA;AAAA,QACnD,QAAA,EAAU,YAAA,CAAa,QAAA,EAAS,CAAE,SAAS,cAAc,CAAA;AAAA,QACzD,aAAA,EAAeA,EAAE,MAAA,EAAO,CAAE,KAAI,CAAE,QAAA,EAAS,CAAE,QAAA,CAAS,wBAAwB,CAAA;AAAA,QAC5E,aAAA,EAAeA,EAAE,MAAA,EAAO,CAAE,KAAI,CAAE,QAAA,EAAS,CAAE,QAAA,CAAS,4BAA4B,CAAA;AAAA,QAChF,WAAA,EAAaA,EAAE,MAAA,EAAO,CAAE,KAAI,CAAE,QAAA,EAAS,CAAE,QAAA,CAAS,iCAAiC,CAAA;AAAA,QACnF,SAAA,EAAWA,EAAE,MAAA,EAAO,CAAE,KAAI,CAAE,QAAA,EAAS,CAAE,QAAA,CAAS,wBAAwB,CAAA;AAAA,QACxE,WAAWA,CAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,wCAAwC,CAAA;AAAA,QAClF,SAASA,CAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,sCAAsC,CAAA;AAAA,QAC9E,OAAOA,CAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,eAAe;AAAA;AACvD,KACF;AAAA,IACA,OAAO;AAAA,MACL,EAAA;AAAA,MACA,IAAA;AAAA,MACA,QAAA;AAAA,MACA,aAAA;AAAA,MACA,aAAA;AAAA,MACA,WAAA;AAAA,MACA,SAAA;AAAA,MACA,SAAA;AAAA,MACA,OAAA;AAAA,MACA;AAAA,KACF,KAAM;AACJ,MAAA,IAAI;AACF,QAAA,MAAM,QAAiC,EAAC;AACxC,QAAA,IAAI,IAAA,KAAS,KAAA,CAAA,EAAW,KAAA,CAAM,IAAA,GAAO,IAAA;AACrC,QAAA,IAAI,QAAA,KAAa,KAAA,CAAA,EAAW,KAAA,CAAM,QAAA,GAAW,QAAA;AAC7C,QAAA,IAAI,aAAA,KAAkB,KAAA,CAAA,EAAW,KAAA,CAAM,aAAA,GAAgB,aAAA;AACvD,QAAA,IAAI,aAAA,KAAkB,KAAA,CAAA,EAAW,KAAA,CAAM,aAAA,GAAgB,aAAA;AACvD,QAAA,IAAI,WAAA,KAAgB,KAAA,CAAA,EAAW,KAAA,CAAM,WAAA,GAAc,WAAA;AACnD,QAAA,IAAI,SAAA,KAAc,KAAA,CAAA,EAAW,KAAA,CAAM,SAAA,GAAY,SAAA;AAC/C,QAAA,IAAI,SAAA,KAAc,KAAA,CAAA,EAAW,KAAA,CAAM,SAAA,GAAY,SAAA;AAC/C,QAAA,IAAI,OAAA,KAAY,KAAA,CAAA,EAAW,KAAA,CAAM,OAAA,GAAU,OAAA;AAC3C,QAAA,IAAI,KAAA,KAAU,KAAA,CAAA,EAAW,KAAA,CAAM,KAAA,GAAQ,KAAA;AAEvC,QAAA,IAAI,MAAA,CAAO,IAAA,CAAK,KAAK,CAAA,CAAE,WAAW,CAAA,EAAG;AACnC,UAAA,OAAO,WAAA;AAAA,YACL;AAAA,WACF;AAAA,QACF;AAEA,QAAA,MAAM,IAAA,GAAO,MAAM,GAAA,CAAI,GAAA,CAAI,SAAA,CAAU,QAE9B,qBAAA,EAAuB,EAAE,EAAA,EAAI,KAAA,EAAO,CAAA;AAC3C,QAAA,OAAO,UAAA,CAAW,KAAK,sBAAsB,CAAA;AAAA,MAC/C,SAAS,KAAA,EAAO;AACd,QAAA,GAAA,CAAI,MAAA,CAAO,MAAM,sCAAA,EAAwC,EAAE,OAAO,MAAA,CAAO,KAAK,GAAG,CAAA;AACjF,QAAA,OAAO,WAAA;AAAA,UACL,oCAAoC,KAAA,YAAiB,KAAA,GAAQ,MAAM,OAAA,GAAU,MAAA,CAAO,KAAK,CAAC,CAAA;AAAA,SAC5F;AAAA,MACF;AAAA,IACF;AAAA,GACF;AAEA,EAAA,MAAA,CAAO,YAAA;AAAA,IACL,KAAA,CAAM,WAAA,CAAY,GAAA,CAAI,WAAA,EAAa,oBAAoB,CAAC,CAAA;AAAA,IACxD;AAAA,MACE,KAAA,EAAO,yBAAA;AAAA,MACP,WAAA,EACE,4FAAA;AAAA,MACF,WAAA,EAAa,EAAE,EAAA,EAAIA,CAAAA,CAAE,QAAO,CAAE,QAAA,CAAS,mBAAmB,CAAA;AAAE,KAC9D;AAAA,IACA,OAAO,EAAE,EAAA,EAAG,KAAM;AAChB,MAAA,IAAI;AACF,QAAA,MAAM,IAAA,GAAO,MAAM,GAAA,CAAI,GAAA,CAAI,UAAU,OAAA,CAE9B,uBAAA,EAAyB,EAAE,EAAA,EAAI,CAAA;AACtC,QAAA,OAAO,UAAA,CAAW,KAAK,wBAAwB,CAAA;AAAA,MACjD,SAAS,KAAA,EAAO;AACd,QAAA,GAAA,CAAI,MAAA,CAAO,MAAM,wCAAA,EAA0C,EAAE,OAAO,MAAA,CAAO,KAAK,GAAG,CAAA;AACnF,QAAA,OAAO,WAAA;AAAA,UACL,sCAAsC,KAAA,YAAiB,KAAA,GAAQ,MAAM,OAAA,GAAU,MAAA,CAAO,KAAK,CAAC,CAAA;AAAA,SAC9F;AAAA,MACF;AAAA,IACF;AAAA,GACF;AAEA,EAAA,MAAA,CAAO,YAAA;AAAA,IACL,KAAA,CAAM,WAAA,CAAY,GAAA,CAAI,WAAA,EAAa,wBAAwB,CAAC,CAAA;AAAA,IAC5D;AAAA,MACE,KAAA,EAAO,qBAAA;AAAA,MACP,WAAA,EACE,sIAAA;AAAA,MACF,WAAA,EAAa;AAAA,QACX,UAAUA,CAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,2CAA2C,CAAA;AAAA,QACpF,MAAMA,CAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,oDAAoD;AAAA;AAC3F,KACF;AAAA,IACA,OAAO,EAAE,QAAA,EAAU,IAAA,EAAK,KAAM;AAC5B,MAAA,IAAI;AACF,QAAA,MAAM,IAAA,GAAO,MAAM,GAAA,CAAI,GAAA,CAAI,SAAA,CAAU,QAE9B,YAAA,EAAc,EAAE,QAAA,EAAU,IAAA,EAAM,CAAA;AACvC,QAAA,OAAO,UAAA,CAAW,KAAK,cAAc,CAAA;AAAA,MACvC,SAAS,KAAA,EAAO;AACd,QAAA,GAAA,CAAI,MAAA,CAAO,MAAM,4CAAA,EAA8C,EAAE,OAAO,MAAA,CAAO,KAAK,GAAG,CAAA;AACvF,QAAA,OAAO,WAAA;AAAA,UACL,mCAAmC,KAAA,YAAiB,KAAA,GAAQ,MAAM,OAAA,GAAU,MAAA,CAAO,KAAK,CAAC,CAAA;AAAA,SAC3F;AAAA,MACF;AAAA,IACF;AAAA,GACF;AACF;AC/NO,SAAS,iBAAA,CACd,MAAA,EACA,GAAA,EACA,KAAA,EACM;AACN,EAAA,MAAA,CAAO,YAAA;AAAA,IACL,KAAA,CAAM,WAAA,CAAY,GAAA,CAAI,WAAA,EAAa,YAAY,CAAC,CAAA;AAAA,IAChD;AAAA,MACE,KAAA,EAAO,gBAAA;AAAA,MACP,WAAA,EACE,sJAAA;AAAA,MACF,WAAA,EAAa;AAAA,QACX,QAAQA,CAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,6BAA6B,CAAA;AAAA,QACpE,QAAA,EAAU,YAAA,CAAa,QAAA,EAAS,CAAE,SAAS,qBAAqB,CAAA;AAAA,QAChE,KAAA,EAAOA,EAAE,MAAA,EAAO,CAAE,KAAI,CAAE,QAAA,EAAS,CAAE,QAAA,CAAS,wBAAwB,CAAA;AAAA,QACpE,MAAA,EAAQA,EAAE,MAAA,EAAO,CAAE,KAAI,CAAE,QAAA,EAAS,CAAE,QAAA,CAAS,+BAA+B,CAAA;AAAA,QAC5E,QAAQA,CAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,0BAA0B;AAAA;AACnE,KACF;AAAA,IACA,OAAO,EAAE,MAAA,EAAQ,UAAU,KAAA,EAAO,MAAA,EAAQ,QAAO,KAAM;AACrD,MAAA,IAAI;AACF,QAAA,MAAM,OAAO,MAAM,GAAA,CAAI,GAAA,CAAI,SAAA,CAAU,QAE9B,UAAA,EAAY;AAAA,UACjB,MAAA;AAAA,UACA,QAAA;AAAA,UACA,UAAA,EAAY,EAAE,KAAA,EAAO,KAAA,IAAS,IAAI,MAAA,EAAQ,MAAA,IAAU,GAAG,MAAA;AAAO,SAC/D,CAAA;AACD,QAAA,OAAO,UAAA,CAAW,KAAK,YAAY,CAAA;AAAA,MACrC,SAAS,KAAA,EAAO;AACd,QAAA,GAAA,CAAI,MAAA,CAAO,MAAM,gCAAA,EAAkC,EAAE,OAAO,MAAA,CAAO,KAAK,GAAG,CAAA;AAC3E,QAAA,OAAO,WAAA;AAAA,UACL,yBAAyB,KAAA,YAAiB,KAAA,GAAQ,MAAM,OAAA,GAAU,MAAA,CAAO,KAAK,CAAC,CAAA;AAAA,SACjF;AAAA,MACF;AAAA,IACF;AAAA,GACF;AAEA,EAAA,MAAA,CAAO,YAAA;AAAA,IACL,KAAA,CAAM,WAAA,CAAY,GAAA,CAAI,WAAA,EAAa,WAAW,CAAC,CAAA;AAAA,IAC/C;AAAA,MACE,KAAA,EAAO,UAAA;AAAA,MACP,WAAA,EACE,2IAAA;AAAA,MACF,WAAA,EAAa;AAAA,QACX,IAAA,EAAMA,EAAE,MAAA,EAAO,CAAE,IAAI,CAAC,CAAA,CAAE,SAAS,WAAW,CAAA;AAAA,QAC5C,QAAA,EAAU,YAAA,CAAa,QAAA,EAAS,CAAE,SAAS,2BAA2B,CAAA;AAAA,QACtE,QAAQA,CAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,4CAA4C,CAAA;AAAA,QACnF,QAAA,EAAUA,EAAE,MAAA,EAAO,CAAE,KAAI,CAAE,QAAA,EAAS,CAAE,QAAA,CAAS,UAAU,CAAA;AAAA,QACzD,QAAA,EAAUA,EAAE,MAAA,EAAO,CAAE,KAAI,CAAE,QAAA,EAAS,CAAE,QAAA,CAAS,aAAa,CAAA;AAAA,QAC5D,MAAA,EAAQA,EAAE,MAAA,EAAO,CAAE,KAAI,CAAE,QAAA,EAAS,CAAE,QAAA,CAAS,mBAAmB,CAAA;AAAA,QAChE,IAAA,EAAMA,EAAE,MAAA,EAAO,CAAE,KAAI,CAAE,QAAA,EAAS,CAAE,QAAA,CAAS,SAAS,CAAA;AAAA,QACpD,UAAUA,CAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,oBAAoB,CAAA;AAAA,QAC7D,YAAYA,CAAAA,CAAE,OAAA,GAAU,QAAA,EAAS,CAAE,SAAS,yBAAyB,CAAA;AAAA,QACrE,UAAUA,CAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,6CAA6C;AAAA;AACxF,KACF;AAAA,IACA,OAAO;AAAA,MACL,IAAA;AAAA,MACA,QAAA;AAAA,MACA,MAAA;AAAA,MACA,QAAA;AAAA,MACA,QAAA;AAAA,MACA,MAAA;AAAA,MACA,IAAA;AAAA,MACA,QAAA;AAAA,MACA,UAAA;AAAA,MACA;AAAA,KACF,KAAM;AACJ,MAAA,IAAI;AACF,QAAA,MAAM,KAAA,GAAiC,EAAE,IAAA,EAAK;AAC9C,QAAA,IAAI,QAAA,KAAa,KAAA,CAAA,EAAW,KAAA,CAAM,QAAA,GAAW,QAAA;AAC7C,QAAA,IAAI,MAAA,KAAW,KAAA,CAAA,EAAW,KAAA,CAAM,MAAA,GAAS,MAAA;AACzC,QAAA,IAAI,QAAA,KAAa,KAAA,CAAA,EAAW,KAAA,CAAM,QAAA,GAAW,QAAA;AAC7C,QAAA,IAAI,QAAA,KAAa,KAAA,CAAA,EAAW,KAAA,CAAM,QAAA,GAAW,QAAA;AAC7C,QAAA,IAAI,MAAA,KAAW,KAAA,CAAA,EAAW,KAAA,CAAM,MAAA,GAAS,MAAA;AACzC,QAAA,IAAI,IAAA,KAAS,KAAA,CAAA,EAAW,KAAA,CAAM,IAAA,GAAO,IAAA;AACrC,QAAA,IAAI,QAAA,KAAa,KAAA,CAAA,EAAW,KAAA,CAAM,QAAA,GAAW,QAAA;AAC7C,QAAA,IAAI,UAAA,KAAe,KAAA,CAAA,EAAW,KAAA,CAAM,UAAA,GAAa,UAAA;AACjD,QAAA,IAAI,QAAA,KAAa,KAAA,CAAA,EAAW,KAAA,CAAM,QAAA,GAAW,QAAA;AAE7C,QAAA,MAAM,IAAA,GAAO,MAAM,GAAA,CAAI,GAAA,CAAI,UAAU,OAAA,CAE9B,QAAA,EAAU,EAAE,KAAA,EAAO,CAAA;AAC1B,QAAA,OAAO,UAAA,CAAW,KAAK,UAAU,CAAA;AAAA,MACnC,SAAS,KAAA,EAAO;AACd,QAAA,GAAA,CAAI,MAAA,CAAO,MAAM,+BAAA,EAAiC,EAAE,OAAO,MAAA,CAAO,KAAK,GAAG,CAAA;AAC1E,QAAA,OAAO,WAAA;AAAA,UACL,uBAAuB,KAAA,YAAiB,KAAA,GAAQ,MAAM,OAAA,GAAU,MAAA,CAAO,KAAK,CAAC,CAAA;AAAA,SAC/E;AAAA,MACF;AAAA,IACF;AAAA,GACF;AAEA,EAAA,MAAA,CAAO,YAAA;AAAA,IACL,KAAA,CAAM,WAAA,CAAY,GAAA,CAAI,WAAA,EAAa,cAAc,CAAC,CAAA;AAAA,IAClD;AAAA,MACE,KAAA,EAAO,iBAAA;AAAA,MACP,WAAA,EAAa,sDAAA;AAAA,MACb,WAAA,EAAa,EAAE,EAAA,EAAIA,CAAAA,CAAE,QAAO,CAAE,QAAA,CAAS,aAAa,CAAA;AAAE,KACxD;AAAA,IACA,OAAO,EAAE,EAAA,EAAG,KAAM;AAChB,MAAA,IAAI;AACF,QAAA,MAAM,OAAO,MAAM,GAAA,CAAI,GAAA,CAAI,SAAA,CAAU,QAAwC,WAAA,EAAa;AAAA,UACxF;AAAA,SACD,CAAA;AACD,QAAA,OAAO,UAAA,CAAW,EAAE,OAAA,EAAS,IAAA,CAAK,eAAe,CAAA;AAAA,MACnD,SAAS,KAAA,EAAO;AACd,QAAA,GAAA,CAAI,MAAA,CAAO,MAAM,kCAAA,EAAoC,EAAE,OAAO,MAAA,CAAO,KAAK,GAAG,CAAA;AAC7E,QAAA,OAAO,WAAA;AAAA,UACL,0BAA0B,KAAA,YAAiB,KAAA,GAAQ,MAAM,OAAA,GAAU,MAAA,CAAO,KAAK,CAAC,CAAA;AAAA,SAClF;AAAA,MACF;AAAA,IACF;AAAA,GACF;AACF;ACnHO,SAAS,iBAAA,CACd,MAAA,EACA,GAAA,EACA,KAAA,EACM;AACN,EAAA,MAAA,CAAO,YAAA;AAAA,IACL,KAAA,CAAM,WAAA,CAAY,GAAA,CAAI,WAAA,EAAa,WAAW,CAAC,CAAA;AAAA,IAC/C;AAAA,MACE,KAAA,EAAO,UAAA;AAAA,MACP,WAAA,EAAa,4BAAA;AAAA,MACb,WAAA,EAAa,EAAE,EAAA,EAAIA,CAAAA,CAAE,QAAO,CAAE,QAAA,CAAS,SAAS,CAAA;AAAE,KACpD;AAAA,IACA,OAAO,EAAE,EAAA,EAAG,KAAM;AAChB,MAAA,IAAI;AACF,QAAA,MAAM,IAAA,GAAO,MAAM,GAAA,CAAI,GAAA,CAAI,UAAU,OAAA,CAE9B,QAAA,EAAU,EAAE,EAAA,EAAI,CAAA;AACvB,QAAA,IAAI,CAAC,IAAA,CAAK,OAAA,SAAgB,WAAA,CAAY,CAAA,KAAA,EAAQ,EAAE,CAAA,UAAA,CAAY,CAAA;AAC5D,QAAA,OAAO,UAAA,CAAW,KAAK,OAAO,CAAA;AAAA,MAChC,SAAS,KAAA,EAAO;AACd,QAAA,GAAA,CAAI,MAAA,CAAO,MAAM,+BAAA,EAAiC,EAAE,OAAO,MAAA,CAAO,KAAK,GAAG,CAAA;AAC1E,QAAA,OAAO,WAAA;AAAA,UACL,uBAAuB,KAAA,YAAiB,KAAA,GAAQ,MAAM,OAAA,GAAU,MAAA,CAAO,KAAK,CAAC,CAAA;AAAA,SAC/E;AAAA,MACF;AAAA,IACF;AAAA,GACF;AAEA,EAAA,MAAA,CAAO,YAAA;AAAA,IACL,KAAA,CAAM,WAAA,CAAY,GAAA,CAAI,WAAA,EAAa,YAAY,CAAC,CAAA;AAAA,IAChD;AAAA,MACE,KAAA,EAAO,YAAA;AAAA,MACP,WAAA,EACE,oIAAA;AAAA,MACF,WAAA,EAAa;AAAA,QACX,UAAUA,CAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,4BAA4B,CAAA;AAAA,QACrE,MAAA,EAAQ,cAAA,CAAe,QAAA,EAAS,CAAE,SAAS,uBAAuB,CAAA;AAAA,QAClE,KAAA,EAAOA,EAAE,MAAA,EAAO,CAAE,KAAI,CAAE,QAAA,EAAS,CAAE,QAAA,CAAS,wBAAwB,CAAA;AAAA,QACpE,MAAA,EAAQA,EAAE,MAAA,EAAO,CAAE,KAAI,CAAE,QAAA,EAAS,CAAE,QAAA,CAAS,+BAA+B,CAAA;AAAA,QAC5E,QAAQA,CAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,0BAA0B;AAAA;AACnE,KACF;AAAA,IACA,OAAO,EAAE,QAAA,EAAU,QAAQ,KAAA,EAAO,MAAA,EAAQ,QAAO,KAAM;AACrD,MAAA,IAAI;AACF,QAAA,MAAM,OAAO,MAAM,GAAA,CAAI,GAAA,CAAI,SAAA,CAAU,QAE9B,UAAA,EAAY;AAAA,UACjB,QAAA;AAAA,UACA,MAAA;AAAA,UACA,UAAA,EAAY,EAAE,KAAA,EAAO,KAAA,IAAS,IAAI,MAAA,EAAQ,MAAA,IAAU,GAAG,MAAA;AAAO,SAC/D,CAAA;AACD,QAAA,OAAO,UAAA,CAAW,KAAK,YAAY,CAAA;AAAA,MACrC,SAAS,KAAA,EAAO;AACd,QAAA,GAAA,CAAI,MAAA,CAAO,MAAM,gCAAA,EAAkC,EAAE,OAAO,MAAA,CAAO,KAAK,GAAG,CAAA;AAC3E,QAAA,OAAO,WAAA;AAAA,UACL,yBAAyB,KAAA,YAAiB,KAAA,GAAQ,MAAM,OAAA,GAAU,MAAA,CAAO,KAAK,CAAC,CAAA;AAAA,SACjF;AAAA,MACF;AAAA,IACF;AAAA,GACF;AAEA,EAAA,MAAA,CAAO,YAAA;AAAA,IACL,KAAA,CAAM,WAAA,CAAY,GAAA,CAAI,WAAA,EAAa,cAAc,CAAC,CAAA;AAAA,IAClD;AAAA,MACE,KAAA,EAAO,aAAA;AAAA,MACP,WAAA,EACE,yIAAA;AAAA,MACF,WAAA,EAAa;AAAA,QACX,KAAA,EAAOA,EAAE,MAAA,EAAO,CAAE,IAAI,CAAC,CAAA,CAAE,SAAS,YAAY,CAAA;AAAA,QAC9C,UAAUA,CAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,kCAAkC,CAAA;AAAA,QAC3E,IAAA,EAAM,YAAA,CAAa,QAAA,EAAS,CAAE,SAAS,qCAAqC,CAAA;AAAA,QAC5E,aAAaA,CAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,kBAAkB,CAAA;AAAA,QAC9D,eAAeA,CAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,gBAAgB,CAAA;AAAA,QAC9D,aAAaA,CAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,cAAc,CAAA;AAAA,QAC1D,MAAMA,CAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,sCAAsC,CAAA;AAAA,QAC3E,YAAYA,CAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,iCAAiC;AAAA;AAC9E,KACF;AAAA,IACA,OAAO;AAAA,MACL,KAAA;AAAA,MACA,QAAA;AAAA,MACA,IAAA;AAAA,MACA,WAAA;AAAA,MACA,aAAA;AAAA,MACA,WAAA;AAAA,MACA,IAAA;AAAA,MACA;AAAA,KACF,KAAM;AACJ,MAAA,IAAI;AACF,QAAA,MAAM,KAAA,GAAiC,EAAE,KAAA,EAAM;AAC/C,QAAA,IAAI,QAAA,KAAa,KAAA,CAAA,EAAW,KAAA,CAAM,QAAA,GAAW,QAAA;AAC7C,QAAA,IAAI,IAAA,KAAS,KAAA,CAAA,EAAW,KAAA,CAAM,IAAA,GAAO,IAAA;AACrC,QAAA,IAAI,WAAA,KAAgB,KAAA,CAAA,EAAW,KAAA,CAAM,WAAA,GAAc,WAAA;AACnD,QAAA,IAAI,aAAA,KAAkB,KAAA,CAAA,EAAW,KAAA,CAAM,aAAA,GAAgB,aAAA;AACvD,QAAA,IAAI,WAAA,KAAgB,KAAA,CAAA,EAAW,KAAA,CAAM,WAAA,GAAc,WAAA;AACnD,QAAA,IAAI,IAAA,KAAS,KAAA,CAAA,EAAW,KAAA,CAAM,IAAA,GAAO,IAAA;AACrC,QAAA,IAAI,UAAA,KAAe,KAAA,CAAA,EAAW,KAAA,CAAM,UAAA,GAAa,UAAA;AAEjD,QAAA,MAAM,IAAA,GAAO,MAAM,GAAA,CAAI,GAAA,CAAI,UAAU,OAAA,CAE9B,WAAA,EAAa,EAAE,KAAA,EAAO,CAAA;AAC7B,QAAA,OAAO,UAAA,CAAW,KAAK,aAAa,CAAA;AAAA,MACtC,SAAS,KAAA,EAAO;AACd,QAAA,GAAA,CAAI,MAAA,CAAO,MAAM,kCAAA,EAAoC,EAAE,OAAO,MAAA,CAAO,KAAK,GAAG,CAAA;AAC7E,QAAA,OAAO,WAAA;AAAA,UACL,0BAA0B,KAAA,YAAiB,KAAA,GAAQ,MAAM,OAAA,GAAU,MAAA,CAAO,KAAK,CAAC,CAAA;AAAA,SAClF;AAAA,MACF;AAAA,IACF;AAAA,GACF;AAEA,EAAA,MAAA,CAAO,YAAA;AAAA,IACL,KAAA,CAAM,WAAA,CAAY,GAAA,CAAI,WAAA,EAAa,cAAc,CAAC,CAAA;AAAA,IAClD;AAAA,MACE,KAAA,EAAO,aAAA;AAAA,MACP,WAAA,EACE,6IAAA;AAAA,MACF,WAAA,EAAa;AAAA,QACX,EAAA,EAAIA,CAAAA,CAAE,MAAA,EAAO,CAAE,SAAS,SAAS,CAAA;AAAA,QACjC,OAAOA,CAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,eAAe,CAAA;AAAA,QACrD,IAAA,EAAM,YAAA,CAAa,QAAA,EAAS,CAAE,SAAS,mBAAmB,CAAA;AAAA,QAC1D,aAAaA,CAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,qBAAqB,CAAA;AAAA,QACjE,eAAeA,CAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,wBAAwB,CAAA;AAAA,QACtE,cAAcA,CAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,gCAAgC,CAAA;AAAA,QAC7E,aAAaA,CAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,sBAAsB,CAAA;AAAA,QAClE,MAAMA,CAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,yBAAyB,CAAA;AAAA,QAC9D,YAAYA,CAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,yCAAyC;AAAA;AACtF,KACF;AAAA,IACA,OAAO;AAAA,MACL,EAAA;AAAA,MACA,KAAA;AAAA,MACA,IAAA;AAAA,MACA,WAAA;AAAA,MACA,aAAA;AAAA,MACA,YAAA;AAAA,MACA,WAAA;AAAA,MACA,IAAA;AAAA,MACA;AAAA,KACF,KAAM;AACJ,MAAA,IAAI;AACF,QAAA,MAAM,QAAiC,EAAC;AACxC,QAAA,IAAI,KAAA,KAAU,KAAA,CAAA,EAAW,KAAA,CAAM,KAAA,GAAQ,KAAA;AACvC,QAAA,IAAI,IAAA,KAAS,KAAA,CAAA,EAAW,KAAA,CAAM,IAAA,GAAO,IAAA;AACrC,QAAA,IAAI,WAAA,KAAgB,KAAA,CAAA,EAAW,KAAA,CAAM,WAAA,GAAc,WAAA;AACnD,QAAA,IAAI,aAAA,KAAkB,KAAA,CAAA,EAAW,KAAA,CAAM,aAAA,GAAgB,aAAA;AACvD,QAAA,IAAI,YAAA,KAAiB,KAAA,CAAA,EAAW,KAAA,CAAM,YAAA,GAAe,YAAA;AACrD,QAAA,IAAI,WAAA,KAAgB,KAAA,CAAA,EAAW,KAAA,CAAM,WAAA,GAAc,WAAA;AACnD,QAAA,IAAI,IAAA,KAAS,KAAA,CAAA,EAAW,KAAA,CAAM,IAAA,GAAO,IAAA;AACrC,QAAA,IAAI,UAAA,KAAe,KAAA,CAAA,EAAW,KAAA,CAAM,UAAA,GAAa,UAAA;AAEjD,QAAA,IAAI,MAAA,CAAO,IAAA,CAAK,KAAK,CAAA,CAAE,WAAW,CAAA,EAAG;AACnC,UAAA,OAAO,WAAA;AAAA,YACL;AAAA,WACF;AAAA,QACF;AAEA,QAAA,MAAM,IAAA,GAAO,MAAM,GAAA,CAAI,GAAA,CAAI,SAAA,CAAU,QAE9B,WAAA,EAAa,EAAE,EAAA,EAAI,KAAA,EAAO,CAAA;AACjC,QAAA,OAAO,UAAA,CAAW,KAAK,aAAa,CAAA;AAAA,MACtC,SAAS,KAAA,EAAO;AACd,QAAA,GAAA,CAAI,MAAA,CAAO,MAAM,kCAAA,EAAoC,EAAE,OAAO,MAAA,CAAO,KAAK,GAAG,CAAA;AAC7E,QAAA,OAAO,WAAA;AAAA,UACL,0BAA0B,KAAA,YAAiB,KAAA,GAAQ,MAAM,OAAA,GAAU,MAAA,CAAO,KAAK,CAAC,CAAA;AAAA,SAClF;AAAA,MACF;AAAA,IACF;AAAA,GACF;AAEA,EAAA,MAAA,CAAO,YAAA;AAAA,IACL,KAAA,CAAM,WAAA,CAAY,GAAA,CAAI,WAAA,EAAa,eAAe,CAAC,CAAA;AAAA,IACnD;AAAA,MACE,KAAA,EAAO,cAAA;AAAA,MACP,WAAA,EAAa,8DAAA;AAAA,MACb,WAAA,EAAa,EAAE,EAAA,EAAIA,CAAAA,CAAE,QAAO,CAAE,QAAA,CAAS,SAAS,CAAA;AAAE,KACpD;AAAA,IACA,OAAO,EAAE,EAAA,EAAG,KAAM;AAChB,MAAA,IAAI;AACF,QAAA,MAAM,IAAA,GAAO,MAAM,GAAA,CAAI,GAAA,CAAI,UAAU,OAAA,CAE9B,YAAA,EAAc,EAAE,EAAA,EAAI,CAAA;AAC3B,QAAA,OAAO,UAAA,CAAW,KAAK,cAAc,CAAA;AAAA,MACvC,SAAS,KAAA,EAAO;AACd,QAAA,GAAA,CAAI,MAAA,CAAO,MAAM,mCAAA,EAAqC,EAAE,OAAO,MAAA,CAAO,KAAK,GAAG,CAAA;AAC9E,QAAA,OAAO,WAAA;AAAA,UACL,2BAA2B,KAAA,YAAiB,KAAA,GAAQ,MAAM,OAAA,GAAU,MAAA,CAAO,KAAK,CAAC,CAAA;AAAA,SACnF;AAAA,MACF;AAAA,IACF;AAAA,GACF;AACF;AC9LO,SAAS,mBAAA,CACd,MAAA,EACA,GAAA,EACA,KAAA,EACM;AACN,EAAA,MAAA,CAAO,YAAA;AAAA,IACL,KAAA,CAAM,WAAA,CAAY,GAAA,CAAI,WAAA,EAAa,cAAc,CAAC,CAAA;AAAA,IAClD;AAAA,MACE,KAAA,EAAO,mBAAA;AAAA,MACP,WAAA,EACE,yJAAA;AAAA,MACF,WAAA,EAAa;AAAA,QACX,UAAUA,CAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,4BAA4B,CAAA;AAAA,QACrE,IAAA,EAAM,kBAAA,CAAmB,QAAA,EAAS,CAAE,SAAS,uBAAuB,CAAA;AAAA,QACpE,KAAA,EAAOA,EAAE,MAAA,EAAO,CAAE,KAAI,CAAE,QAAA,EAAS,CAAE,QAAA,CAAS,wBAAwB,CAAA;AAAA,QACpE,MAAA,EAAQA,EAAE,MAAA,EAAO,CAAE,KAAI,CAAE,QAAA,EAAS,CAAE,QAAA,CAAS,+BAA+B,CAAA;AAAA,QAC5E,QAAQA,CAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,0BAA0B;AAAA;AACnE,KACF;AAAA,IACA,OAAO,EAAE,QAAA,EAAU,MAAM,KAAA,EAAO,MAAA,EAAQ,QAAO,KAAM;AACnD,MAAA,IAAI;AACF,QAAA,MAAM,OAAO,MAAM,GAAA,CAAI,GAAA,CAAI,SAAA,CAAU,QAE9B,iBAAA,EAAmB;AAAA,UACxB,QAAA;AAAA,UACA,IAAA;AAAA,UACA,UAAA,EAAY,EAAE,KAAA,EAAO,KAAA,IAAS,IAAI,MAAA,EAAQ,MAAA,IAAU,GAAG,MAAA;AAAO,SAC/D,CAAA;AACD,QAAA,OAAO,UAAA,CAAW,KAAK,kBAAkB,CAAA;AAAA,MAC3C,SAAS,KAAA,EAAO;AACd,QAAA,GAAA,CAAI,MAAA,CAAO,MAAM,kCAAA,EAAoC,EAAE,OAAO,MAAA,CAAO,KAAK,GAAG,CAAA;AAC7E,QAAA,OAAO,WAAA;AAAA,UACL,gCAAgC,KAAA,YAAiB,KAAA,GAAQ,MAAM,OAAA,GAAU,MAAA,CAAO,KAAK,CAAC,CAAA;AAAA,SACxF;AAAA,MACF;AAAA,IACF;AAAA,GACF;AAEA,EAAA,MAAA,CAAO,YAAA;AAAA,IACL,KAAA,CAAM,WAAA,CAAY,GAAA,CAAI,WAAA,EAAa,gBAAgB,CAAC,CAAA;AAAA,IACpD;AAAA,MACE,KAAA,EAAO,oBAAA;AAAA,MACP,WAAA,EACE,qIAAA;AAAA,MACF,WAAA,EAAa;AAAA,QACX,IAAA,EAAM,kBAAA,CAAmB,QAAA,CAAS,aAAa,CAAA;AAAA,QAC/C,KAAA,EAAOA,CAAAA,CAAE,MAAA,EAAO,CAAE,SAAS,gBAAgB,CAAA;AAAA,QAC3C,MAAMA,CAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,uCAAuC,CAAA;AAAA,QAC5E,UAAUA,CAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,2CAA2C,CAAA;AAAA,QACpF,YAAYA,CAAAA,CACT,MAAA,GACA,QAAA,EAAS,CACT,SAAS,iDAAiD,CAAA;AAAA,QAC7D,OAAOA,CAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,OAAO,CAAA;AAAA,QAC7C,aAAaA,CAAAA,CACV,MAAA,GACA,QAAA,EAAS,CACT,SAAS,+CAA+C;AAAA;AAC7D,KACF;AAAA,IACA,OAAO,EAAE,IAAA,EAAM,KAAA,EAAO,MAAM,QAAA,EAAU,UAAA,EAAY,KAAA,EAAO,WAAA,EAAY,KAAM;AACzE,MAAA,IAAI;AACF,QAAA,MAAM,KAAA,GAAiC,EAAE,IAAA,EAAM,KAAA,EAAM;AACrD,QAAA,IAAI,IAAA,KAAS,KAAA,CAAA,EAAW,KAAA,CAAM,IAAA,GAAO,IAAA;AACrC,QAAA,IAAI,QAAA,KAAa,KAAA,CAAA,EAAW,KAAA,CAAM,QAAA,GAAW,QAAA;AAC7C,QAAA,IAAI,UAAA,KAAe,KAAA,CAAA,EAAW,KAAA,CAAM,UAAA,GAAa,UAAA;AACjD,QAAA,IAAI,KAAA,KAAU,KAAA,CAAA,EAAW,KAAA,CAAM,KAAA,GAAQ,KAAA;AACvC,QAAA,IAAI,WAAA,KAAgB,KAAA,CAAA,EAAW,KAAA,CAAM,WAAA,GAAc,WAAA;AAEnD,QAAA,MAAM,IAAA,GAAO,MAAM,GAAA,CAAI,GAAA,CAAI,UAAU,OAAA,CAE9B,kBAAA,EAAoB,EAAE,KAAA,EAAO,CAAA;AACpC,QAAA,OAAO,UAAA,CAAW,KAAK,mBAAmB,CAAA;AAAA,MAC5C,SAAS,KAAA,EAAO;AACd,QAAA,GAAA,CAAI,MAAA,CAAO,MAAM,oCAAA,EAAsC,EAAE,OAAO,MAAA,CAAO,KAAK,GAAG,CAAA;AAC/E,QAAA,OAAO,WAAA;AAAA,UACL,iCAAiC,KAAA,YAAiB,KAAA,GAAQ,MAAM,OAAA,GAAU,MAAA,CAAO,KAAK,CAAC,CAAA;AAAA,SACzF;AAAA,MACF;AAAA,IACF;AAAA,GACF;AACF;ACjFO,SAAS,qBAAA,CACd,MAAA,EACA,GAAA,EACA,KAAA,EACM;AACN,EAAA,MAAA,CAAO,YAAA;AAAA,IACL,KAAA,CAAM,WAAA,CAAY,GAAA,CAAI,WAAA,EAAa,eAAe,CAAC,CAAA;AAAA,IACnD;AAAA,MACE,KAAA,EAAO,oBAAA;AAAA,MACP,WAAA,EACE,uHAAA;AAAA,MACF,WAAA,EAAa;AAAA,QACX,UAAUA,CAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,4BAA4B,CAAA;AAAA,QACrE,MAAA,EAAQ,kBAAA,CAAmB,QAAA,EAAS,CAAE,SAAS,2BAA2B;AAAA;AAC5E,KACF;AAAA,IACA,OAAO,EAAE,QAAA,EAAU,MAAA,EAAO,KAAM;AAC9B,MAAA,IAAI;AACF,QAAA,MAAM,IAAA,GAAO,MAAM,GAAA,CAAI,GAAA,CAAI,SAAA,CAAU,QAE9B,kBAAA,EAAoB,EAAE,QAAA,EAAU,MAAA,EAAQ,CAAA;AAC/C,QAAA,OAAO,UAAA,CAAW,KAAK,mBAAmB,CAAA;AAAA,MAC5C,SAAS,KAAA,EAAO;AACd,QAAA,GAAA,CAAI,MAAA,CAAO,MAAM,mCAAA,EAAqC,EAAE,OAAO,MAAA,CAAO,KAAK,GAAG,CAAA;AAC9E,QAAA,OAAO,WAAA;AAAA,UACL,iCAAiC,KAAA,YAAiB,KAAA,GAAQ,MAAM,OAAA,GAAU,MAAA,CAAO,KAAK,CAAC,CAAA;AAAA,SACzF;AAAA,MACF;AAAA,IACF;AAAA,GACF;AAEA,EAAA,MAAA,CAAO,YAAA;AAAA,IACL,KAAA,CAAM,WAAA,CAAY,GAAA,CAAI,WAAA,EAAa,cAAc,CAAC,CAAA;AAAA,IAClD;AAAA,MACE,KAAA,EAAO,qBAAA;AAAA,MACP,WAAA,EACE,8JAAA;AAAA,MACF,WAAA,EAAa;AAAA,QACX,MAAA,EAAQ,kBAAA,CAAmB,QAAA,EAAS,CAAE,SAAS,qCAAqC,CAAA;AAAA,QACpF,KAAA,EAAOA,EAAE,MAAA,EAAO,CAAE,KAAI,CAAE,QAAA,EAAS,CAAE,QAAA,CAAS,8BAAyB,CAAA;AAAA,QACrE,YAAYA,CAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,aAAa,CAAA;AAAA,QACxD,UAAUA,CAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,2CAA2C,CAAA;AAAA,QACpF,UAAUA,CAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,+CAA+C,CAAA;AAAA,QACxF,OAAOA,CAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,OAAO;AAAA;AAC/C,KACF;AAAA,IACA,OAAO,EAAE,MAAA,EAAQ,KAAA,EAAO,YAAY,QAAA,EAAU,QAAA,EAAU,OAAM,KAAM;AAClE,MAAA,IAAI;AACF,QAAA,MAAM,QAAiC,EAAC;AACxC,QAAA,IAAI,MAAA,KAAW,KAAA,CAAA,EAAW,KAAA,CAAM,MAAA,GAAS,MAAA;AACzC,QAAA,IAAI,KAAA,KAAU,KAAA,CAAA,EAAW,KAAA,CAAM,KAAA,GAAQ,KAAA;AACvC,QAAA,IAAI,UAAA,KAAe,KAAA,CAAA,EAAW,KAAA,CAAM,UAAA,GAAa,UAAA;AACjD,QAAA,IAAI,QAAA,KAAa,KAAA,CAAA,EAAW,KAAA,CAAM,QAAA,GAAW,QAAA;AAC7C,QAAA,IAAI,QAAA,KAAa,KAAA,CAAA,EAAW,KAAA,CAAM,QAAA,GAAW,QAAA;AAC7C,QAAA,IAAI,KAAA,KAAU,KAAA,CAAA,EAAW,KAAA,CAAM,KAAA,GAAQ,KAAA;AAEvC,QAAA,MAAM,IAAA,GAAO,MAAM,GAAA,CAAI,GAAA,CAAI,UAAU,OAAA,CAE9B,YAAA,EAAc,EAAE,KAAA,EAAO,CAAA;AAC9B,QAAA,OAAO,UAAA,CAAW,KAAK,cAAc,CAAA;AAAA,MACvC,SAAS,KAAA,EAAO;AACd,QAAA,GAAA,CAAI,MAAA,CAAO,MAAM,kCAAA,EAAoC,EAAE,OAAO,MAAA,CAAO,KAAK,GAAG,CAAA;AAC7E,QAAA,OAAO,WAAA;AAAA,UACL,2BAA2B,KAAA,YAAiB,KAAA,GAAQ,MAAM,OAAA,GAAU,MAAA,CAAO,KAAK,CAAC,CAAA;AAAA,SACnF;AAAA,MACF;AAAA,IACF;AAAA,GACF;AACF;ACpEO,SAAS,qBAAA,CACd,MAAA,EACA,GAAA,EACA,KAAA,EACM;AACN,EAAA,MAAA,CAAO,YAAA;AAAA,IACL,KAAA,CAAM,WAAA,CAAY,GAAA,CAAI,WAAA,EAAa,eAAe,CAAC,CAAA;AAAA,IACnD;AAAA,MACE,KAAA,EAAO,6BAAA;AAAA,MACP,WAAA,EACE,wIAAA;AAAA,MACF,WAAA,EAAa;AAAA,QACX,UAAUA,CAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,4BAA4B,CAAA;AAAA,QACrE,MAAA,EAAQ,kBAAA,CAAmB,QAAA,EAAS,CAAE,SAAS,2BAA2B;AAAA;AAC5E,KACF;AAAA,IACA,OAAO,EAAE,QAAA,EAAU,MAAA,EAAO,KAAM;AAC9B,MAAA,IAAI;AACF,QAAA,MAAM,IAAA,GAAO,MAAM,GAAA,CAAI,GAAA,CAAI,SAAA,CAAU,QAE9B,aAAA,EAAe,EAAE,QAAA,EAAU,MAAA,EAAQ,CAAA;AAC1C,QAAA,OAAO,UAAA,CAAW,KAAK,eAAe,CAAA;AAAA,MACxC,SAAS,KAAA,EAAO;AACd,QAAA,GAAA,CAAI,MAAA,CAAO,MAAM,mCAAA,EAAqC,EAAE,OAAO,MAAA,CAAO,KAAK,GAAG,CAAA;AAC9E,QAAA,OAAO,WAAA;AAAA,UACL,0CAA0C,KAAA,YAAiB,KAAA,GAAQ,MAAM,OAAA,GAAU,MAAA,CAAO,KAAK,CAAC,CAAA;AAAA,SAClG;AAAA,MACF;AAAA,IACF;AAAA,GACF;AAEA,EAAA,MAAA,CAAO,YAAA;AAAA,IACL,KAAA,CAAM,WAAA,CAAY,GAAA,CAAI,WAAA,EAAa,iBAAiB,CAAC,CAAA;AAAA,IACrD;AAAA,MACE,KAAA,EAAO,8BAAA;AAAA,MACP,WAAA,EACE,sIAAA;AAAA,MACF,WAAA,EAAa;AAAA,QACX,OAAA,EAASA,CAAAA,CAAE,MAAA,EAAO,CAAE,SAAS,iBAAiB,CAAA;AAAA,QAC9C,QAAA,EAAUA,CAAAA,CAAE,MAAA,EAAO,CAAE,SAAS,kBAAkB,CAAA;AAAA,QAChD,WAAWA,CAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,mBAAmB,CAAA;AAAA,QAC7D,eAAeA,CAAAA,CAAE,OAAA,GAAU,QAAA,EAAS,CAAE,SAAS,mCAAmC,CAAA;AAAA,QAClF,gBAAgBA,CAAAA,CAAE,OAAA,GAAU,QAAA,EAAS,CAAE,SAAS,qCAAqC,CAAA;AAAA,QACrF,cAAcA,CAAAA,CAAE,OAAA,GAAU,QAAA,EAAS,CAAE,SAAS,uCAAuC;AAAA;AACvF,KACF;AAAA,IACA,OAAO,EAAE,OAAA,EAAS,QAAA,EAAU,WAAW,aAAA,EAAe,cAAA,EAAgB,cAAa,KAAM;AACvF,MAAA,IAAI;AACF,QAAA,MAAM,KAAA,GAAiC,EAAE,OAAA,EAAS,QAAA,EAAS;AAC3D,QAAA,IAAI,SAAA,KAAc,KAAA,CAAA,EAAW,KAAA,CAAM,SAAA,GAAY,SAAA;AAC/C,QAAA,IAAI,aAAA,KAAkB,KAAA,CAAA,EAAW,KAAA,CAAM,aAAA,GAAgB,aAAA;AACvD,QAAA,IAAI,cAAA,KAAmB,KAAA,CAAA,EAAW,KAAA,CAAM,cAAA,GAAiB,cAAA;AACzD,QAAA,IAAI,YAAA,KAAiB,KAAA,CAAA,EAAW,KAAA,CAAM,YAAA,GAAe,YAAA;AAErD,QAAA,MAAM,IAAA,GAAO,MAAM,GAAA,CAAI,GAAA,CAAI,UAAU,OAAA,CAE9B,eAAA,EAAiB,EAAE,KAAA,EAAO,CAAA;AACjC,QAAA,OAAO,UAAA,CAAW,KAAK,iBAAiB,CAAA;AAAA,MAC1C,SAAS,KAAA,EAAO;AACd,QAAA,GAAA,CAAI,MAAA,CAAO,MAAM,qCAAA,EAAuC,EAAE,OAAO,MAAA,CAAO,KAAK,GAAG,CAAA;AAChF,QAAA,OAAO,WAAA;AAAA,UACL,2CAA2C,KAAA,YAAiB,KAAA,GAAQ,MAAM,OAAA,GAAU,MAAA,CAAO,KAAK,CAAC,CAAA;AAAA,SACnG;AAAA,MACF;AAAA,IACF;AAAA,GACF;AAEA,EAAA,MAAA,CAAO,YAAA;AAAA,IACL,KAAA,CAAM,WAAA,CAAY,GAAA,CAAI,WAAA,EAAa,qBAAqB,CAAC,CAAA;AAAA,IACzD;AAAA,MACE,KAAA,EAAO,kCAAA;AAAA,MACP,WAAA,EACE,kGAAA;AAAA,MACF,WAAA,EAAa;AAAA,QACX,EAAA,EAAIA,CAAAA,CAAE,MAAA,EAAO,CAAE,SAAS,0BAA0B,CAAA;AAAA,QAClD,MAAA,EAAQ,kBAAA,CAAmB,QAAA,CAAS,wBAAwB;AAAA;AAC9D,KACF;AAAA,IACA,OAAO,EAAE,EAAA,EAAI,MAAA,EAAO,KAAM;AACxB,MAAA,IAAI;AACF,QAAA,MAAM,IAAA,GAAO,MAAM,GAAA,CAAI,GAAA,CAAI,SAAA,CAAU,QAE9B,mBAAA,EAAqB,EAAE,EAAA,EAAI,MAAA,EAAQ,CAAA;AAC1C,QAAA,OAAO,UAAA,CAAW,KAAK,qBAAqB,CAAA;AAAA,MAC9C,SAAS,KAAA,EAAO;AACd,QAAA,GAAA,CAAI,MAAA,CAAO,MAAM,yCAAA,EAA2C,EAAE,OAAO,MAAA,CAAO,KAAK,GAAG,CAAA;AACpF,QAAA,OAAO,WAAA;AAAA,UACL,+CAA+C,KAAA,YAAiB,KAAA,GAAQ,MAAM,OAAA,GAAU,MAAA,CAAO,KAAK,CAAC,CAAA;AAAA,SACvG;AAAA,MACF;AAAA,IACF;AAAA,GACF;AACF;;;AC/FO,SAAS,mBAAA,CACd,MAAA,EACA,GAAA,EACA,KAAA,EACM;AACN,EAAA,MAAA,CAAO,YAAA;AAAA,IACL,KAAA,CAAM,WAAA,CAAY,GAAA,CAAI,WAAA,EAAa,QAAQ,CAAC,CAAA;AAAA,IAC5C;AAAA,MACE,KAAA,EAAO,2BAAA;AAAA,MACP,WAAA,EACE,uGAAA;AAAA,MACF,aAAa;AAAC,KAChB;AAAA,IACA,YAAY;AACV,MAAA,IAAI;AACF,QAAA,MAAM,IAAA,GAAO,MAAM,GAAA,CAAI,GAAA,CAAI,UAAU,OAAA,CAAmC,MAAA,EAAQ,EAAE,CAAA;AAClF,QAAA,OAAO,WAAW,EAAE,EAAA,EAAI,MAAM,MAAA,EAAQ,IAAA,CAAK,WAAW,CAAA;AAAA,MACxD,SAAS,KAAA,EAAO;AACd,QAAA,GAAA,CAAI,MAAA,CAAO,MAAM,4BAAA,EAA8B,EAAE,OAAO,MAAA,CAAO,KAAK,GAAG,CAAA;AACvE,QAAA,OAAO,WAAA;AAAA,UACL,qCAAqC,KAAA,YAAiB,KAAA,GAAQ,MAAM,OAAA,GAAU,MAAA,CAAO,KAAK,CAAC,CAAA;AAAA,SAC7F;AAAA,MACF;AAAA,IACF;AAAA,GACF;AACF;;;AC3BO,SAAS,6BAAA,CACd,MAAA,EACA,GAAA,EACA,KAAA,EACM;AACN,EAAA,MAAM,YAAY,KAAA,CAAM,cAAA,CAAe,GAAA,CAAI,WAAA,EAAa,QAAQ,CAAC,CAAA;AACjE,EAAA,MAAM,cAAc,KAAA,CAAM,cAAA,CAAe,GAAA,CAAI,WAAA,EAAa,UAAU,CAAC,CAAA;AACrE,EAAA,MAAM,WAAW,KAAA,CAAM,cAAA,CAAe,GAAA,CAAI,WAAA,EAAa,OAAO,CAAC,CAAA;AAC/D,EAAA,MAAM,eAAe,KAAA,CAAM,cAAA,CAAe,GAAA,CAAI,WAAA,EAAa,WAAW,CAAC,CAAA;AAGvE,EAAA,MAAA,CAAO,gBAAA;AAAA,IACL,qBAAA;AAAA,IACA,SAAA;AAAA,IACA;AAAA,MACE,KAAA,EAAO,4BAAA;AAAA,MACP,WAAA,EACE,+GAAA;AAAA,MACF,QAAA,EAAU;AAAA,KACZ;AAAA,IACA,YAAY;AACV,MAAA,GAAA,CAAI,MAAA,CAAO,KAAA,CAAM,CAAA,SAAA,EAAY,SAAS,CAAA,UAAA,CAAY,CAAA;AAClD,MAAA,MAAM,MAAA,GAAS,CAAA;;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA,CAAA;AAoCf,MAAA,OAAO;AAAA,QACL,QAAA,EAAU,CAAC,EAAE,GAAA,EAAK,WAAW,IAAA,EAAM,MAAA,EAAQ,QAAA,EAAU,YAAA,EAAc;AAAA,OACrE;AAAA,IACF;AAAA,GACF;AAGA,EAAA,MAAA,CAAO,gBAAA;AAAA,IACL,uBAAA;AAAA,IACA,WAAA;AAAA,IACA;AAAA,MACE,KAAA,EAAO,uBAAA;AAAA,MACP,WAAA,EAAa,wDAAA;AAAA,MACb,QAAA,EAAU;AAAA,KACZ;AAAA,IACA,YAAY;AACV,MAAA,GAAA,CAAI,MAAA,CAAO,KAAA,CAAM,CAAA,SAAA,EAAY,WAAW,CAAA,UAAA,CAAY,CAAA;AACpD,MAAA,IAAI;AACF,QAAA,MAAM,OAAO,MAAM,GAAA,CAAI,GAAA,CAAI,SAAA,CAAU,QAAsC,aAAA,EAAe;AAAA,UACxF,UAAA,EAAY,EAAE,KAAA,EAAO,EAAA,EAAI,QAAQ,CAAA;AAAE,SACpC,CAAA;AACD,QAAA,OAAO;AAAA,UACL,QAAA,EAAU;AAAA,YACR;AAAA,cACE,GAAA,EAAK,WAAA;AAAA,cACL,MAAM,IAAA,CAAK,SAAA,CAAU,IAAA,CAAK,eAAA,EAAiB,MAAM,CAAC,CAAA;AAAA,cAClD,QAAA,EAAU;AAAA;AACZ;AACF,SACF;AAAA,MACF,SAAS,KAAA,EAAO;AACd,QAAA,OAAO;AAAA,UACL,QAAA,EAAU;AAAA,YACR;AAAA,cACE,GAAA,EAAK,WAAA;AAAA,cACL,IAAA,EAAM,KAAK,SAAA,CAAU;AAAA,gBACnB,OAAO,KAAA,YAAiB,KAAA,GAAQ,KAAA,CAAM,OAAA,GAAU,OAAO,KAAK;AAAA,eAC7D,CAAA;AAAA,cACD,QAAA,EAAU;AAAA;AACZ;AACF,SACF;AAAA,MACF;AAAA,IACF;AAAA,GACF;AAGA,EAAA,MAAA,CAAO,gBAAA;AAAA,IACL,oBAAA;AAAA,IACA,QAAA;AAAA,IACA;AAAA,MACE,KAAA,EAAO,oBAAA;AAAA,MACP,WAAA,EAAa,4CAAA;AAAA,MACb,QAAA,EAAU;AAAA,KACZ;AAAA,IACA,YAAY;AACV,MAAA,GAAA,CAAI,MAAA,CAAO,KAAA,CAAM,CAAA,SAAA,EAAY,QAAQ,CAAA,UAAA,CAAY,CAAA;AACjD,MAAA,IAAI;AACF,QAAA,MAAM,OAAO,MAAM,GAAA,CAAI,GAAA,CAAI,SAAA,CAAU,QAAmC,UAAA,EAAY;AAAA,UAClF,UAAA,EAAY,EAAE,KAAA,EAAO,EAAA,EAAI,QAAQ,CAAA;AAAE,SACpC,CAAA;AACD,QAAA,OAAO;AAAA,UACL,QAAA,EAAU;AAAA,YACR;AAAA,cACE,GAAA,EAAK,QAAA;AAAA,cACL,MAAM,IAAA,CAAK,SAAA,CAAU,IAAA,CAAK,YAAA,EAAc,MAAM,CAAC,CAAA;AAAA,cAC/C,QAAA,EAAU;AAAA;AACZ;AACF,SACF;AAAA,MACF,SAAS,KAAA,EAAO;AACd,QAAA,OAAO;AAAA,UACL,QAAA,EAAU;AAAA,YACR;AAAA,cACE,GAAA,EAAK,QAAA;AAAA,cACL,IAAA,EAAM,KAAK,SAAA,CAAU;AAAA,gBACnB,OAAO,KAAA,YAAiB,KAAA,GAAQ,KAAA,CAAM,OAAA,GAAU,OAAO,KAAK;AAAA,eAC7D,CAAA;AAAA,cACD,QAAA,EAAU;AAAA;AACZ;AACF,SACF;AAAA,MACF;AAAA,IACF;AAAA,GACF;AAGA,EAAA,MAAA,CAAO,gBAAA;AAAA,IACL,wBAAA;AAAA,IACA,YAAA;AAAA,IACA;AAAA,MACE,KAAA,EAAO,oCAAA;AAAA,MACP,WAAA,EAAa,wEAAA;AAAA,MACb,QAAA,EAAU;AAAA,KACZ;AAAA,IACA,YAAY;AACV,MAAA,GAAA,CAAI,MAAA,CAAO,KAAA,CAAM,CAAA,SAAA,EAAY,YAAY,CAAA,UAAA,CAAY,CAAA;AACrD,MAAA,IAAI;AACF,QAAA,MAAM,IAAA,GAAO,MAAM,GAAA,CAAI,GAAA,CAAI,SAAA,CAAU,OAAA;AAAA,UACnC,qBAAA;AAAA,UACA;AAAC,SACH;AACA,QAAA,OAAO;AAAA,UACL,QAAA,EAAU;AAAA,YACR;AAAA,cACE,GAAA,EAAK,YAAA;AAAA,cACL,MAAM,IAAA,CAAK,SAAA,CAAU,IAAA,CAAK,sBAAA,EAAwB,MAAM,CAAC,CAAA;AAAA,cACzD,QAAA,EAAU;AAAA;AACZ;AACF,SACF;AAAA,MACF,SAAS,KAAA,EAAO;AACd,QAAA,OAAO;AAAA,UACL,QAAA,EAAU;AAAA,YACR;AAAA,cACE,GAAA,EAAK,YAAA;AAAA,cACL,IAAA,EAAM,KAAK,SAAA,CAAU;AAAA,gBACnB,OAAO,KAAA,YAAiB,KAAA,GAAQ,KAAA,CAAM,OAAA,GAAU,OAAO,KAAK;AAAA,eAC7D,CAAA;AAAA,cACD,QAAA,EAAU;AAAA;AACZ;AACF,SACF;AAAA,MACF;AAAA,IACF;AAAA,GACF;AACF;AC1LO,SAAS,2BAAA,CACd,MAAA,EACA,GAAA,EACA,KAAA,EACM;AACN,EAAA,MAAM,IAAI,GAAA,CAAI,WAAA;AACd,EAAA,MAAM,UAAA,GAAa,KAAA,CAAM,aAAA,CAAc,CAAA,EAAG,gBAAgB,CAAC,CAAA;AAC3D,EAAA,MAAM,UAAA,GAAa,KAAA,CAAM,aAAA,CAAc,CAAA,EAAG,iBAAiB,CAAC,CAAA;AAG5D,EAAA,MAAA,CAAO,cAAA;AAAA,IACL,UAAA;AAAA,IACA;AAAA,MACE,KAAA,EAAO,gBAAA;AAAA,MACP,WAAA,EACE,iKAAA;AAAA,MACF,UAAA,EAAY;AAAA,QACV,UAAUA,CAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,2BAA2B,CAAA;AAAA,QACpE,UAAUA,CAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,2CAA2C;AAAA;AACtF,KACF;AAAA,IACA,CAAC,EAAE,QAAA,EAAU,QAAA,EAAS,KAAM;AAC1B,MAAA,GAAA,CAAI,MAAA,CAAO,MAAM,CAAA,OAAA,EAAU,UAAU,WAAW,EAAE,QAAA,EAAU,UAAU,CAAA;AACtE,MAAA,MAAM,UAAA,GAAa,QAAA,GACf,CAAA,sBAAA,EAAyB,QAAQ,CAAA,EAAA,CAAA,GACjC,+CAAA;AACJ,MAAA,MAAM,QAAA,GAAW,QAAA,GAAW,CAAA,aAAA,EAAgB,QAAQ,CAAA,CAAA,CAAA,GAAM,gCAAA;AAC1D,MAAA,OAAO;AAAA,QACL,QAAA,EAAU;AAAA,UACR;AAAA,YACE,IAAA,EAAM,MAAA;AAAA,YACN,OAAA,EAAS;AAAA,cACP,IAAA,EAAM,MAAA;AAAA,cACN,IAAA,EAAM,CAAA;;AAAA,2BAAA,EAES,CAAC,CAAA,kBAAA,EAAqB,UAAU,CAAA,CAAA,EAAI,QAAQ,CAAA;AAAA,yBAAA,EAC9C,CAAC,CAAA;AAAA,0BAAA,EACA,CAAC,CAAA;AAAA,iCAAA,EACM,CAAC,qGAAqG,CAAC,CAAA;AAAA,mBAAA,EACrH,CAAC,CAAA;AAAA,qBAAA,EACC,CAAC,CAAA;;AAAA,wDAAA;AAAA;AAGZ;AACF;AACF,OACF;AAAA,IACF;AAAA,GACF;AAGA,EAAA,MAAA,CAAO,cAAA;AAAA,IACL,UAAA;AAAA,IACA;AAAA,MACE,KAAA,EAAO,iBAAA;AAAA,MACP,WAAA,EACE,gKAAA;AAAA,MACF,UAAA,EAAY;AAAA,QACV,UAAUA,CAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,kBAAkB;AAAA;AAC7D,KACF;AAAA,IACA,CAAC,EAAE,QAAA,EAAS,KAAM;AAChB,MAAA,GAAA,CAAI,OAAO,KAAA,CAAM,CAAA,OAAA,EAAU,UAAU,CAAA,OAAA,CAAA,EAAW,EAAE,UAAU,CAAA;AAC5D,MAAA,MAAM,aAAa,QAAA,GACf,CAAA,eAAA,EAAkB,QAAQ,CAAA,EAAA,CAAA,GAC1B,0CAA0C,CAAC,CAAA,iCAAA,CAAA;AAC/C,MAAA,OAAO;AAAA,QACL,QAAA,EAAU;AAAA,UACR;AAAA,YACE,IAAA,EAAM,MAAA;AAAA,YACN,OAAA,EAAS;AAAA,cACP,IAAA,EAAM,MAAA;AAAA,cACN,IAAA,EAAM,uCAAuC,UAAU;;AAAA,qBAAA,EAE9C,CAAC,CAAA;AAAA,yBAAA,EACG,CAAC,CAAA;AAAA,qBAAA,EACL,CAAC,CAAA;AAAA,sBAAA,EACA,CAAC,oFAAoF,CAAC,CAAA;AAAA,kBAAA,EAC1F,CAAC,CAAA,4DAAA,EAA0D,CAAC,CAAA,wCAAA,EAA2C,CAAC,CAAA;AAAA,mBAAA,EACvG,CAAC,sBAAsB,CAAC,CAAA;;AAAA,+CAAA;AAAA;AAGjC;AACF;AACF,OACF;AAAA,IACF;AAAA,GACF;AACF;;;ACnEA,IAAM,kBAAA,GAAgC;AAAA,EACpC,EAAA,EAAI,cAAA;AAAA,EACJ,OAAA,EAAS,OAAA;AAAA,EACT,WAAA,EAAa,cAAA;AAAA,EACb,SAAA,EAAW,CAAC,MAAM,CAAA;AAAA,EAClB,YAAA,EAAc,EAAE,KAAA,EAAO,EAAC,EAAG,WAAW,EAAC,EAAG,OAAA,EAAS,EAAC,EAAE;AAAA,EAEtD,QAAA,CAAS,QAAmB,GAAA,EAAqC;AAC/D,IAAA,MAAM,QAAkB,EAAC;AACzB,IAAA,MAAM,YAAsB,EAAC;AAC7B,IAAA,MAAM,UAAoB,EAAC;AAE3B,IAAA,MAAM,SAAA,GAAY,CAAC,CAAA,KAAsB;AACvC,MAAA,KAAA,CAAM,KAAK,CAAC,CAAA;AACZ,MAAA,OAAO,CAAA;AAAA,IACT,CAAA;AACA,IAAA,MAAM,aAAA,GAAgB,CAAC,GAAA,KAAwB;AAC7C,MAAA,SAAA,CAAU,KAAK,GAAG,CAAA;AAClB,MAAA,OAAO,GAAA;AAAA,IACT,CAAA;AACA,IAAA,MAAM,WAAA,GAAc,CAAC,CAAA,KAAsB;AACzC,MAAA,OAAA,CAAQ,KAAK,CAAC,CAAA;AACd,MAAA,OAAO,CAAA;AAAA,IACT,CAAA;AAEA,IAAA,oBAAA,CAAqB,MAAA,EAAQ,KAAK,SAAS,CAAA;AAC3C,IAAA,oBAAA,CAAqB,MAAA,EAAQ,KAAK,SAAS,CAAA;AAC3C,IAAA,oBAAA,CAAqB,MAAA,EAAQ,KAAK,SAAS,CAAA;AAC3C,IAAA,sBAAA,CAAuB,MAAA,EAAQ,KAAK,SAAS,CAAA;AAC7C,IAAA,iBAAA,CAAkB,MAAA,EAAQ,KAAK,SAAS,CAAA;AACxC,IAAA,iBAAA,CAAkB,MAAA,EAAQ,KAAK,SAAS,CAAA;AACxC,IAAA,mBAAA,CAAoB,MAAA,EAAQ,KAAK,SAAS,CAAA;AAC1C,IAAA,qBAAA,CAAsB,MAAA,EAAQ,KAAK,SAAS,CAAA;AAC5C,IAAA,qBAAA,CAAsB,MAAA,EAAQ,KAAK,SAAS,CAAA;AAC5C,IAAA,mBAAA,CAAoB,MAAA,EAAQ,KAAK,SAAS,CAAA;AAE1C,IAAA,6BAAA,CAA8B,MAAA,EAAQ,KAAK,aAAa,CAAA;AACxD,IAAA,2BAAA,CAA4B,MAAA,EAAQ,KAAK,WAAW,CAAA;AAEpD,IAAA,OAAO,EAAE,KAAA,EAAO,SAAA,EAAW,OAAA,EAAQ;AAAA,EACrC;AACF,CAAA;AAEA,IAAO,oBAAA,GAAQ","file":"index.js","sourcesContent":["/**\n * Centralized GraphQL operations for the Mybodyshield MCP module.\n *\n * Mybodyshield is the health & fitness platform (future-products ecosystem) —\n * the system of record for training programs, workouts, logged sessions,\n * nutrition plans, meal logs, body metrics, recovery signals, goals, and\n * coaching across members and coaches. Backend subgraph:\n * ~/products/mybodyshield/wspace-mybodyshield-svc/ (Hive service name `mybodyshield`).\n *\n * All operations run against the WORKSPACE gateway. Workspace scoping is\n * carried by the gateway headers (x-workspace-id / X-Workspace-Authorization)\n * issued by the auth module — Mybodyshield inputs do NOT carry a workspaceId.\n *\n * Every product-owned root field is `myb*`-prefixed and every type/enum/input is\n * `Myb*`-prefixed (the workspaces-supergraph collision-avoidance contract); each\n * is called by its REAL name here. List queries return `*Connection` envelopes\n * ({ items, pageInfo }) and accept a `PaginationInput` ({ cursor, limit, offset });\n * two read fields (`mybListCoaching`, `mybListRecoveryLogs`) return plain arrays.\n *\n * Uses template-string interpolation (not gql tagged fragments) to match the\n * canonical vibecontrols / kadaikodi modules' operations files.\n */\n\n// ---------------------------------------------------------------------------\n// Field fragments (mirror the backend object types)\n// ---------------------------------------------------------------------------\n\nexport const PAGE_INFO_FIELDS = `\n cursor hasMore\n`;\n\nexport const EXERCISE_FIELDS = `\n id workoutId name instructions muscleGroup sets reps restSeconds targetWeight\n orderIndex demo { id } createdAt updatedAt workspaceId\n`;\n\nexport const WORKOUT_FIELDS = `\n id programId name description type dayOfWeek weekNumber durationMin orderIndex\n createdAt updatedAt workspaceId\n`;\n\nexport const PROGRAM_FIELDS = `\n id name description goalType level phase status memberId coachId daysPerWeek\n weeks startDate endDate tags createdAt updatedAt workspaceId\n`;\n\nexport const SESSION_SET_FIELDS = `\n id sessionId exerciseName setNumber reps weight distanceM durationSec\n isPersonalRecord createdAt updatedAt workspaceId\n`;\n\nexport const SESSION_FIELDS = `\n id memberId programId workoutId status scheduledFor startedAt completedAt\n caloriesBurned perceivedExertion notes createdAt updatedAt workspaceId\n`;\n\nexport const MEAL_FIELDS = `\n id name memberId planId mealType calories proteinG carbsG fatG servings\n isFavorite loggedAt createdAt updatedAt workspaceId\n`;\n\nexport const NUTRITION_PLAN_FIELDS = `\n id name memberId coachId goalType calorieTarget proteinTarget carbsTarget\n fatTarget startDate endDate isActive notes createdAt updatedAt workspaceId\n`;\n\nexport const DAILY_MACROS_FIELDS = `\n date calories calorieTarget proteinG proteinTarget carbsG carbsTarget\n fatG fatTarget\n`;\n\nexport const GOAL_FIELDS = `\n id title description type status memberId baselineValue currentValue\n targetValue unit targetDate achievedAt createdAt updatedAt workspaceId\n`;\n\nexport const BODY_METRIC_FIELDS = `\n id memberId type value unit measuredAt notes photo { id }\n createdAt updatedAt workspaceId\n`;\n\nexport const RECOVERY_FIELDS = `\n id memberId metric score sleepHours notes loggedAt createdAt updatedAt workspaceId\n`;\n\nexport const COACHING_FIELDS = `\n id coachId memberId status specialty shareWorkouts shareNutrition shareMetrics\n notes startedAt endedAt createdAt updatedAt workspaceId\n`;\n\n// ---------------------------------------------------------------------------\n// Programs\n// ---------------------------------------------------------------------------\n\nexport const GET_PROGRAM = `\n query MybodyshieldGetProgram($id: ID!) {\n mybProgram(id: $id) {\n ${PROGRAM_FIELDS}\n workouts {\n ${WORKOUT_FIELDS}\n exercises { ${EXERCISE_FIELDS} }\n }\n }\n }\n`;\n\nexport const LIST_PROGRAMS = `\n query MybodyshieldListPrograms(\n $memberId: ID\n $status: MybProgramStatus\n $pagination: PaginationInput\n ) {\n mybListPrograms(memberId: $memberId, status: $status, pagination: $pagination) {\n items { ${PROGRAM_FIELDS} }\n pageInfo { ${PAGE_INFO_FIELDS} }\n }\n }\n`;\n\nexport const CREATE_PROGRAM = `\n mutation MybodyshieldCreateProgram($input: MybCreateProgramInput!) {\n mybCreateProgram(input: $input) { ${PROGRAM_FIELDS} }\n }\n`;\n\nexport const UPDATE_PROGRAM = `\n mutation MybodyshieldUpdateProgram($id: ID!, $input: MybUpdateProgramInput!) {\n mybUpdateProgram(id: $id, input: $input) { ${PROGRAM_FIELDS} }\n }\n`;\n\nexport const TRANSITION_PROGRAM = `\n mutation MybodyshieldTransitionProgram($id: ID!, $status: MybProgramStatus!) {\n mybTransitionProgram(id: $id, status: $status) { ${PROGRAM_FIELDS} }\n }\n`;\n\nexport const ARCHIVE_PROGRAM = `\n mutation MybodyshieldArchiveProgram($id: ID!) {\n mybArchiveProgram(id: $id)\n }\n`;\n\n// ---------------------------------------------------------------------------\n// Workouts + exercises\n// ---------------------------------------------------------------------------\n\nexport const LIST_PROGRAM_WORKOUTS = `\n query MybodyshieldListProgramWorkouts($programId: ID!) {\n mybProgramWorkouts(programId: $programId) {\n ${WORKOUT_FIELDS}\n exercises { ${EXERCISE_FIELDS} }\n }\n }\n`;\n\nexport const ADD_WORKOUT = `\n mutation MybodyshieldAddWorkout($input: MybCreateWorkoutInput!) {\n mybAddWorkout(input: $input) { ${WORKOUT_FIELDS} }\n }\n`;\n\nexport const ADD_EXERCISE = `\n mutation MybodyshieldAddExercise($input: MybCreateExerciseInput!) {\n mybAddExercise(input: $input) { ${EXERCISE_FIELDS} }\n }\n`;\n\n// ---------------------------------------------------------------------------\n// Sessions + sets\n// ---------------------------------------------------------------------------\n\nexport const GET_SESSION = `\n query MybodyshieldGetSession($id: ID!) {\n mybSession(id: $id) {\n ${SESSION_FIELDS}\n sets { ${SESSION_SET_FIELDS} }\n }\n }\n`;\n\nexport const LIST_SESSIONS = `\n query MybodyshieldListSessions(\n $programId: ID\n $status: MybSessionStatus\n $pagination: PaginationInput\n ) {\n mybListSessions(programId: $programId, status: $status, pagination: $pagination) {\n items {\n ${SESSION_FIELDS}\n sets { ${SESSION_SET_FIELDS} }\n }\n pageInfo { ${PAGE_INFO_FIELDS} }\n }\n }\n`;\n\nexport const START_SESSION = `\n mutation MybodyshieldStartSession($input: MybStartSessionInput!) {\n mybStartSession(input: $input) {\n ${SESSION_FIELDS}\n sets { ${SESSION_SET_FIELDS} }\n }\n }\n`;\n\nexport const COMPLETE_SESSION = `\n mutation MybodyshieldCompleteSession($id: ID!, $input: MybCompleteSessionInput!) {\n mybCompleteSession(id: $id, input: $input) {\n ${SESSION_FIELDS}\n sets { ${SESSION_SET_FIELDS} }\n }\n }\n`;\n\nexport const LOG_SET = `\n mutation MybodyshieldLogSet($input: MybLogSetInput!) {\n mybLogSet(input: $input) { ${SESSION_SET_FIELDS} }\n }\n`;\n\n// ---------------------------------------------------------------------------\n// Nutrition plans + daily macros\n// ---------------------------------------------------------------------------\n\nexport const GET_NUTRITION_PLAN = `\n query MybodyshieldGetNutritionPlan($id: ID!) {\n mybNutritionPlan(id: $id) {\n ${NUTRITION_PLAN_FIELDS}\n meals { ${MEAL_FIELDS} }\n }\n }\n`;\n\nexport const ACTIVE_NUTRITION_PLAN = `\n query MybodyshieldActiveNutritionPlan($memberId: ID) {\n mybActiveNutritionPlan(memberId: $memberId) {\n ${NUTRITION_PLAN_FIELDS}\n meals { ${MEAL_FIELDS} }\n }\n }\n`;\n\nexport const CREATE_NUTRITION_PLAN = `\n mutation MybodyshieldCreateNutritionPlan($input: MybCreateNutritionPlanInput!) {\n mybCreateNutritionPlan(input: $input) { ${NUTRITION_PLAN_FIELDS} }\n }\n`;\n\nexport const UPDATE_NUTRITION_PLAN = `\n mutation MybodyshieldUpdateNutritionPlan(\n $id: ID!\n $input: MybUpdateNutritionPlanInput!\n ) {\n mybUpdateNutritionPlan(id: $id, input: $input) { ${NUTRITION_PLAN_FIELDS} }\n }\n`;\n\nexport const ACTIVATE_NUTRITION_PLAN = `\n mutation MybodyshieldActivateNutritionPlan($id: ID!) {\n mybActivateNutritionPlan(id: $id) { ${NUTRITION_PLAN_FIELDS} }\n }\n`;\n\nexport const DAILY_MACROS = `\n query MybodyshieldDailyMacros($memberId: ID, $date: DateTime) {\n mybDailyMacros(memberId: $memberId, date: $date) { ${DAILY_MACROS_FIELDS} }\n }\n`;\n\n// ---------------------------------------------------------------------------\n// Meals\n// ---------------------------------------------------------------------------\n\nexport const LIST_MEALS = `\n query MybodyshieldListMeals(\n $planId: ID\n $mealType: MybMealType\n $pagination: PaginationInput\n ) {\n mybListMeals(planId: $planId, mealType: $mealType, pagination: $pagination) {\n items { ${MEAL_FIELDS} }\n pageInfo { ${PAGE_INFO_FIELDS} }\n }\n }\n`;\n\nexport const LOG_MEAL = `\n mutation MybodyshieldLogMeal($input: MybLogMealInput!) {\n mybLogMeal(input: $input) { ${MEAL_FIELDS} }\n }\n`;\n\nexport const DELETE_MEAL = `\n mutation MybodyshieldDeleteMeal($id: ID!) {\n mybDeleteMeal(id: $id)\n }\n`;\n\n// ---------------------------------------------------------------------------\n// Goals\n// ---------------------------------------------------------------------------\n\nexport const GET_GOAL = `\n query MybodyshieldGetGoal($id: ID!) {\n mybGoal(id: $id) { ${GOAL_FIELDS} }\n }\n`;\n\nexport const LIST_GOALS = `\n query MybodyshieldListGoals(\n $memberId: ID\n $status: MybGoalStatus\n $pagination: PaginationInput\n ) {\n mybListGoals(memberId: $memberId, status: $status, pagination: $pagination) {\n items { ${GOAL_FIELDS} }\n pageInfo { ${PAGE_INFO_FIELDS} }\n }\n }\n`;\n\nexport const CREATE_GOAL = `\n mutation MybodyshieldCreateGoal($input: MybCreateGoalInput!) {\n mybCreateGoal(input: $input) { ${GOAL_FIELDS} }\n }\n`;\n\nexport const UPDATE_GOAL = `\n mutation MybodyshieldUpdateGoal($id: ID!, $input: MybUpdateGoalInput!) {\n mybUpdateGoal(id: $id, input: $input) { ${GOAL_FIELDS} }\n }\n`;\n\nexport const ACHIEVE_GOAL = `\n mutation MybodyshieldAchieveGoal($id: ID!) {\n mybAchieveGoal(id: $id) { ${GOAL_FIELDS} }\n }\n`;\n\n// ---------------------------------------------------------------------------\n// Body metrics\n// ---------------------------------------------------------------------------\n\nexport const LIST_BODY_METRICS = `\n query MybodyshieldListBodyMetrics(\n $memberId: ID\n $type: MybBodyMetricType\n $pagination: PaginationInput\n ) {\n mybListBodyMetrics(memberId: $memberId, type: $type, pagination: $pagination) {\n items { ${BODY_METRIC_FIELDS} }\n pageInfo { ${PAGE_INFO_FIELDS} }\n }\n }\n`;\n\nexport const RECORD_BODY_METRIC = `\n mutation MybodyshieldRecordBodyMetric($input: MybRecordMetricInput!) {\n mybRecordBodyMetric(input: $input) { ${BODY_METRIC_FIELDS} }\n }\n`;\n\n// ---------------------------------------------------------------------------\n// Recovery\n// ---------------------------------------------------------------------------\n\nexport const LIST_RECOVERY_LOGS = `\n query MybodyshieldListRecoveryLogs($memberId: ID, $metric: MybRecoveryMetric) {\n mybListRecoveryLogs(memberId: $memberId, metric: $metric) { ${RECOVERY_FIELDS} }\n }\n`;\n\nexport const LOG_RECOVERY = `\n mutation MybodyshieldLogRecovery($input: MybLogRecoveryInput!) {\n mybLogRecovery(input: $input) { ${RECOVERY_FIELDS} }\n }\n`;\n\n// ---------------------------------------------------------------------------\n// Coaching\n// ---------------------------------------------------------------------------\n\nexport const LIST_COACHING = `\n query MybodyshieldListCoaching($memberId: ID, $status: MybCoachingStatus) {\n mybListCoaching(memberId: $memberId, status: $status) { ${COACHING_FIELDS} }\n }\n`;\n\nexport const CREATE_COACHING = `\n mutation MybodyshieldCreateCoaching($input: MybCreateCoachingInput!) {\n mybCreateCoaching(input: $input) { ${COACHING_FIELDS} }\n }\n`;\n\nexport const TRANSITION_COACHING = `\n mutation MybodyshieldTransitionCoaching($id: ID!, $status: MybCoachingStatus!) {\n mybTransitionCoaching(id: $id, status: $status) { ${COACHING_FIELDS} }\n }\n`;\n\n// ---------------------------------------------------------------------------\n// Health\n// ---------------------------------------------------------------------------\n\nexport const HEALTH = `\n query MybodyshieldHealth {\n mybHealth\n }\n`;\n","/**\n * Shared zod schemas for the Mybodyshield tool surface.\n *\n * Every backend enum is mirrored as a tight zod enum so Claude Desktop grounds\n * tool calls against the exact allowed values. Enum members are kept in the\n * exact UPPER_SNAKE form the `Myb*` subgraph enums declare.\n */\n\nimport { z } from 'zod';\n\nexport const GoalTypeEnum = z\n .enum(['ENDURANCE', 'GENERAL_FITNESS', 'MOBILITY', 'MUSCLE_GAIN', 'STRENGTH', 'WEIGHT_LOSS'])\n .describe('Training/nutrition goal type (MybGoalType)');\n\nexport const GoalStatusEnum = z\n .enum(['ABANDONED', 'ACHIEVED', 'ACTIVE', 'PAUSED'])\n .describe('Lifecycle status of a goal (MybGoalStatus)');\n\nexport const FitnessLevelEnum = z\n .enum(['ADVANCED', 'BEGINNER', 'ELITE', 'INTERMEDIATE'])\n .describe('Member fitness level for a program (MybFitnessLevel)');\n\nexport const ProgramPhaseEnum = z\n .enum(['BUILD', 'DELOAD', 'MAINTENANCE', 'PEAK'])\n .describe('Periodization phase of a program (MybProgramPhase)');\n\nexport const ProgramStatusEnum = z\n .enum(['ACTIVE', 'ARCHIVED', 'COMPLETED', 'DRAFT'])\n .describe('Lifecycle status of a training program (MybProgramStatus)');\n\nexport const WorkoutTypeEnum = z\n .enum(['CARDIO', 'HIIT', 'MOBILITY', 'RECOVERY', 'STRENGTH', 'YOGA'])\n .describe('Type of a workout (MybWorkoutType)');\n\nexport const MuscleGroupEnum = z\n .enum(['ARMS', 'BACK', 'CHEST', 'CORE', 'FULL_BODY', 'LEGS', 'SHOULDERS'])\n .describe('Primary muscle group an exercise targets (MybMuscleGroup)');\n\nexport const SessionStatusEnum = z\n .enum(['COMPLETED', 'IN_PROGRESS', 'SCHEDULED', 'SKIPPED'])\n .describe('Status of a logged workout session (MybSessionStatus)');\n\nexport const MealTypeEnum = z\n .enum(['BREAKFAST', 'DINNER', 'LUNCH', 'SNACK'])\n .describe('Meal slot a meal log belongs to (MybMealType)');\n\nexport const BodyMetricTypeEnum = z\n .enum(['ARM', 'BODY_FAT', 'CHEST', 'HIPS', 'RESTING_HEART_RATE', 'THIGH', 'WAIST', 'WEIGHT'])\n .describe('Kind of body measurement (MybBodyMetricType)');\n\nexport const RecoveryMetricEnum = z\n .enum(['MOOD', 'READINESS', 'SLEEP', 'SORENESS', 'STRESS'])\n .describe('Kind of recovery/wellbeing signal (MybRecoveryMetric)');\n\nexport const CoachingStatusEnum = z\n .enum(['ACTIVE', 'ENDED', 'PAUSED', 'PENDING'])\n .describe('Status of a coach↔member relationship (MybCoachingStatus)');\n","/**\n * Mybodyshield training-program tools.\n *\n * Surface (6): programs_{get,list,create,update,transition,archive}.\n * Backed by mybProgram / mybListPrograms / mybCreateProgram / mybUpdateProgram /\n * mybTransitionProgram / mybArchiveProgram — all called by their REAL names in\n * operations.ts. `programs_get` includes nested workouts + exercises.\n */\n\nimport { z } from 'zod';\nimport { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport { jsonResult, errorResult, mcpToolName, type McpContext } from '../../../core/index.js';\nimport * as ops from '../operations.js';\nimport { GoalTypeEnum, FitnessLevelEnum, ProgramPhaseEnum, ProgramStatusEnum } from './shared.js';\n\nexport function registerProgramTools(\n server: McpServer,\n ctx: McpContext,\n track: (n: string) => string,\n): void {\n server.registerTool(\n track(mcpToolName(ctx.productName, 'programs_get')),\n {\n title: 'Get Training Program',\n description:\n 'Fetch a single Mybodyshield training program by ID, including its nested workouts and exercises.',\n inputSchema: { id: z.string().describe('Program ID') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n mybProgram: Record<string, unknown> | null;\n }>(ops.GET_PROGRAM, { id });\n if (!data.mybProgram) return errorResult(`Program ${id} not found`);\n return jsonResult(data.mybProgram);\n } catch (error) {\n ctx.logger.error('mybodyshield programs_get failed', { error: String(error) });\n return errorResult(\n `Failed to get program: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'programs_list')),\n {\n title: 'List Training Programs',\n description:\n 'List training programs in the bound workspace, optionally filtered by member and lifecycle status. Returns a paginated connection ({ items, pageInfo }).',\n inputSchema: {\n memberId: z.string().optional().describe('Filter by member (user) ID'),\n status: ProgramStatusEnum.optional().describe('Filter by program status'),\n limit: z.number().int().optional().describe('Page size (default 50)'),\n offset: z.number().int().optional().describe('Pagination offset (default 0)'),\n cursor: z.string().optional().describe('Opaque pagination cursor'),\n },\n },\n async ({ memberId, status, limit, offset, cursor }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n mybListPrograms: Record<string, unknown>;\n }>(ops.LIST_PROGRAMS, {\n memberId,\n status,\n pagination: { limit: limit ?? 50, offset: offset ?? 0, cursor },\n });\n return jsonResult(data.mybListPrograms);\n } catch (error) {\n ctx.logger.error('mybodyshield programs_list failed', { error: String(error) });\n return errorResult(\n `Failed to list programs: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'programs_create')),\n {\n title: 'Create Training Program',\n description:\n 'Create a training program. `name` is required; goalType/level/phase default to GENERAL_FITNESS/BEGINNER/BUILD when omitted.',\n inputSchema: {\n name: z.string().min(1).describe('Program name'),\n memberId: z.string().optional().describe('Member (user) ID the program is for'),\n coachId: z.string().optional().describe('Coach (user) ID authoring the program'),\n description: z.string().optional().describe('Program description'),\n goalType: GoalTypeEnum.optional().describe('Primary goal (default GENERAL_FITNESS)'),\n level: FitnessLevelEnum.optional().describe('Target fitness level (default BEGINNER)'),\n phase: ProgramPhaseEnum.optional().describe('Periodization phase (default BUILD)'),\n daysPerWeek: z.number().int().optional().describe('Training days per week'),\n weeks: z.number().int().optional().describe('Program length in weeks'),\n startDate: z.string().optional().describe('Start date (ISO-8601 DateTime)'),\n endDate: z.string().optional().describe('End date (ISO-8601 DateTime)'),\n tags: z.array(z.string()).optional().describe('Free-form tags'),\n },\n },\n async ({\n name,\n memberId,\n coachId,\n description,\n goalType,\n level,\n phase,\n daysPerWeek,\n weeks,\n startDate,\n endDate,\n tags,\n }) => {\n try {\n const input: Record<string, unknown> = { name };\n if (memberId !== undefined) input.memberId = memberId;\n if (coachId !== undefined) input.coachId = coachId;\n if (description !== undefined) input.description = description;\n if (goalType !== undefined) input.goalType = goalType;\n if (level !== undefined) input.level = level;\n if (phase !== undefined) input.phase = phase;\n if (daysPerWeek !== undefined) input.daysPerWeek = daysPerWeek;\n if (weeks !== undefined) input.weeks = weeks;\n if (startDate !== undefined) input.startDate = startDate;\n if (endDate !== undefined) input.endDate = endDate;\n if (tags !== undefined) input.tags = tags;\n\n const data = await ctx.gql.workspace.request<{\n mybCreateProgram: Record<string, unknown>;\n }>(ops.CREATE_PROGRAM, { input });\n return jsonResult(data.mybCreateProgram);\n } catch (error) {\n ctx.logger.error('mybodyshield programs_create failed', { error: String(error) });\n return errorResult(\n `Failed to create program: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'programs_update')),\n {\n title: 'Update Training Program',\n description:\n 'Update a training program. At least one mutable field must be provided. Use `programs_transition` for lifecycle changes.',\n inputSchema: {\n id: z.string().describe('Program ID'),\n name: z.string().optional().describe('Updated name'),\n description: z.string().optional().describe('Updated description'),\n coachId: z.string().optional().describe('Updated coach (user) ID'),\n goalType: GoalTypeEnum.optional().describe('Updated primary goal'),\n level: FitnessLevelEnum.optional().describe('Updated fitness level'),\n phase: ProgramPhaseEnum.optional().describe('Updated periodization phase'),\n daysPerWeek: z.number().int().optional().describe('Updated training days per week'),\n weeks: z.number().int().optional().describe('Updated program length in weeks'),\n startDate: z.string().optional().describe('Updated start date (ISO-8601 DateTime)'),\n endDate: z.string().optional().describe('Updated end date (ISO-8601 DateTime)'),\n tags: z.array(z.string()).optional().describe('Updated tags'),\n },\n },\n async ({\n id,\n name,\n description,\n coachId,\n goalType,\n level,\n phase,\n daysPerWeek,\n weeks,\n startDate,\n endDate,\n tags,\n }) => {\n try {\n const input: Record<string, unknown> = {};\n if (name !== undefined) input.name = name;\n if (description !== undefined) input.description = description;\n if (coachId !== undefined) input.coachId = coachId;\n if (goalType !== undefined) input.goalType = goalType;\n if (level !== undefined) input.level = level;\n if (phase !== undefined) input.phase = phase;\n if (daysPerWeek !== undefined) input.daysPerWeek = daysPerWeek;\n if (weeks !== undefined) input.weeks = weeks;\n if (startDate !== undefined) input.startDate = startDate;\n if (endDate !== undefined) input.endDate = endDate;\n if (tags !== undefined) input.tags = tags;\n\n if (Object.keys(input).length === 0) {\n return errorResult(\n 'No updates specified — provide at least one of name/description/coachId/goalType/level/phase/daysPerWeek/weeks/startDate/endDate/tags',\n );\n }\n\n const data = await ctx.gql.workspace.request<{\n mybUpdateProgram: Record<string, unknown>;\n }>(ops.UPDATE_PROGRAM, { id, input });\n return jsonResult(data.mybUpdateProgram);\n } catch (error) {\n ctx.logger.error('mybodyshield programs_update failed', { error: String(error) });\n return errorResult(\n `Failed to update program: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'programs_transition')),\n {\n title: 'Transition Training Program',\n description:\n 'Advance a program through its lifecycle (validated transitions): DRAFT → ACTIVE → COMPLETED / ARCHIVED.',\n inputSchema: {\n id: z.string().describe('Program ID'),\n status: ProgramStatusEnum.describe('Target lifecycle status'),\n },\n },\n async ({ id, status }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n mybTransitionProgram: Record<string, unknown>;\n }>(ops.TRANSITION_PROGRAM, { id, status });\n return jsonResult(data.mybTransitionProgram);\n } catch (error) {\n ctx.logger.error('mybodyshield programs_transition failed', { error: String(error) });\n return errorResult(\n `Failed to transition program: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'programs_archive')),\n {\n title: 'Archive Training Program',\n description: 'Archive a training program by ID. Returns true on success.',\n inputSchema: { id: z.string().describe('Program ID') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{ mybArchiveProgram: boolean }>(\n ops.ARCHIVE_PROGRAM,\n { id },\n );\n return jsonResult({ archived: data.mybArchiveProgram });\n } catch (error) {\n ctx.logger.error('mybodyshield programs_archive failed', { error: String(error) });\n return errorResult(\n `Failed to archive program: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n}\n","/**\n * Mybodyshield workout + exercise tools.\n *\n * Surface (3): workouts_list, workouts_add, exercises_add.\n * Workouts and their child exercises live under a program; reads come via\n * mybProgramWorkouts (nested exercises), writes via mybAddWorkout /\n * mybAddExercise — all called by their REAL names in operations.ts.\n */\n\nimport { z } from 'zod';\nimport { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport { jsonResult, errorResult, mcpToolName, type McpContext } from '../../../core/index.js';\nimport * as ops from '../operations.js';\nimport { WorkoutTypeEnum, MuscleGroupEnum } from './shared.js';\n\nexport function registerWorkoutTools(\n server: McpServer,\n ctx: McpContext,\n track: (n: string) => string,\n): void {\n server.registerTool(\n track(mcpToolName(ctx.productName, 'workouts_list')),\n {\n title: 'List Program Workouts',\n description: 'List the workouts for a program (ordered), each with its nested exercises.',\n inputSchema: { programId: z.string().describe('Program ID') },\n },\n async ({ programId }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n mybProgramWorkouts: Array<Record<string, unknown>>;\n }>(ops.LIST_PROGRAM_WORKOUTS, { programId });\n return jsonResult(data.mybProgramWorkouts);\n } catch (error) {\n ctx.logger.error('mybodyshield workouts_list failed', { error: String(error) });\n return errorResult(\n `Failed to list program workouts: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'workouts_add')),\n {\n title: 'Add Workout',\n description:\n 'Add a workout to a program. `programId` and `name` are required; `type` defaults to STRENGTH.',\n inputSchema: {\n programId: z.string().describe('Parent program ID'),\n name: z.string().min(1).describe('Workout name'),\n description: z.string().optional().describe('Workout description'),\n type: WorkoutTypeEnum.optional().describe('Workout type (default STRENGTH)'),\n dayOfWeek: z.number().int().optional().describe('Day of week (1-7)'),\n weekNumber: z.number().int().optional().describe('Program week number'),\n durationMin: z.number().int().optional().describe('Planned duration in minutes'),\n orderIndex: z.number().int().optional().describe('Ordering within the program'),\n },\n },\n async ({\n programId,\n name,\n description,\n type,\n dayOfWeek,\n weekNumber,\n durationMin,\n orderIndex,\n }) => {\n try {\n const input: Record<string, unknown> = { programId, name };\n if (description !== undefined) input.description = description;\n if (type !== undefined) input.type = type;\n if (dayOfWeek !== undefined) input.dayOfWeek = dayOfWeek;\n if (weekNumber !== undefined) input.weekNumber = weekNumber;\n if (durationMin !== undefined) input.durationMin = durationMin;\n if (orderIndex !== undefined) input.orderIndex = orderIndex;\n\n const data = await ctx.gql.workspace.request<{\n mybAddWorkout: Record<string, unknown>;\n }>(ops.ADD_WORKOUT, { input });\n return jsonResult(data.mybAddWorkout);\n } catch (error) {\n ctx.logger.error('mybodyshield workouts_add failed', { error: String(error) });\n return errorResult(\n `Failed to add workout: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'exercises_add')),\n {\n title: 'Add Exercise',\n description:\n 'Add an exercise to a workout. `workoutId` and `name` are required; `muscleGroup` defaults to FULL_BODY. `demoFileId` references a wspace-files-svc File (demo video/image).',\n inputSchema: {\n workoutId: z.string().describe('Parent workout ID'),\n name: z.string().min(1).describe('Exercise name'),\n instructions: z.string().optional().describe('How-to instructions'),\n muscleGroup: MuscleGroupEnum.optional().describe('Target muscle group (default FULL_BODY)'),\n sets: z.number().int().optional().describe('Number of sets'),\n reps: z.number().int().optional().describe('Reps per set'),\n restSeconds: z.number().int().optional().describe('Rest between sets (seconds)'),\n targetWeight: z.number().optional().describe('Target working weight'),\n orderIndex: z.number().int().optional().describe('Ordering within the workout'),\n demoFileId: z.string().optional().describe('wspace-files-svc File ID for the demo media'),\n },\n },\n async ({\n workoutId,\n name,\n instructions,\n muscleGroup,\n sets,\n reps,\n restSeconds,\n targetWeight,\n orderIndex,\n demoFileId,\n }) => {\n try {\n const input: Record<string, unknown> = { workoutId, name };\n if (instructions !== undefined) input.instructions = instructions;\n if (muscleGroup !== undefined) input.muscleGroup = muscleGroup;\n if (sets !== undefined) input.sets = sets;\n if (reps !== undefined) input.reps = reps;\n if (restSeconds !== undefined) input.restSeconds = restSeconds;\n if (targetWeight !== undefined) input.targetWeight = targetWeight;\n if (orderIndex !== undefined) input.orderIndex = orderIndex;\n if (demoFileId !== undefined) input.demoFileId = demoFileId;\n\n const data = await ctx.gql.workspace.request<{\n mybAddExercise: Record<string, unknown>;\n }>(ops.ADD_EXERCISE, { input });\n return jsonResult(data.mybAddExercise);\n } catch (error) {\n ctx.logger.error('mybodyshield exercises_add failed', { error: String(error) });\n return errorResult(\n `Failed to add exercise: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n}\n","/**\n * Mybodyshield workout-session + set tools.\n *\n * Surface (5): sessions_{get,list,start,complete}, sets_log.\n * Sets are children of a session; reads come via mybSession / mybListSessions\n * (nested sets), writes via mybStartSession / mybCompleteSession / mybLogSet —\n * all called by their REAL names in operations.ts.\n */\n\nimport { z } from 'zod';\nimport { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport { jsonResult, errorResult, mcpToolName, type McpContext } from '../../../core/index.js';\nimport * as ops from '../operations.js';\nimport { SessionStatusEnum } from './shared.js';\n\nexport function registerSessionTools(\n server: McpServer,\n ctx: McpContext,\n track: (n: string) => string,\n): void {\n server.registerTool(\n track(mcpToolName(ctx.productName, 'sessions_get')),\n {\n title: 'Get Workout Session',\n description: 'Fetch a single workout session by ID, including its logged sets.',\n inputSchema: { id: z.string().describe('Workout session ID') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n mybSession: Record<string, unknown> | null;\n }>(ops.GET_SESSION, { id });\n if (!data.mybSession) return errorResult(`Session ${id} not found`);\n return jsonResult(data.mybSession);\n } catch (error) {\n ctx.logger.error('mybodyshield sessions_get failed', { error: String(error) });\n return errorResult(\n `Failed to get session: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'sessions_list')),\n {\n title: 'List Workout Sessions',\n description:\n 'List workout sessions in the bound workspace, optionally filtered by program and status. Returns a paginated connection ({ items, pageInfo }).',\n inputSchema: {\n programId: z.string().optional().describe('Filter by program ID'),\n status: SessionStatusEnum.optional().describe('Filter by session status'),\n limit: z.number().int().optional().describe('Page size (default 50)'),\n offset: z.number().int().optional().describe('Pagination offset (default 0)'),\n cursor: z.string().optional().describe('Opaque pagination cursor'),\n },\n },\n async ({ programId, status, limit, offset, cursor }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n mybListSessions: Record<string, unknown>;\n }>(ops.LIST_SESSIONS, {\n programId,\n status,\n pagination: { limit: limit ?? 50, offset: offset ?? 0, cursor },\n });\n return jsonResult(data.mybListSessions);\n } catch (error) {\n ctx.logger.error('mybodyshield sessions_list failed', { error: String(error) });\n return errorResult(\n `Failed to list sessions: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'sessions_start')),\n {\n title: 'Start Workout Session',\n description:\n 'Start (or schedule) a workout session. All fields are optional — supply `workoutId`/`programId` to bind the session and `scheduledFor` to plan it for later.',\n inputSchema: {\n workoutId: z.string().optional().describe('Workout being performed'),\n programId: z.string().optional().describe('Program the session belongs to'),\n scheduledFor: z.string().optional().describe('Scheduled time (ISO-8601 DateTime)'),\n notes: z.string().optional().describe('Session notes'),\n },\n },\n async ({ workoutId, programId, scheduledFor, notes }) => {\n try {\n const input: Record<string, unknown> = {};\n if (workoutId !== undefined) input.workoutId = workoutId;\n if (programId !== undefined) input.programId = programId;\n if (scheduledFor !== undefined) input.scheduledFor = scheduledFor;\n if (notes !== undefined) input.notes = notes;\n\n const data = await ctx.gql.workspace.request<{\n mybStartSession: Record<string, unknown>;\n }>(ops.START_SESSION, { input });\n return jsonResult(data.mybStartSession);\n } catch (error) {\n ctx.logger.error('mybodyshield sessions_start failed', { error: String(error) });\n return errorResult(\n `Failed to start session: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'sessions_complete')),\n {\n title: 'Complete Workout Session',\n description:\n 'Mark a workout session complete, recording calories burned, perceived exertion (RPE), and notes.',\n inputSchema: {\n id: z.string().describe('Workout session ID'),\n caloriesBurned: z.number().int().optional().describe('Estimated calories burned'),\n perceivedExertion: z.number().int().optional().describe('Perceived exertion / RPE'),\n notes: z.string().optional().describe('Completion notes'),\n },\n },\n async ({ id, caloriesBurned, perceivedExertion, notes }) => {\n try {\n const input: Record<string, unknown> = {};\n if (caloriesBurned !== undefined) input.caloriesBurned = caloriesBurned;\n if (perceivedExertion !== undefined) input.perceivedExertion = perceivedExertion;\n if (notes !== undefined) input.notes = notes;\n\n const data = await ctx.gql.workspace.request<{\n mybCompleteSession: Record<string, unknown>;\n }>(ops.COMPLETE_SESSION, { id, input });\n return jsonResult(data.mybCompleteSession);\n } catch (error) {\n ctx.logger.error('mybodyshield sessions_complete failed', { error: String(error) });\n return errorResult(\n `Failed to complete session: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'sets_log')),\n {\n title: 'Log Session Set',\n description:\n 'Log a single set within a workout session. `sessionId` and `exerciseName` are required; record reps/weight (strength) or distanceM/durationSec (cardio) and flag personal records.',\n inputSchema: {\n sessionId: z.string().describe('Parent workout session ID'),\n exerciseName: z.string().min(1).describe('Exercise name for this set'),\n setNumber: z.number().int().optional().describe('Set ordinal within the exercise'),\n reps: z.number().int().optional().describe('Repetitions performed'),\n weight: z.number().optional().describe('Weight used'),\n distanceM: z.number().optional().describe('Distance in metres (cardio)'),\n durationSec: z.number().int().optional().describe('Duration in seconds (cardio)'),\n isPersonalRecord: z.boolean().optional().describe('Mark as a personal record'),\n },\n },\n async ({\n sessionId,\n exerciseName,\n setNumber,\n reps,\n weight,\n distanceM,\n durationSec,\n isPersonalRecord,\n }) => {\n try {\n const input: Record<string, unknown> = { sessionId, exerciseName };\n if (setNumber !== undefined) input.setNumber = setNumber;\n if (reps !== undefined) input.reps = reps;\n if (weight !== undefined) input.weight = weight;\n if (distanceM !== undefined) input.distanceM = distanceM;\n if (durationSec !== undefined) input.durationSec = durationSec;\n if (isPersonalRecord !== undefined) input.isPersonalRecord = isPersonalRecord;\n\n const data = await ctx.gql.workspace.request<{\n mybLogSet: Record<string, unknown>;\n }>(ops.LOG_SET, { input });\n return jsonResult(data.mybLogSet);\n } catch (error) {\n ctx.logger.error('mybodyshield sets_log failed', { error: String(error) });\n return errorResult(\n `Failed to log set: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n}\n","/**\n * Mybodyshield nutrition-plan tools.\n *\n * Surface (6): nutrition_{get,active,create,update,activate,daily_macros}.\n * Backed by mybNutritionPlan / mybActiveNutritionPlan / mybCreateNutritionPlan /\n * mybUpdateNutritionPlan / mybActivateNutritionPlan / mybDailyMacros — all\n * called by their REAL names in operations.ts.\n */\n\nimport { z } from 'zod';\nimport { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport { jsonResult, errorResult, mcpToolName, type McpContext } from '../../../core/index.js';\nimport * as ops from '../operations.js';\nimport { GoalTypeEnum } from './shared.js';\n\nexport function registerNutritionTools(\n server: McpServer,\n ctx: McpContext,\n track: (n: string) => string,\n): void {\n server.registerTool(\n track(mcpToolName(ctx.productName, 'nutrition_get')),\n {\n title: 'Get Nutrition Plan',\n description: 'Fetch a single nutrition plan by ID, including its logged meals.',\n inputSchema: { id: z.string().describe('Nutrition plan ID') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n mybNutritionPlan: Record<string, unknown> | null;\n }>(ops.GET_NUTRITION_PLAN, { id });\n if (!data.mybNutritionPlan) return errorResult(`Nutrition plan ${id} not found`);\n return jsonResult(data.mybNutritionPlan);\n } catch (error) {\n ctx.logger.error('mybodyshield nutrition_get failed', { error: String(error) });\n return errorResult(\n `Failed to get nutrition plan: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'nutrition_active')),\n {\n title: 'Get Active Nutrition Plan',\n description:\n \"Fetch the active nutrition plan for a member (defaults to the calling actor when memberId is omitted). Returns null when there's no active plan.\",\n inputSchema: {\n memberId: z.string().optional().describe('Member (user) ID (default: calling actor)'),\n },\n },\n async ({ memberId }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n mybActiveNutritionPlan: Record<string, unknown> | null;\n }>(ops.ACTIVE_NUTRITION_PLAN, { memberId });\n return jsonResult(data.mybActiveNutritionPlan);\n } catch (error) {\n ctx.logger.error('mybodyshield nutrition_active failed', { error: String(error) });\n return errorResult(\n `Failed to get active nutrition plan: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'nutrition_create')),\n {\n title: 'Create Nutrition Plan',\n description:\n 'Create a nutrition plan with macro targets. `name` is required; `goalType` defaults to GENERAL_FITNESS.',\n inputSchema: {\n name: z.string().min(1).describe('Plan name'),\n memberId: z.string().optional().describe('Member (user) ID the plan is for'),\n coachId: z.string().optional().describe('Coach (user) ID authoring the plan'),\n goalType: GoalTypeEnum.optional().describe('Goal (default GENERAL_FITNESS)'),\n calorieTarget: z.number().int().optional().describe('Daily calorie target'),\n proteinTarget: z.number().int().optional().describe('Daily protein target (g)'),\n carbsTarget: z.number().int().optional().describe('Daily carbohydrate target (g)'),\n fatTarget: z.number().int().optional().describe('Daily fat target (g)'),\n startDate: z.string().optional().describe('Start date (ISO-8601 DateTime)'),\n endDate: z.string().optional().describe('End date (ISO-8601 DateTime)'),\n notes: z.string().optional().describe('Plan notes'),\n },\n },\n async ({\n name,\n memberId,\n coachId,\n goalType,\n calorieTarget,\n proteinTarget,\n carbsTarget,\n fatTarget,\n startDate,\n endDate,\n notes,\n }) => {\n try {\n const input: Record<string, unknown> = { name };\n if (memberId !== undefined) input.memberId = memberId;\n if (coachId !== undefined) input.coachId = coachId;\n if (goalType !== undefined) input.goalType = goalType;\n if (calorieTarget !== undefined) input.calorieTarget = calorieTarget;\n if (proteinTarget !== undefined) input.proteinTarget = proteinTarget;\n if (carbsTarget !== undefined) input.carbsTarget = carbsTarget;\n if (fatTarget !== undefined) input.fatTarget = fatTarget;\n if (startDate !== undefined) input.startDate = startDate;\n if (endDate !== undefined) input.endDate = endDate;\n if (notes !== undefined) input.notes = notes;\n\n const data = await ctx.gql.workspace.request<{\n mybCreateNutritionPlan: Record<string, unknown>;\n }>(ops.CREATE_NUTRITION_PLAN, { input });\n return jsonResult(data.mybCreateNutritionPlan);\n } catch (error) {\n ctx.logger.error('mybodyshield nutrition_create failed', { error: String(error) });\n return errorResult(\n `Failed to create nutrition plan: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'nutrition_update')),\n {\n title: 'Update Nutrition Plan',\n description:\n 'Update a nutrition plan. At least one mutable field must be provided. Use `nutrition_activate` to make a plan the active one.',\n inputSchema: {\n id: z.string().describe('Nutrition plan ID'),\n name: z.string().optional().describe('Updated name'),\n goalType: GoalTypeEnum.optional().describe('Updated goal'),\n calorieTarget: z.number().int().optional().describe('Updated calorie target'),\n proteinTarget: z.number().int().optional().describe('Updated protein target (g)'),\n carbsTarget: z.number().int().optional().describe('Updated carbohydrate target (g)'),\n fatTarget: z.number().int().optional().describe('Updated fat target (g)'),\n startDate: z.string().optional().describe('Updated start date (ISO-8601 DateTime)'),\n endDate: z.string().optional().describe('Updated end date (ISO-8601 DateTime)'),\n notes: z.string().optional().describe('Updated notes'),\n },\n },\n async ({\n id,\n name,\n goalType,\n calorieTarget,\n proteinTarget,\n carbsTarget,\n fatTarget,\n startDate,\n endDate,\n notes,\n }) => {\n try {\n const input: Record<string, unknown> = {};\n if (name !== undefined) input.name = name;\n if (goalType !== undefined) input.goalType = goalType;\n if (calorieTarget !== undefined) input.calorieTarget = calorieTarget;\n if (proteinTarget !== undefined) input.proteinTarget = proteinTarget;\n if (carbsTarget !== undefined) input.carbsTarget = carbsTarget;\n if (fatTarget !== undefined) input.fatTarget = fatTarget;\n if (startDate !== undefined) input.startDate = startDate;\n if (endDate !== undefined) input.endDate = endDate;\n if (notes !== undefined) input.notes = notes;\n\n if (Object.keys(input).length === 0) {\n return errorResult(\n 'No updates specified — provide at least one of name/goalType/calorieTarget/proteinTarget/carbsTarget/fatTarget/startDate/endDate/notes',\n );\n }\n\n const data = await ctx.gql.workspace.request<{\n mybUpdateNutritionPlan: Record<string, unknown>;\n }>(ops.UPDATE_NUTRITION_PLAN, { id, input });\n return jsonResult(data.mybUpdateNutritionPlan);\n } catch (error) {\n ctx.logger.error('mybodyshield nutrition_update failed', { error: String(error) });\n return errorResult(\n `Failed to update nutrition plan: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'nutrition_activate')),\n {\n title: 'Activate Nutrition Plan',\n description:\n 'Make a nutrition plan the active plan for its member (deactivating any other active plan).',\n inputSchema: { id: z.string().describe('Nutrition plan ID') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n mybActivateNutritionPlan: Record<string, unknown>;\n }>(ops.ACTIVATE_NUTRITION_PLAN, { id });\n return jsonResult(data.mybActivateNutritionPlan);\n } catch (error) {\n ctx.logger.error('mybodyshield nutrition_activate failed', { error: String(error) });\n return errorResult(\n `Failed to activate nutrition plan: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'nutrition_daily_macros')),\n {\n title: 'Daily Macros Rollup',\n description:\n \"Roll up a member's logged meals for a given day against the active plan's targets (calories + protein/carbs/fat consumed vs target).\",\n inputSchema: {\n memberId: z.string().optional().describe('Member (user) ID (default: calling actor)'),\n date: z.string().optional().describe('Day to roll up (ISO-8601 DateTime; default: today)'),\n },\n },\n async ({ memberId, date }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n mybDailyMacros: Record<string, unknown>;\n }>(ops.DAILY_MACROS, { memberId, date });\n return jsonResult(data.mybDailyMacros);\n } catch (error) {\n ctx.logger.error('mybodyshield nutrition_daily_macros failed', { error: String(error) });\n return errorResult(\n `Failed to roll up daily macros: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n}\n","/**\n * Mybodyshield meal-log tools.\n *\n * Surface (3): meals_list, meals_log, meals_delete.\n * Backed by mybListMeals / mybLogMeal / mybDeleteMeal — all called by their\n * REAL names in operations.ts.\n */\n\nimport { z } from 'zod';\nimport { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport { jsonResult, errorResult, mcpToolName, type McpContext } from '../../../core/index.js';\nimport * as ops from '../operations.js';\nimport { MealTypeEnum } from './shared.js';\n\nexport function registerMealTools(\n server: McpServer,\n ctx: McpContext,\n track: (n: string) => string,\n): void {\n server.registerTool(\n track(mcpToolName(ctx.productName, 'meals_list')),\n {\n title: 'List Meal Logs',\n description:\n 'List logged meals in the bound workspace, optionally filtered by nutrition plan and meal type. Returns a paginated connection ({ items, pageInfo }).',\n inputSchema: {\n planId: z.string().optional().describe('Filter by nutrition plan ID'),\n mealType: MealTypeEnum.optional().describe('Filter by meal slot'),\n limit: z.number().int().optional().describe('Page size (default 50)'),\n offset: z.number().int().optional().describe('Pagination offset (default 0)'),\n cursor: z.string().optional().describe('Opaque pagination cursor'),\n },\n },\n async ({ planId, mealType, limit, offset, cursor }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n mybListMeals: Record<string, unknown>;\n }>(ops.LIST_MEALS, {\n planId,\n mealType,\n pagination: { limit: limit ?? 50, offset: offset ?? 0, cursor },\n });\n return jsonResult(data.mybListMeals);\n } catch (error) {\n ctx.logger.error('mybodyshield meals_list failed', { error: String(error) });\n return errorResult(\n `Failed to list meals: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'meals_log')),\n {\n title: 'Log Meal',\n description:\n 'Log a meal with its macros. `name` is required; `mealType` defaults to SNACK. Attach to a plan via `planId` to count toward daily macros.',\n inputSchema: {\n name: z.string().min(1).describe('Meal name'),\n mealType: MealTypeEnum.optional().describe('Meal slot (default SNACK)'),\n planId: z.string().optional().describe('Nutrition plan ID to attribute the meal to'),\n calories: z.number().int().optional().describe('Calories'),\n proteinG: z.number().int().optional().describe('Protein (g)'),\n carbsG: z.number().int().optional().describe('Carbohydrates (g)'),\n fatG: z.number().int().optional().describe('Fat (g)'),\n servings: z.number().optional().describe('Number of servings'),\n isFavorite: z.boolean().optional().describe('Flag as a favorite meal'),\n loggedAt: z.string().optional().describe('When the meal was eaten (ISO-8601 DateTime)'),\n },\n },\n async ({\n name,\n mealType,\n planId,\n calories,\n proteinG,\n carbsG,\n fatG,\n servings,\n isFavorite,\n loggedAt,\n }) => {\n try {\n const input: Record<string, unknown> = { name };\n if (mealType !== undefined) input.mealType = mealType;\n if (planId !== undefined) input.planId = planId;\n if (calories !== undefined) input.calories = calories;\n if (proteinG !== undefined) input.proteinG = proteinG;\n if (carbsG !== undefined) input.carbsG = carbsG;\n if (fatG !== undefined) input.fatG = fatG;\n if (servings !== undefined) input.servings = servings;\n if (isFavorite !== undefined) input.isFavorite = isFavorite;\n if (loggedAt !== undefined) input.loggedAt = loggedAt;\n\n const data = await ctx.gql.workspace.request<{\n mybLogMeal: Record<string, unknown>;\n }>(ops.LOG_MEAL, { input });\n return jsonResult(data.mybLogMeal);\n } catch (error) {\n ctx.logger.error('mybodyshield meals_log failed', { error: String(error) });\n return errorResult(\n `Failed to log meal: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'meals_delete')),\n {\n title: 'Delete Meal Log',\n description: 'Delete a logged meal by ID. Returns true on success.',\n inputSchema: { id: z.string().describe('Meal log ID') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{ mybDeleteMeal: boolean }>(ops.DELETE_MEAL, {\n id,\n });\n return jsonResult({ deleted: data.mybDeleteMeal });\n } catch (error) {\n ctx.logger.error('mybodyshield meals_delete failed', { error: String(error) });\n return errorResult(\n `Failed to delete meal: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n}\n","/**\n * Mybodyshield goal tools.\n *\n * Surface (5): goals_{get,list,create,update,achieve}.\n * Backed by mybGoal / mybListGoals / mybCreateGoal / mybUpdateGoal /\n * mybAchieveGoal — all called by their REAL names in operations.ts.\n */\n\nimport { z } from 'zod';\nimport { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport { jsonResult, errorResult, mcpToolName, type McpContext } from '../../../core/index.js';\nimport * as ops from '../operations.js';\nimport { GoalTypeEnum, GoalStatusEnum } from './shared.js';\n\nexport function registerGoalTools(\n server: McpServer,\n ctx: McpContext,\n track: (n: string) => string,\n): void {\n server.registerTool(\n track(mcpToolName(ctx.productName, 'goals_get')),\n {\n title: 'Get Goal',\n description: 'Fetch a single goal by ID.',\n inputSchema: { id: z.string().describe('Goal ID') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n mybGoal: Record<string, unknown> | null;\n }>(ops.GET_GOAL, { id });\n if (!data.mybGoal) return errorResult(`Goal ${id} not found`);\n return jsonResult(data.mybGoal);\n } catch (error) {\n ctx.logger.error('mybodyshield goals_get failed', { error: String(error) });\n return errorResult(\n `Failed to get goal: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'goals_list')),\n {\n title: 'List Goals',\n description:\n 'List goals in the bound workspace, optionally filtered by member and status. Returns a paginated connection ({ items, pageInfo }).',\n inputSchema: {\n memberId: z.string().optional().describe('Filter by member (user) ID'),\n status: GoalStatusEnum.optional().describe('Filter by goal status'),\n limit: z.number().int().optional().describe('Page size (default 50)'),\n offset: z.number().int().optional().describe('Pagination offset (default 0)'),\n cursor: z.string().optional().describe('Opaque pagination cursor'),\n },\n },\n async ({ memberId, status, limit, offset, cursor }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n mybListGoals: Record<string, unknown>;\n }>(ops.LIST_GOALS, {\n memberId,\n status,\n pagination: { limit: limit ?? 50, offset: offset ?? 0, cursor },\n });\n return jsonResult(data.mybListGoals);\n } catch (error) {\n ctx.logger.error('mybodyshield goals_list failed', { error: String(error) });\n return errorResult(\n `Failed to list goals: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'goals_create')),\n {\n title: 'Create Goal',\n description:\n 'Create a goal. `title` is required; `type` defaults to GENERAL_FITNESS. Set baseline/target values and a target date to track progress.',\n inputSchema: {\n title: z.string().min(1).describe('Goal title'),\n memberId: z.string().optional().describe('Member (user) ID the goal is for'),\n type: GoalTypeEnum.optional().describe('Goal type (default GENERAL_FITNESS)'),\n description: z.string().optional().describe('Goal description'),\n baselineValue: z.number().optional().describe('Starting value'),\n targetValue: z.number().optional().describe('Target value'),\n unit: z.string().optional().describe('Unit of measure (e.g. kg, reps, min)'),\n targetDate: z.string().optional().describe('Target date (ISO-8601 DateTime)'),\n },\n },\n async ({\n title,\n memberId,\n type,\n description,\n baselineValue,\n targetValue,\n unit,\n targetDate,\n }) => {\n try {\n const input: Record<string, unknown> = { title };\n if (memberId !== undefined) input.memberId = memberId;\n if (type !== undefined) input.type = type;\n if (description !== undefined) input.description = description;\n if (baselineValue !== undefined) input.baselineValue = baselineValue;\n if (targetValue !== undefined) input.targetValue = targetValue;\n if (unit !== undefined) input.unit = unit;\n if (targetDate !== undefined) input.targetDate = targetDate;\n\n const data = await ctx.gql.workspace.request<{\n mybCreateGoal: Record<string, unknown>;\n }>(ops.CREATE_GOAL, { input });\n return jsonResult(data.mybCreateGoal);\n } catch (error) {\n ctx.logger.error('mybodyshield goals_create failed', { error: String(error) });\n return errorResult(\n `Failed to create goal: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'goals_update')),\n {\n title: 'Update Goal',\n description:\n 'Update a goal. At least one mutable field must be provided. Use `current_value` to record progress, or `goals_achieve` to mark it achieved.',\n inputSchema: {\n id: z.string().describe('Goal ID'),\n title: z.string().optional().describe('Updated title'),\n type: GoalTypeEnum.optional().describe('Updated goal type'),\n description: z.string().optional().describe('Updated description'),\n baselineValue: z.number().optional().describe('Updated baseline value'),\n currentValue: z.number().optional().describe('Updated current/progress value'),\n targetValue: z.number().optional().describe('Updated target value'),\n unit: z.string().optional().describe('Updated unit of measure'),\n targetDate: z.string().optional().describe('Updated target date (ISO-8601 DateTime)'),\n },\n },\n async ({\n id,\n title,\n type,\n description,\n baselineValue,\n currentValue,\n targetValue,\n unit,\n targetDate,\n }) => {\n try {\n const input: Record<string, unknown> = {};\n if (title !== undefined) input.title = title;\n if (type !== undefined) input.type = type;\n if (description !== undefined) input.description = description;\n if (baselineValue !== undefined) input.baselineValue = baselineValue;\n if (currentValue !== undefined) input.currentValue = currentValue;\n if (targetValue !== undefined) input.targetValue = targetValue;\n if (unit !== undefined) input.unit = unit;\n if (targetDate !== undefined) input.targetDate = targetDate;\n\n if (Object.keys(input).length === 0) {\n return errorResult(\n 'No updates specified — provide at least one of title/type/description/baselineValue/currentValue/targetValue/unit/targetDate',\n );\n }\n\n const data = await ctx.gql.workspace.request<{\n mybUpdateGoal: Record<string, unknown>;\n }>(ops.UPDATE_GOAL, { id, input });\n return jsonResult(data.mybUpdateGoal);\n } catch (error) {\n ctx.logger.error('mybodyshield goals_update failed', { error: String(error) });\n return errorResult(\n `Failed to update goal: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'goals_achieve')),\n {\n title: 'Achieve Goal',\n description: 'Mark a goal as achieved (sets status ACHIEVED + achievedAt).',\n inputSchema: { id: z.string().describe('Goal ID') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n mybAchieveGoal: Record<string, unknown>;\n }>(ops.ACHIEVE_GOAL, { id });\n return jsonResult(data.mybAchieveGoal);\n } catch (error) {\n ctx.logger.error('mybodyshield goals_achieve failed', { error: String(error) });\n return errorResult(\n `Failed to achieve goal: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n}\n","/**\n * Mybodyshield body-metric tools.\n *\n * Surface (2): metrics_list, metrics_record.\n * Backed by mybListBodyMetrics / mybRecordBodyMetric — called by their REAL\n * names in operations.ts. `photoFileId` references a wspace-files-svc File\n * (e.g. a progress photo).\n */\n\nimport { z } from 'zod';\nimport { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport { jsonResult, errorResult, mcpToolName, type McpContext } from '../../../core/index.js';\nimport * as ops from '../operations.js';\nimport { BodyMetricTypeEnum } from './shared.js';\n\nexport function registerMetricTools(\n server: McpServer,\n ctx: McpContext,\n track: (n: string) => string,\n): void {\n server.registerTool(\n track(mcpToolName(ctx.productName, 'metrics_list')),\n {\n title: 'List Body Metrics',\n description:\n 'List recorded body metrics in the bound workspace, optionally filtered by member and metric type. Returns a paginated connection ({ items, pageInfo }).',\n inputSchema: {\n memberId: z.string().optional().describe('Filter by member (user) ID'),\n type: BodyMetricTypeEnum.optional().describe('Filter by metric type'),\n limit: z.number().int().optional().describe('Page size (default 50)'),\n offset: z.number().int().optional().describe('Pagination offset (default 0)'),\n cursor: z.string().optional().describe('Opaque pagination cursor'),\n },\n },\n async ({ memberId, type, limit, offset, cursor }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n mybListBodyMetrics: Record<string, unknown>;\n }>(ops.LIST_BODY_METRICS, {\n memberId,\n type,\n pagination: { limit: limit ?? 50, offset: offset ?? 0, cursor },\n });\n return jsonResult(data.mybListBodyMetrics);\n } catch (error) {\n ctx.logger.error('mybodyshield metrics_list failed', { error: String(error) });\n return errorResult(\n `Failed to list body metrics: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'metrics_record')),\n {\n title: 'Record Body Metric',\n description:\n 'Record a body measurement. `type` and `value` are required; attach a progress photo via `photoFileId` (a wspace-files-svc File ID).',\n inputSchema: {\n type: BodyMetricTypeEnum.describe('Metric type'),\n value: z.number().describe('Measured value'),\n unit: z.string().optional().describe('Unit of measure (e.g. kg, cm, %, bpm)'),\n memberId: z.string().optional().describe('Member (user) ID (default: calling actor)'),\n measuredAt: z\n .string()\n .optional()\n .describe('When measured (ISO-8601 DateTime; default: now)'),\n notes: z.string().optional().describe('Notes'),\n photoFileId: z\n .string()\n .optional()\n .describe('wspace-files-svc File ID for a progress photo'),\n },\n },\n async ({ type, value, unit, memberId, measuredAt, notes, photoFileId }) => {\n try {\n const input: Record<string, unknown> = { type, value };\n if (unit !== undefined) input.unit = unit;\n if (memberId !== undefined) input.memberId = memberId;\n if (measuredAt !== undefined) input.measuredAt = measuredAt;\n if (notes !== undefined) input.notes = notes;\n if (photoFileId !== undefined) input.photoFileId = photoFileId;\n\n const data = await ctx.gql.workspace.request<{\n mybRecordBodyMetric: Record<string, unknown>;\n }>(ops.RECORD_BODY_METRIC, { input });\n return jsonResult(data.mybRecordBodyMetric);\n } catch (error) {\n ctx.logger.error('mybodyshield metrics_record failed', { error: String(error) });\n return errorResult(\n `Failed to record body metric: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n}\n","/**\n * Mybodyshield recovery-log tools.\n *\n * Surface (2): recovery_list, recovery_log.\n * Backed by mybListRecoveryLogs / mybLogRecovery — called by their REAL names\n * in operations.ts. `mybListRecoveryLogs` returns a plain array (no connection\n * envelope, no pagination).\n */\n\nimport { z } from 'zod';\nimport { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport { jsonResult, errorResult, mcpToolName, type McpContext } from '../../../core/index.js';\nimport * as ops from '../operations.js';\nimport { RecoveryMetricEnum } from './shared.js';\n\nexport function registerRecoveryTools(\n server: McpServer,\n ctx: McpContext,\n track: (n: string) => string,\n): void {\n server.registerTool(\n track(mcpToolName(ctx.productName, 'recovery_list')),\n {\n title: 'List Recovery Logs',\n description:\n 'List recovery/wellbeing logs in the bound workspace, optionally filtered by member and metric. Returns a plain array.',\n inputSchema: {\n memberId: z.string().optional().describe('Filter by member (user) ID'),\n metric: RecoveryMetricEnum.optional().describe('Filter by recovery metric'),\n },\n },\n async ({ memberId, metric }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n mybListRecoveryLogs: Array<Record<string, unknown>>;\n }>(ops.LIST_RECOVERY_LOGS, { memberId, metric });\n return jsonResult(data.mybListRecoveryLogs);\n } catch (error) {\n ctx.logger.error('mybodyshield recovery_list failed', { error: String(error) });\n return errorResult(\n `Failed to list recovery logs: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'recovery_log')),\n {\n title: 'Log Recovery Signal',\n description:\n 'Log a recovery/wellbeing signal (sleep, soreness, readiness, mood, stress). `metric` defaults to READINESS. Record a 0–100 `score` and/or `sleepHours`.',\n inputSchema: {\n metric: RecoveryMetricEnum.optional().describe('Recovery metric (default READINESS)'),\n score: z.number().int().optional().describe('Score (typically 0–100)'),\n sleepHours: z.number().optional().describe('Hours slept'),\n memberId: z.string().optional().describe('Member (user) ID (default: calling actor)'),\n loggedAt: z.string().optional().describe('When logged (ISO-8601 DateTime; default: now)'),\n notes: z.string().optional().describe('Notes'),\n },\n },\n async ({ metric, score, sleepHours, memberId, loggedAt, notes }) => {\n try {\n const input: Record<string, unknown> = {};\n if (metric !== undefined) input.metric = metric;\n if (score !== undefined) input.score = score;\n if (sleepHours !== undefined) input.sleepHours = sleepHours;\n if (memberId !== undefined) input.memberId = memberId;\n if (loggedAt !== undefined) input.loggedAt = loggedAt;\n if (notes !== undefined) input.notes = notes;\n\n const data = await ctx.gql.workspace.request<{\n mybLogRecovery: Record<string, unknown>;\n }>(ops.LOG_RECOVERY, { input });\n return jsonResult(data.mybLogRecovery);\n } catch (error) {\n ctx.logger.error('mybodyshield recovery_log failed', { error: String(error) });\n return errorResult(\n `Failed to log recovery: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n}\n","/**\n * Mybodyshield coaching-relationship tools.\n *\n * Surface (3): coaching_list, coaching_create, coaching_transition.\n * Backed by mybListCoaching / mybCreateCoaching / mybTransitionCoaching —\n * called by their REAL names in operations.ts. `mybListCoaching` returns a\n * plain array (no connection envelope, no pagination).\n */\n\nimport { z } from 'zod';\nimport { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport { jsonResult, errorResult, mcpToolName, type McpContext } from '../../../core/index.js';\nimport * as ops from '../operations.js';\nimport { CoachingStatusEnum } from './shared.js';\n\nexport function registerCoachingTools(\n server: McpServer,\n ctx: McpContext,\n track: (n: string) => string,\n): void {\n server.registerTool(\n track(mcpToolName(ctx.productName, 'coaching_list')),\n {\n title: 'List Coaching Relationships',\n description:\n 'List coach↔member coaching relationships in the bound workspace, optionally filtered by member and status. Returns a plain array.',\n inputSchema: {\n memberId: z.string().optional().describe('Filter by member (user) ID'),\n status: CoachingStatusEnum.optional().describe('Filter by coaching status'),\n },\n },\n async ({ memberId, status }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n mybListCoaching: Array<Record<string, unknown>>;\n }>(ops.LIST_COACHING, { memberId, status });\n return jsonResult(data.mybListCoaching);\n } catch (error) {\n ctx.logger.error('mybodyshield coaching_list failed', { error: String(error) });\n return errorResult(\n `Failed to list coaching relationships: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'coaching_create')),\n {\n title: 'Create Coaching Relationship',\n description:\n 'Create a coaching relationship between a coach and a member (starts PENDING). Use the share flags to control what the coach can see.',\n inputSchema: {\n coachId: z.string().describe('Coach (user) ID'),\n memberId: z.string().describe('Member (user) ID'),\n specialty: z.string().optional().describe(\"Coach's specialty\"),\n shareWorkouts: z.boolean().optional().describe('Share workout data with the coach'),\n shareNutrition: z.boolean().optional().describe('Share nutrition data with the coach'),\n shareMetrics: z.boolean().optional().describe('Share body-metric data with the coach'),\n },\n },\n async ({ coachId, memberId, specialty, shareWorkouts, shareNutrition, shareMetrics }) => {\n try {\n const input: Record<string, unknown> = { coachId, memberId };\n if (specialty !== undefined) input.specialty = specialty;\n if (shareWorkouts !== undefined) input.shareWorkouts = shareWorkouts;\n if (shareNutrition !== undefined) input.shareNutrition = shareNutrition;\n if (shareMetrics !== undefined) input.shareMetrics = shareMetrics;\n\n const data = await ctx.gql.workspace.request<{\n mybCreateCoaching: Record<string, unknown>;\n }>(ops.CREATE_COACHING, { input });\n return jsonResult(data.mybCreateCoaching);\n } catch (error) {\n ctx.logger.error('mybodyshield coaching_create failed', { error: String(error) });\n return errorResult(\n `Failed to create coaching relationship: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'coaching_transition')),\n {\n title: 'Transition Coaching Relationship',\n description:\n 'Move a coaching relationship through its lifecycle: PENDING → ACTIVE → PAUSED / ENDED.',\n inputSchema: {\n id: z.string().describe('Coaching relationship ID'),\n status: CoachingStatusEnum.describe('Target coaching status'),\n },\n },\n async ({ id, status }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n mybTransitionCoaching: Record<string, unknown>;\n }>(ops.TRANSITION_COACHING, { id, status });\n return jsonResult(data.mybTransitionCoaching);\n } catch (error) {\n ctx.logger.error('mybodyshield coaching_transition failed', { error: String(error) });\n return errorResult(\n `Failed to transition coaching relationship: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n}\n","/**\n * Mybodyshield health tool.\n *\n * Surface (1): health — maps to the @public mybHealth query (no auth required),\n * the subgraph's liveness/identity probe. Exposed under the AI-friendlier,\n * ecosystem-standard `health` tool name (mirrors kadaikodi / crewfoundry).\n */\n\nimport { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport { jsonResult, errorResult, mcpToolName, type McpContext } from '../../../core/index.js';\nimport * as ops from '../operations.js';\n\nexport function registerHealthTools(\n server: McpServer,\n ctx: McpContext,\n track: (n: string) => string,\n): void {\n server.registerTool(\n track(mcpToolName(ctx.productName, 'health')),\n {\n title: 'Mybodyshield Health Check',\n description:\n 'Public liveness/identity probe for the Mybodyshield subgraph (mybHealth). Requires no authentication.',\n inputSchema: {},\n },\n async () => {\n try {\n const data = await ctx.gql.workspace.request<{ mybHealth: string }>(ops.HEALTH, {});\n return jsonResult({ ok: true, status: data.mybHealth });\n } catch (error) {\n ctx.logger.error('mybodyshield health failed', { error: String(error) });\n return errorResult(\n `Mybodyshield health check failed: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n}\n","import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport { mcpResourceUri, type McpContext } from '../../core/index.js';\nimport { LIST_PROGRAMS, LIST_GOALS, ACTIVE_NUTRITION_PLAN } from './operations.js';\n\n/**\n * Read-only Mybodyshield MCP resources. URIs are product-prefixed via\n * mcpResourceUri so they don't collide when multiple MCP servers run side by\n * side. Each is tracked at function entry so the shell manifest reflects what\n * was registered even though registration is imperative.\n */\nexport function registerMybodyshieldResources(\n server: McpServer,\n ctx: McpContext,\n track: (uri: string) => string,\n): void {\n const schemaUri = track(mcpResourceUri(ctx.productName, 'schema'));\n const programsUri = track(mcpResourceUri(ctx.productName, 'programs'));\n const goalsUri = track(mcpResourceUri(ctx.productName, 'goals'));\n const nutritionUri = track(mcpResourceUri(ctx.productName, 'nutrition'));\n\n // <product>://schema — domain overview\n server.registerResource(\n 'mybodyshield-schema',\n schemaUri,\n {\n title: 'Mybodyshield Domain Schema',\n description:\n 'Overview of the Mybodyshield health & fitness domain — entities, enums, and the per-entity tool surface.',\n mimeType: 'text/plain',\n },\n async () => {\n ctx.logger.debug(`Resource ${schemaUri} requested`);\n const schema = `# Mybodyshield Domain (Overview)\n\nHealth & fitness platform — system of record for training, nutrition, wellbeing, and coaching.\n\n## Entities\n- MybProgram — a training program (has workouts)\n- MybWorkout — a workout within a program (has exercises)\n- MybExercise — an exercise within a workout (demo File via federation)\n- MybWorkoutSession — a logged/scheduled session (has sets)\n- MybSessionSet — a single set logged in a session\n- MybNutritionPlan — a nutrition plan with macro targets (has meals)\n- MybMealLog — a logged meal with macros\n- MybGoal — a tracked fitness goal\n- MybBodyMetric — a body measurement (progress photo File via federation)\n- MybRecoveryLog — a recovery/wellbeing signal (sleep, soreness, readiness, mood, stress)\n- MybCoachingRelationship — a coach↔member relationship with share scopes\n\n## Enums\n- GoalType: ENDURANCE, GENERAL_FITNESS, MOBILITY, MUSCLE_GAIN, STRENGTH, WEIGHT_LOSS\n- GoalStatus: ABANDONED, ACHIEVED, ACTIVE, PAUSED\n- FitnessLevel: ADVANCED, BEGINNER, ELITE, INTERMEDIATE\n- ProgramPhase: BUILD, DELOAD, MAINTENANCE, PEAK\n- ProgramStatus: ACTIVE, ARCHIVED, COMPLETED, DRAFT\n- WorkoutType: CARDIO, HIIT, MOBILITY, RECOVERY, STRENGTH, YOGA\n- MuscleGroup: ARMS, BACK, CHEST, CORE, FULL_BODY, LEGS, SHOULDERS\n- SessionStatus: COMPLETED, IN_PROGRESS, SCHEDULED, SKIPPED\n- MealType: BREAKFAST, DINNER, LUNCH, SNACK\n- BodyMetricType: ARM, BODY_FAT, CHEST, HIPS, RESTING_HEART_RATE, THIGH, WAIST, WEIGHT\n- RecoveryMetric: MOOD, READINESS, SLEEP, SORENESS, STRESS\n- CoachingStatus: ACTIVE, ENDED, PAUSED, PENDING\n\n## Tool groups\nprograms, workouts (+exercises), sessions (+sets), nutrition (+daily_macros),\nmeals, goals, metrics, recovery, coaching, health.\nAll run against the WORKSPACE gateway (workspace-scoped) except the public health probe.\n`;\n return {\n contents: [{ uri: schemaUri, text: schema, mimeType: 'text/plain' }],\n };\n },\n );\n\n // <product>://programs — training-program directory\n server.registerResource(\n 'mybodyshield-programs',\n programsUri,\n {\n title: 'Mybodyshield Programs',\n description: 'The first 50 training programs in the bound workspace.',\n mimeType: 'application/json',\n },\n async () => {\n ctx.logger.debug(`Resource ${programsUri} requested`);\n try {\n const data = await ctx.gql.workspace.request<{ mybListPrograms: unknown }>(LIST_PROGRAMS, {\n pagination: { limit: 50, offset: 0 },\n });\n return {\n contents: [\n {\n uri: programsUri,\n text: JSON.stringify(data.mybListPrograms, null, 2),\n mimeType: 'application/json',\n },\n ],\n };\n } catch (error) {\n return {\n contents: [\n {\n uri: programsUri,\n text: JSON.stringify({\n error: error instanceof Error ? error.message : String(error),\n }),\n mimeType: 'application/json',\n },\n ],\n };\n }\n },\n );\n\n // <product>://goals — goal directory\n server.registerResource(\n 'mybodyshield-goals',\n goalsUri,\n {\n title: 'Mybodyshield Goals',\n description: 'The first 50 goals in the bound workspace.',\n mimeType: 'application/json',\n },\n async () => {\n ctx.logger.debug(`Resource ${goalsUri} requested`);\n try {\n const data = await ctx.gql.workspace.request<{ mybListGoals: unknown }>(LIST_GOALS, {\n pagination: { limit: 50, offset: 0 },\n });\n return {\n contents: [\n {\n uri: goalsUri,\n text: JSON.stringify(data.mybListGoals, null, 2),\n mimeType: 'application/json',\n },\n ],\n };\n } catch (error) {\n return {\n contents: [\n {\n uri: goalsUri,\n text: JSON.stringify({\n error: error instanceof Error ? error.message : String(error),\n }),\n mimeType: 'application/json',\n },\n ],\n };\n }\n },\n );\n\n // <product>://nutrition — active nutrition plan for the calling actor\n server.registerResource(\n 'mybodyshield-nutrition',\n nutritionUri,\n {\n title: 'Mybodyshield Active Nutrition Plan',\n description: \"The calling actor's active nutrition plan (with logged meals), if any.\",\n mimeType: 'application/json',\n },\n async () => {\n ctx.logger.debug(`Resource ${nutritionUri} requested`);\n try {\n const data = await ctx.gql.workspace.request<{ mybActiveNutritionPlan: unknown }>(\n ACTIVE_NUTRITION_PLAN,\n {},\n );\n return {\n contents: [\n {\n uri: nutritionUri,\n text: JSON.stringify(data.mybActiveNutritionPlan, null, 2),\n mimeType: 'application/json',\n },\n ],\n };\n } catch (error) {\n return {\n contents: [\n {\n uri: nutritionUri,\n text: JSON.stringify({\n error: error instanceof Error ? error.message : String(error),\n }),\n mimeType: 'application/json',\n },\n ],\n };\n }\n },\n );\n}\n","import { z } from 'zod';\nimport { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport { mcpPromptName, type McpContext } from '../../core/index.js';\n\n/**\n * Mybodyshield MCP prompts — guided multi-step workflows. Names are\n * product-prefixed via mcpPromptName and tracked at function entry.\n */\nexport function registerMybodyshieldPrompts(\n server: McpServer,\n ctx: McpContext,\n track: (n: string) => string,\n): void {\n const p = ctx.productName;\n const designName = track(mcpPromptName(p, 'program-design'));\n const reviewName = track(mcpPromptName(p, 'coaching-review'));\n\n // <product>-program-design — stand up a training program + nutrition\n server.registerPrompt(\n designName,\n {\n title: 'Program Design',\n description:\n 'Guide for designing a Mybodyshield training program end to end: create the program, add workouts and exercises, optionally pair a nutrition plan, and activate.',\n argsSchema: {\n memberId: z.string().optional().describe('Member the program is for'),\n goalType: z.string().optional().describe('Primary goal (e.g. STRENGTH, WEIGHT_LOSS)'),\n },\n },\n ({ memberId, goalType }) => {\n ctx.logger.debug(`Prompt ${designName} called`, { memberId, goalType });\n const memberNote = memberId\n ? `Design it for member \"${memberId}\".`\n : 'Ask the user which member the program is for.';\n const goalNote = goalType ? `Use goalType ${goalType}.` : 'Help the user pick a GoalType.';\n return {\n messages: [\n {\n role: 'user' as const,\n content: {\n type: 'text' as const,\n text: `Help me design a new Mybodyshield training program.\n\n1. **Create Program**: Use ${p}_programs_create. ${memberNote} ${goalNote} Set level, phase, daysPerWeek, and weeks.\n2. **Add Workouts**: Use ${p}_workouts_add for each session in the week (set type, dayOfWeek, weekNumber, durationMin).\n3. **Add Exercises**: Use ${p}_exercises_add for each exercise in a workout (muscleGroup, sets, reps, restSeconds, targetWeight).\n4. **(Optional) Nutrition**: Use ${p}_nutrition_create to pair a macro plan (calorieTarget, proteinTarget, carbsTarget, fatTarget) and ${p}_nutrition_activate to make it active.\n5. **Verify**: Use ${p}_programs_get to review the full program tree.\n6. **Activate**: Use ${p}_programs_transition with status=ACTIVE when ready.\n\nShow results at each step and confirm before activation.`,\n },\n },\n ],\n };\n },\n );\n\n // <product>-coaching-review — periodic member review\n server.registerPrompt(\n reviewName,\n {\n title: 'Coaching Review',\n description:\n 'Periodic member-review workflow for a coach: review recent sessions, body metrics, recovery signals, daily macros, and goal progress, then adjust the program.',\n argsSchema: {\n memberId: z.string().optional().describe('Member to review'),\n },\n },\n ({ memberId }) => {\n ctx.logger.debug(`Prompt ${reviewName} called`, { memberId });\n const memberNote = memberId\n ? `Review member \"${memberId}\".`\n : `First list coaching relationships with ${p}_coaching_list and pick a member.`;\n return {\n messages: [\n {\n role: 'user' as const,\n content: {\n type: 'text' as const,\n text: `Run a Mybodyshield coaching review. ${memberNote}\n\n1. **Training**: Use ${p}_sessions_list (filter by program/status) to see recent workout sessions and adherence.\n2. **Body Metrics**: Use ${p}_metrics_list (filter by memberId) to chart weight / body-fat / measurement trends.\n3. **Recovery**: Use ${p}_recovery_list (filter by memberId) to check sleep, soreness, readiness, mood, and stress.\n4. **Nutrition**: Use ${p}_nutrition_daily_macros for the member to compare consumed vs target macros, and ${p}_nutrition_active for the current plan.\n5. **Goals**: Use ${p}_goals_list (filter by memberId) — mark hit goals with ${p}_goals_achieve and update progress with ${p}_goals_update.\n6. **Adjust**: Use ${p}_programs_update / ${p}_nutrition_update to adapt the plan based on findings.\n\nSummarize what needs attention after each step.`,\n },\n },\n ],\n };\n },\n );\n}\n","/**\n * Mybodyshield module — domain module for the future-products ecosystem program.\n *\n * Covers all 11 @key entities of wspace-mybodyshield-svc grouped into per-entity\n * sub-APIs: programs, workouts (+exercises), sessions (+sets), nutrition (plans +\n * daily macros), meals, goals, metrics, recovery, coaching — plus the @public\n * health probe. Mirrors the kadaikodi module's structure (tools/<entity>.ts +\n * resources.ts + prompts.ts) and the canonical tags module's typing discipline.\n *\n * Backend: ~/products/mybodyshield/wspace-mybodyshield-svc/ (Hive service name\n * `mybodyshield`). All operations run against the WORKSPACE gateway; the @public\n * mybHealth probe is exposed as `<product>_health`.\n */\n\nimport type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport type { McpContext, McpModule, ModuleRegistration } from '../../core/index.js';\nimport { registerProgramTools } from './tools/programs.js';\nimport { registerWorkoutTools } from './tools/workouts.js';\nimport { registerSessionTools } from './tools/sessions.js';\nimport { registerNutritionTools } from './tools/nutrition.js';\nimport { registerMealTools } from './tools/meals.js';\nimport { registerGoalTools } from './tools/goals.js';\nimport { registerMetricTools } from './tools/metrics.js';\nimport { registerRecoveryTools } from './tools/recovery.js';\nimport { registerCoachingTools } from './tools/coaching.js';\nimport { registerHealthTools } from './tools/health.js';\nimport { registerMybodyshieldResources } from './resources.js';\nimport { registerMybodyshieldPrompts } from './prompts.js';\n\nconst mybodyshieldModule: McpModule = {\n id: 'mybodyshield',\n version: '0.0.1',\n displayName: 'Mybodyshield',\n dependsOn: ['auth'],\n capabilities: { tools: {}, resources: {}, prompts: {} },\n\n register(server: McpServer, ctx: McpContext): ModuleRegistration {\n const tools: string[] = [];\n const resources: string[] = [];\n const prompts: string[] = [];\n\n const trackTool = (n: string): string => {\n tools.push(n);\n return n;\n };\n const trackResource = (uri: string): string => {\n resources.push(uri);\n return uri;\n };\n const trackPrompt = (n: string): string => {\n prompts.push(n);\n return n;\n };\n\n registerProgramTools(server, ctx, trackTool);\n registerWorkoutTools(server, ctx, trackTool);\n registerSessionTools(server, ctx, trackTool);\n registerNutritionTools(server, ctx, trackTool);\n registerMealTools(server, ctx, trackTool);\n registerGoalTools(server, ctx, trackTool);\n registerMetricTools(server, ctx, trackTool);\n registerRecoveryTools(server, ctx, trackTool);\n registerCoachingTools(server, ctx, trackTool);\n registerHealthTools(server, ctx, trackTool);\n\n registerMybodyshieldResources(server, ctx, trackResource);\n registerMybodyshieldPrompts(server, ctx, trackPrompt);\n\n return { tools, resources, prompts };\n },\n};\n\nexport default mybodyshieldModule;\n"]}
|
|
1
|
+
{"version":3,"sources":["../../../src/modules/mybodyshield/operations.ts","../../../src/modules/mybodyshield/tools/shared.ts","../../../src/modules/mybodyshield/tools/programs.ts","../../../src/modules/mybodyshield/tools/workouts.ts","../../../src/modules/mybodyshield/tools/sessions.ts","../../../src/modules/mybodyshield/tools/nutrition.ts","../../../src/modules/mybodyshield/tools/meals.ts","../../../src/modules/mybodyshield/tools/goals.ts","../../../src/modules/mybodyshield/tools/metrics.ts","../../../src/modules/mybodyshield/tools/recovery.ts","../../../src/modules/mybodyshield/tools/coaching.ts","../../../src/modules/mybodyshield/tools/health.ts","../../../src/modules/mybodyshield/resources.ts","../../../src/modules/mybodyshield/prompts.ts","../../../src/modules/mybodyshield/index.ts"],"names":["z"],"mappings":"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","file":"index.js","sourcesContent":["/**\n * Centralized GraphQL operations for the Mybodyshield MCP module.\n *\n * Mybodyshield is the health & fitness platform (future-products ecosystem) —\n * the system of record for training programs, workouts, logged sessions,\n * nutrition plans, meal logs, body metrics, recovery signals, goals, and\n * coaching across members and coaches. Backend subgraph:\n * ~/products/mybodyshield/wspace-mybodyshield-svc/ (Hive service name `mybodyshield`).\n *\n * All operations run against the WORKSPACE gateway. Workspace scoping is\n * carried by the gateway headers (x-workspace-id / X-Workspace-Authorization)\n * issued by the auth module — Mybodyshield inputs do NOT carry a workspaceId.\n *\n * Every product-owned root field is `myb*`-prefixed and every type/enum/input is\n * `Myb*`-prefixed (the workspaces-supergraph collision-avoidance contract); each\n * is called by its REAL name here. List queries return `*Connection` envelopes\n * ({ items, pageInfo }) and accept a `PaginationInput` ({ cursor, limit, offset });\n * two read fields (`mybListCoaching`, `mybListRecoveryLogs`) return plain arrays.\n *\n * Uses template-string interpolation (not gql tagged fragments) to match the\n * canonical vibecontrols / kadaikodi modules' operations files.\n */\n\n// ---------------------------------------------------------------------------\n// Field fragments (mirror the backend object types)\n// ---------------------------------------------------------------------------\n\nexport const PAGE_INFO_FIELDS = `\n cursor hasMore\n`;\n\nexport const EXERCISE_FIELDS = `\n id workoutId name instructions muscleGroup sets reps restSeconds targetWeight\n orderIndex demo { id } createdAt updatedAt workspaceId\n`;\n\nexport const WORKOUT_FIELDS = `\n id programId name description type dayOfWeek weekNumber durationMin orderIndex\n createdAt updatedAt workspaceId\n`;\n\nexport const PROGRAM_FIELDS = `\n id name description goalType level phase status memberId coachId daysPerWeek\n weeks startDate endDate tags createdAt updatedAt workspaceId\n`;\n\nexport const SESSION_SET_FIELDS = `\n id sessionId exerciseName setNumber reps weight distanceM durationSec\n isPersonalRecord createdAt updatedAt workspaceId\n`;\n\nexport const SESSION_FIELDS = `\n id memberId programId workoutId status scheduledFor startedAt completedAt\n caloriesBurned perceivedExertion notes createdAt updatedAt workspaceId\n`;\n\nexport const MEAL_FIELDS = `\n id name memberId planId mealType calories proteinG carbsG fatG servings\n isFavorite loggedAt createdAt updatedAt workspaceId\n`;\n\nexport const NUTRITION_PLAN_FIELDS = `\n id name memberId coachId goalType calorieTarget proteinTarget carbsTarget\n fatTarget startDate endDate isActive notes createdAt updatedAt workspaceId\n`;\n\nexport const DAILY_MACROS_FIELDS = `\n date calories calorieTarget proteinG proteinTarget carbsG carbsTarget\n fatG fatTarget\n`;\n\nexport const GOAL_FIELDS = `\n id title description type status memberId baselineValue currentValue\n targetValue unit targetDate achievedAt createdAt updatedAt workspaceId\n`;\n\nexport const BODY_METRIC_FIELDS = `\n id memberId type value unit measuredAt notes photo { id }\n createdAt updatedAt workspaceId\n`;\n\nexport const RECOVERY_FIELDS = `\n id memberId metric score sleepHours notes loggedAt createdAt updatedAt workspaceId\n`;\n\nexport const COACHING_FIELDS = `\n id coachId memberId status specialty shareWorkouts shareNutrition shareMetrics\n notes startedAt endedAt createdAt updatedAt workspaceId\n`;\n\n// ---------------------------------------------------------------------------\n// Programs\n// ---------------------------------------------------------------------------\n\nexport const GET_PROGRAM = `\n query MybodyshieldGetProgram($id: ID!) {\n mybProgram(id: $id) {\n ${PROGRAM_FIELDS}\n workouts {\n ${WORKOUT_FIELDS}\n exercises { ${EXERCISE_FIELDS} }\n }\n }\n }\n`;\n\nexport const LIST_PROGRAMS = `\n query MybodyshieldListPrograms(\n $memberId: ID\n $status: MybProgramStatus\n $pagination: PaginationInput\n ) {\n mybListPrograms(memberId: $memberId, status: $status, pagination: $pagination) {\n items { ${PROGRAM_FIELDS} }\n pageInfo { ${PAGE_INFO_FIELDS} }\n }\n }\n`;\n\nexport const CREATE_PROGRAM = `\n mutation MybodyshieldCreateProgram($input: MybCreateProgramInput!) {\n mybCreateProgram(input: $input) { ${PROGRAM_FIELDS} }\n }\n`;\n\nexport const UPDATE_PROGRAM = `\n mutation MybodyshieldUpdateProgram($id: ID!, $input: MybUpdateProgramInput!) {\n mybUpdateProgram(id: $id, input: $input) { ${PROGRAM_FIELDS} }\n }\n`;\n\nexport const TRANSITION_PROGRAM = `\n mutation MybodyshieldTransitionProgram($id: ID!, $status: MybProgramStatus!) {\n mybTransitionProgram(id: $id, status: $status) { ${PROGRAM_FIELDS} }\n }\n`;\n\nexport const ARCHIVE_PROGRAM = `\n mutation MybodyshieldArchiveProgram($id: ID!) {\n mybArchiveProgram(id: $id)\n }\n`;\n\n// ---------------------------------------------------------------------------\n// Workouts + exercises\n// ---------------------------------------------------------------------------\n\nexport const LIST_PROGRAM_WORKOUTS = `\n query MybodyshieldListProgramWorkouts($programId: ID!) {\n mybProgramWorkouts(programId: $programId) {\n ${WORKOUT_FIELDS}\n exercises { ${EXERCISE_FIELDS} }\n }\n }\n`;\n\nexport const ADD_WORKOUT = `\n mutation MybodyshieldAddWorkout($input: MybCreateWorkoutInput!) {\n mybAddWorkout(input: $input) { ${WORKOUT_FIELDS} }\n }\n`;\n\nexport const ADD_EXERCISE = `\n mutation MybodyshieldAddExercise($input: MybCreateExerciseInput!) {\n mybAddExercise(input: $input) { ${EXERCISE_FIELDS} }\n }\n`;\n\n// ---------------------------------------------------------------------------\n// Sessions + sets\n// ---------------------------------------------------------------------------\n\nexport const GET_SESSION = `\n query MybodyshieldGetSession($id: ID!) {\n mybSession(id: $id) {\n ${SESSION_FIELDS}\n sets { ${SESSION_SET_FIELDS} }\n }\n }\n`;\n\nexport const LIST_SESSIONS = `\n query MybodyshieldListSessions(\n $programId: ID\n $status: MybSessionStatus\n $pagination: PaginationInput\n ) {\n mybListSessions(programId: $programId, status: $status, pagination: $pagination) {\n items {\n ${SESSION_FIELDS}\n sets { ${SESSION_SET_FIELDS} }\n }\n pageInfo { ${PAGE_INFO_FIELDS} }\n }\n }\n`;\n\nexport const START_SESSION = `\n mutation MybodyshieldStartSession($input: MybStartSessionInput!) {\n mybStartSession(input: $input) {\n ${SESSION_FIELDS}\n sets { ${SESSION_SET_FIELDS} }\n }\n }\n`;\n\nexport const COMPLETE_SESSION = `\n mutation MybodyshieldCompleteSession($id: ID!, $input: MybCompleteSessionInput!) {\n mybCompleteSession(id: $id, input: $input) {\n ${SESSION_FIELDS}\n sets { ${SESSION_SET_FIELDS} }\n }\n }\n`;\n\nexport const LOG_SET = `\n mutation MybodyshieldLogSet($input: MybLogSetInput!) {\n mybLogSet(input: $input) { ${SESSION_SET_FIELDS} }\n }\n`;\n\n// ---------------------------------------------------------------------------\n// Nutrition plans + daily macros\n// ---------------------------------------------------------------------------\n\nexport const GET_NUTRITION_PLAN = `\n query MybodyshieldGetNutritionPlan($id: ID!) {\n mybNutritionPlan(id: $id) {\n ${NUTRITION_PLAN_FIELDS}\n meals { ${MEAL_FIELDS} }\n }\n }\n`;\n\nexport const ACTIVE_NUTRITION_PLAN = `\n query MybodyshieldActiveNutritionPlan($memberId: ID) {\n mybActiveNutritionPlan(memberId: $memberId) {\n ${NUTRITION_PLAN_FIELDS}\n meals { ${MEAL_FIELDS} }\n }\n }\n`;\n\nexport const CREATE_NUTRITION_PLAN = `\n mutation MybodyshieldCreateNutritionPlan($input: MybCreateNutritionPlanInput!) {\n mybCreateNutritionPlan(input: $input) { ${NUTRITION_PLAN_FIELDS} }\n }\n`;\n\nexport const UPDATE_NUTRITION_PLAN = `\n mutation MybodyshieldUpdateNutritionPlan(\n $id: ID!\n $input: MybUpdateNutritionPlanInput!\n ) {\n mybUpdateNutritionPlan(id: $id, input: $input) { ${NUTRITION_PLAN_FIELDS} }\n }\n`;\n\nexport const ACTIVATE_NUTRITION_PLAN = `\n mutation MybodyshieldActivateNutritionPlan($id: ID!) {\n mybActivateNutritionPlan(id: $id) { ${NUTRITION_PLAN_FIELDS} }\n }\n`;\n\nexport const DAILY_MACROS = `\n query MybodyshieldDailyMacros($memberId: ID, $date: DateTime) {\n mybDailyMacros(memberId: $memberId, date: $date) { ${DAILY_MACROS_FIELDS} }\n }\n`;\n\n// ---------------------------------------------------------------------------\n// Meals\n// ---------------------------------------------------------------------------\n\nexport const LIST_MEALS = `\n query MybodyshieldListMeals(\n $planId: ID\n $mealType: MybMealType\n $pagination: PaginationInput\n ) {\n mybListMeals(planId: $planId, mealType: $mealType, pagination: $pagination) {\n items { ${MEAL_FIELDS} }\n pageInfo { ${PAGE_INFO_FIELDS} }\n }\n }\n`;\n\nexport const LOG_MEAL = `\n mutation MybodyshieldLogMeal($input: MybLogMealInput!) {\n mybLogMeal(input: $input) { ${MEAL_FIELDS} }\n }\n`;\n\nexport const DELETE_MEAL = `\n mutation MybodyshieldDeleteMeal($id: ID!) {\n mybDeleteMeal(id: $id)\n }\n`;\n\n// ---------------------------------------------------------------------------\n// Goals\n// ---------------------------------------------------------------------------\n\nexport const GET_GOAL = `\n query MybodyshieldGetGoal($id: ID!) {\n mybGoal(id: $id) { ${GOAL_FIELDS} }\n }\n`;\n\nexport const LIST_GOALS = `\n query MybodyshieldListGoals(\n $memberId: ID\n $status: MybGoalStatus\n $pagination: PaginationInput\n ) {\n mybListGoals(memberId: $memberId, status: $status, pagination: $pagination) {\n items { ${GOAL_FIELDS} }\n pageInfo { ${PAGE_INFO_FIELDS} }\n }\n }\n`;\n\nexport const CREATE_GOAL = `\n mutation MybodyshieldCreateGoal($input: MybCreateGoalInput!) {\n mybCreateGoal(input: $input) { ${GOAL_FIELDS} }\n }\n`;\n\nexport const UPDATE_GOAL = `\n mutation MybodyshieldUpdateGoal($id: ID!, $input: MybUpdateGoalInput!) {\n mybUpdateGoal(id: $id, input: $input) { ${GOAL_FIELDS} }\n }\n`;\n\nexport const ACHIEVE_GOAL = `\n mutation MybodyshieldAchieveGoal($id: ID!) {\n mybAchieveGoal(id: $id) { ${GOAL_FIELDS} }\n }\n`;\n\n// ---------------------------------------------------------------------------\n// Body metrics\n// ---------------------------------------------------------------------------\n\nexport const LIST_BODY_METRICS = `\n query MybodyshieldListBodyMetrics(\n $memberId: ID\n $type: MybBodyMetricType\n $pagination: PaginationInput\n ) {\n mybListBodyMetrics(memberId: $memberId, type: $type, pagination: $pagination) {\n items { ${BODY_METRIC_FIELDS} }\n pageInfo { ${PAGE_INFO_FIELDS} }\n }\n }\n`;\n\nexport const RECORD_BODY_METRIC = `\n mutation MybodyshieldRecordBodyMetric($input: MybRecordMetricInput!) {\n mybRecordBodyMetric(input: $input) { ${BODY_METRIC_FIELDS} }\n }\n`;\n\n// ---------------------------------------------------------------------------\n// Recovery\n// ---------------------------------------------------------------------------\n\nexport const LIST_RECOVERY_LOGS = `\n query MybodyshieldListRecoveryLogs($memberId: ID, $metric: MybRecoveryMetric) {\n mybListRecoveryLogs(memberId: $memberId, metric: $metric) { ${RECOVERY_FIELDS} }\n }\n`;\n\nexport const LOG_RECOVERY = `\n mutation MybodyshieldLogRecovery($input: MybLogRecoveryInput!) {\n mybLogRecovery(input: $input) { ${RECOVERY_FIELDS} }\n }\n`;\n\n// ---------------------------------------------------------------------------\n// Coaching\n// ---------------------------------------------------------------------------\n\nexport const LIST_COACHING = `\n query MybodyshieldListCoaching($memberId: ID, $status: MybCoachingStatus) {\n mybListCoaching(memberId: $memberId, status: $status) { ${COACHING_FIELDS} }\n }\n`;\n\nexport const CREATE_COACHING = `\n mutation MybodyshieldCreateCoaching($input: MybCreateCoachingInput!) {\n mybCreateCoaching(input: $input) { ${COACHING_FIELDS} }\n }\n`;\n\nexport const TRANSITION_COACHING = `\n mutation MybodyshieldTransitionCoaching($id: ID!, $status: MybCoachingStatus!) {\n mybTransitionCoaching(id: $id, status: $status) { ${COACHING_FIELDS} }\n }\n`;\n\n// ---------------------------------------------------------------------------\n// Health\n// ---------------------------------------------------------------------------\n\nexport const HEALTH = `\n query MybodyshieldHealth {\n mybHealth\n }\n`;\n","/**\n * Shared zod schemas for the Mybodyshield tool surface.\n *\n * Every backend enum is mirrored as a tight zod enum so Claude Desktop grounds\n * tool calls against the exact allowed values. Enum members are kept in the\n * exact UPPER_SNAKE form the `Myb*` subgraph enums declare.\n */\n\nimport { z } from 'zod';\n\nexport const GoalTypeEnum = z\n .enum(['ENDURANCE', 'GENERAL_FITNESS', 'MOBILITY', 'MUSCLE_GAIN', 'STRENGTH', 'WEIGHT_LOSS'])\n .describe('Training/nutrition goal type (MybGoalType)');\n\nexport const GoalStatusEnum = z\n .enum(['ABANDONED', 'ACHIEVED', 'ACTIVE', 'PAUSED'])\n .describe('Lifecycle status of a goal (MybGoalStatus)');\n\nexport const FitnessLevelEnum = z\n .enum(['ADVANCED', 'BEGINNER', 'ELITE', 'INTERMEDIATE'])\n .describe('Member fitness level for a program (MybFitnessLevel)');\n\nexport const ProgramPhaseEnum = z\n .enum(['BUILD', 'DELOAD', 'MAINTENANCE', 'PEAK'])\n .describe('Periodization phase of a program (MybProgramPhase)');\n\nexport const ProgramStatusEnum = z\n .enum(['ACTIVE', 'ARCHIVED', 'COMPLETED', 'DRAFT'])\n .describe('Lifecycle status of a training program (MybProgramStatus)');\n\nexport const WorkoutTypeEnum = z\n .enum(['CARDIO', 'HIIT', 'MOBILITY', 'RECOVERY', 'STRENGTH', 'YOGA'])\n .describe('Type of a workout (MybWorkoutType)');\n\nexport const MuscleGroupEnum = z\n .enum(['ARMS', 'BACK', 'CHEST', 'CORE', 'FULL_BODY', 'LEGS', 'SHOULDERS'])\n .describe('Primary muscle group an exercise targets (MybMuscleGroup)');\n\nexport const SessionStatusEnum = z\n .enum(['COMPLETED', 'IN_PROGRESS', 'SCHEDULED', 'SKIPPED'])\n .describe('Status of a logged workout session (MybSessionStatus)');\n\nexport const MealTypeEnum = z\n .enum(['BREAKFAST', 'DINNER', 'LUNCH', 'SNACK'])\n .describe('Meal slot a meal log belongs to (MybMealType)');\n\nexport const BodyMetricTypeEnum = z\n .enum(['ARM', 'BODY_FAT', 'CHEST', 'HIPS', 'RESTING_HEART_RATE', 'THIGH', 'WAIST', 'WEIGHT'])\n .describe('Kind of body measurement (MybBodyMetricType)');\n\nexport const RecoveryMetricEnum = z\n .enum(['MOOD', 'READINESS', 'SLEEP', 'SORENESS', 'STRESS'])\n .describe('Kind of recovery/wellbeing signal (MybRecoveryMetric)');\n\nexport const CoachingStatusEnum = z\n .enum(['ACTIVE', 'ENDED', 'PAUSED', 'PENDING'])\n .describe('Status of a coach↔member relationship (MybCoachingStatus)');\n","/**\n * Mybodyshield training-program tools.\n *\n * Surface (6): programs_{get,list,create,update,transition,archive}.\n * Backed by mybProgram / mybListPrograms / mybCreateProgram / mybUpdateProgram /\n * mybTransitionProgram / mybArchiveProgram — all called by their REAL names in\n * operations.ts. `programs_get` includes nested workouts + exercises.\n */\n\nimport { z } from 'zod';\nimport { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport { jsonResult, errorResult, mcpToolName, type McpContext } from '../../../core/index.js';\nimport * as ops from '../operations.js';\nimport { GoalTypeEnum, FitnessLevelEnum, ProgramPhaseEnum, ProgramStatusEnum } from './shared.js';\n\nexport function registerProgramTools(\n server: McpServer,\n ctx: McpContext,\n track: (n: string) => string,\n): void {\n server.registerTool(\n track(mcpToolName(ctx.productName, 'programs_get')),\n {\n title: 'Get Training Program',\n description:\n 'Fetch a single Mybodyshield training program by ID, including its nested workouts and exercises.',\n inputSchema: { id: z.string().describe('Program ID') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n mybProgram: Record<string, unknown> | null;\n }>(ops.GET_PROGRAM, { id });\n if (!data.mybProgram) return errorResult(`Program ${id} not found`);\n return jsonResult(data.mybProgram);\n } catch (error) {\n ctx.logger.error('mybodyshield programs_get failed', { error: String(error) });\n return errorResult(\n `Failed to get program: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'programs_list')),\n {\n title: 'List Training Programs',\n description:\n 'List training programs in the bound workspace, optionally filtered by member and lifecycle status. Returns a paginated connection ({ items, pageInfo }).',\n inputSchema: {\n memberId: z.string().optional().describe('Filter by member (user) ID'),\n status: ProgramStatusEnum.optional().describe('Filter by program status'),\n limit: z.number().int().optional().describe('Page size (default 50)'),\n offset: z.number().int().optional().describe('Pagination offset (default 0)'),\n cursor: z.string().optional().describe('Opaque pagination cursor'),\n },\n },\n async ({ memberId, status, limit, offset, cursor }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n mybListPrograms: Record<string, unknown>;\n }>(ops.LIST_PROGRAMS, {\n memberId,\n status,\n pagination: { limit: limit ?? 50, offset: offset ?? 0, cursor },\n });\n return jsonResult(data.mybListPrograms);\n } catch (error) {\n ctx.logger.error('mybodyshield programs_list failed', { error: String(error) });\n return errorResult(\n `Failed to list programs: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'programs_create')),\n {\n title: 'Create Training Program',\n description:\n 'Create a training program. `name` is required; goalType/level/phase default to GENERAL_FITNESS/BEGINNER/BUILD when omitted.',\n inputSchema: {\n name: z.string().min(1).describe('Program name'),\n memberId: z.string().optional().describe('Member (user) ID the program is for'),\n coachId: z.string().optional().describe('Coach (user) ID authoring the program'),\n description: z.string().optional().describe('Program description'),\n goalType: GoalTypeEnum.optional().describe('Primary goal (default GENERAL_FITNESS)'),\n level: FitnessLevelEnum.optional().describe('Target fitness level (default BEGINNER)'),\n phase: ProgramPhaseEnum.optional().describe('Periodization phase (default BUILD)'),\n daysPerWeek: z.number().int().optional().describe('Training days per week'),\n weeks: z.number().int().optional().describe('Program length in weeks'),\n startDate: z.string().optional().describe('Start date (ISO-8601 DateTime)'),\n endDate: z.string().optional().describe('End date (ISO-8601 DateTime)'),\n tags: z.array(z.string()).optional().describe('Free-form tags'),\n },\n },\n async ({\n name,\n memberId,\n coachId,\n description,\n goalType,\n level,\n phase,\n daysPerWeek,\n weeks,\n startDate,\n endDate,\n tags,\n }) => {\n try {\n const input: Record<string, unknown> = { name };\n if (memberId !== undefined) input.memberId = memberId;\n if (coachId !== undefined) input.coachId = coachId;\n if (description !== undefined) input.description = description;\n if (goalType !== undefined) input.goalType = goalType;\n if (level !== undefined) input.level = level;\n if (phase !== undefined) input.phase = phase;\n if (daysPerWeek !== undefined) input.daysPerWeek = daysPerWeek;\n if (weeks !== undefined) input.weeks = weeks;\n if (startDate !== undefined) input.startDate = startDate;\n if (endDate !== undefined) input.endDate = endDate;\n if (tags !== undefined) input.tags = tags;\n\n const data = await ctx.gql.workspace.request<{\n mybCreateProgram: Record<string, unknown>;\n }>(ops.CREATE_PROGRAM, { input });\n return jsonResult(data.mybCreateProgram);\n } catch (error) {\n ctx.logger.error('mybodyshield programs_create failed', { error: String(error) });\n return errorResult(\n `Failed to create program: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'programs_update')),\n {\n title: 'Update Training Program',\n description:\n 'Update a training program. At least one mutable field must be provided. Use `programs_transition` for lifecycle changes.',\n inputSchema: {\n id: z.string().describe('Program ID'),\n name: z.string().optional().describe('Updated name'),\n description: z.string().optional().describe('Updated description'),\n coachId: z.string().optional().describe('Updated coach (user) ID'),\n goalType: GoalTypeEnum.optional().describe('Updated primary goal'),\n level: FitnessLevelEnum.optional().describe('Updated fitness level'),\n phase: ProgramPhaseEnum.optional().describe('Updated periodization phase'),\n daysPerWeek: z.number().int().optional().describe('Updated training days per week'),\n weeks: z.number().int().optional().describe('Updated program length in weeks'),\n startDate: z.string().optional().describe('Updated start date (ISO-8601 DateTime)'),\n endDate: z.string().optional().describe('Updated end date (ISO-8601 DateTime)'),\n tags: z.array(z.string()).optional().describe('Updated tags'),\n },\n },\n async ({\n id,\n name,\n description,\n coachId,\n goalType,\n level,\n phase,\n daysPerWeek,\n weeks,\n startDate,\n endDate,\n tags,\n }) => {\n try {\n const input: Record<string, unknown> = {};\n if (name !== undefined) input.name = name;\n if (description !== undefined) input.description = description;\n if (coachId !== undefined) input.coachId = coachId;\n if (goalType !== undefined) input.goalType = goalType;\n if (level !== undefined) input.level = level;\n if (phase !== undefined) input.phase = phase;\n if (daysPerWeek !== undefined) input.daysPerWeek = daysPerWeek;\n if (weeks !== undefined) input.weeks = weeks;\n if (startDate !== undefined) input.startDate = startDate;\n if (endDate !== undefined) input.endDate = endDate;\n if (tags !== undefined) input.tags = tags;\n\n if (Object.keys(input).length === 0) {\n return errorResult(\n 'No updates specified — provide at least one of name/description/coachId/goalType/level/phase/daysPerWeek/weeks/startDate/endDate/tags',\n );\n }\n\n const data = await ctx.gql.workspace.request<{\n mybUpdateProgram: Record<string, unknown>;\n }>(ops.UPDATE_PROGRAM, { id, input });\n return jsonResult(data.mybUpdateProgram);\n } catch (error) {\n ctx.logger.error('mybodyshield programs_update failed', { error: String(error) });\n return errorResult(\n `Failed to update program: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'programs_transition')),\n {\n title: 'Transition Training Program',\n description:\n 'Advance a program through its lifecycle (validated transitions): DRAFT → ACTIVE → COMPLETED / ARCHIVED.',\n inputSchema: {\n id: z.string().describe('Program ID'),\n status: ProgramStatusEnum.describe('Target lifecycle status'),\n },\n },\n async ({ id, status }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n mybTransitionProgram: Record<string, unknown>;\n }>(ops.TRANSITION_PROGRAM, { id, status });\n return jsonResult(data.mybTransitionProgram);\n } catch (error) {\n ctx.logger.error('mybodyshield programs_transition failed', { error: String(error) });\n return errorResult(\n `Failed to transition program: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'programs_archive')),\n {\n title: 'Archive Training Program',\n description: 'Archive a training program by ID. Returns true on success.',\n inputSchema: { id: z.string().describe('Program ID') },\n // BOFF-3859: ARCHIVED is a terminal lifecycle state (no transition back\n // out per training.service.ts's PROGRAM_TRANSITIONS) and the resolver\n // sets `deletedAt` — this is an irreversible soft-delete, not a naming\n // pattern (`inferDestructiveHint` only matches `delete`), so it must be\n // declared explicitly to be caught by the confirmation gate.\n annotations: { destructiveHint: true },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{ mybArchiveProgram: boolean }>(\n ops.ARCHIVE_PROGRAM,\n { id },\n );\n return jsonResult({ archived: data.mybArchiveProgram });\n } catch (error) {\n ctx.logger.error('mybodyshield programs_archive failed', { error: String(error) });\n return errorResult(\n `Failed to archive program: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n}\n","/**\n * Mybodyshield workout + exercise tools.\n *\n * Surface (3): workouts_list, workouts_add, exercises_add.\n * Workouts and their child exercises live under a program; reads come via\n * mybProgramWorkouts (nested exercises), writes via mybAddWorkout /\n * mybAddExercise — all called by their REAL names in operations.ts.\n */\n\nimport { z } from 'zod';\nimport { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport { jsonResult, errorResult, mcpToolName, type McpContext } from '../../../core/index.js';\nimport * as ops from '../operations.js';\nimport { WorkoutTypeEnum, MuscleGroupEnum } from './shared.js';\n\nexport function registerWorkoutTools(\n server: McpServer,\n ctx: McpContext,\n track: (n: string) => string,\n): void {\n server.registerTool(\n track(mcpToolName(ctx.productName, 'workouts_list')),\n {\n title: 'List Program Workouts',\n description: 'List the workouts for a program (ordered), each with its nested exercises.',\n inputSchema: { programId: z.string().describe('Program ID') },\n },\n async ({ programId }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n mybProgramWorkouts: Array<Record<string, unknown>>;\n }>(ops.LIST_PROGRAM_WORKOUTS, { programId });\n return jsonResult(data.mybProgramWorkouts);\n } catch (error) {\n ctx.logger.error('mybodyshield workouts_list failed', { error: String(error) });\n return errorResult(\n `Failed to list program workouts: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'workouts_add')),\n {\n title: 'Add Workout',\n description:\n 'Add a workout to a program. `programId` and `name` are required; `type` defaults to STRENGTH.',\n inputSchema: {\n programId: z.string().describe('Parent program ID'),\n name: z.string().min(1).describe('Workout name'),\n description: z.string().optional().describe('Workout description'),\n type: WorkoutTypeEnum.optional().describe('Workout type (default STRENGTH)'),\n dayOfWeek: z.number().int().optional().describe('Day of week (1-7)'),\n weekNumber: z.number().int().optional().describe('Program week number'),\n durationMin: z.number().int().optional().describe('Planned duration in minutes'),\n orderIndex: z.number().int().optional().describe('Ordering within the program'),\n },\n },\n async ({\n programId,\n name,\n description,\n type,\n dayOfWeek,\n weekNumber,\n durationMin,\n orderIndex,\n }) => {\n try {\n const input: Record<string, unknown> = { programId, name };\n if (description !== undefined) input.description = description;\n if (type !== undefined) input.type = type;\n if (dayOfWeek !== undefined) input.dayOfWeek = dayOfWeek;\n if (weekNumber !== undefined) input.weekNumber = weekNumber;\n if (durationMin !== undefined) input.durationMin = durationMin;\n if (orderIndex !== undefined) input.orderIndex = orderIndex;\n\n const data = await ctx.gql.workspace.request<{\n mybAddWorkout: Record<string, unknown>;\n }>(ops.ADD_WORKOUT, { input });\n return jsonResult(data.mybAddWorkout);\n } catch (error) {\n ctx.logger.error('mybodyshield workouts_add failed', { error: String(error) });\n return errorResult(\n `Failed to add workout: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'exercises_add')),\n {\n title: 'Add Exercise',\n description:\n 'Add an exercise to a workout. `workoutId` and `name` are required; `muscleGroup` defaults to FULL_BODY. `demoFileId` references a wspace-files-svc File (demo video/image).',\n inputSchema: {\n workoutId: z.string().describe('Parent workout ID'),\n name: z.string().min(1).describe('Exercise name'),\n instructions: z.string().optional().describe('How-to instructions'),\n muscleGroup: MuscleGroupEnum.optional().describe('Target muscle group (default FULL_BODY)'),\n sets: z.number().int().optional().describe('Number of sets'),\n reps: z.number().int().optional().describe('Reps per set'),\n restSeconds: z.number().int().optional().describe('Rest between sets (seconds)'),\n targetWeight: z.number().optional().describe('Target working weight'),\n orderIndex: z.number().int().optional().describe('Ordering within the workout'),\n demoFileId: z.string().optional().describe('wspace-files-svc File ID for the demo media'),\n },\n },\n async ({\n workoutId,\n name,\n instructions,\n muscleGroup,\n sets,\n reps,\n restSeconds,\n targetWeight,\n orderIndex,\n demoFileId,\n }) => {\n try {\n const input: Record<string, unknown> = { workoutId, name };\n if (instructions !== undefined) input.instructions = instructions;\n if (muscleGroup !== undefined) input.muscleGroup = muscleGroup;\n if (sets !== undefined) input.sets = sets;\n if (reps !== undefined) input.reps = reps;\n if (restSeconds !== undefined) input.restSeconds = restSeconds;\n if (targetWeight !== undefined) input.targetWeight = targetWeight;\n if (orderIndex !== undefined) input.orderIndex = orderIndex;\n if (demoFileId !== undefined) input.demoFileId = demoFileId;\n\n const data = await ctx.gql.workspace.request<{\n mybAddExercise: Record<string, unknown>;\n }>(ops.ADD_EXERCISE, { input });\n return jsonResult(data.mybAddExercise);\n } catch (error) {\n ctx.logger.error('mybodyshield exercises_add failed', { error: String(error) });\n return errorResult(\n `Failed to add exercise: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n}\n","/**\n * Mybodyshield workout-session + set tools.\n *\n * Surface (5): sessions_{get,list,start,complete}, sets_log.\n * Sets are children of a session; reads come via mybSession / mybListSessions\n * (nested sets), writes via mybStartSession / mybCompleteSession / mybLogSet —\n * all called by their REAL names in operations.ts.\n */\n\nimport { z } from 'zod';\nimport { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport { jsonResult, errorResult, mcpToolName, type McpContext } from '../../../core/index.js';\nimport * as ops from '../operations.js';\nimport { SessionStatusEnum } from './shared.js';\n\nexport function registerSessionTools(\n server: McpServer,\n ctx: McpContext,\n track: (n: string) => string,\n): void {\n server.registerTool(\n track(mcpToolName(ctx.productName, 'sessions_get')),\n {\n title: 'Get Workout Session',\n description: 'Fetch a single workout session by ID, including its logged sets.',\n inputSchema: { id: z.string().describe('Workout session ID') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n mybSession: Record<string, unknown> | null;\n }>(ops.GET_SESSION, { id });\n if (!data.mybSession) return errorResult(`Session ${id} not found`);\n return jsonResult(data.mybSession);\n } catch (error) {\n ctx.logger.error('mybodyshield sessions_get failed', { error: String(error) });\n return errorResult(\n `Failed to get session: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'sessions_list')),\n {\n title: 'List Workout Sessions',\n description:\n 'List workout sessions in the bound workspace, optionally filtered by program and status. Returns a paginated connection ({ items, pageInfo }).',\n inputSchema: {\n programId: z.string().optional().describe('Filter by program ID'),\n status: SessionStatusEnum.optional().describe('Filter by session status'),\n limit: z.number().int().optional().describe('Page size (default 50)'),\n offset: z.number().int().optional().describe('Pagination offset (default 0)'),\n cursor: z.string().optional().describe('Opaque pagination cursor'),\n },\n },\n async ({ programId, status, limit, offset, cursor }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n mybListSessions: Record<string, unknown>;\n }>(ops.LIST_SESSIONS, {\n programId,\n status,\n pagination: { limit: limit ?? 50, offset: offset ?? 0, cursor },\n });\n return jsonResult(data.mybListSessions);\n } catch (error) {\n ctx.logger.error('mybodyshield sessions_list failed', { error: String(error) });\n return errorResult(\n `Failed to list sessions: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'sessions_start')),\n {\n title: 'Start Workout Session',\n description:\n 'Start (or schedule) a workout session. All fields are optional — supply `workoutId`/`programId` to bind the session and `scheduledFor` to plan it for later.',\n inputSchema: {\n workoutId: z.string().optional().describe('Workout being performed'),\n programId: z.string().optional().describe('Program the session belongs to'),\n scheduledFor: z.string().optional().describe('Scheduled time (ISO-8601 DateTime)'),\n notes: z.string().optional().describe('Session notes'),\n },\n },\n async ({ workoutId, programId, scheduledFor, notes }) => {\n try {\n const input: Record<string, unknown> = {};\n if (workoutId !== undefined) input.workoutId = workoutId;\n if (programId !== undefined) input.programId = programId;\n if (scheduledFor !== undefined) input.scheduledFor = scheduledFor;\n if (notes !== undefined) input.notes = notes;\n\n const data = await ctx.gql.workspace.request<{\n mybStartSession: Record<string, unknown>;\n }>(ops.START_SESSION, { input });\n return jsonResult(data.mybStartSession);\n } catch (error) {\n ctx.logger.error('mybodyshield sessions_start failed', { error: String(error) });\n return errorResult(\n `Failed to start session: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'sessions_complete')),\n {\n title: 'Complete Workout Session',\n description:\n 'Mark a workout session complete, recording calories burned, perceived exertion (RPE), and notes.',\n inputSchema: {\n id: z.string().describe('Workout session ID'),\n caloriesBurned: z.number().int().optional().describe('Estimated calories burned'),\n perceivedExertion: z.number().int().optional().describe('Perceived exertion / RPE'),\n notes: z.string().optional().describe('Completion notes'),\n },\n },\n async ({ id, caloriesBurned, perceivedExertion, notes }) => {\n try {\n const input: Record<string, unknown> = {};\n if (caloriesBurned !== undefined) input.caloriesBurned = caloriesBurned;\n if (perceivedExertion !== undefined) input.perceivedExertion = perceivedExertion;\n if (notes !== undefined) input.notes = notes;\n\n const data = await ctx.gql.workspace.request<{\n mybCompleteSession: Record<string, unknown>;\n }>(ops.COMPLETE_SESSION, { id, input });\n return jsonResult(data.mybCompleteSession);\n } catch (error) {\n ctx.logger.error('mybodyshield sessions_complete failed', { error: String(error) });\n return errorResult(\n `Failed to complete session: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'sets_log')),\n {\n title: 'Log Session Set',\n description:\n 'Log a single set within a workout session. `sessionId` and `exerciseName` are required; record reps/weight (strength) or distanceM/durationSec (cardio) and flag personal records.',\n inputSchema: {\n sessionId: z.string().describe('Parent workout session ID'),\n exerciseName: z.string().min(1).describe('Exercise name for this set'),\n setNumber: z.number().int().optional().describe('Set ordinal within the exercise'),\n reps: z.number().int().optional().describe('Repetitions performed'),\n weight: z.number().optional().describe('Weight used'),\n distanceM: z.number().optional().describe('Distance in metres (cardio)'),\n durationSec: z.number().int().optional().describe('Duration in seconds (cardio)'),\n isPersonalRecord: z.boolean().optional().describe('Mark as a personal record'),\n },\n },\n async ({\n sessionId,\n exerciseName,\n setNumber,\n reps,\n weight,\n distanceM,\n durationSec,\n isPersonalRecord,\n }) => {\n try {\n const input: Record<string, unknown> = { sessionId, exerciseName };\n if (setNumber !== undefined) input.setNumber = setNumber;\n if (reps !== undefined) input.reps = reps;\n if (weight !== undefined) input.weight = weight;\n if (distanceM !== undefined) input.distanceM = distanceM;\n if (durationSec !== undefined) input.durationSec = durationSec;\n if (isPersonalRecord !== undefined) input.isPersonalRecord = isPersonalRecord;\n\n const data = await ctx.gql.workspace.request<{\n mybLogSet: Record<string, unknown>;\n }>(ops.LOG_SET, { input });\n return jsonResult(data.mybLogSet);\n } catch (error) {\n ctx.logger.error('mybodyshield sets_log failed', { error: String(error) });\n return errorResult(\n `Failed to log set: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n}\n","/**\n * Mybodyshield nutrition-plan tools.\n *\n * Surface (6): nutrition_{get,active,create,update,activate,daily_macros}.\n * Backed by mybNutritionPlan / mybActiveNutritionPlan / mybCreateNutritionPlan /\n * mybUpdateNutritionPlan / mybActivateNutritionPlan / mybDailyMacros — all\n * called by their REAL names in operations.ts.\n */\n\nimport { z } from 'zod';\nimport { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport { jsonResult, errorResult, mcpToolName, type McpContext } from '../../../core/index.js';\nimport * as ops from '../operations.js';\nimport { GoalTypeEnum } from './shared.js';\n\nexport function registerNutritionTools(\n server: McpServer,\n ctx: McpContext,\n track: (n: string) => string,\n): void {\n server.registerTool(\n track(mcpToolName(ctx.productName, 'nutrition_get')),\n {\n title: 'Get Nutrition Plan',\n description: 'Fetch a single nutrition plan by ID, including its logged meals.',\n inputSchema: { id: z.string().describe('Nutrition plan ID') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n mybNutritionPlan: Record<string, unknown> | null;\n }>(ops.GET_NUTRITION_PLAN, { id });\n if (!data.mybNutritionPlan) return errorResult(`Nutrition plan ${id} not found`);\n return jsonResult(data.mybNutritionPlan);\n } catch (error) {\n ctx.logger.error('mybodyshield nutrition_get failed', { error: String(error) });\n return errorResult(\n `Failed to get nutrition plan: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'nutrition_active')),\n {\n title: 'Get Active Nutrition Plan',\n description:\n \"Fetch the active nutrition plan for a member (defaults to the calling actor when memberId is omitted). Returns null when there's no active plan.\",\n inputSchema: {\n memberId: z.string().optional().describe('Member (user) ID (default: calling actor)'),\n },\n },\n async ({ memberId }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n mybActiveNutritionPlan: Record<string, unknown> | null;\n }>(ops.ACTIVE_NUTRITION_PLAN, { memberId });\n return jsonResult(data.mybActiveNutritionPlan);\n } catch (error) {\n ctx.logger.error('mybodyshield nutrition_active failed', { error: String(error) });\n return errorResult(\n `Failed to get active nutrition plan: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'nutrition_create')),\n {\n title: 'Create Nutrition Plan',\n description:\n 'Create a nutrition plan with macro targets. `name` is required; `goalType` defaults to GENERAL_FITNESS.',\n inputSchema: {\n name: z.string().min(1).describe('Plan name'),\n memberId: z.string().optional().describe('Member (user) ID the plan is for'),\n coachId: z.string().optional().describe('Coach (user) ID authoring the plan'),\n goalType: GoalTypeEnum.optional().describe('Goal (default GENERAL_FITNESS)'),\n calorieTarget: z.number().int().optional().describe('Daily calorie target'),\n proteinTarget: z.number().int().optional().describe('Daily protein target (g)'),\n carbsTarget: z.number().int().optional().describe('Daily carbohydrate target (g)'),\n fatTarget: z.number().int().optional().describe('Daily fat target (g)'),\n startDate: z.string().optional().describe('Start date (ISO-8601 DateTime)'),\n endDate: z.string().optional().describe('End date (ISO-8601 DateTime)'),\n notes: z.string().optional().describe('Plan notes'),\n },\n },\n async ({\n name,\n memberId,\n coachId,\n goalType,\n calorieTarget,\n proteinTarget,\n carbsTarget,\n fatTarget,\n startDate,\n endDate,\n notes,\n }) => {\n try {\n const input: Record<string, unknown> = { name };\n if (memberId !== undefined) input.memberId = memberId;\n if (coachId !== undefined) input.coachId = coachId;\n if (goalType !== undefined) input.goalType = goalType;\n if (calorieTarget !== undefined) input.calorieTarget = calorieTarget;\n if (proteinTarget !== undefined) input.proteinTarget = proteinTarget;\n if (carbsTarget !== undefined) input.carbsTarget = carbsTarget;\n if (fatTarget !== undefined) input.fatTarget = fatTarget;\n if (startDate !== undefined) input.startDate = startDate;\n if (endDate !== undefined) input.endDate = endDate;\n if (notes !== undefined) input.notes = notes;\n\n const data = await ctx.gql.workspace.request<{\n mybCreateNutritionPlan: Record<string, unknown>;\n }>(ops.CREATE_NUTRITION_PLAN, { input });\n return jsonResult(data.mybCreateNutritionPlan);\n } catch (error) {\n ctx.logger.error('mybodyshield nutrition_create failed', { error: String(error) });\n return errorResult(\n `Failed to create nutrition plan: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'nutrition_update')),\n {\n title: 'Update Nutrition Plan',\n description:\n 'Update a nutrition plan. At least one mutable field must be provided. Use `nutrition_activate` to make a plan the active one.',\n inputSchema: {\n id: z.string().describe('Nutrition plan ID'),\n name: z.string().optional().describe('Updated name'),\n goalType: GoalTypeEnum.optional().describe('Updated goal'),\n calorieTarget: z.number().int().optional().describe('Updated calorie target'),\n proteinTarget: z.number().int().optional().describe('Updated protein target (g)'),\n carbsTarget: z.number().int().optional().describe('Updated carbohydrate target (g)'),\n fatTarget: z.number().int().optional().describe('Updated fat target (g)'),\n startDate: z.string().optional().describe('Updated start date (ISO-8601 DateTime)'),\n endDate: z.string().optional().describe('Updated end date (ISO-8601 DateTime)'),\n notes: z.string().optional().describe('Updated notes'),\n },\n },\n async ({\n id,\n name,\n goalType,\n calorieTarget,\n proteinTarget,\n carbsTarget,\n fatTarget,\n startDate,\n endDate,\n notes,\n }) => {\n try {\n const input: Record<string, unknown> = {};\n if (name !== undefined) input.name = name;\n if (goalType !== undefined) input.goalType = goalType;\n if (calorieTarget !== undefined) input.calorieTarget = calorieTarget;\n if (proteinTarget !== undefined) input.proteinTarget = proteinTarget;\n if (carbsTarget !== undefined) input.carbsTarget = carbsTarget;\n if (fatTarget !== undefined) input.fatTarget = fatTarget;\n if (startDate !== undefined) input.startDate = startDate;\n if (endDate !== undefined) input.endDate = endDate;\n if (notes !== undefined) input.notes = notes;\n\n if (Object.keys(input).length === 0) {\n return errorResult(\n 'No updates specified — provide at least one of name/goalType/calorieTarget/proteinTarget/carbsTarget/fatTarget/startDate/endDate/notes',\n );\n }\n\n const data = await ctx.gql.workspace.request<{\n mybUpdateNutritionPlan: Record<string, unknown>;\n }>(ops.UPDATE_NUTRITION_PLAN, { id, input });\n return jsonResult(data.mybUpdateNutritionPlan);\n } catch (error) {\n ctx.logger.error('mybodyshield nutrition_update failed', { error: String(error) });\n return errorResult(\n `Failed to update nutrition plan: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'nutrition_activate')),\n {\n title: 'Activate Nutrition Plan',\n description:\n 'Make a nutrition plan the active plan for its member (deactivating any other active plan).',\n inputSchema: { id: z.string().describe('Nutrition plan ID') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n mybActivateNutritionPlan: Record<string, unknown>;\n }>(ops.ACTIVATE_NUTRITION_PLAN, { id });\n return jsonResult(data.mybActivateNutritionPlan);\n } catch (error) {\n ctx.logger.error('mybodyshield nutrition_activate failed', { error: String(error) });\n return errorResult(\n `Failed to activate nutrition plan: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'nutrition_daily_macros')),\n {\n title: 'Daily Macros Rollup',\n description:\n \"Roll up a member's logged meals for a given day against the active plan's targets (calories + protein/carbs/fat consumed vs target).\",\n inputSchema: {\n memberId: z.string().optional().describe('Member (user) ID (default: calling actor)'),\n date: z.string().optional().describe('Day to roll up (ISO-8601 DateTime; default: today)'),\n },\n },\n async ({ memberId, date }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n mybDailyMacros: Record<string, unknown>;\n }>(ops.DAILY_MACROS, { memberId, date });\n return jsonResult(data.mybDailyMacros);\n } catch (error) {\n ctx.logger.error('mybodyshield nutrition_daily_macros failed', { error: String(error) });\n return errorResult(\n `Failed to roll up daily macros: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n}\n","/**\n * Mybodyshield meal-log tools.\n *\n * Surface (3): meals_list, meals_log, meals_delete.\n * Backed by mybListMeals / mybLogMeal / mybDeleteMeal — all called by their\n * REAL names in operations.ts.\n */\n\nimport { z } from 'zod';\nimport { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport { jsonResult, errorResult, mcpToolName, type McpContext } from '../../../core/index.js';\nimport * as ops from '../operations.js';\nimport { MealTypeEnum } from './shared.js';\n\nexport function registerMealTools(\n server: McpServer,\n ctx: McpContext,\n track: (n: string) => string,\n): void {\n server.registerTool(\n track(mcpToolName(ctx.productName, 'meals_list')),\n {\n title: 'List Meal Logs',\n description:\n 'List logged meals in the bound workspace, optionally filtered by nutrition plan and meal type. Returns a paginated connection ({ items, pageInfo }).',\n inputSchema: {\n planId: z.string().optional().describe('Filter by nutrition plan ID'),\n mealType: MealTypeEnum.optional().describe('Filter by meal slot'),\n limit: z.number().int().optional().describe('Page size (default 50)'),\n offset: z.number().int().optional().describe('Pagination offset (default 0)'),\n cursor: z.string().optional().describe('Opaque pagination cursor'),\n },\n },\n async ({ planId, mealType, limit, offset, cursor }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n mybListMeals: Record<string, unknown>;\n }>(ops.LIST_MEALS, {\n planId,\n mealType,\n pagination: { limit: limit ?? 50, offset: offset ?? 0, cursor },\n });\n return jsonResult(data.mybListMeals);\n } catch (error) {\n ctx.logger.error('mybodyshield meals_list failed', { error: String(error) });\n return errorResult(\n `Failed to list meals: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'meals_log')),\n {\n title: 'Log Meal',\n description:\n 'Log a meal with its macros. `name` is required; `mealType` defaults to SNACK. Attach to a plan via `planId` to count toward daily macros.',\n inputSchema: {\n name: z.string().min(1).describe('Meal name'),\n mealType: MealTypeEnum.optional().describe('Meal slot (default SNACK)'),\n planId: z.string().optional().describe('Nutrition plan ID to attribute the meal to'),\n calories: z.number().int().optional().describe('Calories'),\n proteinG: z.number().int().optional().describe('Protein (g)'),\n carbsG: z.number().int().optional().describe('Carbohydrates (g)'),\n fatG: z.number().int().optional().describe('Fat (g)'),\n servings: z.number().optional().describe('Number of servings'),\n isFavorite: z.boolean().optional().describe('Flag as a favorite meal'),\n loggedAt: z.string().optional().describe('When the meal was eaten (ISO-8601 DateTime)'),\n },\n },\n async ({\n name,\n mealType,\n planId,\n calories,\n proteinG,\n carbsG,\n fatG,\n servings,\n isFavorite,\n loggedAt,\n }) => {\n try {\n const input: Record<string, unknown> = { name };\n if (mealType !== undefined) input.mealType = mealType;\n if (planId !== undefined) input.planId = planId;\n if (calories !== undefined) input.calories = calories;\n if (proteinG !== undefined) input.proteinG = proteinG;\n if (carbsG !== undefined) input.carbsG = carbsG;\n if (fatG !== undefined) input.fatG = fatG;\n if (servings !== undefined) input.servings = servings;\n if (isFavorite !== undefined) input.isFavorite = isFavorite;\n if (loggedAt !== undefined) input.loggedAt = loggedAt;\n\n const data = await ctx.gql.workspace.request<{\n mybLogMeal: Record<string, unknown>;\n }>(ops.LOG_MEAL, { input });\n return jsonResult(data.mybLogMeal);\n } catch (error) {\n ctx.logger.error('mybodyshield meals_log failed', { error: String(error) });\n return errorResult(\n `Failed to log meal: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'meals_delete')),\n {\n title: 'Delete Meal Log',\n description: 'Delete a logged meal by ID. Returns true on success.',\n inputSchema: { id: z.string().describe('Meal log ID') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{ mybDeleteMeal: boolean }>(ops.DELETE_MEAL, {\n id,\n });\n return jsonResult({ deleted: data.mybDeleteMeal });\n } catch (error) {\n ctx.logger.error('mybodyshield meals_delete failed', { error: String(error) });\n return errorResult(\n `Failed to delete meal: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n}\n","/**\n * Mybodyshield goal tools.\n *\n * Surface (5): goals_{get,list,create,update,achieve}.\n * Backed by mybGoal / mybListGoals / mybCreateGoal / mybUpdateGoal /\n * mybAchieveGoal — all called by their REAL names in operations.ts.\n */\n\nimport { z } from 'zod';\nimport { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport { jsonResult, errorResult, mcpToolName, type McpContext } from '../../../core/index.js';\nimport * as ops from '../operations.js';\nimport { GoalTypeEnum, GoalStatusEnum } from './shared.js';\n\nexport function registerGoalTools(\n server: McpServer,\n ctx: McpContext,\n track: (n: string) => string,\n): void {\n server.registerTool(\n track(mcpToolName(ctx.productName, 'goals_get')),\n {\n title: 'Get Goal',\n description: 'Fetch a single goal by ID.',\n inputSchema: { id: z.string().describe('Goal ID') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n mybGoal: Record<string, unknown> | null;\n }>(ops.GET_GOAL, { id });\n if (!data.mybGoal) return errorResult(`Goal ${id} not found`);\n return jsonResult(data.mybGoal);\n } catch (error) {\n ctx.logger.error('mybodyshield goals_get failed', { error: String(error) });\n return errorResult(\n `Failed to get goal: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'goals_list')),\n {\n title: 'List Goals',\n description:\n 'List goals in the bound workspace, optionally filtered by member and status. Returns a paginated connection ({ items, pageInfo }).',\n inputSchema: {\n memberId: z.string().optional().describe('Filter by member (user) ID'),\n status: GoalStatusEnum.optional().describe('Filter by goal status'),\n limit: z.number().int().optional().describe('Page size (default 50)'),\n offset: z.number().int().optional().describe('Pagination offset (default 0)'),\n cursor: z.string().optional().describe('Opaque pagination cursor'),\n },\n },\n async ({ memberId, status, limit, offset, cursor }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n mybListGoals: Record<string, unknown>;\n }>(ops.LIST_GOALS, {\n memberId,\n status,\n pagination: { limit: limit ?? 50, offset: offset ?? 0, cursor },\n });\n return jsonResult(data.mybListGoals);\n } catch (error) {\n ctx.logger.error('mybodyshield goals_list failed', { error: String(error) });\n return errorResult(\n `Failed to list goals: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'goals_create')),\n {\n title: 'Create Goal',\n description:\n 'Create a goal. `title` is required; `type` defaults to GENERAL_FITNESS. Set baseline/target values and a target date to track progress.',\n inputSchema: {\n title: z.string().min(1).describe('Goal title'),\n memberId: z.string().optional().describe('Member (user) ID the goal is for'),\n type: GoalTypeEnum.optional().describe('Goal type (default GENERAL_FITNESS)'),\n description: z.string().optional().describe('Goal description'),\n baselineValue: z.number().optional().describe('Starting value'),\n targetValue: z.number().optional().describe('Target value'),\n unit: z.string().optional().describe('Unit of measure (e.g. kg, reps, min)'),\n targetDate: z.string().optional().describe('Target date (ISO-8601 DateTime)'),\n },\n },\n async ({\n title,\n memberId,\n type,\n description,\n baselineValue,\n targetValue,\n unit,\n targetDate,\n }) => {\n try {\n const input: Record<string, unknown> = { title };\n if (memberId !== undefined) input.memberId = memberId;\n if (type !== undefined) input.type = type;\n if (description !== undefined) input.description = description;\n if (baselineValue !== undefined) input.baselineValue = baselineValue;\n if (targetValue !== undefined) input.targetValue = targetValue;\n if (unit !== undefined) input.unit = unit;\n if (targetDate !== undefined) input.targetDate = targetDate;\n\n const data = await ctx.gql.workspace.request<{\n mybCreateGoal: Record<string, unknown>;\n }>(ops.CREATE_GOAL, { input });\n return jsonResult(data.mybCreateGoal);\n } catch (error) {\n ctx.logger.error('mybodyshield goals_create failed', { error: String(error) });\n return errorResult(\n `Failed to create goal: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'goals_update')),\n {\n title: 'Update Goal',\n description:\n 'Update a goal. At least one mutable field must be provided. Use `current_value` to record progress, or `goals_achieve` to mark it achieved.',\n inputSchema: {\n id: z.string().describe('Goal ID'),\n title: z.string().optional().describe('Updated title'),\n type: GoalTypeEnum.optional().describe('Updated goal type'),\n description: z.string().optional().describe('Updated description'),\n baselineValue: z.number().optional().describe('Updated baseline value'),\n currentValue: z.number().optional().describe('Updated current/progress value'),\n targetValue: z.number().optional().describe('Updated target value'),\n unit: z.string().optional().describe('Updated unit of measure'),\n targetDate: z.string().optional().describe('Updated target date (ISO-8601 DateTime)'),\n },\n },\n async ({\n id,\n title,\n type,\n description,\n baselineValue,\n currentValue,\n targetValue,\n unit,\n targetDate,\n }) => {\n try {\n const input: Record<string, unknown> = {};\n if (title !== undefined) input.title = title;\n if (type !== undefined) input.type = type;\n if (description !== undefined) input.description = description;\n if (baselineValue !== undefined) input.baselineValue = baselineValue;\n if (currentValue !== undefined) input.currentValue = currentValue;\n if (targetValue !== undefined) input.targetValue = targetValue;\n if (unit !== undefined) input.unit = unit;\n if (targetDate !== undefined) input.targetDate = targetDate;\n\n if (Object.keys(input).length === 0) {\n return errorResult(\n 'No updates specified — provide at least one of title/type/description/baselineValue/currentValue/targetValue/unit/targetDate',\n );\n }\n\n const data = await ctx.gql.workspace.request<{\n mybUpdateGoal: Record<string, unknown>;\n }>(ops.UPDATE_GOAL, { id, input });\n return jsonResult(data.mybUpdateGoal);\n } catch (error) {\n ctx.logger.error('mybodyshield goals_update failed', { error: String(error) });\n return errorResult(\n `Failed to update goal: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'goals_achieve')),\n {\n title: 'Achieve Goal',\n description: 'Mark a goal as achieved (sets status ACHIEVED + achievedAt).',\n inputSchema: { id: z.string().describe('Goal ID') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n mybAchieveGoal: Record<string, unknown>;\n }>(ops.ACHIEVE_GOAL, { id });\n return jsonResult(data.mybAchieveGoal);\n } catch (error) {\n ctx.logger.error('mybodyshield goals_achieve failed', { error: String(error) });\n return errorResult(\n `Failed to achieve goal: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n}\n","/**\n * Mybodyshield body-metric tools.\n *\n * Surface (2): metrics_list, metrics_record.\n * Backed by mybListBodyMetrics / mybRecordBodyMetric — called by their REAL\n * names in operations.ts. `photoFileId` references a wspace-files-svc File\n * (e.g. a progress photo).\n */\n\nimport { z } from 'zod';\nimport { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport { jsonResult, errorResult, mcpToolName, type McpContext } from '../../../core/index.js';\nimport * as ops from '../operations.js';\nimport { BodyMetricTypeEnum } from './shared.js';\n\nexport function registerMetricTools(\n server: McpServer,\n ctx: McpContext,\n track: (n: string) => string,\n): void {\n server.registerTool(\n track(mcpToolName(ctx.productName, 'metrics_list')),\n {\n title: 'List Body Metrics',\n description:\n 'List recorded body metrics in the bound workspace, optionally filtered by member and metric type. Returns a paginated connection ({ items, pageInfo }).',\n inputSchema: {\n memberId: z.string().optional().describe('Filter by member (user) ID'),\n type: BodyMetricTypeEnum.optional().describe('Filter by metric type'),\n limit: z.number().int().optional().describe('Page size (default 50)'),\n offset: z.number().int().optional().describe('Pagination offset (default 0)'),\n cursor: z.string().optional().describe('Opaque pagination cursor'),\n },\n },\n async ({ memberId, type, limit, offset, cursor }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n mybListBodyMetrics: Record<string, unknown>;\n }>(ops.LIST_BODY_METRICS, {\n memberId,\n type,\n pagination: { limit: limit ?? 50, offset: offset ?? 0, cursor },\n });\n return jsonResult(data.mybListBodyMetrics);\n } catch (error) {\n ctx.logger.error('mybodyshield metrics_list failed', { error: String(error) });\n return errorResult(\n `Failed to list body metrics: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'metrics_record')),\n {\n title: 'Record Body Metric',\n description:\n 'Record a body measurement. `type` and `value` are required; attach a progress photo via `photoFileId` (a wspace-files-svc File ID).',\n inputSchema: {\n type: BodyMetricTypeEnum.describe('Metric type'),\n value: z.number().describe('Measured value'),\n unit: z.string().optional().describe('Unit of measure (e.g. kg, cm, %, bpm)'),\n memberId: z.string().optional().describe('Member (user) ID (default: calling actor)'),\n measuredAt: z\n .string()\n .optional()\n .describe('When measured (ISO-8601 DateTime; default: now)'),\n notes: z.string().optional().describe('Notes'),\n photoFileId: z\n .string()\n .optional()\n .describe('wspace-files-svc File ID for a progress photo'),\n },\n },\n async ({ type, value, unit, memberId, measuredAt, notes, photoFileId }) => {\n try {\n const input: Record<string, unknown> = { type, value };\n if (unit !== undefined) input.unit = unit;\n if (memberId !== undefined) input.memberId = memberId;\n if (measuredAt !== undefined) input.measuredAt = measuredAt;\n if (notes !== undefined) input.notes = notes;\n if (photoFileId !== undefined) input.photoFileId = photoFileId;\n\n const data = await ctx.gql.workspace.request<{\n mybRecordBodyMetric: Record<string, unknown>;\n }>(ops.RECORD_BODY_METRIC, { input });\n return jsonResult(data.mybRecordBodyMetric);\n } catch (error) {\n ctx.logger.error('mybodyshield metrics_record failed', { error: String(error) });\n return errorResult(\n `Failed to record body metric: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n}\n","/**\n * Mybodyshield recovery-log tools.\n *\n * Surface (2): recovery_list, recovery_log.\n * Backed by mybListRecoveryLogs / mybLogRecovery — called by their REAL names\n * in operations.ts. `mybListRecoveryLogs` returns a plain array (no connection\n * envelope, no pagination).\n */\n\nimport { z } from 'zod';\nimport { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport { jsonResult, errorResult, mcpToolName, type McpContext } from '../../../core/index.js';\nimport * as ops from '../operations.js';\nimport { RecoveryMetricEnum } from './shared.js';\n\nexport function registerRecoveryTools(\n server: McpServer,\n ctx: McpContext,\n track: (n: string) => string,\n): void {\n server.registerTool(\n track(mcpToolName(ctx.productName, 'recovery_list')),\n {\n title: 'List Recovery Logs',\n description:\n 'List recovery/wellbeing logs in the bound workspace, optionally filtered by member and metric. Returns a plain array.',\n inputSchema: {\n memberId: z.string().optional().describe('Filter by member (user) ID'),\n metric: RecoveryMetricEnum.optional().describe('Filter by recovery metric'),\n },\n },\n async ({ memberId, metric }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n mybListRecoveryLogs: Array<Record<string, unknown>>;\n }>(ops.LIST_RECOVERY_LOGS, { memberId, metric });\n return jsonResult(data.mybListRecoveryLogs);\n } catch (error) {\n ctx.logger.error('mybodyshield recovery_list failed', { error: String(error) });\n return errorResult(\n `Failed to list recovery logs: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'recovery_log')),\n {\n title: 'Log Recovery Signal',\n description:\n 'Log a recovery/wellbeing signal (sleep, soreness, readiness, mood, stress). `metric` defaults to READINESS. Record a 0–100 `score` and/or `sleepHours`.',\n inputSchema: {\n metric: RecoveryMetricEnum.optional().describe('Recovery metric (default READINESS)'),\n score: z.number().int().optional().describe('Score (typically 0–100)'),\n sleepHours: z.number().optional().describe('Hours slept'),\n memberId: z.string().optional().describe('Member (user) ID (default: calling actor)'),\n loggedAt: z.string().optional().describe('When logged (ISO-8601 DateTime; default: now)'),\n notes: z.string().optional().describe('Notes'),\n },\n },\n async ({ metric, score, sleepHours, memberId, loggedAt, notes }) => {\n try {\n const input: Record<string, unknown> = {};\n if (metric !== undefined) input.metric = metric;\n if (score !== undefined) input.score = score;\n if (sleepHours !== undefined) input.sleepHours = sleepHours;\n if (memberId !== undefined) input.memberId = memberId;\n if (loggedAt !== undefined) input.loggedAt = loggedAt;\n if (notes !== undefined) input.notes = notes;\n\n const data = await ctx.gql.workspace.request<{\n mybLogRecovery: Record<string, unknown>;\n }>(ops.LOG_RECOVERY, { input });\n return jsonResult(data.mybLogRecovery);\n } catch (error) {\n ctx.logger.error('mybodyshield recovery_log failed', { error: String(error) });\n return errorResult(\n `Failed to log recovery: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n}\n","/**\n * Mybodyshield coaching-relationship tools.\n *\n * Surface (3): coaching_list, coaching_create, coaching_transition.\n * Backed by mybListCoaching / mybCreateCoaching / mybTransitionCoaching —\n * called by their REAL names in operations.ts. `mybListCoaching` returns a\n * plain array (no connection envelope, no pagination).\n */\n\nimport { z } from 'zod';\nimport { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport { jsonResult, errorResult, mcpToolName, type McpContext } from '../../../core/index.js';\nimport * as ops from '../operations.js';\nimport { CoachingStatusEnum } from './shared.js';\n\nexport function registerCoachingTools(\n server: McpServer,\n ctx: McpContext,\n track: (n: string) => string,\n): void {\n server.registerTool(\n track(mcpToolName(ctx.productName, 'coaching_list')),\n {\n title: 'List Coaching Relationships',\n description:\n 'List coach↔member coaching relationships in the bound workspace, optionally filtered by member and status. Returns a plain array.',\n inputSchema: {\n memberId: z.string().optional().describe('Filter by member (user) ID'),\n status: CoachingStatusEnum.optional().describe('Filter by coaching status'),\n },\n },\n async ({ memberId, status }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n mybListCoaching: Array<Record<string, unknown>>;\n }>(ops.LIST_COACHING, { memberId, status });\n return jsonResult(data.mybListCoaching);\n } catch (error) {\n ctx.logger.error('mybodyshield coaching_list failed', { error: String(error) });\n return errorResult(\n `Failed to list coaching relationships: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'coaching_create')),\n {\n title: 'Create Coaching Relationship',\n description:\n 'Create a coaching relationship between a coach and a member (starts PENDING). Use the share flags to control what the coach can see.',\n inputSchema: {\n coachId: z.string().describe('Coach (user) ID'),\n memberId: z.string().describe('Member (user) ID'),\n specialty: z.string().optional().describe(\"Coach's specialty\"),\n shareWorkouts: z.boolean().optional().describe('Share workout data with the coach'),\n shareNutrition: z.boolean().optional().describe('Share nutrition data with the coach'),\n shareMetrics: z.boolean().optional().describe('Share body-metric data with the coach'),\n },\n // BOFF-3859: grants a third party (the coach) read access to a\n // member's health data via the share* flags. Not a naming-pattern\n // match for `inferDestructiveHint` (no \"delete\"), but it is exactly\n // the class of health-data-governance mutation the confirmation gate\n // exists for — declared explicitly rather than left ungated.\n annotations: { destructiveHint: true },\n },\n async ({ coachId, memberId, specialty, shareWorkouts, shareNutrition, shareMetrics }) => {\n try {\n const input: Record<string, unknown> = { coachId, memberId };\n if (specialty !== undefined) input.specialty = specialty;\n if (shareWorkouts !== undefined) input.shareWorkouts = shareWorkouts;\n if (shareNutrition !== undefined) input.shareNutrition = shareNutrition;\n if (shareMetrics !== undefined) input.shareMetrics = shareMetrics;\n\n const data = await ctx.gql.workspace.request<{\n mybCreateCoaching: Record<string, unknown>;\n }>(ops.CREATE_COACHING, { input });\n return jsonResult(data.mybCreateCoaching);\n } catch (error) {\n ctx.logger.error('mybodyshield coaching_create failed', { error: String(error) });\n return errorResult(\n `Failed to create coaching relationship: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'coaching_transition')),\n {\n title: 'Transition Coaching Relationship',\n description:\n 'Move a coaching relationship through its lifecycle: PENDING → ACTIVE → PAUSED / ENDED.',\n inputSchema: {\n id: z.string().describe('Coaching relationship ID'),\n status: CoachingStatusEnum.describe('Target coaching status'),\n },\n // BOFF-3859: activates or revokes a coach's access to shared health\n // data (ENDED is a terminal state per COACHING_TRANSITIONS) — same\n // health-data-governance rationale as coaching_create above.\n annotations: { destructiveHint: true },\n },\n async ({ id, status }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n mybTransitionCoaching: Record<string, unknown>;\n }>(ops.TRANSITION_COACHING, { id, status });\n return jsonResult(data.mybTransitionCoaching);\n } catch (error) {\n ctx.logger.error('mybodyshield coaching_transition failed', { error: String(error) });\n return errorResult(\n `Failed to transition coaching relationship: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n}\n","/**\n * Mybodyshield health tool.\n *\n * Surface (1): health — maps to the @public mybHealth query (no auth required),\n * the subgraph's liveness/identity probe. Exposed under the AI-friendlier,\n * ecosystem-standard `health` tool name (mirrors kadaikodi / crewfoundry).\n */\n\nimport { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport { jsonResult, errorResult, mcpToolName, type McpContext } from '../../../core/index.js';\nimport * as ops from '../operations.js';\n\nexport function registerHealthTools(\n server: McpServer,\n ctx: McpContext,\n track: (n: string) => string,\n): void {\n server.registerTool(\n track(mcpToolName(ctx.productName, 'health')),\n {\n title: 'Mybodyshield Health Check',\n description:\n 'Public liveness/identity probe for the Mybodyshield subgraph (mybHealth). Requires no authentication.',\n inputSchema: {},\n },\n async () => {\n try {\n const data = await ctx.gql.workspace.request<{ mybHealth: string }>(ops.HEALTH, {});\n return jsonResult({ ok: true, status: data.mybHealth });\n } catch (error) {\n ctx.logger.error('mybodyshield health failed', { error: String(error) });\n return errorResult(\n `Mybodyshield health check failed: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n}\n","import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport { mcpResourceUri, type McpContext } from '../../core/index.js';\nimport { LIST_PROGRAMS, LIST_GOALS, ACTIVE_NUTRITION_PLAN } from './operations.js';\n\n/**\n * Read-only Mybodyshield MCP resources. URIs are product-prefixed via\n * mcpResourceUri so they don't collide when multiple MCP servers run side by\n * side. Each is tracked at function entry so the shell manifest reflects what\n * was registered even though registration is imperative.\n */\nexport function registerMybodyshieldResources(\n server: McpServer,\n ctx: McpContext,\n track: (uri: string) => string,\n): void {\n const schemaUri = track(mcpResourceUri(ctx.productName, 'schema'));\n const programsUri = track(mcpResourceUri(ctx.productName, 'programs'));\n const goalsUri = track(mcpResourceUri(ctx.productName, 'goals'));\n const nutritionUri = track(mcpResourceUri(ctx.productName, 'nutrition'));\n\n // <product>://schema — domain overview\n server.registerResource(\n 'mybodyshield-schema',\n schemaUri,\n {\n title: 'Mybodyshield Domain Schema',\n description:\n 'Overview of the Mybodyshield health & fitness domain — entities, enums, and the per-entity tool surface.',\n mimeType: 'text/plain',\n },\n async () => {\n ctx.logger.debug(`Resource ${schemaUri} requested`);\n const schema = `# Mybodyshield Domain (Overview)\n\nHealth & fitness platform — system of record for training, nutrition, wellbeing, and coaching.\n\n## Entities\n- MybProgram — a training program (has workouts)\n- MybWorkout — a workout within a program (has exercises)\n- MybExercise — an exercise within a workout (demo File via federation)\n- MybWorkoutSession — a logged/scheduled session (has sets)\n- MybSessionSet — a single set logged in a session\n- MybNutritionPlan — a nutrition plan with macro targets (has meals)\n- MybMealLog — a logged meal with macros\n- MybGoal — a tracked fitness goal\n- MybBodyMetric — a body measurement (progress photo File via federation)\n- MybRecoveryLog — a recovery/wellbeing signal (sleep, soreness, readiness, mood, stress)\n- MybCoachingRelationship — a coach↔member relationship with share scopes\n\n## Enums\n- GoalType: ENDURANCE, GENERAL_FITNESS, MOBILITY, MUSCLE_GAIN, STRENGTH, WEIGHT_LOSS\n- GoalStatus: ABANDONED, ACHIEVED, ACTIVE, PAUSED\n- FitnessLevel: ADVANCED, BEGINNER, ELITE, INTERMEDIATE\n- ProgramPhase: BUILD, DELOAD, MAINTENANCE, PEAK\n- ProgramStatus: ACTIVE, ARCHIVED, COMPLETED, DRAFT\n- WorkoutType: CARDIO, HIIT, MOBILITY, RECOVERY, STRENGTH, YOGA\n- MuscleGroup: ARMS, BACK, CHEST, CORE, FULL_BODY, LEGS, SHOULDERS\n- SessionStatus: COMPLETED, IN_PROGRESS, SCHEDULED, SKIPPED\n- MealType: BREAKFAST, DINNER, LUNCH, SNACK\n- BodyMetricType: ARM, BODY_FAT, CHEST, HIPS, RESTING_HEART_RATE, THIGH, WAIST, WEIGHT\n- RecoveryMetric: MOOD, READINESS, SLEEP, SORENESS, STRESS\n- CoachingStatus: ACTIVE, ENDED, PAUSED, PENDING\n\n## Tool groups\nprograms, workouts (+exercises), sessions (+sets), nutrition (+daily_macros),\nmeals, goals, metrics, recovery, coaching, health.\nAll run against the WORKSPACE gateway (workspace-scoped) except the public health probe.\n`;\n return {\n contents: [{ uri: schemaUri, text: schema, mimeType: 'text/plain' }],\n };\n },\n );\n\n // <product>://programs — training-program directory\n server.registerResource(\n 'mybodyshield-programs',\n programsUri,\n {\n title: 'Mybodyshield Programs',\n description: 'The first 50 training programs in the bound workspace.',\n mimeType: 'application/json',\n },\n async () => {\n ctx.logger.debug(`Resource ${programsUri} requested`);\n try {\n const data = await ctx.gql.workspace.request<{ mybListPrograms: unknown }>(LIST_PROGRAMS, {\n pagination: { limit: 50, offset: 0 },\n });\n return {\n contents: [\n {\n uri: programsUri,\n text: JSON.stringify(data.mybListPrograms, null, 2),\n mimeType: 'application/json',\n },\n ],\n };\n } catch (error) {\n return {\n contents: [\n {\n uri: programsUri,\n text: JSON.stringify({\n error: error instanceof Error ? error.message : String(error),\n }),\n mimeType: 'application/json',\n },\n ],\n };\n }\n },\n );\n\n // <product>://goals — goal directory\n server.registerResource(\n 'mybodyshield-goals',\n goalsUri,\n {\n title: 'Mybodyshield Goals',\n description: 'The first 50 goals in the bound workspace.',\n mimeType: 'application/json',\n },\n async () => {\n ctx.logger.debug(`Resource ${goalsUri} requested`);\n try {\n const data = await ctx.gql.workspace.request<{ mybListGoals: unknown }>(LIST_GOALS, {\n pagination: { limit: 50, offset: 0 },\n });\n return {\n contents: [\n {\n uri: goalsUri,\n text: JSON.stringify(data.mybListGoals, null, 2),\n mimeType: 'application/json',\n },\n ],\n };\n } catch (error) {\n return {\n contents: [\n {\n uri: goalsUri,\n text: JSON.stringify({\n error: error instanceof Error ? error.message : String(error),\n }),\n mimeType: 'application/json',\n },\n ],\n };\n }\n },\n );\n\n // <product>://nutrition — active nutrition plan for the calling actor\n server.registerResource(\n 'mybodyshield-nutrition',\n nutritionUri,\n {\n title: 'Mybodyshield Active Nutrition Plan',\n description: \"The calling actor's active nutrition plan (with logged meals), if any.\",\n mimeType: 'application/json',\n },\n async () => {\n ctx.logger.debug(`Resource ${nutritionUri} requested`);\n try {\n const data = await ctx.gql.workspace.request<{ mybActiveNutritionPlan: unknown }>(\n ACTIVE_NUTRITION_PLAN,\n {},\n );\n return {\n contents: [\n {\n uri: nutritionUri,\n text: JSON.stringify(data.mybActiveNutritionPlan, null, 2),\n mimeType: 'application/json',\n },\n ],\n };\n } catch (error) {\n return {\n contents: [\n {\n uri: nutritionUri,\n text: JSON.stringify({\n error: error instanceof Error ? error.message : String(error),\n }),\n mimeType: 'application/json',\n },\n ],\n };\n }\n },\n );\n}\n","import { z } from 'zod';\nimport { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport { mcpPromptName, type McpContext } from '../../core/index.js';\n\n/**\n * Mybodyshield MCP prompts — guided multi-step workflows. Names are\n * product-prefixed via mcpPromptName and tracked at function entry.\n */\nexport function registerMybodyshieldPrompts(\n server: McpServer,\n ctx: McpContext,\n track: (n: string) => string,\n): void {\n const p = ctx.productName;\n const designName = track(mcpPromptName(p, 'program-design'));\n const reviewName = track(mcpPromptName(p, 'coaching-review'));\n\n // <product>-program-design — stand up a training program + nutrition\n server.registerPrompt(\n designName,\n {\n title: 'Program Design',\n description:\n 'Guide for designing a Mybodyshield training program end to end: create the program, add workouts and exercises, optionally pair a nutrition plan, and activate.',\n argsSchema: {\n memberId: z.string().optional().describe('Member the program is for'),\n goalType: z.string().optional().describe('Primary goal (e.g. STRENGTH, WEIGHT_LOSS)'),\n },\n },\n ({ memberId, goalType }) => {\n ctx.logger.debug(`Prompt ${designName} called`, { memberId, goalType });\n const memberNote = memberId\n ? `Design it for member \"${memberId}\".`\n : 'Ask the user which member the program is for.';\n const goalNote = goalType ? `Use goalType ${goalType}.` : 'Help the user pick a GoalType.';\n return {\n messages: [\n {\n role: 'user' as const,\n content: {\n type: 'text' as const,\n text: `Help me design a new Mybodyshield training program.\n\n1. **Create Program**: Use ${p}_programs_create. ${memberNote} ${goalNote} Set level, phase, daysPerWeek, and weeks.\n2. **Add Workouts**: Use ${p}_workouts_add for each session in the week (set type, dayOfWeek, weekNumber, durationMin).\n3. **Add Exercises**: Use ${p}_exercises_add for each exercise in a workout (muscleGroup, sets, reps, restSeconds, targetWeight).\n4. **(Optional) Nutrition**: Use ${p}_nutrition_create to pair a macro plan (calorieTarget, proteinTarget, carbsTarget, fatTarget) and ${p}_nutrition_activate to make it active.\n5. **Verify**: Use ${p}_programs_get to review the full program tree.\n6. **Activate**: Use ${p}_programs_transition with status=ACTIVE when ready.\n\nShow results at each step and confirm before activation.`,\n },\n },\n ],\n };\n },\n );\n\n // <product>-coaching-review — periodic member review\n server.registerPrompt(\n reviewName,\n {\n title: 'Coaching Review',\n description:\n 'Periodic member-review workflow for a coach: review recent sessions, body metrics, recovery signals, daily macros, and goal progress, then adjust the program.',\n argsSchema: {\n memberId: z.string().optional().describe('Member to review'),\n },\n },\n ({ memberId }) => {\n ctx.logger.debug(`Prompt ${reviewName} called`, { memberId });\n const memberNote = memberId\n ? `Review member \"${memberId}\".`\n : `First list coaching relationships with ${p}_coaching_list and pick a member.`;\n return {\n messages: [\n {\n role: 'user' as const,\n content: {\n type: 'text' as const,\n text: `Run a Mybodyshield coaching review. ${memberNote}\n\n1. **Training**: Use ${p}_sessions_list (filter by program/status) to see recent workout sessions and adherence.\n2. **Body Metrics**: Use ${p}_metrics_list (filter by memberId) to chart weight / body-fat / measurement trends.\n3. **Recovery**: Use ${p}_recovery_list (filter by memberId) to check sleep, soreness, readiness, mood, and stress.\n4. **Nutrition**: Use ${p}_nutrition_daily_macros for the member to compare consumed vs target macros, and ${p}_nutrition_active for the current plan.\n5. **Goals**: Use ${p}_goals_list (filter by memberId) — mark hit goals with ${p}_goals_achieve and update progress with ${p}_goals_update.\n6. **Adjust**: Use ${p}_programs_update / ${p}_nutrition_update to adapt the plan based on findings.\n\nSummarize what needs attention after each step.`,\n },\n },\n ],\n };\n },\n );\n}\n","/**\n * Mybodyshield module — domain module for the future-products ecosystem program.\n *\n * Covers all 11 @key entities of wspace-mybodyshield-svc grouped into per-entity\n * sub-APIs: programs, workouts (+exercises), sessions (+sets), nutrition (plans +\n * daily macros), meals, goals, metrics, recovery, coaching — plus the @public\n * health probe. Mirrors the kadaikodi module's structure (tools/<entity>.ts +\n * resources.ts + prompts.ts) and the canonical tags module's typing discipline.\n *\n * Backend: ~/products/mybodyshield/wspace-mybodyshield-svc/ (Hive service name\n * `mybodyshield`). All operations run against the WORKSPACE gateway; the @public\n * mybHealth probe is exposed as `<product>_health`.\n */\n\nimport type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport type { McpContext, McpModule, ModuleRegistration } from '../../core/index.js';\nimport { registerProgramTools } from './tools/programs.js';\nimport { registerWorkoutTools } from './tools/workouts.js';\nimport { registerSessionTools } from './tools/sessions.js';\nimport { registerNutritionTools } from './tools/nutrition.js';\nimport { registerMealTools } from './tools/meals.js';\nimport { registerGoalTools } from './tools/goals.js';\nimport { registerMetricTools } from './tools/metrics.js';\nimport { registerRecoveryTools } from './tools/recovery.js';\nimport { registerCoachingTools } from './tools/coaching.js';\nimport { registerHealthTools } from './tools/health.js';\nimport { registerMybodyshieldResources } from './resources.js';\nimport { registerMybodyshieldPrompts } from './prompts.js';\n\nconst mybodyshieldModule: McpModule = {\n id: 'mybodyshield',\n version: '0.0.1',\n displayName: 'Mybodyshield',\n dependsOn: ['auth'],\n capabilities: { tools: {}, resources: {}, prompts: {} },\n\n register(server: McpServer, ctx: McpContext): ModuleRegistration {\n const tools: string[] = [];\n const resources: string[] = [];\n const prompts: string[] = [];\n\n const trackTool = (n: string): string => {\n tools.push(n);\n return n;\n };\n const trackResource = (uri: string): string => {\n resources.push(uri);\n return uri;\n };\n const trackPrompt = (n: string): string => {\n prompts.push(n);\n return n;\n };\n\n registerProgramTools(server, ctx, trackTool);\n registerWorkoutTools(server, ctx, trackTool);\n registerSessionTools(server, ctx, trackTool);\n registerNutritionTools(server, ctx, trackTool);\n registerMealTools(server, ctx, trackTool);\n registerGoalTools(server, ctx, trackTool);\n registerMetricTools(server, ctx, trackTool);\n registerRecoveryTools(server, ctx, trackTool);\n registerCoachingTools(server, ctx, trackTool);\n registerHealthTools(server, ctx, trackTool);\n\n registerMybodyshieldResources(server, ctx, trackResource);\n registerMybodyshieldPrompts(server, ctx, trackPrompt);\n\n return { tools, resources, prompts };\n },\n};\n\nexport default mybodyshieldModule;\n"]}
|