@probnaya/057-cli 0.1.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.
Binary file
Binary file
@@ -0,0 +1,17 @@
1
+ <!doctype html>
2
+ <html lang="en">
3
+ <head>
4
+ <meta charset="utf-8" />
5
+ <meta name="viewport" content="width=device-width, initial-scale=1" />
6
+ <title>057 — PROBNAYA</title>
7
+ <link rel="icon" type="image/svg+xml" href="/057-mark.svg">
8
+ <link rel="icon" type="image/png" sizes="32x32" href="/favicon-32.png">
9
+ <link rel="icon" type="image/png" sizes="16x16" href="/favicon-16.png">
10
+ <!-- No web fonts. 057 makes no external request; see the type stack in src/ui/tokens.ts. -->
11
+ <script type="module" crossorigin src="/assets/index-s97wO9Og.js"></script>
12
+ <link rel="stylesheet" crossorigin href="/assets/index-57shDcHR.css">
13
+ </head>
14
+ <body>
15
+ <div id="root"></div>
16
+ </body>
17
+ </html>
@@ -0,0 +1,132 @@
1
+ import{existsSync as C,statSync as Ne,mkdirSync as ns,chmodSync as os,createReadStream as rs,rmSync as is}from"node:fs";import{createInterface as as}from"node:readline";import{createServer as cs}from"node:http";import{join as M,isAbsolute as us,resolve as ve,dirname as ds,normalize as ls,sep as ps,extname as fs}from"node:path";import{fileURLToPath as ms}from"node:url";import{readdir as L,stat as ee,readFile as K}from"node:fs/promises";import{hostname as Tt,homedir as te}from"node:os";import hs from"node:zlib";import{createHash as bs}from"node:crypto";import{DatabaseSync as qe}from"node:sqlite";import{execFile as gs}from"node:child_process";import{promisify as ys}from"node:util";const rt=["machine","session","execution","process","artifact"];function vs(e){return`${e.ns}|${e.parts.join("|")}`}const O={interactions:"interactions",steps:"steps",errors:"errors",retries:"retries",cpuMs:"cpu.ms",tokensInput:"tokens.input",tokensOutput:"tokens.output",tokensCacheRead:"tokens.cacheRead",tokensReasoning:"tokens.reasoning"},ws=[{a:"execution",b:"process",kind:"ran-as"},{a:"session",b:"process",kind:"ran-as"},{a:"execution",b:"session",kind:"ran-as"},{a:"session",b:"session",kind:"same-as"},{a:"execution",b:"execution",kind:"same-as"},{a:"machine",b:"machine",kind:"same-as"},{a:"process",b:"process",kind:"same-as"}];function it(e,t){for(const s of ws){if(e.subjectType===s.a&&t.subjectType===s.b)return{kind:s.kind,from:e,to:t};if(t.subjectType===s.a&&e.subjectType===s.b)return{kind:s.kind,from:t,to:e}}return null}const As=(e,t)=>e.validFrom<=t.validTo&&t.validFrom<=e.validTo;function Es(e,t){const s=Math.max(e.validFrom,t.validFrom),n=Math.min(e.validTo,t.validTo);if(n<s)return 0;const o=Math.max(e.validTo,t.validTo)-Math.min(e.validFrom,t.validFrom);return o<=0?1:(n-s)/o}const ks=.5;function Ss(e,t){return As(e,t)?Es(e,t)>=ks?2:1:0}const W=e=>`${e.subjectType}:${e.subjectId}`,Is="inferred",Ts="Two observers asserted the same identity claim over overlapping validity windows, and each was the other's only candidate at the strongest available evidence tier (two lifetimes that substantially coincide beat a bare overlap). The claims themselves are measured; the identification is inferred.";function _s(e){const t=new Map;for(const r of e){const a=t.get(r.key);a?a.push(r):t.set(r.key,[r])}const s=[],n=[];let o=0;for(const[r,a]of[...t.entries()].sort(([i],[u])=>i<u?-1:1)){const i=new Map;for(const g of a){const y=W(g),d=i.get(y);if(!d){i.set(y,{...g});continue}d.validFrom=Math.min(d.validFrom,g.validFrom),d.validTo=Math.max(d.validTo,g.validTo)}const u=[...i.values()].sort((g,y)=>W(g)<W(y)?-1:1);if(u.length<2){o++;continue}const p=[];let c=!1;for(let g=0;g<u.length;g++)for(let y=g+1;y<u.length;y++){const d=u[g],m=u[y];if(d.sourceId===m.sourceId)continue;const h=Ss(d,m);if(h!==0){if(!it(d,m)){c=!0;continue}p.push({x:d,y:m,tier:h})}}const f=new Map;for(const g of p)for(const y of[g.x,g.y]){const d=W(y);f.set(d,Math.max(f.get(d)??0,g.tier))}const E=new Map;for(const g of p)for(const y of[g.x,g.y]){const d=W(y);f.get(d)===g.tier&&E.set(d,(E.get(d)??0)+1)}if(p.length===0){n.push({key:r,reason:c?"no-pairing-defined":"no-window-overlap",subjects:[...i.keys()].sort()});continue}for(const{x:g,y,tier:d}of p){if(f.get(W(g))!==d||f.get(W(y))!==d)continue;if(E.get(W(g))!==1||E.get(W(y))!==1){n.push({key:r,reason:"multiple-candidates",subjects:[W(g),W(y)].sort()});continue}const m=it(g,y);s.push({from:{type:m.from.subjectType,id:m.from.subjectId},to:{type:m.to.subjectType,id:m.to.subjectId},kind:m.kind,basis:Is,assumption:Ts,via:r})}}return{relationships:s,ambiguous:n,unmatched:o,considered:t.size}}async function Rs(e,t,s,n){const o=[];let r=0,a=0;for(const i of t){const u=Date.now();try{const p=await i.collect(s,n),c=e.append(p);r+=c.inserted,a+=c.duplicate,o.push({id:i.id,ok:!0,collected:p.length,inserted:c.inserted,duplicate:c.duplicate,ms:Date.now()-u})}catch(p){o.push({id:i.id,ok:!1,collected:0,inserted:0,duplicate:0,error:p instanceof Error?p.message:String(p),ms:Date.now()-u})}}return{sources:o,inserted:r,duplicate:a}}function $s(e,t,s){return _s(e.claims(t,s))}const _t="deepseek-harness",D=e=>typeof e=="number"&&Number.isFinite(e)?e:0,B=e=>typeof e=="string"?e:void 0;function Os(e){const t=e.split("/").filter(Boolean);return(t[t.length-1]??e).toUpperCase()}function Ns(e,t){const s=[],n=e[0];if(!n||n.type!=="session"||!n.id)return s;const o=n.id,r=n.cwd??"",a=D(n.createdAt),i=D(n.delegationDepth),u=Os(r);let p="deepseek",c,f;for(const v of e)if(v.type==="request/context"&&v.data?(p=B(v.data.provider)??p,c=B(v.data.model)??c):v.type==="session/title"&&v.data&&(f=B(v.data.title)??f),c&&f)break;const g={source:{id:_t,instance:t.instance},observedAt:t.observedAt,clock:"wall",basis:"measured",stratum:"stored-semantics"};let y=a;for(const v of e){const S=D(v.time);S>y&&(y=S)}const d={ns:"fs.cwd",parts:[t.host,r],validFrom:a,validTo:Math.max(a,y)};s.push({...g,occurredAt:a,seq:"session",kind:"began",subject:{type:"session",id:o},claims:r?[d]:void 0,core:{machineId:t.machine.id,label:f,executor:p,model:c,depth:i},attrs:{context:r,"dsh.delegationDepth":i}});const m=v=>`${o}:turn:${v}`;let h=null;const l=new Map,b=new Map;let A=a;for(const v of e){const S=D(v.time)||A;if(S<a)continue;A=S;const R=v.data??{},I=v.seq??`t${S}`,$=w=>({type:"execution",id:m(w)});switch(v.type){case"turn/start":{const w=D(R.turn);h=w,s.push({...g,occurredAt:S,seq:I,kind:"began",subject:$(w),core:{machineId:t.machine.id,sessionId:o,label:f?`${u} · ${f}`:u,executor:p,model:c,depth:i},attrs:{"dsh.turn":w}});break}case"turn/end":{const w=D(R.turn),k=R.reason,T=k?.kind;if(T==="error"){const _=k?.error??{};s.push({...g,occurredAt:S,seq:I,kind:"ended",subject:$(w),core:{outcome:"error",failureCode:B(_.code)??"ERROR",failureMessage:B(_.message)??"Run failed"},attrs:{"dsh.endReason":T}})}else s.push({...g,occurredAt:S,seq:I,kind:"ended",subject:$(w),core:{outcome:T==="aborted"?"interrupted":"completed"},attrs:{"dsh.endReason":T??"completed"}});h===w&&(h=null);break}case"assistant/message":{const w=D(R.turn),k=R.usage;if(!k)break;const T={[O.tokensInput]:D(k.inputTokens),[O.tokensOutput]:D(k.outputTokens),[O.tokensCacheRead]:D(k.cacheReadTokens),[O.tokensReasoning]:D(k.reasoningTokens),[O.steps]:1};s.push({...g,occurredAt:S,seq:I,kind:"progressed",subject:$(w),core:{measures:T},attrs:{"dsh.inputTokens":D(k.inputTokens),"dsh.outputTokens":D(k.outputTokens),"dsh.cacheReadTokens":D(k.cacheReadTokens),"dsh.reasoningTokens":D(k.reasoningTokens)}});break}case"tool/call":{s.push({...g,occurredAt:S,seq:I,kind:"progressed",subject:$(D(R.turn)),core:{measures:{[O.interactions]:1}},attrs:{"dsh.tool":B(R.name)}});break}case"tool/result":{const w=R.message;let k=!1;for(const T of w?.content??[])T.isError===!0&&(k=!0);k&&s.push({...g,occurredAt:S,seq:I,kind:"progressed",subject:$(D(R.turn)),core:{measures:{[O.errors]:1}}});break}case"llm/retry":{s.push({...g,occurredAt:S,seq:I,kind:"progressed",subject:$(D(R.turn)),core:{measures:{[O.retries]:1}}});break}case"approval/asked":{const w=B(R.id);if(h===null)break;w&&l.set(w,h),s.push({...g,occurredAt:S,seq:I,kind:"blocked",subject:$(h),core:{blockedOn:"approval"},attrs:{"dsh.approvalId":w}});break}case"approval/decided":{const w=B(R.id),k=w?l.get(w):h;if(k==null)break;l.delete(w??""),s.push({...g,occurredAt:S,seq:I,kind:"resumed",subject:$(k),attrs:{"dsh.approvalId":w}});break}case"tool-workflow/agent-start":{if(h===null)break;const w=B(R.childId);if(!w)break;const k=`${o}:agent:${w}`;b.set(`${B(R.runId)}:${D(R.seq)}`,k),s.push({...g,occurredAt:S,seq:I,kind:"began",subject:{type:"execution",id:k},core:{machineId:t.machine.id,sessionId:o,label:B(R.label)??`${u} · SUB`,executor:p,model:c,parentId:m(h),depth:i+1},attrs:{"dsh.childId":w}});break}case"tool-workflow/agent-end":{const w=`${B(R.runId)}:${D(R.seq)}`,k=b.get(w);if(!k)break;b.delete(w);const T=B(R.outcome);s.push({...g,occurredAt:S,seq:I,kind:"ended",subject:{type:"execution",id:k},core:T==="completed"?{outcome:"completed"}:{outcome:"error",failureCode:"SUBAGENT",failureMessage:T??"Sub-agent did not complete"},attrs:{"dsh.subagentOutcome":T}});break}}}if(t.closeOpenTurns){const v="The session log has not been written to for longer than the live window, so the process that owned it is gone and any turn left open was cut off rather than still running.";h!==null&&s.push({...g,occurredAt:A,seq:"close:turn",kind:"ended",subject:{type:"execution",id:m(h)},core:{outcome:"interrupted"},basis:"inferred",assumption:v});for(const S of b.values())s.push({...g,occurredAt:A,seq:`close:${S}`,kind:"ended",subject:{type:"execution",id:S},core:{outcome:"interrupted"},basis:"inferred",assumption:v});s.push({...g,occurredAt:A,seq:"close:session",kind:"ended",subject:{type:"session",id:o},basis:"inferred",assumption:v})}return t.since!==void 0?s.filter(v=>v.occurredAt>=t.since):s}function Ms(e){const t=[];let s=0;for(;s<e.length;){let n=e.indexOf(`
2
+ `,s);n===-1&&(n=e.length);const o=e.slice(s,n);if(s=n+1,o.length!==0&&!(o.startsWith('{"type":"reasoning-chunks"')||o.startsWith('{"type":"text-chunks"')||o.startsWith('{"type":"tool-call-chunks"')||o.startsWith('{"type":"assistant/chunk"')))try{t.push(JSON.parse(o))}catch{}}return t}function js(e){const t=JSON.stringify([e.source.id,e.source.instance,e.occurredAt,e.clock,e.kind,e.subject.type,e.subject.id,e.basis,e.seq??null,Re(e.core),Re(e.attrs)]);return bs("sha256").update(t).digest("hex").slice(0,32)}function Re(e){if(e==null)return null;if(Array.isArray(e))return e.map(Re);if(typeof e!="object")return e;const t={};for(const s of Object.keys(e).sort())t[s]=Re(e[s]);return t}function G(e){const{seq:t,...s}=e;return{id:js(e),...s}}const xs=4247762216,Cs=407710288,Ds=407710303;function Fs(e){const t=[];for(let o=0;o+4<=e.length;o++){const r=e.readUInt32LE(o);(r===xs||r>=Cs&&r<=Ds)&&t.push(o)}if(t.length===0)return Buffer.alloc(0);const s=[];let n=0;for(;n<t.length;){let o=n+1,r=null;for(;;){const a=o<t.length?t[o]:e.length;try{r=hs.zstdDecompressSync(e.subarray(t[n],a));break}catch{if(o>=t.length)break;o++}}r?(s.push(r),n=o):n++}return Buffer.concat(s)}function Xe(){return process.env.DSH_HOME||M(te(),".dsh")}function Z(){return Tt().replace(/\.local$/i,"")}function se(){const e=Z();return{id:`host:${e}`,name:e.toUpperCase(),kind:"laptop",firstSeenAt:0}}const at=new Map;async function Rt(){const e=M(Xe(),"sessions");if(!C(e))return[];const t=[];for(const s of await L(e)){const n=M(e,s);let o;try{o=await L(n)}catch{continue}for(const r of o){const a=M(n,r,"session.jsonl.zstd");C(a)&&t.push({path:a,workspace:s,sessionId:r})}}return t}const Ls=10*6e4;async function Us(e,t){const s=await ee(e.path),n=at.get(e.path);if(n&&n.mtimeMs===s.mtimeMs&&n.size===s.size)return n.envelopes;const o=await K(e.path),r=Fs(o).toString("utf8"),a=Ms(r),i=Date.now()-s.mtimeMs>Ls,p=Ns(a,{machine:t,host:Z(),instance:Xe(),observedAt:Date.now(),closeOpenTurns:i}).map(G);return at.set(e.path,{mtimeMs:s.mtimeMs,size:s.size,envelopes:p}),p}async function Ps(e,t){const s=se(),n=await Rt(),o=[];for(const r of n){let a;try{a=await ee(r.path)}catch{continue}if(!(a.mtimeMs<e))for(const i of await Us(r,s))i.occurredAt>=e&&i.occurredAt<=t&&o.push(i)}return o}async function Bs(){const e=await Rt(),t=Xe();return{available:e.length>0,present:C(t),home:t,sessions:e.length}}function pe(e){const t=e.split("/").filter(Boolean);return t[t.length-1]??e}const Ue="0x2f",z=e=>{if(typeof e!="string")return;const t=Date.parse(e);return Number.isFinite(t)?t:void 0},$t=(e,t)=>`2f:${e}#${t}`,Hs=(e,t,s)=>`${$t(e,t)}:run:${s}`;function ct(e){return e?.type==="permission"?"approval":"input"}function Ws(e){const t=new Map;for(const s of e){const n=typeof s.run=="number"?s.run:1,o=t.get(n);o?o.push(s):t.set(n,[s])}return t}function qs(e,t){const s=t.find(r=>r.type==="run.started");let n;for(let r=t.length-1;r>=0;r--){const a=t[r];if(a.type==="run.completed"||a.type==="run.failed"||a.type==="needs_user"&&a.blockedOn){n=a;break}}let o;return n?.type==="run.completed"?o="ready":n?.type==="run.failed"?o="failed":n?o="needs_you":e.status==="needs_you"||e.status==="ready"||e.status==="failed"?o=e.status:e.status==="working"?o="working":o=e.error?"failed":"ready",{run:1,provider:e.execution?.provider??null,node:e.execution?.node??null,model:e.execution?.model,externalSessionId:e.execution?.externalSessionId,attempts:e.execution?.attempts??1,startedAt:s?.at,completedAt:n?.at,outcome:o,error:e.error??(n?.type==="run.failed"?n.error:void 0),blockedOn:n?.type==="needs_user"?n.blockedOn:void 0,failure:e.failure}}function Xs(e,t){return Array.isArray(e.runs)&&e.runs.length?e.runs:[qs(e,t)]}function Vs(e,t,s){if(typeof e.id!="number")return[];const n=$t(s.base,e.id),o=Xs(e,t),r=pe(s.base).toUpperCase(),a=e.title,i=e.execution?.provider??o.at(-1)?.provider??Ue,u=z(e.createdAt)??o.map(m=>z(m.startedAt)).find(m=>m!==void 0);if(u===void 0)return[];const c={source:{id:Ue,instance:s.base},observedAt:s.observedAt,clock:"wall",basis:"measured",stratum:"stored-semantics"},f=[{...c,occurredAt:u,kind:"began",subject:{type:"session",id:n},core:{machineId:s.machine.id,label:a,executor:i,model:e.execution?.model},attrs:{context:s.base,"0x2f.taskId":e.id,"0x2f.status":e.status}}],E=Ws(t),g=t.filter(m=>m.type==="task.answered"),y=t.find(m=>m.type==="task.closed"),d=o.at(-1);for(let m=0;m<o.length;m++){const h=o[m],l=z(h.startedAt);if(l===void 0)continue;const b=Hs(s.base,e.id,h.run),A=h.provider??i,v=z(h.completedAt),S=v??s.now,R=[{ns:"fs.cwd",parts:[s.host,s.base],validFrom:l,validTo:S}];typeof h.externalSessionId=="string"&&h.externalSessionId&&R.push({ns:"agent.session",parts:[A,h.externalSessionId],validFrom:l,validTo:S}),h===d&&typeof e.pid=="number"&&R.push({ns:"os.process",parts:[s.host,e.pid],validFrom:l,validTo:S}),f.push({...c,occurredAt:l,seq:`run:${h.run}`,kind:"began",subject:{type:"execution",id:b},claims:R,core:{machineId:s.machine.id,sessionId:n,label:a?`${r} · ${a} · RUN ${h.run}`:`${r} · RUN ${h.run}`,executor:A,model:h.model??e.execution?.model,depth:0},attrs:{"0x2f.run":h.run,"0x2f.provider":A,"0x2f.workspace":s.base,...h.requestedProvider?{"0x2f.requestedProvider":h.requestedProvider}:{},...e.pid!==void 0&&h===d?{"0x2f.workerPid":e.pid}:{}}});let I=!1,$=0;for(const k of E.get(h.run)??[]){$++;const T=z(k.at);if(T===void 0||T<l)continue;const _=`run:${h.run}:${$}`;if(k.type==="tool.started")f.push({...c,occurredAt:T,seq:_,kind:"progressed",subject:{type:"execution",id:b},core:{measures:{[O.interactions]:1}},attrs:{"0x2f.tool":k.name}});else if(k.type==="progress")f.push({...c,occurredAt:T,seq:_,kind:"progressed",subject:{type:"execution",id:b}});else if(k.type==="needs_user"&&k.blockedOn){if(I)continue;I=!0,f.push({...c,occurredAt:T,seq:_,kind:"blocked",subject:{type:"execution",id:b},core:{blockedOn:ct(k.blockedOn)},attrs:{"0x2f.blockedOn":k.blockedOn.type}})}else if(k.type==="permission.resolved"||k.type==="task.updated"&&typeof k.grant=="string"){if(!I)continue;I=!1,f.push({...c,occurredAt:T,seq:_,kind:"resumed",subject:{type:"execution",id:b},attrs:{"0x2f.grant":k.grant}})}}const w=(k,T,_)=>f.push({...c,occurredAt:k,seq:_,kind:"ended",subject:{type:"execution",id:b},core:T});if(h.outcome==="ready"&&v!==void 0)w(v,{outcome:"completed"},`run:${h.run}:end`);else if(h.outcome==="failed"&&v!==void 0)w(v,{outcome:"error",failureCode:(h.failure?.kind??e.failure?.kind??"unclassified").toUpperCase(),failureMessage:h.error??e.error??"Run failed"},`run:${h.run}:end`);else if(h.outcome==="needs_you"&&v!==void 0){I||(I=!0,f.push({...c,occurredAt:v,seq:`run:${h.run}:block`,kind:"blocked",subject:{type:"execution",id:b},core:{blockedOn:ct(h.blockedOn)}}));const k=Gs(v,g,o[m+1],y);k!==void 0&&w(k,{outcome:"interrupted"},`run:${h.run}:end`)}}if(y){const m=z(y.at);m!==void 0&&f.push({...c,occurredAt:m,seq:"task:closed",kind:"ended",subject:{type:"session",id:n}})}return f}function Gs(e,t,s,n){const o=[...t.map(a=>z(a.at)),z(s?.startedAt),z(n?.at)];let r;for(const a of o)a===void 0||a<e||(r===void 0||a<r)&&(r=a);return r}function zs(e){const t=[];for(const s of e.split(`
3
+ `))if(s.trim())try{const n=JSON.parse(s);n&&typeof n.type=="string"&&t.push(n)}catch{}return t}const Ot=".work";function Nt(){const e=process.env.WORK_ROOTS;return e?e.split(/[:,]/).map(t=>t.trim()).filter(Boolean):[te()]}const ut=e=>C(M(e,Ot,"tasks"));async function Mt(){const e=new Set;for(const t of Nt()){if(ut(t)){e.add(t);continue}let s;try{s=await L(t,{withFileTypes:!0})}catch{continue}for(const n of s){if(!n.isDirectory()||n.name.startsWith("."))continue;const o=M(t,n.name);ut(o)&&e.add(o)}}return[...e].sort()}async function Js(){const e=[];for(const t of await Mt()){const s=M(t,Ot,"tasks");let n;try{n=await L(s,{withFileTypes:!0})}catch{continue}for(const o of n){if(!o.isDirectory())continue;const r=M(s,o.name,"task.json");C(r)&&e.push({base:t,slug:o.name,taskPath:r,eventsPath:M(s,o.name,"events.jsonl")})}}return e}const dt=new Map;async function Ys(e,t,s){let n;try{n=await ee(e.taskPath)}catch{return null}const o=await ee(e.eventsPath).catch(()=>null),r=Math.max(n.mtimeMs,o?.mtimeMs??0),a=`${n.mtimeMs}:${n.size}:${o?.mtimeMs??0}:${o?.size??0}`,i=dt.get(e.taskPath);if(i&&i.stamp===a)return{envelopes:i.envelopes,touchedAt:r};let u;try{u=JSON.parse(await K(e.taskPath,"utf8"))}catch{return null}let p=[];try{p=zs(await K(e.eventsPath,"utf8"))}catch{}const c=Vs(u,p,{machine:t,base:e.base,host:Z(),observedAt:Date.now(),now:s}).map(G);return dt.set(e.taskPath,{stamp:a,envelopes:c}),{envelopes:c,touchedAt:r}}async function Ks(e,t){const s=se(),n=await Js(),o=[];for(const r of n){const a=await Ys(r,s,t);if(a&&!(a.touchedAt<e))for(const i of a.envelopes)i.occurredAt>=e&&i.occurredAt<=t&&o.push(i)}return o}async function Qs(){const e=Nt(),t=await Mt();return{available:t.length>0,present:e.some(s=>C(s)),roots:e,workspaces:t}}const le="claude-code",jt="claude-code";class Y extends Error{constructor(t,s,n){super(t),this.path=s,this.sourceVersion=n,this.name="ClaudeFormatError"}path;sourceVersion}const xt=e=>`claude:${e}`;function Zs(e,t){const s=e,n=typeof s?.version=="string"?s.version:void 0;if(!s||typeof s!="object")throw new Y("registry entry is not an object",t,n);if(typeof s.sessionId!="string"||!s.sessionId)throw new Y("registry entry has no sessionId",t,n);if(typeof s.pid!="number"||!Number.isFinite(s.pid))throw new Y("registry entry has no numeric pid",t,n);if(typeof s.startedAt!="number"||!Number.isFinite(s.startedAt))throw new Y("registry entry has no numeric startedAt",t,n);return s}function en(e,t,s){const n=[{ns:"agent.session",parts:[jt,e.sessionId],validFrom:e.startedAt,validTo:s.now},{ns:"os.process",parts:[s.host,e.pid],validFrom:e.startedAt,validTo:s.now}];return{source:{id:le,instance:s.host},occurredAt:e.startedAt,observedAt:s.observedAt,clock:"wall",stratum:"identity",kind:"began",subject:{type:"session",id:xt(e.sessionId)},claims:n,basis:"measured",core:{machineId:s.machine.id,label:e.name??pe(e.cwd??"").toUpperCase(),executor:le},attrs:{context:e.cwd,"claude.sessionId":e.sessionId,"claude.pid":e.pid,"claude.procStart":e.procStart,"claude.version":e.version,"claude.kind":e.kind,"claude.entrypoint":e.entrypoint,"claude.status":e.status,"claude.waitingFor":e.waitingFor},provenance:{path:t,recordId:e.sessionId,sourceVersion:e.version},seq:"registry"}}const J=e=>typeof e=="number"&&Number.isFinite(e)?e:0,re=e=>{if(typeof e!="string")return;const t=Date.parse(e);return Number.isFinite(t)?t:void 0};function tn(e){const t=[];for(const s of e.split(`
4
+ `))if(s.trim())try{const n=JSON.parse(s);n&&typeof n=="object"&&t.push(n)}catch{}return t}function sn(e){if(!e)return{};const t=e.output_tokens_details;return{[O.tokensInput]:J(e.input_tokens)+J(e.cache_creation_input_tokens),[O.tokensOutput]:J(e.output_tokens),[O.tokensCacheRead]:J(e.cache_read_input_tokens),[O.tokensReasoning]:J(t?.thinking_tokens),[O.steps]:1}}function nn(e,t){const s=e.filter(l=>re(l.timestamp)!==void 0);if(s.length===0)throw new Y("transcript has no timestamped records",t.path);const n=e.find(l=>typeof l.sessionId=="string")?.sessionId;if(n&&n!==t.sessionId)throw new Y(`transcript names session ${n} but is filed under ${t.sessionId}`,t.path);const o=e.find(l=>typeof l.version=="string")?.version,r=e.find(l=>typeof l.cwd=="string")?.cwd??"",a=e.find(l=>typeof l.gitBranch=="string")?.gitBranch,i=e.find(l=>typeof l.entrypoint=="string")?.entrypoint,u=pe(r).toUpperCase(),p=t.sessionId,c=xt(p),f=re(s[0].timestamp),E=re(s[s.length-1].timestamp),y={source:{id:le,instance:t.host},observedAt:t.observedAt,clock:"wall",basis:"measured",stratum:"stored-semantics"},d=(l,b)=>({path:t.path,...l?{recordId:l}:{},...b!==void 0?{index:b}:{},...o?{sourceVersion:o}:{}}),m=[{...y,occurredAt:f,kind:"began",subject:{type:"session",id:c},claims:[{ns:"agent.session",parts:[jt,p],validFrom:f,validTo:E}],core:{machineId:t.machine.id,label:u,executor:le},attrs:{context:r,"claude.sessionId":p,"claude.gitBranch":a,"claude.entrypoint":i,"claude.version":o},provenance:d(p),seq:"session"}],h=[];for(let l=0;l<e.length;l++){const b=e[l];b.type==="user"&&typeof b.promptSource=="string"&&re(b.timestamp)!==void 0&&h.push(l)}if(h.length===0)throw new Y(`transcript has ${e.length} records but no prompt-bearing user record (expected \`type:"user"\` with \`promptSource\`)`,t.path,o);for(let l=0;l<h.length;l++){const b=h[l],A=l+1<h.length?h[l+1]:e.length,v=l+1,S=`${c}:turn:${v}`,R=re(e[b].timestamp),I=e.slice(b,A).some(T=>T.isSidechain===!0);let $,w=R;const k=[];for(let T=b;T<A;T++){const _=e[T],P=re(_.timestamp);if(P===void 0)continue;if((_.type==="assistant"||_.type==="user"&&Array.isArray(_.message?.content))&&P>w&&(w=P),_.type==="assistant"&&_.message){$??=_.message.model;const U=(Array.isArray(_.message.content)?_.message.content:[]).filter(N=>!!N&&typeof N=="object"&&N.type==="tool_use"),x={...sn(_.message.usage)};U.length&&(x[O.interactions]=U.length),k.push({...y,occurredAt:P,kind:"progressed",subject:{type:"execution",id:S},core:{measures:x},attrs:{...U.length?{"claude.tools":U.map(N=>N.name??"unknown")}:{},..._.message.model?{"claude.model":_.message.model}:{},..._.requestId?{"claude.requestId":_.requestId}:{},..._.message.stop_reason?{"claude.stopReason":_.message.stop_reason}:{},..._.message.usage?{"claude.usage.inputTokens":J(_.message.usage.input_tokens),"claude.usage.outputTokens":J(_.message.usage.output_tokens),"claude.usage.cacheReadTokens":J(_.message.usage.cache_read_input_tokens),"claude.usage.cacheCreationTokens":J(_.message.usage.cache_creation_input_tokens),"claude.usage.serviceTier":_.message.usage.service_tier}:{}},provenance:d(_.uuid,T),seq:_.uuid??`a${T}`})}else if(_.type==="user"&&_.message&&Array.isArray(_.message.content)){const q=_.message.content.filter(U=>!!U&&typeof U=="object"&&U.is_error===!0).length;q&&k.push({...y,occurredAt:P,kind:"progressed",subject:{type:"execution",id:S},core:{measures:{[O.errors]:q}},provenance:d(_.uuid,T),seq:_.uuid??`e${T}`})}}m.push({...y,occurredAt:R,kind:"began",subject:{type:"execution",id:S},core:{machineId:t.machine.id,sessionId:c,label:`${u} · TURN ${v}`,executor:le,model:$,depth:I?1:0},attrs:{"claude.turn":v,"claude.promptSource":e[b].promptSource,"claude.promptId":e[b].promptId,...I?{"claude.isSidechain":!0}:{}},provenance:d(e[b].uuid,b),seq:`turn:${v}`}),m.push(...k),m.push({...y,occurredAt:w,kind:"ended",subject:{type:"execution",id:S},core:{outcome:"completed"},provenance:d(e[b].uuid,b),seq:`turn:${v}:end`})}return m}function Ve(){return process.env.CLAUDE_HOME||M(te(),".claude")}const Pe=()=>M(Ve(),"sessions"),on=()=>M(Ve(),"projects"),lt=new Map;async function rn(e,t,s){const n=Pe();if(!C(n))return;s.identityAvailable=!0;let o;try{o=await L(n)}catch(r){s.problems.push({path:n,message:String(r)});return}for(const r of o){if(!r.endsWith(".json"))continue;const a=M(n,r);try{const i=Zs(JSON.parse(await K(a,"utf8")),a);s.envelopes.push(G(en(i,a,{machine:e,host:Z(),observedAt:t,now:t}))),s.registryEntries++}catch(i){s.problems.push({path:a,message:i instanceof Error?i.message:String(i),sourceVersion:i instanceof Y?i.sourceVersion:void 0})}}}async function Ct(){const e=on();if(!C(e))return[];const t=[];let s;try{s=await L(e)}catch{return t}for(const n of s){let o;try{o=await L(M(e,n))}catch{continue}for(const r of o)r.endsWith(".jsonl")&&t.push({path:M(e,n,r),sessionId:r.slice(0,-6),project:n})}return t}async function an(e,t,s,n){const o=await Ct();if(o.length!==0){n.storedAvailable=!0;for(const r of o){let a;try{a=await ee(r.path)}catch{continue}if(a.mtimeMs<t)continue;const i=`${a.mtimeMs}:${a.size}`,u=lt.get(r.path);let p;if(u&&u.stamp===i)p=u.envelopes;else try{const c=tn(await K(r.path,"utf8"));p=nn(c,{machine:e,host:Z(),observedAt:Date.now(),path:r.path,sessionId:r.sessionId}).map(G),lt.set(r.path,{stamp:i,envelopes:p})}catch(c){n.transcriptsFailed++,n.problems.push({path:r.path,message:c instanceof Error?c.message:String(c),sourceVersion:c instanceof Y?c.sourceVersion:void 0});continue}n.transcriptsRead++;for(const c of p)c.occurredAt>=t&&c.occurredAt<=s&&n.envelopes.push(c)}}}async function Dt(e,t){const s=se(),n=Date.now(),o={envelopes:[],registryEntries:0,transcriptsRead:0,transcriptsFailed:0,problems:[],identityAvailable:!1,storedAvailable:!1};return await rn(s,n,o),await an(s,e,t,o),o}async function cn(e,t){return(await Dt(e,t)).envelopes}async function un(){const e=Ve(),t=C(Pe())?(await L(Pe()).catch(()=>[])).filter(n=>n.endsWith(".json")).length:0,s=(await Ct()).length;return{available:t>0||s>0,present:C(e),home:e,registry:t,transcripts:s}}const ke="codex",dn="codex",ln=10*6e4;class ce extends Error{constructor(t,s,n){super(t),this.path=s,this.sourceVersion=n,this.name="CodexFormatError"}path;sourceVersion}const pn=e=>`codex:${e}`,X=e=>typeof e=="number"&&Number.isFinite(e)?e:0,j=e=>typeof e=="string"&&e?e:void 0,xe=e=>{if(typeof e!="string")return;const t=Date.parse(e);return Number.isFinite(t)?t:void 0};function fn(e){const t=[];for(const s of e.split(`
5
+ `))if(s.trim())try{const n=JSON.parse(s);n&&typeof n=="object"&&t.push(n)}catch{}return t}function mn(e){const t=X(e.input_tokens),s=X(e.cached_input_tokens);return{[O.tokensInput]:Math.max(0,t-s),[O.tokensOutput]:X(e.output_tokens),[O.tokensCacheRead]:s,[O.tokensReasoning]:X(e.reasoning_output_tokens),[O.steps]:1}}function hn(e,t){const s=e.find(l=>l.type==="session_meta");if(!s||!s.payload)throw new ce("rollout has no session_meta record",t.path);const n=s.payload,o=j(n.cli_version),r=j(n.session_id)??j(n.id);if(r&&r!==t.sessionId)throw new ce(`rollout names session ${r} but is filed under ${t.sessionId}`,t.path,o);const a=j(n.cwd)??"",i=xe(n.timestamp)??xe(s.timestamp);if(i===void 0)throw new ce("session_meta has no parseable timestamp",t.path,o);const u=pe(a).toUpperCase(),p=pn(t.sessionId),f={source:{id:ke,instance:t.host},observedAt:t.observedAt,clock:"wall",basis:"measured",stratum:"stored-semantics"},E=(l,b)=>({path:t.path,...l?{recordId:l}:{},...b!==void 0?{index:b}:{},...o?{sourceVersion:o}:{}}),g=[];let y=null,d=i,m=0;for(let l=0;l<e.length;l++){const b=e[l],A=xe(b.timestamp);A!==void 0&&A>d&&(d=A);const v=b.payload;if(!v)continue;if(b.type==="turn_context"){y&&j(v.turn_id)===y.turnId&&(y.model??=j(v.model),y.effort??=j(v.effort));continue}if(b.type!=="event_msg")continue;const S=j(v.type);if(S==="task_started"){const I=j(v.turn_id);if(!I||A===void 0)throw new ce(`task_started at ordinal ${b.ordinal} is missing turn_id or timestamp`,t.path,o);y={turnId:I,startedAt:A,interior:[],lastAt:A},g.push(y);continue}if(S==="task_complete"){const I=j(v.turn_id),$=g.find(w=>w.turnId===I)??y;if($&&A!==void 0){$.completedAt=A;const w=v.error;$.outcome=w?"error":"completed",$.failureMessage=w?j(w.message):void 0,$.lastAt=Math.max($.lastAt,A)}$===y&&(y=null);continue}if(S==="token_count"||S==="item_completed"){if(!y){m++;continue}if(A===void 0)continue}else continue;const R=`${p}:turn:${y.turnId}`;if(S==="token_count"){const $=v.info?.last_token_usage;if(!$)continue;y.lastAt=Math.max(y.lastAt,A),y.interior.push({...f,occurredAt:A,kind:"progressed",subject:{type:"execution",id:R},core:{measures:mn($)},attrs:{"codex.usage.inputTokens":X($.input_tokens),"codex.usage.cachedInputTokens":X($.cached_input_tokens),"codex.usage.cacheWriteInputTokens":X($.cache_write_input_tokens),"codex.usage.outputTokens":X($.output_tokens),"codex.usage.reasoningOutputTokens":X($.reasoning_output_tokens)},provenance:E(void 0,b.ordinal),seq:`o${b.ordinal??l}`});continue}if(S==="item_completed"){const I=v.item,$=j(I?.type);if(!I||!$)continue;y.lastAt=Math.max(y.lastAt,A);let w,k;if($==="CommandExecution"){const T=X(I.exit_code);w={[O.interactions]:1,...T!==0?{[O.errors]:1}:{}},k={"codex.itemType":$,"codex.exitCode":T,...I.process_id!==void 0?{"codex.processId":I.process_id}:{},...j(I.status)?{"codex.status":I.status}:{}}}else if($==="McpToolCall"){const T=j(I.status)==="failed"||j(I.status)==="error";w={[O.interactions]:1,...T?{[O.errors]:1}:{}},k={"codex.itemType":$,"codex.tool":[j(I.server),j(I.tool)].filter(Boolean).join("."),...j(I.status)?{"codex.status":I.status}:{}}}else if($==="WebSearch")w={[O.interactions]:1},k={"codex.itemType":$};else if($==="FileChange"){const T=I.changes;w={[O.interactions]:1},k={"codex.itemType":$,...T&&typeof T=="object"?{"codex.fileChanges":Object.entries(T).map(([_,P])=>({path:_,kind:j(P?.type)}))}:{}}}else continue;y.interior.push({...f,occurredAt:A,kind:"progressed",subject:{type:"execution",id:R},core:{measures:w},attrs:k,provenance:E(j(I.id),b.ordinal),seq:`o${b.ordinal??l}`})}}if(g.length===0&&m>0)throw new ce(`rollout has ${m} work records but no task_started marker`,t.path,o);const h=[{...f,occurredAt:i,kind:"began",subject:{type:"session",id:p},claims:[{ns:"agent.session",parts:[dn,t.sessionId],validFrom:i,validTo:d}],core:{machineId:t.machine.id,label:u,executor:ke},attrs:{context:a,"codex.sessionId":t.sessionId,"codex.cliVersion":o,"codex.originator":j(n.originator),"codex.source":j(n.source),"codex.modelProvider":j(n.model_provider),...bn(n.git)},provenance:E(t.sessionId,s.ordinal),seq:"session"}];for(let l=0;l<g.length;l++){const b=g[l],A=`${p}:turn:${b.turnId}`;h.push({...f,occurredAt:b.startedAt,kind:"began",subject:{type:"execution",id:A},core:{machineId:t.machine.id,sessionId:p,label:`${u} · TURN ${l+1}`,executor:ke,model:b.model,depth:0},attrs:{"codex.turnId":b.turnId,...b.effort?{"codex.effort":b.effort}:{}},provenance:E(b.turnId),seq:`turn:${b.turnId}`}),h.push(...b.interior),b.completedAt!==void 0?h.push({...f,occurredAt:b.completedAt,kind:"ended",subject:{type:"execution",id:A},core:{outcome:b.outcome??"completed",...b.outcome==="error"?{failureCode:"CODEX_TURN_ERROR",failureMessage:b.failureMessage??"turn failed"}:{}},provenance:E(b.turnId),seq:`turn:${b.turnId}:end`}):t.now-d>ln&&h.push({...f,basis:"inferred",assumption:"A rollout untouched for 10 minutes belongs to a dead process, so a turn left open in it was interrupted, not still running. Its end is the last instant the rollout moved.",occurredAt:b.lastAt,kind:"ended",subject:{type:"execution",id:A},core:{outcome:"interrupted"},provenance:E(b.turnId),seq:`turn:${b.turnId}:end`})}return h}function bn(e){if(!e||typeof e!="object")return{};const t=e;return{...j(t.branch)?{"codex.gitBranch":t.branch}:{},...j(t.commit_hash)?{"codex.gitCommit":t.commit_hash}:{},...j(t.repository_url)?{"codex.gitOriginUrl":t.repository_url}:{}}}function Ft(){return process.env.CODEX_HOME||M(te(),".codex")}const Lt=()=>M(Ft(),"sessions"),gn=/^rollout-.*-([0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12})\.jsonl$/,pt=new Map;async function Ut(){const e=Lt();if(!C(e))return[];const t=[];let s;try{s=await L(e)}catch{return t}for(const n of s){let o;try{o=await L(M(e,n))}catch{continue}for(const r of o){let a;try{a=await L(M(e,n,r))}catch{continue}for(const i of a){let u;try{u=await L(M(e,n,r,i))}catch{continue}for(const p of u){const c=gn.exec(p);c&&t.push({path:M(e,n,r,i,p),sessionId:c[1]})}}}}return t}async function Pt(e,t){const s=se(),n=Date.now(),o={envelopes:[],rolloutsRead:0,rolloutsFailed:0,problems:[],storedAvailable:!1},r=await Ut();if(r.length===0)return o.storedAvailable=C(Lt()),o;o.storedAvailable=!0;for(const a of r){let i;try{i=await ee(a.path)}catch{continue}if(i.mtimeMs<e)continue;const u=`${i.mtimeMs}:${i.size}`,p=pt.get(a.path);let c;if(p&&p.stamp===u)c=p.envelopes;else try{const f=fn(await K(a.path,"utf8"));c=hn(f,{machine:s,host:Z(),observedAt:n,path:a.path,sessionId:a.sessionId,now:n}).map(G),pt.set(a.path,{stamp:u,envelopes:c})}catch(f){o.rolloutsFailed++,o.problems.push({path:a.path,message:f instanceof Error?f.message:String(f),sourceVersion:f instanceof ce?f.sourceVersion:void 0});continue}o.rolloutsRead++;for(const f of c)f.occurredAt>=e&&f.occurredAt<=t&&o.envelopes.push(f)}return o}async function yn(e,t){return(await Pt(e,t)).envelopes}async function vn(){const e=Ft(),t=(await Ut()).length;return{available:t>0,present:C(e),home:e,rollouts:t}}const ge="cursor",wn="cursor";class Se extends Error{constructor(t,s,n){super(t),this.path=s,this.sourceVersion=n,this.name="CursorFormatError"}path;sourceVersion}const Be=e=>`cursor:${e}`,ue=e=>typeof e=="string"&&e?e:void 0,we=e=>typeof e=="number"&&Number.isFinite(e)?e:void 0,ft=e=>{if(typeof e!="string")return;const t=Date.parse(e);return Number.isFinite(t)?t:void 0};function Bt(e,t){if(typeof e.composerId!="string"||!e.composerId)throw new Se("composer header has no composerId",t);if(typeof e.createdAt!="number"||!Number.isFinite(e.createdAt))throw new Se("composer header has no numeric createdAt",t);if(typeof e.lastUpdatedAt!="number"||!Number.isFinite(e.lastUpdatedAt))throw new Se("composer header has no numeric lastUpdatedAt",t)}function An(e,t){Bt(e,t.path);const s=e.value??{},n=s.subagentInfo,o=n?ue(n.parentComposerId):void 0,r=t.workspacePath??"",a=ue(s.name)?.toUpperCase()??(r?pe(r).toUpperCase():"CURSOR");return{source:{id:ge,instance:t.host},occurredAt:e.createdAt,observedAt:t.observedAt,clock:"wall",stratum:"stored-semantics",kind:"began",subject:{type:"session",id:Be(e.composerId)},claims:[{ns:"agent.session",parts:[wn,e.composerId],validFrom:e.createdAt,validTo:e.lastUpdatedAt}],basis:"measured",core:{machineId:t.machine.id,label:a,executor:ge,...o?{parentId:Be(o)}:{}},attrs:{context:r,"cursor.composerId":e.composerId,"cursor.workspaceId":e.workspaceId,"cursor.isSubagent":e.isSubagent,...n?{"cursor.parentComposerId":ue(n.parentComposerId),"cursor.subagentType":ue(n.subagentTypeName)}:{},...we(s.totalLinesAdded)!==void 0?{"cursor.linesAdded":s.totalLinesAdded}:{},...we(s.totalLinesRemoved)!==void 0?{"cursor.linesRemoved":s.totalLinesRemoved}:{},...we(s.filesChangedCount)!==void 0?{"cursor.filesChanged":s.filesChangedCount}:{},...ue(s.unifiedMode)?{"cursor.mode":s.unifiedMode}:{},...we(s._v)!==void 0?{"cursor.schemaVersion":s._v}:{}},provenance:{path:t.path,recordId:e.composerId},seq:"composer"}}const mt="Cursor persists no turn timing: the bounds are the first and last timestamped records inside the turn, untimestamped activity may extend beyond them, and the turn is taken as completed because Cursor records no turn outcome.";function En(e,t,s){Bt(e,s.path);const n=Be(e.composerId),r={source:{id:ge,instance:s.host},observedAt:s.observedAt,clock:"wall",stratum:"stored-semantics"},a=c=>({path:s.path,...c?{recordId:c}:{}}),i=[];for(let c=0;c<t.length;c++)t[c].type===1&&i.push(c);const u=[];let p=0;for(let c=0;c<i.length;c++){const f=i[c],E=c+1<i.length?i[c+1]:t.length,g=c+1,y=t.slice(f,E),d=y.map(v=>({bubble:v,at:ft(v.createdAt)})).filter(v=>v.at!==void 0);if(d.length<2){p++;continue}const m=Math.min(...d.map(v=>v.at)),h=Math.max(...d.map(v=>v.at)),l=`${n}:turn:${g}`,b=y.filter(v=>v.toolName&&ft(v.createdAt)===void 0),A=b.filter(v=>v.toolStatus==="error").length;u.push({...r,occurredAt:m,kind:"began",subject:{type:"execution",id:l},basis:"inferred",assumption:mt,core:{machineId:s.machine.id,sessionId:n,label:`${ue(e.value?.name)?.toUpperCase()??"CURSOR"} · TURN ${g}`,executor:ge,depth:e.isSubagent?1:0,...b.length?{measures:{[O.interactions]:b.length,...A?{[O.errors]:A}:{}}}:{}},attrs:{"cursor.turn":g},provenance:a(t[f].bubbleId),seq:`turn:${g}`});for(const{bubble:v,at:S}of d){if(!v.toolName)continue;const R=v.toolStatus==="error",I={[O.interactions]:1,...R?{[O.errors]:1}:{}};u.push({...r,occurredAt:S,kind:"progressed",subject:{type:"execution",id:l},basis:"measured",core:{measures:I},attrs:{"cursor.tool":v.toolName,...v.toolStatus?{"cursor.toolStatus":v.toolStatus}:{}},provenance:a(v.bubbleId),seq:v.bubbleId})}u.push({...r,occurredAt:h,kind:"ended",subject:{type:"execution",id:l},basis:"inferred",assumption:mt,core:{outcome:"completed"},provenance:a(t[f].bubbleId),seq:`turn:${g}:end`})}return{drafts:u,turns:i.length,untimedTurns:p}}function he(){return process.env.CURSOR_GLOBAL_STORAGE||M(te(),"Library","Application Support","Cursor","User","globalStorage")}function kn(){return process.env.CURSOR_WORKSPACE_STORAGE||M(he(),"..","workspaceStorage")}const Ht=()=>M(he(),"state.vscdb"),ht=new Map;async function Sn(){const e=new Map,t=kn();if(!C(t))return e;let s;try{s=await L(t)}catch{return e}for(const n of s)try{const o=JSON.parse(await K(M(t,n,"workspace.json"),"utf8"));typeof o.folder=="string"&&o.folder.startsWith("file://")&&e.set(n,decodeURIComponent(o.folder.slice(7)))}catch{continue}return e}function In(e,t){let s;if(e.value)try{s=JSON.parse(e.value)}catch{s=void 0}const n=a=>typeof a=="number"&&Number.isFinite(a)?a:void 0,o=e.lastUpdatedAt??n(s?.lastUpdatedAt)??n(s?.conversationCheckpointLastUpdatedAt)??e.createdAt??NaN,r={composerId:e.composerId,workspaceId:e.workspaceId??void 0,createdAt:e.createdAt??NaN,lastUpdatedAt:o,isSubagent:e.isSubagent===1,value:s};if(!Number.isFinite(r.createdAt)||!Number.isFinite(r.lastUpdatedAt))throw new Se(`composer ${e.composerId} has no numeric createdAt/lastUpdatedAt`,t);return r}function Tn(e,t){const s=e.prepare("SELECT value FROM cursorDiskKV WHERE key = ?").get(`composerData:${t}`);if(!s?.value)return[];const n=typeof s.value=="string"?s.value:Buffer.from(s.value).toString("utf8"),r=JSON.parse(n).fullConversationHeadersOnly??[],a=e.prepare("SELECT key, value FROM cursorDiskKV WHERE key >= ? AND key < ?").all(`bubbleId:${t}:`,`bubbleId:${t};`),i=new Map;for(const u of a){const p=u.key.slice(`bubbleId:${t}:`.length);try{const c=typeof u.value=="string"?u.value:Buffer.from(u.value).toString("utf8"),f=JSON.parse(c);i.set(p,{bubbleId:p,type:f.type,createdAt:typeof f.createdAt=="string"&&f.createdAt?f.createdAt:void 0,toolName:f.toolFormerData?.name,toolStatus:f.toolFormerData?.status})}catch{continue}}return r.filter(u=>typeof u.bubbleId=="string").map(u=>i.get(u.bubbleId)??{bubbleId:u.bubbleId,type:u.type})}async function Wt(e,t){const s=se(),n=Date.now(),o=Ht(),r={envelopes:[],composersRead:0,composersFailed:0,problems:[],storedAvailable:!1};if(!C(o))return r;r.storedAvailable=!0;const a=await Sn();let i;try{i=new qe(o,{readOnly:!0})}catch(u){return r.problems.push({path:o,message:`cannot open read-only: ${String(u)}`}),r}try{let u;try{u=i.prepare("SELECT composerId, workspaceId, createdAt, lastUpdatedAt, isSubagent, value FROM composerHeaders WHERE (lastUpdatedAt >= ? OR lastUpdatedAt IS NULL) AND createdAt <= ?").all(e,t)}catch(p){return r.problems.push({path:o,message:`composerHeaders unreadable: ${String(p)}`}),r}for(const p of u)try{const c=In(p,o);if(c.lastUpdatedAt<e)continue;const f={machine:s,host:Z(),observedAt:n,path:o,workspacePath:c.workspaceId?a.get(c.workspaceId):void 0};r.envelopes.push(G(An(c,f)));const E=`${c.lastUpdatedAt}`,g=ht.get(c.composerId);let y;if(g&&g.stamp===E)y=g.envelopes;else{const d=Tn(i,c.composerId),{drafts:m}=En(c,d,f);y=m.map(G),ht.set(c.composerId,{stamp:E,envelopes:y})}for(const d of y)d.occurredAt>=e&&d.occurredAt<=t&&r.envelopes.push(d);r.composersRead++}catch(c){r.composersFailed++,r.problems.push({path:o,message:`${p.composerId}: ${c instanceof Error?c.message:String(c)}`})}}finally{i.close()}return r}async function _n(e,t){return(await Wt(e,t)).envelopes}async function Rn(){const e=Ht();if(!C(e))return{available:!1,present:!1,globalStorage:he()};try{const t=new qe(e,{readOnly:!0});try{const s=t.prepare("SELECT count(*) AS n FROM composerHeaders").get();return{available:s.n>0,present:!0,globalStorage:he(),composers:s.n}}finally{t.close()}}catch{return{available:!1,present:!0,globalStorage:he()}}}const Ie="gemini",$n="gemini";class $e extends Error{constructor(t,s){super(t),this.path=s,this.name="GeminiFormatError"}path}const On=e=>`gemini:${e}`,V=e=>typeof e=="number"&&Number.isFinite(e)?e:0,Ae=e=>typeof e=="string"&&e?e:void 0,ie=e=>{if(typeof e!="string")return;const t=Date.parse(e);return Number.isFinite(t)?t:void 0};function Nn(e,t){const s=e.split(`
6
+ `).filter(i=>i.trim());if(s.length===0)throw new $e("session file is empty",t);let n=null;const o=[],r=new Map,a=i=>{const u=i;!u||typeof u!="object"||typeof u.id!="string"||(r.has(u.id)||o.push(u.id),r.set(u.id,u))};for(const i of s){let u;try{u=JSON.parse(i)}catch{continue}if(!u||typeof u!="object")continue;const p=u;if(!n&&typeof p.sessionId=="string"){n=p;continue}const c=p.$set;if(c){const f=c.messages;if(Array.isArray(f))for(const E of f)a(E);continue}typeof p.id=="string"&&a(p)}if(!n||!n.sessionId)throw new $e("session file has no header with a sessionId",t);return{header:n,messages:o.map(i=>r.get(i))}}const qt=e=>Array.isArray(e.content)&&e.content.some(t=>!!t&&typeof t=="object"&&"functionResponse"in t);function Mn(e){if(e.type!=="user"||qt(e))return!1;const t=Array.isArray(e.content)?e.content.map(s=>s?.text).filter(s=>typeof s=="string"):[];return t.length===0?!1:!t[0].startsWith("<session_context>")}function jn(e){const t=V(e.input),s=V(e.cached);return{[O.tokensInput]:Math.max(0,t-s),[O.tokensOutput]:V(e.output)+V(e.thoughts),[O.tokensCacheRead]:s,[O.tokensReasoning]:V(e.thoughts),[O.steps]:1}}function xn(e,t){const{header:s,messages:n}=e,o=s.sessionId,r=ie(s.startTime);if(r===void 0)throw new $e("session header has no parseable startTime",t.path);const a=n.filter(m=>ie(m.timestamp)!==void 0),i=a.length?Math.max(...a.map(m=>ie(m.timestamp))):r,u=t.workspacePath??"",p=u?pe(u).toUpperCase():"GEMINI",c=On(o),E={source:{id:Ie,instance:t.host},observedAt:t.observedAt,clock:"wall",basis:"measured",stratum:"stored-semantics"},g=m=>({path:t.path,...m?{recordId:m}:{}}),y=[{...E,occurredAt:r,kind:"began",subject:{type:"session",id:c},claims:[{ns:"agent.session",parts:[$n,o],validFrom:r,validTo:i}],core:{machineId:t.machine.id,label:p,executor:Ie},attrs:{context:u,"gemini.sessionId":o,"gemini.projectHash":s.projectHash,...Ae(s.kind)?{"gemini.kind":s.kind}:{}},provenance:g(o),seq:"session"}],d=[];for(let m=0;m<n.length;m++)Mn(n[m])&&ie(n[m].timestamp)!==void 0&&d.push(m);if(d.length===0){if(n.some(m=>m.type==="gemini"))throw new $e(`session has ${n.length} messages including model output but no recognisable user prompt`,t.path);return y}for(let m=0;m<d.length;m++){const h=d[m],l=m+1<d.length?d[m+1]:n.length,b=m+1,A=`${c}:turn:${b}`,v=ie(n[h].timestamp);let S=v,R;const I=[];for(let $=h;$<l;$++){const w=n[$],k=ie(w.timestamp);if(k===void 0||w.type!=="gemini"&&!(w.type==="user"&&qt(w))||(k>S&&(S=k),w.type!=="gemini"))continue;R??=Ae(w.model);const T=Array.isArray(w.toolCalls)?w.toolCalls:[],_=w.tokens?jn(w.tokens):{};T.length&&(_[O.interactions]=T.length),Object.keys(_).length!==0&&I.push({...E,occurredAt:k,kind:"progressed",subject:{type:"execution",id:A},core:{measures:_},attrs:{...T.length?{"gemini.tools":T.map(P=>Ae(P.name)??"unknown")}:{},...Ae(w.model)?{"gemini.model":w.model}:{},...w.tokens?{"gemini.usage.input":V(w.tokens.input),"gemini.usage.output":V(w.tokens.output),"gemini.usage.cached":V(w.tokens.cached),"gemini.usage.thoughts":V(w.tokens.thoughts),"gemini.usage.tool":V(w.tokens.tool)}:{}},provenance:g(w.id),seq:w.id})}y.push({...E,occurredAt:v,kind:"began",subject:{type:"execution",id:A},core:{machineId:t.machine.id,sessionId:c,label:`${p} · TURN ${b}`,executor:Ie,model:R,depth:0},attrs:{"gemini.turn":b},provenance:g(n[h].id),seq:`turn:${b}`}),y.push(...I),y.push({...E,occurredAt:S,kind:"ended",subject:{type:"execution",id:A},core:{outcome:"completed"},provenance:g(n[h].id),seq:`turn:${b}:end`})}return y}function Ge(){return process.env.GEMINI_HOME||M(te(),".gemini")}const Xt=()=>M(Ge(),"tmp"),bt=new Map;async function Cn(){const e=new Map;try{const t=JSON.parse(await K(M(Ge(),"projects.json"),"utf8"));for(const[s,n]of Object.entries(t.projects??{}))typeof n=="string"&&e.set(n,s)}catch{}return e}async function Vt(){const e=Xt();if(!C(e))return[];const t=[];let s;try{s=await L(e)}catch{return t}for(const n of s){let o;try{o=await L(M(e,n,"chats"))}catch{continue}for(const r of o)r.startsWith("session-")&&r.endsWith(".jsonl")&&t.push({path:M(e,n,"chats",r),slug:n})}return t}async function Gt(e,t){const s=se(),n=Date.now(),o={envelopes:[],sessionsRead:0,sessionsFailed:0,problems:[],storedAvailable:!1},r=await Vt();if(r.length===0)return o.storedAvailable=C(Xt()),o;o.storedAvailable=!0;const a=await Cn();for(const i of r){let u;try{u=await ee(i.path)}catch{continue}if(u.mtimeMs<e)continue;const p=`${u.mtimeMs}:${u.size}`,c=bt.get(i.path);let f;if(c&&c.stamp===p)f=c.envelopes;else try{const E=Nn(await K(i.path,"utf8"),i.path);f=xn(E,{machine:s,host:Z(),observedAt:n,path:i.path,workspacePath:a.get(i.slug)}).map(G),bt.set(i.path,{stamp:p,envelopes:f})}catch(E){o.sessionsFailed++,o.problems.push({path:i.path,message:E instanceof Error?E.message:String(E)});continue}o.sessionsRead++;for(const E of f)E.occurredAt>=e&&E.occurredAt<=t&&o.envelopes.push(E)}return o}async function Dn(e,t){return(await Gt(e,t)).envelopes}async function Fn(){const e=Ge(),t=(await Vt()).length;return{available:t>0,present:C(e),home:e,sessions:t}}function Oe(e,t){for(const[s,n]of Object.entries(t)){if(typeof n!="number"||!Number.isFinite(n))continue;const o=s;e[o]=(e[o]??0)+n}}const Ln=new Set(["running","waiting"]);function Un(e){return Ln.has(e)}function Pn(e,t){return{now:e,dayStart:e,dayEnd:t,machines:new Map,sources:new Map,sessions:new Map,executions:new Map,processes:new Map,artifacts:new Map,transfers:new Map,relationships:[],active:new Set,seen:new Set}}const Bn=9e4;function gt(e,t){if(e.waitingSince===void 0)return;const s=e.waitingSince,n=Math.max(s,t);e.waitingMs+=n-s,e.waits.push({start:s,end:n})}function Hn(e,t){const s=`${t.source.id}:${t.source.instance}`;let n=e.sources.get(s);n||(n={id:t.source.id,instance:t.source.instance,origin:t.source.instance,firstSeenAt:t.occurredAt,lastSeenAt:t.occurredAt,events:0,strata:{}},e.sources.set(s,n)),n.events++,t.occurredAt<n.firstSeenAt&&(n.firstSeenAt=t.occurredAt),t.occurredAt>n.lastSeenAt&&(n.lastSeenAt=t.occurredAt),t.stratum&&(n.strata[t.stratum]=(n.strata[t.stratum]??0)+1);const o=t.provenance?.sourceVersion;o&&(n.sourceVersions?n.sourceVersions.includes(o)||n.sourceVersions.push(o):n.sourceVersions=[o])}function Wn(e,t){if(e.seen.has(t.id))return;e.seen.add(t.id),t.occurredAt>e.now&&(e.now=t.occurredAt),Hn(e,t);const s=t.core??{},n=t.occurredAt;switch(t.subject.type){case"machine":{if(e.machines.has(t.subject.id))break;const o={id:t.subject.id,name:s.machineName??t.subject.id,kind:s.machineKind??"laptop",parentId:s.parentId,firstSeenAt:n};e.machines.set(o.id,o);break}case"session":{if(t.kind==="began"){const o=e.sessions.get(t.subject.id);if(o){o.parentId===void 0&&s.parentId&&(o.parentId=s.parentId);break}const r={id:t.subject.id,machineId:s.machineId??"",label:s.label,context:t.attrs?.context??s.label??"",executor:s.executor,model:s.model,startedAt:n,executionIds:[],parentId:s.parentId};e.sessions.set(r.id,r)}else if(t.kind==="ended"){const o=e.sessions.get(t.subject.id);o&&(o.endedAt=n)}break}case"execution":qn(e,t,n);break;case"process":Xn(e,t,n);break;case"artifact":{if(e.artifacts.has(t.subject.id))break;e.artifacts.set(t.subject.id,{id:t.subject.id,kind:"file",path:s.label??t.subject.id,firstSeenAt:n});break}}}function qn(e,t,s){const n=t.core??{},o=t.subject.id;if(t.kind==="began"){if(e.executions.has(o))return;const a={id:o,sessionId:n.sessionId??n.parentId??"",machineId:n.machineId??"",label:n.label??o,executor:n.executor??"unknown",model:n.model,status:"running",startedAt:s,lastActivityAt:s,measures:{},waitingMs:0,waits:[],parentId:n.parentId,depth:n.depth??0,startBasis:t.basis,boundsAssumption:t.assumption};n.measures&&Oe(a.measures,n.measures),e.executions.set(o,a),e.active.add(o),e.sessions.get(a.sessionId)?.executionIds.push(o);return}const r=e.executions.get(o);if(r)switch(t.kind){case"progressed":{n.measures&&Oe(r.measures,n.measures),r.lastActivityAt=s,r.status==="idle"&&(r.status="running",e.active.add(o));break}case"blocked":{if(!Un(r.status))break;r.status="waiting",r.waitingSince=s,r.waitReason=n.blockedOn??"input",r.lastActivityAt=s;break}case"resumed":{gt(r,s),r.status="running",r.waitingSince=void 0,r.waitReason=void 0,r.lastActivityAt=s,e.active.add(o);break}case"ended":{const a=n.outcome==="error";r.status=a?"failed":"completed",r.endedAt=s,r.endBasis=t.basis,t.assumption&&!r.boundsAssumption&&(r.boundsAssumption=t.assumption),r.lastActivityAt=s,r.outcome=n.outcome??"completed",a&&(r.failure={code:n.failureCode??"ERROR",message:n.failureMessage??"Execution failed"}),gt(r,s),r.waitingSince=void 0,r.waitReason=void 0,e.active.delete(o);break}case"observed":r.lastActivityAt=Math.max(r.lastActivityAt,s);break}}function Xn(e,t,s){const n=t.core??{},o=t.subject.id,r=Number(t.attrs?.["os.pid"]??0);if(t.kind==="began"){if(e.processes.has(o))return;const i={id:o,machineId:n.machineId??"",pid:r,ppid:typeof t.attrs?.["os.ppid"]=="number"?t.attrs["os.ppid"]:void 0,command:n.label??n.executor??String(r),startedAt:s,lastSeenAt:s,status:"running",measures:{}};n.measures&&Oe(i.measures,n.measures),e.processes.set(o,i);return}const a=e.processes.get(o);if(a)if(t.kind==="observed"||t.kind==="progressed"){if(a.lastSeenAt=Math.max(a.lastSeenAt,s),n.measures){const i=n.measures[O.cpuMs];typeof i=="number"&&(a.measures[O.cpuMs]=i);const{[O.cpuMs]:u,...p}=n.measures;Oe(a.measures,p)}}else t.kind==="ended"&&(a.endedAt=s,a.lastSeenAt=Math.max(a.lastSeenAt,s),a.status="exited",a.endInferred=t.basis==="inferred")}function Vn(e,t){for(let s=0;s<t.length;s++)Wn(e,t[s])}function Gn(e,t){if(!(t<=e.now)){e.now=t;for(const s of e.active){const n=e.executions.get(s);if(!n){e.active.delete(s);continue}n.status==="running"&&t-n.lastActivityAt>Bn&&(n.status="idle")}}}const zn=5*6e4;function Jn(e){const t=[];for(const s of e)s.parentId&&t.push({from:{type:"session",id:s.parentId},to:{type:"session",id:s.id},kind:"spawned",basis:"measured",via:"recorded by the child session's own runtime"});return t}function Yn(e,t){const s=e.now-zn,n=new Set;for(const i of t)i.from.type==="process"&&n.add(i.from.id),i.to.type==="process"&&n.add(i.to.id);const o=[];let r=0,a=0;for(const i of e.processes.values())i.lastSeenAt>=s&&r++,i.endInferred&&a++,n.has(i.id)&&o.push(i);return{now:e.now,dayStart:e.dayStart,dayEnd:e.dayEnd,machines:[...e.machines.values()],sources:[...e.sources.values()],sessions:[...e.sessions.values()],executions:[...e.executions.values()],processes:o,processTotals:{observed:e.processes.size,recentlySeen:r,exitsInferred:a},relationships:[...t,...Jn(e.sessions.values())]}}const He={processDays:7,eventDays:90},Kn=["machine"],yt=["process"],Ce={processEvents:0,otherEvents:0,claims:0,subjects:0,retainedByDependents:0,processBefore:null,otherBefore:null},Qn=["execution","session","artifact"];function zt(e=process.env){return{processDays:vt(e.O57_RETAIN_PROCESS_DAYS,He.processDays),eventDays:vt(e.O57_RETAIN_DAYS,He.eventDays)}}function vt(e,t){if(e===void 0||e.trim()==="")return t;const s=Number(e);return Number.isFinite(s)&&s>=0?s:t}function Me(e){const t=(s,n)=>s===0?`${n} kept indefinitely`:`${n} ${s}d`;return`${t(e.processDays,"processes")}, ${t(e.eventDays,"sessions/executions")}, machines never expire`}const wt=448,Zn=384;function eo(){return M(te(),".057")}function ze(){const e=process.env.O57_STORE;return e&&e.length>0?e===":memory:"||us(e)?e:ve(process.cwd(),e):M(eo(),"events.db")}function Jt(){const e=process.env.O57_STORE;return typeof e=="string"&&e.length>0}function je(e){return[e,`${e}-wal`,`${e}-shm`]}function to(e){if(e===":memory:")return;const t=ds(e);ns(t,{recursive:!0,mode:wt}),Yt(t,wt)}function We(e){if(e===":memory:")return[];const t=[];for(const s of je(e))if(C(s)&&!Yt(s,Zn)){const n=Je(s);n!==null&&(n&63)!==0&&t.push({path:s,mode:n})}return t}function Je(e){try{return Ne(e).mode&511}catch{return null}}function Yt(e,t){if(process.platform==="win32")return!1;const s=Je(e);if(s===null)return!1;if((s&~t)===0)return!0;try{return os(e,t),!0}catch{return!1}}function Kt(){if(Jt())return null;const e=ve(process.cwd(),".057","events.db");return C(e)&&e!==ze()?e:null}const so=`-- 057 local store.
7
+ --
8
+ -- \`events\` is the only durable truth. \`claims\` is denormalized out of events so identity
9
+ -- resolution is one indexed read rather than a scan; it is rebuildable from events at any time.
10
+ -- Derived entities and relationships are NOT stored: they are a pure fold over these rows, so
11
+ -- improving derivation is a rebuild and never a re-capture.
12
+
13
+ PRAGMA journal_mode = WAL;
14
+ PRAGMA synchronous = NORMAL;
15
+
16
+ CREATE TABLE IF NOT EXISTS events (
17
+ id TEXT PRIMARY KEY, -- stable content hash; re-ingest is a no-op
18
+ source_id TEXT NOT NULL,
19
+ source_instance TEXT NOT NULL,
20
+ occurred_at INTEGER NOT NULL,
21
+ observed_at INTEGER NOT NULL,
22
+ clock TEXT NOT NULL, -- 'wall' | 'monotonic'
23
+ kind TEXT NOT NULL,
24
+ subject_type TEXT NOT NULL,
25
+ subject_id TEXT NOT NULL,
26
+ core TEXT, -- JSON, closed core vocabulary
27
+ attrs TEXT, -- JSON, namespaced source values
28
+ basis TEXT NOT NULL,
29
+ assumption TEXT,
30
+ stratum TEXT, -- observation vantage; NULL on pre-Phase-2 rows
31
+ provenance TEXT -- JSON pointer to the source record; never a copy
32
+ );
33
+
34
+ CREATE INDEX IF NOT EXISTS events_occurred ON events(occurred_at);
35
+ CREATE INDEX IF NOT EXISTS events_subject ON events(subject_type, subject_id);
36
+ CREATE INDEX IF NOT EXISTS events_source ON events(source_id, occurred_at);
37
+
38
+ CREATE TABLE IF NOT EXISTS claims (
39
+ event_id TEXT NOT NULL,
40
+ key TEXT NOT NULL, -- canonical 'ns|part|part'
41
+ ns TEXT NOT NULL,
42
+ subject_type TEXT NOT NULL,
43
+ subject_id TEXT NOT NULL,
44
+ source_id TEXT NOT NULL,
45
+ valid_from INTEGER NOT NULL,
46
+ valid_to INTEGER NOT NULL
47
+ );
48
+
49
+ CREATE INDEX IF NOT EXISTS claims_key ON claims(key, valid_from, valid_to);
50
+ CREATE INDEX IF NOT EXISTS claims_window ON claims(valid_to, valid_from);
51
+ CREATE INDEX IF NOT EXISTS claims_event ON claims(event_id);
52
+ `,me=1;class de extends Error{constructor(t,s,n){super(t),this.kind=s,this.remedy=n,this.name="StoreError"}kind;remedy}function De(e){const t=e?.code;if(t==="EACCES"||t==="EPERM"||t==="EROFS")return!0;const s=e instanceof Error?e.message:String(e);return/readonly|read-only|attempt to write a readonly database|unable to open database file|permission denied|SQLITE_(READONLY|PERM|CANTOPEN)/i.test(s)}function Fe(e,t){const s=t instanceof Error?t.message:String(t);return new de(`store ${e} cannot be written: ${s}`,"permission","The store itself looks intact — this is a permissions problem, not a corrupt file. Do NOT delete it. Check that you own the file and its directory and that both are writable (057 needs 0600 on the store and 0700 on its directory), or point O57_STORE at a writable path.")}function no(e){to(e);let t;try{t=new qe(e)}catch(d){throw De(d)?Fe(e,d):new de(`cannot open the store at ${e}: ${d instanceof Error?d.message:String(d)}`,"unreadable","Check that the path exists and names a file 057 can open, or point O57_STORE elsewhere.")}let s;try{s=Number(t.prepare("PRAGMA user_version").get().user_version)}catch(d){throw t.close(),De(d)?Fe(e,d):new de(`store ${e} is not a readable database: ${d instanceof Error?d.message:String(d)}`,"unreadable","The file exists but is not a 057 store. Move it aside and 057 will start a new one; `057 reset` does that for you. Back it up first if it might be data you want.")}if(s>me)throw t.close(),new de(`store ${e} was written by a newer 057 (schema ${s}, this build understands ${me})`,"future-schema","Upgrade 057, or point O57_STORE at a different file. The store was not modified.");try{t.exec(so);const d=new Set(t.prepare("PRAGMA table_info(events)").all().map(m=>String(m.name)));d.has("stratum")||t.exec("ALTER TABLE events ADD COLUMN stratum TEXT"),d.has("provenance")||t.exec("ALTER TABLE events ADD COLUMN provenance TEXT"),s!==me&&t.exec(`PRAGMA user_version = ${me}`)}catch(d){t.close();const m=d instanceof Error?d.message:String(d);throw De(d)?Fe(e,d):new de(`store ${e} could not be prepared: ${m}`,"unreadable","The file may be corrupt. Back it up, then move it aside and 057 will start a new store; `057 reset` does that for you.")}We(e);const n=1e3,o=new Set,r=new Set;let a=null;const i=(d,m)=>{r.add(d),a??=Date.now(),o.size<n&&o.add(m)},u=d=>ro(d,i),p=t.prepare(`INSERT OR IGNORE INTO events
53
+ (id, source_id, source_instance, occurred_at, observed_at, clock, kind,
54
+ subject_type, subject_id, core, attrs, basis, assumption, stratum, provenance)
55
+ VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)`),c=t.prepare(`INSERT INTO claims
56
+ (event_id, key, ns, subject_type, subject_id, source_id, valid_from, valid_to)
57
+ VALUES (?,?,?,?,?,?,?,?)`),f=t.prepare("SELECT * FROM events WHERE occurred_at >= ? AND occurred_at <= ? ORDER BY occurred_at, id"),E=new Map,g=t.prepare(`SELECT key, ns, subject_type, subject_id, source_id, valid_from, valid_to
58
+ FROM claims WHERE valid_from <= ? AND valid_to >= ?`),y={path:e,schemaVersion:me,append(d){let m=0,h=0;t.exec("BEGIN");try{for(const l of d){if(p.run(l.id,l.source.id,l.source.instance,l.occurredAt,l.observedAt,l.clock,l.kind,l.subject.type,l.subject.id,l.core?JSON.stringify(l.core):null,l.attrs?JSON.stringify(l.attrs):null,l.basis,l.assumption??null,l.stratum??null,l.provenance?JSON.stringify(l.provenance):null).changes===0){h++;continue}m++;for(const A of l.claims??[])c.run(l.id,vs(A),A.ns,l.subject.type,l.subject.id,l.source.id,A.validFrom,A.validTo)}t.exec("COMMIT")}catch(l){throw t.exec("ROLLBACK"),l}return{inserted:m,duplicate:h}},query(d,m,h){if(!h||h.length===0)return f.all(d,m).map(u);const l=[...h].sort().join(",");let b=E.get(l);if(!b){const A=h.map(()=>"?").join(",");b=t.prepare(`SELECT * FROM events
59
+ WHERE occurred_at >= ? AND occurred_at <= ? AND subject_type IN (${A})
60
+ ORDER BY occurred_at, id`),E.set(l,b)}return b.all(d,m,...h).map(u)},claims(d,m){return g.all(m,d).map(h=>{const l=h;return{key:String(l.key),subjectType:l.subject_type,subjectId:String(l.subject_id),sourceId:String(l.source_id),validFrom:Number(l.valid_from),validTo:Number(l.valid_to)}})},stats(){const d=Number(t.prepare("SELECT COUNT(*) c FROM events").get().c),m=Number(t.prepare("SELECT COUNT(*) c FROM claims").get().c),h=t.prepare("SELECT MIN(occurred_at) lo, MAX(occurred_at) hi FROM events").get(),l=t.prepare(`SELECT source_id s, COUNT(*) c, MIN(occurred_at) lo, MAX(occurred_at) hi
61
+ FROM events GROUP BY source_id ORDER BY s`).all().map(b=>{const A=b;return{source:String(A.s),events:Number(A.c),first:Number(A.lo),last:Number(A.hi)}});return{events:d,claims:m,bySource:l,earliest:h.lo,latest:h.hi}},begansFor(d){const m=[],h=t.prepare(`SELECT * FROM events
62
+ WHERE kind = 'began' AND subject_type = ? AND subject_id = ?
63
+ ORDER BY occurred_at LIMIT 1`);for(const l of d){const b=l.indexOf(":");if(b<0)continue;const A=h.get(l.slice(0,b),l.slice(b+1));A&&m.push(u(A))}return m},subjectEvents(d,m){return t.prepare("SELECT * FROM events WHERE subject_type = ? AND subject_id = ? ORDER BY occurred_at, id").all(d,m).map(u)},latestFor(d){return t.prepare("SELECT MAX(occurred_at) hi FROM events WHERE source_id = ?").get(d)?.hi??null},sweep(d=He,m=Date.now()){const h=d.processDays>0?m-d.processDays*864e5:null,l=d.eventDays>0?m-d.eventDays*864e5:null;if(h===null&&l===null)return{...Ce};const b=N=>Kn.includes(N)?null:yt.includes(N)?h:l,A=t.prepare(`SELECT subject_type t, subject_id i, MAX(occurred_at) last
64
+ FROM events GROUP BY subject_type, subject_id`).all().map(N=>{const F=N;return{type:String(F.t),id:String(F.i),last:Number(F.last)}}),v=(N,F)=>`${N}:${F}`,S=new Set,R=new Map;for(const N of A){const F=b(N.type);F===null||N.last>=F?S.add(v(N.type,N.id)):R.set(v(N.type,N.id),{type:N.type,id:N.id})}if(R.size===0)return{...Ce,processBefore:h,otherBefore:l};const I=[...Qn],$=t.prepare(`SELECT DISTINCT core FROM events
65
+ WHERE subject_type = ? AND subject_id = ? AND core IS NOT NULL`),w=new Set(I);let k=[...S].filter(N=>w.has(N.slice(0,N.indexOf(":"))));const T=new Set(k);let _=0;for(let N=0;N<4&&k.length>0;N++){const F=[];for(const ne of k){const tt=ne.indexOf(":");for(const ts of $.all(ne.slice(0,tt),ne.slice(tt+1))){const st=Te(ts.core);if(st)for(const[ss,nt]of[["sessionId","session"],["parentId","session"],["parentId","execution"]]){const ot=st[ss];if(typeof ot!="string")continue;const oe=v(nt,ot);R.has(oe)&&(R.delete(oe),S.add(oe),_++,!T.has(oe)&&w.has(nt)&&(T.add(oe),F.push(oe)))}}}k=F}if(R.size===0)return{...Ce,retainedByDependents:_,processBefore:h,otherBefore:l};const P=t.prepare(`DELETE FROM claims WHERE event_id IN
66
+ (SELECT id FROM events WHERE subject_type = ? AND subject_id = ?)`),fe=t.prepare("DELETE FROM events WHERE subject_type = ? AND subject_id = ?");let q=0,U=0,x=0;t.exec("BEGIN");try{for(const{type:N,id:F}of R.values()){x+=Number(P.run(N,F).changes);const ne=Number(fe.run(N,F).changes);yt.includes(N)?q+=ne:U+=ne}t.exec("COMMIT")}catch(N){throw t.exec("ROLLBACK"),N}return q+U>0&&y.checkpoint(),{processEvents:q,otherEvents:U,claims:x,subjects:R.size,retainedByDependents:_,processBefore:h,otherBefore:l}},checkpoint(){try{t.exec("PRAGMA wal_checkpoint(TRUNCATE)")}catch{}},sizeBytes(){const[d,m,h]=je(e).map(oo);return{db:d,wal:m,shm:h,total:d+m+h}},health(){const d=o.size;return d===0?{ok:!0,malformedRows:0,columns:[],since:null}:{ok:!1,malformedRows:d,columns:[...r].sort(),since:a,remedy:`${d} stored row(s) could not be read as JSON and lost their ${[...r].sort().join("/")} channel. Everything else is being used normally and nothing has been deleted. Run \`057 compact\` to rewrite the store; if the count keeps growing, back the store up and run \`057 reset\` to start a new one.`}},compact(){t.exec("VACUUM"),y.checkpoint(),We(e)},close(){y.checkpoint(),t.close()}};return y}function oo(e){try{return Ne(e).size}catch{return 0}}function Te(e,t,s){if(e!=null)try{const n=JSON.parse(String(e));if(n&&typeof n=="object")return n;t&&s?.(t);return}catch{t&&s?.(t);return}}function ro(e,t){const s=e,n=t?o=>t(o,String(s.id)):void 0;return{id:String(s.id),source:{id:String(s.source_id),instance:String(s.source_instance)},occurredAt:Number(s.occurred_at),observedAt:Number(s.observed_at),clock:s.clock,kind:s.kind,subject:{type:s.subject_type,id:String(s.subject_id)},core:Te(s.core,"core",n),attrs:Te(s.attrs,"attrs",n),basis:s.basis,assumption:s.assumption?String(s.assumption):void 0,stratum:s.stratum?s.stratum:void 0,provenance:Te(s.provenance,"provenance",n)}}const _e="os",io=(e,t)=>`os:${e}:${t.pid}:${t.startedAt}`,ao=e=>`The process was present in one ${Math.round(e/1e3)}s snapshot and absent from the next, so it exited somewhere in that window. The recorded instant is the last moment it was observed alive — a lower bound on the true exit. A process that started and exited entirely within one interval is never observed at all.`,co=250,uo=8*1024*1024;function lo(e,t,s){const n={source:{id:_e,instance:s.host},observedAt:s.observedAt,clock:"wall",stratum:"machine"},o=[],r=new Map;for(const a of t){const i=io(s.host,a);r.set(i,a);const u={ns:"os.process",parts:[s.host,a.pid],validFrom:a.startedAt,validTo:s.observedAt};if(!e.has(i)){o.push({...n,occurredAt:a.startedAt,kind:"began",subject:{type:"process",id:i},claims:[u],basis:"measured",core:{machineId:s.machineId,label:po(a.command),executor:a.command,measures:{[O.cpuMs]:a.cpuMs}},attrs:{"os.pid":a.pid,"os.ppid":a.ppid,"os.command":a.command,"os.rssBytes":a.rssBytes}});continue}const p=e.get(i),c=a.cpuMs-p.cpuMs>=co,f=Math.abs(a.rssBytes-p.rssBytes)>=uo;(c||f)&&o.push({...n,occurredAt:s.observedAt,seq:`obs:${s.observedAt}`,kind:"observed",subject:{type:"process",id:i},claims:[u],basis:"measured",core:{measures:{[O.cpuMs]:a.cpuMs}},attrs:{"os.rssBytes":a.rssBytes}})}for(const[a,i]of e)r.has(a)||o.push({...n,occurredAt:s.observedAt-s.intervalMs,kind:"ended",subject:{type:"process",id:a},basis:"inferred",assumption:ao(s.intervalMs),core:{outcome:"completed",measures:{[O.cpuMs]:i.cpuMs}},attrs:{"os.pid":i.pid}});return{envelopes:o,next:r}}function po(e){return(e.split("/").pop()??e).toUpperCase()}const fo=ys(gs);function mo(){return Tt().replace(/\.local$/i,"")}function ho(e){const t=[];for(const s of e.split(`
67
+ `)){const n=s.trim();if(!n)continue;const o=n.match(/^(\d+)\s+(\d+)\s+(\w{3}\s+\w{3}\s+\d+\s+[\d:]+\s+\d{4})\s+([\d:.]+)\s+(\d+)\s+(.*)$/);if(!o)continue;const[,r,a,i,u,p,c]=o,f=Date.parse(i);Number.isFinite(f)&&t.push({pid:Number(r),ppid:Number(a),startedAt:f,cpuMs:bo(u),rssBytes:Number(p)*1024,command:c.trim()})}return t}function bo(e){const[t,s]=e.includes("-")?e.split("-"):["0",e],n=s.split(":").map(Number);let o=0;for(const r of n)o=o*60+(Number.isFinite(r)?r:0);return Math.round((o+Number(t)*86400)*1e3)}async function go(){const{stdout:e}=await fo("ps",["-Ao","pid=,ppid=,lstart=,time=,rss=,comm="],{maxBuffer:8388608});return ho(e)}const At=5e3;function yo(e,t){const s=mo();let n=new Map,o=null,r=0,a=null,i,u=!1;async function p(){if(u)return[];u=!0;try{const c=Date.now(),f=await go(),{envelopes:E,next:g}=lo(n,f,{machineId:t,host:s,observedAt:c,intervalMs:At}),y=E.map(G);return e.append(y),n=g,r++,a=c,i=void 0,y}catch(c){return i=c instanceof Error?c.message:String(c),[]}finally{u=!1}}return{sample:p,start(){o||(p(),o=setInterval(()=>{p()},At),o.unref?.())},stop(){o&&clearInterval(o),o=null},get running(){return o!==null},stats(){return{samples:r,tracked:n.size,lastSampleAt:a,lastError:i}}}}const Qt={info:e=>console.log(e),warn:e=>console.warn(e),error:e=>console.error(e)},vo=36e5,wo=15e3,Ao=3;function Ye(e={}){const t=e.log??Qt,s=e.path??ze(),n=e.retention??zt(),o=no(s),r=o.stats();t.info(r.events>0?`[057] store ${s}: opened with ${r.events} events`:`[057] store ${s}: NEW EMPTY STORE — if history existed before, it was lost, not carried`);const a=Kt();a&&t.warn(`[057] a store from a previous layout exists at ${a} and is NOT in use. Run 057 with O57_STORE=${a} to keep using it, or move it to ${s}.`);const i=se();o.append([G({source:{id:"host",instance:i.id},occurredAt:0,observedAt:Date.now(),clock:"wall",kind:"began",stratum:"machine",subject:{type:"machine",id:i.id},basis:"measured",core:{machineName:i.name,machineKind:i.kind},seq:"host"})]);const u=yo(o,i.id),p=new Map;function c(l){for(const b of l){const A=p.get(b.id)??{consecutiveFailures:0,totalFailures:0,failing:!1};b.ok?(A.consecutiveFailures=0,A.failing=!1,A.lastSuccessAt=Date.now()):(A.consecutiveFailures++,A.totalFailures++,A.lastFailureAt=Date.now(),A.lastError=b.error,A.consecutiveFailures>=Ao&&!A.failing&&(A.failing=!0,t.warn(`[057] source ${b.id} has failed ${A.consecutiveFailures} collection rounds in a row: ${b.error??"unknown error"}`))),p.set(b.id,A)}}const f=Et(s);let E=null;function g(l){return E||(E=l,t.error(`[057] ${l.message} — ${l.remedy}`),u.stop()),E}function y(){if(E)return E;if(s===":memory:")return null;if(!C(s))return g({kind:"unlinked",message:`the store at ${s} no longer exists on disk; captured events are going to an orphaned file and will be lost`,remedy:"Stop 057 and start it again. It will open a new store at the same path.",since:Date.now()});const l=Et(s);return f!==null&&l!==null&&l!==f?g({kind:"replaced",message:`the store at ${s} was replaced by a different file while 057 was running; captured events are going to the old one`,remedy:"Stop 057 and start it again so it opens the file that is actually there.",since:Date.now()}):null}e.observe!==!1&&u.start();const d=o.sweep(n);d.processEvents+d.otherEvents>0&&t.info(`[057] retention: removed ${d.processEvents} process and ${d.otherEvents} semantic events (${Me(n)})`);const m=setInterval(()=>{if(!E)try{o.sweep(n),We(s)}catch(l){t.warn(`[057] retention sweep failed: ${String(l)}`)}},vo);m.unref?.();const h=setInterval(()=>{y()},wo);return h.unref?.(),{store:o,machine:i,os:u,path:s,retention:n,fault:()=>E,sweep:l=>o.sweep(n,l),checkStore:y,recordCollection:c,collectionHealth:()=>Object.fromEntries(p),stop(){clearInterval(m),clearInterval(h),u.stop(),o.close()}}}function Et(e){try{return Ne(e).ino}catch{return null}}const Eo=[{id:_t,collect:(e,t)=>Ps(e,t)},{id:Ue,collect:(e,t)=>Ks(e,t)},{id:le,collect:(e,t)=>cn(e,t)},{id:ke,collect:(e,t)=>yn(e,t)},{id:ge,collect:(e,t)=>_n(e,t)},{id:Ie,collect:(e,t)=>Dn(e,t)}],kt=10*365*24*36e5,Ee=2e5,ko=24*36e5;function So(e,t,s){const n=t.startsWith("/api/");if(s){const i=(e.headers.host??"").toLowerCase(),u=i.startsWith("[")?i.slice(0,i.indexOf("]")+1):i.split(":")[0];if(!s.includes(u))return`refusing a request for host "${i}"; 057 answers only on ${s.join(", ")}`}const o=e.headers.origin;if(typeof o=="string"&&o!=="null"){const i=(e.headers.host??"").toLowerCase();let u="";try{u=new URL(o).host.toLowerCase()}catch{return"refusing a request with an unparseable Origin"}if(u!==i)return`refusing a cross-origin request from ${o}`}const r=e.headers["sec-fetch-site"],a=String(e.headers["sec-fetch-dest"]??"");if(Io.has(a))return`refusing to be embedded as ${a}`;if(typeof r=="string"&&r!==""){if(r!=="same-origin"&&r!=="none")return`refusing a ${r} request`;if(r==="none"&&n)return"refusing a directly-navigated API request"}else if(n&&t==="/api/collect")return"refusing a state-changing request that carries no fetch metadata";return null}const Io=new Set(["iframe","frame","embed","object","fencedframe"]);function Ke(e){e.setHeader("x-frame-options","DENY"),e.setHeader("content-security-policy","frame-ancestors 'none'")}function To(e,t){const s=(r,a)=>{const i=e.get(r);if(i===null||i==="")return a;const u=Number(i);return Number.isSafeInteger(u)?u:null},n=s("from",t-864e5),o=s("to",t);return n===null||o===null?{error:"from and to must be integer epoch millis"}:o<n?{error:"to must not precede from"}:o>t+ko?{error:"to is too far in the future"}:o-n>kt?{error:`window must not exceed ${kt} ms`}:{from:n,to:o}}function H(e,t,s){e.statusCode=t,e.setHeader("content-type","application/json"),e.setHeader("cache-control","no-store"),e.setHeader("x-content-type-options","nosniff"),Ke(e),e.end(JSON.stringify(s))}function Zt(e,t,s,n){const o=e.query(t,s,n),r=new Set,a=new Set,i=c=>{const f=`${c.subject.type}:${c.subject.id}`;c.kind==="began"?r.add(f):a.add(f),c.core?.sessionId&&a.add(`session:${c.core.sessionId}`),c.core?.machineId&&a.add(`machine:${c.core.machineId}`)};for(const c of o)i(c);const u=[];for(let c=0;c<4;c++){const f=[...a].filter(g=>!r.has(g));if(f.length===0)break;const E=e.begansFor(f);if(E.length===0)break;for(const g of E)u.push(g.occurredAt<t?{...g,occurredAt:t}:g),i(g),r.add(`${g.subject.type}:${g.subject.id}`)}return{events:[...u,...o].sort((c,f)=>c.occurredAt-f.occurredAt||St(c)-St(f)),relationships:$s(e,t,s).relationships}}function _o(e,t,s){const n=performance.now(),{events:o,relationships:r}=Zt(e,t,s),a=performance.now()-n,i=performance.now(),u=Pn(t,s);Vn(u,o),Gn(u,s);const p=performance.now()-i,c=performance.now(),f=Yn(u,r),E=performance.now()-c;return{world:f,meta:{events:o.length,readMs:Math.round(a*10)/10,deriveMs:Math.round(p*10)/10,serializeMs:Math.round(E*10)/10}}}function St(e){if(e.kind==="ended")return 5;switch(e.subject.type){case"machine":return 0;case"session":return 1;case"execution":case"process":return e.kind==="began"?2:3;default:return 4}}function Ro(e){const t=e.problems.filter(s=>s.path.includes("/sessions/")).length;return{identity:e.identityAvailable?t===0?"available":e.registryEntries>0?"partial":"failed":"unavailable","stored-semantics":e.storedAvailable?e.transcriptsFailed===0?"available":e.transcriptsRead>0?"partial":"failed":"unavailable","live-semantics":"unavailable"}}function Le(e){return{"stored-semantics":e.storedAvailable?e.failed===0?"available":e.read>0?"partial":"failed":"unavailable","live-semantics":"unavailable"}}function $o(e){return e.error?"failed":e.available?"observing":e.present?"installed-no-data":"not-installed"}function Oo(e){const t=e.home??e.globalStorage;if(typeof t=="string")return t;const s=e.roots;return Array.isArray(s)?s.join(", "):void 0}function ae(e){return{available:e.available,present:e.present??!1,presence:$o(e),origin:Oo(e),error:e.error}}function No(e){const{runtime:t,log:s}=e;return async function(o,r){const a=o.url??"";if(!a.startsWith("/api/"))return!1;const i=new URL(a,"http://localhost"),u=So(o,i.pathname,e.allowedHosts);if(u)return s.warn(`[057] ${u}`),H(r,403,{error:u}),!0;const p=t.store,c=Date.now(),f=To(i.searchParams,c);if("error"in f)return H(r,400,{error:f.error}),!0;const{from:E,to:g}=f;try{if(i.pathname==="/api/state"){const[y,d,m,h,l,b]=await Promise.all([Bs().catch(x=>({available:!1,error:String(x)})),Qs().catch(x=>({available:!1,error:String(x)})),un().catch(x=>({available:!1,error:String(x)})),vn().catch(x=>({available:!1,error:String(x)})),Rn().catch(x=>({available:!1,error:String(x)})),Fn().catch(x=>({available:!1,error:String(x)}))]),[A,v,S,R]=await Promise.all([Dt(E,g).catch(()=>null),Pt(E,g).catch(()=>null),Wt(E,g).catch(()=>null),Gt(E,g).catch(()=>null)]),I={strata:{"stored-semantics":"failed"}},$={"claude-code":A?{strata:Ro(A),registryEntries:A.registryEntries,transcriptsRead:A.transcriptsRead,transcriptsFailed:A.transcriptsFailed,problems:A.problems.slice(0,20)}:{strata:{identity:"failed"}},codex:v?{strata:Le({storedAvailable:v.storedAvailable,read:v.rolloutsRead,failed:v.rolloutsFailed}),rolloutsRead:v.rolloutsRead,rolloutsFailed:v.rolloutsFailed,problems:v.problems.slice(0,20)}:I,cursor:S?{strata:Le({storedAvailable:S.storedAvailable,read:S.composersRead,failed:S.composersFailed}),composersRead:S.composersRead,composersFailed:S.composersFailed,problems:S.problems.slice(0,20)}:I,gemini:R?{strata:Le({storedAvailable:R.storedAvailable,read:R.sessionsRead,failed:R.sessionsFailed}),sessionsRead:R.sessionsRead,sessionsFailed:R.sessionsFailed,problems:R.problems.slice(0,20)}:I},w={deepseek:ae(y),"0x2f":ae(d),"claude-code":ae(m),codex:ae(h),cursor:ae(l),gemini:ae(b)},k=t.collectionHealth();for(const[x,N]of Object.entries(w)){const F=k[x];F?.failing&&(N.presence="failed",N.error??=F.lastError)}const T=t.os.stats(),P=Object.values(w).filter(x=>x.available).length>0?"observing":T.samples>0?"os-only":"empty",fe=Object.entries(k).filter(([,x])=>x.failing).map(([x])=>x),q=p.health(),U={ok:fe.length===0&&q.ok&&!t.fault()&&!T.lastError,failingSources:fe,collection:k,store:q,os:T.lastError?{failing:!0,lastError:T.lastError}:{failing:!1}};return H(r,200,{machine:t.machine,mode:P,fault:t.fault()??void 0,health:U,store:{...p.stats(),path:p.path,schemaVersion:p.schemaVersion,bytes:p.sizeBytes(),retention:{...t.retention,description:Me(t.retention)}},os:{...T,running:t.os.running,source:_e},sources:w,observation:$}),!0}if(i.pathname==="/api/collect"){const y=t.checkStore();if(y)return H(r,503,{error:y.message,fault:y}),!0;const d=await Rs(p,Eo,E,g);t.recordCollection(d.sources);const m=await t.os.sample();return t.recordCollection([{id:_e,ok:!t.os.stats().lastError,error:t.os.stats().lastError}]),H(r,200,{...d,sources:[...d.sources,{id:_e,ok:!t.os.stats().lastError,collected:m.length,inserted:m.length,duplicate:0,error:t.os.stats().lastError,ms:0}]}),!0}if(i.pathname==="/api/world")return H(r,200,{from:E,to:g,now:c,..._o(p,E,g)}),!0;if(i.pathname==="/api/detail"){const y=i.searchParams.get("type")??"",d=i.searchParams.get("id")??"";if(!rt.includes(y)||!d)return H(r,400,{error:"detail needs type=<entity type> and id"}),!0;if(d.length>512)return H(r,400,{error:"id is too long"}),!0;const m=p.subjectEvents(y,d);return H(r,200,{type:y,id:d,events:m.slice(0,Ee),truncated:m.length>Ee}),!0}if(i.pathname==="/api/events"){const y=i.searchParams.get("subject"),d=y?y.split(",").filter(h=>rt.includes(h)):void 0,m=Zt(p,E,g,d);return H(r,200,{from:E,to:g,now:c,events:m.events.slice(0,Ee),truncated:m.events.length>Ee,relationships:m.relationships}),!0}return H(r,404,{error:"unknown endpoint"}),!0}catch(y){return s.error(`[057] ${String(y)}`),H(r,500,{error:String(y)}),!0}}}const Qe=5057,ye="127.0.0.1",Mo=["localhost","127.0.0.1","[::1]","::1"],jo=10,xo={".html":"text/html; charset=utf-8",".js":"text/javascript; charset=utf-8",".css":"text/css; charset=utf-8",".json":"application/json; charset=utf-8",".svg":"image/svg+xml",".woff2":"font/woff2",".png":"image/png",".ico":"image/vnd.microsoft.icon"};function It(e,t,s){let n;try{n=decodeURIComponent(t)}catch{return!1}if(n.includes("\0"))return!1;const o=ve(e,`.${ls(n)}`);if(o!==e&&!o.startsWith(e+ps)||!C(o)||!Ne(o).isFile())return!1;const r=xo[fs(o).toLowerCase()]??"application/octet-stream";return s.statusCode=200,s.setHeader("content-type",r),s.setHeader("x-content-type-options","nosniff"),Ke(s),s.setHeader("cache-control",t.startsWith("/assets/")?"public, max-age=31536000, immutable":"no-store"),rs(o).pipe(s),!0}function Co(e,t,s,n){return new Promise((o,r)=>{let a=n,i=t;const u=p=>{if(p.code==="EADDRINUSE"&&a>1){a--,i++,e.listen(i,s);return}e.off("error",u),r(p)};e.on("error",u),e.once("listening",()=>{e.off("error",u);const p=e.address();o(typeof p=="object"&&p?p.port:i)}),e.listen(i,s)})}function Do(e,t){const s=String(e.headers["sec-fetch-dest"]??"");if(Fo.has(s))return`refusing to be embedded as ${s}`;const n=e.headers["sec-fetch-site"];return typeof n=="string"&&n!==""&&n!=="same-origin"&&n!=="none"?`refusing a ${n} request for ${t}`:null}const Fo=new Set(["iframe","frame","embed","object","fencedframe"]);async function Lo(e){const t=e.log??Qt,s=ve(e.root),n=e.host??ye,o=n===ye||n==="::1"||n==="localhost",r=e.runtime??Ye({path:e.storePath,log:t,retention:e.retention,observe:e.observe}),a=No({runtime:r,log:t,allowedHosts:o?Mo:null}),i=cs((c,f)=>{(async()=>{try{if(await a(c,f))return;if(c.method!=="GET"&&c.method!=="HEAD"){f.statusCode=405,f.setHeader("allow","GET, HEAD"),f.end();return}const E=new URL(c.url??"/","http://localhost").pathname,g=Do(c,E);if(g){t.warn(`[057] ${g}`),f.statusCode=403,f.setHeader("content-type","text/plain; charset=utf-8"),Ke(f),f.end(`${g}
68
+ `);return}if(It(s,E==="/"?"/index.html":E,f)||!E.startsWith("/assets/")&&It(s,"/index.html",f))return;f.statusCode=404,f.setHeader("content-type","text/plain; charset=utf-8"),f.end(`not found
69
+ `)}catch(E){t.error(`[057] request failed: ${String(E)}`),f.headersSent||(f.statusCode=500),f.end()}})()}),u=await Co(i,e.port??Qe,n,jo).catch(c=>{throw r.stop(),c});return{url:`http://${o?"localhost":n}:${u}`,port:u,host:n,runtime:r,server:i,close(){return new Promise(c=>{i.close(()=>{r.stop(),c()}),i.closeAllConnections?.()})}}}function Uo(e){return ve(ms(new URL(".",e)),"..","dist")}const es="0.1.0";function Po(e){const t={command:"serve",open:!1,yes:!1},s=[...e],n=s[0];if(n&&!n.startsWith("-"))if(n==="status"||n==="compact"||n==="reset")t.command=n,s.shift();else return{...t,command:"help",error:`unknown command: ${n}`};for(;s.length;){const o=s.shift(),[r,a]=o.includes("=")?Bo(o,"="):[o,void 0],i=()=>a??s.shift();switch(r){case"-h":case"--help":t.command="help";break;case"-v":case"--version":t.command="version";break;case"--open":t.open=!0;break;case"--yes":case"-y":t.yes=!0;break;case"--port":{const u=i(),p=Number(u);if(!Number.isInteger(p)||p<0||p>65535)return{...t,command:"help",error:`--port needs a port number, got ${u}`};t.port=p;break}case"--host":{const u=i();if(!u)return{...t,command:"help",error:"--host needs a value"};t.host=u;break}case"--store":{const u=i();if(!u)return{...t,command:"help",error:"--store needs a path"};t.store=u;break}default:return{...t,command:"help",error:`unknown option: ${r}`}}}return t}function Bo(e,t){const s=e.indexOf(t);return[e.slice(0,s),e.slice(s+1)]}const Ho=`057 — a spatial interface for observing the shape of a computational workday
70
+
71
+ 057 observe this machine and serve the interface
72
+ 057 status where the store is, what it holds, what is observed
73
+ 057 compact reclaim disk freed by retention (rewrites the store)
74
+ 057 reset delete the local store
75
+
76
+ Options
77
+ --port <n> port to serve on (default ${Qe}; the next free one if taken)
78
+ --host <addr> address to bind (default ${ye}; read the warning below first)
79
+ --store <path> store file to use (same as O57_STORE)
80
+ --open open the interface in the default browser
81
+ -y, --yes do not ask before destroying a store
82
+ -h, --help this
83
+ -v, --version version
84
+
85
+ Environment
86
+ O57_STORE store file (default ~/.057/events.db)
87
+ O57_PORT, O57_HOST as --port / --host
88
+ O57_RETAIN_PROCESS_DAYS days of OS process observations to keep (default 7, 0 = forever)
89
+ O57_RETAIN_DAYS days of session/execution history to keep (default 90, 0 = forever)
90
+ WORK_ROOTS colon-separated workspace roots to look for 0x2F task state in
91
+ DSH_HOME CLAUDE_HOME CODEX_HOME GEMINI_HOME CURSOR_GLOBAL_STORAGE
92
+ override where each source is read from
93
+
94
+ 057 observes this machine only. It has no account, no cloud, no analytics, and sends nothing
95
+ anywhere. Everything it learns is in one SQLite file you can read or delete.
96
+
97
+ --host binds beyond the loopback interface and serves your telemetry, unauthenticated, to
98
+ anything that can reach that address. Do not do it on a network you do not control.
99
+ `;function Q(e){return process.stdout.isTTY?`\x1B[2m${e}\x1B[0m`:e}function be(e){return e<1024?`${e} B`:e<1024**2?`${(e/1024).toFixed(1)} KB`:e<1024**3?`${(e/1024**2).toFixed(1)} MB`:`${(e/1024**3).toFixed(2)} GB`}function Wo(e,t,s,n){const o=["",` 057 ${es}`,` ${e}`,"",Q(" observing this machine only — its process table, and any AI runtime state it finds"),Q(` storing ${t}`),Q(` keeping ${s}`),Q(" sending nothing. no account, no cloud, no analytics."),Q(" resetting 057 reset")];return n!==ye&&o.push("",` ! bound to ${n}, not loopback. Your telemetry is readable, without`," authentication, by anything that can reach this address."),o.push(""),o.join(`
100
+ `)}async function qo(e){if(!process.stdin.isTTY)return!1;const t=as({input:process.stdin,output:process.stdout});try{return(await new Promise(n=>t.question(`${e} [y/N] `,n))).trim().toLowerCase()==="y"}finally{t.close()}}async function Xo(e,t){const s=Po(e);if(s.command==="version")return console.log(es),0;if(s.command==="help")return s.error&&console.error(`057: ${s.error}
101
+ `),(s.error?console.error:console.log)(Ho),s.error?2:0;s.store&&(process.env.O57_STORE=s.store);const n=ze(),o=zt();if(s.command==="status")return Vo(n,o);if(s.command==="compact")return Go(n);if(s.command==="reset")return zo(n,s.yes);const r=s.port??Jo(process.env.O57_PORT)??Qe,a=s.host??process.env.O57_HOST??ye;let i;try{i=await Lo({root:t,port:r,host:a,storePath:n,retention:o,log:Ze()})}catch(c){return et(c)}console.log(Wo(i.url,n,Me(o),a)),s.open&&await Yo(i.url);let u=!1;const p=()=>{u||(u=!0,console.log(`
102
+ 057 stopping — history is on disk
103
+ `),i.close().then(()=>process.exit(0)))};return process.on("SIGINT",p),process.on("SIGTERM",p),new Promise(()=>{})}function Vo(e,t){let s;try{s=Ye({path:e,retention:t,observe:!1,log:Ze()})}catch(n){return et(n)}try{const n=s.store.stats(),o=s.store.sizeBytes(),r=je(e).map(i=>Je(i)).filter(i=>i!==null).map(i=>"0"+i.toString(8)).join(" ");if(console.log(`
104
+ store ${e}${Jt()?" (from O57_STORE)":""}
105
+ schema ${s.store.schemaVersion}
106
+ size ${be(o.total)} ${Q(`(db ${be(o.db)}, wal ${be(o.wal)})`)}
107
+ events ${n.events.toLocaleString()}
108
+ claims ${n.claims.toLocaleString()}
109
+ keeping ${Me(t)}
110
+ permissions ${r||"none — no store yet"}
111
+ `),n.bySource.length===0)console.log(` nothing has been captured yet
112
+ `);else{for(const i of n.bySource){const u=`${new Date(i.first).toISOString().slice(0,10)} → ${new Date(i.last).toISOString().slice(0,10)}`;console.log(` ${i.source.padEnd(20)}${String(i.events).padStart(10)} events ${Q(u)}`)}console.log("")}const a=Kt();return a&&console.log(` a store from a previous layout is at ${a} and is not in use
113
+ `),0}finally{s.stop()}}function Go(e){let t;try{t=Ye({path:e,observe:!1,log:Ze()})}catch(s){return et(s)}try{const s=t.store.sizeBytes().total,n=t.sweep();t.store.compact();const o=t.store.sizeBytes().total;return console.log(`
114
+ removed ${n.processEvents+n.otherEvents} expired events
115
+ ${be(s)} → ${be(o)}
116
+ `),0}finally{t.stop()}}async function zo(e,t){const s=je(e);console.log(`
117
+ this deletes, permanently:
118
+ `);for(const n of s)console.log(` ${n}`);if(console.log(""),!t&&!await qo(" delete the local store?"))return console.log(` nothing was deleted
119
+ `),1;for(const n of s)is(n,{force:!0});return console.log(` deleted. the next run starts a new store.
120
+ `),0}function Ze(){return{info:e=>{process.stderr.write(`${Q(e)}
121
+ `)},warn:e=>{process.stderr.write(`${e}
122
+ `)},error:e=>{process.stderr.write(`${e}
123
+ `)}}}function et(e){if(e instanceof de)return console.error(`
124
+ 057: ${e.message}
125
+ ${e.remedy}
126
+ `),1;const t=e?.code;return t==="EADDRINUSE"?(console.error(`
127
+ 057: no free port was found. Try 057 --port <n>.
128
+ `),1):t==="EACCES"||t==="EADDRNOTAVAIL"?(console.error(`
129
+ 057: cannot bind that address or port (${t}).
130
+ `),1):(console.error(`
131
+ 057: ${e instanceof Error?e.message:String(e)}
132
+ `),1)}function Jo(e){if(!e)return;const t=Number(e);return Number.isInteger(t)&&t>=0&&t<=65535?t:void 0}async function Yo(e){const t=process.platform==="darwin"?"open":process.platform==="win32"?"start":"xdg-open",{spawn:s}=await import("node:child_process");try{s(t,[e],{stdio:"ignore",detached:!0}).unref()}catch{}}async function ur(e){const t=await Xo(e,Uo(import.meta.url));t!==0&&process.exit(t)}export{Uo as defaultRoot,ur as main,Xo as run};
package/package.json ADDED
@@ -0,0 +1,66 @@
1
+ {
2
+ "name": "@probnaya/057-cli",
3
+ "version": "0.1.0",
4
+ "description": "A spatial interface for observing the shape of a computational workday. Local-first, accountless, offline.",
5
+ "keywords": [
6
+ "observability",
7
+ "telemetry",
8
+ "local-first",
9
+ "webgpu",
10
+ "visualization",
11
+ "agents",
12
+ "developer-tools"
13
+ ],
14
+ "license": "SEE LICENSE IN LICENSE.md",
15
+ "author": "Aleksandr Malinin",
16
+ "homepage": "https://057.probnaya.work",
17
+ "type": "module",
18
+ "bin": {
19
+ "057": "bin/057.mjs"
20
+ },
21
+ "files": [
22
+ "bin/057.mjs",
23
+ "dist/",
24
+ "dist-server/057.mjs",
25
+ "README.md",
26
+ "LICENSE.md",
27
+ "NOTICE.md"
28
+ ],
29
+ "engines": {
30
+ "node": ">=22.5.0"
31
+ },
32
+ "os": [
33
+ "darwin"
34
+ ],
35
+ "publishConfig": {
36
+ "access": "public"
37
+ },
38
+ "scripts": {
39
+ "dev": "vite",
40
+ "build": "tsc -b && vite build && vite build --config vite.node.config.ts",
41
+ "build:ui": "vite build",
42
+ "build:node": "vite build --config vite.node.config.ts",
43
+ "start": "node bin/057.mjs",
44
+ "preview": "vite preview",
45
+ "typecheck": "tsc -b --noEmit",
46
+ "test": "vitest run",
47
+ "test:host": "O57_HOST_TESTS=1 vitest run",
48
+ "test:all": "O57_HOST_TESTS=1 vitest run",
49
+ "test:watch": "vitest",
50
+ "soak": "vitest run test/soak.test.ts",
51
+ "prepack": "npm run build"
52
+ },
53
+ "dependencies": {},
54
+ "devDependencies": {
55
+ "@types/node": "^26.4.0",
56
+ "@types/react": "^19.2.0",
57
+ "@types/react-dom": "^19.2.0",
58
+ "@vitejs/plugin-react": "^5.0.0",
59
+ "react": "^19.2.0",
60
+ "react-dom": "^19.2.0",
61
+ "typescript": "^5.7.0",
62
+ "vgpu": "^0.3.1",
63
+ "vite": "^7.0.0",
64
+ "vitest": "^3.0.0"
65
+ }
66
+ }