opena2a-cli 0.1.1 → 0.2.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 (119) hide show
  1. package/README.md +227 -3
  2. package/dist/adapters/registry.js +1 -1
  3. package/dist/adapters/registry.js.map +1 -1
  4. package/dist/commands/guard-hooks.d.ts +27 -0
  5. package/dist/commands/guard-hooks.d.ts.map +1 -0
  6. package/dist/commands/guard-hooks.js +207 -0
  7. package/dist/commands/guard-hooks.js.map +1 -0
  8. package/dist/commands/guard-policy.d.ts +54 -0
  9. package/dist/commands/guard-policy.d.ts.map +1 -0
  10. package/dist/commands/guard-policy.js +251 -0
  11. package/dist/commands/guard-policy.js.map +1 -0
  12. package/dist/commands/guard-signing.d.ts +52 -0
  13. package/dist/commands/guard-signing.d.ts.map +1 -0
  14. package/dist/commands/guard-signing.js +185 -0
  15. package/dist/commands/guard-signing.js.map +1 -0
  16. package/dist/commands/guard-snapshots.d.ts +54 -0
  17. package/dist/commands/guard-snapshots.d.ts.map +1 -0
  18. package/dist/commands/guard-snapshots.js +346 -0
  19. package/dist/commands/guard-snapshots.js.map +1 -0
  20. package/dist/commands/guard.d.ts +60 -4
  21. package/dist/commands/guard.d.ts.map +1 -1
  22. package/dist/commands/guard.js +475 -95
  23. package/dist/commands/guard.js.map +1 -1
  24. package/dist/commands/init.d.ts.map +1 -1
  25. package/dist/commands/init.js +77 -3
  26. package/dist/commands/init.js.map +1 -1
  27. package/dist/commands/protect.d.ts +2 -0
  28. package/dist/commands/protect.d.ts.map +1 -1
  29. package/dist/commands/protect.js +56 -10
  30. package/dist/commands/protect.js.map +1 -1
  31. package/dist/commands/runtime.d.ts +1 -1
  32. package/dist/commands/runtime.js +5 -5
  33. package/dist/commands/runtime.js.map +1 -1
  34. package/dist/commands/self-register.js +6 -6
  35. package/dist/commands/self-register.js.map +1 -1
  36. package/dist/commands/shield.d.ts +39 -0
  37. package/dist/commands/shield.d.ts.map +1 -0
  38. package/dist/commands/shield.js +1262 -0
  39. package/dist/commands/shield.js.map +1 -0
  40. package/dist/commands/verify.js +1 -1
  41. package/dist/commands/verify.js.map +1 -1
  42. package/dist/index.js +41 -3
  43. package/dist/index.js.map +1 -1
  44. package/dist/router.d.ts.map +1 -1
  45. package/dist/router.js +1 -0
  46. package/dist/router.js.map +1 -1
  47. package/dist/shield/arp-bridge.d.ts +62 -0
  48. package/dist/shield/arp-bridge.d.ts.map +1 -0
  49. package/dist/shield/arp-bridge.js +198 -0
  50. package/dist/shield/arp-bridge.js.map +1 -0
  51. package/dist/shield/baselines.d.ts +58 -0
  52. package/dist/shield/baselines.d.ts.map +1 -0
  53. package/dist/shield/baselines.js +371 -0
  54. package/dist/shield/baselines.js.map +1 -0
  55. package/dist/shield/detect.d.ts +18 -0
  56. package/dist/shield/detect.d.ts.map +1 -0
  57. package/dist/shield/detect.js +402 -0
  58. package/dist/shield/detect.js.map +1 -0
  59. package/dist/shield/events.d.ts +65 -0
  60. package/dist/shield/events.d.ts.map +1 -0
  61. package/dist/shield/events.js +342 -0
  62. package/dist/shield/events.js.map +1 -0
  63. package/dist/shield/findings.d.ts +52 -0
  64. package/dist/shield/findings.d.ts.map +1 -0
  65. package/dist/shield/findings.js +336 -0
  66. package/dist/shield/findings.js.map +1 -0
  67. package/dist/shield/init.d.ts +22 -0
  68. package/dist/shield/init.d.ts.map +1 -0
  69. package/dist/shield/init.js +290 -0
  70. package/dist/shield/init.js.map +1 -0
  71. package/dist/shield/integrity.d.ts +75 -0
  72. package/dist/shield/integrity.d.ts.map +1 -0
  73. package/dist/shield/integrity.js +439 -0
  74. package/dist/shield/integrity.js.map +1 -0
  75. package/dist/shield/llm-backend.d.ts +36 -0
  76. package/dist/shield/llm-backend.d.ts.map +1 -0
  77. package/dist/shield/llm-backend.js +145 -0
  78. package/dist/shield/llm-backend.js.map +1 -0
  79. package/dist/shield/llm.d.ts +116 -0
  80. package/dist/shield/llm.d.ts.map +1 -0
  81. package/dist/shield/llm.js +536 -0
  82. package/dist/shield/llm.js.map +1 -0
  83. package/dist/shield/policy.d.ts +70 -0
  84. package/dist/shield/policy.d.ts.map +1 -0
  85. package/dist/shield/policy.js +399 -0
  86. package/dist/shield/policy.js.map +1 -0
  87. package/dist/shield/report-html.d.ts +29 -0
  88. package/dist/shield/report-html.d.ts.map +1 -0
  89. package/dist/shield/report-html.js +596 -0
  90. package/dist/shield/report-html.js.map +1 -0
  91. package/dist/shield/sarif.d.ts +65 -0
  92. package/dist/shield/sarif.d.ts.map +1 -0
  93. package/dist/shield/sarif.js +108 -0
  94. package/dist/shield/sarif.js.map +1 -0
  95. package/dist/shield/session.d.ts +63 -0
  96. package/dist/shield/session.d.ts.map +1 -0
  97. package/dist/shield/session.js +242 -0
  98. package/dist/shield/session.js.map +1 -0
  99. package/dist/shield/signing.d.ts +41 -0
  100. package/dist/shield/signing.d.ts.map +1 -0
  101. package/dist/shield/signing.js +161 -0
  102. package/dist/shield/signing.js.map +1 -0
  103. package/dist/shield/status.d.ts +4 -0
  104. package/dist/shield/status.d.ts.map +1 -0
  105. package/dist/shield/status.js +241 -0
  106. package/dist/shield/status.js.map +1 -0
  107. package/dist/shield/types.d.ts +416 -0
  108. package/dist/shield/types.d.ts.map +1 -0
  109. package/dist/shield/types.js +32 -0
  110. package/dist/shield/types.js.map +1 -0
  111. package/dist/util/drift-liveness.d.ts +37 -0
  112. package/dist/util/drift-liveness.d.ts.map +1 -0
  113. package/dist/util/drift-liveness.js +114 -0
  114. package/dist/util/drift-liveness.js.map +1 -0
  115. package/dist/util/drift-verification.d.ts +60 -0
  116. package/dist/util/drift-verification.d.ts.map +1 -0
  117. package/dist/util/drift-verification.js +457 -0
  118. package/dist/util/drift-verification.js.map +1 -0
  119. package/package.json +4 -2
