npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

@bluedus/aiplug-sdk

v0.3.8

Published

AIPlug Enterprise AI Agent SDK - React & JavaScript

Downloads

2,547

Readme


Props 참조 (AgentChat)

| Prop | 타입 | 기본값 | 설명 | |------|------|--------|------| | baseUrl | string | 필수 | AIPlug Core 서버 URL | | publicKey | string | 필수 | 테넌트 Public Key | | tenantId | string | 필수 | 테넌트 ID | | agentId | string \| null | null | Agent ID (null이면 자동 선택) | | userId | string \| null | null | 사용자 식별자 (로그용) | | title | string | 'AI Agent' | 헤더 타이틀 | | placeholder | string | '메시지를 입력하세요...' | 입력창 placeholder | | welcomeMessage | string | — | 첫 안내 메시지 | | height | string | '560px' | 컴포넌트 높이 | | width | string | '400px' | 컴포넌트 너비 | | dark | boolean | false | 다크 테마 | | showSources | boolean | true | RAG 출처 표시 | | showToolCalls | boolean | true | Tool 실행 상태 표시 | | streaming | boolean | true | SSE 스트리밍 사용 여부 (false이면 V2 동기 방식) |

Props 참조 (StreamingChat)

| Prop | 타입 | 기본값 | 설명 | |------|------|--------|------| | config | AIPlugClientConfig | 필수 | { baseUrl, publicKey, tenantId, agentId?, userId? } | | components | BlockComponentOverrides | — | 블록 타입별 컴포넌트 오버라이드 | | placeholder | string | '메시지를 입력하세요' | 입력창 placeholder | | emptyHint | string | — | 메시지 없을 때 안내 문구 | | className | string | — | 루트 컨테이너 클래스 |


버전 이력

