Initial commit: Nexus Mission Control Platform

- ASP.NET Core 10 Backend (JWT Auth, Agent config API)
- Vue 3 Frontend (Dashboard, Team, Agents, Config Editor)
- PostgreSQL Database
- Docker Compose setup
- Mission Control Dashboard redesign
This commit is contained in:
Bao
2026-06-09 16:31:42 +02:00
commit eeb6174de0
248 changed files with 19706 additions and 0 deletions
+337
View File
@@ -0,0 +1,337 @@
{
"runtimeTarget": {
"name": ".NETCoreApp,Version=v10.0",
"signature": ""
},
"compilationOptions": {},
"targets": {
".NETCoreApp,Version=v10.0": {
"Nexus.Api/1.0.0": {
"dependencies": {
"Microsoft.AspNetCore.Authentication.JwtBearer": "10.0.8",
"Npgsql.EntityFrameworkCore.PostgreSQL": "10.0.2",
"Swashbuckle.AspNetCore": "10.2.1"
},
"runtime": {
"Nexus.Api.dll": {}
}
},
"Microsoft.AspNetCore.Authentication.JwtBearer/10.0.8": {
"dependencies": {
"Microsoft.IdentityModel.Protocols.OpenIdConnect": "8.0.1"
},
"runtime": {
"lib/net10.0/Microsoft.AspNetCore.Authentication.JwtBearer.dll": {
"assemblyVersion": "10.0.8.0",
"fileVersion": "10.0.826.23019"
}
}
},
"Microsoft.EntityFrameworkCore/10.0.8": {
"dependencies": {
"Microsoft.EntityFrameworkCore.Abstractions": "10.0.8"
},
"runtime": {
"lib/net10.0/Microsoft.EntityFrameworkCore.dll": {
"assemblyVersion": "10.0.8.0",
"fileVersion": "10.0.826.23019"
}
}
},
"Microsoft.EntityFrameworkCore.Abstractions/10.0.8": {
"runtime": {
"lib/net10.0/Microsoft.EntityFrameworkCore.Abstractions.dll": {
"assemblyVersion": "10.0.8.0",
"fileVersion": "10.0.826.23019"
}
}
},
"Microsoft.EntityFrameworkCore.Relational/10.0.8": {
"dependencies": {
"Microsoft.EntityFrameworkCore": "10.0.8"
},
"runtime": {
"lib/net10.0/Microsoft.EntityFrameworkCore.Relational.dll": {
"assemblyVersion": "10.0.8.0",
"fileVersion": "10.0.826.23019"
}
}
},
"Microsoft.IdentityModel.Abstractions/8.0.1": {
"runtime": {
"lib/net9.0/Microsoft.IdentityModel.Abstractions.dll": {
"assemblyVersion": "8.0.1.0",
"fileVersion": "8.0.1.50722"
}
}
},
"Microsoft.IdentityModel.JsonWebTokens/8.0.1": {
"dependencies": {
"Microsoft.IdentityModel.Tokens": "8.0.1"
},
"runtime": {
"lib/net9.0/Microsoft.IdentityModel.JsonWebTokens.dll": {
"assemblyVersion": "8.0.1.0",
"fileVersion": "8.0.1.50722"
}
}
},
"Microsoft.IdentityModel.Logging/8.0.1": {
"dependencies": {
"Microsoft.IdentityModel.Abstractions": "8.0.1"
},
"runtime": {
"lib/net9.0/Microsoft.IdentityModel.Logging.dll": {
"assemblyVersion": "8.0.1.0",
"fileVersion": "8.0.1.50722"
}
}
},
"Microsoft.IdentityModel.Protocols/8.0.1": {
"dependencies": {
"Microsoft.IdentityModel.Tokens": "8.0.1"
},
"runtime": {
"lib/net9.0/Microsoft.IdentityModel.Protocols.dll": {
"assemblyVersion": "8.0.1.0",
"fileVersion": "8.0.1.50722"
}
}
},
"Microsoft.IdentityModel.Protocols.OpenIdConnect/8.0.1": {
"dependencies": {
"Microsoft.IdentityModel.Protocols": "8.0.1",
"System.IdentityModel.Tokens.Jwt": "8.0.1"
},
"runtime": {
"lib/net9.0/Microsoft.IdentityModel.Protocols.OpenIdConnect.dll": {
"assemblyVersion": "8.0.1.0",
"fileVersion": "8.0.1.50722"
}
}
},
"Microsoft.IdentityModel.Tokens/8.0.1": {
"dependencies": {
"Microsoft.IdentityModel.Logging": "8.0.1"
},
"runtime": {
"lib/net9.0/Microsoft.IdentityModel.Tokens.dll": {
"assemblyVersion": "8.0.1.0",
"fileVersion": "8.0.1.50722"
}
}
},
"Microsoft.OpenApi/2.7.5": {
"runtime": {
"lib/net8.0/Microsoft.OpenApi.dll": {
"assemblyVersion": "2.7.5.0",
"fileVersion": "2.7.5.0"
}
}
},
"Npgsql/10.0.3": {
"runtime": {
"lib/net10.0/Npgsql.dll": {
"assemblyVersion": "10.0.3.0",
"fileVersion": "10.0.3.0"
}
}
},
"Npgsql.EntityFrameworkCore.PostgreSQL/10.0.2": {
"dependencies": {
"Microsoft.EntityFrameworkCore": "10.0.8",
"Microsoft.EntityFrameworkCore.Relational": "10.0.8",
"Npgsql": "10.0.3"
},
"runtime": {
"lib/net10.0/Npgsql.EntityFrameworkCore.PostgreSQL.dll": {
"assemblyVersion": "10.0.2.0",
"fileVersion": "10.0.2.0"
}
}
},
"Swashbuckle.AspNetCore/10.2.1": {
"dependencies": {
"Swashbuckle.AspNetCore.Swagger": "10.2.1",
"Swashbuckle.AspNetCore.SwaggerGen": "10.2.1",
"Swashbuckle.AspNetCore.SwaggerUI": "10.2.1"
}
},
"Swashbuckle.AspNetCore.Swagger/10.2.1": {
"dependencies": {
"Microsoft.OpenApi": "2.7.5"
},
"runtime": {
"lib/net10.0/Swashbuckle.AspNetCore.Swagger.dll": {
"assemblyVersion": "10.2.1.0",
"fileVersion": "10.2.1.2634"
}
}
},
"Swashbuckle.AspNetCore.SwaggerGen/10.2.1": {
"dependencies": {
"Swashbuckle.AspNetCore.Swagger": "10.2.1"
},
"runtime": {
"lib/net10.0/Swashbuckle.AspNetCore.SwaggerGen.dll": {
"assemblyVersion": "10.2.1.0",
"fileVersion": "10.2.1.2634"
}
}
},
"Swashbuckle.AspNetCore.SwaggerUI/10.2.1": {
"runtime": {
"lib/net10.0/Swashbuckle.AspNetCore.SwaggerUI.dll": {
"assemblyVersion": "10.2.1.0",
"fileVersion": "10.2.1.2634"
}
}
},
"System.IdentityModel.Tokens.Jwt/8.0.1": {
"dependencies": {
"Microsoft.IdentityModel.JsonWebTokens": "8.0.1",
"Microsoft.IdentityModel.Tokens": "8.0.1"
},
"runtime": {
"lib/net9.0/System.IdentityModel.Tokens.Jwt.dll": {
"assemblyVersion": "8.0.1.0",
"fileVersion": "8.0.1.50722"
}
}
}
}
},
"libraries": {
"Nexus.Api/1.0.0": {
"type": "project",
"serviceable": false,
"sha512": ""
},
"Microsoft.AspNetCore.Authentication.JwtBearer/10.0.8": {
"type": "package",
"serviceable": true,
"sha512": "sha512-oGnE+X/SN6jdqao9WOkOIfyZ5+a0AtluJWy1Mxndq+kcWG6sx5k6l6tucu8/wJ7o9fHfLgVCzm/c4v/KVgVk6w==",
"path": "microsoft.aspnetcore.authentication.jwtbearer/10.0.8",
"hashPath": "microsoft.aspnetcore.authentication.jwtbearer.10.0.8.nupkg.sha512"
},
"Microsoft.EntityFrameworkCore/10.0.8": {
"type": "package",
"serviceable": true,
"sha512": "sha512-EJx+fIBMgBlgD+ublKCn+GTOJkw3UqV7xOjYWBRVdUYyIm8UfvAsmSOPFiIInsWTHyMEYUJ9gCJY1jwX+6UB7w==",
"path": "microsoft.entityframeworkcore/10.0.8",
"hashPath": "microsoft.entityframeworkcore.10.0.8.nupkg.sha512"
},
"Microsoft.EntityFrameworkCore.Abstractions/10.0.8": {
"type": "package",
"serviceable": true,
"sha512": "sha512-jbKDXWPZQhuPHygMnwzNOqxBADVcpRVytcKYZsA++QqhPkpF93Ta8o5mbJQGrARSjlkr9WtOaADV97EDMOZ7DA==",
"path": "microsoft.entityframeworkcore.abstractions/10.0.8",
"hashPath": "microsoft.entityframeworkcore.abstractions.10.0.8.nupkg.sha512"
},
"Microsoft.EntityFrameworkCore.Relational/10.0.8": {
"type": "package",
"serviceable": true,
"sha512": "sha512-UU3diAD2wwZveye2rnrwaF/wvJ9tm5iL2fuY9TTap6/iGQK1OO29M1BzXZRlRPVH/dByt5w/pISBSFtyR7hTqw==",
"path": "microsoft.entityframeworkcore.relational/10.0.8",
"hashPath": "microsoft.entityframeworkcore.relational.10.0.8.nupkg.sha512"
},
"Microsoft.IdentityModel.Abstractions/8.0.1": {
"type": "package",
"serviceable": true,
"sha512": "sha512-OtlIWcyX01olfdevPKZdIPfBEvbcioDyBiE/Z2lHsopsMD7twcKtlN9kMevHmI5IIPhFpfwCIiR6qHQz1WHUIw==",
"path": "microsoft.identitymodel.abstractions/8.0.1",
"hashPath": "microsoft.identitymodel.abstractions.8.0.1.nupkg.sha512"
},
"Microsoft.IdentityModel.JsonWebTokens/8.0.1": {
"type": "package",
"serviceable": true,
"sha512": "sha512-s6++gF9x0rQApQzOBbSyp4jUaAlwm+DroKfL8gdOHxs83k8SJfUXhuc46rDB3rNXBQ1MVRxqKUrqFhO/M0E97g==",
"path": "microsoft.identitymodel.jsonwebtokens/8.0.1",
"hashPath": "microsoft.identitymodel.jsonwebtokens.8.0.1.nupkg.sha512"
},
"Microsoft.IdentityModel.Logging/8.0.1": {
"type": "package",
"serviceable": true,
"sha512": "sha512-UCPF2exZqBXe7v/6sGNiM6zCQOUXXQ9+v5VTb9gPB8ZSUPnX53BxlN78v2jsbIvK9Dq4GovQxo23x8JgWvm/Qg==",
"path": "microsoft.identitymodel.logging/8.0.1",
"hashPath": "microsoft.identitymodel.logging.8.0.1.nupkg.sha512"
},
"Microsoft.IdentityModel.Protocols/8.0.1": {
"type": "package",
"serviceable": true,
"sha512": "sha512-uA2vpKqU3I2mBBEaeJAWPTjT9v1TZrGWKdgK6G5qJd03CLx83kdiqO9cmiK8/n1erkHzFBwU/RphP83aAe3i3g==",
"path": "microsoft.identitymodel.protocols/8.0.1",
"hashPath": "microsoft.identitymodel.protocols.8.0.1.nupkg.sha512"
},
"Microsoft.IdentityModel.Protocols.OpenIdConnect/8.0.1": {
"type": "package",
"serviceable": true,
"sha512": "sha512-AQDbfpL+yzuuGhO/mQhKNsp44pm5Jv8/BI4KiFXR7beVGZoSH35zMV3PrmcfvSTsyI6qrcR898NzUauD6SRigg==",
"path": "microsoft.identitymodel.protocols.openidconnect/8.0.1",
"hashPath": "microsoft.identitymodel.protocols.openidconnect.8.0.1.nupkg.sha512"
},
"Microsoft.IdentityModel.Tokens/8.0.1": {
"type": "package",
"serviceable": true,
"sha512": "sha512-kDimB6Dkd3nkW2oZPDkMkVHfQt3IDqO5gL0oa8WVy3OP4uE8Ij+8TXnqg9TOd9ufjsY3IDiGz7pCUbnfL18tjg==",
"path": "microsoft.identitymodel.tokens/8.0.1",
"hashPath": "microsoft.identitymodel.tokens.8.0.1.nupkg.sha512"
},
"Microsoft.OpenApi/2.7.5": {
"type": "package",
"serviceable": true,
"sha512": "sha512-0FA67RSnRM4tcBKqiqVu/HPdZ9+QOKbmeRjxRUGTCjPU4C0bmUhd97Dso7Yild5P7nOV6GxJ2xrK0Kv/O9xp0w==",
"path": "microsoft.openapi/2.7.5",
"hashPath": "microsoft.openapi.2.7.5.nupkg.sha512"
},
"Npgsql/10.0.3": {
"type": "package",
"serviceable": true,
"sha512": "sha512-7nb5YzXuvWWJxB0J8DiyL3we+X4FOctZrt0fIBnucOIaIevFEEwGQVZKtiu9olXdlNAK1eNgqSral6r/jlhI4w==",
"path": "npgsql/10.0.3",
"hashPath": "npgsql.10.0.3.nupkg.sha512"
},
"Npgsql.EntityFrameworkCore.PostgreSQL/10.0.2": {
"type": "package",
"serviceable": true,
"sha512": "sha512-PsNYgPOSW41Xx19gin7y4EdZAPteWr9Cb01XkdObxOsPzi+mgBupBEN7J7+erXFsROPOILM7MlIoO9QzL8+LGQ==",
"path": "npgsql.entityframeworkcore.postgresql/10.0.2",
"hashPath": "npgsql.entityframeworkcore.postgresql.10.0.2.nupkg.sha512"
},
"Swashbuckle.AspNetCore/10.2.1": {
"type": "package",
"serviceable": true,
"sha512": "sha512-SDU6akgCV/H4jFMRfyJ0mgO5jWOuuAqekvEThXg8c/LjnfNz5Nkaz+RUpeTVJKWIRX4wDKC/6R3ogJ4AsRE32A==",
"path": "swashbuckle.aspnetcore/10.2.1",
"hashPath": "swashbuckle.aspnetcore.10.2.1.nupkg.sha512"
},
"Swashbuckle.AspNetCore.Swagger/10.2.1": {
"type": "package",
"serviceable": true,
"sha512": "sha512-ej4inPhiWCq+0utG8yaKhIhE8M3k3R/qRaGhpgDZB+O/s+o62/zRMO1Cn2CtQccsrqPE9PYnzCp6hQGYGpJOyQ==",
"path": "swashbuckle.aspnetcore.swagger/10.2.1",
"hashPath": "swashbuckle.aspnetcore.swagger.10.2.1.nupkg.sha512"
},
"Swashbuckle.AspNetCore.SwaggerGen/10.2.1": {
"type": "package",
"serviceable": true,
"sha512": "sha512-JYX6i/y0xEtQWH/hZyfcage1/ldwww83ueD/gBc34uSnMwyvRLUsOpYcxlliFFxFbZMrY6t+R9ENqolE7zTEOg==",
"path": "swashbuckle.aspnetcore.swaggergen/10.2.1",
"hashPath": "swashbuckle.aspnetcore.swaggergen.10.2.1.nupkg.sha512"
},
"Swashbuckle.AspNetCore.SwaggerUI/10.2.1": {
"type": "package",
"serviceable": true,
"sha512": "sha512-vzB8ZAGqXus3fdareJ9GHctaRP9ZL+wW9x8U7s1Y+BWprInFvSg6rpD9VhANNpwXA8fUHqu5Agjl/+hHG1BCQA==",
"path": "swashbuckle.aspnetcore.swaggerui/10.2.1",
"hashPath": "swashbuckle.aspnetcore.swaggerui.10.2.1.nupkg.sha512"
},
"System.IdentityModel.Tokens.Jwt/8.0.1": {
"type": "package",
"serviceable": true,
"sha512": "sha512-GJw3bYkWpOgvN3tJo5X4lYUeIFA2HD293FPUhKmp7qxS+g5ywAb34Dnd3cDAFLkcMohy5XTpoaZ4uAHuw0uSPQ==",
"path": "system.identitymodel.tokens.jwt/8.0.1",
"hashPath": "system.identitymodel.tokens.jwt.8.0.1.nupkg.sha512"
}
}
}
@@ -0,0 +1,21 @@
{
"runtimeOptions": {
"tfm": "net10.0",
"frameworks": [
{
"name": "Microsoft.NETCore.App",
"version": "10.0.0"
},
{
"name": "Microsoft.AspNetCore.App",
"version": "10.0.0"
}
],
"configProperties": {
"System.GC.Server": true,
"System.Reflection.Metadata.MetadataUpdater.IsSupported": false,
"System.Reflection.NullabilityInfoContext.IsSupported": true,
"System.Runtime.Serialization.EnableUnsafeBinaryFormatterSerialization": false
}
}
}
@@ -0,0 +1 @@
{"Version":1,"ManifestType":"Publish","Endpoints":[]}
+25
View File
@@ -0,0 +1,25 @@
{
"ConnectionStrings": {
"Nexus": "Host=localhost;Port=5432;Database=nexus;Username=nexus;Password=nexus"
},
"Integrations": {
"OpenClaw": {
"BaseUrl": "http://127.0.0.1:18789",
"Token": "",
"Password": ""
},
"Ollama": {
"BaseUrl": "http://127.0.0.1:11434"
},
"Nvidia": {
"ApiKey": ""
}
},
"Jwt": {
"Issuer": "nexus",
"Audience": "nexus-web",
"AccessTokenExpirationMinutes": 15,
"RefreshTokenExpirationDays": 7
},
"AllowedHosts": "*"
}
+11
View File
@@ -0,0 +1,11 @@
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<location path="." inheritInChildApplications="false">
<system.webServer>
<handlers>
<add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModuleV2" resourceType="Unspecified" />
</handlers>
<aspNetCore processPath="dotnet" arguments=".\Nexus.Api.dll" stdoutLogEnabled="false" stdoutLogFile=".\logs\stdout" hostingModel="inprocess" />
</system.webServer>
</location>
</configuration>