Files
2026-07-13 12:38:34 +08:00

107 lines
2.3 KiB
Python

import os
from composio import (
Composio,
after_execute,
before_execute,
before_file_upload,
schema_modifier,
)
from composio.types import Tool, ToolExecuteParams, ToolExecutionResponse
composio = Composio()
@before_execute(tools=["HACKERNEWS_GET_USER"])
def before_execute_modifier(
tool: str,
toolkit: str,
params: ToolExecuteParams,
) -> ToolExecuteParams:
# Perform modifications on the request
print("before_execute_modifier", tool, toolkit)
return params
@before_file_upload(tools=["HACKERNEWS_GET_USER"])
def rewrite_upload_path(path: str, tool: str, toolkit: str) -> str:
"""Optional: same pattern as before_execute; use for per-tool file path policy."""
return path
@after_execute(tools=["HACKERNEWS_GET_USER"])
def after_execute_modifier(
tool: str,
toolkit: str,
response: ToolExecutionResponse,
) -> ToolExecutionResponse:
return {
**response,
"data": {
"karama": response["data"]["karama"],
},
}
# execute tool
response = composio.tools.execute(
user_id="default",
slug="HACKERNEWS_GET_USER",
arguments={"username": "pg"},
modifiers=[
before_execute_modifier,
rewrite_upload_path,
after_execute_modifier,
],
)
print(response)
@schema_modifier(tools=["HACKERNEWS_GET_USER"])
def modify_schema(
tool: str,
toolkit: str,
schema: Tool,
) -> Tool:
# Perform modifications on the schema
print("modify_schema", tool, toolkit)
return schema
tools = composio.tools.get(
user_id="default",
slug="HACKERNEWS_GET_USER",
modifiers=[modify_schema],
)
print(tools)
@before_execute(toolkits=["NOTION"])
def add_custom_auth(
tool: str,
toolkit: str,
params: ToolExecuteParams,
) -> ToolExecuteParams:
if params["custom_auth_params"] is None:
params["custom_auth_params"] = {"parameters": []}
params["custom_auth_params"]["parameters"].append( # type: ignore
{
"name": "x-api-key",
"value": os.getenv("NOTION_API_KEY"),
"in": "header",
}
)
return params
result = composio.tools.execute(
user_id="default",
slug="NOTION_GET_DATABASES",
arguments={},
modifiers=[
add_custom_auth,
],
)
print(result)