@turmind/halo 1.4.2 → 1.4.4
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/admin-out/404.html +1 -1
- package/admin-out/index.html +1 -1
- package/admin-out/index.txt +1 -1
- package/dist/index.js +120 -47
- package/package.json +1 -1
- /package/admin-out/_next/static/{Jf-8TVLoHHwpT-gitolxN → pMc5AOPA8YmYr6tFONvcu}/_buildManifest.js +0 -0
- /package/admin-out/_next/static/{Jf-8TVLoHHwpT-gitolxN → pMc5AOPA8YmYr6tFONvcu}/_ssgManifest.js +0 -0
package/admin-out/404.html
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
<!DOCTYPE html><!--
|
|
1
|
+
<!DOCTYPE html><!--pMc5AOPA8YmYr6tFONvcu--><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,"Segoe UI",Roboto,Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji";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\":\"pMc5AOPA8YmYr6tFONvcu\",\"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>
|
package/admin-out/index.html
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
<!DOCTYPE html><!--
|
|
1
|
+
<!DOCTYPE html><!--pMc5AOPA8YmYr6tFONvcu--><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\":\"pMc5AOPA8YmYr6tFONvcu\",\"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>
|
package/admin-out/index.txt
CHANGED
|
@@ -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":"
|
|
17
|
+
0:{"P":null,"b":"pMc5AOPA8YmYr6tFONvcu","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
|
@@ -1392,7 +1392,7 @@ function classifyModelError(err) {
|
|
|
1392
1392
|
return { kind: classifyKind(msg, errName, httpStatus), msg, errName, httpStatus };
|
|
1393
1393
|
}
|
|
1394
1394
|
function classifyKind(msg, errName, httpStatus) {
|
|
1395
|
-
if (msg.includes("too many input tokens") || msg.includes("prompt_too_long") || msg.includes("ContextWindowOverflow")) {
|
|
1395
|
+
if (msg.includes("too many input tokens") || msg.includes("prompt_too_long") || msg.includes("ContextWindowOverflow") || msg.includes("Input is too long")) {
|
|
1396
1396
|
return "context_overflow";
|
|
1397
1397
|
}
|
|
1398
1398
|
const isAccountError = httpStatus !== void 0 ? httpStatus === 401 || httpStatus === 402 || httpStatus === 403 : msg.includes("insufficient balance") || msg.includes("suspended") || msg.includes("invalid api key") || msg.includes("Invalid API Key") || msg.includes("Unauthorized") || msg.includes("authentication");
|
|
@@ -1543,7 +1543,79 @@ var init_micro_compact = __esm({
|
|
|
1543
1543
|
}
|
|
1544
1544
|
});
|
|
1545
1545
|
|
|
1546
|
+
// ../server/dist/agents/history-images.js
|
|
1547
|
+
function mapImageBlocks(messages2, fn) {
|
|
1548
|
+
let index = 0;
|
|
1549
|
+
let replaced = 0;
|
|
1550
|
+
const visit = (b) => {
|
|
1551
|
+
if (b.type !== "image")
|
|
1552
|
+
return b;
|
|
1553
|
+
const text6 = fn(index++);
|
|
1554
|
+
if (text6 === null)
|
|
1555
|
+
return b;
|
|
1556
|
+
replaced++;
|
|
1557
|
+
return { type: "text", text: text6 };
|
|
1558
|
+
};
|
|
1559
|
+
for (const m of messages2) {
|
|
1560
|
+
if (!Array.isArray(m.content))
|
|
1561
|
+
continue;
|
|
1562
|
+
m.content = m.content.map((b) => b.type === "tool_result" && Array.isArray(b.content) ? { ...b, content: b.content.map(visit) } : visit(b));
|
|
1563
|
+
}
|
|
1564
|
+
return replaced;
|
|
1565
|
+
}
|
|
1566
|
+
function imageSizes(messages2) {
|
|
1567
|
+
const sizes = [];
|
|
1568
|
+
for (const m of messages2) {
|
|
1569
|
+
if (!Array.isArray(m.content))
|
|
1570
|
+
continue;
|
|
1571
|
+
for (const b of m.content) {
|
|
1572
|
+
if (b.type === "image")
|
|
1573
|
+
sizes.push(b.source.data.length);
|
|
1574
|
+
else if (b.type === "tool_result" && Array.isArray(b.content)) {
|
|
1575
|
+
for (const ib of b.content)
|
|
1576
|
+
if (ib.type === "image")
|
|
1577
|
+
sizes.push(ib.source.data.length);
|
|
1578
|
+
}
|
|
1579
|
+
}
|
|
1580
|
+
}
|
|
1581
|
+
return sizes;
|
|
1582
|
+
}
|
|
1583
|
+
function replaceImageBlocks(messages2, reason) {
|
|
1584
|
+
return mapImageBlocks(messages2, () => `[image removed: ${reason}]`);
|
|
1585
|
+
}
|
|
1586
|
+
function trimHistoryImages(messages2) {
|
|
1587
|
+
const sizes = imageSizes(messages2);
|
|
1588
|
+
let total = sizes.reduce((a, b) => a + b, 0);
|
|
1589
|
+
if (total <= MAX_IMAGE_B64 && sizes.length <= MAX_IMAGES)
|
|
1590
|
+
return 0;
|
|
1591
|
+
let drop = 0;
|
|
1592
|
+
while (drop < sizes.length && (total > MAX_IMAGE_B64 / 2 || sizes.length - drop > MAX_IMAGES / 2)) {
|
|
1593
|
+
total -= sizes[drop++];
|
|
1594
|
+
}
|
|
1595
|
+
return mapImageBlocks(messages2, (i) => i < drop ? TRIM_PLACEHOLDER : null);
|
|
1596
|
+
}
|
|
1597
|
+
var MAX_IMAGE_B64, MAX_IMAGES, TRIM_PLACEHOLDER;
|
|
1598
|
+
var init_history_images = __esm({
|
|
1599
|
+
"../server/dist/agents/history-images.js"() {
|
|
1600
|
+
"use strict";
|
|
1601
|
+
MAX_IMAGE_B64 = 20 * 1024 * 1024;
|
|
1602
|
+
MAX_IMAGES = 100;
|
|
1603
|
+
TRIM_PLACEHOLDER = "[image removed: older image dropped to keep the request under the size limit \u2014 view_image it again if still needed]";
|
|
1604
|
+
}
|
|
1605
|
+
});
|
|
1606
|
+
|
|
1546
1607
|
// ../server/dist/agents/agent-loop.js
|
|
1608
|
+
function toolResultImages(content) {
|
|
1609
|
+
const images = [];
|
|
1610
|
+
for (const block of content) {
|
|
1611
|
+
if (block.type !== "tool_result" || typeof block.content === "string")
|
|
1612
|
+
continue;
|
|
1613
|
+
for (const b of block.content)
|
|
1614
|
+
if (b.type === "image")
|
|
1615
|
+
images.push(b);
|
|
1616
|
+
}
|
|
1617
|
+
return images.length > 0 ? [{ type: "text", text: "[Images from the tool results above]" }, ...images] : [];
|
|
1618
|
+
}
|
|
1547
1619
|
var TOOL_ERROR_MARKER, TOOL_WARN_MARKER, MODEL_TIMEOUT_ERROR, AgentLoop;
|
|
1548
1620
|
var init_agent_loop = __esm({
|
|
1549
1621
|
"../server/dist/agents/agent-loop.js"() {
|
|
@@ -7843,7 +7915,7 @@ var init_deepseek_agent = __esm({
|
|
|
7843
7915
|
if (msg.role === "user") {
|
|
7844
7916
|
if (typeof msg.content !== "string" && msg.content.some((b) => b.type === "tool_result")) {
|
|
7845
7917
|
msgs.push(...this.convertToolResults(msg.content));
|
|
7846
|
-
const rest = msg.content.filter((b) => b.type !== "tool_result");
|
|
7918
|
+
const rest = [...toolResultImages(msg.content), ...msg.content.filter((b) => b.type !== "tool_result")];
|
|
7847
7919
|
if (rest.length > 0) {
|
|
7848
7920
|
msgs.push({ role: "user", content: this.convertUserContent(rest) });
|
|
7849
7921
|
}
|
|
@@ -7860,7 +7932,7 @@ var init_deepseek_agent = __esm({
|
|
|
7860
7932
|
const results = [];
|
|
7861
7933
|
for (const block of content) {
|
|
7862
7934
|
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");
|
|
7935
|
+
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
7936
|
results.push({
|
|
7865
7937
|
role: "tool",
|
|
7866
7938
|
tool_call_id: block.tool_use_id,
|
|
@@ -8053,7 +8125,7 @@ var init_kimi_agent = __esm({
|
|
|
8053
8125
|
if (msg.role === "user") {
|
|
8054
8126
|
if (typeof msg.content !== "string" && msg.content.some((b) => b.type === "tool_result")) {
|
|
8055
8127
|
msgs.push(...this.convertToolResults(msg.content));
|
|
8056
|
-
const rest = msg.content.filter((b) => b.type !== "tool_result");
|
|
8128
|
+
const rest = [...toolResultImages(msg.content), ...msg.content.filter((b) => b.type !== "tool_result")];
|
|
8057
8129
|
if (rest.length > 0) {
|
|
8058
8130
|
msgs.push({ role: "user", content: this.convertUserContent(rest) });
|
|
8059
8131
|
}
|
|
@@ -8070,7 +8142,7 @@ var init_kimi_agent = __esm({
|
|
|
8070
8142
|
const results = [];
|
|
8071
8143
|
for (const block of content) {
|
|
8072
8144
|
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");
|
|
8145
|
+
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
8146
|
results.push({
|
|
8075
8147
|
role: "tool",
|
|
8076
8148
|
tool_call_id: block.tool_use_id,
|
|
@@ -8890,7 +8962,7 @@ var init_openai_agent = __esm({
|
|
|
8890
8962
|
if (msg.role === "user") {
|
|
8891
8963
|
if (typeof msg.content !== "string" && msg.content.some((b) => b.type === "tool_result")) {
|
|
8892
8964
|
msgs.push(...this.convertToolResults(msg.content));
|
|
8893
|
-
const rest = msg.content.filter((b) => b.type !== "tool_result");
|
|
8965
|
+
const rest = [...toolResultImages(msg.content), ...msg.content.filter((b) => b.type !== "tool_result")];
|
|
8894
8966
|
if (rest.length > 0) {
|
|
8895
8967
|
msgs.push({ role: "user", content: this.convertUserContent(rest) });
|
|
8896
8968
|
}
|
|
@@ -8907,7 +8979,7 @@ var init_openai_agent = __esm({
|
|
|
8907
8979
|
const results = [];
|
|
8908
8980
|
for (const block of content) {
|
|
8909
8981
|
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");
|
|
8982
|
+
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
8983
|
results.push({ role: "tool", tool_call_id: block.tool_use_id, content: text6 });
|
|
8912
8984
|
}
|
|
8913
8985
|
}
|
|
@@ -8916,7 +8988,17 @@ var init_openai_agent = __esm({
|
|
|
8916
8988
|
convertUserContent(content) {
|
|
8917
8989
|
if (typeof content === "string")
|
|
8918
8990
|
return content;
|
|
8919
|
-
|
|
8991
|
+
if (!content.some((b) => b.type === "image")) {
|
|
8992
|
+
return content.filter((b) => b.type === "text").map((b) => b.text).join("\n");
|
|
8993
|
+
}
|
|
8994
|
+
const parts = [];
|
|
8995
|
+
for (const b of content) {
|
|
8996
|
+
if (b.type === "text")
|
|
8997
|
+
parts.push({ type: "text", text: b.text });
|
|
8998
|
+
else if (b.type === "image")
|
|
8999
|
+
parts.push({ type: "image_url", image_url: { url: `data:${b.source.media_type};base64,${b.source.data}` } });
|
|
9000
|
+
}
|
|
9001
|
+
return parts;
|
|
8920
9002
|
}
|
|
8921
9003
|
convertAssistantMessage(msg) {
|
|
8922
9004
|
const results = [];
|
|
@@ -9103,14 +9185,16 @@ var init_mantle_agent = __esm({
|
|
|
9103
9185
|
return items;
|
|
9104
9186
|
}
|
|
9105
9187
|
/** Tool results feed back as `function_call_output` items keyed by call_id.
|
|
9106
|
-
*
|
|
9107
|
-
*
|
|
9188
|
+
* A block-array result (view_image: text + image) goes out as input_text /
|
|
9189
|
+
* input_image parts — `output` takes content parts, not only a string
|
|
9190
|
+
* (verified live on gpt-5.6-terra and gpt-6-astra). Flattening it to text
|
|
9191
|
+
* used to hand the model an `[image]` placeholder instead of the pixels. */
|
|
9108
9192
|
convertToolResults(content) {
|
|
9109
9193
|
const out = [];
|
|
9110
9194
|
for (const block of content) {
|
|
9111
9195
|
if (block.type === "tool_result") {
|
|
9112
|
-
const
|
|
9113
|
-
out.push({ type: "function_call_output", call_id: block.tool_use_id, output
|
|
9196
|
+
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}` });
|
|
9197
|
+
out.push({ type: "function_call_output", call_id: block.tool_use_id, output });
|
|
9114
9198
|
}
|
|
9115
9199
|
}
|
|
9116
9200
|
return out;
|
|
@@ -10613,10 +10697,12 @@ Error: "${input.path}" does not decode as a valid image (${err instanceof Error
|
|
|
10613
10697
|
const dims = imageDimensions(buf, mediaType);
|
|
10614
10698
|
const tooManyBytes = b64Len(buf.length) > B64_LIMIT;
|
|
10615
10699
|
const tooBig = dims != null && Math.max(dims.w, dims.h) > MAX_EDGE;
|
|
10700
|
+
const PNG_TO_JPEG_MIN = 256 * 1024;
|
|
10701
|
+
const heavyPng = mediaType === "image/png" && buf.length > PNG_TO_JPEG_MIN && img != null && !img.hasAlpha();
|
|
10616
10702
|
let outMediaType = mediaType;
|
|
10617
10703
|
let outBuf = buf;
|
|
10618
10704
|
let note = "";
|
|
10619
|
-
if (tooManyBytes || tooBig) {
|
|
10705
|
+
if (tooManyBytes || tooBig || heavyPng) {
|
|
10620
10706
|
try {
|
|
10621
10707
|
img ??= await Jimp.read(buf);
|
|
10622
10708
|
const longEdge = Math.max(img.bitmap.width, img.bitmap.height);
|
|
@@ -10628,9 +10714,11 @@ Error: "${input.path}" does not decode as a valid image (${err instanceof Error
|
|
|
10628
10714
|
q -= 15;
|
|
10629
10715
|
jpeg = await img.getBuffer("image/jpeg", { quality: q });
|
|
10630
10716
|
}
|
|
10631
|
-
|
|
10632
|
-
|
|
10633
|
-
|
|
10717
|
+
if (tooManyBytes || tooBig || jpeg.length < buf.length) {
|
|
10718
|
+
outBuf = jpeg;
|
|
10719
|
+
outMediaType = "image/jpeg";
|
|
10720
|
+
note = tooManyBytes || tooBig ? ` \u2014 resized to ${img.bitmap.width}\xD7${img.bitmap.height}, ${(jpeg.length / 1024).toFixed(0)} KB (jpeg q${q}) to fit the model's image limits` : ` \u2014 sent as jpeg q${q}, ${(jpeg.length / 1024).toFixed(0)} KB, to keep the conversation payload small`;
|
|
10721
|
+
}
|
|
10634
10722
|
} catch (err) {
|
|
10635
10723
|
return `${TOOL_WARN_MARKER}
|
|
10636
10724
|
Error: image is too large for the model and automatic compression failed (${err instanceof Error ? err.message : String(err)}). Shrink it (lower resolution / crop the relevant region) and retry.`;
|
|
@@ -11806,7 +11894,7 @@ async function initObservability() {
|
|
|
11806
11894
|
return true;
|
|
11807
11895
|
}
|
|
11808
11896
|
const { registerSdk: registerSdk2 } = await Promise.resolve().then(() => (init_otel_sdk(), otel_sdk_exports));
|
|
11809
|
-
providers = registerSdk2(process.env.OTEL_SERVICE_NAME, "1.4.
|
|
11897
|
+
providers = registerSdk2(process.env.OTEL_SERVICE_NAME, "1.4.4");
|
|
11810
11898
|
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
11899
|
return true;
|
|
11812
11900
|
}
|
|
@@ -12147,34 +12235,6 @@ function isRawTurnStart(msg) {
|
|
|
12147
12235
|
function stripImageMarkers(s) {
|
|
12148
12236
|
return s.replace(/\[图片已保存: [^\]]*\]\n?/g, "").trim();
|
|
12149
12237
|
}
|
|
12150
|
-
function replaceImageBlocks(messages2, reason) {
|
|
12151
|
-
let replaced = 0;
|
|
12152
|
-
const placeholder = () => ({ type: "text", text: `[image removed: ${reason}]` });
|
|
12153
|
-
for (const m of messages2) {
|
|
12154
|
-
if (!Array.isArray(m.content))
|
|
12155
|
-
continue;
|
|
12156
|
-
m.content = m.content.map((b) => {
|
|
12157
|
-
if (b.type === "image") {
|
|
12158
|
-
replaced++;
|
|
12159
|
-
return placeholder();
|
|
12160
|
-
}
|
|
12161
|
-
if (b.type === "tool_result" && Array.isArray(b.content)) {
|
|
12162
|
-
return {
|
|
12163
|
-
...b,
|
|
12164
|
-
content: b.content.map((ib) => {
|
|
12165
|
-
if (ib.type === "image") {
|
|
12166
|
-
replaced++;
|
|
12167
|
-
return { type: "text", text: `[image removed: ${reason}]` };
|
|
12168
|
-
}
|
|
12169
|
-
return ib;
|
|
12170
|
-
})
|
|
12171
|
-
};
|
|
12172
|
-
}
|
|
12173
|
-
return b;
|
|
12174
|
-
});
|
|
12175
|
-
}
|
|
12176
|
-
return replaced;
|
|
12177
|
-
}
|
|
12178
12238
|
function generateSessionId() {
|
|
12179
12239
|
const ts = Date.now().toString(36);
|
|
12180
12240
|
const rand = Math.random().toString(36).slice(2, 8);
|
|
@@ -12190,6 +12250,7 @@ var init_session_manager = __esm({
|
|
|
12190
12250
|
init_model_error();
|
|
12191
12251
|
init_compact();
|
|
12192
12252
|
init_micro_compact();
|
|
12253
|
+
init_history_images();
|
|
12193
12254
|
init_agent_loader();
|
|
12194
12255
|
init_broadcast();
|
|
12195
12256
|
init_db();
|
|
@@ -12945,6 +13006,7 @@ var init_session_manager = __esm({
|
|
|
12945
13006
|
const iter = session.agent.run(input, {
|
|
12946
13007
|
cancelSignal: signal,
|
|
12947
13008
|
beforeCallModel: async () => {
|
|
13009
|
+
this.trimImages(session);
|
|
12948
13010
|
await this.maybeAutoCompact(session);
|
|
12949
13011
|
this.saveAgentState(session);
|
|
12950
13012
|
}
|
|
@@ -13622,6 +13684,17 @@ ${cleaned}` : cleaned;
|
|
|
13622
13684
|
console.warn(`[Evo] pre-compact enqueue threw for ${session.id}: ${err instanceof Error ? err.message : String(err)}`);
|
|
13623
13685
|
}
|
|
13624
13686
|
}
|
|
13687
|
+
/** Byte-budget counterpart of maybeAutoCompact (which only sees tokens):
|
|
13688
|
+
* drop the oldest history images once their base64 outgrows the request
|
|
13689
|
+
* body limit. Same beforeCallModel hook, so the trimmed state is what the
|
|
13690
|
+
* hook's saveAgentState persists. */
|
|
13691
|
+
trimImages(session) {
|
|
13692
|
+
const replaced = trimHistoryImages(session.agent.messages);
|
|
13693
|
+
if (replaced === 0)
|
|
13694
|
+
return;
|
|
13695
|
+
console.warn(`[SessionManager] Session ${session.id} history images over budget \u2014 replaced ${replaced} oldest with placeholders`);
|
|
13696
|
+
this.emitEvent(session.id, { type: "system", text: `Removed ${replaced} older image(s) from context to keep the request under the size limit`, taskId: session.parentId ? session.id : void 0 });
|
|
13697
|
+
}
|
|
13625
13698
|
/** Mid-turn auto-compact: invoked by agent-loop's beforeCallModel hook.
|
|
13626
13699
|
* Runs once per loop iteration — without this, a single long turn that
|
|
13627
13700
|
* accumulates many large tool results (file_read, grep) blows the window
|
|
@@ -31682,7 +31755,7 @@ var init_dist2 = __esm({
|
|
|
31682
31755
|
init_git_ssh();
|
|
31683
31756
|
__dirname3 = path68.dirname(fileURLToPath3(import.meta.url));
|
|
31684
31757
|
PORT = config.server.port;
|
|
31685
|
-
HALO_VERSION = "1.4.
|
|
31758
|
+
HALO_VERSION = "1.4.4";
|
|
31686
31759
|
PROJECT_ROOT = findProjectRoot();
|
|
31687
31760
|
HALO_HOME4 = path68.join(homedir24(), ".halo");
|
|
31688
31761
|
GIT_SHA = readGitSha();
|
|
@@ -32621,7 +32694,7 @@ import path69 from "node:path";
|
|
|
32621
32694
|
import fs63 from "node:fs";
|
|
32622
32695
|
import { homedir as homedir25 } from "node:os";
|
|
32623
32696
|
import { parseArgs as parseArgs2 } from "node:util";
|
|
32624
|
-
var VERSION = "1.4.
|
|
32697
|
+
var VERSION = "1.4.4";
|
|
32625
32698
|
var HELP_TOP = `Usage: halo <command> [options]
|
|
32626
32699
|
|
|
32627
32700
|
Commands:
|
package/package.json
CHANGED
/package/admin-out/_next/static/{Jf-8TVLoHHwpT-gitolxN → pMc5AOPA8YmYr6tFONvcu}/_buildManifest.js
RENAMED
|
File without changes
|
/package/admin-out/_next/static/{Jf-8TVLoHHwpT-gitolxN → pMc5AOPA8YmYr6tFONvcu}/_ssgManifest.js
RENAMED
|
File without changes
|