// This file is auto-generated by @hey-api/openapi-ts

import type { Options as ClientOptions, TDataShape, Client } from './client';
import type { ListOwnerInboxItemsData, ListOwnerInboxItemsResponses, ListOwnerInboxItemsErrors, GetOwnerInboxItemData, GetOwnerInboxItemResponses, GetOwnerInboxItemErrors, RespondOwnerInboxItemData, RespondOwnerInboxItemResponses, RespondOwnerInboxItemErrors, ListAgentSessionsData, ListAgentSessionsResponses, ListAgentSessionsErrors, ListAgentRunSummariesData, ListAgentRunSummariesResponses, ListAgentRunSummariesErrors, GetAgentRunRuntimeStatusData, GetAgentRunRuntimeStatusResponses, GetAgentRunRuntimeStatusErrors, ListAgentRunActivitiesData, ListAgentRunActivitiesResponses, ListAgentRunActivitiesErrors, GetGovernanceSummaryData, GetGovernanceSummaryResponses, GetGovernanceSummaryErrors, GetSelfDeploySummaryData, GetSelfDeploySummaryResponses, GetSelfDeploySummaryErrors, SubmitSelfDeployGateDecisionData, SubmitSelfDeployGateDecisionResponses, SubmitSelfDeployGateDecisionErrors } from './types.gen';
import { client as _heyApiClient } from './client.gen';

export type Options<TData extends TDataShape = TDataShape, ThrowOnError extends boolean = boolean> = ClientOptions<TData, ThrowOnError> & {
    /**
     * You can provide a client instance returned by `createClient()` instead of
     * individual options. This might be also useful if you want to implement a
     * custom client.
     */
    client?: Client;
    /**
     * You can pass arbitrary values through the `meta` object. This can be
     * used to access values that aren't defined as part of the SDK function.
     */
    meta?: Record<string, unknown>;
};

/**
 * Получить список входящих решений владельца.
 * Возвращает безопасные карточки feedback, approval и Human gate request из interaction-hub.
 * Gateway не читает БД доменного сервиса и не хранит собственную модель решений.
 * Порядок фиксирует interaction-hub: активные и срочные карточки идут раньше, затем updated_at и request_id.
 *
 */
export const listOwnerInboxItems = <ThrowOnError extends boolean = false>(options: Options<ListOwnerInboxItemsData, ThrowOnError>) => {
    return (options.client ?? _heyApiClient).get<ListOwnerInboxItemsResponses, ListOwnerInboxItemsErrors, ThrowOnError>({
        querySerializer: {
            array: {
                explode: false,
                style: 'form'
            }
        },
        responseType: 'json',
        url: '/v1/owner-inbox/items',
        ...options
    });
};

/**
 * Получить карточку одного входящего решения.
 * Возвращает безопасные детали request, delivery/callback/response summaries, allowed actions и version.
 * Raw provider payload, callback body, prompt/transcript, secret values и большие логи в ответ не входят.
 *
 */
export const getOwnerInboxItem = <ThrowOnError extends boolean = false>(options: Options<GetOwnerInboxItemData, ThrowOnError>) => {
    return (options.client ?? _heyApiClient).get<GetOwnerInboxItemResponses, GetOwnerInboxItemErrors, ThrowOnError>({
        responseType: 'json',
        url: '/v1/owner-inbox/items/{request_id}',
        ...options
    });
};

/**
 * Записать ответ владельца.
 * Передаёт approve, reject, request_changes, answer, defer, acknowledge или custom в interaction-hub.RecordInteractionResponse.
 * Interaction-hub проверяет allowed actions, expected version, идемпотентность и terminal lifecycle.
 *
 */
export const respondOwnerInboxItem = <ThrowOnError extends boolean = false>(options: Options<RespondOwnerInboxItemData, ThrowOnError>) => {
    return (options.client ?? _heyApiClient).post<RespondOwnerInboxItemResponses, RespondOwnerInboxItemErrors, ThrowOnError>({
        responseType: 'json',
        url: '/v1/owner-inbox/items/{request_id}/response',
        ...options,
        headers: {
            'Content-Type': 'application/json',
            ...options.headers
        }
    });
};

/**
 * Получить список agent sessions.
 * Возвращает безопасные summaries `agent-manager.ListAgentSessions` для командного центра.
 * Gateway только валидирует query, передаёт actor/request context и не читает БД `agent-manager`.
 * В ответ не входят prompt body, transcript, tool input/output, stdout/stderr, provider payload,
 * workspace paths, secret values, kubeconfig или большие логи.
 *
 */
export const listAgentSessions = <ThrowOnError extends boolean = false>(options: Options<ListAgentSessionsData, ThrowOnError>) => {
    return (options.client ?? _heyApiClient).get<ListAgentSessionsResponses, ListAgentSessionsErrors, ThrowOnError>({
        responseType: 'json',
        url: '/v1/agent-sessions',
        ...options
    });
};

/**
 * Получить список agent Run summaries.
 * Возвращает безопасные summaries `agent-manager.ListAgentRunSummaries` для экрана исполнений.
 * Gateway не читает БД `agent-manager`, не ходит в Kubernetes/runtime/provider и не делает fan-out
 * за live runtime status; актуальный статус одного job остаётся в `/v1/agent-runs/{run_id}/runtime-status`.
 * В ответ не входят prompt body, transcript, tool input/output, stdout/stderr, provider payload,
 * workspace paths, secret values, kubeconfig или большие логи.
 *
 */
