-
Notifications
You must be signed in to change notification settings - Fork 4.2k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
feat: integration/conn v1->v2 #1263
base: master
Are you sure you want to change the base?
Conversation
The latest updates on your projects. Learn more about Vercel for Git ↗︎
|
python/composio/client/__init__.py
Outdated
app_unique_key=app.name, | ||
name=f"{app_name}_{timestamp}", | ||
auth_mode=auth_mode, | ||
auth_config=auth_config, | ||
use_composio_auth=use_composio_auth, | ||
force_new_integration=force_new_integration, | ||
) | ||
|
||
if integration is None and auth_mode is None: | ||
integration = self.client.integrations.create( | ||
app_id=app.appId, | ||
app_unique_key=app.appId, | ||
auth_config=auth_config, | ||
name=f"{app_name}_{timestamp}", | ||
use_composio_auth=use_composio_auth, | ||
force_new_integration=force_new_integration, | ||
) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Inconsistent usage of app_unique_key
parameter - using app.name
in one place but app.appId
in another could cause integration creation failures
📝 Committable Code Suggestion
‼️ Ensure you review the code suggestion before committing it to the branch. Make sure it replaces the highlighted code, contains no missing lines, and has no issues with indentation.
app_unique_key=app.name, | |
name=f"{app_name}_{timestamp}", | |
auth_mode=auth_mode, | |
auth_config=auth_config, | |
use_composio_auth=use_composio_auth, | |
force_new_integration=force_new_integration, | |
) | |
if integration is None and auth_mode is None: | |
integration = self.client.integrations.create( | |
app_id=app.appId, | |
app_unique_key=app.appId, | |
auth_config=auth_config, | |
name=f"{app_name}_{timestamp}", | |
use_composio_auth=use_composio_auth, | |
force_new_integration=force_new_integration, | |
) | |
app_unique_key=app.appId, | |
name=f"{app_name}_{timestamp}", | |
auth_mode=auth_mode, | |
auth_config=auth_config, | |
use_composio_auth=use_composio_auth, | |
) | |
if integration is None and auth_mode is None: | |
integration = self.client.integrations.create( | |
app_unique_key=app.appId, | |
auth_config=auth_config, | |
name=f"{app_name}_{timestamp}", | |
use_composio_auth=use_composio_auth, | |
) |
"""Initiate a new connected account.""" | ||
response = self._raise_if_required( | ||
response=self.client.http.post( | ||
url=str(self.endpoint), | ||
url=str(self.endpoint_v2 / "initiateConnection"), | ||
json={ | ||
"integrationId": integration_id, | ||
"userUuid": entity_id, | ||
"data": params or {}, | ||
"labels": labels or [], | ||
"redirectUri": redirect_url, | ||
"app": { | ||
"integrationId": integration_id, | ||
"uniqueKey": app_unique_key, | ||
}, | ||
"connection": { | ||
"entityId": entity_id, | ||
"initiateData": params or {}, | ||
"extra": {"redirectUrl": redirect_url, "labels": labels or []}, | ||
}, | ||
}, |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The app_unique_key
parameter in initiate()
is added but not used in the request payload when None
, causing potential inconsistency
📝 Committable Code Suggestion
‼️ Ensure you review the code suggestion before committing it to the branch. Make sure it replaces the highlighted code, contains no missing lines, and has no issues with indentation.
"""Initiate a new connected account.""" | |
response = self._raise_if_required( | |
response=self.client.http.post( | |
url=str(self.endpoint), | |
url=str(self.endpoint_v2 / "initiateConnection"), | |
json={ | |
"integrationId": integration_id, | |
"userUuid": entity_id, | |
"data": params or {}, | |
"labels": labels or [], | |
"redirectUri": redirect_url, | |
"app": { | |
"integrationId": integration_id, | |
"uniqueKey": app_unique_key, | |
}, | |
"connection": { | |
"entityId": entity_id, | |
"initiateData": params or {}, | |
"extra": {"redirectUrl": redirect_url, "labels": labels or []}, | |
}, | |
}, | |
def initiate( | |
self, | |
integration_id: str, | |
app_unique_key: t.Optional[str] = None, | |
entity_id: t.Optional[str] = None, | |
params: t.Optional[t.Dict] = None, | |
labels: t.Optional[t.List] = None, | |
redirect_url: t.Optional[str] = None, | |
) -> ConnectionRequestModel: | |
"""Initiate a new connected account.""" | |
payload = { | |
"app": { | |
"integrationId": integration_id, | |
}, | |
"connection": { | |
"entityId": entity_id, | |
"initiateData": params or {}, | |
"extra": {"redirectUrl": redirect_url, "labels": labels or []}, | |
}, | |
} | |
if app_unique_key is not None: | |
payload["app"]["uniqueKey"] = app_unique_key | |
response = self._raise_if_required( | |
response=self.client.http.post( | |
url=str(self.endpoint_v2 / "initiateConnection"), | |
json=payload, | |
) | |
) |
""" | ||
|
||
triggers: _Triggers | ||
actions: _Actions | ||
integrations: _Integrations | ||
|
||
|
||
v1 = _V1(endpoint="v1") |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Missing initialization of v2
endpoint at the end of file. The v2
variable is used but not properly initialized with the _V2
class.
📝 Committable Code Suggestion
‼️ Ensure you review the code suggestion before committing it to the branch. Make sure it replaces the highlighted code, contains no missing lines, and has no issues with indentation.
v1 = _V1(endpoint="v1") | |
v1 = _V1(endpoint="v1") | |
v2 = _V2(endpoint="v2") |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
👍 Looks good to me! Reviewed everything up to 54eb407 in 1 minute and 15 seconds
More details
- Looked at
212
lines of code in4
files - Skipped
0
files when reviewing. - Skipped posting
9
drafted comments based on config settings.
1. python/composio/tools/toolset.py:1267
- Draft comment:
Using 'app_unique_key' (set from app_data.name) instead of the old 'app_id' as the primary identifier – please ensure documentation and downstream consumers are updated accordingly. - Reason this comment was not posted:
Comment did not seem useful. Confidence is useful =0%
<= threshold50%
This comment is asking the PR author to ensure documentation and downstream consumers are updated, which violates the rule against asking the author to ensure things are updated or tested. It does not provide a specific code suggestion or ask for a specific test to be written.
2. python/composio/tools/toolset.py:1276
- Draft comment:
initiate_connection – updated logic relies on integration V2 endpoints; ensure tests cover the new JSON payload and response structure. - Reason this comment was not posted:
Comment did not seem useful. Confidence is useful =0%
<= threshold50%
The comment is asking the author to ensure that tests cover the new JSON payload and response structure. This falls under the rule of not asking the author to ensure that the change is tested. Therefore, this comment should be removed.
3. python/composio/tools/toolset.py:1299
- Draft comment:
Verifying auth_scheme against AUTH_SCHEMES is now crucial; ensure that the error message and upstream documentation reflect the permitted schemes. - Reason this comment was not posted:
Comment was not on a location in the diff, so it can't be submitted as a review comment.
4. python/composio/tools/toolset.py:1320
- Draft comment:
Ensure that _validate_auth_config is compatible with v2 integration requirements; update tests if needed. - Reason this comment was not posted:
Comment was not on a location in the diff, so it can't be submitted as a review comment.
5. composio/tools/toolset.py:340
- Draft comment:
Typo: Rename 'process_respone' to 'process_response' for clarity. - Reason this comment was not posted:
Comment was not on a location in the diff, so it can't be submitted as a review comment.
6. composio/tools/toolset.py:1258
- Draft comment:
Unused parameter 'force_new_integration' is documented with a pylint disable. Consider removing or documenting its no-op behavior. - Reason this comment was not posted:
Comment was not on a location in the diff, so it can't be submitted as a review comment.
7. composio/tools/toolset.py:1267
- Draft comment:
Integration creation now uses 'app_unique_key' (from app_data.name) alongside app_id. Ensure the backend and clients expect this new contract. - Reason this comment was not posted:
Comment was not on a location in the diff, so it can't be submitted as a review comment.
8. composio/client/endpoints.py:142
- Draft comment:
Ensure that the new v2 endpoints (for integrations, actions, and triggers) are correctly configured and tested. - Reason this comment was not posted:
Confidence changes required:50%
<= threshold50%
None
9. composio/tools/toolset.py:1716
- Draft comment:
Consider supporting additional types (e.g. datetime) in _serialize_execute_params if they are expected in action parameters. - Reason this comment was not posted:
Confidence changes required:40%
<= threshold50%
None
Workflow ID: wflow_XRpGxnAKCsWDdgsA
You can customize Ellipsis with 👍 / 👎 feedback, review rules, user-specific overrides, quiet
mode, and more.
}, | ||
) | ||
) | ||
return ConnectionRequestModel(**response.json()) | ||
return ConnectionRequestModel(**response.json().get("connectionResponse")) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Using .get("connectionResponse")
could return None if the key doesn't exist in the response. Consider adding error handling:
response_data = response.json()
if "connectionResponse" not in response_data:
raise ValueError("Missing connectionResponse in API response")
return ConnectionRequestModel(**response_data["connectionResponse"])
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
It is an assumption of the SDK that the backend (in this case Hermes) will return successfully. If not then _raise_if_required
will be fired.
python/composio/client/__init__.py
Outdated
) | ||
|
||
if integration is None and auth_mode is None: | ||
integration = self.client.integrations.create( | ||
app_id=app.appId, | ||
app_unique_key=app.appId, |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
There's an inconsistency in using app.name
vs app.appId
as app_unique_key
. This could lead to confusion and potential bugs. Consider using a consistent identifier.
name: t.Optional[str] = None, | ||
auth_mode: t.Optional["AuthSchemeType"] = None, | ||
auth_config: t.Optional[t.Dict[str, t.Any]] = None, | ||
use_composio_auth: bool = False, | ||
force_new_integration: bool = False, | ||
force_new_integration: bool = False, # pylint: disable=unused-argument | ||
) -> IntegrationModel: | ||
""" |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The docstring for the create
method needs to be updated to reflect the deprecation of app_id
and force_new_integration
parameters. Also, there's a typo in the param name auth_param
(should be auth_mode
).
Code Review SummaryOverall AssessmentThe changes for migrating from v1 to v2 API are generally well-structured, but there are a few areas that need attention: Key Concerns
Recommendations
Code Quality: 7/10
|
json={ | ||
"integrationId": integration_id, | ||
"userUuid": entity_id, | ||
"data": params or {}, | ||
"labels": labels or [], | ||
"redirectUri": redirect_url, | ||
"app": { | ||
"integrationId": integration_id, |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Potential KeyError
when accessing app
dictionary if integration_id
is None
. The code should handle the case when integration_id
is not provided.
📝 Committable Code Suggestion
‼️ Ensure you review the code suggestion before committing it to the branch. Make sure it replaces the highlighted code, contains no missing lines, and has no issues with indentation.
json={ | |
"integrationId": integration_id, | |
"userUuid": entity_id, | |
"data": params or {}, | |
"labels": labels or [], | |
"redirectUri": redirect_url, | |
"app": { | |
"integrationId": integration_id, | |
json={ | |
"app": { | |
"integrationId": integration_id if integration_id is not None else "", |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
❌ Changes requested. Incremental review on 8bbfe42 in 1 minute and 35 seconds
More details
- Looked at
115
lines of code in3
files - Skipped
0
files when reviewing. - Skipped posting
8
drafted comments based on config settings.
1. python/composio/tools/toolset.py:340
- Draft comment:
Typo: Rename 'process_respone' to 'process_response' to improve clarity. - Reason this comment was not posted:
Comment was not on a location in the diff, so it can't be submitted as a review comment.
2. python/composio/tools/toolset.py:1880
- Draft comment:
Consider adding a brief delay between retries in the execute_action retry loop to avoid potential tight loops. - Reason this comment was not posted:
Comment was not on a location in the diff, so it can't be submitted as a review comment.
3. python/composio/tools/toolset.py:237
- Draft comment:
The use of the '@' operator in 'return action @ self[action]' is non-standard; ensure its behavior is clearly documented. - Reason this comment was not posted:
Comment was not on a location in the diff, so it can't be submitted as a review comment.
4. python/composio/client/collections.py:257
- Draft comment:
Updated payload structure: the JSON now nests 'config' and 'connection' objects. Verify that the backend v2 endpoint accepts these new field names. - Reason this comment was not posted:
Comment was not on a location in the diff, so it can't be submitted as a review comment.
5. python/composio/tools/toolset.py:1258
- Draft comment:
Integration creation now uses the v2 endpoint and omits the app_id parameter. Confirm that using app_unique_key (possibly lowercased) meets the new backend requirements. - Reason this comment was not posted:
Comment was not on a location in the diff, so it can't be submitted as a review comment.
6. python/composio/tools/toolset.py:1340
- Draft comment:
In initiate_connection, when required connected_account_params are missing, the error message could include more context (e.g. expected integration parameters) to aid debugging. - Reason this comment was not posted:
Comment was not on a location in the diff, so it can't be submitted as a review comment.
7. python/composio/tools/toolset.py:340
- Draft comment:
Typo: Method name 'process_respone' should be 'process_response'. - Reason this comment was not posted:
Comment was not on a location in the diff, so it can't be submitted as a review comment.
8. python/composio/tools/toolset.py:1110
- Draft comment:
Typo in error message: 'available_schems' should be 'available_schemes'. - Reason this comment was not posted:
Comment was not on a location in the diff, so it can't be submitted as a review comment.
Workflow ID: wflow_FMg23pgljNPQxNVS
Want Ellipsis to fix these issues? Tag @ellipsis-dev
in a comment. You can customize Ellipsis with 👍 / 👎 feedback, review rules, user-specific overrides, quiet
mode, and more.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
❌ Changes requested. Incremental review on 64ea12d in 1 minute and 12 seconds
More details
- Looked at
34
lines of code in1
files - Skipped
1
files when reviewing. - Skipped posting
3
drafted comments based on config settings.
1. python/composio/client/__init__.py:424
- Draft comment:
Updating the type and default value of 'force_new_integration' from bool to Optional[bool] changes its behavior. Consider updating the function's docstring to inform users that this parameter is deprecated and its default is now None. - Reason this comment was not posted:
Comment was not on a location in the diff, so it can't be submitted as a review comment.
2. python/composio/client/__init__.py:438
- Draft comment:
When warning about deprecation, consider specifying a warning category (e.g., DeprecationWarning or FutureWarning) and setting stacklevel=2 to better indicate the source of the call. - Reason this comment was not posted:
Comment was not on a location in the diff, so it can't be submitted as a review comment.
3. python/composio/client/__init__.py:424
- Draft comment:
Changed 'force_new_integration' from bool with default False to Optional[bool] = None. Consider updating the function docstring to note its deprecation clearly. - Reason this comment was not posted:
Comment was not on a location in the diff, so it can't be submitted as a review comment.
Workflow ID: wflow_ywAD72eZ2EBCKLUV
Want Ellipsis to fix these issues? Tag @ellipsis-dev
in a comment. You can customize Ellipsis with 👍 / 👎 feedback, review rules, user-specific overrides, quiet
mode, and more.
@@ -438,45 +439,36 @@ def initiate_connection( | |||
:param integration: Optional existing IntegrationModel instance to be used. | |||
:return: A ConnectionRequestModel instance representing the initiated connection. | |||
""" | |||
if force_new_integration is not None: | |||
warnings.warn( |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
When issuing the deprecation warning, include a warning category (e.g., DeprecationWarning) and a 'stacklevel' parameter so that the warning points to the caller.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
👍 Looks good to me! Incremental review on b61ddb2 in 28 seconds
More details
- Looked at
15
lines of code in1
files - Skipped
0
files when reviewing. - Skipped posting
2
drafted comments based on config settings.
1. python/composio/client/__init__.py:456
- Draft comment:
Formatting improvement: splitting the error message across multiple lines improves readability. Ensure consistency with the project's style guide. - Reason this comment was not posted:
Confidence changes required:0%
<= threshold50%
None
2. python/composio/client/__init__.py:456
- Draft comment:
This change only reformats the raise statement for improved readability; no functional changes. - Reason this comment was not posted:
Confidence changes required:0%
<= threshold50%
None
Workflow ID: wflow_WPzVOFb5Ybm9HYvs
You can customize Ellipsis with 👍 / 👎 feedback, review rules, user-specific overrides, quiet
mode, and more.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
👍 Looks good to me! Incremental review on 2e7f54e in 2 minutes and 35 seconds
More details
- Looked at
1537
lines of code in44
files - Skipped
1
files when reviewing. - Skipped posting
44
drafted comments based on config settings.
1. .github/workflows/release.yaml:66
- Draft comment:
Added new plugin names in the plugins list; please verify that these plugin identifiers are correct and match the expected configuration for release builds. Also, double-check that modifying the environment variable for PATH using export is effective within the workflow step. - Reason this comment was not posted:
Comment did not seem useful. Confidence is useful =0%
<= threshold50%
The comment is asking the PR author to verify and double-check things, which violates the rules. It doesn't provide a specific suggestion or point out a specific issue with the code.
2. docs/framework/agno.mdx:12
- Draft comment:
Renamed from 'Phidata' to 'Agno' and updated instructions. Confirm that all references (e.g., package names and example code) are updated consistently. - Reason this comment was not posted:
Comment did not seem useful. Confidence is useful =0%
<= threshold50%
The comment is asking the PR author to confirm that all references have been updated consistently. This falls under the rule of not asking the author to double-check things. The comment does not provide a specific suggestion or point out a specific issue, so it should be removed.
3. docs/framework/gemini.mdx:22
- Draft comment:
The Gemini guide now provides clear steps for initializing a Google client and configuring tools. Ensure that the demo code examples accurately match the live client SDK methods. - Reason this comment was not posted:
Comment did not seem useful. Confidence is useful =0%
<= threshold50%
This comment is purely informative and does not provide a specific code suggestion or request for clarification. It also asks the PR author to ensure something, which is against the rules.
4. docs/framework/groq.mdx:18
- Draft comment:
The Groq guide appears largely unchanged except for minor copy edits. Verify that code snippets and command examples (e.g., for installing composio-langchain) are accurate. - Reason this comment was not posted:
Comment was not on a location in the diff, so it can't be submitted as a review comment.
5. docs/framework/ibm.mdx:60
- Draft comment:
The IBM integration guide (video and code) looks good and the instructions are clear. Validate that the IBM agent setup code correctly enforces required inputs (e.g. URL and Project ID) and that error messages have been improved. - Reason this comment was not posted:
Comment did not seem useful. Confidence is useful =0%
<= threshold50%
The comment starts with a purely informative statement about the IBM integration guide, which is not allowed. It then asks the PR author to validate certain aspects of the code, which is also not allowed as per the rules. The comment does not provide a specific code suggestion or ask for a specific test to be written.
6. docs/mint.json:150
- Draft comment:
The updated mint.json now includes new frameworks (gemini and ibm) and renames phidata to agno. Confirm that documentation section links mirror updated file names. - Reason this comment was not posted:
Comment was not on a location in the diff, so it can't be submitted as a review comment.
7. js/examples/deep_researcher/demo.mjs:45
- Draft comment:
The Deep Researcher agent example includes a custom CLI flow with spinner animations. Recommend verifying that usage of environment variables (e.g. COMPOSIO_API_KEY) is secure and error handling in promise rejections (process.exit on error) is acceptable. - Reason this comment was not posted:
Comment did not seem useful. Confidence is useful =30%
<= threshold50%
The comment suggests verifying the security of environment variables and error handling practices. It indirectly asks the author to ensure these practices are correct, which violates the rule against asking the author to confirm or ensure behavior. However, it does not provide a specific suggestion or ask for a specific change, making it less actionable.
8. python/composio/__version__.py:1
- Draft comment:
Version bump from 0.7.0 to 0.7.1 is consistent across packages. Ensure that version changes are synchronized in all dependent tools. - Reason this comment was not posted:
Comment did not seem useful. Confidence is useful =0%
<= threshold50%
The comment is related to dependency version changes, which is not allowed according to the rules. It also asks the author to ensure synchronization across tools, which is similar to asking for confirmation or verification, which is not allowed.
9. python/composio/client/__init__.py:454
- Draft comment:
Updated error messages to reference AUTH_SCHEME_WITH_INITIATE properly. This change should be validated to ensure there is no conflict with existing authentication modes. - Reason this comment was not posted:
Comment did not seem useful. Confidence is useful =0%
<= threshold50%
The comment is asking the PR author to validate the change to ensure there is no conflict with existing authentication modes. This falls under the rule of not asking the author to ensure the behavior is intended or to double-check things. Therefore, this comment should be removed.
10. python/composio/client/collections.py:42
- Draft comment:
The new definitions for ALL_AUTH_SCHEMES and AUTH_SCHEME_WITH_INITIATE look appropriate. Please check that TYPE_CHECKING and literal definitions remain consistent with actual usage. - Reason this comment was not posted:
Comment did not seem useful. Confidence is useful =0%
<= threshold50%
The comment is asking the PR author to check consistency, which violates the rule against asking the author to double-check things. It does not provide a specific suggestion or point out a specific issue.
11. python/composio/tools/toolset.py:1272
- Draft comment:
Updated initiate_connection method to validate auth_scheme using AUTH_SCHEME_WITH_INITIATE. Confirm that the _validate_no_auth_scheme helper is properly called and that tests cover scenarios with 'NO_AUTH'. - Reason this comment was not posted:
Comment was not on a location in the diff, so it can't be submitted as a review comment.
12. python/dockerfiles/Dockerfile:22
- Draft comment:
The Dockerfile now installs composio-core version 0.7.1. Ensure that all dependencies (e.g., fastapi, playwright, uvicorn) are compatible with this core version. - Reason this comment was not posted:
Marked as duplicate.
13. python/examples/advanced_agents/domain_deep_research/readme.md:24
- Draft comment:
Updated command to run main.py has correct path. Confirm that instructions align with the file structure and that the 'domain_deep_research' directory accurately reflects updated naming. - Reason this comment was not posted:
Comment was not on a location in the diff, so it can't be submitted as a review comment.
14. python/examples/advanced_agents/domain_deep_research/setup.sh:19
- Draft comment:
The setup.sh file creates a venv named 'domain_researcher' and executes login and addition of integrations. Verify that commands (e.g. 'composio add exa' and 'composio add googledocs') match the intended integrations. - Reason this comment was not posted:
Comment was not on a location in the diff, so it can't be submitted as a review comment.
15. python/plugins/agno/README.md:13
- Draft comment:
Documentation for the Agno plugin appears clear. Ensure that installation instructions and sample commands (composio add github, etc.) reflect the latest SDK behavior. - Reason this comment was not posted:
Comment did not seem useful. Confidence is useful =0%
<= threshold50%
This comment is purely informative and asks the PR author to ensure that documentation reflects the latest SDK behavior. It doesn't provide a specific code suggestion or point out a specific issue in the code.
16. python/plugins/agno/agno_demo.py:6
- Draft comment:
The Agno demo example is concise and tests a simple tool (gmail profile). Check that the action name 'GMAIL_GET_PROFILE' is valid and that error handling (if profile retrieval fails) is covered in tests. - Reason this comment was not posted:
Comment did not seem useful. Confidence is useful =40%
<= threshold50%
The comment is asking the PR author to check the validity of an action name and ensure error handling is covered in tests. This violates the rule against asking the author to confirm or ensure things. However, it does suggest a specific area for testing, which is allowed.
17. python/plugins/agno/composio_agno/__init__.py:1
- Draft comment:
Public API re-exports are correctly updated, including WorkspaceType and action. No issues. - Reason this comment was not posted:
Comment did not seem useful. Confidence is useful =0%
<= threshold50%
This comment is purely informative and does not provide any actionable feedback or suggestions for improvement. It simply states that the public API re-exports are correctly updated, which is not necessary for the PR author to know from a review perspective.
18. python/plugins/agno/composio_agno/toolset.py:116
- Draft comment:
The Agno-specific toolset wraps composio tools as Agno Toolkit objects. Verify that the conversion and function wrapping, including validate_call usage, provide correct parameter binding. - Reason this comment was not posted:
Comment did not seem useful. Confidence is useful =0%
<= threshold50%
The comment is asking the PR author to verify the conversion and function wrapping, which violates the rule against asking the author to ensure behavior is intended or tested. It doesn't provide a specific suggestion or point out a specific issue.
19. python/plugins/agno/setup.py:10
- Draft comment:
Setup script for Agno plugin specifies dependencies correctly. Ensure versions for composio_core and agno packages are compatible. - Reason this comment was not posted:
Comment did not seem useful. Confidence is useful =0%
<= threshold50%
This comment is purely informative and asks the PR author to ensure compatibility of versions, which is against the rules. It doesn't provide a specific suggestion or point out a specific issue.
20. python/plugins/autogen/setup.py:10
- Draft comment:
Setup script for Autogen plugin updated to version 0.7.1. Confirm that dependency versions for pyautogen, flaml, and autogen_agentchat are compatible. - Reason this comment was not posted:
Marked as duplicate.
21. python/plugins/camel/setup.py:10
- Draft comment:
Camel plugin setup, version bumped to 0.7.1. Validate that the camel-ai version specifier meets current SDK requirements. - Reason this comment was not posted:
Marked as duplicate.
22. python/plugins/claude/setup.py:10
- Draft comment:
Claude plugin setup calls for composio_openai and anthropic. Confirm that the dependency versions support the intended functionality. - Reason this comment was not posted:
Marked as duplicate.
23. python/plugins/crew_ai/setup.py:10
- Draft comment:
CrewAI plugin setup is updated to version 0.7.1, with dependency on composio_langchain. Ensure tests cover connectivity with CrewAI agents. - Reason this comment was not posted:
Marked as duplicate.
24. python/plugins/gemini/README.md:1
- Draft comment:
Gemini plugin documentation includes a detailed integration guide. Check that all instructions (e.g., token usage and client configuration) are up-to-date with Google Genai SDK. - Reason this comment was not posted:
Comment did not seem useful. Confidence is useful =0%
<= threshold50%
This comment is purely informative and asks the PR author to check if the documentation is up-to-date, which violates the rule against asking the author to ensure things are correct or up-to-date.
25. python/plugins/gemini/composio_gemini/__init__.py:1
- Draft comment:
Exports for Gemini toolset are clean and complete. - Reason this comment was not posted:
Comment did not seem useful. Confidence is useful =0%
<= threshold50%
This comment is purely informative and does not provide any actionable feedback or suggestions for improvement. It does not align with the rules for good comments, as it does not ask for clarification, suggest improvements, or identify potential issues.
26. python/plugins/gemini/composio_gemini/toolset.py:11
- Draft comment:
Gemini toolset wrapping function correctly builds a callable function for executing actions. Confirm that the creation of the function signature and annotations via get_signature_format_from_schema_params meets expectations. - Reason this comment was not posted:
Comment did not seem useful. Confidence is useful =0%
<= threshold50%
The comment is asking the PR author to confirm that the creation of the function signature and annotations meets expectations. This falls under asking the author to confirm their intention or to ensure the behavior is intended, which violates the rules.
27. python/plugins/gemini/demo.py:1
- Draft comment:
Gemini demo sample provided displays a clean integration with Google Genai SDK. Validate that paradigms for creating a client and sending messages are correct. - Reason this comment was not posted:
Comment did not seem useful. Confidence is useful =0%
<= threshold50%
This comment is asking the PR author to validate that the paradigms for creating a client and sending messages are correct. This falls under the category of asking the author to ensure the behavior is intended or to double-check things, which is against the rules.
28. python/plugins/gemini/setup.py:1
- Draft comment:
Gemini plugin setup script updated to version 0.7.1; dependency on google-genai should be verified. - Reason this comment was not posted:
Comment did not seem useful. Confidence is useful =0%
<= threshold50%
This comment is about verifying a dependency change, which is not allowed according to the rules. It doesn't provide a specific suggestion or ask for a test to be written. Therefore, it should be removed.
29. python/plugins/google/setup.py:10
- Draft comment:
Google plugin setup updated; dependency on google-cloud-aiplatform is specified. Ensure testing against actual cloud API responses. - Reason this comment was not posted:
Marked as duplicate.
30. python/plugins/griptape/setup.py:10
- Draft comment:
Griptape plugin setup updated to version 0.7.1. Validate that necessary dependencies as provided in requirements are tested. - Reason this comment was not posted:
Marked as duplicate.
31. python/plugins/julep/setup.py:10
- Draft comment:
Julep plugin setup updated to version 0.7.1. Confirm that dependency versions (such as composio_openai and julep) are aligned. - Reason this comment was not posted:
Marked as duplicate.
32. python/plugins/langchain/setup.py:10
- Draft comment:
Langchain plugin setup reflects new version and dependencies; check that packages like langchain-openai and langchainhub are compatible with latest features. - Reason this comment was not posted:
Marked as duplicate.
33. python/plugins/langgraph/setup.py:10
- Draft comment:
Langgraph plugin setup updated; dependency on langgraph is included. Verify that the plugin integration meets the expected workflow. - Reason this comment was not posted:
Marked as duplicate.
34. python/plugins/llamaindex/setup.py:10
- Draft comment:
LlamaIndex plugin setup updated to version 0.7.1; ensure dependency version for llama_index is as required. - Reason this comment was not posted:
Marked as duplicate.
35. python/plugins/lyzr/setup.py:10
- Draft comment:
Lyzr plugin setup updated to version 0.7.1; verify that all dependencies (lyzr-automata, pydantic, langchain) are compatible with the latest core. - Reason this comment was not posted:
Marked as duplicate.
36. python/plugins/openai/setup.py:10
- Draft comment:
OpenAI plugin setup updated; dependency on openai is present. Ensure that SDK methods and function call formatting align with OpenAI function-calling requirements. - Reason this comment was not posted:
Marked as duplicate.
37. python/plugins/phidata/composio_phidata/toolset.py:35
- Draft comment:
Phidata toolset is marked as deprecated in favor of composio_agno. Ensure that a deprecation warning is clear and that existing users transition accordingly. - Reason this comment was not posted:
Comment did not seem useful. Confidence is useful =0%
<= threshold50%
This comment is purely informative and suggests ensuring a deprecation warning is clear and that users transition accordingly. It doesn't provide a specific code suggestion or ask for a specific test to be written. It violates the rule against making purely informative comments.
38. python/plugins/phidata/setup.py:10
- Draft comment:
PhiData plugin setup updated to version 0.7.1; note that this package is deprecated. Ensure that documentation clearly instructs users to migrate to composio_agno. - Reason this comment was not posted:
Marked as duplicate.
39. python/plugins/praisonai/setup.py:10
- Draft comment:
PraisonAI plugin setup updated to version 0.7.1; dependency on PraisonAI version is specified. Check that string formatting in descriptions is correct. - Reason this comment was not posted:
Marked as duplicate.
40. python/plugins/pydanticai/setup.py:10
- Draft comment:
Pydantic AI plugin setup updated to version 0.7.1; ensure that dependency on pydantic-ai is correct and that version constraints align with composio_core. - Reason this comment was not posted:
Marked as duplicate.
41. python/setup.py:90
- Draft comment:
Core package setup updated consistently to version 0.7.1. Confirm that scan_for_package_data properly finds required package files and that extras (all, tools, e2b, etc.) are correctly defined. - Reason this comment was not posted:
Marked as duplicate.
42. python/swe/setup.py:36
- Draft comment:
SWE kit setup updated to version 0.4.1. Verify that entry point is defined correctly and all extra dependencies (for langgraph integration) are fully tested. - Reason this comment was not posted:
Marked as duplicate.
43. python/composio/tools/toolset.py:1295
- Draft comment:
In the initiate_connection method, the code checks the auth_scheme by calling _validate_no_auth_scheme and then immediately raises an error if auth_scheme isn’t in AUTH_SCHEME_WITH_INITIATE. Consider refactoring this to streamline error handling and avoid redundant checks. - Reason this comment was not posted:
Comment was not on a location in the diff, so it can't be submitted as a review comment.
44. python/dockerfiles/Dockerfile:19
- Draft comment:
The RUN command uses 'export PATH=$PATH:$(pwd)/.composio/venv/bin', which only affects the current layer. Use the ENV instruction to ensure the PATH is updated persistently. - Reason this comment was not posted:
Marked as duplicate.
Workflow ID: wflow_VwwvZpuVn1OVo3zc
You can customize Ellipsis with 👍 / 👎 feedback, review rules, user-specific overrides, quiet
mode, and more.
Fixes ENG-3668 Added python SDK support for create integration and initiate connection V2 logic of Hermes.
Important
Update Python SDK to support v2 logic for creating integrations and initiating connections, deprecating
force_new_integration
.initiate_connection
in__init__.py
to remove integration creation logic and rely onConnectedAccounts
for v2 logic.force_new_integration
parameter ininitiate_connection
and add warning.endpoint_v2
forconnectedAccounts
incollections.py
.Integrations
incollections.py
to use v2 endpoint for creation.endpoints.py
.force_new_integration
argument increate_integration
intoolset.py
.This description was created by
for b61ddb2. It will automatically update as commits are pushed.