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 +61 -11
- package/dist/index.d.ts +161 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +224 -15
- package/dist/index.js.map +1 -1
- package/package.json +3 -2
package/README.md
CHANGED
|
@@ -1,16 +1,40 @@
|
|
|
1
1
|
# TypeScript SDK
|
|
2
2
|
|
|
3
|
-
Typed hosted API client for InterAI Risk Oracle.
|
|
4
|
-
|
|
5
|
-
|
|
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
|
-
|
|
23
|
-
|
|
24
|
-
|
|
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
|
-
|
|
43
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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";
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
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,MAAM,MAAM,aAAa,GAAG;IAC1B,QAAQ,EAAE,MAAM,CAAA;IAChB,MAAM,EAAE;
|
|
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.
|
|
95
|
+
this.clientName = options.clientName || "typescript-sdk/0.1.3-beta";
|
|
96
|
+
this.timeoutMs = options.timeoutMs ?? 10_000;
|
|
13
97
|
}
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
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
|
|
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
|
|
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
|
|
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":"AAGA,MAAM,CAAC,MAAM,uBAAuB,GAAG,6BAAsC,CAAA;AAC7E,MAAM,CAAC,MAAM,6BAA6B,GAAG,mCAA4C,CAAA;AACzF,MAAM,CAAC,MAAM,uBAAuB,GAAG,uCAAgD,CAAA;AACvF,MAAM,CAAC,MAAM,8BAA8B,GAAG,oCAA6C,CAAA;AAC3F,MAAM,CAAC,MAAM,2CAA2C,GAAG,EAAE,CAAA;AAC7D,MAAM,CAAC,MAAM,uCAAuC,GAAG,GAAG,CAAA;AA8D1D,SAAS,aAAa,CAAC,KAAc;IACnC,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC,GAAG,CAAC,aAAa,CAAC,CAAA;IACzD,IAAI,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QACvC,OAAO,MAAM,CAAC,WAAW,CACvB,MAAM,CAAC,OAAO,CAAC,KAAgC,CAAC;aAC7C,MAAM,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,IAAI,KAAK,SAAS,CAAC;aACxC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;aACtC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,EAAE,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,CACpD,CAAA;IACH,CAAC;IACD,OAAO,KAAK,CAAA;AACd,CAAC;AAED,0EAA0E;AAC1E,MAAM,UAAU,4BAA4B,CAAC,MAAgC;IAC3E,OAAO,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAA;AAC9C,CAAC;AAED,gGAAgG;AAChG,MAAM,CAAC,KAAK,UAAU,qBAAqB,CAAC,MAAgC;IAC1E,MAAM,KAAK,GAAG,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,4BAA4B,CAAC,MAAM,CAAC,CAAC,CAAA;IAC5E,MAAM,IAAI,GAAG,MAAM,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,EAAE,KAAK,CAAC,CAAA;IACpE,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;AAChG,CAAC;AAED,mFAAmF;AACnF,MAAM,CAAC,KAAK,UAAU,8BAA8B,CAAC,KAKpD;IACC,IAAI,CAAC,KAAK,CAAC,qBAAqB;QAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,2BAA2B,EAAE,CAAA;IACzF,IAAI,CAAC,KAAK,CAAC,aAAa,IAAI,KAAK,CAAC,aAAa,CAAC,QAAQ,KAAK,OAAO;QAChE,KAAK,CAAC,aAAa,CAAC,MAAM,KAAK,8BAA8B;QAC7D,KAAK,CAAC,aAAa,CAAC,UAAU,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,WAAW,EAAE,CAAC;QAChF,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,0BAA0B,EAAE,CAAA;IACxD,CAAC;IACD,MAAM,SAAS,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,UAAU,CAAC,CAAA;IAC1D,MAAM,QAAQ,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,SAAS,CAAC,CAAA;IACxD,MAAM,GAAG,GAAG,KAAK,CAAC,GAAG,IAAI,IAAI,IAAI,EAAE,CAAA;IACnC,MAAM,GAAG,GAAG,SAAS,CAAC,OAAO,EAAE,GAAG,QAAQ,CAAC,OAAO,EAAE,CAAA;IACpD,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,OAAO,IAAI,QAAQ,GAAG,GAAG,IAAI,SAAS,IAAI,GAAG,EAAE,CAAC;QAC/F,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,kBAAkB,EAAE,CAAA;IAChD,CAAC;IACD,MAAM,MAAM,GAAG,MAAM,qBAAqB,CAAC,KAAK,CAAC,WAAW,CAAC,CAAA;IAC7D,IAAI,MAAM,KAAK,KAAK,CAAC,aAAa,CAAC,uBAAuB,EAAE,CAAC;QAC3D,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,2BAA2B,EAAE,CAAA;IACzD,CAAC;IACD,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,uBAAuB,EAAE,MAAM,EAAE,CAAA;AACtD,CAAC;AAoGD,MAAM,OAAO,eAAgB,SAAQ,KAAK;IAC/B,MAAM,CAAQ;IACd,IAAI,CAAS;IACb,IAAI,CAAe;IACnB,OAAO,CAAwB;IAC/B,eAAe,CAAoC;IAE5D,YAAY,KAMX;QACC,KAAK,CAAC,2BAA2B,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,MAAM,IAAI,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;QAC5G,IAAI,CAAC,IAAI,GAAG,iBAAiB,CAAA;QAC7B,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,CAAA;QAC1B,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC,IAAI,CAAA;QACtB,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC,OAAO,CAAA;QAC5B,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC,IAAI,IAAI,OAAO,KAAK,CAAC,IAAI,KAAK,QAAQ,IAAI,OAAO,IAAI,KAAK,CAAC,IAAI;YAC/E,OAAQ,KAAK,CAAC,IAA4B,CAAC,KAAK,KAAK,QAAQ;YAC7D,CAAC,CAAC,MAAM,CAAE,KAAK,CAAC,IAA0B,CAAC,KAAK,CAAC;YACjD,CAAC,CAAC,IAAI,CAAA;QACR,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC,IAAI,IAAI,OAAO,KAAK,CAAC,IAAI,KAAK,QAAQ;YACxF,KAAK,CAAC,IAAkC,CAAC,WAAW,KAAK,CAAC;YAC3D,KAAK,CAAC,OAAO,CAAE,KAAK,CAAC,IAA8B,CAAC,OAAO,CAAC;YAC5D,CAAC,CAAC,KAAK,CAAC,IAAmC;YAC3C,CAAC,CAAC,IAAI,CAAA;IACV,CAAC;CACF;AA+BD,SAAS,sBAAsB,CAAC,KAAiC;IAC/D,OAAO,YAAY,IAAI,KAAK,IAAI,KAAK,CAAC,UAAU,KAAK,gBAAgB,CAAA;AACvE,CAAC;AAED,SAAS,qBAAqB;IAC5B,MAAM,MAAM,GAAG,UAAU,CAAC,MAAM,EAAE,UAAU,EAAE,EAAE,CAAA;IAChD,OAAO,MAAM,IAAI,WAAW,IAAI,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAA;AAClG,CAAC;AAED,SAAS,eAAe,CAAC,QAAkB;IACzC,MAAM,OAAO,GAA2B,EAAE,CAAA;IAC1C,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE;QACtC,OAAO,CAAC,GAAG,CAAC,GAAG,KAAK,CAAA;IACtB,CAAC,CAAC,CAAA;IACF,OAAO,OAAO,CAAA;AAChB,CAAC;AAED,MAAM,OAAO,uBAAuB;IACzB,OAAO,CAAQ;IACxB,MAAM,CAAS;IACN,UAAU,CAAQ;IAClB,SAAS,CAAQ;IAE1B,YAAY,OAA6B;QACvC,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAA;QACjD,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAA;QAC5B,IAAI,CAAC,UAAU,GAAG,OAAO,CAAC,UAAU,IAAI,2BAA2B,CAAA;QACnE,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC,SAAS,IAAI,MAAM,CAAA;IAC9C,CAAC;IAED,SAAS,CAAC,MAAc;QACtB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAA;IACtB,CAAC;IAEO,KAAK,CAAC,WAAW,CAAC,IAAY,EAAE,IAAkB,EAAE,SAAkB;QAC5E,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAA;QACxC,MAAM,YAAY,GAAG,IAAI,EAAE,MAAM,CAAA;QACjC,MAAM,eAAe,GAAG,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,CAAC,YAAY,EAAE,MAAM,CAAC,CAAA;QACpE,IAAI,YAAY,EAAE,OAAO;YAAE,eAAe,EAAE,CAAA;;YACvC,YAAY,EAAE,gBAAgB,CAAC,OAAO,EAAE,eAAe,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAA;QAC7E,MAAM,OAAO,GAAG,UAAU,CACxB,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,2BAA2B,CAAC,CAAC,EAC9D,SAAS,IAAI,IAAI,CAAC,SAAS,CAC5B,CAAA;QAED,IAAI,QAAkB,CAAA;QACtB,IAAI,CAAC;YACH,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,IAAI,CAAC,OAAO,GAAG,IAAI,EAAE,EAAE;gBAC/C,GAAG,IAAI;gBACP,MAAM,EAAE,UAAU,CAAC,MAAM;gBACzB,OAAO,EAAE;oBACP,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,UAAU,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;oBAClE,kBAAkB,EAAE,IAAI,CAAC,UAAU;oBACnC,GAAG,CAAC,IAAI,EAAE,OAAO,IAAI,EAAE,CAAC;iBACzB;aACF,CAAC,CAAA;QACJ,CAAC;gBAAS,CAAC;YACT,YAAY,CAAC,OAAO,CAAC,CAAA;YACrB,YAAY,EAAE,mBAAmB,CAAC,OAAO,EAAE,eAAe,CAAC,CAAA;QAC7D,CAAC;QAED,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAA;QAClC,IAAI,IAAa,CAAA;QACjB,IAAI,CAAC;YACH,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAA;QACvC,CAAC;QAAC,MAAM,CAAC;YACP,IAAI,GAAG,EAAE,KAAK,EAAE,uBAAuB,EAAE,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAA;QACpE,CAAC;QACD,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;YACjB,MAAM,IAAI,eAAe,CAAC;gBACxB,MAAM,EAAE,IAAI,EAAE,MAAM,IAAI,KAAK;gBAC7B,IAAI;gBACJ,MAAM,EAAE,QAAQ,CAAC,MAAM;gBACvB,IAAI;gBACJ,OAAO,EAAE,eAAe,CAAC,QAAQ,CAAC;aACnC,CAAC,CAAA;QACJ,CAAC;QACD,OAAO,IAAI,CAAA;IACb,CAAC;IAED,KAAK,CAAC,UAAU;QACd,OAAO,IAAI,CAAC,WAAW,CAAC,UAAU,CAAqC,CAAA;IACzE,CAAC;IAED,KAAK,CAAC,kBAAkB;QACtB,OAAO,IAAI,CAAC,WAAW,CAAC,oCAAoC,CAAqC,CAAA;IACnG,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,QAKV,EAAE;QACJ,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,UAAU,EAAE;YAChD,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;YAC/C,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC;SAC5B,CAAoB,CAAA;QACrB,IAAI,OAAO,MAAM,CAAC,OAAO,KAAK,QAAQ,IAAI,MAAM,CAAC,OAAO;YAAE,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,OAAO,CAAA;QACtF,OAAO,MAAM,CAAA;IACf,CAAC;IAED,KAAK,CAAC,EAAE;QACN,OAAO,IAAI,CAAC,WAAW,CAAC,KAAK,CAAqC,CAAA;IACpE,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,KAAK,GAAG,EAAE;QACrB,OAAO,IAAI,CAAC,WAAW,CAAC,iBAAiB,kBAAkB,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAqC,CAAA;IACnH,CAAC;IAED,KAAK,CAAC,KAAK,CAAC,KAAK,GAAG,EAAE;QACpB,OAAO,IAAI,CAAC,WAAW,CAAC,gBAAgB,kBAAkB,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAqC,CAAA;IAClH,CAAC;IAED,KAAK,CAAC,KAAK,CAAC,QAIR,EAAE;QACJ,OAAO,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE;YAChC,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;YAC/C,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;gBACnB,OAAO,EAAE,KAAK,CAAC,OAAO,IAAI,QAAQ;gBAClC,IAAI,EAAE,KAAK,CAAC,IAAI,IAAI,MAAM;gBAC1B,GAAG,CAAC,KAAK,CAAC,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;aAC/E,CAAC;SACH,CAAqC,CAAA;IACxC,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,UAAU,GAAG,MAAM;QACnC,OAAO,IAAI,CAAC,WAAW,CAAC,eAAe,EAAE;YACvC,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;YAC/C,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,WAAW,EAAE,UAAU,EAAE,CAAC;SAClD,CAAqC,CAAA;IACxC,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,OAAe;QAC/B,OAAO,IAAI,CAAC,WAAW,CAAC,UAAU,kBAAkB,CAAC,OAAO,CAAC,EAAE,CAAqC,CAAA;IACtG,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,OAAe,EAAE,MAAc;QAChD,OAAO,IAAI,CAAC,WAAW,CAAC,gBAAgB,EAAE;YACxC,MAAM,EAAE,MAAM;YACd,OAAO,EAAE;gBACP,YAAY,EAAE,OAAO;gBACrB,WAAW,EAAE,MAAM;aACpB;SACF,CAAqC,CAAA;IACxC,CAAC;IAED,KAAK,CAAC,MAAM,CACV,OAAsB,EACtB,cAAc,GAAG,qBAAqB,EAAE,EACxC,UAAwD,EAAE;QAE1D,OAAO,IAAI,CAAC,WAAW,CAAC,SAAS,EAAE;YACjC,MAAM,EAAE,MAAM;YACd,OAAO,EAAE;gBACP,cAAc,EAAE,kBAAkB;gBAClC,mBAAmB,EAAE,cAAc;aACpC;YACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC;YAC7B,MAAM,EAAE,OAAO,CAAC,MAAM;SACvB,EAAE,OAAO,CAAC,SAAS,CAA4B,CAAA;IAClD,CAAC;IAED,KAAK,CAAC,WAAW,CACf,QAAyB,EACzB,cAAc,GAAG,qBAAqB,EAAE,EACxC,UAAwD,EAAE;QAE1D,OAAO,IAAI,CAAC,WAAW,CAAC,eAAe,EAAE;YACvC,MAAM,EAAE,MAAM;YACd,OAAO,EAAE;gBACP,cAAc,EAAE,kBAAkB;gBAClC,mBAAmB,EAAE,cAAc;aACpC;YACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC;YACzC,MAAM,EAAE,OAAO,CAAC,MAAM;SACvB,EAAE,OAAO,CAAC,SAAS,CAAqC,CAAA;IAC3D,CAAC;IAED,iFAAiF;IACjF,KAAK,CAAC,wBAAwB,CAAC,SAAiB;QAC9C,OAAO,IAAI,CAAC,WAAW,CACrB,mBAAmB,kBAAkB,CAAC,SAAS,CAAC,EAAE,CACZ,CAAA;IAC1C,CAAC;IAED,mGAAmG;IACnG,KAAK,CAAC,eAAe,CAAC,SAAiB;QACrC,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,wBAAwB,CAAC,SAAS,CAAC,CAAA;QAC7D,IAAI,sBAAsB,CAAC,MAAM,CAAC,EAAE,CAAC;YACnC,MAAM,IAAI,KAAK,CAAC,sDAAsD,CAAC,CAAA;QACzE,CAAC;QACD,OAAO,MAAM,CAAA;IACf,CAAC;IAED,gGAAgG;IAChG,KAAK,CAAC,yBAAyB,CAAC,KAI/B;QACC,oFAAoF;QACpF,MAAM,MAAM,GAAG,eAAe,CAAC,KAAK,CAAC,MAAM,CAAC,CAAA;QAC5C,MAAM,WAAW,GAAG,eAAe,CAAC,KAAK,CAAC,WAAW,CAAC,CAAA;QACtD,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAA;QAC9B,MAAM,aAAa,GAAG,OAAO,CAAC,uBAA6D,CAAA;QAC3F,IAAI,OAAO,CAAC,sBAAsB,KAAK,kBAAkB;YACrD,OAAO,CAAC,gBAAgB,KAAK,sBAAsB,IAAI,OAAO,CAAC,cAAc,KAAK,OAAO;YACzF,CAAC,aAAa,IAAI,aAAa,CAAC,WAAW,KAAK,OAAO,CAAC,UAAU;YAClE,aAAa,CAAC,uBAAuB,KAAK,OAAO,CAAC,uBAAuB,EAAE,CAAC;YAC9E,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,0BAA0B,EAAE,CAAA;QACxD,CAAC;QACD,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,2BAA2B,CAAC,MAAM,CAAC,CAAA;QAChE,MAAM,UAAU,GAAG,MAAM,8BAA8B,CAAC,EAAE,aAAa,EAAE,WAAW,EAAE,qBAAqB,EAAE,SAAS,CAAC,KAAK,EAAE,CAAC,CAAA;QAC/H,IAAI,CAAC,UAAU,CAAC,EAAE;YAAE,OAAO,UAAU,CAAA;QACrC,IAAI,CAAC,MAAM,KAAK,CAAC,WAAW,CAAC,WAAW,CAAC,GAAG,aAAa,CAAC,WAAW,IAAI,aAAa,CAAC,uBAAuB,EAAE,CAAC,EAAE,CAAC;YAClH,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,wBAAwB,EAAE,CAAA;QACtD,CAAC;QACD,yFAAyF;QACzF,OAAO,8BAA8B,CAAC,EAAE,aAAa,EAAE,WAAW,EAAE,qBAAqB,EAAE,IAAI,EAAE,CAAC,CAAA;IACpG,CAAC;IAED,KAAK,CAAC,2BAA2B,CAC/B,MAA0B;QAE1B,MAAM,EAAE,OAAO,EAAE,YAAY,EAAE,GAAG,MAAM,CAAA;QACxC,IAAI,CAAC,YAAY,CAAC,SAAS,IAAI,CAAC,YAAY,CAAC,cAAc,EAAE,CAAC;YAC5D,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC,CAAA;QAChD,CAAC;QACD,OAAO,IAAI,CAAC,WAAW,CAAC,yBAAyB,EAAE;YACjD,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;YAC/C,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;gBACnB,UAAU,EAAE,OAAO,CAAC,UAAU;gBAC9B,OAAO;gBACP,cAAc,EAAE,YAAY,CAAC,cAAc;gBAC3C,SAAS,EAAE,YAAY,CAAC,SAAS;gBACjC,aAAa,EAAE,YAAY,CAAC,aAAa;aAC1C,CAAC;SACH,CAA8D,CAAA;IACjE,CAAC;CACF"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "interai-risk-oracle",
|
|
3
|
-
"version": "0.1.
|
|
4
|
-
"description": "TypeScript client
|
|
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
|
],
|