interai-risk-oracle 0.1.2-beta → 0.1.4-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.4-beta`.
6
6
 
7
7
  ```bash
8
- npm install interai-risk-oracle
8
+ npm install interai-risk-oracle@0.1.4-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,82 @@
1
1
  export type AutonomousRiskLevel = "low" | "medium" | "high";
2
2
  export type GatewayDecision = "allow" | "review_required" | "block";
3
+ export declare const CANONICAL_ACTION_SCHEMA: "interai-canonical-action/v1";
4
+ export declare const HOST_EXECUTION_CONTEXT_SCHEMA: "interai-host-execution-context/v1";
5
+ export declare const EXECUTION_INTENT_SCHEMA: "interai-canonical-execution-intent/v2";
6
+ export declare const EXECUTION_AUTHORIZATION_SCHEMA: "interai-execution-authorization/v1";
7
+ export declare const DEFAULT_EXECUTION_AUTHORIZATION_TTL_SECONDS = 60;
8
+ export declare const MAX_EXECUTION_AUTHORIZATION_TTL_SECONDS = 300;
9
+ /** The trusted action envelope is constructed by the host execution boundary, not inferred from agent free text. */
10
+ export type CanonicalActionEnvelope = {
11
+ schema: typeof CANONICAL_ACTION_SCHEMA;
12
+ tool_id: string;
13
+ type: string;
14
+ operation: string;
15
+ arguments: Record<string, unknown>;
16
+ external_side_effect: boolean;
17
+ irreversible: boolean;
18
+ destination?: string;
19
+ resource?: string;
20
+ };
21
+ export type HostExecutionContext = {
22
+ schema: typeof HOST_EXECUTION_CONTEXT_SCHEMA;
23
+ workspace_id: string;
24
+ environment: string;
25
+ actor_id?: string;
26
+ run_id?: string;
27
+ };
28
+ /** The exact public object bound to an execution authorization. */
29
+ export type CanonicalExecutionIntent = {
30
+ schema: typeof EXECUTION_INTENT_SCHEMA;
31
+ action_authority: "host_attested_canonical" | "caller_proposed_legacy";
32
+ canonical_action: Record<string, unknown>;
33
+ evaluation_context: Record<string, unknown>;
34
+ authoritative_context: Record<string, unknown>;
35
+ policy_authority: Record<string, unknown>;
36
+ };
37
+ export type ExecutionAuthorization = {
38
+ schema: typeof EXECUTION_AUTHORIZATION_SCHEMA;
39
+ decision_id: string;
40
+ decision: "allow";
41
+ execution_intent_digest: string;
42
+ issued_at: string;
43
+ expires_at: string;
44
+ single_use: true;
45
+ };
46
+ export type ExecutionReceipt = {
47
+ receipt_schema_version: "execution-receipt/v1";
48
+ decision_id: string;
49
+ execution_intent_digest: string;
50
+ status: "dispatched" | "succeeded" | "failed" | "unknown";
51
+ observed_at: string;
52
+ correlation_id?: string;
53
+ evidence_source: string;
54
+ };
55
+ export type DispatchValidation = {
56
+ ok: true;
57
+ execution_intent_digest: string;
58
+ } | {
59
+ ok: false;
60
+ code: "decision_not_authorizing" | "execution_intent_mismatch" | "decision_expired" | "receipt_signature_invalid" | "authorization_replayed";
61
+ };
62
+ /** Must atomically insert a unique key in durable host-owned storage. Errors must throw. */
63
+ export interface ExecutionAuthorizationReplayStore {
64
+ consumeOnce(key: string): boolean | Promise<boolean>;
65
+ }
66
+ /** Canonical JSON used by the hosted execution-intent digest contract. */
67
+ export declare function canonicalExecutionIntentJson(intent: CanonicalExecutionIntent): string;
68
+ /** Returns the SHA-256 hex digest to compare with `execution_intent_digest` before dispatch. */
69
+ export declare function executionIntentDigest(intent: CanonicalExecutionIntent): Promise<string>;
70
+ /** Fail-closed local validation. Signature verification remains a service call. */
71
+ export declare function validateExecutionAuthorization(input: {
72
+ authorization: ExecutionAuthorization | null | undefined;
73
+ finalIntent: CanonicalExecutionIntent;
74
+ receiptSignatureValid: boolean;
75
+ now?: Date;
76
+ }): Promise<DispatchValidation>;
3
77
  export type VerifyRequest = {
4
78
  use_case: string;
5
- action: {
79
+ action: CanonicalActionEnvelope | {
6
80
  type: string;
7
81
  name?: string;
8
82
  description: string;
@@ -19,18 +93,24 @@ export type VerifyRequest = {
19
93
  user_confirmation?: boolean;
20
94
  [key: string]: unknown;
21
95
  };
96
+ /** Required with a canonical action for executable pilot authorization. Host-attested values are bound into the intent. */
97
+ execution_context?: HostExecutionContext;
98
+ /** 1–300 seconds; defaults to 60 seconds for canonical Bearer pilot requests. */
99
+ authorization_ttl_seconds?: number;
22
100
  policy?: {
23
101
  max_risk_level?: AutonomousRiskLevel;
24
102
  require_trust_receipt?: boolean;
25
103
  amount_usd_limit?: number;
26
104
  blocked_action_types?: string[];
27
105
  allowed_action_types?: string[];
106
+ allowed_action_types_enforced?: boolean;
28
107
  require_human_review_above?: number;
29
108
  require_user_confirmation_for_irreversible?: boolean;
30
109
  [key: string]: unknown;
31
110
  };
32
111
  domain?: string;
33
112
  mode?: "fast_heuristic" | "semantic_judge";
113
+ external_evidence?: unknown[];
34
114
  };
35
115
  export type PolicyViolation = {
36
116
  code: string;
@@ -65,6 +145,10 @@ export type VerifyResponse = {
65
145
  policy_result: GatewayDecision;
66
146
  policy_violations: PolicyViolation[];
67
147
  trust_receipt_id?: string;
148
+ /** Digest of the exact canonical intent evaluated; compare against the host's final intent before dispatch. */
149
+ execution_intent_digest?: string;
150
+ execution_intent?: CanonicalExecutionIntent;
151
+ execution_authorization?: ExecutionAuthorization | null;
68
152
  trust_receipt?: Record<string, unknown>;
69
153
  [key: string]: unknown;
70
154
  };
@@ -72,7 +156,40 @@ export type InterAIClientOptions = {
72
156
  baseUrl: string;
73
157
  apiKey?: string;
74
158
  clientName?: string;
159
+ timeoutMs?: number;
75
160
  };
161
+ export type OnboardResponse = Record<string, unknown> & {
162
+ api_key?: string;
163
+ };
164
+ export type X402PaymentRequiredResponse = Record<string, unknown> & {
165
+ x402Version: number;
166
+ accepts: unknown[];
167
+ };
168
+ export declare class OracleHttpError extends Error {
169
+ readonly status: number;
170
+ readonly body: unknown;
171
+ readonly code: string | null;
172
+ readonly headers: Record<string, string>;
173
+ readonly paymentRequired: X402PaymentRequiredResponse | null;
174
+ constructor(input: {
175
+ method: string;
176
+ path: string;
177
+ status: number;
178
+ body: unknown;
179
+ headers: Record<string, string>;
180
+ });
181
+ }
182
+ /** Anonymous receipt lookup: existence reference only, never signed evidence. */
183
+ export type TrustReceiptPublicSummary = {
184
+ ok: true;
185
+ visibility: "public_summary";
186
+ receipt: {
187
+ receipt_id: string;
188
+ issued_at: string;
189
+ };
190
+ full_receipt_requires_owner: true;
191
+ };
192
+ /** Complete owner-authenticated receipt lookup with opaque signed payload bytes. */
76
193
  export type TrustReceiptLookup = {
77
194
  ok: true;
78
195
  receipt: Record<string, unknown> & {
@@ -82,18 +199,59 @@ export type TrustReceiptLookup = {
82
199
  signed: boolean;
83
200
  signature: string | null;
84
201
  signature_alg: "hmac-sha256" | null;
202
+ verification_scope?: "service_verifiable";
85
203
  signed_payload: string | null;
204
+ signature_valid?: boolean;
86
205
  };
206
+ metadata?: Record<string, unknown>;
87
207
  [key: string]: unknown;
88
208
  };
209
+ export type TrustReceiptLookupResponse = TrustReceiptLookup | TrustReceiptPublicSummary;
89
210
  export declare class InterAIRiskOracleClient {
90
211
  readonly baseUrl: string;
91
- readonly apiKey?: string;
212
+ apiKey?: string;
92
213
  readonly clientName: string;
214
+ readonly timeoutMs: number;
93
215
  constructor(options: InterAIClientOptions);
216
+ setApiKey(apiKey: string): void;
94
217
  private jsonRequest;
95
- verify(request: VerifyRequest, idempotencyKey?: string): Promise<VerifyResponse>;
218
+ getPricing(): Promise<Record<string, unknown>>;
219
+ getDiscoveryBundle(): Promise<Record<string, unknown>>;
220
+ onboard(input?: {
221
+ name?: string;
222
+ account_id?: string;
223
+ api_key_name?: string;
224
+ recommended_topup_usdc?: string;
225
+ }): Promise<OnboardResponse>;
226
+ me(): Promise<Record<string, unknown>>;
227
+ ledger(limit?: number): Promise<Record<string, unknown>>;
228
+ usage(limit?: number): Promise<Record<string, unknown>>;
229
+ quote(input?: {
230
+ service?: "verify";
231
+ mode?: "fast" | "batch";
232
+ items_count?: number;
233
+ }): Promise<Record<string, unknown>>;
234
+ createTopup(amountUsdc?: string): Promise<Record<string, unknown>>;
235
+ topupStatus(topupId: string): Promise<Record<string, unknown>>;
236
+ confirmTopup(topupId: string, txHash: string): Promise<Record<string, unknown>>;
237
+ verify(request: VerifyRequest, idempotencyKey?: string, options?: {
238
+ signal?: AbortSignal;
239
+ timeoutMs?: number;
240
+ }): Promise<VerifyResponse>;
241
+ verifyBatch(requests: VerifyRequest[], idempotencyKey?: string, options?: {
242
+ signal?: AbortSignal;
243
+ timeoutMs?: number;
244
+ }): Promise<Record<string, unknown>>;
245
+ /** Return the privacy-aware lookup union without requiring owner credentials. */
246
+ getTrustReceiptReference(receiptId: string): Promise<TrustReceiptLookupResponse>;
247
+ /** Return complete signed evidence; throws when the service only returns the anonymous summary. */
96
248
  getTrustReceipt(receiptId: string): Promise<TrustReceiptLookup>;
249
+ /** Authenticate the exact receipt, validate its grant, then durably consume before dispatch. */
250
+ validateAndConsumeReceipt(input: {
251
+ lookup: TrustReceiptLookup;
252
+ finalIntent: CanonicalExecutionIntent;
253
+ replayStore: ExecutionAuthorizationReplayStore;
254
+ }): Promise<DispatchValidation>;
97
255
  verifyTrustReceiptSignature(lookup: TrustReceiptLookup): Promise<{
98
256
  valid: boolean;
99
257
  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":"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"}
package/dist/index.js CHANGED
@@ -1,25 +1,128 @@
1
+ export const CANONICAL_ACTION_SCHEMA = "interai-canonical-action/v1";
2
+ export const HOST_EXECUTION_CONTEXT_SCHEMA = "interai-host-execution-context/v1";
3
+ export const EXECUTION_INTENT_SCHEMA = "interai-canonical-execution-intent/v2";
4
+ export const EXECUTION_AUTHORIZATION_SCHEMA = "interai-execution-authorization/v1";
5
+ export const DEFAULT_EXECUTION_AUTHORIZATION_TTL_SECONDS = 60;
6
+ export const MAX_EXECUTION_AUTHORIZATION_TTL_SECONDS = 300;
7
+ function normalizeJson(value) {
8
+ if (Array.isArray(value))
9
+ return value.map(normalizeJson);
10
+ if (value && typeof value === "object") {
11
+ return Object.fromEntries(Object.entries(value)
12
+ .filter(([, item]) => item !== undefined)
13
+ .sort(([a], [b]) => a.localeCompare(b))
14
+ .map(([key, item]) => [key, normalizeJson(item)]));
15
+ }
16
+ return value;
17
+ }
18
+ /** Canonical JSON used by the hosted execution-intent digest contract. */
19
+ export function canonicalExecutionIntentJson(intent) {
20
+ return JSON.stringify(normalizeJson(intent));
21
+ }
22
+ /** Returns the SHA-256 hex digest to compare with `execution_intent_digest` before dispatch. */
23
+ export async function executionIntentDigest(intent) {
24
+ const bytes = new TextEncoder().encode(canonicalExecutionIntentJson(intent));
25
+ const hash = await globalThis.crypto.subtle.digest("SHA-256", bytes);
26
+ return Array.from(new Uint8Array(hash), (byte) => byte.toString(16).padStart(2, "0")).join("");
27
+ }
28
+ /** Fail-closed local validation. Signature verification remains a service call. */
29
+ export async function validateExecutionAuthorization(input) {
30
+ if (!input.receiptSignatureValid)
31
+ return { ok: false, code: "receipt_signature_invalid" };
32
+ if (!input.authorization || input.authorization.decision !== "allow" ||
33
+ input.authorization.schema !== EXECUTION_AUTHORIZATION_SCHEMA ||
34
+ input.authorization.single_use !== true || !input.authorization.decision_id) {
35
+ return { ok: false, code: "decision_not_authorizing" };
36
+ }
37
+ const expiresAt = new Date(input.authorization.expires_at);
38
+ const issuedAt = new Date(input.authorization.issued_at);
39
+ const now = input.now ?? new Date();
40
+ const ttl = expiresAt.getTime() - issuedAt.getTime();
41
+ if (!Number.isFinite(ttl) || ttl < 1000 || ttl > 300_000 || issuedAt > now || expiresAt <= now) {
42
+ return { ok: false, code: "decision_expired" };
43
+ }
44
+ const digest = await executionIntentDigest(input.finalIntent);
45
+ if (digest !== input.authorization.execution_intent_digest) {
46
+ return { ok: false, code: "execution_intent_mismatch" };
47
+ }
48
+ return { ok: true, execution_intent_digest: digest };
49
+ }
50
+ export class OracleHttpError extends Error {
51
+ status;
52
+ body;
53
+ code;
54
+ headers;
55
+ paymentRequired;
56
+ constructor(input) {
57
+ super(`InterAI request failed: ${input.method} ${input.path} ${input.status} ${JSON.stringify(input.body)}`);
58
+ this.name = "OracleHttpError";
59
+ this.status = input.status;
60
+ this.body = input.body;
61
+ this.headers = input.headers;
62
+ this.code = input.body && typeof input.body === "object" && "error" in input.body &&
63
+ typeof input.body.error === "string"
64
+ ? String(input.body.error)
65
+ : null;
66
+ this.paymentRequired = input.status === 402 && input.body && typeof input.body === "object" &&
67
+ input.body.x402Version === 2 &&
68
+ Array.isArray(input.body.accepts)
69
+ ? input.body
70
+ : null;
71
+ }
72
+ }
73
+ function isPublicReceiptSummary(value) {
74
+ return "visibility" in value && value.visibility === "public_summary";
75
+ }
1
76
  function defaultIdempotencyKey() {
2
77
  const random = globalThis.crypto?.randomUUID?.();
3
78
  return random || `interai-${Date.now().toString(36)}-${Math.random().toString(36).slice(2, 12)}`;
4
79
  }
80
+ function responseHeaders(response) {
81
+ const headers = {};
82
+ response.headers.forEach((value, key) => {
83
+ headers[key] = value;
84
+ });
85
+ return headers;
86
+ }
5
87
  export class InterAIRiskOracleClient {
6
88
  baseUrl;
7
89
  apiKey;
8
90
  clientName;
91
+ timeoutMs;
9
92
  constructor(options) {
10
93
  this.baseUrl = options.baseUrl.replace(/\/$/, "");
11
94
  this.apiKey = options.apiKey;
12
- this.clientName = options.clientName || "typescript-sdk/0.1.2-beta";
95
+ this.clientName = options.clientName || "typescript-sdk/0.1.3-beta";
96
+ this.timeoutMs = options.timeoutMs ?? 10_000;
13
97
  }
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
- });
98
+ setApiKey(apiKey) {
99
+ this.apiKey = apiKey;
100
+ }
101
+ async jsonRequest(path, init, timeoutMs) {
102
+ const controller = new AbortController();
103
+ const callerSignal = init?.signal;
104
+ const abortFromCaller = () => controller.abort(callerSignal?.reason);
105
+ if (callerSignal?.aborted)
106
+ abortFromCaller();
107
+ else
108
+ callerSignal?.addEventListener("abort", abortFromCaller, { once: true });
109
+ const timeout = setTimeout(() => controller.abort(new Error("InterAI request timed out")), timeoutMs ?? this.timeoutMs);
110
+ let response;
111
+ try {
112
+ response = await fetch(`${this.baseUrl}${path}`, {
113
+ ...init,
114
+ signal: controller.signal,
115
+ headers: {
116
+ ...(this.apiKey ? { authorization: `Bearer ${this.apiKey}` } : {}),
117
+ "x-interai-client": this.clientName,
118
+ ...(init?.headers || {})
119
+ }
120
+ });
121
+ }
122
+ finally {
123
+ clearTimeout(timeout);
124
+ callerSignal?.removeEventListener("abort", abortFromCaller);
125
+ }
23
126
  const text = await response.text();
24
127
  let body;
25
128
  try {
@@ -29,23 +132,128 @@ export class InterAIRiskOracleClient {
29
132
  body = { error: "invalid_json_response", raw: text.slice(0, 500) };
30
133
  }
31
134
  if (!response.ok) {
32
- throw new Error(`InterAI request failed: ${response.status} ${JSON.stringify(body)}`);
135
+ throw new OracleHttpError({
136
+ method: init?.method || "GET",
137
+ path,
138
+ status: response.status,
139
+ body,
140
+ headers: responseHeaders(response)
141
+ });
33
142
  }
34
143
  return body;
35
144
  }
36
- async verify(request, idempotencyKey = defaultIdempotencyKey()) {
145
+ async getPricing() {
146
+ return this.jsonRequest("/pricing");
147
+ }
148
+ async getDiscoveryBundle() {
149
+ return this.jsonRequest("/.well-known/discovery-bundle.json");
150
+ }
151
+ async onboard(input = {}) {
152
+ const result = await this.jsonRequest("/onboard", {
153
+ method: "POST",
154
+ headers: { "content-type": "application/json" },
155
+ body: JSON.stringify(input)
156
+ });
157
+ if (typeof result.api_key === "string" && result.api_key)
158
+ this.apiKey = result.api_key;
159
+ return result;
160
+ }
161
+ async me() {
162
+ return this.jsonRequest("/me");
163
+ }
164
+ async ledger(limit = 20) {
165
+ return this.jsonRequest(`/ledger?limit=${encodeURIComponent(String(limit))}`);
166
+ }
167
+ async usage(limit = 20) {
168
+ return this.jsonRequest(`/usage?limit=${encodeURIComponent(String(limit))}`);
169
+ }
170
+ async quote(input = {}) {
171
+ return this.jsonRequest("/quote", {
172
+ method: "POST",
173
+ headers: { "content-type": "application/json" },
174
+ body: JSON.stringify({
175
+ service: input.service ?? "verify",
176
+ mode: input.mode ?? "fast",
177
+ ...(input.items_count !== undefined ? { items_count: input.items_count } : {})
178
+ })
179
+ });
180
+ }
181
+ async createTopup(amountUsdc = "0.10") {
182
+ return this.jsonRequest("/topup/create", {
183
+ method: "POST",
184
+ headers: { "content-type": "application/json" },
185
+ body: JSON.stringify({ amount_usdc: amountUsdc })
186
+ });
187
+ }
188
+ async topupStatus(topupId) {
189
+ return this.jsonRequest(`/topup/${encodeURIComponent(topupId)}`);
190
+ }
191
+ async confirmTopup(topupId, txHash) {
192
+ return this.jsonRequest("/topup/confirm", {
193
+ method: "POST",
194
+ headers: {
195
+ "X-Topup-Id": topupId,
196
+ "X-Tx-Hash": txHash
197
+ }
198
+ });
199
+ }
200
+ async verify(request, idempotencyKey = defaultIdempotencyKey(), options = {}) {
37
201
  return this.jsonRequest("/verify", {
38
202
  method: "POST",
39
203
  headers: {
40
204
  "content-type": "application/json",
41
205
  "x-idempotency-key": idempotencyKey
42
206
  },
43
- body: JSON.stringify(request)
44
- });
207
+ body: JSON.stringify(request),
208
+ signal: options.signal
209
+ }, options.timeoutMs);
45
210
  }
46
- async getTrustReceipt(receiptId) {
211
+ async verifyBatch(requests, idempotencyKey = defaultIdempotencyKey(), options = {}) {
212
+ return this.jsonRequest("/verify/batch", {
213
+ method: "POST",
214
+ headers: {
215
+ "content-type": "application/json",
216
+ "x-idempotency-key": idempotencyKey
217
+ },
218
+ body: JSON.stringify({ items: requests }),
219
+ signal: options.signal
220
+ }, options.timeoutMs);
221
+ }
222
+ /** Return the privacy-aware lookup union without requiring owner credentials. */
223
+ async getTrustReceiptReference(receiptId) {
47
224
  return this.jsonRequest(`/trust/receipts/${encodeURIComponent(receiptId)}`);
48
225
  }
226
+ /** Return complete signed evidence; throws when the service only returns the anonymous summary. */
227
+ async getTrustReceipt(receiptId) {
228
+ const result = await this.getTrustReceiptReference(receiptId);
229
+ if (isPublicReceiptSummary(result)) {
230
+ throw new Error("Complete receipt requires the owning account API key");
231
+ }
232
+ return result;
233
+ }
234
+ /** Authenticate the exact receipt, validate its grant, then durably consume before dispatch. */
235
+ async validateAndConsumeReceipt(input) {
236
+ // Snapshot before the HTTP await so a caller cannot swap fields after verification.
237
+ const lookup = structuredClone(input.lookup);
238
+ const finalIntent = structuredClone(input.finalIntent);
239
+ const receipt = lookup.receipt;
240
+ const authorization = receipt.execution_authorization;
241
+ if (receipt.receipt_schema_version !== "trust-receipt/v2" ||
242
+ receipt.request_contract !== "autonomous_execution" || receipt.final_decision !== "allow" ||
243
+ !authorization || authorization.decision_id !== receipt.receipt_id ||
244
+ authorization.execution_intent_digest !== receipt.execution_intent_digest) {
245
+ return { ok: false, code: "decision_not_authorizing" };
246
+ }
247
+ const signature = await this.verifyTrustReceiptSignature(lookup);
248
+ const validation = await validateExecutionAuthorization({ authorization, finalIntent, receiptSignatureValid: signature.valid });
249
+ if (!validation.ok)
250
+ return validation;
251
+ if (!await input.replayStore.consumeOnce(`${authorization.decision_id}:${authorization.execution_intent_digest}`)) {
252
+ return { ok: false, code: "authorization_replayed" };
253
+ }
254
+ // Consumption can involve I/O; reject expiration before handing control to the executor.
255
+ return validateExecutionAuthorization({ authorization, finalIntent, receiptSignatureValid: true });
256
+ }
49
257
  async verifyTrustReceiptSignature(lookup) {
50
258
  const { receipt, verification } = lookup;
51
259
  if (!verification.signature || !verification.signed_payload) {
@@ -56,6 +264,7 @@ export class InterAIRiskOracleClient {
56
264
  headers: { "content-type": "application/json" },
57
265
  body: JSON.stringify({
58
266
  receipt_id: receipt.receipt_id,
267
+ receipt,
59
268
  signed_payload: verification.signed_payload,
60
269
  signature: verification.signature,
61
270
  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.2-beta",
4
- "description": "TypeScript client and policy-gate helpers for the hosted InterAI Risk Oracle API.",
3
+ "version": "0.1.4-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
  ],