qtype 0.1.12__py3-none-any.whl → 0.1.13__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 (252) 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/commands/generate.py +90 -7
  6. qtype/commands/run.py +116 -44
  7. qtype/docs/.pages +8 -0
  8. {docs → qtype/docs}/Concepts/mental-model-and-philosophy.md +1 -1
  9. qtype/docs/Contributing/.pages +4 -0
  10. {docs → qtype/docs}/Contributing/index.md +8 -1
  11. {docs → qtype/docs}/Gallery/dataflow_pipelines.md +3 -2
  12. {docs → qtype/docs}/Gallery/research_assistant.md +3 -4
  13. {docs → qtype/docs}/Gallery/simple_chatbot.md +3 -1
  14. {docs → qtype/docs}/How To/Authentication/configure_aws_authentication.md +2 -2
  15. {docs → qtype/docs}/How To/Authentication/use_api_key_authentication.md +2 -2
  16. {docs → qtype/docs}/How To/Command Line Usage/load_multiple_inputs_from_files.md +24 -9
  17. {docs → qtype/docs}/How To/Command Line Usage/pass_inputs_on_the_cli.md +3 -3
  18. {docs → qtype/docs}/How To/Command Line Usage/serve_with_auto_reload.md +3 -2
  19. {docs → qtype/docs}/How To/Data Processing/adjust_concurrency.md +3 -4
  20. {docs → qtype/docs}/How To/Data Processing/cache_step_results.md +2 -2
  21. {docs → qtype/docs}/How To/Data Processing/decode_json_xml.md +1 -1
  22. {docs → qtype/docs}/How To/Data Processing/explode_collections.md +2 -2
  23. {docs → qtype/docs}/How To/Data Processing/gather_results.md +4 -4
  24. qtype/docs/How To/Data Processing/invoke_other_flows.md +71 -0
  25. qtype/docs/How To/Data Processing/load_data_from_athena.md +49 -0
  26. qtype/docs/How To/Data Processing/read_data_from_files.md +61 -0
  27. {docs → qtype/docs}/How To/Data Processing/read_sql_databases.md +2 -3
  28. {docs → qtype/docs}/How To/Data Processing/write_data_to_file.md +1 -2
  29. {docs → qtype/docs}/How To/Invoke Models/call_large_language_models.md +1 -1
  30. {docs → qtype/docs}/How To/Invoke Models/create_embeddings.md +1 -1
  31. {docs → qtype/docs}/How To/Invoke Models/reuse_prompts_with_templates.md +2 -3
  32. {docs → qtype/docs}/How To/Language Features/include_raw_text_from_other_files.md +2 -1
  33. {docs → qtype/docs}/How To/Language Features/reference_entities_by_id.md +2 -2
  34. qtype/docs/How To/Language Features/use_agent_skills.md +29 -0
  35. {docs → qtype/docs}/How To/Language Features/use_environment_variables.md +2 -1
  36. qtype/docs/How To/Language Features/use_optional_variables.md +42 -0
  37. {docs → qtype/docs}/How To/Language Features/use_qtype_mcp.md +4 -4
  38. {docs → qtype/docs}/How To/Observability & Debugging/trace_calls_with_open_telemetry.md +1 -1
  39. {docs → qtype/docs}/How To/Observability & Debugging/validate_qtype_yaml.md +3 -2
  40. {docs → qtype/docs}/How To/Observability & Debugging/visualize_application_architecture.md +1 -1
  41. {docs → qtype/docs}/How To/Qtype Server/serve_flows_as_apis.md +3 -3
  42. {docs → qtype/docs}/How To/Qtype Server/serve_flows_as_ui.md +2 -3
  43. {docs → qtype/docs}/How To/Qtype Server/use_conversational_interfaces.md +1 -4
  44. {docs → qtype/docs}/How To/Qtype Server/use_variables_with_ui_hints.md +3 -2
  45. {docs → qtype/docs}/How To/Tools & Integration/bind_tool_inputs_and_outputs.md +1 -2
  46. {docs → qtype/docs}/How To/Tools & Integration/create_tools_from_openapi_specifications.md +10 -14
  47. {docs → qtype/docs}/How To/Tools & Integration/create_tools_from_python_modules.md +5 -8
  48. {docs → qtype/docs}/Reference/cli.md +13 -15
  49. {docs → qtype/docs}/Reference/plugins.md +4 -0
  50. {docs → qtype/docs}/Reference/semantic-validation-rules.md +6 -1
  51. qtype/docs/Tutorials/.pages +1 -0
  52. {docs → qtype/docs}/Tutorials/01-first-qtype-application.md +3 -2
  53. {docs → qtype/docs}/Tutorials/02-conversational-chatbot.md +3 -3
  54. {docs → qtype/docs}/Tutorials/03-structured-data.md +9 -10
  55. {docs → qtype/docs}/Tutorials/04-tools-and-function-calling.md +12 -19
  56. {docs → qtype/docs}/components/APITool.md +1 -1
  57. qtype/docs/components/Aggregate.md +7 -0
  58. qtype/docs/components/Collect.md +6 -0
  59. qtype/docs/components/Construct.md +6 -0
  60. {docs → qtype/docs}/components/DocumentEmbedder.md +0 -1
  61. {docs → qtype/docs}/components/DocumentSplitter.md +0 -1
  62. qtype/docs/components/Explode.md +5 -0
  63. {docs → qtype/docs}/components/FieldExtractor.md +2 -1
  64. qtype/docs/components/InvokeFlow.md +8 -0
  65. qtype/docs/components/InvokeTool.md +8 -0
  66. {docs → qtype/docs}/components/PrimitiveTypeEnum.md +0 -1
  67. {docs → qtype/docs}/components/Source.md +0 -1
  68. {docs → qtype/docs}/components/Step.md +0 -1
  69. {docs → qtype/docs}/components/Tool.md +2 -2
  70. {docs → qtype/docs}/components/Variable.md +2 -0
  71. qtype/docs/legacy_how_tos/.pages +6 -0
  72. qtype/docs/skills/architect/SKILL.md +188 -0
  73. qtype/docs/skills/architect/references/cheatsheet.md +198 -0
  74. qtype/docs/skills/architect/references/patterns.md +29 -0
  75. qtype/docs/stylesheets/extra.css +27 -0
  76. qtype/dsl/linker.py +8 -0
  77. qtype/dsl/model.py +177 -84
  78. qtype/examples/data_processing/athena_query.qtype.yaml +56 -0
  79. qtype/examples/data_processing/batch_inputs.csv +5 -0
  80. qtype/examples/data_processing/create_sample_db.py +129 -0
  81. qtype/examples/data_processing/invoke_other_flows.qtype.yaml +98 -0
  82. qtype/examples/data_processing/reviews.db +0 -0
  83. qtype/examples/data_processing/sample_article.txt +1 -0
  84. qtype/examples/data_processing/sample_documents.jsonl +5 -0
  85. qtype/examples/language_features/optional_variables.qtype.yaml +32 -0
  86. qtype/examples/language_features/story_prompt.txt +6 -0
  87. qtype/examples/legacy/data/customers.csv +6 -0
  88. qtype/examples/legacy/echo/readme.md +29 -0
  89. qtype/examples/legacy/qtype_plugin_example.py +51 -0
  90. qtype/examples/legacy/sample_data.txt +43 -0
  91. qtype/examples/legacy/vertex/README.md +11 -0
  92. qtype/examples/research_assistant/tavily.qtype.yaml +216 -0
  93. {examples → qtype/examples}/tutorials/03_structured_data.qtype.yaml +2 -2
  94. {examples → qtype/examples}/tutorials/04_tools_and_function_calling.qtype.yaml +5 -5
  95. qtype/interpreter/base/stream_emitter.py +19 -13
  96. qtype/interpreter/converters.py +142 -26
  97. qtype/interpreter/executors/agent_executor.py +2 -3
  98. qtype/interpreter/executors/aggregate_executor.py +3 -4
  99. qtype/interpreter/executors/construct_executor.py +15 -15
  100. qtype/interpreter/executors/doc_to_text_executor.py +1 -3
  101. qtype/interpreter/executors/field_extractor_executor.py +13 -12
  102. qtype/interpreter/executors/file_source_executor.py +18 -31
  103. qtype/interpreter/executors/invoke_embedding_executor.py +1 -4
  104. qtype/interpreter/executors/invoke_flow_executor.py +2 -2
  105. qtype/interpreter/executors/invoke_tool_executor.py +19 -18
  106. qtype/interpreter/executors/llm_inference_executor.py +16 -18
  107. qtype/interpreter/executors/prompt_template_executor.py +1 -3
  108. qtype/interpreter/tools/function_tool_helper.py +11 -10
  109. qtype/interpreter/types.py +89 -4
  110. qtype/interpreter/typing.py +31 -32
  111. qtype/mcp/server.py +312 -57
  112. {schema → qtype/schema}/qtype.schema.json +77 -79
  113. qtype/semantic/checker.py +19 -0
  114. qtype/semantic/generate.py +3 -6
  115. qtype/semantic/model.py +26 -33
  116. qtype/semantic/resolver.py +7 -0
  117. qtype/semantic/visualize.py +8 -3
  118. {qtype-0.1.12.dist-info → qtype-0.1.13.dist-info}/METADATA +47 -46
  119. qtype-0.1.13.dist-info/RECORD +352 -0
  120. {qtype-0.1.12.dist-info → qtype-0.1.13.dist-info}/WHEEL +1 -2
  121. docs/How To/Data Processing/read_data_from_files.md +0 -35
  122. docs/components/Aggregate.md +0 -8
  123. docs/components/InvokeFlow.md +0 -8
  124. docs/components/InvokeTool.md +0 -8
  125. docs/components/ToolParameter.md +0 -6
  126. examples/research_assistant/tavily.qtype.yaml +0 -289
  127. qtype/application/facade.py +0 -177
  128. qtype-0.1.12.dist-info/RECORD +0 -325
  129. qtype-0.1.12.dist-info/top_level.txt +0 -1
  130. {docs → qtype/docs}/Contributing/roadmap.md +0 -0
  131. {docs → qtype/docs}/Decisions/ADR-001-Chat-vs-Completion-Endpoint-Features.md +0 -0
  132. {docs → qtype/docs}/Gallery/dataflow_pipelines.mermaid +0 -0
  133. {docs → qtype/docs}/Gallery/research_assistant.mermaid +0 -0
  134. {docs → qtype/docs}/Gallery/simple_chatbot.mermaid +0 -0
  135. {docs → qtype/docs}/How To/Language Features/include_qtype_yaml.md +0 -0
  136. {docs → qtype/docs}/How To/Observability & Debugging/visualize_example.mermaid +0 -0
  137. {docs → qtype/docs}/How To/Qtype Server/flow_as_ui.png +0 -0
  138. {docs → qtype/docs}/Tutorials/example_chat.png +0 -0
  139. {docs → qtype/docs}/Tutorials/index.md +0 -0
  140. {docs → qtype/docs}/components/APIKeyAuthProvider.md +0 -0
  141. {docs → qtype/docs}/components/AWSAuthProvider.md +0 -0
  142. {docs → qtype/docs}/components/AWSSecretManager.md +0 -0
  143. {docs → qtype/docs}/components/Agent.md +0 -0
  144. {docs → qtype/docs}/components/AggregateStats.md +0 -0
  145. {docs → qtype/docs}/components/Application.md +0 -0
  146. {docs → qtype/docs}/components/AuthorizationProvider.md +0 -0
  147. {docs → qtype/docs}/components/AuthorizationProviderList.md +0 -0
  148. {docs → qtype/docs}/components/BearerTokenAuthProvider.md +0 -0
  149. {docs → qtype/docs}/components/BedrockReranker.md +0 -0
  150. {docs → qtype/docs}/components/ChatContent.md +0 -0
  151. {docs → qtype/docs}/components/ChatMessage.md +0 -0
  152. {docs → qtype/docs}/components/ConstantPath.md +0 -0
  153. {docs → qtype/docs}/components/CustomType.md +0 -0
  154. {docs → qtype/docs}/components/Decoder.md +0 -0
  155. {docs → qtype/docs}/components/DecoderFormat.md +0 -0
  156. {docs → qtype/docs}/components/DocToTextConverter.md +0 -0
  157. {docs → qtype/docs}/components/Document.md +0 -0
  158. {docs → qtype/docs}/components/DocumentIndex.md +0 -0
  159. {docs → qtype/docs}/components/DocumentSearch.md +0 -0
  160. {docs → qtype/docs}/components/DocumentSource.md +0 -0
  161. {docs → qtype/docs}/components/Echo.md +0 -0
  162. {docs → qtype/docs}/components/Embedding.md +0 -0
  163. {docs → qtype/docs}/components/EmbeddingModel.md +0 -0
  164. {docs → qtype/docs}/components/FileSource.md +0 -0
  165. {docs → qtype/docs}/components/FileWriter.md +0 -0
  166. {docs → qtype/docs}/components/Flow.md +0 -0
  167. {docs → qtype/docs}/components/FlowInterface.md +0 -0
  168. {docs → qtype/docs}/components/Index.md +0 -0
  169. {docs → qtype/docs}/components/IndexUpsert.md +0 -0
  170. {docs → qtype/docs}/components/InvokeEmbedding.md +0 -0
  171. {docs → qtype/docs}/components/LLMInference.md +0 -0
  172. {docs → qtype/docs}/components/ListType.md +0 -0
  173. {docs → qtype/docs}/components/Memory.md +0 -0
  174. {docs → qtype/docs}/components/MessageRole.md +0 -0
  175. {docs → qtype/docs}/components/Model.md +0 -0
  176. {docs → qtype/docs}/components/ModelList.md +0 -0
  177. {docs → qtype/docs}/components/OAuth2AuthProvider.md +0 -0
  178. {docs → qtype/docs}/components/PromptTemplate.md +0 -0
  179. {docs → qtype/docs}/components/PythonFunctionTool.md +0 -0
  180. {docs → qtype/docs}/components/RAGChunk.md +0 -0
  181. {docs → qtype/docs}/components/RAGDocument.md +0 -0
  182. {docs → qtype/docs}/components/RAGSearchResult.md +0 -0
  183. {docs → qtype/docs}/components/Reranker.md +0 -0
  184. {docs → qtype/docs}/components/SQLSource.md +0 -0
  185. {docs → qtype/docs}/components/Search.md +0 -0
  186. {docs → qtype/docs}/components/SearchResult.md +0 -0
  187. {docs → qtype/docs}/components/SecretManager.md +0 -0
  188. {docs → qtype/docs}/components/SecretReference.md +0 -0
  189. {docs → qtype/docs}/components/TelemetrySink.md +0 -0
  190. {docs → qtype/docs}/components/ToolList.md +0 -0
  191. {docs → qtype/docs}/components/TypeList.md +0 -0
  192. {docs → qtype/docs}/components/VariableList.md +0 -0
  193. {docs → qtype/docs}/components/VectorIndex.md +0 -0
  194. {docs → qtype/docs}/components/VectorSearch.md +0 -0
  195. {docs → qtype/docs}/components/VertexAuthProvider.md +0 -0
  196. {docs → qtype/docs}/components/Writer.md +0 -0
  197. {docs → qtype/docs}/example_ui.png +0 -0
  198. {docs → qtype/docs}/index.md +0 -0
  199. {docs → qtype/docs}/legacy_how_tos/Configuration/modular-yaml.md +0 -0
  200. {docs → qtype/docs}/legacy_how_tos/Configuration/phoenix_projects.png +0 -0
  201. {docs → qtype/docs}/legacy_how_tos/Configuration/phoenix_traces.png +0 -0
  202. {docs → qtype/docs}/legacy_how_tos/Configuration/reference-by-id.md +0 -0
  203. {docs → qtype/docs}/legacy_how_tos/Configuration/telemetry-setup.md +0 -0
  204. {docs → qtype/docs}/legacy_how_tos/Data Types/custom-types.md +0 -0
  205. {docs → qtype/docs}/legacy_how_tos/Data Types/domain-types.md +0 -0
  206. {docs → qtype/docs}/legacy_how_tos/Debugging/visualize-apps.md +0 -0
  207. {docs → qtype/docs}/legacy_how_tos/Tools/api-tools.md +0 -0
  208. {docs → qtype/docs}/legacy_how_tos/Tools/python-tools.md +0 -0
  209. {examples → qtype/examples}/authentication/aws_authentication.qtype.yaml +0 -0
  210. {examples → qtype/examples}/conversational_ai/hello_world_chat.qtype.yaml +0 -0
  211. {examples → qtype/examples}/conversational_ai/simple_chatbot.qtype.yaml +0 -0
  212. {examples → qtype/examples}/data_processing/batch_processing.qtype.yaml +0 -0
  213. {examples → qtype/examples}/data_processing/cache_step_results.qtype.yaml +0 -0
  214. {examples → qtype/examples}/data_processing/collect_results.qtype.yaml +0 -0
  215. {examples → qtype/examples}/data_processing/dataflow_pipelines.qtype.yaml +0 -0
  216. {examples → qtype/examples}/data_processing/decode_json.qtype.yaml +0 -0
  217. {examples → qtype/examples}/data_processing/explode_items.qtype.yaml +0 -0
  218. {examples → qtype/examples}/data_processing/read_file.qtype.yaml +0 -0
  219. {examples → qtype/examples}/invoke_models/create_embeddings.qtype.yaml +0 -0
  220. {examples → qtype/examples}/invoke_models/simple_llm_call.qtype.yaml +0 -0
  221. {examples → qtype/examples}/language_features/include_raw.qtype.yaml +0 -0
  222. {examples → qtype/examples}/language_features/ui_hints.qtype.yaml +0 -0
  223. {examples → qtype/examples}/legacy/bedrock/data_analysis_with_telemetry.qtype.yaml +0 -0
  224. {examples → qtype/examples}/legacy/bedrock/hello_world.qtype.yaml +0 -0
  225. {examples → qtype/examples}/legacy/bedrock/hello_world_chat.qtype.yaml +0 -0
  226. {examples → qtype/examples}/legacy/bedrock/hello_world_chat_with_telemetry.qtype.yaml +0 -0
  227. {examples → qtype/examples}/legacy/bedrock/hello_world_chat_with_thinking.qtype.yaml +0 -0
  228. {examples → qtype/examples}/legacy/bedrock/hello_world_completion.qtype.yaml +0 -0
  229. {examples → qtype/examples}/legacy/bedrock/hello_world_completion_with_auth.qtype.yaml +0 -0
  230. {examples → qtype/examples}/legacy/bedrock/simple_agent_chat.qtype.yaml +0 -0
  231. {examples → qtype/examples}/legacy/chat_with_langfuse.qtype.yaml +0 -0
  232. {examples → qtype/examples}/legacy/data_processor.qtype.yaml +0 -0
  233. {examples → qtype/examples}/legacy/echo/debug_example.qtype.yaml +0 -0
  234. {examples → qtype/examples}/legacy/echo/prompt.qtype.yaml +0 -0
  235. {examples → qtype/examples}/legacy/echo/test.qtype.yaml +0 -0
  236. {examples → qtype/examples}/legacy/echo/video.qtype.yaml +0 -0
  237. {examples → qtype/examples}/legacy/field_extractor_example.qtype.yaml +0 -0
  238. {examples → qtype/examples}/legacy/multi_flow_example.qtype.yaml +0 -0
  239. {examples → qtype/examples}/legacy/openai/hello_world_chat.qtype.yaml +0 -0
  240. {examples → qtype/examples}/legacy/openai/hello_world_chat_with_telemetry.qtype.yaml +0 -0
  241. {examples → qtype/examples}/legacy/rag.qtype.yaml +0 -0
  242. {examples → qtype/examples}/legacy/time_utilities.qtype.yaml +0 -0
  243. {examples → qtype/examples}/legacy/vertex/hello_world_chat.qtype.yaml +0 -0
  244. {examples → qtype/examples}/legacy/vertex/hello_world_completion.qtype.yaml +0 -0
  245. {examples → qtype/examples}/legacy/vertex/hello_world_completion_with_auth.qtype.yaml +0 -0
  246. {examples → qtype/examples}/observability_debugging/trace_with_opentelemetry.qtype.yaml +0 -0
  247. {examples → qtype/examples}/research_assistant/research_assistant.qtype.yaml +0 -0
  248. {examples → qtype/examples}/research_assistant/tavily.oas.yaml +0 -0
  249. {examples → qtype/examples}/tutorials/01_hello_world.qtype.yaml +0 -0
  250. {examples → qtype/examples}/tutorials/02_conversational_chat.qtype.yaml +0 -0
  251. {qtype-0.1.12.dist-info → qtype-0.1.13.dist-info}/entry_points.txt +0 -0
  252. {qtype-0.1.12.dist-info → qtype-0.1.13.dist-info}/licenses/LICENSE +0 -0
