ima2-gen 1.1.13 → 1.1.16

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 (807) hide show
  1. package/README.md +31 -7
  2. package/bin/commands/capabilities.js +5 -0
  3. package/bin/commands/capabilities.ts +5 -0
  4. package/bin/commands/doctor.js +195 -0
  5. package/bin/commands/doctor.ts +202 -0
  6. package/bin/commands/edit.js +6 -6
  7. package/bin/commands/edit.ts +6 -6
  8. package/bin/commands/gen.js +6 -6
  9. package/bin/commands/gen.ts +6 -6
  10. package/bin/commands/grok.js +61 -0
  11. package/bin/commands/grok.ts +67 -0
  12. package/bin/commands/multimode.js +3 -3
  13. package/bin/commands/multimode.ts +3 -3
  14. package/bin/commands/node.js +4 -4
  15. package/bin/commands/node.ts +4 -4
  16. package/bin/ima2.js +5 -105
  17. package/bin/ima2.ts +5 -109
  18. package/config.js +17 -0
  19. package/config.ts +21 -0
  20. package/docs/API.md +77 -8
  21. package/docs/CLI.md +65 -3
  22. package/docs/FAQ.ko.md +82 -2
  23. package/docs/FAQ.md +85 -2
  24. package/docs/PROMPT_STUDIO.ko.md +111 -0
  25. package/docs/PROMPT_STUDIO.md +115 -0
  26. package/docs/README.ko.md +27 -7
  27. package/docs/grok-video-i2v-plan.md +419 -0
  28. package/docs/grok-video-i2v-research.md +204 -0
  29. package/docs/migration/runtime-test-inventory.md +12 -1
  30. package/lib/agentRuntime.js +88 -19
  31. package/lib/agentRuntime.ts +97 -29
  32. package/lib/agentSettings.js +1 -1
  33. package/lib/agentSettings.ts +1 -1
  34. package/lib/agentTypes.ts +1 -1
  35. package/lib/capabilities.js +10 -2
  36. package/lib/capabilities.ts +10 -2
  37. package/lib/configKeys.js +6 -0
  38. package/lib/configKeys.ts +6 -1
  39. package/lib/errorClassify.js +1 -1
  40. package/lib/errorClassify.ts +1 -1
  41. package/lib/generationErrors.js +121 -23
  42. package/lib/generationErrors.ts +100 -13
  43. package/lib/grokImageAdapter.js +364 -0
  44. package/lib/grokImageAdapter.ts +483 -0
  45. package/lib/grokMultimodeAdapter.js +54 -0
  46. package/lib/grokMultimodeAdapter.ts +84 -0
  47. package/lib/grokProxyLauncher.js +105 -0
  48. package/lib/grokProxyLauncher.ts +129 -0
  49. package/lib/grokRuntime.js +18 -0
  50. package/lib/grokRuntime.ts +23 -0
  51. package/lib/grokSizeMapper.js +63 -0
  52. package/lib/grokSizeMapper.ts +71 -0
  53. package/lib/grokVideoAdapter.js +374 -0
  54. package/lib/grokVideoAdapter.ts +438 -0
  55. package/lib/historyList.js +5 -1
  56. package/lib/historyList.ts +5 -1
  57. package/lib/imageMetadata.js +2 -0
  58. package/lib/imageMetadata.ts +2 -0
  59. package/lib/imageModels.js +101 -0
  60. package/lib/imageModels.ts +111 -0
  61. package/lib/providerOptions.js +15 -1
  62. package/lib/providerOptions.ts +15 -1
  63. package/lib/responsesDoctor.js +386 -0
  64. package/lib/responsesDoctor.ts +456 -0
  65. package/lib/responsesErrors.js +57 -0
  66. package/lib/responsesErrors.ts +83 -0
  67. package/lib/responsesFallback.js +72 -0
  68. package/lib/responsesFallback.ts +114 -0
  69. package/lib/responsesImageAdapter.js +121 -174
  70. package/lib/responsesImageAdapter.ts +136 -211
  71. package/lib/responsesParse.js +324 -0
  72. package/lib/responsesParse.ts +452 -0
  73. package/lib/responsesTools.js +15 -0
  74. package/lib/responsesTools.ts +28 -0
  75. package/lib/runtimeContext.js +12 -0
  76. package/lib/runtimeContext.ts +15 -0
  77. package/node_modules/array-flatten/LICENSE +21 -0
  78. package/node_modules/array-flatten/README.md +43 -0
  79. package/node_modules/array-flatten/array-flatten.js +64 -0
  80. package/node_modules/array-flatten/package.json +39 -0
  81. package/node_modules/bundle-name/index.js +5 -0
  82. package/node_modules/bundle-name/license +9 -0
  83. package/node_modules/bundle-name/package.json +45 -0
  84. package/node_modules/bundle-name/readme.md +23 -0
  85. package/node_modules/bytes/History.md +97 -0
  86. package/node_modules/bytes/LICENSE +23 -0
  87. package/node_modules/bytes/Readme.md +152 -0
  88. package/node_modules/bytes/index.js +170 -0
  89. package/node_modules/bytes/package.json +42 -0
  90. package/node_modules/call-bind-apply-helpers/.eslintrc +17 -0
  91. package/node_modules/call-bind-apply-helpers/.github/FUNDING.yml +12 -0
  92. package/node_modules/call-bind-apply-helpers/.nycrc +9 -0
  93. package/node_modules/call-bind-apply-helpers/CHANGELOG.md +30 -0
  94. package/node_modules/call-bind-apply-helpers/LICENSE +21 -0
  95. package/node_modules/call-bind-apply-helpers/README.md +62 -0
  96. package/node_modules/call-bind-apply-helpers/actualApply.d.ts +1 -0
  97. package/node_modules/call-bind-apply-helpers/actualApply.js +10 -0
  98. package/node_modules/call-bind-apply-helpers/applyBind.d.ts +19 -0
  99. package/node_modules/call-bind-apply-helpers/applyBind.js +10 -0
  100. package/node_modules/call-bind-apply-helpers/functionApply.d.ts +1 -0
  101. package/node_modules/call-bind-apply-helpers/functionApply.js +4 -0
  102. package/node_modules/call-bind-apply-helpers/functionCall.d.ts +1 -0
  103. package/node_modules/call-bind-apply-helpers/functionCall.js +4 -0
  104. package/node_modules/call-bind-apply-helpers/index.d.ts +64 -0
  105. package/node_modules/call-bind-apply-helpers/index.js +15 -0
  106. package/node_modules/call-bind-apply-helpers/package.json +85 -0
  107. package/node_modules/call-bind-apply-helpers/reflectApply.d.ts +3 -0
  108. package/node_modules/call-bind-apply-helpers/reflectApply.js +4 -0
  109. package/node_modules/call-bind-apply-helpers/test/index.js +63 -0
  110. package/node_modules/call-bind-apply-helpers/tsconfig.json +9 -0
  111. package/node_modules/call-bound/.eslintrc +13 -0
  112. package/node_modules/call-bound/.github/FUNDING.yml +12 -0
  113. package/node_modules/call-bound/.nycrc +9 -0
  114. package/node_modules/call-bound/CHANGELOG.md +42 -0
  115. package/node_modules/call-bound/LICENSE +21 -0
  116. package/node_modules/call-bound/README.md +53 -0
  117. package/node_modules/call-bound/index.d.ts +94 -0
  118. package/node_modules/call-bound/index.js +19 -0
  119. package/node_modules/call-bound/package.json +99 -0
  120. package/node_modules/call-bound/test/index.js +61 -0
  121. package/node_modules/call-bound/tsconfig.json +10 -0
  122. package/node_modules/commander/LICENSE +22 -0
  123. package/node_modules/commander/Readme.md +1149 -0
  124. package/node_modules/commander/esm.mjs +16 -0
  125. package/node_modules/commander/index.js +24 -0
  126. package/node_modules/commander/lib/argument.js +149 -0
  127. package/node_modules/commander/lib/command.js +2662 -0
  128. package/node_modules/commander/lib/error.js +39 -0
  129. package/node_modules/commander/lib/help.js +709 -0
  130. package/node_modules/commander/lib/option.js +367 -0
  131. package/node_modules/commander/lib/suggestSimilar.js +101 -0
  132. package/node_modules/commander/package-support.json +16 -0
  133. package/node_modules/commander/package.json +82 -0
  134. package/node_modules/commander/typings/esm.d.mts +3 -0
  135. package/node_modules/commander/typings/index.d.ts +1045 -0
  136. package/node_modules/content-type/HISTORY.md +29 -0
  137. package/node_modules/content-type/LICENSE +22 -0
  138. package/node_modules/content-type/README.md +94 -0
  139. package/node_modules/content-type/index.js +225 -0
  140. package/node_modules/content-type/package.json +42 -0
  141. package/node_modules/cookie/LICENSE +24 -0
  142. package/node_modules/cookie/README.md +317 -0
  143. package/node_modules/cookie/SECURITY.md +25 -0
  144. package/node_modules/cookie/index.js +335 -0
  145. package/node_modules/cookie/package.json +44 -0
  146. package/node_modules/default-browser/index.d.ts +29 -0
  147. package/node_modules/default-browser/index.js +34 -0
  148. package/node_modules/default-browser/license +9 -0
  149. package/node_modules/default-browser/package.json +54 -0
  150. package/node_modules/default-browser/readme.md +24 -0
  151. package/node_modules/default-browser/windows.js +57 -0
  152. package/node_modules/default-browser-id/index.js +25 -0
  153. package/node_modules/default-browser-id/license +9 -0
  154. package/node_modules/default-browser-id/package.json +41 -0
  155. package/node_modules/default-browser-id/readme.md +19 -0
  156. package/node_modules/define-lazy-prop/index.d.ts +31 -0
  157. package/node_modules/define-lazy-prop/index.js +18 -0
  158. package/node_modules/define-lazy-prop/license +9 -0
  159. package/node_modules/define-lazy-prop/package.json +51 -0
  160. package/node_modules/define-lazy-prop/readme.md +55 -0
  161. package/node_modules/depd/History.md +103 -0
  162. package/node_modules/depd/LICENSE +22 -0
  163. package/node_modules/depd/Readme.md +280 -0
  164. package/node_modules/depd/index.js +538 -0
  165. package/node_modules/depd/lib/browser/index.js +77 -0
  166. package/node_modules/depd/package.json +45 -0
  167. package/node_modules/destroy/LICENSE +23 -0
  168. package/node_modules/destroy/README.md +63 -0
  169. package/node_modules/destroy/index.js +209 -0
  170. package/node_modules/destroy/package.json +48 -0
  171. package/node_modules/dunder-proto/.eslintrc +5 -0
  172. package/node_modules/dunder-proto/.github/FUNDING.yml +12 -0
  173. package/node_modules/dunder-proto/.nycrc +13 -0
  174. package/node_modules/dunder-proto/CHANGELOG.md +24 -0
  175. package/node_modules/dunder-proto/LICENSE +21 -0
  176. package/node_modules/dunder-proto/README.md +54 -0
  177. package/node_modules/dunder-proto/get.d.ts +5 -0
  178. package/node_modules/dunder-proto/get.js +30 -0
  179. package/node_modules/dunder-proto/package.json +76 -0
  180. package/node_modules/dunder-proto/set.d.ts +5 -0
  181. package/node_modules/dunder-proto/set.js +35 -0
  182. package/node_modules/dunder-proto/test/get.js +34 -0
  183. package/node_modules/dunder-proto/test/index.js +4 -0
  184. package/node_modules/dunder-proto/test/set.js +50 -0
  185. package/node_modules/dunder-proto/tsconfig.json +9 -0
  186. package/node_modules/ee-first/LICENSE +22 -0
  187. package/node_modules/ee-first/README.md +80 -0
  188. package/node_modules/ee-first/index.js +95 -0
  189. package/node_modules/ee-first/package.json +29 -0
  190. package/node_modules/encodeurl/LICENSE +22 -0
  191. package/node_modules/encodeurl/README.md +109 -0
  192. package/node_modules/encodeurl/index.js +60 -0
  193. package/node_modules/encodeurl/package.json +40 -0
  194. package/node_modules/es-define-property/.eslintrc +13 -0
  195. package/node_modules/es-define-property/.github/FUNDING.yml +12 -0
  196. package/node_modules/es-define-property/.nycrc +9 -0
  197. package/node_modules/es-define-property/CHANGELOG.md +29 -0
  198. package/node_modules/es-define-property/LICENSE +21 -0
  199. package/node_modules/es-define-property/README.md +49 -0
  200. package/node_modules/es-define-property/index.d.ts +3 -0
  201. package/node_modules/es-define-property/index.js +14 -0
  202. package/node_modules/es-define-property/package.json +81 -0
  203. package/node_modules/es-define-property/test/index.js +56 -0
  204. package/node_modules/es-define-property/tsconfig.json +10 -0
  205. package/node_modules/es-errors/.eslintrc +5 -0
  206. package/node_modules/es-errors/.github/FUNDING.yml +12 -0
  207. package/node_modules/es-errors/CHANGELOG.md +40 -0
  208. package/node_modules/es-errors/LICENSE +21 -0
  209. package/node_modules/es-errors/README.md +55 -0
  210. package/node_modules/es-errors/eval.d.ts +3 -0
  211. package/node_modules/es-errors/eval.js +4 -0
  212. package/node_modules/es-errors/index.d.ts +3 -0
  213. package/node_modules/es-errors/index.js +4 -0
  214. package/node_modules/es-errors/package.json +80 -0
  215. package/node_modules/es-errors/range.d.ts +3 -0
  216. package/node_modules/es-errors/range.js +4 -0
  217. package/node_modules/es-errors/ref.d.ts +3 -0
  218. package/node_modules/es-errors/ref.js +4 -0
  219. package/node_modules/es-errors/syntax.d.ts +3 -0
  220. package/node_modules/es-errors/syntax.js +4 -0
  221. package/node_modules/es-errors/test/index.js +19 -0
  222. package/node_modules/es-errors/tsconfig.json +49 -0
  223. package/node_modules/es-errors/type.d.ts +3 -0
  224. package/node_modules/es-errors/type.js +4 -0
  225. package/node_modules/es-errors/uri.d.ts +3 -0
  226. package/node_modules/es-errors/uri.js +4 -0
  227. package/node_modules/es-object-atoms/.eslintrc +16 -0
  228. package/node_modules/es-object-atoms/.github/FUNDING.yml +12 -0
  229. package/node_modules/es-object-atoms/CHANGELOG.md +37 -0
  230. package/node_modules/es-object-atoms/LICENSE +21 -0
  231. package/node_modules/es-object-atoms/README.md +63 -0
  232. package/node_modules/es-object-atoms/RequireObjectCoercible.d.ts +3 -0
  233. package/node_modules/es-object-atoms/RequireObjectCoercible.js +11 -0
  234. package/node_modules/es-object-atoms/ToObject.d.ts +7 -0
  235. package/node_modules/es-object-atoms/ToObject.js +10 -0
  236. package/node_modules/es-object-atoms/index.d.ts +3 -0
  237. package/node_modules/es-object-atoms/index.js +4 -0
  238. package/node_modules/es-object-atoms/isObject.d.ts +3 -0
  239. package/node_modules/es-object-atoms/isObject.js +6 -0
  240. package/node_modules/es-object-atoms/package.json +80 -0
  241. package/node_modules/es-object-atoms/test/index.js +38 -0
  242. package/node_modules/es-object-atoms/tsconfig.json +6 -0
  243. package/node_modules/escape-html/LICENSE +24 -0
  244. package/node_modules/escape-html/Readme.md +43 -0
  245. package/node_modules/escape-html/index.js +78 -0
  246. package/node_modules/escape-html/package.json +24 -0
  247. package/node_modules/etag/HISTORY.md +83 -0
  248. package/node_modules/etag/LICENSE +22 -0
  249. package/node_modules/etag/README.md +159 -0
  250. package/node_modules/etag/index.js +131 -0
  251. package/node_modules/etag/package.json +47 -0
  252. package/node_modules/forwarded/HISTORY.md +21 -0
  253. package/node_modules/forwarded/LICENSE +22 -0
  254. package/node_modules/forwarded/README.md +57 -0
  255. package/node_modules/forwarded/index.js +90 -0
  256. package/node_modules/forwarded/package.json +45 -0
  257. package/node_modules/function-bind/.eslintrc +21 -0
  258. package/node_modules/function-bind/.github/FUNDING.yml +12 -0
  259. package/node_modules/function-bind/.github/SECURITY.md +3 -0
  260. package/node_modules/function-bind/.nycrc +13 -0
  261. package/node_modules/function-bind/CHANGELOG.md +136 -0
  262. package/node_modules/function-bind/LICENSE +20 -0
  263. package/node_modules/function-bind/README.md +46 -0
  264. package/node_modules/function-bind/implementation.js +84 -0
  265. package/node_modules/function-bind/index.js +5 -0
  266. package/node_modules/function-bind/package.json +87 -0
  267. package/node_modules/function-bind/test/.eslintrc +9 -0
  268. package/node_modules/function-bind/test/index.js +252 -0
  269. package/node_modules/get-intrinsic/.eslintrc +42 -0
  270. package/node_modules/get-intrinsic/.github/FUNDING.yml +12 -0
  271. package/node_modules/get-intrinsic/.nycrc +9 -0
  272. package/node_modules/get-intrinsic/CHANGELOG.md +186 -0
  273. package/node_modules/get-intrinsic/LICENSE +21 -0
  274. package/node_modules/get-intrinsic/README.md +71 -0
  275. package/node_modules/get-intrinsic/index.js +378 -0
  276. package/node_modules/get-intrinsic/package.json +97 -0
  277. package/node_modules/get-intrinsic/test/GetIntrinsic.js +274 -0
  278. package/node_modules/get-proto/.eslintrc +10 -0
  279. package/node_modules/get-proto/.github/FUNDING.yml +12 -0
  280. package/node_modules/get-proto/.nycrc +9 -0
  281. package/node_modules/get-proto/CHANGELOG.md +21 -0
  282. package/node_modules/get-proto/LICENSE +21 -0
  283. package/node_modules/get-proto/Object.getPrototypeOf.d.ts +5 -0
  284. package/node_modules/get-proto/Object.getPrototypeOf.js +6 -0
  285. package/node_modules/get-proto/README.md +50 -0
  286. package/node_modules/get-proto/Reflect.getPrototypeOf.d.ts +3 -0
  287. package/node_modules/get-proto/Reflect.getPrototypeOf.js +4 -0
  288. package/node_modules/get-proto/index.d.ts +5 -0
  289. package/node_modules/get-proto/index.js +27 -0
  290. package/node_modules/get-proto/package.json +81 -0
  291. package/node_modules/get-proto/test/index.js +68 -0
  292. package/node_modules/get-proto/tsconfig.json +9 -0
  293. package/node_modules/gopd/.eslintrc +16 -0
  294. package/node_modules/gopd/.github/FUNDING.yml +12 -0
  295. package/node_modules/gopd/CHANGELOG.md +45 -0
  296. package/node_modules/gopd/LICENSE +21 -0
  297. package/node_modules/gopd/README.md +40 -0
  298. package/node_modules/gopd/gOPD.d.ts +1 -0
  299. package/node_modules/gopd/gOPD.js +4 -0
  300. package/node_modules/gopd/index.d.ts +5 -0
  301. package/node_modules/gopd/index.js +15 -0
  302. package/node_modules/gopd/package.json +77 -0
  303. package/node_modules/gopd/test/index.js +36 -0
  304. package/node_modules/gopd/tsconfig.json +9 -0
  305. package/node_modules/has-symbols/.eslintrc +11 -0
  306. package/node_modules/has-symbols/.github/FUNDING.yml +12 -0
  307. package/node_modules/has-symbols/.nycrc +9 -0
  308. package/node_modules/has-symbols/CHANGELOG.md +91 -0
  309. package/node_modules/has-symbols/LICENSE +21 -0
  310. package/node_modules/has-symbols/README.md +46 -0
  311. package/node_modules/has-symbols/index.d.ts +3 -0
  312. package/node_modules/has-symbols/index.js +14 -0
  313. package/node_modules/has-symbols/package.json +111 -0
  314. package/node_modules/has-symbols/shams.d.ts +3 -0
  315. package/node_modules/has-symbols/shams.js +45 -0
  316. package/node_modules/has-symbols/test/index.js +22 -0
  317. package/node_modules/has-symbols/test/shams/core-js.js +29 -0
  318. package/node_modules/has-symbols/test/shams/get-own-property-symbols.js +29 -0
  319. package/node_modules/has-symbols/test/tests.js +58 -0
  320. package/node_modules/has-symbols/tsconfig.json +10 -0
  321. package/node_modules/hasown/.github/FUNDING.yml +12 -0
  322. package/node_modules/hasown/.nycrc +13 -0
  323. package/node_modules/hasown/CHANGELOG.md +51 -0
  324. package/node_modules/hasown/LICENSE +21 -0
  325. package/node_modules/hasown/README.md +40 -0
  326. package/node_modules/hasown/eslint.config.mjs +6 -0
  327. package/node_modules/hasown/index.d.ts +4 -0
  328. package/node_modules/hasown/index.js +8 -0
  329. package/node_modules/hasown/package.json +92 -0
  330. package/node_modules/hasown/tsconfig.json +6 -0
  331. package/node_modules/http-errors/HISTORY.md +186 -0
  332. package/node_modules/http-errors/LICENSE +23 -0
  333. package/node_modules/http-errors/README.md +169 -0
  334. package/node_modules/http-errors/index.js +290 -0
  335. package/node_modules/http-errors/package.json +54 -0
  336. package/node_modules/inherits/LICENSE +16 -0
  337. package/node_modules/inherits/README.md +42 -0
  338. package/node_modules/inherits/inherits.js +9 -0
  339. package/node_modules/inherits/inherits_browser.js +27 -0
  340. package/node_modules/inherits/package.json +29 -0
  341. package/node_modules/ipaddr.js/LICENSE +19 -0
  342. package/node_modules/ipaddr.js/README.md +233 -0
  343. package/node_modules/ipaddr.js/ipaddr.min.js +1 -0
  344. package/node_modules/ipaddr.js/lib/ipaddr.js +673 -0
  345. package/node_modules/ipaddr.js/lib/ipaddr.js.d.ts +68 -0
  346. package/node_modules/ipaddr.js/package.json +35 -0
  347. package/node_modules/is-docker/cli.js +5 -0
  348. package/node_modules/is-docker/index.d.ts +13 -0
  349. package/node_modules/is-docker/index.js +29 -0
  350. package/node_modules/is-docker/license +9 -0
  351. package/node_modules/is-docker/package.json +44 -0
  352. package/node_modules/is-docker/readme.md +27 -0
  353. package/node_modules/is-inside-container/cli.js +5 -0
  354. package/node_modules/is-inside-container/index.d.ts +13 -0
  355. package/node_modules/is-inside-container/index.js +23 -0
  356. package/node_modules/is-inside-container/license +9 -0
  357. package/node_modules/is-inside-container/package.json +51 -0
  358. package/node_modules/is-inside-container/readme.md +36 -0
  359. package/node_modules/is-wsl/index.d.ts +15 -0
  360. package/node_modules/is-wsl/index.js +36 -0
  361. package/node_modules/is-wsl/license +9 -0
  362. package/node_modules/is-wsl/package.json +58 -0
  363. package/node_modules/is-wsl/readme.md +21 -0
  364. package/node_modules/math-intrinsics/.eslintrc +16 -0
  365. package/node_modules/math-intrinsics/.github/FUNDING.yml +12 -0
  366. package/node_modules/math-intrinsics/CHANGELOG.md +24 -0
  367. package/node_modules/math-intrinsics/LICENSE +21 -0
  368. package/node_modules/math-intrinsics/README.md +50 -0
  369. package/node_modules/math-intrinsics/abs.d.ts +1 -0
  370. package/node_modules/math-intrinsics/abs.js +4 -0
  371. package/node_modules/math-intrinsics/constants/maxArrayLength.d.ts +3 -0
  372. package/node_modules/math-intrinsics/constants/maxArrayLength.js +4 -0
  373. package/node_modules/math-intrinsics/constants/maxSafeInteger.d.ts +3 -0
  374. package/node_modules/math-intrinsics/constants/maxSafeInteger.js +5 -0
  375. package/node_modules/math-intrinsics/constants/maxValue.d.ts +3 -0
  376. package/node_modules/math-intrinsics/constants/maxValue.js +5 -0
  377. package/node_modules/math-intrinsics/floor.d.ts +1 -0
  378. package/node_modules/math-intrinsics/floor.js +4 -0
  379. package/node_modules/math-intrinsics/isFinite.d.ts +3 -0
  380. package/node_modules/math-intrinsics/isFinite.js +12 -0
  381. package/node_modules/math-intrinsics/isInteger.d.ts +3 -0
  382. package/node_modules/math-intrinsics/isInteger.js +16 -0
  383. package/node_modules/math-intrinsics/isNaN.d.ts +1 -0
  384. package/node_modules/math-intrinsics/isNaN.js +6 -0
  385. package/node_modules/math-intrinsics/isNegativeZero.d.ts +3 -0
  386. package/node_modules/math-intrinsics/isNegativeZero.js +6 -0
  387. package/node_modules/math-intrinsics/max.d.ts +1 -0
  388. package/node_modules/math-intrinsics/max.js +4 -0
  389. package/node_modules/math-intrinsics/min.d.ts +1 -0
  390. package/node_modules/math-intrinsics/min.js +4 -0
  391. package/node_modules/math-intrinsics/mod.d.ts +3 -0
  392. package/node_modules/math-intrinsics/mod.js +9 -0
  393. package/node_modules/math-intrinsics/package.json +86 -0
  394. package/node_modules/math-intrinsics/pow.d.ts +1 -0
  395. package/node_modules/math-intrinsics/pow.js +4 -0
  396. package/node_modules/math-intrinsics/round.d.ts +1 -0
  397. package/node_modules/math-intrinsics/round.js +4 -0
  398. package/node_modules/math-intrinsics/sign.d.ts +3 -0
  399. package/node_modules/math-intrinsics/sign.js +11 -0
  400. package/node_modules/math-intrinsics/test/index.js +192 -0
  401. package/node_modules/math-intrinsics/tsconfig.json +3 -0
  402. package/node_modules/methods/HISTORY.md +29 -0
  403. package/node_modules/methods/LICENSE +24 -0
  404. package/node_modules/methods/README.md +51 -0
  405. package/node_modules/methods/index.js +69 -0
  406. package/node_modules/methods/package.json +36 -0
  407. package/node_modules/mime/.npmignore +0 -0
  408. package/node_modules/mime/CHANGELOG.md +164 -0
  409. package/node_modules/mime/LICENSE +21 -0
  410. package/node_modules/mime/README.md +90 -0
  411. package/node_modules/mime/cli.js +8 -0
  412. package/node_modules/mime/mime.js +108 -0
  413. package/node_modules/mime/package.json +44 -0
  414. package/node_modules/mime/src/build.js +53 -0
  415. package/node_modules/mime/src/test.js +60 -0
  416. package/node_modules/mime/types.json +1 -0
  417. package/node_modules/ms/index.js +162 -0
  418. package/node_modules/ms/license.md +21 -0
  419. package/node_modules/ms/package.json +38 -0
  420. package/node_modules/ms/readme.md +59 -0
  421. package/node_modules/object-inspect/.eslintrc +53 -0
  422. package/node_modules/object-inspect/.github/FUNDING.yml +12 -0
  423. package/node_modules/object-inspect/.nycrc +13 -0
  424. package/node_modules/object-inspect/CHANGELOG.md +424 -0
  425. package/node_modules/object-inspect/LICENSE +21 -0
  426. package/node_modules/object-inspect/example/all.js +23 -0
  427. package/node_modules/object-inspect/example/circular.js +6 -0
  428. package/node_modules/object-inspect/example/fn.js +5 -0
  429. package/node_modules/object-inspect/example/inspect.js +10 -0
  430. package/node_modules/object-inspect/index.js +544 -0
  431. package/node_modules/object-inspect/package-support.json +20 -0
  432. package/node_modules/object-inspect/package.json +105 -0
  433. package/node_modules/object-inspect/readme.markdown +84 -0
  434. package/node_modules/object-inspect/test/bigint.js +58 -0
  435. package/node_modules/object-inspect/test/browser/dom.js +15 -0
  436. package/node_modules/object-inspect/test/circular.js +16 -0
  437. package/node_modules/object-inspect/test/deep.js +12 -0
  438. package/node_modules/object-inspect/test/element.js +53 -0
  439. package/node_modules/object-inspect/test/err.js +48 -0
  440. package/node_modules/object-inspect/test/fakes.js +29 -0
  441. package/node_modules/object-inspect/test/fn.js +76 -0
  442. package/node_modules/object-inspect/test/global.js +17 -0
  443. package/node_modules/object-inspect/test/has.js +15 -0
  444. package/node_modules/object-inspect/test/holes.js +15 -0
  445. package/node_modules/object-inspect/test/indent-option.js +271 -0
  446. package/node_modules/object-inspect/test/inspect.js +139 -0
  447. package/node_modules/object-inspect/test/lowbyte.js +12 -0
  448. package/node_modules/object-inspect/test/number.js +58 -0
  449. package/node_modules/object-inspect/test/quoteStyle.js +26 -0
  450. package/node_modules/object-inspect/test/toStringTag.js +40 -0
  451. package/node_modules/object-inspect/test/undef.js +12 -0
  452. package/node_modules/object-inspect/test/values.js +261 -0
  453. package/node_modules/object-inspect/test-core-js.js +26 -0
  454. package/node_modules/object-inspect/util.inspect.js +1 -0
  455. package/node_modules/on-finished/HISTORY.md +98 -0
  456. package/node_modules/on-finished/LICENSE +23 -0
  457. package/node_modules/on-finished/README.md +162 -0
  458. package/node_modules/on-finished/index.js +234 -0
  459. package/node_modules/on-finished/package.json +39 -0
  460. package/node_modules/open/index.d.ts +158 -0
  461. package/node_modules/open/index.js +366 -0
  462. package/node_modules/open/license +9 -0
  463. package/node_modules/open/node_modules/wsl-utils/index.d.ts +21 -0
  464. package/node_modules/open/node_modules/wsl-utils/index.js +57 -0
  465. package/node_modules/open/node_modules/wsl-utils/license +9 -0
  466. package/node_modules/open/node_modules/wsl-utils/package.json +46 -0
  467. package/node_modules/open/node_modules/wsl-utils/readme.md +50 -0
  468. package/node_modules/open/package.json +68 -0
  469. package/node_modules/open/readme.md +183 -0
  470. package/node_modules/open/xdg-open +1267 -0
  471. package/node_modules/parseurl/HISTORY.md +58 -0
  472. package/node_modules/parseurl/LICENSE +24 -0
  473. package/node_modules/parseurl/README.md +133 -0
  474. package/node_modules/parseurl/index.js +158 -0
  475. package/node_modules/parseurl/package.json +40 -0
  476. package/node_modules/progrok/LICENSE +21 -0
  477. package/node_modules/progrok/README.md +53 -0
  478. package/node_modules/progrok/THIRD_PARTY_NOTICES.md +13 -0
  479. package/node_modules/progrok/dist/index.js +1142 -0
  480. package/node_modules/progrok/dist/index.js.map +1 -0
  481. package/node_modules/progrok/dist/public/app.js +529 -0
  482. package/node_modules/progrok/dist/public/index.html +47 -0
  483. package/node_modules/progrok/dist/public/style.css +392 -0
  484. package/node_modules/progrok/node_modules/accepts/HISTORY.md +243 -0
  485. package/node_modules/progrok/node_modules/accepts/LICENSE +23 -0
  486. package/node_modules/progrok/node_modules/accepts/README.md +140 -0
  487. package/node_modules/progrok/node_modules/accepts/index.js +238 -0
  488. package/node_modules/progrok/node_modules/accepts/package.json +47 -0
  489. package/node_modules/progrok/node_modules/body-parser/HISTORY.md +686 -0
  490. package/node_modules/progrok/node_modules/body-parser/LICENSE +23 -0
  491. package/node_modules/progrok/node_modules/body-parser/README.md +476 -0
  492. package/node_modules/progrok/node_modules/body-parser/index.js +156 -0
  493. package/node_modules/progrok/node_modules/body-parser/lib/read.js +205 -0
  494. package/node_modules/progrok/node_modules/body-parser/lib/types/json.js +243 -0
  495. package/node_modules/progrok/node_modules/body-parser/lib/types/raw.js +101 -0
  496. package/node_modules/progrok/node_modules/body-parser/lib/types/text.js +121 -0
  497. package/node_modules/progrok/node_modules/body-parser/lib/types/urlencoded.js +299 -0
  498. package/node_modules/progrok/node_modules/body-parser/package.json +55 -0
  499. package/node_modules/progrok/node_modules/content-disposition/HISTORY.md +60 -0
  500. package/node_modules/progrok/node_modules/content-disposition/LICENSE +22 -0
  501. package/node_modules/progrok/node_modules/content-disposition/README.md +142 -0
  502. package/node_modules/progrok/node_modules/content-disposition/index.js +458 -0
  503. package/node_modules/progrok/node_modules/content-disposition/package.json +44 -0
  504. package/node_modules/progrok/node_modules/cookie-signature/History.md +42 -0
  505. package/node_modules/progrok/node_modules/cookie-signature/Readme.md +42 -0
  506. package/node_modules/progrok/node_modules/cookie-signature/index.js +51 -0
  507. package/node_modules/progrok/node_modules/cookie-signature/package.json +18 -0
  508. package/node_modules/progrok/node_modules/debug/.coveralls.yml +1 -0
  509. package/node_modules/progrok/node_modules/debug/.eslintrc +11 -0
  510. package/node_modules/progrok/node_modules/debug/.npmignore +9 -0
  511. package/node_modules/progrok/node_modules/debug/.travis.yml +14 -0
  512. package/node_modules/progrok/node_modules/debug/CHANGELOG.md +362 -0
  513. package/node_modules/progrok/node_modules/debug/LICENSE +19 -0
  514. package/node_modules/progrok/node_modules/debug/Makefile +50 -0
  515. package/node_modules/progrok/node_modules/debug/README.md +312 -0
  516. package/node_modules/progrok/node_modules/debug/component.json +19 -0
  517. package/node_modules/progrok/node_modules/debug/karma.conf.js +70 -0
  518. package/node_modules/progrok/node_modules/debug/node.js +1 -0
  519. package/node_modules/progrok/node_modules/debug/node_modules/ms/index.js +152 -0
  520. package/node_modules/progrok/node_modules/debug/node_modules/ms/license.md +21 -0
  521. package/node_modules/progrok/node_modules/debug/node_modules/ms/package.json +37 -0
  522. package/node_modules/progrok/node_modules/debug/node_modules/ms/readme.md +51 -0
  523. package/node_modules/progrok/node_modules/debug/package.json +49 -0
  524. package/node_modules/progrok/node_modules/debug/src/browser.js +185 -0
  525. package/node_modules/progrok/node_modules/debug/src/debug.js +202 -0
  526. package/node_modules/progrok/node_modules/debug/src/index.js +10 -0
  527. package/node_modules/progrok/node_modules/debug/src/inspector-log.js +15 -0
  528. package/node_modules/progrok/node_modules/debug/src/node.js +248 -0
  529. package/node_modules/progrok/node_modules/express/History.md +3676 -0
  530. package/node_modules/progrok/node_modules/express/LICENSE +24 -0
  531. package/node_modules/progrok/node_modules/express/Readme.md +260 -0
  532. package/node_modules/progrok/node_modules/express/index.js +11 -0
  533. package/node_modules/progrok/node_modules/express/lib/application.js +661 -0
  534. package/node_modules/progrok/node_modules/express/lib/express.js +116 -0
  535. package/node_modules/progrok/node_modules/express/lib/middleware/init.js +43 -0
  536. package/node_modules/progrok/node_modules/express/lib/middleware/query.js +47 -0
  537. package/node_modules/progrok/node_modules/express/lib/request.js +525 -0
  538. package/node_modules/progrok/node_modules/express/lib/response.js +1179 -0
  539. package/node_modules/progrok/node_modules/express/lib/router/index.js +673 -0
  540. package/node_modules/progrok/node_modules/express/lib/router/layer.js +181 -0
  541. package/node_modules/progrok/node_modules/express/lib/router/route.js +230 -0
  542. package/node_modules/progrok/node_modules/express/lib/utils.js +304 -0
  543. package/node_modules/progrok/node_modules/express/lib/view.js +182 -0
  544. package/node_modules/progrok/node_modules/express/package.json +102 -0
  545. package/node_modules/progrok/node_modules/finalhandler/HISTORY.md +216 -0
  546. package/node_modules/progrok/node_modules/finalhandler/LICENSE +22 -0
  547. package/node_modules/progrok/node_modules/finalhandler/README.md +147 -0
  548. package/node_modules/progrok/node_modules/finalhandler/SECURITY.md +25 -0
  549. package/node_modules/progrok/node_modules/finalhandler/index.js +341 -0
  550. package/node_modules/progrok/node_modules/finalhandler/package.json +47 -0
  551. package/node_modules/progrok/node_modules/fresh/HISTORY.md +70 -0
  552. package/node_modules/progrok/node_modules/fresh/LICENSE +23 -0
  553. package/node_modules/progrok/node_modules/fresh/README.md +119 -0
  554. package/node_modules/progrok/node_modules/fresh/index.js +137 -0
  555. package/node_modules/progrok/node_modules/fresh/package.json +46 -0
  556. package/node_modules/progrok/node_modules/iconv-lite/Changelog.md +162 -0
  557. package/node_modules/progrok/node_modules/iconv-lite/LICENSE +21 -0
  558. package/node_modules/progrok/node_modules/iconv-lite/README.md +156 -0
  559. package/node_modules/progrok/node_modules/iconv-lite/encodings/dbcs-codec.js +555 -0
  560. package/node_modules/progrok/node_modules/iconv-lite/encodings/dbcs-data.js +176 -0
  561. package/node_modules/progrok/node_modules/iconv-lite/encodings/index.js +22 -0
  562. package/node_modules/progrok/node_modules/iconv-lite/encodings/internal.js +188 -0
  563. package/node_modules/progrok/node_modules/iconv-lite/encodings/sbcs-codec.js +72 -0
  564. package/node_modules/progrok/node_modules/iconv-lite/encodings/sbcs-data-generated.js +451 -0
  565. package/node_modules/progrok/node_modules/iconv-lite/encodings/sbcs-data.js +174 -0
  566. package/node_modules/progrok/node_modules/iconv-lite/encodings/tables/big5-added.json +122 -0
  567. package/node_modules/progrok/node_modules/iconv-lite/encodings/tables/cp936.json +264 -0
  568. package/node_modules/progrok/node_modules/iconv-lite/encodings/tables/cp949.json +273 -0
  569. package/node_modules/progrok/node_modules/iconv-lite/encodings/tables/cp950.json +177 -0
  570. package/node_modules/progrok/node_modules/iconv-lite/encodings/tables/eucjp.json +182 -0
  571. package/node_modules/progrok/node_modules/iconv-lite/encodings/tables/gb18030-ranges.json +1 -0
  572. package/node_modules/progrok/node_modules/iconv-lite/encodings/tables/gbk-added.json +55 -0
  573. package/node_modules/progrok/node_modules/iconv-lite/encodings/tables/shiftjis.json +125 -0
  574. package/node_modules/progrok/node_modules/iconv-lite/encodings/utf16.js +177 -0
  575. package/node_modules/progrok/node_modules/iconv-lite/encodings/utf7.js +290 -0
  576. package/node_modules/progrok/node_modules/iconv-lite/lib/bom-handling.js +52 -0
  577. package/node_modules/progrok/node_modules/iconv-lite/lib/extend-node.js +217 -0
  578. package/node_modules/progrok/node_modules/iconv-lite/lib/index.d.ts +24 -0
  579. package/node_modules/progrok/node_modules/iconv-lite/lib/index.js +153 -0
  580. package/node_modules/progrok/node_modules/iconv-lite/lib/streams.js +121 -0
  581. package/node_modules/progrok/node_modules/iconv-lite/package.json +46 -0
  582. package/node_modules/progrok/node_modules/media-typer/HISTORY.md +22 -0
  583. package/node_modules/progrok/node_modules/media-typer/LICENSE +22 -0
  584. package/node_modules/progrok/node_modules/media-typer/README.md +81 -0
  585. package/node_modules/progrok/node_modules/media-typer/index.js +270 -0
  586. package/node_modules/progrok/node_modules/media-typer/package.json +26 -0
  587. package/node_modules/progrok/node_modules/merge-descriptors/HISTORY.md +21 -0
  588. package/node_modules/progrok/node_modules/merge-descriptors/LICENSE +23 -0
  589. package/node_modules/progrok/node_modules/merge-descriptors/README.md +49 -0
  590. package/node_modules/progrok/node_modules/merge-descriptors/index.js +60 -0
  591. package/node_modules/progrok/node_modules/merge-descriptors/package.json +39 -0
  592. package/node_modules/progrok/node_modules/mime-db/HISTORY.md +507 -0
  593. package/node_modules/progrok/node_modules/mime-db/LICENSE +23 -0
  594. package/node_modules/progrok/node_modules/mime-db/README.md +100 -0
  595. package/node_modules/progrok/node_modules/mime-db/db.json +8519 -0
  596. package/node_modules/progrok/node_modules/mime-db/index.js +12 -0
  597. package/node_modules/progrok/node_modules/mime-db/package.json +60 -0
  598. package/node_modules/progrok/node_modules/mime-types/HISTORY.md +397 -0
  599. package/node_modules/progrok/node_modules/mime-types/LICENSE +23 -0
  600. package/node_modules/progrok/node_modules/mime-types/README.md +113 -0
  601. package/node_modules/progrok/node_modules/mime-types/index.js +188 -0
  602. package/node_modules/progrok/node_modules/mime-types/package.json +44 -0
  603. package/node_modules/progrok/node_modules/negotiator/HISTORY.md +108 -0
  604. package/node_modules/progrok/node_modules/negotiator/LICENSE +24 -0
  605. package/node_modules/progrok/node_modules/negotiator/README.md +203 -0
  606. package/node_modules/progrok/node_modules/negotiator/index.js +82 -0
  607. package/node_modules/progrok/node_modules/negotiator/lib/charset.js +169 -0
  608. package/node_modules/progrok/node_modules/negotiator/lib/encoding.js +184 -0
  609. package/node_modules/progrok/node_modules/negotiator/lib/language.js +179 -0
  610. package/node_modules/progrok/node_modules/negotiator/lib/mediaType.js +294 -0
  611. package/node_modules/progrok/node_modules/negotiator/package.json +42 -0
  612. package/node_modules/progrok/node_modules/path-to-regexp/LICENSE +21 -0
  613. package/node_modules/progrok/node_modules/path-to-regexp/Readme.md +35 -0
  614. package/node_modules/progrok/node_modules/path-to-regexp/index.js +158 -0
  615. package/node_modules/progrok/node_modules/path-to-regexp/package.json +30 -0
  616. package/node_modules/progrok/node_modules/raw-body/LICENSE +22 -0
  617. package/node_modules/progrok/node_modules/raw-body/README.md +223 -0
  618. package/node_modules/progrok/node_modules/raw-body/index.d.ts +87 -0
  619. package/node_modules/progrok/node_modules/raw-body/index.js +336 -0
  620. package/node_modules/progrok/node_modules/raw-body/package.json +47 -0
  621. package/node_modules/progrok/node_modules/send/HISTORY.md +538 -0
  622. package/node_modules/progrok/node_modules/send/LICENSE +23 -0
  623. package/node_modules/progrok/node_modules/send/README.md +327 -0
  624. package/node_modules/progrok/node_modules/send/SECURITY.md +24 -0
  625. package/node_modules/progrok/node_modules/send/index.js +1142 -0
  626. package/node_modules/progrok/node_modules/send/package.json +62 -0
  627. package/node_modules/progrok/node_modules/serve-static/HISTORY.md +493 -0
  628. package/node_modules/progrok/node_modules/serve-static/LICENSE +25 -0
  629. package/node_modules/progrok/node_modules/serve-static/README.md +257 -0
  630. package/node_modules/progrok/node_modules/serve-static/index.js +209 -0
  631. package/node_modules/progrok/node_modules/serve-static/package.json +42 -0
  632. package/node_modules/progrok/node_modules/type-is/HISTORY.md +259 -0
  633. package/node_modules/progrok/node_modules/type-is/LICENSE +23 -0
  634. package/node_modules/progrok/node_modules/type-is/README.md +170 -0
  635. package/node_modules/progrok/node_modules/type-is/index.js +266 -0
  636. package/node_modules/progrok/node_modules/type-is/package.json +45 -0
  637. package/node_modules/progrok/package.json +52 -0
  638. package/node_modules/progrok/skills/progrok/SKILL.md +228 -0
  639. package/node_modules/proxy-addr/HISTORY.md +161 -0
  640. package/node_modules/proxy-addr/LICENSE +22 -0
  641. package/node_modules/proxy-addr/README.md +139 -0
  642. package/node_modules/proxy-addr/index.js +327 -0
  643. package/node_modules/proxy-addr/package.json +47 -0
  644. package/node_modules/qs/.editorconfig +46 -0
  645. package/node_modules/qs/.github/FUNDING.yml +12 -0
  646. package/node_modules/qs/.github/SECURITY.md +11 -0
  647. package/node_modules/qs/.github/THREAT_MODEL.md +78 -0
  648. package/node_modules/qs/.nycrc +13 -0
  649. package/node_modules/qs/CHANGELOG.md +812 -0
  650. package/node_modules/qs/LICENSE.md +29 -0
  651. package/node_modules/qs/README.md +758 -0
  652. package/node_modules/qs/dist/qs.js +141 -0
  653. package/node_modules/qs/eslint.config.mjs +56 -0
  654. package/node_modules/qs/lib/formats.js +23 -0
  655. package/node_modules/qs/lib/index.js +11 -0
  656. package/node_modules/qs/lib/parse.js +373 -0
  657. package/node_modules/qs/lib/stringify.js +356 -0
  658. package/node_modules/qs/lib/utils.js +342 -0
  659. package/node_modules/qs/package.json +94 -0
  660. package/node_modules/qs/test/empty-keys-cases.js +267 -0
  661. package/node_modules/qs/test/parse.js +1654 -0
  662. package/node_modules/qs/test/stringify.js +1319 -0
  663. package/node_modules/qs/test/utils.js +432 -0
  664. package/node_modules/range-parser/HISTORY.md +56 -0
  665. package/node_modules/range-parser/LICENSE +23 -0
  666. package/node_modules/range-parser/README.md +84 -0
  667. package/node_modules/range-parser/index.js +162 -0
  668. package/node_modules/range-parser/package.json +44 -0
  669. package/node_modules/run-applescript/index.d.ts +66 -0
  670. package/node_modules/run-applescript/index.js +37 -0
  671. package/node_modules/run-applescript/license +9 -0
  672. package/node_modules/run-applescript/package.json +42 -0
  673. package/node_modules/run-applescript/readme.md +78 -0
  674. package/node_modules/safe-buffer/LICENSE +21 -0
  675. package/node_modules/safe-buffer/README.md +584 -0
  676. package/node_modules/safe-buffer/index.d.ts +187 -0
  677. package/node_modules/safe-buffer/index.js +65 -0
  678. package/node_modules/safe-buffer/package.json +51 -0
  679. package/node_modules/safer-buffer/LICENSE +21 -0
  680. package/node_modules/safer-buffer/Porting-Buffer.md +268 -0
  681. package/node_modules/safer-buffer/Readme.md +156 -0
  682. package/node_modules/safer-buffer/dangerous.js +58 -0
  683. package/node_modules/safer-buffer/package.json +34 -0
  684. package/node_modules/safer-buffer/safer.js +77 -0
  685. package/node_modules/safer-buffer/tests.js +406 -0
  686. package/node_modules/setprototypeof/LICENSE +13 -0
  687. package/node_modules/setprototypeof/README.md +31 -0
  688. package/node_modules/setprototypeof/index.d.ts +2 -0
  689. package/node_modules/setprototypeof/index.js +17 -0
  690. package/node_modules/setprototypeof/package.json +38 -0
  691. package/node_modules/setprototypeof/test/index.js +24 -0
  692. package/node_modules/side-channel/.editorconfig +9 -0
  693. package/node_modules/side-channel/.eslintrc +12 -0
  694. package/node_modules/side-channel/.github/FUNDING.yml +12 -0
  695. package/node_modules/side-channel/.nycrc +13 -0
  696. package/node_modules/side-channel/CHANGELOG.md +110 -0
  697. package/node_modules/side-channel/LICENSE +21 -0
  698. package/node_modules/side-channel/README.md +61 -0
  699. package/node_modules/side-channel/index.d.ts +14 -0
  700. package/node_modules/side-channel/index.js +43 -0
  701. package/node_modules/side-channel/package.json +85 -0
  702. package/node_modules/side-channel/test/index.js +104 -0
  703. package/node_modules/side-channel/tsconfig.json +9 -0
  704. package/node_modules/side-channel-list/.editorconfig +9 -0
  705. package/node_modules/side-channel-list/.eslintrc +11 -0
  706. package/node_modules/side-channel-list/.github/FUNDING.yml +12 -0
  707. package/node_modules/side-channel-list/.nycrc +13 -0
  708. package/node_modules/side-channel-list/CHANGELOG.md +36 -0
  709. package/node_modules/side-channel-list/LICENSE +21 -0
  710. package/node_modules/side-channel-list/README.md +62 -0
  711. package/node_modules/side-channel-list/index.d.ts +13 -0
  712. package/node_modules/side-channel-list/index.js +111 -0
  713. package/node_modules/side-channel-list/list.d.ts +14 -0
  714. package/node_modules/side-channel-list/package.json +77 -0
  715. package/node_modules/side-channel-list/test/index.js +154 -0
  716. package/node_modules/side-channel-list/tsconfig.json +9 -0
  717. package/node_modules/side-channel-map/.editorconfig +9 -0
  718. package/node_modules/side-channel-map/.eslintrc +11 -0
  719. package/node_modules/side-channel-map/.github/FUNDING.yml +12 -0
  720. package/node_modules/side-channel-map/.nycrc +13 -0
  721. package/node_modules/side-channel-map/CHANGELOG.md +22 -0
  722. package/node_modules/side-channel-map/LICENSE +21 -0
  723. package/node_modules/side-channel-map/README.md +62 -0
  724. package/node_modules/side-channel-map/index.d.ts +15 -0
  725. package/node_modules/side-channel-map/index.js +68 -0
  726. package/node_modules/side-channel-map/package.json +80 -0
  727. package/node_modules/side-channel-map/test/index.js +114 -0
  728. package/node_modules/side-channel-map/tsconfig.json +9 -0
  729. package/node_modules/side-channel-weakmap/.editorconfig +9 -0
  730. package/node_modules/side-channel-weakmap/.eslintrc +12 -0
  731. package/node_modules/side-channel-weakmap/.github/FUNDING.yml +12 -0
  732. package/node_modules/side-channel-weakmap/.nycrc +13 -0
  733. package/node_modules/side-channel-weakmap/CHANGELOG.md +28 -0
  734. package/node_modules/side-channel-weakmap/LICENSE +21 -0
  735. package/node_modules/side-channel-weakmap/README.md +62 -0
  736. package/node_modules/side-channel-weakmap/index.d.ts +15 -0
  737. package/node_modules/side-channel-weakmap/index.js +84 -0
  738. package/node_modules/side-channel-weakmap/package.json +87 -0
  739. package/node_modules/side-channel-weakmap/test/index.js +114 -0
  740. package/node_modules/side-channel-weakmap/tsconfig.json +9 -0
  741. package/node_modules/statuses/HISTORY.md +87 -0
  742. package/node_modules/statuses/LICENSE +23 -0
  743. package/node_modules/statuses/README.md +139 -0
  744. package/node_modules/statuses/codes.json +65 -0
  745. package/node_modules/statuses/index.js +146 -0
  746. package/node_modules/statuses/package.json +49 -0
  747. package/node_modules/toidentifier/HISTORY.md +9 -0
  748. package/node_modules/toidentifier/LICENSE +21 -0
  749. package/node_modules/toidentifier/README.md +61 -0
  750. package/node_modules/toidentifier/index.js +32 -0
  751. package/node_modules/toidentifier/package.json +38 -0
  752. package/node_modules/unpipe/HISTORY.md +4 -0
  753. package/node_modules/unpipe/LICENSE +22 -0
  754. package/node_modules/unpipe/README.md +43 -0
  755. package/node_modules/unpipe/index.js +69 -0
  756. package/node_modules/unpipe/package.json +27 -0
  757. package/node_modules/utils-merge/.npmignore +9 -0
  758. package/node_modules/utils-merge/LICENSE +20 -0
  759. package/node_modules/utils-merge/README.md +34 -0
  760. package/node_modules/utils-merge/index.js +23 -0
  761. package/node_modules/utils-merge/package.json +40 -0
  762. package/node_modules/vary/HISTORY.md +39 -0
  763. package/node_modules/vary/LICENSE +22 -0
  764. package/node_modules/vary/README.md +101 -0
  765. package/node_modules/vary/index.js +149 -0
  766. package/node_modules/vary/package.json +43 -0
  767. package/package.json +7 -2
  768. package/routes/edit.js +85 -13
  769. package/routes/edit.ts +94 -23
  770. package/routes/generate.js +118 -11
  771. package/routes/generate.ts +127 -10
  772. package/routes/grok.js +22 -0
  773. package/routes/grok.ts +24 -0
  774. package/routes/health.js +5 -0
  775. package/routes/health.ts +5 -0
  776. package/routes/index.js +4 -0
  777. package/routes/index.ts +4 -0
  778. package/routes/multimode.js +71 -26
  779. package/routes/multimode.ts +80 -39
  780. package/routes/nodes.js +88 -33
  781. package/routes/nodes.ts +97 -42
  782. package/routes/video.js +197 -0
  783. package/routes/video.ts +216 -0
  784. package/server.js +42 -1
  785. package/server.ts +34 -1
  786. package/skills/ima2/SKILL.md +27 -0
  787. package/ui/dist/.vite/manifest.json +12 -12
  788. package/ui/dist/assets/AgentWorkspace-c1_kEfFN.js +3 -0
  789. package/ui/dist/assets/{CardNewsWorkspace-BBLdwzYU.js → CardNewsWorkspace-CTBT3MbP.js} +2 -2
  790. package/ui/dist/assets/NodeCanvas-D3ecSAEi.js +7 -0
  791. package/ui/dist/assets/{PromptBuilderPanel-Y2VygFc0.js → PromptBuilderPanel-CqepukCN.js} +2 -2
  792. package/ui/dist/assets/{PromptImportDialog-C6lFV-LL.js → PromptImportDialog-Bvr8Q8P2.js} +2 -2
  793. package/ui/dist/assets/{PromptImportDiscoverySection-D8YJFhND.js → PromptImportDiscoverySection-CyZEXyWP.js} +1 -1
  794. package/ui/dist/assets/{PromptImportFolderSection-ywfcQolW.js → PromptImportFolderSection-CIl-_pyV.js} +1 -1
  795. package/ui/dist/assets/{PromptLibraryPanel-fk4KmrGy.js → PromptLibraryPanel-Bj23Q6l9.js} +2 -2
  796. package/ui/dist/assets/SettingsWorkspace-D_GqtEsP.js +1 -0
  797. package/ui/dist/assets/index-DMjgFXdO.css +1 -0
  798. package/ui/dist/assets/index-DQ6jg4Ui.js +32 -0
  799. package/ui/dist/assets/index-DtSBvfgp.js +1 -0
  800. package/ui/dist/index.html +2 -2
  801. package/vendor/progrok-0.1.0.tgz +0 -0
  802. package/ui/dist/assets/AgentWorkspace-BJe9yxPA.js +0 -3
  803. package/ui/dist/assets/NodeCanvas-BSZ527J4.js +0 -7
  804. package/ui/dist/assets/SettingsWorkspace-DL5vhAHQ.js +0 -1
  805. package/ui/dist/assets/index-BLx55BOg.js +0 -1
  806. package/ui/dist/assets/index-ByViUJfx.css +0 -1
  807. package/ui/dist/assets/index-Ci36vcFD.js +0 -28
