- Move the @ context-picker Popover from above the textarea (in
AIChatInput) to the bottom-left of the chat input controls row in
AIChatDisplay, immediately to the left of the Flow mode selector.
AIChatInput now exports addContextToSelection so the parent can drive
the same validated add path. The badges-only row above the textarea
only renders when there is at least one selected context (no empty
bar). AIChatInput drops its now-unused Popover and AvailableContextList
imports; AIChatDisplay picks them up plus AppAvailableContextList for
the APP-mode list.
- Replace the raw send/stop button with a Button variant="subtle"
iconOnly, keeping the rounded-full 28x28 hit area via btnClasses, the
ArrowUp/Square icon swap, and the disabled-when-empty / cancel-when-
loading behavior.
- Shrink the textarea: rows={3} -> rows={2} on all three textareas
(ContextTextarea, the APP-mode textarea, the default-mode textarea)
and bump min-height down from 3rem to 1.75rem so the textarea starts
as a single visible line and grows with content via autosize.
- Refine chat input box radius to rounded-xl, match the textarea via
border-radius: 0.75rem, and add pt-1 above the textarea for a touch
of breathing room from the card's top edge.
- /design-sandbox: switch the right pane's flow editor card from
rounded-xl to rounded-md so the flow card sits tighter while the chat
input keeps the softer rounded-xl.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
- Add ResourceBreadcrumb.svelte: a clickable breadcrumb with three
segments (kind / folder / name), each opening a DropdownV2 menu. The
depth depends on which segment is clicked: kind cascades 3 levels deep
(kind > folder > item), folder cascades 2 levels (folder > item), name
shows just items. Items, folders and kinds have icons; folders use
font-mono; '/' as separator; placement="bottom-start" so menus open
flush below the segment's left edge. Includes inline mock data so the
dropdowns are useful in the design preview without backend wiring.
Flow icon uses lucide AlignLeft (the bars-staggered look) instead of
Workflow.
- DropdownSubmenuItem.svelte: render itself recursively when a sub-item
has its own submenuItems, replacing the previous flat MenuItem-only
rendering. Switches to a self-import (Svelte 5 deprecates
<svelte:self>) and adds a key to the each block. Existing 2-level
consumers (e.g. the FlowBuilder Tutorials menu) keep working — the
recursion only activates when submenuItems.length > 0.
- FlowBuilder.svelte: replace the inline breadcrumb markup and its
$derived helpers with <ResourceBreadcrumb kind="flow" path={$pathStore}
summary={flowStore.val.summary} />. Drops the now-unused Workflow /
ChevronRight lucide imports.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
- FlowBuilder: replace the SummaryPathDisplay box (path / summary stack)
with an inline breadcrumb (Workflow icon + "Flows" / folder /
summary-or-leaf, separated by ChevronRight). The breadcrumb derives
$pathStore segments via $derived (breadcrumbParts/Folder/Leaf) so it
can be referenced from the template without {@const}, which is not
allowed as a direct child of <div>. Drops the now-unused
SummaryPathDisplay import.
- design-sandbox: position the right pane as a contained "chat-owned"
workspace — p-2 pl-0 padding plus an inner rounded-xl border / shadow-sm
card wrapping FlowWrapper. Drop the left pane's right border so the
chat reads as full-bleed primary content. Add a chat-side header
(h-12 to match FlowBuilder's max-h-12 row) with a MessageSquare icon
and a conversationTitle derived from the first user message in the
current chat (truncated to 60 chars). Hide the splitpanes divider
visually via a scoped :global(.design-sandbox-splitpanes ...) rule
while keeping the hit area so the split is still resizable.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
- FlowEditor: add a panelCollapsed $state (default true) and a top-right
toggle button that swaps between PanelRightOpen / PanelRightClose
lucide icons. The right Pane (FlowEditorPanel) is wrapped in
{#if !panelCollapsed} so it fully unmounts when collapsed and the flow
graph fills the full width.
- FlowGraphV2: move the top-right Controls block to position
bottom-right so it no longer overlaps the new collapse toggle in the
graph's top-right corner.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Adds a Codex-style preview card under tool calls that create or modify a
flow step, schedule, script, or app, plus a clickable flow into a centered
modal hosting ScheduleEditorInner for the schedule case.
- ToolExecutionDisplay infers a PreviewKind + title/subtitle/icon from the
tool name and parameters. Flow steps render the LanguageIcon for the
step's language; schedule cards use a blue Calendar; script/app/flow
fall back to lucide brand icons. The card itself is a button (only
enabled for schedule for now); the inner Open span stops propagation so
card-click and Open-click stay independent.
- New previewModalState.svelte.ts holds shared $state for the modal so
ToolExecutionDisplay (deep in the message tree) can drive a modal
mounted at the page level.
- design-sandbox/+page.svelte mounts a Modal2 (with target="body" so the
Portal lands on <body> instead of collapsing inside the splitpanes
flex tree) containing ScheduleEditorInner with useDrawer={false}. An
$effect calls openEdit(SANDBOX_SCHEDULE_PATH) on the real workspace
schedule when the modal opens, which avoids the undefined-field crashes
that synthesizing a defaultCfg produced.
- Chat text bumped to text-xs across user bubbles, assistant markdown
([&_*]:!text-xs), and tool-call labels for visual consistency.
- Removed the trailing in-flight 'Updated Notify…' tool call from the
fake conversation so the demo ends on the schedule preview card.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
- Add an "AI chat" section to the sidebar (mobile drawer, desktop, and
operator views) showing past chats from HistoryManager with a + button
in the header that creates a new chat and routes to /design-sandbox.
Section title fades out when the sidebar is collapsed.
- Remove the in-panel chat header from AIChatDisplay (Chat title,
HideButton slot, History popover, + button, headerRight slot) along
with the now-unused props (pastChats, loadPastChat, deletePastChat,
saveAndClear, headerLeft, headerRight). The chat panel now starts
directly with the messages, and history/new-chat live in the sidebar.
- AIChat.svelte updated to drop the headerLeft snippet, the HideButton
import, and the now-unused props on AIChatDisplay.
- design-sandbox page mocks aiChatManager.historyManager.getPastChats()
with realistic Windmill-style chat titles so the sidebar history is
populated for the design preview without writing to IndexedDB.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
- Reshape the input region in AIChatDisplay into a single rounded-2xl card
with a subtle border and focus shadow, hosting the textarea, mode/model
selectors, and a circular send/stop button (Codex/Claude-Desktop style).
- Constrain the input card to max-w-xl centered so it stays readable on
wide panes.
- Expose triggerSend() and hasContent() from AIChatInput so the parent can
drive the send button and reflect empty-input state.
- Add a /design-sandbox route under (logged) to prototype layout tweaks
(sidebar + AI chat + flow editor side-by-side with a fake flow and a
mocked conversation), plus a .claude/launch.json describing the local
dev servers.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
* feat: allow hiding catalog picker and raw input on s3 form fields
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
* refactor: type itemsType.resourceType instead of casting to any
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
* fix: detect and clearly label OOM in zombie flow alerts
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
* fix: address review feedback on zombie flow OOM detection
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
* fix: track dollar-quoted strings in SQL block splitter
Queries like `CREATE FUNCTION ... AS $$ ... ; ... $$ LANGUAGE plpgsql;`
were being shredded on every `;` inside the function body because the
SQL splitter's state machine didn't recognize PostgreSQL dollar-quoted
strings. Add an `InDollarQuote(tag)` state so `$$ ... $$` and
`$tag$ ... $tag$` regions are treated as a single quoted span.
Opt-in via a new `track_dollar_quotes` flag on `parse_sql_blocks`;
enabled for PostgreSQL and DuckDB, disabled for MySQL/Oracle/BigQuery/
Snowflake which don't support the syntax.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
* fix: make windmill-parser-wasm a self-contained workspace
The wasm parser crate is excluded from the backend workspace (its
nightly-only `cargo-features = ["panic-immediate-abort"]` would break
stable cargo on the whole workspace), but its manifest still used
`.workspace = true` inheritance — which fails with "failed to find a
workspace root" once the parent no longer considers it a member.
Declare the crate as its own workspace by adding `[workspace]`,
`[workspace.package]`, and `[workspace.dependencies]` tables. Mirror
the relevant entries from the parent `backend/Cargo.toml` (same
version specs, same path targets) so resolution stays byte-identical
to what the parent would have produced.
Also:
- Teach `.github/change-versions.sh` (+ mac variant) to update this
crate's own `Cargo.toml` version and bulk-bump the `windmill-*`
entries in its `Cargo.lock` on each release.
- Bump the frontend's pinned `windmill-parser-wasm-regex` to 1.688.0
to match the freshly-built package, and refresh `package-lock.json`.
- Regenerate the wasm crate's `Cargo.lock` from scratch (first build
under the new workspace re-resolves the full graph; target-gated
deps from sibling crates like `windmill-parser-py-imports` are
now recorded in the lockfile but not compiled when targeting
wasm32).
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Extract the MSSQL s3 ingest+upload logging pattern into a reusable
`s3_stream_and_upload_with_logs` helper and apply it to the PostgreSQL,
MySQL, OracleDB, BigQuery, and Snowflake executors. Each s3 streamed
query now emits periodic progress lines, an ingest-done line, and an
upload+transcode-done line to the job output, matching MSSQL.
`convert_json_line_stream` now returns `BoxStream<'static, _>` so the
output stream can be forwarded to `s3.upload` from inside the generic
helper without lifetime gymnastics; the two existing callers already
boxed the result, so behavior is unchanged.
Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
* feat: add cli eval behavior checks
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
* fix: harden cli eval command parsing
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
* feat: add proxy transport for ai evals
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
* fix: strip propertyNames for gemini schemas
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
* fix: require explicit eval transport
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
* feat: async dep endpoints and queue-position logs in cli
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
* refactor: share logQueueStatus between dev.ts and job_polling.ts
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
* fix: continue polling on transient errors in job_polling.ts
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
* fix: batch cancel silently dropping jobs from other workspaces
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
* fix: gate cross-workspace batch cancel on all_workspaces flag
Enforce path workspace unless all_workspaces=true, so cross-workspace
selections only succeed when the UI is actually in all-workspaces mode.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
* sqlx
* fix: gate cancel_selection all_workspaces on admins workspace
Matches the convention used by count_queue_jobs and count_completed_jobs_detail
in the same file — cross-workspace scope is only honored when the path
workspace is "admins", preventing clients in regular workspaces from dropping
workspace scoping by passing all_workspaces=true.
Co-authored-by: Ruben Fiszel <rubenfiszel@users.noreply.github.com>
---------
Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Co-authored-by: claude[bot] <41898282+claude[bot]@users.noreply.github.com>
Co-authored-by: Ruben Fiszel <rubenfiszel@users.noreply.github.com>
* perf: speed up mssql s3 ingest and add phase logs to job output
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
* chore: drop mssql s3 progress interval to 10s for better visibility
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
* chore: drop transient tests that compared against removed code path
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
* fix: log boolean predicate eval errors to root flow logs
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
* refactor: use if-let over match for predicate error logging
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
Clearing the parallelism input field now sets parallelism to undefined
instead of creating an object with an empty value, preventing the
'parallelism value is null' error on execution.
Closes#7864
Assisted-by: GLM 5.1
Co-authored-by: Abhay <abhayjnayakpro@gmail.com>
* refactor: make flow chat code edits explicit
* refactor: centralize flow tree lookups
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
* refactor: simplify flow chat tree mutations
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
* refactor: reuse flow tree lookup in schema map
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
* refactor: remove flow lookup alias
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
* refactor: reuse flow tree in previous results
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
* refactor: reuse canonical flow module lookup
* fix: align rebased flow helpers
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
* docs: remove flow chat cleanup plan
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
* refactor: remove flow chat helper wrappers
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
* fix: preserve non-flowmodule AI agent tools in skeleton and previous_result
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
* refactor: consolidate flow module ID collectors into flowTree
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
* fix: search full flow tree in test_run_step to find special modules
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
* fix: recurse into aiagent tools in collectAllFlowModuleIds
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
* docs: add job-debugging guidance to wmill init output
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
* chore: update cli-commands skill description in generate.py source
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
* fix: populate wmill.d.ts schemas in wmill app dev
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
* feat: seed inferred schemas at wmill app dev startup
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
* feat: add homepage connect drawer
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
* fix: reset connect drawer state
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
* fix: polish home connect button
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
* fix: use standard home connect button style
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
* chore: record app benchmark baseline
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
* feat: strengthen app benchmark persistence checks
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
* feat: seed inventory tracker benchmark case
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
* feat: add deterministic app diagnostics
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
* feat: add app chat patch_file tool
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
* test: add app session id micro-edit case
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
* fix: narrow app patch file content
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
* fix: stop gating app evals on lint
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
Adds an instance-level toggle that hides the email/password form on the
login page and rejects password login, password reset request, and
password reset endpoints server-side. Useful for OAuth/SAML-only
deployments.
- New `disable_password_login` global setting + lazy_static AtomicBool
- `load_disable_password_login` loader wired into monitor initial_load
and notify_global_setting_change listener
- Unauthenticated `GET /auth/is_password_login_disabled` endpoint so the
login page can hide the password form when enabled
- Toggle in Instance Settings → Auth/OAuth/SAML
- Login.svelte hides the password form and the "Log in without
third-party" toggle when the setting is on
Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
* feat: add GitHub as a native trigger service
Add GitHub webhooks as a native trigger, allowing users to trigger
scripts/flows from repository events (push, PR, issues, etc.) via
OAuth-based webhook management.
Backend:
- DB migration adding 'github' to native_trigger_service, TRIGGER_KIND,
and job_trigger_kind enums
- Full External trait implementation: create/update/delete/get webhooks,
per-trigger sync verification, webhook payload preparation
- Paginated repos endpoint (up to 1000 repos)
- OAuth flow with admin:repo_hook and read:user scopes
Frontend:
- GitHub trigger form with repo picker and MultiSelect event selector
- Workspace integration settings with setup instructions
- Trigger badge, editor, and wrapper integration
- GithubIcon updated to support size/class props (matching other icons)
- Hub template reference for starter scripts
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
* fix: show GitHub in sidebar when triggers exist
Add github_used to the getUsedTriggers endpoint so the sidebar picks up
GitHub as an active trigger kind. Also document this step in the native-
trigger skill so future services don't miss it.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
* feat: on-demand GitHub repo search instead of bulk fetch
Replace the upfront pagination through all repos with a debounced search
flow: load 30 most-recently-updated repos by default, then query GitHub's
/search/repositories API (scoped to the authenticated user via user:@me
and restricted to name matches via in:name) as the user types.
Frontend uses runed's Debounced + resource to wire the Select's filterText
to the backend query with 300ms debouncing.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
* fix: request `repo` OAuth scope to list private GitHub repos
`admin:repo_hook` grants webhook management but not repo listing — so
/user/repos and /search/repositories returned only public repos. Switch
to `repo` (full repo scope, which is a superset and also covers webhook
management).
Users who already connected GitHub need to disconnect and reconnect to
pick up the broader scope.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
* revert: fetch all GitHub repos upfront instead of searching on demand
Revert the debounced search flow — paginate through /user/repos (up to
1000) on form open. Simpler UX: repos are all there from the start, the
Select's built-in client-side filter handles finding one.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
* fix: typed 404 detection + add GitHub flow template reference
Replace fragile e.to_string().contains("404") matching with a proper
http_error_status helper that downcasts through anyhow to the typed
HttpRequestError and reads the StatusCode.
Also wire the hub flow template (id 80) into NATIVE_TRIGGER_SERVICES.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
* fix: update GitHub script template hub ID to 28202
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
* fix: align GitHub trigger with Nextcloud/Google patterns
Addresses review feedback from Claude and cubic.
Backend:
- `delete()` now only swallows NotFound (DB missing row) and 404 (API
webhook already deleted); non-404/DB errors propagate so callers know
cleanup failed. Matches Nextcloud's delete pattern exactly.
- `get_owner_repo_from_db` returns `Result<Option<(String, String)>>`
instead of an error on missing row (matches Google's delete flow).
Frontend:
- `loading: boolean` (required) + `$bindable()` with no default — matches
Nextcloud, satisfies CLAUDE.md banned-pattern rule.
- Wrap `loadRepos()` in `$effect` reacting to `$workspaceStore` so repos
load once the store is available and refresh on workspace switch.
- Replace raw `fetch('/api/.../native_triggers/github/repos')` with the
generated `NativeTriggerService.listGithubRepos(...)` typed client.
Adds `/repos` route + `GithubRepoEntry` schema to openapi.yaml.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
* fix: include app owner in GitHub App installation URL for GHE Cloud
GHE Cloud custom domains (*.ghe.com) require the owner (org/user) in
the app installation URL path: /apps/{owner}/{slug}/installations/new.
Adds an optional app_owner field to the GHES app config.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
* chore: update ee-repo-ref.txt
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
* chore: update ee-repo-ref to 2c2b8dc99689f54b8cd916fb9472fd5698b09478
This commit updates the EE repository reference after PR #539 was merged in windmill-ee-private.
Previous ee-repo-ref: 40dd503d8c563ff93fd2ee3fd8830a5b1c4428d2
New ee-repo-ref: 2c2b8dc99689f54b8cd916fb9472fd5698b09478
Automated by sync-ee-ref workflow.
---------
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-authored-by: windmill-internal-app[bot] <windmill-internal-app[bot]@users.noreply.github.com>
* fix: serve populated jwks at /.well-known/jwks.json for vault
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
* fix: gate jwks route on private feature and use oidc_oss
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
* feat: [ee] migrate slack OAuth to v2
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
* fix: regenerate openapi-deref and make SlackToken.team optional
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
* chore: update ee-repo-ref to a28f3509d0aa7c0e17fa6dcb1d03d935a7a2a11c
This commit updates the EE repository reference after PR #540 was merged in windmill-ee-private.
Previous ee-repo-ref: d149fa6fcb90c4833bbdbd876c0466b5a6196c1c
New ee-repo-ref: a28f3509d0aa7c0e17fa6dcb1d03d935a7a2a11c
Automated by sync-ee-ref workflow.
---------
Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Co-authored-by: windmill-internal-app[bot] <windmill-internal-app[bot]@users.noreply.github.com>
* fix: update on_behalf_of_email in app policy on offboarding
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
* sqlx
---------
Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
* fix: workspace specfic tags compatibility with forked workspaces
* Rename _db to db and use saved WM_FORK_PREFIX
* Add ttl cache for mapping fork id to parent workspace id
* Change second option to just have a -fork suffix
* fix: use compact json for flow patches
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
* test: improve flow eval harness
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
* test: record flow benchmark history
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
* fix: preserve schema in set flow json
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
* style: clean set flow json schema guard
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
* fix: clean flow patch review followups
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
* fix: avoid persisting system prompts in ai memory
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
* fix: keep ai memory cleanup write-side only
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
* feat: add bedrock prompt caching for claude
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
* test: add bedrock memory regression
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
* fix: gate bedrock prompt caching by model id
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
* docs: link bedrock caching allowlist source
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>