interai-risk-oracle 0.1.3-beta → 0.1.5-beta

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/README.md CHANGED
@@ -1,16 +1,40 @@
1
1
  # TypeScript SDK
2
2
 
3
- Typed hosted API client for InterAI Risk Oracle. The package source is
4
- publish-ready; confirm the package has been released before using the registry
5
- command below.
3
+ Typed hosted API client for InterAI Risk Oracle.
4
+
5
+ Package version: `interai-risk-oracle@0.1.5-beta`.
6
6
 
7
7
  ```bash
8
- npm install interai-risk-oracle
8
+ npm install interai-risk-oracle@0.1.5-beta
9
9
  ```
10
10
 
11
+ ## Builder workflow
12
+
13
+ The client can onboard a builder, retain the returned API key, inspect the account, quote usage, and manage a prepaid top-up without hand-building HTTP requests:
14
+
11
15
  ```ts
12
16
  import { InterAIRiskOracleClient } from "interai-risk-oracle"
13
17
 
18
+ const client = new InterAIRiskOracleClient({
19
+ baseUrl: "https://ai-risk-oracle.fly.dev"
20
+ })
21
+
22
+ const onboarding = await client.onboard({
23
+ name: "my-agent"
24
+ })
25
+
26
+ const account = await client.me()
27
+ const quote = await client.quote({ mode: "fast" })
28
+ const topup = await client.createTopup("0.10")
29
+ ```
30
+
31
+ `onboard()` stores the returned API key on the client when one is issued. You can also set a key explicitly with `setApiKey()`.
32
+
33
+ Top-up helpers cover `createTopup()`, `topupStatus()`, and `confirmTopup()`. Account helpers include `me()`, `ledger()`, and `usage()`. HTTP failures raise `OracleHttpError` with `status`, structured API `code`, response headers, body, and parsed x402 payment requirements when present.
34
+
35
+ ## Pre-execution verification
36
+
37
+ ```ts
14
38
  const client = new InterAIRiskOracleClient({
15
39
  baseUrl: "https://ai-risk-oracle.fly.dev",
16
40
  apiKey: process.env.INTERAI_API_KEY
@@ -19,9 +43,18 @@ const client = new InterAIRiskOracleClient({
19
43
  const decision = await client.verify({
20
44
  use_case: "agent-before-tool-execution",
21
45
  action: {
22
- type: "tool_call",
23
- description: "Send account notice",
24
- external_side_effect: true
46
+ schema: "interai-canonical-action/v1",
47
+ tool_id: "notifications.send_account_notice",
48
+ type: "email_send",
49
+ operation: "send_account_notice",
50
+ arguments: { account_id: "account_123" },
51
+ external_side_effect: true,
52
+ irreversible: false
53
+ },
54
+ execution_context: {
55
+ schema: "interai-host-execution-context/v1",
56
+ workspace_id: "workspace_123",
57
+ environment: "production"
25
58
  },
26
59
  context: {
27
60
  agent_id: "agent_123",
@@ -36,11 +69,25 @@ const decision = await client.verify({
36
69
  }, "stable-business-operation-id")
37
70
  ```
38
71
 
39
- `verify` generates an idempotency key when one is not provided. Supply a stable
40
- business-operation key when retries must resolve to the same billed result.
72
+ `verify()` generates an idempotency key when one is not provided. Supply a stable business-operation key when retries must resolve to the same billed result. `verifyBatch()` provides the corresponding bounded batch surface. Request timeouts are configurable globally with `timeoutMs` and per verification call.
41
73
 
42
- For a portable signature check, fetch a lookup and forward its opaque signed
43
- payload without parsing it:
74
+ ## Execution boundary
75
+
76
+ For an `allow`, verify the DecisionReceipt with the service, rebuild the final host intent, then validate the exact binding before dispatch. `ExecutionAuthorization` is single-use and expires in 1–300 seconds (60 seconds default); persist atomic consumption in your own runtime when replay protection must survive processes.
77
+
78
+ ```ts
79
+ const lookup = await client.getTrustReceipt(decision.trust_receipt_id!)
80
+ const gate = await client.validateAndConsumeReceipt({
81
+ lookup,
82
+ finalIntent: rebuildFinalIntentAtHostBoundary(),
83
+ replayStore // durable, atomic consumeOnce(key); errors must throw
84
+ })
85
+ if (!gate.ok) throw new Error(`Do not dispatch: ${gate.code}`)
86
+ ```
87
+
88
+ `getTrustReceipt()` requires the owning active API key and returns complete signed evidence. If you intentionally need the anonymous existence reference, use `getTrustReceiptReference()`, whose return type is the privacy-aware union `TrustReceiptLookup | TrustReceiptPublicSummary`. The public summary contains only `receipt_id` and `issued_at`; it is not execution evidence.
89
+
90
+ For a portable signature check, fetch the owner-authenticated lookup and forward its opaque signed payload without parsing or reserializing it:
44
91
 
45
92
  ```ts
46
93
  const receipt = await client.getTrustReceipt(decision.trust_receipt_id!)
@@ -50,6 +97,9 @@ const signatureCheck = await client.verifyTrustReceiptSignature(receipt)
50
97
  Build and inspect the package locally:
51
98
 
52
99
  ```bash
100
+ npm run typecheck
53
101
  npm run build
54
102
  npm pack --dry-run
