{"_id":"@claaslange/pi-directory-models","_rev":"2-8e83b0049a3bfd31d25da1f045b58447","name":"@claaslange/pi-directory-models","dist-tags":{"latest":"0.2.0"},"versions":{"0.1.0":{"name":"@claaslange/pi-directory-models","version":"0.1.0","keywords":["pi-package","pi","extension","models","directories","workspace","settings"],"author":{"name":"claaslange"},"license":"MIT","_id":"@claaslange/pi-directory-models@0.1.0","maintainers":[{"name":"claas_lange","email":"claas@claaslange.de"}],"homepage":"https://github.com/claaslange/pi-directory-models","bugs":{"url":"https://github.com/claaslange/pi-directory-models/issues"},"pi":{"extensions":["./extensions"]},"dist":{"shasum":"b9e109ff3f1f088f6f7c676146c7f6740a8fbf44","tarball":"https://registry.npmjs.org/@claaslange/pi-directory-models/-/pi-directory-models-0.1.0.tgz","fileCount":4,"integrity":"sha512-yL86lRgQDLX1AvDQuIqfB1nHQ7GdQkIBIioen2ikSYd8/ei/nJPkPT0dTqwenxXtd0TLv3Qgfh8/SvJ4KhtY7Q==","signatures":[{"sig":"MEUCIQCIM4yeANJBorUFyzMBw2AiyoXGxmhKD7THik8lRcGxDQIgXIRiMgwd9JA7Em3oB2ActxtxWpbu4OTukBCcgB0n1ZI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":10783},"type":"module","gitHead":"0584ebb0e677702c0f557f159cde5418bcf7716e","scripts":{"lint":"biome check .","check":"npm run typecheck && npm run lint","format":"biome format --write .","lint:fix":"biome check --write .","typecheck":"tsc --noEmit"},"_npmUser":{"name":"claas_lange","email":"claas@claaslange.de"},"repository":{"url":"git+https://github.com/claaslange/pi-directory-models.git","type":"git"},"_npmVersion":"10.8.2","description":"pi extension that selects a model from the nearest ancestor .pi/settings.json","directories":{},"_nodeVersion":"20.20.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.9.2","@types/node":"^24.5.2","@biomejs/biome":"^1.9.4","@mariozechner/pi-agent-core":"^0.62.0","@mariozechner/pi-coding-agent":"^0.62.0"},"peerDependencies":{"@mariozechner/pi-agent-core":">=0.62.0","@mariozechner/pi-coding-agent":">=0.62.0"},"_npmOperationalInternal":{"tmp":"tmp/pi-directory-models_0.1.0_1774268642092_0.6358210762994791","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"@claaslange/pi-directory-models","version":"0.2.0","description":"pi extension that selects a model from the nearest ancestor .pi/settings.json","type":"module","license":"MIT","author":{"name":"claaslange"},"homepage":"https://github.com/claaslange/pi-directory-models","repository":{"type":"git","url":"git+https://github.com/claaslange/pi-directory-models.git"},"bugs":{"url":"https://github.com/claaslange/pi-directory-models/issues"},"keywords":["pi-package","pi","extension","models","directories","workspace","settings"],"publishConfig":{"access":"public"},"scripts":{"typecheck":"tsc --noEmit","lint":"biome check .","lint:fix":"biome check --write .","format":"biome format --write .","check":"npm run typecheck && npm run lint"},"peerDependencies":{"@earendil-works/pi-agent-core":"*","@earendil-works/pi-coding-agent":"*"},"devDependencies":{"@biomejs/biome":"^1.9.4","@earendil-works/pi-agent-core":"^0.78.1","@earendil-works/pi-coding-agent":"^0.78.1","@types/node":"^24.5.2","typescript":"^5.9.2"},"pi":{"extensions":["./extensions"]},"gitHead":"75eed100d1ce63e7fb5e47a3686e25e53b014a77","_id":"@claaslange/pi-directory-models@0.2.0","_nodeVersion":"24.16.0","_npmVersion":"11.13.0","dist":{"integrity":"sha512-B+eK2PiWDScupQG0LFhPzchkccfm/zbVLgdQjFYvNHGuus6hO5dRhI31SkGkoWyWub0HVpM2hD+SMN0xvBiEWg==","shasum":"2a0fe18b03b27ce3be95ca684cf47e119e3da443","tarball":"https://registry.npmjs.org/@claaslange/pi-directory-models/-/pi-directory-models-0.2.0.tgz","fileCount":4,"unpackedSize":10643,"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@claaslange%2fpi-directory-models@0.2.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIFCDiBP37DxHGKe9NEtIdYcGpTxNYe0aH0g90gRVq7pNAiBQvk4E0l35RDV1QkMIzgZRHtLCOOT5r0a9lTFhrv4EhA=="}]},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:61604bac-2840-45e8-8591-c5c051fd4947"}},"directories":{},"maintainers":[{"name":"claas_lange","email":"claas@claaslange.de"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/pi-directory-models_0.2.0_1780919276059_0.3467793525233982"},"_hasShrinkwrap":false}},"time":{"created":"2026-03-23T12:24:01.960Z","modified":"2026-06-08T11:47:56.501Z","0.1.0":"2026-03-23T12:24:02.255Z","0.2.0":"2026-06-08T11:47:56.201Z"},"bugs":{"url":"https://github.com/claaslange/pi-directory-models/issues"},"author":{"name":"claaslange"},"license":"MIT","homepage":"https://github.com/claaslange/pi-directory-models","keywords":["pi-package","pi","extension","models","directories","workspace","settings"],"repository":{"type":"git","url":"git+https://github.com/claaslange/pi-directory-models.git"},"description":"pi extension that selects a model from the nearest ancestor .pi/settings.json","maintainers":[{"name":"claas_lange","email":"claas@claaslange.de"}],"readme":"# pi-directory-models\n\n`pi-directory-models` is a pi extension that selects a model from the nearest ancestor `.pi/settings.json`.\n\nIt is meant for setups where different directory trees should automatically use different models or thinking levels.\n\n## What it does\n\nOn session start, the extension walks up from the current working directory until it reaches your home directory or the filesystem root.\n\nAs soon as it finds an ancestor `.pi/settings.json` with one of these settings, it applies them:\n\n- `defaultProvider`\n- `defaultModel`\n- `defaultThinkingLevel`\n\nMissing values fall back to your global `~/.pi/agent/settings.json`.\n\n## Example\n\nProject root:\n\n```json\n{\n  \"defaultProvider\": \"github-copilot\",\n  \"defaultModel\": \"gpt-5\",\n  \"defaultThinkingLevel\": \"medium\"\n}\n```\n\nPut that in:\n\n```text\n/path/to/company-project/.pi/settings.json\n```\n\nThen every pi session started anywhere inside that project tree will switch to that model automatically.\n\n## Requirements\n\n- pi with hosted packages under `@earendil-works/*`\n- extension peer deps: `@earendil-works/pi-coding-agent` and `@earendil-works/pi-agent-core`\n\nThis extension uses the current session lifecycle API (`session_start` with `event.reason`) and is meant for current hosted pi releases.\n\n## Install\n\n### npm\n\n```bash\npi install npm:@claaslange/pi-directory-models\n```\n\n### Local path\n\n```bash\npi install /absolute/path/to/pi-directory-models\n```\n\n### Git\n\n```bash\npi install git:github.com/claaslange/pi-directory-models\n```\n\n## Package layout\n\n- `extensions/index.ts` – extension entry point\n- `package.json` – pi package manifest\n\n## Development\n\n```bash\nnpm install\nnpm run check\n```\n\nUseful scripts:\n\n- `npm run typecheck`\n- `npm run lint`\n- `npm run lint:fix`\n- `npm run format`\n- `npm run check`\n\n## Publishing (maintainers)\n\nThis repo is set up to publish to npm via GitHub Actions on tags that match `vX.Y.Z`.\n\nTo publish:\n\n1. Update `package.json` `version`.\n2. Push the commit.\n3. Push a matching tag, for example `git tag v0.1.0 && git push origin v0.1.0`.\n4. Configure npm Trusted Publishing for `claaslange/pi-directory-models` and the publish workflow.\n\nThe published package name is `@claaslange/pi-directory-models`.\n\n## Notes\n\n- The nearest matching `.pi/settings.json` wins.\n- If `defaultModel` is set without `defaultProvider`, the extension tries to resolve the model by ID from available models.\n- If that model ID is ambiguous across providers, the extension shows a warning and asks you to set `defaultProvider` too.\n","readmeFilename":"README.md"}