Skip to content

Jobview#108

Merged
vinnybod merged 11 commits intoBC-SECURITY:mainfrom
jfmaes:jobview
Mar 3, 2026
Merged

Jobview#108
vinnybod merged 11 commits intoBC-SECURITY:mainfrom
jfmaes:jobview

Conversation

@jfmaes
Copy link
Copy Markdown
Contributor

@jfmaes jfmaes commented Feb 8, 2026

added new jobview tab to have a better overview of bg jobs in empire agents.

Copy link
Copy Markdown

Copilot AI left a comment

Choose a reason for hiding this comment

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

Pull request overview

This pull request adds a new "Jobs" tab to the Agent Edit view, providing a better overview of background jobs in Empire agents. The implementation includes a new component for displaying and managing background jobs, along with a new API endpoint for killing jobs.

Changes:

  • Added a new "Jobs" tab in the AgentEdit component alongside existing tabs (Interact, Tasks, View, etc.)
  • Created AgentJobs.vue component to display background jobs with auto-refresh functionality
  • Added killJob API endpoint to terminate running background jobs

Reviewed changes

Copilot reviewed 3 out of 72 changed files in this pull request and generated 4 comments.

Show a summary per file
File Description
src/views/AgentEdit.vue Added "Jobs" tab and imported AgentJobs component
src/components/agents/AgentJobs.vue New component implementing jobs view with table, polling, and job management features
src/api/agent-task-api.js Added killJob API function to send kill commands to background jobs
dist/* Build artifacts from compilation
.gitignore Updated to ignore dist/assets* files

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread src/components/agents/AgentJobs.vue Outdated
Comment thread src/components/agents/AgentJobs.vue
Comment thread src/components/agents/AgentJobs.vue Outdated
Comment thread src/components/agents/AgentJobs.vue Outdated
vinnybod and others added 9 commits February 24, 2026 20:28
Reverts build artifacts, .gitignore modifications, and lockfile
changes that were unintentionally included in the jobview branch.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
These files were added in intermediate releases and should not
be part of the jobview PR.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Replace expensive getTasks polling loop with single-task polling
  via getTask(), matching AgentTerminal.pollJobsEndpoint pattern
- Add loading guard to prevent concurrent refreshJobs calls
- Match AnsiUp import/usage from AgentTasksTable (stripAnsi, isAnsi)
- Add eslint-disable for v-html, rename headers to scopedHeaders
- Add 'continuous' to job status filter so continuous jobs are visible
- Add JSDoc to getJobs() in agent-task-api
- Match mono/font styles from AgentTasksTable

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Guard expandedJobs[item.id] access in template with v-if to
  prevent TypeError when row is expanded before data is populated
- Remove duplicate refreshJobs() call from mounted (the immediate
  watcher already handles initial load)
- Guard formatDate against null input to show "N/A" instead of
  "Invalid date" for jobs without creator tasks
- Add comment clarifying that agent's "Task ID" column represents
  background job/thread IDs, not Empire task IDs
- Add comment explaining why styles are unscoped (needed for v-html)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Fix silent failures: polling timeout now shows error instead of empty
  table, transient poll errors tolerated (abort after 3 consecutive)
- Use existing DownloadMixin instead of custom download methods
- Use shared pause utility instead of local duplicate
- Reuse single AnsiUp instance and replace full-string stripAnsi with
  efficient includes() check for ANSI detection
- Add destroy guards to polling loop and clean up timeouts on unmount
- Use recursive setTimeout for auto-refresh to prevent stacking
- Handle both string and Error rejections in catch blocks
- Consolidate duplicate job object construction with optional chaining
- Add KILLABLE_STATUSES/ACTIVE_STATUSES constants for stringly-typed values
- Clean up stale expandedJobs entries to prevent memory growth
- Remove dead scriptImportLoading/scriptImportDialog data properties
- Fix misleading comments and improve JSDoc

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
These files were changed by the original PR author's build environment
but are unrelated to the Jobs tab feature.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
# Conflicts:
#	CHANGELOG.md
#	dist/assets/AgentTasksList-247b5396.js
#	dist/assets/Bypasses-9515ca1b.js
#	dist/assets/Bypasses-fbedc3d0.js
#	dist/assets/Bypasses-ff65b201.js
#	dist/assets/CredentialEdit-2be4e903.js
#	dist/assets/Credentials-0f6249dd.js
#	dist/assets/Credentials-b248041a.js
#	dist/assets/Credentials-d5c13096.js
#	dist/assets/ExpansionPanelFilter-0b03a2e3.js
#	dist/assets/ExpansionPanelSearch-510739da.js
#	dist/assets/ExpansionPanelSearch-a1395f50.js
#	dist/assets/ExpansionPanelSearch-a27256ce.js
#	dist/assets/ListPageTop-34375fa2.js
#	dist/assets/ListPageTop-affa2da8.js
#	dist/assets/ListPageTop-e87eaf4c.js
#	dist/assets/Notifications-2e171aba.js
#	dist/assets/Notifications-76bce783.js
#	dist/assets/Notifications-7c964838.js
#	dist/assets/PluginTasksList-47e13ccc.js
#	dist/assets/TechniqueChips-3a891171.js
#	dist/assets/TechniqueChips-5469484a.js
#	dist/assets/TechniqueChips-5d8527a9.js
#	dist/assets/Users-12abc363.js
#	dist/assets/Users-65d565cc.js
#	dist/assets/Users-9691dbec.js
#	dist/assets/bypass-api-473852be.js
#	dist/assets/bypass-api-51e401a7.js
#	dist/assets/bypass-api-b460392c.js
#	dist/assets/credential-module-5bdb810d.js
#	dist/assets/credential-module-9c2d3e1b.js
#	dist/assets/credential-module-c556dff4.js
#	dist/assets/malleable-api-8b867ade.js
#	dist/assets/malleable-api-bbd095c5.js
#	dist/assets/malleable-api-df01e8ce.js
#	dist/assets/module-api-223c5781.js
#	dist/assets/module-api-5408a9e9.js
#	dist/assets/module-api-e89e5061.js
#	dist/assets/stager-module-6ad351cf.js
#	dist/assets/stager-module-84e95f5c.js
#	dist/assets/stager-module-8fd5d6c8.js
The original PR included dist/ build artifacts from a different base.
Reset to match main exactly so the PR only contains source changes.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
@vinnybod vinnybod merged commit 2b7583f into BC-SECURITY:main Mar 3, 2026
1 check passed
vinnybod pushed a commit that referenced this pull request Apr 5, 2026
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