@linxiraos/pi-ai 1.0.0 → 1.0.2

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 (355) hide show
  1. package/CHANGELOG.md +123 -30
  2. package/package.json +135 -136
  3. package/src/auth/sqlite-credential-store.ts +0 -56
  4. package/src/auth-retry.ts +5 -4
  5. package/src/auth-storage.ts +122 -112
  6. package/src/dialect/owned-stream.ts +3 -0
  7. package/src/error/auth-classify.ts +7 -6
  8. package/src/error/aws.ts +5 -1
  9. package/src/error/flags.ts +25 -1
  10. package/src/error/provider.ts +6 -5
  11. package/src/error/rate-limit.ts +71 -1
  12. package/src/providers/amazon-bedrock.ts +38 -0
  13. package/src/providers/anthropic-client.ts +6 -10
  14. package/src/providers/anthropic.ts +107 -259
  15. package/src/providers/aws-credentials.ts +222 -29
  16. package/src/providers/azure-openai-responses.ts +1 -0
  17. package/src/providers/cursor/exec-modern.ts +1 -0
  18. package/src/providers/cursor-pi-args.ts +22 -0
  19. package/src/providers/cursor.ts +81 -1
  20. package/src/providers/devin.ts +3 -3
  21. package/src/providers/google-antigravity-forced-tool.md +1 -0
  22. package/src/providers/google-gemini-cli.ts +83 -40
  23. package/src/providers/google-shared.ts +22 -8
  24. package/src/providers/ollama.ts +15 -3
  25. package/src/providers/openai-codex/request-transformer.ts +47 -21
  26. package/src/providers/openai-codex-responses.ts +3 -3
  27. package/src/providers/openai-reasoning-fallback.ts +21 -8
  28. package/src/providers/openai-responses.ts +77 -12
  29. package/src/providers/openai-shared.ts +114 -15
  30. package/src/providers/pi-native-server.ts +1 -0
  31. package/src/providers/register-builtins.ts +18 -14
  32. package/src/providers/vision-guard.ts +15 -3
  33. package/src/registry/amazon-bedrock.ts +9 -14
  34. package/src/registry/api-key-login.ts +26 -12
  35. package/src/registry/aws.ts +16 -8
  36. package/src/registry/cloudflare-ai-gateway.ts +10 -29
  37. package/src/registry/kagi.ts +11 -29
  38. package/src/registry/litellm.ts +11 -29
  39. package/src/registry/llama-cpp.ts +11 -21
  40. package/src/registry/lm-studio.ts +9 -20
  41. package/src/registry/oauth/callback-server.ts +93 -5
  42. package/src/registry/oauth/google-antigravity.ts +99 -44
  43. package/src/registry/oauth/perplexity.ts +32 -4
  44. package/src/registry/parallel.ts +10 -28
  45. package/src/registry/tavily.ts +9 -27
  46. package/src/registry/together.ts +7 -3
  47. package/src/registry/vercel-ai-gateway.ts +10 -28
  48. package/src/registry/vllm.ts +11 -21
  49. package/src/stream.ts +459 -53
  50. package/src/types.ts +23 -0
  51. package/src/usage/alibaba-token-plan.ts +8 -15
  52. package/src/usage/claude.ts +12 -19
  53. package/src/usage/cursor.ts +179 -59
  54. package/src/usage/gemini.ts +4 -3
  55. package/src/usage/github-copilot.ts +3 -2
  56. package/src/usage/google-antigravity.ts +10 -17
  57. package/src/usage/kimi.ts +35 -17
  58. package/src/usage/minimax-code.ts +7 -27
  59. package/src/usage/openai-codex-reset.ts +3 -2
  60. package/src/usage/openai-codex.ts +5 -5
  61. package/src/usage/opencode-go.ts +170 -60
  62. package/src/usage/shared.ts +33 -10
  63. package/src/usage/synthetic.ts +4 -11
  64. package/src/usage/umans.ts +2 -2
  65. package/src/usage/xai-oauth.ts +62 -34
  66. package/src/usage/zai.ts +4 -6
  67. package/src/usage.ts +0 -20
  68. package/src/utils/aws-profile.ts +39 -1
  69. package/src/utils/block-symbols.ts +18 -0
  70. package/src/utils/empty-completion-retry.ts +4 -1
  71. package/src/utils/leaked-thinking-stream.ts +3 -0
  72. package/src/utils/openrouter-headers.ts +4 -4
  73. package/src/utils/thinking-loop.ts +17 -38
  74. package/dist/types/api-registry.d.ts +0 -30
  75. package/dist/types/auth/sqlite-credential-store.d.ts +0 -117
  76. package/dist/types/auth-broker/client.d.ts +0 -93
  77. package/dist/types/auth-broker/discover.d.ts +0 -39
  78. package/dist/types/auth-broker/index.d.ts +0 -7
  79. package/dist/types/auth-broker/refresher.d.ts +0 -25
  80. package/dist/types/auth-broker/remote-store.d.ts +0 -136
  81. package/dist/types/auth-broker/server.d.ts +0 -48
  82. package/dist/types/auth-broker/snapshot-cache.d.ts +0 -17
  83. package/dist/types/auth-broker/types.d.ts +0 -152
  84. package/dist/types/auth-broker/wire-schema-resource.d.ts +0 -53
  85. package/dist/types/auth-broker/wire-schemas.d.ts +0 -5
  86. package/dist/types/auth-gateway/http.d.ts +0 -56
  87. package/dist/types/auth-gateway/index.d.ts +0 -3
  88. package/dist/types/auth-gateway/server.d.ts +0 -36
  89. package/dist/types/auth-gateway/types.d.ts +0 -127
  90. package/dist/types/auth-retry.d.ts +0 -150
  91. package/dist/types/auth-storage.d.ts +0 -1258
  92. package/dist/types/dialect/anthropic.d.ts +0 -15
  93. package/dist/types/dialect/catalog.d.ts +0 -3
  94. package/dist/types/dialect/coercion.d.ts +0 -23
  95. package/dist/types/dialect/deepseek.d.ts +0 -14
  96. package/dist/types/dialect/demotion.d.ts +0 -30
  97. package/dist/types/dialect/examples.d.ts +0 -18
  98. package/dist/types/dialect/factory.d.ts +0 -3
  99. package/dist/types/dialect/fenced-thinking.d.ts +0 -53
  100. package/dist/types/dialect/gemini.d.ts +0 -17
  101. package/dist/types/dialect/gemma.d.ts +0 -15
  102. package/dist/types/dialect/glm.d.ts +0 -9
  103. package/dist/types/dialect/harmony.d.ts +0 -8
  104. package/dist/types/dialect/hermes.d.ts +0 -9
  105. package/dist/types/dialect/history.d.ts +0 -3
  106. package/dist/types/dialect/index.d.ts +0 -11
  107. package/dist/types/dialect/inventory.d.ts +0 -9
  108. package/dist/types/dialect/kimi.d.ts +0 -14
  109. package/dist/types/dialect/minimax.d.ts +0 -3
  110. package/dist/types/dialect/owned-stream.d.ts +0 -4
  111. package/dist/types/dialect/qwen3.d.ts +0 -9
  112. package/dist/types/dialect/rendering.d.ts +0 -54
  113. package/dist/types/dialect/thinking.d.ts +0 -6
  114. package/dist/types/dialect/types.d.ts +0 -68
  115. package/dist/types/dialect/xml.d.ts +0 -9
  116. package/dist/types/error/abort.d.ts +0 -14
  117. package/dist/types/error/auth-classify.d.ts +0 -20
  118. package/dist/types/error/auth.d.ts +0 -27
  119. package/dist/types/error/aws.d.ts +0 -27
  120. package/dist/types/error/classes.d.ts +0 -106
  121. package/dist/types/error/finalize.d.ts +0 -39
  122. package/dist/types/error/flags.d.ts +0 -94
  123. package/dist/types/error/format.d.ts +0 -20
  124. package/dist/types/error/gateway.d.ts +0 -20
  125. package/dist/types/error/index.d.ts +0 -14
  126. package/dist/types/error/oauth.d.ts +0 -43
  127. package/dist/types/error/provider.d.ts +0 -42
  128. package/dist/types/error/rate-limit.d.ts +0 -80
  129. package/dist/types/error/retryable.d.ts +0 -27
  130. package/dist/types/error/validation.d.ts +0 -32
  131. package/dist/types/index.d.ts +0 -51
  132. package/dist/types/provider-details.d.ts +0 -24
  133. package/dist/types/providers/amazon-bedrock.d.ts +0 -39
  134. package/dist/types/providers/anthropic-client.d.ts +0 -106
  135. package/dist/types/providers/anthropic-messages-server-schema.d.ts +0 -937
  136. package/dist/types/providers/anthropic-messages-server.d.ts +0 -17
  137. package/dist/types/providers/anthropic-wire.d.ts +0 -345
  138. package/dist/types/providers/anthropic.d.ts +0 -261
  139. package/dist/types/providers/aws-credentials.d.ts +0 -48
  140. package/dist/types/providers/aws-eventstream.d.ts +0 -39
  141. package/dist/types/providers/aws-sigv4.d.ts +0 -55
  142. package/dist/types/providers/azure-openai-responses.d.ts +0 -16
  143. package/dist/types/providers/bedrock-mantle.d.ts +0 -13
  144. package/dist/types/providers/claude-code-fingerprint.d.ts +0 -19
  145. package/dist/types/providers/cowork-fetch.d.ts +0 -3
  146. package/dist/types/providers/cursor/exec-modern.d.ts +0 -98
  147. package/dist/types/providers/cursor-pi-args.d.ts +0 -105
  148. package/dist/types/providers/cursor.d.ts +0 -221
  149. package/dist/types/providers/devin.d.ts +0 -12
  150. package/dist/types/providers/error-message.d.ts +0 -25
  151. package/dist/types/providers/github-copilot-headers.d.ts +0 -40
  152. package/dist/types/providers/gitlab-duo-workflow.d.ts +0 -254
  153. package/dist/types/providers/gitlab-duo.d.ts +0 -27
  154. package/dist/types/providers/google-auth.d.ts +0 -24
  155. package/dist/types/providers/google-gemini-cli.d.ts +0 -120
  156. package/dist/types/providers/google-shared.d.ts +0 -203
  157. package/dist/types/providers/google-types.d.ts +0 -155
  158. package/dist/types/providers/google-vertex.d.ts +0 -7
  159. package/dist/types/providers/google.d.ts +0 -4
  160. package/dist/types/providers/grammar.d.ts +0 -1
  161. package/dist/types/providers/kimi.d.ts +0 -27
  162. package/dist/types/providers/mock.d.ts +0 -179
  163. package/dist/types/providers/ollama.d.ts +0 -8
  164. package/dist/types/providers/openai-anthropic-shim.d.ts +0 -35
  165. package/dist/types/providers/openai-chat-server-schema.d.ts +0 -1311
  166. package/dist/types/providers/openai-chat-server.d.ts +0 -16
  167. package/dist/types/providers/openai-chat-wire.d.ts +0 -669
  168. package/dist/types/providers/openai-codex/request-transformer.d.ts +0 -109
  169. package/dist/types/providers/openai-codex/response-handler.d.ts +0 -26
  170. package/dist/types/providers/openai-codex-responses.d.ts +0 -238
  171. package/dist/types/providers/openai-completions.d.ts +0 -48
  172. package/dist/types/providers/openai-reasoning-fallback.d.ts +0 -25
  173. package/dist/types/providers/openai-responses-server-schema.d.ts +0 -1314
  174. package/dist/types/providers/openai-responses-server.d.ts +0 -17
  175. package/dist/types/providers/openai-responses-wire.d.ts +0 -6099
  176. package/dist/types/providers/openai-responses.d.ts +0 -131
  177. package/dist/types/providers/openai-shared.d.ts +0 -624
  178. package/dist/types/providers/pi-native-client.d.ts +0 -13
  179. package/dist/types/providers/pi-native-server.d.ts +0 -69
  180. package/dist/types/providers/register-builtins.d.ts +0 -37
  181. package/dist/types/providers/synthetic.d.ts +0 -26
  182. package/dist/types/providers/transform-messages.d.ts +0 -32
  183. package/dist/types/providers/vision-guard.d.ts +0 -20
  184. package/dist/types/registry/aiand.d.ts +0 -7
  185. package/dist/types/registry/aimlapi.d.ts +0 -4
  186. package/dist/types/registry/alibaba-coding-plan.d.ts +0 -8
  187. package/dist/types/registry/alibaba-token-plan.d.ts +0 -18
  188. package/dist/types/registry/amazon-bedrock.d.ts +0 -5
  189. package/dist/types/registry/anthropic.d.ts +0 -10
  190. package/dist/types/registry/api-key-login.d.ts +0 -42
  191. package/dist/types/registry/api-key-validation.d.ts +0 -43
  192. package/dist/types/registry/aws.d.ts +0 -13
  193. package/dist/types/registry/azure.d.ts +0 -4
  194. package/dist/types/registry/baseten.d.ts +0 -7
  195. package/dist/types/registry/bedrock-mantle.d.ts +0 -22
  196. package/dist/types/registry/cerebras.d.ts +0 -7
  197. package/dist/types/registry/cloudflare-ai-gateway.d.ts +0 -13
  198. package/dist/types/registry/coreweave.d.ts +0 -7
  199. package/dist/types/registry/cursor.d.ts +0 -7
  200. package/dist/types/registry/deepseek.d.ts +0 -8
  201. package/dist/types/registry/derived.d.ts +0 -5
  202. package/dist/types/registry/devin.d.ts +0 -8
  203. package/dist/types/registry/exa.d.ts +0 -8
  204. package/dist/types/registry/firepass.d.ts +0 -16
  205. package/dist/types/registry/fireworks.d.ts +0 -7
  206. package/dist/types/registry/github-copilot.d.ts +0 -7
  207. package/dist/types/registry/gitlab-duo-workflow.d.ts +0 -10
  208. package/dist/types/registry/gitlab-duo.d.ts +0 -9
  209. package/dist/types/registry/gmi-cloud.d.ts +0 -7
  210. package/dist/types/registry/google-antigravity.d.ts +0 -9
  211. package/dist/types/registry/google-gemini-cli.d.ts +0 -9
  212. package/dist/types/registry/google-vertex.d.ts +0 -5
  213. package/dist/types/registry/google.d.ts +0 -4
  214. package/dist/types/registry/groq.d.ts +0 -4
  215. package/dist/types/registry/huggingface.d.ts +0 -7
  216. package/dist/types/registry/index.d.ts +0 -4
  217. package/dist/types/registry/kagi.d.ts +0 -14
  218. package/dist/types/registry/kilo.d.ts +0 -7
  219. package/dist/types/registry/kimi-code.d.ts +0 -7
  220. package/dist/types/registry/litellm.d.ts +0 -13
  221. package/dist/types/registry/llama-cpp.d.ts +0 -8
  222. package/dist/types/registry/lm-studio.d.ts +0 -8
  223. package/dist/types/registry/meta.d.ts +0 -7
  224. package/dist/types/registry/minimax-code-cn.d.ts +0 -6
  225. package/dist/types/registry/minimax-code.d.ts +0 -6
  226. package/dist/types/registry/minimax.d.ts +0 -4
  227. package/dist/types/registry/mistral.d.ts +0 -4
  228. package/dist/types/registry/moonshot.d.ts +0 -7
  229. package/dist/types/registry/nanogpt.d.ts +0 -7
  230. package/dist/types/registry/novita.d.ts +0 -6
  231. package/dist/types/registry/nvidia.d.ts +0 -7
  232. package/dist/types/registry/oauth/anthropic-constants.d.ts +0 -12
  233. package/dist/types/registry/oauth/anthropic.d.ts +0 -24
  234. package/dist/types/registry/oauth/callback-server.d.ts +0 -74
  235. package/dist/types/registry/oauth/cursor.d.ts +0 -16
  236. package/dist/types/registry/oauth/device-code.d.ts +0 -25
  237. package/dist/types/registry/oauth/devin.d.ts +0 -5
  238. package/dist/types/registry/oauth/github-copilot.d.ts +0 -30
  239. package/dist/types/registry/oauth/gitlab-duo-workflow.d.ts +0 -6
  240. package/dist/types/registry/oauth/gitlab-duo.d.ts +0 -3
  241. package/dist/types/registry/oauth/google-antigravity.d.ts +0 -11
  242. package/dist/types/registry/oauth/google-gemini-cli.d.ts +0 -22
  243. package/dist/types/registry/oauth/google-oauth-shared.d.ts +0 -56
  244. package/dist/types/registry/oauth/index.d.ts +0 -45
  245. package/dist/types/registry/oauth/kimi.d.ts +0 -21
  246. package/dist/types/registry/oauth/minimax-code.d.ts +0 -27
  247. package/dist/types/registry/oauth/openai-codex.d.ts +0 -33
  248. package/dist/types/registry/oauth/opencode.d.ts +0 -18
  249. package/dist/types/registry/oauth/perplexity.d.ts +0 -9
  250. package/dist/types/registry/oauth/pkce.d.ts +0 -8
  251. package/dist/types/registry/oauth/types.d.ts +0 -87
  252. package/dist/types/registry/oauth/wafer.d.ts +0 -1
  253. package/dist/types/registry/oauth/xai-oauth.d.ts +0 -46
  254. package/dist/types/registry/oauth/xiaomi.d.ts +0 -25
  255. package/dist/types/registry/oauth/zai.d.ts +0 -25
  256. package/dist/types/registry/ollama-cloud.d.ts +0 -7
  257. package/dist/types/registry/ollama.d.ts +0 -12
  258. package/dist/types/registry/openai-codex-device.d.ts +0 -8
  259. package/dist/types/registry/openai-codex.d.ts +0 -9
  260. package/dist/types/registry/openai.d.ts +0 -4
  261. package/dist/types/registry/opencode-go.d.ts +0 -6
  262. package/dist/types/registry/opencode-zen.d.ts +0 -6
  263. package/dist/types/registry/openrouter.d.ts +0 -13
  264. package/dist/types/registry/parallel.d.ts +0 -14
  265. package/dist/types/registry/perplexity.d.ts +0 -7
  266. package/dist/types/registry/qianfan.d.ts +0 -7
  267. package/dist/types/registry/qwen-portal.d.ts +0 -7
  268. package/dist/types/registry/registry.d.ts +0 -367
  269. package/dist/types/registry/sakana.d.ts +0 -7
  270. package/dist/types/registry/siliconflow-cn.d.ts +0 -7
  271. package/dist/types/registry/siliconflow.d.ts +0 -7
  272. package/dist/types/registry/synthetic.d.ts +0 -6
  273. package/dist/types/registry/tavily.d.ts +0 -14
  274. package/dist/types/registry/together.d.ts +0 -6
  275. package/dist/types/registry/types.d.ts +0 -75
  276. package/dist/types/registry/umans.d.ts +0 -7
  277. package/dist/types/registry/venice.d.ts +0 -13
  278. package/dist/types/registry/vercel-ai-gateway.d.ts +0 -7
  279. package/dist/types/registry/vllm.d.ts +0 -7
  280. package/dist/types/registry/wafer-serverless.d.ts +0 -6
  281. package/dist/types/registry/xai-oauth.d.ts +0 -7
  282. package/dist/types/registry/xai.d.ts +0 -7
  283. package/dist/types/registry/xiaomi-token-plan-ams.d.ts +0 -6
  284. package/dist/types/registry/xiaomi-token-plan-cn.d.ts +0 -6
  285. package/dist/types/registry/xiaomi-token-plan-sgp.d.ts +0 -6
  286. package/dist/types/registry/xiaomi.d.ts +0 -6
  287. package/dist/types/registry/zai.d.ts +0 -15
  288. package/dist/types/registry/zenmux.d.ts +0 -7
  289. package/dist/types/registry/zhipu-coding-plan.d.ts +0 -7
  290. package/dist/types/stream.d.ts +0 -46
  291. package/dist/types/types.d.ts +0 -1064
  292. package/dist/types/usage/alibaba-token-plan.d.ts +0 -3
  293. package/dist/types/usage/claude.d.ts +0 -4
  294. package/dist/types/usage/cursor.d.ts +0 -4
  295. package/dist/types/usage/gemini.d.ts +0 -2
  296. package/dist/types/usage/github-copilot.d.ts +0 -7
  297. package/dist/types/usage/google-antigravity.d.ts +0 -15
  298. package/dist/types/usage/kimi.d.ts +0 -2
  299. package/dist/types/usage/minimax-code.d.ts +0 -3
  300. package/dist/types/usage/ollama.d.ts +0 -5
  301. package/dist/types/usage/openai-codex-base-url.d.ts +0 -18
  302. package/dist/types/usage/openai-codex-reset.d.ts +0 -88
  303. package/dist/types/usage/openai-codex.d.ts +0 -10
  304. package/dist/types/usage/opencode-go.d.ts +0 -2
  305. package/dist/types/usage/shared.d.ts +0 -1
  306. package/dist/types/usage/synthetic.d.ts +0 -2
  307. package/dist/types/usage/umans.d.ts +0 -2
  308. package/dist/types/usage/xai-oauth.d.ts +0 -12
  309. package/dist/types/usage/zai.d.ts +0 -3
  310. package/dist/types/usage.d.ts +0 -527
  311. package/dist/types/utils/abort.d.ts +0 -25
  312. package/dist/types/utils/anthropic-auth.d.ts +0 -35
  313. package/dist/types/utils/aws-profile.d.ts +0 -17
  314. package/dist/types/utils/block-symbols.d.ts +0 -62
  315. package/dist/types/utils/deterministic-id.d.ts +0 -16
  316. package/dist/types/utils/empty-completion-retry.d.ts +0 -21
  317. package/dist/types/utils/event-stream.d.ts +0 -39
  318. package/dist/types/utils/foundry.d.ts +0 -1
  319. package/dist/types/utils/google-validation.d.ts +0 -2
  320. package/dist/types/utils/harmony-leak.d.ts +0 -135
  321. package/dist/types/utils/http-inspector.d.ts +0 -49
  322. package/dist/types/utils/idle-iterator.d.ts +0 -149
  323. package/dist/types/utils/leaked-thinking-stream.d.ts +0 -33
  324. package/dist/types/utils/openai-http.d.ts +0 -48
  325. package/dist/types/utils/openrouter-headers.d.ts +0 -1
  326. package/dist/types/utils/parse-bind.d.ts +0 -23
  327. package/dist/types/utils/provider-response.d.ts +0 -3
  328. package/dist/types/utils/proxy.d.ts +0 -39
  329. package/dist/types/utils/request-debug.d.ts +0 -29
  330. package/dist/types/utils/retry-after.d.ts +0 -4
  331. package/dist/types/utils/retry.d.ts +0 -14
  332. package/dist/types/utils/schema/adapt.d.ts +0 -24
  333. package/dist/types/utils/schema/compatibility.d.ts +0 -30
  334. package/dist/types/utils/schema/dereference.d.ts +0 -11
  335. package/dist/types/utils/schema/draft.d.ts +0 -10
  336. package/dist/types/utils/schema/equality.d.ts +0 -4
  337. package/dist/types/utils/schema/fields.d.ts +0 -54
  338. package/dist/types/utils/schema/index.d.ts +0 -14
  339. package/dist/types/utils/schema/json-schema-validator.d.ts +0 -20
  340. package/dist/types/utils/schema/meta-validator.d.ts +0 -2
  341. package/dist/types/utils/schema/normalize.d.ts +0 -153
  342. package/dist/types/utils/schema/spill.d.ts +0 -8
  343. package/dist/types/utils/schema/stamps.d.ts +0 -17
  344. package/dist/types/utils/schema/strict-tool-validation.d.ts +0 -16
  345. package/dist/types/utils/schema/types.d.ts +0 -4
  346. package/dist/types/utils/schema/typescript.d.ts +0 -24
  347. package/dist/types/utils/schema/wire.d.ts +0 -52
  348. package/dist/types/utils/sdk-stream-timeout.d.ts +0 -33
  349. package/dist/types/utils/sse-debug.d.ts +0 -5
  350. package/dist/types/utils/stream-markup-healing.d.ts +0 -87
  351. package/dist/types/utils/thinking-loop.d.ts +0 -102
  352. package/dist/types/utils/tool-call-loop-guard.d.ts +0 -26
  353. package/dist/types/utils/tool-choice.d.ts +0 -52
  354. package/dist/types/utils/validation.d.ts +0 -28
  355. package/dist/types/utils.d.ts +0 -57
