ima2-gen 3.15.1 → 3.16.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (764) hide show
  1. package/CHANGELOG.md +11 -1
  2. package/README.md +7 -6
  3. package/bin/commands/grok.js +150 -64
  4. package/bin/commands/service.js +5 -4
  5. package/bin/ima2.js +3 -3
  6. package/bin/lib/doctor-providers.js +6 -1
  7. package/bin/lib/doctor-runtime.js +1 -1
  8. package/config.js +0 -9
  9. package/docs/API.md +7 -7
  10. package/docs/API.zh-CN.md +7 -7
  11. package/docs/API.zh-TW.md +7 -7
  12. package/docs/CLI.md +9 -8
  13. package/docs/CLI.zh-CN.md +8 -8
  14. package/docs/CLI.zh-TW.md +8 -8
  15. package/docs/README.ko.md +5 -6
  16. package/docs/README.zh-CN.md +6 -5
  17. package/docs/README.zh-TW.md +6 -5
  18. package/docs/migration/runtime-test-inventory.md +4 -6
  19. package/lib/agentPlannerModel.js +17 -16
  20. package/lib/capabilities.js +3 -2
  21. package/lib/errors/providerMap.js +13 -0
  22. package/lib/grokImageCore.js +9 -16
  23. package/lib/grokImagePlanner.js +15 -3
  24. package/lib/grokRuntime.js +47 -16
  25. package/lib/grokVideoAdapter.js +23 -7
  26. package/lib/grokVideoPoll.js +3 -3
  27. package/lib/grokVideoShared.js +6 -13
  28. package/lib/promptBuilder/router.js +22 -6
  29. package/lib/providers/adapters/grokExecution.js +15 -14
  30. package/lib/providers/adapters/grokMultimodeOperations.js +9 -7
  31. package/lib/providers/adapters/grokOperations.js +19 -12
  32. package/lib/providers/execution/admission.js +20 -4
  33. package/lib/providers/registry.js +1 -1
  34. package/lib/runtimeContext.js +0 -12
  35. package/lib/videoExtendI2vOperation.js +5 -1
  36. package/lib/xaiAuth.js +369 -0
  37. package/lib/xaiDeviceLogin.js +157 -0
  38. package/package.json +2 -4
  39. package/routes/auth.js +18 -26
  40. package/routes/grok.js +25 -19
  41. package/routes/health.js +4 -5
  42. package/routes/models.js +12 -26
  43. package/routes/quota.js +2 -1
  44. package/routes/video.js +7 -2
  45. package/routes/videoExtended.js +37 -24
  46. package/server.js +7 -58
  47. package/skills/ima2/SKILL.md +2 -2
  48. package/ui/dist/.vite/manifest.json +56 -56
  49. package/ui/dist/assets/{AgentWorkspace-CLJDCRMQ.js → AgentWorkspace-DlLaTsPK.js} +1 -1
  50. package/ui/dist/assets/{App-DkvU6Sex.js → App-BfpvLzSs.js} +4 -4
  51. package/ui/dist/assets/{AssetGenWorkspace-BepUrz23.js → AssetGenWorkspace-C8eIs-bS.js} +2 -2
  52. package/ui/dist/assets/{AssetsWorkspace-IipC1FdD.js → AssetsWorkspace-BcbAM8uC.js} +1 -1
  53. package/ui/dist/assets/{CardNewsWorkspace-ZXDwYz4l.js → CardNewsWorkspace-CM5hwbRV.js} +1 -1
  54. package/ui/dist/assets/{GenerationRequestLogPanel-BL2C0DcW.js → GenerationRequestLogPanel-CTs8OymS.js} +1 -1
  55. package/ui/dist/assets/{HomeWorkspace-DFfrwS9a.js → HomeWorkspace-KGUtIZyG.js} +1 -1
  56. package/ui/dist/assets/{KeyingPanel-BQkEMTe9.js → KeyingPanel-D8ZHmWcC.js} +1 -1
  57. package/ui/dist/assets/{NodeCanvas-5u8IO1MA.js → NodeCanvas-D2N3m-1s.js} +1 -1
  58. package/ui/dist/assets/{PromptBuilderPanel-DNt7LHMi.js → PromptBuilderPanel-BolZnOa7.js} +1 -1
  59. package/ui/dist/assets/{PromptImportDialog-Bl-SB4mK.js → PromptImportDialog-DBpe7Vkj.js} +2 -2
  60. package/ui/dist/assets/{PromptImportDiscoverySection-DdZAdRMW.js → PromptImportDiscoverySection-Dk6v6lUZ.js} +1 -1
  61. package/ui/dist/assets/{PromptImportFolderSection-DLHQKl9T.js → PromptImportFolderSection-BE7Nfq9Y.js} +1 -1
  62. package/ui/dist/assets/{PromptLibraryPanel-PLWyvEz1.js → PromptLibraryPanel-Qdujpb4L.js} +2 -2
  63. package/ui/dist/assets/{SettingsWorkspace-Etfeu2IF.js → SettingsWorkspace-Dm4wezu_.js} +1 -1
  64. package/ui/dist/assets/{SpriteRecipeWorkspace-D7H5seOM.js → SpriteRecipeWorkspace-D9do9V7F.js} +1 -1
  65. package/ui/dist/assets/index-CfGRmfFv.js +22 -0
  66. package/ui/dist/assets/{index-BAkbTbUC.js → index-CfrOcJIe.js} +3 -3
  67. package/ui/dist/assets/{pptxgen.es-Apxh5DQ9.js → pptxgen.es-BLI_YKez.js} +1 -1
  68. package/ui/dist/assets/{promptBuilderStore-prvdLIUP.js → promptBuilderStore-BMiudG9n.js} +1 -1
  69. package/ui/dist/assets/useAgentDialogFocus-CCj5EYE9.js +1 -0
  70. package/ui/dist/index.html +1 -1
  71. package/lib/grokProxyLauncher.js +0 -279
  72. package/node_modules/array-flatten/LICENSE +0 -21
  73. package/node_modules/array-flatten/README.md +0 -43
  74. package/node_modules/array-flatten/array-flatten.js +0 -64
  75. package/node_modules/array-flatten/package.json +0 -39
  76. package/node_modules/bundle-name/index.js +0 -5
  77. package/node_modules/bundle-name/license +0 -9
  78. package/node_modules/bundle-name/package.json +0 -45
  79. package/node_modules/bundle-name/readme.md +0 -23
  80. package/node_modules/bytes/History.md +0 -97
  81. package/node_modules/bytes/LICENSE +0 -23
  82. package/node_modules/bytes/Readme.md +0 -152
  83. package/node_modules/bytes/index.js +0 -170
  84. package/node_modules/bytes/package.json +0 -42
  85. package/node_modules/call-bind-apply-helpers/.eslintrc +0 -17
  86. package/node_modules/call-bind-apply-helpers/.github/FUNDING.yml +0 -12
  87. package/node_modules/call-bind-apply-helpers/.nycrc +0 -9
  88. package/node_modules/call-bind-apply-helpers/CHANGELOG.md +0 -30
  89. package/node_modules/call-bind-apply-helpers/LICENSE +0 -21
  90. package/node_modules/call-bind-apply-helpers/README.md +0 -62
  91. package/node_modules/call-bind-apply-helpers/actualApply.d.ts +0 -1
  92. package/node_modules/call-bind-apply-helpers/actualApply.js +0 -10
  93. package/node_modules/call-bind-apply-helpers/applyBind.d.ts +0 -19
  94. package/node_modules/call-bind-apply-helpers/applyBind.js +0 -10
  95. package/node_modules/call-bind-apply-helpers/functionApply.d.ts +0 -1
  96. package/node_modules/call-bind-apply-helpers/functionApply.js +0 -4
  97. package/node_modules/call-bind-apply-helpers/functionCall.d.ts +0 -1
  98. package/node_modules/call-bind-apply-helpers/functionCall.js +0 -4
  99. package/node_modules/call-bind-apply-helpers/index.d.ts +0 -64
  100. package/node_modules/call-bind-apply-helpers/index.js +0 -15
  101. package/node_modules/call-bind-apply-helpers/package.json +0 -85
  102. package/node_modules/call-bind-apply-helpers/reflectApply.d.ts +0 -3
  103. package/node_modules/call-bind-apply-helpers/reflectApply.js +0 -4
  104. package/node_modules/call-bind-apply-helpers/test/index.js +0 -63
  105. package/node_modules/call-bind-apply-helpers/tsconfig.json +0 -9
  106. package/node_modules/call-bound/.eslintrc +0 -13
  107. package/node_modules/call-bound/.github/FUNDING.yml +0 -12
  108. package/node_modules/call-bound/.nycrc +0 -9
  109. package/node_modules/call-bound/CHANGELOG.md +0 -42
  110. package/node_modules/call-bound/LICENSE +0 -21
  111. package/node_modules/call-bound/README.md +0 -53
  112. package/node_modules/call-bound/index.d.ts +0 -94
  113. package/node_modules/call-bound/index.js +0 -19
  114. package/node_modules/call-bound/package.json +0 -99
  115. package/node_modules/call-bound/test/index.js +0 -61
  116. package/node_modules/call-bound/tsconfig.json +0 -10
  117. package/node_modules/commander/LICENSE +0 -22
  118. package/node_modules/commander/Readme.md +0 -1149
  119. package/node_modules/commander/esm.mjs +0 -16
  120. package/node_modules/commander/index.js +0 -24
  121. package/node_modules/commander/lib/argument.js +0 -149
  122. package/node_modules/commander/lib/command.js +0 -2662
  123. package/node_modules/commander/lib/error.js +0 -39
  124. package/node_modules/commander/lib/help.js +0 -709
  125. package/node_modules/commander/lib/option.js +0 -367
  126. package/node_modules/commander/lib/suggestSimilar.js +0 -101
  127. package/node_modules/commander/package-support.json +0 -16
  128. package/node_modules/commander/package.json +0 -82
  129. package/node_modules/commander/typings/esm.d.mts +0 -3
  130. package/node_modules/commander/typings/index.d.ts +0 -1045
  131. package/node_modules/content-type/HISTORY.md +0 -29
  132. package/node_modules/content-type/LICENSE +0 -22
  133. package/node_modules/content-type/README.md +0 -94
  134. package/node_modules/content-type/index.js +0 -225
  135. package/node_modules/content-type/package.json +0 -42
  136. package/node_modules/cookie/LICENSE +0 -24
  137. package/node_modules/cookie/README.md +0 -317
  138. package/node_modules/cookie/SECURITY.md +0 -25
  139. package/node_modules/cookie/index.js +0 -335
  140. package/node_modules/cookie/package.json +0 -44
  141. package/node_modules/default-browser/index.d.ts +0 -29
  142. package/node_modules/default-browser/index.js +0 -34
  143. package/node_modules/default-browser/license +0 -9
  144. package/node_modules/default-browser/package.json +0 -54
  145. package/node_modules/default-browser/readme.md +0 -24
  146. package/node_modules/default-browser/windows.js +0 -57
  147. package/node_modules/default-browser-id/index.js +0 -25
  148. package/node_modules/default-browser-id/license +0 -9
  149. package/node_modules/default-browser-id/package.json +0 -41
  150. package/node_modules/default-browser-id/readme.md +0 -19
  151. package/node_modules/define-lazy-prop/index.d.ts +0 -31
  152. package/node_modules/define-lazy-prop/index.js +0 -18
  153. package/node_modules/define-lazy-prop/license +0 -9
  154. package/node_modules/define-lazy-prop/package.json +0 -51
  155. package/node_modules/define-lazy-prop/readme.md +0 -55
  156. package/node_modules/depd/History.md +0 -103
  157. package/node_modules/depd/LICENSE +0 -22
  158. package/node_modules/depd/Readme.md +0 -280
  159. package/node_modules/depd/index.js +0 -538
  160. package/node_modules/depd/lib/browser/index.js +0 -77
  161. package/node_modules/depd/package.json +0 -45
  162. package/node_modules/destroy/LICENSE +0 -23
  163. package/node_modules/destroy/README.md +0 -63
  164. package/node_modules/destroy/index.js +0 -209
  165. package/node_modules/destroy/package.json +0 -48
  166. package/node_modules/dunder-proto/.eslintrc +0 -5
  167. package/node_modules/dunder-proto/.github/FUNDING.yml +0 -12
  168. package/node_modules/dunder-proto/.nycrc +0 -13
  169. package/node_modules/dunder-proto/CHANGELOG.md +0 -24
  170. package/node_modules/dunder-proto/LICENSE +0 -21
  171. package/node_modules/dunder-proto/README.md +0 -54
  172. package/node_modules/dunder-proto/get.d.ts +0 -5
  173. package/node_modules/dunder-proto/get.js +0 -30
  174. package/node_modules/dunder-proto/package.json +0 -76
  175. package/node_modules/dunder-proto/set.d.ts +0 -5
  176. package/node_modules/dunder-proto/set.js +0 -35
  177. package/node_modules/dunder-proto/test/get.js +0 -34
  178. package/node_modules/dunder-proto/test/index.js +0 -4
  179. package/node_modules/dunder-proto/test/set.js +0 -50
  180. package/node_modules/dunder-proto/tsconfig.json +0 -9
  181. package/node_modules/ee-first/LICENSE +0 -22
  182. package/node_modules/ee-first/README.md +0 -80
  183. package/node_modules/ee-first/index.js +0 -95
  184. package/node_modules/ee-first/package.json +0 -29
  185. package/node_modules/encodeurl/LICENSE +0 -22
  186. package/node_modules/encodeurl/README.md +0 -109
  187. package/node_modules/encodeurl/index.js +0 -60
  188. package/node_modules/encodeurl/package.json +0 -40
  189. package/node_modules/es-define-property/.eslintrc +0 -13
  190. package/node_modules/es-define-property/.github/FUNDING.yml +0 -12
  191. package/node_modules/es-define-property/.nycrc +0 -9
  192. package/node_modules/es-define-property/CHANGELOG.md +0 -29
  193. package/node_modules/es-define-property/LICENSE +0 -21
  194. package/node_modules/es-define-property/README.md +0 -49
  195. package/node_modules/es-define-property/index.d.ts +0 -3
  196. package/node_modules/es-define-property/index.js +0 -14
  197. package/node_modules/es-define-property/package.json +0 -81
  198. package/node_modules/es-define-property/test/index.js +0 -56
  199. package/node_modules/es-define-property/tsconfig.json +0 -10
  200. package/node_modules/es-errors/.eslintrc +0 -5
  201. package/node_modules/es-errors/.github/FUNDING.yml +0 -12
  202. package/node_modules/es-errors/CHANGELOG.md +0 -40
  203. package/node_modules/es-errors/LICENSE +0 -21
  204. package/node_modules/es-errors/README.md +0 -55
  205. package/node_modules/es-errors/eval.d.ts +0 -3
  206. package/node_modules/es-errors/eval.js +0 -4
  207. package/node_modules/es-errors/index.d.ts +0 -3
  208. package/node_modules/es-errors/index.js +0 -4
  209. package/node_modules/es-errors/package.json +0 -80
  210. package/node_modules/es-errors/range.d.ts +0 -3
  211. package/node_modules/es-errors/range.js +0 -4
  212. package/node_modules/es-errors/ref.d.ts +0 -3
  213. package/node_modules/es-errors/ref.js +0 -4
  214. package/node_modules/es-errors/syntax.d.ts +0 -3
  215. package/node_modules/es-errors/syntax.js +0 -4
  216. package/node_modules/es-errors/test/index.js +0 -19
  217. package/node_modules/es-errors/tsconfig.json +0 -49
  218. package/node_modules/es-errors/type.d.ts +0 -3
  219. package/node_modules/es-errors/type.js +0 -4
  220. package/node_modules/es-errors/uri.d.ts +0 -3
  221. package/node_modules/es-errors/uri.js +0 -4
  222. package/node_modules/es-object-atoms/.eslintrc +0 -16
  223. package/node_modules/es-object-atoms/.github/FUNDING.yml +0 -12
  224. package/node_modules/es-object-atoms/CHANGELOG.md +0 -37
  225. package/node_modules/es-object-atoms/LICENSE +0 -21
  226. package/node_modules/es-object-atoms/README.md +0 -63
  227. package/node_modules/es-object-atoms/RequireObjectCoercible.d.ts +0 -3
  228. package/node_modules/es-object-atoms/RequireObjectCoercible.js +0 -11
  229. package/node_modules/es-object-atoms/ToObject.d.ts +0 -7
  230. package/node_modules/es-object-atoms/ToObject.js +0 -10
  231. package/node_modules/es-object-atoms/index.d.ts +0 -3
  232. package/node_modules/es-object-atoms/index.js +0 -4
  233. package/node_modules/es-object-atoms/isObject.d.ts +0 -3
  234. package/node_modules/es-object-atoms/isObject.js +0 -6
  235. package/node_modules/es-object-atoms/package.json +0 -80
  236. package/node_modules/es-object-atoms/test/index.js +0 -38
  237. package/node_modules/es-object-atoms/tsconfig.json +0 -6
  238. package/node_modules/escape-html/LICENSE +0 -24
  239. package/node_modules/escape-html/Readme.md +0 -43
  240. package/node_modules/escape-html/index.js +0 -78
  241. package/node_modules/escape-html/package.json +0 -24
  242. package/node_modules/etag/HISTORY.md +0 -83
  243. package/node_modules/etag/LICENSE +0 -22
  244. package/node_modules/etag/README.md +0 -159
  245. package/node_modules/etag/index.js +0 -131
  246. package/node_modules/etag/package.json +0 -47
  247. package/node_modules/forwarded/HISTORY.md +0 -21
  248. package/node_modules/forwarded/LICENSE +0 -22
  249. package/node_modules/forwarded/README.md +0 -57
  250. package/node_modules/forwarded/index.js +0 -90
  251. package/node_modules/forwarded/package.json +0 -45
  252. package/node_modules/function-bind/.eslintrc +0 -21
  253. package/node_modules/function-bind/.github/FUNDING.yml +0 -12
  254. package/node_modules/function-bind/.github/SECURITY.md +0 -3
  255. package/node_modules/function-bind/.nycrc +0 -13
  256. package/node_modules/function-bind/CHANGELOG.md +0 -136
  257. package/node_modules/function-bind/LICENSE +0 -20
  258. package/node_modules/function-bind/README.md +0 -46
  259. package/node_modules/function-bind/implementation.js +0 -84
  260. package/node_modules/function-bind/index.js +0 -5
  261. package/node_modules/function-bind/package.json +0 -87
  262. package/node_modules/function-bind/test/.eslintrc +0 -9
  263. package/node_modules/function-bind/test/index.js +0 -252
  264. package/node_modules/get-intrinsic/.eslintrc +0 -42
  265. package/node_modules/get-intrinsic/.github/FUNDING.yml +0 -12
  266. package/node_modules/get-intrinsic/.nycrc +0 -9
  267. package/node_modules/get-intrinsic/CHANGELOG.md +0 -186
  268. package/node_modules/get-intrinsic/LICENSE +0 -21
  269. package/node_modules/get-intrinsic/README.md +0 -71
  270. package/node_modules/get-intrinsic/index.js +0 -378
  271. package/node_modules/get-intrinsic/package.json +0 -97
  272. package/node_modules/get-intrinsic/test/GetIntrinsic.js +0 -274
  273. package/node_modules/get-proto/.eslintrc +0 -10
  274. package/node_modules/get-proto/.github/FUNDING.yml +0 -12
  275. package/node_modules/get-proto/.nycrc +0 -9
  276. package/node_modules/get-proto/CHANGELOG.md +0 -21
  277. package/node_modules/get-proto/LICENSE +0 -21
  278. package/node_modules/get-proto/Object.getPrototypeOf.d.ts +0 -5
  279. package/node_modules/get-proto/Object.getPrototypeOf.js +0 -6
  280. package/node_modules/get-proto/README.md +0 -50
  281. package/node_modules/get-proto/Reflect.getPrototypeOf.d.ts +0 -3
  282. package/node_modules/get-proto/Reflect.getPrototypeOf.js +0 -4
  283. package/node_modules/get-proto/index.d.ts +0 -5
  284. package/node_modules/get-proto/index.js +0 -27
  285. package/node_modules/get-proto/package.json +0 -81
  286. package/node_modules/get-proto/test/index.js +0 -68
  287. package/node_modules/get-proto/tsconfig.json +0 -9
  288. package/node_modules/gopd/.eslintrc +0 -16
  289. package/node_modules/gopd/.github/FUNDING.yml +0 -12
  290. package/node_modules/gopd/CHANGELOG.md +0 -45
  291. package/node_modules/gopd/LICENSE +0 -21
  292. package/node_modules/gopd/README.md +0 -40
  293. package/node_modules/gopd/gOPD.d.ts +0 -1
  294. package/node_modules/gopd/gOPD.js +0 -4
  295. package/node_modules/gopd/index.d.ts +0 -5
  296. package/node_modules/gopd/index.js +0 -15
  297. package/node_modules/gopd/package.json +0 -77
  298. package/node_modules/gopd/test/index.js +0 -36
  299. package/node_modules/gopd/tsconfig.json +0 -9
  300. package/node_modules/has-symbols/.eslintrc +0 -11
  301. package/node_modules/has-symbols/.github/FUNDING.yml +0 -12
  302. package/node_modules/has-symbols/.nycrc +0 -9
  303. package/node_modules/has-symbols/CHANGELOG.md +0 -91
  304. package/node_modules/has-symbols/LICENSE +0 -21
  305. package/node_modules/has-symbols/README.md +0 -46
  306. package/node_modules/has-symbols/index.d.ts +0 -3
  307. package/node_modules/has-symbols/index.js +0 -14
  308. package/node_modules/has-symbols/package.json +0 -111
  309. package/node_modules/has-symbols/shams.d.ts +0 -3
  310. package/node_modules/has-symbols/shams.js +0 -45
  311. package/node_modules/has-symbols/test/index.js +0 -22
  312. package/node_modules/has-symbols/test/shams/core-js.js +0 -29
  313. package/node_modules/has-symbols/test/shams/get-own-property-symbols.js +0 -29
  314. package/node_modules/has-symbols/test/tests.js +0 -58
  315. package/node_modules/has-symbols/tsconfig.json +0 -10
  316. package/node_modules/hasown/.github/FUNDING.yml +0 -12
  317. package/node_modules/hasown/.nycrc +0 -13
  318. package/node_modules/hasown/CHANGELOG.md +0 -51
  319. package/node_modules/hasown/LICENSE +0 -21
  320. package/node_modules/hasown/README.md +0 -40
  321. package/node_modules/hasown/eslint.config.mjs +0 -6
  322. package/node_modules/hasown/index.d.ts +0 -4
  323. package/node_modules/hasown/index.js +0 -8
  324. package/node_modules/hasown/package.json +0 -92
  325. package/node_modules/hasown/tsconfig.json +0 -6
  326. package/node_modules/http-errors/HISTORY.md +0 -186
  327. package/node_modules/http-errors/LICENSE +0 -23
  328. package/node_modules/http-errors/README.md +0 -169
  329. package/node_modules/http-errors/index.js +0 -290
  330. package/node_modules/http-errors/package.json +0 -54
  331. package/node_modules/inherits/LICENSE +0 -16
  332. package/node_modules/inherits/README.md +0 -42
  333. package/node_modules/inherits/inherits.js +0 -9
  334. package/node_modules/inherits/inherits_browser.js +0 -27
  335. package/node_modules/inherits/package.json +0 -29
  336. package/node_modules/ipaddr.js/LICENSE +0 -19
  337. package/node_modules/ipaddr.js/README.md +0 -233
  338. package/node_modules/ipaddr.js/ipaddr.min.js +0 -1
  339. package/node_modules/ipaddr.js/lib/ipaddr.js +0 -673
  340. package/node_modules/ipaddr.js/lib/ipaddr.js.d.ts +0 -68
  341. package/node_modules/ipaddr.js/package.json +0 -35
  342. package/node_modules/is-docker/cli.js +0 -5
  343. package/node_modules/is-docker/index.d.ts +0 -13
  344. package/node_modules/is-docker/index.js +0 -29
  345. package/node_modules/is-docker/license +0 -9
  346. package/node_modules/is-docker/package.json +0 -44
  347. package/node_modules/is-docker/readme.md +0 -27
  348. package/node_modules/is-inside-container/cli.js +0 -5
  349. package/node_modules/is-inside-container/index.d.ts +0 -13
  350. package/node_modules/is-inside-container/index.js +0 -23
  351. package/node_modules/is-inside-container/license +0 -9
  352. package/node_modules/is-inside-container/package.json +0 -51
  353. package/node_modules/is-inside-container/readme.md +0 -36
  354. package/node_modules/is-wsl/index.d.ts +0 -15
  355. package/node_modules/is-wsl/index.js +0 -36
  356. package/node_modules/is-wsl/license +0 -9
  357. package/node_modules/is-wsl/package.json +0 -58
  358. package/node_modules/is-wsl/readme.md +0 -21
  359. package/node_modules/math-intrinsics/.eslintrc +0 -16
  360. package/node_modules/math-intrinsics/.github/FUNDING.yml +0 -12
  361. package/node_modules/math-intrinsics/CHANGELOG.md +0 -24
  362. package/node_modules/math-intrinsics/LICENSE +0 -21
  363. package/node_modules/math-intrinsics/README.md +0 -50
  364. package/node_modules/math-intrinsics/abs.d.ts +0 -1
  365. package/node_modules/math-intrinsics/abs.js +0 -4
  366. package/node_modules/math-intrinsics/constants/maxArrayLength.d.ts +0 -3
  367. package/node_modules/math-intrinsics/constants/maxArrayLength.js +0 -4
  368. package/node_modules/math-intrinsics/constants/maxSafeInteger.d.ts +0 -3
  369. package/node_modules/math-intrinsics/constants/maxSafeInteger.js +0 -5
  370. package/node_modules/math-intrinsics/constants/maxValue.d.ts +0 -3
  371. package/node_modules/math-intrinsics/constants/maxValue.js +0 -5
  372. package/node_modules/math-intrinsics/floor.d.ts +0 -1
  373. package/node_modules/math-intrinsics/floor.js +0 -4
  374. package/node_modules/math-intrinsics/isFinite.d.ts +0 -3
  375. package/node_modules/math-intrinsics/isFinite.js +0 -12
  376. package/node_modules/math-intrinsics/isInteger.d.ts +0 -3
  377. package/node_modules/math-intrinsics/isInteger.js +0 -16
  378. package/node_modules/math-intrinsics/isNaN.d.ts +0 -1
  379. package/node_modules/math-intrinsics/isNaN.js +0 -6
  380. package/node_modules/math-intrinsics/isNegativeZero.d.ts +0 -3
  381. package/node_modules/math-intrinsics/isNegativeZero.js +0 -6
  382. package/node_modules/math-intrinsics/max.d.ts +0 -1
  383. package/node_modules/math-intrinsics/max.js +0 -4
  384. package/node_modules/math-intrinsics/min.d.ts +0 -1
  385. package/node_modules/math-intrinsics/min.js +0 -4
  386. package/node_modules/math-intrinsics/mod.d.ts +0 -3
  387. package/node_modules/math-intrinsics/mod.js +0 -9
  388. package/node_modules/math-intrinsics/package.json +0 -86
  389. package/node_modules/math-intrinsics/pow.d.ts +0 -1
  390. package/node_modules/math-intrinsics/pow.js +0 -4
  391. package/node_modules/math-intrinsics/round.d.ts +0 -1
  392. package/node_modules/math-intrinsics/round.js +0 -4
  393. package/node_modules/math-intrinsics/sign.d.ts +0 -3
  394. package/node_modules/math-intrinsics/sign.js +0 -11
  395. package/node_modules/math-intrinsics/test/index.js +0 -192
  396. package/node_modules/math-intrinsics/tsconfig.json +0 -3
  397. package/node_modules/methods/HISTORY.md +0 -29
  398. package/node_modules/methods/LICENSE +0 -24
  399. package/node_modules/methods/README.md +0 -51
  400. package/node_modules/methods/index.js +0 -69
  401. package/node_modules/methods/package.json +0 -36
  402. package/node_modules/mime/.npmignore +0 -0
  403. package/node_modules/mime/CHANGELOG.md +0 -164
  404. package/node_modules/mime/LICENSE +0 -21
  405. package/node_modules/mime/README.md +0 -90
  406. package/node_modules/mime/cli.js +0 -8
  407. package/node_modules/mime/mime.js +0 -108
  408. package/node_modules/mime/package.json +0 -44
  409. package/node_modules/mime/src/build.js +0 -53
  410. package/node_modules/mime/src/test.js +0 -60
  411. package/node_modules/mime/types.json +0 -1
  412. package/node_modules/ms/index.js +0 -162
  413. package/node_modules/ms/license.md +0 -21
  414. package/node_modules/ms/package.json +0 -38
  415. package/node_modules/ms/readme.md +0 -59
  416. package/node_modules/object-inspect/.eslintrc +0 -53
  417. package/node_modules/object-inspect/.github/FUNDING.yml +0 -12
  418. package/node_modules/object-inspect/.nycrc +0 -13
  419. package/node_modules/object-inspect/CHANGELOG.md +0 -424
  420. package/node_modules/object-inspect/LICENSE +0 -21
  421. package/node_modules/object-inspect/example/all.js +0 -23
  422. package/node_modules/object-inspect/example/circular.js +0 -6
  423. package/node_modules/object-inspect/example/fn.js +0 -5
  424. package/node_modules/object-inspect/example/inspect.js +0 -10
  425. package/node_modules/object-inspect/index.js +0 -544
  426. package/node_modules/object-inspect/package-support.json +0 -20
  427. package/node_modules/object-inspect/package.json +0 -105
  428. package/node_modules/object-inspect/readme.markdown +0 -84
  429. package/node_modules/object-inspect/test/bigint.js +0 -58
  430. package/node_modules/object-inspect/test/browser/dom.js +0 -15
  431. package/node_modules/object-inspect/test/circular.js +0 -16
  432. package/node_modules/object-inspect/test/deep.js +0 -12
  433. package/node_modules/object-inspect/test/element.js +0 -53
  434. package/node_modules/object-inspect/test/err.js +0 -48
  435. package/node_modules/object-inspect/test/fakes.js +0 -29
  436. package/node_modules/object-inspect/test/fn.js +0 -76
  437. package/node_modules/object-inspect/test/global.js +0 -17
  438. package/node_modules/object-inspect/test/has.js +0 -15
  439. package/node_modules/object-inspect/test/holes.js +0 -15
  440. package/node_modules/object-inspect/test/indent-option.js +0 -271
  441. package/node_modules/object-inspect/test/inspect.js +0 -139
  442. package/node_modules/object-inspect/test/lowbyte.js +0 -12
  443. package/node_modules/object-inspect/test/number.js +0 -58
  444. package/node_modules/object-inspect/test/quoteStyle.js +0 -26
  445. package/node_modules/object-inspect/test/toStringTag.js +0 -40
  446. package/node_modules/object-inspect/test/undef.js +0 -12
  447. package/node_modules/object-inspect/test/values.js +0 -261
  448. package/node_modules/object-inspect/test-core-js.js +0 -26
  449. package/node_modules/object-inspect/util.inspect.js +0 -1
  450. package/node_modules/on-finished/HISTORY.md +0 -98
  451. package/node_modules/on-finished/LICENSE +0 -23
  452. package/node_modules/on-finished/README.md +0 -162
  453. package/node_modules/on-finished/index.js +0 -234
  454. package/node_modules/on-finished/package.json +0 -39
  455. package/node_modules/open/index.d.ts +0 -158
  456. package/node_modules/open/index.js +0 -366
  457. package/node_modules/open/license +0 -9
  458. package/node_modules/open/node_modules/wsl-utils/index.d.ts +0 -21
  459. package/node_modules/open/node_modules/wsl-utils/index.js +0 -57
  460. package/node_modules/open/node_modules/wsl-utils/license +0 -9
  461. package/node_modules/open/node_modules/wsl-utils/package.json +0 -46
  462. package/node_modules/open/node_modules/wsl-utils/readme.md +0 -50
  463. package/node_modules/open/package.json +0 -68
  464. package/node_modules/open/readme.md +0 -183
  465. package/node_modules/open/xdg-open +0 -1267
  466. package/node_modules/parseurl/HISTORY.md +0 -58
  467. package/node_modules/parseurl/LICENSE +0 -24
  468. package/node_modules/parseurl/README.md +0 -133
  469. package/node_modules/parseurl/index.js +0 -158
  470. package/node_modules/parseurl/package.json +0 -40
  471. package/node_modules/progrok/LICENSE +0 -21
  472. package/node_modules/progrok/README.md +0 -331
  473. package/node_modules/progrok/THIRD_PARTY_NOTICES.md +0 -13
  474. package/node_modules/progrok/dist/index.js +0 -1626
  475. package/node_modules/progrok/dist/index.js.map +0 -1
  476. package/node_modules/progrok/dist/public/app.js +0 -529
  477. package/node_modules/progrok/dist/public/index.html +0 -47
  478. package/node_modules/progrok/dist/public/style.css +0 -392
  479. package/node_modules/progrok/node_modules/accepts/HISTORY.md +0 -243
  480. package/node_modules/progrok/node_modules/accepts/LICENSE +0 -23
  481. package/node_modules/progrok/node_modules/accepts/README.md +0 -140
  482. package/node_modules/progrok/node_modules/accepts/index.js +0 -238
  483. package/node_modules/progrok/node_modules/accepts/package.json +0 -47
  484. package/node_modules/progrok/node_modules/body-parser/HISTORY.md +0 -686
  485. package/node_modules/progrok/node_modules/body-parser/LICENSE +0 -23
  486. package/node_modules/progrok/node_modules/body-parser/README.md +0 -476
  487. package/node_modules/progrok/node_modules/body-parser/index.js +0 -156
  488. package/node_modules/progrok/node_modules/body-parser/lib/read.js +0 -205
  489. package/node_modules/progrok/node_modules/body-parser/lib/types/json.js +0 -243
  490. package/node_modules/progrok/node_modules/body-parser/lib/types/raw.js +0 -101
  491. package/node_modules/progrok/node_modules/body-parser/lib/types/text.js +0 -121
  492. package/node_modules/progrok/node_modules/body-parser/lib/types/urlencoded.js +0 -299
  493. package/node_modules/progrok/node_modules/body-parser/package.json +0 -55
  494. package/node_modules/progrok/node_modules/content-disposition/HISTORY.md +0 -60
  495. package/node_modules/progrok/node_modules/content-disposition/LICENSE +0 -22
  496. package/node_modules/progrok/node_modules/content-disposition/README.md +0 -142
  497. package/node_modules/progrok/node_modules/content-disposition/index.js +0 -458
  498. package/node_modules/progrok/node_modules/content-disposition/package.json +0 -44
  499. package/node_modules/progrok/node_modules/cookie-signature/History.md +0 -42
  500. package/node_modules/progrok/node_modules/cookie-signature/Readme.md +0 -42
  501. package/node_modules/progrok/node_modules/cookie-signature/index.js +0 -51
  502. package/node_modules/progrok/node_modules/cookie-signature/package.json +0 -18
  503. package/node_modules/progrok/node_modules/debug/.coveralls.yml +0 -1
  504. package/node_modules/progrok/node_modules/debug/.eslintrc +0 -11
  505. package/node_modules/progrok/node_modules/debug/.npmignore +0 -9
  506. package/node_modules/progrok/node_modules/debug/.travis.yml +0 -14
  507. package/node_modules/progrok/node_modules/debug/CHANGELOG.md +0 -362
  508. package/node_modules/progrok/node_modules/debug/LICENSE +0 -19
  509. package/node_modules/progrok/node_modules/debug/Makefile +0 -50
  510. package/node_modules/progrok/node_modules/debug/README.md +0 -312
  511. package/node_modules/progrok/node_modules/debug/component.json +0 -19
  512. package/node_modules/progrok/node_modules/debug/karma.conf.js +0 -70
  513. package/node_modules/progrok/node_modules/debug/node.js +0 -1
  514. package/node_modules/progrok/node_modules/debug/node_modules/ms/index.js +0 -152
  515. package/node_modules/progrok/node_modules/debug/node_modules/ms/license.md +0 -21
  516. package/node_modules/progrok/node_modules/debug/node_modules/ms/package.json +0 -37
  517. package/node_modules/progrok/node_modules/debug/node_modules/ms/readme.md +0 -51
  518. package/node_modules/progrok/node_modules/debug/package.json +0 -49
  519. package/node_modules/progrok/node_modules/debug/src/browser.js +0 -185
  520. package/node_modules/progrok/node_modules/debug/src/debug.js +0 -202
  521. package/node_modules/progrok/node_modules/debug/src/index.js +0 -10
  522. package/node_modules/progrok/node_modules/debug/src/inspector-log.js +0 -15
  523. package/node_modules/progrok/node_modules/debug/src/node.js +0 -248
  524. package/node_modules/progrok/node_modules/express/History.md +0 -3676
  525. package/node_modules/progrok/node_modules/express/LICENSE +0 -24
  526. package/node_modules/progrok/node_modules/express/Readme.md +0 -260
  527. package/node_modules/progrok/node_modules/express/index.js +0 -11
  528. package/node_modules/progrok/node_modules/express/lib/application.js +0 -661
  529. package/node_modules/progrok/node_modules/express/lib/express.js +0 -116
  530. package/node_modules/progrok/node_modules/express/lib/middleware/init.js +0 -43
  531. package/node_modules/progrok/node_modules/express/lib/middleware/query.js +0 -47
  532. package/node_modules/progrok/node_modules/express/lib/request.js +0 -525
  533. package/node_modules/progrok/node_modules/express/lib/response.js +0 -1179
  534. package/node_modules/progrok/node_modules/express/lib/router/index.js +0 -673
  535. package/node_modules/progrok/node_modules/express/lib/router/layer.js +0 -181
  536. package/node_modules/progrok/node_modules/express/lib/router/route.js +0 -230
  537. package/node_modules/progrok/node_modules/express/lib/utils.js +0 -304
  538. package/node_modules/progrok/node_modules/express/lib/view.js +0 -182
  539. package/node_modules/progrok/node_modules/express/package.json +0 -102
  540. package/node_modules/progrok/node_modules/finalhandler/HISTORY.md +0 -216
  541. package/node_modules/progrok/node_modules/finalhandler/LICENSE +0 -22
  542. package/node_modules/progrok/node_modules/finalhandler/README.md +0 -147
  543. package/node_modules/progrok/node_modules/finalhandler/SECURITY.md +0 -25
  544. package/node_modules/progrok/node_modules/finalhandler/index.js +0 -341
  545. package/node_modules/progrok/node_modules/finalhandler/package.json +0 -47
  546. package/node_modules/progrok/node_modules/fresh/HISTORY.md +0 -70
  547. package/node_modules/progrok/node_modules/fresh/LICENSE +0 -23
  548. package/node_modules/progrok/node_modules/fresh/README.md +0 -119
  549. package/node_modules/progrok/node_modules/fresh/index.js +0 -137
  550. package/node_modules/progrok/node_modules/fresh/package.json +0 -46
  551. package/node_modules/progrok/node_modules/iconv-lite/Changelog.md +0 -162
  552. package/node_modules/progrok/node_modules/iconv-lite/LICENSE +0 -21
  553. package/node_modules/progrok/node_modules/iconv-lite/README.md +0 -156
  554. package/node_modules/progrok/node_modules/iconv-lite/encodings/dbcs-codec.js +0 -555
  555. package/node_modules/progrok/node_modules/iconv-lite/encodings/dbcs-data.js +0 -176
  556. package/node_modules/progrok/node_modules/iconv-lite/encodings/index.js +0 -22
  557. package/node_modules/progrok/node_modules/iconv-lite/encodings/internal.js +0 -188
  558. package/node_modules/progrok/node_modules/iconv-lite/encodings/sbcs-codec.js +0 -72
  559. package/node_modules/progrok/node_modules/iconv-lite/encodings/sbcs-data-generated.js +0 -451
  560. package/node_modules/progrok/node_modules/iconv-lite/encodings/sbcs-data.js +0 -174
  561. package/node_modules/progrok/node_modules/iconv-lite/encodings/tables/big5-added.json +0 -122
  562. package/node_modules/progrok/node_modules/iconv-lite/encodings/tables/cp936.json +0 -264
  563. package/node_modules/progrok/node_modules/iconv-lite/encodings/tables/cp949.json +0 -273
  564. package/node_modules/progrok/node_modules/iconv-lite/encodings/tables/cp950.json +0 -177
  565. package/node_modules/progrok/node_modules/iconv-lite/encodings/tables/eucjp.json +0 -182
  566. package/node_modules/progrok/node_modules/iconv-lite/encodings/tables/gb18030-ranges.json +0 -1
  567. package/node_modules/progrok/node_modules/iconv-lite/encodings/tables/gbk-added.json +0 -55
  568. package/node_modules/progrok/node_modules/iconv-lite/encodings/tables/shiftjis.json +0 -125
  569. package/node_modules/progrok/node_modules/iconv-lite/encodings/utf16.js +0 -177
  570. package/node_modules/progrok/node_modules/iconv-lite/encodings/utf7.js +0 -290
  571. package/node_modules/progrok/node_modules/iconv-lite/lib/bom-handling.js +0 -52
  572. package/node_modules/progrok/node_modules/iconv-lite/lib/extend-node.js +0 -217
  573. package/node_modules/progrok/node_modules/iconv-lite/lib/index.d.ts +0 -24
  574. package/node_modules/progrok/node_modules/iconv-lite/lib/index.js +0 -153
  575. package/node_modules/progrok/node_modules/iconv-lite/lib/streams.js +0 -121
  576. package/node_modules/progrok/node_modules/iconv-lite/package.json +0 -46
  577. package/node_modules/progrok/node_modules/media-typer/HISTORY.md +0 -22
  578. package/node_modules/progrok/node_modules/media-typer/LICENSE +0 -22
  579. package/node_modules/progrok/node_modules/media-typer/README.md +0 -81
  580. package/node_modules/progrok/node_modules/media-typer/index.js +0 -270
  581. package/node_modules/progrok/node_modules/media-typer/package.json +0 -26
  582. package/node_modules/progrok/node_modules/merge-descriptors/HISTORY.md +0 -21
  583. package/node_modules/progrok/node_modules/merge-descriptors/LICENSE +0 -23
  584. package/node_modules/progrok/node_modules/merge-descriptors/README.md +0 -49
  585. package/node_modules/progrok/node_modules/merge-descriptors/index.js +0 -60
  586. package/node_modules/progrok/node_modules/merge-descriptors/package.json +0 -39
  587. package/node_modules/progrok/node_modules/mime-db/HISTORY.md +0 -507
  588. package/node_modules/progrok/node_modules/mime-db/LICENSE +0 -23
  589. package/node_modules/progrok/node_modules/mime-db/README.md +0 -100
  590. package/node_modules/progrok/node_modules/mime-db/db.json +0 -8519
  591. package/node_modules/progrok/node_modules/mime-db/index.js +0 -12
  592. package/node_modules/progrok/node_modules/mime-db/package.json +0 -60
  593. package/node_modules/progrok/node_modules/mime-types/HISTORY.md +0 -397
  594. package/node_modules/progrok/node_modules/mime-types/LICENSE +0 -23
  595. package/node_modules/progrok/node_modules/mime-types/README.md +0 -113
  596. package/node_modules/progrok/node_modules/mime-types/index.js +0 -188
  597. package/node_modules/progrok/node_modules/mime-types/package.json +0 -44
  598. package/node_modules/progrok/node_modules/negotiator/HISTORY.md +0 -108
  599. package/node_modules/progrok/node_modules/negotiator/LICENSE +0 -24
  600. package/node_modules/progrok/node_modules/negotiator/README.md +0 -203
  601. package/node_modules/progrok/node_modules/negotiator/index.js +0 -82
  602. package/node_modules/progrok/node_modules/negotiator/lib/charset.js +0 -169
  603. package/node_modules/progrok/node_modules/negotiator/lib/encoding.js +0 -184
  604. package/node_modules/progrok/node_modules/negotiator/lib/language.js +0 -179
  605. package/node_modules/progrok/node_modules/negotiator/lib/mediaType.js +0 -294
  606. package/node_modules/progrok/node_modules/negotiator/package.json +0 -42
  607. package/node_modules/progrok/node_modules/path-to-regexp/LICENSE +0 -21
  608. package/node_modules/progrok/node_modules/path-to-regexp/Readme.md +0 -35
  609. package/node_modules/progrok/node_modules/path-to-regexp/index.js +0 -158
  610. package/node_modules/progrok/node_modules/path-to-regexp/package.json +0 -30
  611. package/node_modules/progrok/node_modules/raw-body/LICENSE +0 -22
  612. package/node_modules/progrok/node_modules/raw-body/README.md +0 -223
  613. package/node_modules/progrok/node_modules/raw-body/index.d.ts +0 -87
  614. package/node_modules/progrok/node_modules/raw-body/index.js +0 -336
  615. package/node_modules/progrok/node_modules/raw-body/package.json +0 -47
  616. package/node_modules/progrok/node_modules/send/HISTORY.md +0 -538
  617. package/node_modules/progrok/node_modules/send/LICENSE +0 -23
  618. package/node_modules/progrok/node_modules/send/README.md +0 -327
  619. package/node_modules/progrok/node_modules/send/SECURITY.md +0 -24
  620. package/node_modules/progrok/node_modules/send/index.js +0 -1142
  621. package/node_modules/progrok/node_modules/send/package.json +0 -62
  622. package/node_modules/progrok/node_modules/serve-static/HISTORY.md +0 -493
  623. package/node_modules/progrok/node_modules/serve-static/LICENSE +0 -25
  624. package/node_modules/progrok/node_modules/serve-static/README.md +0 -257
  625. package/node_modules/progrok/node_modules/serve-static/index.js +0 -209
  626. package/node_modules/progrok/node_modules/serve-static/package.json +0 -42
  627. package/node_modules/progrok/node_modules/type-is/HISTORY.md +0 -259
  628. package/node_modules/progrok/node_modules/type-is/LICENSE +0 -23
  629. package/node_modules/progrok/node_modules/type-is/README.md +0 -170
  630. package/node_modules/progrok/node_modules/type-is/index.js +0 -266
  631. package/node_modules/progrok/node_modules/type-is/package.json +0 -45
  632. package/node_modules/progrok/package.json +0 -52
  633. package/node_modules/progrok/skills/progrok/SKILL.md +0 -293
  634. package/node_modules/proxy-addr/HISTORY.md +0 -161
  635. package/node_modules/proxy-addr/LICENSE +0 -22
  636. package/node_modules/proxy-addr/README.md +0 -139
  637. package/node_modules/proxy-addr/index.js +0 -327
  638. package/node_modules/proxy-addr/package.json +0 -47
  639. package/node_modules/qs/.editorconfig +0 -46
  640. package/node_modules/qs/.github/FUNDING.yml +0 -12
  641. package/node_modules/qs/.github/SECURITY.md +0 -11
  642. package/node_modules/qs/.github/THREAT_MODEL.md +0 -78
  643. package/node_modules/qs/.nycrc +0 -13
  644. package/node_modules/qs/CHANGELOG.md +0 -822
  645. package/node_modules/qs/LICENSE.md +0 -29
  646. package/node_modules/qs/README.md +0 -758
  647. package/node_modules/qs/dist/qs.js +0 -141
  648. package/node_modules/qs/eslint.config.mjs +0 -57
  649. package/node_modules/qs/lib/formats.js +0 -23
  650. package/node_modules/qs/lib/index.js +0 -11
  651. package/node_modules/qs/lib/parse.js +0 -403
  652. package/node_modules/qs/lib/stringify.js +0 -363
  653. package/node_modules/qs/lib/utils.js +0 -342
  654. package/node_modules/qs/package.json +0 -94
  655. package/node_modules/qs/test/empty-keys-cases.js +0 -267
  656. package/node_modules/qs/test/parse.js +0 -1703
  657. package/node_modules/qs/test/stringify.js +0 -1448
  658. package/node_modules/qs/test/utils.js +0 -432
  659. package/node_modules/range-parser/HISTORY.md +0 -56
  660. package/node_modules/range-parser/LICENSE +0 -23
  661. package/node_modules/range-parser/README.md +0 -84
  662. package/node_modules/range-parser/index.js +0 -162
  663. package/node_modules/range-parser/package.json +0 -44
  664. package/node_modules/run-applescript/index.d.ts +0 -66
  665. package/node_modules/run-applescript/index.js +0 -37
  666. package/node_modules/run-applescript/license +0 -9
  667. package/node_modules/run-applescript/package.json +0 -42
  668. package/node_modules/run-applescript/readme.md +0 -78
  669. package/node_modules/safe-buffer/LICENSE +0 -21
  670. package/node_modules/safe-buffer/README.md +0 -584
  671. package/node_modules/safe-buffer/index.d.ts +0 -187
  672. package/node_modules/safe-buffer/index.js +0 -65
  673. package/node_modules/safe-buffer/package.json +0 -51
  674. package/node_modules/safer-buffer/LICENSE +0 -21
  675. package/node_modules/safer-buffer/Porting-Buffer.md +0 -268
  676. package/node_modules/safer-buffer/Readme.md +0 -156
  677. package/node_modules/safer-buffer/dangerous.js +0 -58
  678. package/node_modules/safer-buffer/package.json +0 -34
  679. package/node_modules/safer-buffer/safer.js +0 -77
  680. package/node_modules/safer-buffer/tests.js +0 -406
  681. package/node_modules/setprototypeof/LICENSE +0 -13
  682. package/node_modules/setprototypeof/README.md +0 -31
  683. package/node_modules/setprototypeof/index.d.ts +0 -2
  684. package/node_modules/setprototypeof/index.js +0 -17
  685. package/node_modules/setprototypeof/package.json +0 -38
  686. package/node_modules/setprototypeof/test/index.js +0 -24
  687. package/node_modules/side-channel/.editorconfig +0 -9
  688. package/node_modules/side-channel/.eslintrc +0 -12
  689. package/node_modules/side-channel/.github/FUNDING.yml +0 -12
  690. package/node_modules/side-channel/.nycrc +0 -13
  691. package/node_modules/side-channel/CHANGELOG.md +0 -110
  692. package/node_modules/side-channel/LICENSE +0 -21
  693. package/node_modules/side-channel/README.md +0 -61
  694. package/node_modules/side-channel/index.d.ts +0 -14
  695. package/node_modules/side-channel/index.js +0 -43
  696. package/node_modules/side-channel/package.json +0 -85
  697. package/node_modules/side-channel/test/index.js +0 -104
  698. package/node_modules/side-channel/tsconfig.json +0 -9
  699. package/node_modules/side-channel-list/.editorconfig +0 -9
  700. package/node_modules/side-channel-list/.eslintrc +0 -11
  701. package/node_modules/side-channel-list/.github/FUNDING.yml +0 -12
  702. package/node_modules/side-channel-list/.nycrc +0 -13
  703. package/node_modules/side-channel-list/CHANGELOG.md +0 -36
  704. package/node_modules/side-channel-list/LICENSE +0 -21
  705. package/node_modules/side-channel-list/README.md +0 -62
  706. package/node_modules/side-channel-list/index.d.ts +0 -13
  707. package/node_modules/side-channel-list/index.js +0 -111
  708. package/node_modules/side-channel-list/list.d.ts +0 -14
  709. package/node_modules/side-channel-list/package.json +0 -77
  710. package/node_modules/side-channel-list/test/index.js +0 -154
  711. package/node_modules/side-channel-list/tsconfig.json +0 -9
  712. package/node_modules/side-channel-map/.editorconfig +0 -9
  713. package/node_modules/side-channel-map/.eslintrc +0 -11
  714. package/node_modules/side-channel-map/.github/FUNDING.yml +0 -12
  715. package/node_modules/side-channel-map/.nycrc +0 -13
  716. package/node_modules/side-channel-map/CHANGELOG.md +0 -22
  717. package/node_modules/side-channel-map/LICENSE +0 -21
  718. package/node_modules/side-channel-map/README.md +0 -62
  719. package/node_modules/side-channel-map/index.d.ts +0 -15
  720. package/node_modules/side-channel-map/index.js +0 -68
  721. package/node_modules/side-channel-map/package.json +0 -80
  722. package/node_modules/side-channel-map/test/index.js +0 -114
  723. package/node_modules/side-channel-map/tsconfig.json +0 -9
  724. package/node_modules/side-channel-weakmap/.editorconfig +0 -9
  725. package/node_modules/side-channel-weakmap/.eslintrc +0 -12
  726. package/node_modules/side-channel-weakmap/.github/FUNDING.yml +0 -12
  727. package/node_modules/side-channel-weakmap/.nycrc +0 -13
  728. package/node_modules/side-channel-weakmap/CHANGELOG.md +0 -28
  729. package/node_modules/side-channel-weakmap/LICENSE +0 -21
  730. package/node_modules/side-channel-weakmap/README.md +0 -62
  731. package/node_modules/side-channel-weakmap/index.d.ts +0 -15
  732. package/node_modules/side-channel-weakmap/index.js +0 -84
  733. package/node_modules/side-channel-weakmap/package.json +0 -87
  734. package/node_modules/side-channel-weakmap/test/index.js +0 -114
  735. package/node_modules/side-channel-weakmap/tsconfig.json +0 -9
  736. package/node_modules/statuses/HISTORY.md +0 -87
  737. package/node_modules/statuses/LICENSE +0 -23
  738. package/node_modules/statuses/README.md +0 -139
  739. package/node_modules/statuses/codes.json +0 -65
  740. package/node_modules/statuses/index.js +0 -146
  741. package/node_modules/statuses/package.json +0 -49
  742. package/node_modules/toidentifier/HISTORY.md +0 -9
  743. package/node_modules/toidentifier/LICENSE +0 -21
  744. package/node_modules/toidentifier/README.md +0 -61
  745. package/node_modules/toidentifier/index.js +0 -32
  746. package/node_modules/toidentifier/package.json +0 -38
  747. package/node_modules/unpipe/HISTORY.md +0 -4
  748. package/node_modules/unpipe/LICENSE +0 -22
  749. package/node_modules/unpipe/README.md +0 -43
  750. package/node_modules/unpipe/index.js +0 -69
  751. package/node_modules/unpipe/package.json +0 -27
  752. package/node_modules/utils-merge/.npmignore +0 -9
  753. package/node_modules/utils-merge/LICENSE +0 -20
  754. package/node_modules/utils-merge/README.md +0 -34
  755. package/node_modules/utils-merge/index.js +0 -23
  756. package/node_modules/utils-merge/package.json +0 -40
  757. package/node_modules/vary/HISTORY.md +0 -39
  758. package/node_modules/vary/LICENSE +0 -22
  759. package/node_modules/vary/README.md +0 -101
  760. package/node_modules/vary/index.js +0 -149
  761. package/node_modules/vary/package.json +0 -43
  762. package/ui/dist/assets/index-DYtUJ4t0.js +0 -22
  763. package/ui/dist/assets/useAgentDialogFocus-B2snKbzK.js +0 -1
  764. package/vendor/progrok-0.2.0.tgz +0 -0
