shieldcortex 3.0.3 → 3.1.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.
Files changed (135) hide show
  1. package/README.md +5 -2
  2. package/dashboard/.next/standalone/dashboard/.next/BUILD_ID +1 -1
  3. package/dashboard/.next/standalone/dashboard/.next/build-manifest.json +2 -2
  4. package/dashboard/.next/standalone/dashboard/.next/prerender-manifest.json +3 -3
  5. package/dashboard/.next/standalone/dashboard/.next/required-server-files.json +4 -4
  6. package/dashboard/.next/standalone/dashboard/.next/server/app/_global-error.html +2 -2
  7. package/dashboard/.next/standalone/dashboard/.next/server/app/_global-error.rsc +1 -1
  8. package/dashboard/.next/standalone/dashboard/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
  9. package/dashboard/.next/standalone/dashboard/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  10. package/dashboard/.next/standalone/dashboard/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  11. package/dashboard/.next/standalone/dashboard/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  12. package/dashboard/.next/standalone/dashboard/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  13. package/dashboard/.next/standalone/dashboard/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  14. package/dashboard/.next/standalone/dashboard/.next/server/app/_not-found.html +1 -1
  15. package/dashboard/.next/standalone/dashboard/.next/server/app/_not-found.rsc +2 -2
  16. package/dashboard/.next/standalone/dashboard/.next/server/app/_not-found.segments/_full.segment.rsc +2 -2
  17. package/dashboard/.next/standalone/dashboard/.next/server/app/_not-found.segments/_head.segment.rsc +1 -1
  18. package/dashboard/.next/standalone/dashboard/.next/server/app/_not-found.segments/_index.segment.rsc +2 -2
  19. package/dashboard/.next/standalone/dashboard/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
  20. package/dashboard/.next/standalone/dashboard/.next/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
  21. package/dashboard/.next/standalone/dashboard/.next/server/app/_not-found.segments/_tree.segment.rsc +2 -2
  22. package/dashboard/.next/standalone/dashboard/.next/server/app/index.html +1 -1
  23. package/dashboard/.next/standalone/dashboard/.next/server/app/index.rsc +3 -3
  24. package/dashboard/.next/standalone/dashboard/.next/server/app/index.segments/__PAGE__.segment.rsc +2 -2
  25. package/dashboard/.next/standalone/dashboard/.next/server/app/index.segments/_full.segment.rsc +3 -3
  26. package/dashboard/.next/standalone/dashboard/.next/server/app/index.segments/_head.segment.rsc +1 -1
  27. package/dashboard/.next/standalone/dashboard/.next/server/app/index.segments/_index.segment.rsc +2 -2
  28. package/dashboard/.next/standalone/dashboard/.next/server/app/index.segments/_tree.segment.rsc +2 -2
  29. package/dashboard/.next/standalone/dashboard/.next/server/app/page/react-loadable-manifest.json +1 -1
  30. package/dashboard/.next/standalone/dashboard/.next/server/app/page_client-reference-manifest.js +1 -1
  31. package/dashboard/.next/standalone/dashboard/.next/server/chunks/ssr/dashboard_3051539d._.js +1 -1
  32. package/dashboard/.next/standalone/dashboard/.next/server/pages/404.html +1 -1
  33. package/dashboard/.next/standalone/dashboard/.next/server/pages/500.html +2 -2
  34. package/dashboard/.next/standalone/dashboard/.next/server/server-reference-manifest.js +1 -1
  35. package/dashboard/.next/standalone/dashboard/.next/server/server-reference-manifest.json +1 -1
  36. package/dashboard/.next/standalone/dashboard/.next/static/chunks/0a69eb25d08447ee.js +1 -0
  37. package/dashboard/.next/standalone/dashboard/.next/static/chunks/9232a2d99b47b21f.js +3 -0
  38. package/dashboard/.next/standalone/dashboard/.next/static/chunks/97537d3db46c8467.css +3 -0
  39. package/dashboard/.next/standalone/dashboard/.next/static/chunks/aa6e9b8a52353969.js +9 -0
  40. package/dashboard/.next/standalone/dashboard/node_modules/@img/sharp-darwin-arm64/lib/sharp-darwin-arm64.node +0 -0
  41. package/dashboard/.next/standalone/{node_modules/@img/sharp-linux-x64 → dashboard/node_modules/@img/sharp-darwin-arm64}/package.json +7 -13
  42. package/dashboard/.next/standalone/dashboard/node_modules/@img/{sharp-libvips-linux-x64 → sharp-libvips-darwin-arm64}/README.md +2 -2
  43. package/dashboard/.next/standalone/dashboard/node_modules/@img/{sharp-libvips-linux-x64 → sharp-libvips-darwin-arm64}/lib/glib-2.0/include/glibconfig.h +8 -9
  44. package/dashboard/.next/standalone/dashboard/node_modules/@img/{sharp-libvips-linux-x64/lib/libvips-cpp.so.8.17.3 → sharp-libvips-darwin-arm64/lib/libvips-cpp.8.17.3.dylib} +0 -0
  45. package/dashboard/.next/standalone/dashboard/node_modules/@img/{sharp-libvips-linux-x64 → sharp-libvips-darwin-arm64}/package.json +5 -11
  46. package/dashboard/.next/standalone/dashboard/server.js +1 -1
  47. package/dashboard/.next/standalone/{dashboard/node_modules/@img/sharp-linux-x64 → node_modules/@img/sharp-darwin-arm64}/package.json +7 -13
  48. package/dashboard/.next/standalone/node_modules/@img/{sharp-libvips-linux-x64 → sharp-libvips-darwin-arm64}/package.json +5 -11
  49. package/dist/api/routes/admin.d.ts +12 -0
  50. package/dist/api/routes/admin.js +502 -0
  51. package/dist/api/routes/graph.d.ts +4 -0
  52. package/dist/api/routes/graph.js +333 -0
  53. package/dist/api/routes/incidents.d.ts +2 -0
  54. package/dist/api/routes/incidents.js +32 -0
  55. package/dist/api/routes/memories.d.ts +4 -0
  56. package/dist/api/routes/memories.js +659 -0
  57. package/dist/api/routes/recall.d.ts +4 -0
  58. package/dist/api/routes/recall.js +36 -0
  59. package/dist/api/routes/system.d.ts +9 -0
  60. package/dist/api/routes/system.js +266 -0
  61. package/dist/api/visualization-server.js +31 -1913
  62. package/dist/cloud/cli.d.ts +1 -0
  63. package/dist/cloud/cli.js +40 -0
  64. package/dist/cloud/config.d.ts +10 -0
  65. package/dist/cloud/config.js +54 -0
  66. package/dist/cloud/graph-sync.d.ts +45 -0
  67. package/dist/cloud/graph-sync.js +257 -0
  68. package/dist/cloud/memory-sync.d.ts +36 -0
  69. package/dist/cloud/memory-sync.js +183 -0
  70. package/dist/cloud/sync-queue.d.ts +24 -0
  71. package/dist/cloud/sync-queue.js +126 -7
  72. package/dist/database/init.js +24 -0
  73. package/dist/graph/backfill.js +3 -5
  74. package/dist/graph/resolve.d.ts +10 -0
  75. package/dist/graph/resolve.js +63 -1
  76. package/dist/index.d.ts +2 -0
  77. package/dist/index.js +61 -4
  78. package/dist/memory/search.d.ts +37 -0
  79. package/dist/memory/search.js +143 -0
  80. package/dist/memory/store.js +47 -171
  81. package/dist/memory/types.d.ts +2 -0
  82. package/dist/service/install.d.ts +1 -0
  83. package/dist/service/install.js +43 -1
  84. package/dist/tools/recall.d.ts +1 -1
  85. package/hooks/openclaw/cortex-memory/handler.ts +5 -141
  86. package/hooks/openclaw/cortex-memory/runtime.mjs +129 -0
  87. package/package.json +8 -4
  88. package/plugins/openclaw/dist/index.js +5 -39
  89. package/scripts/run-jest.mjs +25 -1
  90. package/dashboard/.next/standalone/dashboard/.next/static/chunks/be6970da20a17c0b.js +0 -9
  91. package/dashboard/.next/standalone/dashboard/.next/static/chunks/e63d2228780629dd.css +0 -3
  92. package/dashboard/.next/standalone/dashboard/.next/static/chunks/f69fd1c5e71fbbfd.js +0 -1
  93. package/dashboard/.next/standalone/dashboard/.next/static/chunks/fa5217550a8ab9a6.js +0 -3
  94. package/dashboard/.next/standalone/dashboard/node_modules/@img/sharp-libvips-linuxmusl-x64/README.md +0 -46
  95. package/dashboard/.next/standalone/dashboard/node_modules/@img/sharp-libvips-linuxmusl-x64/lib/glib-2.0/include/glibconfig.h +0 -221
  96. package/dashboard/.next/standalone/dashboard/node_modules/@img/sharp-libvips-linuxmusl-x64/lib/index.js +0 -1
  97. package/dashboard/.next/standalone/dashboard/node_modules/@img/sharp-libvips-linuxmusl-x64/lib/libvips-cpp.so.8.17.3 +0 -0
  98. package/dashboard/.next/standalone/dashboard/node_modules/@img/sharp-libvips-linuxmusl-x64/package.json +0 -42
  99. package/dashboard/.next/standalone/dashboard/node_modules/@img/sharp-libvips-linuxmusl-x64/versions.json +0 -30
  100. package/dashboard/.next/standalone/dashboard/node_modules/@img/sharp-linux-x64/lib/sharp-linux-x64.node +0 -0
  101. package/dashboard/.next/standalone/dashboard/node_modules/@img/sharp-linuxmusl-x64/lib/sharp-linuxmusl-x64.node +0 -0
  102. package/dashboard/.next/standalone/dashboard/node_modules/@img/sharp-linuxmusl-x64/package.json +0 -46
  103. package/dashboard/.next/standalone/dashboard/node_modules/typescript/lib/_tsc.js +0 -133818
  104. package/dashboard/.next/standalone/dashboard/node_modules/typescript/lib/_tsserver.js +0 -659
  105. package/dashboard/.next/standalone/dashboard/node_modules/typescript/lib/_typingsInstaller.js +0 -222
  106. package/dashboard/.next/standalone/dashboard/node_modules/typescript/lib/cs/diagnosticMessages.generated.json +0 -2122
  107. package/dashboard/.next/standalone/dashboard/node_modules/typescript/lib/de/diagnosticMessages.generated.json +0 -2122
  108. package/dashboard/.next/standalone/dashboard/node_modules/typescript/lib/es/diagnosticMessages.generated.json +0 -2122
  109. package/dashboard/.next/standalone/dashboard/node_modules/typescript/lib/fr/diagnosticMessages.generated.json +0 -2122
  110. package/dashboard/.next/standalone/dashboard/node_modules/typescript/lib/it/diagnosticMessages.generated.json +0 -2122
  111. package/dashboard/.next/standalone/dashboard/node_modules/typescript/lib/ja/diagnosticMessages.generated.json +0 -2122
  112. package/dashboard/.next/standalone/dashboard/node_modules/typescript/lib/ko/diagnosticMessages.generated.json +0 -2122
  113. package/dashboard/.next/standalone/dashboard/node_modules/typescript/lib/pl/diagnosticMessages.generated.json +0 -2122
  114. package/dashboard/.next/standalone/dashboard/node_modules/typescript/lib/pt-br/diagnosticMessages.generated.json +0 -2122
  115. package/dashboard/.next/standalone/dashboard/node_modules/typescript/lib/ru/diagnosticMessages.generated.json +0 -2122
  116. package/dashboard/.next/standalone/dashboard/node_modules/typescript/lib/tr/diagnosticMessages.generated.json +0 -2122
  117. package/dashboard/.next/standalone/dashboard/node_modules/typescript/lib/tsc.js +0 -8
  118. package/dashboard/.next/standalone/dashboard/node_modules/typescript/lib/tsserver.js +0 -8
  119. package/dashboard/.next/standalone/dashboard/node_modules/typescript/lib/tsserverlibrary.js +0 -21
  120. package/dashboard/.next/standalone/dashboard/node_modules/typescript/lib/typesMap.json +0 -497
  121. package/dashboard/.next/standalone/dashboard/node_modules/typescript/lib/typescript.js +0 -200276
  122. package/dashboard/.next/standalone/dashboard/node_modules/typescript/lib/typingsInstaller.js +0 -8
  123. package/dashboard/.next/standalone/dashboard/node_modules/typescript/lib/watchGuard.js +0 -53
  124. package/dashboard/.next/standalone/dashboard/node_modules/typescript/lib/zh-cn/diagnosticMessages.generated.json +0 -2122
  125. package/dashboard/.next/standalone/dashboard/node_modules/typescript/lib/zh-tw/diagnosticMessages.generated.json +0 -2122
  126. package/dashboard/.next/standalone/dashboard/node_modules/typescript/package.json +0 -120
  127. package/dashboard/.next/standalone/node_modules/@img/sharp-libvips-linuxmusl-x64/package.json +0 -42
  128. package/dashboard/.next/standalone/node_modules/@img/sharp-linuxmusl-x64/package.json +0 -46
  129. package/scripts/start-dashboard.sh +0 -41
  130. package/scripts/stop-dashboard.sh +0 -21
  131. /package/dashboard/.next/standalone/dashboard/.next/static/{THy6JENQ0c1sq6jQhvIDp → RnvqrTXo_jN8SuMdaNcIj}/_buildManifest.js +0 -0
  132. /package/dashboard/.next/standalone/dashboard/.next/static/{THy6JENQ0c1sq6jQhvIDp → RnvqrTXo_jN8SuMdaNcIj}/_clientMiddlewareManifest.json +0 -0
  133. /package/dashboard/.next/standalone/dashboard/.next/static/{THy6JENQ0c1sq6jQhvIDp → RnvqrTXo_jN8SuMdaNcIj}/_ssgManifest.js +0 -0
  134. /package/dashboard/.next/standalone/dashboard/node_modules/@img/{sharp-libvips-linux-x64 → sharp-libvips-darwin-arm64}/lib/index.js +0 -0
  135. /package/dashboard/.next/standalone/dashboard/node_modules/@img/{sharp-libvips-linux-x64 → sharp-libvips-darwin-arm64}/versions.json +0 -0
