@argosvix/sdk 0.4.22-alpha.0 → 0.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +4 -9
- package/dist/aiSdkMiddleware.d.ts +36 -20
- package/dist/aiSdkMiddleware.d.ts.map +1 -1
- package/dist/aiSdkMiddleware.js +98 -31
- package/dist/aiSdkMiddleware.js.map +1 -1
- package/dist/approvals.d.ts +37 -29
- package/dist/approvals.d.ts.map +1 -1
- package/dist/approvals.js +24 -18
- package/dist/approvals.js.map +1 -1
- package/dist/budgetGate.d.ts +30 -24
- package/dist/budgetGate.d.ts.map +1 -1
- package/dist/budgetGate.js +118 -92
- package/dist/budgetGate.js.map +1 -1
- package/dist/client.d.ts +15 -10
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +271 -222
- package/dist/client.js.map +1 -1
- package/dist/context.d.ts +59 -48
- package/dist/context.d.ts.map +1 -1
- package/dist/context.js +72 -58
- package/dist/context.js.map +1 -1
- package/dist/flush.d.ts +6 -4
- package/dist/flush.d.ts.map +1 -1
- package/dist/flush.js +6 -4
- package/dist/flush.js.map +1 -1
- package/dist/ids.d.ts +3 -2
- package/dist/ids.d.ts.map +1 -1
- package/dist/ids.js +6 -5
- package/dist/ids.js.map +1 -1
- package/dist/langchainCallback.d.ts +14 -13
- package/dist/langchainCallback.d.ts.map +1 -1
- package/dist/langchainCallback.js +22 -17
- package/dist/langchainCallback.js.map +1 -1
- package/dist/policyScan.d.ts +29 -22
- package/dist/policyScan.d.ts.map +1 -1
- package/dist/policyScan.js +47 -38
- package/dist/policyScan.js.map +1 -1
- package/dist/pricing.d.ts +5 -5
- package/dist/pricing.d.ts.map +1 -1
- package/dist/pricing.js +24 -22
- package/dist/pricing.js.map +1 -1
- package/dist/prompts.d.ts +20 -17
- package/dist/prompts.d.ts.map +1 -1
- package/dist/prompts.js +21 -17
- package/dist/prompts.js.map +1 -1
- package/dist/query.d.ts +21 -21
- package/dist/query.d.ts.map +1 -1
- package/dist/query.js +14 -14
- package/dist/recorder.d.ts +39 -19
- package/dist/recorder.d.ts.map +1 -1
- package/dist/recorder.js +120 -69
- package/dist/recorder.js.map +1 -1
- package/dist/redaction.d.ts +35 -33
- package/dist/redaction.d.ts.map +1 -1
- package/dist/redaction.js +73 -64
- package/dist/redaction.js.map +1 -1
- package/dist/types.d.ts +131 -114
- package/dist/types.d.ts.map +1 -1
- package/dist/version.d.ts +9 -9
- package/dist/version.d.ts.map +1 -1
- package/dist/version.js +9 -9
- package/dist/version.js.map +1 -1
- package/package.json +8 -2
package/dist/approvals.js
CHANGED
|
@@ -1,17 +1,22 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
2
|
+
* Human approval gate SDK API (part of the runtime control plane).
|
|
3
3
|
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
4
|
+
* Call this before a dangerous agent operation (deletion, money transfer,
|
|
5
|
+
* account cancellation, etc.). It creates an approval request on the Argosvix
|
|
6
|
+
* backend and sends an email notification to the account owner.
|
|
7
|
+
* `waitForApproval()` blocks until a human approves or denies the request via
|
|
8
|
+
* the dashboard (/approvals) or the email link.
|
|
7
9
|
*
|
|
8
|
-
*
|
|
9
|
-
* - wrap()
|
|
10
|
-
*
|
|
11
|
-
*
|
|
12
|
-
*
|
|
13
|
-
*
|
|
14
|
-
*
|
|
10
|
+
* Design:
|
|
11
|
+
* - An explicit API independent of wrap() (scoped per operation, not per
|
|
12
|
+
* LLM call)
|
|
13
|
+
* - A backend-side timeout or an exceeded waitForApproval wait returns
|
|
14
|
+
* "expired" / "denied" — i.e. default-deny. Callers must abort the
|
|
15
|
+
* operation for any status other than "approved".
|
|
16
|
+
* - Polling defaults to a 5-second interval plus jitter. The backend read
|
|
17
|
+
* rate limit is 60/min per account, so only about ~5 approvals can be
|
|
18
|
+
* awaited concurrently (excess polls get 429 and retry on the next tick,
|
|
19
|
+
* which is safe but slower).
|
|
15
20
|
*
|
|
16
21
|
* @example
|
|
17
22
|
* import { requestApproval, waitForApproval } from "@argosvix/sdk";
|
|
@@ -19,7 +24,7 @@
|
|
|
19
24
|
* const approval = await requestApproval({
|
|
20
25
|
* apiKey: "argk_...",
|
|
21
26
|
* action: "delete_user",
|
|
22
|
-
* summary: "user usr_123
|
|
27
|
+
* summary: "Delete user usr_123 (LTV $0, inactive for 90 days)",
|
|
23
28
|
* });
|
|
24
29
|
* const status = await waitForApproval({ apiKey: "argk_...", id: approval.id });
|
|
25
30
|
* if (status !== "approved") throw new Error(`not approved: ${status}`);
|
|
@@ -83,7 +88,7 @@ async function callApi(opts, path, init = {}) {
|
|
|
83
88
|
}
|
|
84
89
|
return body;
|
|
85
90
|
}
|
|
86
|
-
/**
|
|
91
|
+
/** Create an approval request. Sends an email notification to the account owner. */
|
|
87
92
|
export async function requestApproval(params) {
|
|
88
93
|
const body = {
|
|
89
94
|
action: params.action,
|
|
@@ -102,7 +107,7 @@ export async function requestApproval(params) {
|
|
|
102
107
|
}
|
|
103
108
|
return res.approval;
|
|
104
109
|
}
|
|
105
|
-
/**
|
|
110
|
+
/** Fetch the current state of an approval request once. */
|
|
106
111
|
export async function getApproval(params) {
|
|
107
112
|
const res = (await callApi(params, `/v1/gate/approvals/${encodeURIComponent(params.id)}`));
|
|
108
113
|
if (!res || !res.approval) {
|
|
@@ -111,8 +116,9 @@ export async function getApproval(params) {
|
|
|
111
116
|
return res.approval;
|
|
112
117
|
}
|
|
113
118
|
/**
|
|
114
|
-
*
|
|
115
|
-
* "approved"
|
|
119
|
+
* Poll until the request is approved, denied, or expired, then return the
|
|
120
|
+
* final status. If anything other than "approved" is returned, the caller
|
|
121
|
+
* must not execute the operation (default-deny).
|
|
116
122
|
*/
|
|
117
123
|
export async function waitForApproval(params) {
|
|
118
124
|
const baseInterval = Math.max(MIN_POLL_INTERVAL_MS, params.pollIntervalMs ?? DEFAULT_POLL_INTERVAL_MS);
|
|
@@ -124,7 +130,7 @@ export async function waitForApproval(params) {
|
|
|
124
130
|
status = approval.status;
|
|
125
131
|
}
|
|
126
132
|
catch (err) {
|
|
127
|
-
//
|
|
133
|
+
// Transient network errors / 429 are retried on the next poll; permanent 4xx errors are thrown.
|
|
128
134
|
if (err instanceof ArgosvixApprovalError &&
|
|
129
135
|
err.status !== null &&
|
|
130
136
|
err.status !== 429 &&
|
|
@@ -136,7 +142,7 @@ export async function waitForApproval(params) {
|
|
|
136
142
|
return status;
|
|
137
143
|
if (Date.now() >= deadline)
|
|
138
144
|
return "expired";
|
|
139
|
-
//
|
|
145
|
+
// Jitter (0-20%) prevents multiple agents' polls from synchronizing and pinning the rate limit.
|
|
140
146
|
const jitter = baseInterval * 0.2 * Math.random();
|
|
141
147
|
await new Promise((resolve) => setTimeout(resolve, baseInterval + jitter));
|
|
142
148
|
}
|
package/dist/approvals.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"approvals.js","sourceRoot":"","sources":["../src/approvals.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"approvals.js","sourceRoot":"","sources":["../src/approvals.ts"],"names":[],"mappings":"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"}
|
package/dist/budgetGate.d.ts
CHANGED
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
import type { ArgosvixConfig } from "./types.js";
|
|
2
2
|
/**
|
|
3
|
-
*
|
|
4
|
-
* "models/gemini-pro"
|
|
5
|
-
*
|
|
3
|
+
* Canonical form of a model name. Strips the "models/" provider prefix that
|
|
4
|
+
* Gemini-family SDKs keep (e.g. "models/gemini-pro") so allowlist comparison
|
|
5
|
+
* behaves identically in the TypeScript and Python SDKs. Exported for tests
|
|
6
|
+
* and for cross-verification against the Python implementation.
|
|
6
7
|
*/
|
|
7
8
|
export declare function canonicalizeModelName(model: string): string;
|
|
8
9
|
export declare class ArgosvixBudgetExceededError extends Error {
|
|
@@ -19,13 +20,13 @@ export declare class ArgosvixPolicyViolationError extends Error {
|
|
|
19
20
|
readonly detail: string;
|
|
20
21
|
constructor(reason: PolicyViolationReason, detail: string);
|
|
21
22
|
}
|
|
22
|
-
/** wrapper
|
|
23
|
+
/** Call context the wrapper passes to check(). */
|
|
23
24
|
export interface GateCheckContext {
|
|
24
|
-
/**
|
|
25
|
+
/** Model name of the request (backfilled from the payload on paths where it is not directly available). */
|
|
25
26
|
model?: string | undefined;
|
|
26
|
-
/**
|
|
27
|
+
/** Request payload sent to the provider (subject to the policy gate's PII / secret scan). */
|
|
27
28
|
payload?: unknown;
|
|
28
|
-
/**
|
|
29
|
+
/** Effective tags of this call (used to decide which tag gates apply). */
|
|
29
30
|
tags?: Record<string, string> | undefined;
|
|
30
31
|
}
|
|
31
32
|
export declare class RuntimeGate {
|
|
@@ -36,43 +37,48 @@ export declare class RuntimeGate {
|
|
|
36
37
|
private lastAttemptFailed;
|
|
37
38
|
private warnedEndpoint;
|
|
38
39
|
private warnedNoPolicy;
|
|
39
|
-
/**
|
|
40
|
+
/** Spend recorded by this process since the last successful fetch (local compensation). */
|
|
40
41
|
private localSpendUsd;
|
|
41
|
-
/**
|
|
42
|
+
/** Per-tag local spend compensation (key = JSON([tagKey,tagValue])). */
|
|
42
43
|
private tagLocalSpend;
|
|
43
44
|
constructor(config: ArgosvixConfig);
|
|
44
|
-
/**
|
|
45
|
+
/** Monotonic clock; unaffected by wall-clock regressions (NTP step / VM resume). */
|
|
45
46
|
private now;
|
|
46
47
|
/**
|
|
47
|
-
*
|
|
48
|
-
*
|
|
49
|
-
*
|
|
48
|
+
* Whether the gate can actually enforce anything (used by the fully
|
|
49
|
+
* compatible wrap to decide its identity fast path). When false, check()
|
|
50
|
+
* returns immediately, so the pre-call await can be skipped and the original
|
|
51
|
+
* APIPromise returned as-is.
|
|
50
52
|
*/
|
|
51
53
|
get isActive(): boolean;
|
|
52
|
-
/**
|
|
54
|
+
/** Active only when opted in and configured for sending; otherwise a complete no-op. */
|
|
53
55
|
private get active();
|
|
54
56
|
/**
|
|
55
|
-
* recorder.record()
|
|
56
|
-
*
|
|
57
|
-
*
|
|
57
|
+
* Called from recorder.record(). Local spend compensation within the TTL
|
|
58
|
+
* window. Tag gates are matched against config.tags: every call made by
|
|
59
|
+
* this client carries config.tags, so all calls accrue to the matching tag
|
|
60
|
+
* gates, just like the project gate.
|
|
58
61
|
*/
|
|
59
62
|
noteSpend(costUsd: number): void;
|
|
60
63
|
/**
|
|
61
|
-
* LLM
|
|
62
|
-
*
|
|
64
|
+
* Enforcement right before the LLM call. Throws when the limit is exceeded,
|
|
65
|
+
* passes through otherwise. Backend outages fail open or fail closed
|
|
66
|
+
* according to the enforce mode.
|
|
63
67
|
*/
|
|
64
68
|
check(ctx?: GateCheckContext): Promise<void>;
|
|
65
69
|
private evaluate;
|
|
66
|
-
/**
|
|
70
|
+
/** Local evaluation of the policy gate (model allowlist / PII / secrets). */
|
|
67
71
|
private evaluatePolicy;
|
|
68
72
|
private isStale;
|
|
69
|
-
/**
|
|
73
|
+
/** If the last fetch failed, do not retry until FAILURE_RETRY_MS has elapsed. */
|
|
70
74
|
private attemptAllowed;
|
|
71
75
|
private refresh;
|
|
72
76
|
/**
|
|
73
|
-
* gate endpoint
|
|
74
|
-
*
|
|
75
|
-
*
|
|
77
|
+
* Resolves the gate endpoint. When the ingest endpoint is overridden, the
|
|
78
|
+
* gate endpoint is derived from the same prefix; if it cannot be derived
|
|
79
|
+
* (a custom URL not ending in /v1/ingest), the gate is disabled instead.
|
|
80
|
+
* This avoids sending a Bearer key meant for another environment to
|
|
81
|
+
* production.
|
|
76
82
|
*/
|
|
77
83
|
private gateEndpoint;
|
|
78
84
|
private fetchOnce;
|
package/dist/budgetGate.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"budgetGate.d.ts","sourceRoot":"","sources":["../src/budgetGate.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"budgetGate.d.ts","sourceRoot":"","sources":["../src/budgetGate.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAuDjD;;;;;GAKG;AACH,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAE3D;AAED,qBAAa,2BAA4B,SAAQ,KAAK;IACpD,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;gBACd,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM;CAQ/C;AAED,qBAAa,kCAAmC,SAAQ,KAAK;;CAO5D;AAED,MAAM,MAAM,qBAAqB,GAC7B,mBAAmB,GACnB,cAAc,GACd,iBAAiB,CAAC;AAEtB,qBAAa,4BAA6B,SAAQ,KAAK;IACrD,QAAQ,CAAC,MAAM,EAAE,qBAAqB,CAAC;IACvC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;gBACZ,MAAM,EAAE,qBAAqB,EAAE,MAAM,EAAE,MAAM;CAM1D;AAyCD,kDAAkD;AAClD,MAAM,WAAW,gBAAgB;IAC/B,2GAA2G;IAC3G,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3B,6FAA6F;IAC7F,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,0EAA0E;IAC1E,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,SAAS,CAAC;CAC3C;AAOD,qBAAa,WAAW;IACtB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAiB;IACxC,OAAO,CAAC,QAAQ,CAA6B;IAC7C,OAAO,CAAC,QAAQ,CAA8B;IAC9C,OAAO,CAAC,aAAa,CAAuB;IAC5C,OAAO,CAAC,iBAAiB,CAAS;IAClC,OAAO,CAAC,cAAc,CAAS;IAC/B,OAAO,CAAC,cAAc,CAAS;IAC/B,2FAA2F;IAC3F,OAAO,CAAC,aAAa,CAAK;IAC1B,wEAAwE;IACxE,OAAO,CAAC,aAAa,CAA6B;gBAEtC,MAAM,EAAE,cAAc;IAIlC,oFAAoF;IACpF,OAAO,CAAC,GAAG;IAIX;;;;;OAKG;IACH,IAAI,QAAQ,IAAI,OAAO,CAEtB;IAED,wFAAwF;IACxF,OAAO,KAAK,MAAM,GAOjB;IAED;;;;;OAKG;IACH,SAAS,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAehC;;;;OAIG;IACG,KAAK,CAAC,GAAG,GAAE,gBAAqB,GAAG,OAAO,CAAC,IAAI,CAAC;IA+BtD,OAAO,CAAC,QAAQ;IA4EhB,6EAA6E;IAC7E,OAAO,CAAC,cAAc;IAgDtB,OAAO,CAAC,OAAO;IAKf,iFAAiF;IACjF,OAAO,CAAC,cAAc;IAKtB,OAAO,CAAC,OAAO;IAUf;;;;;;OAMG;IACH,OAAO,CAAC,YAAY;YAmBN,SAAS;CAmMxB;AAGD,OAAO,EAAE,WAAW,IAAI,UAAU,EAAE,CAAC"}
|