package/docs/CLI.zh-CN.md CHANGED
@@ -14,7 +14,7 @@
14
14
  | `ima2 doctor` |诊断节点、包、配置和身份验证|
15
15
  | `ima2 doctor image-probe [--json]` |运行实时清理的响应图像探针`EMPTY_RESPONSE`支持|
16
16
  | `ima2 open` |打开网络UI在浏览器中|
17
- | `ima2 grok login/status/models/proxy` |管理捆绑的progrok使用的运行时Grok提供者|
17
+ | `ima2 grok login/status/logout` |管理`Grok`提供者使用的xAI OAuth会话|
18
18
  | `ima2 reset` |删除保存的配置|
19
19
  | `ima2 backfill-thumbs` |生成图像和视频缺失的图库缩略图(离线,无需运行服务器)|
20
20
 
@@ -82,7 +82,7 @@
82
82
 
83
83
  - `api`迫使API-key 响应路径并需要配置API钥匙。
84
84
  - `oauth`迫使当地OAuth代理路径。
85
- - `grok`使用捆绑的progrok xAI代理人 (`127.0.0.1:18645`)。经典一代首次运行强制xAI通过响应进行网络搜索API,然后询问`grok-4.5`打电话ima2是当地的`generate_image`工具,那么ima2执行xAI `/v1/images/generations`. `grok-4.3`仍然可以作为显式兼容性覆盖使用。如果`--ref`附加图像,最后一步使用xAI `/v1/images/edits`相反,图像到图像/参考上下文被保留。型号:`grok-imagine-image`, `grok-imagine-image-quality`。大小映射到xAI `aspect_ratio`和`resolution`;这UI网络搜索切换是OpenAI-仅提供者因为Grok搜索始终在此路径中进行。
85
+ - `grok`使用`~/.progrok/auth.json`中的xAI OAuth会话直接调用`https://api.x.ai`。经典一代首次运行强制xAI通过响应进行网络搜索API,然后询问`grok-4.5`打电话ima2是当地的`generate_image`工具,那么ima2执行xAI `/v1/images/generations`. `grok-4.3`仍然可以作为显式兼容性覆盖使用。如果`--ref`附加图像,最后一步使用xAI `/v1/images/edits`相反,图像到图像/参考上下文被保留。型号:`grok-imagine-image`, `grok-imagine-image-quality`。大小映射到xAI `aspect_ratio`和`resolution`;这UI网络搜索切换是OpenAI-仅提供者因为Grok搜索始终在此路径中进行。
86
86
  - `agy`产生Antigravity CLI通过Google生成Gemini (`nano-banana-2`)。固定1024×1024JPEG输出,最多 3 个参考值没有网络搜索、质量、尺寸或遮罩控制。如果`agy`不在服务器进程 PATH 上,ima2还检查常见的用户本地安装,例如`~/.local/bin/agy`;放`IMA2_AGY_BIN=/absolute/path/to/agy`强制使用特定的二进制文件。