package/package.json CHANGED
@@ -1,138 +1,137 @@
1
1
  {
2
- "type": "module",
3
- "name": "@linxiraos/pi-ai",
4
- "version": "1.0.0",
5
- "description": "Unified LLM API with automatic model discovery and provider configuration",
6
- "homepage": "https://linxira-os.github.io",
7
- "author": "Can Boluk",
8
- "contributors": [
9
- "Mario Zechner"
10
- ],
11
- "license": "MIT",
12
- "repository": {
13
- "type": "git",
14
- "url": "git+https://github.com/Linxira-OS/linxira-zeta.git",
15
- "directory": "packages/ai"
16
- },
17
- "bugs": {
18
- "url": "https://github.com/can1357/oh-my-pi/issues"
19
- },
20
- "keywords": [
21
- "ai",
22
- "llm",
23
- "openai",
24
- "anthropic",
25
- "gemini",
26
- "unified",
27
- "api"
28
- ],
29
- "main": "./src/index.ts",
30
- "types": "./dist/types/index.d.ts",
31
- "scripts": {
32
- "check": "biome check . && bun run check:types",
33
- "check:types": "tsgo -p tsconfig.json --noEmit",
34
- "lint": "biome lint .",
35
- "test": "bun test --parallel",
36
- "fix": "biome check --write --unsafe .",
37
- "fmt": "biome format --write ."
38
- },
39
- "dependencies": {
40
- "@bufbuild/protobuf": "^2.12.1",
41
- "@linxiraos/pi-omptype": "1.0.0",
42
- "@linxiraos/pi-catalog": "1.0.0",
43
- "@linxiraos/pi-utils": "1.0.0",
44
- "@linxiraos/pi-wire": "1.0.0"
45
- },
46
- "devDependencies": {
47
- "@bufbuild/protoc-gen-es": "^2.12.1",
48
- "@types/bun": "^1.3.14"
49
- },
50
- "engines": {
51
- "bun": ">=1.3.14"
52
- },
53
- "files": [
54
- "src",
55
- "README.md",
56
- "CHANGELOG.md",
57
- "dist/types"
58
- ],
59
- "exports": {
60
- ".": {
61
- "types": "./dist/types/index.d.ts",
62
- "import": "./src/index.ts"
63
- },
64
- "./error": {
65
- "types": "./dist/types/error/index.d.ts",
66
- "import": "./src/error/index.ts"
67
- },
68
- "./*": {
69
- "types": "./dist/types/*.d.ts",
70
- "import": "./src/*.ts"
71
- },
72
- "./auth-broker": {
73
- "types": "./dist/types/auth-broker/index.d.ts",
74
- "import": "./src/auth-broker/index.ts"
75
- },
76
- "./auth-broker/*": {
77
- "types": "./dist/types/auth-broker/*.d.ts",
78
- "import": "./src/auth-broker/*.ts"
79
- },
80
- "./auth-gateway": {
81
- "types": "./dist/types/auth-gateway/index.d.ts",
82
- "import": "./src/auth-gateway/index.ts"
83
- },
84
- "./auth-gateway/*": {
85
- "types": "./dist/types/auth-gateway/*.d.ts",
86
- "import": "./src/auth-gateway/*.ts"
87
- },
88
- "./providers/*": {
89
- "types": "./dist/types/providers/*.d.ts",
90
- "import": "./src/providers/*.ts"
91
- },
92
- "./providers/openai-codex/*": {
93
- "types": "./dist/types/providers/openai-codex/*.d.ts",
94
- "import": "./src/providers/openai-codex/*.ts"
95
- },
96
- "./usage/*": {
97
- "types": "./dist/types/usage/*.d.ts",
98
- "import": "./src/usage/*.ts"
99
- },
100
- "./utils/harmony-leak": {
101
- "types": "./dist/types/utils/harmony-leak.d.ts",
102
- "import": "./src/utils/harmony-leak.ts"
103
- },
104
- "./dialect": {
105
- "types": "./dist/types/dialect/index.d.ts",
106
- "import": "./src/dialect/index.ts"
107
- },
108
- "./utils/*": {
109
- "types": "./dist/types/utils/*.d.ts",
110
- "import": "./src/utils/*.ts"
111
- },
112
- "./oauth": {
113
- "types": "./dist/types/registry/oauth/index.d.ts",
114
- "import": "./src/registry/oauth/index.ts"
115
- },
116
- "./oauth/*": {
117
- "types": "./dist/types/registry/oauth/*.d.ts",
118
- "import": "./src/registry/oauth/*.ts"
119
- },
120
- "./registry": {
121
- "types": "./dist/types/registry/index.d.ts",
122
- "import": "./src/registry/index.ts"
123
- },
124
- "./registry/oauth": {
125
- "types": "./dist/types/registry/oauth/index.d.ts",
126
- "import": "./src/registry/oauth/index.ts"
127
- },
128
- "./utils/schema": {
129
- "types": "./dist/types/utils/schema/index.d.ts",
130
- "import": "./src/utils/schema/index.ts"
131
- },
132
- "./utils/schema/*": {
133
- "types": "./dist/types/utils/schema/*.d.ts",
134
- "import": "./src/utils/schema/*.ts"
135
- },
136
- "./*.js": "./src/*.ts"
137
- }
2
+ "type": "module",
3
+ "name": "@linxiraos/pi-ai",
4
+ "version": "1.0.2",
5
+ "description": "Unified LLM API with automatic model discovery and provider configuration",
6
+ "homepage": "https://linxira-os.github.io",
7
+ "author": "Can Boluk",
8
+ "contributors": [
9
+ "Mario Zechner"
10
+ ],
11
+ "license": "MIT",
12
+ "repository": {
13
+ "type": "git",
14
+ "url": "git+https://github.com/Linxira-OS/linxira-zeta.git",
15
+ "directory": "packages/ai"
16
+ },
17
+ "bugs": {
18
+ "url": "https://github.com/can1357/oh-my-pi/issues"
19
+ },
20
+ "keywords": [
21
+ "ai",
22
+ "llm",
23
+ "openai",
24
+ "anthropic",
25
+ "gemini",
26
+ "unified",
27
+ "api"
28
+ ],
29
+ "main": "./src/index.ts",
30
+ "types": "./src/index.ts",
31
+ "scripts": {
32
+ "check": "biome check . && bun run check:types",
33
+ "check:types": "tsgo -p tsconfig.json --noEmit",
34
+ "lint": "biome lint .",
35
+ "test": "bun test --parallel",
36
+ "fix": "biome check --write --unsafe .",
37
+ "fmt": "biome format --write ."
38
+ },
39
+ "dependencies": {
40
+ "@bufbuild/protobuf": "catalog:",
41
+ "@linxiraos/pi-omptype": "catalog:",
42
+ "@linxiraos/pi-catalog": "catalog:",
43
+ "@linxiraos/pi-utils": "catalog:",
44
+ "@linxiraos/pi-wire": "catalog:"
45
+ },
46
+ "devDependencies": {
47
+ "@bufbuild/protoc-gen-es": "catalog:",
48
+ "@types/bun": "catalog:"
49
+ },
50
+ "engines": {
51
+ "bun": ">=1.3.14"
52
+ },
53
+ "files": [
54
+ "src",
55
+ "README.md",
56
+ "CHANGELOG.md"
57
+ ],
58
+ "exports": {
59
+ ".": {
60
+ "types": "./src/index.ts",
61
+ "import": "./src/index.ts"
62
+ },
63
+ "./error": {
64
+ "types": "./src/error/index.ts",
65
+ "import": "./src/error/index.ts"
66
+ },
67
+ "./*": {
68
+ "types": "./src/*.ts",
69
+ "import": "./src/*.ts"
70
+ },
71
+ "./auth-broker": {
72
+ "types": "./src/auth-broker/index.ts",
73
+ "import": "./src/auth-broker/index.ts"
74
+ },
75
+ "./auth-broker/*": {
76
+ "types": "./src/auth-broker/*.ts",
77
+ "import": "./src/auth-broker/*.ts"
78
+ },
79
+ "./auth-gateway": {
80
+ "types": "./src/auth-gateway/index.ts",
81
+ "import": "./src/auth-gateway/index.ts"
82
+ },
83
+ "./auth-gateway/*": {
84
+ "types": "./src/auth-gateway/*.ts",
85
+ "import": "./src/auth-gateway/*.ts"
86
+ },
87
+ "./providers/*": {
88
+ "types": "./src/providers/*.ts",
89
+ "import": "./src/providers/*.ts"
90
+ },
91
+ "./providers/openai-codex/*": {
92
+ "types": "./src/providers/openai-codex/*.ts",
93
+ "import": "./src/providers/openai-codex/*.ts"
94
+ },
95
+ "./usage/*": {
96
+ "types": "./src/usage/*.ts",
97
+ "import": "./src/usage/*.ts"
98
+ },
99
+ "./utils/harmony-leak": {
100
+ "types": "./src/utils/harmony-leak.ts",
101
+ "import": "./src/utils/harmony-leak.ts"
102
+ },
103
+ "./dialect": {
104
+ "types": "./src/dialect/index.ts",
105
+ "import": "./src/dialect/index.ts"
106
+ },
107
+ "./utils/*": {
108
+ "types": "./src/utils/*.ts",
109
+ "import": "./src/utils/*.ts"
110
+ },
111
+ "./oauth": {
112
+ "types": "./src/registry/oauth/index.ts",
113
+ "import": "./src/registry/oauth/index.ts"
114
+ },
115
+ "./oauth/*": {
116
+ "types": "./src/registry/oauth/*.ts",
117
+ "import": "./src/registry/oauth/*.ts"
118
+ },
119
+ "./registry": {
120
+ "types": "./src/registry/index.ts",
121
+ "import": "./src/registry/index.ts"
122
+ },
123
+ "./registry/oauth": {
124
+ "types": "./src/registry/oauth/index.ts",
125
+ "import": "./src/registry/oauth/index.ts"
126
+ },
127
+ "./utils/schema": {
128
+ "types": "./src/utils/schema/index.ts",
129
+ "import": "./src/utils/schema/index.ts"
130
+ },
131
+ "./utils/schema/*": {
132
+ "types": "./src/utils/schema/*.ts",
133
+ "import": "./src/utils/schema/*.ts"
134
+ },
135
+ "./*.js": "./src/*.ts"
136
+ }
138
137
  }
