mirror of
https://github.com/openai/codex.git
synced 2026-10-21 17:48:44 +00:00
feat(core): persist runtime workspace state
This commit is contained in:
@@ -7,6 +7,7 @@ use super::NetworkApprovalProtocol;
|
||||
use super::NetworkPolicyAmendment;
|
||||
use super::RequestPermissionProfile;
|
||||
use super::UserInput;
|
||||
use super::WorkspaceMutationApprovalRequest;
|
||||
use super::shared::v2_enum_from_core;
|
||||
use crate::protocol::item_builders::convert_patch_changes;
|
||||
use codex_experimental_api_macros::ExperimentalApi;
|
||||
@@ -573,6 +574,7 @@ pub struct GuardianMcpToolCallReviewAction {
|
||||
pub struct GuardianRequestPermissionsReviewAction {
|
||||
pub reason: Option<String>,
|
||||
pub permissions: RequestPermissionProfile,
|
||||
pub workspace_mutation: Option<WorkspaceMutationApprovalRequest>,
|
||||
}
|
||||
|
||||
#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, JsonSchema, TS)]
|
||||
@@ -623,6 +625,7 @@ pub enum GuardianApprovalReviewAction {
|
||||
RequestPermissions {
|
||||
reason: Option<String>,
|
||||
permissions: RequestPermissionProfile,
|
||||
workspace_mutation: Option<WorkspaceMutationApprovalRequest>,
|
||||
},
|
||||
}
|
||||
|
||||
@@ -679,9 +682,11 @@ impl From<CoreGuardianAssessmentAction> for GuardianApprovalReviewAction {
|
||||
CoreGuardianAssessmentAction::RequestPermissions {
|
||||
reason,
|
||||
permissions,
|
||||
workspace_mutation,
|
||||
} => Self::RequestPermissions {
|
||||
reason,
|
||||
permissions: permissions.into(),
|
||||
workspace_mutation: workspace_mutation.map(Into::into),
|
||||
},
|
||||
}
|
||||
}
|
||||
@@ -740,9 +745,11 @@ impl From<GuardianApprovalReviewAction> for CoreGuardianAssessmentAction {
|
||||
GuardianApprovalReviewAction::RequestPermissions {
|
||||
reason,
|
||||
permissions,
|
||||
workspace_mutation,
|
||||
} => Self::RequestPermissions {
|
||||
reason,
|
||||
permissions: permissions.into(),
|
||||
workspace_mutation: workspace_mutation.map(Into::into),
|
||||
},
|
||||
}
|
||||
}
|
||||
|
||||
@@ -15,6 +15,8 @@ use codex_protocol::permissions::FileSystemSpecialPath as CoreFileSystemSpecialP
|
||||
use codex_protocol::protocol::NetworkAccess as CoreNetworkAccess;
|
||||
use codex_protocol::request_permissions::PermissionGrantScope as CorePermissionGrantScope;
|
||||
use codex_protocol::request_permissions::RequestPermissionProfile as CoreRequestPermissionProfile;
|
||||
use codex_protocol::request_permissions::WorkspaceMutationApprovalRequest as CoreWorkspaceMutationApprovalRequest;
|
||||
use codex_protocol::request_permissions::WorkspaceMutationOperation as CoreWorkspaceMutationOperation;
|
||||
use codex_utils_absolute_path::AbsolutePathBuf;
|
||||
use schemars::JsonSchema;
|
||||
use serde::Deserialize;
|
||||
@@ -656,7 +658,7 @@ impl From<CoreNetworkPolicyAmendment> for NetworkPolicyAmendment {
|
||||
}
|
||||
}
|
||||
|
||||
#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, JsonSchema, TS)]
|
||||
#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Eq, JsonSchema, TS)]
|
||||
#[serde(rename_all = "camelCase")]
|
||||
#[ts(export_to = "v2/")]
|
||||
pub struct PermissionsRequestApprovalParams {
|
||||
@@ -671,6 +673,43 @@ pub struct PermissionsRequestApprovalParams {
|
||||
pub cwd: AbsolutePathBuf,
|
||||
pub reason: Option<String>,
|
||||
pub permissions: RequestPermissionProfile,
|
||||
pub workspace_mutation: Option<WorkspaceMutationApprovalRequest>,
|
||||
}
|
||||
|
||||
v2_enum_from_core!(
|
||||
pub enum WorkspaceMutationOperation from CoreWorkspaceMutationOperation {
|
||||
SetWorkingDirectory,
|
||||
AddWorkspaceRoot
|
||||
}
|
||||
);
|
||||
|
||||
#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Eq, JsonSchema, TS)]
|
||||
#[serde(rename_all = "camelCase")]
|
||||
#[ts(export_to = "v2/")]
|
||||
pub struct WorkspaceMutationApprovalRequest {
|
||||
pub operation: WorkspaceMutationOperation,
|
||||
pub target: AbsolutePathBuf,
|
||||
pub resulting_workspace_roots: Vec<AbsolutePathBuf>,
|
||||
}
|
||||
|
||||
impl From<CoreWorkspaceMutationApprovalRequest> for WorkspaceMutationApprovalRequest {
|
||||
fn from(value: CoreWorkspaceMutationApprovalRequest) -> Self {
|
||||
Self {
|
||||
operation: value.operation.into(),
|
||||
target: value.target,
|
||||
resulting_workspace_roots: value.resulting_workspace_roots,
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
impl From<WorkspaceMutationApprovalRequest> for CoreWorkspaceMutationApprovalRequest {
|
||||
fn from(value: WorkspaceMutationApprovalRequest) -> Self {
|
||||
Self {
|
||||
operation: value.operation.to_core(),
|
||||
target: value.target,
|
||||
resulting_workspace_roots: value.resulting_workspace_roots,
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
v2_enum_from_core!(
|
||||
|
||||
Reference in New Issue
Block a user