Skip to content

[release] v0.99.0#4265

Merged
bekossy merged 42 commits intomainfrom
release/v0.99.0
May 5, 2026
Merged

[release] v0.99.0#4265
bekossy merged 42 commits intomainfrom
release/v0.99.0

Conversation

@github-actions
Copy link
Copy Markdown
Contributor

@github-actions github-actions Bot commented May 5, 2026

New version v0.99.0 in

  • (web)
  • web/oss
  • web/ee
  • sdk
  • api
  • services

…nd unify workflow store for apps and evaluators

- Add `transformAgDataForTestset` to unwrap nested subject data from evaluator annotation spans, stripping internal bookkeeping keys and reshaping to `{inputs, outputs, score}` for testset compatibility
- Detect evaluator annotation spans via `trace_type === "annotation"` and `is_evaluator` flag or evaluator references
- Apply transformation to both live and original data for consistent
…cture

- Remove `transformAgDataForTestset` and evaluator annotation span detection logic that unwrapped nested subject data
- Replace `leafTracePathsAtom` and `traceDataPathsAtom` with `canonicalTracePathsAtom` that returns only `data.inputs` and `data.outputs` when present
- Update auto-mapping to seed from canonical envelope paths instead of all leaf paths
- Preserve evaluator annotation spans' nested structure in testcases to maintain replay
…chat handlers

- Expose inputs both flattened at root (e.g., `{{country}}`) and nested under `inputs` key (e.g., `{{$.inputs.country}}`) for consistent JSONPath resolution across completion, chat, and evaluator prompts
- Clear `input_keys` after validation to prevent `PromptTemplate.format()` from rejecting the injected envelope meta-key as extra
- Exclude `messages` from nested view in chat handler since it is handled separately
…yground

- Wrap `PlaygroundConfigSection` in `PlaygroundNodeTokenPathProvider` to scope suggestions to the node's chain context
- Split token path provider into global (inputs-only) and scoped (adds outputs when upstream exists) variants
- Update `useInputsSource` to accept `scopedEntityId` and read entity-specific input ports when provided
- Update `useOutputsSource` to accept `upstreamEntityId` and read upstream output ports directly
…traction to prevent ReDoS

- Replace regex-based extraction with prefix/suffix checks and string slicing
- Prevents polynomial backtracking on adversarial inputs (addresses CodeQL js/redos)
- Handle Jinja whitespace control (`{%-` / `-%}`) via explicit slice trimming
- Maintain identical behavior for `{{...}}`, `{%...%}`, and `{#...#}` wrappers
Replace legacy fallback mode with first-class flat token support. Both `{{country}}` and `{{$.inputs.country}}` now use the same suggestion pipeline, with flat tokens implicitly drilling into `$.inputs.*` to surface testcase columns and port schemas.
Wrap type pills in tooltips to show full labels on hover and apply max-width truncation to prevent long evaluator names (e.g., `__main__.MyEvaluator`) from breaking column layouts.
Add `is_managed` flag checks to exclude user-deployed Python evaluators (e.g., `user:custom:__main__.MyEval:latest`) from the Evaluators page. These SDK-registered evaluators aren't first-class catalog entries and should only appear in workflow execution contexts. Apply filter at both workflow-id cache level and revision query level for defense-in-depth.
Implement multi-tier language detection for CodeEditorControl: explicit schema override → sibling field lookup via `languageFromField` → heuristic on `runtime` field → python fallback. Add `useOptionalDrillIn` hook to safely access drill-in context from shared controls that may render outside the provider tree.
Replace `null` placeholder + clear button pattern with an explicit "All types" first option in the workflow type filter Select. Simplifies state handling by eliminating nullable semantics and ensures the reset path is always visible as a clickable option rather than requiring hover to reveal a clear button.
…orkflow type filter

Remove extra left indent from Ant Design's grouped select options to ensure visual alignment with the ungrouped "All types" entry. The default `.ant-select-item-option-grouped` padding creates unintended hierarchy when only one or two groups are visible.
…handling

- Add type guards for schema.properties access in parameters source
- Replace `||` with `??` for nullish coalescing in trace drawer
- Preserve workflow metadata when re-selecting same app in evaluation modal
- Update test regex to match "variant" or "revision" text
- Validate language hint before passing to code editor
- Fix TokenNode updateDOM to always return false and preserve selection
- Restrict token typeahead to end-of-token
@vercel
Copy link
Copy Markdown