| 버전 | 변경 내용 | |------|-----------| | 0.3.7 | 대화 이력 limit수정 | 0.3.7 | 본문 URL 자동 링크 · 인용 스크롤 SDK 내장 · 자동 스크롤 훅 · 표시 불가 출처 제외 안내. (1) 벌거벗은 URL 자동 링크화renderMarkdownhttps?:// 로 시작하는 평문 URL을 새 탭 <a>로 변환(기존엔 raw 노출). 마크다운 링크([t](url)) 변환 뒤 처리하고 href="..." 속성 안 URL은 제외해 이중처리 방지. (2) 인용 클릭 스크롤을 BlockRenderer로 이관[n] 클릭 → 해당 참고자료로 스크롤+하이라이트 로직을 BlockRenderer 래퍼가 자체 처리(소비 앱/StreamingChat이 핸들러 안 달아도 됨). e.currentTarget 스코프 탐색으로 답변이 여러 개일 때 aiplug-ref-{n} id 중복으로 위 답변으로 튀던 버그 해결. StreamingChat의 중복 핸들러 제거. (3) 자동 스크롤 훅/컴포넌트 추가useAutoScroll(trigger, options) 훅 + AutoScrollArea 드롭인. messages.length 트리거로 새 메시지/응답 시작 시에만 최하단 이동(토큰마다 X), stickToBottom 옵션으로 유저가 위에서 읽는 중엔 낚아채지 않음. 헤드리스(hook) UI는 AutoScrollArea로 스크롤 컨테이너만 교체하면 됨. (4) 표시 불가 출처 제외 안내 — 정리본(LLM 요약)도 안전 표시명(metadata name/title 등)도 없어 화면에 못 띄우는 DB 출처는 참고목록에서 제외하고, 하단에 "표시할 수 없는 출처 N건은 제외되었습니다" 안내를 표시. references 이벤트에 excludedCount 추가 → ReferencesContentBlock으로 전달 → ReferenceList footer 렌더(표시할 항목이 하나도 없으면 안내도 안 뜸). 서버(core) 필요 — RAG references 조립 시 안전 표시명 폴백(도메인 무관 관용 키만) + 제외 카운트, references SSE 이벤트 excludedCount 필드. 변경 파일: utils/markdown.ts, stream/react/BlockRenderer.tsx, stream/react/StreamingChat.tsx, stream/react/blocks/ReferenceList.tsx, stream/react/useAutoScroll.ts, stream/react/AutoScrollArea.tsx, stream/react/index.ts, stream/core/reducer.ts, stream/core/types.ts, types/index.ts. | | 0.3.6 | 본문 인용 [n] 클릭 이동 + 마커 스타일 개선 · 참고목록 정리. (1) [n] 클릭 → 참고자료 스크롤 — 기존엔 인용 마커 [n]url이 있을 때만 외부 링크(새 탭)였던 것을, 항상 답변 하단 참고목록의 해당 출처로 스크롤 이동하도록 변경. renderMarkdownlinkifyCitations[n]을 페이지 내 앵커(#aiplug-ref-{n})로 변환하고, StreamingChat의 어시스턴트 버블이 클릭을 위임 처리해 scrollIntoView + 짧은 하이라이트를 준다. 같은 버블 내에서만 대상을 탐색해 답변이 여러 개일 때 id 충돌을 방지하며, url 없는 DB 출처도 이제 클릭 가능하다. (2) 인용 마커 스타일[n]을 본문색에 가까운 중립 회색 칩(얇은 테두리 강조)으로 렌더하고, --aiplug-cite-fg/-bg/-border CSS 변수로 앱 테마 오버라이드 가능. (3) 참고목록 정리sourceType 그룹 헤더("DB" 등)를 제거해 flat 리스트로 바꾸고, 각 항목에 id={aiplug-ref-{index}}를 부여(스크롤 타깃). url 있는 항목은 제목 ↗ 강조 링크(새 탭)로 표시한다. 서버 무관 · 프론트 전용 · 하위호환(references 없는 데이터는 기존과 동일 렌더). 변경 파일: utils/markdown.ts, stream/react/StreamingChat.tsx, stream/react/blocks/ReferenceList.tsx. | | 0.3.5 | core init message 추가 | 0.3.4 | 이력 출처 렌더 수정 | 0.3.3 | 대화 복원 시 참고자료(references) 표시 + 생성 이미지 제목/카드 UI. (1) references 복원 — 0.3.2까진 실시간 스트리밍에서만 보이던 RAG 참고자료가 과거 대화 복원 시엔 누락되던 것을, 서버가 인용된 출처를 메시지에 저장하고 복원 API로 반환하도록 개선. ConversationMessageItemreferences 필드 추가, loadConversation이 이를 UIMessage.references로 매핑 → AgentChat이 답변 하단에 출처 칩([n] 제목)으로 렌더한다. 저장·표시되는 references는 민감정보가 제거된 필터링본(인용된 출처만, DB 출처는 LLM 정리 요약)으로, 원본 검색 청크는 노출하지 않는다. (2) 생성 이미지 제목/카드 — 기존엔 생성 이미지가 캡션 없이 원본 크기로 노출되던 것을, ImageContentBlocktitle 필드를 추가하고 <figure>+<figcaption> 카드(최대 360px, 하단 제목 캡션)로 렌더. 제목은 마커의 title 속성(한글)을 우선 사용하고 없으면 altText(프롬프트)로 폴백한다. 서버(core) 0.3.3+ 필요AP_CONV_MESSAGEREFERENCE_ITEMS(jsonb) 컬럼 추가, POST /api/v1/conversations/messages 응답 MessageItemreferences 추가, <aiplug:generate-image> 마커에 title 속성 지원. 기존 동작 무변경(하위호환 — references/title 없는 구버전 데이터는 각각 미표시/폴백). | | 0.3.2 | 대화 복원 시 표/차트/이미지 블록 렌더링 + 마크다운 링크 지원. (1) 복원 메시지 구조화 블록 지원 — 0.3.1에선 과거 대화 복원 시 텍스트(content)만 렌더해 표·차트가 마크다운 raw로 노출되던 것을, 서버가 저장된 원문을 ContentBlock으로 재파싱해 blocks로 함께 반환하도록 개선. fetchConversationMessagesConversationMessageItemblocks 필드 추가, loadConversation이 이를 UIMessage.contents로 매핑 → 실시간 응답과 동일하게 ContentBlockRenderer가 표·차트를 렌더한다. (2) 마크다운 링크 렌더링renderMarkdown[텍스트](url)를 클릭 가능한 <a>(새 창)로 변환(기존엔 raw 노출). 인용 마커 [n] 변환보다 먼저 처리해 충돌 방지. (3) 빈 표 방지 — 데이터 행이 없는 표(헤더만 존재)는 렌더하지 않도록 TableBlock에 가드 추가(약한 모델이 헤더만 낸 빈 표가 덜렁 나오던 문제 해결). 서버(core) 0.3.2+ 필요POST /api/v1/conversations/messages 응답의 MessageItemblocks(assistant 메시지 재파싱 결과) 추가, content(raw)는 하위호환 유지. 기존 동작 무변경(하위호환). | | 0.3.1 | 대화 이력(사이드바) 지원 추가 — ChatGPT/Claude식 과거 대화 목록 + 클릭 복원. 브라우저 단위 식별자(config.userId = localStorage anon_id)를 서버 clientId로 저장해, 같은 브라우저의 과거 대화를 목록으로 조회하고 클릭 시 메시지를 복원한다. 신규 API: useConversations(config) 훅(대화 목록 + reload), useAIPlugChatloadConversation(conversationId) 추가(불러온 대화로 화면 복원 + 이후 send가 그 대화로 이어짐). core 함수 fetchConversations / fetchConversationMessages도 export. 서버(core) 0.3.1+ 필요AP_CONVERSATIONCLIENT_ID/LOGIN_USER_ID 컬럼 추가, POST /api/v1/conversations(목록)·POST /api/v1/conversations/messages(복원) 엔드포인트. 복원 메시지는 텍스트(content)만 — 표/차트 등 구조화 블록은 추후 지원. 기존 send 시그니처·동작 무변경(하위호환). | | 0.3.0 | 선택한 모델을 chat 요청에 반영 — 0.2.7에서 모델 목록 조회·선택 UI까지 구현됐으나 실제 /api/v3/chat 요청엔 반영되지 않던 것을 연결. send(text, modelId?) 시그니처 확장으로 선택 모델(selectedModel.modelId)을 요청 body의 llmModelId로 전달. ChatStreamOptions.modelId, ChatRequestBody.llmModelId 추가, StreamingChat이 입력바에 모델 셀렉트를 내장(useModels 연동). 라우팅 정책: 매 턴 변경 허용(대화 도중 모델 변경 시 그 턴부터 반영) + conversation 라우팅 핀 갱신(이후 턴 기본값으로 고정) + 유효하지 않은 modelId는 기존 라우팅 체인으로 자동 fallback. 서버(core) 0.3.0+ 필요ChatRequest.llmModelId 수신, ChatLlmTargetResolver가 tenant에 enabled 등록된 모델 범위에서만 resolve(cross-tenant/비활성 모델 차단), USER_SELECTED 라우팅 소스 추가. | | 0.2.7 | 모델 목록 조회 및 지정 호출 | 0.2.6 | 마크다운 렌더 정리 — (1) 표 셀 안 마크다운 렌더링: DefaultTable이 헤더/셀의 **굵게**·*이탤릭*·`코드`·~~취소선~~을 변환(기존엔 **한국** 처럼 raw 노출). 신규 renderInlineMarkdown export. (2) 인용블록(> …) 지원: 기존엔 >가 그대로 찍히던 것을 <blockquote>로 렌더. (3) 줄바꿈 정리: 구분선 ***/___ 인식, 블록 요소(제목/리스트/표/인용/hr) 직후 불필요한 <br/> 제거로 과한 간격 완화. (4) 제목 줄분리: 스트리밍 중 …제공되었습니다.# 🐟 제목처럼 앞 문장에 붙은 ATX 제목을 줄 분리해 제목으로 렌더(문장부호+#{1,6} 패턴만 → C#·#태그 오탐 방지). 표/차트 점진 렌더링(content_block 이벤트) 추가. 스트리밍 중 표가 하나 완성될 때마다 즉시 렌더 — 기존엔 done 후에야 모든 표가 한꺼번에 보였음. 신규 SSE 이벤트 content_block(완성된 구조화 블록 1개)을 parseSse/reducer가 처리해 순서대로 블록 추가. donemergeDoneBlocks가 서버 권위 블록으로 최종 교체(중복 없음). 서버(core) 0.2.6+ 필요 — core가 스트리밍 토큰에서 <aiplug:...> 마커·마크다운 표 구간을 분리해 완성 즉시 content_block으로 전송하고, 이모지(surrogate pair)가 토큰 경계로 쪼개져 ??로 깨지던 문제도 서버측에서 수정. | | 0.2.5 | MessageId 추가 parseSse.ts | 0.2.4 | 표 중복 렌더링 수정 · 피드백 활성화 안정화. done 완료 시 서버 contentBlocks를 본문 권위 소스로 사용하도록 reducer(mergeDoneBlocks) 재작성 — 스트리밍 중 누적된 raw 토큰(LLM이 낸 마크다운 표 원문 등)은 폐기하고, 스트림 전용 블록(REFERENCES/KEYWORDS)만 보존. 본문 마크다운 표 + 렌더된 표가 중복으로 보이던 문제 해결. 아울러 done.messageId → Message.messageId 매핑을 보정해 완료된 답변에 따봉 바가 항상 노출되도록 함. (서버측: render-table 마커 관용 파싱 + 마크다운 표 백스톱으로 약한 모델의 빈 표/마크다운 표도 보정.) | | 0.2.3 | StreamingChat 응답 피드백 내장 — 드롭인이 내부에서 FeedbackContext.Provider로 감싸고 어시스턴트 답변 하단에 FeedbackBar를 자동 노출(done으로 messageId가 온 완료 답변에 한함). 0.2.2에선 hook의 feedback API는 제공됐지만 StreamingChat에 연결돼 있지 않아 드롭인에선 따봉이 보이지 않던 문제 수정. 툴킷 형태(useAIPlugChat + 직접 Provider)는 기존과 동일. | | 0.2.2 | 응답·출처 피드백 추가 — 따봉(👍/👎)·코멘트. 응답 단위(FeedbackBar) + 출처 단위(ReferenceList 자동). FeedbackContext/useFeedback, hook feedback API, submitFeedback 함수(POST /api/v1/feedback). Message.messageId·done.messageId 추가(피드백 타겟). 계약: 변경마다 "현재 전체 상태" 전송, 둘 다 비면 평가 취소(삭제). Reference.title/url optional 화(내부 문서·파일명 미정 대응). | | 0.2.1 | exports 맵 누락 수정 — ./stream, ./stream/react 가 해결되지 않던 문제 패치. | | 0.2.0 | 블록 기반 스트리밍 챗 모듈 추가 (@bluedus/aiplug-sdk/stream). 함수(createChatStream)·툴킷(useAIPlugChat + BlockRenderer)·챗봇(StreamingChat) 3형태. REFERENCES/KEYWORDS ContentBlock, [n] 인용 마커→출처 링크, sourceType 그룹 참고목록, CSS 변수(--aiplug-*) 테마, components prop 블록 오버라이드. 기존 toolkit(AgentChat/useAIPlug/ChatSession) 무변경. | | 0.1.9 | 마크다운 렌더러 내장(외부 의존성 없음). systemStatus 파생 상태 추가. (상세 changelog 확인 필요) | | 0.1.8 | blocked SSE 이벤트에 source 필드(SYSTEM/POLICY/KANANA) 추가. (상세 changelog 확인 필요) | | 0.1.7 | Phase 진행 상태 표시 추가 — 스트리밍 중 Agent 탐색·RAG 검색·Tool 실행 등 처리 단계 실시간 표시. thinkingStep 상태 추가. onThinking 콜백 추가. | | 0.1.6 | SSE 스트리밍 추가/api/v3/chat 연동. 토큰 실시간 렌더링. isStreaming 상태, streaming 옵션 추가. streamMessage() API 추가. | | 0.1.5 | 서버 에러 메시지 반환 추가 | | 0.1.4 | 타입 에러 수정. | | 0.1.3 | Platform 내장 기능 추가 — 이미지 생성·차트·테이블 ContentBlock 자동 렌더링. AgentResponse.contents, UIMessage.contents 타입 추가. | | 0.1.2 | Confirm 흐름 추가 — PENDING_TOOL_CONFIRM, PENDING_ORCHESTRATION_CONFIRM, PENDING_CONSENT 자동 처리. /api/v2/chat 전환. confirmAction, agentAccepted 파라미터 지원. | | 0.1.1 | 버그 수정 | | 0.1.0 | 최초 릴리즈 |

