@ycodium-ai/plugin-redteam-model 0.2.3608 → 0.2.3635

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -4,7 +4,7 @@ Deploys ten session modes, a gate rail, and a tool guard. The executor keeps the
4
4
 
5
5
  ## What it does
6
6
 
7
- Settings can deploy or remove the ten presets and install the modules this package is allowed to run. Install and uninstall of other plugins opens the host Plugins page. A session view shows the four gates, a refusal, notes, and a reminder you send yourself. The preset seat offers the general mode first and the professional modes behind a button.
7
+ Settings can deploy or remove the ten presets and install the modules this package is allowed to run. A session view shows the four gates, a refusal, notes, and a reminder you send yourself. The preset seat offers the general mode first and the professional modes behind a button. With the sec-enforce module installed, professional modes refuse the publish tool and reports/ paths until the report gate is open; the other gates are not enforced by code.
8
8
 
9
9
  The manager is stored in the plugin data directory on the machine.
10
10
 
@@ -38,9 +38,11 @@ Deploying modes adds ten presets to the picker. They can be chosen only before t
38
38
  - The standing prompt section is on every session and does not name a mode. The mode envelope appears only after route boost is installed and that session recorded a mode.
39
39
  - A preset does not hide tools from the tool list. The guard refuses a call before it runs.
40
40
  - The host picker shows one English label. The plugin seats translate.
41
- - The first turn can start before the created event is stored. The preset prefix still applies.
42
41
  - A phone drops a preset id it cannot see yet. Deploy, then choose again after the list refreshes.
43
42
  - Scanner programs, audit runners, shell desks, refusal bypass, and subagent providers are withheld.
43
+ - One package installs one plugin. This manager does not ship seventeen child packages, and it does not split a host plane from a preset plane.
44
+ - The manager hears thread.created. It does not read executor frames.
45
+ - The first turn can start before the created event is stored. The preset prefix still applies. The envelope may wait until the next turn.
44
46
  - Live sessions on every agent runtime, and Direct or Relay paths, are outside this package's checks.
45
47
 
46
48
  ## Developing
