Skip to content

fix(agent-platform): sort session lists by recent activity - #69114

Merged
dmarticus merged 2 commits into
masterfrom
posthog-code/agent-sessions-sort-by-activity
Jul 9, 2026
Merged

fix(agent-platform): sort session lists by recent activity#69114
dmarticus merged 2 commits into
masterfrom
posthog-code/agent-sessions-sort-by-activity

Conversation

@dmarticus

Copy link
Copy Markdown
Contributor

Problem

The agent platform's sessions list (GET /api/projects/:id/agent_applications/:id/sessions/, proxied through the janitor) orders by created_at DESC.
A long-running session that was active seconds ago sinks below newer-but-idle sessions, so the "recent sessions" view doesn't reflect what's actually happening.

Changes

  • PgSessionQueue.listSummariesByApplication (powers the console session list) and listByApplication (powers MCP resources/list) now order by updated_at DESC — the runner stamps updated_at on every conversation write, and the agent_sess_updated_idx index already covers it. The fleet's listLiveForTeam already sorted this way.
  • Updated the SessionQueue interface docs, the janitor endpoint comment, and the Django sessions_list docstring from "newest first" to "most recently active first".
  • Synced the mirrored docstring line in the generated files (products/agent_platform/frontend/generated/api.ts, services/mcp/src/generated/agent_platform/api.ts).

Note

Behavior change for API consumers: the sessions list is now activity-ordered, not creation-ordered. The created_after / created_before filters are unchanged.

How did you test this code?

  • Updated the janitor GET /sessions ordering test so an older-created session with newer activity must sort ahead of a newer-created idle one — the previous fixtures only varied created_at, so no existing test caught activity-ordering regressions.
  • tsc --noEmit passes for agent-shared and agent-janitor; ruff clean on the touched Python file.
  • I could not run the janitor/persistence suites locally — they need real Postgres and SeaweedFS, which the sandbox doesn't have — so CI needs to confirm the updated test.
  • hogli build:openapi also needs a DB connection, so the generated files were hand-synced to the new docstring text (comment-only change). Worth a local regen to confirm no further diff.

Automatic notifications

  • Publish to changelog?
  • Alert Sales and Marketing teams?

Docs update

🤖 Agent context

Autonomy: Human-driven (agent-assisted)

Authored by Claude (PostHog Code session) at Dylan Martin's direction.
Skills invoked: /improving-drf-endpoints (viewset docstring touch).
The main decision was which list functions to change: only the two application-scoped list reads used by the console and MCP resource listing were switched to updated_at; sweep/reaper queries and the external_key lookup keep their existing ordering since they encode different semantics.

🤖 Generated with Claude Code

Order listByApplication and listSummariesByApplication by updated_at DESC instead of created_at DESC so the sessions list surfaces recently active sessions first.

Generated-By: PostHog Code
Task-Id: 3301dcc3-6718-42ef-b7d6-489e30532379
@dmarticus dmarticus self-assigned this Jul 7, 2026
@github-actions

github-actions Bot commented Jul 7, 2026

Copy link
Copy Markdown
Contributor

Hey @dmarticus! 👋

It looks like your git author email on this PR isn't your @posthog.com address (dmarticus@gmail.com). Since you're on the PostHog team, it's worth pointing your local git author email at your @posthog.com address. Why it matters:

  • Consistent work identity in git history — internal tooling that attributes commits to team members keys off your @posthog.com address.
  • Keeps team contributions easy to tell apart from external community ones when scanning history.

You can fix it for this repo with:

git config user.email "you@posthog.com"

Or set it globally with git config --global user.email "you@posthog.com". No need to redo this PR — just a nudge for next time. 🙂

@github-actions

github-actions Bot commented Jul 7, 2026

Copy link
Copy Markdown
Contributor

🤖 CI report

Bundle size — no change

Uncompressed size of every built .js bundle, compared against the base branch.

Total: 75.93 MiB · no change

No file changed by more than 1000 B.

Posted automatically by build-bundle-size-report · uncompressed bytes from dist-report

