from src.domain.connectors.catalog._base import (
    ConnectorActionDef,
    ConnectorChangelogEntry,
    ConnectorDef,
    ConnectorFieldDef,
)


CONNECTOR = ConnectorDef(
    key="openai",
    name="OpenAI",
    category="ai",
    auth_type="api_key",
    version="01.00.00",
    icon="openai",
    image_url=None,  # set to your CDN URL
    description="Bring-your-own-key AI chat completions. The app owner's own OpenAI API key is used — never P2HS's own managed AI credits/wallet — so usage bills directly to their account.",
    docs_url="https://platform.openai.com/docs/api-reference/chat",
    config_fields=("organization",),
    secret_fields=("api_key",),
    config_field_defs=(
        ConnectorFieldDef(
            key="organization",
            label="Organization ID (optional)",
            description="OpenAI organization ID, if the account belongs to more than one.",
            placeholder="org-...",
        ),
    ),
    secret_field_defs=(
        ConnectorFieldDef(
            key="api_key",
            label="API key",
            description="OpenAI API key with access to the Chat Completions API.",
            placeholder="sk-...",
            required=True,
            input_type="password",
        ),
    ),
    actions=(
        ConnectorActionDef(
            key="chat_complete",
            slug="openai.chat_complete",
            name="Chat completion",
            description="Generate a chat completion from a message list using the owner's own OpenAI account.",
            input_schema={
                "type": "object",
                "properties": {
                    "messages": {"type": "array"},
                    "model": {"type": "string"},
                    "temperature": {"type": "number"},
                    "max_tokens": {"type": "number"},
                },
                "required": ["messages"],
                "additionalProperties": False,
            },
            required_capabilities=("integrations.execute",),
        ),
    ),
    changelog=(
        ConnectorChangelogEntry(
            version="01.00.00",
            date="2026-09-08",
            notes="Initial release. Actions: chat_complete.",
        ),
    ),
)
