Skip to content

Commit d12371b

Browse files
committed
refactor: apply simplify pass
Generated-By: PostHog Desktop Task-Id: c9e11d68-ecf2-4b5a-aca5-5f8b15c973d0
1 parent 536b049 commit d12371b

4 files changed

Lines changed: 28 additions & 44 deletions

File tree

‎posthog/mcp/_instrument_fastmcp.py‎

Lines changed: 6 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -119,23 +119,18 @@ async def wrapped(
119119
_name_owned_by_real_tool(server, name) is False
120120
):
121121
virtual_content = [
122-
mcp_types.TextContent(type="text", text=get_more_tools_result_text())
122+
mcp_types.TextContent(type="text", text=text)
123+
for text in lifecycle.virtual_result_texts(get_more_tools_result_text())
123124
]
124-
if prompt_back := lifecycle.prompt_back_text():
125-
virtual_content.append(
126-
mcp_types.TextContent(type="text", text=prompt_back)
127-
)
128125
await lifecycle.record_missing_capability(conversation_id_delivered=True)
129126
return virtual_content
130127

131128
if lifecycle.is_feedback and (_name_owned_by_real_tool(server, name) is False):
132129
reply = await lifecycle.record_feedback(conversation_id_delivered=True)
133-
virtual_content = [mcp_types.TextContent(type="text", text=reply)]
134-
if prompt_back := lifecycle.prompt_back_text():
135-
virtual_content.append(
136-
mcp_types.TextContent(type="text", text=prompt_back)
137-
)
138-
return virtual_content
130+
return [
131+
mcp_types.TextContent(type="text", text=text)
132+
for text in lifecycle.virtual_result_texts(reply)
133+
]
139134

140135
# Strip each injected key independently. A tool can declare its own
141136
# `context` (kept) while `conversation_id` is still SDK-injected (stripped),

‎posthog/mcp/_instrument_lowlevel.py‎

Lines changed: 6 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -213,12 +213,9 @@ async def handler(req: Any) -> Any:
213213
await _name_owned_by_real_tool(high_level, data, name, server) is False
214214
):
215215
virtual_content = [
216-
mcp_types.TextContent(type="text", text=get_more_tools_result_text())
216+
mcp_types.TextContent(type="text", text=text)
217+
for text in lifecycle.virtual_result_texts(get_more_tools_result_text())
217218
]
218-
if prompt_back := lifecycle.prompt_back_text():
219-
virtual_content.append(
220-
mcp_types.TextContent(type="text", text=prompt_back)
221-
)
222219
await lifecycle.record_missing_capability(conversation_id_delivered=True)
223220
return mcp_types.ServerResult(
224221
mcp_types.CallToolResult(
@@ -231,11 +228,10 @@ async def handler(req: Any) -> Any:
231228
await _name_owned_by_real_tool(high_level, data, name, server) is False
232229
):
233230
reply = await lifecycle.record_feedback(conversation_id_delivered=True)
234-
virtual_content = [mcp_types.TextContent(type="text", text=reply)]
235-
if prompt_back := lifecycle.prompt_back_text():
236-
virtual_content.append(
237-
mcp_types.TextContent(type="text", text=prompt_back)
238-
)
231+
virtual_content = [
232+
mcp_types.TextContent(type="text", text=text)
233+
for text in lifecycle.virtual_result_texts(reply)
234+
]
239235
return mcp_types.ServerResult(
240236
mcp_types.CallToolResult(
241237
content=virtual_content,

‎posthog/mcp/_instrument_v2.py‎

Lines changed: 12 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -303,24 +303,20 @@ async def wrapped(
303303
_name_owned_by_real_tool_v2(server, name) is False
304304
):
305305
virtual_content = [
306-
mcp_types.TextContent(type="text", text=get_more_tools_result_text())
306+
mcp_types.TextContent(type="text", text=text)
307+
for text in lifecycle.virtual_result_texts(get_more_tools_result_text())
307308
]
308-
if prompt_back := lifecycle.prompt_back_text():
309-
virtual_content.append(
310-
mcp_types.TextContent(type="text", text=prompt_back)
311-
)
312309
await lifecycle.record_missing_capability(conversation_id_delivered=True)
313310
return mcp_types.CallToolResult(content=virtual_content)
314311

315312
if lifecycle.is_feedback and (
316313
_name_owned_by_real_tool_v2(server, name) is False
317314
):
318315
reply = await lifecycle.record_feedback(conversation_id_delivered=True)
319-
virtual_content = [mcp_types.TextContent(type="text", text=reply)]
320-
if prompt_back := lifecycle.prompt_back_text():
321-
virtual_content.append(
322-
mcp_types.TextContent(type="text", text=prompt_back)
323-
)
316+
virtual_content = [
317+
mcp_types.TextContent(type="text", text=text)
318+
for text in lifecycle.virtual_result_texts(reply)
319+
]
324320
return mcp_types.CallToolResult(content=virtual_content)
325321

326322
# v2 validates against the function signature and rejects unexpected
@@ -531,24 +527,20 @@ async def handler(ctx: Any, params: Any) -> Any:
531527
await raw_listing_owns_tool_name(data, name, ctx) is False
532528
):
533529
virtual_content = [
534-
mcp_types.TextContent(type="text", text=get_more_tools_result_text())
530+
mcp_types.TextContent(type="text", text=text)
531+
for text in lifecycle.virtual_result_texts(get_more_tools_result_text())
535532
]
536-
if prompt_back := lifecycle.prompt_back_text():
537-
virtual_content.append(
538-
mcp_types.TextContent(type="text", text=prompt_back)
539-
)
540533
await lifecycle.record_missing_capability(conversation_id_delivered=True)
541534
return mcp_types.CallToolResult(content=virtual_content)
542535

543536
if lifecycle.is_feedback and (
544537
await raw_listing_owns_tool_name(data, name, ctx) is False
545538
):
546539
reply = await lifecycle.record_feedback(conversation_id_delivered=True)
547-
virtual_content = [mcp_types.TextContent(type="text", text=reply)]
548-
if prompt_back := lifecycle.prompt_back_text():
549-
virtual_content.append(
550-
mcp_types.TextContent(type="text", text=prompt_back)
551-
)
540+
virtual_content = [
541+
mcp_types.TextContent(type="text", text=text)
542+
for text in lifecycle.virtual_result_texts(reply)
543+
]
552544
return mcp_types.CallToolResult(content=virtual_content)
553545

554546
# Settle the shared session before the tool body runs, so an in-tool

‎posthog/mcp/_instrumentation.py‎

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -474,10 +474,11 @@ async def prime_session(self) -> None:
474474
self.data, mcp_session_id=self.mcp_session_id, token=self.token
475475
)
476476

477-
def prompt_back_text(self) -> Optional[str]:
477+
def virtual_result_texts(self, primary_text: str) -> List[str]:
478+
"""Build the text payload for an SDK virtual-tool result."""
478479
if not self.conversation_id or not self.minted_conversation_id:
479-
return None
480-
return build_prompt_back(self.conversation_id)["text"]
480+
return [primary_text]
481+
return [primary_text, build_prompt_back(self.conversation_id)["text"]]
481482

482483
def _anchored_conversation_id(self, delivered: bool) -> Optional[str]:
483484
if self.minted_conversation_id and not delivered:

0 commit comments

Comments
 (0)