@@ -1,120 +0,0 @@
1
- {
2
- "name": "typescript",
3
- "author": "Microsoft Corp.",
4
- "homepage": "https://www.typescriptlang.org/",
5
- "version": "5.9.3",
6
- "license": "Apache-2.0",
7
- "description": "TypeScript is a language for application scale JavaScript development",
8
- "keywords": [
9
- "TypeScript",
10
- "Microsoft",
11
- "compiler",
12
- "language",
13
- "javascript"
14
- ],
15
- "bugs": {
16
- "url": "https://github.com/microsoft/TypeScript/issues"
17
- },
18
- "repository": {
19
- "type": "git",
20
- "url": "https://github.com/microsoft/TypeScript.git"
21
- },
22
- "main": "./lib/typescript.js",
23
- "typings": "./lib/typescript.d.ts",
24
- "bin": {
25
- "tsc": "./bin/tsc",
26
- "tsserver": "./bin/tsserver"
27
- },
28
- "engines": {
29
- "node": ">=14.17"
30
- },
31
- "files": [
32
- "bin",
33
- "lib",
34
- "!lib/enu",
35
- "LICENSE.txt",
36
- "README.md",
37
- "SECURITY.md",
38
- "ThirdPartyNoticeText.txt",
39
- "!**/.gitattributes"
40
- ],
41
- "devDependencies": {
42
- "@dprint/formatter": "^0.4.1",
43
- "@dprint/typescript": "0.93.4",
44
- "@esfx/canceltoken": "^1.0.0",
45
- "@eslint/js": "^9.20.0",
46
- "@octokit/rest": "^21.1.1",
47
- "@types/chai": "^4.3.20",
48
- "@types/diff": "^7.0.1",
49
- "@types/minimist": "^1.2.5",
50
- "@types/mocha": "^10.0.10",
51
- "@types/ms": "^0.7.34",
52
- "@types/node": "latest",
53
- "@types/source-map-support": "^0.5.10",
54
- "@types/which": "^3.0.4",
55
- "@typescript-eslint/rule-tester": "^8.24.1",
56
- "@typescript-eslint/type-utils": "^8.24.1",
57
- "@typescript-eslint/utils": "^8.24.1",
58
- "azure-devops-node-api": "^14.1.0",
59
- "c8": "^10.1.3",
60
- "chai": "^4.5.0",
61
- "chokidar": "^4.0.3",
62
- "diff": "^7.0.0",
63
- "dprint": "^0.49.0",
64
- "esbuild": "^0.25.0",
65
- "eslint": "^9.20.1",
66
- "eslint-formatter-autolinkable-stylish": "^1.4.0",
67
- "eslint-plugin-regexp": "^2.7.0",
68
- "fast-xml-parser": "^4.5.2",
69
- "glob": "^10.4.5",
70
- "globals": "^15.15.0",
71
- "hereby": "^1.10.0",
72
- "jsonc-parser": "^3.3.1",
73
- "knip": "^5.44.4",
74
- "minimist": "^1.2.8",
75
- "mocha": "^10.8.2",
76
- "mocha-fivemat-progress-reporter": "^0.1.0",
77
- "monocart-coverage-reports": "^2.12.1",
78
- "ms": "^2.1.3",
79
- "picocolors": "^1.1.1",
80
- "playwright": "^1.50.1",
81
- "source-map-support": "^0.5.21",
82
- "tslib": "^2.8.1",
83
- "typescript": "^5.7.3",
84
- "typescript-eslint": "^8.24.1",
85
- "which": "^3.0.1"
86
- },
87
- "overrides": {
88
- "typescript@*": "$typescript"
89
- },
90
- "scripts": {
91
- "test": "hereby runtests-parallel --light=false",
92
- "test:eslint-rules": "hereby run-eslint-rules-tests",
93
- "build": "npm run build:compiler && npm run build:tests",
94
- "build:compiler": "hereby local",
95
- "build:tests": "hereby tests",
96
- "build:tests:notypecheck": "hereby tests --no-typecheck",
97
- "clean": "hereby clean",
98
- "gulp": "hereby",
99
- "lint": "hereby lint",
100
- "knip": "hereby knip",
101
- "format": "dprint fmt",
102
- "setup-hooks": "node scripts/link-hooks.mjs"
103
- },
104
- "browser": {
105
- "fs": false,
106
- "os": false,
107
- "path": false,
108
- "crypto": false,
109
- "buffer": false,
110
- "source-map-support": false,
111
- "inspector": false,
112
- "perf_hooks": false
113
- },
114
- "packageManager": "npm@8.19.4",
115
- "volta": {
116
- "node": "20.1.0",
117
- "npm": "8.19.4"
118
- },
119
- "gitHead": "c63de15a992d37f0d6cec03ac7631872838602cb"
120
- }
@@ -1,42 +0,0 @@
1
- {
2
- "name": "@img/sharp-libvips-linuxmusl-x64",
3
- "version": "1.2.4",
4
- "description": "Prebuilt libvips and dependencies for use with sharp on Linux (musl) x64",
5
- "author": "Lovell Fuller <npm@lovell.info>",
6
- "homepage": "https://sharp.pixelplumbing.com",
7
- "repository": {
8
- "type": "git",
9
- "url": "git+https://github.com/lovell/sharp-libvips.git",
10
- "directory": "npm/linuxmusl-x64"
11
- },
12
- "license": "LGPL-3.0-or-later",
13
- "funding": {
14
- "url": "https://opencollective.com/libvips"
15
- },
16
- "preferUnplugged": true,
17
- "publishConfig": {
18
- "access": "public"
19
- },
20
- "files": [
21
- "lib",
22
- "versions.json"
23
- ],
24
- "type": "commonjs",
25
- "exports": {
26
- "./lib": "./lib/index.js",
27
- "./package": "./package.json",
28
- "./versions": "./versions.json"
29
- },
30
- "config": {
31
- "musl": ">=1.2.2"
32
- },
33
- "os": [
34
- "linux"
35
- ],
36
- "libc": [
37
- "musl"
38
- ],
39
- "cpu": [
40
- "x64"
41
- ]
42
- }
@@ -1,46 +0,0 @@
1
- {
2
- "name": "@img/sharp-linuxmusl-x64",
3
- "version": "0.34.5",
4
- "description": "Prebuilt sharp for use with Linux (musl) x64",
5
- "author": "Lovell Fuller <npm@lovell.info>",
6
- "homepage": "https://sharp.pixelplumbing.com",
7
- "repository": {
8
- "type": "git",
9
- "url": "git+https://github.com/lovell/sharp.git",
10
- "directory": "npm/linuxmusl-x64"
11
- },
12
- "license": "Apache-2.0",
13
- "funding": {
14
- "url": "https://opencollective.com/libvips"
15
- },
16
- "preferUnplugged": true,
17
- "optionalDependencies": {
18
- "@img/sharp-libvips-linuxmusl-x64": "1.2.4"
19
- },
20
- "files": [
21
- "lib"
22
- ],
23
- "publishConfig": {
24
- "access": "public"
25
- },
26
- "type": "commonjs",
27
- "exports": {
28
- "./sharp.node": "./lib/sharp-linuxmusl-x64.node",
29
- "./package": "./package.json"
30
- },
31
- "engines": {
32
- "node": "^18.17.0 || ^20.3.0 || >=21.0.0"
33
- },
34
- "config": {
35
- "musl": ">=1.2.2"
36
- },
37
- "os": [
38
- "linux"
39
- ],
40
- "libc": [
41
- "musl"
42
- ],
43
- "cpu": [
44
- "x64"
45
- ]
46
- }
@@ -1,41 +0,0 @@
1
- #!/bin/bash
2
- # ShieldCortex Dashboard Startup Script
3
- # Starts both the API server and Next.js dashboard
4
-
5
- SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
6
- PROJECT_DIR="$(dirname "$SCRIPT_DIR")"
7
- LOG_DIR="$HOME/.shieldcortex/logs"
8
-
9
- # Create log directory
10
- mkdir -p "$LOG_DIR"
11
-
12
- # Kill any existing instances
13
- pkill -f "node.*visualization-server" 2>/dev/null
14
- pkill -f "next-server.*3030" 2>/dev/null
15
-
16
- # Wait for processes to stop
17
- sleep 1
18
-
19
- # Start API server (port 3001)
20
- cd "$PROJECT_DIR"
21
- nohup npm run dev:api > "$LOG_DIR/api-server.log" 2>&1 &
22
- API_PID=$!
23
- echo "API server started (PID: $API_PID)"
24
-
25
- # Wait for API to be ready
26
- sleep 2
27
-
28
- # Start Next.js dashboard (port 3030)
29
- cd "$PROJECT_DIR/dashboard"
30
- nohup npm run dev > "$LOG_DIR/dashboard.log" 2>&1 &
31
- DASHBOARD_PID=$!
32
- echo "Dashboard started (PID: $DASHBOARD_PID)"
33
-
34
- # Save PIDs for later shutdown
35
- echo "$API_PID" > "$LOG_DIR/api-server.pid"
36
- echo "$DASHBOARD_PID" > "$LOG_DIR/dashboard.pid"
37
-
38
- echo "ShieldCortex Dashboard running:"
39
- echo " - API: http://localhost:3001"
40
- echo " - Dashboard: http://localhost:3030"
41
- echo " - Logs: $LOG_DIR"
@@ -1,21 +0,0 @@
1
- #!/bin/bash
2
- # Stop ShieldCortex Dashboard
3
-
4
- LOG_DIR="$HOME/.shieldcortex/logs"
5
-
6
- # Kill by PID files if they exist
7
- if [ -f "$LOG_DIR/api-server.pid" ]; then
8
- kill $(cat "$LOG_DIR/api-server.pid") 2>/dev/null
9
- rm "$LOG_DIR/api-server.pid"
10
- fi
11
-
12
- if [ -f "$LOG_DIR/dashboard.pid" ]; then
13
- kill $(cat "$LOG_DIR/dashboard.pid") 2>/dev/null
14
- rm "$LOG_DIR/dashboard.pid"
15
- fi
16
-
17
- # Also kill by process name as fallback
18
- pkill -f "node.*visualization-server" 2>/dev/null
19
- pkill -f "next-server.*3030" 2>/dev/null
20
-
21
- echo "ShieldCortex Dashboard stopped"