@@ -25,8 +25,6 @@ import type {
25
25
  ClientProviderUsage,
26
26
  ClientUsageReport,
27
27
  ClientUsageSummary,
28
- UsageCostHistoryEntry,
29
- UsageCostHistoryQuery,
30
28
  UsageHistoryEntry,
31
29
  UsageHistoryQuery,
32
30
  } from "../usage";
@@ -387,8 +385,6 @@ export class SqliteAuthCredentialStore implements AuthCredentialStore {
387
385
  #releaseCredentialRefreshLeaseStmt: Statement;
388
386
  #credentialBlockReconcileAfter: Map<string, number> = new Map();
389
387
  #insertUsageHistoryStmt: Statement;
390
- #insertUsageCostStmt: Statement;
391
- #listUsageCostsStmt: Statement;
392
388
  #lastUsageHistoryStmt: Statement;
393
389
  #listUsageHistoryStmt: Statement;
394
390
  #updateUsageHistoryStmt: Statement;
@@ -516,12 +512,6 @@ export class SqliteAuthCredentialStore implements AuthCredentialStore {
516
512
  this.#listUsageHistoryStmt = this.#db.prepare(
517
513
  "SELECT recorded_at, provider, account_key, email, account_id, limit_id, label, window_label, used_fraction, status, resets_at FROM usage_history WHERE recorded_at >= ? AND (? IS NULL OR provider = ?) ORDER BY recorded_at ASC",
518
514
  );
519
- this.#insertUsageCostStmt = this.#db.prepare(
520
- "INSERT INTO usage_cost_history (recorded_at, provider, account_key, cost_usd) VALUES (?, ?, ?, ?)",
521
- );
522
- this.#listUsageCostsStmt = this.#db.prepare(
523
- "SELECT recorded_at, provider, account_key, cost_usd FROM usage_cost_history WHERE recorded_at >= ? AND (? IS NULL OR provider = ?) AND (? IS NULL OR account_key = ?) ORDER BY recorded_at ASC",
524
- );
525
515
  }
