@maximem/synap-js-sdk 0.4.2 → 0.4.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/anticipation-cache-ARYEEKMU.cjs.map +1 -1
- package/dist/chunk-HR5Y3KXS.cjs.map +1 -1
- package/dist/chunk-RB57I2IQ.cjs.map +1 -1
- package/dist/chunk-VXRCBMCY.cjs.map +1 -1
- package/dist/chunk-ZKOJDUN4.cjs.map +1 -1
- package/dist/env-55ULHNJZ.cjs.map +1 -1
- package/dist/grpc/index.cjs.map +1 -1
- package/dist/index.cjs +50 -3
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +12 -0
- package/dist/index.d.ts +12 -0
- package/dist/index.js +49 -2
- package/dist/index.js.map +1 -1
- package/dist/stream-client-ZN6ADZBR.cjs.map +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["/Users/anish/maximemai/maximem_synap/synap/sdk/js/dist/chunk-VXRCBMCY.cjs","../src/grpc/descriptor.ts","../src/grpc/stream-client.ts"],"names":[],"mappings":"AAAA;ACaO,IAAM,UAAA,EAAY,kBAAA;AAElB,IAAM,uBAAA,EAAyB;AAAA,EACpC,QAAA,EAAU;AAAA,IACR,OAAA,EAAS;AAAA,MACP,QAAA,EAAU;AAAA,QACR,IAAA,EAAM;AAAA,UACJ,QAAA,EAAU;AAAA,YACR,cAAA,EAAgB;AAAA,cACd,SAAA,EAAW;AAAA,gBACT,QAAA,EAAU;AAAA,kBACR,aAAA,EAAe,aAAA;AAAA,kBACf,eAAA,EAAiB,IAAA;AAAA,kBACjB,cAAA,EAAgB,gBAAA;AAAA,kBAChB,gBAAA,EAAkB;AAAA,gBACpB,CAAA;AAAA,gBACA,iBAAA,EAAmB;AAAA,kBACjB,aAAA,EAAe,gBAAA;AAAA,kBACf,eAAA,EAAiB,IAAA;AAAA,kBACjB,cAAA,EAAgB;AAAA,gBAClB;AAAA,cACF;AAAA,YACF,CAAA;AAAA,YACA,aAAA,EAAe;AAAA,cACb,QAAA,EAAU;AAAA,gBACR,SAAA,EAAW;AAAA,kBACT,OAAA,EAAS;AAAA,oBACP,oBAAA;AAAA,oBACA,gBAAA;AAAA,oBACA,iBAAA;AAAA,oBACA,cAAA;AAAA,oBACA;AAAA,kBACF;AAAA,gBACF;AAAA,cACF,CAAA;AAAA,cACA,QAAA,EAAU;AAAA,gBACR,oBAAA,EAAsB;AAAA,kBACpB,MAAA,EAAQ,mBAAA;AAAA,kBACR,IAAA,EAAM;AAAA,gBACR,CAAA;AAAA,gBACA,gBAAA,EAAkB;AAAA,kBAChB,MAAA,EAAQ,eAAA;AAAA,kBACR,IAAA,EAAM;AAAA,gBACR,CAAA;AAAA,gBACA,iBAAA,EAAmB;AAAA,kBACjB,MAAA,EAAQ,gBAAA;AAAA,kBACR,IAAA,EAAM;AAAA,gBACR,CAAA;AAAA,gBACA,cAAA,EAAgB;AAAA,kBACd,MAAA,EAAQ,kBAAA;AAAA,kBACR,IAAA,EAAM;AAAA,gBACR,CAAA;AAAA,gBACA,mBAAA,EAAqB;AAAA,kBACnB,MAAA,EAAQ,uBAAA;AAAA,kBACR,IAAA,EAAM;AAAA,gBACR;AAAA,cACF;AAAA,YACF,CAAA;AAAA,YACA,kBAAA,EAAoB;AAAA,cAClB,QAAA,EAAU;AAAA,gBACR,WAAA,EAAa;AAAA,kBACX,MAAA,EAAQ,QAAA;AAAA,kBACR,IAAA,EAAM;AAAA,gBACR,CAAA;AAAA,gBACA,iBAAA,EAAmB;AAAA,kBACjB,MAAA,EAAQ,QAAA;AAAA,kBACR,IAAA,EAAM;AAAA,gBACR,CAAA;AAAA,gBACA,SAAA,EAAW;AAAA,kBACT,MAAA,EAAQ,QAAA;AAAA,kBACR,IAAA,EAAM;AAAA,gBACR,CAAA;AAAA,gBACA,aAAA,EAAe;AAAA,kBACb,MAAA,EAAQ,QAAA;AAAA,kBACR,IAAA,EAAM;AAAA,gBACR,CAAA;AAAA,gBACA,iBAAA,EAAmB;AAAA,kBACjB,MAAA,EAAQ,UAAA;AAAA,kBACR,MAAA,EAAQ,QAAA;AAAA,kBACR,IAAA,EAAM;AAAA,gBACR,CAAA;AAAA,gBACA,cAAA,EAAgB;AAAA,kBACd,MAAA,EAAQ,OAAA;AAAA,kBACR,IAAA,EAAM;AAAA,gBACR,CAAA;AAAA,gBACA,OAAA,EAAS;AAAA,kBACP,MAAA,EAAQ,QAAA;AAAA,kBACR,IAAA,EAAM;AAAA,gBACR,CAAA;AAAA,gBACA,mBAAA,EAAqB;AAAA,kBACnB,MAAA,EAAQ,UAAA;AAAA,kBACR,MAAA,EAAQ,QAAA;AAAA,kBACR,IAAA,EAAM;AAAA,gBACR;AAAA,cACF;AAAA,YACF,CAAA;AAAA,YACA,uBAAA,EAAyB;AAAA,cACvB,QAAA,EAAU;AAAA,gBACR,gBAAA,EAAkB;AAAA,kBAChB,MAAA,EAAQ,QAAA;AAAA,kBACR,IAAA,EAAM;AAAA,gBACR,CAAA;AAAA,gBACA,iBAAA,EAAmB;AAAA,kBACjB,MAAA,EAAQ,QAAA;AAAA,kBACR,IAAA,EAAM;AAAA,gBACR,CAAA;AAAA,gBACA,SAAA,EAAW;AAAA,kBACT,MAAA,EAAQ,QAAA;AAAA,kBACR,IAAA,EAAM;AAAA,gBACR,CAAA;AAAA,gBACA,aAAA,EAAe;AAAA,kBACb,MAAA,EAAQ,QAAA;AAAA,kBACR,IAAA,EAAM;AAAA,gBACR,CAAA;AAAA,gBACA,gBAAA,EAAkB;AAAA,kBAChB,MAAA,EAAQ,UAAA;AAAA,kBACR,MAAA,EAAQ,QAAA;AAAA,kBACR,IAAA,EAAM;AAAA,gBACR,CAAA;AAAA,gBACA,oBAAA,EAAsB;AAAA,kBACpB,MAAA,EAAQ,OAAA;AAAA,kBACR,IAAA,EAAM;AAAA,gBACR,CAAA;AAAA,gBACA,eAAA,EAAiB;AAAA,kBACf,MAAA,EAAQ,QAAA;AAAA,kBACR,IAAA,EAAM;AAAA,gBACR,CAAA;AAAA,gBACA,mBAAA,EAAqB;AAAA,kBACnB,MAAA,EAAQ,OAAA;AAAA,kBACR,IAAA,EAAM;AAAA,gBACR,CAAA;AAAA,gBACA,0BAAA,EAA4B;AAAA,kBAC1B,MAAA,EAAQ,QAAA;AAAA,kBACR,IAAA,EAAM;AAAA,gBACR,CAAA;AAAA,gBACA,iBAAA,EAAmB;AAAA,kBACjB,MAAA,EAAQ,QAAA;AAAA,kBACR,IAAA,EAAM;AAAA,gBACR,CAAA;AAAA,gBACA,sBAAA,EAAwB;AAAA,kBACtB,MAAA,EAAQ,OAAA;AAAA,kBACR,IAAA,EAAM;AAAA,gBACR,CAAA;AAAA,gBACA,WAAA,EAAa;AAAA,kBACX,MAAA,EAAQ,MAAA;AAAA,kBACR,IAAA,EAAM;AAAA,gBACR,CAAA;AAAA,gBACA,cAAA,EAAgB;AAAA,kBACd,MAAA,EAAQ,OAAA;AAAA,kBACR,IAAA,EAAM;AAAA,gBACR,CAAA;AAAA,gBACA,aAAA,EAAe;AAAA,kBACb,MAAA,EAAQ,QAAA;AAAA,kBACR,IAAA,EAAM;AAAA,gBACR;AAAA,cACF;AAAA,YACF,CAAA;AAAA,YACA,mBAAA,EAAqB;AAAA,cACnB,QAAA,EAAU;AAAA,gBACR,YAAA,EAAc;AAAA,kBACZ,MAAA,EAAQ,QAAA;AAAA,kBACR,IAAA,EAAM;AAAA,gBACR,CAAA;AAAA,gBACA,iBAAA,EAAmB;AAAA,kBACjB,MAAA,EAAQ,QAAA;AAAA,kBACR,IAAA,EAAM;AAAA,gBACR,CAAA;AAAA,gBACA,SAAA,EAAW;AAAA,kBACT,MAAA,EAAQ,QAAA;AAAA,kBACR,IAAA,EAAM;AAAA,gBACR,CAAA;AAAA,gBACA,MAAA,EAAQ;AAAA,kBACN,MAAA,EAAQ,QAAA;AAAA,kBACR,IAAA,EAAM;AAAA,gBACR,CAAA;AAAA,gBACA,SAAA,EAAW;AAAA,kBACT,MAAA,EAAQ,QAAA;AAAA,kBACR,IAAA,EAAM;AAAA,gBACR,CAAA;AAAA,gBACA,aAAA,EAAe;AAAA,kBACb,MAAA,EAAQ,QAAA;AAAA,kBACR,IAAA,EAAM;AAAA,gBACR,CAAA;AAAA,gBACA,YAAA,EAAc;AAAA,kBACZ,MAAA,EAAQ,QAAA;AAAA,kBACR,IAAA,EAAM;AAAA,gBACR,CAAA;AAAA,gBACA,UAAA,EAAY;AAAA,kBACV,SAAA,EAAW,QAAA;AAAA,kBACX,MAAA,EAAQ,QAAA;AAAA,kBACR,IAAA,EAAM;AAAA,gBACR,CAAA;AAAA,gBACA,cAAA,EAAgB;AAAA,kBACd,MAAA,EAAQ,OAAA;AAAA,kBACR,IAAA,EAAM;AAAA,gBACR,CAAA;AAAA,gBACA,WAAA,EAAa;AAAA,kBACX,MAAA,EAAQ,QAAA;AAAA,kBACR,IAAA,EAAM;AAAA,gBACR,CAAA;AAAA,gBACA,gBAAA,EAAkB;AAAA,kBAChB,MAAA,EAAQ,QAAA;AAAA,kBACR,IAAA,EAAM;AAAA,gBACR,CAAA;AAAA,gBACA,gBAAA,EAAkB;AAAA,kBAChB,MAAA,EAAQ,UAAA;AAAA,kBACR,MAAA,EAAQ,QAAA;AAAA,kBACR,IAAA,EAAM;AAAA,gBACR,CAAA;AAAA,gBACA,eAAA,EAAiB;AAAA,kBACf,MAAA,EAAQ,UAAA;AAAA,kBACR,MAAA,EAAQ,QAAA;AAAA,kBACR,IAAA,EAAM;AAAA,gBACR;AAAA,cACF;AAAA,YACF,CAAA;AAAA,YACA,eAAA,EAAiB;AAAA,cACf,QAAA,EAAU;AAAA,gBACR,cAAA,EAAgB;AAAA,kBACd,MAAA,EAAQ,OAAA;AAAA,kBACR,IAAA,EAAM;AAAA,gBACR;AAAA,cACF;AAAA,YACF,CAAA;AAAA,YACA,gBAAA,EAAkB;AAAA,cAChB,QAAA,EAAU;AAAA,gBACR,QAAA,EAAU;AAAA,kBACR,MAAA,EAAQ,QAAA;AAAA,kBACR,IAAA,EAAM;AAAA,gBACR,CAAA;AAAA,gBACA,YAAA,EAAc;AAAA,kBACZ,MAAA,EAAQ,QAAA;AAAA,kBACR,IAAA,EAAM;AAAA,gBACR,CAAA;AAAA,gBACA,iBAAA,EAAmB;AAAA,kBACjB,MAAA,EAAQ,QAAA;AAAA,kBACR,IAAA,EAAM;AAAA,gBACR,CAAA;AAAA,gBACA,SAAA,EAAW;AAAA,kBACT,MAAA,EAAQ,QAAA;AAAA,kBACR,IAAA,EAAM;AAAA,gBACR,CAAA;AAAA,gBACA,aAAA,EAAe;AAAA,kBACb,MAAA,EAAQ,QAAA;AAAA,kBACR,IAAA,EAAM;AAAA,gBACR;AAAA,cACF;AAAA,YACF,CAAA;AAAA,YACA,gBAAA,EAAkB;AAAA,cAChB,QAAA,EAAU;AAAA,gBACR,SAAA,EAAW;AAAA,kBACT,OAAA,EAAS;AAAA,oBACP,gBAAA;AAAA,oBACA,gBAAA;AAAA,oBACA;AAAA,kBACF;AAAA,gBACF;AAAA,cACF,CAAA;AAAA,cACA,QAAA,EAAU;AAAA,gBACR,gBAAA,EAAkB;AAAA,kBAChB,MAAA,EAAQ,oBAAA;AAAA,kBACR,IAAA,EAAM;AAAA,gBACR,CAAA;AAAA,gBACA,gBAAA,EAAkB;AAAA,kBAChB,MAAA,EAAQ,eAAA;AAAA,kBACR,IAAA,EAAM;AAAA,gBACR,CAAA;AAAA,gBACA,QAAA,EAAU;AAAA,kBACR,MAAA,EAAQ,cAAA;AAAA,kBACR,IAAA,EAAM;AAAA,gBACR;AAAA,cACF;AAAA,YACF,CAAA;AAAA,YACA,eAAA,EAAiB;AAAA,cACf,QAAA,EAAU;AAAA,gBACR,cAAA,EAAgB;AAAA,kBACd,MAAA,EAAQ,OAAA;AAAA,kBACR,IAAA,EAAM;AAAA,gBACR;AAAA,cACF;AAAA,YACF,CAAA;AAAA,YACA,cAAA,EAAgB;AAAA,cACd,QAAA,EAAU;AAAA,gBACR,aAAA,EAAe;AAAA,kBACb,MAAA,EAAQ,QAAA;AAAA,kBACR,IAAA,EAAM;AAAA,gBACR,CAAA;AAAA,gBACA,QAAA,EAAU;AAAA,kBACR,MAAA,EAAQ,QAAA;AAAA,kBACR,IAAA,EAAM;AAAA,gBACR,CAAA;AAAA,gBACA,UAAA,EAAY;AAAA,kBACV,SAAA,EAAW,QAAA;AAAA,kBACX,MAAA,EAAQ,QAAA;AAAA,kBACR,IAAA,EAAM;AAAA,gBACR;AAAA,cACF;AAAA,YACF,CAAA;AAAA,YACA,oBAAA,EAAsB;AAAA,cACpB,QAAA,EAAU;AAAA,gBACR,WAAA,EAAa;AAAA,kBACX,MAAA,EAAQ,QAAA;AAAA,kBACR,IAAA,EAAM;AAAA,gBACR,CAAA;AAAA,gBACA,aAAA,EAAe;AAAA,kBACb,MAAA,EAAQ,QAAA;AAAA,kBACR,IAAA,EAAM;AAAA,gBACR,CAAA;AAAA,gBACA,eAAA,EAAiB;AAAA,kBACf,SAAA,EAAW,QAAA;AAAA,kBACX,MAAA,EAAQ,iBAAA;AAAA,kBACR,IAAA,EAAM;AAAA,gBACR,CAAA;AAAA,gBACA,cAAA,EAAgB;AAAA,kBACd,MAAA,EAAQ,OAAA;AAAA,kBACR,IAAA,EAAM;AAAA,gBACR,CAAA;AAAA,gBACA,cAAA,EAAgB;AAAA,kBACd,MAAA,EAAQ,OAAA;AAAA,kBACR,IAAA,EAAM;AAAA,gBACR,CAAA;AAAA,gBACA,iBAAA,EAAmB;AAAA,kBACjB,MAAA,EAAQ,MAAA;AAAA,kBACR,IAAA,EAAM;AAAA,gBACR,CAAA;AAAA,gBACA,gBAAA,EAAkB;AAAA,kBAChB,MAAA,EAAQ,QAAA;AAAA,kBACR,IAAA,EAAM;AAAA,gBACR,CAAA;AAAA,gBACA,iBAAA,EAAmB;AAAA,kBACjB,MAAA,EAAQ,UAAA;AAAA,kBACR,MAAA,EAAQ,QAAA;AAAA,kBACR,IAAA,EAAM;AAAA,gBACR,CAAA;AAAA,gBACA,mBAAA,EAAqB;AAAA,kBACnB,MAAA,EAAQ,QAAA;AAAA,kBACR,IAAA,EAAM;AAAA,gBACR,CAAA;AAAA,gBACA,UAAA,EAAY;AAAA,kBACV,MAAA,EAAQ,UAAA;AAAA,kBACR,MAAA,EAAQ,QAAA;AAAA,kBACR,IAAA,EAAM;AAAA,gBACR,CAAA;AAAA,gBACA,YAAA,EAAc;AAAA,kBACZ,MAAA,EAAQ,QAAA;AAAA,kBACR,IAAA,EAAM;AAAA,gBACR,CAAA;AAAA,gBACA,mBAAA,EAAqB;AAAA,kBACnB,MAAA,EAAQ,OAAA;AAAA,kBACR,IAAA,EAAM;AAAA,gBACR,CAAA;AAAA,gBACA,WAAA,EAAa;AAAA,kBACX,MAAA,EAAQ,MAAA;AAAA,kBACR,IAAA,EAAM;AAAA,gBACR,CAAA;AAAA,gBACA,gBAAA,EAAkB;AAAA,kBAChB,MAAA,EAAQ,UAAA;AAAA,kBACR,MAAA,EAAQ,QAAA;AAAA,kBACR,IAAA,EAAM;AAAA,gBACR,CAAA;AAAA,gBACA,sBAAA,EAAwB;AAAA,kBACtB,MAAA,EAAQ,QAAA;AAAA,kBACR,IAAA,EAAM;AAAA,gBACR,CAAA;AAAA,gBACA,0BAAA,EAA4B;AAAA,kBAC1B,MAAA,EAAQ,QAAA;AAAA,kBACR,IAAA,EAAM;AAAA,gBACR,CAAA;AAAA,gBACA,8BAAA,EAAgC;AAAA,kBAC9B,MAAA,EAAQ,QAAA;AAAA,kBACR,IAAA,EAAM;AAAA,gBACR,CAAA;AAAA,gBACA,iBAAA,EAAmB;AAAA,kBACjB,MAAA,EAAQ,UAAA;AAAA,kBACR,MAAA,EAAQ,QAAA;AAAA,kBACR,IAAA,EAAM;AAAA,gBACR,CAAA;AAAA,gBACA,aAAA,EAAe;AAAA,kBACb,MAAA,EAAQ,QAAA;AAAA,kBACR,IAAA,EAAM;AAAA,gBACR,CAAA;AAAA,gBACA,sBAAA,EAAwB;AAAA,kBACtB,MAAA,EAAQ,0BAAA;AAAA,kBACR,IAAA,EAAM;AAAA,gBACR,CAAA;AAAA,gBACA,mBAAA,EAAqB;AAAA,kBACnB,MAAA,EAAQ,OAAA;AAAA,kBACR,IAAA,EAAM;AAAA,gBACR,CAAA;AAAA,gBACA,mBAAA,EAAqB;AAAA,kBACnB,MAAA,EAAQ,QAAA;AAAA,kBACR,IAAA,EAAM;AAAA,gBACR,CAAA;AAAA,gBACA,kBAAA,EAAoB;AAAA,kBAClB,MAAA,EAAQ,OAAA;AAAA,kBACR,IAAA,EAAM;AAAA,gBACR;AAAA,cACF;AAAA,YACF,CAAA;AAAA,YACA,0BAAA,EAA4B;AAAA,cAC1B,QAAA,EAAU;AAAA,gBACR,SAAA,EAAW;AAAA,kBACT,MAAA,EAAQ,QAAA;AAAA,kBACR,IAAA,EAAM;AAAA,gBACR,CAAA;AAAA,gBACA,oBAAA,EAAsB;AAAA,kBACpB,MAAA,EAAQ,QAAA;AAAA,kBACR,IAAA,EAAM;AAAA,gBACR,CAAA;AAAA,gBACA,sBAAA,EAAwB;AAAA,kBACtB,MAAA,EAAQ,QAAA;AAAA,kBACR,IAAA,EAAM;AAAA,gBACR,CAAA;AAAA,gBACA,cAAA,EAAgB;AAAA,kBACd,MAAA,EAAQ,UAAA;AAAA,kBACR,MAAA,EAAQ,iBAAA;AAAA,kBACR,IAAA,EAAM;AAAA,gBACR,CAAA;AAAA,gBACA,eAAA,EAAiB;AAAA,kBACf,MAAA,EAAQ,QAAA;AAAA,kBACR,IAAA,EAAM;AAAA,gBACR,CAAA;AAAA,gBACA,cAAA,EAAgB;AAAA,kBACd,MAAA,EAAQ,QAAA;AAAA,kBACR,IAAA,EAAM;AAAA,gBACR,CAAA;AAAA,gBACA,iBAAA,EAAmB;AAAA,kBACjB,MAAA,EAAQ,QAAA;AAAA,kBACR,IAAA,EAAM;AAAA,gBACR;AAAA,cACF;AAAA,YACF,CAAA;AAAA,YACA,iBAAA,EAAmB;AAAA,cACjB,QAAA,EAAU;AAAA,gBACR,MAAA,EAAQ;AAAA,kBACN,MAAA,EAAQ,QAAA;AAAA,kBACR,IAAA,EAAM;AAAA,gBACR,CAAA;AAAA,gBACA,SAAA,EAAW;AAAA,kBACT,MAAA,EAAQ,QAAA;AAAA,kBACR,IAAA,EAAM;AAAA,gBACR,CAAA;AAAA,gBACA,WAAA,EAAa;AAAA,kBACX,MAAA,EAAQ,QAAA;AAAA,kBACR,IAAA,EAAM;AAAA,gBACR;AAAA,cACF;AAAA,YACF,CAAA;AAAA,YACA,iBAAA,EAAmB;AAAA,cACjB,QAAA,EAAU;AAAA,gBACR,OAAA,EAAS;AAAA,kBACP,MAAA,EAAQ,UAAA;AAAA,kBACR,MAAA,EAAQ,kBAAA;AAAA,kBACR,IAAA,EAAM;AAAA,gBACR;AAAA,cACF;AAAA,YACF,CAAA;AAAA,YACA,kBAAA,EAAoB;AAAA,cAClB,QAAA,EAAU;AAAA,gBACR,SAAA,EAAW;AAAA,kBACT,MAAA,EAAQ,QAAA;AAAA,kBACR,IAAA,EAAM;AAAA,gBACR,CAAA;AAAA,gBACA,SAAA,EAAW;AAAA,kBACT,MAAA,EAAQ,QAAA;AAAA,kBACR,IAAA,EAAM;AAAA,gBACR,CAAA;AAAA,gBACA,cAAA,EAAgB;AAAA,kBACd,MAAA,EAAQ,QAAA;AAAA,kBACR,IAAA,EAAM;AAAA,gBACR,CAAA;AAAA,gBACA,QAAA,EAAU;AAAA,kBACR,MAAA,EAAQ,QAAA;AAAA,kBACR,IAAA,EAAM;AAAA,gBACR,CAAA;AAAA,gBACA,kBAAA,EAAoB;AAAA,kBAClB,MAAA,EAAQ,OAAA;AAAA,kBACR,IAAA,EAAM;AAAA,gBACR,CAAA;AAAA,gBACA,iBAAA,EAAmB;AAAA,kBACjB,MAAA,EAAQ,OAAA;AAAA,kBACR,IAAA,EAAM;AAAA,gBACR,CAAA;AAAA,gBACA,YAAA,EAAc;AAAA,kBACZ,MAAA,EAAQ,OAAA;AAAA,kBACR,IAAA,EAAM;AAAA,gBACR,CAAA;AAAA,gBACA,OAAA,EAAS;AAAA,kBACP,MAAA,EAAQ,QAAA;AAAA,kBACR,IAAA,EAAM;AAAA,gBACR,CAAA;AAAA,gBACA,WAAA,EAAa;AAAA,kBACX,MAAA,EAAQ,QAAA;AAAA,kBACR,IAAA,EAAM;AAAA,gBACR,CAAA;AAAA,gBACA,YAAA,EAAc;AAAA,kBACZ,MAAA,EAAQ,QAAA;AAAA,kBACR,IAAA,EAAM;AAAA,gBACR,CAAA;AAAA,gBACA,YAAA,EAAc;AAAA,kBACZ,MAAA,EAAQ,QAAA;AAAA,kBACR,IAAA,EAAM;AAAA,gBACR,CAAA;AAAA,gBACA,aAAA,EAAe;AAAA,kBACb,MAAA,EAAQ,QAAA;AAAA,kBACR,IAAA,EAAM;AAAA,gBACR,CAAA;AAAA,gBACA,mBAAA,EAAqB;AAAA,kBACnB,MAAA,EAAQ,QAAA;AAAA,kBACR,IAAA,EAAM;AAAA,gBACR,CAAA;AAAA,gBACA,qBAAA,EAAuB;AAAA,kBACrB,MAAA,EAAQ,OAAA;AAAA,kBACR,IAAA,EAAM;AAAA,gBACR;AAAA,cACF;AAAA,YACF,CAAA;AAAA,YACA,gBAAA,EAAkB;AAAA,cAChB,QAAA,EAAU;AAAA,gBACR,YAAA,EAAc;AAAA,kBACZ,MAAA,EAAQ,QAAA;AAAA,kBACR,IAAA,EAAM;AAAA,gBACR,CAAA;AAAA,gBACA,aAAA,EAAe;AAAA,kBACb,MAAA,EAAQ,QAAA;AAAA,kBACR,IAAA,EAAM;AAAA,gBACR,CAAA;AAAA,gBACA,WAAA,EAAa;AAAA,kBACX,MAAA,EAAQ,QAAA;AAAA,kBACR,IAAA,EAAM;AAAA,gBACR,CAAA;AAAA,gBACA,gBAAA,EAAkB;AAAA,kBAChB,MAAA,EAAQ,QAAA;AAAA,kBACR,IAAA,EAAM;AAAA,gBACR,CAAA;AAAA,gBACA,cAAA,EAAgB;AAAA,kBACd,MAAA,EAAQ,OAAA;AAAA,kBACR,IAAA,EAAM;AAAA,gBACR,CAAA;AAAA,gBACA,YAAA,EAAc;AAAA,kBACZ,MAAA,EAAQ,OAAA;AAAA,kBACR,IAAA,EAAM;AAAA,gBACR,CAAA;AAAA,gBACA,QAAA,EAAU;AAAA,kBACR,MAAA,EAAQ,QAAA;AAAA,kBACR,IAAA,EAAM;AAAA,gBACR,CAAA;AAAA,gBACA,YAAA,EAAc;AAAA,kBACZ,MAAA,EAAQ,QAAA;AAAA,kBACR,IAAA,EAAM;AAAA,gBACR,CAAA;AAAA,gBACA,OAAA,EAAS;AAAA,kBACP,MAAA,EAAQ,QAAA;AAAA,kBACR,IAAA,EAAM;AAAA,gBACR,CAAA;AAAA,gBACA,cAAA,EAAgB;AAAA,kBACd,MAAA,EAAQ,QAAA;AAAA,kBACR,IAAA,EAAM;AAAA,gBACR,CAAA;AAAA,gBACA,SAAA,EAAW;AAAA,kBACT,MAAA,EAAQ,OAAA;AAAA,kBACR,IAAA,EAAM;AAAA,gBACR,CAAA;AAAA,gBACA,aAAA,EAAe;AAAA,kBACb,MAAA,EAAQ,QAAA;AAAA,kBACR,IAAA,EAAM;AAAA,gBACR,CAAA;AAAA,gBACA,WAAA,EAAa;AAAA,kBACX,MAAA,EAAQ,QAAA;AAAA,kBACR,IAAA,EAAM;AAAA,gBACR,CAAA;AAAA,gBACA,kBAAA,EAAoB;AAAA,kBAClB,MAAA,EAAQ,OAAA;AAAA,kBACR,IAAA,EAAM;AAAA,gBACR,CAAA;AAAA,gBACA,UAAA,EAAY;AAAA,kBACV,SAAA,EAAW,QAAA;AAAA,kBACX,MAAA,EAAQ,QAAA;AAAA,kBACR,IAAA,EAAM;AAAA,gBACR,CAAA;AAAA,gBACA,aAAA,EAAe;AAAA,kBACb,MAAA,EAAQ,QAAA;AAAA,kBACR,IAAA,EAAM;AAAA,gBACR,CAAA;AAAA,gBACA,UAAA,EAAY;AAAA,kBACV,MAAA,EAAQ,QAAA;AAAA,kBACR,IAAA,EAAM;AAAA,gBACR;AAAA,cACF;AAAA,YACF,CAAA;AAAA,YACA,cAAA,EAAgB;AAAA,cACd,QAAA,EAAU;AAAA,gBACR,QAAA,EAAU;AAAA,kBACR,MAAA,EAAQ,QAAA;AAAA,kBACR,IAAA,EAAM;AAAA,gBACR,CAAA;AAAA,gBACA,iBAAA,EAAmB;AAAA,kBACjB,MAAA,EAAQ,OAAA;AAAA,kBACR,IAAA,EAAM;AAAA,gBACR;AAAA,cACF;AAAA,YACF;AAAA,UACF;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACF,CAAA;ADZA;AACA;AE9jBA,IAAM,wBAAA,EAA0B,UAAA;AAGhC,IAAM,uBAAA,EAAyB,EAAA;AAC/B,IAAM,gBAAA,EAAkB,GAAA;AACxB,IAAM,eAAA,EAAiB,GAAA;AACvB,IAAM,sBAAA,EAAwB,GAAA;AAC9B,IAAM,qBAAA,EAAuB,GAAA;AAC7B,IAAM,sBAAA,EAAwB,CAAA;AAE9B,IAAM,gBAAA,EAAkB,EAAA;AA2CjB,IAAM,iBAAA,EAAN,MAAuB;AAAA,EACnB;AAAA,EACA;AAAA,EACA;AAAA,EAET,CAAA,MAAA,EAAsB,cAAA;AAAA,EACtB,CAAA,KAAA,EAA2B,IAAA;AAAA,EAC3B,CAAA,kBAAA,EAAqB,CAAA;AAAA,EACrB,CAAA,WAAA,EAAc,CAAA;AAAA,EACd,CAAA,iBAAA,EAAoB,CAAA;AAAA,EACpB,CAAA,eAAA,EAAyD,IAAA;AAAA,EACzD,CAAA,kBAAA,EAAqB,KAAA;AAAA,EAErB,CAAA,KAAA,EAA+C,IAAA;AAAA,EAC/C,CAAA,YAAA,EAAwG,IAAA;AAAA,EAE/F,CAAA,WAAA;AAAA,EACA,CAAA,KAAA;AAAA,EACA,CAAA,OAAA;AAAA,EACA,CAAA,KAAA;AAAA,EACA,CAAA,gBAAA;AAAA,EAET,WAAA,CACE,WAAA,EACA,KAAA,EACA,QAAA,EAA+B,CAAC,CAAA,EAChC;AACA,IAAA,IAAA,CAAK,CAAA,YAAA,EAAe,WAAA;AACpB,IAAA,IAAA,CAAK,CAAA,MAAA,EAAS,KAAA;AACd,IAAA,IAAA,CAAK,CAAA,QAAA,EAAW,OAAA;AAChB,IAAA,IAAA,CAAK,KAAA,mBAAO,OAAA,CAAQ,IAAA,UAAQ,+BAAA;AAC5B,IAAA,IAAA,CAAK,KAAA,mBAAO,OAAA,CAAQ,IAAA,UAAQ,KAAA;AAC5B,IAAA,IAAA,CAAK,OAAA,mBAAS,OAAA,CAAQ,MAAA,UAAU,MAAA;AAChC,IAAA,IAAA,CAAK,CAAA,MAAA,mBAAS,OAAA,CAAQ,KAAA,UAAA,CAAU,CAAC,EAAA,EAAA,GAAO,IAAI,OAAA,CAAQ,CAAC,CAAA,EAAA,GAAM,UAAA,CAAW,CAAA,EAAG,EAAE,CAAC,CAAA,GAAA;AAC5E,IAAA,IAAA,CAAK,CAAA,iBAAA,mBAAoB,OAAA,CAAQ,gBAAA,UAAoB,KAAA;AAAA,EACvD;AAAA,EAEA,IAAI,YAAA,CAAA,EAA4B;AAAE,IAAA,OAAO,IAAA,CAAK,CAAA,KAAA;AAAA,EAAQ;AAAA,EACtD,IAAI,WAAA,CAAA,EAAuB;AAAE,IAAA,OAAO,IAAA,CAAK,CAAA,MAAA,IAAW,WAAA;AAAA,EAAa;AAAA,EAEjE,MAAM,OAAA,CAAA,EAAyB;AAC7B,IAAA,MAAM,IAAA,CAAK,CAAA,QAAA,CAAU,CAAA;AACrB,IAAA,IAAA,CAAK,CAAA,kBAAA,EAAqB,KAAA;AAC1B,IAAA,MAAM,IAAA,CAAK,CAAA,SAAA,CAAW,CAAA;AACtB,IAAA,IAAA,CAAK,CAAA,cAAA,CAAgB,CAAA;AAAA,EACvB;AAAA,EAEA,MAAM,UAAA,CAAA,EAA4B;AAChC,IAAA,IAAA,CAAK,CAAA,kBAAA,EAAqB,IAAA;AAC1B,IAAA,IAAA,CAAK,CAAA,aAAA,CAAe,CAAA;AACpB,IAAA,IAAA,CAAK,CAAA,SAAA,CAAW,CAAA;AAChB,IAAA,IAAA,CAAK,CAAA,QAAA,CAAU,QAAQ,CAAA;AAAA,EACzB;AAAA;AAAA,EAGA,qBAAA,CAAsB,KAAA,EAAqC;AACzD,IAAA,IAAA,CAAK,CAAA,KAAA,CAAO,EAAE,kBAAA,EAAoB,EAAE,GAAG,MAAM,EAAE,CAAC,CAAA;AAAA,EAClD;AAAA,EAEA,kBAAA,CAAmB,KAAA,EAMV;AACP,IAAA,IAAA,CAAK,CAAA,KAAA,CAAO,EAAE,eAAA,EAAiB,EAAE,GAAG,MAAM,EAAE,CAAC,CAAA;AAAA,EAC/C;AAAA,EAEA,eAAA,CAAgB,KAAA,EAAsC;AACpD,IAAA,IAAA,CAAK,CAAA,KAAA,CAAO,EAAE,YAAA,EAAc,EAAE,GAAG,MAAM,EAAE,CAAC,CAAA;AAAA,EAC5C;AAAA,EAEA,oBAAA,CAAqB,KAAA,EAAsC;AACzD,IAAA,IAAA,CAAK,CAAA,KAAA,CAAO,EAAE,iBAAA,EAAmB,EAAE,GAAG,MAAM,EAAE,CAAC,CAAA;AAAA,EACjD;AAAA,EAEA,CAAA,KAAA,CAAO,GAAA,EAAoB;AACzB,IAAA,GAAA,CAAI,CAAC,IAAA,CAAK,YAAA,GAAe,IAAA,CAAK,CAAA,KAAA,IAAU,IAAA,EAAM,MAAA;AAC9C,IAAA,IAAI;AACF,MAAA,IAAA,CAAK,CAAA,IAAA,CAAM,KAAA,CAAM,GAAG,CAAA;AAAA,IACtB,EAAA,UAAQ;AAAA,IAGR;AAAA,EACF;AAAA,EAEA,MAAM,CAAA,QAAA,CAAA,EAA2B;AAC/B,IAAA,GAAA,CAAI,IAAA,CAAK,CAAA,KAAA,IAAU,IAAA,EAAM,MAAA;AACzB,IAAA,MAAM,CAAC,OAAA,EAAS,QAAQ,EAAA,EAAI,MAAM,OAAA,CAAQ,GAAA,CAAI;AAAA,MAC5C,4DAAA;AAAA;AAAA,QAA0B;AAAA,MAAe,GAAA;AAAA,MACzC,4DAAA;AAAA;AAAA,QAA0B;AAAA,MAAoB;AAAA,IAChD,CAAC,CAAA;AACD,IAAA,IAAA,CAAK,CAAA,KAAA,EAAQ,OAAA;AAKb,IAAA,MAAM,OAAA,EAAS,QAAA,CAAS,QAAA;AAAA,MACtB,sBAAA;AAAA,MACA,EAAE,QAAA,EAAU,IAAA,EAAM,KAAA,EAAO,MAAA,EAAQ,KAAA,EAAO,MAAA,EAAQ,QAAA,EAAU,IAAA,EAAM,MAAA,EAAQ,KAAK;AAAA,IAC/E,CAAA;AACA,IAAA,MAAM,IAAA,EAAM,OAAA,CAAQ,qBAAA,CAAsB,MAAM,CAAA;AAGhD,IAAA,IAAA,CAAK,CAAA,YAAA,EAAe,GAAA,CAAI,KAAA,CAAM,EAAA,CAAG,YAAA;AAAA,EACnC;AAAA,EAEA,MAAM,CAAA,SAAA,CAAA,EAA4B;AAChC,IAAA,IAAA,CAAK,CAAA,QAAA,CAAU,YAAY,CAAA;AAC3B,IAAA,MAAM,KAAA,EAAO,IAAA,CAAK,CAAA,IAAA;AAClB,IAAA,MAAM,KAAA,EAAO,IAAA,CAAK,CAAA,WAAA;AAClB,IAAA,GAAA,CAAI,KAAA,IAAS,KAAA,GAAQ,KAAA,IAAS,IAAA,EAAM,MAAM,IAAI,KAAA,CAAM,iBAAiB,CAAA;AAErE,IAAA,MAAM,aAAA,EAAe,IAAA,CAAK,OAAA,EACtB,IAAA,CAAK,WAAA,CAAY,SAAA,CAAU,EAAA,EAC3B,IAAA,CAAK,WAAA,CAAY,cAAA,CAAe,CAAA;AAEpC,IAAA,MAAM,KAAA,EAAO,IAAI,IAAA,CAAK,CAAA,EAAA;AACpB,MAAA;AACA,MAAA;AACA,MAAA;AACD,IAAA;AAYwB,IAAA;AACF,MAAA;AACC,MAAA;AAGX,MAAA;AAGD,QAAA;AACR,QAAA;AACF,MAAA;AACkB,MAAA;AACE,QAAA;AACL,QAAA;AACd,MAAA;AACF,IAAA;AAEoB,IAAA;AACR,IAAA;AACA,IAAA;AACA,IAAA;AAEM,IAAA;AACF,IAAA;AACC,IAAA;AAAoB,MAAA;AAA6C,IAAA;AAC9D,IAAA;AAAY,MAAA;AAAoC,IAAA;AAExD,IAAA;AACE,IAAA;AACV,IAAA;AACc,IAAA;AACrB,EAAA;AAEmD,EAAA;AACzC,IAAA;AACa,MAAA;AACnB,MAAA;AACF,IAAA;AACQ,IAAA;AACa,MAAA;AACd,MAAA;AACL,MAAA;AACF,IAAA;AACmB,IAAA;AACP,IAAA;AACA,MAAA;AACZ,IAAA;AACF,EAAA;AAEqD,EAAA;AAChC,IAAA;AACI,IAAA;AAEJ,IAAA;AAEA,IAAA;AAKH,sBAAA;AAChB,IAAA;AAGc,oBAAA;AAChB,EAAA;AAEwC,EAAA;AAC+B,IAAA;AAC/C,IAAA;AACgD,MAAA;AAChD,MAAA;AACtB,IAAA;AAEuB,IAAA;AACL,IAAA;AACC,MAAA;AAAyB;AAAA;AAAA;AAKjC,MAAA;AAGO,MAAA;AAChB,MAAA;AAAA;AAEgB,MAAA;AAChB,MAAA;AACe,MAAA;AACD,QAAA;AACA,QAAA;AACd,MAAA;AACD,IAAA;AACH,EAAA;AAEwB,EAAA;AACb,IAAA;AAEO,IAAA;AACD,IAAA;AAEN,IAAA;AACQ,MAAA;AACf,MAAA;AACF,IAAA;AAImB,IAAA;AACC,MAAA;AAClB,MAAA;AACF,IAAA;AACK,IAAA;AAEkB,IAAA;AACd,IAAA;AACL,IAAA;AACS,MAAA;AACL,IAAA;AACI,MAAA;AACZ,IAAA;AACF,EAAA;AAEwB,EAAA;AACC,IAAA;AACX,MAAA;AACW,MAAA;AAEN,MAAA;AACR,QAAA;AACI,QAAA;AACG,UAAA;AACV,UAAA;AACF,QAAA;AACF,MAAA;AACI,MAAA;AACiB,QAAA;AACb,MAAA;AACI,QAAA;AACZ,MAAA;AACC,IAAA;AAGkB,oBAAA;AACvB,EAAA;AAEuB,EAAA;AACZ,IAAA;AACY,MAAA;AACd,MAAA;AACP,IAAA;AACF,EAAA;AAEmB,EAAA;AACb,IAAA;AACc,sBAAA;AACV,IAAA;AAER,IAAA;AACa,IAAA;AACf,EAAA;AAEoC,EAAA;AACpB,IAAA;AACA,oBAAA;AAChB,EAAA;AACF;AF6c2B;AACA;AACA;AACA;AACA","file":"/Users/anish/maximemai/maximem_synap/synap/sdk/js/dist/chunk-VXRCBMCY.cjs","sourcesContent":[null,"/**\n * GENERATED FILE. Do not edit by hand.\n *\n * Source: synap/proto/synap_service.proto\n * Generator: synap/sdk/scripts/gen_proto_descriptor.mjs\n * Proto SHA: 1a9a098645d1b3cf\n *\n * The proto is inlined as a JSON descriptor rather than loaded from disk so\n * that bundlers and Vercel file tracing cannot lose it. Regenerate with\n * `npm run sync-behavior` in synap/sdk/js.\n */\n\n/** sha256 (first 16 hex chars) of the proto this descriptor was built from. */\nexport const PROTO_SHA = '1a9a098645d1b3cf';\n\nexport const SYNAP_PROTO_DESCRIPTOR = {\n \"nested\": {\n \"synap\": {\n \"nested\": {\n \"v1\": {\n \"nested\": {\n \"SynapService\": {\n \"methods\": {\n \"Listen\": {\n \"requestType\": \"StreamEvent\",\n \"requestStream\": true,\n \"responseType\": \"StreamResponse\",\n \"responseStream\": true\n },\n \"IngestTelemetry\": {\n \"requestType\": \"TelemetryEvent\",\n \"requestStream\": true,\n \"responseType\": \"TelemetryAck\"\n }\n }\n },\n \"StreamEvent\": {\n \"oneofs\": {\n \"payload\": {\n \"oneof\": [\n \"conversation_event\",\n \"heartbeat_ping\",\n \"session_control\",\n \"context_used\",\n \"context_assembled\"\n ]\n }\n },\n \"fields\": {\n \"conversation_event\": {\n \"type\": \"ConversationEvent\",\n \"id\": 1\n },\n \"heartbeat_ping\": {\n \"type\": \"HeartbeatPing\",\n \"id\": 2\n },\n \"session_control\": {\n \"type\": \"SessionControl\",\n \"id\": 3\n },\n \"context_used\": {\n \"type\": \"ContextUsedEvent\",\n \"id\": 4\n },\n \"context_assembled\": {\n \"type\": \"ContextAssembledEvent\",\n \"id\": 5\n }\n }\n },\n \"ContextUsedEvent\": {\n \"fields\": {\n \"bundle_id\": {\n \"type\": \"string\",\n \"id\": 1\n },\n \"conversation_id\": {\n \"type\": \"string\",\n \"id\": 2\n },\n \"user_id\": {\n \"type\": \"string\",\n \"id\": 3\n },\n \"customer_id\": {\n \"type\": \"string\",\n \"id\": 4\n },\n \"served_item_ids\": {\n \"rule\": \"repeated\",\n \"type\": \"string\",\n \"id\": 5\n },\n \"timestamp_ms\": {\n \"type\": \"int64\",\n \"id\": 6\n },\n \"scope\": {\n \"type\": \"string\",\n \"id\": 7\n },\n \"source_bundle_ids\": {\n \"rule\": \"repeated\",\n \"type\": \"string\",\n \"id\": 8\n }\n }\n },\n \"ContextAssembledEvent\": {\n \"fields\": {\n \"correlation_id\": {\n \"type\": \"string\",\n \"id\": 1\n },\n \"conversation_id\": {\n \"type\": \"string\",\n \"id\": 2\n },\n \"user_id\": {\n \"type\": \"string\",\n \"id\": 3\n },\n \"customer_id\": {\n \"type\": \"string\",\n \"id\": 4\n },\n \"final_item_ids\": {\n \"rule\": \"repeated\",\n \"type\": \"string\",\n \"id\": 5\n },\n \"final_total_tokens\": {\n \"type\": \"int32\",\n \"id\": 6\n },\n \"compaction_id\": {\n \"type\": \"string\",\n \"id\": 7\n },\n \"recent_turn_count\": {\n \"type\": \"int32\",\n \"id\": 8\n },\n \"compaction_end_timestamp\": {\n \"type\": \"string\",\n \"id\": 9\n },\n \"assembly_source\": {\n \"type\": \"string\",\n \"id\": 10\n },\n \"assembly_duration_ms\": {\n \"type\": \"int32\",\n \"id\": 11\n },\n \"cache_hit\": {\n \"type\": \"bool\",\n \"id\": 12\n },\n \"timestamp_ms\": {\n \"type\": \"int64\",\n \"id\": 13\n },\n \"sdk_version\": {\n \"type\": \"string\",\n \"id\": 14\n }\n }\n },\n \"ConversationEvent\": {\n \"fields\": {\n \"event_type\": {\n \"type\": \"string\",\n \"id\": 1\n },\n \"conversation_id\": {\n \"type\": \"string\",\n \"id\": 2\n },\n \"user_id\": {\n \"type\": \"string\",\n \"id\": 3\n },\n \"role\": {\n \"type\": \"string\",\n \"id\": 4\n },\n \"content\": {\n \"type\": \"string\",\n \"id\": 5\n },\n \"customer_id\": {\n \"type\": \"string\",\n \"id\": 6\n },\n \"session_id\": {\n \"type\": \"string\",\n \"id\": 7\n },\n \"metadata\": {\n \"keyType\": \"string\",\n \"type\": \"string\",\n \"id\": 8\n },\n \"timestamp_ms\": {\n \"type\": \"int64\",\n \"id\": 9\n },\n \"tool_name\": {\n \"type\": \"string\",\n \"id\": 10\n },\n \"tool_args_json\": {\n \"type\": \"string\",\n \"id\": 11\n },\n \"search_queries\": {\n \"rule\": \"repeated\",\n \"type\": \"string\",\n \"id\": 12\n },\n \"context_types\": {\n \"rule\": \"repeated\",\n \"type\": \"string\",\n \"id\": 13\n }\n }\n },\n \"HeartbeatPing\": {\n \"fields\": {\n \"timestamp_ms\": {\n \"type\": \"int64\",\n \"id\": 1\n }\n }\n },\n \"SessionControl\": {\n \"fields\": {\n \"action\": {\n \"type\": \"string\",\n \"id\": 1\n },\n \"session_id\": {\n \"type\": \"string\",\n \"id\": 2\n },\n \"conversation_id\": {\n \"type\": \"string\",\n \"id\": 3\n },\n \"user_id\": {\n \"type\": \"string\",\n \"id\": 4\n },\n \"customer_id\": {\n \"type\": \"string\",\n \"id\": 5\n }\n }\n },\n \"StreamResponse\": {\n \"oneofs\": {\n \"payload\": {\n \"oneof\": [\n \"context_bundle\",\n \"heartbeat_pong\",\n \"signal\"\n ]\n }\n },\n \"fields\": {\n \"context_bundle\": {\n \"type\": \"ContextBundleProto\",\n \"id\": 1\n },\n \"heartbeat_pong\": {\n \"type\": \"HeartbeatPong\",\n \"id\": 2\n },\n \"signal\": {\n \"type\": \"StreamSignal\",\n \"id\": 3\n }\n }\n },\n \"HeartbeatPong\": {\n \"fields\": {\n \"timestamp_ms\": {\n \"type\": \"int64\",\n \"id\": 1\n }\n }\n },\n \"StreamSignal\": {\n \"fields\": {\n \"signal_type\": {\n \"type\": \"string\",\n \"id\": 1\n },\n \"reason\": {\n \"type\": \"string\",\n \"id\": 2\n },\n \"metadata\": {\n \"keyType\": \"string\",\n \"type\": \"string\",\n \"id\": 3\n }\n }\n },\n \"ContextBundleProto\": {\n \"fields\": {\n \"bundle_id\": {\n \"type\": \"string\",\n \"id\": 1\n },\n \"decision_id\": {\n \"type\": \"string\",\n \"id\": 2\n },\n \"items_by_type\": {\n \"keyType\": \"string\",\n \"type\": \"ContextItemList\",\n \"id\": 3\n },\n \"total_tokens\": {\n \"type\": \"int32\",\n \"id\": 4\n },\n \"token_budget\": {\n \"type\": \"int32\",\n \"id\": 5\n },\n \"budget_exceeded\": {\n \"type\": \"bool\",\n \"id\": 6\n },\n \"retrieval_mode\": {\n \"type\": \"string\",\n \"id\": 7\n },\n \"sources_queried\": {\n \"rule\": \"repeated\",\n \"type\": \"string\",\n \"id\": 8\n },\n \"degradation_level\": {\n \"type\": \"string\",\n \"id\": 9\n },\n \"warnings\": {\n \"rule\": \"repeated\",\n \"type\": \"string\",\n \"id\": 10\n },\n \"created_at\": {\n \"type\": \"string\",\n \"id\": 11\n },\n \"retrieval_time_ms\": {\n \"type\": \"int32\",\n \"id\": 12\n },\n \"cache_hit\": {\n \"type\": \"bool\",\n \"id\": 13\n },\n \"search_queries\": {\n \"rule\": \"repeated\",\n \"type\": \"string\",\n \"id\": 14\n },\n \"anticipation_user_id\": {\n \"type\": \"string\",\n \"id\": 15\n },\n \"anticipation_customer_id\": {\n \"type\": \"string\",\n \"id\": 16\n },\n \"anticipation_conversation_id\": {\n \"type\": \"string\",\n \"id\": 17\n },\n \"search_keywords\": {\n \"rule\": \"repeated\",\n \"type\": \"string\",\n \"id\": 18\n },\n \"bundle_type\": {\n \"type\": \"string\",\n \"id\": 19\n },\n \"conversation_context\": {\n \"type\": \"ConversationContextProto\",\n \"id\": 20\n },\n \"bundle_confidence\": {\n \"type\": \"float\",\n \"id\": 21\n },\n \"origin_pattern_id\": {\n \"type\": \"string\",\n \"id\": 22\n },\n \"ttl_hint_seconds\": {\n \"type\": \"int32\",\n \"id\": 23\n }\n }\n },\n \"ConversationContextProto\": {\n \"fields\": {\n \"summary\": {\n \"type\": \"string\",\n \"id\": 1\n },\n \"current_state_json\": {\n \"type\": \"string\",\n \"id\": 2\n },\n \"key_extractions_json\": {\n \"type\": \"string\",\n \"id\": 3\n },\n \"recent_turns\": {\n \"rule\": \"repeated\",\n \"type\": \"RecentTurnProto\",\n \"id\": 4\n },\n \"compaction_id\": {\n \"type\": \"string\",\n \"id\": 5\n },\n \"compacted_at\": {\n \"type\": \"string\",\n \"id\": 6\n },\n \"conversation_id\": {\n \"type\": \"string\",\n \"id\": 7\n }\n }\n },\n \"RecentTurnProto\": {\n \"fields\": {\n \"role\": {\n \"type\": \"string\",\n \"id\": 1\n },\n \"content\": {\n \"type\": \"string\",\n \"id\": 2\n },\n \"timestamp\": {\n \"type\": \"string\",\n \"id\": 3\n }\n }\n },\n \"ContextItemList\": {\n \"fields\": {\n \"items\": {\n \"rule\": \"repeated\",\n \"type\": \"ContextItemProto\",\n \"id\": 1\n }\n }\n },\n \"ContextItemProto\": {\n \"fields\": {\n \"item_id\": {\n \"type\": \"string\",\n \"id\": 1\n },\n \"content\": {\n \"type\": \"string\",\n \"id\": 2\n },\n \"context_type\": {\n \"type\": \"string\",\n \"id\": 3\n },\n \"source\": {\n \"type\": \"string\",\n \"id\": 4\n },\n \"similarity_score\": {\n \"type\": \"float\",\n \"id\": 5\n },\n \"relevance_score\": {\n \"type\": \"float\",\n \"id\": 6\n },\n \"confidence\": {\n \"type\": \"float\",\n \"id\": 7\n },\n \"scope\": {\n \"type\": \"string\",\n \"id\": 8\n },\n \"entity_id\": {\n \"type\": \"string\",\n \"id\": 9\n },\n \"created_at\": {\n \"type\": \"string\",\n \"id\": 10\n },\n \"event_date\": {\n \"type\": \"string\",\n \"id\": 11\n },\n \"valid_until\": {\n \"type\": \"string\",\n \"id\": 12\n },\n \"temporal_category\": {\n \"type\": \"string\",\n \"id\": 13\n },\n \"temporal_confidence\": {\n \"type\": \"float\",\n \"id\": 14\n }\n }\n },\n \"TelemetryEvent\": {\n \"fields\": {\n \"event_type\": {\n \"type\": \"string\",\n \"id\": 1\n },\n \"instance_id\": {\n \"type\": \"string\",\n \"id\": 2\n },\n \"client_id\": {\n \"type\": \"string\",\n \"id\": 3\n },\n \"correlation_id\": {\n \"type\": \"string\",\n \"id\": 4\n },\n \"timestamp_ms\": {\n \"type\": \"int64\",\n \"id\": 5\n },\n \"latency_ms\": {\n \"type\": \"int32\",\n \"id\": 6\n },\n \"status\": {\n \"type\": \"string\",\n \"id\": 7\n },\n \"error_code\": {\n \"type\": \"string\",\n \"id\": 8\n },\n \"scope\": {\n \"type\": \"string\",\n \"id\": 9\n },\n \"cache_status\": {\n \"type\": \"string\",\n \"id\": 10\n },\n \"attempt\": {\n \"type\": \"int32\",\n \"id\": 11\n },\n \"http_method\": {\n \"type\": \"string\",\n \"id\": 12\n },\n \"http_path\": {\n \"type\": \"string\",\n \"id\": 13\n },\n \"http_status_code\": {\n \"type\": \"int32\",\n \"id\": 14\n },\n \"metadata\": {\n \"keyType\": \"string\",\n \"type\": \"string\",\n \"id\": 15\n },\n \"sdk_version\": {\n \"type\": \"string\",\n \"id\": 16\n },\n \"batch_id\": {\n \"type\": \"string\",\n \"id\": 17\n }\n }\n },\n \"TelemetryAck\": {\n \"fields\": {\n \"status\": {\n \"type\": \"string\",\n \"id\": 1\n },\n \"events_received\": {\n \"type\": \"int32\",\n \"id\": 2\n }\n }\n }\n }\n }\n }\n }\n }\n} as const;\n","/**\n * Bidirectional gRPC stream client for the Synap anticipation channel.\n *\n * Mirrors Python's `GRPCTransport` and the synap-vercel-adk client:\n * - `/synap.v1.SynapService/Listen`, StreamEvent in, StreamResponse out\n * - Auth via `authorization: Bearer <key>` plus `x-client-id` / `x-instance-id`\n * - 30s heartbeat, exponential-backoff reconnect\n * - Server pushes ContextBundleProto, which lands in the AnticipationCache\n *\n * Node-only, and reached exclusively through a lazy `import()` so that merely\n * importing the SDK on Edge or in a Worker stays safe. grpc-js is built on\n * `node:http2`/`node:net`/`node:tls`; a static import fails the BUILD there.\n *\n * The proto arrives as an inlined descriptor (see ./descriptor.ts) rather than\n * being read from disk, so bundlers and Vercel file tracing cannot lose it.\n */\n\nimport type { AnticipationCache } from '../context/anticipation-cache.js';\nimport { SYNAP_PROTO_DESCRIPTOR } from './descriptor.js';\n\nexport type StreamState =\n | 'disconnected' | 'connecting' | 'connected' | 'reconnecting' | 'closed';\n\n/**\n * The ONLY bundle type the cache refuses.\n *\n * NOTE: this deliberately differs from the synap-vercel-adk stream client,\n * which caches an allowlist of `anticipation` and `user_summary` and drops\n * compaction updates. Python's `_handle_anticipated_bundle` stores everything\n * except `reactive`, and Python is the reference implementation, so an\n * allowlist here would silently cache less than the pip SDK does.\n *\n * Reactive bundles are excluded because they answer a fetch that already\n * happened; caching one serves a stale answer to a different question.\n */\nconst UNCACHEABLE_BUNDLE_TYPE = 'reactive';\n\n// Mirrors the Python GRPCTransport constants.\nconst MAX_RECONNECT_ATTEMPTS = 10;\nconst BACKOFF_BASE_MS = 1_000;\nconst BACKOFF_MAX_MS = 30_000;\nconst HEARTBEAT_INTERVAL_MS = 30_000;\nconst HEARTBEAT_TIMEOUT_MS = 10_000;\nconst MAX_MISSED_HEARTBEATS = 3;\n/** The server may only SHORTEN the SDK default, never extend it past this floor. */\nconst MIN_TTL_SECONDS = 60;\n\nexport interface StreamCredentials {\n apiKey: string;\n clientId: string;\n instanceId: string;\n}\n\nexport interface StreamClientOptions {\n host?: string;\n port?: number;\n useTls?: boolean;\n /** Injected in tests so reconnect backoff does not make the suite slow. */\n sleep?: (ms: number) => Promise<void>;\n /** How long to wait for the channel to become ready. Default 10s. */\n connectTimeoutMs?: number;\n onStateChange?: (state: StreamState) => void;\n /** Fires for every bundle, before the cache filter. Backs `listen({onContext})`. */\n onContext?: (bundle: Record<string, unknown>) => void;\n /** Fires only for `compaction_update` bundles. Backs the compaction subscriptions. */\n onCompactionUpdate?: (conversationId: string, bundle: Record<string, unknown>) => void;\n}\n\ninterface DuplexCall {\n write: (msg: unknown) => void;\n on: (event: string, handler: (arg?: unknown) => void) => void;\n end: () => void;\n}\n\nexport interface ConversationEventInput {\n event_type: string;\n conversation_id?: string;\n user_id?: string;\n customer_id?: string;\n role?: string;\n content?: string;\n session_id?: string;\n metadata?: Record<string, string>;\n timestamp_ms?: number;\n search_queries?: string[];\n context_types?: string[];\n}\n\nexport class GrpcStreamClient {\n readonly host: string;\n readonly port: number;\n readonly useTls: boolean;\n\n #state: StreamState = 'disconnected';\n #call: DuplexCall | null = null;\n #reconnectAttempts = 0;\n #lastPongAt = 0;\n #missedHeartbeats = 0;\n #heartbeatTimer: ReturnType<typeof setInterval> | null = null;\n #shutdownRequested = false;\n\n #grpc: typeof import('@grpc/grpc-js') | null = null;\n #ServiceStub: (new (target: string, creds: unknown, opts: unknown) => Record<string, unknown>) | null = null;\n\n readonly #credentials: StreamCredentials;\n readonly #cache: AnticipationCache;\n readonly #options: StreamClientOptions;\n readonly #sleep: (ms: number) => Promise<void>;\n readonly #connectTimeoutMs: number;\n\n constructor(\n credentials: StreamCredentials,\n cache: AnticipationCache,\n options: StreamClientOptions = {},\n ) {\n this.#credentials = credentials;\n this.#cache = cache;\n this.#options = options;\n this.host = options.host ?? 'synap-cloud-prod.maximem.ai';\n this.port = options.port ?? 443;\n this.useTls = options.useTls ?? true;\n this.#sleep = options.sleep ?? ((ms) => new Promise((r) => setTimeout(r, ms)));\n this.#connectTimeoutMs = options.connectTimeoutMs ?? 10_000;\n }\n\n get currentState(): StreamState { return this.#state; }\n get isConnected(): boolean { return this.#state === 'connected'; }\n\n async connect(): Promise<void> {\n await this.#loadGrpc();\n this.#shutdownRequested = false;\n await this.#establish();\n this.#startHeartbeat();\n }\n\n async disconnect(): Promise<void> {\n this.#shutdownRequested = true;\n this.#stopHeartbeat();\n this.#closeCall();\n this.#setState('closed');\n }\n\n /** Fire-and-forget: a dropped event must never fail the caller's turn. */\n sendConversationEvent(event: ConversationEventInput): void {\n this.#write({ conversation_event: { ...event } });\n }\n\n sendSessionControl(input: {\n action: string;\n session_id?: string;\n conversation_id?: string;\n user_id?: string;\n customer_id?: string;\n }): void {\n this.#write({ session_control: { ...input } });\n }\n\n sendContextUsed(event: Record<string, unknown>): void {\n this.#write({ context_used: { ...event } });\n }\n\n sendContextAssembled(event: Record<string, unknown>): void {\n this.#write({ context_assembled: { ...event } });\n }\n\n #write(msg: unknown): void {\n if (!this.isConnected || this.#call === null) return;\n try {\n this.#call.write(msg);\n } catch {\n // Non-fatal. These are telemetry and control events; losing one is\n // strictly better than surfacing a stream hiccup to the caller.\n }\n }\n\n async #loadGrpc(): Promise<void> {\n if (this.#grpc !== null) return;\n const [grpcMod, protoMod] = await Promise.all([\n import(/* @vite-ignore */ '@grpc/grpc-js'),\n import(/* @vite-ignore */ '@grpc/proto-loader'),\n ]);\n this.#grpc = grpcMod;\n\n // `fromJSON`, not `loadSync`: no path, no disk read, nothing for a bundler\n // to fail to trace. `keepCase` keeps the snake_case field names the server\n // and the Python SDK both use.\n const pkgDef = protoMod.fromJSON(\n SYNAP_PROTO_DESCRIPTOR as unknown as Parameters<typeof protoMod.fromJSON>[0],\n { keepCase: true, longs: Number, enums: String, defaults: true, oneofs: true },\n );\n const pkg = grpcMod.loadPackageDefinition(pkgDef) as unknown as {\n synap: { v1: { SynapService: new (t: string, c: unknown, o: unknown) => Record<string, unknown> } };\n };\n this.#ServiceStub = pkg.synap.v1.SynapService;\n }\n\n async #establish(): Promise<void> {\n this.#setState('connecting');\n const grpc = this.#grpc;\n const Stub = this.#ServiceStub;\n if (grpc === null || Stub === null) throw new Error('gRPC not loaded');\n\n const channelCreds = this.useTls\n ? grpc.credentials.createSsl()\n : grpc.credentials.createInsecure();\n\n const stub = new Stub(`${this.host}:${this.port}`, channelCreds, {\n 'grpc.keepalive_time_ms': 30_000,\n 'grpc.keepalive_timeout_ms': 10_000,\n 'grpc.keepalive_permit_without_calls': 1,\n });\n\n // Wait for the channel before reporting success.\n //\n // grpc-js connects LAZILY: constructing the stub and creating the call both\n // return immediately, and a bad host surfaces later through the call's\n // 'error' event. Without this, `await listen()` resolved against an\n // unreachable port, `is_listening` read true for a stream that never\n // connected, and `send_message()` then dropped every event silently,\n // because sends are deliberately fire-and-forget. Failing loudly here is\n // the difference between a clear error and an agent that looks like it has\n // no memory.\n await new Promise<void>((resolve, reject) => {\n const deadline = new Date(Date.now() + this.#connectTimeoutMs);\n const waitForReady = (stub as unknown as {\n waitForReady?: (d: Date, cb: (e?: Error) => void) => void;\n }).waitForReady;\n if (typeof waitForReady !== 'function') {\n // Older grpc-js, or a stub that does not expose it. Fall back to the\n // lazy behaviour rather than failing outright.\n resolve();\n return;\n }\n waitForReady.call(stub, deadline, (error?: Error) => {\n if (error) reject(error);\n else resolve();\n });\n });\n\n const metadata = new grpc.Metadata();\n metadata.add('authorization', `Bearer ${this.#credentials.apiKey}`);\n metadata.add('x-client-id', this.#credentials.clientId);\n metadata.add('x-instance-id', this.#credentials.instanceId);\n\n const call = (stub['Listen'] as (m: unknown) => DuplexCall)(metadata);\n call.on('data', (msg) => this.#handleMessage(msg as Record<string, unknown>));\n call.on('error', (err) => { void this.#handleDisconnect(`error: ${String(err)}`); });\n call.on('end', () => { void this.#handleDisconnect('server_close'); });\n\n this.#call = call;\n this.#setState('connected');\n this.#reconnectAttempts = 0;\n this.#lastPongAt = Date.now();\n }\n\n #handleMessage(msg: Record<string, unknown>): void {\n if (msg['context_bundle']) {\n this.#handleBundle(msg['context_bundle'] as Record<string, unknown>);\n return;\n }\n if (msg['heartbeat_pong']) {\n this.#lastPongAt = Date.now();\n this.#missedHeartbeats = 0;\n return;\n }\n const signal = msg['signal'] as { signal_type?: string } | undefined;\n if (signal?.signal_type === 'closing') {\n void this.#handleDisconnect('server_signal_closing');\n }\n }\n\n #handleBundle(bundle: Record<string, unknown>): void {\n const bundleType = String(bundle['bundle_type'] ?? '') || 'anticipation';\n const conversationId = String(bundle['anticipation_conversation_id'] ?? '');\n\n if (bundleType !== UNCACHEABLE_BUNDLE_TYPE) this.#store(bundle, bundleType, conversationId);\n\n if (bundleType === 'compaction_update' && conversationId !== '') {\n // Python also deletes this conversation's `compacted_full` /\n // `compacted_context` entries from its separate CacheManager. This SDK\n // has no such cache, and calling dropConversation() here would delete\n // the bundle just stored above, so there is nothing to invalidate.\n this.#options.onCompactionUpdate?.(conversationId, bundle);\n }\n\n // Fires for every type, after storing, matching Python's ordering.\n this.#options.onContext?.(bundle);\n }\n\n #store(bundle: Record<string, unknown>, bundleType: string, conversationId: string): void {\n const itemsByType: Record<string, Array<Record<string, unknown>>> = {};\n for (const [type, list] of Object.entries(bundle['items_by_type'] ?? {})) {\n const items = (list as { items?: Array<Record<string, unknown>> })?.items;\n itemsByType[type] = items ?? [];\n }\n\n const ttlHint = Number(bundle['ttl_hint_seconds'] ?? 0);\n this.#cache.store({\n bundleId: String(bundle['bundle_id'] ?? ''),\n // The cache keys on ONE entity. User id wins when present, so a bundle\n // pushed for a user cannot be served to a different user in the same\n // customer; falling back to customer id keeps org-scope bundles usable.\n entityId:\n String(bundle['anticipation_user_id'] ?? '') ||\n String(bundle['anticipation_customer_id'] ?? '') ||\n null,\n conversationId: conversationId || null,\n itemsByType,\n // 0 means \"use the SDK default\"; anything else is floored at 60s.\n ttlHintSeconds: ttlHint > 0 ? Math.max(ttlHint, MIN_TTL_SECONDS) : null,\n bundleType,\n searchQueries: [\n ...((bundle['search_queries'] as string[] | undefined) ?? []),\n ...((bundle['search_keywords'] as string[] | undefined) ?? []),\n ],\n });\n }\n\n async #handleDisconnect(_reason: string): Promise<void> {\n if (this.#shutdownRequested) return;\n\n this.#closeCall();\n this.#setState('reconnecting');\n\n if (this.#reconnectAttempts >= MAX_RECONNECT_ATTEMPTS) {\n this.#setState('disconnected');\n return;\n }\n\n // Jittered exponential backoff. The jitter matters with many SDK instances\n // behind one deploy: without it they all retry in lockstep.\n const delay = Math.min(\n BACKOFF_BASE_MS * 2 ** this.#reconnectAttempts + Math.random() * 1_000,\n BACKOFF_MAX_MS,\n );\n this.#reconnectAttempts += 1;\n\n await this.#sleep(delay);\n if (this.#shutdownRequested) return;\n try {\n await this.#establish();\n } catch {\n void this.#handleDisconnect('reconnect_failed');\n }\n }\n\n #startHeartbeat(): void {\n this.#heartbeatTimer = setInterval(() => {\n if (!this.isConnected || this.#call === null) return;\n const now = Date.now();\n\n if (now - this.#lastPongAt > HEARTBEAT_TIMEOUT_MS) {\n this.#missedHeartbeats += 1;\n if (this.#missedHeartbeats >= MAX_MISSED_HEARTBEATS) {\n void this.#handleDisconnect('heartbeat_timeout');\n return;\n }\n }\n try {\n this.#call.write({ heartbeat_ping: { timestamp_ms: now } });\n } catch {\n void this.#handleDisconnect('heartbeat_write_error');\n }\n }, HEARTBEAT_INTERVAL_MS);\n // Never hold the process open on the heartbeat alone: a CLI that finishes\n // its work should exit, not hang for 30s.\n this.#heartbeatTimer.unref?.();\n }\n\n #stopHeartbeat(): void {\n if (this.#heartbeatTimer !== null) {\n clearInterval(this.#heartbeatTimer);\n this.#heartbeatTimer = null;\n }\n }\n\n #closeCall(): void {\n try {\n this.#call?.end();\n } catch {\n /* already torn down */\n }\n this.#call = null;\n }\n\n #setState(state: StreamState): void {\n this.#state = state;\n this.#options.onStateChange?.(state);\n }\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["/Users/scaler/maximem_synap_nested/synap/sdk/js/dist/chunk-VXRCBMCY.cjs","../src/grpc/descriptor.ts","../src/grpc/stream-client.ts"],"names":[],"mappings":"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","file":"/Users/scaler/maximem_synap_nested/synap/sdk/js/dist/chunk-VXRCBMCY.cjs","sourcesContent":[null,"/**\n * GENERATED FILE. Do not edit by hand.\n *\n * Source: synap/proto/synap_service.proto\n * Generator: synap/sdk/scripts/gen_proto_descriptor.mjs\n * Proto SHA: 1a9a098645d1b3cf\n *\n * The proto is inlined as a JSON descriptor rather than loaded from disk so\n * that bundlers and Vercel file tracing cannot lose it. Regenerate with\n * `npm run sync-behavior` in synap/sdk/js.\n */\n\n/** sha256 (first 16 hex chars) of the proto this descriptor was built from. */\nexport const PROTO_SHA = '1a9a098645d1b3cf';\n\nexport const SYNAP_PROTO_DESCRIPTOR = {\n \"nested\": {\n \"synap\": {\n \"nested\": {\n \"v1\": {\n \"nested\": {\n \"SynapService\": {\n \"methods\": {\n \"Listen\": {\n \"requestType\": \"StreamEvent\",\n \"requestStream\": true,\n \"responseType\": \"StreamResponse\",\n \"responseStream\": true\n },\n \"IngestTelemetry\": {\n \"requestType\": \"TelemetryEvent\",\n \"requestStream\": true,\n \"responseType\": \"TelemetryAck\"\n }\n }\n },\n \"StreamEvent\": {\n \"oneofs\": {\n \"payload\": {\n \"oneof\": [\n \"conversation_event\",\n \"heartbeat_ping\",\n \"session_control\",\n \"context_used\",\n \"context_assembled\"\n ]\n }\n },\n \"fields\": {\n \"conversation_event\": {\n \"type\": \"ConversationEvent\",\n \"id\": 1\n },\n \"heartbeat_ping\": {\n \"type\": \"HeartbeatPing\",\n \"id\": 2\n },\n \"session_control\": {\n \"type\": \"SessionControl\",\n \"id\": 3\n },\n \"context_used\": {\n \"type\": \"ContextUsedEvent\",\n \"id\": 4\n },\n \"context_assembled\": {\n \"type\": \"ContextAssembledEvent\",\n \"id\": 5\n }\n }\n },\n \"ContextUsedEvent\": {\n \"fields\": {\n \"bundle_id\": {\n \"type\": \"string\",\n \"id\": 1\n },\n \"conversation_id\": {\n \"type\": \"string\",\n \"id\": 2\n },\n \"user_id\": {\n \"type\": \"string\",\n \"id\": 3\n },\n \"customer_id\": {\n \"type\": \"string\",\n \"id\": 4\n },\n \"served_item_ids\": {\n \"rule\": \"repeated\",\n \"type\": \"string\",\n \"id\": 5\n },\n \"timestamp_ms\": {\n \"type\": \"int64\",\n \"id\": 6\n },\n \"scope\": {\n \"type\": \"string\",\n \"id\": 7\n },\n \"source_bundle_ids\": {\n \"rule\": \"repeated\",\n \"type\": \"string\",\n \"id\": 8\n }\n }\n },\n \"ContextAssembledEvent\": {\n \"fields\": {\n \"correlation_id\": {\n \"type\": \"string\",\n \"id\": 1\n },\n \"conversation_id\": {\n \"type\": \"string\",\n \"id\": 2\n },\n \"user_id\": {\n \"type\": \"string\",\n \"id\": 3\n },\n \"customer_id\": {\n \"type\": \"string\",\n \"id\": 4\n },\n \"final_item_ids\": {\n \"rule\": \"repeated\",\n \"type\": \"string\",\n \"id\": 5\n },\n \"final_total_tokens\": {\n \"type\": \"int32\",\n \"id\": 6\n },\n \"compaction_id\": {\n \"type\": \"string\",\n \"id\": 7\n },\n \"recent_turn_count\": {\n \"type\": \"int32\",\n \"id\": 8\n },\n \"compaction_end_timestamp\": {\n \"type\": \"string\",\n \"id\": 9\n },\n \"assembly_source\": {\n \"type\": \"string\",\n \"id\": 10\n },\n \"assembly_duration_ms\": {\n \"type\": \"int32\",\n \"id\": 11\n },\n \"cache_hit\": {\n \"type\": \"bool\",\n \"id\": 12\n },\n \"timestamp_ms\": {\n \"type\": \"int64\",\n \"id\": 13\n },\n \"sdk_version\": {\n \"type\": \"string\",\n \"id\": 14\n }\n }\n },\n \"ConversationEvent\": {\n \"fields\": {\n \"event_type\": {\n \"type\": \"string\",\n \"id\": 1\n },\n \"conversation_id\": {\n \"type\": \"string\",\n \"id\": 2\n },\n \"user_id\": {\n \"type\": \"string\",\n \"id\": 3\n },\n \"role\": {\n \"type\": \"string\",\n \"id\": 4\n },\n \"content\": {\n \"type\": \"string\",\n \"id\": 5\n },\n \"customer_id\": {\n \"type\": \"string\",\n \"id\": 6\n },\n \"session_id\": {\n \"type\": \"string\",\n \"id\": 7\n },\n \"metadata\": {\n \"keyType\": \"string\",\n \"type\": \"string\",\n \"id\": 8\n },\n \"timestamp_ms\": {\n \"type\": \"int64\",\n \"id\": 9\n },\n \"tool_name\": {\n \"type\": \"string\",\n \"id\": 10\n },\n \"tool_args_json\": {\n \"type\": \"string\",\n \"id\": 11\n },\n \"search_queries\": {\n \"rule\": \"repeated\",\n \"type\": \"string\",\n \"id\": 12\n },\n \"context_types\": {\n \"rule\": \"repeated\",\n \"type\": \"string\",\n \"id\": 13\n }\n }\n },\n \"HeartbeatPing\": {\n \"fields\": {\n \"timestamp_ms\": {\n \"type\": \"int64\",\n \"id\": 1\n }\n }\n },\n \"SessionControl\": {\n \"fields\": {\n \"action\": {\n \"type\": \"string\",\n \"id\": 1\n },\n \"session_id\": {\n \"type\": \"string\",\n \"id\": 2\n },\n \"conversation_id\": {\n \"type\": \"string\",\n \"id\": 3\n },\n \"user_id\": {\n \"type\": \"string\",\n \"id\": 4\n },\n \"customer_id\": {\n \"type\": \"string\",\n \"id\": 5\n }\n }\n },\n \"StreamResponse\": {\n \"oneofs\": {\n \"payload\": {\n \"oneof\": [\n \"context_bundle\",\n \"heartbeat_pong\",\n \"signal\"\n ]\n }\n },\n \"fields\": {\n \"context_bundle\": {\n \"type\": \"ContextBundleProto\",\n \"id\": 1\n },\n \"heartbeat_pong\": {\n \"type\": \"HeartbeatPong\",\n \"id\": 2\n },\n \"signal\": {\n \"type\": \"StreamSignal\",\n \"id\": 3\n }\n }\n },\n \"HeartbeatPong\": {\n \"fields\": {\n \"timestamp_ms\": {\n \"type\": \"int64\",\n \"id\": 1\n }\n }\n },\n \"StreamSignal\": {\n \"fields\": {\n \"signal_type\": {\n \"type\": \"string\",\n \"id\": 1\n },\n \"reason\": {\n \"type\": \"string\",\n \"id\": 2\n },\n \"metadata\": {\n \"keyType\": \"string\",\n \"type\": \"string\",\n \"id\": 3\n }\n }\n },\n \"ContextBundleProto\": {\n \"fields\": {\n \"bundle_id\": {\n \"type\": \"string\",\n \"id\": 1\n },\n \"decision_id\": {\n \"type\": \"string\",\n \"id\": 2\n },\n \"items_by_type\": {\n \"keyType\": \"string\",\n \"type\": \"ContextItemList\",\n \"id\": 3\n },\n \"total_tokens\": {\n \"type\": \"int32\",\n \"id\": 4\n },\n \"token_budget\": {\n \"type\": \"int32\",\n \"id\": 5\n },\n \"budget_exceeded\": {\n \"type\": \"bool\",\n \"id\": 6\n },\n \"retrieval_mode\": {\n \"type\": \"string\",\n \"id\": 7\n },\n \"sources_queried\": {\n \"rule\": \"repeated\",\n \"type\": \"string\",\n \"id\": 8\n },\n \"degradation_level\": {\n \"type\": \"string\",\n \"id\": 9\n },\n \"warnings\": {\n \"rule\": \"repeated\",\n \"type\": \"string\",\n \"id\": 10\n },\n \"created_at\": {\n \"type\": \"string\",\n \"id\": 11\n },\n \"retrieval_time_ms\": {\n \"type\": \"int32\",\n \"id\": 12\n },\n \"cache_hit\": {\n \"type\": \"bool\",\n \"id\": 13\n },\n \"search_queries\": {\n \"rule\": \"repeated\",\n \"type\": \"string\",\n \"id\": 14\n },\n \"anticipation_user_id\": {\n \"type\": \"string\",\n \"id\": 15\n },\n \"anticipation_customer_id\": {\n \"type\": \"string\",\n \"id\": 16\n },\n \"anticipation_conversation_id\": {\n \"type\": \"string\",\n \"id\": 17\n },\n \"search_keywords\": {\n \"rule\": \"repeated\",\n \"type\": \"string\",\n \"id\": 18\n },\n \"bundle_type\": {\n \"type\": \"string\",\n \"id\": 19\n },\n \"conversation_context\": {\n \"type\": \"ConversationContextProto\",\n \"id\": 20\n },\n \"bundle_confidence\": {\n \"type\": \"float\",\n \"id\": 21\n },\n \"origin_pattern_id\": {\n \"type\": \"string\",\n \"id\": 22\n },\n \"ttl_hint_seconds\": {\n \"type\": \"int32\",\n \"id\": 23\n }\n }\n },\n \"ConversationContextProto\": {\n \"fields\": {\n \"summary\": {\n \"type\": \"string\",\n \"id\": 1\n },\n \"current_state_json\": {\n \"type\": \"string\",\n \"id\": 2\n },\n \"key_extractions_json\": {\n \"type\": \"string\",\n \"id\": 3\n },\n \"recent_turns\": {\n \"rule\": \"repeated\",\n \"type\": \"RecentTurnProto\",\n \"id\": 4\n },\n \"compaction_id\": {\n \"type\": \"string\",\n \"id\": 5\n },\n \"compacted_at\": {\n \"type\": \"string\",\n \"id\": 6\n },\n \"conversation_id\": {\n \"type\": \"string\",\n \"id\": 7\n }\n }\n },\n \"RecentTurnProto\": {\n \"fields\": {\n \"role\": {\n \"type\": \"string\",\n \"id\": 1\n },\n \"content\": {\n \"type\": \"string\",\n \"id\": 2\n },\n \"timestamp\": {\n \"type\": \"string\",\n \"id\": 3\n }\n }\n },\n \"ContextItemList\": {\n \"fields\": {\n \"items\": {\n \"rule\": \"repeated\",\n \"type\": \"ContextItemProto\",\n \"id\": 1\n }\n }\n },\n \"ContextItemProto\": {\n \"fields\": {\n \"item_id\": {\n \"type\": \"string\",\n \"id\": 1\n },\n \"content\": {\n \"type\": \"string\",\n \"id\": 2\n },\n \"context_type\": {\n \"type\": \"string\",\n \"id\": 3\n },\n \"source\": {\n \"type\": \"string\",\n \"id\": 4\n },\n \"similarity_score\": {\n \"type\": \"float\",\n \"id\": 5\n },\n \"relevance_score\": {\n \"type\": \"float\",\n \"id\": 6\n },\n \"confidence\": {\n \"type\": \"float\",\n \"id\": 7\n },\n \"scope\": {\n \"type\": \"string\",\n \"id\": 8\n },\n \"entity_id\": {\n \"type\": \"string\",\n \"id\": 9\n },\n \"created_at\": {\n \"type\": \"string\",\n \"id\": 10\n },\n \"event_date\": {\n \"type\": \"string\",\n \"id\": 11\n },\n \"valid_until\": {\n \"type\": \"string\",\n \"id\": 12\n },\n \"temporal_category\": {\n \"type\": \"string\",\n \"id\": 13\n },\n \"temporal_confidence\": {\n \"type\": \"float\",\n \"id\": 14\n }\n }\n },\n \"TelemetryEvent\": {\n \"fields\": {\n \"event_type\": {\n \"type\": \"string\",\n \"id\": 1\n },\n \"instance_id\": {\n \"type\": \"string\",\n \"id\": 2\n },\n \"client_id\": {\n \"type\": \"string\",\n \"id\": 3\n },\n \"correlation_id\": {\n \"type\": \"string\",\n \"id\": 4\n },\n \"timestamp_ms\": {\n \"type\": \"int64\",\n \"id\": 5\n },\n \"latency_ms\": {\n \"type\": \"int32\",\n \"id\": 6\n },\n \"status\": {\n \"type\": \"string\",\n \"id\": 7\n },\n \"error_code\": {\n \"type\": \"string\",\n \"id\": 8\n },\n \"scope\": {\n \"type\": \"string\",\n \"id\": 9\n },\n \"cache_status\": {\n \"type\": \"string\",\n \"id\": 10\n },\n \"attempt\": {\n \"type\": \"int32\",\n \"id\": 11\n },\n \"http_method\": {\n \"type\": \"string\",\n \"id\": 12\n },\n \"http_path\": {\n \"type\": \"string\",\n \"id\": 13\n },\n \"http_status_code\": {\n \"type\": \"int32\",\n \"id\": 14\n },\n \"metadata\": {\n \"keyType\": \"string\",\n \"type\": \"string\",\n \"id\": 15\n },\n \"sdk_version\": {\n \"type\": \"string\",\n \"id\": 16\n },\n \"batch_id\": {\n \"type\": \"string\",\n \"id\": 17\n }\n }\n },\n \"TelemetryAck\": {\n \"fields\": {\n \"status\": {\n \"type\": \"string\",\n \"id\": 1\n },\n \"events_received\": {\n \"type\": \"int32\",\n \"id\": 2\n }\n }\n }\n }\n }\n }\n }\n }\n} as const;\n","/**\n * Bidirectional gRPC stream client for the Synap anticipation channel.\n *\n * Mirrors Python's `GRPCTransport` and the synap-vercel-adk client:\n * - `/synap.v1.SynapService/Listen`, StreamEvent in, StreamResponse out\n * - Auth via `authorization: Bearer <key>` plus `x-client-id` / `x-instance-id`\n * - 30s heartbeat, exponential-backoff reconnect\n * - Server pushes ContextBundleProto, which lands in the AnticipationCache\n *\n * Node-only, and reached exclusively through a lazy `import()` so that merely\n * importing the SDK on Edge or in a Worker stays safe. grpc-js is built on\n * `node:http2`/`node:net`/`node:tls`; a static import fails the BUILD there.\n *\n * The proto arrives as an inlined descriptor (see ./descriptor.ts) rather than\n * being read from disk, so bundlers and Vercel file tracing cannot lose it.\n */\n\nimport type { AnticipationCache } from '../context/anticipation-cache.js';\nimport { SYNAP_PROTO_DESCRIPTOR } from './descriptor.js';\n\nexport type StreamState =\n | 'disconnected' | 'connecting' | 'connected' | 'reconnecting' | 'closed';\n\n/**\n * The ONLY bundle type the cache refuses.\n *\n * NOTE: this deliberately differs from the synap-vercel-adk stream client,\n * which caches an allowlist of `anticipation` and `user_summary` and drops\n * compaction updates. Python's `_handle_anticipated_bundle` stores everything\n * except `reactive`, and Python is the reference implementation, so an\n * allowlist here would silently cache less than the pip SDK does.\n *\n * Reactive bundles are excluded because they answer a fetch that already\n * happened; caching one serves a stale answer to a different question.\n */\nconst UNCACHEABLE_BUNDLE_TYPE = 'reactive';\n\n// Mirrors the Python GRPCTransport constants.\nconst MAX_RECONNECT_ATTEMPTS = 10;\nconst BACKOFF_BASE_MS = 1_000;\nconst BACKOFF_MAX_MS = 30_000;\nconst HEARTBEAT_INTERVAL_MS = 30_000;\nconst HEARTBEAT_TIMEOUT_MS = 10_000;\nconst MAX_MISSED_HEARTBEATS = 3;\n/** The server may only SHORTEN the SDK default, never extend it past this floor. */\nconst MIN_TTL_SECONDS = 60;\n\nexport interface StreamCredentials {\n apiKey: string;\n clientId: string;\n instanceId: string;\n}\n\nexport interface StreamClientOptions {\n host?: string;\n port?: number;\n useTls?: boolean;\n /** Injected in tests so reconnect backoff does not make the suite slow. */\n sleep?: (ms: number) => Promise<void>;\n /** How long to wait for the channel to become ready. Default 10s. */\n connectTimeoutMs?: number;\n onStateChange?: (state: StreamState) => void;\n /** Fires for every bundle, before the cache filter. Backs `listen({onContext})`. */\n onContext?: (bundle: Record<string, unknown>) => void;\n /** Fires only for `compaction_update` bundles. Backs the compaction subscriptions. */\n onCompactionUpdate?: (conversationId: string, bundle: Record<string, unknown>) => void;\n}\n\ninterface DuplexCall {\n write: (msg: unknown) => void;\n on: (event: string, handler: (arg?: unknown) => void) => void;\n end: () => void;\n}\n\nexport interface ConversationEventInput {\n event_type: string;\n conversation_id?: string;\n user_id?: string;\n customer_id?: string;\n role?: string;\n content?: string;\n session_id?: string;\n metadata?: Record<string, string>;\n timestamp_ms?: number;\n search_queries?: string[];\n context_types?: string[];\n}\n\nexport class GrpcStreamClient {\n readonly host: string;\n readonly port: number;\n readonly useTls: boolean;\n\n #state: StreamState = 'disconnected';\n #call: DuplexCall | null = null;\n #reconnectAttempts = 0;\n #lastPongAt = 0;\n #missedHeartbeats = 0;\n #heartbeatTimer: ReturnType<typeof setInterval> | null = null;\n #shutdownRequested = false;\n\n #grpc: typeof import('@grpc/grpc-js') | null = null;\n #ServiceStub: (new (target: string, creds: unknown, opts: unknown) => Record<string, unknown>) | null = null;\n\n readonly #credentials: StreamCredentials;\n readonly #cache: AnticipationCache;\n readonly #options: StreamClientOptions;\n readonly #sleep: (ms: number) => Promise<void>;\n readonly #connectTimeoutMs: number;\n\n constructor(\n credentials: StreamCredentials,\n cache: AnticipationCache,\n options: StreamClientOptions = {},\n ) {\n this.#credentials = credentials;\n this.#cache = cache;\n this.#options = options;\n this.host = options.host ?? 'synap-cloud-prod.maximem.ai';\n this.port = options.port ?? 443;\n this.useTls = options.useTls ?? true;\n this.#sleep = options.sleep ?? ((ms) => new Promise((r) => setTimeout(r, ms)));\n this.#connectTimeoutMs = options.connectTimeoutMs ?? 10_000;\n }\n\n get currentState(): StreamState { return this.#state; }\n get isConnected(): boolean { return this.#state === 'connected'; }\n\n async connect(): Promise<void> {\n await this.#loadGrpc();\n this.#shutdownRequested = false;\n await this.#establish();\n this.#startHeartbeat();\n }\n\n async disconnect(): Promise<void> {\n this.#shutdownRequested = true;\n this.#stopHeartbeat();\n this.#closeCall();\n this.#setState('closed');\n }\n\n /** Fire-and-forget: a dropped event must never fail the caller's turn. */\n sendConversationEvent(event: ConversationEventInput): void {\n this.#write({ conversation_event: { ...event } });\n }\n\n sendSessionControl(input: {\n action: string;\n session_id?: string;\n conversation_id?: string;\n user_id?: string;\n customer_id?: string;\n }): void {\n this.#write({ session_control: { ...input } });\n }\n\n sendContextUsed(event: Record<string, unknown>): void {\n this.#write({ context_used: { ...event } });\n }\n\n sendContextAssembled(event: Record<string, unknown>): void {\n this.#write({ context_assembled: { ...event } });\n }\n\n #write(msg: unknown): void {\n if (!this.isConnected || this.#call === null) return;\n try {\n this.#call.write(msg);\n } catch {\n // Non-fatal. These are telemetry and control events; losing one is\n // strictly better than surfacing a stream hiccup to the caller.\n }\n }\n\n async #loadGrpc(): Promise<void> {\n if (this.#grpc !== null) return;\n const [grpcMod, protoMod] = await Promise.all([\n import(/* @vite-ignore */ '@grpc/grpc-js'),\n import(/* @vite-ignore */ '@grpc/proto-loader'),\n ]);\n this.#grpc = grpcMod;\n\n // `fromJSON`, not `loadSync`: no path, no disk read, nothing for a bundler\n // to fail to trace. `keepCase` keeps the snake_case field names the server\n // and the Python SDK both use.\n const pkgDef = protoMod.fromJSON(\n SYNAP_PROTO_DESCRIPTOR as unknown as Parameters<typeof protoMod.fromJSON>[0],\n { keepCase: true, longs: Number, enums: String, defaults: true, oneofs: true },\n );\n const pkg = grpcMod.loadPackageDefinition(pkgDef) as unknown as {\n synap: { v1: { SynapService: new (t: string, c: unknown, o: unknown) => Record<string, unknown> } };\n };\n this.#ServiceStub = pkg.synap.v1.SynapService;\n }\n\n async #establish(): Promise<void> {\n this.#setState('connecting');\n const grpc = this.#grpc;\n const Stub = this.#ServiceStub;\n if (grpc === null || Stub === null) throw new Error('gRPC not loaded');\n\n const channelCreds = this.useTls\n ? grpc.credentials.createSsl()\n : grpc.credentials.createInsecure();\n\n const stub = new Stub(`${this.host}:${this.port}`, channelCreds, {\n 'grpc.keepalive_time_ms': 30_000,\n 'grpc.keepalive_timeout_ms': 10_000,\n 'grpc.keepalive_permit_without_calls': 1,\n });\n\n // Wait for the channel before reporting success.\n //\n // grpc-js connects LAZILY: constructing the stub and creating the call both\n // return immediately, and a bad host surfaces later through the call's\n // 'error' event. Without this, `await listen()` resolved against an\n // unreachable port, `is_listening` read true for a stream that never\n // connected, and `send_message()` then dropped every event silently,\n // because sends are deliberately fire-and-forget. Failing loudly here is\n // the difference between a clear error and an agent that looks like it has\n // no memory.\n await new Promise<void>((resolve, reject) => {\n const deadline = new Date(Date.now() + this.#connectTimeoutMs);\n const waitForReady = (stub as unknown as {\n waitForReady?: (d: Date, cb: (e?: Error) => void) => void;\n }).waitForReady;\n if (typeof waitForReady !== 'function') {\n // Older grpc-js, or a stub that does not expose it. Fall back to the\n // lazy behaviour rather than failing outright.\n resolve();\n return;\n }\n waitForReady.call(stub, deadline, (error?: Error) => {\n if (error) reject(error);\n else resolve();\n });\n });\n\n const metadata = new grpc.Metadata();\n metadata.add('authorization', `Bearer ${this.#credentials.apiKey}`);\n metadata.add('x-client-id', this.#credentials.clientId);\n metadata.add('x-instance-id', this.#credentials.instanceId);\n\n const call = (stub['Listen'] as (m: unknown) => DuplexCall)(metadata);\n call.on('data', (msg) => this.#handleMessage(msg as Record<string, unknown>));\n call.on('error', (err) => { void this.#handleDisconnect(`error: ${String(err)}`); });\n call.on('end', () => { void this.#handleDisconnect('server_close'); });\n\n this.#call = call;\n this.#setState('connected');\n this.#reconnectAttempts = 0;\n this.#lastPongAt = Date.now();\n }\n\n #handleMessage(msg: Record<string, unknown>): void {\n if (msg['context_bundle']) {\n this.#handleBundle(msg['context_bundle'] as Record<string, unknown>);\n return;\n }\n if (msg['heartbeat_pong']) {\n this.#lastPongAt = Date.now();\n this.#missedHeartbeats = 0;\n return;\n }\n const signal = msg['signal'] as { signal_type?: string } | undefined;\n if (signal?.signal_type === 'closing') {\n void this.#handleDisconnect('server_signal_closing');\n }\n }\n\n #handleBundle(bundle: Record<string, unknown>): void {\n const bundleType = String(bundle['bundle_type'] ?? '') || 'anticipation';\n const conversationId = String(bundle['anticipation_conversation_id'] ?? '');\n\n if (bundleType !== UNCACHEABLE_BUNDLE_TYPE) this.#store(bundle, bundleType, conversationId);\n\n if (bundleType === 'compaction_update' && conversationId !== '') {\n // Python also deletes this conversation's `compacted_full` /\n // `compacted_context` entries from its separate CacheManager. This SDK\n // has no such cache, and calling dropConversation() here would delete\n // the bundle just stored above, so there is nothing to invalidate.\n this.#options.onCompactionUpdate?.(conversationId, bundle);\n }\n\n // Fires for every type, after storing, matching Python's ordering.\n this.#options.onContext?.(bundle);\n }\n\n #store(bundle: Record<string, unknown>, bundleType: string, conversationId: string): void {\n const itemsByType: Record<string, Array<Record<string, unknown>>> = {};\n for (const [type, list] of Object.entries(bundle['items_by_type'] ?? {})) {\n const items = (list as { items?: Array<Record<string, unknown>> })?.items;\n itemsByType[type] = items ?? [];\n }\n\n const ttlHint = Number(bundle['ttl_hint_seconds'] ?? 0);\n this.#cache.store({\n bundleId: String(bundle['bundle_id'] ?? ''),\n // The cache keys on ONE entity. User id wins when present, so a bundle\n // pushed for a user cannot be served to a different user in the same\n // customer; falling back to customer id keeps org-scope bundles usable.\n entityId:\n String(bundle['anticipation_user_id'] ?? '') ||\n String(bundle['anticipation_customer_id'] ?? '') ||\n null,\n conversationId: conversationId || null,\n itemsByType,\n // 0 means \"use the SDK default\"; anything else is floored at 60s.\n ttlHintSeconds: ttlHint > 0 ? Math.max(ttlHint, MIN_TTL_SECONDS) : null,\n bundleType,\n searchQueries: [\n ...((bundle['search_queries'] as string[] | undefined) ?? []),\n ...((bundle['search_keywords'] as string[] | undefined) ?? []),\n ],\n });\n }\n\n async #handleDisconnect(_reason: string): Promise<void> {\n if (this.#shutdownRequested) return;\n\n this.#closeCall();\n this.#setState('reconnecting');\n\n if (this.#reconnectAttempts >= MAX_RECONNECT_ATTEMPTS) {\n this.#setState('disconnected');\n return;\n }\n\n // Jittered exponential backoff. The jitter matters with many SDK instances\n // behind one deploy: without it they all retry in lockstep.\n const delay = Math.min(\n BACKOFF_BASE_MS * 2 ** this.#reconnectAttempts + Math.random() * 1_000,\n BACKOFF_MAX_MS,\n );\n this.#reconnectAttempts += 1;\n\n await this.#sleep(delay);\n if (this.#shutdownRequested) return;\n try {\n await this.#establish();\n } catch {\n void this.#handleDisconnect('reconnect_failed');\n }\n }\n\n #startHeartbeat(): void {\n this.#heartbeatTimer = setInterval(() => {\n if (!this.isConnected || this.#call === null) return;\n const now = Date.now();\n\n if (now - this.#lastPongAt > HEARTBEAT_TIMEOUT_MS) {\n this.#missedHeartbeats += 1;\n if (this.#missedHeartbeats >= MAX_MISSED_HEARTBEATS) {\n void this.#handleDisconnect('heartbeat_timeout');\n return;\n }\n }\n try {\n this.#call.write({ heartbeat_ping: { timestamp_ms: now } });\n } catch {\n void this.#handleDisconnect('heartbeat_write_error');\n }\n }, HEARTBEAT_INTERVAL_MS);\n // Never hold the process open on the heartbeat alone: a CLI that finishes\n // its work should exit, not hang for 30s.\n this.#heartbeatTimer.unref?.();\n }\n\n #stopHeartbeat(): void {\n if (this.#heartbeatTimer !== null) {\n clearInterval(this.#heartbeatTimer);\n this.#heartbeatTimer = null;\n }\n }\n\n #closeCall(): void {\n try {\n this.#call?.end();\n } catch {\n /* already torn down */\n }\n this.#call = null;\n }\n\n #setState(state: StreamState): void {\n this.#state = state;\n this.#options.onStateChange?.(state);\n }\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["/Users/
|
|
1
|
+
{"version":3,"sources":["/Users/scaler/maximem_synap_nested/synap/sdk/js/dist/chunk-ZKOJDUN4.cjs","../src/util/env.ts"],"names":[],"mappings":"AAAA;ACaA,IAAM,OAAA,kBAAS,IAAI,GAAA,CAAI,CAAC,MAAA,EAAQ,GAAA,EAAK,KAAK,CAAC,CAAA;AAE3C,SAAS,OAAA,CAAQ,IAAA,EAAkC;AACjD,EAAA,GAAA,CAAI,OAAO,QAAA,IAAY,YAAA,GAAe,OAAA,CAAQ,IAAA,IAAQ,KAAA,CAAA,EAAW,OAAO,KAAA,CAAA;AACxE,EAAA,OAAO,OAAA,CAAQ,GAAA,CAAI,IAAI,CAAA;AACzB;AAGO,SAAS,UAAA,CAAW,IAAA,EAAc,SAAA,EAAW,KAAA,EAAgB;AAClE,EAAA,MAAM,IAAA,EAAM,OAAA,CAAQ,IAAI,CAAA;AACxB,EAAA,GAAA,CAAI,IAAA,IAAQ,KAAA,EAAA,GAAa,GAAA,CAAI,IAAA,CAAK,EAAA,IAAM,EAAA,EAAI,OAAO,QAAA;AACnD,EAAA,OAAO,MAAA,CAAO,GAAA,CAAI,GAAA,CAAI,IAAA,CAAK,CAAA,CAAE,WAAA,CAAY,CAAC,CAAA;AAC5C;AAGO,SAAS,WAAA,CAAY,IAAA,EAA6B;AACvD,EAAA,MAAM,IAAA,kBAAM,OAAA,iBAAQ,IAAI,CAAA,6BAAG,IAAA,mBAAK,GAAA;AAChC,EAAA,GAAA,CAAI,CAAC,GAAA,EAAK,OAAO,IAAA;AACjB,EAAA,MAAM,EAAA,EAAI,MAAA,CAAO,GAAG,CAAA;AACpB,EAAA,OAAO,MAAA,CAAO,QAAA,CAAS,CAAC,EAAA,EAAI,EAAA,EAAI,IAAA;AAClC;AAEO,SAAS,MAAA,CAAO,IAAA,EAAkC;AACvD,EAAA,MAAM,EAAA,EAAI,OAAA,CAAQ,IAAI,CAAA;AACtB,EAAA,OAAO,EAAA,IAAM,KAAA,EAAA,GAAa,EAAA,IAAM,GAAA,EAAK,KAAA,EAAA,EAAY,CAAA;AACnD;ADjBA;AACA;AACE;AACA;AACA;AACF,4FAAC","file":"/Users/scaler/maximem_synap_nested/synap/sdk/js/dist/chunk-ZKOJDUN4.cjs","sourcesContent":[null,"/**\n * Environment access.\n *\n * Every read happens at CALL time, never at module load. Python does\n * `os.environ.get(...)` inside the function bodies, and tests plus runtime\n * toggles depend on that: a value captured at import time makes a later\n * `process.env` mutation look like the flag simply does not work. That is\n * gotcha G-S.\n *\n * `process` is absent on Workers and in the browser, so every accessor\n * tolerates it being missing.\n */\n\nconst TRUTHY = new Set(['true', '1', 'yes']);\n\nfunction readEnv(name: string): string | undefined {\n if (typeof process === 'undefined' || process.env === undefined) return undefined;\n return process.env[name];\n}\n\n/** Boolean flag. Defaults to false, matching the Python SDK's flags. */\nexport function getEnvFlag(name: string, fallback = false): boolean {\n const raw = readEnv(name);\n if (raw === undefined || raw.trim() === '') return fallback;\n return TRUTHY.has(raw.trim().toLowerCase());\n}\n\n/** Numeric setting. Returns null when unset OR malformed: a bad value must not fail closed. */\nexport function getEnvFloat(name: string): number | null {\n const raw = readEnv(name)?.trim();\n if (!raw) return null;\n const n = Number(raw);\n return Number.isFinite(n) ? n : null;\n}\n\nexport function getEnv(name: string): string | undefined {\n const v = readEnv(name);\n return v === undefined || v === '' ? undefined : v;\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["/Users/
|
|
1
|
+
{"version":3,"sources":["/Users/scaler/maximem_synap_nested/synap/sdk/js/dist/env-55ULHNJZ.cjs"],"names":[],"mappings":"AAAA;AACE;AACA;AACA;AACF,wDAA6B;AAC7B;AACE;AACA;AACA;AACF,kJAAC","file":"/Users/scaler/maximem_synap_nested/synap/sdk/js/dist/env-55ULHNJZ.cjs"}
|
package/dist/grpc/index.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["/Users/
|
|
1
|
+
{"version":3,"sources":["/Users/scaler/maximem_synap_nested/synap/sdk/js/dist/grpc/index.cjs","../../src/grpc/index.ts"],"names":[],"mappings":"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","file":"/Users/scaler/maximem_synap_nested/synap/sdk/js/dist/grpc/index.cjs","sourcesContent":[null,"/**\n * gRPC anticipation stream: availability and loading.\n *\n * This is a SUBPATH export (`@maximem/synap-js-sdk/grpc`) and is never\n * imported by the main entry point. Three reasons, all of which have bitten\n * someone already:\n *\n * 1. `@grpc/grpc-js` plus its protos is roughly 5MB. HTTP-only and Edge users\n * should not pay for it (gotcha G-Q).\n * 2. grpc-js is built on `node:http2`, `node:net` and `node:tls`. Merely\n * importing it on Edge or Workers fails the *build*, not the call. Keeping\n * it behind a subpath plus a lazy `import()` means importing the SDK on\n * Edge stays safe.\n * 3. It is an `optionalDependency`, so it may legitimately be absent.\n *\n * ## Proto loading\n *\n * The stream is live. The proto ships as an INLINED JSON descriptor\n * (./descriptor.ts) loaded through `proto-loader.fromJSON`, not through\n * `loadSync(path)`. proto-loader's file-based path reads the `.proto` off disk\n * at runtime, which breaks under webpack/turbopack bundling and Vercel's `nft`\n * file tracing: at deploy time rather than at test time (gotcha G-P). Inlining\n * gets the same result as ts-proto codegen without a codegen toolchain.\n */\n\nimport { ListeningNotActiveError } from '../errors.js';\nexport { GrpcStreamClient } from './stream-client.js';\nexport type {\n StreamState, StreamCredentials, StreamClientOptions, ConversationEventInput,\n} from './stream-client.js';\nexport { PROTO_SHA } from './descriptor.js';\n\nexport type GrpcAvailability =\n | { available: true }\n | { available: false; reason: 'not-node' | 'module-missing'; detail: string };\n\n/**\n * Whether a gRPC stream could run here.\n *\n * Deliberately does not throw: callers use this to decide whether to offer the\n * stream at all, and a hard failure at that point is unhelpful.\n */\nexport async function checkGrpcAvailability(): Promise<GrpcAvailability> {\n const isNode =\n typeof process !== 'undefined' &&\n process.versions?.node !== undefined &&\n typeof (globalThis as { EdgeRuntime?: unknown }).EdgeRuntime === 'undefined';\n\n if (!isNode) {\n return {\n available: false,\n reason: 'not-node',\n detail:\n 'gRPC needs raw TCP and node:http2, which Edge runtimes and Workers do ' +\n 'not provide. HTTP context fetching works normally here; only the ' +\n 'anticipation stream is unavailable. Reaching Edge would require a ' +\n 'gRPC-Web or Connect endpoint on the server, which does not exist yet.',\n };\n }\n\n try {\n await import(/* @vite-ignore */ '@grpc/grpc-js');\n return { available: true };\n } catch (error) {\n return {\n available: false,\n reason: 'module-missing',\n detail:\n '@grpc/grpc-js is an optional dependency and is not installed. Run ' +\n '`npm install @grpc/grpc-js` to enable the anticipation stream. ' +\n `(${(error as Error)?.message ?? String(error)})`,\n };\n }\n}\n\nexport interface ListenOptions {\n conversationId: string;\n userId?: string;\n customerId?: string;\n onBundle?: (bundle: unknown) => void;\n}\n\nexport interface ListeningSession {\n stop(): Promise<void>;\n readonly active: boolean;\n}\n\n/**\n * Start the anticipation stream directly, without a SynapClient.\n *\n * Most callers want `client.instance.listen()` instead, which shares the\n * client's credentials and anticipation cache. This exists for the case where\n * only the stream is wanted.\n *\n * **Opt-in, and off by default.** The removed wrapper called `listen()`\n * unconditionally during init, so every user had a stream whether they asked\n * for one or not. Making it opt-in is the right default, but it is not a\n * neutral change: fewer streams means fewer anticipation hits and therefore\n * MORE billed cloud fetches for existing users. That has to be announced\n * rather than discovered (gotcha G-Y).\n */\nexport async function listen(\n options: ListenOptions & {\n apiKey?: string;\n clientId?: string;\n instanceId?: string;\n host?: string;\n port?: number;\n useTls?: boolean;\n },\n): Promise<ListeningSession> {\n if (!options.conversationId) {\n // conversation_id is not a scope tier, but the stream genuinely requires\n // one: it is what the server keys the anticipation session on.\n throw new ListeningNotActiveError('conversation_id is required to start a listening stream');\n }\n\n const availability = await checkGrpcAvailability();\n if (!availability.available) {\n throw new ListeningNotActiveError(availability.detail);\n }\n\n const [{ GrpcStreamClient: StreamClient }, { AnticipationCache }, { getEnv }] = await Promise.all([\n import('./stream-client.js'),\n import('../context/anticipation-cache.js'),\n import('../util/env.js'),\n ]);\n\n const apiKey = options.apiKey ?? getEnv('SYNAP_API_KEY') ?? '';\n if (apiKey === '') {\n throw new ListeningNotActiveError(\n 'No Synap API key found. Set SYNAP_API_KEY or pass apiKey.',\n );\n }\n\n const cache = new AnticipationCache();\n const client = new StreamClient(\n {\n apiKey,\n clientId: options.clientId ?? getEnv('SYNAP_CLIENT_ID') ?? '',\n instanceId: options.instanceId ?? getEnv('SYNAP_INSTANCE_ID') ?? '',\n },\n cache,\n {\n ...(options.host !== undefined ? { host: options.host } : {}),\n ...(options.port !== undefined ? { port: options.port } : {}),\n ...(options.useTls !== undefined ? { useTls: options.useTls } : {}),\n ...(options.onBundle !== undefined ? { onContext: options.onBundle } : {}),\n },\n );\n await client.connect();\n client.sendSessionControl({\n action: 'start',\n conversation_id: options.conversationId,\n ...(options.userId !== undefined ? { user_id: options.userId } : {}),\n ...(options.customerId !== undefined ? { customer_id: options.customerId } : {}),\n });\n\n return {\n stop: () => client.disconnect(),\n get active() { return client.isConnected; },\n };\n}\n"]}
|
package/dist/index.cjs
CHANGED
|
@@ -200,6 +200,16 @@ var Heartbeat = (_class = class {
|
|
|
200
200
|
}
|
|
201
201
|
}, _class);
|
|
202
202
|
|
|
203
|
+
// src/scoping.ts
|
|
204
|
+
var B2C_ISOLATION = "equals_customer";
|
|
205
|
+
function checkCustomerId(isolation, customerId, where, instanceId) {
|
|
206
|
+
if (customerId === void 0 || customerId === null || customerId === "") return;
|
|
207
|
+
if (isolation !== B2C_ISOLATION) return;
|
|
208
|
+
throw new (0, _chunkHR5Y3KXScjs.InvalidInputError)(
|
|
209
|
+
`${where}: customer_id is not accepted on this instance${instanceId ? ` (${instanceId})` : ""}, which is B2C (user_context_isolation='${B2C_ISOLATION}'). Send user_id only; it is the whole identity, and the server files and reads your data under it. Received customer_id=${JSON.stringify(customerId)}.`
|
|
210
|
+
);
|
|
211
|
+
}
|
|
212
|
+
|
|
203
213
|
// src/transport/http.ts
|
|
204
214
|
var DEFAULT_BASE_URL = "https://synap-cloud-prod.maximem.ai";
|
|
205
215
|
var DEFAULT_TIMEOUTS = { connect: 5, read: 30, write: 10 };
|
|
@@ -215,7 +225,7 @@ var HttpTransport = (_class2 = class {
|
|
|
215
225
|
|
|
216
226
|
|
|
217
227
|
__init2() {this.closed = false}
|
|
218
|
-
constructor(options) {;_class2.prototype.__init2.call(this);
|
|
228
|
+
constructor(options) {;_class2.prototype.__init2.call(this);_class2.prototype.__init3.call(this);
|
|
219
229
|
this.#credentials = options.credentials;
|
|
220
230
|
this.baseUrl = (_nullishCoalesce(options.baseUrl, () => ( DEFAULT_BASE_URL))).replace(/\/+$/, "");
|
|
221
231
|
this.timeouts = { ...DEFAULT_TIMEOUTS, ...options.timeouts };
|
|
@@ -253,6 +263,25 @@ var HttpTransport = (_class2 = class {
|
|
|
253
263
|
updateCredentials(patch) {
|
|
254
264
|
this.#credentials = { ...this.#credentials, ...patch };
|
|
255
265
|
}
|
|
266
|
+
/**
|
|
267
|
+
* The instance's scoping mode, from whoami. Lives here rather than on the
|
|
268
|
+
* client because every interface factory already receives the transport,
|
|
269
|
+
* and it is per-client, so a module-level global would be wrong the moment a
|
|
270
|
+
* process holds two clients.
|
|
271
|
+
*
|
|
272
|
+
* undefined means the server did not report it, which is true of any
|
|
273
|
+
* deployment older than the field, and must mean "enforce nothing".
|
|
274
|
+
*/
|
|
275
|
+
__init3() {this.userContextIsolation = void 0}
|
|
276
|
+
/** Refuse a customer_id on a B2C instance, at the call site. */
|
|
277
|
+
checkCustomerId(customerId, where) {
|
|
278
|
+
checkCustomerId(
|
|
279
|
+
this.userContextIsolation,
|
|
280
|
+
customerId,
|
|
281
|
+
where,
|
|
282
|
+
this.#credentials.instanceId
|
|
283
|
+
);
|
|
284
|
+
}
|
|
256
285
|
setTimeouts(timeouts) {
|
|
257
286
|
this.timeouts = { ...this.timeouts, ...timeouts };
|
|
258
287
|
}
|
|
@@ -527,6 +556,10 @@ function buildFetchRequest(scope, options) {
|
|
|
527
556
|
}
|
|
528
557
|
async function fetchContext(transport, scope, options = {}, hooks = {}) {
|
|
529
558
|
const startedAt = Date.now();
|
|
559
|
+
transport.checkCustomerId(
|
|
560
|
+
opt(options, "customer_id", "customerId"),
|
|
561
|
+
`${scope}.context.fetch`
|
|
562
|
+
);
|
|
530
563
|
const anticipated = _nullishCoalesce(_optionalChain([hooks, 'access', _26 => _26.beforeFetch, 'optionalCall', _27 => _27(scope, options)]), () => ( null));
|
|
531
564
|
if (anticipated !== null) {
|
|
532
565
|
_optionalChain([hooks, 'access', _28 => _28.onServedFromCache, 'optionalCall', _29 => _29(scope, options, anticipated)]);
|
|
@@ -787,6 +820,8 @@ var TERMINAL_STATUSES = /* @__PURE__ */ new Set(["completed", "failed", "error",
|
|
|
787
820
|
function createMemoriesInterface(transport) {
|
|
788
821
|
return {
|
|
789
822
|
async create(options) {
|
|
823
|
+
const o2 = options;
|
|
824
|
+
transport.checkCustomerId(_nullishCoalesce(o2["customer_id"], () => ( o2["customerId"])), "memories.create");
|
|
790
825
|
return transport.request("memories_create", { body: buildCreateBody(options) });
|
|
791
826
|
},
|
|
792
827
|
async batch_create(options) {
|
|
@@ -803,7 +838,7 @@ function createMemoriesInterface(transport) {
|
|
|
803
838
|
const userId = _nullishCoalesce(options.user_id, () => ( options.userId));
|
|
804
839
|
const customerId = _nullishCoalesce(options.customer_id, () => ( options.customerId));
|
|
805
840
|
if (!userId) throw new (0, _chunkHR5Y3KXScjs.InvalidInputError)("user_id is required");
|
|
806
|
-
|
|
841
|
+
transport.checkCustomerId(customerId, "memories.create_from_file");
|
|
807
842
|
const filePath = _nullishCoalesce(options.file_path, () => ( options.filePath));
|
|
808
843
|
const sources = [filePath, options.file, options.text].filter((v) => v !== void 0);
|
|
809
844
|
if (sources.length === 0) {
|
|
@@ -946,7 +981,6 @@ function buildRecordMessageBody(options) {
|
|
|
946
981
|
throw new (0, _chunkHR5Y3KXScjs.InvalidInputError)("content is required");
|
|
947
982
|
}
|
|
948
983
|
if (!userId) throw new (0, _chunkHR5Y3KXScjs.InvalidInputError)("user_id is required");
|
|
949
|
-
if (!customerId) throw new (0, _chunkHR5Y3KXScjs.InvalidInputError)("customer_id is required");
|
|
950
984
|
const body = {
|
|
951
985
|
conversation_id: conversationId,
|
|
952
986
|
role: options.role,
|
|
@@ -1051,6 +1085,10 @@ function createConversationNamespace(transport, subscribers = new CompactionSubs
|
|
|
1051
1085
|
};
|
|
1052
1086
|
return {
|
|
1053
1087
|
async record_message(options) {
|
|
1088
|
+
transport.checkCustomerId(
|
|
1089
|
+
_nullishCoalesce(options["customer_id"], () => ( options["customerId"])),
|
|
1090
|
+
"conversation.record_message"
|
|
1091
|
+
);
|
|
1054
1092
|
const body = buildRecordMessageBody(options);
|
|
1055
1093
|
const result = await transport.request("conversations_messages", { body });
|
|
1056
1094
|
onTurn({
|
|
@@ -1069,6 +1107,13 @@ function createConversationNamespace(transport, subscribers = new CompactionSubs
|
|
|
1069
1107
|
if (!Array.isArray(messages) || messages.length === 0) {
|
|
1070
1108
|
throw new (0, _chunkHR5Y3KXScjs.InvalidInputError)("messages must be a non-empty array");
|
|
1071
1109
|
}
|
|
1110
|
+
for (const m of messages) {
|
|
1111
|
+
const mo = m;
|
|
1112
|
+
transport.checkCustomerId(
|
|
1113
|
+
_nullishCoalesce(mo["customer_id"], () => ( mo["customerId"])),
|
|
1114
|
+
"conversation.record_messages_batch"
|
|
1115
|
+
);
|
|
1116
|
+
}
|
|
1072
1117
|
const bodies = messages.map(buildRecordMessageBody);
|
|
1073
1118
|
const result = await transport.request("conversations_messages_batch", {
|
|
1074
1119
|
body: { messages: bodies }
|
|
@@ -2377,6 +2422,8 @@ var SynapClient = class {
|
|
|
2377
2422
|
const whoami = await this.#transport.request("whoami", {});
|
|
2378
2423
|
const resolvedClientId = String(_nullishCoalesce(whoami["client_id"], () => ( "")));
|
|
2379
2424
|
const resolvedInstanceId = String(_nullishCoalesce(whoami["instance_id"], () => ( "")));
|
|
2425
|
+
const iso2 = whoami["user_context_isolation"];
|
|
2426
|
+
this.#transport.userContextIsolation = typeof iso2 === "string" ? iso2 : void 0;
|
|
2380
2427
|
this.#transport.updateCredentials({
|
|
2381
2428
|
...resolvedClientId !== "" && credentials.clientId === "" ? { clientId: resolvedClientId } : {},
|
|
2382
2429
|
...resolvedInstanceId !== "" && credentials.instanceId === "" ? { instanceId: resolvedInstanceId } : {}
|