[{"data":1,"prerenderedAt":1497},["ShallowReactive",2],{"footer-links":3,"content-\u002Fdistribution":12},[4,9],{"path":5,"title":6,"type":7,"isExternal":8},"https:\u002F\u002Fgithub.com\u002Fahumandev\u002Fautocode","GitHub","link",true,{"path":10,"title":11,"type":7,"isExternal":8},"https:\u002F\u002Fwww.npmjs.com\u002F@ahumandev\u002Fautocode","NPM",{"id":13,"title":14,"body":15,"description":25,"extension":1491,"meta":1492,"navigation":8,"path":1493,"seo":1494,"stem":1495,"__hash__":1496},"content\u002Fdistribution.md","npm Registry Distribution",{"type":16,"value":17,"toc":1462},"minimark",[18,22,26,46,49,54,96,105,129,132,136,141,144,147,172,175,178,186,190,199,202,215,226,229,248,250,256,262,266,272,278,281,325,328,330,336,340,343,350,366,369,372,406,409,437,439,445,449,452,455,470,473,514,517,531,533,539,547,560,601,604,618,620,626,630,640,693,700,703,719,721,727,731,740,746,749,755,758,768,771,799,801,807,811,818,821,866,868,874,882,887,890,896,899,905,908,914,916,922,926,929,932,951,954,974,985,987,993,995,999,1006,1009,1026,1029,1048,1051,1091,1094,1096,1100,1104,1107,1117,1120,1185,1188,1195,1197,1219,1233,1285,1289,1291,1296,1298,1315,1321,1323,1328,1331,1367,1370,1374,1376,1384,1386,1434,1438,1440,1445,1447,1458],[19,20,14],"h1",{"id":21},"npm-registry-distribution",[23,24,25],"p",{},"Use this guide for the source-repo npm publish flow for AutoCode.",[23,27,28,29,37,38,41,42,45],{},"This is different from the local-only deployment note in ",[30,31,33],"a",{"href":32},"..\u002FREADME",[34,35,36],"code",{},"README.md",". The README local deployment step is for building ",[34,39,40],{},"dist\u002F"," to test or run the plugin locally. This document is for publishing ",[34,43,44],{},"@ahumandev\u002Fautocode"," from this repository to the npm registry through the GitHub Actions workflow.",[23,47,48],{},"Goal: confirm npm publish access, complete the one-time initial publish if needed, configure npm Trusted Publisher, and publish AutoCode to npm from a version tag.",[50,51,53],"h2",{"id":52},"prerequisites","Prerequisites",[55,56,57,61,67,70,93],"ul",{},[58,59,60],"li",{},"You have push access to this GitHub repository.",[58,62,63,64,66],{},"You have an npm account that can publish the ",[34,65,44],{}," package.",[58,68,69],{},"You have Bun and Node.js available locally for preflight checks.",[58,71,72,73,76,77,80,81,84,85,88,89,92],{},"The ",[34,74,75],{},"test"," script in ",[34,78,79],{},"package.json"," runs ",[34,82,83],{},"bun test src --isolate","; the ",[34,86,87],{},"--isolate"," flag scopes ",[34,90,91],{},"mock.module"," state per test file so the suite is deterministic. Do not remove the flag when running tests locally or in CI.",[58,94,95],{},"You can configure npm Trusted Publisher for this package.",[23,97,98,99,104],{},"Package details from ",[30,100,102],{"href":101},"..\u002Fpackage.json",[34,103,79],{},":",[55,106,107,112,118,124],{},[58,108,109,110],{},"Package name: ",[34,111,44],{},[58,113,114,115],{},"Package scope: ",[34,116,117],{},"@ahumandev",[58,119,120,121],{},"Publish access: ",[34,122,123],{},"public",[58,125,126,127],{},"Published files: ",[34,128,40],{},[130,131],"hr",{},[50,133,135],{"id":134},"deployment-steps","Deployment Steps",[137,138,140],"h3",{"id":139},"️-step-1-confirm-this-is-the-npm-publish-workflow","⚠️ Step 1: Confirm this is the npm publish workflow",[23,142,143],{},"Use this workflow only when you are publishing the package to npm.",[23,145,146],{},"The local-only build flow in the README is:",[148,149,154],"pre",{"className":150,"code":151,"language":152,"meta":153,"style":153},"language-bash shiki shiki-themes github-light github-dark","bun run build\n","bash","",[34,155,156],{"__ignoreMap":153},[157,158,161,165,169],"span",{"class":159,"line":160},"line",1,[157,162,164],{"class":163},"sScJk","bun",[157,166,168],{"class":167},"sZZnC"," run",[157,170,171],{"class":167}," build\n",[23,173,174],{},"That command prepares local build artifacts, but it does not publish to npm by itself.",[23,176,177],{},"Expected result:",[148,179,184],{"className":180,"code":182,"language":183,"meta":153},[181],"language-text","dist\u002F is created for local testing or package publishing\n","text",[34,185,182],{"__ignoreMap":153},[137,187,189],{"id":188},"step-2-confirm-npm-ownership-for-the-package-scope","👤 Step 2: Confirm npm ownership for the package scope",[23,191,192,193,195,196,198],{},"The package name is scoped: ",[34,194,44],{},". The npm account you use for publishing must already control the ",[34,197,117],{}," scope.",[23,200,201],{},"Check your npm login locally:",[148,203,205],{"className":150,"code":204,"language":152,"meta":153,"style":153},"npm whoami\n",[34,206,207],{"__ignoreMap":153},[157,208,209,212],{"class":159,"line":160},[157,210,211],{"class":163},"npm",[157,213,214],{"class":167}," whoami\n",[23,216,217,218,221,222,225],{},"If ",[34,219,220],{},"npm whoami"," returns ",[34,223,224],{},"E401 Unauthorized",", the npm CLI is not logged in yet.",[23,227,228],{},"Log in, then check again:",[148,230,232],{"className":150,"code":231,"language":152,"meta":153,"style":153},"npm login\nnpm whoami\n",[34,233,234,241],{"__ignoreMap":153},[157,235,236,238],{"class":159,"line":160},[157,237,211],{"class":163},[157,239,240],{"class":167}," login\n",[157,242,244,246],{"class":159,"line":243},2,[157,245,211],{"class":163},[157,247,214],{"class":167},[23,249,177],{},[148,251,254],{"className":252,"code":253,"language":183,"meta":153},[181],"\u003Cyour-npm-username>\n",[34,255,253],{"__ignoreMap":153},[23,257,258,259,261],{},"If the account does not own or have publish rights for the ",[34,260,117],{}," scope, fix that in npm before you continue.",[137,263,265],{"id":264},"step-3-publish-once-locally-if-the-package-does-not-exist-yet","📦 Step 3: Publish once locally if the package does not exist yet",[23,267,268,269,271],{},"Do this step only for the first publish, when ",[34,270,44],{}," does not exist on npm yet.",[23,273,274,275,277],{},"Create a temporary granular npm token from an npm account that can publish ",[34,276,44],{},".",[23,279,280],{},"Then publish locally with the token set only for this shell session:",[148,282,284],{"className":150,"code":283,"language":152,"meta":153,"style":153},"export NODE_AUTH_TOKEN=\"\u003Ctemporary-granular-token>\"\nnpm publish --access public\nunset NODE_AUTH_TOKEN\n",[34,285,286,302,316],{"__ignoreMap":153},[157,287,288,292,296,299],{"class":159,"line":160},[157,289,291],{"class":290},"szBVR","export",[157,293,295],{"class":294},"sVt8B"," NODE_AUTH_TOKEN",[157,297,298],{"class":290},"=",[157,300,301],{"class":167},"\"\u003Ctemporary-granular-token>\"\n",[157,303,304,306,309,313],{"class":159,"line":243},[157,305,211],{"class":163},[157,307,308],{"class":167}," publish",[157,310,312],{"class":311},"sj4cs"," --access",[157,314,315],{"class":167}," public\n",[157,317,319,322],{"class":159,"line":318},3,[157,320,321],{"class":311},"unset",[157,323,324],{"class":167}," NODE_AUTH_TOKEN\n",[23,326,327],{},"After the publish succeeds, revoke the temporary token immediately in npm.",[23,329,177],{},[148,331,334],{"className":332,"code":333,"language":183,"meta":153},[181],"The package exists on npm and the temporary token is no longer active\n",[34,335,333],{"__ignoreMap":153},[137,337,339],{"id":338},"step-4-configure-npm-trusted-publisher","🧰 Step 4: Configure npm Trusted Publisher",[23,341,342],{},"After the initial package exists on npm, configure Trusted Publisher for future GitHub Actions publishes.",[23,344,345,346,349],{},"Sign in to npm as ",[34,347,348],{},"ahumandev",", then open the package page:",[55,351,352],{},[58,353,354,359,360,359,363],{},[30,355,356],{"href":356,"rel":357},"https:\u002F\u002Fwww.npmjs.com\u002Fpackage\u002F@ahumandev\u002Fautocode",[358],"nofollow"," → ",[34,361,362],{},"Settings",[34,364,365],{},"Trusted publishing",[23,367,368],{},"If a Trusted Publisher entry already exists for this package workflow, remove it and create it again.",[23,370,371],{},"Use these npm Trusted Publisher settings:",[55,373,374,380,385,391,397,400],{},[58,375,376,377],{},"Provider: ",[34,378,379],{},"GitHub Actions",[58,381,382,383],{},"Owner: ",[34,384,348],{},[58,386,387,388],{},"Repository: ",[34,389,390],{},"autocode",[58,392,393,394],{},"Workflow filename: ",[34,395,396],{},"npm-publish.yml",[58,398,399],{},"Environment: leave empty",[58,401,402,403],{},"Allowed action: ",[34,404,405],{},"npm publish",[23,407,408],{},"Critical notes:",[55,410,411,416,422,427],{},[58,412,413,414],{},"Enter the workflow filename only: ",[34,415,396],{},[58,417,418,419],{},"Do not enter ",[34,420,421],{},".github\u002Fworkflows\u002Fnpm-publish.yml",[58,423,418,424,426],{},[34,425,405],{}," in the workflow filename field",[58,428,429,430,433,434],{},"Do not use ",[34,431,432],{},".yaml"," if the workflow file is ",[34,435,436],{},".yml",[23,438,177],{},[148,440,443],{"className":441,"code":442,"language":183,"meta":153},[181],"npm Trusted Publisher is configured for this repository workflow\n",[34,444,442],{"__ignoreMap":153},[137,446,448],{"id":447},"step-5-run-local-preflight-checks","🧪 Step 5: Run local preflight checks",[23,450,451],{},"Run the same checks that the package publish flow depends on.",[23,453,454],{},"Install dependencies first:",[148,456,458],{"className":150,"code":457,"language":152,"meta":153,"style":153},"bun install --frozen-lockfile\n",[34,459,460],{"__ignoreMap":153},[157,461,462,464,467],{"class":159,"line":160},[157,463,164],{"class":163},[157,465,466],{"class":167}," install",[157,468,469],{"class":311}," --frozen-lockfile\n",[23,471,472],{},"Then run the package checks:",[148,474,476],{"className":150,"code":475,"language":152,"meta":153,"style":153},"bun run test\nbun run typecheck\nbun run build\nbun run verify:package\n",[34,477,478,487,496,504],{"__ignoreMap":153},[157,479,480,482,484],{"class":159,"line":160},[157,481,164],{"class":163},[157,483,168],{"class":167},[157,485,486],{"class":167}," test\n",[157,488,489,491,493],{"class":159,"line":243},[157,490,164],{"class":163},[157,492,168],{"class":167},[157,494,495],{"class":167}," typecheck\n",[157,497,498,500,502],{"class":159,"line":318},[157,499,164],{"class":163},[157,501,168],{"class":167},[157,503,171],{"class":167},[157,505,507,509,511],{"class":159,"line":506},4,[157,508,164],{"class":163},[157,510,168],{"class":167},[157,512,513],{"class":167}," verify:package\n",[23,515,516],{},"You can also run the full npm prepublish hook directly:",[148,518,520],{"className":150,"code":519,"language":152,"meta":153,"style":153},"npm publish --dry-run\n",[34,521,522],{"__ignoreMap":153},[157,523,524,526,528],{"class":159,"line":160},[157,525,211],{"class":163},[157,527,308],{"class":167},[157,529,530],{"class":311}," --dry-run\n",[23,532,177],{},[148,534,537],{"className":535,"code":536,"language":183,"meta":153},[181],"Tests pass\nTypeScript typecheck passes\ndist\u002F is rebuilt\nPackage artifact verification passes\n",[34,538,536],{"__ignoreMap":153},[137,540,542,543,546],{"id":541},"step-6-know-what-prepublishonly-runs","📦 Step 6: Know what ",[34,544,545],{},"prepublishOnly"," runs",[23,548,549,550,552,553,555,556,104],{},"Before ",[34,551,405],{},", the package ",[34,554,545],{}," script runs these commands from ",[30,557,558],{"href":101},[34,559,79],{},[148,561,563],{"className":150,"code":562,"language":152,"meta":153,"style":153},"bun run test && bun run typecheck && bun run build && bun run verify:package\n",[34,564,565],{"__ignoreMap":153},[157,566,567,569,571,574,577,579,581,584,586,588,590,593,595,597,599],{"class":159,"line":160},[157,568,164],{"class":163},[157,570,168],{"class":167},[157,572,573],{"class":167}," test",[157,575,576],{"class":294}," && ",[157,578,164],{"class":163},[157,580,168],{"class":167},[157,582,583],{"class":167}," typecheck",[157,585,576],{"class":294},[157,587,164],{"class":163},[157,589,168],{"class":167},[157,591,592],{"class":167}," build",[157,594,576],{"class":294},[157,596,164],{"class":163},[157,598,168],{"class":167},[157,600,513],{"class":167},[23,602,603],{},"That means a publish will fail if any of these fail:",[55,605,606,609,612,615],{},[58,607,608],{},"Tests",[58,610,611],{},"TypeScript type checking",[58,613,614],{},"Build output generation",[58,616,617],{},"Package artifact verification",[23,619,177],{},[148,621,624],{"className":622,"code":623,"language":183,"meta":153},[181],"Publish continues only when all prepublishOnly checks succeed\n",[34,625,623],{"__ignoreMap":153},[137,627,629],{"id":628},"️-step-7-know-which-package-artifacts-must-exist","🏗️ Step 7: Know which package artifacts must exist",[23,631,632,633,639],{},"The package verification script in ",[30,634,636],{"href":635},"..\u002Fscripts\u002Fverify-package-artifacts.ts",[34,637,638],{},"scripts\u002Fverify-package-artifacts.ts"," requires these artifacts and package settings:",[55,641,642,647,652,660,667,674,681],{},[58,643,644],{},[34,645,646],{},"dist\u002Fplugin.js",[58,648,649],{},[34,650,651],{},"dist\u002Fplugin.d.ts",[58,653,654,656,657],{},[34,655,79],{}," has ",[34,658,659],{},"main: .\u002Fdist\u002Fplugin.js",[58,661,662,656,664],{},[34,663,79],{},[34,665,666],{},"types: .\u002Fdist\u002Fplugin.d.ts",[58,668,669,656,671],{},[34,670,79],{},[34,672,673],{},"private: false",[58,675,676,656,678],{},[34,677,79],{},[34,679,680],{},"publishConfig.access: public",[58,682,683,685,686,689,690],{},[34,684,79],{}," includes ",[34,687,688],{},"dist"," in ",[34,691,692],{},"files",[23,694,695,696,699],{},"Build output also includes copied generated skills under ",[34,697,698],{},"dist\u002Fskills"," during the build flow.",[23,701,702],{},"Example check:",[148,704,706],{"className":150,"code":705,"language":152,"meta":153,"style":153},"ls -R dist\n",[34,707,708],{"__ignoreMap":153},[157,709,710,713,716],{"class":159,"line":160},[157,711,712],{"class":163},"ls",[157,714,715],{"class":311}," -R",[157,717,718],{"class":167}," dist\n",[23,720,177],{},[148,722,725],{"className":723,"code":724,"language":183,"meta":153},[181],"dist\u002Fplugin.js\ndist\u002Fplugin.d.ts\ndist\u002Fskills\u002F...\n",[34,726,724],{"__ignoreMap":153},[137,728,730],{"id":729},"️-step-8-follow-the-version-and-tag-rules","🏷️ Step 8: Follow the version and tag rules",[23,732,733,734,739],{},"The publish workflow in ",[30,735,737],{"href":736},"..\u002F.github\u002Fworkflows\u002Fnpm-publish.yml",[34,738,421],{}," runs automatically only for Git tags that match:",[148,741,744],{"className":742,"code":743,"language":183,"meta":153},[181],"v*\n",[34,745,743],{"__ignoreMap":153},[23,747,748],{},"Examples:",[148,750,753],{"className":751,"code":752,"language":183,"meta":153},[181],"v0.0.1\nv1.2.3\n",[34,754,752],{"__ignoreMap":153},[23,756,757],{},"The workflow checks out the tagged commit and publishes from that exact tag.",[23,759,760,761,764,765,767],{},"Use a version tag that matches the package release you intend to publish. In practice, this should align with the ",[34,762,763],{},"version"," field in ",[34,766,79],{}," for the tagged commit.",[23,769,770],{},"Create and push a tag like this:",[148,772,774],{"className":150,"code":773,"language":152,"meta":153,"style":153},"git tag v0.0.1\ngit push origin v0.0.1\n",[34,775,776,787],{"__ignoreMap":153},[157,777,778,781,784],{"class":159,"line":160},[157,779,780],{"class":163},"git",[157,782,783],{"class":167}," tag",[157,785,786],{"class":167}," v0.0.1\n",[157,788,789,791,794,797],{"class":159,"line":243},[157,790,780],{"class":163},[157,792,793],{"class":167}," push",[157,795,796],{"class":167}," origin",[157,798,786],{"class":167},[23,800,177],{},[148,802,805],{"className":803,"code":804,"language":183,"meta":153},[181],"GitHub Actions starts the npm publish workflow for the pushed tag\n",[34,806,804],{"__ignoreMap":153},[137,808,810],{"id":809},"step-9-publish-by-pushing-a-version-tag","🚀 Step 9: Publish by pushing a version tag",[23,812,813,814,817],{},"The default publish path is to push a matching ",[34,815,816],{},"v*"," tag.",[23,819,820],{},"The workflow does this:",[822,823,824,827,830,833,840,846,857,863],"ol",{},[58,825,826],{},"Checks out the repository at the tag.",[58,828,829],{},"Sets up Bun.",[58,831,832],{},"Sets up Node.js 24 with the npm registry.",[58,834,835,836,839],{},"Upgrades npm to a Trusted-Publishing-capable version (npm CLI >= 11.5.1; currently pinned to ",[34,837,838],{},"11.18.0","). npm 10.x cannot do OIDC Trusted Publishing.",[58,841,842,843,277],{},"Runs ",[34,844,845],{},"bun install --frozen-lockfile",[58,847,848,849,852,853,856],{},"Strips any empty npm ",[34,850,851],{},"_authToken"," written by ",[34,854,855],{},"setup-node",", so npm performs the OIDC token exchange instead of skipping it.",[58,858,842,859,862],{},[34,860,861],{},"npm publish --provenance --access public"," through npm Trusted Publishing.",[58,864,865],{},"Creates a GitHub release for the same tag with generated release notes.",[23,867,177],{},[148,869,872],{"className":870,"code":871,"language":183,"meta":153},[181],"Package is published to npm and a GitHub release is created\n",[34,873,871],{"__ignoreMap":153},[137,875,877,878,881],{"id":876},"️-step-10-use-the-manual-workflow_dispatch-option-when-needed","🖱️ Step 10: Use the manual ",[34,879,880],{},"workflow_dispatch"," option when needed",[23,883,884,885,277],{},"The same workflow also supports manual execution through ",[34,886,880],{},[23,888,889],{},"Manual input:",[148,891,894],{"className":892,"code":893,"language":183,"meta":153},[181],"tag\n",[34,895,893],{"__ignoreMap":153},[23,897,898],{},"The input must be an existing version tag, because the workflow checks out this ref:",[148,900,903],{"className":901,"code":902,"language":183,"meta":153},[181],"ref: \u003Ctag input>\n",[34,904,902],{"__ignoreMap":153},[23,906,907],{},"Use the Actions UI to run the workflow and enter a tag such as:",[148,909,912],{"className":910,"code":911,"language":183,"meta":153},[181],"v0.0.1\n",[34,913,911],{"__ignoreMap":153},[23,915,177],{},[148,917,920],{"className":918,"code":919,"language":183,"meta":153},[181],"GitHub Actions publishes and releases from the existing tag you entered\n",[34,921,919],{"__ignoreMap":153},[137,923,925],{"id":924},"step-11-verify-the-published-package-with-the-opencode-plugin-cli","✅ Step 11: Verify the published package with the OpenCode plugin CLI",[23,927,928],{},"After the package is published, verify installation with the OpenCode plugin CLI instead of editing config files manually.",[23,930,931],{},"Install the published package globally with:",[148,933,935],{"className":150,"code":934,"language":152,"meta":153,"style":153},"opencode plugin @ahumandev\u002Fautocode -g\n",[34,936,937],{"__ignoreMap":153},[157,938,939,942,945,948],{"class":159,"line":160},[157,940,941],{"class":163},"opencode",[157,943,944],{"class":167}," plugin",[157,946,947],{"class":167}," @ahumandev\u002Fautocode",[157,949,950],{"class":311}," -g\n",[23,952,953],{},"To update or replace an existing global install with the latest published package, run:",[148,955,957],{"className":150,"code":956,"language":152,"meta":153,"style":153},"opencode plugin @ahumandev\u002Fautocode@latest -g -f\n",[34,958,959],{"__ignoreMap":153},[157,960,961,963,965,968,971],{"class":159,"line":160},[157,962,941],{"class":163},[157,964,944],{"class":167},[157,966,967],{"class":167}," @ahumandev\u002Fautocode@latest",[157,969,970],{"class":311}," -g",[157,972,973],{"class":311}," -f\n",[23,975,976,977,980,981,984],{},"Local install is optional. Omit ",[34,978,979],{},"-g"," if you want OpenCode to write project-local ",[34,982,983],{},".opencode"," config instead of a global install.",[23,986,177],{},[148,988,991],{"className":989,"code":990,"language":183,"meta":153},[181],"OpenCode installs or updates the published AutoCode plugin through the plugin CLI\n",[34,992,990],{"__ignoreMap":153},[130,994],{},[50,996,998],{"id":997},"what-the-github-workflow-does","What the GitHub workflow does",[23,1000,1001,1002,277],{},"The npm publish workflow is defined in ",[30,1003,1004],{"href":736},[34,1005,421],{},[23,1007,1008],{},"It has two triggers:",[55,1010,1011,1016],{},[58,1012,1013,1014],{},"Push of a tag matching ",[34,1015,816],{},[58,1017,1018,1019,1021,1022,1025],{},"Manual ",[34,1020,880],{}," with a required ",[34,1023,1024],{},"tag"," input",[23,1027,1028],{},"It publishes with:",[148,1030,1034],{"className":1031,"code":1032,"language":1033,"meta":153,"style":153},"language-yaml shiki shiki-themes github-light github-dark","run: npm publish --provenance --access public\n","yaml",[34,1035,1036],{"__ignoreMap":153},[157,1037,1038,1042,1045],{"class":159,"line":160},[157,1039,1041],{"class":1040},"s9eBZ","run",[157,1043,1044],{"class":294},": ",[157,1046,1047],{"class":167},"npm publish --provenance --access public\n",[23,1049,1050],{},"This uses npm Trusted Publishing (OIDC). There is no stored npm token; publish is authorized by exchanging the GitHub Actions OIDC token with the npm registry. Two requirements the workflow enforces:",[55,1052,1053,1063],{},[58,1054,1055,1056,1059,1060,1062],{},"npm CLI version: Trusted Publishing requires npm CLI ",[34,1057,1058],{},">= 11.5.1",". The workflow pins npm to ",[34,1061,838],{}," (npm 10.x cannot do OIDC publishing).",[58,1064,1065,1066,1068,1069,1072,1073,1076,1077,1080,1081,1084,1085,1088,1089,277],{},"Empty ",[34,1067,851],{}," cleanup: ",[34,1070,1071],{},"actions\u002Fsetup-node"," with ",[34,1074,1075],{},"registry-url"," writes an empty ",[34,1078,1079],{},"\u002F\u002Fregistry.npmjs.org\u002F:_authToken="," line to ",[34,1082,1083],{},"~\u002F.npmrc",". An empty token makes npm skip the OIDC exchange and fail with ",[34,1086,1087],{},"E404",". The workflow removes this line before ",[34,1090,405],{},[23,1092,1093],{},"It creates a GitHub release with autogenerated notes after publish succeeds.",[130,1095],{},[50,1097,1099],{"id":1098},"troubleshooting","Troubleshooting",[137,1101,1103],{"id":1102},"️-trusted-publishing-or-initial-package-setup-is-incomplete","⚠️ Trusted Publishing or initial package setup is incomplete",[23,1105,1106],{},"Symptoms:",[55,1108,1109,1114],{},[58,1110,1111,1113],{},[34,1112,405],{}," fails in GitHub Actions authentication",[58,1115,1116],{},"The workflow cannot publish a package that does not exist yet",[23,1118,1119],{},"Check:",[55,1121,1122,1125,1131,1146,1179],{},[58,1123,1124],{},"The package already exists on npm, or you completed the one-time local first publish",[58,1126,1127,1128,1130],{},"The workflow runs npm CLI ",[34,1129,1058],{}," (npm 10.x cannot do Trusted Publishing)",[58,1132,1133,1134,1136,1137,1139,1140,1142,1143,1145],{},"The workflow strips the empty ",[34,1135,851],{}," from ",[34,1138,1083],{}," before ",[34,1141,405],{}," (see the ",[34,1144,1087],{}," section below)",[58,1147,1148,1149],{},"npm Trusted Publisher is configured with:\n",[55,1150,1151,1156,1161,1166,1171,1174],{},[58,1152,1153,1154],{},"Provider ",[34,1155,379],{},[58,1157,1158,1159],{},"Owner ",[34,1160,348],{},[58,1162,1163,1164],{},"Repository ",[34,1165,390],{},[58,1167,1168,1169],{},"Workflow filename ",[34,1170,396],{},[58,1172,1173],{},"Environment empty",[58,1175,1176,1177],{},"Allowed action ",[34,1178,405],{},[58,1180,1181,1182],{},"The workflow has OIDC permission through ",[34,1183,1184],{},"id-token: write",[23,1186,1187],{},"If you need to create the package for the first time, use a temporary granular token locally, publish once, then revoke the token immediately.",[137,1189,1191,1192,1194],{"id":1190},"️-e404-after-provenance-signing-or-package-put","⚠️ ",[34,1193,1087],{}," after provenance signing or package PUT",[23,1196,1106],{},[55,1198,1199,1202,1213],{},[58,1200,1201],{},"GitHub Actions shows provenance signing succeeded",[58,1203,1204,1206,1207,1209,1210],{},[34,1205,405],{}," then fails with ",[34,1208,1087],{},", often after the package ",[34,1211,1212],{},"PUT",[58,1214,1215,1216],{},"npm reports ",[34,1217,1218],{},"'@ahumandev\u002Fautocode@\u003Cversion>' is not in this registry",[23,1220,1221,1222,1224,1225,1228,1229,1232],{},"This ",[34,1223,1087],{}," on an existing scoped package almost always means npm never received a valid Trusted Publishing credential, so the registry hides the package. Scoped packages return ",[34,1226,1227],{},"404",", not ",[34,1230,1231],{},"401",", when unauthenticated. Provenance still signs because Sigstore uses a separate token path. Check in order:",[822,1234,1235,1250,1267],{},[58,1236,1237,1238,1240,1241,1244,1245,1247,1248,277],{},"npm CLI version is ",[34,1239,1058],{},". npm 10.x (including the earlier ",[34,1242,1243],{},"10.8.2"," pin) cannot do OIDC Trusted Publishing: it signs provenance, but the registry ",[34,1246,1212],{}," fails. The workflow pins npm to ",[34,1249,838],{},[58,1251,1133,1252,1136,1254,1139,1256,1258,1259,1072,1261,1263,1264,1266],{},[34,1253,851],{},[34,1255,1083],{},[34,1257,405],{},". ",[34,1260,1071],{},[34,1262,1075],{}," writes ",[34,1265,1079],{}," (empty), and npm treats that as \"auth already configured\" and skips the OIDC exchange.",[58,1268,1269,1270,1272,1273,1275,1276,1278,1279,1281,1282,1284],{},"If both above are correct, then the npm Trusted Publisher entry does not match the workflow. Verify every value exactly: Provider ",[34,1271,379],{},", Owner ",[34,1274,348],{},", Repository ",[34,1277,390],{},", Workflow filename ",[34,1280,396],{},", Environment empty, Allowed action ",[34,1283,405],{},". Delete the entry and recreate it if anything looks off.",[137,1286,1288],{"id":1287},"️-the-workflow-did-not-start","⚠️ The workflow did not start",[23,1290,1106],{},[55,1292,1293],{},[58,1294,1295],{},"Pushing a tag does nothing",[23,1297,1119],{},[55,1299,1300,1306,1309],{},[58,1301,1302,1303],{},"The tag starts with ",[34,1304,1305],{},"v",[58,1307,1308],{},"The tag was pushed to GitHub",[58,1310,1311,1312,1314],{},"For manual runs, the ",[34,1313,1024],{}," input matches an existing tag",[137,1316,1191,1318,1320],{"id":1317},"️-prepublishonly-failed",[34,1319,545],{}," failed",[23,1322,1106],{},[55,1324,1325],{},[58,1326,1327],{},"Publish stops before upload",[23,1329,1330],{},"Check locally:",[148,1332,1333],{"className":150,"code":475,"language":152,"meta":153,"style":153},[34,1334,1335,1343,1351,1359],{"__ignoreMap":153},[157,1336,1337,1339,1341],{"class":159,"line":160},[157,1338,164],{"class":163},[157,1340,168],{"class":167},[157,1342,486],{"class":167},[157,1344,1345,1347,1349],{"class":159,"line":243},[157,1346,164],{"class":163},[157,1348,168],{"class":167},[157,1350,495],{"class":167},[157,1352,1353,1355,1357],{"class":159,"line":318},[157,1354,164],{"class":163},[157,1356,168],{"class":167},[157,1358,171],{"class":167},[157,1360,1361,1363,1365],{"class":159,"line":506},[157,1362,164],{"class":163},[157,1364,168],{"class":167},[157,1366,513],{"class":167},[23,1368,1369],{},"Fix the failing command, then retry the publish.",[137,1371,1373],{"id":1372},"️-package-artifact-verification-failed","⚠️ Package artifact verification failed",[23,1375,1106],{},[55,1377,1378],{},[58,1379,1380,1383],{},[34,1381,1382],{},"verify:package"," throws an error",[23,1385,1119],{},[55,1387,1388,1393,1397,1412,1421,1428],{},[58,1389,1390,1392],{},[34,1391,646],{}," exists",[58,1394,1395,1392],{},[34,1396,651],{},[58,1398,1399,1401,1402,1405,1406,1409,1410],{},[34,1400,79],{}," still points ",[34,1403,1404],{},"main"," and ",[34,1407,1408],{},"types"," to ",[34,1411,40],{},[58,1413,1414,1417,1418],{},[34,1415,1416],{},"private"," is ",[34,1419,1420],{},"false",[58,1422,1423,1417,1426],{},[34,1424,1425],{},"publishConfig.access",[34,1427,123],{},[58,1429,1430,685,1432],{},[34,1431,692],{},[34,1433,688],{},[137,1435,1437],{"id":1436},"️-wrong-package-version-or-tag","⚠️ Wrong package version or tag",[23,1439,1106],{},[55,1441,1442],{},[58,1443,1444],{},"Release tag and package version do not line up",[23,1446,1119],{},[55,1448,1449,1455],{},[58,1450,1451,1452,1454],{},"The tagged commit contains the intended ",[34,1453,79],{}," version",[58,1456,1457],{},"The tag you publish is the release tag you want GitHub to release from",[1459,1460,1461],"style",{},"html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .szBVR, html code.shiki .szBVR{--shiki-default:#D73A49;--shiki-dark:#F97583}html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .s9eBZ, html code.shiki .s9eBZ{--shiki-default:#22863A;--shiki-dark:#85E89D}",{"title":153,"searchDepth":243,"depth":243,"links":1463},[1464,1465,1480,1481],{"id":52,"depth":243,"text":53},{"id":134,"depth":243,"text":135,"children":1466},[1467,1468,1469,1470,1471,1472,1474,1475,1476,1477,1479],{"id":139,"depth":318,"text":140},{"id":188,"depth":318,"text":189},{"id":264,"depth":318,"text":265},{"id":338,"depth":318,"text":339},{"id":447,"depth":318,"text":448},{"id":541,"depth":318,"text":1473},"📦 Step 6: Know what prepublishOnly runs",{"id":628,"depth":318,"text":629},{"id":729,"depth":318,"text":730},{"id":809,"depth":318,"text":810},{"id":876,"depth":318,"text":1478},"🖱️ Step 10: Use the manual workflow_dispatch option when needed",{"id":924,"depth":318,"text":925},{"id":997,"depth":243,"text":998},{"id":1098,"depth":243,"text":1099,"children":1482},[1483,1484,1486,1487,1489,1490],{"id":1102,"depth":318,"text":1103},{"id":1190,"depth":318,"text":1485},"⚠️ E404 after provenance signing or package PUT",{"id":1287,"depth":318,"text":1288},{"id":1317,"depth":318,"text":1488},"⚠️ prepublishOnly failed",{"id":1372,"depth":318,"text":1373},{"id":1436,"depth":318,"text":1437},"md",{},"\u002Fdistribution",{"title":14,"description":25},"distribution","ccOfGEryBlxLFTTJK_3wOwX2HR3rfPJZgpe89o_8c5I",1784015220746]