@@ -34,6 +34,5 @@ steps:
34
34
  ## See Also
35
35
 
36
36
  - [PromptTemplate Reference](../../components/PromptTemplate.md)
37
- - [How-To: Include Raw Text from Other Files](../../How%20To/Language%20Features/include_raw_text.md)
38
- - [How-To: Invoke LLMs with System Messages](invoke_llms_with_system_messages.md)
39
- - [Tutorial: Your First QType Application](../../Tutorials/your_first_qtype_application.md)
37
+ - [Include Raw Text from Other Files](../Language%20Features/include_raw_text_from_other_files.md)
38
+ - [Call Large Language Models](call_large_language_models.md)
@@ -44,4 +44,5 @@ qtype run include_raw.qtype.yaml -i '{"theme":"a robot learning to paint","tone"
44
44
  ## See Also
45
45
 
46
46
  - [PromptTemplate Reference](../../components/PromptTemplate.md)
47
- - [Reference Entities by ID](../../How%20To/Language%20Features/reference_entities_by_id.md)
47
+ - [Include QType YAML](include_qtype_yaml.md)
48
+ - [Reuse Prompts with Templates](../Invoke%20Models/reuse_prompts_with_templates.md)
@@ -46,6 +46,6 @@ flows:
46
46
 
47
47
  ## See Also
