fix(packages): gitea_package_get returns 404 for packages that gitea_packages_list shows #36
Labels
No labels
area/dsh
area/forgejo
experiment
priority/later
priority/next
priority/now
type/bug
type/task
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
dsh-plugins/dsh-gitea#36
Loading…
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Symptom
gitea_package_getreturns HTTP 404 for packages thatgitea_packages_listreports on the same registry. There is noversionparameter, so the tool cannot retrieve the metadata/versions/assets its description promises.Repro
gitea_package_configworks, so credentials/base URL are fine.Observed vs expected
get404s whilelistsees the packages.Root cause
lib/package-registry.js#getRegistryPackagecallsclient.getPackage(owner, type, name), andlib/gitea-client.js:Forgejo 17's package API addresses a version (
GET /packages/{owner}/{type}/{name}/{version}); the name-only path 404s. The tool also carries noversionargument.Proposed fix
Use
GET /packages/{owner}/{type}/{name}/{version}with a required/defaultedversion(e.g. latest fromlistPackages), or fetch the owner's package list and filter by type/name, returning versions/assets from the matching rows. Add aversionparameter to the tool definition. Test againstdsh-pluginsnpm packages.Acceptance:
gitea_package_getfordsh-gitea(or any listed package) returns metadata instead of 404; a genuinely missing name returns a clear not-found message.Duplicate check
Searched
package(state all) — no existing issue.Layer
dsh-gitea plugin/tool (client path + schema).
Fixed in
b74ca23(PR #43).Forgejo's name-only package path 404s, so
getRegistryPackagenow queries the working package list (type+q), filters exact type/name, returns all versions, and accepts an optionalversionfor a single entry. Missing name/version returns a clear not-found.Live:
gitea_package_get {owner:"dsh-plugins", type:"npm", name:"dsh-gitea"}→ 4 versions with timestamps/URLs instead of404 page not found.Tests:
test/release-package.test.mjs.