Commit Graph
45198 Commits
Author SHA1 Message Date
guerler 9288117937 Add reload and download for loc tables with missing name column 2026-05-03 07:11:05 +03:00
guerler 201c0f518d Attempt to not require name column 2026-05-03 07:11:05 +03:00
Marius van den Beek 2e70707ab1 Merge pull request #21932 from guerler/graph.000 2026-05-02 16:21:46 +02:00
guerler 606aa19635 Use DataItemSourceType, fix linting 2026-05-02 14:06:12 +03:00
guerler 6e23e9d3e4 Add shim to ensure that manager itself is not reinstantiated, align with existing manager pattern 2026-05-02 13:57:53 +03:00
mvdbeek d1e450a5c1 Merge branch 'release_26.0' into dev 2026-05-02 10:14:57 +02:00
guerler 0834a34bed Fix expected error code in test 2026-05-02 09:37:59 +03:00
guerlerandClaude Opus 4.7 00e9721d56 Tighten graph endpoint typing and pin 404 in API tests
- direction: Literal["backward","forward","both"] in service and manager
- HistoriesService.graph annotated -> HistoryGraphResponse
- Pin 404 for missing seed_scope and missing history (was loose 4xx)

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-01 23:06:08 +03:00
guerler 748fef123b Fix typing use AbstractToolBox 2026-05-01 23:06:08 +03:00
guerler 3ce0edd617 Move remaining validation to service layer 2026-05-01 23:06:08 +03:00
guerler 55b7e61047 Access toolbox directly, no need for get attribute 2026-05-01 23:06:08 +03:00
guerler ea9f27b4aa Move import to top-level 2026-05-01 23:06:08 +03:00
guerler e36d726cd0 Move test helpers to populator 2026-05-01 23:06:08 +03:00
guerler 68fb22e3b9 Add tests 2026-05-01 23:06:08 +03:00
guerler 6cbc941242 Validate seed on api level 2026-05-01 23:06:08 +03:00
guerler 4fd1cbee4f Remove hid window interface from api 2026-05-01 23:06:08 +03:00
guerler 87fe6be8c1 Deduplication set for edges is unnecessary 2026-05-01 23:06:08 +03:00
guerler e625f0f4a3 Drop chunking mechanism 2026-05-01 23:06:07 +03:00
guerler 296d82d7f8 Linting 2026-05-01 23:06:07 +03:00
guerler 6fd6d66759 Reuse filtering, improve comments 2026-05-01 23:06:07 +03:00
guerler efae7c6dab Add edge filter 2026-05-01 23:06:07 +03:00
guerler ee0b1a01c3 Use boltons.iterutils in tool input walker 2026-05-01 23:06:07 +03:00
guerler 8e283000d5 Update comments 2026-05-01 23:06:07 +03:00
guerler 91a5978e77 Update tests, apply lint 2026-05-01 23:06:07 +03:00
guerler 3cfad1431f Add history graph API endpoint and regenerate client schema. 2026-05-01 23:06:07 +03:00
guerler d841378588 Add history graph builder manager and pydantic schema. 2026-05-01 23:06:07 +03:00
Marius van den Beek 331a539659 Merge pull request #22618 from mvdbeek/fastmcp_mount_fix
Mount fastmcp at subapp root
2026-05-01 21:27:00 +02:00
mvdbeek 6727dd942d Mount fastmcp at subapp root 2026-05-01 19:51:02 +02:00
Marius van den Beek c180663872 Merge pull request #22608 from dannon/agent-typed-orchestration-state
Pass orchestration state between agents as a typed object
2026-05-01 19:38:16 +02:00
John Chilton 1af930738d Merge pull request #22614 from mvdbeek/sse_followup_1
SSE update enhancements for multi-history view and published histories
2026-05-01 13:18:36 -04:00
Marius van den Beek 75729642ef Merge pull request #22095 from dannon/scratchbook-styling
Replace WinBox with native Vue scratchbook component
2026-05-01 17:54:13 +02:00
Dannon Baker eede220396 Avoid leaking run state into agent prompts 2026-05-01 10:42:56 -04:00
Dannon Baker b5c135669d Replace text-concat handoff with typed AgentRunState
The orchestrator was passing prior agent output to the next agent by
text-concatenating "Previous analysis from {name}: ..." onto the user's
query, capped at 2000 chars. error_analysis then sniffed for the literal
string "Previous analysis" to know it had upstream context. That coupling
is brittle, lossy, and hides what's flowing between agents.

This adds a small AgentRunState dataclass (prior_responses dict plus
record/get_prior helpers) that the orchestrator instantiates per user
query and threads through each sequential agent's context. Each agent
gets the original query verbatim and reads upstream AgentResponses
structurally from run_state. error_analysis now pulls the prior history
response from run_state and appends its full content as "Context from
history analysis:" alongside the existing job_id-driven augmentation.
Parallel execution doesn't need run_state and isn't touched.