export const listAgentRunSummaries = <ThrowOnError extends boolean = false>(options: Options<ListAgentRunSummariesData, ThrowOnError>) => {
    return (options.client ?? _heyApiClient).get<ListAgentRunSummariesResponses, ListAgentRunSummariesErrors, ThrowOnError>({
        responseType: 'json',
        url: '/v1/agent-runs',
        ...options
    });
};

/**
 * Получить runtime summary для agent Run.
 * Возвращает безопасную сводку `agent-manager.GetAgentRunRuntimeStatus` для одного Run.
 * Gateway не читает БД `agent-manager`, не ходит в Kubernetes и не возвращает prompt body,
 * kubeconfig, workspace paths, raw provider payload, secret values или большие логи.
 *
 */
export const getAgentRunRuntimeStatus = <ThrowOnError extends boolean = false>(options: Options<GetAgentRunRuntimeStatusData, ThrowOnError>) => {
    return (options.client ?? _heyApiClient).get<GetAgentRunRuntimeStatusResponses, GetAgentRunRuntimeStatusErrors, ThrowOnError>({
        responseType: 'json',
        url: '/v1/agent-runs/{run_id}/runtime-status',
        ...options
    });
};

/**
 * Получить безопасную activity timeline для agent Run.
 * Возвращает безопасные записи `agent-manager.ListAgentActivities` для одного Run.
 * Gateway не читает БД `agent-manager`, не ходит в Kubernetes/runtime/provider и не возвращает raw tool input/output,
 * stdout/stderr, prompt body, transcript, provider payload, workspace paths, secret values или большие логи.
 * Time range в этом endpoint не поддержан, потому что его нет в текущем typed gRPC-контракте.
 *
 */
export const listAgentRunActivities = <ThrowOnError extends boolean = false>(options: Options<ListAgentRunActivitiesData, ThrowOnError>) => {
    return (options.client ?? _heyApiClient).get<ListAgentRunActivitiesResponses, ListAgentRunActivitiesErrors, ThrowOnError>({
        responseType: 'json',
        url: '/v1/agent-runs/{run_id}/activities',
        ...options
    });
};

/**
 * Получить безопасную сводку governance decisions.
 * Возвращает подготовленную `governance-manager.GetGovernanceSummary` сводку для одного selector.
 * Gateway только валидирует HTTP-параметры, передаёт actor/request context и маппит safe DTO.
 * Доменная логика risk/gate/release decisions остаётся в `governance-manager`.
 *
 */
export const getGovernanceSummary = <ThrowOnError extends boolean = false>(options: Options<GetGovernanceSummaryData, ThrowOnError>) => {
    return (options.client ?? _heyApiClient).get<GetGovernanceSummaryResponses, GetGovernanceSummaryErrors, ThrowOnError>({
        responseType: 'json',
        url: '/v1/governance/summary',
        ...options
    });
};

/**
 * Получить безопасную self-deploy сводку.
 * Возвращает latest visible self-deploy summary для командного центра. Gateway сначала читает
 * `agent-manager.ListSelfDeployPlans`; если plan ещё не создан, но caller передал safe project и
 * provider signal refs, gateway уточняет project-side readiness через `project-catalog.GetSelfDeploySignal`.
 * Gateway не читает БД доменных сервисов, не запускает deploy, не принимает governance decision и не
 * возвращает raw webhook body, provider response, diff, полный YAML, token, OAuth state/cookies,
 * secret values или большие логи. Если доменные данные ещё не появились, ответ остаётся успешным, но
 * содержит `unavailable`/`pending` статусы и явный `chain_status` без фиктивных данных.
 *
 */
export const getSelfDeploySummary = <ThrowOnError extends boolean = false>(options: Options<GetSelfDeploySummaryData, ThrowOnError>) => {
    return (options.client ?? _heyApiClient).get<GetSelfDeploySummaryResponses, GetSelfDeploySummaryErrors, ThrowOnError>({
        responseType: 'json',
        url: '/v1/self-deploy/summary',
        ...options
    });
};

/**
 * Записать решение владельца по self-deploy gate.
 * Передаёт approve, reject или request_changes в `governance-manager.SubmitGateDecision`.
 * Gateway не запускает build/deploy, не читает БД доменных сервисов и не принимает решение
 * вместо владельца. В запросе и ответе допустимы только safe refs, bounded comment,
 * idempotency key и expected version/status.
 *
 */
export const submitSelfDeployGateDecision = <ThrowOnError extends boolean = false>(options: Options<SubmitSelfDeployGateDecisionData, ThrowOnError>) => {
    return (options.client ?? _heyApiClient).post<SubmitSelfDeployGateDecisionResponses, SubmitSelfDeployGateDecisionErrors, ThrowOnError>({
        responseType: 'json',
        url: '/v1/self-deploy/gates/{gate_request_id}/decision',
        ...options,
        headers: {
            'Content-Type': 'application/json',
            ...options.headers
        }
    });
};