48
48
 
49
+ - [Include QType YAML](include_qtype_yaml.md)
49
50
  - [Tutorial: Your First QType Application](../../Tutorials/01-first-qtype-application.md)
50
- - [Model Reference](../../components/Model.md)
51
- - [APIKeyAuthProvider Reference](../../components/APIKeyAuthProvider.md)
51
+ - [Application Reference](../../components/Application.md)
@@ -0,0 +1,29 @@
1
+ # Use QType Agent Skills
2
+
3
+ Enhance GitHub Copilot or Claude Code with domain-specific QType expertise by loading pre-built agent skills that help you architect your vision faster.
4
+
5
+ **Requires:** Active `qtype-mcp` MCP server
6
+
7
+ ### Generate Skills
8
+
9
+ Simply:
10
+ ```
11
+ qtype generate skills
12
+ ```
13
+
14
+ and the skills will be written `.claude` for you.
15
+
16
+ ## Available QType Skills
17
+
18
+ ### QType Architect
19
+
20
+ Expert assistant for designing and building AI applications using QType's declarative YAML language.
21
+
22
+ **Capabilities:**
23
+ - Designs flows from requirements to implementation
24
+ - Generates architecture visualizations in VSCode
25
+
26
+ ## See Also
27
+
28
+ - [Use QType MCP](use_qtype_mcp.md)
29
+ - [Invoke Other Flows](../Data%20Processing/invoke_other_flows.md)
@@ -43,5 +43,6 @@ qtype run app.qtype.yaml
43
43
 