배포 (GitLab CI)

# package.json version 0.3.3 로 올린 뒤
npm run build
git tag v0.3.7
git push origin v0.3.7

GitLab CI/CD Variables에 NPM_TOKEN 등록 필요.

배포 전 확인: package.jsonexports./stream, ./stream/react 매핑이 있고, npm run builddist/ 에 stream 모듈이 실제로 나오는지 확인. 호스트 앱은 배포 후 npm i @bluedus/[email protected] 로 업그레이드해야 표 중복 수정·피드백 활성화가 반영됩니다. 0.3.0+ StreamingChat은 입력바에 모델 선택 셀렉트를 자동 포함합니다(테넌트에 등록된 모델이 2개 이상일 때). 선택값은 chat 요청에 llmModelId로 전달되며, 별도 prop 설정은 필요 없습니다. 0.3.1+ 대화 이력(사이드바)은 툴킷 형태 전용입니다 — useConversations로 목록을 그리고, 클릭 시 useAIPlugChatloadConversation(conversationId)을 호출해 복원합니다. StreamingChat 드롭인에는 사이드바가 포함되지 않습니다(앱에서 직접 조립). 0.3.2+ 과거 대화 복원 시 표·차트·이미지가 실시간과 동일하게 렌더됩니다. 서버(core) 0.3.2+ 필수 — 복원 API가 blocks를 반환하지 않으면 표는 여전히 텍스트로만 보입니다(구버전 서버 하위호환: content fallback). 0.3.3+ 대화 복원 시 참고자료(references)가 표시되고, 생성 이미지가 제목 카드로 렌더됩니다. 서버(core) 0.3.3+ 필수 — 복원 API가 references를 반환하지 않으면 참고자료는 표시되지 않습니다(구버전 서버 하위호환: 미표시). 이미지 제목은 서버가 <aiplug:generate-image title="..."> 마커를 지원해야 채워지며, 미지원 시 프롬프트(altText)로 폴백합니다. 0.3.7+ 본문 평문 URL이 자동 링크되고, [n] 인용 클릭 스크롤이 SDK(BlockRenderer) 내장이라 앱에서 핸들러가 필요 없습니다. 자동 스크롤은 useAutoScroll/AutoScrollArea로 제공(헤드리스 UI는 스크롤 컨테이너만 교체). 표시 불가 출처 제외 안내는 서버(core)가 excludedCount를 내려줘야 뜹니다(구버전 서버 하위호환: 안내 미표시).


라이선스

UNLICENSED — ㈜블루더스 내부용