genesis-mesh-sdk 0.59.1 → 0.60.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/CHANGELOG.md +18 -0
- package/README.md +1 -0
- package/dist/cjs/client.js +103 -23
- package/dist/cjs/errors.js +20 -0
- package/dist/cjs/health.js +59 -0
- package/dist/cjs/index.js +9 -2
- package/dist/esm/client.js +103 -23
- package/dist/esm/client.js.map +1 -1
- package/dist/esm/errors.js +19 -0
- package/dist/esm/errors.js.map +1 -1
- package/dist/esm/health.js +56 -0
- package/dist/esm/health.js.map +1 -0
- package/dist/esm/index.js +6 -1
- package/dist/esm/index.js.map +1 -1
- package/dist/types/client.d.ts +24 -3
- package/dist/types/client.d.ts.map +1 -1
- package/dist/types/errors.d.ts +11 -0
- package/dist/types/errors.d.ts.map +1 -1
- package/dist/types/health.d.ts +23 -0
- package/dist/types/health.d.ts.map +1 -0
- package/dist/types/index.d.ts +6 -1
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/types.d.ts +44 -0
- package/dist/types/types.d.ts.map +1 -1
- package/docs/high-availability.md +86 -0
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -7,6 +7,24 @@ Versions align with the [Genesis Mesh release sequence](https://github.com/Genes
|
|
|
7
7
|
|
|
8
8
|
---
|
|
9
9
|
|
|
10
|
+
## [0.60.0] - 2026-10-01
|
|
11
|
+
|
|
12
|
+
Coordinated Genesis Mesh v0.60.0 release: client support for the Network
|
|
13
|
+
Authority's optional high availability.
|
|
14
|
+
|
|
15
|
+
- Add `baseUrls`: several NA instances without a load balancer. Idempotent
|
|
16
|
+
requests fail over on transport errors and 502/503/504. Non-idempotent
|
|
17
|
+
requests move only when the connection was never made, and are never
|
|
18
|
+
replayed after it may have been.
|
|
19
|
+
- Add `NetworkError.connectFailed`.
|
|
20
|
+
- Add `client.health`: `liveness()`, `readiness()` (typed `/readyz`, not-ready
|
|
21
|
+
returned as `ready: false` with the failing checks), `health()`, and
|
|
22
|
+
`endpoints()` to probe every configured instance.
|
|
23
|
+
- Add `isRetryableConflict()` and the `HaConflictCode` type for the 409 codes
|
|
24
|
+
an NA instance returns when it loses a race the database decided.
|
|
25
|
+
- Add a live HA test (`tests/e2e-ha.test.ts`): two instances on PostgreSQL
|
|
26
|
+
behind nginx, one killed mid-run. CI runs it against core `main`.
|
|
27
|
+
|
|
10
28
|
## [0.59.1] - 2026-10-01
|
|
11
29
|
|
|
12
30
|
Coordinated Genesis Mesh v0.59.1 release: TypeScript support for governed
|
package/README.md
CHANGED
|
@@ -37,6 +37,7 @@ execution recording, evidence-store queries and offline verification.
|
|
|
37
37
|
- [Governed actions and reconciliation](docs/governance.md)
|
|
38
38
|
- [Evidence store, policies, signers and retries](docs/evidence-store.md)
|
|
39
39
|
- [Offline verification and integration tests](docs/offline-verification.md)
|
|
40
|
+
- [High availability: failover, readiness and conflicts](docs/high-availability.md)
|
|
40
41
|
|
|
41
42
|
`governedAction` requires verification keys and explicit expected policies. It
|
|
42
43
|
verifies the signed response and its request context before calling the supplied
|
package/dist/cjs/client.js
CHANGED
|
@@ -21,8 +21,24 @@ function buildPath(path, query) {
|
|
|
21
21
|
const qs = params.toString();
|
|
22
22
|
return qs ? `${path}?${qs}` : path;
|
|
23
23
|
}
|
|
24
|
+
const FAILOVER_STATUS = new Set([502, 503, 504]);
|
|
25
|
+
/** Errors meaning no connection was made, so the request was never sent. */
|
|
26
|
+
const CONNECT_FAILURE_CODES = new Set([
|
|
27
|
+
'ECONNREFUSED', 'ENOTFOUND', 'EHOSTUNREACH', 'ENETUNREACH', 'EAI_AGAIN', 'UND_ERR_CONNECT_TIMEOUT',
|
|
28
|
+
]);
|
|
29
|
+
function isConnectFailure(err) {
|
|
30
|
+
const cause = err?.cause;
|
|
31
|
+
if (!cause)
|
|
32
|
+
return false;
|
|
33
|
+
if (typeof cause.code === 'string' && CONNECT_FAILURE_CODES.has(cause.code))
|
|
34
|
+
return true;
|
|
35
|
+
return Array.isArray(cause.errors) && cause.errors.length > 0
|
|
36
|
+
&& cause.errors.every(e => typeof e?.code === 'string' && CONNECT_FAILURE_CODES.has(e.code));
|
|
37
|
+
}
|
|
24
38
|
class HttpTransport {
|
|
25
|
-
|
|
39
|
+
/** Every configured NA endpoint, in preference order. */
|
|
40
|
+
baseUrls;
|
|
41
|
+
active = 0;
|
|
26
42
|
/** Key ID sent in X-Admin-Key-Id. */
|
|
27
43
|
keyId;
|
|
28
44
|
signer;
|
|
@@ -31,7 +47,14 @@ class HttpTransport {
|
|
|
31
47
|
headers;
|
|
32
48
|
_fetch;
|
|
33
49
|
constructor(options) {
|
|
34
|
-
|
|
50
|
+
const urls = options.baseUrls ?? (options.baseUrl !== undefined ? [options.baseUrl] : []);
|
|
51
|
+
if (urls.length === 0 || urls.some(u => typeof u !== 'string' || !/^https?:\/\//.test(u))) {
|
|
52
|
+
throw new Error('baseUrl or baseUrls must give at least one http(s) URL');
|
|
53
|
+
}
|
|
54
|
+
if (options.baseUrl !== undefined && options.baseUrls !== undefined) {
|
|
55
|
+
throw new Error('pass either baseUrl or baseUrls, not both');
|
|
56
|
+
}
|
|
57
|
+
this.baseUrls = Object.freeze(urls.map(u => u.replace(/\/$/, '')));
|
|
35
58
|
this.signer = options.signer
|
|
36
59
|
?? (options.signingKeyBase64
|
|
37
60
|
? (0, auth_js_1.seedSigner)(options.signingKeyBase64, options.keyId ?? 'operator-local')
|
|
@@ -46,6 +69,15 @@ class HttpTransport {
|
|
|
46
69
|
this.headers = options.headers ?? {};
|
|
47
70
|
this._fetch = options.fetch ?? globalThis.fetch.bind(globalThis);
|
|
48
71
|
}
|
|
72
|
+
/** The endpoint requests currently go to. */
|
|
73
|
+
get baseUrl() {
|
|
74
|
+
return this.baseUrls[this.active];
|
|
75
|
+
}
|
|
76
|
+
/** Move to the next endpoint (no-op with one endpoint). */
|
|
77
|
+
failover() {
|
|
78
|
+
if (this.baseUrls.length > 1)
|
|
79
|
+
this.active = (this.active + 1) % this.baseUrls.length;
|
|
80
|
+
}
|
|
49
81
|
/** Signed admin POST. Not retried unless `idempotent` is set. */
|
|
50
82
|
async adminPost(path, body, idempotent = false) {
|
|
51
83
|
const response = await this._send({ method: 'POST', path, body, admin: true, idempotent });
|
|
@@ -73,30 +105,76 @@ class HttpTransport {
|
|
|
73
105
|
return this._parse(response);
|
|
74
106
|
}
|
|
75
107
|
async _send(spec) {
|
|
76
|
-
|
|
77
|
-
|
|
108
|
+
// Idempotent requests may try every other endpoint once, plus the
|
|
109
|
+
// configured retries (with backoff). Non-idempotent requests move to
|
|
110
|
+
// another endpoint only when the connection was never established; after
|
|
111
|
+
// any other failure they are not replayed, and the next request starts at
|
|
112
|
+
// another endpoint.
|
|
113
|
+
const failovers = this.baseUrls.length - 1;
|
|
114
|
+
const retries = spec.idempotent ? this.retry.attempts : 0;
|
|
115
|
+
let failoversLeft = failovers;
|
|
116
|
+
let retriesUsed = 0;
|
|
117
|
+
for (;;) {
|
|
118
|
+
let response;
|
|
119
|
+
let error;
|
|
78
120
|
try {
|
|
79
|
-
|
|
80
|
-
if (attempt < attempts && RETRYABLE_STATUS.has(response.status)) {
|
|
81
|
-
await this._backoff(attempt);
|
|
82
|
-
continue;
|
|
83
|
-
}
|
|
84
|
-
let body;
|
|
85
|
-
try {
|
|
86
|
-
body = await response.text();
|
|
87
|
-
}
|
|
88
|
-
catch {
|
|
89
|
-
throw new errors_js_1.NetworkError(`Failed to read response body (${spec.method} ${spec.path})`);
|
|
90
|
-
}
|
|
91
|
-
return { ok: response.ok, status: response.status, text: async () => body };
|
|
121
|
+
response = await this._attempt(spec);
|
|
92
122
|
}
|
|
93
123
|
catch (err) {
|
|
94
|
-
if (
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
124
|
+
if (!(err instanceof errors_js_1.NetworkError))
|
|
125
|
+
throw err;
|
|
126
|
+
error = err;
|
|
127
|
+
}
|
|
128
|
+
const failoverWorthy = error !== undefined || (response !== undefined && FAILOVER_STATUS.has(response.status));
|
|
129
|
+
if (failoverWorthy)
|
|
130
|
+
this.failover();
|
|
131
|
+
// A request that may have reached an instance is replayed elsewhere only
|
|
132
|
+
// if it is idempotent; one that never connected can always move on.
|
|
133
|
+
const mayMove = spec.idempotent || (error instanceof errors_js_1.NetworkError && error.connectFailed);
|
|
134
|
+
if (failoverWorthy && mayMove && failoversLeft > 0) {
|
|
135
|
+
failoversLeft -= 1;
|
|
136
|
+
continue;
|
|
99
137
|
}
|
|
138
|
+
const retryable = error !== undefined || (response !== undefined && RETRYABLE_STATUS.has(response.status));
|
|
139
|
+
if (retryable && retriesUsed < retries) {
|
|
140
|
+
await this._backoff(retriesUsed);
|
|
141
|
+
retriesUsed += 1;
|
|
142
|
+
failoversLeft = failovers;
|
|
143
|
+
continue;
|
|
144
|
+
}
|
|
145
|
+
if (error !== undefined)
|
|
146
|
+
throw error;
|
|
147
|
+
return response;
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
/** One request to the active endpoint, with the body fully read (a dropped body is a NetworkError). */
|
|
151
|
+
async _attempt(spec) {
|
|
152
|
+
const res = await this._once(spec);
|
|
153
|
+
let body;
|
|
154
|
+
try {
|
|
155
|
+
body = await res.text();
|
|
156
|
+
}
|
|
157
|
+
catch {
|
|
158
|
+
throw new errors_js_1.NetworkError(`Failed to read response body (${spec.method} ${spec.path})`);
|
|
159
|
+
}
|
|
160
|
+
return { ok: res.ok, status: res.status, text: async () => body };
|
|
161
|
+
}
|
|
162
|
+
/** Unauthenticated GET against one specific endpoint (no failover), e.g. per-instance readiness. */
|
|
163
|
+
async publicGetAt(baseUrl, path) {
|
|
164
|
+
const url = baseUrl.replace(/\/$/, '') + path;
|
|
165
|
+
let response;
|
|
166
|
+
try {
|
|
167
|
+
response = await this._fetch(url, { method: 'GET', headers: { ...this.headers }, signal: AbortSignal.timeout(this.timeout) });
|
|
168
|
+
}
|
|
169
|
+
catch (err) {
|
|
170
|
+
throw new errors_js_1.NetworkError(`GET ${url} failed: ${err.message}`);
|
|
171
|
+
}
|
|
172
|
+
const text = await response.text();
|
|
173
|
+
try {
|
|
174
|
+
return { status: response.status, body: (0, auth_js_1.parseJson)(text) };
|
|
175
|
+
}
|
|
176
|
+
catch {
|
|
177
|
+
throw new errors_js_1.NetworkError(`Failed to parse response body from ${url} (HTTP ${response.status})`);
|
|
100
178
|
}
|
|
101
179
|
}
|
|
102
180
|
async _once(spec) {
|
|
@@ -117,7 +195,9 @@ class HttpTransport {
|
|
|
117
195
|
return await this._fetch(this.baseUrl + path, init);
|
|
118
196
|
}
|
|
119
197
|
catch (err) {
|
|
120
|
-
|
|
198
|
+
const error = new errors_js_1.NetworkError(`${spec.method} ${spec.path} failed: ${err.message}`);
|
|
199
|
+
error.connectFailed = isConnectFailure(err);
|
|
200
|
+
throw error;
|
|
121
201
|
}
|
|
122
202
|
}
|
|
123
203
|
_backoff(attempt) {
|
package/dist/cjs/errors.js
CHANGED
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
4
|
exports.BadRequestError = exports.NetworkError = exports.RateLimitError = exports.NotFoundError = exports.ServiceUnavailableError = exports.ConflictError = exports.ForbiddenError = exports.ValidationError = exports.UnauthorizedError = exports.GenesisMeshError = void 0;
|
|
5
5
|
exports.fromHttpError = fromHttpError;
|
|
6
|
+
exports.isRetryableConflict = isRetryableConflict;
|
|
6
7
|
class GenesisMeshError extends Error {
|
|
7
8
|
code;
|
|
8
9
|
status;
|
|
@@ -70,6 +71,12 @@ class RateLimitError extends GenesisMeshError {
|
|
|
70
71
|
}
|
|
71
72
|
exports.RateLimitError = RateLimitError;
|
|
72
73
|
class NetworkError extends GenesisMeshError {
|
|
74
|
+
/**
|
|
75
|
+
* True when the connection could not be established (refused, unresolvable,
|
|
76
|
+
* unreachable): the request never reached the NA, so another instance may
|
|
77
|
+
* take it even when it is not idempotent (v0.60).
|
|
78
|
+
*/
|
|
79
|
+
connectFailed = false;
|
|
73
80
|
constructor(message, code = 'network_error') {
|
|
74
81
|
super(message, code, 0);
|
|
75
82
|
this.name = 'NetworkError';
|
|
@@ -127,3 +134,16 @@ function errorForStatus(status, message, code) {
|
|
|
127
134
|
default: return new GenesisMeshError(message, code, status);
|
|
128
135
|
}
|
|
129
136
|
}
|
|
137
|
+
const HA_CONFLICT_CODES = new Set([
|
|
138
|
+
'boundary_policy_activation_conflict',
|
|
139
|
+
'boundary_policy_version_conflict',
|
|
140
|
+
'crl_publish_contention',
|
|
141
|
+
'retention_in_progress',
|
|
142
|
+
]);
|
|
143
|
+
/**
|
|
144
|
+
* True for a 409 that only means another NA instance won a race the database
|
|
145
|
+
* decided (v0.60). The request changed nothing and can be retried.
|
|
146
|
+
*/
|
|
147
|
+
function isRetryableConflict(err) {
|
|
148
|
+
return err instanceof ConflictError && HA_CONFLICT_CODES.has(err.code);
|
|
149
|
+
}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.HealthClient = void 0;
|
|
4
|
+
const errors_js_1 = require("./errors.js");
|
|
5
|
+
function normalise(body, ready) {
|
|
6
|
+
return { ...body, status: ready ? 'ready' : 'not_ready', ready };
|
|
7
|
+
}
|
|
8
|
+
/** Liveness, readiness and health of the Network Authority (v0.60). */
|
|
9
|
+
class HealthClient {
|
|
10
|
+
http;
|
|
11
|
+
constructor(http) {
|
|
12
|
+
this.http = http;
|
|
13
|
+
}
|
|
14
|
+
/** Process liveness only (`GET /healthz`). */
|
|
15
|
+
liveness() {
|
|
16
|
+
return this.http.publicGet('/healthz');
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Readiness (`GET /readyz`): database writable at the expected schema, key
|
|
20
|
+
* loaded, shared state in HA mode. A not-ready NA (503 `service_not_ready`)
|
|
21
|
+
* is returned as `ready: false` with the failing checks, not thrown. With
|
|
22
|
+
* several `baseUrls`, a not-ready instance is skipped for the next one.
|
|
23
|
+
*/
|
|
24
|
+
async readiness() {
|
|
25
|
+
try {
|
|
26
|
+
return normalise(await this.http.publicGet('/readyz'), true);
|
|
27
|
+
}
|
|
28
|
+
catch (err) {
|
|
29
|
+
if (err instanceof errors_js_1.ServiceUnavailableError && err.code === 'service_not_ready') {
|
|
30
|
+
return normalise(err.details, false);
|
|
31
|
+
}
|
|
32
|
+
throw err;
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
/** Network, version, boundary policy health and evidence store mode (`GET /health`). */
|
|
36
|
+
health() {
|
|
37
|
+
return this.http.publicGet('/health');
|
|
38
|
+
}
|
|
39
|
+
/** Probe every configured endpoint's `/readyz` directly, for monitoring an HA deployment. */
|
|
40
|
+
async endpoints() {
|
|
41
|
+
return Promise.all(this.http.baseUrls.map(async (baseUrl) => {
|
|
42
|
+
try {
|
|
43
|
+
const { status, body } = await this.http.publicGetAt(baseUrl, '/readyz');
|
|
44
|
+
if (status === 200)
|
|
45
|
+
return { base_url: baseUrl, reachable: true, ready: true, readiness: normalise(body, true) };
|
|
46
|
+
const details = body?.['error']?.details;
|
|
47
|
+
return {
|
|
48
|
+
base_url: baseUrl, reachable: true, ready: false,
|
|
49
|
+
...(details ? { readiness: normalise(details, false) } : {}),
|
|
50
|
+
error: `HTTP ${status}`,
|
|
51
|
+
};
|
|
52
|
+
}
|
|
53
|
+
catch (err) {
|
|
54
|
+
return { base_url: baseUrl, reachable: false, ready: false, error: err.message };
|
|
55
|
+
}
|
|
56
|
+
}));
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
exports.HealthClient = HealthClient;
|
package/dist/cjs/index.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
4
|
-
exports.BadRequestError = exports.NetworkError = exports.ServiceUnavailableError = exports.RateLimitError = exports.ConflictError = exports.NotFoundError = exports.ValidationError = exports.ForbiddenError = exports.UnauthorizedError = exports.GenesisMeshError = exports.DecisionVerificationError = exports.GovernedActionError = exports.reconcileResources = exports.summarizeDecision = exports.governedAction = exports.parseTimestampMicros = exports.parseExportLines = exports.verifyEvidenceEvents = exports.verifyExecutionSignature = void 0;
|
|
3
|
+
exports.verifyRevocationFeedSignature = exports.verifyJustificationSignature = exports.verifyPolicySignature = exports.verifyAttestationSignature = exports.verifyDecisionSignature = exports.verifyBoundaryDecision = exports.MAX_METADATA_BYTES = exports.SecretMaterialError = exports.checkMetadataOnly = exports.ExecutionRecorder = exports.payloadDigest = exports.entryDigest = exports.checkpointCanonical = exports.justificationCanonical = exports.policySetDigest = exports.policyDigest = exports.policyCanonical = exports.revocationFeedCanonical = exports.attestationDigest = exports.attestationCanonical = exports.executionDigest = exports.executionCanonical = exports.decisionCanonical = exports.RESOURCE_CHAIN_FIELDS = exports.buildAdminHeadersWithSigner = exports.buildAdminHeaders = exports.pythonTimestamp = exports.verifyCanonical = exports.signCanonical = exports.seedSigner = exports.publicKeyFromSeed = exports.verifyBytes = exports.signBytes = exports.sha256Hex = exports.parseJson = exports.canonicalDigest = exports.canonicalJson = exports.buildPath = exports.HttpTransport = exports.DataUsageClient = exports.ConsensusClient = exports.DisclosureClient = exports.AttestationClient = exports.HealthClient = exports.EvidenceStoreClient = exports.EvidenceClient = exports.PolicyClient = exports.BoundaryClient = exports.AgreementClient = exports.GenesisMeshClient = void 0;
|
|
4
|
+
exports.BadRequestError = exports.NetworkError = exports.isRetryableConflict = exports.ServiceUnavailableError = exports.RateLimitError = exports.ConflictError = exports.NotFoundError = exports.ValidationError = exports.ForbiddenError = exports.UnauthorizedError = exports.GenesisMeshError = exports.DecisionVerificationError = exports.GovernedActionError = exports.reconcileResources = exports.summarizeDecision = exports.governedAction = exports.parseTimestampMicros = exports.parseExportLines = exports.verifyEvidenceEvents = exports.verifyExecutionSignature = exports.verifyRetentionCheckpoint = void 0;
|
|
5
5
|
const client_js_1 = require("./client.js");
|
|
6
6
|
const agreement_js_1 = require("./agreement.js");
|
|
7
7
|
const boundary_js_1 = require("./boundary.js");
|
|
@@ -12,6 +12,7 @@ const consensus_js_1 = require("./consensus.js");
|
|
|
12
12
|
const data_usage_js_1 = require("./data_usage.js");
|
|
13
13
|
const policy_js_1 = require("./policy.js");
|
|
14
14
|
const evidence_store_js_1 = require("./evidence_store.js");
|
|
15
|
+
const health_js_1 = require("./health.js");
|
|
15
16
|
class GenesisMeshClient {
|
|
16
17
|
agreement;
|
|
17
18
|
boundary;
|
|
@@ -23,6 +24,8 @@ class GenesisMeshClient {
|
|
|
23
24
|
disclosure;
|
|
24
25
|
consensus;
|
|
25
26
|
dataUsage;
|
|
27
|
+
/** Liveness, readiness and health (v0.60). */
|
|
28
|
+
health;
|
|
26
29
|
constructor(options) {
|
|
27
30
|
const http = new client_js_1.HttpTransport(options);
|
|
28
31
|
this.agreement = new agreement_js_1.AgreementClient(http);
|
|
@@ -30,6 +33,7 @@ class GenesisMeshClient {
|
|
|
30
33
|
this.policy = new policy_js_1.PolicyClient(http);
|
|
31
34
|
this.evidence = new evidence_js_1.EvidenceClient(http);
|
|
32
35
|
this.evidenceStore = new evidence_store_js_1.EvidenceStoreClient(http);
|
|
36
|
+
this.health = new health_js_1.HealthClient(http);
|
|
33
37
|
this.attestation = new attestation_js_1.AttestationClient(http);
|
|
34
38
|
this.disclosure = new disclosure_js_1.DisclosureClient(http);
|
|
35
39
|
this.consensus = new consensus_js_1.ConsensusClient(http);
|
|
@@ -48,6 +52,8 @@ var evidence_js_2 = require("./evidence.js");
|
|
|
48
52
|
Object.defineProperty(exports, "EvidenceClient", { enumerable: true, get: function () { return evidence_js_2.EvidenceClient; } });
|
|
49
53
|
var evidence_store_js_2 = require("./evidence_store.js");
|
|
50
54
|
Object.defineProperty(exports, "EvidenceStoreClient", { enumerable: true, get: function () { return evidence_store_js_2.EvidenceStoreClient; } });
|
|
55
|
+
var health_js_2 = require("./health.js");
|
|
56
|
+
Object.defineProperty(exports, "HealthClient", { enumerable: true, get: function () { return health_js_2.HealthClient; } });
|
|
51
57
|
var attestation_js_2 = require("./attestation.js");
|
|
52
58
|
Object.defineProperty(exports, "AttestationClient", { enumerable: true, get: function () { return attestation_js_2.AttestationClient; } });
|
|
53
59
|
var disclosure_js_2 = require("./disclosure.js");
|
|
@@ -127,5 +133,6 @@ Object.defineProperty(exports, "NotFoundError", { enumerable: true, get: functio
|
|
|
127
133
|
Object.defineProperty(exports, "ConflictError", { enumerable: true, get: function () { return errors_js_1.ConflictError; } });
|
|
128
134
|
Object.defineProperty(exports, "RateLimitError", { enumerable: true, get: function () { return errors_js_1.RateLimitError; } });
|
|
129
135
|
Object.defineProperty(exports, "ServiceUnavailableError", { enumerable: true, get: function () { return errors_js_1.ServiceUnavailableError; } });
|
|
136
|
+
Object.defineProperty(exports, "isRetryableConflict", { enumerable: true, get: function () { return errors_js_1.isRetryableConflict; } });
|
|
130
137
|
Object.defineProperty(exports, "NetworkError", { enumerable: true, get: function () { return errors_js_1.NetworkError; } });
|
|
131
138
|
Object.defineProperty(exports, "BadRequestError", { enumerable: true, get: function () { return errors_js_1.BadRequestError; } });
|
package/dist/esm/client.js
CHANGED
|
@@ -17,8 +17,24 @@ export function buildPath(path, query) {
|
|
|
17
17
|
const qs = params.toString();
|
|
18
18
|
return qs ? `${path}?${qs}` : path;
|
|
19
19
|
}
|
|
20
|
+
const FAILOVER_STATUS = new Set([502, 503, 504]);
|
|
21
|
+
/** Errors meaning no connection was made, so the request was never sent. */
|
|
22
|
+
const CONNECT_FAILURE_CODES = new Set([
|
|
23
|
+
'ECONNREFUSED', 'ENOTFOUND', 'EHOSTUNREACH', 'ENETUNREACH', 'EAI_AGAIN', 'UND_ERR_CONNECT_TIMEOUT',
|
|
24
|
+
]);
|
|
25
|
+
function isConnectFailure(err) {
|
|
26
|
+
const cause = err?.cause;
|
|
27
|
+
if (!cause)
|
|
28
|
+
return false;
|
|
29
|
+
if (typeof cause.code === 'string' && CONNECT_FAILURE_CODES.has(cause.code))
|
|
30
|
+
return true;
|
|
31
|
+
return Array.isArray(cause.errors) && cause.errors.length > 0
|
|
32
|
+
&& cause.errors.every(e => typeof e?.code === 'string' && CONNECT_FAILURE_CODES.has(e.code));
|
|
33
|
+
}
|
|
20
34
|
export class HttpTransport {
|
|
21
|
-
|
|
35
|
+
/** Every configured NA endpoint, in preference order. */
|
|
36
|
+
baseUrls;
|
|
37
|
+
active = 0;
|
|
22
38
|
/** Key ID sent in X-Admin-Key-Id. */
|
|
23
39
|
keyId;
|
|
24
40
|
signer;
|
|
@@ -27,7 +43,14 @@ export class HttpTransport {
|
|
|
27
43
|
headers;
|
|
28
44
|
_fetch;
|
|
29
45
|
constructor(options) {
|
|
30
|
-
|
|
46
|
+
const urls = options.baseUrls ?? (options.baseUrl !== undefined ? [options.baseUrl] : []);
|
|
47
|
+
if (urls.length === 0 || urls.some(u => typeof u !== 'string' || !/^https?:\/\//.test(u))) {
|
|
48
|
+
throw new Error('baseUrl or baseUrls must give at least one http(s) URL');
|
|
49
|
+
}
|
|
50
|
+
if (options.baseUrl !== undefined && options.baseUrls !== undefined) {
|
|
51
|
+
throw new Error('pass either baseUrl or baseUrls, not both');
|
|
52
|
+
}
|
|
53
|
+
this.baseUrls = Object.freeze(urls.map(u => u.replace(/\/$/, '')));
|
|
31
54
|
this.signer = options.signer
|
|
32
55
|
?? (options.signingKeyBase64
|
|
33
56
|
? seedSigner(options.signingKeyBase64, options.keyId ?? 'operator-local')
|
|
@@ -42,6 +65,15 @@ export class HttpTransport {
|
|
|
42
65
|
this.headers = options.headers ?? {};
|
|
43
66
|
this._fetch = options.fetch ?? globalThis.fetch.bind(globalThis);
|
|
44
67
|
}
|
|
68
|
+
/** The endpoint requests currently go to. */
|
|
69
|
+
get baseUrl() {
|
|
70
|
+
return this.baseUrls[this.active];
|
|
71
|
+
}
|
|
72
|
+
/** Move to the next endpoint (no-op with one endpoint). */
|
|
73
|
+
failover() {
|
|
74
|
+
if (this.baseUrls.length > 1)
|
|
75
|
+
this.active = (this.active + 1) % this.baseUrls.length;
|
|
76
|
+
}
|
|
45
77
|
/** Signed admin POST. Not retried unless `idempotent` is set. */
|
|
46
78
|
async adminPost(path, body, idempotent = false) {
|
|
47
79
|
const response = await this._send({ method: 'POST', path, body, admin: true, idempotent });
|
|
@@ -69,30 +101,76 @@ export class HttpTransport {
|
|
|
69
101
|
return this._parse(response);
|
|
70
102
|
}
|
|
71
103
|
async _send(spec) {
|
|
72
|
-
|
|
73
|
-
|
|
104
|
+
// Idempotent requests may try every other endpoint once, plus the
|
|
105
|
+
// configured retries (with backoff). Non-idempotent requests move to
|
|
106
|
+
// another endpoint only when the connection was never established; after
|
|
107
|
+
// any other failure they are not replayed, and the next request starts at
|
|
108
|
+
// another endpoint.
|
|
109
|
+
const failovers = this.baseUrls.length - 1;
|
|
110
|
+
const retries = spec.idempotent ? this.retry.attempts : 0;
|
|
111
|
+
let failoversLeft = failovers;
|
|
112
|
+
let retriesUsed = 0;
|
|
113
|
+
for (;;) {
|
|
114
|
+
let response;
|
|
115
|
+
let error;
|
|
74
116
|
try {
|
|
75
|
-
|
|
76
|
-
if (attempt < attempts && RETRYABLE_STATUS.has(response.status)) {
|
|
77
|
-
await this._backoff(attempt);
|
|
78
|
-
continue;
|
|
79
|
-
}
|
|
80
|
-
let body;
|
|
81
|
-
try {
|
|
82
|
-
body = await response.text();
|
|
83
|
-
}
|
|
84
|
-
catch {
|
|
85
|
-
throw new NetworkError(`Failed to read response body (${spec.method} ${spec.path})`);
|
|
86
|
-
}
|
|
87
|
-
return { ok: response.ok, status: response.status, text: async () => body };
|
|
117
|
+
response = await this._attempt(spec);
|
|
88
118
|
}
|
|
89
119
|
catch (err) {
|
|
90
|
-
if (
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
120
|
+
if (!(err instanceof NetworkError))
|
|
121
|
+
throw err;
|
|
122
|
+
error = err;
|
|
123
|
+
}
|
|
124
|
+
const failoverWorthy = error !== undefined || (response !== undefined && FAILOVER_STATUS.has(response.status));
|
|
125
|
+
if (failoverWorthy)
|
|
126
|
+
this.failover();
|
|
127
|
+
// A request that may have reached an instance is replayed elsewhere only
|
|
128
|
+
// if it is idempotent; one that never connected can always move on.
|
|
129
|
+
const mayMove = spec.idempotent || (error instanceof NetworkError && error.connectFailed);
|
|
130
|
+
if (failoverWorthy && mayMove && failoversLeft > 0) {
|
|
131
|
+
failoversLeft -= 1;
|
|
132
|
+
continue;
|
|
95
133
|
}
|
|
134
|
+
const retryable = error !== undefined || (response !== undefined && RETRYABLE_STATUS.has(response.status));
|
|
135
|
+
if (retryable && retriesUsed < retries) {
|
|
136
|
+
await this._backoff(retriesUsed);
|
|
137
|
+
retriesUsed += 1;
|
|
138
|
+
failoversLeft = failovers;
|
|
139
|
+
continue;
|
|
140
|
+
}
|
|
141
|
+
if (error !== undefined)
|
|
142
|
+
throw error;
|
|
143
|
+
return response;
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
/** One request to the active endpoint, with the body fully read (a dropped body is a NetworkError). */
|
|
147
|
+
async _attempt(spec) {
|
|
148
|
+
const res = await this._once(spec);
|
|
149
|
+
let body;
|
|
150
|
+
try {
|
|
151
|
+
body = await res.text();
|
|
152
|
+
}
|
|
153
|
+
catch {
|
|
154
|
+
throw new NetworkError(`Failed to read response body (${spec.method} ${spec.path})`);
|
|
155
|
+
}
|
|
156
|
+
return { ok: res.ok, status: res.status, text: async () => body };
|
|
157
|
+
}
|
|
158
|
+
/** Unauthenticated GET against one specific endpoint (no failover), e.g. per-instance readiness. */
|
|
159
|
+
async publicGetAt(baseUrl, path) {
|
|
160
|
+
const url = baseUrl.replace(/\/$/, '') + path;
|
|
161
|
+
let response;
|
|
162
|
+
try {
|
|
163
|
+
response = await this._fetch(url, { method: 'GET', headers: { ...this.headers }, signal: AbortSignal.timeout(this.timeout) });
|
|
164
|
+
}
|
|
165
|
+
catch (err) {
|
|
166
|
+
throw new NetworkError(`GET ${url} failed: ${err.message}`);
|
|
167
|
+
}
|
|
168
|
+
const text = await response.text();
|
|
169
|
+
try {
|
|
170
|
+
return { status: response.status, body: parseJson(text) };
|
|
171
|
+
}
|
|
172
|
+
catch {
|
|
173
|
+
throw new NetworkError(`Failed to parse response body from ${url} (HTTP ${response.status})`);
|
|
96
174
|
}
|
|
97
175
|
}
|
|
98
176
|
async _once(spec) {
|
|
@@ -113,7 +191,9 @@ export class HttpTransport {
|
|
|
113
191
|
return await this._fetch(this.baseUrl + path, init);
|
|
114
192
|
}
|
|
115
193
|
catch (err) {
|
|
116
|
-
|
|
194
|
+
const error = new NetworkError(`${spec.method} ${spec.path} failed: ${err.message}`);
|
|
195
|
+
error.connectFailed = isConnectFailure(err);
|
|
196
|
+
throw error;
|
|
117
197
|
}
|
|
118
198
|
}
|
|
119
199
|
_backoff(attempt) {
|
package/dist/esm/client.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/client.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,2BAA2B,EAAE,aAAa,EAAE,SAAS,EAAE,UAAU,EAAe,MAAM,WAAW,CAAC;AAC3G,OAAO,EAAE,aAAa,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/client.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,2BAA2B,EAAE,aAAa,EAAE,SAAS,EAAE,UAAU,EAAe,MAAM,WAAW,CAAC;AAC3G,OAAO,EAAE,aAAa,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAiD5E,MAAM,gBAAgB,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;AAEvD,MAAM,UAAU,SAAS,CAAC,IAAY,EAAE,KAAa;IACnD,IAAI,CAAC,KAAK;QAAE,OAAO,IAAI,CAAC;IACxB,MAAM,MAAM,GAAG,IAAI,eAAe,EAAE,CAAC;IACrC,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACjD,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI;YAAE,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;IAC/E,CAAC;IACD,MAAM,EAAE,GAAG,MAAM,CAAC,QAAQ,EAAE,CAAC;IAC7B,OAAO,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;AACrC,CAAC;AAED,MAAM,eAAe,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;AAEjD,4EAA4E;AAC5E,MAAM,qBAAqB,GAAG,IAAI,GAAG,CAAC;IACpC,cAAc,EAAE,WAAW,EAAE,cAAc,EAAE,aAAa,EAAE,WAAW,EAAE,yBAAyB;CACnG,CAAC,CAAC;AAEH,SAAS,gBAAgB,CAAC,GAAY;IACpC,MAAM,KAAK,GAAI,GAAiF,EAAE,KAAK,CAAC;IACxG,IAAI,CAAC,KAAK;QAAE,OAAO,KAAK,CAAC;IACzB,IAAI,OAAO,KAAK,CAAC,IAAI,KAAK,QAAQ,IAAI,qBAAqB,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC;IACzF,OAAO,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC;WACxD,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,IAAI,KAAK,QAAQ,IAAI,qBAAqB,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;AACjG,CAAC;AAED,MAAM,OAAO,aAAa;IACxB,yDAAyD;IAChD,QAAQ,CAAoB;IAC7B,MAAM,GAAG,CAAC,CAAC;IACnB,qCAAqC;IAC5B,KAAK,CAAS;IACN,MAAM,CAAU;IAChB,OAAO,CAAS;IAChB,KAAK,CAAyB;IAC9B,OAAO,CAAyB;IAChC,MAAM,CAA0B;IAEjD,YAAY,OAAsB;QAChC,MAAM,IAAI,GAAG,OAAO,CAAC,QAAQ,IAAI,CAAC,OAAO,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QAC1F,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YAC1F,MAAM,IAAI,KAAK,CAAC,wDAAwD,CAAC,CAAC;QAC5E,CAAC;QACD,IAAI,OAAO,CAAC,OAAO,KAAK,SAAS,IAAI,OAAO,CAAC,QAAQ,KAAK,SAAS,EAAE,CAAC;YACpE,MAAM,IAAI,KAAK,CAAC,2CAA2C,CAAC,CAAC;QAC/D,CAAC;QACD,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;QACnE,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM;eACvB,CAAC,OAAO,CAAC,gBAAgB;gBAC1B,CAAC,CAAC,UAAU,CAAC,OAAO,CAAC,gBAAgB,EAAE,OAAO,CAAC,KAAK,IAAI,gBAAgB,CAAC;gBACzE,CAAC,CAAC,SAAS,CAAC,CAAC;QACjB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,MAAM,EAAE,KAAK,IAAI,OAAO,CAAC,KAAK,IAAI,gBAAgB,CAAC;QACrE,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,IAAI,MAAM,CAAC;QACzC,IAAI,CAAC,KAAK,GAAG,EAAE,QAAQ,EAAE,OAAO,CAAC,KAAK,EAAE,QAAQ,IAAI,CAAC,EAAE,WAAW,EAAE,OAAO,CAAC,KAAK,EAAE,WAAW,IAAI,GAAG,EAAE,CAAC;QACxG,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,EAAE;eAChG,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,WAAW,GAAG,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,WAAW,GAAG,MAAM,EAAE,CAAC;YAC/G,MAAM,IAAI,KAAK,CAAC,4EAA4E,CAAC,CAAC;QAChG,CAAC;QACD,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,IAAI,EAAE,CAAC;QACrC,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,KAAK,IAAI,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IACnE,CAAC;IAED,6CAA6C;IAC7C,IAAI,OAAO;QACT,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAW,CAAC;IAC9C,CAAC;IAED,2DAA2D;IACnD,QAAQ;QACd,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC;YAAE,IAAI,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC;IACvF,CAAC;IAED,iEAAiE;IACjE,KAAK,CAAC,SAAS,CAAI,IAAY,EAAE,IAAa,EAAE,UAAU,GAAG,KAAK;QAChE,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,CAAC;QAC3F,OAAO,IAAI,CAAC,MAAM,CAAI,QAAQ,CAAC,CAAC;IAClC,CAAC;IAED,2EAA2E;IAC3E,KAAK,CAAC,QAAQ,CAAI,IAAY,EAAE,KAAa;QAC3C,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC;QACjG,OAAO,IAAI,CAAC,MAAM,CAAI,QAAQ,CAAC,CAAC;IAClC,CAAC;IAED,6EAA6E;IAC7E,KAAK,CAAC,YAAY,CAAC,IAAY,EAAE,KAAa;QAC5C,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC;QACjG,IAAI,CAAC,QAAQ,CAAC,EAAE;YAAE,OAAO,IAAI,CAAC,MAAM,CAAQ,QAAQ,CAAC,CAAC;QACtD,OAAO,QAAQ,CAAC,IAAI,EAAE,CAAC;IACzB,CAAC;IAED,8FAA8F;IAC9F,KAAK,CAAC,UAAU,CAAI,IAAY,EAAE,IAAa,EAAE,UAAU,GAAG,KAAK;QACjE,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,UAAU,EAAE,CAAC,CAAC;QAC5F,OAAO,IAAI,CAAC,MAAM,CAAI,QAAQ,CAAC,CAAC;IAClC,CAAC;IAED,KAAK,CAAC,SAAS,CAAI,IAAY,EAAE,KAAa;QAC5C,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC;QAClG,OAAO,IAAI,CAAC,MAAM,CAAI,QAAQ,CAAC,CAAC;IAClC,CAAC;IAEO,KAAK,CAAC,KAAK,CAAC,IAAiB;QACnC,kEAAkE;QAClE,qEAAqE;QACrE,yEAAyE;QACzE,0EAA0E;QAC1E,oBAAoB;QACpB,MAAM,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC;QAC3C,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;QAC1D,IAAI,aAAa,GAAG,SAAS,CAAC;QAC9B,IAAI,WAAW,GAAG,CAAC,CAAC;QACpB,SAAS,CAAC;YACR,IAAI,QAAsC,CAAC;YAC3C,IAAI,KAAc,CAAC;YACnB,IAAI,CAAC;gBACH,QAAQ,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;YACvC,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,IAAI,CAAC,CAAC,GAAG,YAAY,YAAY,CAAC;oBAAE,MAAM,GAAG,CAAC;gBAC9C,KAAK,GAAG,GAAG,CAAC;YACd,CAAC;YACD,MAAM,cAAc,GAAG,KAAK,KAAK,SAAS,IAAI,CAAC,QAAQ,KAAK,SAAS,IAAI,eAAe,CAAC,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;YAC/G,IAAI,cAAc;gBAAE,IAAI,CAAC,QAAQ,EAAE,CAAC;YACpC,yEAAyE;YACzE,oEAAoE;YACpE,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,IAAI,CAAC,KAAK,YAAY,YAAY,IAAI,KAAK,CAAC,aAAa,CAAC,CAAC;YAC1F,IAAI,cAAc,IAAI,OAAO,IAAI,aAAa,GAAG,CAAC,EAAE,CAAC;gBACnD,aAAa,IAAI,CAAC,CAAC;gBACnB,SAAS;YACX,CAAC;YACD,MAAM,SAAS,GAAG,KAAK,KAAK,SAAS,IAAI,CAAC,QAAQ,KAAK,SAAS,IAAI,gBAAgB,CAAC,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;YAC3G,IAAI,SAAS,IAAI,WAAW,GAAG,OAAO,EAAE,CAAC;gBACvC,MAAM,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;gBACjC,WAAW,IAAI,CAAC,CAAC;gBACjB,aAAa,GAAG,SAAS,CAAC;gBAC1B,SAAS;YACX,CAAC;YACD,IAAI,KAAK,KAAK,SAAS;gBAAE,MAAM,KAAK,CAAC;YACrC,OAAO,QAA4B,CAAC;QACtC,CAAC;IACH,CAAC;IAED,uGAAuG;IAC/F,KAAK,CAAC,QAAQ,CAAC,IAAiB;QACtC,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACnC,IAAI,IAAY,CAAC;QACjB,IAAI,CAAC;YACH,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC;QAC1B,CAAC;QAAC,MAAM,CAAC;YACP,MAAM,IAAI,YAAY,CAAC,iCAAiC,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC;QACvF,CAAC;QACD,OAAO,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,IAAI,EAAE,KAAK,IAAI,EAAE,CAAC,IAAI,EAAE,CAAC;IACpE,CAAC;IAED,oGAAoG;IACpG,KAAK,CAAC,WAAW,CAAI,OAAe,EAAE,IAAY;QAChD,MAAM,GAAG,GAAG,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,GAAG,IAAI,CAAC;QAC9C,IAAI,QAAkB,CAAC;QACvB,IAAI,CAAC;YACH,QAAQ,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QAChI,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,IAAI,YAAY,CAAC,OAAO,GAAG,YAAa,GAAa,CAAC,OAAO,EAAE,CAAC,CAAC;QACzE,CAAC;QACD,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;QACnC,IAAI,CAAC;YACH,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAC,MAAM,EAAE,IAAI,EAAE,SAAS,CAAC,IAAI,CAAM,EAAE,CAAC;QACjE,CAAC;QAAC,MAAM,CAAC;YACP,MAAM,IAAI,YAAY,CAAC,sCAAsC,GAAG,UAAU,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC;QAChG,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,KAAK,CAAC,IAAiB;QACnC,MAAM,OAAO,GAA2B,EAAE,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC;QAC5D,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;gBACjB,MAAM,IAAI,KAAK,CAAC,kEAAkE,CAAC,CAAC;YACtF,CAAC;YACD,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,MAAM,2BAA2B,CAAC,IAAI,CAAC,MAAM,KAAK,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;QACjH,CAAC;QACD,MAAM,IAAI,GAAgB,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;QACtG,IAAI,IAAI,CAAC,MAAM,KAAK,MAAM,EAAE,CAAC;YAC3B,OAAO,CAAC,cAAc,CAAC,GAAG,kBAAkB,CAAC;YAC7C,IAAI,CAAC,IAAI,GAAG,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACvC,CAAC;QACD,MAAM,IAAI,GAAG,SAAS,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;QAC9C,IAAI,CAAC;YACH,OAAO,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,GAAG,IAAI,EAAE,IAAI,CAAC,CAAC;QACtD,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,KAAK,GAAG,IAAI,YAAY,CAAC,GAAG,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,IAAI,YAAa,GAAa,CAAC,OAAO,EAAE,CAAC,CAAC;YAChG,KAAK,CAAC,aAAa,GAAG,gBAAgB,CAAC,GAAG,CAAC,CAAC;YAC5C,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;IAEO,QAAQ,CAAC,OAAe;QAC9B,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,WAAW,GAAG,CAAC,IAAI,OAAO,CAAC,CAAC;QACtE,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC;IAC5D,CAAC;IAEO,KAAK,CAAC,MAAM,CAAI,QAA0B;QAChD,IAAI,IAAa,CAAC;QAClB,IAAI,CAAC;YACH,IAAI,GAAG,SAAS,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC;QAC1C,CAAC;QAAC,MAAM,CAAC;YACP,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;gBACjB,MAAM,IAAI,gBAAgB,CAAC,QAAQ,QAAQ,CAAC,MAAM,uBAAuB,EAAE,SAAS,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;YACzG,CAAC;YACD,MAAM,IAAI,YAAY,CAAC,uCAAuC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC;QACpF,CAAC;QACD,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;YACjB,MAAM,aAAa,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,IAAI,IAAI,EAAE,CAA4B,CAAC,CAAC;QAChF,CAAC;QACD,OAAO,IAAS,CAAC;IACnB,CAAC;CACF"}
|
package/dist/esm/errors.js
CHANGED
|
@@ -58,6 +58,12 @@ export class RateLimitError extends GenesisMeshError {
|
|
|
58
58
|
}
|
|
59
59
|
}
|
|
60
60
|
export class NetworkError extends GenesisMeshError {
|
|
61
|
+
/**
|
|
62
|
+
* True when the connection could not be established (refused, unresolvable,
|
|
63
|
+
* unreachable): the request never reached the NA, so another instance may
|
|
64
|
+
* take it even when it is not idempotent (v0.60).
|
|
65
|
+
*/
|
|
66
|
+
connectFailed = false;
|
|
61
67
|
constructor(message, code = 'network_error') {
|
|
62
68
|
super(message, code, 0);
|
|
63
69
|
this.name = 'NetworkError';
|
|
@@ -113,4 +119,17 @@ function errorForStatus(status, message, code) {
|
|
|
113
119
|
default: return new GenesisMeshError(message, code, status);
|
|
114
120
|
}
|
|
115
121
|
}
|
|
122
|
+
const HA_CONFLICT_CODES = new Set([
|
|
123
|
+
'boundary_policy_activation_conflict',
|
|
124
|
+
'boundary_policy_version_conflict',
|
|
125
|
+
'crl_publish_contention',
|
|
126
|
+
'retention_in_progress',
|
|
127
|
+
]);
|
|
128
|
+
/**
|
|
129
|
+
* True for a 409 that only means another NA instance won a race the database
|
|
130
|
+
* decided (v0.60). The request changed nothing and can be retried.
|
|
131
|
+
*/
|
|
132
|
+
export function isRetryableConflict(err) {
|
|
133
|
+
return err instanceof ConflictError && HA_CONFLICT_CODES.has(err.code);
|
|
134
|
+
}
|
|
116
135
|
//# sourceMappingURL=errors.js.map
|
package/dist/esm/errors.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/errors.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/errors.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import { ServiceUnavailableError } from './errors.js';
|
|
2
|
+
function normalise(body, ready) {
|
|
3
|
+
return { ...body, status: ready ? 'ready' : 'not_ready', ready };
|
|
4
|
+
}
|
|
5
|
+
/** Liveness, readiness and health of the Network Authority (v0.60). */
|
|
6
|
+
export class HealthClient {
|
|
7
|
+
http;
|
|
8
|
+
constructor(http) {
|
|
9
|
+
this.http = http;
|
|
10
|
+
}
|
|
11
|
+
/** Process liveness only (`GET /healthz`). */
|
|
12
|
+
liveness() {
|
|
13
|
+
return this.http.publicGet('/healthz');
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Readiness (`GET /readyz`): database writable at the expected schema, key
|
|
17
|
+
* loaded, shared state in HA mode. A not-ready NA (503 `service_not_ready`)
|
|
18
|
+
* is returned as `ready: false` with the failing checks, not thrown. With
|
|
19
|
+
* several `baseUrls`, a not-ready instance is skipped for the next one.
|
|
20
|
+
*/
|
|
21
|
+
async readiness() {
|
|
22
|
+
try {
|
|
23
|
+
return normalise(await this.http.publicGet('/readyz'), true);
|
|
24
|
+
}
|
|
25
|
+
catch (err) {
|
|
26
|
+
if (err instanceof ServiceUnavailableError && err.code === 'service_not_ready') {
|
|
27
|
+
return normalise(err.details, false);
|
|
28
|
+
}
|
|
29
|
+
throw err;
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
/** Network, version, boundary policy health and evidence store mode (`GET /health`). */
|
|
33
|
+
health() {
|
|
34
|
+
return this.http.publicGet('/health');
|
|
35
|
+
}
|
|
36
|
+
/** Probe every configured endpoint's `/readyz` directly, for monitoring an HA deployment. */
|
|
37
|
+
async endpoints() {
|
|
38
|
+
return Promise.all(this.http.baseUrls.map(async (baseUrl) => {
|
|
39
|
+
try {
|
|
40
|
+
const { status, body } = await this.http.publicGetAt(baseUrl, '/readyz');
|
|
41
|
+
if (status === 200)
|
|
42
|
+
return { base_url: baseUrl, reachable: true, ready: true, readiness: normalise(body, true) };
|
|
43
|
+
const details = body?.['error']?.details;
|
|
44
|
+
return {
|
|
45
|
+
base_url: baseUrl, reachable: true, ready: false,
|
|
46
|
+
...(details ? { readiness: normalise(details, false) } : {}),
|
|
47
|
+
error: `HTTP ${status}`,
|
|
48
|
+
};
|
|
49
|
+
}
|
|
50
|
+
catch (err) {
|
|
51
|
+
return { base_url: baseUrl, reachable: false, ready: false, error: err.message };
|
|
52
|
+
}
|
|
53
|
+
}));
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
//# sourceMappingURL=health.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"health.js","sourceRoot":"","sources":["../../src/health.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,uBAAuB,EAAE,MAAM,aAAa,CAAC;AAGtD,SAAS,SAAS,CAAC,IAA6B,EAAE,KAAc;IAC9D,OAAO,EAAE,GAAI,IAA6B,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,WAAW,EAAE,KAAK,EAAE,CAAC;AAC7F,CAAC;AAED,uEAAuE;AACvE,MAAM,OAAO,YAAY;IACM;IAA7B,YAA6B,IAAmB;QAAnB,SAAI,GAAJ,IAAI,CAAe;IAAG,CAAC;IAEpD,8CAA8C;IAC9C,QAAQ;QACN,OAAO,IAAI,CAAC,IAAI,CAAC,SAAS,CAAqB,UAAU,CAAC,CAAC;IAC7D,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,SAAS;QACb,IAAI,CAAC;YACH,OAAO,SAAS,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,SAAS,CAA0B,SAAS,CAAC,EAAE,IAAI,CAAC,CAAC;QACxF,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,GAAG,YAAY,uBAAuB,IAAI,GAAG,CAAC,IAAI,KAAK,mBAAmB,EAAE,CAAC;gBAC/E,OAAO,SAAS,CAAC,GAAG,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;YACvC,CAAC;YACD,MAAM,GAAG,CAAC;QACZ,CAAC;IACH,CAAC;IAED,wFAAwF;IACxF,MAAM;QACJ,OAAO,IAAI,CAAC,IAAI,CAAC,SAAS,CAAe,SAAS,CAAC,CAAC;IACtD,CAAC;IAED,6FAA6F;IAC7F,KAAK,CAAC,SAAS;QACb,OAAO,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,EAAE,OAAO,EAA8B,EAAE;YACtF,IAAI,CAAC;gBACH,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,WAAW,CAA0B,OAAO,EAAE,SAAS,CAAC,CAAC;gBAClG,IAAI,MAAM,KAAK,GAAG;oBAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,SAAS,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,CAAC;gBACjH,MAAM,OAAO,GAAI,IAAI,EAAE,CAAC,OAAO,CAAuD,EAAE,OAAO,CAAC;gBAChG,OAAO;oBACL,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK;oBAChD,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,SAAS,CAAC,OAAO,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;oBAC5D,KAAK,EAAE,QAAQ,MAAM,EAAE;iBACxB,CAAC;YACJ,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAG,GAAa,CAAC,OAAO,EAAE,CAAC;YAC9F,CAAC;QACH,CAAC,CAAC,CAAC,CAAC;IACN,CAAC;CACF"}
|
package/dist/esm/index.js
CHANGED
|
@@ -8,6 +8,7 @@ import { ConsensusClient } from './consensus.js';
|
|
|
8
8
|
import { DataUsageClient } from './data_usage.js';
|
|
9
9
|
import { PolicyClient } from './policy.js';
|
|
10
10
|
import { EvidenceStoreClient } from './evidence_store.js';
|
|
11
|
+
import { HealthClient } from './health.js';
|
|
11
12
|
export class GenesisMeshClient {
|
|
12
13
|
agreement;
|
|
13
14
|
boundary;
|
|
@@ -19,6 +20,8 @@ export class GenesisMeshClient {
|
|
|
19
20
|
disclosure;
|
|
20
21
|
consensus;
|
|
21
22
|
dataUsage;
|
|
23
|
+
/** Liveness, readiness and health (v0.60). */
|
|
24
|
+
health;
|
|
22
25
|
constructor(options) {
|
|
23
26
|
const http = new HttpTransport(options);
|
|
24
27
|
this.agreement = new AgreementClient(http);
|
|
@@ -26,6 +29,7 @@ export class GenesisMeshClient {
|
|
|
26
29
|
this.policy = new PolicyClient(http);
|
|
27
30
|
this.evidence = new EvidenceClient(http);
|
|
28
31
|
this.evidenceStore = new EvidenceStoreClient(http);
|
|
32
|
+
this.health = new HealthClient(http);
|
|
29
33
|
this.attestation = new AttestationClient(http);
|
|
30
34
|
this.disclosure = new DisclosureClient(http);
|
|
31
35
|
this.consensus = new ConsensusClient(http);
|
|
@@ -38,6 +42,7 @@ export { BoundaryClient } from './boundary.js';
|
|
|
38
42
|
export { PolicyClient } from './policy.js';
|
|
39
43
|
export { EvidenceClient } from './evidence.js';
|
|
40
44
|
export { EvidenceStoreClient } from './evidence_store.js';
|
|
45
|
+
export { HealthClient } from './health.js';
|
|
41
46
|
export { AttestationClient } from './attestation.js';
|
|
42
47
|
export { DisclosureClient } from './disclosure.js';
|
|
43
48
|
export { ConsensusClient } from './consensus.js';
|
|
@@ -55,5 +60,5 @@ export { verifyBoundaryDecision, verifyDecisionSignature, verifyAttestationSigna
|
|
|
55
60
|
// Governed lifecycles
|
|
56
61
|
export { governedAction, summarizeDecision, reconcileResources, GovernedActionError, DecisionVerificationError, } from './governance.js';
|
|
57
62
|
// Errors
|
|
58
|
-
export { GenesisMeshError, UnauthorizedError, ForbiddenError, ValidationError, NotFoundError, ConflictError, RateLimitError, ServiceUnavailableError, NetworkError, BadRequestError, } from './errors.js';
|
|
63
|
+
export { GenesisMeshError, UnauthorizedError, ForbiddenError, ValidationError, NotFoundError, ConflictError, RateLimitError, ServiceUnavailableError, isRetryableConflict, NetworkError, BadRequestError, } from './errors.js';
|
|
59
64
|
//# sourceMappingURL=index.js.map
|
package/dist/esm/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAsB,MAAM,aAAa,CAAC;AAChE,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AACjD,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACnD,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AACjD,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/types/client.d.ts
CHANGED
|
@@ -11,8 +11,16 @@ export interface RetryOptions {
|
|
|
11
11
|
baseDelayMs?: number;
|
|
12
12
|
}
|
|
13
13
|
export interface ClientOptions {
|
|
14
|
-
/** Base URL of the NA, e.g. "http://127.0.0.1:9443". No trailing slash needed. */
|
|
15
|
-
baseUrl
|
|
14
|
+
/** Base URL of the NA (or its load balancer), e.g. "http://127.0.0.1:9443". No trailing slash needed. */
|
|
15
|
+
baseUrl?: string;
|
|
16
|
+
/**
|
|
17
|
+
* Several NA instances sharing one database (v0.60 HA), used without a load
|
|
18
|
+
* balancer. Requests go to one instance; idempotent requests move to the next
|
|
19
|
+
* on a transport failure or 502/503/504. A non-idempotent request moves only
|
|
20
|
+
* when the connection was refused or unreachable (it never reached the NA);
|
|
21
|
+
* otherwise it is not replayed and the next request starts elsewhere.
|
|
22
|
+
*/
|
|
23
|
+
baseUrls?: string[];
|
|
16
24
|
/** Base64-encoded raw Ed25519 seed (32 bytes, from operator.key). Required for admin routes unless `signer` is set. */
|
|
17
25
|
signingKeyBase64?: string;
|
|
18
26
|
/** Key ID sent in X-Admin-Key-Id - must match a key registered with the NA. Ignored when `signer` is set. */
|
|
@@ -31,7 +39,9 @@ export interface ClientOptions {
|
|
|
31
39
|
export type Query = Record<string, string | number | boolean | undefined | null>;
|
|
32
40
|
export declare function buildPath(path: string, query?: Query): string;
|
|
33
41
|
export declare class HttpTransport {
|
|
34
|
-
|
|
42
|
+
/** Every configured NA endpoint, in preference order. */
|
|
43
|
+
readonly baseUrls: readonly string[];
|
|
44
|
+
private active;
|
|
35
45
|
/** Key ID sent in X-Admin-Key-Id. */
|
|
36
46
|
readonly keyId: string;
|
|
37
47
|
private readonly signer?;
|
|
@@ -40,6 +50,10 @@ export declare class HttpTransport {
|
|
|
40
50
|
private readonly headers;
|
|
41
51
|
private readonly _fetch;
|
|
42
52
|
constructor(options: ClientOptions);
|
|
53
|
+
/** The endpoint requests currently go to. */
|
|
54
|
+
get baseUrl(): string;
|
|
55
|
+
/** Move to the next endpoint (no-op with one endpoint). */
|
|
56
|
+
private failover;
|
|
43
57
|
/** Signed admin POST. Not retried unless `idempotent` is set. */
|
|
44
58
|
adminPost<T>(path: string, body: unknown, idempotent?: boolean): Promise<T>;
|
|
45
59
|
/** Signed admin GET (the NA verifies the signature over an empty body). */
|
|
@@ -50,6 +64,13 @@ export declare class HttpTransport {
|
|
|
50
64
|
publicPost<T>(path: string, body: unknown, idempotent?: boolean): Promise<T>;
|
|
51
65
|
publicGet<T>(path: string, query?: Query): Promise<T>;
|
|
52
66
|
private _send;
|
|
67
|
+
/** One request to the active endpoint, with the body fully read (a dropped body is a NetworkError). */
|
|
68
|
+
private _attempt;
|
|
69
|
+
/** Unauthenticated GET against one specific endpoint (no failover), e.g. per-instance readiness. */
|
|
70
|
+
publicGetAt<T>(baseUrl: string, path: string): Promise<{
|
|
71
|
+
status: number;
|
|
72
|
+
body: T;
|
|
73
|
+
}>;
|
|
53
74
|
private _once;
|
|
54
75
|
private _backoff;
|
|
55
76
|
private _parse;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/client.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAqE,KAAK,MAAM,EAAE,MAAM,WAAW,CAAC;AAG3G,MAAM,WAAW,YAAY;IAC3B,0DAA0D;IAC1D,QAAQ,EAAE,MAAM,CAAC;IACjB,6EAA6E;IAC7E,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,aAAa;IAC5B,
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/client.ts"],"names":[],"mappings":"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"}
|
package/dist/types/errors.d.ts
CHANGED
|
@@ -31,6 +31,12 @@ export declare class RateLimitError extends GenesisMeshError {
|
|
|
31
31
|
constructor(message?: string, code?: string);
|
|
32
32
|
}
|
|
33
33
|
export declare class NetworkError extends GenesisMeshError {
|
|
34
|
+
/**
|
|
35
|
+
* True when the connection could not be established (refused, unresolvable,
|
|
36
|
+
* unreachable): the request never reached the NA, so another instance may
|
|
37
|
+
* take it even when it is not idempotent (v0.60).
|
|
38
|
+
*/
|
|
39
|
+
connectFailed: boolean;
|
|
34
40
|
constructor(message: string, code?: string);
|
|
35
41
|
}
|
|
36
42
|
export declare class BadRequestError extends GenesisMeshError {
|
|
@@ -43,4 +49,9 @@ export declare class BadRequestError extends GenesisMeshError {
|
|
|
43
49
|
* as produced by the Genesis Mesh NA.
|
|
44
50
|
*/
|
|
45
51
|
export declare function fromHttpError(status: number, body: Record<string, unknown>): GenesisMeshError;
|
|
52
|
+
/**
|
|
53
|
+
* True for a 409 that only means another NA instance won a race the database
|
|
54
|
+
* decided (v0.60). The request changed nothing and can be retried.
|
|
55
|
+
*/
|
|
56
|
+
export declare function isRetryableConflict(err: unknown): err is ConflictError;
|
|
46
57
|
//# sourceMappingURL=errors.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/errors.ts"],"names":[],"mappings":"AAAA,+DAA+D;AAE/D,qBAAa,gBAAiB,SAAQ,KAAK;IACzC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,2EAA2E;IAC3E,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAM;IACtC,6EAA6E;IAC7E,SAAS,EAAE,MAAM,GAAG,IAAI,CAAQ;gBAEpB,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;CAO1D;AAED,qBAAa,iBAAkB,SAAQ,gBAAgB;gBACzC,OAAO,SAAiB,EAAE,IAAI,SAAiB;CAI5D;AAED,qBAAa,eAAgB,SAAQ,gBAAgB;gBACvC,OAAO,EAAE,MAAM,EAAE,IAAI,SAAqB;CAIvD;AAED,qBAAa,cAAe,SAAQ,gBAAgB;gBACtC,OAAO,SAAc,EAAE,IAAI,SAAc;CAItD;AAED,sGAAsG;AACtG,qBAAa,aAAc,SAAQ,gBAAgB;gBACrC,OAAO,EAAE,MAAM,EAAE,IAAI,SAAa;CAI/C;AAED,qBAAa,uBAAwB,SAAQ,gBAAgB;gBAC/C,OAAO,SAAwB,EAAE,IAAI,SAAwB;CAI1E;AAED,qBAAa,aAAc,SAAQ,gBAAgB;gBACrC,OAAO,EAAE,MAAM,EAAE,IAAI,SAAc;CAIhD;AAED,qBAAa,cAAe,SAAQ,gBAAgB;gBACtC,OAAO,SAAwB,EAAE,IAAI,SAAwB;CAI1E;AAED,qBAAa,YAAa,SAAQ,gBAAgB;
|
|
1
|
+
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/errors.ts"],"names":[],"mappings":"AAAA,+DAA+D;AAE/D,qBAAa,gBAAiB,SAAQ,KAAK;IACzC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,2EAA2E;IAC3E,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAM;IACtC,6EAA6E;IAC7E,SAAS,EAAE,MAAM,GAAG,IAAI,CAAQ;gBAEpB,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;CAO1D;AAED,qBAAa,iBAAkB,SAAQ,gBAAgB;gBACzC,OAAO,SAAiB,EAAE,IAAI,SAAiB;CAI5D;AAED,qBAAa,eAAgB,SAAQ,gBAAgB;gBACvC,OAAO,EAAE,MAAM,EAAE,IAAI,SAAqB;CAIvD;AAED,qBAAa,cAAe,SAAQ,gBAAgB;gBACtC,OAAO,SAAc,EAAE,IAAI,SAAc;CAItD;AAED,sGAAsG;AACtG,qBAAa,aAAc,SAAQ,gBAAgB;gBACrC,OAAO,EAAE,MAAM,EAAE,IAAI,SAAa;CAI/C;AAED,qBAAa,uBAAwB,SAAQ,gBAAgB;gBAC/C,OAAO,SAAwB,EAAE,IAAI,SAAwB;CAI1E;AAED,qBAAa,aAAc,SAAQ,gBAAgB;gBACrC,OAAO,EAAE,MAAM,EAAE,IAAI,SAAc;CAIhD;AAED,qBAAa,cAAe,SAAQ,gBAAgB;gBACtC,OAAO,SAAwB,EAAE,IAAI,SAAwB;CAI1E;AAED,qBAAa,YAAa,SAAQ,gBAAgB;IAChD;;;;OAIG;IACH,aAAa,UAAS;gBAEV,OAAO,EAAE,MAAM,EAAE,IAAI,SAAkB;CAIpD;AAED,qBAAa,eAAgB,SAAQ,gBAAgB;gBACvC,OAAO,EAAE,MAAM,EAAE,IAAI,SAAgB;CAIlD;AAED;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,gBAAgB,CAwB7F;AAuBD;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,OAAO,GAAG,GAAG,IAAI,aAAa,CAEtE"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import type { HttpTransport } from './client.js';
|
|
2
|
+
import type { EndpointReadiness, HealthStatus, Readiness } from './types.js';
|
|
3
|
+
/** Liveness, readiness and health of the Network Authority (v0.60). */
|
|
4
|
+
export declare class HealthClient {
|
|
5
|
+
private readonly http;
|
|
6
|
+
constructor(http: HttpTransport);
|
|
7
|
+
/** Process liveness only (`GET /healthz`). */
|
|
8
|
+
liveness(): Promise<{
|
|
9
|
+
status: string;
|
|
10
|
+
}>;
|
|
11
|
+
/**
|
|
12
|
+
* Readiness (`GET /readyz`): database writable at the expected schema, key
|
|
13
|
+
* loaded, shared state in HA mode. A not-ready NA (503 `service_not_ready`)
|
|
14
|
+
* is returned as `ready: false` with the failing checks, not thrown. With
|
|
15
|
+
* several `baseUrls`, a not-ready instance is skipped for the next one.
|
|
16
|
+
*/
|
|
17
|
+
readiness(): Promise<Readiness>;
|
|
18
|
+
/** Network, version, boundary policy health and evidence store mode (`GET /health`). */
|
|
19
|
+
health(): Promise<HealthStatus>;
|
|
20
|
+
/** Probe every configured endpoint's `/readyz` directly, for monitoring an HA deployment. */
|
|
21
|
+
endpoints(): Promise<EndpointReadiness[]>;
|
|
22
|
+
}
|
|
23
|
+
//# sourceMappingURL=health.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"health.d.ts","sourceRoot":"","sources":["../../src/health.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAEjD,OAAO,KAAK,EAAE,iBAAiB,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAM7E,uEAAuE;AACvE,qBAAa,YAAY;IACX,OAAO,CAAC,QAAQ,CAAC,IAAI;gBAAJ,IAAI,EAAE,aAAa;IAEhD,8CAA8C;IAC9C,QAAQ,IAAI,OAAO,CAAC;QAAE,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;IAIvC;;;;;OAKG;IACG,SAAS,IAAI,OAAO,CAAC,SAAS,CAAC;IAWrC,wFAAwF;IACxF,MAAM,IAAI,OAAO,CAAC,YAAY,CAAC;IAI/B,6FAA6F;IACvF,SAAS,IAAI,OAAO,CAAC,iBAAiB,EAAE,CAAC;CAgBhD"}
|
package/dist/types/index.d.ts
CHANGED
|
@@ -8,6 +8,7 @@ import { ConsensusClient } from './consensus.js';
|
|
|
8
8
|
import { DataUsageClient } from './data_usage.js';
|
|
9
9
|
import { PolicyClient } from './policy.js';
|
|
10
10
|
import { EvidenceStoreClient } from './evidence_store.js';
|
|
11
|
+
import { HealthClient } from './health.js';
|
|
11
12
|
export declare class GenesisMeshClient {
|
|
12
13
|
readonly agreement: AgreementClient;
|
|
13
14
|
readonly boundary: BoundaryClient;
|
|
@@ -19,6 +20,8 @@ export declare class GenesisMeshClient {
|
|
|
19
20
|
readonly disclosure: DisclosureClient;
|
|
20
21
|
readonly consensus: ConsensusClient;
|
|
21
22
|
readonly dataUsage: DataUsageClient;
|
|
23
|
+
/** Liveness, readiness and health (v0.60). */
|
|
24
|
+
readonly health: HealthClient;
|
|
22
25
|
constructor(options: ClientOptions);
|
|
23
26
|
}
|
|
24
27
|
export { AgreementClient } from './agreement.js';
|
|
@@ -26,6 +29,7 @@ export { BoundaryClient } from './boundary.js';
|
|
|
26
29
|
export { PolicyClient } from './policy.js';
|
|
27
30
|
export { EvidenceClient } from './evidence.js';
|
|
28
31
|
export { EvidenceStoreClient } from './evidence_store.js';
|
|
32
|
+
export { HealthClient } from './health.js';
|
|
29
33
|
export { AttestationClient } from './attestation.js';
|
|
30
34
|
export { DisclosureClient } from './disclosure.js';
|
|
31
35
|
export { ConsensusClient } from './consensus.js';
|
|
@@ -41,13 +45,14 @@ export { verifyBoundaryDecision, verifyDecisionSignature, verifyAttestationSigna
|
|
|
41
45
|
export type { VerifyDecisionOptions, VerifyEvidenceOptions, ExecutorKeyInfo } from './verify.js';
|
|
42
46
|
export { governedAction, summarizeDecision, reconcileResources, GovernedActionError, DecisionVerificationError, } from './governance.js';
|
|
43
47
|
export type { ActionReport, DecisionSummary, GateFailure, GovernanceClients, GovernedActionParams, GovernedActionResult, ObservedResource, ReconcileOptions, ReconciliationFinding, ReconciliationStatus, } from './governance.js';
|
|
44
|
-
export { GenesisMeshError, UnauthorizedError, ForbiddenError, ValidationError, NotFoundError, ConflictError, RateLimitError, ServiceUnavailableError, NetworkError, BadRequestError, } from './errors.js';
|
|
48
|
+
export { GenesisMeshError, UnauthorizedError, ForbiddenError, ValidationError, NotFoundError, ConflictError, RateLimitError, ServiceUnavailableError, isRetryableConflict, NetworkError, BadRequestError, } from './errors.js';
|
|
45
49
|
export type * from './types.js';
|
|
46
50
|
export type * from './agreement.js';
|
|
47
51
|
export type * from './boundary.js';
|
|
48
52
|
export type * from './policy.js';
|
|
49
53
|
export type * from './evidence.js';
|
|
50
54
|
export type * from './evidence_store.js';
|
|
55
|
+
export type * from './health.js';
|
|
51
56
|
export type * from './attestation.js';
|
|
52
57
|
export type * from './disclosure.js';
|
|
53
58
|
export type * from './consensus.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,KAAK,aAAa,EAAE,MAAM,aAAa,CAAC;AAChE,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AACjD,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACnD,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AACjD,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/types/types.d.ts
CHANGED
|
@@ -612,4 +612,48 @@ export interface RetentionResult {
|
|
|
612
612
|
}
|
|
613
613
|
/** Rejection codes from `POST /evidence/execution` (422, or 409 for `evidence_conflict`). */
|
|
614
614
|
export type EvidenceRejectionCode = 'evidence_malformed' | 'evidence_unknown_executor' | 'evidence_invalid_signature' | 'evidence_decision_not_found' | 'evidence_decision_denied' | 'evidence_decision_mismatch' | 'evidence_outside_decision_window' | 'evidence_capability_mismatch' | 'evidence_chain_gap' | 'evidence_chain_mismatch' | 'resource_chain_gap' | 'resource_chain_mismatch' | 'evidence_conflict' | 'evidence_secret_material';
|
|
615
|
+
export interface ReadinessDatabase {
|
|
616
|
+
backend: 'sqlite' | 'postgres' | string;
|
|
617
|
+
writable: boolean;
|
|
618
|
+
schema_version?: number;
|
|
619
|
+
expected_schema_version: number;
|
|
620
|
+
/** Present when not ready: e.g. "schema_version_mismatch" or the error type. */
|
|
621
|
+
error?: string;
|
|
622
|
+
}
|
|
623
|
+
export interface ReadinessSigningKey {
|
|
624
|
+
key_id: string;
|
|
625
|
+
provider: 'file' | 'env' | 'azure-keyvault' | string;
|
|
626
|
+
/** SHA-256 (hex) of the NA public key; identical on every instance of one NA. */
|
|
627
|
+
fingerprint: string;
|
|
628
|
+
}
|
|
629
|
+
/** `GET /readyz`, normalised: `ready` is false when the NA answered 503 not ready. */
|
|
630
|
+
export interface Readiness {
|
|
631
|
+
ready: boolean;
|
|
632
|
+
status: 'ready' | 'not_ready';
|
|
633
|
+
instance: string;
|
|
634
|
+
ha_mode: 'on' | 'off' | string;
|
|
635
|
+
database: ReadinessDatabase;
|
|
636
|
+
signing_key: ReadinessSigningKey;
|
|
637
|
+
rate_limiter: 'memory' | 'database' | string;
|
|
638
|
+
/** The SQLite path, or the PostgreSQL URL without its password (ready responses only). */
|
|
639
|
+
db_path?: string;
|
|
640
|
+
}
|
|
641
|
+
/** Readiness of one configured endpoint, probed directly (no failover). */
|
|
642
|
+
export interface EndpointReadiness {
|
|
643
|
+
base_url: string;
|
|
644
|
+
reachable: boolean;
|
|
645
|
+
ready: boolean;
|
|
646
|
+
readiness?: Readiness;
|
|
647
|
+
error?: string;
|
|
648
|
+
}
|
|
649
|
+
export interface HealthStatus {
|
|
650
|
+
status: string;
|
|
651
|
+
network: string;
|
|
652
|
+
version: string;
|
|
653
|
+
boundary_policies: 'healthy' | 'unhealthy' | string;
|
|
654
|
+
boundary_policy_enforcement: string;
|
|
655
|
+
evidence_store: string;
|
|
656
|
+
}
|
|
657
|
+
/** 409 codes for a race another NA instance won (v0.60). Retrying is safe. */
|
|
658
|
+
export type HaConflictCode = 'boundary_policy_activation_conflict' | 'boundary_policy_version_conflict' | 'crl_publish_contention' | 'retention_in_progress';
|
|
615
659
|
//# sourceMappingURL=types.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
# High availability (v0.60)
|
|
2
|
+
|
|
3
|
+
From v0.60 a Network Authority (NA) can run as several instances on one
|
|
4
|
+
PostgreSQL database. Usually a load balancer sits in front; the SDK then
|
|
5
|
+
needs only `baseUrl` pointing at it. Without a load balancer, give the SDK
|
|
6
|
+
every instance and it fails over itself.
|
|
7
|
+
|
|
8
|
+
```typescript
|
|
9
|
+
import { GenesisMeshClient, isRetryableConflict } from 'genesis-mesh-sdk';
|
|
10
|
+
|
|
11
|
+
const gm = new GenesisMeshClient({
|
|
12
|
+
baseUrls: ['https://na-a.example', 'https://na-b.example'],
|
|
13
|
+
signer: operatorSigner,
|
|
14
|
+
retry: { attempts: 2, baseDelayMs: 200 },
|
|
15
|
+
});
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
## Failover rules
|
|
19
|
+
|
|
20
|
+
Requests go to one instance at a time.
|
|
21
|
+
|
|
22
|
+
- **Idempotent requests** (every GET, public verification and evidence
|
|
23
|
+
submission) move to the next instance on a transport failure or
|
|
24
|
+
502/503/504, then use `retry` with backoff.
|
|
25
|
+
- **Non-idempotent requests** (evaluate, issue, publish, revoke) move to the
|
|
26
|
+
next instance only when the connection could not be made (refused,
|
|
27
|
+
unresolvable, unreachable), because the request never reached the NA. After
|
|
28
|
+
any other failure they are **not replayed**: a request that may have run
|
|
29
|
+
must not run twice. The error reaches the caller, and the next request
|
|
30
|
+
starts at another instance.
|
|
31
|
+
- The client stays on the instance that last answered.
|
|
32
|
+
|
|
33
|
+
`NetworkError.connectFailed` says whether a failure happened before the
|
|
34
|
+
request was sent.
|
|
35
|
+
|
|
36
|
+
## Readiness
|
|
37
|
+
|
|
38
|
+
```typescript
|
|
39
|
+
const r = await gm.health.readiness();
|
|
40
|
+
// { ready, status, instance, ha_mode, rate_limiter,
|
|
41
|
+
// database: { backend, writable, schema_version, expected_schema_version, error? },
|
|
42
|
+
// signing_key: { key_id, provider, fingerprint } }
|
|
43
|
+
|
|
44
|
+
for (const e of await gm.health.endpoints()) {
|
|
45
|
+
console.log(e.base_url, e.reachable, e.ready, e.readiness?.signing_key.fingerprint);
|
|
46
|
+
}
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
`readiness()` returns a not-ready NA as `ready: false` with the failing checks
|
|
50
|
+
instead of throwing. `endpoints()` probes every configured instance directly.
|
|
51
|
+
It is meant for monitoring and for spotting an instance with a different key:
|
|
52
|
+
every instance of one NA reports the same fingerprint. `liveness()` and
|
|
53
|
+
`health()` wrap `/healthz` and `/health`.
|
|
54
|
+
|
|
55
|
+
## Conflicts between instances
|
|
56
|
+
|
|
57
|
+
Some operations are decided by the database across instances. The request
|
|
58
|
+
that loses a race gets `409` and changed nothing, so it can be retried:
|
|
59
|
+
|
|
60
|
+
| Code | Meaning |
|
|
61
|
+
|---|---|
|
|
62
|
+
| `boundary_policy_activation_conflict` | another version of the policy was activated at the same moment |
|
|
63
|
+
| `boundary_policy_version_conflict` | concurrent publishes of one policy kept taking the next version |
|
|
64
|
+
| `crl_publish_contention` | concurrent revocations kept taking the next CRL sequence |
|
|
65
|
+
| `retention_in_progress` | evidence retention is already running on another instance |
|
|
66
|
+
|
|
67
|
+
```typescript
|
|
68
|
+
try {
|
|
69
|
+
await gm.policy.activate(policyId, version);
|
|
70
|
+
} catch (err) {
|
|
71
|
+
if (isRetryableConflict(err)) await gm.policy.activate(policyId, version);
|
|
72
|
+
else throw err;
|
|
73
|
+
}
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
Evidence submission is already safe to retry: an identical record returns
|
|
77
|
+
`status: 'duplicate'`.
|
|
78
|
+
|
|
79
|
+
## Testing against a cluster
|
|
80
|
+
|
|
81
|
+
`npm run test:e2e` also runs `tests/e2e-ha.test.ts` when
|
|
82
|
+
`GM_E2E_HA_DATABASE_URL` names an empty PostgreSQL database (C collation)
|
|
83
|
+
and nginx is installed. It starts two NA instances behind nginx with the
|
|
84
|
+
core's cluster harness. It kills one mid-run, then checks that a secret's
|
|
85
|
+
lifecycle continues through the load balancer and through `baseUrls`
|
|
86
|
+
failover, with one unbroken, verified history.
|
package/package.json
CHANGED