Address automated review feedback on the always-on assets change:
- setup_database(): on DB init failure or missing dependencies, call
disable_assets_routes() + asset_seeder.disable() so /api/assets/* returns a
clean 503 instead of 500s against an uninitialized DB (restores the fail-safe
the removed else-branch used to provide).
- feature_flags: derive the advertised 'assets' capability from live backend
availability instead of hardcoding True, so clients degrade gracefully.
- cli_args: re-add --enable-assets as a hidden deprecated no-op so existing
launchers still passing the flag don't abort argparse.
- routes: add assets_enabled() accessor for the feature-flag derivation.
The asset system is now always on. Removes the --enable-assets opt-in
flag and the conditional registration it gated:
- Asset API routes are always registered (with the user manager)
- The background asset scanner always runs (hashing stays opt-in via
--enable-asset-hashing, default off — no new blake3 cost on a default launch)
- /upload/image asset registration and output enrichment always active
- The "assets" server feature flag is now unconditionally true
- A database-init failure degrades gracefully instead of hard-exiting,
matching the prior default-path behavior
* Support for async execution functions
This commit adds support for node execution functions defined as async. When
a node's execution function is defined as async, we can continue
executing other nodes while it is processing.
Standard uses of `await` should "just work", but people will still have
to be careful if they spawn actual threads. Because torch doesn't really
have async/await versions of functions, this won't particularly help
with most locally-executing nodes, but it does work for e.g. web
requests to other machines.
In addition to the execute function, the `VALIDATE_INPUTS` and
`check_lazy_status` functions can also be defined as async, though we'll
only resolve one node at a time right now for those.
* Add the execution model tests to CI
* Add a missing file
It looks like this got caught by .gitignore? There's probably a better
place to put it, but I'm not sure what that is.
* Add the websocket library for automated tests
* Add additional tests for async error cases
Also fixes one bug that was found when an async function throws an error
after being scheduled on a task.
* Add a feature flags message to reduce bandwidth
We now only send 1 preview message of the latest type the client can
support.
We'll add a console warning when the client fails to send a feature
flags message at some point in the future.
* Add async tests to CI
* Don't actually add new tests in this PR
Will do it in a separate PR
* Resolve unit test in GPU-less runner
* Just remove the tests that GHA can't handle
* Change line endings to UNIX-style
* Avoid loading model_management.py so early
Because model_management.py has a top-level `logging.info`, we have to
be careful not to import that file before we call `setup_logging`. If we
do, we end up having the default logging handler registered in addition
to our custom one.