qalita 2.9.1__py3-none-any.whl → 2.9.2__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 (109) hide show
  1. qalita/_frontend/.next/BUILD_ID +1 -1
  2. qalita/_frontend/.next/build-manifest.json +7 -7
  3. qalita/_frontend/.next/prerender-manifest.json +3 -3
  4. qalita/_frontend/.next/required-server-files.json +196 -40
  5. qalita/_frontend/.next/server/app/_global-error/page/build-manifest.json +5 -5
  6. qalita/_frontend/.next/server/app/_global-error/page_client-reference-manifest.js +1 -1
  7. qalita/_frontend/.next/server/app/_global-error.html +2 -2
  8. qalita/_frontend/.next/server/app/_global-error.rsc +7 -7
  9. qalita/_frontend/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +2 -2
  10. qalita/_frontend/.next/server/app/_global-error.segments/_full.segment.rsc +7 -7
  11. qalita/_frontend/.next/server/app/_global-error.segments/_head.segment.rsc +3 -3
  12. qalita/_frontend/.next/server/app/_global-error.segments/_index.segment.rsc +3 -3
  13. qalita/_frontend/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  14. qalita/_frontend/.next/server/app/_not-found/page/build-manifest.json +5 -5
  15. qalita/_frontend/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  16. qalita/_frontend/.next/server/app/_not-found.html +1 -1
  17. qalita/_frontend/.next/server/app/_not-found.rsc +8 -8
  18. qalita/_frontend/.next/server/app/_not-found.segments/_full.segment.rsc +8 -8
  19. qalita/_frontend/.next/server/app/_not-found.segments/_head.segment.rsc +3 -3
  20. qalita/_frontend/.next/server/app/_not-found.segments/_index.segment.rsc +4 -4
  21. qalita/_frontend/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +2 -2
  22. qalita/_frontend/.next/server/app/_not-found.segments/_not-found.segment.rsc +3 -3
  23. qalita/_frontend/.next/server/app/_not-found.segments/_tree.segment.rsc +1 -1
  24. qalita/_frontend/.next/server/app/page/build-manifest.json +5 -5
  25. qalita/_frontend/.next/server/app/page_client-reference-manifest.js +1 -1
  26. qalita/_frontend/.next/server/app/sources/add/page/build-manifest.json +5 -5
  27. qalita/_frontend/.next/server/app/sources/add/page_client-reference-manifest.js +1 -1
  28. qalita/_frontend/.next/server/app/sources/add.html +1 -1
  29. qalita/_frontend/.next/server/app/sources/add.rsc +10 -10
  30. qalita/_frontend/.next/server/app/sources/add.segments/_full.segment.rsc +10 -10
  31. qalita/_frontend/.next/server/app/sources/add.segments/_head.segment.rsc +3 -3
  32. qalita/_frontend/.next/server/app/sources/add.segments/_index.segment.rsc +4 -4
  33. qalita/_frontend/.next/server/app/sources/add.segments/_tree.segment.rsc +1 -1
  34. qalita/_frontend/.next/server/app/sources/add.segments/sources/add/__PAGE__.segment.rsc +4 -4
  35. qalita/_frontend/.next/server/app/sources/add.segments/sources/add.segment.rsc +3 -3
  36. qalita/_frontend/.next/server/app/sources/add.segments/sources.segment.rsc +3 -3
  37. qalita/_frontend/.next/server/app/sources/edit/[id]/page/build-manifest.json +5 -5
  38. qalita/_frontend/.next/server/app/sources/edit/[id]/page_client-reference-manifest.js +1 -1
  39. qalita/_frontend/.next/server/app/sources/page/build-manifest.json +5 -5
  40. qalita/_frontend/.next/server/app/sources/page_client-reference-manifest.js +1 -1
  41. qalita/_frontend/.next/server/app/sources.html +1 -1
  42. qalita/_frontend/.next/server/app/sources.rsc +10 -10
  43. qalita/_frontend/.next/server/app/sources.segments/_full.segment.rsc +10 -10
  44. qalita/_frontend/.next/server/app/sources.segments/_head.segment.rsc +3 -3
  45. qalita/_frontend/.next/server/app/sources.segments/_index.segment.rsc +4 -4
  46. qalita/_frontend/.next/server/app/sources.segments/_tree.segment.rsc +1 -1
  47. qalita/_frontend/.next/server/app/sources.segments/sources/__PAGE__.segment.rsc +4 -4
  48. qalita/_frontend/.next/server/app/sources.segments/sources.segment.rsc +3 -3
  49. qalita/_frontend/.next/server/chunks/[root-of-the-server]__bf0c3d33._.js +3 -3
  50. qalita/_frontend/.next/server/chunks/[root-of-the-server]__f408c708._.js +2 -2
  51. qalita/_frontend/.next/server/chunks/ssr/_404f6e81._.js +2 -2
  52. qalita/_frontend/.next/server/chunks/ssr/_6a67f6f0._.js +2 -2
  53. qalita/_frontend/.next/server/chunks/ssr/node_modules_next_dist_4b9a0874._.js +1 -1
  54. qalita/_frontend/.next/server/middleware-build-manifest.js +5 -5
  55. qalita/_frontend/.next/server/pages/404.html +1 -1
  56. qalita/_frontend/.next/server/pages/500.html +2 -2
  57. qalita/_frontend/.next/server/server-reference-manifest.js +1 -1
  58. qalita/_frontend/.next/server/server-reference-manifest.json +1 -1
  59. qalita/_frontend/.next/static/chunks/0c7542414b6a6f86.js +2 -0
  60. qalita/_frontend/.next/static/chunks/{89ba62a8ba9b79ce.js → 12daa96885968840.js} +1 -1
  61. qalita/_frontend/.next/static/chunks/694836347d1e5ef3.js +1 -0
  62. qalita/_frontend/.next/static/chunks/7ea91ca84dc4b3a4.js +1 -0
  63. qalita/_frontend/.next/static/chunks/9e71bf77f23416e6.js +1 -0
  64. qalita/_frontend/.next/static/chunks/aa2a44cc19d89bdb.js +1 -0
  65. qalita/_frontend/.next/static/chunks/bb05964d928aa166.js +3 -0
  66. qalita/_frontend/.next/static/chunks/ecbb64dc112ad516.js +1 -0
  67. qalita/_frontend/.next/static/chunks/turbopack-9fc8bcb3a9806c66.js +4 -0
  68. qalita/_frontend/node_modules/@next/env/package.json +1 -1
  69. qalita/_frontend/node_modules/next/dist/build/index.js +10 -4
  70. qalita/_frontend/node_modules/next/dist/build/swc/index.js +1 -1
  71. qalita/_frontend/node_modules/next/dist/build/webpack-config.js +3 -3
  72. qalita/_frontend/node_modules/next/dist/client/components/segment-cache/lru.js +2 -0
  73. qalita/_frontend/node_modules/next/dist/compiled/next-server/app-page-turbo-experimental.runtime.prod.js +1 -1
  74. qalita/_frontend/node_modules/next/dist/compiled/next-server/app-page-turbo.runtime.prod.js +1 -1
  75. qalita/_frontend/node_modules/next/dist/server/config-shared.js +4 -0
  76. qalita/_frontend/node_modules/next/dist/server/dev/hot-reloader-turbopack.js +1 -1
  77. qalita/_frontend/node_modules/next/dist/server/dev/hot-reloader-webpack.js +1 -1
  78. qalita/_frontend/node_modules/next/dist/server/lib/app-info-log.js +1 -1
  79. qalita/_frontend/node_modules/next/dist/server/lib/start-server.js +1 -1
  80. qalita/_frontend/node_modules/next/dist/server/web/adapter.js +1 -1
  81. qalita/_frontend/node_modules/next/dist/shared/lib/errors/canary-only-config-error.js +1 -1
  82. qalita/_frontend/node_modules/next/dist/telemetry/anonymous-meta.js +1 -1
  83. qalita/_frontend/node_modules/next/dist/telemetry/events/version.js +2 -2
  84. qalita/_frontend/node_modules/next/package.json +15 -15
  85. qalita/_frontend/package.json +4 -4
  86. qalita/_frontend/server.js +1 -1
  87. qalita/commands/worker_grpc.py +110 -0
  88. qalita/grpc/client.py +42 -2
  89. qalita/grpc/protos/qalita.proto +26 -0
  90. qalita/grpc/protos/qalita_pb2.py +80 -76
  91. qalita/grpc/protos/qalita_pb2_grpc.py +1 -1
  92. qalita/internal/action_executor.py +896 -0
  93. qalita/internal/utils.py +1 -1
  94. {qalita-2.9.1.dist-info → qalita-2.9.2.dist-info}/METADATA +3 -3
  95. {qalita-2.9.1.dist-info → qalita-2.9.2.dist-info}/RECORD +101 -100
  96. qalita/_frontend/.next/static/chunks/0b082245f106d665.js +0 -1
  97. qalita/_frontend/.next/static/chunks/58689c96b0676c41.js +0 -1
  98. qalita/_frontend/.next/static/chunks/acc5da18ff20daa1.js +0 -3
  99. qalita/_frontend/.next/static/chunks/bdc8a8e7721f5675.js +0 -2
  100. qalita/_frontend/.next/static/chunks/e0df86cbf44bbf9f.js +0 -1
  101. qalita/_frontend/.next/static/chunks/e6ce59ba40b863f2.js +0 -1
  102. qalita/_frontend/.next/static/chunks/ec4b1f1e3cd3ae43.js +0 -1
  103. qalita/_frontend/.next/static/chunks/turbopack-d21156d03715fafa.js +0 -4
  104. /qalita/_frontend/.next/static/{M1H4Lcjc6A78n9p1qVA6d → SlJmHVnRND1B7HlzvPJuC}/_buildManifest.js +0 -0
  105. /qalita/_frontend/.next/static/{M1H4Lcjc6A78n9p1qVA6d → SlJmHVnRND1B7HlzvPJuC}/_clientMiddlewareManifest.json +0 -0
  106. /qalita/_frontend/.next/static/{M1H4Lcjc6A78n9p1qVA6d → SlJmHVnRND1B7HlzvPJuC}/_ssgManifest.js +0 -0
  107. {qalita-2.9.1.dist-info → qalita-2.9.2.dist-info}/WHEEL +0 -0
  108. {qalita-2.9.1.dist-info → qalita-2.9.2.dist-info}/entry_points.txt +0 -0
  109. {qalita-2.9.1.dist-info → qalita-2.9.2.dist-info}/licenses/LICENSE +0 -0
@@ -16,8 +16,8 @@
16
16
  "@tailwindcss/forms": "^0.5.10",
17
17
  "class-variance-authority": "^0.7.1",
18
18
  "clsx": "^2.1.1",
19
- "lucide-react": "^0.469.0",
20
- "next": "16.1.1",
19
+ "lucide-react": "^0.563.0",
20
+ "next": "16.1.4",
21
21
  "next-themes": "^0.4.6",
22
22
  "react": "^19.2.3",
