@belticlabs/agent-risk-sdk 0.1.1 → 0.3.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/dist/mcp/index.js CHANGED
@@ -1,52 +1,58 @@
1
1
  import {
2
+ Sessions,
2
3
  recordCall
3
- } from "../chunk-5TWO73OD.js";
4
+ } from "../chunk-4MG6VNAU.js";
4
5
  import {
5
6
  SESSION_EXTENSION
6
- } from "../chunk-VM7MK43J.js";
7
+ } from "../chunk-FAQ442YH.js";
7
8
  import {
8
9
  uuidv7
9
- } from "../chunk-SFGM7KOG.js";
10
+ } from "../chunk-X3W2Z5GC.js";
10
11
  import {
11
- x402Moments
12
- } from "../chunk-U5Z5Z2BQ.js";
12
+ Verdict
13
+ } from "../chunk-46QN2KEZ.js";
13
14
  import {
14
15
  presentedFrom
15
16
  } from "../chunk-7G5EHNVW.js";
17
+ import {
18
+ x402Moments
19
+ } from "../chunk-LM4NIYE5.js";
16
20
  import {
17
21
  toJson,
18
22
  toJsonObject
19
23
  } from "../chunk-FQDHFTVR.js";
20
- import {
21
- Verdict
22
- } from "../chunk-46QN2KEZ.js";
23
24
 
24
25
  // src/mcp/index.ts