526
516
 
527
517
  static async open(dbPath: string = getAgentDbPath()): Promise<SqliteAuthCredentialStore> {
@@ -634,14 +624,6 @@ export class SqliteAuthCredentialStore implements AuthCredentialStore {
634
624
  resets_at INTEGER
635
625
  );
636
626
  CREATE INDEX IF NOT EXISTS idx_usage_history_series ON usage_history(provider, account_key, limit_id, recorded_at);
637
- CREATE TABLE IF NOT EXISTS usage_cost_history (
638
- id INTEGER PRIMARY KEY AUTOINCREMENT,
639
- recorded_at INTEGER NOT NULL,
640
- provider TEXT NOT NULL,
641
- account_key TEXT NOT NULL,
642
- cost_usd REAL NOT NULL
643
- );
644
- CREATE INDEX IF NOT EXISTS idx_usage_cost_history_lookup ON usage_cost_history(provider, account_key, recorded_at);
645
627
  CREATE INDEX IF NOT EXISTS idx_usage_history_recorded ON usage_history(recorded_at);
646
628
  CREATE TABLE IF NOT EXISTS clients (
647
629
  install_id TEXT PRIMARY KEY,
@@ -1769,42 +1751,6 @@ export class SqliteAuthCredentialStore implements AuthCredentialStore {
1769
1751
  return [];
1770
1752
  }
1771
1753
  }
1772
- recordUsageCosts(entries: UsageCostHistoryEntry[]): void {
1773
- try {
1774
- for (const entry of entries) {
1775
- this.#insertUsageCostStmt.run(entry.recordedAt, entry.provider, entry.accountKey, entry.costUsd);
1776
- }
1777
- } catch {
1778
- // Cost history is best-effort; never break request persistence.
1779
- }
1780
- }
1781
-
1782
- listUsageCosts(query?: UsageCostHistoryQuery): UsageCostHistoryEntry[] {
1783
- try {
1784
- const provider = query?.provider ?? null;
1785
- const accountKey = query?.accountKey ?? null;
1786
- const rows = this.#listUsageCostsStmt.all(
1787
- query?.sinceMs ?? 0,
1788
- provider,
1789
- provider,
1790
- accountKey,
1791
- accountKey,
1792
- ) as Array<{
1793
- recorded_at: number;
1794
- provider: string;
1795
- account_key: string;
1796
- cost_usd: number;
1797
- }>;
1798
- return rows.map(row => ({
1799
- recordedAt: row.recorded_at,
1800
- provider: row.provider as Provider,
1801
- accountKey: row.account_key,
1802
- costUsd: row.cost_usd,
1803
- }));
1804
- } catch {
1805
- return [];
1806
- }
1807
- }
1808
1754
 
