kiln-ai 0.21.0__py3-none-any.whl → 0.22.0__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.

Potentially problematic release.


This version of kiln-ai might be problematic. Click here for more details.

Files changed (45) hide show
  1. kiln_ai/adapters/extractors/litellm_extractor.py +52 -32
  2. kiln_ai/adapters/extractors/test_litellm_extractor.py +169 -71
  3. kiln_ai/adapters/ml_embedding_model_list.py +330 -28
  4. kiln_ai/adapters/ml_model_list.py +503 -23
  5. kiln_ai/adapters/model_adapters/litellm_adapter.py +34 -7
  6. kiln_ai/adapters/model_adapters/test_litellm_adapter.py +78 -0
  7. kiln_ai/adapters/model_adapters/test_litellm_adapter_tools.py +119 -5
  8. kiln_ai/adapters/model_adapters/test_saving_adapter_results.py +9 -3
  9. kiln_ai/adapters/model_adapters/test_structured_output.py +6 -9
  10. kiln_ai/adapters/test_ml_embedding_model_list.py +89 -279
  11. kiln_ai/adapters/test_ml_model_list.py +0 -10
  12. kiln_ai/datamodel/basemodel.py +31 -3
  13. kiln_ai/datamodel/external_tool_server.py +206 -54
  14. kiln_ai/datamodel/extraction.py +14 -0
  15. kiln_ai/datamodel/task.py +5 -0
  16. kiln_ai/datamodel/task_output.py +41 -11
  17. kiln_ai/datamodel/test_attachment.py +3 -3
  18. kiln_ai/datamodel/test_basemodel.py +269 -13
  19. kiln_ai/datamodel/test_datasource.py +50 -0
  20. kiln_ai/datamodel/test_external_tool_server.py +534 -152
  21. kiln_ai/datamodel/test_extraction_model.py +31 -0
  22. kiln_ai/datamodel/test_task.py +35 -1
  23. kiln_ai/datamodel/test_tool_id.py +106 -1
  24. kiln_ai/datamodel/tool_id.py +36 -0
  25. kiln_ai/tools/base_tool.py +12 -3
  26. kiln_ai/tools/built_in_tools/math_tools.py +12 -4
  27. kiln_ai/tools/kiln_task_tool.py +158 -0
  28. kiln_ai/tools/mcp_server_tool.py +2 -2
  29. kiln_ai/tools/mcp_session_manager.py +50 -24
  30. kiln_ai/tools/rag_tools.py +12 -5
  31. kiln_ai/tools/test_kiln_task_tool.py +527 -0
  32. kiln_ai/tools/test_mcp_server_tool.py +4 -15
  33. kiln_ai/tools/test_mcp_session_manager.py +186 -226
  34. kiln_ai/tools/test_rag_tools.py +86 -5
  35. kiln_ai/tools/test_tool_registry.py +199 -5
  36. kiln_ai/tools/tool_registry.py +49 -17
  37. kiln_ai/utils/filesystem.py +4 -4
  38. kiln_ai/utils/open_ai_types.py +19 -2
  39. kiln_ai/utils/pdf_utils.py +21 -0
  40. kiln_ai/utils/test_open_ai_types.py +88 -12
  41. kiln_ai/utils/test_pdf_utils.py +14 -1
  42. {kiln_ai-0.21.0.dist-info → kiln_ai-0.22.0.dist-info}/METADATA +3 -1
  43. {kiln_ai-0.21.0.dist-info → kiln_ai-0.22.0.dist-info}/RECORD +45 -43
  44. {kiln_ai-0.21.0.dist-info → kiln_ai-0.22.0.dist-info}/WHEEL +0 -0
  45. {kiln_ai-0.21.0.dist-info → kiln_ai-0.22.0.dist-info}/licenses/LICENSE.txt +0 -0