Eager graph — within budget

How much code each root ships on the eager path — downloaded and parsed before the surface is interactive. Measured from the esbuild output chunks (post-tree-shake, static imports only); lazy import() / React.lazy chunks are not counted.

Root Eager (shipped) Δ vs base Budget
entry (logged-out pages, app bootstrap)
src/index.tsx
1.20 MiB · 22 files no change ███░░░░░░░ 27.9% of 4.29 MiB
authenticated shell (every logged-in page)
src/scenes/AuthenticatedShell.tsx
8.04 MiB · 2,947 files no change █████████░ 86.9% of 9.25 MiB

🟢 node_modules/monaco-editor/ stays out of src/index.tsx
🟢 src/lib/components/ActivityLog/describers stays out of src/index.tsx
🟢 [object Object] stays out of src/index.tsx
🟢 [object Object] stays out of src/index.tsx
🟢 node_modules/monaco-editor/ stays out of src/scenes/AuthenticatedShell.tsx
🟢 src/lib/components/ActivityLog/describers stays out of src/scenes/AuthenticatedShell.tsx
🟢 [object Object] stays out of src/scenes/AuthenticatedShell.tsx
🟢 [object Object] stays out of src/scenes/AuthenticatedShell.tsx

Largest files eagerly shipped from src/index.tsx
Size File
126.8 KiB ../node_modules/.pnpm/react-dom@18.3.1_react@18.3.1/node_modules/react-dom/cjs/react-dom.production.min.js
24.6 KiB ../node_modules/.pnpm/buffer@6.0.3/node_modules/buffer/index.js
6.3 KiB ../node_modules/.pnpm/react@18.3.1/node_modules/react/cjs/react.production.min.js
4.5 KiB ../node_modules/.pnpm/@jspm+core@2.1.0/node_modules/@jspm/core/nodelibs/browser/process.js
3.9 KiB ../node_modules/.pnpm/scheduler@0.23.2/node_modules/scheduler/cjs/scheduler.production.min.js
1.4 KiB ../node_modules/.pnpm/base64-js@1.5.1/node_modules/base64-js/index.js
1.3 KiB src/RootErrorBoundary.tsx
912 B ../node_modules/.pnpm/ieee754@1.2.1/node_modules/ieee754/index.js
789 B src/scenes/ChunkLoadErrorBoundary.tsx
668 B src/index.tsx
Largest files eagerly shipped from src/scenes/AuthenticatedShell.tsx
Size File
277.1 KiB ../node_modules/.pnpm/posthog-js@1.398.2/node_modules/posthog-js/dist/rrweb.js
266.9 KiB ../node_modules/.pnpm/@posthog+icons@0.37.4_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/@posthog/icons/dist/posthog-icons.es.js
224.6 KiB src/taxonomy/core-filter-definitions-by-group.json
213.6 KiB ../node_modules/.pnpm/posthog-js@1.398.2/node_modules/posthog-js/dist/module.js
160.9 KiB src/queries/validators.js
154.0 KiB ../node_modules/.pnpm/re2js@0.4.1/node_modules/re2js/build/index.esm.js
126.8 KiB ../node_modules/.pnpm/react-dom@18.3.1_react@18.3.1/node_modules/react-dom/cjs/react-dom.production.min.js
106.1 KiB src/lib/api.ts
93.3 KiB ../node_modules/.pnpm/prosemirror-view@1.40.1/node_modules/prosemirror-view/dist/index.js
90.5 KiB ../node_modules/.pnpm/@tiptap+core@3.20.1_@tiptap+pm@3.20.1/node_modules/@tiptap/core/dist/index.js

Posted automatically by check-eager-graph · sizes are eager output bytes (shipped, post-tree-shake) from the esbuild metafile · part of #32479

Dist folder size — no change

Total size of the built frontend/dist folder (all assets), compared against the base branch.

Total: 1453.94 MiB · no change

@trunk-io

trunk-io Bot commented Jul 7, 2026

Copy link
Copy Markdown

