Files
pmg/internal/audit/event.go
T
Abhisek DattaGitHubdevin-ai-integration[bot] <158243242+devin-ai-integration[bot]@users.noreply.github.com>devin-ai-integration[bot] <158243242+devin-ai-integration[bot]@users.noreply.github.com>
e67735c1c3 feat: Add cloud sync event emit (#212)
* feat: Add cloud sync event emit

* fix: Linter fixes

* fix: Include malysis metadata in confirmed event

* fix: Code review fixes

* fix: Emit session complet event

* fix: Code review fixes

* chore: Add comment

* chore: Add cloud info in setup info command

* fix: Proxy flow must call install started

* fix: Code review fixes

* fix: Code review fixes

* Update internal/audit/cloud_sink.go

Co-authored-by: devin-ai-integration[bot] <158243242+devin-ai-integration[bot]@users.noreply.github.com>
Signed-off-by: Abhisek Datta <abhisek.datta@gmail.com>

* fix: Code review fixes

---------

Signed-off-by: Abhisek Datta <abhisek.datta@gmail.com>
Co-authored-by: devin-ai-integration[bot] <158243242+devin-ai-integration[bot]@users.noreply.github.com>
2026-04-11 12:33:27 +05:30

100 lines
2.7 KiB
Go

package audit
import (
"time"
packagev1 "buf.build/gen/go/safedep/api/protocolbuffers/go/safedep/messages/package/v1"
)
// SessionData carries aggregate session statistics for session-complete events.
type SessionData struct {
PackageManager string
FlowType FlowType
Outcome Outcome
TotalAnalyzed uint32
AllowedCount uint32
BlockedCount uint32
ConfirmedCount uint32
TrustedSkipped uint32
InsecureBypassed uint32
Duration time.Duration
SandboxEnabled bool
ParanoidMode bool
TransitiveEnabled bool
}
// FlowType identifies how PMG intercepted the package installation.
type FlowType string
const (
FlowTypeGuard FlowType = "guard"
FlowTypeProxy FlowType = "proxy"
)
// Outcome describes the final result of a PMG invocation.
type Outcome string
const (
OutcomeSuccess Outcome = "success"
OutcomeBlocked Outcome = "blocked"
OutcomeUserCancelled Outcome = "user_cancelled"
OutcomeDryRun Outcome = "dry_run"
OutcomeError Outcome = "error"
OutcomeInsecureBypass Outcome = "insecure_bypass"
)
type EventType string
const (
EventTypeMalwareBlocked EventType = "malware_blocked"
EventTypeMalwareConfirmed EventType = "malware_confirmed"
EventTypeInstallAllowed EventType = "install_allowed"
EventTypeInstallTrustedAllowed EventType = "install_trusted_allowed"
EventTypeInstallStarted EventType = "install_started"
EventTypeDependencyResolved EventType = "dependency_resolved"
EventTypeInstallInsecureBypass EventType = "install_insecure_bypass"
EventTypeProxyHostObserved EventType = "proxy_host_observed"
EventTypeSandboxOverride EventType = "sandbox_override"
EventTypeError EventType = "error"
EventTypeSessionComplete EventType = "session_complete"
)
// AuditEvent is the canonical audit event for PMG. It carries all data any
// sink might need. Fields are zero-valued when not applicable to the event type.
type AuditEvent struct {
Type EventType
Timestamp time.Time
Message string
// Typed package version — populated for package-level events.
PackageVersion *packagev1.PackageVersion
// Analysis context
AnalysisID string
IsMalware bool
IsVerified bool
// Freeform details for backward-compatible eventlog output.
Details map[string]interface{}
// Install context
PackageManager string
Args []string
PackageCount int
// Sandbox context
ProfileName string
Overrides []map[string]string
// Proxy context
Hostname string
Method string
Reason string
// Error context
Error error
// Session summary data — populated only for EventTypeSessionComplete
SessionData *SessionData
}