Repository navigation
What's Changed
- Security: exclude litellm 1.107.0, which was published to PyPI with a credential stealer and backdoor, from every
litellmrequirement (thelitellm,entity_resolution_llmandallextras, and the examples). The locked version stays 1.96.2, which is unaffected by @georgeh0 in #2576 - Preview works on real pipelines and writes nothing
- Preview now handles target states under a container (rows in a Postgres / Qdrant / LanceDB table, and so on), so it no longer stops at once on most pipelines. A preview no longer stores, deletes or refreshes memos and no longer writes committed state, so it can't make the next real update skip work. Connector authors:
TargetActionSink.from_fn(fn, child_handler=...)/from_async_fn(...)replacefrom_fn_with_children/from_async_fn_with_children, which now raiseDeprecationWarningand don't support preview. Neo4j, FalkorDB and SurrealDBConnectionFactorykeep one connection per event loop and gainclose()(neo4j, falkordb). FalkorDB now requiresfalkordb>=1.6.0by @badmonster0 in #2510
- Preview now handles target states under a container (rows in a Postgres / Qdrant / LanceDB table, and so on), so it no longer stops at once on most pipelines. A preview no longer stores, deletes or refreshes memos and no longer writes committed state, so it can't make the next real update skip work. Connector authors:
- feat(engine):
max_inflight_componentsnow bounds every running component. A parent lends its slot to one child at a time, so wide fan-outs stay within the limit and a hierarchy of any depth can't deadlock by @georgeh0 in #2486 - feat(core):
coco.logic_propagated_to_callers(fn)makes a callback's logic count toward its callers' memos, even when it is called through a library function that useslogic_tracking="self". Editing the callback now invalidates those memos by @georgeh0 in #2483 and #2529 (coco.logic_trackedremains as a deprecated alias) - feat(code): Nix syntax support for splitting and structural code patterns by @mulatta in #2434
- Rust SDK fixes
- Memoized calls join the enclosing caller's frame, so a memoized caller no longer returns stale values or deletes its children's outputs on a cache hit. Mounting inside
#[function(memo)]is rejected, as in Python.use_mount!/mount_each!key by memo identity, so touching a file no longer re-runs every component. Connectors use one sink per handler instead of one apply per row by @badmonster0 in #2503 App::drop_stateand normal updates now remove targets declared through root providers (directory files, Postgres/SQLite/LanceDB/Qdrant/… tables) when they're no longer declared. Breaking: the neo4j/falkordb table and relation target functions take&ContextKey<Graph>instead of&Graphby @badmonster0 in #2512
- Memoized calls join the enclosing caller's frame, so a memoized caller no longer returns stale values or deletes its children's outputs on a cache hit. Mounting inside
- fix(graph):
cocoindex dropand un-declaring a table delete the Neo4j/FalkorDB nodes and relationships the app wrote, and a primary-key change rebuilds the table instead of leaving old-key nodes behind by @georgeh0 in #2498 - fix(neo4j): an apply batch retries on transient errors such as
DeadlockDetectedinstead of failing the component by @georgeh0 in #2491 - fix(ops):
LiteLLMEmbedderembeds text starting withdata:…;base64,,gs://orfiles/as text rather than as a file reference. A request litellm refuses to build no longer retries until the 10-minute deadline; the batch is split to isolate the bad text by @georgeh0 in #2532 - fix(code_match): regex prefilters no longer drop nested alternatives, which made searches miss matches.
regex_required_literalsis now public by @georgeh0 in #2525 - fix(fn):
@coco.fn(batching=...)/runner=...are now type errors (use@coco.fn.as_async), and a lonemax_batch_size=on a sync function is rejected instead of ignored by @georgeh0 in #2493 - fix(env): on free-threaded Python 3.14, the background event loop no longer starts twice, and an environment can be reopened without
close()after a localfs-reading app by @georgeh0 in #2490 and #2499 - fix(utils): internal errors show their full cause chain (e.g.
db error: ERROR: deadlock detectedinstead ofdb error) by @georgeh0 in #2489 - Rust dependency security: drop the legacy rustls 0.21 stack from the S3 client (rustls-webpki advisories), take
aws-smithy-json0.62.7 (GHSA-8ffr-xgwf-xj56; MSRV is now 1.91.1), and bump rustls to 0.23.46 (GHSA-2mjx-qc3c-rqvc) by @georgeh0 in #2544, #2542 and #2543 - docs(telemetry): document the optional
applicationtag by @georgeh0 in #2539 - docs(valkey): document that
client_info_tagdefaults to"cocoindex"by @Jonathan-Improving in #2480
New Contributors
- @mulatta made their first contribution in #2434
- @Jonathan-Improving made their first contribution in #2480
Full Changelog: v1.0.25...v1.0.26