Konektory w chmurze

connector-cloud to wtyczka architektury OHarness, a nie MCP. Cloud jest właścicielem klucza projektu Composio i zatwierdzonej konfiguracji aplikacji i narzędzi. Klienci używają swojego logowania do OHarness; poświadczenia OAuth Gmaila zostają w Composio, przypisane do identyfikatora użytkownika OHarness zweryfikowanego przez serwer. Nie są potrzebne żadne nowe tabele Supabase.

Konfiguracja

  • Sekret środowiska uruchomieniowego strony Cloud: COMPOSIO_API_KEY. Nigdy NEXT_PUBLIC_ i nigdy w config.json, plugins.json użytkownika, w paczce przeglądarkowej ani w kontekście modelu.
  • Włączone aplikacje wynikają z Auth Configs w projekcie Composio, a nie z pliku. Auth Config z ograniczeniem narzędzi to włączona aplikacja, a to ograniczenie jest jej listą dozwolonych narzędzi, więc nowa integracja to akcja w panelu, a nie wdrożenie. Wyznaczanie zbioru raczej odmawia, niż zakłada: konfiguracja, która nie ogranicza żadnych narzędzi, jest pomijana (Composio traktuje brak ograniczenia jako każde narzędzie z zestawu), dwie włączone konfiguracje dla jednego zestawu narzędzi nie włączają żadnej, a wyłączone konfiguracje, nieużywalne identyfikatory lub błędne nazwy narzędzi wykluczają daną aplikację. Limity 20 aplikacji i 40 narzędzi się nie zmieniają. Zbiór jest wyznaczany raz na proces, więc po zmianie w panelu zrestartuj Cloud.
  • website/connectors.json w Cloud jest teraz opcjonalny i może tylko zawężać: {"disabled": ["slug"]} wstrzymuje aplikację bez ruszania Composio. Plik, który nadal zawiera toolkits, zachowuje starsze, jawne zachowanie. Wdrożenie może zamiast tego wskazać w OHARNESS_CONNECTORS_FILE bezwzględną, zamontowaną ścieżkę. Plik jest celowo w gitignore, więc dołączaj go lub montuj tylko wtedy, gdy go używasz.
  • Istniejące środowisko Supabase strony weryfikuje tokeny logowania OHarness.
  • Klient cloud.json: opcjonalne { "siteUrl": "http://localhost:4000" } do lokalnego rozwoju; domyślnie publiczny adres Cloud. Zmiana originu Cloud może wymagać ponownego zalogowania. Alternatywnym nadpisaniem jest OHARNESS_SITE_URL.
  • Klient plugins.json: domyślna wtyczka nie wymaga wpisu. Aby ją wyłączyć: { "runtimePlugins": [{ "id": "connector-cloud", "enabled": false }] }.

Utwórz Auth Config OAuth dla Gmaila w panelu Composio, w tym samym projekcie co klucz API. Przejrzyj jego zakresy i do zadań odczytu używaj dostępu do Gmaila tylko do odczytu; lista dozwolonych wywołań nie zastępuje minimalnych zakresów OAuth. Przykładowa konfiguracja zawiera symbole zastępcze, a nie działające poświadczenia.

Gdy używasz OHarness_Cloud/dev.sh, ustaw zmienne Cloud w procesie website (Next wczytuje website/.env.development.local). Harness nie potrzebuje klucza Composio. Przed uruchomieniem wskaż mu lokalną stronę, na przykład OHARNESS_SITE_URL=http://localhost:4000 ./dev.sh up harness. up nie restartuje działających procesów; po zapisaniu pracy użyj restart website harness. Edycja Cloud na localhost nie wdraża API na stronę publiczną.

Przebieg rozmowy

  1. Agent wywołuje cloud_app_tools, aby wylistować aplikacje lub poznać dokładne schematy i wersję narzędzi aplikacji. Jest dostępne, zanim jeszcze połączysz konto aplikacji.
  2. Najpierw działa zwykła polityka uprawnień OHarness. Jeśli wywołanie zostanie zatwierdzone, a konto nie jest powiązane, bieżące narzędzie czeka, a czat Web wyświetla Connect / Cancel.
  3. Dopiero kliknięcie Connect przez użytkownika powoduje żądanie hostowanego linku Composio. Cloud ustawia user_id na podstawie zweryfikowanego logowania, nigdy na podstawie danych od modelu.
  4. Interfejs otwiera stronę autoryzacji. Lokalny broker odpytuje Cloud; Cloud sprawdza w Composio właściciela konta, Auth Config, zestaw narzędzi oraz stan aktywny i niewyłączony.
  5. Zweryfikowany sukces kończy oczekiwanie narzędzia w tej samej turze agenta. Poznaje ono schemat, a następnie wywołuje cloud_app_execute przez zwykłą bramkę uprawnień. Nie powstaje ani zdublowane pytanie do użytkownika, ani nowe autonomiczne zadanie.