44
44
  ## See Also
45
45
 
46
+ - [Use API Key Authentication](../Authentication/use_api_key_authentication.md)
47
+ - [Configure AWS Authentication](../Authentication/configure_aws_authentication.md)
46
48
  - [Tutorial: Your First QType Application](../../Tutorials/01-first-qtype-application.md)
47
- - [APIKeyAuthProvider Reference](../../components/APIKeyAuthProvider.md)
@@ -0,0 +1,42 @@
1
+ # Use Optional Variables
2
+
3
+ Mark variables as optional to handle cases where data may be missing or unset, allowing your flow to continue gracefully instead of failing.
4
+
5
+ ### QType YAML
6
+
7
+ ```yaml
8
+ variables:
9
+ - id: email
10
+ type: text? # Optional text variable
11
+ ```
12
+
13
+ ### Explanation
14
+
15
+ - **`?` suffix**: Shorthand syntax to mark a variable as optional
16
+ - **Optional variables**: Can be `None` or set to a value
17
+ - **FieldExtractor**: Returns `None` for optional output variables when JSONPath finds no matches, instead of raising an error. If you make the variable non-optional, it will raise an error.
18
+
19
+ ## Complete Example
20
+
21
+ ```yaml
22
+ --8<-- "../examples/language_features/optional_variables.qtype.yaml"
23
+ ```
24
+
25
+ **Run it:**
26
+ ```bash
27
+ # When email field exists
28
+ qtype run examples/language_features/optional_variables.qtype.yaml -i '{"user_profile": {"email":"hello@domain.com"}}'
29
+ # Results:
30
+ # email: hello@domain.com
31
+
32
+ # When email field is missing
33
+ qtype run examples/language_features/optional_variables.qtype.yaml -i '{"user_profile": "just text"}'
34
+ # Results:
35
+ # email: None
36
+ ```
37
+
38
+ ## See Also
39
+
40
+ - [Variable Reference](../../components/Variable.md)
41
+ - [FieldExtractor Reference](../../components/FieldExtractor.md)
42
+ - [Tutorial: Structured Data](../../Tutorials/03-structured-data.md)
@@ -41,7 +41,7 @@ Add the QType MCP server to your workspace's `.vscode/mcp.json`:
41
41
  ```json
42
42
  {
43
43
  "servers": {
44
- "qtype": {
44
+ "qtype-mcp": {
45
45
  "type": "stdio",
46
46
  "command": "qtype",
47
47
  "cwd": "${workspaceFolder}",
@@ -54,6 +54,6 @@ Add the QType MCP server to your workspace's `.vscode/mcp.json`:
54
54
 
55
55
  ## See Also
56
56
 
57
- - [MCP Server Implementation](../../components/MCP.md)
58
- - [GitHub Copilot Documentation](https://code.visualstudio.com/docs/copilot/copilot-chat)
59
- - [Model Context Protocol](https://modelcontextprotocol.io/)
57
+ - [Use QType Agent Skills](use_agent_skills.md)
58
+ - [Validate QType YAML](../Observability%20%26%20Debugging/validate_qtype_yaml.md)
59
+ - [Visualize Application Architecture](../Observability%20%26%20Debugging/visualize_application_architecture.md)
@@ -46,4 +46,4 @@ Then open `http://localhost:6006` in your browser to see the traced execution.
46
46
 