23
23
  "react-dom": "^19.2.3",
@@ -28,8 +28,8 @@
28
28
  "tailwindcss-animate": "^1.0.7"
29
29
  },
30
30
  "devDependencies": {
31
- "@types/node": "^25.0.3",
32
- "@types/react": "^19.2.7",
31
+ "@types/node": "^25.0.10",
32
+ "@types/react": "^19.2.9",
33
33
  "@types/react-dom": "^19.2.3",
34
34
  "autoprefixer": "^10.4.23",
35
35
  "postcss": "^8.5.6",
@@ -9,7 +9,7 @@ const currentPort = parseInt(process.env.PORT, 10) || 3000
9
9
  const hostname = process.env.HOSTNAME || '0.0.0.0'
10
10
 
11
11
  let keepAliveTimeout = parseInt(process.env.KEEP_ALIVE_TIMEOUT, 10)
12
- const nextConfig = {"distDir":"./.next","cacheComponents":false,"htmlLimitedBots":"[\\w-]+-Google|Google-[\\w-]+|Chrome-Lighthouse|Slurp|DuckDuckBot|baiduspider|yandex|sogou|bitlybot|tumblr|vkShare|quora link preview|redditbot|ia_archiver|Bingbot|BingPreview|applebot|facebookexternalhit|facebookcatalog|Twitterbot|LinkedInBot|Slackbot|Discordbot|WhatsApp|SkypeUriPreview|Yeti|googleweblight","assetPrefix":"","output":"standalone","trailingSlash":false,"images":{"deviceSizes":[640,750,828,1080,1200,1920,2048,3840],"imageSizes":[32,48,64,96,128,256,384],"path":"/_next/image","loader":"default","loaderFile":"","domains":[],"disableStaticImages":false,"minimumCacheTTL":14400,"formats":["image/webp"],"maximumRedirects":3,"dangerouslyAllowLocalIP":false,"dangerouslyAllowSVG":false,"contentSecurityPolicy":"script-src 'none'; frame-src 'none'; sandbox;","contentDispositionType":"attachment","localPatterns":[{"pathname":"**","search":""}],"remotePatterns":[],"qualities":[75],"unoptimized":false},"reactMaxHeadersLength":6000,"cacheLife":{"default":{"stale":300,"revalidate":900,"expire":4294967294},"seconds":{"stale":30,"revalidate":1,"expire":60},"minutes":{"stale":300,"revalidate":60,"expire":3600},"hours":{"stale":300,"revalidate":3600,"expire":86400},"days":{"stale":300,"revalidate":86400,"expire":604800},"weeks":{"stale":300,"revalidate":604800,"expire":2592000},"max":{"stale":300,"revalidate":2592000,"expire":31536000}},"basePath":"","expireTime":31536000,"generateEtags":true,"poweredByHeader":true,"cacheHandlers":{},"cacheMaxMemorySize":52428800,"compress":true,"i18n":null,"httpAgentOptions":{"keepAlive":true},"pageExtensions":["tsx","ts","jsx","js"],"useFileSystemPublicRoutes":true,"experimental":{"ppr":false,"staleTimes":{"dynamic":0,"static":300},"dynamicOnHover":false,"inlineCss":false,"authInterrupts":false,"fetchCacheKeyPrefix":"","isrFlushToDisk":true,"optimizeCss":false,"nextScriptWorkers":false,"disableOptimizedLoading":false,"largePageDataBytes":128000,"serverComponentsHmrCache":true,"caseSensitiveRoutes":false,"validateRSCRequestHeaders":false,"useSkewCookie":false,"preloadEntriesOnStart":true,"hideLogsAfterAbort":false,"removeUncaughtErrorAndRejectionListeners":false,"imgOptConcurrency":null,"imgOptMaxInputPixels":268402689,"imgOptSequentialRead":null,"imgOptSkipMetadata":null,"imgOptTimeoutInSeconds":7,"proxyClientMaxBodySize":10485760,"trustHostHeader":false,"isExperimentalCompile":false}}
12
+ const nextConfig = {"env":{},"webpack":null,"typescript":{"ignoreBuildErrors":false},"typedRoutes":false,"distDir":"./.next","cleanDistDir":true,"assetPrefix":"","cacheMaxMemorySize":52428800,"configOrigin":"next.config.js","useFileSystemPublicRoutes":true,"generateEtags":true,"pageExtensions":["tsx","ts","jsx","js"],"poweredByHeader":true,"compress":true,"images":{"deviceSizes":[640,750,828,1080,1200,1920,2048,3840],"imageSizes":[32,48,64,96,128,256,384],"path":"/_next/image","loader":"default","loaderFile":"","domains":[],"disableStaticImages":false,"minimumCacheTTL":14400,"formats":["image/webp"],"maximumRedirects":3,"dangerouslyAllowLocalIP":false,"dangerouslyAllowSVG":false,"contentSecurityPolicy":"script-src 'none'; frame-src 'none'; sandbox;","contentDispositionType":"attachment","localPatterns":[{"pathname":"**","search":""}],"remotePatterns":[],"qualities":[75],"unoptimized":false},"devIndicators":{"position":"bottom-left"},"onDemandEntries":{"maxInactiveAge":60000,"pagesBufferLength":5},"basePath":"","sassOptions":{},"trailingSlash":false,"i18n":null,"productionBrowserSourceMaps":false,"excludeDefaultMomentLocales":true,"reactProductionProfiling":false,"reactStrictMode":true,"reactMaxHeadersLength":6000,"httpAgentOptions":{"keepAlive":true},"logging":{},"compiler":{},"expireTime":31536000,"staticPageGenerationTimeout":60,"output":"standalone","modularizeImports":{"@mui/icons-material":{"transform":"@mui/icons-material/{{member}}"},"lodash":{"transform":"lodash/{{member}}"}},"outputFileTracingRoot":"/home/runner/work/qalita-cli/qalita-cli/frontend","cacheComponents":false,"cacheLife":{"default":{"stale":300,"revalidate":900,"expire":4294967294},"seconds":{"stale":30,"revalidate":1,"expire":60},"minutes":{"stale":300,"revalidate":60,"expire":3600},"hours":{"stale":300,"revalidate":3600,"expire":86400},"days":{"stale":300,"revalidate":86400,"expire":604800},"weeks":{"stale":300,"revalidate":604800,"expire":2592000},"max":{"stale":300,"revalidate":2592000,"expire":31536000}},"cacheHandlers":{},"experimental":{"useSkewCookie":false,"cssChunking":true,"multiZoneDraftMode":false,"appNavFailHandling":false,"prerenderEarlyExit":true,"serverMinification":true,"linkNoTouchStart":false,"caseSensitiveRoutes":false,"dynamicOnHover":false,"preloadEntriesOnStart":true,"clientRouterFilter":true,"clientRouterFilterRedirects":false,"fetchCacheKeyPrefix":"","proxyPrefetch":"flexible","optimisticClientCache":true,"manualClientBasePath":false,"cpus":1,"memoryBasedWorkersCount":false,"imgOptConcurrency":null,"imgOptTimeoutInSeconds":7,"imgOptMaxInputPixels":268402689,"imgOptSequentialRead":null,"imgOptSkipMetadata":null,"isrFlushToDisk":true,"workerThreads":false,"optimizeCss":false,"nextScriptWorkers":false,"scrollRestoration":false,"externalDir":false,"disableOptimizedLoading":false,"gzipSize":true,"craCompat":false,"esmExternals":true,"fullySpecified":false,"swcTraceProfiling":false,"forceSwcTransforms":false,"largePageDataBytes":128000,"typedEnv":false,"parallelServerCompiles":false,"parallelServerBuildTraces":false,"ppr":false,"authInterrupts":false,"webpackMemoryOptimizations":false,"optimizeServerReact":true,"viewTransition":false,"removeUncaughtErrorAndRejectionListeners":false,"validateRSCRequestHeaders":false,"staleTimes":{"dynamic":0,"static":300},"reactDebugChannel":false,"serverComponentsHmrCache":true,"staticGenerationMaxConcurrency":8,"staticGenerationMinPagesPerWorker":25,"transitionIndicator":false,"inlineCss":false,"useCache":false,"globalNotFound":false,"browserDebugInfoInTerminal":false,"lockDistDir":true,"isolatedDevBuild":true,"proxyClientMaxBodySize":10485760,"hideLogsAfterAbort":false,"mcpServer":true,"turbopackFileSystemCacheForDev":true,"turbopackFileSystemCacheForBuild":false,"turbopackInferModuleSideEffects":false,"optimizePackageImports":["lucide-react","date-fns","lodash-es","ramda","antd","react-bootstrap","ahooks","@ant-design/icons","@headlessui/react","@headlessui-float/react","@heroicons/react/20/solid","@heroicons/react/24/solid","@heroicons/react/24/outline","@visx/visx","@tremor/react","rxjs","@mui/material","@mui/icons-material","recharts","react-use","effect","@effect/schema","@effect/platform","@effect/platform-node","@effect/platform-browser","@effect/platform-bun","@effect/sql","@effect/sql-mssql","@effect/sql-mysql2","@effect/sql-pg","@effect/sql-sqlite-node","@effect/sql-sqlite-bun","@effect/sql-sqlite-wasm","@effect/sql-sqlite-react-native","@effect/rpc","@effect/rpc-http","@effect/typeclass","@effect/experimental","@effect/opentelemetry","@material-ui/core","@material-ui/icons","@tabler/icons-react","mui-core","react-icons/ai","react-icons/bi","react-icons/bs","react-icons/cg","react-icons/ci","react-icons/di","react-icons/fa","react-icons/fa6","react-icons/fc","react-icons/fi","react-icons/gi","react-icons/go","react-icons/gr","react-icons/hi","react-icons/hi2","react-icons/im","react-icons/io","react-icons/io5","react-icons/lia","react-icons/lib","react-icons/lu","react-icons/md","react-icons/pi","react-icons/ri","react-icons/rx","react-icons/si","react-icons/sl","react-icons/tb","react-icons/tfi","react-icons/ti","react-icons/vsc","react-icons/wi"],"trustHostHeader":false,"isExperimentalCompile":false},"htmlLimitedBots":"[\\w-]+-Google|Google-[\\w-]+|Chrome-Lighthouse|Slurp|DuckDuckBot|baiduspider|yandex|sogou|bitlybot|tumblr|vkShare|quora link preview|redditbot|ia_archiver|Bingbot|BingPreview|applebot|facebookexternalhit|facebookcatalog|Twitterbot|LinkedInBot|Slackbot|Discordbot|WhatsApp|SkypeUriPreview|Yeti|googleweblight","bundlePagesRouterDependencies":false,"configFileName":"next.config.js","turbopack":{"root":"/home/runner/work/qalita-cli/qalita-cli/frontend"},"distDirRoot":".next"}
13
13
 
14
14
  process.env.__NEXT_PRIVATE_STANDALONE_CONFIG = JSON.stringify(nextConfig)
15
15
 
@@ -21,6 +21,7 @@ import croniter
21
21
  from qalita.internal.utils import logger, get_version, validate_token
22
22
  from qalita.internal.request import send_request
23
23
  from qalita.internal.data_preview import preview_source, DataPreviewResult
24
+ from qalita.internal.action_executor import get_action_executor, ActionResult
24
25
  from qalita.grpc import GrpcClient
25
26
  from qalita.grpc.protos import qalita_pb2
26
27
  from qalita.commands.pack import run_pack
@@ -194,6 +195,7 @@ class GrpcWorkerRunner:
194
195
  self.grpc_client.on_routine_received(self._handle_routine_trigger)
195
196
  self.grpc_client.on_data_preview_request(self._handle_data_preview_request)
196
197
  self.grpc_client.on_add_source_request(self._handle_add_source_request)
198
+ self.grpc_client.on_agent_action_request(self._handle_agent_action_request)
197
199
  self.grpc_client.on_disconnect(self._handle_disconnect)
198
200
 
199
201
  try:
@@ -620,6 +622,114 @@ class GrpcWorkerRunner:
620
622
  connectivity_verified=False,
621
623
  )
