fast-agent-mcp 0.2.57__py3-none-any.whl → 0.2.58__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 fast-agent-mcp might be problematic. Click here for more details.
- {fast_agent_mcp-0.2.57.dist-info → fast_agent_mcp-0.2.58.dist-info}/METADATA +2 -2
- {fast_agent_mcp-0.2.57.dist-info → fast_agent_mcp-0.2.58.dist-info}/RECORD +14 -13
- mcp_agent/config.py +3 -0
- mcp_agent/human_input/elicitation_form.py +45 -33
- mcp_agent/llm/augmented_llm.py +1 -0
- mcp_agent/llm/providers/augmented_llm_anthropic.py +1 -0
- mcp_agent/llm/providers/augmented_llm_bedrock.py +890 -602
- mcp_agent/llm/providers/augmented_llm_google_native.py +1 -0
- mcp_agent/llm/providers/augmented_llm_openai.py +1 -0
- mcp_agent/llm/providers/bedrock_utils.py +216 -0
- mcp_agent/resources/examples/mcp/elicitations/elicitation_forms_server.py +25 -3
- {fast_agent_mcp-0.2.57.dist-info → fast_agent_mcp-0.2.58.dist-info}/WHEEL +0 -0
- {fast_agent_mcp-0.2.57.dist-info → fast_agent_mcp-0.2.58.dist-info}/entry_points.txt +0 -0
- {fast_agent_mcp-0.2.57.dist-info → fast_agent_mcp-0.2.58.dist-info}/licenses/LICENSE +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: fast-agent-mcp
|
|
3
|
-
Version: 0.2.
|
|
3
|
+
Version: 0.2.58
|
|
4
4
|
Summary: Define, Prompt and Test MCP enabled Agents and Workflows
|
|
5
5
|
Author-email: Shaun Smith <fastagent@llmindset.co.uk>
|
|
6
6
|
License: Apache License
|
|
@@ -218,7 +218,7 @@ Requires-Dist: deprecated>=1.2.18
|
|
|
218
218
|
Requires-Dist: email-validator>=2.2.0
|
|
219
219
|
Requires-Dist: fastapi>=0.115.6
|
|
220
220
|
Requires-Dist: google-genai>=1.27.0
|
|
221
|
-
Requires-Dist: mcp==1.
|
|
221
|
+
Requires-Dist: mcp==1.13.1
|
|
222
222
|
Requires-Dist: openai>=1.99.9
|
|
223
223
|
Requires-Dist: opentelemetry-distro>=0.55b0
|
|
224
224
|
Requires-Dist: opentelemetry-exporter-otlp-proto-http>=1.7.0
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
mcp_agent/__init__.py,sha256=HWWxZeB-VxrUNNXZnu4duzKGwdfCdD2M_O6drN4kfs8,2389
|
|
2
2
|
mcp_agent/app.py,sha256=3mtHP1nRQcRaKhhxgTmCOv00alh70nT7UxNA8bN47QE,5560
|
|
3
|
-
mcp_agent/config.py,sha256=
|
|
3
|
+
mcp_agent/config.py,sha256=hUdBh-o7apHpTodxYyMpF1d-QDwnuvivO-dt0PkwzeI,19466
|
|
4
4
|
mcp_agent/console.py,sha256=Gjf2QLFumwG1Lav__c07X_kZxxEUSkzV-1_-YbAwcwo,813
|
|
5
5
|
mcp_agent/context.py,sha256=lzz_Fyf9lz9BBAUt1bRVBlyyHjLkyeuyIziAi4qXYUk,7639
|
|
6
6
|
mcp_agent/context_dependent.py,sha256=QXfhw3RaQCKfscEEBRGuZ3sdMWqkgShz2jJ1ivGGX1I,1455
|
|
@@ -52,7 +52,7 @@ mcp_agent/executor/executor.py,sha256=E44p6d-o3OMRoP_dNs_cDnyti91LQ3P9eNU88mSi1k
|
|
|
52
52
|
mcp_agent/executor/task_registry.py,sha256=PCALFeYtkQrPBg4RBJnlA0aDI8nHclrNkHGUS4kV3W8,1242
|
|
53
53
|
mcp_agent/executor/workflow_signal.py,sha256=Cg1uZBk3fn8kXhPOg-wINNuVaf3v9pvLD6NbqWy5Z6E,11142
|
|
54
54
|
mcp_agent/human_input/__init__.py,sha256=RydNC10PhvTYFbLXXs0JMTnAt0ihPYeJZoRTnsq3eMg,909
|
|
55
|
-
mcp_agent/human_input/elicitation_form.py,sha256=
|
|
55
|
+
mcp_agent/human_input/elicitation_form.py,sha256=qckv7pqFSRgjqIpESX4C7OOBuG25R32wVTfyLaD-6wQ,29201
|
|
56
56
|
mcp_agent/human_input/elicitation_forms.py,sha256=w8XQ1GfZX8Jw-VB4jnDI0Im4mF-T9Ts8mT2zRZBtL6M,3824
|
|
57
57
|
mcp_agent/human_input/elicitation_handler.py,sha256=YfVhIhSBc9wuszPS4zoHho4n1pwmIoq13huN4MSRkIs,3305
|
|
58
58
|
mcp_agent/human_input/elicitation_state.py,sha256=Unl9uhEybUqACCUimnETdfUprJNpYDMq3DdbbHw5oAw,1175
|
|
@@ -61,7 +61,7 @@ mcp_agent/human_input/handler.py,sha256=s712Z5ssTCwjL9-VKoIdP5CtgMh43YvepynYisiW
|
|
|
61
61
|
mcp_agent/human_input/simple_form.py,sha256=u6iCo39IJftB1S1xljdQP3C18RuRCcwp7jKQTTDcLT4,3441
|
|
62
62
|
mcp_agent/human_input/types.py,sha256=RtWBOVzy8vnYoQrc36jRLn8z8N3C4pDPMBN5vF6qM5Y,1476
|
|
63
63
|
mcp_agent/llm/__init__.py,sha256=d8zgwG-bRFuwiMNMYkywg_qytk4P8lawyld_meuUmHI,68
|
|
64
|
-
mcp_agent/llm/augmented_llm.py,sha256=
|
|
64
|
+
mcp_agent/llm/augmented_llm.py,sha256=ovJKfgDKtNFmIhT3pKKjsNsaTQicz07bLo4eoIFx3ik,28682
|
|
65
65
|
mcp_agent/llm/augmented_llm_passthrough.py,sha256=bu0DJkjyFPzBZEU7f6MHnOp__9BCYl56tFd5nZVhSeY,8808
|
|
66
66
|
mcp_agent/llm/augmented_llm_playback.py,sha256=rLzgai496e2RlxqQp_Bp0U-Y1FF1SGsWl9COx4GiCNE,5004
|
|
67
67
|
mcp_agent/llm/augmented_llm_silent.py,sha256=IUnK_1Byy4D9TG0Pj46LFeNezgSTQ8d6MQIHWAImBwE,1846
|
|
@@ -78,18 +78,19 @@ mcp_agent/llm/usage_tracking.py,sha256=rF6v8QQDam8QbvlP4jzHljKqvuNHExeYDLkUMI86c
|
|
|
78
78
|
mcp_agent/llm/providers/__init__.py,sha256=heVxtmuqFJOnjjxHz4bWSqTAxXoN1E8twC_gQ_yJpHk,265
|
|
79
79
|
mcp_agent/llm/providers/anthropic_utils.py,sha256=vYDN5G5jKMhD2CQg8veJYab7tvvzYkDMq8M1g_hUAQg,3275
|
|
80
80
|
mcp_agent/llm/providers/augmented_llm_aliyun.py,sha256=Th4qeyihOSfTrojPw8YsgzEyaDwhybk7hkXkFjH-1dY,1277
|
|
81
|
-
mcp_agent/llm/providers/augmented_llm_anthropic.py,sha256=
|
|
81
|
+
mcp_agent/llm/providers/augmented_llm_anthropic.py,sha256=2IXAJVQOaMOGKLbZq5onwJ7E8baSsoIst7ffAZtyntw,30393
|
|
82
82
|
mcp_agent/llm/providers/augmented_llm_azure.py,sha256=Xoo6dFst6L9SaGKurqptwwTUzr-sYsolZ-AFb_79puc,6098
|
|
83
|
-
mcp_agent/llm/providers/augmented_llm_bedrock.py,sha256=
|
|
83
|
+
mcp_agent/llm/providers/augmented_llm_bedrock.py,sha256=gah6t-MSNJGgB-7OFVl7WAybNTh9Jygvgs0ABWyd69o,97313
|
|
84
84
|
mcp_agent/llm/providers/augmented_llm_deepseek.py,sha256=vphkYMFyukaejBw8SkCN-MqcG9qsfXJfWKZYYtspqPY,3877
|
|
85
85
|
mcp_agent/llm/providers/augmented_llm_generic.py,sha256=5Uq8ZBhcFuQTt7koP_5ykolREh2iWu8zKhNbh3pM9lQ,1210
|
|
86
|
-
mcp_agent/llm/providers/augmented_llm_google_native.py,sha256=
|
|
86
|
+
mcp_agent/llm/providers/augmented_llm_google_native.py,sha256=QfxzDTZCfRLOE0XcV7rOw76hRgTZ_oGBg1Bn0m_PHVY,22235
|
|
87
87
|
mcp_agent/llm/providers/augmented_llm_google_oai.py,sha256=g_g46h-YuxqbRZiO_dVo5zO2OkX1yx7nb6xDaQbOvWs,1137
|
|
88
88
|
mcp_agent/llm/providers/augmented_llm_groq.py,sha256=w-R1N2B7790v9tXxRCPt2SKnaB-DRdEtN_51fpdYb_I,5355
|
|
89
|
-
mcp_agent/llm/providers/augmented_llm_openai.py,sha256=
|
|
89
|
+
mcp_agent/llm/providers/augmented_llm_openai.py,sha256=RnwbzWMFWp2kHfmUhLTrx4rSTWkgJRc3XkN52_f3zt0,25359
|
|
90
90
|
mcp_agent/llm/providers/augmented_llm_openrouter.py,sha256=m3wS83fabBOmaZJH9gQ9sFw_2TB4xTb44WCOPB-2NJ4,2001
|
|
91
91
|
mcp_agent/llm/providers/augmented_llm_tensorzero_openai.py,sha256=D53Fry2AfBLOB5z9hM19U6_HMJeVNTpiBCAJb11ulNg,5503
|
|
92
92
|
mcp_agent/llm/providers/augmented_llm_xai.py,sha256=MhlX91IUNynQ_NDknx4EQJLwg-NbR8lcHS1P4JuLOnA,1433
|
|
93
|
+
mcp_agent/llm/providers/bedrock_utils.py,sha256=Ok-nGQ4T4OuFhr5d6LhVY4hUiq481yaixDWBpwohu_Y,7734
|
|
93
94
|
mcp_agent/llm/providers/google_converter.py,sha256=YmSfkkZR2YzR5DZduGaOW0v7BtjjindCIiuS8zOJ1VA,16941
|
|
94
95
|
mcp_agent/llm/providers/multipart_converter_anthropic.py,sha256=QsgIwWJ14SNZsun3fKDQaUx5AYdk8X6UYeBgYlZgZN0,16607
|
|
95
96
|
mcp_agent/llm/providers/multipart_converter_openai.py,sha256=8vBwX7PB62mV6pe4VvAj9YxzX1Dp1RJMZK1NWOMnioY,17998
|
|
@@ -138,7 +139,7 @@ mcp_agent/resources/examples/data-analysis/analysis.py,sha256=UaZk8RzsIj0TVXIM1k
|
|
|
138
139
|
mcp_agent/resources/examples/data-analysis/fastagent.config.yaml,sha256=ini94PHyJCfgpjcjHKMMbGuHs6LIj46F1NwY0ll5HVk,1609
|
|
139
140
|
mcp_agent/resources/examples/data-analysis/mount-point/WA_Fn-UseC_-HR-Employee-Attrition.csv,sha256=pcMeOL1_r8m8MziE6xgbBrQbjl5Ijo98yycZn7O-dlk,227977
|
|
140
141
|
mcp_agent/resources/examples/mcp/elicitations/elicitation_account_server.py,sha256=ZrPcj0kv75QXvtN0J_vhCmwxycnAodv35adUBZ9_8Ss,2903
|
|
141
|
-
mcp_agent/resources/examples/mcp/elicitations/elicitation_forms_server.py,sha256=
|
|
142
|
+
mcp_agent/resources/examples/mcp/elicitations/elicitation_forms_server.py,sha256=JSRSZ2rKqsHB0gt7LvyyVR9whnhmi_8kbvc9V6jvx2M,9329
|
|
142
143
|
mcp_agent/resources/examples/mcp/elicitations/elicitation_game_server.py,sha256=z9kHdNc6XWjAWkvet7inVBIcYxfWoxU6n9iHrsEqU7A,6206
|
|
143
144
|
mcp_agent/resources/examples/mcp/elicitations/fastagent.config.yaml,sha256=HPe0cuFL4-rzS4hHNgZiLMPEv0jYXOp7iSsrUliAaqs,1080
|
|
144
145
|
mcp_agent/resources/examples/mcp/elicitations/fastagent.secrets.yaml.example,sha256=1vkBmh9f4mnQZm6-2B7vyU1OepImviPW5MNAJkvUIPE,394
|
|
@@ -185,8 +186,8 @@ mcp_agent/resources/examples/workflows/short_story.txt,sha256=X3y_1AyhLFN2AKzCKv
|
|
|
185
186
|
mcp_agent/tools/tool_definition.py,sha256=L3Pxl-uLEXqlVoo-bYuFTFALeI-2pIU44YgFhsTKEtM,398
|
|
186
187
|
mcp_agent/ui/console_display.py,sha256=ts2oPxxprzbT9rMqZhzwq6DQkNfbq8XNwbgEPPMi7nI,32083
|
|
187
188
|
mcp_agent/ui/console_display_legacy.py,sha256=sm2v61-IPVafbF7uUaOyhO2tW_zgFWOjNS83IEWqGgI,14931
|
|
188
|
-
fast_agent_mcp-0.2.
|
|
189
|
-
fast_agent_mcp-0.2.
|
|
190
|
-
fast_agent_mcp-0.2.
|
|
191
|
-
fast_agent_mcp-0.2.
|
|
192
|
-
fast_agent_mcp-0.2.
|
|
189
|
+
fast_agent_mcp-0.2.58.dist-info/METADATA,sha256=WRpwRbCBYX-Aqf2TBHNWgRVxsNJUxMKuwNELJ29_ooA,30459
|
|
190
|
+
fast_agent_mcp-0.2.58.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
|
|
191
|
+
fast_agent_mcp-0.2.58.dist-info/entry_points.txt,sha256=QaX5kLdI0VdMPRdPUF1nkG_WdLUTNjp_icW6e3EhNYU,232
|
|
192
|
+
fast_agent_mcp-0.2.58.dist-info/licenses/LICENSE,sha256=Gx1L3axA4PnuK4FxsbX87jQ1opoOkSFfHHSytW6wLUU,10935
|
|
193
|
+
fast_agent_mcp-0.2.58.dist-info/RECORD,,
|
mcp_agent/config.py
CHANGED
|
@@ -276,6 +276,9 @@ class BedrockSettings(BaseModel):
|
|
|
276
276
|
profile: str | None = None
|
|
277
277
|
"""AWS profile to use for authentication"""
|
|
278
278
|
|
|
279
|
+
reasoning_effort: Literal["minimal", "low", "medium", "high"] = "minimal"
|
|
280
|
+
"""Default reasoning effort for Bedrock models. Can be overridden in model string (e.g., bedrock.claude-sonnet-4-0.high)"""
|
|
281
|
+
|
|
279
282
|
model_config = ConfigDict(extra="allow", arbitrary_types_allowed=True)
|
|
280
283
|
|
|
281
284
|
|
|
@@ -5,9 +5,7 @@ from typing import Any, Dict, Optional
|
|
|
5
5
|
|
|
6
6
|
from mcp.types import ElicitRequestedSchema
|
|
7
7
|
from prompt_toolkit import Application
|
|
8
|
-
from prompt_toolkit.application.current import get_app
|
|
9
8
|
from prompt_toolkit.buffer import Buffer
|
|
10
|
-
from prompt_toolkit.filters import Condition
|
|
11
9
|
from prompt_toolkit.formatted_text import FormattedText
|
|
12
10
|
from prompt_toolkit.key_binding import KeyBindings
|
|
13
11
|
from prompt_toolkit.key_binding.bindings.focus import focus_next, focus_previous
|
|
@@ -327,16 +325,21 @@ class ElicitationForm:
|
|
|
327
325
|
def focus_previous_left(event):
|
|
328
326
|
focus_previous(event)
|
|
329
327
|
|
|
330
|
-
#
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
@kb.add("c-m", filter=not_in_multiline) # Enter to submit only when not in multiline
|
|
328
|
+
# Enter always submits
|
|
329
|
+
@kb.add("c-m")
|
|
334
330
|
def submit(event):
|
|
335
331
|
self._accept()
|
|
336
332
|
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
333
|
+
# Ctrl+J inserts newlines
|
|
334
|
+
@kb.add("c-j")
|
|
335
|
+
def insert_newline(event):
|
|
336
|
+
# Insert a newline at the cursor position
|
|
337
|
+
event.current_buffer.insert_text('\n')
|
|
338
|
+
# Mark this field as multiline when user adds a newline
|
|
339
|
+
for field_name, widget in self.field_widgets.items():
|
|
340
|
+
if isinstance(widget, Buffer) and widget == event.current_buffer:
|
|
341
|
+
self.multiline_fields.add(field_name)
|
|
342
|
+
break
|
|
340
343
|
|
|
341
344
|
# ESC should ALWAYS cancel immediately, no matter what
|
|
342
345
|
@kb.add("escape", eager=True, is_global=True)
|
|
@@ -353,7 +356,7 @@ class ElicitationForm:
|
|
|
353
356
|
[
|
|
354
357
|
(
|
|
355
358
|
"class:bottom-toolbar.text",
|
|
356
|
-
" <TAB
|
|
359
|
+
" <TAB>/↑↓→← navigate. <ENTER> submit. <Ctrl+J> insert new line. <ESC> cancel. ",
|
|
357
360
|
),
|
|
358
361
|
(
|
|
359
362
|
"class:bottom-toolbar.text",
|
|
@@ -435,6 +438,7 @@ class ElicitationForm:
|
|
|
435
438
|
|
|
436
439
|
return constraints
|
|
437
440
|
|
|
441
|
+
|
|
438
442
|
def _create_field(self, field_name: str, field_def: Dict[str, Any]):
|
|
439
443
|
"""Create a field widget."""
|
|
440
444
|
|
|
@@ -510,7 +514,8 @@ class ElicitationForm:
|
|
|
510
514
|
enum_names = field_def.get("enumNames", enum_values)
|
|
511
515
|
values = [(val, name) for val, name in zip(enum_values, enum_names)]
|
|
512
516
|
|
|
513
|
-
|
|
517
|
+
default_value = field_def.get("default")
|
|
518
|
+
radio_list = RadioList(values=values, default=default_value)
|
|
514
519
|
self.field_widgets[field_name] = radio_list
|
|
515
520
|
|
|
516
521
|
return HSplit([label, Frame(radio_list, height=min(len(values) + 2, 6))])
|
|
@@ -541,23 +546,35 @@ class ElicitationForm:
|
|
|
541
546
|
else:
|
|
542
547
|
constraints = {}
|
|
543
548
|
|
|
544
|
-
|
|
549
|
+
default_value = field_def.get("default")
|
|
550
|
+
|
|
551
|
+
# Determine if field should be multiline based on max_length or default value length
|
|
545
552
|
if field_type == "string":
|
|
546
553
|
max_length = constraints.get("maxLength")
|
|
554
|
+
# Check default value length if maxLength not specified
|
|
555
|
+
if not max_length and default_value is not None:
|
|
556
|
+
max_length = len(str(default_value))
|
|
547
557
|
else:
|
|
548
558
|
max_length = None
|
|
549
|
-
|
|
559
|
+
|
|
560
|
+
# Check if default value contains newlines
|
|
561
|
+
if field_type == "string" and default_value is not None and '\n' in str(default_value):
|
|
562
|
+
multiline = True
|
|
563
|
+
self.multiline_fields.add(field_name) # Track multiline fields
|
|
564
|
+
# Set height to actual line count for fields with newlines in default
|
|
565
|
+
initial_height = str(default_value).count('\n') + 1
|
|
566
|
+
elif max_length and max_length > 100:
|
|
550
567
|
# Use multiline for longer fields
|
|
551
568
|
multiline = True
|
|
552
569
|
self.multiline_fields.add(field_name) # Track multiline fields
|
|
553
570
|
if max_length <= 300:
|
|
554
|
-
|
|
571
|
+
initial_height = 3
|
|
555
572
|
else:
|
|
556
|
-
|
|
573
|
+
initial_height = 5
|
|
557
574
|
else:
|
|
558
575
|
# Single line for shorter fields
|
|
559
576
|
multiline = False
|
|
560
|
-
|
|
577
|
+
initial_height = 1
|
|
561
578
|
|
|
562
579
|
buffer = Buffer(
|
|
563
580
|
validator=validator,
|
|
@@ -566,6 +583,8 @@ class ElicitationForm:
|
|
|
566
583
|
complete_while_typing=False, # Disable completion for cleaner experience
|
|
567
584
|
enable_history_search=False, # Disable history for cleaner experience
|
|
568
585
|
)
|
|
586
|
+
if default_value is not None:
|
|
587
|
+
buffer.text = str(default_value)
|
|
569
588
|
self.field_widgets[field_name] = buffer
|
|
570
589
|
|
|
571
590
|
# Create dynamic style function for focus highlighting and validation errors
|
|
@@ -581,31 +600,24 @@ class ElicitationForm:
|
|
|
581
600
|
else:
|
|
582
601
|
return "class:input-field"
|
|
583
602
|
|
|
603
|
+
# Create a dynamic height function based on content
|
|
604
|
+
def get_dynamic_height():
|
|
605
|
+
if not buffer.text:
|
|
606
|
+
return initial_height
|
|
607
|
+
# Calculate height based on number of newlines in buffer
|
|
608
|
+
line_count = buffer.text.count('\n') + 1
|
|
609
|
+
# Use initial height as minimum, grow up to 20 lines
|
|
610
|
+
return min(max(line_count, initial_height), 20)
|
|
611
|
+
|
|
584
612
|
text_input = Window(
|
|
585
613
|
BufferControl(buffer=buffer),
|
|
586
|
-
height=height
|
|
614
|
+
height=get_dynamic_height, # Use dynamic height function
|
|
587
615
|
style=get_field_style, # Use dynamic style function
|
|
588
616
|
wrap_lines=True if multiline else False, # Enable word wrap for multiline
|
|
589
617
|
)
|
|
590
618
|
|
|
591
619
|
return HSplit([label, Frame(text_input)])
|
|
592
620
|
|
|
593
|
-
def _is_in_multiline_field(self) -> bool:
|
|
594
|
-
"""Check if currently focused field is a multiline field."""
|
|
595
|
-
|
|
596
|
-
focused = get_app().layout.current_control
|
|
597
|
-
|
|
598
|
-
# Find which field this control belongs to
|
|
599
|
-
# Only Buffer widgets can be multiline, so only check those
|
|
600
|
-
for field_name, widget in self.field_widgets.items():
|
|
601
|
-
if (
|
|
602
|
-
isinstance(widget, Buffer)
|
|
603
|
-
and hasattr(focused, "buffer")
|
|
604
|
-
and widget == focused.buffer
|
|
605
|
-
):
|
|
606
|
-
return field_name in self.multiline_fields
|
|
607
|
-
return False
|
|
608
|
-
|
|
609
621
|
def _validate_form(self) -> tuple[bool, Optional[str]]:
|
|
610
622
|
"""Validate the entire form."""
|
|
611
623
|
|
mcp_agent/llm/augmented_llm.py
CHANGED
|
@@ -101,6 +101,7 @@ class AugmentedLLM(ContextDependent, AugmentedLLMProtocol, Generic[MessageParamT
|
|
|
101
101
|
PARAM_USE_HISTORY = "use_history"
|
|
102
102
|
PARAM_MAX_ITERATIONS = "max_iterations"
|
|
103
103
|
PARAM_TEMPLATE_VARS = "template_vars"
|
|
104
|
+
PARAM_MCP_METADATA = "mcp_metadata"
|
|
104
105
|
|
|
105
106
|
# Base set of fields that should always be excluded
|
|
106
107
|
BASE_EXCLUDE_FIELDS = {PARAM_METADATA}
|
|
@@ -69,6 +69,7 @@ class AnthropicAugmentedLLM(AugmentedLLM[MessageParam, Message]):
|
|
|
69
69
|
AugmentedLLM.PARAM_MAX_ITERATIONS,
|
|
70
70
|
AugmentedLLM.PARAM_PARALLEL_TOOL_CALLS,
|
|
71
71
|
AugmentedLLM.PARAM_TEMPLATE_VARS,
|
|
72
|
+
AugmentedLLM.PARAM_MCP_METADATA,
|
|
72
73
|
}
|
|
73
74
|
|
|
74
75
|
def __init__(self, *args, **kwargs) -> None:
|