@turmind/halo 1.4.1 → 1.4.3

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.
@@ -1 +1 @@
1
- <!DOCTYPE html><!--7i420NUxbiDfuLxuofd_l--><html lang="en" class="dark"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" href="/_next/static/media/e4af272ccee01ff0-s.p.woff2" as="font" crossorigin="" type="font/woff2"/><link rel="stylesheet" href="/_next/static/css/c0ea31cd787f7aa7.css" data-precedence="next"/><link rel="preload" as="script" fetchPriority="low" href="/_next/static/chunks/webpack-ca926228f8cba1ff.js"/><script src="/_next/static/chunks/1b86ba38-c29611e086b2ce25.js" async=""></script><script src="/_next/static/chunks/698-19872069fed27164.js" async=""></script><script src="/_next/static/chunks/main-app-340a5b58ed229c4d.js" async=""></script><script src="/_next/static/chunks/989-6a0ec35b8ae2cb39.js" async=""></script><script src="/_next/static/chunks/app/layout-5ec6c5f713a8562b.js" async=""></script><meta name="robots" content="noindex"/><meta name="next-size-adjust" content=""/><title>404: This page could not be found.</title><title>Halo - Multi-Agent Workspace</title><meta name="description" content="Multi-agent collaboration workspace for complex project delivery"/><link rel="icon" href="/favicon.ico" type="image/x-icon" sizes="16x16"/><link rel="icon" href="/icon.svg?3a6863548daca964" type="image/svg+xml" sizes="any"/><script>try{var t=localStorage.getItem('halo_theme');if(t==='light'||t==='midnight'||t==='warm')document.documentElement.dataset.theme=t}catch(e){}</script><script src="/_next/static/chunks/polyfills-42372ed130431b0a.js" noModule=""></script></head><body class="__variable_f367f3 font-sans antialiased"><div hidden=""><!--$--><!--/$--></div><div style="font-family:system-ui,&quot;Segoe UI&quot;,Roboto,Helvetica,Arial,sans-serif,&quot;Apple Color Emoji&quot;,&quot;Segoe UI Emoji&quot;;height:100vh;text-align:center;display:flex;flex-direction:column;align-items:center;justify-content:center"><div><style>body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}</style><h1 class="next-error-h1" style="display:inline-block;margin:0 20px 0 0;padding:0 23px 0 0;font-size:24px;font-weight:500;vertical-align:top;line-height:49px">404</h1><div style="display:inline-block"><h2 style="font-size:14px;font-weight:400;line-height:49px;margin:0">This page could not be found.</h2></div></div></div><!--$--><!--/$--><script src="/_next/static/chunks/webpack-ca926228f8cba1ff.js" id="_R_" async=""></script><script>(self.__next_f=self.__next_f||[]).push([0])</script><script>self.__next_f.push([1,"1:\"$Sreact.fragment\"\n2:I[58321,[\"989\",\"static/chunks/989-6a0ec35b8ae2cb39.js\",\"177\",\"static/chunks/app/layout-5ec6c5f713a8562b.js\"],\"ThemeProvider\"]\n3:I[24554,[\"989\",\"static/chunks/989-6a0ec35b8ae2cb39.js\",\"177\",\"static/chunks/app/layout-5ec6c5f713a8562b.js\"],\"AppI18nProvider\"]\n4:I[63693,[],\"\"]\n5:I[74713,[],\"\"]\n6:I[23632,[],\"OutletBoundary\"]\n8:I[86889,[],\"AsyncMetadataOutlet\"]\na:I[23632,[],\"ViewportBoundary\"]\nc:I[23632,[],\"MetadataBoundary\"]\nd:\"$Sreact.suspense\"\nf:I[1935,[],\"\"]\n:HL[\"/_next/static/media/e4af272ccee01ff0-s.p.woff2\",\"font\",{\"crossOrigin\":\"\",\"type\":\"font/woff2\"}]\n:HL[\"/_next/static/css/c0ea31cd787f7aa7.css\",\"style\"]\n"])</script><script>self.__next_f.push([1,"0:{\"P\":null,\"b\":\"7i420NUxbiDfuLxuofd-l\",\"p\":\"\",\"c\":[\"\",\"_not-found\"],\"i\":false,\"f\":[[[\"\",{\"children\":[\"/_not-found\",{\"children\":[\"__PAGE__\",{}]}]},\"$undefined\",\"$undefined\",true],[\"\",[\"$\",\"$1\",\"c\",{\"children\":[[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/css/c0ea31cd787f7aa7.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}]],[\"$\",\"html\",null,{\"lang\":\"en\",\"className\":\"dark\",\"suppressHydrationWarning\":true,\"children\":[[\"$\",\"head\",null,{\"children\":[\"$\",\"script\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"try{var t=localStorage.getItem('halo_theme');if(t==='light'||t==='midnight'||t==='warm')document.documentElement.dataset.theme=t}catch(e){}\"}}]}],[\"$\",\"body\",null,{\"className\":\"__variable_f367f3 font-sans antialiased\",\"children\":[\"$\",\"$L2\",null,{\"children\":[\"$\",\"$L3\",null,{\"children\":[\"$\",\"$L4\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L5\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]}]}]}]]}]]}],{\"children\":[\"/_not-found\",[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$L4\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L5\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}],{\"children\":[\"__PAGE__\",[\"$\",\"$1\",\"c\",{\"children\":[[[\"$\",\"title\",null,{\"children\":\"404: This page could not be found.\"}],[\"$\",\"div\",null,{\"style\":{\"fontFamily\":\"system-ui,\\\"Segoe UI\\\",Roboto,Helvetica,Arial,sans-serif,\\\"Apple Color Emoji\\\",\\\"Segoe UI Emoji\\\"\",\"height\":\"100vh\",\"textAlign\":\"center\",\"display\":\"flex\",\"flexDirection\":\"column\",\"alignItems\":\"center\",\"justifyContent\":\"center\"},\"children\":[\"$\",\"div\",null,{\"children\":[[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}\"}}],[\"$\",\"h1\",null,{\"className\":\"next-error-h1\",\"style\":{\"display\":\"inline-block\",\"margin\":\"0 20px 0 0\",\"padding\":\"0 23px 0 0\",\"fontSize\":24,\"fontWeight\":500,\"verticalAlign\":\"top\",\"lineHeight\":\"49px\"},\"children\":404}],[\"$\",\"div\",null,{\"style\":{\"display\":\"inline-block\"},\"children\":[\"$\",\"h2\",null,{\"style\":{\"fontSize\":14,\"fontWeight\":400,\"lineHeight\":\"49px\",\"margin\":0},\"children\":\"This page could not be found.\"}]}]]}]}]],null,[\"$\",\"$L6\",null,{\"children\":[\"$L7\",[\"$\",\"$L8\",null,{\"promise\":\"$@9\"}]]}]]}],{},null,false]},null,false]},null,false],[\"$\",\"$1\",\"h\",{\"children\":[[\"$\",\"meta\",null,{\"name\":\"robots\",\"content\":\"noindex\"}],[[\"$\",\"$La\",null,{\"children\":\"$Lb\"}],[\"$\",\"meta\",null,{\"name\":\"next-size-adjust\",\"content\":\"\"}]],[\"$\",\"$Lc\",null,{\"children\":[\"$\",\"div\",null,{\"hidden\":true,\"children\":[\"$\",\"$d\",null,{\"fallback\":null,\"children\":\"$Le\"}]}]}]]}],false]],\"m\":\"$undefined\",\"G\":[\"$f\",[]],\"s\":false,\"S\":true}\n"])</script><script>self.__next_f.push([1,"b:[[\"$\",\"meta\",\"0\",{\"charSet\":\"utf-8\"}],[\"$\",\"meta\",\"1\",{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1\"}]]\n7:null\n"])</script><script>self.__next_f.push([1,"10:I[88809,[],\"IconMark\"]\n9:{\"metadata\":[[\"$\",\"title\",\"0\",{\"children\":\"Halo - Multi-Agent Workspace\"}],[\"$\",\"meta\",\"1\",{\"name\":\"description\",\"content\":\"Multi-agent collaboration workspace for complex project delivery\"}],[\"$\",\"link\",\"2\",{\"rel\":\"icon\",\"href\":\"/favicon.ico\",\"type\":\"image/x-icon\",\"sizes\":\"16x16\"}],[\"$\",\"link\",\"3\",{\"rel\":\"icon\",\"href\":\"/icon.svg?3a6863548daca964\",\"type\":\"image/svg+xml\",\"sizes\":\"any\"}],[\"$\",\"$L10\",\"4\",{}]],\"error\":null,\"digest\":\"$undefined\"}\n"])</script><script>self.__next_f.push([1,"e:\"$9:metadata\"\n"])</script></body></html>
1
+ <!DOCTYPE html><!--IHBLjOk92WBjj7mPz8oZK--><html lang="en" class="dark"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" href="/_next/static/media/e4af272ccee01ff0-s.p.woff2" as="font" crossorigin="" type="font/woff2"/><link rel="stylesheet" href="/_next/static/css/c0ea31cd787f7aa7.css" data-precedence="next"/><link rel="preload" as="script" fetchPriority="low" href="/_next/static/chunks/webpack-ca926228f8cba1ff.js"/><script src="/_next/static/chunks/1b86ba38-c29611e086b2ce25.js" async=""></script><script src="/_next/static/chunks/698-19872069fed27164.js" async=""></script><script src="/_next/static/chunks/main-app-340a5b58ed229c4d.js" async=""></script><script src="/_next/static/chunks/989-6a0ec35b8ae2cb39.js" async=""></script><script src="/_next/static/chunks/app/layout-5ec6c5f713a8562b.js" async=""></script><meta name="robots" content="noindex"/><meta name="next-size-adjust" content=""/><title>404: This page could not be found.</title><title>Halo - Multi-Agent Workspace</title><meta name="description" content="Multi-agent collaboration workspace for complex project delivery"/><link rel="icon" href="/favicon.ico" type="image/x-icon" sizes="16x16"/><link rel="icon" href="/icon.svg?3a6863548daca964" type="image/svg+xml" sizes="any"/><script>try{var t=localStorage.getItem('halo_theme');if(t==='light'||t==='midnight'||t==='warm')document.documentElement.dataset.theme=t}catch(e){}</script><script src="/_next/static/chunks/polyfills-42372ed130431b0a.js" noModule=""></script></head><body class="__variable_f367f3 font-sans antialiased"><div hidden=""><!--$--><!--/$--></div><div style="font-family:system-ui,&quot;Segoe UI&quot;,Roboto,Helvetica,Arial,sans-serif,&quot;Apple Color Emoji&quot;,&quot;Segoe UI Emoji&quot;;height:100vh;text-align:center;display:flex;flex-direction:column;align-items:center;justify-content:center"><div><style>body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}</style><h1 class="next-error-h1" style="display:inline-block;margin:0 20px 0 0;padding:0 23px 0 0;font-size:24px;font-weight:500;vertical-align:top;line-height:49px">404</h1><div style="display:inline-block"><h2 style="font-size:14px;font-weight:400;line-height:49px;margin:0">This page could not be found.</h2></div></div></div><!--$--><!--/$--><script src="/_next/static/chunks/webpack-ca926228f8cba1ff.js" id="_R_" async=""></script><script>(self.__next_f=self.__next_f||[]).push([0])</script><script>self.__next_f.push([1,"1:\"$Sreact.fragment\"\n2:I[58321,[\"989\",\"static/chunks/989-6a0ec35b8ae2cb39.js\",\"177\",\"static/chunks/app/layout-5ec6c5f713a8562b.js\"],\"ThemeProvider\"]\n3:I[24554,[\"989\",\"static/chunks/989-6a0ec35b8ae2cb39.js\",\"177\",\"static/chunks/app/layout-5ec6c5f713a8562b.js\"],\"AppI18nProvider\"]\n4:I[63693,[],\"\"]\n5:I[74713,[],\"\"]\n6:I[23632,[],\"OutletBoundary\"]\n8:I[86889,[],\"AsyncMetadataOutlet\"]\na:I[23632,[],\"ViewportBoundary\"]\nc:I[23632,[],\"MetadataBoundary\"]\nd:\"$Sreact.suspense\"\nf:I[1935,[],\"\"]\n:HL[\"/_next/static/media/e4af272ccee01ff0-s.p.woff2\",\"font\",{\"crossOrigin\":\"\",\"type\":\"font/woff2\"}]\n:HL[\"/_next/static/css/c0ea31cd787f7aa7.css\",\"style\"]\n"])</script><script>self.__next_f.push([1,"0:{\"P\":null,\"b\":\"IHBLjOk92WBjj7mPz8oZK\",\"p\":\"\",\"c\":[\"\",\"_not-found\"],\"i\":false,\"f\":[[[\"\",{\"children\":[\"/_not-found\",{\"children\":[\"__PAGE__\",{}]}]},\"$undefined\",\"$undefined\",true],[\"\",[\"$\",\"$1\",\"c\",{\"children\":[[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/css/c0ea31cd787f7aa7.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}]],[\"$\",\"html\",null,{\"lang\":\"en\",\"className\":\"dark\",\"suppressHydrationWarning\":true,\"children\":[[\"$\",\"head\",null,{\"children\":[\"$\",\"script\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"try{var t=localStorage.getItem('halo_theme');if(t==='light'||t==='midnight'||t==='warm')document.documentElement.dataset.theme=t}catch(e){}\"}}]}],[\"$\",\"body\",null,{\"className\":\"__variable_f367f3 font-sans antialiased\",\"children\":[\"$\",\"$L2\",null,{\"children\":[\"$\",\"$L3\",null,{\"children\":[\"$\",\"$L4\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L5\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]}]}]}]]}]]}],{\"children\":[\"/_not-found\",[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$L4\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L5\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}],{\"children\":[\"__PAGE__\",[\"$\",\"$1\",\"c\",{\"children\":[[[\"$\",\"title\",null,{\"children\":\"404: This page could not be found.\"}],[\"$\",\"div\",null,{\"style\":{\"fontFamily\":\"system-ui,\\\"Segoe UI\\\",Roboto,Helvetica,Arial,sans-serif,\\\"Apple Color Emoji\\\",\\\"Segoe UI Emoji\\\"\",\"height\":\"100vh\",\"textAlign\":\"center\",\"display\":\"flex\",\"flexDirection\":\"column\",\"alignItems\":\"center\",\"justifyContent\":\"center\"},\"children\":[\"$\",\"div\",null,{\"children\":[[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}\"}}],[\"$\",\"h1\",null,{\"className\":\"next-error-h1\",\"style\":{\"display\":\"inline-block\",\"margin\":\"0 20px 0 0\",\"padding\":\"0 23px 0 0\",\"fontSize\":24,\"fontWeight\":500,\"verticalAlign\":\"top\",\"lineHeight\":\"49px\"},\"children\":404}],[\"$\",\"div\",null,{\"style\":{\"display\":\"inline-block\"},\"children\":[\"$\",\"h2\",null,{\"style\":{\"fontSize\":14,\"fontWeight\":400,\"lineHeight\":\"49px\",\"margin\":0},\"children\":\"This page could not be found.\"}]}]]}]}]],null,[\"$\",\"$L6\",null,{\"children\":[\"$L7\",[\"$\",\"$L8\",null,{\"promise\":\"$@9\"}]]}]]}],{},null,false]},null,false]},null,false],[\"$\",\"$1\",\"h\",{\"children\":[[\"$\",\"meta\",null,{\"name\":\"robots\",\"content\":\"noindex\"}],[[\"$\",\"$La\",null,{\"children\":\"$Lb\"}],[\"$\",\"meta\",null,{\"name\":\"next-size-adjust\",\"content\":\"\"}]],[\"$\",\"$Lc\",null,{\"children\":[\"$\",\"div\",null,{\"hidden\":true,\"children\":[\"$\",\"$d\",null,{\"fallback\":null,\"children\":\"$Le\"}]}]}]]}],false]],\"m\":\"$undefined\",\"G\":[\"$f\",[]],\"s\":false,\"S\":true}\n"])</script><script>self.__next_f.push([1,"b:[[\"$\",\"meta\",\"0\",{\"charSet\":\"utf-8\"}],[\"$\",\"meta\",\"1\",{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1\"}]]\n7:null\n"])</script><script>self.__next_f.push([1,"10:I[88809,[],\"IconMark\"]\n9:{\"metadata\":[[\"$\",\"title\",\"0\",{\"children\":\"Halo - Multi-Agent Workspace\"}],[\"$\",\"meta\",\"1\",{\"name\":\"description\",\"content\":\"Multi-agent collaboration workspace for complex project delivery\"}],[\"$\",\"link\",\"2\",{\"rel\":\"icon\",\"href\":\"/favicon.ico\",\"type\":\"image/x-icon\",\"sizes\":\"16x16\"}],[\"$\",\"link\",\"3\",{\"rel\":\"icon\",\"href\":\"/icon.svg?3a6863548daca964\",\"type\":\"image/svg+xml\",\"sizes\":\"any\"}],[\"$\",\"$L10\",\"4\",{}]],\"error\":null,\"digest\":\"$undefined\"}\n"])</script><script>self.__next_f.push([1,"e:\"$9:metadata\"\n"])</script></body></html>
@@ -1 +1 @@
1
- <!DOCTYPE html><!--7i420NUxbiDfuLxuofd_l--><html lang="en" class="dark"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" href="/_next/static/media/e4af272ccee01ff0-s.p.woff2" as="font" crossorigin="" type="font/woff2"/><link rel="stylesheet" href="/_next/static/css/c0ea31cd787f7aa7.css" data-precedence="next"/><link rel="stylesheet" href="/_next/static/css/659eccb5db697b76.css" data-precedence="next"/><link rel="preload" as="script" fetchPriority="low" href="/_next/static/chunks/webpack-ca926228f8cba1ff.js"/><script src="/_next/static/chunks/1b86ba38-c29611e086b2ce25.js" async=""></script><script src="/_next/static/chunks/698-19872069fed27164.js" async=""></script><script src="/_next/static/chunks/main-app-340a5b58ed229c4d.js" async=""></script><script src="/_next/static/chunks/989-6a0ec35b8ae2cb39.js" async=""></script><script src="/_next/static/chunks/app/layout-5ec6c5f713a8562b.js" async=""></script><script src="/_next/static/chunks/1d2d5650-d8d130c85727fdbb.js" async=""></script><script src="/_next/static/chunks/23-092ac3901411582e.js" async=""></script><script src="/_next/static/chunks/app/page-bf9c0b21ae431c92.js" async=""></script><meta name="next-size-adjust" content=""/><title>Halo - Multi-Agent Workspace</title><meta name="description" content="Multi-agent collaboration workspace for complex project delivery"/><link rel="icon" href="/favicon.ico" type="image/x-icon" sizes="16x16"/><link rel="icon" href="/icon.svg?3a6863548daca964" type="image/svg+xml" sizes="any"/><script>try{var t=localStorage.getItem('halo_theme');if(t==='light'||t==='midnight'||t==='warm')document.documentElement.dataset.theme=t}catch(e){}</script><script src="/_next/static/chunks/polyfills-42372ed130431b0a.js" noModule=""></script></head><body class="__variable_f367f3 font-sans antialiased"><div hidden=""><!--$--><!--/$--></div><div class="flex h-screen w-screen items-center justify-center bg-[var(--background)]"><div class="text-sm text-[var(--muted-foreground)]">Loading...</div></div><!--$--><!--/$--><script src="/_next/static/chunks/webpack-ca926228f8cba1ff.js" id="_R_" async=""></script><script>(self.__next_f=self.__next_f||[]).push([0])</script><script>self.__next_f.push([1,"1:\"$Sreact.fragment\"\n2:I[58321,[\"989\",\"static/chunks/989-6a0ec35b8ae2cb39.js\",\"177\",\"static/chunks/app/layout-5ec6c5f713a8562b.js\"],\"ThemeProvider\"]\n3:I[24554,[\"989\",\"static/chunks/989-6a0ec35b8ae2cb39.js\",\"177\",\"static/chunks/app/layout-5ec6c5f713a8562b.js\"],\"AppI18nProvider\"]\n4:I[63693,[],\"\"]\n5:I[74713,[],\"\"]\n6:I[5444,[],\"ClientPageRoot\"]\n7:I[18100,[\"560\",\"static/chunks/1d2d5650-d8d130c85727fdbb.js\",\"23\",\"static/chunks/23-092ac3901411582e.js\",\"989\",\"static/chunks/989-6a0ec35b8ae2cb39.js\",\"974\",\"static/chunks/app/page-bf9c0b21ae431c92.js\"],\"default\"]\na:I[23632,[],\"OutletBoundary\"]\nc:I[86889,[],\"AsyncMetadataOutlet\"]\ne:I[23632,[],\"ViewportBoundary\"]\n10:I[23632,[],\"MetadataBoundary\"]\n11:\"$Sreact.suspense\"\n13:I[1935,[],\"\"]\n:HL[\"/_next/static/media/e4af272ccee01ff0-s.p.woff2\",\"font\",{\"crossOrigin\":\"\",\"type\":\"font/woff2\"}]\n:HL[\"/_next/static/css/c0ea31cd787f7aa7.css\",\"style\"]\n:HL[\"/_next/static/css/659eccb5db697b76.css\",\"style\"]\n"])</script><script>self.__next_f.push([1,"0:{\"P\":null,\"b\":\"7i420NUxbiDfuLxuofd-l\",\"p\":\"\",\"c\":[\"\",\"\"],\"i\":false,\"f\":[[[\"\",{\"children\":[\"__PAGE__\",{}]},\"$undefined\",\"$undefined\",true],[\"\",[\"$\",\"$1\",\"c\",{\"children\":[[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/css/c0ea31cd787f7aa7.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}]],[\"$\",\"html\",null,{\"lang\":\"en\",\"className\":\"dark\",\"suppressHydrationWarning\":true,\"children\":[[\"$\",\"head\",null,{\"children\":[\"$\",\"script\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"try{var t=localStorage.getItem('halo_theme');if(t==='light'||t==='midnight'||t==='warm')document.documentElement.dataset.theme=t}catch(e){}\"}}]}],[\"$\",\"body\",null,{\"className\":\"__variable_f367f3 font-sans antialiased\",\"children\":[\"$\",\"$L2\",null,{\"children\":[\"$\",\"$L3\",null,{\"children\":[\"$\",\"$L4\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L5\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":[[[\"$\",\"title\",null,{\"children\":\"404: This page could not be found.\"}],[\"$\",\"div\",null,{\"style\":{\"fontFamily\":\"system-ui,\\\"Segoe UI\\\",Roboto,Helvetica,Arial,sans-serif,\\\"Apple Color Emoji\\\",\\\"Segoe UI Emoji\\\"\",\"height\":\"100vh\",\"textAlign\":\"center\",\"display\":\"flex\",\"flexDirection\":\"column\",\"alignItems\":\"center\",\"justifyContent\":\"center\"},\"children\":[\"$\",\"div\",null,{\"children\":[[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}\"}}],[\"$\",\"h1\",null,{\"className\":\"next-error-h1\",\"style\":{\"display\":\"inline-block\",\"margin\":\"0 20px 0 0\",\"padding\":\"0 23px 0 0\",\"fontSize\":24,\"fontWeight\":500,\"verticalAlign\":\"top\",\"lineHeight\":\"49px\"},\"children\":404}],[\"$\",\"div\",null,{\"style\":{\"display\":\"inline-block\"},\"children\":[\"$\",\"h2\",null,{\"style\":{\"fontSize\":14,\"fontWeight\":400,\"lineHeight\":\"49px\",\"margin\":0},\"children\":\"This page could not be found.\"}]}]]}]}]],[]],\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]}]}]}]]}]]}],{\"children\":[\"__PAGE__\",[\"$\",\"$1\",\"c\",{\"children\":[[\"$\",\"$L6\",null,{\"Component\":\"$7\",\"searchParams\":{},\"params\":{},\"promises\":[\"$@8\",\"$@9\"]}],[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/css/659eccb5db697b76.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}]],[\"$\",\"$La\",null,{\"children\":[\"$Lb\",[\"$\",\"$Lc\",null,{\"promise\":\"$@d\"}]]}]]}],{},null,false]},null,false],[\"$\",\"$1\",\"h\",{\"children\":[null,[[\"$\",\"$Le\",null,{\"children\":\"$Lf\"}],[\"$\",\"meta\",null,{\"name\":\"next-size-adjust\",\"content\":\"\"}]],[\"$\",\"$L10\",null,{\"children\":[\"$\",\"div\",null,{\"hidden\":true,\"children\":[\"$\",\"$11\",null,{\"fallback\":null,\"children\":\"$L12\"}]}]}]]}],false]],\"m\":\"$undefined\",\"G\":[\"$13\",[]],\"s\":false,\"S\":true}\n"])</script><script>self.__next_f.push([1,"8:{}\n9:\"$0:f:0:1:2:children:1:props:children:0:props:params\"\n"])</script><script>self.__next_f.push([1,"f:[[\"$\",\"meta\",\"0\",{\"charSet\":\"utf-8\"}],[\"$\",\"meta\",\"1\",{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1\"}]]\nb:null\n"])</script><script>self.__next_f.push([1,"14:I[88809,[],\"IconMark\"]\nd:{\"metadata\":[[\"$\",\"title\",\"0\",{\"children\":\"Halo - Multi-Agent Workspace\"}],[\"$\",\"meta\",\"1\",{\"name\":\"description\",\"content\":\"Multi-agent collaboration workspace for complex project delivery\"}],[\"$\",\"link\",\"2\",{\"rel\":\"icon\",\"href\":\"/favicon.ico\",\"type\":\"image/x-icon\",\"sizes\":\"16x16\"}],[\"$\",\"link\",\"3\",{\"rel\":\"icon\",\"href\":\"/icon.svg?3a6863548daca964\",\"type\":\"image/svg+xml\",\"sizes\":\"any\"}],[\"$\",\"$L14\",\"4\",{}]],\"error\":null,\"digest\":\"$undefined\"}\n"])</script><script>self.__next_f.push([1,"12:\"$d:metadata\"\n"])</script></body></html>
1
+ <!DOCTYPE html><!--IHBLjOk92WBjj7mPz8oZK--><html lang="en" class="dark"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" href="/_next/static/media/e4af272ccee01ff0-s.p.woff2" as="font" crossorigin="" type="font/woff2"/><link rel="stylesheet" href="/_next/static/css/c0ea31cd787f7aa7.css" data-precedence="next"/><link rel="stylesheet" href="/_next/static/css/659eccb5db697b76.css" data-precedence="next"/><link rel="preload" as="script" fetchPriority="low" href="/_next/static/chunks/webpack-ca926228f8cba1ff.js"/><script src="/_next/static/chunks/1b86ba38-c29611e086b2ce25.js" async=""></script><script src="/_next/static/chunks/698-19872069fed27164.js" async=""></script><script src="/_next/static/chunks/main-app-340a5b58ed229c4d.js" async=""></script><script src="/_next/static/chunks/989-6a0ec35b8ae2cb39.js" async=""></script><script src="/_next/static/chunks/app/layout-5ec6c5f713a8562b.js" async=""></script><script src="/_next/static/chunks/1d2d5650-d8d130c85727fdbb.js" async=""></script><script src="/_next/static/chunks/23-092ac3901411582e.js" async=""></script><script src="/_next/static/chunks/app/page-bf9c0b21ae431c92.js" async=""></script><meta name="next-size-adjust" content=""/><title>Halo - Multi-Agent Workspace</title><meta name="description" content="Multi-agent collaboration workspace for complex project delivery"/><link rel="icon" href="/favicon.ico" type="image/x-icon" sizes="16x16"/><link rel="icon" href="/icon.svg?3a6863548daca964" type="image/svg+xml" sizes="any"/><script>try{var t=localStorage.getItem('halo_theme');if(t==='light'||t==='midnight'||t==='warm')document.documentElement.dataset.theme=t}catch(e){}</script><script src="/_next/static/chunks/polyfills-42372ed130431b0a.js" noModule=""></script></head><body class="__variable_f367f3 font-sans antialiased"><div hidden=""><!--$--><!--/$--></div><div class="flex h-screen w-screen items-center justify-center bg-[var(--background)]"><div class="text-sm text-[var(--muted-foreground)]">Loading...</div></div><!--$--><!--/$--><script src="/_next/static/chunks/webpack-ca926228f8cba1ff.js" id="_R_" async=""></script><script>(self.__next_f=self.__next_f||[]).push([0])</script><script>self.__next_f.push([1,"1:\"$Sreact.fragment\"\n2:I[58321,[\"989\",\"static/chunks/989-6a0ec35b8ae2cb39.js\",\"177\",\"static/chunks/app/layout-5ec6c5f713a8562b.js\"],\"ThemeProvider\"]\n3:I[24554,[\"989\",\"static/chunks/989-6a0ec35b8ae2cb39.js\",\"177\",\"static/chunks/app/layout-5ec6c5f713a8562b.js\"],\"AppI18nProvider\"]\n4:I[63693,[],\"\"]\n5:I[74713,[],\"\"]\n6:I[5444,[],\"ClientPageRoot\"]\n7:I[18100,[\"560\",\"static/chunks/1d2d5650-d8d130c85727fdbb.js\",\"23\",\"static/chunks/23-092ac3901411582e.js\",\"989\",\"static/chunks/989-6a0ec35b8ae2cb39.js\",\"974\",\"static/chunks/app/page-bf9c0b21ae431c92.js\"],\"default\"]\na:I[23632,[],\"OutletBoundary\"]\nc:I[86889,[],\"AsyncMetadataOutlet\"]\ne:I[23632,[],\"ViewportBoundary\"]\n10:I[23632,[],\"MetadataBoundary\"]\n11:\"$Sreact.suspense\"\n13:I[1935,[],\"\"]\n:HL[\"/_next/static/media/e4af272ccee01ff0-s.p.woff2\",\"font\",{\"crossOrigin\":\"\",\"type\":\"font/woff2\"}]\n:HL[\"/_next/static/css/c0ea31cd787f7aa7.css\",\"style\"]\n:HL[\"/_next/static/css/659eccb5db697b76.css\",\"style\"]\n"])</script><script>self.__next_f.push([1,"0:{\"P\":null,\"b\":\"IHBLjOk92WBjj7mPz8oZK\",\"p\":\"\",\"c\":[\"\",\"\"],\"i\":false,\"f\":[[[\"\",{\"children\":[\"__PAGE__\",{}]},\"$undefined\",\"$undefined\",true],[\"\",[\"$\",\"$1\",\"c\",{\"children\":[[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/css/c0ea31cd787f7aa7.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}]],[\"$\",\"html\",null,{\"lang\":\"en\",\"className\":\"dark\",\"suppressHydrationWarning\":true,\"children\":[[\"$\",\"head\",null,{\"children\":[\"$\",\"script\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"try{var t=localStorage.getItem('halo_theme');if(t==='light'||t==='midnight'||t==='warm')document.documentElement.dataset.theme=t}catch(e){}\"}}]}],[\"$\",\"body\",null,{\"className\":\"__variable_f367f3 font-sans antialiased\",\"children\":[\"$\",\"$L2\",null,{\"children\":[\"$\",\"$L3\",null,{\"children\":[\"$\",\"$L4\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L5\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":[[[\"$\",\"title\",null,{\"children\":\"404: This page could not be found.\"}],[\"$\",\"div\",null,{\"style\":{\"fontFamily\":\"system-ui,\\\"Segoe UI\\\",Roboto,Helvetica,Arial,sans-serif,\\\"Apple Color Emoji\\\",\\\"Segoe UI Emoji\\\"\",\"height\":\"100vh\",\"textAlign\":\"center\",\"display\":\"flex\",\"flexDirection\":\"column\",\"alignItems\":\"center\",\"justifyContent\":\"center\"},\"children\":[\"$\",\"div\",null,{\"children\":[[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}\"}}],[\"$\",\"h1\",null,{\"className\":\"next-error-h1\",\"style\":{\"display\":\"inline-block\",\"margin\":\"0 20px 0 0\",\"padding\":\"0 23px 0 0\",\"fontSize\":24,\"fontWeight\":500,\"verticalAlign\":\"top\",\"lineHeight\":\"49px\"},\"children\":404}],[\"$\",\"div\",null,{\"style\":{\"display\":\"inline-block\"},\"children\":[\"$\",\"h2\",null,{\"style\":{\"fontSize\":14,\"fontWeight\":400,\"lineHeight\":\"49px\",\"margin\":0},\"children\":\"This page could not be found.\"}]}]]}]}]],[]],\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]}]}]}]]}]]}],{\"children\":[\"__PAGE__\",[\"$\",\"$1\",\"c\",{\"children\":[[\"$\",\"$L6\",null,{\"Component\":\"$7\",\"searchParams\":{},\"params\":{},\"promises\":[\"$@8\",\"$@9\"]}],[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/css/659eccb5db697b76.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}]],[\"$\",\"$La\",null,{\"children\":[\"$Lb\",[\"$\",\"$Lc\",null,{\"promise\":\"$@d\"}]]}]]}],{},null,false]},null,false],[\"$\",\"$1\",\"h\",{\"children\":[null,[[\"$\",\"$Le\",null,{\"children\":\"$Lf\"}],[\"$\",\"meta\",null,{\"name\":\"next-size-adjust\",\"content\":\"\"}]],[\"$\",\"$L10\",null,{\"children\":[\"$\",\"div\",null,{\"hidden\":true,\"children\":[\"$\",\"$11\",null,{\"fallback\":null,\"children\":\"$L12\"}]}]}]]}],false]],\"m\":\"$undefined\",\"G\":[\"$13\",[]],\"s\":false,\"S\":true}\n"])</script><script>self.__next_f.push([1,"8:{}\n9:\"$0:f:0:1:2:children:1:props:children:0:props:params\"\n"])</script><script>self.__next_f.push([1,"f:[[\"$\",\"meta\",\"0\",{\"charSet\":\"utf-8\"}],[\"$\",\"meta\",\"1\",{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1\"}]]\nb:null\n"])</script><script>self.__next_f.push([1,"14:I[88809,[],\"IconMark\"]\nd:{\"metadata\":[[\"$\",\"title\",\"0\",{\"children\":\"Halo - Multi-Agent Workspace\"}],[\"$\",\"meta\",\"1\",{\"name\":\"description\",\"content\":\"Multi-agent collaboration workspace for complex project delivery\"}],[\"$\",\"link\",\"2\",{\"rel\":\"icon\",\"href\":\"/favicon.ico\",\"type\":\"image/x-icon\",\"sizes\":\"16x16\"}],[\"$\",\"link\",\"3\",{\"rel\":\"icon\",\"href\":\"/icon.svg?3a6863548daca964\",\"type\":\"image/svg+xml\",\"sizes\":\"any\"}],[\"$\",\"$L14\",\"4\",{}]],\"error\":null,\"digest\":\"$undefined\"}\n"])</script><script>self.__next_f.push([1,"12:\"$d:metadata\"\n"])</script></body></html>
@@ -14,7 +14,7 @@ e:I[23632,[],"ViewportBoundary"]
14
14
  :HL["/_next/static/media/e4af272ccee01ff0-s.p.woff2","font",{"crossOrigin":"","type":"font/woff2"}]
15
15
  :HL["/_next/static/css/c0ea31cd787f7aa7.css","style"]
16
16
  :HL["/_next/static/css/659eccb5db697b76.css","style"]
17
- 0:{"P":null,"b":"7i420NUxbiDfuLxuofd-l","p":"","c":["",""],"i":false,"f":[[["",{"children":["__PAGE__",{}]},"$undefined","$undefined",true],["",["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/c0ea31cd787f7aa7.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}]],["$","html",null,{"lang":"en","className":"dark","suppressHydrationWarning":true,"children":[["$","head",null,{"children":["$","script",null,{"dangerouslySetInnerHTML":{"__html":"try{var t=localStorage.getItem('halo_theme');if(t==='light'||t==='midnight'||t==='warm')document.documentElement.dataset.theme=t}catch(e){}"}}]}],["$","body",null,{"className":"__variable_f367f3 font-sans antialiased","children":["$","$L2",null,{"children":["$","$L3",null,{"children":["$","$L4",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L5",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]],"forbidden":"$undefined","unauthorized":"$undefined"}]}]}]}]]}]]}],{"children":["__PAGE__",["$","$1","c",{"children":[["$","$L6",null,{"Component":"$7","searchParams":{},"params":{},"promises":["$@8","$@9"]}],[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/659eccb5db697b76.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}]],["$","$La",null,{"children":["$Lb",["$","$Lc",null,{"promise":"$@d"}]]}]]}],{},null,false]},null,false],["$","$1","h",{"children":[null,[["$","$Le",null,{"children":"$Lf"}],["$","meta",null,{"name":"next-size-adjust","content":""}]],["$","$L10",null,{"children":["$","div",null,{"hidden":true,"children":["$","$11",null,{"fallback":null,"children":"$L12"}]}]}]]}],false]],"m":"$undefined","G":["$13",[]],"s":false,"S":true}
17
+ 0:{"P":null,"b":"IHBLjOk92WBjj7mPz8oZK","p":"","c":["",""],"i":false,"f":[[["",{"children":["__PAGE__",{}]},"$undefined","$undefined",true],["",["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/c0ea31cd787f7aa7.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}]],["$","html",null,{"lang":"en","className":"dark","suppressHydrationWarning":true,"children":[["$","head",null,{"children":["$","script",null,{"dangerouslySetInnerHTML":{"__html":"try{var t=localStorage.getItem('halo_theme');if(t==='light'||t==='midnight'||t==='warm')document.documentElement.dataset.theme=t}catch(e){}"}}]}],["$","body",null,{"className":"__variable_f367f3 font-sans antialiased","children":["$","$L2",null,{"children":["$","$L3",null,{"children":["$","$L4",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L5",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]],"forbidden":"$undefined","unauthorized":"$undefined"}]}]}]}]]}]]}],{"children":["__PAGE__",["$","$1","c",{"children":[["$","$L6",null,{"Component":"$7","searchParams":{},"params":{},"promises":["$@8","$@9"]}],[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/659eccb5db697b76.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}]],["$","$La",null,{"children":["$Lb",["$","$Lc",null,{"promise":"$@d"}]]}]]}],{},null,false]},null,false],["$","$1","h",{"children":[null,[["$","$Le",null,{"children":"$Lf"}],["$","meta",null,{"name":"next-size-adjust","content":""}]],["$","$L10",null,{"children":["$","div",null,{"hidden":true,"children":["$","$11",null,{"fallback":null,"children":"$L12"}]}]}]]}],false]],"m":"$undefined","G":["$13",[]],"s":false,"S":true}
18
18
  8:{}
