From b2184d25004150979c8600fe0c1a5f490e02ea12 Mon Sep 17 00:00:00 2001 From: Archit Sharma Date: Fri, 9 Oct 2026 00:02:04 +0530 Subject: [PATCH] Protect-an-agent setup, workspace as code, rule tests, OpenAI Agents + TypeScript SDKs - Protect an agent: guided setup (protections and sensitivity, words and topics, blocked message, 7-day replay, live test). Stored as an agent-level policy layer `agent.` composed `extend`, so an agent can be stricter than the workspace but never weaker. - Workspace as code: export every bound policy, custom rule and detector switch as one YAML file; plan and apply it from Policies -> Code or `agentfox policy export/apply`. Never deletes; enforcing still needs a recorded simulation and the production role. - Rule tests: save messages a rule must or must not catch; every proposed change on the Tune tab re-checks them before Apply. - publish_in_current_mode: one helper for generated packs (custom, agent layers, workspace apply). - OpenAI Agents SDK adapter (input/output/tool guardrails) and a dependency-free TypeScript SDK (sdk/typescript). - ADR 0003; uv.lock refreshed for the openai-agents extra; wheels rebuilt. Co-Authored-By: Claude --- api/vendor/agentfox-0.3.1-py3-none-any.whl | Bin 1372905 -> 1394804 bytes .../app/(product)/app/agents/[slug]/page.tsx | 9 +- .../app/agents/[slug]/protect/page.tsx | 32 + dashboard/app/(product)/app/policies/page.tsx | 14 + .../app/policies/rules/[ruleId]/page.tsx | 23 +- .../agents/[slug]/protection/preview/route.ts | 11 + .../app/api/agents/[slug]/protection/route.ts | 12 + .../policies/[key]/rules/[ruleId]/route.ts | 5 +- .../api/rules/[ruleId]/examples/[id]/route.ts | 9 + .../app/api/rules/[ruleId]/examples/route.ts | 28 + dashboard/app/api/workspace/apply/route.ts | 10 + dashboard/app/api/workspace/plan/route.ts | 10 + dashboard/app/globals.css | 9 + .../product/agent/ProtectWizard.tsx | 249 ++++ .../components/product/policies/RuleTests.tsx | 107 ++ .../components/product/policies/RuleTuner.tsx | 17 +- .../product/policies/WorkspaceCode.tsx | 138 ++ dashboard/components/product/test/TryIt.tsx | 16 +- dashboard/lib/generated/reference/api.json | 410 +++++- dashboard/lib/generated/reference/cli.json | 63 + dashboard/lib/product/protection.ts | 10 + dashboard/lib/product/rules.ts | 3 + .../vendor/agentfox-0.3.1-py3-none-any.whl | Bin 1372905 -> 1394804 bytes docs/README.md | 4 +- ...-agent-layers-workspace-file-rule-tests.md | 54 + docs/adr/README.md | 1 + docs/architecture/api-spec.md | 12 +- docs/product-tour.md | 26 + plugins/claude-code/reference/docs-map.md | 3 +- plugins/claude-code/reference/http-api.md | 3 + plugins/claude-code/reference/sdk.md | 51 + plugins/shared/reference/docs-map.md | 3 +- plugins/shared/reference/http-api.md | 3 + plugins/shared/reference/sdk.md | 51 + pyproject.toml | 4 + sdk/typescript/.gitignore | 3 + sdk/typescript/README.md | 105 ++ sdk/typescript/package-lock.json | 1211 +++++++++++++++++ sdk/typescript/package.json | 36 + sdk/typescript/src/index.ts | 245 ++++ sdk/typescript/src/types.ts | 167 +++ sdk/typescript/test/client.test.ts | 234 ++++ sdk/typescript/tsconfig.build.json | 8 + sdk/typescript/tsconfig.json | 16 + src/agentfox/apps/cli/commands/policy.py | 58 + src/agentfox/apps/gateway/app.py | 6 + .../apps/gateway/routes/protection.py | 183 +++ .../apps/gateway/routes/rule_examples.py | 106 ++ src/agentfox/apps/gateway/routes/workspace.py | 63 + .../capabilities/detection/custom_store.py | 44 +- .../capabilities/protection/__init__.py | 282 ++++ .../capabilities/workspace/__init__.py | 291 ++++ src/agentfox/frameworks/openai_agents.py | 436 ++++++ src/agentfox/platform/ledger/operator_log.py | 10 + src/agentfox/platform/policy/examples.py | 156 +++ src/agentfox/platform/policy/publish.py | 89 ++ src/agentfox/platform/policy/simulate.py | 4 +- tests/apps/cli/test_cli_workspace.py | 47 + tests/apps/gateway/test_protection.py | 94 ++ tests/apps/gateway/test_rule_examples.py | 67 + tests/apps/gateway/test_workspace.py | 108 ++ tests/frameworks/test_openai_agents.py | 453 ++++++ uv.lock | 106 +- 63 files changed, 5967 insertions(+), 61 deletions(-) create mode 100644 dashboard/app/(product)/app/agents/[slug]/protect/page.tsx create mode 100644 dashboard/app/api/agents/[slug]/protection/preview/route.ts create mode 100644 dashboard/app/api/agents/[slug]/protection/route.ts create mode 100644 dashboard/app/api/rules/[ruleId]/examples/[id]/route.ts create mode 100644 dashboard/app/api/rules/[ruleId]/examples/route.ts create mode 100644 dashboard/app/api/workspace/apply/route.ts create mode 100644 dashboard/app/api/workspace/plan/route.ts create mode 100644 dashboard/components/product/agent/ProtectWizard.tsx create mode 100644 dashboard/components/product/policies/RuleTests.tsx create mode 100644 dashboard/components/product/policies/WorkspaceCode.tsx create mode 100644 dashboard/lib/product/protection.ts create mode 100644 docs/adr/0003-agent-layers-workspace-file-rule-tests.md create mode 100644 sdk/typescript/.gitignore create mode 100644 sdk/typescript/README.md create mode 100644 sdk/typescript/package-lock.json create mode 100644 sdk/typescript/package.json create mode 100644 sdk/typescript/src/index.ts create mode 100644 sdk/typescript/src/types.ts create mode 100644 sdk/typescript/test/client.test.ts create mode 100644 sdk/typescript/tsconfig.build.json create mode 100644 sdk/typescript/tsconfig.json create mode 100644 src/agentfox/apps/gateway/routes/protection.py create mode 100644 src/agentfox/apps/gateway/routes/rule_examples.py create mode 100644 src/agentfox/apps/gateway/routes/workspace.py create mode 100644 src/agentfox/capabilities/protection/__init__.py create mode 100644 src/agentfox/capabilities/workspace/__init__.py create mode 100644 src/agentfox/frameworks/openai_agents.py create mode 100644 src/agentfox/platform/policy/examples.py create mode 100644 src/agentfox/platform/policy/publish.py create mode 100644 tests/apps/cli/test_cli_workspace.py create mode 100644 tests/apps/gateway/test_protection.py create mode 100644 tests/apps/gateway/test_rule_examples.py create mode 100644 tests/apps/gateway/test_workspace.py create mode 100644 tests/frameworks/test_openai_agents.py diff --git a/api/vendor/agentfox-0.3.1-py3-none-any.whl b/api/vendor/agentfox-0.3.1-py3-none-any.whl index 36ac0c9562d6a4b15bca082c6cee43098b0a7468..10582b0a527b317e93fca9c6fce6700c73071b11 100644 GIT binary patch delta 72997 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
- + } /> - + {state !== "killed" && (
diff --git a/dashboard/app/(product)/app/agents/[slug]/protect/page.tsx b/dashboard/app/(product)/app/agents/[slug]/protect/page.tsx new file mode 100644 index 00000000..e349f508 --- /dev/null +++ b/dashboard/app/(product)/app/agents/[slug]/protect/page.tsx @@ -0,0 +1,32 @@ +import type { Metadata } from "next"; +import { appPageMetadata } from "@/lib/site"; +import { safeApi } from "@/lib/product/api"; +import { Card, Empty, Header } from "@/components/kit"; +import { ProtectWizard } from "@/components/product/agent/ProtectWizard"; + +export const metadata: Metadata = appPageMetadata("Protect agent"); +export const dynamic = "force-dynamic"; + +export default async function Protect({ params }: { params: Promise<{ slug: string }> }) { + const { slug: raw } = await params; + const slug = decodeURIComponent(raw); + const [state, tools] = await Promise.all([ + safeApi(`/api/agents/${encodeURIComponent(slug)}/protection`, null), + safeApi("/api/tools", { tools: [] }), + ]); + return ( + <> +
+ + {state ? ( + !t.key.startsWith("redteam.")).map((t: any) => ({ key: t.key, name: t.name }))} + /> + ) : ( + This agent could not be loaded. + )} + + + ); +} diff --git a/dashboard/app/(product)/app/policies/page.tsx b/dashboard/app/(product)/app/policies/page.tsx index 74cd820a..8b12e168 100644 --- a/dashboard/app/(product)/app/policies/page.tsx +++ b/dashboard/app/(product)/app/policies/page.tsx @@ -23,6 +23,7 @@ import { Detectors } from "@/components/product/policies/Detectors"; import { ImportGuard } from "@/components/product/policies/ImportGuard"; import { LibraryPacks } from "@/components/product/policies/LibraryPacks"; import { PackMode } from "@/components/product/policies/PackMode"; +import { WorkspaceCode } from "@/components/product/policies/WorkspaceCode"; import { LegacyJudgmentTab, LegacyPacksTab, LegacyTuningTab } from "@/components/product/policies/legacy"; import { metricsQs, runsHref } from "@/lib/product/observe"; import { loadRules, ruleMode, type RuleInfo } from "@/lib/product/rules"; @@ -38,6 +39,7 @@ const TABS = [ { key: "performance", label: "Performance" }, { key: "library", label: "Library" }, { key: "changes", label: "Changes" }, + { key: "code", label: "Code" }, { key: "advanced", label: "Advanced" }, ]; @@ -68,6 +70,7 @@ export default async function Policies({ searchParams }: { searchParams: Promise {tab === "performance" && } {tab === "library" && } {tab === "changes" && } + {tab === "code" && } {tab === "advanced" && } ); @@ -345,6 +348,17 @@ async function LibraryTab({ sec }: { sec?: string }) { ); } +// --- Code -------------------------------------------------------------------- + +async function CodeTab() { + const exported = await safeApi("/api/workspace/export", { source: "" }); + return ( + + + + ); +} + // --- Changes ----------------------------------------------------------------- async function ChangesTab() { diff --git a/dashboard/app/(product)/app/policies/rules/[ruleId]/page.tsx b/dashboard/app/(product)/app/policies/rules/[ruleId]/page.tsx index 20d4cc70..a7f6d605 100644 --- a/dashboard/app/(product)/app/policies/rules/[ruleId]/page.tsx +++ b/dashboard/app/(product)/app/policies/rules/[ruleId]/page.tsx @@ -1,10 +1,11 @@ import type { Metadata } from "next"; import Link from "next/link"; import { appPageMetadata } from "@/lib/site"; -import { safeApi } from "@/lib/product/api"; +import { post, safeApi } from "@/lib/product/api"; import { ActionPill, BarList, Card, Empty, Grid, Header, Kpi, ModePill, Pill, Tabs, ago, href, num } from "@/components/kit"; import { FilterBar } from "@/components/kit/FilterBar"; import { RunsTable } from "@/components/kit/RunsTable"; +import { RuleTests } from "@/components/product/policies/RuleTests"; import { RuleTuner } from "@/components/product/policies/RuleTuner"; import { RANGE_DAYS, metricsQs, runsHref } from "@/lib/product/observe"; import { loadRules, ruleMode } from "@/lib/product/rules"; @@ -15,7 +16,8 @@ export const dynamic = "force-dynamic"; const TABS = [ { key: "overview", label: "Overview" }, - { key: "examples", label: "Examples" }, + { key: "examples", label: "Hits" }, + { key: "tests", label: "Tests" }, { key: "tune", label: "Tune" }, { key: "history", label: "History" }, ]; @@ -101,6 +103,12 @@ export default async function RulePage({ params, searchParams }: { params: Promi {tab === "examples" && } + {tab === "tests" && ( + + {rule ? : Not in any installed pack.} + + )} + {tab === "tune" && ( {rule ? : Not in any installed pack.} @@ -149,3 +157,14 @@ async function Examples({ ruleId, range }: { ruleId: string; range: keyof typeof ); } + +async function Tests({ ruleId, pack, agents }: { ruleId: string; pack?: string; agents: string[] }) { + const [checked, all] = await Promise.all([ + pack + ? post(`/api/rules/${encodeURIComponent(ruleId)}/examples/check`, { policy: pack }).catch(() => ({ results: [] })) + : Promise.resolve({ results: [] }), + safeApi("/api/agents", { agents: [] }), + ]); + const slugs = Array.from(new Set([...agents, ...(all.agents || []).filter((a: any) => a.status !== "draft").map((a: any) => a.slug)])); + return ; +} diff --git a/dashboard/app/api/agents/[slug]/protection/preview/route.ts b/dashboard/app/api/agents/[slug]/protection/preview/route.ts new file mode 100644 index 00000000..60797ab3 --- /dev/null +++ b/dashboard/app/api/agents/[slug]/protection/preview/route.ts @@ -0,0 +1,11 @@ +import { NextRequest } from "next/server"; +import { proxyJson } from "@/lib/product/proxy"; +import { protectionSetup } from "@/lib/product/protection"; + +export const dynamic = "force-dynamic"; + +/** Replay the agent's last week against a setup. Saves nothing. */ +export async function POST(req: NextRequest, { params }: { params: Promise<{ slug: string }> }) { + const { slug } = await params; + return proxyJson(`/api/agents/${encodeURIComponent(slug)}/protection/preview`, "POST", protectionSetup(await req.json())); +} diff --git a/dashboard/app/api/agents/[slug]/protection/route.ts b/dashboard/app/api/agents/[slug]/protection/route.ts new file mode 100644 index 00000000..c1deebbb --- /dev/null +++ b/dashboard/app/api/agents/[slug]/protection/route.ts @@ -0,0 +1,12 @@ +import { NextRequest } from "next/server"; +import { protectionSetup } from "@/lib/product/protection"; +import { proxyJson } from "@/lib/product/proxy"; + +export const dynamic = "force-dynamic"; + +/** Save an agent's protections, words, topics and blocked message. */ +export async function POST(req: NextRequest, { params }: { params: Promise<{ slug: string }> }) { + const { slug } = await params; + return proxyJson(`/api/agents/${encodeURIComponent(slug)}/protection`, "POST", protectionSetup(await req.json())); +} + diff --git a/dashboard/app/api/policies/[key]/rules/[ruleId]/route.ts b/dashboard/app/api/policies/[key]/rules/[ruleId]/route.ts index e354c121..2961c0d0 100644 --- a/dashboard/app/api/policies/[key]/rules/[ruleId]/route.ts +++ b/dashboard/app/api/policies/[key]/rules/[ruleId]/route.ts @@ -29,5 +29,8 @@ export async function POST(req: NextRequest, { params }: { params: Promise<{ key persist: Boolean(version.needs_simulation), }); const simulation = sim.ok ? await sim.json() : null; - return NextResponse.json({ ...version, simulation }); + // The rule's saved tests, re-checked against exactly this proposed version. + const checked = await proxyJson(`/api/rules/${encodeURIComponent(ruleId)}/examples/check`, "POST", { policy: key, body: version.body }); + const tests = checked.ok ? await checked.json() : null; + return NextResponse.json({ ...version, simulation, tests }); } diff --git a/dashboard/app/api/rules/[ruleId]/examples/[id]/route.ts b/dashboard/app/api/rules/[ruleId]/examples/[id]/route.ts new file mode 100644 index 00000000..5fcb0935 --- /dev/null +++ b/dashboard/app/api/rules/[ruleId]/examples/[id]/route.ts @@ -0,0 +1,9 @@ +import { proxyJson } from "@/lib/product/proxy"; + +export const dynamic = "force-dynamic"; + +/** Delete one saved test from a rule. */ +export async function DELETE(_req: Request, { params }: { params: Promise<{ ruleId: string; id: string }> }) { + const { ruleId, id } = await params; + return proxyJson(`/api/rules/${encodeURIComponent(ruleId)}/examples/${encodeURIComponent(id)}`, "DELETE"); +} diff --git a/dashboard/app/api/rules/[ruleId]/examples/route.ts b/dashboard/app/api/rules/[ruleId]/examples/route.ts new file mode 100644 index 00000000..cc0f0da7 --- /dev/null +++ b/dashboard/app/api/rules/[ruleId]/examples/route.ts @@ -0,0 +1,28 @@ +import { NextRequest, NextResponse } from "next/server"; +import { proxyJson } from "@/lib/product/proxy"; + +export const dynamic = "force-dynamic"; + +/** + * Save a test for a rule: run the text through the playground for the chosen agent + * (so it is recorded, but not counted as production traffic), then keep that decision + * with whether the rule should fire on it. + */ +export async function POST(req: NextRequest, { params }: { params: Promise<{ ruleId: string }> }) { + const { ruleId } = await params; + const { text, surface, agent, fires } = await req.json(); + if (!agent || !String(text || "").trim()) return NextResponse.json({ detail: "choose an agent and enter text" }, { status: 400 }); + const ran = await proxyJson(surface === "output" ? "/v1/guard/output" : "/v1/guard/input", "POST", { + agent: String(agent), + content: String(text), + surface: surface === "output" ? "output" : "input", + environment: "playground", + }); + if (!ran.ok) return ran; + const { decision_id } = await ran.json(); + return proxyJson(`/api/rules/${encodeURIComponent(ruleId)}/examples`, "POST", { + decision_id, + fires: Boolean(fires), + sample: String(text).slice(0, 2000), + }); +} diff --git a/dashboard/app/api/workspace/apply/route.ts b/dashboard/app/api/workspace/apply/route.ts new file mode 100644 index 00000000..559f8e85 --- /dev/null +++ b/dashboard/app/api/workspace/apply/route.ts @@ -0,0 +1,10 @@ +import { NextRequest } from "next/server"; +import { proxyJson } from "@/lib/product/proxy"; + +export const dynamic = "force-dynamic"; + +/** Apply a workspace file. Anything it leaves out is left alone. */ +export async function POST(req: NextRequest) { + const { source } = await req.json(); + return proxyJson("/api/workspace/apply", "POST", { source: String(source || "") }); +} diff --git a/dashboard/app/api/workspace/plan/route.ts b/dashboard/app/api/workspace/plan/route.ts new file mode 100644 index 00000000..900eff25 --- /dev/null +++ b/dashboard/app/api/workspace/plan/route.ts @@ -0,0 +1,10 @@ +import { NextRequest } from "next/server"; +import { proxyJson } from "@/lib/product/proxy"; + +export const dynamic = "force-dynamic"; + +/** What applying a workspace file would change. Saves nothing. */ +export async function POST(req: NextRequest) { + const { source } = await req.json(); + return proxyJson("/api/workspace/plan", "POST", { source: String(source || "") }); +} diff --git a/dashboard/app/globals.css b/dashboard/app/globals.css index d61e51d8..3797cc03 100644 --- a/dashboard/app/globals.css +++ b/dashboard/app/globals.css @@ -3192,6 +3192,15 @@ textarea.k-input { height: auto; padding: 8px 11px; line-height: 1.5; resize: ve .k-preview-nums { display: flex; gap: 18px; flex-wrap: wrap; font-size: var(--t-small); } .k-preview-nums strong { font-variant-numeric: tabular-nums; } .k-plain { margin: 0; padding-left: 18px; font-size: var(--t-small); display: flex; flex-direction: column; gap: 2px; } +.k-steps { display: flex; gap: 4px; list-style: none; margin: 0 0 6px; padding: 0; overflow-x: auto; scrollbar-width: none; } +.k-steps button { display: inline-flex; align-items: center; gap: 8px; padding: 6px 12px 6px 6px; border: 1px solid var(--border); border-radius: var(--r-pill); background: var(--panel); color: var(--muted); font-size: var(--t-small); white-space: nowrap; cursor: pointer; } +.k-steps button:disabled { cursor: default; opacity: .5; } +.k-steps .k-step-n { display: inline-grid; place-items: center; width: 20px; height: 20px; border-radius: 50%; background: var(--border); color: var(--text); font-size: var(--t-micro); } +.k-steps button.active { color: var(--text); border-color: var(--text); } +.k-steps button.active .k-step-n { background: var(--text); color: var(--panel); } +.k-steps button.done .k-step-n { background: var(--viz-allowed); color: var(--panel); } +.k-form > .k-seg { align-self: flex-start; } +.k-code { margin: 0; max-height: 520px; overflow: auto; padding: 12px 14px; border: 1px solid var(--border); border-radius: var(--r-2); background: var(--panel-2); font-size: var(--t-small); line-height: 1.5; } .k-details { margin-top: 14px; } .k-details > summary { cursor: pointer; color: var(--muted); font-size: var(--t-small); margin-bottom: 10px; } h2.k-section { font-size: var(--t-small); font-weight: 620; margin: 22px 0 10px; } diff --git a/dashboard/components/product/agent/ProtectWizard.tsx b/dashboard/components/product/agent/ProtectWizard.tsx new file mode 100644 index 00000000..f7883f66 --- /dev/null +++ b/dashboard/components/product/agent/ProtectWizard.tsx @@ -0,0 +1,249 @@ +"use client"; + +import Link from "next/link"; +import { useRouter } from "next/navigation"; +import { useState } from "react"; +import { callJson } from "@/components/kit/Act"; +import { TryIt } from "@/components/product/test/TryIt"; + +type Protection = { + key: string; + title: string; + level: string; + inherited: string | null; + inherited_mode: string | null; + graded: boolean; + needs: string | null; + needs_installed?: boolean; + default: string; +}; + +export type ProtectionState = { + agent: string; + mode: string | null; + message: string; + levels: Record; + protections: Protection[]; + words: string[]; + avoid: string; + allowed: string; +}; + +const STEPS = ["Protections", "Words & topics", "Message", "Review", "Test"] as const; +const GRADES = ["off", "low", "medium", "high"]; +const LABEL: Record = { off: "Off", on: "On", low: "Low", medium: "Medium", high: "High" }; +const RANK: Record = { off: 0, low: 1, on: 1, medium: 2, high: 3 }; + +/** + * Protect one agent, start to finish: what to stop and how strictly, its own words + * and topics, what its users are told, a replay of its last week, then a live test. + * Everything new starts watching. + */ +export function ProtectWizard({ + initial, + tools, +}: { + initial: ProtectionState; + tools: { key: string; name?: string }[]; +}) { + const router = useRouter(); + const fresh = initial.protections.every((p) => p.level === "off"); + const [step, setStep] = useState(0); + const [choices, setChoices] = useState>(() => + Object.fromEntries(initial.protections.map((p) => [p.key, fresh ? startLevel(p) : p.level])), + ); + const [words, setWords] = useState(initial.words.join("\n")); + const [avoid, setAvoid] = useState(initial.avoid); + const [allowed, setAllowed] = useState(initial.allowed); + const [message, setMessage] = useState(initial.message); + const [preview, setPreview] = useState(null); + const [saved, setSaved] = useState(null); + const [busy, setBusy] = useState(false); + const [error, setError] = useState(""); + + const payload = () => ({ + protections: choices, + message, + words: words.split(/\n|,/).map((w) => w.trim()).filter(Boolean), + avoid, + allowed, + }); + const base = `/api/agents/${encodeURIComponent(initial.agent)}/protection`; + + const run = async (fn: () => Promise) => { + setBusy(true); + setError(""); + try { + await fn(); + } catch (e: any) { + setError(e.message); + } finally { + setBusy(false); + } + }; + + const go = (i: number) => { + setStep(i); + if (STEPS[i] === "Review" && !saved) run(async () => setPreview(await callJson(`${base}/preview`, "POST", payload()))); + }; + + const save = () => + run(async () => { + setSaved(await callJson(base, "POST", payload())); + router.refresh(); + setStep(STEPS.indexOf("Test")); + }); + + return ( +
+
    + {STEPS.map((s, i) => ( +
  1. + +
  2. + ))} +
+ + {STEPS[step] === "Protections" && ( + + + {initial.protections.map((p) => { + const options = p.graded ? GRADES : ["off", "on"]; + const floor = p.inherited ? RANK[p.inherited] : 0; + return ( + + + + + ); + })} + +
+ {p.title} + {p.inherited && ( + + {LABEL[p.inherited]} for every agent{p.inherited_mode === "enforce" ? "" : " · watching"} + + )} + {p.needs && p.needs_installed === false && choices[p.key] !== "off" && Model not installed here} + +
+ {options.map((o) => ( + + ))} +
+
+ )} + + {STEPS[step] === "Words & topics" && ( + <> +
+ +

RgY2`x7*LeMt1|+K?SZ8&U*}$=tWhj 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 V1&&1!ff|A88;OEq } actions={ + <> + + Protect +