{"_id":"@agentrun-ai/gcp","_rev":"5-1593b3bf04d9ce6d3fde907a1838af1d","name":"@agentrun-ai/gcp","dist-tags":{"latest":"0.5.0"},"versions":{"0.2.0":{"name":"@agentrun-ai/gcp","version":"0.2.0","license":"AGPL-3.0-only","_id":"@agentrun-ai/gcp@0.2.0","maintainers":[{"name":"phbruce","email":"brucepaulohenrique@gmail.com"}],"homepage":"https://github.com/phbruce/agentrun","bugs":{"url":"https://github.com/phbruce/agentrun/issues"},"dist":{"shasum":"c0b1a4cbda3de2aac01bf3665094d19292d0da0a","tarball":"https://registry.npmjs.org/@agentrun-ai/gcp/-/gcp-0.2.0.tgz","fileCount":50,"integrity":"sha512-5/Dau4P1GNuIY3yZNJ6OIy4hqZD4p0eynk3p71uG6jhTH4kdKpbvpC7P7AvMs05ODKuSAMyEDNOo8AY6r8HGmQ==","signatures":[{"sig":"MEYCIQC6pvjuMoXgdx8NgnZavxwPKB1CjyM4CTtFNEe3Yz8F+QIhAJA8BkCVQ5O8ZoXO9TxMfiIfavg0NnYpj9G/QBU2Jbfq","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":107744},"main":"dist/index.js","type":"module","_from":"file:agentrun-ai-gcp-0.2.0.tgz","types":"dist/index.d.ts","engines":{"node":">=20.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"scripts":{"build":"tsc","clean":"rm -rf dist *.tsbuildinfo","typecheck":"tsc --noEmit"},"_npmUser":{"name":"phbruce","email":"brucepaulohenrique@gmail.com"},"_resolved":"/tmp/0a6717c7c46515b12ca498b8d6597590/agentrun-ai-gcp-0.2.0.tgz","_integrity":"sha512-5/Dau4P1GNuIY3yZNJ6OIy4hqZD4p0eynk3p71uG6jhTH4kdKpbvpC7P7AvMs05ODKuSAMyEDNOo8AY6r8HGmQ==","repository":{"url":"git+https://github.com/phbruce/agentrun.git","type":"git","directory":"packages/gcp"},"_npmVersion":"10.9.4","description":"GCP provider implementations: Vertex AI, Firestore, Cloud Storage, Pub/Sub, Secret Manager","directories":{},"_nodeVersion":"22.22.1","dependencies":{"pg":"^8.13.0","@agentrun-ai/core":"0.2.1","google-auth-library":"^9.15.0","@google-cloud/pubsub":"^4.9.0","@google-cloud/storage":"^7.15.0","@google-cloud/vertexai":"^1.9.0","@google-cloud/firestore":"^7.11.0","@google-cloud/secret-manager":"^5.6.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"@types/pg":"^8.11.0","typescript":"^5.7.0"},"_npmOperationalInternal":{"tmp":"tmp/gcp_0.2.0_1773619982760_0.6046694135699313","host":"s3://npm-registry-packages-npm-production"}},"0.3.0":{"name":"@agentrun-ai/gcp","version":"0.3.0","license":"AGPL-3.0-only","_id":"@agentrun-ai/gcp@0.3.0","maintainers":[{"name":"phbruce","email":"brucepaulohenrique@gmail.com"}],"homepage":"https://github.com/phbruce/agentrun","bugs":{"url":"https://github.com/phbruce/agentrun/issues"},"dist":{"shasum":"256173af5fb7dad018317c29c74283c008334549","tarball":"https://registry.npmjs.org/@agentrun-ai/gcp/-/gcp-0.3.0.tgz","fileCount":49,"integrity":"sha512-h4wVqLY2LosZGO7nYnurROkIxTOMty0odaE/s0X/BVHhLqAVUhe3jItGQMadSB/5IaVSaPfD1vtPFNge5ZJQlA==","signatures":[{"sig":"MEQCIBFilAfePwDyvkAoB5tZZKY8246vKJVTw2JLLFYfrOqoAiB+7TgAM4ODfWxBcNt2OaXL6XoWBgti/2BoPhfQRWRFww==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":73228},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=20.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"236db404951f870621144a97df8472cfb8afc8a5","scripts":{"build":"tsc","clean":"rm -rf dist *.tsbuildinfo","typecheck":"tsc --noEmit"},"_npmUser":{"name":"phbruce","email":"brucepaulohenrique@gmail.com"},"repository":{"url":"git+https://github.com/phbruce/agentrun.git","type":"git","directory":"packages/gcp"},"_npmVersion":"10.2.4","description":"GCP provider implementations: Vertex AI, Firestore, Cloud Storage, Pub/Sub, Secret Manager","directories":{},"_nodeVersion":"21.6.2","dependencies":{"pg":"^8.13.0","@agentrun-ai/core":"workspace:*","google-auth-library":"^9.15.0","@google-cloud/pubsub":"^4.9.0","@google-cloud/storage":"^7.15.0","@google-cloud/vertexai":"^1.9.0","@google-cloud/firestore":"^7.11.0","@google-cloud/secret-manager":"^5.6.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"@types/pg":"^8.11.0","typescript":"^5.7.0"},"_npmOperationalInternal":{"tmp":"tmp/gcp_0.3.0_1774583293959_0.22050872056390491","host":"s3://npm-registry-packages-npm-production"}},"0.3.1":{"name":"@agentrun-ai/gcp","version":"0.3.1","license":"AGPL-3.0-only","_id":"@agentrun-ai/gcp@0.3.1","maintainers":[{"name":"phbruce","email":"brucepaulohenrique@gmail.com"}],"homepage":"https://github.com/phbruce/agentrun","bugs":{"url":"https://github.com/phbruce/agentrun/issues"},"dist":{"shasum":"7b01dc3ff2ac33fe76b785cd38e49261064721cc","tarball":"https://registry.npmjs.org/@agentrun-ai/gcp/-/gcp-0.3.1.tgz","fileCount":49,"integrity":"sha512-1u+6zCsiXAkrXIRBFwg/7C+HgRPpF2gsDpjEfCpgOf3V0nRTwSV2EmRhDKZzG5BCr7izOGPvxEQ0A+eqCpdu6Q==","signatures":[{"sig":"MEUCIQCv/clClHF1FqTNV33bl6zv9ai6cQECHIvEMjLBW6M2kAIgWrfDH/ivPNl3Cge0LzHOadH+G0iBl70ja3r6UehEAUU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":73222},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=20.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"f12775e472b0bc3755a5ad0d8e14c40ecc6915a2","scripts":{"build":"tsc","clean":"rm -rf dist *.tsbuildinfo","typecheck":"tsc --noEmit"},"_npmUser":{"name":"phbruce","email":"brucepaulohenrique@gmail.com"},"repository":{"url":"git+https://github.com/phbruce/agentrun.git","type":"git","directory":"packages/gcp"},"_npmVersion":"10.2.4","description":"GCP provider implementations: Vertex AI, Firestore, Cloud Storage, Pub/Sub, Secret Manager","directories":{},"_nodeVersion":"21.6.2","dependencies":{"pg":"^8.13.0","@agentrun-ai/core":"^0.3.0","google-auth-library":"^9.15.0","@google-cloud/pubsub":"^4.9.0","@google-cloud/storage":"^7.15.0","@google-cloud/vertexai":"^1.9.0","@google-cloud/firestore":"^7.11.0","@google-cloud/secret-manager":"^5.6.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"@types/pg":"^8.11.0","typescript":"^5.7.0"},"_npmOperationalInternal":{"tmp":"tmp/gcp_0.3.1_1774583506523_0.9339147861350334","host":"s3://npm-registry-packages-npm-production"}},"0.4.0":{"name":"@agentrun-ai/gcp","version":"0.4.0","license":"AGPL-3.0-only","_id":"@agentrun-ai/gcp@0.4.0","maintainers":[{"name":"phbruce","email":"brucepaulohenrique@gmail.com"}],"homepage":"https://github.com/phbruce/agentrun","bugs":{"url":"https://github.com/phbruce/agentrun/issues"},"dist":{"shasum":"50519019f8401dfca8c2126f9dab608f98fe8328","tarball":"https://registry.npmjs.org/@agentrun-ai/gcp/-/gcp-0.4.0.tgz","fileCount":59,"integrity":"sha512-B9w2PZ5xvgwG2VWaql964GCVcauoXh0dCbOedILSGSbCAZJWsqvmM/E9WSAGbg+AKtyP2YIY5otM1l4k8OD1Ow==","signatures":[{"sig":"MEUCIQCKfNannWgl7s3ll/wDo5uFnw/FhnBRcc2BOYOEgizXxQIgO6kNn44jHLd7mOvjIWq24Q9EGojev+aPoDUn1Zb4IHM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":129862},"main":"dist/index.js","type":"module","_from":"file:agentrun-ai-gcp-0.4.0.tgz","types":"dist/index.d.ts","engines":{"node":">=20.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"scripts":{"test":"jest","build":"tsc","clean":"rm -rf dist *.tsbuildinfo","typecheck":"tsc --noEmit","test:watch":"jest --watch","test:coverage":"jest --coverage"},"_npmUser":{"name":"phbruce","email":"brucepaulohenrique@gmail.com"},"_resolved":"/private/var/folders/v2/y667d15d67d5ft1yh53qj0xw0000gp/T/fdc9a6a347d7fe30cd1515467773e2a8/agentrun-ai-gcp-0.4.0.tgz","_integrity":"sha512-B9w2PZ5xvgwG2VWaql964GCVcauoXh0dCbOedILSGSbCAZJWsqvmM/E9WSAGbg+AKtyP2YIY5otM1l4k8OD1Ow==","repository":{"url":"git+https://github.com/phbruce/agentrun.git","type":"git","directory":"packages/gcp"},"_npmVersion":"10.2.4","description":"GCP provider implementations: Vertex AI, Firestore, Cloud Storage, Pub/Sub, Secret Manager","directories":{},"_nodeVersion":"21.6.2","dependencies":{"pg":"^8.13.0","@agentrun-ai/core":"0.4.0","@google-cloud/kms":"^4.5.0","google-auth-library":"^9.15.0","@google-cloud/pubsub":"^4.9.0","@google-cloud/storage":"^7.15.0","@google-cloud/vertexai":"^1.9.0","@google-cloud/firestore":"^7.11.0","@google-cloud/secret-manager":"^5.6.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"@types/pg":"^8.11.0","typescript":"^5.7.0","@jest/globals":"^29.7.0"},"_npmOperationalInternal":{"tmp":"tmp/gcp_0.4.0_1774759423256_0.5223788088342238","host":"s3://npm-registry-packages-npm-production"}},"0.5.0":{"name":"@agentrun-ai/gcp","version":"0.5.0","description":"GCP provider implementations: Vertex AI, Firestore, Cloud Storage, Pub/Sub, Secret Manager","license":"AGPL-3.0-only","type":"module","main":"dist/index.js","types":"dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"dependencies":{"@google-cloud/vertexai":"^1.9.0","@google-cloud/firestore":"^7.11.0","@google-cloud/kms":"^4.5.0","@google-cloud/storage":"^7.15.0","@google-cloud/pubsub":"^4.9.0","@google-cloud/secret-manager":"^5.6.0","google-auth-library":"^9.15.0","pg":"^8.13.0","@agentrun-ai/core":"0.5.0"},"devDependencies":{"@jest/globals":"^29.7.0","@types/pg":"^8.11.0","typescript":"^5.7.0"},"engines":{"node":">=20.0.0"},"publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+https://github.com/phbruce/agentrun.git","directory":"packages/gcp"},"homepage":"https://github.com/phbruce/agentrun","scripts":{"build":"tsc","typecheck":"tsc --noEmit","test":"jest","test:watch":"jest --watch","test:coverage":"jest --coverage","clean":"rm -rf dist *.tsbuildinfo"},"_id":"@agentrun-ai/gcp@0.5.0","bugs":{"url":"https://github.com/phbruce/agentrun/issues"},"_integrity":"sha512-seyVcg+Yf2z+mw0fPi7UjuhhKD4AaPq0puwH0LOQWZW4P6/JGmGPJecUqiWY7OhSrUYTtLMPJHQKxcR6sNpSlQ==","_resolved":"/tmp/a0b6def2e8b9c7dc1c3702e85ec44f4a/agentrun-ai-gcp-0.5.0.tgz","_from":"file:agentrun-ai-gcp-0.5.0.tgz","_nodeVersion":"22.22.2","_npmVersion":"10.9.7","dist":{"integrity":"sha512-seyVcg+Yf2z+mw0fPi7UjuhhKD4AaPq0puwH0LOQWZW4P6/JGmGPJecUqiWY7OhSrUYTtLMPJHQKxcR6sNpSlQ==","shasum":"1d0188c957f5b38d832fed79f8e8b963c980ff85","tarball":"https://registry.npmjs.org/@agentrun-ai/gcp/-/gcp-0.5.0.tgz","fileCount":59,"unpackedSize":130347,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIBSXGMU8GOGe44xR0f7pgcsOCV2xJlUDSg9bJm00Z62VAiArDBSY6v5FRubAXSPJzrWMweW0WYHIvk6z20UhZmG8+A=="}]},"_npmUser":{"name":"phbruce","email":"brucepaulohenrique@gmail.com"},"directories":{},"maintainers":[{"name":"phbruce","email":"brucepaulohenrique@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/gcp_0.5.0_1777588554418_0.7288362960510675"},"_hasShrinkwrap":false}},"time":{"created":"2026-03-16T00:13:02.693Z","modified":"2026-04-30T22:35:54.826Z","0.2.0":"2026-03-16T00:13:02.908Z","0.3.0":"2026-03-27T03:48:14.150Z","0.3.1":"2026-03-27T03:51:46.683Z","0.4.0":"2026-03-29T04:43:43.400Z","0.5.0":"2026-04-30T22:35:54.603Z"},"bugs":{"url":"https://github.com/phbruce/agentrun/issues"},"license":"AGPL-3.0-only","homepage":"https://github.com/phbruce/agentrun","repository":{"type":"git","url":"git+https://github.com/phbruce/agentrun.git","directory":"packages/gcp"},"description":"GCP provider implementations: Vertex AI, Firestore, Cloud Storage, Pub/Sub, Secret Manager","maintainers":[{"name":"phbruce","email":"brucepaulohenrique@gmail.com"}],"readme":"# @agentrun-ai/gcp\n\nGCP provider implementations for AgentRun: Vertex AI, Firestore, Cloud Storage, Pub/Sub, Secret Manager, Cloud KMS.\n\nUse this package to run AgentRun on Google Cloud Platform.\n\n## Installation\n\n```bash\nnpm install @agentrun-ai/core @agentrun-ai/gcp\n```\n\n## Quick Start\n\n```typescript\nimport { setProviderRegistrar, bootstrapPlatform } from \"@agentrun-ai/core\";\nimport { registerGcpProviders } from \"@agentrun-ai/gcp\";\n\nsetProviderRegistrar(registerGcpProviders);\nawait bootstrapPlatform();\n```\n\nThat's it. All providers are automatically registered from your config.\n\n## Provider Implementations\n\n| Interface | Implementation |\n|-----------|-----------------|\n| `LlmProvider` | Vertex AI (claude-3-opus, gemini-2.0-pro, etc.) |\n| `SessionStore` | Firestore |\n| `UsageStore` | Firestore |\n| `ManifestStore` | Cloud Storage |\n| `QueueProvider` | Pub/Sub |\n| `BootstrapSecretProvider` | Secret Manager |\n| `EmbeddingProvider` | Vertex AI Embeddings |\n| `VectorStore` | pgvector (Cloud SQL PostgreSQL) |\n| `KnowledgeBaseProvider` | Vertex AI Search |\n| `UserTokenStore` | Firestore with Cloud KMS encryption (v0.4.0) |\n\n## Token Store with KMS Encryption (v0.4.0)\n\nStore per-user OAuth tokens securely in Firestore with optional Cloud KMS envelope encryption:\n\n```typescript\nimport { FirestoreUserTokenStore } from \"@agentrun-ai/gcp\";\n\nconst tokenStore = new FirestoreUserTokenStore(\n    \"agentrun-user-tokens\",    // Firestore collection name\n    \"default-db\",              // Firestore database ID (optional)\n    \"projects/my-project/locations/us/keyRings/my-ring/cryptoKeys/my-key\"  // KMS key (optional)\n);\n\n// Save token\nawait tokenStore.saveToken(\"U12345\", \"google\", {\n    accessToken: \"ya29...\",\n    refreshToken: \"1//...\",\n    expiresAt: Date.now() + 3600000,\n    tokenType: \"bearer\",\n});\n\n// Retrieve token (decrypted automatically)\nconst token = await tokenStore.getToken(\"U12345\", \"google\");\n// → { accessToken: \"ya29...\", refreshToken: \"1//...\", ... }\n\n// List providers for user\nconst providers = await tokenStore.listProviders(\"U12345\");\n// → [\"google\", \"github\", \"gitlab\"]\n\n// Delete token\nawait tokenStore.deleteToken(\"U12345\", \"google\");\n```\n\n**Document Structure:**\n```\nFirestore:\n  agentrun-user-tokens/\n    {userId}/\n      providers/\n        {providerName}/\n          accessToken: <encrypted if KMS enabled>\n          refreshToken: <encrypted if KMS enabled>\n          idToken: <encrypted if KMS enabled>\n          expiresAt: 1234567890000  (plaintext, queryable)\n          tokenType: \"bearer\"\n          scopes: [\"scope1\", \"scope2\"]\n          savedAt: 1234567890000\n          encrypted: true/false\n```\n\n**Encryption:**\n- Sensitive fields (accessToken, refreshToken, idToken) are encrypted with Cloud KMS\n- Metadata fields (expiresAt, tokenType, scopes) stored plaintext for indexing\n- Encryption is optional — omit KMS key for plaintext storage\n\n**KMS Setup:**\n```bash\n# Create key ring\ngcloud kms keyrings create agentrun --location=us\n\n# Create crypto key\ngcloud kms keys create user-tokens --location=us --keyring=agentrun --purpose=encryption\n\n# Get key name for config\ngcloud kms keys list --location=us --keyring=agentrun\n# → projects/MY_PROJECT/locations/us/keyRings/agentrun/cryptoKeys/user-tokens\n\n# Grant service account KMS permissions\ngcloud kms keys add-iam-policy-binding user-tokens \\\n    --location=us \\\n    --keyring=agentrun \\\n    --member=serviceAccount:my-sa@my-project.iam.gserviceaccount.com \\\n    --role=roles/cloudkms.cryptoKeyEncrypterDecrypter\n```\n\n## Configuration\n\nIn your platform config:\n\n```yaml\nspec:\n  providers:\n    gcp:\n      project: my-project\n      location: us\n      firestoreDb: default-db\n      kmsKeyName: projects/my-project/locations/us/keyRings/agentrun/cryptoKeys/user-tokens\n\n  models:\n    fast:\n      provider: vertex-ai\n      modelId: gemini-1.5-flash\n      capability: fast\n\n    advanced:\n      provider: vertex-ai\n      modelId: gemini-2.0-pro\n      capability: advanced\n\n  roles:\n    engineer:\n      models: [fast, advanced]\n```\n\nOr via environment variables:\n```bash\nAGENTRUN_GCP_PROJECT=my-project\nAGENTRUN_KMS_KEY=projects/my-project/locations/us/keyRings/agentrun/cryptoKeys/user-tokens\nAGENTRUN_FIRESTORE_DB=default-db\n```\n\n## Vertex AI Models\n\nCompatible models for GenericAgentConfig:\n\n```typescript\nimport { createOpenAICaller } from \"@agentrun-ai/core\";\n\n// Use with Vertex AI SDK (already integrated in VertexAiLlmProvider)\n// Or use OpenAI-compatible gateway for Vertex AI:\n\nconst caller = createOpenAICaller({\n    baseUrl: \"https://REGION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/REGION\",\n    defaultModel: \"gemini-2.0-flash\",\n    resolveToken: async () => {\n        // Vertex AI uses OAuth2 bearer tokens\n        return await getVertexAIToken();\n    },\n});\n```\n\n## Cloud SQL (pgvector) Setup\n\nFor RAG vector search:\n\n```bash\n# Create Cloud SQL PostgreSQL instance\ngcloud sql instances create agentrun-pgvector \\\n    --database-version=POSTGRES_16 \\\n    --region=us-central1 \\\n    --tier=db-custom-2-8192\n\n# Enable pgvector extension\ngcloud sql connect agentrun-pgvector -- \\\n    -U postgres \\\n    -d postgres \\\n    -c \"CREATE EXTENSION IF NOT EXISTS vector;\"\n\n# Create vector table\ngcloud sql connect agentrun-pgvector -- \\\n    -U postgres \\\n    -d postgres \\\n    << EOF\nCREATE TABLE knowledge_base (\n    id BIGSERIAL PRIMARY KEY,\n    pack_id TEXT NOT NULL,\n    source TEXT,\n    content TEXT,\n    embedding VECTOR(768),\n    created_at TIMESTAMP DEFAULT NOW()\n);\n\nCREATE INDEX ON knowledge_base USING ivfflat (embedding vector_cosine_ops) WITH (lists = 100);\nEOF\n```\n\n## Deployment\n\n### Cloud Run\n\n```dockerfile\nFROM node:20-alpine\nWORKDIR /app\nCOPY . .\nRUN npm ci --production\nEXPOSE 8080\nCMD [\"node\", \"dist/server.js\"]\n```\n\n```bash\ngcloud run deploy agentrun \\\n    --source . \\\n    --region us-central1 \\\n    --platform managed \\\n    --allow-unauthenticated \\\n    --service-account agentrun-sa@my-project.iam.gserviceaccount.com \\\n    --update-secrets SLACK_BOT_TOKEN=slack-bot-token:latest \\\n    --update-secrets SLACK_SIGNING_SECRET=slack-signing-secret:latest\n```\n\n### Cloud Functions\n\n```typescript\nimport { registerGcpProviders } from \"@agentrun-ai/gcp\";\n\nexport async function slackEvent(req, res) {\n    setProviderRegistrar(registerGcpProviders);\n    await bootstrapPlatform();\n\n    const adapter = new SlackChannelAdapter();\n    await processRequest(adapter, req.body);\n    res.status(200).send(\"OK\");\n}\n```\n\n## See Also\n\n- [`@agentrun-ai/core`](../core) — Core runtime\n- [`@agentrun-ai/aws`](../aws) — AWS provider\n- [AgentRun README](../../README.md) — Full documentation\n","readmeFilename":"README.md"}