47
47
  - [Application Reference](../../components/Application.md)
48
48
  - [Validate QType YAML](validate_qtype_yaml.md)
49
- - [Visualize Application Architecture](visualize_application_architecture.md)
49
+ - [CLI Reference](../../Reference/cli.md)
@@ -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)
@@ -63,8 +63,8 @@ qtype run app.qtype.yaml --input-file inputs.csv --output results.parquet
63
63
 
64
64
  #### See Also
65
65
 
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)
66
+ - [Pass Inputs On The CLI](../How%20To/Command%20Line%20Usage/pass_inputs_on_the_cli.md)
67
+ - [Load Multiple Inputs from Files](../How%20To/Command%20Line%20Usage/load_multiple_inputs_from_files.md)
68
68
  - [Tutorial: Your First QType Application](../Tutorials/01-first-qtype-application.md)
69
69
 
70
70
  ---
@@ -99,8 +99,8 @@ qtype validate app.qtype.yaml --print
99
99
 
100
100
  #### See Also
101
101
 
102
- - [How To: Validate QType YAML](../How%20To/Observability%20&%20Debugging/validate_qtype_yaml.md)
103
- - [Reference: Semantic Validation Rules](semantic-validation-rules.md)
102
+ - [Validate QType YAML](../How%20To/Observability%20%26%20Debugging/validate_qtype_yaml.md)
103
+ - [Semantic Validation Rules](semantic-validation-rules.md)
104
104
 
