Commit Graph
6133 Commits
Author SHA1 Message Date
Ruben Fiszel d432cdbec1 split out windmill-mcp + pin tokio-utils 2026-01-09 06:16:26 +00:00
Ruben Fiszelandrubenfiszel 1ab07c28f2 chore(main): release 1.602.0 (#7469)
* chore(main): release 1.602.0

* Apply automatic changes

---------

Co-authored-by: rubenfiszel <275584+rubenfiszel@users.noreply.github.com>
2026-01-08 06:34:55 +00:00
Alexander Petric 0427b43860 fix: don't clear GOCACHE env in go runner and improve prewarming (#7521) 2026-01-08 06:31:07 +00:00
d30ef89a6c feat(python): restart installation OOM (#7507)
* use tini with unshare to preserve signals (e.g oom)

* fix ci

* ci as nsjail

* simplify

* fix flaky go integration test

* feat(python): restart installation OOM

Signed-off-by: pyranota <pyra@duck.com>

* follow ups

Signed-off-by: pyranota <pyra@duck.com>

* fix oom_score_adj

Signed-off-by: pyranota <pyra@duck.com>

---------

Signed-off-by: pyranota <pyra@duck.com>
Co-authored-by: Alexander Petric <alex@windmill.dev>
Co-authored-by: Alexander Petric <alpetric@users.noreply.github.com>
2026-01-08 06:30:15 +00:00
Diego Imbert 710987a422 Fix data table creds setup (#7516)
* fix wrong pg_creds

* revoke permissions
2026-01-08 06:25:59 +00:00
centdix 1bd20dc2c1 better explanations for ee files (#7519) 2026-01-08 03:24:31 +00:00
centdix a8e34de58d upgrade rmcp crate (#7518) 2026-01-07 16:02:51 +00:00
hugocasa 4763eda6b7 feat: give access to results in early stop expr (#7514)
* feat: give access to results in early stop expr

* nit
2026-01-07 16:06:56 +09:00
b31d8dffc3 feat(git-sync): sync jobs debouncing for greatly improved perf (#7489)
* feat(git-sync): sync jobs debouncing [merge-ee-first]

* add compat

* ee repo

Signed-off-by: pyranota <pyra@duck.com>

* nit

Signed-off-by: pyranota <pyra@duck.com>

* change is_script_meets_min_version

Signed-off-by: pyranota <pyra@duck.com>

* update version

Signed-off-by: pyranota <pyra@duck.com>

* chore: update ee-repo-ref to bc904859dd66c55ebad002e8526103c73de841cd

This commit updates the EE repository reference after PR #371 was merged in windmill-ee-private.

Previous ee-repo-ref: 346d38e91776e987f88866543adbf78a9c721073

New ee-repo-ref: bc904859dd66c55ebad002e8526103c73de841cd

Automated by sync-ee-ref workflow.

---------

Signed-off-by: pyranota <pyra@duck.com>
Co-authored-by: windmill-internal-app[bot] <windmill-internal-app[bot]@users.noreply.github.com>
Co-authored-by: Ruben Fiszel <ruben@windmill.dev>
2026-01-07 04:07:26 +00:00
Alexander Petric e9810e7795 fix: support polling for long duration queries in snowflake (#7511) 2026-01-07 08:00:46 +09:00
0f2b417ff5 feat: add Pydantic BaseModel and dataclass support for Python type inference (#7497)
* feat: add Pydantic BaseModel and dataclass support for Python type inference

- Add AST-based detection of Pydantic BaseModel inheritance patterns
- Add AST-based detection of @dataclass decorator (all variants)
- Implement recursive field schema extraction with type inference
- Add thread-safe stack-based module storage for nested parsing
- Add RAII cleanup guard to ensure memory safety on all code paths
- Add security limits: 200 fields max, 10 recursion levels max
- Add comprehensive test coverage: 3 new tests for Pydantic/dataclass
- Maintain 100% backward compatibility with existing type system

This enables ML/AI practitioners to use Pydantic models as function
parameters with automatic UI generation from model schemas.

Implementation highlights:
- Zero code execution: Pure AST analysis for safety
- Thread-safe: Stack-based storage prevents race conditions
- Memory-safe: RAII pattern guarantees cleanup
- Security-hardened: Field count and recursion depth limits
- Performance-optimized: Depth-limited recursion, lazy parsing

Test results: All 12 tests passing (9 existing + 3 new)

Closes #4700

🤖 Generated with Claude Code (https://claude.com/claude-code)

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>

* fix: improve Pydantic/dataclass parser robustness and error handling

This commit addresses critical bugs and improves error handling in the
Python parser for Pydantic BaseModel and dataclass support.

## Critical Fixes

1. **Thread-local storage RAII pattern**: Fixed bug where parse failures
   could leave the module stack in an inconsistent state. Now uses proper
   functional composition with .ok().map() to ensure cleanup always happens.

2. **Recursion depth warnings**: Added explicit warning messages when the
   recursion depth limit (10 levels) is reached during type extraction.
   Made the limit a named constant for clarity.

3. **Unsupported type warnings**: Added informative warning messages for
   unsupported type annotations (Union types and forward references) to
   help users understand why their types aren't being inferred.

## Improvements

- Added 10 comprehensive test cases covering:
  - Empty Pydantic models
  - List[T] and Optional[T] types
  - Dataclass with decorator arguments
  - Dict types
  - Regular classes (non-model types)
  - Invalid syntax handling
  - Datetime fields
  - Multiple model definitions
  - Nested models

- All 21 tests pass successfully

## Testing

Verified that:
- Parser handles malformed code gracefully
- RAII cleanup works correctly with early returns
- Warning messages are clear and actionable
- No memory leaks or panics

Closes #4700

* refactor: Separate Pydantic/dataclass code into dedicated module. Created src/pydantic_parser.rs with thread-local storage, model detection, and type extraction logic. Moved 12 Pydantic tests to tests/pydantic_tests.rs and removed duplicate code from lib.rs. All 21 tests passing.

* opti and publish

---------

Co-authored-by: Devdatta Talele <devtalele0@gmail.com>
Co-authored-by: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-01-06 18:48:04 +00:00
62bb11e297 feat: implement quiet mode to filter verbose logs (#7478)
* feat: implement quiet mode to filter verbose logs

Add QUIET_MODE environment variable (set to "true" or "1" to enable) that:
- Filters logs with the "windmill_verbose" target via tracing_init
- Increases frequency of periodic logs by 10x when enabled
- Marks per-job worker logs as verbose so they are suppressed in quiet mode

Key changes:
- Add QUIET_MODE lazy_static and VERBOSE_TARGET constant to tracing_init.rs
- Create create_targets_filter() helper that filters windmill_verbose target
- Mark periodic "still running" and "memory snapshot" logs with VERBOSE_TARGET
- Mark per-job "fetched job", "started handling", "job finished" logs as verbose
- Increase memory snapshot interval from every 10 ticks to every 100 ticks in quiet mode
- Increase "still running" log interval from every tick to every 10 ticks in quiet mode
- Add quiet mode notification in job logs

Closes #7477

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-authored-by: windmill-internal-app[bot] <windmill-internal-app[bot]@users.noreply.github.com>

* Update tracing_init.rs

* Update worker.rs

* Remove target from tracing info logs

---------

Co-authored-by: claude[bot] <41898282+claude[bot]@users.noreply.github.com>
Co-authored-by: windmill-internal-app[bot] <windmill-internal-app[bot]@users.noreply.github.com>
Co-authored-by: Ruben Fiszel <ruben@windmill.dev>
2026-01-06 18:38:58 +00:00
Pyraandwindmill-internal-app[bot] 1bbf8c251e nit: better logs for debouncing (#7501)
* nit: better logs for debouncing

Signed-off-by: pyranota <pyra@duck.com>

* ee ref

Signed-off-by: pyranota <pyra@duck.com>

* ee ref

Signed-off-by: pyranota <pyra@duck.com>

* remove default featrues

Signed-off-by: pyranota <pyra@duck.com>

* chore: update ee-repo-ref to ea468d0b673257c694203517b0c5df52d9cb70dd

This commit updates the EE repository reference after PR #373 was merged in windmill-ee-private.

Previous ee-repo-ref: 1196ee50bfdbc8c9fd5220d6e324334dd41293a5

New ee-repo-ref: ea468d0b673257c694203517b0c5df52d9cb70dd

Automated by sync-ee-ref workflow.

---------

Signed-off-by: pyranota <pyra@duck.com>
Co-authored-by: windmill-internal-app[bot] <windmill-internal-app[bot]@users.noreply.github.com>
2026-01-06 18:16:53 +00:00
Alexander PetricandRuben Fiszel 1fce09cf70 fix: use tini with unshare to preserve signals (e.g oom) (#7471)
* use tini with unshare to preserve signals (e.g oom)

* fix ci

* ci as nsjail

* simplify

* fix flaky go integration test

---------

Co-authored-by: Ruben Fiszel <ruben@windmill.dev>
2026-01-06 18:08:47 +00:00
hugocasa cf90bd4676 fix: make workspace id change faster and add 100k jobs limit (#7500) 2026-01-06 18:07:51 +00:00
Pyra 3cf5604d7b fix: properly construct concurrency key (#7504)
Signed-off-by: pyranota <pyra@duck.com>
2026-01-06 18:03:07 +00:00
Pyra 7411e6169a fix(csharp): make s3 path arch specific (#7505)
* fix(csharp): make s3 path arch specific

Signed-off-by: pyranota <pyra@duck.com>

* add separator

Signed-off-by: pyranota <pyra@duck.com>

---------

Signed-off-by: pyranota <pyra@duck.com>
2026-01-06 17:55:51 +00:00
Diego Imbert e6757994d5 fix: ducklake default connection extra_args (#7509)
* Ducklake default extra_args

* indicator nit
2026-01-06 17:55:05 +00:00
centdix 8125036e9b fix(aiagent): fix memory with openai (#7506)
* add memory test

* fix memory with openai
2026-01-06 16:17:29 +00:00
Devdatta TaleleandDiego Imbert 47e1130b9a fix: handle date-only format in MySQL/MariaDB date parsing (#7481)
When updating rows in the Database Manager with MariaDB tables containing
      DATE columns with non-null values, the update query was failing silently
      because the date-only format (YYYY-MM-DD) was not recognized by the date
      parsing regex. This caused the WHERE clause to use '0000-00-00' instead
      of the actual date value. Added a new regex pattern to handle the date-only format that MariaDB
      returns for DATE columns, ensuring proper date comparison in UPDATE
      queries.

Co-authored-by: Diego Imbert <70353967+diegoimbert@users.noreply.github.com>
2026-01-06 07:49:32 +09:00
centdix eeb4feb13c chore(aiagent): better handling of schemas (#7488)
* better handling of schemas

* add tests

* better

* add tests

* handle allof
2026-01-05 22:24:47 +00:00
Alexander Petric 3d8f85d254 fix: support jumpcloud scim members filter syntax (RFC7644) (#7495) 2026-01-05 22:23:11 +00:00
hugocasa a3da19dbc3 fix(backend): remove itered from parallel for-loop status (#7424)
* fix(backend): remove itered from parallel for-loop

* remove fk on v2_job_queue
2026-01-05 20:52:48 +00:00
hugocasa 4807a429c9 fix(backend): run flow error handler for flow step oom (#7484) 2026-01-05 12:09:33 +00:00
centdix f0361a027f fix param for openai (#7483) 2026-01-05 10:56:27 +00:00
claude[bot] bfe35a8421 fix: check tag availability for flow substeps (#7468) 2025-12-29 17:24:49 +00:00
Ruben Fiszelandrubenfiszel 6ebb2f6d7c chore(main): release 1.601.1 (#7464)
* chore(main): release 1.601.1

* Apply automatic changes

---------

Co-authored-by: rubenfiszel <275584+rubenfiszel@users.noreply.github.com>
2025-12-27 15:40:10 +00:00
Ruben Fiszelandrubenfiszel a4696a5c21 chore(main): release 1.601.0 (#7460)
* chore(main): release 1.601.0

* Apply automatic changes

---------

Co-authored-by: rubenfiszel <275584+rubenfiszel@users.noreply.github.com>
2025-12-27 00:41:28 +00:00
Ruben Fiszelandrubenfiszel bb24315613 chore(main): release 1.600.1 (#7458)
* chore(main): release 1.600.1

* Apply automatic changes

---------

Co-authored-by: rubenfiszel <275584+rubenfiszel@users.noreply.github.com>
2025-12-26 17:40:29 +00:00
Ruben Fiszelandrubenfiszel ce45cf442a chore(main): release 1.600.0 (#7457)
* chore(main): release 1.600.0

* Apply automatic changes

---------

Co-authored-by: rubenfiszel <275584+rubenfiszel@users.noreply.github.com>
2025-12-26 15:12:09 +00:00
Aananth K 7fbc70add0 fix: add help subcommand (#7221)
* add help subcommand

* imporve env variables
2025-12-26 13:15:57 +00:00
Ruben Fiszelandrubenfiszel e53b33c8fe chore(main): release 1.599.3 (#7455)
* chore(main): release 1.599.3

* Apply automatic changes

---------

Co-authored-by: rubenfiszel <275584+rubenfiszel@users.noreply.github.com>
2025-12-25 16:45:52 +00:00
Ruben Fiszel c60b8cb51f fix static assets loading for apps raw 2025-12-25 16:29:49 +00:00
77d3004a2f fix: add CORS headers to static assets for iframe context sharing (#7454)
* fix: add CORS headers to static assets for iframe context sharing

Add Cross-Origin-Opener-Policy, Cross-Origin-Embedder-Policy, and
Cross-Origin-Resource-Policy headers to static assets served by the backend
to match the vite preview config. This enables the TypeScript worker to work
correctly when ui_builder is loaded in an iframe.

Fixes #7453

Co-authored-by: windmill-internal-app[bot] <windmill-internal-app[bot]@users.noreply.github.com>

* fix: add CORS headers only for /apps_raw paths and force reload on navigation

- Only add Cross-Origin-Opener-Policy, Cross-Origin-Embedder-Policy, and
  Cross-Origin-Resource-Policy headers for /apps_raw/ paths (not all static assets)
- Add frontend navigation handler to force page reload when navigating from
  non-apps_raw paths to /apps_raw/add or /apps_raw/edit
- This ensures the TypeScript worker works correctly while avoiding CORS issues
  for external iframe embeds in other parts of the app

Co-authored-by: Ruben Fiszel <rubenfiszel@users.noreply.github.com>

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>

* fix: also reload when navigating from /apps/get_raw/ to apps_raw editor

When viewing a raw app at /apps/get_raw/, the cross-origin isolation
headers are not present. Force a page reload when navigating from
this path to /apps_raw/add or /apps_raw/edit to ensure the headers
are fetched from the server.

Co-authored-by: Ruben Fiszel <rubenfiszel@users.noreply.github.com>

* Update +layout.svelte

---------

Co-authored-by: claude[bot] <41898282+claude[bot]@users.noreply.github.com>
Co-authored-by: windmill-internal-app[bot] <windmill-internal-app[bot]@users.noreply.github.com>
Co-authored-by: Claude <noreply@anthropic.com>
Co-authored-by: Ruben Fiszel <rubenfiszel@users.noreply.github.com>
Co-authored-by: Ruben Fiszel <ruben@windmill.dev>
2025-12-25 14:53:33 +02:00
Ruben Fiszelandrubenfiszel 6f9f87acc6 chore(main): release 1.599.2 (#7452)
* chore(main): release 1.599.2

* Apply automatic changes

---------

Co-authored-by: rubenfiszel <275584+rubenfiszel@users.noreply.github.com>
2025-12-25 10:19:48 +00:00
Ruben Fiszelandrubenfiszel bde940f8cf chore(main): release 1.599.1 (#7450)
* chore(main): release 1.599.1

* Apply automatic changes

---------

Co-authored-by: rubenfiszel <275584+rubenfiszel@users.noreply.github.com>
2025-12-25 08:13:12 +00:00
Ruben Fiszelandrubenfiszel 5df8c10d11 chore(main): release 1.599.0 (#7449)
* chore(main): release 1.599.0

* Apply automatic changes

---------

Co-authored-by: rubenfiszel <275584+rubenfiszel@users.noreply.github.com>
2025-12-24 21:03:56 +00:00
Ruben Fiszel 3dd4579d0a feat: raw apps can be built by agents fully locally (#7448) 2025-12-24 21:00:04 +00:00
Ruben Fiszelandrubenfiszel cacd29b434 chore(main): release 1.598.0 (#7445)
* chore(main): release 1.598.0

* Apply automatic changes

---------

Co-authored-by: rubenfiszel <275584+rubenfiszel@users.noreply.github.com>
2025-12-23 20:57:24 +00:00
Pyra cbcf0aa344 feat(python): set latest stable to 3.12 (#7405)
Signed-off-by: pyranota <pyra@duck.com>
2025-12-23 20:50:43 +00:00
Ruben Fiszelandrubenfiszel 251091b0d1 chore(main): release 1.597.1 (#7442)
* chore(main): release 1.597.2

* Apply automatic changes

---------

Co-authored-by: rubenfiszel <275584+rubenfiszel@users.noreply.github.com>
2025-12-23 21:34:34 +02:00
Ruben Fiszelandrubenfiszel 8b94b324ad chore(main): release 1.597.1 (#7441)
* chore(main): release 1.597.1

* Apply automatic changes

---------

Co-authored-by: rubenfiszel <275584+rubenfiszel@users.noreply.github.com>
2025-12-23 18:21:23 +00:00
Ruben Fiszelandrubenfiszel cacaba84df chore(main): release 1.597.0 (#7425)
* chore(main): release 1.597.0

* Apply automatic changes

---------

Co-authored-by: rubenfiszel <275584+rubenfiszel@users.noreply.github.com>
2025-12-23 16:53:58 +00:00
0f51f9702c fix: clone script by path instead of hash (#7439)
* fix: clone script by path instead of hash

Signed-off-by: pyranota <pyra@duck.com>

* Update backend/windmill-common/src/scripts.rs

Co-authored-by: claude[bot] <209825114+claude[bot]@users.noreply.github.com>

---------

Signed-off-by: pyranota <pyra@duck.com>
Co-authored-by: Ruben Fiszel <ruben@windmill.dev>
Co-authored-by: claude[bot] <209825114+claude[bot]@users.noreply.github.com>
2025-12-23 16:05:58 +00:00
centdix 532c50024f feat(aiagent): handle custom memory_id (#7432)
* first draft

* fix

* nit

* cleaning

* fix on deploy if not set

* add off mode to memory
2025-12-23 13:47:50 +00:00
Pyraandwindmill-internal-app[bot] 1f82e2d432 fix ci (#7438)
* fix frontend

Signed-off-by: pyranota <pyra@duck.com>

* chore: update ee-repo-ref to 5c2a8854e7ff014063a69dd8f7829a935129c31e

This commit updates the EE repository reference after PR #370 was merged in windmill-ee-private.

Previous ee-repo-ref: 8c75fc5b1372a790dc74b374cd72f9caf51a4595

New ee-repo-ref: 5c2a8854e7ff014063a69dd8f7829a935129c31e

Automated by sync-ee-ref workflow.

---------

Signed-off-by: pyranota <pyra@duck.com>
Co-authored-by: windmill-internal-app[bot] <windmill-internal-app[bot]@users.noreply.github.com>
2025-12-23 13:47:03 +00:00
9d698dabb4 feat: v2 job debouncing (#7411)
* rework everything again

Signed-off-by: pyranota <pyra@duck.com>

* updcate sqlx

Signed-off-by: pyranota <pyra@duck.com>

* update ref

Signed-off-by: pyranota <pyra@duck.com>

* fix things

Signed-off-by: pyranota <pyra@duck.com>

* fix function

Signed-off-by: pyranota <pyra@duck.com>

* final fixes

Signed-off-by: pyranota <pyra@duck.com>

* update sqlx

Signed-off-by: pyranota <pyra@duck.com>

* fix script creation

Signed-off-by: pyranota <pyra@duck.com>

* address todo

Signed-off-by: pyranota <pyra@duck.com>

* cleanup

Signed-off-by: pyranota <pyra@duck.com>

* remove dbg

Signed-off-by: pyranota <pyra@duck.com>

* cleanup

Signed-off-by: pyranota <pyra@duck.com>

* fix

Signed-off-by: pyranota <pyra@duck.com>

* fixups

Signed-off-by: pyranota <pyra@duck.com>

* fix cargo.toml

Signed-off-by: pyranota <pyra@duck.com>

* update ee repo

Signed-off-by: pyranota <pyra@duck.com>

* fix ci

Signed-off-by: pyranota <pyra@duck.com>

* nit

Signed-off-by: pyranota <pyra@duck.com>

* ref

Signed-off-by: pyranota <pyra@duck.com>

* fix

Signed-off-by: pyranota <pyra@duck.com>

* ee repo

Signed-off-by: pyranota <pyra@duck.com>

* sqlx

Signed-off-by: pyranota <pyra@duck.com>

* ee ref

Signed-off-by: pyranota <pyra@duck.com>

* remove dbg

Signed-off-by: pyranota <pyra@duck.com>

* sqlx

Signed-off-by: pyranota <pyra@duck.com>

* feat: v2 job debouncing

Signed-off-by: pyranota <pyra@duck.com>

* v2 debouncing

Signed-off-by: pyranota <pyra@duck.com>

* compat

Signed-off-by: pyranota <pyra@duck.com>

* fix all

Signed-off-by: pyranota <pyra@duck.com>

* remove legacy logic

Signed-off-by: pyranota <pyra@duck.com>

* nit

Signed-off-by: pyranota <pyra@duck.com>

* finish

Signed-off-by: pyranota <pyra@duck.com>

* nits

Signed-off-by: pyranota <pyra@duck.com>

* stage import

Signed-off-by: pyranota <pyra@duck.com>

* remove unused import

Signed-off-by: pyranota <pyra@duck.com>

* remove comments

Signed-off-by: pyranota <pyra@duck.com>

* ee ref

Signed-off-by: pyranota <pyra@duck.com>

* ee ref

Signed-off-by: pyranota <pyra@duck.com>

* nits

Signed-off-by: pyranota <pyra@duck.com>

* Update backend/windmill-queue/src/jobs.rs

Co-authored-by: claude[bot] <209825114+claude[bot]@users.noreply.github.com>

* Update backend/windmill-common/src/runnable_settings/settings.rs

Co-authored-by: claude[bot] <209825114+claude[bot]@users.noreply.github.com>

* Update frontend/src/lib/components/flows/DebounceLimit.svelte

Co-authored-by: claude[bot] <209825114+claude[bot]@users.noreply.github.com>

* fix nits

Signed-off-by: pyranota <pyra@duck.com>

* force no compat in ci

Signed-off-by: pyranota <pyra@duck.com>

* better default key handling

Signed-off-by: pyranota <pyra@duck.com>

* simplify

Signed-off-by: pyranota <pyra@duck.com>

* sqlx

Signed-off-by: pyranota <pyra@duck.com>

* optimize

Signed-off-by: pyranota <pyra@duck.com>

* sqlx

Signed-off-by: pyranota <pyra@duck.com>

* fix flow step

Signed-off-by: pyranota <pyra@duck.com>

* add openapi

Signed-off-by: pyranota <pyra@duck.com>

* fix ci

Signed-off-by: pyranota <pyra@duck.com>

* ee ref

Signed-off-by: pyranota <pyra@duck.com>

* rename WMDEBUG flag

Signed-off-by: pyranota <pyra@duck.com>

* ee ref

Signed-off-by: pyranota <pyra@duck.com>

* remove gate for is_flow_step on pull

Signed-off-by: pyranota <pyra@duck.com>

* remove dead code

Signed-off-by: pyranota <pyra@duck.com>

* nits

Signed-off-by: pyranota <pyra@duck.com>

* chore: update ee-repo-ref to 71d872d27de44227b82f75a9c0879d8428684880

This commit updates the EE repository reference after PR #369 was merged in windmill-ee-private.

Previous ee-repo-ref: 4c7642dc9f7f4467fc055136bd56558b66ef2d54

New ee-repo-ref: 71d872d27de44227b82f75a9c0879d8428684880

Automated by sync-ee-ref workflow.

---------

Signed-off-by: pyranota <pyra@duck.com>
Co-authored-by: claude[bot] <209825114+claude[bot]@users.noreply.github.com>
Co-authored-by: windmill-internal-app[bot] <windmill-internal-app[bot]@users.noreply.github.com>
2025-12-23 13:24:04 +00:00
Ruben Fiszel 91a00857a8 add proper jobs timings for raw apps 2025-12-23 11:39:48 +00:00
Pyra 6723a6a04b fix: better timeouts on job pull (#7434)
* fix: better timeouts on job pull

Signed-off-by: pyranota <pyra@duck.com>

* increase timeouts

Signed-off-by: pyranota <pyra@duck.com>

---------

Signed-off-by: pyranota <pyra@duck.com>
2025-12-22 21:44:35 +00:00
6be060bea8 feat(ai): add websearch tool for AI agents (#7399)
* refactor(ai): use responses API for OpenAI/Azure, create 'other' provider for completion endpoint

- Created new 'other.rs' provider using the OpenAI-compatible completion endpoint
- Refactored 'openai.rs' to use the Responses API for both text and image output
- Updated query_builder to route OpenAI/AzureOpenAI to OpenAIQueryBuilder
- All other providers (Mistral, DeepSeek, Groq, etc.) now use OtherQueryBuilder
- Updated OpenRouter to delegate to OtherQueryBuilder instead of OpenAIQueryBuilder

This prepares the codebase for adding websearch tool support using the Responses API.

Co-authored-by: windmill-internal-app[bot] <windmill-internal-app[bot]@users.noreply.github.com>

* feat(ai): add websearch as AI agent tool type

- Added WebsearchToolValue to ToolValue enum in flows.rs
- Updated all pattern matches to handle websearch tool type
- Added has_websearch parameter to run_agent function
- Websearch tools don't require additional configuration

This prepares the backend for provider-specific websearch implementations.

Co-authored-by: windmill-internal-app[bot] <windmill-internal-app[bot]@users.noreply.github.com>

* feat(frontend): add websearch as tool option in AI agent UI

- Added WebsearchTool type and utility functions to agentToolUtils.ts
- Added "Web Search" option in tool insertion menu (InsertModuleInner)
- Updated NewAIToolNode to handle pickWebsearchTool event
- Updated AIToolNode to render websearch tools properly
- Updated FlowModuleSchemaMap to create websearch tools

Users can now add websearch tools to AI agents through the UI.

Co-authored-by: windmill-internal-app[bot] <windmill-internal-app[bot]@users.noreply.github.com>

* feat(ai): implement websearch for OpenAI provider

- Added has_websearch parameter to BuildRequestArgs
- OpenAI provider now adds web_search tool to requests when enabled
- Uses OpenAI Responses API web_search tool type
- Websearch tool is added before other custom tools in the request

Implements websearch functionality for OpenAI and Azure OpenAI providers.

Co-authored-by: windmill-internal-app[bot] <windmill-internal-app[bot]@users.noreply.github.com>

* feat(ai): implement websearch for Anthropic provider

- Created anthropic.rs provider with native Anthropic API format
- Added web_search tool to Anthropic requests when enabled
- Anthropic uses /messages endpoint with x-api-key authentication
- Updated query_builder to route Anthropic to new provider

Implements websearch functionality for Anthropic Claude models.

Co-authored-by: windmill-internal-app[bot] <windmill-internal-app[bot]@users.noreply.github.com>

* feat(ai): implement websearch for Gemini/GoogleAI provider

- GoogleAI now uses completion endpoint (other.rs) for text instead of responses API
- Added Google Search grounding when websearch is enabled
- Uses google_search_retrieval tool in request when has_websearch is true
- Updated parse methods to use OtherQueryBuilder for completion endpoint

Implements websearch functionality for Google Gemini models.

Co-authored-by: windmill-internal-app[bot] <windmill-internal-app[bot]@users.noreply.github.com>

* fix frontend

* fix anthropic and openai

* better for gemini

* structured output

* cleaning

* fix validate tool

* fixes

* cleaning

* cleaning

* fix for openai

* no responses api for azure

* fixes

* fix

* add tests for ai agent

* avoid panic

* better tests

* test user images

* fix tool choice

* always use streaming backend side

* big cleaning

* show annotations plus agent action for open ai websearch use

* show annotations plus agent action for anthropic websearch use

* show annotations plus agent action for google websearch use

* nit forntend

* rm

* fix

* add test for image ouptut

* fix for azure

* add in openflow

* fix

* fix

* nit tests

* fixes

---------

Co-authored-by: claude[bot] <41898282+claude[bot]@users.noreply.github.com>
Co-authored-by: windmill-internal-app[bot] <windmill-internal-app[bot]@users.noreply.github.com>
Co-authored-by: centdix <farhadg110@gmail.com>
2025-12-22 11:41:28 +00:00