qtype 0.0.12__py3-none-any.whl → 0.1.7__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 (137) hide show
  1. qtype/application/commons/tools.py +1 -1
  2. qtype/application/converters/tools_from_api.py +476 -11
  3. qtype/application/converters/tools_from_module.py +38 -14
  4. qtype/application/converters/types.py +15 -30
  5. qtype/application/documentation.py +1 -1
  6. qtype/application/facade.py +102 -85
  7. qtype/base/types.py +227 -7
  8. qtype/cli.py +5 -1
  9. qtype/commands/convert.py +52 -6
  10. qtype/commands/generate.py +44 -4
  11. qtype/commands/run.py +78 -36
  12. qtype/commands/serve.py +74 -44
  13. qtype/commands/validate.py +37 -14
  14. qtype/commands/visualize.py +46 -25
  15. qtype/dsl/__init__.py +6 -5
  16. qtype/dsl/custom_types.py +1 -1
  17. qtype/dsl/domain_types.py +86 -5
  18. qtype/dsl/linker.py +384 -0
  19. qtype/dsl/loader.py +315 -0
  20. qtype/dsl/model.py +753 -264
  21. qtype/dsl/parser.py +200 -0
  22. qtype/dsl/types.py +50 -0
  23. qtype/interpreter/api.py +63 -136
  24. qtype/interpreter/auth/aws.py +19 -9
  25. qtype/interpreter/auth/generic.py +93 -16
  26. qtype/interpreter/base/base_step_executor.py +436 -0
  27. qtype/interpreter/base/batch_step_executor.py +171 -0
  28. qtype/interpreter/base/exceptions.py +50 -0
  29. qtype/interpreter/base/executor_context.py +91 -0
  30. qtype/interpreter/base/factory.py +84 -0
  31. qtype/interpreter/base/progress_tracker.py +110 -0
  32. qtype/interpreter/base/secrets.py +339 -0
  33. qtype/interpreter/base/step_cache.py +74 -0
  34. qtype/interpreter/base/stream_emitter.py +469 -0
  35. qtype/interpreter/conversions.py +495 -24
  36. qtype/interpreter/converters.py +79 -0
  37. qtype/interpreter/endpoints.py +355 -0
  38. qtype/interpreter/executors/agent_executor.py +242 -0
  39. qtype/interpreter/executors/aggregate_executor.py +93 -0
  40. qtype/interpreter/executors/bedrock_reranker_executor.py +195 -0
  41. qtype/interpreter/executors/decoder_executor.py +163 -0
  42. qtype/interpreter/executors/doc_to_text_executor.py +112 -0
  43. qtype/interpreter/executors/document_embedder_executor.py +123 -0
  44. qtype/interpreter/executors/document_search_executor.py +113 -0
  45. qtype/interpreter/executors/document_source_executor.py +118 -0
  46. qtype/interpreter/executors/document_splitter_executor.py +105 -0
  47. qtype/interpreter/executors/echo_executor.py +63 -0
  48. qtype/interpreter/executors/field_extractor_executor.py +165 -0
  49. qtype/interpreter/executors/file_source_executor.py +101 -0
  50. qtype/interpreter/executors/file_writer_executor.py +110 -0
  51. qtype/interpreter/executors/index_upsert_executor.py +232 -0
  52. qtype/interpreter/executors/invoke_embedding_executor.py +104 -0
  53. qtype/interpreter/executors/invoke_flow_executor.py +51 -0
  54. qtype/interpreter/executors/invoke_tool_executor.py +358 -0
  55. qtype/interpreter/executors/llm_inference_executor.py +272 -0
  56. qtype/interpreter/executors/prompt_template_executor.py +78 -0
  57. qtype/interpreter/executors/sql_source_executor.py +106 -0
  58. qtype/interpreter/executors/vector_search_executor.py +91 -0
  59. qtype/interpreter/flow.py +172 -22
  60. qtype/interpreter/logging_progress.py +61 -0
  61. qtype/interpreter/metadata_api.py +115 -0
  62. qtype/interpreter/resource_cache.py +5 -4
  63. qtype/interpreter/rich_progress.py +225 -0
  64. qtype/interpreter/stream/chat/__init__.py +15 -0
  65. qtype/interpreter/stream/chat/converter.py +391 -0
  66. qtype/interpreter/{chat → stream/chat}/file_conversions.py +2 -2
  67. qtype/interpreter/stream/chat/ui_request_to_domain_type.py +140 -0
  68. qtype/interpreter/stream/chat/vercel.py +609 -0
  69. qtype/interpreter/stream/utils/__init__.py +15 -0
  70. qtype/interpreter/stream/utils/build_vercel_ai_formatter.py +74 -0
  71. qtype/interpreter/stream/utils/callback_to_stream.py +66 -0
  72. qtype/interpreter/stream/utils/create_streaming_response.py +18 -0
  73. qtype/interpreter/stream/utils/default_chat_extract_text.py +20 -0
  74. qtype/interpreter/stream/utils/error_streaming_response.py +20 -0
  75. qtype/interpreter/telemetry.py +135 -8
  76. qtype/interpreter/tools/__init__.py +5 -0
  77. qtype/interpreter/tools/function_tool_helper.py +265 -0
  78. qtype/interpreter/types.py +330 -0
  79. qtype/interpreter/typing.py +83 -89
  80. qtype/interpreter/ui/404/index.html +1 -1
  81. qtype/interpreter/ui/404.html +1 -1
  82. qtype/interpreter/ui/_next/static/{OT8QJQW3J70VbDWWfrEMT → 20HoJN6otZ_LyHLHpCPE6}/_buildManifest.js +1 -1
  83. qtype/interpreter/ui/_next/static/chunks/434-b2112d19f25c44ff.js +36 -0
  84. qtype/interpreter/ui/_next/static/chunks/{964-ed4ab073db645007.js → 964-2b041321a01cbf56.js} +1 -1
  85. qtype/interpreter/ui/_next/static/chunks/app/{layout-5ccbc44fd528d089.js → layout-a05273ead5de2c41.js} +1 -1
  86. qtype/interpreter/ui/_next/static/chunks/app/page-8c67d16ac90d23cb.js +1 -0
  87. qtype/interpreter/ui/_next/static/chunks/ba12c10f-546f2714ff8abc66.js +1 -0
  88. qtype/interpreter/ui/_next/static/chunks/{main-6d261b6c5d6fb6c2.js → main-e26b9cb206da2cac.js} +1 -1
  89. qtype/interpreter/ui/_next/static/chunks/webpack-08642e441b39b6c2.js +1 -0
  90. qtype/interpreter/ui/_next/static/css/8a8d1269e362fef7.css +3 -0
  91. qtype/interpreter/ui/_next/static/media/4cf2300e9c8272f7-s.p.woff2 +0 -0
  92. qtype/interpreter/ui/icon.png +0 -0
  93. qtype/interpreter/ui/index.html +1 -1
  94. qtype/interpreter/ui/index.txt +5 -5
  95. qtype/semantic/checker.py +643 -0
  96. qtype/semantic/generate.py +268 -85
  97. qtype/semantic/loader.py +95 -0
  98. qtype/semantic/model.py +535 -163
  99. qtype/semantic/resolver.py +63 -19
  100. qtype/semantic/visualize.py +50 -35
  101. {qtype-0.0.12.dist-info → qtype-0.1.7.dist-info}/METADATA +22 -5
  102. qtype-0.1.7.dist-info/RECORD +137 -0
  103. qtype/dsl/base_types.py +0 -38
  104. qtype/dsl/validator.py +0 -464
  105. qtype/interpreter/batch/__init__.py +0 -0
  106. qtype/interpreter/batch/flow.py +0 -95
  107. qtype/interpreter/batch/sql_source.py +0 -95
  108. qtype/interpreter/batch/step.py +0 -63
  109. qtype/interpreter/batch/types.py +0 -41
  110. qtype/interpreter/batch/utils.py +0 -179
  111. qtype/interpreter/chat/chat_api.py +0 -237
  112. qtype/interpreter/chat/vercel.py +0 -314
  113. qtype/interpreter/exceptions.py +0 -10
  114. qtype/interpreter/step.py +0 -67
  115. qtype/interpreter/steps/__init__.py +0 -0
  116. qtype/interpreter/steps/agent.py +0 -114
  117. qtype/interpreter/steps/condition.py +0 -36
  118. qtype/interpreter/steps/decoder.py +0 -88
  119. qtype/interpreter/steps/llm_inference.py +0 -150
  120. qtype/interpreter/steps/prompt_template.py +0 -54
  121. qtype/interpreter/steps/search.py +0 -24
  122. qtype/interpreter/steps/tool.py +0 -53
  123. qtype/interpreter/streaming_helpers.py +0 -123
  124. qtype/interpreter/ui/_next/static/chunks/736-7fc606e244fedcb1.js +0 -36
  125. qtype/interpreter/ui/_next/static/chunks/app/page-c72e847e888e549d.js +0 -1
  126. qtype/interpreter/ui/_next/static/chunks/ba12c10f-22556063851a6df2.js +0 -1
  127. qtype/interpreter/ui/_next/static/chunks/webpack-8289c17c67827f22.js +0 -1
  128. qtype/interpreter/ui/_next/static/css/a262c53826df929b.css +0 -3
  129. qtype/interpreter/ui/_next/static/media/569ce4b8f30dc480-s.p.woff2 +0 -0
  130. qtype/interpreter/ui/favicon.ico +0 -0
  131. qtype/loader.py +0 -389
  132. qtype-0.0.12.dist-info/RECORD +0 -105
  133. /qtype/interpreter/ui/_next/static/{OT8QJQW3J70VbDWWfrEMT → 20HoJN6otZ_LyHLHpCPE6}/_ssgManifest.js +0 -0
  134. {qtype-0.0.12.dist-info → qtype-0.1.7.dist-info}/WHEEL +0 -0
  135. {qtype-0.0.12.dist-info → qtype-0.1.7.dist-info}/entry_points.txt +0 -0
  136. {qtype-0.0.12.dist-info → qtype-0.1.7.dist-info}/licenses/LICENSE +0 -0
  137. {qtype-0.0.12.dist-info → qtype-0.1.7.dist-info}/top_level.txt +0 -0
