{"_id":"@aiwayds/pi-jarvis-sphere","_rev":"4-da84dd319c49ee4cd3c8a071c80a7492","name":"@aiwayds/pi-jarvis-sphere","dist-tags":{"latest":"1.2.1"},"versions":{"1.0.0":{"name":"@aiwayds/pi-jarvis-sphere","version":"1.0.0","keywords":["pi-package","pi-extension","particle","sphere","animation","overlay","tui"],"author":{"name":"fan56"},"license":"MIT","_id":"@aiwayds/pi-jarvis-sphere@1.0.0","maintainers":[{"name":"aiwayds","email":"aiway.ds@qq.com"}],"homepage":"https://github.com/fan56/pi-jarvis-sphere#readme","bugs":{"url":"https://github.com/fan56/pi-jarvis-sphere/issues"},"dist":{"shasum":"009c348131cd8a0af09341287f785ccfdecf944f","tarball":"https://registry.npmjs.org/@aiwayds/pi-jarvis-sphere/-/pi-jarvis-sphere-1.0.0.tgz","fileCount":19,"integrity":"sha512-lWdDq+0SvArP6dVM7rcqeJdX3reItGfRRTqSq6m8gjxYOJHS4YeALC7fqvGxBwOazzQJQVP/xAuuucAoMSRgDg==","signatures":[{"sig":"MEUCIEyeKRum6p42ye2hzsEaVGVYqVbrbl8YmVjJ43EMGnWPAiEAxcBshRoQwMGkesrx9JPVs7IDKmHF/fditvYqrzFQ+z8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":502019},"main":"index.ts","engines":{"node":">=18"},"gitHead":"5e384e26b8c36c8ded0860bd03136cc04e492dad","scripts":{"test":"node scripts/run.mjs scripts/smoke.ts","check":"NODE_PATH=/opt/homebrew/lib/node_modules node scripts/check.mjs"},"_npmUser":{"name":"aiwayds","email":"aiway.ds@qq.com"},"repository":{"url":"git+https://github.com/fan56/pi-jarvis-sphere.git","type":"git"},"_npmVersion":"11.17.0","description":"pi-coding-agent extension — Jarvis particle sphere overlay: four-state animation (flow-field / stars / orbital) shifting color with pi's live state, plugin-architected and config-driven","directories":{},"_nodeVersion":"26.4.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"jiti":"^2.4.0","typescript":"^5.6.0","@types/node":"^22.0.0","@earendil-works/pi-tui":"*"},"peerDependencies":{"@earendil-works/pi-tui":"*","@earendil-works/pi-coding-agent":"*"},"_npmOperationalInternal":{"tmp":"tmp/pi-jarvis-sphere_1.0.0_1786361728825_0.2697879961762293","host":"s3://npm-registry-packages-npm-production"}},"1.1.0":{"name":"@aiwayds/pi-jarvis-sphere","version":"1.1.0","keywords":["pi-package","pi-extension","particle","sphere","animation","overlay","tui"],"author":{"name":"fan56"},"license":"MIT","_id":"@aiwayds/pi-jarvis-sphere@1.1.0","maintainers":[{"name":"aiwayds","email":"aiway.ds@qq.com"}],"homepage":"https://github.com/fan56/pi-jarvis-sphere#readme","bugs":{"url":"https://github.com/fan56/pi-jarvis-sphere/issues"},"dist":{"shasum":"27cc903507e4c88833cd8669eaa030f8217e077d","tarball":"https://registry.npmjs.org/@aiwayds/pi-jarvis-sphere/-/pi-jarvis-sphere-1.1.0.tgz","fileCount":20,"integrity":"sha512-yMHx2TdRvOhIAl8cjOt1f6K7saIPdkdq0OxuC8+yxnAQNUHipPMf8ZuGzx8jH6F4gdm0W7DjDoagmdd/DcT5FQ==","signatures":[{"sig":"MEUCIQCAfGTPC2j94EXob520NtsZB+ryoMH+PyiYeh6LCpfAJQIgD+WwmiD6DN8zNIyizaI3HDCXsPGT8O2Z9slrgEtqoFY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":514092},"main":"index.ts","engines":{"node":">=18"},"gitHead":"a6f5e5a8606a3544e934e57e9f882c53a63ac6a7","scripts":{"test":"node scripts/run.mjs scripts/smoke.ts","check":"NODE_PATH=/opt/homebrew/lib/node_modules node scripts/check.mjs"},"_npmUser":{"name":"aiwayds","email":"aiway.ds@qq.com"},"repository":{"url":"git+https://github.com/fan56/pi-jarvis-sphere.git","type":"git"},"_npmVersion":"11.17.0","description":"pi-coding-agent extension — Jarvis particle sphere overlay: four-state animation (flow-field / stars / orbital) shifting color with pi's live state, plugin-architected and config-driven","directories":{},"_nodeVersion":"26.4.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"jiti":"^2.4.0","typescript":"^5.6.0","@types/node":"^22.0.0","@earendil-works/pi-tui":"*"},"peerDependencies":{"@earendil-works/pi-tui":"*","@earendil-works/pi-coding-agent":"*"},"_npmOperationalInternal":{"tmp":"tmp/pi-jarvis-sphere_1.1.0_1786411406889_0.7795051376982942","host":"s3://npm-registry-packages-npm-production"}},"1.2.0":{"name":"@aiwayds/pi-jarvis-sphere","version":"1.2.0","keywords":["pi-package","pi-extension","particle","sphere","animation","overlay","tui"],"author":{"name":"fan56"},"license":"MIT","_id":"@aiwayds/pi-jarvis-sphere@1.2.0","maintainers":[{"name":"aiwayds","email":"aiway.ds@qq.com"}],"homepage":"https://github.com/fan56/pi-jarvis-sphere#readme","bugs":{"url":"https://github.com/fan56/pi-jarvis-sphere/issues"},"pi":{"extensions":["index.ts"]},"dist":{"shasum":"6db3d02fbaf18ac59430b315539e19c27fe83805","tarball":"https://registry.npmjs.org/@aiwayds/pi-jarvis-sphere/-/pi-jarvis-sphere-1.2.0.tgz","fileCount":20,"integrity":"sha512-MGrRazZVS9HOw6DG0aaOP1anw7VQScYWP9Q1IVwIEW+zfWgl8mPAO+N7gmjH6PYJOluL+e3oPscCaTGF4edKRA==","signatures":[{"sig":"MEUCIQDP7uTSSaPKEBMJLlwsUlSWiiZiqkyMQCYWhrGHm719vQIgDeNCHYUDqcVJRHMf+DkPWTCHQpz5ZxDgZ6D+FYNjtI8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":514451},"main":"index.ts","engines":{"node":">=18"},"gitHead":"5fed5d9892ac8a14ceace86ded4838c1f03e1dd8","scripts":{"test":"node scripts/run.mjs scripts/smoke.ts","check":"NODE_PATH=/opt/homebrew/lib/node_modules node scripts/check.mjs"},"_npmUser":{"name":"aiwayds","email":"aiway.ds@qq.com"},"repository":{"url":"git+https://github.com/fan56/pi-jarvis-sphere.git","type":"git"},"_npmVersion":"11.17.0","description":"pi-coding-agent extension — Jarvis particle sphere overlay: four-state animation (flow-field / stars / orbital) shifting color with pi's live state, plugin-architected and config-driven","directories":{},"_nodeVersion":"26.4.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"jiti":"^2.4.0","typescript":"^5.6.0","@types/node":"^22.0.0","@earendil-works/pi-tui":"*"},"peerDependencies":{"@earendil-works/pi-tui":"*","@earendil-works/pi-coding-agent":"*"},"_npmOperationalInternal":{"tmp":"tmp/pi-jarvis-sphere_1.2.0_1786425742694_0.8329072300183564","host":"s3://npm-registry-packages-npm-production"}},"1.2.1":{"name":"@aiwayds/pi-jarvis-sphere","version":"1.2.1","description":"pi-coding-agent extension — Jarvis particle sphere overlay: four-state animation (flow-field / stars / orbital) shifting color with pi's live state, plugin-architected and config-driven","keywords":["pi-package","pi-extension","particle","sphere","animation","overlay","tui"],"license":"MIT","author":{"name":"fan56"},"main":"index.ts","pi":{"extensions":["index.ts"]},"repository":{"type":"git","url":"git+https://github.com/fan56/pi-jarvis-sphere.git"},"publishConfig":{"access":"public"},"peerDependencies":{"@earendil-works/pi-coding-agent":"*","@earendil-works/pi-tui":"*"},"devDependencies":{"@earendil-works/pi-tui":"*","jiti":"^2.4.0","typescript":"^5.6.0","@types/node":"^22.0.0"},"scripts":{"test":"node scripts/run.mjs scripts/smoke.ts","check":"NODE_PATH=/opt/homebrew/lib/node_modules node scripts/check.mjs"},"engines":{"node":">=18"},"gitHead":"1f3da1a53b41f5a71647a70ff32c7e651b18e277","_id":"@aiwayds/pi-jarvis-sphere@1.2.1","bugs":{"url":"https://github.com/fan56/pi-jarvis-sphere/issues"},"homepage":"https://github.com/fan56/pi-jarvis-sphere#readme","_nodeVersion":"26.4.0","_npmVersion":"11.17.0","dist":{"integrity":"sha512-XphjhZMK2HiFaT5TKAfsj8ak5KtaUcnOvESMl18UL7lfN0Jco/AJoC9lQz0em9l9D/TD/dN+9u8W8xJn30cV1w==","shasum":"3786f3fac53452460e3239200163affe5adb3efb","tarball":"https://registry.npmjs.org/@aiwayds/pi-jarvis-sphere/-/pi-jarvis-sphere-1.2.1.tgz","fileCount":20,"unpackedSize":515160,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQCj0SVvqFl3dLWY1ecmM1vkT6hG15rXGPtsJkYu6B7GmQIhAPjJW7NrDzpdzOlpZ3yAl8aJMobee5d0D3Lyu4fsrM9S"}]},"_npmUser":{"name":"aiwayds","email":"aiway.ds@qq.com"},"directories":{},"maintainers":[{"name":"aiwayds","email":"aiway.ds@qq.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/pi-jarvis-sphere_1.2.1_1786932193699_0.5512285562587709"},"_hasShrinkwrap":false}},"time":{"created":"2026-08-10T11:35:28.683Z","modified":"2026-08-17T02:03:13.967Z","1.0.0":"2026-08-10T11:35:28.973Z","1.1.0":"2026-08-11T01:23:27.025Z","1.2.0":"2026-08-11T05:22:22.851Z","1.2.1":"2026-08-17T02:03:13.823Z"},"bugs":{"url":"https://github.com/fan56/pi-jarvis-sphere/issues"},"author":{"name":"fan56"},"license":"MIT","homepage":"https://github.com/fan56/pi-jarvis-sphere#readme","keywords":["pi-package","pi-extension","particle","sphere","animation","overlay","tui"],"repository":{"type":"git","url":"git+https://github.com/fan56/pi-jarvis-sphere.git"},"description":"pi-coding-agent extension — Jarvis particle sphere overlay: four-state animation (flow-field / stars / orbital) shifting color with pi's live state, plugin-architected and config-driven","maintainers":[{"name":"aiwayds","email":"aiway.ds@qq.com"}],"readme":"# pi-jarvis-sphere 🜄\n\n[English](README.md) | [中文](README.zh.md)\n\nPi agent 的 **Jarvis 粒子球**:一个悬浮在 pi 终端右下角的粒子球浮层。它会根据 pi 的实时状态变化颜色与动画 -- 思考时琥珀色星形序列手绘、调用工具时黄色顺时针粒子环、生成答案时青色顺时针轨道粒子流、TTS 说话时脉冲,像一个小助手在\"活\"着。sub-agent 活动(通过 pi-subagents)也会像 tool 态一样让球动画。\n\n![demo](demo.svg)\n\n*模拟四态动画(SMIL SVG,由真实渲染代码生成 -- 流场 / 折射 / 轨道粒子环)*\n\n## ✨ 特性\n\n- **四态动画**,颜色即状态:\n\n  | 状态 | 颜色 | 动画 |\n  | --- | --- | --- |\n  | 空闲 | 绿色 `#00e676` | curl noise 流场(慢)+ 中心水波纹 |\n  | 思考中 (thinking) | 琥珀色 `#ffab00` | 星形序列(7 形状循环手绘,固定逆时针) |\n  | 工具调用 (tool) | 黄色 `#ffeb3b` | 均匀粒子环 **顺时针** — 中心留空,4 层 × 20 点(80 粒子),微分旋转:内慢外快 |\n  | 生成答案 (working) | 青色 `#00E5FF` | 轨道粒子流(顺时针,与 tool 同款) |\n  | sub-agent | 黄色(tool) | sub-agent 活动通过 `subagents:started` / `subagents:completed` / `subagents:failed` 信号复用 tool 动画 |\n  | 减速 (wind-down) | 保持当前色 | 思考/工具/生成结束后的 1 秒 ease-out 减速,再回到空闲 |\n\n- **TTS 说话联动**:pi-ext-tts-mimo 播放语音时,球体脉冲更密更快,像在说话(空闲态下 10FPS -> 30FPS)。\n- **方向锚点**:流场顺时针/逆时针旋转,减速时保持方向可辨。\n- **不抢键盘**:`nonCapturing` 浮层,打字、快捷键完全不受影响。\n- **可开关**:`/jarvis` 命令切换,状态持久化到 `config.json`(默认开启)。\n- **生命周期安全**:随 `session_start` 挂载、`session_shutdown` 清理;子 agent 会话不会重复挂载;`/reload` 不泄漏监听器。\n\n## 📦 安装\n\n### 方式 A — npm(推荐)\n\n```bash\npi install npm:@aiwayds/pi-jarvis-sphere\n```\n\n### 方式 B — 源码\n\n```bash\n# 1. 克隆/放到独立目录(与 ~/github 下其他 pi 扩展同约定)\ngit clone https://github.com/fan56/pi-jarvis-sphere.git ~/github/pi-jarvis-sphere\n\n# 2. 符号链接到 pi 扩展目录(pi 自动发现 ~/.pi/agent/extensions/<name>)\nln -s ~/github/pi-jarvis-sphere ~/.pi/agent/extensions/pi-jarvis-sphere\n\n# 3. 在 pi 里 /reload 即可生效\n```\n\n> 依赖(可选):`pi-ext-tts-mimo` 提供 `tts:started`/`tts:stopped` 信号,球体才能感知\"正在说话\"。没有它也照常工作,只是没有说话脉冲。\n\n## 🎮 使用\n\n| 命令 | 作用 |\n|---|---|\n| `/jarvis` | 切换球体显示/隐藏(状态写入 `~/.pi/agent/pi-jarvis-sphere.json`) |\n\n用户配置文件位于 agent 目录(首次 `/jarvis` 切换时创建),**可自由编辑**:\n\n```json\n{ \"enabled\": true }\n```\n\n> **配置优先级**:存在 `~/.pi/agent/pi-jarvis-sphere.json` 时优先读它;否则回退到包内\n> 自带的 `config.json`(只读默认值)。包内文件永远不会被覆盖——`pi update` 不会丢你的设置。\n\n## 🧩 动画插件化\n\n每个动画是独立插件文件(闭包自持粒子状态),通过统一接口接入;**场景 → 动画的映射由 `config.json` 驱动,改配置即换动画,不用碰代码**。\n\n```\nanimations/          # 动画插件目录(新增动画 = 建文件 + registry 登记一行)\n  flow-field.ts      # 流场 + 水波纹(idle 默认)\n  refract.ts         # 折射粒子\n  stars.ts           # 星形序列(think 默认,7 形状循环手绘)\n  stars2.ts          # 交错星形序列(think 默认 v2,两形叠加)\n  orbital.ts         # 轨道粒子流(tool 默认)\n  registry.ts        # 注册表:id -> 工厂\nlib/                 # 共享层:类型 / 网格几何 / 盲文原语 / noise / 场景配置解析\nconfig.json          # 你的可编辑\"插件目录\"\n```\n\n`config.json` 的 `scenes` 字段控制每个场景挂哪个动画、参数如何调:\n\n```json\n{\n  \"enabled\": true,\n  \"scenes\": {\n    \"idle\":    { \"animation\": \"flow-field\", \"params\": { \"fieldSpeed\": 0.06, \"dir\": 1, \"fieldCount\": 120, \"fieldScroll\": 0.02 } },\n    \"think\":   { \"animation\": \"stars\",    \"params\": { \"starSpeed\": 0.02, \"cycleFrames\": 160, \"starSize\": 0.82, \"breathSpeed\": 0.04 } },\n    \"tool\":    { \"animation\": \"orbital\",  \"params\": { \"spinSpeed\": 0.15, \"dir\": 1 } },\n    \"working\": { \"animation\": \"orbital\",  \"params\": { \"spinSpeed\": 0.15, \"dir\": 1 } }\n  }\n}\n```\n\n### stars —— think 场景默认动画\n\n**think** 场景的默认动画:循环手绘 **7 个形状** —— 三角形 → 四边形 → 五芒星 → 六芒星 → 七芒星 → 八芒星 → 九芒星,由简入繁,每个形状逐边绘制,固定逆时针旋转。\n\n![stars 预览](stars-preview.svg)\n\n*7 形状样例取自每个周期保持段中段帧,由真实渲染代码生成(含中心呼吸点)*\n\n| 参数 | 含义 | 默认 |\n| --- | --- | --- |\n| `starSpeed` | 旋转速度(弧度/帧,正值=逆时针) | `0.02` |\n| `cycleFrames` | 每形状周期帧数(前 40% 逐边绘制+放大,中 45% 完整保持,后 15% 收缩衔接) | `160` |\n| `starSize` | 星形外接圆相对球半径的比例 | `0.82` |\n| `starStep` | 星形跳点覆盖(`-1`=按形状表,正整数对 n 取模) | `-1` |\n| `breathSpeed` | 中心点呼吸速度(`0.04` ≈ 2.6s 一次呼吸) | `0.04` |\n\n> **中心点呼吸**:球心 2×2 点簇按正弦脉动(1 → 4 点点亮)。\n\n**例:把\"粒子流\"(orbital)插到 think 场景**——只改一行 `config.json`:\n\n```json\n\"think\": { \"animation\": \"orbital\", \"params\": { \"spinSpeed\": 0.15, \"dir\": 1 } },\n```\n\n改完 `/reload` 生效。参数缺省时用插件自身 `defaults` 兜底;`dir` 控制旋转方向(`1`=顺时针 / `-1`=逆时针)。\n\n> 注:think 与 working 是独立动画槽位,可分别配不同动画;同一动画在多个场景各自持有独立粒子实例(互不干扰)。**working** 与 **tool** 一样使用顺时针轨道粒子流(`dir: 1`)。\n\n### stars2 —— think 场景默认动画(v2)\n\n**think** 场景在 v1.1.0 起的默认动画:交错星形 —— 当前形状生成到一半时\n就开始下一个形状,所以屏幕上**始终同时有两个形状**(50% 相位偏移)。\n形状顺序随机,但不会连续重复同一个形状。\n\n| 参数 | 含义 | 默认 |\n| --- | --- | --- |\n| `starSpeed` | 旋转速度(弧度/帧,正值=逆时针) | `0.02` |\n| `cycleFrames` | 每形状周期帧数(第二个形状在第一个的 50% 相位处开始) | `160` |\n| `starSize` | 星形外接圆相对球半径的比例 | `0.82` |\n| `breathSpeed` | 中心点呼吸速度(`0.04` ≈ 2.6s 一次呼吸) | `0.04` |\n\n## 🧪 开发与调试\n\n- 改完代码在 pi 里 `/reload` 即可热加载(jiti 直接跑 `.ts`,无构建步骤)。\n- 语法检查:`node -e \"…typescript.transpileModule…\"`(无 tsc 构建)。\n- 测试:派一个 `sleep N` 的子 agent,即可观察 sub-agent/tool 态(黄·顺时针涡流);正常问答可观察 think 态(琥珀·星形序列)。\n\n## 🗺️ Roadmap\n\n- [ ] V2:外部独立窗口(扩展内起本地 WebSocket + 浏览器,真 3D WebGL 粒子球)\n- [ ] 思考等级联动颜色(off->max 热力阶梯色阶,曾实现后被三态色取代)\n\n## 📜 Changelog\n\n完整版本历史见 [CHANGELOG.md](CHANGELOG.md)。\n","readmeFilename":"README.zh.md"}