From 179180d6048564ea79f5ce62adf963c418f68211 Mon Sep 17 00:00:00 2001
From: David Culbreth
Date: Thu, 5 Mar 2026 06:52:55 -0600
Subject: [PATCH] eslint
---
.gitea/workflows/ci.yml | 113 ++++++++++++++-
web/src/api/models/ActionSummary.ts | 2 +-
.../models/ApiResponse_CurrentUserResponse.ts | 2 +-
web/src/api/models/ApiResponse_KeyResponse.ts | 2 +-
.../models/ApiResponse_PackInstallResponse.ts | 2 +-
.../models/ApiResponse_QueueStatsResponse.ts | 2 +-
web/src/api/models/ApiResponse_String.ts | 2 +-
.../api/models/ApiResponse_TokenResponse.ts | 2 +-
.../ApiResponse_WebhookReceiverResponse.ts | 2 +-
web/src/api/models/ChangePasswordRequest.ts | 2 +-
web/src/api/models/CreateKeyRequest.ts | 2 +-
web/src/api/models/CurrentUserResponse.ts | 2 +-
web/src/api/models/EnforcementCondition.ts | 2 +-
web/src/api/models/EnforcementStatus.ts | 2 +-
web/src/api/models/EnforcementSummary.ts | 2 +-
web/src/api/models/EventSummary.ts | 2 +-
web/src/api/models/ExecutionStatus.ts | 2 +-
web/src/api/models/ExecutionSummary.ts | 2 +-
web/src/api/models/HealthResponse.ts | 2 +-
web/src/api/models/InquiryStatus.ts | 2 +-
web/src/api/models/InquirySummary.ts | 2 +-
web/src/api/models/InstallPackRequest.ts | 2 +-
web/src/api/models/KeyResponse.ts | 2 +-
web/src/api/models/KeySummary.ts | 2 +-
web/src/api/models/LoginRequest.ts | 2 +-
web/src/api/models/OwnerType.ts | 2 +-
web/src/api/models/PackInstallResponse.ts | 2 +-
web/src/api/models/PackSummary.ts | 2 +-
web/src/api/models/PackTestExecution.ts | 2 +-
web/src/api/models/PackTestResult.ts | 2 +-
web/src/api/models/PackTestSummary.ts | 2 +-
.../api/models/PackWorkflowSyncResponse.ts | 2 +-
.../models/PackWorkflowValidationResponse.ts | 2 +-
.../models/PaginatedResponse_ActionSummary.ts | 2 +-
.../PaginatedResponse_EnforcementSummary.ts | 2 +-
.../models/PaginatedResponse_EventSummary.ts | 2 +-
.../PaginatedResponse_ExecutionSummary.ts | 2 +-
.../PaginatedResponse_InquirySummary.ts | 2 +-
.../models/PaginatedResponse_KeySummary.ts | 2 +-
.../models/PaginatedResponse_PackSummary.ts | 2 +-
.../PaginatedResponse_PackTestSummary.ts | 2 +-
.../models/PaginatedResponse_SensorSummary.ts | 2 +-
.../PaginatedResponse_TriggerSummary.ts | 2 +-
.../PaginatedResponse_WorkflowSummary.ts | 2 +-
web/src/api/models/PaginationMeta.ts | 2 +-
web/src/api/models/QueueStatsResponse.ts | 2 +-
web/src/api/models/RefreshTokenRequest.ts | 2 +-
web/src/api/models/RegisterPackRequest.ts | 2 +-
web/src/api/models/RegisterRequest.ts | 2 +-
web/src/api/models/SensorSummary.ts | 2 +-
web/src/api/models/SuccessResponse.ts | 2 +-
web/src/api/models/TestCaseResult.ts | 2 +-
web/src/api/models/TestStatus.ts | 2 +-
web/src/api/models/TestSuiteResult.ts | 2 +-
web/src/api/models/TokenResponse.ts | 2 +-
web/src/api/models/TriggerSummary.ts | 2 +-
web/src/api/models/UpdateKeyRequest.ts | 2 +-
web/src/api/models/UserInfo.ts | 2 +-
web/src/api/models/WebhookReceiverRequest.ts | 2 +-
web/src/api/models/WebhookReceiverResponse.ts | 2 +-
web/src/api/models/WorkflowSummary.ts | 2 +-
web/src/api/models/WorkflowSyncResult.ts | 2 +-
web/src/api/models/i64.ts | 2 +-
web/src/api/services/AuthService.ts | 2 +-
web/src/api/services/EnforcementsService.ts | 2 +-
web/src/api/services/EventsService.ts | 2 +-
web/src/api/services/InquiriesService.ts | 2 +-
web/src/api/services/RulesService.ts | 2 +-
web/src/api/services/SecretsService.ts | 2 +-
web/src/api/services/SensorsService.ts | 2 +-
web/src/api/services/TriggersService.ts | 2 +-
web/src/api/services/WebhooksService.ts | 2 +-
.../components/common/AnalyticsWidgets.tsx | 23 +--
web/src/components/common/ErrorDisplay.tsx | 59 +++++---
.../components/common/ExecuteActionModal.tsx | 18 ++-
.../components/common/ParamSchemaDisplay.tsx | 8 +-
web/src/components/common/ParamSchemaForm.tsx | 47 ++++---
web/src/components/common/SchemaBuilder.tsx | 116 +++++++++-------
web/src/components/forms/PackForm.tsx | 60 ++++++--
web/src/components/forms/RuleForm.tsx | 48 +++++--
web/src/components/forms/TriggerForm.tsx | 37 +++--
web/src/contexts/AuthContext.tsx | 1 +
web/src/contexts/WebSocketContext.tsx | 25 ++--
web/src/hooks/useArtifactStream.ts | 30 +++-
web/src/hooks/useEnforcementStream.ts | 72 ++++++++--
web/src/hooks/useExecutionStream.ts | 100 ++++++++++---
web/src/hooks/useSensors.ts | 11 +-
web/src/hooks/useTriggers.ts | 11 +-
web/src/lib/api-config.ts | 11 +-
web/src/lib/api-wrapper.ts | 19 ++-
web/src/lib/query-client.ts | 8 +-
web/src/pages/actions/ActionsPage.tsx | 102 +++++++-------
web/src/pages/auth/LoginPage.tsx | 35 +++--
.../pages/enforcements/EnforcementsPage.tsx | 19 ++-
web/src/pages/events/EventsPage.tsx | 87 +++++++-----
web/src/pages/executions/ExecutionsPage.tsx | 23 ++-
web/src/pages/keys/KeyCreateModal.tsx | 49 +++++--
web/src/pages/keys/KeyEditModal.tsx | 39 ++++--
web/src/pages/packs/PacksPage.tsx | 93 +++++++------
web/src/pages/rules/RulesPage.tsx | 15 +-
web/src/pages/sensors/SensorsPage.tsx | 11 +-
web/src/pages/triggers/TriggersPage.tsx | 131 ++++++++++--------
102 files changed, 1031 insertions(+), 532 deletions(-)
diff --git a/.gitea/workflows/ci.yml b/.gitea/workflows/ci.yml
index 3689d75..a13b70b 100644
--- a/.gitea/workflows/ci.yml
+++ b/.gitea/workflows/ci.yml
@@ -10,10 +10,13 @@ on:
env:
CARGO_TERM_COLOR: always
RUST_MIN_STACK: 16777216
+ CARGO_INCREMENTAL: 0
+ CARGO_NET_RETRY: 10
+ RUSTUP_MAX_RETRIES: 10
jobs:
- rust-blocking:
- name: Rust Blocking Checks
+ rust-fmt:
+ name: Rustfmt
runs-on: ubuntu-latest
steps:
- name: Checkout
@@ -22,19 +25,119 @@ jobs:
- name: Setup Rust
uses: dtolnay/rust-toolchain@stable
with:
- components: rustfmt, clippy
+ components: rustfmt
- name: Rustfmt
run: cargo fmt --all -- --check
+ rust-clippy:
+ name: Clippy
+ runs-on: ubuntu-latest
+ steps:
+ - name: Checkout
+ uses: actions/checkout@v4
+
+ - name: Setup Rust
+ uses: dtolnay/rust-toolchain@stable
+ with:
+ components: clippy
+
+ - name: Cache Cargo registry + index
+ uses: actions/cache@v4
+ with:
+ path: |
+ ~/.cargo/registry/index
+ ~/.cargo/registry/cache
+ ~/.cargo/git/db
+ key: cargo-registry-${{ hashFiles('**/Cargo.lock') }}
+ restore-keys: |
+ cargo-registry-
+
+ - name: Cache Cargo build artifacts
+ uses: actions/cache@v4
+ with:
+ path: target
+ key: cargo-clippy-${{ hashFiles('**/Cargo.lock') }}-${{ hashFiles('**/*.rs', '**/Cargo.toml') }}
+ restore-keys: |
+ cargo-clippy-${{ hashFiles('**/Cargo.lock') }}-
+ cargo-clippy-
+
- name: Clippy
run: cargo clippy --workspace --all-targets --all-features -- -D warnings
+ rust-test:
+ name: Tests
+ runs-on: ubuntu-latest
+ steps:
+ - name: Checkout
+ uses: actions/checkout@v4
+
+ - name: Setup Rust
+ uses: dtolnay/rust-toolchain@stable
+
+ - name: Cache Cargo registry + index
+ uses: actions/cache@v4
+ with:
+ path: |
+ ~/.cargo/registry/index
+ ~/.cargo/registry/cache
+ ~/.cargo/git/db
+ key: cargo-registry-${{ hashFiles('**/Cargo.lock') }}
+ restore-keys: |
+ cargo-registry-
+
+ - name: Cache Cargo build artifacts
+ uses: actions/cache@v4
+ with:
+ path: target
+ key: cargo-test-${{ hashFiles('**/Cargo.lock') }}-${{ hashFiles('**/*.rs', '**/Cargo.toml') }}
+ restore-keys: |
+ cargo-test-${{ hashFiles('**/Cargo.lock') }}-
+ cargo-test-
+
- name: Tests
run: cargo test --workspace --all-features
- - name: Install Rust security tooling
- run: cargo install --locked cargo-audit cargo-deny
+ rust-audit:
+ name: Cargo Audit & Deny
+ runs-on: ubuntu-latest
+ steps:
+ - name: Checkout
+ uses: actions/checkout@v4
+
+ - name: Setup Rust
+ uses: dtolnay/rust-toolchain@stable
+
+ - name: Cache Cargo registry + index
+ uses: actions/cache@v4
+ with:
+ path: |
+ ~/.cargo/registry/index
+ ~/.cargo/registry/cache
+ ~/.cargo/git/db
+ key: cargo-registry-${{ hashFiles('**/Cargo.lock') }}
+ restore-keys: |
+ cargo-registry-
+
+ - name: Cache cargo-binstall and installed binaries
+ uses: actions/cache@v4
+ with:
+ path: |
+ ~/.cargo/bin/cargo-binstall
+ ~/.cargo/bin/cargo-audit
+ ~/.cargo/bin/cargo-deny
+ key: cargo-security-tools-v1
+
+ - name: Install cargo-binstall
+ run: |
+ if ! command -v cargo-binstall &> /dev/null; then
+ curl -L --proto '=https' --tlsv1.2 -sSf https://raw.githubusercontent.com/cargo-bins/cargo-binstall/main/install-from-binstall-release.sh | bash
+ fi
+
+ - name: Install security tools (pre-built binaries)
+ run: |
+ command -v cargo-audit &> /dev/null || cargo binstall --no-confirm --locked cargo-audit
+ command -v cargo-deny &> /dev/null || cargo binstall --no-confirm --locked cargo-deny
- name: Cargo Audit
run: cargo audit
diff --git a/web/src/api/models/ActionSummary.ts b/web/src/api/models/ActionSummary.ts
index cb9421f..930284e 100644
--- a/web/src/api/models/ActionSummary.ts
+++ b/web/src/api/models/ActionSummary.ts
@@ -1,7 +1,7 @@
/* generated using openapi-typescript-codegen -- do not edit */
/* istanbul ignore file */
/* tslint:disable */
-/* eslint-disable */
+
/**
* Simplified action response (for list endpoints)
*/
diff --git a/web/src/api/models/ApiResponse_CurrentUserResponse.ts b/web/src/api/models/ApiResponse_CurrentUserResponse.ts
index 6b1b58d..9f5604c 100644
--- a/web/src/api/models/ApiResponse_CurrentUserResponse.ts
+++ b/web/src/api/models/ApiResponse_CurrentUserResponse.ts
@@ -1,7 +1,7 @@
/* generated using openapi-typescript-codegen -- do not edit */
/* istanbul ignore file */
/* tslint:disable */
-/* eslint-disable */
+
/**
* Standard API response wrapper
*/
diff --git a/web/src/api/models/ApiResponse_KeyResponse.ts b/web/src/api/models/ApiResponse_KeyResponse.ts
index 38cc0a5..1738b41 100644
--- a/web/src/api/models/ApiResponse_KeyResponse.ts
+++ b/web/src/api/models/ApiResponse_KeyResponse.ts
@@ -1,7 +1,7 @@
/* generated using openapi-typescript-codegen -- do not edit */
/* istanbul ignore file */
/* tslint:disable */
-/* eslint-disable */
+
import type { i64 } from './i64';
import type { OwnerType } from './OwnerType';
/**
diff --git a/web/src/api/models/ApiResponse_PackInstallResponse.ts b/web/src/api/models/ApiResponse_PackInstallResponse.ts
index 340251c..e1d928c 100644
--- a/web/src/api/models/ApiResponse_PackInstallResponse.ts
+++ b/web/src/api/models/ApiResponse_PackInstallResponse.ts
@@ -1,7 +1,7 @@
/* generated using openapi-typescript-codegen -- do not edit */
/* istanbul ignore file */
/* tslint:disable */
-/* eslint-disable */
+
import type { PackResponse } from './PackResponse';
import type { PackTestResult } from './PackTestResult';
/**
diff --git a/web/src/api/models/ApiResponse_QueueStatsResponse.ts b/web/src/api/models/ApiResponse_QueueStatsResponse.ts
index 03eff9c..a7e623e 100644
--- a/web/src/api/models/ApiResponse_QueueStatsResponse.ts
+++ b/web/src/api/models/ApiResponse_QueueStatsResponse.ts
@@ -1,7 +1,7 @@
/* generated using openapi-typescript-codegen -- do not edit */
/* istanbul ignore file */
/* tslint:disable */
-/* eslint-disable */
+
/**
* Standard API response wrapper
*/
diff --git a/web/src/api/models/ApiResponse_String.ts b/web/src/api/models/ApiResponse_String.ts
index 4a2cb12..5fba4c1 100644
--- a/web/src/api/models/ApiResponse_String.ts
+++ b/web/src/api/models/ApiResponse_String.ts
@@ -1,7 +1,7 @@
/* generated using openapi-typescript-codegen -- do not edit */
/* istanbul ignore file */
/* tslint:disable */
-/* eslint-disable */
+
/**
* Standard API response wrapper
*/
diff --git a/web/src/api/models/ApiResponse_TokenResponse.ts b/web/src/api/models/ApiResponse_TokenResponse.ts
index 9208959..e684e12 100644
--- a/web/src/api/models/ApiResponse_TokenResponse.ts
+++ b/web/src/api/models/ApiResponse_TokenResponse.ts
@@ -1,7 +1,7 @@
/* generated using openapi-typescript-codegen -- do not edit */
/* istanbul ignore file */
/* tslint:disable */
-/* eslint-disable */
+
import type { UserInfo } from './UserInfo';
/**
* Standard API response wrapper
diff --git a/web/src/api/models/ApiResponse_WebhookReceiverResponse.ts b/web/src/api/models/ApiResponse_WebhookReceiverResponse.ts
index e056064..8670802 100644
--- a/web/src/api/models/ApiResponse_WebhookReceiverResponse.ts
+++ b/web/src/api/models/ApiResponse_WebhookReceiverResponse.ts
@@ -1,7 +1,7 @@
/* generated using openapi-typescript-codegen -- do not edit */
/* istanbul ignore file */
/* tslint:disable */
-/* eslint-disable */
+
/**
* Standard API response wrapper
*/
diff --git a/web/src/api/models/ChangePasswordRequest.ts b/web/src/api/models/ChangePasswordRequest.ts
index 4f3ed13..590d80f 100644
--- a/web/src/api/models/ChangePasswordRequest.ts
+++ b/web/src/api/models/ChangePasswordRequest.ts
@@ -1,7 +1,7 @@
/* generated using openapi-typescript-codegen -- do not edit */
/* istanbul ignore file */
/* tslint:disable */
-/* eslint-disable */
+
/**
* Change password request
*/
diff --git a/web/src/api/models/CreateKeyRequest.ts b/web/src/api/models/CreateKeyRequest.ts
index 864fb75..3698467 100644
--- a/web/src/api/models/CreateKeyRequest.ts
+++ b/web/src/api/models/CreateKeyRequest.ts
@@ -1,7 +1,7 @@
/* generated using openapi-typescript-codegen -- do not edit */
/* istanbul ignore file */
/* tslint:disable */
-/* eslint-disable */
+
import type { i64 } from './i64';
import type { OwnerType } from './OwnerType';
/**
diff --git a/web/src/api/models/CurrentUserResponse.ts b/web/src/api/models/CurrentUserResponse.ts
index f3197e1..f13ef4b 100644
--- a/web/src/api/models/CurrentUserResponse.ts
+++ b/web/src/api/models/CurrentUserResponse.ts
@@ -1,7 +1,7 @@
/* generated using openapi-typescript-codegen -- do not edit */
/* istanbul ignore file */
/* tslint:disable */
-/* eslint-disable */
+
/**
* Current user response
*/
diff --git a/web/src/api/models/EnforcementCondition.ts b/web/src/api/models/EnforcementCondition.ts
index 84cfee7..1d48f0c 100644
--- a/web/src/api/models/EnforcementCondition.ts
+++ b/web/src/api/models/EnforcementCondition.ts
@@ -1,7 +1,7 @@
/* generated using openapi-typescript-codegen -- do not edit */
/* istanbul ignore file */
/* tslint:disable */
-/* eslint-disable */
+
export enum EnforcementCondition {
ANY = 'any',
ALL = 'all',
diff --git a/web/src/api/models/EnforcementStatus.ts b/web/src/api/models/EnforcementStatus.ts
index 0f34187..f8de91e 100644
--- a/web/src/api/models/EnforcementStatus.ts
+++ b/web/src/api/models/EnforcementStatus.ts
@@ -1,7 +1,7 @@
/* generated using openapi-typescript-codegen -- do not edit */
/* istanbul ignore file */
/* tslint:disable */
-/* eslint-disable */
+
export enum EnforcementStatus {
CREATED = 'created',
PROCESSED = 'processed',
diff --git a/web/src/api/models/EnforcementSummary.ts b/web/src/api/models/EnforcementSummary.ts
index 5527d05..84ff524 100644
--- a/web/src/api/models/EnforcementSummary.ts
+++ b/web/src/api/models/EnforcementSummary.ts
@@ -1,7 +1,7 @@
/* generated using openapi-typescript-codegen -- do not edit */
/* istanbul ignore file */
/* tslint:disable */
-/* eslint-disable */
+
import type { EnforcementCondition } from './EnforcementCondition';
import type { EnforcementStatus } from './EnforcementStatus';
import type { i64 } from './i64';
diff --git a/web/src/api/models/EventSummary.ts b/web/src/api/models/EventSummary.ts
index 611f4f1..18bce8c 100644
--- a/web/src/api/models/EventSummary.ts
+++ b/web/src/api/models/EventSummary.ts
@@ -1,7 +1,7 @@
/* generated using openapi-typescript-codegen -- do not edit */
/* istanbul ignore file */
/* tslint:disable */
-/* eslint-disable */
+
import type { i64 } from './i64';
/**
* Summary event response for list views
diff --git a/web/src/api/models/ExecutionStatus.ts b/web/src/api/models/ExecutionStatus.ts
index 97eb85e..67dc334 100644
--- a/web/src/api/models/ExecutionStatus.ts
+++ b/web/src/api/models/ExecutionStatus.ts
@@ -1,7 +1,7 @@
/* generated using openapi-typescript-codegen -- do not edit */
/* istanbul ignore file */
/* tslint:disable */
-/* eslint-disable */
+
export enum ExecutionStatus {
REQUESTED = 'requested',
SCHEDULING = 'scheduling',
diff --git a/web/src/api/models/ExecutionSummary.ts b/web/src/api/models/ExecutionSummary.ts
index 0be0eb5..eb1ee42 100644
--- a/web/src/api/models/ExecutionSummary.ts
+++ b/web/src/api/models/ExecutionSummary.ts
@@ -1,7 +1,7 @@
/* generated using openapi-typescript-codegen -- do not edit */
/* istanbul ignore file */
/* tslint:disable */
-/* eslint-disable */
+
import type { ExecutionStatus } from "./ExecutionStatus";
/**
* Simplified execution response (for list endpoints)
diff --git a/web/src/api/models/HealthResponse.ts b/web/src/api/models/HealthResponse.ts
index d4dbb93..ab16625 100644
--- a/web/src/api/models/HealthResponse.ts
+++ b/web/src/api/models/HealthResponse.ts
@@ -1,7 +1,7 @@
/* generated using openapi-typescript-codegen -- do not edit */
/* istanbul ignore file */
/* tslint:disable */
-/* eslint-disable */
+
/**
* Health check response
*/
diff --git a/web/src/api/models/InquiryStatus.ts b/web/src/api/models/InquiryStatus.ts
index 4475bc8..553aca4 100644
--- a/web/src/api/models/InquiryStatus.ts
+++ b/web/src/api/models/InquiryStatus.ts
@@ -1,7 +1,7 @@
/* generated using openapi-typescript-codegen -- do not edit */
/* istanbul ignore file */
/* tslint:disable */
-/* eslint-disable */
+
export enum InquiryStatus {
PENDING = 'pending',
RESPONDED = 'responded',
diff --git a/web/src/api/models/InquirySummary.ts b/web/src/api/models/InquirySummary.ts
index f5678a5..43f59cb 100644
--- a/web/src/api/models/InquirySummary.ts
+++ b/web/src/api/models/InquirySummary.ts
@@ -1,7 +1,7 @@
/* generated using openapi-typescript-codegen -- do not edit */
/* istanbul ignore file */
/* tslint:disable */
-/* eslint-disable */
+
import type { i64 } from './i64';
import type { InquiryStatus } from './InquiryStatus';
/**
diff --git a/web/src/api/models/InstallPackRequest.ts b/web/src/api/models/InstallPackRequest.ts
index 83729e7..6de65ee 100644
--- a/web/src/api/models/InstallPackRequest.ts
+++ b/web/src/api/models/InstallPackRequest.ts
@@ -1,7 +1,7 @@
/* generated using openapi-typescript-codegen -- do not edit */
/* istanbul ignore file */
/* tslint:disable */
-/* eslint-disable */
+
/**
* Request DTO for installing a pack from remote source
*/
diff --git a/web/src/api/models/KeyResponse.ts b/web/src/api/models/KeyResponse.ts
index d01d130..de2cbb8 100644
--- a/web/src/api/models/KeyResponse.ts
+++ b/web/src/api/models/KeyResponse.ts
@@ -1,7 +1,7 @@
/* generated using openapi-typescript-codegen -- do not edit */
/* istanbul ignore file */
/* tslint:disable */
-/* eslint-disable */
+
import type { i64 } from './i64';
import type { OwnerType } from './OwnerType';
/**
diff --git a/web/src/api/models/KeySummary.ts b/web/src/api/models/KeySummary.ts
index 689b525..9fbe25a 100644
--- a/web/src/api/models/KeySummary.ts
+++ b/web/src/api/models/KeySummary.ts
@@ -1,7 +1,7 @@
/* generated using openapi-typescript-codegen -- do not edit */
/* istanbul ignore file */
/* tslint:disable */
-/* eslint-disable */
+
import type { i64 } from './i64';
import type { OwnerType } from './OwnerType';
/**
diff --git a/web/src/api/models/LoginRequest.ts b/web/src/api/models/LoginRequest.ts
index 5db7ae2..be1a08e 100644
--- a/web/src/api/models/LoginRequest.ts
+++ b/web/src/api/models/LoginRequest.ts
@@ -1,7 +1,7 @@
/* generated using openapi-typescript-codegen -- do not edit */
/* istanbul ignore file */
/* tslint:disable */
-/* eslint-disable */
+
/**
* Login request
*/
diff --git a/web/src/api/models/OwnerType.ts b/web/src/api/models/OwnerType.ts
index c3ad5cd..ab88d2b 100644
--- a/web/src/api/models/OwnerType.ts
+++ b/web/src/api/models/OwnerType.ts
@@ -1,7 +1,7 @@
/* generated using openapi-typescript-codegen -- do not edit */
/* istanbul ignore file */
/* tslint:disable */
-/* eslint-disable */
+
export enum OwnerType {
SYSTEM = 'system',
IDENTITY = 'identity',
diff --git a/web/src/api/models/PackInstallResponse.ts b/web/src/api/models/PackInstallResponse.ts
index 186c204..70af751 100644
--- a/web/src/api/models/PackInstallResponse.ts
+++ b/web/src/api/models/PackInstallResponse.ts
@@ -1,7 +1,7 @@
/* generated using openapi-typescript-codegen -- do not edit */
/* istanbul ignore file */
/* tslint:disable */
-/* eslint-disable */
+
import type { PackResponse } from './PackResponse';
import type { PackTestResult } from './PackTestResult';
/**
diff --git a/web/src/api/models/PackSummary.ts b/web/src/api/models/PackSummary.ts
index bd18e03..80ca267 100644
--- a/web/src/api/models/PackSummary.ts
+++ b/web/src/api/models/PackSummary.ts
@@ -1,7 +1,7 @@
/* generated using openapi-typescript-codegen -- do not edit */
/* istanbul ignore file */
/* tslint:disable */
-/* eslint-disable */
+
/**
* Simplified pack response (for list endpoints)
*/
diff --git a/web/src/api/models/PackTestExecution.ts b/web/src/api/models/PackTestExecution.ts
index d292713..3aae18c 100644
--- a/web/src/api/models/PackTestExecution.ts
+++ b/web/src/api/models/PackTestExecution.ts
@@ -1,7 +1,7 @@
/* generated using openapi-typescript-codegen -- do not edit */
/* istanbul ignore file */
/* tslint:disable */
-/* eslint-disable */
+
import type { i64 } from './i64';
import type { Value } from './Value';
/**
diff --git a/web/src/api/models/PackTestResult.ts b/web/src/api/models/PackTestResult.ts
index 0680f10..87bdba9 100644
--- a/web/src/api/models/PackTestResult.ts
+++ b/web/src/api/models/PackTestResult.ts
@@ -1,7 +1,7 @@
/* generated using openapi-typescript-codegen -- do not edit */
/* istanbul ignore file */
/* tslint:disable */
-/* eslint-disable */
+
import type { TestSuiteResult } from './TestSuiteResult';
/**
* Pack test result structure (not from DB, used for test execution)
diff --git a/web/src/api/models/PackTestSummary.ts b/web/src/api/models/PackTestSummary.ts
index 58e5a4b..33a1bbd 100644
--- a/web/src/api/models/PackTestSummary.ts
+++ b/web/src/api/models/PackTestSummary.ts
@@ -1,7 +1,7 @@
/* generated using openapi-typescript-codegen -- do not edit */
/* istanbul ignore file */
/* tslint:disable */
-/* eslint-disable */
+
import type { i64 } from './i64';
/**
* Pack test summary view
diff --git a/web/src/api/models/PackWorkflowSyncResponse.ts b/web/src/api/models/PackWorkflowSyncResponse.ts
index c346da1..93bcebb 100644
--- a/web/src/api/models/PackWorkflowSyncResponse.ts
+++ b/web/src/api/models/PackWorkflowSyncResponse.ts
@@ -1,7 +1,7 @@
/* generated using openapi-typescript-codegen -- do not edit */
/* istanbul ignore file */
/* tslint:disable */
-/* eslint-disable */
+
import type { WorkflowSyncResult } from './WorkflowSyncResult';
/**
* Response for pack workflow sync operation
diff --git a/web/src/api/models/PackWorkflowValidationResponse.ts b/web/src/api/models/PackWorkflowValidationResponse.ts
index 883e946..5ebe21e 100644
--- a/web/src/api/models/PackWorkflowValidationResponse.ts
+++ b/web/src/api/models/PackWorkflowValidationResponse.ts
@@ -1,7 +1,7 @@
/* generated using openapi-typescript-codegen -- do not edit */
/* istanbul ignore file */
/* tslint:disable */
-/* eslint-disable */
+
/**
* Response for pack workflow validation operation
*/
diff --git a/web/src/api/models/PaginatedResponse_ActionSummary.ts b/web/src/api/models/PaginatedResponse_ActionSummary.ts
index 8fe79dc..666ba63 100644
--- a/web/src/api/models/PaginatedResponse_ActionSummary.ts
+++ b/web/src/api/models/PaginatedResponse_ActionSummary.ts
@@ -1,7 +1,7 @@
/* generated using openapi-typescript-codegen -- do not edit */
/* istanbul ignore file */
/* tslint:disable */
-/* eslint-disable */
+
import type { PaginationMeta } from "./PaginationMeta";
/**
* Paginated response wrapper
diff --git a/web/src/api/models/PaginatedResponse_EnforcementSummary.ts b/web/src/api/models/PaginatedResponse_EnforcementSummary.ts
index a7634e7..6d7f8c6 100644
--- a/web/src/api/models/PaginatedResponse_EnforcementSummary.ts
+++ b/web/src/api/models/PaginatedResponse_EnforcementSummary.ts
@@ -1,7 +1,7 @@
/* generated using openapi-typescript-codegen -- do not edit */
/* istanbul ignore file */
/* tslint:disable */
-/* eslint-disable */
+
import type { EnforcementCondition } from './EnforcementCondition';
import type { EnforcementStatus } from './EnforcementStatus';
import type { i64 } from './i64';
diff --git a/web/src/api/models/PaginatedResponse_EventSummary.ts b/web/src/api/models/PaginatedResponse_EventSummary.ts
index 4880c2f..5bf8e0e 100644
--- a/web/src/api/models/PaginatedResponse_EventSummary.ts
+++ b/web/src/api/models/PaginatedResponse_EventSummary.ts
@@ -1,7 +1,7 @@
/* generated using openapi-typescript-codegen -- do not edit */
/* istanbul ignore file */
/* tslint:disable */
-/* eslint-disable */
+
import type { i64 } from './i64';
import type { PaginationMeta } from './PaginationMeta';
/**
diff --git a/web/src/api/models/PaginatedResponse_ExecutionSummary.ts b/web/src/api/models/PaginatedResponse_ExecutionSummary.ts
index 1a7c442..9c874df 100644
--- a/web/src/api/models/PaginatedResponse_ExecutionSummary.ts
+++ b/web/src/api/models/PaginatedResponse_ExecutionSummary.ts
@@ -1,7 +1,7 @@
/* generated using openapi-typescript-codegen -- do not edit */
/* istanbul ignore file */
/* tslint:disable */
-/* eslint-disable */
+
import type { ExecutionStatus } from "./ExecutionStatus";
import type { PaginationMeta } from "./PaginationMeta";
/**
diff --git a/web/src/api/models/PaginatedResponse_InquirySummary.ts b/web/src/api/models/PaginatedResponse_InquirySummary.ts
index 45bf350..cdb71bd 100644
--- a/web/src/api/models/PaginatedResponse_InquirySummary.ts
+++ b/web/src/api/models/PaginatedResponse_InquirySummary.ts
@@ -1,7 +1,7 @@
/* generated using openapi-typescript-codegen -- do not edit */
/* istanbul ignore file */
/* tslint:disable */
-/* eslint-disable */
+
import type { i64 } from './i64';
import type { InquiryStatus } from './InquiryStatus';
import type { PaginationMeta } from './PaginationMeta';
diff --git a/web/src/api/models/PaginatedResponse_KeySummary.ts b/web/src/api/models/PaginatedResponse_KeySummary.ts
index 70945c9..fe32449 100644
--- a/web/src/api/models/PaginatedResponse_KeySummary.ts
+++ b/web/src/api/models/PaginatedResponse_KeySummary.ts
@@ -1,7 +1,7 @@
/* generated using openapi-typescript-codegen -- do not edit */
/* istanbul ignore file */
/* tslint:disable */
-/* eslint-disable */
+
import type { i64 } from './i64';
import type { OwnerType } from './OwnerType';
import type { PaginationMeta } from './PaginationMeta';
diff --git a/web/src/api/models/PaginatedResponse_PackSummary.ts b/web/src/api/models/PaginatedResponse_PackSummary.ts
index 032f009..1340770 100644
--- a/web/src/api/models/PaginatedResponse_PackSummary.ts
+++ b/web/src/api/models/PaginatedResponse_PackSummary.ts
@@ -1,7 +1,7 @@
/* generated using openapi-typescript-codegen -- do not edit */
/* istanbul ignore file */
/* tslint:disable */
-/* eslint-disable */
+
import type { PaginationMeta } from './PaginationMeta';
/**
* Paginated response wrapper
diff --git a/web/src/api/models/PaginatedResponse_PackTestSummary.ts b/web/src/api/models/PaginatedResponse_PackTestSummary.ts
index aa5806f..30635c3 100644
--- a/web/src/api/models/PaginatedResponse_PackTestSummary.ts
+++ b/web/src/api/models/PaginatedResponse_PackTestSummary.ts
@@ -1,7 +1,7 @@
/* generated using openapi-typescript-codegen -- do not edit */
/* istanbul ignore file */
/* tslint:disable */
-/* eslint-disable */
+
import type { i64 } from './i64';
import type { PaginationMeta } from './PaginationMeta';
/**
diff --git a/web/src/api/models/PaginatedResponse_SensorSummary.ts b/web/src/api/models/PaginatedResponse_SensorSummary.ts
index ff69804..6dc50a4 100644
--- a/web/src/api/models/PaginatedResponse_SensorSummary.ts
+++ b/web/src/api/models/PaginatedResponse_SensorSummary.ts
@@ -1,7 +1,7 @@
/* generated using openapi-typescript-codegen -- do not edit */
/* istanbul ignore file */
/* tslint:disable */
-/* eslint-disable */
+
import type { PaginationMeta } from './PaginationMeta';
/**
* Paginated response wrapper
diff --git a/web/src/api/models/PaginatedResponse_TriggerSummary.ts b/web/src/api/models/PaginatedResponse_TriggerSummary.ts
index 0690a9a..b410e71 100644
--- a/web/src/api/models/PaginatedResponse_TriggerSummary.ts
+++ b/web/src/api/models/PaginatedResponse_TriggerSummary.ts
@@ -1,7 +1,7 @@
/* generated using openapi-typescript-codegen -- do not edit */
/* istanbul ignore file */
/* tslint:disable */
-/* eslint-disable */
+
import type { PaginationMeta } from './PaginationMeta';
/**
* Paginated response wrapper
diff --git a/web/src/api/models/PaginatedResponse_WorkflowSummary.ts b/web/src/api/models/PaginatedResponse_WorkflowSummary.ts
index 2954e43..17fd948 100644
--- a/web/src/api/models/PaginatedResponse_WorkflowSummary.ts
+++ b/web/src/api/models/PaginatedResponse_WorkflowSummary.ts
@@ -1,7 +1,7 @@
/* generated using openapi-typescript-codegen -- do not edit */
/* istanbul ignore file */
/* tslint:disable */
-/* eslint-disable */
+
import type { PaginationMeta } from './PaginationMeta';
/**
* Paginated response wrapper
diff --git a/web/src/api/models/PaginationMeta.ts b/web/src/api/models/PaginationMeta.ts
index bc08279..b5595b6 100644
--- a/web/src/api/models/PaginationMeta.ts
+++ b/web/src/api/models/PaginationMeta.ts
@@ -1,7 +1,7 @@
/* generated using openapi-typescript-codegen -- do not edit */
/* istanbul ignore file */
/* tslint:disable */
-/* eslint-disable */
+
/**
* Pagination metadata
*/
diff --git a/web/src/api/models/QueueStatsResponse.ts b/web/src/api/models/QueueStatsResponse.ts
index 9c616a0..b642cdd 100644
--- a/web/src/api/models/QueueStatsResponse.ts
+++ b/web/src/api/models/QueueStatsResponse.ts
@@ -1,7 +1,7 @@
/* generated using openapi-typescript-codegen -- do not edit */
/* istanbul ignore file */
/* tslint:disable */
-/* eslint-disable */
+
/**
* Response DTO for queue statistics
*/
diff --git a/web/src/api/models/RefreshTokenRequest.ts b/web/src/api/models/RefreshTokenRequest.ts
index d8d2c5c..5302b60 100644
--- a/web/src/api/models/RefreshTokenRequest.ts
+++ b/web/src/api/models/RefreshTokenRequest.ts
@@ -1,7 +1,7 @@
/* generated using openapi-typescript-codegen -- do not edit */
/* istanbul ignore file */
/* tslint:disable */
-/* eslint-disable */
+
/**
* Refresh token request
*/
diff --git a/web/src/api/models/RegisterPackRequest.ts b/web/src/api/models/RegisterPackRequest.ts
index c561364..549ee38 100644
--- a/web/src/api/models/RegisterPackRequest.ts
+++ b/web/src/api/models/RegisterPackRequest.ts
@@ -1,7 +1,7 @@
/* generated using openapi-typescript-codegen -- do not edit */
/* istanbul ignore file */
/* tslint:disable */
-/* eslint-disable */
+
/**
* Request DTO for registering a pack from local filesystem
*/
diff --git a/web/src/api/models/RegisterRequest.ts b/web/src/api/models/RegisterRequest.ts
index ec5e176..b9931d3 100644
--- a/web/src/api/models/RegisterRequest.ts
+++ b/web/src/api/models/RegisterRequest.ts
@@ -1,7 +1,7 @@
/* generated using openapi-typescript-codegen -- do not edit */
/* istanbul ignore file */
/* tslint:disable */
-/* eslint-disable */
+
/**
* Register request
*/
diff --git a/web/src/api/models/SensorSummary.ts b/web/src/api/models/SensorSummary.ts
index 05cdd53..5b734ea 100644
--- a/web/src/api/models/SensorSummary.ts
+++ b/web/src/api/models/SensorSummary.ts
@@ -1,7 +1,7 @@
/* generated using openapi-typescript-codegen -- do not edit */
/* istanbul ignore file */
/* tslint:disable */
-/* eslint-disable */
+
/**
* Simplified sensor response (for list endpoints)
*/
diff --git a/web/src/api/models/SuccessResponse.ts b/web/src/api/models/SuccessResponse.ts
index 24948a8..73a478a 100644
--- a/web/src/api/models/SuccessResponse.ts
+++ b/web/src/api/models/SuccessResponse.ts
@@ -1,7 +1,7 @@
/* generated using openapi-typescript-codegen -- do not edit */
/* istanbul ignore file */
/* tslint:disable */
-/* eslint-disable */
+
/**
* Success message response (for operations that don't return data)
*/
diff --git a/web/src/api/models/TestCaseResult.ts b/web/src/api/models/TestCaseResult.ts
index 42d1bc5..5000377 100644
--- a/web/src/api/models/TestCaseResult.ts
+++ b/web/src/api/models/TestCaseResult.ts
@@ -1,7 +1,7 @@
/* generated using openapi-typescript-codegen -- do not edit */
/* istanbul ignore file */
/* tslint:disable */
-/* eslint-disable */
+
import type { TestStatus } from './TestStatus';
/**
* Individual test case result
diff --git a/web/src/api/models/TestStatus.ts b/web/src/api/models/TestStatus.ts
index 3f8ed79..71ca37f 100644
--- a/web/src/api/models/TestStatus.ts
+++ b/web/src/api/models/TestStatus.ts
@@ -1,7 +1,7 @@
/* generated using openapi-typescript-codegen -- do not edit */
/* istanbul ignore file */
/* tslint:disable */
-/* eslint-disable */
+
/**
* Test status enum
*/
diff --git a/web/src/api/models/TestSuiteResult.ts b/web/src/api/models/TestSuiteResult.ts
index ada7ef3..4ec0223 100644
--- a/web/src/api/models/TestSuiteResult.ts
+++ b/web/src/api/models/TestSuiteResult.ts
@@ -1,7 +1,7 @@
/* generated using openapi-typescript-codegen -- do not edit */
/* istanbul ignore file */
/* tslint:disable */
-/* eslint-disable */
+
import type { TestCaseResult } from './TestCaseResult';
/**
* Test suite result (collection of test cases)
diff --git a/web/src/api/models/TokenResponse.ts b/web/src/api/models/TokenResponse.ts
index 89f3695..3424984 100644
--- a/web/src/api/models/TokenResponse.ts
+++ b/web/src/api/models/TokenResponse.ts
@@ -1,7 +1,7 @@
/* generated using openapi-typescript-codegen -- do not edit */
/* istanbul ignore file */
/* tslint:disable */
-/* eslint-disable */
+
import type { UserInfo } from './UserInfo';
/**
* Token response
diff --git a/web/src/api/models/TriggerSummary.ts b/web/src/api/models/TriggerSummary.ts
index d5a68ad..3fbb9f7 100644
--- a/web/src/api/models/TriggerSummary.ts
+++ b/web/src/api/models/TriggerSummary.ts
@@ -1,7 +1,7 @@
/* generated using openapi-typescript-codegen -- do not edit */
/* istanbul ignore file */
/* tslint:disable */
-/* eslint-disable */
+
/**
* Simplified trigger response (for list endpoints)
*/
diff --git a/web/src/api/models/UpdateKeyRequest.ts b/web/src/api/models/UpdateKeyRequest.ts
index f1039f3..a6153b3 100644
--- a/web/src/api/models/UpdateKeyRequest.ts
+++ b/web/src/api/models/UpdateKeyRequest.ts
@@ -1,7 +1,7 @@
/* generated using openapi-typescript-codegen -- do not edit */
/* istanbul ignore file */
/* tslint:disable */
-/* eslint-disable */
+
/**
* Request to update an existing key/secret
*/
diff --git a/web/src/api/models/UserInfo.ts b/web/src/api/models/UserInfo.ts
index 671ba2a..7bb92b5 100644
--- a/web/src/api/models/UserInfo.ts
+++ b/web/src/api/models/UserInfo.ts
@@ -1,7 +1,7 @@
/* generated using openapi-typescript-codegen -- do not edit */
/* istanbul ignore file */
/* tslint:disable */
-/* eslint-disable */
+
/**
* User information included in token response
*/
diff --git a/web/src/api/models/WebhookReceiverRequest.ts b/web/src/api/models/WebhookReceiverRequest.ts
index a06c696..7f805c0 100644
--- a/web/src/api/models/WebhookReceiverRequest.ts
+++ b/web/src/api/models/WebhookReceiverRequest.ts
@@ -1,7 +1,7 @@
/* generated using openapi-typescript-codegen -- do not edit */
/* istanbul ignore file */
/* tslint:disable */
-/* eslint-disable */
+
import type { Value } from './Value';
/**
* Request body for webhook receiver endpoint
diff --git a/web/src/api/models/WebhookReceiverResponse.ts b/web/src/api/models/WebhookReceiverResponse.ts
index 2e4e74c..0d33d4a 100644
--- a/web/src/api/models/WebhookReceiverResponse.ts
+++ b/web/src/api/models/WebhookReceiverResponse.ts
@@ -1,7 +1,7 @@
/* generated using openapi-typescript-codegen -- do not edit */
/* istanbul ignore file */
/* tslint:disable */
-/* eslint-disable */
+
/**
* Response from webhook receiver endpoint
*/
diff --git a/web/src/api/models/WorkflowSummary.ts b/web/src/api/models/WorkflowSummary.ts
index 3062c19..3047eae 100644
--- a/web/src/api/models/WorkflowSummary.ts
+++ b/web/src/api/models/WorkflowSummary.ts
@@ -1,7 +1,7 @@
/* generated using openapi-typescript-codegen -- do not edit */
/* istanbul ignore file */
/* tslint:disable */
-/* eslint-disable */
+
/**
* Simplified workflow response (for list endpoints)
*/
diff --git a/web/src/api/models/WorkflowSyncResult.ts b/web/src/api/models/WorkflowSyncResult.ts
index 38da9a7..5fae670 100644
--- a/web/src/api/models/WorkflowSyncResult.ts
+++ b/web/src/api/models/WorkflowSyncResult.ts
@@ -1,7 +1,7 @@
/* generated using openapi-typescript-codegen -- do not edit */
/* istanbul ignore file */
/* tslint:disable */
-/* eslint-disable */
+
/**
* Individual workflow sync result
*/
diff --git a/web/src/api/models/i64.ts b/web/src/api/models/i64.ts
index 6129ad9..a63f3b7 100644
--- a/web/src/api/models/i64.ts
+++ b/web/src/api/models/i64.ts
@@ -1,5 +1,5 @@
/* generated using openapi-typescript-codegen -- do not edit */
/* istanbul ignore file */
/* tslint:disable */
-/* eslint-disable */
+
export type i64 = number;
diff --git a/web/src/api/services/AuthService.ts b/web/src/api/services/AuthService.ts
index f3b029a..78ef880 100644
--- a/web/src/api/services/AuthService.ts
+++ b/web/src/api/services/AuthService.ts
@@ -1,7 +1,7 @@
/* generated using openapi-typescript-codegen -- do not edit */
/* istanbul ignore file */
/* tslint:disable */
-/* eslint-disable */
+
import type { ChangePasswordRequest } from '../models/ChangePasswordRequest';
import type { LoginRequest } from '../models/LoginRequest';
import type { RefreshTokenRequest } from '../models/RefreshTokenRequest';
diff --git a/web/src/api/services/EnforcementsService.ts b/web/src/api/services/EnforcementsService.ts
index acce322..42948de 100644
--- a/web/src/api/services/EnforcementsService.ts
+++ b/web/src/api/services/EnforcementsService.ts
@@ -1,7 +1,7 @@
/* generated using openapi-typescript-codegen -- do not edit */
/* istanbul ignore file */
/* tslint:disable */
-/* eslint-disable */
+
import type { ApiResponse_EnforcementResponse } from '../models/ApiResponse_EnforcementResponse';
import type { EnforcementStatus } from '../models/EnforcementStatus';
import type { i64 } from '../models/i64';
diff --git a/web/src/api/services/EventsService.ts b/web/src/api/services/EventsService.ts
index 63e62c9..edd2fa9 100644
--- a/web/src/api/services/EventsService.ts
+++ b/web/src/api/services/EventsService.ts
@@ -1,7 +1,7 @@
/* generated using openapi-typescript-codegen -- do not edit */
/* istanbul ignore file */
/* tslint:disable */
-/* eslint-disable */
+
import type { ApiResponse_EventResponse } from '../models/ApiResponse_EventResponse';
import type { i64 } from '../models/i64';
import type { PaginatedResponse_EventSummary } from '../models/PaginatedResponse_EventSummary';
diff --git a/web/src/api/services/InquiriesService.ts b/web/src/api/services/InquiriesService.ts
index 5611f43..721ee83 100644
--- a/web/src/api/services/InquiriesService.ts
+++ b/web/src/api/services/InquiriesService.ts
@@ -1,7 +1,7 @@
/* generated using openapi-typescript-codegen -- do not edit */
/* istanbul ignore file */
/* tslint:disable */
-/* eslint-disable */
+
import type { ApiResponse_InquiryResponse } from '../models/ApiResponse_InquiryResponse';
import type { CreateInquiryRequest } from '../models/CreateInquiryRequest';
import type { i64 } from '../models/i64';
diff --git a/web/src/api/services/RulesService.ts b/web/src/api/services/RulesService.ts
index b9e15df..b2bc9cb 100644
--- a/web/src/api/services/RulesService.ts
+++ b/web/src/api/services/RulesService.ts
@@ -1,7 +1,7 @@
/* generated using openapi-typescript-codegen -- do not edit */
/* istanbul ignore file */
/* tslint:disable */
-/* eslint-disable */
+
import type { ApiResponse_RuleResponse } from '../models/ApiResponse_RuleResponse';
import type { CreateRuleRequest } from '../models/CreateRuleRequest';
import type { PaginatedResponse_RuleSummary } from '../models/PaginatedResponse_RuleSummary';
diff --git a/web/src/api/services/SecretsService.ts b/web/src/api/services/SecretsService.ts
index fb2ddcc..4c313b1 100644
--- a/web/src/api/services/SecretsService.ts
+++ b/web/src/api/services/SecretsService.ts
@@ -1,7 +1,7 @@
/* generated using openapi-typescript-codegen -- do not edit */
/* istanbul ignore file */
/* tslint:disable */
-/* eslint-disable */
+
import type { CreateKeyRequest } from '../models/CreateKeyRequest';
import type { i64 } from '../models/i64';
import type { OwnerType } from '../models/OwnerType';
diff --git a/web/src/api/services/SensorsService.ts b/web/src/api/services/SensorsService.ts
index c239574..92cb3e9 100644
--- a/web/src/api/services/SensorsService.ts
+++ b/web/src/api/services/SensorsService.ts
@@ -1,7 +1,7 @@
/* generated using openapi-typescript-codegen -- do not edit */
/* istanbul ignore file */
/* tslint:disable */
-/* eslint-disable */
+
import type { ApiResponse_SensorResponse } from '../models/ApiResponse_SensorResponse';
import type { CreateSensorRequest } from '../models/CreateSensorRequest';
import type { PaginatedResponse_SensorSummary } from '../models/PaginatedResponse_SensorSummary';
diff --git a/web/src/api/services/TriggersService.ts b/web/src/api/services/TriggersService.ts
index 33ef196..cdaeb89 100644
--- a/web/src/api/services/TriggersService.ts
+++ b/web/src/api/services/TriggersService.ts
@@ -1,7 +1,7 @@
/* generated using openapi-typescript-codegen -- do not edit */
/* istanbul ignore file */
/* tslint:disable */
-/* eslint-disable */
+
import type { ApiResponse_TriggerResponse } from '../models/ApiResponse_TriggerResponse';
import type { CreateTriggerRequest } from '../models/CreateTriggerRequest';
import type { PaginatedResponse_TriggerSummary } from '../models/PaginatedResponse_TriggerSummary';
diff --git a/web/src/api/services/WebhooksService.ts b/web/src/api/services/WebhooksService.ts
index cafbeb6..0ff6df6 100644
--- a/web/src/api/services/WebhooksService.ts
+++ b/web/src/api/services/WebhooksService.ts
@@ -1,7 +1,7 @@
/* generated using openapi-typescript-codegen -- do not edit */
/* istanbul ignore file */
/* tslint:disable */
-/* eslint-disable */
+
import type { TriggerResponse } from '../models/TriggerResponse';
import type { WebhookReceiverRequest } from '../models/WebhookReceiverRequest';
import type { WebhookReceiverResponse } from '../models/WebhookReceiverResponse';
diff --git a/web/src/components/common/AnalyticsWidgets.tsx b/web/src/components/common/AnalyticsWidgets.tsx
index 6a8ad4c..a490953 100644
--- a/web/src/components/common/AnalyticsWidgets.tsx
+++ b/web/src/components/common/AnalyticsWidgets.tsx
@@ -550,29 +550,34 @@ export default function AnalyticsDashboard({
hours,
onHoursChange,
}: AnalyticsDashboardProps) {
+ // Extract sub-properties so useMemo deps match what the React Compiler infers
+ const executionThroughput = data?.execution_throughput;
+ const eventVolume = data?.event_volume;
+ const enforcementVolume = data?.enforcement_volume;
+
const executionBuckets = useMemo(() => {
- if (!data?.execution_throughput) return [];
- const agg = aggregateByBucket(data.execution_throughput);
+ if (!executionThroughput) return [];
+ const agg = aggregateByBucket(executionThroughput);
return Array.from(agg.entries())
.sort(([a], [b]) => a.localeCompare(b))
.map(([bucket, v]) => ({ bucket, value: v.total }));
- }, [data?.execution_throughput]);
+ }, [executionThroughput]);
const eventBuckets = useMemo(() => {
- if (!data?.event_volume) return [];
- const agg = aggregateByBucket(data.event_volume);
+ if (!eventVolume) return [];
+ const agg = aggregateByBucket(eventVolume);
return Array.from(agg.entries())
.sort(([a], [b]) => a.localeCompare(b))
.map(([bucket, v]) => ({ bucket, value: v.total }));
- }, [data?.event_volume]);
+ }, [eventVolume]);
const enforcementBuckets = useMemo(() => {
- if (!data?.enforcement_volume) return [];
- const agg = aggregateByBucket(data.enforcement_volume);
+ if (!enforcementVolume) return [];
+ const agg = aggregateByBucket(enforcementVolume);
return Array.from(agg.entries())
.sort(([a], [b]) => a.localeCompare(b))
.map(([bucket, v]) => ({ bucket, value: v.total }));
- }, [data?.enforcement_volume]);
+ }, [enforcementVolume]);
const totalExecutions = useMemo(
() => executionBuckets.reduce((s, b) => s + b.value, 0),
diff --git a/web/src/components/common/ErrorDisplay.tsx b/web/src/components/common/ErrorDisplay.tsx
index a5b0217..b08563b 100644
--- a/web/src/components/common/ErrorDisplay.tsx
+++ b/web/src/components/common/ErrorDisplay.tsx
@@ -1,5 +1,17 @@
import { AlertCircle, ShieldAlert } from "lucide-react";
+/** Shape of an axios-like error with a response property */
+interface AxiosLikeError {
+ response?: {
+ status?: number;
+ data?: {
+ message?: string;
+ };
+ };
+ isAuthorizationError?: boolean;
+ message?: string;
+}
+
interface ErrorDisplayProps {
error: Error | unknown;
title?: string;
@@ -21,30 +33,39 @@ export default function ErrorDisplay({
showRetry = false,
onRetry,
}: ErrorDisplayProps) {
+ const asAxios = (err: unknown): AxiosLikeError | null => {
+ if (err && typeof err === "object") return err as AxiosLikeError;
+ return null;
+ };
+
// Type guard for axios errors
- const isAxiosError = (err: any): boolean => {
- return err?.response?.status !== undefined;
+ const isAxiosError = (err: unknown): boolean => {
+ const e = asAxios(err);
+ return e?.response?.status !== undefined;
};
// Check if this is a 403 (Forbidden) error
- const is403Error = (err: any): boolean => {
- return (
- err?.response?.status === 403 ||
- err?.isAuthorizationError === true
- );
+ const is403Error = (err: unknown): boolean => {
+ const e = asAxios(err);
+ return e?.response?.status === 403 || e?.isAuthorizationError === true;
};
// Check if this is a 401 (Unauthorized) error
- const is401Error = (err: any): boolean => {
- return err?.response?.status === 401;
+ const is401Error = (err: unknown): boolean => {
+ const e = asAxios(err);
+ return e?.response?.status === 401;
};
// Extract error message
- const getErrorMessage = (err: any): string => {
- if (err?.response?.data?.message) {
- return err.response.data.message;
+ const getErrorMessage = (err: unknown): string => {
+ const e = asAxios(err);
+ if (e?.response?.data?.message) {
+ return e.response.data.message;
}
- if (err?.message) {
+ if (e?.message) {
+ return e.message;
+ }
+ if (err instanceof Error) {
return err.message;
}
return "An unexpected error occurred";
@@ -67,8 +88,8 @@ export default function ErrorDisplay({
role or permissions do not allow this action.
- If you believe you should have access, please contact your
- system administrator.
+ If you believe you should have access, please contact your system
+ administrator.
@@ -110,12 +131,10 @@ export default function ErrorDisplay({
{title || "Error"}
-
- {getErrorMessage(error)}
-
- {isAxiosError(error) && (error as any)?.response?.status && (
+