{"_id":"@dongkseo/registry","_rev":"5-14f16a03d54ec98434ecaaaa1cfec18f","name":"@dongkseo/registry","dist-tags":{"latest":"0.1.4"},"versions":{"0.1.0":{"name":"@dongkseo/registry","version":"0.1.0","_id":"@dongkseo/registry@0.1.0","maintainers":[{"name":"dongkseo","email":"ssddgg99@daum.net"}],"dist":{"shasum":"9e0a99101e11edcc67a1c81a7e3e0ca2c0e4e404","tarball":"https://registry.npmjs.org/@dongkseo/registry/-/registry-0.1.0.tgz","fileCount":6,"integrity":"sha512-n9ce2rTjO9msQSU4FvKEwcgPdAefULkUNFfQ2PV59MCm/NIBjIpUP+sPCLrrvjVoiQV3AgoMQOnpPtdQuWFQCQ==","signatures":[{"sig":"MEUCIEk99aCI9/JR3IqP9rsdzU1+Qb03DRRY8RzU+Y40qNW1AiEAhZq/zYLqo0CoSuNUVCY/KJhm9EGFVaksxiKgVeGGooA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4639},"main":"./dist/index.js","type":"module","_from":"file:dongkseo-registry-0.1.0.tgz","types":"./dist/index.d.ts","nexora":{"stability":"advanced"},"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/821cbc1f5786b12bbd534a50bb655f96/dongkseo-registry-0.1.0.tgz","_integrity":"sha512-n9ce2rTjO9msQSU4FvKEwcgPdAefULkUNFfQ2PV59MCm/NIBjIpUP+sPCLrrvjVoiQV3AgoMQOnpPtdQuWFQCQ==","_npmVersion":"11.12.1","description":"**Stability: stable**","directories":{},"_nodeVersion":"26.0.0","dependencies":{"@dongkseo/contracts":"0.1.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.8.0","@types/node":"^22.0.0"},"_npmOperationalInternal":{"tmp":"tmp/registry_0.1.0_1781668551027_0.516569014564261","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"@dongkseo/registry","version":"0.1.1","_id":"@dongkseo/registry@0.1.1","maintainers":[{"name":"dongkseo","email":"ssddgg99@daum.net"}],"dist":{"shasum":"c468406952a8d4673086bc6d948c531f4aece035","tarball":"https://registry.npmjs.org/@dongkseo/registry/-/registry-0.1.1.tgz","fileCount":14,"integrity":"sha512-wCoskPYvVD/wxiqHjQMfCqsRytqwBiNDD2mMS/mZQUAo9pqNkMVUs3lycawnoDoI/VZ5SNU2MuzMVzolxIJmmA==","signatures":[{"sig":"MEUCIQDL62N4kgHLvhOJGIT7/9LWbvPoJRF2oegzx/nf36HP+wIgbFZuQHWKtUuzV3BZhaBbQlCZEL1jlUunImSG84dEkoA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":20551},"main":"./dist/index.js","type":"module","_from":"file:dongkseo-registry-0.1.1.tgz","types":"./dist/index.d.ts","nexora":{"stability":"advanced"},"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/9a221caadc942ac3f887a5cd83006eef/dongkseo-registry-0.1.1.tgz","_integrity":"sha512-wCoskPYvVD/wxiqHjQMfCqsRytqwBiNDD2mMS/mZQUAo9pqNkMVUs3lycawnoDoI/VZ5SNU2MuzMVzolxIJmmA==","_npmVersion":"11.12.1","description":"**Stability: stable**","directories":{},"_nodeVersion":"26.0.0","dependencies":{"@dongkseo/contracts":"0.1.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.8.0","@types/node":"^22.0.0"},"_npmOperationalInternal":{"tmp":"tmp/registry_0.1.1_1781688649445_0.18255029901717013","host":"s3://npm-registry-packages-npm-production"}},"0.1.2":{"name":"@dongkseo/registry","version":"0.1.2","_id":"@dongkseo/registry@0.1.2","maintainers":[{"name":"dongkseo","email":"ssddgg99@daum.net"}],"dist":{"shasum":"9012ab79fa8fd4517fa5e90fef7258b9995cfa0a","tarball":"https://registry.npmjs.org/@dongkseo/registry/-/registry-0.1.2.tgz","fileCount":14,"integrity":"sha512-2aMHERWjNDdkFijlo7ObkU+TOdkM0rgMtDyTseEagwCs2DK253GaYp1EX5q8sNyl6Xv5mdFPMyUBRVkUMAET1Q==","signatures":[{"sig":"MEUCIQD2J1xUJ9XMYugaj0ystA9BHYIOFah01h2xUz+qrcRSKAIgW0vxGEKMrKJSmJz7g0GgwfibIMOc6DknZra1V+ZWVFs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":20552},"main":"./dist/index.js","type":"module","_from":"file:dongkseo-registry-0.1.2.tgz","types":"./dist/index.d.ts","nexora":{"stability":"advanced"},"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/2ea0c85456b53018f99939796010e4f4/dongkseo-registry-0.1.2.tgz","_integrity":"sha512-2aMHERWjNDdkFijlo7ObkU+TOdkM0rgMtDyTseEagwCs2DK253GaYp1EX5q8sNyl6Xv5mdFPMyUBRVkUMAET1Q==","_npmVersion":"11.12.1","description":"**Stability: stable**","directories":{},"_nodeVersion":"26.0.0","dependencies":{"@dongkseo/contracts":"^0.1.8"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.8.0","@types/node":"^22.0.0"},"_npmOperationalInternal":{"tmp":"tmp/registry_0.1.2_1782200190916_0.22514275344784673","host":"s3://npm-registry-packages-npm-production"}},"0.1.3":{"name":"@dongkseo/registry","version":"0.1.3","_id":"@dongkseo/registry@0.1.3","maintainers":[{"name":"dongkseo","email":"ssddgg99@daum.net"}],"dist":{"shasum":"28d50e9264a83cc9174ee596a45b88822abd213a","tarball":"https://registry.npmjs.org/@dongkseo/registry/-/registry-0.1.3.tgz","fileCount":22,"integrity":"sha512-oc1ZamhqeDahhnJmBwaLey7SMkPSztud0rKd8e5x/r8B+oVOdLtZ2qoyCgtcxDGAe4CEnwqdWPULbXVrC11WCA==","signatures":[{"sig":"MEUCIHzH/CBLUyrviIgcL8h6KSoStMpy8MmoTCR+x1k9Wao+AiEAynI5v7MFqdF70h9fFdUjIYzzp1gg+TNXq7M09yzk58w=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":44373},"main":"./dist/index.js","type":"module","_from":"file:dongkseo-registry-0.1.3.tgz","types":"./dist/index.d.ts","nexora":{"stability":"advanced"},"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/e960c2e5e167bb3be6576363095bd259/dongkseo-registry-0.1.3.tgz","_integrity":"sha512-oc1ZamhqeDahhnJmBwaLey7SMkPSztud0rKd8e5x/r8B+oVOdLtZ2qoyCgtcxDGAe4CEnwqdWPULbXVrC11WCA==","_npmVersion":"11.16.0","description":"**Stability: stable**","directories":{},"_nodeVersion":"26.3.1","dependencies":{"@dongkseo/contracts":"^0.1.11"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.8.0","@types/node":"^22.0.0"},"peerDependencies":{"ioredis":"^5.0.0"},"peerDependenciesMeta":{"ioredis":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/registry_0.1.3_1782389357173_0.8257999253519723","host":"s3://npm-registry-packages-npm-production"}},"0.1.4":{"name":"@dongkseo/registry","version":"0.1.4","type":"module","main":"./dist/index.js","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"dependencies":{"@dongkseo/contracts":"^0.1.32"},"peerDependencies":{"ioredis":"^5.0.0"},"peerDependenciesMeta":{"ioredis":{"optional":true}},"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/registry@0.1.4","dist":{"integrity":"sha512-SjSvey6TXNAdYJhJfEB/gx72DAbV94SKsWR9NQaCwNT2l2MK3JKjp3QU+Yg8evzfdw6nUGZvY0q9bgyxR6yITw==","shasum":"6d6b0b8b82fad952c84191fadbfe478f03518491","tarball":"https://registry.npmjs.org/@dongkseo/registry/-/registry-0.1.4.tgz","fileCount":22,"unpackedSize":47696,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQDUwGLR154x1SDyvZcVMawl1fNTEBQdGQ7vX64B4a88zQIgWpdvCxM0mevu8t15AmaStVCwdndmWEN2oFZUA3IZUvU="}]},"_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/registry_0.1.4_1786622535168_0.029745216557077958"},"_hasShrinkwrap":false}},"time":{"created":"2026-06-17T03:55:50.868Z","modified":"2026-08-13T12:02:15.524Z","0.1.0":"2026-06-17T03:55:51.163Z","0.1.1":"2026-06-17T09:30:49.571Z","0.1.2":"2026-06-23T07:36:31.033Z","0.1.3":"2026-06-25T12:09:17.412Z","0.1.4":"2026-08-13T12:02:15.314Z"},"maintainers":[{"name":"dongkseo","email":"ssddgg99@daum.net"}],"readme":"# @dongkseo/registry\n\n**Stability: stable** · `pnpm add @dongkseo/registry`\n\n> 이 파일은 에이전트(사람·LLM)가 소스를 열지 않고도 이 패키지를 쓸 수 있게 하는 오리엔테이션 문서다.\n> 정확한 API 타입은 \"API 표면\"의 방법으로 `signatures`만 읽어라 — 본문을 베끼지 말 것.\n\n## 무엇인가 / 무엇이 아닌가\n\n에이전트 카드(AgentCard)의 **레지스트리**다. 이름·capability·구독 토픽으로 에이전트를 등록·조회한다.\n\n- ✅ 담는 것: AgentRegistry 구현(인메모리 `InMemoryAgentRegistry` + 분산 `RedisAgentRegistry`), 설정→구현 팩토리(`createAgentRegistry`), capability 라우팅 레지스트리(`createCapabilityRegistry`, `checkInputContract`)\n- ❌ 안 담는 것: AgentCard 타입 정의(→ `@dongkseo/contracts`), 라우팅/게이트웨이(→ `@dongkseo/gateway`), capability 매칭 기반 워커 dispatch(→ `@dongkseo/fleet`)\n\n의존 방향: **registry → contracts** 단방향. `@dongkseo/gateway`에는 registry로 만든 resolver를 주입할 수 있지만, gateway가 registry를 직접 import하지는 않는다.\n\n## 핵심 개념\n\n| 개념 | 무엇 | 대표 export |\n| --- | --- | --- |\n| **AgentRegistry (인메모리)** | 이름/capability/구독 토픽으로 AgentCard를 등록·조회하는 인메모리 저장소 (dev/단일 프로세스) | `InMemoryAgentRegistry` |\n| **AgentRegistry (Redis)** | 같은 `AgentRegistry` 계약의 Redis 백엔드 구현 (분산/프로덕션) | `RedisAgentRegistry` |\n| **팩토리** | 설정을 받아 인메모리/Redis 구현을 골라 조립 | `createAgentRegistry` |\n| **Capability 레지스트리** | capability→전략 라우팅 + 입력 계약 검증 | `createCapabilityRegistry`, `checkInputContract` |\n\n`InMemoryAgentRegistry`/`RedisAgentRegistry` 메서드: `register(card)`, `unregister(name)`, `get(name)`, `list()`, `findByCapability(capability)`, `findBySubscription(topic)`.\n\n## 사용 레시피\n\n```ts\nimport { InMemoryAgentRegistry } from '@dongkseo/registry';\nimport type { AgentCard } from '@dongkseo/contracts';\n\nconst registry = new InMemoryAgentRegistry();\nawait registry.register(card);                      // AgentCard 등록\n\nconst coder = await registry.get('coder');          // 이름으로 조회 (없으면 null)\nconst writers = await registry.findByCapability('write');   // capability로 필터\nconst subs = await registry.findBySubscription('agent.task'); // 토픽 구독자\nconst all = await registry.list();\n```\n\n## API 표면 (소스 안 열고 타입만)\n\n```\nctx_read(path=\"platform/registry/src/index.ts\",              mode=\"map\")          # 전체 export\nctx_read(path=\"platform/registry/src/redis.ts\",              mode=\"signatures\")   # RedisAgentRegistry\nctx_read(path=\"platform/registry/src/factory.ts\",            mode=\"signatures\")   # createAgentRegistry\nctx_read(path=\"platform/registry/src/capability-registry.ts\", mode=\"signatures\")  # createCapabilityRegistry\n```\n`AgentCard`·`AgentRegistry` 계약 타입은 `ctx_read(path=\"packages/contracts/src/index.ts\", mode=\"map\")`.\n\n## 유지보수 (drift 방지)\n\n- 이 README = 목적·개념·레시피만. API 정본은 소스 TSDoc.\n- 새 export가 생기면 `src/index.ts` 상단/이 표에 한 줄만 추가.\n\n## Tests\n\n```bash\ncd platform/registry && pnpm test\n```\n\nPart of the [Nexora](../../README.md) multi-tenant agent framework. · [Package map](../../docs/architecture/packages-map.md)\n","readmeFilename":""}