Skip to content

Conversation

@taylorparsons
Copy link
Owner

No description provided.

- Add OpenAI embeddings + FAISS-backed vector store with auto-migration from legacy JSON\n- Endpoints: /work-history (stats), /work-history/add, /work-history/import-path, /work-history/search, /work-history (DELETE), and /session/{id}/voice-transcript/memorize\n- Voice: inject top matches; keyword trigger ("remember that"); short spoken acknowledgement\n- UI: Remember button for current question\n- Logs: knowledge.* for import/add/search/memorize\n- Deps: faiss-cpu, numpy; config reads OPENAI_EMBEDDING_MODEL\n
…helpful/discovery) with template files under app/prompts/
- replace the playwright testing plan with a helium-focused strategy
…ct Discovery in persona dropdown and JS state\n- Update voice session payload/log defaults to discovery\n\nfeat(server): set Discovery as default coach persona\n\n- New sessions saved with coach_persona=discovery\n- Fallbacks/use-sites now default to discovery for prompts, voice, and status\n\ntest(ui): add UI test asserting default persona\n\n- New Helium/Selenium test verifies #coach-persona defaults to discovery\n- Drives a fresh session via uploads to reach the interview view\n\nrefactor(agent): introduce InterviewAgentConfig + docstrings\n\n- Replace long __init__ arg list with dataclass config\n- Add docstrings and split persona prompt builders\n\ndocs: update README to note Discovery default\n\nchore: pytest.ini to scope tests and filter noisy warnings\n\nchore(log): docstrings for request logging middleware\n\nmeta: capture analyzer report after refactor
…ia .gitignore exception\n\n- Fixes runtime: ModuleNotFoundError: app.config when running uvicorn on this branch\n- Provides OpenAI, uploads, and knowledge store settings with safe defaults
…c in default ALLOWED_EXTENSIONS, matching server expectations\n- Update analyzer report after rerun
Copy link

@chatgpt-codex-connector chatgpt-codex-connector bot left a comment

Choose a reason for hiding this comment

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

💡 Codex Review

Here are some automated review suggestions for this pull request.

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment on lines +1080 to +1085
meta = dict(req.metadata or {})
meta.update({
"session_id": session_id,
"question_index": qidx,
"question": ((session.get("questions") or [None])[qidx] if (qidx is not None) else None),
"source": "voice_memorize",

Choose a reason for hiding this comment

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

P1 Badge Handle missing questions when memorizing transcripts

The /session/{session_id}/voice-transcript/memorize endpoint indexes session["questions"][qidx] when building metadata. If the client supplies a question_index that has no corresponding entry (for example, memorizing before questions are generated or providing a custom transcript with a high index), the expression ((session.get("questions") or [None])[qidx]) raises IndexError, returning a 500 instead of a graceful 4xx response or None. This means a legitimate memorize request with valid text fails whenever the session lacks that index. Consider guarding the lookup with a length check or .get-style access so out-of-range indices do not crash the endpoint.

Useful? React with 👍 / 👎.

@taylorparsons
Copy link
Owner Author

Merge Checklist

  • Pre-merge
    • Rebase with main; ensure CI green; resolve all comments.
    • Confirm no conflicts; choose merge strategy (squash recommended).
  • Quality gates
    • Run tests: pytest -q and Helium/Selenium UI suites.
    • Lint/type: ruff/flake8 (or configured), mypy, black --check.
  • Config & secrets
    • Set OPENAI_API_KEY, OPENAI_EMBEDDING_MODEL.
    • Ensure FAISS index path is writable/persisted.
    • .doc allowed in ALLOWED_EXTENSIONS aligns with policy.
  • Data & migration
    • Verify auto‑migration from legacy JSON to FAISS on staging; confirm idempotency and capacity.
  • Functional verification
    • Personas: Discovery default; selector persists; voice/text use correct prompts.
    • Work History: /work-history stats/add/import-path/search/DELETE; voice “remember that”; UI Remember button.
    • Uploads accept .doc.
  • Logging/observability
    • knowledge.* and request logging behave; no PII; rotation OK.
  • Performance/stability
    • Measure search/memorize latency; startup time acceptable with FAISS index.
  • Docs/DX
    • README/AGENTS/docs updated for endpoints, env vars, personas, tests.
  • Deployment prep
    • Image includes faiss-cpu, numpy; mount persistent volume for FAISS index.
    • Rollback plan in place.
  • Post‑merge
    • Deploy to staging; smoke flows; monitor; promote if stable.
  • Rollback
    • Revert image/commit; restore legacy JSON path if needed; rebuild FAISS index if corrupted.

@taylorparsons taylorparsons changed the base branch from main to stage November 4, 2025 18:02
@taylorparsons
Copy link
Owner Author

Updated base branch to stage and attempted merge (squash), but the PR isn’t mergeable due to conflicts with stage.

Conflicting files (from local rebase/merge attempt):

  • README.md
  • AGENTS.md
  • app/config.py (add/add)
  • app/main.py
  • app/models/interview_agent.py
  • app/static/js/app.js
  • app/templates/index.html
  • requirements.txt
  • run.sh (deleted in stage, modified in feature)

Suggested resolution

  1. Rebase the feature branch onto stage and resolve conflicts:

    • git fetch origin
    • git checkout feat/work-history-faiss-remember
    • git rebase origin/stage
    • Resolve conflicts, git add the files, then git rebase --continue until complete.
    • If rebase is too noisy, git rebase --abort and instead run:
      • git merge origin/stage (resolve conflicts) → git commit
    • Push updates: git push -u origin feat/work-history-faiss-remember
  2. After conflicts are resolved, this PR to stage should become mergeable. I can then perform a squash merge.

Notes

  • Auto-merge could not be enabled (branch rules don’t allow it).
  • If stage should mirror main first, consider fast-forwarding stage from main before rebasing the feature branch.

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.

3 participants