{"_id":"@buddhilive/dsh-client-ui-permission-presets","name":"@buddhilive/dsh-client-ui-permission-presets","dist-tags":{"alpha":"0.1.2-alpha.3","latest":"0.1.2-alpha.3"},"versions":{"0.1.2-alpha.3":{"name":"@buddhilive/dsh-client-ui-permission-presets","description":"Permission surfaces: a new-session default in General settings and a current-session /permission popup over the permissions projection","version":"0.1.2-alpha.3","publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+https://github.com/Buddhilive/buddhi-ai-harness.git","directory":"packages/client/ui-permission-presets"},"type":"module","main":"lib/index.js","types":"lib/types/index.d.ts","exports":{".":{"types":"./lib/types/index.d.ts","default":"./lib/index.js"},"./invariant":{"types":"./lib/types/invariant.d.ts","default":"./lib/invariant.js"},"./client":{"types":"./lib/types/client/index.d.ts","default":"./lib/client.js"},"./src/*":"./src/*","./package.json":"./package.json"},"dsh":{"client":{"inject":["@buddhilive/dsh-api-session-controller","@buddhilive/dsh-client-locale","@buddhilive/dsh-client-ui-commands","@buddhilive/dsh-api-remotes","@buddhilive/dsh-client-ui-settings"],"platform":"web"}},"license":"MIT","peerDependencies":{"@deepseek-ai/cordis":"^4.0.2"},"devDependencies":{"@types/react":"~18.3.1","react":"^18.2.0","@deepseek-ai/cordis":"^4.0.2","@buddhilive/dsh-api-remotes":"^0.1.2-alpha.3","@buddhilive/dsh-api-session-controller":"^0.1.2-alpha.3","@buddhilive/dsh-client-store":"^0.1.2-alpha.3","@buddhilive/dsh-client-locale":"^0.1.2-alpha.3","@buddhilive/dsh-client-test-runtime":"^0.1.2-alpha.3","@buddhilive/dsh-client-ui-commands":"^0.1.2-alpha.3","@buddhilive/dsh-client-ui-settings":"^0.1.2-alpha.3","@buddhilive/dsh-client-ui-input-trigger":"^0.1.2-alpha.3","@buddhilive/dsh-client-ui-primitives":"^0.1.2-alpha.3","@buddhilive/dsh-client-ui-slots":"^0.1.2-alpha.3","@buddhilive/dsh-invariants":"^0.1.2-alpha.3","@buddhilive/dsh-client-ui-renderer":"^0.1.2-alpha.3","@buddhilive/dsh-client-ui-session":"^0.1.2-alpha.3","@buddhilive/dsh-permission-presets":"^0.1.2-alpha.3"},"scripts":{"bundle":"tsdown","watch":"tsdown --watch"},"_id":"@buddhilive/dsh-client-ui-permission-presets@0.1.2-alpha.3","bugs":{"url":"https://github.com/Buddhilive/buddhi-ai-harness/issues"},"homepage":"https://github.com/Buddhilive/buddhi-ai-harness#readme","_integrity":"sha512-eEfSuiEfsMQdkh4MpKiaK4ZtnlDAwAZY0mpLKhRLcJV0eqTLjR92LXSO3JVLuOublwFbOaHX8cgqfhrPeY+wqQ==","_resolved":"C:\\DevDojo\\Buddhi\\buddhi-ai-harness\\dist\\npm\\buddhilive-dsh-client-ui-permission-presets-0.1.2-alpha.3.tgz","_from":"file:C:/DevDojo/Buddhi/buddhi-ai-harness/dist/npm/buddhilive-dsh-client-ui-permission-presets-0.1.2-alpha.3.tgz","_nodeVersion":"24.13.0","_npmVersion":"11.6.2","dist":{"integrity":"sha512-eEfSuiEfsMQdkh4MpKiaK4ZtnlDAwAZY0mpLKhRLcJV0eqTLjR92LXSO3JVLuOublwFbOaHX8cgqfhrPeY+wqQ==","shasum":"7a4dec57eb57708790034481ae43597494ee0fed","tarball":"https://registry.npmjs.org/@buddhilive/dsh-client-ui-permission-presets/-/dsh-client-ui-permission-presets-0.1.2-alpha.3.tgz","fileCount":15,"unpackedSize":47355,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQDjP4nnyycAfhF962UDArmdnaKuiH6XWpMZEIdw91JUPwIgcq4k4/i9KWYO+ymzuZ/vVqrXzIPJWpqV0xpw9LQU0sA="}]},"_npmUser":{"name":"buddhilive","email":"visitbudkavin@gmail.com"},"directories":{},"maintainers":[{"name":"buddhilive","email":"visitbudkavin@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/dsh-client-ui-permission-presets_0.1.2-alpha.3_1788166190338_0.7531609234956873"},"_hasShrinkwrap":false}},"time":{"created":"2026-08-31T08:49:50.149Z","0.1.2-alpha.3":"2026-08-31T08:49:50.462Z","modified":"2026-08-31T08:49:50.724Z"},"maintainers":[{"name":"buddhilive","email":"visitbudkavin@gmail.com"}],"description":"Permission surfaces: a new-session default in General settings and a current-session /permission popup over the permissions projection","homepage":"https://github.com/Buddhilive/buddhi-ai-harness#readme","repository":{"type":"git","url":"git+https://github.com/Buddhilive/buddhi-ai-harness.git","directory":"packages/client/ui-permission-presets"},"bugs":{"url":"https://github.com/Buddhilive/buddhi-ai-harness/issues"},"license":"MIT","readme":"---\ndescription: \"Web GUI 的权限预设表面：通用设置中的默认行与切换当前会话的 /permission 选择器；供权限策略的用户与维护者阅读。\"\nkind: \"package-reference\"\n---\n\n# @buddhilive/dsh-client-ui-permission-presets\n\n[English](README.md) | 中文\n\n## 概述\n\n本包为 Web GUI 中两种生命周期提供权限预设表面：通用设置中的一行选择之后创建会话所用的默认值，但不会切换当前会话。挂在宿主 `/permission` 命令上的选择器通过一张扁平预设列表切换当前会话，并标记 active 值。规范内置名称渲染为 locale 所有的产品标签，显式 host 标签保持原样，未知 kebab-case 名称渲染为 Title Case。选择完全权限时，该行或选择器写入前必须先显式确认风险。两个表面读取同一份宿主计算的投影、经同一条路径写入，因此推送的投影帧是两者共同跟随的唯一确认。\n\n## 目录\n\n- [使用本包](#use-this-package)\n- [理解实现](#understand-the-implementation)\n- [进一步探索](#further-exploration)\n- [模型体验](#model-experience)\n- [已知限制与延期工作](#known-limitations-and-deferred-work)\n- [开发备注](#dev-note)\n\n-----\n\n<a id=\"use-this-package\"></a>\n## 使用本包\n\n与设置与命令包一起挂载本插件；权限行随即出现在通用设置中，`/permission` 选择器替换裸命令调用。当前会话选择器恰在投影 key 存在时可用；无权限组合既不显示选择器，也不显示设置行。\n\n### 选择器\n\n选中即提交 `/permission <preset>` 命令行。带参路径（直接键入 `/permission <preset>`）仍直接切换；装饰只替换裸调用。内置标签在英文界面中是 `Read Only`、`Workspace Write` 和 `Full access`，在中文界面中是「仅可查看」「可写入工作区」和「完全权限」；`custom` 只是显示状态，绝非目标。\n\n### 设置行\n\n该行从宿主动态的 `defaultPreset` enum 推导选项，使用与当前会话选择器相同的本地化标签，并写入一条设置变更操作。该值只在之后创建会话时生效；改变它绝不会切换或改写当前会话。\n\n-----\n\n<a id=\"understand-the-implementation\"></a>\n## 理解实现\n\n<details>\n<summary>实现细节——点击展开</summary>\n\n通用行经 `ctx.settingsScope` 读取显式暴露的 `permission` Settings 描述符，并携带描述符 revision 写入一条 `settings.mutate` 路径操作；其 observable 经槽位系统的 `hooks` 格传递，因此 React 钩子绑定归渲染器，推送失效通知会重新获取描述符。该值只在之后创建会话时读取。当前会话表面是挂在宿主 `/permission` 命令上的 popupSelect 装饰（`ctx.commandUi.decorate`）：宿主命令保留斜杠菜单行、带参路径与持久生命周期记账，装饰只把裸调用替换为选择器。选项与 active 标记读取会话的 `permissions` 投影——与 composer chip 渲染的同一份宿主计算 select。完全权限选项携带 `confirmation` 载荷，由共享弹窗外壳渲染为页内风险门。\n\n</details>\n\n-----\n\n<a id=\"further-exploration\"></a>\n## 进一步探索\n\n当权限面不够用时阅读以下页面。它们从浏览器表面进入宿主策略与命令外壳。\n\n- [dsh-permission-presets](../../interaction/permission-presets/README.zh.md)——这些表面写入的宿主侧权限预设策略。\n- [ui-commands](../ui-commands/README.zh.md)——`/permission` 装饰注册进的 popupSelect 外壳。\n- [ui-conversation](../ui-conversation/README.zh.md)——渲染同一份权限投影的 composer chip。\n- [客户端包映射](../README.zh.md)——相邻的浏览器 UI 包。\n\n-----\n\n<a id=\"model-experience\"></a>\n## 模型体验\n\n间接影响。它的两个表面写入权限事实：设置行使未来会话带着全量值旋钮事件启动，而 `/permission` 选择器切换当前会话时追加相同的事实；这些事件决定后续工具调用解析到的沙箱模式与审批策略。\n\n#### KV Cache 影响\n\n无直接失效；请求前缀的变化由旋钮消费方自行承担。\n\n## 已知限制与延期工作\n\n<a id=\"known-limitations-and-deferred-work\"></a>\n\n\n这些限制界定了当前权限表面。它们是当前包约束，不是通用策略对比或任务积压。\n\n- **设置行仅限 Web**——非 Web 客户端仍可经 `/permission` 切换当前会话，但不会获得这项浏览器贡献。\n- **预设描述来自宿主**——本地化的内置标签旁边可能显示另一种语言编写的描述。\n\n<a id=\"dev-note\"></a>\n### 开发备注\n\n<details>\n<summary>维护者的工作上下文——点击展开</summary>\n\n无。\n\n</details>\n","readmeFilename":"README.zh.md","_rev":"1-a2fc6c83b614bf0c22e0fde6ce3cf57a"}