Skip to content

feat(cli): transactional integrate, launcher delegation, and bare state - #25

Merged
aetosdios27 merged 4 commits into
mainfrom
agent/fail-closed-alpha-publishing
Aug 5, 2026
Merged

aetosdios27 merged 4 commits into
mainfrom
agent/fail-closed-alpha-publishing

Conversation

@aetosdios27

@aetosdios27 aetosdios27 commented Aug 5, 2026 •

Copy link
Copy Markdown
Owner

Summary

Complete Scribe's CLI distribution and execution architecture, and land the guarded alpha publisher so the automated release can publish safely.

CLI distribution (feature)

  • Launcher delegation: a user-level scribe delegates to the project-local @scribe-sdk/cli inside a supported project and runs directly elsewhere; recursion is guarded with a SCRIBE_DELEGATED marker and the entry must resolve inside its package root.
  • Bare state: running scribe with no arguments prints the project's Scribe state and exits 0 (invalid usage stays 2).
  • Transactional scribe integrate: owns package installation (bun/npm adapters) as a reviewed plan; snapshots and restores the manifest, lockfile, and source files on failure; verifies installed versions, the selected stylesheet, and reported files. pnpm/yarn defer to a precise manual step. Mismatched installed Scribe versions print the exact aligned update command.
  • Docs (README/SKILL, synced to all packages), portability smoke updated to the new exit semantics and delegation checks.

Release process (fail-closed publisher)

  • release:packages now asserts alpha prerelease mode, publishes inspected tarballs with --tag alpha in styles→react→mdx→cli order, skips versions already on npm, and fails if latest moves. Workflow pinned to npm 11.6.2.

Verification

  • bun run test: 287/287 passing (was 252)
  • bun run typecheck, bun run docs:check, bun run build, bun run test:release all pass
  • bun run test:portability and bun run release:consumers pass locally against packed tarballs

Summary by CodeRabbit

  • New Features
    • Added the recommended scribe integrate workflow with dry-run previews, reviewed package/file changes, and project status reporting.
    • Added project-local CLI delegation for consistent command execution from global or local installations.
    • Added package version alignment checks, verification, idempotent reruns, and support guidance for npm, Bun, pnpm, and Yarn.
  • Bug Fixes
    • Integration changes now roll back safely when installation or file updates fail.
    • Improved cancellation handling, diagnostics, exit codes, and deprecated alias messaging.
  • Documentation
    • Updated installation, integration, CI, and release guidance across package documentation.

@coderabbitai

coderabbitai Bot commented Aug 5, 2026 •

Copy link
Copy Markdown

Review Change Stack

Warning

Review limit reached

@aetosdios27, you've reached your PR review limit, so we couldn't start this review.

Next review available in: 10 minutes

You've used all free OSS reviews for now. Wait for the free limit to reset to keep reviewing this public repository.

How can I continue?

After more reviews become available, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

To avoid repeated limits, reduce automatic review volume by pausing incremental auto-reviews earlier, using label-based review opt-in, excluding WIP or generated PR titles, or requesting reviews manually when the PR is ready. If your team needs uninterrupted high-volume reviews, an organization admin can enable usage-based reviews.

How do review limits work?

CodeRabbit enforces per-developer PR review limits for each organization. Most developers receive the normal plan review availability.

For paid Pro and Pro+ PR reviews, CodeRabbit uses adaptive limits for sustained high-volume activity. When a developer's recent PR review activity reaches the 95th percentile or higher among CodeRabbit users, additional reviews become available more gradually as earlier reviews age out of the rolling window.

Please refer docs for additional details.

Review details
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro Plus

Run ID: 8e746aa3-20c8-465f-b921-fea75aff1b22

📥 Commits

Reviewing files that changed from the base of the PR and between a5a6111 and 939eca9.

