cc-safety-net 2.5.1 → 2.5.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +11 -134
- package/dist/amp/cc-safety-net/index.ts +42 -42
- package/dist/api.d.ts +1 -1
- package/dist/api.js +1 -1
- package/dist/bin/hook.js +40 -40
- package/dist/chunks/index-0naqmp5p.js +45 -0
- package/dist/chunks/{index-3rm5n91g.js → index-e1xw96x7.js} +4 -4
- package/dist/chunks/index-n8c4p97n.js +2 -0
- package/dist/cli.js +90 -90
- package/dist/deepseek-harness/index.js +1 -1
- package/dist/index.js +3 -3
- package/dist/openclaw/cc-safety-net/index.js +41 -41
- 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 +2 -2
- package/package.json +3 -3
- package/dist/chunks/index-8cqwk53d.js +0 -45
- package/dist/chunks/index-w2aadm3e.js +0 -2
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{a,s,K,f,Pe,d,Le,y,p,V}from"./index-
|
|
2
|
-
`).filter((o)=>o.trim()).map(te);if(n.length===0)return;if(n.some((o)=>o===void 0||o>=e))return;if(C(t).mtimeMs!==r.mtimeMs)return;T(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 A(t){try{return j(t,{withFileTypes:!0,encoding:"utf8"})}catch{return[]}}function T(t){try{X(t)}catch{}}function G(t){try{B(t)}catch{}}var ae="2.5.
|
|
3
|
-
`,{encoding:"utf-8",mode:384}),q(t,l,i.now)}catch{}}function g(t,e){return{value:t.slice(0,e),truncated:t.length>e}}function He(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 F(t){let e=He(t);return e?I(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 u=b(t);return{decision:"allow",command:u,segment:u,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?b(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 b(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;_(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
|
|
4
|
-
export{re,q,He,F,
|
|
1
|
+
import{a,s,K,f,Pe,d,Le,y,p,V}from"./index-0naqmp5p.js";import{appendFileSync as ne,mkdirSync as oe}from"node:fs";import{isAbsolute as ie,join as I}from"node:path";import{lstatSync as C,readdirSync as j,readFileSync as U,rmdirSync as B,statSync as L,unlinkSync as X,utimesSync as z,writeFileSync as Y}from"node:fs";import{join as m}from"node:path";function re(t,e={}){return Le(d(t,e),t.home).policy.audit.retention_days}var S=86400000,Z=".last-prune",J=/^\d{4}-\d{2}$/,Q=/^((\d{4}-\d{2})-\d{2})-.+\.jsonl$/,O=(t)=>Math.floor(t/S);function q(t,e,r=()=>new Date){try{let n=r().getTime();if(!L(e,{throwIfNoEntry:!1})?.isDirectory())return;let o=m(e,Z),c=L(o,{throwIfNoEntry:!1})?.mtimeMs;if(c!==void 0&&O(c)===O(n))return;let i=n-re(t)*S,u=new Date(n).toISOString().slice(0,7);for(let l of A(e)){if(l.isDirectory()){W(m(e,l.name),i,u);continue}if(l.isFile()&&l.name.endsWith(".jsonl"))ee(m(e,l.name),i)}Y(o,"",{mode:384}),z(o,n/1000,n/1000)}catch{}}function W(t,e,r){for(let n of A(t)){if(!n.isDirectory()||!J.test(n.name))continue;let o=m(t,n.name);for(let c of A(o)){if(!c.isFile())continue;let i=Q.exec(c.name);if(!i||i[2]!==n.name)continue;let u=Date.parse(`${i[1]}T00:00:00.000Z`)+S;if(!Number.isFinite(u)||u>=e)continue;T(m(o,c.name))}if(n.name!==r)G(o)}G(t)}function ee(t,e){try{let r=C(t);if(r.mtimeMs>=e)return;let n=U(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(C(t).mtimeMs!==r.mtimeMs)return;T(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 A(t){try{return j(t,{withFileTypes:!0,encoding:"utf8"})}catch{return[]}}function T(t){try{X(t)}catch{}}function G(t){try{B(t)}catch{}}var ae="2.5.2",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 _(t,e,r,n,o,c,i={}){let u=le(e);if(!u)return;let l=F(t);if(!l)return;try{let E=(i.now??(()=>new Date))().toISOString(),N=g(K(r),i.failureStage?Number.POSITIVE_INFINITY:ce),h=g(K(n),de),w=i.toolName?g(K(i.toolName),ue):void 0,v=c===null?void 0:g(K(c),se),D=I(l,me(v?.value??null),E.slice(0,7));oe(D,{recursive:!0,mode:448});let H=I(D,`${E.slice(0,10)}-${u}.jsonl`),P={ts:E,id:(i.createId??Pe)(),v:ae,sessionId:u,decision:i.decision??"deny",agent:i.agent,shape:i.shape,level:i.level,configFallback:i.configFallback,toolName:w?.value,command:N.value,segment:h.value,...N.truncated||h.truncated||w?.truncated||v?.truncated?{truncated:!0}:{},reason:o,ruleId:i.ruleId,intent:i.intent,failureStage:i.failureStage,errorCode:i.errorCode,cwd:v?.value??null};ne(H,`${JSON.stringify(P)}
|
|
3
|
+
`,{encoding:"utf-8",mode:384}),q(t,l,i.now)}catch{}}function g(t,e){return{value:t.slice(0,e),truncated:t.length>e}}function He(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 F(t){let e=He(t);return e?I(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 u=b(t);return{decision:"allow",command:u,segment:u,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?b(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 b(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;_(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 Se(t,e,r,n){let o;try{o=r()}catch{return}if(typeof o!=="string"||!o.trim())return;_(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 M(t,e,r){try{let n=V(e,{environment:t,...r.guard});return R(t,e,n,r),n}catch(n){if(!(n instanceof p))throw n;throw R(t,e,n.evaluation,r,!(n.cause instanceof f),{stage:n.stage,errorCode:fe(n.cause)}),n}}function R(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 y)return"structural-shell-syntax-limit";return"unexpected-error"}
|
|
4
|
+
export{re,q,He,F,Se,M};
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{we,I,O,nt,c,n,Ce,x,p}from"./index-0naqmp5p.js";import{Se,M}from"./index-e1xw96x7.js";function L(t,o={}){return{malformed:!0,denial:I(o),cwd:t}}function ue(t,o){return{malformed:!0,denial:O(t,o),cwd:t.cwd}}function ve(t,o={}){return(e,i)=>{try{return g(e,i,t,o)}catch(a){return console.error("CC Safety Net error:",a),t.block(I())}}}function g(t,o,e,i){let a=c();if(e.cancelled?.(o))return e.block(I());let l=e.extract(t,o,a.paths);if(!l)return e.allow;let d=()=>e.getSessionId(t,o);if("malformed"in l)return Se(a,l.denial,d,{agent:e.agent,toolName:l.denial.toolName,cwd:l.cwd}),e.block(l.denial);let u=(r,m)=>{let s=we(r,{includeEvidence:m});return s?e.block(s):e.allow};try{let r=M(a,l,{guard:{auditAllowed:Ce(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(x(n.debug,a.env))console.error(`CC Safety Net debug: ${e.debugLabel} analysis failed: ${nt(r.cause)}`);return u(r.evaluation,e.includeEvidenceOnError(l))}}
|
|
2
|
+
export{L,ue,ve};
|