nox-openclaw-hunter 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 (211) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +140 -0
  3. package/bin/nox.js +2 -0
  4. package/dist/branding.d.ts +39 -0
  5. package/dist/branding.d.ts.map +1 -0
  6. package/dist/branding.js +66 -0
  7. package/dist/branding.js.map +1 -0
  8. package/dist/cli.d.ts +15 -0
  9. package/dist/cli.d.ts.map +1 -0
  10. package/dist/cli.js +94 -0
  11. package/dist/cli.js.map +1 -0
  12. package/dist/commands/export.d.ts +21 -0
  13. package/dist/commands/export.d.ts.map +1 -0
  14. package/dist/commands/export.js +616 -0
  15. package/dist/commands/export.js.map +1 -0
  16. package/dist/commands/index.d.ts +8 -0
  17. package/dist/commands/index.d.ts.map +1 -0
  18. package/dist/commands/index.js +8 -0
  19. package/dist/commands/index.js.map +1 -0
  20. package/dist/commands/isolate.d.ts +30 -0
  21. package/dist/commands/isolate.d.ts.map +1 -0
  22. package/dist/commands/isolate.js +547 -0
  23. package/dist/commands/isolate.js.map +1 -0
  24. package/dist/commands/purge.d.ts +22 -0
  25. package/dist/commands/purge.d.ts.map +1 -0
  26. package/dist/commands/purge.js +295 -0
  27. package/dist/commands/purge.js.map +1 -0
  28. package/dist/commands/scan.d.ts +23 -0
  29. package/dist/commands/scan.d.ts.map +1 -0
  30. package/dist/commands/scan.js +155 -0
  31. package/dist/commands/scan.js.map +1 -0
  32. package/dist/detector/app-bundle.d.ts +13 -0
  33. package/dist/detector/app-bundle.d.ts.map +1 -0
  34. package/dist/detector/app-bundle.js +27 -0
  35. package/dist/detector/app-bundle.js.map +1 -0
  36. package/dist/detector/cli-binary.d.ts +12 -0
  37. package/dist/detector/cli-binary.d.ts.map +1 -0
  38. package/dist/detector/cli-binary.js +66 -0
  39. package/dist/detector/cli-binary.js.map +1 -0
  40. package/dist/detector/config.d.ts +21 -0
  41. package/dist/detector/config.d.ts.map +1 -0
  42. package/dist/detector/config.js +337 -0
  43. package/dist/detector/config.js.map +1 -0
  44. package/dist/detector/detection-config.d.ts +24 -0
  45. package/dist/detector/detection-config.d.ts.map +1 -0
  46. package/dist/detector/detection-config.js +242 -0
  47. package/dist/detector/detection-config.js.map +1 -0
  48. package/dist/detector/docker.d.ts +10 -0
  49. package/dist/detector/docker.d.ts.map +1 -0
  50. package/dist/detector/docker.js +94 -0
  51. package/dist/detector/docker.js.map +1 -0
  52. package/dist/detector/index.d.ts +50 -0
  53. package/dist/detector/index.d.ts.map +1 -0
  54. package/dist/detector/index.js +155 -0
  55. package/dist/detector/index.js.map +1 -0
  56. package/dist/detector/network.d.ts +34 -0
  57. package/dist/detector/network.d.ts.map +1 -0
  58. package/dist/detector/network.js +205 -0
  59. package/dist/detector/network.js.map +1 -0
  60. package/dist/detector/process.d.ts +16 -0
  61. package/dist/detector/process.d.ts.map +1 -0
  62. package/dist/detector/process.js +47 -0
  63. package/dist/detector/process.js.map +1 -0
  64. package/dist/detector/service.d.ts +17 -0
  65. package/dist/detector/service.d.ts.map +1 -0
  66. package/dist/detector/service.js +51 -0
  67. package/dist/detector/service.js.map +1 -0
  68. package/dist/enforcer/docker-cleaner.d.ts +30 -0
  69. package/dist/enforcer/docker-cleaner.d.ts.map +1 -0
  70. package/dist/enforcer/docker-cleaner.js +163 -0
  71. package/dist/enforcer/docker-cleaner.js.map +1 -0
  72. package/dist/enforcer/file-remover.d.ts +34 -0
  73. package/dist/enforcer/file-remover.d.ts.map +1 -0
  74. package/dist/enforcer/file-remover.js +137 -0
  75. package/dist/enforcer/file-remover.js.map +1 -0
  76. package/dist/enforcer/index.d.ts +33 -0
  77. package/dist/enforcer/index.d.ts.map +1 -0
  78. package/dist/enforcer/index.js +142 -0
  79. package/dist/enforcer/index.js.map +1 -0
  80. package/dist/enforcer/process-killer.d.ts +18 -0
  81. package/dist/enforcer/process-killer.d.ts.map +1 -0
  82. package/dist/enforcer/process-killer.js +80 -0
  83. package/dist/enforcer/process-killer.js.map +1 -0
  84. package/dist/enforcer/service-stopper.d.ts +23 -0
  85. package/dist/enforcer/service-stopper.d.ts.map +1 -0
  86. package/dist/enforcer/service-stopper.js +95 -0
  87. package/dist/enforcer/service-stopper.js.map +1 -0
  88. package/dist/index.d.ts +6 -0
  89. package/dist/index.d.ts.map +1 -0
  90. package/dist/index.js +10 -0
  91. package/dist/index.js.map +1 -0
  92. package/dist/isolator/firewall.d.ts +25 -0
  93. package/dist/isolator/firewall.d.ts.map +1 -0
  94. package/dist/isolator/firewall.js +114 -0
  95. package/dist/isolator/firewall.js.map +1 -0
  96. package/dist/isolator/index.d.ts +63 -0
  97. package/dist/isolator/index.d.ts.map +1 -0
  98. package/dist/isolator/index.js +201 -0
  99. package/dist/isolator/index.js.map +1 -0
  100. package/dist/isolator/lockdown.d.ts +22 -0
  101. package/dist/isolator/lockdown.d.ts.map +1 -0
  102. package/dist/isolator/lockdown.js +401 -0
  103. package/dist/isolator/lockdown.js.map +1 -0
  104. package/dist/isolator/quarantine.d.ts +39 -0
  105. package/dist/isolator/quarantine.d.ts.map +1 -0
  106. package/dist/isolator/quarantine.js +364 -0
  107. package/dist/isolator/quarantine.js.map +1 -0
  108. package/dist/mdm/index.d.ts +93 -0
  109. package/dist/mdm/index.d.ts.map +1 -0
  110. package/dist/mdm/index.js +414 -0
  111. package/dist/mdm/index.js.map +1 -0
  112. package/dist/mdm/intune.d.ts +69 -0
  113. package/dist/mdm/intune.d.ts.map +1 -0
  114. package/dist/mdm/intune.js +409 -0
  115. package/dist/mdm/intune.js.map +1 -0
  116. package/dist/mdm/jamf.d.ts +58 -0
  117. package/dist/mdm/jamf.d.ts.map +1 -0
  118. package/dist/mdm/jamf.js +441 -0
  119. package/dist/mdm/jamf.js.map +1 -0
  120. package/dist/mdm/jumpcloud.d.ts +73 -0
  121. package/dist/mdm/jumpcloud.d.ts.map +1 -0
  122. package/dist/mdm/jumpcloud.js +470 -0
  123. package/dist/mdm/jumpcloud.js.map +1 -0
  124. package/dist/mdm/templates/detect.ps1.d.ts +30 -0
  125. package/dist/mdm/templates/detect.ps1.d.ts.map +1 -0
  126. package/dist/mdm/templates/detect.ps1.js +463 -0
  127. package/dist/mdm/templates/detect.ps1.js.map +1 -0
  128. package/dist/mdm/templates/detect.sh.d.ts +30 -0
  129. package/dist/mdm/templates/detect.sh.d.ts.map +1 -0
  130. package/dist/mdm/templates/detect.sh.js +474 -0
  131. package/dist/mdm/templates/detect.sh.js.map +1 -0
  132. package/dist/mdm/templates/enforce.ps1.d.ts +33 -0
  133. package/dist/mdm/templates/enforce.ps1.d.ts.map +1 -0
  134. package/dist/mdm/templates/enforce.ps1.js +681 -0
  135. package/dist/mdm/templates/enforce.ps1.js.map +1 -0
  136. package/dist/mdm/templates/enforce.sh.d.ts +33 -0
  137. package/dist/mdm/templates/enforce.sh.d.ts.map +1 -0
  138. package/dist/mdm/templates/enforce.sh.js +591 -0
  139. package/dist/mdm/templates/enforce.sh.js.map +1 -0
  140. package/dist/platform/darwin.d.ts +6 -0
  141. package/dist/platform/darwin.d.ts.map +1 -0
  142. package/dist/platform/darwin.js +192 -0
  143. package/dist/platform/darwin.js.map +1 -0
  144. package/dist/platform/index.d.ts +43 -0
  145. package/dist/platform/index.d.ts.map +1 -0
  146. package/dist/platform/index.js +27 -0
  147. package/dist/platform/index.js.map +1 -0
  148. package/dist/platform/linux.d.ts +6 -0
  149. package/dist/platform/linux.d.ts.map +1 -0
  150. package/dist/platform/linux.js +134 -0
  151. package/dist/platform/linux.js.map +1 -0
  152. package/dist/platform/windows.d.ts +6 -0
  153. package/dist/platform/windows.d.ts.map +1 -0
  154. package/dist/platform/windows.js +134 -0
  155. package/dist/platform/windows.js.map +1 -0
  156. package/dist/reporter/console.d.ts +27 -0
  157. package/dist/reporter/console.d.ts.map +1 -0
  158. package/dist/reporter/console.js +431 -0
  159. package/dist/reporter/console.js.map +1 -0
  160. package/dist/reporter/index.d.ts +11 -0
  161. package/dist/reporter/index.d.ts.map +1 -0
  162. package/dist/reporter/index.js +13 -0
  163. package/dist/reporter/index.js.map +1 -0
  164. package/dist/reporter/json.d.ts +61 -0
  165. package/dist/reporter/json.d.ts.map +1 -0
  166. package/dist/reporter/json.js +75 -0
  167. package/dist/reporter/json.js.map +1 -0
  168. package/dist/reporter/webhook.d.ts +57 -0
  169. package/dist/reporter/webhook.d.ts.map +1 -0
  170. package/dist/reporter/webhook.js +230 -0
  171. package/dist/reporter/webhook.js.map +1 -0
  172. package/dist/types/config.d.ts +116 -0
  173. package/dist/types/config.d.ts.map +1 -0
  174. package/dist/types/config.js +6 -0
  175. package/dist/types/config.js.map +1 -0
  176. package/dist/types/detection.d.ts +85 -0
  177. package/dist/types/detection.d.ts.map +1 -0
  178. package/dist/types/detection.js +5 -0
  179. package/dist/types/detection.js.map +1 -0
  180. package/dist/types/enforcement.d.ts +33 -0
  181. package/dist/types/enforcement.d.ts.map +1 -0
  182. package/dist/types/enforcement.js +5 -0
  183. package/dist/types/enforcement.js.map +1 -0
  184. package/dist/types/index.d.ts +8 -0
  185. package/dist/types/index.d.ts.map +1 -0
  186. package/dist/types/index.js +8 -0
  187. package/dist/types/index.js.map +1 -0
  188. package/dist/types/isolation.d.ts +55 -0
  189. package/dist/types/isolation.d.ts.map +1 -0
  190. package/dist/types/isolation.js +5 -0
  191. package/dist/types/isolation.js.map +1 -0
  192. package/dist/utils/exec.d.ts +48 -0
  193. package/dist/utils/exec.d.ts.map +1 -0
  194. package/dist/utils/exec.js +103 -0
  195. package/dist/utils/exec.js.map +1 -0
  196. package/dist/utils/fs.d.ts +34 -0
  197. package/dist/utils/fs.d.ts.map +1 -0
  198. package/dist/utils/fs.js +111 -0
  199. package/dist/utils/fs.js.map +1 -0
  200. package/dist/utils/index.d.ts +7 -0
  201. package/dist/utils/index.d.ts.map +1 -0
  202. package/dist/utils/index.js +7 -0
  203. package/dist/utils/index.js.map +1 -0
  204. package/dist/utils/logger.d.ts +14 -0
  205. package/dist/utils/logger.d.ts.map +1 -0
  206. package/dist/utils/logger.js +48 -0
  207. package/dist/utils/logger.js.map +1 -0
  208. package/docs/intune.md +390 -0
  209. package/docs/jamf.md +400 -0
  210. package/docs/jumpcloud.md +510 -0
  211. package/package.json +65 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/isolator/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,22 @@
