@hivemagnus/magnus-server 1.1.12 → 2.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.env.example +5 -0
- package/README.md +4 -0
- package/agent-version.json +1 -1
- package/dist/cli/env-catalog.js +3 -0
- package/dist/config/env.js +4 -5
- package/dist/config/features.js +1 -1
- package/dist/db/generated/prisma/internal/class.js +4 -4
- package/dist/db/generated/prisma/internal/prismaNamespace.js +12 -1
- package/dist/db/generated/prisma/internal/prismaNamespaceBrowser.js +12 -1
- package/dist/db/generated/prisma/models/CindertraceResponse.js +2 -0
- package/dist/index.js +1 -16
- package/dist/openapi/spec.js +7 -2
- package/dist/queue/workers.js +0 -65
- package/dist/routes/cindertrace-response.js +183 -0
- package/dist/routes/heartbeat.js +1 -6
- package/dist/routes/security-fusion.js +15 -600
- package/dist/sdk/node-api-client.js +12 -0
- package/dist/security/cindertrace-response.js +14 -0
- package/dist/security/native-completion-registry.js +12 -0
- package/dist/server.js +3 -14
- package/dist/services/command-resource-leases.js +2 -4
- package/dist/services/security-export.js +4 -6
- package/package.json +3 -3
- package/prisma/migrations/20261103000000_cindertrace_response_bridge/migration-impact.json +128 -0
- package/prisma/migrations/20261103000000_cindertrace_response_bridge/migration.sql +6 -0
- package/prisma/schema.prisma +13 -0
- package/dist/services/security-fusion-actions.js +0 -22
- package/dist/services/security-fusion-evidence-integrity.js +0 -144
- package/dist/services/security-fusion-ingest.js +0 -101
- package/dist/services/security-fusion-outbox.js +0 -185
- package/dist/services/security-fusion-receipt-chain.js +0 -134
- package/dist/services/security-fusion-service.js +0 -751
- package/dist/services/security-fusion-verification.js +0 -50
package/.env.example
CHANGED
|
@@ -200,3 +200,8 @@ CORS_ORIGIN=https://magnus.example.com:3000
|
|
|
200
200
|
# MAGNUS_AGENT_UPGRADE_MAX_FAILURES=2
|
|
201
201
|
# The retired git-checkout self-update endpoints (source installs only).
|
|
202
202
|
# MAGNUS_LEGACY_GIT_SELF_UPDATE=false
|
|
203
|
+
|
|
204
|
+
# Optional Cindertrace response bridge. Configure a new dedicated secret.
|
|
205
|
+
# CINDERTRACE_RESPONSE_SECRET=
|
|
206
|
+
# CINDERTRACE_RESTART_ALLOWLIST=
|
|
207
|
+
# CINDERTRACE_PROTECTED_TARGET_IDS=
|
package/README.md
CHANGED
|
@@ -187,3 +187,7 @@ migrations are never edited.
|
|
|
187
187
|
## License
|
|
188
188
|
|
|
189
189
|
Apache-2.0. See [LICENSE](LICENSE).
|
|
190
|
+
|
|
191
|
+
## Cindertrace
|
|
192
|
+
|
|
193
|
+
Embedded Security Fusion is retired. See [migration and response configuration](../../docs/CINDERTRACE_MIGRATION.md). CINDERTRACE_RESPONSE_SECRET, CINDERTRACE_RESTART_ALLOWLIST, and CINDERTRACE_PROTECTED_TARGET_IDS configure the optional managed response adapter.
|
package/agent-version.json
CHANGED
package/dist/cli/env-catalog.js
CHANGED
|
@@ -60,6 +60,9 @@ export const ENV_CATALOG = [
|
|
|
60
60
|
{ name: 'MAGNUS_LESSONS_HIVEMEM_URL', group: 'hivemem', description: 'Optional HiveMem URL for operational lessons.' },
|
|
61
61
|
{ name: 'MAGNUS_LESSONS_HIVEMEM_TOKEN', group: 'hivemem', secret: true, description: 'Token for MAGNUS_LESSONS_HIVEMEM_URL.' },
|
|
62
62
|
// ── Security Fusion / external security console ──
|
|
63
|
+
{ name: 'CINDERTRACE_RESPONSE_SECRET', group: 'security', description: 'Dedicated HMAC credential for the optional Cindertrace managed response bridge.' },
|
|
64
|
+
{ name: 'CINDERTRACE_RESTART_ALLOWLIST', group: 'security', description: 'Comma-separated allowlisted response service names; empty by default.' },
|
|
65
|
+
{ name: 'CINDERTRACE_PROTECTED_TARGET_IDS', group: 'security', description: 'Comma-separated node IDs that Cindertrace must never isolate.' },
|
|
63
66
|
{ name: 'SECURITY_FUSION_MODE', group: 'security', default: 'off', description: 'off (feature disabled), local (cases and evidence in this server) or remote (export to an external security console).' },
|
|
64
67
|
{ name: 'SECURITY_FUSION_RECEIPT_SIGNING_KEY', group: 'security', secret: true, requiredWhen: 'SECURITY_FUSION_MODE=local', description: 'Dedicated key that signs Security Fusion deletion receipts (min 32 chars).' },
|
|
65
68
|
{ name: 'SECURITY_FUSION_EVIDENCE_DIR', group: 'security', description: 'Private evidence directory (local mode).' },
|
package/dist/config/env.js
CHANGED
|
@@ -55,7 +55,10 @@ export const envSchema = z.object({
|
|
|
55
55
|
.regex(/^\s*[a-z0-9](?:[a-z0-9.-]{0,98}[a-z0-9])?\s*(?:,\s*[a-z0-9](?:[a-z0-9.-]{0,98}[a-z0-9])?\s*)*$/, 'must list domain prefixes made of a-z, 0-9, "." and "-", separated by commas')
|
|
56
56
|
.optional(),
|
|
57
57
|
// Security Fusion: off (default) | local (in-process) | remote (external security console).
|
|
58
|
-
SECURITY_FUSION_MODE: z.enum(['off', '
|
|
58
|
+
SECURITY_FUSION_MODE: z.enum(['off', 'remote'], { error: 'Embedded Security Fusion local mode is retired; export and import state into Cindertrace before selecting remote mode (docs/CINDERTRACE_MIGRATION.md)' }).default('off'),
|
|
59
|
+
CINDERTRACE_RESPONSE_SECRET: z.string().min(32).optional(),
|
|
60
|
+
CINDERTRACE_RESTART_ALLOWLIST: z.string().optional(),
|
|
61
|
+
CINDERTRACE_PROTECTED_TARGET_IDS: z.string().optional(),
|
|
59
62
|
SECURITY_FUSION_API_URL: z.string().url().optional(),
|
|
60
63
|
MAGNUS_SECURITY_CONSOLE_URL: z.string().url().optional(),
|
|
61
64
|
SECURITY_APPROVAL_BRIDGE_TOKEN: z.string().min(32).optional(),
|
|
@@ -246,10 +249,6 @@ export const envSchema = z.object({
|
|
|
246
249
|
message: 'AGENT_DISCOVERY_SECRET is required when ENABLE_AGENT_DISCOVERY=true',
|
|
247
250
|
});
|
|
248
251
|
}
|
|
249
|
-
if (env.SECURITY_FUSION_MODE === 'local' && !env.SECURITY_FUSION_RECEIPT_SIGNING_KEY) {
|
|
250
|
-
ctx.addIssue({ code: z.ZodIssueCode.custom, path: ['SECURITY_FUSION_RECEIPT_SIGNING_KEY'],
|
|
251
|
-
message: 'SECURITY_FUSION_RECEIPT_SIGNING_KEY is required when SECURITY_FUSION_MODE=local' });
|
|
252
|
-
}
|
|
253
252
|
if (env.MAGNUS_PLUGIN_API_ENABLED) {
|
|
254
253
|
if (!env.MAGNUS_PLUGIN_READ_TOKEN_DIGESTS_JSON)
|
|
255
254
|
ctx.addIssue({ code: z.ZodIssueCode.custom, path: ['MAGNUS_PLUGIN_READ_TOKEN_DIGESTS_JSON'],
|
package/dist/config/features.js
CHANGED
|
@@ -5,7 +5,7 @@ export function featureFlags(env = process.env) {
|
|
|
5
5
|
iam: Boolean(env['IAM_CORE_URL']),
|
|
6
6
|
router: Boolean(env['MAGNUS_ROUTER_URL'] || env['HIVE_ROUTER_URL']),
|
|
7
7
|
hivemem: Boolean(env['HIVEMEM_URL']),
|
|
8
|
-
securityFusion: mode === '
|
|
8
|
+
securityFusion: mode === 'remote' ? mode : 'off',
|
|
9
9
|
securityConsoleUrl: env['MAGNUS_SECURITY_CONSOLE_URL'] || null,
|
|
10
10
|
pluginApi: truthy(env['MAGNUS_PLUGIN_API_ENABLED']),
|
|
11
11
|
hermesRegistry: truthy(env['MAGNUS_HERMES_REGISTRY_ENABLED']),
|