salesforce / salesforce/agentscript

[bug]: dist/ JS retains @agentscript/* imports after scope rewrite, breaking installed package

Open
#35 1 comment 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

bug
Dominant language
TypeScript
Stars
267
Forks
54
Avg merge
48m
Merged PRs (30d)
1

Description

Summary

Installing the published npm package @sf-agentscript/agentforce@2.5.31 and importing it throws ERR_MODULE_NOT_FOUND: Cannot find package '@agentscript/parser' at runtime. The package on npm is currently unusable end-to-end.

Root cause

scripts/publish.mjs rewrites @agentscript/*@sf-agentscript/* in package.json files only (lines 14–15, 28–29). The compiled JS in packages/*/dist/ is built before this rewrite step, so the compiled output still contains literal import specifiers like:

import { parseAndHighlight } from "@agentscript/parser";

When npm installs @sf-agentscript/agentforce, dependency resolution correctly places the dep at node_modules/@sf-agentscript/parser (because the rewritten package.json lists it under that name). But the runtime code still asks for @agentscript/parser, so Node throws ERR_MODULE_NOT_FOUND.

The same issue affects the JSDoc @example blocks in dist/index.d.ts (cosmetic, but inconsistent).

Reproduction

mkdir /tmp/repro && cd /tmp/repro
npm init -y
node -e "let p=require('./package.json');p.type='module';require('fs').writeFileSync('package.json',JSON.stringify(p,null,2))"
npm install @sf-agentscript/agentforce
node --input-type=module -e "import('@sf-agentscript/agentforce').then(m => console.log(typeof m.parse))"

Actual output:

Error [ERR_MODULE_NOT_FOUND]: Cannot find package '@agentscript/parser' imported from
  /tmp/repro/node_modules/@sf-agentscript/agentforce/dist/index.js

Expected: function (the parse export is callable).

Evidence

  • node_modules/@sf-agentscript/agentforce/package.json correctly lists "@sf-agentscript/parser": "4.0.0"
  • node_modules/@sf-agentscript/agentforce/dist/index.js line ~3 reads import { ... } from "@agentscript/parser"
  • node_modules/@sf-agentscript/agentforce/dist/index.d.ts JSDoc @example blocks reference '@agentscript/agentforce' (cosmetic, lower priority)

grep -rE "from '(@agentscript|@sf-agentscript)" node_modules/@sf-agentscript/agentforce/dist/ confirms every cross-package import in dist/ uses the un-rewritten @agentscript/* scope.

Possible fixes

  1. Rewrite dist after build, before publish. Add a step to scripts/publish.mjs that walks packages/*/dist/**/*.{js,mjs,cjs,d.ts,d.mts,map} and applies the same @agentscript/@sf-agentscript/ string replace. ~20 lines. Lowest blast radius.
  2. Build after rewrite. Reorder publish steps so package.json rewrite happens before pnpm build, then build emits the new scope. But TypeScript doesn't transform import specifiers, so this alone wouldn't help — sources still say from '@agentscript/parser'. Would also require source rewrites or a tsconfig path alias.
  3. Bundler alias / path mapping during publish builds. More invasive, requires per-package config changes.

Option 1 is the smallest, safest, and most localized change. I have a draft patch ready and am happy to send a PR if this approach is acceptable.

Related

  • #6 — the install command in the README was wrong; the README fix is in #34. This issue is the runtime half of the same end-to-end user journey.
  • This is also why PR #23's installation.md troubleshooting note describes the npm visibility error: users hitting the install-side bug never get to discover the runtime-side bug.

Environment

  • Node v20.14.0 (also reproduced on v22)
  • npm 10.7.0
  • macOS arm64
  • Package: @sf-agentscript/agentforce@2.5.31 (current latest on npm at time of report)

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start with scripts/publish.mjs and inspect how packages//dist/ is produced relative to the package.json scope rewrite. Reproduce with the provided npm install and dynamic import, then inspect dist/index.js and dist/index.d.ts for remaining @agentscript/ references. Done means the installed package resolves its @sf-agentscript/* dependencies and the parse export is callable.

Written by the indexing model from the issue text.

Assessment

Tech stack
node.js, typescript
Domain
build-system, release
Issue type
Bug
Difficulty
3/5
Estimated time
1-2 days
Activity status
Quiet
Clarity
Clearly specified
Newbie friendliness
72/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.