@@ -8,9 +8,13 @@ from openai.types.chat import (
8
8
  from openai.types.chat import (
9
9
  ChatCompletionMessageParam as OpenAIChatCompletionMessageParam,
10
10
  )
11
+ from openai.types.chat import (
12
+ ChatCompletionToolMessageParam as OpenAIChatCompletionToolMessageParam,
13
+ )
11
14
 
12
15
  from kiln_ai.utils.open_ai_types import (
13
16
  ChatCompletionAssistantMessageParamWrapper,
17
+ ChatCompletionToolMessageParamWrapper,
14
18
  )
15
19
  from kiln_ai.utils.open_ai_types import (
16
20
  ChatCompletionMessageParam as KilnChatCompletionMessageParam,
@@ -45,10 +49,40 @@ def test_assistant_message_param_properties_match():
45
49
  )
46
50
 
47
51
 
52
+ def test_tool_message_param_properties_match():
53
+ """
54
+ Test that ChatCompletionToolMessageParamWrapper has all the same properties
55
+ as OpenAI's ChatCompletionToolMessageParam, plus the kiln_task_tool_data property.
56
+
57
+ This will catch any changes to the OpenAI types that we haven't updated our wrapper for.
58
+ """
59
+ # Get annotations for both types
60
+ openai_annotations = OpenAIChatCompletionToolMessageParam.__annotations__
61
+ kiln_annotations = ChatCompletionToolMessageParamWrapper.__annotations__
62
+
63
+ # Check that both have the same property names
64
+ openai_properties = set(openai_annotations.keys())
65
+ kiln_properties = set(kiln_annotations.keys())
66
+
67
+ # Kiln task tool data is an added property. Confirm it's there and remove it from the comparison.
68
+ assert "kiln_task_tool_data" in kiln_properties, (
69
+ "Kiln should have kiln_task_tool_data"
70
+ )
71
+ kiln_properties.remove("kiln_task_tool_data")
72
+
73
+ assert openai_properties == kiln_properties, (
74
+ f"Property names don't match. "
75
+ f"OpenAI has: {openai_properties}, "
76
+ f"Kiln has: {kiln_properties}, "
77
+ f"Missing from Kiln: {openai_properties - kiln_properties}, "
78
+ f"Extra in Kiln: {kiln_properties - openai_properties}"
79
+ )
80
+
81
+
48
82
  def test_chat_completion_message_param_union_compatibility():
49
83
  """
50
84
  Test that our ChatCompletionMessageParam union contains the same types as OpenAI's,
51
- except with our wrapper instead of the original assistant message param.
85
+ except with our wrappers instead of the original assistant and tool message params.
52
86
  """
53
87
  # Get the union members for both types
54
88
  openai_union_args = get_args(OpenAIChatCompletionMessageParam)
@@ -70,10 +104,16 @@ def test_chat_completion_message_param_union_compatibility():
70
104
  openai_type_names = {arg.__name__ for arg in openai_union_args}
71
105
  kiln_type_names = {arg.__name__ for arg in kiln_union_args}
72
106
 
73
- # Expected difference: OpenAI has ChatCompletionAssistantMessageParam,
74
- # Kiln has ChatCompletionAssistantMessageParamWrapper
75
- expected_openai_only = {"ChatCompletionAssistantMessageParam"}
76
- expected_kiln_only = {"ChatCompletionAssistantMessageParamWrapper"}
107
+ # Expected differences: OpenAI has ChatCompletionAssistantMessageParam and ChatCompletionToolMessageParam,
108
+ # Kiln has ChatCompletionAssistantMessageParamWrapper and ChatCompletionToolMessageParamWrapper
109
+ expected_openai_only = {
110
+ "ChatCompletionAssistantMessageParam",
111
+ "ChatCompletionToolMessageParam",
112
+ }
113
+ expected_kiln_only = {
114
+ "ChatCompletionAssistantMessageParamWrapper",
115
+ "ChatCompletionToolMessageParamWrapper",
116
+ }
77
117
 
78
118
  openai_only = openai_type_names - kiln_type_names
79
119
  kiln_only = kiln_type_names - openai_type_names
@@ -91,7 +131,6 @@ def test_chat_completion_message_param_union_compatibility():
91
131
  "ChatCompletionDeveloperMessageParam",
92
132
  "ChatCompletionSystemMessageParam",
93
133
  "ChatCompletionUserMessageParam",
94
- "ChatCompletionToolMessageParam",
95
134
  "ChatCompletionFunctionMessageParam",
96
135
  }
97
136
 
@@ -100,17 +139,17 @@ def test_chat_completion_message_param_union_compatibility():
100
139
  )
101
140
 
102
141
 
