@evident-ai/cli 3.4.1-dev.86701df → 3.4.1-dev.86c712d

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/index.js CHANGED
@@ -1216,6 +1216,7 @@ var TelemetryEventTypes = {
1216
1216
  // ../../packages/types/src/tunnel/index.ts
1217
1217
  var MAX_FRAME_BYTES = 256 * 1024;
1218
1218
  var TUNNEL_DRAIN_PING_PATH = "/__evident/drain";
1219
+ var TUNNEL_USAGE_REARM_PING_PATH = "/__evident/usage-rearm";
1219
1220
 
1220
1221
  // ../../packages/types/src/runner-files.ts
1221
1222
  var MAX_FILE_PUSH_BYTES = 64 * 1024;
@@ -3635,7 +3636,6 @@ var StreamForwarder = class {
3635
3636
  handleFrame(frame) {
3636
3637
  switch (frame.type) {
3637
3638
  case "open":
3638
- this.callbacks.onOpen?.(frame.sid, frame.method, frame.path);
3639
3639
  void this.handleOpen(frame);
3640
3640
  break;
3641
3641
  case "req_data":
@@ -3671,12 +3671,21 @@ var StreamForwarder = class {
3671
3671
  const { sid, method, path, headers, has_body } = frame;
3672
3672
  const correlationId = headers?.[CORRELATION_ID_HEADER];
3673
3673
  const startedAt = Date.now();
3674
+ if (path !== TUNNEL_DRAIN_PING_PATH && path !== TUNNEL_USAGE_REARM_PING_PATH) {
3675
+ this.callbacks.onOpen?.(sid, method, path);
3676
+ }
3674
3677
  if (path === TUNNEL_DRAIN_PING_PATH) {
3675
3678
  this.callbacks.onDrainPing?.();
3676
3679
  this.send({ type: "head", sid, status: 204, headers: {} });
3677
3680
  this.send({ type: "res_end", sid });
3678
3681
  return;
3679
3682
  }
3683
+ if (path === TUNNEL_USAGE_REARM_PING_PATH) {
3684
+ this.callbacks.onUsageRearmPing?.();
3685
+ this.send({ type: "head", sid, status: 204, headers: {} });
3686
+ this.send({ type: "res_end", sid });
3687
+ return;
3688
+ }
3680
3689
  if (process.env.DEBUG) {
3681
3690
  log("debug", "agent_request", {
3682
3691
  correlation_id: correlationId,
@@ -3821,7 +3830,8 @@ function connectTunnel(options) {
3821
3830
  onResponse,
3822
3831
  onInfo,
3823
3832
  onWarning,
3824
- onDrainPing
3833
+ onDrainPing,
3834
+ onUsageRearmPing
3825
3835
  } = options;
3826
3836
  const tunnelUrl = getTunnelUrlConfig();
3827
3837
  const url = `${tunnelUrl}/tunnel/${agentId}/connect`;
@@ -3833,7 +3843,8 @@ function connectTunnel(options) {
3833
3843
  });
3834
3844
  const forwarder = new StreamForwarder(ws, port, {
3835
3845
  onHead: () => onResponse?.(),
3836
- onDrainPing: () => onDrainPing?.()
3846
+ onDrainPing: () => onDrainPing?.(),
3847
+ onUsageRearmPing: () => onUsageRearmPing?.()
3837
3848
  });
3838
3849
  const connectionTimeout = setTimeout(() => {
3839
3850
  ws.close();
@@ -3994,6 +4005,7 @@ var RunnerConnection = class {
3994
4005
  onError: (error2) => events.onError?.(error2),
3995
4006
  onResponse: () => events.onResponse?.(),
3996
4007
  onDrainPing: () => events.onDrainPing?.(),
4008
+ onUsageRearmPing: () => events.onUsageRearmPing?.(),
3997
4009
  onInfo: (message) => events.onInfo?.(message),
3998
4010
  onWarning: (message) => events.onWarning?.(message)
3999
4011
  });
@@ -10961,6 +10973,18 @@ async function run(options) {
10961
10973
  if (state.interactive) displayStatus(state);
10962
10974
  });
10963
10975
  },
10976
+ // Both loops are rearmed because `rearm()` is idempotent for the
10977
+ // provider that did not just connect, and is a no-op when reporting is off.
10978
+ onUsageRearmPing: () => {
10979
+ if (!state.running) return;
10980
+ logActivity(state, {
10981
+ type: "info",
10982
+ level: "debug",
10983
+ message: "Usage rearm ping received"
10984
+ });
10985
+ state.claudeUsageRearm?.();
10986
+ state.openaiUsageRearm?.();
10987
+ },
10964
10988
  onInfo: (message) => logActivity(state, { type: "info", message })
10965
10989
  }
10966
10990
  });