{"_id":"@blksails/pi-web-panes-kit","name":"@blksails/pi-web-panes-kit","dist-tags":{"latest":"0.1.0"},"versions":{"0.1.0":{"name":"@blksails/pi-web-panes-kit","version":"0.1.0","private":false,"type":"module","sideEffects":false,"exports":{".":"./src/index.ts","./contract":"./src/contract.ts","./workspace-protocol":"./src/workspace-protocol.ts","./react":"./src/react/index.ts","./adapters/*":"./src/adapters/*.ts"},"engines":{"node":">=22.19.0"},"dependencies":{"zod":"^3.23.8"},"peerDependencies":{"react":"^18.3.0 || ^19.0.0"},"devDependencies":{"@testing-library/react":"^16.1.0","@types/react":"^19.0.0","jsdom":"^25.0.1","react":"^19.0.0","react-dom":"^19.0.0","typescript":"^5.6.3","vitest":"^2.1.8"},"publishConfig":{"access":"public"},"scripts":{"test":"vitest run","typecheck":"tsc -p tsconfig.json --noEmit"},"_id":"@blksails/pi-web-panes-kit@0.1.0","description":"领域中立的强隔离 Pane 契约、Guest SDK 与 Browser React Host。","_integrity":"sha512-gEfUzN64X3dflFp8Wixu+zeTYMcxrCR2SQS2l4X1sIztETsFPxGMia5L15C0339fKGYSAH7gN5Ek5DUOzTo52A==","_resolved":"/private/var/folders/r2/pzm9pv1x0jx0fd596wnyrw6w0000gn/T/f677d3a476569d05510b83c30f3b2a1b/blksails-pi-web-panes-kit-0.1.0.tgz","_from":"file:blksails-pi-web-panes-kit-0.1.0.tgz","_nodeVersion":"22.22.0","_npmVersion":"10.9.4","dist":{"integrity":"sha512-gEfUzN64X3dflFp8Wixu+zeTYMcxrCR2SQS2l4X1sIztETsFPxGMia5L15C0339fKGYSAH7gN5Ek5DUOzTo52A==","shasum":"92f82a9d54a88105b65d11f3985c6340480c0663","tarball":"https://registry.npmjs.org/@blksails/pi-web-panes-kit/-/pi-web-panes-kit-0.1.0.tgz","fileCount":17,"unpackedSize":67932,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQCfAx9ybKZhXYGBAQzhe5ZM53d1mHYS+z3hIi1XW7PYNQIgOrcc5Y/qHIp5s29R4u2PnegF0Tv6QHvQ3HqjfK9pwAY="}]},"_npmUser":{"name":"hysios","email":"hysios@gmail.com"},"directories":{},"maintainers":[{"name":"hysios","email":"hysios@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/pi-web-panes-kit_0.1.0_1784864918051_0.372629881263556"},"_hasShrinkwrap":false}},"time":{"created":"2026-07-24T03:48:37.867Z","0.1.0":"2026-07-24T03:48:38.187Z","modified":"2026-07-24T03:48:38.478Z"},"maintainers":[{"name":"hysios","email":"hysios@gmail.com"}],"description":"领域中立的强隔离 Pane 契约、Guest SDK 与 Browser React Host。","readme":"# @blksails/pi-web-panes-kit\n\n领域中立的强隔离 Pane 契约、Guest SDK 与 Browser React Host。\n\n```tsx\nimport { definePanes } from \"@blksails/pi-web-panes-kit\";\nimport { PanesHost } from \"@blksails/pi-web-panes-kit/react\";\n\nconst definition = definePanes({\n  id: \"my-panes\",\n  initialPaneIds: [\"editor\"],\n  panes: [{\n    id: \"editor\",\n    title: \"Editor\",\n    document: { kind: \"inline\", srcDoc: editorHtml },\n    allowMultiple: true,\n    maxInstances: 3,\n    capabilities: {\n      routes: [{ name: \"editor-data\", methods: [\"GET\", \"POST\"] }],\n    },\n  }],\n});\n\nexport function PanelRight(props: HostCapabilities) {\n  return <PanesHost {...props} definition={definition} />;\n}\n```\n\n每个打开的 Tab 是独立 iframe/View、端口和 epoch。同一 contract 可由 Electron `WebContentsView` 或 Tauri WebView adapter 实现。业务数据继续使用 pi-web 的 Agent Routes、Surface、Attachments 与 Conversation；本包不依赖 `frame-rpc`。\n\n完整设计与实施顺序见 [`docs/isolated-panes`](../../docs/isolated-panes/README.md)。\n","readmeFilename":"README.md","_rev":"1-c3a717465ca46d33e43420dadfbff59c"}