Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 8 additions & 0 deletions .changeset/clever-needles-start.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
---
"@caplets/core": patch
"caplets": patch
"@caplets/opencode": patch
"@caplets/pi": patch
---

Fix the published CLI startup path by externalizing jsonc-parser from the Node bundle and checking the built package can answer `caplets --version`.
4 changes: 2 additions & 2 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@
"benchmark:live:pi": "pnpm --filter @caplets/benchmarks benchmark:live:pi",
"benchmark:live:pi-eval": "pnpm --filter @caplets/benchmarks benchmark:live:pi-eval",
"benchmark:live:pi-eval:competitors": "pnpm --filter @caplets/benchmarks benchmark:live:pi-eval:competitors",
"build": "turbo build",
"build": "turbo build && node scripts/check-package-runtime.mjs",
"build:watch": "turbo build:watch",
"catalog:check": "tsx ./scripts/generate-catalog-index.ts --check",
"catalog:generate": "tsx ./scripts/generate-catalog-index.ts",
Expand All @@ -31,7 +31,7 @@
"lint:fix": "oxlint --fix .",
"lint:staged": "lint-staged",
"prepare": "husky",
"release": "turbo build --force && changeset publish",
"release": "turbo build --force && node scripts/check-package-runtime.mjs && changeset publish",
"release:publish": "pnpm telemetry:prepare-release-env && pnpm release",
"schema:check": "tsx ./scripts/generate-config-schema.ts --check",
"schema:generate": "tsx ./scripts/generate-config-schema.ts",
Expand Down
1 change: 1 addition & 0 deletions packages/core/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -111,6 +111,7 @@
"graphql": "^17.0.1",
"headers-polyfill": "^5.0.1",
"hono": "^4.12.27",
"jsonc-parser": "^3.3.1",
"posthog-node": "^5.38.6",
"quickjs-emscripten": "^0.32.0",
"semver": "^7.8.5",
Expand Down
2 changes: 1 addition & 1 deletion packages/core/rolldown.config.ts
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ export default defineConfig([
sourcemap: sentryConfigured(),
},
plugins: runtimeSentryPlugins("core"),
external: ["quickjs-emscripten", "typescript"],
external: ["jsonc-parser", "quickjs-emscripten", "typescript"],
platform: "node",
},
{
Expand Down
3 changes: 2 additions & 1 deletion packages/core/test/telemetry-source-maps.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,8 @@ describe("Sentry source-map readiness", () => {
expect(cliConfig).toContain('runtimeSentryPlugins("cli")');
expect(opencodeConfig).toContain('runtimeSentryPlugins("opencode")');
expect(piConfig).toContain('runtimeSentryPlugins("pi")');
expect(packageJson).toContain('"release": "turbo build --force && changeset publish"');
expect(packageJson).toContain('"release": "turbo build --force &&');
expect(packageJson).toContain("changeset publish");
expect(packageJson).not.toContain("telemetry:upload-runtime-source-maps");
expect(packageJson).not.toContain("sentry-cli");
});
Expand Down
3 changes: 2 additions & 1 deletion packages/opencode/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,8 @@
"test": "vitest run"
},
"dependencies": {
"@caplets/core": "workspace:*"
"@caplets/core": "workspace:*",
"jsonc-parser": "^3.3.1"
},
"devDependencies": {
"@jitl/quickjs-wasmfile-release-sync": "^0.32.0",
Expand Down
2 changes: 1 addition & 1 deletion packages/opencode/rolldown.config.ts
Original file line number Diff line number Diff line change
Expand Up @@ -11,5 +11,5 @@ export default defineConfig({
plugins: runtimeSentryPlugins("opencode"),
platform: "node",
tsconfig: true,
external: ["@opencode-ai/plugin"],
external: ["@opencode-ai/plugin", "jsonc-parser"],
});
3 changes: 2 additions & 1 deletion packages/pi/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,8 @@
"test": "vitest run"
},
"dependencies": {
"@caplets/core": "workspace:*"
"@caplets/core": "workspace:*",
"jsonc-parser": "^3.3.1"
},
"devDependencies": {
"@jitl/quickjs-wasmfile-release-sync": "^0.32.0",
Expand Down
2 changes: 1 addition & 1 deletion packages/pi/rolldown.config.ts
Original file line number Diff line number Diff line change
Expand Up @@ -11,5 +11,5 @@ export default defineConfig({
plugins: runtimeSentryPlugins("pi"),
platform: "node",
tsconfig: true,
external: ["@earendil-works/pi-coding-agent"],
external: ["@earendil-works/pi-coding-agent", "jsonc-parser"],
});
9 changes: 9 additions & 0 deletions pnpm-lock.yaml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

33 changes: 33 additions & 0 deletions scripts/check-package-runtime.mjs
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
import { spawnSync } from "node:child_process";
import { fileURLToPath } from "node:url";
import { dirname, join } from "node:path";

const repoRoot = dirname(dirname(fileURLToPath(import.meta.url)));

const result = spawnSync(
process.execPath,
[join(repoRoot, "packages/cli/dist/index.js"), "--version"],
{
cwd: repoRoot,
encoding: "utf8",
env: {
...process.env,
NO_COLOR: "1",
},
},
);

if (result.status !== 0) {
process.stderr.write("Built Caplets CLI failed to start with --version.\n");
if (result.stdout) process.stderr.write(result.stdout);
if (result.stderr) process.stderr.write(result.stderr);
process.exit(result.status ?? 1);
}
Comment on lines +20 to +25

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Spawn errors (e.g., ENOENT when packages/cli/dist/index.js doesn't exist because the CLI build step was skipped) are silently absorbed. result.error carries the OS-level message but is never written to stderr, so a "file not found" failure is indistinguishable from a CLI crash in CI logs.

Suggested change
if (result.status !== 0) {
process.stderr.write("Built Caplets CLI failed to start with --version.\n");
if (result.stdout) process.stderr.write(result.stdout);
if (result.stderr) process.stderr.write(result.stderr);
process.exit(result.status ?? 1);
}
if (result.error || result.status !== 0) {
process.stderr.write("Built Caplets CLI failed to start with --version.\n");
if (result.error) process.stderr.write(`${result.error.message}\n`);
if (result.stdout) process.stderr.write(result.stdout);
if (result.stderr) process.stderr.write(result.stderr);
process.exit(result.status ?? 1);
}

Note: If this suggestion doesn't match your team's coding style, reply to this and let me know. I'll remember it for next time!

Fix in Codex


const version = result.stdout.trim();
if (!/^\d+\.\d+\.\d+(?:[-+][\w.-]+)?$/u.test(version)) {
process.stderr.write(
`Built Caplets CLI printed an invalid version: ${JSON.stringify(version)}\n`,
);
process.exit(1);
}
Loading