87
87
  - `gemini-api`调用 Google 生成语言API直接地。型号:`nano-banana-2` (Gemini3.1 Flash 图像)和`nano-banana-pro` (Gemini3 专业图像)。使用`--model nano-banana-2`或者`--model nano-banana-pro`来选择。支持`--size`对于直接的宽高比和分辨率 (512px–4K)API小路;Vertex AI忽略方面/大小。需要`GEMINI_API_KEY`或一个Vertex AI服务帐户(`VERTEX_SERVICE_ACCOUNT_JSON`)。切换自`agy`或者`gemini-api`提供商自动选择相应的Gemini模型;切换离开重置为GPT默认。
88
88
  - `atlascloud`致电 Atlas Cloud 媒体API直接地。型号:`openai/gpt-image-2/text-to-image`用于文本到图像和`openai/gpt-image-2/edit`当附有参考文献时。需要`ATLASCLOUD_API_KEY`;网络搜索、推理、掩码和视频控制将被忽略。
@@ -90,11 +90,11 @@
90
90
  - `runway` / `higgsfield`(仅限生成/视频)路线MCP异步管道(`POST /api/mcp/generate` + SSE等待)。Runway需要一个MCP联系;Higgsfield仅保留目录(`locked`)直到付费计划。MCP车道接受`-n 1`仅,画廊文件名`--ref`,并拒绝仅核心标志`FLAG_NOT_SUPPORTED`.
