{"_id":"@bernierllc/braingrid-cli-wrapper","_rev":"7-1f62fa282f4219ee002ad39ee2d1421b","name":"@bernierllc/braingrid-cli-wrapper","dist-tags":{"latest":"0.7.0"},"versions":{"0.1.1":{"name":"@bernierllc/braingrid-cli-wrapper","version":"0.1.1","keywords":["braingrid","cli","wrapper","typescript"],"author":{"name":"Bernier LLC"},"license":"MIT","_id":"@bernierllc/braingrid-cli-wrapper@0.1.1","maintainers":[{"name":"alikhan410","email":"mczeyo@gmail.com"},{"name":"mkbernier","email":"mkbernier@gmail.com"}],"homepage":"https://github.com/bernier-llc/tools#readme","bugs":{"url":"https://github.com/bernier-llc/tools/issues"},"dist":{"shasum":"0d08a36cfef4a089840f1a18da284bb1b126b41b","tarball":"https://registry.npmjs.org/@bernierllc/braingrid-cli-wrapper/-/braingrid-cli-wrapper-0.1.1.tgz","fileCount":74,"integrity":"sha512-EtiAjhPJR856CsBSplAzl6WX2pEblvzu54p1cdD6zAWf5SCT11JOMFSzR0JbKL2uBmhDH9VrVZ33vhD4vhl8OA==","signatures":[{"sig":"MEYCIQC3BgB+F1YF3YWzhAHDPRVIQ4C82N3q1TsYcSOCVwP2/QIhAKFWW16bvAoaw0NF6PSPm2ORQxC1qbtsokXli4dGY830","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":316778},"main":"dist/index.js","_from":"file:bernierllc-braingrid-cli-wrapper-0.1.1.tgz","types":"dist/index.d.ts","engines":{"node":">=18"},"scripts":{"lint":"eslint src --ext .ts","test":"jest","build":"tsc","clean":"rimraf dist","test:run":"jest","test:watch":"jest --watch","test:coverage":"jest --coverage"},"_npmUser":{"name":"mkbernier","email":"mkbernier@gmail.com"},"_resolved":"/private/var/folders/r0/wspnzd1s18sfjy10ffyv2qxw0000gn/T/3a362445681405f413e0ec7b9957369f/bernierllc-braingrid-cli-wrapper-0.1.1.tgz","_integrity":"sha512-EtiAjhPJR856CsBSplAzl6WX2pEblvzu54p1cdD6zAWf5SCT11JOMFSzR0JbKL2uBmhDH9VrVZ33vhD4vhl8OA==","repository":{"url":"git+https://github.com/bernier-llc/tools.git","type":"git"},"_npmVersion":"11.6.2","description":"Type-safe wrapper for BrainGrid CLI","directories":{},"_nodeVersion":"25.2.0","dependencies":{"zod":"^3.22.4","execa":"^8.0.1"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.5.0","eslint":"^8.56.0","rimraf":"^5.0.0","ts-jest":"^29.4.0","typescript":"^5.3.3","@types/jest":"^29.5.14","@types/node":"^20.10.5","@typescript-eslint/parser":"^6.15.0","@typescript-eslint/eslint-plugin":"^6.15.0"},"_npmOperationalInternal":{"tmp":"tmp/braingrid-cli-wrapper_0.1.1_1763776092821_0.7632624392039447","host":"s3://npm-registry-packages-npm-production"}},"0.3.0":{"name":"@bernierllc/braingrid-cli-wrapper","version":"0.3.0","keywords":["braingrid","cli","wrapper","typescript"],"author":{"name":"Bernier LLC"},"license":"MIT","_id":"@bernierllc/braingrid-cli-wrapper@0.3.0","maintainers":[{"name":"alikhan410","email":"mczeyo@gmail.com"},{"name":"mkbernier","email":"mkbernier@gmail.com"}],"homepage":"https://github.com/bernier-llc/tools#readme","bugs":{"url":"https://github.com/bernier-llc/tools/issues"},"dist":{"shasum":"fe51fa8b7baa473952864b0e57ec6bdadc5fdd07","tarball":"https://registry.npmjs.org/@bernierllc/braingrid-cli-wrapper/-/braingrid-cli-wrapper-0.3.0.tgz","fileCount":51,"integrity":"sha512-onl776vN9u+PX849EHlD0cCo2UUcHWTlHgPvtEOTJtFVH4fO26DYIXZXbjjcY2JqpK/Dxk6Xu4XTj/WeeLMufg==","signatures":[{"sig":"MEYCIQDfN0rKvhZxoJCWRjC3N6XjAbfUoEGbaa5rLiCUMo1b2gIhAKI4n9wrNGhAGDbZIfhcZwVAZl71ubqLyRiF3Ap4idwF","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":86789},"main":"dist/index.js","types":"dist/index.d.ts","engines":{"node":">=18"},"gitHead":"af7e74b3715d56d3a193e1bb6743b337c2b0df6d","scripts":{"lint":"eslint src --ext .ts","test":"jest","build":"tsc","clean":"rimraf dist","test:run":"jest","test:watch":"jest --watch","test:coverage":"jest --coverage","prepublishOnly":"npm run build"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:5a531098-84e8-479a-bdae-816ffb70a365"}},"repository":{"url":"git+https://github.com/bernier-llc/tools.git","type":"git"},"_npmVersion":"lerna/9.0.3/node@v20.19.6+x64 (linux)","description":"Type-safe wrapper for BrainGrid CLI","directories":{},"_nodeVersion":"20.19.6","dependencies":{"zod":"^3.22.4","execa":"^8.0.1"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.5.0","eslint":"^8.56.0","rimraf":"^5.0.0","ts-jest":"^29.4.0","typescript":"^5.3.3","@types/jest":"^29.5.14","@types/node":"^20.10.5","@typescript-eslint/parser":"^6.15.0","@typescript-eslint/eslint-plugin":"^6.15.0"},"_npmOperationalInternal":{"tmp":"tmp/braingrid-cli-wrapper_0.3.0_1767642282775_0.8544004356325001","host":"s3://npm-registry-packages-npm-production"}},"0.3.1":{"name":"@bernierllc/braingrid-cli-wrapper","version":"0.3.1","keywords":["braingrid","cli","wrapper","typescript"],"author":{"name":"Bernier LLC"},"license":"MIT","_id":"@bernierllc/braingrid-cli-wrapper@0.3.1","maintainers":[{"name":"alikhan410","email":"mczeyo@gmail.com"},{"name":"mkbernier","email":"mkbernier@gmail.com"}],"homepage":"https://github.com/bernier-llc/tools#readme","bugs":{"url":"https://github.com/bernier-llc/tools/issues"},"dist":{"shasum":"4e2f9ebfc858cfd6b1ccf9aed53453419e380e4e","tarball":"https://registry.npmjs.org/@bernierllc/braingrid-cli-wrapper/-/braingrid-cli-wrapper-0.3.1.tgz","fileCount":51,"integrity":"sha512-g1soIlKeDhPH4K9cuW0VwXpjHBupD8xEjaclXsE1Z01glG6EB3k/OutVpXsyfi+NkGxyW2uQWOQWu+F/vkJTvA==","signatures":[{"sig":"MEQCID6L8lVxTz06sZ2PI4AkitUDQ7krFKIxcPQdlIhX7mAtAiBWSo3SmQg+2xhFQuLkn1TCQMeLFxspVqU91AAcv0m4Lw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":86924},"main":"dist/index.js","_from":"file:bernierllc-braingrid-cli-wrapper-0.3.1.tgz","types":"dist/index.d.ts","engines":{"node":">=18"},"scripts":{"lint":"eslint src --ext .ts","test":"jest","build":"tsc","clean":"rimraf dist","test:run":"jest","test:watch":"jest --watch","test:coverage":"jest --coverage"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:5a531098-84e8-479a-bdae-816ffb70a365"}},"_resolved":"/tmp/f7ac67be8d2dd1084865d2effe66fbb1/bernierllc-braingrid-cli-wrapper-0.3.1.tgz","_integrity":"sha512-g1soIlKeDhPH4K9cuW0VwXpjHBupD8xEjaclXsE1Z01glG6EB3k/OutVpXsyfi+NkGxyW2uQWOQWu+F/vkJTvA==","repository":{"url":"git+https://github.com/bernier-llc/tools.git","type":"git"},"_npmVersion":"11.11.0","description":"Type-safe wrapper for BrainGrid CLI","directories":{},"_nodeVersion":"20.20.0","dependencies":{"zod":"^3.22.4","execa":"^8.0.1"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.5.0","eslint":"^8.56.0","rimraf":"^5.0.0","ts-jest":"^29.4.0","typescript":"^5.3.3","@types/jest":"^29.5.14","@types/node":"^20.10.5","@typescript-eslint/parser":"^6.15.0","@typescript-eslint/eslint-plugin":"^6.15.0"},"_npmOperationalInternal":{"tmp":"tmp/braingrid-cli-wrapper_0.3.1_1773077962148_0.17307017769088828","host":"s3://npm-registry-packages-npm-production"}},"0.3.2":{"name":"@bernierllc/braingrid-cli-wrapper","version":"0.3.2","keywords":["braingrid","cli","wrapper","typescript"],"author":{"name":"Bernier LLC"},"license":"MIT","_id":"@bernierllc/braingrid-cli-wrapper@0.3.2","maintainers":[{"name":"alikhan410","email":"mczeyo@gmail.com"},{"name":"mkbernier","email":"mkbernier@gmail.com"}],"homepage":"https://github.com/bernier-llc/tools#readme","bugs":{"url":"https://github.com/bernier-llc/tools/issues"},"dist":{"shasum":"9ab95c7907bdb89cad87b989b8355020ec77d280","tarball":"https://registry.npmjs.org/@bernierllc/braingrid-cli-wrapper/-/braingrid-cli-wrapper-0.3.2.tgz","fileCount":51,"integrity":"sha512-yVZsBdJTxRfN/5XljfKvyRcubKdMauCT/Bdu+hwTVn78tglrt1p7QnBzPoJD/C2HcdwcfQlbY+ouHqV7aw5nSQ==","signatures":[{"sig":"MEYCIQCT6Otc81ZcBj7u46msBGHtzNZ12HVDLfV2WTsiisntpwIhAOIXK4xvnrzDHwGPgYl8VthPjvMjsAzFTW2swM1MSn3a","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":87156},"main":"dist/index.js","_from":"file:bernierllc-braingrid-cli-wrapper-0.3.2.tgz","types":"dist/index.d.ts","engines":{"node":">=18"},"scripts":{"lint":"eslint src --ext .ts","test":"jest","build":"tsc","clean":"rimraf dist","test:run":"jest","test:watch":"jest --watch","test:coverage":"jest --coverage"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:5a531098-84e8-479a-bdae-816ffb70a365"}},"_resolved":"/tmp/33ac06641b5f0bfa5de8a7193eeb8541/bernierllc-braingrid-cli-wrapper-0.3.2.tgz","_integrity":"sha512-yVZsBdJTxRfN/5XljfKvyRcubKdMauCT/Bdu+hwTVn78tglrt1p7QnBzPoJD/C2HcdwcfQlbY+ouHqV7aw5nSQ==","repository":{"url":"git+https://github.com/bernier-llc/tools.git","type":"git"},"_npmVersion":"11.11.0","description":"Type-safe wrapper for BrainGrid CLI","directories":{},"_nodeVersion":"20.20.0","dependencies":{"zod":"^3.22.4","execa":"^8.0.1"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.5.0","eslint":"^8.56.0","rimraf":"^5.0.0","ts-jest":"^29.4.0","typescript":"^5.3.3","@types/jest":"^29.5.14","@types/node":"^20.10.5","@typescript-eslint/parser":"^6.15.0","@typescript-eslint/eslint-plugin":"^6.15.0"},"_npmOperationalInternal":{"tmp":"tmp/braingrid-cli-wrapper_0.3.2_1773081117352_0.9153704096187205","host":"s3://npm-registry-packages-npm-production"}},"0.5.0":{"name":"@bernierllc/braingrid-cli-wrapper","version":"0.5.0","keywords":["braingrid","cli","wrapper","typescript"],"author":{"name":"Bernier LLC"},"license":"MIT","_id":"@bernierllc/braingrid-cli-wrapper@0.5.0","maintainers":[{"name":"alikhan410","email":"mczeyo@gmail.com"},{"name":"mkbernier","email":"mkbernier@gmail.com"}],"homepage":"https://github.com/bernier-llc/tools#readme","bugs":{"url":"https://github.com/bernier-llc/tools/issues"},"dist":{"shasum":"6f8f4dcf87c7b580cef516d4e1123bab31e39321","tarball":"https://registry.npmjs.org/@bernierllc/braingrid-cli-wrapper/-/braingrid-cli-wrapper-0.5.0.tgz","fileCount":24,"integrity":"sha512-Hne+ewDxu/96Bj0KRP6PApOvoYJKdMQElLYifpZYBdNpaZCvWJu/00FX+an9K8a6UvlTNdTsx7L4fGg537AzGw==","signatures":[{"sig":"MEUCIQCCokMM4ZTx7zO8+ErCDDnK6w0eIzXUy0va2fPQe/QIYwIgOH+ccfm89phQ87YitZS4eopnLe5X/oES39MABYD+yN4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":38332},"main":"dist/index.js","_from":"file:bernierllc-braingrid-cli-wrapper-0.5.0.tgz","types":"dist/index.d.ts","engines":{"node":">=18"},"scripts":{"lint":"eslint src --ext .ts","test":"jest","build":"tsc","clean":"rimraf dist","test:run":"jest","test:watch":"jest --watch","test:coverage":"jest --coverage"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:5a531098-84e8-479a-bdae-816ffb70a365"}},"_resolved":"/home/runner/work/tools/tools/packages/core/braingrid-cli-wrapper/bernierllc-braingrid-cli-wrapper-0.5.0.tgz","_integrity":"sha512-Hne+ewDxu/96Bj0KRP6PApOvoYJKdMQElLYifpZYBdNpaZCvWJu/00FX+an9K8a6UvlTNdTsx7L4fGg537AzGw==","repository":{"url":"git+https://github.com/bernier-llc/tools.git","type":"git"},"_npmVersion":"11.14.1","description":"Type-safe wrapper for BrainGrid CLI","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.22.4","execa":"^8.0.1"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.5.0","eslint":"^8.56.0","rimraf":"^5.0.0","ts-jest":"^29.4.0","typescript":"^5.3.3","@types/jest":"^29.5.14","@types/node":"^20.10.5","@typescript-eslint/parser":"^6.15.0","@typescript-eslint/eslint-plugin":"^6.15.0"},"_npmOperationalInternal":{"tmp":"tmp/braingrid-cli-wrapper_0.5.0_1779233812086_0.9142976981413098","host":"s3://npm-registry-packages-npm-production"}},"0.6.0":{"name":"@bernierllc/braingrid-cli-wrapper","version":"0.6.0","keywords":["braingrid","cli","wrapper","typescript"],"author":{"name":"Bernier LLC"},"license":"MIT","_id":"@bernierllc/braingrid-cli-wrapper@0.6.0","maintainers":[{"name":"alikhan410","email":"mczeyo@gmail.com"},{"name":"mkbernier","email":"mkbernier@gmail.com"}],"homepage":"https://github.com/bernier-llc/tools#readme","bugs":{"url":"https://github.com/bernier-llc/tools/issues"},"dist":{"shasum":"f5fba4909a57509f612c260d9bd0d9111ffd1dfa","tarball":"https://registry.npmjs.org/@bernierllc/braingrid-cli-wrapper/-/braingrid-cli-wrapper-0.6.0.tgz","fileCount":26,"integrity":"sha512-6MtP3HiewcH9SBdj07Sv/gHNeFttqpHmDks9eGwQLJEgGovYp7Oq0fS+I+RH6utt7peA1XBWXc4Ce+wCmECGfA==","signatures":[{"sig":"MEYCIQC+O+Xm6WoUgc9JES+2gLmZkpfUNI0JbT3+5pqqmPpJawIhANFYbMIJ9VO2xI2UEfvtWUHgts7iGSE0DiLy2E7ICT5+","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":40157},"main":"dist/index.js","_from":"file:bernierllc-braingrid-cli-wrapper-0.6.0.tgz","types":"dist/index.d.ts","engines":{"node":">=18"},"scripts":{"lint":"eslint src --ext .ts","test":"jest","build":"tsc","clean":"rimraf dist","test:run":"jest","test:watch":"jest --watch","test:coverage":"jest --coverage"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:5a531098-84e8-479a-bdae-816ffb70a365"}},"_resolved":"/home/runner/work/tools/tools/packages/core/braingrid-cli-wrapper/bernierllc-braingrid-cli-wrapper-0.6.0.tgz","_integrity":"sha512-6MtP3HiewcH9SBdj07Sv/gHNeFttqpHmDks9eGwQLJEgGovYp7Oq0fS+I+RH6utt7peA1XBWXc4Ce+wCmECGfA==","repository":{"url":"git+https://github.com/bernier-llc/tools.git","type":"git"},"_npmVersion":"11.14.1","description":"Type-safe wrapper for BrainGrid CLI","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.22.4","execa":"^8.0.1"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.5.0","eslint":"^8.56.0","rimraf":"^5.0.0","ts-jest":"^29.4.0","typescript":"^5.3.3","@types/jest":"^29.5.14","@types/node":"^20.10.5","@typescript-eslint/parser":"^6.15.0","@typescript-eslint/eslint-plugin":"^6.15.0"},"_npmOperationalInternal":{"tmp":"tmp/braingrid-cli-wrapper_0.6.0_1779240918545_0.2843472286619324","host":"s3://npm-registry-packages-npm-production"}},"0.7.0":{"name":"@bernierllc/braingrid-cli-wrapper","version":"0.7.0","description":"Type-safe wrapper for BrainGrid CLI","main":"dist/index.js","types":"dist/index.d.ts","keywords":["braingrid","cli","wrapper","typescript"],"author":{"name":"Bernier LLC"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/bernier-llc/tools.git"},"dependencies":{"execa":"^8.0.1","zod":"^3.22.4"},"devDependencies":{"@types/jest":"^29.5.14","@types/node":"^20.10.5","@typescript-eslint/eslint-plugin":"^6.15.0","@typescript-eslint/parser":"^6.15.0","eslint":"^8.56.0","jest":"^29.5.0","rimraf":"^5.0.0","ts-jest":"^29.4.0","typescript":"^5.3.3"},"engines":{"node":">=18"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"scripts":{"build":"tsc","test":"jest","test:run":"jest","test:watch":"jest --watch","test:coverage":"jest --coverage","lint":"eslint src --ext .ts","clean":"rimraf dist"},"_id":"@bernierllc/braingrid-cli-wrapper@0.7.0","bugs":{"url":"https://github.com/bernier-llc/tools/issues"},"homepage":"https://github.com/bernier-llc/tools#readme","_integrity":"sha512-vDFQA+6F/78mZnq8vVHpZvudiC4Nz4mPbczSbheLIUCXx5TktQOkKo4emh2JzUctU1gvheBHL1pqAgfR/TVnVw==","_resolved":"/home/runner/work/tools/tools/packages/core/braingrid-cli-wrapper/bernierllc-braingrid-cli-wrapper-0.7.0.tgz","_from":"file:bernierllc-braingrid-cli-wrapper-0.7.0.tgz","_nodeVersion":"20.20.2","_npmVersion":"11.14.1","dist":{"integrity":"sha512-vDFQA+6F/78mZnq8vVHpZvudiC4Nz4mPbczSbheLIUCXx5TktQOkKo4emh2JzUctU1gvheBHL1pqAgfR/TVnVw==","shasum":"2c88d2ce3b997af669969de5e81dfbd73f890581","tarball":"https://registry.npmjs.org/@bernierllc/braingrid-cli-wrapper/-/braingrid-cli-wrapper-0.7.0.tgz","fileCount":26,"unpackedSize":40157,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQCnxR7xZmKQ6TaQ9fk6+JXs9v7QcUCRXzIIO2bY+4Lw+QIhAN81X1EjjdUESY0nZ8BYZ5GmHPneDJepCl3uL8JjUKWF"}]},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:5a531098-84e8-479a-bdae-816ffb70a365"}},"directories":{},"maintainers":[{"name":"alikhan410","email":"mczeyo@gmail.com"},{"name":"mkbernier","email":"mkbernier@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/braingrid-cli-wrapper_0.7.0_1779249651417_0.510261806075964"},"_hasShrinkwrap":false}},"time":{"created":"2025-11-22T01:48:12.714Z","modified":"2026-05-20T04:00:51.985Z","0.1.1":"2025-11-22T01:48:13.071Z","0.3.0":"2026-01-05T19:44:42.949Z","0.3.1":"2026-03-09T17:39:22.318Z","0.3.2":"2026-03-09T18:31:57.487Z","0.5.0":"2026-05-19T23:36:52.252Z","0.6.0":"2026-05-20T01:35:18.694Z","0.7.0":"2026-05-20T04:00:51.559Z"},"bugs":{"url":"https://github.com/bernier-llc/tools/issues"},"author":{"name":"Bernier LLC"},"license":"MIT","homepage":"https://github.com/bernier-llc/tools#readme","keywords":["braingrid","cli","wrapper","typescript"],"repository":{"type":"git","url":"git+https://github.com/bernier-llc/tools.git"},"description":"Type-safe wrapper for BrainGrid CLI","maintainers":[{"name":"alikhan410","email":"mczeyo@gmail.com"},{"name":"mkbernier","email":"mkbernier@gmail.com"}],"readme":"# @bernierllc/braingrid-cli-wrapper\n\nType-safe wrapper for the BrainGrid CLI that provides a clean, programmatic interface for interacting with BrainGrid projects, requirements, and tasks.\n\n## Overview\n\nThis package provides atomic utilities for interacting with the BrainGrid CLI in a type-safe manner. It wraps BrainGrid CLI commands with Zod schema validation, ensuring type safety and proper error handling.\n\n## Features\n\n- **Type-safe API**: Full TypeScript support with Zod schema validation\n- **Error Handling**: Custom error types with detailed error information\n- **CLI Integration**: Seamless integration with BrainGrid CLI commands\n- **Schema Validation**: Automatic validation of CLI responses using Zod schemas\n- **Minimal Dependencies**: Only depends on `execa` and `zod`\n\n## Installation\n\n```bash\nnpm install @bernierllc/braingrid-cli-wrapper\n```\n\n## Quick Start\n\n```typescript\nimport {\n  createIdea,\n  listProjects,\n  createProject,\n  listRequirements,\n  updateRequirementStatus,\n  createTask\n} from '@bernierllc/braingrid-cli-wrapper';\n\n// Create a new project\nconst project = await createProject('My Project', 'Project description');\nconsole.log(`Created project ${project.id}`);\n\n// List all projects\nconst projects = await listProjects();\nconsole.log(`Found ${projects.length} projects`);\n\n// Create a new requirement (IDEA)\nconst requirement = await createIdea('Add OAuth2 authentication', project.id);\nconsole.log(`Created requirement ${requirement.id} with status ${requirement.status}`);\n\n// List requirements\nconst requirements = await listRequirements(project.id);\nconsole.log(`Found ${requirements.length} requirements`);\n\n// Update requirement status\nawait updateRequirementStatus(requirement.id, 'PLANNED');\nconsole.log(`Updated requirement to PLANNED status`);\n\n// Create a task under a requirement\nconst task = await createTask(requirement.id, {\n  title: 'Build login UI',\n  description: 'Create login form component',\n  tags: ['DEV', 'frontend'],\n  dependencies: []\n});\nconsole.log(`Created task ${task.id}`);\n```\n\n## API Reference\n\n### Commands\n\n#### `createIdea(prompt: string, projectId?: string): Promise<BrainGridRequirement>`\n\nCreates a new requirement (IDEA) in BrainGrid.\n\n**Input:**\n- `prompt` (string, required): Description of the requirement/idea\n- `projectId` (string, optional): Project ID to associate with the requirement\n\n**Output:**\n- Returns a `BrainGridRequirement` object with:\n  - `id`: Requirement ID\n  - `projectId`: Associated project ID\n  - `title`: Requirement title\n  - `status`: Requirement status (IDEA, PLANNED, IN_PROGRESS, COMPLETED, CANCELLED, PAUSED)\n  - `description`: Optional description\n  - `createdAt`: Optional creation timestamp\n  - `updatedAt`: Optional update timestamp\n\n**Example:**\n```typescript\nconst req = await createIdea('Add user authentication system');\n// { id: 'req-123', projectId: 'proj-456', title: 'Add user authentication system', status: 'IDEA' }\n```\n\n#### `listProjects(): Promise<BrainGridProject[]>`\n\nLists all projects in BrainGrid.\n\n**Input:** None\n\n**Output:**\n- Returns an array of `BrainGridProject` objects with:\n  - `id`: Project ID\n  - `name`: Project name\n  - `description`: Optional project description\n\n**Example:**\n```typescript\nconst projects = await listProjects();\n// [{ id: 'proj-1', name: 'My Project', description: 'Project description' }]\n```\n\n#### `createProject(name: string, description?: string): Promise<BrainGridProject>`\n\nCreates a new project in BrainGrid.\n\n**Input:**\n- `name` (string, required): Project name\n- `description` (string, optional): Project description\n\n**Output:**\n- Returns a `BrainGridProject` object\n\n**Example:**\n```typescript\nconst project = await createProject('My Project', 'Project description');\n// { id: 'proj-123', name: 'My Project', description: 'Project description' }\n```\n\n#### `listRequirements(projectId?: string): Promise<BrainGridRequirement[]>`\n\nLists requirements, optionally filtered by project.\n\n**Input:**\n- `projectId` (string, optional): Filter by project ID\n\n**Output:**\n- Returns an array of `BrainGridRequirement` objects\n\n**Example:**\n```typescript\n// List all requirements\nconst allRequirements = await listRequirements();\n\n// List requirements for a specific project\nconst projectRequirements = await listRequirements('proj-123');\n// [{ id: 'req-1', projectId: 'proj-123', title: 'Add auth', status: 'IDEA' }]\n```\n\n#### `updateRequirementStatus(requirementId: string, status: RequirementStatus): Promise<void>`\n\nUpdates a requirement's status.\n\n**Input:**\n- `requirementId` (string, required): Requirement ID to update\n- `status` (RequirementStatus, required): New status (IDEA, PLANNED, IN_PROGRESS, COMPLETED, CANCELLED, PAUSED)\n\n**Output:** Promise that resolves when update is complete\n\n**Example:**\n```typescript\nawait updateRequirementStatus('req-123', 'PLANNED');\nawait updateRequirementStatus('req-123', 'IN_PROGRESS');\nawait updateRequirementStatus('req-123', 'COMPLETED');\n```\n\n#### `createTask(reqId: string, options: CreateTaskOptions): Promise<BrainGridTask>`\n\nCreates a task under a requirement.\n\n**Input:**\n- `reqId` (string, required): Requirement ID\n- `options` (CreateTaskOptions, required):\n  - `title` (string, required): Task title\n  - `description` (string, optional): Task description\n  - `tags` (string[], optional): Task tags\n  - `dependencies` (string[], optional): Task dependency IDs\n\n**Output:**\n- Returns a `BrainGridTask` object with:\n  - `id`: Task ID\n  - `reqId`: Parent requirement ID\n  - `title`: Task title\n  - `status`: Task status (TODO, READY, BLOCKED, IN_PROGRESS, COMPLETED, FAILED, PAUSED)\n  - `description`: Optional description\n  - `tags`: Optional array of tags\n  - `dependencies`: Optional array of dependency IDs\n  - `assignedTo`: Optional assignee ID\n  - `createdAt`: Optional creation timestamp\n  - `updatedAt`: Optional update timestamp\n  - `metadata`: Optional metadata object\n\n**Example:**\n```typescript\nconst task = await createTask('req-123', {\n  title: 'Build login UI',\n  description: 'Create login form component',\n  tags: ['DEV', 'frontend'],\n  dependencies: ['task-100']\n});\n// { id: 'task-456', reqId: 'req-123', title: 'Build login UI', status: 'TODO', ... }\n```\n\n#### `listTasks(options?: ListTasksOptions): Promise<BrainGridTask[]>`\n\nLists tasks with optional filters.\n\n**Input:**\n- `options` (ListTasksOptions, optional):\n  - `reqId` (string, optional): Filter by requirement ID\n  - `status` (TaskStatus[], optional): Filter by status array\n  - `tags` (string[], optional): Filter by tags array\n\n**Output:**\n- Returns an array of `BrainGridTask` objects\n\n**Example:**\n```typescript\n// List all tasks\nconst allTasks = await listTasks();\n\n// List tasks for a specific requirement\nconst reqTasks = await listTasks({ reqId: 'req-123' });\n\n// List tasks by status\nconst inProgressTasks = await listTasks({ status: ['IN_PROGRESS'] });\n\n// Combine filters\nconst filteredTasks = await listTasks({\n  reqId: 'req-123',\n  status: ['TODO', 'READY'],\n  tags: ['DEV']\n});\n```\n\n#### `updateTaskStatus(taskId: string, options: UpdateTaskOptions): Promise<void>`\n\nUpdates task status and metadata.\n\n**Input:**\n- `taskId` (string, required): Task ID to update\n- `options` (UpdateTaskOptions, optional):\n  - `status` (TaskStatus, optional): New task status\n  - `assignedTo` (string, optional): Assignee ID\n  - `metadata` (Record<string, unknown>, optional): Metadata object\n\n**Output:** Promise that resolves when update is complete\n\n**Example:**\n```typescript\n// Update task status\nawait updateTaskStatus('task-123', { status: 'IN_PROGRESS' });\n\n// Update with assignee\nawait updateTaskStatus('task-123', {\n  status: 'IN_PROGRESS',\n  assignedTo: 'user-456'\n});\n\n// Update with metadata\nawait updateTaskStatus('task-123', {\n  status: 'IN_PROGRESS',\n  metadata: { progress: 50, notes: 'Half done' }\n});\n```\n\n### Types\n\n#### `BrainGridProject`\n\n```typescript\ninterface BrainGridProject {\n  id: string;\n  name: string;\n  description?: string;\n}\n```\n\n#### `BrainGridRequirement`\n\n```typescript\ninterface BrainGridRequirement {\n  id: string;\n  projectId: string;\n  title: string;\n  status: RequirementStatus;\n  description?: string;\n  createdAt?: string;\n  updatedAt?: string;\n}\n```\n\n#### `BrainGridTask`\n\n```typescript\ninterface BrainGridTask {\n  id: string;\n  reqId: string;\n  title: string;\n  status: TaskStatus;\n  description?: string;\n  tags?: string[];\n  dependencies?: string[];\n  assignedTo?: string;\n  createdAt?: string;\n  updatedAt?: string;\n  metadata?: Record<string, unknown>;\n}\n```\n\n#### `RequirementStatus`\n\n```typescript\ntype RequirementStatus = 'IDEA' | 'PLANNED' | 'IN_PROGRESS' | 'COMPLETED' | 'CANCELLED' | 'PAUSED';\n```\n\n#### `TaskStatus`\n\n```typescript\ntype TaskStatus = 'TODO' | 'READY' | 'BLOCKED' | 'IN_PROGRESS' | 'COMPLETED' | 'FAILED' | 'PAUSED';\n```\n\n### Error Handling\n\nThe package throws `BrainGridCliError` when CLI commands fail:\n\n```typescript\nclass BrainGridCliError extends Error {\n  command: string;\n  exitCode: number;\n  stderr: string;\n}\n```\n\n**Example:**\n```typescript\nimport { createIdea, BrainGridCliError } from '@bernierllc/braingrid-cli-wrapper';\n\ntry {\n  const req = await createIdea('Test requirement');\n} catch (error) {\n  if (error instanceof BrainGridCliError) {\n    console.error(`CLI command failed: ${error.command}`);\n    console.error(`Exit code: ${error.exitCode}`);\n    console.error(`Error output: ${error.stderr}`);\n  }\n}\n```\n\n## Configuration\n\n### Environment Variables\n\n- `BRAINGRID_CLI_PATH`: Custom path to the BrainGrid CLI executable (defaults to `'braingrid'`)\n\n**Example:**\n```bash\nexport BRAINGRID_CLI_PATH=/custom/path/braingrid\n```\n\n## Usage Examples\n\n### Complete Workflow\n\n```typescript\nimport {\n  createProject,\n  listProjects,\n  createIdea,\n  listRequirements,\n  updateRequirementStatus,\n  createTask,\n  listTasks,\n  updateTaskStatus\n} from '@bernierllc/braingrid-cli-wrapper';\n\nasync function workflow() {\n  // 1. Create or list projects\n  const project = await createProject(\n    'My Project',\n    'Authentication system project'\n  );\n\n  // Or list existing projects\n  const projects = await listProjects();\n  console.log(`Found ${projects.length} projects`);\n\n  // 2. Create a requirement\n  const requirement = await createIdea(\n    'Build user authentication system',\n    project.id\n  );\n\n  // 3. List and update requirements\n  const requirements = await listRequirements(project.id);\n  console.log(`Project has ${requirements.length} requirements`);\n\n  await updateRequirementStatus(requirement.id, 'PLANNED');\n\n  // 4. Create tasks\n  const task1 = await createTask(requirement.id, {\n    title: 'Design authentication flow',\n    tags: ['DESIGN']\n  });\n\n  const task2 = await createTask(requirement.id, {\n    title: 'Implement login endpoint',\n    tags: ['DEV', 'backend'],\n    dependencies: [task1.id]\n  });\n\n  // 5. List tasks\n  const tasks = await listTasks({ reqId: requirement.id });\n  console.log(`Created ${tasks.length} tasks`);\n\n  // 6. Update task status\n  await updateTaskStatus(task1.id, { status: 'COMPLETED' });\n  await updateTaskStatus(task2.id, {\n    status: 'IN_PROGRESS',\n    assignedTo: 'user-123'\n  });\n\n  // 7. Mark requirement as in progress\n  await updateRequirementStatus(requirement.id, 'IN_PROGRESS');\n}\n```\n\n### Error Handling Example\n\n```typescript\nimport { createIdea, BrainGridCliError } from '@bernierllc/braingrid-cli-wrapper';\n\nasync function createRequirementSafely(prompt: string) {\n  try {\n    const req = await createIdea(prompt);\n    return req;\n  } catch (error) {\n    if (error instanceof BrainGridCliError) {\n      console.error(`BrainGrid CLI error: ${error.message}`);\n      console.error(`Command: ${error.command}`);\n      console.error(`Exit code: ${error.exitCode}`);\n      console.error(`Stderr: ${error.stderr}`);\n      throw new Error('Failed to create requirement');\n    }\n    throw error;\n  }\n}\n```\n\n## Testing\n\n```bash\n# Run tests\nnpm test\n\n# Run tests with coverage\nnpm run test:coverage\n\n# Run tests in watch mode\nnpm run test:watch\n```\n\n## Integration Status\n\n### Logger Integration\n**Status**: not-applicable\n\nThis is a pure utility core package with no dependencies. Logging is handled by consuming packages. Does not require @bernierllc/logger integration.\n\n### Docs-Suite Integration\n**Status**: ready\n\nComplete API documentation with TypeScript types and examples available for documentation suite integration.\n\n### NeverHub Integration\n**Status**: not-applicable\n\nPure utility package with no runtime dependencies. NeverHub integration is handled at the service-level packages that consume this utility. Does not require @bernierllc/neverhub-adapter integration.\n\n## Core Package Compliance\n\nThis package follows the core package rules:\n\n- ✅ **Atomic functionality**: Single responsibility - wraps BrainGrid CLI\n- ✅ **No internal dependencies**: Only depends on external packages (`execa`, `zod`)\n- ✅ **Pure functions**: Explicit inputs/outputs with type safety\n- ✅ **Full test coverage**: Comprehensive test suite for all commands\n- ✅ **Single entrypoint**: All exports via `index.ts`\n- ✅ **Strict typing**: TypeScript strict mode enabled, no implicit `any`\n- ✅ **Documentation**: Complete README with purpose, usage, and examples\n\n## License\n\nMIT License - see LICENSE file for details.\n","readmeFilename":"README.md"}