sliccy 5.89.0 → 5.91.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.
Files changed (69) hide show
  1. package/dist/ui/assets/{account-store-DtZuHDmf.js → account-store-WKNURSJ8.js} +1 -1
  2. package/dist/ui/assets/{account-store-CY3L_cQF.js → account-store-fzPgbQFh.js} +1 -1
  3. package/dist/ui/assets/{adobe-Bc-6NIQr.js → adobe-CNYxqxmp.js} +1 -1
  4. package/dist/ui/assets/{adobe-BT4LLrpZ.js → adobe-CO2fRbhk.js} +1 -1
  5. package/dist/ui/assets/{apps-CDgCvWHN.js → apps-CdeVm9ta.js} +1 -1
  6. package/dist/ui/assets/{azure-openai-BZYBbAzv.js → azure-openai-CXLcSqVI.js} +1 -1
  7. package/dist/ui/assets/{azure-openai-DXz4hF-c.js → azure-openai-DNeHhRqI.js} +1 -1
  8. package/dist/ui/assets/{cerebras-CDYxWxu2.js → cerebras-B91X-_12.js} +1 -1
  9. package/dist/ui/assets/{cerebras-CvIDBeTv.js → cerebras-BX8gL7NE.js} +1 -1
  10. package/dist/ui/assets/cone-memory-budget-CfbbleAM.js +15 -0
  11. package/dist/ui/assets/{connect-surface-Dg0fG3yA.js → connect-surface-DKppuqPU.js} +1 -1
  12. package/dist/ui/assets/{fs-DpuVKRCQ.js → fs-CLo_xY4M.js} +1 -1
  13. package/dist/ui/assets/{fs-CyLJ0TYi.js → fs-Dphtozv6.js} +2 -2
  14. package/dist/ui/assets/{github-15WpvjGl.js → github-CTmWr5F8.js} +2 -2
  15. package/dist/ui/assets/{github-CXAoEzN7.js → github-DLUxHKem.js} +1 -1
  16. package/dist/ui/assets/{github-copilot-Ctq2koX1.js → github-copilot-CiY7mY0r.js} +1 -1
  17. package/dist/ui/assets/{github-copilot-Wogh9O3b.js → github-copilot-jKQvZ_3I.js} +1 -1
  18. package/dist/ui/assets/{kernel-worker-CnX2JxSd.js → kernel-worker-7MxSEMDJ.js} +21 -21
  19. package/dist/ui/assets/{local-llm-DUEO4jme.js → local-llm-CS8Df7yd.js} +1 -1
  20. package/dist/ui/assets/{local-llm-D6vzlH1q.js → local-llm-Rqy7VZK1.js} +1 -1
  21. package/dist/ui/assets/{main-YTQMsdfm.js → main-C7nVZPZU.js} +3 -3
  22. package/dist/ui/assets/{mount-De_BQGq4.js → mount-DUXO8bKF.js} +2 -2
  23. package/dist/ui/assets/{mount-sGWapNTk.js → mount-ga5-IHz3.js} +1 -1
  24. package/dist/ui/assets/{mount-recovery-BZjiBIEQ.js → mount-recovery-o8WN03Ds.js} +1 -1
  25. package/dist/ui/assets/new-session-D3YsZ1sl.js +2 -0
  26. package/dist/ui/assets/{oauth-bootstrap-BgFk_VJ2.js → oauth-bootstrap-Cb4-71kh.js} +2 -2
  27. package/dist/ui/assets/{openai-codex-C8iCsBD9.js → openai-codex-C0LY9y6a.js} +1 -1
  28. package/dist/ui/assets/{openai-codex-bEaU3e8X.js → openai-codex-aEyWlfT6.js} +1 -1
  29. package/dist/ui/assets/{openrouter-BM-UDhNC.js → openrouter-BFsdWUik.js} +1 -1
  30. package/dist/ui/assets/{openrouter-CF8xV5wq.js → openrouter-CblUC9b9.js} +1 -1
  31. package/dist/ui/assets/{openrouter-oauth-DjtLJhP8.js → openrouter-oauth-CZUYFDp2.js} +1 -1
  32. package/dist/ui/assets/{openrouter-oauth-a-7KEbrQ.js → openrouter-oauth-k3KRAQrT.js} +1 -1
  33. package/dist/ui/assets/{panel-rpc-handlers-MyjiRPfQ.js → panel-rpc-handlers-Ci-dloob.js} +2 -2
  34. package/dist/ui/assets/{provider-BH5wrYZm.js → provider-epBSFBva.js} +2 -2
  35. package/dist/ui/assets/{provider-settings-DAQd7M-Z.js → provider-settings-BHIuMD_n.js} +1 -1
  36. package/dist/ui/assets/{provider-settings-D_k-XVth.js → provider-settings-C8JP3yxH.js} +1 -1
  37. package/dist/ui/assets/provider-store-access-Bkbeorum.js +1 -0
  38. package/dist/ui/assets/{provider-store-access-BIYwZNH0.js → provider-store-access-Blkj_q_G.js} +2 -2
  39. package/dist/ui/assets/{provider-7LNCXB6L.js → provider-y4AIqfXd.js} +1 -1
  40. package/dist/ui/assets/{providers-K6q9kDLS.js → providers-DUJDjERz.js} +1 -1
  41. package/dist/ui/assets/{providers-DMaEp7Pj.js → providers-Djd5cPy6.js} +2 -2
  42. package/dist/ui/assets/{quick-llm-Dg57FmQe.js → quick-llm-BpGNCqCk.js} +1 -1
  43. package/dist/ui/assets/session-freezer-DfXZpx4a.js +23 -0
  44. package/dist/ui/assets/session-freezer-sudk6sSl.js +1 -0
  45. package/dist/ui/assets/{setup-standalone-prelude-C6YqJt2r.js → setup-standalone-prelude-WXrozSDj.js} +1 -1
  46. package/dist/ui/assets/{setup-sudo-0ZNlYZ_b.js → setup-sudo-Cvge-31Z.js} +2 -2
  47. package/dist/ui/assets/{skills-B9c2PjwK.js → skills-B1SQ8WMK.js} +1 -1
  48. package/dist/ui/assets/{store-D0OiI-Xj.js → store-D20Y2n09.js} +1 -1
  49. package/dist/ui/assets/{sudo-D0UbkO_d.js → sudo-gN9qhvv9.js} +1 -1
  50. package/dist/ui/assets/{upgrade-detection-DMqexaA6.js → upgrade-detection-CF99cKck.js} +1 -1
  51. package/dist/ui/assets/{wc-extension-BwLFa8q2.js → wc-extension-C5gDQgEk.js} +2 -2
  52. package/dist/ui/assets/{wc-follower-Dh_Vhf9K.js → wc-follower-DZAC0Rd2.js} +3 -3
  53. package/dist/ui/assets/{wc-live-D2GKoip3.js → wc-live-DRw9Xvp3.js} +4 -4
  54. package/dist/ui/assets/{wc-nav-sQfzGmHv.js → wc-nav-DweBXj6J.js} +2 -2
  55. package/dist/ui/assets/{wc-onboarding-BOSexBA4.js → wc-onboarding-BkPFKGlN.js} +2 -2
  56. package/dist/ui/assets/{wc-placeholder-BvaYuwiv.js → wc-placeholder-DfixYLWZ.js} +2 -2
  57. package/dist/ui/assets/{wc-settings-ZEBxc5EW.js → wc-settings-DnaxxpQo.js} +2 -2
  58. package/dist/ui/assets/{wc-shell-D3tTSQTN.js → wc-shell-DS2VsSis.js} +2 -2
  59. package/dist/ui/assets/{wc-sprinkles-4EUT4NHo.js → wc-sprinkles-C8fsEA0V.js} +2 -2
  60. package/dist/ui/assets/{wc-tray-DvhYzmJ9.js → wc-tray-BnKTCC6m.js} +2 -2
  61. package/dist/ui/assets/{xai-grok-CpSEkomD.js → xai-grok-B5pNBgpz.js} +1 -1
  62. package/dist/ui/assets/{xai-grok-BwI31S4-.js → xai-grok-Cx4SPSE6.js} +1 -1
  63. package/dist/ui/index.html +6 -6
  64. package/dist/ui/packages/webapp/index.html +6 -6
  65. package/package.json +2 -2
  66. package/dist/ui/assets/new-session-zluPrFE4.js +0 -2
  67. package/dist/ui/assets/provider-store-access-B-KfYV1X.js +0 -1
  68. package/dist/ui/assets/session-freezer-C7XAYYYW.js +0 -23
  69. package/dist/ui/assets/session-freezer-DbAlvJ0R.js +0 -15
