구성된 Mind를 애플리케이션에 포함합니다. Minds CLI로 설정한 후 메시징, 이벤트 및 Builder API 라우트를 위한 타입이 지정된 Node 클라이언트입니다.
@animocabrands/minds-client-lib는 Mind를 애플리케이션이나 제품에 래핑하고 임베드하는 방법입니다. 대부분의 빌더는 Minds CLI 로 시작해 Mind를 나열하고, 세부 정보를 확인하고, Cognition을 모니터링하고, Circle을 관리하고, Bazaar를 탐색한 다음, 출시할 준비가 되면 여기로 넘어옵니다. 이 라이브러리는 동일한 Builder API 를 TypeScript 타입과 함께 제공합니다: 메시징, waitForReply, SSE 이벤트, 그리고 터미널에서 이미 실행해 본 계정 라우트까지.
패키지를 프로젝트의 서버 측에 추가하세요. UI, 브랜딩, 사용자 흐름은 그대로 유지됩니다. 클라이언트는 타입이 지정된 HTTP와 api.build로의 스트리밍을 처리합니다. 계정 설정 을 완료하고, CLI로 Mind를 검증한 다음 아래 예제를 연결하거나, 구성이 완료되면 코딩 에이전트에게 전달하세요.
설치
**Node 22+**가 필요합니다.
npm install @animocabrands/minds-client-lib
인증
계정 및 메시징 라우트에 대해 Builder API 키를 전달합니다. 라이브러리는 인증된 라우트(≥0.1.2)에서 X-Api-Key만 보냅니다. **X-Access-Key**는 더 이상 사용되지 않으므로 사용하지 마세요. 환경 변수 이름은 MINDS_BUILDER_API_KEY로 유지됩니다.
import { BUILDER_API_KEY_ENV, BUILDER_API_KEY_HEADER, createMindsClient,} from "@animocabrands/minds-client-lib";const builderApiKey = process.env[BUILDER_API_KEY_ENV];if (!builderApiKey) throw new Error(`${BUILDER_API_KEY_ENV} is not set`);const client = createMindsClient({ builderApiKey });
createMindsClient({})는 공개 Bazaar 카탈로그(client.bazaar.*)에만 유효합니다. 키를 제공하지 않은 경우 인증 메서드는 생성 시점이 아니라 호출 시점에 missing_builder_api_key 코드와 함께 MindsApiError를 발생시킵니다.
Minds 목록
listMinds()는 계정의 모든 Mind(mindId, name, model, species 및 관련 필드)를 반환합니다.
Mind별 Cognition 사용량과 잔액 조회는 CLI 명령과 동일하게 동작합니다. Mind는 대화할 때뿐만 아니라 추론하고, 도구를 실행하고, 자율 작업을 수행할 때도 Cognition을 소비합니다. 두 메서드 모두 mindId(UUID)와 선택적 AbortSignal을 받습니다.Cognition은 Mind의 추론, 도구 사용 및 자율 작업을 지원합니다. 시간에 따른 사용량 및 도구별 사용량을 보려면 getCognitionUsage 및 getCognitionUsageByTool을 사용하세요. 남은 Cognition 잔액을 보려면 getCognitionBalance를 사용하세요:
두 사용량 메서드는 서로 다른 간격 값을 허용합니다. getCognitionUsage는 1m, 5m, 15m, 1h, 1d, 1w, 1M을 허용하고, getCognitionUsageByTool은 hour, day, week, month만 허용합니다. 선택적 startTime과 endTime(ISO 날짜-시간)으로 두 메서드 모두 조회 기간을 제한할 수 있습니다.
Circle은 인간 협력자 이메일만 허용하며 빌더를 위한 Mind @hellominds.ai 주소는 허용하지 않습니다. 이 API를 통해 Mind 간 Circle 멤버십은 지원되지 않습니다. listCirclesForAccount()는 listMinds()를 호출한 다음 각 Mind에 대해 병렬로 getCircle()을 호출하는 편의 기능입니다. 핫 패스 대신 계정 전체 개요를 파악하는 데 사용하세요.
Bazaar 카탈로그
공개 Bazaar 카탈로그는 client.bazaar로 사용할 수 있으며 API 키가 필요하지 않습니다. ID 검색(skillId, appId)을 위해 Bazaar를 사용한 다음, 아래의 Mind 장착 메서드로 해당 ID를 장착하세요. 라우트 형태는 API 참조 의 Bazaar 및 Minds 태그에 있으며, CLI는 minds bazaar를 통해 동일한 카탈로그를 제공합니다.조회된 목록의 각 항목에는 플랫폼 전체에서 해당 항목을 장착한 Mind의 수를 나타내는 equippedCount가 포함될 수 있습니다. 이는 플랫폼 전체의 인기이며, Mind별 장착된 세트는 listEquippedSkills / listEquippedApps를 사용하세요.
getHistory는 인간과 Mind의 전체 대화 기록을 반환합니다. 행에는 senderType(1 = 인간, 0 = Mind)이 사용됩니다. 동일한 필드가 subscribeEvents / eventsIterator / waitForReply의 SSE 이벤트에도 나타납니다.sendMessage에는 alias 및 messageText가 필요합니다. 선택적 attachments는 아웃바운드 객체를 허용하며, fileName 및 mimeType이 포함된 공개 HTTPS url을 선호합니다:
await client.sendMessage({ alias: "main", messageText: "Summarize this PDF in one sentence.", attachments: [ { url: "https://www.w3.org/WAI/ER/tests/xhtml/testfiles/resources/pdf/dummy.pdf", fileName: "dummy.pdf", mimeType: "application/pdf", extension: "pdf", }, ],});
이미지 URL은 동일한 형태(mimeType: "image/png" 등)를 사용합니다. getHistory, waitForReply 및 SSE 이벤트에 대한 Mind 회신에는 다음과 같은 인바운드 아티팩트가 포함될 수 있습니다:
// One attachment on a Mind reply (PDF; artifact body truncated){ artifactId: "7388b65d-144a-49ff-a4dc-cb7c23ded982", slug: "whale_watchtower_skill_artifact_1_0_5", logicalType: "document", mimeType: "application/pdf", extension: "pdf", artifact: "JVBERi0xLjQK...",}
아웃바운드 전송은 인라인 페이로드에 content를 사용하고, 인바운드 회신은 동일한 역할에 artifact를 사용합니다. slug 및 logicalType은 선택적 문자열이며, 값을 고정 열거형이 아닌 힌트로 취급합니다. 필드 세부 정보는 API 참조 를 확인하세요.getLatestHistoryFingerprint는 최신 메시지의 지문을 반환합니다. 이를 getHistory에서 after로 전달하여 최신 행만 가져오거나, waitForReply 전에 afterFingerprint로 전달하여 전송 후 도착한 회신을 발견하세요.
for await (const event of client.eventsIterator({ alias: "main" })) { console.log(event.fingerprint, event.messageText);}
프로세스가 종료될 때 취소하려면 반복자 또는 구독 옵션에 signal을 전달하세요.
오류
실패한 HTTP 호출은 status, code, message가 포함된 MindsApiError를 발생시킵니다. builderApiKey 없이 인증 메서드를 호출하면 호출 시점에 missing_builder_api_key가 발생합니다. 401/403은 Builder API 키 누락 또는 폐기로 해석하세요. 429에는 재시도 안내가 포함될 수 있습니다.