{"_id":"@dongkseo/adapters","_rev":"10-4dae1db426699e3e8aa763ae958084fb","name":"@dongkseo/adapters","dist-tags":{"latest":"0.1.9"},"versions":{"0.1.0":{"name":"@dongkseo/adapters","version":"0.1.0","_id":"@dongkseo/adapters@0.1.0","maintainers":[{"name":"dongkseo","email":"ssddgg99@daum.net"}],"dist":{"shasum":"2a42101a5da322c83301aa6bf5969b25dae69dd6","tarball":"https://registry.npmjs.org/@dongkseo/adapters/-/adapters-0.1.0.tgz","fileCount":42,"integrity":"sha512-OKp92epGGjJNeDxmroLHxvzWc1w0DvJT3h1QGpe3zvDKadvppqwtwYJWEoFShqrYeT2gBaH1xWubGtTdozLsPw==","signatures":[{"sig":"MEYCIQCwdyvo18+tvMj6osKzRoSEAhXaE1ckN0ukG8fa1kJnxAIhAIZDdaiyEByerRq8BJsM5MVYsjd/fuMEVA7LfM11d1dD","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":192162},"main":"./dist/index.js","type":"module","_from":"file:dongkseo-adapters-0.1.0.tgz","types":"./dist/index.d.ts","nexora":{"stability":"stable"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"scripts":{"test":"vitest run","build":"tsc","clean":"rm -rf dist .tsbuildinfo"},"_npmUser":{"name":"dongkseo","email":"ssddgg99@daum.net"},"_resolved":"/private/var/folders/lw/t8yfg__j2nxd25m53gt8840h0000gn/T/ef104e607ae8e41cd343a2f274076140/dongkseo-adapters-0.1.0.tgz","_integrity":"sha512-OKp92epGGjJNeDxmroLHxvzWc1w0DvJT3h1QGpe3zvDKadvppqwtwYJWEoFShqrYeT2gBaH1xWubGtTdozLsPw==","_npmVersion":"11.12.1","description":"**Stability: stable**","directories":{},"_nodeVersion":"26.0.0","dependencies":{"@dongkseo/tools":"0.1.0","@dongkseo/contracts":"0.1.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.8.0","@types/node":"^22.0.0"},"_npmOperationalInternal":{"tmp":"tmp/adapters_0.1.0_1781668554743_0.6141797460772376","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"@dongkseo/adapters","version":"0.1.1","_id":"@dongkseo/adapters@0.1.1","maintainers":[{"name":"dongkseo","email":"ssddgg99@daum.net"}],"dist":{"shasum":"622d26c4d18137d4832d5ddb82d31a268cc29075","tarball":"https://registry.npmjs.org/@dongkseo/adapters/-/adapters-0.1.1.tgz","fileCount":46,"integrity":"sha512-bwosksl2iCItEIypuPvN0x2zV2D82blljDbvsIXzEqgH0JXQl3l4B3raMPTgp2qvQ3FLTebbKYJvTWbqSXwLqQ==","signatures":[{"sig":"MEUCIDXmkDFu9cQ9XwYeL3d8Fma+EqG5gFFMs5wQHX0v3zS9AiEAtc9eQbS9gS9VfSxo9fJ81/lRVzcrZ7nsckQvMBrL7a0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":200485},"main":"./dist/index.js","type":"module","_from":"file:dongkseo-adapters-0.1.1.tgz","types":"./dist/index.d.ts","nexora":{"stability":"stable"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"scripts":{"test":"vitest run","build":"tsc","clean":"rm -rf dist .tsbuildinfo"},"_npmUser":{"name":"dongkseo","email":"ssddgg99@daum.net"},"_resolved":"/private/var/folders/f6/dfc3mm717vx9xjh0vbgqnddr0000gn/T/571025d934a46036a0f522e657f5c87a/dongkseo-adapters-0.1.1.tgz","_integrity":"sha512-bwosksl2iCItEIypuPvN0x2zV2D82blljDbvsIXzEqgH0JXQl3l4B3raMPTgp2qvQ3FLTebbKYJvTWbqSXwLqQ==","_npmVersion":"11.12.1","description":"**Stability: stable**","directories":{},"_nodeVersion":"26.0.0","dependencies":{"@dongkseo/tools":"0.1.1","@dongkseo/contracts":"0.1.1","@earendil-works/pi-ai":"^0.79.4"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.8.0","@types/node":"^22.0.0"},"_npmOperationalInternal":{"tmp":"tmp/adapters_0.1.1_1781688651290_0.7142657108031125","host":"s3://npm-registry-packages-npm-production"}},"0.1.2":{"name":"@dongkseo/adapters","version":"0.1.2","_id":"@dongkseo/adapters@0.1.2","maintainers":[{"name":"dongkseo","email":"ssddgg99@daum.net"}],"dist":{"shasum":"b79fd13cfb40c638b5b4c896605a89266c2120b5","tarball":"https://registry.npmjs.org/@dongkseo/adapters/-/adapters-0.1.2.tgz","fileCount":46,"integrity":"sha512-hbq9MkfTA5/7mCVfSljj2B9oyr5A58WEVS+qv/txe5ub+BGv/5CK6w0MlWsQGDHRyluXp8rNzeNxFUHpayhFSQ==","signatures":[{"sig":"MEQCIFHzLtFs+1R0cncLV3kf9cKBZPe/8jwAy2PDCm0Fy0KeAiBszErSotj1xX3yWBfL4A6IBWSDZ6VNEUc6ggrjrq2lpg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":218488},"main":"./dist/index.js","type":"module","_from":"file:dongkseo-adapters-0.1.2.tgz","types":"./dist/index.d.ts","nexora":{"stability":"stable"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"scripts":{"test":"vitest run","build":"tsc","clean":"rm -rf dist .tsbuildinfo"},"_npmUser":{"name":"dongkseo","email":"ssddgg99@daum.net"},"_resolved":"/private/var/folders/f6/dfc3mm717vx9xjh0vbgqnddr0000gn/T/41e0eb6673b6655236d2f66ecd2f7712/dongkseo-adapters-0.1.2.tgz","_integrity":"sha512-hbq9MkfTA5/7mCVfSljj2B9oyr5A58WEVS+qv/txe5ub+BGv/5CK6w0MlWsQGDHRyluXp8rNzeNxFUHpayhFSQ==","_npmVersion":"11.12.1","description":"**Stability: stable**","directories":{},"_nodeVersion":"26.0.0","dependencies":{"@dongkseo/tools":"0.1.2","@dongkseo/contracts":"0.1.6","@earendil-works/pi-ai":"^0.79.4"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.8.0","@types/node":"^22.0.0"},"_npmOperationalInternal":{"tmp":"tmp/adapters_0.1.2_1782111942275_0.4529907554775636","host":"s3://npm-registry-packages-npm-production"}},"0.1.3":{"name":"@dongkseo/adapters","version":"0.1.3","_id":"@dongkseo/adapters@0.1.3","maintainers":[{"name":"dongkseo","email":"ssddgg99@daum.net"}],"dist":{"shasum":"5d3bf9ee227c2ebf8b0595dc7c482dd5f9e395a7","tarball":"https://registry.npmjs.org/@dongkseo/adapters/-/adapters-0.1.3.tgz","fileCount":46,"integrity":"sha512-6xaDFwnglRQ0bZCNwPaYnh9RhnK2AC6hxYjSbuPVQ2EyUyoiwoMlBts7JZvbyEi/0r8VVVYfTkMtjIdeiWWBoQ==","signatures":[{"sig":"MEUCIC228mcCuyJzRKOEKMYBXpA4rZykO2BQc7UdWHzqWjHfAiEA3SUwTiIHD8x3XEKogROlvgBDl3vQxctABLDNC5gusM8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":218705},"main":"./dist/index.js","type":"module","_from":"file:dongkseo-adapters-0.1.3.tgz","types":"./dist/index.d.ts","nexora":{"stability":"stable"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"scripts":{"test":"vitest run","build":"tsc","clean":"rm -rf dist .tsbuildinfo"},"_npmUser":{"name":"dongkseo","email":"ssddgg99@daum.net"},"_resolved":"/private/var/folders/f6/dfc3mm717vx9xjh0vbgqnddr0000gn/T/ca5f822e332d3eb5c8d1194c0f8c168d/dongkseo-adapters-0.1.3.tgz","_integrity":"sha512-6xaDFwnglRQ0bZCNwPaYnh9RhnK2AC6hxYjSbuPVQ2EyUyoiwoMlBts7JZvbyEi/0r8VVVYfTkMtjIdeiWWBoQ==","_npmVersion":"11.12.1","description":"**Stability: stable**","directories":{},"_nodeVersion":"26.0.0","dependencies":{"@dongkseo/tools":"0.1.2","@dongkseo/contracts":"0.1.6","@earendil-works/pi-ai":"^0.79.4"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.8.0","@types/node":"^22.0.0"},"_npmOperationalInternal":{"tmp":"tmp/adapters_0.1.3_1782112892442_0.2839161716247802","host":"s3://npm-registry-packages-npm-production"}},"0.1.4":{"name":"@dongkseo/adapters","version":"0.1.4","_id":"@dongkseo/adapters@0.1.4","maintainers":[{"name":"dongkseo","email":"ssddgg99@daum.net"}],"dist":{"shasum":"989a5d9fa5b03c58729584788d484273e84708be","tarball":"https://registry.npmjs.org/@dongkseo/adapters/-/adapters-0.1.4.tgz","fileCount":50,"integrity":"sha512-AajdBTg72+tqcqvzCKGLokBP9knEgz/KpG6IEKkcztSFshxyJF2UEQrTZfGR9sNK5Y91eSIxw4qpvXZ9JCXtcQ==","signatures":[{"sig":"MEUCIQCJopQp9zG9mpo4Z0WqaDC8yRcAO/0gTvroDk5EEQVoMAIgD1mKmYyyOqD2VpCo75lP3vgDwCeoUgRFev2BOj5IzQ0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":237561},"main":"./dist/index.js","type":"module","_from":"file:dongkseo-adapters-0.1.4.tgz","types":"./dist/index.d.ts","nexora":{"stability":"stable"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"scripts":{"test":"vitest run","build":"tsc","clean":"rm -rf dist .tsbuildinfo"},"_npmUser":{"name":"dongkseo","email":"ssddgg99@daum.net"},"_resolved":"/private/var/folders/f6/dfc3mm717vx9xjh0vbgqnddr0000gn/T/10ab75101ab3cc5a49e467c6cbefd6ae/dongkseo-adapters-0.1.4.tgz","_integrity":"sha512-AajdBTg72+tqcqvzCKGLokBP9knEgz/KpG6IEKkcztSFshxyJF2UEQrTZfGR9sNK5Y91eSIxw4qpvXZ9JCXtcQ==","_npmVersion":"11.12.1","description":"**Stability: stable**","directories":{},"_nodeVersion":"26.0.0","dependencies":{"@dongkseo/tools":"0.1.2","@dongkseo/contracts":"0.1.7","@earendil-works/pi-ai":"^0.79.4"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.8.0","@types/node":"^22.0.0"},"_npmOperationalInternal":{"tmp":"tmp/adapters_0.1.4_1782190657432_0.7915403578999443","host":"s3://npm-registry-packages-npm-production"}},"0.1.5":{"name":"@dongkseo/adapters","version":"0.1.5","_id":"@dongkseo/adapters@0.1.5","maintainers":[{"name":"dongkseo","email":"ssddgg99@daum.net"}],"dist":{"shasum":"2e386a8827efdeb76ec737170ca164ba32d4951d","tarball":"https://registry.npmjs.org/@dongkseo/adapters/-/adapters-0.1.5.tgz","fileCount":50,"integrity":"sha512-Q59S4hKTPZ+60+eNUh1p/twRd0sMbtEXkzAZo67YZ8Cz+iFc2fYTG1lig3T1TC/i1ja8gh5FDG00b4EUpYKD6A==","signatures":[{"sig":"MEUCIQC2c3hXQANWUgpVpy9sM8qvEcC5PuovoN+pkmNT2gK6hQIgbIUIqjGte6ptAdbhUx/SCzjqmpdvdIsLPG7krUE/Hjs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":237563},"main":"./dist/index.js","type":"module","_from":"file:dongkseo-adapters-0.1.5.tgz","types":"./dist/index.d.ts","nexora":{"stability":"stable"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"scripts":{"test":"vitest run","build":"tsc","clean":"rm -rf dist .tsbuildinfo"},"_npmUser":{"name":"dongkseo","email":"ssddgg99@daum.net"},"_resolved":"/private/var/folders/f6/dfc3mm717vx9xjh0vbgqnddr0000gn/T/e9f425c5f6e3af73cdde4f8f8eed0067/dongkseo-adapters-0.1.5.tgz","_integrity":"sha512-Q59S4hKTPZ+60+eNUh1p/twRd0sMbtEXkzAZo67YZ8Cz+iFc2fYTG1lig3T1TC/i1ja8gh5FDG00b4EUpYKD6A==","_npmVersion":"11.12.1","description":"**Stability: stable**","directories":{},"_nodeVersion":"26.0.0","dependencies":{"@dongkseo/tools":"^0.1.3","@dongkseo/contracts":"^0.1.8","@earendil-works/pi-ai":"^0.79.4"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.8.0","@types/node":"^22.0.0"},"_npmOperationalInternal":{"tmp":"tmp/adapters_0.1.5_1782200196414_0.5107978857587849","host":"s3://npm-registry-packages-npm-production"}},"0.1.6":{"name":"@dongkseo/adapters","version":"0.1.6","_id":"@dongkseo/adapters@0.1.6","maintainers":[{"name":"dongkseo","email":"ssddgg99@daum.net"}],"dist":{"shasum":"a84790eee4d368ca209e0430312064b9581cabf7","tarball":"https://registry.npmjs.org/@dongkseo/adapters/-/adapters-0.1.6.tgz","fileCount":50,"integrity":"sha512-QiKYo/f8yLgcJ7DQCUYt0dUV2+7cAYJLcYeGRvMD9Z7TLLo8BtyUV/KCjK0WjwncmEVPuW/6AMJ3QSnByHio9g==","signatures":[{"sig":"MEYCIQCCp4SlO1lVmGa2rLBJHX6HivBX+saX1N/8uhgmLIXoFwIhAKs+aNPv3+0KftCiBcRtGQFuKgi1FBoazCYGFZ7kLt+s","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":244862},"main":"./dist/index.js","type":"module","_from":"file:dongkseo-adapters-0.1.6.tgz","types":"./dist/index.d.ts","nexora":{"stability":"stable"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"scripts":{"test":"vitest run","build":"tsc","clean":"rm -rf dist .tsbuildinfo"},"_npmUser":{"name":"dongkseo","email":"ssddgg99@daum.net"},"_resolved":"/private/var/folders/lw/t8yfg__j2nxd25m53gt8840h0000gn/T/1e658f72949e37b8ff1c9a350e6ed560/dongkseo-adapters-0.1.6.tgz","_integrity":"sha512-QiKYo/f8yLgcJ7DQCUYt0dUV2+7cAYJLcYeGRvMD9Z7TLLo8BtyUV/KCjK0WjwncmEVPuW/6AMJ3QSnByHio9g==","_npmVersion":"11.16.0","description":"**Stability: stable** · `pnpm add @dongkseo/adapters`","directories":{},"_nodeVersion":"26.3.1","dependencies":{"@dongkseo/tools":"^0.1.5","@dongkseo/contracts":"^0.1.11","@earendil-works/pi-ai":"^0.79.4"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.8.0","@types/node":"^22.0.0"},"_npmOperationalInternal":{"tmp":"tmp/adapters_0.1.6_1782389360546_0.05442019201890802","host":"s3://npm-registry-packages-npm-production"}},"0.1.7":{"name":"@dongkseo/adapters","version":"0.1.7","_id":"@dongkseo/adapters@0.1.7","maintainers":[{"name":"dongkseo","email":"ssddgg99@daum.net"}],"dist":{"shasum":"fd853ec9e4af590a1f283cad804308892542aeb7","tarball":"https://registry.npmjs.org/@dongkseo/adapters/-/adapters-0.1.7.tgz","fileCount":50,"integrity":"sha512-oQnyIwUcfiJkq4RiUTdgtR/8VUO0FhVNx1WQDf+0t5Z8W7E9X1WqdML30LUo4uNbXZe+5A6ZrCCfWFw0liwurw==","signatures":[{"sig":"MEYCIQDdfVwhSje3GWz3VHEssJNicuEtN8EZOtHX/mEcaWAVTAIhANKCi0WtBb1nWfSA8x6YClwH6rXmcwa5GuYpikTTLNvq","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":244920},"main":"./dist/index.js","type":"module","_from":"file:dongkseo-adapters-0.1.7.tgz","types":"./dist/index.d.ts","nexora":{"stability":"stable"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"scripts":{"test":"vitest run","build":"tsc","clean":"rm -rf dist .tsbuildinfo"},"_npmUser":{"name":"dongkseo","email":"ssddgg99@daum.net"},"_resolved":"/private/var/folders/lw/t8yfg__j2nxd25m53gt8840h0000gn/T/dd38099f8d6181490cb6c64a02d4cc4a/dongkseo-adapters-0.1.7.tgz","_integrity":"sha512-oQnyIwUcfiJkq4RiUTdgtR/8VUO0FhVNx1WQDf+0t5Z8W7E9X1WqdML30LUo4uNbXZe+5A6ZrCCfWFw0liwurw==","_npmVersion":"11.16.0","description":"**Stability: stable** · `pnpm add @dongkseo/adapters`","directories":{},"_nodeVersion":"26.3.1","dependencies":{"@dongkseo/tools":"^0.2.8","@dongkseo/contracts":"^0.1.21","@earendil-works/pi-ai":"^0.80.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^6.0.3","@types/node":"^26.0.1"},"_npmOperationalInternal":{"tmp":"tmp/adapters_0.1.7_1782589492786_0.29562669763033056","host":"s3://npm-registry-packages-npm-production"}},"0.1.8":{"name":"@dongkseo/adapters","version":"0.1.8","_id":"@dongkseo/adapters@0.1.8","maintainers":[{"name":"dongkseo","email":"ssddgg99@daum.net"}],"dist":{"shasum":"eddf2031346fe423b723fc1d8e1756f164b5c0fe","tarball":"https://registry.npmjs.org/@dongkseo/adapters/-/adapters-0.1.8.tgz","fileCount":50,"integrity":"sha512-r5cm3ooFsWBXcdONvet0ULIL64JNUue4IHPHnl6tW/E8Rqf59KsyuVrA862lusYxciStQMd+7HnzB0/FoMBrZA==","signatures":[{"sig":"MEQCICgzgMRMG4P3s9PliBuxu9HQSQuYxsubHQA3Ip83p4hRAiAmL27H6HoUxpP3ZQRcGfTgDvGcQYJMpMfLj1AcJXxK+w==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":244921},"main":"./dist/index.js","type":"module","_from":"file:dongkseo-adapters-0.1.8.tgz","types":"./dist/index.d.ts","nexora":{"stability":"stable"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"scripts":{"test":"vitest run","build":"tsc","clean":"rm -rf dist .tsbuildinfo"},"_npmUser":{"name":"dongkseo","email":"ssddgg99@daum.net"},"_resolved":"/private/var/folders/f6/dfc3mm717vx9xjh0vbgqnddr0000gn/T/83cdfa8643cc76f4b9bb5644fea4db24/dongkseo-adapters-0.1.8.tgz","_integrity":"sha512-r5cm3ooFsWBXcdONvet0ULIL64JNUue4IHPHnl6tW/E8Rqf59KsyuVrA862lusYxciStQMd+7HnzB0/FoMBrZA==","_npmVersion":"11.16.0","description":"**Stability: stable** · `pnpm add @dongkseo/adapters`","directories":{},"_nodeVersion":"26.3.1","dependencies":{"@dongkseo/tools":"^0.2.19","@dongkseo/contracts":"^0.1.24","@earendil-works/pi-ai":"^0.80.3"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^6.0.3","@types/node":"^26.0.1"},"_npmOperationalInternal":{"tmp":"tmp/adapters_0.1.8_1782901345924_0.9751072990456962","host":"s3://npm-registry-packages-npm-production"}},"0.1.9":{"name":"@dongkseo/adapters","version":"0.1.9","type":"module","main":"./dist/index.js","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"dependencies":{"@earendil-works/pi-ai":"^0.83.0","@dongkseo/contracts":"^0.1.32","@dongkseo/tools":"^0.3.4"},"devDependencies":{"@types/node":"^26.1.2","typescript":"^7.0.2"},"nexora":{"stability":"stable"},"publishConfig":{"access":"public"},"scripts":{"build":"tsc","test":"vitest run","clean":"rm -rf dist .tsbuildinfo"},"_nodeVersion":"26.7.0","_id":"@dongkseo/adapters@0.1.9","dist":{"integrity":"sha512-mCpn5uC7G7Q1bx+l3F9aw/69uEyJj1msOSBrgfEvz76dMvj8mU6yulGKkRYQfOD2jMX0b13RkdthhfyyLRJUkg==","shasum":"b1b2c452e5d22b8c931c83b9a49823dfa9be1e2c","tarball":"https://registry.npmjs.org/@dongkseo/adapters/-/adapters-0.1.9.tgz","fileCount":50,"unpackedSize":249104,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQDjC2Dxy4bX5GpK1367yX0oBN1/Z7tyipIMPwlxnzNgPQIhAIn2yaVL9Zc2Vntv9KNJea9cVVBqx9mvArqA6qhlPm5P"}]},"_npmUser":{"name":"dongkseo","email":"ssddgg99@daum.net"},"directories":{},"maintainers":[{"name":"dongkseo","email":"ssddgg99@daum.net"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/adapters_0.1.9_1786622537078_0.3985512895629084"},"_hasShrinkwrap":false}},"time":{"created":"2026-06-17T03:55:54.612Z","modified":"2026-08-13T12:02:17.421Z","0.1.0":"2026-06-17T03:55:54.876Z","0.1.1":"2026-06-17T09:30:51.449Z","0.1.2":"2026-06-22T07:05:42.415Z","0.1.3":"2026-06-22T07:21:32.569Z","0.1.4":"2026-06-23T04:57:37.573Z","0.1.5":"2026-06-23T07:36:36.553Z","0.1.6":"2026-06-25T12:09:20.694Z","0.1.7":"2026-06-27T19:44:52.929Z","0.1.8":"2026-07-01T10:22:26.095Z","0.1.9":"2026-08-13T12:02:17.217Z"},"maintainers":[{"name":"dongkseo","email":"ssddgg99@daum.net"}],"readme":"# @dongkseo/adapters\n\n**Stability: stable** · `pnpm add @dongkseo/adapters`\n\n> 이 파일은 에이전트(사람·LLM)가 **소스를 열지 않고도** 이 패키지를 쓸 수 있게 하는 오리엔테이션 문서다.\n> 정확한 API 타입은 \"API 표면\" 섹션의 방법으로 `signatures`만 읽어라 — 본문을 베끼지 말 것.\n\n## 무엇인가 / 무엇이 아닌가\n\n외부 채널(HTTP·Discord·Slack·이슈 트래커)과 Nexora의 `MessageRouter` 사이를 잇는 **경계 어댑터** 패키지다.\n들어오는 채널 이벤트를 `InboundMessage`로 정규화해 라우터에 넣고, 라우터가 내는 `OutboundChunk`를\n다시 각 채널 형식으로 돌려보낸다. LLM 실행·라우팅 로직 자체는 담지 않는다.\n\n- ✅ 담는 것: 채널 어댑터(`HttpAdapter`, `DiscordAdapter`, `SlackAdapter`, `PaperclipAdapter`), Discord 보조 브리지(승인·리포트·리액션·봇 부트스트랩), 세션 키 빌더, 외부 LLM 제공자 API 키 회전 헬퍼(`resolveAnthropicApiKey`, `resolveCodexApiKey`)\n- ❌ 안 담는 것: 메시지 라우팅/에이전트 실행(그건 `core`/`fleet`), 타입 계약(`contracts`), 저장소 구현(`store-*`)\n\n의존 방향은 **adapters → contracts/core(라우터 타입)** 단방향. 또한 **SDK 비의존** 원칙: `discord.js`,\nSlack SDK 등은 dependency가 아니며 호출자가 자신의 client를 주입한다(버전 고정 자유).\n\n## 핵심 개념\n\n| 개념 | 무엇 | 대표 export |\n|------|------|-------------|\n| **HTTP 어댑터** | REST 엔드포인트로 메시지 수신/스트리밍 (node:http, Express 없음) | `HttpAdapter`, `HttpAdapterOptions` |\n| **Discord 어댑터** | Discord 메시지 ↔ 라우터 (client 주입형) | `DiscordAdapter`, `renderDiscordArtifactMessages` |\n| **Discord 봇 부트** | 멀티에이전트 팀을 Discord 봇으로 한 번에 기동 | `startDiscordBot`, `RunningDiscordBot` |\n| **Discord 브리지** | 승인 버튼·리포트 게시·상태 리액션 보조 | `bridgeDiscordApprovals`, `bridgeDiscordReports`, `createStatusReactionController` |\n| **Slack 어댑터** | Slack 이벤트 ↔ 라우터 (client 주입형) | `SlackAdapter`, `SlackAdapterOptions` |\n| **Paperclip 어댑터** | 외부 이슈 트래커 폴링→메시지 | `PaperclipAdapter`, `PaperclipAdapterOptions` |\n| **세션 키** | 채널/스레드 → 안정적 세션 식별자 | `buildSessionKey`, `isSharedSession` |\n| **제공자 인증** | Claude/Codex API 키 자동 회전 | `resolveAnthropicApiKey`, `resolveCodexApiKey` |\n\n## 사용 레시피\n\nHTTP로 라우터를 노출한다 (`examples/auto-work-flow` 기준, 실제 동작 코드):\n\n```ts\nimport { HttpAdapter } from '@dongkseo/adapters';\n\nconst http = new HttpAdapter({\n  port: Number(process.env.PORT ?? 3000),\n  host: '0.0.0.0',\n  resolveTenant: () => 'default',\n});\n\nawait http.start(router);        // router: MessageRouter\nconsole.log(`listening on ${http.port()}`);\n// curl localhost:3000/messages -d '{\"content\":\"hello\"}'\n// 스트리밍은 /stream 엔드포인트 (SSE)\n```\n\nDiscord에 붙인다 (SDK 비의존 — discord.js Client를 직접 주입):\n\n```ts\nimport { Client, GatewayIntentBits } from 'discord.js';\nimport { DiscordAdapter } from '@dongkseo/adapters';\n\nconst client = new Client({\n  intents: [GatewayIntentBits.Guilds, GatewayIntentBits.GuildMessages, GatewayIntentBits.MessageContent],\n});\nawait client.login(process.env.DISCORD_TOKEN);\n\nconst adapter = new DiscordAdapter({ client, resolveTenant: (guildId) => guildId });\nawait adapter.start(router);\n```\n\n멀티에이전트 팀을 Discord 봇 하나로 기동한다:\n\n```ts\nimport { startDiscordBot } from '@dongkseo/adapters';\n\nconst bot = await startDiscordBot({\n  team,                              // 에이전트 팀(라우터 구성)\n  groupTopic: 'group.requested',     // @mention 없을 때 그룹 채팅 topic\n  requireMention: true,              // 서버 채널은 @mention 필요\n});\n// 종료 시: await bot.stop?.()  ── RunningDiscordBot 시그니처는 signatures로 확인\n```\n\nLLM 제공자 키를 회전한다 (구독 OAuth/JWT 만료 시 자동 갱신):\n\n```ts\nimport { resolveAnthropicApiKey, resolveCodexApiKey } from '@dongkseo/adapters';\n\nconst anthropicKey = await resolveAnthropicApiKey();   // Claude 구독 OAuth 토큰 회전\nconst codexKey = await resolveCodexApiKey();           // Codex JWT 만료 검사 후 회전\n```\n\n더 큰 예제: [`examples/auto-work-flow`](../../examples/auto-work-flow), [`examples/personal-assistant`](../../examples/personal-assistant), [`examples/helpdesk`](../../examples/helpdesk).\n\n## API 표면 (소스 안 열고 타입만)\n\n전체 export 목록(위치 맵):\n\n```bash\nctx_read packages/adapters/src/index.ts --mode map\n```\n\n개별 모듈 타입만 (본문 베끼지 말고 signatures로):\n\n```bash\nctx_read packages/adapters/src/http.ts            --mode signatures   # HttpAdapter, HttpAdapterOptions\nctx_read packages/adapters/src/discord.ts         --mode signatures   # DiscordAdapter\nctx_read packages/adapters/src/discord-bot.ts     --mode signatures   # startDiscordBot, RunningDiscordBot\nctx_read packages/adapters/src/slack.ts           --mode signatures   # SlackAdapter\nctx_read packages/adapters/src/paperclip.ts       --mode signatures   # PaperclipAdapter\nctx_read packages/adapters/src/session-key.ts     --mode signatures   # buildSessionKey, isSharedSession\nctx_read packages/adapters/src/anthropic-auth.ts  --mode signatures   # resolveAnthropicApiKey\nctx_read packages/adapters/src/codex-auth.ts      --mode signatures   # resolveCodexApiKey\n```\n\n## 유지보수 (drift 방지)\n\n- 이 README = **목적·개념·레시피** 만. 거의 안 변하므로 손으로 관리.\n- **API 정본은 각 소스의 TSDoc** (`/** … */`). API가 바뀌면 코드 옆 TSDoc만 고치면 됨 — 여기 표는 복제하지 말 것.\n- 새 모듈을 export하면 `index.ts` 상단 섹션 맵에 한 줄만 추가.\n\n## Tests\n\n```bash\ncd packages/adapters && pnpm test\n```\n\nPart of the [Nexora](../../README.md) multi-tenant agent framework. · [Package map](../../docs/architecture/packages-map.md)\n","readmeFilename":""}