@@ -2,11 +2,12 @@ import { mkdir, writeFile } from "fs/promises";
2
2
  import { join } from "path";
3
3
  import { randomBytes } from "crypto";
4
4
  import type { Express, Request, Response } from "express";
5
- import { summarizeReferencePayload, validateAndNormalizeRefs } from "../lib/refs.js";
5
+ import { detectImageMimeFromB64, summarizeReferencePayload, validateAndNormalizeRefs } from "../lib/refs.js";
6
6
  import { classifyUpstreamError } from "../lib/errorClassify.js";
7
7
  import { normalizeOAuthParams } from "../lib/oauthNormalize.js";
8
8
  import { resolveProviderOptions } from "../lib/providerOptions.js";
9
9
  import { generateMultimodeViaResponses } from "../lib/responsesImageAdapter.js";
10
+ import { generateMultimodeViaGrok } from "../lib/grokMultimodeAdapter.js";
10
11
  import { startJob, finishJob, registerJobAbortController, isJobCanceled } from "../lib/inflight.js";
11
12
  import {
12
13
  isGenerationCanceledError,
@@ -48,6 +49,13 @@ function sequenceStatus(returned: number, requested: number): "empty" | "partial
48
49
  interface MultimodeImage {
49
50
  b64: string;
50
51
  revisedPrompt?: string | null;
52
+ mime?: string | null;
53
+ }
54
+
55
+ function imageFormatFromMime(mime: string | null | undefined): "png" | "jpeg" | "webp" {
56
+ if (mime === "image/jpeg") return "jpeg";
57
+ if (mime === "image/webp") return "webp";
58
+ return "png";
51
59
  }
52
60
 
53
61
  type MultimodeRouteItem = {
@@ -195,7 +203,8 @@ export function registerMultimodeRoutes(app: Express, ctxRaw: RouteRuntimeContex
195
203
 
196
204
  const startTime = Date.now();
197
205
  const mimeMap: Record<string, string> = { png: "image/png", jpeg: "image/jpeg", webp: "image/webp" };
198
- const mime = mimeMap[String(format)] || "image/png";
206
+ const mmFormat = activeProvider === "grok" ? "jpeg" : String(format);
207
+ const mime = mimeMap[mmFormat] || "image/png";
199
208
  const sequenceId = `seq_${Date.now().toString(36)}_${randomBytes(4).toString("hex")}`;
200
209
  routeMaxImages = maxImages;
201
210
  routeSequenceId = sequenceId;
@@ -220,8 +229,12 @@ export function registerMultimodeRoutes(app: Express, ctxRaw: RouteRuntimeContex
220
229
  ) => {
221
230
  if (persistedIndexes.has(index)) return;
222
231
  throwIfJobCanceled(requestId);
232
+ const resultMime = activeProvider === "grok"
233
+ ? (image.mime || detectImageMimeFromB64(image.b64) || mime)
234
+ : mime;
235
+ const resultFormat = activeProvider === "grok" ? imageFormatFromMime(resultMime) : mmFormat;
223
236
  const rand = randomBytes(ctx.config.ids.generatedHexBytes).toString("hex");
224
- const filename = `${Date.now()}_${rand}_multimode_${index}.${format}`;
237
+ const filename = `${Date.now()}_${rand}_multimode_${index}.${resultFormat}`;
225
238
  const meta = {
226
239
  kind: "multimode-image",
227
240
  generationStrategy: "one-call-text-sequence",
@@ -240,9 +253,9 @@ export function registerMultimodeRoutes(app: Express, ctxRaw: RouteRuntimeContex
240
253
  composerInsertedPrompts,
241
254
  quality,
242
255
  size: effectiveSize,
243
- format,
256
+ format: resultFormat,
244
257
  moderation,
245
- model: imageModel,
258
+ model: activeProvider === "grok" ? (quality === "high" ? "grok-imagine-image-quality" : imageModel) : imageModel,
246
259
  provider: activeProvider,
247
260
  createdAt: Date.now(),
248
261
  usage: latestUsage,
@@ -251,14 +264,14 @@ export function registerMultimodeRoutes(app: Express, ctxRaw: RouteRuntimeContex
251
264
  refsCount: refCheck.refs.length,
252
265
  };
253
266
  const rawBuffer = Buffer.from(image.b64, "base64");
254
- const embedded = await embedImageMetadataBestEffort(rawBuffer, format, meta, {
267
+ const embedded = await embedImageMetadataBestEffort(rawBuffer, resultFormat, meta, {
255
268
  version: ctx.packageVersion,
256
269
  });
257
270
  await writeFile(join(ctx.config.storage.generatedDir, filename), embedded.buffer);
258
271
  await writeFile(join(ctx.config.storage.generatedDir, filename + ".json"), JSON.stringify(meta)).catch(() => {});
259
272
  invalidateHistoryIndex();
260
273
  const item = {
261
- image: `data:${mime};base64,${image.b64}`,
274
+ image: `data:${resultMime};base64,${image.b64}`,
262
275
  filename,
263
276
  revisedPrompt: image.revisedPrompt || null,
264
277
  sequenceId,
@@ -273,42 +286,56 @@ export function registerMultimodeRoutes(app: Express, ctxRaw: RouteRuntimeContex
273
286
  };
274
287
 
275
288
  sendSse(res, "phase", { phase: "streaming", requestId, sequenceId, maxImages });
276
- const generated = await generateMultimodeViaResponses(
277
- activeProvider,
278
- prompt,
279
- quality,
280
- effectiveSize,
281
- moderation,
282
- refCheck.refDetails || refCheck.refs,
283
- requestId,
284
- normalizedPromptMode,
285
- ctx,
286
- {
287
- model: imageModel,
289
+
290
+ let generated: { images: Array<{ b64: string; revisedPrompt?: string | null }>; usage: Record<string, number> | null; webSearchCalls?: number; extraIgnored?: number };
291
+
292
+ if (activeProvider === "grok") {
293
+ const grokModel = quality === "high" ? "grok-imagine-image-quality" : imageModel;
294
+ generated = await generateMultimodeViaGrok(prompt, ctx, {
295
+ model: grokModel,
288
296
  maxImages,
289
- reasoningEffort,
290
- webSearchEnabled,
291
- onPartialImage: (partial) =>
292
- isJobCanceled(requestId)
293
- ? undefined
294
- : sendSse(res, "partial", {
295
- image: `data:${mime};base64,${partial.b64}`,
296
- requestId,
297
- sequenceId,
298
- index: partial.index,
299
- }),
297
+ size: effectiveSize,
298
+ signal: cancelController.signal,
299
+ requestId,
300
+ references: refCheck.refDetails,
300
301
  onFinalImage: async (image, index) => {
301
302
  const totalReturned = Math.max(index + 1, images.length + 1);
302
- await persistAndSendImage(
303
- image,
304
- index,
305
- totalReturned,
306
- sequenceStatus(totalReturned, maxImages),
307
- );
303
+ await persistAndSendImage(image, index, totalReturned, sequenceStatus(totalReturned, maxImages));
308
304
  },
309
- signal: cancelController.signal,
310
- },
311
- );
305
+ });
306
+ } else {
307
+ generated = await generateMultimodeViaResponses(
308
+ activeProvider,
309
+ prompt,
310
+ quality,
311
+ effectiveSize,
312
+ moderation,
313
+ refCheck.refDetails || refCheck.refs,
314
+ requestId,
315
+ normalizedPromptMode,
316
+ ctx,
317
+ {
318
+ model: imageModel,
319
+ maxImages,
320
+ reasoningEffort,
321
+ webSearchEnabled,
322
+ onPartialImage: (partial) =>
323
+ isJobCanceled(requestId)
324
+ ? undefined
325
+ : sendSse(res, "partial", {
326
+ image: `data:${mime};base64,${partial.b64}`,
327
+ requestId,
328
+ sequenceId,
329
+ index: partial.index,
330
+ }),
331
+ onFinalImage: async (image, index) => {
332
+ const totalReturned = Math.max(index + 1, images.length + 1);
333
+ await persistAndSendImage(image, index, totalReturned, sequenceStatus(totalReturned, maxImages));
334
+ },
335
+ signal: cancelController.signal,
336
+ },
337
+ );
338
+ }
312
339
  throwIfJobCanceled(requestId);
313
340
 
314
341
  latestUsage = generated.usage || null;
@@ -326,6 +353,20 @@ export function registerMultimodeRoutes(app: Express, ctxRaw: RouteRuntimeContex
326
353
  const returned = images.length;
327
354
  const status = sequenceStatus(returned, maxImages);
328
355
  const elapsed = ((Date.now() - startTime) / 1000).toFixed(1);
356
+ if (returned === 0) {
357
+ finishStatus = "error";
358
+ finishHttpStatus = 422;
359
+ finishErrorCode = "EMPTY_RESPONSE";
360
+ finishMeta = { sequenceId, filenames: [], imageCount: 0, maxImages, status, composerPrompt: routeComposerPrompt, composerInsertedPrompts: routeComposerInsertedPrompts };
361
+ sendSse(res, "error", {
362
+ error: "No image data returned from the multimode stream",
363
+ code: finishErrorCode,
364
+ status: finishHttpStatus,
365
+ requestId, sequenceId, requested: maxImages, returned,
366
+ });
367
+ logEvent("multimode", "empty_response", { requestId, sequenceId, maxImages, elapsedMs: Date.now() - startTime });
368
+ return;
369
+ }
329
370
  finishMeta = {
330
371
  sequenceId,
331
372
  filenames: images.map((image) => image.filename),
package/routes/nodes.js CHANGED
@@ -2,11 +2,12 @@ import { mkdir } from "fs/promises";
2
2
  import { newNodeId, saveNode, loadNodeB64, loadNodeMeta, loadAssetB64, } from "../lib/nodeStore.js";
3
3
  import { startJob, finishJob, registerJobAbortController, isJobCanceled } from "../lib/inflight.js";
4
4
  import { isGenerationCanceledError, makeGenerationCanceledError, throwIfJobCanceled, } from "../lib/generationCancel.js";
5
- import { summarizeReferencePayload, validateAndNormalizeRefs } from "../lib/refs.js";
5
+ import { detectImageMimeFromB64, summarizeReferencePayload, validateAndNormalizeRefs } from "../lib/refs.js";
6
6
  import { classifyUpstreamError } from "../lib/errorClassify.js";
7
7
  import { normalizeOAuthParams } from "../lib/oauthNormalize.js";
8
8
  import { resolveProviderOptions } from "../lib/providerOptions.js";
9
9
  import { generateViaResponses, editViaResponses } from "../lib/responsesImageAdapter.js";
10
+ import { generateViaGrok } from "../lib/grokImageAdapter.js";
10
11
  import { isNonRetryableGenerationError, normalizeGenerationFailure } from "../lib/generationErrors.js";
11
12
  import { logEvent, logError } from "../lib/logger.js";
12
13
  import { errInfo } from "../lib/errInfo.js";
@@ -49,6 +50,29 @@ function writeNodeError(res, status, code, message, parentNodeId, details = {})
49
50
  function dataUrlFromB64(format, b64) {
50
51
  return `data:image/${format === "jpeg" ? "jpeg" : format};base64,${b64}`;
51
52
  }
53
+ function imageFormatFromMime(mime) {
54
+ if (mime === "image/jpeg")
55
+ return "jpeg";
56
+ if (mime === "image/webp")
57
+ return "webp";
58
+ return "png";
59
+ }
60
+ async function loadParentNodeB64(ctx, nodeId) {
61
+ for (const ext of ["png", "jpeg", "webp"]) {
62
+ const meta = await loadNodeMeta(ctx.rootDir, nodeId, ext, ctx.config.storage.generatedDir);
63
+ if (meta)
64
+ return loadNodeB64(ctx.rootDir, `${nodeId}.${ext}`, ctx.config.storage.generatedDir);
65
+ }
66
+ return loadNodeB64(ctx.rootDir, `${nodeId}.png`, ctx.config.storage.generatedDir);
67
+ }
68
+ function toGrokReferences(parentB64, refs) {
69
+ const parentMime = parentB64 ? detectImageMimeFromB64(parentB64) : null;
70
+ const parentRefs = parentB64
71
+ ? [{ b64: parentB64, declaredMime: parentMime, detectedMime: parentMime }]
72
+ : [];
73
+ const normalizedRefs = refs.map((ref) => typeof ref === "string" ? { b64: ref } : ref);
74
+ return [...parentRefs, ...normalizedRefs];
75
+ }
52
76
  export function registerNodeRoutes(app, ctxRaw) {
53
77
  const ctx = requireRuntimeContext(ctxRaw);
54
78
  app.post("/api/node/generate", async (req, res) => {
@@ -111,6 +135,9 @@ export function registerNodeRoutes(app, ctxRaw) {
111
135
  const effectiveSize = providerOptions.size;
112
136
  const webSearchEnabled = providerOptions.webSearchEnabled;
113
137
  const activeProvider = providerOptions.provider;
138
+ const effectiveImageModel = activeProvider === "grok" && quality === "high"
139
+ ? "grok-imagine-image-quality"
140
+ : imageModel;
114
141
  if (contextMode === "ancestry") {
115
142
  finishStatus = "error";
116
143
  finishHttpStatus = 400;
@@ -154,7 +181,7 @@ export function registerNodeRoutes(app, ctxRaw) {
154
181
  const startTime = Date.now();
155
182
  let parentB64 = null;
156
183
  if (parentNodeId) {
157
- parentB64 = await loadNodeB64(ctx.rootDir, `${parentNodeId}.png`, ctx.config.storage.generatedDir);
184
+ parentB64 = await loadParentNodeB64(ctx, parentNodeId);
158
185
  }
159
186
  else if (typeof externalSrc === "string" && externalSrc.length > 0) {
160
187
  parentB64 = await loadAssetB64(ctx.rootDir, externalSrc, ctx.config.storage.generatedDir);
@@ -166,6 +193,19 @@ export function registerNodeRoutes(app, ctxRaw) {
166
193
  const refsForRequest = contextMode === "parent-only" ? [] : (refCheck.refDetails || refCheck.refs);
167
194
  const parentImagePresent = !!parentB64;
168
195
  const inputImageCount = (parentImagePresent ? 1 : 0) + refsForRequest.length;
196
+ if (activeProvider === "grok" && inputImageCount > 3) {
197
+ finishStatus = "error";
198
+ finishHttpStatus = 400;
199
+ finishErrorCode = "GROK_REF_TOO_MANY";
200
+ return res.status(400).json({
201
+ error: {
202
+ code: "GROK_REF_TOO_MANY",
203
+ message: "Grok image editing supports up to 3 reference images.",
204
+ },
205
+ code: "GROK_REF_TOO_MANY",
206
+ parentNodeId,
207
+ });
208
+ }
169
209
  logEvent("node", "request", {
170
210
  requestId,
171
211
  operation,
@@ -173,7 +213,7 @@ export function registerNodeRoutes(app, ctxRaw) {
173
213
  parentNodeId,
174
214
  clientNodeId,
175
215
  quality,
176
- model: imageModel,
216
+ model: effectiveImageModel,
177
217
  size: effectiveSize,
178
218
  moderation,
179
219
  refs: refsForRequest.length,
@@ -198,6 +238,7 @@ export function registerNodeRoutes(app, ctxRaw) {
198
238
  writeSse(res, "phase", { requestId, phase: "streaming" });
199
239
  }
200
240
  let b64, usage, webSearchCalls = 0, revisedPrompt = null;
241
+ let resultFormat = activeProvider === "grok" ? "jpeg" : format;
201
242
  const MAX_RETRIES = 1;
202
243
  let lastErr = null;
203
244
  for (let attempt = 0; attempt <= MAX_RETRIES; attempt++) {
@@ -209,7 +250,7 @@ export function registerNodeRoutes(app, ctxRaw) {
209
250
  sessionId,
210
251
  parentNodeId,
211
252
  clientNodeId,
212
- model: imageModel,
253
+ model: effectiveImageModel,
213
254
  moderation,
214
255
  quality,
215
256
  size: effectiveSize,
@@ -220,37 +261,48 @@ export function registerNodeRoutes(app, ctxRaw) {
220
261
  searchMode,
221
262
  webSearchEnabled,
222
263
  });
223
- const r = parentB64
224
- ? await editViaResponses(activeProvider, prompt, parentB64, quality, effectiveSize, moderation, normalizedPromptMode, ctx, requestId, {
225
- model: imageModel,
226
- references: refsForRequest,
227
- searchMode,
228
- reasoningEffort,
229
- webSearchEnabled,
264
+ const r = activeProvider === "grok"
265
+ ? await generateViaGrok(prompt, ctx, {
266
+ model: effectiveImageModel,
267
+ size: effectiveSize,
268
+ requestId,
230
269
  signal: cancelController.signal,
270
+ references: toGrokReferences(parentB64, refsForRequest),
231
271
  })
232
- : await generateViaResponses(activeProvider, prompt, quality, effectiveSize, moderation, refsForRequest, requestId, normalizedPromptMode, ctx, {
233
- model: imageModel,
234
- reasoningEffort,
235
- webSearchEnabled,
236
- signal: cancelController.signal,
237
- partialImages: streamResponse ? 2 : 0,
238
- onPartialImage: streamResponse
239
- ? (partial) => isJobCanceled(requestId)
240
- ? undefined
241
- : writeSse(res, "partial", {
242
- requestId,
243
- image: dataUrlFromB64(format, partial.b64),
244
- index: partial.index,
245
- })
246
- : null,
247
- });
272
+ : parentB64
273
+ ? await editViaResponses(activeProvider, prompt, parentB64, quality, effectiveSize, moderation, normalizedPromptMode, ctx, requestId, {
274
+ model: effectiveImageModel,
275
+ references: refsForRequest,
276
+ searchMode,
277
+ reasoningEffort,
278
+ webSearchEnabled,
279
+ signal: cancelController.signal,
280
+ })
281
+ : await generateViaResponses(activeProvider, prompt, quality, effectiveSize, moderation, refsForRequest, requestId, normalizedPromptMode, ctx, {
282
+ model: effectiveImageModel,
283
+ reasoningEffort,
284
+ webSearchEnabled,
285
+ signal: cancelController.signal,
286
+ partialImages: streamResponse ? 2 : 0,
287
+ onPartialImage: streamResponse
288
+ ? (partial) => isJobCanceled(requestId)
289
+ ? undefined
290
+ : writeSse(res, "partial", {
291
+ requestId,
292
+ image: dataUrlFromB64(format, partial.b64),
293
+ index: partial.index,
294
+ })
295
+ : null,
296
+ });
248
297
  throwIfJobCanceled(requestId);
249
298
  if (r.b64) {
250
299
  b64 = r.b64;
251
300
  usage = r.usage;
252
301
  webSearchCalls = r.webSearchCalls || 0;
253
302
  revisedPrompt = r.revisedPrompt || null;
303
+ if (activeProvider === "grok") {
304
+ resultFormat = imageFormatFromMime(("mime" in r ? r.mime : undefined) || detectImageMimeFromB64(r.b64) || "image/jpeg");
305
+ }
254
306
  break;
255
307
  }
256
308
  lastErr = { message: "Empty response (safety refusal)" };
@@ -319,8 +371,9 @@ export function registerNodeRoutes(app, ctxRaw) {
319
371
  userPrompt: prompt,
320
372
  revisedPrompt,
321
373
  promptMode: normalizedPromptMode,
322
- options: { quality, size: effectiveSize, format, moderation },
323
- model: imageModel,
374
+ options: { quality, size: effectiveSize, format: resultFormat, moderation },
375
+ model: effectiveImageModel,
376
+ reasoningEffort,
324
377
  createdAt: Date.now(),
325
378
  createdAtIso: new Date().toISOString(),
326
379
  elapsed,
@@ -335,7 +388,7 @@ export function registerNodeRoutes(app, ctxRaw) {
335
388
  refsCount: refsForRequest.length,
336
389
  quality,
337
390
  size: effectiveSize,
338
- format,
391
+ format: resultFormat,
339
392
  moderation,
340
393
  };
341
394
  await mkdir(ctx.config.storage.generatedDir, { recursive: true });
@@ -344,7 +397,7 @@ export function registerNodeRoutes(app, ctxRaw) {
344
397
  nodeId,
345
398
  b64,
346
399
  meta,
347
- ext: format,
400
+ ext: resultFormat,
348
401
  generatedDir: ctx.config.storage.generatedDir,
349
402
  });
350
403
  finishMeta = { nodeId, filename, imageChars: b64.length };
@@ -360,7 +413,7 @@ export function registerNodeRoutes(app, ctxRaw) {
360
413
  nodeId,
361
414
  parentNodeId,
362
415
  requestId,
363
- image: dataUrlFromB64(format, b64),
416
+ image: dataUrlFromB64(resultFormat, b64),
364
417
  filename,
365
418
  url: `/generated/${filename}`,
366
419
  elapsed,
@@ -368,8 +421,10 @@ export function registerNodeRoutes(app, ctxRaw) {
368
421
  webSearchCalls,
369
422
  webSearchEnabled,
370
423
  provider: activeProvider,
371
- model: imageModel,
424
+ model: effectiveImageModel,
425
+ reasoningEffort,
372
426
  size: effectiveSize,
427
+ format: resultFormat,
373
428
  moderation,
374
429
  refsCount: refsForRequest.length,
375
430
  contextMode,
package/routes/nodes.ts CHANGED
@@ -13,11 +13,12 @@ import {
13
13
  makeGenerationCanceledError,
14
14
  throwIfJobCanceled,
15
15
  } from "../lib/generationCancel.js";
16
- import { summarizeReferencePayload, validateAndNormalizeRefs } from "../lib/refs.js";
16
+ import { detectImageMimeFromB64, summarizeReferencePayload, validateAndNormalizeRefs } from "../lib/refs.js";
17
17
  import { classifyUpstreamError } from "../lib/errorClassify.js";
18
18
  import { normalizeOAuthParams } from "../lib/oauthNormalize.js";
19
19
  import { resolveProviderOptions } from "../lib/providerOptions.js";
20
20
  import { generateViaResponses, editViaResponses } from "../lib/responsesImageAdapter.js";
21
+ import { generateViaGrok, type GrokReferenceImage } from "../lib/grokImageAdapter.js";
21
22
  import { isNonRetryableGenerationError, normalizeGenerationFailure, type UpstreamErr } from "../lib/generationErrors.js";
22
23
  import { logEvent, logError } from "../lib/logger.js";
23
24
 
@@ -75,6 +76,29 @@ function dataUrlFromB64(format: string, b64: string) {
75
76
  return `data:image/${format === "jpeg" ? "jpeg" : format};base64,${b64}`;
76
77
  }
77
78
 
79
+ function imageFormatFromMime(mime: string | null | undefined): "png" | "jpeg" | "webp" {
80
+ if (mime === "image/jpeg") return "jpeg";
81
+ if (mime === "image/webp") return "webp";
82
+ return "png";
83
+ }
84
+
85
+ async function loadParentNodeB64(ctx: RuntimeContext, nodeId: string) {
86
+ for (const ext of ["png", "jpeg", "webp"] as const) {
87
+ const meta = await loadNodeMeta(ctx.rootDir, nodeId, ext, ctx.config.storage.generatedDir);
88
+ if (meta) return loadNodeB64(ctx.rootDir, `${nodeId}.${ext}`, ctx.config.storage.generatedDir);
89
+ }
90
+ return loadNodeB64(ctx.rootDir, `${nodeId}.png`, ctx.config.storage.generatedDir);
91
+ }
92
+
93
+ function toGrokReferences(parentB64: string | null, refs: Array<GrokReferenceImage | string>): GrokReferenceImage[] {
94
+ const parentMime = parentB64 ? detectImageMimeFromB64(parentB64) : null;
95
+ const parentRefs = parentB64
96
+ ? [{ b64: parentB64, declaredMime: parentMime, detectedMime: parentMime }]
97
+ : [];
98
+ const normalizedRefs = refs.map((ref) => typeof ref === "string" ? { b64: ref } : ref);
99
+ return [...parentRefs, ...normalizedRefs];
100
+ }
101
+
78
102
  export function registerNodeRoutes(app: Express, ctxRaw: RouteRuntimeContext) {
79
103
  const ctx = requireRuntimeContext(ctxRaw);
80
104
  app.post("/api/node/generate", async (req: Request, res: Response) => {
@@ -170,6 +194,9 @@ export function registerNodeRoutes(app: Express, ctxRaw: RouteRuntimeContext) {
170
194
  const effectiveSize = providerOptions.size;
171
195
  const webSearchEnabled = providerOptions.webSearchEnabled;
172
196
  const activeProvider = providerOptions.provider;
197
+ const effectiveImageModel = activeProvider === "grok" && quality === "high"
198
+ ? "grok-imagine-image-quality"
199
+ : imageModel;
173
200
  if (contextMode === "ancestry") {
174
201
  finishStatus = "error";
175
202
  finishHttpStatus = 400;
@@ -215,7 +242,7 @@ export function registerNodeRoutes(app: Express, ctxRaw: RouteRuntimeContext) {
215
242
  const startTime = Date.now();
216
243
  let parentB64: string | null = null;
217
244
  if (parentNodeId) {
218
- parentB64 = await loadNodeB64(ctx.rootDir, `${parentNodeId}.png`, ctx.config.storage.generatedDir);
245
+ parentB64 = await loadParentNodeB64(ctx, parentNodeId);
219
246
  } else if (typeof externalSrc === "string" && externalSrc.length > 0) {
220
247
  parentB64 = await loadAssetB64(ctx.rootDir, externalSrc, ctx.config.storage.generatedDir);
221
248
  }
@@ -226,6 +253,19 @@ export function registerNodeRoutes(app: Express, ctxRaw: RouteRuntimeContext) {
226
253
  const refsForRequest = contextMode === "parent-only" ? [] : (refCheck.refDetails || refCheck.refs);
227
254
  const parentImagePresent = !!parentB64;
228
255
  const inputImageCount = (parentImagePresent ? 1 : 0) + refsForRequest.length;
256
+ if (activeProvider === "grok" && inputImageCount > 3) {
257
+ finishStatus = "error";
258
+ finishHttpStatus = 400;
259
+ finishErrorCode = "GROK_REF_TOO_MANY";
260
+ return res.status(400).json({
261
+ error: {
262
+ code: "GROK_REF_TOO_MANY",
263
+ message: "Grok image editing supports up to 3 reference images.",
264
+ },
265
+ code: "GROK_REF_TOO_MANY",
266
+ parentNodeId,
267
+ });
268
+ }
229
269
  logEvent("node", "request", {
230
270
  requestId,
231
271
  operation,
@@ -233,7 +273,7 @@ export function registerNodeRoutes(app: Express, ctxRaw: RouteRuntimeContext) {
233
273
  parentNodeId,
234
274
  clientNodeId,
235
275
  quality,
236
- model: imageModel,
276
+ model: effectiveImageModel,
237
277
  size: effectiveSize,
238
278
  moderation,
239
279
  refs: refsForRequest.length,
@@ -260,6 +300,7 @@ export function registerNodeRoutes(app: Express, ctxRaw: RouteRuntimeContext) {
260
300
  }
261
301
 
262
302
  let b64: string | undefined, usage: unknown, webSearchCalls = 0, revisedPrompt: string | null = null;
303
+ let resultFormat: "png" | "jpeg" | "webp" = activeProvider === "grok" ? "jpeg" : format as "png" | "jpeg" | "webp";
263
304
  const MAX_RETRIES = 1;
264
305
  let lastErr: UpstreamErr | null = null;
265
306
  for (let attempt = 0; attempt <= MAX_RETRIES; attempt++) {
@@ -271,7 +312,7 @@ export function registerNodeRoutes(app: Express, ctxRaw: RouteRuntimeContext) {
271
312
  sessionId,
272
313
  parentNodeId,
273
314
  clientNodeId,
274
- model: imageModel,
315
+ model: effectiveImageModel,
275
316
  moderation,
276
317
  quality,
277
318
  size: effectiveSize,
@@ -282,49 +323,60 @@ export function registerNodeRoutes(app: Express, ctxRaw: RouteRuntimeContext) {
282
323
  searchMode,
283
324
  webSearchEnabled,
284
325
  });
285
- const r = parentB64
286
- ? await editViaResponses(activeProvider, prompt, parentB64, quality, effectiveSize, moderation, normalizedPromptMode, ctx, requestId, {
287
- model: imageModel,
288
- references: refsForRequest,
289
- searchMode,
290
- reasoningEffort,
291
- webSearchEnabled,
326
+ const r = activeProvider === "grok"
327
+ ? await generateViaGrok(prompt, ctx, {
328
+ model: effectiveImageModel,
329
+ size: effectiveSize,
330
+ requestId,
292
331
  signal: cancelController.signal,
332
+ references: toGrokReferences(parentB64, refsForRequest),
293
333
  })
294
- : await generateViaResponses(
295
- activeProvider,
296
- prompt,
297
- quality,
298
- effectiveSize,
299
- moderation,
300
- refsForRequest,
301
- requestId,
302
- normalizedPromptMode,
303
- ctx,
304
- {
305
- model: imageModel,
334
+ : parentB64
335
+ ? await editViaResponses(activeProvider, prompt, parentB64, quality, effectiveSize, moderation, normalizedPromptMode, ctx, requestId, {
336
+ model: effectiveImageModel,
337
+ references: refsForRequest,
338
+ searchMode,
306
339
  reasoningEffort,
307
340
  webSearchEnabled,
308
341
  signal: cancelController.signal,
309
- partialImages: streamResponse ? 2 : 0,
310
- onPartialImage: streamResponse
311
- ? (partial) =>
312
- isJobCanceled(requestId)
313
- ? undefined
314
- : writeSse(res, "partial", {
315
- requestId,
316
- image: dataUrlFromB64(format, partial.b64),
317
- index: partial.index,
318
- })
319
- : null,
320
- },
321
- );
342
+ })
343
+ : await generateViaResponses(
344
+ activeProvider,
345
+ prompt,
346
+ quality,
347
+ effectiveSize,
348
+ moderation,
349
+ refsForRequest,
350
+ requestId,
351
+ normalizedPromptMode,
352
+ ctx,
353
+ {
354
+ model: effectiveImageModel,
355
+ reasoningEffort,
356
+ webSearchEnabled,
357
+ signal: cancelController.signal,
358
+ partialImages: streamResponse ? 2 : 0,
359
+ onPartialImage: streamResponse
360
+ ? (partial) =>
361
+ isJobCanceled(requestId)
362
+ ? undefined
363
+ : writeSse(res, "partial", {
364
+ requestId,
365
+ image: dataUrlFromB64(format, partial.b64),
366
+ index: partial.index,
367
+ })
368
+ : null,
369
+ },
370
+ );
322
371
  throwIfJobCanceled(requestId);
323
372
  if (r.b64) {
324
373
  b64 = r.b64;
325
374
  usage = r.usage;
326
375
  webSearchCalls = r.webSearchCalls || 0;
327
376
  revisedPrompt = r.revisedPrompt || null;
377
+ if (activeProvider === "grok") {
378
+ resultFormat = imageFormatFromMime(("mime" in r ? r.mime : undefined) || detectImageMimeFromB64(r.b64) || "image/jpeg");
379
+ }
328
380
  break;
329
381
  }
330
382
  lastErr = { message: "Empty response (safety refusal)" };
@@ -400,8 +452,9 @@ export function registerNodeRoutes(app: Express, ctxRaw: RouteRuntimeContext) {
400
452
  userPrompt: prompt,
401
453
  revisedPrompt,
402
454
  promptMode: normalizedPromptMode,
403
- options: { quality, size: effectiveSize, format, moderation },
404
- model: imageModel,
455
+ options: { quality, size: effectiveSize, format: resultFormat, moderation },
456
+ model: effectiveImageModel,
457
+ reasoningEffort,
405
458
  createdAt: Date.now(),
406
459
  createdAtIso: new Date().toISOString(),
407
460
  elapsed,
@@ -416,7 +469,7 @@ export function registerNodeRoutes(app: Express, ctxRaw: RouteRuntimeContext) {
416
469
  refsCount: refsForRequest.length,
417
470
  quality,
418
471
  size: effectiveSize,
419
- format,
472
+ format: resultFormat,
420
473
  moderation,
421
474
  };
422
475
  await mkdir(ctx.config.storage.generatedDir, { recursive: true });
@@ -425,7 +478,7 @@ export function registerNodeRoutes(app: Express, ctxRaw: RouteRuntimeContext) {
425
478
  nodeId,
426
479
  b64,
427
480
  meta,
428
- ext: format,
481
+ ext: resultFormat,
429
482
  generatedDir: ctx.config.storage.generatedDir,
430
483
  });
431
484
  finishMeta = { nodeId, filename, imageChars: b64.length };
@@ -442,7 +495,7 @@ export function registerNodeRoutes(app: Express, ctxRaw: RouteRuntimeContext) {
442
495
  nodeId,
443
496
  parentNodeId,
444
497
  requestId,
445
- image: dataUrlFromB64(format, b64),
498
+ image: dataUrlFromB64(resultFormat, b64),
446
499
  filename,
447
500
  url: `/generated/${filename}`,
448
501
  elapsed,
@@ -450,8 +503,10 @@ export function registerNodeRoutes(app: Express, ctxRaw: RouteRuntimeContext) {
450
503
  webSearchCalls,
451
504
  webSearchEnabled,
452
505
  provider: activeProvider,
453
- model: imageModel,
506
+ model: effectiveImageModel,
507
+ reasoningEffort,
454
508
  size: effectiveSize,
509
+ format: resultFormat,
455
510
  moderation,
456
511
  refsCount: refsForRequest.length,
457
512
  contextMode,