包与安装

这一页列出 SlexKit v0/beta 的 npm 包、安装方式和发布检查。

包映射

slexkit (root package)
 ├── runtime entry
 ├── Svelte component registrations
 ├── ToolHost
 ├── default styles
 └── secure iframe runner

 @slexkit/runtime            re-exports slexkit/runtime
 @slexkit/components-svelte  re-exports slexkit/components-svelte
 @slexkit/theme-shadcn       CSS only
 @slexkit/streamdown         React/Streamdown renderer
 @slexkit/assistant-ui       assistant-ui Streamdown text wrapper
 @slexkit/tiptap             framework-free Tiptap NodeView adapter
 @slexkit/mcp                read-only MCP server for AI agents

@slexkit/runtime@slexkit/components-svelte 是实际发布的 npm 包,但代码封装在根包之上,不是独立实现包。安装它们仍然需要安装 slexkit@slexkit/theme-shadcn 只包含 CSS,没有 runtime implementation。

slexkit root

主要实现包。包含 runtime engine、官方 Svelte components、ToolHost 和 styles。

npm install slexkit
import { mount, disposeNamespace, boot } from "slexkit";
import "slexkit/style.css";

slexkit/dist/style.css 是同一份发布 CSS 的兼容 alias;不要和 slexkit/style.css 同时导入。

版本 helper 从 root 和 runtime entries 都导出:

import { SLEXKIT_VERSION, SLEX_PROTOCOL_VERSION, getSlexKitInfo } from "slexkit";

根包也提供 slex CLI:

slex copy-runtime public/slexkit.runtime.js
slex validate ./artifact.slex --mode secure
slex validate --standard

slex validate --standard 会用随包发布的 validator 运行内置 Slex conformance fixtures。CI 或 agent 消费时使用 --json

@slexkit/runtime

无组件 runtime entry,不会自动注册官方 Svelte components。

npm install slexkit @slexkit/runtime
import { mount, register, createSecureRuntime } from "@slexkit/runtime";

当宿主要注册自己的组件集,而不是使用 bundled Svelte components 时使用。

@slexkit/components-svelte

Side-effect import,用于把所有官方 Svelte components 注册到 runtime registry。

npm install slexkit @slexkit/runtime @slexkit/components-svelte
import { mount } from "@slexkit/runtime";
import "@slexkit/components-svelte";

公开组件规格覆盖 action (1)、component (1)、content (6)、data (1)、disclosure (2)、display (3)、feedback (2)、input (6)、layout (4)、navigation (1)、tooling (3)。

@slexkit/theme-shadcn

CSS theme bundle,兼容 shadcn/ui tokens。

npm install @slexkit/theme-shadcn
import "@slexkit/theme-shadcn/style.css";

@slexkit/streamdown

React/Streamdown custom renderer,用于 Markdown-hosted Slex fences。

npm install slexkit @slexkit/theme-shadcn @slexkit/streamdown streamdown react react-dom
import { Streamdown } from "streamdown";
import { slexkitRenderer } from "@slexkit/streamdown";
import "@slexkit/theme-shadcn/style.css";
import "@slexkit/streamdown/style.css";

export function Message({ markdown }: { markdown: string }) {
  return (
    <Streamdown plugins={{ renderers: [slexkitRenderer] }}>
      {markdown}
    </Streamdown>
  );
}

它只处理 slex fences,并支持 trusted 与 secure runtime modes。

@slexkit/assistant-ui

assistant-ui message text wrapper,用于把 @assistant-ui/react-streamdown 中的 slex language block 替换为 SlexKit artifact。thread、message、composer、runtime 和 tool UI 仍由 assistant-ui 处理。

npm install slexkit @slexkit/theme-shadcn @slexkit/streamdown @slexkit/assistant-ui @assistant-ui/react @assistant-ui/react-streamdown streamdown react react-dom
import { MessagePrimitive } from "@assistant-ui/react";
import { SlexKitAssistantStreamdownText } from "@slexkit/assistant-ui";
import "@slexkit/theme-shadcn/style.css";
import "@slexkit/assistant-ui/style.css";

export function AssistantMessage() {
  return (
    <MessagePrimitive.Parts>
      {({ part }) =>
        part.type === "text" ? (
          <SlexKitAssistantStreamdownText
            artifactId="message-1"
            secureFrame={{ runtimeUrl: "/slexkit.runtime.js" }}
          />
        ) : null
      }
    </MessagePrimitive.Parts>
  );
}

未显式设置时使用 secure runtime。assistant-ui tool calls 和 ToolHost 仍走各自的接入层。

@slexkit/tiptap

Tiptap extension,用于把显式 slex code block 渲染成 SlexKit preview,同时保留普通 fenced code block 的 Markdown 导入/导出行为。

npm install slexkit @slexkit/theme-shadcn @slexkit/tiptap @tiptap/core @tiptap/pm @tiptap/starter-kit @tiptap/extension-code-block @tiptap/markdown
import StarterKit from "@tiptap/starter-kit";
import { createSlexKitTiptapExtension } from "@slexkit/tiptap";
import "@slexkit/theme-shadcn/style.css";
import "@slexkit/tiptap/style.css";

const extensions = [
  StarterKit.configure({ codeBlock: false }),
  createSlexKitTiptapExtension({ artifactId: "doc-1" })
];

这个扩展只接管语言等于 slex 的块,普通 code block 仍走 Tiptap 原生渲染。未显式设置时使用 trusted Markdown runtime host;需要 Markdown 导入/导出时安装并启用 @tiptap/markdown

Obsidian 插件

官方 Obsidian 插件位于独立发布仓库:https://github.com/slexkit/obsidian-slexkit

普通 vault 使用直接从 Obsidian Community Plugins 安装 SlexKit。BRAT 或手动 GitHub release assets 主要用于测试 slexkit/obsidian-slexkit 中尚未发布的构建。

社区插件标记为 desktop-only,兼容 Obsidian 1.5.0+。

插件按用户本地 vault 内容处理,使用 trusted runtime mode。不要把它当作第三方或 agent-generated Markdown 的 sandbox;v0 adapter 不包含 secure sandbox support。

@slexkit/mcp

给 AI agents 使用的 read-only MCP server。它提供生成后的 LLM docs、component metadata、examples、runtime docs、ToolHost docs 和 Slex source validation。

npx -y @slexkit/mcp

该 server 不修改项目文件。Agent 需要 SlexKit component 或 runtime context 时使用。

安装矩阵

使用场景 安装命令
快速开始,包含所有内置能力 npm install slexkit
无组件运行时,自定义组件集 npm install slexkit @slexkit/runtime
使用官方 Svelte 组件 npm install slexkit @slexkit/runtime @slexkit/components-svelte
添加 shadcn token 主题 npm install @slexkit/theme-shadcn
React / Streamdown 宿主 npm install slexkit @slexkit/theme-shadcn @slexkit/streamdown streamdown react react-dom
assistant-ui 宿主 npm install slexkit @slexkit/theme-shadcn @slexkit/streamdown @slexkit/assistant-ui @assistant-ui/react @assistant-ui/react-streamdown streamdown react react-dom
Tiptap 编辑器宿主 npm install slexkit @slexkit/theme-shadcn @slexkit/tiptap @tiptap/core @tiptap/pm @tiptap/starter-kit @tiptap/extension-code-block @tiptap/markdown
Obsidian 插件 从 Obsidian Community Plugins 安装 SlexKit
AI agent MCP 服务 npx -y @slexkit/mcp

v0 包布局

v0 版本由 root slexkit 包承载主要实现。Scoped @slexkit/* 包负责提供更明确的安装入口;如果以后拆成物理包,source code、build output 和 publish workflows 需要一起拆分。

发布检查

发布前一起检查所有 scoped packages:

bun run build
bun run test
bun run lint
bun run smoke:release
npm pack --dry-run --json
slex validate --standard --json

Release smoke 会 pack 并安装 workspace 中的 scoped packages,验证 public entry points、CSS subpath exports,运行已安装的 slex validate --standard --json,并检查 MCP stdio binary 的 initializetools/listslexkitValidate

发布前检查 npm pack --dry-run --json 是否包含 dist/standard/*scripts/cli.mjs。Standard artifacts 必须匹配 package.jsonSLEX_PROTOCOL_VERSION 和内置 conformance fixtures。