qtype 0.0.16__py3-none-any.whl → 0.1.1__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 (128) hide show
  1. qtype/application/commons/tools.py +1 -1
  2. qtype/application/converters/tools_from_api.py +5 -5
  3. qtype/application/converters/tools_from_module.py +2 -2
  4. qtype/application/converters/types.py +14 -43
  5. qtype/application/documentation.py +1 -1
  6. qtype/application/facade.py +94 -73
  7. qtype/base/types.py +227 -7
  8. qtype/cli.py +4 -0
  9. qtype/commands/convert.py +20 -8
  10. qtype/commands/generate.py +19 -27
  11. qtype/commands/run.py +73 -36
  12. qtype/commands/serve.py +74 -54
  13. qtype/commands/validate.py +34 -8
  14. qtype/commands/visualize.py +46 -22
  15. qtype/dsl/__init__.py +6 -5
  16. qtype/dsl/custom_types.py +1 -1
  17. qtype/dsl/domain_types.py +65 -5
  18. qtype/dsl/linker.py +384 -0
  19. qtype/dsl/loader.py +315 -0
  20. qtype/dsl/model.py +612 -363
  21. qtype/dsl/parser.py +200 -0
  22. qtype/dsl/types.py +50 -0
  23. qtype/interpreter/api.py +57 -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 +74 -0
  30. qtype/interpreter/base/factory.py +117 -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 +462 -22
  36. qtype/interpreter/converters.py +77 -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/decoder_executor.py +163 -0
  41. qtype/interpreter/executors/doc_to_text_executor.py +112 -0
  42. qtype/interpreter/executors/document_embedder_executor.py +107 -0
  43. qtype/interpreter/executors/document_search_executor.py +122 -0
  44. qtype/interpreter/executors/document_source_executor.py +118 -0
  45. qtype/interpreter/executors/document_splitter_executor.py +105 -0
  46. qtype/interpreter/executors/echo_executor.py +63 -0
  47. qtype/interpreter/executors/field_extractor_executor.py +160 -0
  48. qtype/interpreter/executors/file_source_executor.py +101 -0
  49. qtype/interpreter/executors/file_writer_executor.py +110 -0
  50. qtype/interpreter/executors/index_upsert_executor.py +228 -0
  51. qtype/interpreter/executors/invoke_embedding_executor.py +92 -0
  52. qtype/interpreter/executors/invoke_flow_executor.py +51 -0
  53. qtype/interpreter/executors/invoke_tool_executor.py +358 -0
  54. qtype/interpreter/executors/llm_inference_executor.py +272 -0
  55. qtype/interpreter/executors/prompt_template_executor.py +78 -0
  56. qtype/interpreter/executors/sql_source_executor.py +106 -0
  57. qtype/interpreter/executors/vector_search_executor.py +91 -0
  58. qtype/interpreter/flow.py +159 -22
  59. qtype/interpreter/metadata_api.py +115 -0
  60. qtype/interpreter/resource_cache.py +5 -4
  61. qtype/interpreter/rich_progress.py +225 -0
  62. qtype/interpreter/stream/chat/__init__.py +15 -0
  63. qtype/interpreter/stream/chat/converter.py +391 -0
  64. qtype/interpreter/{chat → stream/chat}/file_conversions.py +2 -2
  65. qtype/interpreter/stream/chat/ui_request_to_domain_type.py +140 -0
  66. qtype/interpreter/stream/chat/vercel.py +609 -0
  67. qtype/interpreter/stream/utils/__init__.py +15 -0
  68. qtype/interpreter/stream/utils/build_vercel_ai_formatter.py +74 -0
  69. qtype/interpreter/stream/utils/callback_to_stream.py +66 -0
  70. qtype/interpreter/stream/utils/create_streaming_response.py +18 -0
  71. qtype/interpreter/stream/utils/default_chat_extract_text.py +20 -0
  72. qtype/interpreter/stream/utils/error_streaming_response.py +20 -0
  73. qtype/interpreter/telemetry.py +135 -8
  74. qtype/interpreter/tools/__init__.py +5 -0
  75. qtype/interpreter/tools/function_tool_helper.py +265 -0
  76. qtype/interpreter/types.py +330 -0
  77. qtype/interpreter/typing.py +83 -89
  78. qtype/interpreter/ui/404/index.html +1 -1
  79. qtype/interpreter/ui/404.html +1 -1
  80. qtype/interpreter/ui/_next/static/{nUaw6_IwRwPqkzwe5s725 → 20HoJN6otZ_LyHLHpCPE6}/_buildManifest.js +1 -1
  81. qtype/interpreter/ui/_next/static/chunks/{393-8fd474427f8e19ce.js → 434-b2112d19f25c44ff.js} +3 -3
  82. qtype/interpreter/ui/_next/static/chunks/app/page-8c67d16ac90d23cb.js +1 -0
  83. qtype/interpreter/ui/_next/static/chunks/ba12c10f-546f2714ff8abc66.js +1 -0
  84. qtype/interpreter/ui/_next/static/css/8a8d1269e362fef7.css +3 -0
  85. qtype/interpreter/ui/icon.png +0 -0
  86. qtype/interpreter/ui/index.html +1 -1
  87. qtype/interpreter/ui/index.txt +4 -4
  88. qtype/semantic/checker.py +583 -0
  89. qtype/semantic/generate.py +262 -83
  90. qtype/semantic/loader.py +95 -0
  91. qtype/semantic/model.py +436 -159
  92. qtype/semantic/resolver.py +63 -19
  93. qtype/semantic/visualize.py +28 -31
  94. {qtype-0.0.16.dist-info → qtype-0.1.1.dist-info}/METADATA +16 -3
  95. qtype-0.1.1.dist-info/RECORD +135 -0
  96. qtype/dsl/base_types.py +0 -38
  97. qtype/dsl/validator.py +0 -465
  98. qtype/interpreter/batch/__init__.py +0 -0
  99. qtype/interpreter/batch/file_sink_source.py +0 -162
  100. qtype/interpreter/batch/flow.py +0 -95
  101. qtype/interpreter/batch/sql_source.py +0 -92
  102. qtype/interpreter/batch/step.py +0 -74
  103. qtype/interpreter/batch/types.py +0 -41
  104. qtype/interpreter/batch/utils.py +0 -178
  105. qtype/interpreter/chat/chat_api.py +0 -237
  106. qtype/interpreter/chat/vercel.py +0 -314
  107. qtype/interpreter/exceptions.py +0 -10
  108. qtype/interpreter/step.py +0 -67
  109. qtype/interpreter/steps/__init__.py +0 -0
  110. qtype/interpreter/steps/agent.py +0 -114
  111. qtype/interpreter/steps/condition.py +0 -36
  112. qtype/interpreter/steps/decoder.py +0 -88
  113. qtype/interpreter/steps/llm_inference.py +0 -171
  114. qtype/interpreter/steps/prompt_template.py +0 -54
  115. qtype/interpreter/steps/search.py +0 -24
  116. qtype/interpreter/steps/tool.py +0 -219
  117. qtype/interpreter/streaming_helpers.py +0 -123
  118. qtype/interpreter/ui/_next/static/chunks/app/page-7e26b6156cfb55d3.js +0 -1
  119. qtype/interpreter/ui/_next/static/chunks/ba12c10f-22556063851a6df2.js +0 -1
  120. qtype/interpreter/ui/_next/static/css/b40532b0db09cce3.css +0 -3
  121. qtype/interpreter/ui/favicon.ico +0 -0
  122. qtype/loader.py +0 -390
  123. qtype-0.0.16.dist-info/RECORD +0 -106
  124. /qtype/interpreter/ui/_next/static/{nUaw6_IwRwPqkzwe5s725 → 20HoJN6otZ_LyHLHpCPE6}/_ssgManifest.js +0 -0
  125. {qtype-0.0.16.dist-info → qtype-0.1.1.dist-info}/WHEEL +0 -0
  126. {qtype-0.0.16.dist-info → qtype-0.1.1.dist-info}/entry_points.txt +0 -0
  127. {qtype-0.0.16.dist-info → qtype-0.1.1.dist-info}/licenses/LICENSE +0 -0
  128. {qtype-0.0.16.dist-info → qtype-0.1.1.dist-info}/top_level.txt +0 -0