622
624
 
625
+ async def _handle_agent_action_request(self, request: qalita_pb2.AgentActionRequest) -> None:
626
+ """
627
+ Handle an agent action request from the platform.
628
+
629
+ This is called when the Studio LLM agent requests to execute an action
630
+ on a data source (e.g., SQL query, read data, describe schema).
631
+ The worker:
632
+ 1. Finds the source configuration locally
633
+ 2. Executes the action using the ActionExecutor
634
+ 3. Sends back an AgentActionResponse via gRPC stream
635
+ """
636
+ request_id = request.request_id
637
+ action_type = request.action_type
638
+ source_id = request.source_id
639
+ params_json = request.parameters_json
640
+ timeout = request.timeout_seconds if request.HasField('timeout_seconds') else None
641
+
642
+ logger.info(f"Processing agent action request {request_id}: {action_type} on source {source_id}")
643
+
644
+ try:
645
+ # Parse parameters
646
+ params = json.loads(params_json) if params_json else {}
647
+
648
+ # Find the source in local configuration
649
+ source_conf = self.config.load_source_config(verbose=False)
650
+ matching_sources = [
651
+ s for s in source_conf.get("sources", [])
652
+ if str(s.get("id")) == str(source_id)
653
+ ]
654
+
655
+ if not matching_sources:
656
+ logger.warning(f"Source {source_id} not found in local config")
657
+ await self.grpc_client.send_agent_action_response(
658
+ request_id=request_id,
659
+ ok=False,
660
+ action_type=action_type,
661
+ error=f"Source {source_id} not found in local configuration",
662
+ )
663
+ return
664
+
665
+ source_config = matching_sources[0]
666
+ logger.info(f"Found source config for {source_id}: type={source_config.get('type')}")
667
+
668
+ # Execute the action
669
+ executor = get_action_executor()
670
+ result: ActionResult = executor.execute(
671
+ action_type=action_type,
672
+ source_config=source_config,
673
+ params=params,
674
+ timeout_seconds=timeout,
675
+ )
676
+
677
+ # Convert DataPreviewResult to protobuf if present
678
+ data_proto = None
679
+ if result.data:
680
+ data_proto = qalita_pb2.DataPreviewResponse(
681
+ request_id=request_id,
682
+ ok=result.data.ok,
683
+ data_type=result.data.data_type,
684
+ )
685
+ if result.data.error:
686
+ data_proto.error = result.data.error
687
+ if result.data.headers:
688
+ data_proto.headers.extend(result.data.headers)
689
+ if result.data.rows:
690
+ for row in result.data.rows:
691
+ data_row = qalita_pb2.DataRow(values=row)
692
+ data_proto.rows.append(data_row)
693
+ if result.data.total_rows is not None:
694
+ data_proto.total_rows = result.data.total_rows
695
+ if result.data.content:
696
+ data_proto.content = result.data.content
697
+
698
+ # Send the response
699
+ await self.grpc_client.send_agent_action_response(
700
+ request_id=request_id,
701
+ ok=result.ok,
702
+ action_type=result.action_type,
703
+ error=result.error,
704
+ result_json=result.result_json,
705
+ data=data_proto,
706
+ execution_time_ms=result.execution_time_ms,
707
+ )
708
+
709
+ if result.ok:
710
+ logger.success(f"Agent action '{action_type}' completed for source {source_id} in {result.execution_time_ms}ms")
711
+ else:
712
+ logger.warning(f"Agent action '{action_type}' failed for source {source_id}: {result.error}")
713
+
714
+ except json.JSONDecodeError as e:
715
+ error_msg = f"Invalid parameters JSON: {str(e)}"
716
+ logger.error(f"Error handling agent action request {request_id}: {error_msg}")
717
+ await self.grpc_client.send_agent_action_response(
718
+ request_id=request_id,
719
+ ok=False,
720
+ action_type=action_type,
721
+ error=error_msg,
722
+ )
723
+ except Exception as e:
724
+ error_msg = f"Internal error: {str(e)}"
725
+ logger.error(f"Error handling agent action request {request_id}: {error_msg}")
726
+ await self.grpc_client.send_agent_action_response(
727
+ request_id=request_id,
728
+ ok=False,
729
+ action_type=action_type,
730
+ error=error_msg,
731
+ )
732
+
623
733
  async def _execute_job(
624
734
  self,
625
735
  job_id: int,
qalita/grpc/client.py CHANGED
@@ -77,6 +77,7 @@ class GrpcClient:
77
77
  self._on_routine_received: Optional[Callable] = None
78
78
  self._on_data_preview_request: Optional[Callable] = None
79
79
  self._on_add_source_request: Optional[Callable] = None
80
+ self._on_agent_action_request: Optional[Callable] = None
80
81
  self._on_disconnect: Optional[Callable] = None
81
82
 
82
83
  def _parse_grpc_target(self, url: str) -> str:
@@ -105,8 +106,8 @@ class GrpcClient:
105
106
  self._use_secure_channel = False
106
107
  return f"{host}:50051"
107
108
 
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)
109
+ # For production URLs (e.g., https://api.app.platform.qalita.io)
110
+ # Convert to gRPC endpoint (e.g., grpc.app.platform.qalita.io:443)
110
111
  self._use_secure_channel = True
111
112
 
112
113
  # Replace 'api.' prefix with 'grpc.' if present
@@ -470,6 +471,10 @@ class GrpcClient:
470
471
  """Set callback for when an add source request is received via stream."""
471
472
  self._on_add_source_request = callback
472
473
 
474
+ def on_agent_action_request(self, callback: Callable[[qalita_pb2.AgentActionRequest], Any]) -> None:
475
+ """Set callback for when an agent action request is received via stream."""
476
+ self._on_agent_action_request = callback
477
+
473
478
  def on_disconnect(self, callback: Callable[[], Any]) -> None:
474
479
  """Set callback for when connection is lost."""
475
480
  self._on_disconnect = callback
@@ -609,6 +614,35 @@ class GrpcClient:
609
614
  msg = qalita_pb2.WorkerMessage(add_source_response=response)
610
615
  await self._outgoing_queue.put(msg)
611
616
 
617
+ async def send_agent_action_response(
618
+ self,
619
+ request_id: str,
620
+ ok: bool,
621
+ action_type: str,
622
+ error: Optional[str] = None,
623
+ result_json: Optional[str] = None,
624
+ data: Optional[qalita_pb2.DataPreviewResponse] = None,
625
+ execution_time_ms: Optional[int] = None,
626
+ ) -> None:
627
+ """Send an agent action response through the stream."""
628
+ response = qalita_pb2.AgentActionResponse(
629
+ request_id=request_id,
630
+ ok=ok,
631
+ action_type=action_type,
632
+ )
633
+
634
+ if error:
635
+ response.error = error
636
+ if result_json:
637
+ response.result_json = result_json
638
+ if data:
639
+ response.data.CopyFrom(data)
640
+ if execution_time_ms is not None:
641
+ response.execution_time_ms = execution_time_ms
642
+
643
+ msg = qalita_pb2.WorkerMessage(agent_action_response=response)
644
+ await self._outgoing_queue.put(msg)
645
+
612
646
  async def _outgoing_messages(self) -> AsyncIterator[qalita_pb2.WorkerMessage]:
613
647
  """Generator for outgoing stream messages."""
614
648
  logger.info("Outgoing messages generator started")
@@ -695,6 +729,12 @@ class GrpcClient:
695
729
  if self._on_add_source_request:
696
730
  await self._on_add_source_request(request)
697
731
 
732
+ elif msg.HasField('agent_action_request'):
733
+ request = msg.agent_action_request
734
+ logger.info(f"Received agent action request: {request.request_id} type={request.action_type}")
735
+ if self._on_agent_action_request:
736
+ await self._on_agent_action_request(request)
737
+
698
738
  elif msg.HasField('ack'):
699
739
  logger.debug(f"Received ack: {msg.ack.message_type}")
700
740
 
@@ -49,6 +49,7 @@ message WorkerMessage {
49
49
  JobLogLine log_line = 4;
50
50
  DataPreviewResponse data_preview_response = 5;
51
51
  AddSourceResponse add_source_response = 6;
52
+ AgentActionResponse agent_action_response = 7;
52
53
  }
53
54
  }
54
55
 
@@ -69,6 +70,7 @@ message ServerMessage {
69
70
  ServerError error = 4;
70
71
  DataPreviewRequest data_preview_request = 5;
71
72
  AddSourceRequest add_source_request = 6;
73
+ AgentActionRequest agent_action_request = 7;
72
74
  }
73
75
  }
74
76
 
@@ -389,3 +391,27 @@ message AddSourceResponse {
389
391
  optional int32 source_id = 4; // ID assigned by worker in local config
390
392
  bool connectivity_verified = 5; // Whether connection to source was verified
391
393
  }
394
+
395
+ // =============================================================================
396
+ // Agent Actions (Studio LLM -> Worker)
397
+ // =============================================================================
398
+
399
+ // Request from LLM agent to execute an action on a data source
400
+ message AgentActionRequest {
401
+ string request_id = 1; // Unique ID to correlate request/response
402
+ string action_type = 2; // query, read_data, filter, aggregate, describe, sample
403
+ int32 source_id = 3; // Source to operate on
404
+ string parameters_json = 4; // Action parameters as JSON
405
+ optional int32 timeout_seconds = 5; // Optional timeout for the action
406
+ }
407
+
408
+ // Response from worker after executing an agent action
409
+ message AgentActionResponse {
410
+ string request_id = 1; // Correlates with request
411
+ bool ok = 2; // Whether operation succeeded
412
+ string action_type = 3; // Echo back the action type
413
+ optional string error = 4; // Error message if ok=false
414
+ optional string result_json = 5; // Structured result as JSON (for metadata, stats)
415
+ optional DataPreviewResponse data = 6; // Tabular data result if applicable
416
+ optional int64 execution_time_ms = 7; // How long the action took
417
+ }
@@ -26,7 +26,7 @@ from google.protobuf import timestamp_pb2 as google_dot_protobuf_dot_timestamp__
26
26
  from google.protobuf import empty_pb2 as google_dot_protobuf_dot_empty__pb2
