@wrongstack/tools 0.284.1 → 0.286.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 (330) hide show
  1. package/README.md +19 -0
  2. package/dist/_concurrency.d.ts +16 -0
  3. package/dist/_concurrency.d.ts.map +1 -0
  4. package/dist/_danger-detect.d.ts +54 -0
  5. package/dist/_danger-detect.d.ts.map +1 -0
  6. package/dist/_edit-match.d.ts +86 -0
  7. package/dist/_edit-match.d.ts.map +1 -0
  8. package/dist/_env.d.ts +6 -0
  9. package/dist/_env.d.ts.map +1 -0
  10. package/dist/_fetch-guard.d.ts +31 -0
  11. package/dist/_fetch-guard.d.ts.map +1 -0
  12. package/dist/_output-spool.d.ts +38 -0
  13. package/dist/_output-spool.d.ts.map +1 -0
  14. package/dist/_redact-command.d.ts +6 -0
  15. package/dist/_redact-command.d.ts.map +1 -0
  16. package/dist/_regex.d.ts +39 -0
  17. package/dist/_regex.d.ts.map +1 -0
  18. package/dist/_session-shell.d.ts +73 -0
  19. package/dist/_session-shell.d.ts.map +1 -0
  20. package/dist/_shell-pick.d.ts +158 -0
  21. package/dist/_shell-pick.d.ts.map +1 -0
  22. package/dist/_spawn-stream.d.ts +32 -0
  23. package/dist/_spawn-stream.d.ts.map +1 -0
  24. package/dist/_syntax-check.d.ts +16 -0
  25. package/dist/_syntax-check.d.ts.map +1 -0
  26. package/dist/_util.d.ts +68 -0
  27. package/dist/_util.d.ts.map +1 -0
  28. package/dist/_win32-resolve.d.ts +42 -0
  29. package/dist/_win32-resolve.d.ts.map +1 -0
  30. package/dist/audit.d.ts +4 -5
  31. package/dist/audit.d.ts.map +1 -0
  32. package/dist/audit.js +2743 -28
  33. package/dist/audit.js.map +7 -1
  34. package/dist/bash-kill-guard.d.ts +62 -0
  35. package/dist/bash-kill-guard.d.ts.map +1 -0
  36. package/dist/bash.d.ts +4 -5
  37. package/dist/bash.d.ts.map +1 -0
  38. package/dist/bash.js +59 -30
  39. package/dist/bash.js.map +7 -1
  40. package/dist/batch-tool-use.d.ts +4 -5
  41. package/dist/batch-tool-use.d.ts.map +1 -0
  42. package/dist/batch-tool-use.js +3 -3
  43. package/dist/batch-tool-use.js.map +7 -1
  44. package/dist/browser/artifacts.d.ts +13 -0
  45. package/dist/browser/artifacts.d.ts.map +1 -0
  46. package/dist/browser/index.d.ts +7 -0
  47. package/dist/browser/index.d.ts.map +1 -0
  48. package/dist/browser/index.js +1264 -0
  49. package/dist/browser/index.js.map +7 -0
  50. package/dist/browser/manager.d.ts +57 -0
  51. package/dist/browser/manager.d.ts.map +1 -0
  52. package/dist/browser/network-guard-proxy.d.ts +23 -0
  53. package/dist/browser/network-guard-proxy.d.ts.map +1 -0
  54. package/dist/browser/security.d.ts +29 -0
  55. package/dist/browser/security.d.ts.map +1 -0
  56. package/dist/browser/tools.d.ts +62 -0
  57. package/dist/browser/tools.d.ts.map +1 -0
  58. package/dist/browser/types.d.ts +60 -0
  59. package/dist/browser/types.d.ts.map +1 -0
  60. package/dist/builtin.d.ts +11 -12
  61. package/dist/builtin.d.ts.map +1 -0
  62. package/dist/builtin.js +8099 -2178
  63. package/dist/builtin.js.map +7 -1
  64. package/dist/circuit-breaker.d.ts +4 -5
  65. package/dist/circuit-breaker.d.ts.map +1 -0
  66. package/dist/circuit-breaker.js +3 -3
  67. package/dist/circuit-breaker.js.map +7 -1
  68. package/dist/codebase-index/background-indexer.d.ts +116 -0
  69. package/dist/codebase-index/background-indexer.d.ts.map +1 -0
  70. package/dist/codebase-index/bm25.d.ts +40 -0
  71. package/dist/codebase-index/bm25.d.ts.map +1 -0
  72. package/dist/codebase-index/circuit-breaker.d.ts +94 -0
  73. package/dist/codebase-index/circuit-breaker.d.ts.map +1 -0
  74. package/dist/codebase-index/codebase-index-tool.d.ts +17 -0
  75. package/dist/codebase-index/codebase-index-tool.d.ts.map +1 -0
  76. package/dist/codebase-index/codebase-search-tool.d.ts +43 -0
  77. package/dist/codebase-index/codebase-search-tool.d.ts.map +1 -0
  78. package/dist/codebase-index/codebase-stats-tool.d.ts +23 -0
  79. package/dist/codebase-index/codebase-stats-tool.d.ts.map +1 -0
  80. package/dist/codebase-index/gitignore.d.ts +22 -0
  81. package/dist/codebase-index/gitignore.d.ts.map +1 -0
  82. package/dist/codebase-index/go-parser.d.ts +16 -0
  83. package/dist/codebase-index/go-parser.d.ts.map +1 -0
  84. package/dist/codebase-index/index-service.d.ts +25 -0
  85. package/dist/codebase-index/index-service.d.ts.map +1 -0
  86. package/dist/codebase-index/index.d.ts +23 -271
  87. package/dist/codebase-index/index.d.ts.map +1 -0
  88. package/dist/codebase-index/index.js +136 -68
  89. package/dist/codebase-index/index.js.map +7 -1
  90. package/dist/codebase-index/indexer.d.ts +28 -0
  91. package/dist/codebase-index/indexer.d.ts.map +1 -0
  92. package/dist/codebase-index/json-parser.d.ts +8 -0
  93. package/dist/codebase-index/json-parser.d.ts.map +1 -0
  94. package/dist/codebase-index/lsp-kind.d.ts +53 -0
  95. package/dist/codebase-index/lsp-kind.d.ts.map +1 -0
  96. package/dist/codebase-index/py-parser.d.ts +16 -0
  97. package/dist/codebase-index/py-parser.d.ts.map +1 -0
  98. package/dist/codebase-index/refs-extractor.d.ts +25 -0
  99. package/dist/codebase-index/refs-extractor.d.ts.map +1 -0
  100. package/dist/codebase-index/rs-parser.d.ts +8 -0
  101. package/dist/codebase-index/rs-parser.d.ts.map +1 -0
  102. package/dist/codebase-index/schema.d.ts +82 -0
  103. package/dist/codebase-index/schema.d.ts.map +1 -0
  104. package/dist/codebase-index/ts-parser.d.ts +30 -0
  105. package/dist/codebase-index/ts-parser.d.ts.map +1 -0
  106. package/dist/codebase-index/worker-protocol.d.ts +77 -0
  107. package/dist/codebase-index/worker-protocol.d.ts.map +1 -0
  108. package/dist/codebase-index/worker.d.ts +16 -2
  109. package/dist/codebase-index/worker.d.ts.map +1 -0
  110. package/dist/codebase-index/worker.js +103 -65
  111. package/dist/codebase-index/worker.js.map +7 -1
  112. package/dist/codebase-index/writer.d.ts +189 -0
  113. package/dist/codebase-index/writer.d.ts.map +1 -0
  114. package/dist/codebase-index/yaml-parser.d.ts +8 -0
  115. package/dist/codebase-index/yaml-parser.d.ts.map +1 -0
  116. package/dist/design.d.ts +38 -0
  117. package/dist/design.d.ts.map +1 -0
  118. package/dist/design.js +270 -0
  119. package/dist/design.js.map +7 -0
  120. package/dist/diff.d.ts +4 -5
  121. package/dist/diff.d.ts.map +1 -0
  122. package/dist/diff.js +14 -12
  123. package/dist/diff.js.map +7 -1
  124. package/dist/document.d.ts +4 -5
  125. package/dist/document.d.ts.map +1 -0
  126. package/dist/document.js +8 -7
  127. package/dist/document.js.map +7 -1
  128. package/dist/e2e.d.ts +56 -0
  129. package/dist/e2e.d.ts.map +1 -0
  130. package/dist/edit.d.ts +5 -36
  131. package/dist/edit.d.ts.map +1 -0
  132. package/dist/edit.js +28 -16
  133. package/dist/edit.js.map +7 -1
  134. package/dist/exec.d.ts +67 -2
  135. package/dist/exec.d.ts.map +1 -0
  136. package/dist/exec.js +51 -26
  137. package/dist/exec.js.map +7 -1
  138. package/dist/fetch.d.ts +4 -32
  139. package/dist/fetch.d.ts.map +1 -0
  140. package/dist/fetch.js +89 -77
  141. package/dist/fetch.js.map +7 -1
  142. package/dist/format.d.ts +4 -5
  143. package/dist/format.d.ts.map +1 -0
  144. package/dist/format.js +2415 -28
  145. package/dist/format.js.map +7 -1
  146. package/dist/git.d.ts +4 -5
  147. package/dist/git.d.ts.map +1 -0
  148. package/dist/git.js +10 -9
  149. package/dist/git.js.map +7 -1
  150. package/dist/glob.d.ts +4 -5
  151. package/dist/glob.d.ts.map +1 -0
  152. package/dist/glob.js +15 -12
  153. package/dist/glob.js.map +7 -1
  154. package/dist/grep.d.ts +4 -5
  155. package/dist/grep.d.ts.map +1 -0
  156. package/dist/grep.js +13 -10
  157. package/dist/grep.js.map +7 -1
  158. package/dist/index.d.ts +21 -724
  159. package/dist/index.d.ts.map +1 -0
  160. package/dist/index.js +8955 -2866
  161. package/dist/index.js.map +7 -1
  162. package/dist/install.d.ts +4 -5
  163. package/dist/install.d.ts.map +1 -0
  164. package/dist/install.js +2680 -31
  165. package/dist/install.js.map +7 -1
  166. package/dist/json.d.ts +4 -5
  167. package/dist/json.d.ts.map +1 -0
  168. package/dist/json.js +13 -11
  169. package/dist/json.js.map +7 -1
  170. package/dist/kanban.d.ts +107 -0
  171. package/dist/kanban.d.ts.map +1 -0
  172. package/dist/kanban.js +845 -0
  173. package/dist/kanban.js.map +7 -0
  174. package/dist/languages/detect.d.ts +3 -0
  175. package/dist/languages/detect.d.ts.map +1 -0
  176. package/dist/languages/diagnostics.d.ts +15 -0
  177. package/dist/languages/diagnostics.d.ts.map +1 -0
  178. package/dist/languages/execute-tool.d.ts +34 -0
  179. package/dist/languages/execute-tool.d.ts.map +1 -0
  180. package/dist/languages/execute.d.ts +18 -0
  181. package/dist/languages/execute.d.ts.map +1 -0
  182. package/dist/languages/index.d.ts +12 -0
  183. package/dist/languages/index.d.ts.map +1 -0
  184. package/dist/languages/index.js +4457 -0
  185. package/dist/languages/index.js.map +7 -0
  186. package/dist/languages/legacy-bridge.d.ts +29 -0
  187. package/dist/languages/legacy-bridge.d.ts.map +1 -0
  188. package/dist/languages/package-tool.d.ts +29 -0
  189. package/dist/languages/package-tool.d.ts.map +1 -0
  190. package/dist/languages/plan.d.ts +4 -0
  191. package/dist/languages/plan.d.ts.map +1 -0
  192. package/dist/languages/profile-helpers.d.ts +14 -0
  193. package/dist/languages/profile-helpers.d.ts.map +1 -0
  194. package/dist/languages/profiles/additional.d.ts +3 -0
  195. package/dist/languages/profiles/additional.d.ts.map +1 -0
  196. package/dist/languages/profiles/primary.d.ts +3 -0
  197. package/dist/languages/profiles/primary.d.ts.map +1 -0
  198. package/dist/languages/registry.d.ts +11 -0
  199. package/dist/languages/registry.d.ts.map +1 -0
  200. package/dist/languages/tool.d.ts +32 -0
  201. package/dist/languages/tool.d.ts.map +1 -0
  202. package/dist/languages/types.d.ts +207 -0
  203. package/dist/languages/types.d.ts.map +1 -0
  204. package/dist/lint.d.ts +4 -5
  205. package/dist/lint.d.ts.map +1 -0
  206. package/dist/lint.js +2415 -27
  207. package/dist/lint.js.map +7 -1
  208. package/dist/logs.d.ts +4 -5
  209. package/dist/logs.d.ts.map +1 -0
  210. package/dist/logs.js +16 -10
  211. package/dist/logs.js.map +7 -1
  212. package/dist/memory.d.ts +7 -8
  213. package/dist/memory.d.ts.map +1 -0
  214. package/dist/memory.js +7 -5
  215. package/dist/memory.js.map +7 -1
  216. package/dist/mode.d.ts +4 -5
  217. package/dist/mode.d.ts.map +1 -0
  218. package/dist/mode.js +3 -3
  219. package/dist/mode.js.map +7 -1
  220. package/dist/next-steps.d.ts +5 -6
  221. package/dist/next-steps.d.ts.map +1 -0
  222. package/dist/next-steps.js +5 -4
  223. package/dist/next-steps.js.map +7 -1
  224. package/dist/outdated.d.ts +4 -5
  225. package/dist/outdated.d.ts.map +1 -0
  226. package/dist/outdated.js +4777 -68
  227. package/dist/outdated.js.map +7 -1
  228. package/dist/pack.d.ts +3 -6
  229. package/dist/pack.d.ts.map +1 -0
  230. package/dist/pack.js +8134 -2204
  231. package/dist/pack.js.map +7 -1
  232. package/dist/patch.d.ts +4 -5
  233. package/dist/patch.d.ts.map +1 -0
  234. package/dist/patch.js +18 -16
  235. package/dist/patch.js.map +7 -1
  236. package/dist/plan.d.ts +55 -0
  237. package/dist/plan.d.ts.map +1 -0
  238. package/dist/plan.js +280 -0
  239. package/dist/plan.js.map +7 -0
  240. package/dist/process-guardian.d.ts +100 -0
  241. package/dist/process-guardian.d.ts.map +1 -0
  242. package/dist/process-registry-persistent.d.ts +121 -0
  243. package/dist/process-registry-persistent.d.ts.map +1 -0
  244. package/dist/process-registry.d.ts +13 -17
  245. package/dist/process-registry.d.ts.map +1 -0
  246. package/dist/process-registry.js +15 -9
  247. package/dist/process-registry.js.map +7 -1
  248. package/dist/ps-slash.d.ts +106 -0
  249. package/dist/ps-slash.d.ts.map +1 -0
  250. package/dist/ps-slash.js +1291 -0
  251. package/dist/ps-slash.js.map +7 -0
  252. package/dist/read.d.ts +4 -5
  253. package/dist/read.d.ts.map +1 -0
  254. package/dist/read.js +13 -11
  255. package/dist/read.js.map +7 -1
  256. package/dist/replace.d.ts +4 -5
  257. package/dist/replace.d.ts.map +1 -0
  258. package/dist/replace.js +26 -13
  259. package/dist/replace.js.map +7 -1
  260. package/dist/scaffold.d.ts +4 -5
  261. package/dist/scaffold.d.ts.map +1 -0
  262. package/dist/scaffold.js +16 -14
  263. package/dist/scaffold.js.map +7 -1
  264. package/dist/search.d.ts +5 -6
  265. package/dist/search.d.ts.map +1 -0
  266. package/dist/search.js +32 -27
  267. package/dist/search.js.map +7 -1
  268. package/dist/set-working-dir.d.ts +18 -0
  269. package/dist/set-working-dir.d.ts.map +1 -0
  270. package/dist/shim/node-sqlite.d.ts +3 -0
  271. package/dist/shim/node-sqlite.d.ts.map +1 -0
  272. package/dist/skill.d.ts +45 -0
  273. package/dist/skill.d.ts.map +1 -0
  274. package/dist/skill.js +175 -0
  275. package/dist/skill.js.map +7 -0
  276. package/dist/spawn-background.d.ts +80 -0
  277. package/dist/spawn-background.d.ts.map +1 -0
  278. package/dist/task.d.ts +35 -0
  279. package/dist/task.d.ts.map +1 -0
  280. package/dist/task.js +380 -0
  281. package/dist/task.js.map +7 -0
  282. package/dist/test.d.ts +4 -5
  283. package/dist/test.d.ts.map +1 -0
  284. package/dist/test.js +2419 -27
  285. package/dist/test.js.map +7 -1
  286. package/dist/todo.d.ts +4 -5
  287. package/dist/todo.d.ts.map +1 -0
  288. package/dist/todo.js +5 -5
  289. package/dist/todo.js.map +7 -1
  290. package/dist/tool-diff.d.ts +16 -17
  291. package/dist/tool-diff.d.ts.map +1 -0
  292. package/dist/tool-diff.js +11 -3
  293. package/dist/tool-diff.js.map +7 -1
  294. package/dist/tool-help.d.ts +4 -5
  295. package/dist/tool-help.d.ts.map +1 -0
  296. package/dist/tool-help.js +3 -3
  297. package/dist/tool-help.js.map +7 -1
  298. package/dist/tool-icon-map.d.ts +46 -0
  299. package/dist/tool-icon-map.d.ts.map +1 -0
  300. package/dist/tool-icons.d.ts +5 -6
  301. package/dist/tool-icons.d.ts.map +1 -0
  302. package/dist/tool-icons.js +16 -4
  303. package/dist/tool-icons.js.map +7 -1
  304. package/dist/tool-search.d.ts +4 -5
  305. package/dist/tool-search.d.ts.map +1 -0
  306. package/dist/tool-search.js +3 -3
  307. package/dist/tool-search.js.map +7 -1
  308. package/dist/tool-summary.d.ts +4 -5
  309. package/dist/tool-summary.d.ts.map +1 -0
  310. package/dist/tool-summary.js +5 -3
  311. package/dist/tool-summary.js.map +7 -1
  312. package/dist/tool-use.d.ts +4 -5
  313. package/dist/tool-use.d.ts.map +1 -0
  314. package/dist/tool-use.js +3 -3
  315. package/dist/tool-use.js.map +7 -1
  316. package/dist/tree.d.ts +4 -5
  317. package/dist/tree.d.ts.map +1 -0
  318. package/dist/tree.js +11 -9
  319. package/dist/tree.js.map +7 -1
  320. package/dist/typecheck.d.ts +4 -5
  321. package/dist/typecheck.d.ts.map +1 -0
  322. package/dist/typecheck.js +2416 -28
  323. package/dist/typecheck.js.map +7 -1
  324. package/dist/write.d.ts +4 -5
  325. package/dist/write.d.ts.map +1 -0
  326. package/dist/write.js +21 -16
  327. package/dist/write.js.map +7 -1
  328. package/package.json +39 -6
  329. package/dist/background-indexer-BeDBxfSh.d.ts +0 -371
  330. package/dist/exec-2OKoT6tk.d.ts +0 -121