📒 Files selected for processing (28)
  • .changeset/tall-clis-delegate.md
  • README.md
  • SKILL.md
  • packages/cli/README.md
  • packages/cli/SKILL.md
  • packages/cli/src/bare.ts
  • packages/cli/src/index.test.ts
  • packages/cli/src/index.ts
  • packages/cli/src/integrate.test.ts
  • packages/cli/src/integrate.ts
  • packages/cli/src/launcher.test.ts
  • packages/cli/src/launcher.ts
  • packages/cli/src/package-manager.test.ts
  • packages/cli/src/package-manager.ts
  • packages/cli/src/transaction.test.ts
  • packages/cli/src/transaction.ts
  • packages/cli/src/version-alignment.test.ts
  • packages/cli/src/version-alignment.ts
  • packages/mdx/README.md
  • packages/mdx/SKILL.md
  • packages/react/README.md
  • packages/react/SKILL.md
  • packages/styles/README.md
  • packages/styles/SKILL.md
  • scripts/publish-alpha-packages.mjs
  • scripts/test-portable-cli.mjs
  • tests/release/portability-scripts.test.ts
  • tests/release/publish-packages.test.ts
📝 Walkthrough

Walkthrough

The CLI now supports project-local delegation, bare project-state reporting, package-aware integration, transactional rollback, verification, and version alignment. Release automation now uses a guarded alpha publisher with npm 11.6.2 and protected latest tags.

Changes

CLI integration workflow

