@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/CHANGELOG.md CHANGED
@@ -2,9 +2,92 @@
2
2
 
3
3
  ## [Unreleased]
4
4
 
5
+ ## [1.0.2] - 2026-08-15
6
+
7
+ ## [17.3.3] - 2026-08-14
8
+
9
+ ### Fixed
10
+
11
+ - Distinguished Gemini thought-only `STOP` responses from empty transports, avoiding repeated identical reasoning requests and duplicate Antigravity endpoint streams while surfacing the missing final output for session-level recovery.
12
+
13
+ ## [17.3.2] - 2026-08-13
14
+
15
+ ### Fixed
16
+
17
+ - Dropped unsigned thinking blocks from Antigravity Claude requests instead of sending them without a signature, preventing HTTP 400 responses when resuming sessions or switching models.
18
+ - Classified Antigravity HTTP 429 responses from structured `google.rpc.ErrorInfo` reasons (`QUOTA_EXHAUSTED`, `RATE_LIMIT_EXCEEDED`, and `INSUFFICIENT_G1_CREDITS_BALANCE`), using retry delays of five minutes or longer to distinguish rotatable quota windows from transient throttling instead of relying only on message regexes.
19
+
20
+ ### Removed
21
+
22
+ - Removed the Antigravity identity-prompt injection (`ANTIGRAVITY_SYSTEM_INSTRUCTION` and `shouldInjectAntigravitySystemInstruction`): Cloud Code Assist accepts arbitrary system instructions on gemini-3.x and Claude routes (verified live), and the injected stub never matched the real client's system prompt anyway. User system prompts are now sent unmodified (still tagged `role: "user"`).
23
+ - Fixed Antigravity `auto` mode not failing over to the sandbox endpoint when the daily endpoint returned a thinking-only `STOP`, which caused Advisor turns to be falsely recorded as empty-response failures ([#8480](https://github.com/can1357/oh-my-pi/issues/8480)).
24
+
25
+ ## [17.3.0] - 2026-08-13
26
+
27
+ ### Breaking Changes
28
+
29
+ - Renamed `withGeminiThinkingLoopGuard` to `withThinkingLoopGuard`; the guard applies to Gemini, DeepSeek, and Grok model-id families.
30
+
5
31
  ### Changed
6
32
 
7
- - Reset the version to 1.0.0 and republished under the `@linxiraos/*` scope, breaking from the `@oh-my-pi` version lineage.
33
+ - Updated OpenCode Go integration to use the official usage endpoint, removing hardcoded caps, enabling real-time credential validation, and routing multi-key pools based on rolling and weekly headroom.
34
+ - Optimized Anthropic prompt caching with rolling 5-minute breakpoints and idle refreshes to keep the prompt prefix warm.
35
+
36
+ ### Fixed
37
+
38
+ - Fixed Ollama chat adapter to correctly forward sampling parameters like temperature and topP to the provider.
39
+ - Fixed OpenAI agent turns ending prematurely after a web search with no visible answer, ensuring the agent continues processing the search results.
40
+ - Fixed a resource leak where completed model streams retained provider concurrency permits longer than necessary.
41
+ - Fixed image input support for qwen3.8-max and newer models when using DashScope compatible-mode.
42
+ - Fixed xAI usage reporting falling back to a stale cache when a new weekly cycle starts with 0% consumed credits.
43
+ - Fixed Together AI login validation failures by querying the authenticated models list instead of a hardcoded model.
44
+ - Fixed credential-health probes and usage fetches failing when using reference-stored API keys (such as environment variables or commands) by ensuring secrets are correctly resolved.
45
+ - Fixed Perplexity email-OTP login by preserving the session cookies required for verification.
46
+ - Fixed thinking configuration for OpenAI and Daybreak models to correctly send reasoning.effort: "none" when thinking is disabled.
47
+ - Fixed Grok runaway thinking streams bypassing the thinking-loop guard.
48
+
49
+ ### Removed
50
+
51
+ - Removed legacy local request-cost estimation machinery and database schemas previously used for OpenCode Go estimates.
52
+
53
+ ## [17.2.15] - 2026-08-12
54
+
55
+ ### Fixed
56
+
57
+ - Fixed an issue where AWS_BEDROCK_SKIP_AUTH failed to expose Amazon Bedrock models when AWS credential files were unavailable.
58
+ - Fixed an issue where forceReasoningOff was ignored by Anthropic and Google transports, which allowed native thinking alongside a caller-supplied external scratchpad.
59
+
60
+ ## [17.2.14] - 2026-08-11
61
+
62
+ ### Added
63
+
64
+ - Added `forceReasoningOff` and `disableReasoning` options to disable reasoning in OpenAI and Azure OpenAI models
65
+
66
+ ## [17.2.13] - 2026-08-11
67
+
68
+ ### Changed
69
+
70
+ - Standardized first-party outbound User-Agent headers on `omp/<version>` via the shared `USER_AGENT` utility.
71
+
72
+ ### Fixed
73
+
74
+ - Fixed the Amazon Bedrock and Cursor transports ignoring `StreamOptions.headers`; both built their request headers from scratch, so caller-supplied tracing or attribution headers were silently dropped while working on every other provider ([#8107](https://github.com/can1357/oh-my-pi/pull/8107) by [@svperfecta](https://github.com/svperfecta)).
75
+ - Fixed Antigravity Flash turns hanging after successful response headers when the endpoint never emitted an SSE event; the provider now cancels the stalled body and fails over after 60 seconds while retaining the longer allowance for Pro reasoning starts.
76
+ - Fixed Cursor exec-bridge bash/grep calls failing ArkType validation when the server omitted optional frame fields: synthesized and executed tool args now drop `undefined` keys (`cwd`, `case`, `skip`, `timeout`) instead of writing `optional: value || undefined`.
77
+ - Fixed Cursor sessions double-executing settled tools when `tools.format` is an owned dialect (e.g. `gemini`): `wrapInbandToolStream` rebuilt toolCall blocks without copying `kCursorExecResolved`, so agent-loop re-ran bash/grep/todo and appended a second result for the same call id.
78
+ - Fixed Codex Responses Lite requests for opaque model codenames such as Daybreak omitting the required `reasoning.context: "all_turns"` value and failing with HTTP 400.
79
+ - Fixed Cursor personal usage reporting for current Pro / Pro+ / Ultra `/api/usage-summary` payloads that expose `individualUsage.plan` (and optional `onDemand`) instead of the older `individualUsage.overall` bucket ([#7998](https://github.com/can1357/oh-my-pi/pull/7998) by [@dnth](https://github.com/dnth)).
80
+ - Allowed passive Google callers to accept empty or thinking-only `STOP` responses as successful silence instead of exhausting the provider's empty-response retry budget. ([#8223](https://github.com/can1357/oh-my-pi/issues/8223))
81
+ - Fixed the AWS credential resolver ignoring `role_arn` profiles: shared-config role chaining (`source_profile` recursion, `web_identity_token_file`, `credential_source`) now resolves via STS `AssumeRole`/`AssumeRoleWithWebIdentity`, honoring `role_session_name`/`duration_seconds`/`external_id`, so Bedrock is detected on EKS/IRSA and multi-account setups instead of reporting "No models available" ([#8209](https://github.com/can1357/oh-my-pi/issues/8209)).
82
+ - Fixed Bedrock availability being under-detected on Nitro/EKS hosts: the EC2 metadata probe now recognizes Nitro DMI markers (`board_asset_tag` instance ids, `Amazon EC2` vendor fields) in addition to the Xen `ec2` UUID prefix ([#8209](https://github.com/can1357/oh-my-pi/issues/8209)).
83
+ - Fixed DeepSeek Responses targets (opencode-go) rejecting a thinking-mode continuation with `400 The reasoning_text in the thinking mode must be passed back to the API` after a prewalk hand-off plus mid-run compaction: the Responses input builder re-encoded replayed assistant turns without a reasoning item, so the request enabled reasoning but shipped no `reasoning_text`. The encoder now synthesizes a `reasoning_text` reasoning item for every replayed assistant turn when the target requires reasoning replay in thinking mode (`requiresReasoningContentForAllAssistantTurns` / `requiresReasoningContentForToolCalls`), mirroring the chat-completions `reasoning_content` safety net ([#8248](https://github.com/can1357/oh-my-pi/issues/8248)).
84
+
85
+ ## [17.2.12] - 2026-08-08
86
+
87
+ ### Fixed
88
+
89
+ - Fixed account-scoped Codex cyber-policy denials bypassing sibling credential rotation; replay-safe requests now try every configured account before surfacing the error.
90
+
8
91
  ## [17.2.11] - 2026-08-07
9
92
 
10
93
  ### Breaking Changes
@@ -27,7 +110,7 @@
27
110
 
28
111
  ### Breaking Changes
29
112
 
30
- - Removed the `zod` dependency and `z`/`ZodType` re-exports. Tool schemas now use `omptype` `type()` schemas, with Zod-style authoring still available via `@oh-my-pi/omptype/zod`.
113
+ - Removed the `zod` dependency and `z`/`ZodType` re-exports. Tool schemas now use `omptype` `type()` schemas, with Zod-style authoring still available via `@linxiraos/pi-omptype/zod`.
31
114
 
32
115
  ## [17.2.9] - 2026-08-05
33
116
 
@@ -44,7 +127,7 @@
44
127
 
45
128
  ### Changed
46
129
 
47
- - Replaced `arktype` with `@oh-my-pi/omptype` for schema validation, delivering up to 100x faster schema construction and 60-100x faster validation while maintaining full compatibility with existing `type`/`Type` exports and the `isArkSchema` contract.
130
+ - Replaced `arktype` with `@linxiraos/pi-omptype` for schema validation, delivering up to 100x faster schema construction and 60-100x faster validation while maintaining full compatibility with existing `type`/`Type` exports and the `isArkSchema` contract.
48
131
 
49
132
  ### Fixed
50
133
 
@@ -102,7 +185,7 @@
102
185
 
103
186
  ### Added
104
187
 
105
- - Added support for the `gmi-cloud` provider registry, including API-key paste login validation and integration with `@oh-my-pi/pi-catalog`.
188
+ - Added support for the `gmi-cloud` provider registry, including API-key paste login validation and integration with `@linxiraos/pi-catalog`.
106
189
 
107
190
  ### Changed
108
191
 
@@ -880,7 +963,7 @@
880
963
 
881
964
  ### Breaking Changes
882
965
 
883
- - Removed the `@oh-my-pi/pi-ai/utils/json-parse` module. The JSON repair and parsing helpers (`repairJson`, `parseJsonWithRepair`, `parseStreamingJson`, `parseStreamingJsonThrottled`) have been moved to `@oh-my-pi/pi-utils` to be shared across utilities.
966
+ - Removed the `@linxiraos/pi-ai/utils/json-parse` module. The JSON repair and parsing helpers (`repairJson`, `parseJsonWithRepair`, `parseStreamingJson`, `parseStreamingJsonThrottled`) have been moved to `@linxiraos/pi-utils` to be shared across utilities.
884
967
 
885
968
  ### Added
886
969
 
@@ -938,7 +1021,7 @@
938
1021
 
939
1022
  ### Fixed
940
1023
 
941
- - Restored the `pollOAuthDeviceCodeFlow` export from `@oh-my-pi/pi-ai/oauth` so legacy provider extensions can reuse the host OAuth device-code poller. ([#3508](https://github.com/can1357/oh-my-pi/issues/3508))
1024
+ - Restored the `pollOAuthDeviceCodeFlow` export from `@linxiraos/pi-ai/oauth` so legacy provider extensions can reuse the host OAuth device-code poller. ([#3508](https://github.com/can1357/oh-my-pi/issues/3508))
942
1025
 
943
1026
  ## [16.1.20] - 2026-06-25
944
1027
 
@@ -1277,7 +1360,7 @@
1277
1360
 
1278
1361
  ### Added
1279
1362
 
1280
- - Exported `renderDelimitedThinking` from the `@oh-my-pi/pi-ai/dialect` barrel so consumers can reuse the dialect's `<thinking>` envelope unwrap-and-rewrap logic (the only `./dialect/rendering` primitive re-exported; the rest stay dialect-internal).
1363
+ - Exported `renderDelimitedThinking` from the `@linxiraos/pi-ai/dialect` barrel so consumers can reuse the dialect's `<thinking>` envelope unwrap-and-rewrap logic (the only `./dialect/rendering` primitive re-exported; the rest stay dialect-internal).
1281
1364
 
1282
1365
  ### Fixed
1283
1366
 
@@ -1292,7 +1375,7 @@
1292
1375
 
1293
1376
  ### Fixed
1294
1377
 
1295
- - A single MCP tool whose input schema can't be emitted as a valid strict tool schema for the active provider no longer fails the whole turn with HTTP 400. `convertTools` (openai-responses) now validates each tool's emitted parameter schema for `enum`/`const`-vs-`type` contradictions that pass structural JSON-Schema validation but the provider rejects — e.g. a non-null `enum` on a `type: "null"` node, or an `enum` on an `array` node — and quarantines just the offending tool with a `logger.warn` naming the tool and schema path, keeping every other tool usable. Adds `findStrictToolSchemaViolation` to `@oh-my-pi/pi-ai/utils/schema` ([#2652](https://github.com/can1357/oh-my-pi/issues/2652))
1378
+ - A single MCP tool whose input schema can't be emitted as a valid strict tool schema for the active provider no longer fails the whole turn with HTTP 400. `convertTools` (openai-responses) now validates each tool's emitted parameter schema for `enum`/`const`-vs-`type` contradictions that pass structural JSON-Schema validation but the provider rejects — e.g. a non-null `enum` on a `type: "null"` node, or an `enum` on an `array` node — and quarantines just the offending tool with a `logger.warn` naming the tool and schema path, keeping every other tool usable. Adds `findStrictToolSchemaViolation` to `@linxiraos/pi-ai/utils/schema` ([#2652](https://github.com/can1357/oh-my-pi/issues/2652))
1296
1379
  - Fixed OpenAI Responses-compatible streams from Ollama/local hosts dropping arguments for parallel tool calls whose deltas use `fc_<call_id>` item ids, which left earlier `ast_grep` calls with `{}` and failed validation. ([#2715](https://github.com/can1357/oh-my-pi/issues/2715))
1297
1380
  - Fixed dialect transcript rendering so literal thinking envelopes are unwrapped before adding the dialect's own thinking tags, preventing nested `<thinking>` output in advisor raw dumps ([#2700](https://github.com/can1357/oh-my-pi/issues/2700)).
1298
1381
  - Fixed Anthropic-compatible Umans requests escaping client tool names and forwarding gateway web search headers so Kimi answers normally instead of returning raw gateway search results.
@@ -1319,7 +1402,7 @@
1319
1402
 
1320
1403
  ### Breaking Changes
1321
1404
 
1322
- - Renamed the public dialect entrypoint from `@oh-my-pi/pi-ai/grammar` to `@oh-my-pi/pi-ai/dialect`.
1405
+ - Renamed the public dialect entrypoint from `@linxiraos/pi-ai/grammar` to `@linxiraos/pi-ai/dialect`.
1323
1406
  - Renamed grammar dialect identifiers from `ToolCallSyntax` to `Dialect`, renamed the `Grammar` interface to `DialectDefinition`, and renamed `Grammar.syntax` to `DialectDefinition.dialect`.
1324
1407
  - Added `DialectDefinition.renderThinking` and `DialectDefinition.renderTranscript` so dialect implementations serialize complete native chat transcripts, not just tool call/result blocks.
1325
1408
 
@@ -1341,7 +1424,7 @@
1341
1424
 
1342
1425
  ### Changed
1343
1426
 
1344
- - Moved public dialect entrypoint from `@oh-my-pi/pi-ai/grammar` to `@oh-my-pi/pi-ai/dialect` in package exports
1427
+ - Moved public dialect entrypoint from `@linxiraos/pi-ai/grammar` to `@linxiraos/pi-ai/dialect` in package exports
1345
1428
  - Updated internal imports in `stream-markup-healing.ts` to use new dialect module path
1346
1429
  - Changed `renderToolInventory` to demote a tool description's own markdown headers by one level when it contains a top-level `# ` header, so they nest under the wrapping `# Tool: <name>` heading instead of reading as sibling sections. Descriptions that already start at `##` and headers inside fenced code blocks are left untouched.
1347
1430
 
@@ -1382,14 +1465,14 @@
1382
1465
 
1383
1466
  ### Added
1384
1467
 
1385
- - Added `jsonSchemaToTypeScript` to `@oh-my-pi/pi-ai/utils/schema` to render JSON Schema argument shapes as compact, human-readable TypeScript-style signatures
1468
+ - Added `jsonSchemaToTypeScript` to `@linxiraos/pi-ai/utils/schema` to render JSON Schema argument shapes as compact, human-readable TypeScript-style signatures
1386
1469
  - Added the generic `ToolExample` type (`ToolCallExample`/`ToolCompareExample`/`ToolNoteExample`, parameterized over a tool's argument shape) and an `examples` property on the `Tool` interface for defining tool-call examples once as data.
1387
- - Added `renderToolExamples` (via `@oh-my-pi/pi-ai/grammar`) to render a tool's examples into an `<examples>` block in the model's native tool-call syntax, with an optional `_i` intent-field placeholder injected when intent tracing is active.
1470
+ - Added `renderToolExamples` (via `@linxiraos/pi-ai/grammar`) to render a tool's examples into an `<examples>` block in the model's native tool-call syntax, with an optional `_i` intent-field placeholder injected when intent tracing is active.
1388
1471
  - Added per-grammar `renderToolCall` rendering of a single tool-call invocation (the inner element only, without the parallel-call block envelope), distinct from `renderAssistantToolCalls` which renders a complete block of one or more parallel calls.
1389
1472
  - Added a `GrammarRenderOptions.example` flag to `renderToolCall`: when set, the invocation renders as the bare payload — Harmony emits just the JSON arguments, dropping the verbose `<|start|>…<|message|>…<|call|>` envelope — so `renderToolExamples` keeps `<examples>` blocks legible.
1390
1473
  - Added an `abortOnFabrication` parameter to `wrapInbandToolStream` (default `true`): when `false`, a fabricated in-band tool-result continuation is discarded without aborting the provider request instead of cutting the turn short.
1391
- - Added `@oh-my-pi/pi-ai/utils/harmony-leak` export with helpers to detect, audit, and recover GPT-5 Harmony tool-call header leaks
1392
- - Added the `@oh-my-pi/pi-ai/grammar` public entrypoint for grammar factories, prompt/call rendering, in-band scanning, history encoding, and related typed utilities
1474
+ - Added `@linxiraos/pi-ai/utils/harmony-leak` export with helpers to detect, audit, and recover GPT-5 Harmony tool-call header leaks
1475
+ - Added the `@linxiraos/pi-ai/grammar` public entrypoint for grammar factories, prompt/call rendering, in-band scanning, history encoding, and related typed utilities
1393
1476
  - Added a unified in-band tool-call grammar engine with syntax-owned scanners, prompts, history rendering, tool-result rendering, and stream adaptation for GLM, Hermes/Qwen, Kimi, XML/Anthropic, DeepSeek, Harmony, and pi-native formats.
1394
1477
 
1395
1478
  ### Changed
@@ -1397,7 +1480,7 @@
1397
1480
  - Changed Harmony in-band tool-call rendering to omit the `<|constrain|>json` marker before the payload in `commentary` channel calls
1398
1481
  - Changed tool inventory rendering to present each tool’s `Parameters` section as a simplified TypeScript-style signature derived from its wire schema
1399
1482
  - Added raw in-band tool-call block capture to parsed owned tool calls so debugging can inspect the exact model-emitted call syntax.
1400
- - Moved the canonical `ToolCallSyntax` union to `@oh-my-pi/pi-catalog/identity` and re-exported it from `@oh-my-pi/pi-ai/grammar` so the catalog can own the syntax vocabulary without an `@oh-my-pi/pi-ai` runtime import; all existing import paths are unchanged.
1483
+ - Moved the canonical `ToolCallSyntax` union to `@linxiraos/pi-catalog/identity` and re-exported it from `@linxiraos/pi-ai/grammar` so the catalog can own the syntax vocabulary without an `@linxiraos/pi-ai` runtime import; all existing import paths are unchanged.
1401
1484
  - Made tool-call argument validation more lenient for schema-directed scalar coercions, including object/array stringification and 0/1 boolean coercion.
1402
1485
  - Changed `renderToolInventory` (the verbose system-prompt inventory and `/dump`) to render each tool as a `# Tool: <name>` markdown section instead of a `<tool name="…">…</tool>` wrapper.
1403
1486
 
@@ -1548,7 +1631,7 @@
1548
1631
 
1549
1632
  ### Changed
1550
1633
 
1551
- - The GPT-5 "Juice: 0" no-reasoning developer item in `applyResponsesReasoningParams` is now gated on the resolved `compat.requiresJuiceZeroHack` flag (auto-detected from GPT-5-family model names by `@oh-my-pi/pi-catalog`, overridable per model) instead of an inline model-name check.
1634
+ - The GPT-5 "Juice: 0" no-reasoning developer item in `applyResponsesReasoningParams` is now gated on the resolved `compat.requiresJuiceZeroHack` flag (auto-detected from GPT-5-family model names by `@linxiraos/pi-catalog`, overridable per model) instead of an inline model-name check.
1552
1635
 
1553
1636
  ### Fixed
1554
1637
 
@@ -1615,8 +1698,8 @@
1615
1698
 
1616
1699
  ### Breaking Changes
1617
1700
 
1618
- - The model catalog moved to the new `@oh-my-pi/pi-catalog` package. Deep subpath exports `@oh-my-pi/pi-ai/models.json`, `/models`, `/model-cache`, `/model-manager`, `/model-thinking`, `/effort`, `/provider-models*`, `/utils/discovery*`, `/providers/openai-codex/constants`, `/providers/google-gemini-headers`, and `/providers/openai-completions-compat` are gone — import the `@oh-my-pi/pi-catalog` equivalents (`/models.json`, `/models`, `/model-cache`, `/model-manager`, `/model-thinking`, `/effort`, `/provider-models*`, `/discovery*`, `/wire/codex`, `/wire/gemini-headers`, `/compat/openai`). The pi-ai root barrel re-exports only the model/effort *types* its own signatures use (`Model`, `Api`, `ThinkingConfig`, `Effort`, `Usage`, compat interfaces) — catalog *values* (`getBundledModel(s)`, `calculateCost`, `modelsAreEqual`, `clampThinkingLevelForModel`, `DEFAULT_MODEL_PER_PROVIDER`, …) must be imported from `@oh-my-pi/pi-catalog`.
1619
- - `ProviderDefinition` is now auth-only: `defaultModel`, `createModelManagerOptions`, `catalogDiscovery`, `dynamicModelsAuthoritative`, `allowUnauthenticated`, and `specialModelManager` moved to pi-catalog's `CATALOG_PROVIDERS` table, and `KnownProviderId` was replaced by pi-catalog's `KnownProvider` (registry completeness is enforced by a compile-time check against that union). The pure GitHub Copilot key/endpoint helpers moved from `registry/oauth/github-copilot` to `@oh-my-pi/pi-catalog/wire/github-copilot`.
1701
+ - The model catalog moved to the new `@linxiraos/pi-catalog` package. Deep subpath exports `@linxiraos/pi-ai/models.json`, `/models`, `/model-cache`, `/model-manager`, `/model-thinking`, `/effort`, `/provider-models*`, `/utils/discovery*`, `/providers/openai-codex/constants`, `/providers/google-gemini-headers`, and `/providers/openai-completions-compat` are gone — import the `@linxiraos/pi-catalog` equivalents (`/models.json`, `/models`, `/model-cache`, `/model-manager`, `/model-thinking`, `/effort`, `/provider-models*`, `/discovery*`, `/wire/codex`, `/wire/gemini-headers`, `/compat/openai`). The pi-ai root barrel re-exports only the model/effort *types* its own signatures use (`Model`, `Api`, `ThinkingConfig`, `Effort`, `Usage`, compat interfaces) — catalog *values* (`getBundledModel(s)`, `calculateCost`, `modelsAreEqual`, `clampThinkingLevelForModel`, `DEFAULT_MODEL_PER_PROVIDER`, …) must be imported from `@linxiraos/pi-catalog`.
1702
+ - `ProviderDefinition` is now auth-only: `defaultModel`, `createModelManagerOptions`, `catalogDiscovery`, `dynamicModelsAuthoritative`, `allowUnauthenticated`, and `specialModelManager` moved to pi-catalog's `CATALOG_PROVIDERS` table, and `KnownProviderId` was replaced by pi-catalog's `KnownProvider` (registry completeness is enforced by a compile-time check against that union). The pure GitHub Copilot key/endpoint helpers moved from `registry/oauth/github-copilot` to `@linxiraos/pi-catalog/wire/github-copilot`.
1620
1703
 
1621
1704
  ### Added
1622
1705
 
@@ -1629,7 +1712,7 @@
1629
1712
  - Tool-argument validation errors now truncate embedded argument strings at 256 chars per field — a failed `write`-class call no longer echoes hundreds of KB of payload back to the model as the error message.
1630
1713
  - Auth storage no longer issues per-boot no-op writes: the schema-version row is only rewritten when the recorded version actually changes, and the credential identity-key backfill skips rows whose derived identity is null — reopening a current-schema database now performs zero write transactions
1631
1714
  - Plain provider env-var names moved to the catalog table: registry defs dropped their 48 `envKeys` literals (including the pure `$pickenv` pickers for `huggingface`/`qwen-portal`/`xai-oauth`), `getEnvApiKey` now derives those fallbacks from `CATALOG_PROVIDERS[].envVars`, and `envKeys` remains only for computed resolvers (Anthropic Foundry, Vertex ADC, Bedrock credential chains) and non-catalog providers (`kagi`, `tavily`, `parallel`, `perplexity`)
1632
- - Protocol handlers are now pure `model.compat` readers — the per-request `resolve*Compat`/`detect*Compat` calls (anthropic ×11, responses ×3, completions wrappers), inline `strictResponsesPairing` host detection, the OpenCode `reasoning_content` mutation block, and all `resolvedBaseUrl` threading are gone. Compat is materialized once at model build time (`@oh-my-pi/pi-catalog` `buildModel`); the OpenCode thinking-mode quirk is a precomputed `compat.whenThinking` pointer swap, and request-time base-URL overrides only feed the HTTP client. Behavior is unchanged (the Anthropic `supportsLongCacheRetention` official-endpoint gate is folded into detection).
1715
+ - Protocol handlers are now pure `model.compat` readers — the per-request `resolve*Compat`/`detect*Compat` calls (anthropic ×11, responses ×3, completions wrappers), inline `strictResponsesPairing` host detection, the OpenCode `reasoning_content` mutation block, and all `resolvedBaseUrl` threading are gone. Compat is materialized once at model build time (`@linxiraos/pi-catalog` `buildModel`); the OpenCode thinking-mode quirk is a precomputed `compat.whenThinking` pointer swap, and request-time base-URL overrides only feed the HTTP client. Behavior is unchanged (the Anthropic `supportsLongCacheRetention` official-endpoint gate is folded into detection).
1633
1716
  - Providers now read baked thinking/wire metadata instead of re-parsing model ids per request: the Anthropic handler gates sampling params on `model.compat.supportsSamplingParams` and adaptive `display` on `model.thinking.supportsDisplay` (Bedrock too), adaptive effort tiers come from the baked `thinking.effortMap`, the Google `thinkingLevel` map is static, and effort-dial-less reasoners (`thinking: undefined`, e.g. `xai-oauth/grok-build`) short-circuit `resolveOpenAiReasoningEffort` without the removed `modelOmitsReasoningEffort` predicate.
1634
1717
  - Anthropic streaming retries now use a 10-retry budget with the Anthropic-compatible 0.5s exponential backoff capped at 8s with jitter; server `retry-after` hints still win, and retryable pre-content failures such as 502s no longer stop after three tries.
1635
1718
 
@@ -1819,7 +1902,7 @@
1819
1902
 
1820
1903
  ### Breaking Changes
1821
1904
 
1822
- - Renamed the OAuth subpath export `@oh-my-pi/pi-ai/utils/oauth` → `@oh-my-pi/pi-ai/oauth` (and `@oh-my-pi/pi-ai/utils/oauth/*` → `@oh-my-pi/pi-ai/oauth/*`, e.g. `oauth/types`, `oauth/callback-server`, `oauth/openai-codex`) after relocating the OAuth implementation out of `utils/oauth/` into `registry/oauth/`. The high-level OAuth API (`getOAuthProviders`, `refreshOAuthToken`, `getOAuthApiKey`, `registerOAuthProvider`, `unregisterOAuthProviders`, `getOAuthProvider`) and the `OAuth*` types stay exported from the package root, unchanged.
1905
+ - Renamed the OAuth subpath export `@linxiraos/pi-ai/utils/oauth` → `@linxiraos/pi-ai/oauth` (and `@linxiraos/pi-ai/utils/oauth/*` → `@linxiraos/pi-ai/oauth/*`, e.g. `oauth/types`, `oauth/callback-server`, `oauth/openai-codex`) after relocating the OAuth implementation out of `utils/oauth/` into `registry/oauth/`. The high-level OAuth API (`getOAuthProviders`, `refreshOAuthToken`, `getOAuthApiKey`, `registerOAuthProvider`, `unregisterOAuthProviders`, `getOAuthProvider`) and the `OAuth*` types stay exported from the package root, unchanged.
1823
1906
 
1824
1907
  ### Changed
1825
1908
 
@@ -1913,7 +1996,7 @@
1913
1996
 
1914
1997
  ### Added
1915
1998
 
1916
- - Added a dependency-free `@oh-my-pi/pi-ai/effort` module exporting the `Effort` enum and `THINKING_EFFORTS`, split out of `model-thinking` so hot-path consumers can import the thinking levels without pulling in `model-thinking` and its provider-compat dependency graph. The package barrel still re-exports both names, so existing imports are unaffected.
1999
+ - Added a dependency-free `@linxiraos/pi-ai/effort` module exporting the `Effort` enum and `THINKING_EFFORTS`, split out of `model-thinking` so hot-path consumers can import the thinking levels without pulling in `model-thinking` and its provider-compat dependency graph. The package barrel still re-exports both names, so existing imports are unaffected.
1917
2000
 
1918
2001
  ### Fixed
1919
2002
 
@@ -2364,9 +2447,9 @@
2364
2447
  ### Breaking Changes
2365
2448
 
2366
2449
  - Changed `AuthBrokerClient.fetchSnapshot()` to return status-based results (`200` or `304`) instead of always returning a raw snapshot body, so callers now need to branch on `status`
2367
- - Renamed public schema utilities in `@oh-my-pi/pi-ai/utils/schema` by replacing `sanitizeSchemaForGoogle`, `sanitizeSchemaForCCA`, `prepareSchemaForCCA`, and `sanitizeSchemaForMCP` with `normalizeSchemaForGoogle`, `normalizeSchemaForCCA`, and `normalizeSchemaForMCP`
2450
+ - Renamed public schema utilities in `@linxiraos/pi-ai/utils/schema` by replacing `sanitizeSchemaForGoogle`, `sanitizeSchemaForCCA`, `prepareSchemaForCCA`, and `sanitizeSchemaForMCP` with `normalizeSchemaForGoogle`, `normalizeSchemaForCCA`, and `normalizeSchemaForMCP`
2368
2451
  - Added MCP schema normalization via `normalizeSchemaForMCP` for compatibility checks
2369
- - Removed the `StringEnum` helper from `@oh-my-pi/pi-ai/utils/schema`. Use `z.enum([...])` directly; Zod's emitted JSON Schema is already wire-compatible with Google and other providers.
2452
+ - Removed the `StringEnum` helper from `@linxiraos/pi-ai/utils/schema`. Use `z.enum([...])` directly; Zod's emitted JSON Schema is already wire-compatible with Google and other providers.
2370
2453
  - Renamed the concrete SQLite credential store class from `AuthCredentialStore` to `SqliteAuthCredentialStore`. `AuthCredentialStore` is now the persistence interface implemented by both the SQLite store and the new `RemoteAuthCredentialStore`. Update `new AuthCredentialStore(db)` / `AuthCredentialStore.open(...)` call-sites to `SqliteAuthCredentialStore`; type-position uses (`store: AuthCredentialStore`) continue to work unchanged.
2371
2454
 
2372
2455
  ### Added
@@ -2383,7 +2466,7 @@
2383
2466
  - Added per-model `additional_rate_limits` parsing to `openaiCodexUsageProvider`. The Codex `wham/usage` endpoint surfaces a separate `GPT-5.3-Codex-Spark` rate limit (`metered_feature: codex_bengalfox`) on Pro accounts; these now emit dedicated `openai-codex:spark:{primary,secondary}` `UsageLimit` entries with `scope.tier = "spark"`, mirroring how Anthropic exposes `anthropic:7d:sonnet` separately from the umbrella `anthropic:7d` bucket. The osx-widgets client already keyed spark detection off `limit.id.includes("spark")`; this populates that contract end-to-end.
2384
2467
  - Added `GET /v1/usage` to the auth-broker API to expose aggregated usage reports from `AuthStorage.fetchUsageReports`
2385
2468
  - Added auth-broker usage polling response handling that returns normalized usage reports plus generation timestamp for clients (5-min per-credential cache via `AuthStorage`)
2386
- - Added the auth-broker subsystem (`@oh-my-pi/pi-ai/auth-broker`) for sharing OAuth credentials across machines without leaking refresh tokens.
2469
+ - Added the auth-broker subsystem (`@linxiraos/pi-ai/auth-broker`) for sharing OAuth credentials across machines without leaking refresh tokens.
2387
2470
  - `startAuthBroker(...)` boots a `Bun.serve` HTTP server exposing `GET /v1/healthz`, `GET /v1/snapshot`, `POST /v1/credential` (upsert), `POST /v1/credential/:id/refresh`, and `POST /v1/credential/:id/disable`.
2388
2471
  - `AuthBrokerClient` is the matching HTTP client used by remote clients.
2389
2472
  - `RemoteAuthCredentialStore` is a client-side `AuthCredentialStore` that mirrors a broker snapshot in memory; mutating methods (`replace*`, `upsert*`, `delete*ForProvider`) throw because writes are server-side only.
@@ -2392,14 +2475,14 @@
2392
2475
  - Added `AuthStorageOptions.refreshOAuthCredential` override so a remote-store client can route every OAuth refresh through the broker instead of the local OAuth endpoint.
2393
2476
  - Added `REMOTE_REFRESH_SENTINEL` (`"__remote__"`) — the wire placeholder substituted for OAuth refresh tokens in broker snapshots; clients never see the real refresh token.
2394
2477
  - Exposed the OAuth provider catalog (`getOAuthProviders`, `OAuthProvider`, `OAuthProviderInfo`) and `refreshOAuthToken` through the package barrel so the coding-agent CLI can target them without reaching into `utils/oauth`.
2395
- - Added the auth-gateway subsystem (`@oh-my-pi/pi-ai/auth-gateway`) — a forward-proxy that sits between unauthenticated clients (the macOS usage widget, llm-git, robomp containers, …) and the broker. Clients send standard provider-format requests; the gateway parses them into omp's canonical `Context`, dispatches through pi-ai's `streamSimple()`, and translates the canonical event stream back to the matching wire format. `Authorization` is injected server-side so access tokens never leave the gateway host. Wire surface:
2478
+ - Added the auth-gateway subsystem (`@linxiraos/pi-ai/auth-gateway`) — a forward-proxy that sits between unauthenticated clients (the macOS usage widget, llm-git, robomp containers, …) and the broker. Clients send standard provider-format requests; the gateway parses them into omp's canonical `Context`, dispatches through pi-ai's `streamSimple()`, and translates the canonical event stream back to the matching wire format. `Authorization` is injected server-side so access tokens never leave the gateway host. Wire surface:
2396
2479
  - `GET /healthz` — unauth liveness.
2397
2480
  - `GET /v1/usage` — aggregated provider usage; 5-min per-credential cache via `AuthStorage.fetchUsageReports`.
2398
2481
  - `GET /v1/models` — model catalog (scoped to providers with credentials).
2399
2482
  - `POST /v1/chat/completions` — OpenAI chat-completions in/out.
2400
2483
  - `POST /v1/messages` — Anthropic messages in/out (text + thinking + tool_use blocks, SSE event taxonomy preserved).
2401
2484
  - `POST /v1/responses` — OpenAI Responses in/out (reasoning items + function_call output items, SSE pass-through).
2402
- - Added exports from `@oh-my-pi/pi-ai/auth-gateway`: `startAuthGateway`, `AuthGatewayServerOptions`, `AuthGatewayBootOptions`, `AuthGatewayServerHandle`, `ModelResolver`, `DEFAULT_AUTH_GATEWAY_BIND`. Per-format `parseRequest` / `encodeResponse` / `encodeStream` triples are reachable via the `./providers/*` subpath as `openai-chat-server`, `anthropic-messages-server`, and `openai-responses-server`.
2485
+ - Added exports from `@linxiraos/pi-ai/auth-gateway`: `startAuthGateway`, `AuthGatewayServerOptions`, `AuthGatewayBootOptions`, `AuthGatewayServerHandle`, `ModelResolver`, `DEFAULT_AUTH_GATEWAY_BIND`. Per-format `parseRequest` / `encodeResponse` / `encodeStream` triples are reachable via the `./providers/*` subpath as `openai-chat-server`, `anthropic-messages-server`, and `openai-responses-server`.
2403
2486
  - Added `listProvidersWithEnvKey()` to enumerate every provider with an env-var fallback (used by the new migrate command in coding-agent).
2404
2487
 
2405
2488
  ### Changed
@@ -2475,7 +2558,7 @@
2475
2558
 
2476
2559
  ### Breaking Changes
2477
2560
 
2478
- - Removed TypeBox root exports (`Type`, `Static`, and `TSchema`) from the package entrypoint, so callers importing those symbols from `@oh-my-pi/pi-ai` must migrate to `zod` or `@oh-my-pi/pi-ai/types`
2561
+ - Removed TypeBox root exports (`Type`, `Static`, and `TSchema`) from the package entrypoint, so callers importing those symbols from `@linxiraos/pi-ai` must migrate to `zod` or `@linxiraos/pi-ai/types`
2479
2562
 
2480
2563
  ### Added
2481
2564
 
@@ -3572,7 +3655,7 @@
3572
3655
  ### Changed
3573
3656
 
3574
3657
  - Enhanced `getModelMapping()` to support both GitLab Duo alias IDs (e.g., `duo-chat-gpt-5-codex`) and canonical model IDs (e.g., `gpt-5-codex`) for improved model resolution flexibility
3575
- - Migrated `AuthCredentialStore` and `AuthStorage` into `@oh-my-pi/pi-ai` as shared credential primitives for downstream packages
3658
+ - Migrated `AuthCredentialStore` and `AuthStorage` into `@linxiraos/pi-ai` as shared credential primitives for downstream packages
3576
3659
  - Moved Anthropic auth helpers (`findAnthropicAuth`, `isOAuthToken`, `buildAnthropicSearchHeaders`, `buildAnthropicUrl`) into shared AI utilities for reuse across providers
3577
3660
  - Replaced `CliAuthStorage` with `AuthCredentialStore` for improved credential management with multiple credentials per provider
3578
3661
  - Updated models.json pricing for Claude 3.5 Sonnet (input: 0.23→0.45, output: 3→2.2, added cache read: 0.225) and Claude 3 Opus (input: 0.3→0.95)
@@ -4108,7 +4191,7 @@
4108
4191
 
4109
4192
  ### Changed
4110
4193
 
4111
- - Replaced direct `process.env` access with `getEnv()` utility from `@oh-my-pi/pi-utils` for consistent environment variable handling across all providers
4194
+ - Replaced direct `process.env` access with `getEnv()` utility from `@linxiraos/pi-utils` for consistent environment variable handling across all providers
4112
4195
  - Updated environment variable names from `OMP_*` prefix to `PI_*` prefix for consistency (e.g., `OMP_CODING_AGENT_DIR` → `PI_CODING_AGENT_DIR`)
4113
4196
 
4114
4197
  ### Removed
@@ -4635,6 +4718,16 @@
4635
4718
 
4636
4719
  Initial release under @oh-my-pi scope. See previous releases at [badlogic/pi-mono](https://github.com/badlogic/pi-mono).
4637
4720
 
4721
+ ## [1.0.1] - 2026-08-14
4722
+
4723
+ - Reset the version to 1.0.0 and republished under the `@linxiraos/*` scope, breaking from the `@oh-my-pi` version lineage.
4724
+
4725
+ ## [1.0.0] - 2026-08-13
4726
+
4727
+ ### Changed
4728
+
4729
+ - Reset the version to 1.0.0 and republished under the `@linxiraos/*` scope, breaking from the `@oh-my-pi` version lineage.
4730
+
4638
4731
  ## [0.50.1] - 2026-01-26
4639
4732
 
4640
4733
  ### Fixed
@@ -4900,7 +4993,7 @@ Initial release under @oh-my-pi scope. See previous releases at [badlogic/pi-mon
4900
4993
 
4901
4994
  ### Breaking Changes
4902
4995
 
4903
- - **Agent API moved**: All agent functionality (`agentLoop`, `agentLoopContinue`, `AgentContext`, `AgentEvent`, `AgentTool`, `AgentToolResult`, etc.) has moved to `@oh-my-pi/pi-agent-core`. Import from that package instead of `@oh-my-pi/pi-ai`.
4996
+ - **Agent API moved**: All agent functionality (`agentLoop`, `agentLoopContinue`, `AgentContext`, `AgentEvent`, `AgentTool`, `AgentToolResult`, etc.) has moved to `@linxiraos/pi-agent-core`. Import from that package instead of `@linxiraos/pi-ai`.
4904
4997
 
4905
4998
  ### Added
4906
4999