@neurosec/sentry 1.0.19 → 1.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 (175) hide show
  1. package/README.md +4 -0
  2. package/dist/api-auth.d.ts +31 -0
  3. package/dist/api-auth.d.ts.map +1 -0
  4. package/dist/api-auth.js +105 -0
  5. package/dist/api-auth.js.map +1 -0
  6. package/dist/api-auth.test.d.ts +2 -0
  7. package/dist/api-auth.test.d.ts.map +1 -0
  8. package/dist/api-auth.test.js +89 -0
  9. package/dist/api-auth.test.js.map +1 -0
  10. package/dist/api.d.ts +8 -7
  11. package/dist/api.d.ts.map +1 -1
  12. package/dist/api.js +141 -134
  13. package/dist/api.js.map +1 -1
  14. package/dist/cli.d.ts +1 -1
  15. package/dist/cli.d.ts.map +1 -1
  16. package/dist/cli.js +107 -14
  17. package/dist/cli.js.map +1 -1
  18. package/dist/cli.test.d.ts +2 -0
  19. package/dist/cli.test.d.ts.map +1 -0
  20. package/dist/cli.test.js +68 -0
  21. package/dist/cli.test.js.map +1 -0
  22. package/dist/config.d.ts +30 -0
  23. package/dist/config.d.ts.map +1 -1
  24. package/dist/config.js +50 -1
  25. package/dist/config.js.map +1 -1
  26. package/dist/discovery-win.d.ts +4 -0
  27. package/dist/discovery-win.d.ts.map +1 -0
  28. package/dist/discovery-win.js +153 -0
  29. package/dist/discovery-win.js.map +1 -0
  30. package/dist/discovery.d.ts.map +1 -1
  31. package/dist/discovery.js +23 -97
  32. package/dist/discovery.js.map +1 -1
  33. package/dist/discovery.test.js +18 -109
  34. package/dist/discovery.test.js.map +1 -1
  35. package/dist/enforcement/file-monitor.d.ts +9 -0
  36. package/dist/enforcement/file-monitor.d.ts.map +1 -1
  37. package/dist/enforcement/file-monitor.js +9 -2
  38. package/dist/enforcement/file-monitor.js.map +1 -1
  39. package/dist/enforcement/network-monitor.d.ts.map +1 -1
  40. package/dist/enforcement/network-monitor.js +350 -9
  41. package/dist/enforcement/network-monitor.js.map +1 -1
  42. package/dist/enforcement/network-monitor.test.d.ts +2 -0
  43. package/dist/enforcement/network-monitor.test.d.ts.map +1 -0
  44. package/dist/enforcement/network-monitor.test.js +52 -0
  45. package/dist/enforcement/network-monitor.test.js.map +1 -0
  46. package/dist/enforcement/policy-executor.d.ts +24 -1
  47. package/dist/enforcement/policy-executor.d.ts.map +1 -1
  48. package/dist/enforcement/policy-executor.js +213 -69
  49. package/dist/enforcement/policy-executor.js.map +1 -1
  50. package/dist/enforcement/policy-executor.test.d.ts +2 -0
  51. package/dist/enforcement/policy-executor.test.d.ts.map +1 -0
  52. package/dist/enforcement/policy-executor.test.js +46 -0
  53. package/dist/enforcement/policy-executor.test.js.map +1 -0
  54. package/dist/enforcement/target-validator.d.ts +37 -0
  55. package/dist/enforcement/target-validator.d.ts.map +1 -0
  56. package/dist/enforcement/target-validator.js +0 -0
  57. package/dist/enforcement/target-validator.js.map +1 -0
  58. package/dist/enforcement/target-validator.test.d.ts +2 -0
  59. package/dist/enforcement/target-validator.test.d.ts.map +1 -0
  60. package/dist/enforcement/target-validator.test.js +103 -0
  61. package/dist/enforcement/target-validator.test.js.map +1 -0
  62. package/dist/http-client.d.ts +35 -0
  63. package/dist/http-client.d.ts.map +1 -0
  64. package/dist/http-client.js +168 -0
  65. package/dist/http-client.js.map +1 -0
  66. package/dist/http-client.test.d.ts +2 -0
  67. package/dist/http-client.test.d.ts.map +1 -0
  68. package/dist/http-client.test.js +172 -0
  69. package/dist/http-client.test.js.map +1 -0
  70. package/dist/index.js +189 -113
  71. package/dist/index.js.map +1 -1
  72. package/dist/launcher.d.ts +33 -0
  73. package/dist/launcher.d.ts.map +1 -0
  74. package/dist/launcher.js +425 -0
  75. package/dist/launcher.js.map +1 -0
  76. package/dist/launcher.test.d.ts +2 -0
  77. package/dist/launcher.test.d.ts.map +1 -0
  78. package/dist/launcher.test.js +109 -0
  79. package/dist/launcher.test.js.map +1 -0
  80. package/dist/proxy/cert-manager.d.ts +24 -0
  81. package/dist/proxy/cert-manager.d.ts.map +1 -0
  82. package/dist/proxy/cert-manager.js +117 -0
  83. package/dist/proxy/cert-manager.js.map +1 -0
  84. package/dist/proxy/cert-manager.test.d.ts +2 -0
  85. package/dist/proxy/cert-manager.test.d.ts.map +1 -0
  86. package/dist/proxy/cert-manager.test.js +70 -0
  87. package/dist/proxy/cert-manager.test.js.map +1 -0
  88. package/dist/proxy/index.d.ts +61 -0
  89. package/dist/proxy/index.d.ts.map +1 -0
  90. package/dist/proxy/index.js +74 -0
  91. package/dist/proxy/index.js.map +1 -0
  92. package/dist/proxy/policy-enforcer.d.ts +30 -0
  93. package/dist/proxy/policy-enforcer.d.ts.map +1 -0
  94. package/dist/proxy/policy-enforcer.js +143 -0
  95. package/dist/proxy/policy-enforcer.js.map +1 -0
  96. package/dist/proxy/proxy-server.d.ts +42 -0
  97. package/dist/proxy/proxy-server.d.ts.map +1 -0
  98. package/dist/proxy/proxy-server.js +652 -0
  99. package/dist/proxy/proxy-server.js.map +1 -0
  100. package/dist/proxy/redaction-engine.d.ts +4 -0
  101. package/dist/proxy/redaction-engine.d.ts.map +1 -0
  102. package/dist/proxy/redaction-engine.js +50 -0
  103. package/dist/proxy/redaction-engine.js.map +1 -0
  104. package/dist/proxy/response-redaction.test.d.ts +2 -0
  105. package/dist/proxy/response-redaction.test.d.ts.map +1 -0
  106. package/dist/proxy/response-redaction.test.js +125 -0
  107. package/dist/proxy/response-redaction.test.js.map +1 -0
  108. package/dist/proxy/threat-engine.d.ts +22 -0
  109. package/dist/proxy/threat-engine.d.ts.map +1 -0
  110. package/dist/proxy/threat-engine.js +291 -0
  111. package/dist/proxy/threat-engine.js.map +1 -0
  112. package/dist/proxy/threat-engine.test.d.ts +2 -0
  113. package/dist/proxy/threat-engine.test.d.ts.map +1 -0
  114. package/dist/proxy/threat-engine.test.js +27 -0
  115. package/dist/proxy/threat-engine.test.js.map +1 -0
  116. package/dist/redirect/env-injector.d.ts +72 -0
  117. package/dist/redirect/env-injector.d.ts.map +1 -0
  118. package/dist/redirect/env-injector.js +177 -0
  119. package/dist/redirect/env-injector.js.map +1 -0
  120. package/dist/redirect/env-injector.test.d.ts +2 -0
  121. package/dist/redirect/env-injector.test.d.ts.map +1 -0
  122. package/dist/redirect/env-injector.test.js +91 -0
  123. package/dist/redirect/env-injector.test.js.map +1 -0
  124. package/dist/redirect/index.d.ts +3 -0
  125. package/dist/redirect/index.d.ts.map +1 -0
  126. package/dist/redirect/index.js +8 -0
  127. package/dist/redirect/index.js.map +1 -0
  128. package/dist/redirect/platform-redirect.d.ts +42 -0
  129. package/dist/redirect/platform-redirect.d.ts.map +1 -0
  130. package/dist/redirect/platform-redirect.js +229 -0
  131. package/dist/redirect/platform-redirect.js.map +1 -0
  132. package/dist/redirect/platform-redirect.test.d.ts +2 -0
  133. package/dist/redirect/platform-redirect.test.d.ts.map +1 -0
  134. package/dist/redirect/platform-redirect.test.js +76 -0
  135. package/dist/redirect/platform-redirect.test.js.map +1 -0
  136. package/dist/sandbox/index.d.ts +23 -2
  137. package/dist/sandbox/index.d.ts.map +1 -1
  138. package/dist/sandbox/index.js +24 -7
  139. package/dist/sandbox/index.js.map +1 -1
  140. package/dist/sandbox/linux-sandbox.d.ts +13 -2
  141. package/dist/sandbox/linux-sandbox.d.ts.map +1 -1
  142. package/dist/sandbox/linux-sandbox.js +61 -27
  143. package/dist/sandbox/linux-sandbox.js.map +1 -1
  144. package/dist/sandbox/macos-sandbox.d.ts +15 -4
  145. package/dist/sandbox/macos-sandbox.d.ts.map +1 -1
  146. package/dist/sandbox/macos-sandbox.js +36 -18
  147. package/dist/sandbox/macos-sandbox.js.map +1 -1
  148. package/dist/sandbox/sandbox-result.test.d.ts +2 -0
  149. package/dist/sandbox/sandbox-result.test.d.ts.map +1 -0
  150. package/dist/sandbox/sandbox-result.test.js +87 -0
  151. package/dist/sandbox/sandbox-result.test.js.map +1 -0
  152. package/dist/sandbox/windows-sandbox.d.ts +34 -0
  153. package/dist/sandbox/windows-sandbox.d.ts.map +1 -0
  154. package/dist/sandbox/windows-sandbox.js +161 -0
  155. package/dist/sandbox/windows-sandbox.js.map +1 -0
  156. package/dist/setup.d.ts.map +1 -1
  157. package/dist/setup.js +33 -43
  158. package/dist/setup.js.map +1 -1
  159. package/dist/skill-authz/skill-evaluator.d.ts +30 -0
  160. package/dist/skill-authz/skill-evaluator.d.ts.map +1 -1
  161. package/dist/skill-authz/skill-evaluator.js +161 -30
  162. package/dist/skill-authz/skill-evaluator.js.map +1 -1
  163. package/dist/skill-authz/skill-evaluator.test.d.ts +2 -0
  164. package/dist/skill-authz/skill-evaluator.test.d.ts.map +1 -0
  165. package/dist/skill-authz/skill-evaluator.test.js +127 -0
  166. package/dist/skill-authz/skill-evaluator.test.js.map +1 -0
  167. package/dist/telemetry.d.ts.map +1 -1
  168. package/dist/telemetry.js +16 -44
  169. package/dist/telemetry.js.map +1 -1
  170. package/dist/types.d.ts +48 -105
  171. package/dist/types.d.ts.map +1 -1
  172. package/dist/types.js +34 -1
  173. package/dist/types.js.map +1 -1
  174. package/package.json +7 -3
  175. package/scripts/install-sentry-windows.ps1 +217 -0
package/dist/api.js CHANGED
@@ -1,24 +1,72 @@
1
1
  "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
2
35
  var __importDefault = (this && this.__importDefault) || function (mod) {
3
36
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
37
  };
5
38
  Object.defineProperty(exports, "__esModule", { value: true });
6
39
  exports.SentryApiServer = void 0;
7
40
  const http_1 = __importDefault(require("http"));
41
+ const proxy_1 = require("./proxy");
42
+ const sandbox_1 = require("./sandbox");
43
+ const api_auth_1 = require("./api-auth");
8
44
  const logger_1 = require("./logger");
9
45
  class SentryApiServer {
10
- constructor(config, getTaggedProcesses, getEngine, getSkillEvaluator, getPolicyVersion, getLastSyncAt, getAgentRegistry, getActionLogger, getAnomalyDetector) {
46
+ constructor(config, getTaggedProcesses, getEngine, getSkillEvaluator, getPolicyVersion, getLastSyncAt, getProxy = () => undefined, getPolicyEnforcer = () => undefined) {
11
47
  this.config = config;
12
48
  this.getTaggedProcesses = getTaggedProcesses;
13
49
  this.getEngine = getEngine;
14
50
  this.getSkillEvaluator = getSkillEvaluator;
15
51
  this.getPolicyVersion = getPolicyVersion;
16
52
  this.getLastSyncAt = getLastSyncAt;
17
- this.getAgentRegistry = getAgentRegistry;
18
- this.getActionLogger = getActionLogger;
19
- this.getAnomalyDetector = getAnomalyDetector;
53
+ this.getProxy = getProxy;
54
+ this.getPolicyEnforcer = getPolicyEnforcer;
20
55
  this.server = null;
21
56
  this.startTime = Date.now();
57
+ this.auth = new api_auth_1.LocalApiAuth({
58
+ stateDir: config.sentry.stateDir,
59
+ // Read-only health/status is anonymous so operator dashboards and
60
+ // monitoring agents can poll without provisioning the bearer token.
61
+ publicPaths: ['/api/v1/status', '/health'],
62
+ });
63
+ logger_1.logger.info('Local API auth initialized — clients must send Authorization: Bearer <token>', {
64
+ tokenPath: this.auth.getTokenPath(),
65
+ });
66
+ }
67
+ /** Returns the bearer token for use by trusted local tooling. */
68
+ getAuthToken() {
69
+ return this.auth.getToken();
22
70
  }
23
71
  async start() {
24
72
  if (this.server)
@@ -50,6 +98,7 @@ class SentryApiServer {
50
98
  const engine = this.getEngine();
51
99
  const stats = engine.getStats();
52
100
  const processes = this.getTaggedProcesses();
101
+ const platform = process.platform === 'linux' ? 'linux' : process.platform === 'darwin' ? 'darwin' : process.platform === 'win32' ? 'win32' : 'unknown';
53
102
  return {
54
103
  version: this.config.sentry.version,
55
104
  uptime: Math.floor((Date.now() - this.startTime) / 1000),
@@ -60,7 +109,11 @@ class SentryApiServer {
60
109
  decisionsTotal: stats.total,
61
110
  decisionsDenied: stats.denied,
62
111
  lastSyncAt: this.getLastSyncAt(),
63
- platform: process.platform === 'linux' ? 'linux' : process.platform === 'darwin' ? 'darwin' : 'unknown',
112
+ platform: platform,
113
+ proxyEnabled: this.config.proxy?.enabled ?? false,
114
+ proxyPort: this.config.proxy?.port ?? 0,
115
+ redirectEnabled: this.config.redirect?.enabled ?? false,
116
+ redirectStrategy: this.config.redirect?.strategy ?? 'none',
64
117
  };
65
118
  }
66
119
  async handleRequest(req, res) {
@@ -77,6 +130,16 @@ class SentryApiServer {
77
130
  res.end();
78
131
  return;
79
132
  }
133
+ // Auth gate (skipped for public read-only paths defined by LocalApiAuth).
134
+ const authResult = this.auth.authorize(req);
135
+ if (!authResult.ok) {
136
+ await this.json(res, 401, {
137
+ error: 'Authentication required',
138
+ hint: `Send 'Authorization: Bearer <token>' (token stored at ${this.auth.getTokenPath()})`,
139
+ reason: authResult.reason,
140
+ });
141
+ return;
142
+ }
80
143
  try {
81
144
  switch (true) {
82
145
  case method === 'GET' && pathname === '/api/v1/status':
@@ -110,15 +173,84 @@ class SentryApiServer {
110
173
  blockedEgress: this.config.network.blockHosts,
111
174
  });
112
175
  break;
113
- case method === 'POST' && pathname === '/api/v1/policy/reload':
114
- await this.json(res, 200, { message: 'Policy reload requested' });
176
+ case method === 'POST' && pathname === '/api/v1/policy/reload': {
177
+ // The reload itself is triggered by emitting a marker; the daemon
178
+ // observes this and runs syncPolicies on its next tick. We use a
179
+ // setImmediate so this handler stays sync-friendly.
180
+ process.nextTick(() => process.emit('SIGUSR1'));
181
+ await this.json(res, 202, { message: 'Policy reload scheduled (next sync tick)' });
182
+ break;
183
+ }
184
+ // NeuroShield proxy endpoints
185
+ case method === 'GET' && pathname === '/api/v1/proxy/status':
186
+ await this.json(res, 200, {
187
+ enabled: this.config.proxy.enabled,
188
+ port: this.config.proxy.port,
189
+ bindAddress: this.config.proxy.bindAddress,
190
+ interceptHttps: this.config.proxy.interceptHttps,
191
+ running: !!this.getProxy(),
192
+ });
193
+ break;
194
+ case method === 'GET' && pathname === '/api/v1/proxy/policies':
195
+ await this.json(res, 200, {
196
+ mode: this.config.enforcement.mode,
197
+ policies: proxy_1.DEFAULT_POLICIES,
198
+ });
199
+ break;
200
+ case method === 'POST' && pathname === '/api/v1/proxy/policies/reload': {
201
+ const { DEFAULT_POLICIES } = await Promise.resolve().then(() => __importStar(require('./proxy')));
202
+ const enforcer = this.getPolicyEnforcer();
203
+ if (enforcer) {
204
+ enforcer.setPolicies(DEFAULT_POLICIES);
205
+ await this.json(res, 200, { message: 'Proxy policies reloaded' });
206
+ }
207
+ else {
208
+ await this.json(res, 503, { error: 'Policy enforcer not available' });
209
+ }
210
+ break;
211
+ }
212
+ case method === 'GET' && pathname === '/api/v1/redirect/status':
213
+ await this.json(res, 200, {
214
+ enabled: this.config.redirect.enabled,
215
+ strategy: this.config.redirect.strategy,
216
+ injectOnDiscover: this.config.redirect.injectOnDiscover,
217
+ });
115
218
  break;
116
219
  case method === 'POST' && /^\/api\/v1\/sandbox\/(\d+)\/(disable|restrict)$/.test(pathname): {
117
220
  const match = pathname.match(/^\/api\/v1\/sandbox\/(\d+)\/(disable|restrict)$/);
118
221
  const pid = parseInt(match[1], 10);
119
222
  const action = match[2];
120
- logger_1.logger.info('Sandbox action requested', { pid, action });
121
- await this.json(res, 200, { message: `Sandbox ${action} for pid ${pid}` });
223
+ // Refuse if pid isn't in our tagged-process set (operator can only
224
+ // touch processes Sentry actively manages).
225
+ const proc = this.getTaggedProcesses().find(p => p.pid === pid);
226
+ if (!proc) {
227
+ await this.json(res, 404, { error: 'Process not found in tagged set', pid });
228
+ break;
229
+ }
230
+ if (action === 'disable') {
231
+ const removed = await (0, sandbox_1.removeSandbox)(pid);
232
+ logger_1.logger.warn('Sandbox disabled by operator request', { pid, removed });
233
+ await this.json(res, removed ? 200 : 500, {
234
+ message: removed ? `Sandbox removed for pid ${pid}` : 'Sandbox removal failed',
235
+ pid,
236
+ applied: removed,
237
+ });
238
+ }
239
+ else {
240
+ // restrict → re-apply the most restrictive profile available
241
+ const restrictiveProfile = (0, sandbox_1.getProfileForFramework)('') /* falls back to default-restrictive */;
242
+ const result = restrictiveProfile
243
+ ? await (0, sandbox_1.applySandbox)({ ...proc, sandboxProfileName: restrictiveProfile.name }, this.config)
244
+ : { applied: false, features: [], reason: 'no restrictive profile available' };
245
+ logger_1.logger.info('Sandbox restrict applied', { pid, ...result });
246
+ await this.json(res, result.applied ? 200 : 500, {
247
+ message: result.applied ? `Sandbox restricted for pid ${pid}` : 'Sandbox restrict failed',
248
+ pid,
249
+ applied: result.applied,
250
+ features: result.features,
251
+ reason: result.reason,
252
+ });
253
+ }
122
254
  break;
123
255
  }
124
256
  case method === 'GET' && pathname === '/api/v1/approvals':
@@ -146,131 +278,6 @@ class SentryApiServer {
146
278
  }
147
279
  break;
148
280
  }
149
- // ═══════════════════════════════════════════════════════════════════
150
- // AEGIS Framework API Endpoints
151
- // ═══════════════════════════════════════════════════════════════════
152
- // AEGIS: Agent identity & lifecycle (IAM Domain)
153
- case method === 'GET' && pathname === '/api/v1/aegis/agents':
154
- await this.json(res, 200, this.getAgentRegistry().getAllIdentities());
155
- break;
156
- case method === 'GET' && /^\/api\/v1\/aegis\/agents\/([^/]+)$/.test(pathname): {
157
- const agentId = pathname.match(/^\/api\/v1\/aegis\/agents\/([^/]+)$/)[1];
158
- const identity = this.getAgentRegistry().getIdentityById(agentId);
159
- if (identity) {
160
- await this.json(res, 200, identity);
161
- }
162
- else {
163
- await this.json(res, 404, { error: 'Agent identity not found' });
164
- }
165
- break;
166
- }
167
- case method === 'GET' && pathname === '/api/v1/aegis/agents/active':
168
- await this.json(res, 200, this.getAgentRegistry().getActiveIdentities());
169
- break;
170
- case method === 'PUT' && /^\/api\/v1\/aegis\/agents\/([^/]+)\/documentation$/.test(pathname): {
171
- const docId = pathname.match(/^\/api\/v1\/aegis\/agents\/([^/]+)\/documentation$/)[1];
172
- let body = '';
173
- for await (const chunk of req)
174
- body += chunk;
175
- const updates = JSON.parse(body);
176
- const identity = this.getAgentRegistry().getIdentityById(docId);
177
- if (identity) {
178
- this.getAgentRegistry().updateDocumentation(identity.frameworkId, identity.pid, updates);
179
- await this.json(res, 200, { message: 'Documentation updated' });
180
- }
181
- else {
182
- await this.json(res, 404, { error: 'Agent identity not found' });
183
- }
184
- break;
185
- }
186
- case method === 'PUT' && /^\/api\/v1\/aegis\/agents\/([^/]+)\/identity$/.test(pathname): {
187
- const updId = pathname.match(/^\/api\/v1\/aegis\/agents\/([^/]+)\/identity$/)[1];
188
- let body = '';
189
- for await (const chunk of req)
190
- body += chunk;
191
- const updates = JSON.parse(body);
192
- const identity = this.getAgentRegistry().getIdentityById(updId);
193
- if (identity) {
194
- this.getAgentRegistry().updateIdentity(identity.frameworkId, identity.pid, updates);
195
- await this.json(res, 200, { message: 'Identity updated' });
196
- }
197
- else {
198
- await this.json(res, 404, { error: 'Agent identity not found' });
199
- }
200
- break;
201
- }
202
- // AEGIS: Agent-on-a-Page governance documentation
203
- case method === 'GET' && /^\/api\/v1\/aegis\/agents\/([^/]+)\/page$/.test(pathname): {
204
- const pageId = pathname.match(/^\/api\/v1\/aegis\/agents\/([^/]+)\/page$/)[1];
205
- const identity = this.getAgentRegistry().getIdentityById(pageId);
206
- if (identity) {
207
- await this.json(res, 200, {
208
- agentId: identity.id,
209
- frameworkId: identity.frameworkId,
210
- frameworkName: identity.frameworkName,
211
- pid: identity.pid,
212
- status: identity.status,
213
- purpose: identity.purpose,
214
- riskLevel: identity.riskLevel,
215
- owner: identity.owner,
216
- ownerEmail: identity.ownerEmail,
217
- documentation: identity.documentation,
218
- allowedTools: identity.allowedTools,
219
- maxDecisionScope: identity.maxDecisionScope,
220
- allowedDataClassifications: identity.allowedDataClassifications,
221
- firstDiscoveredAt: identity.firstDiscoveredAt,
222
- lastSeenAt: identity.lastSeenAt,
223
- });
224
- }
225
- else {
226
- await this.json(res, 404, { error: 'Agent identity not found' });
227
- }
228
- break;
229
- }
230
- // AEGIS: Least-agency constraints (Zero Trust Domain)
231
- case method === 'GET' && pathname === '/api/v1/aegis/constraints':
232
- await this.json(res, 200, [...this.getAgentRegistry().getAllIdentities().map(id => ({ frameworkId: id.frameworkId, level: id.maxDecisionScope }))]);
233
- break;
234
- // AEGIS: Agent action log (Threat Management Domain)
235
- case method === 'GET' && pathname === '/api/v1/aegis/actions':
236
- await this.json(res, 200, this.getActionLogger().getRecentActions(100));
237
- break;
238
- case method === 'GET' && pathname === '/api/v1/aegis/actions/stats':
239
- await this.json(res, 200, { processedCount: this.getActionLogger().getProcessedCount() });
240
- break;
241
- // AEGIS: Anomaly alerts (GRC + Threat Management Domains)
242
- case method === 'GET' && pathname === '/api/v1/aegis/anomalies':
243
- await this.json(res, 200, this.getAnomalyDetector().getAllAlerts());
244
- break;
245
- case method === 'GET' && pathname === '/api/v1/aegis/anomalies/open':
246
- await this.json(res, 200, this.getAnomalyDetector().getOpenAlerts());
247
- break;
248
- case method === 'POST' && /^\/api\/v1\/aegis\/anomalies\/([^/]+)\/resolve$/.test(pathname): {
249
- const alertId = pathname.match(/^\/api\/v1\/aegis\/anomalies\/([^/]+)\/resolve$/)[1];
250
- let body = '';
251
- for await (const chunk of req)
252
- body += chunk;
253
- const { resolvedBy } = JSON.parse(body);
254
- const success = this.getAnomalyDetector().resolveAlert(alertId, resolvedBy);
255
- if (success) {
256
- await this.json(res, 200, { message: 'Alert resolved' });
257
- }
258
- else {
259
- await this.json(res, 404, { error: 'Alert not found' });
260
- }
261
- break;
262
- }
263
- case method === 'POST' && /^\/api\/v1\/aegis\/anomalies\/([^/]+)\/acknowledge$/.test(pathname): {
264
- const ackId = pathname.match(/^\/api\/v1\/aegis\/anomalies\/([^/]+)\/acknowledge$/)[1];
265
- const success = this.getAnomalyDetector().acknowledgeAlert(ackId);
266
- if (success) {
267
- await this.json(res, 200, { message: 'Alert acknowledged' });
268
- }
269
- else {
270
- await this.json(res, 404, { error: 'Alert not found or already resolved' });
271
- }
272
- break;
273
- }
274
281
  default:
275
282
  await this.json(res, 404, { error: 'Not found', path: pathname });
276
283
  }
package/dist/api.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"api.js","sourceRoot":"","sources":["../src/api.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"api.js","sourceRoot":"","sources":["../src/api.ts"],"names":[],"mappings":"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"}
package/dist/cli.d.ts CHANGED
@@ -1,3 +1,3 @@
1
1
  #!/usr/bin/env node
2
- export {};
2
+ export declare function main(): Promise<void>;
3
3
  //# sourceMappingURL=cli.d.ts.map
package/dist/cli.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":""}
1
+ {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AAqUA,wBAAsB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAgC1C"}
package/dist/cli.js CHANGED
@@ -4,11 +4,14 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
4
4
  return (mod && mod.__esModule) ? mod : { "default": mod };
5
5
  };
6
6
  Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.main = main;
7
8
  const http_1 = __importDefault(require("http"));
8
9
  const fs_1 = __importDefault(require("fs"));
9
10
  const path_1 = __importDefault(require("path"));
10
11
  const os_1 = __importDefault(require("os"));
11
12
  const child_process_1 = require("child_process");
13
+ const config_1 = require("./config");
14
+ const launcher_1 = require("./launcher");
12
15
  const setup_1 = require("./setup");
13
16
  const VERSION = require('../package.json').version || '1.0.0';
14
17
  const USAGE = `
@@ -20,6 +23,7 @@ USAGE
20
23
  COMMANDS
21
24
  setup Generate and write sentry.yaml configuration
22
25
  install Install the sentry daemon as a system service
26
+ launch Launch an agent through Sentry's platform sandbox wrapper
23
27
  status Show sentry daemon status and active processes
24
28
  logs Tail the sentry audit log
25
29
  version Print version
@@ -33,9 +37,16 @@ SETUP OPTIONS
33
37
  --config=<path> Config output path (default: /etc/neuroshield/sentry.yaml)
34
38
  --non-interactive Skip prompts (use with flags above)
35
39
 
40
+ LAUNCH OPTIONS
41
+ --framework=<id> Framework id used to select sandbox profile
42
+ --profile=<name> Explicit sandbox profile name
43
+ --cwd=<path> Working directory for the launched command
44
+ --dry-run Print the computed launch plan without executing it
45
+
36
46
  EXAMPLES
37
47
  neuroshield-sentry setup
38
48
  neuroshield-sentry setup --org=org_abc123 --token=nst_xxx --mode=enforce
49
+ neuroshield-sentry launch --framework=codex -- node agent.js
39
50
  sudo neuroshield-sentry install
40
51
  neuroshield-sentry status
41
52
  neuroshield-sentry logs -n 50
@@ -47,6 +58,12 @@ function getConfigPaths(platform) {
47
58
  log: '/usr/local/var/log/neuroshield/sentry.log',
48
59
  };
49
60
  }
61
+ if (platform === 'win32') {
62
+ return {
63
+ config: `${process.env.ProgramData || 'C:\\ProgramData'}\\NeuroShield\\Sentry\\sentry.yaml`,
64
+ log: `${process.env.ProgramData || 'C:\\ProgramData'}\\NeuroShield\\Sentry\\logs\\sentry.log`,
65
+ };
66
+ }
50
67
  return {
51
68
  config: '/etc/neuroshield/sentry.yaml',
52
69
  log: '/var/log/neuroshield/sentry.log',
@@ -72,6 +89,22 @@ async function cmdInstall() {
72
89
  const platform = os_1.default.platform();
73
90
  const pkgRoot = path_1.default.resolve(__dirname, '..');
74
91
  const scriptsDir = path_1.default.join(pkgRoot, 'scripts');
92
+ if (platform === 'win32') {
93
+ const installScript = path_1.default.join(scriptsDir, 'install-sentry-windows.ps1');
94
+ if (!fs_1.default.existsSync(installScript)) {
95
+ console.error(`Windows install script not found at ${installScript}`);
96
+ process.exit(1);
97
+ }
98
+ console.log('Installing sentry daemon for Windows...');
99
+ const result = (0, child_process_1.spawnSync)('powershell', [
100
+ '-ExecutionPolicy', 'Bypass',
101
+ '-File', installScript,
102
+ ], {
103
+ stdio: 'inherit',
104
+ env: { ...process.env, SENTRY_VERSION: VERSION },
105
+ });
106
+ process.exit(result.status ?? 1);
107
+ }
75
108
  const scriptName = platform === 'darwin' ? 'install-sentry-macos.sh' : 'install-sentry.sh';
76
109
  const installScript = path_1.default.join(scriptsDir, scriptName);
77
110
  if (!fs_1.default.existsSync(installScript)) {
@@ -86,8 +119,29 @@ async function cmdInstall() {
86
119
  });
87
120
  process.exit(result.status ?? 1);
88
121
  }
122
+ async function cmdLaunch(args) {
123
+ const separatorIndex = args.indexOf('--');
124
+ const flagArgs = separatorIndex >= 0 ? args.slice(0, separatorIndex) : args.filter((arg) => arg.startsWith('--'));
125
+ const commandArgs = separatorIndex >= 0 ? args.slice(separatorIndex + 1) : args.filter((arg) => !arg.startsWith('--'));
126
+ const flags = parseFlags(flagArgs);
127
+ if (commandArgs.length === 0) {
128
+ console.error('launch requires a command after --');
129
+ process.exit(1);
130
+ }
131
+ const configPath = flag(flags, 'config', 'config-path');
132
+ const config = (0, config_1.loadConfig)(configPath);
133
+ const exitCode = await (0, launcher_1.launchWithSentry)(config, {
134
+ frameworkId: flag(flags, 'framework'),
135
+ profileName: flag(flags, 'profile'),
136
+ cwd: flag(flags, 'cwd'),
137
+ dryRun: flagEnabled(flags, 'dry-run', 'dryrun'),
138
+ command: commandArgs,
139
+ });
140
+ process.exit(exitCode);
141
+ }
89
142
  async function cmdStatus() {
90
- const paths = getConfigPaths(os_1.default.platform());
143
+ const platform = os_1.default.platform();
144
+ const paths = getConfigPaths(platform);
91
145
  // Try local API first
92
146
  const apiPorts = [9191];
93
147
  for (const port of apiPorts) {
@@ -107,6 +161,10 @@ async function cmdStatus() {
107
161
  console.log(` Decisions Denied: ${status.decisionsDenied}`);
108
162
  console.log(` Policy Version: ${status.policyVersion}`);
109
163
  console.log(` Last Sync: ${status.lastSyncAt || 'never'}`);
164
+ if (status.proxyEnabled) {
165
+ console.log(` Proxy Port: ${status.proxyPort}`);
166
+ console.log(` Redirect: ${status.redirectEnabled ? status.redirectStrategy : 'disabled'}`);
167
+ }
110
168
  console.log('');
111
169
  if (status.taggedProcesses > 0) {
112
170
  try {
@@ -131,12 +189,23 @@ async function cmdStatus() {
131
189
  }
132
190
  // Fallback: check if process is running
133
191
  try {
134
- const ps = (0, child_process_1.execSync)('pgrep -f neuroshield-sentryd', { encoding: 'utf8', timeout: 3000 }).trim();
135
- if (ps) {
136
- console.log('Sentry daemon process is running (pids: ' + ps + ')');
137
- console.log('Local API not responding daemon may still be starting up.');
138
- console.log(`Config: ${paths.config}`);
139
- console.log(`Logs: ${paths.log}`);
192
+ if (platform === 'win32') {
193
+ const result = (0, child_process_1.execSync)(`powershell -Command "Get-Process -Name 'node' -ErrorAction SilentlyContinue | Where-Object { $_.CommandLine -match 'sentry' } | Select-Object -ExpandProperty Id"`, { encoding: 'utf8', timeout: 5000 }).trim();
194
+ if (result) {
195
+ console.log('Sentry daemon process is running (pids: ' + result + ')');
196
+ console.log('Local API not responding — daemon may still be starting up.');
197
+ console.log(`Config: ${paths.config}`);
198
+ console.log(`Logs: ${paths.log}`);
199
+ }
200
+ }
201
+ else {
202
+ const ps = (0, child_process_1.execSync)('pgrep -f neuroshield-sentryd', { encoding: 'utf8', timeout: 3000 }).trim();
203
+ if (ps) {
204
+ console.log('Sentry daemon process is running (pids: ' + ps + ')');
205
+ console.log('Local API not responding — daemon may still be starting up.');
206
+ console.log(`Config: ${paths.config}`);
207
+ console.log(`Logs: ${paths.log}`);
208
+ }
140
209
  }
141
210
  }
142
211
  catch {
@@ -146,7 +215,10 @@ async function cmdStatus() {
146
215
  if (fs_1.default.existsSync(paths.config)) {
147
216
  console.log('Sentry daemon is NOT running.');
148
217
  console.log(`Config exists: ${paths.config}`);
149
- console.log('Start it with: sudo neuroshield-sentryd');
218
+ const startCmd = platform === 'win32'
219
+ ? 'net start NeuroShieldSentry'
220
+ : 'sudo neuroshield-sentryd';
221
+ console.log(`Start it with: ${startCmd}`);
150
222
  }
151
223
  else {
152
224
  console.log('Sentry daemon is NOT configured.');
@@ -188,12 +260,28 @@ function parseFlags(args) {
188
260
  for (const arg of args) {
189
261
  const match = arg.match(/^--(\w[\w-]*)(?:=(.*))?$/);
190
262
  if (match) {
191
- const key = match[1].replace(/-/g, '');
192
- flags[key] = match[2] ?? 'true';
263
+ const rawKey = match[1];
264
+ const normalizedKey = rawKey.replace(/-/g, '');
265
+ const value = match[2] ?? 'true';
266
+ flags[rawKey] = value;
267
+ flags[normalizedKey] = value;
193
268
  }
194
269
  }
195
270
  return flags;
196
271
  }
272
+ function flag(flags, ...names) {
273
+ for (const name of names) {
274
+ if (flags[name] !== undefined)
275
+ return flags[name];
276
+ const normalized = name.replace(/-/g, '');
277
+ if (flags[normalized] !== undefined)
278
+ return flags[normalized];
279
+ }
280
+ return undefined;
281
+ }
282
+ function flagEnabled(flags, ...names) {
283
+ return flag(flags, ...names) === 'true';
284
+ }
197
285
  function httpGet(url, timeout) {
198
286
  return new Promise((resolve, reject) => {
199
287
  const req = http_1.default.get(url, { timeout }, res => {
@@ -230,6 +318,9 @@ async function main() {
230
318
  case 'install':
231
319
  await cmdInstall();
232
320
  break;
321
+ case 'launch':
322
+ await cmdLaunch(rest);
323
+ break;
233
324
  case 'status':
234
325
  await cmdStatus();
235
326
  break;
@@ -249,8 +340,10 @@ async function main() {
249
340
  break;
250
341
  }
251
342
  }
252
- main().catch(err => {
253
- console.error('CLI error:', err.message);
254
- process.exit(1);
255
- });
343
+ if (require.main === module) {
344
+ main().catch(err => {
345
+ console.error('CLI error:', err.message);
346
+ process.exit(1);
347
+ });
348
+ }
256
349
  //# sourceMappingURL=cli.js.map