shieldcortex 3.4.24 → 3.4.26

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 (37) hide show
  1. package/dashboard/.next/standalone/dashboard/.next/BUILD_ID +1 -1
  2. package/dashboard/.next/standalone/dashboard/.next/build-manifest.json +2 -2
  3. package/dashboard/.next/standalone/dashboard/.next/server/app/_global-error.html +2 -2
  4. package/dashboard/.next/standalone/dashboard/.next/server/app/_global-error.rsc +1 -1
  5. package/dashboard/.next/standalone/dashboard/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
  6. package/dashboard/.next/standalone/dashboard/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  7. package/dashboard/.next/standalone/dashboard/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  8. package/dashboard/.next/standalone/dashboard/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  9. package/dashboard/.next/standalone/dashboard/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  10. package/dashboard/.next/standalone/dashboard/.next/server/app/_not-found.html +1 -1
  11. package/dashboard/.next/standalone/dashboard/.next/server/app/_not-found.rsc +1 -1
  12. package/dashboard/.next/standalone/dashboard/.next/server/app/_not-found.segments/_full.segment.rsc +1 -1
  13. package/dashboard/.next/standalone/dashboard/.next/server/app/_not-found.segments/_head.segment.rsc +1 -1
  14. package/dashboard/.next/standalone/dashboard/.next/server/app/_not-found.segments/_index.segment.rsc +1 -1
  15. package/dashboard/.next/standalone/dashboard/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
  16. package/dashboard/.next/standalone/dashboard/.next/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
  17. package/dashboard/.next/standalone/dashboard/.next/server/app/_not-found.segments/_tree.segment.rsc +1 -1
  18. package/dashboard/.next/standalone/dashboard/.next/server/app/index.html +1 -1
  19. package/dashboard/.next/standalone/dashboard/.next/server/app/index.rsc +2 -2
  20. package/dashboard/.next/standalone/dashboard/.next/server/app/index.segments/__PAGE__.segment.rsc +2 -2
  21. package/dashboard/.next/standalone/dashboard/.next/server/app/index.segments/_full.segment.rsc +2 -2
  22. package/dashboard/.next/standalone/dashboard/.next/server/app/index.segments/_head.segment.rsc +1 -1
  23. package/dashboard/.next/standalone/dashboard/.next/server/app/index.segments/_index.segment.rsc +1 -1
  24. package/dashboard/.next/standalone/dashboard/.next/server/app/index.segments/_tree.segment.rsc +1 -1
  25. package/dashboard/.next/standalone/dashboard/.next/server/app/page_client-reference-manifest.js +1 -1
  26. package/dashboard/.next/standalone/dashboard/.next/server/chunks/ssr/dashboard_3051539d._.js +1 -1
  27. package/dashboard/.next/standalone/dashboard/.next/server/pages/404.html +1 -1
  28. package/dashboard/.next/standalone/dashboard/.next/server/pages/500.html +2 -2
  29. package/dashboard/.next/standalone/dashboard/.next/static/chunks/c95cfef94573d615.js +9 -0
  30. package/dist/api/visualization-server.js +24 -1
  31. package/dist/defence/iron-dome/index.d.ts +4 -0
  32. package/dist/defence/iron-dome/index.js +21 -0
  33. package/package.json +1 -1
  34. package/dashboard/.next/standalone/dashboard/.next/static/chunks/7eae8665a0fe51b7.js +0 -9
  35. /package/dashboard/.next/standalone/dashboard/.next/static/{tgpyN2TlgxxQBaXJDJfBL → Z6RWGYPe0sDAmBNZV4HnL}/_buildManifest.js +0 -0
  36. /package/dashboard/.next/standalone/dashboard/.next/static/{tgpyN2TlgxxQBaXJDJfBL → Z6RWGYPe0sDAmBNZV4HnL}/_clientMiddlewareManifest.json +0 -0
  37. /package/dashboard/.next/standalone/dashboard/.next/static/{tgpyN2TlgxxQBaXJDJfBL → Z6RWGYPe0sDAmBNZV4HnL}/_ssgManifest.js +0 -0
@@ -25,7 +25,7 @@ import { queryAgentOperations } from '../defence/audit/queries.js';
25
25
  import { logAudit } from '../defence/audit/index.js';
26
26
  import { getCloudConfig, getTrustedSkills, addTrustedSkill, removeTrustedSkill, getDeviceId, getDeviceName, getDefenceMode } from '../cloud/config.js';
27
27
  import { scanSkill, scanSkillContent, discoverSkillFiles } from '../defence/skill-scanner/index.js';