Static BadgeStatic BadgeStatic BadgeStatic Badge

View Full Report ↗︎Docs

@dmarticus
dmarticus marked this pull request as ready for review July 7, 2026 23:52
@pr-assigner-resolver-posthog
pr-assigner-resolver-posthog Bot requested a review from a team July 7, 2026 23:52
@greptile-apps

greptile-apps Bot commented Jul 7, 2026

Copy link
Copy Markdown
Contributor

Reviews (1): Last reviewed commit: "fix(agent-platform): sort session lists ..." | Re-trigger Greptile

@posthog

posthog Bot commented Jul 8, 2026

Copy link
Copy Markdown
Contributor

👋 Visual changes detected for this PR.

Review and approve in PostHog Visual Review

If these changes are unexpected, they may be caused by a flaky test or a broken snapshot on master. Don't approve — rerun the job or wait for a fix.

@dmarticus dmarticus added the stamphog Request AI approval (no full review) label Jul 8, 2026
@stamphog

stamphog Bot commented Jul 8, 2026

Copy link
Copy Markdown

Note

🤖 stamphog reviewed 373a782a86f13b1c12bfa7a020c6ace26d2b9627 — verdict: REFUSED

Trunk's CI comment reports 2 failed tests on this exact commit, including test_distinct_descriptions_most_recent_first whose failure ("actual list of descriptions did not match expected") directly implicates the sort-order change this PR makes, and the gate verdict is still PENDING (not passed) — the author also states they couldn't run the janitor/persistence suites locally, so this failure is unconfirmed as unrelated/flaky.

  • Author wrote 0% of the modified lines and has 5 merged PRs in these paths (familiarity MODERATE).
  • 👍 on the PR from greptile-apps[bot], hex-security-app[bot].
  • Trunk Test Analytics reports 2 failed tests on the head commit, one (test_distinct_descriptions_most_recent_first) whose name and failure description directly match this PR's ordering change
  • Author could not run the janitor/persistence suites locally to confirm the fix doesn't regress ordering-dependent tests elsewhere
  • Gate verdict is listed as PENDING rather than passed
Gate mechanics and policy version
Gate Result
prerequisites all clear
deny-list no deny categories matched
size 18L, 4F substantive, 42L/7F incl. docs/generated/snapshots — within ceiling
tier T1-agent / T1c-medium (42L, 7F, two-areas, fix)
stamphog 2.0.0b3 .stamphog/policy.yml @ 5d347d6 · reviewed head 373a782

@stamphog stamphog Bot removed the stamphog Request AI approval (no full review) label Jul 8, 2026
@github-actions

github-actions Bot commented Jul 8, 2026

Copy link
Copy Markdown
Contributor

🦔 Hogbox preview · ✅ ready

▶ Open the preview

🔑 Login test@posthog.com / 12345678 (demo data)
🧩 Running this PR's backend and frontend, on the PostHog :master base
🔗 Link stable across rebuilds — a re-push swaps the box underneath, the URL stays
🔒 Access tailnet only (PostHog VPN)
💤 Idle sleeps after ~30 min idle (snapshot to S3, zero node cost) and wakes on your next visit in ~30s, behind a brief "waking up" screen

commit e8e9e49 · box box-4870f117caa4 · ready in 480s (push → usable) · build log · rebuilds on every push, torn down on close

@daniloc daniloc left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

do it

@dmarticus
dmarticus merged commit 70d1305 into master Jul 9, 2026
286 of 287 checks passed
@dmarticus
dmarticus deleted the posthog-code/agent-sessions-sort-by-activity branch July 9, 2026 18:51
@deployment-status-posthog

deployment-status-posthog Bot commented Jul 9, 2026

Copy link
Copy Markdown

Deploy status

Environment Status Deployed At Workflow
dev ✅ Deployed 2026-07-09 19:24 UTC Run
prod-us ✅ Deployed 2026-07-09 19:39 UTC Run
prod-eu ✅ Deployed 2026-07-09 19:41 UTC Run

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants