Skip to content

feat: autogen CLI + hermes - #1

Merged
Utkarsh Dixit (utkarsh-dixit) merged 1 commit into
masterfrom
ft-autogen-cli
Feb 26, 2024
Merged

feat: autogen CLI + hermes#1
Utkarsh Dixit (utkarsh-dixit) merged 1 commit into
masterfrom
ft-autogen-cli

Conversation

@utkarsh-dixit

Copy link
Copy Markdown
Contributor

No description provided.

@angrybayblade
Viraj (angrybayblade) deleted the ft-autogen-cli branch June 13, 2024 11:30
Utkarsh Dixit (utkarsh-dixit) pushed a commit that referenced this pull request Jun 20, 2024
Utkarsh Dixit (utkarsh-dixit) added a commit that referenced this pull request Jun 20, 2024
feat: add langchain framework
Comment thread autogen_composio/api.py
COMPOSIO_TOKEN = 'ghp_1J2g3h4i5j6k7l8m9n0o33'
BASE_URL = "https://hermes-production-6901.up.railway.app/api"

ACCESS_TOKEN = "COMPOSIO-X3125-ZUA-1"

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Great addition to the codebase!

Aishwarya thakur (aishwarya2005thakur) pushed a commit to aishwarya2005thakur/composio that referenced this pull request Jan 29, 2026
Aishwarya thakur (aishwarya2005thakur) pushed a commit to aishwarya2005thakur/composio that referenced this pull request Jan 29, 2026
Shane Holloman (shaneholloman) pushed a commit to shaneholloman/composio that referenced this pull request May 1, 2026
…nitization

Addresses review on PR ComposioHQ#3302:

P2 ComposioHQ#1 — `CustomTool.__call__` now raises `TypeError` if `user_id` appears in
`**kwargs` rather than silently dropping it. Silent drop expanded the blast
radius (a tenant registered as `user_id="default"` would have absorbed those
calls) and swallowed prompt-injection signals. The trusted entry point is
`CustomTools.execute(slug, request, user_id=...)`.

P2 ComposioHQ#2 — `CustomTools.execute` now sanitizes via an *allowlist* of fields
declared on the tool's Pydantic `request_model` (canonical names + aliases),
not a denylist of just `"user_id"`. Future identity-bearing keys
(`tenant_id`, `org_id`, `connected_account_id`, …) cannot reopen
CWE-639 by being smuggled through `request`.

P3 — also:
- Renamed `CustomTool._invoke` to `invoke_trusted` so the security
  contract is in the name, not just the docstring.
- Tightened `CustomTools.execute` return type from `t.Dict` to `t.Any`
  (the user's tool function can return anything; `_invoke` already had
  `t.Any`).
- Consolidated repeated SEC-365/CWE-639 docstring blocks into a single
  module-level note in `custom_tools.py`.
- Added a load-bearing security-invariant note to
  `custom_tool_execution.py` (the parallel session/tool-router path):
  on that path `user_id` arrives via `SessionContext`, never via
  `arguments`.

Tests:
- New: `test_execute_strips_unexpected_fields_via_allowlist` — pins the
  durable allowlist behaviour against future identity kwargs.
- New: `test_execute_keeps_aliases_declared_on_request_model` — ensures
  Pydantic field aliases are honoured.
- New: `test_invoke_trusted_uses_explicit_user_id_over_smuggled_one` —
  pins the `invoke_trusted` defense-in-depth contract when a
  `user_id` is smuggled inside `request_kwargs`.
- New: `test_tools_execute_e2e_strips_user_id_through_full_stack` — E2E
  through `Tools.execute → _execute_custom_tool → CustomTools.execute`.
- Updated: `test_call_raises_typeerror_when_user_id_smuggled_in_kwargs`
  (previously codified the silent-drop behaviour).
- Refactored shared mock-client/tool wiring into pytest fixtures.

639 → 642 Python tests pass. Lint, format, mypy clean on changed files.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>

Co-authored-by: srujan <srujan@composio.dev>
@Aarz-aaryan

Copy link
Copy Markdown

Composio validation test comment

Kshitij Jhunjhunwala (KJ-11) added a commit that referenced this pull request Aug 11, 2026
## Summary

- publish the first-party `composio` skill from the SDK repository
- route first by product (Composio For You or Composio Platform), then
by the requested job
- preserve progressive disclosure, credential safety, and a strict
evidence boundary
- explain exactly what the CLI, raw MCP, OpenAI/Codex plugin, and Claude
Code plugin make discoverable

## Starting point

This keeps Palash's generic router design and Soumya's canonical-link
and cross-language corrections from temporary-repository PRs
[#1](composio-temp/composio-skill#1)
([Glen](https://app.tryglen.com/composio-temp/composio-skill/pull/1))
and [#2](composio-temp/composio-skill#2)
([Glen](https://app.tryglen.com/composio-temp/composio-skill/pull/2)).
The maintained copy now lives with Composio's SDK, CLI, and docs source
instead of the temporary evaluation repository.

## Installation and discovery

Project-scoped, with agent selection when needed:

```bash
npx skills add ComposioHQ/composio --skill composio
```

Global, non-interactive install for the detected agent:

```bash
npx skills add ComposioHQ/composio --skill composio --global --yes
```

This public skill is installed explicitly. A raw MCP connection exposes
tools but does not install a skill. The CLI-owned `composio-cli` skill
and the OpenAI plugin-owned `composio-runtime` skill remain separate
because they own current CLI operation and hosted-versus-local runtime
routing, respectively. The Claude Code plugin does not bundle another
skill.

## Dashboard handoff

Dashboard Getting Started is one context handled by the generic Platform
route, not the skill's identity. When the developer already has the Step
1 `COMPOSIO_API_KEY`, the skill uses that existing project key, never
creates or replaces it, avoids `composio dev init`, and inspects the
real agent path and user identity before proposing code.

## Forward evaluation

Four blind requests were run through fresh agents:

1. Personal Cursor access to Gmail and Google Calendar passed the For
You/MCP route and avoided Platform credentials.
2. First-time Python setup initially overexposed advanced options; after
progressive-disclosure rules, the replay stayed on the minimum
SDK/session/auth path.
3. A GitHub 401 with a working project key remained a narrow
provider-auth debugging task and did not restart onboarding.
4. A TypeScript dashboard handoff initially invented repository facts;
after the evidence boundary, the replay preserved the key and requested
the actual framework and entrypoint.

These are manual routing and response-quality evaluations, not reusable
eval infrastructure. A live provider/OAuth run remains part of the
separate dashboard E2E gate.

## Validation

- skill-creator validator: passed
- canonical repository validator: 18 skills passed before this
documentation-only follow-up
- routing smoke test: 18/18 probes passed
- isolated local `skills add --copy`: passed
- current head CI: pending after the discovery clarification
- no SDK package, backend, CLI, database, or release-metadata changes
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants