@astrasyncai/verification-gateway 3.11.0 → 3.11.1
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 +1 -1
- package/dist/adapter-interface/interface.d.ts +1 -1
- package/dist/adapters/express.js +1 -1
- package/dist/adapters/express.js.map +1 -1
- package/dist/adapters/express.mjs +1 -1
- package/dist/adapters/express.mjs.map +1 -1
- package/dist/adapters/mcp.js +1 -1
- package/dist/adapters/mcp.js.map +1 -1
- package/dist/adapters/mcp.mjs +1 -1
- package/dist/adapters/mcp.mjs.map +1 -1
- package/dist/adapters/nextjs.js +1 -1
- package/dist/adapters/nextjs.js.map +1 -1
- package/dist/adapters/nextjs.mjs +1 -1
- package/dist/adapters/nextjs.mjs.map +1 -1
- package/dist/adapters/sdk.js +1 -1
- package/dist/adapters/sdk.js.map +1 -1
- package/dist/adapters/sdk.mjs +1 -1
- package/dist/adapters/sdk.mjs.map +1 -1
- package/dist/bin/astrasync-claude-hook.js +63 -19
- package/dist/bin/astrasync-codex-hook.js +63 -19
- package/dist/bin/astrasync-guard.js +63 -19
- package/dist/bin/astrasync.js +63 -19
- package/dist/browser/background.js +63 -19
- package/dist/browser/background.js.map +1 -1
- package/dist/browser/background.mjs +63 -19
- package/dist/browser/background.mjs.map +1 -1
- package/dist/browser/browser-adapter.d.mts +1 -1
- package/dist/browser/browser-adapter.d.ts +1 -1
- package/dist/claude-code/claude-code-adapter.d.mts +1 -1
- package/dist/claude-code/claude-code-adapter.d.ts +1 -1
- package/dist/cli/index.d.mts +1 -1
- package/dist/cli/index.d.ts +1 -1
- package/dist/codex/index.d.mts +1 -1
- package/dist/codex/index.d.ts +1 -1
- package/dist/codex/index.js +63 -19
- package/dist/codex/index.js.map +1 -1
- package/dist/codex/index.mjs +63 -19
- package/dist/codex/index.mjs.map +1 -1
- package/dist/cursor/cursor-adapter.d.mts +1 -1
- package/dist/cursor/cursor-adapter.d.ts +1 -1
- package/dist/cursor/extension.d.mts +1 -1
- package/dist/cursor/extension.d.ts +1 -1
- package/dist/cursor/extension.js +63 -19
- package/dist/cursor/extension.js.map +1 -1
- package/dist/cursor/extension.mjs +63 -19
- package/dist/cursor/extension.mjs.map +1 -1
- package/dist/gateway/gateway.d.mts +1 -1
- package/dist/gateway/gateway.d.ts +1 -1
- package/dist/gateway/gateway.js +63 -19
- package/dist/gateway/gateway.js.map +1 -1
- package/dist/gateway/gateway.mjs +63 -19
- package/dist/gateway/gateway.mjs.map +1 -1
- package/dist/git-trigger/git-hooks.d.mts +1 -1
- package/dist/git-trigger/git-hooks.d.ts +1 -1
- package/dist/index.d.mts +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +1 -1
- package/dist/index.mjs.map +1 -1
- package/dist/local-evaluator/evaluator.d.mts +10 -1
- package/dist/local-evaluator/evaluator.d.ts +10 -1
- package/dist/local-evaluator/evaluator.js +20 -9
- package/dist/local-evaluator/evaluator.js.map +1 -1
- package/dist/local-evaluator/evaluator.mjs +20 -9
- package/dist/local-evaluator/evaluator.mjs.map +1 -1
- package/dist/{types-C23_uaY8.d.ts → types-DhFPiZ3t.d.ts} +6 -1
- package/dist/{types-BV6abBnF.d.mts → types-cQVCMeNV.d.mts} +6 -1
- package/dist/verify.js +1 -1
- package/dist/verify.js.map +1 -1
- package/dist/verify.mjs +1 -1
- package/dist/verify.mjs.map +1 -1
- package/package.json +1 -1
package/dist/gateway/gateway.mjs
CHANGED
|
@@ -121,8 +121,9 @@ function extractBacktickSubstitutions(text, collect) {
|
|
|
121
121
|
return kept.join(" ");
|
|
122
122
|
}
|
|
123
123
|
function basename(token) {
|
|
124
|
-
const slash = token.lastIndexOf("/");
|
|
125
|
-
|
|
124
|
+
const slash = Math.max(token.lastIndexOf("/"), token.lastIndexOf("\\"));
|
|
125
|
+
const name = slash === -1 ? token : token.slice(slash + 1);
|
|
126
|
+
return name.replace(/\.(exe|cmd|bat|ps1)$/i, "");
|
|
126
127
|
}
|
|
127
128
|
function matchSegment(segment, list) {
|
|
128
129
|
const tokens = segment.split(/\s+/).filter((t) => /[a-z0-9]/.test(t));
|
|
@@ -255,7 +256,9 @@ var LocalEvaluator = class {
|
|
|
255
256
|
}
|
|
256
257
|
return {
|
|
257
258
|
recommendation: "ALLOW",
|
|
258
|
-
|
|
259
|
+
// "evaluated": dimensions absent from the policy are skipped, not
|
|
260
|
+
// failed — evaluatedDimensions below records which ones ran.
|
|
261
|
+
reason: "All evaluated PDLSS checks passed",
|
|
259
262
|
evaluatedDimensions: {
|
|
260
263
|
purpose: true,
|
|
261
264
|
scope: !!this.policy.scope,
|
|
@@ -354,7 +357,7 @@ var LocalEvaluator = class {
|
|
|
354
357
|
}
|
|
355
358
|
}
|
|
356
359
|
if ((context.purpose === "file.read" || context.purpose === "file.write" || context.purpose === "file.delete") && context.target) {
|
|
357
|
-
const targetLower = context.target.toLowerCase();
|
|
360
|
+
const targetLower = context.target.toLowerCase().replace(/\\/g, "/");
|
|
358
361
|
for (const sensitivePath of SENSITIVE_PATHS) {
|
|
359
362
|
if (targetLower.includes(sensitivePath.toLowerCase())) {
|
|
360
363
|
score = Math.max(score, 50);
|
|
@@ -383,12 +386,20 @@ var LocalEvaluator = class {
|
|
|
383
386
|
matchesAnyPattern(value, patterns) {
|
|
384
387
|
return patterns.some((pattern) => this.matchGlob(value, pattern));
|
|
385
388
|
}
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
389
|
+
homePrefix() {
|
|
390
|
+
if (this.cachedHomePrefix !== void 0) return this.cachedHomePrefix;
|
|
391
|
+
const env = typeof process !== "undefined" ? process.env : void 0;
|
|
392
|
+
const home = env?.HOME || env?.USERPROFILE;
|
|
393
|
+
this.cachedHomePrefix = home ? home.replace(/\\/g, "/") : null;
|
|
394
|
+
return this.cachedHomePrefix;
|
|
395
|
+
}
|
|
391
396
|
matchGlob(value, pattern) {
|
|
397
|
+
value = value.replace(/\\/g, "/");
|
|
398
|
+
pattern = pattern.replace(/\\/g, "/");
|
|
399
|
+
if (pattern === "~" || pattern.startsWith("~/")) {
|
|
400
|
+
const home = this.homePrefix();
|
|
401
|
+
if (home) pattern = home + pattern.slice(1);
|
|
402
|
+
}
|
|
392
403
|
if (pattern === value) return true;
|
|
393
404
|
const starCount = (pattern.match(/\*/g) ?? []).length;
|
|
394
405
|
if (starCount > 8) {
|
|
@@ -3661,7 +3672,7 @@ function getTrustLevel(score) {
|
|
|
3661
3672
|
}
|
|
3662
3673
|
|
|
3663
3674
|
// src/version.ts
|
|
3664
|
-
var SDK_VERSION = "3.11.
|
|
3675
|
+
var SDK_VERSION = "3.11.1";
|
|
3665
3676
|
|
|
3666
3677
|
// src/well-known.ts
|
|
3667
3678
|
var CACHE_TTL_MS = 60 * 60 * 1e3;
|
|
@@ -4428,13 +4439,29 @@ var TraceLogger = class {
|
|
|
4428
4439
|
*/
|
|
4429
4440
|
logEvaluation(context, decision) {
|
|
4430
4441
|
if (!this.enabled) return;
|
|
4431
|
-
|
|
4432
|
-
|
|
4433
|
-
|
|
4434
|
-
|
|
4435
|
-
|
|
4436
|
-
|
|
4437
|
-
|
|
4442
|
+
let event;
|
|
4443
|
+
try {
|
|
4444
|
+
event = {
|
|
4445
|
+
id: this.generateId(),
|
|
4446
|
+
timestamp: /* @__PURE__ */ new Date(),
|
|
4447
|
+
type: "evaluation",
|
|
4448
|
+
context: redactDeep(context),
|
|
4449
|
+
decision: redactDeep(decision)
|
|
4450
|
+
};
|
|
4451
|
+
} catch (err) {
|
|
4452
|
+
event = {
|
|
4453
|
+
id: this.generateId(),
|
|
4454
|
+
timestamp: /* @__PURE__ */ new Date(),
|
|
4455
|
+
type: "error",
|
|
4456
|
+
metadata: {
|
|
4457
|
+
error: `trace redaction failed: ${err instanceof Error ? err.message : String(err)}`,
|
|
4458
|
+
recommendation: decision.recommendation,
|
|
4459
|
+
purpose: context.purpose,
|
|
4460
|
+
action: context.action
|
|
4461
|
+
}
|
|
4462
|
+
};
|
|
4463
|
+
}
|
|
4464
|
+
this.write(event);
|
|
4438
4465
|
}
|
|
4439
4466
|
/**
|
|
4440
4467
|
* Log a tool call the guard saw but did not govern. One line per skip
|
|
@@ -4476,17 +4503,34 @@ var TraceLogger = class {
|
|
|
4476
4503
|
});
|
|
4477
4504
|
}
|
|
4478
4505
|
write(event) {
|
|
4506
|
+
let line;
|
|
4507
|
+
try {
|
|
4508
|
+
line = JSON.stringify(event) + "\n";
|
|
4509
|
+
} catch {
|
|
4510
|
+
return;
|
|
4511
|
+
}
|
|
4479
4512
|
try {
|
|
4480
4513
|
const filePath = this.getCurrentFilePath();
|
|
4481
|
-
const line = JSON.stringify(event) + "\n";
|
|
4482
4514
|
if (existsSync2(filePath)) {
|
|
4483
4515
|
const stats = statSync(filePath);
|
|
4484
4516
|
if (stats.size > MAX_FILE_SIZE) {
|
|
4485
4517
|
this.rotate();
|
|
4486
4518
|
}
|
|
4487
4519
|
}
|
|
4488
|
-
|
|
4520
|
+
for (let attempt = 0; attempt < 3; attempt++) {
|
|
4521
|
+
try {
|
|
4522
|
+
appendFileSync(filePath, line);
|
|
4523
|
+
return;
|
|
4524
|
+
} catch {
|
|
4525
|
+
}
|
|
4526
|
+
}
|
|
4527
|
+
const fallbackPath = filePath.replace(/\.jsonl$/, `-r${process.pid}.jsonl`);
|
|
4528
|
+
appendFileSync(fallbackPath, line);
|
|
4489
4529
|
} catch {
|
|
4530
|
+
try {
|
|
4531
|
+
console.error(`[AstraSync TraceLogger] failed to persist trace line: ${line.trim()}`);
|
|
4532
|
+
} catch {
|
|
4533
|
+
}
|
|
4490
4534
|
}
|
|
4491
4535
|
}
|
|
4492
4536
|
getCurrentFilePath() {
|