Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/workflows/validate.yml
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ jobs:
with:
python-version: ${{ matrix.python-version }}
- name: Compile Python adapters
run: python -m compileall -q plugins/botnest/scripts adapters/alice scripts
run: python -m compileall -q plugins/botnest/scripts scripts
- name: Check generated platform packages
run: python scripts/generate_platforms.py --check
- name: Validate package and behavior
Expand Down
23 changes: 3 additions & 20 deletions ARCHITECTURE.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
Keep every client integration in this repository and keep the BotNest backend
in its existing service repository.

Splitting ChatGPT, Codex, Claude, Grok, and Alice into separate repositories
Splitting ChatGPT, Codex, Claude, and Grok into separate repositories
would duplicate manifests, release versions, brand assets, safety rules, and
the agent workflow. Moving the backend into this repository would couple
distribution packages to secrets, database migrations, and service deployment.
Expand All @@ -28,8 +28,6 @@ remote MCP local bridge remote MCP package
https://botnest.app/mcp
|
BotNest backend

Alice webhook ------+
```

The shared layer contains product metadata, natural-language workflow rules,
Expand Down Expand Up @@ -58,29 +56,14 @@ copy of the shared skill/assets and a remote HTTP MCP definition. Grok consumes
the same package through Claude Code compatibility; a separate Grok fork would
have no platform-specific behavior today.

### Alice

Alice cannot host an agent skill or MCP client. Its adapter is a deterministic
webhook that maps supported Russian utterances to the same MCP tools.
Publication requires a second explicit confirmation. Complex flow updates stay
in agent hosts because a server-side generation call cannot reliably fit
Alice's webhook deadline.

Alice account linking is a confidential OAuth authorization-code client with
the fixed Yandex redirect URI. The current generic MCP OAuth implementation is
a public PKCE client and the Codex bridge is a device client, so the BotNest
backend must expose the dedicated `/oauth/alice/*` compatibility endpoints
before publication. This is intentionally a backend concern, not duplicated in
the webhook package.

## Ownership and generation rules

- Edit version, URLs, listing metadata, or common platform settings only in
`botnest.plugin.json`.
- Edit agent behavior only in
`plugins/botnest/skills/create-telegram-bot/SKILL.md`.
- Do not manually edit files under `platforms/claude-grok/botnest`, generated
manifests, `runtime.json`, or `adapters/alice/publication.json`.
manifests, or `runtime.json`.
- Platform policy/review forms and executable adapters remain hand-maintained
because they contain genuinely platform-specific logic.
- Run `python3 scripts/generate_platforms.py --check` in CI before tests and
Expand All @@ -91,4 +74,4 @@ the webhook package.
Add a thin adapter only after identifying the platform's transport,
authorization, manifest/catalog format, confirmation semantics, and response
deadline. Reuse the remote MCP whenever the platform supports it. Do not fork
the shared skill unless the host cannot run agent instructions, as with Alice.
the shared skill unless the host cannot run agent instructions.
24 changes: 5 additions & 19 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
<h1 align="center">botnest integrations</h1>

<p align="center">
One product source for ChatGPT, Codex, Claude, Grok, and Yandex Alice.
One product source for ChatGPT, Codex, Claude, and Grok.
</p>

This repository is the distribution monorepo for **botnest**. Product metadata,
Expand All @@ -27,7 +27,6 @@ owns user data, OAuth grants, Telegram credentials, and the production MCP at
| Codex | OpenAI plugin marketplace package | Local stdio bridge + Telegram device authorization |
| Claude | Claude plugin marketplace package | Direct remote MCP + native OAuth |
| Grok | The same Claude-compatible package | Direct remote MCP + native OAuth |
| Yandex Alice | Public Alice catalog skill | HTTPS webhook + Alice account linking |

OpenAI intentionally has two adapters. ChatGPT uses the remote MCP/OAuth path,
while the installable Codex plugin keeps the local bridge path. They share the
Expand All @@ -41,14 +40,13 @@ same BotNest tools and workflow rather than maintaining separate product logic.
workflow used by ChatGPT, Codex, Claude, and Grok.
- `plugins/botnest/assets/` contains the shared brand assets.
- `plugins/botnest/scripts/botnest_mcp_proxy.py` is Codex-specific transport.
- `adapters/alice/handler.py` is Alice-specific conversation and webhook logic.
- `chatgpt-app-submission.json` contains OpenAI-specific review cases and tool
policy justifications.

`scripts/generate_platforms.py` renders the Codex manifest and marketplace, the
ChatGPT remote-connector descriptor, the Claude/Grok package and marketplace,
the runtime configuration, and the Alice publication settings. Generated drift
is a CI error, so generated platform copies cannot silently diverge.
and the runtime configuration. Generated drift is a CI error, so generated
platform copies cannot silently diverge.

See [ARCHITECTURE.md](ARCHITECTURE.md) for boundaries and release rules.

Expand Down Expand Up @@ -93,14 +91,6 @@ Add this GitHub repository as a marketplace in Grok's extensions UI and install
**botnest**. Grok reads the Claude marketplace, plugin, skill, and MCP format,
so no Grok-specific copy is maintained.

### Yandex Alice

Deploy `adapters/alice/handler.py` as the HTTPS webhook and configure the Dialog
from `adapters/alice/publication.json`. Before catalog submission, the BotNest
backend must expose the confidential Alice OAuth endpoints described in the
adapter README. The existing public MCP PKCE client and Codex device client are
not interchangeable with Alice account linking.

## Change once, release everywhere

1. Edit `botnest.plugin.json`, the shared skill/assets, or a genuinely
Expand All @@ -114,24 +104,20 @@ python3 scripts/generate_platforms.py --check
python3 -m unittest discover -s tests -v
python3 scripts/build_package.py
python3 scripts/check_production.py
# After the Alice OAuth backend is deployed:
python3 scripts/check_production.py --include-alice
```

The package command creates:

- `dist/botnest-codex-<version>.zip`
- `dist/botnest-claude-grok-<version>.zip`
- `dist/botnest-alice-<version>.zip`
- `dist/create-telegram-bot-skill.zip`

## Security and privacy

The Codex bridge stores OAuth credentials inside the plugin's private data
directory with restrictive permissions. Remote-MCP platforms keep OAuth in
their native connector flow. The Alice adapter receives a short-lived BotNest
access token through Yandex account linking and never stores it. No adapter asks
users to paste Telegram bot tokens or LLM API keys into a conversation.
their native connector flow. No adapter asks users to paste Telegram bot tokens
or LLM API keys into a conversation.

- Privacy: <https://botnest.app/legal/privacy/>
- Terms: <https://botnest.app/legal/offer/>
Expand Down
21 changes: 0 additions & 21 deletions adapters/alice/Dockerfile

This file was deleted.

202 changes: 0 additions & 202 deletions adapters/alice/LICENSE

This file was deleted.

Loading