@muzi3/code-button

pi 终端 UI 代码块可点击按钮基座:OSC 8 超链接 + 本地 HTTP 回调 + 按钮注册 API

Packages

Package details

extension

Install @muzi3/code-button from npm and Pi will load the resources declared by the package manifest.

$ pi install npm:@muzi3/code-button
Package
@muzi3/code-button
Version
0.1.2
Published
Aug 26, 2026
Downloads
469/mo · 10/wk
Author
muzi3
License
MIT
Types
extension
Size
16.3 KB
Dependencies
0 dependencies · 2 peers
Pi manifest JSON
{
  "extensions": [
    "./extensions"
  ]
}

Security note

Pi packages can execute code and influence agent behavior. Review the source before installing third-party packages.

README

@muzi3/code-button

pi 终端 UI 代码块可点击按钮的基座

原理:终端里没有真正的按钮,这是唯一能做到「点一下就触发」的链路 —— 在代码块上方插入 OSC 8 超链接,点击后由 macOS 本地 URL handler 转发到本扩展启动的 127.0.0.1 本地 HTTP 服务,再按 id 触发已注册的回调。

它做什么

  • 启动本地 HTTP 服务(127.0.0.1 随机端口 + 随机 token)
  • 提供 registerCodeBlockButtons(provider) —— 其他扩展注册按钮来源
  • 提供 scanCodeBlocks(markdown) —— 统一的围栏代码块扫描器
  • 提供 toast(text, color) —— 编辑器下方一次性提示
  • /code-button-install 命令 —— 安装 macOS URL handler(首次使用需要)

它不做什么

本身不提供任何按钮。按钮由消费方(如 @muzi3/copy-code@muzi3/run-cmd)通过 registerCodeBlockButtons 注册。

安装

pi install npm:@muzi3/code-button

首次使用运行 /code-button-install 安装 macOS URL handler。

给其他扩展复用

import { registerCodeBlockButtons, scanCodeBlocks, toast } from "@muzi3/code-button";

registerCodeBlockButtons((block) => [{
  key: `my-action:${block.index}`,
  label: `[我的按钮 #${block.index}]`,
  run: () => { /* ... */ },
}]);

运行时状态挂在 globalThis 上(__piUiCodeButton),即使被多个包分别 bundle、多次加载,按钮注册表仍是同一份。

License

MIT