@xrn1997/dsh-session-delete 0.2.1 → 0.2.2

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/README.md CHANGED
@@ -6,133 +6,72 @@
6
6
 
7
7
  给 DeepSeek Harness(DSH)加一个**删除会话**的能力。DSH 官方有归档、没有删除——归档只是把会话从列表里挪走,文件还在。本插件补上删除,并且让删除可恢复:删除 = 移入回收站,另有一个显式的「彻底删除」。
8
8
 
9
- ![回收站面板:左边一列是按项目分组的会话清单,右边是选中那条的详情(元信息与正文),页脚是整页唯一的实心红按钮「清空回收站…」](https://raw.githubusercontent.com/xrn1997/dsh-session-delete/main/docs/screenshots/screenshot-01.png)
9
+ ![回收站面板:左列是按项目分组的会话清单,右栏是选中那条的元信息与正文,页脚是整页唯一的实心红按钮「清空回收站…」](https://raw.githubusercontent.com/xrn1997/dsh-session-delete/main/docs/screenshots/screenshot-01.png)
10
10
 
11
- ## 快速开始
12
-
13
- 1. 安装:
14
-
15
- ```bash
16
- dsh plugin --profile <profile> add @xrn1997/dsh-session-delete
17
- ```
18
-
19
- 2. 重启宿主(Node 半不走 HMR)。
20
- 3. 用起来:
21
- - **删一条**:会话行「⋯」→「删除」。
22
- - **删一批**:会话行「⋯」→「多选」,勾选后点浮条里的「移入回收站 N 条」。
23
- - **管理回收站**:侧栏的「回收站」。
24
-
25
- 兼容性与离线安装见[安装与兼容性](#安装与兼容性)。
11
+ - 安装:`dsh plugin --profile <profile> add @xrn1997/dsh-session-delete`
12
+ - 许可:[Apache-2.0](LICENSE)
13
+ - 数据:回收站本体留在本机 `~/.dsh/session-trash/`,不联网、不上传
26
14
 
27
15
  ## 目录
28
16
 
29
- - [快速开始](#快速开始)
30
- - [功能一览](#功能一览)
31
- - [删除会话](#删除会话)
32
- - [回收站](#回收站)
33
- - [安装与兼容性](#安装与兼容性)
34
- - [数据与安全](#数据与安全)
17
+ - [功能特性](#功能特性)
18
+ - [安装](#安装)
19
+ - [用法](#用法)
20
+ - [回收站与数据](#回收站与数据)
35
21
  - [界面语言](#界面语言)
36
22
  - [常见问题](#常见问题)
37
23
  - [开发](#开发)
38
24
  - [贡献](#贡献)
39
25
  - [许可](#许可)
40
26
 
41
- ## 功能一览
42
-
43
- | 想做什么 | 从哪进 | 结果 |
44
- | --- | --- | --- |
45
- | 删一条会话 | 会话行「⋯」→「删除」 | 确认后移入回收站,连同盘上的子会话与更深后代;6 秒内可撤销 |
46
- | 删一批会话 | 会话行「⋯」→「多选」→ 勾选 → 浮条「移入回收站 N 条」 | 一次确认、一次批量执行;失败的留在框里可重试,成功的 6 秒内可整批撤销 |
47
- | 看回收站、判断该不该恢复 | 侧栏「回收站」 | 左清单、右详情;可折叠分组、拖分栏 |
48
- | 恢复一条 | 回收站行右侧「恢复」 | 直接放回原项目目录,恢复删除前的归档状态 |
49
- | 批量恢复 | 回收站「多选」→ 勾选 → 页脚「恢复 N 条」 | 确认框逐条列出目标;回到各自的原项目目录 |
50
- | 彻底删一条 / 清空 | 回收站行右侧「彻底删除…」/ 页脚「清空回收站…」 | 二次确认后真的移除文件,不可恢复 |
51
- | 批量彻底删除 | 回收站「多选」→ 勾选 → 页脚「彻底删除 N 条」 | 二次确认后执行,失败原因留在该行 |
52
-
53
- ## 删除会话
54
-
55
- ### 单条删除
56
-
57
- 会话行「⋯」→「删除」→ 确认框「移入回收站」。确认框在点之前就说明**这一组**的规模:
58
-
59
- ![会话行的「⋯」菜单:宿主原有动作之后,本插件加了「多选」与红色的「删除」两行](https://raw.githubusercontent.com/xrn1997/dsh-session-delete/main/docs/screenshots/screenshot-02.png)
60
-
61
- - 「含 N 个子会话,将一起移入回收站。」——只在 N>0 时出现;
62
- - 删完有一条停留 6 秒的撤销提示,点「撤销」即恢复。
63
-
64
- 删除按**整组**走:父会话在盘上的子会话与更深后代一起移走(那些行宿主本来就不显示)。任一组员正在运行 ⇒ 整组拒绝、零副作用,报的是那个运行中的 id。
65
-
66
- ### 批量删除
67
-
68
- 宿主会话列表上的批量删除是**显式模式**:
69
-
70
- ![批量删除模式:两行已勾选,浮条显示「已选 2 条」和展开的已选清单,动作是「移入回收站 2 条」与「退出多选」](https://raw.githubusercontent.com/xrn1997/dsh-session-delete/main/docs/screenshots/screenshot-03.png)
71
-
72
- - 入口:会话行「⋯」→「多选」;模式内再点同一条(变成「退出多选」)退出。模式外不显示勾选框。
73
- - 模式内:点整行勾选/取消,且**不会切换会话**;行首出勾选框(有状态点或归档的行没有这一格,用行尾那颗兜底);在跑的会话勾不动,悬停说明原因。
74
- - 浮条在多选模式内常驻(0 条也显示,给退出入口):已选条数、读得到时合计「含 K 个子会话,跟着整组走」;「查看已选」展开限高可滚的清单(可逐条移除);同一个位置按当前可见可选行在「全选 / 取消全选」之间切换(折叠组、归档过滤外的行不算);「移入回收站 N 条」;「退出多选」。
75
- - 确认框逐条列出这批会话(有子会话的那条标「含 M 个子会话」),汇总再说一次这一批会带走多少;卡片限高 280px 滚动,计数在开框时重新问。
76
- - 执行是一次批量请求。部分失败不关框,原文落在失败那一行,按钮变成「重试这 N 条」;成功的条目 6 秒内可整批撤销(撤销 = 一次批量恢复)。
77
- - 计数读不到就整句不说,也不因此锁死确认按钮——不拿 0 冒充「没有」。
78
-
79
- ### 级联与运行中拒绝
27
+ ## 功能特性
80
28
 
81
- - 删除按**传递闭包**取子会话:子会话的子会话也跟着走,一层层取到底。
82
- - 任一成员在跑(包括宿主的列表里看不见的子会话)⇒ 整组拒绝、零副作用。本插件不替用户终止正在进行的活。
83
- - 运行中的父会话在菜单里置灰,提示「会话正在运行,先停止再删除」。
29
+ - **删除 = 移入回收站**:会话行「⋯」→「删除」,可随时恢复;删完有一条停 6 秒的撤销提示
30
+ - **按整组删**:父会话在盘上的子会话与更深后代一起走;任一成员在跑 ⇒ 整组拒绝、零副作用
31
+ - **批量删除**:宿主会话列表「⋯」→「多选」,一次确认、一次执行;失败的留在框里可重试,成功的整批撤销
32
+ - **回收站面板**:左清单右详情,按项目分组、可折叠、可拖分栏;看得见正文再决定恢复不恢复
33
+ - **恢复**:单条即点即回,批量带确认;回到各自的原项目目录并还原删除前的归档可见性
34
+ - **显式彻底删除**:单条「彻底删除…」与页脚「清空回收站…」共用同一个二次确认;不自动过期
35
+ - **清理无主残留**:父会话已不存在的子会话宿主根本不显示,面板扫描到后由你决定清不清
36
+ - **失败不吞**:宿主读不到时把原文上屏并给「重试」;不可用时不注册任何入口
37
+ - **文案随宿主语言**:中文 / English 挂在宿主 locale 服务上
84
38
 
85
- ## 回收站
39
+ ## 安装
86
40
 
87
- ### 清单与详情
88
-
89
- 侧栏面板列表里的「回收站」一行(与「插件」同层)。面板用满中央列:
90
-
91
- - 盒子宽 ≥900px 时左右两栏:左清单(默认 420px)、右详情。中央列更窄时改成下钻——点一条看详情,「← 返回清单」回来。
92
- - 清单按项目分组,每条两行:标题 / 「刚刚删除 · 24KB」或「删除于 7分钟前 · 350KB」。带子会话的行会说「含 N 个子会话」;级联落地前删掉的存量说「盘上还剩 M 个子会话」——两个数各说各的。
93
- - 点行选中并在右边看详情;行右侧是「恢复」(描边)与「彻底删除…」(安静的红)。
94
- - 头部是条数与合计占用(多选态换成已选条数);页脚是回收站位置说明与「清空回收站…」(多选态换成两颗动作按钮)。
95
- - 组头可单独折叠,也可一键全部折叠/展开;折叠起来的组条目直接收掉,计数还留在组头上。两栏之间那根线可拖(键盘 ←→ / Home / End 也行),最窄 330px,Home 回默认 420px。
96
- - 详情有四组元信息(时间/体量/计数/位置)和正文:只列你真实发的提问与助手的文字,宿主注入的上下文与工具调用不进正文。助手文字按 Markdown 排版,你的提问保持原话。
97
- - 面板有读数中 / 空 / 失败 / 有条目;详情有未选中 / 读数中 / 失败 / 有内容。失败时把宿主原文上屏并给「重试」;详情坏掉只坏详情那一块,清单照常可用。空态时底部不出现「清空回收站…」。
98
-
99
- ### 恢复
41
+ ```bash
42
+ dsh plugin --profile <profile> add @xrn1997/dsh-session-delete
43
+ dsh plugin --profile <profile> remove @xrn1997/dsh-session-delete
44
+ ```
100
45
 
101
- - 单条恢复**不需要确认框**:按记录的原目录名放回原项目目录,并还原删除前的可见性——原来未归档的仍未归档,原来归档的仍在归档态。
102
- - 原工作区已经被删掉也照常恢复:跳过账本挂接,会话归入「未分组」。清单行在点之前就说「原工作区已不存在,恢复后归入未分组」,批量恢复的确认框逐条重复同一句。
46
+ 装完**重启宿主**(Node 半不走 HMR)。卸载只移除插件,`~/.dsh/session-trash/` 下已有的目录不会被自动清理。
103
47
 
104
- ### 多选:批量恢复与批量彻底删除
48
+ 也可以离线分发:`pnpm pack` 出 tarball 后 `dsh plugin add ./dsh-session-delete-<版本>.tgz`。包里带预构建产物(`prepack` 会替你跑 `build`),这条路不需要为构建脚本授权。
105
49
 
106
- 回收站工具栏的「多选」进入:
50
+ **兼容性分两层,别混**:
107
51
 
108
- - 模式内行右侧两颗按钮退场、标题左侧出勾选框,点行就是切换勾选;组头多出一颗**三态**勾选框,点它把这个项目的**全部**会话选上(包括折叠起来看不见的),只勾了几条时显示半选。退出多选即清空勾选,不留看不见的勾选。
109
- - 页脚换成两颗:「恢复 N 条」描边 + 「彻底删除 N 条」实心红;一条没勾时两颗都置灰并说明原因。
110
- - **批量恢复带确认框**(单行恢复仍直接执行):逐条列出标题与项目名,正文说明「这一批会回到它们各自的原项目目录」。
111
- - **批量彻底删除**同样先确认;确认框说清这一批不可恢复。
112
- - 两者都是一次批量请求;失败的原文留在它自己那行,成功的随清单重读消失、已选计数下降。批量恢复失败后多选态保持,方便直接处理剩下的。
52
+ - **装得上**由 `package.json` 的 `engines.dsh` 决定:宿主拿运行中的版本比这个区间,不满足即拒绝并回滚。窗口是 **`>=0.1.7-rc.2 <0.3.0-0`**(预发布版本参与匹配)。地板是**完整功能**的最低代次:`0.1.7-rc.2` 在 CLI 台架上验过四个槽位齐全、激活零错误;更低的 `0.1.7-rc.1` 缺行首勾选槽位,`0.1.5` 起连会话行入口都没有。
53
+ - **真跑过**由 `dsh.compatibility.dshReleases` 记录,只列桌面真机实测过的宿主:**DSH Desktop 0.2.0-rc.2、0.2.1-rc.1、0.2.1-rc.2**(均 `compatible`)。窗口内的其他代次装得上但没在桌面真机上验过;窗口外的一律拒装。
113
54
 
114
- ### 彻底删除与清空
55
+ ## 用法
115
56
 
116
- - 单条「彻底删除…」与页脚「清空回收站…」共用同一个二次确认;单条那张卡片报的是**这一次会释放多少**(父加跟着进来的孩子,与页脚合计同一个数)。
117
- - 没有自动过期,只有显式彻底删除或清空才会真的丢字节。
57
+ **删一条**:会话行「⋯」→「删除」→ 确认框。确认框在点之前就说明**这一组**的规模(「含 N 个子会话,将一起移入回收站」,N>0 才出现),删完那条提示点「撤销」即恢复。
118
58
 
119
- ## 安装与兼容性
59
+ ![会话行的「⋯」菜单:宿主原有动作之后,本插件加了「多选」与红色的「删除」两行](https://raw.githubusercontent.com/xrn1997/dsh-session-delete/main/docs/screenshots/screenshot-02.png)
120
60
 
121
- ```bash
122
- dsh plugin --profile <profile> add @xrn1997/dsh-session-delete
123
- dsh plugin --profile <profile> remove @xrn1997/dsh-session-delete
124
- ```
61
+ 删除按**整组**走:父会话在盘上的子会话与更深后代一起移走(传递闭包,一层层取到底)——那些行宿主本来就不显示。任一成员在跑(**包括列表里看不见的子会话**)⇒ 整组拒绝、零副作用,报的是那个运行中的 id;本插件不替用户终止正在进行的活。
125
62
 
126
- 装完**重启宿主**(Node 半不走 HMR)。卸载只移除插件,`~/.dsh/session-trash/` 下的已有目录不会被自动清理。
63
+ **删一批**:会话行「⋯」→「多选」进入显式模式。模式内点整行勾选/取消且**不切换会话**,行首出勾选框,浮条常驻(0 条也给退出入口),同一位置在「全选 / 取消全选」之间切换。确认框逐条列出这批会话,执行是一次批量请求:部分失败不关框、原文落在失败那一行,按钮变成「重试这 N 条」,成功的 6 秒内可整批撤销。
127
64
 
128
- 也可以离线分发:`pnpm pack` 出 tarball 后 `dsh plugin add ./dsh-session-delete-<版本>.tgz`。包里带预构建产物(`prepack` 会跑 `build`),这条路不需要为构建脚本授权。
65
+ ![批量删除模式:两行已勾选,浮条显示「已选 2 条」与展开的已选清单,动作是「移入回收站 2 条」与「退出多选」](https://raw.githubusercontent.com/xrn1997/dsh-session-delete/main/docs/screenshots/screenshot-03.png)
129
66
 
130
- **兼容性分两层,别混**:
67
+ **管回收站**:侧栏面板里的「回收站」一行(与「插件」同层)。左清单右详情(中央列更窄时改成下钻,「← 返回清单」回来),按项目分组、组头可折叠、两栏之间那根线可拖。详情只列你真实发的提问与助手的文字,宿主注入的上下文与工具调用不进正文;助手文字按 Markdown 排版,你的提问保持原话。
131
68
 
132
- - **装得上**由 `package.json` 的 `engines.dsh` 决定:宿主的 `dsh plugin add` 会拿运行中的宿主版本比这个区间,不满足即拒绝并回滚;清单里声明了 `engines.dsh` 时,`@deepseek-ai/dsh*` 的 peer 区间不再参与判断(本插件仍保持零 `dsh-*` peer)。当前窗口是 **`>=0.1.7-rc.2 <0.3.0-0`**(预发布版本参与匹配)。地板是**完整功能**的最低代次:`0.1.7-rc.2` 在 CLI 台架上验过四个槽位齐全、激活零错误;更低的 `0.1.7-rc.1` 缺行首勾选槽位,`0.1.5` 起连会话行入口都没有。
133
- - **真跑过**由 `dsh.compatibility.dshReleases` 记录,只列桌面真机实测过的宿主:**DSH Desktop 0.2.0-rc.2、0.2.1-rc.1、0.2.1-rc.2**(均 `compatible`)。窗口内的其他代次装得上但没在桌面真机上验过;窗口外的一律拒装。
69
+ - **恢复**:单条不需要确认框,放回原项目目录并还原删除前的归档可见性。原工作区已被删掉也照常恢复(跳过账本挂接,归入「未分组」),清单行在点之前就说这句。
70
+ - **批量恢复 / 批量彻底删除**:工具栏「多选」进入,页脚换成两颗动作按钮。组头那颗是**三态**勾选框,点它选上这个项目的全部会话(含折叠起来看不见的)。两者都先确认,逐条执行、失败不连坐,失败的原文留在它自己那行。
71
+ - **彻底删除 / 清空**:共用同一个二次确认。单条那张卡片报的是**这一次会释放多少**(父 + 跟着进来的孩子 + 仍留在盘上的后代,与头部合计共用同一算式)。「清空回收站…」先把回收站目录与清单对账一遍再清,所以手工搬进 `session-trash/` 的**认得出**的目录也归它管;认不出的外人目录不动也不列。
72
+ - **无主残留**:父会话已不在(既不在会话列表、也不在回收站清册)的子会话,宿主客户端整排不显示,回收站里也不会有。面板顶部只在扫描到时出现条件提示,预览后由你决定清不清;永久删除、不搬进回收站、**绝不自动跑**。
134
73
 
135
- ## 数据与安全
74
+ ## 回收站与数据
136
75
 
137
76
  | 东西 | 位置 |
138
77
  | --- | --- |
@@ -144,6 +83,7 @@ dsh plugin --profile <profile> remove @xrn1997/dsh-session-delete
144
83
  - **清单丢了不致命**:会话文件自描述,解压后第一行即 header,含 `id` 与 `cwd`;每次读清单都会与回收站目录对账。
145
84
  - **不自动过期**:不设天数上限,清空是显式动作;界面显示条数与占用。
146
85
  - **附件不连坐**:附件是全局内容寻址的,与会话不是父子关系——删除不连带,也不会回收;被删会话独享的附件会留成垃圾(要回收得先有引用计数,属另一件事)。
86
+ - **无主子会话不在回收站里**:它们的父会话已不存在;清理只清会话目录,不包含宿主投影缓存和附件。
147
87
  - 回收站本体留在本机、不联网、不上传。
148
88
 
149
89
  ## 界面语言
@@ -162,7 +102,7 @@ dsh plugin --profile <profile> remove @xrn1997/dsh-session-delete
162
102
 
163
103
  **正在运行的会话为什么删不掉?**
164
104
 
165
- 判据用的是宿主自己的活跃检查(与官方归档的准入同源)。一律拒绝,不替用户终止正在进行的活——先停下这个会话再删。**它正在跑的子会话也算**:一条父会话的子会话在跑时,整条删除会被拒绝,报的是那个子会话的 id(那一行宿主的列表里不显示,所以别看列表没在跑就以为删得掉)。
105
+ 判据用的是宿主自己的活跃检查(与官方归档的准入同源)。一律拒绝,不替用户终止正在进行的活——先停下这个会话再删。**它正在跑的子会话也算**:报告的是那个子会话的 id,而那一行宿主的列表里不显示,所以别看列表就以为删得掉。
166
106
 
167
107
  **批量删除/恢复为什么只成功了一部分?**
168
108
 
@@ -172,9 +112,9 @@ dsh plugin --profile <profile> remove @xrn1997/dsh-session-delete
172
112
 
173
113
  能。宿主的「删除工作区」只删注册、保留目录和每个会话日志;恢复照常回盘,只是跳过账本挂接,会话落在「未分组」。清单行和批量恢复确认框都会在点之前说明。
174
114
 
175
- **能恢复多久?**
115
+ **我把会话目录从回收站手工搬回 `sessions/` 了,为什么列表里没有?**
176
116
 
177
- 不存在时间上限。不自动过期,只有显式清空或彻底删除才会真的丢字节。
117
+ 回收站目录只负责文件;恢复还要挂回工作区账本并按删除前的归档态还原可见性。手工搬回不是恢复,下一次读清单会把对应行对账掉。请在面板里点「恢复」。
178
118
 
179
119
  ## 开发
180
120
 
@@ -196,7 +136,7 @@ dsh plugin --profile <profile> add "link:<本仓绝对路径>"
196
136
 
197
137
  改动生效分两半:**浏览器半**(`src/client/`)由宿主 HMR 推到浏览器,无需重启;**Node 半**不在热重载链路内,必须重启宿主。
198
138
 
199
- 设计住在 [`docs/design/2026-09-30-session-delete-design.md`](docs/design/2026-09-30-session-delete-design.md);回收站两栏、详情与批量动作另见 [`docs/design/2026-10-15-trash-detail-design.md`](docs/design/2026-10-15-trash-detail-design.md)。README 不复述。
139
+ 架构地图见 [`docs/architecture.md`](docs/architecture.md)(唯一主人清单、双半形态、数据与生命周期),裁决见 [`docs/adr/`](docs/adr/README.md);回收站两栏、详情与批量动作的判据账在 [`docs/design/2026-09-30-session-delete-design.md`](docs/design/2026-09-30-session-delete-design.md)(界面规格在其 §7)与 [`docs/design/2026-10-15-trash-detail-design.md`](docs/design/2026-10-15-trash-detail-design.md);构建、门控与发版流程见 [`docs/developing.md`](docs/developing.md)。README 不复述。
200
140
 
201
141
  ## 贡献
202
142
 
package/icon.svg CHANGED
@@ -1,18 +1,18 @@
1
- <!--
2
- 插件卡片/组件行的图标(`package.json` 顶层 `icon`,宿主按**图片**读它、不内联 HTML)。
3
-
4
- 形状逐字取自 `@deepseek-ai/dsh-client-ui-primitives@0.2.0-rc.2` 的 `IconTrashOutlineRegular`
5
- (与插件界面里那枚垃圾桶图标同源)。
6
-
7
- 两处与组件版不同:
8
- 1. 颜色写死。图片形式的 SVG **不继承 `currentColor`**(它是一份独立文档),所以不能像组件里那样
9
- 吃宿主的字色 ⇒ 取一个浅色/深色底上都能读的中灰。
10
- 2. 不带 `aria-hidden`。这不是行内构件,可及名由承载它的宿主卡片提供。
11
- -->
12
- <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16" fill="none" stroke="#8a9099" stroke-width="1">
13
- <path d="M1.28149 3.88831H14.7187" />
14
- <path d="M5.41602 3.88833V2.47962C5.41602 2.29282 5.52492 2.11366 5.71876 1.98157C5.9126 1.84948 6.17551 1.77527 6.44964 1.77527H9.55053C9.82466 1.77527 10.0876 1.84948 10.2814 1.98157C10.4753 2.11366 10.5842 2.29282 10.5842 2.47962V3.88833" />
15
- <path d="M2.57349 3.88831L3.19366 13.2943C3.21937 13.5502 3.33952 13.7872 3.53065 13.9593C3.72178 14.1313 3.97016 14.2259 4.22729 14.2246H11.7728C12.0299 14.2259 12.2783 14.1313 12.4694 13.9593C12.6605 13.7872 12.7807 13.5502 12.8064 13.2943L13.4266 3.88831" />
16
- <path d="M6.44946 6.98926V11.1238" />
17
- <path d="M9.55054 6.98926V11.1238" />
18
- </svg>
1
+ <!--
2
+ 插件卡片/组件行的图标(`package.json` 顶层 `icon`,宿主按**图片**读它、不内联 HTML)。
3
+
4
+ 形状逐字取自 `@deepseek-ai/dsh-client-ui-primitives@0.2.0-rc.2` 的 `IconTrashOutlineRegular`
5
+ (与插件界面里那枚垃圾桶图标同源)。
6
+
7
+ 两处与组件版不同:
8
+ 1. 颜色写死。图片形式的 SVG **不继承 `currentColor`**(它是一份独立文档),所以不能像组件里那样
9
+ 吃宿主的字色 ⇒ 取一个浅色/深色底上都能读的中灰。
10
+ 2. 不带 `aria-hidden`。这不是行内构件,可及名由承载它的宿主卡片提供。
11
+ -->
12
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16" fill="none" stroke="#8a9099" stroke-width="1">
13
+ <path d="M1.28149 3.88831H14.7187" />
14
+ <path d="M5.41602 3.88833V2.47962C5.41602 2.29282 5.52492 2.11366 5.71876 1.98157C5.9126 1.84948 6.17551 1.77527 6.44964 1.77527H9.55053C9.82466 1.77527 10.0876 1.84948 10.2814 1.98157C10.4753 2.11366 10.5842 2.29282 10.5842 2.47962V3.88833" />
15
+ <path d="M2.57349 3.88831L3.19366 13.2943C3.21937 13.5502 3.33952 13.7872 3.53065 13.9593C3.72178 14.1313 3.97016 14.2259 4.22729 14.2246H11.7728C12.0299 14.2259 12.2783 14.1313 12.4694 13.9593C12.6605 13.7872 12.7807 13.5502 12.8064 13.2943L13.4266 3.88831" />
16
+ <path d="M6.44946 6.98926V11.1238" />
17
+ <path d="M9.55054 6.98926V11.1238" />
18
+ </svg>