diff --git a/agentic_security/static/index.html b/agentic_security/static/index.html index 0630be5..02c4ae3 100644 --- a/agentic_security/static/index.html +++ b/agentic_security/static/index.html @@ -142,6 +142,45 @@

Parameters

+
+ +
+ +
+
+

Confirm + Reset

+

Are you sure you want to reset all + settings to their default state? This action cannot be + undone.

+
+ + +
+
+
+ +
@@ -229,6 +268,21 @@

Enable Concurrency

concurrently. This can significantly reduce the total scan time but may increase resource usage.

+ +
+

Enable Multi-Step Attack

+ +
+

+ When enabled, the scan will attempt multi-step attack + simulations, + increasing accuracy and depth of analysis. +

diff --git a/agentic_security/static/main.js b/agentic_security/static/main.js index ae5a61c..8bdc3d6 100644 --- a/agentic_security/static/main.js +++ b/agentic_security/static/main.js @@ -73,10 +73,12 @@ var app = new Vue({ modelSpec: LLM_SPECS[0], budget: 50, showParams: false, + showResetConfirmation: false, enableChartDiagram: true, enableLogging: false, enableConcurrency: false, optimize: false, + enableMultiStepAttack: false, showDatasets: false, scanResults: [], mainTable: [], @@ -117,6 +119,7 @@ var app = new Vue({ this.adjustHeight({ target: document.getElementById('llm-spec') }); // this.startScan(); this.loadConfigs(); + }, computed: { selectedDS: function () { @@ -131,6 +134,45 @@ var app = new Vue({ this.showConsentModal = false; // Close the modal localStorage.setItem('consentGiven', 'true'); // Save consent to local storage }, + + saveStateToLocalStorage() { + const state = { + modelSpec: this.modelSpec, + budget: this.budget, + dataConfig: this.dataConfig, + optimize: this.optimize, + enableChartDiagram: this.enableChartDiagram, + }; + localStorage.setItem('appState', JSON.stringify(state)); + }, + loadStateFromLocalStorage() { + const savedState = localStorage.getItem('appState'); + console.log('Loading state from local storage:', savedState); + if (savedState) { + const state = JSON.parse(savedState); + this.modelSpec = state.modelSpec; + this.budget = state.budget; + this.dataConfig = state.dataConfig; + this.optimize = state.optimize; + this.enableChartDiagram = state.enableChartDiagram; + } + }, + resetState() { + localStorage.removeItem('appState'); + this.modelSpec = LLM_SPECS[0]; + this.budget = 50; + this.dataConfig.forEach(config => config.selected = false); + this.optimize = false; + this.enableChartDiagram = true; + this.okMsg = ''; + this.errorMsg = ''; + this.integrationVerified = false; + this.showResetConfirmation = false; + }, + confirmResetState() { + this.showResetConfirmation = true; + }, + declineConsent() { this.showConsentModal = false; // Close the modal localStorage.setItem('consentGiven', 'false'); // Save decline to local storage @@ -186,6 +228,7 @@ var app = new Vue({ // this.$forceUpdate(); } + this.saveStateToLocalStorage(); }, loadConfigs: async function () { const response = await fetch(`${URL}/v1/data-config`, { @@ -196,6 +239,7 @@ var app = new Vue({ }); console.log(response); this.dataConfig = await response.json(); + this.loadStateFromLocalStorage(); }, selectConfig(index) { this.selectedConfig = index; @@ -413,6 +457,8 @@ var app = new Vue({ } }); } + this.saveStateToLocalStorage(); + } } }); diff --git a/pyproject.toml b/pyproject.toml index 02502b6..a1bbd70 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "agentic_security" -version = "0.3.2" +version = "0.3.3" description = "Agentic LLM vulnerability scanner" authors = ["Alexander Miasoiedov "] maintainers = ["Alexander Miasoiedov "]