@pinta-ai/pinta-cc 1.10.2 → 1.10.3-skax.0
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/.claude-plugin/plugin.json +1 -1
- package/README.md +6 -0
- package/dist/index.js +28 -28
- package/dist/index.mjs +29 -29
- package/package.json +2 -2
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "pinta-cc",
|
|
3
3
|
"description": "Generic OTLP forwarder for Claude Code hook events. Converts hook events into OTLP/HTTP spans and sends them to any OpenTelemetry-compatible collector.",
|
|
4
|
-
"version": "1.10.
|
|
4
|
+
"version": "1.10.3-skax.0",
|
|
5
5
|
"license": "PolyForm-Noncommercial-1.0.0",
|
|
6
6
|
"userConfig": {
|
|
7
7
|
"endpoint": {
|
package/README.md
CHANGED
|
@@ -14,6 +14,12 @@ Converts Claude Code hook events into OTLP/HTTP spans and forwards them to any O
|
|
|
14
14
|
|
|
15
15
|
## Channels
|
|
16
16
|
|
|
17
|
+
Staging builds live on `staging/skax-a`, use the `skax` npm tag, and pin
|
|
18
|
+
Core `0.9.3-skax.0`. Their masked findings distinguish returned content from
|
|
19
|
+
completed inputs, including batch results. Consume them through an isolated
|
|
20
|
+
staging catalog with the coordinated Manager build. Do not merge prerelease
|
|
21
|
+
pins into `main`: marketplace auto-updates read that branch.
|
|
22
|
+
|
|
17
23
|
| Channel | Install path | Auto-update |
|
|
18
24
|
|---------|-------------|-------------|
|
|
19
25
|
| **Pinta Manager v0.2+** | Manager installs and configures automatically | Yes — on manager reconcile |
|
package/dist/index.js
CHANGED
|
@@ -1,32 +1,32 @@
|
|
|
1
|
-
"use strict";var
|
|
2
|
-
`){s+=2;continue}if(
|
|
1
|
+
"use strict";var En=Object.create;var Ve=Object.defineProperty;var Pn=Object.getOwnPropertyDescriptor;var Sn=Object.getOwnPropertyNames;var Tn=Object.getPrototypeOf,bn=Object.prototype.hasOwnProperty;var b=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports);var On=(e,t,n,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let o of Sn(t))!bn.call(e,o)&&o!==n&&Ve(e,o,{get:()=>t[o],enumerable:!(r=Pn(t,o))||r.enumerable});return e};var h=(e,t,n)=>(n=e!=null?En(Tn(e)):{},On(t||!e||!e.__esModule?Ve(n,"default",{value:e,enumerable:!0}):n,e));var Xe=b(pe=>{"use strict";Object.defineProperty(pe,"__esModule",{value:!0});pe.mysqlPasswordRanges=Nn;var kn=new Set(["mysql","mysqldump","mysqladmin","mysqlcheck","mysqlimport","mysqlshow","mariadb","mariadb-dump","mariadb-admin","mariadb-check","mariadb-import","mariadb-show"]),An=new Set(["sh","bash","dash","zsh","ksh"]),wn=new Set(["-u","--user","-h","--host","-P","--port","-D","--database","-S","--socket","-e","--execute","--protocol","--default-character-set","--defaults-file","--defaults-extra-file","--login-path","--init-command","--ssl-ca","--ssl-capath","--ssl-cert","--ssl-key","--ssl-cipher"]),ee=16;function Ge(e,t,n=e.value.length){return{value:e.value.slice(t,n),ranges:e.ranges.slice(t,n)}}function J(e,t,n,r){e.value+=t.value.slice(n,r);for(let o=n;o<r;o++)e.ranges.push(t.ranges[o])}function ze(e){if(e?.literal)return e.value.slice(e.value.lastIndexOf("/")+1).replace(/\.exe$/,"")}function Mn(e){let t=0;for(let n=0;n<=ee;n++){for(;/^[A-Za-z_][A-Za-z0-9_]*=/.test(e[t]?.value??"");)t++;let r=ze(e[t]);if(!r)return;if(["!","if","then","elif","else","while","until","do"].includes(r)){t++;continue}let o={env:["-u","--unset","-C","--chdir"],sudo:["-u","--user","-g","--group","-p","--prompt","-D","--chdir","-R","--chroot","-C","--close-from","-T","--command-timeout"],exec:["-a"],nice:["-n","--adjustment"],timeout:["-s","--signal","-k","--kill-after"]},i={env:["-i","--ignore-environment","-0","--null"],sudo:["-n","-E","-H","-S","-b","-k"],command:["-p"],exec:["-c","-l"],nohup:[],nice:[],time:["-p"],timeout:["--foreground","--preserve-status"]};if(!(r in i))return t;for(t++;e[t]?.value.startsWith("-");){let s=e[t++].value;if(s==="--")break;if(!i[r].includes(s)){if((o[r]??[]).includes(s)){if(!e[t++])return;continue}if(!(o[r]??[]).some(a=>a.startsWith("--")?s.startsWith(a+"="):s.startsWith(a)&&s.length>2)&&!(r==="nice"&&/^-\d+$/.test(s)))return}}if(r==="timeout"&&!/^\d+(?:\.\d+)?[smhd]?$/.test(e[t++]?.value??""))return}}function Ye(e,t){let n=1,r="";for(let o=t;o<e.length;o++){let i=e[o];if(i==="\\"&&r!=="'"){o++;continue}if(r){i===r&&(r="");continue}if(i==="'"||i==='"')r=i;else if(i==="(")n++;else if(i===")"&&--n===0)return o}return e.length}function Rn(e,t,n,r){let o={value:"",ranges:[],start:t,end:t,literal:!0},i="",s=t;for(;s<e.value.length;){let a=e.value[s];if(!i&&/[\s;|&()<>{}]/.test(a))break;if(a===i){i="",s++;continue}if(!i&&(a==="'"||a==='"')){i=a,s++;continue}if(a==="\\"&&i!=="'"){let u=e.value[s+1];if(u===`
|
|
2
|
+
`){s+=2;continue}if(u&&(!i||/[$`"\\]/.test(u))){J(o,e,s+1,s+2),s+=2;continue}}if(i!=="'"&&e.value.startsWith("$(",s)){let u=Ye(e.value,s+2);e.value[s+2]!=="("&&r<ee&&$(Ge(e,s+2,u),n,r+1),J(o,e,s,Math.min(u+1,e.value.length)),o.literal=!1,s=Math.min(u+1,e.value.length);continue}if(a==="`"&&i!=="'"){let u=s+1;for(;u<e.value.length&&e.value[u]!=="`";)u+=e.value[u]==="\\"?2:1;r<ee&&$(Ge(e,s+1,u),n,r+1),J(o,e,s,Math.min(u+1,e.value.length)),o.literal=!1,s=Math.min(u+1,e.value.length);continue}a==="$"&&i!=="'"&&(o.literal=!1),J(o,e,s,s+1),s++}return o.end=s,o}function Dn(e,t,n,r){let o=Mn(t);if(o===void 0)return;let i=ze(t[o]);if(An.has(i)&&r<ee){for(let s=o+1;s<t.length;s++){let a=t[s].value;if(a==="--command"||/^-[a-zA-Z]*c[a-zA-Z]*$/.test(a)){let u=t[s+1];u&&$(u,n,r+1);return}if(!a.startsWith("-")||a==="--")return;(a==="-o"||a==="-O")&&s++}return}if(kn.has(i))for(let s=o+1;s<t.length;s++){let a=t[s];if(a.value==="--")return;if(wn.has(a.value)){s++;continue}a.value.startsWith("-p")&&a.value.length>2&&n.push({start:e.ranges[a.start].start,end:e.ranges[a.end-1].end})}}function $(e,t,n=0){let r=[],o,i=[],s=0,a=()=>{Dn(e,r,t,n),r=[],o=void 0};for(;s<e.value.length;){let u=e.value[s];if(u===`
|
|
3
3
|
`){a(),s++;for(let l of i.splice(0))for(;s<e.value.length;){let d=e.value.indexOf(`
|
|
4
|
-
`,s),
|
|
5
|
-
`,s);s=l<0?e.value.length:l}else if(e.value.startsWith("((",s))a(),s=Math.min(Fe(e.value,s+1)+1,e.value.length);else if(/[;|&(){}]/.test(c))a(),s++;else if(c==="<"||c===">")r.at(-1)?.end===s&&/^\d+$/.test(r.at(-1).value)&&r.pop(),o=/^(?:<<<|<<-?|>>|<&|>&|[<>])/.exec(e.value.slice(s))?.[0]??c,s+=o.length;else{let l=bn(e,s,t,n);s=l.end,(o==="<<"||o==="<<-")&&i.push({delimiter:l.value,stripTabs:o==="<<-"}),o||r.push(l),o=void 0}}a()}function kn(e,t,n){let r={value:"",ranges:[]};for(let o=t+1;o<n-1;o++){if(e.value[o]!=="\\"){z(r,e,o,o+1);continue}let i=o+(e.value[o+1]==="u"?6:2),s=JSON.parse(`"${e.value.slice(o,i)}"`);r.value+=s;for(let a=0;a<s.length;a++)r.ranges.push({start:e.ranges[o].start,end:e.ranges[i-1].end});o=i-1}return r}function An(e){let t={value:e,ranges:Array.from({length:e.length},(r,o)=>({start:o,end:o+1}))},n=[];if(/^\s*[{[]/.test(e)){let r;try{r=JSON.parse(e)}catch{return B(t,n),n}if(r!==null&&typeof r=="object"){let o=/"(?:[^"\\]|\\.)*"/g,i;for(;i=o.exec(e);){let s=JSON.parse(i[0]);if(s!=="command"&&s!=="cmd"&&s!=="CommandLine")continue;let a=/^\s*:\s*/.exec(e.slice(o.lastIndex));if(!a)continue;let c=o.lastIndex+a[0].length;if(e[c]!=='"')continue;o.lastIndex=c;let l=o.exec(e);l?.index===c&&B(kn(t,c,c+l[0].length),n)}}return n}return B(t,n),n}});var me=b(g=>{"use strict";Object.defineProperty(g,"__esModule",{value:!0});g.PATTERNS=g.MAX_BYTES=void 0;g.truncateTo=Ve;g.truncate=Rn;g.collectMatches=Ye;g.resolveOverlaps=ze;g.applyMatches=Xe;g.redact=Mn;var wn=Ge();g.MAX_BYTES=102400;function Ve(e,t){let n=Buffer.from(e,"utf-8");return n.length<=t?e:`${n.subarray(0,Math.max(0,t)).toString("utf-8")}\u2026[TRUNCATED:${n.length}]`}function Rn(e){return Ve(e,g.MAX_BYTES)}g.PATTERNS=[{type:"aws_access_key",regex:/AKIA[0-9A-Z]{16}/g},{type:"aws_secret_key",regex:/(?:aws[_-]?secret(?:[_-]?(?:access)?[_-]?key)?)\s*[:=]\s*["']?([A-Za-z0-9/+=]{40})(?![A-Za-z0-9/+=])/gi,captureGroup:1},{type:"gcp_service_account",regex:/\{[\s\S]{0,200}?"type"\s*:\s*"service_account"[\s\S]*?\}/g},{type:"github_token",regex:/gh[pousr]_[A-Za-z0-9]{36,}/g},{type:"gitlab_token",regex:/glpat-[A-Za-z0-9_-]{20}/g},{type:"slack_token",regex:/xox[abrsp]-[0-9A-Za-z-]{10,}/g},{type:"openai_key",regex:/sk-(?:proj-)?[A-Za-z0-9_-]{40,}/g},{type:"anthropic_key",regex:/sk-ant-[A-Za-z0-9_-]{50,}/g},{type:"stripe_key",regex:/(?:sk|rk|pk)_(?:live|test)_[A-Za-z0-9]{20,}/g},{type:"jwt",regex:/eyJ[A-Za-z0-9_-]{10,}\.eyJ[A-Za-z0-9_-]{10,}\.[A-Za-z0-9_-]{10,}/g},{type:"private_key_block",regex:/-----BEGIN [A-Z ]*PRIVATE KEY-----[\s\S]*?-----END [A-Z ]*PRIVATE KEY-----/g},{type:"bearer_token",regex:/bearer\s+([A-Za-z0-9._~+/=-]{12,})/gi,captureGroup:1},{type:"basic_auth",regex:/basic\s+([A-Za-z0-9+/=]{12,})/gi,captureGroup:1},{type:"db_url_password",regex:/\b(?:postgres|postgresql|mysql|mariadb|mongodb(?:\+srv)?|redis):\/\/[^:\s/]+:([^@\s]+)@/gi,captureGroup:1},{type:"cli_password_flag",regex:/(?:--password|--pass|--pwd)[=\s]([^\s'"]+)/g,captureGroup:1},{type:"cli_password_short",regex:/\s-p([^\s'"]+)/g,captureGroup:1,requireContext:"bash"},{type:"env_var_secret",regex:/^(?:export\s+)?([A-Z][A-Z0-9_]*(?:KEY|SECRET|TOKEN|PASSWORD|PASSWD|PWD|API_KEY)[A-Z0-9_]*)\s*=\s*["']?([^\s"'\n]+)/gm,captureGroup:2}];function Ye(e,t){let n=[];for(let r of g.PATTERNS){if(r.requireContext&&r.requireContext!==t.context)continue;if(r.type==="cli_password_short"){for(let{start:s,end:a}of(0,wn.mysqlPasswordRanges)(e))n.push({start:s,end:a,replaceStart:s,replaceEnd:a,type:r.type,replacement:`-p[REDACTED:${r.type}]`});continue}let o=new RegExp(r.regex.source,r.regex.flags),i;for(;(i=o.exec(e))!==null;){let s=r.captureGroup??0,a=i[s];if(a===void 0){i.index===o.lastIndex&&o.lastIndex++;continue}let c=i.index,l=i.index+i[0].length,d=c+i[0].indexOf(a),y=d+a.length;n.push({start:c,end:l,replaceStart:d,replaceEnd:y,type:r.type}),i.index===o.lastIndex&&o.lastIndex++}}return n}function ze(e){let t=[...e].sort((o,i)=>o.start!==i.start?o.start-i.start:i.end-i.start-(o.end-o.start)),n=[],r=-1;for(let o of t)o.start<r||(n.push(o),r=o.end);return n}function Xe(e,t){let n=[...t].sort((o,i)=>i.replaceStart-o.replaceStart),r=e;for(let o of n)r=r.slice(0,o.replaceStart)+(o.replacement??`[REDACTED:${o.type}]`)+r.slice(o.replaceEnd);return r}function Mn(e,t={}){if(e.length===0)return e;let n=Ye(e,t);if(n.length===0)return e;let r=ze(n);return Xe(e,r)}});var ge=b(m=>{"use strict";var Dn=m&&m.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(m,"__esModule",{value:!0});m.MAX_SPAN_BYTES=void 0;m.ulidToTraceId=Je;m.newSpanId=We;m.snakeCase=jn;m.toOtlpValue=Qe;m.attrsFromRecord=In;m.guardAttrs=et;m.clientAttrs=tt;m.enforceSpanBudget=nt;m.buildPayload=Cn;m.attachGuard=rt;m.mergeBatch=Un;var xn=Dn(require("crypto")),he=me(),Nn="0123456789ABCDEFGHJKMNPQRSTVWXYZ";function Je(e){if(e.length!==26)throw new Error(`ulidToTraceId: expected 26 chars, got ${e.length}`);let t=0n;for(let r of e){let o=Nn.indexOf(r);if(o<0)throw new Error(`ulidToTraceId: invalid Crockford char "${r}"`);t=t<<5n|BigInt(o)}let n=(1n<<128n)-1n;return t&=n,t.toString(16).padStart(32,"0")}function We(){return xn.default.randomBytes(8).toString("hex")}function jn(e){return e.replace(/([a-z0-9])([A-Z])/g,"$1_$2").replace(/([A-Z])([A-Z][a-z])/g,"$1_$2").toLowerCase()}var He=new Set;function Q(e,t,n){let r=(0,he.truncate)(t);if((n.skipRedactKeys??He).has(e))return r;let o=(n.bashContextKeys??He).has(e)?"bash":void 0;return(0,he.redact)(r,{context:o})}function Qe(e,t,n={}){if(t==null)return null;switch(typeof t){case"string":return{stringValue:Q(e,t,n)};case"boolean":return{boolValue:t};case"number":return Number.isInteger(t)?{intValue:t}:{doubleValue:t};case"object":try{return{stringValue:Q(e,JSON.stringify(t),n)}}catch{return{stringValue:Q(e,String(t),n)}}default:return{stringValue:Q(e,String(t),n)}}}function In(e,t,n={}){let r=[];for(let[o,i]of Object.entries(e)){let s=`${t}.${o}`,a=Qe(s,i,n);a!==null&&r.push({key:s,value:a})}return r}function et(e){let t=[{key:"pinta.guard.decision",value:{stringValue:e.decision.toLowerCase()}},{key:"pinta.guard.duration_ms",value:{intValue:e.durationMs}}];return e.reason&&t.push({key:"pinta.guard.matched_rule",value:{stringValue:e.reason}}),e.failOpenReason&&t.push({key:"pinta.guard.fail_open_reason",value:{stringValue:e.failOpenReason}}),t}function tt(e){return[{key:"pinta.client.rtt_ms",value:Number.isInteger(e.rttMs)?{intValue:e.rttMs}:{doubleValue:e.rttMs}},{key:"pinta.client.op",value:{stringValue:e.op}}]}m.MAX_SPAN_BYTES=800*1024;function Ke(e){let t=JSON.stringify(e);return t===void 0?0:Buffer.byteLength(t,"utf-8")}var Ze=1024;function nt(e,t=m.MAX_SPAN_BYTES){let n=Ke(e);for(let r=0;r<100&&n>t;r++){let o=null,i=0;for(let c of e.attributes){if(!("stringValue"in c.value))continue;let l=Buffer.byteLength(c.value.stringValue,"utf-8");l>i&&(i=l,o=c.value)}if(o===null||i<=Ze)break;let s=n-t,a=Math.max(Ze,i-s-64);o.stringValue=(0,he.truncateTo)(o.stringValue,a),n=Ke(e)}return e}function Cn(e){let t=e.now??Date.now(),n=(BigInt(t)*1000000n).toString(),r=[...e.attributes],o={traceId:Je(e.traceId),spanId:We(),name:e.spanName,kind:e.spanKind??1,startTimeUnixNano:n,endTimeUnixNano:n,attributes:r};nt(o);let i={resourceSpans:[{resource:{attributes:e.resource},scopeSpans:[{scope:e.scope,spans:[o]}]}]};return rt(i,e.guard,e.clientTiming)}function rt(e,t,n){let r=e.resourceSpans[0]?.scopeSpans[0]?.spans[0];if(!r)return e;t&&r.attributes.push(...et(t));let o=n??(t?.clientRttMs!==void 0?{op:"guard",rttMs:t.clientRttMs}:null);return o&&r.attributes.push(...tt(o)),e}function Un(e){let t=[];for(let n of e)t.push(...n.resourceSpans);return{resourceSpans:t}}});var ot=b(A=>{"use strict";Object.defineProperty(A,"__esModule",{value:!0});A.GUARD_STATUS_REFUSED=A.GUARD_BUDGET_HEADER=void 0;A.evaluateGuard=qn;var Bn=1e4,Ln="pinta-core";A.GUARD_BUDGET_HEADER="x-pinta-guard-budget-ms";function ee(e,t){return{decision:"ALLOW",reason:null,userMessage:null,durationMs:e,clientRttMs:e,failOpenReason:t}}var $n=new Set(["ALLOW","DENY","REVIEW"]);A.GUARD_STATUS_REFUSED=410;async function qn(e,t,n={}){if(!t||n.disabled)return null;let r=n.timeoutMs??Bn,o=Date.now(),i=new AbortController,s=setTimeout(()=>i.abort(),r);try{let a=await fetch(t,{method:"POST",headers:{"content-type":"application/json","user-agent":n.userAgent??Ln,"x-pinta-relay-token":n.token??"",...n.agentType?{"x-pinta-agent-type":n.agentType}:{},...Number.isFinite(r)&&r>0?{[A.GUARD_BUDGET_HEADER]:String(r)}:{}},body:JSON.stringify(e),signal:i.signal});if(a.status===A.GUARD_STATUS_REFUSED)return ee(Date.now()-o,"refused");if(a.status!==200)return ee(Date.now()-o,"error");let c=await a.json(),l=c?.durationMs===void 0||typeof c.durationMs=="number"&&Number.isFinite(c.durationMs);if(!c||!$n.has(c.decision)||!l)return ee(Date.now()-o,"error");let d=Date.now()-o;return{decision:c.decision,reason:c.reason??null,userMessage:c.userMessage??null,durationMs:c.durationMs??d,clientRttMs:d}}catch(a){let c=a.name,l=c==="AbortError"||c==="TimeoutError"?"timeout":"error";return ee(Date.now()-o,l)}finally{clearTimeout(s)}}});var te=b(X=>{"use strict";var Fn=X&&X.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(X,"__esModule",{value:!0});X.atomicWriteFileSync=Gn;var st=Fn(require("fs"));function Gn(e,t){let n=`${e}.${process.pid}.tmp`;st.default.writeFileSync(n,t),st.default.renameSync(n,e)}});var ve=b(R=>{"use strict";var it=R&&R.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(R,"__esModule",{value:!0});R.MemoryRetryQueue=R.DiskRetryQueue=void 0;var _=it(require("fs")),ne=it(require("path")),Vn=te(),re=1e3,Yn=50,zn=5,_e=class{filePath;lockPath;logPrefix;constructor(t,n){this.filePath=ne.default.join(t,"failed-spans.jsonl"),this.lockPath=this.filePath+".lock",this.logPrefix=n}enqueue(t){try{_.default.mkdirSync(ne.default.dirname(this.filePath),{recursive:!0});let n=JSON.stringify({savedAt:new Date().toISOString(),payload:t})+`
|
|
6
|
-
`;
|
|
7
|
-
`)}}readAll(){try{let t=
|
|
8
|
-
`))if(r.trim())try{let o=JSON.parse(r);Array.isArray(o?.payload?.resourceSpans)&&n.push(o)}catch{}return n}catch{return[]}}rewrite(t){try{if(t.length===0){
|
|
4
|
+
`,s),f=d<0?e.value.length:d,p=e.value.slice(s,f);if(s=d<0?f:f+1,(l.stripTabs?p.replace(/^\t+/,""):p)===l.delimiter)break}}else if(/\s/.test(u))s++;else if(u==="#"){let l=e.value.indexOf(`
|
|
5
|
+
`,s);s=l<0?e.value.length:l}else if(e.value.startsWith("((",s))a(),s=Math.min(Ye(e.value,s+1)+1,e.value.length);else if(/[;|&(){}]/.test(u))a(),s++;else if(u==="<"||u===">")r.at(-1)?.end===s&&/^\d+$/.test(r.at(-1).value)&&r.pop(),o=/^(?:<<<|<<-?|>>|<&|>&|[<>])/.exec(e.value.slice(s))?.[0]??u,s+=o.length;else{let l=Rn(e,s,t,n);s=l.end,(o==="<<"||o==="<<-")&&i.push({delimiter:l.value,stripTabs:o==="<<-"}),o||r.push(l),o=void 0}}a()}function xn(e,t,n){let r={value:"",ranges:[]};for(let o=t+1;o<n-1;o++){if(e.value[o]!=="\\"){J(r,e,o,o+1);continue}let i=o+(e.value[o+1]==="u"?6:2),s=JSON.parse(`"${e.value.slice(o,i)}"`);r.value+=s;for(let a=0;a<s.length;a++)r.ranges.push({start:e.ranges[o].start,end:e.ranges[i-1].end});o=i-1}return r}function Nn(e){let t={value:e,ranges:Array.from({length:e.length},(r,o)=>({start:o,end:o+1}))},n=[];if(/^\s*[{[]/.test(e)){let r;try{r=JSON.parse(e)}catch{return $(t,n),n}if(r!==null&&typeof r=="object"){let o=/"(?:[^"\\]|\\.)*"/g,i;for(;i=o.exec(e);){let s=JSON.parse(i[0]);if(s!=="command"&&s!=="cmd"&&s!=="CommandLine")continue;let a=/^\s*:\s*/.exec(e.slice(o.lastIndex));if(!a)continue;let u=o.lastIndex+a[0].length;if(e[u]!=='"')continue;o.lastIndex=u;let l=o.exec(e);l?.index===u&&$(xn(t,u,u+l[0].length),n)}}return n}return $(t,n),n}});var ge=b(y=>{"use strict";Object.defineProperty(y,"__esModule",{value:!0});y.PATTERNS=y.MAX_BYTES=void 0;y.truncateTo=Je;y.truncate=Cn;y.collectMatches=We;y.resolveOverlaps=me;y.applyMatches=he;y.createDetectedValueMasker=In;y.redact=Un;var jn=Xe();y.MAX_BYTES=102400;function Je(e,t){let n=Buffer.from(e,"utf-8");return n.length<=t?e:`${n.subarray(0,Math.max(0,t)).toString("utf-8")}\u2026[TRUNCATED:${n.length}]`}function Cn(e){return Je(e,y.MAX_BYTES)}y.PATTERNS=[{type:"aws_access_key",regex:/AKIA[0-9A-Z]{16}/g},{type:"aws_secret_key",regex:/(?:aws[_-]?secret(?:[_-]?(?:access)?[_-]?key)?)\s*[:=]\s*["']?([A-Za-z0-9/+=]{40})(?![A-Za-z0-9/+=])/gi,captureGroup:1},{type:"gcp_service_account",regex:/\{[\s\S]{0,200}?"type"\s*:\s*"service_account"[\s\S]*?\}/g},{type:"github_token",regex:/gh[pousr]_[A-Za-z0-9]{36,}/g},{type:"gitlab_token",regex:/glpat-[A-Za-z0-9_-]{20}/g},{type:"slack_token",regex:/xox[abrsp]-[0-9A-Za-z-]{10,}/g},{type:"openai_key",regex:/sk-(?:proj-)?[A-Za-z0-9_-]{40,}/g},{type:"anthropic_key",regex:/sk-ant-[A-Za-z0-9_-]{50,}/g},{type:"stripe_key",regex:/(?:sk|rk|pk)_(?:live|test)_[A-Za-z0-9]{20,}/g},{type:"jwt",regex:/eyJ[A-Za-z0-9_-]{10,}\.eyJ[A-Za-z0-9_-]{10,}\.[A-Za-z0-9_-]{10,}/g},{type:"private_key_block",regex:/-----BEGIN [A-Z ]*PRIVATE KEY-----[\s\S]*?-----END [A-Z ]*PRIVATE KEY-----/g},{type:"bearer_token",regex:/bearer\s+([A-Za-z0-9._~+/=-]{12,})/gi,captureGroup:1},{type:"basic_auth",regex:/basic\s+([A-Za-z0-9+/=]{12,})/gi,captureGroup:1},{type:"db_url_password",regex:/\b(?:postgres|postgresql|mysql|mariadb|mongodb(?:\+srv)?|redis):\/\/[^:\s/]+:([^@\s]+)@/gi,captureGroup:1},{type:"cli_password_flag",regex:/(?:--password|--pass|--pwd)[=\s]([^\s'"]+)/g,captureGroup:1},{type:"cli_password_short",regex:/\s-p([^\s'"]+)/g,captureGroup:1,requireContext:"bash"},{type:"env_var_secret",regex:/^(?:export\s+)?([A-Z][A-Z0-9_]*(?:KEY|SECRET|TOKEN|PASSWORD|PASSWD|PWD|API_KEY)[A-Z0-9_]*)\s*=\s*["']?([^\s"'\n]+)/gm,captureGroup:2}];function We(e,t){let n=[];for(let r of y.PATTERNS){if(r.requireContext&&r.requireContext!==t.context)continue;if(r.type==="cli_password_short"){for(let{start:s,end:a}of(0,jn.mysqlPasswordRanges)(e))n.push({start:s,end:a,replaceStart:s,replaceEnd:a,type:r.type,replacement:`-p[REDACTED:${r.type}]`});continue}let o=new RegExp(r.regex.source,r.regex.flags),i;for(;(i=o.exec(e))!==null;){let s=r.captureGroup??0,a=i[s];if(a===void 0){i.index===o.lastIndex&&o.lastIndex++;continue}if(/^\[REDACTED(?::[^\]]+)?\]$/i.test(a))continue;let u=i.index,l=i.index+i[0].length,d=u+i[0].indexOf(a),f=d+a.length;n.push({start:u,end:l,replaceStart:d,replaceEnd:f,type:r.type}),i.index===o.lastIndex&&o.lastIndex++}}return n}function me(e){let t=[...e].sort((r,o)=>r.replaceStart-o.replaceStart||o.replaceEnd-r.replaceEnd),n=[];for(let r of t){let o=n[n.length-1];o&&r.replaceStart<o.replaceEnd?(o.replaceEnd=Math.max(o.replaceEnd,r.replaceEnd),o.start=Math.min(o.start,r.start),o.end=Math.max(o.end,r.end)):n.push({...r})}return n}function he(e,t){let n=[...t].sort((o,i)=>i.replaceStart-o.replaceStart),r=e;for(let o of n)r=r.slice(0,o.replaceStart)+(o.replacement??`[REDACTED:${o.type}]`)+r.slice(o.replaceEnd);return r}function In(e){let t=new Map;for(let s of e)s.value.length>0&&!t.has(s.value)&&t.set(s.value,s);let n=[...t.values()],r=n.flatMap(s=>{let a=JSON.stringify(s.value).slice(1,-1);return a===s.value?[s]:[s,{...s,value:a}]}),o=(s,a)=>{let u=[],l=[...s.matchAll(/\[(?:PINTA_)?REDACTED(?::[^\]]+)?\]/gi)];for(let d of a)for(let f=s.indexOf(d.value);f>=0;f=s.indexOf(d.value,f+1))l.some(p=>f>=p.index&&f+d.value.length<=p.index+p[0].length)||u.push({start:f,end:f+d.value.length,replaceStart:f,replaceEnd:f+d.value.length,type:d.type});return he(s,me(u))},i=s=>{if(n.length===0)return s;if(t.has(s))return o(s,n);let a=s.trimStart()[0];if(a==="{"||a==="["||a==='"'){let u=!1;try{JSON.parse(s),u=!0}catch(l){if(!(l instanceof SyntaxError))throw l}if(u)return s.replace(/"(?:\\.|[^"\\])*"|-?(?:0|[1-9]\d*)(?:\.\d+)?(?:[eE][+-]?\d+)?/gs,l=>{let d=l.startsWith('"'),f=d?JSON.parse(l):l,p=d?i(f):o(f,n);return p===f?l:JSON.stringify(p)})}return o(s,r)};return i}function Un(e,t={}){if(e.length===0)return e;let n=We(e,t);if(n.length===0)return e;let r=me(n);return he(e,r)}});var Ee=b(g=>{"use strict";var Bn=g&&g.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(g,"__esModule",{value:!0});g.MAX_SPAN_BYTES=void 0;g.ulidToTraceId=et;g.newSpanId=tt;g.snakeCase=qn;g.toOtlpValue=ot;g.attrsFromRecord=Fn;g.guardAttrs=st;g.clientAttrs=it;g.enforceSpanBudget=at;g.buildPayload=Vn;g.attachGuard=ct;g.mergeBatch=Gn;var Ln=Bn(require("crypto")),R=ge(),$n="0123456789ABCDEFGHJKMNPQRSTVWXYZ";function et(e){if(e.length!==26)throw new Error(`ulidToTraceId: expected 26 chars, got ${e.length}`);let t=0n;for(let r of e){let o=$n.indexOf(r);if(o<0)throw new Error(`ulidToTraceId: invalid Crockford char "${r}"`);t=t<<5n|BigInt(o)}let n=(1n<<128n)-1n;return t&=n,t.toString(16).padStart(32,"0")}function tt(){return Ln.default.randomBytes(8).toString("hex")}function qn(e){return e.replace(/([a-z0-9])([A-Z])/g,"$1_$2").replace(/([A-Z])([A-Z][a-z])/g,"$1_$2").toLowerCase()}var Ke=new Set,ve=new WeakMap,nt=new WeakMap,rt=new WeakMap;function He(e){if(typeof e=="string")return e;try{return JSON.stringify(e)}catch(t){if(!(t instanceof TypeError))throw t;return String(e)}}function _e(e,t,n){let r=(n.bashContextKeys??Ke).has(e)?"bash":void 0,o=(n.skipRedactKeys??Ke).has(e)?[]:(0,R.collectMatches)(t,{context:r}),i={stringValue:(0,R.truncate)((0,R.applyMatches)(t,(0,R.resolveOverlaps)(o)))};return ve.set(i,{original:t,detections:o.map(s=>({value:t.slice(s.replaceStart,s.replaceEnd),type:s.type}))}),i}function ot(e,t,n={}){if(t==null)return null;let r;switch(typeof t){case"string":r=_e(e,t,n);break;case"boolean":r={boolValue:t};break;case"number":r=Number.isInteger(t)?{intValue:t}:{doubleValue:t};break;case"object":{r=_e(e,He(t)??String(t),n);break}default:r=_e(e,String(t),n)}let o=He(n.outputForKey?.(e,t));return o!==void 0&&nt.set(r,o),r}function Fn(e,t,n={}){let r=[];for(let[o,i]of Object.entries(e)){let s=`${t}.${o}`,a=ot(s,i,n);a!==null&&r.push({key:s,value:a})}return r}function st(e){let t=[{key:"pinta.guard.decision",value:{stringValue:e.decision.toLowerCase()}},{key:"pinta.guard.duration_ms",value:{intValue:e.durationMs}}];return e.reason&&t.push({key:"pinta.guard.matched_rule",value:{stringValue:e.reason}}),e.failOpenReason&&t.push({key:"pinta.guard.fail_open_reason",value:{stringValue:e.failOpenReason}}),t}function it(e){return[{key:"pinta.client.rtt_ms",value:Number.isInteger(e.rttMs)?{intValue:e.rttMs}:{doubleValue:e.rttMs}},{key:"pinta.client.op",value:{stringValue:e.op}}]}g.MAX_SPAN_BYTES=800*1024;function Ze(e){let t=JSON.stringify(e);return t===void 0?0:Buffer.byteLength(t,"utf-8")}var Qe=1024;function at(e,t=g.MAX_SPAN_BYTES){let n=Ze(e);for(let r=0;r<100&&n>t;r++){let o=null,i=0;for(let u of e.attributes){if(!("stringValue"in u.value))continue;let l=Buffer.byteLength(u.value.stringValue,"utf-8");l>i&&(i=l,o=u.value)}if(o===null||i<=Qe)break;let s=n-t,a=Math.max(Qe,i-s-64);o.stringValue=(0,R.truncateTo)(o.stringValue,a),n=Ze(e)}return e}function Vn(e){let t=e.now??Date.now(),n=(BigInt(t)*1000000n).toString(),o=[...e.resource,...e.attributes].flatMap(f=>{let p=ve.get(f.value);return p?[p]:[]}).flatMap(f=>f.detections),i=[...e.resource,...e.attributes].flatMap(f=>{let p=nt.get(f.value);return p===void 0?[]:[p]}),s=new Set(o.filter(f=>{let p=(0,R.createDetectedValueMasker)([f]);return i.some(A=>p(A)!==A)}).map(f=>f.value)),a=(0,R.createDetectedValueMasker)(o),u=e.attributes.map(f=>ye(f,a)),l={traceId:et(e.traceId),spanId:tt(),name:a(e.spanName),kind:e.spanKind??1,startTimeUnixNano:n,endTimeUnixNano:n,attributes:u},d={resourceSpans:[{resource:{attributes:e.resource.map(f=>ye(f,a))},scopeSpans:[{scope:{name:a(e.scope.name),version:a(e.scope.version)},spans:[l]}]}]};return o.length>0&&(rt.set(d,a),u.push({key:"pinta.facts",value:{stringValue:JSON.stringify({items:[{origin:"attributes",values:o.filter(f=>!s.has(f.value))},{origin:"toolOutput",values:o.filter(f=>s.has(f.value))}].filter(f=>f.values.length>0).map(({origin:f,values:p})=>({category:"DATA_EXFILTRATION",source:"CORE_REDACT",path:"$",secrets:{kinds:["credential"],count:new Set(p.map(A=>A.value)).size,origins:[f],scannedFields:["attributes"],scanner:"core-tier1",truncated:!1,corroboration:["pattern"]}}))})}})),at(l),ct(d,e.guard,e.clientTiming)}function ye(e,t){let n={key:t(e.key),value:{...e.value}},r=n.value;if("stringValue"in r){let o=ve.get(e.value),i=t(o?.original??r.stringValue);r.stringValue=o?(0,R.truncate)(i):i}else if("intValue"in r||"doubleValue"in r){let o=String("intValue"in r?r.intValue:r.doubleValue),i=t(o);i!==o&&(n.value={stringValue:i})}return n}function ct(e,t,n){let r=e.resourceSpans[0]?.scopeSpans[0]?.spans[0];if(!r)return e;if(t){let i=st(t),s=rt.get(e);r.attributes.push(...s?i.map(a=>ye(a,s)):i)}let o=n??(t?.clientRttMs!==void 0?{op:"guard",rttMs:t.clientRttMs}:null);return o&&r.attributes.push(...it(o)),e}function Gn(e){let t=[];for(let n of e)t.push(...n.resourceSpans);return{resourceSpans:t}}});var lt=b(w=>{"use strict";Object.defineProperty(w,"__esModule",{value:!0});w.GUARD_STATUS_REFUSED=w.GUARD_BUDGET_HEADER=void 0;w.evaluateGuard=Jn;var zn=1e4,Yn="pinta-core";w.GUARD_BUDGET_HEADER="x-pinta-guard-budget-ms";function W(e,t){return{decision:"ALLOW",reason:null,userMessage:null,durationMs:e,clientRttMs:e,failOpenReason:t}}var Xn=new Set(["ALLOW","DENY","REVIEW"]);function ut(e){return e==="timeout"||e==="refused"||e==="error"}w.GUARD_STATUS_REFUSED=410;async function Jn(e,t,n={}){if(!t||n.disabled)return null;let r=n.timeoutMs??zn,o=Date.now(),i=new AbortController,s=setTimeout(()=>i.abort(),r);try{let a=await fetch(t,{method:"POST",headers:{"content-type":"application/json","user-agent":n.userAgent??Yn,"x-pinta-relay-token":n.token??"",...n.agentType?{"x-pinta-agent-type":n.agentType}:{},...Number.isFinite(r)&&r>0?{[w.GUARD_BUDGET_HEADER]:String(r)}:{}},body:JSON.stringify(e),signal:i.signal});if(a.status===w.GUARD_STATUS_REFUSED)return W(Date.now()-o,"refused");if(a.status!==200)return W(Date.now()-o,"error");let u=await a.json(),l=u?.durationMs===void 0||typeof u.durationMs=="number"&&Number.isFinite(u.durationMs);if(!u||!Xn.has(u.decision)||!l)return W(Date.now()-o,"error");let d=u.decision==="ALLOW"?u.failOpenReason:void 0;if(d!=null&&!ut(d))return W(Date.now()-o,"error");let f=Date.now()-o;return{decision:u.decision,reason:u.reason??null,userMessage:u.userMessage??null,durationMs:u.durationMs??f,clientRttMs:f,...ut(d)?{failOpenReason:d}:{}}}catch(a){let u=a.name,l=u==="AbortError"||u==="TimeoutError"?"timeout":"error";return W(Date.now()-o,l)}finally{clearTimeout(s)}}});var te=b(K=>{"use strict";var Wn=K&&K.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(K,"__esModule",{value:!0});K.atomicWriteFileSync=Kn;var ft=Wn(require("fs"));function Kn(e,t){let n=`${e}.${process.pid}.tmp`;ft.default.writeFileSync(n,t),ft.default.renameSync(n,e)}});var Te=b(D=>{"use strict";var dt=D&&D.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(D,"__esModule",{value:!0});D.MemoryRetryQueue=D.DiskRetryQueue=void 0;var v=dt(require("fs")),ne=dt(require("path")),Hn=te(),re=1e3,Zn=50,Qn=5,Pe=class{filePath;lockPath;logPrefix;constructor(t,n){this.filePath=ne.default.join(t,"failed-spans.jsonl"),this.lockPath=this.filePath+".lock",this.logPrefix=n}enqueue(t){try{v.default.mkdirSync(ne.default.dirname(this.filePath),{recursive:!0});let n=JSON.stringify({savedAt:new Date().toISOString(),payload:t})+`
|
|
6
|
+
`;v.default.appendFileSync(this.filePath,n),this.trim()}catch(n){process.stderr.write(`[${this.logPrefix}] retry-queue enqueue failed: ${n}
|
|
7
|
+
`)}}readAll(){try{let t=v.default.readFileSync(this.filePath,"utf-8"),n=[];for(let r of t.split(`
|
|
8
|
+
`))if(r.trim())try{let o=JSON.parse(r);Array.isArray(o?.payload?.resourceSpans)&&n.push(o)}catch{}return n}catch{return[]}}rewrite(t){try{if(t.length===0){v.default.existsSync(this.filePath)&&v.default.unlinkSync(this.filePath);return}v.default.mkdirSync(ne.default.dirname(this.filePath),{recursive:!0}),(0,Hn.atomicWriteFileSync)(this.filePath,t.map(n=>JSON.stringify(n)).join(`
|
|
9
9
|
`)+`
|
|
10
10
|
`)}catch(n){process.stderr.write(`[${this.logPrefix}] retry-queue rewrite failed: ${n}
|
|
11
|
-
`)}}tryAcquireLock(){let t=Date.now();try{
|
|
12
|
-
`),!1}for(;Date.now()-t<
|
|
13
|
-
`),!1;try{let i=
|
|
14
|
-
`),this.rewrite(t.slice(n))}};
|
|
11
|
+
`)}}tryAcquireLock(){let t=Date.now();try{v.default.mkdirSync(ne.default.dirname(this.lockPath),{recursive:!0})}catch(n){return process.stderr.write(`[${this.logPrefix}] retry-queue lock mkdir failed: ${n}
|
|
12
|
+
`),!1}for(;Date.now()-t<Zn;)try{let n=v.default.openSync(this.lockPath,"wx");return v.default.writeSync(n,String(process.pid)),v.default.closeSync(n),!0}catch(n){if(n?.code!=="EEXIST")return process.stderr.write(`[${this.logPrefix}] retry-queue lock open failed: ${n}
|
|
13
|
+
`),!1;try{let i=v.default.statSync(this.lockPath);if(Date.now()-i.mtimeMs>3e4){v.default.unlinkSync(this.lockPath);continue}}catch{}let r=Qn,o=Date.now()+r;for(;Date.now()<o;);}return!1}release(){try{v.default.unlinkSync(this.lockPath)}catch{}}trim(){let t=this.readAll();if(t.length<=re)return;let n=t.length-re;process.stderr.write(`[${this.logPrefix}] retry-queue full, dropping ${n} oldest entries
|
|
14
|
+
`),this.rewrite(t.slice(n))}};D.DiskRetryQueue=Pe;var Se=class{entries=[];enqueue(t){this.entries.push(t),this.entries.length>re&&this.entries.splice(0,this.entries.length-re)}drain(){let t=this.entries;return this.entries=[],t}get size(){return this.entries.length}};D.MemoryRetryQueue=Se});var yt=b(m=>{"use strict";Object.defineProperty(m,"__esModule",{value:!0});m.MemoryTransport=m.DiskTransport=m.MAX_POST_BYTES=void 0;m.parseHeadersEnv=gt;m.envOptionsResolver=_t;m.postOtlp=H;var pt=Te(),mt=Ee(),er=5e3;m.MAX_POST_BYTES=900*1024;function oe(e){let t=JSON.stringify(e);return t===void 0?0:Buffer.byteLength(t,"utf-8")}function ht(e,t,n){let r=[],o=[],i=[],s=0;for(let a of e){let u=t(a);if(u>n){o.push(a);continue}i.length>0&&s+u>n&&(r.push(i),i=[],s=0),i.push(a),s+=u}return i.length>0&&r.push(i),{chunks:r,oversize:o}}function gt(e){if(!e)return{};if(typeof e=="object")return{...e};let t={};for(let n of e.split(",")){let[r,...o]=n.split("=");r&&o.length>0&&(t[r.trim()]=o.join("=").trim())}return t}function _t(){let e=process.env.OTEL_EXPORTER_OTLP_TRACES_ENDPOINT,t=process.env.OTEL_EXPORTER_OTLP_ENDPOINT,n;return e?n=e.replace(/\/+$/,""):t&&(n=t.replace(/\/+$/,"")+"/v1/traces"),n?{endpoint:n,headers:gt(process.env.OTEL_EXPORTER_OTLP_HEADERS)}:null}async function H(e,t,n){let r=new AbortController,o=setTimeout(()=>r.abort(),er);try{let i=await fetch(t.endpoint,{method:"POST",headers:{"Content-Type":"application/json",...t.headers},body:JSON.stringify(e),signal:r.signal});if(!i.ok){let s="";try{s=(await i.text()).slice(0,200)}catch{}let a=i.status===401||i.status===403?" \u2014 check OTEL_EXPORTER_OTLP_HEADERS (relay token)":i.status===404?" \u2014 check OTEL_EXPORTER_OTLP_TRACES_ENDPOINT path":i.status>=500?" \u2014 collector may be down":"";return process.stderr.write(`[${n}] OTLP POST ${i.status} ${t.endpoint}${a}${s?` body=${s}`:""}
|
|
15
15
|
`),!1}return!0}catch(i){return process.stderr.write(`[${n}] OTLP POST failed: ${i.message??String(i)}
|
|
16
|
-
`),!1}finally{clearTimeout(o)}}var
|
|
17
|
-
`);let i=[].concat(...r),s=0;for(let a of r){if(!await H((0,
|
|
18
|
-
`)}finally{this.queue.release()}}dropIfOversized(t){let n=oe(t);return n<=
|
|
19
|
-
`),!0)}};
|
|
20
|
-
`);return}await H(t,n,this.logPrefix)||this.queue.enqueue(t)}async flush(){let t=this.resolveOptions();if(!t)return;let n=this.queue.drain();if(n.length===0)return;let{chunks:r,oversize:o}=
|
|
21
|
-
`);let i=[].concat(...r),s=0;for(let a of r){if(!await H((0,
|
|
22
|
-
`)}}};
|
|
23
|
-
`)){let r=n.trim();if(!r||r.startsWith("#"))continue;let o=r.indexOf("=");if(o<0)continue;let i=r.slice(0,o).trim(),s=r.slice(o+1).trim();(s.startsWith('"')&&s.endsWith('"')||s.startsWith("'")&&s.endsWith("'"))&&(s=s.slice(1,-1)),i&&(t[i]=s)}return t}function
|
|
24
|
-
`)}function ce(e){return w(e)==="ENOENT"||w(e)==="ENOTDIR"}function dr(){let e=process.env.CLAUDE_CODE_EXECPATH,t=process.platform==="win32"?["claude.exe","claude.cmd"]:["claude"],n;if(e)n=[e];else{let r=(process.env.PATH??"").split(h.default.delimiter).filter(o=>h.default.isAbsolute(o));try{r.push(h.default.join(Yt.default.homedir(),".local","bin"))}catch(o){S(`native install directory lookup failed (${w(o)})`)}n=r.flatMap(o=>t.map(i=>h.default.join(o,i)))}for(let r of new Set(n))try{let o=P.default.realpathSync(r),i=P.default.statSync(o);if(!i.isFile())continue;return!e&&process.platform!=="win32"&&P.default.accessSync(o,P.default.constants.X_OK),{file:o,fingerprint:(0,ue.createHash)("sha256").update(JSON.stringify([o,i.ino,i.size,i.mtimeMs,i.ctimeMs])).digest("hex")}}catch(o){ce(o)||S(`executable lookup failed (${w(o)})`)}return S(e?"configured executable is unavailable":"no Claude executable found in PATH or ~/.local/bin"),null}function xe(e){let t;try{t=JSON.parse(P.default.readFileSync(e,"utf8"))}catch(n){return ce(n)||S(`package metadata could not be read (${n instanceof SyntaxError?"INVALID_JSON":w(n)})`),null}return typeof t!="object"||t===null||!("name"in t)||!("version"in t)||typeof t.name!="string"||typeof t.version!="string"||!zt.test(t.version)?null:t.name==="@anthropic-ai/claude-code"||t.name.startsWith("@anthropic-ai/claude-code-")?t.version:null}function fr(e){let t=h.default.dirname(e),n=h.default.basename(t)===".bin"&&/^claude(?:\.cmd)?$/i.test(h.default.basename(e));for(let r=0;r<6;r++){let o=xe(h.default.join(t,"package.json"));if(o)return o;if(h.default.basename(e).toLowerCase()==="claude.cmd"&&r===0){let s=xe(h.default.join(t,"node_modules","@anthropic-ai","claude-code","package.json"));if(s)return s}if(n&&h.default.basename(t)==="node_modules"){let s=xe(h.default.join(t,"@anthropic-ai","claude-code","package.json"));if(s)return s}let i=h.default.dirname(t);if(i===t)break;t=i}return null}function pr(e){return typeof e=="object"&&e!==null&&"fingerprint"in e&&typeof e.fingerprint=="string"&&/^[0-9a-f]{64}$/.test(e.fingerprint)&&"version"in e&&(e.version===null||typeof e.version=="string"&&zt.test(e.version))&&"checkedAt"in e&&typeof e.checkedAt=="number"&&Number.isFinite(e.checkedAt)}function Ft(e,t){let n=t-e.checkedAt;return n>=0&&n<(e.version===null?lr:cr)}function mr(e){if(!e)return[];let t=h.default.join(e,Xt);try{if(P.default.statSync(t).size>16384)return S("oversized version cache ignored"),[];let n=JSON.parse(P.default.readFileSync(t,"utf8"));if(Array.isArray(n)&&n.length<=Ne&&n.every(pr))return n;S("invalid version cache ignored")}catch(n){ce(n)||S(`version cache read failed (${n instanceof SyntaxError?"INVALID_JSON":w(n)})`)}return[]}function Gt(e){for(q.delete(e.fingerprint),q.set(e.fingerprint,e);q.size>Ne;){let t=q.keys().next().value;t!==void 0&&q.delete(t)}}function hr(e,t){if(!e)return;let n=h.default.join(e,Xt),r=`${n}.${process.pid}.${(0,ue.randomUUID)()}.tmp`;try{P.default.mkdirSync(e,{recursive:!0,mode:448}),P.default.writeFileSync(r,JSON.stringify(t),{encoding:"utf8",mode:384,flag:"wx"}),P.default.renameSync(r,n)}catch(o){S(`version cache write failed (${w(o)})`)}finally{try{P.default.unlinkSync(r)}catch(o){ce(o)||S(`temporary version cache cleanup failed (${w(o)})`)}}}function gr(e){if(/\.(cmd|bat|ps1)$/i.test(e))return S("command shim has no readable Claude package metadata"),null;let t=(0,Vt.spawnSync)(e,["--version"],{encoding:"utf8",stdio:["ignore","pipe","pipe"],shell:!1,windowsHide:!0,timeout:ur,killSignal:"SIGKILL",maxBuffer:4096});if(t.error||t.status!==0)return S(`version probe failed (${t.error?w(t.error):`exit ${t.status??t.signal}`})`),null;let n=ar.exec(t.stdout.trim())?.[1];return n||(S("version probe did not identify Claude Code"),null)}function Ht(e){let t=dr();if(!t)return"unknown";let n=fr(t.file);if(n)return n;let r=Date.now(),o=mr(e),i=[q.get(t.fingerprint),...o].find(a=>a&&a.fingerprint===t.fingerprint&&Ft(a,r));if(i)return Gt(i),i.version??"unknown";let s={fingerprint:t.fingerprint,version:gr(t.file),checkedAt:Date.now()};return Gt(s),hr(e,[...o.filter(a=>a.fingerprint!==s.fingerprint&&Ft(a,s.checkedAt)),s].slice(-Ne)),s.version??"unknown"}var x=p(require("node:path"));var k=p(require("node:fs")),je=p(require("node:path")),_r=new Set(["","unknown","undefined","null","n/a","none","auto","default"]),yr=256*1024,vr=1024*1024,Er=4096;function I(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)?e:void 0}function Ie(e){let t=I(e),n=t?"id"in t?t.id:t.name:e;if(typeof n!="string")return;let r=n.trim();if(!(r.startsWith("{")||r.startsWith("[")))return r.length<=512&&!/[\u0000-\u001f\u007f]/.test(r)&&!_r.has(r.toLowerCase())?r:void 0}function Kt(e,t){delete e.model,t&&(e.model=t.name,!(t.source==="hook.model"&&e.model_source!==void 0)&&(e.model_source!==void 0&&(e.model_original_source=e.model_source),e.model_source=t.source))}function F(e){return typeof e=="string"&&/^[A-Za-z0-9][A-Za-z0-9_.:-]{0,255}$/.test(e)?e:void 0}function le(e){let t=typeof e=="number"?e:typeof e=="string"&&/^\d{4}-\d{2}-\d{2}T/.test(e)?Date.parse(e):NaN;return Number.isFinite(t)&&t>=0?t:void 0}function Zt(e,t){let n=e.timestamp===void 0?le(t):le(e.timestamp);return n!==void 0&&n<=t?n:void 0}function Jt(e){if(typeof e!="string"||e.length>4096||/[\u0000-\u001f]/.test(e)||!je.default.isAbsolute(e)||je.default.extname(e)!==".jsonl")return;let t;try{t=k.default.openSync(e,k.default.constants.O_RDONLY|k.default.constants.O_NONBLOCK|(k.default.constants.O_NOFOLLOW??0));let n=k.default.fstatSync(t);if(!n.isFile()||!Number.isSafeInteger(n.size)||n.size<=0)return;let r=Buffer.alloc(Math.min(n.size,yr));if(k.default.readSync(t,r,0,r.length,0)!==r.length)return;let o=r.indexOf(10),i;if(o>=0)try{i=I(JSON.parse(r.toString("utf8",0,o)))}catch{}let s=Math.max(0,n.size-vr),a=n.size<=r.length?r:Buffer.alloc(n.size-s);if(a!==r&&k.default.readSync(t,a,0,a.length,s)!==a.length)return;let c=k.default.fstatSync(t);if(c.size<n.size||c.size===n.size&&c.mtimeMs!==n.mtimeMs)return;let l=s>0?a.indexOf(10)+1:0,d=a.lastIndexOf(10);if(s>0&&l===0||d<l)return;let y=[],v=0;for(;d>l&&v<Er;){let J=a.lastIndexOf(10,d-1),Y=Math.max(l,J+1),Ue=a.toString("utf8",Y,d).trim();if(Ue){let Be=I(JSON.parse(Ue));Be&&y.push(Be)}d=Y-1,v++}return y.reverse(),{first:i,rows:y,complete:s===0&&d<0&&a[a.length-1]===10}}catch{return}finally{if(t!==void 0)try{k.default.closeSync(t)}catch{}}}function Wt(e){let t=e[0];return t&&e.every(n=>n?.name===t.name)?t:void 0}var Pr=new Set(["PreToolUse","PostToolUse","PostToolUseFailure","PermissionRequest","PermissionDenied"]);function Sr(e,t){let n=x.default.dirname(e);if(x.default.basename(n)!=="subagents"||x.default.basename(x.default.dirname(n))!==t)return;let r=/^agent-(.+)\.jsonl$/.exec(x.default.basename(e));return F(r?.[1])}function Qt(e,t){let n=Ie(e.model);if(n)return{name:n,source:"hook.model"};try{return Tr(e,t)}catch{return}}function Tr(e,t){if(!Pr.has(e.hook_event_name))return;let n=F(e.session_id),r=F(e.tool_use_id),o=Zt(e,t);if(!n||!r||o===void 0||typeof e.transcript_path!="string")return;let i=Sr(e.transcript_path,n),s=e.agent_id===void 0?i:F(e.agent_id);if(e.agent_id!==void 0&&!s||i!==void 0&&i!==s||!s&&e.agent_type!==void 0||x.default.basename(x.default.dirname(e.transcript_path))==="subagents"&&!i)return;let a=Jt(e.transcript_path);if(!a)return;let c=[];for(let l of a.rows){let d=le(l.timestamp);if(l.type!=="assistant"||l.sessionId!==n||d===void 0||d>o)continue;let y=l.agentId===void 0?void 0:F(l.agentId);if(y!==s||l.agentId!==void 0&&!y||l.isSidechain===!0&&!s)continue;let v=I(l.message);if(!v||v.role!==void 0&&v.role!=="assistant"||!Array.isArray(v.content)||!v.content.some(Y=>I(Y)?.type==="tool_use"&&I(Y)?.id===r))continue;let J=Ie(v.model);c.push(J?{name:J,source:"transcript.assistant.message"}:void 0)}return Wt(c)}var G=p(O()),de;function br(){if(de===void 0)try{de=fe.default.userInfo().username}catch{de=process.env.USER??process.env.LOGNAME??(typeof process.getuid=="function"?String(process.getuid()):"unknown")}return de}var en="1.10.2",Or=new Set(["cc.hook","cc.tool_name","cc.tool_use_id","cc.session_id","cc.transcript_path","cc.cwd","cc.permission_mode"]),kr=new Set(["cc.tool_input","cc.tool_response","cc.tool_calls"]),Ar={skipRedactKeys:Or,bashContextKeys:kr};function wr(e,t){let n=[];n.push({key:"ingest.type",value:{stringValue:"cc"}}),n.push({key:"cc.hook",value:{stringValue:e.hook_event_name}});let r={};for(let[o,i]of Object.entries(e))o!=="hook_event_name"&&(r[o]=i);return Kt(r,Qt(e,t)),n.push(...(0,G.attrsFromRecord)(r,"cc",Ar)),n}function Rr(e){return[{key:"service.name",value:{stringValue:"claude-code"}},{key:"service.version",value:{stringValue:Ht(e)}},{key:"telemetry.sdk.name",value:{stringValue:"pinta-cc"}},{key:"telemetry.sdk.language",value:{stringValue:"nodejs"}},{key:"telemetry.sdk.version",value:{stringValue:en}},{key:"process.pid",value:{intValue:process.pid}},{key:"process.owner",value:{stringValue:br()}},{key:"host.name",value:{stringValue:fe.default.hostname()}},{key:"host.arch",value:{stringValue:fe.default.arch()}}]}function tn(e){let t=e.now??Date.now();return(0,G.buildPayload)({traceId:e.traceId,spanName:`cc.${(0,G.snakeCase)(e.event.hook_event_name)}`,attributes:wr(e.event,t),resource:Rr(e.versionCacheDir),scope:{name:"pinta-cc",version:en},now:t})}function C(e,t,n={}){let r=new ae(t),o=n.traceMode==="new"?r.newTrace():r.currentTrace();return tn({event:e,traceId:o,versionCacheDir:t.pluginData})}async function U(e,t){if(!se())return;let n=new ie(t);await n.flush(),await n.send(e)}function V(e,t){if(!se())return;let n=Buffer.byteLength(JSON.stringify(e),"utf-8");if(n>Z.MAX_POST_BYTES){process.stderr.write(`[pinta-cc] dropping oversized span payload (${n} > ${Z.MAX_POST_BYTES} bytes) \u2014 undeliverable, not queued
|
|
25
|
-
`);return}new
|
|
26
|
-
`)}try{if((0,
|
|
27
|
-
`)}return 0}var
|
|
28
|
-
`);try{if((0,
|
|
29
|
-
`)}return 0}async function
|
|
30
|
-
`);try{if((0,
|
|
31
|
-
`)}return 0}async function
|
|
32
|
-
`),e=0}return e}
|
|
16
|
+
`),!1}finally{clearTimeout(o)}}var be=class{queue;logPrefix;resolveOptions;constructor(t){this.queue=new pt.DiskRetryQueue(t.pluginData,t.logPrefix),this.logPrefix=t.logPrefix,this.resolveOptions=t.resolveOptions??_t}async send(t){let n=this.resolveOptions();if(!n||this.dropIfOversized(t))return;await H(t,n,this.logPrefix)||this.queue.enqueue(t)}async flush(){let t=this.resolveOptions();if(t&&this.queue.tryAcquireLock())try{let n=this.queue.readAll();if(n.length===0)return;let{chunks:r,oversize:o}=ht(n,a=>oe(a.payload),m.MAX_POST_BYTES);o.length>0&&process.stderr.write(`[${this.logPrefix}] dropping ${o.length} oversized retry ${o.length===1?"entry":"entries"} (each > ${m.MAX_POST_BYTES} bytes \u2014 the backend caps the request body, so they can never be delivered)
|
|
17
|
+
`);let i=[].concat(...r),s=0;for(let a of r){if(!await H((0,mt.mergeBatch)(a.map(l=>l.payload)),t,this.logPrefix))break;s+=a.length}this.queue.rewrite(i.slice(s))}catch(n){process.stderr.write(`[${this.logPrefix}] flush failed: ${n?.message??String(n)}
|
|
18
|
+
`)}finally{this.queue.release()}}dropIfOversized(t){let n=oe(t);return n<=m.MAX_POST_BYTES?!1:(process.stderr.write(`[${this.logPrefix}] dropping oversized span payload (${n} > ${m.MAX_POST_BYTES} bytes) \u2014 undeliverable, not queued
|
|
19
|
+
`),!0)}};m.DiskTransport=be;var Oe=class{queue=new pt.MemoryRetryQueue;logPrefix;resolveOptions;constructor(t){this.logPrefix=t.logPrefix,this.resolveOptions=t.resolveOptions}async send(t){let n=this.resolveOptions();if(!n)return;if(oe(t)>m.MAX_POST_BYTES){process.stderr.write(`[${this.logPrefix}] dropping oversized span payload (> ${m.MAX_POST_BYTES} bytes) \u2014 undeliverable, not buffered
|
|
20
|
+
`);return}await H(t,n,this.logPrefix)||this.queue.enqueue(t)}async flush(){let t=this.resolveOptions();if(!t)return;let n=this.queue.drain();if(n.length===0)return;let{chunks:r,oversize:o}=ht(n,oe,m.MAX_POST_BYTES);o.length>0&&process.stderr.write(`[${this.logPrefix}] dropping ${o.length} oversized buffered ${o.length===1?"payload":"payloads"} (each > ${m.MAX_POST_BYTES} bytes \u2014 undeliverable)
|
|
21
|
+
`);let i=[].concat(...r),s=0;for(let a of r){if(!await H((0,mt.mergeBatch)(a),t,this.logPrefix))break;s+=a.length}for(let a of i.slice(s))this.queue.enqueue(a)}};m.MemoryTransport=Oe});var Me=b(C=>{"use strict";var we=C&&C.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(C,"__esModule",{value:!0});C.TraceManager=void 0;C.generateUlid=Et;var vt=we(require("fs")),tr=we(require("path")),nr=we(require("crypto")),rr=te(),ke="0123456789ABCDEFGHJKMNPQRSTVWXYZ";function Et(){let e=Date.now(),t="",n=e;for(let i=0;i<10;i++)t=ke[n&31]+t,n=Math.floor(n/32);let r=nr.default.randomBytes(10),o="";for(let i=0;i<10;i++)o+=ke[r[i]&31];for(;o.length<16;)o+=ke[0];return t+o}var Ae=class{tracePath;constructor(t){this.tracePath=t}newTrace(){let t=Et();return this.save(t),t}currentTrace(){try{let t=vt.default.readFileSync(this.tracePath,"utf-8"),{traceId:n}=JSON.parse(t);if(n)return n}catch{}return this.newTrace()}save(t){try{vt.default.mkdirSync(tr.default.dirname(this.tracePath),{recursive:!0}),(0,rr.atomicWriteFileSync)(this.tracePath,JSON.stringify({traceId:t}))}catch(n){process.stderr.write(`[pinta-core] trace persistence failed: ${n}
|
|
22
|
+
`)}}};C.TraceManager=Ae});var Ot=b(x=>{"use strict";var St=x&&x.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(x,"__esModule",{value:!0});x.MemorySessionTraceManager=x.DiskSessionTraceManager=void 0;var Pt=St(require("fs")),or=St(require("path")),Tt=Me(),sr=te(),bt=200,Re=class{tracePath;maxSessions;constructor(t,n={}){this.tracePath=t,this.maxSessions=n.maxSessions??bt}read(){try{let t=JSON.parse(Pt.default.readFileSync(this.tracePath,"utf-8"));if(t&&typeof t=="object"&&!("traceId"in t))return t}catch{}return{}}write(t){try{Pt.default.mkdirSync(or.default.dirname(this.tracePath),{recursive:!0});let n=Object.entries(t),r=n.length>this.maxSessions?Object.fromEntries(n.slice(-this.maxSessions)):t;(0,sr.atomicWriteFileSync)(this.tracePath,JSON.stringify(r))}catch{}}newTrace(t){let n=t||"default",r=(0,Tt.generateUlid)(),o=this.read();return o[n]=r,this.write(o),r}currentTrace(t){let n=t||"default",r=this.read()[n];return r||this.newTrace(n)}};x.DiskSessionTraceManager=Re;var De=class{map=new Map;maxSessions;constructor(t={}){this.maxSessions=t.maxSessions??bt}newTrace(t){let n=t||"default",r=(0,Tt.generateUlid)();if(this.map.set(n,r),this.map.size>this.maxSessions){let o=this.map.keys().next().value;o!==void 0&&this.map.delete(o)}return r}currentTrace(t){let n=t||"default";return this.map.get(n)??this.newTrace(n)}};x.MemorySessionTraceManager=De});var wt=b(I=>{"use strict";var xe=I&&I.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(I,"__esModule",{value:!0});I.envFilePath=cr;I.parseEnvFile=At;I.loadEnvFile=ur;var ir=xe(require("node:fs")),ar=xe(require("node:os")),kt=xe(require("node:path"));function cr(e,t,n){let r=n?process.env[n]:void 0,o=r&&r.length>0?r:kt.default.join(ar.default.homedir(),e);return kt.default.join(o,t)}function At(e){let t={};for(let n of e.split(`
|
|
23
|
+
`)){let r=n.trim();if(!r||r.startsWith("#"))continue;let o=r.indexOf("=");if(o<0)continue;let i=r.slice(0,o).trim(),s=r.slice(o+1).trim();(s.startsWith('"')&&s.endsWith('"')||s.startsWith("'")&&s.endsWith("'"))&&(s=s.slice(1,-1)),i&&(t[i]=s)}return t}function ur(e){let t;try{t=ir.default.readFileSync(e,"utf-8")}catch{return}let n=At(t);for(let[r,o]of Object.entries(n))process.env[r]===void 0&&(process.env[r]=o)}});var O=b(c=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0});c.loadEnvFile=c.parseEnvFile=c.envFilePath=c.MemorySessionTraceManager=c.DiskSessionTraceManager=c.generateUlid=c.TraceManager=c.MAX_POST_BYTES=c.parseHeadersEnv=c.envOptionsResolver=c.postOtlp=c.MemoryTransport=c.DiskTransport=c.MemoryRetryQueue=c.DiskRetryQueue=c.GUARD_BUDGET_HEADER=c.GUARD_STATUS_REFUSED=c.evaluateGuard=c.MAX_SPAN_BYTES=c.enforceSpanBudget=c.mergeBatch=c.attachGuard=c.buildPayload=c.clientAttrs=c.guardAttrs=c.attrsFromRecord=c.toOtlpValue=c.snakeCase=c.newSpanId=c.ulidToTraceId=c.MAX_BYTES=c.PATTERNS=c.applyMatches=c.resolveOverlaps=c.collectMatches=c.truncateTo=c.truncate=c.redact=void 0;var N=ge();Object.defineProperty(c,"redact",{enumerable:!0,get:function(){return N.redact}});Object.defineProperty(c,"truncate",{enumerable:!0,get:function(){return N.truncate}});Object.defineProperty(c,"truncateTo",{enumerable:!0,get:function(){return N.truncateTo}});Object.defineProperty(c,"collectMatches",{enumerable:!0,get:function(){return N.collectMatches}});Object.defineProperty(c,"resolveOverlaps",{enumerable:!0,get:function(){return N.resolveOverlaps}});Object.defineProperty(c,"applyMatches",{enumerable:!0,get:function(){return N.applyMatches}});Object.defineProperty(c,"PATTERNS",{enumerable:!0,get:function(){return N.PATTERNS}});Object.defineProperty(c,"MAX_BYTES",{enumerable:!0,get:function(){return N.MAX_BYTES}});var E=Ee();Object.defineProperty(c,"ulidToTraceId",{enumerable:!0,get:function(){return E.ulidToTraceId}});Object.defineProperty(c,"newSpanId",{enumerable:!0,get:function(){return E.newSpanId}});Object.defineProperty(c,"snakeCase",{enumerable:!0,get:function(){return E.snakeCase}});Object.defineProperty(c,"toOtlpValue",{enumerable:!0,get:function(){return E.toOtlpValue}});Object.defineProperty(c,"attrsFromRecord",{enumerable:!0,get:function(){return E.attrsFromRecord}});Object.defineProperty(c,"guardAttrs",{enumerable:!0,get:function(){return E.guardAttrs}});Object.defineProperty(c,"clientAttrs",{enumerable:!0,get:function(){return E.clientAttrs}});Object.defineProperty(c,"buildPayload",{enumerable:!0,get:function(){return E.buildPayload}});Object.defineProperty(c,"attachGuard",{enumerable:!0,get:function(){return E.attachGuard}});Object.defineProperty(c,"mergeBatch",{enumerable:!0,get:function(){return E.mergeBatch}});Object.defineProperty(c,"enforceSpanBudget",{enumerable:!0,get:function(){return E.enforceSpanBudget}});Object.defineProperty(c,"MAX_SPAN_BYTES",{enumerable:!0,get:function(){return E.MAX_SPAN_BYTES}});var Ne=lt();Object.defineProperty(c,"evaluateGuard",{enumerable:!0,get:function(){return Ne.evaluateGuard}});Object.defineProperty(c,"GUARD_STATUS_REFUSED",{enumerable:!0,get:function(){return Ne.GUARD_STATUS_REFUSED}});Object.defineProperty(c,"GUARD_BUDGET_HEADER",{enumerable:!0,get:function(){return Ne.GUARD_BUDGET_HEADER}});var Mt=Te();Object.defineProperty(c,"DiskRetryQueue",{enumerable:!0,get:function(){return Mt.DiskRetryQueue}});Object.defineProperty(c,"MemoryRetryQueue",{enumerable:!0,get:function(){return Mt.MemoryRetryQueue}});var q=yt();Object.defineProperty(c,"DiskTransport",{enumerable:!0,get:function(){return q.DiskTransport}});Object.defineProperty(c,"MemoryTransport",{enumerable:!0,get:function(){return q.MemoryTransport}});Object.defineProperty(c,"postOtlp",{enumerable:!0,get:function(){return q.postOtlp}});Object.defineProperty(c,"envOptionsResolver",{enumerable:!0,get:function(){return q.envOptionsResolver}});Object.defineProperty(c,"parseHeadersEnv",{enumerable:!0,get:function(){return q.parseHeadersEnv}});Object.defineProperty(c,"MAX_POST_BYTES",{enumerable:!0,get:function(){return q.MAX_POST_BYTES}});var Rt=Me();Object.defineProperty(c,"TraceManager",{enumerable:!0,get:function(){return Rt.TraceManager}});Object.defineProperty(c,"generateUlid",{enumerable:!0,get:function(){return Rt.generateUlid}});var Dt=Ot();Object.defineProperty(c,"DiskSessionTraceManager",{enumerable:!0,get:function(){return Dt.DiskSessionTraceManager}});Object.defineProperty(c,"MemorySessionTraceManager",{enumerable:!0,get:function(){return Dt.MemorySessionTraceManager}});var je=wt();Object.defineProperty(c,"envFilePath",{enumerable:!0,get:function(){return je.envFilePath}});Object.defineProperty(c,"parseEnvFile",{enumerable:!0,get:function(){return je.parseEnvFile}});Object.defineProperty(c,"loadEnvFile",{enumerable:!0,get:function(){return je.loadEnvFile}})});var Z=h(O());function lr(){return(0,Z.envFilePath)(".claude","pinta-cc.env")}function xt(e=lr()){(0,Z.loadEnvFile)(e)}function Nt(){process.env.CLAUDE_PLUGIN_OPTION_ENDPOINT&&!process.env.OTEL_EXPORTER_OTLP_TRACES_ENDPOINT&&(process.env.OTEL_EXPORTER_OTLP_TRACES_ENDPOINT=process.env.CLAUDE_PLUGIN_OPTION_ENDPOINT),process.env.CLAUDE_PLUGIN_OPTION_API_KEY&&!process.env.OTEL_EXPORTER_OTLP_HEADERS&&(process.env.OTEL_EXPORTER_OTLP_HEADERS=`x-pinta-relay-token=${process.env.CLAUDE_PLUGIN_OPTION_API_KEY}`),!process.env.PINTA_RELAY_TOKEN&&process.env.CLAUDE_PLUGIN_OPTION_API_KEY&&(process.env.PINTA_RELAY_TOKEN=process.env.CLAUDE_PLUGIN_OPTION_API_KEY)}var Ce=h(require("path")),jt=h(O());function Ct(){let e=process.env.CLAUDE_PLUGIN_ROOT||process.cwd(),t=process.env.CLAUDE_PLUGIN_DATA||Ce.default.join(e,".plugin-data");return{pluginRoot:e,pluginData:t,tracePath:Ce.default.join(t,"trace.json")}}function se(){return(0,jt.envOptionsResolver)()!==null}function It(e){return e.hook_event_name==="PreToolUse"}function Ut(e){return e.hook_event_name==="PostToolUse"||e.hook_event_name==="PostToolUseFailure"}function Bt(e){return e.hook_event_name==="PostToolBatch"}function Lt(e){return e.hook_event_name==="UserPromptSubmit"}function $t(e){return e.hook_event_name==="SessionStart"||e.hook_event_name==="SessionEnd"}function qt(e){return e.hook_event_name==="SubagentStart"||e.hook_event_name==="SubagentStop"}function Ft(e){return e.hook_event_name==="Stop"}function Vt(e){return e.hook_event_name==="PermissionRequest"||e.hook_event_name==="PermissionDenied"}var fr=new Set(["Notification","TaskCreated","TaskCompleted"]);function Gt(e){return fr.has(e.hook_event_name)}var un=h(O());var zt=h(O()),dr=1e4,pr="pinta-cc/1.10.3-skax.0";function F(e,t){return(0,zt.evaluateGuard)(e,t,{timeoutMs:dr,token:process.env.PINTA_RELAY_TOKEN??"",disabled:process.env.PINTA_GUARD_DISABLED==="1",userAgent:pr})}var Q=h(O());var Yt=h(O()),ie=class extends Yt.DiskTransport{constructor(t){super({pluginData:t.pluginData,logPrefix:"pinta-cc"})}};var Xt=h(O()),ae=class extends Xt.TraceManager{constructor(t){super(t.tracePath)}};var de=h(require("os"));var Kt=require("node:child_process"),ce=require("node:crypto"),P=h(require("node:fs")),Ht=h(require("node:os")),_=h(require("node:path")),Zt=/^\d+\.\d+\.\d+(?:-[0-9A-Za-z.-]+)?(?:\+[0-9A-Za-z.-]+)?$/,mr=/^v?(\d+\.\d+\.\d+(?:-[0-9A-Za-z.-]+)?(?:\+[0-9A-Za-z.-]+)?)\s+\(Claude Code\)$/m,hr=2e3,gr=24*60*60*1e3,_r=3e4,Ue=8,Qt="claude-version.json",V=new Map;function M(e){return typeof e=="object"&&e!==null&&"code"in e&&typeof e.code=="string"?e.code:"UNKNOWN"}function S(e){process.stderr.write(`[pinta-cc] CLI version: ${e}
|
|
24
|
+
`)}function ue(e){return M(e)==="ENOENT"||M(e)==="ENOTDIR"}function yr(){let e=process.env.CLAUDE_CODE_EXECPATH,t=process.platform==="win32"?["claude.exe","claude.cmd"]:["claude"],n;if(e)n=[e];else{let r=(process.env.PATH??"").split(_.default.delimiter).filter(o=>_.default.isAbsolute(o));try{r.push(_.default.join(Ht.default.homedir(),".local","bin"))}catch(o){S(`native install directory lookup failed (${M(o)})`)}n=r.flatMap(o=>t.map(i=>_.default.join(o,i)))}for(let r of new Set(n))try{let o=P.default.realpathSync(r),i=P.default.statSync(o);if(!i.isFile())continue;return!e&&process.platform!=="win32"&&P.default.accessSync(o,P.default.constants.X_OK),{file:o,fingerprint:(0,ce.createHash)("sha256").update(JSON.stringify([o,i.ino,i.size,i.mtimeMs,i.ctimeMs])).digest("hex")}}catch(o){ue(o)||S(`executable lookup failed (${M(o)})`)}return S(e?"configured executable is unavailable":"no Claude executable found in PATH or ~/.local/bin"),null}function Ie(e){let t;try{t=JSON.parse(P.default.readFileSync(e,"utf8"))}catch(n){return ue(n)||S(`package metadata could not be read (${n instanceof SyntaxError?"INVALID_JSON":M(n)})`),null}return typeof t!="object"||t===null||!("name"in t)||!("version"in t)||typeof t.name!="string"||typeof t.version!="string"||!Zt.test(t.version)?null:t.name==="@anthropic-ai/claude-code"||t.name.startsWith("@anthropic-ai/claude-code-")?t.version:null}function vr(e){let t=_.default.dirname(e),n=_.default.basename(t)===".bin"&&/^claude(?:\.cmd)?$/i.test(_.default.basename(e));for(let r=0;r<6;r++){let o=Ie(_.default.join(t,"package.json"));if(o)return o;if(_.default.basename(e).toLowerCase()==="claude.cmd"&&r===0){let s=Ie(_.default.join(t,"node_modules","@anthropic-ai","claude-code","package.json"));if(s)return s}if(n&&_.default.basename(t)==="node_modules"){let s=Ie(_.default.join(t,"@anthropic-ai","claude-code","package.json"));if(s)return s}let i=_.default.dirname(t);if(i===t)break;t=i}return null}function Er(e){return typeof e=="object"&&e!==null&&"fingerprint"in e&&typeof e.fingerprint=="string"&&/^[0-9a-f]{64}$/.test(e.fingerprint)&&"version"in e&&(e.version===null||typeof e.version=="string"&&Zt.test(e.version))&&"checkedAt"in e&&typeof e.checkedAt=="number"&&Number.isFinite(e.checkedAt)}function Jt(e,t){let n=t-e.checkedAt;return n>=0&&n<(e.version===null?_r:gr)}function Pr(e){if(!e)return[];let t=_.default.join(e,Qt);try{if(P.default.statSync(t).size>16384)return S("oversized version cache ignored"),[];let n=JSON.parse(P.default.readFileSync(t,"utf8"));if(Array.isArray(n)&&n.length<=Ue&&n.every(Er))return n;S("invalid version cache ignored")}catch(n){ue(n)||S(`version cache read failed (${n instanceof SyntaxError?"INVALID_JSON":M(n)})`)}return[]}function Wt(e){for(V.delete(e.fingerprint),V.set(e.fingerprint,e);V.size>Ue;){let t=V.keys().next().value;t!==void 0&&V.delete(t)}}function Sr(e,t){if(!e)return;let n=_.default.join(e,Qt),r=`${n}.${process.pid}.${(0,ce.randomUUID)()}.tmp`;try{P.default.mkdirSync(e,{recursive:!0,mode:448}),P.default.writeFileSync(r,JSON.stringify(t),{encoding:"utf8",mode:384,flag:"wx"}),P.default.renameSync(r,n)}catch(o){S(`version cache write failed (${M(o)})`)}finally{try{P.default.unlinkSync(r)}catch(o){ue(o)||S(`temporary version cache cleanup failed (${M(o)})`)}}}function Tr(e){if(/\.(cmd|bat|ps1)$/i.test(e))return S("command shim has no readable Claude package metadata"),null;let t=(0,Kt.spawnSync)(e,["--version"],{encoding:"utf8",stdio:["ignore","pipe","pipe"],shell:!1,windowsHide:!0,timeout:hr,killSignal:"SIGKILL",maxBuffer:4096});if(t.error||t.status!==0)return S(`version probe failed (${t.error?M(t.error):`exit ${t.status??t.signal}`})`),null;let n=mr.exec(t.stdout.trim())?.[1];return n||(S("version probe did not identify Claude Code"),null)}function en(e){let t=yr();if(!t)return"unknown";let n=vr(t.file);if(n)return n;let r=Date.now(),o=Pr(e),i=[V.get(t.fingerprint),...o].find(a=>a&&a.fingerprint===t.fingerprint&&Jt(a,r));if(i)return Wt(i),i.version??"unknown";let s={fingerprint:t.fingerprint,version:Tr(t.file),checkedAt:Date.now()};return Wt(s),Sr(e,[...o.filter(a=>a.fingerprint!==s.fingerprint&&Jt(a,s.checkedAt)),s].slice(-Ue)),s.version??"unknown"}var j=h(require("node:path"));var k=h(require("node:fs")),Be=h(require("node:path")),br=new Set(["","unknown","undefined","null","n/a","none","auto","default"]),Or=256*1024,kr=1024*1024,Ar=4096;function U(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)?e:void 0}function Le(e){let t=U(e),n=t?"id"in t?t.id:t.name:e;if(typeof n!="string")return;let r=n.trim();if(!(r.startsWith("{")||r.startsWith("[")))return r.length<=512&&!/[\u0000-\u001f\u007f]/.test(r)&&!br.has(r.toLowerCase())?r:void 0}function tn(e,t){delete e.model,t&&(e.model=t.name,!(t.source==="hook.model"&&e.model_source!==void 0)&&(e.model_source!==void 0&&(e.model_original_source=e.model_source),e.model_source=t.source))}function G(e){return typeof e=="string"&&/^[A-Za-z0-9][A-Za-z0-9_.:-]{0,255}$/.test(e)?e:void 0}function le(e){let t=typeof e=="number"?e:typeof e=="string"&&/^\d{4}-\d{2}-\d{2}T/.test(e)?Date.parse(e):NaN;return Number.isFinite(t)&&t>=0?t:void 0}function nn(e,t){let n=e.timestamp===void 0?le(t):le(e.timestamp);return n!==void 0&&n<=t?n:void 0}function rn(e){if(typeof e!="string"||e.length>4096||/[\u0000-\u001f]/.test(e)||!Be.default.isAbsolute(e)||Be.default.extname(e)!==".jsonl")return;let t;try{t=k.default.openSync(e,k.default.constants.O_RDONLY|k.default.constants.O_NONBLOCK|(k.default.constants.O_NOFOLLOW??0));let n=k.default.fstatSync(t);if(!n.isFile()||!Number.isSafeInteger(n.size)||n.size<=0)return;let r=Buffer.alloc(Math.min(n.size,Or));if(k.default.readSync(t,r,0,r.length,0)!==r.length)return;let o=r.indexOf(10),i;if(o>=0)try{i=U(JSON.parse(r.toString("utf8",0,o)))}catch{}let s=Math.max(0,n.size-kr),a=n.size<=r.length?r:Buffer.alloc(n.size-s);if(a!==r&&k.default.readSync(t,a,0,a.length,s)!==a.length)return;let u=k.default.fstatSync(t);if(u.size<n.size||u.size===n.size&&u.mtimeMs!==n.mtimeMs)return;let l=s>0?a.indexOf(10)+1:0,d=a.lastIndexOf(10);if(s>0&&l===0||d<l)return;let f=[],p=0;for(;d>l&&p<Ar;){let A=a.lastIndexOf(10,d-1),X=Math.max(l,A+1),qe=a.toString("utf8",X,d).trim();if(qe){let Fe=U(JSON.parse(qe));Fe&&f.push(Fe)}d=X-1,p++}return f.reverse(),{first:i,rows:f,complete:s===0&&d<0&&a[a.length-1]===10}}catch{return}finally{if(t!==void 0)try{k.default.closeSync(t)}catch{}}}function on(e){let t=e[0];return t&&e.every(n=>n?.name===t.name)?t:void 0}var wr=new Set(["PreToolUse","PostToolUse","PostToolUseFailure","PermissionRequest","PermissionDenied"]);function Mr(e,t){let n=j.default.dirname(e);if(j.default.basename(n)!=="subagents"||j.default.basename(j.default.dirname(n))!==t)return;let r=/^agent-(.+)\.jsonl$/.exec(j.default.basename(e));return G(r?.[1])}function sn(e,t){let n=Le(e.model);if(n)return{name:n,source:"hook.model"};try{return Rr(e,t)}catch{return}}function Rr(e,t){if(!wr.has(e.hook_event_name))return;let n=G(e.session_id),r=G(e.tool_use_id),o=nn(e,t);if(!n||!r||o===void 0||typeof e.transcript_path!="string")return;let i=Mr(e.transcript_path,n),s=e.agent_id===void 0?i:G(e.agent_id);if(e.agent_id!==void 0&&!s||i!==void 0&&i!==s||!s&&e.agent_type!==void 0||j.default.basename(j.default.dirname(e.transcript_path))==="subagents"&&!i)return;let a=rn(e.transcript_path);if(!a)return;let u=[];for(let l of a.rows){let d=le(l.timestamp);if(l.type!=="assistant"||l.sessionId!==n||d===void 0||d>o)continue;let f=l.agentId===void 0?void 0:G(l.agentId);if(f!==s||l.agentId!==void 0&&!f||l.isSidechain===!0&&!s)continue;let p=U(l.message);if(!p||p.role!==void 0&&p.role!=="assistant"||!Array.isArray(p.content)||!p.content.some(X=>U(X)?.type==="tool_use"&&U(X)?.id===r))continue;let A=Le(p.model);u.push(A?{name:A,source:"transcript.assistant.message"}:void 0)}return on(u)}var z=h(O()),fe;function Dr(){if(fe===void 0)try{fe=de.default.userInfo().username}catch{fe=process.env.USER??process.env.LOGNAME??(typeof process.getuid=="function"?String(process.getuid()):"unknown")}return fe}var an="1.10.3-skax.0",xr=new Set(["cc.hook","cc.tool_name","cc.tool_use_id","cc.session_id","cc.transcript_path","cc.cwd","cc.permission_mode"]),Nr=new Set(["cc.tool_input","cc.tool_response","cc.tool_calls"]),jr={skipRedactKeys:xr,bashContextKeys:Nr,outputForKey:(e,t)=>{if(e==="cc.error"||e==="cc.error_message")return t;if(e==="cc.tool_calls"&&Array.isArray(t))return t.map(n=>n&&typeof n=="object"&&"tool_response"in n?n.tool_response:void 0);if(!(e!=="cc.tool_response"&&e!=="cc.tool_result"))return t&&typeof t=="object"&&"file"in t&&t.file&&typeof t.file=="object"&&"content"in t.file&&t.file.content!==void 0?t.file.content:t}};function Cr(e,t){let n=[];n.push({key:"ingest.type",value:{stringValue:"cc"}}),n.push({key:"cc.hook",value:{stringValue:e.hook_event_name}});let r={};for(let[o,i]of Object.entries(e))o!=="hook_event_name"&&(r[o]=i);return tn(r,sn(e,t)),n.push(...(0,z.attrsFromRecord)(r,"cc",jr)),n}function Ir(e){return[{key:"service.name",value:{stringValue:"claude-code"}},{key:"service.version",value:{stringValue:en(e)}},{key:"telemetry.sdk.name",value:{stringValue:"pinta-cc"}},{key:"telemetry.sdk.language",value:{stringValue:"nodejs"}},{key:"telemetry.sdk.version",value:{stringValue:an}},{key:"process.pid",value:{intValue:process.pid}},{key:"process.owner",value:{stringValue:Dr()}},{key:"host.name",value:{stringValue:de.default.hostname()}},{key:"host.arch",value:{stringValue:de.default.arch()}}]}function cn(e){let t=e.now??Date.now();return(0,z.buildPayload)({traceId:e.traceId,spanName:`cc.${(0,z.snakeCase)(e.event.hook_event_name)}`,attributes:Cr(e.event,t),resource:Ir(e.versionCacheDir),scope:{name:"pinta-cc",version:an},now:t})}function B(e,t,n={}){let r=new ae(t),o=n.traceMode==="new"?r.newTrace():r.currentTrace();return cn({event:e,traceId:o,versionCacheDir:t.pluginData})}async function L(e,t){if(!se())return;let n=new ie(t);await n.flush(),await n.send(e)}function Y(e,t){if(!se())return;let n=Buffer.byteLength(JSON.stringify(e),"utf-8");if(n>Q.MAX_POST_BYTES){process.stderr.write(`[pinta-cc] dropping oversized span payload (${n} > ${Q.MAX_POST_BYTES} bytes) \u2014 undeliverable, not queued
|
|
25
|
+
`);return}new Q.DiskRetryQueue(t.pluginData,"pinta-cc").enqueue(e)}async function T(e,t,n={}){se()&&await L(B(e,t,n),t)}async function ln(e,t){let n=B(e,t),r=await F(n,process.env.PINTA_GUARD_ENDPOINT);if(r?.decision==="DENY"){let i={hookSpecificOutput:{hookEventName:"PreToolUse",permissionDecision:"deny",permissionDecisionReason:r.userMessage??r.reason??"guard_deny"}};process.stdout.write(JSON.stringify(i)+`
|
|
26
|
+
`)}try{if((0,un.attachGuard)(n,r),r?.decision==="DENY")return Y(n,t),0;await L(n,t)}catch(o){process.stderr.write(`[pinta-cc] telemetry emit failed: ${o}
|
|
27
|
+
`)}return 0}var fn=h(O());async function dn(e,t){if(e.hook_event_name==="PostToolUseFailure")return await T(e,t),0;let n=B(e,t),r=await F(n,process.env.PINTA_GUARD_ENDPOINT);r?.decision==="DENY"&&process.stdout.write(JSON.stringify({continue:!1,stopReason:"Pinta blocked this tool output. Start a new session before continuing."})+`
|
|
28
|
+
`);try{if((0,fn.attachGuard)(n,r),r&&n.resourceSpans[0].scopeSpans[0].spans[0].attributes.push({key:"pinta.guard.target",value:{stringValue:"tool_output"}}),r?.decision==="DENY")return Y(n,t),0;await L(n,t)}catch(o){process.stderr.write(`[pinta-cc] telemetry emit failed: ${o}
|
|
29
|
+
`)}return 0}async function pn(e,t){return await T(e,t,{traceMode:"new"}),0}async function mn(e,t){return await T(e,t),0}async function hn(e,t){return await T(e,t),0}async function gn(e,t){return await T(e,t),0}var _n=h(O());async function yn(e,t){if(e.hook_event_name==="PermissionDenied")return await T(e,t),0;let n=B(e,t),r=await F(n,process.env.PINTA_GUARD_ENDPOINT);r?.decision==="DENY"&&process.stdout.write(JSON.stringify({hookSpecificOutput:{hookEventName:"PermissionRequest",decision:{behavior:"deny",message:r.userMessage??r.reason??"guard_deny"}}})+`
|
|
30
|
+
`);try{if((0,_n.attachGuard)(n,r),r?.decision==="DENY")return Y(n,t),0;await L(n,t)}catch(o){process.stderr.write(`[pinta-cc] telemetry emit failed: ${o}
|
|
31
|
+
`)}return 0}async function $e(e){return 0}async function Ur(){let e=[];for await(let t of process.stdin)e.push(t);return Buffer.concat(e).toString("utf-8")}async function vn(){Nt();let e=0;try{let t=Ct(),n=await Ur(),r=JSON.parse(n);Gt(r)?e=await $e(r):It(r)?e=await ln(r,t):Ut(r)||Bt(r)?e=await dn(r,t):Lt(r)?e=await pn(r,t):$t(r)?e=await mn(r,t):qt(r)?e=await hn(r,t):Ft(r)?e=await gn(r,t):Vt(r)?e=await yn(r,t):e=await $e(r)}catch(t){process.stderr.write(`[pinta-cc] error: ${t}
|
|
32
|
+
`),e=0}return e}xt();async function Br(){let e=await vn();process.exit(e)}Br();
|
package/dist/index.mjs
CHANGED
|
@@ -1,33 +1,33 @@
|
|
|
1
1
|
import{createRequire as __pintaCreateRequire}from 'node:module';const require=__pintaCreateRequire(import.meta.url);
|
|
2
|
-
var
|
|
3
|
-
`){s+=2;continue}if(u&&(!i||/[$`"\\]/.test(u))){
|
|
4
|
-
`){a(),s++;for(let l of i.splice(0))for(;s<e.value.length;){let
|
|
5
|
-
`,s),
|
|
6
|
-
`,s);s=l<0?e.value.length:l}else if(e.value.startsWith("((",s))a(),s=Math.min(Fe(e.value,s+1)+1,e.value.length);else if(/[;|&(){}]/.test(u))a(),s++;else if(u==="<"||u===">")r.at(-1)?.end===s&&/^\d+$/.test(r.at(-1).value)&&r.pop(),o=/^(?:<<<|<<-?|>>|<&|>&|[<>])/.exec(e.value.slice(s))?.[0]??u,s+=o.length;else{let l=kn(e,s,t,n);s=l.end,(o==="<<"||o==="<<-")&&i.push({delimiter:l.value,stripTabs:o==="<<-"}),o||r.push(l),o=void 0}}a()}function wn(e,t,n){let r={value:"",ranges:[]};for(let o=t+1;o<n-1;o++){if(e.value[o]!=="\\"){X(r,e,o,o+1);continue}let i=o+(e.value[o+1]==="u"?6:2),s=JSON.parse(`"${e.value.slice(o,i)}"`);r.value+=s;for(let a=0;a<s.length;a++)r.ranges.push({start:e.ranges[o].start,end:e.ranges[i-1].end});o=i-1}return r}function Rn(e){let t={value:e,ranges:Array.from({length:e.length},(r,o)=>({start:o,end:o+1}))},n=[];if(/^\s*[{[]/.test(e)){let r;try{r=JSON.parse(e)}catch{return L(t,n),n}if(r!==null&&typeof r=="object"){let o=/"(?:[^"\\]|\\.)*"/g,i;for(;i=o.exec(e);){let s=JSON.parse(i[0]);if(s!=="command"&&s!=="cmd"&&s!=="CommandLine")continue;let a=/^\s*:\s*/.exec(e.slice(o.lastIndex));if(!a)continue;let u=o.lastIndex+a[0].length;if(e[u]!=='"')continue;o.lastIndex=u;let l=o.exec(e);l?.index===u&&L(wn(t,u,u+l[0].length),n)}}return n}return L(t,n),n}});var me=T(h=>{"use strict";Object.defineProperty(h,"__esModule",{value:!0});h.PATTERNS=h.MAX_BYTES=void 0;h.truncateTo=Ge;h.truncate=xn;h.collectMatches=Ve;h.resolveOverlaps=ze;h.applyMatches=Ye;h.redact=Mn;var Dn=qe();h.MAX_BYTES=102400;function Ge(e,t){let n=Buffer.from(e,"utf-8");return n.length<=t?e:`${n.subarray(0,Math.max(0,t)).toString("utf-8")}\u2026[TRUNCATED:${n.length}]`}function xn(e){return Ge(e,h.MAX_BYTES)}h.PATTERNS=[{type:"aws_access_key",regex:/AKIA[0-9A-Z]{16}/g},{type:"aws_secret_key",regex:/(?:aws[_-]?secret(?:[_-]?(?:access)?[_-]?key)?)\s*[:=]\s*["']?([A-Za-z0-9/+=]{40})(?![A-Za-z0-9/+=])/gi,captureGroup:1},{type:"gcp_service_account",regex:/\{[\s\S]{0,200}?"type"\s*:\s*"service_account"[\s\S]*?\}/g},{type:"github_token",regex:/gh[pousr]_[A-Za-z0-9]{36,}/g},{type:"gitlab_token",regex:/glpat-[A-Za-z0-9_-]{20}/g},{type:"slack_token",regex:/xox[abrsp]-[0-9A-Za-z-]{10,}/g},{type:"openai_key",regex:/sk-(?:proj-)?[A-Za-z0-9_-]{40,}/g},{type:"anthropic_key",regex:/sk-ant-[A-Za-z0-9_-]{50,}/g},{type:"stripe_key",regex:/(?:sk|rk|pk)_(?:live|test)_[A-Za-z0-9]{20,}/g},{type:"jwt",regex:/eyJ[A-Za-z0-9_-]{10,}\.eyJ[A-Za-z0-9_-]{10,}\.[A-Za-z0-9_-]{10,}/g},{type:"private_key_block",regex:/-----BEGIN [A-Z ]*PRIVATE KEY-----[\s\S]*?-----END [A-Z ]*PRIVATE KEY-----/g},{type:"bearer_token",regex:/bearer\s+([A-Za-z0-9._~+/=-]{12,})/gi,captureGroup:1},{type:"basic_auth",regex:/basic\s+([A-Za-z0-9+/=]{12,})/gi,captureGroup:1},{type:"db_url_password",regex:/\b(?:postgres|postgresql|mysql|mariadb|mongodb(?:\+srv)?|redis):\/\/[^:\s/]+:([^@\s]+)@/gi,captureGroup:1},{type:"cli_password_flag",regex:/(?:--password|--pass|--pwd)[=\s]([^\s'"]+)/g,captureGroup:1},{type:"cli_password_short",regex:/\s-p([^\s'"]+)/g,captureGroup:1,requireContext:"bash"},{type:"env_var_secret",regex:/^(?:export\s+)?([A-Z][A-Z0-9_]*(?:KEY|SECRET|TOKEN|PASSWORD|PASSWD|PWD|API_KEY)[A-Z0-9_]*)\s*=\s*["']?([^\s"'\n]+)/gm,captureGroup:2}];function Ve(e,t){let n=[];for(let r of h.PATTERNS){if(r.requireContext&&r.requireContext!==t.context)continue;if(r.type==="cli_password_short"){for(let{start:s,end:a}of(0,Dn.mysqlPasswordRanges)(e))n.push({start:s,end:a,replaceStart:s,replaceEnd:a,type:r.type,replacement:`-p[REDACTED:${r.type}]`});continue}let o=new RegExp(r.regex.source,r.regex.flags),i;for(;(i=o.exec(e))!==null;){let s=r.captureGroup??0,a=i[s];if(a===void 0){i.index===o.lastIndex&&o.lastIndex++;continue}let u=i.index,l=i.index+i[0].length,f=u+i[0].indexOf(a),_=f+a.length;n.push({start:u,end:l,replaceStart:f,replaceEnd:_,type:r.type}),i.index===o.lastIndex&&o.lastIndex++}}return n}function ze(e){let t=[...e].sort((o,i)=>o.start!==i.start?o.start-i.start:i.end-i.start-(o.end-o.start)),n=[],r=-1;for(let o of t)o.start<r||(n.push(o),r=o.end);return n}function Ye(e,t){let n=[...t].sort((o,i)=>i.replaceStart-o.replaceStart),r=e;for(let o of n)r=r.slice(0,o.replaceStart)+(o.replacement??`[REDACTED:${o.type}]`)+r.slice(o.replaceEnd);return r}function Mn(e,t={}){if(e.length===0)return e;let n=Ve(e,t);if(n.length===0)return e;let r=ze(n);return Ye(e,r)}});var ge=T(p=>{"use strict";var jn=p&&p.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(p,"__esModule",{value:!0});p.MAX_SPAN_BYTES=void 0;p.ulidToTraceId=He;p.newSpanId=Ze;p.snakeCase=Cn;p.toOtlpValue=Je;p.attrsFromRecord=Un;p.guardAttrs=Qe;p.clientAttrs=et;p.enforceSpanBudget=tt;p.buildPayload=Bn;p.attachGuard=nt;p.mergeBatch=Ln;var Nn=jn(v("crypto")),he=me(),In="0123456789ABCDEFGHJKMNPQRSTVWXYZ";function He(e){if(e.length!==26)throw new Error(`ulidToTraceId: expected 26 chars, got ${e.length}`);let t=0n;for(let r of e){let o=In.indexOf(r);if(o<0)throw new Error(`ulidToTraceId: invalid Crockford char "${r}"`);t=t<<5n|BigInt(o)}let n=(1n<<128n)-1n;return t&=n,t.toString(16).padStart(32,"0")}function Ze(){return Nn.default.randomBytes(8).toString("hex")}function Cn(e){return e.replace(/([a-z0-9])([A-Z])/g,"$1_$2").replace(/([A-Z])([A-Z][a-z])/g,"$1_$2").toLowerCase()}var Xe=new Set;function te(e,t,n){let r=(0,he.truncate)(t);if((n.skipRedactKeys??Xe).has(e))return r;let o=(n.bashContextKeys??Xe).has(e)?"bash":void 0;return(0,he.redact)(r,{context:o})}function Je(e,t,n={}){if(t==null)return null;switch(typeof t){case"string":return{stringValue:te(e,t,n)};case"boolean":return{boolValue:t};case"number":return Number.isInteger(t)?{intValue:t}:{doubleValue:t};case"object":try{return{stringValue:te(e,JSON.stringify(t),n)}}catch{return{stringValue:te(e,String(t),n)}}default:return{stringValue:te(e,String(t),n)}}}function Un(e,t,n={}){let r=[];for(let[o,i]of Object.entries(e)){let s=`${t}.${o}`,a=Je(s,i,n);a!==null&&r.push({key:s,value:a})}return r}function Qe(e){let t=[{key:"pinta.guard.decision",value:{stringValue:e.decision.toLowerCase()}},{key:"pinta.guard.duration_ms",value:{intValue:e.durationMs}}];return e.reason&&t.push({key:"pinta.guard.matched_rule",value:{stringValue:e.reason}}),e.failOpenReason&&t.push({key:"pinta.guard.fail_open_reason",value:{stringValue:e.failOpenReason}}),t}function et(e){return[{key:"pinta.client.rtt_ms",value:Number.isInteger(e.rttMs)?{intValue:e.rttMs}:{doubleValue:e.rttMs}},{key:"pinta.client.op",value:{stringValue:e.op}}]}p.MAX_SPAN_BYTES=800*1024;function Ke(e){let t=JSON.stringify(e);return t===void 0?0:Buffer.byteLength(t,"utf-8")}var We=1024;function tt(e,t=p.MAX_SPAN_BYTES){let n=Ke(e);for(let r=0;r<100&&n>t;r++){let o=null,i=0;for(let u of e.attributes){if(!("stringValue"in u.value))continue;let l=Buffer.byteLength(u.value.stringValue,"utf-8");l>i&&(i=l,o=u.value)}if(o===null||i<=We)break;let s=n-t,a=Math.max(We,i-s-64);o.stringValue=(0,he.truncateTo)(o.stringValue,a),n=Ke(e)}return e}function Bn(e){let t=e.now??Date.now(),n=(BigInt(t)*1000000n).toString(),r=[...e.attributes],o={traceId:He(e.traceId),spanId:Ze(),name:e.spanName,kind:e.spanKind??1,startTimeUnixNano:n,endTimeUnixNano:n,attributes:r};tt(o);let i={resourceSpans:[{resource:{attributes:e.resource},scopeSpans:[{scope:e.scope,spans:[o]}]}]};return nt(i,e.guard,e.clientTiming)}function nt(e,t,n){let r=e.resourceSpans[0]?.scopeSpans[0]?.spans[0];if(!r)return e;t&&r.attributes.push(...Qe(t));let o=n??(t?.clientRttMs!==void 0?{op:"guard",rttMs:t.clientRttMs}:null);return o&&r.attributes.push(...et(o)),e}function Ln(e){let t=[];for(let n of e)t.push(...n.resourceSpans);return{resourceSpans:t}}});var rt=T(A=>{"use strict";Object.defineProperty(A,"__esModule",{value:!0});A.GUARD_STATUS_REFUSED=A.GUARD_BUDGET_HEADER=void 0;A.evaluateGuard=Gn;var $n=1e4,Fn="pinta-core";A.GUARD_BUDGET_HEADER="x-pinta-guard-budget-ms";function ne(e,t){return{decision:"ALLOW",reason:null,userMessage:null,durationMs:e,clientRttMs:e,failOpenReason:t}}var qn=new Set(["ALLOW","DENY","REVIEW"]);A.GUARD_STATUS_REFUSED=410;async function Gn(e,t,n={}){if(!t||n.disabled)return null;let r=n.timeoutMs??$n,o=Date.now(),i=new AbortController,s=setTimeout(()=>i.abort(),r);try{let a=await fetch(t,{method:"POST",headers:{"content-type":"application/json","user-agent":n.userAgent??Fn,"x-pinta-relay-token":n.token??"",...n.agentType?{"x-pinta-agent-type":n.agentType}:{},...Number.isFinite(r)&&r>0?{[A.GUARD_BUDGET_HEADER]:String(r)}:{}},body:JSON.stringify(e),signal:i.signal});if(a.status===A.GUARD_STATUS_REFUSED)return ne(Date.now()-o,"refused");if(a.status!==200)return ne(Date.now()-o,"error");let u=await a.json(),l=u?.durationMs===void 0||typeof u.durationMs=="number"&&Number.isFinite(u.durationMs);if(!u||!qn.has(u.decision)||!l)return ne(Date.now()-o,"error");let f=Date.now()-o;return{decision:u.decision,reason:u.reason??null,userMessage:u.userMessage??null,durationMs:u.durationMs??f,clientRttMs:f}}catch(a){let u=a.name,l=u==="AbortError"||u==="TimeoutError"?"timeout":"error";return ne(Date.now()-o,l)}finally{clearTimeout(s)}}});var re=T(K=>{"use strict";var Vn=K&&K.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(K,"__esModule",{value:!0});K.atomicWriteFileSync=zn;var ot=Vn(v("fs"));function zn(e,t){let n=`${e}.${process.pid}.tmp`;ot.default.writeFileSync(n,t),ot.default.renameSync(n,e)}});var ve=T(D=>{"use strict";var st=D&&D.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(D,"__esModule",{value:!0});D.MemoryRetryQueue=D.DiskRetryQueue=void 0;var g=st(v("fs")),oe=st(v("path")),Yn=re(),se=1e3,Xn=50,Kn=5,_e=class{filePath;lockPath;logPrefix;constructor(t,n){this.filePath=oe.default.join(t,"failed-spans.jsonl"),this.lockPath=this.filePath+".lock",this.logPrefix=n}enqueue(t){try{g.default.mkdirSync(oe.default.dirname(this.filePath),{recursive:!0});let n=JSON.stringify({savedAt:new Date().toISOString(),payload:t})+`
|
|
7
|
-
`;
|
|
8
|
-
`)}}readAll(){try{let t=
|
|
9
|
-
`))if(r.trim())try{let o=JSON.parse(r);Array.isArray(o?.payload?.resourceSpans)&&n.push(o)}catch{}return n}catch{return[]}}rewrite(t){try{if(t.length===0){
|
|
2
|
+
var Sn=Object.create;var qe=Object.defineProperty;var Tn=Object.getOwnPropertyDescriptor;var bn=Object.getOwnPropertyNames;var On=Object.getPrototypeOf,kn=Object.prototype.hasOwnProperty;var v=(e=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(e,{get:(t,n)=>(typeof require<"u"?require:t)[n]}):e)(function(e){if(typeof require<"u")return require.apply(this,arguments);throw Error('Dynamic require of "'+e+'" is not supported')});var T=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports);var An=(e,t,n,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let o of bn(t))!kn.call(e,o)&&o!==n&&qe(e,o,{get:()=>t[o],enumerable:!(r=Tn(t,o))||r.enumerable});return e};var k=(e,t,n)=>(n=e!=null?Sn(On(e)):{},An(t||!e||!e.__esModule?qe(n,"default",{value:e,enumerable:!0}):n,e));var Ye=T(pe=>{"use strict";Object.defineProperty(pe,"__esModule",{value:!0});pe.mysqlPasswordRanges=In;var wn=new Set(["mysql","mysqldump","mysqladmin","mysqlcheck","mysqlimport","mysqlshow","mariadb","mariadb-dump","mariadb-admin","mariadb-check","mariadb-import","mariadb-show"]),Mn=new Set(["sh","bash","dash","zsh","ksh"]),Rn=new Set(["-u","--user","-h","--host","-P","--port","-D","--database","-S","--socket","-e","--execute","--protocol","--default-character-set","--defaults-file","--defaults-extra-file","--login-path","--init-command","--ssl-ca","--ssl-capath","--ssl-cert","--ssl-key","--ssl-cipher"]),ne=16;function Ve(e,t,n=e.value.length){return{value:e.value.slice(t,n),ranges:e.ranges.slice(t,n)}}function K(e,t,n,r){e.value+=t.value.slice(n,r);for(let o=n;o<r;o++)e.ranges.push(t.ranges[o])}function Ge(e){if(e?.literal)return e.value.slice(e.value.lastIndexOf("/")+1).replace(/\.exe$/,"")}function Dn(e){let t=0;for(let n=0;n<=ne;n++){for(;/^[A-Za-z_][A-Za-z0-9_]*=/.test(e[t]?.value??"");)t++;let r=Ge(e[t]);if(!r)return;if(["!","if","then","elif","else","while","until","do"].includes(r)){t++;continue}let o={env:["-u","--unset","-C","--chdir"],sudo:["-u","--user","-g","--group","-p","--prompt","-D","--chdir","-R","--chroot","-C","--close-from","-T","--command-timeout"],exec:["-a"],nice:["-n","--adjustment"],timeout:["-s","--signal","-k","--kill-after"]},i={env:["-i","--ignore-environment","-0","--null"],sudo:["-n","-E","-H","-S","-b","-k"],command:["-p"],exec:["-c","-l"],nohup:[],nice:[],time:["-p"],timeout:["--foreground","--preserve-status"]};if(!(r in i))return t;for(t++;e[t]?.value.startsWith("-");){let s=e[t++].value;if(s==="--")break;if(!i[r].includes(s)){if((o[r]??[]).includes(s)){if(!e[t++])return;continue}if(!(o[r]??[]).some(a=>a.startsWith("--")?s.startsWith(a+"="):s.startsWith(a)&&s.length>2)&&!(r==="nice"&&/^-\d+$/.test(s)))return}}if(r==="timeout"&&!/^\d+(?:\.\d+)?[smhd]?$/.test(e[t++]?.value??""))return}}function ze(e,t){let n=1,r="";for(let o=t;o<e.length;o++){let i=e[o];if(i==="\\"&&r!=="'"){o++;continue}if(r){i===r&&(r="");continue}if(i==="'"||i==='"')r=i;else if(i==="(")n++;else if(i===")"&&--n===0)return o}return e.length}function xn(e,t,n,r){let o={value:"",ranges:[],start:t,end:t,literal:!0},i="",s=t;for(;s<e.value.length;){let a=e.value[s];if(!i&&/[\s;|&()<>{}]/.test(a))break;if(a===i){i="",s++;continue}if(!i&&(a==="'"||a==='"')){i=a,s++;continue}if(a==="\\"&&i!=="'"){let u=e.value[s+1];if(u===`
|
|
3
|
+
`){s+=2;continue}if(u&&(!i||/[$`"\\]/.test(u))){K(o,e,s+1,s+2),s+=2;continue}}if(i!=="'"&&e.value.startsWith("$(",s)){let u=ze(e.value,s+2);e.value[s+2]!=="("&&r<ne&&$(Ve(e,s+2,u),n,r+1),K(o,e,s,Math.min(u+1,e.value.length)),o.literal=!1,s=Math.min(u+1,e.value.length);continue}if(a==="`"&&i!=="'"){let u=s+1;for(;u<e.value.length&&e.value[u]!=="`";)u+=e.value[u]==="\\"?2:1;r<ne&&$(Ve(e,s+1,u),n,r+1),K(o,e,s,Math.min(u+1,e.value.length)),o.literal=!1,s=Math.min(u+1,e.value.length);continue}a==="$"&&i!=="'"&&(o.literal=!1),K(o,e,s,s+1),s++}return o.end=s,o}function Nn(e,t,n,r){let o=Dn(t);if(o===void 0)return;let i=Ge(t[o]);if(Mn.has(i)&&r<ne){for(let s=o+1;s<t.length;s++){let a=t[s].value;if(a==="--command"||/^-[a-zA-Z]*c[a-zA-Z]*$/.test(a)){let u=t[s+1];u&&$(u,n,r+1);return}if(!a.startsWith("-")||a==="--")return;(a==="-o"||a==="-O")&&s++}return}if(wn.has(i))for(let s=o+1;s<t.length;s++){let a=t[s];if(a.value==="--")return;if(Rn.has(a.value)){s++;continue}a.value.startsWith("-p")&&a.value.length>2&&n.push({start:e.ranges[a.start].start,end:e.ranges[a.end-1].end})}}function $(e,t,n=0){let r=[],o,i=[],s=0,a=()=>{Nn(e,r,t,n),r=[],o=void 0};for(;s<e.value.length;){let u=e.value[s];if(u===`
|
|
4
|
+
`){a(),s++;for(let l of i.splice(0))for(;s<e.value.length;){let d=e.value.indexOf(`
|
|
5
|
+
`,s),f=d<0?e.value.length:d,p=e.value.slice(s,f);if(s=d<0?f:f+1,(l.stripTabs?p.replace(/^\t+/,""):p)===l.delimiter)break}}else if(/\s/.test(u))s++;else if(u==="#"){let l=e.value.indexOf(`
|
|
6
|
+
`,s);s=l<0?e.value.length:l}else if(e.value.startsWith("((",s))a(),s=Math.min(ze(e.value,s+1)+1,e.value.length);else if(/[;|&(){}]/.test(u))a(),s++;else if(u==="<"||u===">")r.at(-1)?.end===s&&/^\d+$/.test(r.at(-1).value)&&r.pop(),o=/^(?:<<<|<<-?|>>|<&|>&|[<>])/.exec(e.value.slice(s))?.[0]??u,s+=o.length;else{let l=xn(e,s,t,n);s=l.end,(o==="<<"||o==="<<-")&&i.push({delimiter:l.value,stripTabs:o==="<<-"}),o||r.push(l),o=void 0}}a()}function jn(e,t,n){let r={value:"",ranges:[]};for(let o=t+1;o<n-1;o++){if(e.value[o]!=="\\"){K(r,e,o,o+1);continue}let i=o+(e.value[o+1]==="u"?6:2),s=JSON.parse(`"${e.value.slice(o,i)}"`);r.value+=s;for(let a=0;a<s.length;a++)r.ranges.push({start:e.ranges[o].start,end:e.ranges[i-1].end});o=i-1}return r}function In(e){let t={value:e,ranges:Array.from({length:e.length},(r,o)=>({start:o,end:o+1}))},n=[];if(/^\s*[{[]/.test(e)){let r;try{r=JSON.parse(e)}catch{return $(t,n),n}if(r!==null&&typeof r=="object"){let o=/"(?:[^"\\]|\\.)*"/g,i;for(;i=o.exec(e);){let s=JSON.parse(i[0]);if(s!=="command"&&s!=="cmd"&&s!=="CommandLine")continue;let a=/^\s*:\s*/.exec(e.slice(o.lastIndex));if(!a)continue;let u=o.lastIndex+a[0].length;if(e[u]!=='"')continue;o.lastIndex=u;let l=o.exec(e);l?.index===u&&$(jn(t,u,u+l[0].length),n)}}return n}return $(t,n),n}});var ge=T(g=>{"use strict";Object.defineProperty(g,"__esModule",{value:!0});g.PATTERNS=g.MAX_BYTES=void 0;g.truncateTo=Xe;g.truncate=Un;g.collectMatches=We;g.resolveOverlaps=me;g.applyMatches=he;g.createDetectedValueMasker=Bn;g.redact=Ln;var Cn=Ye();g.MAX_BYTES=102400;function Xe(e,t){let n=Buffer.from(e,"utf-8");return n.length<=t?e:`${n.subarray(0,Math.max(0,t)).toString("utf-8")}\u2026[TRUNCATED:${n.length}]`}function Un(e){return Xe(e,g.MAX_BYTES)}g.PATTERNS=[{type:"aws_access_key",regex:/AKIA[0-9A-Z]{16}/g},{type:"aws_secret_key",regex:/(?:aws[_-]?secret(?:[_-]?(?:access)?[_-]?key)?)\s*[:=]\s*["']?([A-Za-z0-9/+=]{40})(?![A-Za-z0-9/+=])/gi,captureGroup:1},{type:"gcp_service_account",regex:/\{[\s\S]{0,200}?"type"\s*:\s*"service_account"[\s\S]*?\}/g},{type:"github_token",regex:/gh[pousr]_[A-Za-z0-9]{36,}/g},{type:"gitlab_token",regex:/glpat-[A-Za-z0-9_-]{20}/g},{type:"slack_token",regex:/xox[abrsp]-[0-9A-Za-z-]{10,}/g},{type:"openai_key",regex:/sk-(?:proj-)?[A-Za-z0-9_-]{40,}/g},{type:"anthropic_key",regex:/sk-ant-[A-Za-z0-9_-]{50,}/g},{type:"stripe_key",regex:/(?:sk|rk|pk)_(?:live|test)_[A-Za-z0-9]{20,}/g},{type:"jwt",regex:/eyJ[A-Za-z0-9_-]{10,}\.eyJ[A-Za-z0-9_-]{10,}\.[A-Za-z0-9_-]{10,}/g},{type:"private_key_block",regex:/-----BEGIN [A-Z ]*PRIVATE KEY-----[\s\S]*?-----END [A-Z ]*PRIVATE KEY-----/g},{type:"bearer_token",regex:/bearer\s+([A-Za-z0-9._~+/=-]{12,})/gi,captureGroup:1},{type:"basic_auth",regex:/basic\s+([A-Za-z0-9+/=]{12,})/gi,captureGroup:1},{type:"db_url_password",regex:/\b(?:postgres|postgresql|mysql|mariadb|mongodb(?:\+srv)?|redis):\/\/[^:\s/]+:([^@\s]+)@/gi,captureGroup:1},{type:"cli_password_flag",regex:/(?:--password|--pass|--pwd)[=\s]([^\s'"]+)/g,captureGroup:1},{type:"cli_password_short",regex:/\s-p([^\s'"]+)/g,captureGroup:1,requireContext:"bash"},{type:"env_var_secret",regex:/^(?:export\s+)?([A-Z][A-Z0-9_]*(?:KEY|SECRET|TOKEN|PASSWORD|PASSWD|PWD|API_KEY)[A-Z0-9_]*)\s*=\s*["']?([^\s"'\n]+)/gm,captureGroup:2}];function We(e,t){let n=[];for(let r of g.PATTERNS){if(r.requireContext&&r.requireContext!==t.context)continue;if(r.type==="cli_password_short"){for(let{start:s,end:a}of(0,Cn.mysqlPasswordRanges)(e))n.push({start:s,end:a,replaceStart:s,replaceEnd:a,type:r.type,replacement:`-p[REDACTED:${r.type}]`});continue}let o=new RegExp(r.regex.source,r.regex.flags),i;for(;(i=o.exec(e))!==null;){let s=r.captureGroup??0,a=i[s];if(a===void 0){i.index===o.lastIndex&&o.lastIndex++;continue}if(/^\[REDACTED(?::[^\]]+)?\]$/i.test(a))continue;let u=i.index,l=i.index+i[0].length,d=u+i[0].indexOf(a),f=d+a.length;n.push({start:u,end:l,replaceStart:d,replaceEnd:f,type:r.type}),i.index===o.lastIndex&&o.lastIndex++}}return n}function me(e){let t=[...e].sort((r,o)=>r.replaceStart-o.replaceStart||o.replaceEnd-r.replaceEnd),n=[];for(let r of t){let o=n[n.length-1];o&&r.replaceStart<o.replaceEnd?(o.replaceEnd=Math.max(o.replaceEnd,r.replaceEnd),o.start=Math.min(o.start,r.start),o.end=Math.max(o.end,r.end)):n.push({...r})}return n}function he(e,t){let n=[...t].sort((o,i)=>i.replaceStart-o.replaceStart),r=e;for(let o of n)r=r.slice(0,o.replaceStart)+(o.replacement??`[REDACTED:${o.type}]`)+r.slice(o.replaceEnd);return r}function Bn(e){let t=new Map;for(let s of e)s.value.length>0&&!t.has(s.value)&&t.set(s.value,s);let n=[...t.values()],r=n.flatMap(s=>{let a=JSON.stringify(s.value).slice(1,-1);return a===s.value?[s]:[s,{...s,value:a}]}),o=(s,a)=>{let u=[],l=[...s.matchAll(/\[(?:PINTA_)?REDACTED(?::[^\]]+)?\]/gi)];for(let d of a)for(let f=s.indexOf(d.value);f>=0;f=s.indexOf(d.value,f+1))l.some(p=>f>=p.index&&f+d.value.length<=p.index+p[0].length)||u.push({start:f,end:f+d.value.length,replaceStart:f,replaceEnd:f+d.value.length,type:d.type});return he(s,me(u))},i=s=>{if(n.length===0)return s;if(t.has(s))return o(s,n);let a=s.trimStart()[0];if(a==="{"||a==="["||a==='"'){let u=!1;try{JSON.parse(s),u=!0}catch(l){if(!(l instanceof SyntaxError))throw l}if(u)return s.replace(/"(?:\\.|[^"\\])*"|-?(?:0|[1-9]\d*)(?:\.\d+)?(?:[eE][+-]?\d+)?/gs,l=>{let d=l.startsWith('"'),f=d?JSON.parse(l):l,p=d?i(f):o(f,n);return p===f?l:JSON.stringify(p)})}return o(s,r)};return i}function Ln(e,t={}){if(e.length===0)return e;let n=We(e,t);if(n.length===0)return e;let r=me(n);return he(e,r)}});var Ee=T(h=>{"use strict";var Fn=h&&h.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(h,"__esModule",{value:!0});h.MAX_SPAN_BYTES=void 0;h.ulidToTraceId=Qe;h.newSpanId=et;h.snakeCase=Vn;h.toOtlpValue=rt;h.attrsFromRecord=Gn;h.guardAttrs=ot;h.clientAttrs=st;h.enforceSpanBudget=it;h.buildPayload=zn;h.attachGuard=at;h.mergeBatch=Yn;var $n=Fn(v("crypto")),D=ge(),qn="0123456789ABCDEFGHJKMNPQRSTVWXYZ";function Qe(e){if(e.length!==26)throw new Error(`ulidToTraceId: expected 26 chars, got ${e.length}`);let t=0n;for(let r of e){let o=qn.indexOf(r);if(o<0)throw new Error(`ulidToTraceId: invalid Crockford char "${r}"`);t=t<<5n|BigInt(o)}let n=(1n<<128n)-1n;return t&=n,t.toString(16).padStart(32,"0")}function et(){return $n.default.randomBytes(8).toString("hex")}function Vn(e){return e.replace(/([a-z0-9])([A-Z])/g,"$1_$2").replace(/([A-Z])([A-Z][a-z])/g,"$1_$2").toLowerCase()}var Ke=new Set,ve=new WeakMap,tt=new WeakMap,nt=new WeakMap;function Je(e){if(typeof e=="string")return e;try{return JSON.stringify(e)}catch(t){if(!(t instanceof TypeError))throw t;return String(e)}}function _e(e,t,n){let r=(n.bashContextKeys??Ke).has(e)?"bash":void 0,o=(n.skipRedactKeys??Ke).has(e)?[]:(0,D.collectMatches)(t,{context:r}),i={stringValue:(0,D.truncate)((0,D.applyMatches)(t,(0,D.resolveOverlaps)(o)))};return ve.set(i,{original:t,detections:o.map(s=>({value:t.slice(s.replaceStart,s.replaceEnd),type:s.type}))}),i}function rt(e,t,n={}){if(t==null)return null;let r;switch(typeof t){case"string":r=_e(e,t,n);break;case"boolean":r={boolValue:t};break;case"number":r=Number.isInteger(t)?{intValue:t}:{doubleValue:t};break;case"object":{r=_e(e,Je(t)??String(t),n);break}default:r=_e(e,String(t),n)}let o=Je(n.outputForKey?.(e,t));return o!==void 0&&tt.set(r,o),r}function Gn(e,t,n={}){let r=[];for(let[o,i]of Object.entries(e)){let s=`${t}.${o}`,a=rt(s,i,n);a!==null&&r.push({key:s,value:a})}return r}function ot(e){let t=[{key:"pinta.guard.decision",value:{stringValue:e.decision.toLowerCase()}},{key:"pinta.guard.duration_ms",value:{intValue:e.durationMs}}];return e.reason&&t.push({key:"pinta.guard.matched_rule",value:{stringValue:e.reason}}),e.failOpenReason&&t.push({key:"pinta.guard.fail_open_reason",value:{stringValue:e.failOpenReason}}),t}function st(e){return[{key:"pinta.client.rtt_ms",value:Number.isInteger(e.rttMs)?{intValue:e.rttMs}:{doubleValue:e.rttMs}},{key:"pinta.client.op",value:{stringValue:e.op}}]}h.MAX_SPAN_BYTES=800*1024;function He(e){let t=JSON.stringify(e);return t===void 0?0:Buffer.byteLength(t,"utf-8")}var Ze=1024;function it(e,t=h.MAX_SPAN_BYTES){let n=He(e);for(let r=0;r<100&&n>t;r++){let o=null,i=0;for(let u of e.attributes){if(!("stringValue"in u.value))continue;let l=Buffer.byteLength(u.value.stringValue,"utf-8");l>i&&(i=l,o=u.value)}if(o===null||i<=Ze)break;let s=n-t,a=Math.max(Ze,i-s-64);o.stringValue=(0,D.truncateTo)(o.stringValue,a),n=He(e)}return e}function zn(e){let t=e.now??Date.now(),n=(BigInt(t)*1000000n).toString(),o=[...e.resource,...e.attributes].flatMap(f=>{let p=ve.get(f.value);return p?[p]:[]}).flatMap(f=>f.detections),i=[...e.resource,...e.attributes].flatMap(f=>{let p=tt.get(f.value);return p===void 0?[]:[p]}),s=new Set(o.filter(f=>{let p=(0,D.createDetectedValueMasker)([f]);return i.some(A=>p(A)!==A)}).map(f=>f.value)),a=(0,D.createDetectedValueMasker)(o),u=e.attributes.map(f=>ye(f,a)),l={traceId:Qe(e.traceId),spanId:et(),name:a(e.spanName),kind:e.spanKind??1,startTimeUnixNano:n,endTimeUnixNano:n,attributes:u},d={resourceSpans:[{resource:{attributes:e.resource.map(f=>ye(f,a))},scopeSpans:[{scope:{name:a(e.scope.name),version:a(e.scope.version)},spans:[l]}]}]};return o.length>0&&(nt.set(d,a),u.push({key:"pinta.facts",value:{stringValue:JSON.stringify({items:[{origin:"attributes",values:o.filter(f=>!s.has(f.value))},{origin:"toolOutput",values:o.filter(f=>s.has(f.value))}].filter(f=>f.values.length>0).map(({origin:f,values:p})=>({category:"DATA_EXFILTRATION",source:"CORE_REDACT",path:"$",secrets:{kinds:["credential"],count:new Set(p.map(A=>A.value)).size,origins:[f],scannedFields:["attributes"],scanner:"core-tier1",truncated:!1,corroboration:["pattern"]}}))})}})),it(l),at(d,e.guard,e.clientTiming)}function ye(e,t){let n={key:t(e.key),value:{...e.value}},r=n.value;if("stringValue"in r){let o=ve.get(e.value),i=t(o?.original??r.stringValue);r.stringValue=o?(0,D.truncate)(i):i}else if("intValue"in r||"doubleValue"in r){let o=String("intValue"in r?r.intValue:r.doubleValue),i=t(o);i!==o&&(n.value={stringValue:i})}return n}function at(e,t,n){let r=e.resourceSpans[0]?.scopeSpans[0]?.spans[0];if(!r)return e;if(t){let i=ot(t),s=nt.get(e);r.attributes.push(...s?i.map(a=>ye(a,s)):i)}let o=n??(t?.clientRttMs!==void 0?{op:"guard",rttMs:t.clientRttMs}:null);return o&&r.attributes.push(...st(o)),e}function Yn(e){let t=[];for(let n of e)t.push(...n.resourceSpans);return{resourceSpans:t}}});var ut=T(w=>{"use strict";Object.defineProperty(w,"__esModule",{value:!0});w.GUARD_STATUS_REFUSED=w.GUARD_BUDGET_HEADER=void 0;w.evaluateGuard=Jn;var Xn=1e4,Wn="pinta-core";w.GUARD_BUDGET_HEADER="x-pinta-guard-budget-ms";function J(e,t){return{decision:"ALLOW",reason:null,userMessage:null,durationMs:e,clientRttMs:e,failOpenReason:t}}var Kn=new Set(["ALLOW","DENY","REVIEW"]);function ct(e){return e==="timeout"||e==="refused"||e==="error"}w.GUARD_STATUS_REFUSED=410;async function Jn(e,t,n={}){if(!t||n.disabled)return null;let r=n.timeoutMs??Xn,o=Date.now(),i=new AbortController,s=setTimeout(()=>i.abort(),r);try{let a=await fetch(t,{method:"POST",headers:{"content-type":"application/json","user-agent":n.userAgent??Wn,"x-pinta-relay-token":n.token??"",...n.agentType?{"x-pinta-agent-type":n.agentType}:{},...Number.isFinite(r)&&r>0?{[w.GUARD_BUDGET_HEADER]:String(r)}:{}},body:JSON.stringify(e),signal:i.signal});if(a.status===w.GUARD_STATUS_REFUSED)return J(Date.now()-o,"refused");if(a.status!==200)return J(Date.now()-o,"error");let u=await a.json(),l=u?.durationMs===void 0||typeof u.durationMs=="number"&&Number.isFinite(u.durationMs);if(!u||!Kn.has(u.decision)||!l)return J(Date.now()-o,"error");let d=u.decision==="ALLOW"?u.failOpenReason:void 0;if(d!=null&&!ct(d))return J(Date.now()-o,"error");let f=Date.now()-o;return{decision:u.decision,reason:u.reason??null,userMessage:u.userMessage??null,durationMs:u.durationMs??f,clientRttMs:f,...ct(d)?{failOpenReason:d}:{}}}catch(a){let u=a.name,l=u==="AbortError"||u==="TimeoutError"?"timeout":"error";return J(Date.now()-o,l)}finally{clearTimeout(s)}}});var re=T(H=>{"use strict";var Hn=H&&H.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(H,"__esModule",{value:!0});H.atomicWriteFileSync=Zn;var lt=Hn(v("fs"));function Zn(e,t){let n=`${e}.${process.pid}.tmp`;lt.default.writeFileSync(n,t),lt.default.renameSync(n,e)}});var Te=T(x=>{"use strict";var ft=x&&x.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(x,"__esModule",{value:!0});x.MemoryRetryQueue=x.DiskRetryQueue=void 0;var y=ft(v("fs")),oe=ft(v("path")),Qn=re(),se=1e3,er=50,tr=5,Pe=class{filePath;lockPath;logPrefix;constructor(t,n){this.filePath=oe.default.join(t,"failed-spans.jsonl"),this.lockPath=this.filePath+".lock",this.logPrefix=n}enqueue(t){try{y.default.mkdirSync(oe.default.dirname(this.filePath),{recursive:!0});let n=JSON.stringify({savedAt:new Date().toISOString(),payload:t})+`
|
|
7
|
+
`;y.default.appendFileSync(this.filePath,n),this.trim()}catch(n){process.stderr.write(`[${this.logPrefix}] retry-queue enqueue failed: ${n}
|
|
8
|
+
`)}}readAll(){try{let t=y.default.readFileSync(this.filePath,"utf-8"),n=[];for(let r of t.split(`
|
|
9
|
+
`))if(r.trim())try{let o=JSON.parse(r);Array.isArray(o?.payload?.resourceSpans)&&n.push(o)}catch{}return n}catch{return[]}}rewrite(t){try{if(t.length===0){y.default.existsSync(this.filePath)&&y.default.unlinkSync(this.filePath);return}y.default.mkdirSync(oe.default.dirname(this.filePath),{recursive:!0}),(0,Qn.atomicWriteFileSync)(this.filePath,t.map(n=>JSON.stringify(n)).join(`
|
|
10
10
|
`)+`
|
|
11
11
|
`)}catch(n){process.stderr.write(`[${this.logPrefix}] retry-queue rewrite failed: ${n}
|
|
12
|
-
`)}}tryAcquireLock(){let t=Date.now();try{
|
|
13
|
-
`),!1}for(;Date.now()-t<
|
|
14
|
-
`),!1;try{let i=
|
|
15
|
-
`),this.rewrite(t.slice(n))}};
|
|
12
|
+
`)}}tryAcquireLock(){let t=Date.now();try{y.default.mkdirSync(oe.default.dirname(this.lockPath),{recursive:!0})}catch(n){return process.stderr.write(`[${this.logPrefix}] retry-queue lock mkdir failed: ${n}
|
|
13
|
+
`),!1}for(;Date.now()-t<er;)try{let n=y.default.openSync(this.lockPath,"wx");return y.default.writeSync(n,String(process.pid)),y.default.closeSync(n),!0}catch(n){if(n?.code!=="EEXIST")return process.stderr.write(`[${this.logPrefix}] retry-queue lock open failed: ${n}
|
|
14
|
+
`),!1;try{let i=y.default.statSync(this.lockPath);if(Date.now()-i.mtimeMs>3e4){y.default.unlinkSync(this.lockPath);continue}}catch{}let r=tr,o=Date.now()+r;for(;Date.now()<o;);}return!1}release(){try{y.default.unlinkSync(this.lockPath)}catch{}}trim(){let t=this.readAll();if(t.length<=se)return;let n=t.length-se;process.stderr.write(`[${this.logPrefix}] retry-queue full, dropping ${n} oldest entries
|
|
15
|
+
`),this.rewrite(t.slice(n))}};x.DiskRetryQueue=Pe;var Se=class{entries=[];enqueue(t){this.entries.push(t),this.entries.length>se&&this.entries.splice(0,this.entries.length-se)}drain(){let t=this.entries;return this.entries=[],t}get size(){return this.entries.length}};x.MemoryRetryQueue=Se});var _t=T(m=>{"use strict";Object.defineProperty(m,"__esModule",{value:!0});m.MemoryTransport=m.DiskTransport=m.MAX_POST_BYTES=void 0;m.parseHeadersEnv=ht;m.envOptionsResolver=gt;m.postOtlp=Z;var dt=Te(),pt=Ee(),nr=5e3;m.MAX_POST_BYTES=900*1024;function ie(e){let t=JSON.stringify(e);return t===void 0?0:Buffer.byteLength(t,"utf-8")}function mt(e,t,n){let r=[],o=[],i=[],s=0;for(let a of e){let u=t(a);if(u>n){o.push(a);continue}i.length>0&&s+u>n&&(r.push(i),i=[],s=0),i.push(a),s+=u}return i.length>0&&r.push(i),{chunks:r,oversize:o}}function ht(e){if(!e)return{};if(typeof e=="object")return{...e};let t={};for(let n of e.split(",")){let[r,...o]=n.split("=");r&&o.length>0&&(t[r.trim()]=o.join("=").trim())}return t}function gt(){let e=process.env.OTEL_EXPORTER_OTLP_TRACES_ENDPOINT,t=process.env.OTEL_EXPORTER_OTLP_ENDPOINT,n;return e?n=e.replace(/\/+$/,""):t&&(n=t.replace(/\/+$/,"")+"/v1/traces"),n?{endpoint:n,headers:ht(process.env.OTEL_EXPORTER_OTLP_HEADERS)}:null}async function Z(e,t,n){let r=new AbortController,o=setTimeout(()=>r.abort(),nr);try{let i=await fetch(t.endpoint,{method:"POST",headers:{"Content-Type":"application/json",...t.headers},body:JSON.stringify(e),signal:r.signal});if(!i.ok){let s="";try{s=(await i.text()).slice(0,200)}catch{}let a=i.status===401||i.status===403?" \u2014 check OTEL_EXPORTER_OTLP_HEADERS (relay token)":i.status===404?" \u2014 check OTEL_EXPORTER_OTLP_TRACES_ENDPOINT path":i.status>=500?" \u2014 collector may be down":"";return process.stderr.write(`[${n}] OTLP POST ${i.status} ${t.endpoint}${a}${s?` body=${s}`:""}
|
|
16
16
|
`),!1}return!0}catch(i){return process.stderr.write(`[${n}] OTLP POST failed: ${i.message??String(i)}
|
|
17
|
-
`),!1}finally{clearTimeout(o)}}var
|
|
18
|
-
`);let i=[].concat(...r),s=0;for(let a of r){if(!await
|
|
19
|
-
`)}finally{this.queue.release()}}dropIfOversized(t){let n=ie(t);return n<=
|
|
20
|
-
`),!0)}};
|
|
21
|
-
`);return}await
|
|
22
|
-
`);let i=[].concat(...r),s=0;for(let a of r){if(!await
|
|
23
|
-
`)}}};
|
|
24
|
-
`)){let r=n.trim();if(!r||r.startsWith("#"))continue;let o=r.indexOf("=");if(o<0)continue;let i=r.slice(0,o).trim(),s=r.slice(o+1).trim();(s.startsWith('"')&&s.endsWith('"')||s.startsWith("'")&&s.endsWith("'"))&&(s=s.slice(1,-1)),i&&(t[i]=s)}return t}function
|
|
25
|
-
`)}function le(e){return
|
|
26
|
-
`);return}new
|
|
27
|
-
`)}try{if((0,
|
|
28
|
-
`)}return 0}var
|
|
29
|
-
`);try{if((0,
|
|
30
|
-
`)}return 0}async function
|
|
31
|
-
`);try{if((0,
|
|
32
|
-
`)}return 0}async function
|
|
33
|
-
`),e=0}return e}import{opendir as
|
|
17
|
+
`),!1}finally{clearTimeout(o)}}var be=class{queue;logPrefix;resolveOptions;constructor(t){this.queue=new dt.DiskRetryQueue(t.pluginData,t.logPrefix),this.logPrefix=t.logPrefix,this.resolveOptions=t.resolveOptions??gt}async send(t){let n=this.resolveOptions();if(!n||this.dropIfOversized(t))return;await Z(t,n,this.logPrefix)||this.queue.enqueue(t)}async flush(){let t=this.resolveOptions();if(t&&this.queue.tryAcquireLock())try{let n=this.queue.readAll();if(n.length===0)return;let{chunks:r,oversize:o}=mt(n,a=>ie(a.payload),m.MAX_POST_BYTES);o.length>0&&process.stderr.write(`[${this.logPrefix}] dropping ${o.length} oversized retry ${o.length===1?"entry":"entries"} (each > ${m.MAX_POST_BYTES} bytes \u2014 the backend caps the request body, so they can never be delivered)
|
|
18
|
+
`);let i=[].concat(...r),s=0;for(let a of r){if(!await Z((0,pt.mergeBatch)(a.map(l=>l.payload)),t,this.logPrefix))break;s+=a.length}this.queue.rewrite(i.slice(s))}catch(n){process.stderr.write(`[${this.logPrefix}] flush failed: ${n?.message??String(n)}
|
|
19
|
+
`)}finally{this.queue.release()}}dropIfOversized(t){let n=ie(t);return n<=m.MAX_POST_BYTES?!1:(process.stderr.write(`[${this.logPrefix}] dropping oversized span payload (${n} > ${m.MAX_POST_BYTES} bytes) \u2014 undeliverable, not queued
|
|
20
|
+
`),!0)}};m.DiskTransport=be;var Oe=class{queue=new dt.MemoryRetryQueue;logPrefix;resolveOptions;constructor(t){this.logPrefix=t.logPrefix,this.resolveOptions=t.resolveOptions}async send(t){let n=this.resolveOptions();if(!n)return;if(ie(t)>m.MAX_POST_BYTES){process.stderr.write(`[${this.logPrefix}] dropping oversized span payload (> ${m.MAX_POST_BYTES} bytes) \u2014 undeliverable, not buffered
|
|
21
|
+
`);return}await Z(t,n,this.logPrefix)||this.queue.enqueue(t)}async flush(){let t=this.resolveOptions();if(!t)return;let n=this.queue.drain();if(n.length===0)return;let{chunks:r,oversize:o}=mt(n,ie,m.MAX_POST_BYTES);o.length>0&&process.stderr.write(`[${this.logPrefix}] dropping ${o.length} oversized buffered ${o.length===1?"payload":"payloads"} (each > ${m.MAX_POST_BYTES} bytes \u2014 undeliverable)
|
|
22
|
+
`);let i=[].concat(...r),s=0;for(let a of r){if(!await Z((0,pt.mergeBatch)(a),t,this.logPrefix))break;s+=a.length}for(let a of i.slice(s))this.queue.enqueue(a)}};m.MemoryTransport=Oe});var Me=T(I=>{"use strict";var we=I&&I.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(I,"__esModule",{value:!0});I.TraceManager=void 0;I.generateUlid=vt;var yt=we(v("fs")),rr=we(v("path")),or=we(v("crypto")),sr=re(),ke="0123456789ABCDEFGHJKMNPQRSTVWXYZ";function vt(){let e=Date.now(),t="",n=e;for(let i=0;i<10;i++)t=ke[n&31]+t,n=Math.floor(n/32);let r=or.default.randomBytes(10),o="";for(let i=0;i<10;i++)o+=ke[r[i]&31];for(;o.length<16;)o+=ke[0];return t+o}var Ae=class{tracePath;constructor(t){this.tracePath=t}newTrace(){let t=vt();return this.save(t),t}currentTrace(){try{let t=yt.default.readFileSync(this.tracePath,"utf-8"),{traceId:n}=JSON.parse(t);if(n)return n}catch{}return this.newTrace()}save(t){try{yt.default.mkdirSync(rr.default.dirname(this.tracePath),{recursive:!0}),(0,sr.atomicWriteFileSync)(this.tracePath,JSON.stringify({traceId:t}))}catch(n){process.stderr.write(`[pinta-core] trace persistence failed: ${n}
|
|
23
|
+
`)}}};I.TraceManager=Ae});var bt=T(N=>{"use strict";var Pt=N&&N.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(N,"__esModule",{value:!0});N.MemorySessionTraceManager=N.DiskSessionTraceManager=void 0;var Et=Pt(v("fs")),ir=Pt(v("path")),St=Me(),ar=re(),Tt=200,Re=class{tracePath;maxSessions;constructor(t,n={}){this.tracePath=t,this.maxSessions=n.maxSessions??Tt}read(){try{let t=JSON.parse(Et.default.readFileSync(this.tracePath,"utf-8"));if(t&&typeof t=="object"&&!("traceId"in t))return t}catch{}return{}}write(t){try{Et.default.mkdirSync(ir.default.dirname(this.tracePath),{recursive:!0});let n=Object.entries(t),r=n.length>this.maxSessions?Object.fromEntries(n.slice(-this.maxSessions)):t;(0,ar.atomicWriteFileSync)(this.tracePath,JSON.stringify(r))}catch{}}newTrace(t){let n=t||"default",r=(0,St.generateUlid)(),o=this.read();return o[n]=r,this.write(o),r}currentTrace(t){let n=t||"default",r=this.read()[n];return r||this.newTrace(n)}};N.DiskSessionTraceManager=Re;var De=class{map=new Map;maxSessions;constructor(t={}){this.maxSessions=t.maxSessions??Tt}newTrace(t){let n=t||"default",r=(0,St.generateUlid)();if(this.map.set(n,r),this.map.size>this.maxSessions){let o=this.map.keys().next().value;o!==void 0&&this.map.delete(o)}return r}currentTrace(t){let n=t||"default";return this.map.get(n)??this.newTrace(n)}};N.MemorySessionTraceManager=De});var At=T(C=>{"use strict";var xe=C&&C.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(C,"__esModule",{value:!0});C.envFilePath=lr;C.parseEnvFile=kt;C.loadEnvFile=fr;var cr=xe(v("node:fs")),ur=xe(v("node:os")),Ot=xe(v("node:path"));function lr(e,t,n){let r=n?process.env[n]:void 0,o=r&&r.length>0?r:Ot.default.join(ur.default.homedir(),e);return Ot.default.join(o,t)}function kt(e){let t={};for(let n of e.split(`
|
|
24
|
+
`)){let r=n.trim();if(!r||r.startsWith("#"))continue;let o=r.indexOf("=");if(o<0)continue;let i=r.slice(0,o).trim(),s=r.slice(o+1).trim();(s.startsWith('"')&&s.endsWith('"')||s.startsWith("'")&&s.endsWith("'"))&&(s=s.slice(1,-1)),i&&(t[i]=s)}return t}function fr(e){let t;try{t=cr.default.readFileSync(e,"utf-8")}catch{return}let n=kt(t);for(let[r,o]of Object.entries(n))process.env[r]===void 0&&(process.env[r]=o)}});var b=T(c=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0});c.loadEnvFile=c.parseEnvFile=c.envFilePath=c.MemorySessionTraceManager=c.DiskSessionTraceManager=c.generateUlid=c.TraceManager=c.MAX_POST_BYTES=c.parseHeadersEnv=c.envOptionsResolver=c.postOtlp=c.MemoryTransport=c.DiskTransport=c.MemoryRetryQueue=c.DiskRetryQueue=c.GUARD_BUDGET_HEADER=c.GUARD_STATUS_REFUSED=c.evaluateGuard=c.MAX_SPAN_BYTES=c.enforceSpanBudget=c.mergeBatch=c.attachGuard=c.buildPayload=c.clientAttrs=c.guardAttrs=c.attrsFromRecord=c.toOtlpValue=c.snakeCase=c.newSpanId=c.ulidToTraceId=c.MAX_BYTES=c.PATTERNS=c.applyMatches=c.resolveOverlaps=c.collectMatches=c.truncateTo=c.truncate=c.redact=void 0;var j=ge();Object.defineProperty(c,"redact",{enumerable:!0,get:function(){return j.redact}});Object.defineProperty(c,"truncate",{enumerable:!0,get:function(){return j.truncate}});Object.defineProperty(c,"truncateTo",{enumerable:!0,get:function(){return j.truncateTo}});Object.defineProperty(c,"collectMatches",{enumerable:!0,get:function(){return j.collectMatches}});Object.defineProperty(c,"resolveOverlaps",{enumerable:!0,get:function(){return j.resolveOverlaps}});Object.defineProperty(c,"applyMatches",{enumerable:!0,get:function(){return j.applyMatches}});Object.defineProperty(c,"PATTERNS",{enumerable:!0,get:function(){return j.PATTERNS}});Object.defineProperty(c,"MAX_BYTES",{enumerable:!0,get:function(){return j.MAX_BYTES}});var E=Ee();Object.defineProperty(c,"ulidToTraceId",{enumerable:!0,get:function(){return E.ulidToTraceId}});Object.defineProperty(c,"newSpanId",{enumerable:!0,get:function(){return E.newSpanId}});Object.defineProperty(c,"snakeCase",{enumerable:!0,get:function(){return E.snakeCase}});Object.defineProperty(c,"toOtlpValue",{enumerable:!0,get:function(){return E.toOtlpValue}});Object.defineProperty(c,"attrsFromRecord",{enumerable:!0,get:function(){return E.attrsFromRecord}});Object.defineProperty(c,"guardAttrs",{enumerable:!0,get:function(){return E.guardAttrs}});Object.defineProperty(c,"clientAttrs",{enumerable:!0,get:function(){return E.clientAttrs}});Object.defineProperty(c,"buildPayload",{enumerable:!0,get:function(){return E.buildPayload}});Object.defineProperty(c,"attachGuard",{enumerable:!0,get:function(){return E.attachGuard}});Object.defineProperty(c,"mergeBatch",{enumerable:!0,get:function(){return E.mergeBatch}});Object.defineProperty(c,"enforceSpanBudget",{enumerable:!0,get:function(){return E.enforceSpanBudget}});Object.defineProperty(c,"MAX_SPAN_BYTES",{enumerable:!0,get:function(){return E.MAX_SPAN_BYTES}});var Ne=ut();Object.defineProperty(c,"evaluateGuard",{enumerable:!0,get:function(){return Ne.evaluateGuard}});Object.defineProperty(c,"GUARD_STATUS_REFUSED",{enumerable:!0,get:function(){return Ne.GUARD_STATUS_REFUSED}});Object.defineProperty(c,"GUARD_BUDGET_HEADER",{enumerable:!0,get:function(){return Ne.GUARD_BUDGET_HEADER}});var wt=Te();Object.defineProperty(c,"DiskRetryQueue",{enumerable:!0,get:function(){return wt.DiskRetryQueue}});Object.defineProperty(c,"MemoryRetryQueue",{enumerable:!0,get:function(){return wt.MemoryRetryQueue}});var q=_t();Object.defineProperty(c,"DiskTransport",{enumerable:!0,get:function(){return q.DiskTransport}});Object.defineProperty(c,"MemoryTransport",{enumerable:!0,get:function(){return q.MemoryTransport}});Object.defineProperty(c,"postOtlp",{enumerable:!0,get:function(){return q.postOtlp}});Object.defineProperty(c,"envOptionsResolver",{enumerable:!0,get:function(){return q.envOptionsResolver}});Object.defineProperty(c,"parseHeadersEnv",{enumerable:!0,get:function(){return q.parseHeadersEnv}});Object.defineProperty(c,"MAX_POST_BYTES",{enumerable:!0,get:function(){return q.MAX_POST_BYTES}});var Mt=Me();Object.defineProperty(c,"TraceManager",{enumerable:!0,get:function(){return Mt.TraceManager}});Object.defineProperty(c,"generateUlid",{enumerable:!0,get:function(){return Mt.generateUlid}});var Rt=bt();Object.defineProperty(c,"DiskSessionTraceManager",{enumerable:!0,get:function(){return Rt.DiskSessionTraceManager}});Object.defineProperty(c,"MemorySessionTraceManager",{enumerable:!0,get:function(){return Rt.MemorySessionTraceManager}});var je=At();Object.defineProperty(c,"envFilePath",{enumerable:!0,get:function(){return je.envFilePath}});Object.defineProperty(c,"parseEnvFile",{enumerable:!0,get:function(){return je.parseEnvFile}});Object.defineProperty(c,"loadEnvFile",{enumerable:!0,get:function(){return je.loadEnvFile}})});import{realpathSync as no}from"node:fs";import{pathToFileURL as ro}from"node:url";var Q=k(b());function dr(){return(0,Q.envFilePath)(".claude","pinta-cc.env")}function Dt(e=dr()){(0,Q.loadEnvFile)(e)}function xt(){process.env.CLAUDE_PLUGIN_OPTION_ENDPOINT&&!process.env.OTEL_EXPORTER_OTLP_TRACES_ENDPOINT&&(process.env.OTEL_EXPORTER_OTLP_TRACES_ENDPOINT=process.env.CLAUDE_PLUGIN_OPTION_ENDPOINT),process.env.CLAUDE_PLUGIN_OPTION_API_KEY&&!process.env.OTEL_EXPORTER_OTLP_HEADERS&&(process.env.OTEL_EXPORTER_OTLP_HEADERS=`x-pinta-relay-token=${process.env.CLAUDE_PLUGIN_OPTION_API_KEY}`),!process.env.PINTA_RELAY_TOKEN&&process.env.CLAUDE_PLUGIN_OPTION_API_KEY&&(process.env.PINTA_RELAY_TOKEN=process.env.CLAUDE_PLUGIN_OPTION_API_KEY)}var jt=k(b());import Nt from"path";function It(){let e=process.env.CLAUDE_PLUGIN_ROOT||process.cwd(),t=process.env.CLAUDE_PLUGIN_DATA||Nt.join(e,".plugin-data");return{pluginRoot:e,pluginData:t,tracePath:Nt.join(t,"trace.json")}}function ae(){return(0,jt.envOptionsResolver)()!==null}function Ct(e){return e.hook_event_name==="PreToolUse"}function Ut(e){return e.hook_event_name==="PostToolUse"||e.hook_event_name==="PostToolUseFailure"}function Bt(e){return e.hook_event_name==="PostToolBatch"}function Lt(e){return e.hook_event_name==="UserPromptSubmit"}function Ft(e){return e.hook_event_name==="SessionStart"||e.hook_event_name==="SessionEnd"}function $t(e){return e.hook_event_name==="SubagentStart"||e.hook_event_name==="SubagentStop"}function qt(e){return e.hook_event_name==="Stop"}function Vt(e){return e.hook_event_name==="PermissionRequest"||e.hook_event_name==="PermissionDenied"}var pr=new Set(["Notification","TaskCreated","TaskCompleted"]);function Gt(e){return pr.has(e.hook_event_name)}var cn=k(b());var zt=k(b()),mr=1e4,hr="pinta-cc/1.10.3-skax.0";function V(e,t){return(0,zt.evaluateGuard)(e,t,{timeoutMs:mr,token:process.env.PINTA_RELAY_TOKEN??"",disabled:process.env.PINTA_GUARD_DISABLED==="1",userAgent:hr})}var ee=k(b());var Yt=k(b()),ce=class extends Yt.DiskTransport{constructor(t){super({pluginData:t.pluginData,logPrefix:"pinta-cc"})}};var Xt=k(b()),ue=class extends Xt.TraceManager{constructor(t){super(t.tracePath)}};import Be from"os";import{spawnSync as gr}from"node:child_process";import{createHash as _r,randomUUID as yr}from"node:crypto";import O from"node:fs";import vr from"node:os";import _ from"node:path";var Jt=/^\d+\.\d+\.\d+(?:-[0-9A-Za-z.-]+)?(?:\+[0-9A-Za-z.-]+)?$/,Er=/^v?(\d+\.\d+\.\d+(?:-[0-9A-Za-z.-]+)?(?:\+[0-9A-Za-z.-]+)?)\s+\(Claude Code\)$/m,Pr=2e3,Sr=24*60*60*1e3,Tr=3e4,Ce=8,Ht="claude-version.json",G=new Map;function M(e){return typeof e=="object"&&e!==null&&"code"in e&&typeof e.code=="string"?e.code:"UNKNOWN"}function P(e){process.stderr.write(`[pinta-cc] CLI version: ${e}
|
|
25
|
+
`)}function le(e){return M(e)==="ENOENT"||M(e)==="ENOTDIR"}function br(){let e=process.env.CLAUDE_CODE_EXECPATH,t=process.platform==="win32"?["claude.exe","claude.cmd"]:["claude"],n;if(e)n=[e];else{let r=(process.env.PATH??"").split(_.delimiter).filter(o=>_.isAbsolute(o));try{r.push(_.join(vr.homedir(),".local","bin"))}catch(o){P(`native install directory lookup failed (${M(o)})`)}n=r.flatMap(o=>t.map(i=>_.join(o,i)))}for(let r of new Set(n))try{let o=O.realpathSync(r),i=O.statSync(o);if(!i.isFile())continue;return!e&&process.platform!=="win32"&&O.accessSync(o,O.constants.X_OK),{file:o,fingerprint:_r("sha256").update(JSON.stringify([o,i.ino,i.size,i.mtimeMs,i.ctimeMs])).digest("hex")}}catch(o){le(o)||P(`executable lookup failed (${M(o)})`)}return P(e?"configured executable is unavailable":"no Claude executable found in PATH or ~/.local/bin"),null}function Ie(e){let t;try{t=JSON.parse(O.readFileSync(e,"utf8"))}catch(n){return le(n)||P(`package metadata could not be read (${n instanceof SyntaxError?"INVALID_JSON":M(n)})`),null}return typeof t!="object"||t===null||!("name"in t)||!("version"in t)||typeof t.name!="string"||typeof t.version!="string"||!Jt.test(t.version)?null:t.name==="@anthropic-ai/claude-code"||t.name.startsWith("@anthropic-ai/claude-code-")?t.version:null}function Or(e){let t=_.dirname(e),n=_.basename(t)===".bin"&&/^claude(?:\.cmd)?$/i.test(_.basename(e));for(let r=0;r<6;r++){let o=Ie(_.join(t,"package.json"));if(o)return o;if(_.basename(e).toLowerCase()==="claude.cmd"&&r===0){let s=Ie(_.join(t,"node_modules","@anthropic-ai","claude-code","package.json"));if(s)return s}if(n&&_.basename(t)==="node_modules"){let s=Ie(_.join(t,"@anthropic-ai","claude-code","package.json"));if(s)return s}let i=_.dirname(t);if(i===t)break;t=i}return null}function kr(e){return typeof e=="object"&&e!==null&&"fingerprint"in e&&typeof e.fingerprint=="string"&&/^[0-9a-f]{64}$/.test(e.fingerprint)&&"version"in e&&(e.version===null||typeof e.version=="string"&&Jt.test(e.version))&&"checkedAt"in e&&typeof e.checkedAt=="number"&&Number.isFinite(e.checkedAt)}function Wt(e,t){let n=t-e.checkedAt;return n>=0&&n<(e.version===null?Tr:Sr)}function Ar(e){if(!e)return[];let t=_.join(e,Ht);try{if(O.statSync(t).size>16384)return P("oversized version cache ignored"),[];let n=JSON.parse(O.readFileSync(t,"utf8"));if(Array.isArray(n)&&n.length<=Ce&&n.every(kr))return n;P("invalid version cache ignored")}catch(n){le(n)||P(`version cache read failed (${n instanceof SyntaxError?"INVALID_JSON":M(n)})`)}return[]}function Kt(e){for(G.delete(e.fingerprint),G.set(e.fingerprint,e);G.size>Ce;){let t=G.keys().next().value;t!==void 0&&G.delete(t)}}function wr(e,t){if(!e)return;let n=_.join(e,Ht),r=`${n}.${process.pid}.${yr()}.tmp`;try{O.mkdirSync(e,{recursive:!0,mode:448}),O.writeFileSync(r,JSON.stringify(t),{encoding:"utf8",mode:384,flag:"wx"}),O.renameSync(r,n)}catch(o){P(`version cache write failed (${M(o)})`)}finally{try{O.unlinkSync(r)}catch(o){le(o)||P(`temporary version cache cleanup failed (${M(o)})`)}}}function Mr(e){if(/\.(cmd|bat|ps1)$/i.test(e))return P("command shim has no readable Claude package metadata"),null;let t=gr(e,["--version"],{encoding:"utf8",stdio:["ignore","pipe","pipe"],shell:!1,windowsHide:!0,timeout:Pr,killSignal:"SIGKILL",maxBuffer:4096});if(t.error||t.status!==0)return P(`version probe failed (${t.error?M(t.error):`exit ${t.status??t.signal}`})`),null;let n=Er.exec(t.stdout.trim())?.[1];return n||(P("version probe did not identify Claude Code"),null)}function Zt(e){let t=br();if(!t)return"unknown";let n=Or(t.file);if(n)return n;let r=Date.now(),o=Ar(e),i=[G.get(t.fingerprint),...o].find(a=>a&&a.fingerprint===t.fingerprint&&Wt(a,r));if(i)return Kt(i),i.version??"unknown";let s={fingerprint:t.fingerprint,version:Mr(t.file),checkedAt:Date.now()};return Kt(s),wr(e,[...o.filter(a=>a.fingerprint!==s.fingerprint&&Wt(a,s.checkedAt)),s].slice(-Ce)),s.version??"unknown"}import B from"node:path";import R from"node:fs";import Qt from"node:path";var Rr=new Set(["","unknown","undefined","null","n/a","none","auto","default"]),Dr=256*1024,xr=1024*1024,Nr=4096;function U(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)?e:void 0}function Ue(e){let t=U(e),n=t?"id"in t?t.id:t.name:e;if(typeof n!="string")return;let r=n.trim();if(!(r.startsWith("{")||r.startsWith("[")))return r.length<=512&&!/[\u0000-\u001f\u007f]/.test(r)&&!Rr.has(r.toLowerCase())?r:void 0}function en(e,t){delete e.model,t&&(e.model=t.name,!(t.source==="hook.model"&&e.model_source!==void 0)&&(e.model_source!==void 0&&(e.model_original_source=e.model_source),e.model_source=t.source))}function z(e){return typeof e=="string"&&/^[A-Za-z0-9][A-Za-z0-9_.:-]{0,255}$/.test(e)?e:void 0}function fe(e){let t=typeof e=="number"?e:typeof e=="string"&&/^\d{4}-\d{2}-\d{2}T/.test(e)?Date.parse(e):NaN;return Number.isFinite(t)&&t>=0?t:void 0}function tn(e,t){let n=e.timestamp===void 0?fe(t):fe(e.timestamp);return n!==void 0&&n<=t?n:void 0}function nn(e){if(typeof e!="string"||e.length>4096||/[\u0000-\u001f]/.test(e)||!Qt.isAbsolute(e)||Qt.extname(e)!==".jsonl")return;let t;try{t=R.openSync(e,R.constants.O_RDONLY|R.constants.O_NONBLOCK|(R.constants.O_NOFOLLOW??0));let n=R.fstatSync(t);if(!n.isFile()||!Number.isSafeInteger(n.size)||n.size<=0)return;let r=Buffer.alloc(Math.min(n.size,Dr));if(R.readSync(t,r,0,r.length,0)!==r.length)return;let o=r.indexOf(10),i;if(o>=0)try{i=U(JSON.parse(r.toString("utf8",0,o)))}catch{}let s=Math.max(0,n.size-xr),a=n.size<=r.length?r:Buffer.alloc(n.size-s);if(a!==r&&R.readSync(t,a,0,a.length,s)!==a.length)return;let u=R.fstatSync(t);if(u.size<n.size||u.size===n.size&&u.mtimeMs!==n.mtimeMs)return;let l=s>0?a.indexOf(10)+1:0,d=a.lastIndexOf(10);if(s>0&&l===0||d<l)return;let f=[],p=0;for(;d>l&&p<Nr;){let A=a.lastIndexOf(10,d-1),W=Math.max(l,A+1),Fe=a.toString("utf8",W,d).trim();if(Fe){let $e=U(JSON.parse(Fe));$e&&f.push($e)}d=W-1,p++}return f.reverse(),{first:i,rows:f,complete:s===0&&d<0&&a[a.length-1]===10}}catch{return}finally{if(t!==void 0)try{R.closeSync(t)}catch{}}}function rn(e){let t=e[0];return t&&e.every(n=>n?.name===t.name)?t:void 0}var jr=new Set(["PreToolUse","PostToolUse","PostToolUseFailure","PermissionRequest","PermissionDenied"]);function Ir(e,t){let n=B.dirname(e);if(B.basename(n)!=="subagents"||B.basename(B.dirname(n))!==t)return;let r=/^agent-(.+)\.jsonl$/.exec(B.basename(e));return z(r?.[1])}function on(e,t){let n=Ue(e.model);if(n)return{name:n,source:"hook.model"};try{return Cr(e,t)}catch{return}}function Cr(e,t){if(!jr.has(e.hook_event_name))return;let n=z(e.session_id),r=z(e.tool_use_id),o=tn(e,t);if(!n||!r||o===void 0||typeof e.transcript_path!="string")return;let i=Ir(e.transcript_path,n),s=e.agent_id===void 0?i:z(e.agent_id);if(e.agent_id!==void 0&&!s||i!==void 0&&i!==s||!s&&e.agent_type!==void 0||B.basename(B.dirname(e.transcript_path))==="subagents"&&!i)return;let a=nn(e.transcript_path);if(!a)return;let u=[];for(let l of a.rows){let d=fe(l.timestamp);if(l.type!=="assistant"||l.sessionId!==n||d===void 0||d>o)continue;let f=l.agentId===void 0?void 0:z(l.agentId);if(f!==s||l.agentId!==void 0&&!f||l.isSidechain===!0&&!s)continue;let p=U(l.message);if(!p||p.role!==void 0&&p.role!=="assistant"||!Array.isArray(p.content)||!p.content.some(W=>U(W)?.type==="tool_use"&&U(W)?.id===r))continue;let A=Ue(p.model);u.push(A?{name:A,source:"transcript.assistant.message"}:void 0)}return rn(u)}var Y=k(b()),de;function Ur(){if(de===void 0)try{de=Be.userInfo().username}catch{de=process.env.USER??process.env.LOGNAME??(typeof process.getuid=="function"?String(process.getuid()):"unknown")}return de}var sn="1.10.3-skax.0",Br=new Set(["cc.hook","cc.tool_name","cc.tool_use_id","cc.session_id","cc.transcript_path","cc.cwd","cc.permission_mode"]),Lr=new Set(["cc.tool_input","cc.tool_response","cc.tool_calls"]),Fr={skipRedactKeys:Br,bashContextKeys:Lr,outputForKey:(e,t)=>{if(e==="cc.error"||e==="cc.error_message")return t;if(e==="cc.tool_calls"&&Array.isArray(t))return t.map(n=>n&&typeof n=="object"&&"tool_response"in n?n.tool_response:void 0);if(!(e!=="cc.tool_response"&&e!=="cc.tool_result"))return t&&typeof t=="object"&&"file"in t&&t.file&&typeof t.file=="object"&&"content"in t.file&&t.file.content!==void 0?t.file.content:t}};function $r(e,t){let n=[];n.push({key:"ingest.type",value:{stringValue:"cc"}}),n.push({key:"cc.hook",value:{stringValue:e.hook_event_name}});let r={};for(let[o,i]of Object.entries(e))o!=="hook_event_name"&&(r[o]=i);return en(r,on(e,t)),n.push(...(0,Y.attrsFromRecord)(r,"cc",Fr)),n}function qr(e){return[{key:"service.name",value:{stringValue:"claude-code"}},{key:"service.version",value:{stringValue:Zt(e)}},{key:"telemetry.sdk.name",value:{stringValue:"pinta-cc"}},{key:"telemetry.sdk.language",value:{stringValue:"nodejs"}},{key:"telemetry.sdk.version",value:{stringValue:sn}},{key:"process.pid",value:{intValue:process.pid}},{key:"process.owner",value:{stringValue:Ur()}},{key:"host.name",value:{stringValue:Be.hostname()}},{key:"host.arch",value:{stringValue:Be.arch()}}]}function an(e){let t=e.now??Date.now();return(0,Y.buildPayload)({traceId:e.traceId,spanName:`cc.${(0,Y.snakeCase)(e.event.hook_event_name)}`,attributes:$r(e.event,t),resource:qr(e.versionCacheDir),scope:{name:"pinta-cc",version:sn},now:t})}function L(e,t,n={}){let r=new ue(t),o=n.traceMode==="new"?r.newTrace():r.currentTrace();return an({event:e,traceId:o,versionCacheDir:t.pluginData})}async function F(e,t){if(!ae())return;let n=new ce(t);await n.flush(),await n.send(e)}function X(e,t){if(!ae())return;let n=Buffer.byteLength(JSON.stringify(e),"utf-8");if(n>ee.MAX_POST_BYTES){process.stderr.write(`[pinta-cc] dropping oversized span payload (${n} > ${ee.MAX_POST_BYTES} bytes) \u2014 undeliverable, not queued
|
|
26
|
+
`);return}new ee.DiskRetryQueue(t.pluginData,"pinta-cc").enqueue(e)}async function S(e,t,n={}){ae()&&await F(L(e,t,n),t)}async function un(e,t){let n=L(e,t),r=await V(n,process.env.PINTA_GUARD_ENDPOINT);if(r?.decision==="DENY"){let i={hookSpecificOutput:{hookEventName:"PreToolUse",permissionDecision:"deny",permissionDecisionReason:r.userMessage??r.reason??"guard_deny"}};process.stdout.write(JSON.stringify(i)+`
|
|
27
|
+
`)}try{if((0,cn.attachGuard)(n,r),r?.decision==="DENY")return X(n,t),0;await F(n,t)}catch(o){process.stderr.write(`[pinta-cc] telemetry emit failed: ${o}
|
|
28
|
+
`)}return 0}var ln=k(b());async function fn(e,t){if(e.hook_event_name==="PostToolUseFailure")return await S(e,t),0;let n=L(e,t),r=await V(n,process.env.PINTA_GUARD_ENDPOINT);r?.decision==="DENY"&&process.stdout.write(JSON.stringify({continue:!1,stopReason:"Pinta blocked this tool output. Start a new session before continuing."})+`
|
|
29
|
+
`);try{if((0,ln.attachGuard)(n,r),r&&n.resourceSpans[0].scopeSpans[0].spans[0].attributes.push({key:"pinta.guard.target",value:{stringValue:"tool_output"}}),r?.decision==="DENY")return X(n,t),0;await F(n,t)}catch(o){process.stderr.write(`[pinta-cc] telemetry emit failed: ${o}
|
|
30
|
+
`)}return 0}async function dn(e,t){return await S(e,t,{traceMode:"new"}),0}async function pn(e,t){return await S(e,t),0}async function mn(e,t){return await S(e,t),0}async function hn(e,t){return await S(e,t),0}var gn=k(b());async function _n(e,t){if(e.hook_event_name==="PermissionDenied")return await S(e,t),0;let n=L(e,t),r=await V(n,process.env.PINTA_GUARD_ENDPOINT);r?.decision==="DENY"&&process.stdout.write(JSON.stringify({hookSpecificOutput:{hookEventName:"PermissionRequest",decision:{behavior:"deny",message:r.userMessage??r.reason??"guard_deny"}}})+`
|
|
31
|
+
`);try{if((0,gn.attachGuard)(n,r),r?.decision==="DENY")return X(n,t),0;await F(n,t)}catch(o){process.stderr.write(`[pinta-cc] telemetry emit failed: ${o}
|
|
32
|
+
`)}return 0}async function Le(e){return 0}async function Vr(){let e=[];for await(let t of process.stdin)e.push(t);return Buffer.concat(e).toString("utf-8")}async function yn(){xt();let e=0;try{let t=It(),n=await Vr(),r=JSON.parse(n);Gt(r)?e=await Le(r):Ct(r)?e=await un(r,t):Ut(r)||Bt(r)?e=await fn(r,t):Lt(r)?e=await dn(r,t):Ft(r)?e=await pn(r,t):$t(r)?e=await mn(r,t):qt(r)?e=await hn(r,t):Vt(r)?e=await _n(r,t):e=await Le(r)}catch(t){process.stderr.write(`[pinta-cc] error: ${t}
|
|
33
|
+
`),e=0}return e}import{opendir as Gr,stat as zr}from"node:fs/promises";import{homedir as Yr}from"node:os";import te from"node:path";var Xr="pinta-cc",vn="memory";function Wr(){let e=process.env.CLAUDE_CONFIG_DIR;return e&&e.length>0?e:te.join(Yr(),".claude")}function Kr(){return te.join(Wr(),"projects")}function Jr(e,t){return te.relative(e,t).split(te.sep).join("/")}function Hr(e){return e.endsWith(".jsonl")?"append-log":"rewritten-doc"}function Zr(e){let t=e.split("/");if(t.length<2)return{};let n=t[0],r=t[1];return t.length===2?r.endsWith(".jsonl")?{projectKey:n,sessionId:r.slice(0,-6)}:{projectKey:n}:r===vn?{projectKey:n}:{projectKey:n,sessionId:r}}function Qr(e){return e.endsWith(".jsonl")?"session-log":e.split("/")[1]===vn?"memory":e.endsWith(".json")?"meta":"other"}async function En(){return[Kr()]}async function*Pn(e,t){let n;try{n=await Gr(t)}catch{return}try{for await(let r of n){let o=te.join(t,r.name);r.isDirectory()?yield*Pn(e,o):r.isFile()&&(yield{absPath:o,relPath:Jr(e,o)})}}catch{return}}async function*eo(e){let[t]=await En(),n=e.since?.getTime();for await(let{absPath:r,relPath:o}of Pn(t,t)){let i;try{i=await zr(r)}catch{continue}if(n!==void 0&&i.mtime.getTime()<=n)continue;let{projectKey:s,sessionId:a}=Zr(o);yield{relPath:o,absPath:r,size:i.size,mtime:i.mtime,sessionId:a,projectKey:s,semantics:Hr(o)}}}var to={id:Xr,roots:En,scan:eo,classify:Qr};Dt();function oo(){let e=process.argv[1];if(!e)return!1;try{return import.meta.url===ro(no(e)).href}catch{return!1}}async function so(){let e=await yn();process.exit(e)}oo()&&so();export{to as lifecycle};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@pinta-ai/pinta-cc",
|
|
3
|
-
"version": "1.10.
|
|
3
|
+
"version": "1.10.3-skax.0",
|
|
4
4
|
"description": "Generic OTLP forwarder for Claude Code hook events",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"exports": {
|
|
@@ -43,7 +43,7 @@
|
|
|
43
43
|
"prepublishOnly": "npm run build"
|
|
44
44
|
},
|
|
45
45
|
"devDependencies": {
|
|
46
|
-
"@pinta-ai/core": "
|
|
46
|
+
"@pinta-ai/core": "0.9.3-skax.0",
|
|
47
47
|
"@types/node": "^22.0.0",
|
|
48
48
|
"esbuild": "^0.24.0",
|
|
49
49
|
"tsx": "^4.0.0",
|