dsh-tool-activator 0.1.0 → 0.2.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/cordis.patch.yml +3 -3
- package/dist/client.js +1 -1
- package/dist/client.js.map +1 -1
- package/icon.svg +1 -1
- package/package.json +1 -1
package/cordis.patch.yml
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
- insert:
|
|
2
|
-
- id: tool-activator
|
|
3
|
-
name: dsh-tool-activator
|
|
1
|
+
- insert:
|
|
2
|
+
- id: tool-activator
|
|
3
|
+
name: dsh-tool-activator
|
package/dist/client.js
CHANGED
|
@@ -12,6 +12,6 @@ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});var e=Object.
|
|
|
12
12
|
`);return}e=i(e),t!=null&&l.push(` ${e}${a(t)}`)}),e&&l.push(`}`),l.join(`
|
|
13
13
|
`)}function c(e,t,n){e&&e.forEach(e=>{if(Array.isArray(e))c(e,t,n);else if(typeof e==`function`){let r=e(t);Array.isArray(r)?c(r,t,n):r&&n(r)}else e&&n(e)})}function l(e,r,i,a,o){let u=e.$,d=``;if(!u||typeof u==`string`)(0,n.isMediaOrSupports)(u)?d=u:r.push(u);else if(typeof u==`function`){let e=u({context:a.context,props:o});(0,n.isMediaOrSupports)(e)?d=e:r.push(e)}else if(u.before&&u.before(a.context),!u.$||typeof u.$==`string`)(0,n.isMediaOrSupports)(u.$)?d=u.$:r.push(u.$);else if(u.$){let e=u.$({context:a.context,props:o});(0,n.isMediaOrSupports)(e)?d=e:r.push(e)}let f=(0,t.parseSelectorPath)(r),p=s(f,e.props,a,o);d?i.push(`${d} {`):p.length&&i.push(p),e.children&&c(e.children,{context:a.context,props:o},e=>{if(typeof e==`string`){let t=s(f,{raw:e},a,o);i.push(t)}else l(e,r,i,a,o)}),r.pop(),d&&i.push(`}`),u&&u.after&&u.after(a.context)}function u(e,t,n){let r=[];return l(e,[],r,t,n),r.join(`
|
|
14
14
|
|
|
15
|
-
`)}e.render=u})),M=o((e=>{function t(e){for(var t,n=0,r=0,i=e.length;i>=4;++r,i-=4)t=1540483477*(65535&(t=255&e.charCodeAt(r)|(255&e.charCodeAt(++r))<<8|(255&e.charCodeAt(++r))<<16|(255&e.charCodeAt(++r))<<24))+(59797*(t>>>16)<<16),n=1540483477*(65535&(t^=t>>>24))+(59797*(t>>>16)<<16)^1540483477*(65535&n)+(59797*(n>>>16)<<16);switch(i){case 3:n^=(255&e.charCodeAt(r+2))<<16;case 2:n^=(255&e.charCodeAt(r+1))<<8;case 1:n=1540483477*(65535&(n^=255&e.charCodeAt(r)))+(59797*(n>>>16)<<16)}return(((n=1540483477*(65535&(n^=n>>>13))+(59797*(n>>>16)<<16))^n>>>15)>>>0).toString(36)}Object.defineProperty(e,"__esModule",{value:!0}),e.default=t})),N=o(((e,t)=>{t.exports=M()})),P=o((e=>{Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var t=N();Object.defineProperty(e,"default",{enumerable:!0,get:function(){return t.default}})})),F=o((e=>{Object.defineProperty(e,"__esModule",{value:!0}),e.mount=e.unmount=void 0;let t=P(),n=A();typeof window<`u`&&(window.__cssrContext={});function r(e,t,r,i){let{els:a}=t;if(r===void 0)a.forEach(n.removeElement),t.els=[];else{let e=(0,n.queryElement)(r,i);e&&a.includes(e)&&((0,n.removeElement)(e),t.els=a.filter(t=>t!==e))}}e.unmount=r;function i(e,t){e.push(t)}function a(e,r,a,o,s,c,l,u,d){let f;if(a===void 0&&(f=r.render(o),a=(0,t.default)(f)),d){d.adapter(a,f??r.render(o));return}u===void 0&&(u=document.head);let p=(0,n.queryElement)(a,u);if(p!==null&&!c)return p;let m=p??(0,n.createElement)(a);if(f===void 0&&(f=r.render(o)),m.textContent=f,p!==null)return p;if(l){let e=u.querySelector(`meta[name="${l}"]`);if(e)return u.insertBefore(m,e),i(r.els,m),m}return s?u.insertBefore(m,u.querySelector(`style, link`)):u.appendChild(m),i(r.els,m),m}e.mount=a})),I=o((e=>{Object.defineProperty(e,"__esModule",{value:!0}),e.c=void 0;let t=j(),n=F();function r(e){return(0,t.render)(this,this.instance,e)}function i(e={}){let{id:t,ssr:r,props:i,head:a=!1,force:o=!1,anchorMetaName:s,parent:c}=e;return(0,n.mount)(this.instance,this,t,i,a,o,s,c,r)}function a(e={}){let{id:t,parent:r}=e;(0,n.unmount)(this.instance,this,t,r)}let o=function(e,t,n,o){return{instance:e,$:t,props:n,children:o,els:[],render:r,mount:i,unmount:a}};e.c=function(e,t,n,r){return Array.isArray(t)?o(e,{$:null},null,t):Array.isArray(n)?o(e,t,null,n):Array.isArray(r)?o(e,t,n,r):o(e,t,n,null)}})),L=o((e=>{Object.defineProperty(e,"__esModule",{value:!0}),e.CssRender=void 0;let t=I(),n=A();function r(e={}){let r={c:((...e)=>(0,t.c)(r,...e)),use:(e,...t)=>e.install(r,...t),find:n.queryElement,context:{},config:e};return r}e.CssRender=r})),R=o((e=>{Object.defineProperty(e,"__esModule",{value:!0})})),z=o((e=>{Object.defineProperty(e,"__esModule",{value:!0}),e.exists=void 0;let t=A();function n(e,n){if(e===void 0)return!1;if(n){let{context:{ids:t}}=n;return t.has(e)}return(0,t.queryElement)(e)!==null}e.exists=n})),B=
|
|
15
|
+
`)}e.render=u})),M=o((e=>{function t(e){for(var t,n=0,r=0,i=e.length;i>=4;++r,i-=4)t=1540483477*(65535&(t=255&e.charCodeAt(r)|(255&e.charCodeAt(++r))<<8|(255&e.charCodeAt(++r))<<16|(255&e.charCodeAt(++r))<<24))+(59797*(t>>>16)<<16),n=1540483477*(65535&(t^=t>>>24))+(59797*(t>>>16)<<16)^1540483477*(65535&n)+(59797*(n>>>16)<<16);switch(i){case 3:n^=(255&e.charCodeAt(r+2))<<16;case 2:n^=(255&e.charCodeAt(r+1))<<8;case 1:n=1540483477*(65535&(n^=255&e.charCodeAt(r)))+(59797*(n>>>16)<<16)}return(((n=1540483477*(65535&(n^=n>>>13))+(59797*(n>>>16)<<16))^n>>>15)>>>0).toString(36)}Object.defineProperty(e,"__esModule",{value:!0}),e.default=t})),N=o(((e,t)=>{t.exports=M()})),P=o((e=>{Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var t=N();Object.defineProperty(e,"default",{enumerable:!0,get:function(){return t.default}})})),F=o((e=>{Object.defineProperty(e,"__esModule",{value:!0}),e.mount=e.unmount=void 0;let t=P(),n=A();typeof window<`u`&&(window.__cssrContext={});function r(e,t,r,i){let{els:a}=t;if(r===void 0)a.forEach(n.removeElement),t.els=[];else{let e=(0,n.queryElement)(r,i);e&&a.includes(e)&&((0,n.removeElement)(e),t.els=a.filter(t=>t!==e))}}e.unmount=r;function i(e,t){e.push(t)}function a(e,r,a,o,s,c,l,u,d){let f;if(a===void 0&&(f=r.render(o),a=(0,t.default)(f)),d){d.adapter(a,f??r.render(o));return}u===void 0&&(u=document.head);let p=(0,n.queryElement)(a,u);if(p!==null&&!c)return p;let m=p??(0,n.createElement)(a);if(f===void 0&&(f=r.render(o)),m.textContent=f,p!==null)return p;if(l){let e=u.querySelector(`meta[name="${l}"]`);if(e)return u.insertBefore(m,e),i(r.els,m),m}return s?u.insertBefore(m,u.querySelector(`style, link`)):u.appendChild(m),i(r.els,m),m}e.mount=a})),I=o((e=>{Object.defineProperty(e,"__esModule",{value:!0}),e.c=void 0;let t=j(),n=F();function r(e){return(0,t.render)(this,this.instance,e)}function i(e={}){let{id:t,ssr:r,props:i,head:a=!1,force:o=!1,anchorMetaName:s,parent:c}=e;return(0,n.mount)(this.instance,this,t,i,a,o,s,c,r)}function a(e={}){let{id:t,parent:r}=e;(0,n.unmount)(this.instance,this,t,r)}let o=function(e,t,n,o){return{instance:e,$:t,props:n,children:o,els:[],render:r,mount:i,unmount:a}};e.c=function(e,t,n,r){return Array.isArray(t)?o(e,{$:null},null,t):Array.isArray(n)?o(e,t,null,n):Array.isArray(r)?o(e,t,n,r):o(e,t,n,null)}})),L=o((e=>{Object.defineProperty(e,"__esModule",{value:!0}),e.CssRender=void 0;let t=I(),n=A();function r(e={}){let r={c:((...e)=>(0,t.c)(r,...e)),use:(e,...t)=>e.install(r,...t),find:n.queryElement,context:{},config:e};return r}e.CssRender=r})),R=o((e=>{Object.defineProperty(e,"__esModule",{value:!0})})),z=o((e=>{Object.defineProperty(e,"__esModule",{value:!0}),e.exists=void 0;let t=A();function n(e,n){if(e===void 0)return!1;if(n){let{context:{ids:t}}=n;return t.has(e)}return(0,t.queryElement)(e)!==null}e.exists=n})),B=o((e=>{var t=e&&e.__createBinding||(Object.create?(function(e,t,n,r){r===void 0&&(r=n),Object.defineProperty(e,r,{enumerable:!0,get:function(){return t[n]}})}):(function(e,t,n,r){r===void 0&&(r=n),e[r]=t[n]})),n=e&&e.__exportStar||function(e,n){for(var r in e)r!=="default"&&!Object.prototype.hasOwnProperty.call(n,r)&&t(n,e,r)};Object.defineProperty(e,"__esModule",{value:!0}),e.CssRender=e.exists=e.hash=void 0;let r=L();Object.defineProperty(e,"CssRender",{enumerable:!0,get:function(){return r.CssRender}}),n(R(),e);var i=P();Object.defineProperty(e,"hash",{enumerable:!0,get:function(){return i.default}});var a=z();Object.defineProperty(e,"exists",{enumerable:!0,get:function(){return a.exists}}),e.default=r.CssRender}))();function V(){if(typeof document>`u`)return()=>{};let e=(0,B.CssRender)();if(e.find(`dsh-tool-activator-configuration`)!==null)return()=>{};let t=`.${g.root}`,n=e.c([e.c(t,{color:`inherit`,maxWidth:`54rem`,width:`100%`,padding:`1rem`,lineHeight:`1.6`},[e.c(`*, *::before, *::after`,{boxSizing:`border-box`}),e.c(`p`,{margin:`0.5rem 0`}),e.c(`label, legend, summary`,{fontWeight:`600`}),e.c(`legend`,{padding:`0 0.35rem`}),e.c(`textarea, select`,{width:`100%`,padding:`0.6rem 0.75rem`,border:`1px solid color-mix(in srgb, currentColor 30%, transparent)`,borderRadius:`0.5rem`,color:`inherit`,background:`inherit`,font:`inherit`}),e.c(`textarea`,{resize:`vertical`,fontFamily:`ui-monospace, monospace`}),e.c(`input[type="checkbox"]`,{accentColor:`currentColor`,width:`1rem`,height:`1rem`}),e.c(`button`,{border:`1px solid color-mix(in srgb, currentColor 35%, transparent)`,borderRadius:`0.5rem`,padding:`0.55rem 0.9rem`,color:`inherit`,background:`color-mix(in srgb, currentColor 6%, transparent)`,font:`inherit`,cursor:`pointer`}),e.c(`button:hover:not(:disabled)`,{background:`color-mix(in srgb, currentColor 12%, transparent)`}),e.c(`:disabled`,{opacity:`0.6`,cursor:`not-allowed`}),e.c(`fieldset:disabled`,{opacity:`1`}),e.c(`input:focus-visible, textarea:focus-visible, select:focus-visible, button:focus-visible, summary:focus-visible`,{outline:`2px solid currentColor`,outlineOffset:`3px`})]),e.c(`${t} .${g.header}`,{display:`flex`,alignItems:`flex-start`,gap:`0.75rem`,marginBottom:`1rem`}),e.c(`${t} .${g.icon}`,{width:`1.5rem`,height:`1.5rem`,flexShrink:`0`,marginTop:`0.3rem`}),e.c(`${t} .${g.title}`,{margin:`0`,fontSize:`1.25rem`,lineHeight:`1.4`}),e.c(`${t} .${g.description}`,{opacity:`0.8`}),e.c(`${t} .${g.notice}`,{borderLeft:`3px solid color-mix(in srgb, currentColor 55%, transparent)`,borderRadius:`0.25rem`,background:`color-mix(in srgb, currentColor 5%, transparent)`,padding:`0.65rem 0.8rem`}),e.c(`${t} .${g.version}, ${t} .${g.help}`,{fontSize:`0.875rem`,opacity:`0.8`}),e.c(`${t} .${g.fields}`,{display:`grid`,gap:`0.8rem`,border:`0`,padding:`0`,margin:`1rem 0`,minWidth:`0`}),e.c(`${t} .${g.field}`,{display:`grid`,gap:`0.35rem`,minWidth:`0`}),e.c(`${t} .${g.checkbox}`,{display:`flex`,alignItems:`center`,gap:`0.6rem`,cursor:`pointer`}),e.c(`${t} .${g.advanced}`,{borderTop:`1px solid color-mix(in srgb, currentColor 20%, transparent)`,paddingTop:`0.8rem`},[e.c(`summary`,{cursor:`pointer`,marginBottom:`0.8rem`}),e.c(`.${g.field}`,{marginBottom:`1rem`})]),e.c(`${t} .${g.actions}`,{display:`flex`,flexWrap:`wrap`,gap:`0.65rem`,marginTop:`1rem`}),e.c(`${t} .${g.error}`,{color:`var(--color-danger, #d63e3e)`,fontWeight:`600`}),e.c(`${t} .${g.success}`,{color:`inherit`,fontWeight:`600`})]);n.mount({id:p,head:!0});let r=e.find(p);return()=>{r!==null&&e.find(`dsh-tool-activator-configuration`)===r&&n.unmount({id:p})}}const H=[`slots`];function U(e){e.effect(V),e.slots.inject(f,()=>e.slots.register({name:f,key:`dsh-tool-activator#tool-activator`,registrant:`dsh-tool-activator`,priority:0},O))}exports.apply=U,exports.inject=H;
|
|
16
16
|
return module.exports;}});
|
|
17
17
|
//# sourceMappingURL=client.js.map
|
package/dist/client.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.js","names":["React","ToolActivatorIcon","exports"],"sources":["../src/shared.ts","../src/client/constants.ts","../src/client/configuration.ts","../node_modules/.pnpm/@gravity-ui+icons@2.22.0_react@19.3.0/node_modules/@gravity-ui/icons/esm/Wrench.js","../src/client/configuration-page.tsx","../node_modules/.pnpm/css-render@0.15.14/node_modules/css-render/lib/parse.js","../node_modules/.pnpm/css-render@0.15.14/node_modules/css-render/lib/utils.js","../node_modules/.pnpm/css-render@0.15.14/node_modules/css-render/lib/render.js","../node_modules/.pnpm/@emotion+hash@0.8.0/node_modules/@emotion/hash/dist/hash.cjs.prod.js","../node_modules/.pnpm/@emotion+hash@0.8.0/node_modules/@emotion/hash/dist/hash.cjs.js","../node_modules/.pnpm/css-render@0.15.14/node_modules/css-render/lib/hash.js","../node_modules/.pnpm/css-render@0.15.14/node_modules/css-render/lib/mount.js","../node_modules/.pnpm/css-render@0.15.14/node_modules/css-render/lib/c.js","../node_modules/.pnpm/css-render@0.15.14/node_modules/css-render/lib/CssRender.js","../node_modules/.pnpm/css-render@0.15.14/node_modules/css-render/lib/types.js","../node_modules/.pnpm/css-render@0.15.14/node_modules/css-render/lib/exists.js","../node_modules/.pnpm/css-render@0.15.14/node_modules/css-render/lib/index.js","../src/client/styles.ts","../src/client/index.ts"],"sourcesContent":["export interface ToolGroup {\n identifier: string\n name: string\n description: string\n tools: readonly string[]\n sections: readonly string[]\n}\n\nexport interface ToolPolicy {\n enabled: boolean\n mode: 'automatic' | 'manual'\n basicTools: readonly string[]\n excludedTools: readonly string[]\n requireApproval: boolean\n autoGroupMcp: boolean\n groups: readonly ToolGroup[]\n sectionTools: Readonly<Record<string, readonly string[]>>\n}\n\nexport const DEFAULT_POLICY: ToolPolicy = {\n enabled: true,\n mode: 'automatic',\n basicTools: ['read', 'glob', 'grep', 'skill', 'ask_user_question', 'todo_write'],\n excludedTools: [],\n requireApproval: true,\n autoGroupMcp: true,\n groups: [],\n sectionTools: {},\n}\n\nexport const PACKAGE_NAME = 'dsh-tool-activator'\nexport const CONFIG_ROW_ID = 'tool-activator'\nexport const MINIMUM_CORE_VERSION = '0.2.0-rc.2'\n","import { CONFIG_ROW_ID, PACKAGE_NAME } from '../shared'\n\nexport const CONFIGURATION_SLOT = 'plugins.row.config'\nexport const CONFIGURATION_ID = `${PACKAGE_NAME}#${CONFIG_ROW_ID}`\nexport const CONFIGURATION_REGISTRANT = PACKAGE_NAME\nexport const CONFIGURATION_PRIORITY = 0\nexport const STYLE_ID = 'dsh-tool-activator-configuration'\nexport const TOOL_NAME_PATTERN = /^[\\w.-]+$/u\nexport const GROUP_FIELDS = new Set(['identifier', 'name', 'description', 'tools', 'sections'])\n\nexport const CLASSES = {\n root: 'dsh-tool-activator-config',\n header: 'dsh-tool-activator-header',\n title: 'dsh-tool-activator-title',\n description: 'dsh-tool-activator-description',\n notice: 'dsh-tool-activator-notice',\n error: 'dsh-tool-activator-error',\n success: 'dsh-tool-activator-success',\n fields: 'dsh-tool-activator-fields',\n field: 'dsh-tool-activator-field',\n checkbox: 'dsh-tool-activator-checkbox',\n help: 'dsh-tool-activator-help',\n actions: 'dsh-tool-activator-actions',\n advanced: 'dsh-tool-activator-advanced',\n version: 'dsh-tool-activator-version',\n icon: 'dsh-tool-activator-icon',\n} as const\n","import type { ConfigPageForm } from '@deepseek-ai/dsh-client-ui-plugin-manager/client'\nimport type { ToolGroup, ToolPolicy } from '../shared'\nimport type { ConfigMutationOps, PolicyDraftValidation, ToolPolicyDraft } from './types'\nimport { DEFAULT_POLICY } from '../shared'\nimport { GROUP_FIELDS, TOOL_NAME_PATTERN } from './constants'\n\nexport function canWriteConfiguration(form: ConfigPageForm | undefined): boolean {\n const state = form?.state\n return state?.status === 'ready'\n && state.value !== undefined\n && state.mode === 'host'\n && state.writable\n && Number.isSafeInteger(state.revision)\n && state.revision !== undefined\n && state.revision >= 0\n}\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return value !== null && typeof value === 'object' && !Array.isArray(value)\n}\n\nfunction isStringArray(value: unknown): value is string[] {\n return Array.isArray(value) && value.every(item => typeof item === 'string')\n}\n\nexport function createPolicyDraft(value: Record<string, unknown> | undefined): ToolPolicyDraft {\n return {\n enabled: typeof value?.enabled === 'boolean' ? value.enabled : DEFAULT_POLICY.enabled,\n mode: value?.mode === 'manual' ? 'manual' : DEFAULT_POLICY.mode,\n basicToolsText: isStringArray(value?.basicTools) ? value.basicTools.join('\\n') : DEFAULT_POLICY.basicTools.join('\\n'),\n excludedToolsText: isStringArray(value?.excludedTools) ? value.excludedTools.join('\\n') : DEFAULT_POLICY.excludedTools.join('\\n'),\n requireApproval: typeof value?.requireApproval === 'boolean' ? value.requireApproval : DEFAULT_POLICY.requireApproval,\n autoGroupMcp: typeof value?.autoGroupMcp === 'boolean' ? value.autoGroupMcp : DEFAULT_POLICY.autoGroupMcp,\n groupsText: JSON.stringify(Array.isArray(value?.groups) ? value.groups : DEFAULT_POLICY.groups, null, 2),\n sectionToolsText: JSON.stringify(isRecord(value?.sectionTools) ? value.sectionTools : DEFAULT_POLICY.sectionTools, null, 2),\n }\n}\n\nfunction toolNames(text: string, label: string): string[] {\n const names = [...new Set(text.split(/\\r?\\n/u).map(name => name.trim()).filter(Boolean))]\n if (names.some(name => !TOOL_NAME_PATTERN.test(name)))\n throw new Error(`${label}每行填写一个真实工具名,只能包含字母、数字、下划线、点和连字符。`)\n return names\n}\n\nfunction jsonValue(text: string, label: string): unknown {\n try {\n return JSON.parse(text)\n }\n catch {\n throw new Error(`${label}不是有效 JSON。`)\n }\n}\n\nfunction readGroups(text: string): ToolGroup[] {\n const value = jsonValue(text, '工具分组')\n if (!Array.isArray(value))\n throw new Error('工具分组必须是 JSON 数组。')\n const identifiers = new Set<string>()\n const claimedTools = new Set<string>()\n return value.map((item: unknown, index: number): ToolGroup => {\n const label = `第 ${index + 1} 个工具分组`\n if (!isRecord(item) || Object.keys(item).some(key => !GROUP_FIELDS.has(key)))\n throw new Error(`${label}只接受 identifier、name、description、tools 和 sections。`)\n if (typeof item.identifier !== 'string' || !TOOL_NAME_PATTERN.test(item.identifier))\n throw new Error(`${label}需要有效的 identifier(字母、数字、下划线、点或连字符)。`)\n if (identifiers.has(item.identifier))\n throw new Error(`工具分组 identifier 重复:${item.identifier}。`)\n identifiers.add(item.identifier)\n if (item.name !== undefined && typeof item.name !== 'string')\n throw new Error(`${label}的 name 必须是字符串。`)\n if (item.description !== undefined && typeof item.description !== 'string')\n throw new Error(`${label}的 description 必须是字符串。`)\n if (!isStringArray(item.tools) || item.tools.length === 0 || item.tools.some(name => !TOOL_NAME_PATTERN.test(name)))\n throw new Error(`${label}的 tools 至少包含一个有效工具名。`)\n for (const name of item.tools) {\n if (claimedTools.has(name))\n throw new Error(`工具 ${name} 不能同时属于多个分组或在分组内重复。`)\n claimedTools.add(name)\n }\n if (item.sections !== undefined && !isStringArray(item.sections))\n throw new Error(`${label}的 sections 必须是字符串数组。`)\n return {\n identifier: item.identifier,\n name: typeof item.name === 'string' ? item.name : '',\n description: typeof item.description === 'string' ? item.description : '',\n tools: [...item.tools],\n sections: isStringArray(item.sections) ? [...item.sections] : [],\n }\n })\n}\n\nfunction readSectionTools(text: string): Readonly<Record<string, readonly string[]>> {\n const value = jsonValue(text, '说明节依赖')\n if (!isRecord(value))\n throw new Error('说明节依赖必须是 JSON 对象。')\n const entries = Object.entries(value).map(([section, names]): [string, string[]] => {\n if (!isStringArray(names) || names.some(name => !TOOL_NAME_PATTERN.test(name)))\n throw new Error('说明节依赖需要说明节名称和有效工具名数组。')\n return [section, [...new Set(names)]]\n })\n return Object.fromEntries(entries)\n}\n\nexport function validatePolicyDraft(draft: ToolPolicyDraft): PolicyDraftValidation {\n try {\n const policy: ToolPolicy = {\n enabled: draft.enabled,\n mode: draft.mode,\n basicTools: toolNames(draft.basicToolsText, '基础工具'),\n excludedTools: toolNames(draft.excludedToolsText, '排除工具'),\n requireApproval: draft.requireApproval,\n autoGroupMcp: draft.autoGroupMcp,\n groups: readGroups(draft.groupsText),\n sectionTools: readSectionTools(draft.sectionToolsText),\n }\n return { ok: true, policy }\n }\n catch (error) {\n return { ok: false, message: error instanceof Error ? error.message : '配置格式无效。' }\n }\n}\n\nexport function policyMutationOps(policy: ToolPolicy): ConfigMutationOps {\n return Object.entries(policy).map(([field, value]) => ({ op: 'set', path: [field], value }))\n}\n","import * as React from 'react';\nconst Wrench = (props) => (React.createElement(\"svg\", Object.assign({ xmlns: \"http://www.w3.org/2000/svg\", width: 16, height: 16, fill: \"none\", viewBox: \"0 0 16 16\" }, props),\n React.createElement(\"path\", { fill: \"currentColor\", fillRule: \"evenodd\", d: \"m8.581 9.298.776.143q.311.059.643.059A3.5 3.5 0 0 0 13.5 6q0-.177-.027-.352l-1.39 1.39a1.58 1.58 0 0 1-1.114.462A2.47 2.47 0 0 1 8.5 5.03c0-.417.166-.817.461-1.112l1.39-1.39A2.4 2.4 0 0 0 10 2.5a3.5 3.5 0 0 0-3.441 4.143l.143.776-3.813 3.813a1.329 1.329 0 0 0 1.879 1.879zm3.817-6.787a.795.795 0 0 0-.411-1.018C11.87 1.432 11.014 1 10 1a5 5 0 0 0-4.916 5.916l-3.256 3.256a2.828 2.828 0 1 0 4 4l3.256-3.256Q9.53 11 10 11a5 5 0 0 0 5-5c0-1.014-.432-1.87-.493-1.987l-.014-.027a.795.795 0 0 0-1.273-.207l-2.198 2.2a.07.07 0 0 1-.053.021.97.97 0 0 1-.969-.97q0-.03.022-.052L12.22 2.78a.8.8 0 0 0 .178-.27\", clipRule: \"evenodd\" })));\nexport default Wrench;\n","import type { FormEvent, ReactElement } from 'react'\nimport type { ConfigurationEditorState, ToolActivatorConfigurationProps, ToolPolicyDraft } from './types'\nimport { useEffect, useId, useRef, useState } from 'react'\nimport { MINIMUM_CORE_VERSION } from '../shared'\nimport { canWriteConfiguration, createPolicyDraft, policyMutationOps, validatePolicyDraft } from './configuration'\nimport { CLASSES } from './constants'\nimport { ToolActivatorIcon } from './icons'\n\nexport function ToolActivatorConfiguration({ view, form }: ToolActivatorConfigurationProps): ReactElement {\n const fieldId = useId()\n const aliveRef = useRef(false)\n const requestSerialRef = useRef(0)\n const currentFormRef = useRef(form)\n currentFormRef.current = form\n const writable = canWriteConfiguration(form)\n const mutate = form?.mutate\n const snapshotValue = form?.state.value\n const snapshotRevision = form?.state.revision\n const [editor, setEditor] = useState<ConfigurationEditorState>(() => ({\n mutate,\n writable,\n value: snapshotValue,\n revision: snapshotRevision,\n draft: createPolicyDraft(snapshotValue),\n pending: false,\n feedback: undefined,\n }))\n const ownerChanged = editor.mutate !== mutate || editor.writable !== writable\n const snapshotChanged = editor.value !== snapshotValue || editor.revision !== snapshotRevision\n if (ownerChanged || snapshotChanged) {\n if (ownerChanged)\n requestSerialRef.current += 1\n setEditor({\n mutate,\n writable,\n value: snapshotValue,\n revision: snapshotRevision,\n draft: createPolicyDraft(snapshotValue),\n pending: ownerChanged ? false : editor.pending,\n feedback: ownerChanged || !editor.pending ? undefined : editor.feedback,\n })\n }\n const { draft, pending, feedback } = editor\n const fieldsDisabled = !writable || pending\n\n useEffect(() => {\n aliveRef.current = true\n return () => {\n aliveRef.current = false\n requestSerialRef.current += 1\n }\n }, [])\n\n function update<K extends keyof ToolPolicyDraft>(key: K, value: ToolPolicyDraft[K]): void {\n setEditor(previous => ({ ...previous, draft: { ...previous.draft, [key]: value }, feedback: undefined }))\n }\n\n function discard(): void {\n setEditor(previous => ({ ...previous, draft: createPolicyDraft(currentFormRef.current?.state.value), feedback: undefined }))\n }\n\n async function save(): Promise<void> {\n const acceptedForm = currentFormRef.current\n if (!acceptedForm || !canWriteConfiguration(acceptedForm) || pending)\n return\n const result = validatePolicyDraft(draft)\n if (!result.ok) {\n setEditor(previous => ({ ...previous, feedback: { kind: 'error', message: result.message } }))\n return\n }\n const serial = ++requestSerialRef.current\n const acceptedMutate = acceptedForm.mutate\n const revision = acceptedForm.state.revision\n setEditor(previous => ({ ...previous, pending: true, feedback: undefined }))\n function isCurrent(): boolean {\n return aliveRef.current\n && requestSerialRef.current === serial\n && currentFormRef.current?.mutate === acceptedMutate\n && canWriteConfiguration(currentFormRef.current)\n }\n try {\n const applied = await acceptedForm.mutate(policyMutationOps(result.policy), revision)\n if (!isCurrent())\n return\n setEditor(previous => ({\n ...previous,\n feedback: applied\n ? { kind: 'success', message: '配置已保存。新的模型请求会使用最新工具策略。' }\n : { kind: 'error', message: '宿主未接受保存(配置冲突、校验失败或不可写)。请核对最新配置后重试。' },\n }))\n }\n catch (error) {\n if (!isCurrent())\n return\n setEditor(previous => ({\n ...previous,\n feedback: { kind: 'error', message: `保存失败:${error instanceof Error ? error.message : '无法连接宿主。'}` },\n }))\n }\n finally {\n if (isCurrent())\n setEditor(previous => ({ ...previous, pending: false }))\n }\n }\n\n function submit(event: FormEvent<HTMLFormElement>): void {\n event.preventDefault()\n void save()\n }\n\n if (view === 'summary') {\n return (\n <p className={CLASSES.description}>\n 默认仅提供基础工具;按需发现和激活其他工具。这不是执行权限授权。\n </p>\n )\n }\n\n return (\n <section className={CLASSES.root} aria-labelledby={`${fieldId}-title`}>\n <header className={CLASSES.header}>\n <ToolActivatorIcon className={CLASSES.icon} aria-hidden=\"true\" />\n <div>\n <h2 id={`${fieldId}-title`} className={CLASSES.title}>按需工具加载</h2>\n <p className={CLASSES.description}>默认仅向模型展示基础工具,按当前会话和工具作用域发现、激活其他工具。</p>\n </div>\n </header>\n <p className={CLASSES.notice}>\n 工具展示不等于执行授权。隐藏、排除或激活工具不会绕过 DSH 的审批、沙箱和工具安全检查。\n </p>\n <p className={CLASSES.version}>\n 需要 DSH\n {' '}\n {MINIMUM_CORE_VERSION}\n {' '}\n 或以上,且须提供官方插件配置表单。不支持的版本应禁用本功能,不会使用私有 API。\n </p>\n {!form || form.state.status === 'unavailable'\n ? <p role=\"status\" className={CLASSES.notice}>此配置表单不可用。请检查宿主版本、插件加载状态及官方配置服务。</p>\n : form.state.status === 'loading'\n ? <p role=\"status\" className={CLASSES.notice}>正在加载宿主配置…</p>\n : !writable\n ? <p role=\"status\" className={CLASSES.notice}>宿主配置只读或尚未同步。仅在 host 模式、配置可写且版本已同步时允许保存。</p>\n : null}\n <form onSubmit={submit} aria-label=\"工具激活策略\" aria-busy={pending}>\n <fieldset className={CLASSES.fields} disabled={fieldsDisabled}>\n <legend>工具策略</legend>\n <label className={CLASSES.checkbox}>\n <input type=\"checkbox\" checked={draft.enabled} onChange={event => update('enabled', event.target.checked)} />\n 启用按需工具加载\n </label>\n {!draft.enabled && <p className={CLASSES.help}>关闭时不进行工具展示过滤;仍遵守原有执行权限检查。</p>}\n <div className={CLASSES.field}>\n <label htmlFor={`${fieldId}-mode`}>加载模式</label>\n <select id={`${fieldId}-mode`} value={draft.mode} onChange={event => update('mode', event.target.value === 'manual' ? 'manual' : 'automatic')} aria-describedby={`${fieldId}-mode-help`}>\n <option value=\"automatic\">自动:基础工具 + 按需激活</option>\n <option value=\"manual\">手动:仅基础工具</option>\n </select>\n <p id={`${fieldId}-mode-help`} className={CLASSES.help}>\n {draft.mode === 'manual'\n ? '手动模式仅向模型提供基础工具,不允许通过本插件激活其他工具。'\n : '自动模式保留基础工具与发现、激活入口;激活只改变后续工具展示,不授予执行权限。'}\n </p>\n </div>\n <label className={CLASSES.checkbox}>\n <input type=\"checkbox\" checked={draft.requireApproval} onChange={event => update('requireApproval', event.target.checked)} />\n 激活前请求用户确认\n </label>\n <p className={CLASSES.help}>默认开启;没有可用审批服务时拒绝激活。关闭此项也不会关闭核心安全审批。</p>\n <label className={CLASSES.checkbox}>\n <input type=\"checkbox\" checked={draft.autoGroupMcp} onChange={event => update('autoGroupMcp', event.target.checked)} />\n 自动按 MCP 服务分组\n </label>\n <p className={CLASSES.help}>只根据公开的 mcp__server__tool 工具名聚合,不推测服务器私有元数据。</p>\n <div className={CLASSES.field}>\n <label htmlFor={`${fieldId}-basic`}>基础工具(每行一个名称)</label>\n <textarea id={`${fieldId}-basic`} rows={6} value={draft.basicToolsText} onChange={event => update('basicToolsText', event.target.value)} aria-describedby={`${fieldId}-basic-help`} spellCheck={false} />\n <p id={`${fieldId}-basic-help`} className={CLASSES.help}>填写真实工具名;默认包含 read、glob、grep、skill、ask_user_question、todo_write。</p>\n </div>\n <div className={CLASSES.field}>\n <label htmlFor={`${fieldId}-excluded`}>排除工具(每行一个名称)</label>\n <textarea id={`${fieldId}-excluded`} rows={3} value={draft.excludedToolsText} onChange={event => update('excludedToolsText', event.target.value)} aria-describedby={`${fieldId}-excluded-help`} spellCheck={false} />\n <p id={`${fieldId}-excluded-help`} className={CLASSES.help}>不纳入本插件的发现与激活目录;不是禁止执行名单,也不是安全权限边界。</p>\n </div>\n <details className={CLASSES.advanced}>\n <summary>高级:显式分组与说明节依赖</summary>\n <div className={CLASSES.field}>\n <label htmlFor={`${fieldId}-groups`}>工具分组(JSON 数组)</label>\n <textarea id={`${fieldId}-groups`} rows={8} value={draft.groupsText} onChange={event => update('groupsText', event.target.value)} aria-describedby={`${fieldId}-groups-help`} spellCheck={false} />\n <p id={`${fieldId}-groups-help`} className={CLASSES.help}>每项包含唯一 identifier、至少一个 tools 工具名;可选 name、description、sections。每个工具只能属于一个分组。空名称和描述采用默认说明。</p>\n </div>\n <div className={CLASSES.field}>\n <label htmlFor={`${fieldId}-sections`}>说明节依赖(JSON 对象)</label>\n <textarea id={`${fieldId}-sections`} rows={6} value={draft.sectionToolsText} onChange={event => update('sectionToolsText', event.target.value)} aria-describedby={`${fieldId}-sections-help`} spellCheck={false} />\n <p id={`${fieldId}-sections-help`} className={CLASSES.help}>将公开系统说明节名称映射到真实工具名数组;仅用于与工具一起显示相关说明,不改写核心安全说明。</p>\n </div>\n </details>\n </fieldset>\n {feedback && (\n <p role={feedback.kind === 'error' ? 'alert' : 'status'} className={feedback.kind === 'error' ? CLASSES.error : CLASSES.success}>\n {feedback.message}\n </p>\n )}\n {pending && <p role=\"status\" className={CLASSES.help}>正在保存宿主配置…</p>}\n <div className={CLASSES.actions}>\n <button type=\"submit\" disabled={fieldsDisabled}>{pending ? '保存中…' : '保存配置'}</button>\n <button type=\"button\" disabled={fieldsDisabled} onClick={discard}>放弃未保存更改</button>\n </div>\n </form>\n </section>\n )\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.parseSelectorPath = void 0;\nfunction ampCount(selector) {\n let cnt = 0;\n for (let i = 0; i < selector.length; ++i) {\n if (selector[i] === '&')\n ++cnt;\n }\n return cnt;\n}\n/**\n * Don't just use ',' to separate css selector. For example:\n * x:(a, b) {} will be split into 'x:(a' and 'b)', which is not expected.\n * Make sure comma doesn't exist inside parentheses.\n */\nconst separatorRegex = /\\s*,(?![^(]*\\))\\s*/g;\nconst extraSpaceRegex = /\\s+/g;\n/**\n * selector must includes '&'\n * selector is trimmed\n * every part of amp is trimmed\n */\nfunction resolveSelectorWithAmp(amp, selector) {\n const nextAmp = [];\n selector.split(separatorRegex).forEach(partialSelector => {\n let round = ampCount(partialSelector);\n // eslint-disable-next-line @typescript-eslint/strict-boolean-expressions\n if (!round) {\n amp.forEach(partialAmp => {\n nextAmp.push(\n // eslint-disable-next-line @typescript-eslint/strict-boolean-expressions\n (partialAmp && partialAmp + ' ') + partialSelector);\n });\n return;\n }\n else if (round === 1) {\n amp.forEach(partialAmp => {\n nextAmp.push(partialSelector.replace('&', partialAmp));\n });\n return;\n }\n let partialNextAmp = [\n partialSelector\n ];\n // eslint-disable-next-line @typescript-eslint/strict-boolean-expressions\n while (round--) {\n const nextPartialNextAmp = [];\n partialNextAmp.forEach(selectorItr => {\n amp.forEach(partialAmp => {\n nextPartialNextAmp.push(selectorItr.replace('&', partialAmp));\n });\n });\n partialNextAmp = nextPartialNextAmp;\n }\n partialNextAmp.forEach(part => nextAmp.push(part));\n });\n return nextAmp;\n}\n/**\n * selector mustn't includes '&'\n * selector is trimmed\n */\nfunction resolveSelector(amp, selector) {\n const nextAmp = [];\n selector.split(separatorRegex).forEach(partialSelector => {\n amp.forEach(partialAmp => {\n // eslint-disable-next-line @typescript-eslint/strict-boolean-expressions\n nextAmp.push(((partialAmp && partialAmp + ' ') + partialSelector));\n });\n });\n return nextAmp;\n}\nfunction parseSelectorPath(selectorPaths) {\n let amp = [''];\n selectorPaths.forEach(selector => {\n // eslint-disable-next-line\n selector = selector && selector.trim();\n if (\n // eslint-disable-next-line @typescript-eslint/strict-boolean-expressions\n !selector) {\n /**\n * if it's a empty selector, do nothing\n */\n return;\n }\n // eslint-disable-next-line @typescript-eslint/strict-boolean-expressions\n if (selector.includes('&')) {\n amp = resolveSelectorWithAmp(amp, selector);\n }\n else {\n amp = resolveSelector(amp, selector);\n }\n });\n return amp.join(', ').replace(extraSpaceRegex, ' ');\n}\nexports.parseSelectorPath = parseSelectorPath;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.isMediaOrSupports = exports.createElement = exports.queryElement = exports.removeElement = void 0;\nfunction removeElement(el) {\n /* istanbul ignore if */\n // eslint-disable-next-line @typescript-eslint/strict-boolean-expressions\n if (!el)\n return;\n const parentElement = el.parentElement;\n /* istanbul ignore else */\n // eslint-disable-next-line @typescript-eslint/strict-boolean-expressions\n if (parentElement)\n parentElement.removeChild(el);\n}\nexports.removeElement = removeElement;\nfunction queryElement(id, parent) {\n return (parent !== null && parent !== void 0 ? parent : document.head).querySelector(`style[cssr-id=\"${id}\"]`);\n}\nexports.queryElement = queryElement;\nfunction createElement(id) {\n const el = document.createElement('style');\n el.setAttribute('cssr-id', id);\n return el;\n}\nexports.createElement = createElement;\nfunction isMediaOrSupports(selector) {\n // eslint-disable-next-line @typescript-eslint/strict-boolean-expressions\n if (!selector)\n return false;\n return /^\\s*@(s|m)/.test(selector);\n}\nexports.isMediaOrSupports = isMediaOrSupports;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.render = void 0;\nconst parse_1 = require(\"./parse\");\nconst utils_1 = require(\"./utils\");\nconst kebabRegex = /[A-Z]/g;\nfunction kebabCase(pattern) {\n return pattern.replace(kebabRegex, match => '-' + match.toLowerCase());\n}\n/** TODO: refine it to solve nested object */\nfunction unwrapProperty(prop, indent = ' ') {\n if (typeof prop === 'object' && prop !== null) {\n return (' {\\n' +\n Object.entries(prop).map(v => {\n return indent + ` ${kebabCase(v[0])}: ${v[1]};`;\n }).join('\\n') +\n '\\n' + indent + '}');\n }\n return `: ${prop};`;\n}\n/** unwrap properties */\nfunction unwrapProperties(props, instance, params) {\n if (typeof props === 'function') {\n return props({\n context: instance.context,\n props: params\n });\n }\n return props;\n}\nfunction createStyle(selector, props, instance, params) {\n if (!props)\n return '';\n // eslint-disable-next-line\n const unwrappedProps = unwrapProperties(props, instance, params);\n if (!unwrappedProps)\n return '';\n if (typeof unwrappedProps === 'string') {\n return `${selector} {\\n${unwrappedProps}\\n}`;\n }\n const propertyNames = Object.keys(unwrappedProps);\n if (propertyNames.length === 0) {\n if (instance.config.keepEmptyBlock)\n return selector + ' {\\n}';\n return '';\n }\n const statements = selector\n ? [\n selector + ' {'\n ]\n : [];\n propertyNames.forEach(propertyName => {\n const property = unwrappedProps[propertyName];\n if (propertyName === 'raw') {\n statements.push('\\n' + property + '\\n');\n return;\n }\n propertyName = kebabCase(propertyName);\n if (property !== null && property !== undefined) {\n statements.push(` ${propertyName}${unwrapProperty(property)}`);\n }\n });\n if (selector) {\n statements.push('}');\n }\n return statements.join('\\n');\n}\nfunction loopCNodeListWithCallback(children, options, callback) {\n /* istanbul ignore if */\n if (!children)\n return;\n children.forEach(child => {\n if (Array.isArray(child)) {\n loopCNodeListWithCallback(child, options, callback);\n }\n else if (typeof child === 'function') {\n const grandChildren = child(options);\n if (Array.isArray(grandChildren)) {\n loopCNodeListWithCallback(grandChildren, options, callback);\n }\n else if (grandChildren) {\n callback(grandChildren);\n }\n }\n else if (child) {\n callback(child);\n }\n });\n}\nfunction traverseCNode(node, selectorPaths, styles, instance, params) {\n const $ = node.$;\n let blockSelector = '';\n if (!$ || typeof $ === 'string') {\n if ((0, utils_1.isMediaOrSupports)($)) {\n blockSelector = $;\n }\n else {\n // as a string selector\n selectorPaths.push($);\n }\n }\n else if (typeof $ === 'function') {\n const selector = $({\n context: instance.context,\n props: params\n });\n if ((0, utils_1.isMediaOrSupports)(selector)) {\n blockSelector = selector;\n }\n else {\n // as a lazy selector\n selectorPaths.push(selector);\n }\n }\n else { // as a option selector\n if ($.before)\n $.before(instance.context);\n if (!$.$ || typeof $.$ === 'string') {\n if ((0, utils_1.isMediaOrSupports)($.$)) {\n blockSelector = $.$;\n }\n else {\n // as a string selector\n selectorPaths.push($.$);\n }\n }\n else /* istanbul ignore else */ if ($.$) {\n const selector = $.$({\n context: instance.context,\n props: params\n });\n if ((0, utils_1.isMediaOrSupports)(selector)) {\n blockSelector = selector;\n }\n else {\n // as a lazy selector\n selectorPaths.push(selector);\n }\n }\n }\n const selector = (0, parse_1.parseSelectorPath)(selectorPaths);\n const style = createStyle(selector, node.props, instance, params);\n if (blockSelector) {\n styles.push(`${blockSelector} {`);\n }\n else if (style.length) {\n styles.push(style);\n }\n if (node.children) {\n loopCNodeListWithCallback(node.children, {\n context: instance.context,\n props: params\n }, childNode => {\n if (typeof childNode === 'string') {\n const style = createStyle(selector, { raw: childNode }, instance, params);\n styles.push(style);\n }\n else {\n traverseCNode(childNode, selectorPaths, styles, instance, params);\n }\n });\n }\n selectorPaths.pop();\n if (blockSelector) {\n styles.push('}');\n }\n if ($ && $.after)\n $.after(instance.context);\n}\nfunction render(node, instance, props) {\n const styles = [];\n traverseCNode(node, [], styles, instance, props);\n return styles.join('\\n\\n');\n}\nexports.render = render;\n","\"use strict\";\n\nfunction murmur2(str) {\n for (var k, h = 0, i = 0, len = str.length; len >= 4; ++i, len -= 4) k = 1540483477 * (65535 & (k = 255 & str.charCodeAt(i) | (255 & str.charCodeAt(++i)) << 8 | (255 & str.charCodeAt(++i)) << 16 | (255 & str.charCodeAt(++i)) << 24)) + (59797 * (k >>> 16) << 16), \n h = 1540483477 * (65535 & (k ^= k >>> 24)) + (59797 * (k >>> 16) << 16) ^ 1540483477 * (65535 & h) + (59797 * (h >>> 16) << 16);\n switch (len) {\n case 3:\n h ^= (255 & str.charCodeAt(i + 2)) << 16;\n\n case 2:\n h ^= (255 & str.charCodeAt(i + 1)) << 8;\n\n case 1:\n h = 1540483477 * (65535 & (h ^= 255 & str.charCodeAt(i))) + (59797 * (h >>> 16) << 16);\n }\n return (((h = 1540483477 * (65535 & (h ^= h >>> 13)) + (59797 * (h >>> 16) << 16)) ^ h >>> 15) >>> 0).toString(36);\n}\n\nObject.defineProperty(exports, \"__esModule\", {\n value: !0\n}), exports.default = murmur2;\n","'use strict';\n\nif (process.env.NODE_ENV === \"production\") {\n module.exports = require(\"./hash.cjs.prod.js\");\n} else {\n module.exports = require(\"./hash.cjs.dev.js\");\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.default = void 0;\nvar hash_1 = require(\"@emotion/hash\");\nObject.defineProperty(exports, \"default\", { enumerable: true, get: function () { return hash_1.default; } });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.mount = exports.unmount = void 0;\n/* eslint-disable @typescript-eslint/prefer-ts-expect-error */\n/* eslint-disable @typescript-eslint/strict-boolean-expressions */\nconst hash_1 = require(\"./hash\");\nconst utils_1 = require(\"./utils\");\nif (typeof window !== 'undefined') {\n window.__cssrContext = {};\n}\nfunction unmount(instance, node, id, parent) {\n const { els } = node;\n // If id is undefined, unmount all styles\n if (id === undefined) {\n els.forEach(utils_1.removeElement);\n node.els = [];\n }\n else {\n const target = (0, utils_1.queryElement)(id, parent);\n // eslint-disable-next-line\n if (target && els.includes(target)) {\n (0, utils_1.removeElement)(target);\n node.els = els.filter((el) => el !== target);\n }\n }\n}\nexports.unmount = unmount;\nfunction addElementToList(els, target) {\n els.push(target);\n}\nfunction mount(instance, node, id, props, head, force, anchorMetaName, parent, ssrAdapter\n// eslint-disable-next-line @typescript-eslint/no-invalid-void-type\n) {\n let style;\n if (id === undefined) {\n style = node.render(props);\n id = (0, hash_1.default)(style);\n }\n if (ssrAdapter) {\n ssrAdapter.adapter(id, style !== null && style !== void 0 ? style : node.render(props));\n return;\n }\n if (parent === undefined) {\n parent = document.head;\n }\n const queriedTarget = (0, utils_1.queryElement)(id, parent);\n if (queriedTarget !== null && !force) {\n return queriedTarget;\n }\n const target = queriedTarget !== null && queriedTarget !== void 0 ? queriedTarget : (0, utils_1.createElement)(id);\n if (style === undefined)\n style = node.render(props);\n target.textContent = style;\n if (queriedTarget !== null)\n return queriedTarget;\n if (anchorMetaName) {\n const anchorMetaEl = parent.querySelector(`meta[name=\"${anchorMetaName}\"]`);\n if (anchorMetaEl) {\n parent.insertBefore(target, anchorMetaEl);\n addElementToList(node.els, target);\n return target;\n }\n }\n if (head) {\n parent.insertBefore(target, parent.querySelector('style, link'));\n }\n else {\n parent.appendChild(target);\n }\n addElementToList(node.els, target);\n return target;\n}\nexports.mount = mount;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.c = void 0;\nconst render_1 = require(\"./render\");\nconst mount_1 = require(\"./mount\");\nfunction wrappedRender(props) {\n return (0, render_1.render)(this, this.instance, props);\n}\n// do not guard node calling, it should throw an error.\nfunction wrappedMount(options = {}\n// eslint-disable-next-line @typescript-eslint/no-invalid-void-type\n) {\n const { id, ssr, props, head = false, force = false, anchorMetaName, parent } = options;\n const targetElement = (0, mount_1.mount)(this.instance, this, id, props, head, force, anchorMetaName, parent, ssr);\n return targetElement;\n}\nfunction wrappedUnmount(options = {}) {\n /* istanbul ignore next */\n // eslint-disable-next-line @typescript-eslint/strict-boolean-expressions\n const { id, parent } = options;\n (0, mount_1.unmount)(this.instance, this, id, parent);\n}\nconst createCNode = function (instance, $, props, children) {\n return {\n instance,\n $,\n props,\n children,\n els: [],\n render: wrappedRender,\n mount: wrappedMount,\n unmount: wrappedUnmount\n };\n};\nexports.c = function (instance, $, props, children) {\n if (Array.isArray($)) {\n return createCNode(instance, { $: null }, null, $);\n }\n else if (Array.isArray(props)) {\n return createCNode(instance, $, null, props);\n }\n else if (Array.isArray(children)) {\n return createCNode(instance, $, props, children);\n }\n else {\n return createCNode(instance, $, props, null);\n }\n};\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.CssRender = void 0;\nconst c_1 = require(\"./c\");\nconst utils_1 = require(\"./utils\");\nfunction CssRender(config = {}) {\n const cssr = {\n c: ((...args) => (0, c_1.c)(cssr, ...args)),\n use: (plugin, ...args) => plugin.install(cssr, ...args),\n find: utils_1.queryElement,\n context: {},\n config\n };\n return cssr;\n}\nexports.CssRender = CssRender;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.exists = void 0;\nconst utils_1 = require(\"./utils\");\nfunction exists(id, ssr) {\n if (id === undefined)\n return false;\n if (ssr) {\n const { context: { ids } } = ssr;\n return ids.has(id);\n }\n return (0, utils_1.queryElement)(id) !== null;\n}\nexports.exists = exists;\n","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.CssRender = exports.exists = exports.hash = void 0;\n/* istanbul ignore file */\nconst CssRender_1 = require(\"./CssRender\");\nObject.defineProperty(exports, \"CssRender\", { enumerable: true, get: function () { return CssRender_1.CssRender; } });\n__exportStar(require(\"./types\"), exports);\nvar hash_1 = require(\"./hash\");\nObject.defineProperty(exports, \"hash\", { enumerable: true, get: function () { return hash_1.default; } });\nvar exists_1 = require(\"./exists\");\nObject.defineProperty(exports, \"exists\", { enumerable: true, get: function () { return exists_1.exists; } });\nexports.default = CssRender_1.CssRender;\n","import CssRender from 'css-render'\nimport { CLASSES, STYLE_ID } from './constants'\n\nexport function mountToolActivatorStyles(): () => void {\n if (typeof document === 'undefined')\n return () => {}\n const cssr = CssRender()\n if (cssr.find(STYLE_ID) !== null)\n return () => {}\n const root = `.${CLASSES.root}`\n const style = cssr.c([\n cssr.c(root, {\n color: 'inherit',\n maxWidth: '54rem',\n width: '100%',\n padding: '1rem',\n lineHeight: '1.6',\n }, [\n cssr.c('*, *::before, *::after', { boxSizing: 'border-box' }),\n cssr.c('p', { margin: '0.5rem 0' }),\n cssr.c('label, legend, summary', { fontWeight: '600' }),\n cssr.c('legend', { padding: '0 0.35rem' }),\n cssr.c('textarea, select', {\n width: '100%',\n padding: '0.6rem 0.75rem',\n border: '1px solid color-mix(in srgb, currentColor 30%, transparent)',\n borderRadius: '0.5rem',\n color: 'inherit',\n background: 'inherit',\n font: 'inherit',\n }),\n cssr.c('textarea', { resize: 'vertical', fontFamily: 'ui-monospace, monospace' }),\n cssr.c('input[type=\"checkbox\"]', { accentColor: 'currentColor', width: '1rem', height: '1rem' }),\n cssr.c('button', {\n border: '1px solid color-mix(in srgb, currentColor 35%, transparent)',\n borderRadius: '0.5rem',\n padding: '0.55rem 0.9rem',\n color: 'inherit',\n background: 'color-mix(in srgb, currentColor 6%, transparent)',\n font: 'inherit',\n cursor: 'pointer',\n }),\n cssr.c('button:hover:not(:disabled)', { background: 'color-mix(in srgb, currentColor 12%, transparent)' }),\n cssr.c(':disabled', { opacity: '0.6', cursor: 'not-allowed' }),\n cssr.c('fieldset:disabled', { opacity: '1' }),\n cssr.c('input:focus-visible, textarea:focus-visible, select:focus-visible, button:focus-visible, summary:focus-visible', {\n outline: '2px solid currentColor',\n outlineOffset: '3px',\n }),\n ]),\n cssr.c(`${root} .${CLASSES.header}`, { display: 'flex', alignItems: 'flex-start', gap: '0.75rem', marginBottom: '1rem' }),\n cssr.c(`${root} .${CLASSES.icon}`, { width: '1.5rem', height: '1.5rem', flexShrink: '0', marginTop: '0.3rem' }),\n cssr.c(`${root} .${CLASSES.title}`, { margin: '0', fontSize: '1.25rem', lineHeight: '1.4' }),\n cssr.c(`${root} .${CLASSES.description}`, { opacity: '0.8' }),\n cssr.c(`${root} .${CLASSES.notice}`, {\n borderLeft: '3px solid color-mix(in srgb, currentColor 55%, transparent)',\n borderRadius: '0.25rem',\n background: 'color-mix(in srgb, currentColor 5%, transparent)',\n padding: '0.65rem 0.8rem',\n }),\n cssr.c(`${root} .${CLASSES.version}, ${root} .${CLASSES.help}`, { fontSize: '0.875rem', opacity: '0.8' }),\n cssr.c(`${root} .${CLASSES.fields}`, { display: 'grid', gap: '0.8rem', border: '0', padding: '0', margin: '1rem 0', minWidth: '0' }),\n cssr.c(`${root} .${CLASSES.field}`, { display: 'grid', gap: '0.35rem', minWidth: '0' }),\n cssr.c(`${root} .${CLASSES.checkbox}`, { display: 'flex', alignItems: 'center', gap: '0.6rem', cursor: 'pointer' }),\n cssr.c(`${root} .${CLASSES.advanced}`, { borderTop: '1px solid color-mix(in srgb, currentColor 20%, transparent)', paddingTop: '0.8rem' }, [\n cssr.c('summary', { cursor: 'pointer', marginBottom: '0.8rem' }),\n cssr.c(`.${CLASSES.field}`, { marginBottom: '1rem' }),\n ]),\n cssr.c(`${root} .${CLASSES.actions}`, { display: 'flex', flexWrap: 'wrap', gap: '0.65rem', marginTop: '1rem' }),\n cssr.c(`${root} .${CLASSES.error}`, { color: 'var(--color-danger, #d63e3e)', fontWeight: '600' }),\n cssr.c(`${root} .${CLASSES.success}`, { color: 'inherit', fontWeight: '600' }),\n ])\n style.mount({ id: STYLE_ID, head: true })\n const ownedStyle = cssr.find(STYLE_ID)\n return () => {\n if (ownedStyle !== null && cssr.find(STYLE_ID) === ownedStyle)\n style.unmount({ id: STYLE_ID })\n }\n}\n","import type { Context } from '@deepseek-ai/cordis'\r\nimport type {} from '@deepseek-ai/dsh-client-ui-renderer/client'\r\nimport { ToolActivatorConfiguration } from './configuration-page'\r\nimport { CONFIGURATION_ID, CONFIGURATION_PRIORITY, CONFIGURATION_REGISTRANT, CONFIGURATION_SLOT } from './constants'\r\nimport { mountToolActivatorStyles } from './styles'\r\n\r\nexport const inject = ['slots']\r\n\r\nexport function apply(ctx: Context): void {\r\n ctx.effect(mountToolActivatorStyles)\r\n ctx.slots.inject(CONFIGURATION_SLOT, () => ctx.slots.register({\r\n name: CONFIGURATION_SLOT,\r\n key: CONFIGURATION_ID,\r\n registrant: CONFIGURATION_REGISTRANT,\r\n priority: CONFIGURATION_PRIORITY,\r\n }, ToolActivatorConfiguration))\r\n}\r\n"],"x_google_ignoreList":[3,5,6,7,8,9,10,11,12,13,14,15,16],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"client.js","names":["React","ToolActivatorIcon","exports"],"sources":["../src/shared.ts","../src/client/constants.ts","../src/client/configuration.ts","../node_modules/.pnpm/@gravity-ui+icons@2.22.0_react@19.3.0/node_modules/@gravity-ui/icons/esm/Wrench.js","../src/client/configuration-page.tsx","../node_modules/.pnpm/css-render@0.15.14/node_modules/css-render/lib/parse.js","../node_modules/.pnpm/css-render@0.15.14/node_modules/css-render/lib/utils.js","../node_modules/.pnpm/css-render@0.15.14/node_modules/css-render/lib/render.js","../node_modules/.pnpm/@emotion+hash@0.8.0/node_modules/@emotion/hash/dist/hash.cjs.prod.js","../node_modules/.pnpm/@emotion+hash@0.8.0/node_modules/@emotion/hash/dist/hash.cjs.js","../node_modules/.pnpm/css-render@0.15.14/node_modules/css-render/lib/hash.js","../node_modules/.pnpm/css-render@0.15.14/node_modules/css-render/lib/mount.js","../node_modules/.pnpm/css-render@0.15.14/node_modules/css-render/lib/c.js","../node_modules/.pnpm/css-render@0.15.14/node_modules/css-render/lib/CssRender.js","../node_modules/.pnpm/css-render@0.15.14/node_modules/css-render/lib/types.js","../node_modules/.pnpm/css-render@0.15.14/node_modules/css-render/lib/exists.js","../node_modules/.pnpm/css-render@0.15.14/node_modules/css-render/lib/index.js","../src/client/styles.ts","../src/client/index.ts"],"sourcesContent":["export interface ToolGroup {\n identifier: string\n name: string\n description: string\n tools: readonly string[]\n sections: readonly string[]\n}\n\nexport interface ToolPolicy {\n enabled: boolean\n mode: 'automatic' | 'manual'\n basicTools: readonly string[]\n excludedTools: readonly string[]\n requireApproval: boolean\n autoGroupMcp: boolean\n groups: readonly ToolGroup[]\n sectionTools: Readonly<Record<string, readonly string[]>>\n}\n\nexport const DEFAULT_POLICY: ToolPolicy = {\n enabled: true,\n mode: 'automatic',\n basicTools: ['read', 'glob', 'grep', 'skill', 'ask_user_question', 'todo_write'],\n excludedTools: [],\n requireApproval: true,\n autoGroupMcp: true,\n groups: [],\n sectionTools: {},\n}\n\nexport const PACKAGE_NAME = 'dsh-tool-activator'\nexport const CONFIG_ROW_ID = 'tool-activator'\nexport const MINIMUM_CORE_VERSION = '0.2.0-rc.2'\n","import { CONFIG_ROW_ID, PACKAGE_NAME } from '../shared'\n\nexport const CONFIGURATION_SLOT = 'plugins.row.config'\nexport const CONFIGURATION_ID = `${PACKAGE_NAME}#${CONFIG_ROW_ID}`\nexport const CONFIGURATION_REGISTRANT = PACKAGE_NAME\nexport const CONFIGURATION_PRIORITY = 0\nexport const STYLE_ID = 'dsh-tool-activator-configuration'\nexport const TOOL_NAME_PATTERN = /^[\\w.-]+$/u\nexport const GROUP_FIELDS = new Set(['identifier', 'name', 'description', 'tools', 'sections'])\n\nexport const CLASSES = {\n root: 'dsh-tool-activator-config',\n header: 'dsh-tool-activator-header',\n title: 'dsh-tool-activator-title',\n description: 'dsh-tool-activator-description',\n notice: 'dsh-tool-activator-notice',\n error: 'dsh-tool-activator-error',\n success: 'dsh-tool-activator-success',\n fields: 'dsh-tool-activator-fields',\n field: 'dsh-tool-activator-field',\n checkbox: 'dsh-tool-activator-checkbox',\n help: 'dsh-tool-activator-help',\n actions: 'dsh-tool-activator-actions',\n advanced: 'dsh-tool-activator-advanced',\n version: 'dsh-tool-activator-version',\n icon: 'dsh-tool-activator-icon',\n} as const\n","import type { ConfigPageForm } from '@deepseek-ai/dsh-client-ui-plugin-manager/client'\nimport type { ToolGroup, ToolPolicy } from '../shared'\nimport type { ConfigMutationOps, PolicyDraftValidation, ToolPolicyDraft } from './types'\nimport { DEFAULT_POLICY } from '../shared'\nimport { GROUP_FIELDS, TOOL_NAME_PATTERN } from './constants'\n\nexport function canWriteConfiguration(form: ConfigPageForm | undefined): boolean {\n const state = form?.state\n return state?.status === 'ready'\n && state.value !== undefined\n && state.mode === 'host'\n && state.writable\n && Number.isSafeInteger(state.revision)\n && state.revision !== undefined\n && state.revision >= 0\n}\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return value !== null && typeof value === 'object' && !Array.isArray(value)\n}\n\nfunction isStringArray(value: unknown): value is string[] {\n return Array.isArray(value) && value.every(item => typeof item === 'string')\n}\n\nexport function createPolicyDraft(value: Record<string, unknown> | undefined): ToolPolicyDraft {\n return {\n enabled: typeof value?.enabled === 'boolean' ? value.enabled : DEFAULT_POLICY.enabled,\n mode: value?.mode === 'manual' ? 'manual' : DEFAULT_POLICY.mode,\n basicToolsText: isStringArray(value?.basicTools) ? value.basicTools.join('\\n') : DEFAULT_POLICY.basicTools.join('\\n'),\n excludedToolsText: isStringArray(value?.excludedTools) ? value.excludedTools.join('\\n') : DEFAULT_POLICY.excludedTools.join('\\n'),\n requireApproval: typeof value?.requireApproval === 'boolean' ? value.requireApproval : DEFAULT_POLICY.requireApproval,\n autoGroupMcp: typeof value?.autoGroupMcp === 'boolean' ? value.autoGroupMcp : DEFAULT_POLICY.autoGroupMcp,\n groupsText: JSON.stringify(Array.isArray(value?.groups) ? value.groups : DEFAULT_POLICY.groups, null, 2),\n sectionToolsText: JSON.stringify(isRecord(value?.sectionTools) ? value.sectionTools : DEFAULT_POLICY.sectionTools, null, 2),\n }\n}\n\nfunction toolNames(text: string, label: string): string[] {\n const names = [...new Set(text.split(/\\r?\\n/u).map(name => name.trim()).filter(Boolean))]\n if (names.some(name => !TOOL_NAME_PATTERN.test(name)))\n throw new Error(`${label}每行填写一个真实工具名,只能包含字母、数字、下划线、点和连字符。`)\n return names\n}\n\nfunction jsonValue(text: string, label: string): unknown {\n try {\n return JSON.parse(text)\n }\n catch {\n throw new Error(`${label}不是有效 JSON。`)\n }\n}\n\nfunction readGroups(text: string): ToolGroup[] {\n const value = jsonValue(text, '工具分组')\n if (!Array.isArray(value))\n throw new Error('工具分组必须是 JSON 数组。')\n const identifiers = new Set<string>()\n const claimedTools = new Set<string>()\n return value.map((item: unknown, index: number): ToolGroup => {\n const label = `第 ${index + 1} 个工具分组`\n if (!isRecord(item) || Object.keys(item).some(key => !GROUP_FIELDS.has(key)))\n throw new Error(`${label}只接受 identifier、name、description、tools 和 sections。`)\n if (typeof item.identifier !== 'string' || !TOOL_NAME_PATTERN.test(item.identifier))\n throw new Error(`${label}需要有效的 identifier(字母、数字、下划线、点或连字符)。`)\n if (identifiers.has(item.identifier))\n throw new Error(`工具分组 identifier 重复:${item.identifier}。`)\n identifiers.add(item.identifier)\n if (item.name !== undefined && typeof item.name !== 'string')\n throw new Error(`${label}的 name 必须是字符串。`)\n if (item.description !== undefined && typeof item.description !== 'string')\n throw new Error(`${label}的 description 必须是字符串。`)\n if (!isStringArray(item.tools) || item.tools.length === 0 || item.tools.some(name => !TOOL_NAME_PATTERN.test(name)))\n throw new Error(`${label}的 tools 至少包含一个有效工具名。`)\n for (const name of item.tools) {\n if (claimedTools.has(name))\n throw new Error(`工具 ${name} 不能同时属于多个分组或在分组内重复。`)\n claimedTools.add(name)\n }\n if (item.sections !== undefined && !isStringArray(item.sections))\n throw new Error(`${label}的 sections 必须是字符串数组。`)\n return {\n identifier: item.identifier,\n name: typeof item.name === 'string' ? item.name : '',\n description: typeof item.description === 'string' ? item.description : '',\n tools: [...item.tools],\n sections: isStringArray(item.sections) ? [...item.sections] : [],\n }\n })\n}\n\nfunction readSectionTools(text: string): Readonly<Record<string, readonly string[]>> {\n const value = jsonValue(text, '说明节依赖')\n if (!isRecord(value))\n throw new Error('说明节依赖必须是 JSON 对象。')\n const entries = Object.entries(value).map(([section, names]): [string, string[]] => {\n if (!isStringArray(names) || names.some(name => !TOOL_NAME_PATTERN.test(name)))\n throw new Error('说明节依赖需要说明节名称和有效工具名数组。')\n return [section, [...new Set(names)]]\n })\n return Object.fromEntries(entries)\n}\n\nexport function validatePolicyDraft(draft: ToolPolicyDraft): PolicyDraftValidation {\n try {\n const policy: ToolPolicy = {\n enabled: draft.enabled,\n mode: draft.mode,\n basicTools: toolNames(draft.basicToolsText, '基础工具'),\n excludedTools: toolNames(draft.excludedToolsText, '排除工具'),\n requireApproval: draft.requireApproval,\n autoGroupMcp: draft.autoGroupMcp,\n groups: readGroups(draft.groupsText),\n sectionTools: readSectionTools(draft.sectionToolsText),\n }\n return { ok: true, policy }\n }\n catch (error) {\n return { ok: false, message: error instanceof Error ? error.message : '配置格式无效。' }\n }\n}\n\nexport function policyMutationOps(policy: ToolPolicy): ConfigMutationOps {\n return Object.entries(policy).map(([field, value]) => ({ op: 'set', path: [field], value }))\n}\n","import * as React from 'react';\nconst Wrench = (props) => (React.createElement(\"svg\", Object.assign({ xmlns: \"http://www.w3.org/2000/svg\", width: 16, height: 16, fill: \"none\", viewBox: \"0 0 16 16\" }, props),\n React.createElement(\"path\", { fill: \"currentColor\", fillRule: \"evenodd\", d: \"m8.581 9.298.776.143q.311.059.643.059A3.5 3.5 0 0 0 13.5 6q0-.177-.027-.352l-1.39 1.39a1.58 1.58 0 0 1-1.114.462A2.47 2.47 0 0 1 8.5 5.03c0-.417.166-.817.461-1.112l1.39-1.39A2.4 2.4 0 0 0 10 2.5a3.5 3.5 0 0 0-3.441 4.143l.143.776-3.813 3.813a1.329 1.329 0 0 0 1.879 1.879zm3.817-6.787a.795.795 0 0 0-.411-1.018C11.87 1.432 11.014 1 10 1a5 5 0 0 0-4.916 5.916l-3.256 3.256a2.828 2.828 0 1 0 4 4l3.256-3.256Q9.53 11 10 11a5 5 0 0 0 5-5c0-1.014-.432-1.87-.493-1.987l-.014-.027a.795.795 0 0 0-1.273-.207l-2.198 2.2a.07.07 0 0 1-.053.021.97.97 0 0 1-.969-.97q0-.03.022-.052L12.22 2.78a.8.8 0 0 0 .178-.27\", clipRule: \"evenodd\" })));\nexport default Wrench;\n","import type { FormEvent, ReactElement } from 'react'\nimport type { ConfigurationEditorState, ToolActivatorConfigurationProps, ToolPolicyDraft } from './types'\nimport { useEffect, useId, useRef, useState } from 'react'\nimport { MINIMUM_CORE_VERSION } from '../shared'\nimport { canWriteConfiguration, createPolicyDraft, policyMutationOps, validatePolicyDraft } from './configuration'\nimport { CLASSES } from './constants'\nimport { ToolActivatorIcon } from './icons'\n\nexport function ToolActivatorConfiguration({ view, form }: ToolActivatorConfigurationProps): ReactElement {\n const fieldId = useId()\n const aliveRef = useRef(false)\n const requestSerialRef = useRef(0)\n const currentFormRef = useRef(form)\n currentFormRef.current = form\n const writable = canWriteConfiguration(form)\n const mutate = form?.mutate\n const snapshotValue = form?.state.value\n const snapshotRevision = form?.state.revision\n const [editor, setEditor] = useState<ConfigurationEditorState>(() => ({\n mutate,\n writable,\n value: snapshotValue,\n revision: snapshotRevision,\n draft: createPolicyDraft(snapshotValue),\n pending: false,\n feedback: undefined,\n }))\n const ownerChanged = editor.mutate !== mutate || editor.writable !== writable\n const snapshotChanged = editor.value !== snapshotValue || editor.revision !== snapshotRevision\n if (ownerChanged || snapshotChanged) {\n if (ownerChanged)\n requestSerialRef.current += 1\n setEditor({\n mutate,\n writable,\n value: snapshotValue,\n revision: snapshotRevision,\n draft: createPolicyDraft(snapshotValue),\n pending: ownerChanged ? false : editor.pending,\n feedback: ownerChanged || !editor.pending ? undefined : editor.feedback,\n })\n }\n const { draft, pending, feedback } = editor\n const fieldsDisabled = !writable || pending\n\n useEffect(() => {\n aliveRef.current = true\n return () => {\n aliveRef.current = false\n requestSerialRef.current += 1\n }\n }, [])\n\n function update<K extends keyof ToolPolicyDraft>(key: K, value: ToolPolicyDraft[K]): void {\n setEditor(previous => ({ ...previous, draft: { ...previous.draft, [key]: value }, feedback: undefined }))\n }\n\n function discard(): void {\n setEditor(previous => ({ ...previous, draft: createPolicyDraft(currentFormRef.current?.state.value), feedback: undefined }))\n }\n\n async function save(): Promise<void> {\n const acceptedForm = currentFormRef.current\n if (!acceptedForm || !canWriteConfiguration(acceptedForm) || pending)\n return\n const result = validatePolicyDraft(draft)\n if (!result.ok) {\n setEditor(previous => ({ ...previous, feedback: { kind: 'error', message: result.message } }))\n return\n }\n const serial = ++requestSerialRef.current\n const acceptedMutate = acceptedForm.mutate\n const revision = acceptedForm.state.revision\n setEditor(previous => ({ ...previous, pending: true, feedback: undefined }))\n function isCurrent(): boolean {\n return aliveRef.current\n && requestSerialRef.current === serial\n && currentFormRef.current?.mutate === acceptedMutate\n && canWriteConfiguration(currentFormRef.current)\n }\n try {\n const applied = await acceptedForm.mutate(policyMutationOps(result.policy), revision)\n if (!isCurrent())\n return\n setEditor(previous => ({\n ...previous,\n feedback: applied\n ? { kind: 'success', message: '配置已保存。新的模型请求会使用最新工具策略。' }\n : { kind: 'error', message: '宿主未接受保存(配置冲突、校验失败或不可写)。请核对最新配置后重试。' },\n }))\n }\n catch (error) {\n if (!isCurrent())\n return\n setEditor(previous => ({\n ...previous,\n feedback: { kind: 'error', message: `保存失败:${error instanceof Error ? error.message : '无法连接宿主。'}` },\n }))\n }\n finally {\n if (isCurrent())\n setEditor(previous => ({ ...previous, pending: false }))\n }\n }\n\n function submit(event: FormEvent<HTMLFormElement>): void {\n event.preventDefault()\n void save()\n }\n\n if (view === 'summary') {\n return (\n <p className={CLASSES.description}>\n 默认仅提供基础工具;按需发现和激活其他工具。这不是执行权限授权。\n </p>\n )\n }\n\n return (\n <section className={CLASSES.root} aria-labelledby={`${fieldId}-title`}>\n <header className={CLASSES.header}>\n <ToolActivatorIcon className={CLASSES.icon} aria-hidden=\"true\" />\n <div>\n <h2 id={`${fieldId}-title`} className={CLASSES.title}>按需工具加载</h2>\n <p className={CLASSES.description}>默认仅向模型展示基础工具,按当前会话和工具作用域发现、激活其他工具。</p>\n </div>\n </header>\n <p className={CLASSES.notice}>\n 工具展示不等于执行授权。隐藏、排除或激活工具不会绕过 DSH 的审批、沙箱和工具安全检查。\n </p>\n <p className={CLASSES.version}>\n 需要 DSH\n {' '}\n {MINIMUM_CORE_VERSION}\n {' '}\n 或以上,且须提供官方插件配置表单。不支持的版本应禁用本功能,不会使用私有 API。\n </p>\n {!form || form.state.status === 'unavailable'\n ? <p role=\"status\" className={CLASSES.notice}>此配置表单不可用。请检查宿主版本、插件加载状态及官方配置服务。</p>\n : form.state.status === 'loading'\n ? <p role=\"status\" className={CLASSES.notice}>正在加载宿主配置…</p>\n : !writable\n ? <p role=\"status\" className={CLASSES.notice}>宿主配置只读或尚未同步。仅在 host 模式、配置可写且版本已同步时允许保存。</p>\n : null}\n <form onSubmit={submit} aria-label=\"工具激活策略\" aria-busy={pending}>\n <fieldset className={CLASSES.fields} disabled={fieldsDisabled}>\n <legend>工具策略</legend>\n <label className={CLASSES.checkbox}>\n <input type=\"checkbox\" checked={draft.enabled} onChange={event => update('enabled', event.target.checked)} />\n 启用按需工具加载\n </label>\n {!draft.enabled && <p className={CLASSES.help}>关闭时不进行工具展示过滤;仍遵守原有执行权限检查。</p>}\n <div className={CLASSES.field}>\n <label htmlFor={`${fieldId}-mode`}>加载模式</label>\n <select id={`${fieldId}-mode`} value={draft.mode} onChange={event => update('mode', event.target.value === 'manual' ? 'manual' : 'automatic')} aria-describedby={`${fieldId}-mode-help`}>\n <option value=\"automatic\">自动:基础工具 + 按需激活</option>\n <option value=\"manual\">手动:仅基础工具</option>\n </select>\n <p id={`${fieldId}-mode-help`} className={CLASSES.help}>\n {draft.mode === 'manual'\n ? '手动模式仅向模型提供基础工具,不允许通过本插件激活其他工具。'\n : '自动模式保留基础工具与发现、激活入口;激活只改变后续工具展示,不授予执行权限。'}\n </p>\n </div>\n <label className={CLASSES.checkbox}>\n <input type=\"checkbox\" checked={draft.requireApproval} onChange={event => update('requireApproval', event.target.checked)} />\n 激活前请求用户确认\n </label>\n <p className={CLASSES.help}>默认开启;没有可用审批服务时拒绝激活。关闭此项也不会关闭核心安全审批。</p>\n <label className={CLASSES.checkbox}>\n <input type=\"checkbox\" checked={draft.autoGroupMcp} onChange={event => update('autoGroupMcp', event.target.checked)} />\n 自动按 MCP 服务分组\n </label>\n <p className={CLASSES.help}>只根据公开的 mcp__server__tool 工具名聚合,不推测服务器私有元数据。</p>\n <div className={CLASSES.field}>\n <label htmlFor={`${fieldId}-basic`}>基础工具(每行一个名称)</label>\n <textarea id={`${fieldId}-basic`} rows={6} value={draft.basicToolsText} onChange={event => update('basicToolsText', event.target.value)} aria-describedby={`${fieldId}-basic-help`} spellCheck={false} />\n <p id={`${fieldId}-basic-help`} className={CLASSES.help}>填写真实工具名;默认包含 read、glob、grep、skill、ask_user_question、todo_write。</p>\n </div>\n <div className={CLASSES.field}>\n <label htmlFor={`${fieldId}-excluded`}>排除工具(每行一个名称)</label>\n <textarea id={`${fieldId}-excluded`} rows={3} value={draft.excludedToolsText} onChange={event => update('excludedToolsText', event.target.value)} aria-describedby={`${fieldId}-excluded-help`} spellCheck={false} />\n <p id={`${fieldId}-excluded-help`} className={CLASSES.help}>不纳入本插件的发现与激活目录;不是禁止执行名单,也不是安全权限边界。</p>\n </div>\n <details className={CLASSES.advanced}>\n <summary>高级:显式分组与说明节依赖</summary>\n <div className={CLASSES.field}>\n <label htmlFor={`${fieldId}-groups`}>工具分组(JSON 数组)</label>\n <textarea id={`${fieldId}-groups`} rows={8} value={draft.groupsText} onChange={event => update('groupsText', event.target.value)} aria-describedby={`${fieldId}-groups-help`} spellCheck={false} />\n <p id={`${fieldId}-groups-help`} className={CLASSES.help}>每项包含唯一 identifier、至少一个 tools 工具名;可选 name、description、sections。每个工具只能属于一个分组。空名称和描述采用默认说明。</p>\n </div>\n <div className={CLASSES.field}>\n <label htmlFor={`${fieldId}-sections`}>说明节依赖(JSON 对象)</label>\n <textarea id={`${fieldId}-sections`} rows={6} value={draft.sectionToolsText} onChange={event => update('sectionToolsText', event.target.value)} aria-describedby={`${fieldId}-sections-help`} spellCheck={false} />\n <p id={`${fieldId}-sections-help`} className={CLASSES.help}>将公开系统说明节名称映射到真实工具名数组;仅用于与工具一起显示相关说明,不改写核心安全说明。</p>\n </div>\n </details>\n </fieldset>\n {feedback && (\n <p role={feedback.kind === 'error' ? 'alert' : 'status'} className={feedback.kind === 'error' ? CLASSES.error : CLASSES.success}>\n {feedback.message}\n </p>\n )}\n {pending && <p role=\"status\" className={CLASSES.help}>正在保存宿主配置…</p>}\n <div className={CLASSES.actions}>\n <button type=\"submit\" disabled={fieldsDisabled}>{pending ? '保存中…' : '保存配置'}</button>\n <button type=\"button\" disabled={fieldsDisabled} onClick={discard}>放弃未保存更改</button>\n </div>\n </form>\n </section>\n )\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.parseSelectorPath = void 0;\nfunction ampCount(selector) {\n let cnt = 0;\n for (let i = 0; i < selector.length; ++i) {\n if (selector[i] === '&')\n ++cnt;\n }\n return cnt;\n}\n/**\n * Don't just use ',' to separate css selector. For example:\n * x:(a, b) {} will be split into 'x:(a' and 'b)', which is not expected.\n * Make sure comma doesn't exist inside parentheses.\n */\nconst separatorRegex = /\\s*,(?![^(]*\\))\\s*/g;\nconst extraSpaceRegex = /\\s+/g;\n/**\n * selector must includes '&'\n * selector is trimmed\n * every part of amp is trimmed\n */\nfunction resolveSelectorWithAmp(amp, selector) {\n const nextAmp = [];\n selector.split(separatorRegex).forEach(partialSelector => {\n let round = ampCount(partialSelector);\n // eslint-disable-next-line @typescript-eslint/strict-boolean-expressions\n if (!round) {\n amp.forEach(partialAmp => {\n nextAmp.push(\n // eslint-disable-next-line @typescript-eslint/strict-boolean-expressions\n (partialAmp && partialAmp + ' ') + partialSelector);\n });\n return;\n }\n else if (round === 1) {\n amp.forEach(partialAmp => {\n nextAmp.push(partialSelector.replace('&', partialAmp));\n });\n return;\n }\n let partialNextAmp = [\n partialSelector\n ];\n // eslint-disable-next-line @typescript-eslint/strict-boolean-expressions\n while (round--) {\n const nextPartialNextAmp = [];\n partialNextAmp.forEach(selectorItr => {\n amp.forEach(partialAmp => {\n nextPartialNextAmp.push(selectorItr.replace('&', partialAmp));\n });\n });\n partialNextAmp = nextPartialNextAmp;\n }\n partialNextAmp.forEach(part => nextAmp.push(part));\n });\n return nextAmp;\n}\n/**\n * selector mustn't includes '&'\n * selector is trimmed\n */\nfunction resolveSelector(amp, selector) {\n const nextAmp = [];\n selector.split(separatorRegex).forEach(partialSelector => {\n amp.forEach(partialAmp => {\n // eslint-disable-next-line @typescript-eslint/strict-boolean-expressions\n nextAmp.push(((partialAmp && partialAmp + ' ') + partialSelector));\n });\n });\n return nextAmp;\n}\nfunction parseSelectorPath(selectorPaths) {\n let amp = [''];\n selectorPaths.forEach(selector => {\n // eslint-disable-next-line\n selector = selector && selector.trim();\n if (\n // eslint-disable-next-line @typescript-eslint/strict-boolean-expressions\n !selector) {\n /**\n * if it's a empty selector, do nothing\n */\n return;\n }\n // eslint-disable-next-line @typescript-eslint/strict-boolean-expressions\n if (selector.includes('&')) {\n amp = resolveSelectorWithAmp(amp, selector);\n }\n else {\n amp = resolveSelector(amp, selector);\n }\n });\n return amp.join(', ').replace(extraSpaceRegex, ' ');\n}\nexports.parseSelectorPath = parseSelectorPath;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.isMediaOrSupports = exports.createElement = exports.queryElement = exports.removeElement = void 0;\nfunction removeElement(el) {\n /* istanbul ignore if */\n // eslint-disable-next-line @typescript-eslint/strict-boolean-expressions\n if (!el)\n return;\n const parentElement = el.parentElement;\n /* istanbul ignore else */\n // eslint-disable-next-line @typescript-eslint/strict-boolean-expressions\n if (parentElement)\n parentElement.removeChild(el);\n}\nexports.removeElement = removeElement;\nfunction queryElement(id, parent) {\n return (parent !== null && parent !== void 0 ? parent : document.head).querySelector(`style[cssr-id=\"${id}\"]`);\n}\nexports.queryElement = queryElement;\nfunction createElement(id) {\n const el = document.createElement('style');\n el.setAttribute('cssr-id', id);\n return el;\n}\nexports.createElement = createElement;\nfunction isMediaOrSupports(selector) {\n // eslint-disable-next-line @typescript-eslint/strict-boolean-expressions\n if (!selector)\n return false;\n return /^\\s*@(s|m)/.test(selector);\n}\nexports.isMediaOrSupports = isMediaOrSupports;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.render = void 0;\nconst parse_1 = require(\"./parse\");\nconst utils_1 = require(\"./utils\");\nconst kebabRegex = /[A-Z]/g;\nfunction kebabCase(pattern) {\n return pattern.replace(kebabRegex, match => '-' + match.toLowerCase());\n}\n/** TODO: refine it to solve nested object */\nfunction unwrapProperty(prop, indent = ' ') {\n if (typeof prop === 'object' && prop !== null) {\n return (' {\\n' +\n Object.entries(prop).map(v => {\n return indent + ` ${kebabCase(v[0])}: ${v[1]};`;\n }).join('\\n') +\n '\\n' + indent + '}');\n }\n return `: ${prop};`;\n}\n/** unwrap properties */\nfunction unwrapProperties(props, instance, params) {\n if (typeof props === 'function') {\n return props({\n context: instance.context,\n props: params\n });\n }\n return props;\n}\nfunction createStyle(selector, props, instance, params) {\n if (!props)\n return '';\n // eslint-disable-next-line\n const unwrappedProps = unwrapProperties(props, instance, params);\n if (!unwrappedProps)\n return '';\n if (typeof unwrappedProps === 'string') {\n return `${selector} {\\n${unwrappedProps}\\n}`;\n }\n const propertyNames = Object.keys(unwrappedProps);\n if (propertyNames.length === 0) {\n if (instance.config.keepEmptyBlock)\n return selector + ' {\\n}';\n return '';\n }\n const statements = selector\n ? [\n selector + ' {'\n ]\n : [];\n propertyNames.forEach(propertyName => {\n const property = unwrappedProps[propertyName];\n if (propertyName === 'raw') {\n statements.push('\\n' + property + '\\n');\n return;\n }\n propertyName = kebabCase(propertyName);\n if (property !== null && property !== undefined) {\n statements.push(` ${propertyName}${unwrapProperty(property)}`);\n }\n });\n if (selector) {\n statements.push('}');\n }\n return statements.join('\\n');\n}\nfunction loopCNodeListWithCallback(children, options, callback) {\n /* istanbul ignore if */\n if (!children)\n return;\n children.forEach(child => {\n if (Array.isArray(child)) {\n loopCNodeListWithCallback(child, options, callback);\n }\n else if (typeof child === 'function') {\n const grandChildren = child(options);\n if (Array.isArray(grandChildren)) {\n loopCNodeListWithCallback(grandChildren, options, callback);\n }\n else if (grandChildren) {\n callback(grandChildren);\n }\n }\n else if (child) {\n callback(child);\n }\n });\n}\nfunction traverseCNode(node, selectorPaths, styles, instance, params) {\n const $ = node.$;\n let blockSelector = '';\n if (!$ || typeof $ === 'string') {\n if ((0, utils_1.isMediaOrSupports)($)) {\n blockSelector = $;\n }\n else {\n // as a string selector\n selectorPaths.push($);\n }\n }\n else if (typeof $ === 'function') {\n const selector = $({\n context: instance.context,\n props: params\n });\n if ((0, utils_1.isMediaOrSupports)(selector)) {\n blockSelector = selector;\n }\n else {\n // as a lazy selector\n selectorPaths.push(selector);\n }\n }\n else { // as a option selector\n if ($.before)\n $.before(instance.context);\n if (!$.$ || typeof $.$ === 'string') {\n if ((0, utils_1.isMediaOrSupports)($.$)) {\n blockSelector = $.$;\n }\n else {\n // as a string selector\n selectorPaths.push($.$);\n }\n }\n else /* istanbul ignore else */ if ($.$) {\n const selector = $.$({\n context: instance.context,\n props: params\n });\n if ((0, utils_1.isMediaOrSupports)(selector)) {\n blockSelector = selector;\n }\n else {\n // as a lazy selector\n selectorPaths.push(selector);\n }\n }\n }\n const selector = (0, parse_1.parseSelectorPath)(selectorPaths);\n const style = createStyle(selector, node.props, instance, params);\n if (blockSelector) {\n styles.push(`${blockSelector} {`);\n }\n else if (style.length) {\n styles.push(style);\n }\n if (node.children) {\n loopCNodeListWithCallback(node.children, {\n context: instance.context,\n props: params\n }, childNode => {\n if (typeof childNode === 'string') {\n const style = createStyle(selector, { raw: childNode }, instance, params);\n styles.push(style);\n }\n else {\n traverseCNode(childNode, selectorPaths, styles, instance, params);\n }\n });\n }\n selectorPaths.pop();\n if (blockSelector) {\n styles.push('}');\n }\n if ($ && $.after)\n $.after(instance.context);\n}\nfunction render(node, instance, props) {\n const styles = [];\n traverseCNode(node, [], styles, instance, props);\n return styles.join('\\n\\n');\n}\nexports.render = render;\n","\"use strict\";\n\nfunction murmur2(str) {\n for (var k, h = 0, i = 0, len = str.length; len >= 4; ++i, len -= 4) k = 1540483477 * (65535 & (k = 255 & str.charCodeAt(i) | (255 & str.charCodeAt(++i)) << 8 | (255 & str.charCodeAt(++i)) << 16 | (255 & str.charCodeAt(++i)) << 24)) + (59797 * (k >>> 16) << 16), \n h = 1540483477 * (65535 & (k ^= k >>> 24)) + (59797 * (k >>> 16) << 16) ^ 1540483477 * (65535 & h) + (59797 * (h >>> 16) << 16);\n switch (len) {\n case 3:\n h ^= (255 & str.charCodeAt(i + 2)) << 16;\n\n case 2:\n h ^= (255 & str.charCodeAt(i + 1)) << 8;\n\n case 1:\n h = 1540483477 * (65535 & (h ^= 255 & str.charCodeAt(i))) + (59797 * (h >>> 16) << 16);\n }\n return (((h = 1540483477 * (65535 & (h ^= h >>> 13)) + (59797 * (h >>> 16) << 16)) ^ h >>> 15) >>> 0).toString(36);\n}\n\nObject.defineProperty(exports, \"__esModule\", {\n value: !0\n}), exports.default = murmur2;\n","'use strict';\n\nif (process.env.NODE_ENV === \"production\") {\n module.exports = require(\"./hash.cjs.prod.js\");\n} else {\n module.exports = require(\"./hash.cjs.dev.js\");\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.default = void 0;\nvar hash_1 = require(\"@emotion/hash\");\nObject.defineProperty(exports, \"default\", { enumerable: true, get: function () { return hash_1.default; } });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.mount = exports.unmount = void 0;\n/* eslint-disable @typescript-eslint/prefer-ts-expect-error */\n/* eslint-disable @typescript-eslint/strict-boolean-expressions */\nconst hash_1 = require(\"./hash\");\nconst utils_1 = require(\"./utils\");\nif (typeof window !== 'undefined') {\n window.__cssrContext = {};\n}\nfunction unmount(instance, node, id, parent) {\n const { els } = node;\n // If id is undefined, unmount all styles\n if (id === undefined) {\n els.forEach(utils_1.removeElement);\n node.els = [];\n }\n else {\n const target = (0, utils_1.queryElement)(id, parent);\n // eslint-disable-next-line\n if (target && els.includes(target)) {\n (0, utils_1.removeElement)(target);\n node.els = els.filter((el) => el !== target);\n }\n }\n}\nexports.unmount = unmount;\nfunction addElementToList(els, target) {\n els.push(target);\n}\nfunction mount(instance, node, id, props, head, force, anchorMetaName, parent, ssrAdapter\n// eslint-disable-next-line @typescript-eslint/no-invalid-void-type\n) {\n let style;\n if (id === undefined) {\n style = node.render(props);\n id = (0, hash_1.default)(style);\n }\n if (ssrAdapter) {\n ssrAdapter.adapter(id, style !== null && style !== void 0 ? style : node.render(props));\n return;\n }\n if (parent === undefined) {\n parent = document.head;\n }\n const queriedTarget = (0, utils_1.queryElement)(id, parent);\n if (queriedTarget !== null && !force) {\n return queriedTarget;\n }\n const target = queriedTarget !== null && queriedTarget !== void 0 ? queriedTarget : (0, utils_1.createElement)(id);\n if (style === undefined)\n style = node.render(props);\n target.textContent = style;\n if (queriedTarget !== null)\n return queriedTarget;\n if (anchorMetaName) {\n const anchorMetaEl = parent.querySelector(`meta[name=\"${anchorMetaName}\"]`);\n if (anchorMetaEl) {\n parent.insertBefore(target, anchorMetaEl);\n addElementToList(node.els, target);\n return target;\n }\n }\n if (head) {\n parent.insertBefore(target, parent.querySelector('style, link'));\n }\n else {\n parent.appendChild(target);\n }\n addElementToList(node.els, target);\n return target;\n}\nexports.mount = mount;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.c = void 0;\nconst render_1 = require(\"./render\");\nconst mount_1 = require(\"./mount\");\nfunction wrappedRender(props) {\n return (0, render_1.render)(this, this.instance, props);\n}\n// do not guard node calling, it should throw an error.\nfunction wrappedMount(options = {}\n// eslint-disable-next-line @typescript-eslint/no-invalid-void-type\n) {\n const { id, ssr, props, head = false, force = false, anchorMetaName, parent } = options;\n const targetElement = (0, mount_1.mount)(this.instance, this, id, props, head, force, anchorMetaName, parent, ssr);\n return targetElement;\n}\nfunction wrappedUnmount(options = {}) {\n /* istanbul ignore next */\n // eslint-disable-next-line @typescript-eslint/strict-boolean-expressions\n const { id, parent } = options;\n (0, mount_1.unmount)(this.instance, this, id, parent);\n}\nconst createCNode = function (instance, $, props, children) {\n return {\n instance,\n $,\n props,\n children,\n els: [],\n render: wrappedRender,\n mount: wrappedMount,\n unmount: wrappedUnmount\n };\n};\nexports.c = function (instance, $, props, children) {\n if (Array.isArray($)) {\n return createCNode(instance, { $: null }, null, $);\n }\n else if (Array.isArray(props)) {\n return createCNode(instance, $, null, props);\n }\n else if (Array.isArray(children)) {\n return createCNode(instance, $, props, children);\n }\n else {\n return createCNode(instance, $, props, null);\n }\n};\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.CssRender = void 0;\nconst c_1 = require(\"./c\");\nconst utils_1 = require(\"./utils\");\nfunction CssRender(config = {}) {\n const cssr = {\n c: ((...args) => (0, c_1.c)(cssr, ...args)),\n use: (plugin, ...args) => plugin.install(cssr, ...args),\n find: utils_1.queryElement,\n context: {},\n config\n };\n return cssr;\n}\nexports.CssRender = CssRender;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.exists = void 0;\nconst utils_1 = require(\"./utils\");\nfunction exists(id, ssr) {\n if (id === undefined)\n return false;\n if (ssr) {\n const { context: { ids } } = ssr;\n return ids.has(id);\n }\n return (0, utils_1.queryElement)(id) !== null;\n}\nexports.exists = exists;\n","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.CssRender = exports.exists = exports.hash = void 0;\n/* istanbul ignore file */\nconst CssRender_1 = require(\"./CssRender\");\nObject.defineProperty(exports, \"CssRender\", { enumerable: true, get: function () { return CssRender_1.CssRender; } });\n__exportStar(require(\"./types\"), exports);\nvar hash_1 = require(\"./hash\");\nObject.defineProperty(exports, \"hash\", { enumerable: true, get: function () { return hash_1.default; } });\nvar exists_1 = require(\"./exists\");\nObject.defineProperty(exports, \"exists\", { enumerable: true, get: function () { return exists_1.exists; } });\nexports.default = CssRender_1.CssRender;\n","// The client bundle is emitted as CJS, and node-mode interop replaces a CJS\n// dependency's `default` with the module object, so the default import would\n// resolve to a non-callable value at runtime. The named export survives.\nimport { CssRender } from 'css-render'\nimport { CLASSES, STYLE_ID } from './constants'\n\nexport function mountToolActivatorStyles(): () => void {\n if (typeof document === 'undefined')\n return () => {}\n const cssr = CssRender()\n if (cssr.find(STYLE_ID) !== null)\n return () => {}\n const root = `.${CLASSES.root}`\n const style = cssr.c([\n cssr.c(root, {\n color: 'inherit',\n maxWidth: '54rem',\n width: '100%',\n padding: '1rem',\n lineHeight: '1.6',\n }, [\n cssr.c('*, *::before, *::after', { boxSizing: 'border-box' }),\n cssr.c('p', { margin: '0.5rem 0' }),\n cssr.c('label, legend, summary', { fontWeight: '600' }),\n cssr.c('legend', { padding: '0 0.35rem' }),\n cssr.c('textarea, select', {\n width: '100%',\n padding: '0.6rem 0.75rem',\n border: '1px solid color-mix(in srgb, currentColor 30%, transparent)',\n borderRadius: '0.5rem',\n color: 'inherit',\n background: 'inherit',\n font: 'inherit',\n }),\n cssr.c('textarea', { resize: 'vertical', fontFamily: 'ui-monospace, monospace' }),\n cssr.c('input[type=\"checkbox\"]', { accentColor: 'currentColor', width: '1rem', height: '1rem' }),\n cssr.c('button', {\n border: '1px solid color-mix(in srgb, currentColor 35%, transparent)',\n borderRadius: '0.5rem',\n padding: '0.55rem 0.9rem',\n color: 'inherit',\n background: 'color-mix(in srgb, currentColor 6%, transparent)',\n font: 'inherit',\n cursor: 'pointer',\n }),\n cssr.c('button:hover:not(:disabled)', { background: 'color-mix(in srgb, currentColor 12%, transparent)' }),\n cssr.c(':disabled', { opacity: '0.6', cursor: 'not-allowed' }),\n cssr.c('fieldset:disabled', { opacity: '1' }),\n cssr.c('input:focus-visible, textarea:focus-visible, select:focus-visible, button:focus-visible, summary:focus-visible', {\n outline: '2px solid currentColor',\n outlineOffset: '3px',\n }),\n ]),\n cssr.c(`${root} .${CLASSES.header}`, { display: 'flex', alignItems: 'flex-start', gap: '0.75rem', marginBottom: '1rem' }),\n cssr.c(`${root} .${CLASSES.icon}`, { width: '1.5rem', height: '1.5rem', flexShrink: '0', marginTop: '0.3rem' }),\n cssr.c(`${root} .${CLASSES.title}`, { margin: '0', fontSize: '1.25rem', lineHeight: '1.4' }),\n cssr.c(`${root} .${CLASSES.description}`, { opacity: '0.8' }),\n cssr.c(`${root} .${CLASSES.notice}`, {\n borderLeft: '3px solid color-mix(in srgb, currentColor 55%, transparent)',\n borderRadius: '0.25rem',\n background: 'color-mix(in srgb, currentColor 5%, transparent)',\n padding: '0.65rem 0.8rem',\n }),\n cssr.c(`${root} .${CLASSES.version}, ${root} .${CLASSES.help}`, { fontSize: '0.875rem', opacity: '0.8' }),\n cssr.c(`${root} .${CLASSES.fields}`, { display: 'grid', gap: '0.8rem', border: '0', padding: '0', margin: '1rem 0', minWidth: '0' }),\n cssr.c(`${root} .${CLASSES.field}`, { display: 'grid', gap: '0.35rem', minWidth: '0' }),\n cssr.c(`${root} .${CLASSES.checkbox}`, { display: 'flex', alignItems: 'center', gap: '0.6rem', cursor: 'pointer' }),\n cssr.c(`${root} .${CLASSES.advanced}`, { borderTop: '1px solid color-mix(in srgb, currentColor 20%, transparent)', paddingTop: '0.8rem' }, [\n cssr.c('summary', { cursor: 'pointer', marginBottom: '0.8rem' }),\n cssr.c(`.${CLASSES.field}`, { marginBottom: '1rem' }),\n ]),\n cssr.c(`${root} .${CLASSES.actions}`, { display: 'flex', flexWrap: 'wrap', gap: '0.65rem', marginTop: '1rem' }),\n cssr.c(`${root} .${CLASSES.error}`, { color: 'var(--color-danger, #d63e3e)', fontWeight: '600' }),\n cssr.c(`${root} .${CLASSES.success}`, { color: 'inherit', fontWeight: '600' }),\n ])\n style.mount({ id: STYLE_ID, head: true })\n const ownedStyle = cssr.find(STYLE_ID)\n return () => {\n if (ownedStyle !== null && cssr.find(STYLE_ID) === ownedStyle)\n style.unmount({ id: STYLE_ID })\n }\n}\n","import type { Context } from '@deepseek-ai/cordis'\nimport type {} from '@deepseek-ai/dsh-client-ui-renderer/client'\nimport { ToolActivatorConfiguration } from './configuration-page'\nimport { CONFIGURATION_ID, CONFIGURATION_PRIORITY, CONFIGURATION_REGISTRANT, CONFIGURATION_SLOT } from './constants'\nimport { mountToolActivatorStyles } from './styles'\n\nexport const inject = ['slots']\n\nexport function apply(ctx: Context): void {\n ctx.effect(mountToolActivatorStyles)\n ctx.slots.inject(CONFIGURATION_SLOT, () => ctx.slots.register({\n name: CONFIGURATION_SLOT,\n key: CONFIGURATION_ID,\n registrant: CONFIGURATION_REGISTRANT,\n priority: CONFIGURATION_PRIORITY,\n }, ToolActivatorConfiguration))\n}\n"],"x_google_ignoreList":[3,5,6,7,8,9,10,11,12,13,14,15,16],"mappings":"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"}
|
package/icon.svg
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
<svg
|
|
1
|
+
<svg width="36" height="36" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg"><path fill="url(#dsh_tool_activator_a)" fill-rule="evenodd" d="m8.581 9.298.776.143q.311.059.643.059A3.5 3.5 0 0 0 13.5 6q0-.177-.027-.352l-1.39 1.39a1.58 1.58 0 0 1-1.114.462A2.47 2.47 0 0 1 8.5 5.03c0-.417.166-.817.461-1.112l1.39-1.39A2.4 2.4 0 0 0 10 2.5a3.5 3.5 0 0 0-3.441 4.143l.143.776-3.813 3.813a1.329 1.329 0 0 0 1.879 1.879zm3.817-6.787a.795.795 0 0 0-.411-1.018C11.87 1.432 11.014 1 10 1a5 5 0 0 0-4.916 5.916l-3.256 3.256a2.828 2.828 0 1 0 4 4l3.256-3.256Q9.53 11 10 11a5 5 0 0 0 5-5c0-1.014-.432-1.87-.493-1.987l-.014-.027a.795.795 0 0 0-1.273-.207l-2.198 2.2a.07.07 0 0 1-.053.021.97.97 0 0 1-.969-.97q0-.03.022-.052L12.22 2.78a.8.8 0 0 0 .178-.27" clip-rule="evenodd"/><defs><linearGradient id="dsh_tool_activator_a" x1="8" y1="1" x2="8" y2="15" gradientUnits="userSpaceOnUse"><stop stop-color="#7AC2FF"/><stop offset="1" stop-color="#4A65E8"/></linearGradient></defs></svg>
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "dsh-tool-activator",
|
|
3
3
|
"type": "module",
|
|
4
|
-
"version": "0.1
|
|
4
|
+
"version": "0.2.1",
|
|
5
5
|
"description": "Load only basic DeepSeek Harness tools by default and activate other tools on demand.",
|
|
6
6
|
"author": "Hairy <wwu710632@gmail.com>",
|
|
7
7
|
"license": "MIT",
|