91
91
  - `auto`保留路由默认行为并当前解析为GPT OAuth除非服务器路由发生变化(仅限编辑/多模式/节点;在 3.0.0 中从 gen/video 中删除)。
92
92
 
93
- `ima2 serve`开始捆绑Grok自动代理。没有单独的`progrok`
94
- 需要安装。使用`ima2 grok login`一次授权xAI OAuth。登录
95
- 默认为`--manual-paste`所以 PowerShell、终端和远程 shell 都使用
96
- 相同的复制/粘贴流程。放`IMA2_NO_GROK_PROXY=1`仅当您想管理时
97
- 代理自己。
93
+ Grok通道不需要本地代理,也不需要单独安装。使用`ima2 grok login`
94
+ 一次授权xAI OAuth;设备代码流程会打印一个URL和验证码,保存下来的
95
+ 会话在过期前 2 分钟自动刷新。会话存放在`~/.progrok/auth.json`,
96
+ 如果你正好装了progrok CLI,两者共用同一个文件。`ima2 grok status --probe`
97
+ 会向xAI核对会话,`ima2 grok logout`删除它。
98
98
 
99
99
  Grok尺寸映射如下xAI的形象API, 不是OpenAI's `size`场地。ima2
100
100
  将请求的大小保留在本地元数据中,但发送`aspect_ratio`例如
@@ -352,7 +352,7 @@ Windows DNS/碎片绕过工具(例如 SecretDNS)正在使用。
352
352
  | `ima2 billing` | API使用探针通过`/api/billing` (OpenAI/API- 配置后的密钥积分)。Grok和NovelAI配额仅在网页UI中通过`GET /api/quota`:当前的每周百分比/重置Grok建造xAIauth,每月遗留`usedUsd`/`limitUsd`倒退。|
353
353
  | `ima2 providers` |配置的提供商|
354
354
  | `ima2 oauth status` | OAuth代理状态|
355
- | `ima2 grok status` |捆绑式progrok / xAI图像模型探测状态|
355
+ | `ima2 grok status` |保存的xAI OAuth会话状态,加`--probe`可查看图像模型可见性|
356
356
  | `ima2 ping` |健康检查正在运行的服务器|
357
357
 
358
358
  ## 配置
package/docs/CLI.zh-TW.md CHANGED
@@ -14,7 +14,7 @@
14
14
  | `ima2 doctor` |診斷節點、套件、配置和身份驗證|
15
15
  | `ima2 doctor image-probe [--json]` |運行即時清理的響應影像探針`EMPTY_RESPONSE`支援|
16
16
  | `ima2 open` |開啟網路UI在瀏覽器中|
17
- | `ima2 grok login/status/models/proxy` |管理捆綁的progrok使用的運行時Grok提供者|
17
+ | `ima2 grok login/status/logout` |管理`Grok`提供者使用的xAI OAuth工作階段|
18
18
  | `ima2 reset` |刪除已儲存的配置|
19
19
  | `ima2 backfill-thumbs` |產生影像和影片缺少的圖庫縮圖(離線,無需運行伺服器)|
20
20
 
@@ -82,7 +82,7 @@
82
82
 
83
83
  - `api`迫使API-key 回應路徑並需要配置API鑰匙。
84
84
  - `oauth`迫使當地OAuth代理路徑。
85
- - `grok`使用捆綁的progrok xAI代理人 (`127.0.0.1:18645`)。經典一代首次運行強制xAI透過回應進行網路搜尋API,然後詢問`grok-4.5`打電話ima2是當地的`generate_image`工具,那麼ima2執行xAI `/v1/images/generations`. `grok-4.3`仍然可以作為顯式相容性覆蓋使用。如果`--ref`附加圖像,最後一步使用xAI `/v1/images/edits`相反,圖像到圖像/參考上下文被保留。型號:`grok-imagine-image`, `grok-imagine-image-quality`。大小映射到xAI `aspect_ratio`和`resolution`;這UI網路搜尋切換是OpenAI-僅提供者因為Grok搜尋始終在此路徑中進行。
85
+ - `grok`使用`~/.progrok/auth.json`中的xAI OAuth工作階段直接呼叫`https://api.x.ai`。經典一代首次運行強制xAI透過回應進行網路搜尋API,然後詢問`grok-4.5`打電話ima2是當地的`generate_image`工具,那麼ima2執行xAI `/v1/images/generations`. `grok-4.3`仍然可以作為顯式相容性覆蓋使用。如果`--ref`附加圖像,最後一步使用xAI `/v1/images/edits`相反,圖像到圖像/參考上下文被保留。型號:`grok-imagine-image`, `grok-imagine-image-quality`。大小映射到xAI `aspect_ratio`和`resolution`;這UI網路搜尋切換是OpenAI-僅提供者因為Grok搜尋始終在此路徑中進行。
86
86
  - `agy`產生Antigravity CLI透過Google生成Gemini (`nano-banana-2`)。固定1024×1024JPEG輸出,最多 3 個參考值沒有網路搜尋、品質、尺寸或遮罩控制。如果`agy`不在伺服器進程 PATH 上,ima2也檢查常見的用戶本地安裝,例如`~/.local/bin/agy`;放`IMA2_AGY_BIN=/absolute/path/to/agy`強制使用特定的二進位。
87
87
  - `gemini-api`呼叫 Google 生成語言API直接地。型號:`nano-banana-2` (Gemini3.1 Flash 影像)和`nano-banana-pro` (Gemini3 專業圖像)。使用`--model nano-banana-2`或者`--model nano-banana-pro`來選擇。支援`--size`對於直接的寬高比和解析度 (512px–4K)API小路;Vertex AI忽略方面/大小。需要`GEMINI_API_KEY`或一個Vertex AI服務帳戶(`VERTEX_SERVICE_ACCOUNT_JSON`)。切換自`agy`或者`gemini-api`提供者自動選擇相應的Gemini模型;切換離開重置為GPT預設.
88
88
  - `atlascloud`致電 Atlas Cloud 媒體API直接地。型號:`openai/gpt-image-2/text-to-image`用於文字到圖像和`openai/gpt-image-2/edit`當附有參考文獻時。需要`ATLASCLOUD_API_KEY`;網路搜尋、推理、遮罩和視訊控制將被忽略。
@@ -90,11 +90,11 @@
90
90
  - `runway` / `higgsfield`(僅限生成/視訊)路線MCP非同步管道(`POST /api/mcp/generate` + SSE等待)。Runway需要一個MCP聯繫;Higgsfield僅保留目錄(`locked`)直到付費計劃。MCP車道接受`-n 1`僅,圖庫檔案名`--ref`,並拒絕僅核心標誌`FLAG_NOT_SUPPORTED`.
91
91
  - `auto`保留路由預設行為並目前解析為GPT OAuth除非伺服器路由發生變化(僅限編輯/多模式/節點;在 3.0.0 中從 gen/video 中刪除)。
92
92
 
93
- `ima2 serve`開始捆綁Grok自動代理。沒有單獨的`progrok`
94
- 需要安裝。使用`ima2 grok login`一次授權xAI OAuth。登入
95
- 預設為`--manual-paste`所以 PowerShell、終端機和遠端 shell 都使用
96
- 相同的複製/貼上流程。放`IMA2_NO_GROK_PROXY=1`僅當您想管理時
97
- 代理自己。
93
+ Grok通道不需要本機代理,也不需要另外安裝。使用`ima2 grok login`
94
+ 一次授權xAI OAuth;裝置代碼流程會印出一個URL和驗證碼,儲存下來的
95
+ 工作階段在過期前 2 分鐘自動更新。工作階段存放在`~/.progrok/auth.json`,
96
+ 如果你剛好裝了progrok CLI,兩者共用同一個檔案。`ima2 grok status --probe`
97
+ 會向xAI核對工作階段,`ima2 grok logout`刪除它。
98
98
 
99
99
  Grok尺寸映射如下xAI的形象API, 不是OpenAI's `size`場地。ima2
100
100
  將請求的大小保留在本地元資料中,但發送`aspect_ratio`例如
@@ -352,7 +352,7 @@ Windows DNS/碎片繞過工具(例如 SecretDNS)正在使用。
352
352
  | `ima2 billing` | API使用探針通過`/api/billing` (OpenAI/API- 配置後的金鑰積分)。Grok和NovelAI配額僅在網頁UI中透過`GET /api/quota`:目前的每週百分比/重置Grok建造xAIauth,每月遺留`usedUsd`/`limitUsd`倒退。|
353
353
  | `ima2 providers` |配置的提供者|
354
354
  | `ima2 oauth status` | OAuth代理狀態|
355
- | `ima2 grok status` |捆綁式progrok / xAI影像模型探測狀態|
355
+ | `ima2 grok status` |儲存的xAI OAuth工作階段狀態,加`--probe`可查看影像模型可見性|
356
356
  | `ima2 ping` |健康檢查正在運行的伺服器|
357
357
 
358
358
  ## 配置
package/docs/README.ko.md CHANGED
@@ -128,12 +128,12 @@ Ctrl+C로 DB, 소켓, 자식 프로세스를 정리할 수 있습니다. Windows
128
128
 
129
129
  ## 이미지 생성 공급자
130
130
 
131
- 이미지 생성은 로컬 Codex/ChatGPT OAuth, OpenAI API key, 번들 Grok 공급자를 지원합니다.
131
+ 이미지 생성은 로컬 Codex/ChatGPT OAuth, OpenAI API key, Grok 공급자를 지원합니다.
132
132
 
133
133
  - `provider: "oauth"`는 로컬 Codex OAuth 프록시를 사용합니다.
134
134
  - `provider: "api"`는 OpenAI Responses API의 `image_generation` 도구를 사용합니다.
135
- - `provider: "grok"`는 번들 `progrok`을 `127.0.0.1:18645`에서 띄우고, xAI Web Search와 플래너(기본: `grok-4.5`, 설정 또는 `--planner-model`로 변경 가능)를 거친 뒤 xAI Images API를 호출합니다. `grok-4.3`은 호환 선택지로 유지합니다.
136
- - `provider: "grok-api"`는 `XAI_API_KEY`로 xAI Images API를 직접 호출합니다 (progrok OAuth 없음).
135
+ - `provider: "grok"`는 `~/.progrok/auth.json`에 저장된 xAI OAuth 세션으로 `https://api.x.ai`를 직접 호출합니다. xAI Web Search와 플래너(기본: `grok-4.5`, 설정 또는 `--planner-model`로 변경 가능)를 거친 뒤 xAI Images API로 이어집니다. `grok-4.3`은 호환 선택지로 유지합니다. 처음 한 번 `ima2 grok login` 또는 설정 화면의 **Switch Account**로 로그인하면, 이후에는 만료 2분 전에 토큰이 자동으로 갱신됩니다.
136
+ - `provider: "grok-api"`는 `XAI_API_KEY`로 xAI Images API를 직접 호출합니다 (OAuth 세션을 쓰지 않습니다).
137
137
  - `provider: "agy"`는 로컬 Antigravity CLI(`agy -p`)로 Gemini `nano-banana-2` 이미지를 생성합니다 (`IMA2_AGY_BIN`).
138
138
  - `provider: "gemini-api"`는 Google Generative Language API 또는 Vertex AI를 사용합니다 (`GEMINI_API_KEY` / `VERTEX_SERVICE_ACCOUNT_JSON`; 둘 다 있으면 Vertex 우선).
139
139
 
@@ -263,9 +263,6 @@ environment variables > ~/.ima2/config.json > built-in defaults
263
263
  | `IMA2_GENERATED_DIR` | `~/.ima2/generated` | 생성 이미지 저장 위치 |
264
264
  | `IMA2_IMAGE_MODEL_DEFAULT` | `gpt-5.6-luna` | 서버 fallback 이미지 모델 |
265
265
  | `IMA2_NO_OAUTH_PROXY` | — | `1`이면 OAuth 프록시 자동 시작 비활성화 |
