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.
- package/CHANGELOG.md +11 -1
- package/README.md +7 -6
- package/bin/commands/grok.js +150 -64
- package/bin/commands/service.js +5 -4
- package/bin/ima2.js +3 -3
- package/bin/lib/doctor-providers.js +6 -1
- package/bin/lib/doctor-runtime.js +1 -1
- package/config.js +0 -9
- package/docs/API.md +7 -7
- package/docs/API.zh-CN.md +7 -7
- package/docs/API.zh-TW.md +7 -7
- package/docs/CLI.md +9 -8
- package/docs/CLI.zh-CN.md +8 -8
- package/docs/CLI.zh-TW.md +8 -8
- package/docs/README.ko.md +5 -6
- package/docs/README.zh-CN.md +6 -5
- package/docs/README.zh-TW.md +6 -5
- package/docs/migration/runtime-test-inventory.md +4 -6
- package/lib/agentPlannerModel.js +17 -16
- package/lib/capabilities.js +3 -2
- package/lib/errors/providerMap.js +13 -0
- package/lib/grokImageCore.js +9 -16
- package/lib/grokImagePlanner.js +15 -3
- package/lib/grokRuntime.js +47 -16
- package/lib/grokVideoAdapter.js +23 -7
- package/lib/grokVideoPoll.js +3 -3
- package/lib/grokVideoShared.js +6 -13
- package/lib/promptBuilder/router.js +22 -6
- package/lib/providers/adapters/grokExecution.js +15 -14
- package/lib/providers/adapters/grokMultimodeOperations.js +9 -7
- package/lib/providers/adapters/grokOperations.js +19 -12
- package/lib/providers/execution/admission.js +20 -4
- package/lib/providers/registry.js +1 -1
- package/lib/runtimeContext.js +0 -12
- package/lib/videoExtendI2vOperation.js +5 -1
- package/lib/xaiAuth.js +369 -0
- package/lib/xaiDeviceLogin.js +157 -0
- package/package.json +2 -4
- package/routes/auth.js +18 -26
- package/routes/grok.js +25 -19
- package/routes/health.js +4 -5
- package/routes/models.js +12 -26
- package/routes/quota.js +2 -1
- package/routes/video.js +7 -2
- package/routes/videoExtended.js +37 -24
- package/server.js +7 -58
- package/skills/ima2/SKILL.md +2 -2
- package/ui/dist/.vite/manifest.json +56 -56
- package/ui/dist/assets/{AgentWorkspace-CLJDCRMQ.js → AgentWorkspace-DlLaTsPK.js} +1 -1
- package/ui/dist/assets/{App-DkvU6Sex.js → App-BfpvLzSs.js} +4 -4
- package/ui/dist/assets/{AssetGenWorkspace-BepUrz23.js → AssetGenWorkspace-C8eIs-bS.js} +2 -2
- package/ui/dist/assets/{AssetsWorkspace-IipC1FdD.js → AssetsWorkspace-BcbAM8uC.js} +1 -1
- package/ui/dist/assets/{CardNewsWorkspace-ZXDwYz4l.js → CardNewsWorkspace-CM5hwbRV.js} +1 -1
- package/ui/dist/assets/{GenerationRequestLogPanel-BL2C0DcW.js → GenerationRequestLogPanel-CTs8OymS.js} +1 -1
- package/ui/dist/assets/{HomeWorkspace-DFfrwS9a.js → HomeWorkspace-KGUtIZyG.js} +1 -1
- package/ui/dist/assets/{KeyingPanel-BQkEMTe9.js → KeyingPanel-D8ZHmWcC.js} +1 -1
- package/ui/dist/assets/{NodeCanvas-5u8IO1MA.js → NodeCanvas-D2N3m-1s.js} +1 -1
- package/ui/dist/assets/{PromptBuilderPanel-DNt7LHMi.js → PromptBuilderPanel-BolZnOa7.js} +1 -1
- package/ui/dist/assets/{PromptImportDialog-Bl-SB4mK.js → PromptImportDialog-DBpe7Vkj.js} +2 -2
- package/ui/dist/assets/{PromptImportDiscoverySection-DdZAdRMW.js → PromptImportDiscoverySection-Dk6v6lUZ.js} +1 -1
- package/ui/dist/assets/{PromptImportFolderSection-DLHQKl9T.js → PromptImportFolderSection-BE7Nfq9Y.js} +1 -1
- package/ui/dist/assets/{PromptLibraryPanel-PLWyvEz1.js → PromptLibraryPanel-Qdujpb4L.js} +2 -2
- package/ui/dist/assets/{SettingsWorkspace-Etfeu2IF.js → SettingsWorkspace-Dm4wezu_.js} +1 -1
- package/ui/dist/assets/{SpriteRecipeWorkspace-D7H5seOM.js → SpriteRecipeWorkspace-D9do9V7F.js} +1 -1
- package/ui/dist/assets/index-CfGRmfFv.js +22 -0
- package/ui/dist/assets/{index-BAkbTbUC.js → index-CfrOcJIe.js} +3 -3
- package/ui/dist/assets/{pptxgen.es-Apxh5DQ9.js → pptxgen.es-BLI_YKez.js} +1 -1
- package/ui/dist/assets/{promptBuilderStore-prvdLIUP.js → promptBuilderStore-BMiudG9n.js} +1 -1
- package/ui/dist/assets/useAgentDialogFocus-CCj5EYE9.js +1 -0
- package/ui/dist/index.html +1 -1
- package/lib/grokProxyLauncher.js +0 -279
- package/node_modules/array-flatten/LICENSE +0 -21
- package/node_modules/array-flatten/README.md +0 -43
- package/node_modules/array-flatten/array-flatten.js +0 -64
- package/node_modules/array-flatten/package.json +0 -39
- package/node_modules/bundle-name/index.js +0 -5
- package/node_modules/bundle-name/license +0 -9
- package/node_modules/bundle-name/package.json +0 -45
- package/node_modules/bundle-name/readme.md +0 -23
- package/node_modules/bytes/History.md +0 -97
- package/node_modules/bytes/LICENSE +0 -23
- package/node_modules/bytes/Readme.md +0 -152
- package/node_modules/bytes/index.js +0 -170
- package/node_modules/bytes/package.json +0 -42
- package/node_modules/call-bind-apply-helpers/.eslintrc +0 -17
- package/node_modules/call-bind-apply-helpers/.github/FUNDING.yml +0 -12
- package/node_modules/call-bind-apply-helpers/.nycrc +0 -9
- package/node_modules/call-bind-apply-helpers/CHANGELOG.md +0 -30
- package/node_modules/call-bind-apply-helpers/LICENSE +0 -21
- package/node_modules/call-bind-apply-helpers/README.md +0 -62
- package/node_modules/call-bind-apply-helpers/actualApply.d.ts +0 -1
- package/node_modules/call-bind-apply-helpers/actualApply.js +0 -10
- package/node_modules/call-bind-apply-helpers/applyBind.d.ts +0 -19
- package/node_modules/call-bind-apply-helpers/applyBind.js +0 -10
- package/node_modules/call-bind-apply-helpers/functionApply.d.ts +0 -1
- package/node_modules/call-bind-apply-helpers/functionApply.js +0 -4
- package/node_modules/call-bind-apply-helpers/functionCall.d.ts +0 -1
- package/node_modules/call-bind-apply-helpers/functionCall.js +0 -4
- package/node_modules/call-bind-apply-helpers/index.d.ts +0 -64
- package/node_modules/call-bind-apply-helpers/index.js +0 -15
- package/node_modules/call-bind-apply-helpers/package.json +0 -85
- package/node_modules/call-bind-apply-helpers/reflectApply.d.ts +0 -3
- package/node_modules/call-bind-apply-helpers/reflectApply.js +0 -4
- package/node_modules/call-bind-apply-helpers/test/index.js +0 -63
- package/node_modules/call-bind-apply-helpers/tsconfig.json +0 -9
- package/node_modules/call-bound/.eslintrc +0 -13
- package/node_modules/call-bound/.github/FUNDING.yml +0 -12
- package/node_modules/call-bound/.nycrc +0 -9
- package/node_modules/call-bound/CHANGELOG.md +0 -42
- package/node_modules/call-bound/LICENSE +0 -21
- package/node_modules/call-bound/README.md +0 -53
- package/node_modules/call-bound/index.d.ts +0 -94
- package/node_modules/call-bound/index.js +0 -19
- package/node_modules/call-bound/package.json +0 -99
- package/node_modules/call-bound/test/index.js +0 -61
- package/node_modules/call-bound/tsconfig.json +0 -10
- package/node_modules/commander/LICENSE +0 -22
- package/node_modules/commander/Readme.md +0 -1149
- package/node_modules/commander/esm.mjs +0 -16
- package/node_modules/commander/index.js +0 -24
- package/node_modules/commander/lib/argument.js +0 -149
- package/node_modules/commander/lib/command.js +0 -2662
- package/node_modules/commander/lib/error.js +0 -39
- package/node_modules/commander/lib/help.js +0 -709
- package/node_modules/commander/lib/option.js +0 -367
- package/node_modules/commander/lib/suggestSimilar.js +0 -101
- package/node_modules/commander/package-support.json +0 -16
- package/node_modules/commander/package.json +0 -82
- package/node_modules/commander/typings/esm.d.mts +0 -3
- package/node_modules/commander/typings/index.d.ts +0 -1045
- package/node_modules/content-type/HISTORY.md +0 -29
- package/node_modules/content-type/LICENSE +0 -22
- package/node_modules/content-type/README.md +0 -94
- package/node_modules/content-type/index.js +0 -225
- package/node_modules/content-type/package.json +0 -42
- package/node_modules/cookie/LICENSE +0 -24
- package/node_modules/cookie/README.md +0 -317
- package/node_modules/cookie/SECURITY.md +0 -25
- package/node_modules/cookie/index.js +0 -335
- package/node_modules/cookie/package.json +0 -44
- package/node_modules/default-browser/index.d.ts +0 -29
- package/node_modules/default-browser/index.js +0 -34
- package/node_modules/default-browser/license +0 -9
- package/node_modules/default-browser/package.json +0 -54
- package/node_modules/default-browser/readme.md +0 -24
- package/node_modules/default-browser/windows.js +0 -57
- package/node_modules/default-browser-id/index.js +0 -25
- package/node_modules/default-browser-id/license +0 -9
- package/node_modules/default-browser-id/package.json +0 -41
- package/node_modules/default-browser-id/readme.md +0 -19
- package/node_modules/define-lazy-prop/index.d.ts +0 -31
- package/node_modules/define-lazy-prop/index.js +0 -18
- package/node_modules/define-lazy-prop/license +0 -9
- package/node_modules/define-lazy-prop/package.json +0 -51
- package/node_modules/define-lazy-prop/readme.md +0 -55
- package/node_modules/depd/History.md +0 -103
- package/node_modules/depd/LICENSE +0 -22
- package/node_modules/depd/Readme.md +0 -280
- package/node_modules/depd/index.js +0 -538
- package/node_modules/depd/lib/browser/index.js +0 -77
- package/node_modules/depd/package.json +0 -45
- package/node_modules/destroy/LICENSE +0 -23
- package/node_modules/destroy/README.md +0 -63
- package/node_modules/destroy/index.js +0 -209
- package/node_modules/destroy/package.json +0 -48
- package/node_modules/dunder-proto/.eslintrc +0 -5
- package/node_modules/dunder-proto/.github/FUNDING.yml +0 -12
- package/node_modules/dunder-proto/.nycrc +0 -13
- package/node_modules/dunder-proto/CHANGELOG.md +0 -24
- package/node_modules/dunder-proto/LICENSE +0 -21
- package/node_modules/dunder-proto/README.md +0 -54
- package/node_modules/dunder-proto/get.d.ts +0 -5
- package/node_modules/dunder-proto/get.js +0 -30
- package/node_modules/dunder-proto/package.json +0 -76
- package/node_modules/dunder-proto/set.d.ts +0 -5
- package/node_modules/dunder-proto/set.js +0 -35
- package/node_modules/dunder-proto/test/get.js +0 -34
- package/node_modules/dunder-proto/test/index.js +0 -4
- package/node_modules/dunder-proto/test/set.js +0 -50
- package/node_modules/dunder-proto/tsconfig.json +0 -9
- package/node_modules/ee-first/LICENSE +0 -22
- package/node_modules/ee-first/README.md +0 -80
- package/node_modules/ee-first/index.js +0 -95
- package/node_modules/ee-first/package.json +0 -29
- package/node_modules/encodeurl/LICENSE +0 -22
- package/node_modules/encodeurl/README.md +0 -109
- package/node_modules/encodeurl/index.js +0 -60
- package/node_modules/encodeurl/package.json +0 -40
- package/node_modules/es-define-property/.eslintrc +0 -13
- package/node_modules/es-define-property/.github/FUNDING.yml +0 -12
- package/node_modules/es-define-property/.nycrc +0 -9
- package/node_modules/es-define-property/CHANGELOG.md +0 -29
- package/node_modules/es-define-property/LICENSE +0 -21
- package/node_modules/es-define-property/README.md +0 -49
- package/node_modules/es-define-property/index.d.ts +0 -3
- package/node_modules/es-define-property/index.js +0 -14
- package/node_modules/es-define-property/package.json +0 -81
- package/node_modules/es-define-property/test/index.js +0 -56
- package/node_modules/es-define-property/tsconfig.json +0 -10
- package/node_modules/es-errors/.eslintrc +0 -5
- package/node_modules/es-errors/.github/FUNDING.yml +0 -12
- package/node_modules/es-errors/CHANGELOG.md +0 -40
- package/node_modules/es-errors/LICENSE +0 -21
- package/node_modules/es-errors/README.md +0 -55
- package/node_modules/es-errors/eval.d.ts +0 -3
- package/node_modules/es-errors/eval.js +0 -4
- package/node_modules/es-errors/index.d.ts +0 -3
- package/node_modules/es-errors/index.js +0 -4
- package/node_modules/es-errors/package.json +0 -80
- package/node_modules/es-errors/range.d.ts +0 -3
- package/node_modules/es-errors/range.js +0 -4
- package/node_modules/es-errors/ref.d.ts +0 -3
- package/node_modules/es-errors/ref.js +0 -4
- package/node_modules/es-errors/syntax.d.ts +0 -3
- package/node_modules/es-errors/syntax.js +0 -4
- package/node_modules/es-errors/test/index.js +0 -19
- package/node_modules/es-errors/tsconfig.json +0 -49
- package/node_modules/es-errors/type.d.ts +0 -3
- package/node_modules/es-errors/type.js +0 -4
- package/node_modules/es-errors/uri.d.ts +0 -3
- package/node_modules/es-errors/uri.js +0 -4
- package/node_modules/es-object-atoms/.eslintrc +0 -16
- package/node_modules/es-object-atoms/.github/FUNDING.yml +0 -12
- package/node_modules/es-object-atoms/CHANGELOG.md +0 -37
- package/node_modules/es-object-atoms/LICENSE +0 -21
- package/node_modules/es-object-atoms/README.md +0 -63
- package/node_modules/es-object-atoms/RequireObjectCoercible.d.ts +0 -3
- package/node_modules/es-object-atoms/RequireObjectCoercible.js +0 -11
- package/node_modules/es-object-atoms/ToObject.d.ts +0 -7
- package/node_modules/es-object-atoms/ToObject.js +0 -10
- package/node_modules/es-object-atoms/index.d.ts +0 -3
- package/node_modules/es-object-atoms/index.js +0 -4
- package/node_modules/es-object-atoms/isObject.d.ts +0 -3
- package/node_modules/es-object-atoms/isObject.js +0 -6
- package/node_modules/es-object-atoms/package.json +0 -80
- package/node_modules/es-object-atoms/test/index.js +0 -38
- package/node_modules/es-object-atoms/tsconfig.json +0 -6
- package/node_modules/escape-html/LICENSE +0 -24
- package/node_modules/escape-html/Readme.md +0 -43
- package/node_modules/escape-html/index.js +0 -78
- package/node_modules/escape-html/package.json +0 -24
- package/node_modules/etag/HISTORY.md +0 -83
- package/node_modules/etag/LICENSE +0 -22
- package/node_modules/etag/README.md +0 -159
- package/node_modules/etag/index.js +0 -131
- package/node_modules/etag/package.json +0 -47
- package/node_modules/forwarded/HISTORY.md +0 -21
- package/node_modules/forwarded/LICENSE +0 -22
- package/node_modules/forwarded/README.md +0 -57
- package/node_modules/forwarded/index.js +0 -90
- package/node_modules/forwarded/package.json +0 -45
- package/node_modules/function-bind/.eslintrc +0 -21
- package/node_modules/function-bind/.github/FUNDING.yml +0 -12
- package/node_modules/function-bind/.github/SECURITY.md +0 -3
- package/node_modules/function-bind/.nycrc +0 -13
- package/node_modules/function-bind/CHANGELOG.md +0 -136
- package/node_modules/function-bind/LICENSE +0 -20
- package/node_modules/function-bind/README.md +0 -46
- package/node_modules/function-bind/implementation.js +0 -84
- package/node_modules/function-bind/index.js +0 -5
- package/node_modules/function-bind/package.json +0 -87
- package/node_modules/function-bind/test/.eslintrc +0 -9
- package/node_modules/function-bind/test/index.js +0 -252
- package/node_modules/get-intrinsic/.eslintrc +0 -42
- package/node_modules/get-intrinsic/.github/FUNDING.yml +0 -12
- package/node_modules/get-intrinsic/.nycrc +0 -9
- package/node_modules/get-intrinsic/CHANGELOG.md +0 -186
- package/node_modules/get-intrinsic/LICENSE +0 -21
- package/node_modules/get-intrinsic/README.md +0 -71
- package/node_modules/get-intrinsic/index.js +0 -378
- package/node_modules/get-intrinsic/package.json +0 -97
- package/node_modules/get-intrinsic/test/GetIntrinsic.js +0 -274
- package/node_modules/get-proto/.eslintrc +0 -10
- package/node_modules/get-proto/.github/FUNDING.yml +0 -12
- package/node_modules/get-proto/.nycrc +0 -9
- package/node_modules/get-proto/CHANGELOG.md +0 -21
- package/node_modules/get-proto/LICENSE +0 -21
- package/node_modules/get-proto/Object.getPrototypeOf.d.ts +0 -5
- package/node_modules/get-proto/Object.getPrototypeOf.js +0 -6
- package/node_modules/get-proto/README.md +0 -50
- package/node_modules/get-proto/Reflect.getPrototypeOf.d.ts +0 -3
- package/node_modules/get-proto/Reflect.getPrototypeOf.js +0 -4
- package/node_modules/get-proto/index.d.ts +0 -5
- package/node_modules/get-proto/index.js +0 -27
- package/node_modules/get-proto/package.json +0 -81
- package/node_modules/get-proto/test/index.js +0 -68
- package/node_modules/get-proto/tsconfig.json +0 -9
- package/node_modules/gopd/.eslintrc +0 -16
- package/node_modules/gopd/.github/FUNDING.yml +0 -12
- package/node_modules/gopd/CHANGELOG.md +0 -45
- package/node_modules/gopd/LICENSE +0 -21
- package/node_modules/gopd/README.md +0 -40
- package/node_modules/gopd/gOPD.d.ts +0 -1
- package/node_modules/gopd/gOPD.js +0 -4
- package/node_modules/gopd/index.d.ts +0 -5
- package/node_modules/gopd/index.js +0 -15
- package/node_modules/gopd/package.json +0 -77
- package/node_modules/gopd/test/index.js +0 -36
- package/node_modules/gopd/tsconfig.json +0 -9
- package/node_modules/has-symbols/.eslintrc +0 -11
- package/node_modules/has-symbols/.github/FUNDING.yml +0 -12
- package/node_modules/has-symbols/.nycrc +0 -9
- package/node_modules/has-symbols/CHANGELOG.md +0 -91
- package/node_modules/has-symbols/LICENSE +0 -21
- package/node_modules/has-symbols/README.md +0 -46
- package/node_modules/has-symbols/index.d.ts +0 -3
- package/node_modules/has-symbols/index.js +0 -14
- package/node_modules/has-symbols/package.json +0 -111
- package/node_modules/has-symbols/shams.d.ts +0 -3
- package/node_modules/has-symbols/shams.js +0 -45
- package/node_modules/has-symbols/test/index.js +0 -22
- package/node_modules/has-symbols/test/shams/core-js.js +0 -29
- package/node_modules/has-symbols/test/shams/get-own-property-symbols.js +0 -29
- package/node_modules/has-symbols/test/tests.js +0 -58
- package/node_modules/has-symbols/tsconfig.json +0 -10
- package/node_modules/hasown/.github/FUNDING.yml +0 -12
- package/node_modules/hasown/.nycrc +0 -13
- package/node_modules/hasown/CHANGELOG.md +0 -51
- package/node_modules/hasown/LICENSE +0 -21
- package/node_modules/hasown/README.md +0 -40
- package/node_modules/hasown/eslint.config.mjs +0 -6
- package/node_modules/hasown/index.d.ts +0 -4
- package/node_modules/hasown/index.js +0 -8
- package/node_modules/hasown/package.json +0 -92
- package/node_modules/hasown/tsconfig.json +0 -6
- package/node_modules/http-errors/HISTORY.md +0 -186
- package/node_modules/http-errors/LICENSE +0 -23
- package/node_modules/http-errors/README.md +0 -169
- package/node_modules/http-errors/index.js +0 -290
- package/node_modules/http-errors/package.json +0 -54
- package/node_modules/inherits/LICENSE +0 -16
- package/node_modules/inherits/README.md +0 -42
- package/node_modules/inherits/inherits.js +0 -9
- package/node_modules/inherits/inherits_browser.js +0 -27
- package/node_modules/inherits/package.json +0 -29
- package/node_modules/ipaddr.js/LICENSE +0 -19
- package/node_modules/ipaddr.js/README.md +0 -233
- package/node_modules/ipaddr.js/ipaddr.min.js +0 -1
- package/node_modules/ipaddr.js/lib/ipaddr.js +0 -673
- package/node_modules/ipaddr.js/lib/ipaddr.js.d.ts +0 -68
- package/node_modules/ipaddr.js/package.json +0 -35
- package/node_modules/is-docker/cli.js +0 -5
- package/node_modules/is-docker/index.d.ts +0 -13
- package/node_modules/is-docker/index.js +0 -29
- package/node_modules/is-docker/license +0 -9
- package/node_modules/is-docker/package.json +0 -44
- package/node_modules/is-docker/readme.md +0 -27
- package/node_modules/is-inside-container/cli.js +0 -5
- package/node_modules/is-inside-container/index.d.ts +0 -13
- package/node_modules/is-inside-container/index.js +0 -23
- package/node_modules/is-inside-container/license +0 -9
- package/node_modules/is-inside-container/package.json +0 -51
- package/node_modules/is-inside-container/readme.md +0 -36
- package/node_modules/is-wsl/index.d.ts +0 -15
- package/node_modules/is-wsl/index.js +0 -36
- package/node_modules/is-wsl/license +0 -9
- package/node_modules/is-wsl/package.json +0 -58
- package/node_modules/is-wsl/readme.md +0 -21
- package/node_modules/math-intrinsics/.eslintrc +0 -16
- package/node_modules/math-intrinsics/.github/FUNDING.yml +0 -12
- package/node_modules/math-intrinsics/CHANGELOG.md +0 -24
- package/node_modules/math-intrinsics/LICENSE +0 -21
- package/node_modules/math-intrinsics/README.md +0 -50
- package/node_modules/math-intrinsics/abs.d.ts +0 -1
- package/node_modules/math-intrinsics/abs.js +0 -4
- package/node_modules/math-intrinsics/constants/maxArrayLength.d.ts +0 -3
- package/node_modules/math-intrinsics/constants/maxArrayLength.js +0 -4
- package/node_modules/math-intrinsics/constants/maxSafeInteger.d.ts +0 -3
- package/node_modules/math-intrinsics/constants/maxSafeInteger.js +0 -5
- package/node_modules/math-intrinsics/constants/maxValue.d.ts +0 -3
- package/node_modules/math-intrinsics/constants/maxValue.js +0 -5
- package/node_modules/math-intrinsics/floor.d.ts +0 -1
- package/node_modules/math-intrinsics/floor.js +0 -4
- package/node_modules/math-intrinsics/isFinite.d.ts +0 -3
- package/node_modules/math-intrinsics/isFinite.js +0 -12
- package/node_modules/math-intrinsics/isInteger.d.ts +0 -3
- package/node_modules/math-intrinsics/isInteger.js +0 -16
- package/node_modules/math-intrinsics/isNaN.d.ts +0 -1
- package/node_modules/math-intrinsics/isNaN.js +0 -6
- package/node_modules/math-intrinsics/isNegativeZero.d.ts +0 -3
- package/node_modules/math-intrinsics/isNegativeZero.js +0 -6
- package/node_modules/math-intrinsics/max.d.ts +0 -1
- package/node_modules/math-intrinsics/max.js +0 -4
- package/node_modules/math-intrinsics/min.d.ts +0 -1
- package/node_modules/math-intrinsics/min.js +0 -4
- package/node_modules/math-intrinsics/mod.d.ts +0 -3
- package/node_modules/math-intrinsics/mod.js +0 -9
- package/node_modules/math-intrinsics/package.json +0 -86
- package/node_modules/math-intrinsics/pow.d.ts +0 -1
- package/node_modules/math-intrinsics/pow.js +0 -4
- package/node_modules/math-intrinsics/round.d.ts +0 -1
- package/node_modules/math-intrinsics/round.js +0 -4
- package/node_modules/math-intrinsics/sign.d.ts +0 -3
- package/node_modules/math-intrinsics/sign.js +0 -11
- package/node_modules/math-intrinsics/test/index.js +0 -192
- package/node_modules/math-intrinsics/tsconfig.json +0 -3
- package/node_modules/methods/HISTORY.md +0 -29
- package/node_modules/methods/LICENSE +0 -24
- package/node_modules/methods/README.md +0 -51
- package/node_modules/methods/index.js +0 -69
- package/node_modules/methods/package.json +0 -36
- package/node_modules/mime/.npmignore +0 -0
- package/node_modules/mime/CHANGELOG.md +0 -164
- package/node_modules/mime/LICENSE +0 -21
- package/node_modules/mime/README.md +0 -90
- package/node_modules/mime/cli.js +0 -8
- package/node_modules/mime/mime.js +0 -108
- package/node_modules/mime/package.json +0 -44
- package/node_modules/mime/src/build.js +0 -53
- package/node_modules/mime/src/test.js +0 -60
- package/node_modules/mime/types.json +0 -1
- package/node_modules/ms/index.js +0 -162
- package/node_modules/ms/license.md +0 -21
- package/node_modules/ms/package.json +0 -38
- package/node_modules/ms/readme.md +0 -59
- package/node_modules/object-inspect/.eslintrc +0 -53
- package/node_modules/object-inspect/.github/FUNDING.yml +0 -12
- package/node_modules/object-inspect/.nycrc +0 -13
- package/node_modules/object-inspect/CHANGELOG.md +0 -424
- package/node_modules/object-inspect/LICENSE +0 -21
- package/node_modules/object-inspect/example/all.js +0 -23
- package/node_modules/object-inspect/example/circular.js +0 -6
- package/node_modules/object-inspect/example/fn.js +0 -5
- package/node_modules/object-inspect/example/inspect.js +0 -10
- package/node_modules/object-inspect/index.js +0 -544
- package/node_modules/object-inspect/package-support.json +0 -20
- package/node_modules/object-inspect/package.json +0 -105
- package/node_modules/object-inspect/readme.markdown +0 -84
- package/node_modules/object-inspect/test/bigint.js +0 -58
- package/node_modules/object-inspect/test/browser/dom.js +0 -15
- package/node_modules/object-inspect/test/circular.js +0 -16
- package/node_modules/object-inspect/test/deep.js +0 -12
- package/node_modules/object-inspect/test/element.js +0 -53
- package/node_modules/object-inspect/test/err.js +0 -48
- package/node_modules/object-inspect/test/fakes.js +0 -29
- package/node_modules/object-inspect/test/fn.js +0 -76
- package/node_modules/object-inspect/test/global.js +0 -17
- package/node_modules/object-inspect/test/has.js +0 -15
- package/node_modules/object-inspect/test/holes.js +0 -15
- package/node_modules/object-inspect/test/indent-option.js +0 -271
- package/node_modules/object-inspect/test/inspect.js +0 -139
- package/node_modules/object-inspect/test/lowbyte.js +0 -12
- package/node_modules/object-inspect/test/number.js +0 -58
- package/node_modules/object-inspect/test/quoteStyle.js +0 -26
- package/node_modules/object-inspect/test/toStringTag.js +0 -40
- package/node_modules/object-inspect/test/undef.js +0 -12
- package/node_modules/object-inspect/test/values.js +0 -261
- package/node_modules/object-inspect/test-core-js.js +0 -26
- package/node_modules/object-inspect/util.inspect.js +0 -1
- package/node_modules/on-finished/HISTORY.md +0 -98
- package/node_modules/on-finished/LICENSE +0 -23
- package/node_modules/on-finished/README.md +0 -162
- package/node_modules/on-finished/index.js +0 -234
- package/node_modules/on-finished/package.json +0 -39
- package/node_modules/open/index.d.ts +0 -158
- package/node_modules/open/index.js +0 -366
- package/node_modules/open/license +0 -9
- package/node_modules/open/node_modules/wsl-utils/index.d.ts +0 -21
- package/node_modules/open/node_modules/wsl-utils/index.js +0 -57
- package/node_modules/open/node_modules/wsl-utils/license +0 -9
- package/node_modules/open/node_modules/wsl-utils/package.json +0 -46
- package/node_modules/open/node_modules/wsl-utils/readme.md +0 -50
- package/node_modules/open/package.json +0 -68
- package/node_modules/open/readme.md +0 -183
- package/node_modules/open/xdg-open +0 -1267
- package/node_modules/parseurl/HISTORY.md +0 -58
- package/node_modules/parseurl/LICENSE +0 -24
- package/node_modules/parseurl/README.md +0 -133
- package/node_modules/parseurl/index.js +0 -158
- package/node_modules/parseurl/package.json +0 -40
- package/node_modules/progrok/LICENSE +0 -21
- package/node_modules/progrok/README.md +0 -331
- package/node_modules/progrok/THIRD_PARTY_NOTICES.md +0 -13
- package/node_modules/progrok/dist/index.js +0 -1626
- package/node_modules/progrok/dist/index.js.map +0 -1
- package/node_modules/progrok/dist/public/app.js +0 -529
- package/node_modules/progrok/dist/public/index.html +0 -47
- package/node_modules/progrok/dist/public/style.css +0 -392
- package/node_modules/progrok/node_modules/accepts/HISTORY.md +0 -243
- package/node_modules/progrok/node_modules/accepts/LICENSE +0 -23
- package/node_modules/progrok/node_modules/accepts/README.md +0 -140
- package/node_modules/progrok/node_modules/accepts/index.js +0 -238
- package/node_modules/progrok/node_modules/accepts/package.json +0 -47
- package/node_modules/progrok/node_modules/body-parser/HISTORY.md +0 -686
- package/node_modules/progrok/node_modules/body-parser/LICENSE +0 -23
- package/node_modules/progrok/node_modules/body-parser/README.md +0 -476
- package/node_modules/progrok/node_modules/body-parser/index.js +0 -156
- package/node_modules/progrok/node_modules/body-parser/lib/read.js +0 -205
- package/node_modules/progrok/node_modules/body-parser/lib/types/json.js +0 -243
- package/node_modules/progrok/node_modules/body-parser/lib/types/raw.js +0 -101
- package/node_modules/progrok/node_modules/body-parser/lib/types/text.js +0 -121
- package/node_modules/progrok/node_modules/body-parser/lib/types/urlencoded.js +0 -299
- package/node_modules/progrok/node_modules/body-parser/package.json +0 -55
- package/node_modules/progrok/node_modules/content-disposition/HISTORY.md +0 -60
- package/node_modules/progrok/node_modules/content-disposition/LICENSE +0 -22
- package/node_modules/progrok/node_modules/content-disposition/README.md +0 -142
- package/node_modules/progrok/node_modules/content-disposition/index.js +0 -458
- package/node_modules/progrok/node_modules/content-disposition/package.json +0 -44
- package/node_modules/progrok/node_modules/cookie-signature/History.md +0 -42
- package/node_modules/progrok/node_modules/cookie-signature/Readme.md +0 -42
- package/node_modules/progrok/node_modules/cookie-signature/index.js +0 -51
- package/node_modules/progrok/node_modules/cookie-signature/package.json +0 -18
- package/node_modules/progrok/node_modules/debug/.coveralls.yml +0 -1
- package/node_modules/progrok/node_modules/debug/.eslintrc +0 -11
- package/node_modules/progrok/node_modules/debug/.npmignore +0 -9
- package/node_modules/progrok/node_modules/debug/.travis.yml +0 -14
- package/node_modules/progrok/node_modules/debug/CHANGELOG.md +0 -362
- package/node_modules/progrok/node_modules/debug/LICENSE +0 -19
- package/node_modules/progrok/node_modules/debug/Makefile +0 -50
- package/node_modules/progrok/node_modules/debug/README.md +0 -312
- package/node_modules/progrok/node_modules/debug/component.json +0 -19
- package/node_modules/progrok/node_modules/debug/karma.conf.js +0 -70
- package/node_modules/progrok/node_modules/debug/node.js +0 -1
- package/node_modules/progrok/node_modules/debug/node_modules/ms/index.js +0 -152
- package/node_modules/progrok/node_modules/debug/node_modules/ms/license.md +0 -21
- package/node_modules/progrok/node_modules/debug/node_modules/ms/package.json +0 -37
- package/node_modules/progrok/node_modules/debug/node_modules/ms/readme.md +0 -51
- package/node_modules/progrok/node_modules/debug/package.json +0 -49
- package/node_modules/progrok/node_modules/debug/src/browser.js +0 -185
- package/node_modules/progrok/node_modules/debug/src/debug.js +0 -202
- package/node_modules/progrok/node_modules/debug/src/index.js +0 -10
- package/node_modules/progrok/node_modules/debug/src/inspector-log.js +0 -15
- package/node_modules/progrok/node_modules/debug/src/node.js +0 -248
- package/node_modules/progrok/node_modules/express/History.md +0 -3676
- package/node_modules/progrok/node_modules/express/LICENSE +0 -24
- package/node_modules/progrok/node_modules/express/Readme.md +0 -260
- package/node_modules/progrok/node_modules/express/index.js +0 -11
- package/node_modules/progrok/node_modules/express/lib/application.js +0 -661
- package/node_modules/progrok/node_modules/express/lib/express.js +0 -116
- package/node_modules/progrok/node_modules/express/lib/middleware/init.js +0 -43
- package/node_modules/progrok/node_modules/express/lib/middleware/query.js +0 -47
- package/node_modules/progrok/node_modules/express/lib/request.js +0 -525
- package/node_modules/progrok/node_modules/express/lib/response.js +0 -1179
- package/node_modules/progrok/node_modules/express/lib/router/index.js +0 -673
- package/node_modules/progrok/node_modules/express/lib/router/layer.js +0 -181
- package/node_modules/progrok/node_modules/express/lib/router/route.js +0 -230
- package/node_modules/progrok/node_modules/express/lib/utils.js +0 -304
- package/node_modules/progrok/node_modules/express/lib/view.js +0 -182
- package/node_modules/progrok/node_modules/express/package.json +0 -102
- package/node_modules/progrok/node_modules/finalhandler/HISTORY.md +0 -216
- package/node_modules/progrok/node_modules/finalhandler/LICENSE +0 -22
- package/node_modules/progrok/node_modules/finalhandler/README.md +0 -147
- package/node_modules/progrok/node_modules/finalhandler/SECURITY.md +0 -25
- package/node_modules/progrok/node_modules/finalhandler/index.js +0 -341
- package/node_modules/progrok/node_modules/finalhandler/package.json +0 -47
- package/node_modules/progrok/node_modules/fresh/HISTORY.md +0 -70
- package/node_modules/progrok/node_modules/fresh/LICENSE +0 -23
- package/node_modules/progrok/node_modules/fresh/README.md +0 -119
- package/node_modules/progrok/node_modules/fresh/index.js +0 -137
- package/node_modules/progrok/node_modules/fresh/package.json +0 -46
- package/node_modules/progrok/node_modules/iconv-lite/Changelog.md +0 -162
- package/node_modules/progrok/node_modules/iconv-lite/LICENSE +0 -21
- package/node_modules/progrok/node_modules/iconv-lite/README.md +0 -156
- package/node_modules/progrok/node_modules/iconv-lite/encodings/dbcs-codec.js +0 -555
- package/node_modules/progrok/node_modules/iconv-lite/encodings/dbcs-data.js +0 -176
- package/node_modules/progrok/node_modules/iconv-lite/encodings/index.js +0 -22
- package/node_modules/progrok/node_modules/iconv-lite/encodings/internal.js +0 -188
- package/node_modules/progrok/node_modules/iconv-lite/encodings/sbcs-codec.js +0 -72
- package/node_modules/progrok/node_modules/iconv-lite/encodings/sbcs-data-generated.js +0 -451
- package/node_modules/progrok/node_modules/iconv-lite/encodings/sbcs-data.js +0 -174
- package/node_modules/progrok/node_modules/iconv-lite/encodings/tables/big5-added.json +0 -122
- package/node_modules/progrok/node_modules/iconv-lite/encodings/tables/cp936.json +0 -264
- package/node_modules/progrok/node_modules/iconv-lite/encodings/tables/cp949.json +0 -273
- package/node_modules/progrok/node_modules/iconv-lite/encodings/tables/cp950.json +0 -177
- package/node_modules/progrok/node_modules/iconv-lite/encodings/tables/eucjp.json +0 -182
- package/node_modules/progrok/node_modules/iconv-lite/encodings/tables/gb18030-ranges.json +0 -1
- package/node_modules/progrok/node_modules/iconv-lite/encodings/tables/gbk-added.json +0 -55
- package/node_modules/progrok/node_modules/iconv-lite/encodings/tables/shiftjis.json +0 -125
- package/node_modules/progrok/node_modules/iconv-lite/encodings/utf16.js +0 -177
- package/node_modules/progrok/node_modules/iconv-lite/encodings/utf7.js +0 -290
- package/node_modules/progrok/node_modules/iconv-lite/lib/bom-handling.js +0 -52
- package/node_modules/progrok/node_modules/iconv-lite/lib/extend-node.js +0 -217
- package/node_modules/progrok/node_modules/iconv-lite/lib/index.d.ts +0 -24
- package/node_modules/progrok/node_modules/iconv-lite/lib/index.js +0 -153
- package/node_modules/progrok/node_modules/iconv-lite/lib/streams.js +0 -121
- package/node_modules/progrok/node_modules/iconv-lite/package.json +0 -46
- package/node_modules/progrok/node_modules/media-typer/HISTORY.md +0 -22
- package/node_modules/progrok/node_modules/media-typer/LICENSE +0 -22
- package/node_modules/progrok/node_modules/media-typer/README.md +0 -81
- package/node_modules/progrok/node_modules/media-typer/index.js +0 -270
- package/node_modules/progrok/node_modules/media-typer/package.json +0 -26
- package/node_modules/progrok/node_modules/merge-descriptors/HISTORY.md +0 -21
- package/node_modules/progrok/node_modules/merge-descriptors/LICENSE +0 -23
- package/node_modules/progrok/node_modules/merge-descriptors/README.md +0 -49
- package/node_modules/progrok/node_modules/merge-descriptors/index.js +0 -60
- package/node_modules/progrok/node_modules/merge-descriptors/package.json +0 -39
- package/node_modules/progrok/node_modules/mime-db/HISTORY.md +0 -507
- package/node_modules/progrok/node_modules/mime-db/LICENSE +0 -23
- package/node_modules/progrok/node_modules/mime-db/README.md +0 -100
- package/node_modules/progrok/node_modules/mime-db/db.json +0 -8519
- package/node_modules/progrok/node_modules/mime-db/index.js +0 -12
- package/node_modules/progrok/node_modules/mime-db/package.json +0 -60
- package/node_modules/progrok/node_modules/mime-types/HISTORY.md +0 -397
- package/node_modules/progrok/node_modules/mime-types/LICENSE +0 -23
- package/node_modules/progrok/node_modules/mime-types/README.md +0 -113
- package/node_modules/progrok/node_modules/mime-types/index.js +0 -188
- package/node_modules/progrok/node_modules/mime-types/package.json +0 -44
- package/node_modules/progrok/node_modules/negotiator/HISTORY.md +0 -108
- package/node_modules/progrok/node_modules/negotiator/LICENSE +0 -24
- package/node_modules/progrok/node_modules/negotiator/README.md +0 -203
- package/node_modules/progrok/node_modules/negotiator/index.js +0 -82
- package/node_modules/progrok/node_modules/negotiator/lib/charset.js +0 -169
- package/node_modules/progrok/node_modules/negotiator/lib/encoding.js +0 -184
- package/node_modules/progrok/node_modules/negotiator/lib/language.js +0 -179
- package/node_modules/progrok/node_modules/negotiator/lib/mediaType.js +0 -294
- package/node_modules/progrok/node_modules/negotiator/package.json +0 -42
- package/node_modules/progrok/node_modules/path-to-regexp/LICENSE +0 -21
- package/node_modules/progrok/node_modules/path-to-regexp/Readme.md +0 -35
- package/node_modules/progrok/node_modules/path-to-regexp/index.js +0 -158
- package/node_modules/progrok/node_modules/path-to-regexp/package.json +0 -30
- package/node_modules/progrok/node_modules/raw-body/LICENSE +0 -22
- package/node_modules/progrok/node_modules/raw-body/README.md +0 -223
- package/node_modules/progrok/node_modules/raw-body/index.d.ts +0 -87
- package/node_modules/progrok/node_modules/raw-body/index.js +0 -336
- package/node_modules/progrok/node_modules/raw-body/package.json +0 -47
- package/node_modules/progrok/node_modules/send/HISTORY.md +0 -538
- package/node_modules/progrok/node_modules/send/LICENSE +0 -23
- package/node_modules/progrok/node_modules/send/README.md +0 -327
- package/node_modules/progrok/node_modules/send/SECURITY.md +0 -24
- package/node_modules/progrok/node_modules/send/index.js +0 -1142
- package/node_modules/progrok/node_modules/send/package.json +0 -62
- package/node_modules/progrok/node_modules/serve-static/HISTORY.md +0 -493
- package/node_modules/progrok/node_modules/serve-static/LICENSE +0 -25
- package/node_modules/progrok/node_modules/serve-static/README.md +0 -257
- package/node_modules/progrok/node_modules/serve-static/index.js +0 -209
- package/node_modules/progrok/node_modules/serve-static/package.json +0 -42
- package/node_modules/progrok/node_modules/type-is/HISTORY.md +0 -259
- package/node_modules/progrok/node_modules/type-is/LICENSE +0 -23
- package/node_modules/progrok/node_modules/type-is/README.md +0 -170
- package/node_modules/progrok/node_modules/type-is/index.js +0 -266
- package/node_modules/progrok/node_modules/type-is/package.json +0 -45
- package/node_modules/progrok/package.json +0 -52
- package/node_modules/progrok/skills/progrok/SKILL.md +0 -293
- package/node_modules/proxy-addr/HISTORY.md +0 -161
- package/node_modules/proxy-addr/LICENSE +0 -22
- package/node_modules/proxy-addr/README.md +0 -139
- package/node_modules/proxy-addr/index.js +0 -327
- package/node_modules/proxy-addr/package.json +0 -47
- package/node_modules/qs/.editorconfig +0 -46
- package/node_modules/qs/.github/FUNDING.yml +0 -12
- package/node_modules/qs/.github/SECURITY.md +0 -11
- package/node_modules/qs/.github/THREAT_MODEL.md +0 -78
- package/node_modules/qs/.nycrc +0 -13
- package/node_modules/qs/CHANGELOG.md +0 -822
- package/node_modules/qs/LICENSE.md +0 -29
- package/node_modules/qs/README.md +0 -758
- package/node_modules/qs/dist/qs.js +0 -141
- package/node_modules/qs/eslint.config.mjs +0 -57
- package/node_modules/qs/lib/formats.js +0 -23
- package/node_modules/qs/lib/index.js +0 -11
- package/node_modules/qs/lib/parse.js +0 -403
- package/node_modules/qs/lib/stringify.js +0 -363
- package/node_modules/qs/lib/utils.js +0 -342
- package/node_modules/qs/package.json +0 -94
- package/node_modules/qs/test/empty-keys-cases.js +0 -267
- package/node_modules/qs/test/parse.js +0 -1703
- package/node_modules/qs/test/stringify.js +0 -1448
- package/node_modules/qs/test/utils.js +0 -432
- package/node_modules/range-parser/HISTORY.md +0 -56
- package/node_modules/range-parser/LICENSE +0 -23
- package/node_modules/range-parser/README.md +0 -84
- package/node_modules/range-parser/index.js +0 -162
- package/node_modules/range-parser/package.json +0 -44
- package/node_modules/run-applescript/index.d.ts +0 -66
- package/node_modules/run-applescript/index.js +0 -37
- package/node_modules/run-applescript/license +0 -9
- package/node_modules/run-applescript/package.json +0 -42
- package/node_modules/run-applescript/readme.md +0 -78
- package/node_modules/safe-buffer/LICENSE +0 -21
- package/node_modules/safe-buffer/README.md +0 -584
- package/node_modules/safe-buffer/index.d.ts +0 -187
- package/node_modules/safe-buffer/index.js +0 -65
- package/node_modules/safe-buffer/package.json +0 -51
- package/node_modules/safer-buffer/LICENSE +0 -21
- package/node_modules/safer-buffer/Porting-Buffer.md +0 -268
- package/node_modules/safer-buffer/Readme.md +0 -156
- package/node_modules/safer-buffer/dangerous.js +0 -58
- package/node_modules/safer-buffer/package.json +0 -34
- package/node_modules/safer-buffer/safer.js +0 -77
- package/node_modules/safer-buffer/tests.js +0 -406
- package/node_modules/setprototypeof/LICENSE +0 -13
- package/node_modules/setprototypeof/README.md +0 -31
- package/node_modules/setprototypeof/index.d.ts +0 -2
- package/node_modules/setprototypeof/index.js +0 -17
- package/node_modules/setprototypeof/package.json +0 -38
- package/node_modules/setprototypeof/test/index.js +0 -24
- package/node_modules/side-channel/.editorconfig +0 -9
- package/node_modules/side-channel/.eslintrc +0 -12
- package/node_modules/side-channel/.github/FUNDING.yml +0 -12
- package/node_modules/side-channel/.nycrc +0 -13
- package/node_modules/side-channel/CHANGELOG.md +0 -110
- package/node_modules/side-channel/LICENSE +0 -21
- package/node_modules/side-channel/README.md +0 -61
- package/node_modules/side-channel/index.d.ts +0 -14
- package/node_modules/side-channel/index.js +0 -43
- package/node_modules/side-channel/package.json +0 -85
- package/node_modules/side-channel/test/index.js +0 -104
- package/node_modules/side-channel/tsconfig.json +0 -9
- package/node_modules/side-channel-list/.editorconfig +0 -9
- package/node_modules/side-channel-list/.eslintrc +0 -11
- package/node_modules/side-channel-list/.github/FUNDING.yml +0 -12
- package/node_modules/side-channel-list/.nycrc +0 -13
- package/node_modules/side-channel-list/CHANGELOG.md +0 -36
- package/node_modules/side-channel-list/LICENSE +0 -21
- package/node_modules/side-channel-list/README.md +0 -62
- package/node_modules/side-channel-list/index.d.ts +0 -13
- package/node_modules/side-channel-list/index.js +0 -111
- package/node_modules/side-channel-list/list.d.ts +0 -14
- package/node_modules/side-channel-list/package.json +0 -77
- package/node_modules/side-channel-list/test/index.js +0 -154
- package/node_modules/side-channel-list/tsconfig.json +0 -9
- package/node_modules/side-channel-map/.editorconfig +0 -9
- package/node_modules/side-channel-map/.eslintrc +0 -11
- package/node_modules/side-channel-map/.github/FUNDING.yml +0 -12
- package/node_modules/side-channel-map/.nycrc +0 -13
- package/node_modules/side-channel-map/CHANGELOG.md +0 -22
- package/node_modules/side-channel-map/LICENSE +0 -21
- package/node_modules/side-channel-map/README.md +0 -62
- package/node_modules/side-channel-map/index.d.ts +0 -15
- package/node_modules/side-channel-map/index.js +0 -68
- package/node_modules/side-channel-map/package.json +0 -80
- package/node_modules/side-channel-map/test/index.js +0 -114
- package/node_modules/side-channel-map/tsconfig.json +0 -9
- package/node_modules/side-channel-weakmap/.editorconfig +0 -9
- package/node_modules/side-channel-weakmap/.eslintrc +0 -12
- package/node_modules/side-channel-weakmap/.github/FUNDING.yml +0 -12
- package/node_modules/side-channel-weakmap/.nycrc +0 -13
- package/node_modules/side-channel-weakmap/CHANGELOG.md +0 -28
- package/node_modules/side-channel-weakmap/LICENSE +0 -21
- package/node_modules/side-channel-weakmap/README.md +0 -62
- package/node_modules/side-channel-weakmap/index.d.ts +0 -15
- package/node_modules/side-channel-weakmap/index.js +0 -84
- package/node_modules/side-channel-weakmap/package.json +0 -87
- package/node_modules/side-channel-weakmap/test/index.js +0 -114
- package/node_modules/side-channel-weakmap/tsconfig.json +0 -9
- package/node_modules/statuses/HISTORY.md +0 -87
- package/node_modules/statuses/LICENSE +0 -23
- package/node_modules/statuses/README.md +0 -139
- package/node_modules/statuses/codes.json +0 -65
- package/node_modules/statuses/index.js +0 -146
- package/node_modules/statuses/package.json +0 -49
- package/node_modules/toidentifier/HISTORY.md +0 -9
- package/node_modules/toidentifier/LICENSE +0 -21
- package/node_modules/toidentifier/README.md +0 -61
- package/node_modules/toidentifier/index.js +0 -32
- package/node_modules/toidentifier/package.json +0 -38
- package/node_modules/unpipe/HISTORY.md +0 -4
- package/node_modules/unpipe/LICENSE +0 -22
- package/node_modules/unpipe/README.md +0 -43
- package/node_modules/unpipe/index.js +0 -69
- package/node_modules/unpipe/package.json +0 -27
- package/node_modules/utils-merge/.npmignore +0 -9
- package/node_modules/utils-merge/LICENSE +0 -20
- package/node_modules/utils-merge/README.md +0 -34
- package/node_modules/utils-merge/index.js +0 -23
- package/node_modules/utils-merge/package.json +0 -40
- package/node_modules/vary/HISTORY.md +0 -39
- package/node_modules/vary/LICENSE +0 -22
- package/node_modules/vary/README.md +0 -101
- package/node_modules/vary/index.js +0 -149
- package/node_modules/vary/package.json +0 -43
- package/ui/dist/assets/index-DYtUJ4t0.js +0 -22
- package/ui/dist/assets/useAgentDialogFocus-B2snKbzK.js +0 -1
- 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/
|
|
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
|
|
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
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
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`
|
|
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/
|
|
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
|
|
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
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
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`
|
|
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,
|
|
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"`는
|
|
136
|
-
- `provider: "grok-api"`는 `XAI_API_KEY`로 xAI Images API를 직접 호출합니다 (
|
|
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는 기본적으로 숨깁니다.
|
package/docs/README.zh-CN.md
CHANGED
|
@@ -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"
|
|
169
|
-
- `provider: "grok-api"`称为xAI图片API直接与`XAI_API_KEY
|
|
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结构化日志默认隐藏。
|
package/docs/README.zh-TW.md
CHANGED
|
@@ -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"
|
|
163
|
-
- `provider: "grok-api"`稱為xAI圖片API直接與`XAI_API_KEY
|
|
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:
|
|
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
|
package/lib/agentPlannerModel.js
CHANGED
|
@@ -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 {
|
|
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
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
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
|
|
113
|
-
return typeof
|
|
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;
|
package/lib/capabilities.js
CHANGED
|
@@ -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."
|
|
144
|
-
//
|
|
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",
|
package/lib/grokImageCore.js
CHANGED
|
@@ -1,21 +1,9 @@
|
|
|
1
1
|
import { mapSizeToGrokImageParams } from "./grokSizeMapper.js";
|
|
2
2
|
import { detectImageMimeFromB64 } from "./refs.js";
|
|
3
|
-
import {
|
|
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",
|
|
86
|
-
|
|
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 {
|
package/lib/grokImagePlanner.js
CHANGED
|
@@ -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(
|
|
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 } : {}),
|
|
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(
|
|
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 {
|
package/lib/grokRuntime.js
CHANGED
|
@@ -1,21 +1,52 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
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
|
|
7
|
-
const
|
|
8
|
-
|
|
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
|
|
9
|
+
export function getGrokEndpoint(path = "/v1/images/generations", credential) {
|
|
16
10
|
const normalizedPath = path.startsWith("/") ? path : `/${path}`;
|
|
17
|
-
return `${
|
|
11
|
+
return { url: `${getGrokDirectBaseUrl()}${normalizedPath}`, headers: grokAuthHeaders(credential) };
|
|
18
12
|
}
|
|
19
|
-
|
|
20
|
-
return
|
|
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
|
}
|
package/lib/grokVideoAdapter.js
CHANGED
|
@@ -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 } : {}),
|
|
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",
|
|
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
|
|
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,
|
|
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,
|
|
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,
|
|
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,
|
|
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)
|