@@ -0,0 +1,416 @@
1
+ export type ProjectType = 'node' | 'go' | 'python' | 'unknown';
2
+ export interface DetectedCli {
3
+ name: string;
4
+ path: string;
5
+ version: string | null;
6
+ configDir: string | null;
7
+ hasCredentials: boolean;
8
+ }
9
+ export interface DetectedAssistant {
10
+ name: string;
11
+ detected: boolean;
12
+ method: 'process' | 'env' | 'config';
13
+ detail: string;
14
+ configPaths: string[];
15
+ }
16
+ export interface DetectedMcpServer {
17
+ name: string;
18
+ source: string;
19
+ command: string;
20
+ args: string[];
21
+ env: Record<string, string>;
22
+ tools: string[];
23
+ }
24
+ export interface DetectedOAuthSession {
25
+ provider: string;
26
+ configDir: string;
27
+ hasActiveSession: boolean;
28
+ lastModified: string | null;
29
+ scopes: string[];
30
+ }
31
+ export interface EnvironmentScan {
32
+ timestamp: string;
33
+ hostname: string;
34
+ platform: string;
35
+ shell: string;
36
+ clis: DetectedCli[];
37
+ assistants: DetectedAssistant[];
38
+ mcpServers: DetectedMcpServer[];
39
+ oauthSessions: DetectedOAuthSession[];
40
+ projectType: ProjectType;
41
+ projectName: string | null;
42
+ }
43
+ export type ShieldEventSource = 'secretless' | 'arp' | 'browser-guard' | 'hma' | 'registry' | 'configguard' | 'shield';
44
+ export type EventSeverity = 'info' | 'low' | 'medium' | 'high' | 'critical';
45
+ export type EventOutcome = 'allowed' | 'blocked' | 'monitored';
46
+ export type RiskLevel = 'CRITICAL' | 'HIGH' | 'MEDIUM' | 'LOW' | 'SECURE';
47
+ export interface ShieldEvent {
48
+ id: string;
49
+ timestamp: string;
50
+ version: 1;
51
+ source: ShieldEventSource;
52
+ category: string;
53
+ severity: EventSeverity;
54
+ agent: string | null;
55
+ sessionId: string | null;
56
+ action: string;
57
+ target: string;
58
+ outcome: EventOutcome;
59
+ detail: Record<string, unknown>;
60
+ prevHash: string;
61
+ eventHash: string;
62
+ orgId: string | null;
63
+ managed: boolean;
64
+ agentId: string | null;
65
+ }
66
+ export type PolicyMode = 'adaptive' | 'monitor' | 'enforce';
67
+ export interface PolicyRules {
68
+ credentials: {
69
+ allow: string[];
70
+ deny: string[];
71
+ };
72
+ processes: {
73
+ allow: string[];
74
+ deny: string[];
75
+ };
76
+ network: {
77
+ allow: string[];
78
+ deny: string[];
79
+ };
80
+ filesystem: {
81
+ allow: string[];
82
+ deny: string[];
83
+ };
84
+ mcpServers: {
85
+ allow: string[];
86
+ deny: string[];
87
+ };
88
+ supplyChain: {
89
+ requireTrustScore: number;
90
+ blockAdvisories: boolean;
91
+ };
92
+ }
93
+ export interface ShieldPolicy {
94
+ version: 1;
95
+ mode: PolicyMode;
96
+ default: PolicyRules;
97
+ agents: Record<string, Partial<PolicyRules>>;
98
+ }
99
+ export interface PolicyDecision {
100
+ allowed: boolean;
101
+ outcome: EventOutcome;
102
+ rule: string;
103
+ agent: string | null;
104
+ }
105
+ /**
106
+ * Adaptive enforcement uses continuous learning with graduated confidence.
107
+ * Shield never stops learning. It starts suggesting policies once behavior
108
+ * is statistically stable (no new binaries/credentials for N consecutive
109
+ * sessions). It never blocks automatically -- the developer must approve.
110
+ *
111
+ * Phase transitions:
112
+ * learn -> suggest: behavior stabilized (stability score >= 0.8)
113
+ * suggest -> protect: developer approved recommended policy
114
+ * protect (ongoing): continues learning, prompts for never-seen actions
115
+ *
116
+ * Stability is measured by "new behavior rate": if the agent hasn't used
117
+ * a new binary or accessed a new credential in the last 5 sessions,
118
+ * the baseline is considered stable enough to recommend a policy.
119
+ */
120
+ export interface AgentBaseline {
121
+ agent: string;
122
+ observationStart: string;
123
+ observationEnd: string;
124
+ totalActions: number;
125
+ totalSessions: number;
126
+ phase: 'learn' | 'suggest' | 'protect';
127
+ stabilityScore: number;
128
+ lastNewBehaviorAt: string | null;
129
+ observed: {
130
+ processes: Record<string, number>;
131
+ credentials: Record<string, number>;
132
+ filesystemPaths: Record<string, number>;
133
+ networkHosts: Record<string, number>;
134
+ mcpServers: Record<string, number>;
135
+ };
136
+ recommended: Partial<PolicyRules> | null;
137
+ thresholds: {
138
+ maxProcessesPerHour: number;
139
+ maxCredentialAccessPerSession: number;
140
+ maxNewBinariesPerDay: number;
141
+ };
142
+ }
143
+ export type SessionSignalType = 'env' | 'process' | 'tty' | 'pid' | 'hook' | 'timing';
144
+ export interface SessionSignal {
145
+ type: SessionSignalType;
146
+ name: string;
147
+ value: string;
148
+ confidence: number;
149
+ }
150
+ export interface SessionIdentity {
151
+ sessionId: string;
152
+ agent: string;
153
+ confidence: number;
154
+ signals: SessionSignal[];
155
+ startedAt: string;
156
+ lastSeenAt: string;
157
+ }
158
+ export type IntegrityStatus = 'healthy' | 'degraded' | 'compromised' | 'lockdown';
159
+ export interface IntegrityCheck {
160
+ name: string;
161
+ status: 'pass' | 'warn' | 'fail';
162
+ detail: string;
163
+ checkedAt: string;
164
+ }
165
+ export interface IntegrityState {
166
+ status: IntegrityStatus;
167
+ checks: IntegrityCheck[];
168
+ lastVerified: string;
169
+ chainHash: string;
170
+ }
171
+ export interface AgentActivitySummary {
172
+ sessions: number;
173
+ actions: number;
174
+ firstSeen: string;
175
+ lastSeen: string;
176
+ topActions: {
177
+ action: string;
178
+ count: number;
179
+ }[];
180
+ }
181
+ export interface PolicyViolation {
182
+ action: string;
183
+ target: string;
184
+ agent: string;
185
+ count: number;
186
+ severity: EventSeverity;
187
+ recommendation: string;
188
+ findingId?: string;
189
+ remediationCommand?: string;
190
+ compliance?: string[];
191
+ }
192
+ export interface PostureFactor {
193
+ name: string;
194
+ score: number;
195
+ weight: number;
196
+ detail: string;
197
+ }
198
+ export interface ComparativeMetric {
199
+ percentile: number;
200
+ sampleSize: number;
201
+ optInDate: string;
202
+ }
203
+ export interface PostureTrend {
204
+ previousScore: number;
205
+ previousGrade: string;
206
+ delta: number;
207
+ direction: 'improving' | 'declining' | 'stable';
208
+ periodDays: number;
209
+ }
210
+ export interface PostureScore {
211
+ score: number;
212
+ grade: string;
213
+ factors: PostureFactor[];
214
+ trend: PostureTrend | null;
215
+ comparative: ComparativeMetric | null;
216
+ }
217
+ export interface ReportSnapshot {
218
+ timestamp: string;
219
+ score: number;
220
+ grade: string;
221
+ findingCounts: Record<string, number>;
222
+ totalFindings: number;
223
+ }
224
+ export interface WeeklyReport {
225
+ version: 1;
226
+ generatedAt: string;
227
+ periodStart: string;
228
+ periodEnd: string;
229
+ hostname: string;
230
+ agentActivity: {
231
+ totalSessions: number;
232
+ totalActions: number;
233
+ byAgent: Record<string, AgentActivitySummary>;
234
+ };
235
+ policyEvaluation: {
236
+ monitored: number;
237
+ wouldBlock: number;
238
+ blocked: number;
239
+ topViolations: PolicyViolation[];
240
+ };
241
+ credentialExposure: {
242
+ accessAttempts: number;
243
+ uniqueCredentials: number;
244
+ byProvider: Record<string, number>;
245
+ recommendations: string[];
246
+ };
247
+ supplyChain: {
248
+ packagesInstalled: number;
249
+ advisoriesFound: number;
250
+ blockedInstalls: number;
251
+ lowTrustPackages: string[];
252
+ };
253
+ configIntegrity: {
254
+ filesMonitored: number;
255
+ tamperedFiles: string[];
256
+ signatureStatus: 'valid' | 'tampered' | 'unsigned';
257
+ };
258
+ runtimeProtection: {
259
+ arpActive: boolean;
260
+ processesSpawned: number;
261
+ networkConnections: number;
262
+ anomalies: number;
263
+ };
264
+ posture: PostureScore;
265
+ }
266
+ export interface ProductStatus {
267
+ name: string;
268
+ installed: boolean;
269
+ active: boolean;
270
+ version: string | null;
271
+ keyMetric: string;
272
+ }
273
+ export interface ShieldStatus {
274
+ timestamp: string;
275
+ products: ProductStatus[];
276
+ policyLoaded: boolean;
277
+ policyMode: PolicyMode | null;
278
+ shellIntegration: boolean;
279
+ integrityStatus: IntegrityStatus;
280
+ lastReportScore: number | null;
281
+ lastReportDate: string | null;
282
+ }
283
+ export type ShieldSubcommand = 'init' | 'status' | 'log' | 'report' | 'check' | 'policy' | 'evaluate' | 'selfcheck' | 'recover';
284
+ export interface ShieldOptions {
285
+ subcommand: ShieldSubcommand;
286
+ targetDir?: string;
287
+ agent?: string;
288
+ count?: number;
289
+ since?: string;
290
+ severity?: string;
291
+ source?: string;
292
+ category?: string;
293
+ ci?: boolean;
294
+ format?: string;
295
+ verbose?: boolean;
296
+ verify?: boolean;
297
+ reset?: boolean;
298
+ forensic?: boolean;
299
+ analyze?: boolean;
300
+ }
301
+ export interface ShieldUserConfig {
302
+ initialized: boolean;
303
+ shellIntegration: {
304
+ enabled: boolean;
305
+ shell: 'zsh' | 'bash' | 'fish' | null;
306
+ installedAt: string | null;
307
+ };
308
+ report: {
309
+ scheduled: boolean;
310
+ scheduledDay: number;
311
+ scheduledHour: number;
312
+ lastGenerated: string | null;
313
+ };
314
+ }
315
+ export type LlmAnalysisType = 'policy-suggestion' | 'anomaly-explanation' | 'report-narrative' | 'incident-triage';
316
+ export interface PolicySuggestion {
317
+ agent: string;
318
+ rules: Partial<PolicyRules>;
319
+ reasoning: string;
320
+ confidence: number;
321
+ basedOnActions: number;
322
+ basedOnSessions: number;
323
+ }
324
+ export interface AnomalyExplanation {
325
+ eventId: string;
326
+ severity: EventSeverity;
327
+ explanation: string;
328
+ riskFactors: string[];
329
+ suggestedAction: 'ignore' | 'investigate' | 'block';
330
+ }
331
+ export interface ReportNarrative {
332
+ summary: string;
333
+ highlights: string[];
334
+ concerns: string[];
335
+ recommendations: string[];
336
+ }
337
+ export interface IncidentTriage {
338
+ eventIds: string[];
339
+ classification: 'false-positive' | 'suspicious' | 'confirmed-threat';
340
+ severity: EventSeverity;
341
+ explanation: string;
342
+ responseSteps: string[];
343
+ }
344
+ export interface LlmCacheEntry {
345
+ key: string;
346
+ analysisType: LlmAnalysisType;
347
+ result: PolicySuggestion | AnomalyExplanation | ReportNarrative | IncidentTriage;
348
+ createdAt: string;
349
+ ttlMs: number;
350
+ inputTokens: number;
351
+ outputTokens: number;
352
+ }
353
+ export interface LlmCache {
354
+ version: 1;
355
+ entries: LlmCacheEntry[];
356
+ }
357
+ export type LlmBackend = 'claude-code' | 'api' | 'none';
358
+ export interface LlmResponse {
359
+ text: string;
360
+ inputTokens: number;
361
+ outputTokens: number;
362
+ backend: LlmBackend;
363
+ }
364
+ export interface ShieldSignature {
365
+ filePath: string;
366
+ hash: string;
367
+ signedAt: string;
368
+ signedBy: string;
369
+ fileSize: number;
370
+ }
371
+ export interface ShieldSignatureStore {
372
+ version: 1;
373
+ signatures: ShieldSignature[];
374
+ updatedAt: string;
375
+ }
376
+ export interface RegistryIntelligence {
377
+ /** Check if a package/binary is known-safe or flagged */
378
+ checkReputation(target: string): Promise<ReputationResult | null>;
379
+ /** Get threat feed for policy enrichment */
380
+ getThreatFeed(): Promise<ThreatFeedEntry[]>;
381
+ }
382
+ export interface ReputationResult {
383
+ target: string;
384
+ trustScore: number;
385
+ advisories: string[];
386
+ lastScanned: string;
387
+ }
388
+ export interface ThreatFeedEntry {
389
+ indicator: string;
390
+ type: 'package' | 'binary' | 'domain';
391
+ severity: EventSeverity;
392
+ description: string;
393
+ }
394
+ export declare const SHIELD_DIR = ".opena2a/shield";
395
+ export declare const SHIELD_SIGNATURES_FILE = "signatures.json";
396
+ export declare const SHIELD_EVENTS_FILE = "events.jsonl";
397
+ export declare const SHIELD_POLICY_FILE = "policy.yaml";
398
+ export declare const SHIELD_POLICY_CACHE = "policy-cache.json";
399
+ export declare const SHIELD_SCAN_FILE = "scan.json";
400
+ export declare const SHIELD_CONFIG_FILE = "config.json";
401
+ export declare const SHIELD_BASELINES_DIR = "baselines";
402
+ export declare const SHIELD_REPORTS_DIR = "reports";
403
+ export declare const SHIELD_SNAPSHOTS_FILE = "snapshots.jsonl";
404
+ export declare const SHIELD_LLM_CACHE_FILE = "llm-cache.json";
405
+ export declare const LLM_CACHE_TTL_POLICY: number;
406
+ export declare const LLM_CACHE_TTL_ANOMALY: number;
407
+ export declare const LLM_CACHE_TTL_NARRATIVE: number;
408
+ export declare const LLM_CACHE_TTL_TRIAGE: number;
409
+ export declare const MAX_EVENTS_FILE_SIZE: number;
410
+ export declare const STABILITY_THRESHOLD = 0.8;
411
+ export declare const STABILITY_WINDOW_SESSIONS = 5;
412
+ export declare const LEARN_PHASE_MIN_ACTIONS = 50;
413
+ export declare const LEARN_PHASE_MIN_SESSIONS = 3;
414
+ export declare const SESSION_TIMEOUT_MS: number;
415
+ export declare const EVALUATE_BUDGET_MS = 50;
416
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/shield/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,32 @@
1
+ "use strict";
2
+ // Shield: Unified Developer Workstation Security Orchestration
3
+ // All TypeScript interfaces for the Shield module.
4
+ Object.defineProperty(exports, "__esModule", { value: true });
5
+ exports.EVALUATE_BUDGET_MS = exports.SESSION_TIMEOUT_MS = exports.LEARN_PHASE_MIN_SESSIONS = exports.LEARN_PHASE_MIN_ACTIONS = exports.STABILITY_WINDOW_SESSIONS = exports.STABILITY_THRESHOLD = exports.MAX_EVENTS_FILE_SIZE = exports.LLM_CACHE_TTL_TRIAGE = exports.LLM_CACHE_TTL_NARRATIVE = exports.LLM_CACHE_TTL_ANOMALY = exports.LLM_CACHE_TTL_POLICY = exports.SHIELD_LLM_CACHE_FILE = exports.SHIELD_SNAPSHOTS_FILE = exports.SHIELD_REPORTS_DIR = exports.SHIELD_BASELINES_DIR = exports.SHIELD_CONFIG_FILE = exports.SHIELD_SCAN_FILE = exports.SHIELD_POLICY_CACHE = exports.SHIELD_POLICY_FILE = exports.SHIELD_EVENTS_FILE = exports.SHIELD_SIGNATURES_FILE = exports.SHIELD_DIR = void 0;
6
+ // --- Constants ---
7
+ exports.SHIELD_DIR = '.opena2a/shield';
8
+ exports.SHIELD_SIGNATURES_FILE = 'signatures.json';
9
+ exports.SHIELD_EVENTS_FILE = 'events.jsonl';
10
+ exports.SHIELD_POLICY_FILE = 'policy.yaml';
11
+ exports.SHIELD_POLICY_CACHE = 'policy-cache.json';
12
+ exports.SHIELD_SCAN_FILE = 'scan.json';
13
+ exports.SHIELD_CONFIG_FILE = 'config.json';
14
+ exports.SHIELD_BASELINES_DIR = 'baselines';
15
+ exports.SHIELD_REPORTS_DIR = 'reports';
16
+ exports.SHIELD_SNAPSHOTS_FILE = 'snapshots.jsonl';
17
+ exports.SHIELD_LLM_CACHE_FILE = 'llm-cache.json';
18
+ // LLM cache TTLs (milliseconds)
19
+ exports.LLM_CACHE_TTL_POLICY = 24 * 60 * 60 * 1000; // 24h
20
+ exports.LLM_CACHE_TTL_ANOMALY = 7 * 24 * 60 * 60 * 1000; // 7d
21
+ exports.LLM_CACHE_TTL_NARRATIVE = 30 * 24 * 60 * 60 * 1000; // 30d (per report)
22
+ exports.LLM_CACHE_TTL_TRIAGE = 60 * 60 * 1000; // 1h
23
+ exports.MAX_EVENTS_FILE_SIZE = 10 * 1024 * 1024; // 10MB
24
+ // Adaptive enforcement: continuous learning, not timer-based.
25
+ // Suggestions appear when behavior stabilizes, not after a fixed period.
26
+ exports.STABILITY_THRESHOLD = 0.8; // suggest policy when stability >= this
27
+ exports.STABILITY_WINDOW_SESSIONS = 5; // sessions without new behavior = stable
28
+ exports.LEARN_PHASE_MIN_ACTIONS = 50; // minimum actions before stability is checked
29
+ exports.LEARN_PHASE_MIN_SESSIONS = 3; // minimum sessions before stability is checked
30
+ exports.SESSION_TIMEOUT_MS = 30 * 60 * 1000; // 30 minutes
31
+ exports.EVALUATE_BUDGET_MS = 50;
32
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/shield/types.ts"],"names":[],"mappings":";AAAA,+DAA+D;AAC/D,mDAAmD;;;AAmenD,oBAAoB;AAEP,QAAA,UAAU,GAAG,iBAAiB,CAAC;AAC/B,QAAA,sBAAsB,GAAG,iBAAiB,CAAC;AAC3C,QAAA,kBAAkB,GAAG,cAAc,CAAC;AACpC,QAAA,kBAAkB,GAAG,aAAa,CAAC;AACnC,QAAA,mBAAmB,GAAG,mBAAmB,CAAC;AAC1C,QAAA,gBAAgB,GAAG,WAAW,CAAC;AAC/B,QAAA,kBAAkB,GAAG,aAAa,CAAC;AACnC,QAAA,oBAAoB,GAAG,WAAW,CAAC;AACnC,QAAA,kBAAkB,GAAG,SAAS,CAAC;AAC/B,QAAA,qBAAqB,GAAG,iBAAiB,CAAC;AAC1C,QAAA,qBAAqB,GAAG,gBAAgB,CAAC;AAEtD,gCAAgC;AACnB,QAAA,oBAAoB,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,CAAM,MAAM;AACvD,QAAA,qBAAqB,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC,KAAK;AACtD,QAAA,uBAAuB,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC,mBAAmB;AACvE,QAAA,oBAAoB,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,CAAY,KAAK;AAEvD,QAAA,oBAAoB,GAAG,EAAE,GAAG,IAAI,GAAG,IAAI,CAAC,CAAC,OAAO;AAE7D,8DAA8D;AAC9D,yEAAyE;AAC5D,QAAA,mBAAmB,GAAG,GAAG,CAAC,CAAC,wCAAwC;AACnE,QAAA,yBAAyB,GAAG,CAAC,CAAC,CAAC,yCAAyC;AACxE,QAAA,uBAAuB,GAAG,EAAE,CAAC,CAAC,8CAA8C;AAC5E,QAAA,wBAAwB,GAAG,CAAC,CAAC,CAAC,+CAA+C;AAE7E,QAAA,kBAAkB,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC,aAAa;AAClD,QAAA,kBAAkB,GAAG,EAAE,CAAC"}
@@ -0,0 +1,37 @@
1
+ /**
2
+ * Drift liveness verification — confirms whether a detected credential
3
+ * actually grants access to AI/ML services (scope drift).
4
+ *
5
+ * DRIFT-001: Google API Key -> Gemini Generative Language API
6
+ * DRIFT-002: AWS Access Key -> no liveness check (requires secret key)
7
+ */
8
+ export interface LivenessResult {
9
+ /** Whether the credential confirmed access to the AI service */
10
+ confirmed: boolean;
11
+ /** HTTP status code from the verification request */
12
+ statusCode?: number;
13
+ /** Human-readable detail (e.g., model names found) */
14
+ details?: string;
15
+ /** Error message if the check failed to complete */
16
+ error?: string;
17
+ }
18
+ /** Timeout for each liveness HTTP request (ms) */
19
+ export declare const LIVENESS_TIMEOUT = 5000;
20
+ /** Delay between consecutive liveness checks to avoid rate limiting (ms) */
21
+ export declare const LIVENESS_DELAY = 500;
22
+ /** Maximum number of liveness checks per scan run */
23
+ export declare const MAX_LIVENESS_CHECKS = 5;
24
+ /**
25
+ * Verify whether a Google API key grants access to the Gemini Generative
26
+ * Language API by listing available models.
27
+ *
28
+ * GET {baseUrl}/v1beta/models?key={KEY}
29
+ * - 200 with model list -> confirmed (scope drift to AI)
30
+ * - 401/403 -> not confirmed (key restricted)
31
+ * - timeout/error -> not confirmed (inconclusive)
32
+ *
33
+ * @param apiKey The Google API key value
34
+ * @param baseUrl Override for testing (default: generativelanguage.googleapis.com)
35
+ */
36
+ export declare function verifyGeminiAccess(apiKey: string, baseUrl?: string): Promise<LivenessResult>;
37
+ //# sourceMappingURL=drift-liveness.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"drift-liveness.d.ts","sourceRoot":"","sources":["../../src/util/drift-liveness.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAOH,MAAM,WAAW,cAAc;IAC7B,gEAAgE;IAChE,SAAS,EAAE,OAAO,CAAC;IACnB,qDAAqD;IACrD,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,sDAAsD;IACtD,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,oDAAoD;IACpD,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAID,kDAAkD;AAClD,eAAO,MAAM,gBAAgB,OAAO,CAAC;AAErC,4EAA4E;AAC5E,eAAO,MAAM,cAAc,MAAM,CAAC;AAElC,qDAAqD;AACrD,eAAO,MAAM,mBAAmB,IAAI,CAAC;AAIrC;;;;;;;;;;;GAWG;AACH,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,MAAM,EACd,OAAO,CAAC,EAAE,MAAM,GACf,OAAO,CAAC,cAAc,CAAC,CAmDzB"}
@@ -0,0 +1,114 @@
1
+ "use strict";
2
+ /**
3
+ * Drift liveness verification — confirms whether a detected credential
4
+ * actually grants access to AI/ML services (scope drift).
5
+ *
6
+ * DRIFT-001: Google API Key -> Gemini Generative Language API
7
+ * DRIFT-002: AWS Access Key -> no liveness check (requires secret key)
8
+ */
9
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ var desc = Object.getOwnPropertyDescriptor(m, k);
12
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
13
+ desc = { enumerable: true, get: function() { return m[k]; } };
14
+ }
15
+ Object.defineProperty(o, k2, desc);
16
+ }) : (function(o, m, k, k2) {
17
+ if (k2 === undefined) k2 = k;
18
+ o[k2] = m[k];
19
+ }));
20
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
21
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
22
+ }) : function(o, v) {
23
+ o["default"] = v;
24
+ });
25
+ var __importStar = (this && this.__importStar) || (function () {
26
+ var ownKeys = function(o) {
27
+ ownKeys = Object.getOwnPropertyNames || function (o) {
28
+ var ar = [];
29
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
30
+ return ar;
31
+ };
32
+ return ownKeys(o);
33
+ };
34
+ return function (mod) {
35
+ if (mod && mod.__esModule) return mod;
36
+ var result = {};
37
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
38
+ __setModuleDefault(result, mod);
39
+ return result;
40
+ };
41
+ })();
42
+ Object.defineProperty(exports, "__esModule", { value: true });
43
+ exports.MAX_LIVENESS_CHECKS = exports.LIVENESS_DELAY = exports.LIVENESS_TIMEOUT = void 0;
44
+ exports.verifyGeminiAccess = verifyGeminiAccess;
45
+ const https = __importStar(require("node:https"));
46
+ const http = __importStar(require("node:http"));
47
+ // --- Constants ---
48
+ /** Timeout for each liveness HTTP request (ms) */
49
+ exports.LIVENESS_TIMEOUT = 5000;
50
+ /** Delay between consecutive liveness checks to avoid rate limiting (ms) */
51
+ exports.LIVENESS_DELAY = 500;
52
+ /** Maximum number of liveness checks per scan run */
53
+ exports.MAX_LIVENESS_CHECKS = 5;
54
+ // --- Gemini liveness ---
55
+ /**
56
+ * Verify whether a Google API key grants access to the Gemini Generative
57
+ * Language API by listing available models.
58
+ *
59
+ * GET {baseUrl}/v1beta/models?key={KEY}
60
+ * - 200 with model list -> confirmed (scope drift to AI)
61
+ * - 401/403 -> not confirmed (key restricted)
62
+ * - timeout/error -> not confirmed (inconclusive)
63
+ *
64
+ * @param apiKey The Google API key value
65
+ * @param baseUrl Override for testing (default: generativelanguage.googleapis.com)
66
+ */
67
+ function verifyGeminiAccess(apiKey, baseUrl) {
68
+ const host = baseUrl ?? 'https://generativelanguage.googleapis.com';
69
+ const url = `${host}/v1beta/models?key=${apiKey}`;
70
+ return new Promise((resolve) => {
71
+ const transport = url.startsWith('https') ? https : http;
72
+ const req = transport.get(url, { timeout: exports.LIVENESS_TIMEOUT }, (res) => {
73
+ const chunks = [];
74
+ res.on('data', (chunk) => chunks.push(chunk));
75
+ res.on('end', () => {
76
+ const statusCode = res.statusCode ?? 0;
77
+ if (statusCode === 200) {
78
+ try {
79
+ const body = JSON.parse(Buffer.concat(chunks).toString('utf-8'));
80
+ const models = (body.models ?? [])
81
+ .slice(0, 3)
82
+ .map((m) => m.name ?? 'unknown');
83
+ resolve({
84
+ confirmed: true,
85
+ statusCode,
86
+ details: `Active Gemini access: ${models.join(', ')}`,
87
+ });
88
+ }
89
+ catch {
90
+ resolve({
91
+ confirmed: true,
92
+ statusCode,
93
+ details: 'Active Gemini access (response parsed partially)',
94
+ });
95
+ }
96
+ }
97
+ else {
98
+ resolve({
99
+ confirmed: false,
100
+ statusCode,
101
+ });
102
+ }
103
+ });
104
+ });
105
+ req.on('timeout', () => {
106
+ req.destroy();
107
+ resolve({ confirmed: false, error: 'Liveness check timed out' });
108
+ });
109
+ req.on('error', (err) => {
110
+ resolve({ confirmed: false, error: err.message });
111
+ });
112
+ });
113
+ }
114
+ //# sourceMappingURL=drift-liveness.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"drift-liveness.js","sourceRoot":"","sources":["../../src/util/drift-liveness.ts"],"names":[],"mappings":";AAAA;;;;;;GAMG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA2CH,gDAsDC;AA/FD,kDAAoC;AACpC,gDAAkC;AAelC,oBAAoB;AAEpB,kDAAkD;AACrC,QAAA,gBAAgB,GAAG,IAAI,CAAC;AAErC,4EAA4E;AAC/D,QAAA,cAAc,GAAG,GAAG,CAAC;AAElC,qDAAqD;AACxC,QAAA,mBAAmB,GAAG,CAAC,CAAC;AAErC,0BAA0B;AAE1B;;;;;;;;;;;GAWG;AACH,SAAgB,kBAAkB,CAChC,MAAc,EACd,OAAgB;IAEhB,MAAM,IAAI,GAAG,OAAO,IAAI,2CAA2C,CAAC;IACpE,MAAM,GAAG,GAAG,GAAG,IAAI,sBAAsB,MAAM,EAAE,CAAC;IAElD,OAAO,IAAI,OAAO,CAAiB,CAAC,OAAO,EAAE,EAAE;QAC7C,MAAM,SAAS,GAAG,GAAG,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC;QAEzD,MAAM,GAAG,GAAG,SAAS,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,OAAO,EAAE,wBAAgB,EAAE,EAAE,CAAC,GAAG,EAAE,EAAE;YACpE,MAAM,MAAM,GAAa,EAAE,CAAC;YAE5B,GAAG,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,KAAa,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;YAEtD,GAAG,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE;gBACjB,MAAM,UAAU,GAAG,GAAG,CAAC,UAAU,IAAI,CAAC,CAAC;gBAEvC,IAAI,UAAU,KAAK,GAAG,EAAE,CAAC;oBACvB,IAAI,CAAC;wBACH,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC;wBACjE,MAAM,MAAM,GAAa,CAAC,IAAI,CAAC,MAAM,IAAI,EAAE,CAAC;6BACzC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;6BACX,GAAG,CAAC,CAAC,CAAoB,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI,SAAS,CAAC,CAAC;wBACtD,OAAO,CAAC;4BACN,SAAS,EAAE,IAAI;4BACf,UAAU;4BACV,OAAO,EAAE,yBAAyB,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;yBACtD,CAAC,CAAC;oBACL,CAAC;oBAAC,MAAM,CAAC;wBACP,OAAO,CAAC;4BACN,SAAS,EAAE,IAAI;4BACf,UAAU;4BACV,OAAO,EAAE,kDAAkD;yBAC5D,CAAC,CAAC;oBACL,CAAC;gBACH,CAAC;qBAAM,CAAC;oBACN,OAAO,CAAC;wBACN,SAAS,EAAE,KAAK;wBAChB,UAAU;qBACX,CAAC,CAAC;gBACL,CAAC;YACH,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,GAAG,CAAC,EAAE,CAAC,SAAS,EAAE,GAAG,EAAE;YACrB,GAAG,CAAC,OAAO,EAAE,CAAC;YACd,OAAO,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,KAAK,EAAE,0BAA0B,EAAE,CAAC,CAAC;QACnE,CAAC,CAAC,CAAC;QAEH,GAAG,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,GAAU,EAAE,EAAE;YAC7B,OAAO,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;QACpD,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC"}