{"_id":"@cerbur/clutch-dsh-fireworks","_rev":"5-f00b835166b1296f2324b0781d8b623c","name":"@cerbur/clutch-dsh-fireworks","dist-tags":{"latest":"0.1.4"},"versions":{"0.1.0":{"name":"@cerbur/clutch-dsh-fireworks","version":"0.1.0","keywords":["deepseek-harness","dsh","dsh-plugin","fireworks","celebration"],"license":"MIT","_id":"@cerbur/clutch-dsh-fireworks@0.1.0","maintainers":[{"name":"cerbur","email":"cerbur@qq.com"}],"homepage":"https://github.com/Cerbur/clutch-dsh/tree/main/packages/clutch-dsh-fireworks","bugs":{"url":"https://github.com/Cerbur/clutch-dsh/issues"},"dsh":{"bundle":{"patch":"./cordis.patch.yml"},"client":{"inject":["@deepseek-ai/dsh-client-runtime","@deepseek-ai/dsh-client-ui-layout"],"platform":"web"}},"dist":{"shasum":"af1073654d8a7443c1fe85fe5d9e55603a778cd0","tarball":"https://registry.npmjs.org/@cerbur/clutch-dsh-fireworks/-/clutch-dsh-fireworks-0.1.0.tgz","fileCount":35,"integrity":"sha512-m1qqd2MI9wm+8FqaMW5oAOre+70M0JHrGyUKWRxRFbaezm+UUdhzkTGyG4mTNvDZwPnWer3T2ClxupGp0svr9g==","signatures":[{"sig":"MEUCIQC0RCQEE7FCy9zKYwHUd7uZsaktsesdDq2f/pxdkr/YngIgE+0g2YbSvuYrGXloPGuGJHlro9zLsOUAV/7S/Ou2fJE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":59235},"type":"module","exports":{".":{"types":"./lib/index.d.ts","import":"./lib/index.js","default":"./lib/index.js"},"./client":{"types":"./lib/client/entry.d.ts","default":"./lib/client.js"},"./contract":{"types":"./lib/contract/index.d.ts","import":"./lib/contract/index.js","default":"./lib/contract/index.js"},"./package.json":"./package.json"},"scripts":{"lint":"eslint src","test":"pnpm run build && node --test test/*.test.mjs","build":"tsc -p tsconfig.json && node scripts/build-client.mjs","prepare":"pnpm run build","typecheck":"tsc --noEmit -p tsconfig.json"},"_npmUser":{"name":"cerbur","email":"cerbur@qq.com"},"clutchDsh":{"role":"plugin","plugin":"@cerbur/clutch-dsh-fireworks","serviceDefinition":"@cerbur/clutch-dsh-fireworks"},"repository":{"url":"git+https://github.com/Cerbur/clutch-dsh.git","type":"git","directory":"packages/clutch-dsh-fireworks"},"_npmVersion":"11.16.0","description":"Adds a celebratory fireworks overlay to the DSH Web UI through a happy_fireworks agent tool.","directories":{},"_nodeVersion":"26.3.1","dependencies":{"zod":"^4.4.3"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.32.1","devDependencies":{"react":"^18.2.0","tsdown":"0.22.2","@types/node":"^22.15.3","@types/react":"~18.3.1","@deepseek-ai/cordis":"4.0.1","@deepseek-ai/dsh-tools":"0.1.0-rc.8","@deepseek-ai/dsh-session":"0.1.1-rc.2","@deepseek-ai/dsh-client-runtime":"0.1.1-rc.2","@deepseek-ai/dsh-client-ui-slots":"0.1.1-rc.2","@deepseek-ai/dsh-client-ui-layout":"0.1.1-rc.2","@deepseek-ai/dsh-session-projection":"0.1.1-rc.2"},"peerDependencies":{"@deepseek-ai/cordis":"4.0.1","@deepseek-ai/dsh-tools":"*","@deepseek-ai/dsh-session":"*","@deepseek-ai/dsh-client-runtime":"*","@deepseek-ai/dsh-client-ui-slots":"*","@deepseek-ai/dsh-client-ui-layout":"*","@deepseek-ai/dsh-session-projection":"*"},"_npmOperationalInternal":{"tmp":"tmp/clutch-dsh-fireworks_0.1.0_1788062902711_0.597587895646613","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"@cerbur/clutch-dsh-fireworks","version":"0.1.1","keywords":["deepseek-harness","dsh","dsh-plugin","fireworks","celebration"],"license":"MIT","_id":"@cerbur/clutch-dsh-fireworks@0.1.1","maintainers":[{"name":"cerbur","email":"cerbur@qq.com"}],"homepage":"https://github.com/Cerbur/clutch-dsh/tree/main/packages/clutch-dsh-fireworks","bugs":{"url":"https://github.com/Cerbur/clutch-dsh/issues"},"dsh":{"bundle":{"patch":"./cordis.patch.yml"},"client":{"inject":["@deepseek-ai/dsh-client-runtime","@deepseek-ai/dsh-client-ui-layout"],"platform":"web"}},"dist":{"shasum":"0e25ea162986ae762f3ddfa0c9a442eb381ac517","tarball":"https://registry.npmjs.org/@cerbur/clutch-dsh-fireworks/-/clutch-dsh-fireworks-0.1.1.tgz","fileCount":36,"integrity":"sha512-H45Pomt8w7+/bWUWFy+cqyShTcp7Wwg4+j7mE7sAZCXcgPP8l/hbfb5YMGC1mo1cpKm1RmbM192ibzGFDGzjmg==","signatures":[{"sig":"MEYCIQCXsQtt/AGQWC8D6D73rEF21Ej6ufsx28+YZyXseSK09gIhANrX54/WsRmvLGSoY4rnfCLqnZBA9Li1lOSL6ETIokNT","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":640635},"type":"module","exports":{".":{"types":"./lib/index.d.ts","import":"./lib/index.js","default":"./lib/index.js"},"./client":{"types":"./lib/client/entry.d.ts","default":"./lib/client.js"},"./contract":{"types":"./lib/contract/index.d.ts","import":"./lib/contract/index.js","default":"./lib/contract/index.js"},"./package.json":"./package.json"},"scripts":{"lint":"eslint src","test":"pnpm run build && node --test test/*.test.mjs","build":"tsc -p tsconfig.json && node scripts/build-client.mjs","typecheck":"tsc --noEmit -p tsconfig.json","prepublishOnly":"pnpm run build"},"_npmUser":{"name":"cerbur","email":"cerbur@qq.com"},"clutchDsh":{"role":"plugin","plugin":"@cerbur/clutch-dsh-fireworks","serviceDefinition":"@cerbur/clutch-dsh-fireworks"},"repository":{"url":"git+https://github.com/Cerbur/clutch-dsh.git","type":"git","directory":"packages/clutch-dsh-fireworks"},"_npmVersion":"11.16.0","description":"Adds a celebratory fireworks overlay to the DSH Web UI through a happy_fireworks agent tool.","directories":{},"_nodeVersion":"26.3.1","dependencies":{"zod":"^4.4.3"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.32.1","devDependencies":{"react":"^18.2.0","tsdown":"0.22.2","@types/node":"^22.15.3","@types/react":"~18.3.1","@deepseek-ai/cordis":"4.0.1","@deepseek-ai/dsh-tools":"0.1.0-rc.8","@deepseek-ai/dsh-session":"0.1.1-rc.2","@deepseek-ai/dsh-client-runtime":"0.1.1-rc.2","@deepseek-ai/dsh-client-ui-slots":"0.1.1-rc.2","@deepseek-ai/dsh-client-ui-layout":"0.1.1-rc.2","@deepseek-ai/dsh-session-projection":"0.1.1-rc.2"},"peerDependencies":{"@deepseek-ai/cordis":"4.0.1","@deepseek-ai/dsh-tools":">=0.1.0-rc.8 <0.2.0-0","@deepseek-ai/dsh-session":">=0.1.1-rc.2 <0.2.0-0","@deepseek-ai/dsh-client-runtime":">=0.1.1-rc.2 <0.2.0-0","@deepseek-ai/dsh-client-ui-slots":">=0.1.1-rc.2 <0.2.0-0","@deepseek-ai/dsh-client-ui-layout":">=0.1.1-rc.2 <0.2.0-0","@deepseek-ai/dsh-session-projection":">=0.1.1-rc.2 <0.2.0-0"},"_npmOperationalInternal":{"tmp":"tmp/clutch-dsh-fireworks_0.1.1_1788098801136_0.7730613206758166","host":"s3://npm-registry-packages-npm-production"}},"0.1.2":{"name":"@cerbur/clutch-dsh-fireworks","version":"0.1.2","keywords":["deepseek-harness","dsh","dsh-plugin","fireworks","celebration"],"license":"MIT","_id":"@cerbur/clutch-dsh-fireworks@0.1.2","maintainers":[{"name":"cerbur","email":"cerbur@qq.com"}],"homepage":"https://github.com/Cerbur/clutch-dsh/tree/main/packages/clutch-dsh-fireworks","bugs":{"url":"https://github.com/Cerbur/clutch-dsh/issues"},"dsh":{"bundle":{"patch":"./cordis.patch.yml"},"client":{"inject":["@deepseek-ai/dsh-client-ui-layout","@deepseek-ai/dsh-client-ui-renderer","@deepseek-ai/dsh-client-ui-session"],"platform":"web"}},"dist":{"shasum":"00f8aeebf6da48b9f3097ee006e2d3639196b60c","tarball":"https://registry.npmjs.org/@cerbur/clutch-dsh-fireworks/-/clutch-dsh-fireworks-0.1.2.tgz","fileCount":36,"integrity":"sha512-UrxZNgKPtt+PhxNnI7rkwcDwDWHKQ7rw6a7XNM81cAWEZWpJQLrrovy6gnWVIAg1ftH0JAfiUE3ORz+36DkPNA==","signatures":[{"sig":"MEUCIAxAhe7nT9NH7kRkkqHEbrjNmHURdprEI3NltianukuSAiEA9NKaoTyzE5MkbgJ8dl+Uf3XzW/EEbdVI99W4nDOxGps=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":652730},"type":"module","exports":{".":{"types":"./lib/index.d.ts","import":"./lib/index.js","default":"./lib/index.js"},"./client":{"types":"./lib/client/entry.d.ts","default":"./lib/client.js"},"./contract":{"types":"./lib/contract/index.d.ts","import":"./lib/contract/index.js","default":"./lib/contract/index.js"},"./package.json":"./package.json"},"scripts":{"lint":"eslint src","test":"pnpm run build && node --test test/*.test.mjs","build":"tsc -p tsconfig.json && node scripts/build-client.mjs","typecheck":"tsc --noEmit -p tsconfig.json","prepublishOnly":"pnpm run build"},"_npmUser":{"name":"cerbur","email":"cerbur@qq.com"},"clutchDsh":{"role":"plugin","plugin":"@cerbur/clutch-dsh-fireworks","serviceDefinition":"@cerbur/clutch-dsh-fireworks"},"repository":{"url":"git+https://github.com/Cerbur/clutch-dsh.git","type":"git","directory":"packages/clutch-dsh-fireworks"},"_npmVersion":"11.16.0","description":"Adds a celebratory fireworks overlay to the DSH Web UI through a happy_fireworks agent tool.","directories":{},"_nodeVersion":"26.3.1","dependencies":{"zod":"^4.4.3"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.32.1","devDependencies":{"react":"^18.2.0","tsdown":"0.22.2","@types/node":"^22.15.3","@types/react":"~18.3.1","@deepseek-ai/cordis":"4.0.1","@deepseek-ai/dsh-tools":"0.1.2-rc.1","@deepseek-ai/dsh-session":"0.1.2-rc.1","@deepseek-ai/dsh-client-store":"0.1.2-rc.1","@deepseek-ai/dsh-client-ui-slots":"0.1.2-rc.1","@deepseek-ai/dsh-client-ui-layout":"0.1.2-rc.1","@deepseek-ai/dsh-client-ui-session":"0.1.2-rc.1","@deepseek-ai/dsh-client-ui-renderer":"0.1.2-rc.1","@deepseek-ai/dsh-session-projection":"0.1.2-rc.1"},"peerDependencies":{"@deepseek-ai/cordis":"4.0.1","@deepseek-ai/dsh-tools":">=0.1.2-rc.1","@deepseek-ai/dsh-session":">=0.1.2-rc.1","@deepseek-ai/dsh-client-ui-slots":">=0.1.2-rc.1","@deepseek-ai/dsh-client-ui-layout":">=0.1.2-rc.1","@deepseek-ai/dsh-client-ui-session":">=0.1.2-rc.1","@deepseek-ai/dsh-client-ui-renderer":">=0.1.2-rc.1","@deepseek-ai/dsh-session-projection":">=0.1.2-rc.1"},"_npmOperationalInternal":{"tmp":"tmp/clutch-dsh-fireworks_0.1.2_1788545874367_0.43607214760870217","host":"s3://npm-registry-packages-npm-production"}},"0.1.3":{"name":"@cerbur/clutch-dsh-fireworks","version":"0.1.3","keywords":["deepseek-harness","dsh","dsh-plugin","fireworks","celebration"],"license":"MIT","_id":"@cerbur/clutch-dsh-fireworks@0.1.3","maintainers":[{"name":"cerbur","email":"cerbur@qq.com"}],"homepage":"https://github.com/Cerbur/clutch-dsh/tree/main/packages/clutch-dsh-fireworks","bugs":{"url":"https://github.com/Cerbur/clutch-dsh/issues"},"dsh":{"bundle":{"patch":"./cordis.patch.yml"},"client":{"inject":["@deepseek-ai/dsh-client-ui-layout","@deepseek-ai/dsh-client-ui-renderer","@deepseek-ai/dsh-client-ui-session"],"platform":"web"}},"dist":{"shasum":"aee39d18e9f28ea4cd8775c240dfb45ee73d2615","tarball":"https://registry.npmjs.org/@cerbur/clutch-dsh-fireworks/-/clutch-dsh-fireworks-0.1.3.tgz","fileCount":36,"integrity":"sha512-onfP0PIyzrcAyAjMnNQYPcZSAEyvszVpClErzWOc4EoCWDQkDgH/CN5HgShGLqVnVz7vErA1GdqKOTKUjTJAlg==","signatures":[{"sig":"MEQCIDgxb1+n5yy3JXI7DHrMDGOzebeRTraXxMZ8uaVGL2KFAiBFkQ3BdEzphIicCu+ghNcut7PjZLcAZmC6HXLk4ioE2A==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":652901},"type":"module","exports":{".":{"types":"./lib/index.d.ts","import":"./lib/index.js","default":"./lib/index.js"},"./client":{"types":"./lib/client/entry.d.ts","default":"./lib/client.js"},"./contract":{"types":"./lib/contract/index.d.ts","import":"./lib/contract/index.js","default":"./lib/contract/index.js"},"./package.json":"./package.json"},"scripts":{"lint":"eslint src","test":"pnpm run build && node --test test/*.test.mjs","build":"tsc -p tsconfig.json && node scripts/build-client.mjs","typecheck":"tsc --noEmit -p tsconfig.json","prepublishOnly":"pnpm run build"},"_npmUser":{"name":"cerbur","email":"cerbur@qq.com"},"clutchDsh":{"role":"plugin","plugin":"@cerbur/clutch-dsh-fireworks","serviceDefinition":"@cerbur/clutch-dsh-fireworks"},"repository":{"url":"git+https://github.com/Cerbur/clutch-dsh.git","type":"git","directory":"packages/clutch-dsh-fireworks"},"_npmVersion":"11.16.0","description":"Adds a celebratory fireworks overlay to the DSH Web UI through a happy_fireworks agent tool.","directories":{},"_nodeVersion":"26.3.1","dependencies":{"zod":"^4.4.3"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.32.1","devDependencies":{"react":"^18.2.0","tsdown":"0.22.2","@types/node":"^22.15.3","@types/react":"~18.3.1","@deepseek-ai/cordis":"4.0.1","@deepseek-ai/dsh-tools":"0.1.2-rc.1","@deepseek-ai/dsh-session":"0.1.2-rc.1","@deepseek-ai/dsh-client-store":"0.1.2-rc.1","@deepseek-ai/dsh-client-ui-slots":"0.1.2-rc.1","@deepseek-ai/dsh-client-ui-layout":"0.1.2-rc.1","@deepseek-ai/dsh-client-ui-session":"0.1.2-rc.1","@deepseek-ai/dsh-client-ui-renderer":"0.1.2-rc.1","@deepseek-ai/dsh-session-projection":"0.1.2-rc.1"},"peerDependencies":{"@deepseek-ai/cordis":"4.0.1","@deepseek-ai/dsh-tools":">=0.1.2-rc.1","@deepseek-ai/dsh-session":">=0.1.2-rc.1","@deepseek-ai/dsh-client-ui-slots":">=0.1.2-rc.1","@deepseek-ai/dsh-client-ui-layout":">=0.1.2-rc.1","@deepseek-ai/dsh-client-ui-session":">=0.1.2-rc.1","@deepseek-ai/dsh-client-ui-renderer":">=0.1.2-rc.1","@deepseek-ai/dsh-session-projection":">=0.1.2-rc.1"},"_npmOperationalInternal":{"tmp":"tmp/clutch-dsh-fireworks_0.1.3_1789044916334_0.07121705168493997","host":"s3://npm-registry-packages-npm-production"}},"0.1.4":{"_id":"@cerbur/clutch-dsh-fireworks@0.1.4","dsh":{"bundle":{"patch":"./cordis.patch.yml"},"client":{"inject":["@deepseek-ai/dsh-client-ui-layout","@deepseek-ai/dsh-client-ui-renderer","@deepseek-ai/dsh-client-ui-session"],"platform":"web"}},"bugs":{"url":"https://github.com/Cerbur/clutch-dsh/issues"},"dist":{"shasum":"65ba2ba380516d15eb333c8a52a13885f025ef86","tarball":"https://registry.npmjs.org/@cerbur/clutch-dsh-fireworks/-/clutch-dsh-fireworks-0.1.4.tgz","fileCount":40,"integrity":"sha512-9Fd65wffxPszoPrzlRwk4GkNXx/ruhr4hNyqNIGtrjFvhT3kdx7ESDftzqECJxWD742aDmhWfuEehCuMo5pUrQ==","signatures":[{"sig":"MEUCIQCnFIEFvnmSLXkNsz7EJAA2LTf9oocgZ857vBJ2rQ9xngIgYNcJo+BEz2NFW/QI/gYsUoXiiujN3jechGEMIuP7s4E=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCICYwX+m/Lgolx96n9ppKIRt3UyUMKBMhrQOwIxnJtoCEAiEA+xOH14+Cx8MGmPL3ZITNtlAHSGIM3lMTcCyaC8uO3lY="}],"unpackedSize":662519},"name":"@cerbur/clutch-dsh-fireworks","type":"module","exports":{".":{"types":"./lib/index.d.ts","import":"./lib/index.js","default":"./lib/index.js"},"./client":{"types":"./lib/client/entry.d.ts","default":"./lib/client.js"},"./contract":{"types":"./lib/contract/index.d.ts","import":"./lib/contract/index.js","default":"./lib/contract/index.js"},"./package.json":"./package.json"},"license":"MIT","scripts":{"lint":"eslint src","test":"pnpm run build && node --test test/*.test.mjs","build":"tsc -p tsconfig.json && node scripts/build-client.mjs","typecheck":"tsc --noEmit -p tsconfig.json","prepublishOnly":"pnpm run build"},"version":"0.1.4","_npmUser":{"name":"cerbur","email":"cerbur@qq.com"},"homepage":"https://github.com/Cerbur/clutch-dsh/tree/main/packages/clutch-dsh-fireworks","keywords":["deepseek-harness","dsh","dsh-plugin","fireworks","celebration"],"clutchDsh":{"role":"plugin","plugin":"@cerbur/clutch-dsh-fireworks","serviceDefinition":"@cerbur/clutch-dsh-fireworks"},"repository":{"url":"git+https://github.com/Cerbur/clutch-dsh.git","type":"git","directory":"packages/clutch-dsh-fireworks"},"_npmVersion":"11.16.0","description":"Adds a celebratory fireworks overlay to the DSH Web UI through a happy_fireworks agent tool.","directories":{},"maintainers":[{"name":"cerbur","email":"cerbur@qq.com"}],"_nodeVersion":"26.3.1","dependencies":{"zod":"^4.4.3"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.32.1","devDependencies":{"react":"^18.2.0","semver":"^7.8.5","tsdown":"0.22.2","@types/node":"^22.15.3","@types/react":"~18.3.1","@deepseek-ai/cordis":"4.0.1","@deepseek-ai/dsh-tools":"0.1.2-rc.1","@deepseek-ai/dsh-session":"0.1.2-rc.1","@deepseek-ai/dsh-client-store":"0.1.2-rc.1","@deepseek-ai/dsh-client-ui-slots":"0.1.2-rc.1","@deepseek-ai/dsh-client-ui-layout":"0.1.2-rc.1","@deepseek-ai/dsh-client-ui-session":"0.1.2-rc.1","@deepseek-ai/dsh-client-ui-renderer":"0.1.2-rc.1","@deepseek-ai/dsh-session-projection":"0.1.2-rc.1"},"peerDependencies":{"@deepseek-ai/cordis":"^4.0.1","@deepseek-ai/dsh-tools":">=0.1.7-rc.1","@deepseek-ai/dsh-session":">=0.1.7-rc.1","@deepseek-ai/dsh-client-ui-slots":">=0.1.7-rc.1","@deepseek-ai/dsh-client-ui-layout":">=0.1.7-rc.1","@deepseek-ai/dsh-client-ui-session":">=0.1.7-rc.1","@deepseek-ai/dsh-client-ui-renderer":">=0.1.7-rc.1","@deepseek-ai/dsh-session-projection":">=0.1.7-rc.1"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/clutch-dsh-fireworks_0.1.4_1790483873874_0.07216225532699605"}}},"time":{"created":"2026-08-30T04:08:22.584Z","modified":"2026-09-27T04:37:54.105Z","0.1.0":"2026-08-30T04:08:22.843Z","0.1.1":"2026-08-30T14:06:41.364Z","0.1.2":"2026-09-04T18:17:54.563Z","0.1.3":"2026-09-10T12:55:16.488Z","0.1.4":"2026-09-27T04:37:53.959Z"},"bugs":{"url":"https://github.com/Cerbur/clutch-dsh/issues"},"license":"MIT","homepage":"https://github.com/Cerbur/clutch-dsh/tree/main/packages/clutch-dsh-fireworks","keywords":["deepseek-harness","dsh","dsh-plugin","fireworks","celebration"],"repository":{"url":"git+https://github.com/Cerbur/clutch-dsh.git","type":"git","directory":"packages/clutch-dsh-fireworks"},"description":"Adds a celebratory fireworks overlay to the DSH Web UI through a happy_fireworks agent tool.","maintainers":[{"name":"cerbur","email":"cerbur@qq.com"}],"readme":"[English](README.md) | [简体中文](README.zh.md)\n\n# @cerbur/clutch-dsh-fireworks\n\n`@cerbur/clutch-dsh-fireworks` 为 DSH Web UI 增加短暂的庆祝覆盖层。Agent 在重要里程碑完成\n后可以调用 `happy_fireworks`，也可以传入简短消息，让当前 conversation 播放 emoji 礼花。\n\n这是一个附加式 DSH 扩展。它只注册自己的工具和 Web UI overlay，不修改 DSH 源码，也不改变\nconversation history。\n\n## 安装\n\n### 从 npm 安装\n\n在已安装 DSH CLI 的环境中：\n\n```bash\ndsh plugin --profile web add @cerbur/clutch-dsh-fireworks\ndsh web\n```\n\n如果使用 DeepSeek Harness 源码 checkout 且没有独立的 `dsh` 命令，可使用等价的\n`pnpm dsh` 形式。\n\n### 从本地 checkout 安装\n\n先构建 package 和 DSH 源码 checkout，再用绝对路径添加 package：\n\n```bash\ncd /absolute/path/to/clutch-dsh\npnpm install\npnpm --filter @cerbur/clutch-dsh-fireworks build\n\ncd /absolute/path/to/deepseek-harness\npnpm install\npnpm run build\npnpm dsh plugin --profile web add /absolute/path/to/clutch-dsh/packages/clutch-dsh-fireworks\npnpm dsh web\n```\n\n生成的 `lib/` 目录不会提交，因此应使用这个已构建的本地 checkout 流程，而不要从原始\n`github:` path 直接安装。修改 `package.json` 或 `cordis.patch.yml` 后，需要重新执行绝对\n路径安装命令。\n\n## 功能\n\n| 功能                 | 预览                                                                                          | 作用                                                                                                                                                                 |\n| -------------------- | --------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n| **自动庆祝里程碑**   | <img src=\"assets/screenshots/fireworks-mvp.svg\" width=\"420\" alt=\"Happy fireworks 庆祝预览\">   | bundled guidance 会引导 Agent 在完成设计或计划、完成并验证功能、解决复杂 Bug，或重构后通过全量验证时调用 `happy_fireworks`。读取文件和单次检查等日常动作不算里程碑。 |\n| **Fireworks 覆盖层** | <img src=\"assets/screenshots/screenshots-zh.png\" width=\"420\" alt=\"DSH Web UI 中的礼花覆盖层\"> | 成功调用后，在当前选中的 DSH conversation 上显示短暂、可穿透点击的覆盖层，并可显示可选的庆祝消息。                                                                   |\n| **安全的回放行为**   | —                                                                                             | 失败或取消的调用保持安静。打开 Session、刷新页面或切换 Session 都不会重新播放旧礼花。                                                                                |\n\n## 使用\n\n### 庆祝重要里程碑\n\n安装后，Agent 会看到 `happy_fireworks` 工具的使用指引。当任务在收尾轮达到重要里程碑时，Agent\n可以使用它，例如完成设计、验证功能、解决复杂 Bug，或完成重构后的全量验证。\n\n这个工具不用于读取文件、检查 Git 状态或执行单次检查等日常中间步骤。\n\n### 手动测试\n\n可以明确要求 Agent 测试覆盖层：\n\n```text\n完成一个有意义的里程碑后，调用 happy_fireworks：\n{\"message\":\"礼花 MVP 已经可以测试了！\"}\n```\n\n成功调用会出现在 conversation 中，并播放几秒覆盖层。可选消息会被 trim，并限制为适合横幅的\n短文本。程序化 tool-call dispatch 和直接顶层 tool result 都支持。\n\n## 要求\n\n| 组件    | 要求                                                                                                                                                                    |\n| ------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n| DSH     | 提供 DSH Session、Session Projection、Tools、UI Renderer、UI Session 和 UI Slots service 的 Web profile。peer 范围要求 `>=0.1.7-rc.1`；同一范围内的兼容稳定版也可使用。 |\n| Cordis  | `@deepseek-ai/cordis` `4.0.1`，或 package peer range 允许的兼容 `4.x` 版本；DSH 0.1.7-rc.2 使用 `4.0.4`。                                                               |\n| Browser | 已加载该 plugin Web client bundle 的 DSH Web UI。                                                                                                                       |\n\n## 行为与限制\n\n- 覆盖层只播放短暂的一次礼花；每个成功 signal 会生成确定性的 emoji 视觉元素。可选的 `message`\n  会被规范化为最多 120 个字符。\n- 插件只响应成功的 fireworks 结果。错误和取消不会显示覆盖层；Session 打开时第一次观察到\n  的历史 signal 会被刻意静默。\n- 切换 Session 会清除当前覆盖层；只有新的 tool-call identity 才能再次播放。\n- 如果 host 提供 DSH 的 `systemPrompt` service，插件会添加用于自主调用的里程碑指引。没有该\n  可选 service 时，工具仍然可用，但不会添加这段指引。\n- package 只贡献自己的 Cordis bundle 和 Web client metadata，不 patch DSH 源码，也不持久化\n  conversation 副本。\n\n## 开发\n\n在 workspace 根目录构建、类型检查和测试：\n\n```bash\npnpm --filter @cerbur/clutch-dsh-fireworks typecheck\npnpm --filter @cerbur/clutch-dsh-fireworks build\npnpm --filter @cerbur/clutch-dsh-fireworks test\n```\n\npackage 发布参数和源码安装约束见 [docs/RELEASING.md](docs/RELEASING.md)。\n\n## 卸载\n\n使用 DSH CLI：\n\n```bash\ndsh plugin --profile web remove @cerbur/clutch-dsh-fireworks\n```\n\n如果使用 DeepSeek Harness checkout，可对同一个 package name 使用\n`pnpm dsh plugin --profile web remove`。\n\n## 友情链接\n\n- [LINUX DO](https://linux.do/) — 新的理想型社区。\n","readmeFilename":"README.zh.md"}