Code-first platform for workflows, apps and AI agents, on the fastest self-hostable orchestrator (benchmarked against Airflow, Prefect and Temporal). Business teams build with AI, engineers control what ships. Open-source alternative to Lovable, Retool and n8n.
This report summarizes scanner evidence for windmill-labs/windmill, a Rust project with 18,334 GitHub stars. SynthScan examined 1,657,733 lines of code across 9313 source files, recording 3465 pattern matches distributed across 25 syntactic categories. The legacy adjusted pattern signal is 2.7 (Low pattern signal); it is not an authorship estimate.
Use the findings to ask whether maintainers can explain intent, verify dependencies, simplify unnecessary scaffolding, and focus review effort. Risk Payload v1 adds ownership, supply-chain, over-engineering, and review-effort vectors when available. These are prompts for human verification, not probabilities, security findings, or measured maintenance costs.
Use each vector to guide manual verification of the underlying findings.
Payload schema: 1.0.0 · Engine: 2.0.0 · Scoring: heuristic-density-v1 · Scan date: 2026-10-31.
Can maintainers explain intent, assumptions, and trade-offs? 3031 finding(s).
Are imports declared and package/API names verified? 124 finding(s).
Are wrappers, guards, and repeated structures necessary? 1430 finding(s).
Which changes need focused human review? 3465 finding(s).
This chart tracks the legacy adjusted pattern score across scan runs. Changes can reflect source changes, scan coverage, or detector/scoring versions; they do not measure AI adoption or prove that a team refactored code. Compare runs only when their scoring versions are compatible. The dashed line tracks the raw pattern-hit count.
Groups findings by configured severity weight. Severity is not a confidence estimate, security rating, or proof that a package is missing. Verify imports against the project's manifests and inspect each finding in its local design context.
This horizontal bar chart shows where configured pattern scores accumulate across directories. Treat the bars as locations to inspect, not as evidence of authorship or code quality. Use the file-level findings to decide whether a directory needs a focused ownership, dependency, complexity, or review check.
The scanner identified 3465 distinct pattern matches across 25 syntactic categories. Each entry below represents a discrete location in the source code where the engine recorded a detector match to inspect in context. Expand any category row to inspect the individual file paths, line numbers, code snippets, and the lexical context (CODE, COMMENT, or STRING) in which each match was detected.
Reading the findings table: The Severity column indicates the configured finding weight (CRITICAL / HIGH / MEDIUM / LOW). The Context column identifies whether the match occurred inside executable code, an inline comment, or a string literal — legacy comment-context matches receive a ×1.5 score weight. The ⚡ bolt icon marks clustered matches: three or more patterns within a 10-line window, each receiving an additional ×1.5 density multiplier under the legacy scoring model.
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | docker-compose.yml | 121 | - WORKER_GROUP=native | COMMENT |
| LOW | docker-compose.yml | 141 | # # Uncomment to enable PID namespace isolation (recommended for security) | COMMENT |
| LOW | system_prompts/generate.py | 461 | # the last case by matching up to the next `)`. | COMMENT |
| LOW | system_prompts/auto-generated/script.md | 2141 | # **kwargs: Additional arguments passed to httpx.get | COMMENT |
| LOW | system_prompts/auto-generated/script.md | 2161 | # duration: Token validity duration (default: 1 day) | COMMENT |
| LOW | system_prompts/auto-generated/script.md | 2181 | def run_script_by_path(path: str, args: dict = None, timeout: dt.timedelta | int | float | None = None, verbose: bool = | COMMENT |
| LOW | system_prompts/auto-generated/script.md | 2201 | # Returns: | COMMENT |
| LOW | system_prompts/auto-generated/script.md | 2221 | COMMENT | |
| LOW | system_prompts/auto-generated/script.md | 2241 | # | COMMENT |
| LOW | system_prompts/auto-generated/script.md | 2261 | # Args: | COMMENT |
| LOW | system_prompts/auto-generated/script.md | 2281 | # path: Variable path in Windmill | COMMENT |
| LOW | system_prompts/auto-generated/script.md | 2301 | # path: Resource path in Windmill | COMMENT |
| LOW | system_prompts/auto-generated/script.md | 2321 | def set_state(value: Any, path: str | None = None) -> None | COMMENT |
| LOW | system_prompts/auto-generated/script.md | 2341 | # Args: | COMMENT |
| LOW | system_prompts/auto-generated/script.md | 2361 | def set_flow_user_state(key: str, value: Any) -> None | COMMENT |
| LOW | system_prompts/auto-generated/script.md | 2381 | # Convenient helpers that takes an S3 resource as input and returns the settings necessary to | COMMENT |
| LOW | system_prompts/auto-generated/script.md | 2401 | # | COMMENT |
| LOW | system_prompts/auto-generated/script.md | 2421 | COMMENT | |
| LOW | system_prompts/auto-generated/script.md | 2441 | # '''python | COMMENT |
| LOW | system_prompts/auto-generated/script.md | 2461 | # | COMMENT |
| LOW | system_prompts/auto-generated/script.md | 2481 | # List of signed public URLs | COMMENT |
| LOW | system_prompts/auto-generated/script.md | 2501 | # >>> s3_obj = S3Object(s3="/path/to/file.txt") | COMMENT |
| LOW | system_prompts/auto-generated/script.md | 2541 | # Get URLs needed for resuming a flow after suspension. | COMMENT |
| LOW | system_prompts/auto-generated/script.md | 2561 | # Dictionary with approvalPage, resume, and cancel URLs | COMMENT |
| LOW | system_prompts/auto-generated/script.md | 2581 | # | COMMENT |
| LOW | system_prompts/auto-generated/script.md | 2601 | COMMENT | |
| LOW | system_prompts/auto-generated/script.md | 2641 | # hash_or_path: Script hash or path (determined by presence of '/') | COMMENT |
| LOW | system_prompts/auto-generated/script.md | 2661 | # Returns: | COMMENT |
| LOW | system_prompts/auto-generated/script.md | 2701 | # Parse S3 object from a `s3://<storage>/<key>` URI string (`s3:///<key>` | COMMENT |
| LOW | system_prompts/auto-generated/script.md | 2721 | def stream_result(stream) -> None | COMMENT |
| LOW | system_prompts/auto-generated/script.md | 2741 | # The partition value is bound as a DuckDB arg (never string-interpolated) | COMMENT |
| LOW | system_prompts/auto-generated/script.md | 2761 | def fetch(result_collection: str | None = None) | COMMENT |
| LOW | system_prompts/auto-generated/script.md | 2781 | # Check that the types exist if you plan to extend this function for other SQL engines. | COMMENT |
| LOW | system_prompts/auto-generated/script.md | 2801 | # ``retry`` re-dispatches the task after a failure, inside ``@workflow`` only. | COMMENT |
| LOW | system_prompts/auto-generated/script.md | 2821 | # from the workflow's input alone. A ``task_script`` target is keyed on the | COMMENT |
| LOW | system_prompts/auto-generated/script.md | 2841 | # Usage:: | COMMENT |
| LOW | system_prompts/auto-generated/script.md | 2861 | def task_flow(path: str, *, timeout: Optional[int] = None, tag: Optional[str] = None, cache_ttl: Optional[int] = None, p | COMMENT |
| LOW | system_prompts/auto-generated/script.md | 2881 | # | COMMENT |
| LOW | system_prompts/auto-generated/script.md | 2901 | # timeout: Approval timeout in seconds (default 1800). | COMMENT |
| LOW | system_prompts/auto-generated/script.md | 2921 | # | COMMENT |
| LOW | system_prompts/auto-generated/prompts.ts | 2521 | # | COMMENT |
| LOW | system_prompts/auto-generated/prompts.ts | 2541 | # raise_for_status: Whether to raise an exception on HTTP errors | COMMENT |
| LOW | system_prompts/auto-generated/prompts.ts | 2581 | COMMENT | |
| LOW | system_prompts/auto-generated/prompts.ts | 2601 | # Args: | COMMENT |
| LOW | system_prompts/auto-generated/prompts.ts | 2621 | # Get the root job ID for a flow hierarchy. | COMMENT |
| LOW | system_prompts/auto-generated/prompts.ts | 2641 | # | COMMENT |
| LOW | system_prompts/auto-generated/prompts.ts | 2661 | # Args: | COMMENT |
| LOW | system_prompts/auto-generated/prompts.ts | 2681 | # interpolated: if variables and resources are fully unrolled | COMMENT |
| LOW | system_prompts/auto-generated/prompts.ts | 2701 | # | COMMENT |
| LOW | system_prompts/auto-generated/prompts.ts | 2721 | COMMENT | |
| LOW | system_prompts/auto-generated/prompts.ts | 2741 | # script can poll this and return early so the worker can be replaced. | COMMENT |
| LOW | system_prompts/auto-generated/prompts.ts | 2761 | COMMENT | |
| LOW | system_prompts/auto-generated/prompts.ts | 2781 | # initiate an S3 connection using boto3. | COMMENT |
| LOW | system_prompts/auto-generated/prompts.ts | 2801 | # Load a file from the workspace s3 bucket and returns the bytes stream. | COMMENT |
| LOW | system_prompts/auto-generated/prompts.ts | 2821 | # client.write_s3_file(s3_obj, file_content) | COMMENT |
| LOW | system_prompts/auto-generated/prompts.ts | 2841 | # Args: | COMMENT |
| LOW | system_prompts/auto-generated/prompts.ts | 2861 | # Generate presigned public URLs for an array of S3 objects. | COMMENT |
| LOW | system_prompts/auto-generated/prompts.ts | 2881 | # Args: | COMMENT |
| LOW | system_prompts/auto-generated/prompts.ts | 2901 | # Get the current user information (alias for whoami). | COMMENT |
| LOW | system_prompts/auto-generated/prompts.ts | 2921 | COMMENT | |
| 1449 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW⚡ | system_prompts/generate.py | 652 | def generate_cli_commands_markdown(cli_data: dict) -> str: | CODE |
| LOW | system_prompts/generate.py | 363 | def extract_named_command_block(content: str, var_name: str) -> str | None: | CODE |
| LOW | system_prompts/generate.py | 379 | def extract_exported_command_block(content: str) -> str | None: | CODE |
| LOW | system_prompts/generate.py | 1038 | def generate_workspace_tool_zod_schemas(backend_schemas: dict, openflow_schemas: dict) -> None: | CODE |
| LOW | system_prompts/generate.py | 1423 | def _extract_ts_exported_function(content: str, name: str) -> str: | CODE |
| LOW | system_prompts/generate.py | 1547 | def _extract_py_function_signature(tree: ast.Module, name: str) -> str: | CODE |
| LOW | system_prompts/generate.py | 1563 | def _extract_py_class_signature(tree: ast.Module, name: str) -> str: | CODE |
| LOW | system_prompts/generate.py | 1865 | def generate_skills_ts_export(skills: list[str], schema_yaml_content: dict[str, str] | None = None) -> str: | CODE |
| LOW | system_prompts/generate.py | 1940 | def format_schema_for_markdown(schema_yaml: str, schema_name: str, file_pattern: str) -> str: | CODE |
| LOW | system_prompts/generate.py | 1951 | def render_plugin_skill_content(skill_name: str, schema_yaml_content: dict[str, str]) -> str: | CODE |
| LOW | system_prompts/generate.py | 1981 | def resolve_plugin_skills_dir(plugin_dir: Path) -> Path: | CODE |
| LOW | system_prompts/generate.py | 2050 | def extract_agents_md_template() -> str: | CODE |
| LOW | system_prompts/generate.py | 2073 | def _unescape_ts_template_literal(raw: str) -> str: | CODE |
| LOW | system_prompts/generate.py | 2087 | def render_agents_md_for_docs( | CODE |
| LOW | system_prompts/generate.py | 2106 | def _looks_like_windmill_manifest(path: Path) -> bool: | CODE |
| LOW | system_prompts/generate.py | 2685 | export function getWorkspaceSettingsPrompt(): string { | CODE |
| LOW | system_prompts/generate.py | 2752 | export declare function getWorkspaceSettingsPrompt(): string; | CODE |
| LOW | system_prompts/utils.py | 583 | def format_schema_for_markdown(schema: dict, schema_name: str, as_json_schema: bool = False) -> str: | CODE |
| LOW | system_prompts/auto-generated/script.md | 2126 | def worker_has_internal_server() -> bool | CODE |
| LOW | system_prompts/auto-generated/script.md | 2190 | def run_inline_script_preview(content: str, language: str, args: dict = None) -> Any | CODE |
| LOW | system_prompts/auto-generated/script.md | 2379 | def get_duckdb_connection_settings(s3_resource_path: str = '') -> DuckDbConnectionSettings | None | CODE |
| LOW | system_prompts/auto-generated/script.md | 2388 | def get_polars_connection_settings(s3_resource_path: str = '') -> PolarsConnectionSettings | CODE |
| LOW | system_prompts/auto-generated/script.md | 2600 | def request_interactive_slack_approval(slack_resource_path: str, channel_id: str, message: str = None, approver: str = N | CODE |
| LOW | system_prompts/auto-generated/script.md | 2682 | def duckdb_connection_settings(s3_resource_path: str = '') -> DuckDbConnectionSettings | CODE |
| LOW | system_prompts/auto-generated/script.md | 2686 | def polars_connection_settings(s3_resource_path: str = '') -> PolarsConnectionSettings | CODE |
| LOW | system_prompts/auto-generated/prompts.ts | 2516 | def worker_has_internal_server() -> bool | STRING |
| LOW | system_prompts/auto-generated/prompts.ts | 2580 | def run_inline_script_preview(content: str, language: str, args: dict = None) -> Any | STRING |
| LOW | system_prompts/auto-generated/prompts.ts | 2769 | def get_duckdb_connection_settings(s3_resource_path: str = '') -> DuckDbConnectionSettings | None | STRING |
| LOW | system_prompts/auto-generated/prompts.ts | 2778 | def get_polars_connection_settings(s3_resource_path: str = '') -> PolarsConnectionSettings | STRING |
| LOW | system_prompts/auto-generated/prompts.ts | 2990 | def request_interactive_slack_approval(slack_resource_path: str, channel_id: str, message: str = None, approver: str = N | STRING |
| LOW | system_prompts/auto-generated/prompts.ts | 3072 | def duckdb_connection_settings(s3_resource_path: str = '') -> DuckDbConnectionSettings | STRING |
| LOW | system_prompts/auto-generated/prompts.ts | 3076 | def polars_connection_settings(s3_resource_path: str = '') -> PolarsConnectionSettings | STRING |
| LOW | system_prompts/auto-generated/index.ts | 91 | export function getWorkspaceSettingsPrompt(): string { | CODE |
| LOW | system_prompts/auto-generated/index.d.ts | 9 | export declare function getWorkspaceSettingsPrompt(): string; | CODE |
| LOW | system_prompts/auto-generated/sdks/python.md | 21 | def worker_has_internal_server() -> bool | CODE |
| LOW | system_prompts/auto-generated/sdks/python.md | 85 | def run_inline_script_preview(content: str, language: str, args: dict = None) -> Any | CODE |
| LOW | system_prompts/auto-generated/sdks/python.md | 274 | def get_duckdb_connection_settings(s3_resource_path: str = '') -> DuckDbConnectionSettings | None | CODE |
| LOW | system_prompts/auto-generated/sdks/python.md | 283 | def get_polars_connection_settings(s3_resource_path: str = '') -> PolarsConnectionSettings | CODE |
| LOW | system_prompts/auto-generated/sdks/python.md | 495 | def request_interactive_slack_approval(slack_resource_path: str, channel_id: str, message: str = None, approver: str = N | CODE |
| LOW | system_prompts/auto-generated/sdks/python.md | 577 | def duckdb_connection_settings(s3_resource_path: str = '') -> DuckDbConnectionSettings | CODE |
| LOW | system_prompts/auto-generated/sdks/python.md | 581 | def polars_connection_settings(s3_resource_path: str = '') -> PolarsConnectionSettings | CODE |
| LOW | …ts/auto-generated/skills/write-script-python3/SKILL.md | 232 | def worker_has_internal_server() -> bool | CODE |
| LOW | …ts/auto-generated/skills/write-script-python3/SKILL.md | 296 | def run_inline_script_preview(content: str, language: str, args: dict = None) -> Any | CODE |
| LOW | …ts/auto-generated/skills/write-script-python3/SKILL.md | 485 | def get_duckdb_connection_settings(s3_resource_path: str = '') -> DuckDbConnectionSettings | None | CODE |
| LOW | …ts/auto-generated/skills/write-script-python3/SKILL.md | 494 | def get_polars_connection_settings(s3_resource_path: str = '') -> PolarsConnectionSettings | CODE |
| LOW | …ts/auto-generated/skills/write-script-python3/SKILL.md | 706 | def request_interactive_slack_approval(slack_resource_path: str, channel_id: str, message: str = None, approver: str = N | CODE |
| LOW | …ts/auto-generated/skills/write-script-python3/SKILL.md | 788 | def duckdb_connection_settings(s3_resource_path: str = '') -> DuckDbConnectionSettings | CODE |
| LOW | …ts/auto-generated/skills/write-script-python3/SKILL.md | 792 | def polars_connection_settings(s3_resource_path: str = '') -> PolarsConnectionSettings | CODE |
| LOW | docker/test_windmill_extra.ts | 481 | async function testDebuggerTypescriptExecution(): Promise<void> { | CODE |
| LOW | docker/test_windmill_extra.ts | 524 | async function testDebuggerPythonExecution(): Promise<void> { | CODE |
| LOW | frontend/vite.config.js | 85 | function assertStaticClosureExcludes(ctx, bundle, entry, forbidden, hint) { | CODE |
| LOW | frontend/vite.config.js | 120 | function assertLeanPublicAppRoutes() { | CODE |
| LOW | frontend/vite.config.js | 214 | function needsCrossOriginIsolation(url) { | CODE |
| LOW | frontend/e2e/DbManagerPage.ts | 9 | export async function runDbManagerSimpleCRUDTest(page: Page, dbType: _DbType) { | CODE |
| LOW | frontend/e2e/DbManagerPage.ts | 49 | export async function runDbManagerAlterTableTest(page: Page, dbType: _DbType) { | CODE |
| LOW | frontend/e2e/db-manager.spec.ts | 327 | async function setupNewResourceAndOpenDbManager(page: Page, dbType: DbType) { | CODE |
| LOW | frontend/src/lib/workspaceProtectionRules.svelte.ts | 89 | export async function fetchProtectionRulesForWorkspace( | CODE |
| LOW | frontend/src/lib/workspaceProtectionRules.svelte.ts | 97 | export async function readProtectionRulesForWorkspace( | CODE |
| LOW | frontend/src/lib/workspaceProtectionRules.svelte.ts | 203 | export function isRuleUnconditionallyActiveInRulesets( | CODE |
| LOW | frontend/src/lib/workspaceProtectionRules.svelte.ts | 222 | export function canUserBypassRuleKindInRulesets( | CODE |
| 1050 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM⚡ | system_prompts/generate.py | 647 | # ============================================================================= | COMMENT |
| MEDIUM⚡ | system_prompts/generate.py | 649 | # ============================================================================= | COMMENT |
| MEDIUM | system_prompts/generate.py | 67 | # ============================================================================= | COMMENT |
| MEDIUM | system_prompts/generate.py | 69 | # ============================================================================= | COMMENT |
| MEDIUM | system_prompts/generate.py | 168 | # ============================================================================= | COMMENT |
| MEDIUM | system_prompts/generate.py | 170 | # ============================================================================= | COMMENT |
| MEDIUM | system_prompts/generate.py | 301 | # ============================================================================= | COMMENT |
| MEDIUM | system_prompts/generate.py | 303 | # ============================================================================= | COMMENT |
| MEDIUM | system_prompts/generate.py | 834 | # ============================================================================= | COMMENT |
| MEDIUM | system_prompts/generate.py | 836 | # ============================================================================= | COMMENT |
| MEDIUM | system_prompts/generate.py | 879 | # ============================================================================= | COMMENT |
| MEDIUM | system_prompts/generate.py | 881 | # ============================================================================= | COMMENT |
| MEDIUM | system_prompts/generate.py | 1113 | # ============================================================================= | COMMENT |
| MEDIUM | system_prompts/generate.py | 1115 | # ============================================================================= | COMMENT |
| MEDIUM | system_prompts/generate.py | 1315 | # ============================================================================= | COMMENT |
| MEDIUM | system_prompts/generate.py | 1317 | # ============================================================================= | COMMENT |
| MEDIUM | system_prompts/generate.py | 1618 | # ============================================================================= | COMMENT |
| MEDIUM | system_prompts/generate.py | 1620 | # ============================================================================= | COMMENT |
| MEDIUM | system_prompts/generate.py | 2026 | # ============================================================================= | COMMENT |
| MEDIUM | system_prompts/generate.py | 2028 | # ============================================================================= | COMMENT |
| MEDIUM | system_prompts/generate.py | 2410 | # ============================================================================= | STRING |
| MEDIUM | system_prompts/generate.py | 2412 | # ============================================================================= | STRING |
| MEDIUM | system_prompts/utils.py | 17 | # ============================================================================= | COMMENT |
| MEDIUM | system_prompts/utils.py | 19 | # ============================================================================= | COMMENT |
| MEDIUM | system_prompts/utils.py | 35 | # ============================================================================= | COMMENT |
| MEDIUM | system_prompts/utils.py | 37 | # ============================================================================= | COMMENT |
| MEDIUM | system_prompts/utils.py | 68 | # ============================================================================= | COMMENT |
| MEDIUM | system_prompts/utils.py | 70 | # ============================================================================= | COMMENT |
| MEDIUM | system_prompts/utils.py | 85 | # ============================================================================= | COMMENT |
| MEDIUM | system_prompts/utils.py | 87 | # ============================================================================= | COMMENT |
| MEDIUM | system_prompts/utils.py | 206 | # ============================================================================= | COMMENT |
| MEDIUM | system_prompts/utils.py | 208 | # ============================================================================= | COMMENT |
| MEDIUM | system_prompts/utils.py | 299 | # ============================================================================= | COMMENT |
| MEDIUM | system_prompts/utils.py | 301 | # ============================================================================= | COMMENT |
| MEDIUM | system_prompts/utils.py | 407 | # ============================================================================= | COMMENT |
| MEDIUM | system_prompts/utils.py | 409 | # ============================================================================= | COMMENT |
| MEDIUM | frontend/src/lib/components/DBTable.svelte | 128 | // ── Hidden columns ─────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | frontend/src/lib/components/DBTable.svelte | 155 | // ── Filters ────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | frontend/src/lib/components/DBTable.svelte | 178 | // ── Foreign keys ───────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | frontend/src/lib/components/DBTable.svelte | 202 | // ── Sorting ────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | frontend/src/lib/components/DBTable.svelte | 210 | // ── Rows (infinite scroll) ─────────────────────────────────────────────── | COMMENT |
| MEDIUM | frontend/src/lib/components/DBTable.svelte | 363 | // ── Stored layout ──────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | frontend/src/lib/components/DBTable.svelte | 380 | // ── Column widths ──────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | frontend/src/lib/components/DBTable.svelte | 433 | // ── Pinning ────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | frontend/src/lib/components/DBTable.svelte | 436 | // ── Joined columns ─────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | frontend/src/lib/components/DBTable.svelte | 541 | // ── Selection & keyboard ───────────────────────────────────────────────── | COMMENT |
| MEDIUM | frontend/src/lib/components/DBTable.svelte | 622 | // ── Editing ────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | frontend/src/lib/components/DBTable.svelte | 678 | // ── Formats ────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | frontend/src/lib/components/DBTable.svelte | 708 | // ── Context menu ───────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | frontend/src/lib/components/DBTable.svelte | 879 | // ── Add column ─────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | …c/lib/components/sessions/sessionDeployModel.svelte.ts | 213 | // ── Stale drafts (base ≠ deployed head) ────────────────────────────────── | COMMENT |
| MEDIUM | …c/lib/components/sessions/sessionDeployModel.svelte.ts | 236 | // ── Deploy permission ──────────────────────────────────────────────────── | COMMENT |
| MEDIUM | …c/lib/components/sessions/sessionDeployModel.svelte.ts | 274 | // ── Deploy execution ───────────────────────────────────────────────────── | COMMENT |
| MEDIUM | …c/lib/components/sessions/sessionDeployModel.svelte.ts | 363 | // ── Diff values (one resolver for tree + column) ───────────────────────── | COMMENT |
| MEDIUM | …src/lib/components/sessions/WorkspaceDiffDrawer.svelte | 208 | // ── Badge presentation ───────────────────────────────────────────────────── | COMMENT |
| MEDIUM | …src/lib/components/sessions/WorkspaceDiffDrawer.svelte | 287 | // ── Tree ───────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | …src/lib/components/sessions/WorkspaceDiffDrawer.svelte | 409 | // ── Keyboard nav ───────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | …src/lib/components/sessions/WorkspaceDiffDrawer.svelte | 528 | // ── Diff values (lazy Monaco mount, one resolver via the model) ────────── | COMMENT |
| MEDIUM | …/src/lib/components/sessions/PipelineEditorView.svelte | 222 | // ── Run dispatch + live run state ────────────────────────────────────────── | COMMENT |
| MEDIUM | …/src/lib/components/sessions/PipelineEditorView.svelte | 317 | // ── Deploy all ─────────────────────────────────────────────────────────── | COMMENT |
| 127 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | frontend/src/lib/components/graph/noteEditor.svelte.ts | 241 | // Step 1: Clean invalid nodes from existing group notes | COMMENT |
| LOW | frontend/src/lib/components/graph/noteEditor.svelte.ts | 254 | // Step 2: Complete paths for each group using the DAG algorithm | COMMENT |
| LOW | frontend/src/lib/components/graph/compoundLayout.ts | 313 | // Step 1: detect compound groups at this level | COMMENT |
| LOW | frontend/src/lib/components/graph/compoundLayout.ts | 436 | // Step 4: Build flattened node list for sugiyama | COMMENT |
| LOW | frontend/src/lib/components/graph/compoundLayout.ts | 461 | // Step 5: Run sugiyama on flattened nodes | COMMENT |
| LOW | frontend/src/lib/components/graph/compoundLayout.ts | 479 | // Step 6: Resolve absolute positions | COMMENT |
| LOW⚡ | …ntend/src/lib/components/graph/GroupModuleIcons.svelte | 45 | // Step 1: try all badges with full ids | COMMENT |
| LOW⚡ | …ntend/src/lib/components/graph/GroupModuleIcons.svelte | 50 | // Step 2: try all badges with ids capped at 8rem | COMMENT |
| LOW⚡ | …ntend/src/lib/components/graph/GroupModuleIcons.svelte | 55 | // Step 3: remove last modules until capped badges fit | COMMENT |
| LOW | frontend/src/lib/components/flows/multiSelectUtils.ts | 55 | // Step 1: Filter out virtual IDs | COMMENT |
| LOW⚡ | integration_tests/test/git_sync_test.py | 953 | # Step 1: Create git branches for the fork | COMMENT |
| LOW⚡ | integration_tests/test/git_sync_test.py | 959 | # Step 2: Create the fork workspace | COMMENT |
| LOW | .agents/skills/native-trigger/SKILL.md | 196 | ### Step 1: Database Migration | COMMENT |
| LOW | .agents/skills/native-trigger/SKILL.md | 213 | ### Step 2: Update windmill-common Enums | COMMENT |
| LOW | .agents/skills/native-trigger/SKILL.md | 223 | ### Step 3: Backend Service Module | COMMENT |
| LOW | .agents/skills/native-trigger/SKILL.md | 483 | ### Step 4: Update lib.rs Registry | COMMENT |
| LOW | .agents/skills/native-trigger/SKILL.md | 505 | ### Step 5: Update handler.rs Routes | COMMENT |
| LOW | .agents/skills/native-trigger/SKILL.md | 524 | ### Step 6: Update sync.rs | COMMENT |
| LOW⚡ | .agents/skills/native-trigger/SKILL.md | 547 | ### Step 7: Frontend Service Registry | COMMENT |
| LOW⚡ | .agents/skills/native-trigger/SKILL.md | 553 | ### Step 8: Frontend Trigger Form Component | COMMENT |
| LOW⚡ | .agents/skills/native-trigger/SKILL.md | 557 | ### Step 9: Frontend Icon Component | COMMENT |
| LOW⚡ | .agents/skills/native-trigger/SKILL.md | 561 | ### Step 10: Update NativeTriggerEditor | COMMENT |
| LOW⚡ | .agents/skills/native-trigger/SKILL.md | 565 | ### Step 11: Workspace Integration UI | COMMENT |
| LOW | .agents/skills/native-trigger/SKILL.md | 588 | ### Step 12: Update `frontend/src/lib/components/triggers/utils.ts` | COMMENT |
| LOW⚡ | .agents/skills/native-trigger/SKILL.md | 600 | ### Step 13: Update TriggersBadge Component | COMMENT |
| LOW⚡ | .agents/skills/native-trigger/SKILL.md | 608 | ### Step 14: Update TriggersWrapper.svelte | COMMENT |
| LOW⚡ | .agents/skills/native-trigger/SKILL.md | 614 | ### Step 15: Update AddTriggersButton.svelte | COMMENT |
| LOW⚡ | .agents/skills/native-trigger/SKILL.md | 623 | ### Step 16: Update TriggersEditor.svelte Delete Handling | COMMENT |
| LOW⚡ | .agents/skills/native-trigger/SKILL.md | 629 | ### Step 17: Update `getUsedTriggers` for Sidebar Visibility | COMMENT |
| LOW | .agents/skills/native-trigger/SKILL.md | 640 | ### Step 18: Update OpenAPI Spec and Regenerate Types | COMMENT |
| LOW | .claude/skills/native-trigger/SKILL.md | 196 | ### Step 1: Database Migration | COMMENT |
| LOW | .claude/skills/native-trigger/SKILL.md | 213 | ### Step 2: Update windmill-common Enums | COMMENT |
| LOW | .claude/skills/native-trigger/SKILL.md | 223 | ### Step 3: Backend Service Module | COMMENT |
| LOW | .claude/skills/native-trigger/SKILL.md | 483 | ### Step 4: Update lib.rs Registry | COMMENT |
| LOW | .claude/skills/native-trigger/SKILL.md | 505 | ### Step 5: Update handler.rs Routes | COMMENT |
| LOW | .claude/skills/native-trigger/SKILL.md | 524 | ### Step 6: Update sync.rs | COMMENT |
| LOW⚡ | .claude/skills/native-trigger/SKILL.md | 547 | ### Step 7: Frontend Service Registry | COMMENT |
| LOW⚡ | .claude/skills/native-trigger/SKILL.md | 553 | ### Step 8: Frontend Trigger Form Component | COMMENT |
| LOW⚡ | .claude/skills/native-trigger/SKILL.md | 557 | ### Step 9: Frontend Icon Component | COMMENT |
| LOW⚡ | .claude/skills/native-trigger/SKILL.md | 561 | ### Step 10: Update NativeTriggerEditor | COMMENT |
| LOW⚡ | .claude/skills/native-trigger/SKILL.md | 565 | ### Step 11: Workspace Integration UI | COMMENT |
| LOW | .claude/skills/native-trigger/SKILL.md | 588 | ### Step 12: Update `frontend/src/lib/components/triggers/utils.ts` | COMMENT |
| LOW⚡ | .claude/skills/native-trigger/SKILL.md | 600 | ### Step 13: Update TriggersBadge Component | COMMENT |
| LOW⚡ | .claude/skills/native-trigger/SKILL.md | 608 | ### Step 14: Update TriggersWrapper.svelte | COMMENT |
| LOW⚡ | .claude/skills/native-trigger/SKILL.md | 614 | ### Step 15: Update AddTriggersButton.svelte | COMMENT |
| LOW⚡ | .claude/skills/native-trigger/SKILL.md | 623 | ### Step 16: Update TriggersEditor.svelte Delete Handling | COMMENT |
| LOW⚡ | .claude/skills/native-trigger/SKILL.md | 629 | ### Step 17: Update `getUsedTriggers` for Sidebar Visibility | COMMENT |
| LOW | .claude/skills/native-trigger/SKILL.md | 640 | ### Step 18: Update OpenAPI Spec and Regenerate Types | COMMENT |
| LOW⚡ | …indmill-api-integration-tests/tests/native_triggers.rs | 572 | // Step 1: Delete triggers | COMMENT |
| LOW⚡ | …indmill-api-integration-tests/tests/native_triggers.rs | 577 | // Step 2: Cleanup OAuth resources | COMMENT |
| LOW⚡ | …indmill-api-integration-tests/tests/native_triggers.rs | 587 | // Step 3: Delete workspace integration | COMMENT |
| LOW | backend/windmill-worker/src/bun_executor.rs | 3861 | // Step 1: Save checkpoint, suspend parent, and seed child checkpoints | COMMENT |
| LOW | backend/windmill-worker/src/bun_executor.rs | 3939 | // Step 2: Push child jobs (now visible to workers). | COMMENT |
| LOW | backend/windmill-worker/src/prepare_deps.rs | 423 | // Step 1: Create virtual environment using uv | COMMENT |
| LOW | backend/windmill-worker/src/prepare_deps.rs | 470 | // Step 2: Install packages using uv pip install | COMMENT |
| LOW | backend/windmill-worker/src/prepare_deps.rs | 643 | // Step 1: Run build.js to generate package.json | COMMENT |
| LOW | backend/windmill-worker/src/prepare_deps.rs | 734 | // Step 2: Run bun install, from the same registry configuration a job installs with. | COMMENT |
| LOW | backend/windmill-api-workspaces/src/workspaces.rs | 11534 | // Step 1: Disable all schedules and clear their queued jobs | COMMENT |
| LOW | backend/windmill-api-workspaces/src/workspaces.rs | 11624 | // Step 2: Get all remaining queued jobs for this workspace (non-schedule jobs) | COMMENT |
| LOW | backend/windmill-api-workspaces/src/workspaces.rs | 11637 | // Step 3: Cancel all remaining jobs using the existing cancel_jobs function | COMMENT |
| 77 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | docker/test_windmill_extra.ts | 536 | print(f"Hello {name}") | CODE |
| HIGH⚡ | frontend/src/lib/script_helpers.ts | 16 | print("message", message) | CODE |
| HIGH⚡ | frontend/src/lib/script_helpers.ts | 17 | print("name", name) | CODE |
| HIGH⚡ | frontend/src/lib/script_helpers.ts | 18 | print("step_id", step_id) | CODE |
| HIGH⚡ | frontend/src/lib/script_helpers.ts | 65 | print(f"Hello World and a warm welcome especially to {name}") | CODE |
| HIGH⚡ | frontend/src/lib/script_helpers.ts | 66 | print("and its acolytes..", age, obj, l, len(file_)) | CODE |
| HIGH⚡ | frontend/src/lib/script_helpers.ts | 73 | print(f"The variable at \`f/examples/secret\`: {secret}") | CODE |
| HIGH | frontend/src/lib/components/graph/wacToFlow.test.ts | 17 | expect(isWorkflowAsCode('@workflow\nasync def main():\n return None\n', 'python3')).toBe(true) | CODE |
| HIGH | …/src/lib/components/flows/content/s3Scripts/python3.ts | 24 | print(input_obj) | CODE |
| HIGH | …/src/lib/components/flows/content/s3Scripts/python3.ts | 34 | print(downloaded_file.read()) | CODE |
| HIGH | …/src/lib/components/flows/content/s3Scripts/python3.ts | 80 | print(output_df) | CODE |
| HIGH⚡ | cli/test/lock_cache_unit.test.ts | 352 | print("hello")`; | CODE |
| HIGH⚡ | cli/test/lock_cache_unit.test.ts | 362 | print("hello")`; | CODE |
| HIGH⚡ | cli/test/lock_cache_unit.test.ts | 365 | print("world")`; | CODE |
| HIGH⚡ | cli/test/lock_cache_unit.test.ts | 373 | print("hello")`; | CODE |
| HIGH⚡ | cli/test/lock_cache_unit.test.ts | 376 | print("hello")`; | CODE |
| HIGH⚡ | cli/test/lock_cache_unit.test.ts | 383 | print("hello")`; | CODE |
| HIGH⚡ | cli/test/lock_cache_unit.test.ts | 385 | print("hello")`; | CODE |
| HIGH⚡ | cli/test/lock_cache_unit.test.ts | 392 | print("hello")`; | CODE |
| HIGH⚡ | cli/test/lock_cache_unit.test.ts | 394 | print("hello")`; | CODE |
| HIGH⚡ | cli/test/lock_cache_unit.test.ts | 442 | print("hello")`; | CODE |
| HIGH⚡ | cli/test/lock_cache_unit.test.ts | 444 | print("hello")`; | CODE |
| HIGH⚡ | cli/test/lock_cache_unit.test.ts | 453 | print("hello")`; | CODE |
| HIGH⚡ | cli/test/lock_cache_unit.test.ts | 455 | print("hello")`; | CODE |
| HIGH | cli/test/lock_cache_unit.test.ts | 305 | print("hello")`; | CODE |
| HIGH | cli/test/lock_cache_unit.test.ts | 406 | print("hello")`; | CODE |
| HIGH | cli/test/lock_cache_unit.test.ts | 475 | print("hello")`; | CODE |
| HIGH | cli/test/lock_cache_unit.test.ts | 478 | print("world")`; | CODE |
| HIGH | debugger/dap_debug_service.ts | 1104 | print("__WINDMILL_RESULT__:" + json.dumps(_result)) | CODE |
| HIGH | debugger/test_debug_service.ts | 45 | print(f"PY: Hello {name}") | CODE |
| HIGH | debugger/test_debug_service.ts | 62 | print(f"ENV: Workspace={workspace}") | CODE |
| HIGH | debugger/test_debug_service.ts | 102 | print(f"Requests version: {version}") | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | frontend/src/lib/components/graph/noteEditor.svelte.ts | 241 | // Step 1: Clean invalid nodes from existing group notes | COMMENT |
| LOW | frontend/src/lib/components/graph/noteEditor.svelte.ts | 254 | // Step 2: Complete paths for each group using the DAG algorithm | COMMENT |
| LOW | frontend/src/lib/components/graph/compoundLayout.ts | 313 | // Step 1: detect compound groups at this level | COMMENT |
| LOW | frontend/src/lib/components/graph/compoundLayout.ts | 436 | // Step 4: Build flattened node list for sugiyama | COMMENT |
| LOW | frontend/src/lib/components/graph/compoundLayout.ts | 461 | // Step 5: Run sugiyama on flattened nodes | COMMENT |
| LOW | frontend/src/lib/components/graph/compoundLayout.ts | 479 | // Step 6: Resolve absolute positions | COMMENT |
| LOW⚡ | …ntend/src/lib/components/graph/GroupModuleIcons.svelte | 45 | // Step 1: try all badges with full ids | COMMENT |
| LOW⚡ | …ntend/src/lib/components/graph/GroupModuleIcons.svelte | 50 | // Step 2: try all badges with ids capped at 8rem | COMMENT |
| LOW⚡ | …ntend/src/lib/components/graph/GroupModuleIcons.svelte | 55 | // Step 3: remove last modules until capped badges fit | COMMENT |
| LOW | frontend/src/lib/components/flows/multiSelectUtils.ts | 55 | // Step 1: Filter out virtual IDs | COMMENT |
| LOW⚡ | integration_tests/test/git_sync_test.py | 953 | # Step 1: Create git branches for the fork | COMMENT |
| LOW⚡ | integration_tests/test/git_sync_test.py | 959 | # Step 2: Create the fork workspace | COMMENT |
| LOW⚡ | …indmill-api-integration-tests/tests/native_triggers.rs | 572 | // Step 1: Delete triggers | COMMENT |
| LOW⚡ | …indmill-api-integration-tests/tests/native_triggers.rs | 577 | // Step 2: Cleanup OAuth resources | COMMENT |
| LOW⚡ | …indmill-api-integration-tests/tests/native_triggers.rs | 587 | // Step 3: Delete workspace integration | COMMENT |
| LOW | backend/windmill-worker/src/bun_executor.rs | 3861 | // Step 1: Save checkpoint, suspend parent, and seed child checkpoints | COMMENT |
| LOW | backend/windmill-worker/src/bun_executor.rs | 3939 | // Step 2: Push child jobs (now visible to workers). | COMMENT |
| LOW | backend/windmill-worker/src/prepare_deps.rs | 423 | // Step 1: Create virtual environment using uv | COMMENT |
| LOW | backend/windmill-worker/src/prepare_deps.rs | 470 | // Step 2: Install packages using uv pip install | COMMENT |
| LOW | backend/windmill-worker/src/prepare_deps.rs | 643 | // Step 1: Run build.js to generate package.json | COMMENT |
| LOW | backend/windmill-worker/src/prepare_deps.rs | 734 | // Step 2: Run bun install, from the same registry configuration a job installs with. | COMMENT |
| LOW | backend/windmill-api-workspaces/src/workspaces.rs | 11534 | // Step 1: Disable all schedules and clear their queued jobs | COMMENT |
| LOW | backend/windmill-api-workspaces/src/workspaces.rs | 11624 | // Step 2: Get all remaining queued jobs for this workspace (non-schedule jobs) | COMMENT |
| LOW | backend/windmill-api-workspaces/src/workspaces.rs | 11637 | // Step 3: Cancel all remaining jobs using the existing cancel_jobs function | COMMENT |
| LOW | backend/windmill-api-workspaces/src/workspaces.rs | 14356 | // Step 1: Group paths by (workspace, kind) | COMMENT |
| LOW | backend/windmill-api-workspaces/src/workspaces.rs | 14369 | // Step 2: Batch query for each (workspace, kind) combination, each in its | COMMENT |
| LOW | backend/windmill-api-workspaces/src/workspaces.rs | 14387 | // Step 3: Filter diffs based on visibility | COMMENT |
| LOW | backend/tests/relock_skip.rs | 114 | // Step 1: Redeploy leaf_1 - first time, no hashes exist, all should relock | COMMENT |
| LOW | backend/tests/relock_skip.rs | 142 | // Step 2: Redeploy leaf_2 - first time for leaf_2, should relock | COMMENT |
| LOW | backend/tests/relock_skip.rs | 169 | // Step 3: Redeploy leaf_2 with trivial change (comment) - lock stays same, should SKIP | COMMENT |
| LOW | backend/tests/relock_skip.rs | 203 | // Step 4: Redeploy leaf_2 with actual dependency change (add tiny via comment) - should NOT skip | COMMENT |
| LOW | backend/tests/relock_skip.rs | 256 | // Step 1: Redeploy default (unnamed) workspace deps - first time, should relock | COMMENT |
| LOW | backend/tests/relock_skip.rs | 288 | // Step 2: Redeploy default workspace deps again - should SKIP | COMMENT |
| LOW | backend/tests/relock_skip.rs | 309 | // Step 3: Redeploy default workspace deps with different content - should NOT skip | COMMENT |
| LOW | backend/tests/relock_skip.rs | 335 | // Step 4: Deploy named workspace deps first time - should relock (no hash exists yet) | COMMENT |
| LOW | backend/tests/relock_skip.rs | 362 | // Step 5: Deploy named workspace deps again with no change - should SKIP | COMMENT |
| LOW | backend/tests/relock_skip.rs | 389 | // Step 6: Deploy named workspace deps with small change - should NOT skip | COMMENT |
| LOW | backend/tests/ci_tests.rs | 53 | // Step 1: Create the test script with a CI annotation targeting deploy_target. | COMMENT |
| LOW | backend/tests/ci_tests.rs | 71 | // Step 2: Create the target script. Its dependency job, once processed, | COMMENT |
| LOW⚡ | backend/tests/instance_config.rs | 661 | // Step 1: Seed initial state | COMMENT |
| LOW⚡ | backend/tests/instance_config.rs | 671 | // Step 2: Read via from_db | COMMENT |
| LOW⚡ | backend/tests/instance_config.rs | 680 | // Step 3: Modify — change base_url, add a new setting, remove retention | COMMENT |
| LOW⚡ | backend/tests/instance_config.rs | 689 | // Step 4: Diff + apply (Merge mode — no deletes) | COMMENT |
| LOW⚡ | backend/tests/instance_config.rs | 697 | // Step 5: Read back and verify | COMMENT |
| LOW | backend/tests/ws_specific.rs | 286 | // Step 1: create resource with ws_specific=true. | COMMENT |
| LOW | backend/tests/ws_specific.rs | 311 | // Step 2: upsert (update_if_exists=true) with ws_specific=false — must | COMMENT |
| LOW | backend/tests/ws_specific.rs | 338 | // Step 3: upsert without ws_specific (None) leaves whatever's there | COMMENT |
| LOW | backend/windmill-runtime-nativets/tests/otel_init.rs | 46 | // Step 1: reproduce the footgun. `OtelConfig::default()` has | COMMENT |
| LOW | backend/windmill-runtime-nativets/tests/otel_init.rs | 73 | // Step 2: re-call init with the exact config shape that the EE | COMMENT |
| LOW⚡ | …kend/windmill-common/tests/secret_backend_migration.rs | 244 | // Step 1: Migrate to Vault | COMMENT |
| LOW⚡ | …kend/windmill-common/tests/secret_backend_migration.rs | 252 | // Step 2: Clear database values | COMMENT |
| LOW⚡ | …kend/windmill-common/tests/secret_backend_migration.rs | 259 | // Step 3: Migrate back from Vault | COMMENT |
| LOW⚡ | …kend/windmill-common/tests/secret_backend_migration.rs | 267 | // Step 4: Verify round-trip integrity | COMMENT |
| LOW | …ckend/windmill-common/tests/instance_group_auto_add.rs | 375 | // Step 1: Alice is added via engineering group (operator) | COMMENT |
| LOW⚡ | …ckend/windmill-common/tests/instance_group_auto_add.rs | 406 | // Step 2: Alice is added to admins group | COMMENT |
| LOW⚡ | …ckend/windmill-common/tests/instance_group_auto_add.rs | 414 | // Step 3: Simulate the fixed logic — find all user's groups, compute highest role, update | COMMENT |
| LOW | cli/test/relative_imports_wasm.test.ts | 505 | // Step 1: Create helper scripts locally and deploy them to remote via push | COMMENT |
| LOW⚡ | cli/test/relative_imports_wasm.test.ts | 523 | // Step 2: Now create flows/apps that import the deployed helpers | COMMENT |
| LOW⚡ | cli/test/relative_imports_wasm.test.ts | 529 | // Step 3: Generate initial metadata for everything | COMMENT |
| LOW | cli/test/relative_imports_wasm.test.ts | 556 | // Step 5: Modify helpers LOCALLY (NOT pushed to remote — this is the key scenario) | COMMENT |
| 41 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | system_prompts/auto-generated/script.md | 0 | python # from wmill import s3object # # s3_obj = s3object(s3="/path/to/my_file.txt") # my_obj_content = client.load_s3_f | STRING |
| HIGH | system_prompts/auto-generated/prompts.ts | 0 | python # from wmill import s3object # # s3_obj = s3object(s3="/path/to/my_file.txt") # my_obj_content = client.load_s3_f | STRING |
| HIGH | system_prompts/auto-generated/sdks/python.md | 0 | python # from wmill import s3object # # s3_obj = s3object(s3="/path/to/my_file.txt") # my_obj_content = client.load_s3_f | STRING |
| HIGH | …ts/auto-generated/skills/write-script-python3/SKILL.md | 0 | python # from wmill import s3object # # s3_obj = s3object(s3="/path/to/my_file.txt") # my_obj_content = client.load_s3_f | STRING |
| HIGH | cli/src/guidance/skills.gen.ts | 0 | python # from wmill import s3object # # s3_obj = s3object(s3="/path/to/my_file.txt") # my_obj_content = client.load_s3_f | STRING |
| HIGH | system_prompts/auto-generated/script.md | 0 | python # from wmill import s3object # # s3_obj = s3object(s3="/path/to/my_file.txt") # with wmill.load_s3_file_reader(s3 | STRING |
| HIGH | system_prompts/auto-generated/prompts.ts | 0 | python # from wmill import s3object # # s3_obj = s3object(s3="/path/to/my_file.txt") # with wmill.load_s3_file_reader(s3 | STRING |
| HIGH | system_prompts/auto-generated/sdks/python.md | 0 | python # from wmill import s3object # # s3_obj = s3object(s3="/path/to/my_file.txt") # with wmill.load_s3_file_reader(s3 | STRING |
| HIGH | …ts/auto-generated/skills/write-script-python3/SKILL.md | 0 | python # from wmill import s3object # # s3_obj = s3object(s3="/path/to/my_file.txt") # with wmill.load_s3_file_reader(s3 | STRING |
| HIGH | cli/src/guidance/skills.gen.ts | 0 | python # from wmill import s3object # # s3_obj = s3object(s3="/path/to/my_file.txt") # with wmill.load_s3_file_reader(s3 | STRING |
| HIGH | system_prompts/auto-generated/script.md | 0 | python # from wmill import s3object # # s3_obj = s3object(s3="/path/to/my_file.txt") # # # for an in memory bytes array: | STRING |
| HIGH | system_prompts/auto-generated/prompts.ts | 0 | python # from wmill import s3object # # s3_obj = s3object(s3="/path/to/my_file.txt") # # # for an in memory bytes array: | STRING |
| HIGH | system_prompts/auto-generated/sdks/python.md | 0 | python # from wmill import s3object # # s3_obj = s3object(s3="/path/to/my_file.txt") # # # for an in memory bytes array: | STRING |
| HIGH | …ts/auto-generated/skills/write-script-python3/SKILL.md | 0 | python # from wmill import s3object # # s3_obj = s3object(s3="/path/to/my_file.txt") # # # for an in memory bytes array: | STRING |
| HIGH | cli/src/guidance/skills.gen.ts | 0 | python # from wmill import s3object # # s3_obj = s3object(s3="/path/to/my_file.txt") # # # for an in memory bytes array: | STRING |
| HIGH | system_prompts/auto-generated/script.md | 0 | python # from wmill import s3object # # s3_obj = s3object(s3="/path/to/my_file.txt") # client.delete_s3_object(s3_obj) # | STRING |
| HIGH | system_prompts/auto-generated/prompts.ts | 0 | python # from wmill import s3object # # s3_obj = s3object(s3="/path/to/my_file.txt") # client.delete_s3_object(s3_obj) # | STRING |
| HIGH | system_prompts/auto-generated/sdks/python.md | 0 | python # from wmill import s3object # # s3_obj = s3object(s3="/path/to/my_file.txt") # client.delete_s3_object(s3_obj) # | STRING |
| HIGH | …ts/auto-generated/skills/write-script-python3/SKILL.md | 0 | python # from wmill import s3object # # s3_obj = s3object(s3="/path/to/my_file.txt") # client.delete_s3_object(s3_obj) # | STRING |
| HIGH | cli/src/guidance/skills.gen.ts | 0 | python # from wmill import s3object # # s3_obj = s3object(s3="/path/to/my_file.txt") # client.delete_s3_object(s3_obj) # | STRING |
| HIGH | system_prompts/auto-generated/prompts.ts | 0 | create or replace table stripe_charges as select unnest(from_json($rows, '[{"id":"varchar","amount":"bigint","created":" | STRING |
| HIGH | …_prompts/auto-generated/skills/write-pipeline/SKILL.md | 0 | create or replace table stripe_charges as select unnest(from_json($rows, '[{"id":"varchar","amount":"bigint","created":" | STRING |
| HIGH | system_prompts/base/pipeline-base.md | 0 | create or replace table stripe_charges as select unnest(from_json($rows, '[{"id":"varchar","amount":"bigint","created":" | STRING |
| HIGH | cli/src/guidance/skills.gen.ts | 0 | create or replace table stripe_charges as select unnest(from_json($rows, '[{"id":"varchar","amount":"bigint","created":" | STRING |
| HIGH | integration_tests/ai_agent_tests/conftest.py | 0 | export function main(a: number, b: number): number { return a + b; } | STRING |
| HIGH | integration_tests/ai_agent_tests/test_output_schema.py | 0 | export function main(a: number, b: number): number { return a + b; } | STRING |
| HIGH | integration_tests/ai_agent_tests/test_tool_calling.py | 0 | export function main(a: number, b: number): number { return a + b; } | STRING |
| HIGH | integration_tests/ai_agent_tests/test_streaming.py | 0 | export function main(a: number, b: number): number { return a + b; } | STRING |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM⚡ | system_prompts/auto-generated/prompts.ts | 2548 | # Create a new authentication token. | STRING |
| MEDIUM⚡ | system_prompts/auto-generated/prompts.ts | 2557 | # Create a script job by path and return its job id. | STRING |
| MEDIUM⚡ | system_prompts/auto-generated/prompts.ts | 2564 | # Create a script job by hash and return its job id. See \`\`run_script_by_path_async\`\` for \`\`retry\`\`. | STRING |
| MEDIUM⚡ | system_prompts/auto-generated/prompts.ts | 2567 | # Create a flow job and return its job id. | STRING |
| MEDIUM | system_prompts/auto-generated/prompts.ts | 3028 | # Create a script job and return its job ID. | STRING |
| MEDIUM | system_prompts/auto-generated/prompts.ts | 3227 | # Create a task that dispatches to a separate Windmill script. | STRING |
| MEDIUM | system_prompts/auto-generated/prompts.ts | 3240 | # Create a task that dispatches to a separate Windmill flow. | STRING |
| MEDIUM | system_prompts/auto-generated/prompts.ts | 3592 | # Create a task that dispatches to a separate Windmill script. | STRING |
| MEDIUM | system_prompts/auto-generated/prompts.ts | 3605 | # Create a task that dispatches to a separate Windmill flow. | STRING |
| MEDIUM | frontend/src/lib/script_helpers.ts | 1193 | # Define the arguments of the windmill script | COMMENT |
| MEDIUM | …components/instanceSettings/SecretBackendConfig.svelte | 701 | # Create a policy for Windmill secrets | COMMENT |
| MEDIUM | …components/instanceSettings/SecretBackendConfig.svelte | 711 | # Create the JWT role. bound_audiences must match the Vault server | COMMENT |
| MEDIUM⚡ | integration_tests/test/agent_workers.py | 235 | # Create a simple bash script tagged to run on the agent | COMMENT |
| MEDIUM⚡ | integration_tests/test/agent_workers.py | 245 | # Create the script with the agent_test tag so it runs on our agent | STRING |
| MEDIUM⚡ | lsp/pyls_launcher.py | 108 | # Create an instance of the language server | COMMENT |
| MEDIUM⚡ | lsp/pyls_launcher.py | 116 | # Create a writer that formats json messages with the correct LSP headers | COMMENT |
| MEDIUM⚡ | lsp/pyls_launcher.py | 119 | # Create a reader for consuming stdout of the language server. We need to | COMMENT |
| MEDIUM | backend/test_debounce_e2e.sh | 374 | # Create a sync script at a folder path where the 2nd segment is a number >= 28103. | COMMENT |
| MEDIUM | backend/parsers/windmill-parser-yaml/src/lib.rs | 985 | # Define the arguments of the windmill script | COMMENT |
| MEDIUM | backend/windmill-worker/src/bash_executor.rs | 193 | # Create a named pipe | COMMENT |
| MEDIUM⚡ | …end/windmill-api/src/mcp/session/gen/instructions.json | 230 | "script.python3": "# Global draft script instructions\n\n- Global mode writes complete draft payloads only; it does no | CODE |
| MEDIUM⚡ | …end/windmill-api/src/mcp/session/gen/instructions.json | 258 | "app.python3": "# Global draft app instructions\n\n- Global mode edits raw app drafts only; it does not save or deploy | CODE |
| MEDIUM⚡ | cli/src/guidance/skills.gen.ts | 4520 | # Create a new authentication token. | COMMENT |
| MEDIUM⚡ | cli/src/guidance/skills.gen.ts | 4529 | # Create a script job by path and return its job id. | COMMENT |
| MEDIUM⚡ | cli/src/guidance/skills.gen.ts | 4536 | # Create a script job by hash and return its job id. See \`\`run_script_by_path_async\`\` for \`\`retry\`\`. | COMMENT |
| MEDIUM⚡ | cli/src/guidance/skills.gen.ts | 4539 | # Create a flow job and return its job id. | COMMENT |
| MEDIUM | cli/src/guidance/skills.gen.ts | 5000 | # Create a script job and return its job ID. | COMMENT |
| MEDIUM | cli/src/guidance/skills.gen.ts | 5199 | # Create a task that dispatches to a separate Windmill script. | COMMENT |
| MEDIUM | cli/src/guidance/skills.gen.ts | 5212 | # Create a task that dispatches to a separate Windmill flow. | COMMENT |
| MEDIUM | cli/src/guidance/skills.gen.ts | 5766 | ## Creating a Flow | COMMENT |
| MEDIUM | cli/src/guidance/skills.gen.ts | 6479 | ## Creating a Raw App | COMMENT |
| MEDIUM | cli/src/guidance/skills.gen.ts | 8122 | # Create a task that dispatches to a separate Windmill script. | COMMENT |
| MEDIUM | cli/src/guidance/skills.gen.ts | 8135 | # Create a task that dispatches to a separate Windmill flow. | COMMENT |
| MEDIUM | examples/deploy/aws-eks-cloudformation/quicklaunch.yaml | 360 | # Create the installation script | COMMENT |
| MEDIUM | …amples/deploy/instance-config-iac/windmill-config.yaml | 3 | # This file is applied to the database via: windmill sync-config <file> | COMMENT |
| MEDIUM | examples/deploy/aws-ecs-terraform/.terraform.lock.hcl | 1 | # This file is maintained automatically by "terraform init". | COMMENT |
| MEDIUM | .github/workflows/backend-test.yml | 212 | # Create a simple test package | COMMENT |
| MEDIUM | debugger/dap_websocket_server.py | 703 | # Create a streaming output wrapper that sends output events in real-time | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | system_prompts/generate.py | 515 | except Exception as e: | CODE |
| LOW | system_prompts/generate.py | 627 | except Exception as e: | CODE |
| LOW | integration_tests/test/git_sync_test.py | 65 | except Exception as e: | CODE |
| LOW | integration_tests/test/git_sync_test.py | 71 | except Exception as e: | CODE |
| LOW | integration_tests/test/git_sync_test.py | 191 | except Exception: | CODE |
| LOW | integration_tests/test/git_sync_test.py | 204 | except Exception as e: | CODE |
| MEDIUM | integration_tests/test/wmill_integration_test_utils.py | 328 | print(f"Error retrieving global custom tags: Status {response.status_code}, Response: {response.content. | CODE |
| LOW | integration_tests/test/wmill_integration_test_utils.py | 330 | except Exception as e: | CODE |
| MEDIUM | integration_tests/test/wmill_integration_test_utils.py | 365 | print(f"Error adding tag to global custom tags: Status {response.status_code}, Response: {response.conte | CODE |
| LOW | integration_tests/test/wmill_integration_test_utils.py | 367 | except Exception as e: | CODE |
| MEDIUM | integration_tests/test/wmill_integration_test_utils.py | 402 | print(f"Error removing tag from global custom tags: Status {response.status_code}, Response: {response.c | CODE |
| LOW | integration_tests/test/wmill_integration_test_utils.py | 404 | except Exception as e: | CODE |
| MEDIUM | integration_tests/test/wmill_integration_test_utils.py | 434 | print(f"Error retrieving workers list: Status {response.status_code}, Response: {response.content.decode | CODE |
| LOW | integration_tests/test/wmill_integration_test_utils.py | 436 | except Exception as e: | CODE |
| LOW | integration_tests/test/agent_workers.py | 26 | except Exception as e: | CODE |
| LOW | integration_tests/test/agent_workers.py | 28 | except Exception as e: | CODE |
| LOW⚡ | integration_tests/test/agent_workers.py | 139 | except Exception as e: | CODE |
| MEDIUM⚡ | integration_tests/test/agent_workers.py | 140 | print(f"Error initializing Docker client for cleanup: {e}") | CODE |
| LOW⚡ | integration_tests/test/agent_workers.py | 149 | except Exception as e: | CODE |
| MEDIUM⚡ | integration_tests/test/agent_workers.py | 150 | print(f"Error cleaning up container using object: {e}") | CODE |
| LOW⚡ | integration_tests/test/agent_workers.py | 159 | except Exception as e: | CODE |
| MEDIUM⚡ | integration_tests/test/agent_workers.py | 160 | print(f"Error cleaning up container by name: {e}") | CODE |
| MEDIUM | python-client/wmill/tests/test_workflow.py | 464 | def wf(): | CODE |
| MEDIUM | python-client/wmill/tests/test_workflow.py | 1044 | def wf(): | CODE |
| LOW⚡ | python-client/wmill/tests/test_workflow.py | 467 | except Exception: | CODE |
| LOW | python-client/wmill/tests/test_workflow.py | 982 | except Exception as e: | CODE |
| LOW | python-client/wmill/tests/test_workflow.py | 1009 | except Exception: | CODE |
| LOW | python-client/wmill/tests/test_workflow.py | 1048 | except Exception as e: | CODE |
| LOW | python-client/wmill/tests/test_workflow.py | 1146 | except Exception: | CODE |
| MEDIUM | python-client/wmill/wmill/client.py | 2821 | def _run(self): | CODE |
| MEDIUM | python-client/wmill/wmill/client.py | 2832 | def _record(self, status, snapshot_id, row_count, error): | CODE |
| LOW | python-client/wmill/wmill/client.py | 93 | except Exception as e: | CODE |
| LOW | python-client/wmill/wmill/client.py | 688 | except Exception as e: | CODE |
| LOW | python-client/wmill/wmill/client.py | 1162 | except Exception as e: | CODE |
| LOW | python-client/wmill/wmill/client.py | 1197 | except Exception as e: | CODE |
| LOW | python-client/wmill/wmill/client.py | 2824 | except Exception as e: | CODE |
| LOW | python-client/wmill/wmill/client.py | 2847 | except Exception: | CODE |
| LOW | python-client/wmill/wmill/client.py | 2951 | except Exception: | CODE |
| LOW | python-client/wmill/wmill/client.py | 2971 | except Exception: | CODE |
| LOW | python-client/wmill/wmill/client.py | 2975 | except Exception: | CODE |
| LOW | python-client/wmill/wmill/client.py | 3012 | except Exception: | CODE |
| LOW | python-client/wmill/wmill/client.py | 3307 | except Exception as exc: | CODE |
| LOW | python-client/wmill/wmill/client.py | 3414 | except Exception as _exc: | CODE |
| LOW | python-client/wmill/wmill/client.py | 3493 | except Exception as _e: | CODE |
| LOW | python-client/wmill/wmill/client.py | 3958 | except Exception: | CODE |
| LOW | lsp/pyls_launcher.py | 17 | except Exception: # pylint: disable=broad-except | CODE |
| LOW⚡ | lsp/pyls_launcher.py | 129 | except Exception as e: | CODE |
| MEDIUM | lsp/pyls_launcher.py | 126 | def on_listen(msg): | CODE |
| LOW | typescript-client/tests/e2e_wac_v1.py | 35 | except Exception: | CODE |
| MEDIUM | backend/summarize_schema.py | 189 | print(f"Error: The file '{input_file}' was not found.") | CODE |
| LOW | backend/summarize_schema.py | 191 | except Exception as e: | CODE |
| LOW | …kend/parsers/windmill-parser-wac/tests/python_tests.rs | 165 | except Exception: | CODE |
| MEDIUM | …kend/parsers/windmill-parser-wac/tests/python_tests.rs | 162 | def my_etl(): | CODE |
| MEDIUM⚡ | backend/windmill-worker/loader.py | 82 | print(f"Error fetching script {script_path}: HTTP {e.code} - {e.reason} - {duration}s") | CODE |
| LOW⚡ | backend/windmill-worker/loader.py | 84 | except Exception as e: | CODE |
| MEDIUM⚡ | backend/windmill-worker/loader.py | 91 | print(f"Error fetching script {script_path}: {e} - {duration}s") | CODE |
| LOW | …end/generate_mcp_endpoints_tools/generate_mcp_tools.py | 28 | except Exception as e: | CODE |
| MEDIUM | …end/generate_mcp_endpoints_tools/generate_mcp_tools.py | 29 | print(f"Error loading OpenAPI spec: {e}", file=sys.stderr) | CODE |
| LOW | …end/generate_mcp_endpoints_tools/generate_mcp_tools.py | 254 | except Exception as e: | CODE |
| LOW | debugger/test_dap_server.py | 301 | except Exception as e: | CODE |
| 11 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | frontend/static/tailwind.js | 25 | https://www.w3ctech.com/topic/2226`));let o=t(...a);return o.postcssPlugin=e,o.postcssVersion=new ba().version,o}let s;r | CODE |
| LOW | frontend/src/lib/hubProject.test.ts | 39 | const long = hubProjectDescription({ readme: 'lorem ipsum '.repeat(40) }) | CODE |
| LOW | frontend/src/lib/components/SimpleEditor.svelte | 795 | id="placeholder" | CODE |
| LOW | frontend/src/lib/components/PrefixedInput.svelte | 24 | 'prefix' | 'value' | 'placeholder' | 'autofocus' | 'class' | CODE |
| LOW | …rc/lib/components/instanceSettings/SmtpSettings.svelte | 112 | placeholder: 'user@example.com', | CODE |
| LOW⚡ | frontend/src/lib/components/copilot/lib.ts | 580 | apiKey: 'fake-key', | CODE |
| LOW⚡ | frontend/src/lib/components/copilot/lib.ts | 591 | apiKey: 'fake-key', | CODE |
| LOW | …/components/copilot/chat/AssistantSkillsSection.svelte | 135 | const VALID_NAME_PLACEHOLDER = 'placeholder' | CODE |
| LOW | …b/components/triggers/http/OpenAPISpecGenerator.svelte | 270 | <input type="text" placeholder="Jane Doe" bind:value={contactName} /> | CODE |
| LOW | …/components/raw_apps/RawAppInlineScriptRunnable.svelte | 335 | placeholder={meta?.['placeholder']} | CODE |
| LOW | frontend/src/lib/components/recording/rawAppSnapshot.ts | 616 | el.getAttribute('placeholder') || | CODE |
| LOW | …end/src/lib/components/sessions/sessionState.svelte.ts | 82 | export type SessionSummarySource = 'placeholder' | 'generated' | 'manual' | CODE |
| LOW | …end/src/lib/components/sessions/sessionState.svelte.ts | 234 | s.summarySource !== 'placeholder' && | CODE |
| LOW | …end/src/lib/components/sessions/sessionState.svelte.ts | 1200 | summarySource: 'placeholder', | CODE |
| LOW | …end/src/lib/components/sessions/sessionState.svelte.ts | 1446 | if (s.summarySource !== 'placeholder') return false | CODE |
| LOW | …ntend/src/lib/components/sessions/sessionState.test.ts | 313 | summarySource: 'placeholder' | CODE |
| LOW | …ntend/src/lib/components/sessions/sessionState.test.ts | 334 | summarySource: 'placeholder' | CODE |
| LOW | …d/src/lib/components/sessions/sessionRuntime.svelte.ts | 418 | if (!session || session.summarySource !== 'placeholder') return | CODE |
| LOW | frontend/src/lib/components/wizards/NavbarWizard.svelte | 53 | placeholder={value.label?.['placeholder']} | CODE |
| LOW | frontend/src/lib/components/wizards/NavbarWizard.svelte | 107 | placeholder={value.disabled?.['placeholder']} | CODE |
| LOW | frontend/src/lib/components/wizards/NavbarWizard.svelte | 123 | placeholder={value.hidden?.['placeholder']} | CODE |
| LOW | …ontend/src/lib/components/wizards/ChartJSWizard.svelte | 61 | placeholder={value.value?.['placeholder']} | CODE |
| LOW | …d/src/lib/components/wizards/TableActionsWizard.svelte | 69 | placeholder={actionsOrder?.['placeholder']} | CODE |
| LOW | frontend/src/lib/components/wizards/PlotlyWizard.svelte | 122 | placeholder={value.value?.['placeholder']} | CODE |
| LOW | …ts/apps/components/inputs/AppCodeInputComponent.svelte | 60 | <InputValue key="placeholder" {id} input={configuration.placeholder} bind:value={placeholder} /> | CODE |
| LOW | …omponents/apps/components/inputs/AppQuillEditor.svelte | 141 | <InputValue key="placeholder" {id} input={configuration.placeholder} bind:value={placeholder} /> | CODE |
| LOW | …nts/apps/editor/settingsPanel/InputsSpecsEditor.svelte | 94 | placeholder={meta?.['placeholder']} | CODE |
| LOW | …apps/editor/settingsPanel/OneOfInputSpecsEditor.svelte | 136 | placeholder={config?.['placeholder']} | CODE |
| LOW | …ponents/apps/editor/settingsPanel/GridCondition.svelte | 169 | placeholder={condition?.['placeholder']} | CODE |
| LOW | …nts/apps/editor/settingsPanel/AGChartRichEditor.svelte | 34 | placeholder={xData?.['placeholder']} | CODE |
| LOW | …nts/apps/editor/settingsPanel/AGChartRichEditor.svelte | 54 | placeholder={datasets?.['placeholder']} | CODE |
| LOW | …ponents/apps/editor/settingsPanel/GridTabHidden.svelte | 57 | placeholder={field?.['placeholder']} | CODE |
| LOW | …nts/apps/editor/settingsPanel/ChartJSRichEditor.svelte | 34 | placeholder={xData?.['placeholder']} | CODE |
| LOW | …nts/apps/editor/settingsPanel/ChartJSRichEditor.svelte | 54 | placeholder={datasets?.['placeholder']} | CODE |
| LOW | …ents/apps/editor/settingsPanel/PlotlyRichEditor.svelte | 34 | placeholder={xData?.['placeholder']} | CODE |
| LOW | …ents/apps/editor/settingsPanel/PlotlyRichEditor.svelte | 54 | placeholder={datasets?.['placeholder']} | CODE |
| LOW | …nents/apps/editor/settingsPanel/GridTabDisabled.svelte | 57 | placeholder={field?.['placeholder']} | CODE |
| LOW | …ontend/src/lib/monaco_workers/graphql.worker.bundle.js | 85 | `))}},ac=class extends Error{constructor(t,n){super(t),this.name="ListenerLeakError",this.stack=n}},uc=class extends Err | CODE |
| LOW | frontend/src/routes/(styled)/kitchen_sink/+page.svelte | 65 | label: 'Lorem ipsum', | CODE |
| LOW | backend/oauth_connect.json | 142 | "placeholder": "common, organizations, or your tenant id", | CODE |
| LOW | backend/oauth_connect.json | 163 | "placeholder": "common, organizations, or your tenant id", | CODE |
| LOW | backend/oauth_connect.json | 183 | "placeholder": "common, organizations, or your tenant id", | CODE |
| LOW | backend/oauth_connect.json | 400 | "placeholder": "your-instance", | CODE |
| LOW | backend/oauth_connect.json | 413 | "placeholder": "your-store", | CODE |
| LOW | backend/oauth_connect.json | 470 | "placeholder": "<orgname>-<account_name>", | CODE |
| LOW | backend/oauth_connect.json | 520 | "placeholder": "<instance> (e.g. dev12345)", | CODE |
| LOW | backend/oauth_connect.json | 610 | "placeholder": "organizations, or your tenant id", | CODE |
| LOW | backend/oauth_connect.json | 630 | "placeholder": "<account id> as in your NetSuite domain, e.g. 1234567 or 1234567-sb1", | CODE |
| LOW | backend/oauth_connect.json | 680 | "placeholder": "common, organizations, or your tenant id", | CODE |
| LOW | backend/oauth_connect.json | 754 | "placeholder": "yourcompany (from yourcompany.zendesk.com)", | CODE |
| LOW | …ckend/windmill-api-integration-tests/tests/settings.rs | 90 | .json(&json!({"to": "test@test.com", "subject": "test", "content": "test"})), | CODE |
| LOW | backend/parsers/windmill-parser/src/json_schema.rs | 85 | "placeholder", | CODE |
| LOW | backend/windmill-store/src/resources.rs | 5052 | email: "test@test.com".to_string(), | CODE |
| LOW | backend/windmill-worker/src/common.rs | 2626 | permissioned_as_email: "test@test.com".to_string(), | CODE |
| LOW | backend/windmill-git-sync/src/lib.rs | 461 | let obj = DeployedObject::User { email: "user@example.com".to_string() }; | CODE |
| LOW | backend/windmill-git-sync/src/lib.rs | 521 | let obj = DeployedObject::User { email: "user@example.com".to_string() }; | CODE |
| LOW | backend/tests/flow_engine_parity.rs | 853 | assert_eq!(result["full_name"], "John Doe"); | CODE |
| LOW | backend/windmill-api/banned_domains.txt | 1310 | fake-email.pp.ua | CODE |
| LOW | backend/windmill-api/src/slack_approvals.rs | 678 | "placeholder": { | CODE |
| LOW | backend/windmill-api/src/slack_approvals.rs | 697 | "placeholder": { | CODE |
| 12 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | docker/test_entrypoint_extra.sh | 232 | # services instead of the harness. Harmless for a plain base image. | COMMENT |
| MEDIUM | frontend/package-lock.json | 5994 | "resolved": "https://registry.npmjs.org/esm-env-robust/-/esm-env-robust-0.0.3.tgz", | CODE |
| MEDIUM | frontend/package-lock.json | 11928 | "resolved": "https://registry.npmjs.org/robust-predicates/-/robust-predicates-3.0.3.tgz", | CODE |
| MEDIUM | frontend/src/lib/utils.ts | 1881 | rootMargin: '0px 1000px', // Essentially making horizontal checks irrelevant | CODE |
| MEDIUM | frontend/src/lib/utils/workspaceHierarchy.ts | 52 | return true // Definitely a root | CODE |
| MEDIUM | …/routes/(root)/(logged)/pipeline/[folder]/+page.svelte | 1849 | // success/failure badge is seamless (no flicker back to running). | COMMENT |
| MEDIUM | backend/windmill-duckdb-ffi-internal/src/lib.rs | 334 | // TODO : Better error return to leverage different error kinds on the worker side | COMMENT |
| MEDIUM | backend/tests/perf_profile.rs | 558 | #[ignore = "profiling harness, see docs/perf-profiling.md"] | COMMENT |
| MEDIUM | backend/tests/perf_profile.rs | 568 | #[ignore = "profiling harness, see docs/perf-profiling.md"] | COMMENT |
| MEDIUM | backend/tests/perf_profile.rs | 580 | #[ignore = "profiling harness, see docs/perf-profiling.md"] | COMMENT |
| MEDIUM | backend/tests/perf_profile.rs | 592 | #[ignore = "profiling harness, see docs/perf-profiling.md"] | COMMENT |
| MEDIUM | cli/src/guidance/skills.gen.ts | 6696 | ### Migration best practices | COMMENT |
| MEDIUM | …ackage-registry-tls/verdaccio_conf/config.default.yaml | 3 | # please read carefully the documentation and best practices to | COMMENT |
| MEDIUM | …ackage-registry-tls/verdaccio_conf/config.default.yaml | 13 | # Read about the best practices | COMMENT |
| MEDIUM⚡ | .github/workflows/ai-evals-test.yml | 4 | # the ai_evals harness, one case across one cheap model per provider. Runs only | COMMENT |
| MEDIUM⚡ | .github/workflows/ai-evals-test.yml | 5 | # when the eval harness or the global chat code change, since each run makes real | COMMENT |
| MEDIUM⚡ | .github/workflows/ai-evals-test.yml | 7 | # harness routes model calls through; the global tools/drafts run in-process in | COMMENT |
| MEDIUM | .github/workflows/ai-evals-test.yml | 20 | # The eval harness runs production frontend code in-process; these are the | COMMENT |
| MEDIUM | .github/workflows/ai-evals-test.yml | 34 | # The eval harness runs production frontend code in-process; these are the | COMMENT |
| MEDIUM | .github/workflows/ai-evals-test.yml | 159 | # The CLI exits 0 when the harness records failed attempts, so gate | COMMENT |
| MEDIUM | ai_evals/cases/global.yaml | 2059 | # Not "saves the plan as an artifact": exit_plan_mode writes it, so the harness would | COMMENT |
| MEDIUM | ai_evals/cases/global.yaml | 2148 | # The harness serves the worker read itself (a benchmark fetch handler in | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | system_prompts/generate.py | 2151 | except subprocess.CalledProcessError: | CODE |
| HIGH | integration_tests/test/git_sync_test.py | 191 | except Exception: | CODE |
| HIGH | integration_tests/test/agent_workers.py | 67 | except NotFound: | CODE |
| HIGH | python-client/wmill/tests/test_workflow.py | 1146 | except Exception: | CODE |
| HIGH | python-client/wmill/wmill/client.py | 2847 | except Exception: | CODE |
| HIGH | python-client/wmill/wmill/client.py | 3032 | except (TypeError, ValueError, RecursionError): | CODE |
| HIGH | python-client/wmill/wmill/client.py | 3958 | except Exception: | CODE |
| HIGH | lsp/pyls_launcher.py | 270 | except websocket.WebSocketClosedError: | CODE |
| HIGH | examples/usecase/ssh-execution-wrapper/ssh_exec.py | 110 | except OSError: | CODE |
| HIGH | debugger/test_dap_server.py | 513 | except Exception: | CODE |
| HIGH | debugger/test_dap_server.py | 392 | except TimeoutError: | CODE |
| HIGH | debugger/dap_websocket_server.py | 803 | except OSError: | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | system_prompts/generate.py | 216 | # Check if has default | COMMENT |
| LOW | system_prompts/generate.py | 493 | # Check if second arg is a string (description) or a variable (imported command) | COMMENT |
| LOW | system_prompts/auto-generated/prompts.ts | 5962 | # Write file to S3 | STRING |
| LOW | docker/entrypoint-extra.sh | 196 | # Check if any services were started | COMMENT |
| LOW | integration_tests/ai_agent_tests/conftest.py | 255 | # Check if script already exists | COMMENT |
| LOW | integration_tests/test/wmill_integration_test_utils.py | 730 | # Check if file exists (to get SHA for update) | COMMENT |
| LOW | integration_tests/test/agent_workers.py | 111 | # Check if any worker is in the "agent" worker_group | COMMENT |
| LOW | .claude/hooks/format-backend.sh | 13 | # Check if the file is in the backend directory and is a Rust file | COMMENT |
| LOW | .claude/hooks/format-frontend.sh | 19 | # Check if it's a formattable file type | COMMENT |
| LOW | .claude/hooks/notify-user.sh | 4 | # Check if we're in an SSH session | COMMENT |
| LOW | backend/update_sqlx.sh | 5 | # Check if running on macOS | COMMENT |
| LOW | backend/test_debounce_e2e.sh | 436 | # Check if items were aggregated in the executed (non-skipped) job(s) | COMMENT |
| LOW | backend/run_until_fail.sh | 20 | # Check if the command failed (non-zero exit code) | COMMENT |
| LOW⚡ | backend/windmill-worker/loader.py | 86 | # Check if this is errno 104 (Connection reset by peer) and we have retries left | COMMENT |
| LOW | backend/windmill-worker/src/pwsh_executor.rs | 112 | # Check if module is already installed with the required version (case-insensitive) | COMMENT |
| LOW | …end/generate_mcp_endpoints_tools/generate_mcp_tools.py | 266 | # Check if this is an external file reference | COMMENT |
| LOW⚡ | …end/windmill-api/src/mcp/session/gen/instructions.json | 230 | "script.python3": "# Global draft script instructions\n\n- Global mode writes complete draft payloads only; it does no | CODE |
| LOW | cli/build.sh | 3 | # Set script to exit on any error | COMMENT |
| LOW | cli/windmill-utils-internal/gen_wm_client.sh | 3 | # Set script to exit on any error | COMMENT |
| LOW | cli/windmill-utils-internal/remove-ts-ext.sh | 3 | # Set script to exit on any error | COMMENT |
| LOW | cli/src/guidance/skills.gen.ts | 4458 | # Write file to S3 | COMMENT |
| LOW | ephemeral-backends/install.sh | 14 | # Check if running as root | COMMENT |
| LOW⚡ | ephemeral-backends/install.sh | 36 | # Check if sandbox user exists | COMMENT |
| LOW⚡ | ephemeral-backends/install.sh | 43 | # Check if repository directory exists | COMMENT |
| LOW⚡ | ephemeral-backends/install.sh | 50 | # Check if bun is installed for the service user | COMMENT |
| LOW⚡ | ephemeral-backends/install.sh | 57 | # Check if bubblewrap is installed | COMMENT |
| LOW⚡ | ephemeral-backends/install.sh | 66 | # Check if cloudflared is installed | COMMENT |
| LOW | ephemeral-backends/install.sh | 89 | # Check if docker is installed and service user has access | COMMENT |
| LOW | .github/workflows/shareable-discord-notification.yml | 66 | # Check if thread already exists | COMMENT |
| LOW | .github/workflows/helmchart_on_release.yml | 33 | # Check if branch already exists remotely | COMMENT |
| LOW | debugger/test_dap_server.py | 379 | # Check if our args are present | COMMENT |
| LOW | debugger/dap_websocket_server.py | 123 | # Check if we should stop here | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | system_prompts/auto-generated/prompts.ts | 3869 | {"OpenFlow":{"type":"object","description":"Top-level flow definition containing metadata, configuration, and the flow s | STRING |
| MEDIUM | system_prompts/auto-generated/flow.md | 622 | {"OpenFlow":{"type":"object","description":"Top-level flow definition containing metadata, configuration, and the flow s | CODE |
| MEDIUM | …stem_prompts/auto-generated/skills/write-flow/SKILL.md | 710 | {"OpenFlow":{"type":"object","description":"Top-level flow definition containing metadata, configuration, and the flow s | CODE |
| MEDIUM | …end/src/lib/components/copilot/chat/flow/openFlow.json | 1 | {"openapi":"3.0.3","info":{"version":"1.846.1","title":"OpenFlow Spec","contact":{"name":"Ruben Fiszel","email":"ruben@w | CODE |
| MEDIUM | …components/assets/AssetGraph/pipelineTemplates.test.ts | 66 | // identity), so the scaffold teaches the one grain-agnostic filter line. | COMMENT |
| MEDIUM | …/lib/components/assets/AssetGraph/pipelineTemplates.ts | 709 | // the scaffold light; docs cover dynamic-grain keys. | COMMENT |
| MEDIUM | …onents/assets/AssetGraph/DucklakeVersionPreview.svelte | 44 | // the duckdb scaffold ATTACHes the ducklake under, so the reference is | COMMENT |
| MEDIUM | backend/parsers/windmill-parser/src/asset_parser.rs | 337 | // • Run-time write guardrails for the persist-and-mutate strategies | COMMENT |
| MEDIUM | …nd/windmill-api-workspaces/src/datatable_migrations.rs | 1302 | /// so keep them to a safe path-segment charset (matches the CLI scaffold). | COMMENT |
| MEDIUM⚡ | …end/windmill-api/src/mcp/session/gen/instructions.json | 255 | "flow": "# Global draft flow instructions\n\n- Global mode writes complete draft payloads only; it does not save, depl | CODE |
| MEDIUM⚡ | …end/windmill-api/src/mcp/session/gen/instructions.json | 255 | "flow": "# Global draft flow instructions\n\n- Global mode writes complete draft payloads only; it does not save, depl | CODE |
| MEDIUM⚡ | …end/windmill-api/src/mcp/session/gen/instructions.json | 256 | "resource": "# Global draft resource & variable instructions\n\n- Global mode writes complete draft payloads only; it | CODE |
| MEDIUM⚡ | …end/windmill-api/src/mcp/session/gen/instructions.json | 259 | "agent": "# Global draft agent instructions\n\n- An agent is drafted with `write_resource`: `{ path, resource_type: \" | CODE |
| MEDIUM⚡ | …end/windmill-api/src/mcp/session/gen/instructions.json | 263 | "pipeline": "# Data pipeline authoring\n\nA **data pipeline** is NOT a flow. A flow is one runnable that orchestrates | CODE |
| MEDIUM | docs/pipeline-local-dev.md | 38 | ### Headless CLI (agentic loop) — `cli/src/commands/pipeline/` | COMMENT |
| MEDIUM | docs/pipelines-vs-dbt.md | 480 | 3. **Template updates** — when `// partitioned X` is present, scaffold | CODE |
| MEDIUM | cli/src/guidance/skills.gen.ts | 6468 | {"OpenFlow":{"type":"object","description":"Top-level flow definition containing metadata, configuration, and the flow s | CODE |
| MEDIUM | cli/src/commands/pipeline/docs.ts | 2 | // pointer) describing a folder's pipeline so an editor or agentic loop has the | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | system_prompts/generate.py | 173 | CODE | |
| LOW | system_prompts/generate.py | 271 | CODE | |
| LOW | system_prompts/generate.py | 401 | CODE | |
| LOW | system_prompts/generate.py | 652 | CODE | |
| LOW | system_prompts/generate.py | 978 | CODE | |
| LOW | system_prompts/generate.py | 1188 | CODE | |
| LOW | system_prompts/generate.py | 1347 | CODE | |
| LOW | system_prompts/generate.py | 1563 | CODE | |
| LOW | system_prompts/generate.py | 1805 | CODE | |
| LOW | system_prompts/utils.py | 255 | CODE | |
| LOW | system_prompts/utils.py | 304 | CODE | |
| LOW | system_prompts/utils.py | 325 | CODE | |
| LOW | system_prompts/utils.py | 435 | CODE | |
| LOW | system_prompts/utils.py | 535 | CODE | |
| LOW | system_prompts/utils.py | 583 | CODE | |
| LOW | integration_tests/test/wmill_integration_test_utils.py | 121 | CODE | |
| LOW | integration_tests/test/wmill_integration_test_utils.py | 161 | CODE | |
| LOW | integration_tests/test/wmill_integration_test_utils.py | 629 | CODE | |
| LOW | python-client/wmill/wmill/client.py | 2851 | CODE | |
| LOW | python-client/wmill/wmill/client.py | 3895 | CODE | |
| LOW | python-client/wmill/wmill/client.py | 382 | CODE | |
| LOW | python-client/wmill/wmill/client.py | 3222 | CODE | |
| LOW | python-client/wmill/wmill/client.py | 3384 | CODE | |
| LOW | lsp/pyls_launcher.py | 38 | CODE | |
| LOW | lsp/pyls_launcher.py | 222 | CODE | |
| LOW | backend/summarize_schema.py | 10 | CODE | |
| LOW | backend/summarize_schema.py | 138 | CODE | |
| LOW | backend/windmill-worker/loader.py | 27 | CODE | |
| LOW | …end/generate_mcp_endpoints_tools/generate_mcp_tools.py | 64 | CODE | |
| LOW | debugger/test_dap_server.py | 182 | CODE | |
| LOW | debugger/test_dap_server.py | 313 | CODE | |
| LOW | debugger/test_dap_server.py | 434 | CODE | |
| LOW | debugger/test_dap_server.py | 73 | CODE | |
| LOW | debugger/dap_websocket_server.py | 68 | CODE | |
| LOW | debugger/dap_websocket_server.py | 112 | CODE | |
| LOW | debugger/dap_websocket_server.py | 847 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | frontend/src/lib/utils.ts | 2076 | // AI generated | COMMENT |
| HIGH | …lib/components/copilot/chat/flow/rawscriptLang.test.ts | 6 | // language here silently rejects AI-generated flow edits that use it in the | COMMENT |
| HIGH | …/lib/components/copilot/chat/flow/providerKind.test.ts | 6 | // provider kind here silently rejects AI-generated flow edits for that provider | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | system_prompts/generate.py | 725 | `process.env.WM_END_USER_EMAIL || process.env.WM_EMAIL`. WM_END_USER_EMAIL is the app viewer when | CODE |
| HIGH | system_prompts/generate.py | 2692 | if (language == null) { | CODE |
| HIGH | system_prompts/generate.py | 2715 | if (language == null) { | CODE |
| HIGH | …gration_tests/ai_agent_tests/test_completion_params.py | 5 | - Default parameters (undefined) | STRING |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | integration_tests/test/identity_script_test.py | 2 | CODE | |
| LOW | integration_tests/test/increment_flow_test.py | 1 | CODE | |
| LOW | integration_tests/test/increment_flow_test.py | 3 | CODE | |
| LOW | integration_tests/test/__init__.py | 1 | CODE | |
| LOW | integration_tests/test/__init__.py | 2 | CODE | |
| LOW | integration_tests/test/__init__.py | 3 | CODE | |
| LOW | integration_tests/test/__init__.py | 4 | CODE | |
| LOW | integration_tests/test/__init__.py | 5 | CODE | |
| LOW | integration_tests/test/windmill_sdk_test.py | 1 | CODE | |
| LOW | python-client/wmill/wmill/client.py | 1 | CODE | |
| LOW | python-client/wmill/wmill/client.py | 6 | CODE | |
| LOW | python-client/wmill/wmill/__init__.py | 1 | CODE | |
| LOW | python-client/wmill/wmill/__init__.py | 2 | CODE | |
| LOW | backend/windmill-worker/loader.py | 4 | CODE | |
| LOW | debugger/dap_websocket_server.py | 31 | CODE | |
| LOW | debugger/dap_websocket_server.py | 32 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | python-client/wmill/wmill/client.py | 613 | def set_variable(self, path: str, value: str, is_secret: bool = False) -> None: | CODE |
| LOW | python-client/wmill/wmill/client.py | 762 | def set_state(self, value: Any, path: str | None = None) -> None: | CODE |
| LOW | python-client/wmill/wmill/client.py | 842 | def set_flow_user_state(self, key: str, value: Any) -> None: | CODE |
| LOW | python-client/wmill/wmill/client.py | 1382 | def set_shared_state_pickle(value: Any, path: str = "state.pickle") -> None: | CODE |
| LOW | python-client/wmill/wmill/client.py | 1402 | def set_shared_state(value: Any, path: str = "state.json") -> None: | CODE |
| LOW | python-client/wmill/wmill/client.py | 2103 | def set_resource(path: str, value: Any, resource_type: str = "any") -> None: | CODE |
| LOW | python-client/wmill/wmill/client.py | 2141 | def set_state(value: Any, path: str | None = None) -> None: | CODE |
| LOW | python-client/wmill/wmill/client.py | 2149 | def set_progress(value: int, job_id: Optional[str] = None) -> None: | CODE |
| LOW | python-client/wmill/wmill/client.py | 2175 | def set_shared_state_pickle(value: Any, path="state.pickle") -> None: | CODE |
| LOW | python-client/wmill/wmill/client.py | 2190 | def set_shared_state(value: Any, path="state.json") -> None: | CODE |
| LOW | python-client/wmill/wmill/client.py | 2213 | def set_variable(path: str, value: str, is_secret: bool = False) -> None: | CODE |
| LOW | python-client/wmill/wmill/client.py | 2229 | def set_flow_user_state(key: str, value: Any) -> None: | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | …ontend/src/lib/components/GitRepoResourcePicker.svelte | 160 | // TODO: Add error feedback | COMMENT |
| LOW | backend/windmill-worker/src/worker.rs | 6774 | // TODO: implement | COMMENT |
| LOW | backend/windmill-common/src/schema.rs | 323 | // TODO: Implement validation on these | COMMENT |
| LOW | backend/windmill-api-jobs/src/job_metrics.rs | 307 | // TODO: implement sampling | COMMENT |
| LOW | backend/windmill-types/src/runnable_settings.rs | 75 | // TODO: Add validation logic. | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | frontend/src/lib/script_helpers.ts | 52 | # you can use typed resources by doing a type alias to dict | COMMENT |
| MEDIUM | …deploy/private-package-registry-tls/docker-compose.yml | 55 | # - DENO_TLS_CA_STORE=system # alternatively, you can use this but you'll need to manually trust the RootCA at the | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | integration_tests/ai_agent_tests/conftest.py | 330 | CODE | |
| LOW | python-client/wmill/tests/test_workflow.py | 176 | CODE | |
| LOW | python-client/wmill/tests/test_workflow.py | 182 | CODE | |
| LOW | python-client/wmill/tests/test_workflow.py | 209 | CODE | |
| LOW | python-client/wmill/wmill/client.py | 2347 | CODE | |
| LOW | python-client/wmill/wmill/client.py | 3532 | CODE | |
| LOW | python-client/wmill/wmill/client.py | 3694 | CODE | |
| LOW | python-client/wmill/wmill/client.py | 3734 | CODE | |
| LOW | python-client/wmill/wmill/client.py | 276 | CODE | |
| LOW | python-client/wmill/wmill/client.py | 300 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | python-client/wmill/wmill/client.py | 390 | Wait for a job to complete and return its result. Args: job_id: ID of the job to wait for | STRING |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | docker/test_entrypoint_extra.sh | 12 | # Usage: | COMMENT |
| LOW | cli/src/utils/local_encryption.ts | 90 | // // Example usage: | COMMENT |
| LOW | examples/deploy/instance-config-iac/docker-compose.yml | 5 | # Usage: | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | cli/test/relative_imports_wasm.test.ts | 163 | def helper(): | CODE |
| LOW⚡ | cli/test/relative_imports_wasm.test.ts | 569 | `import pandas\n\ndef helper():\n return pandas.__version__\n` | CODE |
| LOW | cli/test/script_modules_unit.test.ts | 259 | content: "def helper(): pass\n", | CODE |
| LOW | debugger/dap_websocket_server.py | 971 | async def handle_request(self, request: dict) -> None: | CODE |