--- name: pkg-update description: Update every external package of a project to its latest stable version using list-packages.sh and latest-version.sh, then run build and tests. Revert all changes on failure. Supports nodejs, python, and dotnet projects. Use for dependency refresh; not for adding or removing packages. --- # pkg-update — batch-update packages ## Steps 1. Run `tools/list-packages.sh {project dir}` to get every external package (ecosystem, name, current version). 2. Confirm the working tree is clean: stop and report when uncommitted changes exist, so the revert cannot destroy them. 3. Update ecosystem by ecosystem. This step **MUST run as a sub agent** (one sub agent per ecosystem): 1. For every package, run `tools/latest-version.sh {ecosystem} {name}` to get the latest stable version. 2. Rewrite the version source file (package.json / requirements.txt / pyproject.toml / *.csproj). 3. Re-resolve and install (`npm install` / `pip install -r` / `dotnet restore`). 4. Run build and tests: - nodejs: `npm run build` (if present) plus `npm test` (if present). - python: `pytest` (when tests exist). - dotnet: `dotnet build` plus `dotnet test`. - When the commands cannot be inferred, ask the user per the `jsc-ask:ask` rules. 5. Build or tests fail → revert every change (`git checkout -- .` and clean untracked lock changes), then report the failing packages with an error summary. 6. Success → report the update list (package, old version, new version) and hand off to `jsc-git:commit`.