본문으로 건너뛰기
LVIS AI

Plugin · Agent Hub (host UI)

Agent Hub Sidebar — 업무 보드 + 43개 도구

v0.8.1. 호스트 사이드바에 ‘업무 보드’ 패널을 띄우는 host UI 플러그인. plugin.json ui[] 선언 한 줄로 슬롯 등록 — runtime register API 없음. Agent Hub 서버 (agent-hub.lvisai.xyz) 와 polling 으로 통신.

v0.8.1
id: agent-hub
ui slot: sidebar
5min polling
My Work — 개인 업무 보드
Team Board — 팀 단위 업무 카드
// plugin.json:146-165
"ui": [{
  "id": "agent-hub-panel",
  "slot": "sidebar",
  "kind": "embedded-module",
  "displayName": "업무 보드",
  "title": "Agent Hub 업무 보드",
  "entry": "dist/ui/work-board-panel.js",
  "exportName": "mount",
  "window": {
    "defaultMode": "detached",
    "width": 980, "height": 980,
    "minWidth": 480, "minHeight": 560,
    "resizable": true
  }
}]

호스트는 manifest 의 ui[] 를 읽어 dist/ui/work-board-panel.js 를 import 하고 export const mount = … 를 호출합니다 (src/ui/work-board-panel.tsx:624). 별도 registerUi() 호출 없음.

두 보드

  • My Worksrc/ui/components/MyWorkView.tsx. 본인 카드 + 메뉴 토글로 빠른 전환.
  • Team Boardsrc/ui/components/TeamBoardView.tsx. 팀 단위, 카드 “집어오기” 가능.
  • 둘 사이의 토글은 AppBar pill (cards/MyBoardCard.tsx, cards/TeamBoardListCard.tsx).

동기화 — idle push 아니라 polling

  • 인박스 poller: setInterval(…, cfg.inboxPollIntervalMs), 기본 300_000 ms (5분) (src/hostPlugin.ts:206-227, default plugin.json:199).
  • 주간 리포트 cron-check: 1시간 간격 (setInterval(…, 60 * 60_000)).
  • Hub endpoint base: https://agent-hub.lvisai.xyz (plugin.json:174). 요청은 /api/v1/* (work-logs, work-items, notifications, messages, approval-requests, team-channels, me/feed, reports).
  • idle threshold / idle push 없음. 클라이언트는 polling + idempotency key 기반.

제공 도구 — 43개 (agent_hub_*)

plugin.json:42-83 에 등록. cross-plugin pluginAccess 로 ms-graph (calendar/email/auth) + meeting (meeting_sessions) 사용. agentApproval 스코프: agent_file_share, agent_task_delegate, agent_external_api_call.

이벤트

  • Subscribed: 없음 — agent-hub 는 host bus 구독 대신 polling pull. (work-assistant 가 agent-hub 의 emit 을 구독.)
  • Emitted (17): agent_hub.work_log.{posted, updated, deleted, pending_approval}, agent_hub.work_item.{created, updated, completed, reopened, transitioned, deleted, due_soon}, agent_hub.team_feed.received, agent_hub.weekly_report.generated, agent_hub.notification.{received, surfaced}, agent-hub.auth.changed, agent_hub.briefing.generated, agent_hub.approval.bridged.
스토리지 — 토큰 캐시만
플러그인은 SQL/DB 없이 OS 암호화 토큰 캐시만 디스크에 (src/auth/token-store.ts:31). 모든 비즈니스 데이터는 서버에. runtime state (cachedToken, cachedHomeTeamCode, inboxState, subscribeState) 는 메모리만 (hostPlugin.ts:185-195).