266
- | `IMA2_GROK_PROXY_HOST` | `127.0.0.1` | 번들 progrok 프록시 host |
267
- | `IMA2_GROK_PROXY_PORT` | `18645` | 번들 progrok 프록시 port |
268
- | `IMA2_NO_GROK_PROXY` | — | `1`이면 progrok 자동 시작 비활성화 |
269
266
  | `IMA2_GROK_PLANNER_MODEL` | `grok-4.5` | Grok 플래너 모델 (설정 UI 또는 `--planner-model` CLI 플래그로도 변경 가능) |
270
267
  | `IMA2_GROK_IMAGE_MODEL_DEFAULT` | `grok-imagine-image-quality` | 기본 Grok 이미지 모델 |
271
268
  | `IMA2_GROK_VIDEO_MODEL_DEFAULT` | `grok-imagine-video-1.5` | 기본 Grok 비디오 모델 |
@@ -278,6 +275,8 @@ environment variables > ~/.ima2/config.json > built-in defaults
278
275
  | `IMA2_AGY_BIN` | PATH의 `agy` | `provider: "agy"` 바이너리 경로 |
279
276
  | `IMA2_MAX_PARALLEL` | `24` | 서버 전역 병렬 생성 상한 |
280
277
 
278
+ `IMA2_GROK_PROXY_HOST`, `IMA2_GROK_PROXY_PORT`, `IMA2_NO_GROK_PROXY`, `IMA2_GROK_RESTART_*`는 로컬 Grok 프록시와 함께 3.16에서 제거되어 더 이상 읽지 않습니다. 값을 남겨 두어도 아무 일도 일어나지 않습니다.
279
+
281
280
  ### 로그 모드
282
281
 
283
282
  `ima2 serve`는 일반 사용자 기준으로 터미널 출력을 조용하게 유지합니다. 시작 URL, 경고, 오류는 보이지만 요청/노드/OAuth structured log는 기본적으로 숨깁니다.
@@ -165,8 +165,8 @@ ima2 skill install --tmp # install to temp dir (fallback)
165
165
 
166
166
  - `provider: "oauth"`使用本地的Codex OAuth代理人。
167
167
  - `provider: "api"`称为OpenAI回应API与托管的`image_generation`工具。
168
- - `provider: "grok"`开始捆绑`progrok`在`127.0.0.1:18645`, 强制运行xAI网络搜索加上规划者通行证(默认:`grok-4.5`,可在设置中配置或通过`--planner-model`),然后调用xAI图片API通过本地代理。`grok-4.3`仍然可以作为显式兼容性覆盖使用。
169
- - `provider: "grok-api"`称为xAI图片API直接与`XAI_API_KEY`(无捆绑progrok OAuth代理人)。
168
+ - `provider: "grok"`使用`~/.progrok/auth.json`中的xAI OAuth会话直接调用`https://api.x.ai`, 强制运行xAI网络搜索加上规划者通行证(默认:`grok-4.5`,可在设置中配置或通过`--planner-model`),然后调用xAI图片API。`grok-4.3`仍然可以作为显式兼容性覆盖使用。用`ima2 grok login`或网络UI登录一次;令牌在过期前 2 分钟自动刷新。
169
+ - `provider: "grok-api"`称为xAI图片API直接与`XAI_API_KEY`(使用API密钥而不是OAuth会话)。
170
170
  - `provider: "agy"`产生Antigravity CLI (`agy -p`)通过Google生成图像Gemini's `default_api:generate_image`工具(型号:`nano-banana-2`)。输出固定为1024×1024JPEG,最多 3 个参考图像。没有网络搜索、质量或大小控制。
171
171
  - `provider: "gemini-api"`调用 Google 生成语言API直接地。支持两种型号:`nano-banana-2` (Gemini3.1 Flash 图像)和`nano-banana-pro` (Gemini3 专业图像)。身份验证是通过`GEMINI_API_KEY`环境变量、网络UI密钥管理,或Vertex AI服务帐户JSON (`VERTEX_SERVICE_ACCOUNT_JSON`)。当两者都APIkey 和 Vertex 凭证已配置,Vertex 优先。支持可变宽高比(1:1 至 21:9)和四个分辨率级别(512px、1K、2K、4K);这些控制仅在直接上受到尊重API路径——Vertex AI端点忽略方面/大小,因为它不接受`response_format`场地。每个型号的成本不同:`nano-banana-2`(闪存):512=0.001 美元、1K=0.003 美元、2K=0.004 美元、4K=0.006 美元;`nano-banana-pro`:1K=0.007 美元,2K=0.007 美元,4K=0.013 美元。没有网络搜索或掩码控制。
172
172
  - API-密钥生成支持经典生成、编辑、掩码引导编辑、多模式和节点生成。
@@ -174,6 +174,8 @@ ima2 skill install --tmp # install to temp dir (fallback)
174
174
 
175
175
  如果未指定提供商,应用程序将保留当前的GPT OAuth/默认行为。GPT OAuth和API-密钥生成默认为`gpt-5.6-luna`;这API-key路径也默认为`low`推理和`1024x1024`除非请求通过了经过验证的选项。Grok图像生成默认为`grok-imagine-image-quality`.
176
176
 
177
+ 关于OAuth Grok通道有一点需要说明:xAI只把`/v1/me`记录为接受OAuth令牌的端点,所以用该令牌调用`api.x.ai`的图像与视频接口走的是未文档化的路径。它目前可用——progrok一直依赖同一条路径——但没有任何兼容性承诺。如果xAI关闭这条路径,用`XAI_API_KEY`的`provider: "grok-api"`是有文档的方案,且不受影响。
178
+
177
179
  Grok图像生成公开了模型选择器(`grok-imagine-image` / `grok-imagine-image-quality`)和尺寸选择器(长宽比 + 1k/2k 分辨率)。设置页面更喜欢Grok建立每周积分百分比并重置时间`GET /v1/billing?format=credits`;如果该来源不可用,则会退回到传统的每月计费窗口,并且`$used/$limit`. A **切换账户**按钮启动设备代码OAuth流动 (`POST /api/auth/switch`)无需离开应用程序即可重新进行身份验证。
178
180
 
179
181
  Grok视频生成默认为规范`grok-imagine-video-1.5`; `grok-imagine-video`仍然可用于仅限基本模型的 Ref2V、V2V 编辑和扩展路径,以及旧版本`grok-imagine-video-1.5-preview`字符串被接受作为别名。根据引用计数自动检测三种模式:文本到视频(0 引用)、图像到视频(1 引用)和引用到视频(2-14 引用;grok-imagine-video-1.5 最长 15 秒,grok-imagine-video 最长 10 秒)。 1080p 可用于`grok-imagine-video-1.5`仅提示文本到视频和单图像/帧图像到视频;仅提示 1.5 在上游请求之前使用内部白色画布 I2V 填充程序。视频控制包括持续时间(1-15秒)、分辨率(480p、720p、1080p(如果支持))和宽高比(1:1、16:9、9:16、4:3、3:4、3:2、2:3、自动)。
@@ -323,9 +325,6 @@ environment variables > ~/.ima2/config.json > built-in defaults
323
325
  | `IMA2_API_REASONING_EFFORT` | `low` |默认推理工作`provider: "api"` |
324
326
  | `IMA2_API_IMAGE_SIZE` | `1024x1024` |默认尺寸为`provider: "api"` |
325
327
  | `IMA2_API_ALLOW_WEB_SEARCH` | `true` |切换网络搜索`provider: "api"` |
326
- | `IMA2_GROK_PROXY_HOST` | `127.0.0.1` |捆绑主机progrok代理人|
327
- | `IMA2_GROK_PROXY_PORT` | `18645` |捆绑端口progrok代理人|
328
- | `IMA2_NO_GROK_PROXY` | — |放`1`禁用自动progrok启动|
329
328
  | `IMA2_GROK_PLANNER_MODEL` | `grok-4.5` | Grok搜索/规划器模型(也可通过设置进行配置UI或者`--planner-model` CLI旗帜)|
330
329
  | `IMA2_GROK_PLANNER_TIMEOUT_MS` | `60000` |超时时间为Grok搜索和规划呼叫|
331
330
  | `IMA2_GROK_IMAGE_MODEL_DEFAULT` | `grok-imagine-image-quality` |默认最终Grok图像模型|
@@ -337,6 +336,8 @@ environment variables > ~/.ima2/config.json > built-in defaults
337
336
  | `IMA2_AGY_BIN` | `agy`在路径上|显式路径Antigravity CLI二进制为`provider: "agy"` |
338
337
  | `IMA2_MAX_PARALLEL` | `24` |服务器范围的并行生成上限|
339
338
 
339
+ `IMA2_GROK_PROXY_HOST`、`IMA2_GROK_PROXY_PORT`、`IMA2_NO_GROK_PROXY`和`IMA2_GROK_RESTART_*`已随本地Grok代理在 3.16 中移除,不再被读取;即使保留这些值也不会有任何影响。
340
+
340
341
  ### 记录模式
341
342
 
342
343
  `ima2 serve`故意保持终端输出安静:启动 URL、警告和错误保持可见,而 request/node/OAuth结构化日志默认隐藏。
@@ -159,8 +159,8 @@ Web UI 使用單一 `GET /api/events` 伺服器發送事件(SSE)連線,接
159
159
 
160
160
  - `provider: "oauth"` 使用本機 Codex OAuth 代理程式。
161
161
  - `provider: "api"` 使用 OpenAI Responses API 的 `image_generation` 工具。
162
- - `provider: "grok"`開始捆綁`progrok`在`127.0.0.1:18645`, 強制運行xAI網路搜尋加上規劃者通行證(預設:`grok-4.5`,可在設定中配置或透過`--planner-model`),然後調用xAI圖片API透過本地代理。`grok-4.3`仍然可以作為顯式相容性覆蓋使用。
163
- - `provider: "grok-api"`稱為xAI圖片API直接與`XAI_API_KEY`(無捆綁progrok OAuth代理人)。
162
+ - `provider: "grok"`使用`~/.progrok/auth.json`中的xAI OAuth工作階段直接呼叫`https://api.x.ai`, 強制運行xAI網路搜尋加上規劃者通行證(預設:`grok-4.5`,可在設定中配置或透過`--planner-model`),然後調用xAI圖片API。`grok-4.3`仍然可以作為顯式相容性覆蓋使用。用`ima2 grok login`或網頁UI登入一次;權杖在過期前 2 分鐘自動更新。
163
+ - `provider: "grok-api"`稱為xAI圖片API直接與`XAI_API_KEY`(使用API金鑰而不是OAuth工作階段)。
164
164
  - `provider: "agy"` 啟動 Antigravity CLI(`agy -p`),透過 Google Gemini 的 `default_api:generate_image` 工具產生圖片(模型:`nano-banana-2`)。輸出固定為 1024×1024 JPEG,最多 3 張參考圖,不提供網路搜尋、品質或尺寸控制。
165
165
  - `provider: "gemini-api"` 直接呼叫 Google Generative Language API。支援 `nano-banana-2`(Gemini 3.1 Flash Image)與 `nano-banana-pro`(Gemini 3 Pro Image);驗證方式包括 `GEMINI_API_KEY` 環境變數、Web UI 金鑰管理,或 Vertex AI 服務帳戶 JSON(`VERTEX_SERVICE_ACCOUNT_JSON`)。同時設定 API 金鑰與 Vertex 憑證時,優先使用 Vertex。支援 1:1 至 21:9 的長寬比與 512px、1K、2K、4K 四種解析度;這些控制只有直接 API 路徑有效,Vertex AI 端點不接受 `response_format` 欄位,因此會忽略長寬比與尺寸設定。
166
166
  - API 金鑰產生支援經典模式的產生、編輯、遮罩導向編輯、多階段與節點產生。
@@ -168,6 +168,8 @@ Web UI 使用單一 `GET /api/events` 伺服器發送事件(SSE)連線,接
168
168
 
169
169
  如果未指定提供者,應用程式將保留目前的GPT OAuth/預設行為。GPT OAuth和API-金鑰產生預設為`gpt-5.6-luna`;這API-key路徑也預設為`low`推理和`1024x1024`除非請求通過了經過驗證的選項。Grok影像生成預設為`grok-imagine-image-quality`.
170
170
 
171
+ 關於OAuth Grok通道有一點需要說明:xAI只把`/v1/me`記錄為接受OAuth權杖的端點,所以用該權杖呼叫`api.x.ai`的影像與影片介面走的是未文件化的路徑。它目前可用——progrok一直依賴同一條路徑——但沒有任何相容性承諾。如果xAI關閉這條路徑,用`XAI_API_KEY`的`provider: "grok-api"`是有文件的方案,且不受影響。
172
+
171
173
  Grok圖像生成公開了模型選擇器(`grok-imagine-image` / `grok-imagine-image-quality`)和尺寸選擇器(長寬比 + 1k/2k 解析度)。設定頁面更喜歡Grok建立每週積分百分比並重置時間`GET /v1/billing?format=credits`;如果該來源不可用,則會退回到傳統的每月計費窗口,並且`$used/$limit`. A **切換帳戶**按鈕啟動設備代碼OAuth流動 (`POST /api/auth/switch`)無需離開應用程式即可重新進行身份驗證。
172
174
 
173
175
  Grok影片產生預設為規範`grok-imagine-video-1.5`; `grok-imagine-video`仍可用於僅限基本型號的 Ref2V、V2V 編輯和擴展路徑,以及舊版本`grok-imagine-video-1.5-preview`字串被接受作為別名。根據引用計數自動偵測三種模式:文字到影片(0 引用)、圖像到影片(1 引用)和引用到影片(2-14 引用;grok-imagine-video-1.5 最長 15 秒,grok-imagine-video 最長 10 秒)。 1080p 可用於`grok-imagine-video-1.5`僅提示文字到影片和單圖像/幀圖像到影片;僅提示 1.5 在上游請求之前使用內部白色畫布 I2V 填充程式。視訊控制包括持續時間(1-15秒)、解析度(480p、720p、1080p(如果支援))和寬高比(1:1、16:9、9:16、4:3、3:4、3:2、2:3、自動)。
@@ -317,9 +319,6 @@ environment variables > ~/.ima2/config.json > built-in defaults
317
319
  | `IMA2_API_REASONING_EFFORT` | `low` |默認推理工作`provider: "api"` |
318
320
  | `IMA2_API_IMAGE_SIZE` | `1024x1024` |預設尺寸為`provider: "api"` |
319
321
  | `IMA2_API_ALLOW_WEB_SEARCH` | `true` |切換網路搜尋`provider: "api"` |
