@linxiraos/pi-ai 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (639) hide show
  1. package/CHANGELOG.md +5066 -0
  2. package/README.md +1195 -0
  3. package/dist/types/api-registry.d.ts +30 -0
  4. package/dist/types/auth/sqlite-credential-store.d.ts +117 -0
  5. package/dist/types/auth-broker/client.d.ts +93 -0
  6. package/dist/types/auth-broker/discover.d.ts +39 -0
  7. package/dist/types/auth-broker/index.d.ts +7 -0
  8. package/dist/types/auth-broker/refresher.d.ts +25 -0
  9. package/dist/types/auth-broker/remote-store.d.ts +136 -0
  10. package/dist/types/auth-broker/server.d.ts +48 -0
  11. package/dist/types/auth-broker/snapshot-cache.d.ts +17 -0
  12. package/dist/types/auth-broker/types.d.ts +152 -0
  13. package/dist/types/auth-broker/wire-schema-resource.d.ts +53 -0
  14. package/dist/types/auth-broker/wire-schemas.d.ts +5 -0
  15. package/dist/types/auth-gateway/http.d.ts +56 -0
  16. package/dist/types/auth-gateway/index.d.ts +3 -0
  17. package/dist/types/auth-gateway/server.d.ts +36 -0
  18. package/dist/types/auth-gateway/types.d.ts +127 -0
  19. package/dist/types/auth-retry.d.ts +150 -0
  20. package/dist/types/auth-storage.d.ts +1258 -0
  21. package/dist/types/dialect/anthropic.d.ts +15 -0
  22. package/dist/types/dialect/catalog.d.ts +3 -0
  23. package/dist/types/dialect/coercion.d.ts +23 -0
  24. package/dist/types/dialect/deepseek.d.ts +14 -0
  25. package/dist/types/dialect/demotion.d.ts +30 -0
  26. package/dist/types/dialect/examples.d.ts +18 -0
  27. package/dist/types/dialect/factory.d.ts +3 -0
  28. package/dist/types/dialect/fenced-thinking.d.ts +53 -0
  29. package/dist/types/dialect/gemini.d.ts +17 -0
  30. package/dist/types/dialect/gemma.d.ts +15 -0
  31. package/dist/types/dialect/glm.d.ts +9 -0
  32. package/dist/types/dialect/harmony.d.ts +8 -0
  33. package/dist/types/dialect/hermes.d.ts +9 -0
  34. package/dist/types/dialect/history.d.ts +3 -0
  35. package/dist/types/dialect/index.d.ts +11 -0
  36. package/dist/types/dialect/inventory.d.ts +9 -0
  37. package/dist/types/dialect/kimi.d.ts +14 -0
  38. package/dist/types/dialect/minimax.d.ts +3 -0
  39. package/dist/types/dialect/owned-stream.d.ts +4 -0
  40. package/dist/types/dialect/qwen3.d.ts +9 -0
  41. package/dist/types/dialect/rendering.d.ts +54 -0
  42. package/dist/types/dialect/thinking.d.ts +6 -0
  43. package/dist/types/dialect/types.d.ts +68 -0
  44. package/dist/types/dialect/xml.d.ts +9 -0
  45. package/dist/types/error/abort.d.ts +14 -0
  46. package/dist/types/error/auth-classify.d.ts +20 -0
  47. package/dist/types/error/auth.d.ts +27 -0
  48. package/dist/types/error/aws.d.ts +27 -0
  49. package/dist/types/error/classes.d.ts +106 -0
  50. package/dist/types/error/finalize.d.ts +39 -0
  51. package/dist/types/error/flags.d.ts +94 -0
  52. package/dist/types/error/format.d.ts +20 -0
  53. package/dist/types/error/gateway.d.ts +20 -0
  54. package/dist/types/error/index.d.ts +14 -0
  55. package/dist/types/error/oauth.d.ts +43 -0
  56. package/dist/types/error/provider.d.ts +42 -0
  57. package/dist/types/error/rate-limit.d.ts +80 -0
  58. package/dist/types/error/retryable.d.ts +27 -0
  59. package/dist/types/error/validation.d.ts +32 -0
  60. package/dist/types/index.d.ts +51 -0
  61. package/dist/types/provider-details.d.ts +24 -0
  62. package/dist/types/providers/amazon-bedrock.d.ts +39 -0
  63. package/dist/types/providers/anthropic-client.d.ts +106 -0
  64. package/dist/types/providers/anthropic-messages-server-schema.d.ts +937 -0
  65. package/dist/types/providers/anthropic-messages-server.d.ts +17 -0
  66. package/dist/types/providers/anthropic-wire.d.ts +345 -0
  67. package/dist/types/providers/anthropic.d.ts +261 -0
  68. package/dist/types/providers/aws-credentials.d.ts +48 -0
  69. package/dist/types/providers/aws-eventstream.d.ts +39 -0
  70. package/dist/types/providers/aws-sigv4.d.ts +55 -0
  71. package/dist/types/providers/azure-openai-responses.d.ts +16 -0
  72. package/dist/types/providers/bedrock-mantle.d.ts +13 -0
  73. package/dist/types/providers/claude-code-fingerprint.d.ts +19 -0
  74. package/dist/types/providers/cowork-fetch.d.ts +3 -0
  75. package/dist/types/providers/cursor/exec-modern.d.ts +98 -0
  76. package/dist/types/providers/cursor-pi-args.d.ts +105 -0
  77. package/dist/types/providers/cursor.d.ts +221 -0
  78. package/dist/types/providers/devin.d.ts +12 -0
  79. package/dist/types/providers/error-message.d.ts +25 -0
  80. package/dist/types/providers/github-copilot-headers.d.ts +40 -0
  81. package/dist/types/providers/gitlab-duo-workflow.d.ts +254 -0
  82. package/dist/types/providers/gitlab-duo.d.ts +27 -0
  83. package/dist/types/providers/google-auth.d.ts +24 -0
  84. package/dist/types/providers/google-gemini-cli.d.ts +120 -0
  85. package/dist/types/providers/google-shared.d.ts +203 -0
  86. package/dist/types/providers/google-types.d.ts +155 -0
  87. package/dist/types/providers/google-vertex.d.ts +7 -0
  88. package/dist/types/providers/google.d.ts +4 -0
  89. package/dist/types/providers/grammar.d.ts +1 -0
  90. package/dist/types/providers/kimi.d.ts +27 -0
  91. package/dist/types/providers/mock.d.ts +179 -0
  92. package/dist/types/providers/ollama.d.ts +8 -0
  93. package/dist/types/providers/openai-anthropic-shim.d.ts +35 -0
  94. package/dist/types/providers/openai-chat-server-schema.d.ts +1311 -0
  95. package/dist/types/providers/openai-chat-server.d.ts +16 -0
  96. package/dist/types/providers/openai-chat-wire.d.ts +669 -0
  97. package/dist/types/providers/openai-codex/request-transformer.d.ts +109 -0
  98. package/dist/types/providers/openai-codex/response-handler.d.ts +26 -0
  99. package/dist/types/providers/openai-codex-responses.d.ts +238 -0
  100. package/dist/types/providers/openai-completions.d.ts +48 -0
  101. package/dist/types/providers/openai-reasoning-fallback.d.ts +25 -0
  102. package/dist/types/providers/openai-responses-server-schema.d.ts +1314 -0
  103. package/dist/types/providers/openai-responses-server.d.ts +17 -0
  104. package/dist/types/providers/openai-responses-wire.d.ts +6099 -0
  105. package/dist/types/providers/openai-responses.d.ts +131 -0
  106. package/dist/types/providers/openai-shared.d.ts +624 -0
  107. package/dist/types/providers/pi-native-client.d.ts +13 -0
  108. package/dist/types/providers/pi-native-server.d.ts +69 -0
  109. package/dist/types/providers/register-builtins.d.ts +37 -0
  110. package/dist/types/providers/synthetic.d.ts +26 -0
  111. package/dist/types/providers/transform-messages.d.ts +32 -0
  112. package/dist/types/providers/vision-guard.d.ts +20 -0
  113. package/dist/types/registry/aiand.d.ts +7 -0
  114. package/dist/types/registry/aimlapi.d.ts +4 -0
  115. package/dist/types/registry/alibaba-coding-plan.d.ts +8 -0
  116. package/dist/types/registry/alibaba-token-plan.d.ts +18 -0
  117. package/dist/types/registry/amazon-bedrock.d.ts +5 -0
  118. package/dist/types/registry/anthropic.d.ts +10 -0
  119. package/dist/types/registry/api-key-login.d.ts +42 -0
  120. package/dist/types/registry/api-key-validation.d.ts +43 -0
  121. package/dist/types/registry/aws.d.ts +13 -0
  122. package/dist/types/registry/azure.d.ts +4 -0
  123. package/dist/types/registry/baseten.d.ts +7 -0
  124. package/dist/types/registry/bedrock-mantle.d.ts +22 -0
  125. package/dist/types/registry/cerebras.d.ts +7 -0
  126. package/dist/types/registry/cloudflare-ai-gateway.d.ts +13 -0
  127. package/dist/types/registry/coreweave.d.ts +7 -0
  128. package/dist/types/registry/cursor.d.ts +7 -0
  129. package/dist/types/registry/deepseek.d.ts +8 -0
  130. package/dist/types/registry/derived.d.ts +5 -0
  131. package/dist/types/registry/devin.d.ts +8 -0
  132. package/dist/types/registry/exa.d.ts +8 -0
  133. package/dist/types/registry/firepass.d.ts +16 -0
  134. package/dist/types/registry/fireworks.d.ts +7 -0
  135. package/dist/types/registry/github-copilot.d.ts +7 -0
  136. package/dist/types/registry/gitlab-duo-workflow.d.ts +10 -0
  137. package/dist/types/registry/gitlab-duo.d.ts +9 -0
  138. package/dist/types/registry/gmi-cloud.d.ts +7 -0
  139. package/dist/types/registry/google-antigravity.d.ts +9 -0
  140. package/dist/types/registry/google-gemini-cli.d.ts +9 -0
  141. package/dist/types/registry/google-vertex.d.ts +5 -0
  142. package/dist/types/registry/google.d.ts +4 -0
  143. package/dist/types/registry/groq.d.ts +4 -0
  144. package/dist/types/registry/huggingface.d.ts +7 -0
  145. package/dist/types/registry/index.d.ts +4 -0
  146. package/dist/types/registry/kagi.d.ts +14 -0
  147. package/dist/types/registry/kilo.d.ts +7 -0
  148. package/dist/types/registry/kimi-code.d.ts +7 -0
  149. package/dist/types/registry/litellm.d.ts +13 -0
  150. package/dist/types/registry/llama-cpp.d.ts +8 -0
  151. package/dist/types/registry/lm-studio.d.ts +8 -0
  152. package/dist/types/registry/meta.d.ts +7 -0
  153. package/dist/types/registry/minimax-code-cn.d.ts +6 -0
  154. package/dist/types/registry/minimax-code.d.ts +6 -0
  155. package/dist/types/registry/minimax.d.ts +4 -0
  156. package/dist/types/registry/mistral.d.ts +4 -0
  157. package/dist/types/registry/moonshot.d.ts +7 -0
  158. package/dist/types/registry/nanogpt.d.ts +7 -0
  159. package/dist/types/registry/novita.d.ts +6 -0
  160. package/dist/types/registry/nvidia.d.ts +7 -0
  161. package/dist/types/registry/oauth/anthropic-constants.d.ts +12 -0
  162. package/dist/types/registry/oauth/anthropic.d.ts +24 -0
  163. package/dist/types/registry/oauth/callback-server.d.ts +74 -0
  164. package/dist/types/registry/oauth/cursor.d.ts +16 -0
  165. package/dist/types/registry/oauth/device-code.d.ts +25 -0
  166. package/dist/types/registry/oauth/devin.d.ts +5 -0
  167. package/dist/types/registry/oauth/github-copilot.d.ts +30 -0
  168. package/dist/types/registry/oauth/gitlab-duo-workflow.d.ts +6 -0
  169. package/dist/types/registry/oauth/gitlab-duo.d.ts +3 -0
  170. package/dist/types/registry/oauth/google-antigravity.d.ts +11 -0
  171. package/dist/types/registry/oauth/google-gemini-cli.d.ts +22 -0
  172. package/dist/types/registry/oauth/google-oauth-shared.d.ts +56 -0
  173. package/dist/types/registry/oauth/index.d.ts +45 -0
  174. package/dist/types/registry/oauth/kimi.d.ts +21 -0
  175. package/dist/types/registry/oauth/minimax-code.d.ts +27 -0
  176. package/dist/types/registry/oauth/openai-codex.d.ts +33 -0
  177. package/dist/types/registry/oauth/opencode.d.ts +18 -0
  178. package/dist/types/registry/oauth/perplexity.d.ts +9 -0
  179. package/dist/types/registry/oauth/pkce.d.ts +8 -0
  180. package/dist/types/registry/oauth/types.d.ts +87 -0
  181. package/dist/types/registry/oauth/wafer.d.ts +1 -0
  182. package/dist/types/registry/oauth/xai-oauth.d.ts +46 -0
  183. package/dist/types/registry/oauth/xiaomi.d.ts +25 -0
  184. package/dist/types/registry/oauth/zai.d.ts +25 -0
  185. package/dist/types/registry/ollama-cloud.d.ts +7 -0
  186. package/dist/types/registry/ollama.d.ts +12 -0
  187. package/dist/types/registry/openai-codex-device.d.ts +8 -0
  188. package/dist/types/registry/openai-codex.d.ts +9 -0
  189. package/dist/types/registry/openai.d.ts +4 -0
  190. package/dist/types/registry/opencode-go.d.ts +6 -0
  191. package/dist/types/registry/opencode-zen.d.ts +6 -0
  192. package/dist/types/registry/openrouter.d.ts +13 -0
  193. package/dist/types/registry/parallel.d.ts +14 -0
  194. package/dist/types/registry/perplexity.d.ts +7 -0
  195. package/dist/types/registry/qianfan.d.ts +7 -0
  196. package/dist/types/registry/qwen-portal.d.ts +7 -0
  197. package/dist/types/registry/registry.d.ts +367 -0
  198. package/dist/types/registry/sakana.d.ts +7 -0
  199. package/dist/types/registry/siliconflow-cn.d.ts +7 -0
  200. package/dist/types/registry/siliconflow.d.ts +7 -0
  201. package/dist/types/registry/synthetic.d.ts +6 -0
  202. package/dist/types/registry/tavily.d.ts +14 -0
  203. package/dist/types/registry/together.d.ts +6 -0
  204. package/dist/types/registry/types.d.ts +75 -0
  205. package/dist/types/registry/umans.d.ts +7 -0
  206. package/dist/types/registry/venice.d.ts +13 -0
  207. package/dist/types/registry/vercel-ai-gateway.d.ts +7 -0
  208. package/dist/types/registry/vllm.d.ts +7 -0
  209. package/dist/types/registry/wafer-serverless.d.ts +6 -0
  210. package/dist/types/registry/xai-oauth.d.ts +7 -0
  211. package/dist/types/registry/xai.d.ts +7 -0
  212. package/dist/types/registry/xiaomi-token-plan-ams.d.ts +6 -0
  213. package/dist/types/registry/xiaomi-token-plan-cn.d.ts +6 -0
  214. package/dist/types/registry/xiaomi-token-plan-sgp.d.ts +6 -0
  215. package/dist/types/registry/xiaomi.d.ts +6 -0
  216. package/dist/types/registry/zai.d.ts +15 -0
  217. package/dist/types/registry/zenmux.d.ts +7 -0
  218. package/dist/types/registry/zhipu-coding-plan.d.ts +7 -0
  219. package/dist/types/stream.d.ts +46 -0
  220. package/dist/types/types.d.ts +1064 -0
  221. package/dist/types/usage/alibaba-token-plan.d.ts +3 -0
  222. package/dist/types/usage/claude.d.ts +4 -0
  223. package/dist/types/usage/cursor.d.ts +4 -0
  224. package/dist/types/usage/gemini.d.ts +2 -0
  225. package/dist/types/usage/github-copilot.d.ts +7 -0
  226. package/dist/types/usage/google-antigravity.d.ts +15 -0
  227. package/dist/types/usage/kimi.d.ts +2 -0
  228. package/dist/types/usage/minimax-code.d.ts +3 -0
  229. package/dist/types/usage/ollama.d.ts +5 -0
  230. package/dist/types/usage/openai-codex-base-url.d.ts +18 -0
  231. package/dist/types/usage/openai-codex-reset.d.ts +88 -0
  232. package/dist/types/usage/openai-codex.d.ts +10 -0
  233. package/dist/types/usage/opencode-go.d.ts +2 -0
  234. package/dist/types/usage/shared.d.ts +1 -0
  235. package/dist/types/usage/synthetic.d.ts +2 -0
  236. package/dist/types/usage/umans.d.ts +2 -0
  237. package/dist/types/usage/xai-oauth.d.ts +12 -0
  238. package/dist/types/usage/zai.d.ts +3 -0
  239. package/dist/types/usage.d.ts +527 -0
  240. package/dist/types/utils/abort.d.ts +25 -0
  241. package/dist/types/utils/anthropic-auth.d.ts +35 -0
  242. package/dist/types/utils/aws-profile.d.ts +17 -0
  243. package/dist/types/utils/block-symbols.d.ts +62 -0
  244. package/dist/types/utils/deterministic-id.d.ts +16 -0
  245. package/dist/types/utils/empty-completion-retry.d.ts +21 -0
  246. package/dist/types/utils/event-stream.d.ts +39 -0
  247. package/dist/types/utils/foundry.d.ts +1 -0
  248. package/dist/types/utils/google-validation.d.ts +2 -0
  249. package/dist/types/utils/harmony-leak.d.ts +135 -0
  250. package/dist/types/utils/http-inspector.d.ts +49 -0
  251. package/dist/types/utils/idle-iterator.d.ts +149 -0
  252. package/dist/types/utils/leaked-thinking-stream.d.ts +33 -0
  253. package/dist/types/utils/openai-http.d.ts +48 -0
  254. package/dist/types/utils/openrouter-headers.d.ts +1 -0
  255. package/dist/types/utils/parse-bind.d.ts +23 -0
  256. package/dist/types/utils/provider-response.d.ts +3 -0
  257. package/dist/types/utils/proxy.d.ts +39 -0
  258. package/dist/types/utils/request-debug.d.ts +29 -0
  259. package/dist/types/utils/retry-after.d.ts +4 -0
  260. package/dist/types/utils/retry.d.ts +14 -0
  261. package/dist/types/utils/schema/adapt.d.ts +24 -0
  262. package/dist/types/utils/schema/compatibility.d.ts +30 -0
  263. package/dist/types/utils/schema/dereference.d.ts +11 -0
  264. package/dist/types/utils/schema/draft.d.ts +10 -0
  265. package/dist/types/utils/schema/equality.d.ts +4 -0
  266. package/dist/types/utils/schema/fields.d.ts +54 -0
  267. package/dist/types/utils/schema/index.d.ts +14 -0
  268. package/dist/types/utils/schema/json-schema-validator.d.ts +20 -0
  269. package/dist/types/utils/schema/meta-validator.d.ts +2 -0
  270. package/dist/types/utils/schema/normalize.d.ts +153 -0
  271. package/dist/types/utils/schema/spill.d.ts +8 -0
  272. package/dist/types/utils/schema/stamps.d.ts +17 -0
  273. package/dist/types/utils/schema/strict-tool-validation.d.ts +16 -0
  274. package/dist/types/utils/schema/types.d.ts +4 -0
  275. package/dist/types/utils/schema/typescript.d.ts +24 -0
  276. package/dist/types/utils/schema/wire.d.ts +52 -0
  277. package/dist/types/utils/sdk-stream-timeout.d.ts +33 -0
  278. package/dist/types/utils/sse-debug.d.ts +5 -0
  279. package/dist/types/utils/stream-markup-healing.d.ts +87 -0
  280. package/dist/types/utils/thinking-loop.d.ts +102 -0
  281. package/dist/types/utils/tool-call-loop-guard.d.ts +26 -0
  282. package/dist/types/utils/tool-choice.d.ts +52 -0
  283. package/dist/types/utils/validation.d.ts +28 -0
  284. package/dist/types/utils.d.ts +57 -0
  285. package/package.json +138 -0
  286. package/src/api-registry.ts +109 -0
  287. package/src/auth/sqlite-credential-store.ts +2066 -0
  288. package/src/auth-broker/client.ts +471 -0
  289. package/src/auth-broker/discover.ts +310 -0
  290. package/src/auth-broker/index.ts +7 -0
  291. package/src/auth-broker/refresher.ts +117 -0
  292. package/src/auth-broker/remote-store.ts +1332 -0
  293. package/src/auth-broker/server.ts +898 -0
  294. package/src/auth-broker/snapshot-cache.ts +200 -0
  295. package/src/auth-broker/types.ts +193 -0
  296. package/src/auth-broker/wire-schema-resource.ts +487 -0
  297. package/src/auth-broker/wire-schemas.ts +43 -0
  298. package/src/auth-gateway/http.ts +227 -0
  299. package/src/auth-gateway/index.ts +3 -0
  300. package/src/auth-gateway/server.ts +836 -0
  301. package/src/auth-gateway/types.ts +153 -0
  302. package/src/auth-retry.ts +401 -0
  303. package/src/auth-storage.ts +6540 -0
  304. package/src/dialect/anthropic.md +31 -0
  305. package/src/dialect/anthropic.ts +608 -0
  306. package/src/dialect/catalog.ts +29 -0
  307. package/src/dialect/coercion.ts +136 -0
  308. package/src/dialect/deepseek.md +24 -0
  309. package/src/dialect/deepseek.ts +609 -0
  310. package/src/dialect/demotion.ts +40 -0
  311. package/src/dialect/examples.ts +71 -0
  312. package/src/dialect/factory.ts +34 -0
  313. package/src/dialect/fenced-thinking.ts +184 -0
  314. package/src/dialect/gemini.md +44 -0
  315. package/src/dialect/gemini.ts +583 -0
  316. package/src/dialect/gemma.md +33 -0
  317. package/src/dialect/gemma.ts +387 -0
  318. package/src/dialect/glm.md +32 -0
  319. package/src/dialect/glm.ts +579 -0
  320. package/src/dialect/harmony.md +31 -0
  321. package/src/dialect/harmony.ts +345 -0
  322. package/src/dialect/hermes.md +25 -0
  323. package/src/dialect/hermes.ts +206 -0
  324. package/src/dialect/history.ts +81 -0
  325. package/src/dialect/index.ts +15 -0
  326. package/src/dialect/inventory.ts +30 -0
  327. package/src/dialect/kimi.md +24 -0
  328. package/src/dialect/kimi.ts +340 -0
  329. package/src/dialect/minimax.md +31 -0
  330. package/src/dialect/minimax.ts +95 -0
  331. package/src/dialect/owned-stream.ts +481 -0
  332. package/src/dialect/prompt-template.md +12 -0
  333. package/src/dialect/qwen3.md +28 -0
  334. package/src/dialect/qwen3.ts +240 -0
  335. package/src/dialect/rendering.ts +304 -0
  336. package/src/dialect/thinking.ts +292 -0
  337. package/src/dialect/types.ts +56 -0
  338. package/src/dialect/xml.md +22 -0
  339. package/src/dialect/xml.ts +90 -0
  340. package/src/error/abort.ts +18 -0
  341. package/src/error/auth-classify.ts +47 -0
  342. package/src/error/auth.ts +48 -0
  343. package/src/error/aws.ts +35 -0
  344. package/src/error/classes.ts +281 -0
  345. package/src/error/finalize.ts +69 -0
  346. package/src/error/flags.ts +602 -0
  347. package/src/error/format.ts +45 -0
  348. package/src/error/gateway.ts +96 -0
  349. package/src/error/index.ts +14 -0
  350. package/src/error/oauth.ts +58 -0
  351. package/src/error/provider.ts +63 -0
  352. package/src/error/rate-limit.ts +303 -0
  353. package/src/error/retryable.ts +70 -0
  354. package/src/error/validation.ts +44 -0
  355. package/src/index.ts +51 -0
  356. package/src/provider-details.ts +90 -0
  357. package/src/providers/amazon-bedrock.ts +1064 -0
  358. package/src/providers/anthropic-client.ts +317 -0
  359. package/src/providers/anthropic-messages-server-schema.ts +252 -0
  360. package/src/providers/anthropic-messages-server.ts +818 -0
  361. package/src/providers/anthropic-wire.ts +359 -0
  362. package/src/providers/anthropic.ts +4539 -0
  363. package/src/providers/aws-credentials.ts +772 -0
  364. package/src/providers/aws-eventstream.ts +181 -0
  365. package/src/providers/aws-sigv4.ts +218 -0
  366. package/src/providers/azure-openai-responses.ts +438 -0
  367. package/src/providers/bedrock-mantle.ts +110 -0
  368. package/src/providers/claude-code-fingerprint.ts +20 -0
  369. package/src/providers/cowork-fetch.ts +201 -0
  370. package/src/providers/cursor/exec-modern.ts +496 -0
  371. package/src/providers/cursor/proto/agent.proto +4533 -0
  372. package/src/providers/cursor/proto/buf.gen.yaml +6 -0
  373. package/src/providers/cursor/proto/buf.yaml +17 -0
  374. package/src/providers/cursor-pi-args.ts +165 -0
  375. package/src/providers/cursor.ts +4689 -0
  376. package/src/providers/devin/proto/buf/validate/validate.proto +468 -0
  377. package/src/providers/devin/proto/buf.gen.yaml +33 -0
  378. package/src/providers/devin/proto/buf.yaml +17 -0
  379. package/src/providers/devin/proto/cel/expr/checked.proto +103 -0
  380. package/src/providers/devin/proto/cel/expr/eval.proto +38 -0
  381. package/src/providers/devin/proto/cel/expr/explain.proto +15 -0
  382. package/src/providers/devin/proto/cel/expr/syntax.proto +113 -0
  383. package/src/providers/devin/proto/cel/expr/value.proto +41 -0
  384. package/src/providers/devin/proto/connectext/grpc/status/v1/status.proto +11 -0
  385. package/src/providers/devin/proto/errorspb/errors.proto +56 -0
  386. package/src/providers/devin/proto/errorspb/hintdetail.proto +7 -0
  387. package/src/providers/devin/proto/errorspb/markers.proto +10 -0
  388. package/src/providers/devin/proto/errorspb/tags.proto +12 -0
  389. package/src/providers/devin/proto/errorspb/testing.proto +6 -0
  390. package/src/providers/devin/proto/exa/analytics_pb/analytics.proto +188 -0
  391. package/src/providers/devin/proto/exa/api_server_pb/api_server.proto +2461 -0
  392. package/src/providers/devin/proto/exa/auth_pb/auth.proto +19 -0
  393. package/src/providers/devin/proto/exa/auto_cascade_common_pb/auto_cascade_common.proto +79 -0
  394. package/src/providers/devin/proto/exa/browser_preview_pb/browser_preview.proto +32 -0
  395. package/src/providers/devin/proto/exa/bug_checker_pb/bug_checker.proto +22 -0
  396. package/src/providers/devin/proto/exa/cascade_plugins_pb/cascade_plugins.proto +262 -0
  397. package/src/providers/devin/proto/exa/chat_client_server_pb/chat_client_server.proto +57 -0
  398. package/src/providers/devin/proto/exa/chat_pb/chat.proto +449 -0
  399. package/src/providers/devin/proto/exa/code_edit/code_edit_pb/code_edit.proto +186 -0
  400. package/src/providers/devin/proto/exa/codeium_common_pb/codeium_common.proto +4157 -0
  401. package/src/providers/devin/proto/exa/context_module_pb/context_module.proto +175 -0
  402. package/src/providers/devin/proto/exa/cortex_pb/cortex.proto +3268 -0
  403. package/src/providers/devin/proto/exa/dev_pb/dev.proto +26 -0
  404. package/src/providers/devin/proto/exa/diff_action_pb/diff_action.proto +75 -0
  405. package/src/providers/devin/proto/exa/eval/pr_eval/datasets_pb/datasets.proto +103 -0
  406. package/src/providers/devin/proto/exa/eval_pb/eval.proto +1315 -0
  407. package/src/providers/devin/proto/exa/extension_server_pb/extension_server.proto +556 -0
  408. package/src/providers/devin/proto/exa/file_system_provider_pb/file_system_provider.proto +75 -0
  409. package/src/providers/devin/proto/exa/index_pb/index.proto +461 -0
  410. package/src/providers/devin/proto/exa/knowledge_base_pb/knowledge_base.proto +144 -0
  411. package/src/providers/devin/proto/exa/language_server_pb/language_server.proto +2385 -0
  412. package/src/providers/devin/proto/exa/model_management_pb/model_management.proto +186 -0
  413. package/src/providers/devin/proto/exa/opensearch_clients_pb/opensearch_clients.proto +503 -0
  414. package/src/providers/devin/proto/exa/product_analytics_pb/product_analytics.proto +37 -0
  415. package/src/providers/devin/proto/exa/prompt_pb/prompt.proto +92 -0
  416. package/src/providers/devin/proto/exa/reactive_component_pb/reactive_component.proto +96 -0
  417. package/src/providers/devin/proto/exa/seat_management_pb/seat_management.proto +2680 -0
  418. package/src/providers/devin/proto/exa/tokenizer_pb/tokenizer.proto +37 -0
  419. package/src/providers/devin/proto/exa/trainer_pb/config.proto +647 -0
  420. package/src/providers/devin/proto/exa/tree_sitter/language_data_pb/language_data.proto +14 -0
  421. package/src/providers/devin/proto/exa/trust_pb/trust.proto +157 -0
  422. package/src/providers/devin/proto/exa/user_analytics_pb/user_analytics.proto +519 -0
  423. package/src/providers/devin/proto/google.golang.org/appengine/internal/base/api_base.proto +28 -0
  424. package/src/providers/devin/proto/google.golang.org/appengine/internal/datastore/datastore_v3.proto +484 -0
  425. package/src/providers/devin/proto/google.golang.org/appengine/internal/log/log_service.proto +136 -0
  426. package/src/providers/devin/proto/google.golang.org/appengine/internal/remote_api/remote_api.proto +42 -0
  427. package/src/providers/devin/proto/google.golang.org/appengine/internal/urlfetch/urlfetch_service.proto +61 -0
  428. package/src/providers/devin/proto/grpc/binlog/v1/binarylog.proto +84 -0
  429. package/src/providers/devin/proto/io/prometheus/client/metrics.proto +98 -0
  430. package/src/providers/devin.ts +679 -0
  431. package/src/providers/error-message.ts +23 -0
  432. package/src/providers/github-copilot-headers.ts +141 -0
  433. package/src/providers/gitlab-duo-workflow-chatml-note.md +1 -0
  434. package/src/providers/gitlab-duo-workflow.ts +3135 -0
  435. package/src/providers/gitlab-duo.ts +399 -0
  436. package/src/providers/google-auth.ts +330 -0
  437. package/src/providers/google-gemini-cli.ts +1370 -0
  438. package/src/providers/google-shared.ts +1122 -0
  439. package/src/providers/google-types.ts +180 -0
  440. package/src/providers/google-vertex.ts +135 -0
  441. package/src/providers/google.ts +47 -0
  442. package/src/providers/grammar.ts +70 -0
  443. package/src/providers/kimi.ts +51 -0
  444. package/src/providers/mock.ts +514 -0
  445. package/src/providers/ollama.ts +776 -0
  446. package/src/providers/openai-anthropic-shim.ts +166 -0
  447. package/src/providers/openai-chat-server-schema.ts +243 -0
  448. package/src/providers/openai-chat-server.ts +752 -0
  449. package/src/providers/openai-chat-wire.ts +859 -0
  450. package/src/providers/openai-codex/request-transformer.ts +491 -0
  451. package/src/providers/openai-codex/response-handler.ts +102 -0
  452. package/src/providers/openai-codex-responses.ts +4716 -0
  453. package/src/providers/openai-completions.ts +2389 -0
  454. package/src/providers/openai-reasoning-fallback.ts +269 -0
  455. package/src/providers/openai-responses-server-schema.ts +397 -0
  456. package/src/providers/openai-responses-server.ts +1466 -0
  457. package/src/providers/openai-responses-wire.ts +6416 -0
  458. package/src/providers/openai-responses.ts +1393 -0
  459. package/src/providers/openai-shared.ts +3500 -0
  460. package/src/providers/pi-native-client.ts +275 -0
  461. package/src/providers/pi-native-server.ts +245 -0
  462. package/src/providers/register-builtins.ts +503 -0
  463. package/src/providers/synthetic.ts +50 -0
  464. package/src/providers/transform-messages.ts +1083 -0
  465. package/src/providers/vision-guard.ts +54 -0
  466. package/src/registry/aiand.ts +22 -0
  467. package/src/registry/aimlapi.ts +6 -0
  468. package/src/registry/alibaba-coding-plan.ts +104 -0
  469. package/src/registry/alibaba-token-plan.ts +125 -0
  470. package/src/registry/amazon-bedrock.ts +22 -0
  471. package/src/registry/anthropic.ts +26 -0
  472. package/src/registry/api-key-login.ts +115 -0
  473. package/src/registry/api-key-validation.ts +145 -0
  474. package/src/registry/aws.ts +57 -0
  475. package/src/registry/azure.ts +6 -0
  476. package/src/registry/baseten.ts +22 -0
  477. package/src/registry/bedrock-mantle.ts +34 -0
  478. package/src/registry/cerebras.ts +23 -0
  479. package/src/registry/cloudflare-ai-gateway.ts +45 -0
  480. package/src/registry/coreweave.ts +40 -0
  481. package/src/registry/cursor.ts +20 -0
  482. package/src/registry/deepseek.ts +46 -0
  483. package/src/registry/derived.ts +9 -0
  484. package/src/registry/devin.ts +15 -0
  485. package/src/registry/exa.ts +19 -0
  486. package/src/registry/firepass.ts +32 -0
  487. package/src/registry/fireworks.ts +28 -0
  488. package/src/registry/github-copilot.ts +22 -0
  489. package/src/registry/gitlab-duo-workflow.ts +20 -0
  490. package/src/registry/gitlab-duo.ts +19 -0
  491. package/src/registry/gmi-cloud.ts +22 -0
  492. package/src/registry/google-antigravity.ts +22 -0
  493. package/src/registry/google-gemini-cli.ts +22 -0
  494. package/src/registry/google-vertex.ts +38 -0
  495. package/src/registry/google.ts +6 -0
  496. package/src/registry/groq.ts +6 -0
  497. package/src/registry/huggingface.ts +29 -0
  498. package/src/registry/index.ts +4 -0
  499. package/src/registry/kagi.ts +46 -0
  500. package/src/registry/kilo.ts +114 -0
  501. package/src/registry/kimi-code.ts +17 -0
  502. package/src/registry/litellm.ts +45 -0
  503. package/src/registry/llama-cpp.ts +35 -0
  504. package/src/registry/lm-studio.ts +31 -0
  505. package/src/registry/meta.ts +22 -0
  506. package/src/registry/minimax-code-cn.ts +12 -0
  507. package/src/registry/minimax-code.ts +12 -0
  508. package/src/registry/minimax.ts +6 -0
  509. package/src/registry/mistral.ts +6 -0
  510. package/src/registry/moonshot.ts +28 -0
  511. package/src/registry/nanogpt.ts +22 -0
  512. package/src/registry/novita.ts +25 -0
  513. package/src/registry/nvidia.ts +61 -0
  514. package/src/registry/oauth/anthropic-constants.ts +12 -0
  515. package/src/registry/oauth/anthropic.ts +346 -0
  516. package/src/registry/oauth/callback-server.ts +438 -0
  517. package/src/registry/oauth/cursor.ts +187 -0
  518. package/src/registry/oauth/device-code.ts +92 -0
  519. package/src/registry/oauth/devin.ts +124 -0
  520. package/src/registry/oauth/github-copilot.ts +369 -0
  521. package/src/registry/oauth/gitlab-duo-workflow.ts +146 -0
  522. package/src/registry/oauth/gitlab-duo.ts +222 -0
  523. package/src/registry/oauth/google-antigravity.ts +225 -0
  524. package/src/registry/oauth/google-gemini-cli.ts +297 -0
  525. package/src/registry/oauth/google-oauth-shared.ts +211 -0
  526. package/src/registry/oauth/index.ts +187 -0
  527. package/src/registry/oauth/kimi.ts +297 -0
  528. package/src/registry/oauth/minimax-code.ts +53 -0
  529. package/src/registry/oauth/oauth.html +317 -0
  530. package/src/registry/oauth/openai-codex.ts +384 -0
  531. package/src/registry/oauth/opencode.ts +50 -0
  532. package/src/registry/oauth/perplexity.ts +228 -0
  533. package/src/registry/oauth/pkce.ts +18 -0
  534. package/src/registry/oauth/types.ts +96 -0
  535. package/src/registry/oauth/wafer.ts +24 -0
  536. package/src/registry/oauth/xai-oauth.ts +559 -0
  537. package/src/registry/oauth/xiaomi.ts +211 -0
  538. package/src/registry/oauth/zai.ts +285 -0
  539. package/src/registry/ollama-cloud.ts +36 -0
  540. package/src/registry/ollama.ts +43 -0
  541. package/src/registry/openai-codex-device.ts +18 -0
  542. package/src/registry/openai-codex.ts +19 -0
  543. package/src/registry/openai.ts +6 -0
  544. package/src/registry/opencode-go.ts +12 -0
  545. package/src/registry/opencode-zen.ts +12 -0
  546. package/src/registry/openrouter.ts +28 -0
  547. package/src/registry/parallel.ts +45 -0
  548. package/src/registry/perplexity.ts +13 -0
  549. package/src/registry/qianfan.ts +27 -0
  550. package/src/registry/qwen-portal.ts +50 -0
  551. package/src/registry/registry.ts +182 -0
  552. package/src/registry/sakana.ts +22 -0
  553. package/src/registry/siliconflow-cn.ts +22 -0
  554. package/src/registry/siliconflow.ts +22 -0
  555. package/src/registry/synthetic.ts +21 -0
  556. package/src/registry/tavily.ts +45 -0
  557. package/src/registry/together.ts +22 -0
  558. package/src/registry/types.ts +86 -0
  559. package/src/registry/umans.ts +23 -0
  560. package/src/registry/venice.ts +33 -0
  561. package/src/registry/vercel-ai-gateway.ts +38 -0
  562. package/src/registry/vllm.ts +34 -0
  563. package/src/registry/wafer-serverless.ts +12 -0
  564. package/src/registry/xai-oauth.ts +17 -0
  565. package/src/registry/xai.ts +22 -0
  566. package/src/registry/xiaomi-token-plan-ams.ts +12 -0
  567. package/src/registry/xiaomi-token-plan-cn.ts +12 -0
  568. package/src/registry/xiaomi-token-plan-sgp.ts +12 -0
  569. package/src/registry/xiaomi.ts +12 -0
  570. package/src/registry/zai.ts +41 -0
  571. package/src/registry/zenmux.ts +22 -0
  572. package/src/registry/zhipu-coding-plan.ts +27 -0
  573. package/src/stream.ts +1944 -0
  574. package/src/types.ts +1243 -0
  575. package/src/usage/alibaba-token-plan.ts +230 -0
  576. package/src/usage/claude.ts +830 -0
  577. package/src/usage/cursor.ts +335 -0
  578. package/src/usage/gemini.ts +258 -0
  579. package/src/usage/github-copilot.ts +424 -0
  580. package/src/usage/google-antigravity.ts +497 -0
  581. package/src/usage/kimi.ts +277 -0
  582. package/src/usage/minimax-code.ts +291 -0
  583. package/src/usage/ollama.ts +41 -0
  584. package/src/usage/openai-codex-base-url.ts +35 -0
  585. package/src/usage/openai-codex-reset.ts +205 -0
  586. package/src/usage/openai-codex.ts +627 -0
  587. package/src/usage/opencode-go.ts +89 -0
  588. package/src/usage/shared.ts +10 -0
  589. package/src/usage/synthetic.ts +180 -0
  590. package/src/usage/umans.ts +192 -0
  591. package/src/usage/xai-oauth.ts +414 -0
  592. package/src/usage/zai.ts +370 -0
  593. package/src/usage.ts +411 -0
  594. package/src/utils/abort.ts +67 -0
  595. package/src/utils/anthropic-auth.ts +93 -0
  596. package/src/utils/aws-profile.ts +88 -0
  597. package/src/utils/block-symbols.ts +78 -0
  598. package/src/utils/deterministic-id.ts +20 -0
  599. package/src/utils/empty-completion-retry.ts +161 -0
  600. package/src/utils/event-stream.ts +202 -0
  601. package/src/utils/foundry.ts +8 -0
  602. package/src/utils/google-validation.ts +25 -0
  603. package/src/utils/harmony-leak.ts +500 -0
  604. package/src/utils/http-inspector.ts +196 -0
  605. package/src/utils/idle-iterator.ts +531 -0
  606. package/src/utils/leaked-thinking-stream.ts +483 -0
  607. package/src/utils/openai-http.ts +119 -0
  608. package/src/utils/openrouter-headers.ts +12 -0
  609. package/src/utils/parse-bind.ts +56 -0
  610. package/src/utils/provider-response.ts +30 -0
  611. package/src/utils/proxy.ts +314 -0
  612. package/src/utils/request-debug.ts +351 -0
  613. package/src/utils/retry-after.ts +121 -0
  614. package/src/utils/retry.ts +77 -0
  615. package/src/utils/schema/CONSTRAINTS.md +168 -0
  616. package/src/utils/schema/adapt.ts +36 -0
  617. package/src/utils/schema/compatibility.ts +435 -0
  618. package/src/utils/schema/dereference.ts +98 -0
  619. package/src/utils/schema/draft.ts +341 -0
  620. package/src/utils/schema/equality.ts +97 -0
  621. package/src/utils/schema/fields.ts +210 -0
  622. package/src/utils/schema/index.ts +14 -0
  623. package/src/utils/schema/json-schema-validator.ts +595 -0
  624. package/src/utils/schema/meta-validator.ts +167 -0
  625. package/src/utils/schema/normalize.ts +2314 -0
  626. package/src/utils/schema/spill.ts +43 -0
  627. package/src/utils/schema/stamps.ts +109 -0
  628. package/src/utils/schema/strict-tool-validation.ts +117 -0
  629. package/src/utils/schema/types.ts +10 -0
  630. package/src/utils/schema/typescript.ts +212 -0
  631. package/src/utils/schema/wire.ts +662 -0
  632. package/src/utils/sdk-stream-timeout.ts +43 -0
  633. package/src/utils/sse-debug.ts +18 -0
  634. package/src/utils/stream-markup-healing.ts +247 -0
  635. package/src/utils/thinking-loop.ts +552 -0
  636. package/src/utils/tool-call-loop-guard.ts +107 -0
  637. package/src/utils/tool-choice.ts +101 -0
  638. package/src/utils/validation.ts +1932 -0
  639. package/src/utils.ts +492 -0
