@agg-build/sdk

中文文档
4.37.0发布于 2026/11/06MITTypeScriptESM + CJS近 30 天下载 5933

用于AGG预测市场聚合器的香草TypeScript客户端(自动,市场,订单簿,图表,交易,管理下执行,WebSockets). 工作于浏览器,Node.js,以及React Industrial.

中文使用文档
文档目录21 节
  1. 这是什么
  2. 何时使用此软件包
  3. 安装
  4. 快开始
  5. 认证一个用户( SIWE)
  6. Http 纯饼干- 新鲜模式
  7. 流取数据( WebSocket)
  8. 服务器侧助手
  9. 客户选项
  10. 主要出口
  11. AggClient 方法
  12. 独立公用事业
  13. 处理错误
  14. @agg-build/sdk/server
  15. WebSocket 回调
  16. 自动附加信头
  17. 入境点
  18. 同伴依赖关系
  19. 链接
  20. 许可证
  21. 地点活动读取录取

@ agg- building/ sdk

Vanilla 类型脚本客户端 恶作剧 预测市场聚合物—— 一个客户端,每个表面(自动,市场,订单,图表,交易,管理下的执行, 腾讯网.

这是什么

@agg-build/sdk 是安装最低级别的软件包伙伴。 它通过HTTPS和AGG API说话 WebSockets, 管理认证/ 会话状态, 并曝光每个产品端点的打入包装 (市场、订货簿、图表、贸易执行、存款/提款、管理下的钱包、 ,(增加). 它没有框架依赖性,在浏览器,Node.js和React Introduct中工作.

反应应用程序, 层 @agg-build/hooks, (中文(简体) ), @agg-build/ui,以及 @agg-build/auth 在顶端,他们都使用这个客户端 在引擎盖下.

何时使用此软件包

  • 您正在构建一个 vanilla TS/JS app, React Industrial app, 或服务器侧整合 .
  • 您要为 AGG REST API 和 WebSocket 网关输入一个已输入的、包含电池的客户端 .
  • 您正在自编自导出反应层, 并需要基本的 认证/ 部分/ 交易原始 .
  • 您需要只使用服务器的助手: SSR 配置取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取, 或管理员 API 客户端(参见 @agg-build/sdk/server) (中文(简体) ).

如果您正在运送一个 React app 并且想要现成的钩子或 UI, 请安装 @agg-build/hooks, (中文(简体) ), @agg-build/ui,以及 @agg-build/auth 相反,这些软件包是建立在 @agg-build/sdk。 。 。 .

安装

npm install @agg-build/sdk

快开始

import { createAggClient } from "@agg-build/sdk";

const client = createAggClient({
  baseUrl: "https://api.agg.market",
  appId: "your-app-id",
});

// Health check
const hello = await client.getHello();

// Current auth state (persisted across reloads via localStorage)
console.log(client.isAuthenticated, client.user);

认证一个用户( SIWE)

// 1. Start the auth flow
const { nonce } = await client.authStart({ provider: "siwe" });

// 2. Build the EIP-4361 message
const message = client.buildSiweMessage({
  address: "0x…",
  chainId: 1,
  nonce,
  domain: window.location.host,
  uri: window.location.origin,
});

// 3. Sign with the user's wallet (wagmi, viem, ethers, …)
const signature = await wallet.signMessage(message);

// 4. Verify → stores accessToken + user in the client
const { accessToken, user } = await client.verify({ message, signature });

SIWS (索拉纳语) 使用相同的流量 buildSiwsMessage 以及一个基数58编码的Ed25519签名.

重定向流(Google,苹果,Twitter,电子邮件magic-link)返回一个URL来导航:

const response = await client.authStart({
  provider: "google",
  redirectUrl: "https://yourapp.com/auth/callback",
});

if (response.type === "redirect") {
  window.location.assign(response.url);
}

// …back on the callback page:
const code = new URLSearchParams(window.location.search).get("code");
if (code) {
  await client.exchangeAuthCode(code);
  window.history.replaceState(null, "", window.location.pathname);
}

对于选择一个的浏览器应用程序 HttpOnly 刷新饼干 存储刷新标志 在JS, 用 authDelivery: "cookie-refresh"数字 :

const client = createAggClient({
  baseUrl: "https://api.agg.market",
  appId: "your-app-id",
  authDelivery: "cookie-refresh",
});

在这个模式下, verify() 财务报告和审定财务报表 exchangeAuthCode() 可省略 refreshToken 从返回 对象。 刷新饼干仍保留在 AGG API 主机下 /auth 从未接触过 伙伴前端域.

流取数据( WebSocket)

const ws = client.createWebSocket({
  onSnapshot: (outcomeId, book) => console.log("snapshot", outcomeId, book),
  onDelta: (outcomeId, book) => console.log("delta", outcomeId, book),
  onTrade: (trade) => console.log("trade", trade.venue, trade.price, trade.size),
});

// Orderbooks are keyed by venueMarketOutcomeId (the `outcomes[].id` on REST).
const unsubscribe = ws.subscribe("venue-market-outcome-id");

// Optional: authenticate for user-scoped events (orders, balances)
ws.authenticate(accessToken);

// Cleanup
unsubscribe();
ws.destroy();

createWebSocket 需求 wsUrl 改为: createAggClient基础 AggWebSocket 如果想要更好的控制,也可以直接被即时处理.

服务器侧助手

从 /server 仅限节点公用事业的入口:

import { AggAdminClient, signExternalId, verifyWebhook } from "@agg-build/sdk/server";

// Sign a partner external-ID assertion before sending to the browser
const assertion = signExternalId(process.env.AGG_APP_SECRET!, partnerUser.id);

// Verify an inbound webhook
verifyWebhook(rawBody, req.headers, process.env.AGG_WEBHOOK_SECRET!);

// Admin API client (uses x-app-api-key)
const admin = new AggAdminClient({
  baseUrl: "https://api.agg.market",
  apiKey: process.env.AGG_APP_API_KEY!,
});
const users = await admin.listUsers("your-app-id", { limit: 50 });

客户选项

选项类型需求说明
baseUrlstring对API 基础 URL( 如. https://api.agg.market(中文(简体) )
appIdstring应用/adminKey软件之一合作伙伴应用程序标识
adminKeystring应用/adminKey软件之一管理层路由的管理员 API 密钥
wsUrlstring用于 WebSocketWebSocket网关 URL( 需要由 createWebSocket(中文(简体) )
orderbookUrlstring没有订购簿频道的第二个套接字 。 取消设置时保留命令簿 wsUrl。设定时,只使用订购簿的订阅 wsUrl 闲置
orderbookLatency"conflated" | "realtime"没有秩序书分层. 默认 conflated 省略 latency· ; realtime 送来
authDelivery"body" | "cookie-refresh"没有脚本传送模式( 默认 ): "body"(中文(简体) )
persistSessionboolean没有本地Storage 的 persist 认证提示( 默认 ): true(中文(简体) )
kalshiDemoboolean没有折旧相容性选项; 忽略

打电话 client.destroy() 当你不再需要客户端释放内部资源时 (BroadcastChannel用于跨tab auth同步).

主要出口

AggClient 方法

认证会话( S)

方法说明
authStart(body)启动任何认证流( SIWE nonce、 OAuth 重定向等)
buildSiweMessage(params)构建 EIP-4361 信件字符串
buildSiwsMessage(params)构建索拉纳签名消息
verify({ message, signature })验证 SIWE/ SIWS 签名, 存储符牌
exchangeAuthCode(code)交换令牌的重定向认证代码
refreshAccessToken()使用存储的刷新符牌刷新 JWT
setSession({ accessToken, refreshToken?, user? })从重定向调回的种子符号
setAccessToken(token) 编号 : clearAccessToken()直接管理 JWT
signOut()撤销令牌服务器侧并清除本地会话
onAuthStateChange(listener)订阅认证状态更改
isAuthenticated 编号 : user 编号 : authStatus当前会话状态的获取器

用户配置文件账户( A)

方法说明
getCurrentUser()从中获取当前用户配置 /users/me
updateUser(data)更新用户名, 外观等 .
createAvatarUploadUrl(contentType)获得预先签名的外观上传 URL
linkExternalId({ externalId, timestamp, hmac })链接后端签名的伙伴用户ID
disconnectAccount(provider)删除链接的认证提供者

市场数据

方法说明
getVenueEvents(options?)列表预测市场事件( cursor pagination)
getVenueEventById(id)通过 ID 获取单个事件
getVenueMarkets(options?)列表带有过滤器的会场市场( cursor pagination)
getCategories(options?)清单市场类别

相关市场

方法说明
resolveCorrelatedMarkets(params)解决市场和回报扩大/尖端思想
getCorrelatedMarketCascade(params)获取已知会场的扩展/尖端想法
getMarketCorrelatedSignals(id)检查产生市场信号
queryCorrelatedMarkets(params)通过信号相似性搜索市场

订单和路由

方法说明
getOrderbooks(params)获得给定的每个月的现场订单 venueMarketIds
getSmartRoute(params)MILP 解析器,用于在不同地点之间优化顺序

图表数据

方法说明
getChartBars(params)贸易View风格的OHLCV蜡烛
getPricesHistory(params)地点市场结果的价格历史
getOrderbookHistory(params)结果的顺序书深度历史

贸易

方法说明
validateTrade(body)飞行前贸易验证
executeTrade(body)通过后端执行所支持的预测-市场订单
computeSplits(body)通过 API 计算不同地点的最佳订单

地点键

方法说明
listVenueKeys(venues?)列出存储地点 API 密钥( 未返回秘密)
upsertVenueKey(body)创建或更新会场 API 密钥
deleteVenueKey(venue)删除会场 API 密钥

管理执行和结余

方法说明
validateManaged(params)平衡和过渡要求
executeManaged(params)填入引号 getSmartRoute() - 见下注
withdrawManaged(params)从管理的钱包撤回到外部地址
withdrawPreview(params)预览退出收到数额和路由费
getWithdrawalQuote(params)引用最高可交付提款额
syncManagedBalances()触发链上平衡同步
cancelManagedOrder(orderId)取消待决的管理下执行命令
getVenueBalances(venues)在各地取得平衡
getManagedBalances()获取每个链子和每个收入的钱包余额管理
getDepositAddresses()获取管理的钱包存款地址( EVM + Solana)

要引出并填补一个管理下的交易, 瞄准一个场地市场 结果. 采购预算与 maxSpend; 销售指定与 sellShares。通过返回 quoteId 改为 executeManaged()数字 :

const buyRoute = await client.getSmartRoute({
  venueMarketOutcomeId,
  tradeSide: "buy",
  maxSpend: 50,
});
await client.executeManaged({ quoteId: buyRoute.quoteId });

const sellRoute = await client.getSmartRoute({
  venueMarketOutcomeId,
  tradeSide: "sell",
  sellShares: 10,
});
await client.executeManaged({ quoteId: sellRoute.quoteId });

venueMarketId, (中文(简体) ), outcomeId,以及 side: "yes" | "no" 仍为已贬值的相容性别名; 应使用新的整合 venueMarketOutcomeId 财务报告和审定财务报表 tradeSide。 。 。 .

在v4中被删除. quoteManaged() ——其终点, POST /execution/quote,在API上并不存在,所以这个电话只有 返回 404号。 取上取出两相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相.

命令和职位

方法说明
getOrders(params?)列出交易执行人命令
getExecutionOrders(params?)列出执行命令( cursor pagination)
getExecutionPositions(params?)列出执行位置( cursor pagination)
getPositions(params?)按匹配的市场组合打开位置
getUserHoldings(params)每个地点获得用户位置

领导板

方法说明
getLeaderboard(params?)按已实现的 P&L 或音量( cursor pagination) 设置的交易领导板

公用事业

方法说明
getHello()健康检查
request(path, init?)401上自动重试的通用HTTP
createWebSocket(callbacks?)创建 WebSocket 实例( 需要) wsUrl(中文(简体) )
destroy()发布资源(广播频道等)

独立公用事业

导出说明
AggWebSocket低级 WebSocket 客户端( 由 client.createWebSocket()(中文(简体) )
CandleBuilder图表-图书-不可知性蜡烛制造器(贸易-OHLC)
computeBestSplitsByAmount纯功能:最佳地在会场订货簿中分拆
applyOrderbookDelta将 WS 三角形应用到模拟命令簿
computeChecksumCRC32 订货簿校验和(用于检测干燥剂)
snapshotToOrderbook将 WS 快照转换为内元件
aggregateMidpoint各个地点的总结果中点
mergeCandles合并活 + 历史蜡烛 碰撞时的活赢
mergeClosedCandles只将蜡烛完全关闭的选项
TurnstileChallengeError当一个认证端点需要 Turnstile 挑战时抛出
AggApiError每一次非-2xx API 响应被丢弃——见下文
isAggApiError类型守护 AggApiError

处理错误

每一个非-2xx 反应被扔作为一个 AggApiError 携带 status,并且 -- 当API供给他们的时候—— code, (中文(简体) ), retryable 和每个外地 errors部门 打开 status编号 :code 而不是匹配消息文本; 消息是人为的 并可能被重新措辞.

import { isAggApiError } from "@agg-build/sdk";

try {
  await client.getPositions();
} catch (err) {
  if (isAggApiError(err)) {
    if (err.status === 401) return promptReconnect(); // session lapsed
    if (err.code === "unregistered_domain") {
      // The signed SIWE `domain` is not in the app's allowedOrigins.
      // Note this is NOT the Origin header — sign-in works with no Origin
      // at all, which is what makes Node and React Native work.
    }
  }
  throw err;
}

@agg-build/sdk/server

导出说明
AggAdminClient使用 x-app-api-key (仅服务器)
signExternalId(secret, userId)HMAC 在打电话前签名一个伙伴用户ID linkExternalId()
verifyWebhook(payload, headers, secret)验证输入的 Webhook 签名
parseWebhookEvent(payload, headers, secret)校验 + 解析一个被键入的事件
WebhookVerificationError丢入签名/时间戳失败

WebSocket 回调

回电当它起火时
onSnapshot(outcomeId, book)收到完整的订货簿快照
onDelta(outcomeId, book)应用递增式订单簿更新
onTrade(trade)交易执行
onHeartbeat(hb)服务器心跳( 每30s)
onSubscribed 编号 : onUnsubscribed订阅生命周期
onConnected 编号 : onAuthenticated连接/ 认证生命周期
onOrderSubmitted通过 WebSocket 设置顺序
onBalanceUpdate余额变动事件
onMarketResolved市场解决
onDiagnostics(event)诊断事件(seq缺口、断层连接)
onConnectionStateChange(connected)主连接状态已更改
onOrderbookConnectionStateChange(connected)订单套接字状态 。 仅在 orderbookUrl 设定
onError(msg)服务器发送错误消息

命令书按结果键. OrderbookState.outcomeId 是一个 书;被贬损 OrderbookState.marketId 持有同样的结果id, 没有 地点 市场编号,因为订货簿框架没有市场编号。 使用 REST 软件 venueMarketId (例如来自 getOutcomeOrderbooks或你自己的结果 / 当你需要市场绘图时 市场.

关键行为 :

  • 与每个市场重新计算的订阅单项持续连接. orderbookUrl 将命令簿频道移动到第二个套接字上并报告 onOrderbookConnectionStateChange。只订阅订单不保留 wsUrl 连接。 交易、arb、目录和用户活动保持不变 wsUrl。 。 。 .
  • 每集市内订单状态(snapshot + delta并有CRC32核查).
  • 序列间隙或校验和错配会触发自动回放.
  • snapshot_unavailable 复试只影响活性结果,每套最多有3个紧张的复试,最多每套每秒再试20个结果。 仍然到达错误 onError; 成功快照、 未订阅和套接字关闭将取消等待重试 。 缺少的答复仍由可选书监督员负责.
  • 以指数回放自动重联(基数1s,最大为30s).
  • 活性:45s没有消息触发重接;服务器心跳每30s.
  • 投标总是排序 降级,问总是排序 升级.

自动附加信头

  • x-app-id ——从 appId 选项
  • Authorization: Bearer <jwt> - 注册后
  • x-admin-key 如果 adminKey 提供
  • x-auth-delivery: cookie-refresh + 键 credentials: "include" 只有认证的请求 authDelivery: "cookie-refresh" 已启用

入境点

条目目的
@agg-build/sdkAggClient, (中文(简体) ), createAggClient, (中文(简体) ), AggWebSocket水电费
@agg-build/sdk/server只有节点的帮助者:管理客户端,外部ID/webhook签名

同伴依赖关系

无——至于v4,也没有运行时间依赖关系. 捆绑的唯一模块 进口为 node:crypto (使用时间: @agg-build/sdk/server因此,一个新的安装是 1 MB以下,无中转.

带上你的钱包库 SDK 构建 SIWE/ SIWS 消息串, 绝不 签名本身,所以 viem, (中文(简体) ), ethers,或者任何其他签名者的工作——你通过 在一个 signMessage 函数.

在v4中有所改变. 先前版本已声明 viem, (中文(简体) ), ethers@5, (中文(简体) ), @polymarket/clob-client 财务报告和审定财务报表 @polymarket/builder-signing-sdk 作为运行时间 依赖性。 从未导入过代码路径, 但安装者仍在付费 - 大约100 MB的 node_modules 穿过他们的中转树 他们 在v4中被删除; SDK的行为没有任何改变.

许可证

麻省理工学院

地点活动读取录取

getVenueEventById 共享同时在每一个客户端内读取和认证 届会(包括常会) cluster 财务报告和审定财务报表 minVolume 查询值). 它保留 没有完成结果缓存。 最多四个不同的活动同时进行; 最多128 等待FIFO顺序。 全队拒绝方式 AggApiError 状态429, 代码 client_read_queue_full,并重试延迟提示.

一个服务器429仍然拒绝原调用,而没有自动重试. 新员额 已队列事件读取其荣誉 Retry-After 延迟加最多250ms正焦; 缺少提示使用一秒钟。 呼叫者可以独立取消; 共享抓取 只有在所有来电者离开后才取消。 队列读取拒绝 AbortError 如果在录取前认证更改. destroy() 取消待读 . 其他读取方法和写取方法保留了现有的再试行为.

版本与发布记录

@agg-build/sdk 共发布 82 个版本,首次发布于 2026/04/28;过去 12 个月发布了 82 个版本。

版本发布日期距今
4.37.0latest2026/11/06今天
4.36.02026/11/042 天前
4.34.12026/11/033 天前
4.34.02026/10/306 天前
4.33.02026/10/307 天前
4.32.02026/10/289 天前

关于 @agg-build/sdk 的常见问题

@agg-build/sdk 是什么?

用于AGG预测市场聚合器的香草TypeScript客户端(自动,市场,订单簿,图表,交易,管理下执行,WebSockets). 工作于浏览器,Node.js,以及React Industrial.

如何安装 @agg-build/sdk?

在项目目录运行 npm install @agg-build/sdk,或使用 pnpm add / yarn add / bun add。

@agg-build/sdk 支持 TypeScript 吗?

支持。包内自带 TypeScript 类型声明(package.json 声明了 types 入口),安装后即可获得类型提示,无需再安装 @types 包。

@agg-build/sdk 支持 ESM 还是 CommonJS?

同时提供 ES Module 与 CommonJS 入口,import 和 require() 都可以使用,打包工具会自动选择合适的版本。

@agg-build/sdk 可以商用吗?

@agg-build/sdk 使用 MIT 许可。宽松许可:允许商业使用、修改和再分发,通常只需在分发时保留原版权与许可声明。以上为概括,不构成法律意见,请以许可原文为准。

@agg-build/sdk 的下载量有多少?

根据 npm 官方下载统计,@agg-build/sdk 在 2026/10/05 – 2026/11/03 这 30 天内被下载 5,933 次,日均约 198 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入,适合横向比较热度,不能直接等同于使用人数。

@agg-build/sdk 还在维护吗?

最新版本 4.37.0 发布于 2026/11/06(今天);至今共发布 82 个版本,其中过去 12 个月发布了 82 个;首次发布于 2026/04/28。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。