feat: add lesson export and import functionality

- Implemented `LessonExport` and `LessonImport` actions in the action module.
- Added corresponding command parsing for lesson export and import.
- Created functions to handle lesson export and import in the memory module.
- Updated state management to reflect changes after lesson operations.
- Introduced deferred operations for handling asynchronous tasks in the event loop.
- Enhanced the tool execution context to include graduated checks for file operations.
- Added OAuth support with PKCE for secure authorization flows.
- Implemented a loopback server for handling OAuth redirects.
- Refactored various modules to improve code organization and maintainability.
This commit is contained in:
asepharyana
2026-07-11 18:23:01 +07:00
parent cc03bd79b6
commit c1ad206a00
49 changed files with 1088 additions and 12 deletions
+26 -1
View File
@@ -2,6 +2,8 @@ use std::collections::HashMap;
use serde::{Deserialize, Serialize};
use super::script::{ScriptPrimitive, WorkflowScript};
static FINDINGS: std::sync::Mutex<Vec<String>> = std::sync::Mutex::new(Vec::new());
#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
pub enum AgentState {
Idle,
@@ -108,6 +110,29 @@ pub fn run_workflow(script: &WorkflowScript, args: &HashMap<String, String>) ->
Ok("workflow completed".to_string())
}
#[expect(dead_code)]
pub fn push_finding(engine: &mut WorkflowEngine, text: &str) {
engine.findings.push(text.to_string());
}
pub fn note_finding(text: &str) {
let _finding = text;
if let Ok(mut findings) = FINDINGS.lock() {
findings.push(text.to_string());
}
}
#[expect(dead_code)]
pub fn current_findings() -> Vec<String> {
if let Ok(findings) = FINDINGS.lock() {
findings.clone()
} else {
Vec::new()
}
}
#[expect(dead_code)]
pub fn clear_findings() {
if let Ok(mut findings) = FINDINGS.lock() {
findings.clear();
}
}