{"_id":"@ai-yantra/pg-fs","_rev":"2-11a8483dc09efb4b2ff3334fa1281e44","name":"@ai-yantra/pg-fs","dist-tags":{"latest":"0.1.1"},"versions":{"0.1.0":{"name":"@ai-yantra/pg-fs","version":"0.1.0","keywords":["postgresql","filesystem","ai-sdk","agents","tools","file-management","drizzle","typescript"],"author":"","license":"MIT","_id":"@ai-yantra/pg-fs@0.1.0","maintainers":[{"name":"dumbmachine","email":"ratin.kumar.2k@gmail.com"}],"dist":{"shasum":"9bacdacf6292864f19ef8b690f7499606bb8b131","tarball":"https://registry.npmjs.org/@ai-yantra/pg-fs/-/pg-fs-0.1.0.tgz","fileCount":50,"integrity":"sha512-lJNV2sQm5qls2hY2Qi/Io/BAtDmVSt4jCCsPCGMcfdLE3YMd9wwJYcIaR482YqGZ6DOW1kyKP/VRS5Dn4DqJ/A==","signatures":[{"sig":"MEYCIQCbAEvMj+ORtb6IOckgOrtU4HrQBEY1pzudS0IWWe2qLwIhAO+atCQw83xOxqtXQllGc5wafbe3sYP5ZpOstn/YYHmx","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":205214},"main":"./dist/index.js","type":"module","_from":"file:ai-yantra-pg-fs-0.1.0.tgz","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"scripts":{"lint":"tsc --noEmit","test":"vitest run","build":"tsc","db:push":"drizzle-kit push","test:ui":"vitest --ui","db:studio":"drizzle-kit studio","test:watch":"vitest","db:generate":"drizzle-kit generate","example:agent":"tsx examples/interactive-coding-agent.ts","example:basic":"tsx examples/basic.ts","example:workflows":"tsx examples/moar-workflows.ts"},"_npmUser":{"name":"dumbmachine","email":"ratin.kumar.2k@gmail.com"},"_resolved":"/private/var/folders/f1/s_bzsp654zg4vh8jbtcw6wxm0000gn/T/d0ffd787972dda6e7856e16cc25b7168/ai-yantra-pg-fs-0.1.0.tgz","_integrity":"sha512-lJNV2sQm5qls2hY2Qi/Io/BAtDmVSt4jCCsPCGMcfdLE3YMd9wwJYcIaR482YqGZ6DOW1kyKP/VRS5Dn4DqJ/A==","_npmVersion":"11.4.2","description":"PostgreSQL-backed filesystem with AI SDK tools for building intelligent file management agents","directories":{},"_nodeVersion":"24.3.0","dependencies":{"ai":"^6.0.42","zod":"^3.23.0","dotenv":"^17.2.3","drizzle-orm":"^0.45.1","@clack/prompts":"^0.11.0","@ai-sdk/openai-compatible":"^2.0.27"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"pg":"^8.18.0","tsx":"^4.21.0","vitest":"^1.6.0","ts-node":"^10.9.2","@types/pg":"^8.16.0","typescript":"^5.9.3","@types/node":"^20.0.0","drizzle-kit":"^0.31.8","better-sqlite3":"^11.0.0","@types/better-sqlite3":"^7.6.0"},"peerDependencies":{"pg":">=8.0.0","@ai-sdk/openai":"^1.0.0","better-sqlite3":">=9.0.0"},"peerDependenciesMeta":{"pg":{"optional":true},"@ai-sdk/openai":{"optional":true},"better-sqlite3":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/pg-fs_0.1.0_1771402995203_0.9754987160141912","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"@ai-yantra/pg-fs","version":"0.1.1","description":"PostgreSQL-backed filesystem with AI SDK tools for building intelligent file management agents","type":"module","main":"./dist/index.js","types":"./dist/index.d.ts","exports":{".":{"import":"./dist/index.js","types":"./dist/index.d.ts"}},"dependencies":{"@ai-sdk/openai-compatible":"^2.0.27","@clack/prompts":"^0.11.0","ai":"^6.0.42","dotenv":"^17.2.3","drizzle-orm":"^0.45.1","zod":"^3.23.0"},"devDependencies":{"@types/better-sqlite3":"^7.6.0","@types/node":"^20.0.0","@types/pg":"^8.16.0","better-sqlite3":"^11.0.0","drizzle-kit":"^0.31.8","pg":"^8.18.0","ts-node":"^10.9.2","tsx":"^4.21.0","typescript":"^5.9.3","vitest":"^1.6.0"},"peerDependencies":{"@ai-sdk/openai":"^1.0.0","pg":">=8.0.0","better-sqlite3":">=9.0.0"},"peerDependenciesMeta":{"@ai-sdk/openai":{"optional":true},"pg":{"optional":true},"better-sqlite3":{"optional":true}},"keywords":["postgresql","filesystem","ai-sdk","agents","tools","file-management","drizzle","typescript"],"author":"","license":"MIT","engines":{"node":">=18.0.0"},"publishConfig":{"access":"public"},"scripts":{"build":"tsc","test":"vitest run","test:watch":"vitest","test:ui":"vitest --ui","lint":"tsc --noEmit","db:generate":"drizzle-kit generate","db:push":"drizzle-kit push","db:studio":"drizzle-kit studio","example:agent":"tsx examples/interactive-coding-agent.ts","example:basic":"tsx examples/basic.ts","example:workflows":"tsx examples/moar-workflows.ts"},"_id":"@ai-yantra/pg-fs@0.1.1","_integrity":"sha512-zf5vSaWHMS8z/mMLiML4TqICj5StTFLFhGt7+xIYg05549uXC9phOVf1HIlNaOQcPHI3lgGrZlSPdyfCmdmDiQ==","_resolved":"/private/var/folders/f1/s_bzsp654zg4vh8jbtcw6wxm0000gn/T/b9c1a678e5a4fc25b00f928dcae0c1fd/ai-yantra-pg-fs-0.1.1.tgz","_from":"file:ai-yantra-pg-fs-0.1.1.tgz","_nodeVersion":"24.3.0","_npmVersion":"11.4.2","dist":{"integrity":"sha512-zf5vSaWHMS8z/mMLiML4TqICj5StTFLFhGt7+xIYg05549uXC9phOVf1HIlNaOQcPHI3lgGrZlSPdyfCmdmDiQ==","shasum":"72ff7cf06296c5565b1107cf2d6751862d33a31d","tarball":"https://registry.npmjs.org/@ai-yantra/pg-fs/-/pg-fs-0.1.1.tgz","fileCount":50,"unpackedSize":206154,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQCMRrEgRpwRzGCKoj9bKFmej231Ow67Q/0pP0azxIIymAIhAMeVjgjN8QoETvk8v9f9IRdBaN0E6vlWhq67gUYroz+P"}]},"_npmUser":{"name":"dumbmachine","email":"ratin.kumar.2k@gmail.com"},"directories":{},"maintainers":[{"name":"dumbmachine","email":"ratin.kumar.2k@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/pg-fs_0.1.1_1771403715127_0.49320497750791903"},"_hasShrinkwrap":false}},"time":{"created":"2026-02-18T08:23:15.086Z","modified":"2026-02-18T08:35:15.387Z","0.1.0":"2026-02-18T08:23:15.353Z","0.1.1":"2026-02-18T08:35:15.266Z"},"license":"MIT","keywords":["postgresql","filesystem","ai-sdk","agents","tools","file-management","drizzle","typescript"],"description":"PostgreSQL-backed filesystem with AI SDK tools for building intelligent file management agents","maintainers":[{"name":"dumbmachine","email":"ratin.kumar.2k@gmail.com"}],"readme":"# @ai-yantra/pg-fs\n\nDatabase-backed filesystem with AI SDK tools for building file management agents. Supports both **PostgreSQL** and **SQLite** as storage backends.\n\n## Install\n\n```bash\n# Core package\nnpm install @ai-yantra/pg-fs drizzle-orm\n\n# For PostgreSQL backend\nnpm install pg\n\n# For SQLite backend\nnpm install better-sqlite3\n```\n\n## Quick Start\n\n### SQLite (zero-config)\n\n```typescript\nimport { createSqliteFs } from '@ai-yantra/pg-fs';\n\n// In-memory — great for testing and ephemeral agents\nconst dbfs = await createSqliteFs();\n\n// File-based — persistent across restarts\nconst dbfs = await createSqliteFs('./mydb.sqlite');\n\nawait dbfs.fs.writeFile('/hello.txt', 'Hello, World!');\nconst content = await dbfs.fs.readFile('/hello.txt');\n```\n\n### PostgreSQL\n\n```typescript\nimport { Pool } from 'pg';\nimport { DbFs } from '@ai-yantra/pg-fs';\n\nconst pool = new Pool({\n  connectionString: 'postgresql://localhost:5432/mydb',\n});\n\nconst dbfs = await DbFs.create({ dialect: 'postgresql', pool });\n\nawait dbfs.fs.writeFile('/hello.txt', 'Hello, World!');\nconst content = await dbfs.fs.readFile('/hello.txt');\n```\n\n### Full config\n\n```typescript\nconst dbfs = await DbFs.create({\n  dialect: 'sqlite',        // or 'postgresql'\n  filename: './mydb.sqlite', // SQLite only (default: ':memory:')\n  pool: pgPool,              // PostgreSQL only\n  autoInitialize: true,      // create tables on startup (default: true)\n});\n```\n\n## Filesystem API\n\n### Files\n\n```typescript\nawait dbfs.fs.writeFile(path, content, { mimeType, createParents })\nawait dbfs.fs.readFile(path)\nawait dbfs.fs.exists(path)\nawait dbfs.fs.stat(path)        // { size, modifiedAt, isDirectory }\nawait dbfs.fs.unlink(path)\n```\n\n### Directories\n\n```typescript\nawait dbfs.fs.mkdir(path, { recursive: true })\nawait dbfs.fs.readdir(path)\nawait dbfs.fs.readdirStats(path)\nawait dbfs.fs.unlink(path, { recursive: true })\n```\n\n### Move, Copy, Search\n\n```typescript\nawait dbfs.fs.rename(oldPath, newPath)\nawait dbfs.fs.copy(src, dest, { recursive: true })\nawait dbfs.fs.glob('**/*.ts', '/src')\nawait dbfs.fs.search('TODO', '/')   // full-text search\n```\n\n## AI SDK Tools\n\n`dbfs.tools` gives your agent these tools out of the box:\n\n`read` `write` `edit` `ls` `mkdir` `unlink` `rename` `copy` `stat` `exists` `glob` `grep`\n\n```typescript\nimport { openai } from '@ai-sdk/openai';\nimport { createSqliteFs } from '@ai-yantra/pg-fs';\n\nconst dbfs = await createSqliteFs('./agent.sqlite');\n\nconst agent = new ToolLoopAgent({\n  model: openai('gpt-4'),\n  instructions: 'You are a file management assistant.',\n  tools: dbfs.tools,\n});\n\nawait agent.generate({\n  prompt: 'Create a project structure for a Node.js app',\n});\n```\n\n## Direct Database Access\n\nThe underlying Drizzle instance is exposed for custom queries:\n\n```typescript\nimport { sql } from 'drizzle-orm';\nimport { nodes } from '@ai-yantra/pg-fs';\n\nconst recentFiles = await dbfs.db.query.nodes.findMany({\n  where: sql`modified_at > NOW() - INTERVAL '1 hour'`,\n});\n```\n","readmeFilename":"README.md"}