verdifax 1.1.0 → 1.2.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 +68 -2
- package/dist/index.d.mts +186 -3
- package/dist/index.d.ts +186 -3
- package/dist/index.js +350 -5
- package/dist/index.mjs +347 -5
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -18,6 +18,8 @@ Requires Node 22 or newer.
|
|
|
18
18
|
|
|
19
19
|
## Quickstart
|
|
20
20
|
|
|
21
|
+
On a trial key, register a request key first and give the client that key: see [Request signing](#request-signing). Without it, a trial key refuses the run.
|
|
22
|
+
|
|
21
23
|
```typescript
|
|
22
24
|
import { VerdifaxClient } from "verdifax";
|
|
23
25
|
|
|
@@ -82,6 +84,12 @@ if (v.verified) {
|
|
|
82
84
|
| `client.registerRequestKey()` | `POST /keys/request-key` | required |
|
|
83
85
|
| `client.rotateRequestKey(newSigningKey)` | `POST /keys/request-key` | required |
|
|
84
86
|
| `client.clearRequestKey()` | `DELETE /keys/request-key` | required |
|
|
87
|
+
| `client.uploadPolicy(document)` | `POST /policies` | required |
|
|
88
|
+
| `client.listPolicies()` | `GET /policies` | required |
|
|
89
|
+
| `client.getPolicy(documentHash)` | `GET /policies/{document_hash}` | required |
|
|
90
|
+
| `client.testPolicy({ inputs, document?, documentHash? })` | `POST /policies/test` | required |
|
|
91
|
+
| `client.getPolicyHistory()` | `GET /policies/history` | required |
|
|
92
|
+
| `client.activatePolicy(documentHash)` | `POST /policies/{document_hash}/activate` | required |
|
|
85
93
|
| `client.adminCreateKey(name)` | `POST /admin/keys` | admin |
|
|
86
94
|
| `client.adminListKeys()` | `GET /admin/keys` | admin |
|
|
87
95
|
| `client.adminRevokeKey(id)` | `DELETE /admin/keys/{id}` | admin |
|
|
@@ -90,7 +98,7 @@ if (v.verified) {
|
|
|
90
98
|
|
|
91
99
|
`client.job(jobId)` returns a [job helper](#jobs) and makes no request until a step runs.
|
|
92
100
|
|
|
93
|
-
These functions make no request: `captureEnvironment`, `formatProviderPayload`, `signRequest`, `signRequestV2`, `requestKeyRegistrationBody`, `requestKeyChangeApproval`, `requestKeyChangePreimage`, `requestSignaturePreimage`, `requestSignaturePreimageV2`, `generateRequestKeyPair`, `validateHex64`, `validateJobName`, `validateRouteId`, `dseDispatchHash`, `dcaeClosureHash` and `cresReceiptHash`. `RUN_STATUSES` lists every run status the server uses.
|
|
101
|
+
These functions make no request: `captureEnvironment`, `formatProviderPayload`, `signRequest`, `signRequestV2`, `requestKeyRegistrationBody`, `requestKeyChangeApproval`, `requestKeyChangePreimage`, `policyActivationApproval`, `policyActivationPreimage`, `requestSignaturePreimage`, `requestSignaturePreimageV2`, `generateRequestKeyPair`, `validateHex64`, `validateJobName`, `validateRouteId`, `dseDispatchHash`, `dcaeClosureHash` and `cresReceiptHash`. `RUN_STATUSES` lists every run status the server uses, and `EXECUTE_FIELDS` lists every top-level key a run request may hold.
|
|
94
102
|
|
|
95
103
|
`getRunArtifacts`, `getPublicBundle` and `getPublicBundleByToken` return the exact JSON text the server sent, so you can save it and check it with `verdifax-verify`.
|
|
96
104
|
|
|
@@ -168,6 +176,62 @@ The server refuses a step in a closed job, a repeated step id, and a final step
|
|
|
168
176
|
|
|
169
177
|
A job map covers what was sent. It cannot show a step that was never sent.
|
|
170
178
|
|
|
179
|
+
## Policies
|
|
180
|
+
|
|
181
|
+
A policy is your own set of rules that decides whether a run is allowed or refused, from the facts the run declares. You upload its exact text, test it on sample inputs, then activate it. Each change is one more link in a chain of changes on the public log.
|
|
182
|
+
|
|
183
|
+
```typescript
|
|
184
|
+
import { readFileSync, writeFileSync } from "node:fs";
|
|
185
|
+
|
|
186
|
+
// Upload the exact text. Nothing changes until it is activated.
|
|
187
|
+
const stored = await client.uploadPolicy(readFileSync("policy.json", "utf8"));
|
|
188
|
+
|
|
189
|
+
// See which rule would fire on sample inputs. This seals nothing.
|
|
190
|
+
const trial = await client.testPolicy({
|
|
191
|
+
documentHash: stored.document_hash,
|
|
192
|
+
inputs: { subject_type: "agent", verb: "approve-loan", object_type: "transaction", classification: "CONFIDENTIAL" },
|
|
193
|
+
});
|
|
194
|
+
console.log(trial.outcome, trial.fired_rule_id, trial.reason_code);
|
|
195
|
+
|
|
196
|
+
// Make it the policy in force. With a signingKey the request key signs the change.
|
|
197
|
+
const change = await client.activatePolicy(stored.document_hash);
|
|
198
|
+
|
|
199
|
+
// A run declares the facts the rules read, and can name the policy it expects.
|
|
200
|
+
await client.attest({
|
|
201
|
+
program_id,
|
|
202
|
+
route_id,
|
|
203
|
+
registry_record_hash,
|
|
204
|
+
payload_text: "approve loan 1042",
|
|
205
|
+
attested_context: { actor_id: "agent:loan-bot" },
|
|
206
|
+
policy_context: {
|
|
207
|
+
actor_type: "agent",
|
|
208
|
+
mfa_satisfied: true,
|
|
209
|
+
object_type: "transaction",
|
|
210
|
+
object_id: "loan-1042",
|
|
211
|
+
classification: "CONFIDENTIAL",
|
|
212
|
+
},
|
|
213
|
+
expected_policy_hash: change.policy_hash,
|
|
214
|
+
});
|
|
215
|
+
|
|
216
|
+
// Roll back by activating an earlier document.
|
|
217
|
+
await client.activatePolicy(earlierDocumentHash);
|
|
218
|
+
|
|
219
|
+
// Save the chain of changes and check it with verdifax-verify --policy-history policy-history.json.
|
|
220
|
+
writeFileSync("policy-history.json", JSON.stringify(await client.getPolicyHistory()));
|
|
221
|
+
```
|
|
222
|
+
|
|
223
|
+
`uploadPolicy` sends the string it is given unchanged, because the server hashes the exact text, and it refuses anything that is not a string. `getPolicy` returns a stored document with its exact text. `testPolicy` takes exactly one of `document` and `documentHash`. `listPolicies` returns the documents, `chain_id`, the newest change as `newest_activation_hash` (64 zeros when there is none yet) and the document in force as `active_document_hash` (empty under the built-in policy).
|
|
224
|
+
|
|
225
|
+
`activatePolicy` reads `listPolicies` first and names the newest change as the one it follows. With the `signingKey` option it sends the request key's signature over the chain, the document and that change, which the server requires while a request key is registered. Rolling back is activating an earlier document: it is one more change, so the change it undoes stays on the record. An HTTP 409 means another change came first or the document is not yet effective. It throws the usual `APIError` and is not retried. `getPolicyHistory` returns the changes oldest first, in the form `verdifax-verify --policy-history FILE` reads.
|
|
226
|
+
|
|
227
|
+
`execute`, `attest`, each row of `executeBatch`, `verifyDeterminism`, `job.step` and the provider helpers take `policy_context` and `expected_policy_hash`. `policy_context` holds only `actor_type` (`agent`, `user`, `service` or `system`), `mfa_satisfied` (true or false), `session_age_seconds` (a whole number, not negative), `object_type` (`text`, `transaction`, `code`, `data`, `model` or `file`), `object_id` (at most 256 bytes) and `classification` (`PUBLIC`, `INTERNAL`, `CONFIDENTIAL`, `RESTRICTED`, `TOP_SECRET` or `TS_SCI`). Any other key or value is refused before sending, because a misspelt key would be dropped and a rule on it would read its zero value. `actor_type`, `mfa_satisfied` and `session_age_seconds` describe the attested actor, so a run that sets one of them must also send `attested_context` with the actor, such as its `actor_id`. `expected_policy_hash` is 64 lowercase hex characters: when another policy is active the server refuses the run with HTTP 409. Both fields are inside `signed_request` on a signed client.
|
|
228
|
+
|
|
229
|
+
Verdifax did not write, review or approve your policy. A pass means the rules ran, not that they are good rules.
|
|
230
|
+
|
|
231
|
+
A policy judges what you declared. It cannot show the declared facts are true.
|
|
232
|
+
|
|
233
|
+
A refusal stops the action only if your system waits for the answer.
|
|
234
|
+
|
|
171
235
|
## Evidence export
|
|
172
236
|
|
|
173
237
|
`exportRuns` lists the runs the server holds for your key in a period, failures included, with up to 10,000 rows per export. `exportRunsCSV` returns the same rows as raw CSV text.
|
|
@@ -211,6 +275,8 @@ Both helpers take the same optional `job` block as `attest` and return `record_h
|
|
|
211
275
|
|
|
212
276
|
`execute`, `attest`, `executeBatch` and `verifyDeterminism` accept `attested_context`, `reproducibility_context`, `request_substance`, `authorization_chain`, `regulatory_scaffolding` and `causal_graph`. Each is recorded as supplied and Verdifax does not check it. The client derives `attested` and `declared` from the fields you provide. Leave out `request_substance.origin.source_ip_hash` and `user_agent_hash`: the server computes them. `execute`, `attest` and `verifyDeterminism` refuse them before sending, and a batch row that sets them fails in `results`.
|
|
213
277
|
|
|
278
|
+
The server ignores a key it does not know, so a misspelt field would be dropped with no error. The client refuses it instead, before sending: a run request for `execute`, `attest`, `verifyDeterminism`, `job.step` or a row of `executeBatch` with a top-level key outside `EXECUTE_FIELDS`, or an `attested_context` key outside `attested`, `actor_id`, `actor_role`, `authorization_policy`, `actor_signature`, `model_provider`, `model_name`, `model_version`, `model_temperature`, `prompt_hash`, `decision_kind`, `decision_result` and `decision_note`, throws a `VerdifaxError` naming the key. `attest` also refuses `request_signature` and `signed_request`, which it does not send. `attestClaudeResponse` and `attestOpenAIResponse` accept their own argument names and every name in `EXECUTE_FIELDS`, so a run request spread into the arguments keeps working, and refuse any other key the same way. Responses are not checked this way: a field a newer server adds is kept and does not throw.
|
|
279
|
+
|
|
214
280
|
`execute`, `attest` and `verifyDeterminism` check that `program_id` and `registry_record_hash` are 64 lowercase hex characters and that `route_id` is 1 to 256 printable ASCII characters.
|
|
215
281
|
|
|
216
282
|
## Environment capture
|
|
@@ -260,7 +326,7 @@ try {
|
|
|
260
326
|
|
|
261
327
|
## Request signing
|
|
262
328
|
|
|
263
|
-
|
|
329
|
+
A trial key, which is what a pilot receives, needs a request key: it seals nothing until one is registered, and the key can then be replaced but not cleared. On a production key, request signing is optional, and a client with no signing key sends the same requests as before.
|
|
264
330
|
|
|
265
331
|
You can register an Ed25519 public key on your API key, so that each run must also be signed with a private key that only you hold. The key pair is created on your machine, and Verdifax receives only the public key.
|
|
266
332
|
|
package/dist/index.d.mts
CHANGED
|
@@ -71,10 +71,117 @@ interface ExecuteRequest {
|
|
|
71
71
|
/** Places this run in a job map. Not accepted by a determinism check,
|
|
72
72
|
* which runs twice. */
|
|
73
73
|
job?: JobLink;
|
|
74
|
+
/** What this request declares for the rules of an active customer policy
|
|
75
|
+
* to read. Unknown keys and values outside the lists are refused before
|
|
76
|
+
* sending. */
|
|
77
|
+
policy_context?: PolicyContext;
|
|
78
|
+
/** The policy hash this request expects to run under. When another policy
|
|
79
|
+
* is active the server refuses the run with HTTP 409. */
|
|
80
|
+
expected_policy_hash?: Hex64;
|
|
74
81
|
/** A version 1 signature for an unsigned client to send. A client with
|
|
75
82
|
* the `signingKey` option sends version 2 and drops this field. */
|
|
76
83
|
request_signature?: RequestSignature;
|
|
77
84
|
}
|
|
85
|
+
/** Who the attested actor is, for a policy rule to read. */
|
|
86
|
+
type PolicyActorType = "agent" | "user" | "service" | "system";
|
|
87
|
+
/** What the request acts on, for a policy rule to read. */
|
|
88
|
+
type PolicyObjectType = "text" | "transaction" | "code" | "data" | "model" | "file";
|
|
89
|
+
/** A classification level, for a policy rule to read. */
|
|
90
|
+
type PolicyClassification = "PUBLIC" | "INTERNAL" | "CONFIDENTIAL" | "RESTRICTED" | "TOP_SECRET" | "TS_SCI";
|
|
91
|
+
/** The facts a request declares for the rules of a customer policy. These
|
|
92
|
+
* are the caller's own statements: a rule on them judges what was
|
|
93
|
+
* declared, and cannot show that it is true. Every key is optional, and
|
|
94
|
+
* the client refuses any other key before sending, because a misspelt key
|
|
95
|
+
* would be dropped and a rule on it would read its zero value.
|
|
96
|
+
*
|
|
97
|
+
* `actor_type`, `mfa_satisfied` and `session_age_seconds` describe the
|
|
98
|
+
* attested actor, so a request that sets one of them must also carry an
|
|
99
|
+
* `attested_context` naming the actor, for example its `actor_id`. */
|
|
100
|
+
interface PolicyContext {
|
|
101
|
+
actor_type?: PolicyActorType;
|
|
102
|
+
mfa_satisfied?: boolean;
|
|
103
|
+
/** A non-negative whole number of seconds. */
|
|
104
|
+
session_age_seconds?: number;
|
|
105
|
+
object_type?: PolicyObjectType;
|
|
106
|
+
/** At most 256 bytes of UTF-8. */
|
|
107
|
+
object_id?: string;
|
|
108
|
+
classification?: PolicyClassification;
|
|
109
|
+
}
|
|
110
|
+
/** A stored policy document, as POST /policies and GET /policies return
|
|
111
|
+
* it. */
|
|
112
|
+
interface Policy {
|
|
113
|
+
policy_id: string;
|
|
114
|
+
policy_version: string;
|
|
115
|
+
policy_hash: Hex64;
|
|
116
|
+
/** SHA-256 of the exact text that was uploaded. */
|
|
117
|
+
document_hash: Hex64;
|
|
118
|
+
created_at: string;
|
|
119
|
+
}
|
|
120
|
+
/** Returned by {@link VerdifaxClient.getPolicy}: the stored policy and its
|
|
121
|
+
* exact text. */
|
|
122
|
+
interface PolicyWithDocument extends Policy {
|
|
123
|
+
document: string;
|
|
124
|
+
}
|
|
125
|
+
/** Returned by {@link VerdifaxClient.listPolicies}. */
|
|
126
|
+
interface PolicyList {
|
|
127
|
+
ok: boolean;
|
|
128
|
+
/** The chain of this key's policy changes, for example `api-key-7`. */
|
|
129
|
+
chain_id?: string;
|
|
130
|
+
/** The newest change, or 64 zeros when there is none yet. */
|
|
131
|
+
newest_activation_hash: Hex64;
|
|
132
|
+
/** The document in force, or empty under the built-in policy. */
|
|
133
|
+
active_document_hash: string;
|
|
134
|
+
policies: Policy[];
|
|
135
|
+
}
|
|
136
|
+
/** The argument of {@link VerdifaxClient.testPolicy}: sample inputs and
|
|
137
|
+
* exactly one of `document` or `documentHash`. */
|
|
138
|
+
interface PolicyTestRequest {
|
|
139
|
+
/** Sample inputs for the rules, passed through as given. */
|
|
140
|
+
inputs: Record<string, unknown>;
|
|
141
|
+
/** The exact text of a policy to test. */
|
|
142
|
+
document?: string;
|
|
143
|
+
/** The document hash of a policy already uploaded under this key. */
|
|
144
|
+
documentHash?: Hex64;
|
|
145
|
+
}
|
|
146
|
+
/** Returned by {@link VerdifaxClient.testPolicy}. A test seals nothing. */
|
|
147
|
+
interface PolicyTestResult {
|
|
148
|
+
ok: boolean;
|
|
149
|
+
/** Always false. */
|
|
150
|
+
sealed: boolean;
|
|
151
|
+
outcome: string;
|
|
152
|
+
fired_rule_id: string;
|
|
153
|
+
reason_code: string;
|
|
154
|
+
}
|
|
155
|
+
/** The signature of a policy activation: the request key's approval of
|
|
156
|
+
* the change. */
|
|
157
|
+
interface PolicyActivationSignature {
|
|
158
|
+
/** Base64 Ed25519 signature by the request key. */
|
|
159
|
+
signature: string;
|
|
160
|
+
/** RFC 3339 UTC with whole seconds. */
|
|
161
|
+
signed_at: string;
|
|
162
|
+
/** 16 random bytes as 32 lowercase hex characters, fresh per change. */
|
|
163
|
+
nonce: string;
|
|
164
|
+
}
|
|
165
|
+
/** One policy change, as {@link VerdifaxClient.activatePolicy} and
|
|
166
|
+
* {@link VerdifaxClient.getPolicyHistory} return it. */
|
|
167
|
+
interface PolicyActivation {
|
|
168
|
+
format: string;
|
|
169
|
+
chain_id: string;
|
|
170
|
+
sequence: number;
|
|
171
|
+
previous_activation_hash: Hex64;
|
|
172
|
+
policy_id: string;
|
|
173
|
+
policy_version: string;
|
|
174
|
+
policy_hash: Hex64;
|
|
175
|
+
document_hash: Hex64;
|
|
176
|
+
activated_at: string;
|
|
177
|
+
/** Present when the request key signed the change. */
|
|
178
|
+
signature?: PolicyActivationSignature & {
|
|
179
|
+
public_key: string;
|
|
180
|
+
};
|
|
181
|
+
activation_hash: Hex64;
|
|
182
|
+
/** Where the change was logged on the public log. */
|
|
183
|
+
anchor?: Record<string, unknown>;
|
|
184
|
+
}
|
|
78
185
|
/** Places one run in a job. `job_id` and `step_id` are 1 to 128 letters,
|
|
79
186
|
* digits, dots, underscores, colons or dashes. The client sorts both
|
|
80
187
|
* lists, removes repeats and leaves out an empty list and a false
|
|
@@ -341,6 +448,10 @@ interface AttestRequest {
|
|
|
341
448
|
causal_graph?: Record<string, unknown>;
|
|
342
449
|
/** Places this run in a job map. {@link VerdifaxJob.step} fills it in. */
|
|
343
450
|
job?: JobLink;
|
|
451
|
+
/** What this request declares for the rules of a customer policy. */
|
|
452
|
+
policy_context?: PolicyContext;
|
|
453
|
+
/** The policy hash this request expects to run under. */
|
|
454
|
+
expected_policy_hash?: Hex64;
|
|
344
455
|
}
|
|
345
456
|
/** The second argument of {@link VerdifaxJob.step}: everything
|
|
346
457
|
* {@link VerdifaxClient.attest} takes except `job`, which the helper
|
|
@@ -620,6 +731,12 @@ declare const MAX_BATCH_ROWS = 1000;
|
|
|
620
731
|
* | `registerRequestKey()` | POST /keys/request-key | required |
|
|
621
732
|
* | `rotateRequestKey(newSigningKey)` | POST /keys/request-key | required |
|
|
622
733
|
* | `clearRequestKey()` | DELETE /keys/request-key | required |
|
|
734
|
+
* | `uploadPolicy(document)` | POST /policies | required |
|
|
735
|
+
* | `listPolicies()` | GET /policies | required |
|
|
736
|
+
* | `getPolicy(documentHash)` | GET /policies/{document_hash} | required |
|
|
737
|
+
* | `testPolicy(req)` | POST /policies/test | required |
|
|
738
|
+
* | `getPolicyHistory()` | GET /policies/history | required |
|
|
739
|
+
* | `activatePolicy(documentHash)` | POST /policies/{document_hash}/activate | required |
|
|
623
740
|
* | `job(jobId)` | none, returns a {@link VerdifaxJob} | none |
|
|
624
741
|
*
|
|
625
742
|
* With the `signingKey` option set, every path to POST /execute carries
|
|
@@ -658,8 +775,9 @@ declare class VerdifaxClient {
|
|
|
658
775
|
* signing key each row carries its own signature and nonce. A row
|
|
659
776
|
* that fails comes back in `results` with `ok: false`, so the call
|
|
660
777
|
* does not throw for it. The rows are not checked here, except a job
|
|
661
|
-
* block,
|
|
662
|
-
* any other bad row
|
|
778
|
+
* block, a `policy_context` and an `expected_policy_hash`, which are
|
|
779
|
+
* refused before anything is sent: the server reports any other bad row
|
|
780
|
+
* in that row's result.
|
|
663
781
|
*
|
|
664
782
|
* This is one POST and it is never retried. After a timeout the
|
|
665
783
|
* server may have run some or all of the rows. */
|
|
@@ -690,6 +808,41 @@ declare class VerdifaxClient {
|
|
|
690
808
|
* unsigned requests, because the server refuses a signed run on an API
|
|
691
809
|
* key with no registered key. If the call fails it keeps the key. */
|
|
692
810
|
clearRequestKey(): Promise<void>;
|
|
811
|
+
/** Stores a policy document. Nothing changes until it is activated with
|
|
812
|
+
* {@link activatePolicy}. The server hashes the exact text, so this
|
|
813
|
+
* sends the string it is given unchanged and refuses anything that is
|
|
814
|
+
* not a string: serializing an object here would change the hash.
|
|
815
|
+
* Verdifax does not write, review or approve a customer's policy. */
|
|
816
|
+
uploadPolicy(document: string): Promise<Policy>;
|
|
817
|
+
/** This key's stored documents, with the chain its changes belong to,
|
|
818
|
+
* the newest change in it (64 zeros when there is none yet) and the
|
|
819
|
+
* document in force (empty under the built-in policy). */
|
|
820
|
+
listPolicies(): Promise<PolicyList>;
|
|
821
|
+
/** One stored document, with its exact text as `document`. */
|
|
822
|
+
getPolicy(documentHash: Hex64): Promise<PolicyWithDocument>;
|
|
823
|
+
/** Shows which rule would fire on sample inputs, for a document given as
|
|
824
|
+
* text or one already stored, named by its hash: exactly one of the two.
|
|
825
|
+
* It seals nothing. */
|
|
826
|
+
testPolicy(req: PolicyTestRequest): Promise<PolicyTestResult>;
|
|
827
|
+
/** This key's policy changes, oldest first, as the list the server sends.
|
|
828
|
+
* Save it as JSON, for example with
|
|
829
|
+
* `writeFileSync("policy-history.json", JSON.stringify(history))`, and
|
|
830
|
+
* check it with `verdifax-verify --policy-history policy-history.json`. */
|
|
831
|
+
getPolicyHistory(): Promise<PolicyActivation[]>;
|
|
832
|
+
/** Makes a stored document the policy in force and returns the change
|
|
833
|
+
* record. It first reads GET /policies for the chain and its newest
|
|
834
|
+
* change, then names that change as the one this follows. With the
|
|
835
|
+
* `signingKey` option the request key signs the change, which the server
|
|
836
|
+
* requires while a request key is registered.
|
|
837
|
+
*
|
|
838
|
+
* Rolling back is activating an earlier document: it is one more change
|
|
839
|
+
* in the chain, so the change it undoes stays on the record.
|
|
840
|
+
*
|
|
841
|
+
* An HTTP 409 means the chain moved because another change came first,
|
|
842
|
+
* or the document is not yet effective. It throws the usual
|
|
843
|
+
* {@link APIError} and is not retried: read the policies again and
|
|
844
|
+
* decide. */
|
|
845
|
+
activatePolicy(documentHash: Hex64): Promise<PolicyActivation>;
|
|
693
846
|
getRun(runId: number): Promise<Run>;
|
|
694
847
|
verifyRun(runId: number): Promise<VerifyResponse>;
|
|
695
848
|
listRuns(params?: ListRunsParams): Promise<{
|
|
@@ -763,6 +916,8 @@ declare class VerdifaxClient {
|
|
|
763
916
|
response: string;
|
|
764
917
|
govern?: boolean;
|
|
765
918
|
job?: JobLink;
|
|
919
|
+
policy_context?: PolicyContext;
|
|
920
|
+
expected_policy_hash?: Hex64;
|
|
766
921
|
}): Promise<ExecuteResponse>;
|
|
767
922
|
/** Convenience for attesting an OpenAI API response. `govern` works as
|
|
768
923
|
* in {@link attestClaudeResponse}. */
|
|
@@ -774,6 +929,8 @@ declare class VerdifaxClient {
|
|
|
774
929
|
response: string;
|
|
775
930
|
govern?: boolean;
|
|
776
931
|
job?: JobLink;
|
|
932
|
+
policy_context?: PolicyContext;
|
|
933
|
+
expected_policy_hash?: Hex64;
|
|
777
934
|
}): Promise<ExecuteResponse>;
|
|
778
935
|
private attestProviderResponse;
|
|
779
936
|
private request;
|
|
@@ -838,6 +995,9 @@ declare function captureEnvironment(options?: CaptureEnvironmentOptions): Reprod
|
|
|
838
995
|
* Text with an unpaired surrogate has no UTF-8 form and is refused.
|
|
839
996
|
*/
|
|
840
997
|
declare function formatProviderPayload(provider: string, prompt: string, response: string): string;
|
|
998
|
+
/** Every top-level key a run request may hold. Any other key is refused
|
|
999
|
+
* before sending, so a misspelt field cannot be silently dropped. */
|
|
1000
|
+
declare const EXECUTE_FIELDS: readonly string[];
|
|
841
1001
|
|
|
842
1002
|
/**
|
|
843
1003
|
* The three canonical hash formulas from the Verdifax orchestrator, so a
|
|
@@ -961,6 +1121,29 @@ declare function requestKeyChangeApproval(currentSigningKey: Uint8Array | KeyObj
|
|
|
961
1121
|
signedAt?: string;
|
|
962
1122
|
nonce?: string;
|
|
963
1123
|
}): RequestKeyChange;
|
|
1124
|
+
/** The bytes the request key signs to make a stored policy document the
|
|
1125
|
+
* one in force, matching the orchestrator's PolicyActivationPreimage.
|
|
1126
|
+
* `chain_id` and `previous_activation_hash` come from GET /policies, so a
|
|
1127
|
+
* signature cannot be used on another key's chain, another document or
|
|
1128
|
+
* another point in the chain. */
|
|
1129
|
+
declare function policyActivationPreimage(fields: {
|
|
1130
|
+
chain_id: string;
|
|
1131
|
+
document_hash: string;
|
|
1132
|
+
previous_activation_hash: string;
|
|
1133
|
+
signed_at: string;
|
|
1134
|
+
nonce: string;
|
|
1135
|
+
}): Buffer;
|
|
1136
|
+
/** The request key's approval of a policy change, the `signature` value of
|
|
1137
|
+
* POST /policies/{document_hash}/activate. `signedAt` and `nonce` default
|
|
1138
|
+
* to the current time and fresh random bytes. */
|
|
1139
|
+
declare function policyActivationApproval(signingKey: Uint8Array | KeyObject, fields: {
|
|
1140
|
+
chain_id: string;
|
|
1141
|
+
document_hash: string;
|
|
1142
|
+
previous_activation_hash: string;
|
|
1143
|
+
}, options?: {
|
|
1144
|
+
signedAt?: string;
|
|
1145
|
+
nonce?: string;
|
|
1146
|
+
}): PolicyActivationSignature;
|
|
964
1147
|
|
|
965
1148
|
/**
|
|
966
1149
|
* Input-validation helpers, mirrors the Python SDK's
|
|
@@ -1046,4 +1229,4 @@ declare class APIKeyRequiredError extends VerdifaxError {
|
|
|
1046
1229
|
constructor();
|
|
1047
1230
|
}
|
|
1048
1231
|
|
|
1049
|
-
export { APIError, APIKeyRequiredError, type AdminAPIKey, type AdminCreateKeyResponse, type AdminEraseRequest, type AttestRequest, type AttestationList, AuthError, CRES_ENGINE_VERSION, CRES_PREIMAGE_VERSION, type ClientConfig, type DCAEProofBundle, type DCAEVerdict, DCAE_PREIMAGE_VERSION, DSE_FORMULA_VERSION, type DeletionReceipt, type DeterminismDiff, type DeterminismRun, type ExecuteBatchResponse, type ExecuteBatchResult, type ExecuteRequest, type ExecuteResponse, type ExecutionManifest, type ExportRow, type ExportRunsParams, type FormulaEra, type Health, type Hex64, type JobLink, type JobStepOptions, type ListAttestationsParams, type ListRunsParams, MAX_BATCH_ROWS, NotFoundError, type PDFFormat, RUN_STATUSES, type ReproducibilityContext, type RequestKeyChange, type RequestKeyPair, type RequestKeyRegistration, type RequestKeyRegistrationBody, type RequestSignature, type RequestSignatureV2, type Run, type RunStats, type RunStatus, type RunSummary, type RunsExport, type RunsExportCSV, type SearchRunsParams, type SignedRequestBody, VerdifaxClient, VerdifaxError, VerdifaxJob, type VerdifaxVersion, type VerifyDeterminismResponse, type VerifyResponse, captureEnvironment, cresReceiptHash, dcaeClosureHash, dseDispatchHash, formatProviderPayload, fromEnv, generateRequestKeyPair, requestKeyChangeApproval, requestKeyChangePreimage, requestKeyRegistrationBody, requestSignaturePreimage, requestSignaturePreimageV2, signRequest, signRequestV2, validateHex64, validateJobName, validateRouteId };
|
|
1232
|
+
export { APIError, APIKeyRequiredError, type AdminAPIKey, type AdminCreateKeyResponse, type AdminEraseRequest, type AttestRequest, type AttestationList, AuthError, CRES_ENGINE_VERSION, CRES_PREIMAGE_VERSION, type ClientConfig, type DCAEProofBundle, type DCAEVerdict, DCAE_PREIMAGE_VERSION, DSE_FORMULA_VERSION, type DeletionReceipt, type DeterminismDiff, type DeterminismRun, EXECUTE_FIELDS, type ExecuteBatchResponse, type ExecuteBatchResult, type ExecuteRequest, type ExecuteResponse, type ExecutionManifest, type ExportRow, type ExportRunsParams, type FormulaEra, type Health, type Hex64, type JobLink, type JobStepOptions, type ListAttestationsParams, type ListRunsParams, MAX_BATCH_ROWS, NotFoundError, type PDFFormat, type Policy, type PolicyActivation, type PolicyActivationSignature, type PolicyActorType, type PolicyClassification, type PolicyContext, type PolicyList, type PolicyObjectType, type PolicyTestRequest, type PolicyTestResult, type PolicyWithDocument, RUN_STATUSES, type ReproducibilityContext, type RequestKeyChange, type RequestKeyPair, type RequestKeyRegistration, type RequestKeyRegistrationBody, type RequestSignature, type RequestSignatureV2, type Run, type RunStats, type RunStatus, type RunSummary, type RunsExport, type RunsExportCSV, type SearchRunsParams, type SignedRequestBody, VerdifaxClient, VerdifaxError, VerdifaxJob, type VerdifaxVersion, type VerifyDeterminismResponse, type VerifyResponse, captureEnvironment, cresReceiptHash, dcaeClosureHash, dseDispatchHash, formatProviderPayload, fromEnv, generateRequestKeyPair, policyActivationApproval, policyActivationPreimage, requestKeyChangeApproval, requestKeyChangePreimage, requestKeyRegistrationBody, requestSignaturePreimage, requestSignaturePreimageV2, signRequest, signRequestV2, validateHex64, validateJobName, validateRouteId };
|
package/dist/index.d.ts
CHANGED
|
@@ -71,10 +71,117 @@ interface ExecuteRequest {
|
|
|
71
71
|
/** Places this run in a job map. Not accepted by a determinism check,
|
|
72
72
|
* which runs twice. */
|
|
73
73
|
job?: JobLink;
|
|
74
|
+
/** What this request declares for the rules of an active customer policy
|
|
75
|
+
* to read. Unknown keys and values outside the lists are refused before
|
|
76
|
+
* sending. */
|
|
77
|
+
policy_context?: PolicyContext;
|
|
78
|
+
/** The policy hash this request expects to run under. When another policy
|
|
79
|
+
* is active the server refuses the run with HTTP 409. */
|
|
80
|
+
expected_policy_hash?: Hex64;
|
|
74
81
|
/** A version 1 signature for an unsigned client to send. A client with
|
|
75
82
|
* the `signingKey` option sends version 2 and drops this field. */
|
|
76
83
|
request_signature?: RequestSignature;
|
|
77
84
|
}
|
|
85
|
+
/** Who the attested actor is, for a policy rule to read. */
|
|
86
|
+
type PolicyActorType = "agent" | "user" | "service" | "system";
|
|
87
|
+
/** What the request acts on, for a policy rule to read. */
|
|
88
|
+
type PolicyObjectType = "text" | "transaction" | "code" | "data" | "model" | "file";
|
|
89
|
+
/** A classification level, for a policy rule to read. */
|
|
90
|
+
type PolicyClassification = "PUBLIC" | "INTERNAL" | "CONFIDENTIAL" | "RESTRICTED" | "TOP_SECRET" | "TS_SCI";
|
|
91
|
+
/** The facts a request declares for the rules of a customer policy. These
|
|
92
|
+
* are the caller's own statements: a rule on them judges what was
|
|
93
|
+
* declared, and cannot show that it is true. Every key is optional, and
|
|
94
|
+
* the client refuses any other key before sending, because a misspelt key
|
|
95
|
+
* would be dropped and a rule on it would read its zero value.
|
|
96
|
+
*
|
|
97
|
+
* `actor_type`, `mfa_satisfied` and `session_age_seconds` describe the
|
|
98
|
+
* attested actor, so a request that sets one of them must also carry an
|
|
99
|
+
* `attested_context` naming the actor, for example its `actor_id`. */
|
|
100
|
+
interface PolicyContext {
|
|
101
|
+
actor_type?: PolicyActorType;
|
|
102
|
+
mfa_satisfied?: boolean;
|
|
103
|
+
/** A non-negative whole number of seconds. */
|
|
104
|
+
session_age_seconds?: number;
|
|
105
|
+
object_type?: PolicyObjectType;
|
|
106
|
+
/** At most 256 bytes of UTF-8. */
|
|
107
|
+
object_id?: string;
|
|
108
|
+
classification?: PolicyClassification;
|
|
109
|
+
}
|
|
110
|
+
/** A stored policy document, as POST /policies and GET /policies return
|
|
111
|
+
* it. */
|
|
112
|
+
interface Policy {
|
|
113
|
+
policy_id: string;
|
|
114
|
+
policy_version: string;
|
|
115
|
+
policy_hash: Hex64;
|
|
116
|
+
/** SHA-256 of the exact text that was uploaded. */
|
|
117
|
+
document_hash: Hex64;
|
|
118
|
+
created_at: string;
|
|
119
|
+
}
|
|
120
|
+
/** Returned by {@link VerdifaxClient.getPolicy}: the stored policy and its
|
|
121
|
+
* exact text. */
|
|
122
|
+
interface PolicyWithDocument extends Policy {
|
|
123
|
+
document: string;
|
|
124
|
+
}
|
|
125
|
+
/** Returned by {@link VerdifaxClient.listPolicies}. */
|
|
126
|
+
interface PolicyList {
|
|
127
|
+
ok: boolean;
|
|
128
|
+
/** The chain of this key's policy changes, for example `api-key-7`. */
|
|
129
|
+
chain_id?: string;
|
|
130
|
+
/** The newest change, or 64 zeros when there is none yet. */
|
|
131
|
+
newest_activation_hash: Hex64;
|
|
132
|
+
/** The document in force, or empty under the built-in policy. */
|
|
133
|
+
active_document_hash: string;
|
|
134
|
+
policies: Policy[];
|
|
135
|
+
}
|
|
136
|
+
/** The argument of {@link VerdifaxClient.testPolicy}: sample inputs and
|
|
137
|
+
* exactly one of `document` or `documentHash`. */
|
|
138
|
+
interface PolicyTestRequest {
|
|
139
|
+
/** Sample inputs for the rules, passed through as given. */
|
|
140
|
+
inputs: Record<string, unknown>;
|
|
141
|
+
/** The exact text of a policy to test. */
|
|
142
|
+
document?: string;
|
|
143
|
+
/** The document hash of a policy already uploaded under this key. */
|
|
144
|
+
documentHash?: Hex64;
|
|
145
|
+
}
|
|
146
|
+
/** Returned by {@link VerdifaxClient.testPolicy}. A test seals nothing. */
|
|
147
|
+
interface PolicyTestResult {
|
|
148
|
+
ok: boolean;
|
|
149
|
+
/** Always false. */
|
|
150
|
+
sealed: boolean;
|
|
151
|
+
outcome: string;
|
|
152
|
+
fired_rule_id: string;
|
|
153
|
+
reason_code: string;
|
|
154
|
+
}
|
|
155
|
+
/** The signature of a policy activation: the request key's approval of
|
|
156
|
+
* the change. */
|
|
157
|
+
interface PolicyActivationSignature {
|
|
158
|
+
/** Base64 Ed25519 signature by the request key. */
|
|
159
|
+
signature: string;
|
|
160
|
+
/** RFC 3339 UTC with whole seconds. */
|
|
161
|
+
signed_at: string;
|
|
162
|
+
/** 16 random bytes as 32 lowercase hex characters, fresh per change. */
|
|
163
|
+
nonce: string;
|
|
164
|
+
}
|
|
165
|
+
/** One policy change, as {@link VerdifaxClient.activatePolicy} and
|
|
166
|
+
* {@link VerdifaxClient.getPolicyHistory} return it. */
|
|
167
|
+
interface PolicyActivation {
|
|
168
|
+
format: string;
|
|
169
|
+
chain_id: string;
|
|
170
|
+
sequence: number;
|
|
171
|
+
previous_activation_hash: Hex64;
|
|
172
|
+
policy_id: string;
|
|
173
|
+
policy_version: string;
|
|
174
|
+
policy_hash: Hex64;
|
|
175
|
+
document_hash: Hex64;
|
|
176
|
+
activated_at: string;
|
|
177
|
+
/** Present when the request key signed the change. */
|
|
178
|
+
signature?: PolicyActivationSignature & {
|
|
179
|
+
public_key: string;
|
|
180
|
+
};
|
|
181
|
+
activation_hash: Hex64;
|
|
182
|
+
/** Where the change was logged on the public log. */
|
|
183
|
+
anchor?: Record<string, unknown>;
|
|
184
|
+
}
|
|
78
185
|
/** Places one run in a job. `job_id` and `step_id` are 1 to 128 letters,
|
|
79
186
|
* digits, dots, underscores, colons or dashes. The client sorts both
|
|
80
187
|
* lists, removes repeats and leaves out an empty list and a false
|
|
@@ -341,6 +448,10 @@ interface AttestRequest {
|
|
|
341
448
|
causal_graph?: Record<string, unknown>;
|
|
342
449
|
/** Places this run in a job map. {@link VerdifaxJob.step} fills it in. */
|
|
343
450
|
job?: JobLink;
|
|
451
|
+
/** What this request declares for the rules of a customer policy. */
|
|
452
|
+
policy_context?: PolicyContext;
|
|
453
|
+
/** The policy hash this request expects to run under. */
|
|
454
|
+
expected_policy_hash?: Hex64;
|
|
344
455
|
}
|
|
345
456
|
/** The second argument of {@link VerdifaxJob.step}: everything
|
|
346
457
|
* {@link VerdifaxClient.attest} takes except `job`, which the helper
|
|
@@ -620,6 +731,12 @@ declare const MAX_BATCH_ROWS = 1000;
|
|
|
620
731
|
* | `registerRequestKey()` | POST /keys/request-key | required |
|
|
621
732
|
* | `rotateRequestKey(newSigningKey)` | POST /keys/request-key | required |
|
|
622
733
|
* | `clearRequestKey()` | DELETE /keys/request-key | required |
|
|
734
|
+
* | `uploadPolicy(document)` | POST /policies | required |
|
|
735
|
+
* | `listPolicies()` | GET /policies | required |
|
|
736
|
+
* | `getPolicy(documentHash)` | GET /policies/{document_hash} | required |
|
|
737
|
+
* | `testPolicy(req)` | POST /policies/test | required |
|
|
738
|
+
* | `getPolicyHistory()` | GET /policies/history | required |
|
|
739
|
+
* | `activatePolicy(documentHash)` | POST /policies/{document_hash}/activate | required |
|
|
623
740
|
* | `job(jobId)` | none, returns a {@link VerdifaxJob} | none |
|
|
624
741
|
*
|
|
625
742
|
* With the `signingKey` option set, every path to POST /execute carries
|
|
@@ -658,8 +775,9 @@ declare class VerdifaxClient {
|
|
|
658
775
|
* signing key each row carries its own signature and nonce. A row
|
|
659
776
|
* that fails comes back in `results` with `ok: false`, so the call
|
|
660
777
|
* does not throw for it. The rows are not checked here, except a job
|
|
661
|
-
* block,
|
|
662
|
-
* any other bad row
|
|
778
|
+
* block, a `policy_context` and an `expected_policy_hash`, which are
|
|
779
|
+
* refused before anything is sent: the server reports any other bad row
|
|
780
|
+
* in that row's result.
|
|
663
781
|
*
|
|
664
782
|
* This is one POST and it is never retried. After a timeout the
|
|
665
783
|
* server may have run some or all of the rows. */
|
|
@@ -690,6 +808,41 @@ declare class VerdifaxClient {
|
|
|
690
808
|
* unsigned requests, because the server refuses a signed run on an API
|
|
691
809
|
* key with no registered key. If the call fails it keeps the key. */
|
|
692
810
|
clearRequestKey(): Promise<void>;
|
|
811
|
+
/** Stores a policy document. Nothing changes until it is activated with
|
|
812
|
+
* {@link activatePolicy}. The server hashes the exact text, so this
|
|
813
|
+
* sends the string it is given unchanged and refuses anything that is
|
|
814
|
+
* not a string: serializing an object here would change the hash.
|
|
815
|
+
* Verdifax does not write, review or approve a customer's policy. */
|
|
816
|
+
uploadPolicy(document: string): Promise<Policy>;
|
|
817
|
+
/** This key's stored documents, with the chain its changes belong to,
|
|
818
|
+
* the newest change in it (64 zeros when there is none yet) and the
|
|
819
|
+
* document in force (empty under the built-in policy). */
|
|
820
|
+
listPolicies(): Promise<PolicyList>;
|
|
821
|
+
/** One stored document, with its exact text as `document`. */
|
|
822
|
+
getPolicy(documentHash: Hex64): Promise<PolicyWithDocument>;
|
|
823
|
+
/** Shows which rule would fire on sample inputs, for a document given as
|
|
824
|
+
* text or one already stored, named by its hash: exactly one of the two.
|
|
825
|
+
* It seals nothing. */
|
|
826
|
+
testPolicy(req: PolicyTestRequest): Promise<PolicyTestResult>;
|
|
827
|
+
/** This key's policy changes, oldest first, as the list the server sends.
|
|
828
|
+
* Save it as JSON, for example with
|
|
829
|
+
* `writeFileSync("policy-history.json", JSON.stringify(history))`, and
|
|
830
|
+
* check it with `verdifax-verify --policy-history policy-history.json`. */
|
|
831
|
+
getPolicyHistory(): Promise<PolicyActivation[]>;
|
|
832
|
+
/** Makes a stored document the policy in force and returns the change
|
|
833
|
+
* record. It first reads GET /policies for the chain and its newest
|
|
834
|
+
* change, then names that change as the one this follows. With the
|
|
835
|
+
* `signingKey` option the request key signs the change, which the server
|
|
836
|
+
* requires while a request key is registered.
|
|
837
|
+
*
|
|
838
|
+
* Rolling back is activating an earlier document: it is one more change
|
|
839
|
+
* in the chain, so the change it undoes stays on the record.
|
|
840
|
+
*
|
|
841
|
+
* An HTTP 409 means the chain moved because another change came first,
|
|
842
|
+
* or the document is not yet effective. It throws the usual
|
|
843
|
+
* {@link APIError} and is not retried: read the policies again and
|
|
844
|
+
* decide. */
|
|
845
|
+
activatePolicy(documentHash: Hex64): Promise<PolicyActivation>;
|
|
693
846
|
getRun(runId: number): Promise<Run>;
|
|
694
847
|
verifyRun(runId: number): Promise<VerifyResponse>;
|
|
695
848
|
listRuns(params?: ListRunsParams): Promise<{
|
|
@@ -763,6 +916,8 @@ declare class VerdifaxClient {
|
|
|
763
916
|
response: string;
|
|
764
917
|
govern?: boolean;
|
|
765
918
|
job?: JobLink;
|
|
919
|
+
policy_context?: PolicyContext;
|
|
920
|
+
expected_policy_hash?: Hex64;
|
|
766
921
|
}): Promise<ExecuteResponse>;
|
|
767
922
|
/** Convenience for attesting an OpenAI API response. `govern` works as
|
|
768
923
|
* in {@link attestClaudeResponse}. */
|
|
@@ -774,6 +929,8 @@ declare class VerdifaxClient {
|
|
|
774
929
|
response: string;
|
|
775
930
|
govern?: boolean;
|
|
776
931
|
job?: JobLink;
|
|
932
|
+
policy_context?: PolicyContext;
|
|
933
|
+
expected_policy_hash?: Hex64;
|
|
777
934
|
}): Promise<ExecuteResponse>;
|
|
778
935
|
private attestProviderResponse;
|
|
779
936
|
private request;
|
|
@@ -838,6 +995,9 @@ declare function captureEnvironment(options?: CaptureEnvironmentOptions): Reprod
|
|
|
838
995
|
* Text with an unpaired surrogate has no UTF-8 form and is refused.
|
|
839
996
|
*/
|
|
840
997
|
declare function formatProviderPayload(provider: string, prompt: string, response: string): string;
|
|
998
|
+
/** Every top-level key a run request may hold. Any other key is refused
|
|
999
|
+
* before sending, so a misspelt field cannot be silently dropped. */
|
|
1000
|
+
declare const EXECUTE_FIELDS: readonly string[];
|
|
841
1001
|
|
|
842
1002
|
/**
|
|
843
1003
|
* The three canonical hash formulas from the Verdifax orchestrator, so a
|
|
@@ -961,6 +1121,29 @@ declare function requestKeyChangeApproval(currentSigningKey: Uint8Array | KeyObj
|
|
|
961
1121
|
signedAt?: string;
|
|
962
1122
|
nonce?: string;
|
|
963
1123
|
}): RequestKeyChange;
|
|
1124
|
+
/** The bytes the request key signs to make a stored policy document the
|
|
1125
|
+
* one in force, matching the orchestrator's PolicyActivationPreimage.
|
|
1126
|
+
* `chain_id` and `previous_activation_hash` come from GET /policies, so a
|
|
1127
|
+
* signature cannot be used on another key's chain, another document or
|
|
1128
|
+
* another point in the chain. */
|
|
1129
|
+
declare function policyActivationPreimage(fields: {
|
|
1130
|
+
chain_id: string;
|
|
1131
|
+
document_hash: string;
|
|
1132
|
+
previous_activation_hash: string;
|
|
1133
|
+
signed_at: string;
|
|
1134
|
+
nonce: string;
|
|
1135
|
+
}): Buffer;
|
|
1136
|
+
/** The request key's approval of a policy change, the `signature` value of
|
|
1137
|
+
* POST /policies/{document_hash}/activate. `signedAt` and `nonce` default
|
|
1138
|
+
* to the current time and fresh random bytes. */
|
|
1139
|
+
declare function policyActivationApproval(signingKey: Uint8Array | KeyObject, fields: {
|
|
1140
|
+
chain_id: string;
|
|
1141
|
+
document_hash: string;
|
|
1142
|
+
previous_activation_hash: string;
|
|
1143
|
+
}, options?: {
|
|
1144
|
+
signedAt?: string;
|
|
1145
|
+
nonce?: string;
|
|
1146
|
+
}): PolicyActivationSignature;
|
|
964
1147
|
|
|
965
1148
|
/**
|
|
966
1149
|
* Input-validation helpers, mirrors the Python SDK's
|
|
@@ -1046,4 +1229,4 @@ declare class APIKeyRequiredError extends VerdifaxError {
|
|
|
1046
1229
|
constructor();
|
|
1047
1230
|
}
|
|
1048
1231
|
|
|
1049
|
-
export { APIError, APIKeyRequiredError, type AdminAPIKey, type AdminCreateKeyResponse, type AdminEraseRequest, type AttestRequest, type AttestationList, AuthError, CRES_ENGINE_VERSION, CRES_PREIMAGE_VERSION, type ClientConfig, type DCAEProofBundle, type DCAEVerdict, DCAE_PREIMAGE_VERSION, DSE_FORMULA_VERSION, type DeletionReceipt, type DeterminismDiff, type DeterminismRun, type ExecuteBatchResponse, type ExecuteBatchResult, type ExecuteRequest, type ExecuteResponse, type ExecutionManifest, type ExportRow, type ExportRunsParams, type FormulaEra, type Health, type Hex64, type JobLink, type JobStepOptions, type ListAttestationsParams, type ListRunsParams, MAX_BATCH_ROWS, NotFoundError, type PDFFormat, RUN_STATUSES, type ReproducibilityContext, type RequestKeyChange, type RequestKeyPair, type RequestKeyRegistration, type RequestKeyRegistrationBody, type RequestSignature, type RequestSignatureV2, type Run, type RunStats, type RunStatus, type RunSummary, type RunsExport, type RunsExportCSV, type SearchRunsParams, type SignedRequestBody, VerdifaxClient, VerdifaxError, VerdifaxJob, type VerdifaxVersion, type VerifyDeterminismResponse, type VerifyResponse, captureEnvironment, cresReceiptHash, dcaeClosureHash, dseDispatchHash, formatProviderPayload, fromEnv, generateRequestKeyPair, requestKeyChangeApproval, requestKeyChangePreimage, requestKeyRegistrationBody, requestSignaturePreimage, requestSignaturePreimageV2, signRequest, signRequestV2, validateHex64, validateJobName, validateRouteId };
|
|
1232
|
+
export { APIError, APIKeyRequiredError, type AdminAPIKey, type AdminCreateKeyResponse, type AdminEraseRequest, type AttestRequest, type AttestationList, AuthError, CRES_ENGINE_VERSION, CRES_PREIMAGE_VERSION, type ClientConfig, type DCAEProofBundle, type DCAEVerdict, DCAE_PREIMAGE_VERSION, DSE_FORMULA_VERSION, type DeletionReceipt, type DeterminismDiff, type DeterminismRun, EXECUTE_FIELDS, type ExecuteBatchResponse, type ExecuteBatchResult, type ExecuteRequest, type ExecuteResponse, type ExecutionManifest, type ExportRow, type ExportRunsParams, type FormulaEra, type Health, type Hex64, type JobLink, type JobStepOptions, type ListAttestationsParams, type ListRunsParams, MAX_BATCH_ROWS, NotFoundError, type PDFFormat, type Policy, type PolicyActivation, type PolicyActivationSignature, type PolicyActorType, type PolicyClassification, type PolicyContext, type PolicyList, type PolicyObjectType, type PolicyTestRequest, type PolicyTestResult, type PolicyWithDocument, RUN_STATUSES, type ReproducibilityContext, type RequestKeyChange, type RequestKeyPair, type RequestKeyRegistration, type RequestKeyRegistrationBody, type RequestSignature, type RequestSignatureV2, type Run, type RunStats, type RunStatus, type RunSummary, type RunsExport, type RunsExportCSV, type SearchRunsParams, type SignedRequestBody, VerdifaxClient, VerdifaxError, VerdifaxJob, type VerdifaxVersion, type VerifyDeterminismResponse, type VerifyResponse, captureEnvironment, cresReceiptHash, dcaeClosureHash, dseDispatchHash, formatProviderPayload, fromEnv, generateRequestKeyPair, policyActivationApproval, policyActivationPreimage, requestKeyChangeApproval, requestKeyChangePreimage, requestKeyRegistrationBody, requestSignaturePreimage, requestSignaturePreimageV2, signRequest, signRequestV2, validateHex64, validateJobName, validateRouteId };
|