vercel Bot commented May 5, 2026

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
agenta-documentation Ready Ready Preview, Comment May 5, 2026 2:58pm

Request Review

@dosubot dosubot Bot added the size:XS This PR changes 0-9 lines, ignoring generated files. label May 5, 2026
@coderabbitai
Copy link
Copy Markdown

coderabbitai Bot commented May 5, 2026

📝 Walkthrough

Summary by CodeRabbit

  • Chores
    • Version bumped to 0.99.0 across packages; core dependency constraints tightened and upgraded.
  • New Features
    • Editor token path typeahead and tooltip for smarter template suggestions.
    • New workflow kind/type tags for clearer App vs Evaluator and type visuals.
    • Playground: JSONPath-aware token suggestions, inputs/outputs/parameters sources, and improved testcase/variant editor UX.
  • Bug Fixes
    • Dependency lockfile handling now respects environment markers for more accurate version reporting.

Walkthrough

Bumps many package versions across Python and JS manifests and tightens several dependency constraints; rewrites three check_deps.load_locked_versions() implementations to be marker-aware; and adds a token-path/typeahead system with Playground-scoped sources, token plugins (tooltip/typeahead), workflow/evaluator UI/store changes, and several schema/port extraction and re-nesting adjustments.

Changes

Version & Dependency Metadata

Layer / File(s) Summary
Version Metadata
api/pyproject.toml, sdk/pyproject.toml, services/pyproject.toml, web/package.json, web/oss/package.json, web/ee/package.json
All package versions incremented 0.98.10.99.0.
Python / Dependency Constraints
api/pyproject.toml, sdk/pyproject.toml, services/pyproject.toml
Python spec tightened from ^3.11>=3.11,<3.14. Several dependency constraints bumped/tightened (examples: agenta, fastapi, uvicorn, gunicorn, opentelemetry-instrumentation, daytona, python-multipart, cryptography).

Marker-aware lockfile parsing

Layer / File(s) Summary
Behavior / Data Shape
api/check_deps.py, sdk/check_deps.py, services/check_deps.py
load_locked_versions() rewritten to evaluate per-package markers from poetry.lock and select the locked version matching the current Python interpreter instead of an unconditional name→version mapping.
Implementation / Details
api/check_deps.py, sdk/check_deps.py, services/check_deps.py
Adds sys and packaging.markers.Marker/InvalidMarker usage, builds a Python env dict, evaluates markers, skips non-matching entries, preserves first matching entry per package, and handles invalid markers gracefully.
Outcome
api/check_deps.py, sdk/check_deps.py, services/check_deps.py
Returned locked mapping now reflects environment-specific selections from the lockfile; downstream diff/reporting will use these selections.

Token-path / Typeahead system (Playground + Editor integration)

Layer / File(s) Summary
Types & Context
web/packages/agenta-ui/src/Editor/plugins/token/TokenPathSuggestionsContext.tsx, web/oss/src/components/Playground/PlaygroundTokenPath/types.ts
Introduce TokenPathSuggestion and EnvelopeSource data models and a provider/context for token-path suggestion getters.
Provider Wiring
web/oss/src/components/Playground/PlaygroundTokenPath/index.tsx, web/oss/src/components/Playground/OSSPlaygroundShell.tsx
Add PlaygroundTokenPathProvider and PlaygroundNodeTokenPathProvider and register the global provider in Playground shell provider stack.
Sources
web/oss/src/components/Playground/PlaygroundTokenPath/sources/inputs.ts, .../outputs.ts, .../parameters.ts, .../testcase.ts, .../shared.ts
Add useInputsSource, useOutputsSource, useParametersSource, useTestcaseSource and shared helpers to supply envelope-scoped suggestions (depth-aware root/sub-key proposals, schema- and observed-data-backed).
Observed/Testcase & Schema atoms
web/oss/src/components/Playground/PlaygroundTokenPath/atoms.ts, web/packages/agenta-playground/src/state/execution/selectors.ts
Add observedTestcasesAtom and aggregatedParametersSchemaAtom; extend inputPortSchemaMapAtom shape and add outputPortSchemaMapAtom for port schema metadata used by sources.
Editor: typeahead + token behavior
web/packages/agenta-ui/src/Editor/plugins/token/TokenTypeaheadPlugin.tsx, web/packages/agenta-ui/src/Editor/plugins/token/TokenNode.ts, web/packages/agenta-ui/src/Editor/plugins/token/extensions/tokenBehavior.tsx
Rewrite token typeahead to parse path-mode vs flat tokens, request suggestions from provider, require caret-at-end for menu activation, compute structured suggestions (label/tokenText/hint), and always reapply token validity styles. Add TokenTooltipPlugin to overlay.
Editor: tooltip plugin
web/packages/agenta-ui/src/Editor/plugins/token/TokenTooltipPlugin.tsx
New plugin renders tooltip for invalid tokens, tracking hovered invalid token DOM and reacting to attribute changes.
Editor exports
web/packages/agenta-ui/src/Editor/index.ts
Re-export token-path suggestion provider and hooks for consumers.

