@elisym/cli 0.21.0 → 0.21.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js CHANGED
@@ -2818,6 +2818,8 @@ var AgentRuntime = class {
2818
2818
  }
2819
2819
  const deadlineMs = this.config.paymentTimeoutSecs * 1e3;
2820
2820
  const sigPathTimeoutMs = Math.min(deadlineMs, SIG_PATH_TIMEOUT_MS);
2821
+ let sigOutcome;
2822
+ let refOutcome;
2821
2823
  let result;
2822
2824
  try {
2823
2825
  result = await new Promise((resolve3, reject) => {
@@ -2850,6 +2852,7 @@ var AgentRuntime = class {
2850
2852
  return;
2851
2853
  }
2852
2854
  if (!sig) {
2855
+ sigOutcome = { gotSignature: false };
2853
2856
  lose({ verified: false }, "sig path: no payment-completed feedback");
2854
2857
  return;
2855
2858
  }
@@ -2862,33 +2865,32 @@ var AgentRuntime = class {
2862
2865
  win(verified);
2863
2866
  } else {
2864
2867
  const reason = verified.error ?? "unknown";
2868
+ sigOutcome = { gotSignature: true, error: reason };
2865
2869
  lose(verified, `sig path: not verified (${reason})`);
2866
2870
  }
2867
2871
  } catch (err) {
2868
- lose(
2869
- { verified: false },
2870
- `sig path error: ${err instanceof Error ? err.message : String(err)}`
2871
- );
2872
+ const message = err instanceof Error ? err.message : String(err);
2873
+ sigOutcome = { gotSignature: true, error: message };
2874
+ lose({ verified: false }, `sig path error: ${message}`);
2872
2875
  }
2873
- }).catch(
2874
- (err) => lose(
2875
- { verified: false },
2876
- `sig path error: ${err instanceof Error ? err.message : String(err)}`
2877
- )
2878
- );
2876
+ }).catch((err) => {
2877
+ const message = err instanceof Error ? err.message : String(err);
2878
+ sigOutcome = { gotSignature: false, error: message };
2879
+ lose({ verified: false }, `sig path error: ${message}`);
2880
+ });
2879
2881
  payment.verifyPayment(rpc, request, protocolConfig).then((verified) => {
2880
2882
  if (verified.verified) {
2881
2883
  win(verified);
2882
2884
  } else {
2883
2885
  const reason = verified.error ?? "unknown";
2886
+ refOutcome = { error: reason };
2884
2887
  lose(verified, `ref path: not verified (${reason})`);
2885
2888
  }
2886
- }).catch(
2887
- (err) => lose(
2888
- { verified: false },
2889
- `ref path error: ${err instanceof Error ? err.message : String(err)}`
2890
- )
2891
- );
2889
+ }).catch((err) => {
2890
+ const message = err instanceof Error ? err.message : String(err);
2891
+ refOutcome = { error: message };
2892
+ lose({ verified: false }, `ref path error: ${message}`);
2893
+ });
2892
2894
  const deadline = setTimeout(() => {
2893
2895
  if (settled) {
2894
2896
  return;
@@ -2929,9 +2931,18 @@ var AgentRuntime = class {
2929
2931
  if (result.verified) {
2930
2932
  return { netAmount, paymentRequest: requestJson };
2931
2933
  }
2932
- log(
2933
- `[${job.jobId.slice(0, 8)}] WARNING: Payment verification timed out. Customer may have paid on-chain. Check address ${this.config.solanaAddress} manually.`
2934
- );
2934
+ const refDefinitiveNoPay = refOutcome?.error === "No matching transaction found for reference key";
2935
+ const sigGotSignature = sigOutcome?.gotSignature === true;
2936
+ const customerAbandoned = !sigGotSignature && refDefinitiveNoPay;
2937
+ if (customerAbandoned) {
2938
+ log(
2939
+ `[${job.jobId.slice(0, 8)}] Payment not received; on-chain scan found no matching transaction - job abandoned by customer.`
2940
+ );
2941
+ } else {
2942
+ log(
2943
+ `[${job.jobId.slice(0, 8)}] WARNING: Payment verification timed out. Customer may have paid on-chain. Check address ${this.config.solanaAddress} manually.`
2944
+ );
2945
+ }
2935
2946
  await this.transport.sendFeedback(job, { type: "error", message: "payment timeout" }).catch(() => {
2936
2947
  });
2937
2948
  throw new Error("Payment timeout");