Skip to content

Commit 5ca4861

Browse files
authored
Provide option to disable activity registration (#1140)
1 parent 26e2e61 commit 5ca4861

File tree

1 file changed

+16
-9
lines changed

1 file changed

+16
-9
lines changed

temporalio/contrib/openai_agents/_temporal_openai_agents.py

Lines changed: 16 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -245,6 +245,7 @@ def __init__(
245245
mcp_server_providers: Sequence[
246246
Union["StatelessMCPServerProvider", "StatefulMCPServerProvider"]
247247
] = (),
248+
register_activities: bool = True,
248249
) -> None:
249250
"""Initialize the OpenAI agents plugin.
250251
@@ -257,6 +258,9 @@ def __init__(
257258
Each server will be wrapped in a TemporalMCPServer if not already wrapped,
258259
and their activities will be automatically registered with the worker.
259260
The plugin manages the connection lifecycle of these servers.
261+
register_activities: Whether to register activities during the worker execution.
262+
This can be disabled on some workers to allow a separation of workflows and activities
263+
but should not be disabled on all workers, or agents will not be able to progress.
260264
"""
261265
if model_params is None:
262266
model_params = ModelActivityParameters()
@@ -277,6 +281,7 @@ def __init__(
277281
self._model_params = model_params
278282
self._model_provider = model_provider
279283
self._mcp_server_providers = mcp_server_providers
284+
self._register_activities = register_activities
280285

281286
def init_client_plugin(self, next: temporalio.client.Plugin) -> None:
282287
"""Set the next client plugin"""
@@ -338,17 +343,19 @@ def configure_worker(self, config: WorkerConfig) -> WorkerConfig:
338343
config["interceptors"] = list(config.get("interceptors") or []) + [
339344
OpenAIAgentsTracingInterceptor()
340345
]
341-
new_activities = [ModelActivity(self._model_provider).invoke_model_activity]
342346

343-
server_names = [server.name for server in self._mcp_server_providers]
344-
if len(server_names) != len(set(server_names)):
345-
raise ValueError(
346-
f"More than one mcp server registered with the same name. Please provide unique names."
347-
)
347+
if self._register_activities:
348+
new_activities = [ModelActivity(self._model_provider).invoke_model_activity]
349+
350+
server_names = [server.name for server in self._mcp_server_providers]
351+
if len(server_names) != len(set(server_names)):
352+
raise ValueError(
353+
f"More than one mcp server registered with the same name. Please provide unique names."
354+
)
348355

349-
for mcp_server in self._mcp_server_providers:
350-
new_activities.extend(mcp_server._get_activities())
351-
config["activities"] = list(config.get("activities") or []) + new_activities
356+
for mcp_server in self._mcp_server_providers:
357+
new_activities.extend(mcp_server._get_activities())
358+
config["activities"] = list(config.get("activities") or []) + new_activities
352359

353360
runner = config.get("workflow_runner")
354361
if isinstance(runner, SandboxedWorkflowRunner):

0 commit comments

Comments
 (0)