cc-safety-net 2.6.4 → 2.6.6
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/dist/amp/cc-safety-net/index.ts +2 -2
- package/dist/api.js +1 -1
- package/dist/bin/hook.js +1 -1
- package/dist/chunks/{index-nd8agbe9.js → index-21maj91f.js} +3 -3
- package/dist/chunks/{index-fz4vymzj.js → index-e1j1weef.js} +1 -1
- package/dist/chunks/{index-mqmy0cce.js → index-t1vhmn90.js} +4 -4
- package/dist/cli.js +102 -115
- package/dist/deepseek-harness/index.js +1 -1
- package/dist/index.js +1 -1
- package/dist/openclaw/cc-safety-net/index.js +2 -2
- package/dist/openclaw/cc-safety-net/openclaw.plugin.json +1 -1
- package/dist/openclaw/cc-safety-net/package.json +1 -1
- package/dist/pi/index.js +1 -1
- package/package.json +2 -2
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
// cc-safety-net managed Amp plugin. Do not edit. Reinstall with: npx -y cc-safety-net install --amp
|
|
2
|
-
// version: 2.6.
|
|
2
|
+
// version: 2.6.6
|
|
3
3
|
// @bun
|
|
4
4
|
var Oi="CC Safety Net could not analyze the command because it exceeds safe analysis limits. Simplify or split the command and retry.",qe="Command exceeds maximum recursion depth and cannot be safely analyzed. Flatten the nesting and retry.",jn="CC Safety Net failed closed because command analysis failed unexpectedly. This is not caused by your command. Report it to the user.";var ki={errorCode:"path-canonicalization-limit",reason:"CC Safety Net could not analyze the command because it exceeds safe analysis limits. Simplify or split the command and retry."},Hn={errorCode:"structural-shell-syntax-limit",reason:"Command analysis exceeds CC Safety Net's derived-command work limit. Reduce nested or embedded command complexity and retry."},j=Object.freeze({realpathAttempts:{cap:16384,...ki},processedCandidateBytes:{cap:4194304,...ki},pathEnvironmentExpansion:{cap:64,...ki},recursionDepth:{cap:10,errorCode:"structural-shell-syntax-limit",reason:"Command exceeds maximum recursion depth and cannot be safely analyzed. Flatten the nesting and retry."},derivedTokens:{cap:16384,...Hn},trackedHeredocFiles:{cap:64,...Hn},controlFlowStates:{cap:64,...Hn},wrapperPeelIterations:{cap:20,...Hn},derivedCommandShape:Hn});class W extends Error{kind;name="AnalysisLimit";constructor(e){super(j[e].reason);this.kind=e}}function ke(){let e=new Map;return{counters:e,resolvedPaths:new Map,charge(t,n=1){let r=(e.get(t)??0)+n;if(e.set(t,r),r>j[t].cap)throw new W(t)}}}var Sg=[/\bgh[pousr]_[A-Za-z0-9]{20,}\b/g,/\bgithub_pat_[A-Za-z0-9_]{20,}\b/g,/\bglpat-[A-Za-z0-9_-]{20,}\b/g,/\bxox[abeprs]-[A-Za-z0-9-]{20,}\b/g,/\bnpm_[A-Za-z0-9_]{20,}\b/g,/\bpypi-[A-Za-z0-9_-]{20,}\b/g,/\b[rs]k_(?:live|test)_[A-Za-z0-9_]{20,}\b/g,/\bsk-[A-Za-z0-9_-]{20,}\b/g,/\bsk_[A-Za-z0-9]{20,}\b/g,/\bgsk_[A-Za-z0-9]{52,}\b/g,/\bxai-[A-Za-z0-9_-]{80,}\b/g,/\bpplx-[A-Za-z0-9_-]{20,}\b/g,/\bbastn_[A-Za-z0-9]{16,}\b/g,/\btgp_v1_[A-Za-z0-9_-]{43,}\b/g,/\bflp_[A-Za-z0-9]{10,}\b/g,/\bwfr_[A-Za-z0-9]{20,}\b/g,/\bfwp?_[A-Za-z0-9_-]{20,}\b/g,/\btp-[A-Za-z0-9_-]{20,}\b/g,/\bpsk-[A-Za-z0-9_-]{8,}-[A-Za-z0-9_-]{8,}\b/g,/\b[a-f0-9]{32}\.[A-Za-z0-9]{16}\b/g];function pt(e){return vg(e.replace(/\b((?:DATABASE|POSTGRES|POSTGRESQL|MYSQL|MARIADB|REDIS|MONGO(?:DB)?|DB)_DSN|CONNECTION_STRING)=("[^"]*"|'[^']*'|[^\s]+(?:\s+[A-Z_][A-Z0-9_]*=[^\s]+)*)/gi,"$1=<redacted>").replace(/\b((?:DATABASE|POSTGRES|POSTGRESQL|MYSQL|MARIADB|REDIS|MONGO(?:DB)?|DB)_(?:URL|URI|CONNECTION_STRING))=("[^"]*"|'[^']*'|[^\s]+)/gi,"$1=<redacted>").replace(/\b([A-Z0-9_]*(?:TOKEN|SECRET|PASSWORD|PASS|KEY|CREDENTIALS)[A-Z0-9_]*)=("[^"]*"|'[^']*'|[^\s]+)/gi,"$1=<redacted>"))}function vg(e){return Sg.reduce((t,n)=>t.replace(n,"<redacted>"),e.replace(/-----BEGIN [A-Z ]*PRIVATE KEY-----[\s\S]*?-----END [A-Z ]*PRIVATE KEY-----/gi,"<redacted>").replace(/((?:(['"])(?:authorization|cookie|x-api-key|api-key)\2|(?:authorization|cookie|x-api-key|api-key))\s*:\s*)(['"])(?:\\[^\r\n]|(?!\3)[^\\\r\n])*\3/gi,"$1$3<redacted>$3").replace(/(['"]?\s*(?:authorization|cookie|x-api-key|api-key)\s*:(?!\s*(?:"<redacted>"|'<redacted>'))\s*)([^'"\r\n]+)(['"]?)/gi,"$1<redacted>$3").replace(/\b([a-z][a-z0-9+.-]*:\/\/)([^\s/:@]+):([^\s@/]+)@/gi,"$1<redacted>:<redacted>@").replace(/\b([a-z][a-z0-9+.-]*:\/\/)([^\s/@:]+)@/gi,"$1<redacted>@").replace(/(^|[\s?&;|])((?:x-amz-signature|x-goog-signature|sig|signature)=)(?:"[^"\r\n]*"|'[^'\r\n]*'|[^&#\s'"`;|<>()]*)/gi,"$1$2<redacted>").replace(/(^|\s)((?:-u|--user)(?:\s+|=))([^\s:]+):([^\s]+)/g,"$1$2<redacted>:<redacted>")).replace(/\beyJ[A-Za-z0-9_-]{8,}\.[A-Za-z0-9_-]{6,}\.[A-Za-z0-9_-]{6,}\b/g,"<redacted>").replace(/\b(?:AKIA|ASIA)[A-Z0-9]{16}\b/g,"<redacted>")}var Eg={hard_stop:"Do not retry this operation or attempt any workaround (other tools, flags, or paths). Report the block to the user and continue with the rest of the task.",use_alternative:"Do not retry the blocked form. Continue the task using the safer alternative described above.",scope_down:"Retry with a narrower, explicit target as described above. Escalate to the user if the broad operation is truly required.",manual_only:"If this operation is truly needed, ask the user for explicit permission and have them run the command manually.",stop_and_explain:"Do not brute-force variants. Simplify or restructure the command so it can be analyzed, or report the block to the user."};function Rg(e){let t=e.maxLen??200,n=e.redact??((o)=>o),r=(o)=>o.length>t?`${o.slice(0,t)}...`:o;return[e.askUser?"CC Safety Net could not verify this command":"BLOCKED by CC Safety Net",`Reason: ${n(e.reason)}`,e.ruleId?`Rule: ${e.ruleId}`:void 0,e.toolName?`Tool: ${e.toolName}`:void 0,e.command?`Command: ${r(n(e.command))}`:void 0,e.segment&&e.segment!==e.command?`Segment: ${r(n(e.segment))}`:void 0,e.cwd?`Working directory: ${r(n(e.cwd))}`:void 0,e.configWarning?`Config warning: ${n(e.configWarning)}`:void 0,e.askUser?"Approve only if you expected this command.":Eg[e.intent??"manual_only"]].filter((o)=>o!==void 0).join(`
|
|
5
5
|
|
|
@@ -49,5 +49,5 @@ var Oi="CC Safety Net could not analyze the command because it exceeds safe anal
|
|
|
49
49
|
`).some((n)=>{let r=n.indexOf(t);return r>=0&&/[()[\]{}]/.test(n.slice(r))})}function CP(e){return Array.from(e.matchAll(/[A-Za-z_$][\w$]*/g),(t)=>Qp(t[0])).some((t)=>t.some((n)=>hP.test(n)))}var bP=new Set(["cmd","powershell","pwsh"]);function SP(e,t){let n=$n(e.masked,t),r=wl[e.masked[n]??""];if(r===void 0||r==="}")return!1;let o=e.masked.indexOf(r,n+1),i=e.masked.slice(n+1,o);return o!==-1&&/^\s*,[\w\s,]*$/.test(i)&&/^[,)]/.test(e.masked.slice($n(e.masked,o+1)))&&!e.literals.some((s)=>s.tokenStart>n&&s.tokenStart<o&&(bl.has(s.text)||Rn(fe(s.text).toLowerCase())||bP.has(fe(s.text).toLowerCase().replace(/\.exe$/,""))))}function vP(e){let t=[];return e.split("").map((n,r)=>{let o=t.at(-1)??-1;if(n in wl)t.push(r);if(n===")"||n==="]"||n==="}")t.pop();return o})}function EP(e,t,n,r){let o=n[t.tokenStart]??-1,i=e[o]??"",s=zn(e,t.tokenStart),a=$n(e,t.tokenEnd);if(/(?:^|[^\w$])in$|[=!]=$/.test(e.slice(Math.max(0,s-3),s+1)))return!0;if(/^(?:(?:not\s+)?in(?![\w$])|[=!]=)/.test(e.slice(a,a+8)))return!0;if(r&&(i==="["||i==="("))return!1;let l=e[s],c=e[a];if(i==="{"&&l===":")return TP(e,s);let u=(l===i||l===",")&&(c===","||c===wl[i]||i==="{"&&c===":");if(i!=="(")return u&&i!=="";return u&&(l===","||c===",")&&IP(e,o)}var RP=/(?:^|[^\w$.])(?:pathlib\s*\.\s*)?Path\s*$/,xP=/^\s*\.\s*write_(?:text|bytes)\s*\(/,wP=/(?:^|[^\w$.])open\s*$/,_P=/^[bt]*[awx][abtwx]*$/,AP=/(?:^|[^\w$])(?:writeFile|writeFileSync|appendFile|appendFileSync|Bun\s*\.\s*write)\s*$/;function PP(e,t,n){let r=n[t.tokenStart]??-1;if(e.masked[r]!=="(")return!1;let o=zn(e.masked,t.tokenStart),i=$n(e.masked,t.tokenEnd),s=e.masked[i],a=e.masked.slice(Math.max(0,r-40),r);if(RP.test(a))return(o===r||e.masked[o]===",")&&(s===","||s===")")&&!e.literals.some((c)=>c.tokenStart>r&&c.tokenStart<t.tokenStart)&&xP.test(e.masked.slice(Oo(e.masked,r+1)+1));if(o!==r||s!==",")return!1;if(AP.test(a))return!0;if(!wP.test(a))return!1;let l=e.literals.find((c)=>/^,\s*(?:mode\s*=\s*)?$/.test(e.masked.slice(i,c.tokenStart)));return l!==void 0&&_P.test(l.text)&&/^[,)]/.test(e.masked.slice($n(e.masked,l.tokenEnd)))}function TP(e,t){let n=zn(e,t),r=/[\w$]*$/.exec(e.slice(Math.max(0,n-63),n+1))?.[0]??"",o=e[zn(e,n+1-r.length)];return o==="{"||o===","}function IP(e,t){let n=zn(e,t),r=e.slice(Math.max(0,n-7),n+1);return!/[\w$)\]]$/.test(r)||pP.test(r)}function kP(e){let t=xl(e);if(t==="python")return"python";if(t==="osascript")return"opaque";return t==="node"||t==="bun"||t==="deno"?"javascript":"simple"}var OP={python:"#",javascript:"/"};function MP(e,t){if(t==="opaque")return{kind:"unmaskable"};let n={masked:e.split(""),literals:[]};return Jp(e,0,t,n,!1)===null?{kind:"unmaskable"}:{kind:"masked",masked:n.masked.join(""),literals:n.literals}}function Jp(e,t,n,r,o){let i=0;for(let s=t;s<e.length;s++){let a=e[s]??"";if(o&&a==="}"&&i===0)return s;if(o&&a===OP[n])return null;if(a==="{")i++;if(a==="}")i--;if(n==="simple"&&(a==="`"||a==="%"||a==="<")){if(zA.test(e.slice(s)))return null}let l=a==="'"||a==='"'||n==="javascript"&&a==="`"?a:null;if(l===null)continue;if(l==="`"&&WP(e,s))return null;let c=n==="python"?NP(e,s):"",u=n==="python"&&e.startsWith(l.repeat(3),s)?l.repeat(3):l,f=s+u.length,d=l==="`"||/[fF]/.test(c),m=s-c.length,p=d?DP(e,m,f,u,n,r):LP(e,f,u);if(p===null)return null;if(!d){let g=e.slice(f,p);if(n==="simple"&&l==='"'&&$A.test(g))return null;r.literals.push({start:f,text:g,tokenStart:m,tokenEnd:p+u.length}),r.masked.fill(" ",f,p)}r.masked.fill(" ",s,f),r.masked.fill(" ",p,p+u.length),s=p+u.length-1}return o?null:e.length}function DP(e,t,n,r,o,i){let s=o==="python"?"{":"${",a=r==="`"||r.length===3,l="";for(let c=n;c<e.length;c++){let u=e[c]??"";if(e.startsWith(r,c))return i.literals.push({start:n,text:l,tokenStart:t,tokenEnd:c+r.length}),c;if(!a&&(u===`
|
|
50
50
|
`||u==="\r"))return null;let f=o==="python"&&(u==="{"||u==="}")&&e[c+1]===u;if(!f&&e.startsWith(s,c)){let p=Jp(e,c+s.length,o,i,!0);if(p===null)return null;l+=`${s}}`,i.masked.fill(" ",c,c+s.length),i.masked[p]=" ",c=p;continue}let m=u==="\\"&&!(o==="python"&&e[c+1]==="{")||f?2:1;l+=e.slice(c,c+m),i.masked.fill(" ",c,c+m),c+=m-1}return null}function NP(e,t){return GA.exec(e.slice(Math.max(0,t-3),t))?.[1]??""}function LP(e,t,n){let r=n.length===3;for(let o=t;o<e.length;o++){let i=e[o];if(i==="\\"){o++;continue}if(!r&&(i===`
|
|
51
51
|
`||i==="\r"))return null;if(e.startsWith(n,o))return o}return null}function WP(e,t){for(let n=t-1;n>=0;n--){let r=e[n];if(!r||/\s/.test(r))continue;return/[\w$\])]/.test(r)}return!1}function FP(e){for(let t of e.matchAll(/[A-Za-z_$][A-Za-z0-9_$]*/g)){let n=t[0],r=t.index;if(RA.has(n.toLowerCase()))return!0;let o=Qp(n);if(!o.some((i)=>xA.has(i)))continue;if(o.length>1)return!0;if(e[zn(e,r)]===".")return!0;if(e[$n(e,r+n.length)]==="(")return!0}return!1}function Qp(e){return e.replace(/([a-z0-9])([A-Z])/g,"$1 $2").split(/[_$\s]+/).map((t)=>t.toLowerCase())}function zn(e,t){for(let n=t-1;n>=0;n--)if(!/\s/.test(e[n]??""))return n;return-1}function $n(e,t){for(let n=t;n<e.length;n++)if(!/\s/.test(e[n]??""))return n;return e.length}function GP(e,t,n,r,o,i){return HP(e).flatMap((s)=>{let a=t.getShellSyntax(s);if(a.status==="invalid")return[];return[...Bn(a,t,{...n,displayOperandsAreCapturedOutput:!0},r,o,i),...zP(a,r)?$P(a,r).map((l)=>({target:l,cwd:o})):[]]})}function zP(e,t){let n=Bo(e);for(let r=0;r<n.length;r++){let o=n[r];if(o?.kind!=="word"||fe(at(o.text,t)).toLowerCase()!=="base64")continue;for(let i=r+1;i<n.length;i++){let s=n[i];if(s?.kind==="operator")break;if(s?.kind!=="word")continue;let a=at(s.text,t);if(a==="--decode"||!a.startsWith("--")&&a.startsWith("-")&&/[dD]/.test(a))return!0}}return!1}function $P(e,t){return Bo(e).flatMap((n)=>n.kind==="word"?[at(n.text,t)]:n.kind==="redirection"&&n.target?[at(n.target,t)]:[]).flatMap(_l)}function _l(e){let t=UP(e);if(t===null)return[];let n=Buffer.from(t,"base64").toString("utf8");if(n===""||BP(n))return[];return Buffer.from(n,"utf8").toString("base64").replace(/=+$/g,"")===t.replace(/=+$/g,"")?[n]:[]}function BP(e){return Array.from(e).some((t)=>{let n=t.charCodeAt(0);return n<32||n===127})}function UP(e){if(e.length<8||!/^[A-Za-z0-9+/_-]+={0,2}$/.test(e))return null;if(/=/.test(e.replace(/=+$/g,"")))return null;let t=e.replace(/=+$/g,"");if(t.length%4===1)return null;return`${t.replace(/-/g,"+").replace(/_/g,"/")}${"=".repeat((4-t.length%4)%4)}`}function HP(e){let t=[],n={inSingle:!1,inDouble:!1,escaped:!1};for(let r=0;r<e.length;r++){let o=e[r];if(!o)break;if(tr(o,n))continue;if(eg(e,r,n)){let i=jP(e,r+1);if(i!==null)t.push(i.body),r=i.endIndex;continue}if(!n.inSingle&&o==="`"){let i=VP(e,r);if(i!==null)t.push(i.body),r=i.endIndex}}return t}function jP(e,t){let n={inSingle:!1,inDouble:!1,escaped:!1},r=1;for(let o=t+1;o<e.length;o++){let i=e[o];if(!i)break;if(tr(i,n))continue;if(eg(e,o,n)){r++,o++;continue}if(!n.inSingle&&!n.inDouble&&i===")"){if(r--,r===0)return{body:e.slice(t+1,o),endIndex:o}}}return null}function VP(e,t){let n=!1;for(let r=t+1;r<e.length;r++){let o=e[r];if(!o)break;if(n){n=!1;continue}if(o==="\\"){n=!0;continue}if(o==="`")return{body:e.slice(t+1,r),endIndex:r}}return null}function eg(e,t,n){return!n.inSingle&&e[t]==="$"&&e[t+1]==="("&&e[t+2]!=="("}function qP(e){let t=[],n=[],r=!1,o=!1,i=!1;for(let l=0;l<e.length;l++){let c=e[l];if(c===void 0)break;if(!i&&c==="--"){i=!0;continue}if(i){n.push(c);continue}let u=/^--([^=]+)(?:=(.*))?$/.exec(c);if(u!==null){let f=u[1]??"",d=u[2];if(f===DA)o=!0;if(LA.has(f))r=!0;if(d!==void 0){if(f===Tp)t.push(d);continue}if(FA.has(f)){let m=e[l+1];if(f===Tp&&m!==void 0)t.push(m);l++}continue}if(c.startsWith("-")&&c.length>1){let f=c.slice(1),d="",m="";for(let g=0;g<f.length;g++){let h=f[g]??"";if(NA.has(h))r=!0;if(WA.has(h)){d=h,m=f.slice(g+1);break}}if(d==="")continue;if(m.length>0){if(d===Pp)t.push(m);continue}let p=e[l+1];if(d===Pp&&p!==void 0)t.push(p);l++;continue}n.push(c)}let a=!r&&!o?n.slice(1):n;return[...t,...a]}function Je(e){let t=e.findIndex((n)=>!tg(n)&&!/^[A-Za-z_][A-Za-z0-9_]*=.*/.test(n));return t===-1?[]:e.slice(t)}function tg(e){return e==="env"||e==="command"||e==="builtin"||e==="sudo"}var KP=new Set(["id_rsa.pub","id_ed25519.pub","id_ecdsa.pub"]),YP=".env.",ZP=new Set([".env.example",".env.sample",".env.template",".env.tpl",".env.defaults"]),XP=[".env.example.",".env.sample."];function JP(e){let t;try{t=new URL(e.trim())}catch{return!1}return t.protocol!=="file:"&&t.host!==""}function QP(e){return e.length>0&&!/\s/.test(e)}function Ai(e,t,n,r){let o=ng(e,t,n,r);return o!==""&&n.paths.entryKind(o)!=="missing"}function ng(e,t,n,r){try{return zr(e,t,n,r)}catch(o){if(o instanceof W)throw o;return""}}var eT=/[?&][^?&=/]+=/,tT=new Set(["node_modules","__pycache__"]),nT=[["vendor","bundle"],["vendor","cache"]];function rT(e,t,n,r,o){if(JP(e))return null;let i=Se(e,t,r,o);if(!i)return null;let s=B(i.split("/").pop()??""),a=B(i),l=()=>QP(s)||Ai(e,t,r,o),c=B(cT(e,t,r,o));for(let d of Es){let m=`~/${d.suffixParts.join("/")}`;if((Wp(a,m)||Wp(c,m))&&ft(d.id,n))return d.id}if(ZP.has(s)||XP.some((d)=>s.startsWith(d)))return null;let u=oT(i,t,n,r,o);if(u)return u;if(KP.has(s))return null;for(let d of vs)if(s===d.basename&&ft(d.id,n))return d.id;if(s.startsWith(YP)&&ft(so.id,n)&&l())return so.id;for(let d of Rs)if(s.length>d.prefix.length&&s.startsWith(d.prefix)){let m=s.slice(d.prefix.length)[0];if((m==="-"||m==="_")&&ft(d.id,n)&&l())return d.id}for(let d of xs)if(s.length>d.prefix.length&&s.startsWith(d.prefix)){if(s.slice(d.prefix.length)===d.suffix&&ft(d.id,n))return d.id}if(aT(a))return null;if(!s.includes(".")&&nr.pattern.test(s)&&ft(nr.id,n))return nr.id;if(eT.test(e)&&!Ai(e,t,r,o))return null;let f=lT(s,n);if(f)return f;return null}function oT(e,t,n,r,o){return ao.find((i)=>{if(!ft(i.id,n))return!1;switch(i.id){case"secret.cli.claude-code":return L(e,H(r.env.get("CLAUDE_CONFIG_DIR"),"~/.claude",t,r,o),[".credentials.json"]);case"secret.cli.claude-code.config":{let s=B(e).split("/");return L(e,H(r.env.get("CLAUDE_CONFIG_DIR"),"~/.claude",t,r,o),["settings.json","settings.local.json"])||Fr(e,"~/.claude.json",t,r,o)||s.at(-1)==="settings.local.json"&&s.at(-2)===".claude"||s.at(-1)===".mcp.json"}case"secret.cli.antigravity":return L(e,Se("~/.gemini/config",t,r,o),["hooks.json","mcp_config.json"]);case"secret.cli.codex":{let s=H(r.env.get("CODEX_HOME"),"~/.codex",t,r,o);return L(e,s,["auth.json",".credentials.json"])||Gn(e,s,["secrets",".sandbox-secrets"])}case"secret.cli.codex.config":{let s=H(r.env.get("CODEX_HOME"),"~/.codex",t,r,o),a=B(e).split("/").at(-1)??"";return L(e,s,["config.toml"])||a.endsWith(".config.toml")&&L(e,s,[a])}case"secret.cli.gemini":return L(e,ne(H(r.env.get("GEMINI_CLI_HOME"),"~",t,r,o),".gemini"),["oauth_creds.json","mcp-oauth-tokens.json","a2a-oauth-tokens.json","gemini-credentials.json"]);case"secret.cli.gemini.config":{let s=B(e).split("/"),a=r.env.get("GEMINI_CLI_SYSTEM_SETTINGS_PATH"),l=r.env.get("ProgramData")?[ne(H(r.env.get("ProgramData"),"",t,r,o),"gemini-cli")]:[];return L(e,ne(H(r.env.get("GEMINI_CLI_HOME"),"~",t,r,o),".gemini"),["settings.json","google_accounts.json"])||s.at(-1)==="settings.json"&&s.at(-2)===".gemini"||(a?.trim()?Fr(e,a,t,r,o):!1)||["/Library/Application Support/GeminiCli","/etc/gemini-cli",...l].some((c)=>L(e,Se(c,t,r,o),["settings.json"]))}case"secret.cli.copilot-cli":{let s=H(r.env.get("COPILOT_HOME"),"~/.copilot",t,r,o);return L(e,s,["config.json"])||Gn(e,s,["mcp-oauth-config","mcp-secrets"])}case"secret.cli.copilot-cli.config":return L(e,H(r.env.get("COPILOT_HOME"),"~/.copilot",t,r,o),["mcp-config.json"]);case"secret.cli.kimi-code":{let s=H(r.env.get("KIMI_CODE_HOME"),"~/.kimi-code",t,r,o),a=H(r.env.get("KIMI_SHARE_DIR"),"~/.kimi",t,r,o);return L(e,s,["server.token"])||Gn(e,s,["credentials"])||Gn(e,a,["credentials","mcp-oauth"])}case"secret.cli.kimi-code.config":{let s=["config.toml","mcp.json"],a=B(e).split("/");return a.at(-1)==="mcp.json"&&a.at(-2)===".kimi-code"||L(e,H(r.env.get("KIMI_CODE_HOME"),"~/.kimi-code",t,r,o),s)||L(e,H(r.env.get("KIMI_SHARE_DIR"),"~/.kimi",t,r,o),[...s,"config.json","config.json.bak"])}case"secret.cli.opencode":{let s=ne(H(r.env.get("XDG_DATA_HOME"),"~/.local/share",t,r,o),"opencode"),a=B(e).split("/").at(-1)??"",l=r.env.get("OPENCODE_DB")?.trim(),c=l&&l!==":memory:"?[l,`${l}-wal`,`${l}-shm`]:[];return L(e,s,["auth.json","mcp-auth.json"])||/^opencode(-.+)?\.db(-wal|-shm)?$/.test(a)&&L(e,s,[a])||c.some((u)=>Fr(e,u,t,r,o))}case"secret.cli.opencode.config":{let s=ne(H(r.env.get("XDG_CONFIG_HOME"),"~/.config",t,r,o),"opencode"),a=r.env.get("ProgramData")?[ne(H(r.env.get("ProgramData"),"",t,r,o),"opencode")]:[],l=["opencode.json","opencode.jsonc"],c=r.env.get("OPENCODE_CONFIG");return l.includes(B(e).split("/").at(-1)??"")||L(e,s,["config.json"])||(c?.trim()?Fr(e,c,t,r,o):!1)||["/Library/Application Support/opencode","/etc/opencode",...a].some((u)=>L(e,Se(u,t,r,o),l))}case"secret.cli.pi":return L(e,H(r.env.get("PI_CODING_AGENT_DIR"),"~/.pi/agent",t,r,o),["auth.json"]);case"secret.cli.pi.config":return L(e,H(r.env.get("PI_CODING_AGENT_DIR"),"~/.pi/agent",t,r,o),["models.json"]);case"secret.cli.amp":{let s=Se("~",t,r,o);return[ne(H(r.env.get("XDG_DATA_HOME"),"~/.local/share",t,r,o),"amp"),ne(s,".local","share","amp")].some((l)=>L(e,l,["secrets.json"]))||Gn(e,ne(s,".amp"),["oauth"])}case"secret.cli.amp.config":{let s=["settings.json","settings.jsonc"],a=[ne(H(r.env.get("XDG_CONFIG_HOME"),"~/.config",t,r,o),"amp"),ne(Se("~",t,r,o),".config","amp")],l=B(e).split("/"),c=r.env.get("AMP_SETTINGS_FILE");return a.some((u)=>L(e,u,s))||l.at(-2)===".amp"&&s.includes(l.at(-1)??"")||(c?.trim()?Fr(e,c,t,r,o):!1)}case"secret.cli.cursor":{let s=ne(H(r.env.get("XDG_CONFIG_HOME"),"~/.config",t,r,o),"cursor"),a=ne(H(r.env.get("CURSOR_DATA_DIR"),"~/.cursor",t,r,o),"projects");return L(e,Se("~/.cursor",t,r,o),["auth.json"])||L(e,s,["auth.json"])||B(e).split("/").at(-1)==="mcp-auth.json"&&nn(B(e),B(a))}case"secret.cli.cursor.config":{let s=B(e).split("/");return s.at(-1)==="mcp.json"&&s.at(-2)===".cursor"}case"secret.cli.grok-build":return L(e,H(r.env.get("GROK_HOME"),"~/.grok",t,r,o),["auth.json","mcp_credentials.json"]);case"secret.cli.grok-build.config":{let s=B(e).split("/");return s.at(-1)==="config.toml"&&s.at(-2)===".grok"||L(e,H(r.env.get("GROK_HOME"),"~/.grok",t,r,o),["config.toml","managed_config.toml","requirements.toml"])||L(e,Se("/etc/grok",t,r,o),["managed_config.toml","requirements.toml"])}case"secret.cli.droid":return L(e,Se("~/.factory",t,r,o),["auth.encrypted","auth.v2.file","auth.v2.key","auth.v2.loginkeychain"]);case"secret.cli.droid.config":{let s=B(e).split("/");return s.at(-1)==="mcp.json"&&s.at(-2)===".factory"||L(e,Se("~/.factory",t,r,o),["settings.json","hooks.json"])}case"secret.cli.devin":return[H(r.env.get("XDG_DATA_HOME"),"~/.local/share",t,r,o),Se("~/.local/share",t,r,o)].some((s)=>L(e,ne(s,"devin"),["credentials.toml"])||Gn(e,ne(s,"devin","mcp"),["oauth"]));case"secret.cli.devin.config":return[H(r.env.get("XDG_CONFIG_HOME"),"~/.config",t,r,o),Se("~/.config",t,r,o)].some((s)=>L(e,ne(s,"devin"),["config.json"]));default:return!1}})?.id??null}var Lp=new WeakMap;function H(e,t,n,r,o){let i=Lp.get(o)??new Map;Lp.set(o,i);let s=`${n}\x00${e??""}\x00${t}`,a=i.get(s);if(a!==void 0)return a;let l=Se(e?.trim()?e:t,n,r,o);return i.set(s,l),l}function L(e,t,n){return n.some((r)=>rg(e,ne(t,r)))}function Gn(e,t,n){return n.some((r)=>nn(B(e),B(ne(t,r))))}function Fr(e,t,n,r,o){return rg(e,Se(t,n,r,o))}function rg(e,t){return B(e)===B(t)}function ne(e,...t){return Ve([e,...t].filter(Boolean).join("/"))}function iT(e,t,n,r,o,i){if(n.length===0)return!1;let s=B(zr(e,t,o,i));return n.some((a)=>nn(s,B(zr(a,r,o,i))))}function sT(e,t,n,r,o,i){if(n.length===0)return!1;let s=B(zr(e,t,o,i));if(!s)return!1;let a=o.env.get("HOME")??o.home,l=a?Ve(N(ce(a),o.paths,i)):"",c=B(l),u=o.env.get("CC_SAFETY_NET_HOME"),f=B(u?Ve(N(Pi(ce(u)),o.paths,i)):l&&Ve(N(`${l}/.cc-safety-net`,o.paths,i)));if(f&&nn(s,f))return!1;return n.some((d)=>{let m=Ts(d);if(m&&Fp.basename(s)!==B(m.name))return!1;let p=B(zr(m?.root??d,r,o,i));if(!p)return!1;if(c&&(c===p||c.startsWith(p.endsWith("/")?p:`${p}/`)))return!1;return nn(s,p)&&!(m&&s===p)})}function aT(e){let t=e.split("/");return t.some((n)=>tT.has(n))||nT.some(([n,r])=>t.some((o,i)=>o===n&&t[i+1]===r))}function lT(e,t){let n=e.lastIndexOf("."),r=n>0&&n<e.length-1?e.slice(n+1):"";if(r==="")return null;for(let o of ws)if(r===o.extension&&ft(o.id,t))return o.id;for(let o of _s)if(o.pattern.test(r)&&ft(o.id,t))return o.id;return null}function B(e){return e.toLowerCase()}function ft(e,t){return!t?.disabledRules?.includes(e)}function Se(e,t,n,r){let{home:o,normalized:i}=Al(e,n,r);if(!i)return"";if(!o)return i;let s=Pl(i,o),a=wi(s)?s:Ve(Pi(t,s)),l=Ve(N(a,n.paths,r));if(!nn(l,o)){if(wi(s))return l;return l===a?i:l}let c=l.slice(o.length);return c?`~${c}`:"~"}function Wp(e,t){return e===t||e.startsWith(`${t}/`)}function cT(e,t,n,r){let{home:o,normalized:i}=Al(e,n,r);if(!i||!o)return"";let s=Pl(i,o),a=Fp.normalize(wi(s)?s:Ve(Pi(t,s))),l=Ve(ce(n.env.get("HOME")??n.home)),c=(d)=>process.platform==="win32"?d.toLowerCase():d,u=[o,l].find((d)=>d!==""&&nn(c(a),c(d)));if(u===void 0)return"";let f=a.slice(u.length);return f?`~${f}`:"~"}function zr(e,t,n,r){let{home:o,normalized:i}=Al(e,n,r);if(!i)return"";let s=o?Pl(i,o):i;return Ve(N(wi(s)?s:Pi(t,s),n.paths,r))}function Al(e,t,n){let r=t.env.get("HOME")??t.home,o=r?Ve(N(ce(r),t.paths,n)):"",i=Ve(ce(uT(at(e,t))));return{home:o,normalized:i}}function uT(e){if(!e.trim().toLowerCase().startsWith("file:"))return e;try{return hA(e)}catch{return e}}function Pl(e,t){if(e==="~")return t;if(e.startsWith("~/"))return ne(t,e.slice(2));return e}function dT(e){if(process.platform==="win32")return!0;return gA.parse(e).root.length>1}function Ve(e){let t=e.trim(),n=(t.includes("\\")&&dT(t)?t.replace(/\\/g,"/"):t).replace(/\/{2,}/g,"/").replace(/^\.\//,"");if(n==="/")return n;return n.replace(/\/+$/g,"")}function nn(e,t){return e===t||e.startsWith(t.endsWith("/")?t:`${t}/`)}function fe(e){return e.split(/[\\/]/).pop()?.replace(/\.exe$/i,"")??e}class rn extends Error{stage;evaluation;name="GuardEvaluationError";constructor(e,t,n){super(`CC Safety Net ${e} dependency failed`,{cause:n});this.stage=e;this.evaluation=t}}var mT={findPolicyMutation:wp,findGitMetadataMutation:qd,resolveGitMetadata:pT,loadPolicySnapshot:Tu,findSensitiveTarget:Up,analyzeCommand:hp,getModes:Xi},fT=/^(?:\S*\/)?(?:ba|da|z|k)?sh(?:\s+-[A-Za-z-]*)*$/;function og(e,t){let n={...mT,...t.dependencies},r=yT(e),o=$r(e)?e.command:r,i=Tt("policy-protection",o,()=>Ud(e)),s=ye(i,"input-candidate"),a=ye(i,"declared-command");if($r(e)&&e.command?.trim()&&a?.program.status==="limited")return{stage:"command-analysis",decision:{kind:"deny",reason:qe,ruleId:"analysis.recursion-limit",intent:"stop_and_explain",evidence:{command:e.command,segment:e.command}}};if(s?.program.status==="limited")return{stage:"command-validation",decision:{kind:"deny",reason:fm,ruleId:"analysis.structural-limit",intent:"stop_and_explain"}};let l=ke(),c=Tt("policy-protection",o,()=>n.resolveGitMetadata([e.context.executionCwd,e.context.configCwd],t.environment)),u=Tt("policy-protection",o,()=>n.findPolicyMutation(i,t.environment,l));if(u){let C=o??u.target;return{stage:"policy-protection",decision:{kind:"deny",reason:xp,ruleId:"guard.policy-config",intent:"hard_stop",evidence:{command:C,segment:u.target}}}}let f=Tt("policy-protection",o,()=>Sp(i,t.environment,l));if(f){let C=o??f.target;return{stage:"policy-protection",decision:{kind:"deny",reason:bp,ruleId:"guard.policy-apply",intent:"hard_stop",evidence:{command:C,segment:f.target}}}}let d=Tt("policy-protection",o,()=>n.findGitMetadataMutation(i,c,t.environment,l));if(d){let C=o??d.target;return{stage:"policy-protection",decision:{kind:"deny",reason:Ae,ruleId:"guard.git-metadata",intent:"hard_stop",evidence:{command:C,segment:d.target}}}}let m=Tt("config-load",o,()=>n.loadPolicySnapshot(t.environment,{...t.policyOptions,cwd:e.context.configCwd})),p=m.policy,g=n.getModes(p,t.environment.env),h={level:g.effectiveLevel,...gT(m)},y=p.secretProtection.enabled===!1?null:Tt("secret-protection",o,()=>n.findSensitiveTarget(i,p.secretProtection,t.environment,l,{strict:$r(e)||s?.program.dialect==="powershell"?g.strict:void 0}));if(y){let C=o??y.target;return{stage:"secret-protection",...h,decision:{kind:"deny",reason:Gp,intent:"hard_stop",ruleId:y.ruleId,evidence:{command:C,segment:y.target}}}}if(!$r(e))return{stage:"non-command",...h,decision:{kind:"allow"}};if(!e.command||e.command.trim()==="")return{...Tl("command-validation",o),...h};let b=Tt("command-analysis",o,()=>yp(()=>n.analyzeCommand(e.command,{cwd:e.context.executionCwd,shell:e.route.shell,policySnapshot:m,environment:t.environment,protectedGitMetadata:c,effectiveCapabilities:g.capabilities,strict:g.strict,paranoidRm:g.paranoidRm,paranoidInterpreters:g.paranoidInterpreters,worktreeMode:g.worktreeMode,budget:l,...t.trace?{trace:t.trace}:{}},hT(i),i.store),e.command,t.trace));if(b.decision){let C=!g.strict&&(b.decision.ruleId==="raw-text.dangerous-command"||b.decision.reason===_r&&!fT.test(b.decision.evidence?.segment??"")&&Me(e.command)===null);return{stage:"command-analysis",...h,..."errorCode"in b?{errorCode:b.errorCode}:{},decision:C?{...b.decision,unverifiedByStandardMode:!0}:b.decision}}return{stage:"command-analysis",...h,decision:{kind:"allow"}}}function pT(e,t){let n=[...new Set(e.filter((r)=>typeof r==="string"&&r!==""))].flatMap((r)=>t.gitMetadata(r)??[]);if(n.length===0)return null;return Object.freeze({entries:Object.freeze([...new Set(n.flatMap((r)=>r.entries))]),markerFiles:Object.freeze([...new Set(n.flatMap((r)=>r.markerFiles))]),directories:Object.freeze([...new Set(n.flatMap((r)=>r.directories))]),hooksDirectories:Object.freeze([...new Set(n.flatMap((r)=>r.hooksDirectories))])})}function gT(e){if(e.state==="ready")return{};return{configFallback:{reason:e.reason}}}function hT(e){return ye(e,"declared-command")?.program}function yT(e){try{return Yn(e.input)}catch(t){let n=$r(e)?e.command:void 0;throw new rn("policy-protection",Tl("policy-protection",t instanceof tt?void 0:n,t),t)}}function Tt(e,t,n){try{return n()}catch(r){throw new rn(e,Tl(e,r instanceof tt?void 0:t,r),r)}}function Tl(e,t,n){let r=n instanceof W||n instanceof Ue;return{stage:e,decision:{kind:"deny",reason:r?Oi:jn,ruleId:r?"analysis.limit":"analysis.failed-closed",intent:"stop_and_explain",...t?{evidence:{command:t,segment:t}}:{}}}}function $r(e){return e.route.kind==="command"}import{appendFileSync as IT,mkdirSync as kT}from"fs";import{isAbsolute as OT,join as Ol}from"path";import{lstatSync as sg,readdirSync as CT,readFileSync as bT,rmdirSync as ST,statSync as ag,unlinkSync as vT,utimesSync as ET,writeFileSync as RT}from"fs";import{join as Br}from"path";function ig(e,t={}){return ho(Wt(e,t),e.home).policy.audit.retention_days}var kl=86400000,xT=".last-prune",wT=/^\d{4}-\d{2}$/,_T=/^((\d{4}-\d{2})-\d{2})-.+\.jsonl$/,lg=(e)=>Math.floor(e/kl);function ug(e,t,n=()=>new Date){try{let r=n().getTime();if(!ag(t,{throwIfNoEntry:!1})?.isDirectory())return;let o=Br(t,xT),i=ag(o,{throwIfNoEntry:!1})?.mtimeMs;if(i!==void 0&&lg(i)===lg(r))return;let s=r-ig(e)*kl,a=new Date(r).toISOString().slice(0,7);for(let l of Il(t)){if(l.isDirectory()){AT(Br(t,l.name),s,a);continue}if(l.isFile()&&l.name.endsWith(".jsonl"))PT(Br(t,l.name),s)}RT(o,"",{mode:384}),ET(o,r/1000,r/1000)}catch{}}function AT(e,t,n){for(let r of Il(e)){if(!r.isDirectory()||!wT.test(r.name))continue;let o=Br(e,r.name);for(let i of Il(o)){if(!i.isFile())continue;let s=_T.exec(i.name);if(!s||s[2]!==r.name)continue;let a=Date.parse(`${s[1]}T00:00:00.000Z`)+kl;if(!Number.isFinite(a)||a>=t)continue;dg(Br(o,i.name))}if(r.name!==n)cg(o)}cg(e)}function PT(e,t){try{let n=sg(e);if(n.mtimeMs>=t)return;let r=bT(e,"utf-8").split(`
|
|
52
|
-
`).filter((o)=>o.trim()).map(TT);if(r.length===0)return;if(r.some((o)=>o===void 0||o>=t))return;if(sg(e).mtimeMs!==n.mtimeMs)return;dg(e)}catch{}}function TT(e){try{let t=JSON.parse(e).ts,n=typeof t==="string"?Date.parse(t):Number.NaN;return Number.isFinite(n)?n:void 0}catch{return}}function Il(e){try{return CT(e,{withFileTypes:!0,encoding:"utf8"})}catch{return[]}}function dg(e){try{vT(e)}catch{}}function cg(e){try{ST(e)}catch{}}var MT="2.6.
|
|
52
|
+
`).filter((o)=>o.trim()).map(TT);if(r.length===0)return;if(r.some((o)=>o===void 0||o>=t))return;if(sg(e).mtimeMs!==n.mtimeMs)return;dg(e)}catch{}}function TT(e){try{let t=JSON.parse(e).ts,n=typeof t==="string"?Date.parse(t):Number.NaN;return Number.isFinite(n)?n:void 0}catch{return}}function Il(e){try{return CT(e,{withFileTypes:!0,encoding:"utf8"})}catch{return[]}}function dg(e){try{vT(e)}catch{}}function cg(e){try{ST(e)}catch{}}var MT="2.6.6",DT=1e4,NT=2000,LT=256,WT=32768;function FT(e){let t=e.trim();if(!t)return null;let n=t.replace(/[^A-Za-z0-9_.-]+/g,"_");if(n=n.replace(/^[._-]+|[._-]+$/g,"").slice(0,128),!n||n==="."||n==="..")return null;return n}function GT(e){return(e??"").replace(/[^A-Za-z0-9]/g,"-").slice(0,180)||"no-cwd"}function Ml(e,t,n,r,o,i,s={}){let a=FT(t);if(!a)return;let l=$T(e);if(!l)return;try{let c=(s.now??(()=>new Date))().toISOString(),u=Ti(pt(n),s.failureStage?Number.POSITIVE_INFINITY:DT),f=Ti(pt(r),NT),d=s.toolName?Ti(pt(s.toolName),LT):void 0,m=i===null?void 0:Ti(pt(i),WT),p=Ol(l,GT(m?.value??null),c.slice(0,7));kT(p,{recursive:!0,mode:448});let g=Ol(p,`${c.slice(0,10)}-${a}.jsonl`),h={ts:c,id:(s.createId??Ji)(),v:MT,sessionId:a,decision:s.decision??"deny",agent:s.agent,shape:s.shape,level:s.level,configFallback:s.configFallback,toolName:d?.value,command:u.value,segment:f.value,...u.truncated||f.truncated||d?.truncated||m?.truncated?{truncated:!0}:{},reason:o,ruleId:s.ruleId,intent:s.intent,failureStage:s.failureStage,errorCode:s.errorCode,cwd:m?.value??null};IT(g,`${JSON.stringify(h)}
|
|
53
53
|
`,{encoding:"utf-8",mode:384}),ug(e,l,s.now)}catch{}}function Ti(e,t){return{value:e.slice(0,t),truncated:e.length>t}}function zT(e){let t=e.env.get("CC_SAFETY_NET_AUDIT_HOME");if(e.env.get("NODE_ENV")==="test"&&!t)return null;let n=t||e.home;return n&&OT(n)?n:null}function $T(e){let t=zT(e);return t?Ol(t,".cc-safety-net","logs"):null}function fg(e,t,n,r=!0,o){if(t.decision.kind==="allow"){if(!n||e.route.kind!=="command")return;let a=mg(e);return{decision:"allow",command:a,segment:a,reason:"allowed",cwd:e.context.executionCwd,toolName:e.toolName,level:t.level,...t.configFallback?{configFallback:!0}:{}}}let i=t.decision.evidence,s=i?.command??(r?mg(e):"");return{decision:"deny",command:s,segment:i?.segment??s,reason:t.decision.reason,cwd:e.context.executionCwd,toolName:e.toolName,level:t.level,...t.configFallback?{configFallback:!0}:{},ruleId:t.decision.ruleId,intent:t.decision.intent,failureStage:o?.stage,errorCode:o?.errorCode}}function mg(e){return"command"in e?e.command??"":""}function pg(e,t,n,r){if(!t)return;let o;try{o=n()}catch{return}if(typeof o!=="string"||!o.trim())return;Ml(e,o,t.command,t.segment,t.reason,t.cwd,{decision:t.decision,agent:r.agent,shape:r.shape,level:t.level,configFallback:t.configFallback,toolName:t.toolName,ruleId:t.ruleId,intent:t.intent,failureStage:t.failureStage,errorCode:t.errorCode})}function gg(e,t,n,r){let o;try{o=n()}catch{return}if(typeof o!=="string"||!o.trim())return;Ml(e,o,t.command??"",t.segment??t.command??"",t.reason,r.cwd??null,{decision:"deny",agent:r.agent,shape:r.shape,toolName:r.toolName??t.toolName,ruleId:t.ruleId,intent:t.intent})}function yg(e,t,n){try{let r=og(t,{environment:e,...n.guard});return hg(e,t,r,n),r}catch(r){if(!(r instanceof rn))throw r;throw hg(e,t,r.evaluation,n,!(r.cause instanceof tt),{stage:r.stage,errorCode:BT(r.cause)}),r}}function hg(e,t,n,r,o=!0,i){pg(e,fg(t,n,r.guard?.auditAllowed??!1,o,i),r.audit.getSessionId,{agent:r.audit.agent,shape:r.audit.shape})}function BT(e){if(e instanceof W)return j[e.kind].errorCode;if(e instanceof tt)return"tool-input-limit";if(e instanceof Ue)return"structural-shell-syntax-limit";return"unexpected-error"}function on(e,t={}){return{malformed:!0,denial:Vn(t),cwd:e}}function Dl(e,t){return{malformed:!0,denial:Mi(e,t),cwd:e.cwd}}function Cg(e,t={}){return(n,r)=>{try{return UT(n,r,e,t)}catch(o){return console.error("CC Safety Net error:",o),e.block(Vn())}}}function UT(e,t,n,r){let o=hc();if(n.cancelled?.(t))return n.block(Vn());let i=n.extract(e,t,o.paths);if(!i)return n.allow;let s=()=>n.getSessionId(e,t);if("malformed"in i)return gg(o,i.denial,s,{agent:n.agent,toolName:i.denial.toolName,cwd:i.cwd}),n.block(i.denial);let a=(l,c)=>{let u=Wl(l,{includeEvidence:c});return u?n.block(u):n.allow};try{let l=yg(o,i,{guard:{auditAllowed:Sc(o.env),policyOptions:r.policyOptions,dependencies:r.guardDependencies},audit:{agent:n.agent,getSessionId:s}});return a(l,!0)}catch(l){if(!(l instanceof rn))throw l;if(rt(Z.debug,o.env))console.error(`CC Safety Net debug: ${n.debugLabel} analysis failed: ${Gl(l.cause)}`);return a(l.evaluation,n.includeEvidenceOnError(i))}}var HT={agent:"amp",debugLabel:"amp tool.call",extract:(e,t,n)=>VT(e,t,n),getSessionId:(e)=>YT(e),allow:{action:"allow"},block:(e)=>ZT(e),includeEvidenceOnError:(e)=>e.route.kind==="command"},bg=jT();function jT(e={}){return Cg(HT,e)}function VT(e,t,n){if(!e||typeof e!=="object")return on(null);let r=e;if(typeof r.tool!=="string"||r.tool.trim()==="")return on(null);if(!r.input||typeof r.input!=="object")return on(null,{toolName:r.tool});let o=qT(t);if(!o)return on(null,{toolName:r.tool});let i=lc(".",[o],n);if(!i)return Dl({directory:"session",problem:"unusable",cwd:o},{toolName:r.tool});let s=KT(t,e);if(!s.ok)return on(i,{toolName:r.tool});if(!s.command)return Hi(r.tool,r.input,{kind:Wi(r.tool)},{configCwd:i,executionCwd:i},null);if(typeof s.command.command!=="string"||s.command.command.trim()==="")return on(i,{toolName:r.tool});let a=typeof s.command.dir==="string"?s.command.dir:".",l=cc(a,i,n);if(!l)return Dl({directory:"requested",problem:"unusable",cwd:a},{command:s.command.command,toolName:r.tool});return Hi(r.tool,r.input,{kind:"command",shell:"posix"},{configCwd:i,executionCwd:l},s.command.command)}function qT(e){let t=e.system.workspaceRoot;if(!t)return;try{let n=e.helpers.filePathFromURI(t);return typeof n==="string"&&n.trim()!==""?n:void 0}catch{return}}function KT(e,t){try{return{ok:!0,command:e.helpers.shellCommandFromToolCall(t)}}catch{return{ok:!1}}}function YT(e){if(!e||typeof e!=="object")return;let t=e.thread?.id;return typeof t==="string"&&t.trim()!==""?t:void 0}function ZT(e){return{action:"reject-and-continue",message:Fl(e)}}function XT(e){e.on("tool.call",(t)=>bg(t,e))}export{XT as default};
|
package/dist/api.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{D,c,fe,u,p,
|
|
1
|
+
import{D,c,fe,u,p,q}from"./chunks/index-t1vhmn90.js";import{isAbsolute as n,resolve as t}from"node:path";function y(e){if(typeof e!=="object"||e===null)throw TypeError("checkCommand requires an input object with command and cwd");if(typeof e.command!=="string"||e.command.trim()==="")throw TypeError("command must be a non-empty string");if(typeof e.cwd!=="string"||e.cwd.trim()===""||!n(e.cwd))throw TypeError("cwd must be an absolute directory path");let r=t(e.cwd);if(!fe(r)){let o=D({directory:"requested",problem:"unusable",cwd:r});return{kind:"deny",reason:o.reason,ruleId:o.ruleId}}return m(a(u("library-api",{command:e.command},{kind:"command",shell:"auto"},{configCwd:r,executionCwd:r},e.command)))}function a(e){try{return q(e,{environment:c()}).decision}catch(r){if(!(r instanceof p))throw r;return r.evaluation.decision}}function m(e){if(e.kind==="allow")return{kind:"allow"};return{kind:"deny",reason:e.reason,ruleId:e.ruleId}}export{y as checkCommand};
|
package/dist/bin/hook.js
CHANGED
|
@@ -47,5 +47,5 @@ var Zg=["-h","--help"];function ho(e,t){let n=Object.entries(e.booleans??{}),r=O
|
|
|
47
47
|
`).some((n)=>{let r=n.indexOf(t);return r>=0&&/[()[\]{}]/.test(n.slice(r))})}function VA(e){return Array.from(e.matchAll(/[A-Za-z_$][\w$]*/g),(t)=>dg(t[0])).some((t)=>t.some((n)=>UA.test(n)))}var KA=new Set(["cmd","powershell","pwsh"]);function qA(e,t){let n=ur(e.masked,t),r=Bl[e.masked[n]??""];if(r===void 0||r==="}")return!1;let o=e.masked.indexOf(r,n+1),i=e.masked.slice(n+1,o);return o!==-1&&/^\s*,[\w\s,]*$/.test(i)&&/^[,)]/.test(e.masked.slice(ur(e.masked,o+1)))&&!e.literals.some((s)=>s.tokenStart>n&&s.tokenStart<o&&(Ll.has(s.text)||Vn(xe(s.text).toLowerCase())||KA.has(xe(s.text).toLowerCase().replace(/\.exe$/,""))))}function YA(e){let t=[];return e.split("").map((n,r)=>{let o=t.at(-1)??-1;if(n in Bl)t.push(r);if(n===")"||n==="]"||n==="}")t.pop();return o})}function ZA(e,t,n,r){let o=n[t.tokenStart]??-1,i=e[o]??"",s=cr(e,t.tokenStart),a=ur(e,t.tokenEnd);if(/(?:^|[^\w$])in$|[=!]=$/.test(e.slice(Math.max(0,s-3),s+1)))return!0;if(/^(?:(?:not\s+)?in(?![\w$])|[=!]=)/.test(e.slice(a,a+8)))return!0;if(r&&(i==="["||i==="("))return!1;let l=e[s],c=e[a];if(i==="{"&&l===":")return rP(e,s);let u=(l===i||l===",")&&(c===","||c===Bl[i]||i==="{"&&c===":");if(i!=="(")return u&&i!=="";return u&&(l===","||c===",")&&oP(e,o)}var XA=/(?:^|[^\w$.])(?:pathlib\s*\.\s*)?Path\s*$/,JA=/^\s*\.\s*write_(?:text|bytes)\s*\(/,QA=/(?:^|[^\w$.])open\s*$/,eP=/^[bt]*[awx][abtwx]*$/,tP=/(?:^|[^\w$])(?:writeFile|writeFileSync|appendFile|appendFileSync|Bun\s*\.\s*write)\s*$/;function nP(e,t,n){let r=n[t.tokenStart]??-1;if(e.masked[r]!=="(")return!1;let o=cr(e.masked,t.tokenStart),i=ur(e.masked,t.tokenEnd),s=e.masked[i],a=e.masked.slice(Math.max(0,r-40),r);if(XA.test(a))return(o===r||e.masked[o]===",")&&(s===","||s===")")&&!e.literals.some((c)=>c.tokenStart>r&&c.tokenStart<t.tokenStart)&&JA.test(e.masked.slice(ci(e.masked,r+1)+1));if(o!==r||s!==",")return!1;if(tP.test(a))return!0;if(!QA.test(a))return!1;let l=e.literals.find((c)=>/^,\s*(?:mode\s*=\s*)?$/.test(e.masked.slice(i,c.tokenStart)));return l!==void 0&&eP.test(l.text)&&/^[,)]/.test(e.masked.slice(ur(e.masked,l.tokenEnd)))}function rP(e,t){let n=cr(e,t),r=/[\w$]*$/.exec(e.slice(Math.max(0,n-63),n+1))?.[0]??"",o=e[cr(e,n+1-r.length)];return o==="{"||o===","}function oP(e,t){let n=cr(e,t),r=e.slice(Math.max(0,n-7),n+1);return!/[\w$)\]]$/.test(r)||BA.test(r)}function iP(e){let t=Hl(e);if(t==="python")return"python";if(t==="osascript")return"opaque";return t==="node"||t==="bun"||t==="deno"?"javascript":"simple"}var sP={python:"#",javascript:"/"};function aP(e,t){if(t==="opaque")return{kind:"unmaskable"};let n={masked:e.split(""),literals:[]};return ug(e,0,t,n,!1)===null?{kind:"unmaskable"}:{kind:"masked",masked:n.masked.join(""),literals:n.literals}}function ug(e,t,n,r,o){let i=0;for(let s=t;s<e.length;s++){let a=e[s]??"";if(o&&a==="}"&&i===0)return s;if(o&&a===sP[n])return null;if(a==="{")i++;if(a==="}")i--;if(n==="simple"&&(a==="`"||a==="%"||a==="<")){if(pA.test(e.slice(s)))return null}let l=a==="'"||a==='"'||n==="javascript"&&a==="`"?a:null;if(l===null)continue;if(l==="`"&&dP(e,s))return null;let c=n==="python"?cP(e,s):"",u=n==="python"&&e.startsWith(l.repeat(3),s)?l.repeat(3):l,f=s+u.length,d=l==="`"||/[fF]/.test(c),m=s-c.length,p=d?lP(e,m,f,u,n,r):uP(e,f,u);if(p===null)return null;if(!d){let g=e.slice(f,p);if(n==="simple"&&l==='"'&&gA.test(g))return null;r.literals.push({start:f,text:g,tokenStart:m,tokenEnd:p+u.length}),r.masked.fill(" ",f,p)}r.masked.fill(" ",s,f),r.masked.fill(" ",p,p+u.length),s=p+u.length-1}return o?null:e.length}function lP(e,t,n,r,o,i){let s=o==="python"?"{":"${",a=r==="`"||r.length===3,l="";for(let c=n;c<e.length;c++){let u=e[c]??"";if(e.startsWith(r,c))return i.literals.push({start:n,text:l,tokenStart:t,tokenEnd:c+r.length}),c;if(!a&&(u===`
|
|
48
48
|
`||u==="\r"))return null;let f=o==="python"&&(u==="{"||u==="}")&&e[c+1]===u;if(!f&&e.startsWith(s,c)){let p=ug(e,c+s.length,o,i,!0);if(p===null)return null;l+=`${s}}`,i.masked.fill(" ",c,c+s.length),i.masked[p]=" ",c=p;continue}let m=u==="\\"&&!(o==="python"&&e[c+1]==="{")||f?2:1;l+=e.slice(c,c+m),i.masked.fill(" ",c,c+m),c+=m-1}return null}function cP(e,t){return fA.exec(e.slice(Math.max(0,t-3),t))?.[1]??""}function uP(e,t,n){let r=n.length===3;for(let o=t;o<e.length;o++){let i=e[o];if(i==="\\"){o++;continue}if(!r&&(i===`
|
|
49
49
|
`||i==="\r"))return null;if(e.startsWith(n,o))return o}return null}function dP(e,t){for(let n=t-1;n>=0;n--){let r=e[n];if(!r||/\s/.test(r))continue;return/[\w$\])]/.test(r)}return!1}function mP(e){for(let t of e.matchAll(/[A-Za-z_$][A-Za-z0-9_$]*/g)){let n=t[0],r=t.index;if(Xx.has(n.toLowerCase()))return!0;let o=dg(n);if(!o.some((i)=>Jx.has(i)))continue;if(o.length>1)return!0;if(e[cr(e,r)]===".")return!0;if(e[ur(e,r+n.length)]==="(")return!0}return!1}function dg(e){return e.replace(/([a-z0-9])([A-Z])/g,"$1 $2").split(/[_$\s]+/).map((t)=>t.toLowerCase())}function cr(e,t){for(let n=t-1;n>=0;n--)if(!/\s/.test(e[n]??""))return n;return-1}function ur(e,t){for(let n=t;n<e.length;n++)if(!/\s/.test(e[n]??""))return n;return e.length}function fP(e,t,n,r,o,i){return CP(e).flatMap((s)=>{let a=t.getShellSyntax(s);if(a.status==="invalid")return[];return[...dr(a,t,{...n,displayOperandsAreCapturedOutput:!0},r,o,i),...pP(a,r)?gP(a,r).map((l)=>({target:l,cwd:o})):[]]})}function pP(e,t){let n=bi(e);for(let r=0;r<n.length;r++){let o=n[r];if(o?.kind!=="word"||xe(Tt(o.text,t)).toLowerCase()!=="base64")continue;for(let i=r+1;i<n.length;i++){let s=n[i];if(s?.kind==="operator")break;if(s?.kind!=="word")continue;let a=Tt(s.text,t);if(a==="--decode"||!a.startsWith("--")&&a.startsWith("-")&&/[dD]/.test(a))return!0}}return!1}function gP(e,t){return bi(e).flatMap((n)=>n.kind==="word"?[Tt(n.text,t)]:n.kind==="redirection"&&n.target?[Tt(n.target,t)]:[]).flatMap($l)}function $l(e){let t=yP(e);if(t===null)return[];let n=Buffer.from(t,"base64").toString("utf8");if(n===""||hP(n))return[];return Buffer.from(n,"utf8").toString("base64").replace(/=+$/g,"")===t.replace(/=+$/g,"")?[n]:[]}function hP(e){return Array.from(e).some((t)=>{let n=t.charCodeAt(0);return n<32||n===127})}function yP(e){if(e.length<8||!/^[A-Za-z0-9+/_-]+={0,2}$/.test(e))return null;if(/=/.test(e.replace(/=+$/g,"")))return null;let t=e.replace(/=+$/g,"");if(t.length%4===1)return null;return`${t.replace(/-/g,"+").replace(/_/g,"/")}${"=".repeat((4-t.length%4)%4)}`}function CP(e){let t=[],n={inSingle:!1,inDouble:!1,escaped:!1};for(let r=0;r<e.length;r++){let o=e[r];if(!o)break;if(Rr(o,n))continue;if(mg(e,r,n)){let i=bP(e,r+1);if(i!==null)t.push(i.body),r=i.endIndex;continue}if(!n.inSingle&&o==="`"){let i=SP(e,r);if(i!==null)t.push(i.body),r=i.endIndex}}return t}function bP(e,t){let n={inSingle:!1,inDouble:!1,escaped:!1},r=1;for(let o=t+1;o<e.length;o++){let i=e[o];if(!i)break;if(Rr(i,n))continue;if(mg(e,o,n)){r++,o++;continue}if(!n.inSingle&&!n.inDouble&&i===")"){if(r--,r===0)return{body:e.slice(t+1,o),endIndex:o}}}return null}function SP(e,t){let n=!1;for(let r=t+1;r<e.length;r++){let o=e[r];if(!o)break;if(n){n=!1;continue}if(o==="\\"){n=!0;continue}if(o==="`")return{body:e.slice(t+1,r),endIndex:r}}return null}function mg(e,t,n){return!n.inSingle&&e[t]==="$"&&e[t+1]==="("&&e[t+2]!=="("}function vP(e){let t=[],n=[],r=!1,o=!1,i=!1;for(let l=0;l<e.length;l++){let c=e[l];if(c===void 0)break;if(!i&&c==="--"){i=!0;continue}if(i){n.push(c);continue}let u=/^--([^=]+)(?:=(.*))?$/.exec(c);if(u!==null){let f=u[1]??"",d=u[2];if(f===lA)o=!0;if(uA.has(f))r=!0;if(d!==void 0){if(f===Hp)t.push(d);continue}if(mA.has(f)){let m=e[l+1];if(f===Hp&&m!==void 0)t.push(m);l++}continue}if(c.startsWith("-")&&c.length>1){let f=c.slice(1),d="",m="";for(let g=0;g<f.length;g++){let h=f[g]??"";if(cA.has(h))r=!0;if(dA.has(h)){d=h,m=f.slice(g+1);break}}if(d==="")continue;if(m.length>0){if(d===zp)t.push(m);continue}let p=e[l+1];if(d===zp&&p!==void 0)t.push(p);l++;continue}n.push(c)}let a=!r&&!o?n.slice(1):n;return[...t,...a]}function yt(e){let t=e.findIndex((n)=>!fg(n)&&!/^[A-Za-z_][A-Za-z0-9_]*=.*/.test(n));return t===-1?[]:e.slice(t)}function fg(e){return e==="env"||e==="command"||e==="builtin"||e==="sudo"}var EP=new Set(["id_rsa.pub","id_ed25519.pub","id_ecdsa.pub"]),wP=".env.",RP=new Set([".env.example",".env.sample",".env.template",".env.tpl",".env.defaults"]),_P=[".env.example.",".env.sample."];function xP(e){let t;try{t=new URL(e.trim())}catch{return!1}return t.protocol!=="file:"&&t.host!==""}function AP(e){return e.length>0&&!/\s/.test(e)}function ns(e,t,n,r){let o=pg(e,t,n,r);return o!==""&&n.paths.entryKind(o)!=="missing"}function pg(e,t,n,r){try{return po(e,t,n,r)}catch(o){if(o instanceof L)throw o;return""}}var PP=/[?&][^?&=/]+=/,TP=new Set(["node_modules","__pycache__"]),kP=[["vendor","bundle"],["vendor","cache"]];function IP(e,t,n,r,o){if(xP(e))return null;let i=De(e,t,r,o);if(!i)return null;let s=j(i.split("/").pop()??""),a=j(i),l=()=>AP(s)||ns(e,t,r,o),c=j(WP(e,t,r,o));for(let d of Hs){let m=`~/${d.suffixParts.join("/")}`;if((Yp(a,m)||Yp(c,m))&&Lt(d.id,n))return d.id}if(RP.has(s)||_P.some((d)=>s.startsWith(d)))return null;let u=OP(i,t,n,r,o);if(u)return u;if(EP.has(s))return null;for(let d of zs)if(s===d.basename&&Lt(d.id,n))return d.id;if(s.startsWith(wP)&&Lt(Fo.id,n)&&l())return Fo.id;for(let d of Bs)if(s.length>d.prefix.length&&s.startsWith(d.prefix)){let m=s.slice(d.prefix.length)[0];if((m==="-"||m==="_")&&Lt(d.id,n)&&l())return d.id}for(let d of $s)if(s.length>d.prefix.length&&s.startsWith(d.prefix)){if(s.slice(d.prefix.length)===d.suffix&&Lt(d.id,n))return d.id}if(NP(a))return null;if(!s.includes(".")&&xr.pattern.test(s)&&Lt(xr.id,n))return xr.id;if(PP.test(e)&&!ns(e,t,r,o))return null;let f=LP(s,n);if(f)return f;return null}function OP(e,t,n,r,o){return Go.find((i)=>{if(!Lt(i.id,n))return!1;switch(i.id){case"secret.cli.claude-code":return F(e,K(r.env.get("CLAUDE_CONFIG_DIR"),"~/.claude",t,r,o),[".credentials.json"]);case"secret.cli.claude-code.config":{let s=j(e).split("/");return F(e,K(r.env.get("CLAUDE_CONFIG_DIR"),"~/.claude",t,r,o),["settings.json","settings.local.json"])||mo(e,"~/.claude.json",t,r,o)||s.at(-1)==="settings.local.json"&&s.at(-2)===".claude"||s.at(-1)===".mcp.json"}case"secret.cli.antigravity":return F(e,De("~/.gemini/config",t,r,o),["hooks.json","mcp_config.json"]);case"secret.cli.codex":{let s=K(r.env.get("CODEX_HOME"),"~/.codex",t,r,o);return F(e,s,["auth.json",".credentials.json"])||lr(e,s,["secrets",".sandbox-secrets"])}case"secret.cli.codex.config":{let s=K(r.env.get("CODEX_HOME"),"~/.codex",t,r,o),a=j(e).split("/").at(-1)??"";return F(e,s,["config.toml"])||a.endsWith(".config.toml")&&F(e,s,[a])}case"secret.cli.gemini":return F(e,ce(K(r.env.get("GEMINI_CLI_HOME"),"~",t,r,o),".gemini"),["oauth_creds.json","mcp-oauth-tokens.json","a2a-oauth-tokens.json","gemini-credentials.json"]);case"secret.cli.gemini.config":{let s=j(e).split("/"),a=r.env.get("GEMINI_CLI_SYSTEM_SETTINGS_PATH"),l=r.env.get("ProgramData")?[ce(K(r.env.get("ProgramData"),"",t,r,o),"gemini-cli")]:[];return F(e,ce(K(r.env.get("GEMINI_CLI_HOME"),"~",t,r,o),".gemini"),["settings.json","google_accounts.json"])||s.at(-1)==="settings.json"&&s.at(-2)===".gemini"||(a?.trim()?mo(e,a,t,r,o):!1)||["/Library/Application Support/GeminiCli","/etc/gemini-cli",...l].some((c)=>F(e,De(c,t,r,o),["settings.json"]))}case"secret.cli.copilot-cli":{let s=K(r.env.get("COPILOT_HOME"),"~/.copilot",t,r,o);return F(e,s,["config.json"])||lr(e,s,["mcp-oauth-config","mcp-secrets"])}case"secret.cli.copilot-cli.config":return F(e,K(r.env.get("COPILOT_HOME"),"~/.copilot",t,r,o),["mcp-config.json"]);case"secret.cli.kimi-code":{let s=K(r.env.get("KIMI_CODE_HOME"),"~/.kimi-code",t,r,o),a=K(r.env.get("KIMI_SHARE_DIR"),"~/.kimi",t,r,o);return F(e,s,["server.token"])||lr(e,s,["credentials"])||lr(e,a,["credentials","mcp-oauth"])}case"secret.cli.kimi-code.config":{let s=["config.toml","mcp.json"],a=j(e).split("/");return a.at(-1)==="mcp.json"&&a.at(-2)===".kimi-code"||F(e,K(r.env.get("KIMI_CODE_HOME"),"~/.kimi-code",t,r,o),s)||F(e,K(r.env.get("KIMI_SHARE_DIR"),"~/.kimi",t,r,o),[...s,"config.json","config.json.bak"])}case"secret.cli.opencode":{let s=ce(K(r.env.get("XDG_DATA_HOME"),"~/.local/share",t,r,o),"opencode"),a=j(e).split("/").at(-1)??"",l=r.env.get("OPENCODE_DB")?.trim(),c=l&&l!==":memory:"?[l,`${l}-wal`,`${l}-shm`]:[];return F(e,s,["auth.json","mcp-auth.json"])||/^opencode(-.+)?\.db(-wal|-shm)?$/.test(a)&&F(e,s,[a])||c.some((u)=>mo(e,u,t,r,o))}case"secret.cli.opencode.config":{let s=ce(K(r.env.get("XDG_CONFIG_HOME"),"~/.config",t,r,o),"opencode"),a=r.env.get("ProgramData")?[ce(K(r.env.get("ProgramData"),"",t,r,o),"opencode")]:[],l=["opencode.json","opencode.jsonc"],c=r.env.get("OPENCODE_CONFIG");return l.includes(j(e).split("/").at(-1)??"")||F(e,s,["config.json"])||(c?.trim()?mo(e,c,t,r,o):!1)||["/Library/Application Support/opencode","/etc/opencode",...a].some((u)=>F(e,De(u,t,r,o),l))}case"secret.cli.pi":return F(e,K(r.env.get("PI_CODING_AGENT_DIR"),"~/.pi/agent",t,r,o),["auth.json"]);case"secret.cli.pi.config":return F(e,K(r.env.get("PI_CODING_AGENT_DIR"),"~/.pi/agent",t,r,o),["models.json"]);case"secret.cli.amp":{let s=De("~",t,r,o);return[ce(K(r.env.get("XDG_DATA_HOME"),"~/.local/share",t,r,o),"amp"),ce(s,".local","share","amp")].some((l)=>F(e,l,["secrets.json"]))||lr(e,ce(s,".amp"),["oauth"])}case"secret.cli.amp.config":{let s=["settings.json","settings.jsonc"],a=[ce(K(r.env.get("XDG_CONFIG_HOME"),"~/.config",t,r,o),"amp"),ce(De("~",t,r,o),".config","amp")],l=j(e).split("/"),c=r.env.get("AMP_SETTINGS_FILE");return a.some((u)=>F(e,u,s))||l.at(-2)===".amp"&&s.includes(l.at(-1)??"")||(c?.trim()?mo(e,c,t,r,o):!1)}case"secret.cli.cursor":{let s=ce(K(r.env.get("XDG_CONFIG_HOME"),"~/.config",t,r,o),"cursor"),a=ce(K(r.env.get("CURSOR_DATA_DIR"),"~/.cursor",t,r,o),"projects");return F(e,De("~/.cursor",t,r,o),["auth.json"])||F(e,s,["auth.json"])||j(e).split("/").at(-1)==="mcp-auth.json"&&xn(j(e),j(a))}case"secret.cli.cursor.config":{let s=j(e).split("/");return s.at(-1)==="mcp.json"&&s.at(-2)===".cursor"}case"secret.cli.grok-build":return F(e,K(r.env.get("GROK_HOME"),"~/.grok",t,r,o),["auth.json","mcp_credentials.json"]);case"secret.cli.grok-build.config":{let s=j(e).split("/");return s.at(-1)==="config.toml"&&s.at(-2)===".grok"||F(e,K(r.env.get("GROK_HOME"),"~/.grok",t,r,o),["config.toml","managed_config.toml","requirements.toml"])||F(e,De("/etc/grok",t,r,o),["managed_config.toml","requirements.toml"])}case"secret.cli.droid":return F(e,De("~/.factory",t,r,o),["auth.encrypted","auth.v2.file","auth.v2.key","auth.v2.loginkeychain"]);case"secret.cli.droid.config":{let s=j(e).split("/");return s.at(-1)==="mcp.json"&&s.at(-2)===".factory"||F(e,De("~/.factory",t,r,o),["settings.json","hooks.json"])}case"secret.cli.devin":return[K(r.env.get("XDG_DATA_HOME"),"~/.local/share",t,r,o),De("~/.local/share",t,r,o)].some((s)=>F(e,ce(s,"devin"),["credentials.toml"])||lr(e,ce(s,"devin","mcp"),["oauth"]));case"secret.cli.devin.config":return[K(r.env.get("XDG_CONFIG_HOME"),"~/.config",t,r,o),De("~/.config",t,r,o)].some((s)=>F(e,ce(s,"devin"),["config.json"]));default:return!1}})?.id??null}var qp=new WeakMap;function K(e,t,n,r,o){let i=qp.get(o)??new Map;qp.set(o,i);let s=`${n}\x00${e??""}\x00${t}`,a=i.get(s);if(a!==void 0)return a;let l=De(e?.trim()?e:t,n,r,o);return i.set(s,l),l}function F(e,t,n){return n.some((r)=>gg(e,ce(t,r)))}function lr(e,t,n){return n.some((r)=>xn(j(e),j(ce(t,r))))}function mo(e,t,n,r,o){return gg(e,De(t,n,r,o))}function gg(e,t){return j(e)===j(t)}function ce(e,...t){return ut([e,...t].filter(Boolean).join("/"))}function MP(e,t,n,r,o,i){if(n.length===0)return!1;let s=j(po(e,t,o,i));return n.some((a)=>xn(s,j(po(a,r,o,i))))}function DP(e,t,n,r,o,i){if(n.length===0)return!1;let s=j(po(e,t,o,i));if(!s)return!1;let a=o.env.get("HOME")??o.home,l=a?ut(M(Ce(a),o.paths,i)):"",c=j(l),u=o.env.get("CC_SAFETY_NET_HOME"),f=j(u?ut(M(_e.resolve(Ce(u)),o.paths,i)):l&&ut(M(`${l}/.cc-safety-net`,o.paths,i)));if(f&&xn(s,f))return!1;return n.some((d)=>{let m=Ks(d);if(m&&_e.posix.basename(s)!==j(m.name))return!1;let p=j(po(m?.root??d,r,o,i));if(!p)return!1;if(c&&(c===p||c.startsWith(p.endsWith("/")?p:`${p}/`)))return!1;return xn(s,p)&&!(m&&s===p)})}function NP(e){let t=e.split("/");return t.some((n)=>TP.has(n))||kP.some(([n,r])=>t.some((o,i)=>o===n&&t[i+1]===r))}function LP(e,t){let n=e.lastIndexOf("."),r=n>0&&n<e.length-1?e.slice(n+1):"";if(r==="")return null;for(let o of Us)if(r===o.extension&&Lt(o.id,t))return o.id;for(let o of js)if(o.pattern.test(r)&&Lt(o.id,t))return o.id;return null}function j(e){return e.toLowerCase()}function Lt(e,t){return!t?.disabledRules?.includes(e)}function De(e,t,n,r){let{home:o,normalized:i}=Ul(e,n,r);if(!i)return"";if(!o)return i;let s=jl(i,o),a=_e.isAbsolute(s)?s:ut(_e.resolve(t,s)),l=ut(M(a,n.paths,r));if(!xn(l,o)){if(_e.isAbsolute(s))return l;return l===a?i:l}let c=l.slice(o.length);return c?`~${c}`:"~"}function Yp(e,t){return e===t||e.startsWith(`${t}/`)}function WP(e,t,n,r){let{home:o,normalized:i}=Ul(e,n,r);if(!i||!o)return"";let s=jl(i,o),a=_e.posix.normalize(_e.isAbsolute(s)?s:ut(_e.resolve(t,s))),l=ut(Ce(n.env.get("HOME")??n.home)),c=(d)=>process.platform==="win32"?d.toLowerCase():d,u=[o,l].find((d)=>d!==""&&xn(c(a),c(d)));if(u===void 0)return"";let f=a.slice(u.length);return f?`~${f}`:"~"}function po(e,t,n,r){let{home:o,normalized:i}=Ul(e,n,r);if(!i)return"";let s=o?jl(i,o):i;return ut(M(_e.isAbsolute(s)?s:_e.resolve(t,s),n.paths,r))}function Ul(e,t,n){let r=t.env.get("HOME")??t.home,o=r?ut(M(Ce(r),t.paths,n)):"",i=ut(Ce(FP(Tt(e,t))));return{home:o,normalized:i}}function FP(e){if(!e.trim().toLowerCase().startsWith("file:"))return e;try{return Zp.fileURLToPath(e)}catch{return e}}function jl(e,t){if(e==="~")return t;if(e.startsWith("~/"))return ce(t,e.slice(2));return e}function GP(e){if(process.platform==="win32")return!0;return _e.win32.parse(e).root.length>1}function ut(e){let t=e.trim(),n=(t.includes("\\")&&GP(t)?t.replace(/\\/g,"/"):t).replace(/\/{2,}/g,"/").replace(/^\.\//,"");if(n==="/")return n;return n.replace(/\/+$/g,"")}function xn(e,t){return e===t||e.startsWith(t.endsWith("/")?t:`${t}/`)}function xe(e){return e.split(/[\\/]/).pop()?.replace(/\.exe$/i,"")??e}class An extends Error{stage;evaluation;name="GuardEvaluationError";constructor(e,t,n){super(`CC Safety Net ${e} dependency failed`,{cause:n});this.stage=e;this.evaluation=t}}var zP={findPolicyMutation:Wp,findGitMetadataMutation:am,resolveGitMetadata:BP,loadPolicySnapshot:Ku,findSensitiveTarget:tg,analyzeCommand:Pp,getModes:ws},HP=/^(?:\S*\/)?(?:ba|da|z|k)?sh(?:\s+-[A-Za-z-]*)*$/;function hg(e,t){let n={...zP,...t.dependencies},r=jP(e),o=go(e)?e.command:r,i=Qt("policy-protection",o,()=>im(e)),s=Ie(i,"input-candidate"),a=Ie(i,"declared-command");if(go(e)&&e.command?.trim()&&a?.program.status==="limited")return{stage:"command-analysis",decision:{kind:"deny",reason:dt,ruleId:"analysis.recursion-limit",intent:"stop_and_explain",evidence:{command:e.command,segment:e.command}}};if(s?.program.status==="limited")return{stage:"command-validation",decision:{kind:"deny",reason:wm,ruleId:"analysis.structural-limit",intent:"stop_and_explain"}};let l=ye(),c=Qt("policy-protection",o,()=>n.resolveGitMetadata([e.context.executionCwd,e.context.configCwd],t.environment)),u=Qt("policy-protection",o,()=>n.findPolicyMutation(i,t.environment,l));if(u){let C=o??u.target;return{stage:"policy-protection",decision:{kind:"deny",reason:Lp,ruleId:"guard.policy-config",intent:"hard_stop",evidence:{command:C,segment:u.target}}}}let f=Qt("policy-protection",o,()=>Op(i,t.environment,l));if(f){let C=o??f.target;return{stage:"policy-protection",decision:{kind:"deny",reason:Ip,ruleId:"guard.policy-apply",intent:"hard_stop",evidence:{command:C,segment:f.target}}}}let d=Qt("policy-protection",o,()=>n.findGitMetadataMutation(i,c,t.environment,l));if(d){let C=o??d.target;return{stage:"policy-protection",decision:{kind:"deny",reason:Be,ruleId:"guard.git-metadata",intent:"hard_stop",evidence:{command:C,segment:d.target}}}}let m=Qt("config-load",o,()=>n.loadPolicySnapshot(t.environment,{...t.policyOptions,cwd:e.context.configCwd})),p=m.policy,g=n.getModes(p,t.environment.env),h={level:g.effectiveLevel,...$P(m)},y=p.secretProtection.enabled===!1?null:Qt("secret-protection",o,()=>n.findSensitiveTarget(i,p.secretProtection,t.environment,l,{strict:go(e)||s?.program.dialect==="powershell"?g.strict:void 0}));if(y){let C=o??y.target;return{stage:"secret-protection",...h,decision:{kind:"deny",reason:Xp,intent:"hard_stop",ruleId:y.ruleId,evidence:{command:C,segment:y.target}}}}if(!go(e))return{stage:"non-command",...h,decision:{kind:"allow"}};if(!e.command||e.command.trim()==="")return{...Vl("command-validation",o),...h};let b=Qt("command-analysis",o,()=>Tp(()=>n.analyzeCommand(e.command,{cwd:e.context.executionCwd,shell:e.route.shell,policySnapshot:m,environment:t.environment,protectedGitMetadata:c,effectiveCapabilities:g.capabilities,strict:g.strict,paranoidRm:g.paranoidRm,paranoidInterpreters:g.paranoidInterpreters,worktreeMode:g.worktreeMode,budget:l,...t.trace?{trace:t.trace}:{}},UP(i),i.store),e.command,t.trace));if(b.decision){let C=!g.strict&&(b.decision.ruleId==="raw-text.dangerous-command"||b.decision.reason===Jr&&!HP.test(b.decision.evidence?.segment??"")&&Ye(e.command)===null);return{stage:"command-analysis",...h,..."errorCode"in b?{errorCode:b.errorCode}:{},decision:C?{...b.decision,unverifiedByStandardMode:!0}:b.decision}}return{stage:"command-analysis",...h,decision:{kind:"allow"}}}function BP(e,t){let n=[...new Set(e.filter((r)=>typeof r==="string"&&r!==""))].flatMap((r)=>t.gitMetadata(r)??[]);if(n.length===0)return null;return Object.freeze({entries:Object.freeze([...new Set(n.flatMap((r)=>r.entries))]),markerFiles:Object.freeze([...new Set(n.flatMap((r)=>r.markerFiles))]),directories:Object.freeze([...new Set(n.flatMap((r)=>r.directories))]),hooksDirectories:Object.freeze([...new Set(n.flatMap((r)=>r.hooksDirectories))])})}function $P(e){if(e.state==="ready")return{};return{configFallback:{reason:e.reason}}}function UP(e){return Ie(e,"declared-command")?.program}function jP(e){try{return Ft(e.input)}catch(t){let n=go(e)?e.command:void 0;throw new An("policy-protection",Vl("policy-protection",t instanceof Ee?void 0:n,t),t)}}function Qt(e,t,n){try{return n()}catch(r){throw new An(e,Vl(e,r instanceof Ee?void 0:t,r),r)}}function Vl(e,t,n){let r=n instanceof L||n instanceof at;return{stage:e,decision:{kind:"deny",reason:r?cs:yr,ruleId:r?"analysis.limit":"analysis.failed-closed",intent:"stop_and_explain",...t?{evidence:{command:t,segment:t}}:{}}}}function go(e){return e.route.kind==="command"}var os=require("node:fs"),fr=require("node:path");var ue=require("node:fs"),mr=require("node:path");function yg(e,t={}){return Ko(ln(e,t),e.home).policy.audit.retention_days}var ql=86400000,VP=".last-prune",KP=/^\d{4}-\d{2}$/,qP=/^((\d{4}-\d{2})-\d{2})-.+\.jsonl$/,Cg=(e)=>Math.floor(e/ql);function Sg(e,t,n=()=>new Date){try{let r=n().getTime();if(!ue.statSync(t,{throwIfNoEntry:!1})?.isDirectory())return;let o=mr.join(t,VP),i=ue.statSync(o,{throwIfNoEntry:!1})?.mtimeMs;if(i!==void 0&&Cg(i)===Cg(r))return;let s=r-yg(e)*ql,a=new Date(r).toISOString().slice(0,7);for(let l of Kl(t)){if(l.isDirectory()){YP(mr.join(t,l.name),s,a);continue}if(l.isFile()&&l.name.endsWith(".jsonl"))ZP(mr.join(t,l.name),s)}ue.writeFileSync(o,"",{mode:384}),ue.utimesSync(o,r/1000,r/1000)}catch{}}function YP(e,t,n){for(let r of Kl(e)){if(!r.isDirectory()||!KP.test(r.name))continue;let o=mr.join(e,r.name);for(let i of Kl(o)){if(!i.isFile())continue;let s=qP.exec(i.name);if(!s||s[2]!==r.name)continue;let a=Date.parse(`${s[1]}T00:00:00.000Z`)+ql;if(!Number.isFinite(a)||a>=t)continue;vg(mr.join(o,i.name))}if(r.name!==n)bg(o)}bg(e)}function ZP(e,t){try{let n=ue.lstatSync(e);if(n.mtimeMs>=t)return;let r=ue.readFileSync(e,"utf-8").split(`
|
|
50
|
-
`).filter((o)=>o.trim()).map(XP);if(r.length===0)return;if(r.some((o)=>o===void 0||o>=t))return;if(ue.lstatSync(e).mtimeMs!==n.mtimeMs)return;vg(e)}catch{}}function XP(e){try{let t=JSON.parse(e).ts,n=typeof t==="string"?Date.parse(t):Number.NaN;return Number.isFinite(n)?n:void 0}catch{return}}function Kl(e){try{return ue.readdirSync(e,{withFileTypes:!0,encoding:"utf8"})}catch{return[]}}function vg(e){try{ue.unlinkSync(e)}catch{}}function bg(e){try{ue.rmdirSync(e)}catch{}}var JP="2.6.
|
|
50
|
+
`).filter((o)=>o.trim()).map(XP);if(r.length===0)return;if(r.some((o)=>o===void 0||o>=t))return;if(ue.lstatSync(e).mtimeMs!==n.mtimeMs)return;vg(e)}catch{}}function XP(e){try{let t=JSON.parse(e).ts,n=typeof t==="string"?Date.parse(t):Number.NaN;return Number.isFinite(n)?n:void 0}catch{return}}function Kl(e){try{return ue.readdirSync(e,{withFileTypes:!0,encoding:"utf8"})}catch{return[]}}function vg(e){try{ue.unlinkSync(e)}catch{}}function bg(e){try{ue.rmdirSync(e)}catch{}}var JP="2.6.6",QP=1e4,eT=2000,tT=256,nT=32768;function rT(e){let t=e.trim();if(!t)return null;let n=t.replace(/[^A-Za-z0-9_.-]+/g,"_");if(n=n.replace(/^[._-]+|[._-]+$/g,"").slice(0,128),!n||n==="."||n==="..")return null;return n}function oT(e){return(e??"").replace(/[^A-Za-z0-9]/g,"-").slice(0,180)||"no-cwd"}function Yl(e,t,n,r,o,i,s={}){let a=rT(t);if(!a)return;let l=sT(e);if(!l)return;try{let c=(s.now??(()=>new Date))().toISOString(),u=rs(St(n),s.failureStage?Number.POSITIVE_INFINITY:QP),f=rs(St(r),eT),d=s.toolName?rs(St(s.toolName),tT):void 0,m=i===null?void 0:rs(St(i),nT),p=fr.join(l,oT(m?.value??null),c.slice(0,7));os.mkdirSync(p,{recursive:!0,mode:448});let g=fr.join(p,`${c.slice(0,10)}-${a}.jsonl`),h={ts:c,id:(s.createId??Rs)(),v:JP,sessionId:a,decision:s.decision??"deny",agent:s.agent,shape:s.shape,level:s.level,configFallback:s.configFallback,toolName:d?.value,command:u.value,segment:f.value,...u.truncated||f.truncated||d?.truncated||m?.truncated?{truncated:!0}:{},reason:o,ruleId:s.ruleId,intent:s.intent,failureStage:s.failureStage,errorCode:s.errorCode,cwd:m?.value??null};os.appendFileSync(g,`${JSON.stringify(h)}
|
|
51
51
|
`,{encoding:"utf-8",mode:384}),Sg(e,l,s.now)}catch{}}function rs(e,t){return{value:e.slice(0,t),truncated:e.length>t}}function iT(e){let t=e.env.get("CC_SAFETY_NET_AUDIT_HOME");if(e.env.get("NODE_ENV")==="test"&&!t)return null;let n=t||e.home;return n&&fr.isAbsolute(n)?n:null}function sT(e){let t=iT(e);return t?fr.join(t,".cc-safety-net","logs"):null}function wg(e,t,n,r=!0,o){if(t.decision.kind==="allow"){if(!n||e.route.kind!=="command")return;let a=Eg(e);return{decision:"allow",command:a,segment:a,reason:"allowed",cwd:e.context.executionCwd,toolName:e.toolName,level:t.level,...t.configFallback?{configFallback:!0}:{}}}let i=t.decision.evidence,s=i?.command??(r?Eg(e):"");return{decision:"deny",command:s,segment:i?.segment??s,reason:t.decision.reason,cwd:e.context.executionCwd,toolName:e.toolName,level:t.level,...t.configFallback?{configFallback:!0}:{},ruleId:t.decision.ruleId,intent:t.decision.intent,failureStage:o?.stage,errorCode:o?.errorCode}}function Eg(e){return"command"in e?e.command??"":""}function Rg(e,t,n,r){if(!t)return;let o;try{o=n()}catch{return}if(typeof o!=="string"||!o.trim())return;Yl(e,o,t.command,t.segment,t.reason,t.cwd,{decision:t.decision,agent:r.agent,shape:r.shape,level:t.level,configFallback:t.configFallback,toolName:t.toolName,ruleId:t.ruleId,intent:t.intent,failureStage:t.failureStage,errorCode:t.errorCode})}function _g(e,t,n,r){let o;try{o=n()}catch{return}if(typeof o!=="string"||!o.trim())return;Yl(e,o,t.command??"",t.segment??t.command??"",t.reason,r.cwd??null,{decision:"deny",agent:r.agent,shape:r.shape,toolName:r.toolName??t.toolName,ruleId:t.ruleId,intent:t.intent})}function Ag(e,t,n){try{let r=hg(t,{environment:e,...n.guard});return xg(e,t,r,n),r}catch(r){if(!(r instanceof An))throw r;throw xg(e,t,r.evaluation,n,!(r.cause instanceof Ee),{stage:r.stage,errorCode:aT(r.cause)}),r}}function xg(e,t,n,r,o=!0,i){Rg(e,wg(t,n,r.guard?.auditAllowed??!1,o,i),r.audit.getSessionId,{agent:r.audit.agent,shape:r.audit.shape})}function aT(e){if(e instanceof L)return Y[e.kind].errorCode;if(e instanceof Ee)return"tool-input-limit";if(e instanceof at)return"structural-shell-syntax-limit";return"unexpected-error"}var Wt=(e,t,n,r,o)=>Rc(e.cwd,t,n,r,o.paths,process.cwd()),is=(e,t,n)=>(r,o,i,s,a)=>{let l=Wt(r,o,i,s,a);if(!l)return null;let c=r.tool_input;if(!t.has(i)||!c||!Object.hasOwn(c,e))return l;let u=c[e];if(n?.emptyMeansSessionCwd&&u==="")return l;if(typeof u!=="string"||u.trim()==="")return we(s,o,i),null;let f=n?.allowOutsideSessionCwd?Cs(u,l.configCwd,a.paths):Et(u,[l.configCwd],a.paths);if(f)return{configCwd:l.configCwd,executionCwd:f};return Ke(s,o,i,{directory:"requested",problem:Rt(u,l.configCwd,a.paths),cwd:u}),null};function lT(e,t){console.log(JSON.stringify(e(tc(t))))}async function cT(e){let t;try{t=(await wc(process.stdin)).trim()}catch{e({reason:"Failed to parse hook input JSON."});return}if(!t){e({reason:"Missing hook input JSON."});return}return Ro(t,e,"Failed to parse hook input JSON.")}async function uT(e){let t=Nc(),n=await cT(e.outputDeny);if(n===void 0)return;if(!n||typeof n!=="object"||Array.isArray(n)){we(e.outputDeny);return}if(!e.isSupported(n))return;let r=e.getAgent?.(n,t)??e.agent,o=e.agent===r?void 0:e.agent,i=pT(n),s=(p,g)=>{_g(t,p,()=>e.getSessionId(n),{agent:r,shape:o,toolName:g,cwd:p.cwd??i}),e.outputDeny(p)},a=e.getToolName(n);if(typeof a!=="string"||a.trim()===""){we((p)=>s(p),fT(n));return}let l=a,c=(p)=>s(p,l),u;try{u=e.getToolInput(n,l,c,t)}catch(p){if(!(p instanceof Ee))throw p;we(c,void 0,l);return}if(!u.ok)return;let f=e.getContext(n,u.input,l,c,t);if(!f)return;let d;try{d=Ft(u.input)}catch(p){if(!(p instanceof Ee))throw p;we(c,void 0,l);return}let m=zc(l,u.input,u.route,f,d??null);try{let p=Ag(t,m,{guard:{auditAllowed:Gc(t.env),dependencies:e.guardDependencies},audit:{agent:r,shape:o,getSessionId:()=>e.getSessionId(n)}}),g=us(p,{includeEvidence:!0,toolName:p.stage==="command-analysis"?void 0:l});if(g){if(g.unverifiedByStandardMode&&e.outputAsk&&e.canPromptPerson?.(n)){e.outputAsk(g);return}e.outputDeny(g);return}e.outputAllow?.()}catch(p){if(!(p instanceof An))throw p;dT(p,t.env);let g=us(p.evaluation,{includeEvidence:!0,toolName:p.evaluation.stage==="command-analysis"?void 0:l});if(g)e.outputDeny(g);return}}function dT(e,t){if(!_t(ne.debug,t))return;console.error(`CC Safety Net debug: ${mT(e.stage)}: ${rc(e.cause)}`)}function mT(e){if(e==="policy-protection")return"hook policy protection failed";if(e==="config-load")return"hook config loading failed";if(e==="secret-protection")return"hook secret protection failed";return"hook analysis failed"}function fT(e){if(!e||typeof e!=="object"||Array.isArray(e))return;if(Object.hasOwn(e,"tool_input"))return e.tool_input;let t=e.toolCall;if(t&&typeof t==="object"&&!Array.isArray(t))return t.args;return}function pT(e){if(!e||typeof e!=="object"||Array.isArray(e))return null;let t=e.cwd;if(typeof t==="string")return t;let n=e.toolCall;if(!n||typeof n!=="object"||Array.isArray(n))return null;let r=n.args;if(!r||typeof r!=="object"||Array.isArray(r))return null;let o=r.Cwd;return typeof o==="string"?o:null}async function ve(e){let t=(s)=>lT(e.createDenyOutput,s),n=e.createAskOutput,r=n?(s)=>console.log(JSON.stringify(n(nc(s)))):void 0,o=e.createAllowOutput,i=o?()=>console.log(JSON.stringify(o())):void 0;try{await uT({...e,outputDeny:t,outputAsk:r,outputAllow:i})}catch(s){console.error("CC Safety Net error:",s),t(kn())}}var gT=new Map([["run_command","auto"]]),hT=new Set(["absolutepath","directorypath","file_path","filepath","path","searchdirectory","searchpath","target_file","targetfile"]);function Pg(e){return Q(e,gT)}async function Tg(){await ve({agent:"antigravity-cli",createDenyOutput:(e)=>({decision:"deny",reason:e}),isSupported:()=>!0,getToolName:(e)=>e.toolCall?.name,getToolInput:(e,t)=>({ok:!0,input:ST(e.toolCall?.args,t),route:Pg(t)}),getContext:yT,getSessionId:(e)=>e.conversationId})}function yT(e,t,n,r,o){let i=bT(e);if(!i[0])return en(r,t,n),null;let s=i.flatMap((u)=>{let f=wt([u],o.paths);return f?[f]:[]});if(!s[0])return en(r,t,n,{directory:"session",problem:"unusable",cwd:i[0]}),null;if(n!=="run_command"){let u;try{u=CT(t,n,s,o.paths)}catch(f){if(f instanceof Ee)return en(r,void 0,n),null;if(!(f instanceof L))throw f;return en(r,t,n),null}if(!u)return en(r,t,n),null;return{configCwd:u,executionCwd:u}}let a=e.toolCall?.args;if(!a||!Object.hasOwn(a,"Cwd"))return{configCwd:s[0],executionCwd:s[0]};let l=a.Cwd;if(typeof l!=="string"||l.trim()==="")return en(r,t,n),null;let c=Et(l,s,o.paths);if(c){let u=kg(c,s);if(!u)return en(r,t,n),null;return{configCwd:u,executionCwd:c}}return en(r,t,n,{directory:"requested",problem:Rt(l,s[0],o.paths),cwd:l}),null}function CT(e,t,n,r){let o=Pg(t),i=[...vo(e,hT),...o.kind==="patch"?Eo(e):[]].filter(Zl.isAbsolute),s=ye(),a=new Set(i.flatMap((l)=>{let c=kg(M(l,r,s),n);return c?[c]:[]}));if(a.size>1)return null;return[...a][0]??n[0]??null}function kg(e,t){return t.filter((n)=>vr(e,n)).reduce((n,r)=>r.length>n.length?r:n,"")||null}function en(e,t,n,r){let o=t&&typeof t==="object"?t.command:void 0,i={command:typeof o==="string"?o:void 0,toolName:n};e(r?yo(r,i):kn(i))}function bT(e){if(e.workspacePaths===void 0)return[process.cwd()];return Array.isArray(e.workspacePaths)?e.workspacePaths.filter((t)=>typeof t==="string"&&t.trim()!==""):[]}function ST(e,t){if(!e)return;if(t!=="run_command")return e;return{...e,command:typeof e.CommandLine==="string"&&e.CommandLine!==""?e.CommandLine:void 0}}var vT=["npx","--offline","--no-install","@deepseek-ai/dsh","--version"];var ss=[{id:"antigravity-cli",displayName:"Antigravity CLI",doctorOrder:3,runtime:{order:1,flags:["-ac","--agy-cli"],description:"Run as Antigravity CLI PreToolUse hook",legacyTopLevelFlags:[]},install:{order:2,flag:"--agy-cli",artifactKind:"hook config",probeCommand:["agy","--version"]}},{id:"claude-code",displayName:"Claude Code",doctorOrder:1,runtime:{order:2,displayName:"Coding CLI",flags:["-cc","--coding-cli"],legacyFlags:["--claude-code"],description:"Run as Coding CLI PreToolUse hook",legacyTopLevelFlags:["-cc","--claude-code"]},install:{order:3,flag:"--claude-code",artifactKind:"plugin",probeCommand:["claude","--version"]}},{id:"codex",displayName:"Codex",doctorOrder:4,runtime:{order:3,flags:["-cx","--codex"],description:"Run as a Codex PreToolUse hook",legacyTopLevelFlags:[]},install:{order:4,flag:"--codex",artifactKind:"plugin",probeCommand:["codex","--version"]}},{id:"copilot-cli",displayName:"GitHub Copilot CLI",doctorOrder:10,runtime:{order:8,flags:["-cp","--copilot-cli"],description:"Run as GitHub Copilot CLI PreToolUse hook",legacyTopLevelFlags:["-cp","--copilot-cli"]},install:{order:10,flag:"--copilot-cli",artifactKind:"plugin",probeCommand:["copilot","--binary-version"]}},{id:"gemini-cli",displayName:"Gemini CLI",doctorOrder:9,runtime:{order:7,flags:["-gc","--gemini-cli"],description:"Run as Gemini CLI BeforeTool hook",legacyTopLevelFlags:["-gc","--gemini-cli"]},install:{order:9,flag:"--gemini-cli",artifactKind:"extension",probeCommand:["gemini","--version"]}},{id:"grok-build",displayName:"Grok Build",doctorOrder:11,runtime:{order:9,flags:["-gb","--grok-build"],description:"Run as Grok Build PreToolUse hook",legacyTopLevelFlags:[]},install:{order:11,flag:"--grok-build",artifactKind:"hook config",probeCommand:["grok","--version"]}},{id:"hermes-agent",displayName:"Hermes Agent",doctorOrder:12,runtime:{order:10,flags:["-ha","--hermes-agent"],description:"Run as Hermes Agent pre_tool_call hook",legacyTopLevelFlags:[]},install:{order:12,flag:"--hermes-agent",artifactKind:"plugin",probeCommand:["hermes","--version"]}},{id:"kimi-code",displayName:"Kimi Code",doctorOrder:13,runtime:{order:11,flags:["-kc","--kimi-code"],description:"Run as Kimi Code PreToolUse hook",legacyTopLevelFlags:[]},install:{order:13,flag:"--kimi-code",artifactKind:"hook config",probeCommand:["kimi","--version"]}},{id:"openclaw",displayName:"OpenClaw",doctorOrder:14,install:{order:14,flag:"--openclaw",artifactKind:"plugin",probeCommand:["openclaw","--version"]}},{id:"opencode",displayName:"OpenCode",doctorOrder:15,install:{order:15,flag:"--opencode",artifactKind:"plugin",probeCommand:["opencode","--version"]}},{id:"pi",displayName:"Pi",doctorOrder:16,install:{order:16,flag:"--pi",artifactKind:"package",probeCommand:["pi","--version"]}},{id:"cursor",displayName:"Cursor",doctorOrder:5,runtime:{order:4,flags:["-cu","--cursor"],description:"Run as Cursor preToolUse hook",legacyTopLevelFlags:[]},install:{order:5,flag:"--cursor",artifactKind:"hook config",probeCommand:["cursor","--version"]}},{id:"deepseek-harness",displayName:"DeepSeek Harness",doctorOrder:6,install:{order:6,flag:"--deepseek-harness",artifactKind:"package",probeCommand:vT}},{id:"devin",displayName:"Devin CLI",doctorOrder:7,runtime:{order:5,flags:["-dv","--devin"],description:"Run as Devin CLI PreToolUse hook",legacyTopLevelFlags:[]},install:{order:7,flag:"--devin",artifactKind:"hook config",probeCommand:["devin","--version"]}},{id:"droid",displayName:"Factory Droid",doctorOrder:8,runtime:{order:6,flags:["-fd","--droid"],description:"Run as Factory Droid PreToolUse hook",legacyTopLevelFlags:[]},install:{order:8,flag:"--droid",artifactKind:"hook config",probeCommand:["droid","--version"]}},{id:"amp",displayName:"Amp Code",doctorOrder:2,install:{order:1,flag:"--amp",artifactKind:"plugin",probeCommand:["amp","--version"]}}],WW=ss.slice().sort((e,t)=>e.doctorOrder-t.doctorOrder).map((e)=>e.id),Ig=ss.filter((e)=>("runtime"in e)).slice().sort((e,t)=>e.runtime.order-t.runtime.order).map((e)=>({id:e.id,displayName:"displayName"in e.runtime?e.runtime.displayName:e.displayName,flags:e.runtime.flags,legacyFlags:"legacyFlags"in e.runtime?e.runtime.legacyFlags:[],description:e.runtime.description,legacyTopLevelFlags:e.runtime.legacyTopLevelFlags})),FW=ss.slice().sort((e,t)=>e.install.order-t.install.order).map((e)=>({id:e.id,...e.install})).map(({order:e,...t})=>t),GW=Object.fromEntries(ss.map((e)=>[e.id,e.displayName]));var Pn=require("node:path");function Og(e,t){if(e!==void 0&&e!==null&&typeof e!=="string")return"unknown";if(typeof e==="string"&&!Pn.isAbsolute(e))return"unknown";try{let n=ye(),r=typeof e==="string"&&e?M(e,t.paths,n):void 0,o=t.home,i=[["codex",t.env.get("CODEX_HOME")||Pn.join(o,".codex")],["copilot-cli",t.env.get("COPILOT_HOME")||Pn.join(o,".copilot")],["claude-code",t.env.get("CLAUDE_CONFIG_DIR")||Pn.join(o,".claude")]],s=r?i.flatMap(([a,l])=>{if(!Pn.isAbsolute(l))return[];return vr(r,M(l,t.paths,n))?[a]:[]}):[];if(s.length===1)return s[0]??"unknown";if(s.length>1)return"unknown"}catch{return"unknown"}if(t.env.get("COPILOT_CLI")==="1")return"copilot-cli";if(t.env.get("CLAUDECODE")==="1"||Boolean(t.env.get("CLAUDE_CODE_ENTRYPOINT")))return"claude-code";return"unknown"}var pr="PreToolUse",Mg="BeforeTool",Dg="pre_tool_call";async function tn(e){await ve({agent:e.agent,...e.getAgent?{getAgent:e.getAgent}:{},createDenyOutput:(t)=>({hookSpecificOutput:{hookEventName:pr,permissionDecision:"deny",permissionDecisionReason:t}}),...e.canPromptPerson?{canPromptPerson:e.canPromptPerson,createAskOutput:(t)=>({hookSpecificOutput:{hookEventName:pr,permissionDecision:"ask",permissionDecisionReason:t}})}:{},isSupported:(t)=>t.hook_event_name===pr,getToolName:(t)=>t.tool_name,getToolInput:(t,n,r,o)=>({ok:!0,input:t.tool_input,route:e.getToolRoute(n,t.tool_input,o)}),getContext:e.getContext??Wt,getSessionId:(t)=>t.session_id})}var ET=new Map([["Bash","posix"],["PowerShell","powershell"],["Monitor","posix"]]);function wT(e,t,n){if(e==="Bash"&&n.env.get("COPILOT_CLI")==="1")return{kind:"command",shell:"auto"};return e==="Monitor"&&t?.command===void 0?Q(e,new Map):Q(e,ET)}async function Ng(){await tn({agent:"claude-code",getAgent:(e,t)=>Og(e.transcript_path,t),canPromptPerson:(e)=>["default","acceptEdits","plan"].includes(e.permission_mode??""),getToolRoute:wT})}var RT=new Map([["Bash","auto"]]);async function Lg(){await tn({agent:"codex",getToolRoute:(e)=>Q(e,RT)})}var _T=new Map([["bash","auto"],["Bash","auto"],["powershell","powershell"],["PowerShell","powershell"]]);function xT(e){return Q(e,_T)}async function Wg(){await ve({agent:"copilot-cli",createDenyOutput:(e)=>({permissionDecision:"deny",permissionDecisionReason:e}),isSupported:()=>!0,getToolName:(e)=>e.toolName,getToolInput:(e,t,n)=>{let r=xT(t);if(typeof e.toolArgs==="object"&&e.toolArgs!==null)return{ok:!0,input:e.toolArgs,route:r};if(typeof e.toolArgs!=="string")return n({reason:"Failed to parse toolArgs JSON."}),{ok:!1};if(r.kind==="patch"&&e.toolArgs.trimStart().startsWith("*** Begin Patch"))return{ok:!0,input:e.toolArgs,route:r};let i=Ro(e.toolArgs,n,"Failed to parse toolArgs JSON.");if(i===void 0)return{ok:!1};return{ok:!0,input:i,route:r}},getContext:Wt,getSessionId:(e)=>typeof e.sessionId==="string"&&e.sessionId.trim()?e.sessionId:void 0})}var AT=new Map([["Shell","auto"]]);function PT(e){return Q(e,AT)}async function Fg(){await ve({agent:"cursor",createDenyOutput:(e)=>({permission:"deny",user_message:e,agent_message:e}),createAllowOutput:()=>({permission:"allow"}),isSupported:()=>!0,getToolName:(e)=>e.tool_name,getToolInput:(e,t)=>({ok:!0,input:e.tool_input,route:PT(t)}),getContext:TT,getSessionId:(e)=>e.conversation_id})}function TT(e,t,n,r,o){let i=kT(e);if(!i[0])return we(r,t,n),null;let s=i.flatMap((d)=>{let m=wt([d],o.paths);return m?[m]:[]});if(!s[0])return Ke(r,t,n,{directory:"session",problem:"unusable",cwd:i[0]}),null;let a=IT(e.cwd),l=Et(a,s,o.paths);if(!l)return Ke(r,t,n,{directory:"session",problem:Rt(a,s[0],o.paths),cwd:a}),null;if(t===null||typeof t!=="object"||Array.isArray(t))return{configCwd:l,executionCwd:l};if(!Object.hasOwn(t,"working_directory"))return{configCwd:l,executionCwd:l};let c=t.working_directory;if(typeof c!=="string"||c.trim()==="")return we(r,t,n),null;let u=Cr(c),f=Et(u,s,o.paths);if(!f)return Ke(r,t,n,{directory:"requested",problem:Rt(u,s[0],o.paths),cwd:u}),null;return{configCwd:l,executionCwd:f}}function kT(e){if(e.workspace_roots===void 0)return typeof e.cwd==="string"&&e.cwd.trim()!==""?[Cr(e.cwd)]:[];if(!Array.isArray(e.workspace_roots))return[];return e.workspace_roots.filter((t)=>typeof t==="string"&&t.trim()!=="").map((t)=>Cr(t))}function IT(e){return typeof e==="string"&&e.trim()!==""?Cr(e):"."}var OT=new Map([["exec","auto"]]);function MT(e,t){if(e!=="write_to_process"||typeof t!=="object"||t===null)return;let n=t.text_input;return typeof n==="string"&&n!==""?n:void 0}async function Gg(){await ve({agent:"devin",createDenyOutput:(e)=>({decision:"block",reason:e}),isSupported:(e)=>e.hook_event_name===pr,getToolName:(e)=>e.tool_name,getToolInput:(e,t)=>{let n=MT(t,e.tool_input);if(n===void 0)return{ok:!0,input:e.tool_input,route:Q(t,OT)};return{ok:!0,input:{command:n},route:{kind:"command",shell:"auto"}}},getContext:(e,...t)=>Wt({},...t),getSessionId:(e)=>typeof e.session_id==="string"&&e.session_id!==""?e.session_id:void 0})}var DT=new Map([["Execute","auto"]]);async function zg(){await tn({agent:"droid",getToolRoute:(e)=>Q(e,DT)})}var Hg=new Map([["run_shell_command","auto"]]);function NT(e){return Q(e,Hg)}async function Bg(){await ve({agent:"gemini-cli",createDenyOutput:(e)=>({decision:"deny",reason:e,systemMessage:e}),isSupported:(e)=>e.hook_event_name===Mg,getToolName:(e)=>e.tool_name,getToolInput:(e,t)=>({ok:!0,input:e.tool_input,route:NT(t)}),getContext:is("dir_path",Hg,{emptyMeansSessionCwd:!0,allowOutsideSessionCwd:!0}),getSessionId:(e)=>e.session_id})}var LT=new Map([["run_terminal_command","auto"],["monitor","auto"]]);function WT(e){return Q(e,LT)}async function $g(){await ve({agent:"grok-build",createDenyOutput:(e)=>({decision:"deny",reason:e}),createAllowOutput:()=>({decision:"allow"}),isSupported:()=>!0,getToolName:(e)=>e.toolName,getToolInput:(e,t,n)=>{if(e.toolInputTruncated===!0)return we(n,e.toolInput,t),{ok:!1};return{ok:!0,input:e.toolInput,route:WT(t)}},getContext:FT,getSessionId:(e)=>e.sessionId})}function FT(e,t,n,r,o){let i=GT(e);if(!i)return we(r,t,n),null;let s=wt([i],o.paths);if(!s)return Ke(r,t,n,{directory:"session",problem:"unusable",cwd:i}),null;let a=zT(e.cwd),l=Et(a,[s],o.paths);if(!l)return Ke(r,t,n,{directory:"session",problem:Rt(a,s,o.paths),cwd:a}),null;return{configCwd:l,executionCwd:l}}function GT(e){let t=e.workspaceRoot===void 0?e.cwd:e.workspaceRoot;return typeof t==="string"&&t.trim()!==""?t:void 0}function zT(e){return typeof e==="string"&&e.trim()!==""?e:"."}var Ug=require("node:path");var HT=new Map([["terminal","posix"]]);async function jg(){await ve({agent:"hermes-agent",createDenyOutput:(e)=>({action:"block",message:e}),isSupported:(e)=>e.hook_event_name===Dg,getToolName:(e)=>e.tool_name,getToolInput:(e,t)=>({ok:!0,input:e.tool_input,route:Q(t,HT)}),getContext:BT,getSessionId:(e)=>e.session_id})}function BT(e,t,n,r,o){let i=Wt(e,t,n,r,o);if(!i)return null;if(!t||typeof t!=="object"||Array.isArray(t))return i;if(!Object.hasOwn(t,"workdir"))return i;let s=t.workdir;if(typeof s!=="string"||s.trim()==="")return we(r,t,n),null;let a=wt([Ug.resolve(i.configCwd,s)],o.paths);if(!a)return Ke(r,t,n,{directory:"requested",problem:"unusable",cwd:s}),null;return{...i,executionCwd:a}}var Vg=new Map([["Bash","posix"]]);function $T(e){return Q(e,Vg)}async function Kg(){await tn({agent:"kimi-code",getToolRoute:$T,getContext:is("cwd",Vg)})}var UT={"antigravity-cli":Tg,"claude-code":Ng,codex:Lg,"copilot-cli":Wg,cursor:Fg,devin:Gg,droid:zg,"gemini-cli":Bg,"grok-build":$g,"hermes-agent":jg,"kimi-code":Kg},Xl=Ig.map((e)=>({...e,run:UT[e.id]}));function qg(e){let t=ho({label:"hook",booleans:Object.fromEntries(Xl.map((r)=>[r.id,[...r.flags,...r.legacyFlags]]))},e);if(t.errors.length>0)return;let n=Xl.filter((r)=>t.flags[r.id]);return n.length===1?n[0]:void 0}function Yg(e){return Xl.find((t)=>t.legacyTopLevelFlags.some((n)=>n===e))}async function jT(){let e=process.argv.slice(2),t=e[0],n=ho({label:"cc-safety-net",booleans:{version:["-V","--version"]},positionals:"list"},e);if(!n.help&&!n.flags.version){if(t?.toLowerCase()==="hook"){let i=qg(e.slice(1));if(i){await i.run();return}}let o=Yg(t);if(o){await o.run();return}}let r=await import("../cli.js");await r.runCli(e)}jT().catch((e)=>{console.error("CC Safety Net error:",e),process.exit(1)});
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{a,s,J,f,Ie,l,Me,b,p,
|
|
2
|
-
`).filter((o)=>o.trim()).map(te);if(n.length===0)return;if(n.some((o)=>o===void 0||o>=e))return;if(F(t).mtimeMs!==r.mtimeMs)return;O(t)}catch{}}function te(t){try{let e=JSON.parse(t).ts,r=typeof e==="string"?Date.parse(e):Number.NaN;return Number.isFinite(r)?r:void 0}catch{return}}function v(t){try{return P(t,{withFileTypes:!0,encoding:"utf8"})}catch{return[]}}function O(t){try{
|
|
3
|
-
`,{encoding:"utf-8",mode:384}),K(t,u,i.now)}catch{}}function g(t,e){return{value:t.slice(0,e),truncated:t.length>e}}function We(t){let e=t.env.get("CC_SAFETY_NET_AUDIT_HOME");if(t.env.get("NODE_ENV")==="test"&&!e)return null;let r=e||t.home;return r&&ie(r)?r:null}function U(t){let e=We(t);return e?S(e,".cc-safety-net","logs"):null}function k(t,e,r,n=!0,o){if(e.decision.kind==="allow"){if(!r||t.route.kind!=="command")return;let d=T(t);return{decision:"allow",command:d,segment:d,reason:"allowed",cwd:t.context.executionCwd,toolName:t.toolName,level:e.level,...e.configFallback?{configFallback:!0}:{}}}let c=e.decision.evidence,i=c?.command??(n?T(t):"");return{decision:"deny",command:i,segment:c?.segment??i,reason:e.decision.reason,cwd:t.context.executionCwd,toolName:t.toolName,level:e.level,...e.configFallback?{configFallback:!0}:{},ruleId:e.decision.ruleId,intent:e.decision.intent,failureStage:o?.stage,errorCode:o?.errorCode}}function T(t){return"command"in t?t.command??"":""}function x(t,e,r,n){if(!e)return;let o;try{o=r()}catch{return}if(typeof o!=="string"||!o.trim())return;I(t,o,e.command,e.segment,e.reason,e.cwd,{decision:e.decision,agent:n.agent,shape:n.shape,level:e.level,configFallback:e.configFallback,toolName:e.toolName,ruleId:e.ruleId,intent:e.intent,failureStage:e.failureStage,errorCode:e.errorCode})}function we(t,e,r,n){let o;try{o=r()}catch{return}if(typeof o!=="string"||!o.trim())return;I(t,o,e.command??"",e.segment??e.command??"",e.reason,n.cwd??null,{decision:"deny",agent:n.agent,shape:n.shape,toolName:n.toolName??e.toolName,ruleId:e.ruleId,intent:e.intent})}function G(t,e,r){try{let n=
|
|
1
|
+
import{a,s,J,f,Ie,l,Me,b,p,q}from"./index-t1vhmn90.js";import{appendFileSync as ne,mkdirSync as re}from"node:fs";import{isAbsolute as ie,join as S}from"node:path";import{lstatSync as F,readdirSync as P,readFileSync as j,rmdirSync as V,statSync as D,unlinkSync as B,utimesSync as X,writeFileSync as z}from"node:fs";import{join as m}from"node:path";function oe(t,e={}){return Me(l(t,e),t.home).policy.audit.retention_days}var A=86400000,Y=".last-prune",Z=/^\d{4}-\d{2}$/,Q=/^((\d{4}-\d{2})-\d{2})-.+\.jsonl$/,C=(t)=>Math.floor(t/A);function K(t,e,r=()=>new Date){try{let n=r().getTime();if(!D(e,{throwIfNoEntry:!1})?.isDirectory())return;let o=m(e,Y),c=D(o,{throwIfNoEntry:!1})?.mtimeMs;if(c!==void 0&&C(c)===C(n))return;let i=n-oe(t)*A,d=new Date(n).toISOString().slice(0,7);for(let u of v(e)){if(u.isDirectory()){W(m(e,u.name),i,d);continue}if(u.isFile()&&u.name.endsWith(".jsonl"))ee(m(e,u.name),i)}z(o,"",{mode:384}),X(o,n/1000,n/1000)}catch{}}function W(t,e,r){for(let n of v(t)){if(!n.isDirectory()||!Z.test(n.name))continue;let o=m(t,n.name);for(let c of v(o)){if(!c.isFile())continue;let i=Q.exec(c.name);if(!i||i[2]!==n.name)continue;let d=Date.parse(`${i[1]}T00:00:00.000Z`)+A;if(!Number.isFinite(d)||d>=e)continue;O(m(o,c.name))}if(n.name!==r)L(o)}L(t)}function ee(t,e){try{let r=F(t);if(r.mtimeMs>=e)return;let n=j(t,"utf-8").split(`
|
|
2
|
+
`).filter((o)=>o.trim()).map(te);if(n.length===0)return;if(n.some((o)=>o===void 0||o>=e))return;if(F(t).mtimeMs!==r.mtimeMs)return;O(t)}catch{}}function te(t){try{let e=JSON.parse(t).ts,r=typeof e==="string"?Date.parse(e):Number.NaN;return Number.isFinite(r)?r:void 0}catch{return}}function v(t){try{return P(t,{withFileTypes:!0,encoding:"utf8"})}catch{return[]}}function O(t){try{B(t)}catch{}}function L(t){try{V(t)}catch{}}var ae="2.6.6",ce=1e4,de=2000,ue=256,se=32768;function le(t){let e=t.trim();if(!e)return null;let r=e.replace(/[^A-Za-z0-9_.-]+/g,"_");if(r=r.replace(/^[._-]+|[._-]+$/g,"").slice(0,128),!r||r==="."||r==="..")return null;return r}function me(t){return(t??"").replace(/[^A-Za-z0-9]/g,"-").slice(0,180)||"no-cwd"}function I(t,e,r,n,o,c,i={}){let d=le(e);if(!d)return;let u=U(t);if(!u)return;try{let y=(i.now??(()=>new Date))().toISOString(),_=g(J(r),i.failureStage?Number.POSITIVE_INFINITY:ce),N=g(J(n),de),h=i.toolName?g(J(i.toolName),ue):void 0,E=c===null?void 0:g(J(c),se),w=S(u,me(E?.value??null),y.slice(0,7));re(w,{recursive:!0,mode:448});let R=S(w,`${y.slice(0,10)}-${d}.jsonl`),H={ts:y,id:(i.createId??Ie)(),v:ae,sessionId:d,decision:i.decision??"deny",agent:i.agent,shape:i.shape,level:i.level,configFallback:i.configFallback,toolName:h?.value,command:_.value,segment:N.value,..._.truncated||N.truncated||h?.truncated||E?.truncated?{truncated:!0}:{},reason:o,ruleId:i.ruleId,intent:i.intent,failureStage:i.failureStage,errorCode:i.errorCode,cwd:E?.value??null};ne(R,`${JSON.stringify(H)}
|
|
3
|
+
`,{encoding:"utf-8",mode:384}),K(t,u,i.now)}catch{}}function g(t,e){return{value:t.slice(0,e),truncated:t.length>e}}function We(t){let e=t.env.get("CC_SAFETY_NET_AUDIT_HOME");if(t.env.get("NODE_ENV")==="test"&&!e)return null;let r=e||t.home;return r&&ie(r)?r:null}function U(t){let e=We(t);return e?S(e,".cc-safety-net","logs"):null}function k(t,e,r,n=!0,o){if(e.decision.kind==="allow"){if(!r||t.route.kind!=="command")return;let d=T(t);return{decision:"allow",command:d,segment:d,reason:"allowed",cwd:t.context.executionCwd,toolName:t.toolName,level:e.level,...e.configFallback?{configFallback:!0}:{}}}let c=e.decision.evidence,i=c?.command??(n?T(t):"");return{decision:"deny",command:i,segment:c?.segment??i,reason:e.decision.reason,cwd:t.context.executionCwd,toolName:t.toolName,level:e.level,...e.configFallback?{configFallback:!0}:{},ruleId:e.decision.ruleId,intent:e.decision.intent,failureStage:o?.stage,errorCode:o?.errorCode}}function T(t){return"command"in t?t.command??"":""}function x(t,e,r,n){if(!e)return;let o;try{o=r()}catch{return}if(typeof o!=="string"||!o.trim())return;I(t,o,e.command,e.segment,e.reason,e.cwd,{decision:e.decision,agent:n.agent,shape:n.shape,level:e.level,configFallback:e.configFallback,toolName:e.toolName,ruleId:e.ruleId,intent:e.intent,failureStage:e.failureStage,errorCode:e.errorCode})}function we(t,e,r,n){let o;try{o=r()}catch{return}if(typeof o!=="string"||!o.trim())return;I(t,o,e.command??"",e.segment??e.command??"",e.reason,n.cwd??null,{decision:"deny",agent:n.agent,shape:n.shape,toolName:n.toolName??e.toolName,ruleId:e.ruleId,intent:e.intent})}function G(t,e,r){try{let n=q(e,{environment:t,...r.guard});return M(t,e,n,r),n}catch(n){if(!(n instanceof p))throw n;throw M(t,e,n.evaluation,r,!(n.cause instanceof f),{stage:n.stage,errorCode:fe(n.cause)}),n}}function M(t,e,r,n,o=!0,c){x(t,k(e,r,n.guard?.auditAllowed??!1,o,c),n.audit.getSessionId,{agent:n.audit.agent,shape:n.audit.shape})}function fe(t){if(t instanceof s)return a[t.kind].errorCode;if(t instanceof f)return"tool-input-limit";if(t instanceof b)return"structural-shell-syntax-limit";return"unexpected-error"}
|
|
4
4
|
export{oe,K,We,U,we,G};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{Ce,O,D,rt,c,n,Ee,v,p}from"./index-
|
|
1
|
+
import{Ce,O,D,rt,c,n,Ee,v,p}from"./index-t1vhmn90.js";import{we,G}from"./index-21maj91f.js";function j(t,o={}){return{malformed:!0,denial:O(o),cwd:t}}function de(t,o){return{malformed:!0,denial:D(t,o),cwd:t.cwd}}function Se(t,o={}){return(e,i)=>{try{return g(e,i,t,o)}catch(a){return console.error("CC Safety Net error:",a),t.block(O())}}}function g(t,o,e,i){let a=c();if(e.cancelled?.(o))return e.block(O());let l=e.extract(t,o,a.paths);if(!l)return e.allow;let d=()=>e.getSessionId(t,o);if("malformed"in l)return we(a,l.denial,d,{agent:e.agent,toolName:l.denial.toolName,cwd:l.cwd}),e.block(l.denial);let u=(r,m)=>{let s=Ce(r,{includeEvidence:m});return s?e.block(s):e.allow};try{let r=G(a,l,{guard:{auditAllowed:Ee(a.env),policyOptions:i.policyOptions,dependencies:i.guardDependencies},audit:{agent:e.agent,getSessionId:d}});return u(r,!0)}catch(r){if(!(r instanceof p))throw r;if(v(n.debug,a.env))console.error(`CC Safety Net debug: ${e.debugLabel} analysis failed: ${rt(r.cause)}`);return u(r.evaluation,e.includeEvidenceOnError(l))}}
|
|
2
2
|
export{j,de,Se};
|