@westbayberry/dg 2.2.0 → 2.3.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/agents/claude-code.js +10 -0
- package/dist/agents/codex.js +1 -1
- package/dist/agents/cursor.js +6 -1
- package/dist/agents/gate-posture.js +21 -0
- package/dist/agents/persistence.js +68 -2
- package/dist/agents/registry.js +4 -3
- package/dist/agents/routing.js +118 -0
- package/dist/agents/windsurf.js +1 -1
- package/dist/audit/rules.js +6 -2
- package/dist/auth/store.js +9 -2
- package/dist/commands/agents.js +45 -1
- package/dist/commands/audit.js +6 -0
- package/dist/commands/setup.js +1 -2
- package/dist/commands/uninstall.js +2 -1
- package/dist/config/settings.js +35 -4
- package/dist/install-ui/LiveInstall.js +3 -2
- package/dist/install-ui/block-render.js +17 -13
- package/dist/launcher/agent-check.js +455 -25
- package/dist/launcher/agent-hook-exec.js +1 -1
- package/dist/launcher/agent-hook-io.js +12 -4
- package/dist/launcher/classify.js +27 -1
- package/dist/launcher/env.js +39 -7
- package/dist/launcher/install-preflight.js +15 -6
- package/dist/launcher/live-install.js +4 -3
- package/dist/launcher/manifest-screen.js +171 -0
- package/dist/launcher/output-redaction.js +4 -1
- package/dist/launcher/preflight-prompt.js +4 -3
- package/dist/launcher/run.js +90 -18
- package/dist/project/dgfile.js +2 -1
- package/dist/project/override-trust.js +0 -0
- package/dist/proxy/metadata-map.js +29 -13
- package/dist/proxy/server.js +130 -14
- package/dist/runtime/first-run.js +2 -1
- package/dist/sbom-ui/inventory.js +5 -1
- package/dist/scan/staged.js +31 -8
- package/dist/scan-ui/hooks/useScan.js +4 -1
- package/dist/security/sanitize.js +8 -4
- package/dist/service/state.js +1 -1
- package/dist/service/trust-store.js +5 -9
- package/dist/service/worker.js +3 -3
- package/dist/setup/plan.js +156 -12
- package/dist/setup/uninstall-standalone.js +25 -0
- package/dist/setup-ui/wizard.js +9 -1
- package/dist/standalone/uninstall.mjs +2123 -0
- package/dist/verify/local.js +2 -2
- package/dist/verify/package-check.js +3 -1
- package/npm-shrinkwrap.json +2 -2
- package/package.json +2 -1
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { formatCooldownDuration, formatPackageAge } from "../policy/cooldown.js";
|
|
2
|
+
import { sanitizeLine } from "../security/sanitize.js";
|
|
2
3
|
const VERIFIED_BAD = new Set([
|
|
3
4
|
"malware",
|
|
4
5
|
"policy",
|
|
@@ -53,9 +54,9 @@ export function describeBlockedInstall(decision) {
|
|
|
53
54
|
: "Re-check later with 'dg verify', or override if you accept the risk.";
|
|
54
55
|
return {
|
|
55
56
|
kind: verifiedBad ? "blocked" : "unverified",
|
|
56
|
-
packageName: decision.packageName,
|
|
57
|
+
packageName: sanitizeLine(decision.packageName),
|
|
57
58
|
headline: HEADLINES[decision.cause],
|
|
58
|
-
reason: decision.reason,
|
|
59
|
+
reason: sanitizeLine(decision.reason),
|
|
59
60
|
cause: decision.cause,
|
|
60
61
|
...(decision.resetsAt ? { resetsAt: decision.resetsAt } : {}),
|
|
61
62
|
...(nextStep ? { nextStep } : {}),
|
|
@@ -63,27 +64,30 @@ export function describeBlockedInstall(decision) {
|
|
|
63
64
|
};
|
|
64
65
|
}
|
|
65
66
|
export function describeFlaggedWarn(decision) {
|
|
67
|
+
const packageName = sanitizeLine(decision.packageName);
|
|
66
68
|
if (decision.cause === "quota-exceeded") {
|
|
67
|
-
return { packageName
|
|
69
|
+
return { packageName, reason: "installed unverified (over quota)" };
|
|
68
70
|
}
|
|
69
71
|
if (decision.forceOverride?.allowed) {
|
|
70
|
-
return { packageName
|
|
72
|
+
return { packageName, reason: "installed despite block (--dg-force-install)" };
|
|
71
73
|
}
|
|
72
|
-
return { packageName
|
|
74
|
+
return { packageName, reason: sanitizeLine(decision.reason) };
|
|
73
75
|
}
|
|
74
76
|
export function renderInstallDecision(decision) {
|
|
77
|
+
const packageName = sanitizeLine(decision.packageName);
|
|
78
|
+
const reason = sanitizeLine(decision.reason);
|
|
75
79
|
if (decision.action === "pass") {
|
|
76
|
-
return `✓ DG verified ${
|
|
80
|
+
return `✓ DG verified ${packageName} — clean\n`;
|
|
77
81
|
}
|
|
78
82
|
if (decision.action === "warn") {
|
|
79
83
|
if (decision.cause === "quota-exceeded") {
|
|
80
84
|
const reset = formatResetDate(decision.resetsAt);
|
|
81
|
-
return `⚠ Over quota — installed ${
|
|
85
|
+
return `⚠ Over quota — installed ${packageName} unverified${reset ? ` (resets ${reset})` : ""}\n`;
|
|
82
86
|
}
|
|
83
87
|
if (decision.forceOverride?.allowed) {
|
|
84
|
-
return `⚠ DG override — installing ${
|
|
88
|
+
return `⚠ DG override — installing ${packageName} despite block (--dg-force-install)\n`;
|
|
85
89
|
}
|
|
86
|
-
return `⚠ DG flagged ${
|
|
90
|
+
return `⚠ DG flagged ${packageName} (warn) — ${reason}\n`;
|
|
87
91
|
}
|
|
88
92
|
if (decision.cause === "quota-exceeded") {
|
|
89
93
|
const reset = formatResetDate(decision.resetsAt);
|
|
@@ -98,15 +102,15 @@ export function renderInstallDecision(decision) {
|
|
|
98
102
|
verifiedBad
|
|
99
103
|
? `✘ DG blocked install — ${headline}`
|
|
100
104
|
: decision.cause === "cooldown"
|
|
101
|
-
? `? DG quarantined ${
|
|
102
|
-
: `? DG could not verify ${
|
|
103
|
-
` ${
|
|
105
|
+
? `? DG quarantined ${packageName} — ${headline}`
|
|
106
|
+
: `? DG could not verify ${packageName} — ${headline}`,
|
|
107
|
+
` ${packageName} ${reason}`
|
|
104
108
|
];
|
|
105
109
|
if (decision.cause === "cooldown" && decision.cooldown) {
|
|
106
110
|
lines.push(` ${cooldownDetailLine(decision.cooldown)}`);
|
|
107
111
|
}
|
|
108
112
|
if (decision.dashboardUrl) {
|
|
109
|
-
lines.push(` Evidence: ${decision.dashboardUrl}`);
|
|
113
|
+
lines.push(` Evidence: ${sanitizeLine(decision.dashboardUrl)}`);
|
|
110
114
|
}
|
|
111
115
|
if (decision.unauthenticated && decision.cause !== "needs-login") {
|
|
112
116
|
lines.push(" Auth: local policy only (run 'dg login' for full coverage)");
|