Part of the node-message-broker build-out (Track B, Hub Plan 013 Phase 4). See .agents/plans/001-message-broker.md (local working doc).
Goal: resolve analysis participants and their node public keys / client_ids via server-core.
Steps
- Add dep
@privateaim/core-http-kit; add a CoreClientModule mirroring the messenger-client wiring (new Client({ baseURL: config.coreURL }) + the same client-credentials auth hook).
- Implement
IParticipantResolver (adapters/core/participant-resolver.ts): resolve(analysisId) / resolveSelf(analysisId). Map nodeId ↔ client_id; surface each participant's node public key (GET /nodes?filter[client_id]=…, node.public_key). Cacheable; keep off the Hub hot path.
Depends on: none. Unblocks: S5, S6.
Acceptance: resolver returns AnalysisParticipant[] (with publicKey) from a fake core client; resolveSelf returns this node's entry; unknown analysis → empty/undefined.
Part of the node-message-broker build-out (Track B, Hub Plan 013 Phase 4). See .agents/plans/001-message-broker.md (local working doc).
Goal: resolve analysis participants and their node public keys / client_ids via server-core.
Steps
@privateaim/core-http-kit; add aCoreClientModulemirroring the messenger-client wiring (new Client({ baseURL: config.coreURL })+ the same client-credentials auth hook).IParticipantResolver(adapters/core/participant-resolver.ts):resolve(analysisId)/resolveSelf(analysisId). MapnodeId ↔ client_id; surface each participant's node public key (GET /nodes?filter[client_id]=…,node.public_key). Cacheable; keep off the Hub hot path.Depends on: none. Unblocks: S5, S6.
Acceptance: resolver returns
AnalysisParticipant[](with publicKey) from a fake core client;resolveSelfreturns this node's entry; unknown analysis → empty/undefined.