[{"data":1,"prerenderedAt":770},["ShallowReactive",2],{"navigation_docs":3,"-guide-sessions":104,"-guide-sessions-surround":765},[4,48],{"title":5,"path":6,"stem":7,"children":8,"icon":47},"Guide","\u002Fguide","1.guide\u002F01.index",[9,11,15,19,23,27,31,35,39,43],{"title":10,"path":6,"stem":7},"Getting Started",{"title":12,"path":13,"stem":14},"Registry and paths","\u002Fguide\u002Fregistry","1.guide\u002F02.registry",{"title":16,"path":17,"stem":18},"Running another harness","\u002Fguide\u002Finvoke","1.guide\u002F03.invoke",{"title":20,"path":21,"stem":22},"MCP servers","\u002Fguide\u002Fmcp-servers","1.guide\u002F04.mcp-servers",{"title":24,"path":25,"stem":26},"Instructions files","\u002Fguide\u002Fagents-sync","1.guide\u002F05.agents-sync",{"title":28,"path":29,"stem":30},"CLI","\u002Fguide\u002Fcli","1.guide\u002F06.cli",{"title":32,"path":33,"stem":34},"Agents","\u002Fguide\u002Fagents","1.guide\u002F07.agents",{"title":36,"path":37,"stem":38},"Sessions","\u002Fguide\u002Fsessions","1.guide\u002F08.sessions",{"title":40,"path":41,"stem":42},"Custom harnesses","\u002Fguide\u002Fcustom","1.guide\u002F09.custom",{"title":44,"path":45,"stem":46},"Explorer","\u002Fguide\u002Fexplorer","1.guide\u002F10.explorer","i-solar-book-2-linear",{"title":49,"path":50,"stem":51,"children":52,"icon":103},"Harnesses","\u002Fharnesses","2.harnesses\u002F00.index",[53,55,59,63,67,71,75,79,83,87,91,95,99],{"title":54,"path":50,"stem":51},"Overview",{"title":56,"path":57,"stem":58},"Claude Code","\u002Fharnesses\u002Fclaude","2.harnesses\u002F01.claude",{"title":60,"path":61,"stem":62},"Codex CLI","\u002Fharnesses\u002Fcodex","2.harnesses\u002F02.codex",{"title":64,"path":65,"stem":66},"Gemini CLI","\u002Fharnesses\u002Fgemini","2.harnesses\u002F03.gemini",{"title":68,"path":69,"stem":70},"Antigravity CLI","\u002Fharnesses\u002Fantigravity","2.harnesses\u002F04.antigravity",{"title":72,"path":73,"stem":74},"Grok CLI","\u002Fharnesses\u002Fgrok","2.harnesses\u002F05.grok",{"title":76,"path":77,"stem":78},"OpenCode","\u002Fharnesses\u002Fopencode","2.harnesses\u002F06.opencode",{"title":80,"path":81,"stem":82},"Pi","\u002Fharnesses\u002Fpi","2.harnesses\u002F07.pi",{"title":84,"path":85,"stem":86},"OMP","\u002Fharnesses\u002Fomp","2.harnesses\u002F08.omp",{"title":88,"path":89,"stem":90},"Cursor","\u002Fharnesses\u002Fcursor","2.harnesses\u002F09.cursor",{"title":92,"path":93,"stem":94},"GitHub Copilot","\u002Fharnesses\u002Fgithub-copilot","2.harnesses\u002F10.github-copilot",{"title":96,"path":97,"stem":98},"Mastra Code","\u002Fharnesses\u002Fmastracode","2.harnesses\u002F11.mastracode",{"title":100,"path":101,"stem":102},"Freebuff","\u002Fharnesses\u002Ffreebuff","2.harnesses\u002F12.freebuff","i-solar-library-linear",{"id":105,"title":36,"body":106,"description":758,"extension":759,"links":760,"meta":761,"navigation":431,"path":37,"seo":763,"stem":38,"__hash__":764},"docs\u002F1.guide\u002F08.sessions.md",{"type":107,"value":108,"toc":753},"minimark",[109,114,126,288,296,300,303,672,679,683,746,749],[110,111,113],"h2",{"id":112},"where","Where",[115,116,117,121,122,125],"p",{},[118,119,120],"code",{},"harness.sessions"," lists the locations, with ",[118,123,124],{},"scope: \"data\""," and a note where the directory name is derived:",[127,128,129,145],"table",{},[130,131,132],"thead",{},[133,134,135,139,142],"tr",{},[136,137,138],"th",{},"Harness",[136,140,141],{},"Format",[136,143,144],{},"Path",[146,147,148,161,177,189,201,213,224,241,254,265,277],"tbody",{},[133,149,150,153,156],{},[151,152,56],"td",{},[151,154,155],{},"JSONL",[151,157,158],{},[118,159,160],{},"~\u002F.claude\u002Fprojects\u002F\u003Cdash-encoded-cwd>\u002F*.jsonl",[133,162,163,165,168],{},[151,164,60],{},[151,166,167],{},"JSONL, SQLite",[151,169,170,173,174],{},[118,171,172],{},"~\u002F.codex\u002Fsessions\u002F",", ",[118,175,176],{},"~\u002F.codex\u002Fstate_5.sqlite",[133,178,179,181,184],{},[151,180,64],{},[151,182,183],{},"JSON",[151,185,186],{},[118,187,188],{},"~\u002F.gemini\u002Fhistory\u002F\u003Cproject-id>\u002F",[133,190,191,193,196],{},[151,192,72],{},[151,194,195],{},"JSONL, JSON, SQLite",[151,197,198],{},[118,199,200],{},"~\u002F.grok\u002Fsessions\u002F\u003Cencoded-cwd>\u002F\u003Csession-id>\u002Fupdates.jsonl",[133,202,203,205,208],{},[151,204,76],{},[151,206,207],{},"SQLite",[151,209,210],{},[118,211,212],{},"~\u002F.local\u002Fshare\u002Fopencode\u002Fopencode.db",[133,214,215,217,219],{},[151,216,80],{},[151,218,155],{},[151,220,221],{},[118,222,223],{},"~\u002F.pi\u002Fagent\u002Fsessions\u002F\u003Cdash-encoded-cwd>\u002F\u003Ctimestamp>_\u003Csession-id>.jsonl",[133,225,226,228,230],{},[151,227,84],{},[151,229,167],{},[151,231,232,173,235,173,238],{},[118,233,234],{},"~\u002F.omp\u002Fagent\u002Fsessions\u002F\u003Cdash-encoded-cwd>\u002F…jsonl",[118,236,237],{},"history.db",[118,239,240],{},"agent.db",[133,242,243,246,249],{},[151,244,245],{},"Antigravity",[151,247,248],{},"Protocol Buffers, JSONL, SQLite",[151,250,251],{},[118,252,253],{},"~\u002F.gemini\u002Fantigravity-cli\u002Fconversations\u002F",[133,255,256,258,260],{},[151,257,96],{},[151,259,207],{},[151,261,262],{},[118,263,264],{},"~\u002F.local\u002Fshare\u002Fmastracode\u002Fmastra.db",[133,266,267,269,272],{},[151,268,100],{},[151,270,271],{},"JSON, JSONL",[151,273,274],{},[118,275,276],{},"~\u002F.config\u002Fmanicode\u002Fprojects\u002F\u003Cproject-name>\u002Fchats\u002F\u003Ctimestamp>\u002F",[133,278,279,282,285],{},[151,280,281],{},"Cursor, Copilot",[151,283,284],{},"-",[151,286,287],{},"No known session location",[115,289,290,291,295],{},"Each ",[292,293,294],"a",{"href":50},"harness page"," has the full list with notes.",[110,297,299],{"id":298},"types","Types",[115,301,302],{},"Session schemas are types and nothing else. No runtime code, no validators, no dependency:",[304,305,310],"pre",{"className":306,"code":307,"language":308,"meta":309,"style":309},"language-ts shiki shiki-themes github-light github-light poimandres","import type {\n  ClaudeSessionEntry,\n  ClaudeUserEntry,\n  ClaudeAssistantEntry,\n  CodexThread,\n  CodexLogEntry,\n  GeminiConversationRecord,\n  OpenCodeSession,\n  OpenCodeMessage,\n  OpenCodePart,\n} from \"@agntn\u002Fharnesses\";\n\nimport { readFileSync } from \"node:fs\";\n\nconst entries = readFileSync(path, \"utf8\")\n  .split(\"\\n\")\n  .filter(Boolean)\n  .map((line) => JSON.parse(line) as ClaudeSessionEntry);\n\nfor (const entry of entries) {\n  if (entry.type === \"assistant\") {\n    entry.message.content; \u002F\u002F ClaudeContentBlock[]: text, thinking, tool_use, tool_result\n  }\n}\n","ts","",[118,311,312,329,339,347,355,363,371,379,387,395,403,426,433,458,463,499,520,535,582,587,609,637,660,666],{"__ignoreMap":309},[313,314,317,321,325],"span",{"class":315,"line":316},"line",1,[313,318,320],{"class":319},"sP0CR","import",[313,322,324],{"class":323},"stCPd"," type",[313,326,328],{"class":327},"sKlNE"," {\n",[313,330,332,336],{"class":315,"line":331},2,[313,333,335],{"class":334},"snHMy","  ClaudeSessionEntry",[313,337,338],{"class":327},",\n",[313,340,342,345],{"class":315,"line":341},3,[313,343,344],{"class":334},"  ClaudeUserEntry",[313,346,338],{"class":327},[313,348,350,353],{"class":315,"line":349},4,[313,351,352],{"class":334},"  ClaudeAssistantEntry",[313,354,338],{"class":327},[313,356,358,361],{"class":315,"line":357},5,[313,359,360],{"class":334},"  CodexThread",[313,362,338],{"class":327},[313,364,366,369],{"class":315,"line":365},6,[313,367,368],{"class":334},"  CodexLogEntry",[313,370,338],{"class":327},[313,372,374,377],{"class":315,"line":373},7,[313,375,376],{"class":334},"  GeminiConversationRecord",[313,378,338],{"class":327},[313,380,382,385],{"class":315,"line":381},8,[313,383,384],{"class":334},"  OpenCodeSession",[313,386,338],{"class":327},[313,388,390,393],{"class":315,"line":389},9,[313,391,392],{"class":334},"  OpenCodeMessage",[313,394,338],{"class":327},[313,396,398,401],{"class":315,"line":397},10,[313,399,400],{"class":334},"  OpenCodePart",[313,402,338],{"class":327},[313,404,406,409,412,416,420,423],{"class":315,"line":405},11,[313,407,408],{"class":327},"}",[313,410,411],{"class":323}," from",[313,413,415],{"class":414},"scVjq"," \"",[313,417,419],{"class":418},"sQ7BG","@agntn\u002Fharnesses",[313,421,422],{"class":414},"\"",[313,424,425],{"class":327},";\n",[313,427,429],{"class":315,"line":428},12,[313,430,432],{"emptyLinePlaceholder":431},true,"\n",[313,434,436,438,441,444,447,449,451,454,456],{"class":315,"line":435},13,[313,437,320],{"class":319},[313,439,440],{"class":327}," {",[313,442,443],{"class":334}," readFileSync",[313,445,446],{"class":327}," }",[313,448,411],{"class":323},[313,450,415],{"class":414},[313,452,453],{"class":418},"node:fs",[313,455,422],{"class":414},[313,457,425],{"class":327},[313,459,461],{"class":315,"line":460},14,[313,462,432],{"emptyLinePlaceholder":431},[313,464,466,470,474,477,480,483,487,489,491,494,496],{"class":315,"line":465},15,[313,467,469],{"class":468},"s1TYA","const",[313,471,473],{"class":472},"saoiD"," entries",[313,475,476],{"class":468}," =",[313,478,443],{"class":479},"sULi6",[313,481,482],{"class":327},"(",[313,484,486],{"class":485},"spVlQ","path",[313,488,173],{"class":327},[313,490,422],{"class":414},[313,492,493],{"class":418},"utf8",[313,495,422],{"class":414},[313,497,498],{"class":327},")\n",[313,500,502,505,508,510,512,516,518],{"class":315,"line":501},16,[313,503,504],{"class":327},"  .",[313,506,507],{"class":479},"split",[313,509,482],{"class":327},[313,511,422],{"class":414},[313,513,515],{"class":514},"stM5N","\\n",[313,517,422],{"class":414},[313,519,498],{"class":327},[313,521,523,525,528,530,533],{"class":315,"line":522},17,[313,524,504],{"class":327},[313,526,527],{"class":479},"filter",[313,529,482],{"class":327},[313,531,532],{"class":485},"Boolean",[313,534,498],{"class":327},[313,536,538,540,543,546,549,552,555,559,562,565,567,569,571,575,579],{"class":315,"line":537},18,[313,539,504],{"class":327},[313,541,542],{"class":479},"map",[313,544,545],{"class":327},"((",[313,547,315],{"class":548},"s1jWp",[313,550,551],{"class":327},") ",[313,553,554],{"class":468},"=>",[313,556,558],{"class":557},"sqT1Y"," JSON",[313,560,561],{"class":327},".",[313,563,564],{"class":479},"parse",[313,566,482],{"class":327},[313,568,315],{"class":485},[313,570,551],{"class":327},[313,572,574],{"class":573},"sp-LQ","as",[313,576,578],{"class":577},"sCrqT"," ClaudeSessionEntry",[313,580,581],{"class":327},");\n",[313,583,585],{"class":315,"line":584},19,[313,586,432],{"emptyLinePlaceholder":431},[313,588,590,593,596,598,601,604,606],{"class":315,"line":589},20,[313,591,592],{"class":323},"for",[313,594,595],{"class":327}," (",[313,597,469],{"class":468},[313,599,600],{"class":472}," entry",[313,602,603],{"class":468}," of",[313,605,473],{"class":485},[313,607,608],{"class":327},") {\n",[313,610,612,615,617,620,622,625,628,630,633,635],{"class":315,"line":611},21,[313,613,614],{"class":323},"  if",[313,616,595],{"class":327},[313,618,619],{"class":485},"entry",[313,621,561],{"class":327},[313,623,624],{"class":485},"type",[313,626,627],{"class":468}," ===",[313,629,415],{"class":414},[313,631,632],{"class":418},"assistant",[313,634,422],{"class":414},[313,636,608],{"class":327},[313,638,640,643,645,648,650,653,656],{"class":315,"line":639},22,[313,641,642],{"class":485},"    entry",[313,644,561],{"class":327},[313,646,647],{"class":485},"message",[313,649,561],{"class":327},[313,651,652],{"class":485},"content",[313,654,655],{"class":327},"; ",[313,657,659],{"class":658},"sjhu3","\u002F\u002F ClaudeContentBlock[]: text, thinking, tool_use, tool_result\n",[313,661,663],{"class":315,"line":662},23,[313,664,665],{"class":327},"  }\n",[313,667,669],{"class":315,"line":668},24,[313,670,671],{"class":327},"}\n",[115,673,674,675,678],{},"Fields whose upstream shape moves between releases are typed ",[118,676,677],{},"unknown"," on purpose. Narrow them at the call site with what you actually observe; a schema that claims more than the harness promises breaks on the next minor version.",[110,680,682],{"id":681},"whats-covered","What's covered",[684,685,686,705,719,728],"ul",{},[687,688,689,693,694,697,698,701,702,561],"li",{},[690,691,692],"strong",{},"Claude",": ",[118,695,696],{},"ClaudeSessionEntry"," as a union of user, assistant and summary entries, with content blocks and usage. ",[118,699,700],{},"ClaudeHistoryEntry"," for ",[118,703,704],{},"history.jsonl",[687,706,707,693,710,173,713,173,716,561],{},[690,708,709],{},"Codex",[118,711,712],{},"CodexThread",[118,714,715],{},"CodexLogEntry",[118,717,718],{},"CodexHistoryEntry",[687,720,721,693,724,727],{},[690,722,723],{},"Gemini",[118,725,726],{},"GeminiConversationRecord"," with message records, thoughts, tool call records and token summaries.",[687,729,730,693,732,173,735,738,739,742,743,561],{},[690,731,76],{},[118,733,734],{},"OpenCodeSession",[118,736,737],{},"OpenCodeMessage"," and the part union: text, reasoning, tool, file, subtask, step start and finish, snapshot, patch, agent, retry, compaction. Plus ",[118,740,741],{},"OpenCodeTodo"," and ",[118,744,745],{},"OpenCodeProject",[115,747,748],{},"Grok, Pi, OMP, Antigravity, Mastra Code and Freebuff have their locations mapped and no schema yet. If you read one of those formats and have a stable shape, that is the contribution this package wants most.",[750,751,752],"style",{},"html pre.shiki code .sP0CR, html code.shiki .sP0CR{--shiki-light:#D73A49;--shiki-default:#D73A49;--shiki-dark:#5DE4C7}html pre.shiki code .stCPd, html code.shiki .stCPd{--shiki-light:#D73A49;--shiki-default:#D73A49;--shiki-dark:#A6ACCD}html pre.shiki code .sKlNE, html code.shiki .sKlNE{--shiki-light:#24292E;--shiki-default:#24292E;--shiki-dark:#A6ACCD}html pre.shiki code .snHMy, html code.shiki .snHMy{--shiki-light:#24292E;--shiki-default:#24292E;--shiki-dark:#ADD7FF}html pre.shiki code .scVjq, html code.shiki .scVjq{--shiki-light:#032F62;--shiki-default:#032F62;--shiki-dark:#A6ACCD}html pre.shiki code .sQ7BG, html code.shiki .sQ7BG{--shiki-light:#032F62;--shiki-default:#032F62;--shiki-dark:#5DE4C7}html pre.shiki code .s1TYA, html code.shiki .s1TYA{--shiki-light:#D73A49;--shiki-default:#D73A49;--shiki-dark:#91B4D5}html pre.shiki code .saoiD, html code.shiki .saoiD{--shiki-light:#005CC5;--shiki-default:#005CC5;--shiki-dark:#E4F0FB}html pre.shiki code .sULi6, html code.shiki .sULi6{--shiki-light:#6F42C1;--shiki-default:#6F42C1;--shiki-dark:#E4F0FBD0}html pre.shiki code .spVlQ, html code.shiki .spVlQ{--shiki-light:#24292E;--shiki-default:#24292E;--shiki-dark:#E4F0FB}html pre.shiki code .stM5N, html code.shiki .stM5N{--shiki-light:#005CC5;--shiki-default:#005CC5;--shiki-dark:#5FB3A1}html pre.shiki code .s1jWp, html code.shiki .s1jWp{--shiki-light:#E36209;--shiki-default:#E36209;--shiki-dark:#E4F0FB}html pre.shiki code .sqT1Y, html code.shiki .sqT1Y{--shiki-light:#005CC5;--shiki-default:#005CC5;--shiki-dark:#ADD7FF}html pre.shiki code .sp-LQ, html code.shiki .sp-LQ{--shiki-light:#D73A49;--shiki-default:#D73A49;--shiki-dark:#A6ACCDC0}html pre.shiki code .sCrqT, html code.shiki .sCrqT{--shiki-light:#6F42C1;--shiki-default:#6F42C1;--shiki-dark:#A6ACCDC0}html pre.shiki code .sjhu3, html code.shiki .sjhu3{--shiki-light:#6A737D;--shiki-light-font-style:inherit;--shiki-default:#6A737D;--shiki-default-font-style:inherit;--shiki-dark:#767C9DB0;--shiki-dark-font-style:italic}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"title":309,"searchDepth":331,"depth":331,"links":754},[755,756,757],{"id":112,"depth":331,"text":113},{"id":298,"depth":331,"text":299},{"id":681,"depth":331,"text":682},"Typed schemas for the transcript formats, and where each harness writes them.","md",null,{"icon":762},"i-solar-document-text-linear",{"title":36,"description":758},"-SKC4qeLL2BDy__YVAs10yPFoUmf6T9VjpMkPrw7sho",[766,768],{"title":32,"path":33,"stem":34,"description":767,"children":-1},"The same nine tools over MCP, the Pi extension and the OMP extension. What they read, what they run, what they write.",{"title":40,"path":41,"stem":42,"description":769,"children":-1},"Extend the abstract Harness class, register it, and it shows up in getHarness, detection, the CLI and the tools.",1788622198893]