probe-research 0.10.1 → 0.10.2

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.
@@ -26,6 +26,19 @@ const { spawnSync } = require("node:child_process");
26
26
  const os = require("node:os");
27
27
 
28
28
  const DIST = "probe-research";
29
+
30
+ /**
31
+ * The minimum CLI version this launcher needs — NOT this package's own version.
32
+ *
33
+ * npm and PyPI release INDEPENDENTLY. This package can take a launcher-only
34
+ * patch (as 0.10.1 did) with no corresponding CLI release, so pinning
35
+ * `probe-research==<our version>` resolves to a PyPI version that does not
36
+ * exist. That is exactly how 0.10.1 shipped broken.
37
+ *
38
+ * Bump this only when the launcher starts depending on a NEW CLI feature.
39
+ * 0.10.0 is the release that introduced `probe wizard`.
40
+ */
41
+ const MIN_CLI = "0.10.0";
29
42
  const UV_INSTALL = "curl -LsSf https://astral.sh/uv/install.sh | sh";
30
43
 
31
44
  /** Compare dotted numeric versions. Returns true when `a` >= `b`. */
@@ -78,7 +91,7 @@ function main() {
78
91
  // `npx probe-research` with no arguments runs the wizard — that is the entire
79
92
  // reason this package exists, so it should not require remembering a verb.
80
93
  const forwarded = args.length ? args : ["wizard"];
81
- const wanted = require("../package.json").version;
94
+ const wanted = MIN_CLI;
82
95
 
83
96
  // Only hand off to an existing install if it is at least as new as this
84
97
  // launcher. Otherwise fall through and let uv/pipx fetch a matching CLI.
@@ -90,9 +103,10 @@ function main() {
90
103
  `${wanted}; fetching ${wanted}…`,
91
104
  );
92
105
  }
93
- // PIN the version. Unpinned, `uv tool run --from probe-research` happily
94
- // reuses an already-installed 0.8.2 tool and we are back where we started.
95
- const spec = `${DIST}==${wanted}`;
106
+ // A FLOOR, not an exact pin. Unpinned, `uv tool run --from probe-research`
107
+ // reuses an already-installed 0.8.2 tool; pinned exactly, it demands a PyPI
108
+ // version that may not exist. `>=` fixes both.
109
+ const spec = `${DIST}>=${wanted}`;
96
110
  if (has("uv")) return run("uv", ["tool", "run", "--from", spec, "probe", ...forwarded]);
97
111
  if (has("pipx")) return run("pipx", ["run", "--spec", spec, "probe", ...forwarded]);
98
112
 
@@ -115,7 +129,7 @@ function main() {
115
129
  // The installer drops uv in ~/.local/bin, which is not on THIS process's PATH
116
130
  // because it was resolved before the install ran.
117
131
  const uv = `${os.homedir()}/.local/bin/uv`;
118
- return run(uv, ["tool", "run", "--from", `${DIST}==${wanted}`, "probe", ...forwarded]);
132
+ return run(uv, ["tool", "run", "--from", `${DIST}>=${wanted}`, "probe", ...forwarded]);
119
133
  }
120
134
 
121
135
  main();
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "probe-research",
3
- "version": "0.10.1",
3
+ "version": "0.10.2",
4
4
  "description": "Setup wizard for Probe Research in Claude Code. Runs from zero with npx.",
5
5
  "bin": {
6
6
  "probe-research": "bin/probe-research.js"