{"_id":"@deepseek-ai/dsh-tool-fs","_rev":"6052482-6a7db643b009f5febaf108e3","dist-tags":{"latest":"0.0.1-rc.1","next":"0.1.1-rc.2"},"name":"@deepseek-ai/dsh-tool-fs","time":{"created":"2026-08-13T12:19:15.714Z","modified":"2026-08-21T12:36:54.071Z","0.0.1-rc.2":"2026-08-11T15:18:56.729Z","0.0.1-rc.3":"2026-08-12T20:33:46.552Z","0.0.1-rc.1":"2026-08-10T19:37:00.139Z","0.1.0-rc.2":"2026-08-13T09:39:49.606Z","0.0.1-rc.5":"2026-08-12T22:31:04.033Z","0.1.0-rc.3":"2026-08-13T11:07:03.438Z","0.1.0-rc.6":"2026-08-13T12:19:02.906Z","0.1.0-rc.7":"2026-08-17T11:43:54.876Z","0.1.0-rc.8":"2026-08-19T15:35:30.724Z","0.1.1-rc.1":"2026-08-21T06:43:36.529Z","0.1.1-rc.2":"2026-08-21T12:36:42.503Z"},"versions":{"0.0.1-rc.2":{"name":"@deepseek-ai/dsh-tool-fs","version":"0.0.1-rc.2","license":"BSD-3-Clause","_id":"@deepseek-ai/dsh-tool-fs@0.0.1-rc.2","maintainers":[{"name":"imccyu","email":"imccyu@gmail.com"},{"name":"tianyicui-deepseek","email":"tianyi@deepseek.com"}],"homepage":"https://github.com/deepseek-ai/deepseek-harness#readme","bugs":{"url":"https://github.com/deepseek-ai/deepseek-harness/issues"},"dist":{"shasum":"5060e1f4ebebdc4f4fd3ff845cdf82a921269ff6","tarball":"https://registry.npmmirror.com/@deepseek-ai/dsh-tool-fs/-/dsh-tool-fs-0.0.1-rc.2.tgz","fileCount":19,"integrity":"sha512-Km3IzM8Ha1Cx8LG2WbX4LddQ6oL1useKfNxR1L/Q/aDDGjxrxWuRIlU4/jc0rV+rDWSDuVnLhVWLWIMe9x1ddg==","signatures":[{"sig":"MEUCIHXbbb9+vVHH0VoRdKPuGVPUKNH9VPV/snJu0aso+w5lAiEA9TkO6joj2p4TIusant8QSmwgBgn3UifE4Ej4ifr1raU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":110425,"size":34996},"main":"lib/index.js","type":"module","_from":"file:/home/runner/work/deepseek-harness/deepseek-harness/dist/npm/deepseek-ai-dsh-tool-fs-0.0.1-rc.2.tgz","types":"lib/types/index.d.ts","exports":{".":{"types":"./lib/types/index.d.ts","default":"./lib/index.js"},"./src/*":"./src/*","./invariant":{"types":"./lib/types/invariant.d.ts","default":"./lib/invariant.js"},"./package.json":"./package.json"},"_npmUser":{"name":"imccyu","email":"imccyu@gmail.com"},"_resolved":"/home/runner/work/deepseek-harness/deepseek-harness/dist/npm/deepseek-ai-dsh-tool-fs-0.0.1-rc.2.tgz","_integrity":"sha512-Km3IzM8Ha1Cx8LG2WbX4LddQ6oL1useKfNxR1L/Q/aDDGjxrxWuRIlU4/jc0rV+rDWSDuVnLhVWLWIMe9x1ddg==","repository":{"url":"git+https://github.com/deepseek-ai/deepseek-harness.git","type":"git","directory":"packages/fs/tool-fs"},"_npmVersion":"11.16.0","description":"Model-facing filesystem tools (read, write, edit) over the DeepSeek Harness filesystem seam (ctx.fs)","directories":{},"_nodeVersion":"24.18.0","dependencies":{"diff":"^9.0.0","@deepseek-ai/schemastery":"^3.18.1-rc.1"},"publishConfig":{"access":"restricted"},"_hasShrinkwrap":false,"readmeFilename":"README.zh.md","devDependencies":{"@deepseek-ai/cordis":"^4.0.1-rc.1","@deepseek-ai/dsh-fs":"^0.0.1-rc.2","@deepseek-ai/dsh-llm":"^0.0.1-rc.2","@deepseek-ai/dsh-agent":"^0.0.1-rc.2","@deepseek-ai/dsh-tools":"^0.0.1-rc.2","@deepseek-ai/dsh-sandbox":"^0.0.1-rc.2","@deepseek-ai/dsh-session":"^0.0.1-rc.2","@deepseek-ai/dsh-fs-local":"^0.0.1-rc.2","@deepseek-ai/dsh-fs-policy":"^0.0.1-rc.2","@deepseek-ai/dsh-agent-loop":"^0.0.1-rc.2","@deepseek-ai/dsh-attachment":"^0.0.1-rc.2","@deepseek-ai/dsh-invariants":"^0.0.1-rc.2","@deepseek-ai/dsh-llm-deepseek":"^0.0.1-rc.2","@deepseek-ai/dsh-system-prompt":"^0.0.1-rc.2","@deepseek-ai/dsh-user-approval":"^0.0.1-rc.2","@deepseek-ai/dsh-sandbox-policy":"^0.0.1-rc.2","@deepseek-ai/dsh-agent-loop-testkit":"^0.0.1-rc.2"},"peerDependencies":{"@deepseek-ai/cordis":"^4.0.1-rc.1","@deepseek-ai/dsh-fs":"^0.0.1-rc.2","@deepseek-ai/dsh-llm":"^0.0.1-rc.2","@deepseek-ai/dsh-tools":"^0.0.1-rc.2","@deepseek-ai/dsh-sandbox":"^0.0.1-rc.2","@deepseek-ai/dsh-session":"^0.0.1-rc.2","@deepseek-ai/dsh-attachment":"^0.0.1-rc.2","@deepseek-ai/dsh-invariants":"^0.0.1-rc.2","@deepseek-ai/dsh-system-prompt":"^0.0.1-rc.2","@deepseek-ai/dsh-user-approval":"^0.0.1-rc.2","@deepseek-ai/dsh-sandbox-policy":"^0.0.1-rc.2"},"_npmOperationalInternal":{"tmp":"tmp/dsh-tool-fs_0.0.1-rc.2_1786461536566_0.35797884307093186","host":"s3://npm-registry-packages-npm-production"},"_cnpmcore_publish_time":"2026-08-11T15:18:56.729Z","publish_time":1786461536729,"_source_registry_name":"default"},"0.0.1-rc.3":{"name":"@deepseek-ai/dsh-tool-fs","version":"0.0.1-rc.3","license":"BSD-3-Clause","_id":"@deepseek-ai/dsh-tool-fs@0.0.1-rc.3","maintainers":[{"name":"imccyu","email":"imccyu@gmail.com"},{"name":"tianyicui-deepseek","email":"tianyi@deepseek.com"}],"homepage":"https://github.com/deepseek-ai/deepseek-harness#readme","bugs":{"url":"https://github.com/deepseek-ai/deepseek-harness/issues"},"dist":{"shasum":"d22d49c4fcebfa4f5c41034791bb5d6255b46032","tarball":"https://registry.npmmirror.com/@deepseek-ai/dsh-tool-fs/-/dsh-tool-fs-0.0.1-rc.3.tgz","fileCount":19,"integrity":"sha512-aJliKQabyJSTRASg28UhysTxq1hNgQPgCdxw3GNfS/RS7ncc0krMbUVZNpOqpe3u1wV+vZZ7yJu91jcRtLpNvg==","signatures":[{"sig":"MEQCIFvpIxB4dQpClSZx+V6AEymA7BumWKw/1abr/Aki2iwoAiBtHoU4E46R9yAIT8B4mH8aBTi+xUaN9uvmcg2xv/Hx3w==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":110694,"size":35065},"main":"lib/index.js","type":"module","_from":"file:/home/runner/work/deepseek-harness/deepseek-harness/dist/npm/deepseek-ai-dsh-tool-fs-0.0.1-rc.3.tgz","types":"lib/types/index.d.ts","exports":{".":{"types":"./lib/types/index.d.ts","default":"./lib/index.js"},"./src/*":"./src/*","./invariant":{"types":"./lib/types/invariant.d.ts","default":"./lib/invariant.js"},"./package.json":"./package.json"},"_npmUser":{"name":"imccyu","email":"imccyu@gmail.com"},"_resolved":"/home/runner/work/deepseek-harness/deepseek-harness/dist/npm/deepseek-ai-dsh-tool-fs-0.0.1-rc.3.tgz","_integrity":"sha512-aJliKQabyJSTRASg28UhysTxq1hNgQPgCdxw3GNfS/RS7ncc0krMbUVZNpOqpe3u1wV+vZZ7yJu91jcRtLpNvg==","repository":{"url":"git+https://github.com/deepseek-ai/deepseek-harness.git","type":"git","directory":"packages/fs/tool-fs"},"_npmVersion":"11.16.0","description":"Model-facing filesystem tools (read, write, edit) over the DeepSeek Harness filesystem seam (ctx.fs)","directories":{},"_nodeVersion":"24.18.0","dependencies":{"diff":"^9.0.0","@deepseek-ai/schemastery":"^3.18.1-rc.1"},"publishConfig":{"access":"restricted"},"_hasShrinkwrap":false,"readmeFilename":"README.zh.md","devDependencies":{"@deepseek-ai/cordis":"^4.0.1-rc.1","@deepseek-ai/dsh-fs":"^0.0.1-rc.3","@deepseek-ai/dsh-llm":"^0.0.1-rc.3","@deepseek-ai/dsh-agent":"^0.0.1-rc.3","@deepseek-ai/dsh-tools":"^0.0.1-rc.3","@deepseek-ai/dsh-sandbox":"^0.0.1-rc.3","@deepseek-ai/dsh-session":"^0.0.1-rc.3","@deepseek-ai/dsh-fs-local":"^0.0.1-rc.3","@deepseek-ai/dsh-agent-loop":"^0.0.1-rc.3","@deepseek-ai/dsh-attachment":"^0.0.1-rc.3","@deepseek-ai/dsh-invariants":"^0.0.1-rc.3","@deepseek-ai/dsh-llm-deepseek":"^0.0.1-rc.3","@deepseek-ai/dsh-system-prompt":"^0.0.1-rc.3","@deepseek-ai/dsh-user-approval":"^0.0.1-rc.3","@deepseek-ai/dsh-sandbox-policy":"^0.0.1-rc.3","@deepseek-ai/dsh-agent-loop-testkit":"^0.0.1-rc.3","@deepseek-ai/dsh-fs-observation-policy":"^0.0.1-rc.3"},"peerDependencies":{"@deepseek-ai/cordis":"^4.0.1-rc.1","@deepseek-ai/dsh-fs":"^0.0.1-rc.3","@deepseek-ai/dsh-llm":"^0.0.1-rc.3","@deepseek-ai/dsh-tools":"^0.0.1-rc.3","@deepseek-ai/dsh-sandbox":"^0.0.1-rc.3","@deepseek-ai/dsh-session":"^0.0.1-rc.3","@deepseek-ai/dsh-attachment":"^0.0.1-rc.3","@deepseek-ai/dsh-invariants":"^0.0.1-rc.3","@deepseek-ai/dsh-system-prompt":"^0.0.1-rc.3","@deepseek-ai/dsh-user-approval":"^0.0.1-rc.3","@deepseek-ai/dsh-sandbox-policy":"^0.0.1-rc.3"},"_npmOperationalInternal":{"tmp":"tmp/dsh-tool-fs_0.0.1-rc.3_1786566826388_0.37320864523953623","host":"s3://npm-registry-packages-npm-production"},"_cnpmcore_publish_time":"2026-08-12T20:33:46.552Z","publish_time":1786566826552,"_source_registry_name":"default"},"0.0.1-rc.1":{"name":"@deepseek-ai/dsh-tool-fs","version":"0.0.1-rc.1","license":"BSD-3-Clause","_id":"@deepseek-ai/dsh-tool-fs@0.0.1-rc.1","maintainers":[{"name":"imccyu","email":"imccyu@gmail.com"},{"name":"tianyicui-deepseek","email":"tianyi@deepseek.com"}],"homepage":"https://github.com/deepseek-ai/deepseek-harness#readme","bugs":{"url":"https://github.com/deepseek-ai/deepseek-harness/issues"},"dist":{"shasum":"2b712392f0a341c99fe476edd191374d383561e3","tarball":"https://registry.npmmirror.com/@deepseek-ai/dsh-tool-fs/-/dsh-tool-fs-0.0.1-rc.1.tgz","fileCount":17,"integrity":"sha512-7rSlSb0C4PWChou+TYs63e4gsynT9/dEj/ZJt5trD/eExZ5mpHLNfyJs0btvvfI74+vOMGdsJbVvPuX8+0QLgg==","signatures":[{"sig":"MEYCIQDKo//ZnroDxZ5MKFLH1+UTu+Ga1eNeCrUjHG570gMERgIhAIuL3orRkEWUnLXjiPVFrGB99UGmznVzLFGYyz14ueWv","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":89128,"size":28739},"main":"lib/index.js","type":"module","_from":"file:/home/runner/work/deepseek-harness/deepseek-harness/dist/npm/deepseek-ai-dsh-tool-fs-0.0.1-rc.1.tgz","types":"lib/types/index.d.ts","exports":{".":{"types":"./lib/types/index.d.ts","default":"./lib/index.js"},"./src/*":"./src/*","./invariant":{"types":"./lib/types/invariant.d.ts","default":"./lib/invariant.js"},"./package.json":"./package.json"},"_npmUser":{"name":"imccyu","email":"imccyu@gmail.com"},"_resolved":"/home/runner/work/deepseek-harness/deepseek-harness/dist/npm/deepseek-ai-dsh-tool-fs-0.0.1-rc.1.tgz","_integrity":"sha512-7rSlSb0C4PWChou+TYs63e4gsynT9/dEj/ZJt5trD/eExZ5mpHLNfyJs0btvvfI74+vOMGdsJbVvPuX8+0QLgg==","repository":{"url":"git+https://github.com/deepseek-ai/deepseek-harness.git","type":"git","directory":"packages/fs/tool-fs"},"_npmVersion":"11.16.0","description":"Model-facing filesystem tools (read, write, edit) over the DeepSeek Harness filesystem seam (ctx.fs)","directories":{},"_nodeVersion":"24.18.0","dependencies":{"diff":"^9.0.0","@deepseek-ai/schemastery":"^3.18.1-rc.1"},"publishConfig":{"access":"restricted"},"_hasShrinkwrap":false,"devDependencies":{"@deepseek-ai/cordis":"^4.0.1-rc.1","@deepseek-ai/dsh-fs":"^0.0.1-rc.1","@deepseek-ai/dsh-llm":"^0.0.1-rc.1","@deepseek-ai/dsh-agent":"^0.0.1-rc.1","@deepseek-ai/dsh-tools":"^0.0.1-rc.1","@deepseek-ai/dsh-sandbox":"^0.0.1-rc.1","@deepseek-ai/dsh-session":"^0.0.1-rc.1","@deepseek-ai/dsh-fs-local":"^0.0.1-rc.1","@deepseek-ai/dsh-fs-policy":"^0.0.1-rc.1","@deepseek-ai/dsh-agent-loop":"^0.0.1-rc.1","@deepseek-ai/dsh-invariants":"^0.0.1-rc.1","@deepseek-ai/dsh-llm-deepseek":"^0.0.1-rc.1","@deepseek-ai/dsh-system-prompt":"^0.0.1-rc.1","@deepseek-ai/dsh-user-approval":"^0.0.1-rc.1","@deepseek-ai/dsh-sandbox-policy":"^0.0.1-rc.1","@deepseek-ai/dsh-agent-loop-testkit":"^0.0.1-rc.1"},"peerDependencies":{"@deepseek-ai/cordis":"^4.0.1-rc.1","@deepseek-ai/dsh-fs":"^0.0.1-rc.1","@deepseek-ai/dsh-llm":"^0.0.1-rc.1","@deepseek-ai/dsh-tools":"^0.0.1-rc.1","@deepseek-ai/dsh-sandbox":"^0.0.1-rc.1","@deepseek-ai/dsh-session":"^0.0.1-rc.1","@deepseek-ai/dsh-invariants":"^0.0.1-rc.1","@deepseek-ai/dsh-system-prompt":"^0.0.1-rc.1","@deepseek-ai/dsh-user-approval":"^0.0.1-rc.1","@deepseek-ai/dsh-sandbox-policy":"^0.0.1-rc.1"},"_npmOperationalInternal":{"tmp":"tmp/dsh-tool-fs_0.0.1-rc.1_1786390619986_0.30491738277382074","host":"s3://npm-registry-packages-npm-production"},"_cnpmcore_publish_time":"2026-08-10T19:37:00.139Z","publish_time":1786390620139,"_source_registry_name":"default"},"0.1.0-rc.2":{"name":"@deepseek-ai/dsh-tool-fs","version":"0.1.0-rc.2","license":"MIT","_id":"@deepseek-ai/dsh-tool-fs@0.1.0-rc.2","maintainers":[{"name":"imccyu","email":"imccyu@gmail.com"},{"name":"tianyicui-deepseek","email":"tianyi@deepseek.com"}],"homepage":"https://github.com/deepseek-ai/deepseek-harness#readme","bugs":{"url":"https://github.com/deepseek-ai/deepseek-harness/issues"},"dist":{"shasum":"a702ea0a727573590ef13f95d72bf23f6e4215ad","tarball":"https://registry.npmmirror.com/@deepseek-ai/dsh-tool-fs/-/dsh-tool-fs-0.1.0-rc.2.tgz","fileCount":19,"integrity":"sha512-5P5hZxZXPQtJ9qk3OWlg8UPUty0PvEDIlXv1A5J6VYbO6w0hR3oh8LnWA/Dr167/IXOyrkbrZBIBd+oZ1PGbpw==","signatures":[{"sig":"MEQCIDpTwJ3veY4UKJeZSgvk7j5n29Rx7NZJ080RJqJ7CBFvAiAJzdw/vmBFEhfRkR2YB7oaSCS5YoJ+FUETBMjp8Id3LQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":110240,"size":34876},"main":"lib/index.js","type":"module","_from":"file:/home/runner/work/deepseek-harness/deepseek-harness/dist/npm/deepseek-ai-dsh-tool-fs-0.1.0-rc.2.tgz","types":"lib/types/index.d.ts","exports":{".":{"types":"./lib/types/index.d.ts","default":"./lib/index.js"},"./src/*":"./src/*","./invariant":{"types":"./lib/types/invariant.d.ts","default":"./lib/invariant.js"},"./package.json":"./package.json"},"_npmUser":{"name":"imccyu","email":"imccyu@gmail.com"},"_resolved":"/home/runner/work/deepseek-harness/deepseek-harness/dist/npm/deepseek-ai-dsh-tool-fs-0.1.0-rc.2.tgz","_integrity":"sha512-5P5hZxZXPQtJ9qk3OWlg8UPUty0PvEDIlXv1A5J6VYbO6w0hR3oh8LnWA/Dr167/IXOyrkbrZBIBd+oZ1PGbpw==","repository":{"url":"git+https://github.com/deepseek-ai/deepseek-harness.git","type":"git","directory":"packages/fs/tool-fs"},"_npmVersion":"11.16.0","description":"Model-facing filesystem tools (read, write, edit) over the DeepSeek Harness filesystem seam (ctx.fs)","directories":{},"_nodeVersion":"24.18.0","dependencies":{"diff":"^9.0.0","@deepseek-ai/schemastery":"^3.18.1"},"publishConfig":{"access":"restricted"},"_hasShrinkwrap":false,"readmeFilename":"README.zh.md","devDependencies":{"@deepseek-ai/cordis":"^4.0.1","@deepseek-ai/dsh-fs":"^0.1.0-rc.2","@deepseek-ai/dsh-llm":"^0.1.0-rc.2","@deepseek-ai/dsh-agent":"^0.1.0-rc.2","@deepseek-ai/dsh-tools":"^0.1.0-rc.2","@deepseek-ai/dsh-sandbox":"^0.1.0-rc.2","@deepseek-ai/dsh-session":"^0.1.0-rc.2","@deepseek-ai/dsh-fs-local":"^0.1.0-rc.2","@deepseek-ai/dsh-agent-loop":"^0.1.0-rc.2","@deepseek-ai/dsh-attachment":"^0.1.0-rc.2","@deepseek-ai/dsh-invariants":"^0.1.0-rc.2","@deepseek-ai/dsh-llm-deepseek":"^0.1.0-rc.2","@deepseek-ai/dsh-system-prompt":"^0.1.0-rc.2","@deepseek-ai/dsh-user-approval":"^0.1.0-rc.2","@deepseek-ai/dsh-sandbox-policy":"^0.1.0-rc.2","@deepseek-ai/dsh-agent-loop-testkit":"^0.1.0-rc.2","@deepseek-ai/dsh-fs-observation-policy":"^0.1.0-rc.2"},"peerDependencies":{"@deepseek-ai/cordis":"^4.0.1","@deepseek-ai/dsh-fs":"^0.1.0-rc.2","@deepseek-ai/dsh-llm":"^0.1.0-rc.2","@deepseek-ai/dsh-tools":"^0.1.0-rc.2","@deepseek-ai/dsh-sandbox":"^0.1.0-rc.2","@deepseek-ai/dsh-session":"^0.1.0-rc.2","@deepseek-ai/dsh-attachment":"^0.1.0-rc.2","@deepseek-ai/dsh-invariants":"^0.1.0-rc.2","@deepseek-ai/dsh-system-prompt":"^0.1.0-rc.2","@deepseek-ai/dsh-user-approval":"^0.1.0-rc.2","@deepseek-ai/dsh-sandbox-policy":"^0.1.0-rc.2"},"_npmOperationalInternal":{"tmp":"tmp/dsh-tool-fs_0.1.0-rc.2_1786613989454_0.09636731810035681","host":"s3://npm-registry-packages-npm-production"},"_cnpmcore_publish_time":"2026-08-13T09:39:49.606Z","publish_time":1786613989606,"_source_registry_name":"default"},"0.0.1-rc.5":{"name":"@deepseek-ai/dsh-tool-fs","version":"0.0.1-rc.5","license":"BSD-3-Clause","_id":"@deepseek-ai/dsh-tool-fs@0.0.1-rc.5","maintainers":[{"name":"imccyu","email":"imccyu@gmail.com"},{"name":"tianyicui-deepseek","email":"tianyi@deepseek.com"}],"homepage":"https://github.com/deepseek-ai/deepseek-harness#readme","bugs":{"url":"https://github.com/deepseek-ai/deepseek-harness/issues"},"dist":{"shasum":"4ae82646bf222bd3463fa963cf6b9e7a3a6715aa","tarball":"https://registry.npmmirror.com/@deepseek-ai/dsh-tool-fs/-/dsh-tool-fs-0.0.1-rc.5.tgz","fileCount":19,"integrity":"sha512-xsDVYT6U48qkbNl+CMnIEL7nbDRHdWnUfNYLNGNPozcl1jISBJoOze3zax3jg0U4P+F4gM8b0mlBO1CFvDoneQ==","signatures":[{"sig":"MEQCIG2E/NieK1Jx7wIUmevbn8SecXlVoOugwmqeVlB+3PO0AiAoiXmUaE35JwZp/K61W+5p10G6w0ZtRRrp6SaiLmpHug==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":110694,"size":35072},"main":"lib/index.js","type":"module","_from":"file:/home/runner/work/deepseek-harness/deepseek-harness/dist/npm/deepseek-ai-dsh-tool-fs-0.0.1-rc.5.tgz","types":"lib/types/index.d.ts","exports":{".":{"types":"./lib/types/index.d.ts","default":"./lib/index.js"},"./src/*":"./src/*","./invariant":{"types":"./lib/types/invariant.d.ts","default":"./lib/invariant.js"},"./package.json":"./package.json"},"_npmUser":{"name":"imccyu","email":"imccyu@gmail.com"},"_resolved":"/home/runner/work/deepseek-harness/deepseek-harness/dist/npm/deepseek-ai-dsh-tool-fs-0.0.1-rc.5.tgz","_integrity":"sha512-xsDVYT6U48qkbNl+CMnIEL7nbDRHdWnUfNYLNGNPozcl1jISBJoOze3zax3jg0U4P+F4gM8b0mlBO1CFvDoneQ==","repository":{"url":"git+https://github.com/deepseek-ai/deepseek-harness.git","type":"git","directory":"packages/fs/tool-fs"},"_npmVersion":"11.16.0","description":"Model-facing filesystem tools (read, write, edit) over the DeepSeek Harness filesystem seam (ctx.fs)","directories":{},"_nodeVersion":"24.18.0","dependencies":{"diff":"^9.0.0","@deepseek-ai/schemastery":"^3.18.1-rc.4"},"publishConfig":{"access":"restricted"},"_hasShrinkwrap":false,"readmeFilename":"README.zh.md","devDependencies":{"@deepseek-ai/cordis":"^4.0.1-rc.4","@deepseek-ai/dsh-fs":"^0.0.1-rc.5","@deepseek-ai/dsh-llm":"^0.0.1-rc.5","@deepseek-ai/dsh-agent":"^0.0.1-rc.5","@deepseek-ai/dsh-tools":"^0.0.1-rc.5","@deepseek-ai/dsh-sandbox":"^0.0.1-rc.5","@deepseek-ai/dsh-session":"^0.0.1-rc.5","@deepseek-ai/dsh-fs-local":"^0.0.1-rc.5","@deepseek-ai/dsh-agent-loop":"^0.0.1-rc.5","@deepseek-ai/dsh-attachment":"^0.0.1-rc.5","@deepseek-ai/dsh-invariants":"^0.0.1-rc.5","@deepseek-ai/dsh-llm-deepseek":"^0.0.1-rc.5","@deepseek-ai/dsh-system-prompt":"^0.0.1-rc.5","@deepseek-ai/dsh-user-approval":"^0.0.1-rc.5","@deepseek-ai/dsh-sandbox-policy":"^0.0.1-rc.5","@deepseek-ai/dsh-agent-loop-testkit":"^0.0.1-rc.5","@deepseek-ai/dsh-fs-observation-policy":"^0.0.1-rc.5"},"peerDependencies":{"@deepseek-ai/cordis":"^4.0.1-rc.4","@deepseek-ai/dsh-fs":"^0.0.1-rc.5","@deepseek-ai/dsh-llm":"^0.0.1-rc.5","@deepseek-ai/dsh-tools":"^0.0.1-rc.5","@deepseek-ai/dsh-sandbox":"^0.0.1-rc.5","@deepseek-ai/dsh-session":"^0.0.1-rc.5","@deepseek-ai/dsh-attachment":"^0.0.1-rc.5","@deepseek-ai/dsh-invariants":"^0.0.1-rc.5","@deepseek-ai/dsh-system-prompt":"^0.0.1-rc.5","@deepseek-ai/dsh-user-approval":"^0.0.1-rc.5","@deepseek-ai/dsh-sandbox-policy":"^0.0.1-rc.5"},"_npmOperationalInternal":{"tmp":"tmp/dsh-tool-fs_0.0.1-rc.5_1786573863865_0.9960964414903555","host":"s3://npm-registry-packages-npm-production"},"_cnpmcore_publish_time":"2026-08-12T22:31:04.033Z","publish_time":1786573864033,"_source_registry_name":"default"},"0.1.0-rc.3":{"name":"@deepseek-ai/dsh-tool-fs","version":"0.1.0-rc.3","license":"MIT","_id":"@deepseek-ai/dsh-tool-fs@0.1.0-rc.3","maintainers":[{"name":"imccyu","email":"imccyu@gmail.com"},{"name":"tianyicui-deepseek","email":"tianyi@deepseek.com"}],"homepage":"https://github.com/deepseek-ai/deepseek-harness#readme","bugs":{"url":"https://github.com/deepseek-ai/deepseek-harness/issues"},"dist":{"shasum":"1dc4f281b448558e974642f4294eec81f047232f","tarball":"https://registry.npmmirror.com/@deepseek-ai/dsh-tool-fs/-/dsh-tool-fs-0.1.0-rc.3.tgz","fileCount":19,"integrity":"sha512-M+SBMV74Wrraozxm7VEBMViMqWGtrnE2RmrABKT/HnWLQqbk4CJ4Eiz4tp/n/cSQ+wSADzbgzghpek/PqsjYzQ==","signatures":[{"sig":"MEUCIQDdBRFrn81LBBuANplhQKbL0okO3BqTFfDO15+lVHzVOwIgXGxBwFX3Qu4Peffa7VTcvHr+cY/ylHgMO1mIH7I0lI0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":110240,"size":34879},"main":"lib/index.js","type":"module","_from":"file:/home/runner/work/deepseek-harness/deepseek-harness/dist/npm/deepseek-ai-dsh-tool-fs-0.1.0-rc.3.tgz","types":"lib/types/index.d.ts","exports":{".":{"types":"./lib/types/index.d.ts","default":"./lib/index.js"},"./src/*":"./src/*","./invariant":{"types":"./lib/types/invariant.d.ts","default":"./lib/invariant.js"},"./package.json":"./package.json"},"_npmUser":{"name":"imccyu","email":"imccyu@gmail.com"},"_resolved":"/home/runner/work/deepseek-harness/deepseek-harness/dist/npm/deepseek-ai-dsh-tool-fs-0.1.0-rc.3.tgz","_integrity":"sha512-M+SBMV74Wrraozxm7VEBMViMqWGtrnE2RmrABKT/HnWLQqbk4CJ4Eiz4tp/n/cSQ+wSADzbgzghpek/PqsjYzQ==","repository":{"url":"git+https://github.com/deepseek-ai/deepseek-harness.git","type":"git","directory":"packages/fs/tool-fs"},"_npmVersion":"11.16.0","description":"Model-facing filesystem tools (read, write, edit) over the DeepSeek Harness filesystem seam (ctx.fs)","directories":{},"_nodeVersion":"24.18.0","dependencies":{"diff":"^9.0.0","@deepseek-ai/schemastery":"^3.18.1"},"publishConfig":{"access":"restricted"},"_hasShrinkwrap":false,"readmeFilename":"README.zh.md","devDependencies":{"@deepseek-ai/cordis":"^4.0.1","@deepseek-ai/dsh-fs":"^0.1.0-rc.3","@deepseek-ai/dsh-llm":"^0.1.0-rc.3","@deepseek-ai/dsh-agent":"^0.1.0-rc.3","@deepseek-ai/dsh-tools":"^0.1.0-rc.3","@deepseek-ai/dsh-sandbox":"^0.1.0-rc.3","@deepseek-ai/dsh-session":"^0.1.0-rc.3","@deepseek-ai/dsh-fs-local":"^0.1.0-rc.3","@deepseek-ai/dsh-agent-loop":"^0.1.0-rc.3","@deepseek-ai/dsh-attachment":"^0.1.0-rc.3","@deepseek-ai/dsh-invariants":"^0.1.0-rc.3","@deepseek-ai/dsh-llm-deepseek":"^0.1.0-rc.3","@deepseek-ai/dsh-system-prompt":"^0.1.0-rc.3","@deepseek-ai/dsh-user-approval":"^0.1.0-rc.3","@deepseek-ai/dsh-sandbox-policy":"^0.1.0-rc.3","@deepseek-ai/dsh-agent-loop-testkit":"^0.1.0-rc.3","@deepseek-ai/dsh-fs-observation-policy":"^0.1.0-rc.3"},"peerDependencies":{"@deepseek-ai/cordis":"^4.0.1","@deepseek-ai/dsh-fs":"^0.1.0-rc.3","@deepseek-ai/dsh-llm":"^0.1.0-rc.3","@deepseek-ai/dsh-tools":"^0.1.0-rc.3","@deepseek-ai/dsh-sandbox":"^0.1.0-rc.3","@deepseek-ai/dsh-session":"^0.1.0-rc.3","@deepseek-ai/dsh-attachment":"^0.1.0-rc.3","@deepseek-ai/dsh-invariants":"^0.1.0-rc.3","@deepseek-ai/dsh-system-prompt":"^0.1.0-rc.3","@deepseek-ai/dsh-user-approval":"^0.1.0-rc.3","@deepseek-ai/dsh-sandbox-policy":"^0.1.0-rc.3"},"_npmOperationalInternal":{"tmp":"tmp/dsh-tool-fs_0.1.0-rc.3_1786619223266_0.10944978343575795","host":"s3://npm-registry-packages-npm-production"},"_cnpmcore_publish_time":"2026-08-13T11:07:03.438Z","publish_time":1786619223438,"_source_registry_name":"default"},"0.1.0-rc.6":{"name":"@deepseek-ai/dsh-tool-fs","description":"Model-facing filesystem tools (read, write, edit) over the DeepSeek Harness filesystem seam (ctx.fs)","version":"0.1.0-rc.6","publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+https://github.com/deepseek-ai/deepseek-harness.git","directory":"packages/fs/tool-fs"},"type":"module","main":"lib/index.js","types":"lib/types/index.d.ts","exports":{".":{"types":"./lib/types/index.d.ts","default":"./lib/index.js"},"./invariant":{"types":"./lib/types/invariant.d.ts","default":"./lib/invariant.js"},"./src/*":"./src/*","./package.json":"./package.json"},"license":"MIT","dependencies":{"diff":"^9.0.0","@deepseek-ai/schemastery":"^3.18.1"},"peerDependencies":{"@deepseek-ai/dsh-attachment":"^0.1.0-rc.6","@deepseek-ai/dsh-llm":"^0.1.0-rc.6","@deepseek-ai/dsh-invariants":"^0.1.0-rc.6","@deepseek-ai/dsh-sandbox":"^0.1.0-rc.6","@deepseek-ai/dsh-sandbox-policy":"^0.1.0-rc.6","@deepseek-ai/dsh-fs":"^0.1.0-rc.6","@deepseek-ai/dsh-session":"^0.1.0-rc.6","@deepseek-ai/dsh-system-prompt":"^0.1.0-rc.6","@deepseek-ai/dsh-tools":"^0.1.0-rc.6","@deepseek-ai/dsh-user-approval":"^0.1.0-rc.6","@deepseek-ai/cordis":"^4.0.1"},"devDependencies":{"@deepseek-ai/dsh-agent-loop":"^0.1.0-rc.6","@deepseek-ai/dsh-agent-loop-testkit":"^0.1.0-rc.6","@deepseek-ai/dsh-attachment":"^0.1.0-rc.6","@deepseek-ai/dsh-fs":"^0.1.0-rc.6","@deepseek-ai/dsh-agent":"^0.1.0-rc.6","@deepseek-ai/dsh-fs-local":"^0.1.0-rc.6","@deepseek-ai/dsh-fs-observation-policy":"^0.1.0-rc.6","@deepseek-ai/dsh-invariants":"^0.1.0-rc.6","@deepseek-ai/dsh-llm":"^0.1.0-rc.6","@deepseek-ai/dsh-llm-deepseek":"^0.1.0-rc.6","@deepseek-ai/dsh-sandbox-policy":"^0.1.0-rc.6","@deepseek-ai/dsh-session":"^0.1.0-rc.6","@deepseek-ai/dsh-system-prompt":"^0.1.0-rc.6","@deepseek-ai/dsh-tools":"^0.1.0-rc.6","@deepseek-ai/dsh-user-approval":"^0.1.0-rc.6","@deepseek-ai/cordis":"^4.0.1","@deepseek-ai/dsh-sandbox":"^0.1.0-rc.6"},"readmeFilename":"README.zh.md","_id":"@deepseek-ai/dsh-tool-fs@0.1.0-rc.6","bugs":{"url":"https://github.com/deepseek-ai/deepseek-harness/issues"},"homepage":"https://github.com/deepseek-ai/deepseek-harness#readme","_integrity":"sha512-bJfo8cCacX3WBygG8GbIlGz3jQ15MyIv4htGCjKpIIRHrXHSAelNtzceO2xQ21/9BkXrvg+i50mqySOcKQ0b3w==","_resolved":"/home/runner/work/deepseek-harness/deepseek-harness/dist/npm/deepseek-ai-dsh-tool-fs-0.1.0-rc.6.tgz","_from":"file:/home/runner/work/deepseek-harness/deepseek-harness/dist/npm/deepseek-ai-dsh-tool-fs-0.1.0-rc.6.tgz","_nodeVersion":"24.18.0","_npmVersion":"11.16.0","dist":{"integrity":"sha512-bJfo8cCacX3WBygG8GbIlGz3jQ15MyIv4htGCjKpIIRHrXHSAelNtzceO2xQ21/9BkXrvg+i50mqySOcKQ0b3w==","shasum":"af72d021b9631e4a4e97f35ec2cc6c62fa90604a","tarball":"https://registry.npmmirror.com/@deepseek-ai/dsh-tool-fs/-/dsh-tool-fs-0.1.0-rc.6.tgz","fileCount":19,"unpackedSize":110236,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIDOLS/TYB7skbCGJWGWho1JWuIniheT87mk6GgyA7lpyAiEAy/TfReNz9xSB5tlh0Sa1ec9QX3EL6jSDkGsVS1F1vI8="}],"size":34876},"_npmUser":{"name":"imccyu","email":"imccyu@gmail.com"},"directories":{},"maintainers":[{"name":"imccyu","email":"imccyu@gmail.com"},{"name":"tianyicui-deepseek","email":"tianyi@deepseek.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/dsh-tool-fs_0.1.0-rc.6_1786623542767_0.6748319274893491"},"_hasShrinkwrap":false,"_cnpmcore_publish_time":"2026-08-13T12:19:02.906Z","publish_time":1786623542906,"_source_registry_name":"default"},"0.1.0-rc.7":{"name":"@deepseek-ai/dsh-tool-fs","description":"Model-facing filesystem tools (read, write, edit) over the DeepSeek Harness filesystem seam (ctx.fs)","version":"0.1.0-rc.7","publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+https://github.com/deepseek-ai/deepseek-harness.git","directory":"packages/fs/tool-fs"},"type":"module","main":"lib/index.js","types":"lib/types/index.d.ts","exports":{".":{"types":"./lib/types/index.d.ts","default":"./lib/index.js"},"./invariant":{"types":"./lib/types/invariant.d.ts","default":"./lib/invariant.js"},"./src/*":"./src/*","./package.json":"./package.json"},"license":"MIT","dependencies":{"diff":"^9.0.0","@deepseek-ai/schemastery":"^3.18.1"},"peerDependencies":{"@deepseek-ai/dsh-attachment":"^0.1.0-rc.7","@deepseek-ai/dsh-invariants":"^0.1.0-rc.7","@deepseek-ai/dsh-llm":"^0.1.0-rc.7","@deepseek-ai/dsh-sandbox":"^0.1.0-rc.7","@deepseek-ai/dsh-fs":"^0.1.0-rc.7","@deepseek-ai/dsh-sandbox-policy":"^0.1.0-rc.7","@deepseek-ai/dsh-system-prompt":"^0.1.0-rc.7","@deepseek-ai/dsh-tools":"^0.1.0-rc.7","@deepseek-ai/dsh-user-approval":"^0.1.0-rc.7","@deepseek-ai/cordis":"^4.0.1","@deepseek-ai/dsh-session":"^0.1.0-rc.7"},"devDependencies":{"@deepseek-ai/dsh-agent-loop":"^0.1.0-rc.7","@deepseek-ai/dsh-agent-loop-testkit":"^0.1.0-rc.7","@deepseek-ai/dsh-attachment":"^0.1.0-rc.7","@deepseek-ai/dsh-fs-observation-policy":"^0.1.0-rc.7","@deepseek-ai/dsh-agent":"^0.1.0-rc.7","@deepseek-ai/dsh-fs":"^0.1.0-rc.7","@deepseek-ai/dsh-invariants":"^0.1.0-rc.7","@deepseek-ai/dsh-fs-local":"^0.1.0-rc.7","@deepseek-ai/dsh-llm":"^0.1.0-rc.7","@deepseek-ai/dsh-llm-deepseek":"^0.1.0-rc.7","@deepseek-ai/dsh-sandbox":"^0.1.0-rc.7","@deepseek-ai/dsh-session":"^0.1.0-rc.7","@deepseek-ai/dsh-system-prompt":"^0.1.0-rc.7","@deepseek-ai/dsh-sandbox-policy":"^0.1.0-rc.7","@deepseek-ai/dsh-tools":"^0.1.0-rc.7","@deepseek-ai/dsh-user-approval":"^0.1.0-rc.7","@deepseek-ai/cordis":"^4.0.1"},"readmeFilename":"README.zh.md","_id":"@deepseek-ai/dsh-tool-fs@0.1.0-rc.7","bugs":{"url":"https://github.com/deepseek-ai/deepseek-harness/issues"},"homepage":"https://github.com/deepseek-ai/deepseek-harness#readme","_integrity":"sha512-/Uf2z6OZckk0Nz7XjVbzf/yUnvDeY58CkUjAqy2FxgGuNc0rvIR6VzRER5NZ+30bXeB8TPnjMuCVB+j/8zltrw==","_resolved":"/home/runner/work/deepseek-harness/deepseek-harness/dist/npm/deepseek-ai-dsh-tool-fs-0.1.0-rc.7.tgz","_from":"file:/home/runner/work/deepseek-harness/deepseek-harness/dist/npm/deepseek-ai-dsh-tool-fs-0.1.0-rc.7.tgz","_nodeVersion":"24.19.0","_npmVersion":"11.17.0","dist":{"integrity":"sha512-/Uf2z6OZckk0Nz7XjVbzf/yUnvDeY58CkUjAqy2FxgGuNc0rvIR6VzRER5NZ+30bXeB8TPnjMuCVB+j/8zltrw==","shasum":"0df84033fddee766d88dd3bf9e8c660d348663c9","tarball":"https://registry.npmmirror.com/@deepseek-ai/dsh-tool-fs/-/dsh-tool-fs-0.1.0-rc.7.tgz","fileCount":19,"unpackedSize":109975,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQD04BdkdEmtSm3KP0kilS7ceGpc+PRjld0uP8xBs3UW9wIgV4UwBmcQ+g7HHQCsSxTb3Y8wqJbZfVMjDGK+VkwPugs="}],"size":34641},"_npmUser":{"name":"imccyu","email":"imccyu@gmail.com"},"directories":{},"maintainers":[{"name":"imccyu","email":"imccyu@gmail.com"},{"name":"tianyicui-deepseek","email":"tianyi@deepseek.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/dsh-tool-fs_0.1.0-rc.7_1786967034723_0.5345339079118672"},"_hasShrinkwrap":false,"_cnpmcore_publish_time":"2026-08-17T11:43:54.876Z","publish_time":1786967034876,"_source_registry_name":"default"},"0.1.0-rc.8":{"name":"@deepseek-ai/dsh-tool-fs","description":"Model-facing filesystem tools (read, write, edit) over the DeepSeek Harness filesystem seam (ctx.fs)","version":"0.1.0-rc.8","publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+https://github.com/deepseek-ai/deepseek-harness.git","directory":"packages/fs/tool-fs"},"type":"module","main":"lib/index.js","types":"lib/types/index.d.ts","exports":{".":{"types":"./lib/types/index.d.ts","default":"./lib/index.js"},"./invariant":{"types":"./lib/types/invariant.d.ts","default":"./lib/invariant.js"},"./src/*":"./src/*","./package.json":"./package.json"},"license":"MIT","dependencies":{"diff":"^9.0.0","@deepseek-ai/schemastery":"^3.18.1"},"peerDependencies":{"@deepseek-ai/dsh-attachment":"^0.1.0-rc.8","@deepseek-ai/dsh-fs":"^0.1.0-rc.8","@deepseek-ai/dsh-invariants":"^0.1.0-rc.8","@deepseek-ai/dsh-llm":"^0.1.0-rc.8","@deepseek-ai/dsh-sandbox-policy":"^0.1.0-rc.8","@deepseek-ai/dsh-session":"^0.1.0-rc.8","@deepseek-ai/dsh-system-prompt":"^0.1.0-rc.8","@deepseek-ai/dsh-tools":"^0.1.0-rc.8","@deepseek-ai/dsh-user-approval":"^0.1.0-rc.8","@deepseek-ai/cordis":"^4.0.1","@deepseek-ai/dsh-sandbox":"^0.1.0-rc.8"},"devDependencies":{"@deepseek-ai/dsh-agent":"^0.1.0-rc.8","@deepseek-ai/dsh-agent-loop":"^0.1.0-rc.8","@deepseek-ai/dsh-attachment":"^0.1.0-rc.8","@deepseek-ai/dsh-fs":"^0.1.0-rc.8","@deepseek-ai/dsh-agent-loop-testkit":"^0.1.0-rc.8","@deepseek-ai/dsh-fs-observation-policy":"^0.1.0-rc.8","@deepseek-ai/dsh-fs-local":"^0.1.0-rc.8","@deepseek-ai/dsh-invariants":"^0.1.0-rc.8","@deepseek-ai/dsh-llm":"^0.1.0-rc.8","@deepseek-ai/dsh-llm-deepseek":"^0.1.0-rc.8","@deepseek-ai/dsh-sandbox":"^0.1.0-rc.8","@deepseek-ai/dsh-sandbox-policy":"^0.1.0-rc.8","@deepseek-ai/dsh-session":"^0.1.0-rc.8","@deepseek-ai/dsh-system-prompt":"^0.1.0-rc.8","@deepseek-ai/dsh-tools":"^0.1.0-rc.8","@deepseek-ai/dsh-user-approval":"^0.1.0-rc.8","@deepseek-ai/cordis":"^4.0.1"},"readmeFilename":"README.zh.md","_id":"@deepseek-ai/dsh-tool-fs@0.1.0-rc.8","bugs":{"url":"https://github.com/deepseek-ai/deepseek-harness/issues"},"homepage":"https://github.com/deepseek-ai/deepseek-harness#readme","_integrity":"sha512-pxo2YfVlqcw0sCA2+4DtqaaYsuxkx1QfvjT3VO+ckZMWn/UnGOUuzjJtKhVynwjm8prttGqK2LBXUTBZPlKTWg==","_resolved":"/home/runner/work/deepseek-harness/deepseek-harness/dist/npm/deepseek-ai-dsh-tool-fs-0.1.0-rc.8.tgz","_from":"file:/home/runner/work/deepseek-harness/deepseek-harness/dist/npm/deepseek-ai-dsh-tool-fs-0.1.0-rc.8.tgz","_nodeVersion":"24.19.0","_npmVersion":"11.17.0","dist":{"integrity":"sha512-pxo2YfVlqcw0sCA2+4DtqaaYsuxkx1QfvjT3VO+ckZMWn/UnGOUuzjJtKhVynwjm8prttGqK2LBXUTBZPlKTWg==","shasum":"bdca0365c33f47ae09ac78e1c10a52bb3913adee","tarball":"https://registry.npmmirror.com/@deepseek-ai/dsh-tool-fs/-/dsh-tool-fs-0.1.0-rc.8.tgz","fileCount":19,"unpackedSize":110556,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCID16pIUG+iOnhBPmvidZ6o4Ysm3edQ+iY6I/cnd4g/bnAiEAooxkS2lKs/MTZ2ZonpmUW2WC6pINC3JTYe4iVs/eQ6w="}],"size":34919},"_npmUser":{"name":"imccyu","email":"imccyu@gmail.com"},"directories":{},"maintainers":[{"name":"imccyu","email":"imccyu@gmail.com"},{"name":"tianyicui-deepseek","email":"tianyi@deepseek.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/dsh-tool-fs_0.1.0-rc.8_1787153730573_0.9732544570882637"},"_hasShrinkwrap":false,"_cnpmcore_publish_time":"2026-08-19T15:35:30.724Z","publish_time":1787153730724,"_source_registry_name":"default"},"0.1.1-rc.1":{"name":"@deepseek-ai/dsh-tool-fs","description":"Model-facing filesystem tools (read, write, edit) over the DeepSeek Harness filesystem seam (ctx.fs)","version":"0.1.1-rc.1","publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+https://github.com/deepseek-ai/deepseek-harness.git","directory":"packages/fs/tool-fs"},"type":"module","main":"lib/index.js","types":"lib/types/index.d.ts","exports":{".":{"types":"./lib/types/index.d.ts","default":"./lib/index.js"},"./invariant":{"types":"./lib/types/invariant.d.ts","default":"./lib/invariant.js"},"./src/*":"./src/*","./package.json":"./package.json"},"license":"MIT","dependencies":{"diff":"^9.0.0","@deepseek-ai/schemastery":"^3.18.1"},"peerDependencies":{"@deepseek-ai/dsh-attachment":"^0.1.1-rc.1","@deepseek-ai/dsh-fs":"^0.1.1-rc.1","@deepseek-ai/dsh-llm":"^0.1.1-rc.1","@deepseek-ai/dsh-invariants":"^0.1.1-rc.1","@deepseek-ai/dsh-sandbox":"^0.1.1-rc.1","@deepseek-ai/dsh-sandbox-policy":"^0.1.1-rc.1","@deepseek-ai/dsh-session":"^0.1.1-rc.1","@deepseek-ai/dsh-system-prompt":"^0.1.1-rc.1","@deepseek-ai/dsh-tools":"^0.1.1-rc.1","@deepseek-ai/dsh-user-approval":"^0.1.1-rc.1","@deepseek-ai/cordis":"^4.0.1"},"devDependencies":{"@deepseek-ai/dsh-agent":"^0.1.1-rc.1","@deepseek-ai/dsh-agent-loop":"^0.1.1-rc.1","@deepseek-ai/dsh-agent-loop-testkit":"^0.1.1-rc.1","@deepseek-ai/dsh-attachment":"^0.1.1-rc.1","@deepseek-ai/dsh-fs-observation-policy":"^0.1.1-rc.1","@deepseek-ai/dsh-fs-local":"^0.1.1-rc.1","@deepseek-ai/dsh-fs":"^0.1.1-rc.1","@deepseek-ai/dsh-llm":"^0.1.1-rc.1","@deepseek-ai/dsh-llm-deepseek":"^0.1.1-rc.1","@deepseek-ai/dsh-sandbox":"^0.1.1-rc.1","@deepseek-ai/dsh-sandbox-policy":"^0.1.1-rc.1","@deepseek-ai/dsh-invariants":"^0.1.1-rc.1","@deepseek-ai/dsh-session":"^0.1.1-rc.1","@deepseek-ai/dsh-system-prompt":"^0.1.1-rc.1","@deepseek-ai/dsh-tools":"^0.1.1-rc.1","@deepseek-ai/dsh-user-approval":"^0.1.1-rc.1","@deepseek-ai/cordis":"^4.0.1"},"readmeFilename":"README.zh.md","_id":"@deepseek-ai/dsh-tool-fs@0.1.1-rc.1","bugs":{"url":"https://github.com/deepseek-ai/deepseek-harness/issues"},"homepage":"https://github.com/deepseek-ai/deepseek-harness#readme","_integrity":"sha512-T9teZZdjshbc/J+nsQV7o6Jdp+q/A8tYSx3FHP5BbN14T8tlyd9F7FWccicyNe4uni3e6ZlUfXjE3Qx6c1epGA==","_resolved":"/home/runner/work/deepseek-harness/deepseek-harness/dist/npm/deepseek-ai-dsh-tool-fs-0.1.1-rc.1.tgz","_from":"file:/home/runner/work/deepseek-harness/deepseek-harness/dist/npm/deepseek-ai-dsh-tool-fs-0.1.1-rc.1.tgz","_nodeVersion":"24.19.0","_npmVersion":"11.17.0","dist":{"integrity":"sha512-T9teZZdjshbc/J+nsQV7o6Jdp+q/A8tYSx3FHP5BbN14T8tlyd9F7FWccicyNe4uni3e6ZlUfXjE3Qx6c1epGA==","shasum":"f635afb26d346dd9943b608ea6a1168a762b8d2c","tarball":"https://registry.npmmirror.com/@deepseek-ai/dsh-tool-fs/-/dsh-tool-fs-0.1.1-rc.1.tgz","fileCount":19,"unpackedSize":110571,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIC8btJTKxUZhu+OfDLLNDzf8aEmya47dvuG3oLlEGbuaAiEAv4iMGRUVE2jzlwvkYiQw5TAoLs93XPjRq/0Y/HnrbnI="}],"size":34931},"_npmUser":{"name":"imccyu","email":"imccyu@gmail.com"},"directories":{},"maintainers":[{"name":"imccyu","email":"imccyu@gmail.com"},{"name":"tianyicui-deepseek","email":"tianyi@deepseek.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/dsh-tool-fs_0.1.1-rc.1_1787294616367_0.332195582617008"},"_hasShrinkwrap":false,"_cnpmcore_publish_time":"2026-08-21T06:43:36.529Z","publish_time":1787294616529,"_source_registry_name":"default"},"0.1.1-rc.2":{"name":"@deepseek-ai/dsh-tool-fs","description":"Model-facing filesystem tools (read, write, edit) over the DeepSeek Harness filesystem seam (ctx.fs)","version":"0.1.1-rc.2","publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+https://github.com/deepseek-ai/deepseek-harness.git","directory":"packages/fs/tool-fs"},"type":"module","main":"lib/index.js","types":"lib/types/index.d.ts","exports":{".":{"types":"./lib/types/index.d.ts","default":"./lib/index.js"},"./invariant":{"types":"./lib/types/invariant.d.ts","default":"./lib/invariant.js"},"./src/*":"./src/*","./package.json":"./package.json"},"license":"MIT","dependencies":{"diff":"^9.0.0","@deepseek-ai/schemastery":"^3.18.1"},"peerDependencies":{"@deepseek-ai/dsh-fs":"^0.1.1-rc.2","@deepseek-ai/dsh-invariants":"^0.1.1-rc.2","@deepseek-ai/dsh-llm":"^0.1.1-rc.2","@deepseek-ai/dsh-sandbox":"^0.1.1-rc.2","@deepseek-ai/dsh-sandbox-policy":"^0.1.1-rc.2","@deepseek-ai/dsh-session":"^0.1.1-rc.2","@deepseek-ai/dsh-system-prompt":"^0.1.1-rc.2","@deepseek-ai/dsh-tools":"^0.1.1-rc.2","@deepseek-ai/dsh-attachment":"^0.1.1-rc.2","@deepseek-ai/cordis":"^4.0.1","@deepseek-ai/dsh-user-approval":"^0.1.1-rc.2"},"devDependencies":{"@deepseek-ai/dsh-agent":"^0.1.1-rc.2","@deepseek-ai/dsh-agent-loop":"^0.1.1-rc.2","@deepseek-ai/dsh-agent-loop-testkit":"^0.1.1-rc.2","@deepseek-ai/dsh-fs":"^0.1.1-rc.2","@deepseek-ai/dsh-attachment":"^0.1.1-rc.2","@deepseek-ai/dsh-invariants":"^0.1.1-rc.2","@deepseek-ai/dsh-fs-observation-policy":"^0.1.1-rc.2","@deepseek-ai/dsh-llm-deepseek":"^0.1.1-rc.2","@deepseek-ai/dsh-llm":"^0.1.1-rc.2","@deepseek-ai/dsh-sandbox":"^0.1.1-rc.2","@deepseek-ai/dsh-sandbox-policy":"^0.1.1-rc.2","@deepseek-ai/dsh-session":"^0.1.1-rc.2","@deepseek-ai/dsh-system-prompt":"^0.1.1-rc.2","@deepseek-ai/dsh-tools":"^0.1.1-rc.2","@deepseek-ai/dsh-user-approval":"^0.1.1-rc.2","@deepseek-ai/cordis":"^4.0.1","@deepseek-ai/dsh-fs-local":"^0.1.1-rc.2"},"readmeFilename":"README.zh.md","_id":"@deepseek-ai/dsh-tool-fs@0.1.1-rc.2","bugs":{"url":"https://github.com/deepseek-ai/deepseek-harness/issues"},"homepage":"https://github.com/deepseek-ai/deepseek-harness#readme","_integrity":"sha512-llX8AWbaI3CGme/a2eeTSfy5atk8u3iJeOFzmZV/KZ0v0hMhKZIK1xQInWwC9OmSDJ/StStJe0hDPVLWbB7hVg==","_resolved":"/home/runner/work/deepseek-harness/deepseek-harness/dist/npm/deepseek-ai-dsh-tool-fs-0.1.1-rc.2.tgz","_from":"file:/home/runner/work/deepseek-harness/deepseek-harness/dist/npm/deepseek-ai-dsh-tool-fs-0.1.1-rc.2.tgz","_nodeVersion":"24.19.0","_npmVersion":"11.17.0","dist":{"integrity":"sha512-llX8AWbaI3CGme/a2eeTSfy5atk8u3iJeOFzmZV/KZ0v0hMhKZIK1xQInWwC9OmSDJ/StStJe0hDPVLWbB7hVg==","shasum":"f3df3e88ac2a233767d9bb7a20686d57b241f04f","tarball":"https://registry.npmmirror.com/@deepseek-ai/dsh-tool-fs/-/dsh-tool-fs-0.1.1-rc.2.tgz","fileCount":19,"unpackedSize":112282,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIDJZG9HUfvEi4zLlo0HzpTpWATLTaxFPyVw5G921+pMCAiEAzOs9KM3Qn7qp08rWaNw7jISjeoLrQChpQROBzI70n4c="}],"size":35440},"_npmUser":{"name":"imccyu","email":"imccyu@gmail.com"},"directories":{},"maintainers":[{"name":"imccyu","email":"imccyu@gmail.com"},{"name":"tianyicui-deepseek","email":"tianyi@deepseek.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/dsh-tool-fs_0.1.1-rc.2_1787315802295_0.42041841886048403"},"_hasShrinkwrap":false,"_cnpmcore_publish_time":"2026-08-21T12:36:42.503Z","publish_time":1787315802503,"_source_registry_name":"default"}},"bugs":{"url":"https://github.com/deepseek-ai/deepseek-harness/issues"},"description":"Model-facing filesystem tools (read, write, edit) over the DeepSeek Harness filesystem seam (ctx.fs)","homepage":"https://github.com/deepseek-ai/deepseek-harness#readme","license":"BSD-3-Clause","maintainers":[{"name":"tianyicui-deepseek","email":"tianyi@deepseek.com"},{"name":"imccyu","email":"imccyu@gmail.com"}],"readme":"# @deepseek-ai/dsh-tool-fs\n\nEnglish | [中文](README.zh.md)\n\nThe **model-facing filesystem tools** — `read`, `write`, `edit` — and their **executor**. This is the consumer layer of the filesystem stack: it owns tool names, JSON schemas, argument validation, prompt sections, **read windowing**, and result formatting. It reads/writes/edits through the `ctx.fs` provider contract ([`@deepseek-ai/dsh-fs`](../fs)) **directly**. The freshness/observation policy is contributed by a separate plugin ([`@deepseek-ai/dsh-fs-policy`](../fs-policy)) through the `fs/*` event gate; the tool is not method-coupled to it. Under a confining provider, the shared sandbox-policy service is required for per-session execution and the tool exposes escalation for filesystem mutations.\n\n```ts ignore-check\n// Default deployment: a ctx.fs provider, the policy plugin, then the tools.\nawait ctx.plugin(LocalFileSystem, { cwd: process.cwd() }) // @deepseek-ai/dsh-fs-local\nawait ctx.plugin(FsPolicy)                             // @deepseek-ai/dsh-fs-policy (policy gate)\nawait ctx.plugin(ToolFs)                                  // this package — registers read/write/edit\n```\n\n`@deepseek-ai/dsh-fs-policy` is **optional**: omit it and the tools run against the bare provider (unconditional write/overwrite/edit, no observed-state). A deployment that loads these tools is expected to also load it, so the behavior is read-before-write/edit.\n\n## Config\n\nAll keys are optional; the defaults are the shipped read caps.\n\n| Key | Default | Meaning |\n|---|---|---|\n| `readLimit` | `2000` | Default and maximum lines returned by one `read` call (the tool schema advertises it as the `limit` default). |\n| `readMaxLineLength` | `2000` | Characters kept per line before truncation (the suffix names the cap). |\n| `readMaxBytes` | `51200` | Byte cap on one `read` call's selected lines; overflow ends the window with a \"capped\" footer. |\n| `readStreamMinSize` | `10485760` | Files at or above this size (or with unknown size) stream instead of loading whole into memory. |\n\n## Tools (schemas per [the filesystem tool schemas Agent Note](../../../.agents/notes/implemented/feature/2026-06-17-filesystem-tool-schemas.md))\n\n| Tool | Arguments | Behavior |\n|---|---|---|\n| `read` | `file_path`, `offset?`, `limit?` | Line-numbered UTF-8 content with a pagination footer. `offset` is 1-based; `limit` defaults to and caps at the configured `readLimit` (2000). |\n| `write` | `file_path`, `content` | Create or fully replace a file. With the policy plugin: overwriting an existing file requires a prior `read` at the unchanged version; creating a new file does not. Without it: unconditional. |\n| `edit` | `file_path`, non-empty `old_string`, `new_string`, `replace_all?` | Literal replacement; unique match required unless `replace_all` is true. With the policy plugin: requires a prior `read` (any window) and the file unchanged since. Without it: unconditional. |\n\nField names are snake_case to match Claude Code and existing harness tool schemas.\n\nCanonical successes are `read` → `{ path, offset, lines: [{ number, text }], totalLines }`, `write` → `{ path, operation: 'create' | 'update', before: string | null, after }`, and `edit` → `{ path, before, after }`. Native renderers preserve the line-numbered read and mutation acknowledgements below. `write`/`edit` derive replayable diff-card metadata, and `read` derives a replayable read-card window `{ path, offset, lines, totalLines, lang? }`, from these canonical values; the canonical values themselves are execution-local and are not added to `tool/result`, only the derived presentation metadata is persisted.\n\n## The tool is the executor; policy is an event gate\n\nThe tools do **not** inject a policy service or inspect any cache. Each tool resolves the path via `ctx.fs.resolve(path, { cwd, signal })` — passing the calling agent's session cwd (`exec.agent.session.header.cwd`) so a relative path resolves against the session's workspace, matching `dsh-tool-bash`, and forwarding tool cancellation through resolution (see [the per-session cwd Agent Note](../../../.agents/notes/implemented/architecture/2026-07-02-fs-per-session-cwd.md)) — then:\n\n- **read** — one `ctx.fs.stat` (type + size routing + version), then `readText`/`streamText`, then builds the line window, then emits `fs/observed` with a plain `ctx.emit`. (1 stat.)\n- **write** — `ctx.waterfall('fs/write-intent', target, exec, () => undefined)` for the optional guard, then `ctx.fs.writeText(target, content, intent)`, then `fs/observed`. (0 stat.)\n- **edit** — `ctx.waterfall('fs/edit-intent', target, exec, () => undefined)` for the optional guard, then `ctx.fs.editText(target, edit, intent)`, then `fs/observed`. (0 stat.)\n\nThe tool passes `exec` (the tool-execution context) as the opaque `actor` on every dispatch. The default thunks return `undefined` (the unconstrained bare provider). When `@deepseek-ai/dsh-fs-policy` is loaded it occupies the single decision slot — returning `createIfAbsent`/`replaceIfVersion`/`{ version }` or throwing `FS_NOT_OBSERVED` — and records on `fs/observed`. Backend errors (`FsError`) and a thrown `FS_NOT_OBSERVED` flow through `ToolRegistry.execute()` and become `isError` tool results with their `{ name, code }` attached.\n\nWhen `ctx.fs.sandboxMode` reports confinement, write/edit advertise `sandbox_permissions` and `justification` and resolve approved retries through `ctx.approval`. The policy owner contributes capability-neutral standing policy; the tool results retain operation-specific denial and retry guidance.\n\n## `fs/observed` is fire-and-forget\n\n`fs/observed` fires AFTER the read/write/edit already succeeded, via a plain `ctx.emit`. A listener is contractually a synchronous, side-effect-only recorder (`@deepseek-ai/dsh-fs-policy`'s is a `WeakMap.set`); the tool does not guard the emit, so a listener that throws would surface as the tool's `isError` result — async or fallible observation does not belong on this event.\n\n`read` opts into concurrent scheduling because its only mutation is the synchronous version recorder. Recorder races fail closed when a later `write` or `edit` re-checks the version under its target lock; both mutation tools remain exclusive. See the [parallel tool-call Agent Note](../../../.agents/notes/implemented/feature/2026-07-10-parallel-tool-call-execution.md).\n\nThe package root exports only the Cordis plugin contract (`name`, `inject`, `Config`, and `apply`). Read rendering (line windowing + output formatting) lives in `src/read-render.ts` (Cordis-free, independently unit-tested); `src/read.ts`/`write.ts`/`edit.ts` are the tool executors and `src/index.ts` composes them.\n\n## Model Experience\n\n### System prompt\n\n#### What the model sees\n\nEvery request in this plugin's registration scope receives the independently registered read, write, and edit guidance below. Scoped tool restrictions can hide schemas without removing these sections.\n\n##### Read guidance\n\n```markdown\nUse the read tool — not shell commands like cat — to inspect text files. Results include line numbers. Use offset and limit to continue reading large files.\n```\n\n##### Write guidance\n\n```markdown\nUse the write tool to create files or completely replace file contents. Existing files are overwritten, so read an existing file first (the default fs-policy requires it) and prefer edit for targeted changes.\n```\n\n##### Edit guidance\n\n```markdown\nUse the edit tool for targeted changes to existing UTF-8 text files. It replaces literal old_string with new_string; by default old_string must appear exactly once. If old_string appears multiple times, provide a more specific old_string or set replace_all to true. Read the file first (the default fs-policy requires it), unless you just created or edited it in this session.\n```\n\n#### Token effect\n\nFixed guidance cost per request while the plugin is active, even when a restriction hides one or more tools.\n\n#### KV Cache effect\n\nPrefix-stable while the plugin scope and guidance text are unchanged. Tool restrictions do not remove this section, but plugin activation or disposal may invalidate reuse from it.\n\n### Tool schemas\n\n#### What the model sees\n\nThe model sees the generated [`read`, `write`, and `edit` schemas](../../../docs/tool-catalog.md#deepseek-aidsh-tool-fs), with snake_case arguments. Scoped tool restrictions can remove any definition for one agent.\n\n#### Token effect\n\nFixed schema cost on every request in that tool view.\n\n#### KV Cache effect\n\nPrefix-stable while the visible tool definitions and order are unchanged. Registration lifecycle or scoped restrictions may invalidate reuse from the first changed schema token.\n\n### Read result\n\n#### What the model sees\n\nA successful read is exactly `<path><displayPath></path>`, newline, `<type>file</type>`, newline, `<content>`, numbered lines as `<lineNumber>: <text>`, a blank line, one footer, and `</content>`. The footer is exactly `(Output capped. Showing lines <start>-<end>. Use offset=<next> to continue.)`, `(Showing lines <start>-<end> of <total>. Use offset=<next> to continue.)`, or `(End of file - total <total> lines)`. A long line ends exactly `... (line truncated to <max> chars)`. A missing read still returns `FS_NOT_FOUND`, but it records confirmed absence for the calling session; after an externally deleted file is re-read, a retried `write` can safely recreate it through the provider's no-replace guard.\n\n#### Token effect\n\nRead output is capped by `readLimit`, `readMaxLineLength`, and `readMaxBytes`; the retained call and result are resent until compaction.\n\n#### KV Cache effect\n\nAppend-only; newly visible content follows the reusable request prefix and does not invalidate existing KV-cache entries.\n\n### Write and edit results\n\n#### What the model sees\n\nWrite returns the exact five-line envelope `<path><displayPath></path>`, `<type>file</type>`, `<content>`, `Created file` or `Updated file`, then `</content>`. Edit returns exactly `The file <displayPath> has been updated successfully.` or, for `replace_all`, `The file <displayPath> has been updated. All occurrences were successfully replaced.` The full write or replacement text remains in the assistant tool-call arguments.\n\n#### Token effect\n\nSuccess text is small, but large mutation arguments and any result are resent until compaction.\n\n#### KV Cache effect\n\nAppend-only; newly visible content follows the reusable request prefix and does not invalidate existing KV-cache entries.\n\n### Tool errors\n\n#### What the model sees\n\nFailures are normalized as `Error: <message>`. This package's stable validation and read messages are `file_path must be a non-empty string`, `limit must be less than or equal to <max>`, `old_string must be a non-empty string`, `old_string and new_string must differ`, `cannot read \"<path>\": not found`, `cannot read \"<path>\": not a regular file`, and `offset <offset> is out of range for \"<path>\" (<total> lines)`; provider and policy templates are quoted in their package READMEs. Guarded-mutation failures additionally carry their recovery instruction in the message, appended by this package's model-facing error wrapper: `FS_STALE_VERSION` gets `— re-read the file, then retry`, and `FS_NOT_OBSERVED` gets `— read the file, then retry`; the structured code is preserved. After that reread confirms absence, edit reports `FS_NOT_FOUND` instead of repeating a stale remedy, while write uses guarded creation.\n\n#### Token effect\n\nOnly a failing call adds these retained tokens.\n\n#### KV Cache effect\n\nAppend-only; newly visible content follows the reusable request prefix and does not invalidate existing KV-cache entries.\n\n## Known Limitations and Deferred Work\n\n- **No model-facing directory listing ships** — `ctx.fs.listDir` serves provider code such as skill discovery, while the sibling [`dsh-tool-fs-search`](../tool-fs-search/) package supplies ripgrep-backed `glob` and `grep` rather than extending the filesystem seam.\n- **`read` handles UTF-8 text files only** — binary-safe reads and PDF/image/multimodal content are deferred; a directory target is `FS_NOT_REGULAR_FILE`.\n- **No timeout surface** — `read`/`write`/`edit` take no timeout argument and declare no `timeout-policy` budget; cancellation rides `exec.signal` only ([provider rationale](../README.md#no-timeouts-on-file-io)).\n","readmeFilename":"README.zh.md","repository":{"url":"git+https://github.com/deepseek-ai/deepseek-harness.git","type":"git","directory":"packages/fs/tool-fs"},"_source_registry_name":"default"}