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

@hoptrendy/web-shell

v0.30.4

Published

HopCode Web Shell 是面向浏览器的 daemon 会话终端 UI,可以作为 React 组件嵌入到其他项目中。

Downloads

390

Readme

@hoptrendy/web-shell

HopCode Web Shell 是面向浏览器的 daemon 会话终端 UI,可以作为 React 组件嵌入到其他项目中。

环境要求

  • React:^18.0.0 || ^19.0.0
  • React DOM:^18.0.0 || ^19.0.0
  • @hoptrendy/webui>=0.0.1
  • @hoptrendy/sdk>=0.1.8
  • 浏览器环境需要能访问 HopCode daemon serve 的 HTTP 接口。

组件包会自动注入自身样式,样式已通过 CSS Modules 和组件作用域隔离; 接入方不需要额外引入全局 CSS。

安装

npm install @hoptrendy/web-shell

Peer dependencies 需要同时安装:

npm install react react-dom @hoptrendy/webui @hoptrendy/sdk

接入方式

WebShell 提供两种接入形态:

1. 独立接入(自带 Provider)

适合只需要嵌入一个终端视图的场景。组件内部自建 DaemonWorkspaceProvider + DaemonSessionProvider

import { WebShellWithProviders } from '@hoptrendy/web-shell';

export function HopCodePanel() {
  return (
    <WebShellWithProviders
      baseUrl="http://127.0.0.1:4170"
      token="your-bearer-token"
      initialSessionId="838e1811-9f84-4848-9915-d9a7f01ff5c6"
      onSessionIdChange={(sessionId) => {
        console.log('current session:', sessionId);
      }}
      theme="dark"
      language="zh-CN"
    />
  );
}

2. 共享 Provider 接入(纯消费者)

适合同一个 React 应用中多个视图共享同一个 daemon session 的场景(如 chat + terminal)。宿主自行提供 Provider,WebShell 只消费 hooks。

import {
  DaemonWorkspaceProvider,
  DaemonSessionProvider,
} from '@hoptrendy/webui/daemon-react-sdk';
import { WebShell } from '@hoptrendy/web-shell';

export function App() {
  return (
    <DaemonWorkspaceProvider baseUrl="http://127.0.0.1:4170" token="...">
      <DaemonSessionProvider initialSessionId="...">
        <ChatPanel />
        <WebShell theme="dark" language="zh-CN" />
      </DaemonSessionProvider>
    </DaemonWorkspaceProvider>
  );
}

注意:不要在已有 DaemonSessionProvider 下使用 WebShellWithProviders,否则会创建嵌套的重复 Provider。

Props

WebShellWithProviders

包含 WebShell 的所有 Props,加上 Provider 配置:

| 属性 | 类型 | 说明 | | ------------------ | -------- | ---------------------------------------------------- | | baseUrl | string | daemon API 地址,未传时使用 window.location.origin | | token | string | daemon API Bearer token | | initialSessionId | string | 初始要连接的 session id |

WebShell

| 属性 | 类型 | 说明 | | ------------------- | -------------------------------------- | --------------------------------- | | onSessionIdChange | (sessionId: string) => void | 当前 session id 变化时触发 | | theme | 'dark' \| 'light' | UI 主题,默认 dark | | onThemeChange | (theme: WebShellTheme) => void | /theme 命令切换主题后触发 | | language | 'en' \| 'zh-CN' \| 'zh' \| 'zh-cn' | UI 语言 | | onLanguageChange | (language: WebShellLanguage) => void | /language ui 切换 UI 语言后触发 |

架构说明

@hoptrendy/sdk/daemon         ← 协议层(SSE, REST, normalizer)
@hoptrendy/webui/daemon-react-sdk  ← React adapter(Provider, hooks, store)
@hoptrendy/web-shell          ← 终端 UI 组件
  • WebShell 必须在 DaemonWorkspaceProviderDaemonSessionProvider 之下使用。
  • WebShellWithProviders 是内置 Provider 的便捷 wrapper。
  • 同一个 React 树共享一个 DaemonSessionProvider 时只开一条 SSE。

已支持的斜杠命令

下面列出当前 web-shell 已支持的命令。支持方式分为两类:

  • 本地实现:web-shell 前端直接打开弹窗、调用 daemon REST API,或切换本地状态。
  • ACP 透传:web-shell 将命令发送给 daemon,由 daemon/ACP 执行。

| 命令 | 支持方式 | 说明 | | ---------------- | ------------------- | ----------------------------------------------------------------------------------------------------------------------- | | /help | 本地实现 | 打开帮助弹窗,支持键盘浏览命令和快捷键。 | | /theme | 本地实现 | 打开主题选择弹窗;支持 /theme light/theme dark。 | | /language | 本地实现 + ACP 透传 | /language ui <lang> 会切换 web-shell UI 语言并同步给 daemon;其他语言能力由 daemon 执行。包含 uioutput 子命令。 | | /model | 本地实现 + 部分透传 | 无参数打开模型弹窗;普通参数直接切换模型;/model --fast <model> 透传给 daemon。 | | /plan | 本地实现 | 切换到 plan approval mode,并可继续发送后续 prompt。 | | /approval-mode | 本地实现 | 打开审批模式弹窗或直接切换审批模式。 | | /mode | 本地实现 | web-shell 本地别名,用于切换审批模式。 | | /mcp | 本地实现 | 打开 MCP 管理弹窗。 | | /skills | 本地实现 + ACP 透传 | 无参数打开 skills 弹窗;带参数时透传给 daemon 执行。 | | /tools | 本地实现 | 打开 tools 弹窗,列表展示工具名称、启用状态和 description。 | | /memory | 本地实现 | 打开 memory 弹窗,支持 showrefreshadd useradd project 等分支。 | | /agents | 本地实现 | 打开 agents 弹窗,支持 managecreate usercreate project 等分支。 | | /copy | 本地实现 | 复制最后一条 assistant 输出;支持 code、语言名、LaTeX、inline LaTeX 等选择器。 | | /release | 本地实现 | 释放 live session 连接,不删除历史会话记录。 | | /clear | 本地实现 | 清空当前 web-shell transcript store。 | | /new | 本地实现 | 创建新的 daemon session。 | | /reset | 本地实现 | 与 /new 一样创建新的 daemon session。 | | /rename <name> | 本地实现 | 修改当前 daemon session 的展示名称。 | | /resume | 本地实现 | 无参数打开恢复会话弹窗;带 session id 时直接加载。 | | /status | ACP 透传 | daemon 支持,包含 paths 子命令。 | | /auth | ACP 透传 | 连接 LLM provider。 | | /bug | ACP 透传 | 提交错误报告。 | | /compress | ACP 透传 | 通过摘要替换来压缩上下文。 | | /context | ACP 透传 | 显示上下文窗口使用情况,包含 detail 子命令。 | | /diff | ACP 透传 | 显示工作区相对 HEAD 的变更统计。 | | /docs | ACP 透传 | 打开 HopCode 文档。 | | /doctor | ACP 透传 | 执行安装与环境诊断,包含 memory 子命令。 | | /export | ACP 透传 | 导出当前会话记录,包含 htmlmdjsonjsonl 子命令。 | | /goal | ACP 透传 | 设置目标,并持续工作直到条件满足。 | | /init | ACP 透传 | 分析项目并创建定制的 HOPCODE.md。 | | /stats | ACP 透传 | 显示统计信息,包含 modeltools 子命令。 | | /summary | ACP 透传 | 生成当前会话摘要。 | | /tasks | ACP 透传 | 列出后台任务。 | | /insight | ACP 透传 | 查看 insight 相关信息。 |