1
+ /**
2
+ * Lockdown functionality to prevent OpenClaw reinstallation.
3
+ */
4
+ import type { IsolationAction } from '../types/isolation.js';
5
+ import type { Platform } from '../platform/index.js';
6
+ export interface LockdownOptions {
7
+ dryRun?: boolean;
8
+ }
9
+ /**
10
+ * Apply lockdown to prevent OpenClaw reinstallation.
11
+ * Creates blocking files/directories in known installation paths.
12
+ */
13
+ export declare function applyLockdown(platform: Platform, options?: LockdownOptions): Promise<IsolationAction[]>;
14
+ /**
15
+ * Remove lockdown protections.
16
+ */
17
+ export declare function removeLockdown(platform: Platform, options?: LockdownOptions): Promise<IsolationAction[]>;
18
+ /**
19
+ * Check if lockdown is currently active.
20
+ */
21
+ export declare function isLockdownActive(platform: Platform): Promise<boolean>;
22
+ //# sourceMappingURL=lockdown.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lockdown.d.ts","sourceRoot":"","sources":["../../src/isolator/lockdown.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAC7D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAKrD,MAAM,WAAW,eAAe;IAC9B,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAYD;;;GAGG;AACH,wBAAsB,aAAa,CACjC,QAAQ,EAAE,QAAQ,EAClB,OAAO,GAAE,eAAoB,GAC5B,OAAO,CAAC,eAAe,EAAE,CAAC,CAiC5B;AAgQD;;GAEG;AACH,wBAAsB,cAAc,CAClC,QAAQ,EAAE,QAAQ,EAClB,OAAO,GAAE,eAAoB,GAC5B,OAAO,CAAC,eAAe,EAAE,CAAC,CA6D5B;AAgED;;GAEG;AACH,wBAAsB,gBAAgB,CAAC,QAAQ,EAAE,QAAQ,GAAG,OAAO,CAAC,OAAO,CAAC,CAU3E"}
@@ -0,0 +1,401 @@
1
+ /**
2
+ * Lockdown functionality to prevent OpenClaw reinstallation.
3
+ */
4
+ import * as path from 'node:path';
5
+ import { writeFile } from 'node:fs/promises';
6
+ import { exec } from '../utils/exec.js';
7
+ import { pathExists, ensureDir, safeRemove } from '../utils/fs.js';
8
+ import { logger } from '../utils/logger.js';
9
+ /**
10
+ * Marker file content indicating a lockdown is in place.
11
+ */
12
+ const LOCKDOWN_MARKER_CONTENT = `# Nox OpenClaw Lockdown
13
+ # This directory is protected by Nox Security
14
+ # OpenClaw installation has been blocked on this device
15
+ # Contact your IT administrator for more information
16
+ # Generated: ${new Date().toISOString()}
17
+ `;
18
+ /**
19
+ * Apply lockdown to prevent OpenClaw reinstallation.
20
+ * Creates blocking files/directories in known installation paths.
21
+ */
22
+ export async function applyLockdown(platform, options = {}) {
23
+ const actions = [];
24
+ if (options.dryRun) {
25
+ logger.info('[dry-run] Would apply lockdown to prevent reinstallation');
26
+ actions.push({
27
+ type: 'lockdown',
28
+ target: 'cli-paths',
29
+ status: 'success',
30
+ });
31
+ actions.push({
32
+ type: 'lockdown',
33
+ target: 'config-paths',
34
+ status: 'success',
35
+ });
36
+ return actions;
37
+ }
38
+ // Lock CLI paths
39
+ actions.push(await lockCliPaths(platform));
40
+ // Lock config/state directory paths
41
+ actions.push(await lockConfigPaths(platform));
42
+ // Lock app bundle path (macOS)
43
+ if (platform.name === 'darwin') {
44
+ actions.push(await lockAppPath(platform));
45
+ }
46
+ // Add system-level protections
47
+ actions.push(await addSystemProtections(platform));
48
+ return actions;
49
+ }
50
+ /**
51
+ * Create blocking entries at CLI binary locations.
52
+ * Creates immutable files that prevent installation.
53
+ */
54
+ async function lockCliPaths(platform) {
55
+ const action = {
56
+ type: 'lockdown',
57
+ target: 'cli-paths',
58
+ status: 'pending',
59
+ };
60
+ const locations = platform.getCliLocations();
61
+ const errors = [];
62
+ for (const location of locations) {
63
+ try {
64
+ // Create parent directory if needed
65
+ const dir = path.dirname(location);
66
+ if (!(await pathExists(dir))) {
67
+ continue; // Skip if parent doesn't exist (e.g., homebrew not installed)
68
+ }
69
+ // Remove existing file if present
70
+ if (await pathExists(location)) {
71
+ await safeRemove(location);
72
+ }
73
+ // Create a blocking directory (harder to overwrite than a file)
74
+ await ensureDir(location);
75
+ await writeFile(path.join(location, '.nox-lockdown'), LOCKDOWN_MARKER_CONTENT, 'utf8');
76
+ // Make directory immutable (platform-specific)
77
+ await makeImmutable(platform, location);
78
+ logger.success(`Locked CLI path: ${location}`);
79
+ }
80
+ catch (err) {
81
+ errors.push(`${location}: ${err instanceof Error ? err.message : String(err)}`);
82
+ }
83
+ }
84
+ if (errors.length === 0) {
85
+ action.status = 'success';
86
+ }
87
+ else if (errors.length < locations.length) {
88
+ action.status = 'success'; // Partial success
89
+ action.error = errors.join('; ');
90
+ }
91
+ else {
92
+ action.status = 'failed';
93
+ action.error = errors.join('; ');
94
+ }
95
+ return action;
96
+ }
97
+ /**
98
+ * Create blocking entries at config directory locations.
99
+ */
100
+ async function lockConfigPaths(platform) {
101
+ const action = {
102
+ type: 'lockdown',
103
+ target: 'config-paths',
104
+ status: 'pending',
105
+ };
106
+ try {
107
+ const users = await platform.getAllUsers();
108
+ const errors = [];
109
+ for (const user of users) {
110
+ const statePath = platform.getStateDirPath(user);
111
+ try {
112
+ // Remove existing directory if present
113
+ if (await pathExists(statePath)) {
114
+ await safeRemove(statePath);
115
+ }
116
+ // Create blocking directory
117
+ await ensureDir(statePath);
118
+ await writeFile(path.join(statePath, '.nox-lockdown'), LOCKDOWN_MARKER_CONTENT, 'utf8');
119
+ // Make directory immutable
120
+ await makeImmutable(platform, statePath);
121
+ logger.success(`Locked config path for user ${user}: ${statePath}`);
122
+ }
123
+ catch (err) {
124
+ errors.push(`${statePath}: ${err instanceof Error ? err.message : String(err)}`);
125
+ }
126
+ }
127
+ if (errors.length === 0) {
128
+ action.status = 'success';
129
+ }
130
+ else {
131
+ action.status = 'failed';
132
+ action.error = errors.join('; ');
133
+ }
134
+ }
135
+ catch (err) {
136
+ action.status = 'failed';
137
+ action.error = err instanceof Error ? err.message : String(err);
138
+ }
139
+ return action;
140
+ }
141
+ /**
142
+ * Create blocking entry at app bundle location (macOS only).
143
+ */
144
+ async function lockAppPath(platform) {
145
+ const action = {
146
+ type: 'lockdown',
147
+ target: 'app-path',
148
+ status: 'pending',
149
+ };
150
+ const locations = platform.getAppLocations();
151
+ const errors = [];
152
+ for (const location of locations) {
153
+ try {
154
+ // Remove existing app if present
155
+ if (await pathExists(location)) {
156
+ await safeRemove(location);
157
+ }
158
+ // Create blocking directory
159
+ await ensureDir(location);
160
+ await writeFile(path.join(location, '.nox-lockdown'), LOCKDOWN_MARKER_CONTENT, 'utf8');
161
+ // Make directory immutable
162
+ await makeImmutable(platform, location);
163
+ logger.success(`Locked app path: ${location}`);
164
+ }
165
+ catch (err) {
166
+ errors.push(`${location}: ${err instanceof Error ? err.message : String(err)}`);
167
+ }
168
+ }
169
+ if (errors.length === 0) {
170
+ action.status = 'success';
171
+ }
172
+ else {
173
+ action.status = 'failed';
174
+ action.error = errors.join('; ');
175
+ }
176
+ return action;
177
+ }
178
+ /**
179
+ * Add system-level protections.
180
+ * - Block OpenClaw domains in hosts file
181
+ * - Add firewall rules
182
+ */
183
+ async function addSystemProtections(platform) {
184
+ const action = {
185
+ type: 'lockdown',
186
+ target: 'system-protections',
187
+ status: 'pending',
188
+ };
189
+ const errors = [];
190
+ // Block known OpenClaw domains via hosts file
191
+ try {
192
+ await blockDomainsInHosts(platform);
193
+ logger.success('Added domain blocks to hosts file');
194
+ }
195
+ catch (err) {
196
+ errors.push(`hosts: ${err instanceof Error ? err.message : String(err)}`);
197
+ }
198
+ if (errors.length === 0) {
199
+ action.status = 'success';
200
+ }
201
+ else {
202
+ action.status = 'failed';
203
+ action.error = errors.join('; ');
204
+ }
205
+ return action;
206
+ }
207
+ /**
208
+ * Make a file or directory immutable (platform-specific).
209
+ */
210
+ async function makeImmutable(platform, filePath) {
211
+ try {
212
+ if (platform.name === 'darwin') {
213
+ // Use chflags on macOS
214
+ await exec(`sudo chflags schg "${filePath}" 2>/dev/null || true`);
215
+ await exec(`sudo chflags uchg "${filePath}" 2>/dev/null || true`);
216
+ }
217
+ else if (platform.name === 'linux') {
218
+ // Use chattr on Linux
219
+ await exec(`sudo chattr +i "${filePath}" 2>/dev/null || true`);
220
+ }
221
+ else if (platform.name === 'windows') {
222
+ // Use attrib on Windows
223
+ await exec(`attrib +R +S +H "${filePath}" 2>nul || echo.`);
224
+ }
225
+ }
226
+ catch {
227
+ // Immutability is best-effort; continue if it fails
228
+ logger.warn(`Could not make ${filePath} immutable (requires elevated permissions)`);
229
+ }
230
+ }
231
+ /**
232
+ * Block OpenClaw-related domains in the hosts file.
233
+ */
234
+ async function blockDomainsInHosts(platform) {
235
+ const domains = [
236
+ 'api.openclaw.ai',
237
+ 'gateway.openclaw.ai',
238
+ 'download.openclaw.ai',
239
+ 'update.openclaw.ai',
240
+ 'molt.bot',
241
+ 'api.molt.bot',
242
+ 'gateway.molt.bot',
243
+ ];
244
+ const marker = '# Nox OpenClaw Lockdown';
245
+ const blockEntries = domains.map((d) => `0.0.0.0 ${d}`).join('\n');
246
+ const content = `\n${marker} - START\n${blockEntries}\n${marker} - END\n`;
247
+ const hostsPath = platform.name === 'windows' ? 'C:\\Windows\\System32\\drivers\\etc\\hosts' : '/etc/hosts';
248
+ try {
249
+ const { readFile: readF, appendFile } = await import('node:fs/promises');
250
+ const existing = await readF(hostsPath, 'utf8');
251
+ // Check if already blocked
252
+ if (existing.includes(marker)) {
253
+ logger.info('Domain blocks already present in hosts file');
254
+ return;
255
+ }
256
+ // Append blocks (requires sudo on Unix, admin on Windows)
257
+ if (platform.name === 'windows') {
258
+ await appendFile(hostsPath, content, 'utf8');
259
+ }
260
+ else {
261
+ // Use sudo on Unix
262
+ await exec(`echo '${content}' | sudo tee -a "${hostsPath}" > /dev/null`);
263
+ }
264
+ }
265
+ catch (err) {
266
+ throw new Error(`Failed to modify hosts file: ${err instanceof Error ? err.message : String(err)}`);
267
+ }
268
+ }
269
+ /**
270
+ * Remove lockdown protections.
271
+ */
272
+ export async function removeLockdown(platform, options = {}) {
273
+ const actions = [];
274
+ if (options.dryRun) {
275
+ logger.info('[dry-run] Would remove lockdown protections');
276
+ actions.push({
277
+ type: 'lockdown',
278
+ target: 'all',
279
+ status: 'success',
280
+ });
281
+ return actions;
282
+ }
283
+ // Remove immutability and blocking directories
284
+ const allPaths = [
285
+ ...platform.getCliLocations(),
286
+ ...platform.getAppLocations(),
287
+ ];
288
+ // Add user config paths
289
+ try {
290
+ const users = await platform.getAllUsers();
291
+ for (const user of users) {
292
+ allPaths.push(platform.getStateDirPath(user));
293
+ }
294
+ }
295
+ catch {
296
+ // Continue with available paths
297
+ }
298
+ for (const p of allPaths) {
299
+ if (await pathExists(p)) {
300
+ try {
301
+ // Remove immutability first
302
+ await removeImmutable(platform, p);
303
+ // Check if it's a lockdown directory
304
+ const lockdownMarker = path.join(p, '.nox-lockdown');
305
+ if (await pathExists(lockdownMarker)) {
306
+ await safeRemove(p);
307
+ logger.success(`Removed lockdown at: ${p}`);
308
+ }
309
+ }
310
+ catch (err) {
311
+ logger.warn(`Could not remove lockdown at ${p}: ${err instanceof Error ? err.message : String(err)}`);
312
+ }
313
+ }
314
+ }
315
+ // Remove hosts file entries
316
+ try {
317
+ await removeHostsBlocks(platform);
318
+ logger.success('Removed domain blocks from hosts file');
319
+ }
320
+ catch (err) {
321
+ logger.warn(`Could not remove hosts blocks: ${err instanceof Error ? err.message : String(err)}`);
322
+ }
323
+ actions.push({
324
+ type: 'lockdown',
325
+ target: 'all',
326
+ status: 'success',
327
+ });
328
+ return actions;
329
+ }
330
+ /**
331
+ * Remove immutability from a file or directory.
332
+ */
333
+ async function removeImmutable(platform, filePath) {
334
+ try {
335
+ if (platform.name === 'darwin') {
336
+ await exec(`sudo chflags noschg "${filePath}" 2>/dev/null || true`);
337
+ await exec(`sudo chflags nouchg "${filePath}" 2>/dev/null || true`);
338
+ }
339
+ else if (platform.name === 'linux') {
340
+ await exec(`sudo chattr -i "${filePath}" 2>/dev/null || true`);
341
+ }
342
+ else if (platform.name === 'windows') {
343
+ await exec(`attrib -R -S -H "${filePath}" 2>nul || echo.`);
344
+ }
345
+ }
346
+ catch {
347
+ // Continue even if removal fails
348
+ }
349
+ }
350
+ /**
351
+ * Remove OpenClaw domain blocks from hosts file.
352
+ */
353
+ async function removeHostsBlocks(platform) {
354
+ const marker = '# Nox OpenClaw Lockdown';
355
+ const hostsPath = platform.name === 'windows' ? 'C:\\Windows\\System32\\drivers\\etc\\hosts' : '/etc/hosts';
356
+ try {
357
+ const { readFile: readF, writeFile: writeF } = await import('node:fs/promises');
358
+ const content = await readF(hostsPath, 'utf8');
359
+ if (!content.includes(marker)) {
360
+ return; // Nothing to remove
361
+ }
362
+ // Remove the lockdown block
363
+ const startMarker = `${marker} - START`;
364
+ const endMarker = `${marker} - END`;
365
+ const startIdx = content.indexOf(startMarker);
366
+ const endIdx = content.indexOf(endMarker);
367
+ if (startIdx === -1 || endIdx === -1) {
368
+ return;
369
+ }
370
+ const newContent = content.substring(0, startIdx) +
371
+ content.substring(endIdx + endMarker.length);
372
+ if (platform.name === 'windows') {
373
+ await writeF(hostsPath, newContent, 'utf8');
374
+ }
375
+ else {
376
+ // Use temp file + sudo on Unix
377
+ const tempFile = '/tmp/nox-hosts-clean';
378
+ await writeF(tempFile, newContent, 'utf8');
379
+ await exec(`sudo cp "${tempFile}" "${hostsPath}"`);
380
+ await safeRemove(tempFile);
381
+ }
382
+ }
383
+ catch (err) {
384
+ throw new Error(`Failed to modify hosts file: ${err instanceof Error ? err.message : String(err)}`);
385
+ }
386
+ }
387
+ /**
388
+ * Check if lockdown is currently active.
389
+ */
390
+ export async function isLockdownActive(platform) {
391
+ // Check if any lockdown markers exist
392
+ const locations = platform.getCliLocations();
393
+ for (const location of locations) {
394
+ const markerPath = path.join(location, '.nox-lockdown');
395
+ if (await pathExists(markerPath)) {
396
+ return true;
397
+ }
398
+ }
399
+ return false;
400
+ }
401
+ //# sourceMappingURL=lockdown.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lockdown.js","sourceRoot":"","sources":["../../src/isolator/lockdown.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,EAAE,SAAS,EAAgB,MAAM,kBAAkB,CAAC;AAG3D,OAAO,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AACxC,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AACnE,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAM5C;;GAEG;AACH,MAAM,uBAAuB,GAAG;;;;eAIjB,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;CACtC,CAAC;AAEF;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,aAAa,CACjC,QAAkB,EAClB,UAA2B,EAAE;IAE7B,MAAM,OAAO,GAAsB,EAAE,CAAC;IAEtC,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;QACnB,MAAM,CAAC,IAAI,CAAC,0DAA0D,CAAC,CAAC;QACxE,OAAO,CAAC,IAAI,CAAC;YACX,IAAI,EAAE,UAAU;YAChB,MAAM,EAAE,WAAW;YACnB,MAAM,EAAE,SAAS;SAClB,CAAC,CAAC;QACH,OAAO,CAAC,IAAI,CAAC;YACX,IAAI,EAAE,UAAU;YAChB,MAAM,EAAE,cAAc;YACtB,MAAM,EAAE,SAAS;SAClB,CAAC,CAAC;QACH,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,iBAAiB;IACjB,OAAO,CAAC,IAAI,CAAC,MAAM,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC;IAE3C,oCAAoC;IACpC,OAAO,CAAC,IAAI,CAAC,MAAM,eAAe,CAAC,QAAQ,CAAC,CAAC,CAAC;IAE9C,+BAA+B;IAC/B,IAAI,QAAQ,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;QAC/B,OAAO,CAAC,IAAI,CAAC,MAAM,WAAW,CAAC,QAAQ,CAAC,CAAC,CAAC;IAC5C,CAAC;IAED,+BAA+B;IAC/B,OAAO,CAAC,IAAI,CAAC,MAAM,oBAAoB,CAAC,QAAQ,CAAC,CAAC,CAAC;IAEnD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED;;;GAGG;AACH,KAAK,UAAU,YAAY,CAAC,QAAkB;IAC5C,MAAM,MAAM,GAAoB;QAC9B,IAAI,EAAE,UAAU;QAChB,MAAM,EAAE,WAAW;QACnB,MAAM,EAAE,SAAS;KAClB,CAAC;IAEF,MAAM,SAAS,GAAG,QAAQ,CAAC,eAAe,EAAE,CAAC;IAC7C,MAAM,MAAM,GAAa,EAAE,CAAC;IAE5B,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;QACjC,IAAI,CAAC;YACH,oCAAoC;YACpC,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;YACnC,IAAI,CAAC,CAAC,MAAM,UAAU,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;gBAC7B,SAAS,CAAC,8DAA8D;YAC1E,CAAC;YAED,kCAAkC;YAClC,IAAI,MAAM,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;gBAC/B,MAAM,UAAU,CAAC,QAAQ,CAAC,CAAC;YAC7B,CAAC;YAED,gEAAgE;YAChE,MAAM,SAAS,CAAC,QAAQ,CAAC,CAAC;YAC1B,MAAM,SAAS,CACb,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,eAAe,CAAC,EACpC,uBAAuB,EACvB,MAAM,CACP,CAAC;YAEF,+CAA+C;YAC/C,MAAM,aAAa,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;YAExC,MAAM,CAAC,OAAO,CAAC,oBAAoB,QAAQ,EAAE,CAAC,CAAC;QACjD,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,CAAC,IAAI,CAAC,GAAG,QAAQ,KAAK,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAClF,CAAC;IACH,CAAC;IAED,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACxB,MAAM,CAAC,MAAM,GAAG,SAAS,CAAC;IAC5B,CAAC;SAAM,IAAI,MAAM,CAAC,MAAM,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC;QAC5C,MAAM,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC,kBAAkB;QAC7C,MAAM,CAAC,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACnC,CAAC;SAAM,CAAC;QACN,MAAM,CAAC,MAAM,GAAG,QAAQ,CAAC;QACzB,MAAM,CAAC,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACnC,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,eAAe,CAAC,QAAkB;IAC/C,MAAM,MAAM,GAAoB;QAC9B,IAAI,EAAE,UAAU;QAChB,MAAM,EAAE,cAAc;QACtB,MAAM,EAAE,SAAS;KAClB,CAAC;IAEF,IAAI,CAAC;QACH,MAAM,KAAK,GAAG,MAAM,QAAQ,CAAC,WAAW,EAAE,CAAC;QAC3C,MAAM,MAAM,GAAa,EAAE,CAAC;QAE5B,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,MAAM,SAAS,GAAG,QAAQ,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;YACjD,IAAI,CAAC;gBACH,uCAAuC;gBACvC,IAAI,MAAM,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;oBAChC,MAAM,UAAU,CAAC,SAAS,CAAC,CAAC;gBAC9B,CAAC;gBAED,4BAA4B;gBAC5B,MAAM,SAAS,CAAC,SAAS,CAAC,CAAC;gBAC3B,MAAM,SAAS,CACb,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,eAAe,CAAC,EACrC,uBAAuB,EACvB,MAAM,CACP,CAAC;gBAEF,2BAA2B;gBAC3B,MAAM,aAAa,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;gBAEzC,MAAM,CAAC,OAAO,CAAC,+BAA+B,IAAI,KAAK,SAAS,EAAE,CAAC,CAAC;YACtE,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,MAAM,CAAC,IAAI,CAAC,GAAG,SAAS,KAAK,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YACnF,CAAC;QACH,CAAC;QAED,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACxB,MAAM,CAAC,MAAM,GAAG,SAAS,CAAC;QAC5B,CAAC;aAAM,CAAC;YACN,MAAM,CAAC,MAAM,GAAG,QAAQ,CAAC;YACzB,MAAM,CAAC,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACnC,CAAC;IACH,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,CAAC,MAAM,GAAG,QAAQ,CAAC;QACzB,MAAM,CAAC,KAAK,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IAClE,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,WAAW,CAAC,QAAkB;IAC3C,MAAM,MAAM,GAAoB;QAC9B,IAAI,EAAE,UAAU;QAChB,MAAM,EAAE,UAAU;QAClB,MAAM,EAAE,SAAS;KAClB,CAAC;IAEF,MAAM,SAAS,GAAG,QAAQ,CAAC,eAAe,EAAE,CAAC;IAC7C,MAAM,MAAM,GAAa,EAAE,CAAC;IAE5B,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;QACjC,IAAI,CAAC;YACH,iCAAiC;YACjC,IAAI,MAAM,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;gBAC/B,MAAM,UAAU,CAAC,QAAQ,CAAC,CAAC;YAC7B,CAAC;YAED,4BAA4B;YAC5B,MAAM,SAAS,CAAC,QAAQ,CAAC,CAAC;YAC1B,MAAM,SAAS,CACb,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,eAAe,CAAC,EACpC,uBAAuB,EACvB,MAAM,CACP,CAAC;YAEF,2BAA2B;YAC3B,MAAM,aAAa,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;YAExC,MAAM,CAAC,OAAO,CAAC,oBAAoB,QAAQ,EAAE,CAAC,CAAC;QACjD,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,CAAC,IAAI,CAAC,GAAG,QAAQ,KAAK,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAClF,CAAC;IACH,CAAC;IAED,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACxB,MAAM,CAAC,MAAM,GAAG,SAAS,CAAC;IAC5B,CAAC;SAAM,CAAC;QACN,MAAM,CAAC,MAAM,GAAG,QAAQ,CAAC;QACzB,MAAM,CAAC,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACnC,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;;;GAIG;AACH,KAAK,UAAU,oBAAoB,CAAC,QAAkB;IACpD,MAAM,MAAM,GAAoB;QAC9B,IAAI,EAAE,UAAU;QAChB,MAAM,EAAE,oBAAoB;QAC5B,MAAM,EAAE,SAAS;KAClB,CAAC;IAEF,MAAM,MAAM,GAAa,EAAE,CAAC;IAE5B,8CAA8C;IAC9C,IAAI,CAAC;QACH,MAAM,mBAAmB,CAAC,QAAQ,CAAC,CAAC;QACpC,MAAM,CAAC,OAAO,CAAC,mCAAmC,CAAC,CAAC;IACtD,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,CAAC,IAAI,CAAC,UAAU,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAC5E,CAAC;IAED,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACxB,MAAM,CAAC,MAAM,GAAG,SAAS,CAAC;IAC5B,CAAC;SAAM,CAAC;QACN,MAAM,CAAC,MAAM,GAAG,QAAQ,CAAC;QACzB,MAAM,CAAC,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACnC,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,aAAa,CAAC,QAAkB,EAAE,QAAgB;IAC/D,IAAI,CAAC;QACH,IAAI,QAAQ,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YAC/B,uBAAuB;YACvB,MAAM,IAAI,CAAC,sBAAsB,QAAQ,uBAAuB,CAAC,CAAC;YAClE,MAAM,IAAI,CAAC,sBAAsB,QAAQ,uBAAuB,CAAC,CAAC;QACpE,CAAC;aAAM,IAAI,QAAQ,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;YACrC,sBAAsB;YACtB,MAAM,IAAI,CAAC,mBAAmB,QAAQ,uBAAuB,CAAC,CAAC;QACjE,CAAC;aAAM,IAAI,QAAQ,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;YACvC,wBAAwB;YACxB,MAAM,IAAI,CAAC,oBAAoB,QAAQ,kBAAkB,CAAC,CAAC;QAC7D,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,oDAAoD;QACpD,MAAM,CAAC,IAAI,CAAC,kBAAkB,QAAQ,4CAA4C,CAAC,CAAC;IACtF,CAAC;AACH,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,mBAAmB,CAAC,QAAkB;IACnD,MAAM,OAAO,GAAG;QACd,iBAAiB;QACjB,qBAAqB;QACrB,sBAAsB;QACtB,oBAAoB;QACpB,UAAU;QACV,cAAc;QACd,kBAAkB;KACnB,CAAC;IAEF,MAAM,MAAM,GAAG,yBAAyB,CAAC;IACzC,MAAM,YAAY,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACnE,MAAM,OAAO,GAAG,KAAK,MAAM,aAAa,YAAY,KAAK,MAAM,UAAU,CAAC;IAE1E,MAAM,SAAS,GACb,QAAQ,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,4CAA4C,CAAC,CAAC,CAAC,YAAY,CAAC;IAE5F,IAAI,CAAC;QACH,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,UAAU,EAAE,GAAG,MAAM,MAAM,CAAC,kBAAkB,CAAC,CAAC;QACzE,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;QAEhD,2BAA2B;QAC3B,IAAI,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;YAC9B,MAAM,CAAC,IAAI,CAAC,6CAA6C,CAAC,CAAC;YAC3D,OAAO;QACT,CAAC;QAED,0DAA0D;QAC1D,IAAI,QAAQ,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;YAChC,MAAM,UAAU,CAAC,SAAS,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;QAC/C,CAAC;aAAM,CAAC;YACN,mBAAmB;YACnB,MAAM,IAAI,CAAC,SAAS,OAAO,oBAAoB,SAAS,eAAe,CAAC,CAAC;QAC3E,CAAC;IACH,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,IAAI,KAAK,CAAC,gCAAgC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IACtG,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,QAAkB,EAClB,UAA2B,EAAE;IAE7B,MAAM,OAAO,GAAsB,EAAE,CAAC;IAEtC,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;QACnB,MAAM,CAAC,IAAI,CAAC,6CAA6C,CAAC,CAAC;QAC3D,OAAO,CAAC,IAAI,CAAC;YACX,IAAI,EAAE,UAAU;YAChB,MAAM,EAAE,KAAK;YACb,MAAM,EAAE,SAAS;SAClB,CAAC,CAAC;QACH,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,+CAA+C;IAC/C,MAAM,QAAQ,GAAa;QACzB,GAAG,QAAQ,CAAC,eAAe,EAAE;QAC7B,GAAG,QAAQ,CAAC,eAAe,EAAE;KAC9B,CAAC;IAEF,wBAAwB;IACxB,IAAI,CAAC;QACH,MAAM,KAAK,GAAG,MAAM,QAAQ,CAAC,WAAW,EAAE,CAAC;QAC3C,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC;QAChD,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,gCAAgC;IAClC,CAAC;IAED,KAAK,MAAM,CAAC,IAAI,QAAQ,EAAE,CAAC;QACzB,IAAI,MAAM,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC;YACxB,IAAI,CAAC;gBACH,4BAA4B;gBAC5B,MAAM,eAAe,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;gBACnC,qCAAqC;gBACrC,MAAM,cAAc,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,eAAe,CAAC,CAAC;gBACrD,IAAI,MAAM,UAAU,CAAC,cAAc,CAAC,EAAE,CAAC;oBACrC,MAAM,UAAU,CAAC,CAAC,CAAC,CAAC;oBACpB,MAAM,CAAC,OAAO,CAAC,wBAAwB,CAAC,EAAE,CAAC,CAAC;gBAC9C,CAAC;YACH,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,MAAM,CAAC,IAAI,CAAC,gCAAgC,CAAC,KAAK,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YACxG,CAAC;QACH,CAAC;IACH,CAAC;IAED,4BAA4B;IAC5B,IAAI,CAAC;QACH,MAAM,iBAAiB,CAAC,QAAQ,CAAC,CAAC;QAClC,MAAM,CAAC,OAAO,CAAC,uCAAuC,CAAC,CAAC;IAC1D,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,CAAC,IAAI,CAAC,kCAAkC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IACpG,CAAC;IAED,OAAO,CAAC,IAAI,CAAC;QACX,IAAI,EAAE,UAAU;QAChB,MAAM,EAAE,KAAK;QACb,MAAM,EAAE,SAAS;KAClB,CAAC,CAAC;IAEH,OAAO,OAAO,CAAC;AACjB,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,eAAe,CAAC,QAAkB,EAAE,QAAgB;IACjE,IAAI,CAAC;QACH,IAAI,QAAQ,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YAC/B,MAAM,IAAI,CAAC,wBAAwB,QAAQ,uBAAuB,CAAC,CAAC;YACpE,MAAM,IAAI,CAAC,wBAAwB,QAAQ,uBAAuB,CAAC,CAAC;QACtE,CAAC;aAAM,IAAI,QAAQ,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;YACrC,MAAM,IAAI,CAAC,mBAAmB,QAAQ,uBAAuB,CAAC,CAAC;QACjE,CAAC;aAAM,IAAI,QAAQ,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;YACvC,MAAM,IAAI,CAAC,oBAAoB,QAAQ,kBAAkB,CAAC,CAAC;QAC7D,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,iCAAiC;IACnC,CAAC;AACH,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,iBAAiB,CAAC,QAAkB;IACjD,MAAM,MAAM,GAAG,yBAAyB,CAAC;IACzC,MAAM,SAAS,GACb,QAAQ,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,4CAA4C,CAAC,CAAC,CAAC,YAAY,CAAC;IAE5F,IAAI,CAAC;QACH,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,MAAM,MAAM,CAAC,kBAAkB,CAAC,CAAC;QAChF,MAAM,OAAO,GAAG,MAAM,KAAK,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;QAE/C,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;YAC9B,OAAO,CAAC,oBAAoB;QAC9B,CAAC;QAED,4BAA4B;QAC5B,MAAM,WAAW,GAAG,GAAG,MAAM,UAAU,CAAC;QACxC,MAAM,SAAS,GAAG,GAAG,MAAM,QAAQ,CAAC;QACpC,MAAM,QAAQ,GAAG,OAAO,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;QAC9C,MAAM,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QAE1C,IAAI,QAAQ,KAAK,CAAC,CAAC,IAAI,MAAM,KAAK,CAAC,CAAC,EAAE,CAAC;YACrC,OAAO;QACT,CAAC;QAED,MAAM,UAAU,GACd,OAAO,CAAC,SAAS,CAAC,CAAC,EAAE,QAAQ,CAAC;YAC9B,OAAO,CAAC,SAAS,CAAC,MAAM,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC;QAE/C,IAAI,QAAQ,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;YAChC,MAAM,MAAM,CAAC,SAAS,EAAE,UAAU,EAAE,MAAM,CAAC,CAAC;QAC9C,CAAC;aAAM,CAAC;YACN,+BAA+B;YAC/B,MAAM,QAAQ,GAAG,sBAAsB,CAAC;YACxC,MAAM,MAAM,CAAC,QAAQ,EAAE,UAAU,EAAE,MAAM,CAAC,CAAC;YAC3C,MAAM,IAAI,CAAC,YAAY,QAAQ,MAAM,SAAS,GAAG,CAAC,CAAC;YACnD,MAAM,UAAU,CAAC,QAAQ,CAAC,CAAC;QAC7B,CAAC;IACH,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,IAAI,KAAK,CAAC,gCAAgC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IACtG,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,QAAkB;IACvD,sCAAsC;IACtC,MAAM,SAAS,GAAG,QAAQ,CAAC,eAAe,EAAE,CAAC;IAC7C,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;QACjC,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,eAAe,CAAC,CAAC;QACxD,IAAI,MAAM,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;YACjC,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC"}
@@ -0,0 +1,39 @@
1
+ /**
2
+ * Quarantine management for OpenClaw artifacts.
3
+ * Moves files to a secure quarantine directory with manifest tracking.
4
+ */
5
+ import type { DetectionResult } from '../types/detection.js';
6
+ import type { IsolationAction, QuarantineManifest, QuarantineResult } from '../types/isolation.js';
7
+ import type { Platform } from '../platform/index.js';
8
+ export interface QuarantineOptions {
9
+ dryRun?: boolean;
10
+ }
11
+ /**
12
+ * Quarantine all detected OpenClaw artifacts.
13
+ * Moves files to a secure location and creates a manifest for potential restoration.
14
+ */
15
+ export declare function quarantineArtifacts(platform: Platform, detection: DetectionResult, options?: QuarantineOptions): Promise<{
16
+ action: IsolationAction;
17
+ result?: QuarantineResult;
18
+ }>;
19
+ /**
20
+ * List all quarantined items.
21
+ */
22
+ export declare function listQuarantined(platform: Platform): Promise<QuarantineManifest[]>;
23
+ /**
24
+ * Restore quarantined artifacts to their original locations.
25
+ * If the destination already exists, it will be removed first.
26
+ */
27
+ export declare function restoreQuarantined(platform: Platform, quarantineId: string): Promise<{
28
+ success: boolean;
29
+ restored: number;
30
+ errors: string[];
31
+ }>;
32
+ /**
33
+ * Permanently delete quarantined artifacts.
34
+ */
35
+ export declare function deleteQuarantined(platform: Platform, quarantineId: string): Promise<{
36
+ success: boolean;
37
+ error?: string;
38
+ }>;
39
+ //# sourceMappingURL=quarantine.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"quarantine.d.ts","sourceRoot":"","sources":["../../src/isolator/quarantine.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAKH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAC7D,OAAO,KAAK,EACV,eAAe,EAEf,kBAAkB,EAClB,gBAAgB,EACjB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAIrD,MAAM,WAAW,iBAAiB;IAChC,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAcD;;;GAGG;AACH,wBAAsB,mBAAmB,CACvC,QAAQ,EAAE,QAAQ,EAClB,SAAS,EAAE,eAAe,EAC1B,OAAO,GAAE,iBAAsB,GAC9B,OAAO,CAAC;IAAE,MAAM,EAAE,eAAe,CAAC;IAAC,MAAM,CAAC,EAAE,gBAAgB,CAAA;CAAE,CAAC,CAgJjE;AAgED;;GAEG;AACH,wBAAsB,eAAe,CACnC,QAAQ,EAAE,QAAQ,GACjB,OAAO,CAAC,kBAAkB,EAAE,CAAC,CA8B/B;AAED;;;GAGG;AACH,wBAAsB,kBAAkB,CACtC,QAAQ,EAAE,QAAQ,EAClB,YAAY,EAAE,MAAM,GACnB,OAAO,CAAC;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,EAAE,CAAA;CAAE,CAAC,CAyGnE;AAED;;GAEG;AACH,wBAAsB,iBAAiB,CACrC,QAAQ,EAAE,QAAQ,EAClB,YAAY,EAAE,MAAM,GACnB,OAAO,CAAC;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CA6B/C"}