qalita 2.8.2__py3-none-any.whl → 2.9.0__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (50) hide show
  1. qalita/_frontend/.next/BUILD_ID +1 -1
  2. qalita/_frontend/.next/build-manifest.json +2 -2
  3. qalita/_frontend/.next/prerender-manifest.json +3 -3
  4. qalita/_frontend/.next/server/app/_global-error.html +2 -2
  5. qalita/_frontend/.next/server/app/_global-error.rsc +1 -1
  6. qalita/_frontend/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
  7. qalita/_frontend/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  8. qalita/_frontend/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  9. qalita/_frontend/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  10. qalita/_frontend/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  11. qalita/_frontend/.next/server/app/_not-found.html +1 -1
  12. qalita/_frontend/.next/server/app/_not-found.rsc +1 -1
  13. qalita/_frontend/.next/server/app/_not-found.segments/_full.segment.rsc +1 -1
  14. qalita/_frontend/.next/server/app/_not-found.segments/_head.segment.rsc +1 -1
  15. qalita/_frontend/.next/server/app/_not-found.segments/_index.segment.rsc +1 -1
  16. qalita/_frontend/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
  17. qalita/_frontend/.next/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
  18. qalita/_frontend/.next/server/app/_not-found.segments/_tree.segment.rsc +1 -1
  19. qalita/_frontend/.next/server/app/sources/add.html +1 -1
  20. qalita/_frontend/.next/server/app/sources/add.rsc +1 -1
  21. qalita/_frontend/.next/server/app/sources/add.segments/_full.segment.rsc +1 -1
  22. qalita/_frontend/.next/server/app/sources/add.segments/_head.segment.rsc +1 -1
  23. qalita/_frontend/.next/server/app/sources/add.segments/_index.segment.rsc +1 -1
  24. qalita/_frontend/.next/server/app/sources/add.segments/_tree.segment.rsc +1 -1
  25. qalita/_frontend/.next/server/app/sources/add.segments/sources/add/__PAGE__.segment.rsc +1 -1
  26. qalita/_frontend/.next/server/app/sources/add.segments/sources/add.segment.rsc +1 -1
  27. qalita/_frontend/.next/server/app/sources/add.segments/sources.segment.rsc +1 -1
  28. qalita/_frontend/.next/server/app/sources.html +1 -1
  29. qalita/_frontend/.next/server/app/sources.rsc +1 -1
  30. qalita/_frontend/.next/server/app/sources.segments/_full.segment.rsc +1 -1
  31. qalita/_frontend/.next/server/app/sources.segments/_head.segment.rsc +1 -1
  32. qalita/_frontend/.next/server/app/sources.segments/_index.segment.rsc +1 -1
  33. qalita/_frontend/.next/server/app/sources.segments/_tree.segment.rsc +1 -1
  34. qalita/_frontend/.next/server/app/sources.segments/sources/__PAGE__.segment.rsc +1 -1
  35. qalita/_frontend/.next/server/app/sources.segments/sources.segment.rsc +1 -1
  36. qalita/_frontend/.next/server/pages/404.html +1 -1
  37. qalita/_frontend/.next/server/pages/500.html +2 -2
  38. qalita/_frontend/.next/server/server-reference-manifest.js +1 -1
  39. qalita/_frontend/.next/server/server-reference-manifest.json +1 -1
  40. qalita/commands/worker_grpc.py +36 -0
  41. qalita/grpc/client.py +62 -22
  42. qalita/internal/utils.py +1 -1
  43. {qalita-2.8.2.dist-info → qalita-2.9.0.dist-info}/METADATA +1 -1
  44. {qalita-2.8.2.dist-info → qalita-2.9.0.dist-info}/RECORD +50 -50
  45. /qalita/_frontend/.next/static/{yOpcG0FUJuYfUPn1ZW5CD → rObHWX45g5zAJ7RtwthzS}/_buildManifest.js +0 -0
  46. /qalita/_frontend/.next/static/{yOpcG0FUJuYfUPn1ZW5CD → rObHWX45g5zAJ7RtwthzS}/_clientMiddlewareManifest.json +0 -0
  47. /qalita/_frontend/.next/static/{yOpcG0FUJuYfUPn1ZW5CD → rObHWX45g5zAJ7RtwthzS}/_ssgManifest.js +0 -0
  48. {qalita-2.8.2.dist-info → qalita-2.9.0.dist-info}/WHEEL +0 -0
  49. {qalita-2.8.2.dist-info → qalita-2.9.0.dist-info}/entry_points.txt +0 -0
  50. {qalita-2.8.2.dist-info → qalita-2.9.0.dist-info}/licenses/LICENSE +0 -0