19
19
  9:"$0:f:0:1:2:children:1:props:children:0:props:params"
20
20
  f:[["$","meta","0",{"charSet":"utf-8"}],["$","meta","1",{"name":"viewport","content":"width=device-width, initial-scale=1"}]]
package/dist/index.js CHANGED
@@ -1544,6 +1544,17 @@ var init_micro_compact = __esm({
1544
1544
  });
1545
1545
 
1546
1546
  // ../server/dist/agents/agent-loop.js
1547
+ function toolResultImages(content) {
1548
+ const images = [];
1549
+ for (const block of content) {
1550
+ if (block.type !== "tool_result" || typeof block.content === "string")
1551
+ continue;
1552
+ for (const b of block.content)
1553
+ if (b.type === "image")
1554
+ images.push(b);
1555
+ }
1556
+ return images.length > 0 ? [{ type: "text", text: "[Images from the tool results above]" }, ...images] : [];
1557
+ }
1547
1558
  var TOOL_ERROR_MARKER, TOOL_WARN_MARKER, MODEL_TIMEOUT_ERROR, AgentLoop;
1548
1559
  var init_agent_loop = __esm({
1549
1560
  "../server/dist/agents/agent-loop.js"() {
@@ -7843,7 +7854,7 @@ var init_deepseek_agent = __esm({
7843
7854
  if (msg.role === "user") {
7844
7855
  if (typeof msg.content !== "string" && msg.content.some((b) => b.type === "tool_result")) {
7845
7856
  msgs.push(...this.convertToolResults(msg.content));
7846
- const rest = msg.content.filter((b) => b.type !== "tool_result");
7857
+ const rest = [...toolResultImages(msg.content), ...msg.content.filter((b) => b.type !== "tool_result")];
7847
7858
  if (rest.length > 0) {
7848
7859
  msgs.push({ role: "user", content: this.convertUserContent(rest) });
7849
7860
  }
@@ -7860,7 +7871,7 @@ var init_deepseek_agent = __esm({
7860
7871
  const results = [];
7861
7872
  for (const block of content) {
7862
7873
  if (block.type === "tool_result") {
7863
- const text6 = typeof block.content === "string" ? block.content : block.content.map((b) => b.type === "text" ? b.text : "[image]").join("\n");
7874
+ const text6 = typeof block.content === "string" ? block.content : block.content.map((b) => b.type === "text" ? b.text : "[image: in the next user message]").join("\n");
7864
7875
  results.push({
7865
7876
  role: "tool",
7866
7877
  tool_call_id: block.tool_use_id,
@@ -8053,7 +8064,7 @@ var init_kimi_agent = __esm({
8053
8064
  if (msg.role === "user") {
8054
8065
  if (typeof msg.content !== "string" && msg.content.some((b) => b.type === "tool_result")) {
8055
8066
  msgs.push(...this.convertToolResults(msg.content));
8056
- const rest = msg.content.filter((b) => b.type !== "tool_result");
8067
+ const rest = [...toolResultImages(msg.content), ...msg.content.filter((b) => b.type !== "tool_result")];
8057
8068
  if (rest.length > 0) {
8058
8069
  msgs.push({ role: "user", content: this.convertUserContent(rest) });
8059
8070
  }
@@ -8070,7 +8081,7 @@ var init_kimi_agent = __esm({
8070
8081
  const results = [];
8071
8082
  for (const block of content) {
8072
8083
  if (block.type === "tool_result") {
8073
- const text6 = typeof block.content === "string" ? block.content : block.content.map((b) => b.type === "text" ? b.text : "[image]").join("\n");
8084
+ const text6 = typeof block.content === "string" ? block.content : block.content.map((b) => b.type === "text" ? b.text : "[image: in the next user message]").join("\n");
8074
8085
  results.push({
8075
8086
  role: "tool",
8076
8087
  tool_call_id: block.tool_use_id,
@@ -8890,7 +8901,7 @@ var init_openai_agent = __esm({
8890
8901
  if (msg.role === "user") {
8891
8902
  if (typeof msg.content !== "string" && msg.content.some((b) => b.type === "tool_result")) {
8892
8903
  msgs.push(...this.convertToolResults(msg.content));
8893
- const rest = msg.content.filter((b) => b.type !== "tool_result");
8904
+ const rest = [...toolResultImages(msg.content), ...msg.content.filter((b) => b.type !== "tool_result")];
8894
8905
  if (rest.length > 0) {
8895
8906
  msgs.push({ role: "user", content: this.convertUserContent(rest) });
8896
8907
  }
@@ -8907,7 +8918,7 @@ var init_openai_agent = __esm({
8907
8918
  const results = [];
8908
8919
  for (const block of content) {
8909
8920
  if (block.type === "tool_result") {
8910
- const text6 = typeof block.content === "string" ? block.content : block.content.map((b) => b.type === "text" ? b.text : "[image]").join("\n");
8921
+ const text6 = typeof block.content === "string" ? block.content : block.content.map((b) => b.type === "text" ? b.text : "[image: in the next user message]").join("\n");
8911
8922
  results.push({ role: "tool", tool_call_id: block.tool_use_id, content: text6 });
8912
8923
  }
8913
8924
  }
@@ -8916,7 +8927,17 @@ var init_openai_agent = __esm({
8916
8927
  convertUserContent(content) {
8917
8928
  if (typeof content === "string")
8918
8929
  return content;
8919
- return content.filter((b) => b.type === "text").map((b) => b.text).join("\n");
8930
+ if (!content.some((b) => b.type === "image")) {
8931
+ return content.filter((b) => b.type === "text").map((b) => b.text).join("\n");
8932
+ }
8933
+ const parts = [];
8934
+ for (const b of content) {
8935
+ if (b.type === "text")
8936
+ parts.push({ type: "text", text: b.text });
8937
+ else if (b.type === "image")
8938
+ parts.push({ type: "image_url", image_url: { url: `data:${b.source.media_type};base64,${b.source.data}` } });
8939
+ }
8940
+ return parts;
8920
8941
  }
8921
8942
  convertAssistantMessage(msg) {
8922
8943
  const results = [];
@@ -9103,14 +9124,16 @@ var init_mantle_agent = __esm({
9103
9124
  return items;
9104
9125
  }
9105
9126
  /** Tool results feed back as `function_call_output` items keyed by call_id.
9106
- * Images in a tool result are dropped — the Responses API expects
9107
- * function_call_output.output as a string. */
9127
+ * A block-array result (view_image: text + image) goes out as input_text /
9128
+ * input_image parts — `output` takes content parts, not only a string
9129
+ * (verified live on gpt-5.6-terra and gpt-6-astra). Flattening it to text
9130
+ * used to hand the model an `[image]` placeholder instead of the pixels. */
9108
9131
  convertToolResults(content) {
9109
9132
  const out = [];
9110
9133
  for (const block of content) {
9111
9134
  if (block.type === "tool_result") {
9112
- const text6 = typeof block.content === "string" ? block.content : block.content.map((b) => b.type === "text" ? b.text : "[image]").join("\n");
9113
- out.push({ type: "function_call_output", call_id: block.tool_use_id, output: text6 });
9135
+ const output = typeof block.content === "string" ? block.content : block.content.map((b) => b.type === "text" ? { type: "input_text", text: b.text } : { type: "input_image", image_url: `data:${b.source.media_type};base64,${b.source.data}` });
9136
+ out.push({ type: "function_call_output", call_id: block.tool_use_id, output });
9114
9137
  }
9115
9138
  }
9116
9139
  return out;
@@ -11806,7 +11829,7 @@ async function initObservability() {
11806
11829
  return true;
11807
11830
  }
11808
11831
  const { registerSdk: registerSdk2 } = await Promise.resolve().then(() => (init_otel_sdk(), otel_sdk_exports));
11809
- providers = registerSdk2(process.env.OTEL_SERVICE_NAME, "1.4.1");
11832
+ providers = registerSdk2(process.env.OTEL_SERVICE_NAME, "1.4.3");
11810
11833
  console.log(`[Observability] OTLP export \u2192 ${process.env.OTEL_EXPORTER_OTLP_ENDPOINT} (service.name=${process.env.OTEL_SERVICE_NAME}, capture_content=${config.observability.captureContent})`);
11811
11834
  return true;
11812
11835
  }
@@ -25692,14 +25715,14 @@ var init_event_adapter = __esm({
25692
25715
  try {
25693
25716
  await this.deps.sendText(text6);
25694
25717
  } catch (err) {
25695
- console.log(`[Telegram] sendText failed: ${err instanceof Error ? err.message : String(err)}`);
25718
+ console.warn(`[Telegram] sendText failed: ${err instanceof Error ? err.message : String(err)}`);
25696
25719
  }
25697
25720
  }
25698
25721
  for (const p of mediaPaths) {
25699
25722
  try {
25700
25723
  await this.deps.sendMedia(p);
25701
25724
  } catch (err) {
25702
- console.log(`[Telegram] sendMedia ${p} failed: ${err instanceof Error ? err.message : String(err)}`);
25725
+ console.warn(`[Telegram] sendMedia ${p} failed: ${err instanceof Error ? err.message : String(err)}`);
25703
25726
  }
25704
25727
  }
25705
25728
  }
@@ -25765,6 +25788,21 @@ ${agentText}`;
25765
25788
  });
25766
25789
  return sessionId;
25767
25790
  }
25791
+ function restoreChannelRoute(args) {
25792
+ const { registry: registry2, workspacePath, bridge, sessionPrefix: sessionPrefix2, route } = args;
25793
+ const sm = registry2.peek(workspacePath) ?? (claimWorkspaceRuntime(workspacePath) ? registry2.getOrCreate(workspacePath) : void 0);
25794
+ if (!sm) {
25795
+ console.warn(`[${bridge.channel}] reply route not restored for ${sessionPrefix2}*: ${workspacePath} runtime is owned by another live process (.halo/runtime.lock)`);
25796
+ return null;
25797
+ }
25798
+ const latest = sm.findLatestByPrefix(sessionPrefix2);
25799
+ if (!latest)
25800
+ return null;
25801
+ const sessionId = resolveGoalRoute(sm.getDb(), latest.id);
25802
+ bridge.setRoute(sessionId, route);
25803
+ bridge.ensureListener(sm, sessionId);
25804
+ return sessionId;
25805
+ }
25768
25806
  async function dispatchChannelCommand(ctx, command, arg, opts) {
25769
25807
  const { bridge, route, channelName, extraHelpLines } = opts;
25770
25808
  const result = await dispatchCommand(ctx, command, arg, { channelName, extraHelpLines });
@@ -25783,6 +25821,7 @@ var init_inbound = __esm({
25783
25821
  "../server/dist/channels/shared/inbound.js"() {
25784
25822
  "use strict";
25785
25823
  init_goal_mode();
25824
+ init_workspace_runtime_lock();
25786
25825
  init_accounts();
25787
25826
  init_commands2();
25788
25827
  init_busy_hint();
@@ -25907,6 +25946,25 @@ function isUserAllowed(account, userId, username) {
25907
25946
  function buildTgSessionPrefix(userId) {
25908
25947
  return sessionPrefix("tg", String(userId));
25909
25948
  }
25949
+ function restoreReplyRoute(args) {
25950
+ const { registry: registry2, db, account, bridge } = args;
25951
+ const chatId = getAccount(db, account.accountId)?.config.lastActiveChatId;
25952
+ if (typeof chatId !== "string" || !/^\d+$/.test(chatId))
25953
+ return;
25954
+ const workspacePath = resolveAccountWorkspace(account);
25955
+ if (!workspacePath)
25956
+ return;
25957
+ const userId = Number(chatId);
25958
+ const sid = restoreChannelRoute({
25959
+ registry: registry2,
25960
+ workspacePath,
25961
+ bridge,
25962
+ sessionPrefix: buildTgSessionPrefix(userId),
25963
+ route: { chatId: userId }
25964
+ });
25965
+ if (sid)
25966
+ console.log(`[Telegram] account ${account.accountId} reply route restored for ${sid}`);
25967
+ }
25910
25968
  function startTelegramChannel(deps) {
25911
25969
  const { registry: registry2, db } = deps;
25912
25970
  const runners = /* @__PURE__ */ new Map();
@@ -25970,6 +26028,7 @@ function startTelegramChannel(deps) {
25970
26028
  }
25971
26029
  })
25972
26030
  });
26031
+ restoreReplyRoute({ registry: registry2, db, account, bridge });
25973
26032
  const promise = runBot({ registry: registry2, db, account, bot, abort, bridge, activeOverrides: activeOverrides2, restartSelf }).catch((err) => console.log(`[Telegram] account ${accountId} bot crashed: ${String(err)}`));
25974
26033
  runners.set(accountId, { accountId, bot, abort, promise, bridge, activeOverrides: activeOverrides2 });
25975
26034
  console.log(`[Telegram] account ${accountId} started (@${account.botUsername}, workspace=${account.workspacePath})`);
@@ -26867,14 +26926,14 @@ var init_event_adapter2 = __esm({
26867
26926
  try {
26868
26927
  await this.deps.sendText(text6);
26869
26928
  } catch (err) {
26870
- console.log(`[WeChat] sendText failed: ${err instanceof Error ? err.message : String(err)}`);
26929
+ console.warn(`[WeChat] sendText failed: ${err instanceof Error ? err.message : String(err)}`);
26871
26930
  }
26872
26931
  }
26873
26932
  for (const p of mediaPaths) {
26874
26933
  try {
26875
26934
  await this.deps.sendMedia(p);
26876
26935
  } catch (err) {
26877
- console.log(`[WeChat] sendMedia ${p} failed: ${err instanceof Error ? err.message : String(err)}`);
26936
+ console.warn(`[WeChat] sendMedia ${p} failed: ${err instanceof Error ? err.message : String(err)}`);
26878
26937
  }
26879
26938
  }
26880
26939
  }
@@ -27265,6 +27324,7 @@ function startWechatChannel(deps) {
27265
27324
  });
27266
27325
  });
27267
27326
  };
27327
+ restoreReplyRoutes({ registry: registry2, db, account, bridge });
27268
27328
  const promise = runAccountLoop({ registry: registry2, db, account, abort: abort.signal, bridge, activeOverrides: activeOverrides2, restartSelf, startNewAccount: startAccount }).catch((err) => console.log(`[WeChat] account ${accountId} loop crashed: ${String(err)}`));
27269
27329
  runners.set(accountId, { accountId, abort, promise, bridge, activeOverrides: activeOverrides2 });
27270
27330
  console.log(`[WeChat] account ${accountId} started (workspace=${account.workspacePath})`);
@@ -27295,6 +27355,27 @@ function startWechatChannel(deps) {
27295
27355
  startAccount(acc.accountId);
27296
27356
  return { startAccount, stopAccount, stopAll };
27297
27357
  }
27358
+ function restoreReplyRoutes(args) {
27359
+ const { registry: registry2, db, account, bridge } = args;
27360
+ const tokens = getAccount(db, account.accountId)?.config.contextTokens ?? {};
27361
+ const users = Object.keys(tokens);
27362
+ if (users.length === 0)
27363
+ return;
27364
+ const workspacePath = resolveAccountWorkspace(account);
27365
+ if (!workspacePath)
27366
+ return;
27367
+ for (const userId of users) {
27368
+ const sid = restoreChannelRoute({
27369
+ registry: registry2,
27370
+ workspacePath,
27371
+ bridge,
27372
+ sessionPrefix: buildWxSessionPrefix(userId),
27373
+ route: wxRoute(userId, tokens[userId])
27374
+ });
27375
+ if (sid)
27376
+ console.log(`[WeChat] ${account.accountId} reply route restored for ${sid}`);
27377
+ }
27378
+ }
27298
27379
  async function runAccountLoop(args) {
27299
27380
  const { registry: registry2, db, account, abort, bridge, activeOverrides: activeOverrides2, restartSelf, startNewAccount } = args;
27300
27381
  try {
@@ -27830,8 +27911,8 @@ async function dispatch2(accountId, text6, explicitChatId, media) {
27830
27911
  throw new Error("no wechat target \u2014 bind the account first (the QR-login owner becomes the default cron recipient)");
27831
27912
  }
27832
27913
  const out = [];
27914
+ const contextToken = readContextToken(accountId, chatId);
27833
27915
  if (text6) {
27834
- const contextToken = readContextToken(accountId, chatId);
27835
27916
  const chunks = splitText(text6, WECHAT_TEXT_LIMIT);
27836
27917
  for (const [i, chunk] of chunks.entries()) {
27837
27918
  try {
@@ -27853,6 +27934,7 @@ async function dispatch2(accountId, text6, explicitChatId, media) {
27853
27934
  baseUrl: acct.baseUrl,
27854
27935
  token: acct.botToken,
27855
27936
  toUserId: chatId,
27937
+ contextToken,
27856
27938
  filePath
27857
27939
  });
27858
27940
  out.push({ channelType: "wechat", accountId, chatId, ok: true });
@@ -28434,14 +28516,14 @@ var init_event_adapter3 = __esm({
28434
28516
  try {
28435
28517
  await this.deps.sendText(text6);
28436
28518
  } catch (err) {
28437
- console.log(`[Slack] sendText failed: ${err instanceof Error ? err.message : String(err)}`);
28519
+ console.warn(`[Slack] sendText failed: ${err instanceof Error ? err.message : String(err)}`);
28438
28520
  }
28439
28521
  }
28440
28522
  for (const p of mediaPaths) {
28441
28523
  try {
28442
28524
  await this.deps.sendMedia(p);
28443
28525
  } catch (err) {
28444
- console.log(`[Slack] sendMedia ${p} failed: ${err instanceof Error ? err.message : String(err)}`);
28526
+ console.warn(`[Slack] sendMedia ${p} failed: ${err instanceof Error ? err.message : String(err)}`);
28445
28527
  }
28446
28528
  }
28447
28529
  }
@@ -28667,6 +28749,32 @@ function rememberEventId(id) {
28667
28749
  function buildSessionPrefixForThread(channelId, rootTs) {
28668
28750
  return sessionPrefix("slack", `${channelId}:${rootTs}`);
28669
28751
  }
28752
+ function restoreReplyRoute2(args) {
28753
+ const { registry: registry2, db, account, bridge } = args;
28754
+ const chatKey = getAccount(db, account.accountId)?.config.lastActiveChatId;
28755
+ if (typeof chatKey !== "string")
28756
+ return;
28757
+ const sep2 = chatKey.indexOf(":");
28758
+ if (sep2 <= 0)
28759
+ return;
28760
+ const channelId = chatKey.slice(0, sep2);
28761
+ const rootTs = chatKey.slice(sep2 + 1);
28762
+ if (!rootTs)
28763
+ return;
28764
+ const workspacePath = resolveAccountWorkspace(account);
28765
+ if (!workspacePath)
28766
+ return;
28767
+ const sid = restoreChannelRoute({
28768
+ registry: registry2,
28769
+ workspacePath,
28770
+ bridge,
28771
+ sessionPrefix: buildSessionPrefixForThread(channelId, rootTs),
28772
+ // Same mapping as pickSessionKey: DMs reply flat, threads into the root.
28773
+ route: { channelId, replyTs: rootTs === "dm" ? void 0 : rootTs }
28774
+ });
28775
+ if (sid)
28776
+ console.log(`[Slack] ${account.accountId} reply route restored for ${sid}`);
28777
+ }
28670
28778
  function pickSessionKey(event) {
28671
28779
  const channelId = event.channel;
28672
28780
  const isDM = event.channel_type === "im";
@@ -28852,6 +28960,9 @@ function startSlackChannel(deps) {
28852
28960
  st.stopped = false;
28853
28961
  if (st.ws)
28854
28962
  return;
28963
+ const account = getAccount5(db, accountId);
28964
+ if (account && account.enabled === 1)
28965
+ restoreReplyRoute2({ registry: registry2, db, account, bridge: st.bridge });
28855
28966
  connect(accountId);
28856
28967
  }
28857
28968
  async function stopAccount(accountId) {
@@ -29718,6 +29829,27 @@ import * as Lark from "@larksuiteoapi/node-sdk";
29718
29829
  function buildSessionPrefixForThread2(chatId, rootId) {
29719
29830
  return sessionPrefix("feishu", `${chatId}:${rootId}`);
29720
29831
  }
29832
+ function restoreReplyRoute3(args) {
29833
+ const { registry: registry2, db, account, bridge } = args;
29834
+ const chatKey = getAccount(db, account.accountId)?.config.lastActiveChatId;
29835
+ if (typeof chatKey !== "string" || !chatKey.endsWith(":dm"))
29836
+ return;
29837
+ const chatId = chatKey.slice(0, -":dm".length);
29838
+ if (!chatId)
29839
+ return;
29840
+ const workspacePath = resolveAccountWorkspace(account);
29841
+ if (!workspacePath)
29842
+ return;
29843
+ const sid = restoreChannelRoute({
29844
+ registry: registry2,
29845
+ workspacePath,
29846
+ bridge,
29847
+ sessionPrefix: buildSessionPrefixForThread2(chatId, "dm"),
29848
+ route: { inboundMessageId: "", isP2P: true, chatId }
29849
+ });
29850
+ if (sid)
29851
+ console.log(`[Feishu] ${account.accountId} reply route restored for ${sid}`);
29852
+ }
29721
29853
  function pickSessionKey2(event) {
29722
29854
  const chatId = event.message.chat_id;
29723
29855
  const inboundMessageId = event.message.message_id;
@@ -29982,6 +30114,9 @@ function startFeishuChannel(deps) {
29982
30114
  st.stopped = false;
29983
30115
  if (st.wsClient)
29984
30116
  return;
30117
+ const account = getAccount6(db, accountId);
30118
+ if (account && account.enabled === 1)
30119
+ restoreReplyRoute3({ registry: registry2, db, account, bridge: st.bridge });
29985
30120
  void connect(accountId);
29986
30121
  }
29987
30122
  async function stopAccount(accountId) {
@@ -31570,7 +31705,7 @@ var init_dist2 = __esm({
31570
31705
  init_git_ssh();
31571
31706
  __dirname3 = path68.dirname(fileURLToPath3(import.meta.url));
31572
31707
  PORT = config.server.port;
31573
- HALO_VERSION = "1.4.1";
31708
+ HALO_VERSION = "1.4.3";
31574
31709
  PROJECT_ROOT = findProjectRoot();
31575
31710
  HALO_HOME4 = path68.join(homedir24(), ".halo");
31576
31711
  GIT_SHA = readGitSha();
@@ -32509,7 +32644,7 @@ import path69 from "node:path";
32509
32644
  import fs63 from "node:fs";
32510
32645
  import { homedir as homedir25 } from "node:os";
32511
32646
  import { parseArgs as parseArgs2 } from "node:util";
32512
- var VERSION = "1.4.1";
32647
+ var VERSION = "1.4.3";
32513
32648
  var HELP_TOP = `Usage: halo <command> [options]
32514
32649
 
32515
32650
  Commands:
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@turmind/halo",
3
- "version": "1.4.1",
3
+ "version": "1.4.3",
4
4
  "description": "Halo — multi-agent collaborative workspace. CLI + TUI + HTTP/WS server in one package.",
5
5
  "type": "module",
6
6
  "license": "MIT",