105
105
  ---
106
106
 
@@ -141,11 +141,9 @@ qtype serve app.qtype.yaml --reload
141
141
 
142
142
  #### See Also
143
143
 
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)
144
+ - [Serve Flows as APIs](../How%20To/Qtype%20Server/serve_flows_as_apis.md)
145
+ - [Serve Flows as UI](../How%20To/Qtype%20Server/serve_flows_as_ui.md)
146
+ - [Tutorial: Conversational Chatbot](../Tutorials/02-conversational-chatbot.md)
149
147
 
150
148
  ---
151
149
 
@@ -230,7 +228,7 @@ qtype visualize app.qtype.yaml --output architecture.mmd
230
228
 
231
229
  #### See Also
232
230
 
233
- - [How To: Visualize Application Architecture](../How%20To/Observability%20&%20Debugging/visualize_application_architecture.md)
231
+ - [Visualize Application Architecture](../How%20To/Observability%20%26%20Debugging/visualize_application_architecture.md)
234
232
 
235
233
  ---
236
234
 
@@ -274,8 +272,8 @@ qtype convert module myapp.utils
274
272
 
275
273
  **See Also:**
276
274
 
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)
275
+ - [Create Tools from Python Modules](../How%20To/Tools%20%26%20Integration/create_tools_from_python_modules.md)
276
+ - [Tutorial: Tools and Function Calling](../Tutorials/04-tools-and-function-calling.md)
279
277
 