320
- | `IMA2_GROK_PROXY_HOST` | `127.0.0.1` |捆綁主機progrok代理人|
321
- | `IMA2_GROK_PROXY_PORT` | `18645` |捆綁端口progrok代理人|
322
- | `IMA2_NO_GROK_PROXY` | — |放`1`停用自動progrok啟動|
323
322
  | `IMA2_GROK_PLANNER_MODEL` | `grok-4.5` | Grok搜尋/規劃器模型(也可透過設定進行配置UI或者`--planner-model` CLI旗幟)|
324
323
  | `IMA2_GROK_PLANNER_TIMEOUT_MS` | `60000` |超時時間為Grok搜尋和規劃呼叫|
325
324
  | `IMA2_GROK_IMAGE_MODEL_DEFAULT` | `grok-imagine-image-quality` |預設最終Grok影像模型|
@@ -331,6 +330,8 @@ environment variables > ~/.ima2/config.json > built-in defaults
331
330
  | `IMA2_AGY_BIN` | `agy`在路徑上|顯式路徑Antigravity CLI二進制為`provider: "agy"` |
332
331
  | `IMA2_MAX_PARALLEL` | `24` |伺服器範圍的平行產生上限|
333
332
 
333
+ `IMA2_GROK_PROXY_HOST`、`IMA2_GROK_PROXY_PORT`、`IMA2_NO_GROK_PROXY`和`IMA2_GROK_RESTART_*`已隨本機Grok代理在 3.16 中移除,不再被讀取;即使保留這些值也不會有任何影響。
334
+
334
335
  ### 記錄模式
335
336
 
336
337
  `ima2 serve`故意保持終端輸出安靜:啟動 URL、警告和錯誤保持可見,而 request/node/OAuth結構化日誌預設隱藏。
@@ -4,9 +4,10 @@ Generated by `npm run test:inventory` (script: `scripts/classify-tests.mjs`).
4
4
 
5
5
  _Tests considered "runtime-importing" if they import from `../lib/`, `../routes/`, `../bin/`, `../server`, or `../config`._
6
6
 
7
- Total: 492 (runtime: 227, contract: 265)
7
+ Total: 490 (runtime: 225, contract: 265)
8
8
 
9
9
  ## Runtime-importing tests
10
+ - `tests/advertise-payload-contract.test.ts`
10
11
  - `tests/agent-image-reference-contract.test.ts`
11
12
  - `tests/agent-mode-auto-planner-contract.test.ts`
12
13
  - `tests/agent-mode-llm-planner-contract.test.ts`
@@ -78,17 +79,12 @@ Total: 492 (runtime: 227, contract: 265)
78
79
  - `tests/generation-request-log.test.ts`
79
80
  - `tests/google-execution-parity.test.ts`
80
81
  - `tests/gpt56-rollout-contract.test.ts`
81
- - `tests/grok-advertise-liveness-contract.test.ts`
82
- - `tests/grok-command-login-contract.test.ts`
83
82
  - `tests/grok-execution-parity.test.ts`
84
83
  - `tests/grok-image-address-policy.test.ts`
85
84
  - `tests/grok-image-download-pinning.test.ts`
86
85
  - `tests/grok-image-download-policy.test.ts`
87
86
  - `tests/grok-planner-adapter.test.ts`
88
87
  - `tests/grok-planner-config-route.test.ts`
89
- - `tests/grok-proxy-launcher.test.ts`
90
- - `tests/grok-proxy-restart.test.ts`
91
- - `tests/grok-proxy-supervisor-contract.test.ts`
92
88
  - `tests/grok-size-mapper.test.ts`
93
89
  - `tests/grok-upstream-retry.test.ts`
94
90
  - `tests/grokVideoAdapter.test.ts`
@@ -233,6 +229,8 @@ Total: 492 (runtime: 227, contract: 265)
233
229
  - `tests/videoLineage.test.ts`
234
230
  - `tests/videoRoute.test.ts`
235
231
  - `tests/voice-picker-contract.test.ts`
232
+ - `tests/xai-auth-contract.test.ts`
233
+ - `tests/xai-device-login-contract.test.ts`
236
234
  - `tests/xai-video-model-alias-contract.test.ts`
237
235
 
238
236
  ## Contract-only tests
@@ -4,7 +4,8 @@ import { formatToolManifestForPrompt } from "./agentToolManifest.js";
4
4
  import { getAgentSession } from "./agentStore.js";
5
5
  import { errInfo } from "./errInfo.js";
6
6
  import { logEvent } from "./logger.js";
7
- import { getGrokEndpoint, getPlannerConfig } from "./grokImageCore.js";
7
+ import { getPlannerConfig } from "./grokImageCore.js";
8
+ import { fetchWithGrokAuth, getGrokEndpoint } from "./grokRuntime.js";
8
9
  import { waitForOAuthReady } from "./oauthProxy/runtime.js";
9
10
  import { requireRuntimeContext } from "./runtimeContext.js";
10
11
  function buildPlannerDeveloperPrompt(hasSourceImage, imageCount) {
@@ -92,25 +93,25 @@ export async function requestAgentPlanFromModel(ctxRaw, input) {
92
93
  }
93
94
  }
