Skip to content

title fresh chats by first prompt instead of session id - #264

Merged
kevinjosethomas merged 1 commit into
mainfrom
eng-4243
Jun 25, 2026
Merged

title fresh chats by first prompt instead of session id#264
kevinjosethomas merged 1 commit into
mainfrom
eng-4243

Conversation

@kevinjosethomas

@kevinjosethomas kevinjosethomas commented Jun 25, 2026

Copy link
Copy Markdown
Member
  • chats started from prime-agent showed their session id as the name because a fresh session has no saved scan or spawn prompt to derive a title from yet.
  • the session summary now falls back to the live in-memory first user message, so the chat is titled by its first prompt right away.
  • resumed sessions and subagents are unaffected since the saved title and spawn prompt still take precedence.

Note

Low Risk
Display-only change to session list titling with unchanged precedence for saved and subagent sessions.

Overview
Fresh top-level chats no longer show the session ID as the display title when the jsonl has not been scanned or flushed yet.

summaryForActiveSession extends the firstMessage chain: saved scan title and subagent spawn prompt still win, but if both are missing the daemon now derives a 120-char compact label from the live first user message in memory via new helper firstUserMessageText.

Resumed sessions and subagents are unchanged because existing precedence rules still apply.

Reviewed by Cursor Bugbot for commit 50e6f1b. Bugbot is set up for automated code reviews on this repo. Configure here.

Note

Title fresh chats by first user message text when no session title or prompt exists

In daemon-session-list.ts, summaryForActiveSession gains a final fallback for firstMessage: when neither savedSession.firstMessage nor metadata.prompt is available, it calls the new firstUserMessageText helper to extract a title from the first user message in the session. The helper scans session.messages for the first role === 'user' entry, extracts plain text, and truncates it to 120 characters.

Macroscope summarized 50e6f1b.

A freshly created top-level session has no saved-session scan and no
spawn-prompt metadata, so summaryForActiveSession left firstMessage
undefined and the agents-view title fell through to the session id.
Derive firstMessage from the live in-memory first user message so the
chat is titled by its first prompt immediately.
@linear

linear Bot commented Jun 25, 2026

Copy link
Copy Markdown
ENG-4243 Chats started from prime-agent are unnamed

Chats that are started from "prime-agent" command have their session ID as their name, rather than their first prompt. This is because we mock a real session before it's created, until a real chat message is sent.

Review in Linear

@kevinjosethomas
kevinjosethomas merged commit 59d7832 into main Jun 25, 2026
3 checks passed
@kevinjosethomas
kevinjosethomas deleted the eng-4243 branch June 26, 2026 00:37
zhengr pushed a commit to zhengr/prime-agent that referenced this pull request Aug 8, 2026
zhengr pushed a commit to zhengr/prime-agent that referenced this pull request Aug 8, 2026
…Intellect-ai#264)

A freshly created top-level session has no saved-session scan and no
spawn-prompt metadata, so summaryForActiveSession left firstMessage
undefined and the agents-view title fell through to the session id.
Derive firstMessage from the live in-memory first user message so the
chat is titled by its first prompt immediately.
thomaswillner added a commit to thomaswillner/prime-agent that referenced this pull request Aug 29, 2026
…rimeIntellect-ai#265/PrimeIntellect-ai#264 delivered (#12)