Playground UX & token scoping integrations

Layer / File(s) Summary
Node-scoped context
web/oss/src/components/Playground/PlaygroundTokenPath/chainContext.ts
Add nodeChainContextAtomFamily to compute allowed envelope slots (inputs/outputs) and upstream entity for a given playground entity.
Node provider usage
web/oss/src/components/Playground/PlaygroundVariantConfig/index.tsx
Wrap config section in PlaygroundNodeTokenPathProvider entityId={variantId} to scope typeahead to the node chain.
Playground input tooling
web/oss/src/components/Playground/PlaygroundTokenPath/sources/inputs.ts
useInputsSource optionally scopes to an entity’s input ports and merges observed testcase keys for suggestions.

Workflow / Evaluator UI and stores

Layer / File(s) Summary
UI components: unified type/kind tags
web/packages/agenta-entity-ui/src/workflow/WorkflowTypeTag.tsx, WorkflowKindTag.tsx, web/packages/agenta-entity-ui/src/index.ts, .../workflow/index.ts
Add WorkflowTypeTag and WorkflowKindTag UI components and re-export them from entity-ui package.
Replace ad-hoc evaluator tags in tables
web/oss/src/components/Evaluators/Table/assets/evaluatorColumns.tsx, web/oss/src/components/pages/app-management/components/appWorkflowColumns.tsx
Replace local evaluator-type pill/tag rendering with shared WorkflowTypeTag.
Evaluator table / cell cleanup
web/oss/src/components/Evaluators/assets/*
Remove several evaluator-table modules/components (EvaluatorTagsCell, EvaluatorTypePill, TableDropdownMenu, getColumns, and related types), simplifying evaluator table surface.
Evaluators store filter
web/oss/src/components/Evaluators/store/evaluatorsPaginatedStore.ts
Add isManagedEvaluator and filter caches/queries to only surface platform-managed evaluators (is_managed: true).

Evaluations & selection flows

Layer / File(s) Summary
Select workflow UI
web/oss/src/components/pages/evaluations/NewEvaluation/Components/SelectWorkflowSection.tsx, types.ts
Add SelectWorkflowSection (replaces removed SelectAppSection) supporting show-evaluators toggle, subtype filter, search wiring, and row selection callback (value, meta?). Update modal labels from “Variant” → “Revision”.
Modal wiring
web/oss/src/components/pages/evaluations/NewEvaluation/NewEvaluationModalContent.tsx, NewEvaluationModalInner.tsx
Switch dynamic import to SelectWorkflowSection, add selectedWorkflowMeta handling, change validation/messaging text to reference “revision”, and update selection callback signature to accept optional meta (label/isEvaluator).
Online evaluation filter
web/oss/src/components/pages/evaluations/onlineEvaluation/OnlineEvaluationDrawer.tsx
Tighten preview evaluator filtering to exclude human/feedback evaluators and require isOnlineCapableEvaluator.
Playwright tests
web/oss/tests/playwright/acceptance/*
Update acceptance tests to navigate modal steps labeled “Revision” rather than “Variant” and update assertions accordingly.

Workflow/entity runtime: template grouping, port extraction, renesting & schemas

Layer / File(s) Summary
Template parsing & grouping
web/packages/agenta-entities/src/runnable/portHelpers.ts, .../index.ts
Add extractLastPathSegment, groupTemplateVariables and associated types; update formatKeyAsName to use last segment. Re-export new helpers.
Template validation utilities
web/packages/agenta-shared/src/utils/templateVariable.ts, .../index.ts
Add KNOWN_ENVELOPE_SLOTS, validateTemplateVariable, isValidTemplateVariable, and extractTemplateExpression for template expression validation and suggestions. Re-exported via shared utils.
Variable grouping usage
web/packages/agenta-entities/src/workflow/state/molecule.ts, .../state/evaluatorUtils.ts
Switch variable extraction to grouped template variables for input-port derivation; preserve hidden fields in flat parameters for round-tripping and build synthetic sub-path schemas for grouped object sub-paths.
Port schema atoms
web/packages/agenta-playground/src/state/execution/selectors.ts, .../execution/index.ts, executionItemController.ts
Extend inputPortSchemaMapAtom to include name and add outputPortSchemaMapAtom; expose outputPortSchemaMapAtom via controllers for consumers.
Coerce input values
web/packages/agenta-entities/src/shared/execution/valueExtraction.ts
Add coerceCellValue and change extractInputValues to return Record<string, unknown>, parsing JSON-like strings heuristically.
Evaluator re-nesting / store rework
web/packages/agenta-entities/src/runnable/evaluatorTransforms.ts, web/packages/agenta-entities/src/workflow/state/store.ts
Tighten non-LLM re-nesting to allowlist schema-declared keys and preserve a flatSchemaForReNest captured pre-draft so evaluator parameter re-nesting reuses original flat schema (avoids loss of hidden metadata).
deriveWorkflowType updates
web/packages/agenta-entities/src/workflow/state/helpers.ts, .../state/index.ts, .../index.ts
Add legacy evaluator-key mapping and resolveEvaluatorWorkflowType; update deriveWorkflowTypeFromRevision signature to accept options? and use evaluator-aware resolution. Re-export helper.
App type color helper
web/packages/agenta-entities/src/workflow/core/schema.ts, .../core/index.ts
Add getAppTypeColor and APP_TYPE_PRESET mapping; export helper for UI coloring.

Playground / Testcase editor and mapping behavior

Layer / File(s) Summary
Playground testcase editor
web/oss/src/components/Playground/Components/PlaygroundTestcaseEditor.tsx
Replace DrillInView layout with custom fields UI, add NestedFieldEditor to edit sub-path leafs, compute existing/suggested columns from schema/prompt, allow adding suggested keys, and keep JSON editor branch using new data model.
Token-path helpers
web/oss/src/components/Playground/PlaygroundTokenPath/sources/shared.ts
Add helpers for schema sub-path extraction, observed key aggregation, and query matching used by sources.
Add-to-testset mapping
web/oss/src/components/SharedDrawers/AddToTestsetDrawer/atoms/drawerState.ts, .../hooks/useTestsetDrawer.ts
Replace leaf-path auto-mapping with canonicalTracePathsAtom (only data.inputs/data.outputs) and seed mapping rows one-per-canonical-path when auto-seeding.
Trace drawer raw data
web/oss/src/components/SharedDrawers/TraceDrawer/components/TraceContent/*
Stop sanitizing trace spans (stripNestedSpans) for raw tab; pass raw traceResponse?.response/activeTrace into drill-in rendering; remove stripNestedSpans utility.

Editor / Code editor & Variable Control tweaks

Layer / File(s) Summary
Code editor initial content logic
web/packages/agenta-ui/src/Editor/plugins/code/index.tsx
Refactor initial-content dispatch checking to compare current editor content against incoming initialValue (JSON/YAML/string-aware) and determine needsDispatch/forceUpdate.
Variable control & JSON shape hints
web/packages/agenta-playground-ui/src/components/adapters/VariableControlAdapter.tsx
Derive displayed variable label from port name, compute shapeHint for JSON object ports and show as help text when cell empty; anchor editor remount key to schema-derived schemaKey.
Drill-in optional hook
web/packages/agenta-entity-ui/src/DrillInView/components/MoleculeDrillInContext.tsx
Add useOptionalDrillIn hook that returns null when no DrillIn context is available; re-exported by components index.

Sequence Diagram(s)

sequenceDiagram
  participant Editor as Editor (Lexical)
  participant Provider as TokenPathSuggestionsProvider
  participant Inputs as useInputsSource
  participant Outputs as useOutputsSource
  participant Params as useParametersSource
  participant Testcases as useTestcaseSource
  Editor->>Provider: request getSuggestions(prefix, query)
  Provider->>Inputs: if envelope === "inputs" -> getSuggestions(afterSlot, query)
  Provider->>Outputs: if envelope === "outputs" -> getSuggestions(afterSlot, query)
  Provider->>Params: if envelope === "parameters" -> getSuggestions(afterSlot, query)
  Provider->>Testcases: if envelope === "testcase" -> getSuggestions(afterSlot, query)
  Inputs->>PlaygroundState: read inputPortSchemaMap / observedTestcases
  Outputs->>PlaygroundState: read outputPortSchemaMap
  Params->>PlaygroundState: read aggregatedParametersSchemaAtom
  Testcases->>PlaygroundState: read observedTestcasesAtom
  Inputs->>Provider: return suggestions[]
  Outputs->>Provider: return suggestions[]
  Params->>Provider: return suggestions[]
  Testcases->>Provider: return suggestions[]
  Provider->>Editor: merged suggestions[] (label, hint, tokenText)
Loading

(Note: rectangle colors omitted in sequence text; nodes represent components interacting at runtime.)

Estimated code review effort

🎯 4 (Complex) | ⏱️ ~45 minutes

Possibly related PRs

  • Agenta-AI/agenta#4229: Related frontend archive featureset touching archived views and lifecycle query changes.
  • Agenta-AI/agenta#4237: Overlaps on evaluator/workflow picker and token-path/typeahead changes; shares edits in sdk engine handlers and evaluator UI.
  • Agenta-AI/agenta#4251: Related monorepo release/version bump changes.
✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch release/v0.99.0

@dosubot dosubot Bot added size:L This PR changes 100-499 lines, ignoring generated files. and removed size:XS This PR changes 0-9 lines, ignoring generated files. labels May 5, 2026
Copy link
Copy Markdown

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🧹 Nitpick comments (1)
api/check_deps.py (1)

99-100: ⚡ Quick win

Move imports to module level.

import sys and from packaging.markers import Marker, InvalidMarker should be moved to module scope. These are used in load_locked_versions(), a helper function for configuration lookup. As per the coding guideline, avoid local imports inside helper functions unless there is a proven circular dependency—none exists here.


ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro Plus

Run ID: 2f25de5c-be22-42a5-9c3a-e794d3687731

📥 Commits

Reviewing files that changed from the base of the PR and between cd0783d and 855bcb7.

⛔ Files ignored due to path filters (3)
  • api/poetry.lock is excluded by !**/*.lock
  • sdk/poetry.lock is excluded by !**/*.lock
  • services/poetry.lock is excluded by !**/*.lock
