@astrasyncai/verification-gateway 3.12.0 → 4.0.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/dist/adapter-interface/interface.d.mts +2 -2
- package/dist/adapter-interface/interface.d.ts +2 -2
- package/dist/adapters/express.d.mts +2 -2
- package/dist/adapters/express.d.ts +2 -2
- package/dist/adapters/express.js +85 -8
- package/dist/adapters/express.js.map +1 -1
- package/dist/adapters/express.mjs +85 -8
- package/dist/adapters/express.mjs.map +1 -1
- package/dist/adapters/mcp.d.mts +1 -1
- package/dist/adapters/mcp.d.ts +1 -1
- package/dist/adapters/mcp.js +90 -8
- package/dist/adapters/mcp.js.map +1 -1
- package/dist/adapters/mcp.mjs +90 -8
- package/dist/adapters/mcp.mjs.map +1 -1
- package/dist/adapters/nextjs.d.mts +2 -2
- package/dist/adapters/nextjs.d.ts +2 -2
- package/dist/adapters/nextjs.js +86 -8
- package/dist/adapters/nextjs.js.map +1 -1
- package/dist/adapters/nextjs.mjs +86 -8
- package/dist/adapters/nextjs.mjs.map +1 -1
- package/dist/adapters/sdk.d.mts +2 -2
- package/dist/adapters/sdk.d.ts +2 -2
- package/dist/adapters/sdk.js +71 -8
- package/dist/adapters/sdk.js.map +1 -1
- package/dist/adapters/sdk.mjs +71 -8
- package/dist/adapters/sdk.mjs.map +1 -1
- package/dist/agent/index.d.mts +2 -2
- package/dist/agent/index.d.ts +2 -2
- package/dist/bin/astrasync-claude-hook.js +71 -8
- package/dist/bin/astrasync-codex-hook.js +71 -8
- package/dist/bin/astrasync-guard.js +71 -8
- package/dist/bin/astrasync.js +71 -8
- package/dist/browser/background.js +71 -8
- package/dist/browser/background.js.map +1 -1
- package/dist/browser/background.mjs +71 -8
- package/dist/browser/background.mjs.map +1 -1
- package/dist/browser/browser-adapter.d.mts +2 -2
- package/dist/browser/browser-adapter.d.ts +2 -2
- package/dist/claude-code/claude-code-adapter.d.mts +2 -2
- package/dist/claude-code/claude-code-adapter.d.ts +2 -2
- package/dist/cli/index.d.mts +2 -2
- package/dist/cli/index.d.ts +2 -2
- package/dist/codex/index.d.mts +2 -2
- package/dist/codex/index.d.ts +2 -2
- package/dist/codex/index.js +71 -8
- package/dist/codex/index.js.map +1 -1
- package/dist/codex/index.mjs +71 -8
- package/dist/codex/index.mjs.map +1 -1
- package/dist/cursor/cursor-adapter.d.mts +2 -2
- package/dist/cursor/cursor-adapter.d.ts +2 -2
- package/dist/cursor/extension.d.mts +2 -2
- package/dist/cursor/extension.d.ts +2 -2
- package/dist/cursor/extension.js +71 -8
- package/dist/cursor/extension.js.map +1 -1
- package/dist/cursor/extension.mjs +71 -8
- package/dist/cursor/extension.mjs.map +1 -1
- package/dist/edge-config.d.mts +1 -1
- package/dist/edge-config.d.ts +1 -1
- package/dist/{express-B39o89gf.d.mts → express-BZajRs4i.d.mts} +1 -1
- package/dist/{express-BuxKNO_q.d.ts → express-CjCUB1k7.d.ts} +1 -1
- package/dist/gateway/gateway.d.mts +2 -2
- package/dist/gateway/gateway.d.ts +2 -2
- package/dist/gateway/gateway.js +71 -8
- package/dist/gateway/gateway.js.map +1 -1
- package/dist/gateway/gateway.mjs +71 -8
- package/dist/gateway/gateway.mjs.map +1 -1
- package/dist/git-trigger/git-hooks.d.mts +2 -2
- package/dist/git-trigger/git-hooks.d.ts +2 -2
- package/dist/{index-DME3w3lf.d.mts → index-B0cyMZDL.d.mts} +1 -1
- package/dist/{index-CqydB4ks.d.mts → index-BRYteOqO.d.mts} +1 -1
- package/dist/{index-BG62SXso.d.ts → index-BZQdVqNw.d.ts} +1 -1
- package/dist/{index-CLHdqs2M.d.ts → index-adgKhujR.d.ts} +1 -1
- package/dist/index.d.mts +8 -8
- package/dist/index.d.ts +8 -8
- package/dist/index.js +119 -8
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +119 -8
- package/dist/index.mjs.map +1 -1
- package/dist/local-evaluator/evaluator.d.mts +2 -2
- package/dist/local-evaluator/evaluator.d.ts +2 -2
- package/dist/{nextjs-Ddlw_J1J.d.ts → nextjs-D_iFf5k-.d.ts} +1 -1
- package/dist/{nextjs-D74W7wt-.d.mts → nextjs-DeUTnOBd.d.mts} +1 -1
- package/dist/{sdk-CT7gdkfR.d.ts → sdk-BM3mwEAq.d.ts} +1 -1
- package/dist/{sdk-Bn6bj7kt.d.mts → sdk-_il1Q41f.d.mts} +1 -1
- package/dist/transport/index.d.mts +2 -2
- package/dist/transport/index.d.ts +2 -2
- package/dist/{types-BntuzEEn.d.mts → types-BcDf9Kk0.d.mts} +15 -0
- package/dist/{types-DHu7m9HI.d.ts → types-CHKCgDFC.d.ts} +1 -1
- package/dist/{types-Djw4GLtz.d.mts → types-DfnP7JiM.d.mts} +1 -1
- package/dist/{types-SDu4Llbe.d.ts → types-fTQD448H.d.ts} +15 -0
- package/dist/ui/index.d.mts +1 -1
- package/dist/ui/index.d.ts +1 -1
- package/dist/verify.d.mts +4 -2
- package/dist/verify.d.ts +4 -2
- package/dist/verify.js +76 -8
- package/dist/verify.js.map +1 -1
- package/dist/verify.mjs +75 -8
- package/dist/verify.mjs.map +1 -1
- package/package.json +1 -1
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { PlatformAdapter, AdapterConfig } from '../adapter-interface/interface.mjs';
|
|
2
|
-
import { P as PDLSSContext, V as VerificationDecision, A as AgentAction, I as InterceptResult } from '../types-
|
|
2
|
+
import { P as PDLSSContext, V as VerificationDecision, A as AgentAction, I as InterceptResult } from '../types-DfnP7JiM.mjs';
|
|
3
3
|
import '../gateway/gateway.mjs';
|
|
4
|
-
import '../types-
|
|
4
|
+
import '../types-BcDf9Kk0.mjs';
|
|
5
5
|
import '../metadata-capture.mjs';
|
|
6
6
|
|
|
7
7
|
/**
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { PlatformAdapter, AdapterConfig } from '../adapter-interface/interface.js';
|
|
2
|
-
import { P as PDLSSContext, V as VerificationDecision, A as AgentAction, I as InterceptResult } from '../types-
|
|
2
|
+
import { P as PDLSSContext, V as VerificationDecision, A as AgentAction, I as InterceptResult } from '../types-CHKCgDFC.js';
|
|
3
3
|
import '../gateway/gateway.js';
|
|
4
|
-
import '../types-
|
|
4
|
+
import '../types-fTQD448H.js';
|
|
5
5
|
import '../metadata-capture.js';
|
|
6
6
|
|
|
7
7
|
/**
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { VSCodeAPI } from './cursor-adapter.mjs';
|
|
2
2
|
import '../adapter-interface/interface.mjs';
|
|
3
3
|
import '../gateway/gateway.mjs';
|
|
4
|
-
import '../types-
|
|
5
|
-
import '../types-
|
|
4
|
+
import '../types-DfnP7JiM.mjs';
|
|
5
|
+
import '../types-BcDf9Kk0.mjs';
|
|
6
6
|
import '../metadata-capture.mjs';
|
|
7
7
|
|
|
8
8
|
/**
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { VSCodeAPI } from './cursor-adapter.js';
|
|
2
2
|
import '../adapter-interface/interface.js';
|
|
3
3
|
import '../gateway/gateway.js';
|
|
4
|
-
import '../types-
|
|
5
|
-
import '../types-
|
|
4
|
+
import '../types-CHKCgDFC.js';
|
|
5
|
+
import '../types-fTQD448H.js';
|
|
6
6
|
import '../metadata-capture.js';
|
|
7
7
|
|
|
8
8
|
/**
|
package/dist/cursor/extension.js
CHANGED
|
@@ -3942,7 +3942,7 @@ function getTrustLevel(score) {
|
|
|
3942
3942
|
}
|
|
3943
3943
|
|
|
3944
3944
|
// src/version.ts
|
|
3945
|
-
var SDK_VERSION = "
|
|
3945
|
+
var SDK_VERSION = "4.0.0";
|
|
3946
3946
|
|
|
3947
3947
|
// src/well-known.ts
|
|
3948
3948
|
var CACHE_TTL_MS = 60 * 60 * 1e3;
|
|
@@ -3968,7 +3968,7 @@ var DEFAULT_CONFIG = {
|
|
|
3968
3968
|
};
|
|
3969
3969
|
var initCheckPerformed = false;
|
|
3970
3970
|
var deprecationWarningShown = false;
|
|
3971
|
-
async function performInitCheck(apiBaseUrl, debug, strictInit) {
|
|
3971
|
+
async function performInitCheck(apiBaseUrl, debug, strictInit, apiKey) {
|
|
3972
3972
|
initCheckPerformed = true;
|
|
3973
3973
|
try {
|
|
3974
3974
|
const probeUrl = `${apiBaseUrl}/agents/verify-access`;
|
|
@@ -3985,6 +3985,28 @@ async function performInitCheck(apiBaseUrl, debug, strictInit) {
|
|
|
3985
3985
|
`[VerificationGateway] init check passed for ${apiBaseUrl} (content-type: ${contentType})`
|
|
3986
3986
|
);
|
|
3987
3987
|
}
|
|
3988
|
+
if (apiKey) {
|
|
3989
|
+
const selfCheck = await fetch(`${apiBaseUrl}/agents/verify-access/self-check`, {
|
|
3990
|
+
headers: { Authorization: `Bearer ${apiKey}` }
|
|
3991
|
+
});
|
|
3992
|
+
if (selfCheck.status === 401) {
|
|
3993
|
+
const body = await selfCheck.json().catch(() => ({}));
|
|
3994
|
+
const message = `[VerificationGateway] the configured AstraSync API key was REJECTED at startup (${body.code ?? "api_key_invalid"}: ${body.message ?? "invalid key"}). Every inbound agent will be turned away until the key is rotated` + (body.remediation?.manageUrl ? ` at ${body.remediation.manageUrl}` : "") + `.`;
|
|
3995
|
+
if (strictInit) {
|
|
3996
|
+
throw new Error(`${message} (strictInit=true)`);
|
|
3997
|
+
}
|
|
3998
|
+
console.error(message);
|
|
3999
|
+
} else if (selfCheck.ok) {
|
|
4000
|
+
const body = await selfCheck.json().catch(() => ({}));
|
|
4001
|
+
if (typeof body.daysToExpiry === "number" && body.daysToExpiry <= 7) {
|
|
4002
|
+
console.warn(
|
|
4003
|
+
`[VerificationGateway] the configured AstraSync API key expires in ${body.daysToExpiry} day(s) \u2014 rotate it at Settings \u2192 Developer Tools before integrations start failing.`
|
|
4004
|
+
);
|
|
4005
|
+
} else if (debug) {
|
|
4006
|
+
console.log("[VerificationGateway] API key self-check passed");
|
|
4007
|
+
}
|
|
4008
|
+
}
|
|
4009
|
+
}
|
|
3988
4010
|
} catch (err) {
|
|
3989
4011
|
if (strictInit) {
|
|
3990
4012
|
throw err;
|
|
@@ -4062,8 +4084,17 @@ function cacheResult(request, result, configuredTtl, counterpartyId) {
|
|
|
4062
4084
|
function createGuidanceResponse(_config, reason, options = {}) {
|
|
4063
4085
|
const source = options.source ?? "no_credentials";
|
|
4064
4086
|
const isApiError = source === "api_error";
|
|
4087
|
+
const isMisconfig = source === "merchant_misconfig";
|
|
4065
4088
|
const urls = options.urls;
|
|
4066
|
-
const guidance =
|
|
4089
|
+
const guidance = isMisconfig ? {
|
|
4090
|
+
message: "This site's AstraSync integration is misconfigured (its API key was revoked, expired, or rotated). Your identity and the AstraSync platform are fine \u2014 contact the site operator. Retrying will not help.",
|
|
4091
|
+
registrationUrl: urls?.registrationUrl ?? "",
|
|
4092
|
+
documentationUrl: options.remediation?.docsUrl ?? urls?.documentationUrl ?? "",
|
|
4093
|
+
steps: [
|
|
4094
|
+
"Report the failure to the site operator \u2014 their AstraSync API key needs rotating",
|
|
4095
|
+
"Do not retry: the failure is deterministic until the operator updates their key"
|
|
4096
|
+
]
|
|
4097
|
+
} : isApiError ? {
|
|
4067
4098
|
message: "Verification is temporarily unavailable. Retry with exponential backoff; if the issue persists, contact support with the correlationId.",
|
|
4068
4099
|
registrationUrl: urls?.registrationUrl ?? "",
|
|
4069
4100
|
documentationUrl: urls?.documentationUrl ?? "",
|
|
@@ -4101,13 +4132,22 @@ function createGuidanceResponse(_config, reason, options = {}) {
|
|
|
4101
4132
|
// partners (and their custom onDenied handlers) can branch on
|
|
4102
4133
|
// dimension. Without this, the synthesised stub was indistinguishable
|
|
4103
4134
|
// from a real policy deny.
|
|
4104
|
-
failures:
|
|
4135
|
+
failures: isMisconfig ? [
|
|
4136
|
+
{
|
|
4137
|
+
dimension: "verify_access.merchant_misconfigured",
|
|
4138
|
+
message: reason ?? "The integration API key was rejected by AstraSync",
|
|
4139
|
+
guidance: guidance.message
|
|
4140
|
+
}
|
|
4141
|
+
] : isApiError ? [
|
|
4105
4142
|
{
|
|
4106
4143
|
dimension: "verify_access.api_error",
|
|
4107
4144
|
message: reason ?? "Verification temporarily unavailable",
|
|
4108
4145
|
guidance: guidance.message
|
|
4109
4146
|
}
|
|
4110
4147
|
] : void 0,
|
|
4148
|
+
// 4.0.0: typed marker so adapters render the misconfig envelope (503 +
|
|
4149
|
+
// MERCHANT_VERIFICATION_MISCONFIGURED) without string-matching.
|
|
4150
|
+
...isMisconfig && { misconfigured: true },
|
|
4111
4151
|
correlationId: options.correlationId,
|
|
4112
4152
|
attemptId: options.attemptId,
|
|
4113
4153
|
verifiedAt: /* @__PURE__ */ new Date()
|
|
@@ -4162,7 +4202,8 @@ async function callVerifyAccessAPI(config, request) {
|
|
|
4162
4202
|
const response = await fetch(`${config.apiBaseUrl}/agents/verify-access`, {
|
|
4163
4203
|
method: "POST",
|
|
4164
4204
|
headers,
|
|
4165
|
-
body: JSON.stringify(body)
|
|
4205
|
+
body: JSON.stringify(body),
|
|
4206
|
+
signal: AbortSignal.timeout(config.verifyTimeoutMs ?? 1e4)
|
|
4166
4207
|
});
|
|
4167
4208
|
const data = await response.json();
|
|
4168
4209
|
if (response.status === 410) {
|
|
@@ -4186,6 +4227,17 @@ async function callVerifyAccessAPI(config, request) {
|
|
|
4186
4227
|
};
|
|
4187
4228
|
}
|
|
4188
4229
|
if (!response.ok) {
|
|
4230
|
+
if (response.status === 401) {
|
|
4231
|
+
return {
|
|
4232
|
+
success: false,
|
|
4233
|
+
error: data.message || data.error || "Integration API key rejected",
|
|
4234
|
+
misconfig: true,
|
|
4235
|
+
misconfigCode: typeof data?.code === "string" ? data.code : void 0,
|
|
4236
|
+
remediation: data?.remediation && typeof data.remediation === "object" ? data.remediation : void 0,
|
|
4237
|
+
correlationId: typeof data?.correlationId === "string" ? data.correlationId : void 0,
|
|
4238
|
+
attemptId: typeof data?.attemptId === "string" ? data.attemptId : void 0
|
|
4239
|
+
};
|
|
4240
|
+
}
|
|
4189
4241
|
return {
|
|
4190
4242
|
success: false,
|
|
4191
4243
|
error: data.message || data.error || `API returned ${response.status}`,
|
|
@@ -4207,9 +4259,19 @@ async function verify(config, request, options) {
|
|
|
4207
4259
|
const urls = mergedConfig.apiBaseUrl ? getCachedWellKnownUrls(mergedConfig.apiBaseUrl) : void 0;
|
|
4208
4260
|
if (!initCheckPerformed && !mergedConfig.disableInitChecks && mergedConfig.apiBaseUrl) {
|
|
4209
4261
|
if (mergedConfig.strictInit) {
|
|
4210
|
-
await performInitCheck(
|
|
4262
|
+
await performInitCheck(
|
|
4263
|
+
mergedConfig.apiBaseUrl,
|
|
4264
|
+
mergedConfig.debug,
|
|
4265
|
+
true,
|
|
4266
|
+
mergedConfig.apiKey
|
|
4267
|
+
);
|
|
4211
4268
|
} else {
|
|
4212
|
-
void performInitCheck(
|
|
4269
|
+
void performInitCheck(
|
|
4270
|
+
mergedConfig.apiBaseUrl,
|
|
4271
|
+
mergedConfig.debug,
|
|
4272
|
+
false,
|
|
4273
|
+
mergedConfig.apiKey
|
|
4274
|
+
);
|
|
4213
4275
|
}
|
|
4214
4276
|
}
|
|
4215
4277
|
if (!deprecationWarningShown && (config.minTrustScore !== void 0 || config.minTrustScoreForFull !== void 0)) {
|
|
@@ -4248,9 +4310,10 @@ async function verify(config, request, options) {
|
|
|
4248
4310
|
const serverDenialReasons = Array.isArray(rawServerDenialReasons) && rawServerDenialReasons.length > 0 ? rawServerDenialReasons : void 0;
|
|
4249
4311
|
if (!apiResponse.success) {
|
|
4250
4312
|
return createGuidanceResponse(mergedConfig, apiResponse.error, {
|
|
4251
|
-
source: "api_error",
|
|
4313
|
+
source: apiResponse.misconfig ? "merchant_misconfig" : "api_error",
|
|
4252
4314
|
correlationId: apiResponse.correlationId,
|
|
4253
4315
|
attemptId: apiResponse.attemptId,
|
|
4316
|
+
remediation: apiResponse.remediation,
|
|
4254
4317
|
urls
|
|
4255
4318
|
});
|
|
4256
4319
|
}
|