-
Notifications
You must be signed in to change notification settings - Fork 716
FEAT: Security & Azure deployment for CoPyRIT GUI #1554
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Open
adrian-gavrila
wants to merge
166
commits into
microsoft:main
Choose a base branch
from
adrian-gavrila:adrian-gavrila/frontend-attack-view
base: main
Could not load branches
Branch not found: {{ refName }}
Loading
Could not load tags
Nothing to show
Loading
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline,
and old review comments may become outdated.
Open
Changes from all commits
Commits
Show all changes
166 commits
Select commit
Hold shift + click to select a range
0d10970
Add run_initializers_async, Entra auth, and config-file support
romanlutz a9993ab
Expand memory interface and models for attack results
romanlutz 792dc8c
Merge branch 'romanlutz/memory-models-expansion' into romanlutz/backe…
romanlutz 3cfc605
Add attack-centric backend API with conversations and streaming
romanlutz 65a4182
Frontend attack view with conversations, history, labels, and config
romanlutz f6db5bf
Merge remote-tracking branch 'origin/main' into romanlutz/frontend_at…
romanlutz 0aff59d
fix: auto-fixed ruff format issues
romanlutz c27f2be
fix: address ruff and mypy lint issues
romanlutz c16196d
fix: remove unused type: ignore comments, ruff format
romanlutz c08b76f
Merge remote-tracking branch 'origin/main' into romanlutz/backend-att…
romanlutz 0a4280d
fix: auto ruff format fixes
romanlutz 96d5839
fix: address ruff and mypy lint issues
romanlutz 14fb53f
fix: ruff format
romanlutz ad31d5b
fix: resolve merge conflicts, align service->memory naming
romanlutz f8950ff
fix: E731 lambda, E501 line length, service->memory naming
romanlutz 4e4c247
Merge remote-tracking branch 'origin/main' into romanlutz/frontend_at…
romanlutz 84f2c9d
Merge remote-tracking branch 'origin/main' into romanlutz/backend-att…
romanlutz 14168cc
Merge remote-tracking branch 'origin/main' into romanlutz/frontend_at…
romanlutz 4440cfd
Merge remote-tracking branch 'origin/main' into romanlutz/backend-att…
romanlutz 484fcb9
fix: address copilot comments - imports, API contract, security, acce…
romanlutz b48e23f
fix: address copilot comments - security, cleanup, API contract
romanlutz 8c8d4aa
Merge remote-tracking branch 'origin/main' into romanlutz/frontend_at…
romanlutz 6bd4737
Merge remote-tracking branch 'origin/main' into romanlutz/backend-att…
romanlutz fe500fc
Fix mypy: pass datetime directly instead of isoformat string
romanlutz 2e5d4c3
Merge remote-tracking branch 'origin/main' into romanlutz/backend-att…
romanlutz 7770b52
Merge remote-tracking branch 'romanlutz/romanlutz/backend-attack-api'…
romanlutz 421d4a9
Use TargetCapabilities for supports_multi_turn in backend API
romanlutz 2949d05
Revert run_initializers_async extraction, use double initialize_pyrit…
romanlutz 8324f50
Address PR review comments: quick fixes
romanlutz b3670dc
Move video remix injection logic from AttackService to OpenAIVideoTarget
romanlutz dd8d719
Address remaining review comments: UTC datetimes, persist guard, docs
romanlutz 8bcbda8
Fix change_main_conversation to move old main to PRUNED not ADVERSARIAL
romanlutz 2e15aef
Validate target_conversation_id belongs to attack in add_message_async
romanlutz f2c40c3
Persist updated_at in change_main_conversation_async
romanlutz 7155dd0
Add comment explaining HTTPS-only check for Azure Blob URLs
romanlutz 2c646a0
Add score_type and score_category to Score DTO, support true_false sc…
romanlutz 838c34d
Replace 'stamp on' wording with 'attach to' for labels
romanlutz 635ac23
Clarify converter_types filter description: omit = no restriction
romanlutz 05cc65a
Clarify pagination cursor description in list_attacks route
romanlutz c5e25d9
Add explicit parens for attack_specific_params ternary clarity
romanlutz 5adeb07
Validate source_conversation_id in create_related_conversation_async
romanlutz f373cb8
Rename _persist_base64_pieces to _persist_base64_pieces_async
romanlutz d17f407
Only query lineage when original_prompt_id differs from piece id
romanlutz 2c5ddab
Fix SAS cache TTL to derive from token expiry instead of fixed value
romanlutz 89481b4
Rename _send_and_store_message and _store_message_only with _async su…
romanlutz 8aecad6
Redesign video remix: prompt_metadata DTO, validate_video_remix_piece…
romanlutz 168e552
Add --config-file to pyrit_backend, use FrontendCore for initialization
romanlutz 7c665e3
Strip data URI prefix in _persist_base64_pieces_async
romanlutz cb668c9
Serve media via URL instead of inline base64 encoding
romanlutz 1a7a796
Re-export PrependedMessageRequest from backend models __init__
romanlutz d7430b0
Consolidate backend models __init__ exports
romanlutz edd567f
Fix outdated Phase 2 comment in list_attacks_async
romanlutz c41d033
Enforce video_id presence on video_path pieces in remix validation
romanlutz 656b642
Deduplicate conversation IDs before querying stats
romanlutz 0770510
Merge remote-tracking branch 'origin/main' into romanlutz/backend-att…
romanlutz 2b92eed
Remove dead code and improve test coverage to 99%
romanlutz 893ed06
Fix test_init_with_defaults: assert None when no config file exists
romanlutz c47b360
Merge romanlutz/backend-attack-api into romanlutz/frontend_attack_view
romanlutz cf65c3a
Update frontend types and tests for backend API changes
romanlutz 7dcef74
Merge remote-tracking branch 'romanlutz/romanlutz/frontend_attack_vie…
romanlutz 1513745
Merge remote-tracking branch 'origin/main' into romanlutz/backend-att…
romanlutz 3c7d56f
fix: address PR review comments from hannahwestra25 and copilot
romanlutz f3617f2
fix: add type ignore for ContainerSasPermissions across mypy versions
romanlutz 4744fb2
Merge remote-tracking branch 'romanlutz/romanlutz/backend-attack-api'…
romanlutz ab10716
fix: mock DEFAULT_CONFIG_PATH in test_init_with_defaults for CI
romanlutz b48a084
feat: add centralized ApiError type and toApiError() helper
romanlutz 70c6e2c
feat: add Axios interceptors for request-ID and error logging
romanlutz e78e551
feat: add X-Request-ID middleware for frontend-backend log correlation
romanlutz 4614a87
feat: add useConnectionHealth hook + ConnectionHealthProvider
romanlutz 33dc890
feat: add ConnectionBanner for global connection status display
romanlutz 4330229
feat: add ErrorBoundary with try-again and reload fallback
romanlutz 214930e
feat: add error state + retry to AttackHistory
romanlutz de62e7d
feat: add error state + retry to ConversationPanel
romanlutz 612fde8
feat: refactor ChatWindow to use toApiError + preserve failed text
romanlutz e222f78
refactor: use toApiError() in TargetConfig for consistent error messages
romanlutz c4afd65
fix: restrict media endpoint to allowed subdirectories and block sens…
romanlutz fb22c3a
feat: add onError fallback for video/audio media elements
romanlutz 0f6548b
feat: wire ErrorBoundary, ConnectionHealthProvider, ConnectionBanner …
romanlutz 658199b
docs: document health endpoint contract for frontend polling
romanlutz 4bd4e5a
Merge remote-tracking branch 'romanlutz/romanlutz/backend-attack-api'…
romanlutz 696fba2
test: improve coverage and simplify ConnectionBanner
romanlutz b3556c4
fix: address hannahwestra25 review comments (round 2)
romanlutz f4a83c8
refactor: generate attack_result_id in AttackResult constructor
romanlutz 2532c26
fix: rename label key operator_name -> operator for consistency
romanlutz 74b7be2
refactor: standardize label keys to 'operator' and 'operation'
romanlutz 05502d1
fix: address ValbuenaVC review comments
romanlutz 0c78518
Merge remote-tracking branch 'origin/main' into romanlutz/backend-att…
romanlutz 16d6d5c
docs: use consistent label examples across notebooks
romanlutz 6b7949e
Merge remote-tracking branch 'origin/main' into romanlutz/frontend_at…
romanlutz 5bf2853
Merge remote-tracking branch 'romanlutz/romanlutz/backend-attack-api'…
romanlutz 84d6808
fix: address PR review comments (2-6)
romanlutz 36ab1c2
fix: address older PR review comments (D, E)
romanlutz 578ef67
fix: align api.test.ts mocks with backend contract
romanlutz 6ddea53
Merge remote-tracking branch 'origin/main' into romanlutz/frontend_at…
romanlutz e31e583
feat: support operator/operation labels from config file
romanlutz a7e9c22
fix: detect actual Vite port in dev.py status message
romanlutz acee8b9
fix: wait for backend health before declaring servers running
romanlutz 44f1bb5
fix: pipe backend output so status banner appears after init
romanlutz b799195
fix: kill stale processes on ports 8000/3000 during stop
romanlutz a2cecd9
fix: --database default no longer overrides config file
romanlutz be5c9cc
feat: add E2E error scenario tests
romanlutz 7fc3269
Merge remote-tracking branch 'origin/main' into romanlutz/frontend_at…
romanlutz ba3e0f7
feat: persist history view filters across navigation with reset button
romanlutz 2aeb18f
fix: resolve all frontend lint errors and warnings
romanlutz 7062730
fix: show all target params (e.g. reasoning_effort) in target config …
romanlutz f017454
test: add comprehensive tests for target_specific_params display
romanlutz 0c55662
fix: auto-open conversations panel on branch/copy actions
romanlutz c5ae445
fix: prevent continuing conversation after switching targets
romanlutz 50d8713
fix: auto-resolve video_id metadata for video remix in GUI
romanlutz 07ef599
feat: propagate video metadata through frontend for seamless remix
romanlutz 2a484df
fix: preserve video_path pieces in request so they appear in chat UI
romanlutz 7db65f6
fix: render binary_path pieces as file attachments instead of text
romanlutz d9d1ae6
fix: rename labels to label in listAttacks params to match backend
romanlutz 2091ddf
fix: normalize empty converter_types so empty query means no-converte…
romanlutz fc59abd
fix: replace tail with pure Python log tailing for Windows compatibility
romanlutz e263542
fix: use datetime instead of str for ConversationSummary.created_at
romanlutz 772ce9d
Merge remote-tracking branch 'origin/main' into romanlutz/frontend_at…
romanlutz 7e67f6e
fix: re-sign blob URLs with expired SAS tokens instead of skipping
romanlutz e18108f
Fix three systemic issues in seeded e2e flow tests
romanlutz 617c185
Address PR review comments, expand GUI docs, fix and add e2e/unit tests
romanlutz be8e410
refactor: convert ErrorBoundary to functional component using react-e…
romanlutz d12f41f
Merge remote-tracking branch 'origin/main' into romanlutz/frontend_at…
romanlutz 0d4b59c
fix: add loadConversation to useEffect deps to fix ESLint warning
romanlutz aa4482e
fix: run mock e2e tests in CI instead of seeded (no secrets needed)
romanlutz c5bc1ef
Refactor frontend: consolidate banners, rename hasMore, add tests, ex…
romanlutz c96f8ea
docs: add operator and operation label examples to .pyrit_conf_example
romanlutz 1fc43a2
fix: use useLayoutEffect for textarea auto-resize to avoid flicker
romanlutz 1398256
fix: remove broken GitHub user-attachment image links from GUI docs
romanlutz e760280
Revert "fix: remove broken GitHub user-attachment image links from GU…
romanlutz cdc2cd1
fix: add GUI screenshots to repo and use local paths in docs
romanlutz 24f264a
Merge remote-tracking branch 'origin/main' into romanlutz/frontend_at…
romanlutz 07df2c5
nit: update .pyrit_conf_example defaults to roakey/op_trash_panda
romanlutz 3ae8718
Move messages state from App.tsx into ChatWindow.tsx
romanlutz 13bb78d
docs: simplify operator/operation description in .pyrit_conf_example
romanlutz 5376b82
revert: undo .gitattributes changes
romanlutz 5775503
test: add video target remix test with text+video_path pieces
romanlutz 837d09b
fix: restore Python/uv setup in e2e CI job
romanlutz d351937
test: add missing test files for TargetTable and HistoryPagination
romanlutz 9a408a9
fix: tag api.spec.ts tests as @seeded since they need a real backend
romanlutz 2d57de8
fix: Docker GUI uses pyrit_backend CLI, mounts .pyrit_conf, documents…
romanlutz a0f5c9d
fix: simplify Docker auth - managed identity on Azure, service princi…
romanlutz 182d351
fix: resolve ruff and mypy pre-commit errors in auth middleware
romanlutz 202c7c7
fix: ACA deployment - disable PE, fix auth scope, update docs
f85d297
feat: security hardening + CI/CD pipeline for CoPyRIT GUI
0135b80
fix: use template expression to conditionally include prod stage
c6eee8a
fix: move service connection to compile-time variable
8aede38
fix: remove RBAC role assignments from Bicep template
15ce361
fix: supply chain warnings and auth redirect race condition
ac7c43e
fix: point .npmrc to Azure Artifacts feed (CFS0003)
5680f28
docs: move CSSC rationale from inline comments to infra/README.md
9c87d44
revert: use npmjs.org directly instead of Azure Artifacts feed
688a3a7
feat: multi-group auth support, remove OID allowlist
26fc982
fix: allow Azure Blob Storage in CSP for images and media
88f2d21
docs: add dev workflow, fix pipeline variable name
5ba1204
fix: migrate groups overage from graph.windows.net to graph.microsoft…
13fa226
fix: pass envSecretName to Bicep for per-environment KV secrets
0b70076
docs: scrub internal names from IaC and README for open-source readiness
1c211f6
Merge main and resolve conflicts
e082241
Fix npm ci peer dependency conflict with legacy-peer-deps
7fa4a80
Add tests for auth module to meet coverage thresholds
a324b30
Fix ESLint: replace require() with dynamic import() in msalConfig tests
df79b5f
Switch from custom access scope to Graph User.Read for auth
2fa7ad2
Correcting import path for getApiScopes
e90c541
Adding --no-cache to the docker build to prevent stale frontend bundles.
a3391a6
updating targets airt to target airt
88dc9d1
Address PR #1554 review comments
File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,3 @@ | ||
| # Pin npm registry — satisfies CSSC CFS0001 (sibling .npmrc required). | ||
| registry=https://registry.npmjs.org/ | ||
| legacy-peer-deps=true |
Oops, something went wrong.
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
where / how does this azure directory get created ?