Commit Graph

27 Commits

Author SHA1 Message Date
pyranota
3af3fc898b feat(python): Multiple runtime versions (#4579)
* feat: Handle `pip install` by `uv`

Dirty and untested, but already something working

* Integrate with NSJAIL and prepare fallbacks

* Refactor fallback
no_uv disable compile and install
where no_uv_install and no_uv_compile are a bit more specific

* Remove `--disable-pip-version-check`
Reason:
   warning: pip's `--disable-pip-version-check` has no effect

* Fix backend compilation error

* Pip fallback overwrite UV's cache

* Initially refactor cache (No S3)

* Support S3

* Remove unused import

* Handle flags for NSJAIL

* Return deleted flag

* Remove verbose mode and enable link-mode=copy

* Granural migration of lockfiles

Before i realized we dont need it :)

* Initial draft (not-working)

* Add fallback

* Fix bug preventing uv from installing deps

'\n' - Love it

* Add verbosity indicator

* Iterate on feature
- Added instance python version
- Rework logic

* Fix EE build error
error[E0599]: no method named `iter` found for tuple `(PyVersion, std::vec::Vec<std::string::String>)` in the current scope

* Support S3

* Support NSJAIL

* Refactor `get_python`

* Make NSJAIL work [Unsafe]

config file missed /proc mount causing install phase to fail

* Trigger CI

* Clean up

* Make Actions build it

* Trigger CI #2

* Update Dockerfile and clean up

* Change fallbacks
now there is only no_uv and NOUV

* Expose INSTANCE_PYTHON_VERSION through env variable

* Change namings

* Include py-version to requirements.in

Also add comments and make code much cleaner

* Use const for python installation dir

It was hardcoded before

* Pin preinstalled version

* Update python_executor.rs

* Up to date branch

* Create PYCACHE dirs

TODO: PY_TAR_DIRS

* Fix after merge

* Make it safer

* Implement USE_SYSTEM_PYTHON

* Implement latest_stable option

* Load INSTANCE_PYTHON_VERSION on startup

* Check for multiple annotations used

* Fix Latest Stable button not pressed if selected

* Proper error handling for conflict on multiple annotations

* Fix merge conflicts

* Preinstall 3.11 and Latest Stable

* Preinstall latest stable in non-blocking manner

* Fix Warning

* Gate preinstall logic behind "python" feature

* Handle raw_deps properly

* Make it work with nsjail

* Revert docker-image.yml

* Revert Dockerfile

* Cleanup + Fixing

* Add windows support

---------

Co-authored-by: Ruben Fiszel <ruben@windmill.dev>
2025-01-24 11:42:48 +01:00
Lucas Abel
73e6520312 cache: improve error reporting (#4940) 2024-12-17 19:44:51 +00:00
Lucas Abel
0a65b90049 feat(cache): implement flow node caching (#4808)
* feat(cache): implement flow node caching

* feat(cache): implement script caching

* feat(cache): improve cache
2024-11-29 09:35:00 +01:00
dieriba
bcc96d7e6a feat: Support mistral anthropic for ai (#4692)
* wip: openai proxy and other ai proxy integration

* fixing migration script

* wip: support different ai provider in front, fix proxy openai

* wip: adding frontend ai provider

* updated copilot types

* wip: working on anthropic integration

* done AI proxy front

* adding new type and support for anthropic

* updating gitignore

* adding streaming response

* added streaming prompt

* push lib/gen

* wip: fixing anthropic

* anthropic fully supported

* fix backend missing var error and fully support stream event for anthropic

* remove gen directory

* fixing openapi file

* add support for mistral, and update create workspace components

* remove deref.json

* remove package-json

* openapi

* fix ui enable code

* added utility function for init workspace ai provider

* fix workspace switch bug

* update anthropic property and fixed frontend error

* fix workspace settings

* update error message and fix typo migration file

* chore: update openapi file

* fix dev file

* add .sqlx

* all

* update sqlx

---------

Co-authored-by: dieriba <t.dieriba@gmail.com>
Co-authored-by: Ruben Fiszel <ruben@windmill.dev>
Co-authored-by: Ruben Fiszel <ruben@rubenfiszel.com>
2024-11-14 14:24:35 +01:00
pyranota
d3e0b1c636 feat: Allow setProgress and getProgress from within the script (#4400)
* Allow setting progress explicitly from script body.

This feature exposes:
 * `getProgress`
 * `setProgress`
 * `incProgress`

API in TypeScript client (python is coming soon).

NOTE: Progress cannot be out of range 0..100 and cannot decrease.

With exposed APIs there is also UI changes, so progress can be shown for individual jobs as well.

For optimization reasons, jobs start to ask for progress only after N-seconds of execution.

* feat: Add `shell.nix`

If you dont have anything but nix, dont worry, run nix-shell in root, or activate with direnv and get all needed dependencies

NOTE: You will still need docker

* feat: Add `dev.nu` to typescript client

Little helper function, allowing developer to work on ts client easier.

To use:
  `./dev.nu watch`

Now add import of windmill in body of your script and `//nobundle` on top of the file

Edit ts client in your favourite editor and hit save. Script will do the rest.

* Cleanup files

* Fix: Failed to deserialize query string: missing field `get_progress`

* perf: Implement non-naive polling mechanism for getting job progress

* Add independant delay for getProgress

Problem in `TestJobLoader`:

There should be 2 delays:

    One until we find our first progress (every 5s)
    Once we found our first progress, we can do it every second

* nit: Use `query_scalar!` instead of `query_as`

* Fix: Sql error, no rows returned by a query that expected to return at least one row

* refactor: Remove global CSS for JobProgressBar

* Change UI for progress of flow subjobs

* Replace `Step 1` with `Running` in ProgressBar for individual jobs

* Remove `incProgress`

incProgress is not very usefull and error-prone

* perf: Set metric only for jobs that are actually using it

(https://github.com/windmill-labs/windmill/pull/4373#discussion_r1759843773)

* Offload registering progress from clients to server

* Add `jobId?` argument to typescript-client's `setProgress` and `getProgress`

Allows to set progress of other jobs and flows,
if jobId specified, than flow id will be inferred automatically.

Could be used by SDK.

* Add `Error::MetricNotFound` for better error handling

* Fix: Make `JobProgressBar` display in red when failed

* Add persistant progress bar

Now you can reload the page after job is done and progress will be still there

* Allow succeeded individual job's progress bar stick to 100%

* Add python support 

* nit: Remove usage of undefined variable in python-client

* Add `async` in ts client (for error handling)

* nit(frontend): Remove unused import

* Dont load JobProgressBar when it is not needed

* nit: npm check fix

* cargo sqlx prepare

* fix sqlx

---------

Co-authored-by: Ruben Fiszel <ruben@rubenfiszel.com>
2024-09-18 01:16:19 +02:00
Ruben Fiszel
e08b9fbcf1 nit test fix 2024-06-18 09:28:03 +02:00
Ruben Fiszel
f2f3333e2d fix: add more debug logs around http client errors 2024-06-18 08:54:55 +02:00
HugoCasa
4c3cb5f9e7 fix: can cancel only if can disable schedule + stop worker on force cancel + soft cancel job parent on job cancel (#3670)
* fix: can cancel only if can disable schedule + stop worker on force cancel + cancel job parents

* fix: sqlx build

* fix: flow reschedule check + soft cancel only direct parent

* fix: sqlx prepare

* fix: only soft cancel parent if force cancel and job is a flow step
2024-05-07 17:17:43 +02:00
HugoCasa
cb132671d3 feat: critical error side channel (#3625)
* feat: critical error side channel

* feat: trigger workspace error handler or critical channel on schedule error handling failure

* fix: build

* feat: finish critical error side channel

* feat: channels instead of just emails + move to EE

* fix: remove superfluous func

* fix: nits + ee ref

* fix: open source build

* fix: nits

* chore: update ee ref
2024-05-02 20:21:23 +02:00
Ruben Fiszel
16b3b659e9 chore: update deps 2024-03-21 13:37:17 +01:00
Ruben Fiszel
ee961a31f0 feat: implement s3 oidc support + azure workload identity support 2024-03-08 22:51:16 +01:00
Ruben Fiszel
82c8b1d1dd chore: fasten compilation time 2024-02-24 16:29:35 +01:00
Guillaume Bouvignies
92931dbe71 fix: go preload wmill dependencies (#3149)
* fix: go preload wmill dependencies

* update comment
2024-02-05 18:13:59 +01:00
Ruben Fiszel
46f4d1bc46 fix: improve error message format for logs 2024-01-18 13:10:58 +01:00
Ruben Fiszel
51929d2bd7 fix: make some eval onDemandOnly 2024-01-18 08:22:24 +01:00
Guillaume Bouvignies
36db047a86 feat: Custom content type for script and flow results (#2767) 2023-12-04 13:19:40 +01:00
Ruben Fiszel
da842a05a1 fix: windmill_status_code script now properly return + script bash default arg 2023-10-21 02:32:47 +02:00
Guillaume Bouvignies
5f5604a2aa feat: Approval step optionally require logged-in user (#2462)
* backend auth user validation

* Approval page suggesting login

* BE impl to support groups

* Add FE for setting suspend on flow step

* handle admin as a specific case

* restrict feature to entperprise only

* group names as static input transforms

* Suspend settings with tabs

* Update enterprise edition check

* cleanup

---------

Co-authored-by: Ruben Fiszel <ruben@windmill.dev>
2023-10-20 00:20:20 +02:00
Ruben Fiszel
e051451cd6 fix: canceling jobs 2023-08-27 14:40:20 +02:00
HugoCasa
cd8df1d254 fix: script fix no resource + error handling (#2053) 2023-08-14 12:03:23 +02:00
Ruben Fiszel
35ea4f5f04 feat: add workspace specific tags 2023-07-26 17:33:46 +02:00
Ruben Fiszel
31aee89af8 feat: add update checker on version info 2023-06-22 18:12:45 +02:00
Ruben Fiszel
c2666f7d7c feat(backend): add windmill_status_code to run_wait_result 2023-05-09 02:46:53 +02:00
Ruben Fiszel
7276244d68 improve cancel approval error message 2023-01-24 12:11:39 +01:00
Ruben Fiszel
c7f6b1870e update axum 2023-01-11 08:19:20 +01:00
Ruben Fiszel
c6b868e6a5 fix: implement require admin differently than unauthorized 2022-11-02 12:18:44 +01:00
Kai Jellinghaus
6263e90735 restructure the entire backend layout using workspaces (#815) 2022-10-29 11:58:06 +02:00