@seqyuan/annovibe 0.8.145 → 0.8.147
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.next/BUILD_ID +1 -1
- package/.next/app-path-routes-manifest.json +11 -11
- package/.next/build-manifest.json +2 -2
- package/.next/prerender-manifest.json +4 -4
- package/.next/required-server-files.js +1 -1
- package/.next/required-server-files.json +1 -1
- package/.next/server/app/_global-error/page_client-reference-manifest.js +1 -1
- package/.next/server/app/_global-error.html +1 -1
- package/.next/server/app/_global-error.rsc +1 -1
- package/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
- package/.next/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +1 -1
- package/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
- package/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
- package/.next/server/app/_not-found.html +1 -1
- package/.next/server/app/_not-found.rsc +2 -2
- package/.next/server/app/_not-found.segments/_full.segment.rsc +2 -2
- package/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +2 -2
- package/.next/server/app/_not-found.segments/_tree.segment.rsc +2 -2
- package/.next/server/app/api/agent/runtime/route.js +1 -1
- package/.next/server/app/api/internal/runtime/route.js +1 -1
- package/.next/server/app/api/sessions/[id]/context/route.js +1 -1
- package/.next/server/app/api/sessions/[id]/route.js +1 -1
- package/.next/server/app/api/sessions/[id]/shadowed/route.js +1 -1
- package/.next/server/app/api/settings/route.js +1 -1
- package/.next/server/app/api/version/route.js +1 -1
- package/.next/server/app/index.html +1 -1
- package/.next/server/app/index.rsc +6 -6
- package/.next/server/app/index.segments/__PAGE__.segment.rsc +6 -6
- package/.next/server/app/index.segments/_full.segment.rsc +6 -6
- package/.next/server/app/index.segments/_tree.segment.rsc +2 -2
- package/.next/server/app/login/page_client-reference-manifest.js +1 -1
- package/.next/server/app/login.html +1 -1
- package/.next/server/app/login.rsc +2 -2
- package/.next/server/app/login.segments/_full.segment.rsc +2 -2
- package/.next/server/app/login.segments/_tree.segment.rsc +2 -2
- package/.next/server/app/login.segments/login/__PAGE__.segment.rsc +2 -2
- package/.next/server/app/page.js +5 -5
- package/.next/server/app/page_client-reference-manifest.js +1 -1
- package/.next/server/app/smoke/page.js +2 -2
- package/.next/server/app/smoke/page_client-reference-manifest.js +1 -1
- package/.next/server/app/smoke/session-stream/page.js +1 -1
- package/.next/server/app/smoke/session-stream/page_client-reference-manifest.js +1 -1
- package/.next/server/app/smoke/session-stream.html +1 -1
- package/.next/server/app/smoke/session-stream.rsc +6 -6
- package/.next/server/app/smoke/session-stream.segments/_full.segment.rsc +6 -6
- package/.next/server/app/smoke/session-stream.segments/_tree.segment.rsc +2 -2
- package/.next/server/app/smoke/session-stream.segments/smoke/session-stream/__PAGE__.segment.rsc +6 -6
- package/.next/server/app/smoke.html +3 -51
- package/.next/server/app/smoke.rsc +5 -5
- package/.next/server/app/smoke.segments/_full.segment.rsc +5 -5
- package/.next/server/app/smoke.segments/_tree.segment.rsc +2 -2
- package/.next/server/app/smoke.segments/smoke/__PAGE__.segment.rsc +5 -5
- package/.next/server/app-paths-manifest.json +11 -11
- package/.next/server/chunks/3048.js +264 -0
- package/.next/server/chunks/42.js +1 -1
- package/.next/server/chunks/6429.js +1 -1
- package/.next/server/chunks/7180.js +22 -0
- package/.next/server/middleware-build-manifest.js +1 -1
- package/.next/server/middleware.js +4 -4
- package/.next/server/pages/404.html +1 -1
- package/.next/server/pages/500.html +1 -1
- package/.next/server/preview-props.json +3 -3
- package/.next/server/server-reference-manifest.json +1 -1
- package/.next/static/chunks/3449-773a78c2b25dadd5.js +260 -0
- package/.next/static/chunks/8477-e7cabb053e63e504.js +22 -0
- package/.next/static/chunks/app/page-1ea50af93da7d407.js +22 -0
- package/.next/static/chunks/app/smoke/{page-7226fa31540df8a8.js → page-bad59997a18b33e8.js} +2 -2
- package/.next/static/chunks/app/smoke/session-stream/{page-ed9bc29486c9e75d.js → page-9f43d950df17f1d3.js} +2 -2
- package/.next/static/css/be5cdd302b05dc22.css +1 -0
- package/README.md +1 -1
- package/package.json +1 -1
- package/.next/server/chunks/4801.js +0 -22
- package/.next/server/chunks/8305.js +0 -264
- package/.next/static/chunks/6630-afa0ca63437a28c6.js +0 -22
- package/.next/static/chunks/9867-9e590871a9f2b1b9.js +0 -260
- package/.next/static/chunks/app/page-46021c793e1b09a3.js +0 -22
- package/.next/static/css/d68ecb6695873888.css +0 -1
- /package/.next/static/{Ag1v_S9DTKxBH3_0fOnfG → 33lxcaITML1UfRwyCMnDs}/_buildManifest.js +0 -0
- /package/.next/static/{Ag1v_S9DTKxBH3_0fOnfG → 33lxcaITML1UfRwyCMnDs}/_ssgManifest.js +0 -0
|
@@ -36,7 +36,7 @@ for (.name in sort(ls(envir=.GlobalEnv))) {
|
|
|
36
36
|
if (!is.null(.names) && length(.names) > 0) .attrs <- c(.attrs, paste0("names=", paste(head(.names, 20), collapse=",")))
|
|
37
37
|
cat(.name, "\\t", .class, "\\t", .shape, "\\t", paste(.attrs, collapse=" ; "), "\\n", sep="")
|
|
38
38
|
}
|
|
39
|
-
cat("WORKBENCH_INSPECT_END\\n")`,title:"Inspect live kernel state",timeoutMs:b.timeoutMs??15e3,signal:c});return{content:[{type:"text",text:function(a){let b=r(a.stdout),c=[`kernel_plot_inspect ${a.status}`,`run_id: ${a.runId}`,`runtime: ${a.runtime}`,`objects: ${b.length}`];for(let a of b.slice(0,80))c.push(`- ${a.name}: ${a.type}${a.shape?` (${a.shape})`:""}${a.attrs?` — ${a.attrs}`:""}`);let d=o(a.stderr,1200).trim();return d&&c.push("stderr:",d),a.error&&c.push(`error: ${a.error}`),c.join("\n")}(g)}],details:{schema:"kernel-plot.inspect.v1",kind:"inspect",run:{runId:g.runId,status:g.status,language:g.language,runtime:g.runtime,title:g.title},objects:r(g.stdout),stderrPreview:o(g.stderr),error:g.error}}}})),a.registerTool((0,f.defineTool)({name:"kernel_plot_stop",label:"Kernel Stop",description:"Stop the current Pi session's warm kernel for one language or all languages.",promptSnippet:"Stop warm R/Python kernels and release their memory.",promptGuidelines:t,executionMode:"sequential",parameters:e.Type.Object({language:e.Type.Optional(e.Type.Union([e.Type.Literal("python"),e.Type.Literal("r")]))}),async execute(a,b,c,d,e){let f=await l(),g=m(e);return await f.stopSession({ownerId:g,language:b.language}),{content:[{type:"text",text:`kernel_plot_stop stopped ${b.language??"all languages"}`}],details:{schema:"kernel-plot.result.v1",kind:"stop",stopped:{ownerId:g,language:b.language},artifacts:[],nextAction:"Use kernel_plot_run to start a fresh warm kernel when needed."}}}})),a.registerTool((0,f.defineTool)({name:"kernel_plot_artifacts",label:"Kernel Artifacts",description:"List recent archived kernel artifacts for the current Pi session.",promptSnippet:"List recent R/Python artifact paths for this session.",promptGuidelines:t,parameters:e.Type.Object({limit:e.Type.Optional(e.Type.Number({description:"Maximum number of recent artifacts to list."}))}),async execute(a,b,c,d,e){let f=await l(),g=m(e),h=await f.listArtifacts({cwd:e.cwd,ownerId:g,limit:b.limit});return{content:[{type:"text",text:["kernel_plot_artifacts",...p(h)].join("\n")}],details:{schema:"kernel-plot.result.v1",kind:"artifacts",ownerId:g,artifacts:h,nextAction:"Open or inspect the listed artifact paths, or continue plotting with kernel_plot_run."}}}})),a.on("session_shutdown",async(a,b)=>{let c=await l();await c.stopSession({ownerId:m(b)}).catch(a=>{b.ui.notify(`kernel plot cleanup failed: ${a instanceof Error?a.message:String(a)}`,"warning")})})}d()}catch(a){d(a)}})},7048:(a,b,c)=>{"use strict";c.d(b,{Y:()=>j});var d=c(29021),e=c(21820),f=c(33873);let g="pi-subagents";function h(a){try{return JSON.parse((0,d.readFileSync)(a,"utf-8"))}catch{return null}}function i(a){return"string"==typeof a?a:a&&"object"==typeof a?"string"==typeof a.source?a.source:"string"==typeof a.name?a.name:"string"==typeof a.package?a.package:null:null}function j(a=process.env.PI_CODING_AGENT_DIR??(0,f.join)((0,e.homedir)(),".pi","agent")){let b=(0,f.join)(a,"npm","node_modules",g),c=(0,f.join)(b,"package.json"),k=h(c),l=(0,d.existsSync)(c),m=h((0,f.join)(a,"settings.json")),n=(Array.isArray(m?.packages)?m.packages:[]).map(i).some(a=>a===g||a===`npm:${g}`||a?.endsWith(`/${g}`));return{installed:l,configured:n,ready:l&&n,packageName:g,packagePath:b,version:"string"==typeof k?.version?k.version:void 0,installCommand:"pi install npm:pi-subagents"}}},9774:(a,b,c)=>{"use strict";c.a(a,async(a,d)=>{try{c.d(b,{cV:()=>k,p6:()=>l});var e=c(29021),f=c(33873),g=c(75430),h=a([g]);g=(h.then?(await h)():h)[0];let m={generativeUI:!0,plotIdleTimeoutMs:1728e5,forkEnabled:!0,forkSuggestTokens:18e4,forkAutoTokens:4e5,forkMinMessages:20};function i(){return(0,f.join)((0,g.getAgentDir)(),"annovibe-settings.json")}function j(a){if(!a||"object"!=typeof a)return{...m};let b="number"==typeof a.plotIdleTimeoutMs&&Number.isFinite(a.plotIdleTimeoutMs)&&a.plotIdleTimeoutMs>=0?Math.min(Math.round(a.plotIdleTimeoutMs),2592e6):m.plotIdleTimeoutMs;return{generativeUI:"boolean"==typeof a.generativeUI?a.generativeUI:m.generativeUI,plotIdleTimeoutMs:b,forkEnabled
|
|
39
|
+
cat("WORKBENCH_INSPECT_END\\n")`,title:"Inspect live kernel state",timeoutMs:b.timeoutMs??15e3,signal:c});return{content:[{type:"text",text:function(a){let b=r(a.stdout),c=[`kernel_plot_inspect ${a.status}`,`run_id: ${a.runId}`,`runtime: ${a.runtime}`,`objects: ${b.length}`];for(let a of b.slice(0,80))c.push(`- ${a.name}: ${a.type}${a.shape?` (${a.shape})`:""}${a.attrs?` — ${a.attrs}`:""}`);let d=o(a.stderr,1200).trim();return d&&c.push("stderr:",d),a.error&&c.push(`error: ${a.error}`),c.join("\n")}(g)}],details:{schema:"kernel-plot.inspect.v1",kind:"inspect",run:{runId:g.runId,status:g.status,language:g.language,runtime:g.runtime,title:g.title},objects:r(g.stdout),stderrPreview:o(g.stderr),error:g.error}}}})),a.registerTool((0,f.defineTool)({name:"kernel_plot_stop",label:"Kernel Stop",description:"Stop the current Pi session's warm kernel for one language or all languages.",promptSnippet:"Stop warm R/Python kernels and release their memory.",promptGuidelines:t,executionMode:"sequential",parameters:e.Type.Object({language:e.Type.Optional(e.Type.Union([e.Type.Literal("python"),e.Type.Literal("r")]))}),async execute(a,b,c,d,e){let f=await l(),g=m(e);return await f.stopSession({ownerId:g,language:b.language}),{content:[{type:"text",text:`kernel_plot_stop stopped ${b.language??"all languages"}`}],details:{schema:"kernel-plot.result.v1",kind:"stop",stopped:{ownerId:g,language:b.language},artifacts:[],nextAction:"Use kernel_plot_run to start a fresh warm kernel when needed."}}}})),a.registerTool((0,f.defineTool)({name:"kernel_plot_artifacts",label:"Kernel Artifacts",description:"List recent archived kernel artifacts for the current Pi session.",promptSnippet:"List recent R/Python artifact paths for this session.",promptGuidelines:t,parameters:e.Type.Object({limit:e.Type.Optional(e.Type.Number({description:"Maximum number of recent artifacts to list."}))}),async execute(a,b,c,d,e){let f=await l(),g=m(e),h=await f.listArtifacts({cwd:e.cwd,ownerId:g,limit:b.limit});return{content:[{type:"text",text:["kernel_plot_artifacts",...p(h)].join("\n")}],details:{schema:"kernel-plot.result.v1",kind:"artifacts",ownerId:g,artifacts:h,nextAction:"Open or inspect the listed artifact paths, or continue plotting with kernel_plot_run."}}}})),a.on("session_shutdown",async(a,b)=>{let c=await l();await c.stopSession({ownerId:m(b)}).catch(a=>{b.ui.notify(`kernel plot cleanup failed: ${a instanceof Error?a.message:String(a)}`,"warning")})})}d()}catch(a){d(a)}})},7048:(a,b,c)=>{"use strict";c.d(b,{Y:()=>j});var d=c(29021),e=c(21820),f=c(33873);let g="pi-subagents";function h(a){try{return JSON.parse((0,d.readFileSync)(a,"utf-8"))}catch{return null}}function i(a){return"string"==typeof a?a:a&&"object"==typeof a?"string"==typeof a.source?a.source:"string"==typeof a.name?a.name:"string"==typeof a.package?a.package:null:null}function j(a=process.env.PI_CODING_AGENT_DIR??(0,f.join)((0,e.homedir)(),".pi","agent")){let b=(0,f.join)(a,"npm","node_modules",g),c=(0,f.join)(b,"package.json"),k=h(c),l=(0,d.existsSync)(c),m=h((0,f.join)(a,"settings.json")),n=(Array.isArray(m?.packages)?m.packages:[]).map(i).some(a=>a===g||a===`npm:${g}`||a?.endsWith(`/${g}`));return{installed:l,configured:n,ready:l&&n,packageName:g,packagePath:b,version:"string"==typeof k?.version?k.version:void 0,installCommand:"pi install npm:pi-subagents"}}},9774:(a,b,c)=>{"use strict";c.a(a,async(a,d)=>{try{c.d(b,{cV:()=>k,p6:()=>l});var e=c(29021),f=c(33873),g=c(75430),h=a([g]);g=(h.then?(await h)():h)[0];let m={generativeUI:!0,plotIdleTimeoutMs:1728e5,forkEnabled:!1,forkSuggestEnabled:!0,forkSuggestTokens:18e4,forkAutoTokens:4e5,forkMinMessages:20,forkSettingsVersion:1};function i(){return(0,f.join)((0,g.getAgentDir)(),"annovibe-settings.json")}function j(a){if(!a||"object"!=typeof a)return{...m};let b="number"==typeof a.plotIdleTimeoutMs&&Number.isFinite(a.plotIdleTimeoutMs)&&a.plotIdleTimeoutMs>=0?Math.min(Math.round(a.plotIdleTimeoutMs),2592e6):m.plotIdleTimeoutMs,c=1===a.forkSettingsVersion;return{generativeUI:"boolean"==typeof a.generativeUI?a.generativeUI:m.generativeUI,plotIdleTimeoutMs:b,forkEnabled:!!c&&"boolean"==typeof a.forkEnabled&&a.forkEnabled,forkSuggestEnabled:"boolean"!=typeof a.forkSuggestEnabled||a.forkSuggestEnabled,forkSuggestTokens:"number"==typeof a.forkSuggestTokens&&Number.isFinite(a.forkSuggestTokens)&&a.forkSuggestTokens>=1e4?Math.min(Math.round(a.forkSuggestTokens),9e5):m.forkSuggestTokens,forkAutoTokens:"number"==typeof a.forkAutoTokens&&Number.isFinite(a.forkAutoTokens)&&a.forkAutoTokens>=2e4?Math.min(Math.round(a.forkAutoTokens),2e6):m.forkAutoTokens,forkMinMessages:"number"==typeof a.forkMinMessages&&Number.isFinite(a.forkMinMessages)&&a.forkMinMessages>=5?Math.min(Math.round(a.forkMinMessages),500):m.forkMinMessages,forkSettingsVersion:1}}function k(){let a=i(),b=(0,e.existsSync)(a)?a:(0,f.join)((0,g.getAgentDir)(),"pidex-settings.json");if(!(0,e.existsSync)(b))return{...m};try{return j(JSON.parse((0,e.readFileSync)(b,"utf8")))}catch{return{...m}}}function l(a){let b=j({...k(),...a}),c=i(),d=(0,f.dirname)(c);return(0,e.existsSync)(d)||(0,e.mkdirSync)(d,{recursive:!0}),(0,e.writeFileSync)(c,JSON.stringify(b,null,2),"utf8"),b}d()}catch(a){d(a)}})},9805:(a,b,c)=>{"use strict";c.d(b,{FE:()=>i,J:()=>h,zN:()=>j});let d='<widget-capability>\nYou can create interactive visualizations using the `show-widget` code fence.\n\nUse `show-widget` by default when visual output is the primary answer. This includes charts, diagrams, flowcharts, dashboards, UI prototypes, mockups, SVG illustrations, icons, logos, infographics, timelines, hierarchies, comparison views, and visual explanations.\n\nFor diagrams, flowcharts, architecture maps, sequence-style explanations, and Markdown-to-diagram requests, prefer `show-widget` with SVG/HTML over Mermaid. Widgets stream more reliably in this UI. Use Mermaid only when the user explicitly asks for Mermaid source, raw Mermaid, raw Markdown, or a saved Mermaid/Markdown file.\n\nFormat:\n```show-widget\n{"title":"Human-readable title","widget_code":"<raw HTML/SVG string>"}\n```\n\nDetailed specs:\nWhen a `<widget-guidelines>` block is present, follow it. It contains the module-specific design rules for the current request.\n\nRequired rules:\n1. `widget_code` is a JSON string: escape quotes and newlines. Always close the JSON object and fence.\n - ✅ Correct: {"title":"T","widget_code":"<div>\\n <p>hi</p>\\n</div>"}\n - ❌ Wrong — raw newlines inside the string are invalid JSON (write \\n instead):\n {"title":"T","widget_code":"<div>\n <p>hi</p>\n </div>"}\n - ❌ Wrong — bare quotes inside HTML/SVG text must be escaped as \\":\n {"title":"T","widget_code":"<svg><text>say "hi"</text></svg>"}\n - ❌ Wrong — only the keys `title` and `widget_code` are allowed; never add extra keys like `widget_code2`, and always put a comma between members:\n {"title":"T","widget_code":"<svg/>" "widget_code2":""}\n - The entire object must be valid JSON, ending with a closing `}` before the closing fence. If the widget is large, write compact one-line JSON rather than pretty-printing with raw newlines.\n2. Do not include DOCTYPE, html, head, body, iframe, object, embed, form, link, base, or meta tags.\n3. Keep outer backgrounds transparent. The host supplies theme variables.\n4. Use a single concise widget per fence. For multiple widgets, interleave prose and use a separate `show-widget` fence for each widget.\n5. Streaming order: SVG puts `<defs>` before visible shapes; HTML uses `<style>`, then visible markup, then `<script>` last.\n6. Prefer responsive SVG for static visuals and small HTML widgets for controls.\n7. SVG widgets use `<svg width="100%" viewBox="0 0 680 H">` and keep all content inside the viewBox.\n8. Interactive controls must visibly update the output. For Chart.js, call `chart.update()` after changes.\n9. Clickable drill-down actions call `window.__widgetSendMessage("short request")`.\n10. Cross-widget filters publish with `window.__widgetPublish("topic", { key: "value" })`; other widgets listen for `widget-filter`.\n11. Allowed CDN hosts: `cdnjs.cloudflare.com`, `cdn.jsdelivr.net`, `unpkg.com`, `esm.sh`.\n12. CDN scripts must use an `onload` initializer plus an `if (window.Lib) init();` fallback.\n13. Use `min-height` instead of fixed outer `height` to prevent clipping.\n14. Title should be human-readable in the user\'s language.\n15. Put explanatory prose outside the code fence.\n16. Do not output raw ```svg, ```html, or plain Mermaid for visual answers unless the user explicitly asks for source code, raw Markdown, raw Mermaid, or a saved file.\n17. Do not convert Markdown outlines into Mermaid by default. Render them as a `show-widget` diagram unless Mermaid/source text is explicitly requested.\n</widget-capability>',e=/\n?\s*<widget-capability>[\s\S]*?<\/widget-capability>\s*/g,f=/\n?\s*<visualization_harness>[\s\S]*?<\/visualization_harness>\s*/g,g=/\n?\s*<widget-guidelines\b[^>]*>[\s\S]*?<\/widget-guidelines>\s*/g;function h(a){let b=a.toLowerCase();return b.includes("show-widget")&&(b.includes("# visualization harness")||b.includes("## when to visualize")||b.includes("widget format"))}function i(a){return a.replace(e,"\n").replace(f,"\n").replace(g,"\n").replace(/\n{3,}/g,"\n\n").trim()}function j(a){return a.includes("<widget-capability>")?a:a.trim()?`${a.trimEnd()}
|
|
40
40
|
|
|
41
41
|
${d}`:d}},27348:(a,b,c)=>{"use strict";c.d(b,{WO:()=>B});let d=["interactive","chart","mockup","art","diagram"],e=/\n?\s*<widget-guidelines\b[^>]*>[\s\S]*?<\/widget-guidelines>\s*/g,f="## Core design system\n\n### When to use widgets\n- Use `show-widget` by default when visual output is the primary answer.\n- This includes charts, diagrams, flowcharts, timelines, dashboards, UI prototypes, mockups, SVG illustrations, icons, logos, infographics, hierarchy views, comparisons, and visual explanations.\n- Do not output raw ```svg, ```html, or plain Mermaid for visual answers unless the user explicitly asks for source code, raw Markdown, raw Mermaid, or a saved file.\n- For diagrams, flowcharts, architecture maps, sequence-style explanations, and Markdown-to-diagram requests, prefer `show-widget` with SVG/HTML over Mermaid because widgets stream more reliably in this UI.\n- Put explanatory prose outside the code fence. The fence contains exactly one JSON object.\n\n### Format rules\n- `widget_code` is a JSON string: escape quotes and newlines, close the JSON object, then close the fence.\n- Do not include DOCTYPE, html, head, body, iframe, object, embed, form, link, base, or meta tags.\n- Keep outer backgrounds transparent. Use host variables: `--bg`, `--bg-panel`, `--bg-hover`, `--bg-selected`, `--border`, `--text`, `--text-muted`, `--text-dim`, `--accent`, `--accent-hover`.\n- CodePilot-compatible variables are also available: `--color-background-primary`, `--color-background-secondary`, `--color-background-tertiary`, `--color-text-primary`, `--color-text-secondary`, `--color-text-tertiary`, `--color-border-tertiary`, `--color-border-secondary`, `--color-border-primary`, `--font-sans`, `--font-mono`.\n- HTML widgets should stream in this order: `<style>`, visible markup, `<script>`. SVG widgets should put `<defs>` before visible shapes.\n- Use `min-height` instead of fixed outer `height`; avoid bottom clipping at chat widths.\n- Use readable text: no font smaller than 11px, no negative letter spacing, no text overlap.\n\n### Visual style\n- The widget should feel native to chat, not like a foreign embed.\n- Use flat, solid fills with clear borders. Avoid decorative gradients, shadows, blur, glow, neon, and busy backgrounds.\n- Use 2-3 color ramps per widget and gray/slate for structure.\n- Prefer the visualization type that best fits the content. Do not default to one type for every request.\n- Title should be human-readable in the user's language.",g=`## Color and layout
|
|
42
42
|
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
"use strict";exports.id=7180,exports.ids=[7180],exports.modules={29947:(a,b,c)=>{c.d(b,{ES:()=>l,IB:()=>m,SN:()=>e,tE:()=>n});let d="subagent",e=["retain","recall","reflect"],f=[],g=["read","bash","edit","write"],h=["bash","read","edit","write","grep","find","ls"],i=[...h,"kernel_plot_run","kernel_plot_inspect","kernel_plot_stop","kernel_plot_artifacts"],j=[...h,d];function k(a){return[...a].sort().join(",")}function l(a){let b=a.filter(a=>a.active).map(a=>a.name),c=b.filter(a=>!e.includes(a)),f=k(b),l=k(c);return""===f?"none":f===k(g)?"default":f===k(h)?"full":f===k(i)?"workbench":f===k(j)?"agent":""===l?"none":l===k(g)?"default":l===k(h)?"full":l===k(i)?"workbench":l===k(j)||b.includes(d)?"agent":"default"}function m(a){return e.filter(b=>a.some(a=>a.active&&a.name===b))}function n(a,b){return[...new Set([...function(a){switch(a){case"none":return f;case"default":return g;case"workbench":return i;case"agent":return j;default:return h}}(a),...b])]}},77180:(a,b,c)=>{c.d(b,{T:()=>ab});var d=c(67484);function e(a){if("assistant"!==a.role)return a;let b=a.content;if(!Array.isArray(b))return a;let c=b.map(a=>("object"!=typeof a||null===a||Array.isArray(a)||"toolCall"!==a.type?null:{type:"toolCall",toolCallId:"string"==typeof a.toolCallId?a.toolCallId:"string"==typeof a.id?a.id:"",toolName:"string"==typeof a.toolName?a.toolName:"string"==typeof a.name?a.name:"",input:"object"!=typeof a.input||null===a.input||Array.isArray(a.input)?"object"!=typeof a.arguments||null===a.arguments||Array.isArray(a.arguments)?{}:a.arguments:a.input})??a);return{...a,content:c}}let f={isStreaming:!1,streamingMessage:null};function g(){return{role:"assistant",content:[],model:"",provider:"",timestamp:Date.now()}}function h(a,b,c){if(!Number.isInteger(b)||void 0===b||b<0)return a;let d=a.streamingMessage??g(),e=[...d.content],f=c(e[b]);return f?(e[b]=f,{isStreaming:!0,streamingMessage:{...d,content:e}}):a}function i(a){if(a.id||a.toolName)return{...a.id?{id:a.id}:{},...a.toolName?{toolName:a.toolName}:{}};let b=a.partial,c=a.contentIndex;if(!b||!Array.isArray(b.content)||void 0===c)return{};let d=b.content[c];return d&&"toolCall"===d.type?{..."string"==typeof d.id?{id:d.id}:"string"==typeof d.toolCallId?{id:d.toolCallId}:{},..."string"==typeof d.name?{toolName:d.name}:"string"==typeof d.toolName?{toolName:d.toolName}:{}}:{}}function j(a,b){switch(b.type){case"start":return{isStreaming:!0,streamingMessage:a.streamingMessage??g()};case"text_start":return h(a,b.contentIndex,a=>a?.type==="text"?a:{type:"text",text:""});case"text_delta":return h(a,b.contentIndex,a=>({type:"text",text:(a?.type==="text"?a.text:"")+(b.delta??"")}));case"text_end":return h(a,b.contentIndex,a=>({type:"text",text:b.content??(a?.type==="text"?a.text:"")}));case"thinking_start":return h(a,b.contentIndex,a=>a?.type==="thinking"?a:{type:"thinking",thinking:""});case"thinking_delta":return h(a,b.contentIndex,a=>({type:"thinking",thinking:(a?.type==="thinking"?a.thinking:"")+(b.delta??"")}));case"thinking_end":return h(a,b.contentIndex,a=>({type:"thinking",thinking:b.content??(a?.type==="thinking"?a.thinking:"")}));case"toolcall_start":return h(a,b.contentIndex,a=>{let c=i(b);return a?.type==="toolCall"?{...a,...c.id?{toolCallId:c.id}:{},...c.toolName?{toolName:c.toolName}:{},rawInput:a.rawInput??""}:{type:"toolCall",toolCallId:c.id??"",toolName:c.toolName??"tool",input:{},rawInput:""}});case"toolcall_delta":return h(a,b.contentIndex,a=>{let c=i(b),d=a?.type==="toolCall"?a:{type:"toolCall",toolCallId:c.id??"",toolName:c.toolName??"tool",input:{}};return{...d,...c.id?{toolCallId:c.id}:{},...c.toolName?{toolName:c.toolName}:{},rawInput:(d.rawInput??"")+(b.delta??"")}});case"toolcall_end":return h(a,b.contentIndex,()=>({type:"toolCall",toolCallId:b.toolCall?.id??"",toolName:b.toolCall?.name??"tool",input:b.toolCall?.arguments??{}}));default:return a}}function k(a,b){switch(b.type){case"start":return{isStreaming:!0,streamingMessage:null};case"snapshot":return"assistant"===b.message.role?{isStreaming:!0,streamingMessage:b.message}:a;case"delta":return j(a,b.event);case"deltas":{let c=a;for(let a of b.events)c=j(c,a);return c}case"end":case"reset":return f;default:return a}}let l=new Set(["text_delta","thinking_delta","toolcall_delta"]);function m(a){return"object"==typeof a&&null!==a&&!Array.isArray(a)}function n(a){if(!a||"object"!=typeof a)return"?";switch(a.type){case"text":return`text:${"string"==typeof a.text?a.text.length:-1}`;case"thinking":return`thinking:${"string"==typeof a.thinking?a.thinking.length:-1}`;case"toolCall":return`toolCall:${String(a.toolCallId??a.id??"")}`;default:return String(a.type??"")}}function o(a,b,c,d){if(0===a.length||0===c.length)return c;let e=a.length===c.length,f=new Map,g=[];for(let c=0;c<a.length;c++){let d=b[c];d&&f.set(d,a[c]),g[c]=a[c]}let h=!1,i=c.map((a,b)=>{let c=d[b],i=c?f.get(c):e?g[b]:void 0;return i&&function(a,b){if(a===b)return!0;if(a.role!==b.role||a.timestamp!==b.timestamp)return!1;if("assistant"===a.role){let c=a.content,d=b.content;if(!Array.isArray(c)||!Array.isArray(d))return!0;if(c.length!==d.length)return!1;for(let a=0;a<c.length;a++)if(n(c[a])!==n(d[a]))return!1}return!0}(i,a)?i:(h=!0,a)});return!h&&e?a:i}function p(a){if("assistant"!==a.role)return null;let b=a.timestamp;return"number"!=typeof b?null:`assistant:${b}`}class q extends Error{constructor(a,b,c){super(a),this.status=b,this.code=c,this.name="AgentCommandError"}}async function r(a,b){let c=await fetch(`/api/agent/${encodeURIComponent(a)}`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(b)}),d=await c.json().catch(()=>({}));if(!c.ok||d.error)throw new q(d.error??`HTTP ${c.status}`,c.status,d.code);return d.data}async function s(a,b,c){let d,e=new TextDecoder,f="",g=a=>{if(a.startsWith("id: ")){d=a.slice(4);return}if(!a.startsWith("data: "))return;let c=a.slice(6);if("[DONE]"!==c)try{b(c,d)}catch{}finally{d=void 0}},h=new Promise(a=>{c?.aborted?a():c?.addEventListener("abort",()=>a(),{once:!0})});for(;;){let b=await Promise.race([a.read(),h.then(()=>({done:!0,value:void 0}))]);if(b.done)break;let c=(f+=e.decode(b.value,{stream:!0})).split("\n");for(let a of(f=c.pop()||"",c))g(a)}if(f.trim())for(let a of f.split("\n"))g(a)}let t="__annovibeStreamSessions__",u="__annovibeStreamListeners__",v="__annovibeStreamErrorCallbacks__";function w(){let a=globalThis;return a[t]||(a[t]=new Map),a[t]}function x(){let a=globalThis;return a[v]||(a[v]=new Map),a[v]}function y(a){return{sessionId:a,phase:"idle",startedAt:null,lastEventAt:null,lastHeartbeatAt:null,reconnectCount:0,lastSyncReason:null,accumulatedText:"",toolCalls:[],toolResults:[],statusText:null,streamingMessage:null,isStreaming:!1,error:null}}function z(a,b){let c;for(let d of(!(c=globalThis)[u]&&(c[u]=new Map),c[u]).get(a)??[])try{d(b)}catch{}}function A(a){a.textThrottleTimer&&(clearTimeout(a.textThrottleTimer),a.textThrottleTimer=null),a.textDirty&&(a.textDirty=!1,C(a))}function B(a,b=!1){let c=Date.now();if(a.snapshot.lastEventAt=c,!b){a.textDirty=!0,a.textThrottleTimer||(a.textThrottleTimer=setTimeout(()=>{a.textThrottleTimer=null,a.textDirty&&(a.textDirty=!1,C(a))},100));return}A(a),C(a)}function C(a,b){let c=Date.now(),d=function(a){let b=[];for(let c of a.toolCalls.values())b.push({type:"toolCall",toolCallId:c.toolCallId,toolName:c.toolName,input:c.input??{}});let c=a.accumulatedText.trim();return c&&b.push({type:"text",text:c}),b}(a),e=(b??a.snapshot.phase)==="active";a.snapshot={...a.snapshot,phase:b??a.snapshot.phase,lastEventAt:c,accumulatedText:a.accumulatedText,toolCalls:[...a.toolCalls.values()],toolResults:[...a.toolResults.values()],statusText:e?function(a){if(a.activeToolId){let b=a.toolCalls.get(a.activeToolId);if(b){let a=Math.max(0,Math.floor((Date.now()-b.startedAt)/1e3));return`Running ${b.toolName||"tool"}… (${a}s)`}}return a.accumulatedText.trim()?"Generating response…":a.toolCalls.size>0?"Finishing tool results…":null}(a):a.snapshot.statusText,streamingMessage:e&&d.length>0?{role:"assistant",content:d}:null,isStreaming:e},z(a.snapshot.sessionId,{type:"snapshot-updated",snapshot:a.snapshot})}function D(a){E(a),a.idleCheckTimer=setInterval(()=>{if("connected"!==a.connectionState)return;let b=Math.max(a.snapshot.lastEventAt??0,a.snapshot.lastHeartbeatAt??0);if(Date.now()-b>=18e4){F(a),A(a);let b="Stream idle timeout — no activity for 180s.";a.snapshot={...a.snapshot,phase:"error",isStreaming:!1,streamingMessage:null,statusText:null,error:b},E(a),z(a.snapshot.sessionId,{type:"error",snapshot:a.snapshot});let c=x().get(a.snapshot.sessionId);if(c)try{c(a.snapshot.sessionId,b)}catch{}}},1e4)}function E(a){a.idleCheckTimer&&(clearInterval(a.idleCheckTimer),a.idleCheckTimer=null)}function F(a){a.toolProgressTimer&&(clearInterval(a.toolProgressTimer),a.toolProgressTimer=null)}function G(a){let b=w(),c=b.get(a);return c||(c={snapshot:y(a),accumulatedText:"",toolCalls:new Map,toolResults:new Map,toolProgressTimer:null,activeToolId:null,textThrottleTimer:null,textDirty:!1,connectionState:"idle",idleCheckTimer:null},b.set(a,c)),c}function H(a,b){let c=x();return c.set(a,b),()=>{c.get(a)===b&&c.delete(a)}}function I(a){let b=w(),c=b.get(a);c&&(F(c),E(c),A(c)),b.delete(a)}function J(a){let b=w().get(a);b&&(b.snapshot={...b.snapshot,reconnectCount:b.snapshot.reconnectCount+1,lastSyncReason:"sse-reconnect",lastEventAt:Date.now()},B(b,!0))}let K={runtime:"idle",phase:null,retry:null,isCompacting:!1,compactError:null,error:null,queued:{steering:[],followUp:[]}};function L(a){return{steering:Array.isArray(a?.steering)?a.steering:[],followUp:Array.isArray(a?.followUp)?a.followUp:[]}}let M={runtime:"running",phase:{kind:"waiting_model"}},N={runtime:"idle",phase:null};var O=c(31343);async function P(a,b){if(!b.length)return[];let c=await fetch("/api/images/upload",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({cwd:a,images:b.map(a=>({data:a.data,mimeType:a.mimeType,name:a.name}))})}),d=await c.json().catch(()=>({}));if(!c.ok||d.error)throw Error(d.error??`Upload failed (HTTP ${c.status})`);return(d.uploaded??[]).map((a,c)=>({...a,previewUrl:b[c]?.previewUrl}))}c(81537);let Q="__annovibeSessionMessageCache__";function R(){let a=globalThis;if(!a[Q]){var b;let c={entries:new Map,cleanupTimer:null};a[Q]=c,(b=c).cleanupTimer||(b.cleanupTimer=setInterval(()=>{let a=Date.now();for(let[c,d]of b.entries)a-d.loadedAt>72e5&&b.entries.delete(c)},6e4))}return a[Q]}function S(a){let b=R(),c=b.entries.get(a);return c?Date.now()-c.loadedAt>72e5?(b.entries.delete(a),null):(c.loadedAt=Date.now(),{...c,messages:[...c.messages],entryIds:[...c.entryIds]}):null}function T(a,b,c,d,e){let f=R(),g=f.entries.get(a);if(!g)return;let h=new Set(g.entryIds),i=[],j=[];for(let a=0;a<b.length;a++){let d=c[a];d&&!h.has(d)&&(i.push(b[a]),j.push(d))}0!==i.length&&f.entries.set(a,{...g,messages:[...i,...g.messages],entryIds:[...j,...g.entryIds],hasMore:d,loadedMessagesCount:e,loadedAt:Date.now()})}function U(a){R().entries.delete(a)}var V=c(29947);let W=[500,1500,3e3];function X(a,b){return new DOMException(a,b)}function Y(){return"u">typeof crypto&&"function"==typeof crypto.randomUUID?crypto.randomUUID():`${Date.now().toString(36)}-${Math.random().toString(36).slice(2,11)}-${Math.random().toString(36).slice(2,11)}`}function Z(a,b){return a.trim()||0!==b?`text:${a}|images:${b}`:null}function $(a){return"string"==typeof a?Z(a,0):Array.isArray(a)?Z(a.filter(a=>!!a&&"object"==typeof a&&"text"===a.type&&"string"==typeof a.text).map(a=>a.text).join("\n"),a.filter(a=>!!a&&"object"==typeof a&&"image"===a.type).length):null}function _(a){let b=new Map;for(let c of a){let a="user"!==c.role?null:$(c.content);a&&b.set(a,(b.get(a)??0)+1)}return b}function aa(a,b,c){return a.sessionId===b&&(!a.leafId||c.includes(a.leafId))}function ab(a){let{session:b,newSessionCwd:c,onAgentEnd:g,onSessionCreated:h,onSessionForked:i,modelsRefreshKey:j,onBranchDataChange:n,chatInputRef:t}=a,u=null===b&&null!==c,[v,x]=(0,d.useState)(null),[C,Q]=(0,d.useState)(!u),[ab,ac]=(0,d.useState)(null),[ad,ae]=(0,d.useState)(null),[af,ag]=(0,d.useState)([]),[ah,ai]=(0,d.useState)([]),[aj,ak]=(0,d.useState)(0),[al,am]=(0,d.useState)(!1),[an,ao]=(0,d.useState)(0),[ap,aq]=(0,d.useReducer)(k,f),ar=(0,d.useRef)([]),as=(0,d.useRef)(null);(0,d.useCallback)(()=>{ar.current=[],null!==as.current&&(clearTimeout(as.current),as.current=null)},[]);let at=(0,d.useCallback)(()=>{null!==as.current&&(clearTimeout(as.current),as.current=null);let a=ar.current;0!==a.length&&(ar.current=[],aq({type:"deltas",events:function(a){let b=[];for(let c of a){let a=b[b.length-1];if(a&&a.type===c.type&&l.has(a.type)&&"string"==typeof a.delta&&"string"==typeof c.delta&&Number.isInteger(a.contentIndex)&&a.contentIndex===c.contentIndex&&a.id===c.id&&a.toolName===c.toolName&&void 0===a.content&&void 0===c.content&&void 0===a.partial&&void 0===c.partial&&void 0===a.toolCall&&void 0===c.toolCall&&1){b[b.length-1]={...a,delta:`${a.delta}${c.delta}`};continue}b.push(c)}return b}(a)}))},[]),au=(0,d.useCallback)(a=>{ar.current.push(a);let b=function({pendingCount:a,timerArmed:b,flushMs:c=40,maxPending:d=400}){return a<=0?{flushNow:!1,armTimer:!1,delayMs:0}:a>=d?{flushNow:!0,armTimer:!1,delayMs:0}:{flushNow:!1,armTimer:!b,delayMs:c}}({pendingCount:ar.current.length,timerArmed:null!==as.current});b.flushNow?at():b.armTimer&&(as.current=setTimeout(()=>{as.current=null,at()},b.delayMs))},[at]),av=(0,d.useCallback)(a=>{var b;"delta"!==(b=a.type)&&"deltas"!==b&&at(),aq(a)},[at]),[aw,ax]=(0,d.useState)(!1),[ay,az]=(0,d.useState)({}),[aA,aB]=(0,d.useState)([]),[aC,aD]=(0,d.useState)({}),[aE,aF]=(0,d.useState)({}),[aG,aH]=(0,d.useState)(null),[aI,aJ]=(0,d.useState)("full"),[aK,aL]=(0,d.useState)([...V.SN]),[aM,aN]=(0,d.useState)([]),[aO,aP]=(0,d.useState)("auto"),[aQ,aR]=(0,d.useState)(null),[aS,aT]=(0,d.useState)(null),[aU,aV]=(0,d.useState)(null),[aW,aX]=(0,d.useState)(null),[aY,aZ]=(0,d.useState)(null),[a$,a_]=(0,d.useState)(null),[a0,a1]=(0,d.useState)(!1),[a2,a3]=(0,d.useState)(null),[a4,a5]=(0,d.useState)(null),[a6,a7]=(0,d.useState)(null),[a8,a9]=(0,d.useState)({steering:[],followUp:[]}),[ba,bb]=(0,d.useState)(null),bc=(0,d.useRef)(b?.id??null),bd=function({sessionIdRef:a,onEvent:b,onReconnect:c,reconnectBaseMs:e=1e3,reconnectMaxMs:f=3e4}){let g=(0,d.useRef)(null),h=(0,d.useRef)({onEvent:b,onReconnect:c});h.current={onEvent:b,onReconnect:c};let i=(0,d.useCallback)(()=>{g.current?.close(),g.current=null},[]),j=(0,d.useCallback)(()=>{let a=g.current;return!!a&&"closed"!==a.state&&"error"!==a.state},[]);return{connect:(0,d.useCallback)((b,c={})=>{g.current?.close(),g.current=null;let d=`/api/agent/${encodeURIComponent(b)}/events${c.replay?"?replay=1":""}`;return!function(a){let b=G(a);if("active"===b.snapshot.phase)return B(b,!0),D(b),b.snapshot;let c=Date.now();b.snapshot={...y(a),phase:"active",startedAt:c,lastEventAt:c,isStreaming:!0,streamingMessage:{role:"assistant",content:[]}},D(b),B(b,!0),b.snapshot}(b),new Promise((i,j)=>{let k=!1,l=!1,m=null,n=a=>{if(!k){if(k=!0,clearTimeout(o),a){m?.close(),g.current===m&&(g.current=null),j(a);return}i()}},o=setTimeout(()=>{c.requireConnected?n(Error("Timed out waiting for event stream connection")):n()},c.timeoutMs??3e4);g.current=m=function(a){let{url:b,onEvent:c,onStateChange:d,onFatalError:e,maxReconnectAttempts:f=1/0,reconnectBaseMs:g=1e3,reconnectMaxMs:h=3e4,autoReconnect:i=!0}=a,j="idle",k=new AbortController,l=0,m=null,n=null,o=!1,p=(a,b)=>{b&&(n=b),c(a,b)},q=a=>{j!==a&&(j=a,d?.(a))},r=()=>{null!==m&&(clearTimeout(m),m=null)},t=()=>{if(o)return;if(!i)return void q("error");if(l>=f){q("error"),e?.(Error(`Max reconnect attempts (${f}) reached`));return}let a=Math.min(h,g*2**l);l+=1,q("connecting"),m=setTimeout(()=>{m=null,u()},a)},u=async()=>{if(!o){r(),k=new AbortController,q("connecting");try{let a=await fetch(b,{signal:k.signal,headers:{Accept:"text/event-stream","Cache-Control":"no-cache",...n?{"Last-Event-ID":n}:{}}});if(!a.ok)throw Error(`HTTP ${a.status}: ${a.statusText}`);let c=a.body;if(!c)throw Error("Response has no readable body");let d=c.getReader();if(q("connected"),l=0,await s(d,p,k.signal),k.signal.aborted)try{await d.cancel()}catch{}d.releaseLock(),q("closed"),!o&&i&&t()}catch(a){if(o||a instanceof DOMException&&"AbortError"===a.name)return void q("closed");q("error"),i&&t()}}};return{get state(){return j},connect:()=>{o=!1,l=0,r(),u()},close:()=>{o=!0,r(),k.abort(),q("closed")},get abortController(){return k}}}({url:d,onEvent:c=>{try{let d=JSON.parse(c);if("connected"===d.type&&n(),a.current!==b)return;h.current.onEvent(d)}catch{}},onStateChange:a=>{!function(a,b){let c=w().get(a);if(!c)return;let d=c.connectionState;c.connectionState=b,"connected"===b&&"connected"!==d&&(c.snapshot={...c.snapshot,lastEventAt:Date.now(),lastHeartbeatAt:Date.now()},D(c)),"connected"!==b&&"connected"===d&&E(c)}(b,a),"connected"===a&&(l&&(J(b),h.current.onReconnect?.(b)),l=!0)},reconnectBaseMs:e,reconnectMaxMs:f}),m.connect()})},[e,f,a]),disconnect:i,isActive:j,readerRef:g}}({sessionIdRef:bc,onEvent:a=>bw.current?.(a),onReconnect:a=>bx.current?.(a,"sse_reconnected")}),{disconnect:be,isActive:bf}=bd,bg=bd.readerRef,{statuses:bh,widgets:bi,dialog:bj,notices:bk,applyFromState:bl,handleEvent:bm,respond:bn,dismissNotice:bo}=function({chatInputRef:a,sessionIdRef:b,onError:c,noticeTtlMs:e=8e3}){let[f,g]=(0,d.useState)([]),[h,i]=(0,d.useState)([]),[j,k]=(0,d.useState)(null),[l,m]=(0,d.useState)([]),n=(0,d.useRef)(new Set),o=(0,d.useCallback)(()=>{for(let a of n.current)clearTimeout(a);n.current.clear()},[]),p=(0,d.useCallback)((a,b)=>{let c={id:`${Date.now()}-${Math.random().toString(36).slice(2,8)}`,message:a,type:b};m(a=>[...a,c].slice(-4));let d=setTimeout(()=>{n.current.delete(d),m(a=>a.filter(a=>a.id!==c.id))},e);n.current.add(d)},[e]),q=(0,d.useCallback)(a=>{a&&(Array.isArray(a.extensionStatuses)&&g(a.extensionStatuses),Array.isArray(a.extensionWidgets)&&i(a.extensionWidgets))},[]),s=(0,d.useCallback)(b=>{if("extension_error"===b.type)return p("string"==typeof b.error?b.error:"Extension command failed","error"),!0;if("extension_ui_request"!==b.type)return!1;let c="string"==typeof b.method?b.method:"";if("select"===c||"confirm"===c||"input"===c||"editor"===c)return k({id:String(b.id??""),method:c,title:"string"==typeof b.title?b.title:"",...Array.isArray(b.options)?{options:b.options}:{},..."string"==typeof b.message?{message:b.message}:{},..."string"==typeof b.placeholder?{placeholder:b.placeholder}:{},..."string"==typeof b.prefill?{prefill:b.prefill}:{}}),!0;if("notify"===c){let a="warning"===b.notifyType||"error"===b.notifyType?b.notifyType:"info";return p(String(b.message??""),a),!0}if("setStatus"===c){let a=String(b.statusKey??"");if(!a)return!0;let c="string"==typeof b.statusText?b.statusText:null;return g(b=>{let d=b.filter(b=>b.key!==a);return c?[...d,{key:a,text:c}]:d}),!0}if("setWidget"===c){let a=String(b.widgetKey??"");if(!a)return!0;let c=Array.isArray(b.widgetLines)?b.widgetLines.filter(a=>"string"==typeof a):null;return i(d=>{let e=d.filter(b=>b.key!==a);return c&&c.length>0?[...e,{key:a,lines:c,placement:"string"==typeof b.widgetPlacement?b.widgetPlacement:"aboveEditor"}]:e}),!0}return"dismiss"===c?k(a=>a?.id===b.id?null:a):"set_editor_text"===c&&"string"==typeof b.text?a?.current?.setText?.(b.text):"setTitle"===c&&"string"==typeof b.title&&(document.title=b.title),!0},[a,p]),t=(0,d.useCallback)(async(a,d)=>{let e=b.current;if(k(b=>b?.id===a?null:b),e)try{await r(e,{type:"extension_ui_response",id:a,...d})}catch(a){c(a instanceof Error?a.message:String(a))}},[c,b]);return{statuses:f,widgets:h,dialog:j,notices:l,applyFromState:q,handleEvent:s,respond:t,dismissNotice:(0,d.useCallback)(a=>{m(b=>b.filter(b=>b.id!==a))},[]),reset:(0,d.useCallback)(()=>{o(),g([]),i([]),k(null),m([])},[o])}}({chatInputRef:t,sessionIdRef:bc,onError:bb}),bp=(0,d.useRef)(!1),{live:bq,running:br,isRunning:bs,begin:bt,finish:bu,handleEvent:bv}=function({onRunningChange:a,onDone:b,flushMs:c=60}={}){let[e,f]=(0,d.useState)(null),[g,h]=(0,d.useState)(!1),i=(0,d.useRef)(!1),j=(0,d.useRef)(""),k=(0,d.useRef)(null),l=(0,d.useRef)({onRunningChange:a,onDone:b});l.current={onRunningChange:a,onDone:b};let m=(0,d.useCallback)(()=>{k.current&&(clearTimeout(k.current),k.current=null)},[]),n=(0,d.useCallback)(a=>{m(),j.current="",i.current=!0,h(!0),f({command:a,output:""}),l.current.onRunningChange?.(!0,a)},[m]),o=(0,d.useCallback)(()=>{m(),j.current="",i.current=!1,h(!1),f(null),l.current.onRunningChange?.(!1)},[m]);return{live:e,running:g,isRunning:(0,d.useCallback)(()=>i.current,[]),begin:n,finish:o,handleEvent:(0,d.useCallback)(a=>{if("bash_execution_start"===a.type){let b=String(a.command??"");return m(),j.current="",i.current=!0,h(!0),f({command:b,output:""}),l.current.onRunningChange?.(!0,b),!0}if("bash_execution_update"===a.type){let b="string"==typeof a.chunk?a.chunk:"";return!b||(j.current+=b,k.current||(k.current=setTimeout(()=>{k.current=null;let a=j.current;j.current="",a&&f(b=>b?{...b,output:b.output+a}:b)},c)),!0)}return"bash_done"===a.type&&(m(),j.current="",i.current=!1,h(!1),f(null),l.current.onRunningChange?.(!1),l.current.onDone?.(),!0)},[m,c])}}({onRunningChange:(a,b)=>{bp.current=a,ax(a),a7(a?{kind:"running_tools",tools:[{id:"bash",name:"bash",args:b}]}:null)}}),bw=(0,d.useRef)(null),bx=(0,d.useRef)(null),by=(0,d.useRef)(null),bz=(0,d.useRef)(!1),bA=(0,d.useRef)(null),bB=(0,d.useRef)(!1),bC=(0,d.useRef)(null),bD=(0,d.useRef)(null),bE=(0,d.useRef)(new Map),bF=(0,d.useRef)(new Map),bG=(0,d.useRef)(new Map),bH=(0,d.useRef)(new Map),bI=(0,d.useRef)(null),bJ=(0,d.useRef)([]),bK=(0,d.useRef)(null),bL=(0,d.useRef)(0),bM=(0,d.useRef)(!1),bN=(0,d.useRef)(0),bO=(0,d.useRef)(!1);(0,d.useRef)(!1),(0,d.useRef)(0);let bP=(0,d.useRef)(null),bQ=(0,d.useRef)(null),bR=(0,d.useRef)(0);(0,d.useRef)(!1);let bS=a.setNewSessionModel??aH,bT=a.setToolPreset??aJ,bU=a.setMemoryTools??aL,bV=aY??v?.context.model??a$??null,bW=u?aG:bV,bX=(0,d.useCallback)(()=>(0,V.tE)(aI,aK),[aK,aI]),bY=(0,d.useCallback)(a=>a?.length?a.map((a,b)=>{let c=`Attachment ${b+1}: ${a.fileName} (${a.mimeType||"application/octet-stream"}, ${a.size} bytes)`;if(a.extractedText){let b=a.truncated?"\n[The extracted text was truncated before sending.]":"";return`${c}
|
|
2
|
+
${b}
|
|
3
|
+
${a.extractedText}`.trim()}return`${c}
|
|
4
|
+
[Text extraction unavailable: ${a.extractionError??"unsupported file type"}]`}).join("\n\n---\n\n"):"",[]),bZ=(0,d.useCallback)(async a=>{let b=await fetch(`/api/agent/${encodeURIComponent(a)}/prepare`,{method:"POST"});if(!b.ok)throw Error((await b.json().catch(()=>({}))).error??`Failed to prepare session (HTTP ${b.status})`)},[]),b$=(()=>{let a={input:0,output:0,cacheRead:0,cacheWrite:0};for(let b of af){if("assistant"!==b.role)continue;let c=b.usage;c&&(a.input+=c.input??0,a.output+=c.output??0,a.cacheRead+=c.cacheRead??0,a.cacheWrite+=c.cacheWrite??0)}return a.input+a.output+a.cacheRead+a.cacheWrite>0?{tokens:a}:null})(),b_=(0,d.useRef)(!1),b0=(0,d.useCallback)(async()=>{let a=bc.current;if(!a||b_.current||bO.current)return;b_.current=!0,bM.current=!0;let b=0,c=S(a);b=c?c.loadedMessagesCount:50;try{for(;;)try{let c=await fetch(`/api/sessions/${encodeURIComponent(a)}?limit=100&offset=${b}&deferThinking=1&deferMedia=1`);if(!c.ok)break;let d=await c.json();if(bc.current!==a)break;let e=d.context.messages,f=d.context.entryIds??[];if(0===e.length)break;ag(a=>[...e,...a]),ai(a=>{let b=[...f,...a];return bJ.current=b,b});let g=b+e.length;if(ao(g),bN.current=g,am(d.hasMore??!1),T(a,e,f,d.hasMore??!1,g),b=g,!d.hasMore)break;await new Promise(a=>setTimeout(a,800))}catch{break}}finally{b_.current=!1,bO.current=!0,bM.current=!1}},[]),b1=(0,d.useCallback)(async(a,b=!1,c=!1,d=!1)=>{var e;let f=null;try{if(b&&Q(!0),!c&&!bp.current&&!d){let c=S(a);if(c)return ak(c.totalMessages),am(c.hasMore),ao(c.loadedMessagesCount),ag(c.messages),bJ.current=c.entryIds,ai(c.entryIds),bI.current=c.leafId,ae(c.leafId),bN.current=c.loadedMessagesCount,b&&Q(!1),c.hasMore&&!bO.current&&setTimeout(()=>{b0()},1500),null}let g=c?`/api/sessions/${encodeURIComponent(a)}?includeState&deferThinking=1&deferMedia=1`:`/api/sessions/${encodeURIComponent(a)}?limit=50&offset=0&deferThinking=1&deferMedia=1`,h=bQ.current;if(h?.sid===a&&!b)return null;h?.controller.abort(X("Session load superseded","AbortError"));let i=new AbortController;f=i,bQ.current={sid:a,controller:i};let j=setTimeout(()=>{i.abort(X("Session load timed out after 30 seconds","TimeoutError"))},3e4),k=await fetch(g,{signal:i.signal}).finally(()=>clearTimeout(j));if(bc.current&&bc.current!==a)return null;if(404===k.status)return b&&(x(null),bI.current=null,ae(null),ag([]),ac(null)),null;if(!k.ok)throw Error(`HTTP ${k.status}`);let l=await k.json();c?(ak(l.totalMessages??l.context.messages.length),am(!1)):(ak(l.totalMessages??l.context.messages.length),am(l.hasMore??!1)),ao(l.context.messages.length),x(l),bI.current=l.leafId,ae(l.leafId);let m=l.context.messages,n=_(m),q=new Map,r=Date.now();for(let[b,c]of bE.current)if(c.sessionId===a){if(r-c.createdAt>12e4){bE.current.delete(b);continue}if(c.confirmKey){let a=n.get(c.confirmKey)??0,d=q.get(c.confirmKey)??0;a-d>c.confirmCountAtCreate&&(bE.current.delete(b),q.set(c.confirmKey,d+1))}}bF.current=n;let s=l.context.entryIds??[],t=[...bE.current.values()].filter(b=>aa(b,a,s)).map(a=>a.message),u=t.length>0?[...m,...t]:m,v=function(a,b,c){if(0===b.size)return a;let d=!1,e=a.map(a=>{let e=p(a);if(!e)return a;let f=b.get(e);return f?c-f.observedAt>5e3||function(a,b){let c=a.timestamp,d=b.timestamp;if("number"!=typeof c||"number"!=typeof d||c!==d||a.role!==b.role)return!1;try{return JSON.stringify(a)===JSON.stringify(b)}catch{return!1}}(f.message,a)?(b.delete(e),a):(d=!0,f.message):a});return d?e:a}(u,bH.current,Date.now()),w=bG.current.get(a);if(w){for(let[a,b]of w)r-b>12e4&&w.delete(a);0===w.size&&bG.current.delete(a)}let y=w?.size?w:null,z=y?new Set(s):null,A=!!y&&!!z&&[...y.keys()].some(a=>!z.has(a));y&&z&&!A&&bG.current.delete(a);let B=v.length;if(!c&&(bN.current>B||A))ak(l.totalMessages??l.context.messages.length),am(l.hasMore??!1);else{let b=bJ.current;ag(a=>o(a,b,v,s)),bJ.current=s,ai(s),c?bN.current=B:bN.current=Math.max(bN.current,B),e={sessionId:a,leafId:l.leafId,messages:v,entryIds:s,totalMessages:l.totalMessages??l.context.messages.length,hasMore:!c&&(l.hasMore??!1),loadedMessagesCount:l.context.messages.length},R().entries.set(a,{...e,loadedAt:Date.now()})}return aZ(a=>{if(!a)return null;let b=l.context.model;return b?.provider===a.provider&&b.modelId===a.modelId?null:a}),ac(null),!l.agentState?.state?.thinkingLevel&&l.context.thinkingLevel&&"off"!==l.context.thinkingLevel&&aP(l.context.thinkingLevel),l.agentState??null}catch(a){if(a instanceof DOMException&&("AbortError"===a.name||"TimeoutError"===a.name)||a instanceof Error&&/aborted without reason|AbortError|Session load (?:timed out|superseded)/i.test(a.message))return null;return ac(String(a)),null}finally{f&&bQ.current?.controller===f&&(bQ.current=null),b&&Q(!1)}},[b0]),b2=(0,d.useRef)(!1),b3=(0,d.useCallback)(async()=>{if(b2.current)return;b2.current=!0;let a=bc.current;if(!a){b2.current=!1;return}try{let b=await fetch(`/api/sessions/${encodeURIComponent(a)}?limit=50&offset=${an}&deferThinking=1&deferMedia=1`);if(!b.ok)return;let c=await b.json(),d=c.context.messages,e=c.context.entryIds??[];ag(a=>[...d,...a]),ai(a=>{let b=[...e,...a];return bJ.current=b,b}),ao(a=>a+d.length),am(c.hasMore??!1),T(a,d,e,c.hasMore??!1,an+d.length)}catch{}finally{b2.current=!1}},[an]),b4=(0,d.useCallback)(async a=>{let b=bc.current;if(!b)return[];let c=bI.current,d=c?`?leafId=${encodeURIComponent(c)}`:"";try{let c=await fetch(`/api/sessions/${encodeURIComponent(b)}/shadowed${d}`);if(!c.ok)return[];let e=await c.json(),f=e.groups?.find(b=>b.compactionEntryId===a);return f?.messages??[]}catch{return[]}},[]),b5=(0,d.useCallback)(async(a,b)=>{try{let c=b?`/api/sessions/${encodeURIComponent(a)}/context?leafId=${encodeURIComponent(b)}&deferThinking=1&deferMedia=1`:`/api/sessions/${encodeURIComponent(a)}/context?deferThinking=1&deferMedia=1`,d=await fetch(c);if(!d.ok)throw Error(`HTTP ${d.status}`);let e=await d.json(),f=e.context.messages,g=e.context.entryIds??[],h=_(f),i=new Map,j=Date.now();for(let[b,c]of bE.current)if(c.sessionId===a){if(j-c.createdAt>12e4){bE.current.delete(b);continue}if(c.confirmKey){let a=h.get(c.confirmKey)??0,d=i.get(c.confirmKey)??0;a-d>c.confirmCountAtCreate&&(bE.current.delete(b),i.set(c.confirmKey,d+1))}}bF.current=h;let k=[...bE.current.values()].filter(b=>aa(b,a,g)).map(a=>a.message),l=bJ.current,m=k.length>0?[...f,...k]:f;ag(a=>o(a,l,m,g)),bJ.current=g,ai(g)}catch(a){console.error("Failed to load context:",a)}},[]),b6=(0,d.useCallback)(async a=>{try{let b=await r(a,{type:"get_tools"});b&&(bT((0,V.ES)(b)),bU((0,V.IB)(b)))}catch(a){console.error("Failed to load tools:",a)}},[bU,bT]),b7=(0,d.useCallback)(async a=>{try{let b=await r(a,{type:"get_commands"});aN(Array.isArray(b?.commands)?b.commands:[])}catch{aN([])}},[]),b8=bd.connect,b9=(0,d.useCallback)(async(a,b="manual")=>{if(!a||bc.current!==a)return;let c=bL.current;try{let b=await fetch(`/api/agent/${encodeURIComponent(a)}`),e=await b.json().catch(()=>({}));if(bc.current!==a||bL.current!==c)return;if(e.running){var d;bp.current=!0,ax(!0),a7((d=e.state,d?.phase==="running_tools"?{kind:"running_tools",tools:(d.activeTools??[]).map(a=>({id:a.id,name:a.name}))}:d?.phase==="streaming"||d?.phase==="compacting"||d?.phase==="idle"?null:{kind:"waiting_model"})),bf()||(J(a),b8(a,{replay:!0}))}else bp.current=!1,be(),I(a),ax(!1),a7(null),aR(null),av({type:"end"}),U(a),await b1(a,!1,!1,!0);e.state?.contextUsage!==void 0&&aT(e.state.contextUsage??null),e.state?.systemPrompt!==void 0&&aV(e.state.systemPrompt??null),e.state?.isCompacting!==void 0&&a1(e.state.isCompacting),e.state?.thinkingLevel!==void 0&&aP(e.state.thinkingLevel??"auto"),e.state?.queuedMessages!==void 0&&a9(L(e.state.queuedMessages)),bl(e.state),e.state?.isBashRunning&&bt("")}catch{}},[b8,b1,bl,bt,be,bf,av]),ca=(0,d.useRef)(K);ca.current={runtime:aw?"running":"idle",phase:a6,retry:aQ,isCompacting:a0,compactError:a2,error:ba,queued:a8};let cb=(0,d.useCallback)(a=>{if(void 0!==a.runtime){let b="running"===a.runtime;bp.current=b,ax(b)}void 0!==a.phase&&a7(a.phase),void 0!==a.retry&&aR(a.retry),void 0!==a.isCompacting&&a1(a.isCompacting),void 0!==a.compactError&&a3(a.compactError),void 0!==a.error&&bb(a.error),void 0!==a.queued&&a9(a.queued)},[]),cc=(0,d.useCallback)(a=>{bP.current&&clearTimeout(bP.current);let b=bL.current,c=0,d=async()=>{if(bc.current!==a||bp.current||bL.current!==b)return;U(a),await b1(a,!1,!1,!0);let e=W[c++];void 0===e||bc.current!==a||bp.current||bL.current!==b||(bP.current=setTimeout(()=>{bP.current=null,d()},e))};d()},[b1]),cd=(0,d.useCallback)(a=>{fetch(`/api/agent/${encodeURIComponent(a)}`).then(a=>a.json()).then(a=>{a.state?.contextUsage!==void 0&&aT(a.state.contextUsage??null),a.state?.systemPrompt!==void 0&&aV(a.state.systemPrompt??null),a.state?.isCompacting!==void 0&&a1(a.state.isCompacting)}).catch(()=>{})},[]),ce=(0,d.useCallback)(a=>{for(let[b,c]of bE.current)c.sessionId===a&&"prompt"===c.kind&&bE.current.delete(b)},[]),cf=(0,d.useCallback)((a,b,c)=>{"assistant"===b.role&&"error"===b.stopReason&&b.errorMessage?.trim()&&bb(`Model response failed: ${b.errorMessage.trim()}`);let d=e(b),f=p(d);if(f&&bH.current.set(f,{observedAt:Date.now(),message:d}),!(c&&bJ.current.includes(c))){if(a&&c){let b=bG.current.get(a)??new Map;b.set(c,Date.now()),bG.current.set(a,b)}ag(a=>a.some(a=>(function(a,b){let c=a.timestamp,d=b.timestamp;if("number"!=typeof c||"number"!=typeof d||c!==d||a.role!==b.role)return!1;try{return JSON.stringify(a)===JSON.stringify(b)}catch{return!1}})(a,d))?a:[...a,d]),c&&ai(a=>{if(a.includes(c))return a;let b=[...a,c];return bJ.current=b,b})}},[]);bw.current=(0,d.useCallback)(a=>{let b=bc.current;"message_update"!==a.type&&at(),b&&function(a,b){let c=G(a),d=Date.now();switch(b.type){case"agent_start":if("active"===c.snapshot.phase)return B(c,!0),c.snapshot;return F(c),c.accumulatedText="",c.toolCalls.clear(),c.toolResults.clear(),c.activeToolId=null,c.snapshot={...y(a),phase:"active",startedAt:d,lastEventAt:d,isStreaming:!0,streamingMessage:{role:"assistant",content:[]}},D(c),B(c,!0),c.snapshot;case"message_update":{let a=b.message;if(a?.role==="assistant"){let b=a.content;for(let a of Array.isArray(b)?b:[])"object"==typeof a&&null!==a&&"type"in a&&("text"===a.type?c.accumulatedText=a.text??"":"toolCall"===a.type&&a.toolCallId&&!c.toolCalls.has(a.toolCallId)&&c.toolCalls.set(a.toolCallId,{...a,startedAt:d}))}else{let a=b.assistantMessageEvent;a?.type==="text_delta"?c.accumulatedText+=a.delta??"":a?.type==="text_end"?c.accumulatedText=a.content??c.accumulatedText:(a?.type==="toolcall_start"||a?.type==="toolcall_delta")&&a.id&&!c.toolCalls.has(a.id)&&c.toolCalls.set(a.id,{type:"toolCall",toolCallId:a.id,toolName:a.toolName??"tool",input:{},startedAt:d})}return B(c,!1),c.snapshot}case"tool_execution_start":{let a="string"==typeof b.toolCallId?b.toolCallId:"",e="string"==typeof b.toolName?b.toolName:"tool",f=b.input??{};if(!a)return c.snapshot;let g=c.toolCalls.get(a);return c.toolCalls.set(a,{type:"toolCall",toolCallId:a,toolName:e,input:g&&Object.keys(g.input).length>0?g.input:f,startedAt:g?.startedAt??d}),c.activeToolId=a,F(c),c.activeToolId&&(c.toolProgressTimer=setInterval(()=>B(c,!0),1e3)),B(c,!0),c.snapshot}case"tool_execution_end":{let a="string"==typeof b.toolCallId?b.toolCallId:"",e="string"==typeof b.toolName?b.toolName:"tool",f="string"==typeof b.result?b.result:JSON.stringify(b.result??"");if(a){let g=c.toolCalls.get(a);g&&c.toolCalls.set(a,{...g,endedAt:d}),c.toolResults.set(a,{role:"toolResult",toolCallId:a,toolName:e,content:[{type:"text",text:f}],isError:!!b.isError,timestamp:d}),c.activeToolId===a&&(c.activeToolId=null,F(c))}return B(c,!0),c.snapshot}case"message_end":return A(c),B(c,!0),c.snapshot;case"agent_end":{if(A(c),F(c),c.activeToolId=null,!0===b.willRetry)return c.accumulatedText="",c.toolCalls.clear(),c.toolResults.clear(),c.snapshot={...c.snapshot,phase:"active",lastEventAt:d,accumulatedText:"",toolCalls:[],toolResults:[],statusText:null,streamingMessage:null,isStreaming:!0,error:null},D(c),z(a,{type:"snapshot-updated",snapshot:c.snapshot}),c.snapshot;E(c);let e="string"==typeof b.error?b.error:null;return c.snapshot={...c.snapshot,phase:e?"error":"completed",isStreaming:!1,streamingMessage:null,statusText:null,error:e},z(a,e?{type:"error",snapshot:c.snapshot}:{type:"completed",snapshot:c.snapshot}),c.snapshot}case"heartbeat":return c.snapshot={...c.snapshot,lastHeartbeatAt:d},c.snapshot;default:return c.snapshot}}(b,a),"heartbeat"!==a.type&&(bR.current=Date.now());let c=function(a,b,c){let d=c.sessionId;switch(b.type){case"prompt_admitted":case"agent_start":return{patch:{...M,error:null},streamAction:{type:"start"},effects:[]};case"agent_end":if(!0===b.willRetry)return{patch:M,effects:[]};return{patch:{...N,retry:null},streamAction:{type:"end"},effects:d?[{type:"completion-sync",sessionId:d},{type:"refresh-runtime",sessionId:d}]:[]};case"agent_settled":{let b={phase:null,retry:null};if("running"===a.runtime)return b.runtime="idle",{patch:b,streamAction:{type:"end"},effects:[]};return{patch:b,effects:[]}}case"message_start":case"message_update":{let c,d=b.message;if(d?.role==="user")return{patch:{},effects:[]};let e={};"idle"===a.runtime?(e.runtime="running",e.phase={kind:"waiting_model"}):e.phase=null;let f=b.assistantMessageEvent;return d?.role==="assistant"?c={type:"snapshot",message:d}:f&&(c={type:"delta",event:f}),{patch:e,streamAction:c,effects:[]}}case"message_end":{let c=b.message;if(!c||"user"===c.role)return{patch:{},effects:[]};let e=[{type:"completed-message",message:c,entryId:"string"==typeof b.__entryId?b.__entryId:null,sessionId:d}];if("running"===a.runtime)return{patch:{phase:{kind:"waiting_model"}},streamAction:{type:"reset"},effects:e};return{patch:{},effects:e}}case"replay_gap":return{patch:{},effects:d?[{type:"reload",sessionId:d,reason:"replay_gap"}]:[]};case"prompt_done":if("running"!==a.runtime||!d)return{patch:{},effects:[]};return{patch:{},effects:[{type:"reconcile",sessionId:d,reason:"prompt_done"}]};case"prompt_error":{let a="string"==typeof b.error&&b.error.trim()?b.error.trim():"The model request failed before producing a response.";return{patch:{...N,retry:null,error:`Model request failed: ${a}`},streamAction:{type:"end"},effects:d?[{type:"clear-stream",sessionId:d},{type:"reload",sessionId:d,reason:"prompt_error"}]:[]}}case"tool_execution_start":{let c="string"==typeof b.toolCallId?b.toolCallId:"",d="string"==typeof b.toolName?b.toolName:"tool",e=b.args,f="bash"===d&&"string"==typeof e?.command?e.command:void 0,g=a.phase?.kind==="running_tools"?[...a.phase.tools]:[];return c&&!g.some(a=>a.id===c)&&g.push({id:c,name:d,args:f}),{patch:{phase:{kind:"running_tools",tools:g}},effects:[]}}case"tool_execution_update":{let d="string"==typeof b.toolCallId?b.toolCallId:"";if(!d)return{patch:{},effects:[]};let e="string"==typeof b.toolName?b.toolName:"",f=c.toolProgress?.(b.partialResult),g=a.phase?.kind==="running_tools"?[...a.phase.tools]:[],h=g.find(a=>a.id===d),i={id:d,name:e||h?.name||"tool",args:h?.args,progress:f??h?.progress};return{patch:{phase:{kind:"running_tools",tools:[...g.filter(a=>a.id!==d),i]}},effects:[]}}case"tool_execution_end":{let c="string"==typeof b.toolCallId?b.toolCallId:"";if(a.phase?.kind!=="running_tools")return{patch:{},effects:[]};let d=a.phase.tools.filter(a=>a.id!==c);return{patch:{phase:0===d.length?{kind:"waiting_model"}:{kind:"running_tools",tools:d}},effects:[]}}case"extension_ui_request":case"extension_error":return{patch:{},effects:[{type:"delegate-extension",event:b}]};case"bash_execution_start":case"bash_execution_update":return{patch:{},effects:[{type:"delegate-bash",event:b}]};case"bash_done":return{patch:{},effects:[{type:"delegate-bash",event:b},...d?[{type:"reload",sessionId:d,reason:"bash_done"}]:[]]};case"queue_update":return{patch:{queued:L({steering:Array.isArray(b.steering)?b.steering:[],followUp:Array.isArray(b.followUp)?b.followUp:[]})},effects:[]};case"auto_retry_start":return{patch:{...M,error:null,retry:{attempt:b.attempt,maxAttempts:b.maxAttempts,errorMessage:b.errorMessage}},effects:[]};case"auto_retry_end":if(!1===b.success&&"string"==typeof b.finalError&&b.finalError.trim())return{patch:{retry:null,error:`Model response failed after retries: ${b.finalError.trim()}`},effects:[]};return{patch:!0===b.success?{retry:null,error:null}:{retry:null},effects:[]};case"auto_compaction_start":case"compaction_start":return{patch:{isCompacting:!0,compactError:null},effects:[]};case"auto_compaction_end":case"compaction_end":{let a="string"==typeof b.errorMessage&&b.errorMessage.trim()?b.errorMessage:null,c=[];return!a&&!0!==b.aborted&&d&&c.push({type:"reload",sessionId:d,reason:"compaction_end"}),{patch:{isCompacting:!1,...a?{compactError:a}:{}},effects:c}}default:return{patch:{},effects:[]}}}(ca.current,a,{sessionId:b,toolProgress:a=>(function(a){if(!m(a))return null;let b=a.content;if(!Array.isArray(b))return null;let c=b.filter(a=>m(a)&&"text"===a.type&&"string"==typeof a.text).map(a=>a.text).join("\n").split(/\r?\n/),d="";for(let a=c.length-1;a>=0&&!(d=c[a].trim());a-=1);if(!d)return null;let e=d.replace(/\s+/g," ");return e.length<=500?e:`...${e.slice(-497)}`})(a)??void 0});switch(cb(c.patch),c.streamAction?.type){case"start":av({type:"start"});break;case"end":av({type:"end"});break;case"reset":av({type:"reset"});break;case"delta":au(c.streamAction.event);break;case"snapshot":av({type:"snapshot",message:e(c.streamAction.message)})}for(let a of c.effects)switch(a.type){case"completion-sync":cc(a.sessionId);break;case"refresh-runtime":cd(a.sessionId);break;case"reload":U(a.sessionId),b1(a.sessionId,!1,!1,!0);break;case"clear-stream":be(),I(a.sessionId),ce(a.sessionId);break;case"reconcile":b9(a.sessionId,a.reason);break;case"delegate-extension":bm(a.event);break;case"delegate-bash":bv(a.event);break;case"completed-message":cf(a.sessionId,a.message,a.entryId)}c.effects.some(a=>"completion-sync"===a.type||"clear-stream"===a.type)&&g?.()},[b1,g,b9,bm,bv,be,cb,cc,cd,cf,ce,at,au,av]);let cg=(0,d.useCallback)(async(a,d,e,f)=>{if(!a.trim()&&!d?.length&&!e?.length||aw)return;bL.current+=1;let g=bY(e),i=a.trim()?g?`${a}
|
|
5
|
+
|
|
6
|
+
Attached document text:
|
|
7
|
+
|
|
8
|
+
${g}`:a:g?`Attached document text:
|
|
9
|
+
|
|
10
|
+
${g}`:"",j=[],k=u?c:b?.cwd??v?.info?.cwd;if(d?.length&&k)try{j=await P(k,d)}catch(a){bb(a instanceof Error?a.message:String(a));return}let l=j.length?j.map(a=>{var b;return{type:"image",path:a.path,mimeType:a.mimeType,name:a.name,source:{type:"url",url:(b=a.path,`/api/files/${(0,O.HG)(b)}?type=read`),media_type:a.mimeType}}}):d?.map(a=>({type:"image",source:{type:"base64",media_type:a.mimeType,data:a.data}})),m={role:"user",content:l?.length?[...i.trim()?[{type:"text",text:i}]:[],...l]:i,timestamp:Date.now()},n=Y(),o=u?null:b?.id??null;o&&U(o);let p=bI.current,s=$(m.content);bE.current.set(n,{localId:n,sessionId:o??"__new__",leafId:p,message:m,createdAt:Date.now(),kind:"prompt",confirmKey:s,confirmCountAtCreate:u?0:s?bF.current.get(s)??0:0}),ag(a=>[...a,m]),bb(null),bp.current=!0,ax(!0),a7({kind:"waiting_model"}),av({type:"start"}),bB.current=!0;let w=aA.find(a=>a.provider===bV?.provider&&a.id===bV?.modelId)?.input,x=!w||0===w.length||w.includes("image")?d?.map(a=>({type:"image",data:a.data,mimeType:a.mimeType})):void 0;try{if(u&&c){aG&&a_(aG);let b=f??bX(),d=await fetch("/api/agent/new",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({cwd:c,type:"prompt",message:i,toolNames:b,deferPrompt:!0,...x?.length?{images:x}:{},...aG?{provider:aG.provider,modelId:aG.modelId}:{},..."auto"!==aO?{thinkingLevel:aO}:{}})}),e=await d.json().catch(()=>({}));if(!d.ok||e.error||!e.sessionId)throw Error(e.error??`HTTP ${d.status}`);let g=e.sessionId;bc.current=g;let j=bE.current.get(n);j&&(j.sessionId=g),by.current?.(),by.current=H(g,()=>{bc.current===g&&(ax(!1),a7(null))}),bK.current=g,await b8(g,{requireConnected:!0,timeoutMs:1e4}),await r(g,{type:"prompt",message:i,toolNames:b,...x?.length?{images:x}:{}}),h?.({id:g,path:"",cwd:c,name:void 0,created:new Date().toISOString(),modified:new Date().toISOString(),messageCount:1,firstMessage:a})}else if(b){let a=f??bX();await bZ(b.id),by.current?.(),by.current=H(b.id,()=>{bc.current===b.id&&(ax(!1),a7(null))}),await b8(b.id,{requireConnected:!0,timeoutMs:1e4}),await r(b.id,{type:"prompt",message:i,toolNames:a,leafId:p,...bV?{provider:bV.provider,modelId:bV.modelId}:{},..."auto"!==aO?{thinkingLevel:aO}:{},...x?.length?{images:x}:{}})}}catch(c){let b=bc.current;if(bE.current.delete(n),ag(a=>a.filter(a=>a!==m)),c instanceof q&&(409===c.status||"SESSION_BUSY"===c.code)){bb("This session is already running in another tab. Showing that active run instead."),bp.current=!0,ax(!0),a7({kind:"waiting_model"}),av({type:"start"}),b&&(be(),J(b),b8(b,{replay:!0}),bx.current?.(b,"prompt_conflict"));return}if(console.error("Failed to send message:",c),u&&bc.current){let a=bc.current;bc.current=null,bK.current=null,fetch(`/api/sessions/${encodeURIComponent(a)}`,{method:"DELETE"}).catch(()=>{})}t?.current&&a.trim()&&t.current.insertIfEmpty(a),t?.current&&d?.length&&t.current.addBase64Images?.(d.map(({data:a,mimeType:b})=>({data:a,mimeType:b}))),bb(c instanceof Error?c.message:String(c)),be(),b&&I(b),bp.current=!1,ax(!1),a7(null),av({type:"end"})}},[u,c,aG,bX,aO,b,v?.info?.cwd,aw,b8,h,bY,aA,bV,bZ,t,be,av]),ch=(0,d.useCallback)(async()=>{let a=bc.current;if(!a)return;let b=bs();bp.current=!1,bu(),bb(null),ax(!1),a7(null),av({type:"end"}),be(),I(a),U(a);try{await r(a,{type:b?"abort_bash":"abort"}),await b1(a,!1,!1,!0)}catch(b){console.error("Failed to abort:",b),await b1(a,!1,!1,!0)}finally{b&&bu()}},[bu,bs,b1,be,av]),ci=(0,d.useCallback)(async(a,b)=>{let c=bc.current,d=a.trim();if(c&&d){bb(null),bt(d);try{await r(c,{type:"bash",command:d,excludeFromContext:b})}catch(a){bb(a instanceof Error?a.message:String(a))}finally{bu(),U(c),await b1(c,!1,!1,!0)}}},[bt,bu,b1]),cj=(0,d.useCallback)(async a=>{let b=bc.current;if(b){aX(a);try{let{cancelled:c,newSessionId:d}=await r(b,{type:"fork",entryId:a})??{};!c&&d&&i?.(d)}catch(a){console.error("Fork failed:",a)}finally{aX(null)}}},[i]),ck=(0,d.useCallback)(async a=>{let d=bc.current,e=v?.info?.cwd??b?.cwd??c??null;if(!d||!e)return{ok:!1,error:"No active session to fork"};if(bp.current)return{ok:!1,error:"Agent is still running"};try{let b=bX(),c=await fetch("/api/agent/new",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({cwd:e,type:"prompt",parentSessionId:d,deferPrompt:!0,toolNames:b,...bV?{provider:bV.provider,modelId:bV.modelId}:{},..."auto"!==aO?{thinkingLevel:aO}:{}})}),f=await c.json().catch(()=>({}));if(!c.ok||f.error||!f.sessionId)return{ok:!1,error:f.error??`HTTP ${c.status}`};let g=f.sessionId;try{await r(g,{type:"append_message",message:a,customType:"fork_handoff",display:!0})}catch{}return h?.({id:g,path:"",cwd:e,created:new Date().toISOString(),modified:new Date().toISOString(),messageCount:1,firstMessage:a.slice(0,120),parentSessionId:d}),{ok:!0}}catch(a){return{ok:!1,error:a instanceof Error?a.message:String(a)}}},[v?.info?.cwd,b?.cwd,c,bV,aO,bX,h]),cl=(0,d.useCallback)(async a=>{let b=bc.current;b&&(bG.current.delete(b),U(b),bI.current=a,ae(a),await b5(b,a))},[b5]);(0,d.useCallback)(async a=>{bI.current=a,ae(a);let b=bc.current;b&&(bG.current.delete(b),U(b),await b5(b,a))},[b5]);let cm=(0,d.useCallback)(async(a,b)=>{if(u)return void bS({provider:a,modelId:b});let c=bc.current;if(c)try{var d;bb(null);let e=await r(c,{type:"set_model",provider:a,modelId:b}),f={provider:e.provider,modelId:e.id};e.thinkingLevel&&(d=e.thinkingLevel,"auto"===d||"off"===d||"minimal"===d||"low"===d||"medium"===d||"high"===d||"xhigh"===d)&&aP(e.thinkingLevel),aZ(f),x(a=>a?{...a,context:{...a.context,model:f}}:a)}catch(b){let a=b instanceof Error?b.message:String(b);console.error("Failed to set model:",b),bb(a)}},[u,bS]),cn=(0,d.useCallback)(async()=>{let a=bc.current;if(a&&!a0){a1(!0),a3(null),a5(null);try{let b=await r(a,{type:"compact"});b?.reducedBy!=null&&a5(`Compacted ~${b.tokensBefore??"?"} → ~${b.tokensAfter??"?"} tokens (−${b.reducedBy})`),await b1(a,!0)}catch(a){a3(a instanceof Error?a.message:String(a))}finally{a1(!1)}}},[a0,b1]),co=(0,d.useCallback)(async(a,b,c)=>{let d=bc.current;if(!d)return;U(d);let e=bY(c),f=a.trim()?e?`${a}
|
|
11
|
+
|
|
12
|
+
Attached document text:
|
|
13
|
+
|
|
14
|
+
${e}`:a:e?`Attached document text:
|
|
15
|
+
|
|
16
|
+
${e}`:"",g=aA.find(a=>a.provider===bV?.provider&&a.id===bV?.modelId)?.input,h=!g||0===g.length||g.includes("image")?b?.map(a=>({type:"image",data:a.data,mimeType:a.mimeType})):void 0,i={role:"user",content:`[steer] ${f}`,timestamp:Date.now()},j=Y(),k=Z(f,h?.length??0);bE.current.set(j,{localId:j,sessionId:d,leafId:bI.current,message:i,createdAt:Date.now(),kind:"steer",confirmKey:k,confirmCountAtCreate:k?bF.current.get(k)??0:0}),ag(a=>[...a,i]);try{await r(d,{type:"steer",message:f,...h?.length?{images:h}:{}})}catch(a){bE.current.delete(j),console.error("Failed to steer:",a)}},[bY,aA,bV]),cp=(0,d.useCallback)(async(a,b,c)=>{let d=bc.current;if(!d)return;U(d);let e=bY(c),f=a.trim()?e?`${a}
|
|
17
|
+
|
|
18
|
+
Attached document text:
|
|
19
|
+
|
|
20
|
+
${e}`:a:e?`Attached document text:
|
|
21
|
+
|
|
22
|
+
${e}`:"",g=aA.find(a=>a.provider===bV?.provider&&a.id===bV?.modelId)?.input,h=!g||0===g.length||g.includes("image")?b?.map(a=>({type:"image",data:a.data,mimeType:a.mimeType})):void 0,i={role:"user",content:f,timestamp:Date.now()},j=Y(),k=Z(f,h?.length??0);bE.current.set(j,{localId:j,sessionId:d,leafId:bI.current,message:i,createdAt:Date.now(),kind:"follow_up",confirmKey:k,confirmCountAtCreate:k?bF.current.get(k)??0:0}),ag(a=>[...a,i]);try{await r(d,{type:"follow_up",message:f,...h?.length?{images:h}:{}})}catch(a){bE.current.delete(j),console.error("Failed to follow up:",a)}},[bY,aA,bV]),cq=(0,d.useCallback)(async()=>{let a=bc.current;if(a)try{await r(a,{type:"abort_compaction"})}catch(a){console.error("Failed to abort compaction:",a)}},[]),cr=(0,d.useCallback)(async a=>{if(aP(a),"auto"===a)return;let b=bc.current;if(b)try{await r(b,{type:"set_thinking_level",level:a})}catch(a){console.error("Failed to set thinking level:",a)}},[]),cs=(0,d.useCallback)(async a=>{bT(a);let b=(0,V.tE)(a,aK),c=bc.current;if(c)try{await r(c,{type:"set_tools",toolNames:b})}catch(a){console.error("Failed to set tools:",a)}},[aK,bT]),ct=(0,d.useCallback)(async a=>{bU(a);let b=(0,V.tE)(aI,a),c=bc.current;if(c)try{await r(c,{type:"set_tools",toolNames:b})}catch(a){console.error("Failed to set memory tools:",a)}},[bU,aI]);(0,d.useCallback)((a="smooth")=>{bC.current?.scrollIntoView({behavior:a})},[]),(0,d.useCallback)(()=>{let a=bD.current,b=bA.current;if(!a||!b)return;let c=b.getBoundingClientRect().top-a.getBoundingClientRect().top+a.scrollTop;a.scrollTo({top:c-16,behavior:"smooth"})},[]);let cu=(0,d.useCallback)(async()=>{let a=bc.current;if(a)try{await r(a,{type:"clear_queue"}),a9({steering:[],followUp:[]})}catch(a){bb(a instanceof Error?a.message:String(a))}},[]);return{data:v,loading:C,error:ab,activeLeafId:ad,messages:af,entryIds:ah,streamState:ap,agentRunning:aw,modelNames:ay,modelList:aA,modelThinkingLevels:aC,modelThinkingLevelMaps:aE,newSessionModel:aG,toolPreset:aI,memoryTools:aK,thinkingLevel:aO,retryInfo:aQ,queuedMessages:a8,extensionStatuses:bh,extensionWidgets:bi,extensionDialog:bj,extensionNotices:bk,bashLive:bq,bashRunning:br,contextUsage:aS,systemPrompt:aU,forkingEntryId:aW,isCompacting:a0,compactError:a2,compactInfo:a4,currentModel:bV,displayModel:bW,sessionStats:b$,agentPhase:a6,agentError:ba,isNew:u,sessionIdRef:bc,sseReaderRef:bg,messagesEndRef:bC,scrollContainerRef:bD,lastUserMsgRef:bA,pendingScrollToUserRef:bB,initialScrollDoneRef:bz,handleSend:cg,handleAbort:ch,handleFork:cj,handleNavigate:cl,handleModelChange:cm,handleCompact:cn,handleSteer:co,handleFollowUp:cp,handleAbortCompaction:cq,handleToolPresetChange:cs,handleMemoryToolsChange:ct,handleThinkingLevelChange:cr,handleClearQueue:cu,handleBash:ci,respondToExtensionUi:bn,dismissExtensionNotice:bo,loadTools:b6,loadSlashCommands:b7,slashCommands:aM,setActiveLeafId:ae,setData:x,setMessages:ag,dispatch:aq,setAgentRunning:ax,setForkingEntryId:aX,forkToNewSession:ck,loadMoreMessages:b3,hasMoreMessages:al,totalMessages:aj,loadedMessagesCount:an,loadShadowedMessages:b4,handleAgentEventRef:bw}}},81537:(a,b,c)=>{c.d(b,{O:()=>k});let d=new Set,e=null,f=null,g=null,h=null,i=null,j=!1;function k(a){return d.add(a),e&&a(e),()=>{if(d.delete(a),0===d.size&&j){if(j=!1,h&&clearTimeout(h),h=null,g&&(clearInterval(g),g=null),i?.(),i=null,f){try{f.port.postMessage({type:"disconnect"})}catch{}try{f.port.close()}catch{}}f=null,e=null}}}}};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
globalThis.__BUILD_MANIFEST={polyfillFiles:["static/chunks/polyfills-42372ed130431b0a.js"],devFiles:[],lowPriorityFiles:["static/
|
|
1
|
+
globalThis.__BUILD_MANIFEST={polyfillFiles:["static/chunks/polyfills-42372ed130431b0a.js"],devFiles:[],lowPriorityFiles:["static/33lxcaITML1UfRwyCMnDs/_buildManifest.js","static/33lxcaITML1UfRwyCMnDs/_ssgManifest.js"],rootMainFiles:["static/chunks/webpack-19f3f7824a602f3b.js","static/chunks/4bd1b696-8cd12253b448cc13.js","static/chunks/3794-fba3f76785a3c234.js","static/chunks/main-app-a8a207cb34d209aa.js"],rootMainFilesTree:{},pages:{"/_app":[]}};
|