Skip to content

fix: add install block with defaultChoice 'local' for acpx plugin#32971

Open
antek-eth wants to merge 2 commits intoopenclaw:mainfrom
antek-eth:fix/acpx-plugin-install-local
Open

fix: add install block with defaultChoice 'local' for acpx plugin#32971
antek-eth wants to merge 2 commits intoopenclaw:mainfrom
antek-eth:fix/acpx-plugin-install-local

Conversation

@antek-eth
Copy link
Copy Markdown

Summary

  • Adds missing openclaw.install block to extensions/acpx/package.json with defaultChoice: "local"
  • This prevents openclaw update from attempting to download @openclaw/acpx from npm, where the scoped package does not exist (only the unscoped acpx is published)
  • Follows the same pattern already used by googlechat, mattermost, line, and tlon plugins

Problem

openclaw update fails with:

Downloading @openclaw/acpx…
Failed to install acpx: npm pack failed:
npm error code E404
npm error 404 Not Found - GET https://registry.npmjs.org/@openclaw%2facpx - Not found

The unscoped acpx package (v0.1.15) exists on npm, but the scoped @openclaw/acpx does not. The acpx extension's package.json was missing the openclaw.install block, so resolveInstallInfo() had no localPath to fall back on, defaulting to "npm".

Fix

  "openclaw": {
    "extensions": [
      "./index.ts"
-   ]
+   ],
+   "install": {
+     "npmSpec": "@openclaw/acpx",
+     "localPath": "extensions/acpx",
+     "defaultChoice": "local"
+   }
  }

Test plan

  • Run openclaw update — acpx plugin should no longer produce E404
  • Run openclaw plugins list — acpx should show as available from bundled path
  • Run openclaw doctor — no acpx-related warnings

Fixes #32967

The @openclaw/acpx scoped package is not published to npm, causing
`openclaw update` to fail with E404 when attempting to download it.

This adds an `openclaw.install` block (matching the pattern used by
googlechat, mattermost, line, and tlon plugins) with
`defaultChoice: "local"` so the bundled extension is used instead of
attempting an npm registry fetch.

Fixes openclaw#32967
@greptile-apps
Copy link
Copy Markdown
Contributor

greptile-apps bot commented Mar 3, 2026

Greptile Summary

This PR adds a missing openclaw.install block to extensions/acpx/package.json, setting defaultChoice: "local" so that openclaw update uses the bundled local path rather than attempting to download the non-existent @openclaw/acpx scoped package from npm. The fix is minimal, targeted, and well-reasoned.

The npmSpec, localPath, and defaultChoice values are all consistent with the package's name field and directory location. defaultChoice: "local" is correct here; unlike the other extensions cited in the PR description (googlechat, mattermost, line, tlon—all of which use "npm" because their scoped packages are published), @openclaw/acpx only exists on npm under the unscoped name acpx, making the local fallback the only viable default.

One minor observation: unlike googlechat and line (which are also bundled-only), the acpx package.json does not include "private": true. This is not introduced by this PR, but it may be worth adding in a follow-up to prevent accidental npm publish of the scoped package name.

Confidence Score: 5/5

  • This PR is safe to merge — it is a one-block JSON fix with no logic changes and no risk of regressions.
  • The change is a single targeted addition to a JSON config file. The values (npmSpec, localPath, defaultChoice) are consistent with the rest of the codebase, the reasoning is sound (the scoped npm package doesn't exist), and the code paths that consume defaultChoice and localPath confirm the fix will have the intended effect. No tests need to change and there is no risk of breaking existing behavior.
  • No files require special attention.

Last reviewed commit: 08970eb

Copy link
Copy Markdown

@chatgpt-codex-connector chatgpt-codex-connector bot left a comment

Choose a reason for hiding this comment

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

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 08970eb2cf

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

],
"install": {
"npmSpec": "@openclaw/acpx",
"localPath": "extensions/acpx",
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P2 Badge Preserve derived bundled path instead of fixed localPath

Using a fixed localPath here overrides the catalog’s dynamic fallback (path.relative(workspaceDir, packageDir)) and can make local ACPX installs undiscoverable when the agent workspace is not the OpenClaw package root. In onboarding, resolveLocalPath() only checks process.cwd() and workspaceDir, so extensions/acpx often resolves to a non-existent path in global installs or custom workspaces; that removes the intended local install path and pushes users back to npm for this plugin.

Useful? React with 👍 / 👎.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

@openclaw/acpx plugin install fails with 404 — scoped package not published to npm

1 participant