Tests cover the dataclass round-trip, that sequential agents share one
run_state instance and see the original query (no "Previous analysis
from..." mutation), and that error_analysis incorporates a recorded
history response into its prompt.
2026-05-01 10:42:55 -04:00
Marius van den Beek dc397684ff Merge pull request #22610 from dannon/agent-router-fast-path-tools
Give the chat router fast-path tools for browsing and inventory
2026-05-01 16:20:26 +02:00
Marius van den Beek 4c46425c4c Merge pull request #22607 from dannon/agent-router-message-history
Pass chat history to agents as structured messages
2026-05-01 16:12:01 +02:00
mvdbeek 289ab6d6b7 Fix real celery task execution if statsd is enabled 2026-05-01 15:51:39 +02:00
mvdbeek 44106890ba Push SSE history updates to non-owner viewers
Owner dispatch only delivers history_update events to the user who owns
the changed history. Watching a shared or pinned non-owned history
(e.g. via the multi-history view) silently received nothing under SSE
because the dispatch path keys on history ownership and there was no
way for a viewer to opt in.

Add an additive viewer-subscription channel: the client POSTs the
history ids it wants pushes for to /api/events/history-subscriptions,
the dispatcher fans the record out to every webapp worker over Kombu,
and history_update fanout pushes to subscribed viewers in addition to
the owner. Subscriptions are refcounted on the client and replayed on
every EventSource onopen so reconnects don't drop them. Per-worker
subscription state is purged when a user's last connection on that
worker closes; the client's onopen replay re-asserts the desired set.

No authorization check on the dispatch path: SSE events only carry
history ids, the client follows up with a normal access-controlled
REST fetch, and leaking "history changed at T" pings is acceptable.

MultipleViewItem now subscribes whenever it renders a history the
current user does not own and SSE is enabled; owned histories continue
through owner dispatch with zero subscribe round-trip.

Tests: integration test exercising subscribe -> mutate -> receive ->
unsubscribe -> stop receiving end-to-end, plus vitest for the client
refcount and replay logic.
2026-05-01 15:35:48 +02:00
Dannon Baker 5f037decc4 Use 'window manager' naming for selenium helpers
The earlier rename commit replaced 'WinBox' with 'scratchbook' in the
selenium helper docstrings and the frame() context manager, which just
swapped one inconsistent name for another. Converge on 'window manager'
for everything I'm touching here.
2026-04-30 23:10:29 -05:00
Dannon Baker 9cb85979af Drop unused winbox_frame backward-compat alias
Nothing in the tree uses it; it was added during the rename out of an
abundance of caution but there are no callers.
2026-04-30 23:10:29 -05:00
Dannon Baker df1d575890 Fix scratchbook->window-manager selector rename in Python/tour, use addSearchParams, guard focus() 2026-04-30 23:10:28 -05:00
Dannon Baker faed3ab8f6 Remove WinBox dependency and clean up
Drop the winbox npm package, delete window-manager.js and windows.scss,
remove the SCSS import from base.scss. Update navigation YAML selectors
and Selenium test helpers to use the new .scratchbook-window class
names. The core.windows.yaml tour still references #winbox-1 which
will need a follow-up update.
2026-04-30 23:10:27 -05:00
Dannon Baker 285ac12f73 Clamp search_tools limit to sane bounds
Negative limits silently sliced from the tail (tools[:-5]) and very large
limits would have happily echoed thousands of results. Treat anything <= 0
as "use the default of 10," and cap at 50 to bound the per-turn payload
the router ships back to the model.
2026-04-30 17:02:57 -04:00
Dannon Baker ba4c71b246 Add search_tools and search_workflows router fast-path tools
Inventory/availability questions like "is FastQC installed?" or "do I
have an RNA-seq workflow?" don't need specialist routing -- they're
single-call lookups against the toolbox or workflow index. The router
handling them directly avoids a handoff round-trip.

Boundary stays tight: these are availability/inventory only. "What tool
should I use for my analysis?" still routes to the tool_recommendation
specialist, and IWC catalog search is deliberately out of scope (different
data source, different ranking semantics) -- left for a follow-up.

ops.search_tools doesn't accept a limit, so the router wrapper slices
oversized result lists and flags the truncation back to the model.
2026-04-30 16:56:59 -04:00
Dannon Baker d0705af4b8 Expose get_server_info as a router fast-path tool
Server metadata (version, brand, URL, capability flags) is a stateless
single-call lookup that doesn't need a specialist. Adds the tool to the
router, lists it in the prompt's fast-path section, and adds focused
unit-test coverage.
2026-04-30 16:51:56 -04:00
Nuwan Goonasekera 21408ef129 Merge pull request #22449 from AustralianBioCommons/oidc-require-refresh
Require logging in again when OIDC tokens can't be refreshed
2026-05-01 01:01:46 +05:30
Dannon Baker 1d487ec521 Accept legacy conversation history context 2026-04-30 15:09:33 -04:00
John Chilton e4d4bcb80e Merge pull request #22513 from mvdbeek/sse-notifications
Server-Sent Events for history + notification updates
2026-04-30 11:01:37 -04:00
Marius van den Beek 882f22a734 Merge pull request #22566 from jmchilton/wf_test_job_schema
Tighten the workflow test schema
2026-04-30 15:04:03 +02:00
Marius van den Beek f07c9469eb Merge pull request #22523 from guerler/fix_eof_error
[26.0] Catch end of file error when reading corrupted tabular dataset
2026-04-30 13:02:47 +02:00
Marius van den Beek 77daafc951 Merge pull request #22547 from mvdbeek/oidc-pkce-dep
[26.0] Fix silent OIDC failure when pkce is missing
2026-04-30 13:02:17 +02:00