Files
dsh_ai1net_server/归档/poc-dsh-local/workspace-scoped-picker/normalize-picker-patch.py
T
admin ce8e6ceed9 chore(工作区): 纳入版本控制基线(回收 411 MB 过程产物)
回收 411 MB(470 M → 58.8 M),全部经回收站,可恢复:
- 待清理/(146.2 M,含 relay 分片 128 M 与 42 项过程目录)
- tmp/(32.4 M,按接续棒命名的过程临时区)
- .workbuddy/tmp/(39.5 M)
- 4 份 workbuddy.db 冗余副本(101 M,09-23 事故的坏副本 / 抢救产物)
- tmp/im16/gw/centrifugo 二进制(63.9 M,可重下)+ 缓存残留

入库范围:常驻规则(CODEBUDDY.md / README.md / state.py)、在途接续入口与
接续包、docs/、交付物/、交接单/、归档/、scripts/、.codebuddy/、
.workbuddy/memory/;共 398 件,其中 >60 KB 的 26 件全为文档。

排除(.gitignore):tmp/、待清理/、运行态日志与缓存、*.db 与 DB 备份整目录、
打包二进制(*.tar.gz / *.tgz)、记忆修复前备份。
2026-09-24 07:51:03 +08:00

56 lines
2.2 KiB
Python

#!/usr/bin/env python3
"""归一化 profile 的 cordis.patch.yml:删除所有「平台段」(任意标记形式)后,追加唯一一份标准段。
用法: python3 normalize-picker-patch.py [--dry-run] <patch文件> [<patch文件> ...]
"""
import io
import sys
BEGIN_RE = '# >>> platform: workspace-scoped-picker'
END_RE = '# <<< platform: workspace-scoped-picker'
BLOCK = """# >>> platform: workspace-scoped-picker (managed by ensure-workspace-picker.cjs)
# 目录选择器收敛(档案 18 v3):官方对话框 UI 保留(单独插入 client 面),
# host 面换成受限实现(根=自有 ws,越界拒绝);插件 client 面再注入 CSS 隐藏「改路径」入口。
- insert:
- id: workspace-scoped-picker
name: "@dsh-local/workspace-scoped-picker"
- id: ui-directory-picker-browse
name: "@deepseek-ai/dsh-client-ui-directory-picker-browse"
- id: directory-picker
name: "@deepseek-ai/dsh-host-directory-picker-auto"
disabled: true
# <<< platform: workspace-scoped-picker
"""
dry = '--dry-run' in sys.argv
files = [a for a in sys.argv[1:] if not a.startswith('--')]
for path in files:
src = io.open(path, encoding='utf-8').read()
lines = src.split('\n')
kept, removed, skipping = [], 0, False
for line in lines:
if line.startswith(BEGIN_RE):
skipping = True
removed += 1
continue
if skipping:
if line.startswith(END_RE):
skipping = False
continue
kept.append(line)
body = '\n'.join(kept).strip()
if body in ('', '[]'):
body = ''
out = (body + '\n\n' if body else '') + BLOCK
# 校验:每个关键 id 恰好出现一次
checks = {
'workspace-scoped-picker': out.count('- id: workspace-scoped-picker'),
'ui-directory-picker-browse': out.count('- id: ui-directory-picker-browse'),
'directory-picker': out.count('- id: directory-picker'),
}
print(' %s: 移除旧平台段 %d 份 → %s' % (path.split('/')[-4][:8], removed,
'OK ' + str(checks) if all(v == 1 for v in checks.values()) else 'CHECK ' + str(checks)))
if not dry:
io.open(path, 'w', encoding='utf-8', newline='').write(out)