@@ -0,0 +1,62 @@
1
+ /**
2
+ * Bash Kill Guard — Intercepts bash kill commands and prevents them from
3
+ * terminating WrongStack processes (either the agent itself or child processes
4
+ * it has spawned).
5
+ *
6
+ * This module hooks into the bash tool's command parsing to detect and block
7
+ * dangerous kill commands targeting protected PIDs.
8
+ *
9
+ * Handles:
10
+ * - Direct kill commands: kill -9 12345
11
+ * - Shell -c wrapped: bash -c "kill -9 12345" (any shell path — see P2 #10)
12
+ * - Full path kills: /bin/kill -9 12345
13
+ * - Name-based kills: pkill, killall, pgrep
14
+ * - Windows equivalents: taskkill
15
+ *
16
+ * Known bypasses (NOT handled — this is a static regex parser, not a shell):
17
+ * Static analysis of shell strings is inherently defeatable by obfuscation.
18
+ * This guard is one defense-in-depth layer behind the permission policy and
19
+ * the project-escape checks, not the sole gate. Treat a miss here as expected,
20
+ * not as a hole to plug with ever-more-clever regexes. The patterns below are
21
+ * known to evade detection:
22
+ * - Base64 / decode pipes: `echo bCAtOSAxMjM0NQ== | base64 -d | sh`
23
+ * - Variable indirection: `sig=-9; target=12345; kill $sig $target`
24
+ * - Command substitution: `$(printf kill) -9 12345`
25
+ * - String concatenation / quote-splitting: `ki''ll -9 12345`, `k"i"ll 12345`
26
+ * - Aliases and functions: `alias x=kill; x -9 12345`
27
+ * - eval / source: `eval "ki""ll -9 12345"`
28
+ *
29
+ * Mitigation: rely on the permission policy (confirm/deny gate) and YOLO
30
+ * destructive detection as the primary controls; this guard is a best-effort
31
+ * fast path for the common non-obfuscated forms.
32
+ */
33
+ export interface KillCommand {
34
+ pid?: number;
35
+ name?: string;
36
+ signal?: string;
37
+ isGroupKill: boolean;
38
+ isAllKill: boolean;
39
+ originalCommand: string;
40
+ }
41
+ export interface KillCheckResult {
42
+ blocked: boolean;
43
+ reason?: string;
44
+ }
45
+ /**
46
+ * Parse a kill command string to extract PID and signal.
47
+ */
48
+ export declare function parseKillCommand(command: string): KillCommand | null;
49
+ /**
50
+ * Check if a parsed kill command targets a protected WrongStack process.
51
+ */
52
+ export declare function isKillProtected(kill: KillCommand): Promise<boolean>;
53
+ /**
54
+ * Main entry point: Check if a bash command contains a kill operation targeting protected PIDs.
55
+ * Returns a result indicating whether to block and why.
56
+ */
57
+ export declare function checkAndBlockKillCommand(command: string): Promise<KillCheckResult>;
58
+ /**
59
+ * Get a safe error message for blocked kill commands.
60
+ */
61
+ export declare function getBlockedKillMessage(pid: number, signal?: string): string;
62
+ //# sourceMappingURL=bash-kill-guard.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bash-kill-guard.d.ts","sourceRoot":"","sources":["../src/bash-kill-guard.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AAOH,MAAM,WAAW,WAAW;IAC1B,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,OAAO,CAAC;IACrB,SAAS,EAAE,OAAO,CAAC;IACnB,eAAe,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAwED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,WAAW,GAAG,IAAI,CA6FpE;AAqBD;;GAEG;AACH,wBAAsB,eAAe,CAAC,IAAI,EAAE,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC,CAqCzE;AAED;;;GAGG;AACH,wBAAsB,wBAAwB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC,CA2CxF;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,CAK1E"}
package/dist/bash.d.ts CHANGED
@@ -1,5 +1,4 @@
1
- import { Tool } from '@wrongstack/core';
2
-
1
+ import type { Tool } from '@wrongstack/core';
3
2
  interface BashInput {
4
3
  command: string;
5
4
  timeout_ms?: number | undefined;
@@ -12,6 +11,6 @@ interface BashOutput {
12
11
  pid?: number | null | undefined;
13
12
  error?: string | undefined;
14
13
  }
15
- declare const bashTool: Tool<BashInput, BashOutput>;
16
-
17
- export { type BashInput, type BashOutput, bashTool };
14
+ export declare const bashTool: Tool<BashInput, BashOutput>;
15
+ export type { BashInput, BashOutput };
16
+ //# sourceMappingURL=bash.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bash.d.ts","sourceRoot":"","sources":["../src/bash.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAW,IAAI,EAAmB,MAAM,kBAAkB,CAAC;AASvE,UAAU,SAAS;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAChC,UAAU,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;CAClC;AAED,UAAU,UAAU;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,SAAS,EAAE,OAAO,CAAC;IACnB,GAAG,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC;IAChC,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CAC5B;AA4BD,eAAO,MAAM,QAAQ,EAAE,IAAI,CAAC,SAAS,EAAE,UAAU,CAkmBhD,CAAC;AAGF,YAAY,EAAE,SAAS,EAAE,UAAU,EAAE,CAAC"}
package/dist/bash.js CHANGED
@@ -1,13 +1,15 @@
1
- import { spawn } from 'node:child_process';
2
- import * as os2 from 'node:os';
3
- import * as Core from '@wrongstack/core';
4
- import { buildChildEnv, expectDefined, wstackGlobalRoot } from '@wrongstack/core';
5
- import * as fs2 from 'node:fs';
6
- import { mkdirSync, createWriteStream } from 'node:fs';
7
- import * as fs from 'node:fs/promises';
8
- import * as path from 'node:path';
9
-
10
1
  // src/bash.ts
2
+ import { spawn as spawn2 } from "node:child_process";
3
+ import * as os4 from "node:os";
4
+
5
+ // src/_env.ts
6
+ import { buildChildEnv } from "@wrongstack/core";
7
+
8
+ // src/_output-spool.ts
9
+ import { createWriteStream, mkdirSync } from "node:fs";
10
+ import * as fsp from "node:fs/promises";
11
+ import * as path from "node:path";
12
+ import { wstackGlobalRoot } from "@wrongstack/core";
11
13
  var SPOOL_RETENTION_MS = 7 * 24 * 60 * 60 * 1e3;
12
14
  var SPOOL_WRITE_HWM_BYTES = 4 * 1024 * 1024;
13
15
  var sweepStarted = false;
@@ -20,12 +22,12 @@ function sweepOldSpoolFiles(dir) {
20
22
  void (async () => {
21
23
  try {
22
24
  const now = Date.now();
23
- for (const name of await fs.readdir(dir)) {
25
+ for (const name of await fsp.readdir(dir)) {
24
26
  if (!name.endsWith(".log")) continue;
25
27
  const p = path.join(dir, name);
26
28
  try {
27
- const st = await fs.stat(p);
28
- if (now - st.mtimeMs > SPOOL_RETENTION_MS) await fs.unlink(p);
29
+ const st = await fsp.stat(p);
30
+ if (now - st.mtimeMs > SPOOL_RETENTION_MS) await fsp.unlink(p);
29
31
  } catch {
30
32
  }
31
33
  }
@@ -39,7 +41,7 @@ function spoolNote(info) {
39
41
  [output truncated \u2014 full ${info.bytes} bytes at ${info.path}${dropped}; read/grep that file selectively instead of re-running with more output]`;
40
42
  }
41
43
  function createOutputSpool(opts) {
42
- const threshold = opts.thresholdBytes;
44
+ const threshold = opts.thresholdBytes ?? 32768;
43
45
  const safeTool = opts.tool.replace(/[^a-zA-Z0-9._-]+/g, "_").slice(0, 40) || "tool";
44
46
  let head = "";
45
47
  let headBytes = 0;
@@ -109,6 +111,9 @@ function createOutputSpool(opts) {
109
111
  }
110
112
  };
111
113
  }
114
+
115
+ // src/_util.ts
116
+ import * as Core from "@wrongstack/core";
112
117
  var COMMAND_OUTPUT_MAX_BYTES = 32768;
113
118
  var REPEAT_RUN_THRESHOLD = 3;
114
119
  function collapseCarriageReturns(text) {
@@ -180,6 +185,10 @@ function normalizeCommandOutput(raw, opts = {}) {
180
185
  return truncateHeadTail(text, opts.maxBytes ?? COMMAND_OUTPUT_MAX_BYTES);
181
186
  }
182
187
 
188
+ // src/process-registry.ts
189
+ import { spawn } from "node:child_process";
190
+ import * as os from "node:os";
191
+
183
192
  // src/circuit-breaker.ts
184
193
  var DEFAULT_MAX_CONSECUTIVE_FAILURES = 5;
185
194
  var DEFAULT_SLOW_CALL_THRESHOLD_MS = 18e4;
@@ -372,7 +381,8 @@ var CircuitBreaker = class {
372
381
  }
373
382
  };
374
383
 
375
- // src/process-registry.ts
384
+ // src/_redact-command.ts
385
+ import { expectDefined } from "@wrongstack/core";
376
386
  var SENSITIVE_FLAG_PATTERNS = [
377
387
  // --flag=value or --flag "value" (value captured up to next space or comma)
378
388
  /--(?:token|password|passwd|pwd|secret|api[-_]?key|api[-_]?secret|auth|credential|private[-_]?key|access[-_]?key|github[-_]?token|gh[-_]?token|bearer|jwt|oauth|pin|pincode|passphrase|access[-_]?token)(?:[=\s,][^\s]*)?/gi,
@@ -402,6 +412,8 @@ function redactCommand(cmd) {
402
412
  }
403
413
  return result;
404
414
  }
415
+
416
+ // src/process-registry.ts
405
417
  var DEFAULT_GRACE_MS = 2e3;
406
418
  var WIN32_TASKKILL_TIMEOUT_MS = 5e3;
407
419
  function killWin32Tree(pid, opts = {}) {
@@ -463,7 +475,7 @@ var ProcessRegistryImpl = class {
463
475
  return Number.isInteger(pid) && pid > 1 && pid !== process.pid && pid !== process.ppid;
464
476
  }
465
477
  _canSignalProcessGroup(p) {
466
- return os2.platform() !== "win32" && p.processGroupLeader === true && this._isSafeSignalPid(p.pid) && typeof p.child.pid === "number" && p.child.pid === p.pid;
478
+ return os.platform() !== "win32" && p.processGroupLeader === true && this._isSafeSignalPid(p.pid) && typeof p.child.pid === "number" && p.child.pid === p.pid;
467
479
  }
468
480
  _killChildDirect(p, signal) {
469
481
  try {
@@ -657,7 +669,7 @@ var ProcessRegistryImpl = class {
657
669
  if (p.killed) return true;
658
670
  if (p.protected) return false;
659
671
  const { force = false, graceMs = DEFAULT_GRACE_MS } = opts;
660
- const isWin2 = os2.platform() === "win32";
672
+ const isWin2 = os.platform() === "win32";
661
673
  if (isWin2) {
662
674
  const liveRealChild = p.child.exitCode === null && typeof p.child.pid === "number";
663
675
  const directFallback = () => {
@@ -671,7 +683,8 @@ var ProcessRegistryImpl = class {
671
683
  if (liveRealChild && killWin32Tree(pid, {
672
684
  timeoutMs: Math.max(graceMs, WIN32_TASKKILL_TIMEOUT_MS),
673
685
  onSettled: directFallback
674
- })) ; else {
686
+ })) {
687
+ } else {
675
688
  try {
676
689
  p.child.kill(force ? "SIGKILL" : "SIGTERM");
677
690
  } catch {
@@ -758,6 +771,14 @@ function getProcessRegistry() {
758
771
  }
759
772
  return _registry;
760
773
  }
774
+
775
+ // src/bash-kill-guard.ts
776
+ import * as os3 from "node:os";
777
+
778
+ // src/process-registry-persistent.ts
779
+ import * as fs from "node:fs/promises";
780
+ import * as os2 from "node:os";
781
+ import * as path2 from "node:path";
761
782
  var REGISTRY_FILE = ".wrongstack/process-registry.json";
762
783
  function toErrorMessage(err) {
763
784
  return err instanceof Error ? err.message : String(err);
@@ -869,15 +890,15 @@ var PersistentProcessRegistry = class {
869
890
  constructor(baseRegistry) {
870
891
  this.instanceId = generateInstanceId();
871
892
  const homeDir = os2.homedir();
872
- this.registryPath = path.join(homeDir, REGISTRY_FILE);
873
- this.lockPath = path.join(homeDir, LOCKFILE);
893
+ this.registryPath = path2.join(homeDir, REGISTRY_FILE);
894
+ this.lockPath = path2.join(homeDir, LOCKFILE);
874
895
  this.baseRegistry = baseRegistry ?? getProcessRegistry();
875
896
  this.ensureDirectory().catch((err) => {
876
897
  emitStructuredLog("warn", "process_registry.dir_create_failed", "PersistentProcessRegistry: failed to create .wrongstack directory", err);
877
898
  });
878
899
  }
879
900
  async ensureDirectory() {
880
- const dir = path.dirname(this.registryPath);
901
+ const dir = path2.dirname(this.registryPath);
881
902
  try {
882
903
  await fs.mkdir(dir, { recursive: true });
883
904
  } catch (err) {
@@ -1165,7 +1186,7 @@ function getPersistentProcessRegistry() {
1165
1186
  }
1166
1187
 
1167
1188
  // src/bash-kill-guard.ts
1168
- var isWin = os2.platform() === "win32";
1189
+ var isWin = os3.platform() === "win32";
1169
1190
  function extractKillCommand(command) {
1170
1191
  const normalized = command.replace(/\s+/g, " ").trim();
1171
1192
  const shellCMatch = normalized.match(
@@ -1341,7 +1362,11 @@ async function checkAndBlockKillCommand(command) {
1341
1362
  }
1342
1363
  return { blocked: false };
1343
1364
  }
1365
+
1366
+ // src/_shell-pick.ts
1367
+ var POSIX_DEFAULT = "cmd";
1344
1368
  function pickShell(platform4, command, env) {
1369
+ if (platform4 !== "win32") return POSIX_DEFAULT;
1345
1370
  const override = env.get("WRONGSTACK_SHELL")?.trim().toLowerCase();
1346
1371
  if (override === "cmd" || override === "cmd.exe") return "cmd";
1347
1372
  if (override === "powershell" || override === "powershell.exe") return "powershell";
@@ -1445,15 +1470,19 @@ function diagnoseBashism(command, shell) {
1445
1470
  const label = isCmd ? "cmd.exe" : shell === "pwsh" ? "PowerShell 7" : "Windows PowerShell";
1446
1471
  return `[wrongstack] This command failed and contains bash/POSIX syntax that ${label} does not accept \u2014 ${hints.join("; ")}. Rewrite it in ${isCmd ? "cmd" : "PowerShell"} syntax and retry.`;
1447
1472
  }
1473
+
1474
+ // src/_win32-resolve.ts
1475
+ import * as fs2 from "node:fs";
1476
+ import * as path3 from "node:path";
1448
1477
  function resolveWin32Command(cmd) {
1449
1478
  if (process.platform !== "win32") return cmd;
1450
- if (cmd.includes("/") || cmd.includes("\\") || path.extname(cmd.replace(/\//g, "\\"))) {
1479
+ if (cmd.includes("/") || cmd.includes("\\") || path3.extname(cmd.replace(/\//g, "\\"))) {
1451
1480
  return cmd;
1452
1481
  }
1453
1482
  const pathext = (process.env["PATHEXT"] ?? ".COM;.EXE;.BAT;.CMD;.VBS;.JS;.WS;.MSC").toLowerCase().split(";");
1454
- const pathDirs = (process.env["PATH"] ?? "").split(path.delimiter);
1483
+ const pathDirs = (process.env["PATH"] ?? "").split(path3.delimiter);
1455
1484
  for (const dir of pathDirs) {
1456
- const base = path.join(dir, cmd);
1485
+ const base = path3.join(dir, cmd);
1457
1486
  for (const ext of pathext) {
1458
1487
  const full = `${base}${ext}`;
1459
1488
  try {
@@ -1579,7 +1608,7 @@ var bashTool = {
1579
1608
  }));
1580
1609
  }
1581
1610
  const timeoutMs = Math.max(1, Math.min(input.timeout_ms ?? DEFAULT_TIMEOUT_MS, 6e5));
1582
- const isWin2 = os2.platform() === "win32";
1611
+ const isWin2 = os4.platform() === "win32";
1583
1612
  let plan;
1584
1613
  let winShellKind;
1585
1614
  if (isWin2) {
@@ -1616,7 +1645,7 @@ var bashTool = {
1616
1645
  if (input.background) {
1617
1646
  let buf2 = "";
1618
1647
  let truncated = false;
1619
- const child2 = spawn(shell, args, {
1648
+ const child2 = spawn2(shell, args, {
1620
1649
  cwd: ctx.projectRoot,
1621
1650
  env,
1622
1651
  // PowerShell takes the script on stdin (no argv quoting); cmd.exe
@@ -1699,7 +1728,7 @@ var bashTool = {
1699
1728
  });
1700
1729
  return;
1701
1730
  }
1702
- const child = spawn(shell, args, {
1731
+ const child = spawn2(shell, args, {
1703
1732
  cwd: ctx.projectRoot,
1704
1733
  env,
1705
1734
  // PowerShell takes the script on stdin (no argv quoting); cmd.exe
@@ -1926,7 +1955,7 @@ ${hint}` : ""),
1926
1955
  }
1927
1956
  }
1928
1957
  };
1929
-
1930
- export { bashTool };
1958
+ export {
1959
+ bashTool
1960
+ };
1931
1961
  //# sourceMappingURL=bash.js.map
1932
- //# sourceMappingURL=bash.js.map