Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
152 commits
Select commit Hold shift + click to select a range
67fdee4
fix(frontend): send /w app and developer links to the matching /m pag…
Nov 5, 2026
a3c7822
feat(frontend): observability parity in /m (rail entry, test set queu…
Nov 5, 2026
9531c60
fix(frontend): harden beta link routing after review
Nov 5, 2026
1498e99
fix(frontend): show reserved-name columns, nested collapsed values, s…
Nov 5, 2026
427b252
fix(frontend): look up the app section with a switch, not by name
Nov 5, 2026
3c490b3
fix(frontend): keep test set columns and selection right under search
Nov 5, 2026
a112647
fix(frontend): address review: query queues are trace queues, auto-re…
Nov 5, 2026
004e128
chore(frontend): shorten the role color note
Nov 5, 2026
f1cee3f
fix(frontend): keep the app when returning from /m traces
Nov 5, 2026
974d7b5
fix(frontend): keep the playground revisions when routing to /m
Nov 5, 2026
1c40e45
fix(frontend): keep Add column and the starter columns when a new tes…
Nov 5, 2026
2c0c9ef
fix(frontend): bulk delete visible rows only, and read columns and co…
Nov 5, 2026
d642f9b
test(frontend): update the beta redirect test for the developer pages…
Nov 5, 2026
dbaffdb
fix(frontend): give column header actions the columns the searched gr…
Nov 5, 2026
a06b5be
fix(frontend): storybook uses the shared Pretty JSON view; auto-refre…
Nov 5, 2026
920d5f8
Merge remote-tracking branch 'origin/fix/m-parity-app-routes' into fe…
Nov 6, 2026
f740026
Merge remote-tracking branch 'origin/feat/m-parity-observability' int…
Nov 6, 2026
e0d04a9
feat(frontend): beta developer mode is the one gate for /m developer …
Nov 6, 2026
e97c453
feat(frontend): /m developer mode rail like /w: Prompts, an Evaluatio…
Nov 6, 2026
c0c7e6b
feat(frontend): stage test set column edits until Commit in /m
Nov 6, 2026
2db8108
feat(frontend): match /w on the /m evaluations list header, menu and …
Nov 6, 2026
295eacd
fix(frontend): playground message editors fit their text and use the …
Nov 6, 2026
d4276d7
feat(frontend): create and edit human evaluators in /m
Nov 6, 2026
42828d7
chore(frontend): one-line comments in the developer rail
Nov 6, 2026
9c1111e
feat(frontend): full-width developer pages, compact detail header, ap…
Nov 6, 2026
1a782ce
fix(frontend): keep import order and test a column change a commit ov…
Nov 6, 2026
119cfa2
feat(frontend): opt-in row selection and bulk bar in the shared list …
Nov 6, 2026
dabc1c6
feat(frontend): wide new evaluation sheet with /w steps and tables in /m
Nov 6, 2026
d295bd2
fix(frontend): Members tab works where no router is mounted; test the…
Nov 6, 2026
c4a0b85
feat(frontend): /m developer mode app menu inside an app, with Back a…
Nov 6, 2026
ebe6bc0
chore(frontend): one-line comments in the app menu
Nov 6, 2026
bcd24aa
fix(frontend): app switcher modified clicks open a tab only; AppIdent…
Nov 6, 2026
f24ef64
fix(frontend): address review on the human evaluator form
Nov 6, 2026
64dbd34
feat(frontend): /m developer mode app pages at /w URLs: /apps/<id>/va…
Nov 6, 2026
e8d3c4f
fix(frontend): Prompts rename uses the one rename dialog with the dup…
Nov 6, 2026
ccab6c2
feat(frontend): /m developer mode Prompts row lists the prompt apps, …
Nov 6, 2026
db6077d
feat(frontend): /m command palette finds developer pages, prompt apps…
Nov 6, 2026
45f2b13
fix(frontend): keep test set revisions while the list reloads; own fi…
Nov 6, 2026
8c5d88e
feat(frontend): create a prompt from the /m Prompts page in developer…
Nov 6, 2026
c5bbce1
feat(frontend): Open in the Prompts row menu and solid red confirm bu…
Nov 6, 2026
65a5e97
feat(frontend): named, linked reference chips in the /m trace drawer;…
Nov 6, 2026
e056a72
feat(frontend): editable revision drawer for Registry and Deployments…
Nov 6, 2026
b485687
feat(frontend): one row per evaluator, newest first, with select all …
Nov 6, 2026
04e19cd
feat(frontend): table settings, cell copy and edited-row marker in th…
Nov 6, 2026
6e39cba
fix(frontend): default the invite role to one the plan offers
Nov 6, 2026
586b71e
test(frontend): strip every required marker in the label lookup
Nov 6, 2026
6e52615
feat(frontend): add to test set in /m picks a revision and follows th…
Nov 6, 2026
aeb44ad
fix(frontend): keep drawer refs out of render and shorten comments
Nov 6, 2026
876cd6f
feat(frontend): shared evaluation logic in @agenta/entities, fix the …
Nov 6, 2026
31e623b
chore(frontend): test-design skill and Testing Library for /m tests
Nov 6, 2026
5d97c81
Merge remote-tracking branch 'origin/feat/m-parity-list-selection' in…
Nov 6, 2026
7cae561
Merge remote-tracking branch 'origin/feat/m-parity-editable-drawer' i…
Nov 6, 2026
a43e061
fix(frontend): keep a local draft in the revision drawer through a st…
Nov 6, 2026
4c32a36
feat(frontend): /m developer mode Registry table like /w: one row per…
Nov 6, 2026
4ffb7f6
feat(frontend): observability table seams for /m: refresh reloads ann…
Nov 6, 2026
cc10e74
feat(frontend): /m developer mode Registry compares two revisions wit…
Nov 6, 2026
88c85a6
feat(frontend): deployment drawer with Deploy and Revert, and a confi…
Nov 6, 2026
1428807
fix(frontend): a failed reference lookup keeps the label instead of D…
Nov 6, 2026
4eacb56
feat(frontend): /m developer mode Use API drawer on Registry and Depl…
Nov 6, 2026
01c489b
fix(frontend): show a retry when the invite roles fail to load
Nov 6, 2026
98bab16
fix(frontend): encode the app id in the app switcher and app menu links
Nov 6, 2026
0c50d97
Merge branch 'feat/m-parity-app-menu' into feat/m-parity-app-urls
Nov 6, 2026
71a5c3a
Merge branch 'feat/m-parity-app-urls' into feat/m-parity-prompts-tree
Nov 6, 2026
14f20de
Merge branch 'feat/m-parity-prompts-tree' into feat/m-parity-palette
Nov 6, 2026
bfa5a56
Merge branch 'feat/m-parity-app-urls' into feat/m-parity-registry-table
Nov 6, 2026
192c71c
Merge branch 'feat/m-parity-registry-table' into feat/m-parity-regist…
Nov 6, 2026
bae3d50
Merge branch 'feat/m-parity-registry-compare' into feat/m-parity-use-api
Nov 6, 2026
538d8de
feat(frontend): overview Recent Prompts actions and editable drawer i…
Nov 6, 2026
729aaea
fix(frontend): drop the deleted rename prompt dialog from its Storybo…
Nov 6, 2026
bf79888
fix(frontend): live runs show cost, duration and tokens from their ev…
Nov 6, 2026
9ec1132
fix(frontend): keep the playground that Open in playground sets up, a…
Nov 6, 2026
1880580
Merge branch 'feat/m-parity-editable-drawer' into feat/m-parity-deplo…
Nov 6, 2026
80057ec
Merge branch 'feat/m-parity-deployment-drawer' into feat/m-parity-ove…
Nov 6, 2026
8ea599b
test(frontend): check that Copy copies the full cell value
Nov 6, 2026
7d64a8b
fix(frontend): keep stored feedback names editable and name the cells…
Nov 6, 2026
e7b4f93
fix(frontend): app menu code loads only inside an app; prettier line …
Nov 6, 2026
00f37f6
Merge branch 'feat/m-parity-app-menu' into feat/m-parity-app-urls
Nov 6, 2026
039d5ac
Merge branch 'feat/m-parity-app-urls' into feat/m-parity-prompts-tree
Nov 6, 2026
a5d8afe
Merge branch 'feat/m-parity-prompts-tree' into feat/m-parity-palette
Nov 6, 2026
4d0d268
Merge branch 'feat/m-parity-app-urls' into feat/m-parity-registry-table
Nov 6, 2026
b97694f
Merge branch 'feat/m-parity-registry-table' into feat/m-parity-regist…
Nov 6, 2026
01c6e88
Merge branch 'feat/m-parity-registry-compare' into feat/m-parity-use-api
Nov 6, 2026
a747323
feat(frontend): /m developer mode app overview usage charts with a ti…
Nov 6, 2026
c30409d
feat(frontend): /m traces table polish: role colors, row lines in eve…
Nov 6, 2026
4a2d2f1
fix(frontend): keep useEvaluatorRevisions for New evaluation and shar…
Nov 6, 2026
e9224bf
feat(frontend): /m live evaluations like /w: query and sampling on th…
Nov 6, 2026
f18c29a
fix(frontend): keep the revision drawer's shown id in state, not a re…
Nov 6, 2026
11a1a0e
Merge branch 'feat/m-parity-editable-drawer' into feat/m-parity-deplo…
Nov 6, 2026
82dd823
Merge branch 'feat/m-parity-deployment-drawer' into feat/m-parity-ove…
Nov 6, 2026
04b8c88
fix(frontend): theme role colors are opt-in for /m; /w keeps the antd…
Nov 6, 2026
496bd1b
feat(frontend): overview Recent Prompts shows the full model name and…
Nov 6, 2026
394fc2d
fix(frontend): keep whole-number zeros, guard CSV formulas, fake fixt…
Nov 6, 2026
ab6ec18
fix(frontend): room for the full model name and the time in the overv…
Nov 6, 2026
1943f2f
fix(frontend): the revision drawer finds its revision among all playg…
Nov 6, 2026
ad170aa
Merge branch 'feat/m-parity-editable-drawer' into feat/m-parity-deplo…
Nov 6, 2026
021fed7
Merge branch 'feat/m-parity-deployment-drawer' into feat/m-parity-ove…
Nov 6, 2026
e5f5c59
fix(frontend): title an unsaved app New App and an unsaved evaluator …
Nov 6, 2026
bf0a05b
Merge remote-tracking branch 'origin/feat/m-parity-editable-drawer' i…
Nov 6, 2026
42599de
Merge commit 'refs/tmp/feat/m-parity-deployment-drawer' into HEAD
Nov 6, 2026
6e6b4aa
v0.128.9
mmabrouk Nov 6, 2026
2d90b7f
Merge pull request #8133 from Agenta-AI/fix/m-parity-app-routes
mmabrouk Nov 6, 2026
40e8012
Merge pull request #8134 from Agenta-AI/feat/m-parity-observability
mmabrouk Nov 6, 2026
8f20d95
Merge remote-tracking branch 'origin/release/v0.128.9' into feat/m-pa…
Nov 6, 2026
75bfb81
Merge pull request #8141 from Agenta-AI/feat/m-parity-one-gate
mmabrouk Nov 6, 2026
fc40cdc
Merge remote-tracking branch 'origin/release/v0.128.9' into feat/m-pa…
Nov 6, 2026
4a72b3f
Merge pull request #8140 from Agenta-AI/feat/m-parity-rail
mmabrouk Nov 6, 2026
d484497
Merge pull request #8143 from Agenta-AI/feat/m-parity-app-menu
mmabrouk Nov 6, 2026
50339fd
Merge remote-tracking branch 'origin/release/v0.128.9' into feat/m-pa…
Nov 6, 2026
c9ed595
Merge pull request #8151 from Agenta-AI/feat/m-parity-app-urls
mmabrouk Nov 6, 2026
c234390
Merge pull request #8152 from Agenta-AI/feat/m-parity-prompts-tree
mmabrouk Nov 6, 2026
4a7c49c
Merge pull request #8153 from Agenta-AI/feat/m-parity-palette
mmabrouk Nov 6, 2026
6282989
Merge pull request #8172 from Agenta-AI/feat/m-parity-overview-charts
mmabrouk Nov 6, 2026
05cc1f2
Merge pull request #8148 from Agenta-AI/feat/m-parity-list-selection
mmabrouk Nov 6, 2026
24f9042
Merge pull request #8157 from Agenta-AI/feat/m-parity-editable-drawer
mmabrouk Nov 6, 2026
a73635c
Merge remote-tracking branch 'origin/release/v0.128.9' into feat/m-pa…
Nov 6, 2026
db241e8
Merge pull request #8166 from Agenta-AI/feat/m-parity-registry-table
mmabrouk Nov 6, 2026
493b784
Merge pull request #8167 from Agenta-AI/feat/m-parity-registry-compare
mmabrouk Nov 6, 2026
153b96b
Merge remote-tracking branch 'origin/release/v0.128.9' into feat/m-pa…
Nov 6, 2026
fdc2bee
Merge pull request #8168 from Agenta-AI/feat/m-parity-use-api
mmabrouk Nov 6, 2026
10feecb
Merge pull request #8170 from Agenta-AI/feat/m-parity-deployment-drawer
mmabrouk Nov 6, 2026
62f62ff
Merge remote-tracking branch 'origin/release/v0.128.9' into feat/m-pa…
Nov 6, 2026
0da2a27
Merge pull request #8171 from Agenta-AI/feat/m-parity-overview-actions
mmabrouk Nov 6, 2026
44118f8
Merge pull request #8135 from Agenta-AI/fix/m-parity-testsets
mmabrouk Nov 6, 2026
d0411c8
Merge pull request #8142 from Agenta-AI/feat/m-parity-testset-staged-…
mmabrouk Nov 6, 2026
019da22
Merge pull request #8159 from Agenta-AI/feat/m-parity-testset-grid-fe…
mmabrouk Nov 6, 2026
df29301
Merge pull request #8160 from Agenta-AI/feat/m-parity-evaluators-list
mmabrouk Nov 6, 2026
475e0c2
Merge remote-tracking branch 'origin/release/v0.128.9' into feat/m-pa…
Nov 6, 2026
c97a24e
Merge pull request #8146 from Agenta-AI/feat/m-parity-human-evaluator…
mmabrouk Nov 6, 2026
73c8195
Merge pull request #8149 from Agenta-AI/feat/m-parity-new-evaluation-…
mmabrouk Nov 6, 2026
ff7987f
Merge pull request #8144 from Agenta-AI/feat/m-parity-evaluations-lis…
mmabrouk Nov 6, 2026
35cf74a
Merge pull request #8145 from Agenta-AI/fix/m-playground-editor-font
mmabrouk Nov 6, 2026
134c6f9
Merge remote-tracking branch 'origin/release/v0.128.9' into feat/m-pa…
Nov 6, 2026
06f413a
Merge pull request #8147 from Agenta-AI/feat/m-parity-page-frame
mmabrouk Nov 6, 2026
b5ee573
Merge pull request #8150 from Agenta-AI/feat/m-parity-one-rename
mmabrouk Nov 6, 2026
f8ae88b
Merge remote-tracking branch 'origin/release/v0.128.9' into feat/m-pa…
Nov 6, 2026
8997719
Merge pull request #8155 from Agenta-AI/feat/m-parity-prompts-list
mmabrouk Nov 6, 2026
8338dff
Merge remote-tracking branch 'origin/release/v0.128.9' into feat/m-pa…
Nov 6, 2026
6dec2c4
Merge pull request #8156 from Agenta-AI/feat/m-parity-create-prompt
mmabrouk Nov 6, 2026
17669a2
Merge pull request #8154 from Agenta-AI/feat/m-parity-obs-references
mmabrouk Nov 6, 2026
a79ce57
Merge remote-tracking branch 'origin/release/v0.128.9' into feat/m-pa…
Nov 6, 2026
e8ea128
Merge pull request #8165 from Agenta-AI/feat/m-parity-obs-table
mmabrouk Nov 6, 2026
939e808
Merge pull request #8173 from Agenta-AI/feat/m-parity-obs-table-polish
mmabrouk Nov 6, 2026
f74e969
Merge pull request #8161 from Agenta-AI/feat/m-parity-obs-add-to-testset
mmabrouk Nov 6, 2026
6879681
Merge pull request #8164 from Agenta-AI/feat/m-parity-evaluation-logic
mmabrouk Nov 6, 2026
1e7c541
Merge pull request #8178 from Agenta-AI/feat/m-parity-live-evals
mmabrouk Nov 6, 2026
8b663cc
Merge pull request #8162 from Agenta-AI/fix/oss-invite-default-role
mmabrouk Nov 6, 2026
e1362d6
Merge pull request #8163 from Agenta-AI/chore/test-design-skill
mmabrouk Nov 6, 2026
9235f08
fix(frontend): settle v0.128.9 review threads on the /m drawers, depl…
mmabrouk Nov 6, 2026
87cd268
Merge pull request #8200 from Agenta-AI/fix/release-01289-review-threads
mmabrouk Nov 6, 2026
d8c80bc
fix(frontend): settle v0.128.9 review threads on live run status, que…
Nov 6, 2026
cf30d4a
fix(frontend): leave the per-trace average out when an evaluator has …
Nov 6, 2026
53942d0
Merge pull request #8202 from Agenta-AI/fix/v0.128.9-run-wording-conf…
mmabrouk Nov 6, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
57 changes: 57 additions & 0 deletions .agents/skills/test-design/SKILL.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,57 @@
---
name: test-design
description: Decide what to test and how to write the tests for a frontend change. Use before you write or review unit tests for web/mobile or the @agenta/* packages, when you fix a bug and add a regression test, and before you say a change is tested. Gives the risk list, the rules for each test, and the mutation check.
---

# Test design

Tests exist to catch a change that hurts a user. Do three things in order.

## 1. List the risks first

Before you write a test, write a short risk list. Put it in the PR body under "What the tests cover". Ask what this change can break for a user. Order the answers by cost:

1. Saved data is lost, changed, or sent wrong (commit, rename, delete, discard, import).
2. The wrong scope or permission: another project's data, a hidden view, a role that must not see it.
3. A main flow stops: open, edit, save, run, navigate.
4. The screen shows a wrong value or a wrong state.
5. Looks and copy. These need no unit test.

For each risk in groups 1 to 3, check these cases:

- The normal case.
- Empty, missing, or one item.
- More than one page of data.
- The request fails, answers late, or answers out of order.
- The user acts twice, or acts while a save runs.
- The user leaves the page or discards the change.

Write one test for each risk and case that matters. Skip a case only if you can say why it cannot happen.

## 2. Write each test through the screen

- Name the test as a user behavior, in a plain sentence.
- Test through the screen, the hook, or the package atom. Do not test private helpers or the order of internal calls.
- Use the real `@agenta/*` atoms, molecules, and controllers in a `createStore()` store.
- Mock only what lives outside the code: HTTP, time, randomness, the router, and browser APIs that jsdom lacks, such as the clipboard.
- If a test needs more than about 5 `vi.mock` calls, the level is wrong. Move down to the package state, or up to a screen with real children.
- Never assert on a mock. An assertion that only checks what a mock returns or records tests the mock, so delete it. Keep an assertion on what the screen shows, even in a test that also mocks HTTP.
- Find elements as a user does: by role, label, or visible text. Do not use CSS classes or test ids. In `web/mobile`, use `@testing-library/react` (`screen`, `render`).
- Write expected values as literals. Do not compute them with the code under test.
- For code that saves data, assert the exact request body that reaches the server.
- A pure function with a rule over many inputs may use a table of cases.
- Do not write tests for constants, copy, styles, type shapes, or framework behavior. Do not write a test only to raise coverage.

## 3. Check your tests before you finish

Run the mutation check. Break the code in each realistic way below, one at a time, and confirm that at least one test fails:

- A wrong constant or argument.
- A condition turned around, or a wrong branch.
- A missing state change or a missing request.
- An empty or default return.
- A missing check for empty, null, or not allowed.

If no test fails, add a test. Or write in the PR body why the behavior is not covered.

For a bug fix, write the test that fails before the fix. Then ask which other cases from the list in block 1 have the same weakness. Test those cases too, in the same PR.
1 change: 1 addition & 0 deletions .claude/skills/test-design
2 changes: 2 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -120,6 +120,7 @@ clients/python/tests/results/
!.agents/skills/review-naming/
!.agents/skills/review-simplify/
!.agents/skills/review-slop/
!.agents/skills/test-design/
!.claude/
.claude/*
!.claude/skills/
Expand Down Expand Up @@ -157,6 +158,7 @@ clients/python/tests/results/
!.claude/skills/review-naming
!.claude/skills/review-simplify
!.claude/skills/review-slop
!.claude/skills/test-design
!.claude/settings.json

# Entire (entire.com) shared config and agent hooks; each hook is a no-op
Expand Down
2 changes: 1 addition & 1 deletion api/pyproject.toml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
[project]
name = "api"
version = "0.128.8"
version = "0.128.9"
description = "Agenta API"
requires-python = ">=3.11,<3.14"
authors = [
Expand Down
6 changes: 3 additions & 3 deletions api/uv.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion clients/python/pyproject.toml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
[project]
name = "agenta-client"
version = "0.128.8"
version = "0.128.9"
description = "Fern-generated Python client for the Agenta API."
requires-python = ">=3.11,<3.14"
authors = [
Expand Down
2 changes: 1 addition & 1 deletion clients/python/uv.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

13 changes: 13 additions & 0 deletions docs/design/m-developer-views/registry.md
Original file line number Diff line number Diff line change
Expand Up @@ -86,10 +86,23 @@ the user to /w and the views follow their stage, as before beta developer mode e
`isBetaDeveloperModeEnabled()` in `@agenta/shared/api` reads it. The local dev env files set it
to `true`.

## One gate in beta developer mode

With beta developer mode active, every view in the registry is on: pages, nav links, feature
gates and every cross link (Overview, Open in playground, the prompt row click). Nothing on
the developer side checks `stage` for that user, and Preferences shows no preview switches
(they would change nothing). A view added to the registry needs no extra step to appear.

Stages, the preview switches and `AGENTA_DEVELOPER_VIEWS` stay for users without beta
developer mode (and for deployments that do not offer it, such as production). They are the
only place `stage` is read. Do not read `stage` in a screen or a cross link: ask
`useDeveloperViewEnabled(id)`.

## Helpers (`features/developer/developerViewAccess.ts`)

- `isDeveloperViewEnabled(view, {previewOptedIn, forcedIds})`: the pure rule.
- `useDeveloperViewEnabled(viewId)`: `true`, `false`, or `null` until the signed-in user is
Under beta developer mode it is `true` for every view in the registry.
known. The first render is always `null`, so the answer never differs from the prerendered
HTML.
- `useEnabledDeveloperViews()`: the views the nav shows.
Expand Down
4 changes: 2 additions & 2 deletions hosting/kubernetes/helm/Chart.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,8 @@ apiVersion: v2
name: agenta
description: A Helm chart for deploying Agenta (OSS or EE) on Kubernetes
type: application
version: 0.128.8
appVersion: "v0.128.8"
version: 0.128.9
appVersion: "v0.128.9"
keywords:
- agenta
- llm
Expand Down
2 changes: 1 addition & 1 deletion sdks/python/pyproject.toml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
[project]
name = "agenta"
version = "0.128.8"
version = "0.128.9"
description = "Agenta is the open-source workspace for your agents. Build agents through chat, improve them with feedback, and share them with your team."
readme = "README.md"
requires-python = ">=3.11,<3.14"
Expand Down
4 changes: 2 additions & 2 deletions sdks/python/uv.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion services/pyproject.toml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
[project]
name = "services"
version = "0.128.8"
version = "0.128.9"
description = "Agenta Services (Chat & Completion)"
requires-python = ">=3.11,<3.14"
authors = [
Expand Down
6 changes: 3 additions & 3 deletions services/uv.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions web/AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -425,6 +425,7 @@ the source of truth for this area. Load it when you:
antd-style call sites; never raw antd `Modal`).
- Use entity state (molecules), the loadable/runnable bridges, or the `EntityPicker`.
- Write package unit tests (they live in `tests/unit/`, not `src/`).
- Decide what to test or review tests: load the **`test-design`** skill (risk list, how to write each test, mutation check).

Quick placement heuristic:

Expand Down
2 changes: 1 addition & 1 deletion web/ee/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@agenta/ee",
"version": "0.128.8",
"version": "0.128.9",
"private": true,
"engines": {
"node": "24.x"
Expand Down
10 changes: 10 additions & 0 deletions web/mobile/AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -108,3 +108,13 @@ cold compile time, and the `next build` time. The budget is in `scripts/speed/bu
a barrel that pulls a view into a shared page. If he approves, run `speed:check --write`
after a fresh build, review the diff of `budget.json`, and say why in the PR body.
A new route has no budget until it is added the same way.

<!-- BEGIN:nextjs-agent-rules -->

## This is NOT the Next.js you know

This version has breaking changes — APIs, conventions, and file structure may all differ from your training data. Read the relevant guide in `node_modules/next/dist/docs/` (resolved from this file's directory; in monorepos the `next` package may not be visible from the repo root) before writing any code. Heed deprecation notices.

This block is written and re-added by `next dev` — verify at `node_modules/next/dist/server/lib/generate-agent-files.js`. Removing it from a diff only re-creates the uncommitted change; committing it with your work keeps the tree clean.

<!-- END:nextjs-agent-rules -->
4 changes: 3 additions & 1 deletion web/mobile/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@agenta/mobile",
"version": "0.128.8",
"version": "0.128.9",
"private": true,
"engines": {
"node": "24.x"
Expand Down Expand Up @@ -71,6 +71,8 @@
"devDependencies": {
"@eslint/js": "^9.39.4",
"@tailwindcss/postcss": "^4.1.0",
"@testing-library/dom": "^10.4.0",
"@testing-library/react": "^16.3.2",
"@types/node": "^20.19.20",
"@types/react": "^19.0.10",
"@types/react-dom": "^19.0.4",
Expand Down
3 changes: 2 additions & 1 deletion web/mobile/src/features/annotations/FocusScenarioPicker.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ import {copyToClipboard} from "@agenta/ui/utils"
import {ArrowSquareOut, Copy} from "@phosphor-icons/react"
import {useAtomValue, useSetAtom} from "jotai"

import {useIsTraceQueue} from "./useIsTraceQueue"
import {useScenarioTraceOpener} from "./useScenarioTraceOpener"

/**
Expand All @@ -30,7 +31,7 @@ export const FocusScenarioPicker = ({
}) => {
const focusIds = useAtomValue(annotationSessionController.selectors.focusScenarioIds())
const total = useAtomValue(annotationSessionController.selectors.scenarioIds()).length
const isTraces = useAtomValue(annotationSessionController.selectors.queueKind()) === "traces"
const isTraces = useIsTraceQueue()
const traceRef = useAtomValue(
annotationSessionController.selectors.scenarioTraceRef(scenarioId),
)
Expand Down
5 changes: 2 additions & 3 deletions web/mobile/src/features/annotations/QueueListScreen.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,6 @@ import {
createQueueDrawerOpenAtom,
createQueueDrawerSelectionAtom,
} from "@agenta/annotation"
import {pageContentWidthClass} from "@agenta/ui/components/page-width"
import {Button} from "@agenta/ui/ui"
import {useSetAtom} from "jotai"
import {Plus} from "lucide-react"
Expand All @@ -14,6 +13,7 @@ import {useBindWorkspaceMembers} from "@/features/members/useBindWorkspaceMember

import {useBindProjectContext} from "../context/useBindProjectContext"
import {useProjectPermission} from "../context/useProjectPermission"
import {useDeveloperPageFrame} from "../developer/developerPageFrame"
import {AppShell} from "../nav/AppShell"
import {NavDrawer} from "../nav/NavDrawer"

Expand All @@ -22,8 +22,6 @@ import {QueueListContent} from "./QueueListContent"
import {useQueueDelete} from "./useQueueDelete"
import {useQueueList} from "./useQueueList"

const PAGE_FRAME = `${pageContentWidthClass} lg:px-16`

/** The annotation queues of the project: search, type filter, the list and the delete confirm. */
export const QueueListScreen = ({
workspaceId,
Expand All @@ -32,6 +30,7 @@ export const QueueListScreen = ({
workspaceId: string
projectId: string
}) => {
const PAGE_FRAME = useDeveloperPageFrame()
useBindWorkspaceMembers()
useBindProjectContext(projectId)
const base = `/w/${workspaceId}/p/${projectId}`
Expand Down
4 changes: 3 additions & 1 deletion web/mobile/src/features/annotations/states/AllCaughtUp.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -4,12 +4,14 @@ import {Check, Plus} from "@phosphor-icons/react"
import {useAtomValue, useSetAtom} from "jotai"
import Link from "next/link"

import {useIsTraceQueue} from "../useIsTraceQueue"

/**
* Every item of the queue is completed. Add to Testset exports them all; trace queues also point
* back to observability for more traces.
*/
export const AllCaughtUp = ({observabilityHref}: {observabilityHref: string}) => {
const isTraces = useAtomValue(annotationSessionController.selectors.queueKind()) === "traces"
const isTraces = useIsTraceQueue()
const isExporting = useAtomValue(
annotationSessionController.selectors.isAddToTestsetExporting(),
)
Expand Down
8 changes: 5 additions & 3 deletions web/mobile/src/features/annotations/useIsTraceQueue.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
import {annotationSessionController} from "@agenta/annotation"
import {useAtomValue} from "jotai"

/** True when the open queue holds traces. Only a test case queue is not a trace queue. */
export const useIsTraceQueue = (): boolean =>
useAtomValue(annotationSessionController.selectors.queueKind()) !== "testcases"
/** True when the queue's items are traces: a trace queue, or a query queue that collects them. */
export const useIsTraceQueue = (): boolean => {
const kind = useAtomValue(annotationSessionController.selectors.queueKind())
return kind === "traces" || kind === "queries"
}
Loading
Loading