diff --git a/.changeset/types-1-0-1.md b/.changeset/types-1-0-1.md new file mode 100644 index 0000000..8f5f191 --- /dev/null +++ b/.changeset/types-1-0-1.md @@ -0,0 +1,25 @@ +--- +"@contentrain/types": patch +--- + +Republish as 1.0.1 — 1.0.0 is permanently unavailable on npm + +`@contentrain/types@1.0.0` was published on 2025-01-04 and later unpublished. +npm reserves an unpublished version number forever, so when the release +sequence reached 1.0.0 again the registry refused it: + + npm error 400 — Cannot publish over previously published version "1.0.0" + +Five of the six packages in that release published successfully; only types +failed. But `workspace:*` resolves to an exact version at publish time, so +`@contentrain/mcp@3.0.0`, `@contentrain/query@7.0.2` and `contentrain@0.9.0` +all went out pinned to `@contentrain/types@1.0.0` — a version that does not +exist and cannot be created. Installing any of them fails with ETARGET. + +This bumps types to 1.0.1 and carries the three dependents with it. Nothing +about the code changes; 1.0.0 never reached anyone. + +Worth noting for later: had the workspace used `workspace:^` rather than +`workspace:*`, the published range would have been `^1.0.0` and this would +have healed itself the moment 1.0.1 landed, without needing to republish the +dependents. diff --git a/packages/mcp/tests/tools/content.test.ts b/packages/mcp/tests/tools/content.test.ts index efda32a..c9b2a98 100644 --- a/packages/mcp/tests/tools/content.test.ts +++ b/packages/mcp/tests/tools/content.test.ts @@ -1,4 +1,7 @@ import { describe, expect, it, beforeAll, beforeEach, afterAll, afterEach, vi } from 'vitest' + +// Real git writes; the surrounding suites make these contend for the machine. +vi.setConfig({ testTimeout: 120000, hookTimeout: 120000 }) import { rm, writeFile } from 'node:fs/promises' import { join } from 'node:path' import { createGit } from '../../src/git/identity.js' diff --git a/packages/mcp/vitest.config.ts b/packages/mcp/vitest.config.ts index 0e55941..1b0178e 100644 --- a/packages/mcp/vitest.config.ts +++ b/packages/mcp/vitest.config.ts @@ -24,12 +24,18 @@ export default defineConfig({ setupFiles: ['./tests/setup/trim-path.ts'], // Default 5s is not enough for anything that touches git — a single - // `contentrain_init` is 33 subprocesses. Files that need more still set - // their own; this is the floor that stops a slow machine from reporting - // a timeout as a test failure. - testTimeout: 30_000, + // `contentrain_init` is 33 subprocesses. + // + // 60s rather than 30s because 30s was not enough, and the way it failed is + // the argument: a test that runs in 2.1s alone took over 30s with all six + // packages competing for the machine, and reported as a test failure + // rather than as contention. Files doing heavy git work still declare + // their own 120s; this is the floor for the ones that do not, so a file + // that forgets is not silently at risk. A genuine hang costs 60s instead + // of 30s once, which is a cheaper mistake than a false red. + testTimeout: 60_000, // Fixture setup (template build, clone) lives in hooks and is the slowest // single step in the suite. - hookTimeout: 30_000, + hookTimeout: 60_000, }, })