@highflame/overwatch 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (156) hide show
  1. package/README.md +337 -0
  2. package/bin/overwatch +12 -0
  3. package/dist/auth/cli-oauth.d.ts +13 -0
  4. package/dist/auth/cli-oauth.d.ts.map +1 -0
  5. package/dist/auth/html-utils.d.ts +20 -0
  6. package/dist/auth/html-utils.d.ts.map +1 -0
  7. package/dist/auth/index.d.ts +10 -0
  8. package/dist/auth/index.d.ts.map +1 -0
  9. package/dist/auth/oauth.d.ts +81 -0
  10. package/dist/auth/oauth.d.ts.map +1 -0
  11. package/dist/auth/pkce.d.ts +26 -0
  12. package/dist/auth/pkce.d.ts.map +1 -0
  13. package/dist/auth/token-store.d.ts +44 -0
  14. package/dist/auth/token-store.d.ts.map +1 -0
  15. package/dist/bin/overwatch +12 -0
  16. package/dist/cli.d.ts +6 -0
  17. package/dist/cli.d.ts.map +1 -0
  18. package/dist/cli.js +5449 -0
  19. package/dist/cli.js.map +7 -0
  20. package/dist/config/index.d.ts +5 -0
  21. package/dist/config/index.d.ts.map +1 -0
  22. package/dist/config/manager.d.ts +54 -0
  23. package/dist/config/manager.d.ts.map +1 -0
  24. package/dist/daemon.d.ts +11 -0
  25. package/dist/daemon.d.ts.map +1 -0
  26. package/dist/daemon.js +6004 -0
  27. package/dist/daemon.js.map +7 -0
  28. package/dist/data/ingestor.d.ts +31 -0
  29. package/dist/data/ingestor.d.ts.map +1 -0
  30. package/dist/data/processor.d.ts +96 -0
  31. package/dist/data/processor.d.ts.map +1 -0
  32. package/dist/data/reader.d.ts +24 -0
  33. package/dist/data/reader.d.ts.map +1 -0
  34. package/dist/data/recorder.d.ts +12 -0
  35. package/dist/data/recorder.d.ts.map +1 -0
  36. package/dist/engines/cedar.d.ts +41 -0
  37. package/dist/engines/cedar.d.ts.map +1 -0
  38. package/dist/engines/remote.d.ts +21 -0
  39. package/dist/engines/remote.d.ts.map +1 -0
  40. package/dist/engines/yara.d.ts +12 -0
  41. package/dist/engines/yara.d.ts.map +1 -0
  42. package/dist/handlers/dashboard-handler.d.ts +7 -0
  43. package/dist/handlers/dashboard-handler.d.ts.map +1 -0
  44. package/dist/handlers/hook-handler.d.ts +23 -0
  45. package/dist/handlers/hook-handler.d.ts.map +1 -0
  46. package/dist/handlers/oauth-handler.d.ts +12 -0
  47. package/dist/handlers/oauth-handler.d.ts.map +1 -0
  48. package/dist/handlers/scan-handler.d.ts +13 -0
  49. package/dist/handlers/scan-handler.d.ts.map +1 -0
  50. package/dist/handlers/utils.d.ts +11 -0
  51. package/dist/handlers/utils.d.ts.map +1 -0
  52. package/dist/hooks/claudecode/hooks.json.template +20 -0
  53. package/dist/hooks/cursor/hooks.json.template +74 -0
  54. package/dist/hooks/universal-hook.sh +36 -0
  55. package/dist/http/server.d.ts +38 -0
  56. package/dist/http/server.d.ts.map +1 -0
  57. package/dist/index.d.ts +8 -0
  58. package/dist/index.d.ts.map +1 -0
  59. package/dist/index.js +5941 -0
  60. package/dist/index.js.map +7 -0
  61. package/dist/installer.d.ts +25 -0
  62. package/dist/installer.d.ts.map +1 -0
  63. package/dist/javelin/admin-client.d.ts +75 -0
  64. package/dist/javelin/admin-client.d.ts.map +1 -0
  65. package/dist/javelin/client.d.ts +30 -0
  66. package/dist/javelin/client.d.ts.map +1 -0
  67. package/dist/javelin/config-reader.d.ts +70 -0
  68. package/dist/javelin/config-reader.d.ts.map +1 -0
  69. package/dist/javelin/index.d.ts +5 -0
  70. package/dist/javelin/index.d.ts.map +1 -0
  71. package/dist/javelin/types.d.ts +81 -0
  72. package/dist/javelin/types.d.ts.map +1 -0
  73. package/dist/lib/policy-engine.d.ts +34 -0
  74. package/dist/lib/policy-engine.d.ts.map +1 -0
  75. package/dist/lib/policy-manager.d.ts +86 -0
  76. package/dist/lib/policy-manager.d.ts.map +1 -0
  77. package/dist/module.d.ts +52 -0
  78. package/dist/module.d.ts.map +1 -0
  79. package/dist/pipeline/context-mapper.d.ts +16 -0
  80. package/dist/pipeline/context-mapper.d.ts.map +1 -0
  81. package/dist/pipeline/extractors/claude-extractor.d.ts +48 -0
  82. package/dist/pipeline/extractors/claude-extractor.d.ts.map +1 -0
  83. package/dist/pipeline/extractors/cursor-extractor.d.ts +44 -0
  84. package/dist/pipeline/extractors/cursor-extractor.d.ts.map +1 -0
  85. package/dist/pipeline/extractors/github-copilot-extractor.d.ts +49 -0
  86. package/dist/pipeline/extractors/github-copilot-extractor.d.ts.map +1 -0
  87. package/dist/pipeline/extractors/index.d.ts +47 -0
  88. package/dist/pipeline/extractors/index.d.ts.map +1 -0
  89. package/dist/pipeline/extractors/registry.d.ts +38 -0
  90. package/dist/pipeline/extractors/registry.d.ts.map +1 -0
  91. package/dist/pipeline/hook-pipeline.d.ts +25 -0
  92. package/dist/pipeline/hook-pipeline.d.ts.map +1 -0
  93. package/dist/policy.cedar +783 -0
  94. package/dist/rules/pre/command_injection.yar +60 -0
  95. package/dist/rules/pre/cross_origin_escalation.yar +106 -0
  96. package/dist/rules/pre/mcp_config_risk.yar +35 -0
  97. package/dist/rules/pre/path_traversal.yar +50 -0
  98. package/dist/rules/pre/prompt_injection.yar +101 -0
  99. package/dist/rules/pre/secrets_leakage.yar +100 -0
  100. package/dist/rules/pre/sql_injection.yar +65 -0
  101. package/dist/scanner.d.ts +80 -0
  102. package/dist/scanner.d.ts.map +1 -0
  103. package/dist/service.d.ts +18 -0
  104. package/dist/service.d.ts.map +1 -0
  105. package/dist/services/interface.d.ts +11 -0
  106. package/dist/services/interface.d.ts.map +1 -0
  107. package/dist/services/launchd.d.ts +12 -0
  108. package/dist/services/launchd.d.ts.map +1 -0
  109. package/dist/services/systemd.d.ts +12 -0
  110. package/dist/services/systemd.d.ts.map +1 -0
  111. package/dist/services/windows.d.ts +7 -0
  112. package/dist/services/windows.d.ts.map +1 -0
  113. package/dist/skills/index.d.ts +7 -0
  114. package/dist/skills/index.d.ts.map +1 -0
  115. package/dist/skills/scanner.d.ts +44 -0
  116. package/dist/skills/scanner.d.ts.map +1 -0
  117. package/dist/skills/types.d.ts +29 -0
  118. package/dist/skills/types.d.ts.map +1 -0
  119. package/dist/types/config.d.ts +165 -0
  120. package/dist/types/config.d.ts.map +1 -0
  121. package/dist/types/events.d.ts +225 -0
  122. package/dist/types/events.d.ts.map +1 -0
  123. package/dist/types/index.d.ts +6 -0
  124. package/dist/types/index.d.ts.map +1 -0
  125. package/dist/types/remote-policy.d.ts +129 -0
  126. package/dist/types/remote-policy.d.ts.map +1 -0
  127. package/dist/types/requests.d.ts +45 -0
  128. package/dist/types/requests.d.ts.map +1 -0
  129. package/dist/types/responses.d.ts +60 -0
  130. package/dist/types/responses.d.ts.map +1 -0
  131. package/dist/ui/images/highflame-mono.png +0 -0
  132. package/dist/ui/views/dashboard.ejs +301 -0
  133. package/dist/ui/views/dashboard.js +785 -0
  134. package/dist/ui/views/partials/commands-table.ejs +54 -0
  135. package/dist/ui/views/partials/events-table.ejs +36 -0
  136. package/dist/ui/views/partials/filter-dropdown.ejs +12 -0
  137. package/dist/ui/views/partials/overview-charts.ejs +149 -0
  138. package/dist/ui/views/partials/scans-table.ejs +136 -0
  139. package/dist/ui/views/partials/sessions-table.ejs +50 -0
  140. package/dist/ui/views/partials/stats-grid.ejs +23 -0
  141. package/dist/ui/views/partials/threats-table.ejs +60 -0
  142. package/dist/utils/index.d.ts +3 -0
  143. package/dist/utils/index.d.ts.map +1 -0
  144. package/dist/utils/logger.d.ts +28 -0
  145. package/dist/utils/logger.d.ts.map +1 -0
  146. package/dist/utils/performance.d.ts +26 -0
  147. package/dist/utils/performance.d.ts.map +1 -0
  148. package/dist/utils/port-manager.d.ts +6 -0
  149. package/dist/utils/port-manager.d.ts.map +1 -0
  150. package/dist/yara/engine.d.ts +58 -0
  151. package/dist/yara/engine.d.ts.map +1 -0
  152. package/dist/yara/index.d.ts +5 -0
  153. package/dist/yara/index.d.ts.map +1 -0
  154. package/lib/platform-loader.js +210 -0
  155. package/package.json +63 -0
  156. package/scripts/postinstall.js +121 -0
