* sandbox-sync-agent
* refactor: host pro as submodule
* chore: checkpoint host pro restructure
* refactor workspace test layout and startup init
* chore: update next turbopack setup
* chore: snapshot current work before actions fix
* chore: update pro submodule
* chore: point pro submodule url to upstream https
* fix: Dockerfile
* chore: update pro submodule
* ci: support private pro submodule token and skip fork jobs
* fix(ci): build sdk workspace deps before code-sandbox bundle
* fix(app): exclude vitest configs from production typecheck
* fix(app-image): build sdk packages before next build
* fix(ci): align dockerfiles with workspace sdk build flow
* chore(docker): upgrade node20 docker images to node24
* fix(ci): read admin coverage output path in pro test workflow
* fix(app-image): include next-i18next config and locale assets
* chore: update pro submodule
* chore: do not specify branch for submodule
* chore: remove most ts-nocheck sign
* chore: update pro submodule
* chore: remove sandbox-agent-sync package
* chore: do not modify "pushData" file logic
* fix: health check
* chore: restore dev axios proxy state
* fix: test-fastgpt report workflow
* fix: use valid vitest coverage action inputs
* feat(workflow): add loop run node with start/break sub-nodes
* fix(workflow): clear loop run resume state and polish interactions
* fix(workflow): harden loop run error paths and dedupe template registry
* fix(workflow): route loop run precheck errors through errorText and validate break reachability
* fix(workflow): fix loop run conditional validation and outer-node ref snapshot
* refactor: consolidate shared workflow usage and feedback collection helpers into dispatch/utils.ts
* feat(workflow): aggregate loop run iterations in response tree and polish editor/UI
* fix(workflow): i18n loop run errors and surface uncaught nested errors in chat
* fix(workflow): route node card delete button through onNodesChange
* fix(chat): recurse loopRun/parallelRun details when flattening responses
* fix(workflow): loop run resume stitching and PR review polish
* fix(workflow): loop run max-length boundary and resume isEntry leak
* fix(embedding): decode base64 embedding responses before vector processing
When a model's extra body config includes `encoding_format: "base64"`, the
embedding API returns a base64-encoded IEEE 754 little-endian float32 array
instead of a `number[]`. The previous code passed this raw string directly
to `formatVectors`, which called `.reduce()` on it and threw:
TypeError: a.reduce is not a function
Add `decodeEmbedding()` that detects base64 strings and decodes them to
`number[]` via `Buffer → Float32Array → Array.from()`, then use it in
`getVectorsByText` before calling `formatVectors`.
Fixes#6769
* perf: test
---------
Co-authored-by: octo-patch <octo-patch@github.com>
Co-authored-by: archer <545436317@qq.com>
The ali-oss `copy(name, sourceName)` API expects the destination as the
first argument and the source as the second. The previous implementation
passed an encoded sourceKey as the destination and targetKey as the source,
causing copy operations to attempt reading from the target path (which
does not exist yet) and writing to the source path (overwriting the original).
This bug caused custom plugin uploads to fail when using OSS storage, since
the plugin file could not be moved from the temp path to its final location.
Fixes#6787, #6648
Co-authored-by: octo-patch <octo-patch@github.com>