plugin-scanner 2.2.119__py3-none-any.whl → 2.2.121__py3-none-any.whl

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.
@@ -1,4 +1,4 @@
1
- import { j as jsxRuntimeExports, ak as Tag, bG as Surface, M as Badge, r as reactExports, S as SectionLabel, b0 as HiMiniArrowTopRightOnSquare, bH as HiMiniCheckBadge } from "../guard-dashboard.js";
1
+ import { j as jsxRuntimeExports, ao as Tag, bJ as Surface, M as Badge, r as reactExports, S as SectionLabel, b4 as HiMiniArrowTopRightOnSquare, bK as HiMiniCheckBadge } from "../guard-dashboard.js";
2
2
  const ABOUT_PARTNER_SECTION_TITLE = "Standards partner program";
3
3
  const ABOUT_PARTNER_SECTION_BODY = "Join teams building on HOL open standards. Partners get early access to protocol drafts, co-marketing, and direct engineering support.";
4
4
  const ABOUT_PARTNER_CTA = "Explore partner programs";
@@ -1,4 +1,4 @@
1
- import { r as reactExports, j as jsxRuntimeExports, ao as fetchApprovalPage, ap as fetchPolicy, s as guardActionDisposition, p as protectionHealthFor, aq as HiMiniArrowLeft, c as HiMiniChevronRight, e as harnessDisplayName, n as GuardHero, R as ProofStrip, ar as HiMiniHome, L as HiMiniBolt, a0 as HiMiniAdjustmentsHorizontal, as as appSetupTarget, S as SectionLabel, A as ActionButton, q as HiMiniShieldCheck, t as formatRelativeTime, K as HiMiniExclamationTriangle, at as guardActionPresentation, M as Badge, au as DEFAULT_FILTER_STATE, av as filterEvidence, aw as sortEvidence, ax as computeMetrics, ay as CommandActivityWorkspace, k as EmptyState, az as EvidenceFilterBar, aA as EvidenceInsightStrip, aB as EvidenceActionList, aC as EvidenceActionDetail, I as useFocusTrap, aD as policyIdentityKey, C as HiMiniCloud, aE as HiMiniChartBar, ak as Tag, m as HiMiniCheckCircle, U as HiMiniXCircle, aF as runHarnessAction, aG as GuardHarnessActionError, aH as HiMiniRocketLaunch, aI as HiMiniArrowPath, aJ as HiMiniTrash, aK as clearLabelForScope, aL as formatHarnessCommand } from "../guard-dashboard.js";
1
+ import { r as reactExports, j as jsxRuntimeExports, as as fetchApprovalPage, at as fetchPolicy, s as guardActionDisposition, p as protectionHealthFor, au as HiMiniArrowLeft, c as HiMiniChevronRight, e as harnessDisplayName, n as GuardHero, W as ProofStrip, av as HiMiniHome, L as HiMiniBolt, a4 as HiMiniAdjustmentsHorizontal, aw as appSetupTarget, S as SectionLabel, A as ActionButton, q as HiMiniShieldCheck, t as formatRelativeTime, K as HiMiniExclamationTriangle, ax as guardActionPresentation, M as Badge, ay as DEFAULT_FILTER_STATE, az as filterEvidence, aA as sortEvidence, aB as computeMetrics, aC as CommandActivityWorkspace, k as EmptyState, aD as EvidenceFilterBar, aE as EvidenceInsightStrip, aF as EvidenceActionList, aG as EvidenceActionDetail, I as useFocusTrap, aH as policyIdentityKey, C as HiMiniCloud, aI as HiMiniChartBar, ao as Tag, m as HiMiniCheckCircle, Y as HiMiniXCircle, aJ as runHarnessAction, aK as GuardHarnessActionError, aL as HiMiniRocketLaunch, aM as HiMiniArrowPath, aN as HiMiniTrash, aO as clearLabelForScope, aP as formatHarnessCommand } from "../guard-dashboard.js";
2
2
  function ActivityModeButton(props) {
3
3
  const active = props.mode === props.value;
4
4
  const handleClick = reactExports.useCallback(() => props.onChange(props.value), [props.onChange, props.value]);
@@ -1,4 +1,4 @@
1
- import { j as jsxRuntimeExports, ak as Tag, t as formatRelativeTime, r as reactExports, A as ActionButton, bO as HiMiniChevronLeft, c as HiMiniChevronRight, aU as IconActionButton, x as HiMiniXMark, aZ as GuardModalLayer, bP as HiMiniFunnel, al as HiMiniMagnifyingGlass, bQ as HiMiniArrowDown, bR as HiMiniArrowUp, S as SectionLabel, aI as HiMiniArrowPath, aY as HiMiniBugAnt, k as EmptyState, a0 as HiMiniAdjustmentsHorizontal, a_ as ConnectFlowCard, K as HiMiniExclamationTriangle, bS as runAuditRemediation, M as Badge, bK as isBlockedGuardAction, aN as isSupplyChainAuditEvidence, m as HiMiniCheckCircle, U as HiMiniXCircle, e as harnessDisplayName, bj as HiMiniDocumentText, bi as guardAwareHref, q as HiMiniShieldCheck } from "../guard-dashboard.js";
1
+ import { j as jsxRuntimeExports, ao as Tag, t as formatRelativeTime, r as reactExports, A as ActionButton, bR as HiMiniChevronLeft, c as HiMiniChevronRight, aY as IconActionButton, x as HiMiniXMark, b1 as GuardModalLayer, bS as HiMiniFunnel, ap as HiMiniMagnifyingGlass, bT as HiMiniArrowDown, bU as HiMiniArrowUp, S as SectionLabel, aM as HiMiniArrowPath, b0 as HiMiniBugAnt, k as EmptyState, a4 as HiMiniAdjustmentsHorizontal, b2 as ConnectFlowCard, K as HiMiniExclamationTriangle, bV as runAuditRemediation, M as Badge, bN as isBlockedGuardAction, aR as isSupplyChainAuditEvidence, m as HiMiniCheckCircle, Y as HiMiniXCircle, e as harnessDisplayName, bm as HiMiniDocumentText, bl as guardAwareHref, q as HiMiniShieldCheck } from "../guard-dashboard.js";
2
2
  import { p as packageWorkbenchEcosystems, f as filterPackageWorkbenchFindings, b as sortPackageWorkbenchFindings, u as useResolvedApprovalGate, i as isApprovalGateRequiredError, A as ApprovalProofModal } from "./supply-chain-hub-workspace.js";
3
3
  import { r as resolveManagerCoverageManagers, a as resolveManagerCoverageStatus } from "./supply-chain-protection-stats.js";
4
4
  const STEPS = [
@@ -1,4 +1,4 @@
1
- import { j as jsxRuntimeExports, A as ActionButton, S as SectionLabel, K as HiMiniExclamationTriangle, aI as HiMiniArrowPath, m as HiMiniCheckCircle, bT as HiMiniSignal, U as HiMiniXCircle, aT as HiMiniClock, t as formatRelativeTime, M as Badge, ak as Tag } from "../guard-dashboard.js";
1
+ import { j as jsxRuntimeExports, A as ActionButton, S as SectionLabel, K as HiMiniExclamationTriangle, aM as HiMiniArrowPath, m as HiMiniCheckCircle, bW as HiMiniSignal, Y as HiMiniXCircle, aX as HiMiniClock, t as formatRelativeTime, M as Badge, ao as Tag } from "../guard-dashboard.js";
2
2
  function resolveFeedSourceMode(cloudState) {
3
3
  if (cloudState === "local_only") return "sample";
4
4
  if (cloudState === "paired_waiting") return "full";
@@ -1,4 +1,4 @@
1
- import { r as reactExports, j as jsxRuntimeExports, P as HiMiniWrenchScrewdriver, A as ActionButton, m as HiMiniCheckCircle, z as HiMiniChevronDown, Q as HiMiniExclamationCircle, e as harnessDisplayName, i as isConnectableAppHarness, p as protectionHealthFor, n as GuardHero, R as ProofStrip, S as SectionLabel, k as EmptyState, c as HiMiniChevronRight, T as HiMiniEye, U as HiMiniXCircle, V as HiMiniClipboardDocumentCheck, W as HiMiniClipboard } from "../guard-dashboard.js";
1
+ import { r as reactExports, P as waitForAuthorizeUrl, Q as startOrRecoverCloudConnect, R as openPackageFirewallAuthorizeFallback, T as waitForCloudConnection, j as jsxRuntimeExports, U as HiMiniWrenchScrewdriver, A as ActionButton, m as HiMiniCheckCircle, z as HiMiniChevronDown, V as HiMiniExclamationCircle, e as harnessDisplayName, i as isConnectableAppHarness, p as protectionHealthFor, n as GuardHero, W as ProofStrip, S as SectionLabel, k as EmptyState, c as HiMiniChevronRight, X as HiMiniEye, Y as HiMiniXCircle, Z as HiMiniClipboardDocumentCheck, _ as HiMiniClipboard } from "../guard-dashboard.js";
2
2
  import { S as SUPPORTED_APPS_BRIEF, A as APP_STATUS_LABELS } from "./app-catalog.js";
3
3
  const PROTECTION_CHECK_ACTIONS = {
4
4
  harness_hooks: {
@@ -45,6 +45,7 @@ function cloudPolicyRecoveryHint(input) {
45
45
  actionLabel: input.cloudState === "local_only" ? "Connect Guard Cloud" : "Open Guard Cloud",
46
46
  detail: "Local Guard remains active. Guard Cloud policy proof is separate from local repair and is not changed here.",
47
47
  href: input.connectUrl,
48
+ startsOAuth: input.cloudState === "local_only",
48
49
  title: "Guard Cloud policy proof"
49
50
  };
50
51
  }
@@ -96,13 +97,47 @@ function repairButtonLabel(repairState) {
96
97
  if (repairState?.status === "error") return "Retry repair";
97
98
  return "Repair protection";
98
99
  }
100
+ function cloudConnectPendingMessage(hasAuthorizeUrl, opened) {
101
+ if (!hasAuthorizeUrl) {
102
+ return "Open the secure sign-in link below. This page will update automatically.";
103
+ }
104
+ if (opened) {
105
+ return "Complete sign-in in the opened window. This page will update automatically.";
106
+ }
107
+ return "Your browser blocked the sign-in window. Open the secure sign-in link below.";
108
+ }
109
+ function cloudConnectButtonLabel(state, defaultLabel) {
110
+ if (state?.status === "working") return "Starting sign-in…";
111
+ if (state?.status === "success") return "Guard Cloud connected";
112
+ return defaultLabel;
113
+ }
114
+ function safeCloudConnectUrl(value) {
115
+ if (!value) return null;
116
+ try {
117
+ const url = new URL(value);
118
+ if (!url.hostname || url.username || url.password) return null;
119
+ const loopbackHosts = ["localhost", "127.0.0.1", "[::1]"];
120
+ const secureRemote = url.protocol === "https:";
121
+ const localHttp = url.protocol === "http:" && loopbackHosts.includes(url.hostname);
122
+ if (!secureRemote && !localHttp) return null;
123
+ return url.toString();
124
+ } catch {
125
+ return null;
126
+ }
127
+ }
99
128
  function FleetProtectionRecovery(props) {
100
129
  const [repairState, setRepairState] = reactExports.useState(null);
130
+ const [cloudConnectState, setCloudConnectState] = reactExports.useState(null);
101
131
  const [detailsOpen, setDetailsOpen] = reactExports.useState(false);
132
+ const cloudConnectControllerRef = reactExports.useRef(null);
102
133
  const gaps = props.health.checks.filter((check) => check.status !== "pass");
103
134
  const failCount = gaps.filter((check) => check.status === "fail").length;
104
135
  const unknownCount = gaps.length - failCount;
105
136
  const cloudPolicyHint = cloudPolicyRecoveryHint(props.cloudPolicy);
137
+ const isActiveCloudConnect = reactExports.useCallback(
138
+ (controller) => cloudConnectControllerRef.current === controller && !controller.signal.aborted,
139
+ []
140
+ );
106
141
  const handleRepair = reactExports.useCallback(async () => {
107
142
  setRepairState({
108
143
  status: "working",
@@ -124,8 +159,86 @@ function FleetProtectionRecovery(props) {
124
159
  const handleDetailsToggle = reactExports.useCallback(() => {
125
160
  setDetailsOpen((open) => !open);
126
161
  }, []);
162
+ const handleCloudConnect = reactExports.useCallback(async () => {
163
+ cloudConnectControllerRef.current?.abort();
164
+ const controller = new AbortController();
165
+ cloudConnectControllerRef.current = controller;
166
+ setCloudConnectState({
167
+ authorizeUrl: null,
168
+ message: "Starting secure Guard Cloud sign-in…",
169
+ status: "working"
170
+ });
171
+ try {
172
+ const status = await waitForAuthorizeUrl(
173
+ await startOrRecoverCloudConnect(controller.signal),
174
+ controller.signal
175
+ );
176
+ if (!isActiveCloudConnect(controller)) return;
177
+ if (!status.connect_required) {
178
+ setCloudConnectState({
179
+ authorizeUrl: null,
180
+ message: "Guard Cloud is connected.",
181
+ status: "success"
182
+ });
183
+ return;
184
+ }
185
+ const flow = status.connect_flow;
186
+ const authorizeUrl = safeCloudConnectUrl(flow?.authorize_url);
187
+ const signInUrl = authorizeUrl ?? safeCloudConnectUrl(flow?.connect_url);
188
+ if (!flow || !signInUrl) {
189
+ throw new Error(
190
+ flow?.detail || "Guard could not generate a secure sign-in link. Try again."
191
+ );
192
+ }
193
+ const opened = authorizeUrl ? openPackageFirewallAuthorizeFallback(authorizeUrl, flow.browser_opened) : false;
194
+ if (!isActiveCloudConnect(controller)) return;
195
+ setCloudConnectState({
196
+ authorizeUrl: signInUrl,
197
+ message: cloudConnectPendingMessage(Boolean(authorizeUrl), opened),
198
+ status: "pending"
199
+ });
200
+ const connectedStatus = await waitForCloudConnection(status, {
201
+ signal: controller.signal
202
+ });
203
+ if (!isActiveCloudConnect(controller)) return;
204
+ if (!connectedStatus.connect_required) {
205
+ setCloudConnectState({
206
+ authorizeUrl: null,
207
+ message: "Guard Cloud is connected.",
208
+ status: "success"
209
+ });
210
+ return;
211
+ }
212
+ const detail = connectedStatus.connect_flow?.detail;
213
+ setCloudConnectState({
214
+ authorizeUrl: safeCloudConnectUrl(connectedStatus.connect_flow?.authorize_url) ?? safeCloudConnectUrl(connectedStatus.connect_flow?.connect_url) ?? signInUrl,
215
+ message: connectedStatus.connect_flow?.state === "failed" ? detail || "Guard Cloud sign-in could not finish. Try again." : "Automatic checking stopped before sign-in finished. Complete sign-in, then try again.",
216
+ status: connectedStatus.connect_flow?.state === "failed" ? "error" : "pending"
217
+ });
218
+ } catch (error) {
219
+ if (!isActiveCloudConnect(controller)) return;
220
+ setCloudConnectState({
221
+ authorizeUrl: null,
222
+ message: error instanceof Error ? error.message : "Guard could not start sign-in. Try again.",
223
+ status: "error"
224
+ });
225
+ }
226
+ }, [isActiveCloudConnect]);
227
+ const handleCloudConnectClick = reactExports.useCallback(() => {
228
+ void handleCloudConnect();
229
+ }, [handleCloudConnect]);
230
+ reactExports.useEffect(() => {
231
+ cloudConnectControllerRef.current?.abort();
232
+ cloudConnectControllerRef.current = null;
233
+ setCloudConnectState(null);
234
+ }, [props.cloudPolicy.cloudState, props.cloudPolicy.connectUrl]);
235
+ reactExports.useEffect(() => () => cloudConnectControllerRef.current?.abort(), []);
127
236
  if (gaps.length === 0) return null;
128
237
  const working = repairState?.status === "working";
238
+ const cloudConnectDisabled = ["working", "success"].includes(
239
+ cloudConnectState?.status ?? ""
240
+ );
241
+ const cloudConnectMessageClassName = cloudConnectState?.status === "error" ? "text-sm text-red-600" : "text-sm text-slate-600";
129
242
  return /* @__PURE__ */ jsxRuntimeExports.jsxs(
130
243
  "section",
131
244
  {
@@ -151,7 +264,19 @@ function FleetProtectionRecovery(props) {
151
264
  cloudPolicyHint ? /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "mt-3 border-t border-brand-attention/10 pt-3 text-sm text-slate-600", children: [
152
265
  /* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: "font-medium text-brand-dark", children: cloudPolicyHint.title }),
153
266
  /* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: "mt-1", children: cloudPolicyHint.detail }),
154
- /* @__PURE__ */ jsxRuntimeExports.jsx(ActionButton, { href: cloudPolicyHint.href, variant: "outline", className: "mt-2", children: cloudPolicyHint.actionLabel })
267
+ cloudPolicyHint.startsOAuth ? /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "mt-2 flex flex-wrap items-center gap-3", children: [
268
+ /* @__PURE__ */ jsxRuntimeExports.jsx(
269
+ ActionButton,
270
+ {
271
+ onClick: handleCloudConnectClick,
272
+ disabled: cloudConnectDisabled,
273
+ variant: "outline",
274
+ children: cloudConnectButtonLabel(cloudConnectState, cloudPolicyHint.actionLabel)
275
+ }
276
+ ),
277
+ cloudConnectState?.authorizeUrl ? /* @__PURE__ */ jsxRuntimeExports.jsx(ActionButton, { href: cloudConnectState.authorizeUrl, variant: "quiet", children: "Open secure sign-in" }) : null,
278
+ cloudConnectState ? /* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: cloudConnectMessageClassName, role: "status", children: cloudConnectState.message }) : null
279
+ ] }) : /* @__PURE__ */ jsxRuntimeExports.jsx(ActionButton, { href: cloudPolicyHint.href, variant: "outline", className: "mt-2", children: cloudPolicyHint.actionLabel })
155
280
  ] }) : null,
156
281
  repairState ? /* @__PURE__ */ jsxRuntimeExports.jsxs(
157
282
  "p",
@@ -1,4 +1,4 @@
1
- import { r as reactExports, j as jsxRuntimeExports, q as HiMiniShieldCheck, bq as HiMiniInformationCircle, K as HiMiniExclamationTriangle, S as SectionLabel, A as ActionButton, bu as HiMiniArrowRight, ak as Tag, t as formatRelativeTime, y as HiMiniChevronUp, z as HiMiniChevronDown, m as HiMiniCheckCircle, U as HiMiniXCircle } from "../guard-dashboard.js";
1
+ import { r as reactExports, j as jsxRuntimeExports, q as HiMiniShieldCheck, bt as HiMiniInformationCircle, K as HiMiniExclamationTriangle, S as SectionLabel, A as ActionButton, bx as HiMiniArrowRight, ao as Tag, t as formatRelativeTime, y as HiMiniChevronUp, z as HiMiniChevronDown, m as HiMiniCheckCircle, Y as HiMiniXCircle } from "../guard-dashboard.js";
2
2
  function resolveHomeProtectionStatus(snapshot) {
3
3
  const protection = snapshot.supply_chain?.package_manager_protection;
4
4
  if (!protection) return "unknown";
@@ -1,4 +1,4 @@
1
- import { j as jsxRuntimeExports, S as SectionLabel, x as HiMiniXMark, M as Badge, ak as Tag, b as HiMiniCommandLine, K as HiMiniExclamationTriangle, bh as scopeLabel, e as harnessDisplayName, A as ActionButton, bi as guardAwareHref, t as formatRelativeTime$1, bj as HiMiniDocumentText, m as HiMiniCheckCircle, bk as HiMiniCloudArrowUp, bl as HiMiniCheck, bm as HiMiniCodeBracket, bn as HiMiniClipboardDocument, bo as HiMiniUsers, aV as HiMiniBeaker, bp as HiMiniFolder, _ as HiMiniLockClosed, q as HiMiniShieldCheck, bq as HiMiniInformationCircle, b1 as HiMiniCloudArrowDown, b0 as HiMiniArrowTopRightOnSquare, br as HiMiniIdentification, bs as policyActionLabel, r as reactExports, bt as createCloudExceptionRequest, bu as HiMiniArrowRight, k as EmptyState, al as HiMiniMagnifyingGlass, y as HiMiniChevronUp, z as HiMiniChevronDown, c as HiMiniChevronRight, bv as HiMiniPuzzlePiece, bw as HiMiniGlobeAlt, aT as HiMiniClock, bx as fetchCloudExceptions, by as fetchCloudExceptionRequests, bz as downloadBlob, bA as PolicyStatField, bB as PaginationControls, bC as HiMiniNoSymbol, bD as HiMiniCube, aI as HiMiniArrowPath, C as HiMiniCloud, a0 as HiMiniAdjustmentsHorizontal, bE as HiMiniArrowDownTray, bF as HiMiniQueueList, bf as WorkspacePageHeader, bg as __vitePreload } from "../guard-dashboard.js";
1
+ import { j as jsxRuntimeExports, S as SectionLabel, x as HiMiniXMark, M as Badge, ao as Tag, b as HiMiniCommandLine, K as HiMiniExclamationTriangle, bk as scopeLabel, e as harnessDisplayName, A as ActionButton, bl as guardAwareHref, t as formatRelativeTime$1, bm as HiMiniDocumentText, m as HiMiniCheckCircle, bn as HiMiniCloudArrowUp, bo as HiMiniCheck, bp as HiMiniCodeBracket, bq as HiMiniClipboardDocument, br as HiMiniUsers, aZ as HiMiniBeaker, bs as HiMiniFolder, a2 as HiMiniLockClosed, q as HiMiniShieldCheck, bt as HiMiniInformationCircle, b5 as HiMiniCloudArrowDown, b4 as HiMiniArrowTopRightOnSquare, bu as HiMiniIdentification, bv as policyActionLabel, r as reactExports, bw as createCloudExceptionRequest, bx as HiMiniArrowRight, k as EmptyState, ap as HiMiniMagnifyingGlass, y as HiMiniChevronUp, z as HiMiniChevronDown, c as HiMiniChevronRight, by as HiMiniPuzzlePiece, bz as HiMiniGlobeAlt, aX as HiMiniClock, bA as fetchCloudExceptions, bB as fetchCloudExceptionRequests, bC as downloadBlob, bD as PolicyStatField, bE as PaginationControls, bF as HiMiniNoSymbol, bG as HiMiniCube, aM as HiMiniArrowPath, C as HiMiniCloud, a4 as HiMiniAdjustmentsHorizontal, bH as HiMiniArrowDownTray, bI as HiMiniQueueList, bi as WorkspacePageHeader, bj as __vitePreload } from "../guard-dashboard.js";
2
2
  const CLOUD_EXCEPTION_EXPIRING_SOON_DAYS = 7;
3
3
  function parseCloudExceptionTimestamp(value) {
4
4
  if (!value || !value.trim()) {
@@ -1,4 +1,4 @@
1
- import { X as getDefaultExportFromCjs, r as reactExports, Y as React, j as jsxRuntimeExports, I as useFocusTrap, Z as HiMiniKey, S as SectionLabel, A as ActionButton, q as HiMiniShieldCheck, _ as HiMiniLockClosed, $ as HiMiniBellAlert, a0 as HiMiniAdjustmentsHorizontal, a1 as HiMiniCircleStack, a2 as TabBar, c as HiMiniChevronRight, a3 as resolveProtectionLevelCopy, a4 as fetchSettings, a5 as fetchRuntimeSnapshot, a6 as updateSettings, a7 as clearPolicy, a8 as clearReviewQueue, a9 as revokeApprovalGateCooldown, aa as disableApprovalGateTotp, ab as importSettings, ac as resetSettings, ad as enrollApprovalGateTotp, ae as verifyApprovalGateTotp, af as clearEvidence, ag as exportDiagnostics, ah as repairApprovalCenter, ai as exportSettings, aj as setupDesktopNotifications, k as EmptyState, n as GuardHero, ak as Tag, al as HiMiniMagnifyingGlass, am as HiMiniCog6Tooth, z as HiMiniChevronDown, m as HiMiniCheckCircle, K as HiMiniExclamationTriangle, an as approvalGateCooldownLabel, x as HiMiniXMark } from "../guard-dashboard.js";
1
+ import { $ as getDefaultExportFromCjs, r as reactExports, a0 as React, j as jsxRuntimeExports, I as useFocusTrap, a1 as HiMiniKey, S as SectionLabel, A as ActionButton, q as HiMiniShieldCheck, a2 as HiMiniLockClosed, a3 as HiMiniBellAlert, a4 as HiMiniAdjustmentsHorizontal, a5 as HiMiniCircleStack, a6 as TabBar, c as HiMiniChevronRight, a7 as resolveProtectionLevelCopy, a8 as fetchSettings, a9 as fetchRuntimeSnapshot, aa as updateSettings, ab as clearPolicy, ac as clearReviewQueue, ad as revokeApprovalGateCooldown, ae as disableApprovalGateTotp, af as importSettings, ag as resetSettings, ah as enrollApprovalGateTotp, ai as verifyApprovalGateTotp, aj as clearEvidence, ak as exportDiagnostics, al as repairApprovalCenter, am as exportSettings, an as setupDesktopNotifications, k as EmptyState, n as GuardHero, ao as Tag, ap as HiMiniMagnifyingGlass, aq as HiMiniCog6Tooth, z as HiMiniChevronDown, m as HiMiniCheckCircle, K as HiMiniExclamationTriangle, ar as approvalGateCooldownLabel, x as HiMiniXMark } from "../guard-dashboard.js";
2
2
  import { f as filterSettingsBySearch, R as RISK_CONTROL_CONSEQUENCES, s as securityLevelLabel } from "./app-catalog.js";
3
3
  var propTypes$2 = { exports: {} };
4
4
  var ReactPropTypesSecret_1;
@@ -1,5 +1,5 @@
1
1
  const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/chunks/supply-chain-workspace.js","assets/guard-dashboard.js","assets/index.css","assets/chunks/feed-health-workspace.js","assets/chunks/home-protection-module.js","assets/chunks/supply-chain-protection-stats.js","assets/chunks/audit-workspace.js"])))=>i.map(i=>d[i]);
2
- import { aM as isSupplyChainAuditIncomplete, aN as isSupplyChainAuditEvidence, r as reactExports, aO as buildApprovalProofCredentials, aP as isApprovalProofSubmitDisabled, j as jsxRuntimeExports, S as SectionLabel, aQ as ApprovalProofFieldInputs, A as ActionButton, aG as GuardHarnessActionError, aR as readString$1, aS as isRecord$1, m as HiMiniCheckCircle, aI as HiMiniArrowPath, K as HiMiniExclamationTriangle, ak as Tag, t as formatRelativeTime, aT as HiMiniClock, aU as IconActionButton, U as HiMiniXCircle, aJ as HiMiniTrash, q as HiMiniShieldCheck, P as HiMiniWrenchScrewdriver, aV as HiMiniBeaker, aW as ActivationSummary, aX as ActionResultPanel, al as HiMiniMagnifyingGlass, k as EmptyState, aY as HiMiniBugAnt, a4 as fetchSettings, x as HiMiniXMark, aZ as GuardModalLayer, a_ as ConnectFlowCard, a$ as ApprovalProofInline, b0 as HiMiniArrowTopRightOnSquare, b1 as HiMiniCloudArrowDown, b2 as fetchPackageFirewallStatus, b3 as runPackageAudit, b4 as resolveSupplyChainAuditFailure, b5 as runPackageSync, b6 as startPackageFirewallConnect, b7 as openPackageFirewallAuthorizeFallback, b8 as PACKAGE_FIREWALL_CONNECT_POPUP_BLOCKED_MESSAGE, b9 as repairSupplyChainProtection, ba as runPackageFirewallAction, bb as parseInterceptProofSnapshot, bc as activatePackageFirewallRuntime, bd as EntitlementNotice, be as fetchReceipts, bf as WorkspacePageHeader, bg as __vitePreload } from "../guard-dashboard.js";
2
+ import { aQ as isSupplyChainAuditIncomplete, aR as isSupplyChainAuditEvidence, r as reactExports, aS as buildApprovalProofCredentials, aT as isApprovalProofSubmitDisabled, j as jsxRuntimeExports, S as SectionLabel, aU as ApprovalProofFieldInputs, A as ActionButton, aK as GuardHarnessActionError, aV as readString$1, aW as isRecord$1, m as HiMiniCheckCircle, aM as HiMiniArrowPath, K as HiMiniExclamationTriangle, ao as Tag, t as formatRelativeTime, aX as HiMiniClock, aY as IconActionButton, Y as HiMiniXCircle, aN as HiMiniTrash, q as HiMiniShieldCheck, U as HiMiniWrenchScrewdriver, aZ as HiMiniBeaker, a_ as ActivationSummary, a$ as ActionResultPanel, ap as HiMiniMagnifyingGlass, k as EmptyState, b0 as HiMiniBugAnt, a8 as fetchSettings, x as HiMiniXMark, b1 as GuardModalLayer, b2 as ConnectFlowCard, b3 as ApprovalProofInline, b4 as HiMiniArrowTopRightOnSquare, b5 as HiMiniCloudArrowDown, b6 as fetchPackageFirewallStatus, b7 as runPackageAudit, b8 as resolveSupplyChainAuditFailure, b9 as runPackageSync, ba as startPackageFirewallConnect, R as openPackageFirewallAuthorizeFallback, bb as PACKAGE_FIREWALL_CONNECT_POPUP_BLOCKED_MESSAGE, bc as repairSupplyChainProtection, bd as runPackageFirewallAction, be as parseInterceptProofSnapshot, bf as activatePackageFirewallRuntime, bg as EntitlementNotice, bh as fetchReceipts, bi as WorkspacePageHeader, bj as __vitePreload } from "../guard-dashboard.js";
3
3
  const SEVERITY_RANK = {
4
4
  critical: 4,
5
5
  high: 3,
@@ -1,4 +1,4 @@
1
- import { r as reactExports, bI as fetchSupplyChainBundle, j as jsxRuntimeExports, S as SectionLabel, k as EmptyState, b0 as HiMiniArrowTopRightOnSquare, ak as Tag, t as formatRelativeTime, M as Badge, K as HiMiniExclamationTriangle, aY as HiMiniBugAnt, at as guardActionPresentation, bJ as isSupplyChainScannerEvidence, bK as isBlockedGuardAction, aI as HiMiniArrowPath, bL as HiMiniDocumentMagnifyingGlass, bM as HiMiniShieldExclamation, bN as HiMiniComputerDesktop, C as HiMiniCloud, m as HiMiniCheckCircle, P as HiMiniWrenchScrewdriver, A as ActionButton, z as HiMiniChevronDown, Q as HiMiniExclamationCircle, be as fetchReceipts, U as HiMiniXCircle, e as harnessDisplayName, y as HiMiniChevronUp } from "../guard-dashboard.js";
1
+ import { r as reactExports, bL as fetchSupplyChainBundle, j as jsxRuntimeExports, S as SectionLabel, k as EmptyState, b4 as HiMiniArrowTopRightOnSquare, ao as Tag, t as formatRelativeTime, M as Badge, K as HiMiniExclamationTriangle, b0 as HiMiniBugAnt, ax as guardActionPresentation, bM as isSupplyChainScannerEvidence, bN as isBlockedGuardAction, aM as HiMiniArrowPath, bO as HiMiniDocumentMagnifyingGlass, bP as HiMiniShieldExclamation, bQ as HiMiniComputerDesktop, C as HiMiniCloud, m as HiMiniCheckCircle, U as HiMiniWrenchScrewdriver, A as ActionButton, z as HiMiniChevronDown, V as HiMiniExclamationCircle, bh as fetchReceipts, Y as HiMiniXCircle, e as harnessDisplayName, y as HiMiniChevronUp } from "../guard-dashboard.js";
2
2
  import { resolveFeedStaleness } from "./feed-health-workspace.js";
3
3
  import { r as resolveHomeProtectionStatus } from "./home-protection-module.js";
4
4
  import { b as buildSupplyChainStats, r as resolveManagerCoverageManagers, a as resolveManagerCoverageStatus } from "./supply-chain-protection-stats.js";
@@ -20160,8 +20160,8 @@ const ActionButton = reactExports.forwardRef(
20160
20160
  {
20161
20161
  ref,
20162
20162
  href: guardAwareHref(href),
20163
- target: href.startsWith("https://") ? "_blank" : void 0,
20164
- rel: href.startsWith("https://") ? "noreferrer" : void 0,
20163
+ target: /^https?:\/\//i.test(href) ? "_blank" : void 0,
20164
+ rel: /^https?:\/\//i.test(href) ? "noopener noreferrer" : void 0,
20165
20165
  onClick,
20166
20166
  className,
20167
20167
  ...anchorPropsFromButtonProps(buttonProps),
@@ -28248,38 +28248,11 @@ function buildEvidenceItems(item) {
28248
28248
  }
28249
28249
  return items;
28250
28250
  }
28251
- const validationEvidencePhrases = [
28252
- // Queued requests can outlive the daemon version that created their copy.
28253
- "could not verify registry identity or package intelligence",
28254
- "cloud evaluation could not validate",
28255
- "cloud evaluation endpoint was not trusted",
28256
- "cloud evaluation returned http",
28257
- "cloud evaluation returned an invalid",
28258
- "cloud evaluation timed out",
28259
- "current package safety data was unavailable"
28260
- ];
28261
- const authorizationEvidencePhrases = [
28262
- "cloud evaluation was not authorized",
28263
- "cloud authorization expired",
28264
- "cloud evaluation could not establish a trusted session",
28265
- "cloud sign-in is missing or stale"
28266
- ];
28267
- const validationReasonCodes = /* @__PURE__ */ new Set([
28268
- "cloud_validation_error",
28269
- "cloud_http_error",
28270
- "cloud_timeout"
28271
- ]);
28272
- function packageReviewCloudRecoveryKind(item) {
28273
- const packageRequest = item.artifact_type === "supply_chain" || item.artifact_type === "package_request" || item.artifact_type.endsWith("_package");
28274
- if (!packageRequest) return null;
28275
- const reasonCode = item.decision_v2_json?.package_review_cloud_reason_code;
28276
- if (reasonCode === "cloud_auth_error") return "authorization";
28277
- if (typeof reasonCode === "string" && validationReasonCodes.has(reasonCode)) return "validation";
28278
- const evidence = [item.risk_headline, item.risk_summary, ...item.risk_signals ?? []].filter((value) => typeof value === "string").join(" ").toLowerCase();
28279
- if (authorizationEvidencePhrases.some((phrase) => evidence.includes(phrase))) {
28280
- return "authorization";
28251
+ class CloudRequestTimeoutError extends Error {
28252
+ constructor() {
28253
+ super("Guard Cloud did not respond within 5 seconds. Try again.");
28254
+ this.name = "CloudRequestTimeoutError";
28281
28255
  }
28282
- return validationEvidencePhrases.some((phrase) => evidence.includes(phrase)) ? "validation" : null;
28283
28256
  }
28284
28257
  async function withCloudRequestTimeout(request, parentSignal) {
28285
28258
  if (parentSignal?.aborted) {
@@ -28288,14 +28261,31 @@ async function withCloudRequestTimeout(request, parentSignal) {
28288
28261
  const controller = new AbortController();
28289
28262
  const abort = () => controller.abort();
28290
28263
  parentSignal?.addEventListener("abort", abort, { once: true });
28291
- const timeout = globalThis.setTimeout(() => controller.abort(), 5e3);
28264
+ let timedOut = false;
28265
+ const timeout = globalThis.setTimeout(() => {
28266
+ timedOut = true;
28267
+ controller.abort();
28268
+ }, 5e3);
28292
28269
  try {
28293
28270
  return await request(controller.signal);
28271
+ } catch (error) {
28272
+ if (timedOut && !parentSignal?.aborted && error instanceof DOMException && error.name === "AbortError") {
28273
+ throw new CloudRequestTimeoutError();
28274
+ }
28275
+ throw error;
28294
28276
  } finally {
28295
28277
  globalThis.clearTimeout(timeout);
28296
28278
  parentSignal?.removeEventListener("abort", abort);
28297
28279
  }
28298
28280
  }
28281
+ async function startOrRecoverCloudConnect(signal) {
28282
+ try {
28283
+ return await withCloudRequestTimeout(startGuardCloudConnect, signal);
28284
+ } catch (error) {
28285
+ if (!(error instanceof CloudRequestTimeoutError)) throw error;
28286
+ return await withCloudRequestTimeout(fetchGuardCloudConnectStatus, signal);
28287
+ }
28288
+ }
28299
28289
  function waitForPoll(delayMs, signal) {
28300
28290
  if (signal.aborted) {
28301
28291
  return Promise.reject(new DOMException("Cloud connection polling stopped", "AbortError"));
@@ -28347,6 +28337,39 @@ async function waitForCloudConnection(initialStatus, {
28347
28337
  }
28348
28338
  return status;
28349
28339
  }
28340
+ const validationEvidencePhrases = [
28341
+ // Queued requests can outlive the daemon version that created their copy.
28342
+ "could not verify registry identity or package intelligence",
28343
+ "cloud evaluation could not validate",
28344
+ "cloud evaluation endpoint was not trusted",
28345
+ "cloud evaluation returned http",
28346
+ "cloud evaluation returned an invalid",
28347
+ "cloud evaluation timed out",
28348
+ "current package safety data was unavailable"
28349
+ ];
28350
+ const authorizationEvidencePhrases = [
28351
+ "cloud evaluation was not authorized",
28352
+ "cloud authorization expired",
28353
+ "cloud evaluation could not establish a trusted session",
28354
+ "cloud sign-in is missing or stale"
28355
+ ];
28356
+ const validationReasonCodes = /* @__PURE__ */ new Set([
28357
+ "cloud_validation_error",
28358
+ "cloud_http_error",
28359
+ "cloud_timeout"
28360
+ ]);
28361
+ function packageReviewCloudRecoveryKind(item) {
28362
+ const packageRequest = item.artifact_type === "supply_chain" || item.artifact_type === "package_request" || item.artifact_type.endsWith("_package");
28363
+ if (!packageRequest) return null;
28364
+ const reasonCode = item.decision_v2_json?.package_review_cloud_reason_code;
28365
+ if (reasonCode === "cloud_auth_error") return "authorization";
28366
+ if (typeof reasonCode === "string" && validationReasonCodes.has(reasonCode)) return "validation";
28367
+ const evidence = [item.risk_headline, item.risk_summary, ...item.risk_signals ?? []].filter((value) => typeof value === "string").join(" ").toLowerCase();
28368
+ if (authorizationEvidencePhrases.some((phrase) => evidence.includes(phrase))) {
28369
+ return "authorization";
28370
+ }
28371
+ return validationEvidencePhrases.some((phrase) => evidence.includes(phrase)) ? "validation" : null;
28372
+ }
28350
28373
  function cloudRecoveryContent(connected, kind = "authorization") {
28351
28374
  if (kind === "validation") {
28352
28375
  return {
@@ -31351,7 +31374,7 @@ clientExports.createRoot(container).render(
31351
31374
  /* @__PURE__ */ jsxRuntimeExports.jsx(reactExports.StrictMode, { children: /* @__PURE__ */ jsxRuntimeExports.jsx(App, {}) })
31352
31375
  );
31353
31376
  export {
31354
- HiMiniBellAlert as $,
31377
+ getDefaultExportFromCjs as $,
31355
31378
  ActionButton as A,
31356
31379
  resolveCloudIntelCopy as B,
31357
31380
  HiMiniCloud as C,
@@ -31367,140 +31390,143 @@ export {
31367
31390
  Badge as M,
31368
31391
  HiMiniMinusCircle as N,
31369
31392
  OperatorHealthCard as O,
31370
- HiMiniWrenchScrewdriver as P,
31371
- HiMiniExclamationCircle as Q,
31372
- ProofStrip as R,
31393
+ waitForAuthorizeUrl as P,
31394
+ startOrRecoverCloudConnect as Q,
31395
+ openPackageFirewallAuthorizeFallback as R,
31373
31396
  SectionLabel as S,
31374
- HiMiniEye as T,
31375
- HiMiniXCircle as U,
31376
- HiMiniClipboardDocumentCheck as V,
31377
- HiMiniClipboard as W,
31378
- getDefaultExportFromCjs as X,
31379
- React as Y,
31380
- HiMiniKey as Z,
31381
- HiMiniLockClosed as _,
31397
+ waitForCloudConnection as T,
31398
+ HiMiniWrenchScrewdriver as U,
31399
+ HiMiniExclamationCircle as V,
31400
+ ProofStrip as W,
31401
+ HiMiniEye as X,
31402
+ HiMiniXCircle as Y,
31403
+ HiMiniClipboardDocumentCheck as Z,
31404
+ HiMiniClipboard as _,
31382
31405
  EvidenceActivityHeatmapMini as a,
31383
- ApprovalProofInline as a$,
31384
- HiMiniAdjustmentsHorizontal as a0,
31385
- HiMiniCircleStack as a1,
31386
- TabBar as a2,
31387
- resolveProtectionLevelCopy as a3,
31388
- fetchSettings as a4,
31389
- fetchRuntimeSnapshot as a5,
31390
- updateSettings as a6,
31391
- clearPolicy as a7,
31392
- clearReviewQueue as a8,
31393
- revokeApprovalGateCooldown as a9,
31394
- EvidenceInsightStrip as aA,
31395
- EvidenceActionList as aB,
31396
- EvidenceActionDetail as aC,
31397
- policyIdentityKey as aD,
31398
- HiMiniChartBar as aE,
31399
- runHarnessAction as aF,
31400
- GuardHarnessActionError as aG,
31401
- HiMiniRocketLaunch as aH,
31402
- HiMiniArrowPath as aI,
31403
- HiMiniTrash as aJ,
31404
- clearLabelForScope as aK,
31405
- formatHarnessCommand as aL,
31406
- isSupplyChainAuditIncomplete as aM,
31407
- isSupplyChainAuditEvidence as aN,
31408
- buildApprovalProofCredentials as aO,
31409
- isApprovalProofSubmitDisabled as aP,
31410
- ApprovalProofFieldInputs as aQ,
31411
- readString$1 as aR,
31412
- isRecord$2 as aS,
31413
- HiMiniClock as aT,
31414
- IconActionButton as aU,
31415
- HiMiniBeaker as aV,
31416
- ActivationSummary as aW,
31417
- ActionResultPanel as aX,
31418
- HiMiniBugAnt as aY,
31419
- GuardModalLayer as aZ,
31420
- ConnectFlowCard as a_,
31421
- disableApprovalGateTotp as aa,
31422
- importSettings as ab,
31423
- resetSettings as ac,
31424
- enrollApprovalGateTotp as ad,
31425
- verifyApprovalGateTotp as ae,
31426
- clearEvidence as af,
31427
- exportDiagnostics as ag,
31428
- repairApprovalCenter as ah,
31429
- exportSettings as ai,
31430
- setupDesktopNotifications as aj,
31431
- Tag as ak,
31432
- HiMiniMagnifyingGlass as al,
31433
- HiMiniCog6Tooth as am,
31434
- approvalGateCooldownLabel as an,
31435
- fetchApprovalPage as ao,
31436
- fetchPolicy as ap,
31437
- HiMiniArrowLeft as aq,
31438
- HiMiniHome as ar,
31439
- appSetupTarget as as,
31440
- guardActionPresentation as at,
31441
- DEFAULT_FILTER_STATE as au,
31442
- filterEvidence as av,
31443
- sortEvidence as aw,
31444
- computeMetrics as ax,
31445
- CommandActivityWorkspace as ay,
31446
- EvidenceFilterBar as az,
31406
+ ActionResultPanel as a$,
31407
+ React as a0,
31408
+ HiMiniKey as a1,
31409
+ HiMiniLockClosed as a2,
31410
+ HiMiniBellAlert as a3,
31411
+ HiMiniAdjustmentsHorizontal as a4,
31412
+ HiMiniCircleStack as a5,
31413
+ TabBar as a6,
31414
+ resolveProtectionLevelCopy as a7,
31415
+ fetchSettings as a8,
31416
+ fetchRuntimeSnapshot as a9,
31417
+ sortEvidence as aA,
31418
+ computeMetrics as aB,
31419
+ CommandActivityWorkspace as aC,
31420
+ EvidenceFilterBar as aD,
31421
+ EvidenceInsightStrip as aE,
31422
+ EvidenceActionList as aF,
31423
+ EvidenceActionDetail as aG,
31424
+ policyIdentityKey as aH,
31425
+ HiMiniChartBar as aI,
31426
+ runHarnessAction as aJ,
31427
+ GuardHarnessActionError as aK,
31428
+ HiMiniRocketLaunch as aL,
31429
+ HiMiniArrowPath as aM,
31430
+ HiMiniTrash as aN,
31431
+ clearLabelForScope as aO,
31432
+ formatHarnessCommand as aP,
31433
+ isSupplyChainAuditIncomplete as aQ,
31434
+ isSupplyChainAuditEvidence as aR,
31435
+ buildApprovalProofCredentials as aS,
31436
+ isApprovalProofSubmitDisabled as aT,
31437
+ ApprovalProofFieldInputs as aU,
31438
+ readString$1 as aV,
31439
+ isRecord$2 as aW,
31440
+ HiMiniClock as aX,
31441
+ IconActionButton as aY,
31442
+ HiMiniBeaker as aZ,
31443
+ ActivationSummary as a_,
31444
+ updateSettings as aa,
31445
+ clearPolicy as ab,
31446
+ clearReviewQueue as ac,
31447
+ revokeApprovalGateCooldown as ad,
31448
+ disableApprovalGateTotp as ae,
31449
+ importSettings as af,
31450
+ resetSettings as ag,
31451
+ enrollApprovalGateTotp as ah,
31452
+ verifyApprovalGateTotp as ai,
31453
+ clearEvidence as aj,
31454
+ exportDiagnostics as ak,
31455
+ repairApprovalCenter as al,
31456
+ exportSettings as am,
31457
+ setupDesktopNotifications as an,
31458
+ Tag as ao,
31459
+ HiMiniMagnifyingGlass as ap,
31460
+ HiMiniCog6Tooth as aq,
31461
+ approvalGateCooldownLabel as ar,
31462
+ fetchApprovalPage as as,
31463
+ fetchPolicy as at,
31464
+ HiMiniArrowLeft as au,
31465
+ HiMiniHome as av,
31466
+ appSetupTarget as aw,
31467
+ guardActionPresentation as ax,
31468
+ DEFAULT_FILTER_STATE as ay,
31469
+ filterEvidence as az,
31447
31470
  HiMiniCommandLine as b,
31448
- HiMiniArrowTopRightOnSquare as b0,
31449
- HiMiniCloudArrowDown as b1,
31450
- fetchPackageFirewallStatus as b2,
31451
- runPackageAudit as b3,
31452
- resolveSupplyChainAuditFailure as b4,
31453
- runPackageSync as b5,
31454
- startPackageFirewallConnect as b6,
31455
- openPackageFirewallAuthorizeFallback as b7,
31456
- PACKAGE_FIREWALL_CONNECT_POPUP_BLOCKED_MESSAGE as b8,
31457
- repairSupplyChainProtection as b9,
31458
- PolicyStatField as bA,
31459
- PaginationControls as bB,
31460
- HiMiniNoSymbol as bC,
31461
- HiMiniCube as bD,
31462
- HiMiniArrowDownTray as bE,
31463
- HiMiniQueueList as bF,
31464
- Surface as bG,
31465
- HiMiniCheckBadge as bH,
31466
- fetchSupplyChainBundle as bI,
31467
- isSupplyChainScannerEvidence as bJ,
31468
- isBlockedGuardAction as bK,
31469
- HiMiniDocumentMagnifyingGlass as bL,
31470
- HiMiniShieldExclamation as bM,
31471
- HiMiniComputerDesktop as bN,
31472
- HiMiniChevronLeft as bO,
31473
- HiMiniFunnel as bP,
31474
- HiMiniArrowDown as bQ,
31475
- HiMiniArrowUp as bR,
31476
- runAuditRemediation as bS,
31477
- HiMiniSignal as bT,
31478
- runPackageFirewallAction as ba,
31479
- parseInterceptProofSnapshot as bb,
31480
- activatePackageFirewallRuntime as bc,
31481
- EntitlementNotice as bd,
31482
- fetchReceipts as be,
31483
- WorkspacePageHeader as bf,
31484
- __vitePreload as bg,
31485
- scopeLabel as bh,
31486
- guardAwareHref as bi,
31487
- HiMiniDocumentText as bj,
31488
- HiMiniCloudArrowUp as bk,
31489
- HiMiniCheck as bl,
31490
- HiMiniCodeBracket as bm,
31491
- HiMiniClipboardDocument as bn,
31492
- HiMiniUsers as bo,
31493
- HiMiniFolder as bp,
31494
- HiMiniInformationCircle as bq,
31495
- HiMiniIdentification as br,
31496
- policyActionLabel as bs,
31497
- createCloudExceptionRequest as bt,
31498
- HiMiniArrowRight as bu,
31499
- HiMiniPuzzlePiece as bv,
31500
- HiMiniGlobeAlt as bw,
31501
- fetchCloudExceptions as bx,
31502
- fetchCloudExceptionRequests as by,
31503
- downloadBlob as bz,
31471
+ HiMiniBugAnt as b0,
31472
+ GuardModalLayer as b1,
31473
+ ConnectFlowCard as b2,
31474
+ ApprovalProofInline as b3,
31475
+ HiMiniArrowTopRightOnSquare as b4,
31476
+ HiMiniCloudArrowDown as b5,
31477
+ fetchPackageFirewallStatus as b6,
31478
+ runPackageAudit as b7,
31479
+ resolveSupplyChainAuditFailure as b8,
31480
+ runPackageSync as b9,
31481
+ fetchCloudExceptions as bA,
31482
+ fetchCloudExceptionRequests as bB,
31483
+ downloadBlob as bC,
31484
+ PolicyStatField as bD,
31485
+ PaginationControls as bE,
31486
+ HiMiniNoSymbol as bF,
31487
+ HiMiniCube as bG,
31488
+ HiMiniArrowDownTray as bH,
31489
+ HiMiniQueueList as bI,
31490
+ Surface as bJ,
31491
+ HiMiniCheckBadge as bK,
31492
+ fetchSupplyChainBundle as bL,
31493
+ isSupplyChainScannerEvidence as bM,
31494
+ isBlockedGuardAction as bN,
31495
+ HiMiniDocumentMagnifyingGlass as bO,
31496
+ HiMiniShieldExclamation as bP,
31497
+ HiMiniComputerDesktop as bQ,
31498
+ HiMiniChevronLeft as bR,
31499
+ HiMiniFunnel as bS,
31500
+ HiMiniArrowDown as bT,
31501
+ HiMiniArrowUp as bU,
31502
+ runAuditRemediation as bV,
31503
+ HiMiniSignal as bW,
31504
+ startPackageFirewallConnect as ba,
31505
+ PACKAGE_FIREWALL_CONNECT_POPUP_BLOCKED_MESSAGE as bb,
31506
+ repairSupplyChainProtection as bc,
31507
+ runPackageFirewallAction as bd,
31508
+ parseInterceptProofSnapshot as be,
31509
+ activatePackageFirewallRuntime as bf,
31510
+ EntitlementNotice as bg,
31511
+ fetchReceipts as bh,
31512
+ WorkspacePageHeader as bi,
31513
+ __vitePreload as bj,
31514
+ scopeLabel as bk,
31515
+ guardAwareHref as bl,
31516
+ HiMiniDocumentText as bm,
31517
+ HiMiniCloudArrowUp as bn,
31518
+ HiMiniCheck as bo,
31519
+ HiMiniCodeBracket as bp,
31520
+ HiMiniClipboardDocument as bq,
31521
+ HiMiniUsers as br,
31522
+ HiMiniFolder as bs,
31523
+ HiMiniInformationCircle as bt,
31524
+ HiMiniIdentification as bu,
31525
+ policyActionLabel as bv,
31526
+ createCloudExceptionRequest as bw,
31527
+ HiMiniArrowRight as bx,
31528
+ HiMiniPuzzlePiece as by,
31529
+ HiMiniGlobeAlt as bz,
31504
31530
  HiMiniChevronRight as c,
31505
31531
  createCommandActivityClient as d,
31506
31532
  harnessDisplayName as e,
@@ -1,3 +1,3 @@
1
1
  """Single source of truth for tool version."""
2
2
 
3
- __version__ = "2.2.119"
3
+ __version__ = "2.2.121"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: plugin-scanner
3
- Version: 2.2.119
3
+ Version: 2.2.121
4
4
  Summary: Lint, verify, and gate plugin ecosystems for maintainers, CI, and publish workflows.
5
5
  Project-URL: Homepage, https://hol.org/guard
6
6
  Project-URL: Security, https://hol.org/guard/security
@@ -29,7 +29,7 @@ codex_plugin_scanner/trust_scoring.py,sha256=t_Lw13HZ766UCJzTtNNwllZK_k2ks_x-8St
29
29
  codex_plugin_scanner/trust_skill_scoring.py,sha256=e-SrMBgAruzFn4RD0pGpP9rtPXxc2ji_CKpcnFPRh3M,12542
30
30
  codex_plugin_scanner/trust_specs.py,sha256=aYGSB8M9RQp1uwhsRaWlVa1M9Vk51kUIxmBXkW8noZU,10729
31
31
  codex_plugin_scanner/verification.py,sha256=3J2gccDYa6Yn84rIvOoyDBcTG65NiYNr8X5Yxvln7t0,31069
32
- codex_plugin_scanner/version.py,sha256=rQRTNPip5U8bVJM5Fz-FvAGoH1rc3FsQBomCZspgB6Q,72
32
+ codex_plugin_scanner/version.py,sha256=sGKCqHExytRKA-j0Q6JOIoiYgS__f6sd44UWRKLiFYM,72
33
33
  codex_plugin_scanner/checks/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
34
34
  codex_plugin_scanner/checks/best_practices.py,sha256=uB3DXLggqxjfyBMH_1yvX4nyFhpIvaRHjTyyueoO-GQ,8473
35
35
  codex_plugin_scanner/checks/claude.py,sha256=cMucH5pmKgQtBnDcycOzMMlKL-Q5HQemPqUmTLF0DzE,10189
@@ -404,22 +404,22 @@ codex_plugin_scanner/guard/daemon/static/favicon-16x16.png,sha256=jcclKW2ZXshOJU
404
404
  codex_plugin_scanner/guard/daemon/static/favicon-32x32.png,sha256=kFgVF3ZorfAwCCc5BlCL6GYaoPilCf3m5H4elkPUeso,1352
405
405
  codex_plugin_scanner/guard/daemon/static/favicon.ico,sha256=NyHUlCArXLJQJYu7qpTb89I5q4e2lUwwa858YRSvVM0,4270
406
406
  codex_plugin_scanner/guard/daemon/static/index.html,sha256=r6C56uWqarR_ER8vLbBMIdnbK-0I4LKALCTJK0-CyJQ,1513
407
- codex_plugin_scanner/guard/daemon/static/assets/guard-dashboard.js,sha256=X-L_yevxElQ__atUtZh-7J0Z_xweqP34qKTY-5zy_nI,1447686
407
+ codex_plugin_scanner/guard/daemon/static/assets/guard-dashboard.js,sha256=k3fwdEXjsEab4RbvrH5PzX4svgj3bxCty2ZhB20iOo4,1448536
408
408
  codex_plugin_scanner/guard/daemon/static/assets/index.css,sha256=ra6ogkxA502VvKX35cfNNsAi2NQPl1snDfWxqD3klqM,151689
409
- codex_plugin_scanner/guard/daemon/static/assets/chunks/about-workspace.js,sha256=meWOuSqC2na7YK1jqGDvePiPh6ML9cZtxiOVzqa33zM,32410
409
+ codex_plugin_scanner/guard/daemon/static/assets/chunks/about-workspace.js,sha256=dxNruIbkQz2h26w_RRntmk9w-4FUWuXAhZkekGylI2o,32410
410
410
  codex_plugin_scanner/guard/daemon/static/assets/chunks/app-catalog.js,sha256=uFKp_4soxwb3RpQV7k1_Zi6fp8DoUtBZQy9w6EtU-Yk,9014
411
- codex_plugin_scanner/guard/daemon/static/assets/chunks/app-detail-workspace.js,sha256=mrmCKcab_AvLJWhoP57S_dFNXyxkJsBpOiCAAdFqDVQ,85774
412
- codex_plugin_scanner/guard/daemon/static/assets/chunks/audit-workspace.js,sha256=uO-d7zU0J3o3ilZINGonVk2i8fjPAwsjhVguCAYs5BY,68381
413
- codex_plugin_scanner/guard/daemon/static/assets/chunks/feed-health-workspace.js,sha256=VN5QC6DqR0Sl27XoATLT-X9I94xY90WxFPYoXVZTH9c,9464
414
- codex_plugin_scanner/guard/daemon/static/assets/chunks/fleet-workspace.js,sha256=G4T0UpW6MTVC7l3Fl6aeDZjSqI_xtzuXMVl0u05-FrQ,29132
411
+ codex_plugin_scanner/guard/daemon/static/assets/chunks/app-detail-workspace.js,sha256=iYzHhG83f58YcB1URjJcE68HY0SmDbNnIlRNiSfyfjU,85774
412
+ codex_plugin_scanner/guard/daemon/static/assets/chunks/audit-workspace.js,sha256=aWxluagmJ77fYkMcmvySVmyC95jHxUSREiXtpxeHVu0,68381
413
+ codex_plugin_scanner/guard/daemon/static/assets/chunks/feed-health-workspace.js,sha256=mCmL4D57SjUkQXuNvV3Z3zKRNwEcAOMeu8bMSzCah3Q,9464
414
+ codex_plugin_scanner/guard/daemon/static/assets/chunks/fleet-workspace.js,sha256=JGSfiOFdJenrQb-MJ1ITHJGnluVrWMhOKH9GOchV4No,35015
415
415
  codex_plugin_scanner/guard/daemon/static/assets/chunks/help-modal.js,sha256=HAHxqhQyJddBpHvWnK_YxXdPsJCXabdqrGxgZ787mxM,5897
416
416
  codex_plugin_scanner/guard/daemon/static/assets/chunks/home-dashboard.js,sha256=kQXiWtmdjERta6eD6JCmtNtmVolxa3FHx5PcrrEPbIU,50908
417
- codex_plugin_scanner/guard/daemon/static/assets/chunks/home-protection-module.js,sha256=gNY8TStS3gbP0uTbHUtR3BOkFXfuG-i2-jNoE1wMR-E,12854
418
- codex_plugin_scanner/guard/daemon/static/assets/chunks/policy-workspace-page.js,sha256=jVTNLOtiKWvPuTMvPF5VIP2nbEGTZ-Li6--E9YdotYU,203476
419
- codex_plugin_scanner/guard/daemon/static/assets/chunks/settings-workspace.js,sha256=hqCu185l75j9fLRiEyUfjbe1w-toFjPO8UnGF7ppJIk,193617
420
- codex_plugin_scanner/guard/daemon/static/assets/chunks/supply-chain-hub-workspace.js,sha256=eHBg3zK4hWNzq_AAGiIHc1WUHBPcf5KnP7brRslw7fo,112350
417
+ codex_plugin_scanner/guard/daemon/static/assets/chunks/home-protection-module.js,sha256=C76A8ZD1x1H_u326bvliZFlFipIc3dSgL0bgYKl0YJM,12854
418
+ codex_plugin_scanner/guard/daemon/static/assets/chunks/policy-workspace-page.js,sha256=Bx-fwTyKMgSQRotv1UWfyRna7BG_JskfqAYBBW--P4s,203477
419
+ codex_plugin_scanner/guard/daemon/static/assets/chunks/settings-workspace.js,sha256=b-w-P2xBkhA40RFeucmS5RZmKT0a9ZZmBvTCMBW1vXc,193621
420
+ codex_plugin_scanner/guard/daemon/static/assets/chunks/supply-chain-hub-workspace.js,sha256=SgJtzSzmb8T7hG34qdSBK6TUvDsCtOK8z06Oy9zemio,112349
421
421
  codex_plugin_scanner/guard/daemon/static/assets/chunks/supply-chain-protection-stats.js,sha256=nlQHR1TTfJk_0k3o_J9W8PvNsnhtY3_ihG5Qvts7nF0,1848
422
- codex_plugin_scanner/guard/daemon/static/assets/chunks/supply-chain-workspace.js,sha256=P7hk00AjNkYtK25ZN42hZ_71jQuvz3bOdD0nY1fOa8Q,55261
422
+ codex_plugin_scanner/guard/daemon/static/assets/chunks/supply-chain-workspace.js,sha256=bofpxdzNu5phebMjIjol356hkS1p69Qj3GH64h_-Qvk,55261
423
423
  codex_plugin_scanner/guard/daemon/static/brand/Logo_Icon_Dark.png,sha256=-e9YJXzXCdv3XEf6yTUE43uOjG7qTPaVj8oHp-ognsU,175889
424
424
  codex_plugin_scanner/guard/daemon/static/brand/Logo_Whole.png,sha256=AZNGsA6g6vnYKo_ioWL9ZFTRMWwopVlDDeTOeIYbaz4,81172
425
425
  codex_plugin_scanner/guard/mcp/__init__.py,sha256=P03TdPPtcIBZoZ5WHuwGBi5XT9-WA4l_SlHMVX34SjY,438
@@ -704,8 +704,8 @@ codex_plugin_scanner/integrations/cisco_skill_scanner.py,sha256=3tW9Ya5riLsIbU9Y
704
704
  codex_plugin_scanner/rules/__init__.py,sha256=bhAnNlVvEiAoksf_-Vd4f74JNz66pTINhUO2mMc8kvs,293
705
705
  codex_plugin_scanner/rules/registry.py,sha256=7BaRerM26teDUM0S48d3sPHbqzmq2JhuelC0_ni3364,4580
706
706
  codex_plugin_scanner/rules/specs.py,sha256=gpU0lijxqdSEZMMf28vciQxob-lvBEPcMQ4BG6N_r3I,650
707
- plugin_scanner-2.2.119.dist-info/METADATA,sha256=R6NYYpaIECYtD17sk6Z_eW7JkGvBSNlKSbamYXrWbwg,48721
708
- plugin_scanner-2.2.119.dist-info/WHEEL,sha256=mffPy8wBnZQn2VnJUU5jE99KsxaSfiyMHV9Yt0aLVxs,87
709
- plugin_scanner-2.2.119.dist-info/entry_points.txt,sha256=SLGKi3GvvSsPwave-k2JQt2meG0pM7aaC6VlUy47Crg,122
710
- plugin_scanner-2.2.119.dist-info/licenses/LICENSE,sha256=UbiP0-niTtzc4d0UWk_KLc0SkRQH8AsG36b_YA-XM8E,11358
711
- plugin_scanner-2.2.119.dist-info/RECORD,,
707
+ plugin_scanner-2.2.121.dist-info/METADATA,sha256=MeXhHmifXHqz5j4mNudtBD4AxsBkppyDZa9zOQGW52o,48721
708
+ plugin_scanner-2.2.121.dist-info/WHEEL,sha256=mffPy8wBnZQn2VnJUU5jE99KsxaSfiyMHV9Yt0aLVxs,87
709
+ plugin_scanner-2.2.121.dist-info/entry_points.txt,sha256=SLGKi3GvvSsPwave-k2JQt2meG0pM7aaC6VlUy47Crg,122
710
+ plugin_scanner-2.2.121.dist-info/licenses/LICENSE,sha256=UbiP0-niTtzc4d0UWk_KLc0SkRQH8AsG36b_YA-XM8E,11358
711
+ plugin_scanner-2.2.121.dist-info/RECORD,,