25
- function wrapClient(session, client, opts = {}) {
26
+ function wrapClient(source, client, opts = {}) {
27
+ if (!source) return client;
26
28
  const original = client.callTool.bind(client);
27
- const callTool = (params, ...rest) => recordCall(
28
- session,
29
- "tool_call",
30
- uuidv7(),
31
- {
32
- toolName: params.name,
33
- input: toJson(params.arguments ?? {}),
34
- transport: "mcp",
35
- ...opts.server ? { server: opts.server } : {}
36
- },
37
- async () => {
38
- await session.flush();
39
- return original(
40
- { ...params, _meta: { ...params._meta ?? {}, [SESSION_EXTENSION]: session.id } },
41
- ...rest
42
- );
43
- },
44
- async (result) => {
45
- const ask = findPaymentAsk(result);
46
- if (ask) await session.emit("payment.requested", ask);
47
- return { output: toJson(result) };
48
- }
49
- );
29
+ const callTool = async (params, ...rest) => {
30
+ const session = await Sessions.resolve(source);
31
+ if (!session) return original(params, ...rest);
32
+ return recordCall(
33
+ session,
34
+ "tool_call",
35
+ uuidv7(),
36
+ {
37
+ toolName: params.name,
38
+ input: toJson(params.arguments ?? {}),
39
+ transport: "mcp",
40
+ ...opts.server ? { server: opts.server } : {}
41
+ },
42
+ async () => {
43
+ await session.flush();
44
+ return original(
45
+ { ...params, _meta: { ...params._meta ?? {}, [SESSION_EXTENSION]: session.id } },
46
+ ...rest
47
+ );
48
+ },
49
+ async (result) => {
50
+ const ask = findPaymentAsk(result);
51
+ if (ask) await session.emit("payment.requested", ask);
52
+ return { output: toJson(result) };
53
+ }
54
+ );
55
+ };
50
56
  return new Proxy(client, {
51
57
  get(target, prop, receiver) {
52
58
  return prop === "callTool" ? callTool : Reflect.get(target, prop, receiver);
@@ -85,8 +91,10 @@ function withBeltic(beltic, handler, opts) {
85
91
  presentedFrom(payment, { tool: opts.toolName, args: toJson(args) })
86
92
  );
87
93
  const out = await beltic.evaluate(session.id, payment);
88
- verdict = Verdict.of(out.decision);
89
- reasonCodes = out.reasonCodes;
94
+ if (out) {
95
+ verdict = out.verdict;
96
+ reasonCodes = out.reasonCodes;
97
+ }
90
98
  }
91
99
  await session.emit("gateway.decision", {
92
100
  gateway,
@@ -0,0 +1,15 @@
1
+ import { PaywallConfig } from '@x402/core/server';
2
+ import { A as AttachOptions } from './adapter-BEpzr2R3.js';
3
+
4
+ /**
5
+ * The seller half as one middleware: the framework's `@x402/*` payment
6
+ * middleware over an `x402HTTPResourceServer` with the Beltic hooks
7
+ * attached. `@belticlabs/agent-risk-sdk/hono` and `@belticlabs/agent-risk-sdk/express` differ only in
8
+ * which `paymentMiddlewareFromHTTPServer` they hand in.
9
+ */
10
+
11
+ type GuardedMiddlewareOptions = AttachOptions & {
12
+ paywall?: PaywallConfig | undefined;
13
+ };
14
+
15
+ export type { GuardedMiddlewareOptions as G };
@@ -1,7 +1,6 @@
1
- import { b as JsonValue, E as EvidenceSourceAll } from '../index-Bjs3BPPU.js';
2
- export { A as ALL_SOURCES, c as ANOMALY_TYPES, d as Amount, e as AmountSchema, f as AnchorEntry, g as AnchorEntrySchema, h as AnchorsOutput, i as AnchorsOutputSchema, j as ApiError, k as ApiErrorSchema, C as ChainHead, l as ChainHeadSchema, m as CreatePolicyInput, n as CreatePolicyInputSchema, o as CreatePolicyOutput, p as CreatePolicyOutputSchema, q as CreateSessionInput, r as CreateSessionInputSchema, s as CreateSessionOutput, t as CreateSessionOutputSchema, D as Decision, u as DecisionSchema, v as DeclaredIntent, w as DeclaredIntentSchema, x as DigestedEnvelope, y as EvaluateInput, z as EvaluateInputSchema, B as EvaluateOutput, F as EvaluateOutputSchema, G as EventResult, H as EventResultSchema, I as EventResultStatus, K as EventResultStatusSchema, L as EvidenceAck, M as EvidenceAckSchema, N as EvidenceBatchInput, O as EvidenceBatchInputSchema, Q as EvidenceEnvelope, R as EvidenceEvent, S as EvidenceEventSchema, T as EvidenceKind, U as EvidenceKindSchema, V as EvidenceSource, W as EvidenceSourceAllSchema, X as EvidenceSourceSchema, Y as GatewayDecisionPayload, Z as GatewayDecisionPayloadSchema, _ as Hex64, $ as Hex64Schema, a0 as IntentDeclaredPayload, a1 as IntentDeclaredPayloadSchema, J as JsonObject, a2 as JsonValueSchema, a3 as LlmCallEndPayload, a4 as LlmCallEndPayloadSchema, a5 as LlmCallStartPayload, a6 as LlmCallStartPayloadSchema, a7 as MAX_BATCH_EVENTS, a8 as PAYMENT_ARTIFACTS, a9 as PLATFORM_KINDS, aa as PayloadByKind, P as PaymentMomentPayload, ab as PaymentMomentPayloadSchema, a as PaymentSummary, ac as PaymentSummarySchema, ad as PlatformAnomalyPayload, ae as PlatformAnomalyPayloadSchema, af as PlatformEvidenceKind, ag as PlatformEvidenceKindSchema, ah as PlatformObservationPayload, ai as PlatformObservationPayloadSchema, aj as SESSION_CLOSE_REASONS, ak as SOURCE_ORDER, al as SeqSchema, am as SessionClosePayload, an as SessionClosePayloadSchema, ao as SessionIdSchema, ap as SessionOpenPayload, aq as SessionOpenPayloadSchema, ar as Sig, as as SigSchema, at as TimestampSchema, au as ToolCallEndPayload, av as ToolCallEndPayloadSchema, aw as ToolCallStartPayload, ax as ToolCallStartPayloadSchema, ay as TransportGapPayload, az as TransportGapPayloadSchema, aA as WIRE_KINDS, aB as WIRE_SOURCES, aC as WireEvidenceKind, aD as WireEvidenceKindSchema, aE as compareBySessionSource, aF as compareBySourceSeq, aG as isPlatformKind, aH as isWireKind, aI as payloadSchemaFor } from '../index-Bjs3BPPU.js';
1
+ import { b as JsonValue, E as EvidenceSourceAll } from '../verdict-6vCyoAHE.js';
2
+ export { A as ALL_SOURCES, c as ANOMALY_TYPES, d as Amount, e as AmountSchema, f as AnchorEntry, g as AnchorEntrySchema, h as AnchorsOutput, i as AnchorsOutputSchema, j as ApiError, k as ApiErrorSchema, C as ChainHead, l as ChainHeadSchema, m as CreatePolicyInput, n as CreatePolicyInputSchema, o as CreatePolicyOutput, p as CreatePolicyOutputSchema, q as CreateSessionInput, r as CreateSessionInputSchema, s as CreateSessionOutput, t as CreateSessionOutputSchema, D as Decision, u as DecisionSchema, v as DeclaredIntent, w as DeclaredIntentSchema, x as DigestedEnvelope, y as EvaluateInput, z as EvaluateInputSchema, B as EvaluateOutput, F as EvaluateOutputSchema, G as EventResult, H as EventResultSchema, I as EventResultStatus, K as EventResultStatusSchema, L as EvidenceAck, M as EvidenceAckSchema, N as EvidenceBatchInput, O as EvidenceBatchInputSchema, Q as EvidenceEnvelope, R as EvidenceEvent, S as EvidenceEventSchema, T as EvidenceKind, U as EvidenceKindSchema, V as EvidenceSource, W as EvidenceSourceAllSchema, X as EvidenceSourceSchema, Y as GatewayDecisionPayload, Z as GatewayDecisionPayloadSchema, _ as Hex64, $ as Hex64Schema, a0 as IntentDeclaredPayload, a1 as IntentDeclaredPayloadSchema, J as JsonObject, a2 as JsonValueSchema, a3 as LlmCallEndPayload, a4 as LlmCallEndPayloadSchema, a5 as LlmCallStartPayload, a6 as LlmCallStartPayloadSchema, a7 as MAX_BATCH_EVENTS, a8 as OnReview, a9 as PAYMENT_ARTIFACTS, aa as PLATFORM_KINDS, ab as PayloadByKind, P as PaymentMomentPayload, ac as PaymentMomentPayloadSchema, a as PaymentSummary, ad as PaymentSummarySchema, ae as PlatformAnomalyPayload, af as PlatformAnomalyPayloadSchema, ag as PlatformEvidenceKind, ah as PlatformEvidenceKindSchema, ai as PlatformObservationPayload, aj as PlatformObservationPayloadSchema, ak as SESSION_CLOSE_REASONS, al as SOURCE_ORDER, am as SeqSchema, an as SessionClosePayload, ao as SessionClosePayloadSchema, ap as SessionIdSchema, aq as SessionOpenPayload, ar as SessionOpenPayloadSchema, as as Sig, at as SigSchema, au as TimestampSchema, av as ToolCallEndPayload, aw as ToolCallEndPayloadSchema, ax as ToolCallStartPayload, ay as ToolCallStartPayloadSchema, az as TransportGapPayload, aA as TransportGapPayloadSchema, aB as Verdict, aC as WIRE_KINDS, aD as WIRE_SOURCES, aE as WireEvidenceKind, aF as WireEvidenceKindSchema, aG as compareBySessionSource, aH as compareBySourceSeq, aI as isPlatformKind, aJ as isWireKind, aK as payloadSchemaFor } from '../verdict-6vCyoAHE.js';
3
3
  import { z } from 'zod';
4
- export { O as OnReview, V as Verdict } from '../verdict-BAahb5po.js';
5
4
 
6
5
  declare const PRIMITIVES: readonly ["THRESHOLD", "MEMBERSHIP", "MATCH", "PRESENCE", "FRESHNESS"];
7
6
  declare const PrimitiveSchema: z.ZodEnum<{
@@ -1,8 +1,15 @@
1
- import { B as Beltic } from '../client-NxpD_384.js';
2
- import '../index-Bjs3BPPU.js';
1
+ import { B as Beltic } from '../session-DsBWEP8d.js';
2
+ import '../verdict-6vCyoAHE.js';
3
3
  import 'zod';
4
- import '../verdict-BAahb5po.js';
5
- import '../session-B2mfurae.js';
4
+
5
+ /**
6
+ * Adapter for the anti-fraud port already in Beltic's `platform` monorepo
7
+ * (`x402-core/gateways/anti-fraud.gateway.interface.ts`), GAP-37. That
8
+ * port is binary and session-less; the mapping is lossy by construction:
9
+ * `REVIEW` becomes a deny unless `onReview` says otherwise, and reason
10
+ * codes travel joined in `reason`. The structural type is copied so this
11
+ * module needs no dependency on `platform`.
12
+ */
6
13
 
7
14
  interface PaymentRiskContext {
8
15
  wallet: string;
@@ -1,13 +1,10 @@
1
- import {
2
- x402Currency
3
- } from "../chunk-U5Z5Z2BQ.js";
4
1
  import {
5
2
  presentedFrom
6
3
  } from "../chunk-7G5EHNVW.js";
7
- import "../chunk-FQDHFTVR.js";
8
4
  import {
9
- Verdict
10
- } from "../chunk-46QN2KEZ.js";
5
+ x402Summary
6
+ } from "../chunk-LM4NIYE5.js";
7
+ import "../chunk-FQDHFTVR.js";
11
8
 
12
9
  // src/seller/anti-fraud-gateway.ts
13
10
  var BelticAntiFraudGateway = class {
@@ -16,12 +13,15 @@ var BelticAntiFraudGateway = class {
16
13
  }
17
14
  async assess(ctx) {
18
15
  const session = await this.beltic.sessions.ensure(ctx.sessionId ?? null);
19
- const payment = {
20
- protocol: "x402",
21
- payee: ctx.payTo ?? ctx.resource,
22
- amount: { value: ctx.amountAtomic, currency: x402Currency(ctx.network, ctx.asset) },
23
- payer: ctx.wallet.toLowerCase()
24
- };
16
+ const payment = x402Summary(
17
+ {
18
+ payTo: ctx.payTo ?? ctx.resource,
19
+ amount: ctx.amountAtomic,
20
+ network: ctx.network,
21
+ asset: ctx.asset
22
+ },
23
+ { payer: ctx.wallet }
24
+ );
25
25
  await session.emit(
26
26
  "payment.presented",
27
27
  presentedFrom(payment, {
@@ -30,8 +30,7 @@ var BelticAntiFraudGateway = class {
30
30
  })
31
31
  );
32
32
  const out = await this.beltic.evaluate(session.id, payment);
33
- const verdict = Verdict.of(out.decision);
34
- return verdict.blocks(this.beltic.onReview) ? { allow: false, reason: `${out.decision}:${out.reasonCodes.join(",")}` } : { allow: true };
33
+ return out?.verdict.blocks(this.beltic.onReview) ? { allow: false, reason: `${out.decision}:${out.reasonCodes.join(",")}` } : { allow: true };
35
34
  }
36
35
  };
37
36
  export {