@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,12 @@
1
+ import { SystemService, ServiceStatus } from "./interface";
2
+ export declare class SystemdService implements SystemService {
3
+ private readonly daemonPath;
4
+ private readonly servicePath;
5
+ private readonly logPath;
6
+ private readonly errPath;
7
+ constructor();
8
+ install(): Promise<void>;
9
+ uninstall(): Promise<void>;
10
+ getStatus(): Promise<ServiceStatus>;
11
+ }
12
+ //# sourceMappingURL=systemd.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"systemd.d.ts","sourceRoot":"","sources":["../../src/services/systemd.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAE3D,qBAAa,cAAe,YAAW,aAAa;IAClD,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;IACpC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAS;IACrC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;;IAiB3B,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IA0CxB,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC;IA8B1B,SAAS,IAAI,OAAO,CAAC,aAAa,CAAC;CAwB1C"}
@@ -0,0 +1,7 @@
1
+ import { SystemService, ServiceStatus } from "./interface";
2
+ export declare class WindowsService implements SystemService {
3
+ install(): Promise<void>;
4
+ uninstall(): Promise<void>;
5
+ getStatus(): Promise<ServiceStatus>;
6
+ }
7
+ //# sourceMappingURL=windows.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"windows.d.ts","sourceRoot":"","sources":["../../src/services/windows.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAE3D,qBAAa,cAAe,YAAW,aAAa;IAC5C,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAexB,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC;IAK1B,SAAS,IAAI,OAAO,CAAC,aAAa,CAAC;CAO1C"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Skills Scanner Module
3
+ * Exports for scanning Claude Code personal skills
4
+ */
5
+ export * from "./types";
6
+ export * from "./scanner";
7
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/skills/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,cAAc,SAAS,CAAC;AACxB,cAAc,WAAW,CAAC"}
@@ -0,0 +1,44 @@
1
+ /**
2
+ * Skills Scanner
3
+ * Stateless scanner for personal skills from:
4
+ * - ~/.claude/skills/ (Claude Code)
5
+ * - ~/.cursor/skills/ (Cursor)
6
+ * Backend handles change detection via contentHash
7
+ */
8
+ import { SkillScanResult } from "./types";
9
+ export declare class SkillsScanner {
10
+ /**
11
+ * Scan personal skills from both directories:
12
+ * - ~/.claude/skills/
13
+ * - ~/.cursor/skills/
14
+ * Returns current state
15
+ */
16
+ scan(): Promise<SkillScanResult>;
17
+ /**
18
+ * Scan skills directory
19
+ */
20
+ private scanDirectory;
21
+ /**
22
+ * Check if a path exists
23
+ */
24
+ private exists;
25
+ /**
26
+ * Read full SKILL.md content
27
+ */
28
+ private readSkillContent;
29
+ /**
30
+ * List files in skill directory (recursive)
31
+ */
32
+ private listSkillFiles;
33
+ /**
34
+ * Hash content for backend deduplication
35
+ */
36
+ private hashContent;
37
+ /**
38
+ * Scan project-level skills from:
39
+ * - {workspace}/.claude/skills/
40
+ * - {workspace}/.cursor/skills/
41
+ */
42
+ scanProjectSkills(workspace: string): Promise<SkillScanResult>;
43
+ }
44
+ //# sourceMappingURL=scanner.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scanner.d.ts","sourceRoot":"","sources":["../../src/skills/scanner.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAMH,OAAO,EAAe,eAAe,EAAE,MAAM,SAAS,CAAC;AAMvD,qBAAa,aAAa;IACxB;;;;;OAKG;IACG,IAAI,IAAI,OAAO,CAAC,eAAe,CAAC;IA+BtC;;OAEG;YACW,aAAa;IA2C3B;;OAEG;YACW,MAAM;IASpB;;OAEG;YACW,gBAAgB;IAkB9B;;OAEG;YACW,cAAc;IAgC5B;;OAEG;IACH,OAAO,CAAC,WAAW;IAMnB;;;;OAIG;IACG,iBAAiB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC;CAmCrE"}
@@ -0,0 +1,29 @@
1
+ /**
2
+ * Skills Scanner Types
3
+ * Type definitions for Claude Code skills scanning
4
+ */
5
+ export interface SkillRecord {
6
+ /** Directory name (skill identifier) */
7
+ name: string;
8
+ /** Full path to skill directory */
9
+ path: string;
10
+ /** Full SKILL.md content (raw) */
11
+ content: string;
12
+ /** SHA256 for backend deduplication */
13
+ contentHash: string;
14
+ /** Other files in skill directory */
15
+ files: string[];
16
+ }
17
+ export interface SkillScanResult {
18
+ /** ISO timestamp */
19
+ timestamp: string;
20
+ /** Number of skills found */
21
+ totalSkills: number;
22
+ /** List of scanned skills */
23
+ skills: SkillRecord[];
24
+ /** Duration in milliseconds */
25
+ scanDurationMs: number;
26
+ /** Workspace path (present for project-level scans) */
27
+ workspace?: string;
28
+ }
29
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/skills/types.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,WAAW,WAAW;IAC1B,wCAAwC;IACxC,IAAI,EAAE,MAAM,CAAC;IACb,mCAAmC;IACnC,IAAI,EAAE,MAAM,CAAC;IACb,kCAAkC;IAClC,OAAO,EAAE,MAAM,CAAC;IAChB,uCAAuC;IACvC,WAAW,EAAE,MAAM,CAAC;IACpB,qCAAqC;IACrC,KAAK,EAAE,MAAM,EAAE,CAAC;CACjB;AAED,MAAM,WAAW,eAAe;IAC9B,oBAAoB;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,6BAA6B;IAC7B,WAAW,EAAE,MAAM,CAAC;IACpB,6BAA6B;IAC7B,MAAM,EAAE,WAAW,EAAE,CAAC;IACtB,+BAA+B;IAC/B,cAAc,EAAE,MAAM,CAAC;IACvB,uDAAuD;IACvD,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB"}
@@ -0,0 +1,165 @@
1
+ /**
2
+ * Supported IDE types
3
+ */
4
+ export type IDEType = "cursor" | "claudecode" | "github_copilot";
5
+ /**
6
+ * IDE source constants - use these instead of hard-coding strings
7
+ */
8
+ export declare const IDE_SOURCES: {
9
+ readonly CURSOR: "cursor";
10
+ readonly CLAUDE_CODE: "claudecode";
11
+ readonly GITHUB_COPILOT: "github_copilot";
12
+ };
13
+ /**
14
+ * Operating mode
15
+ */
16
+ export type OperatingMode = "inspect" | "enforce";
17
+ /**
18
+ * Per-IDE configuration (no longer contains token - uses JWT from session)
19
+ */
20
+ export interface IDEConfig {
21
+ /** Whether this IDE is enabled */
22
+ enabled?: boolean;
23
+ /** Operating mode: inspect (allow all, record) or enforce (block threats) */
24
+ mode: OperatingMode;
25
+ /** Whether hooks are installed for this IDE */
26
+ hooksInstalled?: boolean;
27
+ /** Path to hooks directory */
28
+ hooksPath?: string;
29
+ }
30
+ /**
31
+ * LLM configuration for MCP scanning
32
+ */
33
+ export interface LLMConfig {
34
+ /** LLM API key for evaluation (e.g., OpenAI, Anthropic) */
35
+ apiKey?: string;
36
+ /** LLM provider (openai, anthropic, etc.) */
37
+ provider?: string;
38
+ }
39
+ /**
40
+ * Engine configuration
41
+ */
42
+ export interface EnginesConfig {
43
+ /** YARA engine settings */
44
+ yara?: {
45
+ enabled?: boolean;
46
+ rulesDir?: string;
47
+ };
48
+ /** Cedar policy engine settings */
49
+ cedar?: {
50
+ enabled?: boolean;
51
+ policyFile?: string;
52
+ };
53
+ /** Javelin (Highflame) remote validation */
54
+ javelin?: {
55
+ enabled?: boolean;
56
+ };
57
+ }
58
+ /**
59
+ * Daemon configuration
60
+ */
61
+ export interface DaemonConfig {
62
+ /** Auto-start daemon on boot */
63
+ autoStart?: boolean;
64
+ /** Log level */
65
+ logLevel?: "debug" | "info" | "warn" | "error";
66
+ /** Preferred ports to try (first available will be used) */
67
+ ports?: number[];
68
+ }
69
+ /**
70
+ * Highflame API configuration
71
+ */
72
+ export interface HighflameConfig {
73
+ /** Highflame API base URL */
74
+ baseUrl?: string;
75
+ }
76
+ /**
77
+ * OAuth authentication configuration (stored in session.json)
78
+ */
79
+ export interface AuthConfig {
80
+ /** OAuth access token (JWT) */
81
+ access_token: string;
82
+ /** OAuth refresh token for token renewal */
83
+ refresh_token: string;
84
+ /** Token expiry timestamp in milliseconds (Unix epoch) */
85
+ expires_at: number;
86
+ /** Token type (always Bearer) */
87
+ token_type: "Bearer";
88
+ /** Authenticated user information */
89
+ user?: {
90
+ email: string;
91
+ name?: string;
92
+ org_id?: string;
93
+ org_name?: string;
94
+ };
95
+ /** ISO timestamp when authentication occurred */
96
+ authenticated_at: string;
97
+ }
98
+ /**
99
+ * Admin API configuration (derived from Highflame config)
100
+ */
101
+ export interface AdminConfig {
102
+ /** Whether admin API is enabled */
103
+ enabled: boolean;
104
+ /** Admin API base URL */
105
+ baseUrl: string | null;
106
+ }
107
+ /**
108
+ * Unified overwatch config file structure (~/.overwatch/config.json)
109
+ */
110
+ export interface OverwatchConfig {
111
+ /** Config version */
112
+ version: string;
113
+ /** Config creation timestamp */
114
+ createdAt?: string;
115
+ /** Highflame API settings */
116
+ highflame?: HighflameConfig;
117
+ /** LLM configuration for MCP scanning */
118
+ llm?: LLMConfig;
119
+ /** Security engines configuration */
120
+ engines?: EnginesConfig;
121
+ /** Remote policy settings */
122
+ remotePolicy?: {
123
+ /** Whether remote policy fetching is enabled */
124
+ enabled?: boolean;
125
+ /** Poll interval in minutes for remote policy refresh */
126
+ pollIntervalMinutes?: number;
127
+ };
128
+ /** Per-IDE configurations */
129
+ ides?: {
130
+ cursor?: IDEConfig;
131
+ claudecode?: IDEConfig;
132
+ github_copilot?: IDEConfig;
133
+ };
134
+ /** Daemon settings */
135
+ daemon?: DaemonConfig;
136
+ /** Global enabled flag */
137
+ enabled?: boolean;
138
+ }
139
+ /**
140
+ * Guardian daemon configuration (runtime)
141
+ */
142
+ export interface GuardianConfig {
143
+ /** IDE type - determines which hooks to use */
144
+ ide?: IDEType;
145
+ /** HTTP server port */
146
+ httpPort?: number;
147
+ /** Enable debug logging */
148
+ debug?: boolean;
149
+ /** Highflame API configuration */
150
+ javelin?: {
151
+ /** Javelin API base URL */
152
+ baseUrl?: string;
153
+ /** Request timeout in milliseconds */
154
+ timeout?: number;
155
+ };
156
+ }
157
+ /**
158
+ * Default configuration values
159
+ */
160
+ export declare const DEFAULT_CONFIG: Required<GuardianConfig>;
161
+ /**
162
+ * Default Overwatch config structure
163
+ */
164
+ export declare const DEFAULT_OVERWATCH_CONFIG: OverwatchConfig;
165
+ //# sourceMappingURL=config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/types/config.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,225 @@
1
+ /**
2
+ * Event types for Guardian
3
+ */
4
+ /**
5
+ * Supported IDE sources
6
+ */
7
+ export type IDESource = "cursor" | "claudecode" | "github_copilot" | "langgraph" | "pydantic_ai" | string;
8
+ /**
9
+ * Semantic action types - high-level intent of an event
10
+ * These represent what the user/agent is trying to do, regardless of IDE/framework
11
+ *
12
+ * Tool-based actions are separated into:
13
+ * - "tool": Native IDE tools (shell, file operations, etc.)
14
+ * - "mcp": MCP tool calls
15
+ */
16
+ export type SemanticAction = "prompt" | "tool" | "mcp" | "session";
17
+ /**
18
+ * Canonical event model - normalized representation of any action
19
+ * This is the standardized internal model that extractors produce
20
+ * and security engines consume, independent of source IDE/framework
21
+ */
22
+ export interface OverwatchEvent {
23
+ id: string;
24
+ type: SemanticAction;
25
+ content: string;
26
+ source: IDESource;
27
+ context: {
28
+ cwd?: string;
29
+ tool_name?: string;
30
+ mcp_server?: string;
31
+ mcp_tool?: string;
32
+ user_email?: string;
33
+ workspace_root?: string;
34
+ file_path?: string;
35
+ command?: string;
36
+ arguments?: Record<string, any>;
37
+ };
38
+ metadata: Record<string, any>;
39
+ }
40
+ /**
41
+ * Cursor hook events
42
+ */
43
+ export type CursorHookEvent = "beforeSubmitPrompt" | "beforeShellExecution" | "beforeMCPExecution" | "beforeTabFileRead" | "beforeReadFile" | "afterShellExecution" | "afterMCPExecution" | "afterFileEdit" | "afterTabFileEdit" | "afterAgentResponse" | "afterAgentThought" | "stop";
44
+ /**
45
+ * Claude Code hook events
46
+ */
47
+ export type ClaudeCodeHookEvent = "UserPromptSubmit" | "PreToolUse" | "PostToolUse";
48
+ /**
49
+ * GitHub Copilot Agent hook events
50
+ * See: https://docs.github.com/en/copilot/how-tos/use-copilot-agents/coding-agent/use-hooks
51
+ */
52
+ export type GitHubCopilotHookEvent = "sessionStart" | "sessionEnd" | "userPromptSubmitted" | "preToolUse" | "postToolUse" | "errorOccurred";
53
+ /**
54
+ * All hook events (union of all IDE hook events)
55
+ */
56
+ export type HookEvent = CursorHookEvent | ClaudeCodeHookEvent | GitHubCopilotHookEvent;
57
+ /**
58
+ * Hook category
59
+ */
60
+ export type HookCategory = "before" | "after" | "stop";
61
+ /**
62
+ * Detailed finding from a detection engine
63
+ */
64
+ export interface GuardrailResult {
65
+ rule: string;
66
+ namespace?: string;
67
+ severity: string;
68
+ message: string;
69
+ category: string;
70
+ matched_content?: string;
71
+ matched_patterns?: string[];
72
+ match_location?: {
73
+ offset?: number;
74
+ length?: number;
75
+ };
76
+ recommendation?: string;
77
+ reference?: string;
78
+ confidence?: string;
79
+ metadata?: Record<string, unknown>;
80
+ tags?: string[];
81
+ }
82
+ /**
83
+ * Detection engine result (YARA, Javelin)
84
+ * Detection engines find threats but don't make blocking decisions
85
+ * from src/engine/remote.ts
86
+ */
87
+ export interface DetectionResult {
88
+ engine: "yara-local" | "javelin-remote";
89
+ called: boolean;
90
+ duration_ms: number;
91
+ findings: GuardrailResult[];
92
+ raw_response?: unknown;
93
+ error?: string;
94
+ }
95
+ /**
96
+ * Policy metadata describing a Cedar policy rule
97
+ */
98
+ export interface PolicyMetadata {
99
+ id: string;
100
+ description: string;
101
+ severity: string;
102
+ category: string;
103
+ frameworks?: string[];
104
+ }
105
+ /**
106
+ * Cedar request context - the principal, action, and resource evaluated
107
+ */
108
+ export interface CedarRequestContext {
109
+ principal: {
110
+ type: string;
111
+ id: string;
112
+ };
113
+ action: string;
114
+ resource: {
115
+ type: string;
116
+ id: string;
117
+ };
118
+ }
119
+ /**
120
+ * Policy decision from Cedar
121
+ * Decision engine determines allow/deny based on policy + threat context
122
+ */
123
+ export interface PolicyDecision {
124
+ engine: "cedar-policy";
125
+ called: boolean;
126
+ duration_ms: number;
127
+ effect: "allow" | "deny";
128
+ reason: string;
129
+ determining_policies: string[];
130
+ policy_details?: Record<string, PolicyMetadata>;
131
+ request_context?: CedarRequestContext;
132
+ context_used: {
133
+ threats_detected: number;
134
+ highest_severity: string;
135
+ categories: string[];
136
+ };
137
+ error?: string;
138
+ }
139
+ /**
140
+ * Individual threat detail in threat summary
141
+ */
142
+ export interface ThreatDetail {
143
+ rule: string;
144
+ severity: string;
145
+ category: string;
146
+ source: "yara-local" | "javelin-remote";
147
+ message: string;
148
+ matched_content?: string;
149
+ matched_patterns?: string[];
150
+ match_location?: {
151
+ offset?: number;
152
+ length?: number;
153
+ };
154
+ reference?: string;
155
+ }
156
+ /**
157
+ * Aggregated threat summary from all detection engines
158
+ */
159
+ export interface ThreatSummary {
160
+ total_count: number;
161
+ by_severity: {
162
+ critical: number;
163
+ high: number;
164
+ medium: number;
165
+ low: number;
166
+ };
167
+ by_category: Record<string, number>;
168
+ by_source: {
169
+ yara_local: number;
170
+ javelin_remote: number;
171
+ };
172
+ highest_severity: "critical" | "high" | "medium" | "low" | "none";
173
+ threat_list: ThreatDetail[];
174
+ }
175
+ /**
176
+ * @deprecated Use DetectionResult for detection engines, PolicyDecision for Cedar
177
+ */
178
+ export interface EvaluationRecord {
179
+ engine: "javelin-remote" | "yara-local" | "cedar-policy";
180
+ called: boolean;
181
+ duration_ms: number;
182
+ decision: "allow" | "deny" | "monitor";
183
+ findings: GuardrailResult[];
184
+ error?: string;
185
+ metadata?: Record<string, unknown>;
186
+ }
187
+ /**
188
+ * Hook event record for storage/analytics
189
+ */
190
+ export interface HookEventRecord {
191
+ id: string;
192
+ timestamp: string;
193
+ source: IDESource;
194
+ event: string;
195
+ hook_category: HookCategory;
196
+ user_id?: string;
197
+ user_email?: string;
198
+ workspace?: string;
199
+ ide_version?: string;
200
+ model?: string;
201
+ is_mcp_call?: boolean;
202
+ mcp_server_name?: string;
203
+ mcp_tool_name?: string;
204
+ input: Record<string, unknown>;
205
+ evaluations: DetectionResult[];
206
+ threat_summary: ThreatSummary;
207
+ decision: PolicyDecision;
208
+ allowed: boolean;
209
+ response: Record<string, unknown>;
210
+ total_duration_ms: number;
211
+ content_length?: number;
212
+ }
213
+ /**
214
+ * MCP scan record for storage/analytics
215
+ */
216
+ export interface ScanRecord {
217
+ id: string;
218
+ timestamp: string;
219
+ source: IDESource;
220
+ total_servers: number;
221
+ total_issues: number;
222
+ max_severity?: string;
223
+ raw: Record<string, unknown>;
224
+ }
225
+ //# sourceMappingURL=events.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"events.d.ts","sourceRoot":"","sources":["../../src/types/events.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ export * from "./config";
2
+ export * from "./requests";
3
+ export * from "./responses";
4
+ export * from "./events";
5
+ export * from "./remote-policy";
6
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAC;AACzB,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,cAAc,UAAU,CAAC;AACzB,cAAc,iBAAiB,CAAC"}
@@ -0,0 +1,129 @@
1
+ /**
2
+ * Remote policy types for Guardian
3
+ *
4
+ * These types support fetching and managing Cedar policies from the
5
+ * highflame-admin backend, enabling IDE-specific policy configuration.
6
+ */
7
+ /**
8
+ * Remote policy configuration
9
+ */
10
+ export interface RemotePolicyConfig {
11
+ /** Enable remote policy fetching */
12
+ enabled: boolean;
13
+ /** Polling interval in milliseconds (default: 5 minutes) */
14
+ pollIntervalMs: number;
15
+ }
16
+ /**
17
+ * Application from admin API (code_agent type)
18
+ */
19
+ export interface CodeAgentApplication {
20
+ /** Application UUID */
21
+ uuid: string;
22
+ /** Application name (e.g., "cursor-guardian") */
23
+ name: string;
24
+ /** Application type (should be "code_agent") */
25
+ type: string;
26
+ /** IDE type this application is for */
27
+ ide_type?: string;
28
+ /** Whether the application is active */
29
+ is_active: boolean;
30
+ /** Application description */
31
+ description?: string;
32
+ /** Application configuration */
33
+ config?: Record<string, unknown>;
34
+ }
35
+ /**
36
+ * Cedar policy from admin API
37
+ */
38
+ export interface RemoteCedarPolicy {
39
+ /** Policy UUID */
40
+ uuid: string;
41
+ /** Policy name */
42
+ name: string;
43
+ /** Cedar policy content (the actual policy text) */
44
+ policy_content: string;
45
+ /** Associated application ID */
46
+ application_id?: string;
47
+ /** IDE type this policy is for */
48
+ ide_type?: string;
49
+ /** Policy version */
50
+ version?: string;
51
+ /** Last updated timestamp */
52
+ updated_at: string;
53
+ }
54
+ /**
55
+ * Installation event payload sent to admin API
56
+ */
57
+ export interface InstallationEvent {
58
+ /** User identifier */
59
+ user_id: string;
60
+ /** User email address */
61
+ user_email: string;
62
+ /** IDE type (cursor, claudecode, github_copilot) */
63
+ ide_type: string;
64
+ /** Guardian version */
65
+ version: string;
66
+ /** Event timestamp (ISO string) */
67
+ timestamp: string;
68
+ }
69
+ /**
70
+ * Policy mapping for IDE-specific policies
71
+ * Uses index signature to allow any IDESource string key
72
+ */
73
+ export interface PolicyMapping {
74
+ cursor?: PolicyMappingEntry;
75
+ claudecode?: PolicyMappingEntry;
76
+ github_copilot?: PolicyMappingEntry;
77
+ [ide: string]: PolicyMappingEntry | undefined;
78
+ }
79
+ /**
80
+ * Single policy mapping entry
81
+ */
82
+ export interface PolicyMappingEntry {
83
+ /** Associated application ID */
84
+ applicationId: string;
85
+ /** Cedar policy content */
86
+ policyContent: string;
87
+ /** Last updated timestamp */
88
+ lastUpdated: string;
89
+ /** Policy version */
90
+ version?: string;
91
+ }
92
+ /**
93
+ * Admin API response for applications
94
+ */
95
+ export interface ApplicationsResponse {
96
+ applications: CodeAgentApplication[];
97
+ total: number;
98
+ }
99
+ /**
100
+ * Admin API response for policies
101
+ */
102
+ export interface PoliciesResponse {
103
+ policies: RemoteCedarPolicy[];
104
+ total: number;
105
+ }
106
+ /**
107
+ * Admin API response for installations
108
+ */
109
+ export interface InstallationsResponse {
110
+ installations: InstallationInfo[];
111
+ total: number;
112
+ }
113
+ /**
114
+ * Installation info from admin API
115
+ */
116
+ export interface InstallationInfo {
117
+ id: string;
118
+ user_id: string;
119
+ user_email: string;
120
+ ide_type: string;
121
+ version: string;
122
+ first_seen_at: string;
123
+ last_seen_at: string;
124
+ }
125
+ /**
126
+ * Default remote policy configuration
127
+ */
128
+ export declare const DEFAULT_REMOTE_POLICY_CONFIG: RemotePolicyConfig;
129
+ //# sourceMappingURL=remote-policy.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"remote-policy.d.ts","sourceRoot":"","sources":["../../src/types/remote-policy.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,oCAAoC;IACpC,OAAO,EAAE,OAAO,CAAC;IAEjB,4DAA4D;IAC5D,cAAc,EAAE,MAAM,CAAC;CACxB;AAED;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,uBAAuB;IACvB,IAAI,EAAE,MAAM,CAAC;IAEb,iDAAiD;IACjD,IAAI,EAAE,MAAM,CAAC;IAEb,gDAAgD;IAChD,IAAI,EAAE,MAAM,CAAC;IAEb,uCAAuC;IACvC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB,wCAAwC;IACxC,SAAS,EAAE,OAAO,CAAC;IAEnB,8BAA8B;IAC9B,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB,gCAAgC;IAChC,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAClC;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,kBAAkB;IAClB,IAAI,EAAE,MAAM,CAAC;IAEb,kBAAkB;IAClB,IAAI,EAAE,MAAM,CAAC;IAEb,oDAAoD;IACpD,cAAc,EAAE,MAAM,CAAC;IAEvB,gCAAgC;IAChC,cAAc,CAAC,EAAE,MAAM,CAAC;IAExB,kCAAkC;IAClC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB,qBAAqB;IACrB,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB,6BAA6B;IAC7B,UAAU,EAAE,MAAM,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,sBAAsB;IACtB,OAAO,EAAE,MAAM,CAAC;IAEhB,yBAAyB;IACzB,UAAU,EAAE,MAAM,CAAC;IAEnB,oDAAoD;IACpD,QAAQ,EAAE,MAAM,CAAC;IAEjB,uBAAuB;IACvB,OAAO,EAAE,MAAM,CAAC;IAEhB,mCAAmC;IACnC,SAAS,EAAE,MAAM,CAAC;CACnB;AAED;;;GAGG;AACH,MAAM,WAAW,aAAa;IAC5B,MAAM,CAAC,EAAE,kBAAkB,CAAC;IAC5B,UAAU,CAAC,EAAE,kBAAkB,CAAC;IAChC,cAAc,CAAC,EAAE,kBAAkB,CAAC;IACpC,CAAC,GAAG,EAAE,MAAM,GAAG,kBAAkB,GAAG,SAAS,CAAC;CAC/C;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,gCAAgC;IAChC,aAAa,EAAE,MAAM,CAAC;IAEtB,2BAA2B;IAC3B,aAAa,EAAE,MAAM,CAAC;IAEtB,6BAA6B;IAC7B,WAAW,EAAE,MAAM,CAAC;IAEpB,qBAAqB;IACrB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,YAAY,EAAE,oBAAoB,EAAE,CAAC;IACrC,KAAK,EAAE,MAAM,CAAC;CACf;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,EAAE,iBAAiB,EAAE,CAAC;IAC9B,KAAK,EAAE,MAAM,CAAC;CACf;AAED;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC,aAAa,EAAE,gBAAgB,EAAE,CAAC;IAClC,KAAK,EAAE,MAAM,CAAC;CACf;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,aAAa,EAAE,MAAM,CAAC;IACtB,YAAY,EAAE,MAAM,CAAC;CACtB;AAED;;GAEG;AACH,eAAO,MAAM,4BAA4B,EAAE,kBAG1C,CAAC"}