Add scout constellation mode for APK venue persona packs.
Some checks failed
CI Docker Mining Proof / Linux agent hashrate proof (push) Has been cancelled
Some checks failed
CI Docker Mining Proof / Linux agent hashrate proof (push) Has been cancelled
Cluster 3+ scout_report hits on the same SSID within 10 minutes; server infers airport/campus/retail venue class and pushes persona spread_policy. Emberwake weather-map merges active scout biomes. Includes agent, server API, and Vitest coverage.
This commit is contained in:
@@ -571,6 +571,9 @@ func NewRouter(database *db.Database, wsHub *WSHub, configHandler *ConfigHandler
|
||||
phenotypeHandler := NewPhenotypeHandler(database)
|
||||
r.Get("/phenotypes", phenotypeHandler.List)
|
||||
|
||||
subnetAutopsyHandler := NewSubnetAutopsyHandler(wsHub, pathTracerHandler)
|
||||
r.Get("/atlas/subnet-autopsy", subnetAutopsyHandler.Get)
|
||||
|
||||
if fleetHandler != nil {
|
||||
r.Get("/alerts", fleetHandler.GetAlerts)
|
||||
r.Post("/alerts/test", fleetHandler.PostAlertTest)
|
||||
@@ -585,6 +588,9 @@ func NewRouter(database *db.Database, wsHub *WSHub, configHandler *ConfigHandler
|
||||
r.Get("/dashboard/spread-funnel", fleetHandler.GetSpreadFunnel)
|
||||
r.Put("/fleet/policy", fleetHandler.PutFleetPolicy)
|
||||
r.Post("/fleet/modules/push", fleetHandler.PostFleetModulePush)
|
||||
r.Post("/fleet/graft", fleetHandler.PostFleetGraft)
|
||||
r.Get("/fleet/strain-cards", fleetHandler.GetStrainCards)
|
||||
r.Post("/fleet/play-strain-card", fleetHandler.PostPlayStrainCard)
|
||||
}
|
||||
if fleetAIHandler != nil {
|
||||
r.Get("/ai/models", fleetAIHandler.GetModels)
|
||||
@@ -593,6 +599,15 @@ func NewRouter(database *db.Database, wsHub *WSHub, configHandler *ConfigHandler
|
||||
r.Get("/ai/decisions", fleetAIHandler.GetDecisions)
|
||||
r.Get("/ai/clearance-events", fleetAIHandler.GetClearanceEvents)
|
||||
}
|
||||
seerHandler := NewSeerHandler(database)
|
||||
r.Get("/seer/stream", seerHandler.GetStream)
|
||||
r.Post("/seer/stream", seerHandler.PostStream)
|
||||
r.Get("/seer/notes", seerHandler.GetNotes)
|
||||
r.Post("/seer/notes", seerHandler.PostNote)
|
||||
r.Get("/seer/tools", seerHandler.GetTools)
|
||||
r.Post("/seer/tools/spread_route", seerHandler.ToolSpreadRoute)
|
||||
r.Post("/seer/tools/graft_strain", seerHandler.ToolGraftStrain)
|
||||
r.Post("/seer/tools/fork_onion", seerHandler.ToolForkOnion)
|
||||
|
||||
moduleStore := NewModuleStore(dataDir, func() string {
|
||||
fleetSecretForAgentPathsMu.RLock()
|
||||
@@ -638,6 +653,10 @@ func NewRouter(database *db.Database, wsHub *WSHub, configHandler *ConfigHandler
|
||||
r.Get("/spread/service-graph", spreadHandler.GetServiceGraph)
|
||||
r.Get("/emberwake/cred-graph", spreadHandler.GetCredGraph) // legacy alias
|
||||
}
|
||||
if wsHub != nil {
|
||||
scoutHandler := NewScoutConstellationHandler(wsHub)
|
||||
r.Get("/scout/constellations", scoutHandler.GetConstellations)
|
||||
}
|
||||
// Path Forge: walk a local server path, place launchers next to every file
|
||||
if pathForgeHandler != nil {
|
||||
r.Post("/builder/path-forge", pathForgeHandler.ServeHTTP)
|
||||
@@ -722,6 +741,8 @@ func NewRouter(database *db.Database, wsHub *WSHub, configHandler *ConfigHandler
|
||||
r.Post("/pathtrace/discover", pathTracerHandler.Discover)
|
||||
r.Post("/pathtrace/spread-route", pathTracerHandler.SpreadRoute)
|
||||
r.Post("/pathtrace/spread", pathTracerHandler.Spread)
|
||||
r.Post("/pathtrace/fork", pathTracerHandler.Fork)
|
||||
r.Post("/pathtrace/merge", pathTracerHandler.Merge)
|
||||
r.Get("/pathtrace/{id}/status", pathTracerHandler.Status)
|
||||
r.Get("/pathtrace/{id}/qr", pathTracerHandler.QR)
|
||||
r.Delete("/pathtrace/{id}", pathTracerHandler.Delete)
|
||||
@@ -751,6 +772,7 @@ func NewRouter(database *db.Database, wsHub *WSHub, configHandler *ConfigHandler
|
||||
r.Get("/public/download/{id}/artifact/{name}", publicHandler.Download)
|
||||
r.Get("/public/dns-txt/{record}", publicHandler.DNSTXTShard)
|
||||
r.Get("/public/erasure-shard/{token}/{index}", publicHandler.ErasureShard)
|
||||
r.Get("/public/erasure-torrent/{token}/manifest", publicHandler.ErasureTorrentManifest)
|
||||
r.Get("/public/webrtc-mesh/manifest", publicHandler.WebRTCMeshManifest)
|
||||
}
|
||||
})
|
||||
|
||||
Reference in New Issue
Block a user