{"_id":"@cylio/dsh-attachment-local","name":"@cylio/dsh-attachment-local","dist-tags":{"next":"0.1.0-rc.5","latest":"0.1.0-rc.5"},"versions":{"0.1.0-rc.5":{"name":"@cylio/dsh-attachment-local","description":"Private content-addressed DSH_HOME attachment storage","version":"0.1.0-rc.5","publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+https://github.com/deepseek-ai/deepseek-harness.git","directory":"packages/attachment/attachment-local"},"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","peerDependencies":{"@cylio/dsh-attachment":"^0.1.0-rc.5","@cylio/dsh-home-paths":"^0.1.0-rc.5","@cylio/dsh-invariants":"^0.1.0-rc.5","@cylio/cordis":"^4.0.1"},"dependencies":{"sharp":"^0.35.3","@cylio/schemastery":"^3.18.1"},"devDependencies":{"@cylio/dsh-attachment":"^0.1.0-rc.5","@cylio/dsh-invariants":"^0.1.0-rc.5","@cylio/cordis":"^4.0.1","@cylio/dsh-home-paths":"^0.1.0-rc.5"},"_id":"@cylio/dsh-attachment-local@0.1.0-rc.5","bugs":{"url":"https://github.com/deepseek-ai/deepseek-harness/issues"},"homepage":"https://github.com/deepseek-ai/deepseek-harness#readme","_integrity":"sha512-gOXL60eL4jimY6c/L+m1IEdYGfKajUsyObpKbaOiOUKs9KpbO8ATznSSiAwyqp9ZbOqIu9VdW4V6pMz5Z3kNlA==","_resolved":"/home/music/deepseek-harness/dist/npm-dsh/cylio-dsh-attachment-local-0.1.0-rc.5.tgz","_from":"file:/home/music/deepseek-harness/dist/npm-dsh/cylio-dsh-attachment-local-0.1.0-rc.5.tgz","_nodeVersion":"24.19.0","_npmVersion":"11.17.0","dist":{"integrity":"sha512-gOXL60eL4jimY6c/L+m1IEdYGfKajUsyObpKbaOiOUKs9KpbO8ATznSSiAwyqp9ZbOqIu9VdW4V6pMz5Z3kNlA==","shasum":"b85fabdbae475f53851f404459bccbc3a36c7ceb","tarball":"https://registry.npmjs.org/@cylio/dsh-attachment-local/-/dsh-attachment-local-0.1.0-rc.5.tgz","fileCount":11,"unpackedSize":25866,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCID1VCKTc3oCDPYJ/6x7i1MU/C2Ebre1Z4uVVltipgG22AiEA68BDp88GSNZoG4VVFfCJERxjY91yn6u7jmvVCO0S3dQ="}]},"_npmUser":{"name":"cylio","email":"cylio529@gmail.com"},"directories":{},"maintainers":[{"name":"cylio","email":"cylio529@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/dsh-attachment-local_0.1.0-rc.5_1786882413243_0.3936296809632991"},"_hasShrinkwrap":false}},"time":{"created":"2026-08-16T12:13:33.089Z","0.1.0-rc.5":"2026-08-16T12:13:33.399Z","modified":"2026-08-16T12:13:33.572Z"},"maintainers":[{"name":"cylio","email":"cylio529@gmail.com"}],"description":"Private content-addressed DSH_HOME attachment storage","homepage":"https://github.com/deepseek-ai/deepseek-harness#readme","repository":{"type":"git","url":"git+https://github.com/deepseek-ai/deepseek-harness.git","directory":"packages/attachment/attachment-local"},"bugs":{"url":"https://github.com/deepseek-ai/deepseek-harness/issues"},"license":"MIT","readme":"# @cylio/dsh-attachment-local\n\n[English](README.md) | 中文\n\n这是 [`@cylio/dsh-attachment`](../attachment) 的私有本地实现。对象存放在 `<DSH_HOME>/attachments/v1/objects/<sha256-prefix>/<sha256>`，并通过不透明的 `sha256:` 标识符寻址。每个进程都会通过将每个祖先目录项逐级同步到文件系统根目录，为某个 home 一次性证明其持久性，因此绝不会把另一个进程已经创建但尚未同步的目录误认为安全边界。随后，写入过程使用私有暂存目录、仅所有者可访问的文件、经过同步的临时文件、原子且排他的硬链接发布，并对发布路径执行目录同步（适用于 POSIX；Windows 依赖文件系统元数据日志），确保已报告的引用能够在崩溃后继续存在。写入准入与读取都会完整解码光栅图片，之后才接受其格式和尺寸；读取还会重新校验摘要和已记录的元数据。字节和像素限制属于写入时的准入策略，因此后续收紧限制不会导致已经接纳的历史记录变得不可读。\n\n`DSH_HOME` 按共享路径策略解析：显式配置、`$DSH_HOME`，最后是 `~/.dsh`。会话日志只包含引用和经过校验的元数据，绝不包含这个宿主路径。`readImage` 会把可选取消信号传入文件系统读取、在校验前后观察该信号，并保留取消语义，而不会将其包装成 `ATTACHMENT_READ_FAILED`。\n\n## 模型体验\n\n该包通过重启和 fork 后对历史用户图片与结构化模型图片输出的持久回放间接影响模型。\n\n#### KV 缓存影响\n\n除发起请求的适配器所持有的图片块外，不产生其他影响。\n\n## 已知限制与待完成工作\n\n- 对象会无限期保留；基于引用的垃圾回收尚未实现。\n- 本地后端假定宿主与提供方适配器共享同一个文件系统服务。\n- 动态 GIF 的元数据根据逻辑屏幕进行校验；逐帧解码策略由提供方持有。\n","readmeFilename":"README.zh.md","_rev":"1-67dab7c4fdf26b07827a927fe909e16d"}