📒 Files selected for processing (6)
  • api/check_deps.py
  • api/pyproject.toml
  • sdk/check_deps.py
  • sdk/pyproject.toml
  • services/check_deps.py
  • services/pyproject.toml
🚧 Files skipped from review as they are similar to previous changes (1)
  • sdk/pyproject.toml

Comment thread services/check_deps.py
@github-actions
Copy link
Copy Markdown
Contributor Author

github-actions Bot commented May 5, 2026

Railway Preview Environment

Status Destroyed (PR closed)

Updated at 2026-05-05T16:52:49.483Z

@dosubot dosubot Bot added size:XXL This PR changes 1000+ lines, ignoring generated files. and removed size:L This PR changes 100-499 lines, ignoring generated files. labels May 5, 2026
Copy link
Copy Markdown

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 9

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (1)
sdk/agenta/sdk/engines/running/handlers.py (1)

2198-2231: ⚠️ Potential issue | 🟠 Major | ⚡ Quick win

Reject messages as a reserved input key in chat_v0.

chat_v0 still strips inputs["messages"] out of _variables and excludes it from the nested inputs envelope, but the new reserved-key check does not block it. A caller-provided business field named messages is therefore silently reinterpreted as chat history instead of prompt data.

Suggested fix
-    _reject_reserved_input_keys(inputs)
+    _reject_reserved_input_keys(
+        None
+        if inputs is None
+        else {k: v for k, v in inputs.items() if k in {"inputs", "messages"}}
+    )
🧹 Nitpick comments (7)
web/packages/agenta-playground-ui/src/components/WorkflowRevisionDrawer/WorkflowRevisionDrawer.tsx (1)

