qtype 0.1.12__py3-none-any.whl → 0.1.14__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 (272) hide show
  1. qtype/` +0 -0
  2. qtype/application/__init__.py +0 -2
  3. qtype/application/converters/tools_from_api.py +28 -22
  4. qtype/application/converters/tools_from_module.py +66 -32
  5. qtype/base/__init__.py +8 -2
  6. qtype/base/logging.py +0 -17
  7. qtype/base/resources.py +193 -0
  8. qtype/cli.py +5 -9
  9. qtype/commands/generate.py +95 -7
  10. qtype/commands/run.py +153 -54
  11. qtype/docs/.pages +8 -0
  12. {docs → qtype/docs}/Concepts/mental-model-and-philosophy.md +1 -1
  13. qtype/docs/Contributing/.pages +4 -0
  14. {docs → qtype/docs}/Contributing/index.md +8 -1
  15. {docs → qtype/docs}/Gallery/dataflow_pipelines.md +18 -4
  16. qtype/docs/Gallery/recipe_chatbot.md +103 -0
  17. qtype/docs/Gallery/recipe_chatbot.mermaid +62 -0
  18. qtype/docs/Gallery/recipe_chatbot.png +0 -0
  19. {docs → qtype/docs}/Gallery/research_assistant.md +4 -5
  20. {docs → qtype/docs}/Gallery/simple_chatbot.md +3 -1
  21. {docs → qtype/docs}/How To/Authentication/configure_aws_authentication.md +2 -2
  22. {docs → qtype/docs}/How To/Authentication/use_api_key_authentication.md +2 -2
  23. {docs → qtype/docs}/How To/Command Line Usage/load_multiple_inputs_from_files.md +24 -9
  24. {docs → qtype/docs}/How To/Command Line Usage/pass_inputs_on_the_cli.md +7 -4
  25. {docs → qtype/docs}/How To/Command Line Usage/serve_with_auto_reload.md +3 -2
  26. {docs → qtype/docs}/How To/Data Processing/adjust_concurrency.md +3 -4
  27. {docs → qtype/docs}/How To/Data Processing/cache_step_results.md +2 -2
  28. {docs → qtype/docs}/How To/Data Processing/decode_json_xml.md +1 -1
  29. {docs → qtype/docs}/How To/Data Processing/explode_collections.md +2 -2
  30. {docs → qtype/docs}/How To/Data Processing/gather_results.md +4 -4
  31. qtype/docs/How To/Data Processing/invoke_other_flows.md +71 -0
  32. qtype/docs/How To/Data Processing/load_data_from_athena.md +49 -0
  33. qtype/docs/How To/Data Processing/load_documents.md +74 -0
  34. qtype/docs/How To/Data Processing/read_data_from_files.md +61 -0
  35. {docs → qtype/docs}/How To/Data Processing/read_sql_databases.md +4 -3
  36. {docs → qtype/docs}/How To/Data Processing/write_data_to_file.md +1 -2
  37. {docs → qtype/docs}/How To/Invoke Models/call_large_language_models.md +1 -1
  38. {docs → qtype/docs}/How To/Invoke Models/create_embeddings.md +1 -1
  39. {docs → qtype/docs}/How To/Invoke Models/reuse_prompts_with_templates.md +2 -3
  40. {docs → qtype/docs}/How To/Language Features/include_raw_text_from_other_files.md +2 -1
  41. {docs → qtype/docs}/How To/Language Features/reference_entities_by_id.md +2 -2
  42. qtype/docs/How To/Language Features/use_agent_skills.md +29 -0
  43. {docs → qtype/docs}/How To/Language Features/use_environment_variables.md +2 -1
  44. qtype/docs/How To/Language Features/use_optional_variables.md +42 -0
  45. {docs → qtype/docs}/How To/Language Features/use_qtype_mcp.md +4 -4
  46. {docs → qtype/docs}/How To/Observability & Debugging/trace_calls_with_open_telemetry.md +1 -1
  47. {docs → qtype/docs}/How To/Observability & Debugging/validate_qtype_yaml.md +3 -2
  48. {docs → qtype/docs}/How To/Observability & Debugging/visualize_application_architecture.md +1 -1
  49. {docs → qtype/docs}/How To/Qtype Server/serve_flows_as_apis.md +3 -3
  50. {docs → qtype/docs}/How To/Qtype Server/serve_flows_as_ui.md +2 -3
  51. {docs → qtype/docs}/How To/Qtype Server/use_conversational_interfaces.md +1 -4
  52. {docs → qtype/docs}/How To/Qtype Server/use_variables_with_ui_hints.md +3 -2
  53. {docs → qtype/docs}/How To/Tools & Integration/bind_tool_inputs_and_outputs.md +1 -2
  54. {docs → qtype/docs}/How To/Tools & Integration/create_tools_from_openapi_specifications.md +10 -14
  55. {docs → qtype/docs}/How To/Tools & Integration/create_tools_from_python_modules.md +5 -8
  56. {docs → qtype/docs}/Reference/cli.md +16 -17
  57. qtype/docs/Tutorials/.pages +1 -0
  58. {docs → qtype/docs}/Tutorials/01-first-qtype-application.md +4 -3
  59. {docs → qtype/docs}/Tutorials/02-conversational-chatbot.md +3 -3
  60. {docs → qtype/docs}/Tutorials/03-structured-data.md +10 -11
  61. {docs → qtype/docs}/Tutorials/04-tools-and-function-calling.md +13 -20
  62. {docs → qtype/docs}/components/APITool.md +1 -1
  63. qtype/docs/components/Aggregate.md +7 -0
  64. qtype/docs/components/Collect.md +6 -0
  65. qtype/docs/components/Construct.md +6 -0
  66. {docs → qtype/docs}/components/DocumentEmbedder.md +0 -1
  67. {docs → qtype/docs}/components/DocumentSplitter.md +0 -1
  68. qtype/docs/components/Explode.md +5 -0
  69. {docs → qtype/docs}/components/FieldExtractor.md +2 -1
  70. qtype/docs/components/InvokeFlow.md +8 -0
  71. qtype/docs/components/InvokeTool.md +8 -0
  72. {docs → qtype/docs}/components/PrimitiveTypeEnum.md +0 -1
  73. {docs → qtype/docs}/components/Source.md +0 -1
  74. {docs → qtype/docs}/components/Step.md +0 -1
  75. {docs → qtype/docs}/components/Tool.md +2 -2
  76. {docs → qtype/docs}/components/Variable.md +2 -0
  77. qtype/docs/legacy_how_tos/.pages +6 -0
  78. qtype/docs/skills/architect/SKILL.md +188 -0
  79. qtype/docs/skills/architect/references/cheatsheet.md +198 -0
  80. qtype/docs/skills/architect/references/patterns.md +29 -0
  81. qtype/docs/stylesheets/extra.css +27 -0
  82. qtype/dsl/linker.py +8 -0
  83. qtype/dsl/model.py +177 -84
  84. qtype/examples/conversational_ai/simple_chatbot_with_auth.qtype.yaml +48 -0
  85. qtype/examples/data_processing/athena_query.qtype.yaml +56 -0
  86. qtype/examples/data_processing/batch_inputs.csv +5 -0
  87. qtype/examples/data_processing/create_sample_db.py +129 -0
  88. qtype/examples/data_processing/invoke_other_flows.qtype.yaml +98 -0
  89. qtype/examples/data_processing/load_documents.qtype.yaml +31 -0
  90. qtype/examples/data_processing/reviews.db +0 -0
  91. qtype/examples/data_processing/sample_article.txt +1 -0
  92. qtype/examples/data_processing/sample_documents.jsonl +5 -0
  93. qtype/examples/invoke_models/invoke_embedding_aws.qtype.yaml +45 -0
  94. qtype/examples/language_features/optional_variables.qtype.yaml +32 -0
  95. qtype/examples/language_features/story_prompt.txt +6 -0
  96. qtype/examples/legacy/data/customers.csv +6 -0
  97. qtype/examples/legacy/echo/readme.md +29 -0
  98. qtype/examples/legacy/qtype_plugin_example.py +51 -0
  99. qtype/examples/legacy/sample_data.txt +43 -0
  100. qtype/examples/legacy/vertex/README.md +11 -0
  101. qtype/examples/rag/recipe_chatbot.qtype.yaml +216 -0
  102. qtype/examples/research_assistant/tavily.qtype.yaml +216 -0
  103. {examples → qtype/examples}/tutorials/03_structured_data.qtype.yaml +2 -2
  104. {examples → qtype/examples}/tutorials/04_tools_and_function_calling.qtype.yaml +5 -5
  105. qtype/interpreter/auth/aws.py +94 -17
  106. qtype/interpreter/auth/generic.py +11 -12
  107. qtype/interpreter/base/secrets.py +4 -2
  108. qtype/interpreter/base/stream_emitter.py +19 -13
  109. qtype/interpreter/conversions.py +15 -14
  110. qtype/interpreter/converters.py +142 -26
  111. qtype/interpreter/executors/agent_executor.py +2 -3
  112. qtype/interpreter/executors/aggregate_executor.py +3 -4
  113. qtype/interpreter/executors/bedrock_reranker_executor.py +17 -28
  114. qtype/interpreter/executors/construct_executor.py +15 -15
  115. qtype/interpreter/executors/doc_to_text_executor.py +1 -3
  116. qtype/interpreter/executors/document_embedder_executor.py +1 -12
  117. qtype/interpreter/executors/field_extractor_executor.py +13 -12
  118. qtype/interpreter/executors/file_source_executor.py +18 -31
  119. qtype/interpreter/executors/invoke_embedding_executor.py +24 -37
  120. qtype/interpreter/executors/invoke_flow_executor.py +2 -2
  121. qtype/interpreter/executors/invoke_tool_executor.py +19 -18
  122. qtype/interpreter/executors/llm_inference_executor.py +18 -18
  123. qtype/interpreter/executors/prompt_template_executor.py +1 -3
  124. qtype/interpreter/executors/sql_source_executor.py +6 -2
  125. qtype/interpreter/flow.py +11 -1
  126. qtype/interpreter/tools/function_tool_helper.py +11 -10
  127. qtype/interpreter/types.py +89 -4
  128. qtype/interpreter/typing.py +31 -32
  129. qtype/mcp/server.py +194 -86
  130. {schema → qtype/schema}/qtype.schema.json +77 -79
  131. qtype/semantic/checker.py +19 -0
  132. qtype/semantic/generate.py +3 -6
  133. qtype/semantic/model.py +26 -33
  134. qtype/semantic/resolver.py +7 -0
  135. qtype/semantic/visualize.py +18 -6
  136. {qtype-0.1.12.dist-info → qtype-0.1.14.dist-info}/METADATA +47 -46
  137. qtype-0.1.14.dist-info/RECORD +361 -0
  138. {qtype-0.1.12.dist-info → qtype-0.1.14.dist-info}/WHEEL +1 -2
  139. docs/How To/Data Processing/read_data_from_files.md +0 -35
  140. docs/components/Aggregate.md +0 -8
  141. docs/components/InvokeFlow.md +0 -8
  142. docs/components/InvokeTool.md +0 -8
  143. docs/components/ToolParameter.md +0 -6
  144. examples/research_assistant/tavily.qtype.yaml +0 -289
  145. qtype/application/facade.py +0 -177
  146. qtype-0.1.12.dist-info/RECORD +0 -325
  147. qtype-0.1.12.dist-info/top_level.txt +0 -1
  148. {docs → qtype/docs}/Contributing/roadmap.md +0 -0
  149. {docs → qtype/docs}/Decisions/ADR-001-Chat-vs-Completion-Endpoint-Features.md +0 -0
  150. {docs → qtype/docs}/Gallery/dataflow_pipelines.mermaid +0 -0
  151. {docs → qtype/docs}/Gallery/research_assistant.mermaid +0 -0
  152. {docs → qtype/docs}/Gallery/simple_chatbot.mermaid +0 -0
  153. {docs → qtype/docs}/How To/Language Features/include_qtype_yaml.md +0 -0
  154. {docs → qtype/docs}/How To/Observability & Debugging/visualize_example.mermaid +0 -0
  155. {docs → qtype/docs}/How To/Qtype Server/flow_as_ui.png +0 -0
  156. {docs → qtype/docs}/Reference/plugins.md +0 -0
  157. {docs → qtype/docs}/Reference/semantic-validation-rules.md +0 -0
  158. {docs → qtype/docs}/Tutorials/example_chat.png +0 -0
  159. {docs → qtype/docs}/Tutorials/index.md +0 -0
  160. {docs → qtype/docs}/components/APIKeyAuthProvider.md +0 -0
  161. {docs → qtype/docs}/components/AWSAuthProvider.md +0 -0
  162. {docs → qtype/docs}/components/AWSSecretManager.md +0 -0
  163. {docs → qtype/docs}/components/Agent.md +0 -0
  164. {docs → qtype/docs}/components/AggregateStats.md +0 -0
  165. {docs → qtype/docs}/components/Application.md +0 -0
  166. {docs → qtype/docs}/components/AuthorizationProvider.md +0 -0
  167. {docs → qtype/docs}/components/AuthorizationProviderList.md +0 -0
  168. {docs → qtype/docs}/components/BearerTokenAuthProvider.md +0 -0
  169. {docs → qtype/docs}/components/BedrockReranker.md +0 -0
  170. {docs → qtype/docs}/components/ChatContent.md +0 -0
  171. {docs → qtype/docs}/components/ChatMessage.md +0 -0
  172. {docs → qtype/docs}/components/ConstantPath.md +0 -0
  173. {docs → qtype/docs}/components/CustomType.md +0 -0
  174. {docs → qtype/docs}/components/Decoder.md +0 -0
  175. {docs → qtype/docs}/components/DecoderFormat.md +0 -0
  176. {docs → qtype/docs}/components/DocToTextConverter.md +0 -0
  177. {docs → qtype/docs}/components/Document.md +0 -0
  178. {docs → qtype/docs}/components/DocumentIndex.md +0 -0
  179. {docs → qtype/docs}/components/DocumentSearch.md +0 -0
  180. {docs → qtype/docs}/components/DocumentSource.md +0 -0
  181. {docs → qtype/docs}/components/Echo.md +0 -0
  182. {docs → qtype/docs}/components/Embedding.md +0 -0
  183. {docs → qtype/docs}/components/EmbeddingModel.md +0 -0
  184. {docs → qtype/docs}/components/FileSource.md +0 -0
  185. {docs → qtype/docs}/components/FileWriter.md +0 -0
  186. {docs → qtype/docs}/components/Flow.md +0 -0
  187. {docs → qtype/docs}/components/FlowInterface.md +0 -0
  188. {docs → qtype/docs}/components/Index.md +0 -0
  189. {docs → qtype/docs}/components/IndexUpsert.md +0 -0
  190. {docs → qtype/docs}/components/InvokeEmbedding.md +0 -0
  191. {docs → qtype/docs}/components/LLMInference.md +0 -0
  192. {docs → qtype/docs}/components/ListType.md +0 -0
  193. {docs → qtype/docs}/components/Memory.md +0 -0
  194. {docs → qtype/docs}/components/MessageRole.md +0 -0
  195. {docs → qtype/docs}/components/Model.md +0 -0
  196. {docs → qtype/docs}/components/ModelList.md +0 -0
  197. {docs → qtype/docs}/components/OAuth2AuthProvider.md +0 -0
  198. {docs → qtype/docs}/components/PromptTemplate.md +0 -0
  199. {docs → qtype/docs}/components/PythonFunctionTool.md +0 -0
  200. {docs → qtype/docs}/components/RAGChunk.md +0 -0
  201. {docs → qtype/docs}/components/RAGDocument.md +0 -0
  202. {docs → qtype/docs}/components/RAGSearchResult.md +0 -0
  203. {docs → qtype/docs}/components/Reranker.md +0 -0
  204. {docs → qtype/docs}/components/SQLSource.md +0 -0
  205. {docs → qtype/docs}/components/Search.md +0 -0
  206. {docs → qtype/docs}/components/SearchResult.md +0 -0
  207. {docs → qtype/docs}/components/SecretManager.md +0 -0
  208. {docs → qtype/docs}/components/SecretReference.md +0 -0
  209. {docs → qtype/docs}/components/TelemetrySink.md +0 -0
  210. {docs → qtype/docs}/components/ToolList.md +0 -0
  211. {docs → qtype/docs}/components/TypeList.md +0 -0
  212. {docs → qtype/docs}/components/VariableList.md +0 -0
  213. {docs → qtype/docs}/components/VectorIndex.md +0 -0
  214. {docs → qtype/docs}/components/VectorSearch.md +0 -0
  215. {docs → qtype/docs}/components/VertexAuthProvider.md +0 -0
  216. {docs → qtype/docs}/components/Writer.md +0 -0
  217. {docs → qtype/docs}/example_ui.png +0 -0
  218. {docs → qtype/docs}/index.md +0 -0
  219. {docs → qtype/docs}/legacy_how_tos/Configuration/modular-yaml.md +0 -0
  220. {docs → qtype/docs}/legacy_how_tos/Configuration/phoenix_projects.png +0 -0
  221. {docs → qtype/docs}/legacy_how_tos/Configuration/phoenix_traces.png +0 -0
  222. {docs → qtype/docs}/legacy_how_tos/Configuration/reference-by-id.md +0 -0
  223. {docs → qtype/docs}/legacy_how_tos/Configuration/telemetry-setup.md +0 -0
  224. {docs → qtype/docs}/legacy_how_tos/Data Types/custom-types.md +0 -0
  225. {docs → qtype/docs}/legacy_how_tos/Data Types/domain-types.md +0 -0
  226. {docs → qtype/docs}/legacy_how_tos/Debugging/visualize-apps.md +0 -0
  227. {docs → qtype/docs}/legacy_how_tos/Tools/api-tools.md +0 -0
  228. {docs → qtype/docs}/legacy_how_tos/Tools/python-tools.md +0 -0
  229. {examples → qtype/examples}/authentication/aws_authentication.qtype.yaml +0 -0
  230. {examples → qtype/examples}/conversational_ai/hello_world_chat.qtype.yaml +0 -0
  231. {examples → qtype/examples}/conversational_ai/simple_chatbot.qtype.yaml +0 -0
  232. {examples → qtype/examples}/data_processing/batch_processing.qtype.yaml +0 -0
  233. {examples → qtype/examples}/data_processing/cache_step_results.qtype.yaml +0 -0
  234. {examples → qtype/examples}/data_processing/collect_results.qtype.yaml +0 -0
  235. {examples → qtype/examples}/data_processing/dataflow_pipelines.qtype.yaml +0 -0
  236. {examples → qtype/examples}/data_processing/decode_json.qtype.yaml +0 -0
  237. {examples → qtype/examples}/data_processing/explode_items.qtype.yaml +0 -0
  238. {examples → qtype/examples}/data_processing/read_file.qtype.yaml +0 -0
  239. {examples → qtype/examples}/invoke_models/create_embeddings.qtype.yaml +0 -0
  240. {examples → qtype/examples}/invoke_models/simple_llm_call.qtype.yaml +0 -0
  241. {examples → qtype/examples}/language_features/include_raw.qtype.yaml +0 -0
  242. {examples → qtype/examples}/language_features/ui_hints.qtype.yaml +0 -0
  243. {examples → qtype/examples}/legacy/bedrock/data_analysis_with_telemetry.qtype.yaml +0 -0
  244. {examples → qtype/examples}/legacy/bedrock/hello_world.qtype.yaml +0 -0
  245. {examples → qtype/examples}/legacy/bedrock/hello_world_chat.qtype.yaml +0 -0
  246. {examples → qtype/examples}/legacy/bedrock/hello_world_chat_with_telemetry.qtype.yaml +0 -0
  247. {examples → qtype/examples}/legacy/bedrock/hello_world_chat_with_thinking.qtype.yaml +0 -0
  248. {examples → qtype/examples}/legacy/bedrock/hello_world_completion.qtype.yaml +0 -0
  249. {examples → qtype/examples}/legacy/bedrock/hello_world_completion_with_auth.qtype.yaml +0 -0
  250. {examples → qtype/examples}/legacy/bedrock/simple_agent_chat.qtype.yaml +0 -0
  251. {examples → qtype/examples}/legacy/chat_with_langfuse.qtype.yaml +0 -0
  252. {examples → qtype/examples}/legacy/data_processor.qtype.yaml +0 -0
  253. {examples → qtype/examples}/legacy/echo/debug_example.qtype.yaml +0 -0
  254. {examples → qtype/examples}/legacy/echo/prompt.qtype.yaml +0 -0
  255. {examples → qtype/examples}/legacy/echo/test.qtype.yaml +0 -0
  256. {examples → qtype/examples}/legacy/echo/video.qtype.yaml +0 -0
  257. {examples → qtype/examples}/legacy/field_extractor_example.qtype.yaml +0 -0
  258. {examples → qtype/examples}/legacy/multi_flow_example.qtype.yaml +0 -0
  259. {examples → qtype/examples}/legacy/openai/hello_world_chat.qtype.yaml +0 -0
  260. {examples → qtype/examples}/legacy/openai/hello_world_chat_with_telemetry.qtype.yaml +0 -0
  261. {examples → qtype/examples}/legacy/rag.qtype.yaml +0 -0
  262. {examples → qtype/examples}/legacy/time_utilities.qtype.yaml +0 -0
  263. {examples → qtype/examples}/legacy/vertex/hello_world_chat.qtype.yaml +0 -0
  264. {examples → qtype/examples}/legacy/vertex/hello_world_completion.qtype.yaml +0 -0
  265. {examples → qtype/examples}/legacy/vertex/hello_world_completion_with_auth.qtype.yaml +0 -0
  266. {examples → qtype/examples}/observability_debugging/trace_with_opentelemetry.qtype.yaml +0 -0
  267. {examples → qtype/examples}/research_assistant/research_assistant.qtype.yaml +0 -0
  268. {examples → qtype/examples}/research_assistant/tavily.oas.yaml +0 -0
  269. {examples → qtype/examples}/tutorials/01_hello_world.qtype.yaml +0 -0
  270. {examples → qtype/examples}/tutorials/02_conversational_chat.qtype.yaml +0 -0
  271. {qtype-0.1.12.dist-info → qtype-0.1.14.dist-info}/entry_points.txt +0 -0
  272. {qtype-0.1.12.dist-info → qtype-0.1.14.dist-info}/licenses/LICENSE +0 -0
@@ -31,5 +31,6 @@ qtype validate path/to/app.qtype.yaml --print
31
31
 
32
32
  ## See Also
33
33
 
34
- - [Application Reference](../../components/Application.md)
35
- - [Semantic Validation Rules](../../Concepts/semantic_validation_rules.md)
34
+ - [CLI Reference](../../Reference/cli.md)
35
+ - [Semantic Validation Rules](../../Reference/semantic-validation-rules.md)
36
+ - [Visualize Application Architecture](visualize_application_architecture.md)
@@ -57,5 +57,5 @@ npm install -g @mermaid-js/mermaid-cli
57
57
  ## See Also
58
58
 
59
59
  - [Validate QType YAML](validate_qtype_yaml.md)
60
- - [Application Reference](../../components/Application.md)
60
+ - [CLI Reference](../../Reference/cli.md)
61
61
  - [Flow Reference](../../components/Flow.md)
@@ -35,6 +35,6 @@ Each flow endpoint accepts JSON input matching the flow's input schema and retur
35
35
 
36
36
  ## See Also
37
37
 
38
- - [Application Reference](../../components/Application.md)
39
- - [Flow Reference](../../components/Flow.md)
40
- - [FlowInterface Reference](../../components/FlowInterface.md)
38
+ - [Serve Flows as UI](serve_flows_as_ui.md)
39
+ - [CLI Reference](../../Reference/cli.md)
40
+ - [Serve with Auto-Reload](../Command%20Line%20Usage/serve_with_auto_reload.md)
@@ -37,6 +37,5 @@ The UI automatically generates:
37
37
  ## See Also
38
38
 
39
39
  - [Serve Flows as APIs](serve_flows_as_apis.md)
40
- - [Flow Reference](../../components/Flow.md)
41
- - [FlowInterface Reference](../../components/FlowInterface.md)
42
- - [Tutorial: Build a Conversational Chatbot](../../Tutorials/02-conversational-chatbot.md)
40
+ - [Use Conversational Interfaces](use_conversational_interfaces.md)
41
+ - [Tutorial: Conversational Chatbot](../../Tutorials/02-conversational-chatbot.md)
@@ -52,8 +52,5 @@ Visit [http://localhost:8000/ui](http://localhost:8000/ui) to interact with the
52
52
  ## See Also
53
53
 
54
54
  - [Serve Flows as UI](serve_flows_as_ui.md)
55
- - [Tutorial: Build a Conversational Chatbot](../../Tutorials/02-conversational-chatbot.md)
56
- - [Flow Reference](../../components/Flow.md)
57
- - [FlowInterface Reference](../../components/FlowInterface.md)
55
+ - [Tutorial: Conversational Chatbot](../../Tutorials/02-conversational-chatbot.md)
58
56
  - [ChatMessage Reference](../../components/ChatMessage.md)
59
- - [Memory Concept](../../Concepts/Core/memory.md)
@@ -43,5 +43,6 @@ flows:
43
43
 
44
44
  ## See Also
45
45
 
46
- - [Serve Flows as UI](../../How%20To/Qtype%20Server/serve_flows_as_ui.md)
47
- - [Flow Reference](../../components/Flow.md)
46
+ - [Serve Flows as UI](serve_flows_as_ui.md)
47
+ - [Variable Reference](../../components/Variable.md)
48
+ - [Use Optional Variables](../Language%20Features/use_optional_variables.md)
@@ -42,7 +42,6 @@ steps:
42
42
 
43
43
  ## See Also
44
44
 
45
- - [Tutorial: Adding Tools to Your Application](../../Tutorials/04-tools-and-function-calling.md)
45
+ - [Tutorial: Tools and Function Calling](../../Tutorials/04-tools-and-function-calling.md)
46
46
  - [InvokeTool Reference](../../components/InvokeTool.md)
47
47
  - [Create Tools from Python Modules](create_tools_from_python_modules.md)
48
- - [Create Tools from OpenAPI Specifications](create_tools_from_openapi_specifications.md)
@@ -31,20 +31,17 @@ tools:
31
31
  method: GET
32
32
  endpoint: /api/v3/pet/{petId}
33
33
  auth: swagger-petstore---openapi-30_api_key_api_key
34
- parameters:
35
- petId:
34
+ inputs:
35
+ - id: petId
36
36
  type: int
37
- optional: false
38
37
  outputs:
39
- id:
40
- type: int
41
- optional: true
42
- name:
43
- type: text
44
- optional: false
45
- status:
38
+ - id: id
39
+ type: int?
40
+ - id: name
46
41
  type: text
47
- optional: true
42
+ - id: status
43
+ type: text?
44
+ parameters: []
48
45
  ```
49
46
 
50
47
  ### Explanation
@@ -83,7 +80,6 @@ See [Tutorial: Adding Tools to Your Application](../../Tutorials/04-tools-and-fu
83
80
 
84
81
  ## See Also
85
82
 
86
- - [Tutorial: Adding Tools to Your Application](../../Tutorials/04-tools-and-function-calling.md)
87
- - [How-To: Create Tools from Python Modules](create_tools_from_python_modules.md)
88
- - [InvokeTool Reference](../../components/InvokeTool.md)
83
+ - [Tutorial: Tools and Function Calling](../../Tutorials/04-tools-and-function-calling.md)
84
+ - [Create Tools from Python Modules](create_tools_from_python_modules.md)
89
85
  - [APITool Reference](../../components/APITool.md)
@@ -42,16 +42,13 @@ tools:
42
42
  module_path: myapp.utils
43
43
  name: calculate_age
44
44
  inputs:
45
- birth_date:
45
+ - id: birth_date
46
46
  type: datetime
47
- optional: false
48
- reference_date:
47
+ - id: reference_date
49
48
  type: datetime
50
- optional: false
51
49
  outputs:
52
- result:
50
+ - id: calculate_age_result
53
51
  type: int
54
- optional: false
55
52
  ```
56
53
 
57
54
  ### Explanation
@@ -85,6 +82,6 @@ flows:
85
82
 
86
83
  ## See Also
87
84
 
88
- - [Tutorial: Adding Tools to Your Application](../../Tutorials/04-tools-and-function-calling.md)
89
- - [InvokeTool Reference](../../components/InvokeTool.md)
85
+ - [Tutorial: Tools and Function Calling](../../Tutorials/04-tools-and-function-calling.md)
86
+ - [Create Tools from OpenAPI Specifications](create_tools_from_openapi_specifications.md)
90
87
  - [PythonFunctionTool Reference](../../components/PythonFunctionTool.md)
@@ -34,14 +34,15 @@ qtype run [options] spec
34
34
  #### Options
35
35
 
36
36
  - **`-f FLOW, --flow FLOW`** - The name of the flow to run. If not specified, runs the first flow found
37
- - **`-i INPUT, --input INPUT`** - JSON blob of input values for the flow (default: `{}`)
37
+ - **`-i INPUT, --input INPUT`** - JSON blob of input values for the flow (optional - omit for flows with source steps that generate their own data)
38
38
  - **`-I INPUT_FILE, --input-file INPUT_FILE`** - Path to a file (e.g., CSV, JSON, Parquet) with input data for batch processing
39
39
  - **`-o OUTPUT, --output OUTPUT`** - Path to save output data. If input is a DataFrame, output will be saved as parquet. If single result, saved as JSON
40
40
  - **`--progress`** - Show progress bars during flow execution
41
+ - **`--show-output`** - Display full output data in console (default: summary only)
41
42
 
42
43
  #### Examples
43
44
 
44
- Run a simple application:
45
+ Run a simple application with no inputs (e.g., flows with source steps):
45
46
  ```bash
46
47
  qtype run app.qtype.yaml
47
48
  ```
@@ -63,8 +64,8 @@ qtype run app.qtype.yaml --input-file inputs.csv --output results.parquet
63
64
 
64
65
  #### See Also
65
66
 
66
- - [How To: Pass Inputs On The CLI](../How%20To/Command%20Line%20Usage/pass_inputs_on_the_cli.md)
67
- - [How To: Load Multiple Inputs from Files](../How%20To/Command%20Line%20Usage/load_multiple_inputs_from_files.md)
67
+ - [Pass Inputs On The CLI](../How%20To/Command%20Line%20Usage/pass_inputs_on_the_cli.md)
68
+ - [Load Multiple Inputs from Files](../How%20To/Command%20Line%20Usage/load_multiple_inputs_from_files.md)
68
69
  - [Tutorial: Your First QType Application](../Tutorials/01-first-qtype-application.md)
69
70
 
70
71
  ---
@@ -99,8 +100,8 @@ qtype validate app.qtype.yaml --print
99
100
 
100
101
  #### See Also
101
102
 
102
- - [How To: Validate QType YAML](../How%20To/Observability%20&%20Debugging/validate_qtype_yaml.md)
103
- - [Reference: Semantic Validation Rules](semantic-validation-rules.md)
103
+ - [Validate QType YAML](../How%20To/Observability%20%26%20Debugging/validate_qtype_yaml.md)
104
+ - [Semantic Validation Rules](semantic-validation-rules.md)
104
105
 
105
106
  ---
106
107
 
@@ -141,11 +142,9 @@ qtype serve app.qtype.yaml --reload
141
142
 
142
143
  #### See Also
143
144
 
144
- - [How To: Serve Flows as APIs](../How%20To/Qtype%20Server/serve_flows_as_apis.md)
145
- - [How To: Serve Flows as UI](../How%20To/Qtype%20Server/serve_flows_as_ui.md)
146
- - [How To: Use Conversational Interfaces](../How%20To/Qtype%20Server/use_conversational_interfaces.md)
147
- - [How To: Serve Applications with Auto-Reload](../How%20To/Qtype%20Server/serve_applications_with_auto_reload.md)
148
- - [Tutorial: Building a Stateful Chatbot](../Tutorials/02-conversational-chatbot.md)
145
+ - [Serve Flows as APIs](../How%20To/Qtype%20Server/serve_flows_as_apis.md)
146
+ - [Serve Flows as UI](../How%20To/Qtype%20Server/serve_flows_as_ui.md)
147
+ - [Tutorial: Conversational Chatbot](../Tutorials/02-conversational-chatbot.md)
149
148
 
150
149
  ---
151
150
 
@@ -230,7 +229,7 @@ qtype visualize app.qtype.yaml --output architecture.mmd
230
229
 
231
230
  #### See Also
232
231
 
233
- - [How To: Visualize Application Architecture](../How%20To/Observability%20&%20Debugging/visualize_application_architecture.md)
232
+ - [Visualize Application Architecture](../How%20To/Observability%20%26%20Debugging/visualize_application_architecture.md)
234
233
 
235
234
  ---
236
235
 
@@ -274,8 +273,8 @@ qtype convert module myapp.utils
274
273
 
275
274
  **See Also:**
276
275
 
277
- - [How To: Create Tools from Python Modules](../How%20To/Tools%20&%20Integration/create_tools_from_python_modules.md)
278
- - [Tutorial: Adding Tools to Your Application](../Tutorials/04-tools-and-function-calling.md)
276
+ - [Create Tools from Python Modules](../How%20To/Tools%20%26%20Integration/create_tools_from_python_modules.md)
277
+ - [Tutorial: Tools and Function Calling](../Tutorials/04-tools-and-function-calling.md)
279
278
 
280
279
  ##### convert api
281
280
 
@@ -307,8 +306,8 @@ qtype convert api https://petstore3.swagger.io/api/v3/openapi.json --output pets
307
306
 
308
307
  **See Also:**
309
308
 
310
- - [How To: Create Tools from OpenAPI Specifications](../How%20To/Tools%20&%20Integration/create_tools_from_openapi_specifications.md)
311
- - [Tutorial: Adding Tools to Your Application](../Tutorials/04-tools-and-function-calling.md)
309
+ - [Create Tools from OpenAPI Specifications](../How%20To/Tools%20%26%20Integration/create_tools_from_openapi_specifications.md)
310
+ - [Tutorial: Tools and Function Calling](../Tutorials/04-tools-and-function-calling.md)
312
311
 
313
312
  ---
314
313
 
@@ -327,7 +326,7 @@ This command is primarily used for QType development and maintenance.
327
326
  - **`commons`** - Generates the commons library tools from `tools.py`
328
327
  - **`schema`** - Generates the JSON schema for the QType DSL from `model.py`
329
328
  - **`dsl-docs`** - Generates markdown documentation for the QType DSL classes from `model.py`
330
- - **`semantic-model`** - Generates the semantic model from QType DSL (See [Contributing](../Contributing/))
329
+ - **`semantic-model`** - Generates the semantic model from QType DSL (See [Contributing](../Contributing/index.md))
331
330
 
332
331
  ---
333
332
 
@@ -0,0 +1 @@
1
+ title: Tutorials
@@ -180,7 +180,7 @@ Replace `sk-your-key-here` with your actual OpenAI API key.
180
180
  Run your application:
181
181
 
182
182
  ```bash
183
- qtype run -i '{"question":"What is 2+2?"}' 01_hello_world.qtype.yaml
183
+ qtype run -i '{"question":"What is 2+2?"}' --show-output 01_hello_world.qtype.yaml
184
184
  ```
185
185
 
186
186
  **What you should see:**
@@ -231,8 +231,9 @@ Congratulations! You've learned:
231
231
 
232
232
  **Learn more:**
233
233
 
234
- - [Application Concept](../Concepts/Core/application.md) - Full specification
235
- - [All Step Types](../Concepts/Steps/index.md) - What else can you build?
234
+ - [Tutorial: Conversational Chatbot](02-conversational-chatbot.md)
235
+ - [Tutorial: Structured Data](03-structured-data.md)
236
+ - [Call Large Language Models](../How%20To/Invoke%20Models/call_large_language_models.md)
236
237
 
237
238
  ---
238
239
 
@@ -303,9 +303,9 @@ Congratulations! You've mastered:
303
303
 
304
304
  **Learn more:**
305
305
 
306
- - [Memory Concept](../Concepts/Core/memory.md) - Advanced memory strategies
307
- - [ChatMessage Reference](../How-To%20Guides/Data%20Types/domain-types.md) - Full type specification
308
- - [Flow Interfaces](../Concepts/Core/flow.md) - Complete vs Conversational
306
+ - [Tutorial: Structured Data](03-structured-data.md)
307
+ - [ChatMessage Reference](../components/ChatMessage.md)
308
+ - [Use Conversational Interfaces](../How%20To/Qtype%20Server/use_conversational_interfaces.md)
309
309
 
310
310
  ---
311
311
 
@@ -264,7 +264,7 @@ Final step - convert individual fields into your custom type:
264
264
  - id: build_result
265
265
  type: Construct
266
266
  output_type: ReviewSentiment
267
- field_mapping:
267
+ field_bindings:
268
268
  sentiment: sentiment
269
269
  confidence: confidence
270
270
  key_points: key_points
@@ -282,15 +282,15 @@ Final step - convert individual fields into your custom type:
282
282
 
283
283
  **`output_type: ReviewSentiment`** - Specifies which custom type to build
284
284
 
285
- **`field_mapping:`** - Maps input variables to type properties:
285
+ **`field_bindings:`** - Maps type field names to input variables:
286
286
  ```yaml
287
- field_mapping:
287
+ field_bindings:
288
288
  <property_name>: <variable_name>
289
289
  ```
290
290
 
291
291
  In this case, names match (`sentiment: sentiment`), but you could use different names:
292
292
  ```yaml
293
- field_mapping:
293
+ field_bindings:
294
294
  sentiment: analyzed_sentiment # Maps analyzed_sentiment variable to sentiment property
295
295
  ```
296
296
 
@@ -316,7 +316,7 @@ Should pass ✅
316
316
  ### Run It!
317
317
 
318
318
  ```bash
319
- qtype run -i '{"review_text":"These headphones are amazing! Great sound quality and super comfortable. Battery lasts all day."}' 03_structured_data.qtype.yaml
319
+ qtype run -i '{"review_text":"These headphones are amazing! Great sound quality and super comfortable. Battery lasts all day."}' --show-output 03_structured_data.qtype.yaml
320
320
  ```
321
321
 
322
322
  **Expected output:**
@@ -432,7 +432,7 @@ Congratulations! You've mastered:
432
432
  ✅ **List types** - Working with `list[text]` and other collections
433
433
  ✅ **Decoder step** - Parsing JSON into individual typed fields
434
434
  ✅ **Construct step** - Building validated custom type instances
435
- ✅ **Field mapping** - Connecting variables to type properties
435
+ ✅ **Field Bindings** - Connecting variables to type properties
436
436
  ✅ **Type safety** - Catching errors early with validation
437
437
 
438
438
  ---
@@ -445,10 +445,9 @@ Congratulations! You've mastered:
445
445
 
446
446
  **Learn more:**
447
447
 
448
- - [CustomType Reference](../components/CustomType.md) - Complete type system
449
- - [Decoder Step](../Concepts/Steps/decoder.md) - Advanced parsing options
450
- - [Construct Step](../components/Construct.md) - Field mapping patterns
451
- - [Type System](../Concepts/Core/types.md) - Primitives, domain types, and custom types
448
+ - [Tutorial: Tools and Function Calling](04-tools-and-function-calling.md)
449
+ - [CustomType Reference](../components/CustomType.md)
450
+ - [Decoder Reference](../components/Decoder.md)
452
451
 
453
452
  ---
454
453
 
@@ -478,4 +477,4 @@ A: Not directly. Decoder maps JSON fields to individual outputs. If you need the
478
477
  A: Use **Decoder** when you have a JSON/XML string to parse. Use **FieldExtractor** when you already have structured data and need to extract specific fields using JSONPath (covered in advanced tutorials).
479
478
 
480
479
  **Q: Can I make properties optional?**
481
- A: Currently all properties are required. For optional fields, you can define them in your flow logic but not include them in the Construct step.
480
+ A: Yes! Mark variables as optional using the `?` suffix (e.g., `type: text?`). Optional variables can be unset, `None`, or have a value. This is useful when extracting fields that may not always be present. See [Use Optional Variables](../How%20To/Language%20Features/use_optional_variables.md).
@@ -74,7 +74,7 @@ Add a `references:` section before `flows:`:
74
74
  ```yaml
75
75
  # Import pre-built tools from the commons library
76
76
  references:
77
- - !include https://raw.githubusercontent.com/bazaarvoice/qtype/refs/tags/v0.1.11/common/tools.qtype.yaml
77
+ - !include ../../common/tools.qtype.yaml
78
78
  ```
79
79
 
80
80
  **What this means:**
@@ -258,13 +258,12 @@ In this case:
258
258
  The `timedelta` tool definition (from commons library) looks like:
259
259
  ```yaml
260
260
  inputs:
261
- timestamp:
261
+ - id: timestamp
262
262
  type: datetime
263
- days:
264
- type: int
265
- hours:
266
- type: int
267
- optional: true
263
+ - id: days
264
+ type: int?
265
+ - id: hours
266
+ type: int?
268
267
  # ... more optional parameters
269
268
  ```
270
269
 
@@ -306,7 +305,7 @@ Should pass ✅
306
305
  ### Run the Application
307
306
 
308
307
  ```bash
309
- qtype run -i '{"days_until_due": 3}' 04_tools_and_function_calling.qtype.yaml
308
+ qtype run -i '{"days_until_due": 3}' --show-output 04_tools_and_function_calling.qtype.yaml
310
309
  ```
311
310
 
312
311
  **Expected output:**
@@ -445,20 +444,14 @@ Congratulations! You've mastered:
445
444
 
446
445
  **Reference the complete example:**
447
446
 
448
- - [`04_tools_and_function_calling.qtype.yaml`](https://github.com/bazaarvoice/qtype/blob/main/examples/tutorials/04_tools_and_function_calling.qtype.yaml) - Full working example
449
- - [Commons Library](https://github.com/bazaarvoice/qtype/blob/main/common/tools.qtype.yaml) - Browse all available tools
450
- - [Commons Library Source](https://github.com/bazaarvoice/qtype/blob/v0.1.11/qtype/application/commons/tools.py) - Browse the source of tools.
451
- <!--
452
- **Learn more:**
453
-
454
- - [PythonFunctionTool Reference](../components/PythonFunctionTool.md) - Complete specification
455
- - [APITool Reference](../components/APITool.md) - External service integration
456
- - [InvokeTool Step](../components/InvokeTool.md) - Advanced binding patterns
457
- - [Generate Tools](../How-To%20Guides/Tools/generate-tools.md) - Create your own tools -->
447
+ - [`04_tools_and_function_calling.qtype.yaml`](https://github.com/bazaarvoice/qtype/blob/main/examples/tutorials/04_tools_and_function_calling.qtype.yaml)
448
+ - [Commons Library Tools](https://github.com/bazaarvoice/qtype/blob/main/common/tools.qtype.yaml)
458
449
 
459
- <!-- **Next tutorial:**
450
+ **Learn more:**
460
451
 
461
- - Tutorial 5: Building an AI Agent - Use tools with autonomous LLM decision-making -->
452
+ - [Create Tools from Python Modules](../How%20To/Tools%20%26%20Integration/create_tools_from_python_modules.md)
453
+ - [Create Tools from OpenAPI Specifications](../How%20To/Tools%20%26%20Integration/create_tools_from_openapi_specifications.md)
454
+ - [Bind Tool Inputs and Outputs](../How%20To/Tools%20%26%20Integration/bind_tool_inputs_and_outputs.md)
462
455
 
463
456
  ---
464
457
 
@@ -7,4 +7,4 @@ Tool that invokes an API endpoint.
7
7
  - **method** (`str`): HTTP method to use (GET, POST, PUT, DELETE, etc.).
8
8
  - **auth** (`Reference[AuthProviderType] | str | None`): Optional AuthorizationProvider for API authentication.
9
9
  - **headers** (`dict[str, str]`): Optional HTTP headers to include in the request.
10
- - **parameters** (`dict[str, ToolParameter]`): Output parameters produced by this tool.
10
+ - **parameters** (`list[Variable]`): Path and query parameters for the API call.
@@ -0,0 +1,7 @@
1
+ ### Aggregate
2
+
3
+ A step that, after all messages have been processed,
4
+ returns a single message containing the counts of successful and failed
5
+ messages. Other messages are passed through unchanged.
6
+
7
+ - **type** (`Literal`): (No documentation available.)
@@ -0,0 +1,6 @@
1
+ ### Collect
2
+
3
+ A step that collects all inputs and creates a single list to return.
4
+
5
+ - **type** (`Literal`): (No documentation available.)
6
+ - **batch_config** (`BatchConfig`): Configuration for processing the input stream in batches. If omitted, the step processes items one by one.
@@ -0,0 +1,6 @@
1
+ ### Construct
2
+
3
+ A step that converts variables into an instance of a Custom or Domain Type
4
+
5
+ - **type** (`Literal`): (No documentation available.)
6
+ - **field_bindings** (`dict[str, Reference[Variable] | str]`): Mapping from type field names to flow variable names.
@@ -3,5 +3,4 @@
3
3
  Embeds document chunks using a specified embedding model.
4
4
 
5
5
  - **type** (`Literal`): (No documentation available.)
6
- - **cardinality** (`Literal`): Consumes one chunk and emits one embedded chunk.
7
6
  - **model** (`Reference[EmbeddingModel] | str`): Embedding model to use for vectorization.
@@ -3,7 +3,6 @@
3
3
  Configuration for chunking/splitting documents into embeddable nodes/chunks.
4
4
 
5
5
  - **type** (`Literal`): (No documentation available.)
6
- - **cardinality** (`Literal`): Consumes one document and emits 0...N nodes/chunks.
7
6
  - **splitter_name** (`str`): Name of the LlamaIndex TextSplitter class.
8
7
  - **chunk_size** (`int`): Size of each chunk.
9
8
  - **chunk_overlap** (`int`): Overlap between consecutive chunks.
@@ -0,0 +1,5 @@
1
+ ### Explode
2
+
3
+ A step that takes a list input and produces multiple outputs, one per item in the list.
4
+
5
+ - **type** (`Literal`): (No documentation available.)
@@ -10,6 +10,8 @@ messages (1-to-many cardinality). If it matches a single value, it yields
10
10
  one output message. If it matches nothing, it raises an error.
11
11
  The extracted data is used to construct the output variable by passing it
12
12
  as keyword arguments to the output type's constructor.
13
+ If there is no match and the output variable is optional, it is set to None.
14
+ If there is no match and the output variable is required, an error is raised.
13
15
  Example JSONPath expressions:
14
16
  - `$.field_name` - Extract a single field
15
17
  - `$.items[*]` - Extract all items from a list
@@ -17,4 +19,3 @@ Example JSONPath expressions:
17
19
 
18
20
  - **type** (`Literal`): (No documentation available.)
19
21
  - **json_path** (`str`): JSONPath expression to extract data from the input. Uses jsonpath-ng syntax.
20
- - **fail_on_missing** (`bool`): Whether to raise an error if the JSONPath matches no data. If False, returns None.
@@ -0,0 +1,8 @@
1
+ ### InvokeFlow
2
+
3
+ Invokes a flow with input and output bindings.
4
+
5
+ - **type** (`Literal`): (No documentation available.)
6
+ - **flow** (`Reference[Flow] | str`): Flow to invoke.
7
+ - **input_bindings** (`dict[str, Reference[Variable] | str]`): Mapping from flow input variable IDs to step variable names.
8
+ - **output_bindings** (`dict[str, Reference[Variable] | str]`): Mapping from flow output variable IDs to step variable names.
@@ -0,0 +1,8 @@
1
+ ### InvokeTool
2
+
3
+ Invokes a tool with input and output bindings.
4
+
5
+ - **type** (`Literal`): (No documentation available.)
6
+ - **tool** (`Reference[ToolType] | str`): Tool to invoke.
7
+ - **input_bindings** (`dict[str, Reference[Variable] | str]`): Mapping from tool parameter names to flow variable names.
8
+ - **output_bindings** (`dict[str, Reference[Variable] | str]`): Mapping from tool output names to flow variable names.
@@ -15,7 +15,6 @@ Represents the type of data a user or system input can accept within the DSL.
15
15
  - **int**: Represents the type of data a user or system input can accept within the DSL.
16
16
  - **name**: The name of the Enum member.
17
17
  - **text**: Represents the type of data a user or system input can accept within the DSL.
18
- - **thinking**: Represents the type of data a user or system input can accept within the DSL.
19
18
  - **time**: Represents the type of data a user or system input can accept within the DSL.
20
19
  - **value**: The value of the Enum member.
21
20
  - **video**: Represents the type of data a user or system input can accept within the DSL.
@@ -3,4 +3,3 @@
3
3
  Base class for data sources
4
4
 
5
5
  - **id** (`str`): Unique ID of the data source.
6
- - **cardinality** (`Literal`): Sources always emit 0...N instances of the outputs.
@@ -4,6 +4,5 @@ Base class for components that take inputs and produce outputs.
4
4
 
5
5
  - **id** (`str`): Unique ID of this component.
6
6
  - **type** (`str`): Type of the step component.
7
- - **cardinality** (`StepCardinality`): Does this step emit 1 (one) or 0...N (many) instances of the outputs?
8
7
  - **inputs** (`list[Reference[Variable] | str]`): References to the variables required by this step.
9
8
  - **outputs** (`list[Reference[Variable] | str]`): References to the variables where output is stored.
@@ -5,5 +5,5 @@ Base class for callable functions or external operations available to the model
5
5
  - **id** (`str`): Unique ID of this component.
6
6
  - **name** (`str`): Name of the tool function.
7
7
  - **description** (`str`): Description of what the tool does.
8
- - **inputs** (`dict[str, ToolParameter]`): Input parameters required by this tool.
9
- - **outputs** (`dict[str, ToolParameter]`): Output parameters produced by this tool.
8
+ - **inputs** (`list[Variable]`): Input parameters required by this tool.
9
+ - **outputs** (`list[Variable]`): Output parameters produced by this tool.
@@ -4,3 +4,5 @@ Schema for a variable that can serve as input, output, or parameter within the D
4
4
 
5
5
  - **id** (`str`): Unique ID of the variable. Referenced in prompts or steps.
6
6
  - **type** (`VariableType | str`): Type of data expected or produced. Either a CustomType or domain specific type.
7
+ - **optional** (`bool`): Whether this variable can be unset or None. Use '?' suffix in type string as shorthand (e.g., 'text?').
8
+ - **ui** (`TextInputUI | FileUploadUI | None`): Hints for the UI if needed.
@@ -0,0 +1,6 @@
1
+ title: How-To Guides
2
+ nav:
3
+ - Configuration
4
+ - Data Types
5
+ - Tools
6
+ - Debugging