MCPcopy Index your code
hub / github.com/ChinaSiro/claude-code-sourcemap / B97

Function B97

package/cli.js:7679–7680  ·  view source on GitHub ↗
(q,K)

Source from the content-addressed store, hash-verified

7677`;if(z.length+O.length>=this.MAX_CHUNK_BYTES){await this.appendToFile(q,z);for(let w of Y)w();Y.length=0,z=""}z+=O,Y.push(A)}if(z.length>0){await this.appendToFile(q,z);for(let $ of Y)$()}}for(let[q,K]of this.writeQueues)if(K.length===0)this.writeQueues.delete(q)}resetSessionFile(){this.sessionFile=null,this.pendingEntries=[]}reAppendSessionMetadata(q=!1){if(!this.sessionFile)return;let K=N8();if(!K)return;let z=FRY(this.sessionFile).split(`
7678`);if(!q){let $=z.findLast((A)=>A.startsWith('{"type":"custom-title"'));if($){let A=UT($,"customTitle");if(A!==void 0)this.currentSessionTitle=A||void 0}}let Y=z.findLast(($)=>$.startsWith('{"type":"tag"'));if(Y){let $=UT(Y,"tag");if($!==void 0)this.currentSessionTag=$||void 0}if(this.currentSessionLastPrompt)jZ(this.sessionFile,{type:"last-prompt",lastPrompt:this.currentSessionLastPrompt,sessionId:K});if(this.currentSessionTitle)jZ(this.sessionFile,{type:"custom-title",customTitle:this.currentSessionTitle,sessionId:K});if(this.currentSessionTag)jZ(this.sessionFile,{type:"tag",tag:this.currentSessionTag,sessionId:K});if(this.currentSessionAgentName)jZ(this.sessionFile,{type:"agent-name",agentName:this.currentSessionAgentName,sessionId:K});if(this.currentSessionAgentColor)jZ(this.sessionFile,{type:"agent-color",agentColor:this.currentSessionAgentColor,sessionId:K});if(this.currentSessionAgentSetting)jZ(this.sessionFile,{type:"agent-setting",agentSetting:this.currentSessionAgentSetting,sessionId:K});if(this.currentSessionMode)jZ(this.sessionFile,{type:"mode",mode:this.currentSessionMode,sessionId:K});if(this.currentSessionWorktree!==void 0)jZ(this.sessionFile,{type:"worktree-state",worktreeSession:this.currentSessionWorktree,sessionId:K});if(this.currentSessionPrNumber!==void 0&&this.currentSessionPrUrl&&this.currentSessionPrRepository)jZ(this.sessionFile,{type:"pr-link",sessionId:K,prNumber:this.currentSessionPrNumber,prUrl:this.currentSessionPrUrl,prRepository:this.currentSessionPrRepository,timestamp:new Date().toISOString()})}async flush(){if(this.flushTimer)clearTimeout(this.flushTimer),this.flushTimer=null;if(this.activeDrain)await this.activeDrain;if(await this.drainWriteQueue(),this.pendingWriteCount===0)return;return new Promise((q)=>{this.flushResolvers.push(q)})}async removeMessageByUuid(q){return this.trackWrite(async()=>{if(this.sessionFile===null)return;try{let K=0,_=await fRY(this.sessionFile,"r+");try{let{size:$}=await _.stat();if(K=$,$===0)return;let A=Math.min($,ue),O=$-A,w=Buffer.allocUnsafe(A),{bytesRead:j}=await _.read(w,0,A,O),H=w.subarray(0,j),J=`"uuid":"${q}"`,M=H.lastIndexOf(J);if(M>=0){let X=H.lastIndexOf(10,M);if(X>=0||O===0){let P=X+1,W=H.indexOf(10,M+J.length),D=W>=0?W+1:j,f=O+P,G=j-D;if(await _.truncate(f),G>0)await _.write(H,D,G,f);return}}}finally{await _.close()}if(K>vRY){N(`Skipping tombstone removal: session file too large (${m4(K)})`,{level:"warn"});return}let Y=(await dS6(this.sessionFile,{encoding:"utf-8"})).split(`
7679`).filter(($)=>{if(!$.trim())return!0;try{return r8($).uuid!==q}catch{return!0}});await gS6(this.sessionFile,Y.join(`
7680`),{encoding:"utf8"})}catch{}})}shouldSkipPersistence(){let q=i6(process.env.TEST_ENABLE_SESSION_PERSISTENCE);return LBK()==="test"&&!q||Z7()?.cleanupPeriodDays===0||ey()||i6(process.env.CLAUDE_CODE_SKIP_PROMPT_HISTORY)}async materializeSessionFile(){if(this.shouldSkipPersistence())return;if(this.ensureCurrentSessionFile(),this.reAppendSessionMetadata(),this.pendingEntries.length>0){let q=this.pendingEntries;this.pendingEntries=[];for(let K of q)await this.appendEntry(K)}}async insertMessageChain(q,K=!1,_,z,Y){return this.trackWrite(async()=>{let $=z??null;if(this.sessionFile===null&&q.some((j)=>j.type==="user"||j.type==="assistant"))await this.materializeSessionFile();let A;try{A=await oM()}catch{A=void 0}let O=N8(),w=t36().get(O);for(let j of q){let H=bD(j),J=$;if(j.type==="user"&&"sourceToolAssistantUUID"in j&&j.sourceToolAssistantUUID)J=j.sourceToolAssistantUUID;let M={parentUuid:H?null:J,logicalParentUuid:H?$:void 0,isSidechain:K,teamName:Y?.teamName,agentName:Y?.agentName,promptId:j.type==="user"?Kx6()??void 0:void 0,agentId:_,...j,userType:HQ8(),entrypoint:yRY(),cwd:Z8(),sessionId:O,version:TRY,gitBranch:A,slug:w};if(await this.appendEntry(M),FS6(j))$=j.uuid}if(!K){let j=wq8(q);if(j){let H=j.replace(/\n/g," ").trim();this.currentSessionLastPrompt=H.length>200?H.slice(0,200).trim()+"…":H}}})}async insertFileHistorySnapshot(q,K,_){return this.trackWrite(async()=>{let z={type:"file-history-snapshot",messageId:q,snapshot:K,isSnapshotUpdate:_};await this.appendEntry(z)})}async insertQueueOperation(q){return this.trackWrite(async()=>{await this.appendEntry(q)})}async insertAttributionSnapshot(q){return this.trackWrite(async()=>{await this.appendEntry(q)})}async insertContentReplacement(q,K){return this.trackWrite(async()=>{let _={type:"content-replacement",sessionId:N8(),agentId:K,replacements:q};await this.appendEntry(_)})}async appendEntry(q,K=N8()){if(this.shouldSkipPersistence())return;let _=N8(),z=K===_,Y;if(z){if(this.sessionFile===null){this.pendingEntries.push(q);return}Y=this.sessionFile}else{let $=await this.getExistingSessionFile(K);if(!$){H6(Error(`appendEntry: session file not found for other session ${K}`));return}Y=$}if(q.type==="summary")this.enqueueWrite(Y,q);else if(q.type==="custom-title")this.enqueueWrite(Y,q);else if(q.type==="ai-title")this.enqueueWrite(Y,q);else if(q.type==="last-prompt")this.enqueueWrite(Y,q);else if(q.type==="task-summary")this.enqueueWrite(Y,q);else if(q.type==="tag")this.enqueueWrite(Y,q);else if(q.type==="agent-name")this.enqueueWrite(Y,q);else if(q.type==="agent-color")this.enqueueWrite(Y,q);else if(q.type==="agent-setting")this.enqueueWrite(Y,q);else if(q.type==="pr-link")this.enqueueWrite(Y,q);else if(q.type==="file-history-snapshot")this.enqueueWrite(Y,q);else if(q.type==="attribution-snapshot")this.enqueueWrite(Y,q);else if(q.type==="speculation-accept")this.enqueueWrite(Y,q);else if(q.type==="mode")this.enqueueWrite(Y,q);else if(q.type==="worktree-state")this.enqueueWrite(Y,q);else if(q.type==="content-replacement"){let $=q.agentId?c0(q.agentId):Y;this.enqueueWrite($,q)}else if(q.type==="marble-origami-commit")this.enqueueWrite(Y,q);else if(q.type==="marble-origami-snapshot")this.enqueueWrite(Y,q);else{let $=await US6(K);if(q.type==="queue-operation")this.enqueueWrite(Y,q);else{let A=q.isSidechain&&q.agentId!==void 0,O=A?c0(pO(q.agentId)):Y,w=!$.has(q.uuid);if(A||w){if(this.enqueueWrite(O,q),!A){if($.add(q.uuid),Oa(q))await this.persistToRemote(K,q)}}}}}ensureCurrentSessionFile(){if(this.sessionFile===null)this.sessionFile=Y$();return this.sessionFile}existingSessionFiles=new Map;async getExistingSessionFile(q){let K=this.existingSessionFiles.get(q);if(K)return K;let _=JT(q);try{return await C97(_),this.existingSessionFiles.set(q,_),_}catch(z){if(e3(z))return null;throw z}}async persistToRemote(q,K){if(gL8())return;if(this.internalEventWriter){try{await this.internalEventWriter("transcript",K,{...bD(K)&&{isCompaction:!0},...K.agentId&&{agentId:K.agentId}})}catch{d("tengu_session_persistence_failed",{}),N("Failed to write transcript as internal event")}return}if(!i6("true")||!this.remoteIngressUrl)return;if(!await W5K(q,K,this.remoteIngressUrl))d("tengu_session_persistence_failed",{}),eK(1,"other")}setRemoteIngressUrl(q){if(this.remoteIngressUrl=q,N(`Remote persistence enabled with URL: ${q}`),q)this.FLUSH_INTERVAL_MS=kBK}setInternalEventWriter(q){this.internalEventWriter=q,N("CCR v2 internal event writer registered for transcript persistence"),this.FLUSH_INTERVAL_MS=kBK}setInternalEventReader(q){this.internalEventReader=q,N("CCR v2 internal event reader registered for session resume")}setInternalSubagentEventReader(q){this.internalSubagentEventReader=q,N("CCR v2 subagent event reader registered for session resume")}getInternalEventReader(){return this.internalEventReader}getInternalSubagentEventReader(){return this.internalSubagentEventReader}}async function fN(q,K,_,z){let Y=Bq8(q,z),$=N8(),A=await US6($),O=[],w=_,j=!1;for(let J of Y)if(A.has(J.uuid)){if(!j&&FS6(J))w=J.uuid}else O.push(J),j=!0;if(O.length>0)await dY().insertMessageChain(O,!1,void 0,w,K);return O.findLast(FS6)?.uuid??w??null}async function SQ(q,K,_){await dY().insertMessageChain(Bq8(q),!0,K,_)}async function tI1(q){await dY().insertQueueOperation(q)}async function p97(q){await dY().removeMessageByUuid(q)}async function O68(q,K,_){await dY().insertFileHistorySnapshot(q,K,_)}async function SRY(q){await dY().insertAttributionSnapshot(q)}async function DH6(q,K){await dY().insertContentReplacement(q,K)}async function mb(){dY().resetSessionFile()}function vJ6(){let q=dY();q.sessionFile=Y$(),q.reAppendSessionMetadata(!0)}async function CRY(q){let K=N8();if(!K)return;await dY().appendEntry({type:"marble-origami-commit",sessionId:K,...q})}async function bRY(q){let K=N8();if(!K)return;await dY().appendEntry({type:"marble-origami-snapshot",sessionId:K,...q})}async function Hd(){await dY().flush()}async function B97(q,K){Of(EX(q));let _=dY();try{let z=await D5K(q,K)||[],Y=_2(r1());await BS6(Y,{recursive:!0,mode:448});let $=JT(q),A=z.map((O)=>g6(O)+`
7681`).join("");return await gS6($,A,{encoding:"utf8",mode:384}),N(`Hydrated ${z.length} entries from remote`),z.length>0}catch(z){return N(`Error hydrating session from remote: ${z}`),c8("error","hydrate_remote_session_fail"),!1}finally{_.setRemoteIngressUrl(K)}}async function g97(q){let K=Date.now();Of(EX(q));let _=dY(),z=_.getInternalEventReader();if(!z)return N("No internal event reader registered for CCR v2 resume"),!1;try{let Y=await z();if(!Y)return N("Failed to read internal events for resume"),c8("error","hydrate_ccr_v2_read_fail"),!1;let $=_2(r1());await BS6($,{recursive:!0,mode:448});let A=JT(q),O=Y.map((H)=>g6(H.payload)+`
7682`).join("");await gS6(A,O,{encoding:"utf8",mode:384}),N(`Hydrated ${Y.length} foreground entries from CCR v2 internal events`);let w=0,j=_.getInternalSubagentEventReader();if(j){let H=await j();if(H&&H.length>0){w=H.length;let J=new Map;for(let M of H){let X=M.agent_id||"";if(!X)continue;let P=J.get(X);if(!P)P=[],J.set(X,P);P.push(M.payload)}for(let[M,X]of J){let P=c0(pO(M));await BS6(Iq8(P),{recursive:!0,mode:448});let W=X.map((D)=>g6(D)+`
7683`).join("");await gS6(P,W,{encoding:"utf8",mode:384})}N(`Hydrated ${H.length} subagent entries across ${J.size} agents`)}}return c8("info","hydrate_ccr_v2_completed",{duration_ms:Date.now()-K,event_count:Y.length,subagent_event_count:w}),Y.length>0}catch(Y){if(Y instanceof Error&&Y.message==="CCRClient: Epoch mismatch (409)")throw Y;return N(`Error hydrating session from CCR v2: ${Y}`),c8("error","hydrate_ccr_v2_fail"),!1}}function F97(q){let K=wq8(q);if(K){let _=K.replace(/\n/g," ").trim();if(_.length>200)_=_.slice(0,200).trim()+"…";return _}return"No prompt"}function wq8(q){for(let K of q){if(K.type!=="user"||K.isMeta)continue;if("isCompactSummary"in K&&K.isCompactSummary)continue;let _=K.message?.content;if(!_)continue;let z=[];if(typeof _==="string")z.push(_);else if(Array.isArray(_)){for(let Y of _)if(Y.type==="text"&&Y.text)z.push(Y.text)}for(let Y of z){if(!Y)continue;let $=o4(Y,CZ);if($){let O=$.replace(/^\//,"");if(RQ().has(O))continue;else{let w=o4(Y,"command-args")?.trim();if(!w)continue;return`${$} ${w}`}}let A=o4(Y,"bash-input");if(A)return`! ${A}`;if(NBK.test(Y))continue;return Y}}return}function KL6(q){return q.map((K)=>{let{isSidechain:_,parentUuid:z,...Y}=K;return Y})}function xRY(q){let K,_=-1,z=-1,Y=new Map,$=0;for(let j of q.values()){if(Y.set(j.uuid,$),bD(j)){z=$;let H=j.compactMetadata?.preservedSegment;if(H)K=H,_=$}$++}if(!K)return;let A=_===z,O=new Set;if(A){let j=new Set,H=q.get(K.tailUuid),J=!1;while(H&&!j.has(H.uuid)){if(j.add(H.uuid),O.add(H.uuid),H.uuid===K.headUuid){J=!0;break}H=H.parentUuid?q.get(H.parentUuid):void 0}if(!J){d("tengu_relink_walk_broken",{tailInTranscript:q.has(K.tailUuid),headInTranscript:q.has(K.headUuid),anchorInTranscript:q.has(K.anchorUuid),walkSteps:j.size,transcriptSize:q.size});return}}if(A){let j=q.get(K.headUuid);if(j)q.set(K.headUuid,{...j,parentUuid:K.anchorUuid});for(let[H,J]of q)if(J.parentUuid===K.anchorUuid&&H!==K.headUuid)q.set(H,{...J,parentUuid:K.tailUuid});for(let H of O){let J=q.get(H);if(J?.type!=="assistant")continue;q.set(H,{...J,message:{...J.message,usage:{...J.message.usage,input_tokens:0,output_tokens:0,cache_creation_input_tokens:0,cache_read_input_tokens:0}}})}}let w=[];for(let[j]of q){let H=Y.get(j);if(H!==void 0&&H<z&&!O.has(j))w.push(j)}for(let j of w)q.delete(j)}function IRY(q){let K=new Set;for(let A of q.values()){let O=A.snipMetadata?.removedUuids;if(!O)continue;for(let w of O)K.add(w)}if(K.size===0)return;let _=new Map,z=0;for(let A of K){let O=q.get(A);if(!O)continue;_.set(A,O.parentUuid),q.delete(A),z++}let Y=(A)=>{let O=[],w=A;while(w&&K.has(w))if(O.push(w),w=_.get(w),w===void 0){w=null;break}for(let j of O)_.set(j,w);return w},$=0;for(let[A,O]of q){if(!O.parentUuid||!K.has(O.parentUuid))continue;q.set(A,{...O,parentUuid:Y(O.parentUuid)}),$++}d("tengu_snip_resume_filtered",{removed_count:z,relinked_count:$})}function JQ8(q,K){let _,z=-1/0;for(let Y of q){if(!K(Y))continue;let $=Date.parse(Y.timestamp);if($>z)z=$,_=Y}return _}function XK6(q,K){let _=[],z=new Set,Y=K;while(Y){if(z.has(Y.uuid)){H6(Error(`Cycle detected in parentUuid chain at message ${Y.uuid}. Returning partial transcript.`)),d("tengu_chain_parent_cycle",{});break}z.add(Y.uuid),_.push(Y),Y=Y.parentUuid?q.get(Y.parentUuid):void 0}return _.reverse(),uRY(q,_,z)}function uRY(q,K,_){let z=K.filter((J)=>J.type==="assistant");if(z.length===0)return K;let Y=new Map;for(let J of z)if(J.message.id)Y.set(J.message.id,J);let $=new Map,A=new Map;for(let J of q.values())if(J.type==="assistant"&&J.message.id){let M=$.get(J.message.id);if(M)M.push(J);else $.set(J.message.id,[J])}else if(J.type==="user"&&J.parentUuid&&Array.isArray(J.message.content)&&J.message.content.some((M)=>M.type==="tool_result")){let M=A.get(J.parentUuid);if(M)M.push(J);else A.set(J.parentUuid,[J])}let O=new Set,w=new Map,j=0;for(let J of z){let M=J.message.id;if(!M||O.has(M))continue;O.add(M);let X=$.get(M)??[J],P=X.filter((G)=>!_.has(G.uuid)),W=[];for(let G of X){let Z=A.get(G.uuid);if(!Z)continue;for(let T of Z)if(!_.has(T.uuid))W.push(T)}if(P.length===0&&W.length===0)continue;P.sort((G,Z)=>G.timestamp.localeCompare(Z.timestamp)),W.sort((G,Z)=>G.timestamp.localeCompare(Z.timestamp));let D=Y.get(M),f=[...P,...W];for(let G of f)_.add(G.uuid);j+=f.length,w.set(D.uuid,f)}if(j===0)return K;d("tengu_chain_parallel_tr_recovered",{recovered_count:j});let H=[];for(let J of K){H.push(J);let M=w.get(J.uuid);if(M)H.push(...M)}return H}function Po1(q){for(let K=q.length-1;K>=0;K--){let _=q[K];if(_.type!=="system"||_.subtype!=="turn_duration")continue;let z=_.messageCount;if(z===void 0)return;let Y=K;d("tengu_resume_consistency_delta",{expected:z,actual:Y,delta:Y-z,chain_length:q.length,checkpoint_age_entries:q.length-1-K});return}}function MQ8(q,K){let _=[],z=new Map;for(let Y of K){let $=q.get(Y.uuid);if(!$)continue;let{snapshot:A,isSnapshotUpdate:O}=$,w=O?z.get(A.messageId):void 0;if(w===void 0)z.set(A.messageId,_.length),_.push(A);else _[w]=A}return _}function XQ8(q,K){return Array.from(q.values())}async function mRY(q){if(q.endsWith(".jsonl")){let{messages:Y,summaries:$,customTitles:A,tags:O,fileHistorySnapshots:w,attributionSnapshots:j,contextCollapseCommits:H,contextCollapseSnapshot:J,leafUuids:M,contentReplacements:X,worktreeStates:P}=await $a(q);if(Y.size===0)throw Error("No messages found in JSONL file");let W=JQ8(Y.values(),(v)=>M.has(v.uuid));if(!W)throw Error("No valid conversation chain found in JSONL file");let D=XK6(Y,W),f=$.get(W.uuid),G=A.get(W.sessionId),Z=O.get(W.sessionId),T=W.sessionId;return{...S97(D,0,f,G,MQ8(w,D),Z,q,XQ8(j,D),void 0,X.get(T)??[]),contextCollapseCommits:H.filter((v)=>v.sessionId===T),contextCollapseSnapshot:J?.sessionId===T?J:void 0,worktreeSession:P.has(T)?P.get(T):void 0}}let K=await dS6(q,{encoding:"utf-8"}),_;try{_=r8(K)}catch(Y){throw Error(`Invalid JSON in transcript file: ${Y}`)}let z;if(Array.isArray(_))z=_;else if(_&&typeof _==="object"&&"messages"in _){if(!Array.isArray(_.messages))throw Error("Transcript messages must be an array");z=_.messages}else throw Error("Transcript must be an array of messages or an object with a messages array");return S97(z,0,void 0,void 0,void 0,void 0,q)}function pRY(q){if(q.type!=="user")return!1;if(q.isMeta)return!1;let K=q.message?.content;if(!K)return!1;if(typeof K==="string")return K.trim().length>0;if(Array.isArray(K))return K.some((_)=>_.type==="text"||_.type==="image"||_.type==="document");return!1}function BRY(q){if(q.type!=="assistant")return!1;let K=q.message?.content;if(!K||!Array.isArray(K))return!1;return K.some((_)=>_.type==="text"&&typeof _.text==="string"&&_.text.trim().length>0)}function U97(q){let K=0;for(let _ of q)switch(_.type){case"user":if(pRY(_))K++;break;case"assistant":if(BRY(_))K++;break;case"attachment":case"system":case"progress":break}return K}function S97(q,K=0,_,z,Y,$,A,O,w,j){let H=q.at(-1),J=q[0],M=F97(q),X=new Date(J.timestamp),P=new Date(H.timestamp);return{date:H.timestamp,messages:KL6(q),fullPath:A,value:K,created:X,modified:P,firstPrompt:M,messageCount:U97(q),isSidechain:J.isSidechain,teamName:J.teamName,agentName:J.agentName,agentSetting:w,leafUuid:H.uuid,summary:_,customTitle:z,tag:$,fileHistorySnapshots:Y,attributionSnapshots:O,contentReplacements:j,gitBranch:H.gitBranch,projectPath:J.cwd}}async function gRY(q){let K=new Map,_=0;for(let A of q){let O=SA(A);if(O){let w=(K.get(O)||0)+1;K.set(O,w),_=Math.max(w,_)}}if(_<=1)return;let z=Array.from(K.values()).filter((A)=>A>1),Y=z.length,$=z.reduce((A,O)=>A+O,0);d("tengu_session_forked_branches_fetched",{total_sessions:K.size,sessions_with_branches:Y,max_branches_per_session:Math.max(...z),avg_branches_per_session:Math.round($/Y),total_transcript_count:q.length})}async function hBK(q){let K=_2(r1()),_=await pS6(K,q,r1());return await gRY(_),_}function jZ(q,K){let _=X8(),z=g6(K)+`

Callers 1

OaYFunction · 0.85

Calls 11

OfFunction · 0.85
EXFunction · 0.85
dYFunction · 0.85
D5KFunction · 0.85
r1Function · 0.85
JTFunction · 0.85
g6Function · 0.85
NFunction · 0.85
c8Function · 0.85
joinMethod · 0.45
setRemoteIngressUrlMethod · 0.45

Tested by

no test coverage detected