Skip to content
dsh.fish
Bundle

@dsh-external/dsh-session-cleanup

DSH profile bundle: Settings pages to list current/residual sessions and archived documents (ID, date, summary) and delete them with double confirmation.

Source
ShiraGawaAnri
License
MIT
Updated
Updated 15 days ago

Readme

[中文](README.zh.md) | [English](README.md)

# dsh-session-cleanup

A DSH profile bundle that adds two Settings pages for inspecting and cleaning
up residual (persisted but not open) sessions and archived sessions.

## Features

### Settings → Sessions清理

- **刷新Sessions** button
- **当前Sessions**: live in-memory sessions (display only, no action buttons) with session ID / date / summary (title + first user message excerpt)
- **残留Sessions**: persisted but not currently open sessions, each with a **delete** button

### Settings → 归档清理

- **刷新归档** button
- **所有归档**: all archived sessions with ID / summary / date
- Per-row **delete** button plus **delete-all**
- Live sessions show a "运行中" badge and cannot be deleted

Every deletion requires double confirmation (arm → confirm, with cancel).

## What deletion does

1. Refuses live (running) sessions
2. Removes the persisted session log file/directory (paths come from
   `sessionPersistence.locate()`; the client only ever submits session ids)
3. Detaches the session from its workspace account (durable write)
4. Removes the id from the global archive set if present (durable write +
   registry cache sync so later archive operations cannot resurrect it)

Deletion is **not recoverable**.

## Installation

Prerequisites: a working DSH installation (`dsh web`) and `pnpm` on PATH
(`dsh plugin` forwards to pnpm).

```powershell
# 1. Unzip, e.g. to D:\plugins\dsh-session-cleanup

# 2. Install into the web profile
dsh plugin --profile web add file:D:/plugins/dsh-session-cleanup

# or from the parent directory of the unzipped folder:
dsh plugin --profile web add ./dsh-session-cleanup
```

`dsh plugin add` runs pnpm in the profile directory and appends
`@dsh-external/dsh-session-cleanup` to the profile's `dsh.profile.bundles`
layer — no manual cordis.yml edit.

```powershell
# 3. Restart dsh web
# 4. Open Settings → Sessions清理 / 归档清理
```

## Uninstall

```powershell
dsh plugin --profile web remove @dsh-external/dsh-session-cleanup
# then restart dsh web
```

## Notes

- Host-side deletion uses Node `fs.rm`, restricted to paths returned by
  `sessionPersistence.locate()`.
- The API route (`POST /_dsh/session-cleanup/api`) rejects cross-site requests.
- Deletion is an administrative action triggered explicitly from the Settings
  page; it does not interact with DSH sandbox policies or model tool calls.
- Requires host services `sessions`, `sessionPersistence`, `workspaceRegistry`,
  `storageDomain` (and optional `webServer`), plus the client `slots` service.
- Zero third-party npm dependencies.

Install

dsh plugin --profile web add github:ShiraGawaAnri/dsh-session-cleanup

Profile: web

  • This source has no pinned commit, so a later push upstream changes what installs. Prefer pinning a commit.
Source