Files
odysseus/integrations/codex/.codex-plugin/plugin.json

23 lines
764 B
JSON
Raw Normal View History

Codex Agent integration: HTTP surface + plugin bundle + Settings UI This persists work that had been living only in the cookbook docker container's writable layer — never committed to the host source. Brought back to git intact, app.py registration re-applied surgically on top of current main (not the older container copy, which would have regressed the Windows MIME fix, asynccontextmanager lifespan, and webhook auth exempts). routes/codex_routes.py (new): - GET /api/codex/capabilities — what this Odysseus exposes. - GET /api/codex/plugin.zip — downloads integrations/codex as a zip. - GET /api/codex/todos — scope-gated todos:read|write. - POST /api/codex/todos — scope-gated todos:write. - GET /api/codex/emails — scope-gated email:read|draft|send. - GET /api/codex/emails/{uid} — single-message fetch. - _scope_owner() enforces api_token scopes before touching user data. routes/api_token_routes.py (+103 lines): - Adds Codex-token-specific issuance + revocation paths. integrations/codex/ (new bundle, shipped via /api/codex/plugin.zip): - README.md — install instructions. - .codex-plugin/plugin.json — Codex plugin manifest. - scripts/odysseus_api.py — Python client used by the skill. - skills/odysseus/SKILL.md — Codex skill definition. static/js/settings.js (+253 lines): - New "Codex Agent" option in the Integrations dropdown. - Add / edit panel with plugin-bundle download link + curl-with-token install instructions per agent. app.py: - 7-line surgical change: capture email_router = setup_email_routes() and register setup_codex_routes(email_router=email_router) after the email module so the Codex routes can borrow its helpers.
2026-06-03 22:38:05 +09:00
{
"name": "odysseus",
"version": "0.1.1",
"description": "Connect Codex to a scoped Odysseus instance.",
"author": {
"name": "Odysseus"
},
"skills": "./skills/",
"interface": {
"displayName": "Odysseus",
"shortDescription": "Use scoped Odysseus tools from Codex.",
"longDescription": "Connects Codex terminal sessions to Odysseus through user-controlled scoped API tokens. Codex must use /api/codex/* endpoints so Odysseus Settings can enforce tool access.",
"developerName": "Odysseus",
"category": "Productivity",
"capabilities": [
"todos",
"email",
"scoped-api"
],
"defaultPrompt": "Use Odysseus only through configured scoped access. Check capabilities before reading or writing data."
}
}