@badger_badger/badger_hq 1.6.0 → 1.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/enums.ts","../../src/mongo/transform.ts","../../src/mongo/indexes.ts","../../src/common.ts","../../src/zod/matching.ts","../../src/zod/org-settings.ts","../../src/zod/task-criteria.ts","../../src/zod/agent-session.ts","../../src/zod/scout-rating.ts","../../src/zod/source-import.ts","../../src/zod/task-target.ts","../../src/mongo/schemas.ts","../../src/mongo/register.ts"],"names":["z","Types","Schema"],"mappings":";;;;;;AAQO,IAAM,eAAA,GAAkB;AAAA,EAC7B,UAAA;AAAA,EACA,UAAA;AAAA,EACA,GAAA;AAAA,EACA,QAAA;AAAA,EACA,WAAA;AAAA,EACA,SAAA;AAAA,EACA,UAAA;AAAA,EACA,QAAA;AAAA,EACA,SAAA;AAAA,EACA,UAAA;AAAA,EACA,SAAA;AAAA,EACA,IAAA;AAAA,EACA,UAAA;AAAA,EACA;AACF,CAAA;AACO,IAAM,QAAA,GAAWA,KAAA,CAAE,IAAA,CAAK,eAAe,CAAA;AAGvC,IAAM,uBAAA,GAA0B,CAAC,KAAA,EAAO,QAAA,EAAU,QAAQ,UAAU,CAAA;AAC5CA,KAAA,CAAE,IAAA,CAAK,uBAAuB;AAGtD,IAAM,qBAAA,GAAwB,CAAC,OAAA,EAAS,QAAA,EAAU,UAAU,QAAQ,CAAA;AAC9CA,KAAA,CAAE,IAAA,CAAK,qBAAqB;AAGlD,IAAM,gBAAA,GAAmB,CAAC,kBAAA,EAAoB,SAAS,CAAA;AACtCA,KAAA,CAAE,IAAA,CAAK,gBAAgB;AAGxC,IAAM,kBAAA,GAAqB,CAAC,MAAA,EAAQ,QAAQ,CAAA;AACzBA,KAAA,CAAE,IAAA,CAAK,kBAAkB;AAG5C,IAAM,kBAAA,GAAqB;AAAA,EAChC,OAAA;AAAA,EACA,kBAAA;AAAA,EACA,UAAA;AAAA,EACA,aAAA;AAAA,EACA,QAAA;AAAA,EACA;AACF,CAAA;AAC0BA,KAAA,CAAE,IAAA,CAAK,kBAAkB;AAG5C,IAAM,kBAAA,GAAqB,CAAC,MAAA,EAAQ,WAAW,CAAA;AAC/C,IAAM,UAAA,GAAaA,KAAA,CAAE,IAAA,CAAK,kBAAkB,CAAA;AAG5C,IAAM,oBAAA,GAAuB,CAAC,OAAA,EAAS,SAAS,CAAA;AAC3BA,KAAA,CAAE,IAAA,CAAK,oBAAoB;AAGhD,IAAM,wBAAA,GAA2B,CAAC,QAAA,EAAU,WAAA,EAAa,SAAS,CAAA;AACzCA,KAAA,CAAE,IAAA,CAAK,wBAAwB;AAGxD,IAAM,wBAAA,GAA2B,CAAC,QAAA,EAAU,QAAQ,CAAA;AAC3BA,KAAA,CAAE,IAAA,CAAK,wBAAwB;AAGxD,IAAM,qBAAA,GAAwB,CAAC,SAAA,EAAW,UAAA,EAAY,WAAW,CAAA;AAC3CA,KAAA,CAAE,IAAA,CAAK,qBAAqB;AAIlD,IAAM,mBAAA,GAAsB,CAAC,QAAA,EAAU,UAAU,CAAA;AAC7BA,KAAA,CAAE,IAAA,CAAK,mBAAmB;AAI9C,IAAM,iBAAA,GAAoB,CAAC,KAAA,EAAO,QAAQ,CAAA;AAC1C,IAAM,SAAA,GAAYA,KAAA,CAAE,IAAA,CAAK,iBAAiB,CAAA;AAG1C,IAAM,qBAAqB,CAAC,SAAA,EAAW,OAAA,EAAS,SAAA,EAAW,SAAS,MAAM,CAAA;AACvDA,KAAA,CAAE,IAAA,CAAK,kBAAkB;AAG5C,IAAM,oBAAA,GAAuB,CAAC,QAAA,EAAU,OAAO,CAAA;AAC1BA,KAAA,CAAE,IAAA,CAAK,oBAAoB;AAGhD,IAAM,mBAAA,GAAsB,CAAC,SAAA,EAAW,SAAA,EAAW,qBAAqB,CAAA;AACpDA,KAAA,CAAE,IAAA,CAAK,mBAAmB;AAI9C,IAAM,oBAAA,GAAuB,CAAC,QAAA,EAAU,QAAA,EAAU,UAAU,gBAAgB,CAAA;AACvDA,KAAA,CAAE,IAAA,CAAK,oBAAoB;AAOhD,IAAM,mBAAA,GAAsB;AAAA,EACjC,gBAAA;AAAA,EACA,SAAA;AAAA,EACA,eAAA;AAAA,EACA,SAAA;AAAA,EACA,aAAA;AAAA,EACA,cAAA;AAAA,EACA,WAAA;AAAA,EACA,cAAA;AAAA,EACA,gBAAA;AAAA,EACA;AACF,CAAA;AACO,IAAM,WAAA,GAAcA,KAAA,CAAE,IAAA,CAAK,mBAAmB,CAAA;AAI9C,IAAM,0BAAA,GAA6B,CAAC,WAAA,EAAa,OAAO,CAAA;AACxD,IAAM,iBAAA,GAAoBA,KAAA,CAAE,IAAA,CAAK,0BAA0B,CAAA;AAG3D,IAAM,4BAA4B,CAAC,OAAA,EAAS,SAAA,EAAW,OAAA,EAAS,UAAU,QAAQ,CAAA;AACzDA,KAAA,CAAE,IAAA,CAAK,yBAAyB;AAGzD,IAAM,yBAAA,GAA4B,CAAC,QAAA,EAAU,QAAQ,CAAA;AACrD,IAAM,gBAAA,GAAmBA,KAAA,CAAE,IAAA,CAAK,yBAAyB,CAAA;AAGzD,IAAM,8BAA8B,CAAC,YAAA,EAAc,OAAA,EAAS,YAAA,EAAc,QAAQ,QAAQ,CAAA;AAC1F,IAAM,kBAAA,GAAqBA,KAAA,CAAE,IAAA,CAAK,2BAA2B,CAAA;AAG7D,IAAM,qBAAA,GAAwB,CAAC,SAAA,EAAW,OAAA,EAAS,WAAW,OAAO,CAAA;AAC/CA,KAAA,CAAE,IAAA,CAAK,qBAAqB;AAGlD,IAAM,wBAAwB,CAAC,WAAA,EAAa,SAAA,EAAW,UAAA,EAAY,WAAW,QAAQ,CAAA;AAChEA,KAAA,CAAE,IAAA,CAAK,qBAAqB;AAGlD,IAAM,sBAAA,GAAyB,CAAC,aAAA,EAAe,SAAS,CAAA;AACjCA,KAAA,CAAE,IAAA,CAAK,sBAAsB;AAGpD,IAAM,wBAAA,GAA2B,CAAC,QAAA,EAAU,SAAA,EAAW,aAAa,QAAQ,CAAA;AACnDA,KAAA,CAAE,IAAA,CAAK,wBAAwB;AAGxD,IAAM,sBAAA,GAAyB,CAAC,cAAA,EAAgB,QAAA,EAAU,OAAO,CAAA;AAC1CA,KAAA,CAAE,IAAA,CAAK,sBAAsB;AAOpD,IAAM,0BAAA,GAA6B,CAAC,SAAA,EAAW,WAAW,CAAA;AAC/BA,KAAA,CAAE,IAAA,CAAK,0BAA0B;AAQ5D,IAAM,yBAAA,GAA4B,CAAC,WAAA,EAAa,SAAS,CAAA;AACzD,IAAM,gBAAA,GAAmBA,KAAA,CAAE,IAAA,CAAK,yBAAyB,CAAA;AAGzD,IAAM,2BAAA,GAA8B,CAAC,QAAA,EAAU,QAAA,EAAU,OAAO,CAAA;AAChE,IAAM,kBAAA,GAAqBA,KAAA,CAAE,IAAA,CAAK,2BAA2B,CAAA;AAG7D,IAAM,yBAAA,GAA4B,CAAC,OAAA,EAAS,QAAA,EAAU,QAAQ,CAAA;AAC9D,IAAM,gBAAA,GAAmBA,KAAA,CAAE,IAAA,CAAK,yBAAyB,CAAA;AAGzD,IAAM,4BAA4B,CAAC,KAAA,EAAO,aAAA,EAAe,QAAA,EAAU,YAAY,OAAO,CAAA;AACtF,IAAM,gBAAA,GAAmBA,KAAA,CAAE,IAAA,CAAK,yBAAyB,CAAA;AAGzD,IAAM,sBAAA,GAAyB;AAAA,EACpC,WAAA;AAAA,EACA,gBAAA;AAAA,EACA,eAAA;AAAA,EACA,aAAA;AAAA,EACA,eAAA;AAAA,EACA,gBAAA;AAAA,EACA;AACF,CAAA;AACO,IAAM,aAAA,GAAgBA,KAAA,CAAE,IAAA,CAAK,sBAAsB,CAAA;AAInD,IAAM,2BAAA,GAA8B;AAAA,EACzC,YAAA;AAAA,EACA,qBAAA;AAAA,EACA,YAAA;AAAA,EACA,OAAA;AAAA,EACA,SAAA;AAAA,EACA;AACF,CAAA;AACO,IAAM,kBAAA,GAAqBA,KAAA,CAAE,IAAA,CAAK,2BAA2B,CAAA;AAG7D,IAAM,wBAAwB,CAAC,UAAA,EAAY,WAAA,EAAa,UAAA,EAAY,UAAU,SAAS,CAAA;AACvF,IAAM,aAAA,GAAgBA,KAAA,CAAE,IAAA,CAAK,qBAAqB,CAAA;AAIlD,IAAM,uBAAA,GAA0B,CAAC,QAAA,EAAU,UAAU,CAAA;AAC9BA,KAAA,CAAE,IAAA,CAAK,uBAAuB;AAIrD,IAAM,yBAAA,GAA4B,CAAC,IAAA,EAAM,aAAA,EAAe,WAAW,CAAA;AACnE,IAAM,gBAAA,GAAmBA,KAAA,CAAE,IAAA,CAAK,yBAAyB,CAAA;AAGzD,IAAM,qBAAA,GAAwB,CAAC,MAAA,EAAQ,gBAAA,EAAkB,SAAS,MAAM,CAAA;AACxE,IAAM,aAAA,GAAgBA,KAAA,CAAE,IAAA,CAAK,qBAAqB,CAAA;AAGlD,IAAM,mBAAA,GAAsB,CAAC,QAAA,EAAU,WAAA,EAAa,QAAQ,CAAA;AAC5D,IAAM,WAAA,GAAcA,KAAA,CAAE,IAAA,CAAK,mBAAmB,CAAA;AAG9C,IAAM,kBAAA,GAAqB;AAAA,EAChC,IAAA;AAAA,EACA,gBAAA;AAAA,EACA,SAAA;AAAA,EACA,cAAA;AAAA,EACA,cAAA;AAAA,EACA,cAAA;AAAA,EACA,iBAAA;AAAA,EACA,cAAA;AAAA,EACA;AACF,CAAA;AACO,IAAM,UAAA,GAAaA,KAAA,CAAE,IAAA,CAAK,kBAAkB,CAAA;AAI5C,IAAM,4BAAA,GAA+B,CAAC,SAAA,EAAW,OAAA,EAAS,SAAS,CAAA;AACvCA,KAAA,CAAE,IAAA,CAAK,4BAA4B;AAI/D,IAAM,WAAA,GAAc;AAAA,EACzB,SAAA,EAAW,WAAA;AAAA,EACX,QAAA,EAAU,UAAA;AAAA,EACV,KAAA,EAAO,OAAA;AAAA,EACP,WAAA,EAAa,aAAA;AAAA,EACb,SAAA,EAAW,WAAA;AAAA,EACX,aAAA,EAAe,eAAA;AAAA,EACf,eAAA,EAAiB,iBAAA;AAAA,EACjB,WAAA,EAAa,aAAA;AAAA,EACb,YAAA,EAAc,cAAA;AAAA,EACd,aAAA,EAAe,eAAA;AAAA,EACf,OAAA,EAAS,SAAA;AAAA,EACT,aAAA,EAAe,eAAA;AAAA,EACf,SAAA,EAAW,WAAA;AAAA,EACX,QAAA,EAAU,UAAA;AAAA,EACV,cAAA,EAAgB,gBAAA;AAAA,EAChB,WAAA,EAAa,aAAA;AAAA,EACb,SAAA,EAAW,WAAA;AAAA,EACX,aAAA,EAAe,eAAA;AAAA,EACf,aAAA,EAAe,eAAA;AAAA,EACf,QAAA,EAAU,UAAA;AAAA,EACV,QAAA,EAAU;AACZ;AC3QO,SAAS,mBAAsB,KAAA,EAAa;AACjD,EAAA,IAAI,KAAA,KAAU,IAAA,IAAQ,KAAA,KAAU,MAAA,EAAW,OAAO,KAAA;AAClD,EAAA,IAAI,KAAA,YAAiBC,cAAA,CAAM,QAAA,EAAU,OAAO,MAAM,WAAA,EAAY;AAC9D,EAAA,IAAI,KAAA,YAAiB,MAAM,OAAO,KAAA;AAClC,EAAA,IAAI,WAAA,CAAY,MAAA,CAAO,KAAK,CAAA,EAAG,OAAO,KAAA;AACtC,EAAA,IAAI,KAAA,CAAM,OAAA,CAAQ,KAAK,CAAA,EAAG;AACxB,IAAA,KAAA,IAAS,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,KAAA,CAAM,MAAA,EAAQ,CAAA,EAAA,EAAK,KAAA,CAAM,CAAC,CAAA,GAAI,kBAAA,CAAmB,KAAA,CAAM,CAAC,CAAC,CAAA;AAC7E,IAAA,OAAO,KAAA;AAAA,EACT;AACA,EAAA,IAAI,OAAO,UAAU,QAAA,EAAU;AAC7B,IAAA,MAAM,GAAA,GAAM,KAAA;AACZ,IAAA,KAAA,MAAW,GAAA,IAAO,MAAA,CAAO,IAAA,CAAK,GAAG,CAAA,EAAG,GAAA,CAAI,GAAG,CAAA,GAAI,kBAAA,CAAmB,GAAA,CAAI,GAAG,CAAC,CAAA;AAC1E,IAAA,OAAO,KAAA;AAAA,EACT;AACA,EAAA,OAAO,KAAA;AACT;AAGO,IAAM,aAAA,GAAgB;AAAA,EAC3B,QAAA,EAAU,KAAA;AAAA,EACV,UAAA,EAAY,KAAA;AAAA,EACZ,SAAA,EAAW,CAAC,IAAA,EAAe,GAAA,KAAiC,mBAAmB,GAAG;AACpF;;;ACZO,IAAM,uBAAA,GAA0B,EAAE,SAAA,EAAW,IAAA;AAS7C,IAAM,OAAA,GAAwD;AAAA,EACnE,CAAC,WAAA,CAAY,SAAS,GAAG;AAAA;AAAA,IAEvB,EAAE,GAAA,EAAK,EAAE,KAAA,EAAO,CAAA,EAAE,EAAG,OAAA,EAAS,EAAE,MAAA,EAAQ,IAAA,EAAM,uBAAA,EAAyB,uBAAA,EAAwB;AAAE,GACnG;AAAA,EACA,CAAC,WAAA,CAAY,aAAa,GAAG;AAAA,IAC3B,EAAE,GAAA,EAAK,EAAE,MAAA,EAAQ,CAAA,EAAE,EAAG,OAAA,EAAS,EAAE,MAAA,EAAQ,IAAA,EAAM,uBAAA,EAAyB,uBAAA,EAAwB,EAAE;AAAA,IAClG,EAAE,GAAA,EAAK,EAAE,KAAA,EAAO,CAAA,EAAE,EAAG,OAAA,EAAS,EAAE,MAAA,EAAQ,IAAA,EAAM,uBAAA,EAAyB,uBAAA,EAAwB,EAAE;AAAA,IACjG,EAAE,GAAA,EAAK,EAAE,eAAe,CAAA,EAAG,MAAA,EAAQ,GAAE;AAAE,GACzC;AAAA,EACA,CAAC,WAAA,CAAY,eAAe,GAAG;AAAA,IAC7B,EAAE,GAAA,EAAK,EAAE,KAAA,EAAO,GAAG,MAAA,EAAQ,CAAA,EAAE,EAAG,OAAA,EAAS,EAAE,MAAA,EAAQ,IAAA,EAAM,uBAAA,EAAyB,yBAAwB;AAAE,GAC9G;AAAA,EACA,CAAC,WAAA,CAAY,WAAW,GAAG,CAAC,EAAE,GAAA,EAAK,EAAE,KAAA,EAAO,CAAA,IAAK,OAAA,EAAS,EAAE,MAAA,EAAQ,IAAA,IAAQ,CAAA;AAAA,EAC5E,CAAC,WAAA,CAAY,YAAY,GAAG;AAAA,IAC1B;AAAA;AAAA,MAEE,GAAA,EAAK,EAAE,YAAA,EAAc,CAAA,EAAG,aAAa,CAAA,EAAE;AAAA,MACvC,OAAA,EAAS,EAAE,MAAA,EAAQ,IAAA,EAAM,uBAAA,EAAyB,EAAE,YAAA,EAAc,EAAE,OAAA,EAAS,IAAA,EAAK,EAAE;AAAE,KACxF;AAAA,IACA,EAAE,GAAA,EAAK,EAAE,aAAa,CAAA,EAAG,SAAA,EAAW,IAAG,EAAE;AAAA,IACzC,EAAE,GAAA,EAAK,EAAE,OAAO,CAAA,EAAG,WAAA,EAAa,GAAE;AAAE,GACtC;AAAA,EACA,CAAC,WAAA,CAAY,aAAa,GAAG,CAAC,EAAE,KAAK,EAAE,MAAA,EAAQ,CAAA,EAAG,KAAA,EAAO,GAAE,EAAG,OAAA,EAAS,EAAE,MAAA,EAAQ,IAAA,IAAQ,CAAA;AAAA,EACzF,CAAC,WAAA,CAAY,QAAQ,GAAG,CAAC,EAAE,GAAA,EAAK,EAAE,KAAA,EAAO,GAAG,MAAA,EAAQ,CAAA,EAAG,QAAA,EAAU,CAAA,IAAK,CAAA;AAAA,EACtE,CAAC,WAAA,CAAY,KAAK,GAAG;AAAA,IACnB,EAAE,KAAK,EAAE,KAAA,EAAO,GAAG,SAAA,EAAW,CAAA,EAAG,MAAA,EAAQ,CAAA,EAAE,EAAE;AAAA;AAAA,IAE7C,EAAE,GAAA,EAAK,EAAE,OAAO,CAAA,EAAG,iBAAA,EAAmB,GAAE,EAAG,OAAA,EAAS,EAAE,uBAAA,EAAyB,EAAE,iBAAA,EAAmB,EAAE,SAAS,IAAA,EAAK,IAAI;AAAE,GAC5H;AAAA,EACA,CAAC,WAAA,CAAY,WAAW,GAAG;AAAA,IACzB,EAAE,KAAK,EAAE,cAAA,EAAgB,GAAG,MAAA,EAAQ,CAAA,EAAG,KAAA,EAAO,CAAA,EAAE,EAAE;AAAA,IAClD,EAAE,KAAK,EAAE,KAAA,EAAO,GAAG,MAAA,EAAQ,CAAA,EAAG,MAAA,EAAQ,CAAA,EAAE,EAAE;AAAA,IAC1C;AAAA;AAAA,MAEE,GAAA,EAAK,EAAE,MAAA,EAAQ,CAAA,EAAG,gBAAgB,CAAA,EAAE;AAAA,MACpC,OAAA,EAAS;AAAA,QACP,MAAA,EAAQ,IAAA;AAAA,QACR,uBAAA,EAAyB,EAAE,MAAA,EAAQ,QAAA,EAAU,GAAG,uBAAA;AAAwB;AAC1E;AACF,GACF;AAAA,EACA,CAAC,WAAA,CAAY,SAAS,GAAG;AAAA,IACvB,EAAE,KAAK,EAAE,KAAA,EAAO,GAAG,WAAA,EAAa,CAAA,EAAG,IAAA,EAAM,EAAA,EAAG,EAAE;AAAA;AAAA,IAE9C;AAAA,MACE,GAAA,EAAK,EAAE,KAAA,EAAO,CAAA,EAAG,cAAc,CAAA,EAAG,WAAA,EAAa,CAAA,EAAG,IAAA,EAAM,CAAA,EAAE;AAAA,MAC1D,OAAA,EAAS,EAAE,MAAA,EAAQ,IAAA,EAAM,yBAAyB,EAAE,MAAA,EAAQ,YAAW;AAAE;AAC3E,GACF;AAAA,EACA,CAAC,WAAA,CAAY,OAAO,GAAG;AAAA,IACrB;AAAA,MACE,KAAK,EAAE,KAAA,EAAO,GAAG,QAAA,EAAU,CAAA,EAAG,KAAK,CAAA,EAAE;AAAA,MACrC,OAAA,EAAS,EAAE,MAAA,EAAQ,IAAA,EAAM,yBAAyB,uBAAA;AAAwB,KAC5E;AAAA,IACA,EAAE,KAAK,EAAE,KAAA,EAAO,GAAG,KAAA,EAAO,CAAA,EAAG,MAAA,EAAQ,CAAA,EAAE,EAAE;AAAA;AAAA,IAEzC,EAAE,GAAA,EAAK,EAAE,OAAO,CAAA,EAAG,UAAA,EAAY,GAAE;AAAE,GACrC;AAAA,EACA,CAAC,WAAA,CAAY,aAAa,GAAG,CAAC,EAAE,GAAA,EAAK,EAAE,KAAA,EAAO,CAAA,EAAG,SAAA,EAAW,EAAA,IAAM,CAAA;AAAA,EAClE,CAAC,WAAA,CAAY,SAAS,GAAG;AAAA,IACvB,EAAE,GAAA,EAAK,EAAE,OAAO,CAAA,EAAG,UAAA,EAAY,GAAE,EAAE;AAAA,IACnC,EAAE,GAAA,EAAK,EAAE,OAAO,CAAA,EAAG,WAAA,EAAa,IAAG,EAAE;AAAA,IACrC,EAAE,KAAK,EAAE,KAAA,EAAO,GAAG,UAAA,EAAY,CAAA,EAAG,WAAA,EAAa,EAAA,EAAG,EAAE;AAAA,IACpD,EAAE,KAAK,EAAE,KAAA,EAAO,GAAG,QAAA,EAAU,CAAA,EAAG,WAAA,EAAa,EAAA,EAAG,EAAE;AAAA,IAClD;AAAA;AAAA,MAEE,KAAK,EAAE,KAAA,EAAO,GAAG,QAAA,EAAU,CAAA,EAAG,aAAa,CAAA,EAAE;AAAA,MAC7C,OAAA,EAAS,EAAE,MAAA,EAAQ,IAAA,EAAM,uBAAA,EAAyB,EAAE,WAAA,EAAa,EAAE,OAAA,EAAS,IAAA,EAAK,EAAE;AAAE,KACvF;AAAA,IACA,EAAE,GAAA,EAAK,EAAE,cAAA,EAAgB,MAAA,IAAU,OAAA,EAAS,EAAE,IAAA,EAAM,mBAAA,EAAoB;AAAE,GAC5E;AAAA,EACA,CAAC,WAAA,CAAY,QAAQ,GAAG,CAAC,EAAE,GAAA,EAAK,EAAE,KAAA,EAAO,GAAG,QAAA,EAAU,CAAA,EAAG,MAAA,EAAQ,CAAA,IAAK,CAAA;AAAA,EACtE,CAAC,WAAA,CAAY,cAAc,GAAG;AAAA,IAC5B,EAAE,KAAK,EAAE,KAAA,EAAO,GAAG,SAAA,EAAW,CAAA,EAAG,IAAA,EAAM,EAAA,EAAG,EAAE;AAAA,IAC5C,EAAE,GAAA,EAAK,EAAE,SAAA,EAAW,CAAA,EAAG,IAAA,EAAM,CAAA,EAAE,EAAG,OAAA,EAAS,EAAE,MAAA,EAAQ,IAAA,EAAK;AAAE,GAC9D;AAAA,EACA,CAAC,WAAA,CAAY,WAAW,GAAG,CAAC,EAAE,GAAA,EAAK,EAAE,KAAA,EAAO,GAAG,IAAA,EAAM,CAAA,EAAG,SAAA,EAAW,EAAA,IAAM,CAAA;AAAA,EACzE,CAAC,WAAA,CAAY,SAAS,GAAG;AAAA,IACvB,EAAE,GAAA,EAAK,EAAE,OAAO,CAAA,EAAG,EAAA,EAAI,IAAG,EAAE;AAAA,IAC5B,EAAE,GAAA,EAAK,EAAE,aAAa,CAAA,EAAG,EAAA,EAAI,IAAG;AAAE,GACpC;AAAA,EACA,CAAC,WAAA,CAAY,aAAa,GAAG;AAAA,IAC3B,EAAE,KAAK,EAAE,KAAA,EAAO,GAAG,YAAA,EAAc,CAAA,EAAG,MAAA,EAAQ,CAAA,EAAE,EAAE;AAAA,IAChD,EAAE,KAAK,EAAE,KAAA,EAAO,GAAG,MAAA,EAAQ,CAAA,EAAG,SAAA,EAAW,EAAA,EAAG,EAAE;AAAA;AAAA,IAE9C,EAAE,KAAK,EAAE,MAAA,EAAQ,GAAG,MAAA,EAAQ,CAAA,EAAG,SAAA,EAAW,EAAA,EAAG;AAAE,GACjD;AAAA,EACA,CAAC,YAAY,aAAa,GAAG,CAAC,EAAE,GAAA,EAAK,EAAE,KAAA,EAAO,CAAA,EAAG,WAAW,CAAA,EAAG,GAAA,EAAK,GAAE,EAAG,OAAA,EAAS,EAAE,MAAA,EAAQ,IAAA,IAAQ,CAAA;AAAA,EACpG,CAAC,WAAA,CAAY,QAAQ,GAAG;AAAA,IACtB,EAAE,KAAK,EAAE,KAAA,EAAO,GAAG,SAAA,EAAW,CAAA,EAAG,UAAA,EAAY,EAAA,EAAG,EAAE;AAAA;AAAA,IAElD,EAAE,GAAA,EAAK,EAAE,QAAQ,CAAA,EAAG,SAAA,EAAW,GAAE,EAAE;AAAA;AAAA,IAEnC,EAAE,GAAA,EAAK,EAAE,QAAQ,CAAA,EAAG,SAAA,EAAW,GAAE,EAAE;AAAA;AAAA,IAEnC,EAAE,GAAA,EAAK,EAAE,KAAA,EAAO,CAAA,EAAG,YAAA,EAAc,CAAA,EAAG,MAAA,EAAQ,CAAA,EAAG,UAAA,EAAY,CAAA,EAAE;AAAE,GACjE;AAAA,EACA,CAAC,WAAA,CAAY,QAAQ,GAAG;AAAA,IACtB,EAAE,GAAA,EAAK,EAAE,OAAO,CAAA,EAAG,SAAA,EAAW,IAAG,EAAE;AAAA,IACnC,EAAE,GAAA,EAAK,EAAE,WAAW,CAAA,EAAG,SAAA,EAAW,IAAG;AAAE;AAE3C;AAGO,SAAS,YAAA,CAAa,QAAgB,UAAA,EAAkC;AAC7E,EAAA,KAAA,MAAW,IAAA,IAAQ,OAAA,CAAQ,UAAU,CAAA,EAAG;AACtC,IAAA,MAAA,CAAO,KAAA,CAAM,IAAA,CAAK,GAAA,EAAK,IAAA,CAAK,OAAO,CAAA;AAAA,EACrC;AACF;AChIO,IAAM,iBAAiBD,KAAAA,CAC3B,MAAA,EAAO,CACP,KAAA,CAAM,qBAAqB,6CAA6C,CAAA;AAIpE,IAAM,aAAaA,KAAAA,CAAE,MAAA,EAAO,CAAE,KAAA,CAAM,sBAAsB,sCAAiC,CAAA;AAI3F,IAAM,cAAcA,KAAAA,CAAE,MAAA,EAAO,CAAE,KAAA,CAAM,uBAAuB,wCAAmC,CAAA;AAU5EA,KAAAA,CAAE,MAAA,EAAO,CAAE,IAAI,CAAC;AAQnC,IAAM,gBAAA,GAAmBA,MAAE,MAAA,CAAO;AAAA,EACvC,SAAA,EAAWA,KAAAA,CAAE,MAAA,CAAO,IAAA,EAAK;AAAA,EACzB,SAAA,EAAWA,KAAAA,CAAE,MAAA,CAAO,IAAA;AACtB,CAAC,CAAA;AAIM,IAAM,gBAAA,GAAmBA,MAAE,MAAA,CAAO;AAAA,EACvC,SAAA,EAAWA,KAAAA,CAAE,MAAA,CAAO,IAAA,GAAO,QAAA;AAC7B,CAAC,CAAA;AAOM,IAAM,eAAeA,KAAAA,CAAE,MAAA,EAAO,CAAE,KAAA,CAAM,cAAc,iDAAiD,CAAA;AAIrG,IAAM,OAAOA,KAAAA,CAAE,MAAA,EAAO,CAAE,KAAA,CAAM,6BAA6B,gBAAgB,CAAA;AAO7CA,MAAE,MAAA,CAAO;AAAA,EAC5C,MAAA,EAAQA,KAAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EAAS;AAAA,EAC5B,KAAA,EAAOA,KAAAA,CAAE,MAAA,CAAO,MAAA,GAAS,GAAA,EAAI,CAAE,GAAA,CAAI,CAAC,CAAA,CAAE,GAAA,CAAI,GAAG,CAAA,CAAE,QAAQ,EAAE;AAC3D,CAAC;AAiB6BA,MAAE,MAAA,CAAO;AAAA,EACrC,KAAA,EAAOA,MAAE,MAAA,CAAO;AAAA,IACd,IAAA,EAAMA,MAAE,MAAA,EAAO;AAAA,IACf,OAAA,EAASA,MAAE,MAAA,EAAO;AAAA,IAClB,OAAA,EAASA,KAAAA,CAAE,OAAA,EAAQ,CAAE,QAAA;AAAS,GAC/B;AACH,CAAC;AC/EM,IAAM,wBAAA,GAA2BA,MAAE,MAAA,CAAO;AAAA;AAAA,EAE/C,GAAA,EAAKA,MAAE,KAAA,CAAM;AAAA,IACXA,KAAAA,CAAE,QAAQ,CAAC,CAAA;AAAA,IACXA,KAAAA,CAAE,QAAQ,CAAC,CAAA;AAAA,IACXA,KAAAA,CAAE,QAAQ,CAAC,CAAA;AAAA,IACXA,KAAAA,CAAE,QAAQ,CAAC,CAAA;AAAA,IACXA,KAAAA,CAAE,QAAQ,CAAC,CAAA;AAAA,IACXA,KAAAA,CAAE,QAAQ,CAAC,CAAA;AAAA,IACXA,KAAAA,CAAE,QAAQ,CAAC;AAAA,GACZ,CAAA;AAAA,EACD,KAAA,EAAO,IAAA;AAAA,EACP,GAAA,EAAK;AACP,CAAC,CAAA;AAIM,IAAM,mBAAA,GAAsBA,MAAE,MAAA,CAAO;AAAA,EAC1C,QAAA,EAAU,QAAA;AAAA,EACV,IAAA,EAAMA,MAAE,MAAA,EAAO,CAAE,IAAI,CAAC,CAAA,CAAE,IAAI,GAAG;AACjC,CAAC,CAAA;AAGM,IAAM,oBAAA,GAAuBA,MAAE,MAAA,CAAO;AAAA;AAAA,EAE3C,GAAA,EAAKA,KAAAA,CAAE,OAAA,EAAQ,CAAE,QAAQ,KAAK,CAAA;AAAA,EAC9B,WAAWA,KAAAA,CAAE,KAAA,CAAM,QAAQ,CAAA,CAAE,OAAA,CAAQ,EAAE,CAAA;AAAA,EACvC,SAASA,KAAAA,CAAE,KAAA,CAAM,mBAAmB,CAAA,CAAE,OAAA,CAAQ,EAAE;AAClD,CAAC,CAAA;AAKM,IAAM,QAAA,GAAWA,MAAE,MAAA,EAAO,CAAE,IAAI,CAAC,CAAA,CAAE,IAAI,EAAE,CAAA;AAGZA,MAAE,MAAA,CAAO;AAAA,EAC3C,WAAWA,KAAAA,CAAE,KAAA,CAAM,YAAY,CAAA,CAAE,OAAA,CAAQ,EAAE,CAAA;AAAA;AAAA,EAE3C,OAAA,EAASA,KAAAA,CAAE,KAAA,CAAMA,KAAAA,CAAE,MAAA,EAAO,CAAE,GAAA,CAAI,CAAC,CAAC,CAAA,CAAE,OAAA,CAAQ,EAAE,CAAA;AAAA,EAC9C,QAAA,EAAU,QAAA;AAAA,EACV,cAAcA,KAAAA,CAAE,KAAA,CAAM,wBAAwB,CAAA,CAAE,OAAA,CAAQ,EAAE,CAAA;AAAA,EAC1D,cAAA,EAAgB,oBAAA,CAAqB,OAAA,CAAQ,EAAE,CAAA;AAAA,EAC/C,UAAA,EAAYA,KAAAA,CAAE,MAAA,EAAO,CAAE,GAAA,CAAI,CAAC,CAAA,CAAE,GAAA,CAAI,GAAG,CAAA,CAAE,QAAA,EAAS;AAAA;AAAA,EAEhD,SAAA,EAAWA,KAAAA,CAAE,MAAA,EAAO,CAAE,GAAA,EAAI,CAAE,QAAA,EAAS,CAAE,GAAA,CAAI,GAAG,CAAA,CAAE,QAAA;AAClD,CAAC;;;AClDM,IAAM,0BAAA,GAA6B,CAAA;AAGnC,IAAM,iBAAA,GAAoBA,MAC9B,MAAA,CAAO;AAAA,EACN,GAAA,EAAK,cAAA;AAAA,EACL,KAAA,EAAO,UAAA;AAAA,EACP,uBAAA,EAAyBA,KAAAA,CAAE,MAAA,EAAO,CAAE,GAAA,EAAI,CAAE,QAAA,EAAS,CAAE,GAAA,CAAI,GAAG,CAAA,CAAE,OAAA,CAAQ,0BAA0B,CAAA;AAAA,EAChG,QAAA,EAAU,QAAA,CAAS,OAAA,CAAQ,KAAK;AAClC,CAAC,CAAA,CACA,MAAM,gBAAgB,CAAA;AAEc,kBAAkB,IAAA,CAAK;AAAA,EAC5D,uBAAA,EAAyB,IAAA;AAAA,EACzB,QAAA,EAAU;AACZ,CAAC,EAAE,OAAA;ACfI,IAAM,oBAAA,GAAuBA,MACjC,MAAA,CAAO;AAAA,EACN,KAAA,EAAOA,KAAAA,CAAE,MAAA,CAAO,IAAA,EAAK;AAAA,EACrB,GAAA,EAAKA,KAAAA,CAAE,MAAA,CAAO,IAAA;AAChB,CAAC,CAAA,CACA,MAAA,CAAO,CAAC,CAAA,KAAM,CAAA,CAAE,GAAA,CAAI,OAAA,EAAQ,GAAI,CAAA,CAAE,KAAA,CAAM,OAAA,EAAQ,EAAG;AAAA,EAClD,OAAA,EAAS,uDAAA;AAAA,EACT,IAAA,EAAM,CAAC,KAAK;AACd,CAAC,CAAA;AAI+BA,MAAE,MAAA,CAAO;AAAA,EACzC,SAAA,EAAWA,KAAAA,CAAE,KAAA,CAAM,YAAY,CAAA;AAAA,EAC/B,SAAA,EAAWA,KAAAA,CAAE,KAAA,CAAM,QAAQ,CAAA;AAAA,EAC3B,OAAA,EAASA,MAAE,KAAA,CAAMA,KAAAA,CAAE,QAAO,CAAE,GAAA,CAAI,CAAC,CAAC,CAAA;AAAA,EAClC,UAAA,EAAY,UAAA;AAAA,EACZ,YAAYA,KAAAA,CAAE,MAAA,GAAS,GAAA,CAAI,CAAC,EAAE,QAAA,EAAS;AAAA,EACvC,cAAA,EAAgB,qBAAqB,QAAA,EAAS;AAAA,EAC9C,SAAA,EAAWA,KAAAA,CAAE,OAAA,EAAQ,CAAE,QAAQ,KAAK;AACtC,CAAC;;;ACOD,IAAM,KAAA,GAAQ,MAAMA,KAAAA,CAAE,MAAA,EAAO,CAAE,GAAA,EAAI,CAAE,GAAA,CAAI,CAAC,CAAA,CAAE,OAAA,CAAQ,CAAC,CAAA;AAE9C,IAAM,uBAAA,GAA0BA,MAAE,MAAA,CAAO;AAAA,EAC9C,eAAe,KAAA,EAAM;AAAA,EACrB,cAAc,KAAA,EAAM;AAAA,EACpB,kBAAkB,KAAA,EAAM;AAAA,EACxB,kBAAkB,KAAA,EAAM;AAAA,EACxB,gBAAgB,KAAA,EAAM;AAAA,EACtB,cAAc,KAAA,EAAM;AAAA,EACpB,gBAAgB,KAAA,EAAM;AAAA,EACtB,YAAY,KAAA,EAAM;AAAA,EAClB,eAAe,KAAA,EAAM;AAAA,EACrB,gBAAgB,KAAA,EAAM;AAAA,EACtB,kBAAkB,KAAA;AACpB,CAAC,CAAA;AAIM,IAAM,wBAAA,GAA2BA,MAAE,MAAA,CAAO;AAAA,EAC/C,QAAQ,KAAA,EAAM;AAAA,EACd,OAAA,EAASA,MAAE,MAAA,EAAO,CAAE,IAAI,CAAC,CAAA,CAAE,QAAQ,CAAC;AACtC,CAAC,CAAA;AAGM,IAAM,kBAAA,GAAqBA,MAC/B,MAAA,CAAO;AAAA,EACN,GAAA,EAAK,cAAA;AAAA,EACL,KAAA,EAAO,UAAA;AAAA,EACP,SAAA,EAAW,cAAA;AAAA,EACX,MAAA,EAAQ,cAAA;AAAA,EACR,YAAA,EAAc,cAAA;AAAA,EACd,MAAA,EAAQ,WAAA;AAAA,EACR,IAAA,EAAM,gBAAA;AAAA,EACN,MAAA,EAAQ,kBAAA,CAAmB,OAAA,CAAQ,QAAQ,CAAA;AAAA,EAC3C,SAAA,EAAWA,KAAAA,CAAE,MAAA,CAAO,IAAA,EAAK;AAAA,EACzB,OAAA,EAASA,KAAAA,CAAE,MAAA,CAAO,IAAA,GAAO,QAAA,EAAS;AAAA;AAAA,EAElC,cAAA,EAAgBA,KAAAA,CAAE,MAAA,CAAO,IAAA,EAAK;AAAA,EAC9B,eAAe,KAAA,EAAM;AAAA;AAAA,EAErB,SAAS,KAAA,EAAM;AAAA,EACf,KAAA,EAAO,uBAAA,CAAwB,OAAA,CAAQ,EAAE,CAAA;AAAA,EACzC,MAAA,EAAQ,wBAAA,CAAyB,OAAA,CAAQ,EAAE,CAAA;AAAA;AAAA,EAE3C,aAAA,EAAe,qBAAqB,QAAA,EAAS;AAAA;AAAA,EAE7C,KAAA,EAAOA,KAAAA,CAAE,OAAA,EAAQ,CAAE,QAAA;AACrB,CAAC,CAAA,CACA,MAAM,gBAAgB,CAAA;AAElB,IAAM,wBAAA,GAA2B,mBAAmB,IAAA,CAAK;AAAA,EAC9D,GAAA,EAAK,IAAA;AAAA,EACL,KAAA,EAAO,IAAA;AAAA,EACP,SAAA,EAAW,IAAA;AAAA,EACX,SAAA,EAAW;AACb,CAAC,CAAA;AACuC,yBAAyB,OAAA;AAY1D,IAAM,kBAAA,GAAqBA,MAAE,MAAA,CAAO;AAAA,EACzC,IAAA,EAAMA,KAAAA,CAAE,OAAA,CAAQ,aAAA,CAAc,KAAK,SAAS,CAAA;AAAA,EAC5C,GAAA,EAAKA,KAAAA,CAAE,MAAA,EAAO,CAAE,GAAA,EAAI;AAAA,EACpB,KAAA,EAAOA,MAAE,MAAA,EAAO,CAAE,IAAI,CAAC,CAAA,CAAE,IAAI,GAAG,CAAA;AAAA,EAChC,QAAA,EAAU,SAAS,QAAA;AACrB,CAAC,CAAA;AAEM,IAAM,uBAAA,GAA0BA,MAAE,MAAA,CAAO;AAAA,EAC9C,IAAA,EAAMA,KAAAA,CAAE,OAAA,CAAQ,aAAA,CAAc,KAAK,cAAc,CAAA;AAAA,EACjD,IAAA,EAAMA,MAAE,MAAA,EAAO,CAAE,IAAI,CAAC,CAAA,CAAE,IAAI,GAAG;AACjC,CAAC,CAAA;AAEM,IAAM,sBAAA,GAAyBA,MAAE,MAAA,CAAO;AAAA,EAC7C,IAAA,EAAMA,KAAAA,CAAE,OAAA,CAAQ,aAAA,CAAc,KAAK,aAAa,CAAA;AAAA,EAChD,IAAA,EAAMA,MAAE,MAAA,EAAO,CAAE,IAAI,CAAC,CAAA,CAAE,IAAI,GAAG,CAAA;AAAA,EAC/B,QAAA,EAAU,QAAA;AAAA,EACV,KAAKA,KAAAA,CAAE,MAAA,EAAO,CAAE,GAAA,GAAM,QAAA,EAAS;AAAA,EAC/B,OAAA,EAAS,kBAAA;AAAA,EACT,MAAA,EAAQA,KAAAA,CAAE,MAAA,EAAO,CAAE,IAAI,GAAG,CAAA;AAAA,EAC1B,KAAA,EAAOA,KAAAA,CAAE,MAAA,EAAO,CAAE,GAAA,CAAI,CAAC,CAAA,CAAE,GAAA,CAAI,CAAC,CAAA,CAAE,QAAA;AAClC,CAAC,CAAA;AAEM,IAAM,oBAAA,GAAuBA,MAAE,MAAA,CAAO;AAAA,EAC3C,IAAA,EAAMA,KAAAA,CAAE,OAAA,CAAQ,aAAA,CAAc,KAAK,WAAW,CAAA;AAAA,EAC9C,OAAA,EAASA,KAAAA,CAAE,MAAA,EAAO,CAAE,IAAI,GAAG,CAAA;AAAA,EAC3B,QAAA,EAAU,QAAA;AAAA,EACV,QAAA,EAAUA,MAAE,OAAA,EAAQ;AAAA,EACpB,WAAA,EAAaA,KAAAA,CAAE,MAAA,CAAO,IAAA,GAAO,QAAA;AAC/B,CAAC,CAAA;AAEM,IAAM,sBAAA,GAAyBA,MAAE,MAAA,CAAO;AAAA,EAC7C,EAAA,EAAIA,MAAE,MAAA,EAAO,CAAE,IAAI,CAAC,CAAA,CAAE,IAAI,EAAE,CAAA;AAAA,EAC5B,KAAA,EAAOA,MAAE,MAAA,EAAO,CAAE,IAAI,CAAC,CAAA,CAAE,IAAI,EAAE;AACjC,CAAC,CAAA;AAGM,IAAM,sBAAA,GAAyBA,MAAE,MAAA,CAAO;AAAA,EAC7C,IAAA,EAAMA,KAAAA,CAAE,OAAA,CAAQ,aAAA,CAAc,KAAK,aAAa,CAAA;AAAA,EAChD,UAAA,EAAYA,MAAE,MAAA,EAAO,CAAE,IAAI,CAAC,CAAA,CAAE,IAAI,EAAE,CAAA;AAAA,EACpC,OAAA,EAASA,MAAE,KAAA,CAAM,sBAAsB,EAAE,GAAA,CAAI,CAAC,CAAA,CAAE,GAAA,CAAI,CAAC;AACvD,CAAC,CAAA;AAEM,IAAM,uBAAA,GAA0BA,MAAE,MAAA,CAAO;AAAA,EAC9C,IAAA,EAAMA,KAAAA,CAAE,OAAA,CAAQ,aAAA,CAAc,KAAK,cAAc,CAAA;AAAA,EACjD,SAASA,KAAAA,CAAE,MAAA,EAAO,CAAE,GAAA,GAAM,QAAA,EAAS;AAAA,EACnC,IAAA,EAAMA,KAAAA,CAAE,MAAA,EAAO,CAAE,IAAI,GAAG;AAC1B,CAAC,CAAA;AAEM,IAAM,sBAAA,GAAyBA,MAAE,MAAA,CAAO;AAAA,EAC7C,IAAA,EAAMA,KAAAA,CAAE,OAAA,CAAQ,aAAA,CAAc,KAAK,aAAa,CAAA;AAAA,EAChD,SAAA,EAAW;AACb,CAAC,CAAA;AAEM,IAAM,eAAA,GAAkBA,KAAAA,CAAE,kBAAA,CAAmB,MAAA,EAAQ;AAAA,EAC1D,kBAAA;AAAA,EACA,uBAAA;AAAA,EACA,sBAAA;AAAA,EACA,oBAAA;AAAA,EACA,sBAAA;AAAA,EACA,uBAAA;AAAA,EACA;AACF,CAAC,CAAA;AAGM,IAAM,6BAAA,GAAgC,GAAA;AAEtC,IAAM,kBAAA,GAAqBA,MAC/B,MAAA,CAAO;AAAA,EACN,GAAA,EAAK,cAAA;AAAA,EACL,KAAA,EAAO,UAAA;AAAA,EACP,SAAA,EAAW,cAAA;AAAA;AAAA,EAEX,KAAKA,KAAAA,CAAE,MAAA,GAAS,GAAA,EAAI,CAAE,IAAI,CAAC,CAAA;AAAA,EAC3B,IAAA,EAAM,gBAAA;AAAA,EACN,IAAA,EAAM,gBAAA;AAAA,EACN,IAAA,EAAMA,KAAAA,CAAE,MAAA,EAAO,CAAE,IAAI,6BAA6B,CAAA;AAAA,EAClD,OAAOA,KAAAA,CAAE,KAAA,CAAM,eAAe,CAAA,CAAE,OAAA,CAAQ,EAAE;AAC5C,CAAC,CAAA,CACA,MAAM,gBAAgB,CAAA;AAEe,mBAAmB,IAAA,CAAK;AAAA,EAC9D,GAAA,EAAK,IAAA;AAAA,EACL,KAAA,EAAO,IAAA;AAAA,EACP,SAAA,EAAW,IAAA;AAAA,EACX,SAAA,EAAW;AACb,CAAC;AAWM,IAAM,aAAA,GAAgBA,MAAE,MAAA,CAAO;AAAA,EACpC,MAAA,EAAQA,KAAAA,CAAE,MAAA,EAAO,CAAE,IAAI,CAAC,CAAA;AAAA,EACxB,GAAA,EAAKA,KAAAA,CAAE,MAAA,EAAO,CAAE,IAAI,CAAC,CAAA;AAAA,EACrB,WAAA,EAAaA,KAAAA,CAAE,MAAA,EAAO,CAAE,IAAI,CAAC,CAAA;AAAA,EAC7B,OAAOA,KAAAA,CAAE,MAAA,GAAS,GAAA,EAAI,CAAE,IAAI,CAAC;AAC/B,CAAC,CAAA;AAQM,IAAM,mBAAA,GAAsBA,MAAE,MAAA,CAAO;AAAA,EAC1C,CAAA,EAAGA,KAAAA,CAAE,MAAA,EAAO,CAAE,IAAI,CAAC,CAAA;AAAA,EACnB,CAAA,EAAGA,KAAAA,CAAE,MAAA,EAAO,CAAE,IAAI,CAAC,CAAA;AAAA,EACnB,CAAA,EAAGA,KAAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EAAS;AAAA,EACvB,CAAA,EAAGA,KAAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EAAS;AAAA,EACvB,SAAA,EAAWA,KAAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EAAS;AAAA,EAC/B,SAAA,EAAWA,KAAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EAAS;AAAA,EAC/B,GAAA,EAAKA,KAAAA,CAAE,MAAA,EAAO,CAAE,QAAA;AAClB,CAAC,CAAA;AAGM,IAAM,uBAAA,GAA0BA,MAAE,MAAA,CAAO;AAAA,EAC9C,QAAQA,KAAAA,CAAE,MAAA,GAAS,GAAA,EAAI,CAAE,IAAI,CAAC,CAAA;AAAA,EAC9B,OAAOA,KAAAA,CAAE,MAAA,GAAS,GAAA,EAAI,CAAE,IAAI,CAAC,CAAA;AAAA,EAC7B,OAAOA,KAAAA,CAAE,MAAA,GAAS,GAAA,EAAI,CAAE,IAAI,CAAC,CAAA;AAAA,EAC7B,IAAA,EAAM,aAAa,QAAA;AACrB,CAAC,CAAA;AAGM,IAAM,aAAA,GAAgBA,MAC1B,MAAA,CAAO;AAAA,EACN,GAAA,EAAK,cAAA;AAAA,EACL,KAAA,EAAO,UAAA;AAAA;AAAA,EAEP,SAAA,EAAW,eAAe,QAAA,EAAS;AAAA;AAAA,EAEnC,YAAA,EAAc,eAAe,QAAA,EAAS;AAAA,EACtC,MAAA,EAAQ,eAAe,QAAA,EAAS;AAAA,EAChC,SAAA,EAAW,eAAe,QAAA,EAAS;AAAA;AAAA,EAEnC,MAAA,EAAQ,YAAY,QAAA,EAAS;AAAA;AAAA,EAE7B,GAAA,EAAKA,KAAAA,CAAE,MAAA,EAAO,CAAE,GAAA,EAAI;AAAA,EACpB,KAAA,EAAOA,KAAAA,CAAE,MAAA,EAAO,CAAE,IAAI,GAAG,CAAA;AAAA,EACzB,UAAA,EAAYA,KAAAA,CAAE,MAAA,CAAO,IAAA,EAAK;AAAA,EAC1B,QAAA,EAAU,aAAA;AAAA;AAAA,EAEV,MAAA,EAAQA,KAAAA,CAAE,MAAA,EAAO,CAAE,MAAM,gBAAgB,CAAA;AAAA,EACzC,MAAA,EAAQ,oBAAoB,QAAA,EAAS;AAAA,EACrC,MAAA,EAAQ,cAAc,QAAA,EAAS;AAAA,EAC/B,SAAA,EAAW,gBAAA,CAAiB,OAAA,CAAQ,aAAa,CAAA;AAAA,EACjD,UAAA,EAAY,wBAAwB,QAAA,EAAS;AAAA,EAC7C,MAAA,EAAQ,aAAA,CAAc,OAAA,CAAQ,UAAU,CAAA;AAAA;AAAA,EAExC,QAAA,EAAUA,KAAAA,CAAE,OAAA,EAAQ,CAAE,QAAA,EAAS;AAAA,EAC/B,OAAOA,KAAAA,CAAE,MAAA,GAAS,GAAA,CAAI,GAAI,EAAE,QAAA,EAAS;AAAA;AAAA,EAErC,QAAA,EAAUA,KAAAA,CAAE,MAAA,EAAO,CAAE,GAAA,GAAM,GAAA,CAAI,CAAC,CAAA,CAAE,OAAA,CAAQ,CAAC,CAAA;AAAA;AAAA,EAE3C,SAAA,EAAWA,KAAAA,CAAE,MAAA,CAAO,IAAA,GAAO,QAAA,EAAS;AAAA;AAAA,EAEpC,SAAA,EAAWA,KAAAA,CAAE,MAAA,CAAO,IAAA;AACtB,CAAC,CAAA,CACA,MAAM,gBAAgB,CAAA;AAEU,cAAc,IAAA,CAAK;AAAA,EACpD,GAAA,EAAK,IAAA;AAAA,EACL,KAAA,EAAO,IAAA;AAAA,EACP,SAAA,EAAW,IAAA;AAAA,EACX,SAAA,EAAW;AACb,CAAC;AAUM,IAAM,aAAA,GAAgBA,MAAE,MAAA,CAAO;AAAA,EACpC,CAAA,EAAGA,MAAE,MAAA,EAAO;AAAA,EACZ,CAAA,EAAGA,MAAE,MAAA,EAAO;AAAA,EACZ,CAAA,EAAGA,KAAAA,CAAE,MAAA,EAAO,CAAE,IAAI,CAAC,CAAA;AAAA,EACnB,CAAA,EAAGA,KAAAA,CAAE,MAAA,EAAO,CAAE,IAAI,CAAC;AACrB,CAAC,CAAA;AAGM,IAAM,cAAA,GAAiBA,MAAE,MAAA,CAAO;AAAA,EACrC,GAAA,EAAKA,MAAE,MAAA,EAAO,CAAE,IAAI,CAAC,CAAA,CAAE,IAAI,EAAE,CAAA;AAAA,EAC7B,IAAA,EAAMA,KAAAA,CAAE,MAAA,EAAO,CAAE,IAAI,GAAI,CAAA;AAAA,EACzB,IAAA,EAAM;AACR,CAAC,CAAA;AAGM,IAAM,aAAA,GAAgBA,MAAE,MAAA,CAAO;AAAA,EACpC,IAAA,EAAMA,KAAAA,CAAE,MAAA,EAAO,CAAE,IAAI,IAAI,CAAA;AAAA,EACzB,IAAA,EAAMA,KAAAA,CAAE,MAAA,EAAO,CAAE,IAAI,GAAG,CAAA;AAAA,EACxB,IAAA,EAAM;AACR,CAAC,CAAA;AAQuCA,MAAE,MAAA,CAAO;AAAA,EAC/C,GAAA,EAAKA,KAAAA,CAAE,MAAA,EAAO,CAAE,GAAA,EAAI;AAAA,EACpB,KAAA,EAAOA,KAAAA,CAAE,MAAA,EAAO,CAAE,IAAI,GAAG,CAAA;AAAA,EACzB,MAAMA,KAAAA,CAAE,MAAA,GAAS,GAAA,CAAI,EAAE,EAAE,QAAA,EAAS;AAAA,EAClC,UAAA,EAAYA,KAAAA,CAAE,MAAA,CAAO,IAAA,EAAK;AAAA,EAC1B,QAAA,EAAUA,MAAE,MAAA,CAAO;AAAA,IACjB,CAAA,EAAGA,KAAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EAAS;AAAA,IACvB,CAAA,EAAGA,KAAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EAAS;AAAA,IACvB,GAAA,EAAKA,KAAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EAAS;AAAA,IACzB,OAAA,EAASA,MAAE,MAAA,EAAO;AAAA,IAClB,OAAA,EAASA,MAAE,MAAA;AAAO,GACnB,CAAA;AAAA,EACD,MAAA,EAAQA,KAAAA,CAAE,KAAA,CAAM,cAAc,CAAA;AAAA,EAC9B,KAAA,EAAOA,KAAAA,CAAE,KAAA,CAAM,aAAa,CAAA;AAAA,EAC5B,SAAA,EAAWA,MAAE,OAAA;AACf,CAAC;AAOM,IAAM,cAAA,GAAiBA,MAAE,MAAA,CAAO;AAAA,EACrC,aAAa,KAAA,EAAM;AAAA,EACnB,cAAc,KAAA,EAAM;AAAA,EACpB,aAAa,KAAA;AACf,CAAC,CAAA;AAIM,IAAM,aAAA,GAAgBA,MAC1B,MAAA,CAAO;AAAA,EACN,GAAA,EAAK,cAAA;AAAA,EACL,KAAA,EAAO,WAAW,QAAA,EAAS;AAAA,EAC3B,SAAA,EAAW,eAAe,QAAA,EAAS;AAAA,EACnC,UAAA,EAAY,aAAA;AAAA,EACZ,QAAA,EAAU,WAAA;AAAA,EACV,KAAA,EAAOA,KAAAA,CAAE,MAAA,EAAO,CAAE,IAAI,CAAC,CAAA;AAAA,EACvB,aAAA,EAAeA,KAAAA,CAAE,MAAA,EAAO,CAAE,IAAI,CAAC,CAAA;AAAA;AAAA,EAE/B,SAASA,KAAAA,CAAE,MAAA,GAAS,GAAA,EAAI,CAAE,IAAI,CAAC,CAAA;AAAA;AAAA,EAE/B,eAAeA,KAAAA,CAAE,KAAA,CAAM,WAAW,CAAA,CAAE,OAAA,CAAQ,EAAE,CAAA;AAAA,EAC9C,KAAA,EAAO,cAAA,CAAe,OAAA,CAAQ,EAAE,CAAA;AAAA,EAChC,WAAWA,KAAAA,CAAE,MAAA,GAAS,GAAA,EAAI,CAAE,IAAI,CAAC,CAAA;AAAA,EACjC,iBAAiBA,KAAAA,CAAE,MAAA,GAAS,GAAA,CAAI,CAAC,EAAE,QAAA,EAAS;AAAA,EAC5C,OAAA,EAAS,UAAA;AAAA,EACT,WAAWA,KAAAA,CAAE,MAAA,GAAS,GAAA,CAAI,GAAG,EAAE,QAAA;AACjC,CAAC,CAAA,CACA,MAAM,gBAAgB,CAAA;AAEU,aAAA,CAAc,IAAA,CAAK,EAAE,GAAA,EAAK,MAAM,SAAA,EAAW,IAAA,EAAM,SAAA,EAAW,IAAA,EAAM;ACjW9F,IAAM,yBAAA,GAA4B,GAAA;AAElC,IAAM,WAAA,GAAcA,KAAAA,CAAE,KAAA,CAAM,CAACA,KAAAA,CAAE,QAAQ,CAAC,CAAA,EAAGA,KAAAA,CAAE,OAAA,CAAQ,CAAC,CAAA,EAAGA,MAAE,OAAA,CAAQ,CAAC,CAAA,EAAGA,KAAAA,CAAE,OAAA,CAAQ,CAAC,GAAGA,KAAAA,CAAE,OAAA,CAAQ,CAAC,CAAC,CAAC,CAAA;AAQlG,IAAM,iBAAA,GAAoBA,MAC9B,MAAA,CAAO;AAAA,EACN,GAAA,EAAK,cAAA;AAAA,EACL,WAAA,EAAa,WAAA;AAAA;AAAA,EAEb,KAAA,EAAO,WAAW,QAAA,EAAS;AAAA,EAC3B,YAAA,EAAc,eAAe,QAAA,EAAS;AAAA,EACtC,MAAA,EAAQ,eAAe,QAAA,EAAS;AAAA,EAChC,WAAA,EAAa,WAAA;AAAA,EACb,SAAA,EAAW,SAAA;AAAA,EACX,KAAA,EAAO,WAAA;AAAA,EACP,SAASA,KAAAA,CAAE,MAAA,GAAS,GAAA,CAAI,yBAAyB,EAAE,QAAA;AACrD,CAAC,CAAA,CACA,MAAM,gBAAgB,CAAA;AAGa,kBAAkB,IAAA,CAAK,EAAE,OAAO,IAAA,EAAM,OAAA,EAAS,MAAM;AC1BpF,IAAM,4BAAA,GAA+B,GAAA;AAErC,IAAM,yBAAA,GAA4BA,MAAE,MAAA,CAAO;AAAA,EAChD,QAAA,EAAUA,MAAE,MAAA,EAAO,CAAE,KAAI,CAAE,WAAA,EAAY,CAAE,OAAA,CAAQ,CAAC,CAAA;AAAA,EAClD,QAAA,EAAUA,MAAE,MAAA,EAAO,CAAE,KAAI,CAAE,WAAA,EAAY,CAAE,OAAA,CAAQ,CAAC,CAAA;AAAA,EAClD,UAAA,EAAYA,MAAE,MAAA,EAAO,CAAE,KAAI,CAAE,WAAA,EAAY,CAAE,OAAA,CAAQ,CAAC,CAAA;AAAA,EACpD,OAAA,EAASA,MAAE,MAAA,EAAO,CAAE,KAAI,CAAE,WAAA,EAAY,CAAE,OAAA,CAAQ,CAAC;AACnD,CAAC,CAAA;AAGM,IAAM,0BAAA,GAA6BA,MAAE,MAAA,CAAO;AAAA,EACjD,KAAKA,KAAAA,CAAE,MAAA,EAAO,CAAE,GAAA,GAAM,WAAA,EAAY;AAAA,EAClC,KAAA,EAAOA,MAAE,MAAA,EAAO;AAAA,EAChB,OAAA,EAASA,MAAE,MAAA;AACb,CAAC,CAAA;AAIM,IAAM,kBAAA,GAAqBA,MAC/B,MAAA,CAAO;AAAA,EACN,GAAA,EAAK,cAAA;AAAA,EACL,KAAA,EAAO,UAAA;AAAA,EACP,IAAA,EAAM,gBAAA;AAAA,EACN,QAAA,EAAUA,KAAAA,CAAE,MAAA,EAAO,CAAE,IAAI,CAAC,CAAA;AAAA,EAC1B,UAAUA,KAAAA,CAAE,MAAA,EAAO,CAAE,GAAA,GAAM,WAAA,EAAY;AAAA,EACvC,MAAA,EAAQ,kBAAA,CAAmB,OAAA,CAAQ,YAAY,CAAA;AAAA,EAC/C,OAAA,EAAS,yBAAA,CAA0B,OAAA,CAAQ,EAAE,CAAA;AAAA,EAC7C,SAAA,EAAWA,KAAAA,CAAE,KAAA,CAAM,0BAA0B,CAAA,CAAE,IAAI,4BAA4B,CAAA,CAAE,OAAA,CAAQ,EAAE,CAAA;AAAA,EAC3F,SAAA,EAAW,WAAA;AAAA,EACX,WAAA,EAAaA,KAAAA,CAAE,MAAA,CAAO,IAAA,GAAO,QAAA;AAC/B,CAAC,CAAA,CACA,KAAA,CAAM,gBAAgB,CAAA,CACtB,MAAM,gBAAgB,CAAA;AAElB,IAAM,wBAAA,GAA2B,mBAAmB,IAAA,CAAK;AAAA,EAC9D,GAAA,EAAK,IAAA;AAAA,EACL,KAAA,EAAO,IAAA;AAAA,EACP,SAAA,EAAW,IAAA;AAAA,EACX,SAAA,EAAW,IAAA;AAAA,EACX,SAAA,EAAW,IAAA;AAAA,EACX,MAAA,EAAQ,IAAA;AAAA,EACR,OAAA,EAAS,IAAA;AAAA,EACT,SAAA,EAAW,IAAA;AAAA,EACX,SAAA,EAAW,IAAA;AAAA,EACX,WAAA,EAAa;AACf,CAAC,CAAA;AAEuC,yBAAyB,OAAA;AC/C1D,IAAM,uBAAA,GAA0B,EAAA;AACvC,IAAM,MAAA,GAAS,EAAA,GAAK,EAAA,GAAK,EAAA,GAAK,GAAA;AAGvB,SAAS,UAAU,KAAA,EAAwB;AAChD,EAAA,IAAI;AACF,IAAA,MAAM,EAAE,QAAA,EAAS,GAAI,IAAI,IAAI,KAAK,CAAA;AAClC,IAAA,OAAO,QAAA,KAAa,WAAW,QAAA,KAAa,QAAA;AAAA,EAC9C,CAAA,CAAA,MAAQ;AACN,IAAA,OAAO,KAAA;AAAA,EACT;AACF;AAGA,IAAM,UAAA,GAAaA,MAAE,KAAA,CAAM,CAACA,MAAE,IAAA,EAAK,EAAGA,KAAAA,CAAE,MAAA,EAAO,CAAE,QAAA,CAAS,EAAE,MAAA,EAAQ,IAAA,EAAM,CAAC,CAAC,EAAE,IAAA,CAAKA,KAAAA,CAAE,MAAA,CAAO,IAAA,EAAM,CAAA;AAOlEA,MAAE,MAAA,CAAO;AAAA,EACvC,QAAA,EAAU,eAAe,QAAA,EAAS;AAAA,EAClC,QAAA,EAAU,QAAA;AAAA,EACV,GAAA,EAAKA,MAAE,MAAA,EAAO,CAAE,KAAI,CAAE,MAAA,CAAO,WAAW,yBAAyB,CAAA;AAAA,EACjE,KAAA,EAAOA,KAAAA,CAAE,MAAA,EAAO,CAAE,GAAA,CAAI,CAAC,CAAA,CAAE,GAAA,CAAI,GAAG,CAAA,CAAE,QAAA,EAAS;AAAA;AAAA,EAE3C,WAAA,EAAa,YAAY,QAAA,EAAS;AAAA,EAClC,MAAMA,KAAAA,CAAE,MAAA,GAAS,GAAA,CAAI,GAAG,EAAE,QAAA;AAC5B,CAAC;AAGD,IAAM,oBAAA,GAAuBA,MAAE,MAAA,CAAO;AAAA,EACpC,IAAA,EAAMA,KAAAA,CAAE,OAAA,CAAQ,iBAAA,CAAkB,KAAK,SAAS,CAAA;AAAA,EAChD,IAAA,EAAMA,KAAAA,CAAE,MAAA,EAAO,CAAE,GAAA,GAAM,GAAA,CAAI,CAAC,CAAA,CAAE,GAAA,CAAI,uBAAuB;AAC3D,CAAC,CAAA;AAED,IAAM,iBAAA,GAAoBA,MAAE,MAAA,CAAO;AAAA,EACjC,IAAA,EAAMA,KAAAA,CAAE,OAAA,CAAQ,iBAAA,CAAkB,KAAK,KAAK,CAAA;AAAA,EAC5C,KAAA,EAAO,UAAA;AAAA,EACP,GAAA,EAAK;AACP,CAAC,CAAA;AAOkCA,KAAAA,CAChC,kBAAA,CAAmB,MAAA,EAAQ,CAAC,oBAAA,EAAsB,iBAAiB,CAAC,CAAA,CACpE,WAAA,CAAY,CAAC,CAAA,EAAG,GAAA,KAAQ;AAEvB,EAAA,IAAI,CAAA,CAAE,IAAA,KAAS,OAAA,IAAW,EAAE,CAAA,CAAE,iBAAiB,IAAA,CAAA,IAAS,EAAE,CAAA,CAAE,GAAA,YAAe,IAAA,CAAA,EAAO;AAClF,EAAA,IAAI,EAAE,GAAA,CAAI,OAAA,MAAa,CAAA,CAAE,KAAA,CAAM,SAAQ,EAAG;AACxC,IAAA,GAAA,CAAI,QAAA,CAAS;AAAA,MACX,IAAA,EAAMA,MAAE,YAAA,CAAa,MAAA;AAAA,MACrB,OAAA,EAAS,qDAAA;AAAA,MACT,IAAA,EAAM,CAAC,KAAK;AAAA,KACb,CAAA;AAAA,EACH,CAAA,MAAA,IAAW,CAAA,CAAE,GAAA,CAAI,OAAA,EAAQ,GAAI,EAAE,KAAA,CAAM,OAAA,EAAQ,GAAI,uBAAA,GAA0B,MAAA,EAAQ;AACjF,IAAA,GAAA,CAAI,QAAA,CAAS;AAAA,MACX,IAAA,EAAMA,MAAE,YAAA,CAAa,MAAA;AAAA,MACrB,OAAA,EAAS,uCAAuC,uBAAuB,CAAA,KAAA,CAAA;AAAA,MACvE,IAAA,EAAM,CAAC,KAAK;AAAA,KACb,CAAA;AAAA,EACH;AACF,CAAC;;;AC2DH,IAAM,QAAA,GAAW,EAAE,GAAG,aAAA,EAAe,aAAa,IAAA,EAAK;AAEvD,SAAS,kBAAkB,UAAA,EAA4B;AACrD,EAAA,OAAO;AAAA,IACL,UAAA;AAAA,IACA,UAAA,EAAY,IAAA;AAAA,IACZ,UAAA,EAAY,KAAA;AAAA,IACZ,QAAA,EAAU,KAAA;AAAA,IACV,MAAA,EAAQ,QAAA;AAAA,IACR;AAAA,GACF;AACF;AAEA,IAAM,QAAA,GAAW,EAAE,GAAA,EAAK,KAAA,EAAO,UAAU,KAAA,EAAM;AAE/C,IAAM,QAAA,GAAWE,gBAAO,KAAA,CAAM,QAAA;AAC9B,IAAM,KAAA,GAAQA,gBAAO,KAAA,CAAM,KAAA;AAG3B,IAAM,aAAa,EAAE,IAAA,EAAM,QAAQ,QAAA,EAAU,IAAA,EAAM,OAAO,oBAAA,EAAqB;AAC/E,IAAM,cAAc,EAAE,IAAA,EAAM,QAAQ,QAAA,EAAU,IAAA,EAAM,OAAO,qBAAA,EAAsB;AACjF,IAAM,mBAAA,GAAsB,EAAE,IAAA,EAAM,MAAA,EAAQ,OAAO,qBAAA,EAAsB;AAEzE,IAAM,aAAa,EAAE,IAAA,EAAM,QAAQ,QAAA,EAAU,IAAA,EAAM,WAAW,CAAA,EAAE;AAEhE,IAAM,YAAA,GAAe,EAAE,IAAA,EAAM,MAAA,EAAQ,OAAO,YAAA,EAAa;AACzD,IAAM,OAAO,EAAE,IAAA,EAAM,QAAQ,QAAA,EAAU,IAAA,EAAM,OAAO,2BAAA,EAA4B;AAMzE,IAAM,uBAAuB,IAAIA,eAAA;AAAA,EACtC;AAAA,IACE,KAAA,EAAO,EAAE,IAAA,EAAM,IAAA,EAAM,UAAU,IAAA,EAAK;AAAA,IACpC,GAAA,EAAK;AAAA,MACH,IAAA,EAAM,IAAA;AAAA,MACN,QAAA,EAAU,IAAA;AAAA,MACV,QAAA,EAAU;AAAA,QACR,UAAgC,GAAA,EAAW;AACzC,UAAA,OAAO,CAAC,KAAK,KAAA,IAAS,GAAA,CAAI,SAAQ,GAAI,IAAA,CAAK,MAAM,OAAA,EAAQ;AAAA,QAC3D,CAAA;AAAA,QACA,OAAA,EAAS;AAAA;AACX;AACF,GACF;AAAA,EACA;AACF;AAEO,IAAM,qBAAqB,IAAIA,eAAA;AAAA,EACpC;AAAA,IACE,SAAA,EAAW,EAAE,IAAA,EAAM,CAAC,YAAY,GAAG,QAAA,EAAU,IAAA,EAAM,OAAA,EAAS,EAAC,EAAE;AAAA,IAC/D,SAAA,EAAW,EAAE,IAAA,EAAM,CAAC,EAAE,IAAA,EAAM,MAAA,EAAQ,IAAA,EAAM,eAAA,EAAiB,CAAA,EAAG,QAAA,EAAU,IAAA,EAAM,OAAA,EAAS,EAAC,EAAE;AAAA,IAC1F,OAAA,EAAS,EAAE,IAAA,EAAM,CAAC,MAAM,GAAG,QAAA,EAAU,IAAA,EAAM,OAAA,EAAS,EAAC,EAAE;AAAA,IACvD,YAAY,EAAE,IAAA,EAAM,QAAQ,IAAA,EAAM,kBAAA,EAAoB,UAAU,IAAA,EAAK;AAAA,IACrE,UAAA,EAAY,EAAE,IAAA,EAAM,MAAA,EAAO;AAAA,IAC3B,cAAA,EAAgB,EAAE,IAAA,EAAM,oBAAA,EAAqB;AAAA,IAC7C,WAAW,EAAE,IAAA,EAAM,SAAS,QAAA,EAAU,IAAA,EAAM,SAAS,KAAA;AAAM,GAC7D;AAAA,EACA;AACF;AAEO,IAAM,mBAAmB,IAAIA,eAAA;AAAA,EAClC;AAAA,IACE,QAAA,EAAU,EAAE,IAAA,EAAM,QAAA,EAAS;AAAA,IAC3B,UAAU,EAAE,IAAA,EAAM,QAAQ,IAAA,EAAM,eAAA,EAAiB,UAAU,IAAA,EAAK;AAAA,IAChE,KAAK,EAAE,IAAA,EAAM,QAAQ,QAAA,EAAU,IAAA,EAAM,WAAW,CAAA,EAAE;AAAA,IAClD,KAAA,EAAO,EAAE,IAAA,EAAM,MAAA,EAAQ,WAAW,GAAA,EAAI;AAAA,IACtC,WAAA,EAAa,EAAE,IAAA,EAAM,MAAA,EAAQ,MAAM,mBAAA,EAAoB;AAAA,IACvD,IAAA,EAAM,EAAE,IAAA,EAAM,MAAA,EAAQ,WAAW,GAAA;AAAI,GACvC;AAAA,EACA;AACF;AAKO,IAAM,sBAAsB,IAAIA,eAAA;AAAA,EACrC;AAAA,IACE,MAAM,EAAE,IAAA,EAAM,QAAQ,IAAA,EAAM,0BAAA,EAA4B,UAAU,IAAA,EAAK;AAAA,IACvE,IAAA,EAAM;AAAA,MACJ,IAAA,EAAM,MAAA;AAAA,MACN,GAAA,EAAK,CAAA;AAAA,MACL,GAAA,EAAK,uBAAA;AAAA,MACL,UAAU,MAAA,CAAO,SAAA;AAAA,MACjB,QAAA,GAAiC;AAC/B,QAAA,OAAO,KAAK,IAAA,KAAS,WAAA;AAAA,MACvB;AAAA,KACF;AAAA,IACA,KAAA,EAAO;AAAA,MACL,IAAA,EAAM,IAAA;AAAA,MACN,QAAA,GAAiC;AAC/B,QAAA,OAAO,KAAK,IAAA,KAAS,OAAA;AAAA,MACvB;AAAA,KACF;AAAA,IACA,GAAA,EAAK;AAAA,MACH,IAAA,EAAM,IAAA;AAAA,MACN,QAAA,GAAiC;AAC/B,QAAA,OAAO,KAAK,IAAA,KAAS,OAAA;AAAA,MACvB,CAAA;AAAA,MACA,QAAA,EAAU;AAAA,QACR,UAAkC,GAAA,EAAW;AAC3C,UAAA,OAAO,CAAC,KAAK,KAAA,IAAS,GAAA,CAAI,SAAQ,GAAI,IAAA,CAAK,MAAM,OAAA,EAAQ;AAAA,QAC3D,CAAA;AAAA,QACA,OAAA,EAAS;AAAA;AACX;AACF,GACF;AAAA,EACA;AACF;AAEO,IAAM,2BAA2B,IAAIA,eAAA;AAAA,EAC1C;AAAA,IACE,GAAA,EAAK,EAAE,IAAA,EAAM,MAAA,EAAQ,MAAM,CAAC,CAAA,EAAG,CAAA,EAAG,CAAA,EAAG,GAAG,CAAA,EAAG,CAAA,EAAG,CAAC,CAAA,EAAG,UAAU,IAAA,EAAK;AAAA,IACjE,KAAA,EAAO,IAAA;AAAA,IACP,GAAA,EAAK;AAAA,GACP;AAAA,EACA;AACF;AAEO,IAAM,sBAAsB,IAAIA,eAAA;AAAA,EACrC;AAAA,IACE,UAAU,EAAE,IAAA,EAAM,QAAQ,IAAA,EAAM,eAAA,EAAiB,UAAU,IAAA,EAAK;AAAA,IAChE,MAAM,EAAE,IAAA,EAAM,QAAQ,QAAA,EAAU,IAAA,EAAM,WAAW,GAAA;AAAI,GACvD;AAAA,EACA;AACF;AAEO,IAAM,uBAAuB,IAAIA,eAAA;AAAA,EACtC;AAAA,IACE,KAAK,EAAE,IAAA,EAAM,SAAS,QAAA,EAAU,IAAA,EAAM,SAAS,KAAA,EAAM;AAAA,IACrD,SAAA,EAAW,EAAE,IAAA,EAAM,CAAC,EAAE,IAAA,EAAM,MAAA,EAAQ,IAAA,EAAM,eAAA,EAAiB,CAAA,EAAG,QAAA,EAAU,IAAA,EAAM,OAAA,EAAS,EAAC,EAAE;AAAA,IAC1F,OAAA,EAAS,EAAE,IAAA,EAAM,CAAC,mBAAmB,GAAG,QAAA,EAAU,IAAA,EAAM,OAAA,EAAS,EAAC;AAAE,GACtE;AAAA,EACA;AACF;AAEO,IAAM,6BAA6B,IAAIA,eAAA;AAAA,EAC5C;AAAA,IACE,SAAA,EAAW,EAAE,IAAA,EAAM,CAAC,EAAE,IAAA,EAAM,MAAA,EAAQ,IAAA,EAAM,gBAAA,EAAkB,CAAA,EAAG,QAAA,EAAU,IAAA,EAAM,OAAA,EAAS,EAAC,EAAE;AAAA,IAC3F,IAAA,EAAM,EAAE,IAAA,EAAM,CAAC,MAAM,GAAG,QAAA,EAAU,IAAA,EAAM,OAAA,EAAS,EAAC,EAAE;AAAA,IACpD,MAAM,EAAE,IAAA,EAAM,QAAQ,QAAA,EAAU,IAAA,EAAM,SAAS,EAAA,EAAG;AAAA,IAClD,SAAA,EAAW,WAAA;AAAA,IACX,SAAA,EAAW,EAAE,IAAA,EAAM,IAAA,EAAM,UAAU,IAAA;AAAK,GAC1C;AAAA,EACA;AACF;AAEO,IAAM,sBAAsB,IAAIA,eAAA;AAAA,EACrC;AAAA,IACE,GAAA,EAAK,EAAE,IAAA,EAAM,MAAA,EAAQ,KAAK,CAAA,EAAG,GAAA,EAAK,CAAA,EAAG,OAAA,EAAS,IAAA,EAAK;AAAA,IACnD,KAAA,EAAO,EAAE,IAAA,EAAM,MAAA,EAAQ,UAAU,IAAA,EAAM,OAAA,EAAS,CAAA,EAAG,GAAA,EAAK,CAAA;AAAE,GAC5D;AAAA,EACA;AACF;AAGA,IAAM,cAAA,GAAiB;AAAA,EACrB,SAAA,EAAW,EAAE,IAAA,EAAM,CAAC,YAAY,GAAG,QAAA,EAAU,IAAA,EAAM,OAAA,EAAS,EAAC,EAAE;AAAA,EAC/D,OAAA,EAAS,EAAE,IAAA,EAAM,CAAC,MAAM,GAAG,QAAA,EAAU,IAAA,EAAM,OAAA,EAAS,EAAC,EAAE;AAAA,EACvD,UAAU,EAAE,IAAA,EAAM,QAAQ,QAAA,EAAU,IAAA,EAAM,WAAW,EAAA,EAAG;AAAA,EACxD,YAAA,EAAc,EAAE,IAAA,EAAM,CAAC,wBAAwB,GAAG,QAAA,EAAU,IAAA,EAAM,OAAA,EAAS,EAAC,EAAE;AAAA,EAC9E,cAAA,EAAgB,EAAE,IAAA,EAAM,oBAAA,EAAsB,UAAU,IAAA,EAAM,OAAA,EAAS,OAAO,EAAC,CAAA,EAAG;AAAA,EAClF,UAAA,EAAY,EAAE,IAAA,EAAM,MAAA,EAAQ,WAAW,GAAA,EAAI;AAAA,EAC3C,WAAW,EAAE,IAAA,EAAM,QAAQ,GAAA,EAAK,CAAA,EAAG,KAAK,GAAA;AAC1C,CAAA;AAEO,IAAM,qBAAqB,IAAIA,eAAA;AAAA,EACpC;AAAA,IACE,SAAA,EAAW,EAAE,IAAA,EAAM,MAAA,EAAQ,UAAU,IAAA,EAAM,GAAA,EAAK,CAAA,EAAG,GAAA,EAAK,CAAA,EAAE;AAAA,IAC1D,WAAA,EAAa,EAAE,IAAA,EAAM,MAAA,EAAQ,UAAU,IAAA,EAAM,GAAA,EAAK,CAAA,EAAG,GAAA,EAAK,CAAA,EAAE;AAAA,IAC5D,QAAA,EAAU;AAAA,GACZ;AAAA,EACA;AACF;AAEO,IAAM,qBAAqB,IAAIA,eAAA;AAAA,EACpC;AAAA,IACE,MAAM,EAAE,IAAA,EAAM,QAAQ,IAAA,EAAM,yBAAA,EAA2B,UAAU,IAAA,EAAK;AAAA,IACtE,MAAA,EAAQ,mBAAA;AAAA,IACR,QAAA,EAAU,EAAE,IAAA,EAAM,QAAA;AAAS,GAC7B;AAAA,EACA;AACF;AAEO,IAAM,4BAA4B,IAAIA,eAAA;AAAA,EAC3C;AAAA,IACE,QAAA,EAAU,EAAE,IAAA,EAAM,MAAA,EAAQ,UAAU,IAAA,EAAM,OAAA,EAAS,CAAA,EAAG,GAAA,EAAK,CAAA,EAAE;AAAA,IAC7D,QAAA,EAAU,EAAE,IAAA,EAAM,MAAA,EAAQ,UAAU,IAAA,EAAM,OAAA,EAAS,CAAA,EAAG,GAAA,EAAK,CAAA,EAAE;AAAA,IAC7D,UAAA,EAAY,EAAE,IAAA,EAAM,MAAA,EAAQ,UAAU,IAAA,EAAM,OAAA,EAAS,CAAA,EAAG,GAAA,EAAK,CAAA,EAAE;AAAA,IAC/D,OAAA,EAAS,EAAE,IAAA,EAAM,MAAA,EAAQ,UAAU,IAAA,EAAM,OAAA,EAAS,CAAA,EAAG,GAAA,EAAK,CAAA;AAAE,GAC9D;AAAA,EACA;AACF;AAEO,IAAM,6BAA6B,IAAIA,eAAA;AAAA,EAC5C;AAAA,IACE,KAAK,EAAE,IAAA,EAAM,QAAQ,QAAA,EAAU,IAAA,EAAM,KAAK,CAAA,EAAE;AAAA,IAC5C,KAAA,EAAO,EAAE,IAAA,EAAM,MAAA,EAAQ,UAAU,IAAA,EAAK;AAAA,IACtC,OAAA,EAAS,EAAE,IAAA,EAAM,MAAA,EAAQ,UAAU,IAAA;AAAK,GAC1C;AAAA,EACA;AACF;AAEO,IAAM,kBAAkB,IAAIA,eAAA;AAAA,EACjC;AAAA,IACE,MAAM,EAAE,IAAA,EAAM,QAAQ,IAAA,EAAM,qBAAA,EAAuB,UAAU,IAAA,EAAK;AAAA,IAClE,EAAA,EAAI,EAAE,IAAA,EAAM,MAAA,EAAQ,UAAU,IAAA;AAAK,GACrC;AAAA,EACA;AACF;AAEO,IAAM,wBAAwB,IAAIA,eAAA;AAAA,EACvC;AAAA,IACE,IAAA,EAAM,EAAE,IAAA,EAAM,MAAA,EAAO;AAAA,IACrB,IAAA,EAAM,YAAA;AAAA,IACN,SAAA,EAAW,EAAE,IAAA,EAAM,CAAC,MAAM,CAAA,EAAE;AAAA,IAC5B,UAAA,EAAY,EAAE,IAAA,EAAM,MAAA;AAAO,GAC7B;AAAA,EACA;AACF;AAEO,IAAM,uBAAuB,IAAIA,eAAA;AAAA,EACtC;AAAA,IACE,IAAA,EAAM,EAAE,IAAA,EAAM,MAAA,EAAQ,UAAU,IAAA,EAAK;AAAA,IACrC,KAAA,EAAO,EAAE,IAAA,EAAM,MAAA,EAAQ,UAAU,IAAA;AAAK,GACxC;AAAA,EACA;AACF;AAEO,IAAM,YAAY,IAAIA,eAAA;AAAA,EAC3B;AAAA,IACE,GAAA,EAAK,EAAE,IAAA,EAAM,MAAA,EAAQ,UAAU,IAAA,EAAM,GAAA,EAAK,GAAA,EAAK,GAAA,EAAK,EAAA,EAAG;AAAA,IACvD,GAAA,EAAK,EAAE,IAAA,EAAM,MAAA,EAAQ,UAAU,IAAA,EAAM,GAAA,EAAK,IAAA,EAAM,GAAA,EAAK,GAAA,EAAI;AAAA,IACzD,KAAA,EAAO,EAAE,IAAA,EAAM,MAAA;AAAO,GACxB;AAAA,EACA;AACF;AAEO,IAAM,uBAAuB,IAAIA,eAAA;AAAA,EACtC;AAAA,IACE,IAAA,EAAM,EAAE,IAAA,EAAM,MAAA,EAAQ,UAAU,IAAA,EAAK;AAAA,IACrC,MAAA,EAAQ,EAAE,IAAA,EAAM,MAAA,EAAQ,UAAU,IAAA,EAAK;AAAA,IACvC,EAAA,EAAI,EAAE,IAAA,EAAM,IAAA,EAAM,UAAU,IAAA,EAAK;AAAA,IACjC,GAAA,EAAK,EAAE,IAAA,EAAM,MAAA;AAAO,GACtB;AAAA,EACA;AACF;AAEO,IAAM,oBAAoB,IAAIA,eAAA;AAAA,EACnC;AAAA,IACE,IAAA,EAAM,EAAE,IAAA,EAAM,MAAA,EAAQ,UAAU,IAAA,EAAK;AAAA,IACrC,EAAA,EAAI,EAAE,IAAA,EAAM,MAAA,EAAQ,UAAU,IAAA;AAAK,GACrC;AAAA,EACA;AACF;AAMO,IAAM,iBAAiB,IAAIA,eAAA;AAAA,EAChC;AAAA,IACE,KAAA,EAAO,UAAA;AAAA,IACP,IAAA,EAAM,EAAE,IAAA,EAAM,MAAA,EAAQ,UAAU,IAAA,EAAM,SAAA,EAAW,EAAA,EAAI,KAAA,EAAO,qBAAA,EAAsB;AAAA,IAClF,kBAAkB,EAAE,IAAA,EAAM,QAAQ,QAAA,EAAU,IAAA,EAAM,OAAO,2BAAA,EAA4B;AAAA,IACrF,WAAA,EAAa;AAAA,MACX,MAAM,CAAC,EAAE,MAAM,MAAA,EAAQ,IAAA,EAAM,4BAA4B,CAAA;AAAA,MACzD,QAAA,EAAU,IAAA;AAAA,MACV,OAAA,EAAS,MAAM,CAAC,GAAG,0BAA0B;AAAA,KAC/C;AAAA,IACA,MAAA,EAAQ,EAAE,IAAA,EAAM,MAAA,EAAQ,MAAM,sBAAA,EAAwB,QAAA,EAAU,IAAA,EAAM,OAAA,EAAS,QAAA,EAAS;AAAA,IACxF,SAAA,EAAW,WAAA;AAAA,IACX,SAAA,EAAW,EAAE,IAAA,EAAM,IAAA;AAAK,GAC1B;AAAA,EACA,iBAAA,CAAkB,YAAY,SAAS;AACzC;AACA,YAAA,CAAa,cAAA,EAAgB,YAAY,SAAS,CAAA;AAE3C,IAAM,gBAAgB,IAAIA,eAAA;AAAA,EAC/B;AAAA,IACE,KAAA,EAAO,UAAA;AAAA,IACP,OAAO,EAAE,IAAA,EAAM,QAAQ,QAAA,EAAU,IAAA,EAAM,WAAW,GAAA,EAAI;AAAA,IACtD,aAAa,EAAE,IAAA,EAAM,QAAQ,QAAA,EAAU,IAAA,EAAM,SAAS,EAAA,EAAG;AAAA,IACzD,UAAU,EAAE,IAAA,EAAM,QAAQ,IAAA,EAAM,uBAAA,EAAyB,UAAU,IAAA,EAAK;AAAA,IACxE,MAAA,EAAQ,EAAE,IAAA,EAAM,MAAA,EAAQ,MAAM,qBAAA,EAAuB,QAAA,EAAU,IAAA,EAAM,OAAA,EAAS,OAAA,EAAQ;AAAA,IACtF,eAAA,EAAiB,EAAE,IAAA,EAAM,kBAAA,EAAoB,UAAU,IAAA,EAAK;AAAA,IAC5D,QAAA,EAAU,EAAE,IAAA,EAAM,CAAC,MAAM,GAAG,QAAA,EAAU,IAAA,EAAM,OAAA,EAAS,EAAC,EAAE;AAAA,IACxD,UAAA,EAAY,EAAE,IAAA,EAAM,IAAA,EAAK;AAAA,IACzB,SAAA,EAAW,WAAA;AAAA,IACX,SAAA,EAAW,EAAE,IAAA,EAAM,IAAA;AAAK,GAC1B;AAAA,EACA,iBAAA,CAAkB,YAAY,QAAQ;AACxC;AACA,YAAA,CAAa,aAAA,EAAe,YAAY,QAAQ,CAAA;AAEzC,IAAM,aAAa,IAAIA,eAAA;AAAA,EAC5B;AAAA,IACE,KAAA,EAAO,UAAA;AAAA,IACP,SAAA,EAAW,EAAE,IAAA,EAAM,QAAA,EAAU,UAAU,IAAA,EAAK;AAAA,IAC5C,MAAM,EAAE,IAAA,EAAM,QAAQ,IAAA,EAAM,gBAAA,EAAkB,UAAU,IAAA,EAAK;AAAA,IAC7D,QAAQ,EAAE,IAAA,EAAM,QAAQ,IAAA,EAAM,kBAAA,EAAoB,UAAU,IAAA,EAAK;AAAA,IACjE,OAAO,EAAE,IAAA,EAAM,QAAQ,QAAA,EAAU,IAAA,EAAM,WAAW,GAAA,EAAI;AAAA,IACtD,aAAa,EAAE,IAAA,EAAM,QAAQ,QAAA,EAAU,IAAA,EAAM,SAAS,EAAA,EAAG;AAAA,IACzD,QAAA,EAAU,EAAE,IAAA,EAAM,CAAC,MAAM,GAAG,QAAA,EAAU,IAAA,EAAM,OAAA,EAAS,EAAC,EAAE;AAAA,IACxD,aAAA,EAAe,EAAE,IAAA,EAAM,CAAC,MAAM,GAAG,QAAA,EAAU,IAAA,EAAM,OAAA,EAAS,EAAC,EAAE;AAAA,IAC7D,QAAA,EAAU,EAAE,IAAA,EAAM,kBAAA,EAAoB,UAAU,IAAA,EAAK;AAAA,IACrD,MAAA,EAAQ,EAAE,IAAA,EAAM,gBAAA,EAAiB;AAAA,IACjC,aAAA,EAAe,EAAE,IAAA,EAAM,mBAAA,EAAoB;AAAA,IAC3C,MAAA,EAAQ,EAAE,IAAA,EAAM,MAAA,EAAQ,MAAM,kBAAA,EAAoB,QAAA,EAAU,IAAA,EAAM,OAAA,EAAS,OAAA,EAAQ;AAAA,IACnF,UAAA,EAAY,mBAAA;AAAA,IACZ,UAAA,EAAY,EAAE,IAAA,EAAM,IAAA,EAAK;AAAA,IACzB,MAAA,EAAQ,mBAAA;AAAA,IACR,MAAA,EAAQ,EAAE,IAAA,EAAM,IAAA,EAAK;AAAA,IACrB,OAAA,EAAS,EAAE,IAAA,EAAM,MAAA,EAAQ,UAAU,IAAA,EAAM,OAAA,EAAS,CAAA,EAAG,GAAA,EAAK,CAAA,EAAE;AAAA,IAC5D,SAAA,EAAW,EAAE,IAAA,EAAM,IAAA;AAAK,GAC1B;AAAA,EACA,iBAAA,CAAkB,YAAY,KAAK;AACrC;AACA,YAAA,CAAa,UAAA,EAAY,YAAY,KAAK,CAAA;AAGnC,IAAM,qBAAA,GAAwB,CAAC,kBAAA,EAAoB,WAAW;AAO9D,SAAS,oBAAA,GAA2F;AACzG,EAAA,MAAM,MAAA,GAAS,KAAK,SAAA,EAAU;AAC9B,EAAA,IAAI,CAAC,MAAA,IAAU,KAAA,CAAM,OAAA,CAAQ,MAAM,CAAA,EAAG;AACtC,EAAA,MAAM,CAAA,GAAI,MAAA;AACV,EAAA,MAAM,cAAA,GACJ,SAAA,IAAa,CAAA,IACZ,CAAA,CAAE,IAAA,KAAS,UAAa,SAAA,IAAa,CAAA,CAAE,IAAA,IACvC,CAAA,CAAE,IAAA,KAAS,MAAA,IAAa,aAAa,CAAA,CAAE,IAAA,IACvC,CAAA,CAAE,YAAA,KAAiB,MAAA,IAAa,SAAA,IAAa,CAAA,CAAE,YAAA,IAC/C,CAAA,CAAE,MAAA,KAAW,MAAA,IAAa,SAAA,IAAa,CAAA,CAAE,MAAA;AAC5C,EAAA,IAAI,cAAA,EAAgB;AACpB,EAAA,IAAA,CAAK,SAAA,CAAU,EAAE,GAAG,CAAA,EAAG,MAAM,EAAE,GAAI,CAAA,CAAE,IAAA,IAAQ,EAAC,EAAI,OAAA,EAAS,CAAA,IAAK,CAAA;AAClE;AAEA,KAAA,MAAW,MAAM,qBAAA,EAAuB;AACtC,EAAA,UAAA,CAAW,GAAA,CAAI,IAAI,oBAAoB,CAAA;AACzC;AAEO,IAAM,mBAAmB,IAAIA,eAAA;AAAA,EAClC;AAAA,IACE,KAAA,EAAO,UAAA;AAAA,IACP,MAAA,EAAQ,EAAE,IAAA,EAAM,QAAA,EAAU,UAAU,IAAA,EAAK;AAAA,IACzC,cAAc,EAAE,IAAA,EAAM,QAAQ,IAAA,EAAM,oBAAA,EAAsB,UAAU,IAAA,EAAK;AAAA,IACzE,cAAA,EAAgB,WAAA;AAAA,IAChB,MAAA,EAAQ,EAAE,IAAA,EAAM,MAAA,EAAQ,MAAM,wBAAA,EAA0B,QAAA,EAAU,IAAA,EAAM,OAAA,EAAS,QAAA,EAAS;AAAA,IAC1F,KAAA,EAAO,EAAE,IAAA,EAAM,MAAA,EAAO;AAAA,IACtB,cAAA,EAAgB,EAAE,IAAA,EAAM,KAAA,EAAM;AAAA,IAC9B,QAAQ,EAAE,IAAA,EAAM,QAAQ,IAAA,EAAM,wBAAA,EAA0B,UAAU,IAAA,EAAK;AAAA,IACvE,UAAA,EAAY,WAAA;AAAA,IACZ,WAAA,EAAa,EAAE,IAAA,EAAM,IAAA,EAAM,UAAU,IAAA,EAAK;AAAA,IAC1C,OAAA,EAAS,EAAE,IAAA,EAAM,IAAA,EAAK;AAAA,IACtB,SAAA,EAAW,mBAAA;AAAA,IACX,SAAA,EAAW,EAAE,IAAA,EAAM,IAAA;AAAK,GAC1B;AAAA,EACA,iBAAA,CAAkB,YAAY,WAAW;AAC3C;AACA,YAAA,CAAa,gBAAA,EAAkB,YAAY,WAAW,CAAA;AAE/C,IAAM,iBAAiB,IAAIA,eAAA;AAAA,EAChC;AAAA,IACE,KAAA,EAAO,UAAA;AAAA,IACP,MAAA,EAAQ,EAAE,IAAA,EAAM,QAAA,EAAU,UAAU,IAAA,EAAK;AAAA,IACzC,WAAA,EAAa,WAAA;AAAA,IACb,OAAA,EAAS,EAAE,IAAA,EAAM,MAAA,EAAQ,QAAA,EAAU,MAAM,GAAA,EAAK,CAAA,EAAG,QAAA,EAAU,MAAA,CAAO,SAAA,EAAU;AAAA,IAC5E,MAAM,EAAE,IAAA,EAAM,QAAQ,QAAA,EAAU,IAAA,EAAM,SAAS,EAAA,EAAG;AAAA,IAClD,IAAA,EAAM,EAAE,IAAA,EAAM,IAAA,EAAM,UAAU,IAAA,EAAK;AAAA,IACnC,YAAA,EAAc,EAAE,IAAA,EAAM,QAAA,EAAS;AAAA,IAC/B,MAAA,EAAQ,EAAE,IAAA,EAAM,MAAA,EAAQ,MAAM,uBAAA,EAAwB;AAAA,IACtD,SAAA,EAAW,EAAE,IAAA,EAAM,IAAA;AAAK,GAC1B;AAAA,EACA,iBAAA,CAAkB,YAAY,SAAS;AACzC;AACA,YAAA,CAAa,cAAA,EAAgB,YAAY,SAAS,CAAA;AAE3C,IAAM,qBAAqB,IAAIA,eAAA;AAAA,EACpC;AAAA,IACE,MAAA,EAAQ,WAAA;AAAA,IACR,KAAA,EAAO,EAAE,IAAA,EAAM,MAAA,EAAQ,QAAA,EAAU,IAAA,EAAM,SAAA,EAAW,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,SAAA,EAAW,GAAA,EAAI;AAAA,IACnF,UAAU,EAAE,IAAA,EAAM,QAAQ,IAAA,EAAM,IAAA,EAAM,WAAW,GAAA,EAAI;AAAA,IACrD,aAAa,EAAE,IAAA,EAAM,QAAQ,QAAA,EAAU,IAAA,EAAM,WAAW,GAAA,EAAI;AAAA,IAC5D,MAAA,EAAQ,EAAE,IAAA,EAAM,MAAA,EAAQ,MAAM,mBAAA,EAAqB,QAAA,EAAU,IAAA,EAAM,OAAA,EAAS,QAAA,EAAS;AAAA,IACrF,aAAA,EAAe,EAAE,IAAA,EAAM,MAAA,EAAQ,MAAM,qBAAA,EAAuB,QAAA,EAAU,IAAA,EAAM,OAAA,EAAS,SAAA,EAAU;AAAA,IAC/F,GAAG,cAAA;AAAA,IACH,aAAA,EAAe,EAAE,IAAA,EAAM,MAAA,EAAQ,KAAK,CAAA,EAAE;AAAA,IACtC,oBAAA,EAAsB,EAAE,IAAA,EAAM,0BAAA,EAA2B;AAAA,IACzD,aAAA,EAAe,EAAE,IAAA,EAAM,mBAAA,EAAqB,UAAU,IAAA,EAAM,OAAA,EAAS,OAAO,EAAC,CAAA,EAAG;AAAA,IAChF,SAAA,EAAW,EAAE,IAAA,EAAM,IAAA;AAAK,GAC1B;AAAA,EACA,iBAAA,CAAkB,YAAY,aAAa;AAC7C;AACA,YAAA,CAAa,kBAAA,EAAoB,YAAY,aAAa,CAAA;AAEnD,IAAM,uBAAuB,IAAIA,eAAA;AAAA,EACtC;AAAA,IACE,KAAA,EAAO,UAAA;AAAA,IACP,MAAA,EAAQ,WAAA;AAAA,IACR,aAAa,EAAE,IAAA,EAAM,QAAQ,QAAA,EAAU,IAAA,EAAM,WAAW,GAAA,EAAI;AAAA,IAC5D,GAAG,cAAA;AAAA,IACH,SAAA,EAAW,EAAE,IAAA,EAAM,IAAA;AAAK,GAC1B;AAAA,EACA,iBAAA,CAAkB,YAAY,eAAe;AAC/C;AACA,YAAA,CAAa,oBAAA,EAAsB,YAAY,eAAe,CAAA;AAEvD,IAAM,oBAAoB,IAAIA,eAAA;AAAA,EACnC;AAAA,IACE,KAAA,EAAO,UAAA;AAAA,IACP,uBAAA,EAAyB;AAAA,MACvB,IAAA,EAAM,MAAA;AAAA,MACN,QAAA,EAAU,IAAA;AAAA,MACV,OAAA,EAAS,0BAAA;AAAA,MACT,GAAA,EAAK,CAAA;AAAA,MACL,GAAA,EAAK;AAAA,KACP;AAAA,IACA,QAAA,EAAU,EAAE,IAAA,EAAM,MAAA,EAAQ,UAAU,IAAA,EAAM,OAAA,EAAS,KAAA,EAAO,SAAA,EAAW,EAAA;AAAG,GAC1E;AAAA,EACA,iBAAA,CAAkB,YAAY,WAAW;AAC3C;AACA,YAAA,CAAa,iBAAA,EAAmB,YAAY,WAAW,CAAA;AAEhD,IAAM,oBAAoB,IAAIA,eAAA;AAAA,EACnC;AAAA,IACE,WAAA,EAAa,WAAA;AAAA,IACb,KAAA,EAAO,EAAE,IAAA,EAAM,MAAA,EAAQ,OAAO,oBAAA,EAAqB;AAAA,IACnD,YAAA,EAAc,EAAE,IAAA,EAAM,QAAA,EAAS;AAAA,IAC/B,MAAA,EAAQ,EAAE,IAAA,EAAM,QAAA,EAAS;AAAA,IACzB,WAAA,EAAa,WAAA;AAAA,IACb,WAAW,EAAE,IAAA,EAAM,QAAQ,IAAA,EAAM,iBAAA,EAAmB,UAAU,IAAA,EAAK;AAAA,IACnE,KAAA,EAAO,EAAE,IAAA,EAAM,MAAA,EAAQ,IAAA,EAAM,CAAC,CAAA,EAAG,CAAA,EAAG,CAAA,EAAG,CAAA,EAAG,CAAC,CAAA,EAAG,UAAU,IAAA,EAAK;AAAA,IAC7D,OAAA,EAAS,EAAE,IAAA,EAAM,MAAA,EAAQ,WAAW,yBAAA;AAA0B,GAChE;AAAA,EACA,iBAAA,CAAkB,YAAY,YAAY;AAC5C;AACA,YAAA,CAAa,iBAAA,EAAmB,YAAY,YAAY,CAAA;AAEjD,IAAM,qBAAqB,IAAIA,eAAA;AAAA,EACpC;AAAA,IACE,MAAA,EAAQ,WAAA;AAAA,IACR,OAAO,EAAE,IAAA,EAAM,QAAQ,QAAA,EAAU,IAAA,EAAM,OAAO,6BAAA,EAA8B;AAAA,IAC5E,MAAA,EAAQ,EAAE,IAAA,EAAM,MAAA,EAAQ,UAAU,IAAA,EAAM,OAAA,EAAS,CAAA,EAAG,GAAA,EAAK,CAAA;AAAE,GAC7D;AAAA,EACA,iBAAA,CAAkB,YAAY,aAAa;AAC7C;AACA,YAAA,CAAa,kBAAA,EAAoB,YAAY,aAAa,CAAA;AAEnD,IAAM,eAAe,IAAIA,eAAA;AAAA,EAC9B;AAAA,IACE,KAAA,EAAO,UAAA;AAAA,IACP,UAAA;AAAA,IACA,UAAA,EAAY,EAAE,IAAA,EAAM,CAAC,QAAQ,GAAG,QAAA,EAAU,IAAA,EAAM,OAAA,EAAS,EAAC,EAAE;AAAA,IAC5D,OAAA,EAAS,EAAE,IAAA,EAAM,CAAC,QAAQ,GAAG,QAAA,EAAU,IAAA,EAAM,OAAA,EAAS,EAAC,EAAE;AAAA,IACzD,UAAU,EAAE,IAAA,EAAM,QAAQ,IAAA,EAAM,eAAA,EAAiB,UAAU,IAAA,EAAK;AAAA,IAChE,GAAA,EAAK,EAAE,IAAA,EAAM,MAAA,EAAQ,UAAU,IAAA,EAAK;AAAA,IACpC,MAAA,EAAQ,EAAE,IAAA,EAAM,MAAA,EAAO;AAAA,IACvB,MAAM,EAAE,IAAA,EAAM,QAAQ,IAAA,EAAM,kBAAA,EAAoB,UAAU,IAAA,EAAK;AAAA,IAC/D,QAAQ,EAAE,IAAA,EAAM,QAAQ,IAAA,EAAM,oBAAA,EAAsB,UAAU,IAAA,EAAK;AAAA,IACnE,OAAO,EAAE,IAAA,EAAM,QAAQ,IAAA,EAAM,mBAAA,EAAqB,UAAU,IAAA,EAAK;AAAA,IACjE,SAAA,EAAW,EAAE,IAAA,EAAM,QAAA,EAAS;AAAA,IAC5B,MAAA,EAAQ,EAAE,IAAA,EAAM,kBAAA,EAAmB;AAAA,IACnC,IAAA,EAAM,EAAE,IAAA,EAAM,CAAC,MAAM,GAAG,QAAA,EAAU,IAAA,EAAM,OAAA,EAAS,EAAC,EAAE;AAAA,IACpD,MAAA,EAAQ,EAAE,IAAA,EAAM,MAAA,EAAQ,MAAM,oBAAA,EAAsB,QAAA,EAAU,IAAA,EAAM,OAAA,EAAS,QAAA,EAAS;AAAA,IACtF,YAAA,EAAc,EAAE,IAAA,EAAM,kBAAA,EAAoB,UAAU,IAAA,EAAK;AAAA,IACzD,eAAA,EAAiB,EAAE,IAAA,EAAM,IAAA,EAAK;AAAA,IAC9B,WAAA,EAAa,EAAE,IAAA,EAAM,IAAA,EAAK;AAAA,IAC1B,SAAA,EAAW,EAAE,IAAA,EAAM,IAAA;AAAK,GAC1B;AAAA,EACA,iBAAA,CAAkB,YAAY,OAAO;AACvC;AACA,YAAA,CAAa,YAAA,EAAc,YAAY,OAAO,CAAA;AAEvC,IAAM,qBAAqB,IAAIA,eAAA;AAAA,EACpC;AAAA,IACE,KAAA,EAAO,UAAA;AAAA,IACP,MAAM,EAAE,IAAA,EAAM,QAAQ,IAAA,EAAM,yBAAA,EAA2B,UAAU,IAAA,EAAK;AAAA,IACtE,QAAA,EAAU,EAAE,IAAA,EAAM,MAAA,EAAQ,UAAU,IAAA,EAAK;AAAA,IACzC,UAAU,EAAE,IAAA,EAAM,QAAQ,QAAA,EAAU,IAAA,EAAM,KAAK,CAAA,EAAE;AAAA,IACjD,MAAA,EAAQ,EAAE,IAAA,EAAM,MAAA,EAAQ,MAAM,2BAAA,EAA6B,QAAA,EAAU,IAAA,EAAM,OAAA,EAAS,YAAA,EAAa;AAAA,IACjG,OAAA,EAAS,EAAE,IAAA,EAAM,yBAAA,EAA2B,UAAU,IAAA,EAAM,OAAA,EAAS,OAAO,EAAC,CAAA,EAAG;AAAA,IAChF,SAAA,EAAW;AAAA,MACT,IAAA,EAAM,CAAC,0BAA0B,CAAA;AAAA,MACjC,QAAA,EAAU,IAAA;AAAA,MACV,SAAS,EAAC;AAAA,MACV,QAAA,EAAU;AAAA,QACR,SAAA,EAAW,CAAC,CAAA,KAAiB,CAAA,CAAE,MAAA,IAAU,4BAAA;AAAA,QACzC,OAAA,EAAS,8BAA8B,4BAA4B,CAAA,QAAA;AAAA;AACrE,KACF;AAAA,IACA,SAAA,EAAW,WAAA;AAAA,IACX,WAAA,EAAa,EAAE,IAAA,EAAM,IAAA,EAAK;AAAA,IAC1B,SAAA,EAAW,EAAE,IAAA,EAAM,IAAA;AAAK,GAC1B;AAAA,EACA,iBAAA,CAAkB,YAAY,aAAa;AAC7C;AACA,YAAA,CAAa,kBAAA,EAAoB,YAAY,aAAa,CAAA;AAEnD,IAAM,iBAAiB,IAAIA,eAAA;AAAA,EAChC;AAAA,IACE,KAAA,EAAO,UAAA;AAAA,IACP,UAAA;AAAA,IACA,QAAA,EAAU,EAAE,IAAA,EAAM,QAAA,EAAU,UAAU,IAAA,EAAK;AAAA,IAC3C,UAAA,EAAY,EAAE,IAAA,EAAM,CAAC,QAAQ,GAAG,QAAA,EAAU,IAAA,EAAM,OAAA,EAAS,EAAC,EAAE;AAAA,IAC5D,MAAA,EAAQ,EAAE,IAAA,EAAM,QAAA,EAAS;AAAA,IACzB,UAAU,EAAE,IAAA,EAAM,QAAQ,IAAA,EAAM,eAAA,EAAiB,UAAU,IAAA,EAAK;AAAA,IAChE,WAAA,EAAa,EAAE,IAAA,EAAM,IAAA,EAAM,UAAU,IAAA,EAAK;AAAA,IAC1C,WAAA,EAAa,EAAE,IAAA,EAAM,IAAA,EAAK;AAAA,IAC1B,SAAA,EAAW,EAAE,IAAA,EAAM,eAAA,EAAiB,UAAU,IAAA,EAAK;AAAA,IACnD,OAAA,EAAS,EAAE,IAAA,EAAM,qBAAA,EAAuB,UAAU,IAAA,EAAM,OAAA,EAAS,OAAO,EAAC,CAAA,EAAG;AAAA,IAC5E,QAAA,EAAU,EAAE,IAAA,EAAM,CAAC,oBAAoB,CAAA,EAAE;AAAA,IACzC,GAAA,EAAK,EAAE,IAAA,EAAM,SAAA,EAAU;AAAA,IACvB,YAAA,EAAc,EAAE,IAAA,EAAM,OAAA,EAAQ;AAAA,IAC9B,WAAA,EAAa,EAAE,IAAA,EAAM,MAAA,EAAQ,OAAO,gBAAA;AAAiB,GACvD;AAAA,EACA,iBAAA,CAAkB,YAAY,SAAS;AACzC;AACA,YAAA,CAAa,cAAA,EAAgB,YAAY,SAAS,CAAA;AAE3C,IAAM,gBAAgB,IAAIA,eAAA;AAAA,EAC/B;AAAA,IACE,KAAA,EAAO,UAAA;AAAA,IACP,UAAU,EAAE,IAAA,EAAM,QAAQ,IAAA,EAAM,eAAA,EAAiB,UAAU,IAAA,EAAK;AAAA,IAChE,MAAM,EAAE,IAAA,EAAM,QAAQ,QAAA,EAAU,IAAA,EAAM,WAAW,GAAA,EAAI;AAAA,IACrD,aAAa,EAAE,IAAA,EAAM,QAAQ,QAAA,EAAU,IAAA,EAAM,KAAK,CAAA,EAAE;AAAA,IACpD,WAAA,EAAa,EAAE,IAAA,EAAM,MAAA,EAAQ,UAAU,IAAA,EAAM,OAAA,EAAS,CAAA,EAAG,GAAA,EAAK,CAAA,EAAE;AAAA,IAChE,MAAA,EAAQ,EAAE,IAAA,EAAM,MAAA,EAAQ,MAAM,qBAAA,EAAuB,QAAA,EAAU,IAAA,EAAM,OAAA,EAAS,WAAA,EAAY;AAAA,IAC1F,YAAA,EAAc,EAAE,IAAA,EAAM,QAAA,EAAS;AAAA,IAC/B,OAAA,EAAS,EAAE,IAAA,EAAM,MAAA,EAAQ,UAAU,IAAA,EAAK;AAAA,IACxC,SAAA,EAAW,EAAE,IAAA,EAAM,IAAA;AAAK,GAC1B;AAAA,EACA,iBAAA,CAAkB,YAAY,QAAQ;AACxC;AACA,YAAA,CAAa,aAAA,EAAe,YAAY,QAAQ,CAAA;AAEzC,IAAM,sBAAsB,IAAIA,eAAA;AAAA,EACrC;AAAA,IACE,KAAA,EAAO,UAAA;AAAA,IACP,SAAA,EAAW,EAAE,IAAA,EAAM,QAAA,EAAU,UAAU,IAAA,EAAK;AAAA,IAC5C,IAAA,EAAM,EAAE,IAAA,EAAM,IAAA,EAAM,UAAU,IAAA,EAAK;AAAA,IACnC,gBAAgB,EAAE,IAAA,EAAM,QAAQ,QAAA,EAAU,IAAA,EAAM,KAAK,CAAA,EAAE;AAAA,IACvD,QAAQ,EAAE,IAAA,EAAM,QAAQ,QAAA,EAAU,IAAA,EAAM,KAAK,CAAA,EAAE;AAAA,IAC/C,SAAS,EAAE,IAAA,EAAM,QAAQ,QAAA,EAAU,IAAA,EAAM,KAAK,CAAA,EAAE;AAAA,IAChD,cAAc,EAAE,IAAA,EAAM,QAAQ,QAAA,EAAU,IAAA,EAAM,KAAK,CAAA;AAAE,GACvD;AAAA;AAAA,EAEA,EAAE,GAAG,iBAAA,CAAkB,YAAY,cAAc,CAAA,EAAG,6BAA6B,IAAA;AACnF;AACA,YAAA,CAAa,mBAAA,EAAqB,YAAY,cAAc,CAAA;AAErD,IAAM,mBAAmB,IAAIA,eAAA;AAAA,EAClC;AAAA,IACE,KAAA,EAAO,UAAA;AAAA,IACP,MAAM,EAAE,IAAA,EAAM,QAAQ,IAAA,EAAM,sBAAA,EAAwB,UAAU,IAAA,EAAK;AAAA,IACnE,MAAA,EAAQ,EAAE,IAAA,EAAM,MAAA,EAAQ,MAAM,wBAAA,EAA0B,QAAA,EAAU,IAAA,EAAM,OAAA,EAAS,QAAA,EAAS;AAAA,IAC1F,KAAA,EAAO,EAAE,IAAA,EAAM,CAAC,oBAAoB,GAAG,QAAA,EAAU,IAAA,EAAM,OAAA,EAAS,EAAC,EAAE;AAAA,IACnE,WAAA,EAAa,WAAA;AAAA,IACb,SAAA,EAAW,EAAE,IAAA,EAAM,IAAA;AAAK,GAC1B;AAAA,EACA,iBAAA,CAAkB,YAAY,WAAW;AAC3C;AACA,YAAA,CAAa,gBAAA,EAAkB,YAAY,WAAW,CAAA;AAE/C,IAAM,iBAAiB,IAAIA,eAAA;AAAA,EAChC;AAAA,IACE,KAAA,EAAO,EAAE,IAAA,EAAM,MAAA,EAAQ,OAAO,oBAAA,EAAqB;AAAA,IACnD,WAAA,EAAa,WAAA;AAAA,IACb,gBAAgB,EAAE,IAAA,EAAM,SAAS,QAAA,EAAU,IAAA,EAAM,SAAS,KAAA,EAAM;AAAA,IAChE,MAAA,EAAQ,EAAE,IAAA,EAAM,MAAA,EAAQ,UAAU,IAAA,EAAK;AAAA,IACvC,MAAA,EAAQ,EAAE,IAAA,EAAM,iBAAA,EAAmB,UAAU,IAAA,EAAK;AAAA,IAClD,IAAA,EAAM,EAAE,IAAA,EAAM,KAAA,EAAM;AAAA,IACpB,EAAA,EAAI,EAAE,IAAA,EAAM,IAAA,EAAM,UAAU,IAAA,EAAK;AAAA,IACjC,SAAA,EAAW,EAAE,IAAA,EAAM,IAAA;AAAK,GAC1B;AAAA,EACA,iBAAA,CAAkB,YAAY,SAAS;AACzC;AACA,YAAA,CAAa,cAAA,EAAgB,YAAY,SAAS,CAAA;AAMlD,IAAM,OAAA,GAAU,EAAE,IAAA,EAAM,MAAA,EAAQ,UAAU,IAAA,EAAM,OAAA,EAAS,CAAA,EAAG,GAAA,EAAK,CAAA,EAAE;AAE5D,IAAM,0BAA0B,IAAIA,eAAA;AAAA,EACzC;AAAA,IACE,aAAA,EAAe,OAAA;AAAA,IACf,YAAA,EAAc,OAAA;AAAA,IACd,gBAAA,EAAkB,OAAA;AAAA,IAClB,gBAAA,EAAkB,OAAA;AAAA,IAClB,cAAA,EAAgB,OAAA;AAAA,IAChB,YAAA,EAAc,OAAA;AAAA,IACd,cAAA,EAAgB,OAAA;AAAA,IAChB,UAAA,EAAY,OAAA;AAAA,IACZ,aAAA,EAAe,OAAA;AAAA,IACf,cAAA,EAAgB,OAAA;AAAA,IAChB,gBAAA,EAAkB;AAAA,GACpB;AAAA,EACA;AACF;AAEO,IAAM,2BAA2B,IAAIA,eAAA;AAAA,EAC1C;AAAA,IACE,MAAA,EAAQ,OAAA;AAAA,IACR,OAAA,EAAS,EAAE,IAAA,EAAM,MAAA,EAAQ,UAAU,IAAA,EAAM,OAAA,EAAS,CAAA,EAAG,GAAA,EAAK,CAAA;AAAE,GAC9D;AAAA,EACA;AACF;AAEO,IAAM,qBAAqB,IAAIA,eAAA;AAAA,EACpC;AAAA,IACE,KAAA,EAAO,UAAA;AAAA,IACP,SAAA,EAAW,EAAE,IAAA,EAAM,QAAA,EAAU,UAAU,IAAA,EAAK;AAAA,IAC5C,MAAA,EAAQ,EAAE,IAAA,EAAM,QAAA,EAAU,UAAU,IAAA,EAAK;AAAA,IACzC,YAAA,EAAc,EAAE,IAAA,EAAM,QAAA,EAAU,UAAU,IAAA,EAAK;AAAA,IAC/C,MAAA,EAAQ,WAAA;AAAA,IACR,MAAM,EAAE,IAAA,EAAM,QAAQ,IAAA,EAAM,yBAAA,EAA2B,UAAU,IAAA,EAAK;AAAA,IACtE,MAAA,EAAQ,EAAE,IAAA,EAAM,MAAA,EAAQ,MAAM,2BAAA,EAA6B,QAAA,EAAU,IAAA,EAAM,OAAA,EAAS,QAAA,EAAS;AAAA,IAC7F,SAAA,EAAW,EAAE,IAAA,EAAM,IAAA,EAAM,UAAU,IAAA,EAAK;AAAA,IACxC,OAAA,EAAS,EAAE,IAAA,EAAM,IAAA,EAAK;AAAA,IACtB,cAAA,EAAgB,EAAE,IAAA,EAAM,IAAA,EAAM,UAAU,IAAA,EAAK;AAAA,IAC7C,aAAA,EAAe,OAAA;AAAA,IACf,OAAA,EAAS,OAAA;AAAA,IACT,KAAA,EAAO,EAAE,IAAA,EAAM,uBAAA,EAAyB,UAAU,IAAA,EAAM,OAAA,EAAS,OAAO,EAAC,CAAA,EAAG;AAAA,IAC5E,MAAA,EAAQ,EAAE,IAAA,EAAM,wBAAA,EAA0B,UAAU,IAAA,EAAM,OAAA,EAAS,OAAO,EAAC,CAAA,EAAG;AAAA,IAC9E,aAAA,EAAe,EAAE,IAAA,EAAM,oBAAA,EAAqB;AAAA,IAC5C,KAAA,EAAO,EAAE,IAAA,EAAM,KAAA;AAAM,GACvB;AAAA,EACA,iBAAA,CAAkB,YAAY,aAAa;AAC7C;AACA,YAAA,CAAa,kBAAA,EAAoB,YAAY,aAAa,CAAA;AAEnD,IAAM,qBAAqB,IAAIA,eAAA;AAAA,EACpC;AAAA,IACE,KAAA,EAAO,UAAA;AAAA,IACP,SAAA,EAAW,EAAE,IAAA,EAAM,QAAA,EAAU,UAAU,IAAA,EAAK;AAAA,IAC5C,GAAA,EAAK,EAAE,IAAA,EAAM,MAAA,EAAQ,QAAA,EAAU,MAAM,GAAA,EAAK,CAAA,EAAG,QAAA,EAAU,MAAA,CAAO,SAAA,EAAU;AAAA,IACxE,MAAM,EAAE,IAAA,EAAM,QAAQ,IAAA,EAAM,yBAAA,EAA2B,UAAU,IAAA,EAAK;AAAA,IACtE,MAAM,EAAE,IAAA,EAAM,QAAQ,IAAA,EAAM,yBAAA,EAA2B,UAAU,IAAA,EAAK;AAAA,IACtE,IAAA,EAAM,EAAE,IAAA,EAAM,MAAA,EAAQ,UAAU,IAAA,EAAM,OAAA,EAAS,EAAA,EAAI,SAAA,EAAW,6BAAA,EAA8B;AAAA;AAAA,IAE5F,KAAA,EAAO,EAAE,IAAA,EAAM,CAAC,KAAK,GAAG,QAAA,EAAU,IAAA,EAAM,OAAA,EAAS,EAAC;AAAE,GACtD;AAAA,EACA,iBAAA,CAAkB,YAAY,aAAa;AAC7C;AACA,YAAA,CAAa,kBAAA,EAAoB,YAAY,aAAa,CAAA;AAEnD,IAAM,gBAAgB,IAAIA,eAAA;AAAA,EAC/B;AAAA,IACE,QAAQ,EAAE,IAAA,EAAM,QAAQ,QAAA,EAAU,IAAA,EAAM,WAAW,CAAA,EAAE;AAAA,IACrD,KAAK,EAAE,IAAA,EAAM,QAAQ,QAAA,EAAU,IAAA,EAAM,WAAW,CAAA,EAAE;AAAA,IAClD,aAAa,EAAE,IAAA,EAAM,QAAQ,QAAA,EAAU,IAAA,EAAM,WAAW,CAAA,EAAE;AAAA,IAC1D,OAAO,EAAE,IAAA,EAAM,QAAQ,QAAA,EAAU,IAAA,EAAM,KAAK,CAAA;AAAE,GAChD;AAAA,EACA;AACF;AAEO,IAAM,sBAAsB,IAAIA,eAAA;AAAA,EACrC;AAAA,IACE,GAAG,EAAE,IAAA,EAAM,QAAQ,QAAA,EAAU,IAAA,EAAM,KAAK,CAAA,EAAE;AAAA,IAC1C,GAAG,EAAE,IAAA,EAAM,QAAQ,QAAA,EAAU,IAAA,EAAM,KAAK,CAAA,EAAE;AAAA,IAC1C,GAAG,EAAE,IAAA,EAAM,QAAQ,QAAA,EAAU,IAAA,EAAM,KAAK,CAAA,EAAE;AAAA,IAC1C,GAAG,EAAE,IAAA,EAAM,QAAQ,QAAA,EAAU,IAAA,EAAM,KAAK,CAAA,EAAE;AAAA,IAC1C,WAAW,EAAE,IAAA,EAAM,QAAQ,QAAA,EAAU,IAAA,EAAM,KAAK,CAAA,EAAE;AAAA,IAClD,WAAW,EAAE,IAAA,EAAM,QAAQ,QAAA,EAAU,IAAA,EAAM,KAAK,CAAA,EAAE;AAAA,IAClD,KAAK,EAAE,IAAA,EAAM,QAAQ,QAAA,EAAU,IAAA,EAAM,KAAK,CAAA;AAAE,GAC9C;AAAA,EACA;AACF;AAEO,IAAM,0BAA0B,IAAIA,eAAA;AAAA,EACzC;AAAA,IACE,QAAQ,EAAE,IAAA,EAAM,QAAQ,QAAA,EAAU,IAAA,EAAM,KAAK,CAAA,EAAE;AAAA,IAC/C,OAAO,EAAE,IAAA,EAAM,QAAQ,QAAA,EAAU,IAAA,EAAM,KAAK,CAAA,EAAE;AAAA,IAC9C,OAAO,EAAE,IAAA,EAAM,QAAQ,QAAA,EAAU,IAAA,EAAM,KAAK,CAAA,EAAE;AAAA,IAC9C,IAAA,EAAM;AAAA,GACR;AAAA,EACA;AACF;AAEO,IAAM,gBAAgB,IAAIA,eAAA;AAAA,EAC/B;AAAA,IACE,KAAA,EAAO,UAAA;AAAA,IACP,SAAA,EAAW,EAAE,IAAA,EAAM,QAAA,EAAS;AAAA,IAC5B,YAAA,EAAc,EAAE,IAAA,EAAM,QAAA,EAAS;AAAA,IAC/B,MAAA,EAAQ,EAAE,IAAA,EAAM,QAAA,EAAS;AAAA,IACzB,SAAA,EAAW,EAAE,IAAA,EAAM,QAAA,EAAS;AAAA,IAC5B,MAAA,EAAQ,mBAAA;AAAA,IACR,GAAA,EAAK,EAAE,IAAA,EAAM,MAAA,EAAQ,UAAU,IAAA,EAAK;AAAA,IACpC,KAAA,EAAO,EAAE,IAAA,EAAM,MAAA,EAAQ,UAAU,IAAA,EAAM,OAAA,EAAS,EAAA,EAAI,SAAA,EAAW,GAAA,EAAI;AAAA,IACnE,UAAA,EAAY,EAAE,IAAA,EAAM,IAAA,EAAM,UAAU,IAAA,EAAK;AAAA,IACzC,QAAA,EAAU,EAAE,IAAA,EAAM,aAAA,EAAe,UAAU,IAAA,EAAK;AAAA,IAChD,QAAQ,EAAE,IAAA,EAAM,QAAQ,QAAA,EAAU,IAAA,EAAM,OAAO,gBAAA,EAAiB;AAAA,IAChE,MAAA,EAAQ,EAAE,IAAA,EAAM,mBAAA,EAAoB;AAAA,IACpC,MAAA,EAAQ,EAAE,IAAA,EAAM,aAAA,EAAc;AAAA,IAC9B,SAAA,EAAW,EAAE,IAAA,EAAM,MAAA,EAAQ,MAAM,yBAAA,EAA2B,QAAA,EAAU,IAAA,EAAM,OAAA,EAAS,aAAA,EAAc;AAAA,IACnG,UAAA,EAAY,EAAE,IAAA,EAAM,uBAAA,EAAwB;AAAA,IAC5C,MAAA,EAAQ,EAAE,IAAA,EAAM,MAAA,EAAQ,MAAM,qBAAA,EAAuB,QAAA,EAAU,IAAA,EAAM,OAAA,EAAS,UAAA,EAAW;AAAA,IACzF,QAAA,EAAU,EAAE,IAAA,EAAM,KAAA,EAAM;AAAA,IACxB,KAAA,EAAO,EAAE,IAAA,EAAM,MAAA,EAAQ,WAAW,GAAA,EAAK;AAAA,IACvC,QAAA,EAAU,EAAE,IAAA,EAAM,MAAA,EAAQ,QAAA,EAAU,IAAA,EAAM,OAAA,EAAS,CAAA,EAAG,GAAA,EAAK,CAAA,EAAG,QAAA,EAAU,MAAA,CAAO,SAAA,EAAU;AAAA,IACzF,SAAA,EAAW,EAAE,IAAA,EAAM,IAAA,EAAK;AAAA,IACxB,SAAA,EAAW,EAAE,IAAA,EAAM,IAAA,EAAM,UAAU,IAAA;AAAK,GAC1C;AAAA,EACA,iBAAA,CAAkB,YAAY,QAAQ;AACxC;AACA,YAAA,CAAa,aAAA,EAAe,YAAY,QAAQ,CAAA;AAEzC,IAAM,iBAAiB,IAAIA,eAAA;AAAA,EAChC;AAAA,IACE,WAAA,EAAa,OAAA;AAAA,IACb,YAAA,EAAc,OAAA;AAAA,IACd,WAAA,EAAa;AAAA,GACf;AAAA,EACA;AACF;AAEO,IAAM,gBAAgB,IAAIA,eAAA;AAAA,EAC/B;AAAA,IACE,KAAA,EAAO,EAAE,IAAA,EAAM,MAAA,EAAQ,OAAO,oBAAA,EAAqB;AAAA,IACnD,SAAA,EAAW,EAAE,IAAA,EAAM,QAAA,EAAS;AAAA,IAC5B,YAAY,EAAE,IAAA,EAAM,QAAQ,IAAA,EAAM,qBAAA,EAAuB,UAAU,IAAA,EAAK;AAAA,IACxE,UAAU,EAAE,IAAA,EAAM,QAAQ,IAAA,EAAM,mBAAA,EAAqB,UAAU,IAAA,EAAK;AAAA,IACpE,OAAO,EAAE,IAAA,EAAM,QAAQ,QAAA,EAAU,IAAA,EAAM,WAAW,CAAA,EAAE;AAAA,IACpD,eAAe,EAAE,IAAA,EAAM,QAAQ,QAAA,EAAU,IAAA,EAAM,WAAW,CAAA,EAAE;AAAA,IAC5D,OAAA,EAAS,EAAE,IAAA,EAAM,MAAA,EAAQ,QAAA,EAAU,MAAM,GAAA,EAAK,CAAA,EAAG,QAAA,EAAU,MAAA,CAAO,SAAA,EAAU;AAAA,IAC5E,aAAA,EAAe,EAAE,IAAA,EAAM,CAAC,EAAE,IAAA,EAAM,MAAA,EAAQ,IAAA,EAAM,mBAAA,EAAqB,CAAA,EAAG,QAAA,EAAU,IAAA,EAAM,OAAA,EAAS,EAAC,EAAE;AAAA,IAClG,KAAA,EAAO,EAAE,IAAA,EAAM,cAAA,EAAgB,UAAU,IAAA,EAAM,OAAA,EAAS,OAAO,EAAC,CAAA,EAAG;AAAA,IACnE,WAAW,EAAE,IAAA,EAAM,QAAQ,QAAA,EAAU,IAAA,EAAM,KAAK,CAAA,EAAE;AAAA,IAClD,eAAA,EAAiB,EAAE,IAAA,EAAM,MAAA,EAAQ,KAAK,CAAA,EAAE;AAAA,IACxC,SAAS,EAAE,IAAA,EAAM,QAAQ,IAAA,EAAM,kBAAA,EAAoB,UAAU,IAAA,EAAK;AAAA,IAClE,SAAA,EAAW,EAAE,IAAA,EAAM,MAAA,EAAQ,WAAW,GAAA;AAAI,GAC5C;AAAA,EACA,iBAAA,CAAkB,YAAY,QAAQ;AACxC;AACA,YAAA,CAAa,aAAA,EAAe,YAAY,QAAQ,CAAA;AAGzC,IAAM,OAAA,GAAU;AAAA,EACrB,CAAC,WAAA,CAAY,SAAS,GAAG,cAAA;AAAA,EACzB,CAAC,WAAA,CAAY,QAAQ,GAAG,aAAA;AAAA,EACxB,CAAC,WAAA,CAAY,KAAK,GAAG,UAAA;AAAA,EACrB,CAAC,WAAA,CAAY,WAAW,GAAG,gBAAA;AAAA,EAC3B,CAAC,WAAA,CAAY,SAAS,GAAG,cAAA;AAAA,EACzB,CAAC,WAAA,CAAY,aAAa,GAAG,kBAAA;AAAA,EAC7B,CAAC,WAAA,CAAY,eAAe,GAAG,oBAAA;AAAA,EAC/B,CAAC,WAAA,CAAY,WAAW,GAAG,iBAAA;AAAA,EAC3B,CAAC,WAAA,CAAY,YAAY,GAAG,iBAAA;AAAA,EAC5B,CAAC,WAAA,CAAY,aAAa,GAAG,kBAAA;AAAA,EAC7B,CAAC,WAAA,CAAY,OAAO,GAAG,YAAA;AAAA,EACvB,CAAC,WAAA,CAAY,aAAa,GAAG,kBAAA;AAAA,EAC7B,CAAC,WAAA,CAAY,SAAS,GAAG,cAAA;AAAA,EACzB,CAAC,WAAA,CAAY,QAAQ,GAAG,aAAA;AAAA,EACxB,CAAC,WAAA,CAAY,cAAc,GAAG,mBAAA;AAAA,EAC9B,CAAC,WAAA,CAAY,WAAW,GAAG,gBAAA;AAAA,EAC3B,CAAC,WAAA,CAAY,SAAS,GAAG,cAAA;AAAA,EACzB,CAAC,WAAA,CAAY,aAAa,GAAG,kBAAA;AAAA,EAC7B,CAAC,WAAA,CAAY,aAAa,GAAG,kBAAA;AAAA,EAC7B,CAAC,WAAA,CAAY,QAAQ,GAAG,aAAA;AAAA,EACxB,CAAC,WAAA,CAAY,QAAQ,GAAG;AAC1B;;;ACh1BO,IAAM,WAAA,GAAc;AAAA,EACzB,QAAA,EAAU,UAAA;AAAA,EACV,OAAA,EAAS,SAAA;AAAA,EACT,IAAA,EAAM,MAAA;AAAA,EACN,UAAA,EAAY,YAAA;AAAA,EACZ,QAAA,EAAU,UAAA;AAAA,EACV,YAAA,EAAc,cAAA;AAAA,EACd,cAAA,EAAgB,gBAAA;AAAA,EAChB,WAAA,EAAa,aAAA;AAAA,EACb,WAAA,EAAa,aAAA;AAAA,EACb,YAAA,EAAc,cAAA;AAAA,EACd,MAAA,EAAQ,QAAA;AAAA,EACR,YAAA,EAAc,cAAA;AAAA,EACd,QAAA,EAAU,UAAA;AAAA,EACV,OAAA,EAAS,SAAA;AAAA,EACT,aAAA,EAAe,eAAA;AAAA,EACf,UAAA,EAAY,YAAA;AAAA,EACZ,QAAA,EAAU,UAAA;AAAA,EACV,YAAA,EAAc,cAAA;AAAA,EACd,YAAA,EAAc,cAAA;AAAA,EACd,OAAA,EAAS,SAAA;AAAA,EACT,OAAA,EAAS;AACX;AAiDA,SAAS,WAAA,CAAe,IAAA,EAAkB,IAAA,EAAiB,MAAA,EAA6B;AACtF,EAAA,MAAM,QAAA,GAAW,IAAA,CAAK,MAAA,CAAO,IAAI,CAAA;AACjC,EAAA,OAAO,QAAA,IAAY,IAAA,CAAK,KAAA,CAAS,IAAA,EAAM,MAAM,CAAA;AAC/C;AAOO,SAAS,eAAe,IAAA,EAAmC;AAChE,EAAA,OAAO;AAAA,IACL,QAAA,EAAU,WAAA,CAAY,IAAA,EAAM,WAAA,CAAY,UAAU,cAAc,CAAA;AAAA,IAChE,OAAA,EAAS,WAAA,CAAY,IAAA,EAAM,WAAA,CAAY,SAAS,aAAa,CAAA;AAAA,IAC7D,IAAA,EAAM,WAAA,CAAY,IAAA,EAAM,WAAA,CAAY,MAAM,UAAU,CAAA;AAAA,IACpD,UAAA,EAAY,WAAA,CAAY,IAAA,EAAM,WAAA,CAAY,YAAY,gBAAgB,CAAA;AAAA,IACtE,QAAA,EAAU,WAAA,CAAY,IAAA,EAAM,WAAA,CAAY,UAAU,cAAc,CAAA;AAAA,IAChE,YAAA,EAAc,WAAA,CAAY,IAAA,EAAM,WAAA,CAAY,cAAc,kBAAkB,CAAA;AAAA,IAC5E,cAAA,EAAgB,WAAA,CAAY,IAAA,EAAM,WAAA,CAAY,gBAAgB,oBAAoB,CAAA;AAAA,IAClF,WAAA,EAAa,WAAA,CAAY,IAAA,EAAM,WAAA,CAAY,aAAa,iBAAiB,CAAA;AAAA,IACzE,WAAA,EAAa,WAAA,CAAY,IAAA,EAAM,WAAA,CAAY,aAAa,iBAAiB,CAAA;AAAA,IACzE,YAAA,EAAc,WAAA,CAAY,IAAA,EAAM,WAAA,CAAY,cAAc,kBAAkB,CAAA;AAAA,IAC5E,MAAA,EAAQ,WAAA,CAAY,IAAA,EAAM,WAAA,CAAY,QAAQ,YAAY,CAAA;AAAA,IAC1D,YAAA,EAAc,WAAA,CAAY,IAAA,EAAM,WAAA,CAAY,cAAc,kBAAkB,CAAA;AAAA,IAC5E,QAAA,EAAU,WAAA,CAAY,IAAA,EAAM,WAAA,CAAY,UAAU,cAAc,CAAA;AAAA,IAChE,OAAA,EAAS,WAAA,CAAY,IAAA,EAAM,WAAA,CAAY,SAAS,aAAa,CAAA;AAAA,IAC7D,aAAA,EAAe,WAAA,CAAY,IAAA,EAAM,WAAA,CAAY,eAAe,mBAAmB,CAAA;AAAA,IAC/E,UAAA,EAAY,WAAA,CAAY,IAAA,EAAM,WAAA,CAAY,YAAY,gBAAgB,CAAA;AAAA,IACtE,QAAA,EAAU,WAAA,CAAY,IAAA,EAAM,WAAA,CAAY,UAAU,cAAc,CAAA;AAAA,IAChE,YAAA,EAAc,WAAA,CAAY,IAAA,EAAM,WAAA,CAAY,cAAc,kBAAkB,CAAA;AAAA,IAC5E,YAAA,EAAc,WAAA,CAAY,IAAA,EAAM,WAAA,CAAY,cAAc,kBAAkB,CAAA;AAAA,IAC5E,OAAA,EAAS,WAAA,CAAY,IAAA,EAAM,WAAA,CAAY,SAAS,aAAa,CAAA;AAAA,IAC7D,OAAA,EAAS,WAAA,CAAY,IAAA,EAAM,WAAA,CAAY,SAAS,aAAa;AAAA,GAC/D;AACF","file":"index.cjs","sourcesContent":["import { z } from 'zod';\n\n/**\n * Every enum is defined exactly once here. The `*_VALUES` const arrays are\n * used by the Mongoose schemas for `enum:` validation, so Zod and Mongoose\n * can never drift.\n */\n\nexport const PLATFORM_VALUES = [\n 'telegram',\n 'facebook',\n 'x',\n 'tiktok',\n 'instagram',\n 'youtube',\n 'whatsapp',\n 'reddit',\n 'discord',\n 'linkedin',\n 'threads',\n 'vk',\n 'snapchat',\n 'web',\n] as const;\nexport const Platform = z.enum(PLATFORM_VALUES);\nexport type Platform = z.infer<typeof Platform>;\n\nexport const MISSION_PRIORITY_VALUES = ['low', 'medium', 'high', 'critical'] as const;\nexport const MissionPriority = z.enum(MISSION_PRIORITY_VALUES);\nexport type MissionPriority = z.infer<typeof MissionPriority>;\n\nexport const MISSION_STATUS_VALUES = ['draft', 'active', 'paused', 'closed'] as const;\nexport const MissionStatus = z.enum(MISSION_STATUS_VALUES);\nexport type MissionStatus = z.infer<typeof MissionStatus>;\n\nexport const TASK_KIND_VALUES = ['source_discovery', 'monitor'] as const;\nexport const TaskKind = z.enum(TASK_KIND_VALUES);\nexport type TaskKind = z.infer<typeof TaskKind>;\n\nexport const TASK_ORIGIN_VALUES = ['auto', 'manual'] as const;\nexport const TaskOrigin = z.enum(TASK_ORIGIN_VALUES);\nexport type TaskOrigin = z.infer<typeof TaskOrigin>;\n\nexport const TASK_STATUS_VALUES = [\n 'draft',\n 'pending_approval',\n 'approved',\n 'in_progress',\n 'paused',\n 'done',\n] as const;\nexport const TaskStatus = z.enum(TASK_STATUS_VALUES);\nexport type TaskStatus = z.infer<typeof TaskStatus>;\n\nexport const REGION_MODE_VALUES = ['must', 'preferred'] as const;\nexport const RegionMode = z.enum(REGION_MODE_VALUES);\nexport type RegionMode = z.infer<typeof RegionMode>;\n\nexport const ASSIGNEE_TYPE_VALUES = ['scout', 'analyst'] as const;\nexport const AssigneeType = z.enum(ASSIGNEE_TYPE_VALUES);\nexport type AssigneeType = z.infer<typeof AssigneeType>;\n\nexport const ASSIGNMENT_STATUS_VALUES = ['active', 'completed', 'revoked'] as const;\nexport const AssignmentStatus = z.enum(ASSIGNMENT_STATUS_VALUES);\nexport type AssignmentStatus = z.infer<typeof AssignmentStatus>;\n\nexport const ASSIGNMENT_SOURCE_VALUES = ['engine', 'manual'] as const;\nexport const AssignmentSource = z.enum(ASSIGNMENT_SOURCE_VALUES);\nexport type AssignmentSource = z.infer<typeof AssignmentSource>;\n\nexport const VETTING_STATUS_VALUES = ['pending', 'approved', 'suspended'] as const;\nexport const VettingStatus = z.enum(VETTING_STATUS_VALUES);\nexport type VettingStatus = z.infer<typeof VettingStatus>;\n\n/** `disabled` = the Clerk user is locked; never a candidate. */\nexport const SCOUT_STATUS_VALUES = ['active', 'disabled'] as const;\nexport const ScoutStatus = z.enum(SCOUT_STATUS_VALUES);\nexport type ScoutStatus = z.infer<typeof ScoutStatus>;\n\n/** Who left a scout rating: an org member (per assignment) or a System user (general). */\nexport const RATER_TYPE_VALUES = ['org', 'system'] as const;\nexport const RaterType = z.enum(RATER_TYPE_VALUES);\nexport type RaterType = z.infer<typeof RaterType>;\n\nexport const SOURCE_TYPE_VALUES = ['channel', 'group', 'profile', 'forum', 'site'] as const;\nexport const SourceType = z.enum(SOURCE_TYPE_VALUES);\nexport type SourceType = z.infer<typeof SourceType>;\n\nexport const SOURCE_ACCESS_VALUES = ['public', 'gated'] as const;\nexport const SourceAccess = z.enum(SOURCE_ACCESS_VALUES);\nexport type SourceAccess = z.infer<typeof SourceAccess>;\n\nexport const SOURCE_ROUTE_VALUES = ['scraper', 'monitor', 'waiting_for_scraper'] as const;\nexport const SourceRoute = z.enum(SOURCE_ROUTE_VALUES);\nexport type SourceRoute = z.infer<typeof SourceRoute>;\n\n/** `access_problem` = the last monitor visit saw a login wall / no access; waits for analyst review. */\nexport const SOURCE_STATUS_VALUES = ['active', 'paused', 'closed', 'access_problem'] as const;\nexport const SourceStatus = z.enum(SOURCE_STATUS_VALUES);\nexport type SourceStatus = z.infer<typeof SourceStatus>;\n\n/**\n * Why a person has to collect a source instead of a scraper. Set on a Monitor task's `target`.\n * `no_collector` = the org has no scraper for the platform; `collector_full` = it has one but no free slot.\n */\nexport const ACCESS_ISSUE_VALUES = [\n 'login_required',\n 'private',\n 'bot_detection',\n 'captcha',\n 'geo_blocked',\n 'rate_limited',\n 'not_found',\n 'no_collector',\n 'collector_full',\n 'other',\n] as const;\nexport const AccessIssue = z.enum(ACCESS_ISSUE_VALUES);\nexport type AccessIssue = z.infer<typeof AccessIssue>;\n\n/** How a Monitor task's capture window is given: the last N days, or a fixed range. */\nexport const CAPTURE_WINDOW_MODE_VALUES = ['last_days', 'range'] as const;\nexport const CaptureWindowMode = z.enum(CAPTURE_WINDOW_MODE_VALUES);\nexport type CaptureWindowMode = z.infer<typeof CaptureWindowMode>;\n\nexport const DISCOVERED_BY_TYPE_VALUES = ['scout', 'analyst', 'agent', 'client', 'import'] as const;\nexport const DiscoveredByType = z.enum(DISCOVERED_BY_TYPE_VALUES);\nexport type DiscoveredByType = z.infer<typeof DiscoveredByType>;\n\nexport const SOURCE_IMPORT_KIND_VALUES = ['create', 'update'] as const;\nexport const SourceImportKind = z.enum(SOURCE_IMPORT_KIND_VALUES);\nexport type SourceImportKind = z.infer<typeof SourceImportKind>;\n\nexport const SOURCE_IMPORT_STATUS_VALUES = ['validating', 'ready', 'committing', 'done', 'failed'] as const;\nexport const SourceImportStatus = z.enum(SOURCE_IMPORT_STATUS_VALUES);\nexport type SourceImportStatus = z.infer<typeof SourceImportStatus>;\n\nexport const COLLECTOR_TYPE_VALUES = ['scraper', 'scout', 'analyst', 'agent'] as const;\nexport const CollectorType = z.enum(COLLECTOR_TYPE_VALUES);\nexport type CollectorType = z.infer<typeof CollectorType>;\n\nexport const SCRAPER_STATUS_VALUES = ['deploying', 'running', 'degraded', 'stopped', 'failed'] as const;\nexport const ScraperStatus = z.enum(SCRAPER_STATUS_VALUES);\nexport type ScraperStatus = z.infer<typeof ScraperStatus>;\n\nexport const DEPLOYMENT_KIND_VALUES = ['org_droplet', 'scraper'] as const;\nexport const DeploymentKind = z.enum(DEPLOYMENT_KIND_VALUES);\nexport type DeploymentKind = z.infer<typeof DeploymentKind>;\n\nexport const DEPLOYMENT_STATUS_VALUES = ['queued', 'running', 'succeeded', 'failed'] as const;\nexport const DeploymentStatus = z.enum(DEPLOYMENT_STATUS_VALUES);\nexport type DeploymentStatus = z.infer<typeof DeploymentStatus>;\n\nexport const DATABASE_STATUS_VALUES = ['provisioning', 'active', 'error'] as const;\nexport const DatabaseStatus = z.enum(DATABASE_STATUS_VALUES);\nexport type DatabaseStatus = z.infer<typeof DatabaseStatus>;\n\n/**\n * Logical collections that live inside an organization's Database (the data\n * the org collects). More kinds will be added over time.\n */\nexport const DATABASE_COLLECTION_VALUES = ['sources', 'dataItems'] as const;\nexport const DatabaseCollection = z.enum(DATABASE_COLLECTION_VALUES);\nexport type DatabaseCollection = z.infer<typeof DatabaseCollection>;\n\n// ---------------------------------------------------------------------------\n// Badger Agent runtime (agent-service)\n// ---------------------------------------------------------------------------\n\n/** A session works one assignment: discovery finds sources, monitor collects from them. */\nexport const AGENT_SESSION_MODE_VALUES = ['discovery', 'monitor'] as const;\nexport const AgentSessionMode = z.enum(AGENT_SESSION_MODE_VALUES);\nexport type AgentSessionMode = z.infer<typeof AgentSessionMode>;\n\nexport const AGENT_SESSION_STATUS_VALUES = ['active', 'paused', 'ended'] as const;\nexport const AgentSessionStatus = z.enum(AGENT_SESSION_STATUS_VALUES);\nexport type AgentSessionStatus = z.infer<typeof AgentSessionStatus>;\n\nexport const AGENT_MESSAGE_ROLE_VALUES = ['agent', 'person', 'system'] as const;\nexport const AgentMessageRole = z.enum(AGENT_MESSAGE_ROLE_VALUES);\nexport type AgentMessageRole = z.infer<typeof AgentMessageRole>;\n\nexport const AGENT_MESSAGE_KIND_VALUES = ['say', 'instruction', 'result', 'question', 'error'] as const;\nexport const AgentMessageKind = z.enum(AGENT_MESSAGE_KIND_VALUES);\nexport type AgentMessageKind = z.infer<typeof AgentMessageKind>;\n\nexport const AGENT_CARD_KIND_VALUES = [\n 'open_link',\n 'capture_prompt',\n 'source_result',\n 'item_result',\n 'quick_replies',\n 'hours_proposal',\n 'capture_thumb',\n] as const;\nexport const AgentCardKind = z.enum(AGENT_CARD_KIND_VALUES);\nexport type AgentCardKind = z.infer<typeof AgentCardKind>;\n\n/** What happened to a candidate source after the agent checked it (shown to the person). */\nexport const AGENT_SOURCE_OUTCOME_VALUES = [\n 'to_scraper',\n 'waiting_for_scraper',\n 'to_monitor',\n 'known',\n 'dropped',\n 'access_problem',\n] as const;\nexport const AgentSourceOutcome = z.enum(AGENT_SOURCE_OUTCOME_VALUES);\nexport type AgentSourceOutcome = z.infer<typeof AgentSourceOutcome>;\n\nexport const CAPTURE_STATUS_VALUES = ['uploaded', 'analyzing', 'analyzed', 'failed', 'expired'] as const;\nexport const CaptureStatus = z.enum(CAPTURE_STATUS_VALUES);\nexport type CaptureStatus = z.infer<typeof CaptureStatus>;\n\n/** How an hours log was made: entered by the person, or worked out from their capture times. */\nexport const HOURS_LOG_SOURCE_VALUES = ['manual', 'inferred'] as const;\nexport const HoursLogSource = z.enum(HOURS_LOG_SOURCE_VALUES);\nexport type HoursLogSource = z.infer<typeof HoursLogSource>;\n\n/** Whether the read-only DOM text snapshot accompanied the screenshot. */\nexport const CAPTURE_DOM_STATUS_VALUES = ['ok', 'unavailable', 'truncated'] as const;\nexport const CaptureDomStatus = z.enum(CAPTURE_DOM_STATUS_VALUES);\nexport type CaptureDomStatus = z.infer<typeof CaptureDomStatus>;\n\nexport const LLM_CAPABILITY_VALUES = ['plan', 'vision_extract', 'judge', 'chat'] as const;\nexport const LlmCapability = z.enum(LLM_CAPABILITY_VALUES);\nexport type LlmCapability = z.infer<typeof LlmCapability>;\n\nexport const LLM_PROVIDER_VALUES = ['gemini', 'anthropic', 'openai'] as const;\nexport const LlmProvider = z.enum(LLM_PROVIDER_VALUES);\nexport type LlmProvider = z.infer<typeof LlmProvider>;\n\nexport const LLM_OUTCOME_VALUES = [\n 'ok',\n 'invalid_output',\n 'timeout',\n 'rate_limited',\n 'server_error',\n 'safety_block',\n 'budget_exceeded',\n 'breaker_open',\n 'auth_error',\n] as const;\nexport const LlmOutcome = z.enum(LLM_OUTCOME_VALUES);\nexport type LlmOutcome = z.infer<typeof LlmOutcome>;\n\n/** Result of `POST /internal/sources/intake` for one candidate. */\nexport const SOURCE_INTAKE_OUTCOME_VALUES = ['created', 'known', 'invalid'] as const;\nexport const SourceIntakeOutcome = z.enum(SOURCE_INTAKE_OUTCOME_VALUES);\nexport type SourceIntakeOutcome = z.infer<typeof SourceIntakeOutcome>;\n\n/** Mongo collection names, camelCase plurals. */\nexport const COLLECTIONS = {\n databases: 'databases',\n missions: 'missions',\n tasks: 'tasks',\n assignments: 'assignments',\n hoursLogs: 'hoursLogs',\n scoutProfiles: 'scoutProfiles',\n analystProfiles: 'analystProfiles',\n orgSettings: 'orgSettings',\n scoutRatings: 'scoutRatings',\n assigneeLoads: 'assigneeLoads',\n sources: 'sources',\n sourceImports: 'sourceImports',\n dataItems: 'dataItems',\n scrapers: 'scrapers',\n scraperMetrics: 'scraperMetrics',\n deployments: 'deployments',\n auditLogs: 'auditLogs',\n agentSessions: 'agentSessions',\n agentMessages: 'agentMessages',\n captures: 'captures',\n llmCalls: 'llmCalls',\n} as const;\nexport type CollectionName = (typeof COLLECTIONS)[keyof typeof COLLECTIONS];\n","import { Types } from 'mongoose';\n\n/**\n * Deep-converts every `Types.ObjectId` in `value` to its 24-char hex string,\n * so a `toJSON()`-ed document parses with the Zod schemas. Dates, Buffers and\n * primitives are returned untouched. Mutates and returns plain objects/arrays.\n */\nexport function objectIdsToStrings<T>(value: T): T {\n if (value === null || value === undefined) return value;\n if (value instanceof Types.ObjectId) return value.toHexString() as unknown as T;\n if (value instanceof Date) return value;\n if (ArrayBuffer.isView(value)) return value;\n if (Array.isArray(value)) {\n for (let i = 0; i < value.length; i++) value[i] = objectIdsToStrings(value[i]);\n return value;\n }\n if (typeof value === 'object') {\n const obj = value as Record<string, unknown>;\n for (const key of Object.keys(obj)) obj[key] = objectIdsToStrings(obj[key]);\n return value;\n }\n return value;\n}\n\n/** Shared `toJSON` / `toObject` options for every schema. */\nexport const toJSONOptions = {\n virtuals: false,\n versionKey: false,\n transform: (_doc: unknown, ret: Record<string, unknown>) => objectIdsToStrings(ret),\n} as const;\n","import type { IndexDefinition, IndexOptions, Schema } from 'mongoose';\nimport { COLLECTIONS, type CollectionName } from '../enums';\n\nexport type IndexSpec = {\n key: IndexDefinition;\n options?: IndexOptions;\n};\n\n/**\n * Partial filter used on unique indexes for soft-deletable collections so\n * that soft-deleted documents do not block re-creation.\n *\n * MongoDB does not allow `{ $exists: false }` in a `partialFilterExpression`\n * (only `$exists: true`, equality, ranges, `$type`, `$and`/`$or`/`$in`), so we\n * use the equality form `{ deletedAt: null }`, which matches documents where\n * `deletedAt` is missing or explicitly `null` — i.e. the live ones.\n */\nexport const NOT_SOFT_DELETED_FILTER = { deletedAt: null } as const;\n\n/**\n * Index definitions per collection. In every compound index `orgId` is the\n * first field, except on the global collections (`scoutProfiles`,\n * `scoutRatings`, `assigneeLoads`), the `assignments` / `agentSessions`\n * per-user lookups, the `captures` retention sweep and the `llmCalls`\n * per-session lookup, which are intentionally cross-org.\n */\nexport const INDEXES: Record<CollectionName, readonly IndexSpec[]> = {\n [COLLECTIONS.databases]: [\n // One live Database per organization.\n { key: { orgId: 1 }, options: { unique: true, partialFilterExpression: NOT_SOFT_DELETED_FILTER } },\n ],\n [COLLECTIONS.scoutProfiles]: [\n { key: { userId: 1 }, options: { unique: true, partialFilterExpression: NOT_SOFT_DELETED_FILTER } },\n { key: { email: 1 }, options: { unique: true, partialFilterExpression: NOT_SOFT_DELETED_FILTER } },\n { key: { vettingStatus: 1, status: 1 } },\n ],\n [COLLECTIONS.analystProfiles]: [\n { key: { orgId: 1, userId: 1 }, options: { unique: true, partialFilterExpression: NOT_SOFT_DELETED_FILTER } },\n ],\n [COLLECTIONS.orgSettings]: [{ key: { orgId: 1 }, options: { unique: true } }],\n [COLLECTIONS.scoutRatings]: [\n {\n // One rating per rater per assignment (general System ratings have no assignmentId).\n key: { assignmentId: 1, raterUserId: 1 },\n options: { unique: true, partialFilterExpression: { assignmentId: { $exists: true } } },\n },\n { key: { scoutUserId: 1, createdAt: -1 } },\n { key: { orgId: 1, scoutUserId: 1 } },\n ],\n [COLLECTIONS.assigneeLoads]: [{ key: { userId: 1, scope: 1 }, options: { unique: true } }],\n [COLLECTIONS.missions]: [{ key: { orgId: 1, status: 1, priority: 1 } }],\n [COLLECTIONS.tasks]: [\n { key: { orgId: 1, missionId: 1, status: 1 } },\n // Tasks that target a source (cascade on source delete).\n { key: { orgId: 1, 'target.sourceId': 1 }, options: { partialFilterExpression: { 'target.sourceId': { $exists: true } } } },\n ],\n [COLLECTIONS.assignments]: [\n { key: { assigneeUserId: 1, status: 1, orgId: 1 } },\n { key: { orgId: 1, taskId: 1, status: 1 } },\n {\n // A person holds at most one active assignment per task.\n key: { taskId: 1, assigneeUserId: 1 },\n options: {\n unique: true,\n partialFilterExpression: { status: 'active', ...NOT_SOFT_DELETED_FILTER },\n },\n },\n ],\n [COLLECTIONS.hoursLogs]: [\n { key: { orgId: 1, scoutUserId: 1, date: -1 } },\n // One inferred row per person + assignment + day (agent-service upserts it).\n {\n key: { orgId: 1, assignmentId: 1, scoutUserId: 1, date: 1 },\n options: { unique: true, partialFilterExpression: { source: 'inferred' } },\n },\n ],\n [COLLECTIONS.sources]: [\n {\n key: { orgId: 1, platform: 1, url: 1 },\n options: { unique: true, partialFilterExpression: NOT_SOFT_DELETED_FILTER },\n },\n { key: { orgId: 1, route: 1, status: 1 } },\n // Partition key of the shared database; drives the future split into physical databases.\n { key: { orgId: 1, databaseId: 1 } },\n ],\n [COLLECTIONS.sourceImports]: [{ key: { orgId: 1, createdAt: -1 } }],\n [COLLECTIONS.dataItems]: [\n { key: { orgId: 1, databaseId: 1 } },\n { key: { orgId: 1, collectedAt: -1 } },\n { key: { orgId: 1, missionIds: 1, collectedAt: -1 } },\n { key: { orgId: 1, sourceId: 1, collectedAt: -1 } },\n {\n // Agent collectors dedupe by content hash; only documents that carry one take part.\n key: { orgId: 1, sourceId: 1, contentHash: 1 },\n options: { unique: true, partialFilterExpression: { contentHash: { $exists: true } } },\n },\n { key: { 'content.text': 'text' }, options: { name: 'content_text_text' } },\n ],\n [COLLECTIONS.scrapers]: [{ key: { orgId: 1, platform: 1, status: 1 } }],\n [COLLECTIONS.scraperMetrics]: [\n { key: { orgId: 1, scraperId: 1, hour: -1 } },\n { key: { scraperId: 1, hour: 1 }, options: { unique: true } },\n ],\n [COLLECTIONS.deployments]: [{ key: { orgId: 1, kind: 1, createdAt: -1 } }],\n [COLLECTIONS.auditLogs]: [\n { key: { orgId: 1, at: -1 } },\n { key: { actorUserId: 1, at: -1 } },\n ],\n [COLLECTIONS.agentSessions]: [\n { key: { orgId: 1, assignmentId: 1, status: 1 } },\n { key: { orgId: 1, taskId: 1, startedAt: -1 } },\n // Cross-org \"my live session\" lookup from the extension (scouts have no org context).\n { key: { userId: 1, status: 1, startedAt: -1 } },\n ],\n [COLLECTIONS.agentMessages]: [{ key: { orgId: 1, sessionId: 1, seq: 1 }, options: { unique: true } }],\n [COLLECTIONS.captures]: [\n { key: { orgId: 1, sessionId: 1, capturedAt: -1 } },\n // Retention sweep: captures whose blob must be deleted.\n { key: { status: 1, expiresAt: 1 } },\n // Capture worker: oldest waiting (or stale analyzing) captures first.\n { key: { status: 1, createdAt: 1 } },\n // Task-tagged captures: per-assignment dedupe and inferred hours.\n { key: { orgId: 1, assignmentId: 1, userId: 1, capturedAt: 1 } },\n ],\n [COLLECTIONS.llmCalls]: [\n { key: { orgId: 1, createdAt: -1 } },\n { key: { sessionId: 1, createdAt: -1 } },\n ],\n};\n\n/** Applies the index specs for `collection` to `schema`. */\nexport function applyIndexes(schema: Schema, collection: CollectionName): void {\n for (const spec of INDEXES[collection]) {\n schema.index(spec.key, spec.options);\n }\n}\n","import { z } from 'zod';\n\n// ---------------------------------------------------------------------------\n// Ids\n// ---------------------------------------------------------------------------\n\n/** 24-char hex string: the wire representation of a Mongo ObjectId. */\nexport const ObjectIdString = z\n .string()\n .regex(/^[0-9a-fA-F]{24}$/, 'Expected a 24-character hex ObjectId string');\nexport type ObjectIdString = z.infer<typeof ObjectIdString>;\n\n/** Clerk organization id (`org_…`). Stored as a plain string, never an ObjectId. */\nexport const ClerkOrgId = z.string().regex(/^org_[A-Za-z0-9]+$/, 'Expected a Clerk org id (org_…)');\nexport type ClerkOrgId = z.infer<typeof ClerkOrgId>;\n\n/** Clerk user id (`user_…`). Stored as a plain string, never an ObjectId. */\nexport const ClerkUserId = z.string().regex(/^user_[A-Za-z0-9]+$/, 'Expected a Clerk user id (user_…)');\nexport type ClerkUserId = z.infer<typeof ClerkUserId>;\n\n/**\n * Id of the logical Database that holds an org's collected data (`sources`,\n * `dataItems`). Opaque string: today it equals the Clerk org id because every\n * org's data lives in the shared service database, partitioned by\n * `(databaseId, orgId)`; when data is split into physical databases it becomes\n * the id of that Database record.\n */\nexport const DatabaseId = z.string().min(1);\nexport type DatabaseId = z.infer<typeof DatabaseId>;\n\n// ---------------------------------------------------------------------------\n// Shared fragments\n// ---------------------------------------------------------------------------\n\n/** `createdAt` / `updatedAt`, set by Mongoose `timestamps: true`. */\nexport const TimestampsSchema = z.object({\n createdAt: z.coerce.date(),\n updatedAt: z.coerce.date(),\n});\nexport type Timestamps = z.infer<typeof TimestampsSchema>;\n\n/** Optional `deletedAt` marker for soft-deleted documents. */\nexport const SoftDeleteSchema = z.object({\n deletedAt: z.coerce.date().optional(),\n});\nexport type SoftDelete = z.infer<typeof SoftDeleteSchema>;\n\n/** Keys that are never accepted on Create / Update inputs. */\nexport const SERVER_MANAGED_KEYS = ['_id', 'orgId', 'databaseId', 'createdAt', 'updatedAt', 'deletedAt'] as const;\n\n/** ISO 639-1 language code: two lowercase letters. */\nexport const LanguageCode = z.string().regex(/^[a-z]{2}$/, 'Expected an ISO 639-1 two-letter lowercase code');\nexport type LanguageCode = z.infer<typeof LanguageCode>;\n\n/** `HH:mm` 24h clock string. */\nexport const HHmm = z.string().regex(/^([01]\\d|2[0-3]):[0-5]\\d$/, 'Expected HH:mm');\nexport type HHmm = z.infer<typeof HHmm>;\n\n// ---------------------------------------------------------------------------\n// Pagination\n// ---------------------------------------------------------------------------\n\nexport const PaginationQuerySchema = z.object({\n cursor: z.string().optional(),\n limit: z.coerce.number().int().min(1).max(100).default(25),\n});\n/** Input shape (before defaults). */\nexport type PaginationQueryInput = z.input<typeof PaginationQuerySchema>;\n/** Parsed shape (after defaults). */\nexport type PaginationQuery = z.infer<typeof PaginationQuerySchema>;\n\nexport const PaginatedSchema = <T extends z.ZodTypeAny>(item: T) =>\n z.object({\n items: z.array(item),\n nextCursor: z.string().nullable(),\n });\nexport type Paginated<T> = { items: T[]; nextCursor: string | null };\n\n// ---------------------------------------------------------------------------\n// Errors\n// ---------------------------------------------------------------------------\n\nexport const ApiErrorSchema = z.object({\n error: z.object({\n code: z.string(),\n message: z.string(),\n details: z.unknown().optional(),\n }),\n});\nexport type ApiError = z.infer<typeof ApiErrorSchema>;\n","import { z } from 'zod';\nimport { HHmm, LanguageCode } from '../common';\nimport { Platform } from '../enums';\n\n/**\n * Fragments shared by `ScoutProfile` and `AnalystProfile`: the data the\n * matching engine reads. Identity lives in Clerk; these hold skills only.\n */\n\nexport const AvailabilityWindowSchema = z.object({\n /** 0 = Sunday … 6 = Saturday, in the profile's `timezone`. */\n day: z.union([\n z.literal(0),\n z.literal(1),\n z.literal(2),\n z.literal(3),\n z.literal(4),\n z.literal(5),\n z.literal(6),\n ]),\n start: HHmm,\n end: HHmm,\n});\nexport type AvailabilityWindow = z.infer<typeof AvailabilityWindowSchema>;\n\n/** Privileged access to a platform (closed groups, aged accounts…): an edge in matching. */\nexport const SpecialAccessSchema = z.object({\n platform: Platform,\n note: z.string().min(1).max(500),\n});\nexport type SpecialAccess = z.infer<typeof SpecialAccessSchema>;\n\nexport const PlatformAccessSchema = z.object({\n /** `true` = can work on every platform; `platforms` is then ignored. */\n all: z.boolean().default(false),\n platforms: z.array(Platform).default([]),\n special: z.array(SpecialAccessSchema).default([]),\n});\nexport type PlatformAccess = z.infer<typeof PlatformAccessSchema>;\nexport type PlatformAccessInput = z.input<typeof PlatformAccessSchema>;\n\n/** IANA time zone name, e.g. `Asia/Jerusalem`. */\nexport const TimeZone = z.string().min(1).max(64);\n\n/** Fields every matchable person has. */\nexport const MatchingFieldsSchema = z.object({\n languages: z.array(LanguageCode).default([]),\n /** ISO 3166 codes or named regions. */\n regions: z.array(z.string().min(1)).default([]),\n timezone: TimeZone,\n availability: z.array(AvailabilityWindowSchema).default([]),\n platformAccess: PlatformAccessSchema.default({}),\n profession: z.string().min(1).max(120).optional(),\n /** Max active assignments. Absent = the scope's default. */\n taskLimit: z.number().int().positive().max(100).optional(),\n});\nexport type MatchingFields = z.infer<typeof MatchingFieldsSchema>;\n","import { z } from 'zod';\nimport { ClerkOrgId, ObjectIdString, TimestampsSchema } from '../common';\nimport { TimeZone } from './matching';\n\n/** Default `taskLimit` for analysts of an org that has not set one. */\nexport const DEFAULT_ANALYST_TASK_LIMIT = 5;\n\n/** Non-auth settings for one Clerk organization (Clerk does not keep these). */\nexport const OrgSettingsSchema = z\n .object({\n _id: ObjectIdString,\n orgId: ClerkOrgId,\n defaultAnalystTaskLimit: z.number().int().positive().max(100).default(DEFAULT_ANALYST_TASK_LIMIT),\n timezone: TimeZone.default('UTC'),\n })\n .merge(TimestampsSchema);\n\nexport const OrgSettingsUpdateSchema = OrgSettingsSchema.pick({\n defaultAnalystTaskLimit: true,\n timezone: true,\n}).partial();\n\nexport type OrgSettings = z.infer<typeof OrgSettingsSchema>;\nexport type OrgSettingsUpdate = z.infer<typeof OrgSettingsUpdateSchema>;\n","import { z } from 'zod';\nimport { LanguageCode } from '../common';\nimport { Platform, RegionMode } from '../enums';\n\n/** Time window a task should be covered. `end` must be after `start`. */\nexport const CoverageWindowSchema = z\n .object({\n start: z.coerce.date(),\n end: z.coerce.date(),\n })\n .refine((w) => w.end.getTime() > w.start.getTime(), {\n message: 'coverageWindow.end must be after coverageWindow.start',\n path: ['end'],\n });\nexport type CoverageWindow = z.infer<typeof CoverageWindowSchema>;\n\n/** Drives scout/analyst matching. Embedded in Mission (as defaults) and Task. */\nexport const TaskCriteriaSchema = z.object({\n languages: z.array(LanguageCode),\n platforms: z.array(Platform),\n regions: z.array(z.string().min(1)),\n regionMode: RegionMode,\n profession: z.string().min(1).optional(),\n coverageWindow: CoverageWindowSchema.optional(),\n emergency: z.boolean().default(false),\n});\nexport type TaskCriteria = z.infer<typeof TaskCriteriaSchema>;\nexport type TaskCriteriaInput = z.input<typeof TaskCriteriaSchema>;\n","import { z } from 'zod';\nimport { ClerkOrgId, ClerkUserId, LanguageCode, ObjectIdString, TimestampsSchema } from '../common';\nimport {\n AgentCardKind,\n AgentMessageKind,\n AgentMessageRole,\n AgentSessionMode,\n AgentSessionStatus,\n AgentSourceOutcome,\n CaptureDomStatus,\n CaptureStatus,\n LlmCapability,\n LlmOutcome,\n LlmProvider,\n Platform,\n} from '../enums';\nimport { CoverageWindowSchema } from './task-criteria';\n\n/**\n * Badger Agent runtime entities, owned by agent-service.\n *\n * A session is one person working one assignment with the agent \"head\".\n * Everything the agent says is an AgentMessage; everything the person shows it\n * is a Capture (screenshot + read-only DOM text). Every model call is an\n * LlmCall. None of these are soft-deleted: captures expire (blob deleted,\n * document marked `expired`), the rest are append-only history.\n */\n\n// ---------------------------------------------------------------------------\n// AgentSession\n// ---------------------------------------------------------------------------\n\nconst count = () => z.number().int().min(0).default(0);\n\nexport const AgentSessionStatsSchema = z.object({\n capturesCount: count(),\n sourcesFound: count(),\n sourcesToScraper: count(),\n sourcesToMonitor: count(),\n sourcesWaiting: count(),\n sourcesKnown: count(),\n sourcesDropped: count(),\n itemsSaved: count(),\n priorityItems: count(),\n sourcesVisited: count(),\n sourcesRemaining: count(),\n});\nexport type AgentSessionStats = z.infer<typeof AgentSessionStatsSchema>;\n\n/** Running LLM spend for the session; compared against the configured caps. */\nexport const AgentSessionBudgetSchema = z.object({\n tokens: count(),\n costUsd: z.number().min(0).default(0),\n});\nexport type AgentSessionBudget = z.infer<typeof AgentSessionBudgetSchema>;\n\nexport const AgentSessionSchema = z\n .object({\n _id: ObjectIdString,\n orgId: ClerkOrgId,\n missionId: ObjectIdString,\n taskId: ObjectIdString,\n assignmentId: ObjectIdString,\n userId: ClerkUserId,\n mode: AgentSessionMode,\n status: AgentSessionStatus.default('active'),\n startedAt: z.coerce.date(),\n endedAt: z.coerce.date().optional(),\n /** Last capture / reply / open / stream attach; drives `activeMinutes`. */\n lastActivityAt: z.coerce.date(),\n activeMinutes: count(),\n /** Sequence number of the latest AgentMessage; SSE `Last-Event-ID` resumes from it. */\n lastSeq: count(),\n stats: AgentSessionStatsSchema.default({}),\n budget: AgentSessionBudgetSchema.default({}),\n /** The task's capture window as dates, fixed when the session started (`last_days` counted back from then). */\n captureWindow: CoverageWindowSchema.optional(),\n /** Mode-specific engine state (search plan cursor, monitor queue). Opaque to clients. */\n state: z.unknown().optional(),\n })\n .merge(TimestampsSchema);\n\nexport const AgentSessionCreateSchema = AgentSessionSchema.omit({\n _id: true,\n orgId: true,\n createdAt: true,\n updatedAt: true,\n});\nexport const AgentSessionUpdateSchema = AgentSessionCreateSchema.partial();\n\nexport type AgentSession = z.infer<typeof AgentSessionSchema>;\nexport type AgentSessionCreate = z.infer<typeof AgentSessionCreateSchema>;\nexport type AgentSessionCreateInput = z.input<typeof AgentSessionCreateSchema>;\nexport type AgentSessionUpdate = z.infer<typeof AgentSessionUpdateSchema>;\n\n// ---------------------------------------------------------------------------\n// AgentMessage + cards\n// ---------------------------------------------------------------------------\n\n/** A link the person may open. Nothing opens unless they press the card's button. */\nexport const OpenLinkCardSchema = z.object({\n kind: z.literal(AgentCardKind.enum.open_link),\n url: z.string().url(),\n label: z.string().min(1).max(200),\n platform: Platform.optional(),\n});\n\nexport const CapturePromptCardSchema = z.object({\n kind: z.literal(AgentCardKind.enum.capture_prompt),\n hint: z.string().min(1).max(300),\n});\n\nexport const SourceResultCardSchema = z.object({\n kind: z.literal(AgentCardKind.enum.source_result),\n name: z.string().min(1).max(200),\n platform: Platform,\n url: z.string().url().optional(),\n outcome: AgentSourceOutcome,\n reason: z.string().max(300),\n score: z.number().min(0).max(1).optional(),\n});\n\nexport const ItemResultCardSchema = z.object({\n kind: z.literal(AgentCardKind.enum.item_result),\n excerpt: z.string().max(300),\n platform: Platform,\n priority: z.boolean(),\n publishedAt: z.coerce.date().optional(),\n});\n\nexport const QuickReplyOptionSchema = z.object({\n id: z.string().min(1).max(64),\n label: z.string().min(1).max(80),\n});\nexport type QuickReplyOption = z.infer<typeof QuickReplyOptionSchema>;\n\nexport const QuickRepliesCardSchema = z.object({\n kind: z.literal(AgentCardKind.enum.quick_replies),\n questionId: z.string().min(1).max(64),\n options: z.array(QuickReplyOptionSchema).min(1).max(6),\n});\n\nexport const HoursProposalCardSchema = z.object({\n kind: z.literal(AgentCardKind.enum.hours_proposal),\n minutes: z.number().int().positive(),\n note: z.string().max(500),\n});\n\nexport const CaptureThumbCardSchema = z.object({\n kind: z.literal(AgentCardKind.enum.capture_thumb),\n captureId: ObjectIdString,\n});\n\nexport const AgentCardSchema = z.discriminatedUnion('kind', [\n OpenLinkCardSchema,\n CapturePromptCardSchema,\n SourceResultCardSchema,\n ItemResultCardSchema,\n QuickRepliesCardSchema,\n HoursProposalCardSchema,\n CaptureThumbCardSchema,\n]);\nexport type AgentCard = z.infer<typeof AgentCardSchema>;\n\nexport const MAX_AGENT_MESSAGE_TEXT_LENGTH = 4000;\n\nexport const AgentMessageSchema = z\n .object({\n _id: ObjectIdString,\n orgId: ClerkOrgId,\n sessionId: ObjectIdString,\n /** Monotonic per session, starting at 1. */\n seq: z.number().int().min(1),\n role: AgentMessageRole,\n kind: AgentMessageKind,\n text: z.string().max(MAX_AGENT_MESSAGE_TEXT_LENGTH),\n cards: z.array(AgentCardSchema).default([]),\n })\n .merge(TimestampsSchema);\n\nexport const AgentMessageCreateSchema = AgentMessageSchema.omit({\n _id: true,\n orgId: true,\n createdAt: true,\n updatedAt: true,\n});\n\nexport type AgentMessage = z.infer<typeof AgentMessageSchema>;\nexport type AgentMessageCreate = z.infer<typeof AgentMessageCreateSchema>;\nexport type AgentMessageCreateInput = z.input<typeof AgentMessageCreateSchema>;\n\n// ---------------------------------------------------------------------------\n// Capture\n// ---------------------------------------------------------------------------\n\n/** Pointer into the object store; the bytes themselves never live in Mongo. */\nexport const BlobRefSchema = z.object({\n bucket: z.string().min(1),\n key: z.string().min(1),\n contentType: z.string().min(1),\n bytes: z.number().int().min(0),\n});\nexport type BlobRef = z.infer<typeof BlobRefSchema>;\n\n/**\n * Focus rectangle the person drew over the capture preview, in CSS pixels of\n * the captured viewport. The uploaded image is already cropped to it; the DOM\n * blocks are already filtered to those intersecting it.\n */\nexport const CaptureRegionSchema = z.object({\n x: z.number().min(0),\n y: z.number().min(0),\n w: z.number().positive(),\n h: z.number().positive(),\n viewportW: z.number().positive(),\n viewportH: z.number().positive(),\n dpr: z.number().positive(),\n});\nexport type CaptureRegion = z.infer<typeof CaptureRegionSchema>;\n\nexport const CaptureDomSummarySchema = z.object({\n blocks: z.number().int().min(0),\n links: z.number().int().min(0),\n bytes: z.number().int().min(0),\n lang: LanguageCode.optional(),\n});\nexport type CaptureDomSummary = z.infer<typeof CaptureDomSummarySchema>;\n\nexport const CaptureSchema = z\n .object({\n _id: ObjectIdString,\n orgId: ClerkOrgId,\n /** Legacy: captures uploaded into a live session. Task-tagged captures have none. */\n sessionId: ObjectIdString.optional(),\n /** The assignment (and so the task) the person sent this capture for. */\n assignmentId: ObjectIdString.optional(),\n taskId: ObjectIdString.optional(),\n missionId: ObjectIdString.optional(),\n /** Who sent it; used to work out their hours. */\n userId: ClerkUserId.optional(),\n /** From `chrome.tabs`, never from page content. */\n url: z.string().url(),\n title: z.string().max(500),\n capturedAt: z.coerce.date(),\n imageRef: BlobRefSchema,\n /** SHA-256 of the uploaded image, hex. */\n sha256: z.string().regex(/^[0-9a-f]{64}$/),\n region: CaptureRegionSchema.optional(),\n domRef: BlobRefSchema.optional(),\n domStatus: CaptureDomStatus.default('unavailable'),\n domSummary: CaptureDomSummarySchema.optional(),\n status: CaptureStatus.default('uploaded'),\n /** Validated `vision_extract` output; shape depends on session mode. */\n analysis: z.unknown().optional(),\n error: z.string().max(1000).optional(),\n /** Analysis attempts by the capture worker; it gives up (`failed`) after a few. */\n attempts: z.number().int().min(0).default(0),\n /** When the worker claimed it (`analyzing`); an old claim is taken over after a restart. */\n claimedAt: z.coerce.date().optional(),\n /** Blob deleted and status set to `expired` after this instant (CAPTURE_RETENTION_DAYS). */\n expiresAt: z.coerce.date(),\n })\n .merge(TimestampsSchema);\n\nexport const CaptureCreateSchema = CaptureSchema.omit({\n _id: true,\n orgId: true,\n createdAt: true,\n updatedAt: true,\n});\n\nexport type Capture = z.infer<typeof CaptureSchema>;\nexport type CaptureCreate = z.infer<typeof CaptureCreateSchema>;\nexport type CaptureCreateInput = z.input<typeof CaptureCreateSchema>;\n\n// ---------------------------------------------------------------------------\n// Capture DOM snapshot (uploaded JSON part; stored as a blob, not in Mongo)\n// ---------------------------------------------------------------------------\n\nexport const DomRectSchema = z.object({\n x: z.number(),\n y: z.number(),\n w: z.number().min(0),\n h: z.number().min(0),\n});\nexport type DomRect = z.infer<typeof DomRectSchema>;\n\nexport const DomBlockSchema = z.object({\n tag: z.string().min(1).max(32),\n text: z.string().max(4000),\n rect: DomRectSchema,\n});\nexport type DomBlock = z.infer<typeof DomBlockSchema>;\n\nexport const DomLinkSchema = z.object({\n href: z.string().max(2048),\n text: z.string().max(300),\n rect: DomRectSchema,\n});\nexport type DomLink = z.infer<typeof DomLinkSchema>;\n\n/**\n * Read-only snapshot of the *visible* page text, produced by a single\n * `executeScript` call at Capture time. Viewport-relative CSS-pixel rects let\n * the extension filter blocks to the focus region without a second injection.\n */\nexport const CaptureDomSnapshotSchema = z.object({\n url: z.string().url(),\n title: z.string().max(500),\n lang: z.string().max(35).optional(),\n capturedAt: z.coerce.date(),\n viewport: z.object({\n w: z.number().positive(),\n h: z.number().positive(),\n dpr: z.number().positive(),\n scrollX: z.number(),\n scrollY: z.number(),\n }),\n blocks: z.array(DomBlockSchema),\n links: z.array(DomLinkSchema),\n truncated: z.boolean(),\n});\nexport type CaptureDomSnapshot = z.infer<typeof CaptureDomSnapshotSchema>;\n\n// ---------------------------------------------------------------------------\n// LlmCall\n// ---------------------------------------------------------------------------\n\nexport const LlmUsageSchema = z.object({\n inputTokens: count(),\n outputTokens: count(),\n totalTokens: count(),\n});\nexport type LlmUsage = z.infer<typeof LlmUsageSchema>;\n\n/** One provider attempt. A gateway `run()` with fallbacks writes several. */\nexport const LlmCallSchema = z\n .object({\n _id: ObjectIdString,\n orgId: ClerkOrgId.optional(),\n sessionId: ObjectIdString.optional(),\n capability: LlmCapability,\n provider: LlmProvider,\n model: z.string().min(1),\n promptVersion: z.string().min(1),\n /** 1 = first try on this provider, 2 = the single retry. */\n attempt: z.number().int().min(1),\n /** Providers already tried (and failed) before this one, in order. */\n fallbackChain: z.array(LlmProvider).default([]),\n usage: LlmUsageSchema.default({}),\n latencyMs: z.number().int().min(0),\n costUsdEstimate: z.number().min(0).optional(),\n outcome: LlmOutcome,\n errorCode: z.string().max(120).optional(),\n })\n .merge(TimestampsSchema);\n\nexport const LlmCallCreateSchema = LlmCallSchema.omit({ _id: true, createdAt: true, updatedAt: true });\n\nexport type LlmCall = z.infer<typeof LlmCallSchema>;\nexport type LlmCallCreate = z.infer<typeof LlmCallCreateSchema>;\nexport type LlmCallCreateInput = z.input<typeof LlmCallCreateSchema>;\n","import { z } from 'zod';\nimport { ClerkOrgId, ClerkUserId, ObjectIdString, TimestampsSchema } from '../common';\nimport { RaterType } from '../enums';\n\nexport const MAX_RATING_COMMENT_LENGTH = 1000;\n\nexport const RatingScore = z.union([z.literal(1), z.literal(2), z.literal(3), z.literal(4), z.literal(5)]);\nexport type RatingScore = z.infer<typeof RatingScore>;\n\n/**\n * One rating of a scout. Org members rate per assignment (one per rater per\n * assignment; a later rating replaces it). System users may also leave a\n * general rating with no `orgId` / `assignmentId` / `taskId`.\n */\nexport const ScoutRatingSchema = z\n .object({\n _id: ObjectIdString,\n scoutUserId: ClerkUserId,\n /** Absent for a System general rating. */\n orgId: ClerkOrgId.optional(),\n assignmentId: ObjectIdString.optional(),\n taskId: ObjectIdString.optional(),\n raterUserId: ClerkUserId,\n raterType: RaterType,\n score: RatingScore,\n comment: z.string().max(MAX_RATING_COMMENT_LENGTH).optional(),\n })\n .merge(TimestampsSchema);\n\n/** Body of `PUT /assignments/:id/rating` and `POST /system/scouts/:userId/ratings`. */\nexport const ScoutRatingInputSchema = ScoutRatingSchema.pick({ score: true, comment: true });\n\nexport type ScoutRating = z.infer<typeof ScoutRatingSchema>;\nexport type ScoutRatingInput = z.infer<typeof ScoutRatingInputSchema>;\n","import { z } from 'zod';\nimport { ClerkOrgId, ClerkUserId, ObjectIdString, SoftDeleteSchema, TimestampsSchema } from '../common';\nimport { SourceImportKind, SourceImportStatus } from '../enums';\n\nexport const MAX_SOURCE_IMPORT_ROW_ERRORS = 500;\n\nexport const SourceImportSummarySchema = z.object({\n toCreate: z.number().int().nonnegative().default(0),\n toUpdate: z.number().int().nonnegative().default(0),\n duplicates: z.number().int().nonnegative().default(0),\n invalid: z.number().int().nonnegative().default(0),\n});\nexport type SourceImportSummary = z.infer<typeof SourceImportSummarySchema>;\n\nexport const SourceImportRowErrorSchema = z.object({\n row: z.number().int().nonnegative(),\n field: z.string(),\n message: z.string(),\n});\nexport type SourceImportRowError = z.infer<typeof SourceImportRowErrorSchema>;\n\n/** Batch upload (create) or batch update job for sources. */\nexport const SourceImportSchema = z\n .object({\n _id: ObjectIdString,\n orgId: ClerkOrgId,\n kind: SourceImportKind,\n fileName: z.string().min(1),\n rowCount: z.number().int().nonnegative(),\n status: SourceImportStatus.default('validating'),\n summary: SourceImportSummarySchema.default({}),\n rowErrors: z.array(SourceImportRowErrorSchema).max(MAX_SOURCE_IMPORT_ROW_ERRORS).default([]),\n createdBy: ClerkUserId,\n committedAt: z.coerce.date().optional(),\n })\n .merge(TimestampsSchema)\n .merge(SoftDeleteSchema);\n\nexport const SourceImportCreateSchema = SourceImportSchema.omit({\n _id: true,\n orgId: true,\n createdAt: true,\n updatedAt: true,\n deletedAt: true,\n status: true,\n summary: true,\n rowErrors: true,\n createdBy: true,\n committedAt: true,\n});\n\nexport const SourceImportUpdateSchema = SourceImportCreateSchema.partial();\n\nexport type SourceImport = z.infer<typeof SourceImportSchema>;\nexport type SourceImportCreate = z.infer<typeof SourceImportCreateSchema>;\nexport type SourceImportUpdate = z.infer<typeof SourceImportUpdateSchema>;\n","import { z } from 'zod';\nimport { ObjectIdString } from '../common';\nimport { AccessIssue, CaptureWindowMode, Platform } from '../enums';\n\nexport const MAX_CAPTURE_WINDOW_DAYS = 90;\nconst DAY_MS = 24 * 60 * 60 * 1000;\n\n/** True for an absolute `http:` / `https:` URL. Anything else (`javascript:`, `data:`, `file:`, `chrome:`) is not a source. */\nexport function isHttpUrl(value: string): boolean {\n try {\n const { protocol } = new URL(value);\n return protocol === 'http:' || protocol === 'https:';\n } catch {\n return false;\n }\n}\n\n/** A point in time: a `Date` (from Mongo) or an ISO 8601 string with an explicit offset (`Z` or `+03:00`). */\nconst WindowDate = z.union([z.date(), z.string().datetime({ offset: true })]).pipe(z.coerce.date());\n\n/**\n * The one source a task points at. Required on Monitor tasks (go into this source);\n * optional on Discovery tasks (search inside this source). `sourceId` is set when the\n * source is already in `sources`; a pasted URL may not be.\n */\nexport const TaskTargetSchema = z.object({\n sourceId: ObjectIdString.optional(),\n platform: Platform,\n url: z.string().url().refine(isHttpUrl, 'Expected an http(s) URL'),\n label: z.string().min(1).max(200).optional(),\n /** Why a person collects it instead of a scraper. */\n accessIssue: AccessIssue.optional(),\n note: z.string().max(500).optional(),\n});\nexport type TaskTarget = z.infer<typeof TaskTargetSchema>;\n\nconst LastDaysWindowSchema = z.object({\n mode: z.literal(CaptureWindowMode.enum.last_days),\n days: z.number().int().min(1).max(MAX_CAPTURE_WINDOW_DAYS),\n});\n\nconst RangeWindowSchema = z.object({\n mode: z.literal(CaptureWindowMode.enum.range),\n start: WindowDate,\n end: WindowDate,\n});\n\n/**\n * What a Monitor task should capture. `last_days` is counted back from when the person\n * starts working the task; `range` is fixed: `[start, end)`, `end` exclusive and after `start`,\n * at most `MAX_CAPTURE_WINDOW_DAYS` long.\n */\nexport const CaptureWindowSchema = z\n .discriminatedUnion('mode', [LastDaysWindowSchema, RangeWindowSchema])\n .superRefine((w, ctx) => {\n // Runs even when a date failed to parse; leave those to the field's own issue.\n if (w.mode !== 'range' || !(w.start instanceof Date) || !(w.end instanceof Date)) return;\n if (w.end.getTime() <= w.start.getTime()) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: 'captureWindow.end must be after captureWindow.start',\n path: ['end'],\n });\n } else if (w.end.getTime() - w.start.getTime() > MAX_CAPTURE_WINDOW_DAYS * DAY_MS) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: `captureWindow range must be at most ${MAX_CAPTURE_WINDOW_DAYS} days`,\n path: ['end'],\n });\n }\n });\nexport type CaptureWindow = z.infer<typeof CaptureWindowSchema>;\nexport type CaptureWindowInput = z.input<typeof CaptureWindowSchema>;\n","import { Schema, type Query, type UpdateQuery } from 'mongoose';\nimport {\n ACCESS_ISSUE_VALUES,\n AGENT_MESSAGE_KIND_VALUES,\n AGENT_MESSAGE_ROLE_VALUES,\n AGENT_SESSION_MODE_VALUES,\n AGENT_SESSION_STATUS_VALUES,\n ASSIGNEE_TYPE_VALUES,\n ASSIGNMENT_SOURCE_VALUES,\n ASSIGNMENT_STATUS_VALUES,\n CAPTURE_DOM_STATUS_VALUES,\n CAPTURE_STATUS_VALUES,\n HOURS_LOG_SOURCE_VALUES,\n CAPTURE_WINDOW_MODE_VALUES,\n COLLECTIONS,\n COLLECTOR_TYPE_VALUES,\n DATABASE_COLLECTION_VALUES,\n DATABASE_STATUS_VALUES,\n DEPLOYMENT_KIND_VALUES,\n DEPLOYMENT_STATUS_VALUES,\n DISCOVERED_BY_TYPE_VALUES,\n LLM_CAPABILITY_VALUES,\n LLM_OUTCOME_VALUES,\n LLM_PROVIDER_VALUES,\n MISSION_PRIORITY_VALUES,\n MISSION_STATUS_VALUES,\n PLATFORM_VALUES,\n RATER_TYPE_VALUES,\n REGION_MODE_VALUES,\n SCOUT_STATUS_VALUES,\n SCRAPER_STATUS_VALUES,\n SOURCE_ACCESS_VALUES,\n SOURCE_IMPORT_KIND_VALUES,\n SOURCE_IMPORT_STATUS_VALUES,\n SOURCE_ROUTE_VALUES,\n SOURCE_STATUS_VALUES,\n SOURCE_TYPE_VALUES,\n TASK_KIND_VALUES,\n TASK_ORIGIN_VALUES,\n TASK_STATUS_VALUES,\n VETTING_STATUS_VALUES,\n type CollectionName,\n} from '../enums';\nimport type {\n AgentMessage,\n AgentSession,\n AgentSessionBudget,\n AgentSessionStats,\n AnalystProfile,\n AssigneeLoad,\n Assignment,\n AuditLog,\n AuditTarget,\n AvailabilityWindow,\n BlobRef,\n Capture,\n CaptureDomSummary,\n CaptureRegion,\n Collector,\n CoverageWindow,\n Database,\n DataItem,\n DataItemContent,\n DataItemEntity,\n Deployment,\n DeploymentStep,\n DiscoveredBy,\n Geo,\n HoursLog,\n LlmCall,\n LlmUsage,\n Mission,\n OrgSettings,\n PlatformAccess,\n RatingSummary,\n ScoutProfile,\n ScoutRating,\n Scraper,\n ScraperMetric,\n Source,\n SourceImport,\n SourceImportRowError,\n SourceImportSummary,\n SourceRating,\n SpecialAccess,\n SystemRecommendation,\n Task,\n TaskCriteria,\n TaskTarget,\n} from '../zod';\nimport { DEFAULT_ANALYST_TASK_LIMIT } from '../zod/org-settings';\nimport { MAX_AGENT_MESSAGE_TEXT_LENGTH } from '../zod/agent-session';\nimport { MAX_RATING_COMMENT_LENGTH } from '../zod/scout-rating';\nimport { MAX_SOURCE_IMPORT_ROW_ERRORS } from '../zod/source-import';\nimport { MAX_CAPTURE_WINDOW_DAYS } from '../zod/task-target';\nimport { applyIndexes } from './indexes';\nimport { toJSONOptions } from './transform';\nimport type { ToDoc } from './types';\n\n// ---------------------------------------------------------------------------\n// Document types (Zod shape with ObjectIds instead of hex strings)\n// ---------------------------------------------------------------------------\n\nexport type DatabaseDoc = ToDoc<Database>;\nexport type MissionDoc = ToDoc<Mission>;\nexport type TaskDoc = ToDoc<Task>;\nexport type AssignmentDoc = ToDoc<Assignment>;\nexport type HoursLogDoc = ToDoc<HoursLog>;\nexport type ScoutProfileDoc = ToDoc<ScoutProfile>;\nexport type AnalystProfileDoc = ToDoc<AnalystProfile>;\nexport type OrgSettingsDoc = ToDoc<OrgSettings>;\nexport type ScoutRatingDoc = ToDoc<ScoutRating>;\nexport type AssigneeLoadDoc = ToDoc<AssigneeLoad>;\nexport type SourceDoc = ToDoc<Source>;\nexport type SourceImportDoc = ToDoc<SourceImport>;\nexport type DataItemDoc = ToDoc<DataItem>;\nexport type ScraperDoc = ToDoc<Scraper>;\nexport type ScraperMetricDoc = ToDoc<ScraperMetric>;\nexport type DeploymentDoc = ToDoc<Deployment>;\nexport type AuditLogDoc = ToDoc<AuditLog>;\nexport type AgentSessionDoc = ToDoc<AgentSession>;\nexport type AgentMessageDoc = ToDoc<AgentMessage>;\nexport type CaptureDoc = ToDoc<Capture>;\nexport type LlmCallDoc = ToDoc<LlmCall>;\n\n// ---------------------------------------------------------------------------\n// Shared options\n// ---------------------------------------------------------------------------\n\nconst toObject = { ...toJSONOptions, flattenMaps: true } as const;\n\nfunction collectionOptions(collection: CollectionName) {\n return {\n collection,\n timestamps: true,\n versionKey: false,\n minimize: false,\n toJSON: toObject,\n toObject,\n } as const;\n}\n\nconst EMBEDDED = { _id: false, minimize: false } as const;\n\nconst ObjectId = Schema.Types.ObjectId;\nconst Mixed = Schema.Types.Mixed;\n\n/** Clerk ids are plain strings. Never ObjectIds, never `ref`s. */\nconst clerkOrgId = { type: String, required: true, match: /^org_[A-Za-z0-9]+$/ } as const;\nconst clerkUserId = { type: String, required: true, match: /^user_[A-Za-z0-9]+$/ } as const;\nconst clerkUserIdOptional = { type: String, match: /^user_[A-Za-z0-9]+$/ } as const;\n/** Logical Database id (see `DatabaseId`); equals the org id while data is co-located. */\nconst databaseId = { type: String, required: true, minlength: 1 } as const;\n\nconst languageCode = { type: String, match: /^[a-z]{2}$/ } as const;\nconst hhmm = { type: String, required: true, match: /^([01]\\d|2[0-3]):[0-5]\\d$/ } as const;\n\n// ---------------------------------------------------------------------------\n// Embedded sub-schemas (all `_id: false`)\n// ---------------------------------------------------------------------------\n\nexport const coverageWindowSchema = new Schema<ToDoc<CoverageWindow>>(\n {\n start: { type: Date, required: true },\n end: {\n type: Date,\n required: true,\n validate: {\n validator(this: CoverageWindow, end: Date) {\n return !this.start || end.getTime() > this.start.getTime();\n },\n message: 'coverageWindow.end must be after coverageWindow.start',\n },\n },\n },\n EMBEDDED,\n);\n\nexport const taskCriteriaSchema = new Schema<ToDoc<TaskCriteria>>(\n {\n languages: { type: [languageCode], required: true, default: [] },\n platforms: { type: [{ type: String, enum: PLATFORM_VALUES }], required: true, default: [] },\n regions: { type: [String], required: true, default: [] },\n regionMode: { type: String, enum: REGION_MODE_VALUES, required: true },\n profession: { type: String },\n coverageWindow: { type: coverageWindowSchema },\n emergency: { type: Boolean, required: true, default: false },\n },\n EMBEDDED,\n);\n\nexport const taskTargetSchema = new Schema<ToDoc<TaskTarget>>(\n {\n sourceId: { type: ObjectId },\n platform: { type: String, enum: PLATFORM_VALUES, required: true },\n url: { type: String, required: true, minlength: 1 },\n label: { type: String, maxlength: 200 },\n accessIssue: { type: String, enum: ACCESS_ISSUE_VALUES },\n note: { type: String, maxlength: 500 },\n },\n EMBEDDED,\n);\n\n/** Stored flat; `CaptureWindowSchema` (Zod) is the discriminated union validated at the API boundary. */\ntype CaptureWindowDoc = { mode: string; days?: number; start?: Date; end?: Date };\n\nexport const captureWindowSchema = new Schema<CaptureWindowDoc>(\n {\n mode: { type: String, enum: CAPTURE_WINDOW_MODE_VALUES, required: true },\n days: {\n type: Number,\n min: 1,\n max: MAX_CAPTURE_WINDOW_DAYS,\n validate: Number.isInteger,\n required(this: CaptureWindowDoc) {\n return this.mode === 'last_days';\n },\n },\n start: {\n type: Date,\n required(this: CaptureWindowDoc) {\n return this.mode === 'range';\n },\n },\n end: {\n type: Date,\n required(this: CaptureWindowDoc) {\n return this.mode === 'range';\n },\n validate: {\n validator(this: CaptureWindowDoc, end: Date) {\n return !this.start || end.getTime() > this.start.getTime();\n },\n message: 'captureWindow.end must be after captureWindow.start',\n },\n },\n },\n EMBEDDED,\n);\n\nexport const availabilityWindowSchema = new Schema<ToDoc<AvailabilityWindow>>(\n {\n day: { type: Number, enum: [0, 1, 2, 3, 4, 5, 6], required: true },\n start: hhmm,\n end: hhmm,\n },\n EMBEDDED,\n);\n\nexport const specialAccessSchema = new Schema<ToDoc<SpecialAccess>>(\n {\n platform: { type: String, enum: PLATFORM_VALUES, required: true },\n note: { type: String, required: true, maxlength: 500 },\n },\n EMBEDDED,\n);\n\nexport const platformAccessSchema = new Schema<ToDoc<PlatformAccess>>(\n {\n all: { type: Boolean, required: true, default: false },\n platforms: { type: [{ type: String, enum: PLATFORM_VALUES }], required: true, default: [] },\n special: { type: [specialAccessSchema], required: true, default: [] },\n },\n EMBEDDED,\n);\n\nexport const systemRecommendationSchema = new Schema<ToDoc<SystemRecommendation>>(\n {\n taskKinds: { type: [{ type: String, enum: TASK_KIND_VALUES }], required: true, default: [] },\n tags: { type: [String], required: true, default: [] },\n note: { type: String, required: true, default: '' },\n updatedBy: clerkUserId,\n updatedAt: { type: Date, required: true },\n },\n EMBEDDED,\n);\n\nexport const ratingSummarySchema = new Schema<ToDoc<RatingSummary>>(\n {\n avg: { type: Number, min: 0, max: 5, default: null },\n count: { type: Number, required: true, default: 0, min: 0 },\n },\n EMBEDDED,\n);\n\n/** Paths shared by `scoutProfileSchema` and `analystProfileSchema`. */\nconst matchingFields = {\n languages: { type: [languageCode], required: true, default: [] },\n regions: { type: [String], required: true, default: [] },\n timezone: { type: String, required: true, maxlength: 64 },\n availability: { type: [availabilityWindowSchema], required: true, default: [] },\n platformAccess: { type: platformAccessSchema, required: true, default: () => ({}) },\n profession: { type: String, maxlength: 120 },\n taskLimit: { type: Number, min: 1, max: 100 },\n};\n\nexport const sourceRatingSchema = new Schema<ToDoc<SourceRating>>(\n {\n relevance: { type: Number, required: true, min: 0, max: 5 },\n reliability: { type: Number, required: true, min: 0, max: 5 },\n language: languageCode,\n },\n EMBEDDED,\n);\n\nexport const discoveredBySchema = new Schema<ToDoc<DiscoveredBy>>(\n {\n type: { type: String, enum: DISCOVERED_BY_TYPE_VALUES, required: true },\n userId: clerkUserIdOptional,\n importId: { type: ObjectId },\n },\n EMBEDDED,\n);\n\nexport const sourceImportSummarySchema = new Schema<ToDoc<SourceImportSummary>>(\n {\n toCreate: { type: Number, required: true, default: 0, min: 0 },\n toUpdate: { type: Number, required: true, default: 0, min: 0 },\n duplicates: { type: Number, required: true, default: 0, min: 0 },\n invalid: { type: Number, required: true, default: 0, min: 0 },\n },\n EMBEDDED,\n);\n\nexport const sourceImportRowErrorSchema = new Schema<ToDoc<SourceImportRowError>>(\n {\n row: { type: Number, required: true, min: 0 },\n field: { type: String, required: true },\n message: { type: String, required: true },\n },\n EMBEDDED,\n);\n\nexport const collectorSchema = new Schema<ToDoc<Collector>>(\n {\n type: { type: String, enum: COLLECTOR_TYPE_VALUES, required: true },\n id: { type: String, required: true },\n },\n EMBEDDED,\n);\n\nexport const dataItemContentSchema = new Schema<ToDoc<DataItemContent>>(\n {\n text: { type: String },\n lang: languageCode,\n mediaUrls: { type: [String] },\n transcript: { type: String },\n },\n EMBEDDED,\n);\n\nexport const dataItemEntitySchema = new Schema<ToDoc<DataItemEntity>>(\n {\n type: { type: String, required: true },\n value: { type: String, required: true },\n },\n EMBEDDED,\n);\n\nexport const geoSchema = new Schema<ToDoc<Geo>>(\n {\n lat: { type: Number, required: true, min: -90, max: 90 },\n lng: { type: Number, required: true, min: -180, max: 180 },\n place: { type: String },\n },\n EMBEDDED,\n);\n\nexport const deploymentStepSchema = new Schema<ToDoc<DeploymentStep>>(\n {\n name: { type: String, required: true },\n status: { type: String, required: true },\n at: { type: Date, required: true },\n log: { type: String },\n },\n EMBEDDED,\n);\n\nexport const auditTargetSchema = new Schema<ToDoc<AuditTarget>>(\n {\n type: { type: String, required: true },\n id: { type: String, required: true },\n },\n EMBEDDED,\n);\n\n// ---------------------------------------------------------------------------\n// Collections\n// ---------------------------------------------------------------------------\n\nexport const databaseSchema = new Schema<DatabaseDoc>(\n {\n orgId: clerkOrgId,\n name: { type: String, required: true, maxlength: 63, match: /^[^/\\\\. \"$*<>:|?]+$/ },\n connectionString: { type: String, required: true, match: /^mongodb(\\+srv)?:\\/\\/\\S+$/ },\n collections: {\n type: [{ type: String, enum: DATABASE_COLLECTION_VALUES }],\n required: true,\n default: () => [...DATABASE_COLLECTION_VALUES],\n },\n status: { type: String, enum: DATABASE_STATUS_VALUES, required: true, default: 'active' },\n createdBy: clerkUserId,\n deletedAt: { type: Date },\n },\n collectionOptions(COLLECTIONS.databases),\n);\napplyIndexes(databaseSchema, COLLECTIONS.databases);\n\nexport const missionSchema = new Schema<MissionDoc>(\n {\n orgId: clerkOrgId,\n title: { type: String, required: true, maxlength: 200 },\n description: { type: String, required: true, default: '' },\n priority: { type: String, enum: MISSION_PRIORITY_VALUES, required: true },\n status: { type: String, enum: MISSION_STATUS_VALUES, required: true, default: 'draft' },\n defaultCriteria: { type: taskCriteriaSchema, required: true },\n keywords: { type: [String], required: true, default: [] },\n targetDate: { type: Date },\n createdBy: clerkUserId,\n deletedAt: { type: Date },\n },\n collectionOptions(COLLECTIONS.missions),\n);\napplyIndexes(missionSchema, COLLECTIONS.missions);\n\nexport const taskSchema = new Schema<TaskDoc>(\n {\n orgId: clerkOrgId,\n missionId: { type: ObjectId, required: true },\n kind: { type: String, enum: TASK_KIND_VALUES, required: true },\n origin: { type: String, enum: TASK_ORIGIN_VALUES, required: true },\n title: { type: String, required: true, maxlength: 200 },\n description: { type: String, required: true, default: '' },\n keywords: { type: [String], required: true, default: [] },\n searchQueries: { type: [String], required: true, default: [] },\n criteria: { type: taskCriteriaSchema, required: true },\n target: { type: taskTargetSchema },\n captureWindow: { type: captureWindowSchema },\n status: { type: String, enum: TASK_STATUS_VALUES, required: true, default: 'draft' },\n approvedBy: clerkUserIdOptional,\n approvedAt: { type: Date },\n doneBy: clerkUserIdOptional,\n doneAt: { type: Date },\n version: { type: Number, required: true, default: 1, min: 1 },\n deletedAt: { type: Date },\n },\n collectionOptions(COLLECTIONS.tasks),\n);\napplyIndexes(taskSchema, COLLECTIONS.tasks);\n\n/** Query ops on which `incrementTaskVersion` is registered. */\nexport const TASK_VERSION_HOOK_OPS = ['findOneAndUpdate', 'updateOne'] as const;\n\n/**\n * Pre-update hook: bumps `version` by 1 on every edit via `$inc`, unless the\n * update already sets or increments `version` explicitly, or is an\n * aggregation-pipeline update.\n */\nexport function incrementTaskVersion(this: Pick<Query<unknown, unknown>, 'getUpdate' | 'setUpdate'>): void {\n const update = this.getUpdate();\n if (!update || Array.isArray(update)) return;\n const u = update as UpdateQuery<Record<string, unknown>>;\n const touchesVersion =\n 'version' in u ||\n (u.$set !== undefined && 'version' in u.$set) ||\n (u.$inc !== undefined && 'version' in u.$inc) ||\n (u.$setOnInsert !== undefined && 'version' in u.$setOnInsert) ||\n (u.$unset !== undefined && 'version' in u.$unset);\n if (touchesVersion) return;\n this.setUpdate({ ...u, $inc: { ...(u.$inc ?? {}), version: 1 } });\n}\n\nfor (const op of TASK_VERSION_HOOK_OPS) {\n taskSchema.pre(op, incrementTaskVersion);\n}\n\nexport const assignmentSchema = new Schema<AssignmentDoc>(\n {\n orgId: clerkOrgId,\n taskId: { type: ObjectId, required: true },\n assigneeType: { type: String, enum: ASSIGNEE_TYPE_VALUES, required: true },\n assigneeUserId: clerkUserId,\n status: { type: String, enum: ASSIGNMENT_STATUS_VALUES, required: true, default: 'active' },\n score: { type: Number },\n scoreBreakdown: { type: Mixed },\n source: { type: String, enum: ASSIGNMENT_SOURCE_VALUES, required: true },\n assignedBy: clerkUserId,\n activatedAt: { type: Date, required: true },\n endedAt: { type: Date },\n revokedBy: clerkUserIdOptional,\n deletedAt: { type: Date },\n },\n collectionOptions(COLLECTIONS.assignments),\n);\napplyIndexes(assignmentSchema, COLLECTIONS.assignments);\n\nexport const hoursLogSchema = new Schema<HoursLogDoc>(\n {\n orgId: clerkOrgId,\n taskId: { type: ObjectId, required: true },\n scoutUserId: clerkUserId,\n minutes: { type: Number, required: true, min: 1, validate: Number.isInteger },\n note: { type: String, required: true, default: '' },\n date: { type: Date, required: true },\n assignmentId: { type: ObjectId },\n source: { type: String, enum: HOURS_LOG_SOURCE_VALUES },\n deletedAt: { type: Date },\n },\n collectionOptions(COLLECTIONS.hoursLogs),\n);\napplyIndexes(hoursLogSchema, COLLECTIONS.hoursLogs);\n\nexport const scoutProfileSchema = new Schema<ScoutProfileDoc>(\n {\n userId: clerkUserId,\n email: { type: String, required: true, lowercase: true, trim: true, maxlength: 254 },\n fullName: { type: String, trim: true, maxlength: 120 },\n displayName: { type: String, required: true, maxlength: 120 },\n status: { type: String, enum: SCOUT_STATUS_VALUES, required: true, default: 'active' },\n vettingStatus: { type: String, enum: VETTING_STATUS_VALUES, required: true, default: 'pending' },\n ...matchingFields,\n hourlyRateUsd: { type: Number, min: 0 },\n systemRecommendation: { type: systemRecommendationSchema },\n ratingSummary: { type: ratingSummarySchema, required: true, default: () => ({}) },\n deletedAt: { type: Date },\n },\n collectionOptions(COLLECTIONS.scoutProfiles),\n);\napplyIndexes(scoutProfileSchema, COLLECTIONS.scoutProfiles);\n\nexport const analystProfileSchema = new Schema<AnalystProfileDoc>(\n {\n orgId: clerkOrgId,\n userId: clerkUserId,\n displayName: { type: String, required: true, maxlength: 120 },\n ...matchingFields,\n deletedAt: { type: Date },\n },\n collectionOptions(COLLECTIONS.analystProfiles),\n);\napplyIndexes(analystProfileSchema, COLLECTIONS.analystProfiles);\n\nexport const orgSettingsSchema = new Schema<OrgSettingsDoc>(\n {\n orgId: clerkOrgId,\n defaultAnalystTaskLimit: {\n type: Number,\n required: true,\n default: DEFAULT_ANALYST_TASK_LIMIT,\n min: 1,\n max: 100,\n },\n timezone: { type: String, required: true, default: 'UTC', maxlength: 64 },\n },\n collectionOptions(COLLECTIONS.orgSettings),\n);\napplyIndexes(orgSettingsSchema, COLLECTIONS.orgSettings);\n\nexport const scoutRatingSchema = new Schema<ScoutRatingDoc>(\n {\n scoutUserId: clerkUserId,\n orgId: { type: String, match: /^org_[A-Za-z0-9]+$/ },\n assignmentId: { type: ObjectId },\n taskId: { type: ObjectId },\n raterUserId: clerkUserId,\n raterType: { type: String, enum: RATER_TYPE_VALUES, required: true },\n score: { type: Number, enum: [1, 2, 3, 4, 5], required: true },\n comment: { type: String, maxlength: MAX_RATING_COMMENT_LENGTH },\n },\n collectionOptions(COLLECTIONS.scoutRatings),\n);\napplyIndexes(scoutRatingSchema, COLLECTIONS.scoutRatings);\n\nexport const assigneeLoadSchema = new Schema<AssigneeLoadDoc>(\n {\n userId: clerkUserId,\n scope: { type: String, required: true, match: /^(global|org_[A-Za-z0-9]+)$/ },\n active: { type: Number, required: true, default: 0, min: 0 },\n },\n collectionOptions(COLLECTIONS.assigneeLoads),\n);\napplyIndexes(assigneeLoadSchema, COLLECTIONS.assigneeLoads);\n\nexport const sourceSchema = new Schema<SourceDoc>(\n {\n orgId: clerkOrgId,\n databaseId,\n missionIds: { type: [ObjectId], required: true, default: [] },\n taskIds: { type: [ObjectId], required: true, default: [] },\n platform: { type: String, enum: PLATFORM_VALUES, required: true },\n url: { type: String, required: true },\n handle: { type: String },\n type: { type: String, enum: SOURCE_TYPE_VALUES, required: true },\n access: { type: String, enum: SOURCE_ACCESS_VALUES, required: true },\n route: { type: String, enum: SOURCE_ROUTE_VALUES, required: true },\n scraperId: { type: ObjectId },\n rating: { type: sourceRatingSchema },\n tags: { type: [String], required: true, default: [] },\n status: { type: String, enum: SOURCE_STATUS_VALUES, required: true, default: 'active' },\n discoveredBy: { type: discoveredBySchema, required: true },\n lastCollectedAt: { type: Date },\n nextVisitAt: { type: Date },\n deletedAt: { type: Date },\n },\n collectionOptions(COLLECTIONS.sources),\n);\napplyIndexes(sourceSchema, COLLECTIONS.sources);\n\nexport const sourceImportSchema = new Schema<SourceImportDoc>(\n {\n orgId: clerkOrgId,\n kind: { type: String, enum: SOURCE_IMPORT_KIND_VALUES, required: true },\n fileName: { type: String, required: true },\n rowCount: { type: Number, required: true, min: 0 },\n status: { type: String, enum: SOURCE_IMPORT_STATUS_VALUES, required: true, default: 'validating' },\n summary: { type: sourceImportSummarySchema, required: true, default: () => ({}) },\n rowErrors: {\n type: [sourceImportRowErrorSchema],\n required: true,\n default: [],\n validate: {\n validator: (v: unknown[]) => v.length <= MAX_SOURCE_IMPORT_ROW_ERRORS,\n message: `rowErrors may hold at most ${MAX_SOURCE_IMPORT_ROW_ERRORS} entries`,\n },\n },\n createdBy: clerkUserId,\n committedAt: { type: Date },\n deletedAt: { type: Date },\n },\n collectionOptions(COLLECTIONS.sourceImports),\n);\napplyIndexes(sourceImportSchema, COLLECTIONS.sourceImports);\n\nexport const dataItemSchema = new Schema<DataItemDoc>(\n {\n orgId: clerkOrgId,\n databaseId,\n sourceId: { type: ObjectId, required: true },\n missionIds: { type: [ObjectId], required: true, default: [] },\n taskId: { type: ObjectId },\n platform: { type: String, enum: PLATFORM_VALUES, required: true },\n collectedAt: { type: Date, required: true },\n publishedAt: { type: Date },\n collector: { type: collectorSchema, required: true },\n content: { type: dataItemContentSchema, required: true, default: () => ({}) },\n entities: { type: [dataItemEntitySchema] },\n geo: { type: geoSchema },\n priorityFlag: { type: Boolean },\n contentHash: { type: String, match: /^[0-9a-f]{64}$/ },\n },\n collectionOptions(COLLECTIONS.dataItems),\n);\napplyIndexes(dataItemSchema, COLLECTIONS.dataItems);\n\nexport const scraperSchema = new Schema<ScraperDoc>(\n {\n orgId: clerkOrgId,\n platform: { type: String, enum: PLATFORM_VALUES, required: true },\n name: { type: String, required: true, maxlength: 120 },\n sourceLimit: { type: Number, required: true, min: 1 },\n sourceCount: { type: Number, required: true, default: 0, min: 0 },\n status: { type: String, enum: SCRAPER_STATUS_VALUES, required: true, default: 'deploying' },\n deploymentId: { type: ObjectId },\n version: { type: String, required: true },\n deletedAt: { type: Date },\n },\n collectionOptions(COLLECTIONS.scrapers),\n);\napplyIndexes(scraperSchema, COLLECTIONS.scrapers);\n\nexport const scraperMetricSchema = new Schema<ScraperMetricDoc>(\n {\n orgId: clerkOrgId,\n scraperId: { type: ObjectId, required: true },\n hour: { type: Date, required: true },\n itemsCollected: { type: Number, required: true, min: 0 },\n errors: { type: Number, required: true, min: 0 },\n blocked: { type: Number, required: true, min: 0 },\n p95LatencyMs: { type: Number, required: true, min: 0 },\n },\n // `errors` is a reserved Mongoose pathname; the spec names the field so we keep it.\n { ...collectionOptions(COLLECTIONS.scraperMetrics), suppressReservedKeysWarning: true },\n);\napplyIndexes(scraperMetricSchema, COLLECTIONS.scraperMetrics);\n\nexport const deploymentSchema = new Schema<DeploymentDoc>(\n {\n orgId: clerkOrgId,\n kind: { type: String, enum: DEPLOYMENT_KIND_VALUES, required: true },\n status: { type: String, enum: DEPLOYMENT_STATUS_VALUES, required: true, default: 'queued' },\n steps: { type: [deploymentStepSchema], required: true, default: [] },\n requestedBy: clerkUserId,\n deletedAt: { type: Date },\n },\n collectionOptions(COLLECTIONS.deployments),\n);\napplyIndexes(deploymentSchema, COLLECTIONS.deployments);\n\nexport const auditLogSchema = new Schema<AuditLogDoc>(\n {\n orgId: { type: String, match: /^org_[A-Za-z0-9]+$/ },\n actorUserId: clerkUserId,\n actingAsSystem: { type: Boolean, required: true, default: false },\n action: { type: String, required: true },\n target: { type: auditTargetSchema, required: true },\n diff: { type: Mixed },\n at: { type: Date, required: true },\n deletedAt: { type: Date },\n },\n collectionOptions(COLLECTIONS.auditLogs),\n);\napplyIndexes(auditLogSchema, COLLECTIONS.auditLogs);\n\n// ---------------------------------------------------------------------------\n// Badger Agent runtime\n// ---------------------------------------------------------------------------\n\nconst counter = { type: Number, required: true, default: 0, min: 0 } as const;\n\nexport const agentSessionStatsSchema = new Schema<ToDoc<AgentSessionStats>>(\n {\n capturesCount: counter,\n sourcesFound: counter,\n sourcesToScraper: counter,\n sourcesToMonitor: counter,\n sourcesWaiting: counter,\n sourcesKnown: counter,\n sourcesDropped: counter,\n itemsSaved: counter,\n priorityItems: counter,\n sourcesVisited: counter,\n sourcesRemaining: counter,\n },\n EMBEDDED,\n);\n\nexport const agentSessionBudgetSchema = new Schema<ToDoc<AgentSessionBudget>>(\n {\n tokens: counter,\n costUsd: { type: Number, required: true, default: 0, min: 0 },\n },\n EMBEDDED,\n);\n\nexport const agentSessionSchema = new Schema<AgentSessionDoc>(\n {\n orgId: clerkOrgId,\n missionId: { type: ObjectId, required: true },\n taskId: { type: ObjectId, required: true },\n assignmentId: { type: ObjectId, required: true },\n userId: clerkUserId,\n mode: { type: String, enum: AGENT_SESSION_MODE_VALUES, required: true },\n status: { type: String, enum: AGENT_SESSION_STATUS_VALUES, required: true, default: 'active' },\n startedAt: { type: Date, required: true },\n endedAt: { type: Date },\n lastActivityAt: { type: Date, required: true },\n activeMinutes: counter,\n lastSeq: counter,\n stats: { type: agentSessionStatsSchema, required: true, default: () => ({}) },\n budget: { type: agentSessionBudgetSchema, required: true, default: () => ({}) },\n captureWindow: { type: coverageWindowSchema },\n state: { type: Mixed },\n },\n collectionOptions(COLLECTIONS.agentSessions),\n);\napplyIndexes(agentSessionSchema, COLLECTIONS.agentSessions);\n\nexport const agentMessageSchema = new Schema<AgentMessageDoc>(\n {\n orgId: clerkOrgId,\n sessionId: { type: ObjectId, required: true },\n seq: { type: Number, required: true, min: 1, validate: Number.isInteger },\n role: { type: String, enum: AGENT_MESSAGE_ROLE_VALUES, required: true },\n kind: { type: String, enum: AGENT_MESSAGE_KIND_VALUES, required: true },\n text: { type: String, required: true, default: '', maxlength: MAX_AGENT_MESSAGE_TEXT_LENGTH },\n // Discriminated union in Zod (`AgentCardSchema`); validated at the API boundary.\n cards: { type: [Mixed], required: true, default: [] } as unknown as [typeof Mixed],\n },\n collectionOptions(COLLECTIONS.agentMessages),\n);\napplyIndexes(agentMessageSchema, COLLECTIONS.agentMessages);\n\nexport const blobRefSchema = new Schema<ToDoc<BlobRef>>(\n {\n bucket: { type: String, required: true, minlength: 1 },\n key: { type: String, required: true, minlength: 1 },\n contentType: { type: String, required: true, minlength: 1 },\n bytes: { type: Number, required: true, min: 0 },\n },\n EMBEDDED,\n);\n\nexport const captureRegionSchema = new Schema<ToDoc<CaptureRegion>>(\n {\n x: { type: Number, required: true, min: 0 },\n y: { type: Number, required: true, min: 0 },\n w: { type: Number, required: true, min: 0 },\n h: { type: Number, required: true, min: 0 },\n viewportW: { type: Number, required: true, min: 0 },\n viewportH: { type: Number, required: true, min: 0 },\n dpr: { type: Number, required: true, min: 0 },\n },\n EMBEDDED,\n);\n\nexport const captureDomSummarySchema = new Schema<ToDoc<CaptureDomSummary>>(\n {\n blocks: { type: Number, required: true, min: 0 },\n links: { type: Number, required: true, min: 0 },\n bytes: { type: Number, required: true, min: 0 },\n lang: languageCode,\n },\n EMBEDDED,\n);\n\nexport const captureSchema = new Schema<CaptureDoc>(\n {\n orgId: clerkOrgId,\n sessionId: { type: ObjectId },\n assignmentId: { type: ObjectId },\n taskId: { type: ObjectId },\n missionId: { type: ObjectId },\n userId: clerkUserIdOptional,\n url: { type: String, required: true },\n title: { type: String, required: true, default: '', maxlength: 500 },\n capturedAt: { type: Date, required: true },\n imageRef: { type: blobRefSchema, required: true },\n sha256: { type: String, required: true, match: /^[0-9a-f]{64}$/ },\n region: { type: captureRegionSchema },\n domRef: { type: blobRefSchema },\n domStatus: { type: String, enum: CAPTURE_DOM_STATUS_VALUES, required: true, default: 'unavailable' },\n domSummary: { type: captureDomSummarySchema },\n status: { type: String, enum: CAPTURE_STATUS_VALUES, required: true, default: 'uploaded' },\n analysis: { type: Mixed },\n error: { type: String, maxlength: 1000 },\n attempts: { type: Number, required: true, default: 0, min: 0, validate: Number.isInteger },\n claimedAt: { type: Date },\n expiresAt: { type: Date, required: true },\n },\n collectionOptions(COLLECTIONS.captures),\n);\napplyIndexes(captureSchema, COLLECTIONS.captures);\n\nexport const llmUsageSchema = new Schema<ToDoc<LlmUsage>>(\n {\n inputTokens: counter,\n outputTokens: counter,\n totalTokens: counter,\n },\n EMBEDDED,\n);\n\nexport const llmCallSchema = new Schema<LlmCallDoc>(\n {\n orgId: { type: String, match: /^org_[A-Za-z0-9]+$/ },\n sessionId: { type: ObjectId },\n capability: { type: String, enum: LLM_CAPABILITY_VALUES, required: true },\n provider: { type: String, enum: LLM_PROVIDER_VALUES, required: true },\n model: { type: String, required: true, minlength: 1 },\n promptVersion: { type: String, required: true, minlength: 1 },\n attempt: { type: Number, required: true, min: 1, validate: Number.isInteger },\n fallbackChain: { type: [{ type: String, enum: LLM_PROVIDER_VALUES }], required: true, default: [] },\n usage: { type: llmUsageSchema, required: true, default: () => ({}) },\n latencyMs: { type: Number, required: true, min: 0 },\n costUsdEstimate: { type: Number, min: 0 },\n outcome: { type: String, enum: LLM_OUTCOME_VALUES, required: true },\n errorCode: { type: String, maxlength: 120 },\n },\n collectionOptions(COLLECTIONS.llmCalls),\n);\napplyIndexes(llmCallSchema, COLLECTIONS.llmCalls);\n\n/** Every collection schema, keyed by collection name. */\nexport const SCHEMAS = {\n [COLLECTIONS.databases]: databaseSchema,\n [COLLECTIONS.missions]: missionSchema,\n [COLLECTIONS.tasks]: taskSchema,\n [COLLECTIONS.assignments]: assignmentSchema,\n [COLLECTIONS.hoursLogs]: hoursLogSchema,\n [COLLECTIONS.scoutProfiles]: scoutProfileSchema,\n [COLLECTIONS.analystProfiles]: analystProfileSchema,\n [COLLECTIONS.orgSettings]: orgSettingsSchema,\n [COLLECTIONS.scoutRatings]: scoutRatingSchema,\n [COLLECTIONS.assigneeLoads]: assigneeLoadSchema,\n [COLLECTIONS.sources]: sourceSchema,\n [COLLECTIONS.sourceImports]: sourceImportSchema,\n [COLLECTIONS.dataItems]: dataItemSchema,\n [COLLECTIONS.scrapers]: scraperSchema,\n [COLLECTIONS.scraperMetrics]: scraperMetricSchema,\n [COLLECTIONS.deployments]: deploymentSchema,\n [COLLECTIONS.auditLogs]: auditLogSchema,\n [COLLECTIONS.agentSessions]: agentSessionSchema,\n [COLLECTIONS.agentMessages]: agentMessageSchema,\n [COLLECTIONS.captures]: captureSchema,\n [COLLECTIONS.llmCalls]: llmCallSchema,\n} as const satisfies Record<CollectionName, Schema>;\n","import type { Connection, Model, Schema } from 'mongoose';\nimport {\n agentMessageSchema,\n agentSessionSchema,\n analystProfileSchema,\n assigneeLoadSchema,\n assignmentSchema,\n auditLogSchema,\n captureSchema,\n databaseSchema,\n dataItemSchema,\n deploymentSchema,\n hoursLogSchema,\n llmCallSchema,\n missionSchema,\n orgSettingsSchema,\n scoutProfileSchema,\n scoutRatingSchema,\n scraperMetricSchema,\n scraperSchema,\n sourceImportSchema,\n sourceSchema,\n taskSchema,\n type AgentMessageDoc,\n type AgentSessionDoc,\n type AnalystProfileDoc,\n type AssigneeLoadDoc,\n type AssignmentDoc,\n type AuditLogDoc,\n type CaptureDoc,\n type DatabaseDoc,\n type DataItemDoc,\n type DeploymentDoc,\n type HoursLogDoc,\n type LlmCallDoc,\n type MissionDoc,\n type OrgSettingsDoc,\n type ScoutProfileDoc,\n type ScoutRatingDoc,\n type ScraperDoc,\n type ScraperMetricDoc,\n type SourceDoc,\n type SourceImportDoc,\n type TaskDoc,\n} from './schemas';\n\n/** Mongoose model names (PascalCase singular). */\nexport const MODEL_NAMES = {\n Database: 'Database',\n Mission: 'Mission',\n Task: 'Task',\n Assignment: 'Assignment',\n HoursLog: 'HoursLog',\n ScoutProfile: 'ScoutProfile',\n AnalystProfile: 'AnalystProfile',\n OrgSettings: 'OrgSettings',\n ScoutRating: 'ScoutRating',\n AssigneeLoad: 'AssigneeLoad',\n Source: 'Source',\n SourceImport: 'SourceImport',\n DataItem: 'DataItem',\n Scraper: 'Scraper',\n ScraperMetric: 'ScraperMetric',\n Deployment: 'Deployment',\n AuditLog: 'AuditLog',\n AgentSession: 'AgentSession',\n AgentMessage: 'AgentMessage',\n Capture: 'Capture',\n LlmCall: 'LlmCall',\n} as const;\nexport type ModelName = keyof typeof MODEL_NAMES;\n\nexport type DatabaseModel = Model<DatabaseDoc>;\nexport type MissionModel = Model<MissionDoc>;\nexport type TaskModel = Model<TaskDoc>;\nexport type AssignmentModel = Model<AssignmentDoc>;\nexport type HoursLogModel = Model<HoursLogDoc>;\nexport type ScoutProfileModel = Model<ScoutProfileDoc>;\nexport type AnalystProfileModel = Model<AnalystProfileDoc>;\nexport type OrgSettingsModel = Model<OrgSettingsDoc>;\nexport type ScoutRatingModel = Model<ScoutRatingDoc>;\nexport type AssigneeLoadModel = Model<AssigneeLoadDoc>;\nexport type SourceModel = Model<SourceDoc>;\nexport type SourceImportModel = Model<SourceImportDoc>;\nexport type DataItemModel = Model<DataItemDoc>;\nexport type ScraperModel = Model<ScraperDoc>;\nexport type ScraperMetricModel = Model<ScraperMetricDoc>;\nexport type DeploymentModel = Model<DeploymentDoc>;\nexport type AuditLogModel = Model<AuditLogDoc>;\nexport type AgentSessionModel = Model<AgentSessionDoc>;\nexport type AgentMessageModel = Model<AgentMessageDoc>;\nexport type CaptureModel = Model<CaptureDoc>;\nexport type LlmCallModel = Model<LlmCallDoc>;\n\nexport type HarvesterModels = {\n Database: DatabaseModel;\n Mission: MissionModel;\n Task: TaskModel;\n Assignment: AssignmentModel;\n HoursLog: HoursLogModel;\n ScoutProfile: ScoutProfileModel;\n AnalystProfile: AnalystProfileModel;\n OrgSettings: OrgSettingsModel;\n ScoutRating: ScoutRatingModel;\n AssigneeLoad: AssigneeLoadModel;\n Source: SourceModel;\n SourceImport: SourceImportModel;\n DataItem: DataItemModel;\n Scraper: ScraperModel;\n ScraperMetric: ScraperMetricModel;\n Deployment: DeploymentModel;\n AuditLog: AuditLogModel;\n AgentSession: AgentSessionModel;\n AgentMessage: AgentMessageModel;\n Capture: CaptureModel;\n LlmCall: LlmCallModel;\n};\n\nfunction getOrCreate<T>(conn: Connection, name: ModelName, schema: Schema<T>): Model<T> {\n const existing = conn.models[name] as Model<T> | undefined;\n return existing ?? conn.model<T>(name, schema);\n}\n\n/**\n * Registers every Harvester model on `conn` and returns them, fully typed.\n * Idempotent: reuses `conn.models[name]` when already registered. Never\n * connects; the caller owns the connection lifecycle.\n */\nexport function registerModels(conn: Connection): HarvesterModels {\n return {\n Database: getOrCreate(conn, MODEL_NAMES.Database, databaseSchema),\n Mission: getOrCreate(conn, MODEL_NAMES.Mission, missionSchema),\n Task: getOrCreate(conn, MODEL_NAMES.Task, taskSchema),\n Assignment: getOrCreate(conn, MODEL_NAMES.Assignment, assignmentSchema),\n HoursLog: getOrCreate(conn, MODEL_NAMES.HoursLog, hoursLogSchema),\n ScoutProfile: getOrCreate(conn, MODEL_NAMES.ScoutProfile, scoutProfileSchema),\n AnalystProfile: getOrCreate(conn, MODEL_NAMES.AnalystProfile, analystProfileSchema),\n OrgSettings: getOrCreate(conn, MODEL_NAMES.OrgSettings, orgSettingsSchema),\n ScoutRating: getOrCreate(conn, MODEL_NAMES.ScoutRating, scoutRatingSchema),\n AssigneeLoad: getOrCreate(conn, MODEL_NAMES.AssigneeLoad, assigneeLoadSchema),\n Source: getOrCreate(conn, MODEL_NAMES.Source, sourceSchema),\n SourceImport: getOrCreate(conn, MODEL_NAMES.SourceImport, sourceImportSchema),\n DataItem: getOrCreate(conn, MODEL_NAMES.DataItem, dataItemSchema),\n Scraper: getOrCreate(conn, MODEL_NAMES.Scraper, scraperSchema),\n ScraperMetric: getOrCreate(conn, MODEL_NAMES.ScraperMetric, scraperMetricSchema),\n Deployment: getOrCreate(conn, MODEL_NAMES.Deployment, deploymentSchema),\n AuditLog: getOrCreate(conn, MODEL_NAMES.AuditLog, auditLogSchema),\n AgentSession: getOrCreate(conn, MODEL_NAMES.AgentSession, agentSessionSchema),\n AgentMessage: getOrCreate(conn, MODEL_NAMES.AgentMessage, agentMessageSchema),\n Capture: getOrCreate(conn, MODEL_NAMES.Capture, captureSchema),\n LlmCall: getOrCreate(conn, MODEL_NAMES.LlmCall, llmCallSchema),\n };\n}\n"]}
1
+ {"version":3,"sources":["../../src/enums.ts","../../src/mongo/transform.ts","../../src/mongo/indexes.ts","../../src/common.ts","../../src/zod/matching.ts","../../src/zod/org-settings.ts","../../src/zod/task-criteria.ts","../../src/zod/agent-session.ts","../../src/zod/scout-rating.ts","../../src/zod/source-import.ts","../../src/zod/task-target.ts","../../src/mongo/schemas.ts","../../src/mongo/register.ts"],"names":["z","Types","Schema"],"mappings":"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","file":"index.cjs","sourcesContent":["import { z } from 'zod';\n\n/**\n * Every enum is defined exactly once here. The `*_VALUES` const arrays are\n * used by the Mongoose schemas for `enum:` validation, so Zod and Mongoose\n * can never drift.\n */\n\nexport const PLATFORM_VALUES = [\n 'telegram',\n 'facebook',\n 'x',\n 'tiktok',\n 'instagram',\n 'youtube',\n 'whatsapp',\n 'reddit',\n 'discord',\n 'linkedin',\n 'threads',\n 'vk',\n 'snapchat',\n 'web',\n] as const;\nexport const Platform = z.enum(PLATFORM_VALUES);\nexport type Platform = z.infer<typeof Platform>;\n\nexport const MISSION_PRIORITY_VALUES = ['low', 'medium', 'high', 'critical'] as const;\nexport const MissionPriority = z.enum(MISSION_PRIORITY_VALUES);\nexport type MissionPriority = z.infer<typeof MissionPriority>;\n\nexport const MISSION_STATUS_VALUES = ['draft', 'active', 'paused', 'closed'] as const;\nexport const MissionStatus = z.enum(MISSION_STATUS_VALUES);\nexport type MissionStatus = z.infer<typeof MissionStatus>;\n\nexport const TASK_KIND_VALUES = ['source_discovery', 'monitor'] as const;\nexport const TaskKind = z.enum(TASK_KIND_VALUES);\nexport type TaskKind = z.infer<typeof TaskKind>;\n\nexport const TASK_ORIGIN_VALUES = ['auto', 'manual'] as const;\nexport const TaskOrigin = z.enum(TASK_ORIGIN_VALUES);\nexport type TaskOrigin = z.infer<typeof TaskOrigin>;\n\nexport const TASK_STATUS_VALUES = [\n 'draft',\n 'pending_approval',\n 'approved',\n 'in_progress',\n 'paused',\n 'done',\n] as const;\nexport const TaskStatus = z.enum(TASK_STATUS_VALUES);\nexport type TaskStatus = z.infer<typeof TaskStatus>;\n\nexport const REGION_MODE_VALUES = ['must', 'preferred'] as const;\nexport const RegionMode = z.enum(REGION_MODE_VALUES);\nexport type RegionMode = z.infer<typeof RegionMode>;\n\nexport const ASSIGNEE_TYPE_VALUES = ['scout', 'analyst'] as const;\nexport const AssigneeType = z.enum(ASSIGNEE_TYPE_VALUES);\nexport type AssigneeType = z.infer<typeof AssigneeType>;\n\nexport const ASSIGNMENT_STATUS_VALUES = ['active', 'completed', 'revoked'] as const;\nexport const AssignmentStatus = z.enum(ASSIGNMENT_STATUS_VALUES);\nexport type AssignmentStatus = z.infer<typeof AssignmentStatus>;\n\nexport const ASSIGNMENT_SOURCE_VALUES = ['engine', 'manual'] as const;\nexport const AssignmentSource = z.enum(ASSIGNMENT_SOURCE_VALUES);\nexport type AssignmentSource = z.infer<typeof AssignmentSource>;\n\nexport const VETTING_STATUS_VALUES = ['pending', 'approved', 'suspended'] as const;\nexport const VettingStatus = z.enum(VETTING_STATUS_VALUES);\nexport type VettingStatus = z.infer<typeof VettingStatus>;\n\n/** `disabled` = the Clerk user is locked; never a candidate. */\nexport const SCOUT_STATUS_VALUES = ['active', 'disabled'] as const;\nexport const ScoutStatus = z.enum(SCOUT_STATUS_VALUES);\nexport type ScoutStatus = z.infer<typeof ScoutStatus>;\n\n/** Who left a scout rating: an org member (per assignment) or a System user (general). */\nexport const RATER_TYPE_VALUES = ['org', 'system'] as const;\nexport const RaterType = z.enum(RATER_TYPE_VALUES);\nexport type RaterType = z.infer<typeof RaterType>;\n\nexport const SOURCE_TYPE_VALUES = ['channel', 'group', 'profile', 'forum', 'site'] as const;\nexport const SourceType = z.enum(SOURCE_TYPE_VALUES);\nexport type SourceType = z.infer<typeof SourceType>;\n\nexport const SOURCE_ACCESS_VALUES = ['public', 'gated'] as const;\nexport const SourceAccess = z.enum(SOURCE_ACCESS_VALUES);\nexport type SourceAccess = z.infer<typeof SourceAccess>;\n\nexport const SOURCE_ROUTE_VALUES = ['scraper', 'monitor', 'waiting_for_scraper'] as const;\nexport const SourceRoute = z.enum(SOURCE_ROUTE_VALUES);\nexport type SourceRoute = z.infer<typeof SourceRoute>;\n\n/** `access_problem` = the last monitor visit saw a login wall / no access; waits for analyst review. */\nexport const SOURCE_STATUS_VALUES = ['active', 'paused', 'closed', 'access_problem'] as const;\nexport const SourceStatus = z.enum(SOURCE_STATUS_VALUES);\nexport type SourceStatus = z.infer<typeof SourceStatus>;\n\n/**\n * Why a person has to collect a source instead of a scraper. Set on a Monitor task's `target`.\n * `no_collector` = the org has no scraper for the platform; `collector_full` = it has one but no free slot.\n */\nexport const ACCESS_ISSUE_VALUES = [\n 'login_required',\n 'private',\n 'bot_detection',\n 'captcha',\n 'geo_blocked',\n 'rate_limited',\n 'not_found',\n 'no_collector',\n 'collector_full',\n 'other',\n] as const;\nexport const AccessIssue = z.enum(ACCESS_ISSUE_VALUES);\nexport type AccessIssue = z.infer<typeof AccessIssue>;\n\n/** How a Monitor task's capture window is given: the last N days, or a fixed range. */\nexport const CAPTURE_WINDOW_MODE_VALUES = ['last_days', 'range'] as const;\nexport const CaptureWindowMode = z.enum(CAPTURE_WINDOW_MODE_VALUES);\nexport type CaptureWindowMode = z.infer<typeof CaptureWindowMode>;\n\nexport const DISCOVERED_BY_TYPE_VALUES = ['scout', 'analyst', 'agent', 'client', 'import'] as const;\nexport const DiscoveredByType = z.enum(DISCOVERED_BY_TYPE_VALUES);\nexport type DiscoveredByType = z.infer<typeof DiscoveredByType>;\n\nexport const SOURCE_IMPORT_KIND_VALUES = ['create', 'update'] as const;\nexport const SourceImportKind = z.enum(SOURCE_IMPORT_KIND_VALUES);\nexport type SourceImportKind = z.infer<typeof SourceImportKind>;\n\nexport const SOURCE_IMPORT_STATUS_VALUES = ['validating', 'ready', 'committing', 'done', 'failed'] as const;\nexport const SourceImportStatus = z.enum(SOURCE_IMPORT_STATUS_VALUES);\nexport type SourceImportStatus = z.infer<typeof SourceImportStatus>;\n\nexport const COLLECTOR_TYPE_VALUES = ['scraper', 'scout', 'analyst', 'agent'] as const;\nexport const CollectorType = z.enum(COLLECTOR_TYPE_VALUES);\nexport type CollectorType = z.infer<typeof CollectorType>;\n\nexport const SCRAPER_STATUS_VALUES = ['deploying', 'running', 'degraded', 'stopped', 'failed'] as const;\nexport const ScraperStatus = z.enum(SCRAPER_STATUS_VALUES);\nexport type ScraperStatus = z.infer<typeof ScraperStatus>;\n\nexport const DEPLOYMENT_KIND_VALUES = ['org_droplet', 'scraper'] as const;\nexport const DeploymentKind = z.enum(DEPLOYMENT_KIND_VALUES);\nexport type DeploymentKind = z.infer<typeof DeploymentKind>;\n\nexport const DEPLOYMENT_STATUS_VALUES = ['queued', 'running', 'succeeded', 'failed'] as const;\nexport const DeploymentStatus = z.enum(DEPLOYMENT_STATUS_VALUES);\nexport type DeploymentStatus = z.infer<typeof DeploymentStatus>;\n\nexport const DATABASE_STATUS_VALUES = ['provisioning', 'active', 'error'] as const;\nexport const DatabaseStatus = z.enum(DATABASE_STATUS_VALUES);\nexport type DatabaseStatus = z.infer<typeof DatabaseStatus>;\n\n/**\n * Logical collections that live inside an organization's Database (the data\n * the org collects). More kinds will be added over time.\n */\nexport const DATABASE_COLLECTION_VALUES = ['sources', 'dataItems'] as const;\nexport const DatabaseCollection = z.enum(DATABASE_COLLECTION_VALUES);\nexport type DatabaseCollection = z.infer<typeof DatabaseCollection>;\n\n// ---------------------------------------------------------------------------\n// Badger Agent runtime (agent-service)\n// ---------------------------------------------------------------------------\n\n/** A session works one assignment: discovery finds sources, monitor collects from them. */\nexport const AGENT_SESSION_MODE_VALUES = ['discovery', 'monitor'] as const;\nexport const AgentSessionMode = z.enum(AGENT_SESSION_MODE_VALUES);\nexport type AgentSessionMode = z.infer<typeof AgentSessionMode>;\n\nexport const AGENT_SESSION_STATUS_VALUES = ['active', 'paused', 'ended'] as const;\nexport const AgentSessionStatus = z.enum(AGENT_SESSION_STATUS_VALUES);\nexport type AgentSessionStatus = z.infer<typeof AgentSessionStatus>;\n\nexport const AGENT_MESSAGE_ROLE_VALUES = ['agent', 'person', 'system'] as const;\nexport const AgentMessageRole = z.enum(AGENT_MESSAGE_ROLE_VALUES);\nexport type AgentMessageRole = z.infer<typeof AgentMessageRole>;\n\nexport const AGENT_MESSAGE_KIND_VALUES = ['say', 'instruction', 'result', 'question', 'error'] as const;\nexport const AgentMessageKind = z.enum(AGENT_MESSAGE_KIND_VALUES);\nexport type AgentMessageKind = z.infer<typeof AgentMessageKind>;\n\nexport const AGENT_CARD_KIND_VALUES = [\n 'open_link',\n 'capture_prompt',\n 'source_result',\n 'item_result',\n 'quick_replies',\n 'hours_proposal',\n 'capture_thumb',\n] as const;\nexport const AgentCardKind = z.enum(AGENT_CARD_KIND_VALUES);\nexport type AgentCardKind = z.infer<typeof AgentCardKind>;\n\n/** What happened to a candidate source after the agent checked it (shown to the person). */\nexport const AGENT_SOURCE_OUTCOME_VALUES = [\n 'to_scraper',\n 'waiting_for_scraper',\n 'to_monitor',\n 'known',\n 'dropped',\n 'access_problem',\n] as const;\nexport const AgentSourceOutcome = z.enum(AGENT_SOURCE_OUTCOME_VALUES);\nexport type AgentSourceOutcome = z.infer<typeof AgentSourceOutcome>;\n\nexport const CAPTURE_STATUS_VALUES = ['uploaded', 'analyzing', 'analyzed', 'failed', 'expired'] as const;\nexport const CaptureStatus = z.enum(CAPTURE_STATUS_VALUES);\nexport type CaptureStatus = z.infer<typeof CaptureStatus>;\n\n/** How an hours log was made: entered by the person, or worked out from their capture times. */\nexport const HOURS_LOG_SOURCE_VALUES = ['manual', 'inferred'] as const;\nexport const HoursLogSource = z.enum(HOURS_LOG_SOURCE_VALUES);\nexport type HoursLogSource = z.infer<typeof HoursLogSource>;\n\n/** Whether the read-only DOM text snapshot accompanied the screenshot. */\nexport const CAPTURE_DOM_STATUS_VALUES = ['ok', 'unavailable', 'truncated'] as const;\nexport const CaptureDomStatus = z.enum(CAPTURE_DOM_STATUS_VALUES);\nexport type CaptureDomStatus = z.infer<typeof CaptureDomStatus>;\n\nexport const LLM_CAPABILITY_VALUES = ['plan', 'vision_extract', 'judge', 'chat'] as const;\nexport const LlmCapability = z.enum(LLM_CAPABILITY_VALUES);\nexport type LlmCapability = z.infer<typeof LlmCapability>;\n\nexport const LLM_PROVIDER_VALUES = ['gemini', 'anthropic', 'openai'] as const;\nexport const LlmProvider = z.enum(LLM_PROVIDER_VALUES);\nexport type LlmProvider = z.infer<typeof LlmProvider>;\n\nexport const LLM_OUTCOME_VALUES = [\n 'ok',\n 'invalid_output',\n 'timeout',\n 'rate_limited',\n 'server_error',\n 'safety_block',\n 'budget_exceeded',\n 'breaker_open',\n 'auth_error',\n] as const;\nexport const LlmOutcome = z.enum(LLM_OUTCOME_VALUES);\nexport type LlmOutcome = z.infer<typeof LlmOutcome>;\n\n/** Result of `POST /internal/sources/intake` for one candidate. */\nexport const SOURCE_INTAKE_OUTCOME_VALUES = ['created', 'known', 'invalid'] as const;\nexport const SourceIntakeOutcome = z.enum(SOURCE_INTAKE_OUTCOME_VALUES);\nexport type SourceIntakeOutcome = z.infer<typeof SourceIntakeOutcome>;\n\n/** Mongo collection names, camelCase plurals. */\nexport const COLLECTIONS = {\n databases: 'databases',\n missions: 'missions',\n tasks: 'tasks',\n assignments: 'assignments',\n hoursLogs: 'hoursLogs',\n scoutProfiles: 'scoutProfiles',\n analystProfiles: 'analystProfiles',\n orgSettings: 'orgSettings',\n scoutRatings: 'scoutRatings',\n assigneeLoads: 'assigneeLoads',\n sources: 'sources',\n sourceImports: 'sourceImports',\n dataItems: 'dataItems',\n scrapers: 'scrapers',\n scraperMetrics: 'scraperMetrics',\n deployments: 'deployments',\n auditLogs: 'auditLogs',\n agentSessions: 'agentSessions',\n agentMessages: 'agentMessages',\n captures: 'captures',\n llmCalls: 'llmCalls',\n} as const;\nexport type CollectionName = (typeof COLLECTIONS)[keyof typeof COLLECTIONS];\n","import { Types } from 'mongoose';\n\n/**\n * Deep-converts every `Types.ObjectId` in `value` to its 24-char hex string,\n * so a `toJSON()`-ed document parses with the Zod schemas. Dates, Buffers and\n * primitives are returned untouched. Mutates and returns plain objects/arrays.\n */\nexport function objectIdsToStrings<T>(value: T): T {\n if (value === null || value === undefined) return value;\n if (value instanceof Types.ObjectId) return value.toHexString() as unknown as T;\n if (value instanceof Date) return value;\n if (ArrayBuffer.isView(value)) return value;\n if (Array.isArray(value)) {\n for (let i = 0; i < value.length; i++) value[i] = objectIdsToStrings(value[i]);\n return value;\n }\n if (typeof value === 'object') {\n const obj = value as Record<string, unknown>;\n for (const key of Object.keys(obj)) obj[key] = objectIdsToStrings(obj[key]);\n return value;\n }\n return value;\n}\n\n/** Shared `toJSON` / `toObject` options for every schema. */\nexport const toJSONOptions = {\n virtuals: false,\n versionKey: false,\n transform: (_doc: unknown, ret: Record<string, unknown>) => objectIdsToStrings(ret),\n} as const;\n","import type { IndexDefinition, IndexOptions, Schema } from 'mongoose';\nimport { COLLECTIONS, type CollectionName } from '../enums';\n\nexport type IndexSpec = {\n key: IndexDefinition;\n options?: IndexOptions;\n};\n\n/**\n * Partial filter used on unique indexes for soft-deletable collections so\n * that soft-deleted documents do not block re-creation.\n *\n * MongoDB does not allow `{ $exists: false }` in a `partialFilterExpression`\n * (only `$exists: true`, equality, ranges, `$type`, `$and`/`$or`/`$in`), so we\n * use the equality form `{ deletedAt: null }`, which matches documents where\n * `deletedAt` is missing or explicitly `null` — i.e. the live ones.\n */\nexport const NOT_SOFT_DELETED_FILTER = { deletedAt: null } as const;\n\n/**\n * Index definitions per collection. In every compound index `orgId` is the\n * first field, except on the global collections (`scoutProfiles`,\n * `scoutRatings`, `assigneeLoads`), the `assignments` / `agentSessions`\n * per-user lookups, the `captures` retention sweep and the `llmCalls`\n * per-session lookup, which are intentionally cross-org.\n */\nexport const INDEXES: Record<CollectionName, readonly IndexSpec[]> = {\n [COLLECTIONS.databases]: [\n // One live Database per organization.\n { key: { orgId: 1 }, options: { unique: true, partialFilterExpression: NOT_SOFT_DELETED_FILTER } },\n ],\n [COLLECTIONS.scoutProfiles]: [\n { key: { userId: 1 }, options: { unique: true, partialFilterExpression: NOT_SOFT_DELETED_FILTER } },\n { key: { email: 1 }, options: { unique: true, partialFilterExpression: NOT_SOFT_DELETED_FILTER } },\n { key: { vettingStatus: 1, status: 1 } },\n ],\n [COLLECTIONS.analystProfiles]: [\n { key: { orgId: 1, userId: 1 }, options: { unique: true, partialFilterExpression: NOT_SOFT_DELETED_FILTER } },\n ],\n [COLLECTIONS.orgSettings]: [{ key: { orgId: 1 }, options: { unique: true } }],\n [COLLECTIONS.scoutRatings]: [\n {\n // One rating per rater per assignment (general System ratings have no assignmentId).\n key: { assignmentId: 1, raterUserId: 1 },\n options: { unique: true, partialFilterExpression: { assignmentId: { $exists: true } } },\n },\n { key: { scoutUserId: 1, createdAt: -1 } },\n { key: { orgId: 1, scoutUserId: 1 } },\n ],\n [COLLECTIONS.assigneeLoads]: [{ key: { userId: 1, scope: 1 }, options: { unique: true } }],\n [COLLECTIONS.missions]: [{ key: { orgId: 1, status: 1, priority: 1 } }],\n [COLLECTIONS.tasks]: [\n { key: { orgId: 1, missionId: 1, status: 1 } },\n // Tasks that target a source (cascade on source delete).\n { key: { orgId: 1, 'target.sourceId': 1 }, options: { partialFilterExpression: { 'target.sourceId': { $exists: true } } } },\n ],\n [COLLECTIONS.assignments]: [\n { key: { assigneeUserId: 1, status: 1, orgId: 1 } },\n { key: { orgId: 1, taskId: 1, status: 1 } },\n {\n // A person holds at most one active assignment per task.\n key: { taskId: 1, assigneeUserId: 1 },\n options: {\n unique: true,\n partialFilterExpression: { status: 'active', ...NOT_SOFT_DELETED_FILTER },\n },\n },\n ],\n [COLLECTIONS.hoursLogs]: [\n { key: { orgId: 1, scoutUserId: 1, date: -1 } },\n // One inferred row per person + assignment + day (agent-service upserts it).\n {\n key: { orgId: 1, assignmentId: 1, scoutUserId: 1, date: 1 },\n options: { unique: true, partialFilterExpression: { source: 'inferred' } },\n },\n ],\n [COLLECTIONS.sources]: [\n {\n key: { orgId: 1, platform: 1, url: 1 },\n options: { unique: true, partialFilterExpression: NOT_SOFT_DELETED_FILTER },\n },\n { key: { orgId: 1, route: 1, status: 1 } },\n // Multikey: the sources attached to a Monitor task (cap counts, agents' version polls).\n { key: { orgId: 1, taskIds: 1 } },\n // Partition key of the shared database; drives the future split into physical databases.\n { key: { orgId: 1, databaseId: 1 } },\n ],\n [COLLECTIONS.sourceImports]: [{ key: { orgId: 1, createdAt: -1 } }],\n [COLLECTIONS.dataItems]: [\n { key: { orgId: 1, databaseId: 1 } },\n { key: { orgId: 1, collectedAt: -1 } },\n { key: { orgId: 1, missionIds: 1, collectedAt: -1 } },\n { key: { orgId: 1, sourceId: 1, collectedAt: -1 } },\n {\n // Agent collectors dedupe by content hash; only documents that carry one take part.\n key: { orgId: 1, sourceId: 1, contentHash: 1 },\n options: { unique: true, partialFilterExpression: { contentHash: { $exists: true } } },\n },\n { key: { 'content.text': 'text' }, options: { name: 'content_text_text' } },\n ],\n [COLLECTIONS.scrapers]: [{ key: { orgId: 1, platform: 1, status: 1 } }],\n [COLLECTIONS.scraperMetrics]: [\n { key: { orgId: 1, scraperId: 1, hour: -1 } },\n { key: { scraperId: 1, hour: 1 }, options: { unique: true } },\n ],\n [COLLECTIONS.deployments]: [{ key: { orgId: 1, kind: 1, createdAt: -1 } }],\n [COLLECTIONS.auditLogs]: [\n { key: { orgId: 1, at: -1 } },\n { key: { actorUserId: 1, at: -1 } },\n ],\n [COLLECTIONS.agentSessions]: [\n { key: { orgId: 1, assignmentId: 1, status: 1 } },\n { key: { orgId: 1, taskId: 1, startedAt: -1 } },\n // Cross-org \"my live session\" lookup from the extension (scouts have no org context).\n { key: { userId: 1, status: 1, startedAt: -1 } },\n ],\n [COLLECTIONS.agentMessages]: [{ key: { orgId: 1, sessionId: 1, seq: 1 }, options: { unique: true } }],\n [COLLECTIONS.captures]: [\n { key: { orgId: 1, sessionId: 1, capturedAt: -1 } },\n // Retention sweep: captures whose blob must be deleted.\n { key: { status: 1, expiresAt: 1 } },\n // Capture worker: oldest waiting (or stale analyzing) captures first.\n { key: { status: 1, createdAt: 1 } },\n // Task-tagged captures: per-assignment dedupe and inferred hours.\n { key: { orgId: 1, assignmentId: 1, userId: 1, capturedAt: 1 } },\n ],\n [COLLECTIONS.llmCalls]: [\n { key: { orgId: 1, createdAt: -1 } },\n { key: { sessionId: 1, createdAt: -1 } },\n ],\n};\n\n/** Applies the index specs for `collection` to `schema`. */\nexport function applyIndexes(schema: Schema, collection: CollectionName): void {\n for (const spec of INDEXES[collection]) {\n schema.index(spec.key, spec.options);\n }\n}\n","import { z } from 'zod';\n\n// ---------------------------------------------------------------------------\n// Ids\n// ---------------------------------------------------------------------------\n\n/** 24-char hex string: the wire representation of a Mongo ObjectId. */\nexport const ObjectIdString = z\n .string()\n .regex(/^[0-9a-fA-F]{24}$/, 'Expected a 24-character hex ObjectId string');\nexport type ObjectIdString = z.infer<typeof ObjectIdString>;\n\n/** Clerk organization id (`org_…`). Stored as a plain string, never an ObjectId. */\nexport const ClerkOrgId = z.string().regex(/^org_[A-Za-z0-9]+$/, 'Expected a Clerk org id (org_…)');\nexport type ClerkOrgId = z.infer<typeof ClerkOrgId>;\n\n/** Clerk user id (`user_…`). Stored as a plain string, never an ObjectId. */\nexport const ClerkUserId = z.string().regex(/^user_[A-Za-z0-9]+$/, 'Expected a Clerk user id (user_…)');\nexport type ClerkUserId = z.infer<typeof ClerkUserId>;\n\n/**\n * Id of the logical Database that holds an org's collected data (`sources`,\n * `dataItems`). Opaque string: today it equals the Clerk org id because every\n * org's data lives in the shared service database, partitioned by\n * `(databaseId, orgId)`; when data is split into physical databases it becomes\n * the id of that Database record.\n */\nexport const DatabaseId = z.string().min(1);\nexport type DatabaseId = z.infer<typeof DatabaseId>;\n\n// ---------------------------------------------------------------------------\n// Shared fragments\n// ---------------------------------------------------------------------------\n\n/** `createdAt` / `updatedAt`, set by Mongoose `timestamps: true`. */\nexport const TimestampsSchema = z.object({\n createdAt: z.coerce.date(),\n updatedAt: z.coerce.date(),\n});\nexport type Timestamps = z.infer<typeof TimestampsSchema>;\n\n/** Optional `deletedAt` marker for soft-deleted documents. */\nexport const SoftDeleteSchema = z.object({\n deletedAt: z.coerce.date().optional(),\n});\nexport type SoftDelete = z.infer<typeof SoftDeleteSchema>;\n\n/** Keys that are never accepted on Create / Update inputs. */\nexport const SERVER_MANAGED_KEYS = ['_id', 'orgId', 'databaseId', 'createdAt', 'updatedAt', 'deletedAt'] as const;\n\n/** ISO 639-1 language code: two lowercase letters. */\nexport const LanguageCode = z.string().regex(/^[a-z]{2}$/, 'Expected an ISO 639-1 two-letter lowercase code');\nexport type LanguageCode = z.infer<typeof LanguageCode>;\n\n/** `HH:mm` 24h clock string. */\nexport const HHmm = z.string().regex(/^([01]\\d|2[0-3]):[0-5]\\d$/, 'Expected HH:mm');\nexport type HHmm = z.infer<typeof HHmm>;\n\n// ---------------------------------------------------------------------------\n// Pagination\n// ---------------------------------------------------------------------------\n\nexport const PaginationQuerySchema = z.object({\n cursor: z.string().optional(),\n limit: z.coerce.number().int().min(1).max(100).default(25),\n});\n/** Input shape (before defaults). */\nexport type PaginationQueryInput = z.input<typeof PaginationQuerySchema>;\n/** Parsed shape (after defaults). */\nexport type PaginationQuery = z.infer<typeof PaginationQuerySchema>;\n\nexport const PaginatedSchema = <T extends z.ZodTypeAny>(item: T) =>\n z.object({\n items: z.array(item),\n nextCursor: z.string().nullable(),\n });\nexport type Paginated<T> = { items: T[]; nextCursor: string | null };\n\n// ---------------------------------------------------------------------------\n// Errors\n// ---------------------------------------------------------------------------\n\nexport const ApiErrorSchema = z.object({\n error: z.object({\n code: z.string(),\n message: z.string(),\n details: z.unknown().optional(),\n }),\n});\nexport type ApiError = z.infer<typeof ApiErrorSchema>;\n","import { z } from 'zod';\nimport { HHmm, LanguageCode } from '../common';\nimport { Platform } from '../enums';\n\n/**\n * Fragments shared by `ScoutProfile` and `AnalystProfile`: the data the\n * matching engine reads. Identity lives in Clerk; these hold skills only.\n */\n\nexport const AvailabilityWindowSchema = z.object({\n /** 0 = Sunday … 6 = Saturday, in the profile's `timezone`. */\n day: z.union([\n z.literal(0),\n z.literal(1),\n z.literal(2),\n z.literal(3),\n z.literal(4),\n z.literal(5),\n z.literal(6),\n ]),\n start: HHmm,\n end: HHmm,\n});\nexport type AvailabilityWindow = z.infer<typeof AvailabilityWindowSchema>;\n\n/** Privileged access to a platform (closed groups, aged accounts…): an edge in matching. */\nexport const SpecialAccessSchema = z.object({\n platform: Platform,\n note: z.string().min(1).max(500),\n});\nexport type SpecialAccess = z.infer<typeof SpecialAccessSchema>;\n\nexport const PlatformAccessSchema = z.object({\n /** `true` = can work on every platform; `platforms` is then ignored. */\n all: z.boolean().default(false),\n platforms: z.array(Platform).default([]),\n special: z.array(SpecialAccessSchema).default([]),\n});\nexport type PlatformAccess = z.infer<typeof PlatformAccessSchema>;\nexport type PlatformAccessInput = z.input<typeof PlatformAccessSchema>;\n\n/** IANA time zone name, e.g. `Asia/Jerusalem`. */\nexport const TimeZone = z.string().min(1).max(64);\n\n/** Fields every matchable person has. */\nexport const MatchingFieldsSchema = z.object({\n languages: z.array(LanguageCode).default([]),\n /** ISO 3166 codes or named regions. */\n regions: z.array(z.string().min(1)).default([]),\n timezone: TimeZone,\n availability: z.array(AvailabilityWindowSchema).default([]),\n platformAccess: PlatformAccessSchema.default({}),\n profession: z.string().min(1).max(120).optional(),\n /** Max active assignments. Absent = the scope's default. */\n taskLimit: z.number().int().positive().max(100).optional(),\n});\nexport type MatchingFields = z.infer<typeof MatchingFieldsSchema>;\n","import { z } from 'zod';\nimport { ClerkOrgId, ObjectIdString, TimestampsSchema } from '../common';\nimport { TimeZone } from './matching';\n\n/** Default `taskLimit` for analysts of an org that has not set one. */\nexport const DEFAULT_ANALYST_TASK_LIMIT = 5;\n\n/** Non-auth settings for one Clerk organization (Clerk does not keep these). */\nexport const OrgSettingsSchema = z\n .object({\n _id: ObjectIdString,\n orgId: ClerkOrgId,\n defaultAnalystTaskLimit: z.number().int().positive().max(100).default(DEFAULT_ANALYST_TASK_LIMIT),\n timezone: TimeZone.default('UTC'),\n })\n .merge(TimestampsSchema);\n\nexport const OrgSettingsUpdateSchema = OrgSettingsSchema.pick({\n defaultAnalystTaskLimit: true,\n timezone: true,\n}).partial();\n\nexport type OrgSettings = z.infer<typeof OrgSettingsSchema>;\nexport type OrgSettingsUpdate = z.infer<typeof OrgSettingsUpdateSchema>;\n","import { z } from 'zod';\nimport { LanguageCode } from '../common';\nimport { Platform, RegionMode } from '../enums';\n\n/** Time window a task should be covered. `end` must be after `start`. */\nexport const CoverageWindowSchema = z\n .object({\n start: z.coerce.date(),\n end: z.coerce.date(),\n })\n .refine((w) => w.end.getTime() > w.start.getTime(), {\n message: 'coverageWindow.end must be after coverageWindow.start',\n path: ['end'],\n });\nexport type CoverageWindow = z.infer<typeof CoverageWindowSchema>;\n\n/** Drives scout/analyst matching. Embedded in Mission (as defaults) and Task. */\nexport const TaskCriteriaSchema = z.object({\n languages: z.array(LanguageCode),\n platforms: z.array(Platform),\n regions: z.array(z.string().min(1)),\n regionMode: RegionMode,\n profession: z.string().min(1).optional(),\n coverageWindow: CoverageWindowSchema.optional(),\n emergency: z.boolean().default(false),\n});\nexport type TaskCriteria = z.infer<typeof TaskCriteriaSchema>;\nexport type TaskCriteriaInput = z.input<typeof TaskCriteriaSchema>;\n","import { z } from 'zod';\nimport { ClerkOrgId, ClerkUserId, LanguageCode, ObjectIdString, TimestampsSchema } from '../common';\nimport {\n AgentCardKind,\n AgentMessageKind,\n AgentMessageRole,\n AgentSessionMode,\n AgentSessionStatus,\n AgentSourceOutcome,\n CaptureDomStatus,\n CaptureStatus,\n LlmCapability,\n LlmOutcome,\n LlmProvider,\n Platform,\n} from '../enums';\nimport { CoverageWindowSchema } from './task-criteria';\n\n/**\n * Badger Agent runtime entities, owned by agent-service.\n *\n * A session is one person working one assignment with the agent \"head\".\n * Everything the agent says is an AgentMessage; everything the person shows it\n * is a Capture (screenshot + read-only DOM text). Every model call is an\n * LlmCall. None of these are soft-deleted: captures expire (blob deleted,\n * document marked `expired`), the rest are append-only history.\n */\n\n// ---------------------------------------------------------------------------\n// AgentSession\n// ---------------------------------------------------------------------------\n\nconst count = () => z.number().int().min(0).default(0);\n\nexport const AgentSessionStatsSchema = z.object({\n capturesCount: count(),\n sourcesFound: count(),\n sourcesToScraper: count(),\n sourcesToMonitor: count(),\n sourcesWaiting: count(),\n sourcesKnown: count(),\n sourcesDropped: count(),\n itemsSaved: count(),\n priorityItems: count(),\n sourcesVisited: count(),\n sourcesRemaining: count(),\n});\nexport type AgentSessionStats = z.infer<typeof AgentSessionStatsSchema>;\n\n/** Running LLM spend for the session; compared against the configured caps. */\nexport const AgentSessionBudgetSchema = z.object({\n tokens: count(),\n costUsd: z.number().min(0).default(0),\n});\nexport type AgentSessionBudget = z.infer<typeof AgentSessionBudgetSchema>;\n\nexport const AgentSessionSchema = z\n .object({\n _id: ObjectIdString,\n orgId: ClerkOrgId,\n missionId: ObjectIdString,\n taskId: ObjectIdString,\n assignmentId: ObjectIdString,\n userId: ClerkUserId,\n mode: AgentSessionMode,\n status: AgentSessionStatus.default('active'),\n startedAt: z.coerce.date(),\n endedAt: z.coerce.date().optional(),\n /** Last capture / reply / open / stream attach; drives `activeMinutes`. */\n lastActivityAt: z.coerce.date(),\n activeMinutes: count(),\n /** Sequence number of the latest AgentMessage; SSE `Last-Event-ID` resumes from it. */\n lastSeq: count(),\n stats: AgentSessionStatsSchema.default({}),\n budget: AgentSessionBudgetSchema.default({}),\n /** The task's capture window as dates, fixed when the session started (`last_days` counted back from then). */\n captureWindow: CoverageWindowSchema.optional(),\n /** Mode-specific engine state (search plan cursor, monitor queue). Opaque to clients. */\n state: z.unknown().optional(),\n })\n .merge(TimestampsSchema);\n\nexport const AgentSessionCreateSchema = AgentSessionSchema.omit({\n _id: true,\n orgId: true,\n createdAt: true,\n updatedAt: true,\n});\nexport const AgentSessionUpdateSchema = AgentSessionCreateSchema.partial();\n\nexport type AgentSession = z.infer<typeof AgentSessionSchema>;\nexport type AgentSessionCreate = z.infer<typeof AgentSessionCreateSchema>;\nexport type AgentSessionCreateInput = z.input<typeof AgentSessionCreateSchema>;\nexport type AgentSessionUpdate = z.infer<typeof AgentSessionUpdateSchema>;\n\n// ---------------------------------------------------------------------------\n// AgentMessage + cards\n// ---------------------------------------------------------------------------\n\n/** A link the person may open. Nothing opens unless they press the card's button. */\nexport const OpenLinkCardSchema = z.object({\n kind: z.literal(AgentCardKind.enum.open_link),\n url: z.string().url(),\n label: z.string().min(1).max(200),\n platform: Platform.optional(),\n});\n\nexport const CapturePromptCardSchema = z.object({\n kind: z.literal(AgentCardKind.enum.capture_prompt),\n hint: z.string().min(1).max(300),\n});\n\nexport const SourceResultCardSchema = z.object({\n kind: z.literal(AgentCardKind.enum.source_result),\n name: z.string().min(1).max(200),\n platform: Platform,\n url: z.string().url().optional(),\n outcome: AgentSourceOutcome,\n reason: z.string().max(300),\n score: z.number().min(0).max(1).optional(),\n});\n\nexport const ItemResultCardSchema = z.object({\n kind: z.literal(AgentCardKind.enum.item_result),\n excerpt: z.string().max(300),\n platform: Platform,\n priority: z.boolean(),\n publishedAt: z.coerce.date().optional(),\n});\n\nexport const QuickReplyOptionSchema = z.object({\n id: z.string().min(1).max(64),\n label: z.string().min(1).max(80),\n});\nexport type QuickReplyOption = z.infer<typeof QuickReplyOptionSchema>;\n\nexport const QuickRepliesCardSchema = z.object({\n kind: z.literal(AgentCardKind.enum.quick_replies),\n questionId: z.string().min(1).max(64),\n options: z.array(QuickReplyOptionSchema).min(1).max(6),\n});\n\nexport const HoursProposalCardSchema = z.object({\n kind: z.literal(AgentCardKind.enum.hours_proposal),\n minutes: z.number().int().positive(),\n note: z.string().max(500),\n});\n\nexport const CaptureThumbCardSchema = z.object({\n kind: z.literal(AgentCardKind.enum.capture_thumb),\n captureId: ObjectIdString,\n});\n\nexport const AgentCardSchema = z.discriminatedUnion('kind', [\n OpenLinkCardSchema,\n CapturePromptCardSchema,\n SourceResultCardSchema,\n ItemResultCardSchema,\n QuickRepliesCardSchema,\n HoursProposalCardSchema,\n CaptureThumbCardSchema,\n]);\nexport type AgentCard = z.infer<typeof AgentCardSchema>;\n\nexport const MAX_AGENT_MESSAGE_TEXT_LENGTH = 4000;\n\nexport const AgentMessageSchema = z\n .object({\n _id: ObjectIdString,\n orgId: ClerkOrgId,\n sessionId: ObjectIdString,\n /** Monotonic per session, starting at 1. */\n seq: z.number().int().min(1),\n role: AgentMessageRole,\n kind: AgentMessageKind,\n text: z.string().max(MAX_AGENT_MESSAGE_TEXT_LENGTH),\n cards: z.array(AgentCardSchema).default([]),\n })\n .merge(TimestampsSchema);\n\nexport const AgentMessageCreateSchema = AgentMessageSchema.omit({\n _id: true,\n orgId: true,\n createdAt: true,\n updatedAt: true,\n});\n\nexport type AgentMessage = z.infer<typeof AgentMessageSchema>;\nexport type AgentMessageCreate = z.infer<typeof AgentMessageCreateSchema>;\nexport type AgentMessageCreateInput = z.input<typeof AgentMessageCreateSchema>;\n\n// ---------------------------------------------------------------------------\n// Capture\n// ---------------------------------------------------------------------------\n\n/** Pointer into the object store; the bytes themselves never live in Mongo. */\nexport const BlobRefSchema = z.object({\n bucket: z.string().min(1),\n key: z.string().min(1),\n contentType: z.string().min(1),\n bytes: z.number().int().min(0),\n});\nexport type BlobRef = z.infer<typeof BlobRefSchema>;\n\n/**\n * Focus rectangle the person drew over the capture preview, in CSS pixels of\n * the captured viewport. The uploaded image is already cropped to it; the DOM\n * blocks are already filtered to those intersecting it.\n */\nexport const CaptureRegionSchema = z.object({\n x: z.number().min(0),\n y: z.number().min(0),\n w: z.number().positive(),\n h: z.number().positive(),\n viewportW: z.number().positive(),\n viewportH: z.number().positive(),\n dpr: z.number().positive(),\n});\nexport type CaptureRegion = z.infer<typeof CaptureRegionSchema>;\n\nexport const CaptureDomSummarySchema = z.object({\n blocks: z.number().int().min(0),\n links: z.number().int().min(0),\n bytes: z.number().int().min(0),\n lang: LanguageCode.optional(),\n});\nexport type CaptureDomSummary = z.infer<typeof CaptureDomSummarySchema>;\n\nexport const CaptureSchema = z\n .object({\n _id: ObjectIdString,\n orgId: ClerkOrgId,\n /** Legacy: captures uploaded into a live session. Task-tagged captures have none. */\n sessionId: ObjectIdString.optional(),\n /** The assignment (and so the task) the person sent this capture for. */\n assignmentId: ObjectIdString.optional(),\n taskId: ObjectIdString.optional(),\n missionId: ObjectIdString.optional(),\n /** Who sent it; used to work out their hours. */\n userId: ClerkUserId.optional(),\n /** From `chrome.tabs`, never from page content. */\n url: z.string().url(),\n title: z.string().max(500),\n capturedAt: z.coerce.date(),\n imageRef: BlobRefSchema,\n /** SHA-256 of the uploaded image, hex. */\n sha256: z.string().regex(/^[0-9a-f]{64}$/),\n region: CaptureRegionSchema.optional(),\n domRef: BlobRefSchema.optional(),\n domStatus: CaptureDomStatus.default('unavailable'),\n domSummary: CaptureDomSummarySchema.optional(),\n status: CaptureStatus.default('uploaded'),\n /** Validated `vision_extract` output; shape depends on session mode. */\n analysis: z.unknown().optional(),\n error: z.string().max(1000).optional(),\n /** Analysis attempts by the capture worker; it gives up (`failed`) after a few. */\n attempts: z.number().int().min(0).default(0),\n /** When the worker claimed it (`analyzing`); an old claim is taken over after a restart. */\n claimedAt: z.coerce.date().optional(),\n /** Blob deleted and status set to `expired` after this instant (CAPTURE_RETENTION_DAYS). */\n expiresAt: z.coerce.date(),\n })\n .merge(TimestampsSchema);\n\nexport const CaptureCreateSchema = CaptureSchema.omit({\n _id: true,\n orgId: true,\n createdAt: true,\n updatedAt: true,\n});\n\nexport type Capture = z.infer<typeof CaptureSchema>;\nexport type CaptureCreate = z.infer<typeof CaptureCreateSchema>;\nexport type CaptureCreateInput = z.input<typeof CaptureCreateSchema>;\n\n// ---------------------------------------------------------------------------\n// Capture DOM snapshot (uploaded JSON part; stored as a blob, not in Mongo)\n// ---------------------------------------------------------------------------\n\nexport const DomRectSchema = z.object({\n x: z.number(),\n y: z.number(),\n w: z.number().min(0),\n h: z.number().min(0),\n});\nexport type DomRect = z.infer<typeof DomRectSchema>;\n\nexport const DomBlockSchema = z.object({\n tag: z.string().min(1).max(32),\n text: z.string().max(4000),\n rect: DomRectSchema,\n});\nexport type DomBlock = z.infer<typeof DomBlockSchema>;\n\nexport const DomLinkSchema = z.object({\n href: z.string().max(2048),\n text: z.string().max(300),\n rect: DomRectSchema,\n});\nexport type DomLink = z.infer<typeof DomLinkSchema>;\n\n/**\n * Read-only snapshot of the *visible* page text, produced by a single\n * `executeScript` call at Capture time. Viewport-relative CSS-pixel rects let\n * the extension filter blocks to the focus region without a second injection.\n */\nexport const CaptureDomSnapshotSchema = z.object({\n url: z.string().url(),\n title: z.string().max(500),\n lang: z.string().max(35).optional(),\n capturedAt: z.coerce.date(),\n viewport: z.object({\n w: z.number().positive(),\n h: z.number().positive(),\n dpr: z.number().positive(),\n scrollX: z.number(),\n scrollY: z.number(),\n }),\n blocks: z.array(DomBlockSchema),\n links: z.array(DomLinkSchema),\n truncated: z.boolean(),\n});\nexport type CaptureDomSnapshot = z.infer<typeof CaptureDomSnapshotSchema>;\n\n// ---------------------------------------------------------------------------\n// LlmCall\n// ---------------------------------------------------------------------------\n\nexport const LlmUsageSchema = z.object({\n inputTokens: count(),\n outputTokens: count(),\n totalTokens: count(),\n});\nexport type LlmUsage = z.infer<typeof LlmUsageSchema>;\n\n/** One provider attempt. A gateway `run()` with fallbacks writes several. */\nexport const LlmCallSchema = z\n .object({\n _id: ObjectIdString,\n orgId: ClerkOrgId.optional(),\n sessionId: ObjectIdString.optional(),\n capability: LlmCapability,\n provider: LlmProvider,\n model: z.string().min(1),\n promptVersion: z.string().min(1),\n /** 1 = first try on this provider, 2 = the single retry. */\n attempt: z.number().int().min(1),\n /** Providers already tried (and failed) before this one, in order. */\n fallbackChain: z.array(LlmProvider).default([]),\n usage: LlmUsageSchema.default({}),\n latencyMs: z.number().int().min(0),\n costUsdEstimate: z.number().min(0).optional(),\n outcome: LlmOutcome,\n errorCode: z.string().max(120).optional(),\n })\n .merge(TimestampsSchema);\n\nexport const LlmCallCreateSchema = LlmCallSchema.omit({ _id: true, createdAt: true, updatedAt: true });\n\nexport type LlmCall = z.infer<typeof LlmCallSchema>;\nexport type LlmCallCreate = z.infer<typeof LlmCallCreateSchema>;\nexport type LlmCallCreateInput = z.input<typeof LlmCallCreateSchema>;\n","import { z } from 'zod';\nimport { ClerkOrgId, ClerkUserId, ObjectIdString, TimestampsSchema } from '../common';\nimport { RaterType } from '../enums';\n\nexport const MAX_RATING_COMMENT_LENGTH = 1000;\n\nexport const RatingScore = z.union([z.literal(1), z.literal(2), z.literal(3), z.literal(4), z.literal(5)]);\nexport type RatingScore = z.infer<typeof RatingScore>;\n\n/**\n * One rating of a scout. Org members rate per assignment (one per rater per\n * assignment; a later rating replaces it). System users may also leave a\n * general rating with no `orgId` / `assignmentId` / `taskId`.\n */\nexport const ScoutRatingSchema = z\n .object({\n _id: ObjectIdString,\n scoutUserId: ClerkUserId,\n /** Absent for a System general rating. */\n orgId: ClerkOrgId.optional(),\n assignmentId: ObjectIdString.optional(),\n taskId: ObjectIdString.optional(),\n raterUserId: ClerkUserId,\n raterType: RaterType,\n score: RatingScore,\n comment: z.string().max(MAX_RATING_COMMENT_LENGTH).optional(),\n })\n .merge(TimestampsSchema);\n\n/** Body of `PUT /assignments/:id/rating` and `POST /system/scouts/:userId/ratings`. */\nexport const ScoutRatingInputSchema = ScoutRatingSchema.pick({ score: true, comment: true });\n\nexport type ScoutRating = z.infer<typeof ScoutRatingSchema>;\nexport type ScoutRatingInput = z.infer<typeof ScoutRatingInputSchema>;\n","import { z } from 'zod';\nimport { ClerkOrgId, ClerkUserId, ObjectIdString, SoftDeleteSchema, TimestampsSchema } from '../common';\nimport { SourceImportKind, SourceImportStatus } from '../enums';\n\nexport const MAX_SOURCE_IMPORT_ROW_ERRORS = 500;\n\nexport const SourceImportSummarySchema = z.object({\n toCreate: z.number().int().nonnegative().default(0),\n toUpdate: z.number().int().nonnegative().default(0),\n duplicates: z.number().int().nonnegative().default(0),\n invalid: z.number().int().nonnegative().default(0),\n});\nexport type SourceImportSummary = z.infer<typeof SourceImportSummarySchema>;\n\nexport const SourceImportRowErrorSchema = z.object({\n row: z.number().int().nonnegative(),\n field: z.string(),\n message: z.string(),\n});\nexport type SourceImportRowError = z.infer<typeof SourceImportRowErrorSchema>;\n\n/** Batch upload (create) or batch update job for sources. */\nexport const SourceImportSchema = z\n .object({\n _id: ObjectIdString,\n orgId: ClerkOrgId,\n kind: SourceImportKind,\n fileName: z.string().min(1),\n rowCount: z.number().int().nonnegative(),\n status: SourceImportStatus.default('validating'),\n summary: SourceImportSummarySchema.default({}),\n rowErrors: z.array(SourceImportRowErrorSchema).max(MAX_SOURCE_IMPORT_ROW_ERRORS).default([]),\n createdBy: ClerkUserId,\n committedAt: z.coerce.date().optional(),\n })\n .merge(TimestampsSchema)\n .merge(SoftDeleteSchema);\n\nexport const SourceImportCreateSchema = SourceImportSchema.omit({\n _id: true,\n orgId: true,\n createdAt: true,\n updatedAt: true,\n deletedAt: true,\n status: true,\n summary: true,\n rowErrors: true,\n createdBy: true,\n committedAt: true,\n});\n\nexport const SourceImportUpdateSchema = SourceImportCreateSchema.partial();\n\nexport type SourceImport = z.infer<typeof SourceImportSchema>;\nexport type SourceImportCreate = z.infer<typeof SourceImportCreateSchema>;\nexport type SourceImportUpdate = z.infer<typeof SourceImportUpdateSchema>;\n","import { z } from 'zod';\nimport { ObjectIdString } from '../common';\nimport { AccessIssue, CaptureWindowMode, Platform } from '../enums';\n\nexport const MAX_CAPTURE_WINDOW_DAYS = 90;\n/** At most this many sources are attached to one Monitor task (a batch one person works through). */\nexport const MONITOR_TASK_MAX_SOURCES = 20;\nconst DAY_MS = 24 * 60 * 60 * 1000;\n\n/** True for an absolute `http:` / `https:` URL. Anything else (`javascript:`, `data:`, `file:`, `chrome:`) is not a source. */\nexport function isHttpUrl(value: string): boolean {\n try {\n const { protocol } = new URL(value);\n return protocol === 'http:' || protocol === 'https:';\n } catch {\n return false;\n }\n}\n\n/** A point in time: a `Date` (from Mongo) or an ISO 8601 string with an explicit offset (`Z` or `+03:00`). */\nconst WindowDate = z.union([z.date(), z.string().datetime({ offset: true })]).pipe(z.coerce.date());\n\n/**\n * The one source a task points at. A Monitor task has this or attached sources\n * (`Source.taskIds`, at most `MONITOR_TASK_MAX_SOURCES`); optional on Discovery tasks\n * (search inside this source). `sourceId` is set when the\n * source is already in `sources`; a pasted URL may not be.\n */\nexport const TaskTargetSchema = z.object({\n sourceId: ObjectIdString.optional(),\n platform: Platform,\n url: z.string().url().refine(isHttpUrl, 'Expected an http(s) URL'),\n label: z.string().min(1).max(200).optional(),\n /** Why a person collects it instead of a scraper. */\n accessIssue: AccessIssue.optional(),\n note: z.string().max(500).optional(),\n});\nexport type TaskTarget = z.infer<typeof TaskTargetSchema>;\n\nconst LastDaysWindowSchema = z.object({\n mode: z.literal(CaptureWindowMode.enum.last_days),\n days: z.number().int().min(1).max(MAX_CAPTURE_WINDOW_DAYS),\n});\n\nconst RangeWindowSchema = z.object({\n mode: z.literal(CaptureWindowMode.enum.range),\n start: WindowDate,\n end: WindowDate,\n});\n\n/**\n * What a Monitor task should capture. `last_days` is counted back from when the person\n * starts working the task; `range` is fixed: `[start, end)`, `end` exclusive and after `start`,\n * at most `MAX_CAPTURE_WINDOW_DAYS` long.\n */\nexport const CaptureWindowSchema = z\n .discriminatedUnion('mode', [LastDaysWindowSchema, RangeWindowSchema])\n .superRefine((w, ctx) => {\n // Runs even when a date failed to parse; leave those to the field's own issue.\n if (w.mode !== 'range' || !(w.start instanceof Date) || !(w.end instanceof Date)) return;\n if (w.end.getTime() <= w.start.getTime()) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: 'captureWindow.end must be after captureWindow.start',\n path: ['end'],\n });\n } else if (w.end.getTime() - w.start.getTime() > MAX_CAPTURE_WINDOW_DAYS * DAY_MS) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: `captureWindow range must be at most ${MAX_CAPTURE_WINDOW_DAYS} days`,\n path: ['end'],\n });\n }\n });\nexport type CaptureWindow = z.infer<typeof CaptureWindowSchema>;\nexport type CaptureWindowInput = z.input<typeof CaptureWindowSchema>;\n","import { Schema, type Query, type UpdateQuery } from 'mongoose';\nimport {\n ACCESS_ISSUE_VALUES,\n AGENT_MESSAGE_KIND_VALUES,\n AGENT_MESSAGE_ROLE_VALUES,\n AGENT_SESSION_MODE_VALUES,\n AGENT_SESSION_STATUS_VALUES,\n ASSIGNEE_TYPE_VALUES,\n ASSIGNMENT_SOURCE_VALUES,\n ASSIGNMENT_STATUS_VALUES,\n CAPTURE_DOM_STATUS_VALUES,\n CAPTURE_STATUS_VALUES,\n HOURS_LOG_SOURCE_VALUES,\n CAPTURE_WINDOW_MODE_VALUES,\n COLLECTIONS,\n COLLECTOR_TYPE_VALUES,\n DATABASE_COLLECTION_VALUES,\n DATABASE_STATUS_VALUES,\n DEPLOYMENT_KIND_VALUES,\n DEPLOYMENT_STATUS_VALUES,\n DISCOVERED_BY_TYPE_VALUES,\n LLM_CAPABILITY_VALUES,\n LLM_OUTCOME_VALUES,\n LLM_PROVIDER_VALUES,\n MISSION_PRIORITY_VALUES,\n MISSION_STATUS_VALUES,\n PLATFORM_VALUES,\n RATER_TYPE_VALUES,\n REGION_MODE_VALUES,\n SCOUT_STATUS_VALUES,\n SCRAPER_STATUS_VALUES,\n SOURCE_ACCESS_VALUES,\n SOURCE_IMPORT_KIND_VALUES,\n SOURCE_IMPORT_STATUS_VALUES,\n SOURCE_ROUTE_VALUES,\n SOURCE_STATUS_VALUES,\n SOURCE_TYPE_VALUES,\n TASK_KIND_VALUES,\n TASK_ORIGIN_VALUES,\n TASK_STATUS_VALUES,\n VETTING_STATUS_VALUES,\n type CollectionName,\n} from '../enums';\nimport type {\n AgentMessage,\n AgentSession,\n AgentSessionBudget,\n AgentSessionStats,\n AnalystProfile,\n AssigneeLoad,\n Assignment,\n AuditLog,\n AuditTarget,\n AvailabilityWindow,\n BlobRef,\n Capture,\n CaptureDomSummary,\n CaptureRegion,\n Collector,\n CoverageWindow,\n Database,\n DataItem,\n DataItemContent,\n DataItemEntity,\n Deployment,\n DeploymentStep,\n DiscoveredBy,\n Geo,\n HoursLog,\n LlmCall,\n LlmUsage,\n Mission,\n OrgSettings,\n PlatformAccess,\n RatingSummary,\n ScoutProfile,\n ScoutRating,\n Scraper,\n ScraperMetric,\n Source,\n SourceImport,\n SourceImportRowError,\n SourceImportSummary,\n SourceRating,\n SpecialAccess,\n SystemRecommendation,\n Task,\n TaskCriteria,\n TaskTarget,\n} from '../zod';\nimport { DEFAULT_ANALYST_TASK_LIMIT } from '../zod/org-settings';\nimport { MAX_AGENT_MESSAGE_TEXT_LENGTH } from '../zod/agent-session';\nimport { MAX_RATING_COMMENT_LENGTH } from '../zod/scout-rating';\nimport { MAX_SOURCE_IMPORT_ROW_ERRORS } from '../zod/source-import';\nimport { MAX_CAPTURE_WINDOW_DAYS } from '../zod/task-target';\nimport { applyIndexes } from './indexes';\nimport { toJSONOptions } from './transform';\nimport type { ToDoc } from './types';\n\n// ---------------------------------------------------------------------------\n// Document types (Zod shape with ObjectIds instead of hex strings)\n// ---------------------------------------------------------------------------\n\nexport type DatabaseDoc = ToDoc<Database>;\nexport type MissionDoc = ToDoc<Mission>;\nexport type TaskDoc = ToDoc<Task>;\nexport type AssignmentDoc = ToDoc<Assignment>;\nexport type HoursLogDoc = ToDoc<HoursLog>;\nexport type ScoutProfileDoc = ToDoc<ScoutProfile>;\nexport type AnalystProfileDoc = ToDoc<AnalystProfile>;\nexport type OrgSettingsDoc = ToDoc<OrgSettings>;\nexport type ScoutRatingDoc = ToDoc<ScoutRating>;\nexport type AssigneeLoadDoc = ToDoc<AssigneeLoad>;\nexport type SourceDoc = ToDoc<Source>;\nexport type SourceImportDoc = ToDoc<SourceImport>;\nexport type DataItemDoc = ToDoc<DataItem>;\nexport type ScraperDoc = ToDoc<Scraper>;\nexport type ScraperMetricDoc = ToDoc<ScraperMetric>;\nexport type DeploymentDoc = ToDoc<Deployment>;\nexport type AuditLogDoc = ToDoc<AuditLog>;\nexport type AgentSessionDoc = ToDoc<AgentSession>;\nexport type AgentMessageDoc = ToDoc<AgentMessage>;\nexport type CaptureDoc = ToDoc<Capture>;\nexport type LlmCallDoc = ToDoc<LlmCall>;\n\n// ---------------------------------------------------------------------------\n// Shared options\n// ---------------------------------------------------------------------------\n\nconst toObject = { ...toJSONOptions, flattenMaps: true } as const;\n\nfunction collectionOptions(collection: CollectionName) {\n return {\n collection,\n timestamps: true,\n versionKey: false,\n minimize: false,\n toJSON: toObject,\n toObject,\n } as const;\n}\n\nconst EMBEDDED = { _id: false, minimize: false } as const;\n\nconst ObjectId = Schema.Types.ObjectId;\nconst Mixed = Schema.Types.Mixed;\n\n/** Clerk ids are plain strings. Never ObjectIds, never `ref`s. */\nconst clerkOrgId = { type: String, required: true, match: /^org_[A-Za-z0-9]+$/ } as const;\nconst clerkUserId = { type: String, required: true, match: /^user_[A-Za-z0-9]+$/ } as const;\nconst clerkUserIdOptional = { type: String, match: /^user_[A-Za-z0-9]+$/ } as const;\n/** Logical Database id (see `DatabaseId`); equals the org id while data is co-located. */\nconst databaseId = { type: String, required: true, minlength: 1 } as const;\n\nconst languageCode = { type: String, match: /^[a-z]{2}$/ } as const;\nconst hhmm = { type: String, required: true, match: /^([01]\\d|2[0-3]):[0-5]\\d$/ } as const;\n\n// ---------------------------------------------------------------------------\n// Embedded sub-schemas (all `_id: false`)\n// ---------------------------------------------------------------------------\n\nexport const coverageWindowSchema = new Schema<ToDoc<CoverageWindow>>(\n {\n start: { type: Date, required: true },\n end: {\n type: Date,\n required: true,\n validate: {\n validator(this: CoverageWindow, end: Date) {\n return !this.start || end.getTime() > this.start.getTime();\n },\n message: 'coverageWindow.end must be after coverageWindow.start',\n },\n },\n },\n EMBEDDED,\n);\n\nexport const taskCriteriaSchema = new Schema<ToDoc<TaskCriteria>>(\n {\n languages: { type: [languageCode], required: true, default: [] },\n platforms: { type: [{ type: String, enum: PLATFORM_VALUES }], required: true, default: [] },\n regions: { type: [String], required: true, default: [] },\n regionMode: { type: String, enum: REGION_MODE_VALUES, required: true },\n profession: { type: String },\n coverageWindow: { type: coverageWindowSchema },\n emergency: { type: Boolean, required: true, default: false },\n },\n EMBEDDED,\n);\n\nexport const taskTargetSchema = new Schema<ToDoc<TaskTarget>>(\n {\n sourceId: { type: ObjectId },\n platform: { type: String, enum: PLATFORM_VALUES, required: true },\n url: { type: String, required: true, minlength: 1 },\n label: { type: String, maxlength: 200 },\n accessIssue: { type: String, enum: ACCESS_ISSUE_VALUES },\n note: { type: String, maxlength: 500 },\n },\n EMBEDDED,\n);\n\n/** Stored flat; `CaptureWindowSchema` (Zod) is the discriminated union validated at the API boundary. */\ntype CaptureWindowDoc = { mode: string; days?: number; start?: Date; end?: Date };\n\nexport const captureWindowSchema = new Schema<CaptureWindowDoc>(\n {\n mode: { type: String, enum: CAPTURE_WINDOW_MODE_VALUES, required: true },\n days: {\n type: Number,\n min: 1,\n max: MAX_CAPTURE_WINDOW_DAYS,\n validate: Number.isInteger,\n required(this: CaptureWindowDoc) {\n return this.mode === 'last_days';\n },\n },\n start: {\n type: Date,\n required(this: CaptureWindowDoc) {\n return this.mode === 'range';\n },\n },\n end: {\n type: Date,\n required(this: CaptureWindowDoc) {\n return this.mode === 'range';\n },\n validate: {\n validator(this: CaptureWindowDoc, end: Date) {\n return !this.start || end.getTime() > this.start.getTime();\n },\n message: 'captureWindow.end must be after captureWindow.start',\n },\n },\n },\n EMBEDDED,\n);\n\nexport const availabilityWindowSchema = new Schema<ToDoc<AvailabilityWindow>>(\n {\n day: { type: Number, enum: [0, 1, 2, 3, 4, 5, 6], required: true },\n start: hhmm,\n end: hhmm,\n },\n EMBEDDED,\n);\n\nexport const specialAccessSchema = new Schema<ToDoc<SpecialAccess>>(\n {\n platform: { type: String, enum: PLATFORM_VALUES, required: true },\n note: { type: String, required: true, maxlength: 500 },\n },\n EMBEDDED,\n);\n\nexport const platformAccessSchema = new Schema<ToDoc<PlatformAccess>>(\n {\n all: { type: Boolean, required: true, default: false },\n platforms: { type: [{ type: String, enum: PLATFORM_VALUES }], required: true, default: [] },\n special: { type: [specialAccessSchema], required: true, default: [] },\n },\n EMBEDDED,\n);\n\nexport const systemRecommendationSchema = new Schema<ToDoc<SystemRecommendation>>(\n {\n taskKinds: { type: [{ type: String, enum: TASK_KIND_VALUES }], required: true, default: [] },\n tags: { type: [String], required: true, default: [] },\n note: { type: String, required: true, default: '' },\n updatedBy: clerkUserId,\n updatedAt: { type: Date, required: true },\n },\n EMBEDDED,\n);\n\nexport const ratingSummarySchema = new Schema<ToDoc<RatingSummary>>(\n {\n avg: { type: Number, min: 0, max: 5, default: null },\n count: { type: Number, required: true, default: 0, min: 0 },\n },\n EMBEDDED,\n);\n\n/** Paths shared by `scoutProfileSchema` and `analystProfileSchema`. */\nconst matchingFields = {\n languages: { type: [languageCode], required: true, default: [] },\n regions: { type: [String], required: true, default: [] },\n timezone: { type: String, required: true, maxlength: 64 },\n availability: { type: [availabilityWindowSchema], required: true, default: [] },\n platformAccess: { type: platformAccessSchema, required: true, default: () => ({}) },\n profession: { type: String, maxlength: 120 },\n taskLimit: { type: Number, min: 1, max: 100 },\n};\n\nexport const sourceRatingSchema = new Schema<ToDoc<SourceRating>>(\n {\n relevance: { type: Number, required: true, min: 0, max: 5 },\n reliability: { type: Number, required: true, min: 0, max: 5 },\n language: languageCode,\n },\n EMBEDDED,\n);\n\nexport const discoveredBySchema = new Schema<ToDoc<DiscoveredBy>>(\n {\n type: { type: String, enum: DISCOVERED_BY_TYPE_VALUES, required: true },\n userId: clerkUserIdOptional,\n importId: { type: ObjectId },\n },\n EMBEDDED,\n);\n\nexport const sourceImportSummarySchema = new Schema<ToDoc<SourceImportSummary>>(\n {\n toCreate: { type: Number, required: true, default: 0, min: 0 },\n toUpdate: { type: Number, required: true, default: 0, min: 0 },\n duplicates: { type: Number, required: true, default: 0, min: 0 },\n invalid: { type: Number, required: true, default: 0, min: 0 },\n },\n EMBEDDED,\n);\n\nexport const sourceImportRowErrorSchema = new Schema<ToDoc<SourceImportRowError>>(\n {\n row: { type: Number, required: true, min: 0 },\n field: { type: String, required: true },\n message: { type: String, required: true },\n },\n EMBEDDED,\n);\n\nexport const collectorSchema = new Schema<ToDoc<Collector>>(\n {\n type: { type: String, enum: COLLECTOR_TYPE_VALUES, required: true },\n id: { type: String, required: true },\n },\n EMBEDDED,\n);\n\nexport const dataItemContentSchema = new Schema<ToDoc<DataItemContent>>(\n {\n text: { type: String },\n lang: languageCode,\n mediaUrls: { type: [String] },\n transcript: { type: String },\n },\n EMBEDDED,\n);\n\nexport const dataItemEntitySchema = new Schema<ToDoc<DataItemEntity>>(\n {\n type: { type: String, required: true },\n value: { type: String, required: true },\n },\n EMBEDDED,\n);\n\nexport const geoSchema = new Schema<ToDoc<Geo>>(\n {\n lat: { type: Number, required: true, min: -90, max: 90 },\n lng: { type: Number, required: true, min: -180, max: 180 },\n place: { type: String },\n },\n EMBEDDED,\n);\n\nexport const deploymentStepSchema = new Schema<ToDoc<DeploymentStep>>(\n {\n name: { type: String, required: true },\n status: { type: String, required: true },\n at: { type: Date, required: true },\n log: { type: String },\n },\n EMBEDDED,\n);\n\nexport const auditTargetSchema = new Schema<ToDoc<AuditTarget>>(\n {\n type: { type: String, required: true },\n id: { type: String, required: true },\n },\n EMBEDDED,\n);\n\n// ---------------------------------------------------------------------------\n// Collections\n// ---------------------------------------------------------------------------\n\nexport const databaseSchema = new Schema<DatabaseDoc>(\n {\n orgId: clerkOrgId,\n name: { type: String, required: true, maxlength: 63, match: /^[^/\\\\. \"$*<>:|?]+$/ },\n connectionString: { type: String, required: true, match: /^mongodb(\\+srv)?:\\/\\/\\S+$/ },\n collections: {\n type: [{ type: String, enum: DATABASE_COLLECTION_VALUES }],\n required: true,\n default: () => [...DATABASE_COLLECTION_VALUES],\n },\n status: { type: String, enum: DATABASE_STATUS_VALUES, required: true, default: 'active' },\n createdBy: clerkUserId,\n deletedAt: { type: Date },\n },\n collectionOptions(COLLECTIONS.databases),\n);\napplyIndexes(databaseSchema, COLLECTIONS.databases);\n\nexport const missionSchema = new Schema<MissionDoc>(\n {\n orgId: clerkOrgId,\n title: { type: String, required: true, maxlength: 200 },\n description: { type: String, required: true, default: '' },\n priority: { type: String, enum: MISSION_PRIORITY_VALUES, required: true },\n status: { type: String, enum: MISSION_STATUS_VALUES, required: true, default: 'draft' },\n defaultCriteria: { type: taskCriteriaSchema, required: true },\n keywords: { type: [String], required: true, default: [] },\n targetDate: { type: Date },\n createdBy: clerkUserId,\n deletedAt: { type: Date },\n },\n collectionOptions(COLLECTIONS.missions),\n);\napplyIndexes(missionSchema, COLLECTIONS.missions);\n\nexport const taskSchema = new Schema<TaskDoc>(\n {\n orgId: clerkOrgId,\n missionId: { type: ObjectId, required: true },\n kind: { type: String, enum: TASK_KIND_VALUES, required: true },\n origin: { type: String, enum: TASK_ORIGIN_VALUES, required: true },\n title: { type: String, required: true, maxlength: 200 },\n description: { type: String, required: true, default: '' },\n keywords: { type: [String], required: true, default: [] },\n searchQueries: { type: [String], required: true, default: [] },\n criteria: { type: taskCriteriaSchema, required: true },\n target: { type: taskTargetSchema },\n captureWindow: { type: captureWindowSchema },\n status: { type: String, enum: TASK_STATUS_VALUES, required: true, default: 'draft' },\n approvedBy: clerkUserIdOptional,\n approvedAt: { type: Date },\n doneBy: clerkUserIdOptional,\n doneAt: { type: Date },\n version: { type: Number, required: true, default: 1, min: 1 },\n deletedAt: { type: Date },\n },\n collectionOptions(COLLECTIONS.tasks),\n);\napplyIndexes(taskSchema, COLLECTIONS.tasks);\n\n/** Query ops on which `incrementTaskVersion` is registered. */\nexport const TASK_VERSION_HOOK_OPS = ['findOneAndUpdate', 'updateOne'] as const;\n\n/**\n * Pre-update hook: bumps `version` by 1 on every edit via `$inc`, unless the\n * update already sets or increments `version` explicitly, or is an\n * aggregation-pipeline update.\n */\nexport function incrementTaskVersion(this: Pick<Query<unknown, unknown>, 'getUpdate' | 'setUpdate'>): void {\n const update = this.getUpdate();\n if (!update || Array.isArray(update)) return;\n const u = update as UpdateQuery<Record<string, unknown>>;\n const touchesVersion =\n 'version' in u ||\n (u.$set !== undefined && 'version' in u.$set) ||\n (u.$inc !== undefined && 'version' in u.$inc) ||\n (u.$setOnInsert !== undefined && 'version' in u.$setOnInsert) ||\n (u.$unset !== undefined && 'version' in u.$unset);\n if (touchesVersion) return;\n this.setUpdate({ ...u, $inc: { ...(u.$inc ?? {}), version: 1 } });\n}\n\nfor (const op of TASK_VERSION_HOOK_OPS) {\n taskSchema.pre(op, incrementTaskVersion);\n}\n\nexport const assignmentSchema = new Schema<AssignmentDoc>(\n {\n orgId: clerkOrgId,\n taskId: { type: ObjectId, required: true },\n assigneeType: { type: String, enum: ASSIGNEE_TYPE_VALUES, required: true },\n assigneeUserId: clerkUserId,\n status: { type: String, enum: ASSIGNMENT_STATUS_VALUES, required: true, default: 'active' },\n score: { type: Number },\n scoreBreakdown: { type: Mixed },\n source: { type: String, enum: ASSIGNMENT_SOURCE_VALUES, required: true },\n assignedBy: clerkUserId,\n activatedAt: { type: Date, required: true },\n endedAt: { type: Date },\n revokedBy: clerkUserIdOptional,\n deletedAt: { type: Date },\n },\n collectionOptions(COLLECTIONS.assignments),\n);\napplyIndexes(assignmentSchema, COLLECTIONS.assignments);\n\nexport const hoursLogSchema = new Schema<HoursLogDoc>(\n {\n orgId: clerkOrgId,\n taskId: { type: ObjectId, required: true },\n scoutUserId: clerkUserId,\n minutes: { type: Number, required: true, min: 1, validate: Number.isInteger },\n note: { type: String, required: true, default: '' },\n date: { type: Date, required: true },\n assignmentId: { type: ObjectId },\n source: { type: String, enum: HOURS_LOG_SOURCE_VALUES },\n deletedAt: { type: Date },\n },\n collectionOptions(COLLECTIONS.hoursLogs),\n);\napplyIndexes(hoursLogSchema, COLLECTIONS.hoursLogs);\n\nexport const scoutProfileSchema = new Schema<ScoutProfileDoc>(\n {\n userId: clerkUserId,\n email: { type: String, required: true, lowercase: true, trim: true, maxlength: 254 },\n fullName: { type: String, trim: true, maxlength: 120 },\n displayName: { type: String, required: true, maxlength: 120 },\n status: { type: String, enum: SCOUT_STATUS_VALUES, required: true, default: 'active' },\n vettingStatus: { type: String, enum: VETTING_STATUS_VALUES, required: true, default: 'pending' },\n ...matchingFields,\n hourlyRateUsd: { type: Number, min: 0 },\n systemRecommendation: { type: systemRecommendationSchema },\n ratingSummary: { type: ratingSummarySchema, required: true, default: () => ({}) },\n deletedAt: { type: Date },\n },\n collectionOptions(COLLECTIONS.scoutProfiles),\n);\napplyIndexes(scoutProfileSchema, COLLECTIONS.scoutProfiles);\n\nexport const analystProfileSchema = new Schema<AnalystProfileDoc>(\n {\n orgId: clerkOrgId,\n userId: clerkUserId,\n displayName: { type: String, required: true, maxlength: 120 },\n ...matchingFields,\n deletedAt: { type: Date },\n },\n collectionOptions(COLLECTIONS.analystProfiles),\n);\napplyIndexes(analystProfileSchema, COLLECTIONS.analystProfiles);\n\nexport const orgSettingsSchema = new Schema<OrgSettingsDoc>(\n {\n orgId: clerkOrgId,\n defaultAnalystTaskLimit: {\n type: Number,\n required: true,\n default: DEFAULT_ANALYST_TASK_LIMIT,\n min: 1,\n max: 100,\n },\n timezone: { type: String, required: true, default: 'UTC', maxlength: 64 },\n },\n collectionOptions(COLLECTIONS.orgSettings),\n);\napplyIndexes(orgSettingsSchema, COLLECTIONS.orgSettings);\n\nexport const scoutRatingSchema = new Schema<ScoutRatingDoc>(\n {\n scoutUserId: clerkUserId,\n orgId: { type: String, match: /^org_[A-Za-z0-9]+$/ },\n assignmentId: { type: ObjectId },\n taskId: { type: ObjectId },\n raterUserId: clerkUserId,\n raterType: { type: String, enum: RATER_TYPE_VALUES, required: true },\n score: { type: Number, enum: [1, 2, 3, 4, 5], required: true },\n comment: { type: String, maxlength: MAX_RATING_COMMENT_LENGTH },\n },\n collectionOptions(COLLECTIONS.scoutRatings),\n);\napplyIndexes(scoutRatingSchema, COLLECTIONS.scoutRatings);\n\nexport const assigneeLoadSchema = new Schema<AssigneeLoadDoc>(\n {\n userId: clerkUserId,\n scope: { type: String, required: true, match: /^(global|org_[A-Za-z0-9]+)$/ },\n active: { type: Number, required: true, default: 0, min: 0 },\n },\n collectionOptions(COLLECTIONS.assigneeLoads),\n);\napplyIndexes(assigneeLoadSchema, COLLECTIONS.assigneeLoads);\n\nexport const sourceSchema = new Schema<SourceDoc>(\n {\n orgId: clerkOrgId,\n databaseId,\n missionIds: { type: [ObjectId], required: true, default: [] },\n taskIds: { type: [ObjectId], required: true, default: [] },\n platform: { type: String, enum: PLATFORM_VALUES, required: true },\n url: { type: String, required: true },\n handle: { type: String },\n type: { type: String, enum: SOURCE_TYPE_VALUES, required: true },\n access: { type: String, enum: SOURCE_ACCESS_VALUES, required: true },\n route: { type: String, enum: SOURCE_ROUTE_VALUES, required: true },\n scraperId: { type: ObjectId },\n rating: { type: sourceRatingSchema },\n tags: { type: [String], required: true, default: [] },\n status: { type: String, enum: SOURCE_STATUS_VALUES, required: true, default: 'active' },\n discoveredBy: { type: discoveredBySchema, required: true },\n lastCollectedAt: { type: Date },\n nextVisitAt: { type: Date },\n visitIntervalMs: { type: Number, min: 1 },\n deletedAt: { type: Date },\n },\n collectionOptions(COLLECTIONS.sources),\n);\napplyIndexes(sourceSchema, COLLECTIONS.sources);\n\nexport const sourceImportSchema = new Schema<SourceImportDoc>(\n {\n orgId: clerkOrgId,\n kind: { type: String, enum: SOURCE_IMPORT_KIND_VALUES, required: true },\n fileName: { type: String, required: true },\n rowCount: { type: Number, required: true, min: 0 },\n status: { type: String, enum: SOURCE_IMPORT_STATUS_VALUES, required: true, default: 'validating' },\n summary: { type: sourceImportSummarySchema, required: true, default: () => ({}) },\n rowErrors: {\n type: [sourceImportRowErrorSchema],\n required: true,\n default: [],\n validate: {\n validator: (v: unknown[]) => v.length <= MAX_SOURCE_IMPORT_ROW_ERRORS,\n message: `rowErrors may hold at most ${MAX_SOURCE_IMPORT_ROW_ERRORS} entries`,\n },\n },\n createdBy: clerkUserId,\n committedAt: { type: Date },\n deletedAt: { type: Date },\n },\n collectionOptions(COLLECTIONS.sourceImports),\n);\napplyIndexes(sourceImportSchema, COLLECTIONS.sourceImports);\n\nexport const dataItemSchema = new Schema<DataItemDoc>(\n {\n orgId: clerkOrgId,\n databaseId,\n sourceId: { type: ObjectId, required: true },\n missionIds: { type: [ObjectId], required: true, default: [] },\n taskId: { type: ObjectId },\n platform: { type: String, enum: PLATFORM_VALUES, required: true },\n collectedAt: { type: Date, required: true },\n publishedAt: { type: Date },\n collector: { type: collectorSchema, required: true },\n content: { type: dataItemContentSchema, required: true, default: () => ({}) },\n entities: { type: [dataItemEntitySchema] },\n geo: { type: geoSchema },\n priorityFlag: { type: Boolean },\n contentHash: { type: String, match: /^[0-9a-f]{64}$/ },\n },\n collectionOptions(COLLECTIONS.dataItems),\n);\napplyIndexes(dataItemSchema, COLLECTIONS.dataItems);\n\nexport const scraperSchema = new Schema<ScraperDoc>(\n {\n orgId: clerkOrgId,\n platform: { type: String, enum: PLATFORM_VALUES, required: true },\n name: { type: String, required: true, maxlength: 120 },\n sourceLimit: { type: Number, required: true, min: 1 },\n sourceCount: { type: Number, required: true, default: 0, min: 0 },\n status: { type: String, enum: SCRAPER_STATUS_VALUES, required: true, default: 'deploying' },\n deploymentId: { type: ObjectId },\n version: { type: String, required: true },\n deletedAt: { type: Date },\n },\n collectionOptions(COLLECTIONS.scrapers),\n);\napplyIndexes(scraperSchema, COLLECTIONS.scrapers);\n\nexport const scraperMetricSchema = new Schema<ScraperMetricDoc>(\n {\n orgId: clerkOrgId,\n scraperId: { type: ObjectId, required: true },\n hour: { type: Date, required: true },\n itemsCollected: { type: Number, required: true, min: 0 },\n errors: { type: Number, required: true, min: 0 },\n blocked: { type: Number, required: true, min: 0 },\n p95LatencyMs: { type: Number, required: true, min: 0 },\n },\n // `errors` is a reserved Mongoose pathname; the spec names the field so we keep it.\n { ...collectionOptions(COLLECTIONS.scraperMetrics), suppressReservedKeysWarning: true },\n);\napplyIndexes(scraperMetricSchema, COLLECTIONS.scraperMetrics);\n\nexport const deploymentSchema = new Schema<DeploymentDoc>(\n {\n orgId: clerkOrgId,\n kind: { type: String, enum: DEPLOYMENT_KIND_VALUES, required: true },\n status: { type: String, enum: DEPLOYMENT_STATUS_VALUES, required: true, default: 'queued' },\n steps: { type: [deploymentStepSchema], required: true, default: [] },\n requestedBy: clerkUserId,\n deletedAt: { type: Date },\n },\n collectionOptions(COLLECTIONS.deployments),\n);\napplyIndexes(deploymentSchema, COLLECTIONS.deployments);\n\nexport const auditLogSchema = new Schema<AuditLogDoc>(\n {\n orgId: { type: String, match: /^org_[A-Za-z0-9]+$/ },\n actorUserId: clerkUserId,\n actingAsSystem: { type: Boolean, required: true, default: false },\n action: { type: String, required: true },\n target: { type: auditTargetSchema, required: true },\n diff: { type: Mixed },\n at: { type: Date, required: true },\n deletedAt: { type: Date },\n },\n collectionOptions(COLLECTIONS.auditLogs),\n);\napplyIndexes(auditLogSchema, COLLECTIONS.auditLogs);\n\n// ---------------------------------------------------------------------------\n// Badger Agent runtime\n// ---------------------------------------------------------------------------\n\nconst counter = { type: Number, required: true, default: 0, min: 0 } as const;\n\nexport const agentSessionStatsSchema = new Schema<ToDoc<AgentSessionStats>>(\n {\n capturesCount: counter,\n sourcesFound: counter,\n sourcesToScraper: counter,\n sourcesToMonitor: counter,\n sourcesWaiting: counter,\n sourcesKnown: counter,\n sourcesDropped: counter,\n itemsSaved: counter,\n priorityItems: counter,\n sourcesVisited: counter,\n sourcesRemaining: counter,\n },\n EMBEDDED,\n);\n\nexport const agentSessionBudgetSchema = new Schema<ToDoc<AgentSessionBudget>>(\n {\n tokens: counter,\n costUsd: { type: Number, required: true, default: 0, min: 0 },\n },\n EMBEDDED,\n);\n\nexport const agentSessionSchema = new Schema<AgentSessionDoc>(\n {\n orgId: clerkOrgId,\n missionId: { type: ObjectId, required: true },\n taskId: { type: ObjectId, required: true },\n assignmentId: { type: ObjectId, required: true },\n userId: clerkUserId,\n mode: { type: String, enum: AGENT_SESSION_MODE_VALUES, required: true },\n status: { type: String, enum: AGENT_SESSION_STATUS_VALUES, required: true, default: 'active' },\n startedAt: { type: Date, required: true },\n endedAt: { type: Date },\n lastActivityAt: { type: Date, required: true },\n activeMinutes: counter,\n lastSeq: counter,\n stats: { type: agentSessionStatsSchema, required: true, default: () => ({}) },\n budget: { type: agentSessionBudgetSchema, required: true, default: () => ({}) },\n captureWindow: { type: coverageWindowSchema },\n state: { type: Mixed },\n },\n collectionOptions(COLLECTIONS.agentSessions),\n);\napplyIndexes(agentSessionSchema, COLLECTIONS.agentSessions);\n\nexport const agentMessageSchema = new Schema<AgentMessageDoc>(\n {\n orgId: clerkOrgId,\n sessionId: { type: ObjectId, required: true },\n seq: { type: Number, required: true, min: 1, validate: Number.isInteger },\n role: { type: String, enum: AGENT_MESSAGE_ROLE_VALUES, required: true },\n kind: { type: String, enum: AGENT_MESSAGE_KIND_VALUES, required: true },\n text: { type: String, required: true, default: '', maxlength: MAX_AGENT_MESSAGE_TEXT_LENGTH },\n // Discriminated union in Zod (`AgentCardSchema`); validated at the API boundary.\n cards: { type: [Mixed], required: true, default: [] } as unknown as [typeof Mixed],\n },\n collectionOptions(COLLECTIONS.agentMessages),\n);\napplyIndexes(agentMessageSchema, COLLECTIONS.agentMessages);\n\nexport const blobRefSchema = new Schema<ToDoc<BlobRef>>(\n {\n bucket: { type: String, required: true, minlength: 1 },\n key: { type: String, required: true, minlength: 1 },\n contentType: { type: String, required: true, minlength: 1 },\n bytes: { type: Number, required: true, min: 0 },\n },\n EMBEDDED,\n);\n\nexport const captureRegionSchema = new Schema<ToDoc<CaptureRegion>>(\n {\n x: { type: Number, required: true, min: 0 },\n y: { type: Number, required: true, min: 0 },\n w: { type: Number, required: true, min: 0 },\n h: { type: Number, required: true, min: 0 },\n viewportW: { type: Number, required: true, min: 0 },\n viewportH: { type: Number, required: true, min: 0 },\n dpr: { type: Number, required: true, min: 0 },\n },\n EMBEDDED,\n);\n\nexport const captureDomSummarySchema = new Schema<ToDoc<CaptureDomSummary>>(\n {\n blocks: { type: Number, required: true, min: 0 },\n links: { type: Number, required: true, min: 0 },\n bytes: { type: Number, required: true, min: 0 },\n lang: languageCode,\n },\n EMBEDDED,\n);\n\nexport const captureSchema = new Schema<CaptureDoc>(\n {\n orgId: clerkOrgId,\n sessionId: { type: ObjectId },\n assignmentId: { type: ObjectId },\n taskId: { type: ObjectId },\n missionId: { type: ObjectId },\n userId: clerkUserIdOptional,\n url: { type: String, required: true },\n title: { type: String, required: true, default: '', maxlength: 500 },\n capturedAt: { type: Date, required: true },\n imageRef: { type: blobRefSchema, required: true },\n sha256: { type: String, required: true, match: /^[0-9a-f]{64}$/ },\n region: { type: captureRegionSchema },\n domRef: { type: blobRefSchema },\n domStatus: { type: String, enum: CAPTURE_DOM_STATUS_VALUES, required: true, default: 'unavailable' },\n domSummary: { type: captureDomSummarySchema },\n status: { type: String, enum: CAPTURE_STATUS_VALUES, required: true, default: 'uploaded' },\n analysis: { type: Mixed },\n error: { type: String, maxlength: 1000 },\n attempts: { type: Number, required: true, default: 0, min: 0, validate: Number.isInteger },\n claimedAt: { type: Date },\n expiresAt: { type: Date, required: true },\n },\n collectionOptions(COLLECTIONS.captures),\n);\napplyIndexes(captureSchema, COLLECTIONS.captures);\n\nexport const llmUsageSchema = new Schema<ToDoc<LlmUsage>>(\n {\n inputTokens: counter,\n outputTokens: counter,\n totalTokens: counter,\n },\n EMBEDDED,\n);\n\nexport const llmCallSchema = new Schema<LlmCallDoc>(\n {\n orgId: { type: String, match: /^org_[A-Za-z0-9]+$/ },\n sessionId: { type: ObjectId },\n capability: { type: String, enum: LLM_CAPABILITY_VALUES, required: true },\n provider: { type: String, enum: LLM_PROVIDER_VALUES, required: true },\n model: { type: String, required: true, minlength: 1 },\n promptVersion: { type: String, required: true, minlength: 1 },\n attempt: { type: Number, required: true, min: 1, validate: Number.isInteger },\n fallbackChain: { type: [{ type: String, enum: LLM_PROVIDER_VALUES }], required: true, default: [] },\n usage: { type: llmUsageSchema, required: true, default: () => ({}) },\n latencyMs: { type: Number, required: true, min: 0 },\n costUsdEstimate: { type: Number, min: 0 },\n outcome: { type: String, enum: LLM_OUTCOME_VALUES, required: true },\n errorCode: { type: String, maxlength: 120 },\n },\n collectionOptions(COLLECTIONS.llmCalls),\n);\napplyIndexes(llmCallSchema, COLLECTIONS.llmCalls);\n\n/** Every collection schema, keyed by collection name. */\nexport const SCHEMAS = {\n [COLLECTIONS.databases]: databaseSchema,\n [COLLECTIONS.missions]: missionSchema,\n [COLLECTIONS.tasks]: taskSchema,\n [COLLECTIONS.assignments]: assignmentSchema,\n [COLLECTIONS.hoursLogs]: hoursLogSchema,\n [COLLECTIONS.scoutProfiles]: scoutProfileSchema,\n [COLLECTIONS.analystProfiles]: analystProfileSchema,\n [COLLECTIONS.orgSettings]: orgSettingsSchema,\n [COLLECTIONS.scoutRatings]: scoutRatingSchema,\n [COLLECTIONS.assigneeLoads]: assigneeLoadSchema,\n [COLLECTIONS.sources]: sourceSchema,\n [COLLECTIONS.sourceImports]: sourceImportSchema,\n [COLLECTIONS.dataItems]: dataItemSchema,\n [COLLECTIONS.scrapers]: scraperSchema,\n [COLLECTIONS.scraperMetrics]: scraperMetricSchema,\n [COLLECTIONS.deployments]: deploymentSchema,\n [COLLECTIONS.auditLogs]: auditLogSchema,\n [COLLECTIONS.agentSessions]: agentSessionSchema,\n [COLLECTIONS.agentMessages]: agentMessageSchema,\n [COLLECTIONS.captures]: captureSchema,\n [COLLECTIONS.llmCalls]: llmCallSchema,\n} as const satisfies Record<CollectionName, Schema>;\n","import type { Connection, Model, Schema } from 'mongoose';\nimport {\n agentMessageSchema,\n agentSessionSchema,\n analystProfileSchema,\n assigneeLoadSchema,\n assignmentSchema,\n auditLogSchema,\n captureSchema,\n databaseSchema,\n dataItemSchema,\n deploymentSchema,\n hoursLogSchema,\n llmCallSchema,\n missionSchema,\n orgSettingsSchema,\n scoutProfileSchema,\n scoutRatingSchema,\n scraperMetricSchema,\n scraperSchema,\n sourceImportSchema,\n sourceSchema,\n taskSchema,\n type AgentMessageDoc,\n type AgentSessionDoc,\n type AnalystProfileDoc,\n type AssigneeLoadDoc,\n type AssignmentDoc,\n type AuditLogDoc,\n type CaptureDoc,\n type DatabaseDoc,\n type DataItemDoc,\n type DeploymentDoc,\n type HoursLogDoc,\n type LlmCallDoc,\n type MissionDoc,\n type OrgSettingsDoc,\n type ScoutProfileDoc,\n type ScoutRatingDoc,\n type ScraperDoc,\n type ScraperMetricDoc,\n type SourceDoc,\n type SourceImportDoc,\n type TaskDoc,\n} from './schemas';\n\n/** Mongoose model names (PascalCase singular). */\nexport const MODEL_NAMES = {\n Database: 'Database',\n Mission: 'Mission',\n Task: 'Task',\n Assignment: 'Assignment',\n HoursLog: 'HoursLog',\n ScoutProfile: 'ScoutProfile',\n AnalystProfile: 'AnalystProfile',\n OrgSettings: 'OrgSettings',\n ScoutRating: 'ScoutRating',\n AssigneeLoad: 'AssigneeLoad',\n Source: 'Source',\n SourceImport: 'SourceImport',\n DataItem: 'DataItem',\n Scraper: 'Scraper',\n ScraperMetric: 'ScraperMetric',\n Deployment: 'Deployment',\n AuditLog: 'AuditLog',\n AgentSession: 'AgentSession',\n AgentMessage: 'AgentMessage',\n Capture: 'Capture',\n LlmCall: 'LlmCall',\n} as const;\nexport type ModelName = keyof typeof MODEL_NAMES;\n\nexport type DatabaseModel = Model<DatabaseDoc>;\nexport type MissionModel = Model<MissionDoc>;\nexport type TaskModel = Model<TaskDoc>;\nexport type AssignmentModel = Model<AssignmentDoc>;\nexport type HoursLogModel = Model<HoursLogDoc>;\nexport type ScoutProfileModel = Model<ScoutProfileDoc>;\nexport type AnalystProfileModel = Model<AnalystProfileDoc>;\nexport type OrgSettingsModel = Model<OrgSettingsDoc>;\nexport type ScoutRatingModel = Model<ScoutRatingDoc>;\nexport type AssigneeLoadModel = Model<AssigneeLoadDoc>;\nexport type SourceModel = Model<SourceDoc>;\nexport type SourceImportModel = Model<SourceImportDoc>;\nexport type DataItemModel = Model<DataItemDoc>;\nexport type ScraperModel = Model<ScraperDoc>;\nexport type ScraperMetricModel = Model<ScraperMetricDoc>;\nexport type DeploymentModel = Model<DeploymentDoc>;\nexport type AuditLogModel = Model<AuditLogDoc>;\nexport type AgentSessionModel = Model<AgentSessionDoc>;\nexport type AgentMessageModel = Model<AgentMessageDoc>;\nexport type CaptureModel = Model<CaptureDoc>;\nexport type LlmCallModel = Model<LlmCallDoc>;\n\nexport type HarvesterModels = {\n Database: DatabaseModel;\n Mission: MissionModel;\n Task: TaskModel;\n Assignment: AssignmentModel;\n HoursLog: HoursLogModel;\n ScoutProfile: ScoutProfileModel;\n AnalystProfile: AnalystProfileModel;\n OrgSettings: OrgSettingsModel;\n ScoutRating: ScoutRatingModel;\n AssigneeLoad: AssigneeLoadModel;\n Source: SourceModel;\n SourceImport: SourceImportModel;\n DataItem: DataItemModel;\n Scraper: ScraperModel;\n ScraperMetric: ScraperMetricModel;\n Deployment: DeploymentModel;\n AuditLog: AuditLogModel;\n AgentSession: AgentSessionModel;\n AgentMessage: AgentMessageModel;\n Capture: CaptureModel;\n LlmCall: LlmCallModel;\n};\n\nfunction getOrCreate<T>(conn: Connection, name: ModelName, schema: Schema<T>): Model<T> {\n const existing = conn.models[name] as Model<T> | undefined;\n return existing ?? conn.model<T>(name, schema);\n}\n\n/**\n * Registers every Harvester model on `conn` and returns them, fully typed.\n * Idempotent: reuses `conn.models[name]` when already registered. Never\n * connects; the caller owns the connection lifecycle.\n */\nexport function registerModels(conn: Connection): HarvesterModels {\n return {\n Database: getOrCreate(conn, MODEL_NAMES.Database, databaseSchema),\n Mission: getOrCreate(conn, MODEL_NAMES.Mission, missionSchema),\n Task: getOrCreate(conn, MODEL_NAMES.Task, taskSchema),\n Assignment: getOrCreate(conn, MODEL_NAMES.Assignment, assignmentSchema),\n HoursLog: getOrCreate(conn, MODEL_NAMES.HoursLog, hoursLogSchema),\n ScoutProfile: getOrCreate(conn, MODEL_NAMES.ScoutProfile, scoutProfileSchema),\n AnalystProfile: getOrCreate(conn, MODEL_NAMES.AnalystProfile, analystProfileSchema),\n OrgSettings: getOrCreate(conn, MODEL_NAMES.OrgSettings, orgSettingsSchema),\n ScoutRating: getOrCreate(conn, MODEL_NAMES.ScoutRating, scoutRatingSchema),\n AssigneeLoad: getOrCreate(conn, MODEL_NAMES.AssigneeLoad, assigneeLoadSchema),\n Source: getOrCreate(conn, MODEL_NAMES.Source, sourceSchema),\n SourceImport: getOrCreate(conn, MODEL_NAMES.SourceImport, sourceImportSchema),\n DataItem: getOrCreate(conn, MODEL_NAMES.DataItem, dataItemSchema),\n Scraper: getOrCreate(conn, MODEL_NAMES.Scraper, scraperSchema),\n ScraperMetric: getOrCreate(conn, MODEL_NAMES.ScraperMetric, scraperMetricSchema),\n Deployment: getOrCreate(conn, MODEL_NAMES.Deployment, deploymentSchema),\n AuditLog: getOrCreate(conn, MODEL_NAMES.AuditLog, auditLogSchema),\n AgentSession: getOrCreate(conn, MODEL_NAMES.AgentSession, agentSessionSchema),\n AgentMessage: getOrCreate(conn, MODEL_NAMES.AgentMessage, agentMessageSchema),\n Capture: getOrCreate(conn, MODEL_NAMES.Capture, captureSchema),\n LlmCall: getOrCreate(conn, MODEL_NAMES.LlmCall, llmCallSchema),\n };\n}\n"]}