{"_id":"@andersea/pi-scaleway-provider","_rev":"3-9f891357a5c83fadc1eb1e87e0fe323a","name":"@andersea/pi-scaleway-provider","dist-tags":{"latest":"0.3.0"},"versions":{"0.1.0":{"name":"@andersea/pi-scaleway-provider","version":"0.1.0","keywords":["pi","pi-package","pi-extension","scaleway","generative-ai"],"author":{"name":"Anders Ellenshøj Andersen","email":"andersa@ellenshoej.dk"},"license":"MIT","_id":"@andersea/pi-scaleway-provider@0.1.0","maintainers":[{"name":"andersea","email":"andersa@ellenshoej.dk"}],"homepage":"https://github.com/andersea/pi-scaleway-provider#readme","bugs":{"url":"https://github.com/andersea/pi-scaleway-provider/issues"},"pi":{"extensions":["./src/index.ts"]},"dist":{"shasum":"a1f7e678dfa1197f7bd500c0264efec92db3dbb1","tarball":"https://registry.npmjs.org/@andersea/pi-scaleway-provider/-/pi-scaleway-provider-0.1.0.tgz","fileCount":6,"integrity":"sha512-Gv1QBNnQIYBe6u4DZKpRWLSqSkt4sfoGhE810MmXxibjKtt5UAe3OqBnGYQosLzUl4V4qMVXDZpUeKVkJitqbg==","signatures":[{"sig":"MEUCIBRVJ/NtIXjP/hHJOnrQ6lrolCBWYgdq6PiM9CTfkC+RAiEA6YBvMIfciV2ZajzLQ/ook4FhtntxIelscrpCNy+gB98=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":18544},"main":"./src/index.ts","type":"module","engines":{"node":">=22.19.0"},"exports":{".":"./src/index.ts","./package.json":"./package.json"},"gitHead":"884c702aa4172b1bc33e2b095cd982bef86c52c7","private":false,"scripts":{"dev":"tsc --watch","lint":"eslint src --ext .ts","test":"vitest run","build":"tsc","typecheck":"tsc --noEmit","test:watch":"vitest","prepublishOnly":"npm run typecheck && npm run lint"},"_npmUser":{"name":"andersea","email":"andersa@ellenshoej.dk"},"repository":{"url":"git+https://github.com/andersea/pi-scaleway-provider.git","type":"git"},"_npmVersion":"11.14.1","description":"Pi Agent extension for Scaleway's Generative APIs","directories":{},"_nodeVersion":"24.15.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^8.55.0","vitest":"^1.0.0","typescript":"^5.3.0","@types/node":"^20.10.0","@typescript-eslint/parser":"^6.12.0","@typescript-eslint/eslint-plugin":"^6.12.0"},"peerDependencies":{"typebox":"*","@earendil-works/pi-coding-agent":"*"},"peerDependenciesMeta":{"typebox":{"optional":true},"@earendil-works/pi-coding-agent":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/pi-scaleway-provider_0.1.0_1783978733327_0.24930861283531303","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"@andersea/pi-scaleway-provider","version":"0.2.0","keywords":["pi","pi-package","pi-extension","scaleway","generative-ai"],"author":{"name":"Anders Ellenshøj Andersen","email":"andersa@ellenshoej.dk"},"license":"MIT","_id":"@andersea/pi-scaleway-provider@0.2.0","maintainers":[{"name":"andersea","email":"andersa@ellenshoej.dk"}],"homepage":"https://github.com/andersea/pi-scaleway-provider#readme","bugs":{"url":"https://github.com/andersea/pi-scaleway-provider/issues"},"pi":{"extensions":["./src/index.ts"]},"dist":{"shasum":"439f7033cf98a2914fdc84a17497cf56b852c557","tarball":"https://registry.npmjs.org/@andersea/pi-scaleway-provider/-/pi-scaleway-provider-0.2.0.tgz","fileCount":6,"integrity":"sha512-P4kbZFEWtxiq1D2ZQlUizZB9PM/SwVHQdfeUUNZdUdQ0bQWOeobUc9II/MKHRVrUN3d7roM+tzI/qWNC4uvowg==","signatures":[{"sig":"MEUCIDCLvfiUdG3t6gytfOhsmF0zm8Xr/8uEARvQn9O7xS/3AiEA5ZHoYqgTf1oXJpS28DposJE0l34ag1X6wQv30jWXxhw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":18242},"main":"./src/index.ts","type":"module","engines":{"node":">=22.19.0"},"exports":{".":"./src/index.ts","./package.json":"./package.json"},"gitHead":"4aa7ab3f9b00c8e59e506862ead88f7cecfcc525","private":false,"scripts":{"dev":"tsc --watch","lint":"eslint src --ext .ts","test":"vitest run","build":"tsc","typecheck":"tsc --noEmit","test:watch":"vitest","prepublishOnly":"npm run typecheck && npm run lint"},"_npmUser":{"name":"andersea","email":"andersa@ellenshoej.dk"},"repository":{"url":"git+https://github.com/andersea/pi-scaleway-provider.git","type":"git"},"_npmVersion":"11.14.1","description":"Pi Agent extension for Scaleway's Generative APIs","directories":{},"_nodeVersion":"24.15.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^8.55.0","vitest":"^1.0.0","typescript":"^5.3.0","@types/node":"^20.10.0","@typescript-eslint/parser":"^6.12.0","@typescript-eslint/eslint-plugin":"^6.12.0"},"peerDependencies":{"typebox":"*","@earendil-works/pi-coding-agent":"*"},"peerDependenciesMeta":{"typebox":{"optional":true},"@earendil-works/pi-coding-agent":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/pi-scaleway-provider_0.2.0_1784033643332_0.8519240170943372","host":"s3://npm-registry-packages-npm-production"}},"0.3.0":{"name":"@andersea/pi-scaleway-provider","version":"0.3.0","description":"Pi Agent extension for Scaleway's Generative APIs","type":"module","main":"./extensions/index.ts","exports":{".":"./extensions/index.ts","./package.json":"./package.json"},"private":false,"scripts":{"build":"tsc","typecheck":"tsc --noEmit","dev":"tsc --watch","test":"vitest run","test:watch":"vitest","lint":"eslint extensions --ext .ts","prepublishOnly":"npm run typecheck && npm run lint"},"keywords":["pi","pi-package","pi-extension","scaleway","generative-ai"],"author":{"name":"Anders Ellenshøj Andersen","email":"andersa@ellenshoej.dk"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/andersea/pi-scaleway-provider.git"},"bugs":{"url":"https://github.com/andersea/pi-scaleway-provider/issues"},"homepage":"https://github.com/andersea/pi-scaleway-provider#readme","pi":{"extensions":["./extensions/index.ts"]},"peerDependencies":{"@earendil-works/pi-coding-agent":"*","typebox":"*"},"peerDependenciesMeta":{"@earendil-works/pi-coding-agent":{"optional":true},"typebox":{"optional":true}},"devDependencies":{"@types/node":"^20.10.0","@typescript-eslint/eslint-plugin":"^6.12.0","@typescript-eslint/parser":"^6.12.0","eslint":"^8.55.0","typescript":"^5.3.0","vitest":"^1.0.0"},"engines":{"node":">=22.19.0"},"publishConfig":{"access":"public"},"gitHead":"10da662508e64194ac854956ef88d17322eea159","_id":"@andersea/pi-scaleway-provider@0.3.0","_nodeVersion":"24.15.0","_npmVersion":"11.14.1","dist":{"integrity":"sha512-BmKE9hxa4Nm+rwtzt0HBNYdQkNULAn6By7nVKeah+XY9Z+73lt55mLcXwZI3aWkliBbFSEYVGO4yLmR42r/Mzw==","shasum":"a4cff2bd3827b9bb4a21383770e0f8db3b5b7f19","tarball":"https://registry.npmjs.org/@andersea/pi-scaleway-provider/-/pi-scaleway-provider-0.3.0.tgz","fileCount":6,"unpackedSize":16534,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQD7nkgk6OzN/SeGFztow1I4m3G1JaqmluUahgFjkA9N9AIgeO34SVvvf0AUI0QARvYkjIU71gbAAJx6TgDOOdVcBow="}]},"_npmUser":{"name":"andersea","email":"andersa@ellenshoej.dk"},"directories":{},"maintainers":[{"name":"andersea","email":"andersa@ellenshoej.dk"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/pi-scaleway-provider_0.3.0_1784383019381_0.08133014553774798"},"_hasShrinkwrap":false}},"time":{"created":"2026-07-13T21:38:53.124Z","modified":"2026-07-18T13:56:59.667Z","0.1.0":"2026-07-13T21:38:53.454Z","0.2.0":"2026-07-14T12:54:03.455Z","0.3.0":"2026-07-18T13:56:59.519Z"},"bugs":{"url":"https://github.com/andersea/pi-scaleway-provider/issues"},"author":{"name":"Anders Ellenshøj Andersen","email":"andersa@ellenshoej.dk"},"license":"MIT","homepage":"https://github.com/andersea/pi-scaleway-provider#readme","keywords":["pi","pi-package","pi-extension","scaleway","generative-ai"],"repository":{"type":"git","url":"git+https://github.com/andersea/pi-scaleway-provider.git"},"description":"Pi Agent extension for Scaleway's Generative APIs","maintainers":[{"name":"andersea","email":"andersa@ellenshoej.dk"}],"readme":"# Scaleway Generative AI Extension for Pi\n\nA minimal Pi extension that registers Scaleway's Generative APIs as a native Pi provider.\n\n## Installation\n\n```bash\n# Production — install via npm (recommended)\npi install npm:@andersea/pi-scaleway-gen\n\n# Or install from git\npi install git:github.com/andersea/pi-scaleway-provider\n\n# Development — load directly from source\npi -e ./extensions/index.ts\n```\n\n## Authentication\n\nScaleway supports two authentication methods:\n\n### Method 1: Interactive Login (Recommended)\n\n```bash\n# Start Pi, then run:\n/login scaleway\n# Enter your API key when prompted\n```\n\nCredentials are stored securely in `~/.pi/agent/auth.json` and persist across sessions.\n\n### Method 2: Environment Variable\n\n```bash\nexport SCW_SECRET_KEY=\"scw_...\"\n```\n\n> 💡 **Note**: `SCW_SECRET_KEY` is the official Scaleway convention. Get your API key from [Scaleway Console → Credentials → API Keys](https://console.scaleway.com/credentials/api-keys).\n\n### Credential Resolution\n\nPi resolves credentials in this order: `auth.json` → environment variable.\n\n## Usage\n\n### Select a Scaleway Model\n\n```bash\n# List available Scaleway models\n/model scaleway/\n\n# Use a specific model\n/model scaleway/gpt-oss-120b\n```\n\n## Development\n\n```bash\n# Install dependencies\nnpm install\n\n# Build (optional - jiti loads TS directly)\nnpm run build\n\n# Lint\nnpm run lint\n\n# Test with Pi\nSCW_SECRET_KEY=scw_xxx pi -e ./extensions/index.ts\n```\n\n## Architecture\n\nThis extension uses Pi's **provider registration** pattern:\n\n```typescript\npi.registerProvider(\"scaleway\", {\n  name: \"Scaleway Generative AI\",\n  baseUrl: \"https://api.scaleway.ai/v1\",\n  apiKey: \"$SCW_SECRET_KEY\",\n  authHeader: true,\n  api: \"openai-completions\",\n  models: getModels()\n});\n```\n\nAll Scaleway models use the `openai-completions` API — including `gpt-oss-120b`, which the Scaleway docs suggest must use the Responses API. In practice, Scaleway's `/v1/responses` endpoint rejects the `include` field that Pi sends for reasoning models, so all models are routed through chat completions.\n\nModels are defined in `extensions/models.ts` as a static, curated list sourced from [Scaleway's supported models page](https://www.scaleway.com/en/docs/generative-apis/reference-content/supported-models/).\n\nOnly serverless chat/generation models are included — non-chat models (audio, embeddings), EOL models, and dedicated-only models are excluded.\n\n## License\n\nMIT\n","readmeFilename":"README.md"}