@dexcost/sdk 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +210 -0
- package/dist/adapters/_netbytes.d.ts +31 -0
- package/dist/adapters/_netbytes.d.ts.map +1 -0
- package/dist/adapters/_netbytes.js +154 -0
- package/dist/adapters/_netbytes.js.map +1 -0
- package/dist/adapters/aws-lambda.d.ts +41 -0
- package/dist/adapters/aws-lambda.d.ts.map +1 -0
- package/dist/adapters/aws-lambda.js +65 -0
- package/dist/adapters/aws-lambda.js.map +1 -0
- package/dist/adapters/browser.d.ts +52 -0
- package/dist/adapters/browser.d.ts.map +1 -0
- package/dist/adapters/browser.js +127 -0
- package/dist/adapters/browser.js.map +1 -0
- package/dist/adapters/compute-wrap.d.ts +33 -0
- package/dist/adapters/compute-wrap.d.ts.map +1 -0
- package/dist/adapters/compute-wrap.js +188 -0
- package/dist/adapters/compute-wrap.js.map +1 -0
- package/dist/adapters/data/aws_lambda_pricing.json +61 -0
- package/dist/adapters/gpu-wrap.d.ts +31 -0
- package/dist/adapters/gpu-wrap.d.ts.map +1 -0
- package/dist/adapters/gpu-wrap.js +147 -0
- package/dist/adapters/gpu-wrap.js.map +1 -0
- package/dist/adapters/http.d.ts +58 -0
- package/dist/adapters/http.d.ts.map +1 -0
- package/dist/adapters/http.js +769 -0
- package/dist/adapters/http.js.map +1 -0
- package/dist/adapters/index.d.ts +11 -0
- package/dist/adapters/index.d.ts.map +1 -0
- package/dist/adapters/index.js +12 -0
- package/dist/adapters/index.js.map +1 -0
- package/dist/adapters/network-accountant.d.ts +63 -0
- package/dist/adapters/network-accountant.d.ts.map +1 -0
- package/dist/adapters/network-accountant.js +153 -0
- package/dist/adapters/network-accountant.js.map +1 -0
- package/dist/cli/index.d.ts +13 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +225 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/cli/scanner.d.ts +39 -0
- package/dist/cli/scanner.d.ts.map +1 -0
- package/dist/cli/scanner.js +480 -0
- package/dist/cli/scanner.js.map +1 -0
- package/dist/clients.d.ts +54 -0
- package/dist/clients.d.ts.map +1 -0
- package/dist/clients.js +240 -0
- package/dist/clients.js.map +1 -0
- package/dist/cloud-detect.d.ts +96 -0
- package/dist/cloud-detect.d.ts.map +1 -0
- package/dist/cloud-detect.js +545 -0
- package/dist/cloud-detect.js.map +1 -0
- package/dist/core/auto-task.d.ts +20 -0
- package/dist/core/auto-task.d.ts.map +1 -0
- package/dist/core/auto-task.js +34 -0
- package/dist/core/auto-task.js.map +1 -0
- package/dist/core/cgroup-reader.d.ts +45 -0
- package/dist/core/cgroup-reader.d.ts.map +1 -0
- package/dist/core/cgroup-reader.js +124 -0
- package/dist/core/cgroup-reader.js.map +1 -0
- package/dist/core/cgroup-walker.d.ts +60 -0
- package/dist/core/cgroup-walker.d.ts.map +1 -0
- package/dist/core/cgroup-walker.js +166 -0
- package/dist/core/cgroup-walker.js.map +1 -0
- package/dist/core/compute-accountant.d.ts +51 -0
- package/dist/core/compute-accountant.d.ts.map +1 -0
- package/dist/core/compute-accountant.js +179 -0
- package/dist/core/compute-accountant.js.map +1 -0
- package/dist/core/compute-runtime.d.ts +42 -0
- package/dist/core/compute-runtime.d.ts.map +1 -0
- package/dist/core/compute-runtime.js +80 -0
- package/dist/core/compute-runtime.js.map +1 -0
- package/dist/core/config.d.ts +44 -0
- package/dist/core/config.d.ts.map +1 -0
- package/dist/core/config.js +66 -0
- package/dist/core/config.js.map +1 -0
- package/dist/core/context.d.ts +76 -0
- package/dist/core/context.d.ts.map +1 -0
- package/dist/core/context.js +91 -0
- package/dist/core/context.js.map +1 -0
- package/dist/core/fargate-metadata.d.ts +27 -0
- package/dist/core/fargate-metadata.d.ts.map +1 -0
- package/dist/core/fargate-metadata.js +102 -0
- package/dist/core/fargate-metadata.js.map +1 -0
- package/dist/core/gpu-accountant.d.ts +104 -0
- package/dist/core/gpu-accountant.d.ts.map +1 -0
- package/dist/core/gpu-accountant.js +383 -0
- package/dist/core/gpu-accountant.js.map +1 -0
- package/dist/core/gpu-runtime.d.ts +58 -0
- package/dist/core/gpu-runtime.d.ts.map +1 -0
- package/dist/core/gpu-runtime.js +131 -0
- package/dist/core/gpu-runtime.js.map +1 -0
- package/dist/core/heuristics.d.ts +74 -0
- package/dist/core/heuristics.d.ts.map +1 -0
- package/dist/core/heuristics.js +182 -0
- package/dist/core/heuristics.js.map +1 -0
- package/dist/core/models.d.ts +149 -0
- package/dist/core/models.d.ts.map +1 -0
- package/dist/core/models.js +226 -0
- package/dist/core/models.js.map +1 -0
- package/dist/core/nvml-reader.d.ts +114 -0
- package/dist/core/nvml-reader.d.ts.map +1 -0
- package/dist/core/nvml-reader.js +323 -0
- package/dist/core/nvml-reader.js.map +1 -0
- package/dist/core/session.d.ts +48 -0
- package/dist/core/session.d.ts.map +1 -0
- package/dist/core/session.js +123 -0
- package/dist/core/session.js.map +1 -0
- package/dist/core/tracker.d.ts +364 -0
- package/dist/core/tracker.d.ts.map +1 -0
- package/dist/core/tracker.js +1073 -0
- package/dist/core/tracker.js.map +1 -0
- package/dist/data/compute_prices.json +180 -0
- package/dist/data/egress_prices.json +418 -0
- package/dist/data/gpu_prices.json +412 -0
- package/dist/data/service_prices.json +2595 -0
- package/dist/dev-console.d.ts +12 -0
- package/dist/dev-console.d.ts.map +1 -0
- package/dist/dev-console.js +60 -0
- package/dist/dev-console.js.map +1 -0
- package/dist/index.d.ts +52 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +61 -0
- package/dist/index.js.map +1 -0
- package/dist/instruments/anthropic.d.ts +26 -0
- package/dist/instruments/anthropic.d.ts.map +1 -0
- package/dist/instruments/anthropic.js +242 -0
- package/dist/instruments/anthropic.js.map +1 -0
- package/dist/instruments/bedrock.d.ts +29 -0
- package/dist/instruments/bedrock.d.ts.map +1 -0
- package/dist/instruments/bedrock.js +215 -0
- package/dist/instruments/bedrock.js.map +1 -0
- package/dist/instruments/cohere.d.ts +29 -0
- package/dist/instruments/cohere.d.ts.map +1 -0
- package/dist/instruments/cohere.js +237 -0
- package/dist/instruments/cohere.js.map +1 -0
- package/dist/instruments/gemini.d.ts +30 -0
- package/dist/instruments/gemini.d.ts.map +1 -0
- package/dist/instruments/gemini.js +247 -0
- package/dist/instruments/gemini.js.map +1 -0
- package/dist/instruments/index.d.ts +35 -0
- package/dist/instruments/index.d.ts.map +1 -0
- package/dist/instruments/index.js +54 -0
- package/dist/instruments/index.js.map +1 -0
- package/dist/instruments/mcp.d.ts +24 -0
- package/dist/instruments/mcp.d.ts.map +1 -0
- package/dist/instruments/mcp.js +459 -0
- package/dist/instruments/mcp.js.map +1 -0
- package/dist/instruments/openai.d.ts +26 -0
- package/dist/instruments/openai.d.ts.map +1 -0
- package/dist/instruments/openai.js +221 -0
- package/dist/instruments/openai.js.map +1 -0
- package/dist/instruments/vercel-ai.d.ts +28 -0
- package/dist/instruments/vercel-ai.d.ts.map +1 -0
- package/dist/instruments/vercel-ai.js +192 -0
- package/dist/instruments/vercel-ai.js.map +1 -0
- package/dist/integrations/langchain.d.ts +65 -0
- package/dist/integrations/langchain.d.ts.map +1 -0
- package/dist/integrations/langchain.js +165 -0
- package/dist/integrations/langchain.js.map +1 -0
- package/dist/middleware/express.d.ts +55 -0
- package/dist/middleware/express.d.ts.map +1 -0
- package/dist/middleware/express.js +101 -0
- package/dist/middleware/express.js.map +1 -0
- package/dist/middleware/index.d.ts +6 -0
- package/dist/middleware/index.d.ts.map +1 -0
- package/dist/middleware/index.js +5 -0
- package/dist/middleware/index.js.map +1 -0
- package/dist/pricing/compute-pricing.d.ts +57 -0
- package/dist/pricing/compute-pricing.d.ts.map +1 -0
- package/dist/pricing/compute-pricing.js +627 -0
- package/dist/pricing/compute-pricing.js.map +1 -0
- package/dist/pricing/cost_map.json +37665 -0
- package/dist/pricing/egress-pricing.d.ts +55 -0
- package/dist/pricing/egress-pricing.d.ts.map +1 -0
- package/dist/pricing/egress-pricing.js +226 -0
- package/dist/pricing/egress-pricing.js.map +1 -0
- package/dist/pricing/engine.d.ts +24 -0
- package/dist/pricing/engine.d.ts.map +1 -0
- package/dist/pricing/engine.js +148 -0
- package/dist/pricing/engine.js.map +1 -0
- package/dist/pricing/gpu-pricing.d.ts +63 -0
- package/dist/pricing/gpu-pricing.d.ts.map +1 -0
- package/dist/pricing/gpu-pricing.js +484 -0
- package/dist/pricing/gpu-pricing.js.map +1 -0
- package/dist/pricing/rates.d.ts +17 -0
- package/dist/pricing/rates.d.ts.map +1 -0
- package/dist/pricing/rates.js +102 -0
- package/dist/pricing/rates.js.map +1 -0
- package/dist/pricing/service-catalog.d.ts +87 -0
- package/dist/pricing/service-catalog.d.ts.map +1 -0
- package/dist/pricing/service-catalog.js +406 -0
- package/dist/pricing/service-catalog.js.map +1 -0
- package/dist/schema/dexcost-event.v1.json +111 -0
- package/dist/schema/dexcost-task.v1.json +160 -0
- package/dist/schema/validate.d.ts +15 -0
- package/dist/schema/validate.d.ts.map +1 -0
- package/dist/schema/validate.js +87 -0
- package/dist/schema/validate.js.map +1 -0
- package/dist/security/redaction.d.ts +55 -0
- package/dist/security/redaction.d.ts.map +1 -0
- package/dist/security/redaction.js +144 -0
- package/dist/security/redaction.js.map +1 -0
- package/dist/transport/buffer.d.ts +117 -0
- package/dist/transport/buffer.d.ts.map +1 -0
- package/dist/transport/buffer.js +759 -0
- package/dist/transport/buffer.js.map +1 -0
- package/dist/transport/pusher.d.ts +89 -0
- package/dist/transport/pusher.d.ts.map +1 -0
- package/dist/transport/pusher.js +323 -0
- package/dist/transport/pusher.js.map +1 -0
- package/package.json +93 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"buffer.js","sourceRoot":"","sources":["../../src/transport/buffer.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AASH,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AACpC,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AA2D1C,8EAA8E;AAC9E,UAAU;AACV,8EAA8E;AAE9E,SAAS,UAAU,CAAC,GAAa;IAC/B,OAAO;QACL,OAAO,EAAE,GAAG,CAAC,QAAQ;QACrB,MAAM,EAAE,GAAG,CAAC,OAAO;QACnB,SAAS,EAAE,GAAG,CAAC,UAAoC;QACnD,QAAQ,EAAE,GAAG,CAAC,QAAQ,IAAI,SAAS;QACnC,KAAK,EAAE,GAAG,CAAC,KAAK,IAAI,SAAS;QAC7B,WAAW,EAAE,GAAG,CAAC,YAAY,IAAI,SAAS;QAC1C,YAAY,EAAE,GAAG,CAAC,aAAa,IAAI,SAAS;QAC5C,YAAY,EAAE,GAAG,CAAC,aAAa,IAAI,SAAS;QAC5C,WAAW,EAAE,GAAG,CAAC,YAAY,IAAI,SAAS;QAC1C,OAAO,EAAE,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;QAC7B,SAAS,EAAE,GAAG,CAAC,UAAU,IAAI,SAAS;QACtC,cAAc,EAAE,GAAG,CAAC,eAA8C;QAClE,aAAa,EAAE,GAAG,CAAC,cAA4C,IAAI,SAAS;QAC5E,cAAc,EAAE,GAAG,CAAC,eAAe,IAAI,SAAS;QAChD,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC;QAC9B,WAAW,EAAE,GAAG,CAAC,YAAY,IAAI,SAAS;QAC1C,OAAO,EAAE,GAAG,CAAC,QAAQ,IAAI,SAAS;QAClC,OAAO,EAAE,CAAC,GAAG,EAAE;YACb,IAAI,CAAC,GAA4B,EAAE,CAAC;YACpC,IAAI,CAAC;gBACH,CAAC,GAAG,GAAG,CAAC,OAAO,IAAI,IAAI,CAAC,CAAC,CAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAA6B,CAAC,CAAC,CAAC,EAAE,CAAC;YACtF,CAAC;YAAC,MAAM,CAAC;gBACP,CAAC,GAAG,EAAE,CAAC;YACT,CAAC;YACD,OAAO,CAAC,CAAC;QACX,CAAC,CAAC,EAAE;QACJ,UAAU,EAAE,IAAI,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC;QACnC,aAAa,EAAE,GAAG;KACnB,CAAC;AACJ,CAAC;AAED,SAAS,SAAS,CAAC,GAAY;IAC7B,OAAO;QACL,MAAM,EAAE,GAAG,CAAC,OAAO;QACnB,QAAQ,EAAE,GAAG,CAAC,SAAS;QACvB,MAAM,EAAE,GAAG,CAAC,MAAwB;QACpC,SAAS,EAAE,IAAI,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC;QACnC,OAAO,EAAE,GAAG,CAAC,QAAQ,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,SAAS;QAClE,QAAQ,EAAE,CAAC,GAAG,EAAE;YACd,IAAI,CAAC,GAA4B,EAAE,CAAC;YACpC,IAAI,CAAC;gBACH,CAAC,GAAG,GAAG,CAAC,QAAQ,IAAI,IAAI,CAAC,CAAC,CAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAA6B,CAAC,CAAC,CAAC,EAAE,CAAC;YACxF,CAAC;YAAC,MAAM,CAAC;gBACP,CAAC,GAAG,EAAE,CAAC;YACT,CAAC;YACD,OAAO,CAAC,CAAC;QACX,CAAC,CAAC,EAAE;QACJ,UAAU,EAAE,MAAM,CAAC,GAAG,CAAC,YAAY,IAAI,GAAG,CAAC;QAC3C,eAAe,EAAE,MAAM,CAAC,GAAG,CAAC,iBAAiB,IAAI,GAAG,CAAC;QACrD,cAAc,EAAE,MAAM,CAAC,GAAG,CAAC,gBAAgB,IAAI,GAAG,CAAC;QACnD,YAAY,EAAE,MAAM,CAAC,GAAG,CAAC,cAAc,IAAI,GAAG,CAAC;QAC/C,gBAAgB,EAAE,GAAG,CAAC,kBAAkB,IAAI,CAAC;QAC7C,iBAAiB,EAAE,GAAG,CAAC,mBAAmB,IAAI,CAAC;QAC/C,iBAAiB,EAAE,GAAG,CAAC,mBAAmB,IAAI,CAAC;QAC/C,UAAU,EAAE,GAAG,CAAC,WAAW,IAAI,CAAC;QAChC,YAAY,EAAE,MAAM,CAAC,GAAG,CAAC,cAAc,IAAI,GAAG,CAAC;QAC/C,YAAY,EAAE,GAAG,CAAC,aAAa,IAAI,CAAC;QACpC,UAAU,EAAE,GAAG,CAAC,WAAW,IAAI,SAAS;QACxC,SAAS,EAAE,GAAG,CAAC,UAAU,IAAI,SAAS;QACtC,YAAY,EAAE,GAAG,CAAC,cAAc,IAAI,SAAS;QAC7C,YAAY,EAAE,GAAG,CAAC,aAAa,IAAI,SAAS;QAC5C,OAAO,EAAE,GAAG,CAAC,OAAO,IAAI,SAAS;QACjC,+DAA+D;QAC/D,gEAAgE;QAChE,kEAAkE;QAClE,+CAA+C;QAC/C,cAAc,EAAE,CAAC;QACjB,eAAe,EAAE,CAAC;QAClB,gBAAgB,EAAE,CAAC;QACnB,aAAa,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE;QAC5B,cAAc,EAAE,CAAC;QACjB,gEAAgE;QAChE,8DAA8D;QAC9D,+DAA+D;QAC/D,2BAA2B;QAC3B,UAAU,EAAE,CAAC;QACb,aAAa,EAAE,GAAG;KACnB,CAAC;AACJ,CAAC;AAED,8EAA8E;AAC9E,MAAM;AACN,8EAA8E;AAE9E,MAAM,YAAY,GAAG;;;;;;;;;;;;;;;;;;;;;;;;EAwBnB,CAAC;AAEH,MAAM,aAAa,GAAG;;;;;;;;;;;;;;;;;;;;;;EAsBpB,CAAC;AAEH,MAAM,qBAAqB,GAAG;;;;;;EAM5B,CAAC;AAEH,MAAM,OAAO,GAAG;IACd,iFAAiF;IACjF,2EAA2E;IAC3E,kEAAkE;IAClE,+DAA+D;IAC/D,6EAA6E;IAC7E,8EAA8E;IAC9E,6EAA6E;CAC9E,CAAC;AAEF,8EAA8E;AAC9E,4EAA4E;AAC5E,2DAA2D;AAC3D,EAAE;AACF,oEAAoE;AACpE,kEAAkE;AAClE,uEAAuE;AACvE,kEAAkE;AAClE,sEAAsE;AACtE,oEAAoE;AACpE,4DAA4D;AAC5D,8EAA8E;AAE9E,MAAM,qBAAqB,GAAG,MAAM,CAAC;AACrC,MAAM,oBAAoB,GAAG,MAAM,CAAC;AAgBpC,MAAM,iBAAiB;IACb,OAAO,GAAG,IAAI,GAAG,EAAyB,CAAC;IAC3C,MAAM,GAAG,IAAI,GAAG,EAAwB,CAAC;IAEjD,QAAQ,CAAC,KAAgB;QACvB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,qBAAqB,CAAC,CAAC;QACjD,yCAAyC;QACzC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,EAAE;YAC9B,KAAK,EAAE,EAAE,GAAG,KAAK,EAAE;YACnB,UAAU,EAAE,SAAS;YACrB,UAAU,EAAE,IAAI,IAAI,EAAE;YACtB,QAAQ,EAAE,IAAI;SACf,CAAC,CAAC;IACL,CAAC;IAED,WAAW,CAAC,KAAgB;QAC1B,kEAAkE;QAClE,+BAA+B;QAC/B,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QACjD,IAAI,QAAQ,IAAI,IAAI;YAAE,OAAO;QAC7B,QAAQ,CAAC,KAAK,GAAG,EAAE,GAAG,KAAK,EAAE,CAAC;IAChC,CAAC;IAED,UAAU,CAAC,IAAU;QACnB,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC9C,IAAI,QAAQ,IAAI,IAAI,EAAE,CAAC;YACrB,QAAQ,CAAC,IAAI,GAAG,EAAE,GAAG,IAAI,EAAE,CAAC;YAC5B,OAAO;QACT,CAAC;QACD,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,oBAAoB,CAAC,CAAC;QAC/C,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE;YAC3B,IAAI,EAAE,EAAE,GAAG,IAAI,EAAE;YACjB,UAAU,EAAE,SAAS;YACrB,UAAU,EAAE,IAAI,IAAI,EAAE;YACtB,QAAQ,EAAE,IAAI;SACf,CAAC,CAAC;IACL,CAAC;IAED,gBAAgB,CAAC,KAAa;QAC5B,MAAM,GAAG,GAAgB,EAAE,CAAC;QAC5B,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC;YAC1C,IAAI,KAAK,CAAC,UAAU,KAAK,SAAS;gBAAE,SAAS;YAC7C,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YACtB,IAAI,GAAG,CAAC,MAAM,IAAI,KAAK;gBAAE,MAAM;QACjC,CAAC;QACD,OAAO,GAAG,CAAC;IACb,CAAC;IAED,UAAU,CAAC,QAAkB;QAC3B,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,KAAK,MAAM,EAAE,IAAI,QAAQ,EAAE,CAAC;YAC1B,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YACnC,IAAI,KAAK,IAAI,IAAI,EAAE,CAAC;gBAClB,KAAK,CAAC,UAAU,GAAG,QAAQ,CAAC;gBAC5B,KAAK,CAAC,QAAQ,GAAG,GAAG,CAAC;YACvB,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,CAAC,MAAc;QACpB,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC;IACvC,CAAC;IAED,WAAW;QACT,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IACzD,CAAC;IAED,eAAe;QACb,MAAM,GAAG,GAAW,EAAE,CAAC;QACvB,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,CAAC;YACzC,IAAI,KAAK,CAAC,UAAU,KAAK,SAAS;gBAAE,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC3D,CAAC;QACD,OAAO,GAAG,CAAC;IACb,CAAC;IAED,eAAe,CAAC,OAAiB;QAC/B,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,KAAK,MAAM,EAAE,IAAI,OAAO,EAAE,CAAC;YACzB,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAClC,IAAI,KAAK,IAAI,IAAI,EAAE,CAAC;gBAClB,KAAK,CAAC,UAAU,GAAG,QAAQ,CAAC;gBAC5B,KAAK,CAAC,QAAQ,GAAG,GAAG,CAAC;YACvB,CAAC;QACH,CAAC;IACH,CAAC;IAED,IAAI,gBAAgB;QAClB,IAAI,CAAC,GAAG,CAAC,CAAC;QACV,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE;YAAE,IAAI,CAAC,CAAC,UAAU,KAAK,SAAS;gBAAE,CAAC,IAAI,CAAC,CAAC;QAC7E,OAAO,CAAC,CAAC;IACX,CAAC;IAED,IAAI,YAAY;QACd,IAAI,CAAC,GAAG,CAAC,CAAC;QACV,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE;YAAE,IAAI,CAAC,CAAC,UAAU,KAAK,SAAS;gBAAE,CAAC,IAAI,CAAC,CAAC;QAC9E,OAAO,CAAC,CAAC;IACX,CAAC;IAED,YAAY;QACV,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;IAC3D,CAAC;IAED,WAAW,CAAC,MAAc;QACxB,MAAM,GAAG,GAAgB,EAAE,CAAC;QAC5B,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC;YAC1C,IAAI,KAAK,CAAC,KAAK,CAAC,MAAM,KAAK,MAAM;gBAAE,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAC3D,CAAC;QACD,OAAO,GAAG,CAAC;IACb,CAAC;IAED,WAAW,CAAC,cAAsB;QAChC,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,cAAc,GAAG,IAAI,GAAG,IAAI,CAAC;QACzD,IAAI,OAAO,GAAG,CAAC,CAAC;QAChB,KAAK,MAAM,CAAC,EAAE,EAAE,KAAK,CAAC,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACvC,IAAI,KAAK,CAAC,UAAU,KAAK,QAAQ,IAAI,KAAK,CAAC,QAAQ,IAAI,IAAI;gBACvD,KAAK,CAAC,QAAQ,CAAC,OAAO,EAAE,GAAG,MAAM,EAAE,CAAC;gBACtC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;gBACxB,OAAO,IAAI,CAAC,CAAC;YACf,CAAC;QACH,CAAC;QACD,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,eAAe,CAAC,UAAkB;QAChC,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,UAAU,GAAG,EAAE,GAAG,IAAI,GAAG,IAAI,CAAC;QAC1D,IAAI,OAAO,GAAG,CAAC,CAAC;QAChB,KAAK,MAAM,CAAC,EAAE,EAAE,KAAK,CAAC,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACvC,IAAI,KAAK,CAAC,UAAU,KAAK,SAAS,IAAI,KAAK,CAAC,UAAU,CAAC,OAAO,EAAE,GAAG,MAAM,EAAE,CAAC;gBAC1E,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;gBACxB,OAAO,IAAI,CAAC,CAAC;YACf,CAAC;QACH,CAAC;QACD,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,KAAK;QACH,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;QACrB,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;IACtB,CAAC;IAED,oEAAoE;IACpE,sEAAsE;IACtE,WAAW,KAAa,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;IACnD,UAAU,KAAa,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;IAEzC,MAAM,CAAI,GAAmB,EAAE,GAAW;QAChD,OAAO,GAAG,CAAC,IAAI,IAAI,GAAG,EAAE,CAAC;YACvB,iEAAiE;YACjE,MAAM,SAAS,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC;YAC1C,IAAI,SAAS,KAAK,SAAS;gBAAE,MAAM;YACnC,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QACxB,CAAC;IACH,CAAC;CACF;AAED,8EAA8E;AAC9E,cAAc;AACd,8EAA8E;AAE9E;;;;;GAKG;AACH,MAAM,OAAO,WAAW;IACtB,qEAAqE;IACrE,iEAAiE;IACzD,GAAG,CAA2B;IAC9B,IAAI,GAA6B,IAAI,CAAC;IAE9C;;;;;;OAMG;IACH,MAAM,CAAC,qBAAqB,GAAG,KAAK,CAAC;IAErC,YAAY,MAAe;QACzB,6DAA6D;QAC7D,gEAAgE;QAChE,gEAAgE;QAChE,+DAA+D;QAC/D,6DAA6D;QAC7D,4DAA4D;QAC5D,IAAI,YAAY,GAA2B,IAAI,CAAC;QAChD,IAAI,WAAW,CAAC,qBAAqB,EAAE,CAAC;YACtC,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC;YAChB,IAAI,CAAC,IAAI,GAAG,IAAI,iBAAiB,EAAE,CAAC;YACpC,OAAO,CAAC,IAAI,CACV,oHAAoH,CACrH,CAAC;YACF,OAAO;QACT,CAAC;QACD,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAC/C,8DAA8D;YAC9D,YAAY,GAAG,OAAO,CAAC,gBAAgB,CAAoB,CAAC;QAC9D,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,CAAC,IAAI,CACV,iEAAiE;gBAC/D,0DAA0D;gBAC1D,8DAA8D;gBAC9D,gDAAgD;gBAChD,CAAC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CACrD,CAAC;YACF,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC;YAChB,IAAI,CAAC,IAAI,GAAG,IAAI,iBAAiB,EAAE,CAAC;YACpC,OAAO;QACT,CAAC;QAED,MAAM,YAAY,GAAG,MAAM,IAAI,IAAI,CAAC,OAAO,EAAE,EAAE,UAAU,EAAE,WAAW,CAAC,CAAC;QACxE,IAAI,CAAC;YACH,SAAS,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QACxD,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,IAAI,KAAK,CAAC,4CAA4C,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC;QAC1G,CAAC;QAED,IAAI,CAAC,GAAG,GAAG,IAAI,YAAY,CAAC,YAAY,CAAC,CAAC;QAE1C,kBAAkB;QAClB,IAAI,CAAC;YACH,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,kBAAkB,CAAC,CAAC;YACpC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,oBAAoB,CAAC,CAAC;YACtC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC;YAEnC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;YAC5B,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;YAC7B,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;YACrC,sEAAsE;YACtE,qEAAqE;YACrE,qEAAqE;YACrE,yBAAyB;YACzB,IAAI,CAAC,iBAAiB,CAAC,OAAO,EAAE,aAAa,EAAE,iCAAiC,CAAC,CAAC;YAClF,KAAK,MAAM,GAAG,IAAI,OAAO,EAAE,CAAC;gBAC1B,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACrB,CAAC;QACH,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,IAAI,KAAK,CAAC,uCAAuC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC;QACrG,CAAC;QAED,+BAA+B;QAC/B,MAAM,YAAY,GAChB,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,8CAA8C,CAAC,CAAC,GAAG,EACrE,CAAC,KAAK,CAAC;QACR,IAAI,YAAY,KAAK,CAAC,EAAE,CAAC;YACvB,IAAI,CAAC;gBACH,IAAI,CAAC,GAAG;qBACL,OAAO,CACN;mCACuB,CACxB;qBACA,GAAG,EAAE,CAAC;YACX,CAAC;YAAC,MAAM,CAAC;gBACP,2CAA2C;YAC7C,CAAC;QACH,CAAC;IACH,CAAC;IAED;;;;;;OAMG;IACK,iBAAiB,CAAC,KAAa,EAAE,MAAc,EAAE,UAAkB;QACzE,IAAI,CAAC,IAAI,CAAC,GAAG;YAAE,OAAO;QACtB,IAAI,CAAC;YACH,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,eAAe,KAAK,eAAe,MAAM,IAAI,UAAU,EAAE,CAAC,CAAC;QAC3E,CAAC;QAAC,MAAM,CAAC;YACP,uEAAuE;QACzE,CAAC;IACH,CAAC;IAED;;OAEG;IACH,QAAQ,CAAC,KAAgB;QACvB,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;YAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;YAAC,OAAO;QAAC,CAAC;QACrD,IAAI,CAAC,IAAI,CAAC,GAAG;YAAE,OAAO;QACtB,IAAI,CAAC;YACH,IAAI,CAAC,GAAG;iBACL,OAAO,CACN;;;;;;;;;;YAUE,CACH;iBACA,GAAG,CACF,KAAK,CAAC,OAAO,EACb,KAAK,CAAC,MAAM,EACZ,KAAK,CAAC,SAAS,EACf,KAAK,CAAC,QAAQ,IAAI,IAAI,EACtB,KAAK,CAAC,KAAK,IAAI,IAAI,EACnB,KAAK,CAAC,WAAW,IAAI,IAAI,EACzB,KAAK,CAAC,YAAY,IAAI,IAAI,EAC1B,KAAK,CAAC,YAAY,IAAI,IAAI,EAC1B,KAAK,CAAC,WAAW,IAAI,IAAI,EACzB,KAAK,CAAC,OAAO,CAAC,QAAQ,EAAE,EACxB,KAAK,CAAC,SAAS,IAAI,IAAI,EACvB,KAAK,CAAC,cAAc,EACpB,KAAK,CAAC,aAAa,IAAI,IAAI,EAC3B,KAAK,CAAC,cAAc,IAAI,IAAI,EAC5B,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EACrB,KAAK,CAAC,WAAW,IAAI,IAAI,EACzB,KAAK,CAAC,OAAO,IAAI,IAAI,EACrB,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,OAAO,CAAC,EAC7B,KAAK,CAAC,UAAU,CAAC,WAAW,EAAE,CAC/B,CAAC;QACN,CAAC;QAAC,MAAM,CAAC;YACP,kEAAkE;QACpE,CAAC;IACH,CAAC;IAED;;;;;;;OAOG;IACH,UAAU,CAAC,IAAU;QACnB,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;YAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;YAAC,OAAO;QAAC,CAAC;QACtD,IAAI,CAAC,IAAI,CAAC,GAAG;YAAE,OAAO;QACtB,IAAI,CAAC;YACH,IAAI,CAAC,GAAG;iBACL,OAAO,CACN;;;;;;;;;;;;;;YAcE,CACH;iBACA,GAAG,CACF,IAAI,CAAC,MAAM,EACX,IAAI,CAAC,QAAQ,EACb,IAAI,CAAC,MAAM,EACX,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE,EAC5B,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,IAAI,EAChD,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,EAC7B,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,EAC1B,IAAI,CAAC,eAAe,CAAC,QAAQ,EAAE,EAC/B,IAAI,CAAC,cAAc,CAAC,QAAQ,EAAE,EAC9B,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,EAC5B,IAAI,CAAC,gBAAgB,EACrB,IAAI,CAAC,iBAAiB,EACtB,IAAI,CAAC,iBAAiB,EACtB,IAAI,CAAC,UAAU,EACf,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,EAC5B,IAAI,CAAC,YAAY,EACjB,IAAI,CAAC,UAAU,IAAI,IAAI,EACvB,IAAI,CAAC,SAAS,IAAI,IAAI,EACtB,IAAI,CAAC,YAAY,IAAI,IAAI,EACzB,IAAI,CAAC,YAAY,IAAI,IAAI,EACzB,IAAI,CAAC,OAAO,IAAI,IAAI,CACrB,CAAC;QACN,CAAC;QAAC,MAAM,CAAC;YACP,mEAAmE;QACrE,CAAC;IACH,CAAC;IAED;;OAEG;IACH,gBAAgB,CAAC,QAAgB,GAAG;QAClC,IAAI,IAAI,CAAC,IAAI;YAAE,OAAO,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC;QACxD,IAAI,CAAC,IAAI,CAAC,GAAG;YAAE,OAAO,EAAE,CAAC;QACzB,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG;aAClB,OAAO,CACN,mFAAmF,CACpF;aACA,GAAG,CAAC,KAAK,CAAe,CAAC;QAC5B,OAAO,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;IAC9B,CAAC;IAED;;OAEG;IACH,UAAU,CAAC,QAAkB;QAC3B,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;YAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;YAAC,OAAO;QAAC,CAAC;QAC1D,IAAI,CAAC,IAAI,CAAC,GAAG;YAAE,OAAO;QACtB,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO;QAClC,IAAI,CAAC;YACH,MAAM,YAAY,GAAG,QAAQ,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACxD,IAAI,CAAC,GAAG;iBACL,OAAO,CAAC,+DAA+D,YAAY,GAAG,CAAC;iBACvF,GAAG,CAAC,GAAG,QAAQ,CAAC,CAAC;QACtB,CAAC;QAAC,MAAM,CAAC;YACP,+DAA+D;QACjE,CAAC;IACH,CAAC;IAED;;OAEG;IACH,OAAO,CAAC,MAAc;QACpB,IAAI,IAAI,CAAC,IAAI;YAAE,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QAChD,IAAI,CAAC,IAAI,CAAC,GAAG;YAAE,OAAO,SAAS,CAAC;QAChC,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG;aACjB,OAAO,CAAC,uCAAuC,CAAC;aAChD,GAAG,CAAC,MAAM,CAAwB,CAAC;QACtC,OAAO,GAAG,IAAI,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAClD,CAAC;IAED;;OAEG;IACH,WAAW;QACT,IAAI,IAAI,CAAC,IAAI;YAAE,OAAO,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;QAC9C,IAAI,CAAC,IAAI,CAAC,GAAG;YAAE,OAAO,EAAE,CAAC;QACzB,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,qBAAqB,CAAC,CAAC,GAAG,EAAe,CAAC;QACxE,OAAO,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;IAC7B,CAAC;IAED;;;;;OAKG;IACH,eAAe;QACb,IAAI,IAAI,CAAC,IAAI;YAAE,OAAO,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC;QAClD,IAAI,CAAC,IAAI,CAAC,GAAG;YAAE,OAAO,EAAE,CAAC;QACzB,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG;aAClB,OAAO,CAAC,mDAAmD,CAAC;aAC5D,GAAG,EAAe,CAAC;QACtB,OAAO,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;IAC7B,CAAC;IAED;;;;;OAKG;IACH,eAAe,CAAC,OAAiB;QAC/B,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;YAAC,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;YAAC,OAAO;QAAC,CAAC;QAC9D,IAAI,CAAC,IAAI,CAAC,GAAG;YAAE,OAAO;QACtB,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO;QACjC,IAAI,CAAC;YACH,MAAM,YAAY,GAAG,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACvD,IAAI,CAAC,GAAG;iBACL,OAAO,CAAC,6DAA6D,YAAY,GAAG,CAAC;iBACrF,GAAG,CAAC,GAAG,OAAO,CAAC,CAAC;QACrB,CAAC;QAAC,MAAM,CAAC;YACP,+DAA+D;QACjE,CAAC;IACH,CAAC;IAED,qEAAqE;IACrE,IAAI,gBAAgB;QAClB,IAAI,IAAI,CAAC,IAAI;YAAE,OAAO,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC;QACjD,IAAI,CAAC,IAAI,CAAC,GAAG;YAAE,OAAO,CAAC,CAAC;QACxB,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG;aACjB,OAAO,CAAC,mEAAmE,CAAC;aAC5E,GAAG,EAAc,CAAC;QACrB,OAAO,GAAG,CAAC,KAAK,CAAC;IACnB,CAAC;IAED;;OAEG;IACH,YAAY;QACV,IAAI,IAAI,CAAC,IAAI;YAAE,OAAO,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC;QAC/C,IAAI,CAAC,IAAI,CAAC,GAAG;YAAE,OAAO,EAAE,CAAC;QACzB,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,sBAAsB,CAAC,CAAC,GAAG,EAAgB,CAAC;QAC1E,OAAO,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;IAC9B,CAAC;IAED;;OAEG;IACH,WAAW,CAAC,MAAc;QACxB,IAAI,IAAI,CAAC,IAAI;YAAE,OAAO,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;QACpD,IAAI,CAAC,IAAI,CAAC,GAAG;YAAE,OAAO,EAAE,CAAC;QACzB,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG;aAClB,OAAO,CAAC,gEAAgE,CAAC;aACzE,GAAG,CAAC,MAAM,CAAe,CAAC;QAC7B,OAAO,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;IAC9B,CAAC;IAED;;OAEG;IACH,WAAW,CAAC,KAAgB;QAC1B,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;YAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;YAAC,OAAO;QAAC,CAAC;QACxD,IAAI,CAAC,IAAI,CAAC,GAAG;YAAE,OAAO;QACtB,IAAI,CAAC;YACH,IAAI,CAAC,GAAG;iBACL,OAAO,CACN;;;;;;;;;;;;;;;;;;;6BAmBmB,CACpB;iBACA,GAAG,CACF,KAAK,CAAC,MAAM,EACZ,KAAK,CAAC,SAAS,EACf,KAAK,CAAC,QAAQ,IAAI,IAAI,EACtB,KAAK,CAAC,KAAK,IAAI,IAAI,EACnB,KAAK,CAAC,WAAW,IAAI,IAAI,EACzB,KAAK,CAAC,YAAY,IAAI,IAAI,EAC1B,KAAK,CAAC,YAAY,IAAI,IAAI,EAC1B,KAAK,CAAC,WAAW,IAAI,IAAI,EACzB,KAAK,CAAC,OAAO,CAAC,QAAQ,EAAE,EACxB,KAAK,CAAC,SAAS,IAAI,IAAI,EACvB,KAAK,CAAC,cAAc,EACpB,KAAK,CAAC,aAAa,IAAI,IAAI,EAC3B,KAAK,CAAC,cAAc,IAAI,IAAI,EAC5B,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EACrB,KAAK,CAAC,WAAW,IAAI,IAAI,EACzB,KAAK,CAAC,OAAO,IAAI,IAAI,EACrB,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,OAAO,CAAC,EAC7B,KAAK,CAAC,UAAU,CAAC,WAAW,EAAE,EAC9B,KAAK,CAAC,OAAO,CACd,CAAC;QACN,CAAC;QAAC,MAAM,CAAC;YACP,mEAAmE;QACrE,CAAC;IACH,CAAC;IAED;;OAEG;IACH,IAAI,YAAY;QACd,IAAI,IAAI,CAAC,IAAI;YAAE,OAAO,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC;QAC7C,IAAI,CAAC,IAAI,CAAC,GAAG;YAAE,OAAO,CAAC,CAAC;QACxB,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG;aACjB,OAAO,CAAC,oEAAoE,CAAC;aAC7E,GAAG,EAAc,CAAC;QACrB,OAAO,GAAG,CAAC,KAAK,CAAC;IACnB,CAAC;IAED;;;;OAIG;IACH,WAAW,CAAC,iBAAyB,EAAE;QACrC,IAAI,IAAI,CAAC,IAAI;YAAE,OAAO,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,cAAc,CAAC,CAAC;QAC5D,IAAI,CAAC,IAAI,CAAC,GAAG;YAAE,OAAO,CAAC,CAAC;QACxB,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,cAAc,GAAG,SAAS,CAAC,CAAC,WAAW,EAAE,CAAC;YAC/E,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG;iBACpB,OAAO,CACN,mEAAmE,CACpE;iBACA,GAAG,CAAC,MAAM,CAAC,CAAC;YACf,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;YAC/B,IAAI,OAAO,GAAG,CAAC,EAAE,CAAC;gBAChB,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,0BAA0B,CAAC,CAAC;gBAC5C,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YAC1B,CAAC;YACD,OAAO,OAAO,CAAC;QACjB,CAAC;QAAC,MAAM,CAAC;YACP,yCAAyC;YACzC,OAAO,CAAC,CAAC;QACX,CAAC;IACH,CAAC;IAED;;;;;;;OAOG;IACH,eAAe,CAAC,aAAqB,CAAC;QACpC,IAAI,IAAI,CAAC,IAAI;YAAE,OAAO,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC,CAAC;QAC5D,IAAI,CAAC,IAAI,CAAC,GAAG;YAAE,OAAO,CAAC,CAAC;QACxB,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,UAAU,GAAG,UAAU,CAAC,CAAC,WAAW,EAAE,CAAC;YAC5E,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG;iBACpB,OAAO,CAAC,oEAAoE,CAAC;iBAC7E,GAAG,CAAC,MAAM,CAAC,CAAC;YACf,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;YAC/B,IAAI,OAAO,GAAG,CAAC,EAAE,CAAC;gBAChB,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,0BAA0B,CAAC,CAAC;gBAC5C,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YAC1B,CAAC;YACD,OAAO,OAAO,CAAC;QACjB,CAAC;QAAC,MAAM,CAAC;YACP,yCAAyC;YACzC,OAAO,CAAC,CAAC;QACX,CAAC;IACH,CAAC;IAED;;OAEG;IACH,KAAK;QACH,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;YAAC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;YAAC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;YAAC,OAAO;QAAC,CAAC;QAC/D,IAAI,CAAC,IAAI,CAAC,GAAG;YAAE,OAAO;QACtB,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC;IACnB,CAAC"}
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Background HTTP event pusher for dexcost.
|
|
3
|
+
*
|
|
4
|
+
* Periodically reads pending events from the buffer and POSTs them
|
|
5
|
+
* to a remote endpoint using the built-in `fetch` API (Node 18+).
|
|
6
|
+
*/
|
|
7
|
+
import type { TrackerOptions } from "../core/tracker.js";
|
|
8
|
+
import type { EventBuffer } from "./buffer.js";
|
|
9
|
+
/**
|
|
10
|
+
* Pushes buffered events to a remote endpoint on a periodic interval.
|
|
11
|
+
*
|
|
12
|
+
* Implements exponential backoff on failure, resetting on success.
|
|
13
|
+
*/
|
|
14
|
+
export declare class EventPusher {
|
|
15
|
+
private _interval;
|
|
16
|
+
private _purgeInterval;
|
|
17
|
+
private _backoffMs;
|
|
18
|
+
private _buffer;
|
|
19
|
+
private _options;
|
|
20
|
+
private _pushing;
|
|
21
|
+
private _lastPurgeMs;
|
|
22
|
+
/** Set permanently when the API key is rejected (HTTP 401/403). */
|
|
23
|
+
private _authFailed;
|
|
24
|
+
constructor(buffer: EventBuffer, options: TrackerOptions);
|
|
25
|
+
/**
|
|
26
|
+
* Update the API key and clear any auth-failed state so the push
|
|
27
|
+
* loop can resume. Sprint 2 Theme D / §3.2.3 (B14). When the
|
|
28
|
+
* Control Layer returns 401/403 the pusher sets `_authFailed=true`
|
|
29
|
+
* and calls `stop()`. Without this method the only recovery is
|
|
30
|
+
* restarting the customer's process.
|
|
31
|
+
*/
|
|
32
|
+
setApiKey(newKey: string): void;
|
|
33
|
+
/**
|
|
34
|
+
* Start the periodic background push loop.
|
|
35
|
+
*/
|
|
36
|
+
start(): void;
|
|
37
|
+
/**
|
|
38
|
+
* Stop the periodic background push loop.
|
|
39
|
+
*/
|
|
40
|
+
stop(): void;
|
|
41
|
+
/**
|
|
42
|
+
* Force an immediate flush of all pending events.
|
|
43
|
+
*/
|
|
44
|
+
flush(): Promise<void>;
|
|
45
|
+
/**
|
|
46
|
+
* Push pending events to the remote endpoint.
|
|
47
|
+
*
|
|
48
|
+
* Uses exponential backoff on failure, capping at MAX_BACKOFF_MS.
|
|
49
|
+
* Resets backoff on success.
|
|
50
|
+
*/
|
|
51
|
+
private push;
|
|
52
|
+
/**
|
|
53
|
+
* Serialise a single event to its wire dict, applying PII redaction,
|
|
54
|
+
* customer/project hashing, and the metadata size limit to `details`.
|
|
55
|
+
*
|
|
56
|
+
* Mirrors the Python SyncWorker (`sync.py`): redactFields are stripped,
|
|
57
|
+
* customer_id/project_id in details are SHA-256 hashed when
|
|
58
|
+
* hashCustomerId is set, and oversized details are replaced with a stub.
|
|
59
|
+
*/
|
|
60
|
+
private _serializeEvent;
|
|
61
|
+
/**
|
|
62
|
+
* Serialise a single task to its wire dict, applying the same PII
|
|
63
|
+
* protections as `_serializeEvent` does for events: `redactFields` are
|
|
64
|
+
* stripped from `metadata`, `customer_id`/`project_id` are SHA-256
|
|
65
|
+
* hashed when `hashCustomerId` is set, and oversized metadata is
|
|
66
|
+
* replaced with a stub.
|
|
67
|
+
*
|
|
68
|
+
* Without this, task `metadata` (which can carry user PII) and the raw
|
|
69
|
+
* `customer_id`/`project_id` would be POSTed unredacted — a leak the
|
|
70
|
+
* event path already guards against. Mirrors the Python SyncWorker.
|
|
71
|
+
*/
|
|
72
|
+
private _serializeTask;
|
|
73
|
+
/**
|
|
74
|
+
* POST events with automatic batch splitting if payload exceeds size limit.
|
|
75
|
+
*
|
|
76
|
+
* Recursively splits the events array in half until each chunk fits within
|
|
77
|
+
* the SQS payload limit. Tasks are sent with the first chunk only.
|
|
78
|
+
*/
|
|
79
|
+
private pushWithSplit;
|
|
80
|
+
/**
|
|
81
|
+
* POST a pre-serialised JSON payload to the cloud ingest endpoint.
|
|
82
|
+
*
|
|
83
|
+
* Returns `true` on 2xx, `false` otherwise.
|
|
84
|
+
*/
|
|
85
|
+
private postRaw;
|
|
86
|
+
/** Whether sync has been permanently disabled due to a rejected API key. */
|
|
87
|
+
get authFailed(): boolean;
|
|
88
|
+
}
|
|
89
|
+
//# sourceMappingURL=pusher.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pusher.d.ts","sourceRoot":"","sources":["../../src/transport/pusher.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAgB/C;;;;GAIG;AACH,qBAAa,WAAW;IACtB,OAAO,CAAC,SAAS,CAA+C;IAChE,OAAO,CAAC,cAAc,CAA+C;IACrE,OAAO,CAAC,UAAU,CAAQ;IAC1B,OAAO,CAAC,OAAO,CAAc;IAC7B,OAAO,CAAC,QAAQ,CAAiB;IACjC,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,YAAY,CAAK;IACzB,mEAAmE;IACnE,OAAO,CAAC,WAAW,CAAS;gBAEhB,MAAM,EAAE,WAAW,EAAE,OAAO,EAAE,cAAc;IAKxD;;;;;;OAMG;IACH,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAS/B;;OAEG;IACH,KAAK,IAAI,IAAI;IA8Bb;;OAEG;IACH,IAAI,IAAI,IAAI;IAWZ;;OAEG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAI5B;;;;;OAKG;YACW,IAAI;IAuDlB;;;;;;;OAOG;IACH,OAAO,CAAC,eAAe;IA6BvB;;;;;;;;;;OAUG;IACH,OAAO,CAAC,cAAc;IA4BtB;;;;;OAKG;YACW,aAAa;IAwD3B;;;;OAIG;YACW,OAAO;IAkDrB,4EAA4E;IAC5E,IAAI,UAAU,IAAI,OAAO,CAExB;CACF"}
|
|
@@ -0,0 +1,323 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Background HTTP event pusher for dexcost.
|
|
3
|
+
*
|
|
4
|
+
* Periodically reads pending events from the buffer and POSTs them
|
|
5
|
+
* to a remote endpoint using the built-in `fetch` API (Node 18+).
|
|
6
|
+
*/
|
|
7
|
+
import { eventToDict, taskToDict } from "../core/models.js";
|
|
8
|
+
import { redactDict, hashValue, enforceMetadataLimit } from "../security/redaction.js";
|
|
9
|
+
/** Hardcoded default endpoint; overridable only via DEXCOST_ENDPOINT env var. */
|
|
10
|
+
const DEFAULT_ENDPOINT = "https://api.dexcost.io";
|
|
11
|
+
/** Maximum backoff in milliseconds (5 minutes). */
|
|
12
|
+
const MAX_BACKOFF_MS = 300_000;
|
|
13
|
+
/** Maximum payload size in bytes — well under SQS 256KB limit. */
|
|
14
|
+
const MAX_PAYLOAD_BYTES = 200_000;
|
|
15
|
+
/** Minimum interval between purge runs in milliseconds (1 hour). */
|
|
16
|
+
const PURGE_INTERVAL_MS = 3_600_000;
|
|
17
|
+
/**
|
|
18
|
+
* Pushes buffered events to a remote endpoint on a periodic interval.
|
|
19
|
+
*
|
|
20
|
+
* Implements exponential backoff on failure, resetting on success.
|
|
21
|
+
*/
|
|
22
|
+
export class EventPusher {
|
|
23
|
+
_interval = null;
|
|
24
|
+
_purgeInterval = null;
|
|
25
|
+
_backoffMs = 1000;
|
|
26
|
+
_buffer;
|
|
27
|
+
_options;
|
|
28
|
+
_pushing = false;
|
|
29
|
+
_lastPurgeMs = 0;
|
|
30
|
+
/** Set permanently when the API key is rejected (HTTP 401/403). */
|
|
31
|
+
_authFailed = false;
|
|
32
|
+
constructor(buffer, options) {
|
|
33
|
+
this._buffer = buffer;
|
|
34
|
+
this._options = options;
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Update the API key and clear any auth-failed state so the push
|
|
38
|
+
* loop can resume. Sprint 2 Theme D / §3.2.3 (B14). When the
|
|
39
|
+
* Control Layer returns 401/403 the pusher sets `_authFailed=true`
|
|
40
|
+
* and calls `stop()`. Without this method the only recovery is
|
|
41
|
+
* restarting the customer's process.
|
|
42
|
+
*/
|
|
43
|
+
setApiKey(newKey) {
|
|
44
|
+
this._options = { ...this._options, apiKey: newKey };
|
|
45
|
+
this._authFailed = false;
|
|
46
|
+
// If the loop was torn down by the prior auth failure, restart it.
|
|
47
|
+
if (!this._interval) {
|
|
48
|
+
this.start();
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Start the periodic background push loop.
|
|
53
|
+
*/
|
|
54
|
+
start() {
|
|
55
|
+
if (this._interval) {
|
|
56
|
+
return; // Already running
|
|
57
|
+
}
|
|
58
|
+
const intervalMs = this._options.flushIntervalMs ?? 30000;
|
|
59
|
+
this._interval = setInterval(() => {
|
|
60
|
+
void this.push();
|
|
61
|
+
}, intervalMs);
|
|
62
|
+
// Allow the process to exit even if the interval is running
|
|
63
|
+
if (this._interval.unref) {
|
|
64
|
+
this._interval.unref();
|
|
65
|
+
}
|
|
66
|
+
// Independent purge interval (runs even when pushes are failing).
|
|
67
|
+
// Purges old synced events AND stale pending events so a permanently
|
|
68
|
+
// failing sync can't grow the local buffer without bound.
|
|
69
|
+
this._purgeInterval = setInterval(() => {
|
|
70
|
+
try {
|
|
71
|
+
this._buffer.purgeSynced();
|
|
72
|
+
this._buffer.purgeOldPending();
|
|
73
|
+
}
|
|
74
|
+
catch {
|
|
75
|
+
// Non-fatal — purge will be retried next cycle
|
|
76
|
+
}
|
|
77
|
+
}, 60 * 60 * 1000);
|
|
78
|
+
if (this._purgeInterval.unref) {
|
|
79
|
+
this._purgeInterval.unref();
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* Stop the periodic background push loop.
|
|
84
|
+
*/
|
|
85
|
+
stop() {
|
|
86
|
+
if (this._interval) {
|
|
87
|
+
clearInterval(this._interval);
|
|
88
|
+
this._interval = null;
|
|
89
|
+
}
|
|
90
|
+
if (this._purgeInterval) {
|
|
91
|
+
clearInterval(this._purgeInterval);
|
|
92
|
+
this._purgeInterval = null;
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
/**
|
|
96
|
+
* Force an immediate flush of all pending events.
|
|
97
|
+
*/
|
|
98
|
+
async flush() {
|
|
99
|
+
await this.push();
|
|
100
|
+
}
|
|
101
|
+
/**
|
|
102
|
+
* Push pending events to the remote endpoint.
|
|
103
|
+
*
|
|
104
|
+
* Uses exponential backoff on failure, capping at MAX_BACKOFF_MS.
|
|
105
|
+
* Resets backoff on success.
|
|
106
|
+
*/
|
|
107
|
+
async push() {
|
|
108
|
+
if (this._pushing) {
|
|
109
|
+
return; // Avoid concurrent pushes
|
|
110
|
+
}
|
|
111
|
+
if (this._authFailed) {
|
|
112
|
+
// API key was rejected — sync is permanently disabled.
|
|
113
|
+
return;
|
|
114
|
+
}
|
|
115
|
+
const batchSize = this._options.batchSize ?? 100;
|
|
116
|
+
const pending = this._buffer.getPendingEvents(batchSize);
|
|
117
|
+
if (pending.length === 0) {
|
|
118
|
+
return;
|
|
119
|
+
}
|
|
120
|
+
this._pushing = true;
|
|
121
|
+
try {
|
|
122
|
+
// Only send tasks that have changed since the last successful push
|
|
123
|
+
// (sync_status = 'pending'). Sending every task on every push wastes
|
|
124
|
+
// bandwidth and re-ingests unchanged rows server-side.
|
|
125
|
+
const tasks = this._buffer.getPendingTasks();
|
|
126
|
+
const ok = await this.pushWithSplit(pending, tasks);
|
|
127
|
+
if (ok) {
|
|
128
|
+
// §3.2.1 (B12): pushWithSplit now marks synced at each leaf
|
|
129
|
+
// POST; these calls are kept as a defensive idempotent safety
|
|
130
|
+
// net for any future path that returns true without splitting.
|
|
131
|
+
this._buffer.markSynced(pending.map((e) => e.eventId));
|
|
132
|
+
this._buffer.markTasksSynced(tasks.map((t) => t.taskId));
|
|
133
|
+
this._backoffMs = 1000; // Reset backoff on success
|
|
134
|
+
// Purge old synced events + stale pending events (throttled to
|
|
135
|
+
// once per hour). purgeOldPending is the safety net for events
|
|
136
|
+
// that can never be delivered (mirrors Python sync.py).
|
|
137
|
+
const now = Date.now();
|
|
138
|
+
if (now - this._lastPurgeMs >= PURGE_INTERVAL_MS) {
|
|
139
|
+
try {
|
|
140
|
+
this._buffer.purgeSynced();
|
|
141
|
+
this._buffer.purgeOldPending();
|
|
142
|
+
}
|
|
143
|
+
catch {
|
|
144
|
+
// Non-fatal — purge will be retried next cycle
|
|
145
|
+
}
|
|
146
|
+
this._lastPurgeMs = now;
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
else {
|
|
150
|
+
this._backoffMs = Math.min(this._backoffMs * 2, MAX_BACKOFF_MS);
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
catch {
|
|
154
|
+
this._backoffMs = Math.min(this._backoffMs * 2, MAX_BACKOFF_MS);
|
|
155
|
+
}
|
|
156
|
+
finally {
|
|
157
|
+
this._pushing = false;
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
/**
|
|
161
|
+
* Serialise a single event to its wire dict, applying PII redaction,
|
|
162
|
+
* customer/project hashing, and the metadata size limit to `details`.
|
|
163
|
+
*
|
|
164
|
+
* Mirrors the Python SyncWorker (`sync.py`): redactFields are stripped,
|
|
165
|
+
* customer_id/project_id in details are SHA-256 hashed when
|
|
166
|
+
* hashCustomerId is set, and oversized details are replaced with a stub.
|
|
167
|
+
*/
|
|
168
|
+
_serializeEvent(event) {
|
|
169
|
+
const dict = eventToDict(event);
|
|
170
|
+
let details = dict["details"];
|
|
171
|
+
if (details && typeof details === "object") {
|
|
172
|
+
// Apply PII redaction to details
|
|
173
|
+
const redactFields = this._options.redactFields;
|
|
174
|
+
if (redactFields && redactFields.length > 0) {
|
|
175
|
+
details = redactDict(details, redactFields);
|
|
176
|
+
}
|
|
177
|
+
// Hash customer-adjacent fields when configured
|
|
178
|
+
if (this._options.hashCustomerId) {
|
|
179
|
+
for (const key of ["customer_id", "project_id"]) {
|
|
180
|
+
const val = details[key];
|
|
181
|
+
if (typeof val === "string") {
|
|
182
|
+
details[key] = hashValue(val);
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
// Enforce the metadata size limit
|
|
187
|
+
details = enforceMetadataLimit(details);
|
|
188
|
+
dict["details"] = details;
|
|
189
|
+
}
|
|
190
|
+
return dict;
|
|
191
|
+
}
|
|
192
|
+
/**
|
|
193
|
+
* Serialise a single task to its wire dict, applying the same PII
|
|
194
|
+
* protections as `_serializeEvent` does for events: `redactFields` are
|
|
195
|
+
* stripped from `metadata`, `customer_id`/`project_id` are SHA-256
|
|
196
|
+
* hashed when `hashCustomerId` is set, and oversized metadata is
|
|
197
|
+
* replaced with a stub.
|
|
198
|
+
*
|
|
199
|
+
* Without this, task `metadata` (which can carry user PII) and the raw
|
|
200
|
+
* `customer_id`/`project_id` would be POSTed unredacted — a leak the
|
|
201
|
+
* event path already guards against. Mirrors the Python SyncWorker.
|
|
202
|
+
*/
|
|
203
|
+
_serializeTask(task) {
|
|
204
|
+
const dict = taskToDict(task);
|
|
205
|
+
let metadata = dict["metadata"];
|
|
206
|
+
if (metadata && typeof metadata === "object") {
|
|
207
|
+
// Strip configured PII fields from task metadata.
|
|
208
|
+
const redactFields = this._options.redactFields;
|
|
209
|
+
if (redactFields && redactFields.length > 0) {
|
|
210
|
+
metadata = redactDict(metadata, redactFields);
|
|
211
|
+
}
|
|
212
|
+
// Enforce the metadata size limit.
|
|
213
|
+
metadata = enforceMetadataLimit(metadata);
|
|
214
|
+
dict["metadata"] = metadata;
|
|
215
|
+
}
|
|
216
|
+
// Hash customer/project identifiers when configured.
|
|
217
|
+
if (this._options.hashCustomerId) {
|
|
218
|
+
for (const key of ["customer_id", "project_id"]) {
|
|
219
|
+
const val = dict[key];
|
|
220
|
+
if (typeof val === "string") {
|
|
221
|
+
dict[key] = hashValue(val);
|
|
222
|
+
}
|
|
223
|
+
}
|
|
224
|
+
}
|
|
225
|
+
return dict;
|
|
226
|
+
}
|
|
227
|
+
/**
|
|
228
|
+
* POST events with automatic batch splitting if payload exceeds size limit.
|
|
229
|
+
*
|
|
230
|
+
* Recursively splits the events array in half until each chunk fits within
|
|
231
|
+
* the SQS payload limit. Tasks are sent with the first chunk only.
|
|
232
|
+
*/
|
|
233
|
+
async pushWithSplit(events, tasks, depth = 0) {
|
|
234
|
+
const MAX_DEPTH = 5;
|
|
235
|
+
let payload;
|
|
236
|
+
try {
|
|
237
|
+
payload = JSON.stringify({
|
|
238
|
+
events: events.map((e) => this._serializeEvent(e)),
|
|
239
|
+
tasks: tasks.map((t) => this._serializeTask(t)),
|
|
240
|
+
});
|
|
241
|
+
}
|
|
242
|
+
catch {
|
|
243
|
+
return false; // Unserializable payload — skip this batch
|
|
244
|
+
}
|
|
245
|
+
if (payload.length <= MAX_PAYLOAD_BYTES || depth >= MAX_DEPTH) {
|
|
246
|
+
const ok = await this.postRaw(payload);
|
|
247
|
+
if (ok) {
|
|
248
|
+
// Sprint 2 Theme D / §3.2.1 (B12): mark synced at the leaf so
|
|
249
|
+
// a sibling-half failure does not unwind work that succeeded.
|
|
250
|
+
// Pre-fix the outer caller marked synced ONLY when both halves
|
|
251
|
+
// returned true; first-half-OK + second-half-fail re-sent the
|
|
252
|
+
// first half on the next tick → duplicates at the control plane.
|
|
253
|
+
this._buffer.markSynced(events.map((e) => e.eventId));
|
|
254
|
+
if (tasks.length > 0) {
|
|
255
|
+
this._buffer.markTasksSynced(tasks.map((t) => t.taskId));
|
|
256
|
+
}
|
|
257
|
+
}
|
|
258
|
+
return ok;
|
|
259
|
+
}
|
|
260
|
+
if (events.length <= 1) {
|
|
261
|
+
// Single event too large — skip it with warning
|
|
262
|
+
console.warn(`[dexcost] Single event exceeds payload limit (${payload.length} bytes), skipping`);
|
|
263
|
+
return true;
|
|
264
|
+
}
|
|
265
|
+
// Split events in half
|
|
266
|
+
const mid = Math.floor(events.length / 2);
|
|
267
|
+
const firstOk = await this.pushWithSplit(events.slice(0, mid), tasks, depth + 1);
|
|
268
|
+
const secondOk = await this.pushWithSplit(events.slice(mid), [], depth + 1);
|
|
269
|
+
return firstOk && secondOk;
|
|
270
|
+
}
|
|
271
|
+
/**
|
|
272
|
+
* POST a pre-serialised JSON payload to the cloud ingest endpoint.
|
|
273
|
+
*
|
|
274
|
+
* Returns `true` on 2xx, `false` otherwise.
|
|
275
|
+
*/
|
|
276
|
+
async postRaw(body) {
|
|
277
|
+
const endpoint = process.env.DEXCOST_ENDPOINT ?? DEFAULT_ENDPOINT;
|
|
278
|
+
const headers = {
|
|
279
|
+
"Content-Type": "application/json",
|
|
280
|
+
};
|
|
281
|
+
if (this._options.apiKey) {
|
|
282
|
+
headers["Authorization"] = `Bearer ${this._options.apiKey}`;
|
|
283
|
+
}
|
|
284
|
+
const url = `${endpoint}/v1/ingest`;
|
|
285
|
+
const controller = new AbortController();
|
|
286
|
+
const timeoutId = setTimeout(() => controller.abort(), 30_000);
|
|
287
|
+
let response;
|
|
288
|
+
try {
|
|
289
|
+
response = await fetch(url, {
|
|
290
|
+
method: "POST",
|
|
291
|
+
headers,
|
|
292
|
+
body,
|
|
293
|
+
signal: controller.signal,
|
|
294
|
+
});
|
|
295
|
+
}
|
|
296
|
+
finally {
|
|
297
|
+
clearTimeout(timeoutId);
|
|
298
|
+
}
|
|
299
|
+
if (response.ok) {
|
|
300
|
+
return true;
|
|
301
|
+
}
|
|
302
|
+
if (response.status === 413) {
|
|
303
|
+
// Permanent error — batch too large, don't retry
|
|
304
|
+
// This shouldn't happen with pre-split but handle gracefully
|
|
305
|
+
console.warn("[dexcost] Server returned 413 despite pre-split check");
|
|
306
|
+
return false;
|
|
307
|
+
}
|
|
308
|
+
if (response.status === 401 || response.status === 403) {
|
|
309
|
+
// API key rejected — stop sync permanently rather than retrying
|
|
310
|
+
// a rejected key forever (mirrors Python sync.py).
|
|
311
|
+
console.error(`[dexcost] API key rejected (HTTP ${response.status}) — disabling sync`);
|
|
312
|
+
this._authFailed = true;
|
|
313
|
+
this.stop();
|
|
314
|
+
return false;
|
|
315
|
+
}
|
|
316
|
+
return false;
|
|
317
|
+
}
|
|
318
|
+
/** Whether sync has been permanently disabled due to a rejected API key. */
|
|
319
|
+
get authFailed() {
|
|
320
|
+
return this._authFailed;
|
|
321
|
+
}
|
|
322
|
+
}
|
|
323
|
+
//# sourceMappingURL=pusher.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pusher.js","sourceRoot":"","sources":["../../src/transport/pusher.ts"],"names":[],"mappings":"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"}
|
package/package.json
ADDED
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@dexcost/sdk",
|
|
3
|
+
"version": "0.2.0",
|
|
4
|
+
"description": "Agent Unit Economics SDK for Node.js",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"main": "dist/index.js",
|
|
7
|
+
"types": "dist/index.d.ts",
|
|
8
|
+
"bin": {
|
|
9
|
+
"dexcost": "dist/cli/index.js"
|
|
10
|
+
},
|
|
11
|
+
"exports": {
|
|
12
|
+
".": {
|
|
13
|
+
"import": "./dist/index.js",
|
|
14
|
+
"types": "./dist/index.d.ts"
|
|
15
|
+
},
|
|
16
|
+
"./package.json": "./package.json"
|
|
17
|
+
},
|
|
18
|
+
"files": [
|
|
19
|
+
"dist",
|
|
20
|
+
"README.md",
|
|
21
|
+
"LICENSE"
|
|
22
|
+
],
|
|
23
|
+
"publishConfig": {
|
|
24
|
+
"access": "public",
|
|
25
|
+
"provenance": true
|
|
26
|
+
},
|
|
27
|
+
"scripts": {
|
|
28
|
+
"build": "tsc && node scripts/copy-assets.mjs",
|
|
29
|
+
"test": "vitest run",
|
|
30
|
+
"lint": "tsc --noEmit",
|
|
31
|
+
"prepublishOnly": "npm run build"
|
|
32
|
+
},
|
|
33
|
+
"engines": {
|
|
34
|
+
"node": ">=18.0.0"
|
|
35
|
+
},
|
|
36
|
+
"dependencies": {
|
|
37
|
+
"ajv": "^8.18.0",
|
|
38
|
+
"ajv-formats": "^3.0.1",
|
|
39
|
+
"decimal.js": "^10.6.0",
|
|
40
|
+
"js-yaml": "^4.1.1"
|
|
41
|
+
},
|
|
42
|
+
"peerDependencies": {
|
|
43
|
+
"@anthropic-ai/sdk": ">=0.30.0",
|
|
44
|
+
"ai": ">=3.0.0",
|
|
45
|
+
"better-sqlite3": ">=11.0.0",
|
|
46
|
+
"openai": ">=4.0.0",
|
|
47
|
+
"playwright": ">=1.40.0"
|
|
48
|
+
},
|
|
49
|
+
"peerDependenciesMeta": {
|
|
50
|
+
"openai": {
|
|
51
|
+
"optional": true
|
|
52
|
+
},
|
|
53
|
+
"@anthropic-ai/sdk": {
|
|
54
|
+
"optional": true
|
|
55
|
+
},
|
|
56
|
+
"ai": {
|
|
57
|
+
"optional": true
|
|
58
|
+
},
|
|
59
|
+
"better-sqlite3": {
|
|
60
|
+
"optional": true
|
|
61
|
+
},
|
|
62
|
+
"playwright": {
|
|
63
|
+
"optional": true
|
|
64
|
+
}
|
|
65
|
+
},
|
|
66
|
+
"optionalDependencies": {
|
|
67
|
+
"better-sqlite3": "^12.8.0"
|
|
68
|
+
},
|
|
69
|
+
"devDependencies": {
|
|
70
|
+
"@types/better-sqlite3": "^7.6.13",
|
|
71
|
+
"@types/js-yaml": "^4.0.9",
|
|
72
|
+
"@types/node": "^20.0.0",
|
|
73
|
+
"typescript": "^5.3.0",
|
|
74
|
+
"vitest": "^1.2.0"
|
|
75
|
+
},
|
|
76
|
+
"keywords": [
|
|
77
|
+
"ai",
|
|
78
|
+
"agents",
|
|
79
|
+
"cost-tracking",
|
|
80
|
+
"llm",
|
|
81
|
+
"observability"
|
|
82
|
+
],
|
|
83
|
+
"license": "MIT",
|
|
84
|
+
"homepage": "https://docs.dexcost.io/docs/sdks/typescript",
|
|
85
|
+
"repository": {
|
|
86
|
+
"type": "git",
|
|
87
|
+
"url": "git+https://github.com/DexwoxBusiness/dexcost-sdk.git",
|
|
88
|
+
"directory": "typescript"
|
|
89
|
+
},
|
|
90
|
+
"bugs": {
|
|
91
|
+
"url": "https://github.com/DexwoxBusiness/dexcost-sdk/issues"
|
|
92
|
+
}
|
|
93
|
+
}
|