fast-agent-mcp 0.3.10__py3-none-any.whl → 0.3.12__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_decorator.py +7 -0
- fast_agent/agents/tool_agent.py +2 -2
- fast_agent/cli/commands/quickstart.py +142 -129
- fast_agent/config.py +2 -2
- fast_agent/core/direct_decorators.py +18 -26
- fast_agent/core/fastagent.py +2 -1
- fast_agent/human_input/elicitation_handler.py +71 -54
- 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/mcp/elicitation_factory.py +2 -2
- fast_agent/mcp/mcp_aggregator.py +9 -16
- fast_agent/mcp/prompts/prompt_load.py +2 -3
- fast_agent/mcp/sampling.py +21 -0
- fast_agent/ui/console_display.py +27 -22
- fast_agent/ui/enhanced_prompt.py +61 -14
- fast_agent/ui/history_display.py +555 -0
- fast_agent/ui/interactive_prompt.py +44 -12
- fast_agent/ui/mcp_display.py +31 -11
- fast_agent/ui/notification_tracker.py +206 -0
- fast_agent/ui/rich_progress.py +1 -1
- {fast_agent_mcp-0.3.10.dist-info → fast_agent_mcp-0.3.12.dist-info}/METADATA +4 -4
- {fast_agent_mcp-0.3.10.dist-info → fast_agent_mcp-0.3.12.dist-info}/RECORD +27 -25
- {fast_agent_mcp-0.3.10.dist-info → fast_agent_mcp-0.3.12.dist-info}/WHEEL +0 -0
- {fast_agent_mcp-0.3.10.dist-info → fast_agent_mcp-0.3.12.dist-info}/entry_points.txt +0 -0
- {fast_agent_mcp-0.3.10.dist-info → fast_agent_mcp-0.3.12.dist-info}/licenses/LICENSE +0 -0
fast_agent/ui/mcp_display.py
CHANGED
|
@@ -19,12 +19,12 @@ class Colours:
|
|
|
19
19
|
"""Color constants for MCP status display elements."""
|
|
20
20
|
|
|
21
21
|
# Timeline activity colors (Option A: Mixed Intensity)
|
|
22
|
-
ERROR = "bright_red"
|
|
23
|
-
DISABLED = "bright_blue"
|
|
24
|
-
RESPONSE = "blue"
|
|
25
|
-
REQUEST = "yellow"
|
|
26
|
-
NOTIFICATION = "cyan"
|
|
27
|
-
PING = "dim green"
|
|
22
|
+
ERROR = "bright_red" # Keep error bright
|
|
23
|
+
DISABLED = "bright_blue" # Keep disabled bright
|
|
24
|
+
RESPONSE = "blue" # Normal blue instead of bright
|
|
25
|
+
REQUEST = "yellow" # Normal yellow instead of bright
|
|
26
|
+
NOTIFICATION = "cyan" # Normal cyan instead of bright
|
|
27
|
+
PING = "dim green" # Keep ping dim
|
|
28
28
|
IDLE = "white dim"
|
|
29
29
|
NONE = "dim"
|
|
30
30
|
|
|
@@ -195,7 +195,7 @@ def _format_capability_shorthand(
|
|
|
195
195
|
entries.append(("Ro", False, False))
|
|
196
196
|
|
|
197
197
|
mode = (status.elicitation_mode or "").lower()
|
|
198
|
-
if mode == "
|
|
198
|
+
if mode == "auto-cancel":
|
|
199
199
|
entries.append(("El", "red", False))
|
|
200
200
|
elif mode and mode != "none":
|
|
201
201
|
entries.append(("El", True, False))
|
|
@@ -405,7 +405,24 @@ def _render_channel_summary(status: ServerStatus, indent: str, total_width: int)
|
|
|
405
405
|
else:
|
|
406
406
|
display_arrow = arrow
|
|
407
407
|
line.append(display_arrow, style=arrow_style)
|
|
408
|
-
|
|
408
|
+
|
|
409
|
+
# Determine label style based on activity and special cases
|
|
410
|
+
if not channel:
|
|
411
|
+
# No channel = dim
|
|
412
|
+
label_style = Colours.TEXT_DIM
|
|
413
|
+
elif channel.last_status_code == 405 and "GET" in label:
|
|
414
|
+
# Special case: GET (SSE) with 405 = dim (hollow arrow already handled above)
|
|
415
|
+
label_style = Colours.TEXT_DIM
|
|
416
|
+
elif arrow_style == Colours.ARROW_ERROR and "GET" in label:
|
|
417
|
+
# Highlight GET stream errors in red to match the arrow indicator
|
|
418
|
+
label_style = Colours.TEXT_ERROR
|
|
419
|
+
elif channel.request_count == 0 and channel.response_count == 0:
|
|
420
|
+
# No activity = dim
|
|
421
|
+
label_style = Colours.TEXT_DIM
|
|
422
|
+
else:
|
|
423
|
+
# Has activity = normal
|
|
424
|
+
label_style = Colours.TEXT_DEFAULT
|
|
425
|
+
line.append(f" {label:<13}", style=label_style)
|
|
409
426
|
|
|
410
427
|
# Always show timeline (dim black dots if no data)
|
|
411
428
|
line.append("10m ", style="dim")
|
|
@@ -415,6 +432,9 @@ def _render_channel_summary(status: ServerStatus, indent: str, total_width: int)
|
|
|
415
432
|
color = timeline_color_map.get(bucket_state, "dim")
|
|
416
433
|
if bucket_state in {"idle", "none"}:
|
|
417
434
|
symbol = "·"
|
|
435
|
+
elif is_stdio:
|
|
436
|
+
# For STDIO, all activity shows as filled circles since types are combined
|
|
437
|
+
symbol = "●"
|
|
418
438
|
elif bucket_state == "request":
|
|
419
439
|
symbol = "◆" # Diamond for requests - rare and important
|
|
420
440
|
else:
|
|
@@ -442,9 +462,9 @@ def _render_channel_summary(status: ServerStatus, indent: str, total_width: int)
|
|
|
442
462
|
# Show "-" for shut/disabled channels (405, off, disabled states)
|
|
443
463
|
channel_state = (channel.state or "open").lower()
|
|
444
464
|
is_shut = (
|
|
445
|
-
channel.last_status_code == 405
|
|
446
|
-
channel_state in {"off", "disabled"}
|
|
447
|
-
(channel_state == "error" and channel.last_status_code == 405)
|
|
465
|
+
channel.last_status_code == 405
|
|
466
|
+
or channel_state in {"off", "disabled"}
|
|
467
|
+
or (channel_state == "error" and channel.last_status_code == 405)
|
|
448
468
|
)
|
|
449
469
|
|
|
450
470
|
if is_shut:
|
|
@@ -0,0 +1,206 @@
|
|
|
1
|
+
"""
|
|
2
|
+
Enhanced notification tracker for prompt_toolkit toolbar display.
|
|
3
|
+
Tracks both active events (sampling/elicitation) and completed notifications.
|
|
4
|
+
"""
|
|
5
|
+
|
|
6
|
+
from datetime import datetime
|
|
7
|
+
from typing import Dict, List, Optional
|
|
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
|
+
|
|
17
|
+
# Active events currently in progress
|
|
18
|
+
active_events: Dict[str, Dict[str, str]] = {}
|
|
19
|
+
|
|
20
|
+
# Completed notifications history
|
|
21
|
+
notifications: List[Dict[str, str]] = []
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
def add_tool_update(server_name: str) -> None:
|
|
25
|
+
"""Add a tool update notification.
|
|
26
|
+
|
|
27
|
+
Args:
|
|
28
|
+
server_name: Name of the server that had tools updated
|
|
29
|
+
"""
|
|
30
|
+
notifications.append({
|
|
31
|
+
'type': 'tool_update',
|
|
32
|
+
'server': server_name
|
|
33
|
+
})
|
|
34
|
+
|
|
35
|
+
|
|
36
|
+
def start_sampling(server_name: str) -> None:
|
|
37
|
+
"""Start tracking a sampling operation.
|
|
38
|
+
|
|
39
|
+
Args:
|
|
40
|
+
server_name: Name of the server making the sampling request
|
|
41
|
+
"""
|
|
42
|
+
active_events['sampling'] = {
|
|
43
|
+
'server': server_name,
|
|
44
|
+
'start_time': datetime.now().isoformat()
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
# Force prompt_toolkit to redraw if active
|
|
48
|
+
try:
|
|
49
|
+
from prompt_toolkit.application.current import get_app
|
|
50
|
+
get_app().invalidate()
|
|
51
|
+
except Exception:
|
|
52
|
+
pass
|
|
53
|
+
|
|
54
|
+
|
|
55
|
+
def end_sampling(server_name: str) -> None:
|
|
56
|
+
"""End tracking a sampling operation and add to completed notifications.
|
|
57
|
+
|
|
58
|
+
Args:
|
|
59
|
+
server_name: Name of the server that made the sampling request
|
|
60
|
+
"""
|
|
61
|
+
if 'sampling' in active_events:
|
|
62
|
+
del active_events['sampling']
|
|
63
|
+
|
|
64
|
+
notifications.append({
|
|
65
|
+
'type': 'sampling',
|
|
66
|
+
'server': server_name
|
|
67
|
+
})
|
|
68
|
+
|
|
69
|
+
# Force prompt_toolkit to redraw if active
|
|
70
|
+
try:
|
|
71
|
+
from prompt_toolkit.application.current import get_app
|
|
72
|
+
get_app().invalidate()
|
|
73
|
+
except Exception:
|
|
74
|
+
pass
|
|
75
|
+
|
|
76
|
+
|
|
77
|
+
def start_elicitation(server_name: str) -> None:
|
|
78
|
+
"""Start tracking an elicitation operation.
|
|
79
|
+
|
|
80
|
+
Args:
|
|
81
|
+
server_name: Name of the server making the elicitation request
|
|
82
|
+
"""
|
|
83
|
+
active_events['elicitation'] = {
|
|
84
|
+
'server': server_name,
|
|
85
|
+
'start_time': datetime.now().isoformat()
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
# Force prompt_toolkit to redraw if active
|
|
89
|
+
try:
|
|
90
|
+
from prompt_toolkit.application.current import get_app
|
|
91
|
+
get_app().invalidate()
|
|
92
|
+
except Exception:
|
|
93
|
+
pass
|
|
94
|
+
|
|
95
|
+
|
|
96
|
+
def end_elicitation(server_name: str) -> None:
|
|
97
|
+
"""End tracking an elicitation operation and add to completed notifications.
|
|
98
|
+
|
|
99
|
+
Args:
|
|
100
|
+
server_name: Name of the server that made the elicitation request
|
|
101
|
+
"""
|
|
102
|
+
if 'elicitation' in active_events:
|
|
103
|
+
del active_events['elicitation']
|
|
104
|
+
|
|
105
|
+
notifications.append({
|
|
106
|
+
'type': 'elicitation',
|
|
107
|
+
'server': server_name
|
|
108
|
+
})
|
|
109
|
+
|
|
110
|
+
# Force prompt_toolkit to redraw if active
|
|
111
|
+
try:
|
|
112
|
+
from prompt_toolkit.application.current import get_app
|
|
113
|
+
get_app().invalidate()
|
|
114
|
+
except Exception:
|
|
115
|
+
pass
|
|
116
|
+
|
|
117
|
+
|
|
118
|
+
def get_active_status() -> Optional[Dict[str, str]]:
|
|
119
|
+
"""Get currently active operation, if any.
|
|
120
|
+
|
|
121
|
+
Returns:
|
|
122
|
+
Dict with 'type' and 'server' keys, or None if nothing active
|
|
123
|
+
"""
|
|
124
|
+
if 'sampling' in active_events:
|
|
125
|
+
return {'type': 'sampling', 'server': active_events['sampling']['server']}
|
|
126
|
+
if 'elicitation' in active_events:
|
|
127
|
+
return {'type': 'elicitation', 'server': active_events['elicitation']['server']}
|
|
128
|
+
return None
|
|
129
|
+
|
|
130
|
+
|
|
131
|
+
def clear() -> None:
|
|
132
|
+
"""Clear all notifications and active events."""
|
|
133
|
+
notifications.clear()
|
|
134
|
+
active_events.clear()
|
|
135
|
+
|
|
136
|
+
|
|
137
|
+
def get_count() -> int:
|
|
138
|
+
"""Get the current completed notification count."""
|
|
139
|
+
return len(notifications)
|
|
140
|
+
|
|
141
|
+
|
|
142
|
+
def get_latest() -> Dict[str, str] | None:
|
|
143
|
+
"""Get the most recent completed notification."""
|
|
144
|
+
return notifications[-1] if notifications else None
|
|
145
|
+
|
|
146
|
+
|
|
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:
|
|
188
|
+
"""Get a summary of completed notifications by type.
|
|
189
|
+
|
|
190
|
+
Args:
|
|
191
|
+
compact: When True, use short-form labels for constrained UI areas.
|
|
192
|
+
|
|
193
|
+
Returns:
|
|
194
|
+
String like "3 tool updates, 2 samples" or "tool:3 samp:2" when compact.
|
|
195
|
+
"""
|
|
196
|
+
counts = get_counts_by_type()
|
|
197
|
+
if not counts:
|
|
198
|
+
return ""
|
|
199
|
+
|
|
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.12
|
|
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
|
|
@@ -211,7 +211,7 @@ Classifier: Programming Language :: Python :: 3
|
|
|
211
211
|
Requires-Python: >=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'
|
|
@@ -1,18 +1,18 @@
|
|
|
1
1
|
fast_agent/__init__.py,sha256=ns6CPmjOL5y7cyV4XgFTfMGcfLnuBJwVTbcjJ5Co3x4,4152
|
|
2
|
-
fast_agent/config.py,sha256=
|
|
2
|
+
fast_agent/config.py,sha256=tKnAhGAADpuwU7DggScG0VESs7el4R1Y1T3MUPzD5_U,22509
|
|
3
3
|
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
12
|
fast_agent/agents/llm_agent.py,sha256=k2owG-tADgRsH6cFjvgCWM8krbaMoj12GBykmqxindk,10715
|
|
13
|
-
fast_agent/agents/llm_decorator.py,sha256=
|
|
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
|
|
@@ -54,16 +54,16 @@ fast_agent/core/logging/logger.py,sha256=L-hLfUGFCIABoNYDiUkNHWvFxL6j-6zn5Pc5E7a
|
|
|
54
54
|
fast_agent/core/logging/transport.py,sha256=i_WYXk5mqyfetT72bCYrbdrMWcuL1HJCyeQKfQg7U2w,16994
|
|
55
55
|
fast_agent/history/history_exporter.py,sha256=oqkw7qC5rrW73u20tkIqt8yBWPoVzCTC61x2Q2rOKGs,1404
|
|
56
56
|
fast_agent/human_input/__init__.py,sha256=4Jr_0JLJwdQ3iEUNd6Api9InldtnRMDv_WeZq_WEHpA,935
|
|
57
|
-
fast_agent/human_input/elicitation_handler.py,sha256=
|
|
57
|
+
fast_agent/human_input/elicitation_handler.py,sha256=diR8jWRCAuoqTDQHJ3C097EORcLFxpLjdz6EubVOnI8,4776
|
|
58
58
|
fast_agent/human_input/elicitation_state.py,sha256=L_vSTpw1-TSDumRYa89Me-twWRbUL2w7GNVhVJmn3KE,1152
|
|
59
59
|
fast_agent/human_input/form_fields.py,sha256=aE7HdR-wOPO_6HllNaJXtn3BzpPsC4TctUApbveRk8g,7644
|
|
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
|
|
@@ -97,14 +97,14 @@ fast_agent/llm/provider/openai/openai_multipart.py,sha256=uuoRMYWiznYksBODbknBuq
|
|
|
97
97
|
fast_agent/llm/provider/openai/openai_utils.py,sha256=RI9UgF7SGkZ02bAep7glvLy3erbismmZp7wXDsRoJPQ,2034
|
|
98
98
|
fast_agent/mcp/__init__.py,sha256=Q-86MBawKmB602VMut8U3uqUQDOrTAMx2HmHKnWT32Q,1371
|
|
99
99
|
fast_agent/mcp/common.py,sha256=MpSC0fLO21RcDz4VApah4C8_LisVGz7OXkR17Xw-9mY,431
|
|
100
|
-
fast_agent/mcp/elicitation_factory.py,sha256=
|
|
100
|
+
fast_agent/mcp/elicitation_factory.py,sha256=d4unxJyR0S-qH05yBZ_oQ08XLBToFtUzzFFYvv0wLrY,3172
|
|
101
101
|
fast_agent/mcp/elicitation_handlers.py,sha256=LWNKn850Ht9V1SGTfAZDptlsgzrycNhOPNsCcqzsuUY,6884
|
|
102
102
|
fast_agent/mcp/gen_client.py,sha256=Q0hhCVzC659GsvTLJIbhUBgGwsAJRL8b3ejTFokyjn4,3038
|
|
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
106
|
fast_agent/mcp/mcp_agent_client_session.py,sha256=5_9cW3CSzYspRzb8lOJTFx9E8Qk7ieCBASBbUtNrmiY,15578
|
|
107
|
-
fast_agent/mcp/mcp_aggregator.py,sha256=
|
|
107
|
+
fast_agent/mcp/mcp_aggregator.py,sha256=HzNyKuUelAlp5JBkjMAaOB2JvdMgpm0ItEPGjidI9l0,67198
|
|
108
108
|
fast_agent/mcp/mcp_connection_manager.py,sha256=nbjcyWGK3LQhuFUABV1Mxf_v3rWFSMXNsDHV1h3qDUI,23803
|
|
109
109
|
fast_agent/mcp/mcp_content.py,sha256=F9bgJ57EO9sgWg1m-eTNM6xd9js79mHKf4e9O8K8jrI,8829
|
|
110
110
|
fast_agent/mcp/mime_utils.py,sha256=D6YXNdZJ351BjacSW5o0sVF_hrWuRHD6UyWS4TDlLZI,2915
|
|
@@ -114,7 +114,7 @@ fast_agent/mcp/prompt_message_extended.py,sha256=BsiV2SsiZkDlvqzvjeSowq8Ojvowr9X
|
|
|
114
114
|
fast_agent/mcp/prompt_render.py,sha256=AqDaQqM6kqciV9X79S5rsRr3VjcQ_2JOiLaHqpRzsS4,2888
|
|
115
115
|
fast_agent/mcp/prompt_serialization.py,sha256=QMbY0aa_UlJ7bbxl_muOm2TYeYbBVTEeEMHFmEy99ss,20182
|
|
116
116
|
fast_agent/mcp/resource_utils.py,sha256=cu-l9aOy-NFs8tPihYRNjsB2QSuime8KGOGpUvihp84,6589
|
|
117
|
-
fast_agent/mcp/sampling.py,sha256=
|
|
117
|
+
fast_agent/mcp/sampling.py,sha256=6S9bpGCFGC5azIGE-zxODvKgBbBn1x6amL5mc4sMg_4,7491
|
|
118
118
|
fast_agent/mcp/stdio_tracking_simple.py,sha256=T6kCIb6YjwqKtXHz_6HvlLLYiSCbuggt2xCXSihVnIg,1918
|
|
119
119
|
fast_agent/mcp/streamable_http_tracking.py,sha256=bcNNReokho6WMjWEH13F33bUSkjJ2F5l3qnegkDqdMA,11465
|
|
120
120
|
fast_agent/mcp/transport_tracking.py,sha256=tsc2Ntf47KbKXs8DzRkqvG0U-FbpwU2VxemNfRbJBpo,24088
|
|
@@ -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,19 +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=oZg-SMd_F0_1azsxWF5ug7cee_-ou2xOgGeW_y_6xrI,42034
|
|
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=vokUfri1DSMpMLyvzJqFrrqKED_dU2-xafWY8vEUjGo,27333
|
|
200
201
|
fast_agent/ui/mcp_ui_utils.py,sha256=hV7z-yHX86BgdH6CMmN5qyOUjyiegQXLJOa5n5A1vQs,8476
|
|
201
202
|
fast_agent/ui/mermaid_utils.py,sha256=MpcRyVCPMTwU1XeIxnyFg0fQLjcyXZduWRF8NhEqvXE,5332
|
|
203
|
+
fast_agent/ui/notification_tracker.py,sha256=-hiBwR47SdnwhvrGIXcgsVaqMlMudmrKAf9Xi_E5Eok,5850
|
|
202
204
|
fast_agent/ui/progress_display.py,sha256=hajDob65PttiJ2mPS6FsCtnmTcnyvDWGn-UqQboXqkQ,361
|
|
203
|
-
fast_agent/ui/rich_progress.py,sha256=
|
|
205
|
+
fast_agent/ui/rich_progress.py,sha256=4n5NmsRQTT1GX18faP43yLPhB_gZJqJeWX6-j7g1_zI,7731
|
|
204
206
|
fast_agent/ui/usage_display.py,sha256=ltJpn_sDzo8PDNSXWx-QdEUbQWUnhmajCItNt5mA5rM,7285
|
|
205
|
-
fast_agent_mcp-0.3.
|
|
206
|
-
fast_agent_mcp-0.3.
|
|
207
|
-
fast_agent_mcp-0.3.
|
|
208
|
-
fast_agent_mcp-0.3.
|
|
209
|
-
fast_agent_mcp-0.3.
|
|
207
|
+
fast_agent_mcp-0.3.12.dist-info/METADATA,sha256=04VuIDYIhpA_OQHA6Ejz-O7wXpwu6uXwethvvhSuwa8,31695
|
|
208
|
+
fast_agent_mcp-0.3.12.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
|
|
209
|
+
fast_agent_mcp-0.3.12.dist-info/entry_points.txt,sha256=i6Ujja9J-hRxttOKqTYdbYP_tyaS4gLHg53vupoCSsg,199
|
|
210
|
+
fast_agent_mcp-0.3.12.dist-info/licenses/LICENSE,sha256=Gx1L3axA4PnuK4FxsbX87jQ1opoOkSFfHHSytW6wLUU,10935
|
|
211
|
+
fast_agent_mcp-0.3.12.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|