ima2-gen 3.14.0 → 3.15.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 +17 -0
- package/docs/API.md +2 -2
- package/docs/CLI.md +1 -1
- package/docs/CLI.zh-CN.md +1 -1
- package/docs/CLI.zh-TW.md +1 -1
- package/docs/migration/runtime-test-inventory.md +2 -1
- package/lib/agyArtifactRead.js +0 -3
- package/lib/assetLifecycle.js +1 -6
- package/lib/errors/providerMap.js +1 -0
- package/lib/mcp/downloadMediaResult.js +1 -6
- package/lib/naiImageAdapter.js +4 -9
- package/lib/naiSubscription.js +95 -0
- package/lib/pinnedHttpGet.js +15 -23
- package/lib/providers/adapters/api.js +55 -0
- package/lib/providers/adapters/atlascloud.js +66 -0
- package/lib/providers/adapters/comfy.js +76 -19
- package/lib/providers/adapters/gemini-api.js +55 -0
- package/lib/providers/adapters/googleExecution.js +26 -51
- package/lib/providers/adapters/grok-api.js +55 -0
- package/lib/providers/adapters/grokExecution.js +67 -112
- package/lib/providers/adapters/index.js +6 -0
- package/lib/providers/adapters/minimax.js +63 -0
- package/lib/providers/adapters/nai.js +55 -0
- package/lib/providers/adapters/openaiExecution.js +12 -37
- package/lib/providers/execution/index.js +10 -16
- package/lib/providers/execution/legacyClassic.js +5 -65
- package/lib/providers/execution/legacyEdit.js +2 -27
- package/lib/providers/execution/legacyMultimode.js +2 -31
- package/lib/providers/execution/legacyNode.js +2 -38
- package/lib/spriteAnchor.js +14 -24
- package/lib/spriteAtlasExport.js +8 -13
- package/lib/spriteCurationStore.js +4 -9
- package/lib/spriteRecipeStore.js +13 -76
- package/lib/spriteRowPipeline.js +5 -22
- package/node_modules/zod/README.md +27 -0
- package/node_modules/zod/compile.cjs +77 -0
- package/node_modules/zod/compile.d.cts +1 -0
- package/node_modules/zod/compile.d.ts +1 -0
- package/node_modules/zod/compile.js +52 -0
- package/node_modules/zod/index.cjs +2 -2
- package/node_modules/zod/index.d.cts +1 -2
- package/node_modules/zod/index.d.ts +1 -2
- package/node_modules/zod/index.js +5 -2
- package/node_modules/zod/package.json +13 -2
- package/node_modules/zod/src/compile.ts +56 -0
- package/node_modules/zod/src/index.ts +5 -2
- package/node_modules/zod/src/v3/ZodError.ts +22 -12
- package/node_modules/zod/src/v3/tests/error.test.ts +35 -0
- package/node_modules/zod/src/v3/tests/intersection.test.ts +18 -0
- package/node_modules/zod/src/v3/tests/language-server.test.ts +1 -2
- package/node_modules/zod/src/v3/tests/object.test.ts +3 -6
- package/node_modules/zod/src/v3/tests/readonly.test.ts +0 -80
- package/node_modules/zod/src/v3/tests/string.test.ts +6 -0
- package/node_modules/zod/src/v3/types.ts +5 -5
- package/node_modules/zod/src/v4/classic/checks.ts +1 -0
- package/node_modules/zod/src/v4/classic/compat.ts +26 -18
- package/node_modules/zod/src/v4/classic/deep-partial.ts +76 -0
- package/node_modules/zod/src/v4/classic/errors.ts +59 -44
- package/node_modules/zod/src/v4/classic/external.ts +12 -9
- package/node_modules/zod/src/v4/classic/from-json-schema.ts +140 -78
- package/node_modules/zod/src/v4/classic/in-out.ts +45 -0
- package/node_modules/zod/src/v4/classic/index.ts +2 -2
- package/node_modules/zod/src/v4/classic/iso.ts +2 -72
- package/node_modules/zod/src/v4/classic/parse.ts +10 -4
- package/node_modules/zod/src/v4/classic/schemas.ts +452 -262
- package/node_modules/zod/src/v4/classic/tests/apply.test.ts +27 -0
- package/node_modules/zod/src/v4/classic/tests/array.test.ts +2 -2
- package/node_modules/zod/src/v4/classic/tests/assignability.test.ts +135 -0
- package/node_modules/zod/src/v4/classic/tests/bigint.test.ts +30 -1
- package/node_modules/zod/src/v4/classic/tests/catch.test.ts +278 -0
- package/node_modules/zod/src/v4/classic/tests/codec-examples.test.ts +1 -2
- package/node_modules/zod/src/v4/classic/tests/codec.test.ts +2 -1
- package/node_modules/zod/src/v4/classic/tests/continuability.test.ts +2 -2
- package/node_modules/zod/src/v4/classic/tests/credit-card.test.ts +76 -0
- package/node_modules/zod/src/v4/classic/tests/cyclic-data.test.ts +720 -0
- package/node_modules/zod/src/v4/classic/tests/date.test.ts +30 -0
- package/node_modules/zod/src/v4/classic/tests/datetime.test.ts +32 -18
- package/node_modules/zod/src/v4/classic/tests/deep-partial.test.ts +380 -0
- package/node_modules/zod/src/v4/classic/tests/default-locale.test.ts +32 -0
- package/node_modules/zod/src/v4/classic/tests/default.test.ts +46 -0
- package/node_modules/zod/src/v4/classic/tests/detached-methods.test.ts +31 -7
- package/node_modules/zod/src/v4/classic/tests/discriminated-unions.test.ts +155 -13
- package/node_modules/zod/src/v4/classic/tests/enum.test.ts +11 -0
- package/node_modules/zod/src/v4/classic/tests/error-utils.test.ts +112 -2
- package/node_modules/zod/src/v4/classic/tests/error.test.ts +274 -6
- package/node_modules/zod/src/v4/classic/tests/from-json-schema.test.ts +425 -10
- package/node_modules/zod/src/v4/classic/tests/function.test.ts +31 -0
- package/node_modules/zod/src/v4/classic/tests/global-config.test.ts +2 -9
- package/node_modules/zod/src/v4/classic/tests/hash.test.ts +1 -2
- package/node_modules/zod/src/v4/classic/tests/in-out.test.ts +159 -0
- package/node_modules/zod/src/v4/classic/tests/index.test.ts +21 -2
- package/node_modules/zod/src/v4/classic/tests/instance-footprint.test.ts +281 -0
- package/node_modules/zod/src/v4/classic/tests/instanceof.test.ts +47 -0
- package/node_modules/zod/src/v4/classic/tests/intersection.test.ts +136 -0
- package/node_modules/zod/src/v4/classic/tests/issue-schema.test.ts +183 -0
- package/node_modules/zod/src/v4/classic/tests/jitless-allows-eval.test.ts +3 -10
- package/node_modules/zod/src/v4/classic/tests/lazy.test.ts +36 -1
- package/node_modules/zod/src/v4/classic/tests/literal.test.ts +12 -1
- package/node_modules/zod/src/v4/classic/tests/map.test.ts +12 -0
- package/node_modules/zod/src/v4/classic/tests/number.test.ts +46 -9
- package/node_modules/zod/src/v4/classic/tests/object.test.ts +245 -12
- package/node_modules/zod/src/v4/classic/tests/optin-ladder.test.ts +234 -0
- package/node_modules/zod/src/v4/classic/tests/optional.test.ts +49 -16
- package/node_modules/zod/src/v4/classic/tests/partial.test.ts +51 -4
- package/node_modules/zod/src/v4/classic/tests/preprocess-types.test.ts +20 -2
- package/node_modules/zod/src/v4/classic/tests/readonly.test.ts +0 -68
- package/node_modules/zod/src/v4/classic/tests/record.test.ts +186 -18
- package/node_modules/zod/src/v4/classic/tests/recursive-types.test.ts +33 -2
- package/node_modules/zod/src/v4/classic/tests/redos.test.ts +68 -0
- package/node_modules/zod/src/v4/classic/tests/refine.test.ts +60 -0
- package/node_modules/zod/src/v4/classic/tests/set.test.ts +9 -0
- package/node_modules/zod/src/v4/classic/tests/string.test.ts +127 -5
- package/node_modules/zod/src/v4/classic/tests/stringbool.test.ts +18 -0
- package/node_modules/zod/src/v4/classic/tests/template-literal.test.ts +11 -2
- package/node_modules/zod/src/v4/classic/tests/to-json-schema.test.ts +1585 -173
- package/node_modules/zod/src/v4/classic/tests/tuple.test.ts +45 -30
- package/node_modules/zod/src/v4/classic/tests/union.test.ts +39 -2
- package/node_modules/zod/src/v4/classic/tests/validate.test.ts +76 -0
- package/node_modules/zod/src/v4/classic/tests/validations.test.ts +2 -2
- package/node_modules/zod/src/v4/core/api.ts +48 -12
- package/node_modules/zod/src/v4/core/checks.ts +57 -44
- package/node_modules/zod/src/v4/core/compile.ts +2188 -0
- package/node_modules/zod/src/v4/core/core.ts +98 -19
- package/node_modules/zod/src/v4/core/doc.ts +11 -7
- package/node_modules/zod/src/v4/core/errors.ts +115 -24
- package/node_modules/zod/src/v4/core/index.ts +3 -0
- package/node_modules/zod/src/v4/core/json-schema-generator.ts +6 -1
- package/node_modules/zod/src/v4/core/json-schema-processors.ts +257 -93
- package/node_modules/zod/src/v4/core/json-schema.ts +2 -1
- package/node_modules/zod/src/v4/core/memoizer.ts +284 -0
- package/node_modules/zod/src/v4/core/parse.ts +131 -38
- package/node_modules/zod/src/v4/core/regexes.ts +30 -13
- package/node_modules/zod/src/v4/core/registries.ts +2 -2
- package/node_modules/zod/src/v4/core/schemas.ts +759 -461
- package/node_modules/zod/src/v4/core/tests/compile-differential.test.ts +969 -0
- package/node_modules/zod/src/v4/core/tests/compile-global.test.ts +89 -0
- package/node_modules/zod/src/v4/core/tests/compile-off-by-default.test.ts +26 -0
- package/node_modules/zod/src/v4/core/tests/compile-stats.test.ts +34 -0
- package/node_modules/zod/src/v4/core/tests/compile.test.ts +1639 -0
- package/node_modules/zod/src/v4/core/tests/locales/el.test.ts +1 -2
- package/node_modules/zod/src/v4/core/tests/locales/es.test.ts +1 -2
- package/node_modules/zod/src/v4/core/tests/locales/fr.test.ts +3 -3
- package/node_modules/zod/src/v4/core/tests/locales/parity.test.ts +42 -0
- package/node_modules/zod/src/v4/core/tests/locales/tk.test.ts +69 -0
- package/node_modules/zod/src/v4/core/tests/treeshake.test.ts +51 -0
- package/node_modules/zod/src/v4/core/tests/url-no-canparse.test.ts +31 -0
- package/node_modules/zod/src/v4/core/to-json-schema.ts +275 -42
- package/node_modules/zod/src/v4/core/util.ts +268 -42
- package/node_modules/zod/src/v4/core/versions.ts +2 -2
- package/node_modules/zod/src/v4/core/visit.ts +193 -0
- package/node_modules/zod/src/v4/index.ts +3 -3
- package/node_modules/zod/src/v4/locales/ar.ts +3 -0
- package/node_modules/zod/src/v4/locales/az.ts +3 -0
- package/node_modules/zod/src/v4/locales/be.ts +10 -0
- package/node_modules/zod/src/v4/locales/bg.ts +3 -0
- package/node_modules/zod/src/v4/locales/bn.ts +121 -0
- package/node_modules/zod/src/v4/locales/ca.ts +3 -0
- package/node_modules/zod/src/v4/locales/ckb.ts +138 -0
- package/node_modules/zod/src/v4/locales/cs.ts +3 -0
- package/node_modules/zod/src/v4/locales/da.ts +5 -2
- package/node_modules/zod/src/v4/locales/de.ts +3 -0
- package/node_modules/zod/src/v4/locales/el.ts +1 -0
- package/node_modules/zod/src/v4/locales/en.ts +15 -4
- package/node_modules/zod/src/v4/locales/eo.ts +3 -0
- package/node_modules/zod/src/v4/locales/es.ts +2 -0
- package/node_modules/zod/src/v4/locales/fa.ts +3 -0
- package/node_modules/zod/src/v4/locales/fi.ts +3 -0
- package/node_modules/zod/src/v4/locales/fr-CA.ts +3 -0
- package/node_modules/zod/src/v4/locales/fr.ts +19 -14
- package/node_modules/zod/src/v4/locales/gu.ts +121 -0
- package/node_modules/zod/src/v4/locales/he.ts +6 -1
- package/node_modules/zod/src/v4/locales/hi.ts +124 -0
- package/node_modules/zod/src/v4/locales/hr.ts +2 -0
- package/node_modules/zod/src/v4/locales/hu.ts +3 -0
- package/node_modules/zod/src/v4/locales/hy.ts +9 -0
- package/node_modules/zod/src/v4/locales/id.ts +3 -0
- package/node_modules/zod/src/v4/locales/index.ts +10 -0
- package/node_modules/zod/src/v4/locales/is.ts +3 -0
- package/node_modules/zod/src/v4/locales/it.ts +3 -0
- package/node_modules/zod/src/v4/locales/ja.ts +3 -0
- package/node_modules/zod/src/v4/locales/ka.ts +3 -0
- package/node_modules/zod/src/v4/locales/km.ts +3 -0
- package/node_modules/zod/src/v4/locales/kn.ts +124 -0
- package/node_modules/zod/src/v4/locales/ko.ts +3 -0
- package/node_modules/zod/src/v4/locales/lt.ts +2 -0
- package/node_modules/zod/src/v4/locales/mk.ts +3 -0
- package/node_modules/zod/src/v4/locales/ms.ts +3 -0
- package/node_modules/zod/src/v4/locales/ne.ts +126 -0
- package/node_modules/zod/src/v4/locales/nl.ts +3 -0
- package/node_modules/zod/src/v4/locales/nn.ts +119 -0
- package/node_modules/zod/src/v4/locales/no.ts +5 -2
- package/node_modules/zod/src/v4/locales/ota.ts +3 -0
- package/node_modules/zod/src/v4/locales/pl.ts +3 -0
- package/node_modules/zod/src/v4/locales/ps.ts +3 -0
- package/node_modules/zod/src/v4/locales/pt-BR.ts +159 -0
- package/node_modules/zod/src/v4/locales/pt.ts +99 -58
- package/node_modules/zod/src/v4/locales/ro.ts +1 -0
- package/node_modules/zod/src/v4/locales/ru.ts +10 -0
- package/node_modules/zod/src/v4/locales/sk.ts +121 -0
- package/node_modules/zod/src/v4/locales/sl.ts +3 -0
- package/node_modules/zod/src/v4/locales/sv.ts +5 -2
- package/node_modules/zod/src/v4/locales/ta.ts +3 -0
- package/node_modules/zod/src/v4/locales/th.ts +3 -0
- package/node_modules/zod/src/v4/locales/tk.ts +111 -0
- package/node_modules/zod/src/v4/locales/tr.ts +3 -0
- package/node_modules/zod/src/v4/locales/uk.ts +3 -0
- package/node_modules/zod/src/v4/locales/ur.ts +3 -0
- package/node_modules/zod/src/v4/locales/uz.ts +1 -0
- package/node_modules/zod/src/v4/locales/vi.ts +3 -0
- package/node_modules/zod/src/v4/locales/yo.ts +3 -0
- package/node_modules/zod/src/v4/locales/zh-CN.ts +3 -0
- package/node_modules/zod/src/v4/locales/zh-TW.ts +3 -0
- package/node_modules/zod/src/v4/mini/checks.ts +1 -0
- package/node_modules/zod/src/v4/mini/deep-partial.ts +73 -0
- package/node_modules/zod/src/v4/mini/external.ts +10 -1
- package/node_modules/zod/src/v4/mini/in-out.ts +45 -0
- package/node_modules/zod/src/v4/mini/parse.ts +2 -0
- package/node_modules/zod/src/v4/mini/schemas.ts +135 -56
- package/node_modules/zod/src/v4/mini/tests/apply.test.ts +33 -0
- package/node_modules/zod/src/v4/mini/tests/assignability.test.ts +62 -1
- package/node_modules/zod/src/v4/mini/tests/checks.test.ts +14 -0
- package/node_modules/zod/src/v4/mini/tests/codec.test.ts +35 -1
- package/node_modules/zod/src/v4/mini/tests/cyclic-data.test.ts +84 -0
- package/node_modules/zod/src/v4/mini/tests/deep-partial.test.ts +54 -0
- package/node_modules/zod/src/v4/mini/tests/error.test.ts +23 -4
- package/node_modules/zod/src/v4/mini/tests/functions.test.ts +9 -0
- package/node_modules/zod/src/v4/mini/tests/index.test.ts +72 -5
- package/node_modules/zod/src/v4/mini/tests/number.test.ts +14 -0
- package/node_modules/zod/src/v4/mini/tests/object.test.ts +65 -0
- package/node_modules/zod/src/v4/mini/tests/string.test.ts +21 -0
- package/node_modules/zod/v3/ZodError.cjs +22 -12
- package/node_modules/zod/v3/ZodError.d.cts +1 -1
- package/node_modules/zod/v3/ZodError.d.ts +1 -1
- package/node_modules/zod/v3/ZodError.js +22 -12
- package/node_modules/zod/v3/types.cjs +7 -5
- package/node_modules/zod/v3/types.js +7 -5
- package/node_modules/zod/v4/classic/checks.cjs +2 -1
- package/node_modules/zod/v4/classic/checks.d.cts +1 -1
- package/node_modules/zod/v4/classic/checks.d.ts +1 -1
- package/node_modules/zod/v4/classic/checks.js +1 -1
- package/node_modules/zod/v4/classic/compat.d.cts +9 -11
- package/node_modules/zod/v4/classic/compat.d.ts +9 -11
- package/node_modules/zod/v4/classic/deep-partial.cjs +39 -0
- package/node_modules/zod/v4/classic/deep-partial.d.cts +14 -0
- package/node_modules/zod/v4/classic/deep-partial.d.ts +14 -0
- package/node_modules/zod/v4/classic/deep-partial.js +13 -0
- package/node_modules/zod/v4/classic/errors.cjs +43 -34
- package/node_modules/zod/v4/classic/errors.d.cts +3 -4
- package/node_modules/zod/v4/classic/errors.d.ts +3 -4
- package/node_modules/zod/v4/classic/errors.js +43 -34
- package/node_modules/zod/v4/classic/external.cjs +30 -27
- package/node_modules/zod/v4/classic/external.d.cts +5 -2
- package/node_modules/zod/v4/classic/external.d.ts +5 -2
- package/node_modules/zod/v4/classic/external.js +5 -8
- package/node_modules/zod/v4/classic/from-json-schema.cjs +136 -75
- package/node_modules/zod/v4/classic/from-json-schema.js +136 -75
- package/node_modules/zod/v4/classic/in-out.cjs +63 -0
- package/node_modules/zod/v4/classic/in-out.d.cts +8 -0
- package/node_modules/zod/v4/classic/in-out.d.ts +8 -0
- package/node_modules/zod/v4/classic/in-out.js +36 -0
- package/node_modules/zod/v4/classic/index.cjs +2 -2
- package/node_modules/zod/v4/classic/index.d.cts +1 -2
- package/node_modules/zod/v4/classic/index.d.ts +1 -2
- package/node_modules/zod/v4/classic/index.js +2 -2
- package/node_modules/zod/v4/classic/iso.cjs +11 -22
- package/node_modules/zod/v4/classic/iso.d.cts +2 -17
- package/node_modules/zod/v4/classic/iso.d.ts +2 -17
- package/node_modules/zod/v4/classic/iso.js +2 -17
- package/node_modules/zod/v4/classic/parse.cjs +4 -1
- package/node_modules/zod/v4/classic/parse.d.cts +17 -4
- package/node_modules/zod/v4/classic/parse.d.ts +17 -4
- package/node_modules/zod/v4/classic/parse.js +1 -0
- package/node_modules/zod/v4/classic/schemas.cjs +498 -398
- package/node_modules/zod/v4/classic/schemas.d.cts +53 -18
- package/node_modules/zod/v4/classic/schemas.d.ts +53 -18
- package/node_modules/zod/v4/classic/schemas.js +492 -396
- package/node_modules/zod/v4/core/api.cjs +23 -4
- package/node_modules/zod/v4/core/api.d.cts +13 -9
- package/node_modules/zod/v4/core/api.d.ts +13 -9
- package/node_modules/zod/v4/core/api.js +21 -4
- package/node_modules/zod/v4/core/checks.cjs +37 -31
- package/node_modules/zod/v4/core/checks.d.cts +13 -13
- package/node_modules/zod/v4/core/checks.d.ts +13 -13
- package/node_modules/zod/v4/core/checks.js +37 -31
- package/node_modules/zod/v4/core/compile.cjs +1813 -0
- package/node_modules/zod/v4/core/compile.d.cts +51 -0
- package/node_modules/zod/v4/core/compile.d.ts +51 -0
- package/node_modules/zod/v4/core/compile.js +1783 -0
- package/node_modules/zod/v4/core/core.cjs +81 -18
- package/node_modules/zod/v4/core/core.d.cts +16 -4
- package/node_modules/zod/v4/core/core.d.ts +16 -4
- package/node_modules/zod/v4/core/core.js +82 -19
- package/node_modules/zod/v4/core/doc.cjs +5 -7
- package/node_modules/zod/v4/core/doc.d.cts +3 -1
- package/node_modules/zod/v4/core/doc.d.ts +3 -1
- package/node_modules/zod/v4/core/doc.js +5 -7
- package/node_modules/zod/v4/core/errors.cjs +110 -25
- package/node_modules/zod/v4/core/errors.d.cts +4 -0
- package/node_modules/zod/v4/core/errors.d.ts +4 -0
- package/node_modules/zod/v4/core/errors.js +110 -25
- package/node_modules/zod/v4/core/index.cjs +5 -1
- package/node_modules/zod/v4/core/index.d.cts +3 -0
- package/node_modules/zod/v4/core/index.d.ts +3 -0
- package/node_modules/zod/v4/core/index.js +3 -0
- package/node_modules/zod/v4/core/json-schema-generator.cjs +4 -0
- package/node_modules/zod/v4/core/json-schema-generator.d.cts +2 -2
- package/node_modules/zod/v4/core/json-schema-generator.d.ts +2 -2
- package/node_modules/zod/v4/core/json-schema-generator.js +4 -0
- package/node_modules/zod/v4/core/json-schema-processors.cjs +264 -95
- package/node_modules/zod/v4/core/json-schema-processors.js +243 -97
- package/node_modules/zod/v4/core/json-schema.d.cts +2 -1
- package/node_modules/zod/v4/core/json-schema.d.ts +2 -1
- package/node_modules/zod/v4/core/memoizer.cjs +272 -0
- package/node_modules/zod/v4/core/memoizer.d.cts +15 -0
- package/node_modules/zod/v4/core/memoizer.d.ts +15 -0
- package/node_modules/zod/v4/core/memoizer.js +265 -0
- package/node_modules/zod/v4/core/parse.cjs +96 -34
- package/node_modules/zod/v4/core/parse.d.cts +14 -11
- package/node_modules/zod/v4/core/parse.d.ts +14 -11
- package/node_modules/zod/v4/core/parse.js +94 -33
- package/node_modules/zod/v4/core/regexes.cjs +27 -15
- package/node_modules/zod/v4/core/regexes.d.cts +2 -0
- package/node_modules/zod/v4/core/regexes.d.ts +2 -0
- package/node_modules/zod/v4/core/regexes.js +24 -13
- package/node_modules/zod/v4/core/registries.js +2 -2
- package/node_modules/zod/v4/core/schemas.cjs +537 -326
- package/node_modules/zod/v4/core/schemas.d.cts +100 -31
- package/node_modules/zod/v4/core/schemas.d.ts +100 -31
- package/node_modules/zod/v4/core/schemas.js +526 -325
- package/node_modules/zod/v4/core/to-json-schema.cjs +242 -39
- package/node_modules/zod/v4/core/to-json-schema.d.cts +42 -3
- package/node_modules/zod/v4/core/to-json-schema.d.ts +42 -3
- package/node_modules/zod/v4/core/to-json-schema.js +241 -39
- package/node_modules/zod/v4/core/util.cjs +212 -31
- package/node_modules/zod/v4/core/util.d.cts +58 -1
- package/node_modules/zod/v4/core/util.d.ts +58 -1
- package/node_modules/zod/v4/core/util.js +202 -30
- package/node_modules/zod/v4/core/versions.cjs +2 -2
- package/node_modules/zod/v4/core/versions.d.cts +1 -1
- package/node_modules/zod/v4/core/versions.d.ts +1 -1
- package/node_modules/zod/v4/core/versions.js +2 -2
- package/node_modules/zod/v4/core/visit.cjs +195 -0
- package/node_modules/zod/v4/core/visit.d.cts +30 -0
- package/node_modules/zod/v4/core/visit.d.ts +30 -0
- package/node_modules/zod/v4/core/visit.js +169 -0
- package/node_modules/zod/v4/index.cjs +15 -5
- package/node_modules/zod/v4/index.d.cts +2 -2
- package/node_modules/zod/v4/index.d.ts +2 -2
- package/node_modules/zod/v4/index.js +3 -2
- package/node_modules/zod/v4/locales/ar.cjs +3 -0
- package/node_modules/zod/v4/locales/ar.js +3 -0
- package/node_modules/zod/v4/locales/az.cjs +3 -0
- package/node_modules/zod/v4/locales/az.js +3 -0
- package/node_modules/zod/v4/locales/be.cjs +10 -0
- package/node_modules/zod/v4/locales/be.js +10 -0
- package/node_modules/zod/v4/locales/bg.cjs +3 -0
- package/node_modules/zod/v4/locales/bg.js +3 -0
- package/node_modules/zod/v4/locales/bn.cjs +138 -0
- package/node_modules/zod/v4/locales/bn.d.cts +5 -0
- package/node_modules/zod/v4/locales/bn.d.ts +4 -0
- package/node_modules/zod/v4/locales/bn.js +111 -0
- package/node_modules/zod/v4/locales/ca.cjs +3 -0
- package/node_modules/zod/v4/locales/ca.js +3 -0
- package/node_modules/zod/v4/locales/ckb.cjs +158 -0
- package/node_modules/zod/v4/locales/ckb.d.cts +5 -0
- package/node_modules/zod/v4/locales/ckb.d.ts +4 -0
- package/node_modules/zod/v4/locales/ckb.js +131 -0
- package/node_modules/zod/v4/locales/cs.cjs +3 -0
- package/node_modules/zod/v4/locales/cs.js +3 -0
- package/node_modules/zod/v4/locales/da.cjs +5 -2
- package/node_modules/zod/v4/locales/da.js +5 -2
- package/node_modules/zod/v4/locales/de.cjs +3 -0
- package/node_modules/zod/v4/locales/de.js +3 -0
- package/node_modules/zod/v4/locales/el.cjs +1 -0
- package/node_modules/zod/v4/locales/el.js +1 -0
- package/node_modules/zod/v4/locales/en.cjs +14 -4
- package/node_modules/zod/v4/locales/en.js +14 -4
- package/node_modules/zod/v4/locales/eo.cjs +3 -0
- package/node_modules/zod/v4/locales/eo.js +3 -0
- package/node_modules/zod/v4/locales/es.cjs +2 -0
- package/node_modules/zod/v4/locales/es.js +2 -0
- package/node_modules/zod/v4/locales/fa.cjs +3 -0
- package/node_modules/zod/v4/locales/fa.js +3 -0
- package/node_modules/zod/v4/locales/fi.cjs +3 -0
- package/node_modules/zod/v4/locales/fi.js +3 -0
- package/node_modules/zod/v4/locales/fr-CA.cjs +3 -0
- package/node_modules/zod/v4/locales/fr-CA.js +3 -0
- package/node_modules/zod/v4/locales/fr.cjs +16 -14
- package/node_modules/zod/v4/locales/fr.js +16 -14
- package/node_modules/zod/v4/locales/gu.cjs +138 -0
- package/node_modules/zod/v4/locales/gu.d.cts +5 -0
- package/node_modules/zod/v4/locales/gu.d.ts +4 -0
- package/node_modules/zod/v4/locales/gu.js +111 -0
- package/node_modules/zod/v4/locales/he.cjs +5 -0
- package/node_modules/zod/v4/locales/he.js +5 -0
- package/node_modules/zod/v4/locales/hi.cjs +136 -0
- package/node_modules/zod/v4/locales/hi.d.cts +5 -0
- package/node_modules/zod/v4/locales/hi.d.ts +4 -0
- package/node_modules/zod/v4/locales/hi.js +109 -0
- package/node_modules/zod/v4/locales/hr.cjs +2 -0
- package/node_modules/zod/v4/locales/hr.js +2 -0
- package/node_modules/zod/v4/locales/hu.cjs +3 -0
- package/node_modules/zod/v4/locales/hu.js +3 -0
- package/node_modules/zod/v4/locales/hy.cjs +9 -0
- package/node_modules/zod/v4/locales/hy.js +9 -0
- package/node_modules/zod/v4/locales/id.cjs +3 -0
- package/node_modules/zod/v4/locales/id.js +3 -0
- package/node_modules/zod/v4/locales/index.cjs +22 -2
- package/node_modules/zod/v4/locales/index.d.cts +10 -0
- package/node_modules/zod/v4/locales/index.d.ts +10 -0
- package/node_modules/zod/v4/locales/index.js +10 -0
- package/node_modules/zod/v4/locales/is.cjs +3 -0
- package/node_modules/zod/v4/locales/is.js +3 -0
- package/node_modules/zod/v4/locales/it.cjs +3 -0
- package/node_modules/zod/v4/locales/it.js +3 -0
- package/node_modules/zod/v4/locales/ja.cjs +3 -0
- package/node_modules/zod/v4/locales/ja.js +3 -0
- package/node_modules/zod/v4/locales/ka.cjs +3 -0
- package/node_modules/zod/v4/locales/ka.js +3 -0
- package/node_modules/zod/v4/locales/km.cjs +3 -0
- package/node_modules/zod/v4/locales/km.js +3 -0
- package/node_modules/zod/v4/locales/kn.cjs +141 -0
- package/node_modules/zod/v4/locales/kn.d.cts +5 -0
- package/node_modules/zod/v4/locales/kn.d.ts +4 -0
- package/node_modules/zod/v4/locales/kn.js +114 -0
- package/node_modules/zod/v4/locales/ko.cjs +3 -0
- package/node_modules/zod/v4/locales/ko.js +3 -0
- package/node_modules/zod/v4/locales/lt.cjs +2 -0
- package/node_modules/zod/v4/locales/lt.js +2 -0
- package/node_modules/zod/v4/locales/mk.cjs +3 -0
- package/node_modules/zod/v4/locales/mk.js +3 -0
- package/node_modules/zod/v4/locales/ms.cjs +3 -0
- package/node_modules/zod/v4/locales/ms.js +3 -0
- package/node_modules/zod/v4/locales/ne.cjs +136 -0
- package/node_modules/zod/v4/locales/ne.d.cts +5 -0
- package/node_modules/zod/v4/locales/ne.d.ts +4 -0
- package/node_modules/zod/v4/locales/ne.js +109 -0
- package/node_modules/zod/v4/locales/nl.cjs +3 -0
- package/node_modules/zod/v4/locales/nl.js +3 -0
- package/node_modules/zod/v4/locales/nn.cjs +138 -0
- package/node_modules/zod/v4/locales/nn.d.cts +5 -0
- package/node_modules/zod/v4/locales/nn.d.ts +4 -0
- package/node_modules/zod/v4/locales/nn.js +111 -0
- package/node_modules/zod/v4/locales/no.cjs +5 -2
- package/node_modules/zod/v4/locales/no.js +5 -2
- package/node_modules/zod/v4/locales/ota.cjs +3 -0
- package/node_modules/zod/v4/locales/ota.js +3 -0
- package/node_modules/zod/v4/locales/pl.cjs +3 -0
- package/node_modules/zod/v4/locales/pl.js +3 -0
- package/node_modules/zod/v4/locales/ps.cjs +3 -0
- package/node_modules/zod/v4/locales/ps.js +3 -0
- package/node_modules/zod/v4/locales/pt-BR.cjs +168 -0
- package/node_modules/zod/v4/locales/pt-BR.d.cts +5 -0
- package/node_modules/zod/v4/locales/pt-BR.d.ts +4 -0
- package/node_modules/zod/v4/locales/pt-BR.js +141 -0
- package/node_modules/zod/v4/locales/pt.cjs +87 -55
- package/node_modules/zod/v4/locales/pt.js +87 -55
- package/node_modules/zod/v4/locales/ro.cjs +1 -0
- package/node_modules/zod/v4/locales/ro.js +1 -0
- package/node_modules/zod/v4/locales/ru.cjs +10 -0
- package/node_modules/zod/v4/locales/ru.js +10 -0
- package/node_modules/zod/v4/locales/sk.cjs +141 -0
- package/node_modules/zod/v4/locales/sk.d.cts +5 -0
- package/node_modules/zod/v4/locales/sk.d.ts +4 -0
- package/node_modules/zod/v4/locales/sk.js +114 -0
- package/node_modules/zod/v4/locales/sl.cjs +3 -0
- package/node_modules/zod/v4/locales/sl.js +3 -0
- package/node_modules/zod/v4/locales/sv.cjs +5 -2
- package/node_modules/zod/v4/locales/sv.js +5 -2
- package/node_modules/zod/v4/locales/ta.cjs +3 -0
- package/node_modules/zod/v4/locales/ta.js +3 -0
- package/node_modules/zod/v4/locales/th.cjs +3 -0
- package/node_modules/zod/v4/locales/th.js +3 -0
- package/node_modules/zod/v4/locales/tk.cjs +132 -0
- package/node_modules/zod/v4/locales/tk.d.cts +5 -0
- package/node_modules/zod/v4/locales/tk.d.ts +4 -0
- package/node_modules/zod/v4/locales/tk.js +105 -0
- package/node_modules/zod/v4/locales/tr.cjs +3 -0
- package/node_modules/zod/v4/locales/tr.js +3 -0
- package/node_modules/zod/v4/locales/uk.cjs +3 -0
- package/node_modules/zod/v4/locales/uk.js +3 -0
- package/node_modules/zod/v4/locales/ur.cjs +3 -0
- package/node_modules/zod/v4/locales/ur.js +3 -0
- package/node_modules/zod/v4/locales/uz.cjs +1 -0
- package/node_modules/zod/v4/locales/uz.js +1 -0
- package/node_modules/zod/v4/locales/vi.cjs +3 -0
- package/node_modules/zod/v4/locales/vi.js +3 -0
- package/node_modules/zod/v4/locales/yo.cjs +3 -0
- package/node_modules/zod/v4/locales/yo.js +3 -0
- package/node_modules/zod/v4/locales/zh-CN.cjs +3 -0
- package/node_modules/zod/v4/locales/zh-CN.js +3 -0
- package/node_modules/zod/v4/locales/zh-TW.cjs +3 -0
- package/node_modules/zod/v4/locales/zh-TW.js +3 -0
- package/node_modules/zod/v4/mini/checks.cjs +2 -1
- package/node_modules/zod/v4/mini/checks.d.cts +1 -1
- package/node_modules/zod/v4/mini/checks.d.ts +1 -1
- package/node_modules/zod/v4/mini/checks.js +1 -1
- package/node_modules/zod/v4/mini/deep-partial.cjs +39 -0
- package/node_modules/zod/v4/mini/deep-partial.d.cts +14 -0
- package/node_modules/zod/v4/mini/deep-partial.d.ts +14 -0
- package/node_modules/zod/v4/mini/deep-partial.js +13 -0
- package/node_modules/zod/v4/mini/external.cjs +12 -1
- package/node_modules/zod/v4/mini/external.d.cts +5 -2
- package/node_modules/zod/v4/mini/external.d.ts +5 -2
- package/node_modules/zod/v4/mini/external.js +3 -1
- package/node_modules/zod/v4/mini/in-out.cjs +63 -0
- package/node_modules/zod/v4/mini/in-out.d.cts +8 -0
- package/node_modules/zod/v4/mini/in-out.d.ts +8 -0
- package/node_modules/zod/v4/mini/in-out.js +36 -0
- package/node_modules/zod/v4/mini/parse.cjs +3 -1
- package/node_modules/zod/v4/mini/parse.d.cts +1 -1
- package/node_modules/zod/v4/mini/parse.d.ts +1 -1
- package/node_modules/zod/v4/mini/parse.js +1 -1
- package/node_modules/zod/v4/mini/schemas.cjs +75 -47
- package/node_modules/zod/v4/mini/schemas.d.cts +43 -13
- package/node_modules/zod/v4/mini/schemas.d.ts +43 -13
- package/node_modules/zod/v4/mini/schemas.js +71 -45
- package/package.json +5 -5
- package/routes/quota.js +29 -3
- package/ui/dist/.vite/manifest.json +61 -61
- package/ui/dist/assets/{AgentWorkspace-CL3MLv3l.js → AgentWorkspace-BulKz33A.js} +1 -1
- package/ui/dist/assets/{App-B9cEM6dJ.js → App-juOjrIgh.js} +3 -3
- package/ui/dist/assets/{AssetGenWorkspace-swWPvXrx.js → AssetGenWorkspace-8SYhS2Y2.js} +2 -2
- package/ui/dist/assets/{AssetsWorkspace-CRVeYU2F.js → AssetsWorkspace-Dxz-Xksp.js} +1 -1
- package/ui/dist/assets/{CardNewsWorkspace-BAOxWLKf.js → CardNewsWorkspace-DV4hpvKf.js} +1 -1
- package/ui/dist/assets/{GenerationRequestLogPanel-DZtYZm-D.js → GenerationRequestLogPanel-VFu4cAdd.js} +1 -1
- package/ui/dist/assets/{HomeWorkspace-BeZ1s0Jm.js → HomeWorkspace-D1UBgwRZ.js} +1 -1
- package/ui/dist/assets/{KeyingPanel-ZyBSXioh.js → KeyingPanel-GdUcaaJR.js} +1 -1
- package/ui/dist/assets/{NodeCanvas-BvvcCErf.js → NodeCanvas-B6zoJhHr.js} +3 -3
- package/ui/dist/assets/{PromptBuilderPanel-DBycmShA.js → PromptBuilderPanel-CJ56MEk2.js} +1 -1
- package/ui/dist/assets/{PromptImportDialog-ChvMv7ek.js → PromptImportDialog-DMFnggIT.js} +2 -2
- package/ui/dist/assets/{PromptImportDiscoverySection-60py7whH.js → PromptImportDiscoverySection-4KCIWmZ8.js} +1 -1
- package/ui/dist/assets/{PromptImportFolderSection-CCRh_-_7.js → PromptImportFolderSection-BjqopFX5.js} +1 -1
- package/ui/dist/assets/{PromptLibraryPanel-BFWQO8OT.js → PromptLibraryPanel-DwFK4ALC.js} +2 -2
- package/ui/dist/assets/SettingsWorkspace-BWcNnQ56.js +1 -0
- package/ui/dist/assets/{SpriteRecipeWorkspace-DRWdkmwU.js → SpriteRecipeWorkspace-Bsl_NZ3A.js} +1 -1
- package/ui/dist/assets/{index-7ngEOVxt.js → index-BWzT2RyM.js} +3 -3
- package/ui/dist/assets/{index-B5jy7ePg.css → index-C5zSMtGM.css} +1 -1
- package/ui/dist/assets/{index-gxh_02DQ.js → index-Cl5SnWLL.js} +7 -7
- package/ui/dist/assets/{pptxgen.es-OUNhQLEV.js → pptxgen.es-BslswdiL.js} +1 -1
- package/ui/dist/assets/{promptBuilderStore-BTUUzbBT.js → promptBuilderStore-Cl2q0Oe6.js} +1 -1
- package/ui/dist/assets/useAgentDialogFocus-B8niAv4W.js +1 -0
- package/ui/dist/index.html +2 -2
- package/node_modules/zod/src/v4/core/config.ts +0 -15
- package/ui/dist/assets/SettingsWorkspace-B5Ghsgdj.js +0 -1
- package/ui/dist/assets/useAgentDialogFocus-DSc2qY8p.js +0 -1
|
@@ -29,36 +29,26 @@ function prepareGoogleClassic(ctx, request) {
|
|
|
29
29
|
const { model, size } = request.options;
|
|
30
30
|
// Classic captures scalars once; each attempt reads live refs, signal and credentials.
|
|
31
31
|
return { execute: async () => {
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
return { kind: "single", value };
|
|
41
|
-
}
|
|
42
|
-
catch (error) {
|
|
43
|
-
throw error;
|
|
44
|
-
} // Preserve native identity; caller owns normalization.
|
|
32
|
+
const value = provider === "agy"
|
|
33
|
+
? await generateViaAgy(prompt, { references: request.references, signal: request.signal, requestId })
|
|
34
|
+
: await generateViaGeminiApi(prompt, requireRuntimeContext(ctx), {
|
|
35
|
+
model, size, signal: request.signal,
|
|
36
|
+
...(requestId !== undefined ? { requestId } : {}),
|
|
37
|
+
references: request.references,
|
|
38
|
+
});
|
|
39
|
+
return { kind: "single", value };
|
|
45
40
|
} };
|
|
46
41
|
}
|
|
47
42
|
async function runGoogleImage(ctx, request, input) {
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
return await generateViaAgy(input.prompt, { references: input.references, signal, requestId });
|
|
52
|
-
}
|
|
53
|
-
return await generateViaGeminiApi(input.prompt, request.surface === "node" ? requireRuntimeContext(ctx) : ctx, {
|
|
54
|
-
model: options.model, size: options.size, signal,
|
|
55
|
-
...(requestId !== undefined ? { requestId } : {}),
|
|
56
|
-
references: input.references,
|
|
57
|
-
});
|
|
58
|
-
}
|
|
59
|
-
catch (error) {
|
|
60
|
-
throw error;
|
|
43
|
+
const { provider, signal, requestId, options } = request;
|
|
44
|
+
if (provider === "agy") {
|
|
45
|
+
return await generateViaAgy(input.prompt, { references: input.references, signal, requestId });
|
|
61
46
|
}
|
|
47
|
+
return await generateViaGeminiApi(input.prompt, request.surface === "node" ? requireRuntimeContext(ctx) : ctx, {
|
|
48
|
+
model: options.model, size: options.size, signal,
|
|
49
|
+
...(requestId !== undefined ? { requestId } : {}),
|
|
50
|
+
references: input.references,
|
|
51
|
+
});
|
|
62
52
|
}
|
|
63
53
|
function googleSequence(result) {
|
|
64
54
|
// Preserve the dense one-image projection; the caller owns the final persistence sweep.
|
|
@@ -68,30 +58,15 @@ function googleSequence(result) {
|
|
|
68
58
|
};
|
|
69
59
|
}
|
|
70
60
|
export async function prepareGoogleExecution(ctx, request, _progress) {
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
} // Caller owns retries, cancellation and cleanup.
|
|
82
|
-
} };
|
|
83
|
-
case "multimode": return { execute: async () => {
|
|
84
|
-
try {
|
|
85
|
-
const result = await runGoogleImage(ctx, request, googleInput(request));
|
|
86
|
-
return { kind: "sequence", value: googleSequence(result) };
|
|
87
|
-
}
|
|
88
|
-
catch (error) {
|
|
89
|
-
throw error;
|
|
90
|
-
}
|
|
91
|
-
} };
|
|
92
|
-
}
|
|
93
|
-
}
|
|
94
|
-
catch (error) {
|
|
95
|
-
throw error;
|
|
61
|
+
switch (request.surface) {
|
|
62
|
+
case "classic": return prepareGoogleClassic(ctx, request);
|
|
63
|
+
case "node":
|
|
64
|
+
case "edit": return { execute: async () => {
|
|
65
|
+
return { kind: "single", value: await runGoogleImage(ctx, request, googleInput(request)) };
|
|
66
|
+
} };
|
|
67
|
+
case "multimode": return { execute: async () => {
|
|
68
|
+
const result = await runGoogleImage(ctx, request, googleInput(request));
|
|
69
|
+
return { kind: "sequence", value: googleSequence(result) };
|
|
70
|
+
} };
|
|
96
71
|
}
|
|
97
72
|
}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import { getProvider } from "../registry.js";
|
|
2
|
+
const LANE_ID = "grok-api";
|
|
3
|
+
const ERROR_PREFIX = getProvider(LANE_ID).errorPrefix;
|
|
4
|
+
/** Status codes worth retrying: transient upstream conditions, not bad input. */
|
|
5
|
+
const RETRYABLE_STATUSES = new Set([408, 425, 429, 500, 502, 503, 504]);
|
|
6
|
+
function readStatus(error) {
|
|
7
|
+
if (!error || typeof error !== "object")
|
|
8
|
+
return undefined;
|
|
9
|
+
const candidate = error;
|
|
10
|
+
return typeof candidate.status === "number" ? candidate.status
|
|
11
|
+
: typeof candidate.statusCode === "number" ? candidate.statusCode
|
|
12
|
+
: undefined;
|
|
13
|
+
}
|
|
14
|
+
function readCode(error) {
|
|
15
|
+
if (!error || typeof error !== "object")
|
|
16
|
+
return undefined;
|
|
17
|
+
const candidate = error;
|
|
18
|
+
return typeof candidate.code === "string" ? candidate.code : undefined;
|
|
19
|
+
}
|
|
20
|
+
export function createGrokApiAdapter(ctx) {
|
|
21
|
+
return {
|
|
22
|
+
laneId: LANE_ID,
|
|
23
|
+
validateAuth() {
|
|
24
|
+
return ctx.xaiApiKey
|
|
25
|
+
? { ok: true }
|
|
26
|
+
: { ok: false, reason: "xAI API key missing" };
|
|
27
|
+
},
|
|
28
|
+
listModels() {
|
|
29
|
+
// Straight from the registry. A hand-written list here is exactly the
|
|
30
|
+
// drift the capability registry was built to remove.
|
|
31
|
+
return getProvider(LANE_ID).models;
|
|
32
|
+
},
|
|
33
|
+
normalizeError(error) {
|
|
34
|
+
const status = readStatus(error);
|
|
35
|
+
const rawCode = readCode(error);
|
|
36
|
+
const message = error instanceof Error ? error.message
|
|
37
|
+
: typeof error === "string" ? error
|
|
38
|
+
: "xAI request failed";
|
|
39
|
+
const code = !ERROR_PREFIX
|
|
40
|
+
? rawCode ?? "UNKNOWN"
|
|
41
|
+
: rawCode?.startsWith(ERROR_PREFIX)
|
|
42
|
+
? rawCode
|
|
43
|
+
: rawCode
|
|
44
|
+
? `${ERROR_PREFIX}${rawCode}`
|
|
45
|
+
: `${ERROR_PREFIX}UNKNOWN`;
|
|
46
|
+
const retryable = status === undefined ? false : RETRYABLE_STATUSES.has(status);
|
|
47
|
+
return {
|
|
48
|
+
code,
|
|
49
|
+
message,
|
|
50
|
+
...(status === undefined ? {} : { status }),
|
|
51
|
+
retryable,
|
|
52
|
+
};
|
|
53
|
+
},
|
|
54
|
+
};
|
|
55
|
+
}
|
|
@@ -7,131 +7,86 @@ export function isGrokRequest(request) {
|
|
|
7
7
|
return request.provider === "grok" || request.provider === "grok-api";
|
|
8
8
|
}
|
|
9
9
|
async function prepareGrokClassic(ctx, request) {
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
return { kind: "single", value };
|
|
43
|
-
}
|
|
44
|
-
catch (error) {
|
|
45
|
-
throw error;
|
|
46
|
-
} // Caller owns lifecycle and the existing error envelope.
|
|
47
|
-
} };
|
|
48
|
-
}
|
|
49
|
-
catch (error) {
|
|
50
|
-
throw error;
|
|
51
|
-
}
|
|
10
|
+
const { provider: activeProvider, prompt: generationPrompt, requestId } = request;
|
|
11
|
+
const { model: imageModel, quality, size: effectiveSize, webSearchEnabled } = request.options;
|
|
12
|
+
const grokRefs = request.providerUrl
|
|
13
|
+
? [{ b64: "", url: request.providerUrl, declaredMime: "image/png", detectedMime: "image/png" }, ...request.references]
|
|
14
|
+
: request.references;
|
|
15
|
+
// Keep classic's once-per-batch key and shared plan capture before any image attempt.
|
|
16
|
+
const grokDirectApiKey = activeProvider === "grok-api" ? ctx.xaiApiKey : undefined;
|
|
17
|
+
const sharedGrokPlan = await planGrokImage(generationPrompt, ctx, {
|
|
18
|
+
model: resolveGrokQualityModel(imageModel, quality),
|
|
19
|
+
size: effectiveSize,
|
|
20
|
+
signal: request.signal,
|
|
21
|
+
requestId,
|
|
22
|
+
referenceCount: grokRefs.length,
|
|
23
|
+
references: grokRefs,
|
|
24
|
+
directApiKey: grokDirectApiKey,
|
|
25
|
+
backgroundConstraint: request.backgroundConstraint,
|
|
26
|
+
webSearchEnabled,
|
|
27
|
+
});
|
|
28
|
+
return { execute: async () => {
|
|
29
|
+
const grokModel = resolveGrokQualityModel(imageModel, quality);
|
|
30
|
+
const value = await generateViaGrok(generationPrompt, ctx, {
|
|
31
|
+
model: grokModel,
|
|
32
|
+
size: effectiveSize,
|
|
33
|
+
signal: request.signal,
|
|
34
|
+
requestId,
|
|
35
|
+
plannedPrompt: sharedGrokPlan?.prompt,
|
|
36
|
+
webSearchCalls: sharedGrokPlan?.webSearchCalls,
|
|
37
|
+
references: grokRefs,
|
|
38
|
+
directApiKey: grokDirectApiKey,
|
|
39
|
+
});
|
|
40
|
+
return { kind: "single", value };
|
|
41
|
+
} };
|
|
52
42
|
}
|
|
53
43
|
function prepareGrokNode(ctx, request) {
|
|
54
44
|
// The outer execution boundary checks current presence; retries retain this key.
|
|
55
45
|
const grokDirectApiKey = request.provider === "grok-api" ? ctx.xaiApiKey : undefined;
|
|
56
46
|
return { execute: async () => {
|
|
57
|
-
|
|
58
|
-
return { kind: "single", value: await executeGrokNode(ctx, request, grokDirectApiKey) };
|
|
59
|
-
}
|
|
60
|
-
catch (error) {
|
|
61
|
-
throw error;
|
|
62
|
-
} // The caller owns retries and normalization.
|
|
47
|
+
return { kind: "single", value: await executeGrokNode(ctx, request, grokDirectApiKey) };
|
|
63
48
|
} };
|
|
64
49
|
}
|
|
65
50
|
async function executeGrokNode(ctx, request, grokDirectApiKey) {
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
});
|
|
76
|
-
}
|
|
77
|
-
catch (error) {
|
|
78
|
-
throw error;
|
|
79
|
-
}
|
|
51
|
+
const { sourceImage: parentB64, prompt: generationPrompt, references, requestId, signal, options } = request;
|
|
52
|
+
const { model, size, webSearchEnabled } = options;
|
|
53
|
+
const refsForRequest = request.contextMode === "parent-only" ? [] : references;
|
|
54
|
+
return await generateViaGrok(generationPrompt, ctx, {
|
|
55
|
+
model, size, requestId, signal,
|
|
56
|
+
references: toGrokReferences(parentB64, refsForRequest),
|
|
57
|
+
directApiKey: grokDirectApiKey,
|
|
58
|
+
webSearchEnabled,
|
|
59
|
+
});
|
|
80
60
|
}
|
|
81
61
|
async function executeGrokEdit(ctx, request) {
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
});
|
|
89
|
-
}
|
|
90
|
-
catch (error) {
|
|
91
|
-
throw error;
|
|
92
|
-
}
|
|
62
|
+
const { provider, rawPrompt, sourceImage, signal, requestId, options } = request;
|
|
63
|
+
const directApiKey = provider === "grok-api" ? ctx.xaiApiKey : undefined;
|
|
64
|
+
return await editViaGrok(rawPrompt, sourceImage, ctx, {
|
|
65
|
+
model: resolveGrokQualityModel(options.model, options.quality),
|
|
66
|
+
size: options.size, signal, requestId, directApiKey,
|
|
67
|
+
});
|
|
93
68
|
}
|
|
94
69
|
async function executeGrokMultimode(ctx, request, progress) {
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
});
|
|
106
|
-
}
|
|
107
|
-
catch (error) {
|
|
108
|
-
throw error;
|
|
109
|
-
}
|
|
70
|
+
const { provider, prompt, references, signal, requestId, options, maxImages } = request;
|
|
71
|
+
const directApiKey = provider === "grok-api" ? ctx.xaiApiKey : undefined;
|
|
72
|
+
const grokRefs = request.providerUrl
|
|
73
|
+
? [{ b64: "", url: request.providerUrl }, ...references] : references;
|
|
74
|
+
return await generateMultimodeViaGrok(prompt, ctx, {
|
|
75
|
+
model: resolveGrokQualityModel(options.model, options.quality), maxImages,
|
|
76
|
+
size: options.size, signal, requestId, references: grokRefs, directApiKey,
|
|
77
|
+
onFinalImage: progress.onFinalImage,
|
|
78
|
+
webSearchEnabled: options.webSearchEnabled,
|
|
79
|
+
});
|
|
110
80
|
}
|
|
111
81
|
export async function prepareGrokExecution(ctx, request, progress = {}) {
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
throw error;
|
|
122
|
-
} // Route owns failure normalization and job cleanup.
|
|
123
|
-
} };
|
|
124
|
-
case "multimode": return { execute: async () => {
|
|
125
|
-
try {
|
|
126
|
-
return { kind: "sequence", value: await executeGrokMultimode(ctx, request, progress) };
|
|
127
|
-
}
|
|
128
|
-
catch (error) {
|
|
129
|
-
throw error;
|
|
130
|
-
} // Caller owns partial-timeout recovery.
|
|
131
|
-
} };
|
|
132
|
-
}
|
|
133
|
-
}
|
|
134
|
-
catch (error) {
|
|
135
|
-
throw error;
|
|
82
|
+
switch (request.surface) {
|
|
83
|
+
case "classic": return await prepareGrokClassic(ctx, request);
|
|
84
|
+
case "node": return prepareGrokNode(ctx, request);
|
|
85
|
+
case "edit": return { execute: async () => {
|
|
86
|
+
return { kind: "single", value: await executeGrokEdit(ctx, request) };
|
|
87
|
+
} };
|
|
88
|
+
case "multimode": return { execute: async () => {
|
|
89
|
+
return { kind: "sequence", value: await executeGrokMultimode(ctx, request, progress) };
|
|
90
|
+
} };
|
|
136
91
|
}
|
|
137
92
|
}
|
|
@@ -1,8 +1,14 @@
|
|
|
1
|
+
import { createApiAdapter } from "./api.js";
|
|
2
|
+
import { createGrokApiAdapter } from "./grok-api.js";
|
|
3
|
+
import { createGeminiApiAdapter } from "./gemini-api.js";
|
|
1
4
|
import { createAtlasCloudAdapter } from "./atlascloud.js";
|
|
2
5
|
import { createComfyAdapter } from "./comfy.js";
|
|
3
6
|
import { createMinimaxAdapter } from "./minimax.js";
|
|
4
7
|
import { createNaiAdapter } from "./nai.js";
|
|
5
8
|
const ADAPTER_FACTORIES = {
|
|
9
|
+
api: createApiAdapter,
|
|
10
|
+
"grok-api": createGrokApiAdapter,
|
|
11
|
+
"gemini-api": createGeminiApiAdapter,
|
|
6
12
|
minimax: createMinimaxAdapter,
|
|
7
13
|
atlascloud: createAtlasCloudAdapter,
|
|
8
14
|
comfy: createComfyAdapter,
|
|
@@ -1,3 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* MiniMax adapter: readiness, registry models, errors and image execution surfaces.
|
|
3
|
+
* The existing image adapter retains transport and provider protocol ownership.
|
|
4
|
+
*/
|
|
5
|
+
import { generateViaMinimax } from "../../minimaxImageAdapter.js";
|
|
6
|
+
import { detectImageMimeFromB64 } from "../../refs.js";
|
|
7
|
+
import { requireRuntimeContext } from "../../runtimeContext.js";
|
|
1
8
|
import { getProvider } from "../registry.js";
|
|
2
9
|
const LANE_ID = "minimax";
|
|
3
10
|
const ERROR_PREFIX = "MINIMAX_";
|
|
@@ -28,6 +35,7 @@ function readCode(error) {
|
|
|
28
35
|
export function createMinimaxAdapter(ctx) {
|
|
29
36
|
return {
|
|
30
37
|
laneId: LANE_ID,
|
|
38
|
+
prepareImageExecution: prepareLaneImageExecution,
|
|
31
39
|
validateAuth() {
|
|
32
40
|
// Presence only. MiniMax publishes no key prefix or length rule, so a
|
|
33
41
|
// format check would invent one and reject valid keys.
|
|
@@ -61,3 +69,58 @@ export function createMinimaxAdapter(ctx) {
|
|
|
61
69
|
},
|
|
62
70
|
};
|
|
63
71
|
}
|
|
72
|
+
function prepareClassic(ctx, request) {
|
|
73
|
+
const { prompt: generationPrompt, requestId } = request;
|
|
74
|
+
const { model: imageModel, size: effectiveSize } = request.options;
|
|
75
|
+
// Capture scalars at prepare; ctx, refs, signal and lane options stay live.
|
|
76
|
+
return { execute: async () => {
|
|
77
|
+
const value = await generateViaMinimax(generationPrompt, requireRuntimeContext(ctx), {
|
|
78
|
+
model: imageModel, size: effectiveSize, signal: request.signal,
|
|
79
|
+
requestId, references: request.references,
|
|
80
|
+
});
|
|
81
|
+
return { kind: "single", value };
|
|
82
|
+
} };
|
|
83
|
+
}
|
|
84
|
+
function prepareNode(ctx, request) {
|
|
85
|
+
return { execute: async () => {
|
|
86
|
+
const { sourceImage: parentB64, rawPrompt: prompt, references, requestId, signal, options } = request;
|
|
87
|
+
const { model, size } = options;
|
|
88
|
+
const value = await generateViaMinimax(parentB64 ? `Edit this image: ${prompt}` : prompt, requireRuntimeContext(ctx), {
|
|
89
|
+
model, size, signal, requestId,
|
|
90
|
+
references: parentB64
|
|
91
|
+
? [{ b64: parentB64, declaredMime: null, detectedMime: null }, ...references]
|
|
92
|
+
: references,
|
|
93
|
+
});
|
|
94
|
+
return { kind: "single", value };
|
|
95
|
+
} };
|
|
96
|
+
}
|
|
97
|
+
function prepareEdit(ctx, request) {
|
|
98
|
+
return { execute: async () => {
|
|
99
|
+
const { prompt, sourceImage, signal, requestId, options } = request;
|
|
100
|
+
const references = [{ b64: sourceImage, declaredMime: null, detectedMime: detectImageMimeFromB64(sourceImage) || null }];
|
|
101
|
+
const editPrompt = `Edit this image: ${prompt}`;
|
|
102
|
+
const params = { model: options.model, size: options.size, signal, ...(requestId !== undefined ? { requestId } : {}), references };
|
|
103
|
+
const value = await generateViaMinimax(editPrompt, ctx, params);
|
|
104
|
+
return { kind: "single", value };
|
|
105
|
+
} };
|
|
106
|
+
}
|
|
107
|
+
function prepareMultimode(ctx, request) {
|
|
108
|
+
return { execute: async () => {
|
|
109
|
+
const { rawPrompt, references, signal, requestId, options } = request;
|
|
110
|
+
const params = { model: options.model, size: options.size, signal, ...(requestId !== undefined ? { requestId } : {}), references };
|
|
111
|
+
const result = await generateViaMinimax(rawPrompt, ctx, params);
|
|
112
|
+
// Preserve the projection; the caller owns the final persistence sweep.
|
|
113
|
+
return { kind: "sequence", value: {
|
|
114
|
+
images: [{ b64: result.b64, ...(result.revisedPrompt !== undefined ? { revisedPrompt: result.revisedPrompt } : {}) }],
|
|
115
|
+
usage: result.usage, webSearchCalls: result.webSearchCalls,
|
|
116
|
+
} };
|
|
117
|
+
} };
|
|
118
|
+
}
|
|
119
|
+
async function prepareLaneImageExecution(ctx, request, _progress) {
|
|
120
|
+
switch (request.surface) {
|
|
121
|
+
case "classic": return prepareClassic(ctx, request);
|
|
122
|
+
case "node": return prepareNode(ctx, request);
|
|
123
|
+
case "edit": return prepareEdit(ctx, request);
|
|
124
|
+
case "multimode": return prepareMultimode(ctx, request);
|
|
125
|
+
}
|
|
126
|
+
}
|
|
@@ -1,3 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* NovelAI adapter: readiness, registry models, errors and image execution surfaces.
|
|
3
|
+
* The existing image adapter retains transport and provider protocol ownership.
|
|
4
|
+
*/
|
|
5
|
+
import { generateViaNai } from "../../naiImageAdapter.js";
|
|
6
|
+
import { requireRuntimeContext } from "../../runtimeContext.js";
|
|
1
7
|
import { getProvider } from "../registry.js";
|
|
2
8
|
const LANE_ID = "nai";
|
|
3
9
|
const ERROR_PREFIX = "NAI_";
|
|
@@ -25,6 +31,7 @@ function readCode(error) {
|
|
|
25
31
|
export function createNaiAdapter(ctx) {
|
|
26
32
|
return {
|
|
27
33
|
laneId: LANE_ID,
|
|
34
|
+
prepareImageExecution: prepareLaneImageExecution,
|
|
28
35
|
validateAuth() {
|
|
29
36
|
// Presence only. NovelAI accepts a persistent token or a session JWT and
|
|
30
37
|
// publishes no prefix or length rule, so a format check would invent one.
|
|
@@ -58,3 +65,51 @@ export function createNaiAdapter(ctx) {
|
|
|
58
65
|
},
|
|
59
66
|
};
|
|
60
67
|
}
|
|
68
|
+
function prepareClassic(ctx, request) {
|
|
69
|
+
const { prompt: generationPrompt, requestId } = request;
|
|
70
|
+
const { model: imageModel, size: effectiveSize } = request.options;
|
|
71
|
+
// Capture scalars at prepare; ctx, refs, signal and lane options stay live.
|
|
72
|
+
return { execute: async () => {
|
|
73
|
+
// Text-to-image only: the caller already refused references.
|
|
74
|
+
const value = await generateViaNai(generationPrompt, requireRuntimeContext(ctx), {
|
|
75
|
+
model: imageModel, size: effectiveSize, signal: request.signal, requestId,
|
|
76
|
+
// Reuse the same normalized options as node and multimode.
|
|
77
|
+
...request.nai,
|
|
78
|
+
});
|
|
79
|
+
return { kind: "single", value };
|
|
80
|
+
} };
|
|
81
|
+
}
|
|
82
|
+
function prepareNode(ctx, request) {
|
|
83
|
+
return { execute: async () => {
|
|
84
|
+
const { rawPrompt: prompt, requestId, signal, options } = request;
|
|
85
|
+
const { model, size } = options;
|
|
86
|
+
const value = await generateViaNai(prompt, requireRuntimeContext(ctx), {
|
|
87
|
+
model, size, signal, requestId, ...request.nai,
|
|
88
|
+
});
|
|
89
|
+
return { kind: "single", value };
|
|
90
|
+
} };
|
|
91
|
+
}
|
|
92
|
+
function prepareMultimode(ctx, request) {
|
|
93
|
+
return { execute: async () => {
|
|
94
|
+
const { rawPrompt, signal, requestId, options } = request;
|
|
95
|
+
// Text-to-image only: admission rejects references before startJob.
|
|
96
|
+
const result = await generateViaNai(rawPrompt, ctx, {
|
|
97
|
+
model: options.model, size: options.size, signal, requestId, ...request.nai,
|
|
98
|
+
});
|
|
99
|
+
// Preserve the projection; the caller owns the final persistence sweep.
|
|
100
|
+
return { kind: "sequence", value: {
|
|
101
|
+
images: [{ b64: result.b64, ...(result.revisedPrompt !== undefined ? { revisedPrompt: result.revisedPrompt } : {}) }],
|
|
102
|
+
usage: result.usage, webSearchCalls: result.webSearchCalls,
|
|
103
|
+
} };
|
|
104
|
+
} };
|
|
105
|
+
}
|
|
106
|
+
async function prepareLaneImageExecution(ctx, request, _progress) {
|
|
107
|
+
switch (request.surface) {
|
|
108
|
+
case "classic": return prepareClassic(ctx, request);
|
|
109
|
+
case "node": return prepareNode(ctx, request);
|
|
110
|
+
case "edit": return { execute: async () => {
|
|
111
|
+
throw new Error(`Unsupported legacy edit provider: ${request.provider}`);
|
|
112
|
+
} };
|
|
113
|
+
case "multimode": return prepareMultimode(ctx, request);
|
|
114
|
+
}
|
|
115
|
+
}
|
|
@@ -45,12 +45,7 @@ function prepareOpenaiClassic(ctx, request, _progress) {
|
|
|
45
45
|
});
|
|
46
46
|
};
|
|
47
47
|
return { execute: async () => {
|
|
48
|
-
|
|
49
|
-
return { kind: "single", value: await generateOne() };
|
|
50
|
-
}
|
|
51
|
-
catch (error) {
|
|
52
|
-
throw error;
|
|
53
|
-
} // Caller owns lifecycle and the existing error envelope.
|
|
48
|
+
return { kind: "single", value: await generateOne() };
|
|
54
49
|
} };
|
|
55
50
|
}
|
|
56
51
|
async function executeOpenaiNode(ctx, request, progress) {
|
|
@@ -83,36 +78,16 @@ async function executeOpenaiMultimode(ctx, request, progress) {
|
|
|
83
78
|
...(progress.onFinalImage !== undefined ? { onFinalImage: progress.onFinalImage } : {}), signal });
|
|
84
79
|
}
|
|
85
80
|
export async function prepareOpenaiExecution(ctx, request, progress = {}) {
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
case "edit": return { execute: async () => {
|
|
98
|
-
try {
|
|
99
|
-
return { kind: "single", value: await executeOpenaiEdit(ctx, request) };
|
|
100
|
-
}
|
|
101
|
-
catch (error) {
|
|
102
|
-
throw error;
|
|
103
|
-
} // Route owns failure normalization and job cleanup.
|
|
104
|
-
} };
|
|
105
|
-
case "multimode": return { execute: async () => {
|
|
106
|
-
try {
|
|
107
|
-
return { kind: "sequence", value: await executeOpenaiMultimode(ctx, request, progress) };
|
|
108
|
-
}
|
|
109
|
-
catch (error) {
|
|
110
|
-
throw error;
|
|
111
|
-
} // Caller owns partial-timeout recovery.
|
|
112
|
-
} };
|
|
113
|
-
}
|
|
114
|
-
}
|
|
115
|
-
catch (error) {
|
|
116
|
-
throw error;
|
|
81
|
+
switch (request.surface) {
|
|
82
|
+
case "classic": return prepareOpenaiClassic(ctx, request, progress);
|
|
83
|
+
case "node": return { execute: async () => {
|
|
84
|
+
return { kind: "single", value: await executeOpenaiNode(ctx, request, progress) };
|
|
85
|
+
} };
|
|
86
|
+
case "edit": return { execute: async () => {
|
|
87
|
+
return { kind: "single", value: await executeOpenaiEdit(ctx, request) };
|
|
88
|
+
} };
|
|
89
|
+
case "multimode": return { execute: async () => {
|
|
90
|
+
return { kind: "sequence", value: await executeOpenaiMultimode(ctx, request, progress) };
|
|
91
|
+
} };
|
|
117
92
|
}
|
|
118
93
|
}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { getProviderAdapter } from "../adapters/index.js";
|
|
1
2
|
import { assertDirectGrokKey } from "./admission.js";
|
|
2
3
|
import { isLegacyExecutionRequest, prepareLegacyImageExecution } from "./legacy.js";
|
|
3
4
|
import { isOpenaiRequest, prepareOpenaiExecution } from "../adapters/openaiExecution.js";
|
|
@@ -10,25 +11,18 @@ function prepareSelected(ctx, request, progress) {
|
|
|
10
11
|
return prepareGrokExecution(ctx, request, progress);
|
|
11
12
|
if (isGoogleRequest(request))
|
|
12
13
|
return prepareGoogleExecution(ctx, request, progress);
|
|
14
|
+
const adapter = getProviderAdapter(ctx, request.provider);
|
|
15
|
+
if (adapter?.prepareImageExecution)
|
|
16
|
+
return adapter.prepareImageExecution(ctx, request, progress);
|
|
13
17
|
if (isLegacyExecutionRequest(request))
|
|
14
18
|
return prepareLegacyImageExecution(ctx, request, progress);
|
|
15
19
|
throw new Error("Unreachable image execution provider");
|
|
16
20
|
}
|
|
17
21
|
export async function prepareImageExecution(ctx, request, progress) {
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
return await prepared.execute();
|
|
25
|
-
}
|
|
26
|
-
catch (error) {
|
|
27
|
-
throw error;
|
|
28
|
-
} // Preserve transport identity; callers own normalization.
|
|
29
|
-
} };
|
|
30
|
-
}
|
|
31
|
-
catch (error) {
|
|
32
|
-
throw error;
|
|
33
|
-
}
|
|
22
|
+
assertDirectGrokKey(ctx, request.provider);
|
|
23
|
+
const prepared = await prepareSelected(ctx, request, progress);
|
|
24
|
+
return { execute: async () => {
|
|
25
|
+
assertDirectGrokKey(ctx, request.provider);
|
|
26
|
+
return await prepared.execute();
|
|
27
|
+
} };
|
|
34
28
|
}
|