27
27
 
28
28
 
29
- DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x0cqalita.proto\x12\rqalita.worker\x1a\x1fgoogle/protobuf/timestamp.proto\x1a\x1bgoogle/protobuf/empty.proto\"\xf1\x02\n\rWorkerMessage\x12.\n\nkeep_alive\x18\x01 \x01(\x0b\x32\x18.qalita.worker.KeepAliveH\x00\x12\x34\n\njob_status\x18\x02 \x01(\x0b\x32\x1e.qalita.worker.JobStatusUpdateH\x00\x12:\n\rworker_status\x18\x03 \x01(\x0b\x32!.qalita.worker.WorkerStatusUpdateH\x00\x12-\n\x08log_line\x18\x04 \x01(\x0b\x32\x19.qalita.worker.JobLogLineH\x00\x12\x43\n\x15\x64\x61ta_preview_response\x18\x05 \x01(\x0b\x32\".qalita.worker.DataPreviewResponseH\x00\x12?\n\x13\x61\x64\x64_source_response\x18\x06 \x01(\x0b\x32 .qalita.worker.AddSourceResponseH\x00\x42\t\n\x07payload\"h\n\nJobLogLine\x12\x0e\n\x06job_id\x18\x01 \x01(\x05\x12\x0c\n\x04line\x18\x02 \x01(\t\x12\r\n\x05level\x18\x03 \x01(\t\x12-\n\ttimestamp\x18\x04 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\"\xe8\x02\n\rServerMessage\x12\x36\n\x0ejob_assignment\x18\x01 \x01(\x0b\x32\x1c.qalita.worker.JobAssignmentH\x00\x12<\n\x11routine_triggered\x18\x02 \x01(\x0b\x32\x1f.qalita.worker.RoutineTriggeredH\x00\x12\'\n\x03\x61\x63k\x18\x03 \x01(\x0b\x32\x18.qalita.worker.ServerAckH\x00\x12+\n\x05\x65rror\x18\x04 \x01(\x0b\x32\x1a.qalita.worker.ServerErrorH\x00\x12\x41\n\x14\x64\x61ta_preview_request\x18\x05 \x01(\x0b\x32!.qalita.worker.DataPreviewRequestH\x00\x12=\n\x12\x61\x64\x64_source_request\x18\x06 \x01(\x0b\x32\x1f.qalita.worker.AddSourceRequestH\x00\x42\t\n\x07payload\"M\n\tKeepAlive\x12\x11\n\tworker_id\x18\x01 \x01(\x05\x12-\n\ttimestamp\x18\x02 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\"\x85\x02\n\x0fJobStatusUpdate\x12\x0e\n\x06job_id\x18\x01 \x01(\x05\x12\x0e\n\x06status\x18\x02 \x01(\t\x12\x1a\n\rerror_message\x18\x03 \x01(\tH\x00\x88\x01\x01\x12\x33\n\nstart_date\x18\x04 \x01(\x0b\x32\x1a.google.protobuf.TimestampH\x01\x88\x01\x01\x12\x31\n\x08\x65nd_date\x18\x05 \x01(\x0b\x32\x1a.google.protobuf.TimestampH\x02\x88\x01\x01\x12\x14\n\x07logs_id\x18\x06 \x01(\x05H\x03\x88\x01\x01\x42\x10\n\x0e_error_messageB\r\n\x0b_start_dateB\x0b\n\t_end_dateB\n\n\x08_logs_id\"7\n\x12WorkerStatusUpdate\x12\x11\n\tworker_id\x18\x01 \x01(\x05\x12\x0e\n\x06status\x18\x02 \x01(\t\"0\n\rJobAssignment\x12\x1f\n\x03job\x18\x01 \x01(\x0b\x32\x12.qalita.worker.Job\";\n\x10RoutineTriggered\x12\'\n\x07routine\x18\x01 \x01(\x0b\x32\x16.qalita.worker.Routine\"T\n\tServerAck\x12\x14\n\x0cmessage_type\x18\x01 \x01(\t\x12\x0f\n\x07success\x18\x02 \x01(\x08\x12\x14\n\x07message\x18\x03 \x01(\tH\x00\x88\x01\x01\x42\n\n\x08_message\",\n\x0bServerError\x12\x0c\n\x04\x63ode\x18\x01 \x01(\t\x12\x0f\n\x07message\x18\x02 \x01(\t\"\x1c\n\x0b\x41uthRequest\x12\r\n\x05token\x18\x01 \x01(\t\"f\n\x0c\x41uthResponse\x12\x15\n\rauthenticated\x18\x01 \x01(\x08\x12!\n\x04user\x18\x02 \x01(\x0b\x32\x13.qalita.worker.User\x12\x12\n\x05\x65rror\x18\x03 \x01(\tH\x00\x88\x01\x01\x42\x08\n\x06_error\"R\n\x04User\x12\n\n\x02id\x18\x01 \x01(\x05\x12\r\n\x05\x65mail\x18\x02 \x01(\t\x12\x0c\n\x04name\x18\x03 \x01(\t\x12\x12\n\npartner_id\x18\x04 \x01(\x05\x12\r\n\x05roles\x18\x05 \x03(\t\"V\n\x15RegisterWorkerRequest\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x0c\n\x04mode\x18\x02 \x01(\t\x12\x0e\n\x06status\x18\x03 \x01(\t\x12\x11\n\tis_active\x18\x04 \x01(\x08\"%\n\x10GetWorkerRequest\x12\x11\n\tworker_id\x18\x01 \x01(\x05\"\xd5\x01\n\x06Worker\x12\n\n\x02id\x18\x01 \x01(\x05\x12\x0c\n\x04name\x18\x02 \x01(\t\x12\x0c\n\x04mode\x18\x03 \x01(\t\x12\x0e\n\x06status\x18\x04 \x01(\t\x12\x11\n\tis_active\x18\x05 \x01(\x08\x12.\n\ncreated_at\x18\x06 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12.\n\nupdated_at\x18\x07 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12 \n\x04jobs\x18\x08 \x03(\x0b\x32\x12.qalita.worker.Job\"!\n\x0eGetPackRequest\x12\x0f\n\x07pack_id\x18\x01 \x01(\x05\"\x85\x01\n\x04Pack\x12\n\n\x02id\x18\x01 \x01(\x05\x12\x0c\n\x04name\x18\x02 \x01(\t\x12\x13\n\x0b\x64\x65scription\x18\x03 \x01(\t\x12\x0c\n\x04type\x18\x04 \x01(\t\x12\x12\n\nvisibility\x18\x05 \x01(\t\x12,\n\x08versions\x18\x06 \x03(\x0b\x32\x1a.qalita.worker.PackVersion\"?\n\x0bPackVersion\x12\n\n\x02id\x18\x01 \x01(\x05\x12\x12\n\nsem_ver_id\x18\x02 \x01(\t\x12\x10\n\x08\x61sset_id\x18\x03 \x01(\x05\"%\n\x10GetSourceRequest\x12\x11\n\tsource_id\x18\x01 \x01(\x05\"\x9c\x01\n\x06Source\x12\n\n\x02id\x18\x01 \x01(\x05\x12\x0c\n\x04name\x18\x02 \x01(\t\x12\x13\n\x0b\x64\x65scription\x18\x03 \x01(\t\x12\x0c\n\x04type\x18\x04 \x01(\t\x12\x12\n\nvisibility\x18\x05 \x01(\t\x12\x11\n\tsensitive\x18\x06 \x01(\x08\x12.\n\x08versions\x18\x07 \x03(\x0b\x32\x1c.qalita.worker.SourceVersion\"/\n\rSourceVersion\x12\n\n\x02id\x18\x01 \x01(\x05\x12\x12\n\nsem_ver_id\x18\x02 \x01(\t\"&\n\x12GetAssetUrlRequest\x12\x10\n\x08\x61sset_id\x18\x01 \x01(\x05\"R\n\x08\x41ssetUrl\x12\n\n\x02id\x18\x01 \x01(\x05\x12\x0b\n\x03url\x18\x02 \x01(\t\x12\x0e\n\x06\x62ucket\x18\x03 \x01(\t\x12\x0c\n\x04name\x18\x04 \x01(\t\x12\x0f\n\x07version\x18\x05 \x01(\t\"1\n\x08Registry\x12\n\n\x02id\x18\x01 \x01(\x05\x12\x0c\n\x04name\x18\x02 \x01(\t\x12\x0b\n\x03url\x18\x03 \x01(\t\"A\n\x12RegistriesResponse\x12+\n\nregistries\x18\x01 \x03(\x0b\x32\x17.qalita.worker.Registry\"\x96\x03\n\x10\x43reateJobRequest\x12\x11\n\tsource_id\x18\x01 \x01(\x05\x12\x1e\n\x11source_version_id\x18\x02 \x01(\x05H\x00\x88\x01\x01\x12\x16\n\ttarget_id\x18\x03 \x01(\x05H\x01\x88\x01\x01\x12\x1e\n\x11target_version_id\x18\x04 \x01(\x05H\x02\x88\x01\x01\x12\x0f\n\x07pack_id\x18\x05 \x01(\x05\x12\x1c\n\x0fpack_version_id\x18\x06 \x01(\x05H\x03\x88\x01\x01\x12\x17\n\nroutine_id\x18\x07 \x01(\x05H\x04\x88\x01\x01\x12!\n\x14pack_config_override\x18\x08 \x01(\tH\x05\x88\x01\x01\x12\x11\n\x04type\x18\t \x01(\tH\x06\x88\x01\x01\x12\x11\n\x04name\x18\n \x01(\tH\x07\x88\x01\x01\x42\x14\n\x12_source_version_idB\x0c\n\n_target_idB\x14\n\x12_target_version_idB\x12\n\x10_pack_version_idB\r\n\x0b_routine_idB\x17\n\x15_pack_config_overrideB\x07\n\x05_typeB\x07\n\x05_name\"\xa8\x02\n\x10UpdateJobRequest\x12\x0e\n\x06job_id\x18\x01 \x01(\x05\x12\x15\n\x08\x61gent_id\x18\x02 \x01(\x05H\x00\x88\x01\x01\x12\x13\n\x06status\x18\x03 \x01(\tH\x01\x88\x01\x01\x12\x11\n\x04name\x18\x04 \x01(\tH\x02\x88\x01\x01\x12\x33\n\nstart_date\x18\x05 \x01(\x0b\x32\x1a.google.protobuf.TimestampH\x03\x88\x01\x01\x12\x31\n\x08\x65nd_date\x18\x06 \x01(\x0b\x32\x1a.google.protobuf.TimestampH\x04\x88\x01\x01\x12\x14\n\x07logs_id\x18\x07 \x01(\x05H\x05\x88\x01\x01\x42\x0b\n\t_agent_idB\t\n\x07_statusB\x07\n\x05_nameB\r\n\x0b_start_dateB\x0b\n\t_end_dateB\n\n\x08_logs_id\"4\n\x0f\x43laimJobRequest\x12\x0e\n\x06job_id\x18\x01 \x01(\x05\x12\x11\n\tworker_id\x18\x02 \x01(\x05\"\xd6\x07\n\x03Job\x12\n\n\x02id\x18\x01 \x01(\x05\x12\x0c\n\x04name\x18\x02 \x01(\t\x12\x0e\n\x06status\x18\x03 \x01(\t\x12\x11\n\tsource_id\x18\x04 \x01(\x05\x12\x1e\n\x11source_version_id\x18\x05 \x01(\x05H\x00\x88\x01\x01\x12\x16\n\ttarget_id\x18\x06 \x01(\x05H\x01\x88\x01\x01\x12\x1e\n\x11target_version_id\x18\x07 \x01(\x05H\x02\x88\x01\x01\x12\x0f\n\x07pack_id\x18\x08 \x01(\x05\x12\x1c\n\x0fpack_version_id\x18\t \x01(\x05H\x03\x88\x01\x01\x12\x15\n\x08\x61gent_id\x18\n \x01(\x05H\x04\x88\x01\x01\x12\x17\n\nroutine_id\x18\x0b \x01(\x05H\x05\x88\x01\x01\x12!\n\x14pack_config_override\x18\x0c \x01(\tH\x06\x88\x01\x01\x12\x33\n\nstart_date\x18\r \x01(\x0b\x32\x1a.google.protobuf.TimestampH\x07\x88\x01\x01\x12\x31\n\x08\x65nd_date\x18\x0e \x01(\x0b\x32\x1a.google.protobuf.TimestampH\x08\x88\x01\x01\x12.\n\ncreated_at\x18\x0f \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12*\n\x06source\x18\x10 \x01(\x0b\x32\x15.qalita.worker.SourceH\t\x88\x01\x01\x12*\n\x06target\x18\x11 \x01(\x0b\x32\x15.qalita.worker.SourceH\n\x88\x01\x01\x12&\n\x04pack\x18\x12 \x01(\x0b\x32\x13.qalita.worker.PackH\x0b\x88\x01\x01\x12\x39\n\x0esource_version\x18\x13 \x01(\x0b\x32\x1c.qalita.worker.SourceVersionH\x0c\x88\x01\x01\x12\x39\n\x0etarget_version\x18\x14 \x01(\x0b\x32\x1c.qalita.worker.SourceVersionH\r\x88\x01\x01\x12\x35\n\x0cpack_version\x18\x15 \x01(\x0b\x32\x1a.qalita.worker.PackVersionH\x0e\x88\x01\x01\x42\x14\n\x12_source_version_idB\x0c\n\n_target_idB\x14\n\x12_target_version_idB\x12\n\x10_pack_version_idB\x0b\n\t_agent_idB\r\n\x0b_routine_idB\x17\n\x15_pack_config_overrideB\r\n\x0b_start_dateB\x0b\n\t_end_dateB\t\n\x07_sourceB\t\n\x07_targetB\x07\n\x05_packB\x11\n\x0f_source_versionB\x11\n\x0f_target_versionB\x0f\n\r_pack_version\"\x8c\x04\n\x07Routine\x12\n\n\x02id\x18\x01 \x01(\x05\x12\x0c\n\x04name\x18\x02 \x01(\t\x12\x0e\n\x06status\x18\x03 \x01(\t\x12\x10\n\x08schedule\x18\x04 \x01(\t\x12\x0e\n\x06\x63onfig\x18\x05 \x01(\t\x12.\n\nstart_date\x18\x06 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\x11\n\tsource_id\x18\x07 \x01(\x05\x12\x1e\n\x11source_version_id\x18\x08 \x01(\x05H\x00\x88\x01\x01\x12\x16\n\ttarget_id\x18\t \x01(\x05H\x01\x88\x01\x01\x12\x1e\n\x11target_version_id\x18\n \x01(\x05H\x02\x88\x01\x01\x12\x0f\n\x07pack_id\x18\x0b \x01(\x05\x12\x1c\n\x0fpack_version_id\x18\x0c \x01(\x05H\x03\x88\x01\x01\x12*\n\x06source\x18\r \x01(\x0b\x32\x15.qalita.worker.SourceH\x04\x88\x01\x01\x12*\n\x06target\x18\x0e \x01(\x0b\x32\x15.qalita.worker.SourceH\x05\x88\x01\x01\x12&\n\x04pack\x18\x0f \x01(\x0b\x32\x13.qalita.worker.PackH\x06\x88\x01\x01\x42\x14\n\x12_source_version_idB\x0c\n\n_target_idB\x14\n\x12_target_version_idB\x12\n\x10_pack_version_idB\t\n\x07_sourceB\t\n\x07_targetB\x07\n\x05_pack\"<\n\x10RoutinesResponse\x12(\n\x08routines\x18\x01 \x03(\x0b\x32\x16.qalita.worker.Routine\"\xad\x01\n\x12\x44\x61taPreviewRequest\x12\x12\n\nrequest_id\x18\x01 \x01(\t\x12\x11\n\tsource_id\x18\x02 \x01(\x05\x12\x1e\n\x11source_version_id\x18\x03 \x01(\x05H\x00\x88\x01\x01\x12\x12\n\x05limit\x18\x04 \x01(\x05H\x01\x88\x01\x01\x12\x12\n\x05query\x18\x05 \x01(\tH\x02\x88\x01\x01\x42\x14\n\x12_source_version_idB\x08\n\x06_limitB\x08\n\x06_query\"\xbb\x02\n\x13\x44\x61taPreviewResponse\x12\x12\n\nrequest_id\x18\x01 \x01(\t\x12\n\n\x02ok\x18\x02 \x01(\x08\x12\x11\n\tdata_type\x18\x03 \x01(\t\x12\x12\n\x05\x65rror\x18\x04 \x01(\tH\x00\x88\x01\x01\x12\x0f\n\x07headers\x18\x05 \x03(\t\x12$\n\x04rows\x18\x06 \x03(\x0b\x32\x16.qalita.worker.DataRow\x12\x17\n\ntotal_rows\x18\x07 \x01(\x03H\x01\x88\x01\x01\x12\x14\n\x07\x63ontent\x18\x08 \x01(\tH\x02\x88\x01\x01\x12\x1a\n\rbinary_base64\x18\t \x01(\tH\x03\x88\x01\x01\x12\x16\n\tmime_type\x18\n \x01(\tH\x04\x88\x01\x01\x42\x08\n\x06_errorB\r\n\x0b_total_rowsB\n\n\x08_contentB\x10\n\x0e_binary_base64B\x0c\n\n_mime_type\"\x19\n\x07\x44\x61taRow\x12\x0e\n\x06values\x18\x01 \x03(\t\"\xa6\x01\n\x10\x41\x64\x64SourceRequest\x12\x12\n\nrequest_id\x18\x01 \x01(\t\x12\x0c\n\x04name\x18\x02 \x01(\t\x12\x0c\n\x04type\x18\x03 \x01(\t\x12\x13\n\x0b\x64\x65scription\x18\x04 \x01(\t\x12\x12\n\nvisibility\x18\x05 \x01(\t\x12\x11\n\treference\x18\x06 \x01(\x08\x12\x11\n\tsensitive\x18\x07 \x01(\x08\x12\x13\n\x0b\x63onfig_json\x18\x08 \x01(\t\"\x96\x01\n\x11\x41\x64\x64SourceResponse\x12\x12\n\nrequest_id\x18\x01 \x01(\t\x12\n\n\x02ok\x18\x02 \x01(\x08\x12\x12\n\x05\x65rror\x18\x03 \x01(\tH\x00\x88\x01\x01\x12\x16\n\tsource_id\x18\x04 \x01(\x05H\x01\x88\x01\x01\x12\x1d\n\x15\x63onnectivity_verified\x18\x05 \x01(\x08\x42\x08\n\x06_errorB\x0c\n\n_source_id2\xde\x06\n\rWorkerService\x12I\n\x07\x43onnect\x12\x1c.qalita.worker.WorkerMessage\x1a\x1c.qalita.worker.ServerMessage(\x01\x30\x01\x12G\n\x0c\x41uthenticate\x12\x1a.qalita.worker.AuthRequest\x1a\x1b.qalita.worker.AuthResponse\x12M\n\x0eRegisterWorker\x12$.qalita.worker.RegisterWorkerRequest\x1a\x15.qalita.worker.Worker\x12\x43\n\tGetWorker\x12\x1f.qalita.worker.GetWorkerRequest\x1a\x15.qalita.worker.Worker\x12=\n\x07GetPack\x12\x1d.qalita.worker.GetPackRequest\x1a\x13.qalita.worker.Pack\x12\x43\n\tGetSource\x12\x1f.qalita.worker.GetSourceRequest\x1a\x15.qalita.worker.Source\x12I\n\x0bGetAssetUrl\x12!.qalita.worker.GetAssetUrlRequest\x1a\x17.qalita.worker.AssetUrl\x12J\n\rGetRegistries\x12\x16.google.protobuf.Empty\x1a!.qalita.worker.RegistriesResponse\x12@\n\tCreateJob\x12\x1f.qalita.worker.CreateJobRequest\x1a\x12.qalita.worker.Job\x12@\n\tUpdateJob\x12\x1f.qalita.worker.UpdateJobRequest\x1a\x12.qalita.worker.Job\x12>\n\x08\x43laimJob\x12\x1e.qalita.worker.ClaimJobRequest\x1a\x12.qalita.worker.Job\x12\x46\n\x0bGetRoutines\x12\x16.google.protobuf.Empty\x1a\x1f.qalita.worker.RoutinesResponseb\x06proto3')
29
+ DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x0cqalita.proto\x12\rqalita.worker\x1a\x1fgoogle/protobuf/timestamp.proto\x1a\x1bgoogle/protobuf/empty.proto\"\xb6\x03\n\rWorkerMessage\x12.\n\nkeep_alive\x18\x01 \x01(\x0b\x32\x18.qalita.worker.KeepAliveH\x00\x12\x34\n\njob_status\x18\x02 \x01(\x0b\x32\x1e.qalita.worker.JobStatusUpdateH\x00\x12:\n\rworker_status\x18\x03 \x01(\x0b\x32!.qalita.worker.WorkerStatusUpdateH\x00\x12-\n\x08log_line\x18\x04 \x01(\x0b\x32\x19.qalita.worker.JobLogLineH\x00\x12\x43\n\x15\x64\x61ta_preview_response\x18\x05 \x01(\x0b\x32\".qalita.worker.DataPreviewResponseH\x00\x12?\n\x13\x61\x64\x64_source_response\x18\x06 \x01(\x0b\x32 .qalita.worker.AddSourceResponseH\x00\x12\x43\n\x15\x61gent_action_response\x18\x07 \x01(\x0b\x32\".qalita.worker.AgentActionResponseH\x00\x42\t\n\x07payload\"h\n\nJobLogLine\x12\x0e\n\x06job_id\x18\x01 \x01(\x05\x12\x0c\n\x04line\x18\x02 \x01(\t\x12\r\n\x05level\x18\x03 \x01(\t\x12-\n\ttimestamp\x18\x04 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\"\xab\x03\n\rServerMessage\x12\x36\n\x0ejob_assignment\x18\x01 \x01(\x0b\x32\x1c.qalita.worker.JobAssignmentH\x00\x12<\n\x11routine_triggered\x18\x02 \x01(\x0b\x32\x1f.qalita.worker.RoutineTriggeredH\x00\x12\'\n\x03\x61\x63k\x18\x03 \x01(\x0b\x32\x18.qalita.worker.ServerAckH\x00\x12+\n\x05\x65rror\x18\x04 \x01(\x0b\x32\x1a.qalita.worker.ServerErrorH\x00\x12\x41\n\x14\x64\x61ta_preview_request\x18\x05 \x01(\x0b\x32!.qalita.worker.DataPreviewRequestH\x00\x12=\n\x12\x61\x64\x64_source_request\x18\x06 \x01(\x0b\x32\x1f.qalita.worker.AddSourceRequestH\x00\x12\x41\n\x14\x61gent_action_request\x18\x07 \x01(\x0b\x32!.qalita.worker.AgentActionRequestH\x00\x42\t\n\x07payload\"M\n\tKeepAlive\x12\x11\n\tworker_id\x18\x01 \x01(\x05\x12-\n\ttimestamp\x18\x02 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\"\x85\x02\n\x0fJobStatusUpdate\x12\x0e\n\x06job_id\x18\x01 \x01(\x05\x12\x0e\n\x06status\x18\x02 \x01(\t\x12\x1a\n\rerror_message\x18\x03 \x01(\tH\x00\x88\x01\x01\x12\x33\n\nstart_date\x18\x04 \x01(\x0b\x32\x1a.google.protobuf.TimestampH\x01\x88\x01\x01\x12\x31\n\x08\x65nd_date\x18\x05 \x01(\x0b\x32\x1a.google.protobuf.TimestampH\x02\x88\x01\x01\x12\x14\n\x07logs_id\x18\x06 \x01(\x05H\x03\x88\x01\x01\x42\x10\n\x0e_error_messageB\r\n\x0b_start_dateB\x0b\n\t_end_dateB\n\n\x08_logs_id\"7\n\x12WorkerStatusUpdate\x12\x11\n\tworker_id\x18\x01 \x01(\x05\x12\x0e\n\x06status\x18\x02 \x01(\t\"0\n\rJobAssignment\x12\x1f\n\x03job\x18\x01 \x01(\x0b\x32\x12.qalita.worker.Job\";\n\x10RoutineTriggered\x12\'\n\x07routine\x18\x01 \x01(\x0b\x32\x16.qalita.worker.Routine\"T\n\tServerAck\x12\x14\n\x0cmessage_type\x18\x01 \x01(\t\x12\x0f\n\x07success\x18\x02 \x01(\x08\x12\x14\n\x07message\x18\x03 \x01(\tH\x00\x88\x01\x01\x42\n\n\x08_message\",\n\x0bServerError\x12\x0c\n\x04\x63ode\x18\x01 \x01(\t\x12\x0f\n\x07message\x18\x02 \x01(\t\"\x1c\n\x0b\x41uthRequest\x12\r\n\x05token\x18\x01 \x01(\t\"f\n\x0c\x41uthResponse\x12\x15\n\rauthenticated\x18\x01 \x01(\x08\x12!\n\x04user\x18\x02 \x01(\x0b\x32\x13.qalita.worker.User\x12\x12\n\x05\x65rror\x18\x03 \x01(\tH\x00\x88\x01\x01\x42\x08\n\x06_error\"R\n\x04User\x12\n\n\x02id\x18\x01 \x01(\x05\x12\r\n\x05\x65mail\x18\x02 \x01(\t\x12\x0c\n\x04name\x18\x03 \x01(\t\x12\x12\n\npartner_id\x18\x04 \x01(\x05\x12\r\n\x05roles\x18\x05 \x03(\t\"V\n\x15RegisterWorkerRequest\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x0c\n\x04mode\x18\x02 \x01(\t\x12\x0e\n\x06status\x18\x03 \x01(\t\x12\x11\n\tis_active\x18\x04 \x01(\x08\"%\n\x10GetWorkerRequest\x12\x11\n\tworker_id\x18\x01 \x01(\x05\"\xd5\x01\n\x06Worker\x12\n\n\x02id\x18\x01 \x01(\x05\x12\x0c\n\x04name\x18\x02 \x01(\t\x12\x0c\n\x04mode\x18\x03 \x01(\t\x12\x0e\n\x06status\x18\x04 \x01(\t\x12\x11\n\tis_active\x18\x05 \x01(\x08\x12.\n\ncreated_at\x18\x06 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12.\n\nupdated_at\x18\x07 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12 \n\x04jobs\x18\x08 \x03(\x0b\x32\x12.qalita.worker.Job\"!\n\x0eGetPackRequest\x12\x0f\n\x07pack_id\x18\x01 \x01(\x05\"\x85\x01\n\x04Pack\x12\n\n\x02id\x18\x01 \x01(\x05\x12\x0c\n\x04name\x18\x02 \x01(\t\x12\x13\n\x0b\x64\x65scription\x18\x03 \x01(\t\x12\x0c\n\x04type\x18\x04 \x01(\t\x12\x12\n\nvisibility\x18\x05 \x01(\t\x12,\n\x08versions\x18\x06 \x03(\x0b\x32\x1a.qalita.worker.PackVersion\"?\n\x0bPackVersion\x12\n\n\x02id\x18\x01 \x01(\x05\x12\x12\n\nsem_ver_id\x18\x02 \x01(\t\x12\x10\n\x08\x61sset_id\x18\x03 \x01(\x05\"%\n\x10GetSourceRequest\x12\x11\n\tsource_id\x18\x01 \x01(\x05\"\x9c\x01\n\x06Source\x12\n\n\x02id\x18\x01 \x01(\x05\x12\x0c\n\x04name\x18\x02 \x01(\t\x12\x13\n\x0b\x64\x65scription\x18\x03 \x01(\t\x12\x0c\n\x04type\x18\x04 \x01(\t\x12\x12\n\nvisibility\x18\x05 \x01(\t\x12\x11\n\tsensitive\x18\x06 \x01(\x08\x12.\n\x08versions\x18\x07 \x03(\x0b\x32\x1c.qalita.worker.SourceVersion\"/\n\rSourceVersion\x12\n\n\x02id\x18\x01 \x01(\x05\x12\x12\n\nsem_ver_id\x18\x02 \x01(\t\"&\n\x12GetAssetUrlRequest\x12\x10\n\x08\x61sset_id\x18\x01 \x01(\x05\"R\n\x08\x41ssetUrl\x12\n\n\x02id\x18\x01 \x01(\x05\x12\x0b\n\x03url\x18\x02 \x01(\t\x12\x0e\n\x06\x62ucket\x18\x03 \x01(\t\x12\x0c\n\x04name\x18\x04 \x01(\t\x12\x0f\n\x07version\x18\x05 \x01(\t\"1\n\x08Registry\x12\n\n\x02id\x18\x01 \x01(\x05\x12\x0c\n\x04name\x18\x02 \x01(\t\x12\x0b\n\x03url\x18\x03 \x01(\t\"A\n\x12RegistriesResponse\x12+\n\nregistries\x18\x01 \x03(\x0b\x32\x17.qalita.worker.Registry\"\x96\x03\n\x10\x43reateJobRequest\x12\x11\n\tsource_id\x18\x01 \x01(\x05\x12\x1e\n\x11source_version_id\x18\x02 \x01(\x05H\x00\x88\x01\x01\x12\x16\n\ttarget_id\x18\x03 \x01(\x05H\x01\x88\x01\x01\x12\x1e\n\x11target_version_id\x18\x04 \x01(\x05H\x02\x88\x01\x01\x12\x0f\n\x07pack_id\x18\x05 \x01(\x05\x12\x1c\n\x0fpack_version_id\x18\x06 \x01(\x05H\x03\x88\x01\x01\x12\x17\n\nroutine_id\x18\x07 \x01(\x05H\x04\x88\x01\x01\x12!\n\x14pack_config_override\x18\x08 \x01(\tH\x05\x88\x01\x01\x12\x11\n\x04type\x18\t \x01(\tH\x06\x88\x01\x01\x12\x11\n\x04name\x18\n \x01(\tH\x07\x88\x01\x01\x42\x14\n\x12_source_version_idB\x0c\n\n_target_idB\x14\n\x12_target_version_idB\x12\n\x10_pack_version_idB\r\n\x0b_routine_idB\x17\n\x15_pack_config_overrideB\x07\n\x05_typeB\x07\n\x05_name\"\xa8\x02\n\x10UpdateJobRequest\x12\x0e\n\x06job_id\x18\x01 \x01(\x05\x12\x15\n\x08\x61gent_id\x18\x02 \x01(\x05H\x00\x88\x01\x01\x12\x13\n\x06status\x18\x03 \x01(\tH\x01\x88\x01\x01\x12\x11\n\x04name\x18\x04 \x01(\tH\x02\x88\x01\x01\x12\x33\n\nstart_date\x18\x05 \x01(\x0b\x32\x1a.google.protobuf.TimestampH\x03\x88\x01\x01\x12\x31\n\x08\x65nd_date\x18\x06 \x01(\x0b\x32\x1a.google.protobuf.TimestampH\x04\x88\x01\x01\x12\x14\n\x07logs_id\x18\x07 \x01(\x05H\x05\x88\x01\x01\x42\x0b\n\t_agent_idB\t\n\x07_statusB\x07\n\x05_nameB\r\n\x0b_start_dateB\x0b\n\t_end_dateB\n\n\x08_logs_id\"4\n\x0f\x43laimJobRequest\x12\x0e\n\x06job_id\x18\x01 \x01(\x05\x12\x11\n\tworker_id\x18\x02 \x01(\x05\"\xd6\x07\n\x03Job\x12\n\n\x02id\x18\x01 \x01(\x05\x12\x0c\n\x04name\x18\x02 \x01(\t\x12\x0e\n\x06status\x18\x03 \x01(\t\x12\x11\n\tsource_id\x18\x04 \x01(\x05\x12\x1e\n\x11source_version_id\x18\x05 \x01(\x05H\x00\x88\x01\x01\x12\x16\n\ttarget_id\x18\x06 \x01(\x05H\x01\x88\x01\x01\x12\x1e\n\x11target_version_id\x18\x07 \x01(\x05H\x02\x88\x01\x01\x12\x0f\n\x07pack_id\x18\x08 \x01(\x05\x12\x1c\n\x0fpack_version_id\x18\t \x01(\x05H\x03\x88\x01\x01\x12\x15\n\x08\x61gent_id\x18\n \x01(\x05H\x04\x88\x01\x01\x12\x17\n\nroutine_id\x18\x0b \x01(\x05H\x05\x88\x01\x01\x12!\n\x14pack_config_override\x18\x0c \x01(\tH\x06\x88\x01\x01\x12\x33\n\nstart_date\x18\r \x01(\x0b\x32\x1a.google.protobuf.TimestampH\x07\x88\x01\x01\x12\x31\n\x08\x65nd_date\x18\x0e \x01(\x0b\x32\x1a.google.protobuf.TimestampH\x08\x88\x01\x01\x12.\n\ncreated_at\x18\x0f \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12*\n\x06source\x18\x10 \x01(\x0b\x32\x15.qalita.worker.SourceH\t\x88\x01\x01\x12*\n\x06target\x18\x11 \x01(\x0b\x32\x15.qalita.worker.SourceH\n\x88\x01\x01\x12&\n\x04pack\x18\x12 \x01(\x0b\x32\x13.qalita.worker.PackH\x0b\x88\x01\x01\x12\x39\n\x0esource_version\x18\x13 \x01(\x0b\x32\x1c.qalita.worker.SourceVersionH\x0c\x88\x01\x01\x12\x39\n\x0etarget_version\x18\x14 \x01(\x0b\x32\x1c.qalita.worker.SourceVersionH\r\x88\x01\x01\x12\x35\n\x0cpack_version\x18\x15 \x01(\x0b\x32\x1a.qalita.worker.PackVersionH\x0e\x88\x01\x01\x42\x14\n\x12_source_version_idB\x0c\n\n_target_idB\x14\n\x12_target_version_idB\x12\n\x10_pack_version_idB\x0b\n\t_agent_idB\r\n\x0b_routine_idB\x17\n\x15_pack_config_overrideB\r\n\x0b_start_dateB\x0b\n\t_end_dateB\t\n\x07_sourceB\t\n\x07_targetB\x07\n\x05_packB\x11\n\x0f_source_versionB\x11\n\x0f_target_versionB\x0f\n\r_pack_version\"\x8c\x04\n\x07Routine\x12\n\n\x02id\x18\x01 \x01(\x05\x12\x0c\n\x04name\x18\x02 \x01(\t\x12\x0e\n\x06status\x18\x03 \x01(\t\x12\x10\n\x08schedule\x18\x04 \x01(\t\x12\x0e\n\x06\x63onfig\x18\x05 \x01(\t\x12.\n\nstart_date\x18\x06 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\x11\n\tsource_id\x18\x07 \x01(\x05\x12\x1e\n\x11source_version_id\x18\x08 \x01(\x05H\x00\x88\x01\x01\x12\x16\n\ttarget_id\x18\t \x01(\x05H\x01\x88\x01\x01\x12\x1e\n\x11target_version_id\x18\n \x01(\x05H\x02\x88\x01\x01\x12\x0f\n\x07pack_id\x18\x0b \x01(\x05\x12\x1c\n\x0fpack_version_id\x18\x0c \x01(\x05H\x03\x88\x01\x01\x12*\n\x06source\x18\r \x01(\x0b\x32\x15.qalita.worker.SourceH\x04\x88\x01\x01\x12*\n\x06target\x18\x0e \x01(\x0b\x32\x15.qalita.worker.SourceH\x05\x88\x01\x01\x12&\n\x04pack\x18\x0f \x01(\x0b\x32\x13.qalita.worker.PackH\x06\x88\x01\x01\x42\x14\n\x12_source_version_idB\x0c\n\n_target_idB\x14\n\x12_target_version_idB\x12\n\x10_pack_version_idB\t\n\x07_sourceB\t\n\x07_targetB\x07\n\x05_pack\"<\n\x10RoutinesResponse\x12(\n\x08routines\x18\x01 \x03(\x0b\x32\x16.qalita.worker.Routine\"\xad\x01\n\x12\x44\x61taPreviewRequest\x12\x12\n\nrequest_id\x18\x01 \x01(\t\x12\x11\n\tsource_id\x18\x02 \x01(\x05\x12\x1e\n\x11source_version_id\x18\x03 \x01(\x05H\x00\x88\x01\x01\x12\x12\n\x05limit\x18\x04 \x01(\x05H\x01\x88\x01\x01\x12\x12\n\x05query\x18\x05 \x01(\tH\x02\x88\x01\x01\x42\x14\n\x12_source_version_idB\x08\n\x06_limitB\x08\n\x06_query\"\xbb\x02\n\x13\x44\x61taPreviewResponse\x12\x12\n\nrequest_id\x18\x01 \x01(\t\x12\n\n\x02ok\x18\x02 \x01(\x08\x12\x11\n\tdata_type\x18\x03 \x01(\t\x12\x12\n\x05\x65rror\x18\x04 \x01(\tH\x00\x88\x01\x01\x12\x0f\n\x07headers\x18\x05 \x03(\t\x12$\n\x04rows\x18\x06 \x03(\x0b\x32\x16.qalita.worker.DataRow\x12\x17\n\ntotal_rows\x18\x07 \x01(\x03H\x01\x88\x01\x01\x12\x14\n\x07\x63ontent\x18\x08 \x01(\tH\x02\x88\x01\x01\x12\x1a\n\rbinary_base64\x18\t \x01(\tH\x03\x88\x01\x01\x12\x16\n\tmime_type\x18\n \x01(\tH\x04\x88\x01\x01\x42\x08\n\x06_errorB\r\n\x0b_total_rowsB\n\n\x08_contentB\x10\n\x0e_binary_base64B\x0c\n\n_mime_type\"\x19\n\x07\x44\x61taRow\x12\x0e\n\x06values\x18\x01 \x03(\t\"\xa6\x01\n\x10\x41\x64\x64SourceRequest\x12\x12\n\nrequest_id\x18\x01 \x01(\t\x12\x0c\n\x04name\x18\x02 \x01(\t\x12\x0c\n\x04type\x18\x03 \x01(\t\x12\x13\n\x0b\x64\x65scription\x18\x04 \x01(\t\x12\x12\n\nvisibility\x18\x05 \x01(\t\x12\x11\n\treference\x18\x06 \x01(\x08\x12\x11\n\tsensitive\x18\x07 \x01(\x08\x12\x13\n\x0b\x63onfig_json\x18\x08 \x01(\t\"\x96\x01\n\x11\x41\x64\x64SourceResponse\x12\x12\n\nrequest_id\x18\x01 \x01(\t\x12\n\n\x02ok\x18\x02 \x01(\x08\x12\x12\n\x05\x65rror\x18\x03 \x01(\tH\x00\x88\x01\x01\x12\x16\n\tsource_id\x18\x04 \x01(\x05H\x01\x88\x01\x01\x12\x1d\n\x15\x63onnectivity_verified\x18\x05 \x01(\x08\x42\x08\n\x06_errorB\x0c\n\n_source_id\"\x9b\x01\n\x12\x41gentActionRequest\x12\x12\n\nrequest_id\x18\x01 \x01(\t\x12\x13\n\x0b\x61\x63tion_type\x18\x02 \x01(\t\x12\x11\n\tsource_id\x18\x03 \x01(\x05\x12\x17\n\x0fparameters_json\x18\x04 \x01(\t\x12\x1c\n\x0ftimeout_seconds\x18\x05 \x01(\x05H\x00\x88\x01\x01\x42\x12\n\x10_timeout_seconds\"\x88\x02\n\x13\x41gentActionResponse\x12\x12\n\nrequest_id\x18\x01 \x01(\t\x12\n\n\x02ok\x18\x02 \x01(\x08\x12\x13\n\x0b\x61\x63tion_type\x18\x03 \x01(\t\x12\x12\n\x05\x65rror\x18\x04 \x01(\tH\x00\x88\x01\x01\x12\x18\n\x0bresult_json\x18\x05 \x01(\tH\x01\x88\x01\x01\x12\x35\n\x04\x64\x61ta\x18\x06 \x01(\x0b\x32\".qalita.worker.DataPreviewResponseH\x02\x88\x01\x01\x12\x1e\n\x11\x65xecution_time_ms\x18\x07 \x01(\x03H\x03\x88\x01\x01\x42\x08\n\x06_errorB\x0e\n\x0c_result_jsonB\x07\n\x05_dataB\x14\n\x12_execution_time_ms2\xde\x06\n\rWorkerService\x12I\n\x07\x43onnect\x12\x1c.qalita.worker.WorkerMessage\x1a\x1c.qalita.worker.ServerMessage(\x01\x30\x01\x12G\n\x0c\x41uthenticate\x12\x1a.qalita.worker.AuthRequest\x1a\x1b.qalita.worker.AuthResponse\x12M\n\x0eRegisterWorker\x12$.qalita.worker.RegisterWorkerRequest\x1a\x15.qalita.worker.Worker\x12\x43\n\tGetWorker\x12\x1f.qalita.worker.GetWorkerRequest\x1a\x15.qalita.worker.Worker\x12=\n\x07GetPack\x12\x1d.qalita.worker.GetPackRequest\x1a\x13.qalita.worker.Pack\x12\x43\n\tGetSource\x12\x1f.qalita.worker.GetSourceRequest\x1a\x15.qalita.worker.Source\x12I\n\x0bGetAssetUrl\x12!.qalita.worker.GetAssetUrlRequest\x1a\x17.qalita.worker.AssetUrl\x12J\n\rGetRegistries\x12\x16.google.protobuf.Empty\x1a!.qalita.worker.RegistriesResponse\x12@\n\tCreateJob\x12\x1f.qalita.worker.CreateJobRequest\x1a\x12.qalita.worker.Job\x12@\n\tUpdateJob\x12\x1f.qalita.worker.UpdateJobRequest\x1a\x12.qalita.worker.Job\x12>\n\x08\x43laimJob\x12\x1e.qalita.worker.ClaimJobRequest\x1a\x12.qalita.worker.Job\x12\x46\n\x0bGetRoutines\x12\x16.google.protobuf.Empty\x1a\x1f.qalita.worker.RoutinesResponseb\x06proto3')
30
30
 