Three draft PRs opened and validated on spx-0dte-bot-v2 (PrimeIntellect-ai#268, PrimeIntellect-ai#269,
PrimeIntellect-ai#270), per the input of record's §7 self-refinement contract: session-
scoped environment and process learnings recorded here for the next
session; repo-relevant artifacts live in the V2 PRs themselves.

Claude-Session: https://claude.ai/code/session_01Su2woe3tXT3wQ1oCCkCDtC

Co-authored-by: thomaswillner <thomaswillner@gmail.com>
Co-authored-by: Claude <noreply@anthropic.com>
thomaswillner added a commit to thomaswillner/prime-agent that referenced this pull request Aug 29, 2026
…e-notes lesson (#13)

* docs(spx-v2): verification pass, queue state, and self-refinement record

No code written this session — a verification pass over already-delivered
work plus the queue-state answer.

Records, so future sessions do not repeat them:

- The audit-challenge / V1-coverage / rag-tot-cot-challenge / corrected-input
  deliverable ALREADY EXISTS (AUDIT_CHALLENGE sections A-D and
  PRIME_AGENT_INPUT_SPX_V2). An operator prompt has now asked for it in at
  least two sessions; redoing it is inventing work.
- Verified queue state from GitHub: PrimeIntellect-ai#266/PR PrimeIntellect-ai#268 merged (and PrimeIntellect-ai#263 with it,
  now main f64029a); PrimeIntellect-ai#265/PR PrimeIntellect-ai#269 and PrimeIntellect-ai#264/PR PrimeIntellect-ai#270 open with CI in flight;
  PrimeIntellect-ai#272 and PrimeIntellect-ai#271 filed, unstarted, no lane.
- Errors and corrections: settle elapsed time from GitHub workflow-run
  timestamps, never the container clock; add_repo push access was
  classifier-denied so a remote session may hold read-only and cannot push;
  register_repo_root denial falls back to reading CLAUDE.md directly.
- MATS/superpowers/routing settled empirically with the exact commands used,
  so the search is not repeated: they are Mac-harness resident, and PrimeIntellect-ai#272/PrimeIntellect-ai#271
  already carry auto-dispatch, which is what routes them to the maker fleet.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01G5B7QM1QLQuWSBMCxiCzS6

* docs(spx-v2): implementation-session addendum — access, setup, CI outage, self-review

Appends the second half of the session to the notes: implementing PrimeIntellect-ai#272 after
the operator corrected two access assumptions.

The corrections matter more than the code:
- push DOES work; "I cannot push" was inferred from add_repo's access label
  rather than tested. A dry-run push proved it. Also: the refspec push form is
  classifier-denied while `git push -u origin <branch>` succeeds.
- this host is not the MacBook (uname, no /Users, no ~/.prime).

Also records the environment setup the Makefile assumes (venv before
v2-install, ruff 0.15.22 via python -m, seeding the gitignored account.yaml,
and proving PYTHONPATH beats editable installs in a worktree), the method that
diagnosed the repo-wide CI outage in two calls (zero recorded steps, then the
same workflow red on main), and two test defects self-review caught before
pushing.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01G5B7QM1QLQuWSBMCxiCzS6

* docs(spx-v2): final queue state — PrimeIntellect-ai#273 merged, only PrimeIntellect-ai#271 remains

Closes the record for this session.

- All five briefed PRs merged (PrimeIntellect-ai#268, PrimeIntellect-ai#263, PrimeIntellect-ai#270, PrimeIntellect-ai#269, PrimeIntellect-ai#273); main is c84855d.
  Issues PrimeIntellect-ai#266 and PrimeIntellect-ai#272 closed by their PRs. PrimeIntellect-ai#271 is the only open brief and
  was never authorised, so never started. Runtime testing is unblocked.
- The CI outage (13:51Z-15:47Z) was account-level and hit main identically;
  recovery was visible as `changes` taking 9s with real steps instead of 2s
  with none. Nothing in the diff ever needed changing.
- Records the scope misjudgement worth carrying forward: a Codex P1 mapped
  directly to an acceptance checkbox I had deferred as out of scope. When a
  finding maps to an acceptance criterion it is in scope by definition.
- Records the auto-merge hazard: squash composes the commit message from the
  PR body, so a body left stale after a review round writes false claims into
  main permanently. Rewrite the body before merge; keep corrections visible.
- Records a published test claim that had not been executed, and the rule
  that follows from it.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01G5B7QM1QLQuWSBMCxiCzS6

* docs(spx-v2): correct the queue state — the last brief landed while idle

Records, without editing the now-false text away, that sections 9 and 4 went
stale five hours after they were written. The correction matters more than the
content: this file exists to stop sessions trusting notes over GitHub, and it
caught its own author.

- main is 8d2139c. Between 16:12Z and 21:54Z the fleet merged PrimeIntellect-ai#279 (the PrimeIntellect-ai#58
  alert-bridge race, FIXED — stop carrying it as a standing exception), PrimeIntellect-ai#278
  (AGENTS.md invariants), PrimeIntellect-ai#283 (repo cleanup), and PrimeIntellect-ai#284, which delivered the
  last brief and closed PrimeIntellect-ai#165 with a keyword.
- Section 3's routing conclusion was confirmed by events: PrimeIntellect-ai#271 was delivered
  by the Mac maker fleet via auto-dispatch, exactly as argued, and the remote
  session correctly declined to open a second lane.
- Flags issue-state drift: PrimeIntellect-ai#271, PrimeIntellect-ai#276 and PrimeIntellect-ai#274 are delivered and merged yet
  still open, because a title reference is not a closing keyword. That is the
  mirror image of the hazard the V2 CLAUDE.md documents, and it leaves
  open-work disagreeing with main. Operator action, named as such.
- Records the residual PrimeIntellect-ai#284 deferred on stated grounds (PrimeIntellect-ai#286), which is a
  known open edge on the LIVE path.
- States the next slice: S4 / PrimeIntellect-ai#236, the first whose exit criteria need a real
  broker order. Certification stays 0/12; the system has never placed a trade.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01G5B7QM1QLQuWSBMCxiCzS6

---------

Co-authored-by: Claude <noreply@anthropic.com>
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.

1 participant