Updates the debugger service to use port 3003 instead of 5679 across
all configuration files, documentation, and code references. This aligns
the debugger with the other windmill-extra services which use ports
3001 (LSP) and 3002 (Multiplayer).
Changes:
- docker-compose.yml: Update port exposure and add DEBUGGER_PORT env
- docker/entrypoint-extra.sh: Change default port from 5679 to 3003
- debugger/dap_debug_service.ts: Update default port in code and docs
- debugger/README.md: Update port documentation
- debugger/test_debug_service.ts: Update test URLs
- docker/test_windmill_extra.ts: Update test configuration
- .github/workflows/publish_extra.yml: Update test container ports
- frontend/src/lib/components/debug/*: Update frontend examples and defaults
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
* nit
* Update sidebar to brand guidelines
* use dropdown for file delete and rename
* update runnable script styling
* fix icon sizes
* Polish app creation form
* Add missing languages icons
* Allow to delete runnable from the left pannel
* update top bar to brand guidelines
* improve svelte template
* fix runnables binding
* nit
* Deselect frontend file when selecting background runnable
* fix renaming wip
* fix add ing files, update only after adding
* Change filename when already existing
* update deployment page to brand guidelines
* fix folder open error
* expand folder if adding file inside
* nit
* fix bad link
* use alert for ai not configured message
* 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>
* fix(schema): preserve user-defined JSON schema for Python list[dict]
Fixes issue where JSON schema properties manually defined in the UI are
lost when saving Python scripts with list[dict] or untyped array parameters.
Changes:
- Preserve all items fields (properties, required, additionalProperties, etc.)
- Preserve items.type instead of hardcoding "object"
- Preserve type for untyped parameters using nullish coalescing
- Add type safety check for items preservation
The Python parser cannot infer object properties from list[dict] annotations.
This fix preserves user-defined schema fields when parser cannot infer structure.
Fixes#7209
* fix(schema): preserve all fields for untyped lists, not just properties
Address bot feedback for consistency. The untyped list branch now preserves
all user-defined fields (required, additionalProperties, enum, etc.) just
like the record[] branch, instead of only preserving properties.
This ensures users who define required fields or enum values for untyped
list parameters don't lose that data on save.
Related to #7209
* nits and publish
---------
Co-authored-by: Devdatta Talele <devtalele0@gmail.com>