31
31
  _globals = globals()
32
32
  _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
@@ -34,79 +34,83 @@ _builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'qalita_pb2', _globals)
34
34
  if not _descriptor._USE_C_DESCRIPTORS:
35
35
  DESCRIPTOR._loaded_options = None
36
36
  _globals['_WORKERMESSAGE']._serialized_start=94
37
- _globals['_WORKERMESSAGE']._serialized_end=463
38
- _globals['_JOBLOGLINE']._serialized_start=465
39
- _globals['_JOBLOGLINE']._serialized_end=569
40
- _globals['_SERVERMESSAGE']._serialized_start=572
41
- _globals['_SERVERMESSAGE']._serialized_end=932
42
- _globals['_KEEPALIVE']._serialized_start=934
43
- _globals['_KEEPALIVE']._serialized_end=1011
44
- _globals['_JOBSTATUSUPDATE']._serialized_start=1014
45
- _globals['_JOBSTATUSUPDATE']._serialized_end=1275
46
- _globals['_WORKERSTATUSUPDATE']._serialized_start=1277
47
- _globals['_WORKERSTATUSUPDATE']._serialized_end=1332
48
- _globals['_JOBASSIGNMENT']._serialized_start=1334
49
- _globals['_JOBASSIGNMENT']._serialized_end=1382
50
- _globals['_ROUTINETRIGGERED']._serialized_start=1384
51
- _globals['_ROUTINETRIGGERED']._serialized_end=1443
52
- _globals['_SERVERACK']._serialized_start=1445
53
- _globals['_SERVERACK']._serialized_end=1529
54
- _globals['_SERVERERROR']._serialized_start=1531
55
- _globals['_SERVERERROR']._serialized_end=1575
56
- _globals['_AUTHREQUEST']._serialized_start=1577
57
- _globals['_AUTHREQUEST']._serialized_end=1605
58
- _globals['_AUTHRESPONSE']._serialized_start=1607
59
- _globals['_AUTHRESPONSE']._serialized_end=1709
60
- _globals['_USER']._serialized_start=1711
61
- _globals['_USER']._serialized_end=1793
62
- _globals['_REGISTERWORKERREQUEST']._serialized_start=1795
63
- _globals['_REGISTERWORKERREQUEST']._serialized_end=1881
64
- _globals['_GETWORKERREQUEST']._serialized_start=1883
65
- _globals['_GETWORKERREQUEST']._serialized_end=1920
66
- _globals['_WORKER']._serialized_start=1923
67
- _globals['_WORKER']._serialized_end=2136
68
- _globals['_GETPACKREQUEST']._serialized_start=2138
69
- _globals['_GETPACKREQUEST']._serialized_end=2171
70
- _globals['_PACK']._serialized_start=2174
71
- _globals['_PACK']._serialized_end=2307
72
- _globals['_PACKVERSION']._serialized_start=2309
73
- _globals['_PACKVERSION']._serialized_end=2372
74
- _globals['_GETSOURCEREQUEST']._serialized_start=2374
75
- _globals['_GETSOURCEREQUEST']._serialized_end=2411
76
- _globals['_SOURCE']._serialized_start=2414
77
- _globals['_SOURCE']._serialized_end=2570
78
- _globals['_SOURCEVERSION']._serialized_start=2572
79
- _globals['_SOURCEVERSION']._serialized_end=2619
80
- _globals['_GETASSETURLREQUEST']._serialized_start=2621
81
- _globals['_GETASSETURLREQUEST']._serialized_end=2659
82
- _globals['_ASSETURL']._serialized_start=2661
83
- _globals['_ASSETURL']._serialized_end=2743
84
- _globals['_REGISTRY']._serialized_start=2745
85
- _globals['_REGISTRY']._serialized_end=2794
86
- _globals['_REGISTRIESRESPONSE']._serialized_start=2796
87
- _globals['_REGISTRIESRESPONSE']._serialized_end=2861
88
- _globals['_CREATEJOBREQUEST']._serialized_start=2864
89
- _globals['_CREATEJOBREQUEST']._serialized_end=3270
90
- _globals['_UPDATEJOBREQUEST']._serialized_start=3273
91
- _globals['_UPDATEJOBREQUEST']._serialized_end=3569
92
- _globals['_CLAIMJOBREQUEST']._serialized_start=3571
93
- _globals['_CLAIMJOBREQUEST']._serialized_end=3623
94
- _globals['_JOB']._serialized_start=3626
95
- _globals['_JOB']._serialized_end=4608
96
- _globals['_ROUTINE']._serialized_start=4611
97
- _globals['_ROUTINE']._serialized_end=5135
98
- _globals['_ROUTINESRESPONSE']._serialized_start=5137
99
- _globals['_ROUTINESRESPONSE']._serialized_end=5197
100
- _globals['_DATAPREVIEWREQUEST']._serialized_start=5200
101
- _globals['_DATAPREVIEWREQUEST']._serialized_end=5373
102
- _globals['_DATAPREVIEWRESPONSE']._serialized_start=5376
103
- _globals['_DATAPREVIEWRESPONSE']._serialized_end=5691
104
- _globals['_DATAROW']._serialized_start=5693
105
- _globals['_DATAROW']._serialized_end=5718
106
- _globals['_ADDSOURCEREQUEST']._serialized_start=5721
107
- _globals['_ADDSOURCEREQUEST']._serialized_end=5887
108
- _globals['_ADDSOURCERESPONSE']._serialized_start=5890
109
- _globals['_ADDSOURCERESPONSE']._serialized_end=6040
110
- _globals['_WORKERSERVICE']._serialized_start=6043
111
- _globals['_WORKERSERVICE']._serialized_end=6905
37
+ _globals['_WORKERMESSAGE']._serialized_end=532
38
+ _globals['_JOBLOGLINE']._serialized_start=534
39
+ _globals['_JOBLOGLINE']._serialized_end=638
40
+ _globals['_SERVERMESSAGE']._serialized_start=641
41
+ _globals['_SERVERMESSAGE']._serialized_end=1068
42
+ _globals['_KEEPALIVE']._serialized_start=1070
43
+ _globals['_KEEPALIVE']._serialized_end=1147
44
+ _globals['_JOBSTATUSUPDATE']._serialized_start=1150
45
+ _globals['_JOBSTATUSUPDATE']._serialized_end=1411
46
+ _globals['_WORKERSTATUSUPDATE']._serialized_start=1413
47
+ _globals['_WORKERSTATUSUPDATE']._serialized_end=1468
48
+ _globals['_JOBASSIGNMENT']._serialized_start=1470
49
+ _globals['_JOBASSIGNMENT']._serialized_end=1518
50
+ _globals['_ROUTINETRIGGERED']._serialized_start=1520
51
+ _globals['_ROUTINETRIGGERED']._serialized_end=1579
52
+ _globals['_SERVERACK']._serialized_start=1581
53
+ _globals['_SERVERACK']._serialized_end=1665
54
+ _globals['_SERVERERROR']._serialized_start=1667
55
+ _globals['_SERVERERROR']._serialized_end=1711
56
+ _globals['_AUTHREQUEST']._serialized_start=1713
57
+ _globals['_AUTHREQUEST']._serialized_end=1741
58
+ _globals['_AUTHRESPONSE']._serialized_start=1743
59
+ _globals['_AUTHRESPONSE']._serialized_end=1845
60
+ _globals['_USER']._serialized_start=1847
61
+ _globals['_USER']._serialized_end=1929
62
+ _globals['_REGISTERWORKERREQUEST']._serialized_start=1931
63
+ _globals['_REGISTERWORKERREQUEST']._serialized_end=2017
64
+ _globals['_GETWORKERREQUEST']._serialized_start=2019
65
+ _globals['_GETWORKERREQUEST']._serialized_end=2056
66
+ _globals['_WORKER']._serialized_start=2059
67
+ _globals['_WORKER']._serialized_end=2272
68
+ _globals['_GETPACKREQUEST']._serialized_start=2274
69
+ _globals['_GETPACKREQUEST']._serialized_end=2307
70
+ _globals['_PACK']._serialized_start=2310
71
+ _globals['_PACK']._serialized_end=2443
72
+ _globals['_PACKVERSION']._serialized_start=2445
73
+ _globals['_PACKVERSION']._serialized_end=2508
74
+ _globals['_GETSOURCEREQUEST']._serialized_start=2510
75
+ _globals['_GETSOURCEREQUEST']._serialized_end=2547
76
+ _globals['_SOURCE']._serialized_start=2550
77
+ _globals['_SOURCE']._serialized_end=2706
78
+ _globals['_SOURCEVERSION']._serialized_start=2708
79
+ _globals['_SOURCEVERSION']._serialized_end=2755
80
+ _globals['_GETASSETURLREQUEST']._serialized_start=2757
81
+ _globals['_GETASSETURLREQUEST']._serialized_end=2795
82
+ _globals['_ASSETURL']._serialized_start=2797
83
+ _globals['_ASSETURL']._serialized_end=2879
84
+ _globals['_REGISTRY']._serialized_start=2881
85
+ _globals['_REGISTRY']._serialized_end=2930
86
+ _globals['_REGISTRIESRESPONSE']._serialized_start=2932
87
+ _globals['_REGISTRIESRESPONSE']._serialized_end=2997
88
+ _globals['_CREATEJOBREQUEST']._serialized_start=3000
89
+ _globals['_CREATEJOBREQUEST']._serialized_end=3406
90
+ _globals['_UPDATEJOBREQUEST']._serialized_start=3409
91
+ _globals['_UPDATEJOBREQUEST']._serialized_end=3705
92
+ _globals['_CLAIMJOBREQUEST']._serialized_start=3707
93
+ _globals['_CLAIMJOBREQUEST']._serialized_end=3759
94
+ _globals['_JOB']._serialized_start=3762
95
+ _globals['_JOB']._serialized_end=4744
96
+ _globals['_ROUTINE']._serialized_start=4747
97
+ _globals['_ROUTINE']._serialized_end=5271
98
+ _globals['_ROUTINESRESPONSE']._serialized_start=5273
99
+ _globals['_ROUTINESRESPONSE']._serialized_end=5333
100
+ _globals['_DATAPREVIEWREQUEST']._serialized_start=5336
101
+ _globals['_DATAPREVIEWREQUEST']._serialized_end=5509
102
+ _globals['_DATAPREVIEWRESPONSE']._serialized_start=5512
103
+ _globals['_DATAPREVIEWRESPONSE']._serialized_end=5827
104
+ _globals['_DATAROW']._serialized_start=5829
105
+ _globals['_DATAROW']._serialized_end=5854
106
+ _globals['_ADDSOURCEREQUEST']._serialized_start=5857
107
+ _globals['_ADDSOURCEREQUEST']._serialized_end=6023
108
+ _globals['_ADDSOURCERESPONSE']._serialized_start=6026
109
+ _globals['_ADDSOURCERESPONSE']._serialized_end=6176
110
+ _globals['_AGENTACTIONREQUEST']._serialized_start=6179
111
+ _globals['_AGENTACTIONREQUEST']._serialized_end=6334
112
+ _globals['_AGENTACTIONRESPONSE']._serialized_start=6337
113
+ _globals['_AGENTACTIONRESPONSE']._serialized_end=6601
114
+ _globals['_WORKERSERVICE']._serialized_start=6604
115
+ _globals['_WORKERSERVICE']._serialized_end=7466
112
116
  # @@protoc_insertion_point(module_scope)
@@ -4,7 +4,7 @@ import grpc
4
4
  import warnings
5
5
 
6
6
  from google.protobuf import empty_pb2 as google_dot_protobuf_dot_empty__pb2
7
- from . import qalita_pb2 as qalita__pb2
7
+ from qalita.grpc.protos import qalita_pb2 as qalita__pb2
8
8
 
9
9
  GRPC_GENERATED_VERSION = '1.76.0'
10
10
  GRPC_VERSION = grpc.__version__