55
103
  ```
104
+
105
+ See [the durable SQLite dispatch example](../../examples/execution-boundary/README.md) for restart-safe consumption and terminal executor binding. The low-level validator alone does not prevent replay.
package/dist/index.d.ts CHANGED
@@ -1,8 +1,83 @@
1
1
  export type AutonomousRiskLevel = "low" | "medium" | "high";
2
2
  export type GatewayDecision = "allow" | "review_required" | "block";
3
+ export declare const SDK_VERSION: "0.1.5-beta";
4
+ export declare const CANONICAL_ACTION_SCHEMA: "interai-canonical-action/v1";
5
+ export declare const HOST_EXECUTION_CONTEXT_SCHEMA: "interai-host-execution-context/v1";
6
+ export declare const EXECUTION_INTENT_SCHEMA: "interai-canonical-execution-intent/v2";
7
+ export declare const EXECUTION_AUTHORIZATION_SCHEMA: "interai-execution-authorization/v1";
8
+ export declare const DEFAULT_EXECUTION_AUTHORIZATION_TTL_SECONDS = 60;
9
+ export declare const MAX_EXECUTION_AUTHORIZATION_TTL_SECONDS = 300;
10
+ /** The trusted action envelope is constructed by the host execution boundary, not inferred from agent free text. */
11
+ export type CanonicalActionEnvelope = {
12
+ schema: typeof CANONICAL_ACTION_SCHEMA;
13
+ tool_id: string;
14
+ type: string;
15
+ operation: string;
16
+ arguments: Record<string, unknown>;
17
+ external_side_effect: boolean;
18
+ irreversible: boolean;
19
+ destination?: string;
20
+ resource?: string;
21
+ };
22
+ export type HostExecutionContext = {
23
+ schema: typeof HOST_EXECUTION_CONTEXT_SCHEMA;
24
+ workspace_id: string;
25
+ environment: string;
26
+ actor_id?: string;
27
+ run_id?: string;
28
+ };
29
+ /** The exact public object bound to an execution authorization. */
30
+ export type CanonicalExecutionIntent = {
31
+ schema: typeof EXECUTION_INTENT_SCHEMA;
32
+ action_authority: "host_attested_canonical" | "caller_proposed_legacy";
33
+ canonical_action: Record<string, unknown>;
34
+ evaluation_context: Record<string, unknown>;
35
+ authoritative_context: Record<string, unknown>;
36
+ policy_authority: Record<string, unknown>;
37
+ };
38
+ export type ExecutionAuthorization = {
39
+ schema: typeof EXECUTION_AUTHORIZATION_SCHEMA;
40
+ decision_id: string;
41
+ decision: "allow";
42
+ execution_intent_digest: string;
43
+ issued_at: string;
44
+ expires_at: string;
45
+ single_use: true;
46
+ };
47
+ export type ExecutionReceipt = {
48
+ receipt_schema_version: "execution-receipt/v1";
49
+ decision_id: string;
50
+ execution_intent_digest: string;
51
+ status: "dispatched" | "succeeded" | "failed" | "unknown";
52
+ observed_at: string;
53
+ correlation_id?: string;
54
+ evidence_source: string;
55
+ };
56
+ export type DispatchValidation = {
57
+ ok: true;
58
+ execution_intent_digest: string;
59
+ } | {
60
+ ok: false;
61
+ code: "decision_not_authorizing" | "execution_intent_mismatch" | "decision_expired" | "receipt_signature_invalid" | "authorization_replayed";
62
+ };
63
+ /** Must atomically insert a unique key in durable host-owned storage. Errors must throw. */
64
+ export interface ExecutionAuthorizationReplayStore {
65
+ consumeOnce(key: string): boolean | Promise<boolean>;
66
+ }
67
+ /** Canonical JSON used by the hosted execution-intent digest contract. */
68
+ export declare function canonicalExecutionIntentJson(intent: CanonicalExecutionIntent): string;
69
+ /** Returns the SHA-256 hex digest to compare with `execution_intent_digest` before dispatch. */
70
+ export declare function executionIntentDigest(intent: CanonicalExecutionIntent): Promise<string>;
71
+ /** Fail-closed local validation. Signature verification remains a service call. */
72
+ export declare function validateExecutionAuthorization(input: {
73
+ authorization: ExecutionAuthorization | null | undefined;
74
+ finalIntent: CanonicalExecutionIntent;
75
+ receiptSignatureValid: boolean;
76
+ now?: Date;
77
+ }): Promise<DispatchValidation>;
3
78
  export type VerifyRequest = {
4
79
  use_case: string;
5
- action: {
80
+ action: CanonicalActionEnvelope | {
6
81
  type: string;
7
82
  name?: string;
8
83
  description: string;
@@ -19,18 +94,24 @@ export type VerifyRequest = {
19
94
  user_confirmation?: boolean;
20
95
  [key: string]: unknown;
21
96
  };
97
+ /** Required with a canonical action for executable pilot authorization. Host-attested values are bound into the intent. */
98
+ execution_context?: HostExecutionContext;
99
+ /** 1–300 seconds; defaults to 60 seconds for canonical Bearer pilot requests. */
100
+ authorization_ttl_seconds?: number;
22
101
  policy?: {
23
102
  max_risk_level?: AutonomousRiskLevel;
24
103
  require_trust_receipt?: boolean;
25
104
  amount_usd_limit?: number;
26
105
  blocked_action_types?: string[];
27
106
  allowed_action_types?: string[];
107
+ allowed_action_types_enforced?: boolean;
28
108
  require_human_review_above?: number;
29
109
  require_user_confirmation_for_irreversible?: boolean;
30
110
  [key: string]: unknown;
31
111
  };
32
112
  domain?: string;
33
113
  mode?: "fast_heuristic" | "semantic_judge";
114
+ external_evidence?: unknown[];
34
115
  };
35
116
  export type PolicyViolation = {
36
117
  code: string;
@@ -65,6 +146,10 @@ export type VerifyResponse = {
65
146
  policy_result: GatewayDecision;
66
147
  policy_violations: PolicyViolation[];
67
148
  trust_receipt_id?: string;
149
+ /** Digest of the exact canonical intent evaluated; compare against the host's final intent before dispatch. */
150
+ execution_intent_digest?: string;
151
+ execution_intent?: CanonicalExecutionIntent;
152
+ execution_authorization?: ExecutionAuthorization | null;
68
153
  trust_receipt?: Record<string, unknown>;
69
154
  [key: string]: unknown;
70
155
  };
@@ -72,7 +157,40 @@ export type InterAIClientOptions = {
72
157
  baseUrl: string;
73
158
  apiKey?: string;
74
159
  clientName?: string;
160
+ timeoutMs?: number;
75
161
  };
162
+ export type OnboardResponse = Record<string, unknown> & {
163
+ api_key?: string;
164
+ };
165
+ export type X402PaymentRequiredResponse = Record<string, unknown> & {
166
+ x402Version: number;
167
+ accepts: unknown[];
168
+ };
169
+ export declare class OracleHttpError extends Error {
170
+ readonly status: number;
171
+ readonly body: unknown;
172
+ readonly code: string | null;
173
+ readonly headers: Record<string, string>;
174
+ readonly paymentRequired: X402PaymentRequiredResponse | null;
175
+ constructor(input: {
176
+ method: string;
177
+ path: string;
178
+ status: number;
179
+ body: unknown;
180
+ headers: Record<string, string>;
181
+ });
182
+ }
183
+ /** Anonymous receipt lookup: existence reference only, never signed evidence. */
184
+ export type TrustReceiptPublicSummary = {
185
+ ok: true;
186
+ visibility: "public_summary";
187
+ receipt: {
188
+ receipt_id: string;
189
+ issued_at: string;
190
+ };
191
+ full_receipt_requires_owner: true;
192
+ };
193
+ /** Complete owner-authenticated receipt lookup with opaque signed payload bytes. */
76
194
  export type TrustReceiptLookup = {
77
195
  ok: true;
78
196
  receipt: Record<string, unknown> & {
@@ -82,18 +200,59 @@ export type TrustReceiptLookup = {
82
200
  signed: boolean;
83
201
  signature: string | null;
84
202
  signature_alg: "hmac-sha256" | null;
203
+ verification_scope?: "service_verifiable";
85
204
  signed_payload: string | null;
205
+ signature_valid?: boolean;
86
206
  };
207
+ metadata?: Record<string, unknown>;
87
208
  [key: string]: unknown;
88
209
  };
210
+ export type TrustReceiptLookupResponse = TrustReceiptLookup | TrustReceiptPublicSummary;
89
211
  export declare class InterAIRiskOracleClient {
90
212
  readonly baseUrl: string;
91
- readonly apiKey?: string;
213
+ apiKey?: string;
92
214
  readonly clientName: string;
215
+ readonly timeoutMs: number;
93
216
  constructor(options: InterAIClientOptions);
217
+ setApiKey(apiKey: string): void;
94
218
  private jsonRequest;
95
- verify(request: VerifyRequest, idempotencyKey?: string): Promise<VerifyResponse>;
219
+ getPricing(): Promise<Record<string, unknown>>;
220
+ getDiscoveryBundle(): Promise<Record<string, unknown>>;
221
+ onboard(input?: {
222
+ name?: string;
223
+ account_id?: string;
224
+ api_key_name?: string;
225
+ recommended_topup_usdc?: string;
226
+ }): Promise<OnboardResponse>;
227
+ me(): Promise<Record<string, unknown>>;
228
+ ledger(limit?: number): Promise<Record<string, unknown>>;
229
+ usage(limit?: number): Promise<Record<string, unknown>>;
230
+ quote(input?: {
231
+ service?: "verify";
232
+ mode?: "fast" | "batch";
233
+ items_count?: number;
234
+ }): Promise<Record<string, unknown>>;
235
+ createTopup(amountUsdc?: string): Promise<Record<string, unknown>>;
236
+ topupStatus(topupId: string): Promise<Record<string, unknown>>;
237
+ confirmTopup(topupId: string, txHash: string): Promise<Record<string, unknown>>;
238
+ verify(request: VerifyRequest, idempotencyKey?: string, options?: {
239
+ signal?: AbortSignal;
240
+ timeoutMs?: number;
241
+ }): Promise<VerifyResponse>;
242
+ verifyBatch(requests: VerifyRequest[], idempotencyKey?: string, options?: {
243
+ signal?: AbortSignal;
244
+ timeoutMs?: number;
245
+ }): Promise<Record<string, unknown>>;
246
+ /** Return the privacy-aware lookup union without requiring owner credentials. */
247
+ getTrustReceiptReference(receiptId: string): Promise<TrustReceiptLookupResponse>;
248
+ /** Return complete signed evidence; throws when the service only returns the anonymous summary. */
96
249
  getTrustReceipt(receiptId: string): Promise<TrustReceiptLookup>;
250
+ /** Authenticate the exact receipt, validate its grant, then durably consume before dispatch. */
251
+ validateAndConsumeReceipt(input: {
252
+ lookup: TrustReceiptLookup;
253
+ finalIntent: CanonicalExecutionIntent;
254
+ replayStore: ExecutionAuthorizationReplayStore;
255
+ }): Promise<DispatchValidation>;
97
256
  verifyTrustReceiptSignature(lookup: TrustReceiptLookup): Promise<{
98
257
  valid: boolean;
99
258
  signature_alg: "hmac-sha256";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,mBAAmB,GAAG,KAAK,GAAG,QAAQ,GAAG,MAAM,CAAA;AAC3D,MAAM,MAAM,eAAe,GAAG,OAAO,GAAG,iBAAiB,GAAG,OAAO,CAAA;AAEnE,eAAO,MAAM,WAAW,EAAG,YAAqB,CAAA;AAChD,eAAO,MAAM,uBAAuB,EAAG,6BAAsC,CAAA;AAC7E,eAAO,MAAM,6BAA6B,EAAG,mCAA4C,CAAA;AACzF,eAAO,MAAM,uBAAuB,EAAG,uCAAgD,CAAA;AACvF,eAAO,MAAM,8BAA8B,EAAG,oCAA6C,CAAA;AAC3F,eAAO,MAAM,2CAA2C,KAAK,CAAA;AAC7D,eAAO,MAAM,uCAAuC,MAAM,CAAA;AAE1D,oHAAoH;AACpH,MAAM,MAAM,uBAAuB,GAAG;IACpC,MAAM,EAAE,OAAO,uBAAuB,CAAA;IACtC,OAAO,EAAE,MAAM,CAAA;IACf,IAAI,EAAE,MAAM,CAAA;IACZ,SAAS,EAAE,MAAM,CAAA;IACjB,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAClC,oBAAoB,EAAE,OAAO,CAAA;IAC7B,YAAY,EAAE,OAAO,CAAA;IACrB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAA;CAClB,CAAA;AAED,MAAM,MAAM,oBAAoB,GAAG;IACjC,MAAM,EAAE,OAAO,6BAA6B,CAAA;IAC5C,YAAY,EAAE,MAAM,CAAA;IACpB,WAAW,EAAE,MAAM,CAAA;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB,CAAA;AAED,mEAAmE;AACnE,MAAM,MAAM,wBAAwB,GAAG;IACrC,MAAM,EAAE,OAAO,uBAAuB,CAAA;IACtC,gBAAgB,EAAE,yBAAyB,GAAG,wBAAwB,CAAA;IACtE,gBAAgB,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IACzC,kBAAkB,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAC3C,qBAAqB,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAC9C,gBAAgB,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAC1C,CAAA;AAED,MAAM,MAAM,sBAAsB,GAAG;IACnC,MAAM,EAAE,OAAO,8BAA8B,CAAA;IAC7C,WAAW,EAAE,MAAM,CAAA;IACnB,QAAQ,EAAE,OAAO,CAAA;IACjB,uBAAuB,EAAE,MAAM,CAAA;IAC/B,SAAS,EAAE,MAAM,CAAA;IACjB,UAAU,EAAE,MAAM,CAAA;IAClB,UAAU,EAAE,IAAI,CAAA;CACjB,CAAA;AAED,MAAM,MAAM,gBAAgB,GAAG;IAC7B,sBAAsB,EAAE,sBAAsB,CAAA;IAC9C,WAAW,EAAE,MAAM,CAAA;IACnB,uBAAuB,EAAE,MAAM,CAAA;IAC/B,MAAM,EAAE,YAAY,GAAG,WAAW,GAAG,QAAQ,GAAG,SAAS,CAAA;IACzD,WAAW,EAAE,MAAM,CAAA;IACnB,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,eAAe,EAAE,MAAM,CAAA;CACxB,CAAA;AAED,MAAM,MAAM,kBAAkB,GAC1B;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,uBAAuB,EAAE,MAAM,CAAA;CAAE,GAC7C;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,IAAI,EAAE,0BAA0B,GAAG,2BAA2B,GAAG,kBAAkB,GAAG,2BAA2B,GAAG,wBAAwB,CAAA;CAAE,CAAA;AAE/J,4FAA4F;AAC5F,MAAM,WAAW,iCAAiC;IAChD,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAA;CACrD;AAeD,0EAA0E;AAC1E,wBAAgB,4BAA4B,CAAC,MAAM,EAAE,wBAAwB,GAAG,MAAM,CAErF;AAED,gGAAgG;AAChG,wBAAsB,qBAAqB,CAAC,MAAM,EAAE,wBAAwB,GAAG,OAAO,CAAC,MAAM,CAAC,CAI7F;AAED,mFAAmF;AACnF,wBAAsB,8BAA8B,CAAC,KAAK,EAAE;IAC1D,aAAa,EAAE,sBAAsB,GAAG,IAAI,GAAG,SAAS,CAAA;IACxD,WAAW,EAAE,wBAAwB,CAAA;IACrC,qBAAqB,EAAE,OAAO,CAAA;IAC9B,GAAG,CAAC,EAAE,IAAI,CAAA;CACX,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAmB9B;AAED,MAAM,MAAM,aAAa,GAAG;IAC1B,QAAQ,EAAE,MAAM,CAAA;IAChB,MAAM,EAAE,uBAAuB,GAAG;QAChC,IAAI,EAAE,MAAM,CAAA;QACZ,IAAI,CAAC,EAAE,MAAM,CAAA;QACb,WAAW,EAAE,MAAM,CAAA;QACnB,UAAU,CAAC,EAAE,MAAM,CAAA;QACnB,QAAQ,CAAC,EAAE,MAAM,CAAA;QACjB,YAAY,CAAC,EAAE,OAAO,CAAA;QACtB,oBAAoB,CAAC,EAAE,OAAO,CAAA;QAC9B,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;KACvB,CAAA;IACD,OAAO,CAAC,EAAE;QACR,QAAQ,CAAC,EAAE,MAAM,CAAA;QACjB,WAAW,CAAC,EAAE,MAAM,CAAA;QACpB,eAAe,CAAC,EAAE,MAAM,CAAA;QACxB,iBAAiB,CAAC,EAAE,OAAO,CAAA;QAC3B,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;KACvB,CAAA;IACD,2HAA2H;IAC3H,iBAAiB,CAAC,EAAE,oBAAoB,CAAA;IACxC,iFAAiF;IACjF,yBAAyB,CAAC,EAAE,MAAM,CAAA;IAClC,MAAM,CAAC,EAAE;QACP,cAAc,CAAC,EAAE,mBAAmB,CAAA;QACpC,qBAAqB,CAAC,EAAE,OAAO,CAAA;QAC/B,gBAAgB,CAAC,EAAE,MAAM,CAAA;QACzB,oBAAoB,CAAC,EAAE,MAAM,EAAE,CAAA;QAC/B,oBAAoB,CAAC,EAAE,MAAM,EAAE,CAAA;QAC/B,6BAA6B,CAAC,EAAE,OAAO,CAAA;QACvC,0BAA0B,CAAC,EAAE,MAAM,CAAA;QACnC,0CAA0C,CAAC,EAAE,OAAO,CAAA;QACpD,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;KACvB,CAAA;IACD,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,IAAI,CAAC,EAAE,gBAAgB,GAAG,gBAAgB,CAAA;IAC1C,iBAAiB,CAAC,EAAE,OAAO,EAAE,CAAA;CAC9B,CAAA;AAED,MAAM,MAAM,eAAe,GAAG;IAC5B,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,EAAE,MAAM,CAAA;IACf,QAAQ,EAAE,eAAe,CAAA;CAC1B,CAAA;AAED,MAAM,MAAM,aAAa,GAAG;IAC1B,kBAAkB,CAAC,EAAE,MAAM,CAAA;IAC3B,kBAAkB,CAAC,EAAE,MAAM,CAAA;IAC3B,uBAAuB,CAAC,EAAE,MAAM,CAAA;IAChC,mBAAmB,CAAC,EAAE,MAAM,CAAA;IAC5B,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,wBAAwB,CAAC,EAAE,OAAO,GAAG,IAAI,CAAA;IACzC,eAAe,CAAC,EAAE,OAAO,GAAG,IAAI,CAAA;IAChC,cAAc,CAAC,EAAE,OAAO,CAAA;IACxB,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAC1B,0BAA0B,CAAC,EAAE,OAAO,CAAA;IACpC,gBAAgB,CAAC,EAAE,OAAO,CAAA;IAC1B,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAC3B,uBAAuB,CAAC,EAAE,MAAM,EAAE,CAAA;IAClC,6BAA6B,CAAC,EAAE,OAAO,CAAA;IACvC,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;CACvB,CAAA;AAED,MAAM,MAAM,cAAc,GAAG;IAC3B,WAAW,EAAE,MAAM,CAAA;IACnB,gBAAgB,EAAE,sBAAsB,CAAA;IACxC,KAAK,EAAE,MAAM,CAAA;IACb,UAAU,EAAE,mBAAmB,CAAA;IAC/B,OAAO,EAAE,aAAa,CAAA;IACtB,kBAAkB,EAAE,eAAe,CAAA;IACnC,aAAa,EAAE,eAAe,CAAA;IAC9B,iBAAiB,EAAE,eAAe,EAAE,CAAA;IACpC,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB,+GAA+G;IAC/G,uBAAuB,CAAC,EAAE,MAAM,CAAA;IAChC,gBAAgB,CAAC,EAAE,wBAAwB,CAAA;IAC3C,uBAAuB,CAAC,EAAE,sBAAsB,GAAG,IAAI,CAAA;IACvD,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IACvC,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;CACvB,CAAA;AAED,MAAM,MAAM,oBAAoB,GAAG;IACjC,OAAO,EAAE,MAAM,CAAA;IACf,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB,CAAA;AAED,MAAM,MAAM,eAAe,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG;IACtD,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB,CAAA;AAED,MAAM,MAAM,2BAA2B,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG;IAClE,WAAW,EAAE,MAAM,CAAA;IACnB,OAAO,EAAE,OAAO,EAAE,CAAA;CACnB,CAAA;AAED,qBAAa,eAAgB,SAAQ,KAAK;IACxC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;IACvB,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAA;IACtB,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAA;IAC5B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IACxC,QAAQ,CAAC,eAAe,EAAE,2BAA2B,GAAG,IAAI,CAAA;gBAEhD,KAAK,EAAE;QACjB,MAAM,EAAE,MAAM,CAAA;QACd,IAAI,EAAE,MAAM,CAAA;QACZ,MAAM,EAAE,MAAM,CAAA;QACd,IAAI,EAAE,OAAO,CAAA;QACb,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;KAChC;CAgBF;AAED,iFAAiF;AACjF,MAAM,MAAM,yBAAyB,GAAG;IACtC,EAAE,EAAE,IAAI,CAAA;IACR,UAAU,EAAE,gBAAgB,CAAA;IAC5B,OAAO,EAAE;QACP,UAAU,EAAE,MAAM,CAAA;QAClB,SAAS,EAAE,MAAM,CAAA;KAClB,CAAA;IACD,2BAA2B,EAAE,IAAI,CAAA;CAClC,CAAA;AAED,oFAAoF;AACpF,MAAM,MAAM,kBAAkB,GAAG;IAC/B,EAAE,EAAE,IAAI,CAAA;IACR,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG;QAAE,UAAU,EAAE,MAAM,CAAA;KAAE,CAAA;IACzD,YAAY,EAAE;QACZ,MAAM,EAAE,OAAO,CAAA;QACf,SAAS,EAAE,MAAM,GAAG,IAAI,CAAA;QACxB,aAAa,EAAE,aAAa,GAAG,IAAI,CAAA;QACnC,kBAAkB,CAAC,EAAE,oBAAoB,CAAA;QACzC,cAAc,EAAE,MAAM,GAAG,IAAI,CAAA;QAC7B,eAAe,CAAC,EAAE,OAAO,CAAA;KAC1B,CAAA;IACD,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAClC,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;CACvB,CAAA;AAED,MAAM,MAAM,0BAA0B,GAAG,kBAAkB,GAAG,yBAAyB,CAAA;AAmBvF,qBAAa,uBAAuB;IAClC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;IACxB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAA;IAC3B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;gBAEd,OAAO,EAAE,oBAAoB;IAOzC,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;YAIjB,WAAW;IA8CnB,UAAU,IAAI,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAI9C,kBAAkB,IAAI,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAItD,OAAO,CAAC,KAAK,GAAE;QACnB,IAAI,CAAC,EAAE,MAAM,CAAA;QACb,UAAU,CAAC,EAAE,MAAM,CAAA;QACnB,YAAY,CAAC,EAAE,MAAM,CAAA;QACrB,sBAAsB,CAAC,EAAE,MAAM,CAAA;KAC3B,GAAG,OAAO,CAAC,eAAe,CAAC;IAU3B,EAAE,IAAI,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAItC,MAAM,CAAC,KAAK,SAAK,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAIpD,KAAK,CAAC,KAAK,SAAK,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAInD,KAAK,CAAC,KAAK,GAAE;QACjB,OAAO,CAAC,EAAE,QAAQ,CAAA;QAClB,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,CAAA;QACvB,WAAW,CAAC,EAAE,MAAM,CAAA;KAChB,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAYnC,WAAW,CAAC,UAAU,SAAS,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAQlE,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAI9D,YAAY,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAU/E,MAAM,CACV,OAAO,EAAE,aAAa,EACtB,cAAc,SAA0B,EACxC,OAAO,GAAE;QAAE,MAAM,CAAC,EAAE,WAAW,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAA;KAAO,GACzD,OAAO,CAAC,cAAc,CAAC;IAYpB,WAAW,CACf,QAAQ,EAAE,aAAa,EAAE,EACzB,cAAc,SAA0B,EACxC,OAAO,GAAE;QAAE,MAAM,CAAC,EAAE,WAAW,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAA;KAAO,GACzD,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAYnC,iFAAiF;IAC3E,wBAAwB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,0BAA0B,CAAC;IAMtF,mGAAmG;IAC7F,eAAe,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,CAAC;IAQrE,gGAAgG;IAC1F,yBAAyB,CAAC,KAAK,EAAE;QACrC,MAAM,EAAE,kBAAkB,CAAA;QAC1B,WAAW,EAAE,wBAAwB,CAAA;QACrC,WAAW,EAAE,iCAAiC,CAAA;KAC/C,GAAG,OAAO,CAAC,kBAAkB,CAAC;IAsBzB,2BAA2B,CAC/B,MAAM,EAAE,kBAAkB,GACzB,OAAO,CAAC;QAAE,KAAK,EAAE,OAAO,CAAC;QAAC,aAAa,EAAE,aAAa,CAAA;KAAE,CAAC;CAiB7D"}
package/dist/index.js CHANGED
@@ -1,25 +1,129 @@
1
+ export const SDK_VERSION = "0.1.5-beta";
2
+ export const CANONICAL_ACTION_SCHEMA = "interai-canonical-action/v1";
3
+ export const HOST_EXECUTION_CONTEXT_SCHEMA = "interai-host-execution-context/v1";
4
+ export const EXECUTION_INTENT_SCHEMA = "interai-canonical-execution-intent/v2";
5
+ export const EXECUTION_AUTHORIZATION_SCHEMA = "interai-execution-authorization/v1";
6
+ export const DEFAULT_EXECUTION_AUTHORIZATION_TTL_SECONDS = 60;
7
+ export const MAX_EXECUTION_AUTHORIZATION_TTL_SECONDS = 300;
8
+ function normalizeJson(value) {
9
+ if (Array.isArray(value))
10
+ return value.map(normalizeJson);
11
+ if (value && typeof value === "object") {
12
+ return Object.fromEntries(Object.entries(value)
13
+ .filter(([, item]) => item !== undefined)
14
+ .sort(([a], [b]) => a.localeCompare(b))
15
+ .map(([key, item]) => [key, normalizeJson(item)]));
16
+ }
17
+ return value;
18
+ }
19
+ /** Canonical JSON used by the hosted execution-intent digest contract. */
20
+ export function canonicalExecutionIntentJson(intent) {
21
+ return JSON.stringify(normalizeJson(intent));
22
+ }
23
+ /** Returns the SHA-256 hex digest to compare with `execution_intent_digest` before dispatch. */
24
+ export async function executionIntentDigest(intent) {
25
+ const bytes = new TextEncoder().encode(canonicalExecutionIntentJson(intent));
26
+ const hash = await globalThis.crypto.subtle.digest("SHA-256", bytes);
27
+ return Array.from(new Uint8Array(hash), (byte) => byte.toString(16).padStart(2, "0")).join("");
28
+ }
29
+ /** Fail-closed local validation. Signature verification remains a service call. */
30
+ export async function validateExecutionAuthorization(input) {
31
+ if (!input.receiptSignatureValid)
32
+ return { ok: false, code: "receipt_signature_invalid" };
33
+ if (!input.authorization || input.authorization.decision !== "allow" ||
34
+ input.authorization.schema !== EXECUTION_AUTHORIZATION_SCHEMA ||
35
+ input.authorization.single_use !== true || !input.authorization.decision_id) {
36
+ return { ok: false, code: "decision_not_authorizing" };
37
+ }
38
+ const expiresAt = new Date(input.authorization.expires_at);
39
+ const issuedAt = new Date(input.authorization.issued_at);
40
+ const now = input.now ?? new Date();
41
+ const ttl = expiresAt.getTime() - issuedAt.getTime();
42
+ if (!Number.isFinite(ttl) || ttl < 1000 || ttl > 300_000 || issuedAt > now || expiresAt <= now) {
43
+ return { ok: false, code: "decision_expired" };
44
+ }
45
+ const digest = await executionIntentDigest(input.finalIntent);
46
+ if (digest !== input.authorization.execution_intent_digest) {
47
+ return { ok: false, code: "execution_intent_mismatch" };
48
+ }
49
+ return { ok: true, execution_intent_digest: digest };
50
+ }
51
+ export class OracleHttpError extends Error {
52
+ status;
53
+ body;
54
+ code;
55
+ headers;
56
+ paymentRequired;
57
+ constructor(input) {
58
+ super(`InterAI request failed: ${input.method} ${input.path} ${input.status} ${JSON.stringify(input.body)}`);
59
+ this.name = "OracleHttpError";
60
+ this.status = input.status;
61
+ this.body = input.body;
62
+ this.headers = input.headers;
63
+ this.code = input.body && typeof input.body === "object" && "error" in input.body &&
64
+ typeof input.body.error === "string"
65
+ ? String(input.body.error)
66
+ : null;
67
+ this.paymentRequired = input.status === 402 && input.body && typeof input.body === "object" &&
68
+ input.body.x402Version === 2 &&
69
+ Array.isArray(input.body.accepts)
70
+ ? input.body
71
+ : null;
72
+ }
73
+ }
74
+ function isPublicReceiptSummary(value) {
75
+ return "visibility" in value && value.visibility === "public_summary";
76
+ }
1
77
  function defaultIdempotencyKey() {
2
78
  const random = globalThis.crypto?.randomUUID?.();
3
79
  return random || `interai-${Date.now().toString(36)}-${Math.random().toString(36).slice(2, 12)}`;
4
80
  }
81
+ function responseHeaders(response) {
82
+ const headers = {};
83
+ response.headers.forEach((value, key) => {
84
+ headers[key] = value;
85
+ });
86
+ return headers;
87
+ }
5
88
  export class InterAIRiskOracleClient {
6
89
  baseUrl;
7
90
  apiKey;
8
91
  clientName;
92
+ timeoutMs;
9
93
  constructor(options) {
10
94
  this.baseUrl = options.baseUrl.replace(/\/$/, "");
11
95
  this.apiKey = options.apiKey;
12
- this.clientName = options.clientName || "typescript-sdk/0.1.3-beta";
96
+ this.clientName = options.clientName || `typescript-sdk/${SDK_VERSION}`;
97
+ this.timeoutMs = options.timeoutMs ?? 10_000;
13
98
  }
14
- async jsonRequest(path, init) {
15
- const response = await fetch(`${this.baseUrl}${path}`, {
16
- ...init,
17
- headers: {
18
- ...(this.apiKey ? { authorization: `Bearer ${this.apiKey}` } : {}),
19
- "x-interai-client": this.clientName,
20
- ...(init?.headers || {})
21
- }
22
- });
99
+ setApiKey(apiKey) {
100
+ this.apiKey = apiKey;
101
+ }
102
+ async jsonRequest(path, init, timeoutMs) {
103
+ const controller = new AbortController();
104
+ const callerSignal = init?.signal;
105
+ const abortFromCaller = () => controller.abort(callerSignal?.reason);
106
+ if (callerSignal?.aborted)
107
+ abortFromCaller();
108
+ else
109
+ callerSignal?.addEventListener("abort", abortFromCaller, { once: true });
110
+ const timeout = setTimeout(() => controller.abort(new Error("InterAI request timed out")), timeoutMs ?? this.timeoutMs);
111
+ let response;
112
+ try {
113
+ response = await fetch(`${this.baseUrl}${path}`, {
114
+ ...init,
115
+ signal: controller.signal,
116
+ headers: {
117
+ ...(this.apiKey ? { authorization: `Bearer ${this.apiKey}` } : {}),
118
+ "x-interai-client": this.clientName,
119
+ ...(init?.headers || {})
120
+ }
121
+ });
122
+ }
123
+ finally {
124
+ clearTimeout(timeout);
125
+ callerSignal?.removeEventListener("abort", abortFromCaller);
126
+ }
23
127
  const text = await response.text();
24
128
  let body;
25
129
  try {
@@ -29,23 +133,128 @@ export class InterAIRiskOracleClient {
29
133
  body = { error: "invalid_json_response", raw: text.slice(0, 500) };
30
134
  }
31
135
  if (!response.ok) {
32
- throw new Error(`InterAI request failed: ${response.status} ${JSON.stringify(body)}`);
136
+ throw new OracleHttpError({
137
+ method: init?.method || "GET",
138
+ path,
139
+ status: response.status,
140
+ body,
141
+ headers: responseHeaders(response)
142
+ });
33
143
  }
34
144
  return body;
35
145
  }
36
- async verify(request, idempotencyKey = defaultIdempotencyKey()) {
146
+ async getPricing() {
147
+ return this.jsonRequest("/pricing");
148
+ }
149
+ async getDiscoveryBundle() {
150
+ return this.jsonRequest("/.well-known/discovery-bundle.json");
151
+ }
152
+ async onboard(input = {}) {
153
+ const result = await this.jsonRequest("/onboard", {
154
+ method: "POST",
155
+ headers: { "content-type": "application/json" },
156
+ body: JSON.stringify(input)
157
+ });
158
+ if (typeof result.api_key === "string" && result.api_key)
159
+ this.apiKey = result.api_key;
160
+ return result;
161
+ }
162
+ async me() {
163
+ return this.jsonRequest("/me");
164
+ }
165
+ async ledger(limit = 20) {
166
+ return this.jsonRequest(`/ledger?limit=${encodeURIComponent(String(limit))}`);
167
+ }
168
+ async usage(limit = 20) {
169
+ return this.jsonRequest(`/usage?limit=${encodeURIComponent(String(limit))}`);
170
+ }
171
+ async quote(input = {}) {
172
+ return this.jsonRequest("/quote", {
173
+ method: "POST",
174
+ headers: { "content-type": "application/json" },
175
+ body: JSON.stringify({
176
+ service: input.service ?? "verify",
177
+ mode: input.mode ?? "fast",
178
+ ...(input.items_count !== undefined ? { items_count: input.items_count } : {})
179
+ })
180
+ });
181
+ }
182
+ async createTopup(amountUsdc = "0.10") {
183
+ return this.jsonRequest("/topup/create", {
184
+ method: "POST",
185
+ headers: { "content-type": "application/json" },
186
+ body: JSON.stringify({ amount_usdc: amountUsdc })
187
+ });
188
+ }
189
+ async topupStatus(topupId) {
190
+ return this.jsonRequest(`/topup/${encodeURIComponent(topupId)}`);
191
+ }
192
+ async confirmTopup(topupId, txHash) {
193
+ return this.jsonRequest("/topup/confirm", {
194
+ method: "POST",
195
+ headers: {
196
+ "X-Topup-Id": topupId,
197
+ "X-Tx-Hash": txHash
198
+ }
199
+ });
200
+ }
201
+ async verify(request, idempotencyKey = defaultIdempotencyKey(), options = {}) {
37
202
  return this.jsonRequest("/verify", {
38
203
  method: "POST",
39
204
  headers: {
40
205
  "content-type": "application/json",
41
206
  "x-idempotency-key": idempotencyKey
42
207
  },
43
- body: JSON.stringify(request)
44
- });
208
+ body: JSON.stringify(request),
209
+ signal: options.signal
210
+ }, options.timeoutMs);
45
211
  }
46
- async getTrustReceipt(receiptId) {
212
+ async verifyBatch(requests, idempotencyKey = defaultIdempotencyKey(), options = {}) {
213
+ return this.jsonRequest("/verify/batch", {
214
+ method: "POST",
215
+ headers: {
216
+ "content-type": "application/json",
217
+ "x-idempotency-key": idempotencyKey
218
+ },
219
+ body: JSON.stringify({ items: requests }),
220
+ signal: options.signal
221
+ }, options.timeoutMs);
222
+ }
223
+ /** Return the privacy-aware lookup union without requiring owner credentials. */
224
+ async getTrustReceiptReference(receiptId) {
47
225
  return this.jsonRequest(`/trust/receipts/${encodeURIComponent(receiptId)}`);
48
226
  }
227
+ /** Return complete signed evidence; throws when the service only returns the anonymous summary. */
228
+ async getTrustReceipt(receiptId) {
229
+ const result = await this.getTrustReceiptReference(receiptId);
230
+ if (isPublicReceiptSummary(result)) {
231
+ throw new Error("Complete receipt requires the owning account API key");
232
+ }
233
+ return result;
234
+ }
235
+ /** Authenticate the exact receipt, validate its grant, then durably consume before dispatch. */
236
+ async validateAndConsumeReceipt(input) {
237
+ // Snapshot before the HTTP await so a caller cannot swap fields after verification.
238
+ const lookup = structuredClone(input.lookup);
239
+ const finalIntent = structuredClone(input.finalIntent);
240
+ const receipt = lookup.receipt;
241
+ const authorization = receipt.execution_authorization;
242
+ if (receipt.receipt_schema_version !== "trust-receipt/v2" ||
243
+ receipt.request_contract !== "autonomous_execution" || receipt.final_decision !== "allow" ||
244
+ !authorization || authorization.decision_id !== receipt.receipt_id ||
245
+ authorization.execution_intent_digest !== receipt.execution_intent_digest) {
246
+ return { ok: false, code: "decision_not_authorizing" };
247
+ }
248
+ const signature = await this.verifyTrustReceiptSignature(lookup);
249
+ const validation = await validateExecutionAuthorization({ authorization, finalIntent, receiptSignatureValid: signature.valid });
250
+ if (!validation.ok)
251
+ return validation;
252
+ if (!await input.replayStore.consumeOnce(`${authorization.decision_id}:${authorization.execution_intent_digest}`)) {
253
+ return { ok: false, code: "authorization_replayed" };
254
+ }
255
+ // Consumption can involve I/O; reject expiration before handing control to the executor.
256
+ return validateExecutionAuthorization({ authorization, finalIntent, receiptSignatureValid: true });
257
+ }
49
258
  async verifyTrustReceiptSignature(lookup) {
50
259
  const { receipt, verification } = lookup;
51
260
  if (!verification.signature || !verification.signed_payload) {
@@ -56,6 +265,7 @@ export class InterAIRiskOracleClient {
56
265
  headers: { "content-type": "application/json" },
57
266
  body: JSON.stringify({
58
267
  receipt_id: receipt.receipt_id,
268
+ receipt,
59
269
  signed_payload: verification.signed_payload,
60
270
  signature: verification.signature,
61
271
  signature_alg: verification.signature_alg
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "interai-risk-oracle",
3
- "version": "0.1.3-beta",
4
- "description": "TypeScript client and policy-gate helpers for the hosted InterAI Risk Oracle API.",
3
+ "version": "0.1.5-beta",
4
+ "description": "TypeScript client for InterAI's independent pre-execution decision layer for consequential agent actions.",
5
5
  "homepage": "https://ai-risk-oracle.fly.dev/",
6
6
  "repository": {
7
7
  "type": "git",
@@ -42,6 +42,7 @@
42
42
  "interai",
43
43
  "risk-oracle",
44
44
  "autonomous-agents",
45
+ "pre-execution-verification",
45
46
  "trust-receipts",
46
47
  "policy-enforcement"
47
48
  ],