




















@@ -859,25 +859,104 @@ allowed_sandbox_modes = ["read-only", "workspace-write"]
859859configured: true,
860860enabled: true,
861861allowDestructiveActions: false,
862+destructiveApprovalMode: "deny",
862863pluginPolicies: [
863864{
864865configKey: "google-calendar",
865866marketplaceName: "openai-curated",
866867pluginName: "google-calendar",
867868enabled: true,
868869allowDestructiveActions: true,
870+destructiveApprovalMode: "allow",
869871},
870872{
871873configKey: "slack",
872874marketplaceName: "openai-curated",
873875pluginName: "slack",
874876enabled: false,
875877allowDestructiveActions: false,
878+destructiveApprovalMode: "deny",
876879},
877880],
878881});
879882});
880883884+it("parses auto native Codex plugin destructive policy", () => {
885+const config = readCodexPluginConfig({
886+codexPlugins: {
887+enabled: true,
888+allow_destructive_actions: "auto",
889+plugins: {
890+"google-calendar": {
891+marketplaceName: "openai-curated",
892+pluginName: "google-calendar",
893+},
894+slack: {
895+marketplaceName: "openai-curated",
896+pluginName: "slack",
897+allow_destructive_actions: false,
898+},
899+gmail: {
900+marketplaceName: "openai-curated",
901+pluginName: "gmail",
902+allow_destructive_actions: true,
903+},
904+},
905+},
906+});
907+908+expect(config.codexPlugins?.allow_destructive_actions).toBe("auto");
909+expect(resolveCodexPluginsPolicy(config)).toEqual({
910+configured: true,
911+enabled: true,
912+allowDestructiveActions: true,
913+destructiveApprovalMode: "auto",
914+pluginPolicies: [
915+{
916+configKey: "gmail",
917+marketplaceName: "openai-curated",
918+pluginName: "gmail",
919+enabled: true,
920+allowDestructiveActions: true,
921+destructiveApprovalMode: "allow",
922+},
923+{
924+configKey: "google-calendar",
925+marketplaceName: "openai-curated",
926+pluginName: "google-calendar",
927+enabled: true,
928+allowDestructiveActions: true,
929+destructiveApprovalMode: "auto",
930+},
931+{
932+configKey: "slack",
933+marketplaceName: "openai-curated",
934+pluginName: "slack",
935+enabled: true,
936+allowDestructiveActions: false,
937+destructiveApprovalMode: "deny",
938+},
939+],
940+});
941+});
942+943+it("rejects unsupported native Codex plugin destructive policy strings", () => {
944+const config = readCodexPluginConfig({
945+codexPlugins: {
946+enabled: true,
947+allow_destructive_actions: "ask",
948+plugins: {
949+slack: {
950+marketplaceName: "openai-curated",
951+pluginName: "slack",
952+},
953+},
954+},
955+});
956+957+expect(config.codexPlugins).toBeUndefined();
958+});
959+881960it("defaults native Codex plugin destructive policy to enabled", () => {
882961const policy = resolveCodexPluginsPolicy({
883962codexPlugins: {
@@ -895,13 +974,15 @@ allowed_sandbox_modes = ["read-only", "workspace-write"]
895974configured: true,
896975enabled: true,
897976allowDestructiveActions: true,
977+destructiveApprovalMode: "allow",
898978pluginPolicies: [
899979{
900980configKey: "slack",
901981marketplaceName: "openai-curated",
902982pluginName: "slack",
903983enabled: true,
904984allowDestructiveActions: true,
985+destructiveApprovalMode: "allow",
905986},
906987],
907988});
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。