@@ -1 +1 @@
1
- <!DOCTYPE html><!--yOpcG0FUJuYfUPn1ZW5CD--><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="/_next/static/chunks/e4c3a252774ab7fd.css" data-precedence="next"/><link rel="preload" as="script" fetchPriority="low" href="/_next/static/chunks/e6ce59ba40b863f2.js"/><script src="/_next/static/chunks/89ba62a8ba9b79ce.js" async=""></script><script src="/_next/static/chunks/bdc8a8e7721f5675.js" async=""></script><script src="/_next/static/chunks/ec4b1f1e3cd3ae43.js" async=""></script><script src="/_next/static/chunks/turbopack-d21156d03715fafa.js" async=""></script><script src="/_next/static/chunks/e0df86cbf44bbf9f.js" async=""></script><script src="/_next/static/chunks/0b082245f106d665.js" async=""></script><link rel="preload" href="https://fonts.googleapis.com/css2?family=Lato:wght@300;400;700;900&amp;display=swap" as="style"/><meta name="robots" content="noindex"/><link rel="preconnect" href="https://fonts.googleapis.com"/><link rel="preconnect" href="https://fonts.gstatic.com" crossorigin="anonymous"/><title>404: This page could not be found.</title><title>QALITA CLI</title><meta name="description" content="QALITA Platform Command Line Interface"/><link href="https://fonts.googleapis.com/css2?family=Lato:wght@300;400;700;900&amp;display=swap" rel="stylesheet"/><script src="/_next/static/chunks/a6dad97d9634a72d.js" noModule=""></script></head><body class="root-layout"><div hidden=""><!--$--><!--/$--></div><script>((a,b,c,d,e,f,g,h)=>{let i=document.documentElement,j=["light","dark"];function k(b){var c;(Array.isArray(a)?a:[a]).forEach(a=>{let c="class"===a,d=c&&f?e.map(a=>f[a]||a):e;c?(i.classList.remove(...d),i.classList.add(f&&f[b]?f[b]:b)):i.setAttribute(a,b)}),c=b,h&&j.includes(c)&&(i.style.colorScheme=c)}if(d)k(d);else try{let a=localStorage.getItem(b)||c,d=g&&"system"===a?window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light":a;k(d)}catch(a){}})("class","theme","light",null,["light","dark"],null,false,true)</script><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/e6ce59ba40b863f2.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[63178,[\"/_next/static/chunks/e0df86cbf44bbf9f.js\",\"/_next/static/chunks/0b082245f106d665.js\"],\"ThemeProvider\"]\n3:I[39756,[\"/_next/static/chunks/e0df86cbf44bbf9f.js\",\"/_next/static/chunks/0b082245f106d665.js\"],\"default\"]\n4:I[37457,[\"/_next/static/chunks/e0df86cbf44bbf9f.js\",\"/_next/static/chunks/0b082245f106d665.js\"],\"default\"]\n5:I[97367,[\"/_next/static/chunks/e0df86cbf44bbf9f.js\",\"/_next/static/chunks/0b082245f106d665.js\"],\"OutletBoundary\"]\n6:\"$Sreact.suspense\"\n8:I[97367,[\"/_next/static/chunks/e0df86cbf44bbf9f.js\",\"/_next/static/chunks/0b082245f106d665.js\"],\"ViewportBoundary\"]\na:I[97367,[\"/_next/static/chunks/e0df86cbf44bbf9f.js\",\"/_next/static/chunks/0b082245f106d665.js\"],\"MetadataBoundary\"]\nc:I[68027,[\"/_next/static/chunks/e0df86cbf44bbf9f.js\",\"/_next/static/chunks/0b082245f106d665.js\"],\"default\"]\n:HL[\"/_next/static/chunks/e4c3a252774ab7fd.css\",\"style\"]\n:HL[\"https://fonts.googleapis.com/css2?family=Lato:wght@300;400;700;900\u0026display=swap\",\"style\"]\n"])</script><script>self.__next_f.push([1,"0:{\"P\":null,\"b\":\"yOpcG0FUJuYfUPn1ZW5CD\",\"c\":[\"\",\"_not-found\"],\"q\":\"\",\"i\":false,\"f\":[[[\"\",{\"children\":[\"/_not-found\",{\"children\":[\"__PAGE__\",{}]}]},\"$undefined\",\"$undefined\",true],[[\"$\",\"$1\",\"c\",{\"children\":[[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/chunks/e4c3a252774ab7fd.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-0\",{\"src\":\"/_next/static/chunks/e0df86cbf44bbf9f.js\",\"async\":true,\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-1\",{\"src\":\"/_next/static/chunks/0b082245f106d665.js\",\"async\":true,\"nonce\":\"$undefined\"}]],[\"$\",\"html\",null,{\"lang\":\"en\",\"suppressHydrationWarning\":true,\"children\":[[\"$\",\"head\",null,{\"children\":[[\"$\",\"link\",null,{\"rel\":\"preconnect\",\"href\":\"https://fonts.googleapis.com\"}],[\"$\",\"link\",null,{\"rel\":\"preconnect\",\"href\":\"https://fonts.gstatic.com\",\"crossOrigin\":\"anonymous\"}],[\"$\",\"link\",null,{\"href\":\"https://fonts.googleapis.com/css2?family=Lato:wght@300;400;700;900\u0026display=swap\",\"rel\":\"stylesheet\"}]]}],[\"$\",\"body\",null,{\"className\":\"root-layout\",\"children\":[\"$\",\"$L2\",null,{\"attribute\":\"class\",\"defaultTheme\":\"light\",\"enableSystem\":false,\"children\":[\"$\",\"$L3\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L4\",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\":[[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$L3\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L4\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}],{\"children\":[[\"$\",\"$1\",\"c\",{\"children\":[[[\"$\",\"title\",null,{\"children\":\"404: This page could not be found.\"}],[\"$\",\"div\",null,{\"style\":\"$0:f:0:1:0:props:children:1:props:children:1:props:children:props:children:props:notFound:0:1:props:style\",\"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\":\"$0:f:0:1:0:props:children:1:props:children:1:props:children:props:children:props:notFound:0:1:props:children:props:children:1:props:style\",\"children\":404}],[\"$\",\"div\",null,{\"style\":\"$0:f:0:1:0:props:children:1:props:children:1:props:children:props:children:props:notFound:0:1:props:children:props:children:2:props:style\",\"children\":[\"$\",\"h2\",null,{\"style\":\"$0:f:0:1:0:props:children:1:props:children:1:props:children:props:children:props:notFound:0:1:props:children:props:children:2:props:children:props:style\",\"children\":\"This page could not be found.\"}]}]]}]}]],null,[\"$\",\"$L5\",null,{\"children\":[\"$\",\"$6\",null,{\"name\":\"Next.MetadataOutlet\",\"children\":\"$@7\"}]}]]}],{},null,false,false]},null,false,false]},null,false,false],[\"$\",\"$1\",\"h\",{\"children\":[[\"$\",\"meta\",null,{\"name\":\"robots\",\"content\":\"noindex\"}],[\"$\",\"$L8\",null,{\"children\":\"$L9\"}],[\"$\",\"div\",null,{\"hidden\":true,\"children\":[\"$\",\"$La\",null,{\"children\":[\"$\",\"$6\",null,{\"name\":\"Next.Metadata\",\"children\":\"$Lb\"}]}]}],null]}],false]],\"m\":\"$undefined\",\"G\":[\"$c\",\"$undefined\"],\"S\":true}\n"])</script><script>self.__next_f.push([1,"9:[[\"$\",\"meta\",\"0\",{\"charSet\":\"utf-8\"}],[\"$\",\"meta\",\"1\",{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1\"}]]\n"])</script><script>self.__next_f.push([1,"7:null\nb:[[\"$\",\"title\",\"0\",{\"children\":\"QALITA CLI\"}],[\"$\",\"meta\",\"1\",{\"name\":\"description\",\"content\":\"QALITA Platform Command Line Interface\"}]]\n"])</script></body></html>
1
+ <!DOCTYPE html><!--rObHWX45g5zAJ7RtwthzS--><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="/_next/static/chunks/e4c3a252774ab7fd.css" data-precedence="next"/><link rel="preload" as="script" fetchPriority="low" href="/_next/static/chunks/e6ce59ba40b863f2.js"/><script src="/_next/static/chunks/89ba62a8ba9b79ce.js" async=""></script><script src="/_next/static/chunks/bdc8a8e7721f5675.js" async=""></script><script src="/_next/static/chunks/ec4b1f1e3cd3ae43.js" async=""></script><script src="/_next/static/chunks/turbopack-d21156d03715fafa.js" async=""></script><script src="/_next/static/chunks/e0df86cbf44bbf9f.js" async=""></script><script src="/_next/static/chunks/0b082245f106d665.js" async=""></script><link rel="preload" href="https://fonts.googleapis.com/css2?family=Lato:wght@300;400;700;900&amp;display=swap" as="style"/><meta name="robots" content="noindex"/><link rel="preconnect" href="https://fonts.googleapis.com"/><link rel="preconnect" href="https://fonts.gstatic.com" crossorigin="anonymous"/><title>404: This page could not be found.</title><title>QALITA CLI</title><meta name="description" content="QALITA Platform Command Line Interface"/><link href="https://fonts.googleapis.com/css2?family=Lato:wght@300;400;700;900&amp;display=swap" rel="stylesheet"/><script src="/_next/static/chunks/a6dad97d9634a72d.js" noModule=""></script></head><body class="root-layout"><div hidden=""><!--$--><!--/$--></div><script>((a,b,c,d,e,f,g,h)=>{let i=document.documentElement,j=["light","dark"];function k(b){var c;(Array.isArray(a)?a:[a]).forEach(a=>{let c="class"===a,d=c&&f?e.map(a=>f[a]||a):e;c?(i.classList.remove(...d),i.classList.add(f&&f[b]?f[b]:b)):i.setAttribute(a,b)}),c=b,h&&j.includes(c)&&(i.style.colorScheme=c)}if(d)k(d);else try{let a=localStorage.getItem(b)||c,d=g&&"system"===a?window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light":a;k(d)}catch(a){}})("class","theme","light",null,["light","dark"],null,false,true)</script><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/e6ce59ba40b863f2.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[63178,[\"/_next/static/chunks/e0df86cbf44bbf9f.js\",\"/_next/static/chunks/0b082245f106d665.js\"],\"ThemeProvider\"]\n3:I[39756,[\"/_next/static/chunks/e0df86cbf44bbf9f.js\",\"/_next/static/chunks/0b082245f106d665.js\"],\"default\"]\n4:I[37457,[\"/_next/static/chunks/e0df86cbf44bbf9f.js\",\"/_next/static/chunks/0b082245f106d665.js\"],\"default\"]\n5:I[97367,[\"/_next/static/chunks/e0df86cbf44bbf9f.js\",\"/_next/static/chunks/0b082245f106d665.js\"],\"OutletBoundary\"]\n6:\"$Sreact.suspense\"\n8:I[97367,[\"/_next/static/chunks/e0df86cbf44bbf9f.js\",\"/_next/static/chunks/0b082245f106d665.js\"],\"ViewportBoundary\"]\na:I[97367,[\"/_next/static/chunks/e0df86cbf44bbf9f.js\",\"/_next/static/chunks/0b082245f106d665.js\"],\"MetadataBoundary\"]\nc:I[68027,[\"/_next/static/chunks/e0df86cbf44bbf9f.js\",\"/_next/static/chunks/0b082245f106d665.js\"],\"default\"]\n:HL[\"/_next/static/chunks/e4c3a252774ab7fd.css\",\"style\"]\n:HL[\"https://fonts.googleapis.com/css2?family=Lato:wght@300;400;700;900\u0026display=swap\",\"style\"]\n"])</script><script>self.__next_f.push([1,"0:{\"P\":null,\"b\":\"rObHWX45g5zAJ7RtwthzS\",\"c\":[\"\",\"_not-found\"],\"q\":\"\",\"i\":false,\"f\":[[[\"\",{\"children\":[\"/_not-found\",{\"children\":[\"__PAGE__\",{}]}]},\"$undefined\",\"$undefined\",true],[[\"$\",\"$1\",\"c\",{\"children\":[[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/chunks/e4c3a252774ab7fd.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-0\",{\"src\":\"/_next/static/chunks/e0df86cbf44bbf9f.js\",\"async\":true,\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-1\",{\"src\":\"/_next/static/chunks/0b082245f106d665.js\",\"async\":true,\"nonce\":\"$undefined\"}]],[\"$\",\"html\",null,{\"lang\":\"en\",\"suppressHydrationWarning\":true,\"children\":[[\"$\",\"head\",null,{\"children\":[[\"$\",\"link\",null,{\"rel\":\"preconnect\",\"href\":\"https://fonts.googleapis.com\"}],[\"$\",\"link\",null,{\"rel\":\"preconnect\",\"href\":\"https://fonts.gstatic.com\",\"crossOrigin\":\"anonymous\"}],[\"$\",\"link\",null,{\"href\":\"https://fonts.googleapis.com/css2?family=Lato:wght@300;400;700;900\u0026display=swap\",\"rel\":\"stylesheet\"}]]}],[\"$\",\"body\",null,{\"className\":\"root-layout\",\"children\":[\"$\",\"$L2\",null,{\"attribute\":\"class\",\"defaultTheme\":\"light\",\"enableSystem\":false,\"children\":[\"$\",\"$L3\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L4\",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\":[[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$L3\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L4\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}],{\"children\":[[\"$\",\"$1\",\"c\",{\"children\":[[[\"$\",\"title\",null,{\"children\":\"404: This page could not be found.\"}],[\"$\",\"div\",null,{\"style\":\"$0:f:0:1:0:props:children:1:props:children:1:props:children:props:children:props:notFound:0:1:props:style\",\"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\":\"$0:f:0:1:0:props:children:1:props:children:1:props:children:props:children:props:notFound:0:1:props:children:props:children:1:props:style\",\"children\":404}],[\"$\",\"div\",null,{\"style\":\"$0:f:0:1:0:props:children:1:props:children:1:props:children:props:children:props:notFound:0:1:props:children:props:children:2:props:style\",\"children\":[\"$\",\"h2\",null,{\"style\":\"$0:f:0:1:0:props:children:1:props:children:1:props:children:props:children:props:notFound:0:1:props:children:props:children:2:props:children:props:style\",\"children\":\"This page could not be found.\"}]}]]}]}]],null,[\"$\",\"$L5\",null,{\"children\":[\"$\",\"$6\",null,{\"name\":\"Next.MetadataOutlet\",\"children\":\"$@7\"}]}]]}],{},null,false,false]},null,false,false]},null,false,false],[\"$\",\"$1\",\"h\",{\"children\":[[\"$\",\"meta\",null,{\"name\":\"robots\",\"content\":\"noindex\"}],[\"$\",\"$L8\",null,{\"children\":\"$L9\"}],[\"$\",\"div\",null,{\"hidden\":true,\"children\":[\"$\",\"$La\",null,{\"children\":[\"$\",\"$6\",null,{\"name\":\"Next.Metadata\",\"children\":\"$Lb\"}]}]}],null]}],false]],\"m\":\"$undefined\",\"G\":[\"$c\",\"$undefined\"],\"S\":true}\n"])</script><script>self.__next_f.push([1,"9:[[\"$\",\"meta\",\"0\",{\"charSet\":\"utf-8\"}],[\"$\",\"meta\",\"1\",{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1\"}]]\n"])</script><script>self.__next_f.push([1,"7:null\nb:[[\"$\",\"title\",\"0\",{\"children\":\"QALITA CLI\"}],[\"$\",\"meta\",\"1\",{\"name\":\"description\",\"content\":\"QALITA Platform Command Line Interface\"}]]\n"])</script></body></html>
@@ -1,2 +1,2 @@
1
- <!DOCTYPE html><!--yOpcG0FUJuYfUPn1ZW5CD--><html id="__next_error__"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" as="script" fetchPriority="low" href="/_next/static/chunks/e6ce59ba40b863f2.js"/><script src="/_next/static/chunks/89ba62a8ba9b79ce.js" async=""></script><script src="/_next/static/chunks/bdc8a8e7721f5675.js" async=""></script><script src="/_next/static/chunks/ec4b1f1e3cd3ae43.js" async=""></script><script src="/_next/static/chunks/turbopack-d21156d03715fafa.js" async=""></script><script src="/_next/static/chunks/ff1a16fafef87110.js" async=""></script><script src="/_next/static/chunks/0b082245f106d665.js" async=""></script><title>500: Internal Server Error.</title><script src="/_next/static/chunks/a6dad97d9634a72d.js" noModule=""></script></head><body><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="line-height:48px"><style>body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}
2
- @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-right:23px;font-size:24px;font-weight:500;vertical-align:top">500</h1><div style="display:inline-block"><h2 style="font-size:14px;font-weight:400;line-height:28px">Internal Server Error.</h2></div></div></div><!--$--><!--/$--><script src="/_next/static/chunks/e6ce59ba40b863f2.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[39756,[\"/_next/static/chunks/ff1a16fafef87110.js\",\"/_next/static/chunks/0b082245f106d665.js\"],\"default\"]\n3:I[37457,[\"/_next/static/chunks/ff1a16fafef87110.js\",\"/_next/static/chunks/0b082245f106d665.js\"],\"default\"]\n4:I[97367,[\"/_next/static/chunks/ff1a16fafef87110.js\",\"/_next/static/chunks/0b082245f106d665.js\"],\"OutletBoundary\"]\n5:\"$Sreact.suspense\"\n7:I[97367,[\"/_next/static/chunks/ff1a16fafef87110.js\",\"/_next/static/chunks/0b082245f106d665.js\"],\"ViewportBoundary\"]\n9:I[97367,[\"/_next/static/chunks/ff1a16fafef87110.js\",\"/_next/static/chunks/0b082245f106d665.js\"],\"MetadataBoundary\"]\nb:I[68027,[\"/_next/static/chunks/ff1a16fafef87110.js\",\"/_next/static/chunks/0b082245f106d665.js\"],\"default\"]\n"])</script><script>self.__next_f.push([1,"0:{\"P\":null,\"b\":\"yOpcG0FUJuYfUPn1ZW5CD\",\"c\":[\"\",\"_global-error\"],\"q\":\"\",\"i\":false,\"f\":[[[\"\",{\"children\":[\"__PAGE__\",{}]}],[[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$L2\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L3\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}],{\"children\":[[\"$\",\"$1\",\"c\",{\"children\":[[\"$\",\"html\",null,{\"id\":\"__next_error__\",\"children\":[[\"$\",\"head\",null,{\"children\":[\"$\",\"title\",null,{\"children\":\"500: Internal Server Error.\"}]}],[\"$\",\"body\",null,{\"children\":[\"$\",\"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,{\"style\":{\"lineHeight\":\"48px\"},\"children\":[[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}\\n@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\",\"paddingRight\":23,\"fontSize\":24,\"fontWeight\":500,\"verticalAlign\":\"top\"},\"children\":\"500\"}],[\"$\",\"div\",null,{\"style\":{\"display\":\"inline-block\"},\"children\":[\"$\",\"h2\",null,{\"style\":{\"fontSize\":14,\"fontWeight\":400,\"lineHeight\":\"28px\"},\"children\":\"Internal Server Error.\"}]}]]}]}]}]]}],[[\"$\",\"script\",\"script-0\",{\"src\":\"/_next/static/chunks/ff1a16fafef87110.js\",\"async\":true,\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-1\",{\"src\":\"/_next/static/chunks/0b082245f106d665.js\",\"async\":true,\"nonce\":\"$undefined\"}]],[\"$\",\"$L4\",null,{\"children\":[\"$\",\"$5\",null,{\"name\":\"Next.MetadataOutlet\",\"children\":\"$@6\"}]}]]}],{},null,false,false]},null,false,false],[\"$\",\"$1\",\"h\",{\"children\":[null,[\"$\",\"$L7\",null,{\"children\":\"$L8\"}],[\"$\",\"div\",null,{\"hidden\":true,\"children\":[\"$\",\"$L9\",null,{\"children\":[\"$\",\"$5\",null,{\"name\":\"Next.Metadata\",\"children\":\"$La\"}]}]}],null]}],false]],\"m\":\"$undefined\",\"G\":[\"$b\",\"$undefined\"],\"S\":true}\n"])</script><script>self.__next_f.push([1,"8:[[\"$\",\"meta\",\"0\",{\"charSet\":\"utf-8\"}],[\"$\",\"meta\",\"1\",{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1\"}]]\n"])</script><script>self.__next_f.push([1,"6:null\na:[]\n"])</script></body></html>
1
+ <!DOCTYPE html><!--rObHWX45g5zAJ7RtwthzS--><html id="__next_error__"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" as="script" fetchPriority="low" href="/_next/static/chunks/e6ce59ba40b863f2.js"/><script src="/_next/static/chunks/89ba62a8ba9b79ce.js" async=""></script><script src="/_next/static/chunks/bdc8a8e7721f5675.js" async=""></script><script src="/_next/static/chunks/ec4b1f1e3cd3ae43.js" async=""></script><script src="/_next/static/chunks/turbopack-d21156d03715fafa.js" async=""></script><script src="/_next/static/chunks/ff1a16fafef87110.js" async=""></script><script src="/_next/static/chunks/0b082245f106d665.js" async=""></script><title>500: Internal Server Error.</title><script src="/_next/static/chunks/a6dad97d9634a72d.js" noModule=""></script></head><body><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="line-height:48px"><style>body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}
2
+ @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-right:23px;font-size:24px;font-weight:500;vertical-align:top">500</h1><div style="display:inline-block"><h2 style="font-size:14px;font-weight:400;line-height:28px">Internal Server Error.</h2></div></div></div><!--$--><!--/$--><script src="/_next/static/chunks/e6ce59ba40b863f2.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[39756,[\"/_next/static/chunks/ff1a16fafef87110.js\",\"/_next/static/chunks/0b082245f106d665.js\"],\"default\"]\n3:I[37457,[\"/_next/static/chunks/ff1a16fafef87110.js\",\"/_next/static/chunks/0b082245f106d665.js\"],\"default\"]\n4:I[97367,[\"/_next/static/chunks/ff1a16fafef87110.js\",\"/_next/static/chunks/0b082245f106d665.js\"],\"OutletBoundary\"]\n5:\"$Sreact.suspense\"\n7:I[97367,[\"/_next/static/chunks/ff1a16fafef87110.js\",\"/_next/static/chunks/0b082245f106d665.js\"],\"ViewportBoundary\"]\n9:I[97367,[\"/_next/static/chunks/ff1a16fafef87110.js\",\"/_next/static/chunks/0b082245f106d665.js\"],\"MetadataBoundary\"]\nb:I[68027,[\"/_next/static/chunks/ff1a16fafef87110.js\",\"/_next/static/chunks/0b082245f106d665.js\"],\"default\"]\n"])</script><script>self.__next_f.push([1,"0:{\"P\":null,\"b\":\"rObHWX45g5zAJ7RtwthzS\",\"c\":[\"\",\"_global-error\"],\"q\":\"\",\"i\":false,\"f\":[[[\"\",{\"children\":[\"__PAGE__\",{}]}],[[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$L2\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L3\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}],{\"children\":[[\"$\",\"$1\",\"c\",{\"children\":[[\"$\",\"html\",null,{\"id\":\"__next_error__\",\"children\":[[\"$\",\"head\",null,{\"children\":[\"$\",\"title\",null,{\"children\":\"500: Internal Server Error.\"}]}],[\"$\",\"body\",null,{\"children\":[\"$\",\"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,{\"style\":{\"lineHeight\":\"48px\"},\"children\":[[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}\\n@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\",\"paddingRight\":23,\"fontSize\":24,\"fontWeight\":500,\"verticalAlign\":\"top\"},\"children\":\"500\"}],[\"$\",\"div\",null,{\"style\":{\"display\":\"inline-block\"},\"children\":[\"$\",\"h2\",null,{\"style\":{\"fontSize\":14,\"fontWeight\":400,\"lineHeight\":\"28px\"},\"children\":\"Internal Server Error.\"}]}]]}]}]}]]}],[[\"$\",\"script\",\"script-0\",{\"src\":\"/_next/static/chunks/ff1a16fafef87110.js\",\"async\":true,\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-1\",{\"src\":\"/_next/static/chunks/0b082245f106d665.js\",\"async\":true,\"nonce\":\"$undefined\"}]],[\"$\",\"$L4\",null,{\"children\":[\"$\",\"$5\",null,{\"name\":\"Next.MetadataOutlet\",\"children\":\"$@6\"}]}]]}],{},null,false,false]},null,false,false],[\"$\",\"$1\",\"h\",{\"children\":[null,[\"$\",\"$L7\",null,{\"children\":\"$L8\"}],[\"$\",\"div\",null,{\"hidden\":true,\"children\":[\"$\",\"$L9\",null,{\"children\":[\"$\",\"$5\",null,{\"name\":\"Next.Metadata\",\"children\":\"$La\"}]}]}],null]}],false]],\"m\":\"$undefined\",\"G\":[\"$b\",\"$undefined\"],\"S\":true}\n"])</script><script>self.__next_f.push([1,"8:[[\"$\",\"meta\",\"0\",{\"charSet\":\"utf-8\"}],[\"$\",\"meta\",\"1\",{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1\"}]]\n"])</script><script>self.__next_f.push([1,"6:null\na:[]\n"])</script></body></html>
@@ -1 +1 @@
1
- self.__RSC_SERVER_MANIFEST="{\n \"node\": {},\n \"edge\": {},\n \"encryptionKey\": \"Ksef8mc/pcMF3Nd8UEQV9fwmbcDENSYOg1X1Zdhuym8=\"\n}"
1
+ self.__RSC_SERVER_MANIFEST="{\n \"node\": {},\n \"edge\": {},\n \"encryptionKey\": \"HMD1xETfqB72VwqFijXt1kEStijBMmOME3efIZcbqwI=\"\n}"
@@ -1,5 +1,5 @@
1
1
  {
2
2
  "node": {},
3
3
  "edge": {},
4
- "encryptionKey": "Ksef8mc/pcMF3Nd8UEQV9fwmbcDENSYOg1X1Zdhuym8="
4
+ "encryptionKey": "HMD1xETfqB72VwqFijXt1kEStijBMmOME3efIZcbqwI="
5
5
  }
@@ -385,6 +385,26 @@ class GrpcWorkerRunner:
385
385
  pack_version_id = job.pack_version_id if job.HasField('pack_version_id') else None
386
386
  pack_config_override = job.pack_config_override if job.HasField('pack_config_override') else None
387
387
 
388
+ # Check if source exists in local config before starting the job
389
+ source_conf = self.config.load_source_config(verbose=False)
390
+ local_sources = source_conf.get("sources", [])
391
+ source_exists = any(str(s.get("id")) == str(source_id) for s in local_sources)
392
+
393
+ if not source_exists:
394
+ error_msg = f"Source {source_id} not found in local config. Job cannot be executed on this worker."
395
+ logger.warning(error_msg)
396
+ await self.grpc_client.send_job_status(job.id, "failed", error_message=error_msg)
397
+ return
398
+
399
+ # Check if target exists in local config (if specified)
400
+ if target_id:
401
+ target_exists = any(str(s.get("id")) == str(target_id) for s in local_sources)
402
+ if not target_exists:
403
+ error_msg = f"Target {target_id} not found in local config. Job cannot be executed on this worker."
404
+ logger.warning(error_msg)
405
+ await self.grpc_client.send_job_status(job.id, "failed", error_message=error_msg)
406
+ return
407
+
388
408
  # Execute the job
389
409
  await self._execute_job(
390
410
  job_id=job.id,
@@ -630,6 +650,14 @@ class GrpcWorkerRunner:
630
650
  if not source:
631
651
  raise ValueError(f"Source {source_id} not found")
632
652
 
653
+ # Get latest source version if not specified
654
+ if not source_version_id and source.versions:
655
+ latest_source = max(source.versions, key=lambda v: semver.parse_version_info(v.sem_ver_id))
656
+ source_version_id = latest_source.id
657
+ logger.info(f"Using latest source version: {latest_source.sem_ver_id} (id={source_version_id})")
658
+ elif not source_version_id:
659
+ raise ValueError(f"Source {source_id} has no versions. Cannot proceed without a source version.")
660
+
633
661
  # Get pack info
634
662
  pack = await self.grpc_client.get_pack(pack_id)
635
663
  if not pack:
@@ -685,6 +713,14 @@ class GrpcWorkerRunner:
685
713
 
686
714
  # Setup target config if provided
687
715
  if target_id:
716
+ # Get latest target version if not specified
717
+ if not target_version_id:
718
+ target = await self.grpc_client.get_source(target_id)
719
+ if target and target.versions:
720
+ latest_target = max(target.versions, key=lambda v: semver.parse_version_info(v.sem_ver_id))
721
+ target_version_id = latest_target.id
722
+ logger.info(f"Using latest target version: {latest_target.sem_ver_id} (id={target_version_id})")
723
+
688
724
  matching_targets = [s for s in source_conf.get("sources", []) if str(s.get("id")) == str(target_id)]
689
725
  if matching_targets:
690
726
  with open(os.path.join(temp_folder_name, pack_folder, "target_conf.json"), "w") as f:
qalita/grpc/client.py CHANGED
@@ -55,7 +55,10 @@ class GrpcClient:
55
55
  self._initial_reconnect_delay = initial_reconnect_delay
56
56
  self._max_reconnect_delay = max_reconnect_delay
57
57
 
58
- # Parse URL to get gRPC endpoint
58
+ # Connection state - set before parsing URL
59
+ self._use_secure_channel = False
60
+
61
+ # Parse URL to get gRPC endpoint (may update _use_secure_channel)
59
62
  self._grpc_target = self._parse_grpc_target(url)
60
63
 
61
64
  # Connection state
@@ -80,21 +83,41 @@ class GrpcClient:
80
83
  """
81
84
  Parse the backend URL to get the gRPC target.
82
85
 
83
- If the URL is HTTP, convert to gRPC port (default 50051).
84
- If the URL is already gRPC, use as-is.
86
+ For production deployments with ingress:
87
+ - https://api.domain.com -> grpc.domain.com:443 (secure)
88
+ - http://api.domain.com -> grpc.domain.com:443 (secure, assumes TLS termination)
89
+
90
+ For local development:
91
+ - http://localhost:3080 -> localhost:50051 (insecure)
92
+ - grpc://host:port -> host:port (as-is)
85
93
  """
86
94
  parsed = urlparse(url)
87
95
 
88
96
  if parsed.scheme in ('grpc', 'grpcs'):
89
97
  # Already a gRPC URL
98
+ self._use_secure_channel = parsed.scheme == 'grpcs'
90
99
  return f"{parsed.hostname}:{parsed.port or 50051}"
91
100
 
92
- # HTTP URL - convert to gRPC
93
- # Default: use same host but port 50051
94
101
  host = parsed.hostname or 'localhost'
95
- grpc_port = 50051 # Default gRPC port
96
102
 
97
- return f"{host}:{grpc_port}"
103
+ # For localhost/development, use insecure channel on port 50051
104
+ if host in ('localhost', '127.0.0.1', '0.0.0.0'):
105
+ self._use_secure_channel = False
106
+ return f"{host}:50051"
107
+
108
+ # For production URLs (e.g., https://api.cloud.platform.qalita.io)
109
+ # Convert to gRPC endpoint (e.g., grpc.cloud.platform.qalita.io:443)
110
+ self._use_secure_channel = True
111
+
112
+ # Replace 'api.' prefix with 'grpc.' if present
113
+ if host.startswith('api.'):
114
+ host = 'grpc.' + host[4:]
115
+ else:
116
+ # If no api. prefix, just prepend grpc.
117
+ host = 'grpc.' + host
118
+
119
+ # Use port 443 for HTTPS/TLS ingress
120
+ return f"{host}:443"
98
121
 
99
122
  @property
100
123
  def metadata(self) -> list[tuple[str, str]]:
@@ -109,19 +132,30 @@ class GrpcClient:
109
132
  True if connection successful, False otherwise
110
133
  """
111
134
  try:
112
- # Create channel with options for long-running streams
113
- self._channel = grpc.aio.insecure_channel(
114
- self._grpc_target,
115
- options=[
116
- ('grpc.keepalive_time_ms', 30000),
117
- ('grpc.keepalive_timeout_ms', 10000),
118
- ('grpc.keepalive_permit_without_calls', True),
119
- ('grpc.http2.min_recv_ping_interval_without_data_ms', 10000),
120
- ('grpc.http2.max_pings_without_data', 0),
121
- ('grpc.max_receive_message_length', 50 * 1024 * 1024),
122
- ('grpc.max_send_message_length', 50 * 1024 * 1024),
123
- ]
124
- )
135
+ # Channel options for long-running streams
136
+ channel_options = [
137
+ ('grpc.keepalive_time_ms', 30000),
138
+ ('grpc.keepalive_timeout_ms', 10000),
139
+ ('grpc.keepalive_permit_without_calls', True),
140
+ ('grpc.http2.min_recv_ping_interval_without_data_ms', 10000),
141
+ ('grpc.http2.max_pings_without_data', 0),
142
+ ('grpc.max_receive_message_length', 50 * 1024 * 1024),
143
+ ('grpc.max_send_message_length', 50 * 1024 * 1024),
144
+ ]
145
+
146
+ # Create channel - secure for production, insecure for local dev
147
+ if self._use_secure_channel:
148
+ # Use system root certificates for TLS
149
+ self._channel = grpc.aio.secure_channel(
150
+ self._grpc_target,
151
+ grpc.ssl_channel_credentials(),
152
+ options=channel_options,
153
+ )
154
+ else:
155
+ self._channel = grpc.aio.insecure_channel(
156
+ self._grpc_target,
157
+ options=channel_options,
158
+ )
125
159
 
126
160
  self._stub = qalita_pb2_grpc.WorkerServiceStub(self._channel)
127
161
  self._connected = True
@@ -140,7 +174,10 @@ class GrpcClient:
140
174
  self._stream_active = False
141
175
 
142
176
  if self._stream_call:
143
- self._stream_call.cancel()
177
+ try:
178
+ self._stream_call.cancel()
179
+ except Exception as e:
180
+ logger.debug(f"Error cancelling stream during disconnect: {e}")
144
181
  self._stream_call = None
145
182
 
146
183
  if self._channel:
@@ -690,4 +727,7 @@ class GrpcClient:
690
727
  """Stop the bidirectional stream."""
691
728
  self._stream_active = False
692
729
  if self._stream_call:
693
- self._stream_call.cancel()
730
+ try:
731
+ self._stream_call.cancel()
732
+ except Exception as e:
733
+ logger.debug(f"Error cancelling stream during stop: {e}")
qalita/internal/utils.py CHANGED
@@ -224,7 +224,7 @@ def safe_path_check(path: str) -> str: # lgtm[py/path-injection]
224
224
 
225
225
 
226
226
  def get_version():
227
- return "2.8.2"
227
+ return "2.9.0"
228
228
 
229
229
 
230
230
  def make_tarfile(output_filename, source_dir):
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: qalita
3
- Version: 2.8.2
3
+ Version: 2.9.0
4
4
  Summary: QALITA Platform Command Line Interface
5
5
  Author-email: QALITA SAS <contact@qalita.io>
6
6
  License-File: LICENSE
@@ -2,11 +2,11 @@ qalita/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
2
2
  qalita/__main__.py,sha256=4Y7jz7KaTrDXhVTkRzemMWo72lCkhA2OmczJZ7NVrqU,14337
3
3
  qalita/_frontend/package.json,sha256=fnWWjgzyhH814OQHqQi0uT0dqyuGmMYC8i_3PH2gmQ4,1012
4
4
  qalita/_frontend/server.js,sha256=KrurLgbX0joQnxdt0pK368bKkO7WWYwB9O4qO1esJp8,3247
5
- qalita/_frontend/.next/BUILD_ID,sha256=nKRHqN92P_IthZBNC5Gt89yvyJMWASZ5i7DDNYquPyA,21
5
+ qalita/_frontend/.next/BUILD_ID,sha256=XWSawL9JRrIosJoE9jeGg9412KGp7eEsk-bTyymRtoA,21
6
6
  qalita/_frontend/.next/app-path-routes-manifest.json,sha256=A3gXyNRAiFmuY9ZldRfeFT-AUO9vzgyShRFl5TlbYEw,651
7
- qalita/_frontend/.next/build-manifest.json,sha256=e090vX-yD6-7jOpu6zntwgDF9nTnTMM2PQw-cWwauiE,494
7
+ qalita/_frontend/.next/build-manifest.json,sha256=ZwUld7EkSwSua07cqiely13LKMjbwbFk_rmVm_Gjj5I,494
8
8
  qalita/_frontend/.next/package.json,sha256=CRoE-mfHkHuY4Qb8_4uWThMSl1T85y0k8wJbl8SIf6M,20
9
- qalita/_frontend/.next/prerender-manifest.json,sha256=gKScqqy9Q9JpY4FlAYeujRUA0OhsUcUIwQhh7qWj86E,2843
9
+ qalita/_frontend/.next/prerender-manifest.json,sha256=tsIvJo_evsiWDZuuFJU-Usl3XOeqrrvT2gSVdJ7MOoo,2843
10
10
  qalita/_frontend/.next/required-server-files.json,sha256=wr_4j4ZpErosGBamWw8W-ZmrTGVArTuGZN9n0J-PFVU,4310
11
11
  qalita/_frontend/.next/routes-manifest.json,sha256=dWpL96Ar6CcoMSOQoCxWFcWdBOX28LK98rxaT3uzNBw,3623
12
12
  qalita/_frontend/.next/server/app-paths-manifest.json,sha256=ug9itFoYqSD_Nw1yphr9N11CCY8r3Pq8sOIlICdIiqk,824
@@ -17,21 +17,21 @@ qalita/_frontend/.next/server/middleware.js,sha256=k1o5Tfy2V8ACBvFczK60_Cp2dlXu1
17
17
  qalita/_frontend/.next/server/next-font-manifest.js,sha256=Nv62_57aLJWNpVvfPnKAWWkCy69wUM-soNXGjuJdK-I,135
18
18
  qalita/_frontend/.next/server/next-font-manifest.json,sha256=ZflTEi_i-1kQ2ESVQh7jI5ewvmMh2qWRGL2F08vFHU0,94
19
19
  qalita/_frontend/.next/server/pages-manifest.json,sha256=w1QFnKohfnK96xReNRsgOJkJcocsUt8hXLHkEFw1CXs,58
20
- qalita/_frontend/.next/server/server-reference-manifest.js,sha256=a0XB9YvsyLRv3viaj0E3Mv6TQteTo_37MPIK5XEokrU,138
21
- qalita/_frontend/.next/server/server-reference-manifest.json,sha256=BpK2qfYcY0PW955Cg5KCaT_LiyK4bKEp_QMr0OAo9tI,97
22
- qalita/_frontend/.next/server/app/_global-error.html,sha256=6Hf6WU6ZsUp_uMXWLmZfjSYgov2o2BGQInix-wM72q8,5631
20
+ qalita/_frontend/.next/server/server-reference-manifest.js,sha256=3uPjdy53pnYM3XBjX4FSJE2gQykvbmMzKs0Ip0Eh-dw,138
21
+ qalita/_frontend/.next/server/server-reference-manifest.json,sha256=QTx0V0vDDzQxzOcZxGq-Y7E3l8WZxUf7xpanFbKIfH8,97
22
+ qalita/_frontend/.next/server/app/_global-error.html,sha256=u2_079pLfkhn1xlOI8vYXeqj-NOYfimbJMcdBkRBRvw,5631
23
23
  qalita/_frontend/.next/server/app/_global-error.meta,sha256=aN000i-wRaaK5yafnaachO4nGfgxJoFUZUzoKdZmLcc,314
24
- qalita/_frontend/.next/server/app/_global-error.rsc,sha256=_2dhX4hshFgOveEyCUquxzz5g_W2EjnBI_85LxgLyTY,3157
25
- qalita/_frontend/.next/server/app/_not-found.html,sha256=p9zUVWDW4wlzIHxp8rJgTUB_5n_qyWuPaGqIRpk7zxk,9724
24
+ qalita/_frontend/.next/server/app/_global-error.rsc,sha256=_V2Cy1WjkyRc2BV1OhRojqZgfpilUx2imyVf1_VJ4QE,3157
25
+ qalita/_frontend/.next/server/app/_not-found.html,sha256=1oXBNtVMD1_4foddJ1sYGKkg7kj1-xNZCadYfDqWi5s,9724
26
26
  qalita/_frontend/.next/server/app/_not-found.meta,sha256=nTveduHcq1fPizwAT5yRLVG4tou5ZeU-zS8Q_FqFhaE,335
27
- qalita/_frontend/.next/server/app/_not-found.rsc,sha256=yxy5lwQ-v77ttME8sncWet1C78lMOBEwx_mLvJocjSg,5786
27
+ qalita/_frontend/.next/server/app/_not-found.rsc,sha256=iDYd4hsUGvArrXS6QflBMk6Gx2hPrEzzgZTpn2_PtzA,5786
28
28
  qalita/_frontend/.next/server/app/page.js,sha256=wQbknLn1MVIeHe8tug_RKA4DJDM6SEItqUKUF3pU2z8,958
29
29
  qalita/_frontend/.next/server/app/page.js.map,sha256=qK4gkI46qIoAW_O1yt7dfxEHzyim5NudqAKA_p9U3pU,53
30
30
  qalita/_frontend/.next/server/app/page.js.nft.json,sha256=4vLJ5Ro4iNb16WwbwkY4sOz8EL6l7qNHKXP_7v8TeRI,4704
31
31
  qalita/_frontend/.next/server/app/page_client-reference-manifest.js,sha256=9x0MRMU1KTjvg0dam-ulbtMtk3xXPaGFtfNVJ-qZjFM,9403
32
- qalita/_frontend/.next/server/app/sources.html,sha256=ciVMpjiC-RBJoqsni69_NHSkeagGYLBgl47Nd4Dq5_c,39061
32
+ qalita/_frontend/.next/server/app/sources.html,sha256=aMR-0Lx-ThV7Viv0j9Sj8vqxThgpSrSJDMwssLLN0Og,39061
33
33
  qalita/_frontend/.next/server/app/sources.meta,sha256=FIVWBTrjicadYE-AgLwVPExdzW0iaMaHs8TKS6KyHck,303
34
- qalita/_frontend/.next/server/app/sources.rsc,sha256=-hOi5dKCCnWoIH3djJ14dwcNpdGXGqtKhpygYhppNfU,5120
34
+ qalita/_frontend/.next/server/app/sources.rsc,sha256=N2CSBP4WevYBnsW0NjT9ddUjnbFQkRdU2sZc5ISEp1k,5120
35
35
  qalita/_frontend/.next/server/app/_global-error/page.js,sha256=j-ZGApNgRM1tl4o5P_oSixiQsThGC-xcIbTvy65ofeo,597
36
36
  qalita/_frontend/.next/server/app/_global-error/page.js.map,sha256=qK4gkI46qIoAW_O1yt7dfxEHzyim5NudqAKA_p9U3pU,53
37
37
  qalita/_frontend/.next/server/app/_global-error/page.js.nft.json,sha256=cKeBDlph4hRuXXnae9-0c7c0AMLM3iRjzgBbIbkX2ck,4302
@@ -41,11 +41,11 @@ qalita/_frontend/.next/server/app/_global-error/page/build-manifest.json,sha256=
41
41
  qalita/_frontend/.next/server/app/_global-error/page/next-font-manifest.json,sha256=3BcZ-zuXMnkkiEpYOcXPpoiW4ogD8M1elpt8IPUZ0eU,94
42
42
  qalita/_frontend/.next/server/app/_global-error/page/react-loadable-manifest.json,sha256=RBNvo1WzZ4oRRq0W9-hknpT7T8If536DEMBg9hyq_4o,2
43
43
  qalita/_frontend/.next/server/app/_global-error/page/server-reference-manifest.json,sha256=0Mf3DnskoPb2tS5kvdvVFwXa0h5jQD3d63I7A-cL6aU,30
44
- qalita/_frontend/.next/server/app/_global-error.segments/__PAGE__.segment.rsc,sha256=WUtZW05kPjo_Y0ytzhh0mqiOv8tKnD6zHQsc93tM15U,1725
45
- qalita/_frontend/.next/server/app/_global-error.segments/_full.segment.rsc,sha256=_2dhX4hshFgOveEyCUquxzz5g_W2EjnBI_85LxgLyTY,3157
46
- qalita/_frontend/.next/server/app/_global-error.segments/_head.segment.rsc,sha256=J7Yb-n7mIWOONyus-H4YmH3hYueXXkgw7BblxQB4aCw,678
47
- qalita/_frontend/.next/server/app/_global-error.segments/_index.segment.rsc,sha256=xXf5JT9veAqqbiEgm4f5TpuzZxvvaV1XJoJYTzia-wQ,432
48
- qalita/_frontend/.next/server/app/_global-error.segments/_tree.segment.rsc,sha256=9kpmwC4cqV0l4BEb0Ogeb84dj0w133ogIVMEDpJ9LzY,293
44
+ qalita/_frontend/.next/server/app/_global-error.segments/__PAGE__.segment.rsc,sha256=JoOJFr7vvLAbrR51zyMf1oozFpgujp5gr-FHXC1bzbY,1725
45
+ qalita/_frontend/.next/server/app/_global-error.segments/_full.segment.rsc,sha256=_V2Cy1WjkyRc2BV1OhRojqZgfpilUx2imyVf1_VJ4QE,3157
46
+ qalita/_frontend/.next/server/app/_global-error.segments/_head.segment.rsc,sha256=qWhzq0sAfqnsueCTgYQ7VEmpF7j4WFgOAs62zRQNYC0,678
47
+ qalita/_frontend/.next/server/app/_global-error.segments/_index.segment.rsc,sha256=Q5OBymrW1mnumVlIc1bKNKNHjxVx4gFSIzv89U6G3R4,432
48
+ qalita/_frontend/.next/server/app/_global-error.segments/_tree.segment.rsc,sha256=Bd3r7hPu2m6eNvgw3wpAnbNRlpC3W1C2RfMXNfx5bZI,293
49
49
  qalita/_frontend/.next/server/app/_not-found/page.js,sha256=Aa15rCP-Oi7ATFZ_3i2ESK7X0LJz_Md83NTqieBOWPU,834
50
50
  qalita/_frontend/.next/server/app/_not-found/page.js.map,sha256=qK4gkI46qIoAW_O1yt7dfxEHzyim5NudqAKA_p9U3pU,53
51
51
  qalita/_frontend/.next/server/app/_not-found/page.js.nft.json,sha256=wpUwRsughSWNxKfMjX34pP-nGrFmrNQDVocjFjVsaWs,4524
@@ -55,12 +55,12 @@ qalita/_frontend/.next/server/app/_not-found/page/build-manifest.json,sha256=lGV
55
55
  qalita/_frontend/.next/server/app/_not-found/page/next-font-manifest.json,sha256=3BcZ-zuXMnkkiEpYOcXPpoiW4ogD8M1elpt8IPUZ0eU,94
56
56
  qalita/_frontend/.next/server/app/_not-found/page/react-loadable-manifest.json,sha256=RBNvo1WzZ4oRRq0W9-hknpT7T8If536DEMBg9hyq_4o,2
57
57
  qalita/_frontend/.next/server/app/_not-found/page/server-reference-manifest.json,sha256=0Mf3DnskoPb2tS5kvdvVFwXa0h5jQD3d63I7A-cL6aU,30
58
- qalita/_frontend/.next/server/app/_not-found.segments/_full.segment.rsc,sha256=yxy5lwQ-v77ttME8sncWet1C78lMOBEwx_mLvJocjSg,5786
59
- qalita/_frontend/.next/server/app/_not-found.segments/_head.segment.rsc,sha256=9rA_scNUTRrKTicKQy88Nc5TMKUDhn2f-wHYzRxie9o,863
60
- qalita/_frontend/.next/server/app/_not-found.segments/_index.segment.rsc,sha256=INibyTD5PYnLrVhgfTPH85Z8N7g6Z73tdrX5M0rxdsU,2645
61
- qalita/_frontend/.next/server/app/_not-found.segments/_not-found.segment.rsc,sha256=r_Ks66Q2ztmJbwNYWkn7w6hZzEE8zn5kqq7-2OhnG-4,432
62
- qalita/_frontend/.next/server/app/_not-found.segments/_tree.segment.rsc,sha256=8RAs6pSp74gOzTmHJJwFB6FPNQCpQbHEOVIVNIaSvo8,578
63
- qalita/_frontend/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc,sha256=6GrmpgAlRI1DWoWCrL68r5GvEHoXbKH9e8GF0VVgc98,1449
58
+ qalita/_frontend/.next/server/app/_not-found.segments/_full.segment.rsc,sha256=iDYd4hsUGvArrXS6QflBMk6Gx2hPrEzzgZTpn2_PtzA,5786
59
+ qalita/_frontend/.next/server/app/_not-found.segments/_head.segment.rsc,sha256=xD0DgNNDVWwpQtyn3yCBTMg4rkH-xOlzMyZQqMwYdME,863
60
+ qalita/_frontend/.next/server/app/_not-found.segments/_index.segment.rsc,sha256=OQhrMAtOjLSqt_KMTbK0g5uY20TJ8VmNx7PCGWH1WgE,2645
61
+ qalita/_frontend/.next/server/app/_not-found.segments/_not-found.segment.rsc,sha256=0UjorfMTicr0ZMZY-Cceqxrz3HSCBBjpL7aKUQSVZ38,432
62
+ qalita/_frontend/.next/server/app/_not-found.segments/_tree.segment.rsc,sha256=tUCUMP-wQhlJqEhhbzv0qXQwAsm9KTFWt9SSPNAkujA,578
63
+ qalita/_frontend/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc,sha256=jOrvAjKi9sj0SsqodxTzv9aA1sb895mK2Y0DqKyvXNQ,1449
64
64
  qalita/_frontend/.next/server/app/api/context/[...path]/route.js,sha256=uaU9-jWXysMw9ykruNOD7WCcOtNVklLn1ydyxG2I4qw,358
65
65
  qalita/_frontend/.next/server/app/api/context/[...path]/route.js.map,sha256=qK4gkI46qIoAW_O1yt7dfxEHzyim5NudqAKA_p9U3pU,53
66
66
  qalita/_frontend/.next/server/app/api/context/[...path]/route.js.nft.json,sha256=fvfT5uZm0R3VxniObxelyH-C1Mx3BATWzYphFP0KIfw,4316
@@ -129,9 +129,9 @@ qalita/_frontend/.next/server/app/page/build-manifest.json,sha256=lGVNVz0SNWAGZj
129
129
  qalita/_frontend/.next/server/app/page/next-font-manifest.json,sha256=3BcZ-zuXMnkkiEpYOcXPpoiW4ogD8M1elpt8IPUZ0eU,94
130
130
  qalita/_frontend/.next/server/app/page/react-loadable-manifest.json,sha256=RBNvo1WzZ4oRRq0W9-hknpT7T8If536DEMBg9hyq_4o,2
131
131
  qalita/_frontend/.next/server/app/page/server-reference-manifest.json,sha256=0Mf3DnskoPb2tS5kvdvVFwXa0h5jQD3d63I7A-cL6aU,30
132
- qalita/_frontend/.next/server/app/sources/add.html,sha256=0G0fBXlSVKOmT9-IH99-H_rAxXQ-SI4IBNdaeLZH0IM,14624
132
+ qalita/_frontend/.next/server/app/sources/add.html,sha256=ga9fY5onKSlyhoQiAH8JqVkdCetSPjxeLrD0-8UzwUw,14624
133
133
  qalita/_frontend/.next/server/app/sources/add.meta,sha256=1TjeQNQI0VgSESjolK_fJjKj3YAsqqjdoylbZuA7I6U,360
134
- qalita/_frontend/.next/server/app/sources/add.rsc,sha256=0Gw6UHe305s8tpJ0W0915n5-F5_oyRsgFX_RuMghBvU,5519
134
+ qalita/_frontend/.next/server/app/sources/add.rsc,sha256=Y_scqasICrNNxZJNKxzHWmStWH1542Ml9JHB-iMAkNo,5519
135
135
  qalita/_frontend/.next/server/app/sources/page.js,sha256=xoVWKzAlBWNfrmUc72kuF9fS-4VRaBzonyGYm8ZOin0,977
136
136
  qalita/_frontend/.next/server/app/sources/page.js.map,sha256=qK4gkI46qIoAW_O1yt7dfxEHzyim5NudqAKA_p9U3pU,53
137
137
  qalita/_frontend/.next/server/app/sources/page.js.nft.json,sha256=eFCWpqzRpFANrEk2k4oKaNvP-4D8wuJngZc5h07kXG0,4781
@@ -145,13 +145,13 @@ qalita/_frontend/.next/server/app/sources/add/page/build-manifest.json,sha256=lG
145
145
  qalita/_frontend/.next/server/app/sources/add/page/next-font-manifest.json,sha256=3BcZ-zuXMnkkiEpYOcXPpoiW4ogD8M1elpt8IPUZ0eU,94
146
146
  qalita/_frontend/.next/server/app/sources/add/page/react-loadable-manifest.json,sha256=RBNvo1WzZ4oRRq0W9-hknpT7T8If536DEMBg9hyq_4o,2
147
147
  qalita/_frontend/.next/server/app/sources/add/page/server-reference-manifest.json,sha256=0Mf3DnskoPb2tS5kvdvVFwXa0h5jQD3d63I7A-cL6aU,30
148
- qalita/_frontend/.next/server/app/sources/add.segments/_full.segment.rsc,sha256=0Gw6UHe305s8tpJ0W0915n5-F5_oyRsgFX_RuMghBvU,5519
149
- qalita/_frontend/.next/server/app/sources/add.segments/_head.segment.rsc,sha256=qy9stykva8WAXnnGtDhOCahvsA84ufg4dB85WP17MXg,812
150
- qalita/_frontend/.next/server/app/sources/add.segments/_index.segment.rsc,sha256=OVvYlgrm1pW_9iCcw1cemlVxTDq9Ff_TnyHASl1bLTE,2512
151
- qalita/_frontend/.next/server/app/sources/add.segments/_tree.segment.rsc,sha256=RkPwEc62415ieyoJ9ZA5dyCBLE7GGCOloX5yEBwiSh0,688
152
- qalita/_frontend/.next/server/app/sources/add.segments/sources.segment.rsc,sha256=xXf5JT9veAqqbiEgm4f5TpuzZxvvaV1XJoJYTzia-wQ,432
153
- qalita/_frontend/.next/server/app/sources/add.segments/sources/add.segment.rsc,sha256=xXf5JT9veAqqbiEgm4f5TpuzZxvvaV1XJoJYTzia-wQ,432
154
- qalita/_frontend/.next/server/app/sources/add.segments/sources/add/__PAGE__.segment.rsc,sha256=TW8_4jqqxoPpaSth0i-SBcle8qbJiyAE19l3VkoguqE,998
148
+ qalita/_frontend/.next/server/app/sources/add.segments/_full.segment.rsc,sha256=Y_scqasICrNNxZJNKxzHWmStWH1542Ml9JHB-iMAkNo,5519
149
+ qalita/_frontend/.next/server/app/sources/add.segments/_head.segment.rsc,sha256=oSjyvHjFxrNClH5Cb7lD5_5gXcSJOtPR41eDiG49aWk,812
150
+ qalita/_frontend/.next/server/app/sources/add.segments/_index.segment.rsc,sha256=YKcYNL-238VtskkR-d75gWcy5Xj31R7lOhFrXvIZZSQ,2512
151
+ qalita/_frontend/.next/server/app/sources/add.segments/_tree.segment.rsc,sha256=WcWIWt8KCIU-CwVLeM11V6mQ5tsI7W4eSYgeUUGHeXU,688
152
+ qalita/_frontend/.next/server/app/sources/add.segments/sources.segment.rsc,sha256=Q5OBymrW1mnumVlIc1bKNKNHjxVx4gFSIzv89U6G3R4,432
153
+ qalita/_frontend/.next/server/app/sources/add.segments/sources/add.segment.rsc,sha256=Q5OBymrW1mnumVlIc1bKNKNHjxVx4gFSIzv89U6G3R4,432
154
+ qalita/_frontend/.next/server/app/sources/add.segments/sources/add/__PAGE__.segment.rsc,sha256=Sxr44pTrutVnfiNyhUw2g_1Aw3jB25L7XCB7SOMn0N0,998
155
155
  qalita/_frontend/.next/server/app/sources/edit/[id]/page.js,sha256=hCM58dWn3ZzZIrKd1Q0pYsjaPYkRVn55nZQTYV5M-hw,1003
156
156
  qalita/_frontend/.next/server/app/sources/edit/[id]/page.js.map,sha256=qK4gkI46qIoAW_O1yt7dfxEHzyim5NudqAKA_p9U3pU,53
157
157
  qalita/_frontend/.next/server/app/sources/edit/[id]/page.js.nft.json,sha256=pEBVY1CnwcFaRtfFX-KKcf9efGUIYF4xhESOMTlywsk,5236
@@ -166,12 +166,12 @@ qalita/_frontend/.next/server/app/sources/page/build-manifest.json,sha256=lGVNVz
166
166
  qalita/_frontend/.next/server/app/sources/page/next-font-manifest.json,sha256=3BcZ-zuXMnkkiEpYOcXPpoiW4ogD8M1elpt8IPUZ0eU,94
167
167
  qalita/_frontend/.next/server/app/sources/page/react-loadable-manifest.json,sha256=RBNvo1WzZ4oRRq0W9-hknpT7T8If536DEMBg9hyq_4o,2
168
168
  qalita/_frontend/.next/server/app/sources/page/server-reference-manifest.json,sha256=0Mf3DnskoPb2tS5kvdvVFwXa0h5jQD3d63I7A-cL6aU,30
169
- qalita/_frontend/.next/server/app/sources.segments/_full.segment.rsc,sha256=-hOi5dKCCnWoIH3djJ14dwcNpdGXGqtKhpygYhppNfU,5120
170
- qalita/_frontend/.next/server/app/sources.segments/_head.segment.rsc,sha256=qy9stykva8WAXnnGtDhOCahvsA84ufg4dB85WP17MXg,812
171
- qalita/_frontend/.next/server/app/sources.segments/_index.segment.rsc,sha256=OVvYlgrm1pW_9iCcw1cemlVxTDq9Ff_TnyHASl1bLTE,2512
172
- qalita/_frontend/.next/server/app/sources.segments/_tree.segment.rsc,sha256=38CwtsCBtyJgBIeGo-vvicxKE8RGn3Nhi9B0G4LPUFc,570
173
- qalita/_frontend/.next/server/app/sources.segments/sources.segment.rsc,sha256=xXf5JT9veAqqbiEgm4f5TpuzZxvvaV1XJoJYTzia-wQ,432
174
- qalita/_frontend/.next/server/app/sources.segments/sources/__PAGE__.segment.rsc,sha256=oXzBRivfa_7i82oZNRKQoteA9AuBuWl7_0ghddE3Cp0,999
169
+ qalita/_frontend/.next/server/app/sources.segments/_full.segment.rsc,sha256=N2CSBP4WevYBnsW0NjT9ddUjnbFQkRdU2sZc5ISEp1k,5120
170
+ qalita/_frontend/.next/server/app/sources.segments/_head.segment.rsc,sha256=oSjyvHjFxrNClH5Cb7lD5_5gXcSJOtPR41eDiG49aWk,812
171
+ qalita/_frontend/.next/server/app/sources.segments/_index.segment.rsc,sha256=YKcYNL-238VtskkR-d75gWcy5Xj31R7lOhFrXvIZZSQ,2512
172
+ qalita/_frontend/.next/server/app/sources.segments/_tree.segment.rsc,sha256=UzuyYL0kDO4q8yfefE5XcbCfL0HnEN9YOfSAzVSfWCY,570
173
+ qalita/_frontend/.next/server/app/sources.segments/sources.segment.rsc,sha256=Q5OBymrW1mnumVlIc1bKNKNHjxVx4gFSIzv89U6G3R4,432
174
+ qalita/_frontend/.next/server/app/sources.segments/sources/__PAGE__.segment.rsc,sha256=MYGFll9GOT-xJNEDk25G5PZ18fBdRvoqAbfPkk8yF6g,999
175
175
  qalita/_frontend/.next/server/chunks/[externals]_next_dist_f9e520a4._.js,sha256=q9YB2J0v8P3kSptgeZC86bIwSmHhjQ-6eSq54rTkTCU,904
176
176
  qalita/_frontend/.next/server/chunks/[root-of-the-server]__2b503b6f._.js,sha256=WhnKtl1_wysTOk1LQKLRXT9KVIJbDtMy1mL_KhP_eGc,7418
177
177
  qalita/_frontend/.next/server/chunks/[root-of-the-server]__2f426c3e._.js,sha256=SNQUGisvvkRk0l95Fg5aa4BgAGEHVO2Q9TMYW7LyO7o,7444
@@ -235,8 +235,8 @@ qalita/_frontend/.next/server/chunks/ssr/node_modules_next_dist_client_component
235
235
  qalita/_frontend/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_d92e159d.js,sha256=tbmjbMfXw1hoLEZBiWbfFvQW8SHXG9H6hpJyb8-miZQ,17235
236
236
  qalita/_frontend/.next/server/chunks/ssr/node_modules_next_dist_esm_eedfc1fd._.js,sha256=_tq20sY6W0qWkzaGgn-G5NOdLARCqINZOntFiSplcSw,45582
237
237
  qalita/_frontend/.next/server/chunks/ssr/node_modules_next_dist_server_route-modules_app-page_vendored_a443a6bf._.js,sha256=YorwmNurM-tUN49I11J9vrZg3rLQKMPs7SZNmbNo6GI,478
238
- qalita/_frontend/.next/server/pages/404.html,sha256=p9zUVWDW4wlzIHxp8rJgTUB_5n_qyWuPaGqIRpk7zxk,9724
239
- qalita/_frontend/.next/server/pages/500.html,sha256=6Hf6WU6ZsUp_uMXWLmZfjSYgov2o2BGQInix-wM72q8,5631
238
+ qalita/_frontend/.next/server/pages/404.html,sha256=1oXBNtVMD1_4foddJ1sYGKkg7kj1-xNZCadYfDqWi5s,9724
239
+ qalita/_frontend/.next/server/pages/500.html,sha256=u2_079pLfkhn1xlOI8vYXeqj-NOYfimbJMcdBkRBRvw,5631
240
240
  qalita/_frontend/.next/static/chunks/02a64570f0a14789.js,sha256=qItPEux6CtzBmMEXGLWo9ToCt6NT8lIMjoiFrSXFjiw,13259
241
241
  qalita/_frontend/.next/static/chunks/0b082245f106d665.js,sha256=J-jHljXirxsVszUxOOTfdL0dcLbopAZwX4LFzXF6O94,30717
242
242
  qalita/_frontend/.next/static/chunks/27b3ba70c7ef50a8.js,sha256=0JB7dyLOqIDw9Z5xlTve4uzLLNAD1lz3NhP0Ift01io,14901
@@ -254,9 +254,9 @@ qalita/_frontend/.next/static/chunks/e6ce59ba40b863f2.js,sha256=4wte9C6_s3UNXAiK
254
254
  qalita/_frontend/.next/static/chunks/ec4b1f1e3cd3ae43.js,sha256=2XUUuVgNVkcbmsq7yrJjqMWzYipSE79YZjiiNbYPZ60,224520
255
255
  qalita/_frontend/.next/static/chunks/ff1a16fafef87110.js,sha256=6XhrEwWJTkEZu5gRqBbayc9XZ1VZbdmJ7hW0VXSfw14,282
256
256
  qalita/_frontend/.next/static/chunks/turbopack-d21156d03715fafa.js,sha256=w4uPn0rJihPPPtJIzb3UTHNFgQL4vkBv38nOd7sLfG0,10250
257
- qalita/_frontend/.next/static/yOpcG0FUJuYfUPn1ZW5CD/_buildManifest.js,sha256=lHbgr9P52mimTm7FhjEZH9PqymLJ9aN351F_6aieWeo,219
258
- qalita/_frontend/.next/static/yOpcG0FUJuYfUPn1ZW5CD/_clientMiddlewareManifest.json,sha256=VW5HGCRyt_M3kSfe3mbBwjv5Ha9Oj6ua9oBsIubszCk,209
259
- qalita/_frontend/.next/static/yOpcG0FUJuYfUPn1ZW5CD/_ssgManifest.js,sha256=Z49s4suAsf5y_GfnQSvm4qtq2ggxEbZPfEDTXjy6XgA,80
257
+ qalita/_frontend/.next/static/rObHWX45g5zAJ7RtwthzS/_buildManifest.js,sha256=lHbgr9P52mimTm7FhjEZH9PqymLJ9aN351F_6aieWeo,219
258
+ qalita/_frontend/.next/static/rObHWX45g5zAJ7RtwthzS/_clientMiddlewareManifest.json,sha256=VW5HGCRyt_M3kSfe3mbBwjv5Ha9Oj6ua9oBsIubszCk,209
259
+ qalita/_frontend/.next/static/rObHWX45g5zAJ7RtwthzS/_ssgManifest.js,sha256=Z49s4suAsf5y_GfnQSvm4qtq2ggxEbZPfEDTXjy6XgA,80
260
260
  qalita/_frontend/node_modules/@img/colour/color.cjs,sha256=oAjEFf-X2T1sHb6sWFYkfq_KGzypc7_NdRy1lujnKaw,44950
261
261
  qalita/_frontend/node_modules/@img/colour/index.cjs,sha256=5uk-f7IJQgog_fLsZ26cZ0E76NWs6Z7sZPlGhIDwNo0,49
262
262
  qalita/_frontend/node_modules/@img/colour/package.json,sha256=bvoBzsVeaHJG179iItF4Y944mYWHQxLmp0ud8aROlSo,1016
@@ -1581,9 +1581,9 @@ qalita/commands/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
1581
1581
  qalita/commands/pack.py,sha256=M_HK00hsN-ANpxPWqixfhhx99rA6hk8FCsMUDII48jQ,42408
1582
1582
  qalita/commands/source.py,sha256=_qd6TR45XAWikrT66qwGRUHEJWjQXYiqQWCk1hWNIE0,31429
1583
1583
  qalita/commands/worker.py,sha256=PrmqELs8zK6neJ_KnB6CZznsxPHOjCTmIlzVtatFWnM,54912
1584
- qalita/commands/worker_grpc.py,sha256=R54p9tICh3Zwsk2JgMtmJ_kOZP-oDEhV6U7I0H5C740,38844
1584
+ qalita/commands/worker_grpc.py,sha256=f_SqHuM1wAM6e7_H40FowgcQRLvZdYm5EqCcGE4xp9Y,41116
1585
1585
  qalita/grpc/__init__.py,sha256=hRMTR5RrASwlC3TvDShN9PPMXiKvt6lTzGk_p5LHqAY,163
1586
- qalita/grpc/client.py,sha256=mcsXCp0tVOmp2VkGHAJZVpAYdmgFX9i9aod1SykSlxI,26137
1586
+ qalita/grpc/client.py,sha256=dfZV98DxsBL4W7zv6mwtqjw_3I2XhQTooiwXTFHzR6w,27840
1587
1587
  qalita/grpc/protos/__init__.py,sha256=T32IXS-dhPpiyb4WHqYVh-jeRYME_4K0Uo2SSKCrAZc,87
1588
1588
  qalita/grpc/protos/qalita.proto,sha256=2P54R3K8QBTczc0tnt6zaENIgZ9Eka9MA7OuU-p1yG8,10992
1589
1589
  qalita/grpc/protos/qalita_pb2.py,sha256=53w6CX40AyCkfi7y7UtepSdkovTuyaWj5ETCtQtSX5I,17282
@@ -1594,7 +1594,7 @@ qalita/internal/data_preview.py,sha256=OP6DmK2XuGnUsjDKP3vsF0CvcQcIsv75-hGJmPLrj
1594
1594
  qalita/internal/error_patterns.py,sha256=QDFNZEoTmqVOHkiGFljstY6VOhux7d4p8FIL3pKzwtQ,1447
1595
1595
  qalita/internal/logger.py,sha256=4xWy2BZII89nUw4tKrLXFPOlVGONm8KUBgzX2XZ3u7g,1868
1596
1596
  qalita/internal/request.py,sha256=3Jdny4zTUauHAHy2aflGSLvCBYshLOQ8_nHJjWc908I,6622
1597
- qalita/internal/utils.py,sha256=_vIdiwPtZoe2fqBYKbQYv8NHF5dSy-eMr1hUZOUFIVY,14581
1597
+ qalita/internal/utils.py,sha256=fCKIKlZtUvWV2wGtLjwKkrhPjCDXfACtzYXlNPp7EdE,14581
1598
1598
  qalita/web/__init__.py,sha256=NRcQjZSizkqN0a-LutsN7X9LBQ8MhyazXBSuqzUEmXE,62
1599
1599
  qalita/web/app.py,sha256=tJ9X5lkR44ZIEHoN2ZKBqehwhQnE-NbdWkkSAINA69E,5721
1600
1600
  qalita/web/blueprints/context.py,sha256=dqaigSBLqyMIq_EI5OJ2I62YMlE2jaVVQgmpph0HqlE,4788
@@ -1602,8 +1602,8 @@ qalita/web/blueprints/dashboard.py,sha256=87v8OCeFdd-RCSBKUe4VHdRizO_4qlP2VOX0ah
1602
1602
  qalita/web/blueprints/helpers.py,sha256=JpIYnwLVH-6OarbCJIt4zfE__gb-HPosj5FgHgmUi3A,20133
1603
1603
  qalita/web/blueprints/sources.py,sha256=PlY2Qrg1-bJoDmssJm9HUfW9vAaqNWCFZcYYlshznmQ,30580
1604
1604
  qalita/web/blueprints/workers.py,sha256=0XCmh-uwL9m75yD65E0RCBP8M_FeVXNvZDASOgwV0es,16485
1605
- qalita-2.8.2.dist-info/METADATA,sha256=CU692_nhkK3kubl3JsnxBUBPtUTvKKGFBLZGgWufYb4,2750
1606
- qalita-2.8.2.dist-info/WHEEL,sha256=WLgqFyCfm_KASv4WHyYy0P3pM_m7J5L9k2skdKLirC8,87
1607
- qalita-2.8.2.dist-info/entry_points.txt,sha256=h_4bMcWq-LKrSLca7IAPQnqlZkxz7BBH8eio4nqZCVU,48
1608
- qalita-2.8.2.dist-info/licenses/LICENSE,sha256=cZt92dnxw87-VK4HB6KnmYV7mpf4JUdBkAHzFn1kQxM,22458
1609
- qalita-2.8.2.dist-info/RECORD,,
1605
+ qalita-2.9.0.dist-info/METADATA,sha256=24teyYtkQcb0cEPvkGb2fb_oh6ZCQWjyhNJmpIlslaI,2750
1606
+ qalita-2.9.0.dist-info/WHEEL,sha256=WLgqFyCfm_KASv4WHyYy0P3pM_m7J5L9k2skdKLirC8,87
1607
+ qalita-2.9.0.dist-info/entry_points.txt,sha256=h_4bMcWq-LKrSLca7IAPQnqlZkxz7BBH8eio4nqZCVU,48
1608
+ qalita-2.9.0.dist-info/licenses/LICENSE,sha256=cZt92dnxw87-VK4HB6KnmYV7mpf4JUdBkAHzFn1kQxM,22458
1609
+ qalita-2.9.0.dist-info/RECORD,,
File without changes