@wrongstack/tools 0.296.4 → 0.297.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 (46) hide show
  1. package/dist/audit.js +15 -0
  2. package/dist/audit.js.map +2 -2
  3. package/dist/bash.js +15 -0
  4. package/dist/bash.js.map +2 -2
  5. package/dist/builtin.js +42 -0
  6. package/dist/builtin.js.map +2 -2
  7. package/dist/codebase-index/index.js +27 -0
  8. package/dist/codebase-index/index.js.map +2 -2
  9. package/dist/codebase-index/project-server-client.d.ts.map +1 -1
  10. package/dist/codebase-index/project-server.js +16 -0
  11. package/dist/codebase-index/project-server.js.map +2 -2
  12. package/dist/exec.js +15 -0
  13. package/dist/exec.js.map +2 -2
  14. package/dist/format.js +15 -0
  15. package/dist/format.js.map +2 -2
  16. package/dist/index.js +42 -0
  17. package/dist/index.js.map +2 -2
  18. package/dist/install.js +15 -0
  19. package/dist/install.js.map +2 -2
  20. package/dist/languages/index.js +15 -0
  21. package/dist/languages/index.js.map +2 -2
  22. package/dist/lint.js +15 -0
  23. package/dist/lint.js.map +2 -2
  24. package/dist/next-steps.d.ts +23 -0
  25. package/dist/next-steps.d.ts.map +1 -1
  26. package/dist/next-steps.js +4 -0
  27. package/dist/next-steps.js.map +2 -2
  28. package/dist/outdated.js +15 -0
  29. package/dist/outdated.js.map +2 -2
  30. package/dist/pack.js +42 -0
  31. package/dist/pack.js.map +2 -2
  32. package/dist/process-registry.d.ts +9 -0
  33. package/dist/process-registry.d.ts.map +1 -1
  34. package/dist/process-registry.js +15 -0
  35. package/dist/process-registry.js.map +2 -2
  36. package/dist/ps-slash.js +15 -0
  37. package/dist/ps-slash.js.map +2 -2
  38. package/dist/read.js +27 -0
  39. package/dist/read.js.map +2 -2
  40. package/dist/test.js +15 -0
  41. package/dist/test.js.map +2 -2
  42. package/dist/tool-tier.js +42 -0
  43. package/dist/tool-tier.js.map +2 -2
  44. package/dist/typecheck.js +15 -0
  45. package/dist/typecheck.js.map +2 -2
  46. package/package.json +3 -3
package/dist/exec.js CHANGED
@@ -574,6 +574,7 @@ var ProcessRegistryImpl = class {
574
574
  }
575
575
  /** Get all tracked processes. */
576
576
  list() {
577
+ this._pruneAllStale();
577
578
  return Array.from(this.processes.values());
578
579
  }
579
580
  /** Get processes filtered by name (e.g. 'bash', 'exec'). */
@@ -604,6 +605,7 @@ var ProcessRegistryImpl = class {
604
605
  * Combined stats for observability — used by /ps and the TUI status bar.
605
606
  */
606
607
  stats() {
608
+ this._pruneAllStale();
607
609
  return {
608
610
  activeCount: this.activeCount,
609
611
  backgroundCount: this.activeBackgroundCount,
@@ -843,6 +845,19 @@ var ProcessRegistryImpl = class {
843
845
  this.processes.delete(pid);
844
846
  }
845
847
  }
848
+ /**
849
+ * Remove every stale entry, not just one PID. `list()`/`stats()` — the
850
+ * surfaces the TUI status bar and `/ps` poll — must prune too: a child
851
+ * whose 'close' event never fires (e.g. Windows grandchildren holding stdio
852
+ * open) would otherwise linger in the registry until someone looks up its
853
+ * exact PID, and PID reuse meanwhile makes `get()`/`kill()` target the
854
+ * wrong process. RAM-leak audit 2026-07-31, MEDIUM.
855
+ */
856
+ _pruneAllStale() {
857
+ for (const [pid, entry] of this.processes) {
858
+ if (this._isStaleEntry(entry)) this.processes.delete(pid);
859
+ }
860
+ }
846
861
  };
847
862
  var _registry;
848
863
  function getProcessRegistry() {