28
- import { getIronDomeStatus, activateIronDome, deactivateIronDome, scanForInjection } from '../defence/iron-dome/index.js';
28
+ import { getIronDomeStatus, activateIronDome, deactivateIronDome, scanForInjection, updateIronDomeConfig } from '../defence/iron-dome/index.js';
29
29
  import { requireFeature, FeatureGatedError } from '../license/gate.js';
30
30
  import { registerAdminRoutes } from './routes/admin.js';
31
31
  import { registerGraphRoutes } from './routes/graph.js';
@@ -453,6 +453,29 @@ export function startVisualizationServer(dbPath) {
453
453
  res.status(500).json({ error: error.message });
454
454
  }
455
455
  });
456
+ app.post('/api/iron-dome/config', (req, res) => {
457
+ try {
458
+ const { killPhrase, trustedChannels } = req.body ?? {};
459
+ if (killPhrase !== undefined) {
460
+ if (typeof killPhrase !== 'string' || killPhrase.trim().length < 3 || killPhrase.trim().length > 80) {
461
+ return res.status(400).json({ error: 'killPhrase must be a string between 3 and 80 characters' });
462
+ }
463
+ }
464
+ if (trustedChannels !== undefined) {
465
+ if (!Array.isArray(trustedChannels) || trustedChannels.some((value) => typeof value !== 'string')) {
466
+ return res.status(400).json({ error: 'trustedChannels must be an array of strings' });
467
+ }
468
+ }
469
+ const config = updateIronDomeConfig({
470
+ ...(killPhrase !== undefined ? { killPhrase } : {}),
471
+ ...(trustedChannels !== undefined ? { trustedChannels } : {}),
472
+ });
473
+ res.json({ success: true, config });
474
+ }
475
+ catch (error) {
476
+ res.status(500).json({ error: error.message });
477
+ }
478
+ });
456
479
  // Emergency Stop — activates kill switch, blocks ALL agent operations
457
480
  app.post('/api/iron-dome/emergency-stop', (_req, res) => {
458
481
  try {
@@ -32,6 +32,10 @@ export declare function activateIronDome(profile?: IronDomeProfile): IronDomeCon
32
32
  * Deactivate Iron Dome.
33
33
  */
34
34
  export declare function deactivateIronDome(): void;
35
+ /**
36
+ * Update editable Iron Dome configuration fields without resetting the full profile.
37
+ */
38
+ export declare function updateIronDomeConfig(overrides: Partial<Pick<IronDomeConfig, 'killPhrase' | 'trustedChannels'>>): IronDomeConfig;
35
39
  /**
36
40
  * Check input for the kill phrase and trigger emergency stop if detected.
37
41
  * Activates full kill switch lockdown — blocks ALL agent operations
@@ -147,6 +147,27 @@ export function deactivateIronDome() {
147
147
  reason: 'Iron Dome deactivated',
148
148
  });
149
149
  }
150
+ /**
151
+ * Update editable Iron Dome configuration fields without resetting the full profile.
152
+ */
153
+ export function updateIronDomeConfig(overrides) {
154
+ const current = loadConfig();
155
+ const next = {
156
+ ...current,
157
+ ...(typeof overrides.killPhrase === 'string' ? { killPhrase: overrides.killPhrase.trim() || current.killPhrase } : {}),
158
+ ...(Array.isArray(overrides.trustedChannels) ? { trustedChannels: overrides.trustedChannels } : {}),
159
+ };
160
+ saveConfig(next);
161
+ logIronDomeAudit({
162
+ action: 'config_update',
163
+ allowed: true,
164
+ reason: `Updated Iron Dome config fields: ${[
165
+ typeof overrides.killPhrase === 'string' ? 'killPhrase' : null,
166
+ Array.isArray(overrides.trustedChannels) ? 'trustedChannels' : null,
167
+ ].filter(Boolean).join(', ') || 'none'}`,
168
+ });
169
+ return getIronDomeStatus().config;
170
+ }
150
171
  /**
151
172
  * Check input for the kill phrase and trigger emergency stop if detected.
152
173
  * Activates full kill switch lockdown — blocks ALL agent operations
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "shieldcortex",
3
- "version": "3.4.24",
3
+ "version": "3.4.26",
4
4
  "description": "Trustworthy memory and security for AI agents. Recall debugging, review queue, OpenClaw session capture, and memory poisoning defence for Claude Code, Codex, OpenClaw, LangChain, and MCP agents.",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",