{"_id":"@alvin0/ai-agent-sdk-auth-node","_rev":"4-228e22cf4fc9510dd97a79cccfdf5d8a","name":"@alvin0/ai-agent-sdk-auth-node","dist-tags":{"latest":"0.1.3"},"versions":{"0.1.0":{"name":"@alvin0/ai-agent-sdk-auth-node","version":"0.1.0","author":{"name":"alvin0 - chaulamdinhai","email":"chaulamdinhai@gmail.com"},"license":"MIT","_id":"@alvin0/ai-agent-sdk-auth-node@0.1.0","maintainers":[{"name":"alvin0","email":"chaulamdinhai@gmail.com"}],"homepage":"https://github.com/alvin0/ai-agent-sdk/tree/main/packages/auth-node#readme","bugs":{"url":"https://github.com/alvin0/ai-agent-sdk/issues"},"bin":{"ai-agent-sdk-codex-login":"bin/ai-agent-sdk-codex-login.mjs"},"dist":{"shasum":"5f9fdf6157b0a1e64088a602052e9d2afa862340","tarball":"https://registry.npmjs.org/@alvin0/ai-agent-sdk-auth-node/-/ai-agent-sdk-auth-node-0.1.0.tgz","fileCount":20,"integrity":"sha512-87uPO61Ol1yp2fMy61yPBZbAUi3J7+xCe6GNGpH7ntOnQiGwHsL0qBAEPOPjBj9CZrX1bjiwlhh2U8tMIBQgWQ==","signatures":[{"sig":"MEYCIQDGmGmmfzaGSpRLga1Y0vvTNszMHhEjKzGqisUvAlw52wIhAN1VOhS58vmbDXOMcABLx6nZzQ5PZvKhQJNZF6gotWQ8","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@alvin0%2fai-agent-sdk-auth-node@0.1.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":61719},"main":"./dist/index.mjs","type":"module","_from":"file:artifacts/alvin0-ai-agent-sdk-auth-node-0.1.0.tgz","types":"./dist/index.d.mts","engines":{"node":">=22.12"},"exports":{".":{"types":"./dist/index.d.mts","import":"./dist/index.mjs","default":"./dist/index.mjs"},"./env":{"types":"./dist/env.d.mts","import":"./dist/env.mjs","default":"./dist/env.mjs"},"./codex":{"types":"./dist/codex.d.mts","import":"./dist/codex.mjs","default":"./dist/codex.mjs"},"./package.json":"./package.json"},"scripts":{"pack":"pnpm pack --pack-destination artifacts","test":"vitest run --config vitest.config.ts","build":"tsdown","clean":"node -e \"for(const p of ['dist','artifacts'])require('node:fs').rmSync(p,{recursive:true,force:true})\"","test:pack":"node ../../scripts/test-packed-node-capability.mts auth-node","typecheck":"tsc --noEmit","check:types":"attw --profile esm-only --pack .","check:publint":"publint"},"_npmUser":{"name":"alvin0","email":"chaulamdinhai@gmail.com"},"_resolved":"/home/runner/work/ai-agent-sdk/ai-agent-sdk/artifacts/alvin0-ai-agent-sdk-auth-node-0.1.0.tgz","_integrity":"sha512-87uPO61Ol1yp2fMy61yPBZbAUi3J7+xCe6GNGpH7ntOnQiGwHsL0qBAEPOPjBj9CZrX1bjiwlhh2U8tMIBQgWQ==","aiAgentSdk":{"roles":["credential-source","credential-store"],"coreApi":1,"runtime":"node"},"repository":{"url":"git+https://github.com/alvin0/ai-agent-sdk.git","type":"git","directory":"packages/auth-node"},"_npmVersion":"10.9.3","description":"Node environment credentials and project-local Codex authentication for ai-agent-sdk","directories":{},"sideEffects":false,"_nodeVersion":"22.18.0","publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsdown":"0.22.14","vitest":"4.1.11","publint":"0.3.24","typescript":"7.0.2","@types/node":"26.4.0","@arethetypeswrong/cli":"0.18.5","@alvin0/ai-agent-sdk-core":"^0.1.0","@alvin0/ai-agent-sdk-provider-codex":"^0.1.0"},"peerDependencies":{"@alvin0/ai-agent-sdk-core":"^0.1.0","@alvin0/ai-agent-sdk-provider-codex":"^0.1.0"},"peerDependenciesMeta":{"@alvin0/ai-agent-sdk-provider-codex":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/ai-agent-sdk-auth-node_0.1.0_1788971773328_0.9587526073026251","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"@alvin0/ai-agent-sdk-auth-node","version":"0.1.1","author":{"name":"alvin0 - chaulamdinhai","email":"chaulamdinhai@gmail.com"},"license":"MIT","_id":"@alvin0/ai-agent-sdk-auth-node@0.1.1","maintainers":[{"name":"alvin0","email":"chaulamdinhai@gmail.com"}],"homepage":"https://github.com/alvin0/ai-agent-sdk/tree/main/packages/auth-node#readme","bugs":{"url":"https://github.com/alvin0/ai-agent-sdk/issues"},"bin":{"ai-agent-sdk-codex-login":"bin/ai-agent-sdk-codex-login.mjs","ai-agent-sdk-copilot-login":"bin/ai-agent-sdk-copilot-login.mjs"},"dist":{"shasum":"1ac038ae7f121eeb8ead9405deb01aa7b4f6e9b9","tarball":"https://registry.npmjs.org/@alvin0/ai-agent-sdk-auth-node/-/ai-agent-sdk-auth-node-0.1.1.tgz","fileCount":31,"integrity":"sha512-me2ihRz5w9q0HiV0FcCPMX0VOdIwagTrJJvbLllYB7twNICJ8jIy1GW7wHOmohbR+SHwas3XDy4cIf2Dj/+Fog==","signatures":[{"sig":"MEUCIHSehgwVHk/DRH5UIfgOay6/eLJRMOqtDf9pyUvOu0JnAiEAl2YjdoLcmMcNOgY6+C5UXzi0OPqqkSsLSvorzZ2Hp6A=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@alvin0%2fai-agent-sdk-auth-node@0.1.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":124700},"main":"./dist/index.mjs","type":"module","_from":"file:artifacts/alvin0-ai-agent-sdk-auth-node-0.1.1.tgz","types":"./dist/index.d.mts","engines":{"node":">=22.12"},"exports":{".":{"types":"./dist/index.d.mts","import":"./dist/index.mjs","default":"./dist/index.mjs"},"./env":{"types":"./dist/env.d.mts","import":"./dist/env.mjs","default":"./dist/env.mjs"},"./codex":{"types":"./dist/codex.d.mts","import":"./dist/codex.mjs","default":"./dist/codex.mjs"},"./copilot":{"types":"./dist/copilot.d.mts","import":"./dist/copilot.mjs","default":"./dist/copilot.mjs"},"./package.json":"./package.json"},"scripts":{"pack":"pnpm pack --pack-destination artifacts","test":"vitest run --config vitest.config.ts","build":"tsdown","clean":"node -e \"for(const p of ['dist','artifacts'])require('node:fs').rmSync(p,{recursive:true,force:true})\"","test:pack":"node ../../scripts/test-packed-node-capability.mts auth-node","typecheck":"tsc --noEmit","check:types":"attw --profile esm-only --pack .","check:publint":"publint"},"_npmUser":{"name":"alvin0","email":"chaulamdinhai@gmail.com"},"_resolved":"/home/runner/work/ai-agent-sdk/ai-agent-sdk/artifacts/alvin0-ai-agent-sdk-auth-node-0.1.1.tgz","_integrity":"sha512-me2ihRz5w9q0HiV0FcCPMX0VOdIwagTrJJvbLllYB7twNICJ8jIy1GW7wHOmohbR+SHwas3XDy4cIf2Dj/+Fog==","aiAgentSdk":{"roles":["credential-source","credential-store"],"coreApi":1,"runtime":"node"},"repository":{"url":"git+https://github.com/alvin0/ai-agent-sdk.git","type":"git","directory":"packages/auth-node"},"_npmVersion":"10.9.3","description":"Node environment credentials and project-local Codex authentication for ai-agent-sdk","directories":{},"sideEffects":false,"_nodeVersion":"22.18.0","publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsdown":"0.22.14","vitest":"4.1.11","publint":"0.3.24","typescript":"7.0.2","@types/node":"26.4.0","@arethetypeswrong/cli":"0.18.5","@alvin0/ai-agent-sdk-core":"^0.1.1","@alvin0/ai-agent-sdk-provider-codex":"^0.1.1","@alvin0/ai-agent-sdk-provider-copilot":"^0.1.1"},"peerDependencies":{"@alvin0/ai-agent-sdk-core":"^0.1.1","@alvin0/ai-agent-sdk-provider-codex":"^0.1.1","@alvin0/ai-agent-sdk-provider-copilot":"^0.1.1"},"peerDependenciesMeta":{"@alvin0/ai-agent-sdk-provider-codex":{"optional":true},"@alvin0/ai-agent-sdk-provider-copilot":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/ai-agent-sdk-auth-node_0.1.1_1789238120787_0.0832135140127972","host":"s3://npm-registry-packages-npm-production"}},"0.1.2":{"name":"@alvin0/ai-agent-sdk-auth-node","version":"0.1.2","author":{"name":"alvin0 - chaulamdinhai","email":"chaulamdinhai@gmail.com"},"license":"MIT","_id":"@alvin0/ai-agent-sdk-auth-node@0.1.2","maintainers":[{"name":"alvin0","email":"chaulamdinhai@gmail.com"}],"homepage":"https://github.com/alvin0/ai-agent-sdk/tree/main/packages/auth-node#readme","bugs":{"url":"https://github.com/alvin0/ai-agent-sdk/issues"},"bin":{"ai-agent-sdk-codex-login":"bin/ai-agent-sdk-codex-login.mjs","ai-agent-sdk-copilot-login":"bin/ai-agent-sdk-copilot-login.mjs"},"dist":{"shasum":"4ab12317a5ed84fddb2ed0eb9d46abacfbfbd89d","tarball":"https://registry.npmjs.org/@alvin0/ai-agent-sdk-auth-node/-/ai-agent-sdk-auth-node-0.1.2.tgz","fileCount":31,"integrity":"sha512-Xj8Z2k0EYwwnOvhxucbUkFLrUP8XAEXHVArYUOsxAt1kNwg2btQo17lSLMBc4ElBn3Bz9y947wRdFytIVWMlkA==","signatures":[{"sig":"MEYCIQD4Ew9fohGSFydRMZr7qUxG2vGcn+PzGQLmOf+tFBH8KgIhANdhIKPhblaStTGhf6+SVHHAHMOtktypfsO5g/QEEJ4Q","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@alvin0%2fai-agent-sdk-auth-node@0.1.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":125127},"main":"./dist/index.mjs","type":"module","_from":"file:artifacts/alvin0-ai-agent-sdk-auth-node-0.1.2.tgz","types":"./dist/index.d.mts","engines":{"node":">=22.12"},"exports":{".":{"types":"./dist/index.d.mts","import":"./dist/index.mjs","default":"./dist/index.mjs"},"./env":{"types":"./dist/env.d.mts","import":"./dist/env.mjs","default":"./dist/env.mjs"},"./codex":{"types":"./dist/codex.d.mts","import":"./dist/codex.mjs","default":"./dist/codex.mjs"},"./copilot":{"types":"./dist/copilot.d.mts","import":"./dist/copilot.mjs","default":"./dist/copilot.mjs"},"./package.json":"./package.json"},"scripts":{"pack":"pnpm pack --pack-destination artifacts","test":"vitest run --config vitest.config.ts","build":"tsdown","clean":"node -e \"for(const p of ['dist','artifacts'])require('node:fs').rmSync(p,{recursive:true,force:true})\"","test:pack":"node ../../scripts/test-packed-node-capability.mts auth-node","typecheck":"tsc --noEmit","check:types":"attw --profile esm-only --pack .","check:publint":"publint"},"_npmUser":{"name":"alvin0","email":"chaulamdinhai@gmail.com"},"_resolved":"/home/runner/work/ai-agent-sdk/ai-agent-sdk/artifacts/alvin0-ai-agent-sdk-auth-node-0.1.2.tgz","_integrity":"sha512-Xj8Z2k0EYwwnOvhxucbUkFLrUP8XAEXHVArYUOsxAt1kNwg2btQo17lSLMBc4ElBn3Bz9y947wRdFytIVWMlkA==","aiAgentSdk":{"roles":["credential-source","credential-store"],"coreApi":1,"runtime":"node"},"repository":{"url":"git+https://github.com/alvin0/ai-agent-sdk.git","type":"git","directory":"packages/auth-node"},"_npmVersion":"10.9.3","description":"Node environment credentials and project-local Codex authentication for ai-agent-sdk","directories":{},"sideEffects":false,"_nodeVersion":"22.18.0","publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsdown":"0.22.14","vitest":"4.1.11","publint":"0.3.24","typescript":"7.0.2","@types/node":"26.4.0","@arethetypeswrong/cli":"0.18.5","@alvin0/ai-agent-sdk-core":"^0.1.2","@alvin0/ai-agent-sdk-provider-codex":"^0.1.2","@alvin0/ai-agent-sdk-provider-copilot":"^0.1.2"},"peerDependencies":{"@alvin0/ai-agent-sdk-core":"^0.1.2","@alvin0/ai-agent-sdk-provider-codex":"^0.1.2","@alvin0/ai-agent-sdk-provider-copilot":"^0.1.2"},"peerDependenciesMeta":{"@alvin0/ai-agent-sdk-provider-codex":{"optional":true},"@alvin0/ai-agent-sdk-provider-copilot":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/ai-agent-sdk-auth-node_0.1.2_1789281417701_0.1745663029745299","host":"s3://npm-registry-packages-npm-production"}},"0.1.3":{"name":"@alvin0/ai-agent-sdk-auth-node","author":{"name":"alvin0 - chaulamdinhai","email":"chaulamdinhai@gmail.com"},"version":"0.1.3","description":"Node environment credentials and project-local Codex authentication for ai-agent-sdk","license":"MIT","repository":{"type":"git","url":"git+https://github.com/alvin0/ai-agent-sdk.git","directory":"packages/auth-node"},"homepage":"https://github.com/alvin0/ai-agent-sdk/tree/main/packages/auth-node#readme","bugs":{"url":"https://github.com/alvin0/ai-agent-sdk/issues"},"type":"module","sideEffects":false,"main":"./dist/index.mjs","types":"./dist/index.d.mts","exports":{".":{"types":"./dist/index.d.mts","import":"./dist/index.mjs","default":"./dist/index.mjs"},"./env":{"types":"./dist/env.d.mts","import":"./dist/env.mjs","default":"./dist/env.mjs"},"./codex":{"types":"./dist/codex.d.mts","import":"./dist/codex.mjs","default":"./dist/codex.mjs"},"./copilot":{"types":"./dist/copilot.d.mts","import":"./dist/copilot.mjs","default":"./dist/copilot.mjs"},"./package.json":"./package.json"},"bin":{"ai-agent-sdk-codex-login":"bin/ai-agent-sdk-codex-login.mjs","ai-agent-sdk-copilot-login":"bin/ai-agent-sdk-copilot-login.mjs"},"publishConfig":{"access":"public","provenance":true},"peerDependencies":{"@alvin0/ai-agent-sdk-core":"^0.1.3","@alvin0/ai-agent-sdk-provider-codex":"^0.1.3","@alvin0/ai-agent-sdk-provider-copilot":"^0.1.3"},"peerDependenciesMeta":{"@alvin0/ai-agent-sdk-provider-codex":{"optional":true},"@alvin0/ai-agent-sdk-provider-copilot":{"optional":true}},"devDependencies":{"@alvin0/ai-agent-sdk-core":"^0.1.3","@alvin0/ai-agent-sdk-provider-codex":"^0.1.3","@alvin0/ai-agent-sdk-provider-copilot":"^0.1.3","@arethetypeswrong/cli":"0.18.5","@types/node":"26.4.0","publint":"0.3.24","tsdown":"0.22.14","typescript":"7.0.2","vitest":"4.1.11"},"engines":{"node":">=22.12"},"aiAgentSdk":{"runtime":"node","coreApi":1,"roles":["credential-source","credential-store"]},"scripts":{"build":"tsdown","clean":"node -e \"for(const p of ['dist','artifacts'])require('node:fs').rmSync(p,{recursive:true,force:true})\"","typecheck":"tsc --noEmit","test":"vitest run --config vitest.config.ts","pack":"pnpm pack --pack-destination artifacts","test:pack":"node ../../scripts/test-packed-node-capability.mts auth-node","check:publint":"publint","check:types":"attw --profile esm-only --pack ."},"_id":"@alvin0/ai-agent-sdk-auth-node@0.1.3","_integrity":"sha512-mVv61aYwJ/YF/bNqJmX66wGKw2xzNd28OiLUJWIr+YWWxdybx1jzGAU/vLsAdLutxmJzVejR+Z3S67LvTKB9SA==","_resolved":"/home/runner/work/ai-agent-sdk/ai-agent-sdk/artifacts/alvin0-ai-agent-sdk-auth-node-0.1.3.tgz","_from":"file:artifacts/alvin0-ai-agent-sdk-auth-node-0.1.3.tgz","_nodeVersion":"22.18.0","_npmVersion":"10.9.3","dist":{"integrity":"sha512-mVv61aYwJ/YF/bNqJmX66wGKw2xzNd28OiLUJWIr+YWWxdybx1jzGAU/vLsAdLutxmJzVejR+Z3S67LvTKB9SA==","shasum":"33f48b6e7c1ad13d2cc148ce661cc20b053248ad","tarball":"https://registry.npmjs.org/@alvin0/ai-agent-sdk-auth-node/-/ai-agent-sdk-auth-node-0.1.3.tgz","fileCount":31,"unpackedSize":125127,"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@alvin0%2fai-agent-sdk-auth-node@0.1.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIGfKdn7D55K6UMOzc2anWXDrSxmMLvRlGQ3of2ltnz79AiBy1PNgidJiXaChZcQhaoaY15h6voMs6zX7Ta0WNDnnhw=="}]},"_npmUser":{"name":"alvin0","email":"chaulamdinhai@gmail.com"},"directories":{},"maintainers":[{"name":"alvin0","email":"chaulamdinhai@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/ai-agent-sdk-auth-node_0.1.3_1789484936349_0.6348638222889229"},"_hasShrinkwrap":false}},"time":{"created":"2026-09-09T16:36:12.980Z","modified":"2026-09-15T15:08:56.814Z","0.1.0":"2026-09-09T16:36:13.471Z","0.1.1":"2026-09-12T18:35:20.921Z","0.1.2":"2026-09-13T06:36:57.850Z","0.1.3":"2026-09-15T15:08:56.490Z"},"bugs":{"url":"https://github.com/alvin0/ai-agent-sdk/issues"},"author":{"name":"alvin0 - chaulamdinhai","email":"chaulamdinhai@gmail.com"},"license":"MIT","homepage":"https://github.com/alvin0/ai-agent-sdk/tree/main/packages/auth-node#readme","repository":{"type":"git","url":"git+https://github.com/alvin0/ai-agent-sdk.git","directory":"packages/auth-node"},"description":"Node environment credentials and project-local Codex authentication for ai-agent-sdk","maintainers":[{"name":"alvin0","email":"chaulamdinhai@gmail.com"}],"readme":"# @alvin0/ai-agent-sdk-auth-node\n\nRuntime: **Node 22.12+**.\n\nNode-owned environment credentials and project-local Codex OAuth storage. The\npackage root and `/env` entrypoint are environment-only: installing either does\nnot require or load a model provider.\n\nFor an OpenAI agent whose key comes from the environment:\n\n```sh\npnpm add @alvin0/ai-agent-sdk-core @alvin0/ai-agent-sdk-provider-openai @alvin0/ai-agent-sdk-auth-node\n```\n\n```ts\nimport { envCredential } from '@alvin0/ai-agent-sdk-auth-node'\nimport { createAgentRuntime } from '@alvin0/ai-agent-sdk-core'\nimport { openAiPlugin } from '@alvin0/ai-agent-sdk-provider-openai'\n\nconst runtime = await createAgentRuntime({\n  providers: [openAiPlugin({ apiKey: envCredential('OPENAI_API_KEY') })],\n})\n```\n\n`envCredential()` is lazy, receives the model-operation cancellation signal and\nremains callable for compatibility. It is borrowed by the provider and has no\nclose lifecycle.\n\nCodex support is an explicit optional closure:\n\n```sh\npnpm add @alvin0/ai-agent-sdk-core @alvin0/ai-agent-sdk-provider-codex @alvin0/ai-agent-sdk-auth-node\n```\n\n```ts\nimport { createAgentRuntime } from '@alvin0/ai-agent-sdk-core'\nimport { codexNodeProviderPlugin } from '@alvin0/ai-agent-sdk-auth-node/codex'\n\nconst runtime = await createAgentRuntime({\n  providers: [codexNodeProviderPlugin()],\n})\n```\n\n`codexNodeProviderPlugin()` uses the revisioned `fileCodexCredentialStore()` by\ndefault. The store is borrowed and remains caller-owned; the runtime closes the\nprovider registration, not the store. Codex defaults to\n`.providers/.codex/auth.json` below `process.cwd()` and never uses the Codex\nCLI's global credential file. Writes use compare-and-swap under a cross-process\nwriter lock, a private same-directory temporary file, file sync, atomic rename,\nmode `0600`, and directory sync. Credential-file symlinks are rejected.\n\nThe deprecated `fileCodexAuthStore()` and `codexNodePlugin()` retain the former\n`read/write` compatibility contract. New runtime composition should use the\nrevisioned factory above.\n\nRun `ai-agent-sdk-codex-login` after installation to authenticate this project.\n\nComposition: `provider-factory.credentials`. Lifecycle: `borrowed-caller-owned`;\n`envCredential()` and file-backed stores are resolved lazily by the selected\nprovider and are never closed by core.\n","readmeFilename":"README.md"}