qtype/loader.py DELETED
@@ -1,389 +0,0 @@
1
- """
2
- YAML loading and validation with environment variable support and file inclusion.
3
- """
4
-
5
- from __future__ import annotations
6
-
7
- import os
8
- import re
9
- from pathlib import Path
10
- from typing import Any
11
- from urllib.parse import urljoin, urlparse
12
-
13
- import fsspec # type: ignore[import-untyped]
14
- import yaml
15
- from dotenv import load_dotenv
16
- from fsspec.core import url_to_fs # type: ignore[import-untyped]
17
-
18
- from qtype.base.types import CustomTypeRegistry, DocumentRootType
19
- from qtype.dsl import model as dsl
20
- from qtype.dsl.custom_types import build_dynamic_types
21
- from qtype.dsl.validator import validate
22
- from qtype.semantic.model import Application
23
- from qtype.semantic.resolver import resolve
24
-
25
-
26
- class _StringStream:
27
- """
28
- A file-like stream wrapper around string content for YAML loading.
29
- This class provides a readable stream interface that PyYAML can use
30
- to parse string content as if it were reading from a file.
31
- """
32
-
33
- def __init__(self, content: str, name: str | None = None) -> None:
34
- """
35
- Initialize the string stream.
36
-
37
- Args:
38
- content: The string content to wrap.
39
- name: Optional name/path for the stream (used for relative path resolution).
40
- """
41
- self.content = content
42
- self.name = name
43
- self._pos = 0
44
-
45
- def read(self, size: int = -1) -> str:
46
- """
47
- Read content from the stream.
48
-
49
- Args:
50
- size: Number of characters to read. If -1, read all remaining content.
51
-
52
- Returns:
53
- The requested content as a string.
54
- """
55
- if size == -1:
56
- result = self.content[self._pos :]
57
- self._pos = len(self.content)
58
- else:
59
- result = self.content[self._pos : self._pos + size]
60
- self._pos += len(result)
61
- return result
62
-
63
-
64
- class YamlLoader(yaml.SafeLoader):
65
- """
66
- YAML loader that supports environment variable substitution and file inclusion.
67
-
68
- Supports the following syntax:
69
- - ${VAR_NAME} - Required environment variable (raises error if not found)
70
- - ${VAR_NAME:default_value} - Optional with default value
71
- - !include path/to/file.yaml - Include external YAML file
72
- - !include_raw path/to/file.txt - Include raw text file as string
73
-
74
- File paths can be:
75
- - Local filesystem paths (relative or absolute)
76
- - URLs (http://, https://)
77
- - GitHub URLs (github://)
78
- - S3 URLs (s3://)
79
- - Any fsspec-supported protocol
80
- """
81
-
82
- def __init__(self, stream: Any) -> None:
83
- super().__init__(stream)
84
- # Store the base path/URL of the current file for relative path resolution
85
- if hasattr(stream, "name") and stream.name is not None:
86
- self._current_path = stream.name
87
- else:
88
- self._current_path = str(Path.cwd())
89
-
90
-
91
- def _env_var_constructor(loader: YamlLoader, node: yaml.ScalarNode) -> str:
92
- """
93
- Constructor for environment variable substitution.
94
-
95
- Args:
96
- loader: The YAML loader instance.
97
- node: The YAML node containing the environment variable reference.
98
-
99
- Returns:
100
- The resolved environment variable value.
101
-
102
- Raises:
103
- ValueError: If a required environment variable is not found.
104
- """
105
- value = loader.construct_scalar(node)
106
-
107
- # Pattern to match ${VAR_NAME} or ${VAR_NAME:default}
108
- pattern = r"\$\{([^}:]+)(?::([^}]*))?\}"
109
-
110
- def replace_env_var(match: re.Match[str]) -> str:
111
- var_name = match.group(1)
112
- default_value = match.group(2)
113
-
114
- env_value = os.getenv(var_name)
115
-
116
- if env_value is not None:
117
- return env_value
118
- elif default_value is not None:
119
- return default_value
120
- else:
121
- msg = f"Environment variable '{var_name}' is required but not set"
122
- raise ValueError(msg)
123
-
124
- return re.sub(pattern, replace_env_var, value)
125
-
126
-
127
- def _include_file_constructor(
128
- loader: YamlLoader, node: yaml.ScalarNode
129
- ) -> Any:
130
- """
131
- Constructor for !include tag to load external YAML files using fsspec.
132
-
133
- Args:
134
- loader: The YAML loader instance.
135
- node: The YAML node containing the file path/URL.
136
-
137
- Returns:
138
- The parsed YAML data from the included file.
139
-
140
- Raises:
141
- FileNotFoundError: If the included file doesn't exist.
142
- yaml.YAMLError: If the included file is malformed YAML.
143
- """
144
- file_path = loader.construct_scalar(node)
145
-
146
- # Resolve relative paths/URLs relative to the current file
147
- resolved_path = _resolve_path(loader._current_path, file_path)
148
-
149
- try:
150
- with fsspec.open(resolved_path, "r", encoding="utf-8") as f:
151
- content = f.read() # type: ignore[misc]
152
-
153
- # Create a string stream with the resolved path for nested includes
154
- stream = _StringStream(content, resolved_path)
155
- return yaml.load(stream, Loader=YamlLoader)
156
- except ValueError:
157
- # Re-raise ValueError (e.g., missing environment variables) without wrapping
158
- raise
159
- except Exception as e:
160
- msg = f"Failed to load included file '{resolved_path}': {e}"
161
- raise FileNotFoundError(msg) from e
162
-
163
-
164
- def _include_raw_constructor(loader: YamlLoader, node: yaml.ScalarNode) -> str:
165
- """
166
- Constructor for !include_raw tag to load external text files using fsspec.
167
-
168
- Args:
169
- loader: The YAML loader instance.
170
- node: The YAML node containing the file path/URL.
171
-
172
- Returns:
173
- The raw text content of the included file.
174
-
175
- Raises:
176
- FileNotFoundError: If the included file doesn't exist.
177
- """
178
- file_path = loader.construct_scalar(node)
179
-
180
- # Resolve relative paths/URLs relative to the current file
181
- resolved_path = _resolve_path(loader._current_path, file_path)
182
-
183
- try:
184
- with fsspec.open(resolved_path, "r", encoding="utf-8") as f:
185
- return f.read() # type: ignore[no-any-return]
186
- except Exception as e:
187
- msg = f"Failed to load included file '{resolved_path}': {e}"
188
- raise FileNotFoundError(msg) from e
189
-
190
-
191
- def _resolve_path(current_path: str, target_path: str) -> str:
192
- """
193
- Resolve a target path relative to the current file path.
194
-
195
- Args:
196
- current_path: The path/URL of the current file.
197
- target_path: The target path/URL to resolve.
198
-
199
- Returns:
200
- The resolved absolute path/URL.
201
- """
202
- # If target is already absolute (has scheme or starts with /), use as-is
203
- parsed_target = urlparse(target_path)
204
- if parsed_target.scheme or target_path.startswith("/"):
205
- return target_path
206
-
207
- # Check if current path is a URL
208
- parsed_current = urlparse(current_path)
209
- if parsed_current.scheme:
210
- # Current is a URL, use urljoin for proper URL resolution
211
- return urljoin(current_path, target_path)
212
- else:
213
- # Current is a local path, resolve relative to its directory
214
- current_path_obj = Path(current_path)
215
- if current_path_obj.is_dir():
216
- current_dir = current_path_obj
217
- else:
218
- # If it's a directory or doesn't exist yet, use it as-is
219
- current_dir = current_path_obj.parent
220
- return str(current_dir / target_path)
221
-
222
-
223
- def _load_env_files(directories: list[Path]) -> None:
224
- """Load .env files from the specified directories."""
225
- for directory in directories:
226
- env_file = directory / ".env"
227
- if env_file.exists():
228
- load_dotenv(env_file)
229
-
230
-
231
- # Register constructors for YamlLoader
232
- YamlLoader.add_constructor("tag:yaml.org,2002:str", _env_var_constructor)
233
- YamlLoader.add_constructor("!include", _include_file_constructor)
234
- YamlLoader.add_constructor("!include_raw", _include_raw_constructor)
235
-
236
-
237
- def load_yaml_from_string(
238
- content: str, original_uri: str | None = None
239
- ) -> dict[str, Any]:
240
- """
241
- Load a YAML file with environment variable substitution and file inclusion support.
242
-
243
- Args:
244
- content: The YAML content to load.
245
-
246
- Returns:
247
- The parsed YAML data with includes resolved and environment variables substituted.
248
-
249
- Raises:
250
- ValueError: If a required environment variable is not found.
251
- FileNotFoundError: If the YAML file or included files don't exist.
252
- yaml.YAMLError: If the YAML file is malformed.
253
- """
254
-
255
- # Create a string stream for the loader
256
- # Note: When loading from string, relative paths will be resolved relative to cwd
257
- stream = _StringStream(content, original_uri)
258
- # Use the string stream directly with the loader
259
- result = yaml.load(stream, Loader=YamlLoader)
260
-
261
- return result # type: ignore[no-any-return]
262
-
263
-
264
- def load_yaml(content: str) -> dict[str, Any]:
265
- """
266
- Load a YAML file with environment variable substitution and file inclusion support.
267
-
268
- Args:
269
- content: Either a fsspec uri/file path to load, or a string containing YAML content.
270
-
271
- Returns:
272
- The parsed YAML data with includes resolved and environment variables substituted.
273
-
274
- Raises:
275
- ValueError: If a required environment variable is not found.
276
- FileNotFoundError: If the YAML file or included files don't exist.
277
- yaml.YAMLError: If the YAML file is malformed.
278
- """
279
- try:
280
- # First check if content looks like a file path or URI
281
- if "\n" in content:
282
- # If it contains newlines, treat as raw YAML content
283
- is_uri = False
284
- else:
285
- # it has no new lines, so it's probably a uri
286
- # try to resolve it
287
- _ = url_to_fs(content)
288
- is_uri = True
289
- except (ValueError, OSError):
290
- is_uri = False
291
-
292
- # Load the environment variables from .env files
293
- directories = [Path.cwd()]
294
-
295
- if is_uri:
296
- # if the content is a uri, see if it is a local path. if it is, add the directory
297
- try:
298
- parsed = urlparse(content)
299
- if parsed.scheme in ["file", ""]:
300
- # For file-like URIs, resolve the path and add its directory
301
- directories.append(Path(parsed.path).parent)
302
- except Exception:
303
- pass
304
-
305
- # Load .env files from the specified directories
306
- _load_env_files(directories)
307
-
308
- # Load the yaml content
309
- if is_uri:
310
- original_uri = content
311
- with fsspec.open(content, "r", encoding="utf-8") as f:
312
- content = f.read() # type: ignore[misc]
313
- return load_yaml_from_string(content, original_uri)
314
- else:
315
- return load_yaml_from_string(content)
316
-
317
-
318
- def _resolve_root(doc: dsl.Document) -> DocumentRootType:
319
- root = doc.root
320
- # If the docroot is a type that ends in the name `List`, resolve it again
321
- types_to_resolve = set(
322
- [
323
- dsl.AuthorizationProviderList,
324
- dsl.IndexList,
325
- dsl.ModelList,
326
- dsl.ToolList,
327
- dsl.VariableList,
328
- ]
329
- )
330
- if root is not None and type(root) in types_to_resolve:
331
- root = root.root # type: ignore
332
- return root # type: ignore[return-value]
333
-
334
-
335
- def _list_dynamic_types_from_document(
336
- loaded_yaml: dict[str, Any],
337
- ) -> list[dict]:
338
- """
339
- Build dynamic types from the loaded YAML data.
340
-
341
- Args:
342
- loaded_yaml: The parsed YAML data containing type definitions.
343
-
344
- Returns:
345
- A registry of dynamically created Pydantic BaseModel classes.
346
- """
347
- rv = []
348
-
349
- # add any "types" if the loaded doc is an application
350
- rv.extend(loaded_yaml.get("types", []))
351
-
352
- # check for TypeList by seeing if we have root + custom types
353
- if "root" in loaded_yaml:
354
- root = loaded_yaml["root"]
355
- if (
356
- isinstance(root, list)
357
- and len(root) > 0
358
- and "properties" in root[0]
359
- ):
360
- rv.extend(root)
361
-
362
- # call recursively for any references
363
- if "references" in loaded_yaml:
364
- for ref in loaded_yaml["references"]:
365
- rv.extend(_list_dynamic_types_from_document(ref))
366
- return rv
367
-
368
-
369
- def load_document(content: str) -> tuple[DocumentRootType, CustomTypeRegistry]:
370
- """Load a QType YAML file, validate it, and return the resolved root."""
371
- yaml_data = load_yaml(content)
372
- dynamic_types_lists = _list_dynamic_types_from_document(yaml_data)
373
- dynamic_types_registry = build_dynamic_types(dynamic_types_lists)
374
- document = dsl.Document.model_validate(
375
- yaml_data, context={"custom_types": dynamic_types_registry}
376
- )
377
- root = _resolve_root(document)
378
- return root, dynamic_types_registry
379
-
380
-
381
- def load(content: str) -> tuple[Application, CustomTypeRegistry]:
382
- """Load a QType YAML file, validate it, and return the resolved root."""
383
- root, dynamic_types_registry = load_document(content)
384
- if not isinstance(root, dsl.Application):
385
- raise ValueError(
386
- f"Root document is not an Application, found {type(root)}."
387
- )
388
- root = validate(root)
389
- return resolve(root), dynamic_types_registry
@@ -1,105 +0,0 @@
1
- qtype/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
2
- qtype/cli.py,sha256=XSVtfzpjTbQBQ60iyb5oupwi-mFpGH5jT8H1bJQdjis,4697
3
- qtype/loader.py,sha256=5yqD19-ke5iBemeO1XC-o77y8WzNHWh3YKKs2cEY3MU,12782
4
- qtype/application/__init__.py,sha256=WS3x0b0NRt-nRmj1trsytlvMpQS5KN7Hi6THGfY8bKE,230
5
- qtype/application/documentation.py,sha256=_ftD344BS7xca6zxjAoiUzTyBrLTtH4iDXUkN4OO4Hs,4992
6
- qtype/application/facade.py,sha256=GQ05OFs_FL5m-l8wAf05tujwUnoO5ciEX0vGozLlMcI,5660
7
- qtype/application/commons/__init__.py,sha256=QyWAB2cvimM4DxNo2oBFCGkfBikH-ZeMBMGWmJcq4Uc,135
8
- qtype/application/commons/tools.py,sha256=pJFY5mPiFErXVFLw2GtiFoWnS8xCNaDVtk-opkoB-zs,5004
9
- qtype/application/converters/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
10
- qtype/application/converters/tools_from_api.py,sha256=qsycjLGZDnawND8JtK97avAEJcpAm5FGs8nDgePXzbc,774
11
- qtype/application/converters/tools_from_module.py,sha256=zNyJdgMButHOmgXy0m1OKVPDUhl-4ZaSrSRsQBcSjvA,8017
12
- qtype/application/converters/types.py,sha256=MNH0WOkY2ijGV17kLZIsp8mcHbfgUgLitpagKSaSYSU,1184
13
- qtype/base/__init__.py,sha256=4jwcB8cDHzDNF3NBv8WqHNk3sDZDNvUFNjx2CKZ-pyY,283
14
- qtype/base/exceptions.py,sha256=NR6-p6FnIabFPid9xIUTTeNhCYoIw8sbxEzaWQ11a4o,1155
15
- qtype/base/logging.py,sha256=eqStjILlmhNryYRqUiyTdDHoUoiLKSY8J0GevvzvTKQ,1075
16
- qtype/base/types.py,sha256=2kV4xnXYD_D0_xWhZbrrSlwAy14TtTyNuzbX5chqeVg,603
17
- qtype/commands/__init__.py,sha256=Qo4M07zm5I63r8STxDjvt5fhP1jygdXTsExNGELkefc,257
18
- qtype/commands/convert.py,sha256=ihYftUsnpBYxLZdtRZDV-J0s0pZDEl8EJ6gfEexGTFo,3167
19
- qtype/commands/generate.py,sha256=783o4trRPGxkav8GfbGoYbycuNt-Ajk0Z5YBUnHBEI4,5677
20
- qtype/commands/run.py,sha256=XQyuKW1igVU8AJ3vUcqIb0dRjoqdrenHvJ2Cv5j0Vy4,5105
21
- qtype/commands/serve.py,sha256=KPp6vUOCIACFRkXyA5VwpK32NhrLIv_AxP7_WmqHz0o,2529
22
- qtype/commands/validate.py,sha256=ERPa8dqfUPJzqHSV8UbDeA9MMjmSZxlfYYFL2gRnpaM,2259
23
- qtype/commands/visualize.py,sha256=r_HeWeEoADXhMDBAuMcBXBdi8mvcB9pAH5a1YysJsAU,2992
24
- qtype/dsl/__init__.py,sha256=EolSauOwNTWah8IKBkwikxLIsA0WIekvEkHhfQdnTE0,297
25
- qtype/dsl/base_types.py,sha256=_Mw-r6TEbXwJeO0nThOiUyEL1S1_Q7Vtk4WWtCzGyNg,907
26
- qtype/dsl/custom_types.py,sha256=t6odgKHQcLfJsoEqnqChOoqJ0rQrgFpeGPVS9ogMvOI,2920
27
- qtype/dsl/domain_types.py,sha256=T0fVhdTyTrdtH4oOYvaRb7fstcReiwTQFCFYbDzPeew,1656
28
- qtype/dsl/model.py,sha256=xhvTYyuNIerypQ-Dog5ncr80a1-iy7tketLbEtCKvN0,24542
29
- qtype/dsl/validator.py,sha256=w3JZvBoFBGfmFJhFNYm6knmaY9IKVtPc3HVKcAvjQL8,18213
30
- qtype/interpreter/__init__.py,sha256=IaRF90JLFbsTLKz9LTOMI_Pz4xwVaEyXPNaXV7sLou8,43
31
- qtype/interpreter/api.py,sha256=8yAWFE_Vrue_gfyAA7eohwgdFNBMma2oTgEQYz5UCRU,7576
32
- qtype/interpreter/conversions.py,sha256=SFkALpQc2qIApYe7ICuQp6eSuB0YLsE9-gJT_B0e2cU,6072
33
- qtype/interpreter/exceptions.py,sha256=Il8IF0UAtYWQXwvOVQCY-csfRzC1iOejHM1G-nF5EfY,288
34
- qtype/interpreter/flow.py,sha256=2u1wRahNFQaRRklnU4uW7_UKSD73-uZe_WiYlKitXQg,1233
35
- qtype/interpreter/resource_cache.py,sha256=U7gFQGSzkcCETbBgLJIBWjuDOVvGdGEYhZWntbhSH2A,1072
36
- qtype/interpreter/step.py,sha256=6rLznFCc8FT0edCbeA7mUYCz8NHhZzTIBpXTxrlG9eE,2084
37
- qtype/interpreter/streaming_helpers.py,sha256=RlYFAwEFaczC5DGM60KAMZMgGOUgNyopY-CyNFkZybQ,4448
38
- qtype/interpreter/telemetry.py,sha256=p1nmup-V_TBM64giYySewpjJOF5_FZgK_KTE5ad38Uk,632
39
- qtype/interpreter/typing.py,sha256=HlEGsum7DSTgfNlsjWEb0RFM3EgaI_otBpUqwovTiyo,4687
40
- qtype/interpreter/auth/__init__.py,sha256=L98AxaSizb6LMdXEr8FGe9MBtPBnfCeWxjI0oi7sg_o,62
41
- qtype/interpreter/auth/aws.py,sha256=rNCf0njllNxIQwsl9_oZIDrYJ2Z-udICtCmT08GCD3o,7681
42
- qtype/interpreter/auth/cache.py,sha256=uVyJ_jkbprRdlvbnm1DVIaYyTDLEsPXvi3xjuRneH2k,1825
43
- qtype/interpreter/auth/generic.py,sha256=UFVbyX8kuqKqm_9ZtiHub8YZbwwnoOye6ln7ddY_jIE,3326
44
- qtype/interpreter/batch/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
45
- qtype/interpreter/batch/flow.py,sha256=MzlZcqygOP3I-vQj9ESDKkko39zoSY-POIRhJ6gheAg,3118
46
- qtype/interpreter/batch/sql_source.py,sha256=8Nu2TwSvKA8uSlQE9PEtehaTwuhM2Nk595h1eUGPrnc,3241
47
- qtype/interpreter/batch/step.py,sha256=PLfIRxTahVHmgIVG10mDmr7MGU2M2A-zEq53mxaLJJ8,1907
48
- qtype/interpreter/batch/types.py,sha256=3EMzsaFrEtcY2FFvMHvbRm54n34EMoe-mtJV68LAkKg,1098
49
- qtype/interpreter/batch/utils.py,sha256=Q_AptPjy8e-B9d6ML9We9wuLG-fS5LgVCM3HgmNDRDA,6038
50
- qtype/interpreter/chat/chat_api.py,sha256=-YAIyVATRbHR3sCqH-iOwsR73sv6UnVCHZXzVWlkSNA,9042
51
- qtype/interpreter/chat/file_conversions.py,sha256=7_XWDFQwWVoYgA-mY4EknhOJrMKeybDzqA3VBJM5Psw,1751
52
- qtype/interpreter/chat/vercel.py,sha256=yKjFFk2wXDbtvaDTXlES9d9mvLVPXu-g_iXDjKfOlIM,7261
53
- qtype/interpreter/steps/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
54
- qtype/interpreter/steps/agent.py,sha256=Yg56YjTlrwc4oJ-f7ZBazF4ii2oJX8zMhETHF0-ArAU,4008
55
- qtype/interpreter/steps/condition.py,sha256=E86aRWQpjz18QuKwcGyoIPoOKAvTDZgnpg9qXw6xYas,1128
56
- qtype/interpreter/steps/decoder.py,sha256=toKiZHpM3_y6imV8xQXmAOvGGFhqJzXaWlM1HLIyOzw,2993
57
- qtype/interpreter/steps/llm_inference.py,sha256=k7OD40QT95AfjMjAk-5nxCjYCnDe4RdNgIV0Cqn5R8A,5419
58
- qtype/interpreter/steps/prompt_template.py,sha256=tK1j6DTUMvlDMcJZDGQ2lLgwq_LkaICIq0U5u-QK_WU,1597
59
- qtype/interpreter/steps/search.py,sha256=wyVFwg5wVXytsm2JyNPwkuBAWpxEunP-dAiqhDZyii4,660
60
- qtype/interpreter/steps/tool.py,sha256=zAL9us_KRrcaw_sktD1z2pm0Z2W9ruMd3rrjqk7TI_k,1996
61
- qtype/interpreter/ui/404.html,sha256=K5zBsOVZB0Lh7R4BogHR_h4NU4sbBSP97ZL5dwlWiM0,6869
62
- qtype/interpreter/ui/favicon.ico,sha256=K4rS0zRVqPc2_DqOv48L3qiEitTA20iigzvQ-c13WTI,25931
63
- qtype/interpreter/ui/file.svg,sha256=K2eBLDJcGZoCU2zb7qDFk6cvcH0yO3LuPgjbqwZ1O9Q,391
64
- qtype/interpreter/ui/globe.svg,sha256=thS5vxg5JZV2YayFFJj-HYAp_UOmL7_thvniYkpX588,1035
65
- qtype/interpreter/ui/index.html,sha256=7VzTqVFXjI3NKv4wMtwUGMcDOMJxBevJ9d7XQpzcGbU,6391
66
- qtype/interpreter/ui/index.txt,sha256=Hs_t7FgIDjYIrtDdhY4tUmwwjRtCk9FAG07S-FmafP8,3611
67
- qtype/interpreter/ui/next.svg,sha256=VZld-tbstJRaHoVt3KA8XhaqW_E_0htN9qdK55NXvPw,1375
68
- qtype/interpreter/ui/vercel.svg,sha256=8IEzey_uY1tFW2MnVAaj5_OdagFOJa2Q2rWmfmKhKsQ,128
69
- qtype/interpreter/ui/window.svg,sha256=ZEdoxKrrR2e84pM0TusMEl-4BKlNgBRAQkByIC2F46E,385
70
- qtype/interpreter/ui/404/index.html,sha256=K5zBsOVZB0Lh7R4BogHR_h4NU4sbBSP97ZL5dwlWiM0,6869
71
- qtype/interpreter/ui/_next/static/OT8QJQW3J70VbDWWfrEMT/_buildManifest.js,sha256=j1u6BhF-PCQQBDiSp0UbEYyjZ1-hjTIIosO4Tx9e3KI,544
72
- qtype/interpreter/ui/_next/static/OT8QJQW3J70VbDWWfrEMT/_ssgManifest.js,sha256=Z49s4suAsf5y_GfnQSvm4qtq2ggxEbZPfEDTXjy6XgA,80
73
- qtype/interpreter/ui/_next/static/chunks/4bd1b696-cf72ae8a39fa05aa.js,sha256=LZF4GSB27wWEGfcZ8svgftIhKsR-dbSEPQOMFE1UMZk,172729
74
- qtype/interpreter/ui/_next/static/chunks/736-7fc606e244fedcb1.js,sha256=yNH_WyfbOoWw0NRsePJlqmHvPCmDN3w2244GCXmOfVc,337788
75
- qtype/interpreter/ui/_next/static/chunks/964-ed4ab073db645007.js,sha256=v5dtcpE2ZECkVNy0i9L7x835eE3qyfQ3yUQ95r1dTb8,166060
76
- qtype/interpreter/ui/_next/static/chunks/ba12c10f-22556063851a6df2.js,sha256=eXW_aPZ8VSINIvVP-NviGhRkDqxNFH58YFNVtZv_DC0,26277
77
- qtype/interpreter/ui/_next/static/chunks/framework-7c95b8e5103c9e90.js,sha256=DOKGYsI-E-_-bPetqL9T2YAkmfJw74DS4rMmb0q-Nu4,182720
78
- qtype/interpreter/ui/_next/static/chunks/main-6d261b6c5d6fb6c2.js,sha256=LmsLY5w7lACmWyCyKhqJDnAMmk1ffssrNmCbtzWjM_o,117652
79
- qtype/interpreter/ui/_next/static/chunks/main-app-6fc6346bc8f7f163.js,sha256=1ZmGHUk2IyojKisUhbDSHd92tWVBzkjQFWXfHfa6xGw,557
80
- qtype/interpreter/ui/_next/static/chunks/polyfills-42372ed130431b0a.js,sha256=CXPB1kyIrcjjyVBBDLWLKI9yEY1ZZbeASUON648vloM,112594
81
- qtype/interpreter/ui/_next/static/chunks/webpack-8289c17c67827f22.js,sha256=xGAsqiCnTkzrQhTmQAoMy45UIK7SPjOOC_0fA4qJe68,3344
82
- qtype/interpreter/ui/_next/static/chunks/app/layout-5ccbc44fd528d089.js,sha256=wVtButfgWSCi8dj8zkWwpIXVYN5ot8pj9IKOgXixDVQ,589
83
- qtype/interpreter/ui/_next/static/chunks/app/page-c72e847e888e549d.js,sha256=efrxDdRrxeLPaS_c-jdZFRDo7xaeqklfuRbvBxRpavM,35662
84
- qtype/interpreter/ui/_next/static/chunks/app/_not-found/page-e110d2a9d0a83d82.js,sha256=0vU7y8ruY2D5Gsa9ymwbZeK7yZbfPDm0yYiQ8SG8ZmI,2670
85
- qtype/interpreter/ui/_next/static/chunks/pages/_app-0a0020ddd67f79cf.js,sha256=42mX-qEGt0LNFAAUjOhcM71wHqZHO_xQFM53G5WPiSc,233
86
- qtype/interpreter/ui/_next/static/chunks/pages/_error-03529f2c21436739.js,sha256=m8CkMJwrMUfIvaSXNXOsO6TOxsWPXQjBa9R52GCvaQk,218
87
- qtype/interpreter/ui/_next/static/css/a262c53826df929b.css,sha256=5HQ8Q1p6A9NJKRYWqPWPqWZkOtuKL3BU6OgBa_bh8Sk,40788
88
- qtype/interpreter/ui/_next/static/media/569ce4b8f30dc480-s.p.woff2,sha256=G16_s6AalzQ6yWhz5tWajLKFxmAStqGsUJyydl6ZW6g,28356
89
- qtype/interpreter/ui/_next/static/media/747892c23ea88013-s.woff2,sha256=fVYJU4p5VF7JReAZdx7VYuLGWmwcPEzMTqNDcuJ3w5Y,13036
90
- qtype/interpreter/ui/_next/static/media/8d697b304b401681-s.woff2,sha256=L-8o3IIethe91jtC7gxTC4zX1J0g83yrYaTKeWUUpwM,14676
91
- qtype/interpreter/ui/_next/static/media/93f479601ee12b01-s.p.woff2,sha256=t6wUSzlMvYEFLWOX7AwzOXl3sdfpvAledE5lKjeMb7M,31288
92
- qtype/interpreter/ui/_next/static/media/9610d9e46709d722-s.woff2,sha256=N08hXnJfWWXM9XN7Rteie_5rOzIOaof0kGjkiIksSAk,12608
93
- qtype/interpreter/ui/_next/static/media/ba015fad6dcf6784-s.woff2,sha256=92BKU6ACUPZttLR91EMnzipD9u3shQ1SF7uAI4gZ790,15292
94
- qtype/semantic/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
95
- qtype/semantic/base_types.py,sha256=wfUlT0gV3_Mk1xLLI64SSXCB9GFmn29yz5adTaHrsOI,1540
96
- qtype/semantic/generate.py,sha256=4xYDSz7sJG-py4MqLP1ePZjm5uwvAmOxsNRfF1NZFWY,15369
97
- qtype/semantic/model.py,sha256=pFFUuLgKIKac9-vgPkv3m9wL5hjaGGuNrcUptnKgt3o,15256
98
- qtype/semantic/resolver.py,sha256=rhePhY1m4h-qYZucIcBcu0DMocjlOs5OVSbhR5HZ2xo,3404
99
- qtype/semantic/visualize.py,sha256=8eHKgiPOqbJIEd7LUQ1PiSO0RF6GUrnBQue9tV6EbMU,16924
100
- qtype-0.0.12.dist-info/licenses/LICENSE,sha256=1KA5EgYBSR0O6nCH2HEvk6Di53YKJ9r_VCR7G8G8qAY,11341
101
- qtype-0.0.12.dist-info/METADATA,sha256=o4iYQxFZQyK9By7ozLQJx8ZVmlL_1Pez4ilCbrfLAq8,4589
102
- qtype-0.0.12.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
103
- qtype-0.0.12.dist-info/entry_points.txt,sha256=5y4vj8RLvgl2tXSj-Hm7v5-Tn3kP4-UonjNoN-mfaQE,41
104
- qtype-0.0.12.dist-info/top_level.txt,sha256=ONroH5B0mZ51jr7NSWCK0weFwwCO7wBLmyVS1YqNU14,6
105
- qtype-0.0.12.dist-info/RECORD,,
File without changes