# Copyright 2026 Gentoo Authors # Distributed under the terms of the GNU General Public License v2 EAPI=8 # Generated from package-lock.json by scripts/npm-deps.py NPM_PKGS=" @anthropic-ai/sandbox-runtime@0.0.26 @anthropic-ai/sdk@0.124.0 @anthropic-ai/sdk@0.52.0 @anthropic-ai/sdk@0.91.1 @aws-sdk/client-bedrock-runtime@3.1127.0 @aws-sdk/core@3.977.9 @aws-sdk/credential-provider-env@3.972.70 @aws-sdk/credential-provider-http@3.972.72 @aws-sdk/credential-provider-ini@3.973.15 @aws-sdk/credential-provider-login@3.972.77 @aws-sdk/credential-provider-node@3.972.82 @aws-sdk/credential-provider-process@3.972.70 @aws-sdk/credential-provider-sso@3.973.14 @aws-sdk/credential-provider-web-identity@3.972.76 @aws-sdk/eventstream-handler-node@3.972.34 @aws-sdk/middleware-eventstream@3.972.29 @aws-sdk/middleware-websocket@3.972.52 @aws-sdk/nested-clients@3.997.44 @aws-sdk/signature-v4-multi-region@3.996.46 @aws-sdk/token-providers@3.1116.0 @aws-sdk/token-providers@3.1127.0 @aws-sdk/types@3.974.5 @aws-sdk/xml-builder@3.972.40 @aws/lambda-invoke-store@0.3.0 @babel/helper-string-parser@7.29.7 @babel/helper-validator-identifier@7.29.7 @babel/parser@7.29.8 @babel/runtime@7.29.2 @babel/types@7.29.8 @bcoe/v8-coverage@1.0.2 @biomejs/biome@2.3.5 @biomejs/cli-linux-arm64@2.3.5|arm64 @biomejs/cli-linux-arm64-musl@2.3.5|arm64 @biomejs/cli-linux-x64@2.3.5|amd64 @biomejs/cli-linux-x64-musl@2.3.5|amd64 @cto.af/wtf8@0.0.5 @earendil-works/gondolin@0.12.0 @earendil-works/gondolin-krun-runner-linux-x64@0.12.0|amd64 @esbuild/linux-arm64@0.28.2|arm64 @esbuild/linux-x64@0.28.2|amd64 @google/genai@2.21.0 @jridgewell/resolve-uri@3.1.2 @jridgewell/sourcemap-codec@1.5.5 @jridgewell/trace-mapping@0.3.31 @napi-rs/wasm-runtime@1.1.5 @nodelib/fs.scandir@2.1.5 @nodelib/fs.stat@2.0.5 @nodelib/fs.walk@1.2.8 @oxc-project/types@0.133.0 @pondwader/socks5-server@1.0.10 @protobufjs/aspromise@1.1.2 @protobufjs/base64@1.1.2 @protobufjs/codegen@2.0.5 @protobufjs/eventemitter@1.1.1 @protobufjs/fetch@1.1.1 @protobufjs/float@1.0.2 @protobufjs/path@1.1.2 @protobufjs/pool@1.1.0 @protobufjs/utf8@1.1.1 @rolldown/binding-linux-arm64-gnu@1.0.3|arm64 @rolldown/binding-linux-arm64-musl@1.0.3|arm64 @rolldown/binding-linux-x64-gnu@1.0.3|amd64 @rolldown/binding-linux-x64-musl@1.0.3|amd64 @rolldown/pluginutils@1.0.1 @silvia-odwyer/photon-node@0.3.4 @smithy/core@3.33.3 @smithy/credential-provider-imds@4.5.2 @smithy/fetch-http-handler@5.8.0 @smithy/node-http-handler@4.12.1 @smithy/signature-v4@5.7.3 @smithy/types@4.18.0 @stablelib/base64@1.0.1 @standard-schema/spec@1.1.0 @tybys/wasm-util@0.10.2 @types/chai@5.2.3 @types/cross-spawn@6.0.6 @types/deep-eql@4.0.2 @types/estree@1.0.9 @types/hosted-git-info@3.0.5 @types/lodash@4.17.24 @types/lodash-es@4.17.12 @types/ms@2.1.0 @types/node@22.19.19 @types/proper-lockfile@4.1.4 @types/retry@0.12.0 @types/retry@0.12.5 @types/semver@7.7.1 @typescript/native-preview@7.0.0-dev.20260120.1 @typescript/native-preview-linux-arm64@7.0.0-dev.20260120.1|arm64 @typescript/native-preview-linux-x64@7.0.0-dev.20260120.1|amd64 @vitest-evals/core@0.15.0 @vitest-evals/report-ui@0.15.0 @vitest/coverage-v8@4.1.9 @vitest/expect@4.1.9 @vitest/mocker@4.1.9 @vitest/pretty-format@4.1.9 @vitest/runner@4.1.9 @vitest/snapshot@4.1.9 @vitest/spy@4.1.9 @vitest/utils@4.1.9 @xterm/headless@5.5.0 agent-base@7.1.4 agent-base@9.0.0 ajv@8.20.0 argparse@2.0.1 asn1@0.2.6 assertion-error@2.0.1 ast-v8-to-istanbul@1.0.5 autoevals@0.3.0 balanced-match@4.0.4 base64-js@1.5.1 bcrypt-pbkdf@1.0.2 bignumber.js@9.3.1 binary-search@1.3.6 bl@4.1.0 bowser@2.14.1 brace-expansion@5.0.9 braces@3.0.3 buffer@5.7.1 buffer-equal-constant-time@1.0.1 buildcheck@0.0.7 canvas@3.2.3 cbor2@2.3.0 chai@6.2.2 chalk@6.0.0 cheminfo-types@1.16.0 chownr@1.1.4 commander@12.1.0 compute-cosine-similarity@1.1.0 compute-dot@1.1.0 compute-l2norm@1.1.0 convert-source-map@2.0.0 cpu-features@0.0.10 cross-spawn@6.0.6 cross-spawn@7.0.6 data-uri-to-buffer@4.0.1 debug@4.4.3 decompress-response@6.0.0 deep-extend@0.6.0 detect-libc@2.1.2 diff@8.0.4 ecdsa-sig-formatter@1.0.11 end-of-stream@1.4.5 es-errors@1.3.0 es-module-lexer@2.3.1 esbuild@0.28.2 estree-walker@3.0.3 execa@1.0.0 expand-template@2.0.3 expect-type@1.3.0 extend@3.0.2 fast-deep-equal@3.1.3 fast-glob@3.3.3 fast-sha256@1.3.0 fast-uri@3.1.8 fastq@1.20.1 fdir@6.5.0 fetch-blob@3.2.0 fft.js@4.0.4 fill-range@7.1.1 formdata-polyfill@4.0.10 fs-constants@1.0.0 function-bind@1.1.2 gaxios@7.1.4 gcp-metadata@8.1.2 get-east-asian-width@1.6.0 get-stream@4.1.0 github-from-package@0.0.0 glob-parent@5.1.2 google-auth-library@10.6.2 google-logging-utils@1.1.3 graceful-fs@4.2.11 grok-mermaid@0.2.3 has-flag@4.0.0 hasown@2.0.3 highlight.js@10.7.3 hosted-git-info@9.0.3 html-escaper@2.0.2 http-proxy-agent@9.1.0 https-proxy-agent@7.0.6 https-proxy-agent@9.1.0 husky@9.1.7 ieee754@1.2.1 ignore@7.0.8 inherits@2.0.4 ini@1.3.8 interpret@1.4.0 is-any-array@3.0.0 is-core-module@2.16.2 is-extglob@2.1.1 is-glob@4.0.3 is-number@7.0.0 is-stream@1.1.0 isexe@2.0.0 istanbul-lib-coverage@3.2.2 istanbul-lib-report@3.0.1 istanbul-reports@3.2.0 jiti@2.7.0 js-levenshtein@1.1.6 js-tokens@10.0.0 js-yaml@4.3.2 json-bigint@1.0.0 json-schema-to-ts@3.1.1 json-schema-traverse@1.0.0 jwa@2.0.1 jws@4.0.1 lightningcss@1.32.0 lightningcss-linux-arm64-gnu@1.32.0|arm64 lightningcss-linux-arm64-musl@1.32.0|arm64 lightningcss-linux-x64-gnu@1.32.0|amd64 lightningcss-linux-x64-musl@1.32.0|amd64 linear-sum-assignment@1.0.9 lodash-es@4.18.1 long@5.3.2 lru-cache@11.4.0 magic-string@0.30.21 magicast@0.5.4 make-dir@4.0.0 marked@18.0.11 merge2@1.4.1 micromatch@4.0.8 mimic-response@3.1.0 minimatch@10.2.6 minimist@1.2.8 mkdirp-classic@0.5.3 ml-array-max@2.0.0 ml-array-min@2.0.0 ml-array-rescale@2.0.0 ml-matrix@6.15.0 ml-spectra-processing@14.35.1 ml-xsadd@3.0.1 ms@2.1.3 mustache@4.2.0 nan@2.27.0 nanoid@3.3.18 napi-build-utils@2.0.0 nice-try@1.0.5 node-abi@3.92.0 node-addon-api@7.1.1 node-domexception@1.0.0 node-fetch@3.3.2 node-forge@1.4.0 npm-run-path@2.0.2 obug@2.1.3 once@1.4.0 openai@6.40.0 p-finally@1.0.0 p-retry@4.6.2 partial-json@0.1.7 path-key@2.0.1 path-key@3.1.1 path-parse@1.0.7 pathe@2.0.3 picocolors@1.1.1 picomatch@2.3.2 picomatch@4.0.4 picomatch@4.0.5 postcss@8.5.24 prebuild-install@7.1.3 proper-lockfile@4.1.2 protobufjs@7.6.6 proxy-agent-negotiate@1.1.0 pump@3.0.4 queue-microtask@1.2.3 rc@1.2.8 readable-stream@3.6.2 rechoir@0.6.2 require-from-string@2.0.2 resolve@1.22.12 retry@0.12.0 retry@0.13.1 reusify@1.1.0 rolldown@1.0.3 run-parallel@1.2.0 safe-buffer@5.2.1 safer-buffer@2.1.2 semver@5.7.2 semver@7.8.5 shebang-command@1.2.0 shebang-command@2.0.0 shebang-regex@1.0.0 shebang-regex@3.0.0 shell-quote@1.10.0 shelljs@0.9.2 shx@0.4.0 siginfo@2.0.0 signal-exit@3.0.7 simple-concat@1.0.1 simple-get@4.0.1 source-map-js@1.2.1 ssh2@1.17.0 stackback@0.0.2 standardwebhooks@1.1.1 std-env@4.2.0 string_decoder@1.3.0 strip-eof@1.0.0 strip-json-comments@2.0.1 supports-color@7.2.0 supports-preserve-symlinks-flag@1.0.0 tar-fs@2.1.4 tar-stream@2.2.0 tinybench@2.9.0 tinyexec@1.2.4 tinyglobby@0.2.17 tinyrainbow@3.1.0 to-regex-range@5.0.1 ts-algebra@2.0.0 tslib@2.8.1 tsx@4.22.1 tunnel-agent@0.6.0 tweetnacl@0.14.5 typebox@1.1.38 typebox@1.3.27 typescript@5.9.3 undici@6.28.0 undici@8.10.2 undici-types@6.21.0 util-deprecate@1.0.2 validate.io-array@1.0.6 validate.io-function@1.0.2 vite@8.0.16 vitest@4.1.9 vitest-evals@0.15.0 web-streams-polyfill@3.3.3 which@1.3.1 which@2.0.2 why-is-node-running@2.3.0 wrappy@1.0.2 ws@8.21.0 yaml@2.9.0 zod@3.25.76 zod-to-json-schema@3.25.0 " NPM_STUB_PKGS=" @biomejs/cli-darwin-arm64@2.3.5 @biomejs/cli-darwin-x64@2.3.5 @biomejs/cli-win32-arm64@2.3.5 @biomejs/cli-win32-x64@2.3.5 @earendil-works/gondolin-krun-runner-darwin-arm64@0.12.0 @esbuild/aix-ppc64@0.28.2 @esbuild/android-arm64@0.28.2 @esbuild/android-arm@0.28.2 @esbuild/android-x64@0.28.2 @esbuild/darwin-arm64@0.28.2 @esbuild/darwin-x64@0.28.2 @esbuild/freebsd-arm64@0.28.2 @esbuild/freebsd-x64@0.28.2 @esbuild/linux-arm@0.28.2 @esbuild/linux-ia32@0.28.2 @esbuild/linux-loong64@0.28.2 @esbuild/linux-mips64el@0.28.2 @esbuild/linux-ppc64@0.28.2 @esbuild/linux-riscv64@0.28.2 @esbuild/linux-s390x@0.28.2 @esbuild/netbsd-arm64@0.28.2 @esbuild/netbsd-x64@0.28.2 @esbuild/openbsd-arm64@0.28.2 @esbuild/openbsd-x64@0.28.2 @esbuild/openharmony-arm64@0.28.2 @esbuild/sunos-x64@0.28.2 @esbuild/win32-arm64@0.28.2 @esbuild/win32-ia32@0.28.2 @esbuild/win32-x64@0.28.2 @rolldown/binding-android-arm64@1.0.3 @rolldown/binding-darwin-arm64@1.0.3 @rolldown/binding-darwin-x64@1.0.3 @rolldown/binding-freebsd-x64@1.0.3 @rolldown/binding-linux-arm-gnueabihf@1.0.3 @rolldown/binding-linux-ppc64-gnu@1.0.3 @rolldown/binding-linux-s390x-gnu@1.0.3 @rolldown/binding-openharmony-arm64@1.0.3 @rolldown/binding-wasm32-wasi@1.0.3 @rolldown/binding-win32-arm64-msvc@1.0.3 @rolldown/binding-win32-x64-msvc@1.0.3 @typescript/native-preview-darwin-arm64@7.0.0-dev.20260120.1 @typescript/native-preview-darwin-x64@7.0.0-dev.20260120.1 @typescript/native-preview-linux-arm@7.0.0-dev.20260120.1 @typescript/native-preview-win32-arm64@7.0.0-dev.20260120.1 @typescript/native-preview-win32-x64@7.0.0-dev.20260120.1 fsevents@2.3.3 lightningcss-android-arm64@1.32.0 lightningcss-darwin-arm64@1.32.0 lightningcss-darwin-x64@1.32.0 lightningcss-freebsd-x64@1.32.0 lightningcss-linux-arm-gnueabihf@1.32.0 lightningcss-win32-arm64-msvc@1.32.0 lightningcss-win32-x64-msvc@1.32.0 " inherit edo npm optfeature DESCRIPTION="AI agent toolkit and interactive coding agent CLI" HOMEPAGE="https://pi.dev https://github.com/earendil-works/pi" SRC_URI=" https://github.com/earendil-works/pi/archive/refs/tags/v${PV}.tar.gz -> ${P}.gh.tar.gz https://registry.npmjs.org/@earendil-works/pi-ai/-/pi-ai-${PV}.tgz -> ${P}-model-data.tgz ${NPM_PKG_URIS} " LICENSE="MIT" # Dependent npm package licenses LICENSE+=" 0BSD Apache-2.0 BlueOak-1.0.0 BSD BSD-2 ISC MIT MPL-2.0 Unlicense || ( MIT WTFPL-2 ) || ( BSD GPL-2 ) " SLOT="0" KEYWORDS="~amd64 ~arm64" RESTRICT="mirror" # pi's bundled esbuild API refuses a binary of any other version ESBUILD_SLOT="0.28.2" RDEPEND=" >=net-libs/nodejs-22.19.0 dev-util/esbuild:${ESBUILD_SLOT} dev-vcs/git sys-apps/fd sys-apps/ripgrep " BDEPEND=" ${NPM_NODE_DEPEND} dev-util/esbuild:${ESBUILD_SLOT} " # Workspace packages published alongside the CLI PI_WORKSPACES=( chord tui telemetry ai agent coding-agent ) src_prepare() { default # The model catalogue is generated from provider APIs before publishing # and is not in git. Take it from the published pi-ai package. mkdir -p packages/ai/src/providers || die cp -r "${WORKDIR}"/package/dist/providers/data packages/ai/src/providers/ || die } src_configure() { export ESBUILD_BINARY_PATH="${BROOT}/usr/bin/esbuild-${ESBUILD_SLOT}" npm_with_registry npm ci } src_compile() { # build:offline uses the model data in the source tree instead of # fetching it edo npm run build:offline edo node scripts/generate-coding-agent-shrinkwrap.mjs local ws mkdir -p "${T}/packs" || die for ws in "${PI_WORKSPACES[@]}"; do edo npm pack --ignore-scripts --pack-destination "${T}/packs" \ --workspace "packages/${ws}" done } src_install() { # Install the way upstream publishes it, resolving dependencies from # the offline registry. Optional dependencies are prebuilt esbuild and # clipboard binaries: esbuild comes from dev-util/esbuild instead, and # clipboard access falls back to wl-paste or xclip. npm_registry_add "${T}"/packs/*.tgz npm_with_registry npm install --global --prefix "${ED}/usr" \ --omit=dev --omit=optional --install-links \ "@earendil-works/pi-coding-agent@${PV}" local moddir moddir=$(find "${ED}"/usr/lib* -maxdepth 1 -name node_modules -print -quit) || die [[ -n ${moddir} ]] || die "npm global install produced no node_modules" moddir=${moddir#"${ED}"} # The shrinkwrap pulls esbuild in regardless of --omit=optional rm -r "${ED}${moddir}"/@earendil-works/pi-coding-agent/node_modules/@esbuild || die rm -rf "${ED}${moddir}"/@earendil-works/pi-coding-agent/node_modules/@mariozechner/clipboard-* rm "${ED}/usr/bin/pi" || die newbin - pi <<-EOT #!/bin/sh export ESBUILD_BINARY_PATH="\${ESBUILD_BINARY_PATH:-${EPREFIX}/usr/bin/esbuild-${ESBUILD_SLOT}}" export PI_SKIP_VERSION_CHECK=1 exec node "${EPREFIX}${moddir}/@earendil-works/pi-coding-agent/dist/bundle/cli.js" "\$@" EOT dodoc README.md } pkg_postinst() { optfeature_header "Optional clipboard image support:" optfeature "Wayland" gui-apps/wl-clipboard optfeature "X11" x11-misc/xclip }