kiln-ai 0.21.0__py3-none-any.whl → 0.22.1__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


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

Files changed (53) 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 +39 -8
  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/adapters/vector_store/lancedb_adapter.py +24 -70
  13. kiln_ai/adapters/vector_store/lancedb_helpers.py +101 -0
  14. kiln_ai/adapters/vector_store/test_lancedb_adapter.py +9 -16
  15. kiln_ai/adapters/vector_store/test_lancedb_helpers.py +142 -0
  16. kiln_ai/adapters/vector_store_loaders/__init__.py +0 -0
  17. kiln_ai/adapters/vector_store_loaders/test_lancedb_loader.py +282 -0
  18. kiln_ai/adapters/vector_store_loaders/test_vector_store_loader.py +544 -0
  19. kiln_ai/adapters/vector_store_loaders/vector_store_loader.py +91 -0
  20. kiln_ai/datamodel/basemodel.py +31 -3
  21. kiln_ai/datamodel/external_tool_server.py +206 -54
  22. kiln_ai/datamodel/extraction.py +14 -0
  23. kiln_ai/datamodel/task.py +5 -0
  24. kiln_ai/datamodel/task_output.py +41 -11
  25. kiln_ai/datamodel/test_attachment.py +3 -3
  26. kiln_ai/datamodel/test_basemodel.py +269 -13
  27. kiln_ai/datamodel/test_datasource.py +50 -0
  28. kiln_ai/datamodel/test_external_tool_server.py +534 -152
  29. kiln_ai/datamodel/test_extraction_model.py +31 -0
  30. kiln_ai/datamodel/test_task.py +35 -1
  31. kiln_ai/datamodel/test_tool_id.py +106 -1
  32. kiln_ai/datamodel/tool_id.py +49 -0
  33. kiln_ai/tools/base_tool.py +30 -6
  34. kiln_ai/tools/built_in_tools/math_tools.py +12 -4
  35. kiln_ai/tools/kiln_task_tool.py +162 -0
  36. kiln_ai/tools/mcp_server_tool.py +7 -5
  37. kiln_ai/tools/mcp_session_manager.py +50 -24
  38. kiln_ai/tools/rag_tools.py +17 -6
  39. kiln_ai/tools/test_kiln_task_tool.py +527 -0
  40. kiln_ai/tools/test_mcp_server_tool.py +4 -15
  41. kiln_ai/tools/test_mcp_session_manager.py +186 -226
  42. kiln_ai/tools/test_rag_tools.py +86 -5
  43. kiln_ai/tools/test_tool_registry.py +199 -5
  44. kiln_ai/tools/tool_registry.py +49 -17
  45. kiln_ai/utils/filesystem.py +4 -4
  46. kiln_ai/utils/open_ai_types.py +19 -2
  47. kiln_ai/utils/pdf_utils.py +21 -0
  48. kiln_ai/utils/test_open_ai_types.py +88 -12
  49. kiln_ai/utils/test_pdf_utils.py +14 -1
  50. {kiln_ai-0.21.0.dist-info → kiln_ai-0.22.1.dist-info}/METADATA +79 -1
  51. {kiln_ai-0.21.0.dist-info → kiln_ai-0.22.1.dist-info}/RECORD +53 -45
  52. {kiln_ai-0.21.0.dist-info → kiln_ai-0.22.1.dist-info}/WHEEL +0 -0
  53. {kiln_ai-0.21.0.dist-info → kiln_ai-0.22.1.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.1
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
@@ -83,6 +85,10 @@ The library has a [comprehensive set of docs](https://kiln-ai.github.io/Kiln/kil
83
85
  - [Building and Running a Kiln Task from Code](#building-and-running-a-kiln-task-from-code)
84
86
  - [Tagging Task Runs Programmatically](#tagging-task-runs-programmatically)
85
87
  - [Adding Custom Model or AI Provider from Code](#adding-custom-model-or-ai-provider-from-code)
88
+ - [Taking Kiln RAG to production](#taking-kiln-rag-to-production)
89
+ - [Load a LlamaIndex Vector Store](#load-a-llamaindex-vector-store)
90
+ - [Example: LanceDB Cloud](#example-lancedb-cloud)
91
+ - [Deploy RAG without LlamaIndex](#deploy-rag-without-llamaindex)t
86
92
  - [Full API Reference](#full-api-reference)
87
93
 
88
94
  ## Installation
@@ -350,6 +356,78 @@ custom_model_ids.append(new_model)
350
356
  Config.shared().custom_models = custom_model_ids
351
357
  ```
352
358
 
359
+ ## Taking Kiln RAG to production
360
+
361
+ When you're ready to deploy your RAG system, you can export your processed documents to any vector store supported by LlamaIndex. This allows you to use your Kiln-configured chunking and embedding settings in production.
362
+
363
+ ### Load a LlamaIndex Vector Store
364
+
365
+ Kiln provides a `VectorStoreLoader` that yields your processed document chunks as LlamaIndex `TextNode` objects. These nodes contain the same metadata, chunking and embedding data as your Kiln Search Tool configuration.
366
+
367
+ ```py
368
+ from kiln_ai.datamodel import Project
369
+ from kiln_ai.datamodel.rag import RagConfig
370
+ from kiln_ai.adapters.vector_store_loaders import VectorStoreLoader
371
+
372
+ # Load your project and RAG configuration
373
+ project = Project.load_from_file("path/to/your/project.kiln")
374
+ rag_config = RagConfig.from_id_and_parent_path("rag-config-id", project.path)
375
+
376
+ # Create the loader
377
+ loader = VectorStoreLoader(project=project, rag_config=rag_config)
378
+
379
+ # Export chunks to any LlamaIndex vector store
380
+ async for batch in loader.iter_llama_index_nodes(batch_size=10):
381
+ # Insert into your chosen vector store
382
+ # Examples: LanceDB, Pinecone, Chroma, Qdrant, etc.
383
+ pass
384
+ ```
385
+
386
+ **Supported Vector Stores:** LlamaIndex supports 20+ vector stores including LanceDB, Pinecone, Weaviate, Chroma, Qdrant, and more. See the [full list](https://developers.llamaindex.ai/python/framework/module_guides/storing/vector_stores/).
387
+
388
+ ### Example: LanceDB Cloud
389
+
390
+ Internally Kiln uses LanceDB. By using LanceDB cloud you'll get the same indexing behaviour as in app.
391
+
392
+ Here's a complete example using LanceDB Cloud:
393
+
394
+ ```py
395
+ from kiln_ai.datamodel import Project
396
+ from kiln_ai.datamodel.rag import RagConfig
397
+ from kiln_ai.datamodel.vector_store import VectorStoreConfig
398
+ from kiln_ai.adapters.vector_store_loaders import VectorStoreLoader
399
+ from kiln_ai.adapters.vector_store.lancedb_adapter import lancedb_construct_from_config
400
+
401
+ # Load configurations
402
+ project = Project.load_from_file("path/to/your/project.kiln")
403
+ rag_config = RagConfig.from_id_and_parent_path("rag-config-id", project.path)
404
+ vector_store_config = VectorStoreConfig.from_id_and_parent_path(
405
+ rag_config.vector_store_config_id, project.path,
406
+ )
407
+
408
+ # Create LanceDB vector store
409
+ lancedb_store = lancedb_construct_from_config(
410
+ vector_store_config=vector_store_config,
411
+ uri="db://my-project",
412
+ api_key="sk_...",
413
+ region="us-east-1",
414
+ table_name="my-documents", # Created automatically
415
+ )
416
+
417
+ # Export and insert your documents
418
+ loader = VectorStoreLoader(project=project, rag_config=rag_config)
419
+ async for batch in loader.iter_llama_index_nodes(batch_size=100):
420
+ await lancedb_store.async_add(batch)
421
+
422
+ print("Documents successfully exported to LanceDB!")
423
+ ```
424
+
425
+ After export, query your data using [LlamaIndex](https://developers.llamaindex.ai/python/framework-api-reference/storage/vector_store/lancedb/) or the [LanceDB client](https://lancedb.github.io/lancedb/).
426
+
427
+ ### Deploy RAG without LlamaIndex
428
+
429
+ While Kiln is designed for deploying to LlamaIndex, you don't need to use it. The `iter_llama_index_nodes` returns a `TextNode` object which includes all the data you need to build a RAG index in any stack: embedding, text, document name, chunk ID, etc.
430
+
353
431
  ## Full API Reference
354
432
 
355
433
  The library can do a lot more than the examples we've shown here.
@@ -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=-i8zOQzCMW-JZJ8l3a4j4A6TLGQIr42EFSJf9D67tKI,30035
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
@@ -105,21 +105,27 @@ kiln_ai/adapters/repair/repair_task.py,sha256=ziOKNo2dT0a4ggLIDk5ETfSTbuxn_xgI60
105
105
  kiln_ai/adapters/repair/test_repair_task.py,sha256=GLrEZsVt5Z-62NanVEtIvnI57YlS9GyhyNAr3ezW57o,8770
106
106
  kiln_ai/adapters/vector_store/__init__.py,sha256=AbpHGcgLb-kRsJGnwFEktk7uzpZOCcBY74-YBdrKVGs,1
107
107
  kiln_ai/adapters/vector_store/base_vector_store_adapter.py,sha256=_Ba6iJEpuQplji3LBkkfcy9edkxCF3pUaKMS4PeAuPY,2524
108
- kiln_ai/adapters/vector_store/lancedb_adapter.py,sha256=K70sCGqf5fAD7h3qY4_3daKewaDp8AWb0myn-UFICsA,16750
108
+ kiln_ai/adapters/vector_store/lancedb_adapter.py,sha256=TuuV5x0MiIQmTKJQo-St6Dxd0I5yKgVfbVqrQEiZqbQ,14049
109
+ kiln_ai/adapters/vector_store/lancedb_helpers.py,sha256=fMzXA3OW5c0s2TAsrxKghWYitQbevR0G1lvhChVvAog,3841
109
110
  kiln_ai/adapters/vector_store/test_base_vector_store.py,sha256=t-qCfYipfBRqRs5J6e0VaqVvcRRL7YZuCqOOG8lOViA,5811
110
- kiln_ai/adapters/vector_store/test_lancedb_adapter.py,sha256=wtRaj0675YBJokkrGrYKFVidwFPrbH5RKHjyAKtZusk,63576
111
+ kiln_ai/adapters/vector_store/test_lancedb_adapter.py,sha256=R-wZsJTm8nF4TWCyBkWWgKkIkXy11xCqpCsyAY_0B-M,63339
112
+ kiln_ai/adapters/vector_store/test_lancedb_helpers.py,sha256=P8MKttQEKSh-sXW5gAiuAL4CLmlWCJiMd9B8g2m1kOc,4559
111
113
  kiln_ai/adapters/vector_store/test_vector_store_registry.py,sha256=w0hpXte0XnxbkWYFGWfFuu33GgQUPcY2HE7habpZ_C4,6809
112
114
  kiln_ai/adapters/vector_store/vector_store_registry.py,sha256=jsE1OS964Ai7cJ5tlrp_PZuxEImHQSSR8DGAqEgDavc,1123
115
+ kiln_ai/adapters/vector_store_loaders/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
116
+ kiln_ai/adapters/vector_store_loaders/test_lancedb_loader.py,sha256=CJTcdRuuKjz9Pq65OFV9CzbZi48sB0uBsmxOt3FGmlQ,9088
117
+ kiln_ai/adapters/vector_store_loaders/test_vector_store_loader.py,sha256=axOAQQg_URkXRZObbJlQ1AQTSsgLPlO5EjSVkHqy-Mo,17905
118
+ kiln_ai/adapters/vector_store_loaders/vector_store_loader.py,sha256=_lW_cLId0b8Huv80Psl_zCh9XtE0S6wvlPRV2zfdAMU,3505
113
119
  kiln_ai/datamodel/__init__.py,sha256=uxLwjHxWTbYw9LVRJtK02cUrbDZCKyfYxgYJxrOjFoA,2091
114
- kiln_ai/datamodel/basemodel.py,sha256=jGBWurPsl0lJcn5VPF3wn4RT0NENLF3DegAr2QIzH-M,30873
120
+ kiln_ai/datamodel/basemodel.py,sha256=GZhZkDF6y9xN3Gn4h63FE3tEjcyGqoVJrC5QNfBXpsQ,32076
115
121
  kiln_ai/datamodel/chunk.py,sha256=LfBjaJEsPLBXfsFEofVLAfaISmfvsvzAmmCYVtosV7U,5535
116
122
  kiln_ai/datamodel/datamodel_enums.py,sha256=QJd8i-zXOrVTynaFslJpKQFo2OGvc8DT3B_Elc2KBl4,4361
117
123
  kiln_ai/datamodel/dataset_filters.py,sha256=zXS5QeCqWa1vAxs3Pyy5FJtySx9yYJzxsCMANd23-3c,5502
118
124
  kiln_ai/datamodel/dataset_split.py,sha256=dAqwwNtWhKntEGJtauT0-YDG8aLFISelYS7o8TWG0TE,5923
119
125
  kiln_ai/datamodel/embedding.py,sha256=NBm5OewKkvKJwqMaZhOrP_L_Rc8FWyB0CwDIihZkzf0,2385
120
126
  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
127
+ kiln_ai/datamodel/external_tool_server.py,sha256=NW7MdT0zWRQ-iDWQanDQo2U3NO807InXXXASTbiaq6k,17513
128
+ kiln_ai/datamodel/extraction.py,sha256=pD50cG5uJb2FN2ndptFZHnaZhb1tI7biPY2PiupUxZ8,10035
123
129
  kiln_ai/datamodel/finetune.py,sha256=3cwg9FTbhYDH2DEWS_L8lMS5KPok9mJItWjYHC6LnH0,4835
124
130
  kiln_ai/datamodel/json_schema.py,sha256=vgzTVLrdjBm9h0XxYV54fP9wOcmsWvQhASG4yhK5eUY,3802
125
131
  kiln_ai/datamodel/model_cache.py,sha256=9X4aAigbkFdytckgw8InCMh86uBna0ME_1HJSeMPEn0,4495
@@ -130,21 +136,21 @@ kiln_ai/datamodel/rag.py,sha256=DpBmdl4MSz0QegvK0YV7-JDrkFSwQlcMVcw8K30dAFQ,2859
130
136
  kiln_ai/datamodel/registry.py,sha256=RaIDmjrqzPe6SRKNVUUUCskqPseXcogi528W53jpAbc,477
131
137
  kiln_ai/datamodel/run_config.py,sha256=sSHE0nlIoKrRQuqebSP6Vb2LYi0gHX3i3Bix1Vk4-xw,2166
132
138
  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
139
+ kiln_ai/datamodel/task.py,sha256=SBLZJsLncRjigqJpAubugEdr6SDmOVVOq48qV-KIwEs,6854
140
+ kiln_ai/datamodel/task_output.py,sha256=8thPMkFrl6vDWjWB1NXBk2OtUoaV7UXwEDXq7p_TCyM,14260
135
141
  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
142
+ kiln_ai/datamodel/test_attachment.py,sha256=zwZD-AE0R3G4fZpV8X73YS8IH32XhqKz9UVzKirQb1s,23717
143
+ kiln_ai/datamodel/test_basemodel.py,sha256=qzLeFyXDSuM8ZMCgMQOHvRo9ihibEpn6nkRuH6-wcL4,34584
138
144
  kiln_ai/datamodel/test_chunk_models.py,sha256=_TFkRoXVY1FKB3m_Pr8v2K0NbB-kyOznAOOQXgzQcnI,10912
139
145
  kiln_ai/datamodel/test_dataset_filters.py,sha256=TFHQZLB0rJxnxsFjD546eXVFxZNAJi0sPZ8j24wYd1w,5322
140
146
  kiln_ai/datamodel/test_dataset_split.py,sha256=pW4WwocMnAEY63yn7ps1Nm8UCjwSsTxuDJtrs4uooLg,11056
141
- kiln_ai/datamodel/test_datasource.py,sha256=H4Kc-Im9eM7WnADWZXdoiOIrOl05RtkyuhTCKiRimyU,3905
147
+ kiln_ai/datamodel/test_datasource.py,sha256=WBpounanSyVPSY68EftuhgSZrQ60LdHgWuT6D2zWJlw,5206
142
148
  kiln_ai/datamodel/test_embedding_models.py,sha256=lIvw3kd_NnFpnTTXOTHAcUcFzriilPutxUMjipes79M,16734
143
149
  kiln_ai/datamodel/test_eval_model.py,sha256=3PuBk6QQEYSM0LJwm4DC_hPvaAGvQe2HbHTT0Arw7bI,23946
144
150
  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
151
+ kiln_ai/datamodel/test_external_tool_server.py,sha256=McvhWXazWuon-jTh78Bu7VHnSvv-JjbAl6XiqKPr47A,39341
146
152
  kiln_ai/datamodel/test_extraction_chunk.py,sha256=tqPmJxF9jZ29_Bue1wS2e7TuOozeV3fnFTISuZaAVmM,7349
147
- kiln_ai/datamodel/test_extraction_model.py,sha256=dL9nhNbz28wDj379dGBrcj_o6zYvmtMBCTsAXfNjkC0,15303
153
+ kiln_ai/datamodel/test_extraction_model.py,sha256=DqM1Dhq7HmjPzgJhrCzfnak20N4Jh2-codlPavzPH0I,16328
148
154
  kiln_ai/datamodel/test_json_schema.py,sha256=R0Cfc9WbieMslgvYsj2HFx8RHIq2fF9NcT5jH-kEqh4,4793
149
155
  kiln_ai/datamodel/test_model_cache.py,sha256=Fy-ucYNzS5JEG-8SFY4nVHA8iRbXXxai20f8_oGl97o,8184
150
156
  kiln_ai/datamodel/test_model_perf.py,sha256=JcJpedvgK49zj_VIUc5DW0QjuIXhaBQbBpccUJVy2hU,3319
@@ -154,24 +160,26 @@ kiln_ai/datamodel/test_output_rating.py,sha256=zvPIp2shAgCs2RQBgwYoL09fRA3krHvgA
154
160
  kiln_ai/datamodel/test_prompt_id.py,sha256=_vcuiDvai8TENb6agk0F9ZsaTrAgoD1VkMxRIT2p9mQ,4384
155
161
  kiln_ai/datamodel/test_rag.py,sha256=pBkwOlBVSddUNxMl24F5or494dJ8PYLzY00ijzu02yg,23497
156
162
  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
163
+ kiln_ai/datamodel/test_task.py,sha256=POxcfZErop8IXS5nVVA09BmpQLIQkeMnPHDhVlAJNxM,11928
164
+ kiln_ai/datamodel/test_tool_id.py,sha256=MKSAb_SwPc4_dYcS9aoKJf3VatBL7FDIgixTsDQ3bos,17015
159
165
  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
166
+ kiln_ai/datamodel/tool_id.py,sha256=OJ98ZMfczTq8gBap35W0xHz8eSCBcShn-K0N9NmU_6w,5233
161
167
  kiln_ai/datamodel/vector_store.py,sha256=VugXwAzBDOIn3ZznwGbYbka7RVPTlwJMxVf9wUakEIs,4937
162
168
  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
169
+ kiln_ai/tools/base_tool.py,sha256=cUHQMrydDb4RxzujdJ6MqngsCyyfQQwsEixIy7g-3gE,3167
170
+ kiln_ai/tools/kiln_task_tool.py,sha256=XD-aLPbVozR_HbhErLgVEFAa6PR736djaxP5I9nq9Mk,5583
171
+ kiln_ai/tools/mcp_server_tool.py,sha256=KGFj9zPuI6h1K9ht2f0j1vcAX-sbaX_OZnXHErQY4Kc,3312
172
+ kiln_ai/tools/mcp_session_manager.py,sha256=27l6GxQw84zmJw_Y6fJeH5OT9og3xtiS87UmA3yOv7c,10730
173
+ kiln_ai/tools/rag_tools.py,sha256=3t0Lt6OSY89EZaSzi177csUIyP2BxfpDcpL-7BbgFAg,5849
167
174
  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
175
+ kiln_ai/tools/test_kiln_task_tool.py,sha256=t5eMUDKSQZwRySLRcCKod_KkrAZL7IZ8bb3mcOxAlqU,19405
176
+ kiln_ai/tools/test_mcp_server_tool.py,sha256=Kcd0jEhPwNg4EbTYB4drN0OHUXKYal6pSrXhP4QFo54,16920
177
+ kiln_ai/tools/test_mcp_session_manager.py,sha256=phtXvW9RIEIjvrjmTF9p_ur6gX_8Q8yYd5-93KgpZ2A,60256
178
+ kiln_ai/tools/test_rag_tools.py,sha256=6iFVglqgEtm_FFFolRuy97RfIVU-f2Dju2B2qFqcE2c,37907
179
+ kiln_ai/tools/test_tool_registry.py,sha256=VD2GKDhe5poOc9em2CTy6XN8tI1hteEzgItiTmkEPOc,31515
180
+ kiln_ai/tools/tool_registry.py,sha256=8y5XN5MSMyOulfv3m-yuKSLz0o-gXmKbdDQO1DO5Wko,4184
173
181
  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
182
+ kiln_ai/tools/built_in_tools/math_tools.py,sha256=PK6UYL_-OOKH83btrMeRoZv8sj6H9O-8GpAw5TAl3-g,4010
175
183
  kiln_ai/tools/built_in_tools/test_math_tools.py,sha256=yYNpQYT1sGXjOT6ocNY01Ldp1IGPAiSypMioMLdYI-Q,6961
176
184
  kiln_ai/utils/__init__.py,sha256=x73BahbCA5KfN7LdZNtBEN8OC8IiRvBrcofPrCSC1Qk,261
177
185
  kiln_ai/utils/async_job_runner.py,sha256=qxeAd2cK2EbVx2mPW5Cm-h7OoQsI0qjQo0EOrmISPMU,4799
@@ -179,7 +187,7 @@ kiln_ai/utils/config.py,sha256=rlY1TNawHUu_8yJSmYdjCjqOMJg-3e4ZXpdZPcttDUk,9666
179
187
  kiln_ai/utils/dataset_import.py,sha256=EqBBBopCEUy1JH4-EAsBETwGp4MFjzZGfUUBZ6FLfGY,9011
180
188
  kiln_ai/utils/env.py,sha256=3XN4Ek0PJ2Tl2w5zpSVWVQ0DJdmnuzAodpnvbDDSJ64,391
181
189
  kiln_ai/utils/exhaustive_error.py,sha256=TkkRixIAR3CPEKHeAJzyv0mtxp6BxUBKMvobA3vzQug,262
182
- kiln_ai/utils/filesystem.py,sha256=KMhWXdYvtSPpQOw40_w50ZnZK9_WSCKdaUPd6QH0iwo,410
190
+ kiln_ai/utils/filesystem.py,sha256=UxOz1wqoZWi9BvX2DPA2qATSsByLijG6Bb7Oi7eZyn4,394
183
191
  kiln_ai/utils/filesystem_cache.py,sha256=mtpcVC3_5I2CHSjgDaZBTuXF5y1APz8oIyunchTHblI,1835
184
192
  kiln_ai/utils/formatting.py,sha256=VtB9oag0lOGv17dwT7OPX_3HzBfaU9GsLH-iLete0yM,97
185
193
  kiln_ai/utils/litellm.py,sha256=98Ys8I8LjSrNL-8YsPJJsELBB3ZnmtFceDh_ZX38ppY,3798
@@ -187,8 +195,8 @@ kiln_ai/utils/lock.py,sha256=YQA-prluDeqWKKSN_qsAWQRU4wSGWZsa0Sx-GeCe5ds,3591
187
195
  kiln_ai/utils/logging.py,sha256=ixtv2Mm6-XWB2PVUPAWVRXnPJULvoTDrsp5NTAk3yp0,6815
188
196
  kiln_ai/utils/mime_type.py,sha256=JxkbuSJ1wMjXY1REGUDXOtocS8wwjwakMRmtNIX_kg8,1116
189
197
  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
198
+ kiln_ai/utils/open_ai_types.py,sha256=Jxri5818Dpbs8ijCCz04TDpwqRgvO00sExWAQmRfVw8,3328
199
+ kiln_ai/utils/pdf_utils.py,sha256=oBjbJ0rlNKAUhjhp8SbSqDNhqaczsP8SC48WWnwOhbc,1994
192
200
  kiln_ai/utils/project_utils.py,sha256=C_4VpyHSO4a9yX6SKcL00-l8y1afriXuqvsh54pk6eU,566
193
201
  kiln_ai/utils/test_async_job_runner.py,sha256=qJC3C_Ol-nFF5L-kLJxFNFZepw6hAU99UUCMLw3gPKE,10363
194
202
  kiln_ai/utils/test_config.py,sha256=buu7On18fBqnpkHtku_LZCVGrgrTs87IulL5eLTMRK8,14112
@@ -199,13 +207,13 @@ kiln_ai/utils/test_litellm.py,sha256=tgOSIr8YnJd7HVp7tQxrDNxVrkZukWqYxFKNQT_zqpc
199
207
  kiln_ai/utils/test_lock.py,sha256=wn2BQsT-8FjixxHml8CoxFbvN1c5Xg3CmsDID9fNmJw,5623
200
208
  kiln_ai/utils/test_mime_type.py,sha256=7X2GV-zyw7jBaCHCzXzhQptODSBJCcDrhOzv9HMrMEY,2237
201
209
  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
210
+ kiln_ai/utils/test_open_ai_types.py,sha256=SQxAUjnjHpkPLAD16aNplQAVVv61n_eSET-A1gnhwAc,8133
211
+ kiln_ai/utils/test_pdf_utils.py,sha256=a2jXjehu9ulUMLQQyc413p1ZMScIcDzE_8wHhCyK69E,3566
204
212
  kiln_ai/utils/test_uuid.py,sha256=g5CX_IAu5y-iNXQaFOoPrbr0hEmqmWPMSM_U4vw64Zc,4139
205
213
  kiln_ai/utils/test_validation.py,sha256=FOCRj8OgePIi_YjkfbFC4wr_HeQAa1lK5e6uRoUWZgE,20275
206
214
  kiln_ai/utils/uuid.py,sha256=v46fW_xjN7gEyRM5yNv68azp6_QnmcTe-fHpvecpNYQ,315
207
215
  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,,
216
+ kiln_ai-0.22.1.dist-info/METADATA,sha256=fHXPMoa6vpIJQezN8fycep3pyALcXUVPRRWsw3mO0S4,17295
217
+ kiln_ai-0.22.1.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
218
+ kiln_ai-0.22.1.dist-info/licenses/LICENSE.txt,sha256=_NA5pnTYgRRr4qH6lE3X-TuZJ8iRcMUi5ASoGr-lEx8,1209
219
+ kiln_ai-0.22.1.dist-info/RECORD,,