@@ -1,23 +0,0 @@
1
- const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/quick-llm-Dg57FmQe.js","assets/rolldown-runtime-aKtaBQYM.js","assets/account-store-DtZuHDmf.js","assets/preload-helper-Czpn1I53.js","assets/compat-CkpNnFQS.js","assets/models-Bnh9VDA1.js","assets/event-stream-qbAZIAKV.js","assets/provider-env-D37PhSJu.js","assets/__vite-browser-external-SwrSgYTf.js","assets/openrouter.models-DS1_VkCm.js","assets/context-compaction-C3e7rcEG.js","assets/logger-DDBAeTLF.js","assets/src-DoFhVmQT.js","assets/proxied-fetch-CfcFb0B0.js","assets/base64-DpPqYZJF.js","assets/runtime-env-DH4NDw4t.js","assets/fetch-body-D2PwksUW.js","assets/secret-topology-Baeul5rD.js","assets/secrets-bridge-client-CLRo0NLf.js","assets/port-bridge-client-DdolH4cw.js","assets/tool-ui-DfXu6quJ.js","assets/providers-DMaEp7Pj.js","assets/panel-rpc-DmJSNs0I.js","assets/bedrock-camp-CJY4i7di.js","assets/transform-messages-wECJwtH0.js","assets/llm-session-id-bZQs6gBN.js","assets/icons-C5g936Qd.js"])))=>i.map(i=>d[i]);
2
- import{n as e}from"./rolldown-runtime-aKtaBQYM.js";import{t}from"./preload-helper-Czpn1I53.js";import{t as n}from"./compat-CkpNnFQS.js";import{t as r}from"./attachments-CByeG2Ru.js";import{n as i,r as a,t as o}from"./context-compaction-C3e7rcEG.js";import{t as s}from"./logger-DDBAeTLF.js";import{t as c}from"./types-idfTVsM8.js";import{t as l}from"./icons-C5g936Qd.js";import{a as u}from"./dictation-priming-DGpw1lUV.js";var d=s(`cone-memory-budget`),ee=4e3,te=2e3,ne=1.25,f=`/workspace/CLAUDE.md`,re=`/sessions/index.json`,ie=4096,ae=/^## Auto-extracted/m,oe=`Consolidate the auto-extracted memory bullets below into a single tighter set of durable memories.
3
-
4
- Rules:
5
- - Output ONLY a single \`## Auto-extracted (consolidated)\` heading followed by markdown bullets.
6
- - One fact per bullet. Drop duplicates and superseded facts. Keep the most recent / specific phrasing.
7
- - Preserve concrete identifiers (file paths, URLs, IDs, names) verbatim.
8
- - Be terse. Aim well under the original size.
9
- - Do NOT add preamble, commentary, or any heading other than the single consolidated one.`;function se(e){return Math.round(ee+te*Math.log2((Number.isFinite(e)&&e>=0?e:0)+2))}function p(e){let t=ae.exec(e);if(!t)return{header:e,autoExtracted:``};let n=t.index;return{header:e.slice(0,n),autoExtracted:e.slice(n)}}async function m(e){try{let t=await e.readFile(re,{encoding:`utf-8`}),n=typeof t==`string`?t:new TextDecoder().decode(t),r=JSON.parse(n);return Array.isArray(r)?r.length:0}catch{return 0}}async function h(e){let{header:t,autoExtracted:r}=p(e.currentContent);if(!r.trim())return e.currentContent;let i=`You are a memory consolidation assistant. You are given a markdown file's "auto-extracted" section — a list of memory bullets accumulated across sessions of an AI coding assistant. Your job is to rewrite that section as a tighter, deduplicated set of durable memories that fits well within ${e.budget} characters.
10
-
11
- <auto-extracted>
12
- ${r}
13
- </auto-extracted>`,a={role:`user`,content:[{type:`text`,text:oe}],timestamp:Date.now()},o=await n(e.model,{systemPrompt:i,messages:[a]},{apiKey:e.apiKey,maxTokens:ie,headers:e.headers,signal:e.signal});if(o.stopReason===`error`)throw Error(`Restructure call failed: ${o.errorMessage||`Unknown error`}`);let s=o.content.filter(e=>e.type===`text`).map(e=>e.text).join(`
14
- `).trim();if(!s)throw Error(`Restructure call returned empty content`);return`${t}${t.length===0||t.endsWith(`
15
- `)?``:`
16
- `}${s}\n`}async function ce(e){if(!e.model||!e.apiKey)return{restructured:!1,reason:`no-llm`};let t=``;try{let n=await e.vfs.readFile(f,{encoding:`utf-8`});t=typeof n==`string`?n:new TextDecoder().decode(n)}catch{return{restructured:!1,reason:`missing-file`}}let n=await m(e.vfs),r=se(n),i=r*ne;if(t.length<=i)return{restructured:!1,reason:`under-threshold`};d.info(`Cone memory over threshold — restructuring`,{size:t.length,budget:r,threshold:i,sessionCount:n});try{let n=await h({currentContent:t,budget:r,model:e.model,apiKey:e.apiKey,headers:e.headers,signal:e.signal});return await e.vfs.writeFile(f,n),d.info(`Cone memory restructured`,{before:t.length,after:n.length}),{restructured:!0}}catch(e){return d.warn(`Cone memory restructure failed — leaving appended content in place`,{error:e instanceof Error?e.message:String(e)}),{restructured:!1,reason:`error`}}}function g(e){let t=``;for(let n of e){let e=n.role===`user`?`User`:`Assistant`,i=n.role===`user`?u(n.content):n.content;if(t+=`## ${e}\n${i}\n\n`,n.attachments?.length&&(t+=`Attachments:\n${n.attachments.map(e=>`- ${r(e)}`).join(`
17
- `)}\n\n`),n.toolCalls)for(let e of n.toolCalls)t+=`### Tool: ${e.name}\nInput: ${JSON.stringify(e.input,null,2)}\nResult: ${e.result??``}\n\n`}return t}var le=e({SESSIONS_INDEX_PATH:()=>x,enrichPendingSession:()=>J,freezeConeSession:()=>S,frozenSessionPath:()=>q,markSnapshotUnavailable:()=>Z,parseFrozenArchive:()=>Q,readSessionsIndex:()=>K}),_=s(`session-freezer`),ue=4,v=2048,y=40,b=`/sessions`,de=`${b}/attachments`,x=`/sessions/index.json`;async function S(e){let t=await I(e.sessionStore);if(!t||t.messages.length<ue)return _.info(`Skipping freeze: session below threshold or missing`,{messageCount:t?.messages.length??0}),null;let n=L(t.messages),r=e.mode??`full`,i=r===`full`&&!!(e.apiKey&&e.model);await w(e,n,i);let a=await T(e,n,i)||pe(t.messages);return await E(e,t,a,r,i?await fe(e,a):void 0)}async function fe(e,n){try{return C(await(e.pickIcon??(await t(async()=>{let{pickLucideIcon:e}=await import(`./quick-llm-Dg57FmQe.js`).then(e=>e.n);return{pickLucideIcon:e}},__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26]))).pickLucideIcon)({subject:`"${n}" — an archived chat session`})??void 0)}catch(e){_.warn(`Icon pick failed (freeze still proceeds)`,{error:e instanceof Error?e.message:String(e)});return}}function C(e){if(e)return l(e)?e:void 0}async function w(e,t,n){if(!n){_.info(`LLM unavailable — skipping memory extraction; freezing anyway`);return}let r=``;try{r=await a({messages:t,instruction:o,model:e.model,apiKey:e.apiKey,maxTokens:v,headers:e.headers})}catch(e){_.warn(`Memory extraction call failed (freeze still proceeds)`,{error:e instanceof Error?e.message:String(e)});return}if(!r.trim()||r.trim()===`NONE`){_.info(`Memory extraction returned no durable memories`);return}try{await G(e.vfs,r.trim(),`new-session`,{model:e.model,apiKey:e.apiKey,headers:e.headers}),_.info(`Memory extracted and appended on new-session`)}catch(e){_.warn(`Memory append failed`,{error:e instanceof Error?e.message:String(e)})}}async function T(e,t,n){if(!n)return``;try{return H(await a({messages:t,instruction:i,model:e.model,apiKey:e.apiKey,maxTokens:y,headers:e.headers}))}catch(e){return _.warn(`Title generation call failed (using heuristic)`,{error:e instanceof Error?e.message:String(e)}),``}}async function E(e,t,n,r,i){let a=new Date().toISOString(),o=crypto.randomUUID(),s=r===`quick`?`pending-${me()}.md`:`${a.replace(/[:.]/g,`-`)}-${U(n)}.md`,c=D(t.messages),l={filename:s,sessionId:o,title:n,frozenAt:a,messageCount:t.messages.length,...c??{},...i?{icon:i}:{},...r===`quick`?{pendingEnrichment:!0}:{}};try{await W(e.vfs,b);let r=await A(e.vfs,t.messages,s.replace(/\.md$/,``)),i={id:t.id,title:n,frozenAt:a,createdAt:t.createdAt,updatedAt:t.updatedAt,messageCount:t.messages.length,messages:r,...c??{}},o=V(i);return await e.vfs.writeFile(`${b}/${s}`,o),await he(e.vfs,l),await e.vfs.flush(),_.info(`Cone session frozen`,{filename:s,title:n,messageCount:t.messages.length}),{...l,archive:i}}catch(e){return _.warn(`Failed to write frozen session to VFS`,{error:e instanceof Error?e.message:String(e)}),null}}function D(e){let t={total:0,input:0,output:0,cacheRead:0,cacheWrite:0},n=new Map,r=!1;for(let i of e){if(i.role!==`assistant`)continue;let{model:e,usage:a}=i;if(!e||!a||!k(a))return null;let o=a.cost;r=!0,t.total+=o.total,t.input+=o.input,t.output+=o.output,t.cacheRead+=o.cacheRead,t.cacheWrite+=o.cacheWrite;let s=n.get(e)??{model:e,cost:0,turns:0,tokens:0};s.cost+=o.total,s.turns+=1,s.tokens+=a.input+a.output+a.cacheRead+a.cacheWrite,n.set(e,s)}return r?{cost:t,models:[...n.values()].sort((e,t)=>t.cost-e.cost)}:null}function O(e){return typeof e==`number`&&Number.isFinite(e)}function k(e){let{cost:t}=e;return[e.input,e.output,e.cacheRead,e.cacheWrite].every(O)&&[t.input,t.output,t.cacheRead,t.cacheWrite,t.total].every(O)}async function A(e,t,n){let r={vfs:e,archiveDir:`${de}/${n}`,copiedPaths:new Map,fileIndex:0},i=[];for(let e of t){if(!e.attachments?.some(N)){i.push(e);continue}let t=[];for(let n of e.attachments)t.push(await j(r,n));i.push({...e,attachments:t})}return i}async function j(e,t){if(!N(t))return t;let n=e.copiedPaths.get(t.path);if(n)return{...t,path:n};let r=await M(e.vfs,t.path);if(!r)return F(t);let i=t.name.replace(/[^A-Za-z0-9._-]+/g,`_`)||`attachment`,a=`${e.archiveDir}/${e.fileIndex++}-${i}`;return await W(e.vfs,e.archiveDir),await e.vfs.writeFile(a,r),e.copiedPaths.set(t.path,a),{...t,path:a}}async function M(e,t){try{if(!await P(e,t))return null;let n=await e.readFile(t,{encoding:`binary`});if(!(n instanceof Uint8Array))throw Error(`Expected binary attachment content at ${t}`);return n}catch{return null}}function N(e){return typeof e.path==`string`&&e.path.startsWith(`/tmp/`)&&e.data===void 0&&e.text===void 0}async function P(e,t){let n=t.split(`/`).slice(1);if(n.length<2||n[0]!==`tmp`||n.some(e=>!e||e===`.`||e===`..`))return!1;let r=`/`;for(let t=0;t<n.length;t+=1){let i=(await e.readDir(r)).find(e=>e.name===n[t]);if(!i)return!1;if(t===n.length-1)return i.type===`file`;if(i.type!==`directory`)return!1;r=r===`/`?`/${n[t]}`:`${r}/${n[t]}`}return!1}function F(e){let{path:t,...n}=e;return{...n,error:e.error??`Archived attachment file is missing or unsafe to preserve.`}}async function I(e){try{return await e.load(`session-cone`)}catch(e){return _.warn(`Failed to load session-cone`,{error:e instanceof Error?e.message:String(e)}),null}}function L(e){return e.map(e=>({role:e.role,content:[{type:`text`,text:e.content}],timestamp:e.timestamp}))}var R=`<!-- slicc:session-data
18
- `,z=`
19
- -->`;function B(e){return e.map(e=>{let t={id:e.id,role:e.role,content:e.content,timestamp:e.timestamp};return e.attachments?.length&&(t.attachments=e.attachments),e.toolCalls?.length&&(t.toolCalls=e.toolCalls.map(e=>({id:e.id,name:e.name,input:e.input,...e.result===void 0?{}:{result:e.result},...e.isError?{isError:e.isError}:{}}))),e.source&&(t.source=e.source),e.channel&&(t.channel=e.channel),t})}function V(e){let t=(e.cost?`cost: ${JSON.stringify(e.cost)}\n`:``)+(e.models?`models: ${JSON.stringify(e.models)}\n`:``),n=`---\nid: ${e.id}\ntitle: ${JSON.stringify(e.title)}\nfrozenAt: ${e.frozenAt}\ncreatedAt: ${e.createdAt}\nupdatedAt: ${e.updatedAt}\nmessageCount: ${e.messageCount}\n`+t+`---
20
-
21
- `,r=`${R}${JSON.stringify(B(e.messages)).replace(/-->/g,`-- >`)}${z}\n\n`,i=`# ${e.title}\n\n`;return n+r+i+g(e.messages)}function H(e){let t=e.trim();return t=t.replace(/^["'`]+|["'`]+$/g,``).trim(),t=t.replace(/\s+/g,` `),t.length>80&&(t=t.slice(0,80).trimEnd()),t}function pe(e){let t=e.find(e=>e.role===`user`);if(!t?.content)return`untitled-session`;let n=t.content.trim().replace(/\s+/g,` `);return n.length>60?`${n.slice(0,60)}…`:n||`untitled-session`}function U(e){return e.toLowerCase().replace(/[^a-z0-9]+/g,`-`).replace(/^-+|-+$/g,``).slice(0,48)||`session`}function me(){return`${Date.now().toString(36)}-${Math.random().toString(36).slice(2,6)}`}async function W(e,t){try{await e.mkdir(t,{recursive:!0})}catch{}}async function G(e,t,n,r){let i=`/workspace/CLAUDE.md`,a=``;try{let t=await e.readFile(i,{encoding:`utf-8`});a=typeof t==`string`?t:new TextDecoder().decode(t)}catch(t){if(!(t instanceof c)||t.code!==`ENOENT`)throw t;await W(e,`/workspace`)}let o=`## Auto-extracted (${new Date().toISOString().slice(0,10)}, ${n})`,s=`${a.length===0||a.endsWith(`
22
- `)?``:`
23
- `}\n${o}\n\n${t}\n`;await e.writeFile(i,a+s);try{await ce({vfs:e,model:r?.model,apiKey:r?.apiKey,headers:r?.headers,signal:r?.signal})}catch(e){_.warn(`Cone memory budget step threw (append already committed)`,{error:e instanceof Error?e.message:String(e)})}}async function he(e,t){let n=[];try{let t=await e.readFile(x,{encoding:`utf-8`}),r=typeof t==`string`?t:new TextDecoder().decode(t),i=JSON.parse(r);Array.isArray(i)&&(n=i)}catch{}let r=[t,...n.filter(e=>e.filename!==t.filename)];await e.writeFile(x,JSON.stringify(r,null,2))}async function K(e){try{let t=await e.readFile(x,{encoding:`utf-8`}),n=typeof t==`string`?t:new TextDecoder().decode(t),r=JSON.parse(n);return Array.isArray(r)?r:[]}catch{return[]}}function q(e){return`${b}/${e.filename}`}async function J(e,t,n){if(!t.pendingEnrichment)return null;let r=await _e(e,t);if(r===null)return null;let i=ve(t,r);if(i===null)return null;let a=await ye(t,i,n);if(a===null)return null;let o=await ge(n,a.newTitle);return await be(e,t,a.bullets,n),await Y(e,t,r,a.newTitle,o)}async function ge(e,t){if(e.pickIcon)try{return await C(await e.pickIcon({subject:`"${t}" — an archived chat session`})??void 0)}catch(e){_.warn(`Enrichment icon pick failed (continuing without icon)`,{error:e instanceof Error?e.message:String(e)});return}}async function _e(e,t){try{let n=await e.readFile(q(t),{encoding:`utf-8`});return typeof n==`string`?n:new TextDecoder().decode(n)}catch(e){return e?.code===`ENOENT`?_.info(`Pending archive missing — treating as already enriched`,{filename:t.filename}):_.warn(`Failed to read pending archive (entry stays pending)`,{filename:t.filename,error:e instanceof Error?e.message:String(e)}),null}}function ve(e,t){let n;try{n=Q(t).messages}catch(t){return _.warn(`Failed to parse pending archive — leaving entry intact`,{filename:e.filename,error:t instanceof Error?t.message:String(t)}),null}return n.length===0?(_.info(`Pending archive has no messages — skipping enrichment`,{filename:e.filename}),null):L(n)}async function ye(e,t,n){let r=``;try{r=await a({messages:t,instruction:o,model:n.model,apiKey:n.apiKey,maxTokens:v,headers:n.headers})}catch(t){return _.warn(`Enrichment memory call failed (entry stays pending)`,{filename:e.filename,error:t instanceof Error?t.message:String(t)}),null}let s=``;try{s=H(await a({messages:t,instruction:i,model:n.model,apiKey:n.apiKey,maxTokens:y,headers:n.headers}))}catch(t){return _.warn(`Enrichment title call failed (entry stays pending)`,{filename:e.filename,error:t instanceof Error?t.message:String(t)}),null}return s?{bullets:r,newTitle:s}:(_.info(`Enrichment title call returned empty — entry stays pending`,{filename:e.filename}),null)}async function be(e,t,n,r){let i=n.trim();if(!(!i||i===`NONE`))try{await G(e,i,`pending-enrichment`,{model:r.model,apiKey:r.apiKey,headers:r.headers})}catch(e){_.warn(`Enrichment memory append failed (continuing with title rewrite)`,{filename:t.filename,error:e instanceof Error?e.message:String(e)})}}async function Y(e,t,n,r,i){let a=q(t),o=xe(n,r),s=`${t.frozenAt.replace(/[:.]/g,`-`)}-${U(r)}.md`,c=`${b}/${s}`;try{await W(e,b),await e.writeFile(c,o)}catch(e){return _.warn(`Enrichment write failed (entry stays pending)`,{filename:t.filename,error:e instanceof Error?e.message:String(e)}),null}let l=i??t.icon,u={filename:s,title:r,frozenAt:t.frozenAt,messageCount:t.messageCount,...t.cost?{cost:t.cost}:{},...t.models?{models:t.models}:{},...t.sessionId?{sessionId:t.sessionId}:{},...l?{icon:l}:{}};try{await Se(e,t.filename,u)}catch(e){return _.warn(`Enrichment index update failed (entry may stay pending)`,{filename:t.filename,error:e instanceof Error?e.message:String(e)}),null}if(c!==a)try{await e.rm(a)}catch(e){_.info(`Stale pending archive cleanup failed (harmless)`,{oldPath:a,error:e instanceof Error?e.message:String(e)})}try{await e.flush()}catch{}return _.info(`Pending session enriched`,{oldFilename:t.filename,newFilename:s,title:r}),u}function xe(e,t){let n=e.match(/^---\n([\s\S]*?)\n---\n([\s\S]*)$/);if(!n)return e;let r=n[1].replace(/^title:\s*.+$/m,`title: ${JSON.stringify(t)}`),i=n[2];return i=i.replace(/^#\s+[^\n]*$/m,`# ${t}`),`---\n${r}\n---\n${i}`}var X=Promise.resolve();async function Se(e,t,n){let r=async()=>{let r=[];try{let t=await e.readFile(x,{encoding:`utf-8`}),n=typeof t==`string`?t:new TextDecoder().decode(t),i=JSON.parse(n);Array.isArray(i)&&(r=i)}catch{}let i=r.findIndex(e=>e.filename===t),a;i===-1?a=[n,...r.filter(e=>e.filename!==n.filename)]:(a=r.slice(),a[i]=n,a=a.filter((e,t)=>t===i||e.filename!==n.filename)),await e.writeFile(x,JSON.stringify(a,null,2))},i=X.then(r,r);return X=i.then(()=>void 0,()=>void 0),i}async function Z(e,t){let n=async()=>{let n=[];try{let t=await e.readFile(x,{encoding:`utf-8`}),r=typeof t==`string`?t:new TextDecoder().decode(t),i=JSON.parse(r);Array.isArray(i)&&(n=i)}catch{return}if(!n.find(e=>e.filename===t))return;let r=n.map(e=>e.filename===t?{...e,completeSnapshotUnavailable:!0}:e);await e.writeFile(x,JSON.stringify(r,null,2))},r=X.then(n,n);return X=r.then(()=>void 0,()=>void 0),r}function Q(e){let t=e,n=`Untitled`,r={},i=t.match(/^---\n([\s\S]*?)\n---\n+/);if(i){t=t.slice(i[0].length);let e=$(i[1],`cost`),a=$(i[1],`models`);e&&(r.cost=e),a&&(r.models=a);let o=i[1].match(/^title:\s*(.+?)\s*$/m);if(o){let e=o[1].trim();if(e.startsWith(`"`))try{let t=JSON.parse(e);typeof t==`string`&&(n=t)}catch{n=e.replace(/^"|"$/g,``)}else n=e}}let a=t.match(/<!-- slicc:session-data\n([\s\S]*?)\n-->\n*/);if(a){try{let e=a[1].replace(/-- >/g,`-->`),t=JSON.parse(e);if(Array.isArray(t))return{title:n,messages:t,...r}}catch{}t=t.replace(/<!-- slicc:session-data\n[\s\S]*?\n-->\n*/,``)}return t=t.replace(/^#\s+[^\n]*\n+/,``),{title:n,messages:Ce(t),...r}}function $(e,t){let n=RegExp(`^${t}:\\s*(.+?)\\s*$`,`m`).exec(e)?.[1];if(n)try{return JSON.parse(n)}catch{return}}function Ce(e){let t=[],n=/^## (User|Assistant)\s*\n/gm,r=[],i;for(;(i=n.exec(e))!==null;)r.push({role:i[1]===`User`?`user`:`assistant`,start:i.index,bodyStart:i.index+i[0].length});for(let n=0;n<r.length;n++){let i=n+1<r.length?r[n+1].start:e.length,a=e.slice(r[n].bodyStart,i).trim();t.push({id:`frozen-${n}`,role:r[n].role,content:a,timestamp:0})}return t}export{Z as a,le as c,q as i,g as l,J as n,Q as o,S as r,K as s,x as t};
@@ -1,15 +0,0 @@
1
- import{n as e}from"./rolldown-runtime-aKtaBQYM.js";import{t}from"./logger-LESFN7Hj.js";import{t as n}from"./compat-BHfpuQ4D.js";import"./context-compaction-DDE4L-Sj.js";const r=t(`cone-memory-budget`),i=`/workspace/CLAUDE.md`,a=/^## Auto-extracted/m;function o(e){return Math.round(4e3+2e3*Math.log2((Number.isFinite(e)&&e>=0?e:0)+2))}function s(e){let t=a.exec(e);if(!t)return{header:e,autoExtracted:``};let n=t.index;return{header:e.slice(0,n),autoExtracted:e.slice(n)}}async function c(e){try{let t=await e.readFile(`/sessions/index.json`,{encoding:`utf-8`}),n=typeof t==`string`?t:new TextDecoder().decode(t),r=JSON.parse(n);return Array.isArray(r)?r.length:0}catch{return 0}}async function l(e){let{header:t,autoExtracted:r}=s(e.currentContent);if(!r.trim())return e.currentContent;let i=`You are a memory consolidation assistant. You are given a markdown file's "auto-extracted" section — a list of memory bullets accumulated across sessions of an AI coding assistant. Your job is to rewrite that section as a tighter, deduplicated set of durable memories that fits well within ${e.budget} characters.
2
-
3
- <auto-extracted>
4
- ${r}
5
- </auto-extracted>`,a={role:`user`,content:[{type:`text`,text:`Consolidate the auto-extracted memory bullets below into a single tighter set of durable memories.
6
-
7
- Rules:
8
- - Output ONLY a single \`## Auto-extracted (consolidated)\` heading followed by markdown bullets.
9
- - One fact per bullet. Drop duplicates and superseded facts. Keep the most recent / specific phrasing.
10
- - Preserve concrete identifiers (file paths, URLs, IDs, names) verbatim.
11
- - Be terse. Aim well under the original size.
12
- - Do NOT add preamble, commentary, or any heading other than the single consolidated one.`}],timestamp:Date.now()},o=await n(e.model,{systemPrompt:i,messages:[a]},{apiKey:e.apiKey,maxTokens:4096,headers:e.headers,signal:e.signal});if(o.stopReason===`error`)throw Error(`Restructure call failed: ${o.errorMessage||`Unknown error`}`);let c=o.content.filter(e=>e.type===`text`).map(e=>e.text).join(`
13
- `).trim();if(!c)throw Error(`Restructure call returned empty content`);return`${t}${t.length===0||t.endsWith(`
14
- `)?``:`
15
- `}${c}\n`}async function u(e){if(!e.model||!e.apiKey)return{restructured:!1,reason:`no-llm`};let t=``;try{let n=await e.vfs.readFile(i,{encoding:`utf-8`});t=typeof n==`string`?n:new TextDecoder().decode(n)}catch{return{restructured:!1,reason:`missing-file`}}let n=await c(e.vfs),a=o(n),s=a*1.25;if(t.length<=s)return{restructured:!1,reason:`under-threshold`};r.info(`Cone memory over threshold — restructuring`,{size:t.length,budget:a,threshold:s,sessionCount:n});try{let n=await l({currentContent:t,budget:a,model:e.model,apiKey:e.apiKey,headers:e.headers,signal:e.signal});return await e.vfs.writeFile(i,n),r.info(`Cone memory restructured`,{before:t.length,after:n.length}),{restructured:!0}}catch(e){return r.warn(`Cone memory restructure failed — leaving appended content in place`,{error:e instanceof Error?e.message:String(e)}),{restructured:!1,reason:`error`}}}var d=e({SESSIONS_INDEX_PATH:()=>f,parseFrozenArchive:()=>m,readSessionsIndex:()=>p});t(`session-freezer`);const f=`/sessions/index.json`;async function p(e){try{let t=await e.readFile(f,{encoding:`utf-8`}),n=typeof t==`string`?t:new TextDecoder().decode(t),r=JSON.parse(n);return Array.isArray(r)?r:[]}catch{return[]}}Promise.resolve();function m(e){let t=e,n=`Untitled`,r={},i=t.match(/^---\n([\s\S]*?)\n---\n+/);if(i){t=t.slice(i[0].length);let e=h(i[1],`cost`),a=h(i[1],`models`);e&&(r.cost=e),a&&(r.models=a);let o=i[1].match(/^title:\s*(.+?)\s*$/m);if(o){let e=o[1].trim();if(e.startsWith(`"`))try{let t=JSON.parse(e);typeof t==`string`&&(n=t)}catch{n=e.replace(/^"|"$/g,``)}else n=e}}let a=t.match(/<!-- slicc:session-data\n([\s\S]*?)\n-->\n*/);if(a){try{let e=a[1].replace(/-- >/g,`-->`),t=JSON.parse(e);if(Array.isArray(t))return{title:n,messages:t,...r}}catch{}t=t.replace(/<!-- slicc:session-data\n[\s\S]*?\n-->\n*/,``)}return t=t.replace(/^#\s+[^\n]*\n+/,``),{title:n,messages:g(t),...r}}function h(e,t){let n=RegExp(`^${t}:\\s*(.+?)\\s*$`,`m`).exec(e)?.[1];if(n)try{return JSON.parse(n)}catch{return}}function g(e){let t=[],n=/^## (User|Assistant)\s*\n/gm,r=[],i;for(;(i=n.exec(e))!==null;)r.push({role:i[1]===`User`?`user`:`assistant`,start:i.index,bodyStart:i.index+i[0].length});for(let n=0;n<r.length;n++){let i=n+1<r.length?r[n+1].start:e.length,a=e.slice(r[n].bodyStart,i).trim();t.push({id:`frozen-${n}`,role:r[n].role,content:a,timestamp:0})}return t}export{u as a,i,p as n,d as r,m as t};