94
95
  async function requestGrokPlan(ctx, developerPrompt, userPrompt, signal) {
95
- const { url, headers } = getGrokEndpoint(ctx, "/v1/chat/completions");
96
96
  const planner = getPlannerConfig(ctx);
97
- const res = await fetch(url, {
98
- method: "POST",
99
- headers,
100
- signal,
101
- body: JSON.stringify({
102
- model: planner.model,
103
- stream: false,
104
- messages: [
105
- { role: "system", content: developerPrompt },
106
- { role: "user", content: userPrompt },
107
- ],
108
- }),
97
+ const body = JSON.stringify({
98
+ model: planner.model,
99
+ stream: false,
100
+ messages: [
101
+ { role: "system", content: developerPrompt },
102
+ { role: "user", content: userPrompt },
103
+ ],
109
104
  });
105
+ // The agent planner only ever runs on the OAuth `grok` lane (the caller branches on
106
+ // settings.provider === "grok"), so a 401 here means the session needs a refresh.
107
+ const res = await fetchWithGrokAuth(ctx, "grok", (credential) => {
108
+ const endpoint = getGrokEndpoint("/v1/chat/completions", credential);
109
+ return fetch(endpoint.url, { method: "POST", headers: endpoint.headers, signal, body });
110
+ }, { signal });
110
111
  if (!res.ok)
111
112
  throw plannerHttpError("grok", res.status);
112
- const body = await res.json();
113
- return typeof body.choices?.[0]?.message?.content === "string" ? body.choices[0].message.content : "";
113
+ const parsed = await res.json();
114
+ return typeof parsed.choices?.[0]?.message?.content === "string" ? parsed.choices[0].message.content : "";
114
115
  }
115
116
  async function requestResponsesPlan(ctx, developerPrompt, userPrompt, settings, signal) {
116
117
  let url;
@@ -140,9 +140,10 @@ export function buildIma2Capabilities({ appConfig = runtimeConfigDefault, packag
140
140
  ],
141
141
  presetsAreAuthoritative: false,
142
142
  // Named by the 400 itself: "Custom voice ids created via the /v1/custom-voices
143
- // API are also accepted." The endpoint answers 200 with a 30-voice cap that is
144
- // documented nowhere else.
143
+ // API are also accepted." GET on that endpoint answers 200 with {voices, total_count,
144
+ // cap: 30}; the cap appears in no document, so the endpoint is its own source.
145
145
  customVoiceApi: "/v1/custom-voices",
146
+ customVoiceCap: 30,
146
147
  },
147
148
  // Which model takes a video in, and which takes audio in. The two split on input
148
149
  // modality, so there is no path that edits a video on 1.5 — it answers 400.
@@ -2,6 +2,10 @@ import { RESPONSE_DIAGNOSTIC_CODES } from "../responsesErrors.js";
2
2
  export function statusForErrorCode(code, fallback = 500) {
3
3
  if (code === "GROK_API_KEY_MISSING")
4
4
  return 401;
5
+ if (code === "GROK_AUTH_REQUIRED")
6
+ return 401;
7
+ if (code === "GROK_AUTH_REFRESH_FAILED")
8
+ return 502;
5
9
  if (code === "OAUTH_UNAVAILABLE" || code === "NETWORK_FAILED")
6
10
  return 503;
7
11
  if (code === "AUTH_CHATGPT_EXPIRED" || code === "AUTH_API_KEY_INVALID")
@@ -70,6 +74,15 @@ export const PROVIDER_ERROR_MAP = {
70
74
  GEMINI_API_MASK_UNSUPPORTED: "CAPABILITY_UNSUPPORTED",
71
75
  GROK_API_KEY_MISSING: "AUTH_INVALID",
72
76
  GROK_AUTH_FAILED: "AUTH_INVALID",
77
+ // Raised by lib/xaiAuth.ts: no stored session, or the refresh token was
78
+ // rejected outright (invalid_grant / revoked). The user must log in again.
79
+ GROK_AUTH_REQUIRED: "AUTH_EXPIRED",
80
+ // The refresh could not complete (network, 5xx, 429 budget exhausted); the
81
+ // stored session is kept and a later attempt may succeed.
82
+ GROK_AUTH_REFRESH_FAILED: "NETWORK_FAILURE",
83
+ // A Grok transport call was made without resolving a credential first. Programming
84
+ // error at the call site, never a user-facing auth state.
85
+ GROK_CREDENTIAL_UNRESOLVED: "INTERNAL_STATE_ERROR",
73
86
  GROK_BAD_REQUEST: "CAPABILITY_UNSUPPORTED",
74
87
  GROK_EMPTY_RESPONSE: "INTERNAL_STATE_ERROR",
75
88
  GROK_IMAGE_DOWNLOAD_FAILED: "NETWORK_FAILURE",
@@ -1,21 +1,9 @@
1
1
  import { mapSizeToGrokImageParams } from "./grokSizeMapper.js";
2
2
  import { detectImageMimeFromB64 } from "./refs.js";
3
- import { getGrokProxyUrl } from "./grokRuntime.js";
3
+ import { getGrokEndpoint } from "./grokRuntime.js";
4
4
  export { downloadGrokImageUrl } from "./grokImageDownload.js";
5
+ export { getGrokEndpoint } from "./grokRuntime.js";
5
6
  import { DEFAULT_GROK_PLANNER_MODEL } from "../config.js";
6
- export function getGrokEndpoint(ctx, path = "/v1/images/generations", directApiKey) {
7
- if (directApiKey) {
8
- const normalizedPath = path.startsWith("/") ? path : `/${path}`;
9
- return {
10
- url: `https://api.x.ai${normalizedPath}`,
11
- headers: { "Content-Type": "application/json", Authorization: `Bearer ${directApiKey}` },
12
- };
13
- }
14
- return {
15
- url: getGrokProxyUrl(ctx, path),
16
- headers: { "Content-Type": "application/json", Authorization: "Bearer dummy" },
17
- };
18
- }
19
7
  export function getGrokTimeout(ctx) {
20
8
  return ctx.config.grokProvider?.generationTimeoutMs || 300_000;
21
9
  }
@@ -81,9 +69,14 @@ export function extractResponsesText(response) {
81
69
  * origin already generated and billed, and no idempotency key exists to deduplicate it.
82
70
  * Retrying would charge twice.
83
71
  * See devlog/_plan/260812_navrail_grok_autotag/020_grok_upstream_retry.md.
72
+ *
73
+ * A 401, by contrast, is rejected before anything is generated, so the caller may resolve a
74
+ * fresh credential and call this once more (lib/grokRuntime.ts fetchWithGrokAuth).
84
75
  */
85
- export async function postGrokImages(ctx, payload, signal, path = "/v1/images/generations", directApiKey) {
86
- const { url, headers } = getGrokEndpoint(ctx, path, directApiKey);
76
+ export async function postGrokImages(ctx, payload, signal, path = "/v1/images/generations", credential) {
77
+ if (!credential)
78
+ throw grokError("Grok credential was not resolved before the request", 500, "GROK_CREDENTIAL_UNRESOLVED");
79
+ const { url, headers } = getGrokEndpoint(path, credential);
87
80
  const timeoutMs = getGrokTimeout(ctx);
88
81
  const { combinedSignal, timer } = withTimeoutSignal(signal, timeoutMs);
89
82
  try {
@@ -4,6 +4,17 @@ import { mapSizeToGrokImageParams } from "./grokSizeMapper.js";
4
4
  import { DEFAULT_GROK_PLANNER_MODEL } from "../config.js";
5
5
  import { grokError, grokStageError, getPlannerConfig, getGrokEndpoint, withTimeoutSignal, referenceImageUrl, extractResponsesText, } from "./grokImageCore.js";
6
6
  import { grokFetchWithRetry } from "./grokUpstreamRetry.js";
7
+ import { resolveGrokCredential } from "./grokRuntime.js";
8
+ /**
9
+ * Planner and search share the credential the adapter already resolved. Direct callers
10
+ * (lib/grokImageAdapter re-exports) may omit it, and the OAuth `grok` lane is the right
11
+ * default there: an explicit credential is what makes a call the `grok-api` lane.
12
+ */
13
+ async function plannerCredential(ctx, options) {
14
+ if (options.credential)
15
+ return options.credential;
16
+ return await resolveGrokCredential(ctx, "grok", { ...(options.signal ? { signal: options.signal } : {}) });
17
+ }
7
18
  export function buildGrokPlannerPayload(prompt, model, size, sizeParams, plannerModel = DEFAULT_GROK_PLANNER_MODEL, searchSummary = "", references = 0, backgroundConstraint = "") {
8
19
  const referenceImages = Array.isArray(references) ? references : [];
9
20
  const referenceCount = Array.isArray(references) ? references.length : references;
@@ -179,7 +190,7 @@ export async function searchGrokVisualContext(prompt, ctx, options = {}) {
179
190
  const planner = getPlannerConfig(ctx);
180
191
  const plannerModel = options.plannerModel || planner.model;
181
192
  const payload = buildGrokSearchPayload(prompt, plannerModel);
182
- const { url, headers } = getGrokEndpoint(ctx, "/v1/responses", options.directApiKey);
193
+ const { url, headers } = getGrokEndpoint("/v1/responses", await plannerCredential(ctx, options));
183
194
  // The search brief has its own, smaller budget: it runs BEFORE the planner call inside
184
195
  // the same user request, so charging it the full planner budget lets one slow stage eat
185
196
  // the other's time. See devlog/_plan/260817_grok_video_planner_timeout/010.
@@ -249,11 +260,12 @@ export async function planGrokImage(prompt, ctx, options = {}) {
249
260
  // record calls actually made (070 QA: search ran even with
250
261
  // webSearchEnabled:false, and webSearchCalls was hardcoded to 1).
251
262
  const searchEnabled = options.webSearchEnabled !== false;
263
+ const credential = await plannerCredential(ctx, options);
252
264
  const search = searchEnabled
253
- ? await searchGrokVisualContext(prompt, ctx, { ...(options.signal ? { signal: options.signal } : {}), ...(options.requestId ? { requestId: options.requestId } : {}), ...(options.directApiKey ? { directApiKey: options.directApiKey } : {}), plannerModel })
265
+ ? await searchGrokVisualContext(prompt, ctx, { ...(options.signal ? { signal: options.signal } : {}), ...(options.requestId ? { requestId: options.requestId } : {}), credential, plannerModel })
254
266
  : { summary: "", skipped: true };
255
267
  const payload = buildGrokPlannerPayload(prompt, imageModel, options.size, sizeParams, plannerModel, search.summary, options.references || options.referenceCount || 0, options.backgroundConstraint || "");
256
- const { url, headers } = getGrokEndpoint(ctx, "/v1/chat/completions", options.directApiKey);
268
+ const { url, headers } = getGrokEndpoint("/v1/chat/completions", credential);
257
269
  const { combinedSignal, timer } = withTimeoutSignal(options.signal, planner.timeoutMs);
258
270
  logEvent("grok", "planner:start", { requestId: options.requestId, plannerModel, imageModel, size: options.size });
259
271
  try {
@@ -1,21 +1,52 @@
1
- const DEFAULT_GROK_PROXY_HOST = "127.0.0.1";
2
- const DEFAULT_GROK_PROXY_PORT = 18645;
3
- function normalizeBaseUrl(url) {
4
- return url.replace(/\/v1\/?$/, "").replace(/\/$/, "");
1
+ import { getGrokAccessToken } from "./xaiAuth.js";
2
+ export function getGrokDirectBaseUrl() {
3
+ return "https://api.x.ai";
5
4
  }
6
- export function getGrokProxyBaseUrl(ctx = {}) {
7
- const grokCfg = ctx.config?.grokProvider || {};
8
- const explicitUrl = ctx.grokUrl;
9
- if (explicitUrl)
10
- return normalizeBaseUrl(explicitUrl);
11
- const host = grokCfg.proxyHost || DEFAULT_GROK_PROXY_HOST;
12
- const port = ctx.grokActualPort || grokCfg.proxyPort || DEFAULT_GROK_PROXY_PORT;
13
- return `http://${host}:${port}`;
5
+ export function grokAuthHeaders(credential) {
6
+ const bearer = credential.kind === "api-key" ? credential.key : credential.token;
7
+ return { "Content-Type": "application/json", Authorization: `Bearer ${bearer}` };
14
8
  }
15
- export function getGrokProxyUrl(ctx = {}, path = "/v1") {
9
+ export function getGrokEndpoint(path = "/v1/images/generations", credential) {
16
10
  const normalizedPath = path.startsWith("/") ? path : `/${path}`;
17
- return `${getGrokProxyBaseUrl(ctx)}${normalizedPath}`;
11
+ return { url: `${getGrokDirectBaseUrl()}${normalizedPath}`, headers: grokAuthHeaders(credential) };
18
12
  }
19
- export function getGrokDirectBaseUrl() {
20
- return "https://api.x.ai";
13
+ function grokCredentialError(code, status, message) {
14
+ return Object.assign(new Error(message), { code, status });
15
+ }
16
+ /**
17
+ * The single place a Grok lane turns into a bearer. For `grok` this may refresh the OAuth
18
+ * session, so it is async; GrokAuthError (GROK_AUTH_REQUIRED / GROK_AUTH_REFRESH_FAILED)
19
+ * propagates unchanged. For `grok-api` a missing key is GROK_API_KEY_MISSING, the same code
20
+ * the execution admission check emits.
21
+ */
22
+ export async function resolveGrokCredential(ctx, lane, opts = {}) {
23
+ if (lane === "grok-api") {
24
+ const key = typeof ctx.xaiApiKey === "string" ? ctx.xaiApiKey.trim() : "";
25
+ if (!key)
26
+ throw grokCredentialError("GROK_API_KEY_MISSING", 401, "Grok API key is required for grok-api");
27
+ return { kind: "api-key", key };
28
+ }
29
+ const token = await getGrokAccessToken({
30
+ ...(opts.forceRefresh !== undefined ? { forceRefresh: opts.forceRefresh } : {}),
31
+ ...(opts.rejectedAccessToken !== undefined ? { rejectedAccessToken: opts.rejectedAccessToken } : {}),
32
+ ...(opts.signal !== undefined ? { signal: opts.signal } : {}),
33
+ ...(opts.deps !== undefined ? { deps: opts.deps } : {}),
34
+ ...(ctx.grokAuthHomeDir !== undefined ? { homeDir: ctx.grokAuthHomeDir } : {}),
35
+ });
36
+ return { kind: "oauth", token };
37
+ }
38
+ /**
39
+ * Runs `doFetch` with a fresh credential and, on a 401 from an OAuth bearer, refreshes
40
+ * exactly once and replays. Nesting is fixed: this wrapper sits OUTSIDE grokFetchWithRetry
41
+ * (the 5xx/reset retrier), which cannot rebuild headers itself. grokUpstreamRetry stays a
42
+ * leaf and never sees credentials. A 401 arrives before any generation is billed, so the
43
+ * single replay is safe even for the non-idempotent image and video-start calls.
44
+ */
45
+ export async function fetchWithGrokAuth(ctx, lane, doFetch, opts = {}) {
46
+ const first = await resolveGrokCredential(ctx, lane, opts);
47
+ const res = await doFetch(first);
48
+ if (res.status !== 401 || first.kind !== "oauth")
49
+ return res;
50
+ const second = await resolveGrokCredential(ctx, lane, { ...opts, forceRefresh: true, rejectedAccessToken: first.token });
51
+ return doFetch(second);
21
52
  }
@@ -8,6 +8,7 @@ import { buildGrokVideoPlannerSystemPrompt, composeFallbackVideoPrompt, formatDu
8
8
  import { GROK_VIDEO_MODEL_15, GROK_VIDEO_MODEL_BASE, MAX_REF2V_REFERENCES, MAX_REFERENCE_AUDIOS, canonicalGrokVideoModel, validateVideoDurationForRequest, validateVideoResolutionForRequest, } from "./imageModels.js";
9
9
  import { formatVideoContinuityForPlanner } from "./videoContinuity.js";
10
10
  import { DEFAULT_GROK_PLANNER_MODEL } from "../config.js";
11
+ import { resolveGrokCredential } from "./grokRuntime.js";
11
12
  import { videoConfig, videoEndpoint, withTimeoutSignal, } from "./grokVideoShared.js";
12
13
  import { pollVideoUntilDone } from "./grokVideoPoll.js";
13
14
  export { downloadVideo } from "./grokVideoDownload.js";
@@ -42,6 +43,17 @@ export function isDegradablePlannerFailure(err) {
42
43
  return null;
43
44
  }
44
45
  const canonicalVideoModel = canonicalGrokVideoModel;
46
+ /**
47
+ * Every video call carries an explicit credential. Callers that resolved one (the HTTP
48
+ * routes, the extend operation) pass it down so a whole request uses a single bearer;
49
+ * callers that did not — the agent surface — get the OAuth lane, which is exactly what
50
+ * the removed proxy used to supply for them.
51
+ */
52
+ async function videoCredential(ctx, options) {
53
+ if (options.credential)
54
+ return options.credential;
55
+ return resolveGrokCredential(ctx, "grok", options.signal ? { signal: options.signal } : {});
56
+ }
45
57
  function sourceImageUrl(image, mime) {
46
58
  if (image.startsWith("data:") || image.startsWith("http"))
47
59
  return image;
@@ -144,6 +156,7 @@ export function parseGrokVideoPlanPrompt(response) {
144
156
  }
145
157
  export async function planGrokVideo(prompt, ctx, options = {}) {
146
158
  const cfg = videoConfig(ctx);
159
+ const credential = await videoCredential(ctx, options);
147
160
  const mode = options.mode || (options.sourceImage ? "image-to-video" : "text-to-video");
148
161
  const duration = options.duration ?? 5;
149
162
  const resolution = options.resolution || "480p";
@@ -170,7 +183,7 @@ export async function planGrokVideo(prompt, ctx, options = {}) {
170
183
  // own deadline would turn a slow search — the exact case 020 exists to degrade — into
171
184
  // GENERATION_CANCELED. The stage bound is applied inside that function via
172
185
  // getPlannerConfig().searchTimeoutMs.
173
- const search = await searchGrokVisualContext(prompt, ctx, { signal: phaseSignal, ...(options.requestId ? { requestId: options.requestId } : {}), ...(options.directApiKey ? { directApiKey: options.directApiKey } : {}), plannerModel });
186
+ const search = await searchGrokVisualContext(prompt, ctx, { signal: phaseSignal, ...(options.requestId ? { requestId: options.requestId } : {}), credential, plannerModel });
174
187
  searchSummary = search.summary;
175
188
  }
176
189
  catch (e) { // justified: adapter rejections are untyped; the shape is narrowed here
@@ -209,7 +222,7 @@ export async function planGrokVideo(prompt, ctx, options = {}) {
209
222
  continuityLineage: options.continuityLineage,
210
223
  backgroundConstraint: options.backgroundConstraint,
211
224
  });
212
- const { url, headers } = videoEndpoint(ctx, "/v1/chat/completions", options.directApiKey);
225
+ const { url, headers } = videoEndpoint(ctx, "/v1/chat/completions", credential);
213
226
  const { combinedSignal, timer } = withTimeoutSignal(phaseSignal, cfg.plannerTimeoutMs);
214
227
  logEvent("grok", "video:planner:start", { requestId: options.requestId, mode, duration, resolution });
215
228
  try {
@@ -332,7 +345,7 @@ export function buildVideoGenerationPayload(plan, opts) {
332
345
  }
333
346
  export async function startVideoRequest(ctx, payload, options) {
334
347
  const cfg = videoConfig(ctx);
335
- const { url, headers } = videoEndpoint(ctx, "/v1/videos/generations", options.directApiKey);
348
+ const { url, headers } = videoEndpoint(ctx, "/v1/videos/generations", await videoCredential(ctx, options));
336
349
  const { combinedSignal, timer } = withTimeoutSignal(options.signal, cfg.startTimeoutMs);
337
350
  try {
338
351
  // NOT wrapped in grokFetchWithRetry on purpose: a reset or 5xx here may follow a job
@@ -364,6 +377,9 @@ export async function startVideoRequest(ctx, payload, options) {
364
377
  }
365
378
  export async function generateVideoViaGrok(prompt, ctx, options = {}) {
366
379
  const cfg = videoConfig(ctx);
380
+ // Resolve once for the whole request: plan, start, and poll must all carry the same
381
+ // bearer, and re-resolving per stage would refresh the OAuth session repeatedly.
382
+ const effective = { ...options, credential: await videoCredential(ctx, options) };
367
383
  const model = canonicalVideoModel(options.model || cfg.model);
368
384
  const srcUrl = options.sourceImage ? sourceImageUrl(options.sourceImage, options.sourceMime) : undefined;
369
385
  const refUrls = (options.referenceImages ?? []).map((img) => sourceImageUrl(img, undefined));
@@ -378,7 +394,7 @@ export async function generateVideoViaGrok(prompt, ctx, options = {}) {
378
394
  aspectRatio: options.aspectRatio || "auto",
379
395
  webSearchCalls: options.webSearchCalls ?? 1,
380
396
  }
381
- : await planGrokVideo(prompt, ctx, options);
397
+ : await planGrokVideo(prompt, ctx, effective);
382
398
  let xaiVideoRequestId;
383
399
  let effectiveModel = model;
384
400
  // grokv1.5 doesn't support T2V — inject a white canvas as source image to use I2V path
@@ -394,7 +410,7 @@ export async function generateVideoViaGrok(prompt, ctx, options = {}) {
394
410
  effectivePayload = buildVideoGenerationPayload(plan, { model, sourceImageUrl: srcUrl, referenceImageUrls: refUrls, ...(voices.length ? { referenceAudios: voices } : {}) });
395
411
  }
396
412
  try {
397
- xaiVideoRequestId = await startVideoRequest(ctx, effectivePayload, options);
413
+ xaiVideoRequestId = await startVideoRequest(ctx, effectivePayload, effective);
398
414
  }
399
415
  catch (e) {
400
416
  // Fallback: if 1.5-preview still fails, retry with base model.
@@ -404,7 +420,7 @@ export async function generateVideoViaGrok(prompt, ctx, options = {}) {
404
420
  if (model !== GROK_VIDEO_MODEL_BASE && e?.status === 400 && voices.length === 0) {
405
421
  effectiveModel = GROK_VIDEO_MODEL_BASE;
406
422
  const fallbackPayload = buildVideoGenerationPayload(plan, { model: effectiveModel, sourceImageUrl: srcUrl, referenceImageUrls: refUrls });
407
- xaiVideoRequestId = await startVideoRequest(ctx, fallbackPayload, options);
423
+ xaiVideoRequestId = await startVideoRequest(ctx, fallbackPayload, effective);
408
424
  logEvent("grok", "video:fallback", { requestId: options.requestId, from: model, to: effectiveModel });
409
425
  }
410
426
  else {
@@ -414,7 +430,7 @@ export async function generateVideoViaGrok(prompt, ctx, options = {}) {
414
430
  const modelFallback = effectiveModel === model ? null : { from: model, to: effectiveModel };
415
431
  options.onEvent?.({ phase: "submitted", xaiVideoRequestId, requestedModel: model, effectiveModel, modelFallback });
416
432
  logEvent("grok", "video:submitted", { requestId: options.requestId, xaiVideoRequestId, mode: plan.mode });
417
- const poll = await pollVideoUntilDone(ctx, xaiVideoRequestId, options);
433
+ const poll = await pollVideoUntilDone(ctx, xaiVideoRequestId, effective);
418
434
  if (!poll.videoUrl)
419
435
  throw grokError("Grok video done without a video url", 502, "GROK_VIDEO_EMPTY_RESPONSE");
420
436
  if (poll.respectModeration === false)