Skip to content

feat(#128): Extend playground search to support user-indexed repos#132

Merged
DevanshuNEU merged 2 commits into
OpenCodeIntel:mainfrom
DevanshuNEU:feat/128-search-user-repos
Dec 26, 2025
Merged

feat(#128): Extend playground search to support user-indexed repos#132
DevanshuNEU merged 2 commits into
OpenCodeIntel:mainfrom
DevanshuNEU:feat/128-search-user-repos

Conversation

@DevanshuNEU

@DevanshuNEU DevanshuNEU commented Dec 26, 2025

Copy link
Copy Markdown
Collaborator

Issue #128: Search User-Indexed Repos

Changes

  • Add repo_id parameter to /playground/search endpoint
  • Keep demo_repo parameter for backward compatibility (defaults to "flask")
  • Validate session ownership for non-demo repos
  • Return 403 for access denied, 410 for expired repos with can_reindex: true

Code Quality (v2)

  • Extracted _resolve_repo_id() helper for cleaner endpoint code
  • Extracted _validate_user_repo_access() for ownership validation
  • Moved IndexedRepoData import to top level (was inline)
  • Added structured logging for all auth scenarios:
    • logger.info - successful search on user-indexed repo
    • logger.warning - access denied (no session, not owner, expired)
    • logger.debug - demo repo searches
  • Truncated sensitive data in logs (session tokens to 8 chars, repo IDs to 16 chars)

Request Model

class PlaygroundSearchRequest(BaseModel):
    query: str
    demo_repo: Optional[str] = None  # Backward compat
    repo_id: Optional[str] = None    # NEW: direct repo_id
    max_results: int = 10

Resolution Priority

  1. If repo_id provided → use directly (with auth check for non-demo)
  2. Else if demo_repo provided → resolve via DEMO_REPO_IDS
  3. Else → default to "flask"

Tests (7 new, 44 total passing)

  • User can search their own indexed repo
  • Access denied for repo user doesn't own
  • Access denied when session has no indexed repo
  • 410 returned for expired repos
  • Demo repos accessible via repo_id
  • Backward compat: demo_repo still works
  • Default to flask when no repo specified

Test Results

44 passed in test_anonymous_indexing.py
All 183 tests passing

Closes #128

- Add repo_id parameter to PlaygroundSearchRequest
- Keep demo_repo for backward compatibility (defaults to flask)
- Validate session ownership for non-demo repos
- Return 403 for access denied, 410 for expired repos
- Add 7 tests for user repo search scenarios
@vercel

vercel Bot commented Dec 26, 2025

Copy link
Copy Markdown

@DevanshuNEU is attempting to deploy a commit to the Dev's projects Team on Vercel.

A member of the Team first needs to authorize it.

…ons with logging

- Move IndexedRepoData import to top level (was inline import)
- Extract _resolve_repo_id() for cleaner search endpoint
- Extract _validate_user_repo_access() for session ownership checks
- Add structured logging for all auth scenarios:
  - Search on user-indexed repo (info)
  - Search denied - no session (warning)
  - Search denied - not owner (warning)
  - Search denied - repo expired (warning)
  - Demo repo searches (debug)
- Truncate sensitive data in logs (session tokens, repo IDs)

All 44 tests passing.
@vercel

vercel Bot commented Dec 26, 2025

Copy link
Copy Markdown

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

1 Skipped Deployment
Project Deployment Review Updated (UTC)
opencodeintel Ignored Ignored Preview Dec 26, 2025 5:14pm

@DevanshuNEU DevanshuNEU merged commit 0749d2a into OpenCodeIntel:main Dec 26, 2025
6 checks passed
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.

feat(backend): Update playground search to support user-indexed repos

1 participant