fast-agent-mcp 0.3.11__py3-none-any.whl → 0.3.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.
Potentially problematic release.
This version of fast-agent-mcp might be problematic. Click here for more details.
- fast_agent/agents/llm_agent.py +1 -1
- fast_agent/agents/llm_decorator.py +7 -0
- fast_agent/agents/tool_agent.py +2 -2
- fast_agent/cli/commands/quickstart.py +142 -129
- fast_agent/core/direct_decorators.py +18 -26
- fast_agent/core/fastagent.py +2 -1
- fast_agent/interfaces.py +4 -0
- fast_agent/llm/fastagent_llm.py +17 -0
- fast_agent/llm/model_database.py +2 -0
- fast_agent/llm/model_factory.py +4 -1
- fast_agent/llm/provider/google/google_converter.py +10 -3
- fast_agent/mcp/mcp_agent_client_session.py +13 -0
- fast_agent/mcp/mcp_connection_manager.py +58 -15
- fast_agent/mcp/prompts/prompt_load.py +2 -3
- fast_agent/ui/console_display.py +52 -2
- fast_agent/ui/enhanced_prompt.py +47 -16
- fast_agent/ui/history_display.py +555 -0
- fast_agent/ui/interactive_prompt.py +44 -12
- fast_agent/ui/mcp_display.py +54 -14
- fast_agent/ui/notification_tracker.py +62 -23
- fast_agent/ui/rich_progress.py +1 -1
- {fast_agent_mcp-0.3.11.dist-info → fast_agent_mcp-0.3.13.dist-info}/METADATA +18 -9
- {fast_agent_mcp-0.3.11.dist-info → fast_agent_mcp-0.3.13.dist-info}/RECORD +26 -25
- {fast_agent_mcp-0.3.11.dist-info → fast_agent_mcp-0.3.13.dist-info}/WHEEL +0 -0
- {fast_agent_mcp-0.3.11.dist-info → fast_agent_mcp-0.3.13.dist-info}/entry_points.txt +0 -0
- {fast_agent_mcp-0.3.11.dist-info → fast_agent_mcp-0.3.13.dist-info}/licenses/LICENSE +0 -0
fast_agent/ui/mcp_display.py
CHANGED
|
@@ -54,6 +54,17 @@ class Colours:
|
|
|
54
54
|
TEXT_CYAN = "cyan"
|
|
55
55
|
|
|
56
56
|
|
|
57
|
+
# Symbol definitions for timelines and legends
|
|
58
|
+
SYMBOL_IDLE = "·"
|
|
59
|
+
SYMBOL_ERROR = "●"
|
|
60
|
+
SYMBOL_RESPONSE = "▼"
|
|
61
|
+
SYMBOL_NOTIFICATION = "●"
|
|
62
|
+
SYMBOL_REQUEST = "◆"
|
|
63
|
+
SYMBOL_STDIO_ACTIVITY = "●"
|
|
64
|
+
SYMBOL_PING = "●"
|
|
65
|
+
SYMBOL_DISABLED = "▽"
|
|
66
|
+
|
|
67
|
+
|
|
57
68
|
# Color mappings for different contexts
|
|
58
69
|
TIMELINE_COLORS = {
|
|
59
70
|
"error": Colours.ERROR,
|
|
@@ -263,11 +274,19 @@ def _build_inline_timeline(buckets: Iterable[str]) -> str:
|
|
|
263
274
|
for state in buckets:
|
|
264
275
|
color = TIMELINE_COLORS.get(state, Colours.NONE)
|
|
265
276
|
if state in {"idle", "none"}:
|
|
266
|
-
symbol =
|
|
277
|
+
symbol = SYMBOL_IDLE
|
|
267
278
|
elif state == "request":
|
|
268
|
-
symbol =
|
|
279
|
+
symbol = SYMBOL_REQUEST
|
|
280
|
+
elif state == "notification":
|
|
281
|
+
symbol = SYMBOL_NOTIFICATION
|
|
282
|
+
elif state == "error":
|
|
283
|
+
symbol = SYMBOL_ERROR
|
|
284
|
+
elif state == "ping":
|
|
285
|
+
symbol = SYMBOL_PING
|
|
286
|
+
elif state == "disabled":
|
|
287
|
+
symbol = SYMBOL_DISABLED
|
|
269
288
|
else:
|
|
270
|
-
symbol =
|
|
289
|
+
symbol = SYMBOL_RESPONSE
|
|
271
290
|
timeline += f"[bold {color}]{symbol}[/bold {color}]"
|
|
272
291
|
timeline += " [dim]now[/dim]"
|
|
273
292
|
return timeline
|
|
@@ -413,7 +432,15 @@ def _render_channel_summary(status: ServerStatus, indent: str, total_width: int)
|
|
|
413
432
|
elif channel.last_status_code == 405 and "GET" in label:
|
|
414
433
|
# Special case: GET (SSE) with 405 = dim (hollow arrow already handled above)
|
|
415
434
|
label_style = Colours.TEXT_DIM
|
|
416
|
-
elif
|
|
435
|
+
elif arrow_style == Colours.ARROW_ERROR and "GET" in label:
|
|
436
|
+
# Highlight GET stream errors in red to match the arrow indicator
|
|
437
|
+
label_style = Colours.TEXT_ERROR
|
|
438
|
+
elif (
|
|
439
|
+
channel.request_count == 0
|
|
440
|
+
and channel.response_count == 0
|
|
441
|
+
and channel.notification_count == 0
|
|
442
|
+
and (channel.ping_count or 0) == 0
|
|
443
|
+
):
|
|
417
444
|
# No activity = dim
|
|
418
445
|
label_style = Colours.TEXT_DIM
|
|
419
446
|
else:
|
|
@@ -428,19 +455,26 @@ def _render_channel_summary(status: ServerStatus, indent: str, total_width: int)
|
|
|
428
455
|
for bucket_state in channel.activity_buckets:
|
|
429
456
|
color = timeline_color_map.get(bucket_state, "dim")
|
|
430
457
|
if bucket_state in {"idle", "none"}:
|
|
431
|
-
symbol =
|
|
458
|
+
symbol = SYMBOL_IDLE
|
|
432
459
|
elif is_stdio:
|
|
433
|
-
|
|
434
|
-
symbol = "●"
|
|
460
|
+
symbol = SYMBOL_STDIO_ACTIVITY
|
|
435
461
|
elif bucket_state == "request":
|
|
436
|
-
symbol =
|
|
462
|
+
symbol = SYMBOL_REQUEST
|
|
463
|
+
elif bucket_state == "notification":
|
|
464
|
+
symbol = SYMBOL_NOTIFICATION
|
|
465
|
+
elif bucket_state == "error":
|
|
466
|
+
symbol = SYMBOL_ERROR
|
|
467
|
+
elif bucket_state == "ping":
|
|
468
|
+
symbol = SYMBOL_PING
|
|
469
|
+
elif bucket_state == "disabled":
|
|
470
|
+
symbol = SYMBOL_DISABLED
|
|
437
471
|
else:
|
|
438
|
-
symbol =
|
|
472
|
+
symbol = SYMBOL_RESPONSE
|
|
439
473
|
line.append(symbol, style=f"bold {color}")
|
|
440
474
|
else:
|
|
441
475
|
# Show dim dots for no activity
|
|
442
476
|
for _ in range(20):
|
|
443
|
-
line.append(
|
|
477
|
+
line.append(SYMBOL_IDLE, style="black dim")
|
|
444
478
|
line.append(" now", style="dim")
|
|
445
479
|
|
|
446
480
|
# Metrics - different layouts for stdio vs HTTP
|
|
@@ -545,11 +579,17 @@ def _render_channel_summary(status: ServerStatus, indent: str, total_width: int)
|
|
|
545
579
|
if i > 0:
|
|
546
580
|
footer.append(" ", style="dim")
|
|
547
581
|
if name == "idle":
|
|
548
|
-
symbol =
|
|
582
|
+
symbol = SYMBOL_IDLE
|
|
549
583
|
elif name == "request":
|
|
550
|
-
symbol =
|
|
584
|
+
symbol = SYMBOL_REQUEST
|
|
585
|
+
elif name == "notification":
|
|
586
|
+
symbol = SYMBOL_NOTIFICATION
|
|
587
|
+
elif name == "error":
|
|
588
|
+
symbol = SYMBOL_ERROR
|
|
589
|
+
elif name == "ping":
|
|
590
|
+
symbol = SYMBOL_PING
|
|
551
591
|
else:
|
|
552
|
-
symbol =
|
|
592
|
+
symbol = SYMBOL_RESPONSE
|
|
553
593
|
footer.append(symbol, style=f"{color}")
|
|
554
594
|
footer.append(f" {name}", style="dim")
|
|
555
595
|
|
|
@@ -616,7 +656,7 @@ async def render_mcp_status(agent, indent: str = "") -> None:
|
|
|
616
656
|
|
|
617
657
|
header_label = Text(indent)
|
|
618
658
|
header_label.append("▎", style=Colours.TEXT_CYAN)
|
|
619
|
-
header_label.append(
|
|
659
|
+
header_label.append(SYMBOL_RESPONSE, style=f"dim {Colours.TEXT_CYAN}")
|
|
620
660
|
header_label.append(f" [{index:2}] ", style=Colours.TEXT_CYAN)
|
|
621
661
|
header_label.append(server, style=f"{Colours.TEXT_INFO} bold")
|
|
622
662
|
render_header(header_label)
|
|
@@ -6,6 +6,14 @@ Tracks both active events (sampling/elicitation) and completed notifications.
|
|
|
6
6
|
from datetime import datetime
|
|
7
7
|
from typing import Dict, List, Optional
|
|
8
8
|
|
|
9
|
+
# Display metadata for toolbar summaries (singular, plural, compact label)
|
|
10
|
+
_EVENT_ORDER = ("tool_update", "sampling", "elicitation")
|
|
11
|
+
_EVENT_DISPLAY = {
|
|
12
|
+
"tool_update": {"singular": "tool update", "plural": "tool updates", "compact": "tool"},
|
|
13
|
+
"sampling": {"singular": "sample", "plural": "samples", "compact": "samp"},
|
|
14
|
+
"elicitation": {"singular": "elicitation", "plural": "elicitations", "compact": "elic"},
|
|
15
|
+
}
|
|
16
|
+
|
|
9
17
|
# Active events currently in progress
|
|
10
18
|
active_events: Dict[str, Dict[str, str]] = {}
|
|
11
19
|
|
|
@@ -136,32 +144,63 @@ def get_latest() -> Dict[str, str] | None:
|
|
|
136
144
|
return notifications[-1] if notifications else None
|
|
137
145
|
|
|
138
146
|
|
|
139
|
-
def
|
|
147
|
+
def get_counts_by_type() -> Dict[str, int]:
|
|
148
|
+
"""Aggregate completed notifications by event type."""
|
|
149
|
+
counts: Dict[str, int] = {}
|
|
150
|
+
for notification in notifications:
|
|
151
|
+
event_type = notification['type']
|
|
152
|
+
counts[event_type] = counts.get(event_type, 0) + 1
|
|
153
|
+
|
|
154
|
+
if not counts:
|
|
155
|
+
return {}
|
|
156
|
+
|
|
157
|
+
ordered: Dict[str, int] = {}
|
|
158
|
+
for event_type in _EVENT_ORDER:
|
|
159
|
+
if event_type in counts:
|
|
160
|
+
ordered[event_type] = counts[event_type]
|
|
161
|
+
|
|
162
|
+
for event_type, count in counts.items():
|
|
163
|
+
if event_type not in ordered:
|
|
164
|
+
ordered[event_type] = count
|
|
165
|
+
|
|
166
|
+
return ordered
|
|
167
|
+
|
|
168
|
+
|
|
169
|
+
def format_event_label(event_type: str, count: int, *, compact: bool = False) -> str:
|
|
170
|
+
"""Format a human-readable label for an event count."""
|
|
171
|
+
event_display = _EVENT_DISPLAY.get(event_type)
|
|
172
|
+
|
|
173
|
+
if event_display is None:
|
|
174
|
+
base = event_type.replace('_', ' ')
|
|
175
|
+
if compact:
|
|
176
|
+
return f"{base[:1]}:{count}"
|
|
177
|
+
label = base if count == 1 else f"{base}s"
|
|
178
|
+
return f"{count} {label}"
|
|
179
|
+
|
|
180
|
+
if compact:
|
|
181
|
+
return f"{event_display['compact']}:{count}"
|
|
182
|
+
|
|
183
|
+
label = event_display['singular'] if count == 1 else event_display['plural']
|
|
184
|
+
return f"{count} {label}"
|
|
185
|
+
|
|
186
|
+
|
|
187
|
+
def get_summary(*, compact: bool = False) -> str:
|
|
140
188
|
"""Get a summary of completed notifications by type.
|
|
141
189
|
|
|
190
|
+
Args:
|
|
191
|
+
compact: When True, use short-form labels for constrained UI areas.
|
|
192
|
+
|
|
142
193
|
Returns:
|
|
143
|
-
String like "3
|
|
194
|
+
String like "3 tool updates, 2 samples" or "tool:3 samp:2" when compact.
|
|
144
195
|
"""
|
|
145
|
-
|
|
196
|
+
counts = get_counts_by_type()
|
|
197
|
+
if not counts:
|
|
146
198
|
return ""
|
|
147
199
|
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
event_type
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
counts[event_type] = counts.get(event_type, 0) + 1
|
|
156
|
-
|
|
157
|
-
# Build summary string
|
|
158
|
-
parts = []
|
|
159
|
-
for event_type, count in sorted(counts.items()):
|
|
160
|
-
if event_type == 'tools':
|
|
161
|
-
parts.append(f"{count} tool{'s' if count != 1 else ''}")
|
|
162
|
-
elif event_type == 'sampling':
|
|
163
|
-
parts.append(f"{count} sample{'s' if count != 1 else ''}")
|
|
164
|
-
else:
|
|
165
|
-
parts.append(f"{count} {event_type}{'s' if count != 1 else ''}")
|
|
166
|
-
|
|
167
|
-
return ", ".join(parts)
|
|
200
|
+
parts = [
|
|
201
|
+
format_event_label(event_type, count, compact=compact)
|
|
202
|
+
for event_type, count in counts.items()
|
|
203
|
+
]
|
|
204
|
+
|
|
205
|
+
separator = " " if compact else ", "
|
|
206
|
+
return separator.join(parts)
|
fast_agent/ui/rich_progress.py
CHANGED
|
@@ -25,7 +25,7 @@ class RichProgressDisplay:
|
|
|
25
25
|
# table_column=Column(max_width=16),
|
|
26
26
|
),
|
|
27
27
|
TextColumn(text_format="{task.fields[target]:<16}", style="Bold Blue"),
|
|
28
|
-
TextColumn(text_format="{task.fields[details]}", style="
|
|
28
|
+
TextColumn(text_format="{task.fields[details]}", style="white"),
|
|
29
29
|
console=self.console,
|
|
30
30
|
transient=False,
|
|
31
31
|
)
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: fast-agent-mcp
|
|
3
|
-
Version: 0.3.
|
|
3
|
+
Version: 0.3.13
|
|
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
|
|
@@ -208,10 +208,10 @@ License-File: LICENSE
|
|
|
208
208
|
Classifier: License :: OSI Approved :: Apache Software License
|
|
209
209
|
Classifier: Operating System :: OS Independent
|
|
210
210
|
Classifier: Programming Language :: Python :: 3
|
|
211
|
-
Requires-Python:
|
|
211
|
+
Requires-Python: <3.14,>=3.13.5
|
|
212
212
|
Requires-Dist: a2a-sdk>=0.3.6
|
|
213
213
|
Requires-Dist: aiohttp>=3.11.13
|
|
214
|
-
Requires-Dist: anthropic>=0.
|
|
214
|
+
Requires-Dist: anthropic>=0.69.0
|
|
215
215
|
Requires-Dist: azure-identity>=1.14.0
|
|
216
216
|
Requires-Dist: boto3>=1.35.0
|
|
217
217
|
Requires-Dist: deprecated>=1.2.18
|
|
@@ -219,8 +219,8 @@ Requires-Dist: email-validator>=2.2.0
|
|
|
219
219
|
Requires-Dist: fastapi>=0.115.6
|
|
220
220
|
Requires-Dist: google-genai>=1.33.0
|
|
221
221
|
Requires-Dist: keyring>=24.3.1
|
|
222
|
-
Requires-Dist: mcp==1.
|
|
223
|
-
Requires-Dist: openai>=1.
|
|
222
|
+
Requires-Dist: mcp==1.16.0
|
|
223
|
+
Requires-Dist: openai>=2.1.0
|
|
224
224
|
Requires-Dist: opentelemetry-distro>=0.55b0
|
|
225
225
|
Requires-Dist: opentelemetry-exporter-otlp-proto-http>=1.7.0
|
|
226
226
|
Requires-Dist: opentelemetry-instrumentation-anthropic>=0.43.1; python_version >= '3.10' and python_version < '4.0'
|
|
@@ -249,15 +249,24 @@ Description-Content-Type: text/markdown
|
|
|
249
249
|
## Overview
|
|
250
250
|
|
|
251
251
|
> [!TIP]
|
|
252
|
-
>
|
|
252
|
+
> Please see : https://fast-agent.ai for latest documentation. There is also an LLMs.txt [here](https://fast-agent.ai/llms.txt)
|
|
253
253
|
|
|
254
|
-
**`fast-agent`** enables you to create and interact with sophisticated Agents and Workflows in minutes. It is the first framework with complete, end-to-end tested MCP Feature support including Sampling
|
|
254
|
+
**`fast-agent`** enables you to create and interact with sophisticated multimodal Agents and Workflows in minutes. It is the first framework with complete, end-to-end tested MCP Feature support including Sampling and Elicitations.
|
|
255
255
|
|
|
256
|
-

|
|
256
|
+
<!--  -->
|
|
257
257
|
|
|
258
258
|
The simple declarative syntax lets you concentrate on composing your Prompts and MCP Servers to [build effective agents](https://www.anthropic.com/research/building-effective-agents).
|
|
259
259
|
|
|
260
|
-
|
|
260
|
+
Model support is comprehensive with native support for Anthropic, OpenAI and Google providers as well as Azure, Ollama, Deepseek and dozens of others via TensorZero. Structured Outputs, PDF and Vision support is simple to use and well tested. Passthrough and Playback LLMs enable rapid development and test of Python glue-code for your applications.
|
|
261
|
+
|
|
262
|
+
<img width="800" alt="MCP Transport Diagnostics" src="https://github.com/user-attachments/assets/e26472de-58d9-4726-8bdd-01eb407414cf" />
|
|
263
|
+
|
|
264
|
+
|
|
265
|
+
`fast-agent` is the only tool that allows you to inspect Streamable HTTP Transport usage - a critical feature for ensuring reliable, compliant deployments. OAuth is supported with KeyRing storage for secrets. Use the `fast-agent auth` command to manage.
|
|
266
|
+
|
|
267
|
+
|
|
268
|
+
|
|
269
|
+
|
|
261
270
|
|
|
262
271
|
> [!IMPORTANT]
|
|
263
272
|
>
|
|
@@ -4,15 +4,15 @@ fast_agent/constants.py,sha256=IoXL5m4L0iLlcRrKerMaK3ZPcS6KCJgK8b_bj1BAR60,345
|
|
|
4
4
|
fast_agent/context.py,sha256=nBelOqehSH91z3aG2nYhwETP-biRzz-iuA2fqmKdHP8,7700
|
|
5
5
|
fast_agent/context_dependent.py,sha256=KU1eydVBoIt4bYOZroqxDgE1AUexDaZi7hurE26QsF4,1584
|
|
6
6
|
fast_agent/event_progress.py,sha256=OETeh-4jJGyxvvPAlVTzW4JsCbFUmOTo-ti0ROgtG5M,1999
|
|
7
|
-
fast_agent/interfaces.py,sha256=
|
|
7
|
+
fast_agent/interfaces.py,sha256=XktRxJjLfCMPbC5ReV23dP-dRy0gDNtYfMCvSp0QD0I,6373
|
|
8
8
|
fast_agent/mcp_server_registry.py,sha256=TDCNpQIehsh1PK4y7AWp_rkQMcwYx7FaouUbK3kWNZo,2635
|
|
9
9
|
fast_agent/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
10
10
|
fast_agent/agents/__init__.py,sha256=WfgtR9MgmJUJI7rb-CUH_10s7308LjxYIYzJRIBZ_9Y,2644
|
|
11
11
|
fast_agent/agents/agent_types.py,sha256=xAFEFWIvOtSnTNDcqqfaAnBx_lFLhnS2_b4hm9xKMo8,1719
|
|
12
|
-
fast_agent/agents/llm_agent.py,sha256=
|
|
13
|
-
fast_agent/agents/llm_decorator.py,sha256=
|
|
12
|
+
fast_agent/agents/llm_agent.py,sha256=1lO-DtgeaOoYshHxGKNUIViR_gFJjW6GudEWxRFdVU4,10697
|
|
13
|
+
fast_agent/agents/llm_decorator.py,sha256=OezFrnjLwcl3W-1K1sGPtTqD_zVp67wlBUb4SxTesKw,29702
|
|
14
14
|
fast_agent/agents/mcp_agent.py,sha256=O9CrjjUrkmbNYsXQevZy2b8EG4B0KdNSH3wtnbe2HI4,39279
|
|
15
|
-
fast_agent/agents/tool_agent.py,sha256=
|
|
15
|
+
fast_agent/agents/tool_agent.py,sha256=bR0V06zCjuPVtOpOQQzym2Mmyt6EsDzAodJmQOEMoFI,8883
|
|
16
16
|
fast_agent/agents/workflow/chain_agent.py,sha256=Pd8dOH_YdKu3LXsKa4fwqzY_B2qVuhzdfCUiKi5v17s,6293
|
|
17
17
|
fast_agent/agents/workflow/evaluator_optimizer.py,sha256=rhzazy8Aj-ydId6kmBC77TmtYZ5mirSe7eV6PPMWkBA,12040
|
|
18
18
|
fast_agent/agents/workflow/iterative_planner.py,sha256=CTtDpK-YGrFFZMQQmFeE-2I_9-cZv23pNwUoh8w5voA,20478
|
|
@@ -28,18 +28,18 @@ fast_agent/cli/terminal.py,sha256=tDN1fJ91Nc_wZJTNafkQuD7Z7gFscvo1PHh-t7Wl-5s,10
|
|
|
28
28
|
fast_agent/cli/commands/auth.py,sha256=nJEC7zrz5UXYUz5O6AgGZnfJPHIrgHk68CUwGo-7Nyg,15063
|
|
29
29
|
fast_agent/cli/commands/check_config.py,sha256=D0emHGl6yc9XRq-HjAwS4KfS7a9r5gkA55MyiIRptGQ,26638
|
|
30
30
|
fast_agent/cli/commands/go.py,sha256=mZJv1jXO9xqVUzuDCO5iWKI8ubBUACHO6i3lZwu5NFU,15148
|
|
31
|
-
fast_agent/cli/commands/quickstart.py,sha256=
|
|
31
|
+
fast_agent/cli/commands/quickstart.py,sha256=UOTqAbaVGLECHkTvpUNQ41PWXssqCijVvrqh30YUqnM,20624
|
|
32
32
|
fast_agent/cli/commands/server_helpers.py,sha256=Nuded8sZb4Rybwoq5LbXXUgwtJZg-OO04xhmPUp6e98,4073
|
|
33
33
|
fast_agent/cli/commands/setup.py,sha256=n5hVjXkKTmuiW8-0ezItVcMHJ92W6NlE2JOGCYiKw0A,6388
|
|
34
34
|
fast_agent/cli/commands/url_parser.py,sha256=v9KoprPBEEST5Fo7qXgbW50GC5vMpxFteKqAT6mFkdI,5991
|
|
35
35
|
fast_agent/core/__init__.py,sha256=n2ly7SBtFko9H2DPVh8cSqfw9chtiUaokxLmiDpaMyU,2233
|
|
36
36
|
fast_agent/core/agent_app.py,sha256=sUGrG7djpVfZXHrzZKulmY6zodiN8JXtZoew_syThuI,16917
|
|
37
37
|
fast_agent/core/core_app.py,sha256=_8Di00HD2BzWhCAaopAUS0Hzc7pg0249QUUfPuLZ36A,4266
|
|
38
|
-
fast_agent/core/direct_decorators.py,sha256
|
|
38
|
+
fast_agent/core/direct_decorators.py,sha256=-oGOqgLKJhJJJyn0KBN7iAOjtdg4XrX3JCxjoL0uzYI,22641
|
|
39
39
|
fast_agent/core/direct_factory.py,sha256=SYYVtEqPQh7ElvAVC_445a5pZkKstM0RhKNGZ2CJQT8,18338
|
|
40
40
|
fast_agent/core/error_handling.py,sha256=tZkO8LnXO-qf6jD8a12Pv5fD4NhnN1Ag5_tJ6DwbXjg,631
|
|
41
41
|
fast_agent/core/exceptions.py,sha256=ENAD_qGG67foxy6vDkIvc-lgopIUQy6O7zvNPpPXaQg,2289
|
|
42
|
-
fast_agent/core/fastagent.py,sha256=
|
|
42
|
+
fast_agent/core/fastagent.py,sha256=ZJYJAgJc-wNmgy2IR3TBc2Gr_Q2dxEoOccbA8kQkPEI,30894
|
|
43
43
|
fast_agent/core/prompt.py,sha256=qNUFlK3KtU7leYysYUglzBYQnEYiXu__iR_T8189zc0,203
|
|
44
44
|
fast_agent/core/validation.py,sha256=GZ0hUTxkr5KMY1wr6_ifDy91Ycvcx384gZEMOwdie9w,12681
|
|
45
45
|
fast_agent/core/executor/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
@@ -60,10 +60,10 @@ fast_agent/human_input/form_fields.py,sha256=aE7HdR-wOPO_6HllNaJXtn3BzpPsC4TctUA
|
|
|
60
60
|
fast_agent/human_input/simple_form.py,sha256=_flUll9z93VPjKqLS7gvz4L1_YJ3-KNx8_ZpUaaxhoQ,3508
|
|
61
61
|
fast_agent/human_input/types.py,sha256=3Zz89yIt8SuDAVAaRy-r4Vw0-M6AWahwbqQ0yOcoe20,954
|
|
62
62
|
fast_agent/llm/__init__.py,sha256=MCsrkfnTQXYvn0SofJ-JFmp1l1jX_eidgvegbWbgpsw,184
|
|
63
|
-
fast_agent/llm/fastagent_llm.py,sha256=
|
|
63
|
+
fast_agent/llm/fastagent_llm.py,sha256=GyvBGAgwd1frWUzSiBANNQdFX-a50ps97WPEX7q2uw8,25119
|
|
64
64
|
fast_agent/llm/memory.py,sha256=POFoBVMHK0wX4oLd3Gz-6Ru3uC4kTCvAqsVQ77e7KJA,8551
|
|
65
|
-
fast_agent/llm/model_database.py,sha256=
|
|
66
|
-
fast_agent/llm/model_factory.py,sha256=
|
|
65
|
+
fast_agent/llm/model_database.py,sha256=qhC4CX_dKNDTQ3bJA_YCq2wIJK5YP_xlbqNuI1K-a6g,12948
|
|
66
|
+
fast_agent/llm/model_factory.py,sha256=y0gmgFzk15UJHZuTbnp5ExYG4DhlX0X1YzzUc1leNVo,13043
|
|
67
67
|
fast_agent/llm/model_info.py,sha256=DAIMW70W-EFqNLIudhjHJE2gobHUAKg90gkwOPuaFUc,4125
|
|
68
68
|
fast_agent/llm/prompt_utils.py,sha256=1WU67G-BFqftja5I8FKPMMzsvDk1K_1jDi9A9kkFdOg,4899
|
|
69
69
|
fast_agent/llm/provider_key_manager.py,sha256=igzs1ghXsUp0wA4nJVVfWCWiYOib8Ux4jMGlhWbgXu8,3396
|
|
@@ -80,7 +80,7 @@ fast_agent/llm/provider/anthropic/llm_anthropic.py,sha256=3QGmJitHKqmYUSH3l1c_lX
|
|
|
80
80
|
fast_agent/llm/provider/anthropic/multipart_converter_anthropic.py,sha256=szHqhd5i-OclNWM7EHVT66kTiHJ5B0y1qd-JqgJIOO4,16529
|
|
81
81
|
fast_agent/llm/provider/bedrock/bedrock_utils.py,sha256=mqWCCeB1gUQSL2KRUMqpFjvHZ0ZTJugCsd5YOrx6U30,7750
|
|
82
82
|
fast_agent/llm/provider/bedrock/llm_bedrock.py,sha256=Yl3luBfgM4wNGuMpPN9yg8DGHr_ncfYg0EemvKi2Rxc,100199
|
|
83
|
-
fast_agent/llm/provider/google/google_converter.py,sha256=
|
|
83
|
+
fast_agent/llm/provider/google/google_converter.py,sha256=cGb2ty_uBgdATa0Nib_BzvEbWCpBf3Mwzu9pMxMziA8,17599
|
|
84
84
|
fast_agent/llm/provider/google/llm_google_native.py,sha256=pbCld68BFlN1vUQSHWQzIAbFPOBTnd8ZVBEjGmxVS_Q,19296
|
|
85
85
|
fast_agent/llm/provider/openai/llm_aliyun.py,sha256=ti7VHTpwl0AG3ytwBERpDzVtacvCfamKnl2bAnTE96s,1213
|
|
86
86
|
fast_agent/llm/provider/openai/llm_azure.py,sha256=dePpuOf7yD4-zQc1PEHm4yaVznrZe9RaIz7nxsbZhlU,6061
|
|
@@ -103,9 +103,9 @@ fast_agent/mcp/gen_client.py,sha256=Q0hhCVzC659GsvTLJIbhUBgGwsAJRL8b3ejTFokyjn4,
|
|
|
103
103
|
fast_agent/mcp/hf_auth.py,sha256=ndDvR7E9LCc5dBiMsStFXtvvX9lYrL-edCq_qJw4lDw,4476
|
|
104
104
|
fast_agent/mcp/interfaces.py,sha256=xCWONGXe4uQSmmBlMZRD3mflPegTJnz2caVNihEl3ok,2411
|
|
105
105
|
fast_agent/mcp/logger_textio.py,sha256=4YLVXlXghdGm1s_qp1VoAWEX_eWufBfD2iD7l08yoak,3170
|
|
106
|
-
fast_agent/mcp/mcp_agent_client_session.py,sha256=
|
|
106
|
+
fast_agent/mcp/mcp_agent_client_session.py,sha256=VTPEjNjPMrxZopeCr7bXjlvr_2MTzdqEjjBOeQri04g,16050
|
|
107
107
|
fast_agent/mcp/mcp_aggregator.py,sha256=HzNyKuUelAlp5JBkjMAaOB2JvdMgpm0ItEPGjidI9l0,67198
|
|
108
|
-
fast_agent/mcp/mcp_connection_manager.py,sha256=
|
|
108
|
+
fast_agent/mcp/mcp_connection_manager.py,sha256=g19Y-gNH6wmMtFcN9awgQ9yRGmqWa1wi9CpaV80pdfk,25367
|
|
109
109
|
fast_agent/mcp/mcp_content.py,sha256=F9bgJ57EO9sgWg1m-eTNM6xd9js79mHKf4e9O8K8jrI,8829
|
|
110
110
|
fast_agent/mcp/mime_utils.py,sha256=D6YXNdZJ351BjacSW5o0sVF_hrWuRHD6UyWS4TDlLZI,2915
|
|
111
111
|
fast_agent/mcp/oauth_client.py,sha256=3shN3iwsJNXrk7nbcfUgrzNos3i2RuMuLXA80nR8r6Y,17104
|
|
@@ -127,7 +127,7 @@ fast_agent/mcp/prompts/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3
|
|
|
127
127
|
fast_agent/mcp/prompts/__main__.py,sha256=Jsx30MceW6_f0rU_RJw2qQVB7zj2yRPP8mXXjBuJiNw,145
|
|
128
128
|
fast_agent/mcp/prompts/prompt_constants.py,sha256=Q9W0t3rOXl2LHIG9wcghApUV2QZ1iICuo7SwVwHUf3c,566
|
|
129
129
|
fast_agent/mcp/prompts/prompt_helpers.py,sha256=lvcgG1D61FimGUS5rYifMmmidWwFpIs3Egvjf1sfnkE,7486
|
|
130
|
-
fast_agent/mcp/prompts/prompt_load.py,sha256=
|
|
130
|
+
fast_agent/mcp/prompts/prompt_load.py,sha256=1KixVXpkML3_kY3vC59AlMfcBXQVESrII24yx_CyE6s,5495
|
|
131
131
|
fast_agent/mcp/prompts/prompt_server.py,sha256=ZuUFqYfiYYE8yTXw0qagGWkZkelQgETGBpzUIdIhLXc,20174
|
|
132
132
|
fast_agent/mcp/prompts/prompt_template.py,sha256=SAklXs9wujYqqEWv5vzRI_cdjSmGnWlDmPLZ5qkXZO4,15695
|
|
133
133
|
fast_agent/mcp/server/__init__.py,sha256=AJFNzdmuHPRL3jqFhDVDJste_zYE_KJ3gGYDsbghvl0,156
|
|
@@ -191,20 +191,21 @@ fast_agent/types/__init__.py,sha256=y-53m-C4drf4Rx8Bbnk_GAhko9LdNYCyRUWya8e0mos,
|
|
|
191
191
|
fast_agent/types/llm_stop_reason.py,sha256=bWe97OfhALUe8uQeAQOnTdPlYzJiabIfo8u38kPgj3Q,2293
|
|
192
192
|
fast_agent/ui/__init__.py,sha256=MXxTQjFdF7mI_3JHxBPd-aoZYLlxV_-51-Trqgv5-3w,1104
|
|
193
193
|
fast_agent/ui/console.py,sha256=Gjf2QLFumwG1Lav__c07X_kZxxEUSkzV-1_-YbAwcwo,813
|
|
194
|
-
fast_agent/ui/console_display.py,sha256=
|
|
194
|
+
fast_agent/ui/console_display.py,sha256=brDhUR-VoQWV3-YWrmvWS1q9zYFL3eJkO1Uxs_1AwA4,44017
|
|
195
195
|
fast_agent/ui/elicitation_form.py,sha256=t3UhBG44YmxTLu1RjCnHwW36eQQaroE45CiBGJB2czg,29410
|
|
196
196
|
fast_agent/ui/elicitation_style.py,sha256=-WqXgVjVs65oNwhCDw3E0A9cCyw95IOe6LYCJgjT6ok,3939
|
|
197
|
-
fast_agent/ui/enhanced_prompt.py,sha256=
|
|
198
|
-
fast_agent/ui/
|
|
199
|
-
fast_agent/ui/
|
|
197
|
+
fast_agent/ui/enhanced_prompt.py,sha256=TPJmC1zKQaiqDbtlI0WcxUoH5uw1sY23uJ8uEeYiMCY,45018
|
|
198
|
+
fast_agent/ui/history_display.py,sha256=b7l-pXohSnn1YK1g-8BUmY479x-d-wf5sG2pItG2_ps,19024
|
|
199
|
+
fast_agent/ui/interactive_prompt.py,sha256=KI2jSO4roWNivfOeyibiu44J9pu5RU6PiB7Fd59iCYw,46699
|
|
200
|
+
fast_agent/ui/mcp_display.py,sha256=piDn0F98yqvlHx1cxuKqTfefpvZkGiGK2QHujJltMtA,28422
|
|
200
201
|
fast_agent/ui/mcp_ui_utils.py,sha256=hV7z-yHX86BgdH6CMmN5qyOUjyiegQXLJOa5n5A1vQs,8476
|
|
201
202
|
fast_agent/ui/mermaid_utils.py,sha256=MpcRyVCPMTwU1XeIxnyFg0fQLjcyXZduWRF8NhEqvXE,5332
|
|
202
|
-
fast_agent/ui/notification_tracker.py,sha256
|
|
203
|
+
fast_agent/ui/notification_tracker.py,sha256=-hiBwR47SdnwhvrGIXcgsVaqMlMudmrKAf9Xi_E5Eok,5850
|
|
203
204
|
fast_agent/ui/progress_display.py,sha256=hajDob65PttiJ2mPS6FsCtnmTcnyvDWGn-UqQboXqkQ,361
|
|
204
|
-
fast_agent/ui/rich_progress.py,sha256=
|
|
205
|
+
fast_agent/ui/rich_progress.py,sha256=4n5NmsRQTT1GX18faP43yLPhB_gZJqJeWX6-j7g1_zI,7731
|
|
205
206
|
fast_agent/ui/usage_display.py,sha256=ltJpn_sDzo8PDNSXWx-QdEUbQWUnhmajCItNt5mA5rM,7285
|
|
206
|
-
fast_agent_mcp-0.3.
|
|
207
|
-
fast_agent_mcp-0.3.
|
|
208
|
-
fast_agent_mcp-0.3.
|
|
209
|
-
fast_agent_mcp-0.3.
|
|
210
|
-
fast_agent_mcp-0.3.
|
|
207
|
+
fast_agent_mcp-0.3.13.dist-info/METADATA,sha256=BJ3SgQEi3XsnCjuK6aiPTtvGKq6khx_w8HD5NAE0gX8,32003
|
|
208
|
+
fast_agent_mcp-0.3.13.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
|
|
209
|
+
fast_agent_mcp-0.3.13.dist-info/entry_points.txt,sha256=i6Ujja9J-hRxttOKqTYdbYP_tyaS4gLHg53vupoCSsg,199
|
|
210
|
+
fast_agent_mcp-0.3.13.dist-info/licenses/LICENSE,sha256=Gx1L3axA4PnuK4FxsbX87jQ1opoOkSFfHHSytW6wLUU,10935
|
|
211
|
+
fast_agent_mcp-0.3.13.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|