Darmowe konto może połączyć i używać dwóch aplikacji; każdy płatny plan — także Plus, osobisty lub zespołowy, odczytywany z claimu ent tokenu sesji — nie ma limitu. Przydział przypada aplikacjom połączonym jako pierwsze: podłączenie trzeciej albo uruchomienie narzędzia aplikacji spoza pierwszych dwóch (na przykład po wygaśnięciu planu) jest odrzucane z 402 plan_required, co harness zamienia w komunikat wskazujący stronę cennika. Listowanie aplikacji i sprawdzanie połączenia nigdy nie są ograniczone. Strona ustala tę liczbę przez OHARNESS_FREE_CONNECTOR_APPS; strona hostowana samodzielnie ustawia OHARNESS_CONNECTORS_FREE=1, aby znieść limit dla każdego zalogowanego konta.

Jeśli wcześniej połączone konto zostanie odwołane, wykonanie zwraca jawną odmowę connection_required jeszcze przed wykonaniem, co uruchamia ten sam przebieg. Przekroczenia czasu, błędy dostawcy lub niepewne niepowodzenia wykonania nigdy nie są automatycznie powtarzane. Odświeżenie strony Web odtwarza stan oczekujących kart, dopóki proces działa.

Bezpieczeństwo i granice V1

  • Tylko cztery endpointy POST natywnego klienta: catalog, status, link i execute. Linki autoryzacyjne zostają w odpowiedziach interfejsu, poza wyjściem modelu i zapisem transkrypcji.
  • Oczekujące interakcje są przypięte do zweryfikowanego użytkownika i originu Cloud. Zmiana logowania nie pozwala wznowić zadania autoryzacji starego użytkownika na innym koncie.
  • Metadane i wykonanie używają tej samej konkretnej wersji narzędzia. Jeśli latest po restarcie serwera wskazuje inną wersję, poznaj schemat ponownie, zamiast wykonywać nieaktualny. Do powtarzalnych wdrożeń używaj wersji z datą.
  • Anulowanie, przerwanie pracy agenta, dziesięciominutowy limit czasu i zamknięcie procesu zatrzymują oczekujące wywołanie. Anulowane zadanie nie cofa zgody OAuth udzielonej niezależnie.
  • Brak kontynuacji po restarcie procesu i brak odtwarzania zadań w tle. Po restarcie rozpocznij nową turę; już ukończone powiązanie Composio nadal będzie można odnaleźć.
  • V1 zakłada jedno aktywne konto na aplikację, Auth Config i użytkownika. Wiele aktywnych kont kończy się odmową (fail-closed) do czasu wyboru przez administratora. Brak kont współdzielonych i interfejsu ACL.
  • Karty są obecnie renderowane w czacie Web (łącznie z powierzchnią Web w aplikacji desktopowej), a nie w interfejsach terminalowych ani headless. Te nie mają interfejsu kart; do pierwszego powiązania użyj Web albo wyłącz tę wtyczkę na potrzeby uruchomień bez nadzoru lub w trybie headless.
  • Każdy proces ma podstawowe ograniczanie liczby zapytań. Produkcja musi dodać współdzielone limity na brzegu, politykę audytu i retencji oraz skonfigurować Auth Configs OAuth z odpowiednio zawężonymi zakresami.

Weryfikacja

npm run test:cloud-connectors obejmuje anulowanie w brokerze, współbieżność, przekroczenie czasu, odmowę uprawnień i prawdziwego agenta kontynuującego pracę po zasymulowanej autoryzacji. npm run test:composio w Cloud obejmuje własność, listę dozwolonych, wersję, odwołanie i brak ponawiania. node --conditions=oharness-source script/cloud-connector-ui-demo.ts uruchamia odizolowane demo Web offline; nigdy nie łączy się z prawdziwym Gmailem. Prawdziwy OAuth nadal wymaga zgody użytkownika w przeglądarce.