103
- def test_wrapper_can_be_instantiated():
104
- """Test that our wrapper can be instantiated with the same data as the original."""
105
- # Create a sample message that should work with both types
106
- sample_message: ChatCompletionAssistantMessageParamWrapper = {
142
+ def test_assistant_message_wrapper_can_be_instantiated():
143
+ """Test that our assistant message wrapper can be instantiated with the same data as the original."""
144
+ # Test basic assistant message
145
+ sample_assistant_message: ChatCompletionAssistantMessageParamWrapper = {
107
146
  "role": "assistant",
108
147
  "content": "Hello, world!",
109
148
  }
110
149
 
111
150
  # This should work without type errors (runtime test)
112
- assert sample_message["role"] == "assistant"
113
- assert sample_message.get("content") == "Hello, world!"
151
+ assert sample_assistant_message["role"] == "assistant"
152
+ assert sample_assistant_message.get("content") == "Hello, world!"
114
153
 
115
154
  # Test with tool calls using List instead of Iterable
116
155
  sample_with_tools: ChatCompletionAssistantMessageParamWrapper = {
@@ -129,3 +168,40 @@ def test_wrapper_can_be_instantiated():
129
168
  tool_calls = sample_with_tools.get("tool_calls", [])
130
169
  if tool_calls:
131
170
  assert tool_calls[0]["id"] == "call_123"
171
+
172
+
173
+ def test_tool_message_wrapper_can_be_instantiated():
174
+ """Test that our tool message wrapper can be instantiated with the same data as the original."""
175
+ # Test basic tool message
176
+ sample_tool_message: ChatCompletionToolMessageParamWrapper = {
177
+ "role": "tool",
178
+ "content": "Tool response",
179
+ "tool_call_id": "call_123",
180
+ }
181
+
182
+ assert sample_tool_message["role"] == "tool"
183
+ assert sample_tool_message.get("content") == "Tool response"
184
+ assert sample_tool_message.get("tool_call_id") == "call_123"
185
+
186
+ # Test with kiln_task_tool_data
187
+ sample_with_kiln_data: ChatCompletionToolMessageParamWrapper = {
188
+ "role": "tool",
189
+ "content": "Tool response",
190
+ "tool_call_id": "call_123",
191
+ "kiln_task_tool_data": "project_123:::tool_456:::task_789:::run_101",
192
+ }
193
+
194
+ assert (
195
+ sample_with_kiln_data.get("kiln_task_tool_data")
196
+ == "project_123:::tool_456:::task_789:::run_101"
197
+ )
198
+
199
+ # Test with kiln_task_tool_data as None
200
+ sample_with_none_kiln_data: ChatCompletionToolMessageParamWrapper = {
201
+ "role": "tool",
202
+ "content": "Tool response",
203
+ "tool_call_id": "call_123",
204
+ "kiln_task_tool_data": None,
205
+ }
206
+
207
+ assert sample_with_none_kiln_data.get("kiln_task_tool_data") is None
@@ -1,8 +1,11 @@
1
+ import tempfile
2
+ from pathlib import Path
3
+
1
4
  import pytest
2
5
  from pypdf import PdfReader
3
6
 
4
7
  from conftest import MockFileFactoryMimeType
5
- from kiln_ai.utils.pdf_utils import split_pdf_into_pages
8
+ from kiln_ai.utils.pdf_utils import convert_pdf_to_images, split_pdf_into_pages
6
9
 
7
10
 
8
11
  async def test_split_pdf_into_pages_success(mock_file_factory):
@@ -71,3 +74,13 @@ async def test_split_pdf_into_pages_temporary_directory_creation(mock_file_facto
71
74
  # Verify the temporary directory is cleaned up
72
75
  for temp_dir in captured_temp_dirs:
73
76
  assert not temp_dir.exists()
77
+
78
+
79
+ async def test_convert_pdf_to_images(mock_file_factory):
80
+ """Test that convert_pdf_to_images successfully converts a PDF into individual images."""
81
+ test_file = mock_file_factory(MockFileFactoryMimeType.PDF)
82
+ with tempfile.TemporaryDirectory() as temp_dir:
83
+ images = await convert_pdf_to_images(test_file, Path(temp_dir))
84
+ assert len(images) == 2
85
+ assert all(image.exists() for image in images)
86
+ assert all(image.suffix == ".png" for image in images)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: kiln-ai
3
- Version: 0.21.0
3
+ Version: 0.22.0
4
4
  Summary: Kiln AI
5
5
  Project-URL: Homepage, https://kiln.tech
6
6
  Project-URL: Repository, https://github.com/Kiln-AI/kiln
@@ -28,8 +28,10 @@ Requires-Dist: llama-index-vector-stores-lancedb>=0.3.3
28
28
  Requires-Dist: llama-index>=0.13.3
29
29
  Requires-Dist: openai>=1.53.0
30
30
  Requires-Dist: pdoc>=15.0.0
31
+ Requires-Dist: pillow>=11.1.0
31
32
  Requires-Dist: pydantic>=2.9.2
32
33
  Requires-Dist: pypdf>=6.0.0
34
+ Requires-Dist: pypdfium2>=4.30.0
33
35
  Requires-Dist: pytest-benchmark>=5.1.0
34
36
  Requires-Dist: pytest-cov>=6.0.0
35
37
  Requires-Dist: pyyaml>=6.0.2
@@ -2,8 +2,8 @@ kiln_ai/__init__.py,sha256=Sc4z8LRVFMwJUoc_DPVUriSXTZ6PO9MaJ80PhRbKyB8,34
2
2
  kiln_ai/adapters/__init__.py,sha256=8QjnTWzywb49XcLjhc8xZUwKBRATX2k-sOAQMX2Vjcc,1151
3
3
  kiln_ai/adapters/adapter_registry.py,sha256=eVvtAfO-QMgGm4XlncWSf4z1Y7qq5cCwscmQEJNwKMY,2522
4
4
  kiln_ai/adapters/docker_model_runner_tools.py,sha256=GOX_qwg2BNZp20cgota7iSW0YIdSqRHCleAYjIAGwws,3957
5
- kiln_ai/adapters/ml_embedding_model_list.py,sha256=sOCYe5E7BFtiHHpx1a6qHrLRZ_b9JNBPNslJQEqdK1Y,6369
6
- kiln_ai/adapters/ml_model_list.py,sha256=hh77o5LlPYWLFrQst14P69bW1tgffUCnvh_ViH9IQqI,149580
5
+ kiln_ai/adapters/ml_embedding_model_list.py,sha256=YsgdUOLPSDHnk48TDZJCsmuNUiABp-5n573BAHOFEpM,18234
6
+ kiln_ai/adapters/ml_model_list.py,sha256=sZgaR8RLv7XxUJzLicAi-kZ22_5M5Z1Wiy6gzo7fDLU,168429
7
7
  kiln_ai/adapters/ollama_tools.py,sha256=WqQOYOrf07lvRJ2pd1_k6Z8AJRoajtt_uNsaMJr8MR4,5622
8
8
  kiln_ai/adapters/prompt_builders.py,sha256=R5IgZ7I2Ftx7i67xQb9UwcHE5gbPxgvgys_UAs3fc6A,15165
9
9
  kiln_ai/adapters/provider_tools.py,sha256=3CsfFJTxMs_X60tOc-SNIr9FkZr-HjUvwRifMgkZjYg,23647
@@ -11,8 +11,8 @@ kiln_ai/adapters/remote_config.py,sha256=9ZuTD0nvAzRwEvqQvRYRDWXslOOBrArguRk32ju
11
11
  kiln_ai/adapters/run_output.py,sha256=QDBP14i5F6YsH3ymJp1V-3JijbNVd9BQ656WLVUGx1g,383
12
12
  kiln_ai/adapters/test_adapter_registry.py,sha256=KVT5n1SABScbEjOySSR-zPU22pDbwxwMdnTGU1DOETw,32107
13
13
  kiln_ai/adapters/test_docker_model_runner_tools.py,sha256=xv8cDZ1LPfqjSoLtakEPet6jwHvZ14dtyjzWXWM6pYM,10795
14
- kiln_ai/adapters/test_ml_embedding_model_list.py,sha256=xJLMyLukFINoH3tEhYouIDxtduvnL6W6uSSzEpG98ds,17140
15
- kiln_ai/adapters/test_ml_model_list.py,sha256=dzTkTbujWEj1zey5NLaJI9WHC5KILdbO4zSo7B3fE5g,18480
14
+ kiln_ai/adapters/test_ml_embedding_model_list.py,sha256=FD-tOnPltEig8ltwulvSxT5817zzAYAdq5HcdD_NIRs,8725
15
+ kiln_ai/adapters/test_ml_model_list.py,sha256=GTuIdRHRSkZxNJMambkQhLppOsRokURYjGBEh12CTng,18101
16
16
  kiln_ai/adapters/test_ollama_tools.py,sha256=lJ-GmQWEp60xzueka2w8Bcs2iMBYKXOE0B8Dn5tAfT8,14650
17
17
  kiln_ai/adapters/test_prompt_adaptors.py,sha256=4b3tn57RoPGDzz-L19hO3HQIt8KRQOEIH4nynLZGNn4,8426
18
18
  kiln_ai/adapters/test_prompt_builders.py,sha256=wyGebfm6-pPgF2I-B1RHsx_m-Li3qNm81jebIIFr-TE,22586
@@ -55,12 +55,12 @@ kiln_ai/adapters/extractors/base_extractor.py,sha256=FJO5NsUCercjseGAJYXS00Q2wUz
55
55
  kiln_ai/adapters/extractors/encoding.py,sha256=E8xJyqx6H5KeTQpVKlgcqijCshK8LXinWUi6F7p1-lA,606
56
56
  kiln_ai/adapters/extractors/extractor_registry.py,sha256=kpewlItygFUSHNA8bpG358of5hftS439qxLXm4ofZEE,1713
57
57
  kiln_ai/adapters/extractors/extractor_runner.py,sha256=8BuBWiNzhVWwLfgvT94bHOTRgUmb-MAtNIw-i07aD1w,3800
58
- kiln_ai/adapters/extractors/litellm_extractor.py,sha256=6QDd8v5WaF-LYX9UOI6J6g0rmabHFTxsgl53t8X21yE,14886
58
+ kiln_ai/adapters/extractors/litellm_extractor.py,sha256=TREVLXDHV299MR1rK_FAsgxQDV8e000n4xwjgeRptJo,15654
59
59
  kiln_ai/adapters/extractors/test_base_extractor.py,sha256=X8iwqgFpeFJ01J1t7fslP2DATVn1j-lDeDshh4mEXSM,7355
60
60
  kiln_ai/adapters/extractors/test_encoding.py,sha256=zrvjBxpmv13qy4my6az-LYyMk36vU2ifVhl16ZPnF4A,2011
61
61
  kiln_ai/adapters/extractors/test_extractor_registry.py,sha256=fNl5S4V37VnT_xTVyocTAFt3V-pTDPtyJwzRTLjbnl0,7209
62
62
  kiln_ai/adapters/extractors/test_extractor_runner.py,sha256=0Rm9LjZdIHqxWmHXbseolUZ27yoS6vfVyQk-kmvJP1s,5714
63
- kiln_ai/adapters/extractors/test_litellm_extractor.py,sha256=_BkYmq0DluzbE7RYUHd5Odt9tpfAZvh3v3umnr1sKgI,43480
63
+ kiln_ai/adapters/extractors/test_litellm_extractor.py,sha256=2fPkovV9Y88D6oZmD90udJ3Ce3mjNiX7Hw07ktij8ho,47303
64
64
  kiln_ai/adapters/fine_tune/__init__.py,sha256=l3ZV8c_IhvLxdPRcbfs67nvqLbCM1fWqFIm3u3oPQpI,257
65
65
  kiln_ai/adapters/fine_tune/base_finetune.py,sha256=4mLrFHvERU76_e8bCuOGLTc5UAdFn4UUCuPAe_3uD0Q,5875
66
66
  kiln_ai/adapters/fine_tune/dataset_formatter.py,sha256=oWYXOdkRaVZR_mIeox2gLf5_LZJ79hHV9PThk82zHtU,12928
@@ -77,13 +77,13 @@ kiln_ai/adapters/fine_tune/together_finetune.py,sha256=KpJBZt0NBNUNLsVEYYC4Dzob1
77
77
  kiln_ai/adapters/fine_tune/vertex_finetune.py,sha256=Ik6Ov711-oruJnMHpVZTPimWJY2W_JnfdKIdR2djGrc,8545
78
78
  kiln_ai/adapters/model_adapters/__init__.py,sha256=m5GRtOHwVVvp_XDOss8c1X3NFf1wQQlC2eBgI4tXQhM,212
79
79
  kiln_ai/adapters/model_adapters/base_adapter.py,sha256=6aktTD3vSTLxVYVpKK0IhhLpjQCHgvBFSpo8T2hJ6To,14749
80
- kiln_ai/adapters/model_adapters/litellm_adapter.py,sha256=HABd-nifoISnmdKyMx_EK0VVEvbwoAi1T7D_BccRim0,28431
80
+ kiln_ai/adapters/model_adapters/litellm_adapter.py,sha256=MAZwQVdQ4UaV0B03T3o67-JLP4zlm_i4V0Y7BiJlOxY,29984
81
81
  kiln_ai/adapters/model_adapters/litellm_config.py,sha256=zOQEkYKeoQ0FIbxTkyyoaGtaQiB9eYK3IuyUgqSwzLE,485
82
82
  kiln_ai/adapters/model_adapters/test_base_adapter.py,sha256=jCsBnhScr1jurugm80Bf_7w26A7RMb2uIUW8MndN4p8,22191
83
- kiln_ai/adapters/model_adapters/test_litellm_adapter.py,sha256=O_ZOHWlmU22_c5tl7E5OhNXiWAZDTJRQbnIsHIwKUEA,34277
84
- kiln_ai/adapters/model_adapters/test_litellm_adapter_tools.py,sha256=wegq-zYDFf3YTnOAH2OkCR8Y43H2dTDtDa4k_RqeOCc,40231
85
- kiln_ai/adapters/model_adapters/test_saving_adapter_results.py,sha256=9XFa4L3ZBbD0kKi_TzoGEIx-0aYaaVUmI24KRmzK8MU,9719
86
- kiln_ai/adapters/model_adapters/test_structured_output.py,sha256=-muJlaDHqJiFNEXlSvKPTHA6d1MrXekqTxVoh7-rils,17286
83
+ kiln_ai/adapters/model_adapters/test_litellm_adapter.py,sha256=3k8LZJ4ouQzT3l5-jRuYYxOk06S8Pc1ogsyuHvw-ggI,37351
84
+ kiln_ai/adapters/model_adapters/test_litellm_adapter_tools.py,sha256=0XVzf5SmCV0omcqFrfAMucdgM9i6a0Y4RvfYXkVyc5k,44706
85
+ kiln_ai/adapters/model_adapters/test_saving_adapter_results.py,sha256=cyPzuq-S2qZnKrr0JuNp3UJ8Af7iG3epjs6gkGW06RE,9770
86
+ kiln_ai/adapters/model_adapters/test_structured_output.py,sha256=dRwdVDcsKnuJ7qu7iutEMa7B5oGIaGdYqwtqlqQs3A4,16967
87
87
  kiln_ai/adapters/parsers/__init__.py,sha256=1eAJmjSfVShnC7batg2ZnBX0rARDDNdredLMYxmwoiA,202
88
88
  kiln_ai/adapters/parsers/base_parser.py,sha256=AE8UYCttmVXbilpICotnDdFYTFhGMiBJHrxIUgPTAWM,280
89
89
  kiln_ai/adapters/parsers/json_parser.py,sha256=IszrBrhIFrrVr76UZsuejkBdqpZG27mU72264HVgVzE,1274
@@ -111,15 +111,15 @@ kiln_ai/adapters/vector_store/test_lancedb_adapter.py,sha256=wtRaj0675YBJokkrGrY
111
111
  kiln_ai/adapters/vector_store/test_vector_store_registry.py,sha256=w0hpXte0XnxbkWYFGWfFuu33GgQUPcY2HE7habpZ_C4,6809
112
112
  kiln_ai/adapters/vector_store/vector_store_registry.py,sha256=jsE1OS964Ai7cJ5tlrp_PZuxEImHQSSR8DGAqEgDavc,1123
113
113
  kiln_ai/datamodel/__init__.py,sha256=uxLwjHxWTbYw9LVRJtK02cUrbDZCKyfYxgYJxrOjFoA,2091
114
- kiln_ai/datamodel/basemodel.py,sha256=jGBWurPsl0lJcn5VPF3wn4RT0NENLF3DegAr2QIzH-M,30873
114
+ kiln_ai/datamodel/basemodel.py,sha256=GZhZkDF6y9xN3Gn4h63FE3tEjcyGqoVJrC5QNfBXpsQ,32076
115
115
  kiln_ai/datamodel/chunk.py,sha256=LfBjaJEsPLBXfsFEofVLAfaISmfvsvzAmmCYVtosV7U,5535
116
116
  kiln_ai/datamodel/datamodel_enums.py,sha256=QJd8i-zXOrVTynaFslJpKQFo2OGvc8DT3B_Elc2KBl4,4361
117
117
  kiln_ai/datamodel/dataset_filters.py,sha256=zXS5QeCqWa1vAxs3Pyy5FJtySx9yYJzxsCMANd23-3c,5502
118
118
  kiln_ai/datamodel/dataset_split.py,sha256=dAqwwNtWhKntEGJtauT0-YDG8aLFISelYS7o8TWG0TE,5923
119
119
  kiln_ai/datamodel/embedding.py,sha256=NBm5OewKkvKJwqMaZhOrP_L_Rc8FWyB0CwDIihZkzf0,2385
120
120
  kiln_ai/datamodel/eval.py,sha256=vHDpwDBGUqveihu7bqsvPmcvuOKHTMBVd4a3zMbEo3s,15894
121
- kiln_ai/datamodel/external_tool_server.py,sha256=lzf71nm8udH4GGdr3ABPGOpuLTd9mGrf2FmckSOh-wE,11983
122
- kiln_ai/datamodel/extraction.py,sha256=YjGgIaiKG9Jj4TqVTpAD9rSjQlLBBavgpHD0qp4D2kM,9518
121
+ kiln_ai/datamodel/external_tool_server.py,sha256=NW7MdT0zWRQ-iDWQanDQo2U3NO807InXXXASTbiaq6k,17513
122
+ kiln_ai/datamodel/extraction.py,sha256=pD50cG5uJb2FN2ndptFZHnaZhb1tI7biPY2PiupUxZ8,10035
123
123
  kiln_ai/datamodel/finetune.py,sha256=3cwg9FTbhYDH2DEWS_L8lMS5KPok9mJItWjYHC6LnH0,4835
124
124
  kiln_ai/datamodel/json_schema.py,sha256=vgzTVLrdjBm9h0XxYV54fP9wOcmsWvQhASG4yhK5eUY,3802
125
125
  kiln_ai/datamodel/model_cache.py,sha256=9X4aAigbkFdytckgw8InCMh86uBna0ME_1HJSeMPEn0,4495
@@ -130,21 +130,21 @@ kiln_ai/datamodel/rag.py,sha256=DpBmdl4MSz0QegvK0YV7-JDrkFSwQlcMVcw8K30dAFQ,2859
130
130
  kiln_ai/datamodel/registry.py,sha256=RaIDmjrqzPe6SRKNVUUUCskqPseXcogi528W53jpAbc,477
131
131
  kiln_ai/datamodel/run_config.py,sha256=sSHE0nlIoKrRQuqebSP6Vb2LYi0gHX3i3Bix1Vk4-xw,2166
132
132
  kiln_ai/datamodel/strict_mode.py,sha256=sm4Xka8mnJHCShtbh6MMU5dDQv-cLj8lHgHkmFKpsl0,849
133
- kiln_ai/datamodel/task.py,sha256=bR0Se7fVz1UzlGbzZpNfw_FERjdVvQKm16HH4Z-WxIE,6650
134
- kiln_ai/datamodel/task_output.py,sha256=ILL5a7X_0FBqCOxboGA4rSlqDrtY_IFJJsgydny3CYs,13486
133
+ kiln_ai/datamodel/task.py,sha256=SBLZJsLncRjigqJpAubugEdr6SDmOVVOq48qV-KIwEs,6854
134
+ kiln_ai/datamodel/task_output.py,sha256=8thPMkFrl6vDWjWB1NXBk2OtUoaV7UXwEDXq7p_TCyM,14260
135
135
  kiln_ai/datamodel/task_run.py,sha256=V7wlUXgq07EcLREa8VeIdN01wuzlvkvc16QYmLlgeGE,10325
136
- kiln_ai/datamodel/test_attachment.py,sha256=ph0dYKBv1Uwb_WkRcfYbc5JXsgTIO7i7cPR4sHpkkgU,23697
137
- kiln_ai/datamodel/test_basemodel.py,sha256=FGyyMwD16wiqDE7iBcX3hgt4MVEDtbbGo7UveAKw3zI,25273
136
+ kiln_ai/datamodel/test_attachment.py,sha256=zwZD-AE0R3G4fZpV8X73YS8IH32XhqKz9UVzKirQb1s,23717
137
+ kiln_ai/datamodel/test_basemodel.py,sha256=qzLeFyXDSuM8ZMCgMQOHvRo9ihibEpn6nkRuH6-wcL4,34584
138
138
  kiln_ai/datamodel/test_chunk_models.py,sha256=_TFkRoXVY1FKB3m_Pr8v2K0NbB-kyOznAOOQXgzQcnI,10912
139
139
  kiln_ai/datamodel/test_dataset_filters.py,sha256=TFHQZLB0rJxnxsFjD546eXVFxZNAJi0sPZ8j24wYd1w,5322
140
140
  kiln_ai/datamodel/test_dataset_split.py,sha256=pW4WwocMnAEY63yn7ps1Nm8UCjwSsTxuDJtrs4uooLg,11056
141
- kiln_ai/datamodel/test_datasource.py,sha256=H4Kc-Im9eM7WnADWZXdoiOIrOl05RtkyuhTCKiRimyU,3905
141
+ kiln_ai/datamodel/test_datasource.py,sha256=WBpounanSyVPSY68EftuhgSZrQ60LdHgWuT6D2zWJlw,5206
142
142
  kiln_ai/datamodel/test_embedding_models.py,sha256=lIvw3kd_NnFpnTTXOTHAcUcFzriilPutxUMjipes79M,16734
143
143
  kiln_ai/datamodel/test_eval_model.py,sha256=3PuBk6QQEYSM0LJwm4DC_hPvaAGvQe2HbHTT0Arw7bI,23946
144
144
  kiln_ai/datamodel/test_example_models.py,sha256=QoUdMHZfOT4BV0CyfBMLzJZo2vKi-rVw0gpWXYJCzOM,31407
145
- kiln_ai/datamodel/test_external_tool_server.py,sha256=Ko_IAjEj7PyQL9z5ggTtcnwvOKZYx_xa-x1wdakWcRA,25154
145
+ kiln_ai/datamodel/test_external_tool_server.py,sha256=McvhWXazWuon-jTh78Bu7VHnSvv-JjbAl6XiqKPr47A,39341
146
146
  kiln_ai/datamodel/test_extraction_chunk.py,sha256=tqPmJxF9jZ29_Bue1wS2e7TuOozeV3fnFTISuZaAVmM,7349
147
- kiln_ai/datamodel/test_extraction_model.py,sha256=dL9nhNbz28wDj379dGBrcj_o6zYvmtMBCTsAXfNjkC0,15303
147
+ kiln_ai/datamodel/test_extraction_model.py,sha256=DqM1Dhq7HmjPzgJhrCzfnak20N4Jh2-codlPavzPH0I,16328
148
148
  kiln_ai/datamodel/test_json_schema.py,sha256=R0Cfc9WbieMslgvYsj2HFx8RHIq2fF9NcT5jH-kEqh4,4793
149
149
  kiln_ai/datamodel/test_model_cache.py,sha256=Fy-ucYNzS5JEG-8SFY4nVHA8iRbXXxai20f8_oGl97o,8184
150
150
  kiln_ai/datamodel/test_model_perf.py,sha256=JcJpedvgK49zj_VIUc5DW0QjuIXhaBQbBpccUJVy2hU,3319
@@ -154,24 +154,26 @@ kiln_ai/datamodel/test_output_rating.py,sha256=zvPIp2shAgCs2RQBgwYoL09fRA3krHvgA
154
154
  kiln_ai/datamodel/test_prompt_id.py,sha256=_vcuiDvai8TENb6agk0F9ZsaTrAgoD1VkMxRIT2p9mQ,4384
155
155
  kiln_ai/datamodel/test_rag.py,sha256=pBkwOlBVSddUNxMl24F5or494dJ8PYLzY00ijzu02yg,23497
156
156
  kiln_ai/datamodel/test_registry.py,sha256=Y3dReO13QwGBaW9p7qUiTc0H-WaJ3pgapaN35kVoVD8,2903
157
- kiln_ai/datamodel/test_task.py,sha256=4odjkdbkVZC-2En7o_dboDN7Segbh4yfz4Y3f7R7Dbc,10923
158
- kiln_ai/datamodel/test_tool_id.py,sha256=yd4XCzbwBT9TarFRQ8Vaf5in6pvmap-C7-J84k4x1oo,12417
157
+ kiln_ai/datamodel/test_task.py,sha256=POxcfZErop8IXS5nVVA09BmpQLIQkeMnPHDhVlAJNxM,11928
158
+ kiln_ai/datamodel/test_tool_id.py,sha256=MKSAb_SwPc4_dYcS9aoKJf3VatBL7FDIgixTsDQ3bos,17015
159
159
  kiln_ai/datamodel/test_vector_store.py,sha256=Qg7BNMPoG3Egj_nUoWvnxf43r99Q8Y9c7ra9k2M9X68,11629
160
- kiln_ai/datamodel/tool_id.py,sha256=OEvZ-60sTzL7_FBGDrQumm--HC83fr9vu377I-aqrQM,3594
160
+ kiln_ai/datamodel/tool_id.py,sha256=bPimreWkBdqVQf7Zy5g0NFCXwLNVaHZQq2TK5OXJ7pU,4854
161
161
  kiln_ai/datamodel/vector_store.py,sha256=VugXwAzBDOIn3ZznwGbYbka7RVPTlwJMxVf9wUakEIs,4937
162
162
  kiln_ai/tools/__init__.py,sha256=BaonknPnB9Z0QZligayytgrd8lqKXVOxX357YLW4Qw8,193
163
- kiln_ai/tools/base_tool.py,sha256=f_aKjAyCsM39jjbF-yG2hz7QIc_LdZOK3WBWJ2neLr4,2359
164
- kiln_ai/tools/mcp_server_tool.py,sha256=FwUzxcVsnNz0R-Skqelb6Q1xvFtpO2qc6Xxk7eFv-o8,3244
165
- kiln_ai/tools/mcp_session_manager.py,sha256=wG7bDS-1eZ3njHoxpf4y3vMqQfN15t21f10hk1tScHI,9557
166
- kiln_ai/tools/rag_tools.py,sha256=nSQrOHDceY9BqjmrJeDu7QJf6_eaPRipeVf3y8xxggg,5608
163
+ kiln_ai/tools/base_tool.py,sha256=Q_ndeADMO8vJTFcRE80EJtVMv4MFKLdexdw7B0YtGTE,2799
164
+ kiln_ai/tools/kiln_task_tool.py,sha256=PUJKLMm7wATPXKWwdnBbzA0ujopl71Tv-Z6-7_OJr0I,5542
165
+ kiln_ai/tools/mcp_server_tool.py,sha256=mIgEa8v715sG15WNuuEaCkYAuGurF5pNmelsA2fuUXc,3301
166
+ kiln_ai/tools/mcp_session_manager.py,sha256=27l6GxQw84zmJw_Y6fJeH5OT9og3xtiS87UmA3yOv7c,10730
167
+ kiln_ai/tools/rag_tools.py,sha256=K_JnQ6po2T-gbebHVNen67CuAYmM2RzuyzivjYVjSlQ,5819
167
168
  kiln_ai/tools/test_base_tools.py,sha256=L0hziYZ2poMhF9_NOwycXS0WBdw41VF1cEN8kemGZtg,6542
168
- kiln_ai/tools/test_mcp_server_tool.py,sha256=nIQgxcq5tuzjPzOwzRJskJYBrFkay5852jsAWbMqf6g,17337
169
- kiln_ai/tools/test_mcp_session_manager.py,sha256=i2uQedYszCOH78qdyGlYAIaNkAQ-gTA2QnmJpRNvafE,62487
170
- kiln_ai/tools/test_rag_tools.py,sha256=UJznaXv1p6HqTS_gQ56Bhk_LwV190F7brNq5uV2zk5U,34545
171
- kiln_ai/tools/test_tool_registry.py,sha256=VvoUeTMEgTHGXKRapImlJOgsUi0TyzXjLFMHXffj_OQ,23254
172
- kiln_ai/tools/tool_registry.py,sha256=Y1VLi5h61OVhLp8rY05v2V7l4SnyINOv4Y0mQLYg_HQ,3062
169
+ kiln_ai/tools/test_kiln_task_tool.py,sha256=t5eMUDKSQZwRySLRcCKod_KkrAZL7IZ8bb3mcOxAlqU,19405
170
+ kiln_ai/tools/test_mcp_server_tool.py,sha256=Kcd0jEhPwNg4EbTYB4drN0OHUXKYal6pSrXhP4QFo54,16920
171
+ kiln_ai/tools/test_mcp_session_manager.py,sha256=phtXvW9RIEIjvrjmTF9p_ur6gX_8Q8yYd5-93KgpZ2A,60256
172
+ kiln_ai/tools/test_rag_tools.py,sha256=6iFVglqgEtm_FFFolRuy97RfIVU-f2Dju2B2qFqcE2c,37907
173
+ kiln_ai/tools/test_tool_registry.py,sha256=VD2GKDhe5poOc9em2CTy6XN8tI1hteEzgItiTmkEPOc,31515
174
+ kiln_ai/tools/tool_registry.py,sha256=8y5XN5MSMyOulfv3m-yuKSLz0o-gXmKbdDQO1DO5Wko,4184
173
175
  kiln_ai/tools/built_in_tools/__init__.py,sha256=IGWLH55vk32KohEOy5lzM4mXb6cf43Rxm2XjLFtfve4,209
174
- kiln_ai/tools/built_in_tools/math_tools.py,sha256=6OWEkkXYus36rSTW-31FGIAXxMGqILWyIIeDcUQOiMQ,3886
176
+ kiln_ai/tools/built_in_tools/math_tools.py,sha256=PK6UYL_-OOKH83btrMeRoZv8sj6H9O-8GpAw5TAl3-g,4010
175
177
  kiln_ai/tools/built_in_tools/test_math_tools.py,sha256=yYNpQYT1sGXjOT6ocNY01Ldp1IGPAiSypMioMLdYI-Q,6961
176
178
  kiln_ai/utils/__init__.py,sha256=x73BahbCA5KfN7LdZNtBEN8OC8IiRvBrcofPrCSC1Qk,261
177
179
  kiln_ai/utils/async_job_runner.py,sha256=qxeAd2cK2EbVx2mPW5Cm-h7OoQsI0qjQo0EOrmISPMU,4799
@@ -179,7 +181,7 @@ kiln_ai/utils/config.py,sha256=rlY1TNawHUu_8yJSmYdjCjqOMJg-3e4ZXpdZPcttDUk,9666
179
181
  kiln_ai/utils/dataset_import.py,sha256=EqBBBopCEUy1JH4-EAsBETwGp4MFjzZGfUUBZ6FLfGY,9011
180
182
  kiln_ai/utils/env.py,sha256=3XN4Ek0PJ2Tl2w5zpSVWVQ0DJdmnuzAodpnvbDDSJ64,391
181
183
  kiln_ai/utils/exhaustive_error.py,sha256=TkkRixIAR3CPEKHeAJzyv0mtxp6BxUBKMvobA3vzQug,262
182
- kiln_ai/utils/filesystem.py,sha256=KMhWXdYvtSPpQOw40_w50ZnZK9_WSCKdaUPd6QH0iwo,410
184
+ kiln_ai/utils/filesystem.py,sha256=UxOz1wqoZWi9BvX2DPA2qATSsByLijG6Bb7Oi7eZyn4,394
183
185
  kiln_ai/utils/filesystem_cache.py,sha256=mtpcVC3_5I2CHSjgDaZBTuXF5y1APz8oIyunchTHblI,1835
184
186
  kiln_ai/utils/formatting.py,sha256=VtB9oag0lOGv17dwT7OPX_3HzBfaU9GsLH-iLete0yM,97
185
187
  kiln_ai/utils/litellm.py,sha256=98Ys8I8LjSrNL-8YsPJJsELBB3ZnmtFceDh_ZX38ppY,3798
@@ -187,8 +189,8 @@ kiln_ai/utils/lock.py,sha256=YQA-prluDeqWKKSN_qsAWQRU4wSGWZsa0Sx-GeCe5ds,3591
187
189
  kiln_ai/utils/logging.py,sha256=ixtv2Mm6-XWB2PVUPAWVRXnPJULvoTDrsp5NTAk3yp0,6815
188
190
  kiln_ai/utils/mime_type.py,sha256=JxkbuSJ1wMjXY1REGUDXOtocS8wwjwakMRmtNIX_kg8,1116
189
191
  kiln_ai/utils/name_generator.py,sha256=v26TgpCwQbhQFcZvzgjZvURinjrOyyFhxpsI6NQrHKc,1914
190
- kiln_ai/utils/open_ai_types.py,sha256=CH7EM9Y7b0o3fYradNGLzrWfmKkoYaHZWx8JUMLNJj8,2737
191
- kiln_ai/utils/pdf_utils.py,sha256=MxY6mlmuvN0B_fRmqHCeEbtue6HViNGnuKwGt5gHe_4,1252
192
+ kiln_ai/utils/open_ai_types.py,sha256=Jxri5818Dpbs8ijCCz04TDpwqRgvO00sExWAQmRfVw8,3328
193
+ kiln_ai/utils/pdf_utils.py,sha256=oBjbJ0rlNKAUhjhp8SbSqDNhqaczsP8SC48WWnwOhbc,1994
192
194
  kiln_ai/utils/project_utils.py,sha256=C_4VpyHSO4a9yX6SKcL00-l8y1afriXuqvsh54pk6eU,566
193
195
  kiln_ai/utils/test_async_job_runner.py,sha256=qJC3C_Ol-nFF5L-kLJxFNFZepw6hAU99UUCMLw3gPKE,10363
194
196
  kiln_ai/utils/test_config.py,sha256=buu7On18fBqnpkHtku_LZCVGrgrTs87IulL5eLTMRK8,14112
@@ -199,13 +201,13 @@ kiln_ai/utils/test_litellm.py,sha256=tgOSIr8YnJd7HVp7tQxrDNxVrkZukWqYxFKNQT_zqpc
199
201
  kiln_ai/utils/test_lock.py,sha256=wn2BQsT-8FjixxHml8CoxFbvN1c5Xg3CmsDID9fNmJw,5623
200
202
  kiln_ai/utils/test_mime_type.py,sha256=7X2GV-zyw7jBaCHCzXzhQptODSBJCcDrhOzv9HMrMEY,2237
201
203
  kiln_ai/utils/test_name_geneator.py,sha256=9-hSTBshyakqlPbFnNcggwLrL7lcPTitauBYHg9jFWI,1513
202
- kiln_ai/utils/test_open_ai_types.py,sha256=NCc3IoCXMq62u1uM2B0bfK3qKyp53y9jxyxvAjL_1X8,5231
203
- kiln_ai/utils/test_pdf_utils.py,sha256=ptxW84JUqCSFI6zdKB9OvBOp6YfYt1_N9FlX5a96uSg,3011
204
+ kiln_ai/utils/test_open_ai_types.py,sha256=SQxAUjnjHpkPLAD16aNplQAVVv61n_eSET-A1gnhwAc,8133
205
+ kiln_ai/utils/test_pdf_utils.py,sha256=a2jXjehu9ulUMLQQyc413p1ZMScIcDzE_8wHhCyK69E,3566
204
206
  kiln_ai/utils/test_uuid.py,sha256=g5CX_IAu5y-iNXQaFOoPrbr0hEmqmWPMSM_U4vw64Zc,4139
205
207
  kiln_ai/utils/test_validation.py,sha256=FOCRj8OgePIi_YjkfbFC4wr_HeQAa1lK5e6uRoUWZgE,20275
206
208
  kiln_ai/utils/uuid.py,sha256=v46fW_xjN7gEyRM5yNv68azp6_QnmcTe-fHpvecpNYQ,315
207
209
  kiln_ai/utils/validation.py,sha256=s6_eRprkjZhA00M7UDfCkhIz2gk-DBroOpW0b6_Xolw,3005
208
- kiln_ai-0.21.0.dist-info/METADATA,sha256=H1WCAIBCtoqQcoKkCvBVCIEizN9Mixi0Vap7UHJLygg,13779
209
- kiln_ai-0.21.0.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
210
- kiln_ai-0.21.0.dist-info/licenses/LICENSE.txt,sha256=_NA5pnTYgRRr4qH6lE3X-TuZJ8iRcMUi5ASoGr-lEx8,1209
211
- kiln_ai-0.21.0.dist-info/RECORD,,
210
+ kiln_ai-0.22.0.dist-info/METADATA,sha256=FysJ3gzIkphxDbtRafuehO3ruyNyZpQji6HYip4cD7E,13842
211
+ kiln_ai-0.22.0.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
212
+ kiln_ai-0.22.0.dist-info/licenses/LICENSE.txt,sha256=_NA5pnTYgRRr4qH6lE3X-TuZJ8iRcMUi5ASoGr-lEx8,1209
213
+ kiln_ai-0.22.0.dist-info/RECORD,,