package/assets/ui.js CHANGED
@@ -1,4 +1,4 @@
1
- var Z=window.__ycodiumPluginHost.react;var{Activity:fe,Children:he,Component:be,Fragment:ve,Profiler:xe,PureComponent:Se,StrictMode:Ne,Suspense:we,__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE:Pe,__COMPILER_RUNTIME:ke,act:Me,cache:Re,cacheSignal:Ie,captureOwnerStack:Ce,cloneElement:De,createContext:z,createElement:P,createRef:Ee,forwardRef:ze,isValidElement:Oe,lazy:Be,memo:Ae,startTransition:_e,unstable_useCacheRefresh:Te,use:O,useActionState:Ue,useCallback:k,useContext:He,useDebugValue:$e,useDeferredValue:Le,useEffect:M,useEffectEvent:Ve,useId:Fe,useImperativeHandle:Ge,useInsertionEffect:qe,useLayoutEffect:je,useMemo:Xe,useOptimistic:Ye,useReducer:Ke,useRef:B,useState:y,useSyncExternalStore:Je,useTransition:We,version:Qe}=Z;var{jsx:t,jsxs:i,Fragment:en}=window.__ycodiumPluginHost.jsxRuntime;var A=z(null);function S(e){return t(A,{value:e.bridge,children:e.children})}var ee=new Set(["Collapsible","CollapsiblePanel","CollapsibleTrigger"]);function f(e){let n=r=>{let o=O(A)?.ui?.[e];return o===void 0?ee.has(e)?P("div",{className:r.className},r.children):null:P(o,r)};return n.displayName=e,n}var d=f("Button"),_=f("Collapsible"),T=f("CollapsibleTrigger"),U=f("CollapsiblePanel"),c=f("EmptyInline"),H=f("ChevronDown");var h="redteam-model",m=["authorization","scope","evidence","report"],$=[{id:"redteam",group:"general"},{id:"pentest",group:"professional"},{id:"code-audit",group:"professional"},{id:"binary-analysis",group:"professional"},{id:"attack-defense",group:"professional"},{id:"av-evasion",group:"professional"},{id:"incident-response",group:"professional"},{id:"cloud-security",group:"professional"},{id:"ctf-solver",group:"professional"},{id:"asset-mapping",group:"professional"}],ne={redteam:{displayName:"Researcher",detail:"General session. Gates are optional."},pentest:{displayName:"Assessment",detail:"Authorized review with the four gates required."},"code-audit":{displayName:"Code review",detail:"Source review with the four gates required."},"binary-analysis":{displayName:"Binary review",detail:"Binary review with the four gates required."},"attack-defense":{displayName:"Exercise",detail:"Authorized exercise with the four gates required."},"av-evasion":{displayName:"Detection review",detail:"Detection review. No evasion steps, payloads, or refusal bypass."},"incident-response":{displayName:"Incident review",detail:"Incident review with the four gates required."},"cloud-security":{displayName:"Cloud review",detail:"Cloud review with the four gates required."},"ctf-solver":{displayName:"Puzzle workspace",detail:"Puzzle workspace with the four gates required."},"asset-mapping":{displayName:"Asset inventory",detail:"Inventory workflow with the four gates required."}};function te(e){let n=$.find(s=>s.id===e);if(n===void 0)return null;let r=ne[n.id];return{id:n.id,group:n.group,...r}}function R(){return $.map(e=>te(e.id)).filter(e=>e!==null)}var L="board",an={gates:`${h}_gates_list`,goal:`${h}_operation_goal`,progress:`${h}_operation_progress`,publish:`${h}_publish`,probe:`${h}_probe`,note:`${h}_ledger_note`};function V(e){let{t:n}=e,[r,s]=y(e.initialProfessionalOpen===!0),[a,o]=y(e.presetId??null),[u,p]=y(!1),b=R(),N=b.filter(l=>l.group==="general"),g=b.filter(l=>l.group==="professional");M(()=>{o(e.presetId??null)},[e.presetId]),M(()=>{let l=x=>{let E=x.detail;o(typeof E?.presetId=="string"?E.presetId:null)};return window.addEventListener("ycodium-draft-preset",l),()=>window.removeEventListener("ycodium-draft-preset",l)},[]);let w=l=>{if(o(l),!e.deployed)return;if(typeof e.onSelectPreset=="function"){e.onSelectPreset(l),p(!1);return}let x=e.bridge.agentPreset?.select;if(x!==void 0){x(l),p(!1);return}p(!0)};return i("section",{className:"rm-hero",children:[t("p",{className:"rm-kicker",children:n("hero.title")}),t("p",{className:"rm-lead",children:n("hero.lead")}),e.deployed?null:t("p",{className:"rm-banner",children:n("hero.deployFirst")}),e.selectable===!1?t("p",{className:"rm-muted",children:n("hero.readOnly")}):null,u?t("p",{className:"rm-muted",children:n("hero.unwired")}):null,i("div",{className:"rm-modes",children:[N.map(l=>t(d,{size:"xs",type:"button",variant:a===l.id?"default":"outline",disabled:!e.deployed,"aria-pressed":a===l.id,onClick:()=>w(l.id),children:n(`mode.${l.id}.name`)},l.id)),t(d,{size:"xs",variant:"outline",type:"button","aria-expanded":r,onClick:()=>s(l=>!l),children:n(r?"hero.hideProfessional":"hero.professional")}),a===null?null:t(d,{size:"xs",variant:"outline",type:"button",disabled:!e.deployed,onClick:()=>w(null),children:n("hero.clear")})]}),r?t("div",{className:"rm-modes",children:g.map(l=>t(d,{size:"xs",type:"button",variant:a===l.id?"default":"outline",disabled:!e.deployed,"aria-pressed":a===l.id,onClick:()=>w(l.id),children:t("span",{children:n(`mode.${l.id}.name`)})},l.id))}):null,a===null?null:t("p",{className:"rm-muted",children:n("hero.selected")})]})}var re=12,oe=20;function I(e=null){return{modeId:e,phase:"authorization",goal:"",done:0,total:m.length,reportOpen:!1,authorizationRecorded:!1,denials:[],notes:[]}}function F(e){if(typeof e!="object"||e===null)return null;let n=e;return typeof n.deployed!="boolean"||!Array.isArray(n.modules)||!Array.isArray(n.modes)?null:n}function ie(e){return m.includes(e)}function G(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function ae(e){return!G(e)||typeof e.tool!="string"||typeof e.reason!="string"?null:{tool:e.tool,code:typeof e.code=="string"?e.code:"denied",reason:e.reason,at:typeof e.at=="string"?e.at:""}}function q(e){if(!G(e))return I();let n=typeof e.phase=="string"&&ie(e.phase)?e.phase:"authorization",r=Array.isArray(e.denials)?e.denials.flatMap(a=>{let o=ae(a);return o===null?[]:[o]}):[],s=Array.isArray(e.notes)?e.notes.filter(a=>typeof a=="string").slice(0,oe):[];return{modeId:typeof e.modeId=="string"?e.modeId:null,phase:n,goal:typeof e.goal=="string"?e.goal:"",done:typeof e.done=="number"?e.done:0,total:typeof e.total=="number"?e.total:m.length,reportOpen:e.reportOpen===!0,authorizationRecorded:e.authorizationRecorded===!0,denials:r.slice(0,re),notes:s}}var se={};function v(e){return e.i18n.usePluginTranslation()}function le(e,n){return e!==null?{next:e,claimed:!1}:{next:n,claimed:!0}}function j(e){return{disabled:e!==null,labelKey:e==="deploy"?"settings.deploying":"settings.deploy"}}function C(e){let n=e.commands.useSubscription("live",se),r=n.data,s=r?.board===void 0?null:F(r.board),a=B(null),[o,u]=y(null),p=k(async(b,N={})=>{let g=le(a.current,b);if(!(!g.claimed||g.next===null)){a.current=g.next,u(g.next);try{await e.commands.invoke(b,N)}finally{a.current=null,u(null)}}},[e]);return{board:s,pending:n.isPending,error:n.error,runningCommand:o,run:p}}function D(e,n){let r=e.sessionProjections.useProjection(L,n||null),s=r,a=n===null||n.length===0?null:s.present?q(s.value):I(),o=k(async(u,p={})=>{await e.commands.invoke(u,{threadId:n??"",...p})},[e,n]);return{session:a,pending:r.isPending,isUnavailable:r.isUnavailable,error:r.error,run:o}}var de=["settings.limitBundle","settings.limitIsolate","settings.limitSection","settings.limitList","settings.limitEvents","settings.limitFollowup","settings.limitSubagent","settings.limitScanner","settings.limitPicker","settings.limitTurn","settings.limitRefresh"];function X(e){let{t:n,board:r}=e,s=e.runningCommand!==null,a=j(e.runningCommand);return r===null?t("section",{className:"rm-root",children:t(c,{title:e.pending?n("common.loading"):n("common.empty")})}):i("section",{className:"rm-root",children:[i("header",{className:"rm-head",children:[i("div",{children:[t("p",{className:"rm-kicker",children:n("common.source")}),t("h2",{className:"rm-title",children:n("settings.title")}),t("p",{className:"rm-lead",children:n("settings.lead")})]}),t("span",{className:r.deployed?"rm-pill rm-pill-ok":"rm-pill",children:r.deployed?n("settings.deployed"):n("settings.notDeployed")})]}),i("div",{className:"rm-card",children:[i("div",{className:"rm-actions",children:[t(d,{size:"xs",variant:"default",type:"button",onClick:e.onDeploy,disabled:a.disabled,children:n(a.labelKey)}),t(d,{size:"xs",variant:"outline",type:"button",onClick:e.onRemove,disabled:!r.deployed||s,children:n("settings.remove")}),t(d,{size:"xs",variant:"outline",type:"button",onClick:e.onRepair,disabled:s,children:n("settings.repair")}),t(d,{size:"xs",variant:"outline",type:"button",onClick:()=>e.onProbe(!r.probeDenial),disabled:s,children:r.probeDenial?n("settings.probeHold"):n("settings.probeAllow")})]}),t("p",{className:"rm-lead",children:n("settings.routing")}),r.lastDenial===null?t("p",{className:"rm-muted",children:n("settings.noDenial")}):i("p",{className:"rm-banner",role:"status",children:[n("settings.denial")," ",r.lastDenial.tool,": ",r.lastDenial.reason]})]}),i("div",{className:"rm-card",children:[t("h3",{className:"rm-title",children:n("settings.modes")}),t("div",{className:"rm-modes",children:r.modes.map(o=>i("article",{className:"rm-card",children:[t("p",{className:"rm-kicker",children:n(`group.${o.group}`)}),t("strong",{children:n(`mode.${o.id}.name`)}),t("p",{className:"rm-muted",children:n(`mode.${o.id}.detail`)})]},o.id))})]}),i("div",{className:"rm-card",children:[t("h3",{className:"rm-title",children:n("settings.modules")}),t("p",{className:"rm-lead",children:n("settings.withheldNote")}),r.modules.map(o=>i("div",{className:"rm-module",children:[i("div",{children:[t("strong",{children:n(`module.${o.id}`)}),i("p",{className:"rm-muted",children:[n(`plane.${o.plane}`),", ",n(`availability.${o.availability}`),","," ",o.installed?n("common.installed"):n("common.absent")]})]}),i("div",{className:"rm-actions",children:[t(d,{size:"xs",variant:"outline",type:"button",disabled:s,onClick:()=>e.onInstall(o.id),children:n("settings.install")}),t(d,{size:"xs",variant:"outline",type:"button",disabled:!o.installed||s,onClick:()=>e.onUpdate(o.id),children:n("settings.update")}),t(d,{size:"xs",variant:"outline",type:"button",disabled:!o.installed||s,onClick:()=>e.onUninstall(o.id),children:n("settings.uninstall")})]})]},o.id)),t("p",{className:"rm-muted",children:n("settings.mcpNote")})]}),i("div",{className:"rm-card",children:[t("h3",{className:"rm-title",children:n("settings.hostPluginsTitle")}),t("p",{className:"rm-lead",children:n("settings.hostPluginsLead")}),t(d,{size:"xs",variant:"outline",type:"button",onClick:e.onOpenHostPlugins,children:n("settings.hostPluginsAction")})]}),i("div",{className:"rm-card",children:[t("h3",{className:"rm-title",children:n("settings.operations")}),r.operations.length===0?t("p",{className:"rm-muted",children:n("settings.noOperations")}):t("ul",{className:"rm-log",children:r.operations.map(o=>i("li",{children:[i("span",{children:[o.kind,", ",n(`op.${o.status}`)]}),t("span",{className:"rm-muted",children:o.detail})]},o.id))})]}),i("div",{className:"rm-card",children:[t("h3",{className:"rm-title",children:n("settings.limitsTitle")}),t("ul",{className:"rm-note",children:de.map(o=>t("li",{children:n(o)},o))})]})]})}function Y(e){return{authorization:e.authorizationRecorded?"secondary":"primary",report:e.authorizationRecorded&&!e.reportOpen?"primary":"secondary"}}function K(e){let{t:n,session:r}=e;if(e.threadId===null||e.threadId.length===0||r===null||r.modeId===null)return null;let s=Math.min(r.done,m.length),a=Y(r);return i(_,{className:"rm-seat",defaultOpen:!0,children:[i(T,{className:"rm-seat-trigger",children:[t(H,{className:"rm-seat-chevron"}),n("session.title")]}),t(U,{children:t("div",{className:"rm-seat-body",children:i("section",{className:"rm-session",children:[i("header",{className:"rm-head",children:[t("div",{children:t("p",{className:"rm-muted",children:n(`mode.${r.modeId}.name`)})}),i("span",{className:"rm-pill",children:[n("session.progress")," ",r.done,"/",r.total]})]}),t("div",{className:"rm-rail","aria-label":n("session.phase"),children:m.map(o=>t(d,{size:"xs",type:"button",variant:r.phase===o?"default":"outline","aria-pressed":r.phase===o,onClick:()=>e.onPhase(o),children:n(`phase.${o}`)},o))}),t("div",{className:"rm-dots","aria-label":n("session.coverage"),children:m.map((o,u)=>t("span",{className:"rm-dot","data-on":u<s?"true":"false"},o))}),t("p",{className:"rm-lead",children:r.goal.length===0?n("session.noGoal"):r.goal}),t("p",{className:"rm-muted",children:n("session.actionsLead")}),i("div",{className:"rm-actions",children:[i("div",{className:"rm-action",children:[t(d,{size:"xs",type:"button",variant:a.authorization==="primary"?"default":"outline","data-tone":a.authorization,onClick:e.onAuthorize,disabled:r.authorizationRecorded,children:r.authorizationRecorded?n("session.authorizationDone"):n("session.authorization")}),t("p",{className:"rm-hint",children:n("session.authorizationHint")})]}),i("div",{className:"rm-action",children:[t(d,{size:"xs",type:"button",variant:a.report==="primary"?"default":"outline","data-tone":a.report,onClick:e.onReport,disabled:r.reportOpen,children:r.reportOpen?n("session.reportOpen"):n("session.report")}),t("p",{className:"rm-hint",children:n("session.reportHint")})]}),i("div",{className:"rm-action",children:[t(d,{size:"xs",type:"button",variant:"outline","data-tone":"secondary",onClick:e.onRemind,children:n("session.reminder")}),t("p",{className:"rm-hint",children:n("session.reminderHint")})]})]}),i("div",{className:"rm-card",children:[t("h3",{className:"rm-title",children:n("session.denials")}),r.denials.length===0?t(c,{title:n("session.noDenials")}):r.denials.map(o=>i("p",{className:"rm-banner",role:"status",children:[o.tool,": ",o.reason]},`${o.at}-${o.tool}`))]}),i("div",{className:"rm-card",children:[t("h3",{className:"rm-title",children:n("session.notes")}),r.notes.length===0?t(c,{title:n("session.noNotes")}):t("ul",{className:"rm-note",children:r.notes.map(o=>t("li",{children:o},o))})]})]})})})]})}function J(e){if(e.threadId===null||e.threadId.length===0||e.session===null||e.session.modeId===null)return null;let n=e.session.total>0&&e.session.done>=e.session.total;return i("span",{className:"rm-chip","data-done":n?"true":"false",children:[i("span",{children:[e.t("header.progress")," ",e.session.done,"/",e.session.total]}),i("span",{children:[e.t("header.denials")," ",e.session.denials.length]})]})}var ue=`
1
+ var Z=window.__ycodiumPluginHost.react;var{Activity:ye,Children:fe,Component:he,Fragment:be,Profiler:xe,PureComponent:ve,StrictMode:Se,Suspense:Ne,__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE:we,__COMPILER_RUNTIME:Pe,act:ke,cache:Me,cacheSignal:Re,captureOwnerStack:Ie,cloneElement:Ce,createContext:z,createElement:P,createRef:De,forwardRef:Ee,isValidElement:ze,lazy:Be,memo:Oe,startTransition:Ae,unstable_useCacheRefresh:_e,use:B,useActionState:Te,useCallback:k,useContext:Ue,useDebugValue:He,useDeferredValue:$e,useEffect:M,useEffectEvent:Ve,useId:Le,useImperativeHandle:Fe,useInsertionEffect:Ge,useLayoutEffect:je,useMemo:Xe,useOptimistic:Ye,useReducer:Ke,useRef:O,useState:y,useSyncExternalStore:qe,useTransition:Je,version:We}=Z;var{jsx:t,jsxs:a,Fragment:Ze}=window.__ycodiumPluginHost.jsxRuntime;var A=z(null);function S(e){return t(A,{value:e.bridge,children:e.children})}var ee=new Set(["Collapsible","CollapsiblePanel","CollapsibleTrigger"]);function f(e){let n=o=>{let r=B(A)?.ui?.[e];return r===void 0?ee.has(e)?P("div",{className:o.className},o.children):null:P(r,o)};return n.displayName=e,n}var u=f("Button"),_=f("Collapsible"),T=f("CollapsibleTrigger"),U=f("CollapsiblePanel"),c=f("EmptyInline"),H=f("ChevronDown");var h="redteam-model",m=["authorization","scope","evidence","report"],$=[{id:"redteam",group:"general"},{id:"pentest",group:"professional"},{id:"code-audit",group:"professional"},{id:"binary-analysis",group:"professional"},{id:"attack-defense",group:"professional"},{id:"av-evasion",group:"professional"},{id:"incident-response",group:"professional"},{id:"cloud-security",group:"professional"},{id:"ctf-solver",group:"professional"},{id:"asset-mapping",group:"professional"}],ne={redteam:{displayName:"Researcher",detail:"General session. Gates are optional."},pentest:{displayName:"Assessment",detail:"Authorized review."},"code-audit":{displayName:"Code review",detail:"Source review."},"binary-analysis":{displayName:"Binary review",detail:"Binary review."},"attack-defense":{displayName:"Exercise",detail:"Authorized exercise."},"av-evasion":{displayName:"Detection review",detail:"Detection review. No evasion steps, payloads, or refusal bypass."},"incident-response":{displayName:"Incident review",detail:"Incident review."},"cloud-security":{displayName:"Cloud review",detail:"Cloud review."},"ctf-solver":{displayName:"Puzzle workspace",detail:"Puzzle workspace."},"asset-mapping":{displayName:"Asset inventory",detail:"Inventory workflow."}};function te(e){let n=$.find(s=>s.id===e);if(n===void 0)return null;let o=ne[n.id];return{id:n.id,group:n.group,...o}}function R(){return $.map(e=>te(e.id)).filter(e=>e!==null)}var V="board",rn={gates:`${h}_gates_list`,goal:`${h}_operation_goal`,progress:`${h}_operation_progress`,publish:`${h}_publish`,probe:`${h}_probe`,note:`${h}_ledger_note`};function L(e){let{t:n}=e,[o,s]=y(e.initialProfessionalOpen===!0),[i,r]=y(e.presetId??null),[l,p]=y(!1),b=R(),N=b.filter(d=>d.group==="general"),g=b.filter(d=>d.group==="professional");M(()=>{r(e.presetId??null)},[e.presetId]),M(()=>{let d=v=>{let E=v.detail;r(typeof E?.presetId=="string"?E.presetId:null)};return window.addEventListener("ycodium-draft-preset",d),()=>window.removeEventListener("ycodium-draft-preset",d)},[]);let w=d=>{if(r(d),!e.deployed)return;if(typeof e.onSelectPreset=="function"){e.onSelectPreset(d),p(!1);return}let v=e.bridge.agentPreset?.select;if(v!==void 0){v(d),p(!1);return}p(!0)};return a("section",{className:"rm-hero",children:[t("p",{className:"rm-kicker",children:n("hero.title")}),e.deployed?null:t("p",{className:"rm-banner",children:n("hero.deployFirst")}),e.selectable===!1?t("p",{className:"rm-muted",children:n("hero.readOnly")}):null,l?t("p",{className:"rm-muted",children:n("hero.unwired")}):null,a("div",{className:"rm-modes",children:[N.map(d=>t(u,{size:"xs",type:"button",variant:i===d.id?"default":"outline",disabled:!e.deployed,"aria-pressed":i===d.id,onClick:()=>w(d.id),children:n(`mode.${d.id}.name`)},d.id)),t(u,{size:"xs",variant:"outline",type:"button","aria-expanded":o,onClick:()=>s(d=>!d),children:n(o?"hero.hideProfessional":"hero.professional")}),i===null?null:t(u,{size:"xs",variant:"outline",type:"button",disabled:!e.deployed,onClick:()=>w(null),children:n("hero.clear")})]}),o?t("div",{className:"rm-modes",children:g.map(d=>t(u,{size:"xs",type:"button",variant:i===d.id?"default":"outline",disabled:!e.deployed,"aria-pressed":i===d.id,onClick:()=>w(d.id),children:t("span",{children:n(`mode.${d.id}.name`)})},d.id))}):null,i===null?null:t("p",{className:"rm-muted",children:n("hero.selected")})]})}var oe=12,re=20;function I(e=null){return{modeId:e,phase:"authorization",goal:"",done:0,total:m.length,reportOpen:!1,authorizationRecorded:!1,denials:[],notes:[]}}function F(e){if(typeof e!="object"||e===null)return null;let n=e;return typeof n.deployed!="boolean"||!Array.isArray(n.modules)||!Array.isArray(n.modes)?null:n}function ae(e){return m.includes(e)}function G(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function ie(e){return!G(e)||typeof e.tool!="string"||typeof e.reason!="string"?null:{tool:e.tool,code:typeof e.code=="string"?e.code:"denied",reason:e.reason,at:typeof e.at=="string"?e.at:""}}function j(e){if(!G(e))return I();let n=typeof e.phase=="string"&&ae(e.phase)?e.phase:"authorization",o=Array.isArray(e.denials)?e.denials.flatMap(i=>{let r=ie(i);return r===null?[]:[r]}):[],s=Array.isArray(e.notes)?e.notes.filter(i=>typeof i=="string").slice(0,re):[];return{modeId:typeof e.modeId=="string"?e.modeId:null,phase:n,goal:typeof e.goal=="string"?e.goal:"",done:typeof e.done=="number"?e.done:0,total:typeof e.total=="number"?e.total:m.length,reportOpen:e.reportOpen===!0,authorizationRecorded:e.authorizationRecorded===!0,denials:o.slice(0,oe),notes:s}}var se={};function x(e){return e.i18n.usePluginTranslation()}function le(e,n){return e!==null?{next:e,claimed:!1}:{next:n,claimed:!0}}function X(e){return{disabled:e!==null,labelKey:e==="deploy"?"settings.deploying":"settings.deploy"}}function C(e){let n=e.commands.useSubscription("live",se),o=n.data,s=o?.board===void 0?null:F(o.board),i=O(null),[r,l]=y(null),p=k(async(b,N={})=>{let g=le(i.current,b);if(!(!g.claimed||g.next===null)){i.current=g.next,l(g.next);try{await e.commands.invoke(b,N)}finally{i.current=null,l(null)}}},[e]);return{board:s,pending:n.isPending,error:n.error,runningCommand:r,run:p}}function D(e,n){let o=e.sessionProjections.useProjection(V,n||null),s=o,i=n===null||n.length===0?null:s.present?j(s.value):I(),r=k(async(l,p={})=>{await e.commands.invoke(l,{threadId:n??"",...p})},[e,n]);return{session:i,pending:o.isPending,isUnavailable:o.isUnavailable,error:o.error,run:r}}function Y(e){let{t:n,board:o}=e,s=e.runningCommand!==null,i=X(e.runningCommand);return o===null?t("section",{className:"rm-root",children:t(c,{title:e.pending?n("common.loading"):n("common.empty")})}):a("section",{className:"rm-root",children:[a("header",{className:"rm-head",children:[t("div",{children:t("h2",{className:"rm-title",children:n("settings.title")})}),t("span",{className:o.deployed?"rm-pill rm-pill-ok":"rm-pill",children:o.deployed?n("settings.deployed"):n("settings.notDeployed")})]}),a("div",{className:"rm-card",children:[a("div",{className:"rm-actions",children:[t(u,{size:"xs",variant:"default",type:"button",onClick:e.onDeploy,disabled:i.disabled,children:n(i.labelKey)}),t(u,{size:"xs",variant:"outline",type:"button",onClick:e.onRemove,disabled:!o.deployed||s,children:n("settings.remove")}),t(u,{size:"xs",variant:"outline",type:"button",onClick:e.onRepair,disabled:s,children:n("settings.repair")}),t(u,{size:"xs",variant:"outline",type:"button",onClick:()=>e.onProbe(!o.probeDenial),disabled:s,children:o.probeDenial?n("settings.probeHold"):n("settings.probeAllow")})]}),t("p",{className:"rm-lead",children:n("settings.routing")}),o.lastDenial===null?t("p",{className:"rm-muted",children:n("settings.noDenial")}):a("p",{className:"rm-banner",role:"status",children:[n("settings.denial")," ",o.lastDenial.tool,": ",o.lastDenial.reason]})]}),a("div",{className:"rm-card",children:[t("h3",{className:"rm-title",children:n("settings.modes")}),["general","professional"].map(r=>a("div",{children:[t("p",{className:"rm-kicker",children:n(`group.${r}`)}),t("p",{className:"rm-muted",children:n(`group.${r}Note`)}),t("div",{className:"rm-modes",children:o.modes.filter(l=>l.group===r).map(l=>a("article",{className:"rm-card",children:[t("strong",{children:n(`mode.${l.id}.name`)}),l.id==="av-evasion"?t("p",{className:"rm-muted",children:n("mode.av-evasion.detail")}):null]},l.id))})]},r))]}),a("div",{className:"rm-card",children:[t("h3",{className:"rm-title",children:n("settings.modules")}),t("p",{className:"rm-lead",children:n("settings.withheldNote")}),o.modules.map(r=>a("div",{className:"rm-module",children:[a("div",{children:[t("strong",{children:n(`module.${r.id}`)}),a("p",{className:"rm-muted",children:[n(`availability.${r.availability}`),","," ",r.installed?n("common.installed"):n("common.absent")]})]}),a("div",{className:"rm-actions",children:[t(u,{size:"xs",variant:"outline",type:"button",disabled:s,onClick:()=>e.onInstall(r.id),children:n("settings.install")}),t(u,{size:"xs",variant:"outline",type:"button",disabled:!r.installed||s,onClick:()=>e.onUpdate(r.id),children:n("settings.update")}),t(u,{size:"xs",variant:"outline",type:"button",disabled:!r.installed||s,onClick:()=>e.onUninstall(r.id),children:n("settings.uninstall")})]})]},r.id)),t("p",{className:"rm-muted",children:n("settings.mcpNote")})]}),a("div",{className:"rm-card",children:[t("h3",{className:"rm-title",children:n("settings.operations")}),o.operations.length===0?t("p",{className:"rm-muted",children:n("settings.noOperations")}):t("ul",{className:"rm-log",children:o.operations.map(r=>a("li",{children:[a("span",{children:[r.kind,", ",n(`op.${r.status}`)]}),t("span",{className:"rm-muted",children:r.detail})]},r.id))})]})]})}function K(e){return{authorization:e.authorizationRecorded?"secondary":"primary",report:e.authorizationRecorded&&!e.reportOpen?"primary":"secondary"}}function q(e){let{t:n,session:o}=e;if(e.threadId===null||e.threadId.length===0||o===null||o.modeId===null)return null;let s=Math.min(o.done,m.length),i=K(o);return a(_,{className:"rm-seat",defaultOpen:!0,children:[a(T,{className:"rm-seat-trigger",children:[t(H,{className:"rm-seat-chevron"}),n("session.title")]}),t(U,{children:t("div",{className:"rm-seat-body",children:a("section",{className:"rm-session",children:[a("header",{className:"rm-head",children:[t("div",{children:t("p",{className:"rm-muted",children:n(`mode.${o.modeId}.name`)})}),a("span",{className:"rm-pill",children:[n("session.progress")," ",o.done,"/",o.total]})]}),t("div",{className:"rm-rail","aria-label":n("session.phase"),children:m.map(r=>t(u,{size:"xs",type:"button",variant:o.phase===r?"default":"outline","aria-pressed":o.phase===r,onClick:()=>e.onPhase(r),children:n(`phase.${r}`)},r))}),t("div",{className:"rm-dots","aria-label":n("session.coverage"),children:m.map((r,l)=>t("span",{className:"rm-dot","data-on":l<s?"true":"false"},r))}),t("p",{className:"rm-lead",children:o.goal.length===0?n("session.noGoal"):o.goal}),a("div",{className:"rm-actions",children:[a("div",{className:"rm-action",children:[t(u,{size:"xs",type:"button",variant:i.authorization==="primary"?"default":"outline","data-tone":i.authorization,onClick:e.onAuthorize,disabled:o.authorizationRecorded,children:o.authorizationRecorded?n("session.authorizationDone"):n("session.authorization")}),t("p",{className:"rm-hint",children:n("session.authorizationHint")})]}),t("div",{className:"rm-action",children:t(u,{size:"xs",type:"button",variant:i.report==="primary"?"default":"outline","data-tone":i.report,onClick:e.onReport,disabled:o.reportOpen,children:o.reportOpen?n("session.reportOpen"):n("session.report")})}),a("div",{className:"rm-action",children:[t(u,{size:"xs",type:"button",variant:"outline","data-tone":"secondary",onClick:e.onRemind,children:n("session.reminder")}),t("p",{className:"rm-hint",children:n("session.reminderHint")})]})]}),a("div",{className:"rm-card",children:[t("h3",{className:"rm-title",children:n("session.denials")}),o.denials.length===0?t(c,{title:n("session.noDenials")}):o.denials.map(r=>a("p",{className:"rm-banner",role:"status",children:[r.tool,": ",r.reason]},`${r.at}-${r.tool}`))]}),a("div",{className:"rm-card",children:[t("h3",{className:"rm-title",children:n("session.notes")}),o.notes.length===0?t(c,{title:n("session.noNotes")}):t("ul",{className:"rm-note",children:o.notes.map(r=>t("li",{children:r},r))})]})]})})})]})}function J(e){if(e.threadId===null||e.threadId.length===0||e.session===null||e.session.modeId===null)return null;let n=e.session.total>0&&e.session.done>=e.session.total;return a("span",{className:"rm-chip","data-done":n?"true":"false",children:[a("span",{children:[e.t("header.progress")," ",e.session.done,"/",e.session.total]}),a("span",{children:[e.t("header.denials")," ",e.session.denials.length]})]})}var de=`
2
2
  .rm-root, .rm-hero, .rm-session, .rm-chip {
3
3
  color: var(--foreground);
4
4
  font: inherit;
@@ -105,4 +105,4 @@ html[data-fit-content] .rm-seat-body { max-height: 240px; }
105
105
  .rm-rail { grid-template-columns: 1fr 1fr; }
106
106
  .rm-root { padding: 12px; }
107
107
  }
108
- `,W=!1;function Q(){if(W||typeof document>"u")return;W=!0;let e=document.createElement("style");e.dataset.redteamModel="1",e.textContent=ue,document.head.appendChild(e)}function pe(e){let n=v(e.bridge),{board:r,pending:s,runningCommand:a,run:o}=C(e.bridge);return t(S,{bridge:e.bridge,children:t(X,{t:n,board:r,pending:s,runningCommand:a,onDeploy:()=>{o("deploy")},onRemove:()=>{o("remove")},onRepair:()=>{o("repair")},onInstall:u=>{o("module.install",{id:u})},onUpdate:u=>{o("module.update",{id:u})},onUninstall:u=>{o("module.uninstall",{id:u})},onProbe:u=>{o("fields.set",{probeDenial:u})},onOpenHostPlugins:()=>e.bridge.navigate("/settings/plugins")})})}function ce(e){let n=v(e.bridge),{board:r}=C(e.bridge);return t(S,{bridge:e.bridge,children:t(V,{bridge:e.bridge,t:n,deployed:r?.deployed===!0,presetId:e.presetId,selectable:e.selectable,onSelectPreset:e.onSelectPreset})})}function me(e){let n=v(e.bridge),r=e.threadId??null,{session:s,run:a,isUnavailable:o,error:u}=D(e.bridge,r);return t(S,{bridge:e.bridge,children:o?t(c,{title:n("projection.unavailable")}):u!==null?t(c,{title:n("projection.readFailed")}):t(K,{t:n,session:s,threadId:r,onPhase:p=>{a("phase.set",{phase:p})},onAuthorize:()=>{a("authorization.record")},onReport:()=>{a("report.open")},onRemind:()=>{a("reminder")}})})}function ge(e){let n=v(e.bridge),r=e.threadId??null,{session:s}=D(e.bridge,r);return t(J,{t:n,session:s,threadId:r})}function ye(e){return Q(),{slots:[{name:"settings.section",order:40,component(){return t(pe,{bridge:e})}},{name:"conversation.hero.agentPreset",order:10,component(n){return t(ce,{bridge:e,...n})}},{name:"conversation.view",order:30,component(n){return t(me,{bridge:e,threadId:n.threadId})}},{name:"conversation.session.header.actions",order:30,component(n){return t(ge,{bridge:e,threadId:n.threadId})}}]}}export{ye as default};
108
+ `,W=!1;function Q(){if(W||typeof document>"u")return;W=!0;let e=document.createElement("style");e.dataset.redteamModel="1",e.textContent=de,document.head.appendChild(e)}function ue(e){let n=x(e.bridge),{board:o,pending:s,runningCommand:i,run:r}=C(e.bridge);return t(S,{bridge:e.bridge,children:t(Y,{t:n,board:o,pending:s,runningCommand:i,onDeploy:()=>{r("deploy")},onRemove:()=>{r("remove")},onRepair:()=>{r("repair")},onInstall:l=>{r("module.install",{id:l})},onUpdate:l=>{r("module.update",{id:l})},onUninstall:l=>{r("module.uninstall",{id:l})},onProbe:l=>{r("fields.set",{probeDenial:l})}})})}function pe(e){let n=x(e.bridge),{board:o}=C(e.bridge);return t(S,{bridge:e.bridge,children:t(L,{bridge:e.bridge,t:n,deployed:o?.deployed===!0,presetId:e.presetId,selectable:e.selectable,onSelectPreset:e.onSelectPreset})})}function ce(e){let n=x(e.bridge),o=e.threadId??null,{session:s,run:i,isUnavailable:r,error:l}=D(e.bridge,o);return t(S,{bridge:e.bridge,children:r?t(c,{title:n("projection.unavailable")}):l!==null?t(c,{title:n("projection.readFailed")}):t(q,{t:n,session:s,threadId:o,onPhase:p=>{i("phase.set",{phase:p})},onAuthorize:()=>{i("authorization.record")},onReport:()=>{i("report.open")},onRemind:()=>{i("reminder")}})})}function me(e){let n=x(e.bridge),o=e.threadId??null,{session:s}=D(e.bridge,o);return t(J,{t:n,session:s,threadId:o})}function ge(e){return Q(),{slots:[{name:"settings.section",order:40,component(){return t(ue,{bridge:e})}},{name:"conversation.hero.agentPreset",order:10,component(n){return t(pe,{bridge:e,...n})}},{name:"conversation.view",order:30,component(n){return t(ce,{bridge:e,threadId:n.threadId})}},{name:"conversation.session.header.actions",order:30,component(n){return t(me,{bridge:e,threadId:n.threadId})}}]}}export{ge as default};
package/dist/index.js CHANGED
@@ -23,19 +23,19 @@ var MODE_COPY = {
23
23
  },
24
24
  pentest: {
25
25
  displayName: "Assessment",
26
- detail: "Authorized review with the four gates required."
26
+ detail: "Authorized review."
27
27
  },
28
28
  "code-audit": {
29
29
  displayName: "Code review",
30
- detail: "Source review with the four gates required."
30
+ detail: "Source review."
31
31
  },
32
32
  "binary-analysis": {
33
33
  displayName: "Binary review",
34
- detail: "Binary review with the four gates required."
34
+ detail: "Binary review."
35
35
  },
36
36
  "attack-defense": {
37
37
  displayName: "Exercise",
38
- detail: "Authorized exercise with the four gates required."
38
+ detail: "Authorized exercise."
39
39
  },
40
40
  "av-evasion": {
41
41
  displayName: "Detection review",
@@ -43,19 +43,19 @@ var MODE_COPY = {
43
43
  },
44
44
  "incident-response": {
45
45
  displayName: "Incident review",
46
- detail: "Incident review with the four gates required."
46
+ detail: "Incident review."
47
47
  },
48
48
  "cloud-security": {
49
49
  displayName: "Cloud review",
50
- detail: "Cloud review with the four gates required."
50
+ detail: "Cloud review."
51
51
  },
52
52
  "ctf-solver": {
53
53
  displayName: "Puzzle workspace",
54
- detail: "Puzzle workspace with the four gates required."
54
+ detail: "Puzzle workspace."
55
55
  },
56
56
  "asset-mapping": {
57
57
  displayName: "Asset inventory",
58
- detail: "Inventory workflow with the four gates required."
58
+ detail: "Inventory workflow."
59
59
  }
60
60
  };
61
61
  function modeById(id) {
@@ -1018,7 +1018,7 @@ function createTools(host) {
1018
1018
  // src/index.ts
1019
1019
  var redteamModelPlugin = definePlugin({
1020
1020
  id: "redteam-model",
1021
- apiVersion: 49,
1021
+ apiVersion: 50,
1022
1022
  activate(ctx) {
1023
1023
  const runtime = openRuntime(ctx);
1024
1024
  ctx.sessionProjections.register({ name: PROJECTION_NAME });
package/locales/en.json CHANGED
@@ -6,13 +6,11 @@
6
6
  "common": {
7
7
  "loading": "Loading the mode manager.",
8
8
  "empty": "The mode manager is not available yet.",
9
- "source": "Mode manager",
10
9
  "installed": "Installed",
11
10
  "absent": "Not installed"
12
11
  },
13
12
  "settings": {
14
13
  "title": "Modes",
15
- "lead": "Deploy the ten presets, install the modules this package is allowed to run, and keep the report gate closed until authorization is recorded. The executor keeps the model connection. This page stores no endpoint and no key.",
16
14
  "deploy": "Deploy modes",
17
15
  "deploying": "Deploying…",
18
16
  "remove": "Remove modes",
@@ -31,23 +29,8 @@
31
29
  "uninstall": "Uninstall",
32
30
  "withheldNote": "Withheld modules stay unavailable. Installing one records a failure and does not add their behavior.",
33
31
  "mcpNote": "The studio module only records that a server list was requested. It does not mount a server.",
34
- "hostPluginsTitle": "Install and uninstall plugins",
35
- "hostPluginsLead": "This page does not install or uninstall plugins. Open the Plugins page to do that.",
36
- "hostPluginsAction": "Open Plugins",
37
32
  "operations": "Operation log",
38
- "noOperations": "No operations yet. A restart marks a running operation as interrupted.",
39
- "limitsTitle": "Host limits",
40
- "limitBundle": "One package installs one plugin. This manager does not ship seventeen child packages, and it does not split a host plane from a preset plane.",
41
- "limitIsolate": "A preset does not hide tools from the tool list. The guard refuses a call before it runs.",
42
- "limitSection": "The standing prompt section is on every session and stays mode-agnostic. The mode envelope is added only when route boost is installed and that session recorded a mode.",
43
- "limitList": "Preset names in the host picker are a single English label.",
44
- "limitEvents": "The manager hears thread.created. It does not read executor frames.",
45
- "limitFollowup": "The reminder is a user turn you start from this session. Nothing is sent on its own.",
46
- "limitSubagent": "This package does not register a subagent provider.",
47
- "limitScanner": "Scanner programs, audit runners, and shell desks are withheld. Nothing is spawned.",
48
- "limitPicker": "A mode can be chosen only before the first turn.",
49
- "limitTurn": "The first turn can start before the created event is stored. The preset prefix still applies. The envelope may wait until the next turn.",
50
- "limitRefresh": "A phone drops a preset id it cannot see yet. Deploy the modes, then choose again after the preset list refreshes."
33
+ "noOperations": "No operations yet."
51
34
  },
52
35
  "op": {
53
36
  "running": "Running",
@@ -58,10 +41,6 @@
58
41
  "general": "General",
59
42
  "professional": "Professional"
60
43
  },
61
- "plane": {
62
- "host": "Host plane",
63
- "preset": "Preset plane"
64
- },
65
44
  "availability": {
66
45
  "active": "Active",
67
46
  "withheld": "Withheld",
@@ -74,42 +53,36 @@
74
53
  "report": "Report"
75
54
  },
76
55
  "mode": {
77
- "redteam": { "name": "Researcher", "detail": "General session. Gates are optional." },
56
+ "redteam": {
57
+ "name": "Researcher"
58
+ },
78
59
  "pentest": {
79
- "name": "Assessment",
80
- "detail": "Authorized review with the four gates required."
60
+ "name": "Assessment"
81
61
  },
82
62
  "code-audit": {
83
- "name": "Code review",
84
- "detail": "Source review with the four gates required."
63
+ "name": "Code review"
85
64
  },
86
65
  "binary-analysis": {
87
- "name": "Binary review",
88
- "detail": "Binary review with the four gates required."
66
+ "name": "Binary review"
89
67
  },
90
68
  "attack-defense": {
91
- "name": "Exercise",
92
- "detail": "Authorized exercise with the four gates required."
69
+ "name": "Exercise"
93
70
  },
94
71
  "av-evasion": {
95
72
  "name": "Detection review",
96
- "detail": "Detection review. No evasion steps, payloads, or refusal bypass."
73
+ "detail": "No evasion steps, payloads, or refusal bypass."
97
74
  },
98
75
  "incident-response": {
99
- "name": "Incident review",
100
- "detail": "Incident review with the four gates required."
76
+ "name": "Incident review"
101
77
  },
102
78
  "cloud-security": {
103
- "name": "Cloud review",
104
- "detail": "Cloud review with the four gates required."
79
+ "name": "Cloud review"
105
80
  },
106
81
  "ctf-solver": {
107
- "name": "Puzzle workspace",
108
- "detail": "Puzzle workspace with the four gates required."
82
+ "name": "Puzzle workspace"
109
83
  },
110
84
  "asset-mapping": {
111
- "name": "Asset inventory",
112
- "detail": "Inventory workflow with the four gates required."
85
+ "name": "Asset inventory"
113
86
  }
114
87
  },
115
88
  "module": {
@@ -133,7 +106,6 @@
133
106
  },
134
107
  "hero": {
135
108
  "title": "Choose a mode",
136
- "lead": "The general mode sits on top. Professional modes open from the button, including on a touch screen.",
137
109
  "deployFirst": "Deploy the modes in Settings before choosing one.",
138
110
  "professional": "Professional modes",
139
111
  "hideProfessional": "Hide professional modes",
@@ -152,14 +124,12 @@
152
124
  "progress": "Progress",
153
125
  "authorization": "Record authorization",
154
126
  "authorizationDone": "Authorization recorded",
155
- "authorizationHint": "Write down that this session is authorized. Later gates stay closed until this is recorded.",
127
+ "authorizationHint": "Later gates stay closed until this is recorded.",
156
128
  "report": "Open report gate",
157
129
  "reportOpen": "Report gate open",
158
130
  "reportClosed": "Report gate closed",
159
- "reportHint": "Open this after authorization. It is not the first step when no gates are recorded.",
160
131
  "reminder": "Send reminder",
161
132
  "reminderHint": "Queue a reminder you send yourself. Nothing goes out on its own.",
162
- "actionsLead": "Start with authorization. The report gate is the later step.",
163
133
  "denials": "Refusals",
164
134
  "noDenials": "No refusal on this session.",
165
135
  "notes": "Notes",
@@ -6,13 +6,11 @@
6
6
  "common": {
7
7
  "loading": "正在加载模式管理器。",
8
8
  "empty": "模式管理器还不可用。",
9
- "source": "模式管理器",
10
9
  "installed": "已安装",
11
10
  "absent": "未安装"
12
11
  },
13
12
  "settings": {
14
13
  "title": "模式",
15
- "lead": "部署十个预设,安装本包允许运行的模块,并在记录授权之前保持报告门关闭。模型连接留在执行器上。这一页不保存端点,也不保存密钥。",
16
14
  "deploy": "部署模式",
17
15
  "deploying": "正在部署…",
18
16
  "remove": "移除模式",
@@ -31,23 +29,8 @@
31
29
  "uninstall": "卸载",
32
30
  "withheldNote": "暂不提供的模块保持不可用。安装它们只会记下失败,不会带上那些行为。",
33
31
  "mcpNote": "服务列表模块只记录曾经请求过一份列表。它不会挂载服务。",
34
- "hostPluginsTitle": "安装和卸载插件",
35
- "hostPluginsLead": "这一页不安装、也不卸载插件。要安装或卸载,打开插件页。",
36
- "hostPluginsAction": "打开插件页",
37
32
  "operations": "操作日志",
38
- "noOperations": "还没有操作。重启会把仍在进行的操作记成中断。",
39
- "limitsTitle": "宿主限制",
40
- "limitBundle": "一次安装只装一个插件。这个管理器不附带十七个子包,也不把宿主平面和预设平面拆开。",
41
- "limitIsolate": "预设不会从工具列表里藏起工具。守卫在调用执行前拒绝。",
42
- "limitSection": "常驻提示段出现在每个会话上,而且不写具体模式。只有安装了路由增强、并且该会话记下了模式时,才会加上模式信封。",
43
- "limitList": "宿主选择器里的预设名是一条英文标签。",
44
- "limitEvents": "管理器听 thread.created。它不读执行器帧。",
45
- "limitFollowup": "提醒是你在这个会话里发出的一轮用户消息。没有任何内容会自己送出。",
46
- "limitSubagent": "这个包不注册子代理提供者。",
47
- "limitScanner": "扫描程序、审计运行器和外壳台暂不提供。不会拉起任何程序。",
48
- "limitPicker": "模式只能在第一轮之前选择。",
49
- "limitTurn": "第一轮可能在创建事件落盘之前开始。预设前缀仍然生效。信封可能要到下一轮才出现。",
50
- "limitRefresh": "手机在还看不到某个预设 id 时会丢掉它。先部署模式,等预设列表刷新后再选一次。"
33
+ "noOperations": "还没有操作。"
51
34
  },
52
35
  "op": {
53
36
  "running": "进行中",
@@ -58,10 +41,6 @@
58
41
  "general": "通用",
59
42
  "professional": "专业"
60
43
  },
61
- "plane": {
62
- "host": "宿主平面",
63
- "preset": "预设平面"
64
- },
65
44
  "availability": {
66
45
  "active": "可用",
67
46
  "withheld": "暂不提供",
@@ -74,16 +53,37 @@
74
53
  "report": "报告"
75
54
  },
76
55
  "mode": {
77
- "redteam": { "name": "研究员", "detail": "通用会话。门是可选的。" },
78
- "pentest": { "name": "评估", "detail": "已授权的复核,四道门都要过。" },
79
- "code-audit": { "name": "代码复核", "detail": "源码复核,四道门都要过。" },
80
- "binary-analysis": { "name": "二进制复核", "detail": "二进制复核,四道门都要过。" },
81
- "attack-defense": { "name": "演习", "detail": "已授权的演习,四道门都要过。" },
82
- "av-evasion": { "name": "检测复核", "detail": "检测复核。不包含规避步骤、载荷或绕过拒绝。" },
83
- "incident-response": { "name": "事件复核", "detail": "事件复核,四道门都要过。" },
84
- "cloud-security": { "name": "云复核", "detail": "云复核,四道门都要过。" },
85
- "ctf-solver": { "name": "谜题工作区", "detail": "谜题工作区,四道门都要过。" },
86
- "asset-mapping": { "name": "资产盘点", "detail": "盘点流程,四道门都要过。" }
56
+ "redteam": {
57
+ "name": "研究员"
58
+ },
59
+ "pentest": {
60
+ "name": "评估"
61
+ },
62
+ "code-audit": {
63
+ "name": "代码复核"
64
+ },
65
+ "binary-analysis": {
66
+ "name": "二进制复核"
67
+ },
68
+ "attack-defense": {
69
+ "name": "演习"
70
+ },
71
+ "av-evasion": {
72
+ "name": "检测复核",
73
+ "detail": "不包含规避步骤、载荷或绕过拒绝。"
74
+ },
75
+ "incident-response": {
76
+ "name": "事件复核"
77
+ },
78
+ "cloud-security": {
79
+ "name": "云复核"
80
+ },
81
+ "ctf-solver": {
82
+ "name": "谜题工作区"
83
+ },
84
+ "asset-mapping": {
85
+ "name": "资产盘点"
86
+ }
87
87
  },
88
88
  "module": {
89
89
  "stage-gate": "阶段门",
@@ -106,7 +106,6 @@
106
106
  },
107
107
  "hero": {
108
108
  "title": "选择模式",
109
- "lead": "通用模式放在最上面。专业模式要点按钮才展开,触摸屏也一样。",
110
109
  "deployFirst": "先在设置里部署模式,再选择。",
111
110
  "professional": "专业模式",
112
111
  "hideProfessional": "收起专业模式",
@@ -125,14 +124,12 @@
125
124
  "progress": "进度",
126
125
  "authorization": "记录授权",
127
126
  "authorizationDone": "已记录授权",
128
- "authorizationHint": "先记下这个会话已经获得授权。这一步没记下之前,后面的门保持关闭。",
127
+ "authorizationHint": "这一步没记下之前,后面的门保持关闭。",
129
128
  "report": "打开报告门",
130
129
  "reportOpen": "报告门已开",
131
130
  "reportClosed": "报告门关闭",
132
- "reportHint": "授权记下之后再开这一门。一门都还没记下时,它不是第一步。",
133
131
  "reminder": "发送提醒",
134
132
  "reminderHint": "排一条你自己发出的提醒。不会自动送出。",
135
- "actionsLead": "从记录授权开始。报告门是后面的步骤。",
136
133
  "denials": "拒绝",
137
134
  "noDenials": "这个会话上没有拒绝。",
138
135
  "notes": "笔记",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ycodium-ai/plugin-redteam-model",
3
- "version": "0.2.3608",
3
+ "version": "0.2.3635",
4
4
  "description": "Deploys ten session modes, a gate rail, and a tool guard. The executor keeps the model connection.",
5
5
  "keywords": [
6
6
  "redteam-model",
@@ -25,7 +25,7 @@
25
25
  "react": "19.2.6",
26
26
  "typescript": "~6.0.3",
27
27
  "vite-plus": "0.2.2",
28
- "@ycodium-ai/plugin-api": "0.2.3608",
28
+ "@ycodium-ai/plugin-api": "0.2.3635",
29
29
  "@ycodium/contracts": "0.0.33"
30
30
  },
31
31
  "ycodium": {