canon-ai 3.3.0 → 3.3.1

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.
package/CHANGELOG.md CHANGED
@@ -4,6 +4,12 @@
4
4
 
5
5
  ## [Unreleased]
6
6
 
7
+ ## [3.3.1] — 2026-09-24
8
+
9
+ ### Fixed
10
+
11
+ - **`canon update` works on npm 12.** npm 12 prints `npm view <pkg>@<version> version --json` as a one-element array instead of a bare string, so the pre-install registry check rejected every published version with "could not verify canon-ai@<version> on the npm registry (no output)". The check now accepts both output shapes; an unpublished version still gets the "not yet on the npm registry" message. Because the broken check is in the installed version, reach 3.3.1 by installing it with npm directly once (`npm install -g canon-ai@3.3.1` for a global install).
12
+
7
13
  ## [3.3.0] — 2026-09-24
8
14
 
9
15
  ### Added
package/dist/cli/index.js CHANGED
@@ -1247,7 +1247,7 @@ function checkTemplates(cwd) {
1247
1247
  }
1248
1248
  function checkCanonVersion(cwd) {
1249
1249
  const versionPath = join(cwd, ".canon", "version");
1250
- const installedVersion = "3.3.0";
1250
+ const installedVersion = "3.3.1";
1251
1251
  if (!existsSync(versionPath)) {
1252
1252
  return { label: ".canon/version", status: "warn", detail: "missing \u2014 run `canon upgrade`" };
1253
1253
  }
@@ -1744,7 +1744,7 @@ function initCmd(_args) {
1744
1744
  }
1745
1745
  function writeCanonVersion(cwd) {
1746
1746
  const versionPath = join2(cwd, ".canon", "version");
1747
- const version = "3.3.0";
1747
+ const version = "3.3.1";
1748
1748
  mkdirSync(dirname2(versionPath), { recursive: true });
1749
1749
  writeFileSync(versionPath, version + "\n");
1750
1750
  }
@@ -2753,7 +2753,7 @@ function isInstalledSourcePath(sourcePath) {
2753
2753
  return sourcePath.includes("/node_modules/") || sourcePath.includes("\\node_modules\\") || sourcePath.includes("/_npx/") || sourcePath.includes("\\_npx\\");
2754
2754
  }
2755
2755
  function resolveCanonVersion(explicit) {
2756
- return explicit ?? "3.3.0" ?? "dev";
2756
+ return explicit ?? "3.3.1" ?? "dev";
2757
2757
  }
2758
2758
  function resolveOrchestratorCommit(repoRoot, upstreamCommit, runGitAt) {
2759
2759
  const ownToplevel = captureGitOutput(repoRoot, ["rev-parse", "--show-toplevel"], runGitAt);
@@ -4879,7 +4879,7 @@ function currentPinFromManifest(manifest) {
4879
4879
  return "unknown";
4880
4880
  }
4881
4881
  function bakedVersion() {
4882
- return "3.3.0";
4882
+ return "3.3.1";
4883
4883
  }
4884
4884
  function ownPackageName(pkgDir) {
4885
4885
  try {
@@ -4904,7 +4904,8 @@ function checkRegistryVersion(pkgName, version, runner, cwd, global = false) {
4904
4904
  } catch {
4905
4905
  parsed = void 0;
4906
4906
  }
4907
- if (result.status === 0 && typeof parsed === "string" && parsed === version) return { ok: true };
4907
+ const published = parsed === version || Array.isArray(parsed) && parsed.includes(version);
4908
+ if (result.status === 0 && published) return { ok: true };
4908
4909
  if (typeof parsed === "object" && parsed !== null && parsed.error?.code === "E404") {
4909
4910
  return {
4910
4911
  ok: false,
@@ -5354,7 +5355,7 @@ function runUpgrade(cwd, pkgDir, options = {}) {
5354
5355
  cutoverWarnings.push(docsRefsCheckRel);
5355
5356
  }
5356
5357
  const versionPath = join5(cwd, ".canon", "version");
5357
- const newVersion = "3.3.0";
5358
+ const newVersion = "3.3.1";
5358
5359
  const currentVersion = existsSync5(versionPath) ? readFileSync4(versionPath, "utf8").trim() : null;
5359
5360
  if (currentVersion !== newVersion) {
5360
5361
  pending.push({ rel: ".canon/version", projectPath: versionPath, content: newVersion + "\n" });
@@ -5662,7 +5663,7 @@ Global:
5662
5663
  `);
5663
5664
  }
5664
5665
  function printVersion() {
5665
- console.log("3.3.0");
5666
+ console.log("3.3.1");
5666
5667
  }
5667
5668
  switch (command) {
5668
5669
  case "doctor":
@@ -4965,7 +4965,7 @@ function isInstalledSourcePath(sourcePath) {
4965
4965
  return sourcePath.includes("/node_modules/") || sourcePath.includes("\\node_modules\\") || sourcePath.includes("/_npx/") || sourcePath.includes("\\_npx\\");
4966
4966
  }
4967
4967
  function resolveCanonVersion(explicit) {
4968
- return explicit ?? "3.3.0" ?? "dev";
4968
+ return explicit ?? "3.3.1" ?? "dev";
4969
4969
  }
4970
4970
  function resolveOrchestratorCommit(repoRoot, upstreamCommit, runGitAt) {
4971
4971
  const ownToplevel = captureGitOutput(repoRoot, ["rev-parse", "--show-toplevel"], runGitAt);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "canon-ai",
3
- "version": "3.3.0",
3
+ "version": "3.3.1",
4
4
  "type": "module",
5
5
  "description": "A spec-first, multi-agent AI coding pipeline you drop into any repo. The law your agents work under.",
6
6
  "engines": {