Layer / File(s) Summary
Launcher and project state
packages/cli/src/launcher.ts, packages/cli/src/bare.ts, packages/cli/src/index.ts, packages/cli/src/*test.ts
The CLI resolves execution context, delegates to secure project-local binaries, reports project state without arguments, and handles scb compatibility warnings.
Package-aware integration planning
packages/cli/src/package-manager.ts, packages/cli/src/version-alignment.ts, packages/cli/src/integrate.ts, packages/cli/src/*test.ts
Integration detects package managers, reports package changes, supports Bun/npm commands, gives pnpm/yarn instructions, and reports version mismatches.
Transactional integration application
packages/cli/src/transaction.ts, packages/cli/src/integrate.ts, packages/cli/src/*test.ts
Integration locks the project, snapshots files and manifests, applies atomic changes, verifies results, and restores state after failures.
Integration guidance and release note
README.md, packages/*/README.md, SKILL.md, packages/*/SKILL.md, .changeset/*
Documentation describes the integrate-first flow, package installation, delegation, rollback, verification, version updates, and idempotent reruns.

Guarded alpha package release

Layer / File(s) Summary
Guarded alpha publisher
scripts/publish-alpha-packages.mjs, scripts/publish-alpha-packages.d.mts, tests/release/publish-packages.test.ts
The publisher validates alpha state and synchronized versions, publishes missing inspected tarballs in order, skips existing versions, and protects the latest tag.
Release workflow and policy wiring
package.json, .github/workflows/release.yml, RELEASING.md, tests/release/*
Release commands and documentation use the guarded publisher and npm 11.6.2.
Portable CLI release validation
scripts/test-portable-cli.mjs, tests/release/portability-scripts.test.ts
Portability checks expect bare scribe invocations to succeed and report integration state.

Estimated code review effort: 4 (Complex) | ~60 minutes

Sequence Diagram(s)

sequenceDiagram
  participant Developer
  participant GlobalScribe
  participant LocalScribe
  participant Project
  Developer->>GlobalScribe: run scribe integrate
  GlobalScribe->>Project: resolve supported project and package manager
  GlobalScribe->>LocalScribe: delegate when a project-local CLI exists
  LocalScribe->>Project: plan and apply package and file changes
  Project-->>LocalScribe: verification and rollback status
  LocalScribe-->>Developer: integration result and exit status
Loading

Possibly related PRs

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (4 passed)
Check name Status Explanation
Title check ✅ Passed The title clearly summarizes the main CLI changes: transactional integration, launcher delegation, and bare state output.
Description check ✅ Passed The description covers the main changes and verification results, but it omits the Linear and Visual evidence sections and checklist formatting.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
✨ Finishing Touches 💡 2
📝 Generate docstrings 💡
  • Create stacked PR
  • Commit on current branch
⚔️ Resolve merge conflicts 💡
  • Resolve merge conflict in branch agent/fail-closed-alpha-publishing
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch agent/fail-closed-alpha-publishing

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Actionable comments posted: 7

🧹 Nitpick comments (4)
README.md (1)

24-32: 🎯 Functional Correctness | 🔵 Trivial | 💤 Low value

Add the direct npm bootstrap command to SKILL.md.

The other docs now cover npm installation and the npm post-install path, but SKILL.md and the packaged SKILL.md files still only show bunx @scribe-sdk/cli@alpha integrate for initial bootstrap. Use npx @scribe-sdk/cli@alpha integrate for npm, with --dry-run first.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@README.md` around lines 24 - 32, Update the bootstrap documentation to show
the npm equivalent using npx, with the --dry-run invocation before the apply
invocation. Make this documentation change in README.md (anchor, lines 24-32),
SKILL.md (lines 46-48), packages/cli/README.md (lines 24-32),
packages/cli/SKILL.md (lines 46-48), packages/mdx/README.md (lines 24-32),
packages/mdx/SKILL.md (lines 46-48), packages/react/README.md (lines 24-32),
packages/react/SKILL.md (lines 46-48), packages/styles/README.md (lines 24-32),
and packages/styles/SKILL.md (lines 46-48); retain the existing bunx guidance
and clearly identify the npx commands for npm users.
packages/cli/src/bare.ts (1)

32-34: 🚀 Performance & Scalability | 🔵 Trivial | ⚡ Quick win

Pass the existing inspection into integratedOutput instead of re-inspecting.

bareStateOutput already computed inspection on line 24. integratedOutput calls inspectProject(root) a second time on line 57. That repeats the manifest and source scan on every bare invocation, and the two results can differ if files change between the reads. Lines 55 and 56 also import the same module twice.

♻️ Proposed refactor
-  if (integrated && runtimePresent) {
-    return integratedOutput(root, version);
-  }
+  if (integrated && runtimePresent) {
+    return integratedOutput(root, version, inspection);
+  }
-async function integratedOutput(root: string, version: string): Promise<string> {
-  const { recommendStyleMode } = await import("./integrate.js");
-  const { inspectProject } = await import("./integrate.js");
-  const inspection = await inspectProject(root);
-  const mode = recommendStyleMode(inspection, undefined).mode;
+async function integratedOutput(
+  root: string,
+  version: string,
+  inspection: Awaited<ReturnType<typeof import("./integrate.js").inspectProject>>
+): Promise<string> {
+  const { recommendStyleMode } = await import("./integrate.js");
+  const mode = recommendStyleMode(inspection, undefined).mode;

Also applies to: 54-58

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@packages/cli/src/bare.ts` around lines 32 - 34, Update bareStateOutput and
integratedOutput to pass the already computed inspection into integratedOutput,
eliminating the second inspectProject(root) call while preserving the existing
output behavior. Consolidate the duplicate module imports near integratedOutput
so the inspection dependency is imported only once.
scripts/test-portable-cli.mjs (1)

208-210: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚡ Quick win

Assert the specific project-state string, not the substring "Scribe".

Both global bare runs execute in directory, which line 116 already proves is a supported but unintegrated project. Every bare-output branch contains the substring "Scribe", including "No supported React project was found." and the inspection-failure message. The current assertion therefore passes even if project detection or delegation fails, while the failure message claims delegation was verified. Assert the same string used on line 116.

♻️ Proposed refactor
-  assert(npmGlobalBare.stdout.includes("Scribe"), "Global npm scribe did not delegate to print project state.");
+  assert(
+    npmGlobalBare.stdout.includes("Scribe is not integrated here."),
+    "Global npm scribe did not report the project integration state."
+  );
-  assert(bunGlobalBare.stdout.includes("Scribe"), "Global Bun scribe did not delegate to print project state.");
+  assert(
+    bunGlobalBare.stdout.includes("Scribe is not integrated here."),
+    "Global Bun scribe did not report the project integration state."
+  );

Also applies to: 221-223

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@scripts/test-portable-cli.mjs` around lines 208 - 210, Update the stdout
assertions for both global bare runs in the portable CLI tests to check for the
specific supported-but-unintegrated project-state string already asserted near
line 116, rather than the generic “Scribe” substring. Keep the existing status
checks and failure-message intent while ensuring the assertions verify actual
project-state delegation.
packages/cli/src/launcher.ts (1)

59-61: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚡ Quick win

Derive delegation from context.source instead of a second comparison rule.

resolveExecutionContext normalizes the local package root with realpath before it classifies the source. shouldDelegate compares context.localCli.packageRoot with context.packageRoot as raw strings. The two rules can disagree. If a caller supplies a non-realpath packageRoot, for example a symlinked global installation, then source is "project-local" while shouldDelegate returns true. The launcher then spawns a redundant child of itself. The recursion marker prevents an unbounded loop, but the extra process still runs.

resolveLocalCli already returns a realpathed packageRoot, so the realpathImpl call on line 61 is also redundant.

♻️ Proposed refactor
-export async function shouldDelegate(context: ExecutionContext): Promise<boolean> {
-  return !context.delegated
-    && context.projectRoot !== undefined
-    && context.localCli !== undefined
-    && context.localCli.packageRoot !== context.packageRoot;
-}
+export async function shouldDelegate(context: ExecutionContext): Promise<boolean> {
+  return context.source === "user-level" && context.localCli !== undefined;
+}

Also applies to: 80-85

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@packages/cli/src/launcher.ts` around lines 59 - 61, Update shouldDelegate to
derive delegation directly from context.source, delegating only when the
resolved source indicates a global installation rather than re-comparing package
roots. Remove the redundant realpath call and raw package-root comparison while
preserving the existing behavior for project-local and global contexts.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@packages/cli/src/bare.ts`:
- Around line 95-97: Update majorOf so it returns "unknown" when the normalized
specifier is empty, including inputs such as "*"; do not rely on the unreachable
nullish fallback after split. Preserve the existing extraction of the first
version segment for non-empty specifiers.

In `@packages/cli/src/integrate.ts`:
- Around line 209-212: Update the unsupported-package-manager fallback in
integrate to emit copyable, manager-specific install commands using each
reported package version, splitting runtime packages from `@scribe-sdk/cli` with
its --save-dev flag as supported integrations do; retain the warning and
manual-step context. Extend the relevant integration test to assert the exact
pnpm/Yarn command output and verify the development dependency remains separate.
Affected sites: packages/cli/src/integrate.ts lines 209-212 require the
command-generation change; packages/cli/src/integrate.test.ts lines 296-309
require coverage for the resulting behavior.
- Around line 343-346: Always pass plan.mode as stylesheetMode to
verifyIntegration in the integration flow, independent of installedSomething,
while retaining the conditional package list. In
packages/cli/src/integrate.test.ts lines 311-326, add a --yes scenario with
declared installed packages and a missing selected stylesheet, asserting
integration failure and rollback.

In `@packages/cli/src/package-manager.ts`:
- Around line 40-42: Update updateCommand in
packages/cli/src/package-manager.ts:40-42 to accept the expected version and
generate exact, manager-specific alignment commands for bun, npm, pnpm, and
yarn, using the correct package-manager syntax. Update the caller in
packages/cli/src/version-alignment.ts:30-40 to pass report.expected. Adjust
expectations in packages/cli/src/package-manager.test.ts:48-54 and
packages/cli/src/version-alignment.test.ts:26-40 to cover the pinned commands
for each manager.

In `@packages/cli/src/transaction.ts`:
- Around line 65-75: Update snapshotFiles() to treat only ENOENT read errors as
absent entries; rethrow all other errors so applyFileChanges() cannot proceed
without a valid snapshot. Add a regression test covering an existing unreadable
file and verifying the read error propagates before changes are applied.

In `@README.md`:
- Around line 177-181: Update runIntegrate so verifyIntegration receives
packages and stylesheetMode for supported-manager and idempotent plans even when
plan.commands is empty, then align the documented verification guarantee with
that behavior. Update README.md:177-181, packages/cli/README.md:177-181,
packages/mdx/README.md:177-181, packages/react/README.md:177-181, and
packages/styles/README.md:177-181 to describe the corrected checks; update
.changeset/tall-clis-delegate.md:5, SKILL.md:46-48, packages/cli/SKILL.md:46-48,
packages/mdx/SKILL.md:46-48, packages/react/SKILL.md:46-48, and
packages/styles/SKILL.md:46-48 to match verification behavior for unsupported
managers and no-command runs.

In `@scripts/publish-alpha-packages.mjs`:
- Around line 51-53: Update the package-publishing loop around
registry.publishTarball to fetch the published package’s dist-tags immediately
after each publish and assert that its latest tag remains unchanged before
proceeding to the next release. Preserve the existing failure behavior, and add
a regression test covering a first-package latest-tag change that verifies
subsequent packages are not published.

---

Nitpick comments:
In `@packages/cli/src/bare.ts`:
- Around line 32-34: Update bareStateOutput and integratedOutput to pass the
already computed inspection into integratedOutput, eliminating the second
inspectProject(root) call while preserving the existing output behavior.
Consolidate the duplicate module imports near integratedOutput so the inspection
dependency is imported only once.

In `@packages/cli/src/launcher.ts`:
- Around line 59-61: Update shouldDelegate to derive delegation directly from
context.source, delegating only when the resolved source indicates a global
installation rather than re-comparing package roots. Remove the redundant
realpath call and raw package-root comparison while preserving the existing
behavior for project-local and global contexts.

In `@README.md`:
- Around line 24-32: Update the bootstrap documentation to show the npm
equivalent using npx, with the --dry-run invocation before the apply invocation.
Make this documentation change in README.md (anchor, lines 24-32), SKILL.md
(lines 46-48), packages/cli/README.md (lines 24-32), packages/cli/SKILL.md
(lines 46-48), packages/mdx/README.md (lines 24-32), packages/mdx/SKILL.md
(lines 46-48), packages/react/README.md (lines 24-32), packages/react/SKILL.md
(lines 46-48), packages/styles/README.md (lines 24-32), and
packages/styles/SKILL.md (lines 46-48); retain the existing bunx guidance and
clearly identify the npx commands for npm users.

In `@scripts/test-portable-cli.mjs`:
- Around line 208-210: Update the stdout assertions for both global bare runs in
the portable CLI tests to check for the specific supported-but-unintegrated
project-state string already asserted near line 116, rather than the generic
“Scribe” substring. Keep the existing status checks and failure-message intent
while ensuring the assertions verify actual project-state delegation.
🪄 Autofix

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro Plus

Run ID: d63a4adb-4724-437c-8c3a-778ba7323c93

📥 Commits

Reviewing files that changed from the base of the PR and between a5a6111 and 1aec19d.

📒 Files selected for processing (35)
  • .changeset/tall-clis-delegate.md
  • .github/workflows/release.yml
  • README.md
  • RELEASING.md
  • SKILL.md
  • package.json
  • packages/cli/README.md
  • packages/cli/SKILL.md
  • packages/cli/src/bare.ts
  • packages/cli/src/index.test.ts
  • packages/cli/src/index.ts
  • packages/cli/src/integrate.test.ts
  • packages/cli/src/integrate.ts
  • packages/cli/src/launcher.test.ts
  • packages/cli/src/launcher.ts
  • packages/cli/src/package-manager.test.ts
  • packages/cli/src/package-manager.ts
  • packages/cli/src/transaction.test.ts
  • packages/cli/src/transaction.ts
  • packages/cli/src/version-alignment.test.ts
  • packages/cli/src/version-alignment.ts
  • packages/mdx/README.md
  • packages/mdx/SKILL.md
  • packages/react/README.md
  • packages/react/SKILL.md
  • packages/styles/README.md
  • packages/styles/SKILL.md
  • scripts/publish-alpha-packages.d.mts
  • scripts/publish-alpha-packages.mjs
  • scripts/test-portable-cli.mjs
  • tests/release/changesets.test.ts
  • tests/release/ci.test.ts
  • tests/release/package-manifests.test.ts
  • tests/release/portability-scripts.test.ts
  • tests/release/publish-packages.test.ts

Comment thread packages/cli/src/bare.ts Resolved
Comment thread packages/cli/src/integrate.ts Resolved
Comment thread packages/cli/src/integrate.ts Resolved
Comment thread packages/cli/src/package-manager.ts Resolved
Comment thread packages/cli/src/transaction.ts Resolved
Comment thread README.md Resolved
Comment thread scripts/publish-alpha-packages.mjs Resolved
Add a user-level scribe launcher that delegates to the project-local CLI
inside a supported project and runs directly elsewhere, print the project's
Scribe state from a bare scribe invocation, and make scribe integrate own
package installation as a reviewed transaction that snapshots and restores
the manifest, lockfile, and source files on failure and verifies installed
package versions, the selected stylesheet, and the reported files. pnpm and
yarn installations defer to a precise manual step, and mismatched installed
Scribe versions report the exact aligned update command. No-argument scribe
exits 0; invalid usage stays 2.
collectSourceFiles walked into a project-local BUN_INSTALL cache
(bun-global/install/cache/@scribe-sdk/*/dist/*.mjs), so a bun global
install inside the project was misread as an integrated Scribe site.
Resolve BUN_INSTALL (default ~/.bun) and skip that directory during
source collection, with regression coverage for both the set and unset
environments.
@aetosdios27
aetosdios27 force-pushed the agent/fail-closed-alpha-publishing branch from e684220 to f3acf0e Compare August 5, 2026 17:24

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Actionable comments posted: 2

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@packages/cli/src/integrate.ts`:
- Around line 587-594: Update verificationPackageTargets to include every
declared Scribe package in plan.packages regardless of
installedScribePackageVersion results, while preserving version targets for
installed packages. Add the no-command integration test in
packages/cli/src/integrate.test.ts around lines 338-352 for a declared Scribe
package missing from node_modules, asserting exit code 1, rollback, and a “did
not resolve” diagnostic.

In `@packages/cli/src/package-manager.ts`:
- Around line 42-50: Update the npm branch in updateCommand to use npm install
with the pinned runtime packages, followed by a separate npm install --save-dev
command for the pinned `@scribe-sdk/cli` package. Preserve the existing bun, pnpm,
and yarn command behavior.
🪄 Autofix

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro Plus

Run ID: 3f7fa596-795d-465b-b5a9-a5c84ad99e26

📥 Commits

Reviewing files that changed from the base of the PR and between 1aec19d and e684220.

📒 Files selected for processing (24)
  • .changeset/tall-clis-delegate.md
  • README.md
  • SKILL.md
  • packages/cli/README.md
  • packages/cli/SKILL.md
  • packages/cli/src/bare.ts
  • packages/cli/src/integrate.test.ts
  • packages/cli/src/integrate.ts
  • packages/cli/src/launcher.ts
  • packages/cli/src/package-manager.test.ts
  • packages/cli/src/package-manager.ts
  • packages/cli/src/transaction.test.ts
  • packages/cli/src/transaction.ts
  • packages/cli/src/version-alignment.test.ts
  • packages/cli/src/version-alignment.ts
  • packages/mdx/README.md
  • packages/mdx/SKILL.md
  • packages/react/README.md
  • packages/react/SKILL.md
  • packages/styles/README.md
  • packages/styles/SKILL.md
  • scripts/publish-alpha-packages.mjs
  • scripts/test-portable-cli.mjs
  • tests/release/publish-packages.test.ts
🚧 Files skipped from review as they are similar to previous changes (15)
  • packages/mdx/SKILL.md
  • scripts/test-portable-cli.mjs
  • packages/cli/src/version-alignment.test.ts
  • packages/cli/src/version-alignment.ts
  • SKILL.md
  • tests/release/publish-packages.test.ts
  • packages/styles/SKILL.md
  • packages/react/SKILL.md
  • .changeset/tall-clis-delegate.md
  • scripts/publish-alpha-packages.mjs
  • packages/cli/SKILL.md
  • packages/cli/src/transaction.test.ts
  • packages/cli/src/package-manager.test.ts
  • packages/cli/src/bare.ts
  • packages/cli/src/transaction.ts

Comment thread packages/cli/src/integrate.ts Resolved
Comment thread packages/cli/src/package-manager.ts Resolved
On macOS, /var is a symlink to /private/var, so process.cwd() (canonical)
and BUN_INSTALL (as written) differ in form and the string prefix check
missed a bun global-install cache inside the project. Resolve both paths
through realpath before comparing.
@aetosdios27
aetosdios27 merged commit 197ff98 into main Aug 5, 2026
7 checks passed
@aetosdios27
aetosdios27 deleted the agent/fail-closed-alpha-publishing branch August 5, 2026 18:32
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant