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.

@@ -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 = "◆" # Diamond for requests - rare and important
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 = "●" # Circle for other activity
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 channel.request_count == 0 and channel.response_count == 0:
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
- # For STDIO, all activity shows as filled circles since types are combined
434
- symbol = "●"
460
+ symbol = SYMBOL_STDIO_ACTIVITY
435
461
  elif bucket_state == "request":
436
- symbol = "◆" # Diamond for requests - rare and important
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 = "●" # Circle for other activity
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("·", style="black dim")
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 = "◆" # Diamond for requests
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("●", style=f"dim {Colours.TEXT_CYAN}")
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 get_summary() -> str:
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 tools, 1 sampling, 2 elicitations" or "1 tool update"
194
+ String like "3 tool updates, 2 samples" or "tool:3 samp:2" when compact.
144
195
  """
145
- if not notifications:
196
+ counts = get_counts_by_type()
197
+ if not counts:
146
198
  return ""
147
199
 
148
- counts = {}
149
- for notification in notifications:
150
- event_type = notification['type']
151
- if event_type == 'tool_update':
152
- counts['tools'] = counts.get('tools', 0) + 1
153
- else:
154
- # For sampling/elicitation, use the type directly
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)
@@ -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="dim white"),
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.11
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: >=3.13.5
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.68.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.15.0
223
- Requires-Dist: openai>=1.109.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
- > Documentation site is in production here : https://fast-agent.ai. Feel free to feed back what's helpful and what's not. There is also an LLMs.txt [here](https://fast-agent.ai/llms.txt)
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. Model support is comprehensive with native support for Anthropic, OpenAI and Google as well as Azure, Ollama, Deepseek and dozens of others via TensorZero.
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
- ![multi_model_trim](https://github.com/user-attachments/assets/c8bf7474-2c41-4ef3-8924-06e29907d7c6)
256
+ <!-- ![multi_model_trim](https://github.com/user-attachments/assets/c8bf7474-2c41-4ef3-8924-06e29907d7c6) -->
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
- `fast-agent` is multi-modal, supporting Images and PDFs for both Anthropic and OpenAI endpoints via Prompts, Resources and MCP Tool Call results. The inclusion of passthrough and playback LLMs enable rapid development and test of Python glue-code for your applications.
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=0WCi97-gZT1WU4B4OfP8wduAVImA_s4ji8Z3pACS6J0,6241
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=k2owG-tADgRsH6cFjvgCWM8krbaMoj12GBykmqxindk,10715
13
- fast_agent/agents/llm_decorator.py,sha256=08emhIHxNi7YX9DlF3tOY_H4AzUHhhxF1WpWqmlPtrY,29449
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=UMgNi56XTecP-qnpcIJLzfJ4SFTCTIjz9K49azz8M94,8869
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=CiSen7VxmKDy7apJZ8rAyC33-BIo0zsUt8cBnEtxg0Y,21241
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=0U4_qJl7pdom9mjQ5qwCeb0zBwc5hj-lKFF6zXs62sI,22621
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=0Kvd5rHqVRdkBPdDZQWnV3KzrqGDzDz0_BBRTddCWzE,30828
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=LvaGB3cwdnYBxNfPgC6hq-QcLV7dY2yEU97DpifYmik,24177
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=1sk-0A7303-TOzNQW_IyqVjdyTCUS8a2i2KtwDZigUM,12821
66
- fast_agent/llm/model_factory.py,sha256=FfrmLM9TnBA7-8bjj_gWLQZbEXvaVqDqKp0C6NkvCSU,12895
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=w7povk-qM7DMsNIHwzL-x89YPkcKn3rjrGLwwI6-iQs,17263
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=5_9cW3CSzYspRzb8lOJTFx9E8Qk7ieCBASBbUtNrmiY,15578
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=nbjcyWGK3LQhuFUABV1Mxf_v3rWFSMXNsDHV1h3qDUI,23803
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=muv-3u0fJODYFTRWnrPWGJIFHuyDXZd5DudiZEkuVPc,5495
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=oZg-SMd_F0_1azsxWF5ug7cee_-ou2xOgGeW_y_6xrI,42034
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=nGtYqvabfwYqCNczqWEf36AjY4laetG8CI__ePKtwKs,43496
198
- fast_agent/ui/interactive_prompt.py,sha256=Y-tYaU_5jqjDLRRgP3rzoMAXmJxYHVIVPsd8gWkcQso,44823
199
- fast_agent/ui/mcp_display.py,sha256=54NVlWL6KsvhLP2tZm3edC3RH7fiLOJeKOYQCJ55uks,27142
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=XU2_C_1PwKEReyL2L6sFfFOq-3CczMlBiIIspxUjx0E,4625
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=fMiTigtkll4gL4Ik5WYHx-t0a92jfUovj0b580rT6J0,7735
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.11.dist-info/METADATA,sha256=hXINwYTIB7UUzPSbYOlPN0Mcq-YUKy1nWlfs0Gx5hcQ,31697
207
- fast_agent_mcp-0.3.11.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
208
- fast_agent_mcp-0.3.11.dist-info/entry_points.txt,sha256=i6Ujja9J-hRxttOKqTYdbYP_tyaS4gLHg53vupoCSsg,199
209
- fast_agent_mcp-0.3.11.dist-info/licenses/LICENSE,sha256=Gx1L3axA4PnuK4FxsbX87jQ1opoOkSFfHHSytW6wLUU,10935
210
- fast_agent_mcp-0.3.11.dist-info/RECORD,,
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,,