qtype/loader.py DELETED
@@ -1,390 +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
- if isinstance(loaded_yaml, dict):
351
- rv.extend(loaded_yaml.get("types", []))
352
-
353
- # check for TypeList by seeing if we have root + custom types
354
- if "root" in loaded_yaml:
355
- root = loaded_yaml["root"]
356
- if (
357
- isinstance(root, list)
358
- and len(root) > 0
359
- and "properties" in root[0]
360
- ):
361
- rv.extend(root)
362
-
363
- # call recursively for any references
364
- if "references" in loaded_yaml:
365
- for ref in loaded_yaml["references"]:
366
- rv.extend(_list_dynamic_types_from_document(ref))
367
- return rv
368
-
369
-
370
- def load_document(content: str) -> tuple[DocumentRootType, CustomTypeRegistry]:
371
- """Load a QType YAML file, validate it, and return the resolved root."""
372
- yaml_data = load_yaml(content)
373
- dynamic_types_lists = _list_dynamic_types_from_document(yaml_data)
374
- dynamic_types_registry = build_dynamic_types(dynamic_types_lists)
375
- document = dsl.Document.model_validate(
376
- yaml_data, context={"custom_types": dynamic_types_registry}
377
- )
378
- root = _resolve_root(document)
379
- return root, dynamic_types_registry
380
-
381
-
382
- def load(content: str) -> tuple[Application, CustomTypeRegistry]:
383
- """Load a QType YAML file, validate it, and return the resolved root."""
384
- root, dynamic_types_registry = load_document(content)
385
- if not isinstance(root, dsl.Application):
386
- raise ValueError(
387
- f"Root document is not an Application, found {type(root)}."
388
- )
389
- root = validate(root)
390
- return resolve(root), dynamic_types_registry
@@ -1,106 +0,0 @@
1
- qtype/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
2
- qtype/cli.py,sha256=XSVtfzpjTbQBQ60iyb5oupwi-mFpGH5jT8H1bJQdjis,4697
3
- qtype/loader.py,sha256=F28bWK9ryrgpJ59XKHUBgWHZPGNXH0fpIWAqWTzZpYw,12824
4
- qtype/application/__init__.py,sha256=WS3x0b0NRt-nRmj1trsytlvMpQS5KN7Hi6THGfY8bKE,230
5
- qtype/application/documentation.py,sha256=_ftD344BS7xca6zxjAoiUzTyBrLTtH4iDXUkN4OO4Hs,4992
6
- qtype/application/facade.py,sha256=mnZru9lQeI0_G7I0oApkIYAYB2KYrP7DQK9dGOj2qCQ,5546
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=nLdp5dNGoLXVEJHUsdQhadpnte7_rRCW3IZMVwd_-IE,16902
11
- qtype/application/converters/tools_from_module.py,sha256=lQru1WUBw2Cs184Gw3S5FjytHlnsrDpY5U4e3PaE9ww,9071
12
- qtype/application/converters/types.py,sha256=LWdgaz2k3EJc3c6OLF9wzwA2cwdMjJtrLCiB5aG3T2c,1608
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=2t55QeJxs6RDXKx0mqIZXPOzuzjAyaq0oTnOsfgwAMI,4288
19
- qtype/commands/generate.py,sha256=RHqAYGvuxhoMWI-X6l26PfjSJ7Mn3N6qwpZW0c8Tc3s,7413
20
- qtype/commands/run.py,sha256=tZc4-VaXpW2WN5kazxL54ZGLGF2pPfvtZZ3fRxpTGNE,5118
21
- qtype/commands/serve.py,sha256=mF5T4cxmUuu8-VXmhFTnnGAtVYbrANb0cS-M2HnNChA,2804
22
- qtype/commands/validate.py,sha256=GUIE3aieGnCKc66NGXLWrFFDRI5MwkakRvRdr2xv180,2164
23
- qtype/commands/visualize.py,sha256=kGLR9rssfEd9WcNbhG2m3a5-SMEyG8UqkB6pCQ7w9l8,2898
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=POUDwNm74dTstcRb5Ens-DSpA8r9e1DtGbTm5KA8X74,31190
29
- qtype/dsl/validator.py,sha256=j-Jb6uHNF9JwOFs1P-iaMyakhjLR7taJn6HKQuY3WfA,18278
30
- qtype/interpreter/__init__.py,sha256=IaRF90JLFbsTLKz9LTOMI_Pz4xwVaEyXPNaXV7sLou8,43
31
- qtype/interpreter/api.py,sha256=kvd1tOgJGeVE2fXaHzXwPS0YOEt_kFnoVLRF_4QPOl8,7827
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=uXalSGwhnGehqQ9lWUDBVTS5I8zZQHsvbMkrTspMqF8,2088
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/file_sink_source.py,sha256=BDnL6isbpjiq79rHuB_9IIq4S6-uaLjzn2lJrvENi4E,6069
46
- qtype/interpreter/batch/flow.py,sha256=OMKMBEktfAy1FonIS7QGtPu8AhZ8SuRxgwyp8atfsEk,3125
47
- qtype/interpreter/batch/sql_source.py,sha256=tmsD0d_CUSuKfXiWPLcvVwNgL1YRvt4Ux7Eb-4hy8Co,3285
48
- qtype/interpreter/batch/step.py,sha256=50beCiybSD0PyyOAA7kH3VM3M1yzqAv4AO2mMcjgiTE,2339
49
- qtype/interpreter/batch/types.py,sha256=3EMzsaFrEtcY2FFvMHvbRm54n34EMoe-mtJV68LAkKg,1098
50
- qtype/interpreter/batch/utils.py,sha256=rrxE9HCkhBrlLW5zXQOPc_V_hVdaILlz-12vpOwKK3E,6013
51
- qtype/interpreter/chat/chat_api.py,sha256=-YAIyVATRbHR3sCqH-iOwsR73sv6UnVCHZXzVWlkSNA,9042
52
- qtype/interpreter/chat/file_conversions.py,sha256=7_XWDFQwWVoYgA-mY4EknhOJrMKeybDzqA3VBJM5Psw,1751
53
- qtype/interpreter/chat/vercel.py,sha256=yKjFFk2wXDbtvaDTXlES9d9mvLVPXu-g_iXDjKfOlIM,7261
54
- qtype/interpreter/steps/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
55
- qtype/interpreter/steps/agent.py,sha256=Yg56YjTlrwc4oJ-f7ZBazF4ii2oJX8zMhETHF0-ArAU,4008
56
- qtype/interpreter/steps/condition.py,sha256=E86aRWQpjz18QuKwcGyoIPoOKAvTDZgnpg9qXw6xYas,1128
57
- qtype/interpreter/steps/decoder.py,sha256=toKiZHpM3_y6imV8xQXmAOvGGFhqJzXaWlM1HLIyOzw,2993
58
- qtype/interpreter/steps/llm_inference.py,sha256=jnRqcTx7yIbJ5Sbi1hjeJUGBw9eOHwgUhe-f-XmngyI,6218
59
- qtype/interpreter/steps/prompt_template.py,sha256=tK1j6DTUMvlDMcJZDGQ2lLgwq_LkaICIq0U5u-QK_WU,1597
60
- qtype/interpreter/steps/search.py,sha256=wyVFwg5wVXytsm2JyNPwkuBAWpxEunP-dAiqhDZyii4,660
61
- qtype/interpreter/steps/tool.py,sha256=SNY1SOTpydwo-P-zf1w2EU9tFkXy9YrfjdI9AP2Kbe8,7276
62
- qtype/interpreter/ui/404.html,sha256=P_B0hGVm0xvTQb70iwmF9eNRttE01ibyxYVg_CcKr3Y,6869
63
- qtype/interpreter/ui/favicon.ico,sha256=K4rS0zRVqPc2_DqOv48L3qiEitTA20iigzvQ-c13WTI,25931
64
- qtype/interpreter/ui/file.svg,sha256=K2eBLDJcGZoCU2zb7qDFk6cvcH0yO3LuPgjbqwZ1O9Q,391
65
- qtype/interpreter/ui/globe.svg,sha256=thS5vxg5JZV2YayFFJj-HYAp_UOmL7_thvniYkpX588,1035
66
- qtype/interpreter/ui/index.html,sha256=RvBAeJOkoGprrxtr88p_H5czxy8StzE238TUr4iiCxA,6391
67
- qtype/interpreter/ui/index.txt,sha256=5tAY6-b7nN9MyROx3YD_bF7qtffrDK2ghALMUlM5PsA,3611
68
- qtype/interpreter/ui/next.svg,sha256=VZld-tbstJRaHoVt3KA8XhaqW_E_0htN9qdK55NXvPw,1375
69
- qtype/interpreter/ui/vercel.svg,sha256=8IEzey_uY1tFW2MnVAaj5_OdagFOJa2Q2rWmfmKhKsQ,128
70
- qtype/interpreter/ui/window.svg,sha256=ZEdoxKrrR2e84pM0TusMEl-4BKlNgBRAQkByIC2F46E,385
71
- qtype/interpreter/ui/404/index.html,sha256=P_B0hGVm0xvTQb70iwmF9eNRttE01ibyxYVg_CcKr3Y,6869
72
- qtype/interpreter/ui/_next/static/chunks/393-8fd474427f8e19ce.js,sha256=JgvozqVYdt4S-7ajdwi32lrTriPcR6lxRuIRK8zW2UQ,482248
73
- qtype/interpreter/ui/_next/static/chunks/4bd1b696-cf72ae8a39fa05aa.js,sha256=LZF4GSB27wWEGfcZ8svgftIhKsR-dbSEPQOMFE1UMZk,172729
74
- qtype/interpreter/ui/_next/static/chunks/964-2b041321a01cbf56.js,sha256=bNvMJDSoselMWYBOle3aNrTUGI5QH4fqwFJylKAOQBI,166060
75
- qtype/interpreter/ui/_next/static/chunks/ba12c10f-22556063851a6df2.js,sha256=eXW_aPZ8VSINIvVP-NviGhRkDqxNFH58YFNVtZv_DC0,26277
76
- qtype/interpreter/ui/_next/static/chunks/framework-7c95b8e5103c9e90.js,sha256=DOKGYsI-E-_-bPetqL9T2YAkmfJw74DS4rMmb0q-Nu4,182720
77
- qtype/interpreter/ui/_next/static/chunks/main-app-6fc6346bc8f7f163.js,sha256=1ZmGHUk2IyojKisUhbDSHd92tWVBzkjQFWXfHfa6xGw,557
78
- qtype/interpreter/ui/_next/static/chunks/main-e26b9cb206da2cac.js,sha256=RyWVg7xUCd25ftCvewNChywH-GzG0ndCwzfxUk6FAik,117652
79
- qtype/interpreter/ui/_next/static/chunks/polyfills-42372ed130431b0a.js,sha256=CXPB1kyIrcjjyVBBDLWLKI9yEY1ZZbeASUON648vloM,112594
80
- qtype/interpreter/ui/_next/static/chunks/webpack-08642e441b39b6c2.js,sha256=pKy0RNL4jzGXP3Xpxl2t9xP7WcPL31k5EN26E7sDDMY,3359
81
- qtype/interpreter/ui/_next/static/chunks/app/layout-a05273ead5de2c41.js,sha256=dJnsPHn-pQkAnEQyKEW3qbIoj3TWzqGj8E0H4ou6jUQ,589
82
- qtype/interpreter/ui/_next/static/chunks/app/page-7e26b6156cfb55d3.js,sha256=jyMYcloCI_ZNdtHLhMc4CVFDUEgMYiIQ1RVMX8AK5nw,38390
83
- qtype/interpreter/ui/_next/static/chunks/app/_not-found/page-e110d2a9d0a83d82.js,sha256=0vU7y8ruY2D5Gsa9ymwbZeK7yZbfPDm0yYiQ8SG8ZmI,2670
84
- qtype/interpreter/ui/_next/static/chunks/pages/_app-0a0020ddd67f79cf.js,sha256=42mX-qEGt0LNFAAUjOhcM71wHqZHO_xQFM53G5WPiSc,233
85
- qtype/interpreter/ui/_next/static/chunks/pages/_error-03529f2c21436739.js,sha256=m8CkMJwrMUfIvaSXNXOsO6TOxsWPXQjBa9R52GCvaQk,218
86
- qtype/interpreter/ui/_next/static/css/b40532b0db09cce3.css,sha256=T_84B0m2ePL8Y45PJardTKqEGZnJg7ydQ7-srE6Tu8c,42021
87
- qtype/interpreter/ui/_next/static/media/4cf2300e9c8272f7-s.p.woff2,sha256=op-QCm1gPpiUSTJ5VuesYeo-aybKdCb2TnzM8s1K7Tc,28388
88
- qtype/interpreter/ui/_next/static/media/747892c23ea88013-s.woff2,sha256=fVYJU4p5VF7JReAZdx7VYuLGWmwcPEzMTqNDcuJ3w5Y,13036
89
- qtype/interpreter/ui/_next/static/media/8d697b304b401681-s.woff2,sha256=L-8o3IIethe91jtC7gxTC4zX1J0g83yrYaTKeWUUpwM,14676
90
- qtype/interpreter/ui/_next/static/media/93f479601ee12b01-s.p.woff2,sha256=t6wUSzlMvYEFLWOX7AwzOXl3sdfpvAledE5lKjeMb7M,31288
91
- qtype/interpreter/ui/_next/static/media/9610d9e46709d722-s.woff2,sha256=N08hXnJfWWXM9XN7Rteie_5rOzIOaof0kGjkiIksSAk,12608
92
- qtype/interpreter/ui/_next/static/media/ba015fad6dcf6784-s.woff2,sha256=92BKU6ACUPZttLR91EMnzipD9u3shQ1SF7uAI4gZ790,15292
93
- qtype/interpreter/ui/_next/static/nUaw6_IwRwPqkzwe5s725/_buildManifest.js,sha256=j1u6BhF-PCQQBDiSp0UbEYyjZ1-hjTIIosO4Tx9e3KI,544
94
- qtype/interpreter/ui/_next/static/nUaw6_IwRwPqkzwe5s725/_ssgManifest.js,sha256=Z49s4suAsf5y_GfnQSvm4qtq2ggxEbZPfEDTXjy6XgA,80
95
- qtype/semantic/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
96
- qtype/semantic/base_types.py,sha256=wfUlT0gV3_Mk1xLLI64SSXCB9GFmn29yz5adTaHrsOI,1540
97
- qtype/semantic/generate.py,sha256=c7yzVmzNyOqWdlbofR1FY8QyeiLYddnIdSsd6VvyY0c,15454
98
- qtype/semantic/model.py,sha256=HoG6rawJ7UuaDbME9QgQke8lOJYUNdawZBBZucNxPbc,16582
99
- qtype/semantic/resolver.py,sha256=rhePhY1m4h-qYZucIcBcu0DMocjlOs5OVSbhR5HZ2xo,3404
100
- qtype/semantic/visualize.py,sha256=ZFXBBxqRkX9vXNoCQAReYU7HB3Ecmsm5sQBMEox8ZNU,17444
101
- qtype-0.0.16.dist-info/licenses/LICENSE,sha256=1KA5EgYBSR0O6nCH2HEvk6Di53YKJ9r_VCR7G8G8qAY,11341
102
- qtype-0.0.16.dist-info/METADATA,sha256=5Jafu7CEKPiuG0z3CARPv5WI0Gb7r-9IqPPRbOizEIQ,4737
103
- qtype-0.0.16.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
104
- qtype-0.0.16.dist-info/entry_points.txt,sha256=5y4vj8RLvgl2tXSj-Hm7v5-Tn3kP4-UonjNoN-mfaQE,41
105
- qtype-0.0.16.dist-info/top_level.txt,sha256=ONroH5B0mZ51jr7NSWCK0weFwwCO7wBLmyVS1YqNU14,6
106
- qtype-0.0.16.dist-info/RECORD,,
File without changes