280
278
  ##### convert api
281
279
 
@@ -307,8 +305,8 @@ qtype convert api https://petstore3.swagger.io/api/v3/openapi.json --output pets
307
305
 
308
306
  **See Also:**
309
307
 
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)
308
+ - [Create Tools from OpenAPI Specifications](../How%20To/Tools%20%26%20Integration/create_tools_from_openapi_specifications.md)
309
+ - [Tutorial: Tools and Function Calling](../Tutorials/04-tools-and-function-calling.md)
312
310
 
313
311
  ---
314
312
 
@@ -327,7 +325,7 @@ This command is primarily used for QType development and maintenance.
327
325
  - **`commons`** - Generates the commons library tools from `tools.py`
328
326
  - **`schema`** - Generates the JSON schema for the QType DSL from `model.py`
329
327
  - **`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/))
328
+ - **`semantic-model`** - Generates the semantic model from QType DSL (See [Contributing](../Contributing/index.md))
331
329
 
332
330
  ---
333
331
 
@@ -93,3 +93,7 @@ my-qtype-plugin/
93
93
  └── tests/
94
94
  └── test_plugin.py
95
95
  ```
96
+
97
+ ## See Also
98
+
99
+ - [CLI Reference](cli.md)
@@ -176,4 +176,9 @@ This document lists all semantic validation rules enforced by QType. These rules
176
176
  ## VectorSearch
177
177
 
178
178
  - Must have exactly 1 input of type `text`
179
- - Must have exactly 1 output of type `list[RAGSearchResult]`
179
+ - Must have exactly 1 output of type `list[RAGSearchResult]`
180
+
181
+ ## See Also
182
+
183
+ - [Validate QType YAML](../How%20To/Observability%20%26%20Debugging/validate_qtype_yaml.md)
184
+ - [CLI Reference](cli.md)
@@ -0,0 +1 @@
1
+ title: Tutorials
@@ -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
 
@@ -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
 
@@ -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.