1809
1755
  recordClientUsage(report: ClientUsageReport): void {
1810
1756
  const now = Date.now();
@@ -2051,8 +1997,6 @@ export class SqliteAuthCredentialStore implements AuthCredentialStore {
2051
1997
  this.#lastUsageHistoryStmt.finalize();
2052
1998
  this.#listUsageHistoryStmt.finalize();
2053
1999
  this.#updateUsageHistoryStmt.finalize();
2054
- this.#insertUsageCostStmt.finalize();
2055
- this.#listUsageCostsStmt.finalize();
2056
2000
  this.#updateIfMatchesStmt.finalize();
2057
2001
  this.#updateIfMatchesWithLeaseStmt.finalize();
2058
2002
  this.#deleteIfMatchesWithLeaseStmt.finalize();
package/src/auth-retry.ts CHANGED
@@ -2,7 +2,7 @@ import { extractHttpStatusFromError } from "@linxiraos/pi-utils";
2
2
  import type { OAuthAccess } from "./auth-storage";
3
3
  import * as AIError from "./error";
4
4
  import { isAuthRetryableError, isInvalidatedOAuthTokenError } from "./error/auth-classify";
5
- import { isUsageLimit } from "./error/flags";
5
+ import { isAccountPolicyError, isUsageLimit } from "./error/flags";
6
6
  import { isConcurrencyCapExclusion, isUsageLimitOutcome } from "./error/rate-limit";
7
7
 
8
8
  /**
@@ -19,9 +19,9 @@ import { isConcurrencyCapExclusion, isUsageLimitOutcome } from "./error/rate-lim
19
19
  * (invalidate/usage-limit the current credential and rotate to a sibling).
20
20
  *
21
21
  * Current drivers preserve that bounded a/b/c sequence for ordinary 401/auth
22
- * failures. 403/usage-limit failures skip refresh and may repeat step (c)
23
- * until the resolver returns `undefined`, cycles, or hits
24
- * {@link AUTH_RETRY_MAX_ATTEMPTS}.
22
+ * failures. Account-scoped policy denials, 403s, and usage-limit failures skip
23
+ * refresh and may repeat step (c) until the resolver returns `undefined`,
24
+ * cycles, or hits {@link AUTH_RETRY_MAX_ATTEMPTS}.
25
25
  */
26
26
  export interface ApiKeyResolveContext {
27
27
  /** True when the resolver should rotate to a sibling credential. */
@@ -91,6 +91,7 @@ export const AUTH_RETRY_STEPS: readonly boolean[] = [false, true];
91
91
  export const AUTH_RETRY_MAX_ATTEMPTS = 64;
92
92
 
93
93
  function isDirectCredentialRotationError(error: unknown): boolean {
94
+ if (isAccountPolicyError(error)) return true;
94
95
  if (isUsageLimit(error) || isInvalidatedOAuthTokenError(error)) return true;
95
96
  const status = AIError.status(error);
96
97
  const message = error instanceof Error ? error.message : typeof error === "string" ? error : undefined;