@@ -0,0 +1,527 @@
1
+ import type { FetchImpl, Provider } from "./types.js";
2
+ export type UsageUnit = "percent" | "tokens" | "requests" | "usd" | "minutes" | "bytes" | "unknown";
3
+ export type UsageStatus = "ok" | "warning" | "exhausted" | "unknown";
4
+ /** Time window for a limit (e.g. 5h, 7d, monthly). */
5
+ export interface UsageWindow {
6
+ /** Stable identifier (e.g. "5h", "7d", "monthly"). */
7
+ id: string;
8
+ /** Human label (e.g. "5 Hour", "7 Day"). */
9
+ label: string;
10
+ /** Window duration in milliseconds, when known. */
11
+ durationMs?: number;
12
+ /** Absolute reset timestamp in milliseconds since epoch. */
13
+ resetsAt?: number;
14
+ /**
15
+ * Verb rendered before the {@link resetsAt} countdown (e.g. "tick", "regen").
16
+ * Defaults to "resets" — override for rolling windows where the timestamp is
17
+ * an incremental regeneration step rather than a full window reset.
18
+ */
19
+ resetLabel?: string;
20
+ }
21
+ /** Quantitative usage data. */
22
+ export interface UsageAmount {
23
+ /** Amount used in the given unit. */
24
+ used?: number;
25
+ /** Maximum limit in the given unit. */
26
+ limit?: number;
27
+ /** Remaining amount in the given unit. */
28
+ remaining?: number;
29
+ /** Fraction used (0..1). */
30
+ usedFraction?: number;
31
+ /** Fraction remaining (0..1). */
32
+ remainingFraction?: number;
33
+ /** Unit for the amounts (percent, tokens, etc.). */
34
+ unit: UsageUnit;
35
+ }
36
+ /** Scope metadata describing what the limit applies to. */
37
+ export interface UsageScope {
38
+ provider: Provider;
39
+ accountId?: string;
40
+ projectId?: string;
41
+ orgId?: string;
42
+ modelId?: string;
43
+ tier?: string;
44
+ windowId?: string;
45
+ shared?: boolean;
46
+ }
47
+ /** Normalized limit entry for a single window or quota bucket. */
48
+ export interface UsageLimit {
49
+ /** Stable identifier for this limit entry. */
50
+ id: string;
51
+ /** Human label for display. */
52
+ label: string;
53
+ scope: UsageScope;
54
+ window?: UsageWindow;
55
+ amount: UsageAmount;
56
+ status?: UsageStatus;
57
+ notes?: string[];
58
+ }
59
+ /**
60
+ * Per-credit detail for a saved/banked rate-limit reset.
61
+ *
62
+ * Populated when the provider's listing endpoint returns individual credit
63
+ * metadata (e.g. OpenAI Codex `wham/rate-limit-reset-credits`). Callers that
64
+ * only need the count can ignore this; display layers use `expiresAt` to show
65
+ * when banked resets expire ([#3339](https://github.com/can1357/oh-my-pi/issues/3339)).
66
+ */
67
+ export interface UsageResetCreditDetail {
68
+ /** ISO timestamp when the credit was granted. */
69
+ grantedAt?: string;
70
+ /** ISO timestamp when the credit expires and can no longer be redeemed. */
71
+ expiresAt?: string;
72
+ /** Backend status, e.g. `available`, `redeemed`. */
73
+ status?: string;
74
+ }
75
+ /**
76
+ * Saved/banked rate-limit resets an account can redeem on demand.
77
+ *
78
+ * Surfaced by providers that let users defer a usage-window reset and spend it
79
+ * later (OpenAI Codex "saved rate limit resets"). The redeem itself is a
80
+ * separate, provider-specific action; this is the read-only count for display.
81
+ */
82
+ export interface UsageResetCredits {
83
+ /** Number of resets available to redeem right now. */
84
+ availableCount: number;
85
+ /** Individual credit details (expiry dates, etc.) when the provider exposes them. */
86
+ credits?: UsageResetCreditDetail[];
87
+ }
88
+ /** Aggregated usage report for a provider. */
89
+ export interface UsageReport {
90
+ provider: Provider;
91
+ fetchedAt: number;
92
+ limits: UsageLimit[];
93
+ /** Saved rate-limit resets the account can redeem, when the provider reports them. */
94
+ resetCredits?: UsageResetCredits;
95
+ /**
96
+ * Provider-wide disclaimers shown once above per-account sections.
97
+ * Use this for caveats that apply to every limit (e.g. "OMP-observed
98
+ * spend only"). Per-limit notes that differ per window (e.g. "Overage
99
+ * requests: N") stay on {@link UsageLimit.notes}.
100
+ */
101
+ notes?: string[];
102
+ metadata?: Record<string, unknown>;
103
+ raw?: unknown;
104
+ }
105
+ /**
106
+ * Resolve a limit's used fraction (0..1; >1 means overage) from whichever
107
+ * amount fields the provider populated. Precedence mirrors the usage UIs:
108
+ * explicit fraction > used/limit > percent-unit used > inverted remaining.
109
+ */
110
+ export declare function resolveUsedFraction(limit: UsageLimit): number | undefined;
111
+ /**
112
+ * One recorded usage-limit snapshot: a single limit window of one account at
113
+ * a point in time. The usage cache itself is latest-snapshot-only; history
114
+ * rows are appended by the auth storage layer whenever a fresh report is
115
+ * fetched, so limit utilization stays inspectable over time.
116
+ */
117
+ export interface UsageHistoryEntry {
118
+ /** Epoch ms the report was fetched. */
119
+ recordedAt: number;
120
+ provider: Provider;
121
+ /** Stable credential identity key (account/email/project derived). */
122
+ accountKey: string;
123
+ email?: string;
124
+ accountId?: string;
125
+ /** {@link UsageLimit.id} of the recorded window. */
126
+ limitId: string;
127
+ /** Human label of the limit. */
128
+ label: string;
129
+ windowLabel?: string;
130
+ /** Used fraction (0..1) when resolvable. */
131
+ usedFraction?: number;
132
+ status?: UsageStatus;
133
+ /** Epoch ms the window resets, when known. */
134
+ resetsAt?: number;
135
+ }
136
+ /** Filter for reading recorded usage history. */
137
+ export interface UsageHistoryQuery {
138
+ provider?: string;
139
+ /** Inclusive lower bound on {@link UsageHistoryEntry.recordedAt} (epoch ms). */
140
+ sinceMs?: number;
141
+ }
142
+ /** One observed provider request cost, attributed to the credential that made it. */
143
+ export interface UsageCostHistoryEntry {
144
+ /** Epoch ms the request completed. */
145
+ recordedAt: number;
146
+ provider: Provider;
147
+ /** Stable credential identity key (account/email/project/secret derived). */
148
+ accountKey: string;
149
+ /** Estimated request cost in USD. */
150
+ costUsd: number;
151
+ }
152
+ /** Filter for reading observed request costs. */
153
+ export interface UsageCostHistoryQuery {
154
+ provider?: string;
155
+ accountKey?: string;
156
+ /** Inclusive lower bound on {@link UsageCostHistoryEntry.recordedAt} (epoch ms). */
157
+ sinceMs?: number;
158
+ }
159
+ /**
160
+ * Aggregated request usage a client observed for one (provider, model) pair.
161
+ * Clients fold every completed request into per-pair buckets and flush them to
162
+ * the auth broker on a short cadence, so the broker can attribute token burn
163
+ * to the install that produced it.
164
+ */
165
+ export interface ObservedUsageEntry {
166
+ /** Epoch ms of the newest request folded into this bucket. */
167
+ at: number;
168
+ provider: Provider;
169
+ model: string;
170
+ /** Completed requests folded into this bucket. */
171
+ requests: number;
172
+ inputTokens: number;
173
+ outputTokens: number;
174
+ cacheReadTokens: number;
175
+ cacheWriteTokens: number;
176
+ /** Estimated USD cost of the folded requests (0 when unknown). */
177
+ costUsd: number;
178
+ }
179
+ /** One client's observed-usage report, keyed by its stable install id. */
180
+ export interface ClientUsageReport {
181
+ /** Stable per-machine install id — the client primary key. */
182
+ installId: string;
183
+ /** Human-readable machine name for display surfaces. */
184
+ hostname?: string;
185
+ entries: ObservedUsageEntry[];
186
+ }
187
+ /** Per-provider aggregate of one client's recorded usage. */
188
+ export interface ClientProviderUsage {
189
+ provider: string;
190
+ requests: number;
191
+ inputTokens: number;
192
+ outputTokens: number;
193
+ cacheReadTokens: number;
194
+ cacheWriteTokens: number;
195
+ costUsd: number;
196
+ }
197
+ /** One known client with its usage aggregates over the queried window. */
198
+ export interface ClientUsageClientSummary {
199
+ installId: string;
200
+ hostname?: string;
201
+ firstSeen: number;
202
+ lastSeen: number;
203
+ providers: ClientProviderUsage[];
204
+ }
205
+ /** Aggregated per-client usage recorded by the broker host. */
206
+ export interface ClientUsageSummary {
207
+ clients: ClientUsageClientSummary[];
208
+ }
209
+ export declare const usageUnitSchema: import("@linxiraos/pi-omptype").FluentType<"bytes" | "minutes" | "percent" | "requests" | "tokens" | "unknown" | "usd", "bytes" | "minutes" | "percent" | "requests" | "tokens" | "unknown" | "usd">;
210
+ export declare const usageStatusSchema: import("@linxiraos/pi-omptype").FluentType<"exhausted" | "ok" | "unknown" | "warning", "exhausted" | "ok" | "unknown" | "warning">;
211
+ export declare const usageWindowSchema: import("@linxiraos/pi-omptype").FluentType<{
212
+ durationMs?: number | undefined;
213
+ id: string;
214
+ label: string;
215
+ resetLabel?: string | undefined;
216
+ resetsAt?: number | undefined;
217
+ }, {
218
+ durationMs?: number | undefined;
219
+ id: string;
220
+ label: string;
221
+ resetLabel?: string | undefined;
222
+ resetsAt?: number | undefined;
223
+ }>;
224
+ export declare const usageAmountSchema: import("@linxiraos/pi-omptype").FluentType<{
225
+ limit?: number | undefined;
226
+ remaining?: number | undefined;
227
+ remainingFraction?: number | undefined;
228
+ unit: "bytes" | "minutes" | "percent" | "requests" | "tokens" | "unknown" | "usd";
229
+ used?: number | undefined;
230
+ usedFraction?: number | undefined;
231
+ }, {
232
+ limit?: number | undefined;
233
+ remaining?: number | undefined;
234
+ remainingFraction?: number | undefined;
235
+ unit: "bytes" | "minutes" | "percent" | "requests" | "tokens" | "unknown" | "usd";
236
+ used?: number | undefined;
237
+ usedFraction?: number | undefined;
238
+ }>;
239
+ export declare const usageScopeSchema: import("@linxiraos/pi-omptype").FluentType<{
240
+ accountId?: string | undefined;
241
+ modelId?: string | undefined;
242
+ orgId?: string | undefined;
243
+ projectId?: string | undefined;
244
+ provider: string;
245
+ shared?: boolean | undefined;
246
+ tier?: string | undefined;
247
+ windowId?: string | undefined;
248
+ }, {
249
+ accountId?: string | undefined;
250
+ modelId?: string | undefined;
251
+ orgId?: string | undefined;
252
+ projectId?: string | undefined;
253
+ provider: string;
254
+ shared?: boolean | undefined;
255
+ tier?: string | undefined;
256
+ windowId?: string | undefined;
257
+ }>;
258
+ export declare const usageLimitSchema: import("@linxiraos/pi-omptype").FluentType<{
259
+ amount: {
260
+ limit?: number | undefined;
261
+ remaining?: number | undefined;
262
+ remainingFraction?: number | undefined;
263
+ unit: "bytes" | "minutes" | "percent" | "requests" | "tokens" | "unknown" | "usd";
264
+ used?: number | undefined;
265
+ usedFraction?: number | undefined;
266
+ };
267
+ id: string;
268
+ label: string;
269
+ notes?: string[] | undefined;
270
+ scope: {
271
+ accountId?: string | undefined;
272
+ modelId?: string | undefined;
273
+ orgId?: string | undefined;
274
+ projectId?: string | undefined;
275
+ provider: string;
276
+ shared?: boolean | undefined;
277
+ tier?: string | undefined;
278
+ windowId?: string | undefined;
279
+ };
280
+ status?: "exhausted" | "ok" | "unknown" | "warning" | undefined;
281
+ window?: {
282
+ durationMs?: number | undefined;
283
+ id: string;
284
+ label: string;
285
+ resetLabel?: string | undefined;
286
+ resetsAt?: number | undefined;
287
+ } | undefined;
288
+ }, {
289
+ amount: {
290
+ limit?: number | undefined;
291
+ remaining?: number | undefined;
292
+ remainingFraction?: number | undefined;
293
+ unit: "bytes" | "minutes" | "percent" | "requests" | "tokens" | "unknown" | "usd";
294
+ used?: number | undefined;
295
+ usedFraction?: number | undefined;
296
+ };
297
+ id: string;
298
+ label: string;
299
+ notes?: string[] | undefined;
300
+ scope: {
301
+ accountId?: string | undefined;
302
+ modelId?: string | undefined;
303
+ orgId?: string | undefined;
304
+ projectId?: string | undefined;
305
+ provider: string;
306
+ shared?: boolean | undefined;
307
+ tier?: string | undefined;
308
+ windowId?: string | undefined;
309
+ };
310
+ status?: "exhausted" | "ok" | "unknown" | "warning" | undefined;
311
+ window?: {
312
+ durationMs?: number | undefined;
313
+ id: string;
314
+ label: string;
315
+ resetLabel?: string | undefined;
316
+ resetsAt?: number | undefined;
317
+ } | undefined;
318
+ }>;
319
+ export declare const usageResetCreditDetailSchema: import("@linxiraos/pi-omptype").FluentType<{
320
+ expiresAt?: string | undefined;
321
+ grantedAt?: string | undefined;
322
+ status?: string | undefined;
323
+ }, {
324
+ expiresAt?: string | undefined;
325
+ grantedAt?: string | undefined;
326
+ status?: string | undefined;
327
+ }>;
328
+ export declare const usageResetCreditsSchema: import("@linxiraos/pi-omptype").FluentType<{
329
+ availableCount: number;
330
+ credits?: {
331
+ expiresAt?: string | undefined;
332
+ grantedAt?: string | undefined;
333
+ status?: string | undefined;
334
+ }[] | undefined;
335
+ }, {
336
+ availableCount: number;
337
+ credits?: {
338
+ expiresAt?: string | undefined;
339
+ grantedAt?: string | undefined;
340
+ status?: string | undefined;
341
+ }[] | undefined;
342
+ }>;
343
+ export declare const usageReportSchema: import("@linxiraos/pi-omptype").FluentType<{
344
+ fetchedAt: number;
345
+ limits: {
346
+ amount: {
347
+ limit?: number | undefined;
348
+ remaining?: number | undefined;
349
+ remainingFraction?: number | undefined;
350
+ unit: "bytes" | "minutes" | "percent" | "requests" | "tokens" | "unknown" | "usd";
351
+ used?: number | undefined;
352
+ usedFraction?: number | undefined;
353
+ };
354
+ id: string;
355
+ label: string;
356
+ notes?: string[] | undefined;
357
+ scope: {
358
+ accountId?: string | undefined;
359
+ modelId?: string | undefined;
360
+ orgId?: string | undefined;
361
+ projectId?: string | undefined;
362
+ provider: string;
363
+ shared?: boolean | undefined;
364
+ tier?: string | undefined;
365
+ windowId?: string | undefined;
366
+ };
367
+ status?: "exhausted" | "ok" | "unknown" | "warning" | undefined;
368
+ window?: {
369
+ durationMs?: number | undefined;
370
+ id: string;
371
+ label: string;
372
+ resetLabel?: string | undefined;
373
+ resetsAt?: number | undefined;
374
+ } | undefined;
375
+ }[];
376
+ metadata?: Record<string, unknown> | undefined;
377
+ notes?: string[] | undefined;
378
+ provider: string;
379
+ raw?: unknown;
380
+ resetCredits?: {
381
+ availableCount: number;
382
+ credits?: {
383
+ expiresAt?: string | undefined;
384
+ grantedAt?: string | undefined;
385
+ status?: string | undefined;
386
+ }[] | undefined;
387
+ } | undefined;
388
+ }, {
389
+ fetchedAt: number;
390
+ limits: {
391
+ amount: {
392
+ limit?: number | undefined;
393
+ remaining?: number | undefined;
394
+ remainingFraction?: number | undefined;
395
+ unit: "bytes" | "minutes" | "percent" | "requests" | "tokens" | "unknown" | "usd";
396
+ used?: number | undefined;
397
+ usedFraction?: number | undefined;
398
+ };
399
+ id: string;
400
+ label: string;
401
+ notes?: string[] | undefined;
402
+ scope: {
403
+ accountId?: string | undefined;
404
+ modelId?: string | undefined;
405
+ orgId?: string | undefined;
406
+ projectId?: string | undefined;
407
+ provider: string;
408
+ shared?: boolean | undefined;
409
+ tier?: string | undefined;
410
+ windowId?: string | undefined;
411
+ };
412
+ status?: "exhausted" | "ok" | "unknown" | "warning" | undefined;
413
+ window?: {
414
+ durationMs?: number | undefined;
415
+ id: string;
416
+ label: string;
417
+ resetLabel?: string | undefined;
418
+ resetsAt?: number | undefined;
419
+ } | undefined;
420
+ }[];
421
+ metadata?: Record<string, unknown> | undefined;
422
+ notes?: string[] | undefined;
423
+ provider: string;
424
+ raw?: unknown;
425
+ resetCredits?: {
426
+ availableCount: number;
427
+ credits?: {
428
+ expiresAt?: string | undefined;
429
+ grantedAt?: string | undefined;
430
+ status?: string | undefined;
431
+ }[] | undefined;
432
+ } | undefined;
433
+ }>;
434
+ /** Optional logger for usage fetchers. */
435
+ export interface UsageLogger {
436
+ debug(message: string, meta?: Record<string, unknown>): void;
437
+ warn(message: string, meta?: Record<string, unknown>): void;
438
+ }
439
+ /** Credential bundle for usage endpoints. */
440
+ export interface UsageCredential {
441
+ type: "api_key" | "oauth";
442
+ apiKey?: string;
443
+ accessToken?: string;
444
+ refreshToken?: string;
445
+ expiresAt?: number;
446
+ accountId?: string;
447
+ projectId?: string;
448
+ email?: string;
449
+ /** Organization/workspace the credential is scoped to (see OAuthCredentials.orgId). */
450
+ orgId?: string;
451
+ /** Human-readable organization name for display. */
452
+ orgName?: string;
453
+ enterpriseUrl?: string;
454
+ metadata?: Record<string, unknown>;
455
+ apiEndpoint?: string;
456
+ }
457
+ /** Parameters provided to a usage fetcher. */
458
+ export interface UsageFetchParams {
459
+ provider: Provider;
460
+ credential: UsageCredential;
461
+ /** Stable credential identity key derived by the auth storage layer. */
462
+ accountKey?: string;
463
+ baseUrl?: string;
464
+ signal?: AbortSignal;
465
+ }
466
+ /** Shared runtime utilities for fetchers. */
467
+ export interface UsageFetchContext {
468
+ fetch: FetchImpl;
469
+ logger?: UsageLogger;
470
+ retryWait?: (delayMs: number, signal?: AbortSignal) => Promise<void>;
471
+ /** Observed request-cost history for providers without upstream usage APIs. */
472
+ listUsageCosts?: (query?: UsageCostHistoryQuery) => UsageCostHistoryEntry[];
473
+ }
474
+ /** Provider implementation for fetching usage information. */
475
+ export interface UsageProvider {
476
+ id: Provider;
477
+ fetchUsage(params: UsageFetchParams, ctx: UsageFetchContext): Promise<UsageReport | null>;
478
+ /** Parse provider rate-limit response headers (lowercased keys) into a usage report, if supported. */
479
+ parseRateLimitHeaders?(headers: Record<string, string>, now?: number): UsageReport | null;
480
+ supports?(params: UsageFetchParams): boolean;
481
+ /** True when fetchUsage contacts upstream and can authenticate the credential for health checks. */
482
+ validatesCredentials?: boolean;
483
+ /** Whether a failed refresh may serve the previous successful report. Defaults to true. */
484
+ retainLastGoodOnFailure?: boolean;
485
+ }
486
+ /** Request context used when ranking usage for a specific model. */
487
+ export interface CredentialRankingContext {
488
+ /** Provider model id, when the caller is selecting a credential for one model. */
489
+ modelId?: string;
490
+ }
491
+ /** Strategy for usage-based credential ranking. Providers implement this to opt into smart credential selection. */
492
+ export interface CredentialRankingStrategy {
493
+ /** Extract the primary (short) and secondary (long) window limits from a usage report. */
494
+ findWindowLimits(report: UsageReport, context?: CredentialRankingContext): {
495
+ primary?: UsageLimit;
496
+ secondary?: UsageLimit;
497
+ };
498
+ /**
499
+ * Restrict limits to the ones relevant for the requested model before
500
+ * credential-wide exhaustion checks and ranking. Providers with shared
501
+ * account-wide quotas can omit this and use all limits.
502
+ */
503
+ scopeLimits?(report: UsageReport, context?: CredentialRankingContext): UsageLimit[];
504
+ /**
505
+ * Return a provider-local backoff scope for the requested model. Providers
506
+ * with backend-specific quotas use this so one exhausted model family does
507
+ * not block unrelated families on the same OAuth credential.
508
+ */
509
+ blockScope?(context?: CredentialRankingContext): string | undefined;
510
+ /**
511
+ * Scopes that apply to a request, most specific first. With a context, the
512
+ * request's own scope plus any legacy catch-all scope whose blocks still
513
+ * apply to everything. Without one — reconciliation runs with no request —
514
+ * every scope whose blocks must be healed.
515
+ *
516
+ * A provider that scopes backoff by model family must implement this, or a
517
+ * block written under one scope is invisible to requests and to healing.
518
+ */
519
+ blockScopes?(context?: CredentialRankingContext): string[];
520
+ /** Fallback window durations (ms) when limits don't specify durationMs. */
521
+ windowDefaults: {
522
+ primaryMs: number;
523
+ secondaryMs: number;
524
+ };
525
+ /** Optional: priority boost for specific credential states (e.g., fresh 5h ticker start). */
526
+ hasPriorityBoost?(primary: UsageLimit | undefined): boolean;
527
+ }
@@ -0,0 +1,25 @@
1
+ export interface AbortSourceTracker {
2
+ requestAbortController: AbortController;
3
+ requestSignal: AbortSignal;
4
+ abortLocally(reason: Error): Error;
5
+ getLocalAbortReason(): Error | undefined;
6
+ wasCallerAbort(): boolean;
7
+ }
8
+ /**
9
+ * Tracks whether a merged request signal was aborted by the caller or by provider-local logic.
10
+ *
11
+ * Caller aborts always take priority. When both the caller and a local watchdog fire near
12
+ * each other, the merged `requestSignal.reason` reflects whichever AbortController called
13
+ * `.abort()` first — but ordering is racy and not meaningful for upstream consumers. What
14
+ * matters is intent: if the caller's signal aborted, the request was cancelled by the
15
+ * caller, and any local watchdog reason is incidental and **MUST NOT** be surfaced as a
16
+ * retryable transient error (which would cause auto-retry to re-enter streaming and leave
17
+ * the UI showing a spinner the user already tried to cancel).
18
+ */
19
+ export declare function createAbortSourceTracker(callerSignal?: AbortSignal): AbortSourceTracker;
20
+ /**
21
+ * Race a shared promise against a caller's AbortSignal without coupling the
22
+ * underlying work to that signal. The shared promise keeps running (and caches
23
+ * its result) even when an individual caller bails out.
24
+ */
25
+ export declare function raceWithSignal<T>(promise: Promise<T>, signal: AbortSignal | undefined): Promise<T>;
@@ -0,0 +1,35 @@
1
+ /** Auth configuration for Anthropic */
2
+ export interface AnthropicAuthConfig {
3
+ apiKey: string;
4
+ baseUrl: string;
5
+ isOAuth: boolean;
6
+ }
7
+ export declare function resolveAnthropicBaseUrlFromEnv(): string | undefined;
8
+ /**
9
+ * Checks if a token is an OAuth token by looking for sk-ant-oat prefix.
10
+ */
11
+ export declare function isOAuthToken(apiKey: string): boolean;
12
+ /**
13
+ * Build an {@link AnthropicAuthConfig} from an already-resolved API key.
14
+ *
15
+ * `apiKey` is whatever the caller chose for `Authorization`/`x-api-key` —
16
+ * usually `authStorage.getApiKey("anthropic")`. `baseUrl` overrides the
17
+ * env-derived base; pass `undefined` to fall back to FOUNDRY/ANTHROPIC env
18
+ * resolution and finally `DEFAULT_BASE_URL`.
19
+ *
20
+ * `isOAuth` is derived from the token prefix so the helper stays pure: callers
21
+ * never have to thread the OAuth flag through their own resolution logic.
22
+ */
23
+ export declare function buildAnthropicAuthConfig(apiKey: string, baseUrl?: string): AnthropicAuthConfig;
24
+ /**
25
+ * Builds HTTP headers for Anthropic API requests (search variant).
26
+ *
27
+ * Forwards `ANTHROPIC_CUSTOM_HEADERS` when the resolver deems them applicable
28
+ * (Foundry mode, or a non-Anthropic base URL — typically an enterprise
29
+ * gateway), matching the streaming path so web search behaves identically.
30
+ */
31
+ export declare function buildAnthropicSearchHeaders(auth: AnthropicAuthConfig): Record<string, string>;
32
+ /**
33
+ * Builds the full API URL for Anthropic messages endpoint.
34
+ */
35
+ export declare function buildAnthropicUrl(auth: AnthropicAuthConfig): string;
@@ -0,0 +1,17 @@
1
+ /** INI sections with `profile ` / `sso-session ` prefixes normalized. */
2
+ export type AwsIniFile = Record<string, Record<string, string>>;
3
+ export declare function parseAwsIni(text: string): AwsIniFile;
4
+ /** Resolve the selected shared-credentials profile. */
5
+ export declare function resolveAwsProfile(profile?: string): string;
6
+ /**
7
+ * Whether the shared config file participates in profile/region resolution.
8
+ * Explicit profile selection enables it; the implicit default profile follows
9
+ * the AWS SDK's `AWS_SDK_LOAD_CONFIG` opt-in.
10
+ */
11
+ export declare function shouldLoadAwsSharedConfig(profile?: string): boolean;
12
+ export declare function resolveAwsProfileRegion(profile?: string): string | undefined;
13
+ /** Region selected by the environment or active shared-config profile. */
14
+ export declare function resolveAwsAmbientRegion(profile?: string): string | undefined;
15
+ /** Resolve the region precedence shared by AWS transports and credential exchanges. */
16
+ export declare function resolveAwsRegion(explicitRegion?: string, profile?: string): string;
17
+ export declare function hasConfiguredAwsProfile(profile?: string): boolean;
@@ -0,0 +1,62 @@
1
+ /** Stores streamed tool-call argument JSON for live renderers and parser recovery. */
2
+ export declare const kStreamingPartialJson: unique symbol;
3
+ /** Carries streamed tool-call argument JSON without exposing a string-keyed property. */
4
+ export type StreamingPartialJsonCarrier = object & {
5
+ [kStreamingPartialJson]?: string;
6
+ };
7
+ /** Reads streamed tool-call argument JSON from a block or event snapshot. */
8
+ export declare function getStreamingPartialJson(block: StreamingPartialJsonCarrier | null | undefined): string | undefined;
9
+ /** Writes streamed tool-call argument JSON to a block or clears it with `undefined`. */
10
+ export declare function setStreamingPartialJson(block: StreamingPartialJsonCarrier, value: string | undefined): void;
11
+ /** Clears streamed tool-call argument JSON without deleting or changing object shape. */
12
+ export declare function clearStreamingPartialJson(block: StreamingPartialJsonCarrier): void;
13
+ /** Stores a provider-local stream block index without exposing a string-keyed property. */
14
+ export declare const kStreamingBlockIndex: unique symbol;
15
+ /** Stores the last parsed argument prefix length for throttled streaming JSON parsing. */
16
+ export declare const kStreamingLastParseLen: unique symbol;
17
+ /**
18
+ * The Cursor interaction envelope's `call_id` for a streamed tool-call block.
19
+ *
20
+ * Tracked separately from the block's own `id` because they are NOT the same
21
+ * key: MCP and Pi blocks are filed under the id inside the call's `args`, which
22
+ * is what the exec channel pairs its result under, while every streamed
23
+ * `ToolCall*Update` correlates on the envelope's `call_id`. Matching
24
+ * completions against the block id would mis-route every call whose args carry
25
+ * their own id.
26
+ */
27
+ export declare const kStreamingEnvelopeId: unique symbol;
28
+ /** Marks streamed tool-call arguments that already received an authoritative done payload. */
29
+ export declare const kStreamingArgumentsDone: unique symbol;
30
+ /** Classifies Cursor's in-flight tool-call kind without leaking provider-private state. */
31
+ export declare const kStreamingBlockKind: unique symbol;
32
+ /**
33
+ * Marks a `toolCall` content block that Cursor's exec channel already
34
+ * executed server-side (via the coding-agent bridge) and whose result is
35
+ * buffered separately for emission via the assistant-loop stream.
36
+ *
37
+ * `agent-loop.ts` MUST skip execution of blocks carrying this marker —
38
+ * treating them as a fresh runnable tool call would run the same
39
+ * side-effecting tool (bash, write, delete, …) a second time. Symbol-keyed
40
+ * so it never persists across the JSONL round-trip, where rebuild instead
41
+ * pairs the block with its already-persisted `toolResult` message by id.
42
+ */
43
+ export declare const kCursorExecResolved: unique symbol;
44
+ /** Carries the resolved marker without exposing a string-keyed property. */
45
+ export type CursorExecResolvedCarrier = object & {
46
+ [kCursorExecResolved]?: true;
47
+ };
48
+ /**
49
+ * Marks a text block synthesized by cross-model thinking demotion in
50
+ * `transformMessages`. Converters that flatten adjacent text blocks into one
51
+ * string (openai-completions) insert a paragraph separator after marked
52
+ * blocks; unmarked adjacent blocks keep their original byte sequence.
53
+ * Symbol-keyed so the marker never persists across the JSONL round-trip and
54
+ * never reaches the wire.
55
+ */
56
+ export declare const kDemotedThinking: unique symbol;
57
+ /** Carries the demoted-thinking marker without exposing a string-keyed property. */
58
+ export type DemotedThinkingCarrier = object & {
59
+ [kDemotedThinking]?: boolean;
60
+ };
61
+ /** True for text blocks synthesized by cross-model thinking demotion. */
62
+ export declare function isDemotedThinking(block: DemotedThinkingCarrier | null | undefined): boolean;
@@ -0,0 +1,16 @@
1
+ /**
2
+ * A UUID-shaped string: five hex groups in the canonical 8-4-4-4-12 layout.
3
+ *
4
+ * NOT a spec-compliant RFC 4122 UUID — the version/variant nibbles are left as
5
+ * raw hash output — but the shape passes everywhere a UUID string is expected.
6
+ */
7
+ export type DeterministicUuid = `${string}-${string}-${string}-${string}-${string}`;
8
+ /**
9
+ * Format the leading 128 bits of `seed`'s SHA-256 digest as a v4-shape UUID
10
+ * (8-4-4-4-12 hex groups).
11
+ *
12
+ * Deterministic: identical seeds always map to the same id, so callers get
13
+ * stable ids across requests / conversation turns (reusing message-blob ids,
14
+ * keying prompt caches) without persisting a seed→id mapping.
15
+ */
16
+ export declare function deterministicUuid(seed: string): DeterministicUuid;