104-104: ⚡ Quick win

Memoize the Drawer mask config instead of creating it inline.

{blur: true} is recreated every render. Use a memoized value (or a module-level constant) for a stable prop reference.

♻️ Proposed refactor
+    const drawerMask = useMemo(
+        () => (isEvaluatorDrawer || isStacked ? {blur: true} : false),
+        [isEvaluatorDrawer, isStacked],
+    )
...
-            mask={isEvaluatorDrawer || isStacked ? {blur: true} : false}
+            mask={drawerMask}

As per coding guidelines, "Avoid inline functions and objects in render; use useCallback to create stable callbacks outside of render logic".

web/packages/agenta-entities/src/runnable/evaluatorTransforms.ts (1)

122-139: 💤 Low value

Consider using Sets for hiddenKeys and advancedKeys for consistency.

allowedKeys uses a Set for O(1) lookups, but hiddenKeys and advancedKeys use arrays with .includes() (O(n) per call). For small evaluator schemas this is fine, but Sets would be more consistent.

♻️ Optional: Use Sets for consistent O(1) lookups
-const hiddenKeys = Object.entries(schemaProps)
-    .filter(([, prop]) => prop["x-ag-type"] === "hidden")
-    .map(([key]) => key)
-const advancedKeys = Object.entries(schemaProps)
-    .filter(
-        ([, prop]) => prop["x-advanced"] === true || prop["x-ag-ui-advanced"] === true,
-    )
-    .map(([key]) => key)
+const hiddenKeys = new Set(
+    Object.entries(schemaProps)
+        .filter(([, prop]) => prop["x-ag-type"] === "hidden")
+        .map(([key]) => key)
+)
+const advancedKeys = new Set(
+    Object.entries(schemaProps)
+        .filter(
+            ([, prop]) => prop["x-advanced"] === true || prop["x-ag-ui-advanced"] === true,
+        )
+        .map(([key]) => key)
+)
 const primaryData: Record<string, unknown> = {}
 const advancedData: Record<string, unknown> = {}
 for (const [key, value] of Object.entries(flat)) {
     if (!allowedKeys.has(key)) continue
-    if (hiddenKeys.includes(key)) continue
-    if (advancedKeys.includes(key)) {
+    if (hiddenKeys.has(key)) continue
+    if (advancedKeys.has(key)) {
         advancedData[key] = value
     } else {
         primaryData[key] = value
     }
 }
web/packages/agenta-entities/src/workflow/state/store.ts (1)

1265-1363: ⚖️ Poor tradeoff

Consider extracting shared evaluator normalization logic.

workflowBaseEntityAtomFamily and workflowEntityAtomFamily contain nearly identical code for evaluator normalization and draft re-nesting (~150 duplicated lines). While the separation is intentional (base skips schema resolution to avoid side effects), the shared normalization logic could be extracted to a helper function.

web/packages/agenta-ui/src/Editor/plugins/token/TokenTooltipPlugin.tsx (1)

108-117: 💤 Low value

Consider caching bounding rect to avoid repeated calls.

getBoundingClientRect() is called four times. While browsers may cache this within a single frame, extracting to a variable improves readability and ensures a single call.

♻️ Suggested refactor
+            const rect = target.getBoundingClientRect()
             <span
                 style={{
                     position: "fixed",
-                    left: target.getBoundingClientRect().left,
-                    top: target.getBoundingClientRect().top,
-                    width: target.getBoundingClientRect().width,
-                    height: target.getBoundingClientRect().height,
+                    left: rect.left,
+                    top: rect.top,
+                    width: rect.width,
+                    height: rect.height,
                     pointerEvents: "none",
                 }}
             />
web/packages/agenta-ui/src/Editor/plugins/token/TokenTypeaheadPlugin.tsx (1)

385-405: 💤 Low value

Consider using a more stable key than index.

The key ${suggestion.label}::${index} includes the index which helps with duplicate labels, but if the suggestion list order changes frequently, this could cause unnecessary re-renders. Since suggestions can have duplicate labels (e.g., same key from different sources), the current approach is acceptable but could be improved by including the hint in the key.

♻️ Optional improvement
-                    key={`${suggestion.label}::${index}`}
+                    key={`${suggestion.label}::${suggestion.hint ?? ""}::${index}`}
web/packages/agenta-entity-ui/src/workflow/WorkflowTypeTag.tsx (1)

78-85: 💤 Low value

Consider handling the case when templates haven't loaded yet.

The getDefaultStore() pattern correctly solves the isolated Provider issue, but templates could be an empty array if the evaluator catalog hasn't loaded yet. Currently, line 91 falls back to workflowKey which is reasonable, but you may want to add a loading indicator or ensure the catalog is pre-fetched before rendering table cells.

web/oss/src/components/pages/evaluations/NewEvaluation/Components/SelectWorkflowSection.tsx (1)

155-160: ⚡ Quick win

Debounce the search updates before they hit the store.

Every keypress currently propagates straight into the shared atom, which means this picker can retrigger queryWorkflows and the revision batch fetch on each input event. Please debounce the store update, ideally via the shared debounce hook, before querying.

As per coding guidelines, "Debounce search inputs and filters; throttle scroll and resize handlers" and "Use @agenta/shared/hooks for shared React hooks like useDebounceInput".

Also applies to: 259-264


ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro Plus

Run ID: 4ead469f-15d9-49fb-a360-00c66a9c1c9f

📥 Commits

Reviewing files that changed from the base of the PR and between 855bcb7 and ae9eaba.

📒 Files selected for processing (78)
  • sdk/agenta/sdk/engines/running/handlers.py
  • web/oss/src/components/Evaluators/Table/assets/evaluatorColumns.tsx
  • web/oss/src/components/Evaluators/assets/cells/EvaluatorTagsCell.tsx
  • web/oss/src/components/Evaluators/assets/cells/EvaluatorTypePill.tsx
  • web/oss/src/components/Evaluators/assets/cells/TableDropdownMenu/index.tsx
  • web/oss/src/components/Evaluators/assets/cells/TableDropdownMenu/types.ts
  • web/oss/src/components/Evaluators/assets/getColumns.tsx
  • web/oss/src/components/Evaluators/assets/types.ts
  • web/oss/src/components/Evaluators/store/evaluatorsPaginatedStore.ts
  • web/oss/src/components/Playground/Components/PlaygroundTestcaseEditor.tsx
  • web/oss/src/components/Playground/Components/PlaygroundVariantConfig/index.tsx
  • web/oss/src/components/Playground/OSSPlaygroundShell.tsx
  • web/oss/src/components/Playground/PlaygroundTokenPath/atoms.ts
  • web/oss/src/components/Playground/PlaygroundTokenPath/chainContext.ts
  • web/oss/src/components/Playground/PlaygroundTokenPath/index.tsx
  • web/oss/src/components/Playground/PlaygroundTokenPath/sources/inputs.ts
  • web/oss/src/components/Playground/PlaygroundTokenPath/sources/outputs.ts
  • web/oss/src/components/Playground/PlaygroundTokenPath/sources/parameters.ts
  • web/oss/src/components/Playground/PlaygroundTokenPath/sources/shared.ts
  • web/oss/src/components/Playground/PlaygroundTokenPath/sources/testcase.ts
  • web/oss/src/components/Playground/PlaygroundTokenPath/types.ts
  • web/oss/src/components/SharedDrawers/AddToTestsetDrawer/atoms/drawerState.ts
  • web/oss/src/components/SharedDrawers/AddToTestsetDrawer/hooks/useTestsetDrawer.ts
  • web/oss/src/components/SharedDrawers/TraceDrawer/components/TraceContent/components/TraceTypeHeader/index.tsx
  • web/oss/src/components/SharedDrawers/TraceDrawer/components/TraceContent/index.tsx
  • web/oss/src/components/SharedDrawers/TraceDrawer/components/TraceContent/utils/index.ts
  • web/oss/src/components/pages/app-management/components/ApplicationManagementSection.tsx
  • web/oss/src/components/pages/app-management/components/appWorkflowColumns.tsx
  • web/oss/src/components/pages/app-management/store/appWorkflowFilterAtoms.ts
  • web/oss/src/components/pages/app-management/store/appWorkflowStore.ts
  • web/oss/src/components/pages/app-management/store/index.ts
  • web/oss/src/components/pages/evaluations/NewEvaluation/Components/NewEvaluationModalContent.tsx
  • web/oss/src/components/pages/evaluations/NewEvaluation/Components/NewEvaluationModalInner.tsx
  • web/oss/src/components/pages/evaluations/NewEvaluation/Components/SelectAppSection.tsx
  • web/oss/src/components/pages/evaluations/NewEvaluation/Components/SelectVariantSection.tsx
  • web/oss/src/components/pages/evaluations/NewEvaluation/Components/SelectWorkflowSection.tsx
  • web/oss/src/components/pages/evaluations/NewEvaluation/types.ts
  • web/oss/src/components/pages/evaluations/onlineEvaluation/OnlineEvaluationDrawer.tsx
  • web/oss/src/components/pages/observability/assets/constants.ts
  • web/oss/tests/playwright/acceptance/auto-evaluation/index.ts
  • web/oss/tests/playwright/acceptance/auto-evaluation/tests.ts
  • web/oss/tests/playwright/acceptance/human-annotation/index.ts
  • web/oss/tests/playwright/acceptance/human-annotation/tests.ts
  • web/packages/agenta-entities/src/runnable/evaluatorTransforms.ts
  • web/packages/agenta-entities/src/runnable/index.ts
  • web/packages/agenta-entities/src/runnable/portHelpers.ts
  • web/packages/agenta-entities/src/shared/execution/valueExtraction.ts
  • web/packages/agenta-entities/src/workflow/core/index.ts
  • web/packages/agenta-entities/src/workflow/core/schema.ts
  • web/packages/agenta-entities/src/workflow/index.ts
  • web/packages/agenta-entities/src/workflow/state/evaluatorUtils.ts
  • web/packages/agenta-entities/src/workflow/state/helpers.ts
  • web/packages/agenta-entities/src/workflow/state/index.ts
  • web/packages/agenta-entities/src/workflow/state/molecule.ts
  • web/packages/agenta-entities/src/workflow/state/store.ts
  • web/packages/agenta-entity-ui/package.json
  • web/packages/agenta-entity-ui/src/DrillInView/SchemaControls/CodeEditorControl.tsx
  • web/packages/agenta-entity-ui/src/DrillInView/components/MoleculeDrillInContext.tsx
  • web/packages/agenta-entity-ui/src/DrillInView/components/index.ts
  • web/packages/agenta-entity-ui/src/index.ts
  • web/packages/agenta-entity-ui/src/workflow/WorkflowKindTag.tsx
  • web/packages/agenta-entity-ui/src/workflow/WorkflowTypeTag.tsx
  • web/packages/agenta-entity-ui/src/workflow/index.ts
  • web/packages/agenta-playground-ui/src/components/WorkflowRevisionDrawer/WorkflowRevisionDrawer.tsx
  • web/packages/agenta-playground-ui/src/components/WorkflowRevisionDrawer/store.ts
  • web/packages/agenta-playground-ui/src/components/adapters/VariableControlAdapter.tsx
  • web/packages/agenta-playground/src/state/controllers/executionItemController.ts
  • web/packages/agenta-playground/src/state/execution/index.ts
  • web/packages/agenta-playground/src/state/execution/selectors.ts
  • web/packages/agenta-shared/src/utils/index.ts
  • web/packages/agenta-shared/src/utils/templateVariable.ts
  • web/packages/agenta-ui/src/Editor/index.ts
  • web/packages/agenta-ui/src/Editor/plugins/code/index.tsx
  • web/packages/agenta-ui/src/Editor/plugins/token/TokenNode.ts
  • web/packages/agenta-ui/src/Editor/plugins/token/TokenPathSuggestionsContext.tsx
  • web/packages/agenta-ui/src/Editor/plugins/token/TokenTooltipPlugin.tsx
  • web/packages/agenta-ui/src/Editor/plugins/token/TokenTypeaheadPlugin.tsx
  • web/packages/agenta-ui/src/Editor/plugins/token/extensions/tokenBehavior.tsx
💤 Files with no reviewable changes (8)
  • web/oss/src/components/Evaluators/assets/cells/EvaluatorTagsCell.tsx
  • web/oss/src/components/Evaluators/assets/cells/TableDropdownMenu/types.ts
  • web/oss/src/components/Evaluators/assets/cells/TableDropdownMenu/index.tsx
  • web/oss/src/components/Evaluators/assets/types.ts
  • web/oss/src/components/SharedDrawers/TraceDrawer/components/TraceContent/utils/index.ts
  • web/oss/src/components/Evaluators/assets/cells/EvaluatorTypePill.tsx
  • web/oss/src/components/pages/evaluations/NewEvaluation/Components/SelectAppSection.tsx
  • web/oss/src/components/Evaluators/assets/getColumns.tsx
✅ Files skipped from review due to trivial changes (8)
  • web/oss/src/components/pages/evaluations/NewEvaluation/Components/SelectVariantSection.tsx
  • web/packages/agenta-shared/src/utils/index.ts
  • web/packages/agenta-entity-ui/src/workflow/index.ts
  • web/packages/agenta-entities/src/workflow/state/index.ts
  • web/packages/agenta-entities/src/workflow/index.ts
  • web/packages/agenta-entity-ui/src/workflow/WorkflowKindTag.tsx
  • web/packages/agenta-entities/src/runnable/index.ts
  • web/oss/src/components/pages/app-management/store/index.ts

Comment thread sdk/agenta/sdk/engines/running/handlers.py
Comment thread web/packages/agenta-ui/src/Editor/plugins/code/index.tsx
@dosubot dosubot Bot added the lgtm This PR has been approved by a maintainer label May 5, 2026
@bekossy bekossy merged commit 3174f53 into main May 5, 2026
36 of 39 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

lgtm This PR has been approved by a maintainer size:XXL This PR changes 1000+ lines, ignoring generated files.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants