/**
 * @file userserver_client.h
 * @brief UserServer HTTP 客户端（连接方式一，推荐生产环境）
 *
 * 设备先调用客户自建 UserServer 创建互动实例，拿到 instance_id 与 token，
 * 再以 (a=APPID&id=ID&t=TOKEN&ac=...) 形式连接 WS。AK/SK 不出 UserServer。
 */

#ifndef CORE_USERSERVER_CLIENT_H
#define CORE_USERSERVER_CLIENT_H

#include <stddef.h>

#ifdef __cplusplus
extern "C" {
#endif

#define USERSERVER_INSTANCE_ID_LEN  32
#define USERSERVER_TOKEN_LEN        256

/** UserServer 互动实例信息 */
typedef struct {
    char instance_id[USERSERVER_INSTANCE_ID_LEN]; /* ai_agent_instance_id */
    char token[USERSERVER_TOKEN_LEN];             /* context.token */
} userserver_session_t;

/**
 * @brief 调用 UserServer 创建大模型互动实例
 * @param base_url UserServer 基址（例 "http://1.2.3.4:8936"）
 * @param path     create 接口路径
 * @param app_id   应用 ID
 * @param config   cfg JSON 字符串（已序列化）
 * @param out      输出 instance_id + token
 * @return 0 成功，负值失败
 */
int userserver_create_instance(const char *base_url, const char *path,
                               const char *app_id, const char *config,
                               userserver_session_t *out);

/**
 * @brief 销毁互动实例（与 create 配对）
 * @return 0 成功，负值失败（失败仅记录日志，不阻塞断连）
 */
int userserver_destroy_instance(const char *base_url, const char *path,
                                const char *app_id, const char *instance_id);

#ifdef __cplusplus
}
#endif

#endif /* CORE_USERSERVER_CLIENT_H */
