Commit Graph

376 Commits

Author SHA1 Message Date
llama-org-ci-bot[bot] fa83d512d7 chore: version packages (rc) (#375)
Co-authored-by: llama-org-ci-bot[bot] <231146559+llama-org-ci-bot[bot]@users.noreply.github.com>
llama-agents-server@0.2.0-rc.2
2026-02-11 20:14:22 -05:00
Adrian Lyjak 35d0e352c6 Fix dependency version ranges and re-organize dbos examples (#374) 2026-02-11 20:12:41 -05:00
llama-org-ci-bot[bot] 5c59ade981 chore: version packages (rc) (#373) llama-index-workflows@2.15.0-rc.0 llama-index-utils-workflow@0.9.2-rc.0 llama-agents-client@0.2.0-rc.0 llama-agents-server@0.2.0-rc.1 llama-agents-dbos@0.1.0-rc.0 2026-02-11 19:12:03 -05:00
Adrian Lyjak c2e7f1784b DBOS/Postgres server support (#367) 2026-02-11 19:06:53 -05:00
Adrian Lyjak 79159f0be0 DBOS runtime (#157) 2026-02-10 21:31:04 -05:00
Adrian Lyjak 528d5623a3 Server runtime (#342) 2026-02-10 14:25:47 -05:00
Adrian Lyjak e981f7312a Fix: idle detection only working for wait_for_event (#359) 2026-02-10 00:23:06 -05:00
Adrian Lyjak 563c13a101 Add README files for llama-agents-client and llama-agents-server packages (#355) 2026-02-09 19:40:08 -05:00
Adrian Lyjak 62b7a5f3b0 Add test count to dev test runner (#354) 2026-02-09 19:40:08 -05:00
Adrian Lyjak d2810f042d rename server packages ahead of functional changes (#353) 2026-02-09 19:40:08 -05:00
Adrian Lyjak b515a46c12 Changes to facilitate pluggable server runtime (#348) 2026-02-09 19:40:08 -05:00
llama-org-ci-bot[bot] b7818815d4 chore: version packages (rc) (#347)
Co-authored-by: llama-org-ci-bot[bot] <231146559+llama-org-ci-bot[bot]@users.noreply.github.com>
2026-02-09 19:40:08 -05:00
Adrian Lyjak 6ccdebd4e7 test pre release (#346) 2026-02-09 19:40:08 -05:00
Adrian Lyjak 587f71e38b Enter pre-release 2026-02-09 19:40:08 -05:00
Adrian Lyjak 7433d4cddb Add fix for double send when waiter event and accepted event match (#351) 2026-02-09 18:40:40 -05:00
Adrian Lyjak df2c4fd8f9 Only run openapi auto on main (#349) 2026-02-09 15:23:12 -05:00
Adrian Lyjak 7bc7750043 Add semver ↔ PEP 440 version format conversion utilities (#345) llama-agents-server@v0.2.0-rc.0 2026-02-09 13:27:16 -05:00
Logan 6e6b11314b fix agent data links in docs (#344) 2026-02-08 22:49:44 -06:00
Adrian Lyjak b48b8c24f3 fix: update debugger assets paths after server package move (#343)
The server package moved from llama-index-workflows to llama-agents-server,
but the update-index-html CLI command and GitHub Actions workflow still
referenced the old path. Update both to point to the new location at
packages/llama-agents-server/src/llama_agents/server/static/index.html.

https://claude.ai/code/session_01QTCs9m11U3ubvmXmKAfg6A

Co-authored-by: Claude <noreply@anthropic.com>
2026-02-06 19:22:02 -05:00
llama-org-ci-bot[bot] fa804b6dcf chore: version packages (#338)
Co-authored-by: llama-org-ci-bot[bot] <231146559+llama-org-ci-bot[bot]@users.noreply.github.com>
llama-agents-server@0.1.2 llama-agents-server@v0.1.2 llama-index-workflows@2.14.1 llama-index-utils-workflow@0.9.1 llama-agents-client@0.1.2
2026-02-06 14:46:20 -05:00
Adrian Lyjak 6ece7970dd Fix concurrent step cancellation regression in 2.14.0 (#340)
* Add xfailing test for concurrent step cancellation regression in 2.14.0

This test exposes a regression introduced in 2.14.0:
- In 2.13.1: A single asyncio.sleep(0) yield after stop_step returns is
  sufficient for cancellation to propagate, blocking other_step's write.
- In 2.14.0: The yield is not enough - other_step's write still goes through.

Test sequence:
1. stop_step returns StopEvent
2. Single yield point (asyncio.sleep(0))
3. other_step writes to stream

In 2.13.1: write is blocked (PASS)
In 2.14.0: write goes through (FAIL)

The architectural change from asyncio.Queue to tick_buffer + wait_for_next_task
in commit 45e7614 ("Remove asyncio queue from control_loop #315") changed the
timing characteristics, requiring longer delays for cancellation to take effect.

In 2.13.1, workers immediately put ticks in the queue via queue_tick(), and
the continuous _pull() task meant quick processing. In 2.14.0, workers return
results collected by wait_for_next_task, adding overhead that delays cancellation.

Related: https://llama-index.slack.com/archives/C0A3TFERFHV/p1770391664693399

https://claude.ai/code/session_01VWUvDsJ88uaVn4jT68Ny8X

* Fix concurrent step cancellation regression in 2.14.0

When a worker returns a StopEvent, immediately cancel other running
workers before adding the tick to the buffer. This restores the 2.13.1
behavior where a single asyncio.sleep(0) yield after stop_step returns
is sufficient for cancellation to propagate.

The regression was introduced in commit 45e7614 ("Remove asyncio queue
from control_loop #315") which changed the architecture from asyncio.Queue
to tick_buffer + wait_for_next_task. The new architecture had more overhead,
causing cancellation to take longer.

The fix checks if the completed worker's result contains a StopEvent, and
if so, calls cleanup_tasks() immediately to cancel other workers before
they can write to the event stream.

Also removes internal implementation references from comments.

Fixes: https://llama-index.slack.com/archives/C0A3TFERFHV/p1770391664693399

https://claude.ai/code/session_01VWUvDsJ88uaVn4jT68Ny8X

* Add patch changeset for concurrent step cancellation fix

* fix lint

* Improve StopEvent cancellation speed for sibling steps

---------

Co-authored-by: Claude <noreply@anthropic.com>
2026-02-06 14:41:46 -05:00
Adrian Lyjak ef7f808c70 Fix OpenAPI schema version to use correct package name (#337) 2026-02-06 01:38:44 -05:00
Adrian Lyjak 94dc6ad51d update openapi release for llama-agents-server (#336) llama-agents-server@v0.1.1 2026-02-05 16:27:10 -05:00
Adrian Lyjak e9c1fa4467 Fix openapi generation script to use correct module path (#335)
* Fix openapi generation script to use correct module path

The hatch script `server:openapi` was invoking `python -m workflows.server.server`,
but `workflows.server` is just a re-export shim with no `server.py` submodule.
The actual module with the `__main__` block lives at `llama_agents.server.server`.

* Move OpenAPI generation from workflows package to server package

The hatch openapi script and CI workflow were configured in the
llama-index-workflows package, which required a special hatch environment
with the `server` extra to access the server module. Since the actual
server code lives in llama-agents-server, move everything there where
all dependencies are already available directly.

- Add hatch config and openapi script to llama-agents-server pyproject.toml
- Remove hatch config and hatch dev dep from llama-index-workflows pyproject.toml
- Update publish_openapi.yml to run from packages/llama-agents-server
2026-02-05 16:02:36 -05:00
llama-org-ci-bot[bot] 5d48601ed7 chore: version packages (#334) llama-index-workflows@2.14.0 llama-agents-server@0.1.1 llama-agents-client@0.1.1 llama-index-utils-workflow@0.9.0 2026-02-05 15:15:16 -05:00
Adrian Lyjak 8824dbb21f fixup invalid changeset (#333) 2026-02-05 15:12:09 -05:00
Adrian Lyjak b0210c4f5c Fix release commands and make copyright headers consistent (#332) 2026-02-05 15:08:00 -05:00
Adrian Lyjak 808cddc4a3 refactor(server): Split up server.py and add service (#326)
* refactor(server): Split up server.py and add service
2026-02-04 15:23:04 -05:00
Adrian Lyjak 84c5cdd115 feat: add auto-fix PR manager action for lint failures (#322) 2026-02-03 16:50:45 -05:00
Adrian Lyjak 45e7614554 Remove asyncio queue from control_loop (#315) 2026-02-03 12:50:10 -05:00
Adrian Lyjak 6d70056da4 docs: clarify that Agent Builder changes require explicit redeployment (#321)
Add documentation explaining that changes made during Agent Builder sessions
don't automatically update existing deployments. Users must explicitly push
changes to GitHub and redeploy to update their production workflow. This
enables safe experimentation without affecting stable deployments.

https://claude.ai/code/session_01Rok9AU8XDhhgH1x3FhbhGg

Co-authored-by: Claude <noreply@anthropic.com>
2026-02-03 09:16:28 -05:00
Adrian Lyjak 0d8f5a7b27 fix: improve dev CLI pytest robustness (#320) 2026-02-02 19:02:44 -05:00
Adrian Lyjak 10d619a551 rename llama-index-workflows-* -> llama-agents-* (#319)
* rename llama-index-workflows-client -> llama-agents-client

* integration tests too
2026-02-02 16:40:17 -05:00
Adrian Lyjak 5ded4b40fa chore: CI/testing improvements for parallel test execution (#317)
* chore: CI/testing improvements for parallel test execution

- Add workflows-dev pytest command with parallel test runner
- Add pytest-xdist for parallel test execution (-nauto)
- Add timeouts to prevent test hangs (--timeout=10/60/120)
- Use module-scoped async fixtures for faster tests
- Remove mypy in favor of basedpyright/ty type checking
- Add test-docker CI job for integration tests with testcontainers
- Exclude integration tests from Python 3.9/3.14 in CI matrix
2026-02-02 13:27:10 -05:00
Adrian Lyjak 73c12541f5 refact: introduce runtime plugin architecture and context separation (#296)
* refact: introduce runtime plugin architecture and context separation

- Add Runtime abstract base class with BasicRuntime as default implementation
- Split context into external, internal, and pre-context modules
- Replace workflow_registry with workflow_tracker for workflow lifecycle management
- Remove broker.py in favor of runtime-managed execution
- Add plugins package with get_current_runtime() for context-aware runtime access
- Update handler and workflow to use new runtime interfaces
2026-01-31 18:19:42 -05:00
Adrian Lyjak 33bbd2398b Read workflows from globals rather than sys modules, (#314)
* Read workflows from globals rather than sys modules, to avoid module conflicts
2026-01-30 14:44:50 -05:00
Adrian Lyjak 6fdc45c746 chore: use deterministic changeset filename for debugger assets (#313)
Change the debugger asset update workflow to use a fixed filename
(.changeset/update-debugger-assets.md) instead of a timestamp-based
one. This ensures multiple updates accumulate into a single changelog
entry with the latest contents, rather than creating separate entries
for each update.

https://claude.ai/code/session_018SR5swLkGS4mVgY8RUR9iP

Co-authored-by: Claude <noreply@anthropic.com>
2026-01-29 18:47:26 -05:00
Adrian Lyjak db90f89b74 Separate server/client, and move to llama_agents namespace (#277)
* prep packages

* wrong coverage detection I think

* add ts deps?

* extend path for namespaces

* the big move, import issues though

* llama_index.workflows

* llama_agents

* alias may be working

* add type checker ignores for workflows secondary namespace, update ty, and add re-exports

* Add descriptions to new client and server packages

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

* Rather, commit the outputs

* keep the py files separate

* ignore examples deps

* Create afraid-books-own.md

---------

Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-29 18:16:02 -05:00
Adrian Lyjak 2d5974de0c Add agent builder docs, add resource config docs, re-organize wf docs with more explicit cloud docs section (#305) 2026-01-28 12:45:04 -05:00
hippopond 0e826b111b Draw nested workflows (#292) 2026-01-27 18:16:29 +00:00
Adrian Lyjak bc94ae31d5 Add documentation for handling blocking code in workflows (#310)
* docs: add guide for handling blocking code in workflows

Workflows run on asyncio, so blocking calls in steps stall the entire
event loop. This new page documents best practices:
- Offload blocking I/O to threads with asyncio.to_thread
- Offload CPU-intensive work to a small dedicated thread/process pool
  using loop.run_in_executor

https://claude.ai/code/session_018DdW3KPH2nt1FbWECt1uKF

* reframe to async

* docs: link to async Python overview from async workflows guide

---------

Co-authored-by: Claude <noreply@anthropic.com>
2026-01-27 13:04:13 -05:00
llama-org-ci-bot[bot] 3a2336356d chore: update debugger assets (#309)
Co-authored-by: llama-org-ci-bot[bot] <231146559+llama-org-ci-bot[bot]@users.noreply.github.com>
2026-01-27 07:26:45 -05:00
Adrian Lyjak f37e4e164b chore: add workflow to bump llama-index-core dependency (#308)
https://claude.ai/code/session_01XmJV7dHRYt9Y2GvFY3qRw2

Co-authored-by: Claude <noreply@anthropic.com>
2026-01-26 19:17:01 -05:00
Adrian Lyjak 2900f58f69 Support state type inheritance in workflows (#301) 2026-01-26 12:23:36 -05:00
llama-org-ci-bot[bot] 5716b1ec7f chore: version packages (#304)
Co-authored-by: llama-org-ci-bot[bot] <231146559+llama-org-ci-bot[bot]@users.noreply.github.com>
llama-index-workflows@v2.13.1 llama-index-workflows@2.13.1
2026-01-25 09:51:24 -05:00
Adrian Lyjak e958ed28db fix: ResourceConfig was loading config file eagerly (#306) 2026-01-25 09:43:38 -05:00
Adrian Lyjak ebaf212bbe Add resource validation to workflow.validate() (#303)
* feat: Add resource and resource config validation to workflow validate()

Adds optional resource validation to validate():

- validate_resource_configs (default True): Validates config files exist
  and match their Pydantic schemas
- validate_resources (default False): Resolves resource factories, also
  catches circular dependencies via ResourceManager

Key implementation:
- _validate_resource_configs(): Stack-based traversal of all resources
  and their dependencies, validates _ResourceConfig instances
- _validate_resources(): Resolves resources via ResourceManager.get()
- validate() now runs even with disable_validation=True when called
  explicitly
- Python 3.9 compat: restore event loop after asyncio.run()

* Create smooth-donkeys-run.md

* Update test_resources.py

Kill off a silly extra test

---------

Co-authored-by: Claude <noreply@anthropic.com>
2026-01-23 19:49:22 -05:00
llama-org-ci-bot[bot] e6bb9ec67b chore: version packages (#302)
Co-authored-by: llama-org-ci-bot[bot] <231146559+llama-org-ci-bot[bot]@users.noreply.github.com>
llama-index-workflows@v2.13.0 llama-index-utils-workflow@0.8.0 llama-index-workflows@2.13.0
2026-01-23 16:55:31 -05:00
Adrian Lyjak 6dd7fc0de8 Add resource config node support to workflow representation (#294) 2026-01-23 16:14:30 -05:00
Adrian Lyjak be198692de feat: Make resource dependencies more flexible (#295) 2026-01-23 12:41:37 -05:00