@@ -0,0 +1,31 @@
1
+ /**
2
+ * Callback to resolve application ID from a record
3
+ * Returns the application UUID for the x-javelin-application header
4
+ */
5
+ export type ApplicationIdResolver<T> = (record: T) => string | null;
6
+ /**
7
+ * Generic admin API ingestor with retry support
8
+ * Sends records to configurable admin API endpoints
9
+ */
10
+ export declare class AdminIngestor<T> {
11
+ private baseUrl;
12
+ private token;
13
+ private endpoint;
14
+ private pendingFile;
15
+ private deadLetterFile;
16
+ private retryTimer;
17
+ private applicationIdResolver;
18
+ constructor(baseUrl: string, token: string, endpoint: string, applicationIdResolver?: ApplicationIdResolver<T>);
19
+ start(): void;
20
+ stop(): void;
21
+ /** Fire-and-forget record ingestion */
22
+ ingest(record: T): void;
23
+ private send;
24
+ private saveForRetry;
25
+ private processQueue;
26
+ private loadPending;
27
+ private savePending;
28
+ private moveToDeadLetter;
29
+ private ensureDir;
30
+ }
31
+ //# sourceMappingURL=ingestor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ingestor.d.ts","sourceRoot":"","sources":["../../src/data/ingestor.ts"],"names":[],"mappings":"AAaA;;;GAGG;AACH,MAAM,MAAM,qBAAqB,CAAC,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,KAAK,MAAM,GAAG,IAAI,CAAC;AAEpE;;;GAGG;AACH,qBAAa,aAAa,CAAC,CAAC;IAC1B,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,KAAK,CAAS;IACtB,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,cAAc,CAAS;IAC/B,OAAO,CAAC,UAAU,CAA+B;IACjD,OAAO,CAAC,qBAAqB,CAAyC;gBAGpE,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,MAAM,EACb,QAAQ,EAAE,MAAM,EAChB,qBAAqB,CAAC,EAAE,qBAAqB,CAAC,CAAC,CAAC;IA2BlD,KAAK,IAAI,IAAI;IAYb,IAAI,IAAI,IAAI;IAQZ,uCAAuC;IACvC,MAAM,CAAC,MAAM,EAAE,CAAC,GAAG,IAAI;YA2BT,IAAI;IA+DlB,OAAO,CAAC,YAAY;YAuBN,YAAY;IAiF1B,OAAO,CAAC,WAAW;IAmBnB,OAAO,CAAC,WAAW;IAiBnB,OAAO,CAAC,gBAAgB;IA8BxB,OAAO,CAAC,SAAS;CAIlB"}
@@ -0,0 +1,96 @@
1
+ import { EventRecord, ScanRecord } from "./reader";
2
+ export interface DashboardData {
3
+ stats: {
4
+ totalEvents: number;
5
+ blockedCalls: number;
6
+ totalThreats: number;
7
+ serversScanned: number;
8
+ activeSessions: number;
9
+ };
10
+ installation: {
11
+ cursor: {
12
+ installed: boolean;
13
+ version?: string;
14
+ lastSeen?: string;
15
+ };
16
+ claudecode: {
17
+ installed: boolean;
18
+ version?: string;
19
+ lastSeen?: string;
20
+ };
21
+ github_copilot: {
22
+ installed: boolean;
23
+ version?: string;
24
+ lastSeen?: string;
25
+ };
26
+ };
27
+ activityTimeline: Array<{
28
+ date: string;
29
+ cursor: number;
30
+ claude: number;
31
+ github_copilot: number;
32
+ }>;
33
+ sessions: Array<{
34
+ id: string;
35
+ source: string;
36
+ startTime: string;
37
+ eventCount: number;
38
+ threatCount: number;
39
+ allowed: boolean;
40
+ events: EventRecord[];
41
+ }>;
42
+ threats: Array<{
43
+ id: string;
44
+ timestamp: string;
45
+ source: string;
46
+ rule: string;
47
+ severity: string;
48
+ category: string;
49
+ content?: string;
50
+ rawEvent: EventRecord;
51
+ }>;
52
+ commands: Array<{
53
+ id: string;
54
+ timestamp: string;
55
+ source: string;
56
+ command: string;
57
+ risk: "critical" | "high" | "medium" | "low";
58
+ reason: string;
59
+ allowed: boolean;
60
+ rawEvent: EventRecord;
61
+ }>;
62
+ topCursorHooks: Array<{
63
+ event: string;
64
+ count: number;
65
+ }>;
66
+ topClaudeTools: Array<{
67
+ tool: string;
68
+ count: number;
69
+ }>;
70
+ topGitHubCopilotHooks: Array<{
71
+ event: string;
72
+ count: number;
73
+ }>;
74
+ events: EventRecord[];
75
+ scans: Array<{
76
+ id: string;
77
+ timestamp: string;
78
+ source?: string;
79
+ total_servers: number;
80
+ total_issues: number;
81
+ max_severity?: string;
82
+ servers: Array<{
83
+ server_name: string;
84
+ url?: string;
85
+ issues: Array<{
86
+ severity: string;
87
+ rule_name?: string;
88
+ description?: string;
89
+ target_type?: string;
90
+ status?: string;
91
+ }>;
92
+ }>;
93
+ }>;
94
+ }
95
+ export declare function processDashboardData(events: EventRecord[], scans: ScanRecord[]): DashboardData;
96
+ //# sourceMappingURL=processor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"processor.d.ts","sourceRoot":"","sources":["../../src/data/processor.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,24 @@
1
+ import { HookEventRecord } from "../types";
2
+ export type EventRecord = HookEventRecord & {
3
+ blocked_reason?: string;
4
+ guardrail?: {
5
+ called: boolean;
6
+ engine?: string;
7
+ duration_ms?: number;
8
+ response?: any;
9
+ threats?: string[];
10
+ error?: string;
11
+ };
12
+ };
13
+ export interface ScanRecord {
14
+ id: string;
15
+ timestamp: string;
16
+ source?: string;
17
+ total_servers: number;
18
+ total_issues: number;
19
+ max_severity?: string;
20
+ raw?: any;
21
+ }
22
+ export declare function readEvents(): EventRecord[];
23
+ export declare function readScans(): ScanRecord[];
24
+ //# sourceMappingURL=reader.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reader.d.ts","sourceRoot":"","sources":["../../src/data/reader.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAO3C,MAAM,MAAM,WAAW,GAAG,eAAe,GAAG;IAC1C,cAAc,CAAC,EAAE,MAAM,CAAC;IAExB,SAAS,CAAC,EAAE;QACV,MAAM,EAAE,OAAO,CAAC;QAChB,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,QAAQ,CAAC,EAAE,GAAG,CAAC;QACf,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;QACnB,KAAK,CAAC,EAAE,MAAM,CAAC;KAChB,CAAC;CACH,CAAC;AAEF,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,aAAa,EAAE,MAAM,CAAC;IACtB,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,GAAG,CAAC,EAAE,GAAG,CAAC;CACX;AAED,wBAAgB,UAAU,IAAI,WAAW,EAAE,CA4B1C;AAED,wBAAgB,SAAS,IAAI,UAAU,EAAE,CA4BxC"}
@@ -0,0 +1,12 @@
1
+ import { HookEventRecord, IDESource, DetectionResult, ThreatSummary, PolicyDecision, HookEvent, OverwatchEvent } from "../types";
2
+ /**
3
+ * Record a hook event with the new evaluation structure
4
+ * - evaluations: Detection engine results (YARA, Javelin)
5
+ * - threat_summary: Aggregated threat data
6
+ * - decision: Cedar policy decision (separate from evaluations)
7
+ *
8
+ * Requires overwatchEvent - all recorded events must go through extractors.
9
+ * Returns the recorded event for ingestion to admin API.
10
+ */
11
+ export declare function recordEvent(source: IDESource, event: HookEvent, response: Record<string, unknown>, evaluations: DetectionResult[], threatSummary: ThreatSummary, decision: PolicyDecision, finalAllowed: boolean, totalDuration: number, overwatchEvent: OverwatchEvent, contentLength?: number): HookEventRecord;
12
+ //# sourceMappingURL=recorder.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"recorder.d.ts","sourceRoot":"","sources":["../../src/data/recorder.ts"],"names":[],"mappings":"AAGA,OAAO,EACL,eAAe,EACf,SAAS,EACT,eAAe,EACf,aAAa,EACb,cAAc,EAEd,SAAS,EACT,cAAc,EACf,MAAM,UAAU,CAAC;AAgBlB;;;;;;;;GAQG;AACH,wBAAgB,WAAW,CACzB,MAAM,EAAE,SAAS,EACjB,KAAK,EAAE,SAAS,EAChB,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACjC,WAAW,EAAE,eAAe,EAAE,EAC9B,aAAa,EAAE,aAAa,EAC5B,QAAQ,EAAE,cAAc,EACxB,YAAY,EAAE,OAAO,EACrB,aAAa,EAAE,MAAM,EACrB,cAAc,EAAE,cAAc,EAC9B,aAAa,CAAC,EAAE,MAAM,GACrB,eAAe,CA0DjB"}
@@ -0,0 +1,41 @@
1
+ import { PolicyEngine } from "../lib/policy-engine";
2
+ import { PolicyDecision, PolicyMetadata } from "../types";
3
+ export interface CedarContext {
4
+ principalType: string;
5
+ principalId: string;
6
+ action: string;
7
+ resourceType: string;
8
+ resourceId: string;
9
+ contextData: Record<string, unknown>;
10
+ }
11
+ /**
12
+ * Threat context passed to Cedar for decision making
13
+ */
14
+ export interface ThreatContext {
15
+ threats_detected: number;
16
+ highest_severity: string;
17
+ categories: string[];
18
+ }
19
+ /**
20
+ * Parse Cedar policy content to extract policy metadata from comments.
21
+ * Cedar uses @compliance_id, @description, @severity, @category, @frameworks annotations.
22
+ *
23
+ * Returns a mapping from policy index (policy0, policy1, etc.) to PolicyMetadata.
24
+ */
25
+ export declare function parsePolicyContent(policyContent: string): Record<string, PolicyMetadata>;
26
+ export declare class CedarExecutor {
27
+ private engine;
28
+ private policyMetadata;
29
+ constructor(engine: PolicyEngine | undefined, policyContent?: string);
30
+ /**
31
+ * Update policy metadata (e.g., when policy content changes)
32
+ */
33
+ updatePolicyContent(policyContent: string): void;
34
+ isAvailable(): boolean;
35
+ /**
36
+ * Run Cedar policy evaluation
37
+ * Returns PolicyDecision (separate from detection results)
38
+ */
39
+ run(ctx: CedarContext, threatContext: ThreatContext): Promise<PolicyDecision>;
40
+ }
41
+ //# sourceMappingURL=cedar.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cedar.d.ts","sourceRoot":"","sources":["../../src/engines/cedar.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,EAAE,cAAc,EAAE,cAAc,EAAuB,MAAM,UAAU,CAAC;AAG/E,MAAM,WAAW,YAAY;IAC3B,aAAa,EAAE,MAAM,CAAC;IACtB,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACtC;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,gBAAgB,EAAE,MAAM,CAAC;IACzB,gBAAgB,EAAE,MAAM,CAAC;IACzB,UAAU,EAAE,MAAM,EAAE,CAAC;CACtB;AAED;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAChC,aAAa,EAAE,MAAM,GACpB,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CA2HhC;AAwDD,qBAAa,aAAa;IAItB,OAAO,CAAC,MAAM;IAHhB,OAAO,CAAC,cAAc,CAAsC;gBAGlD,MAAM,EAAE,YAAY,GAAG,SAAS,EACxC,aAAa,CAAC,EAAE,MAAM;IAWxB;;OAEG;IACH,mBAAmB,CAAC,aAAa,EAAE,MAAM,GAAG,IAAI;IAOhD,WAAW,IAAI,OAAO;IAItB;;;OAGG;IACG,GAAG,CACP,GAAG,EAAE,YAAY,EACjB,aAAa,EAAE,aAAa,GAC3B,OAAO,CAAC,cAAc,CAAC;CA+E3B"}
@@ -0,0 +1,21 @@
1
+ import { JavelinClient } from "../javelin";
2
+ import { DetectionResult, IDESource } from "../types";
3
+ /**
4
+ * Callback to resolve application ID from IDE source
5
+ */
6
+ export type ApplicationIdResolver = (source: IDESource) => string | null;
7
+ export declare class RemoteExecutor {
8
+ private clients;
9
+ private applicationIdResolver;
10
+ constructor(clients: Map<IDESource, JavelinClient>, applicationIdResolver?: ApplicationIdResolver);
11
+ /**
12
+ * Update the application ID resolver
13
+ */
14
+ setApplicationIdResolver(resolver: ApplicationIdResolver): void;
15
+ /**
16
+ * Run remote guardrails validation
17
+ * Returns DetectionResult (no decision field - that's for Cedar)
18
+ */
19
+ run(source: IDESource, content: string, event: string, guardrailConfig: string, metadata: Record<string, unknown>): Promise<DetectionResult>;
20
+ }
21
+ //# sourceMappingURL=remote.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"remote.d.ts","sourceRoot":"","sources":["../../src/engines/remote.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,EAAE,eAAe,EAAmB,SAAS,EAAE,MAAM,UAAU,CAAC;AAGvE;;GAEG;AACH,MAAM,MAAM,qBAAqB,GAAG,CAAC,MAAM,EAAE,SAAS,KAAK,MAAM,GAAG,IAAI,CAAC;AAEzE,qBAAa,cAAc;IAIvB,OAAO,CAAC,OAAO;IAHjB,OAAO,CAAC,qBAAqB,CAAsC;gBAGzD,OAAO,EAAE,GAAG,CAAC,SAAS,EAAE,aAAa,CAAC,EAC9C,qBAAqB,CAAC,EAAE,qBAAqB;IAK/C;;OAEG;IACH,wBAAwB,CAAC,QAAQ,EAAE,qBAAqB,GAAG,IAAI;IAI/D;;;OAGG;IACG,GAAG,CACP,MAAM,EAAE,SAAS,EACjB,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,MAAM,EACb,eAAe,EAAE,MAAM,EACvB,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAChC,OAAO,CAAC,eAAe,CAAC;CA6D5B"}
@@ -0,0 +1,12 @@
1
+ import { YaraEngine as CoreYaraEngine } from "../yara";
2
+ import { DetectionResult } from "../types";
3
+ export declare class YaraExecutor {
4
+ private engine;
5
+ constructor(engine: CoreYaraEngine);
6
+ /**
7
+ * Run YARA scan on content
8
+ * Returns DetectionResult (no decision field - that's for Cedar)
9
+ */
10
+ run(content: string): Promise<DetectionResult>;
11
+ }
12
+ //# sourceMappingURL=yara.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"yara.d.ts","sourceRoot":"","sources":["../../src/engines/yara.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,IAAI,cAAc,EAAiB,MAAM,SAAS,CAAC;AACtE,OAAO,EAAE,eAAe,EAAmB,MAAM,UAAU,CAAC;AA8D5D,qBAAa,YAAY;IACX,OAAO,CAAC,MAAM;gBAAN,MAAM,EAAE,cAAc;IAE1C;;;OAGG;IACG,GAAG,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC;CAkErD"}
@@ -0,0 +1,7 @@
1
+ import * as http from "http";
2
+ export declare class DashboardHandler {
3
+ handle(_req: http.IncomingMessage, res: http.ServerResponse): void;
4
+ handleJs(_req: http.IncomingMessage, res: http.ServerResponse): void;
5
+ handleImage(req: http.IncomingMessage, res: http.ServerResponse): void;
6
+ }
7
+ //# sourceMappingURL=dashboard-handler.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dashboard-handler.d.ts","sourceRoot":"","sources":["../../src/handlers/dashboard-handler.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAQ7B,qBAAa,gBAAgB;IAC3B,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,eAAe,EAAE,GAAG,EAAE,IAAI,CAAC,cAAc,GAAG,IAAI;IAgGlE,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,eAAe,EAAE,GAAG,EAAE,IAAI,CAAC,cAAc,GAAG,IAAI;IA4CpE,WAAW,CAAC,GAAG,EAAE,IAAI,CAAC,eAAe,EAAE,GAAG,EAAE,IAAI,CAAC,cAAc,GAAG,IAAI;CAiFvE"}
@@ -0,0 +1,23 @@
1
+ import * as http from "http";
2
+ import { HookEventRecord } from "../types";
3
+ import { HookPipeline } from "../pipeline/hook-pipeline";
4
+ import { AdminIngestor } from "../data/ingestor";
5
+ export declare class HookHandler {
6
+ private pipeline;
7
+ private ingestor;
8
+ private eventCount;
9
+ private onProjectSkillsScan?;
10
+ constructor(pipeline: HookPipeline, ingestor: AdminIngestor<HookEventRecord> | null);
11
+ /**
12
+ * Set callback for project skills scanning
13
+ */
14
+ setProjectSkillsScanCallback(callback: (workspace: string) => void): void;
15
+ getEventCount(): number;
16
+ handle(req: http.IncomingMessage, res: http.ServerResponse): Promise<void>;
17
+ /**
18
+ * Extract workspace path from event body
19
+ * Checks workspace_roots array first, then common fields: cwd, workingDirectory, workspace
20
+ */
21
+ private extractWorkspace;
22
+ }
23
+ //# sourceMappingURL=hook-handler.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hook-handler.d.ts","sourceRoot":"","sources":["../../src/handlers/hook-handler.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,EAAwB,eAAe,EAAE,MAAM,UAAU,CAAC;AACjE,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACzD,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAKjD,qBAAa,WAAW;IAKpB,OAAO,CAAC,QAAQ;IAChB,OAAO,CAAC,QAAQ;IALlB,OAAO,CAAC,UAAU,CAAK;IACvB,OAAO,CAAC,mBAAmB,CAAC,CAA8B;gBAGhD,QAAQ,EAAE,YAAY,EACtB,QAAQ,EAAE,aAAa,CAAC,eAAe,CAAC,GAAG,IAAI;IAGzD;;OAEG;IACH,4BAA4B,CAAC,QAAQ,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,IAAI,GAAG,IAAI;IAIzE,aAAa,IAAI,MAAM;IAIjB,MAAM,CACV,GAAG,EAAE,IAAI,CAAC,eAAe,EACzB,GAAG,EAAE,IAAI,CAAC,cAAc,GACvB,OAAO,CAAC,IAAI,CAAC;IAsEhB;;;OAGG;IACH,OAAO,CAAC,gBAAgB;CAkCzB"}
@@ -0,0 +1,12 @@
1
+ import * as http from "http";
2
+ import { OAuthState } from "../auth";
3
+ export declare class OAuthHandler {
4
+ private port;
5
+ private pendingOAuthStates;
6
+ private oauthStateTimeout;
7
+ constructor(port: number, pendingOAuthStates: Map<string, OAuthState>, oauthStateTimeout: number);
8
+ handleStart(req: http.IncomingMessage, res: http.ServerResponse): Promise<void>;
9
+ handleCallback(req: http.IncomingMessage, res: http.ServerResponse): Promise<void>;
10
+ handleStatus(req: http.IncomingMessage, res: http.ServerResponse): Promise<void>;
11
+ }
12
+ //# sourceMappingURL=oauth-handler.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"oauth-handler.d.ts","sourceRoot":"","sources":["../../src/handlers/oauth-handler.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAE7B,OAAO,EAML,UAAU,EACX,MAAM,SAAS,CAAC;AAGjB,qBAAa,YAAY;IAErB,OAAO,CAAC,IAAI;IACZ,OAAO,CAAC,kBAAkB;IAC1B,OAAO,CAAC,iBAAiB;gBAFjB,IAAI,EAAE,MAAM,EACZ,kBAAkB,EAAE,GAAG,CAAC,MAAM,EAAE,UAAU,CAAC,EAC3C,iBAAiB,EAAE,MAAM;IAG7B,WAAW,CACf,GAAG,EAAE,IAAI,CAAC,eAAe,EACzB,GAAG,EAAE,IAAI,CAAC,cAAc,GACvB,OAAO,CAAC,IAAI,CAAC;IAmCV,cAAc,CAClB,GAAG,EAAE,IAAI,CAAC,eAAe,EACzB,GAAG,EAAE,IAAI,CAAC,cAAc,GACvB,OAAO,CAAC,IAAI,CAAC;IAmEV,YAAY,CAChB,GAAG,EAAE,IAAI,CAAC,eAAe,EACzB,GAAG,EAAE,IAAI,CAAC,cAAc,GACvB,OAAO,CAAC,IAAI,CAAC;CA8BjB"}
@@ -0,0 +1,13 @@
1
+ import * as http from "http";
2
+ import { ScanRecord } from "../types";
3
+ import { MCPScanner } from "../scanner";
4
+ import { AdminIngestor } from "../data/ingestor";
5
+ export declare class ScanHandler {
6
+ private scanner;
7
+ private ingestor;
8
+ constructor(scanner: MCPScanner, ingestor: AdminIngestor<ScanRecord> | null);
9
+ handle(req: http.IncomingMessage, res: http.ServerResponse): Promise<void>;
10
+ runInitialScan(): Promise<void>;
11
+ private recordScan;
12
+ }
13
+ //# sourceMappingURL=scan-handler.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scan-handler.d.ts","sourceRoot":"","sources":["../../src/handlers/scan-handler.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAK7B,OAAO,EAAa,UAAU,EAAE,MAAM,UAAU,CAAC;AACjD,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AACxC,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAMjD,qBAAa,WAAW;IAEpB,OAAO,CAAC,OAAO;IACf,OAAO,CAAC,QAAQ;gBADR,OAAO,EAAE,UAAU,EACnB,QAAQ,EAAE,aAAa,CAAC,UAAU,CAAC,GAAG,IAAI;IAG9C,MAAM,CACV,GAAG,EAAE,IAAI,CAAC,eAAe,EACzB,GAAG,EAAE,IAAI,CAAC,cAAc,GACvB,OAAO,CAAC,IAAI,CAAC;IAgCV,cAAc,IAAI,OAAO,CAAC,IAAI,CAAC;IAgBrC,OAAO,CAAC,UAAU;CA6EnB"}
@@ -0,0 +1,11 @@
1
+ import * as http from "http";
2
+ /**
3
+ * Parse JSON body from HTTP request
4
+ */
5
+ export declare function parseBody(req: http.IncomingMessage): Promise<Record<string, unknown>>;
6
+ /**
7
+ * Get guardrail config name based on hook type
8
+ */
9
+ export declare function getGuardrailConfig(event: string): string;
10
+ export declare function getDefaultResponse(event: string): Record<string, unknown>;
11
+ //# sourceMappingURL=utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/handlers/utils.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAE7B;;GAEG;AACH,wBAAsB,SAAS,CAC7B,GAAG,EAAE,IAAI,CAAC,eAAe,GACxB,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAelC;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAmCxD;AAED,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAqCzE"}
@@ -0,0 +1,20 @@
1
+ {
2
+ "UserPromptSubmit": [
3
+ {
4
+ "command": "~/.overwatch/universal-hook.sh claudecode UserPromptSubmit",
5
+ "timeout": 10000
6
+ }
7
+ ],
8
+ "PreToolUse": [
9
+ {
10
+ "command": "~/.overwatch/universal-hook.sh claudecode PreToolUse",
11
+ "timeout": 10000
12
+ }
13
+ ],
14
+ "PostToolUse": [
15
+ {
16
+ "command": "~/.overwatch/universal-hook.sh claudecode PostToolUse",
17
+ "timeout": 5000
18
+ }
19
+ ]
20
+ }
@@ -0,0 +1,74 @@
1
+ {
2
+ "beforeSubmitPrompt": [
3
+ {
4
+ "command": "~/.overwatch/universal-hook.sh cursor beforeSubmitPrompt",
5
+ "timeout": 10000
6
+ }
7
+ ],
8
+ "beforeShellExecution": [
9
+ {
10
+ "command": "~/.overwatch/universal-hook.sh cursor beforeShellExecution",
11
+ "timeout": 10000
12
+ }
13
+ ],
14
+ "beforeMCPExecution": [
15
+ {
16
+ "command": "~/.overwatch/universal-hook.sh cursor beforeMCPExecution",
17
+ "timeout": 10000
18
+ }
19
+ ],
20
+ "beforeTabFileRead": [
21
+ {
22
+ "command": "~/.overwatch/universal-hook.sh cursor beforeTabFileRead",
23
+ "timeout": 10000
24
+ }
25
+ ],
26
+ "beforeReadFile": [
27
+ {
28
+ "command": "~/.overwatch/universal-hook.sh cursor beforeReadFile",
29
+ "timeout": 10000
30
+ }
31
+ ],
32
+ "afterShellExecution": [
33
+ {
34
+ "command": "~/.overwatch/universal-hook.sh cursor afterShellExecution",
35
+ "timeout": 5000
36
+ }
37
+ ],
38
+ "afterMCPExecution": [
39
+ {
40
+ "command": "~/.overwatch/universal-hook.sh cursor afterMCPExecution",
41
+ "timeout": 5000
42
+ }
43
+ ],
44
+ "afterFileEdit": [
45
+ {
46
+ "command": "~/.overwatch/universal-hook.sh cursor afterFileEdit",
47
+ "timeout": 5000
48
+ }
49
+ ],
50
+ "afterTabFileEdit": [
51
+ {
52
+ "command": "~/.overwatch/universal-hook.sh cursor afterTabFileEdit",
53
+ "timeout": 5000
54
+ }
55
+ ],
56
+ "afterAgentResponse": [
57
+ {
58
+ "command": "~/.overwatch/universal-hook.sh cursor afterAgentResponse",
59
+ "timeout": 5000
60
+ }
61
+ ],
62
+ "afterAgentThought": [
63
+ {
64
+ "command": "~/.overwatch/universal-hook.sh cursor afterAgentThought",
65
+ "timeout": 5000
66
+ }
67
+ ],
68
+ "stop": [
69
+ {
70
+ "command": "~/.overwatch/universal-hook.sh cursor stop",
71
+ "timeout": 5000
72
+ }
73
+ ]
74
+ }
@@ -0,0 +1,36 @@
1
+ #!/bin/bash
2
+ # Overwatch Universal Hook Adapter
3
+ # This script handles communication between AI tools and the Guardian daemon.
4
+ # Usage: ./universal-hook.sh <source> <event> <default_json>
5
+
6
+ set -euo pipefail
7
+
8
+ IDE_SOURCE=$1
9
+ HOOK_EVENT=$2
10
+ DEFAULT_RESPONSE=${3:-"{}"}
11
+
12
+ # Read guardian port from discovery file
13
+ GUARDIAN_PORT_FILE="$HOME/.overwatch/guardian_port"
14
+
15
+ # 1. Port Discovery
16
+ if [ ! -f "$GUARDIAN_PORT_FILE" ]; then
17
+ echo "$DEFAULT_RESPONSE"
18
+ exit 0
19
+ fi
20
+
21
+ GUARDIAN_PORT=$(cat "$GUARDIAN_PORT_FILE" 2>/dev/null || echo "17580")
22
+ ENDPOINT="http://127.0.0.1:${GUARDIAN_PORT}/hook/${IDE_SOURCE}/${HOOK_EVENT}"
23
+
24
+ # 2. Health Check & Forward Payload
25
+ # We use a 1s timeout for the health check to avoid hanging if the daemon is dead.
26
+ if curl -s -f -m 1 "http://127.0.0.1:${GUARDIAN_PORT}/health" >/dev/null 2>&1; then
27
+ # Forward stdin to daemon and capture response
28
+ # Use a 10s timeout for processing
29
+ RESPONSE=$(cat | curl -s -m 10 -X POST "$ENDPOINT" \
30
+ -H "Content-Type: application/json" \
31
+ -d @- 2>/dev/null || echo "$DEFAULT_RESPONSE")
32
+ echo "$RESPONSE"
33
+ else
34
+ # Daemon is unreachable, return default "allow" response
35
+ echo "$DEFAULT_RESPONSE"
36
+ fi
@@ -0,0 +1,38 @@
1
+ import * as http from "http";
2
+ type RequestListener = (req: http.IncomingMessage, res: http.ServerResponse) => void;
3
+ /**
4
+ * Lightweight HTTP server for Guardian
5
+ */
6
+ export declare class GuardianHttpServer {
7
+ private server;
8
+ private port;
9
+ private requestListeners;
10
+ private requestCount;
11
+ constructor(port: number);
12
+ /**
13
+ * Start the server
14
+ */
15
+ start(): Promise<void>;
16
+ /**
17
+ * Stop the server
18
+ */
19
+ stop(): Promise<void>;
20
+ /**
21
+ * Register a request handler for a specific path
22
+ */
23
+ on(path: string, listener: RequestListener): void;
24
+ /**
25
+ * Handle incoming requests
26
+ */
27
+ private handleRequest;
28
+ /**
29
+ * Get the port the server is listening on
30
+ */
31
+ getPort(): number;
32
+ /**
33
+ * Check if server is currently listening
34
+ */
35
+ isListening(): boolean;
36
+ }
37
+ export {};
38
+ //# sourceMappingURL=server.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/http/server.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAG7B,KAAK,eAAe,GAAG,CACrB,GAAG,EAAE,IAAI,CAAC,eAAe,EACzB,GAAG,EAAE,IAAI,CAAC,cAAc,KACrB,IAAI,CAAC;AAEV;;GAEG;AACH,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,MAAM,CAAc;IAC5B,OAAO,CAAC,IAAI,CAAS;IACrB,OAAO,CAAC,gBAAgB,CAA2C;IACnE,OAAO,CAAC,YAAY,CAAK;gBAEb,IAAI,EAAE,MAAM;IASxB;;OAEG;IACH,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAyCtB;;OAEG;IACH,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAiBrB;;OAEG;IACH,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,eAAe,GAAG,IAAI;IAQjD;;OAEG;IACH,OAAO,CAAC,aAAa;IAwDrB;;OAEG;IACH,OAAO,IAAI,MAAM;IAIjB;;OAEG;IACH,WAAW,IAAI,OAAO;CAGvB"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * @highflame/overwatch
3
+ *
4
+ * Security validation module for Overwatch extensions
5
+ */
6
+ export { GuardianModule } from "./module";
7
+ export * from "./types";
8
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAG1C,cAAc,SAAS,CAAC"}