Skip to content

fix(profile-learning): stop infinite User Profile Updated loop#191

Open
EyJunge1 wants to merge 3 commits into
tickernelz:mainfrom
EyJunge1:fix/profile-learning-infinite-loop
Open

fix(profile-learning): stop infinite User Profile Updated loop#191
EyJunge1 wants to merge 3 commits into
tickernelz:mainfrom
EyJunge1:fix/profile-learning-infinite-loop

Conversation

@EyJunge1

@EyJunge1 EyJunge1 commented Jul 25, 2026

Copy link
Copy Markdown

Summary

  • Stops the infinite "User Profile Updated" loop by not persisting echoed profile-analysis prompts, ignoring idle events from internal capture sessions, and marking batches after update conflicts.
  • Makes idle skip work against the OpenCode host client (path-based session.get) and tracks internal capture session IDs so post-delete idle events still match.
  • Closes "User profile updated" infinitely #170

Test plan

  • bun test tests/internal-capture-sessions.test.ts tests/plugin-host-config.test.ts (10/10 pass)
  • bun run typecheck + bun run build + bun run format:check (prettier fix pushed)
  • Full suite after build: 235 pass / 0 fail
  • Live: Against OpenCode host — internal capture session check via session.get works; repeated Skipping idle processing for internal capture session for structured-output sessions (loop guard). Profile learning runs from the real user session idle path (user-profile-learning: check / analyze called) without scheduling idle→LLM→idle on capture sessions. No repeating User Profile Updated toast storm observed across two idle windows.
  • Live: Ordinary user prompts still captured (I prefer short TypeScript…, Also use snake_case… persisted in user_prompts); normal session title not matched as internal capture (matched:false)

EyJunge1 and others added 3 commits July 25, 2026 21:18
…rnelz#170)

Do not persist echoed profile-analysis prompts, ignore idle events from
internal capture sessions, and mark batches after update conflicts so
the same prompts are not retried forever.

Co-authored-by: Cursor <cursoragent@cursor.com>
Live testing showed session.get must use path-based args; also track
internal capture session IDs so post-delete idle events still match.

Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Cursor <cursoragent@cursor.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.

"User profile updated" infinitely

1 participant