{"_id":"@cool-ai/beach-config","_rev":"8-499a351949a6c6b59adfe529c03b69a6","name":"@cool-ai/beach-config","dist-tags":{"latest":"0.3.1"},"versions":{"0.1.0":{"name":"@cool-ai/beach-config","version":"0.1.0","license":"Apache-2.0","_id":"@cool-ai/beach-config@0.1.0","maintainers":[{"name":"johncandrew","email":"johncandrew@yahoo.co.uk"}],"homepage":"https://cool-ai.org","bugs":{"url":"https://gitlab.com/johncandrew/beach/-/issues"},"bin":{"beach-config":"dist/cli/index.js"},"dist":{"shasum":"2301c0697d4a896b1cce88fc6efc1b2d9688fb23","tarball":"https://registry.npmjs.org/@cool-ai/beach-config/-/beach-config-0.1.0.tgz","fileCount":92,"integrity":"sha512-aagTbvQ1GDOgAF/VnX7cetgvC7Ve26XJbwphPup+D9AdULnKyErqfqFEVoKNEw/x1a4OGACRLQBjKZ10GO6p0Q==","signatures":[{"sig":"MEQCIC36cxlDIF/t5CYBttXPMbgIboMsqpJk9OTRLD0yCOT6AiBuYa3gsP0VPRSHDvkFD6/v2EvmxeZa0cjZDl3nY/5VDg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":359438},"type":"module","_from":"file:cool-ai-beach-config-0.1.0.tgz","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./schemas/*":"./schemas/*","./templates/*":"./templates/*"},"scripts":{"dev":"tsc --project tsconfig.json --watch","test":"vitest run","build":"tsc --project tsconfig.json","typecheck":"tsc --noEmit","test:watch":"vitest"},"_npmUser":{"name":"johncandrew","email":"johncandrew@yahoo.co.uk"},"_resolved":"/tmp/f43b2da1be2afe3176eee38198f094da/cool-ai-beach-config-0.1.0.tgz","_integrity":"sha512-aagTbvQ1GDOgAF/VnX7cetgvC7Ve26XJbwphPup+D9AdULnKyErqfqFEVoKNEw/x1a4OGACRLQBjKZ10GO6p0Q==","repository":{"url":"git+https://gitlab.com/johncandrew/beach.git","type":"git","directory":"packages/config"},"_npmVersion":"10.9.7","description":"Declarative YAML configuration for Beach applications — schemas, loader, validator, CLI. Three axes (functional, environmental, secret), uniform cascade, file-per-thing scaffold.","directories":{},"_nodeVersion":"22.22.2","dependencies":{"ajv":"^8.17.0","yaml":"^2.5.0","ajv-formats":"^3.0.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^2.0.0","typescript":"^5.5.0","@types/node":"^20.0.0"},"_npmOperationalInternal":{"tmp":"tmp/beach-config_0.1.0_1777324043391_0.329138312249293","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"@cool-ai/beach-config","version":"0.1.1","license":"Apache-2.0","_id":"@cool-ai/beach-config@0.1.1","maintainers":[{"name":"johncandrew","email":"johncandrew@yahoo.co.uk"}],"homepage":"https://cool-ai.org","bugs":{"url":"https://gitlab.com/johncandrew/beach/-/issues"},"bin":{"beach-config":"dist/cli/index.js"},"dist":{"shasum":"472df23a938d730a6bf8523eb81a1b49bfa481cc","tarball":"https://registry.npmjs.org/@cool-ai/beach-config/-/beach-config-0.1.1.tgz","fileCount":92,"integrity":"sha512-q9uRJ67sea75fNwaLwFYaHyYskkjdaucboKCjROZn4HWljUGKM+EJCbLSMK+YM7JI32EN+Hm+q9gixn4hVN8hw==","signatures":[{"sig":"MEYCIQCLkIm5lhn6g62uN7Dli8t8P/fpaoqBGbF522a2zFrKlQIhAKNc2KjaeWpRW0Zzo2lecUev0axTATNRXrFraby6Llh8","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":361365},"type":"module","_from":"file:cool-ai-beach-config-0.1.1.tgz","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./schemas/*":"./schemas/*","./templates/*":"./templates/*"},"scripts":{"dev":"tsc --project tsconfig.json --watch","test":"vitest run","build":"tsc --project tsconfig.json","typecheck":"tsc --noEmit","test:watch":"vitest"},"_npmUser":{"name":"johncandrew","email":"johncandrew@yahoo.co.uk"},"_resolved":"/tmp/31055bca634a50b8f75e7290fc6efdc6/cool-ai-beach-config-0.1.1.tgz","_integrity":"sha512-q9uRJ67sea75fNwaLwFYaHyYskkjdaucboKCjROZn4HWljUGKM+EJCbLSMK+YM7JI32EN+Hm+q9gixn4hVN8hw==","repository":{"url":"git+https://gitlab.com/johncandrew/beach.git","type":"git","directory":"packages/config"},"_npmVersion":"10.9.7","description":"Declarative YAML configuration for Beach applications — schemas, loader, validator, CLI. Three axes (functional, environmental, secret), uniform cascade, file-per-thing scaffold.","directories":{},"_nodeVersion":"22.22.2","dependencies":{"ajv":"^8.17.0","yaml":"^2.5.0","ajv-formats":"^3.0.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^2.0.0","typescript":"^5.5.0","@types/node":"^20.0.0"},"_npmOperationalInternal":{"tmp":"tmp/beach-config_0.1.1_1777476725353_0.050802708700668386","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"@cool-ai/beach-config","version":"0.2.0","license":"Apache-2.0","_id":"@cool-ai/beach-config@0.2.0","maintainers":[{"name":"johncandrew","email":"johncandrew@yahoo.co.uk"}],"homepage":"https://cool-ai.org","bugs":{"url":"https://gitlab.com/johncandrew/beach/-/issues"},"bin":{"beach-config":"dist/cli/index.js"},"dist":{"shasum":"a94fb8d78073c0a8bf50ef5520dba8f9329d2de2","tarball":"https://registry.npmjs.org/@cool-ai/beach-config/-/beach-config-0.2.0.tgz","fileCount":92,"integrity":"sha512-CeVq8XNWA7Yr6W3gTDWaTzKGxnvUxpMHgoNdBg8ooi8CSdrd0Qrfwu6qUknqehWdAEKOMi+5L/gxXsd9fHb0KA==","signatures":[{"sig":"MEYCIQDrBaXRA9BGUslZILf5/I5JBmypCeknjpfSXA55KbYI7wIhAJr6i2XytwTTNbQDKYEA/Vs5zVAPyLtBieQhmInBx95M","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":361419},"type":"module","_from":"file:cool-ai-beach-config-0.2.0.tgz","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./schemas/*":"./schemas/*","./templates/*":"./templates/*"},"scripts":{"dev":"tsc --project tsconfig.json --watch","test":"vitest run","build":"tsc --project tsconfig.json","typecheck":"tsc --noEmit","test:watch":"vitest"},"_npmUser":{"name":"johncandrew","email":"johncandrew@yahoo.co.uk"},"_resolved":"/tmp/8b6be7f4c24edd72c0aa2339dc5ab788/cool-ai-beach-config-0.2.0.tgz","_integrity":"sha512-CeVq8XNWA7Yr6W3gTDWaTzKGxnvUxpMHgoNdBg8ooi8CSdrd0Qrfwu6qUknqehWdAEKOMi+5L/gxXsd9fHb0KA==","repository":{"url":"git+https://gitlab.com/johncandrew/beach.git","type":"git","directory":"packages/config"},"_npmVersion":"10.9.7","description":"Declarative YAML configuration for Beach applications — schemas, loader, validator, CLI. Three axes (functional, environmental, secret), uniform cascade, file-per-thing scaffold.","directories":{},"_nodeVersion":"22.22.2","dependencies":{"ajv":"^8.17.0","yaml":"^2.5.0","ajv-formats":"^3.0.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^2.0.0","typescript":"^5.5.0","@types/node":"^20.0.0"},"_npmOperationalInternal":{"tmp":"tmp/beach-config_0.2.0_1777485178561_0.5642928138665806","host":"s3://npm-registry-packages-npm-production"}},"0.2.1":{"name":"@cool-ai/beach-config","version":"0.2.1","license":"Apache-2.0","_id":"@cool-ai/beach-config@0.2.1","maintainers":[{"name":"johncandrew","email":"johncandrew@yahoo.co.uk"}],"homepage":"https://cool-ai.org","bugs":{"url":"https://gitlab.com/johncandrew/beach/-/issues"},"bin":{"beach-config":"dist/cli/index.js"},"dist":{"shasum":"ef3683540eb5862b3ab9701e622c2ec341626b40","tarball":"https://registry.npmjs.org/@cool-ai/beach-config/-/beach-config-0.2.1.tgz","fileCount":92,"integrity":"sha512-zt/Sf2NYlnEtiyuX41OY9EcdcEXxih0jzIH2vWDTytXEE7O8Ahw35vLKAlN0t8wqDfb/g0o3bTmaPWXRd7YdrA==","signatures":[{"sig":"MEUCICTIXWeyWhru7nD5ykaXxwTrmZt7De7nCW1JirL1INwOAiEAgJIRRMKUyh2Q77Dlhz65wHWeMdCu63bunutxbZVg9o8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":371934},"type":"module","_from":"file:cool-ai-beach-config-0.2.1.tgz","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./schemas/*":"./schemas/*","./templates/*":"./templates/*"},"scripts":{"dev":"tsc --project tsconfig.json --watch","test":"vitest run","build":"tsc --project tsconfig.json","typecheck":"tsc --noEmit","test:watch":"vitest"},"_npmUser":{"name":"johncandrew","email":"johncandrew@yahoo.co.uk"},"_resolved":"/tmp/383e1a583c4d384deba071f10f494000/cool-ai-beach-config-0.2.1.tgz","_integrity":"sha512-zt/Sf2NYlnEtiyuX41OY9EcdcEXxih0jzIH2vWDTytXEE7O8Ahw35vLKAlN0t8wqDfb/g0o3bTmaPWXRd7YdrA==","repository":{"url":"git+https://gitlab.com/johncandrew/beach.git","type":"git","directory":"packages/config"},"_npmVersion":"10.9.7","description":"Declarative YAML configuration for Beach applications — schemas, loader, validator, CLI. Three axes (functional, environmental, secret), uniform cascade, file-per-thing scaffold.","directories":{},"_nodeVersion":"22.22.2","dependencies":{"ajv":"^8.17.0","yaml":"^2.5.0","ajv-formats":"^3.0.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^2.0.0","typescript":"^5.5.0","@types/node":"^20.0.0"},"_npmOperationalInternal":{"tmp":"tmp/beach-config_0.2.1_1778003245334_0.5347753630538639","host":"s3://npm-registry-packages-npm-production"}},"0.2.2":{"name":"@cool-ai/beach-config","version":"0.2.2","license":"Apache-2.0","_id":"@cool-ai/beach-config@0.2.2","maintainers":[{"name":"johncandrew","email":"johncandrew@yahoo.co.uk"}],"homepage":"https://cool-ai.org","bugs":{"url":"https://gitlab.com/johncandrew/beach/-/issues"},"bin":{"beach-config":"dist/cli/index.js"},"dist":{"shasum":"73b3b615fe4e068c7cfdeb77771be84f2cc7a672","tarball":"https://registry.npmjs.org/@cool-ai/beach-config/-/beach-config-0.2.2.tgz","fileCount":92,"integrity":"sha512-aGY31NgJtKb0/WOlBfCervmyTBTTwiK0dXOhY3fkePVv0dXveYrkWX2OxEpKvZSDSWWEVB6dYmHbTzj1r4Cqtw==","signatures":[{"sig":"MEUCIQCjZRFsxFVqILTRkRgpzGTbN2zy1gWhqXfZHiEtPQ+3ggIgDOt8Yo9/vCXxw9Vw36u7sCnc3FaCXRs8Ekkt/4tVH6c=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":371878},"type":"module","_from":"file:cool-ai-beach-config-0.2.2.tgz","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./schemas/*":"./schemas/*","./templates/*":"./templates/*"},"scripts":{"dev":"tsc --project tsconfig.json --watch","test":"vitest run","build":"tsc --project tsconfig.json","typecheck":"tsc --noEmit","test:watch":"vitest"},"_npmUser":{"name":"johncandrew","email":"johncandrew@yahoo.co.uk"},"_resolved":"/tmp/89187ff339e626457b9ac0b5ce325b98/cool-ai-beach-config-0.2.2.tgz","_integrity":"sha512-aGY31NgJtKb0/WOlBfCervmyTBTTwiK0dXOhY3fkePVv0dXveYrkWX2OxEpKvZSDSWWEVB6dYmHbTzj1r4Cqtw==","repository":{"url":"git+https://gitlab.com/johncandrew/beach.git","type":"git","directory":"packages/config"},"_npmVersion":"10.9.7","description":"Declarative YAML configuration for Beach applications — schemas, loader, validator, CLI. Three axes (functional, environmental, secret), uniform cascade, file-per-thing scaffold.","directories":{},"_nodeVersion":"22.22.2","dependencies":{"ajv":"^8.17.0","yaml":"^2.5.0","ajv-formats":"^3.0.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^2.0.0","typescript":"^5.5.0","@types/node":"^20.0.0"},"_npmOperationalInternal":{"tmp":"tmp/beach-config_0.2.2_1778191669763_0.8915806711586203","host":"s3://npm-registry-packages-npm-production"}},"0.2.3":{"name":"@cool-ai/beach-config","version":"0.2.3","license":"Apache-2.0","_id":"@cool-ai/beach-config@0.2.3","maintainers":[{"name":"johncandrew","email":"johncandrew@yahoo.co.uk"}],"homepage":"https://cool-ai.org","bugs":{"url":"https://gitlab.com/johncandrew/beach/-/issues"},"bin":{"beach-config":"dist/cli/index.js"},"dist":{"shasum":"4fcc4c59b29dd7365129f76d029d7d181a7ae18c","tarball":"https://registry.npmjs.org/@cool-ai/beach-config/-/beach-config-0.2.3.tgz","fileCount":92,"integrity":"sha512-wMj5CPLN9lGO/1WLyhGuIOd0gFlVsK1KIZuT2rnpDW17atVFFtd1eHC5G68O5JurQ7HYYxT/mWSYZoBKCQq4pg==","signatures":[{"sig":"MEUCIQCKk3wh2iDNEGWm6pWpGxaCcRfdLxUIBT+gw2Kd4iiDrwIgAizmUIbkfZM47jhbQmzcZCIF/DXwdZ++JsUU4Y65dEE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":371417},"type":"module","_from":"file:cool-ai-beach-config-0.2.3.tgz","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./schemas/*":"./schemas/*","./templates/*":"./templates/*"},"scripts":{"dev":"tsc --project tsconfig.json --watch","test":"vitest run","build":"tsc --project tsconfig.json","coverage":"vitest run --coverage","typecheck":"tsc --noEmit","test:watch":"vitest"},"_npmUser":{"name":"johncandrew","email":"johncandrew@yahoo.co.uk"},"_resolved":"/tmp/cc3c8a245d2d5928627f3472d4b2020b/cool-ai-beach-config-0.2.3.tgz","_integrity":"sha512-wMj5CPLN9lGO/1WLyhGuIOd0gFlVsK1KIZuT2rnpDW17atVFFtd1eHC5G68O5JurQ7HYYxT/mWSYZoBKCQq4pg==","repository":{"url":"git+https://gitlab.com/johncandrew/beach.git","type":"git","directory":"packages/config"},"_npmVersion":"10.9.8","description":"Declarative YAML configuration for Beach applications — schemas, loader, validator, CLI. Three axes (functional, environmental, secret), uniform cascade, file-per-thing scaffold.","directories":{},"_nodeVersion":"22.22.3","dependencies":{"ajv":"^8.17.0","yaml":"^2.5.0","ajv-formats":"^3.0.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^2.0.0","typescript":"^5.5.0","@types/node":"^20.0.0"},"_npmOperationalInternal":{"tmp":"tmp/beach-config_0.2.3_1779381726465_0.7445990888820184","host":"s3://npm-registry-packages-npm-production"}},"0.3.0":{"name":"@cool-ai/beach-config","version":"0.3.0","license":"Apache-2.0","_id":"@cool-ai/beach-config@0.3.0","maintainers":[{"name":"johncandrew","email":"johncandrew@yahoo.co.uk"}],"homepage":"https://cool-ai.org","bugs":{"url":"https://gitlab.com/johncandrew/beach/-/issues"},"bin":{"beach-config":"dist/cli/index.js"},"dist":{"shasum":"a09b1d6a5db23d8fe2fe30a8bd4a492c6b40ae36","tarball":"https://registry.npmjs.org/@cool-ai/beach-config/-/beach-config-0.3.0.tgz","fileCount":92,"integrity":"sha512-1ceK6qBnHV8rHkgAOhgwYWEnqBrjqSbU7aoQhdbVATQSDlV6RU7Wd6HmyV2SIEBt3Tnd7OpzS+BhthgVtikjXw==","signatures":[{"sig":"MEUCIQDYKMKfOBKQ+JXJ20VwnmL0fyvMUsxrvYgMi1kXz/KWkwIgGlSf6qsUtGhTjzQUfKy4gEXTaPSZiGIJO0oSS7ZBod8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":371813},"type":"module","_from":"file:cool-ai-beach-config-0.3.0.tgz","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./schemas/*":"./schemas/*","./templates/*":"./templates/*"},"scripts":{"dev":"tsc --project tsconfig.json --watch","test":"vitest run","build":"tsc --project tsconfig.json","coverage":"vitest run --coverage","typecheck":"tsc --noEmit","test:watch":"vitest"},"_npmUser":{"name":"johncandrew","email":"johncandrew@yahoo.co.uk"},"_resolved":"/tmp/64ed40c073c4e6d04cdeed81be337a98/cool-ai-beach-config-0.3.0.tgz","_integrity":"sha512-1ceK6qBnHV8rHkgAOhgwYWEnqBrjqSbU7aoQhdbVATQSDlV6RU7Wd6HmyV2SIEBt3Tnd7OpzS+BhthgVtikjXw==","repository":{"url":"git+https://gitlab.com/johncandrew/beach.git","type":"git","directory":"packages/config"},"_npmVersion":"10.9.8","description":"Declarative YAML configuration for Beach applications — schemas, loader, validator, CLI. Three axes (functional, environmental, secret), uniform cascade, file-per-thing scaffold.","directories":{},"_nodeVersion":"22.22.3","dependencies":{"ajv":"^8.17.0","yaml":"^2.5.0","ajv-formats":"^3.0.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^2.0.0","typescript":"^5.5.0","@types/node":"^20.0.0"},"_npmOperationalInternal":{"tmp":"tmp/beach-config_0.3.0_1780572517539_0.7073344318653407","host":"s3://npm-registry-packages-npm-production"}},"0.3.1":{"name":"@cool-ai/beach-config","version":"0.3.1","description":"Declarative YAML configuration for Beach applications — schemas, loader, validator, CLI. Three axes (functional, environmental, secret), uniform cascade, file-per-thing scaffold.","license":"Apache-2.0","repository":{"type":"git","url":"git+https://gitlab.com/johncandrew/beach.git","directory":"packages/config"},"homepage":"https://cool-ai.org","bugs":{"url":"https://gitlab.com/johncandrew/beach/-/issues"},"type":"module","exports":{".":{"import":"./dist/index.js","types":"./dist/index.d.ts"},"./schemas/*":"./schemas/*","./templates/*":"./templates/*"},"bin":{"beach-config":"dist/cli/index.js"},"publishConfig":{"access":"public"},"dependencies":{"ajv":"^8.17.0","ajv-formats":"^3.0.0","yaml":"^2.5.0"},"devDependencies":{"@types/node":"^20.0.0","typescript":"^5.5.0","vitest":"^2.0.0"},"scripts":{"build":"tsc --project tsconfig.json","dev":"tsc --project tsconfig.json --watch","test":"vitest run","coverage":"vitest run --coverage","test:watch":"vitest","typecheck":"tsc --noEmit"},"_id":"@cool-ai/beach-config@0.3.1","_integrity":"sha512-qCevq3rp001qXKzZqD5GhcTcsuX3d6pJr5wBcEZQWxtrEEZwZGA/kl5tamubfhF1aKiXqlekgQf62qkC+QScKw==","_resolved":"/tmp/a14bbd4a0e6c21fd64c6755ba6455490/cool-ai-beach-config-0.3.1.tgz","_from":"file:cool-ai-beach-config-0.3.1.tgz","_nodeVersion":"22.22.3","_npmVersion":"10.9.8","dist":{"integrity":"sha512-qCevq3rp001qXKzZqD5GhcTcsuX3d6pJr5wBcEZQWxtrEEZwZGA/kl5tamubfhF1aKiXqlekgQf62qkC+QScKw==","shasum":"ca6eb16e1cf6e94c3a3e14349d2c5ac312bcf5d5","tarball":"https://registry.npmjs.org/@cool-ai/beach-config/-/beach-config-0.3.1.tgz","fileCount":92,"unpackedSize":371704,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCICju2/XY7nyZ9JqP9g+yo501GfucULuX/ud1/lib2cexAiAafInaAltBCoDh92jRkjMcWzWAoSwF8zobjbjAUj7ObA=="}]},"_npmUser":{"name":"johncandrew","email":"johncandrew@yahoo.co.uk"},"directories":{},"maintainers":[{"name":"johncandrew","email":"johncandrew@yahoo.co.uk"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/beach-config_0.3.1_1781772154138_0.848286784729795"},"_hasShrinkwrap":false}},"time":{"created":"2026-04-27T21:07:23.308Z","modified":"2026-06-18T08:42:34.445Z","0.1.0":"2026-04-27T21:07:23.528Z","0.1.1":"2026-04-29T15:32:05.510Z","0.2.0":"2026-04-29T17:52:58.709Z","0.2.1":"2026-05-05T17:47:25.484Z","0.2.2":"2026-05-07T22:07:49.913Z","0.2.3":"2026-05-21T16:42:06.622Z","0.3.0":"2026-06-04T11:28:37.697Z","0.3.1":"2026-06-18T08:42:34.316Z"},"bugs":{"url":"https://gitlab.com/johncandrew/beach/-/issues"},"license":"Apache-2.0","homepage":"https://cool-ai.org","repository":{"type":"git","url":"git+https://gitlab.com/johncandrew/beach.git","directory":"packages/config"},"description":"Declarative YAML configuration for Beach applications — schemas, loader, validator, CLI. Three axes (functional, environmental, secret), uniform cascade, file-per-thing scaffold.","maintainers":[{"name":"johncandrew","email":"johncandrew@yahoo.co.uk"}],"readme":"# @cool-ai/beach-config\n\nDeclarative YAML configuration for Beach applications.\n\n## What this package is\n\nBeach treats configuration as data, not code. A Beach application is described\nby a small tree of YAML files — one per handler, one per channel, one per tool,\none per model class — that together describe what the application *is*, where\nit runs, and which secrets it depends on. Beach loads, validates, and\ncascades these files at startup, producing a frozen typed object the rest of\nthe application reads.\n\nThe three axes:\n\n| Axis           | Files                                                    | Reviewer                       |\n| -------------- | -------------------------------------------------------- | ------------------------------ |\n| Functional     | `beach.functional.yaml`, `handlers/*`, `tools/*`, `models/*` | App engineers, code review    |\n| Environmental  | `beach.environment.yaml`, `beach.environment.<env>.yaml`, `channels/*` | Ops, deployment review |\n| Secret         | `beach.secrets.env`                                      | Secrets owner, rotation gate   |\n\nFor the prose introduction, see [Configuring a Beach application](./published-docs/guides/configuration.md). For the JSON Schemas the package ships, see [Reference: Configuration Schemas](./published-docs/protocol/configuration-schemas.md). For the CLI in detail, see [Reference: beach-config CLI](./published-docs/protocol/beach-config-cli.md).\n\n## Quickstart\n\n```sh\nnpm install @cool-ai/beach-config\nnpx beach-config init        # scaffolds ./config with three model files,\n                             # functional + environmental files, and the\n                             # conventional handlers/, channels/, tools/ dirs\n```\n\nAdd `--with-starter` to the `init` call to lay down a worked example\n(one handler, one tool, one streaming channel) wired for `@cool-ai/beach-starter`'s\nrequest-reply pipeline.\n\n```sh\nnpx beach-config validate    # CI-friendly check; exits 1 on any error\nnpx beach-config tree        # navigable inventory of the loaded config\nnpx beach-config explain handlers.concierge.maxTokens   # walk the cascade for one key\n```\n\n## CLI\n\n```sh\nbeach-config init               # scaffold the directory layout\nbeach-config validate           # CI-friendly check, with --with-app-schema for app: blocks\nbeach-config tree               # print the inventory (with --section, --depth, --diff, --json)\nbeach-config explain <key>      # walk the cascade for one key\nbeach-config split <section>    # inline → one-file-per-thing\nbeach-config merge <section>    # one-file-per-thing → inline\nbeach-config update-models      # refresh shipped model files (opt-in)\n```\n\n## Programmatic API\n\n```typescript\nimport { loadBeachConfig } from '@cool-ai/beach-config';\n\nconst { config } = await loadBeachConfig({\n  configRoot: './config',\n  deployment: process.env.BEACH_DEPLOYMENT,\n});\n\n// Hand the relevant slice to each Beach primitive's `fromConfig` factory.\nconst router  = EventRouter.fromConfig(config.functional.router);\nconst manager = SessionTurnManager.fromConfig(config.functional.session, { router });\n```\n\n## Application-side extensibility\n\nBeach is silent on consumer-defined fields, but the config tree is the right\nplace to keep them. Three reserved namespaces give consumers room without\nforcing Beach to validate anything it has no opinion about: top-level `app:`\non the functional file, per-instance `app:` on handler / channel / tool files,\nand `app.collections.<name>` for consumer-defined collection-shaped data\nusing the same include vocabulary as Beach's own collections.\n\nTo bring `app:` blocks under per-file checking, ship a JSON Schema with the\napplication and run `beach-config validate --with-app-schema ./schemas/app.schema.json`.\n","readmeFilename":"README.md"}