dsh-reference-anything 0.3.2 โ 0.4.0-alpha.1
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 +48 -39
- package/lib/client/index.d.ts +1 -1
- package/lib/client.js +75 -18
- package/package.json +218 -200
package/README.md
CHANGED
|
@@ -49,7 +49,7 @@ Use one `@` menu to reference:
|
|
|
49
49
|
|
|
50
50
|
Beyond extending what `@` can reference, Reference Anything also enhances the `@` menu itself:
|
|
51
51
|
|
|
52
|
-
- Customize visible groups: enable or hide `Commands`, `Skills`, files, DSH sessions, local agent conversations, external conversations, and cloud-drive files, then arrange them in any order
|
|
52
|
+
- Customize visible groups: enable or hide `Commands`, `Skills`, files, DSH sessions, local agent conversations, external conversations, and cloud-drive files, then arrange them in any order
|
|
53
53
|
- Customize result counts: set each group's collapsed row count and hard candidate cap independently
|
|
54
54
|
- Choose how to browse: expand or collapse individual groups, or use DSH's native scrolling list
|
|
55
55
|
- Enhanced visual icons: distinguish reference sources with type icons and platform logos, making menu items easier to identify
|
|
@@ -71,20 +71,21 @@ Type `@`, search across enabled sources, and insert the selected reference into
|
|
|
71
71
|
|
|
72
72
|
> [!IMPORTANT]
|
|
73
73
|
> This version targets DSH `0.1.0-rc.8` or newer. It uses the native `@` trigger menu, official file/session Remotes, and the native Composer reference renderer.
|
|
74
|
+
> The `0.3.x` line remains on the current stable DSH SDK (`0.1.0-rc.8 ~ 0.1.1-rc.2`). Due to breaking changes, starting with version `v0.4.0-alpha.1`, development releases will target DSH `v0.1.2-alpha.1` or newer, use the npm `alpha` tag, and no longer support older DSH releases.
|
|
74
75
|
|
|
75
76
|
> [!NOTE]
|
|
76
77
|
> DSH is currently in Beta, so its underlying capabilities and interfaces may change as it evolves. This plugin will adapt alongside those changes. Because of some current DSH limitations, parts of the implementation may not yet be ideal; we will continue to follow DSH updates and improve the plugin over time. See the relevant sections below for specific limitations and usage notes.
|
|
77
78
|
|
|
78
79
|
## ๐ฐ News
|
|
79
80
|
|
|
80
|
-
- **2026-08-
|
|
81
|
-
- **2026-08-
|
|
81
|
+
- **2026-08-28 ยท v0.3.3** โ Improved dark-theme backgrounds for the reference menu and settings panels, added project screenshot metadata, and refreshed the documentation. This is the final release line targeting the current stable DeepSeek Harness SDK; the next development release, `v0.4.0-alpha.1`, will migrate to DeepSeek Harness `v0.1.2-alpha.1` under the npm `alpha` tag and will not support older DSH releases.
|
|
82
|
+
- **2026-08-25 ยท v0.3.2** โ Added local-agent conversation references, with detected session counts and custom-folder support. Web AI sync can be age-limited; cloud drives now support folder browsing and quick download-folder access. Settings include update notes, and local-agent tool details stay concise unless expanded.
|
|
82
83
|
- **2026-08-20 ยท v0.3.0** โ Completed the native DSH `@` integration: five independently configurable sources, official file/session Remotes, native Composer references with source logos, in-place expand/collapse and sync actions, and a one-click switch between Reference Anything and the official DSH `@` list. The legacy `dsh-file:` protocol and custom Composer interaction layer were removed.
|
|
83
|
-
- **2026-08-19 ยท v0.2.4** โ Added automatic version checks and in-settings updates, Pill/Raw text input rendering modes, and reusable background browser sessions for more reliable OpenCLI synchronization and input interactions.
|
|
84
84
|
|
|
85
85
|
## ๐งญ Roadmap
|
|
86
86
|
|
|
87
87
|
- [x] Support referencing historical conversations from other local agents
|
|
88
|
+
- [ ] Support continuing referenced local-agent sessions
|
|
88
89
|
- [x] Reference cloud-drive files through OpenList
|
|
89
90
|
- [ ] Manage cloud-drive files inside the plugin (in progress; current access is read-only)
|
|
90
91
|
- [ ] Support more keyword matching rules, including blacklists and whitelists, especially for file search
|
|
@@ -100,12 +101,20 @@ Prerequisites:
|
|
|
100
101
|
- `dsh` is installed and running; automatic OpenCLI installation requires the `npm` bundled with Node.js.
|
|
101
102
|
- The target platforms are already logged in under the selected Chrome Profile.
|
|
102
103
|
|
|
103
|
-
Install the
|
|
104
|
+
Install the stable `0.3.x` line for the current stable DSH SDK:
|
|
104
105
|
|
|
105
106
|
```powershell
|
|
106
|
-
dsh plugin --profile web add dsh-reference-anything
|
|
107
|
+
dsh plugin --profile web add dsh-reference-anything@latest
|
|
107
108
|
```
|
|
108
109
|
|
|
110
|
+
Starting with `v0.4.0-alpha.1`, users on DSH `v0.1.2-alpha.1` can install the development line separately:
|
|
111
|
+
|
|
112
|
+
```powershell
|
|
113
|
+
dsh plugin --profile web add dsh-reference-anything@alpha
|
|
114
|
+
```
|
|
115
|
+
|
|
116
|
+
After the DSH alpha API stabilizes and the migration is verified, the `alpha` line will be promoted to `latest` and become the default installation.
|
|
117
|
+
|
|
109
118
|
For development, install the published DSH rc.8 SDK dependencies, run the verification gate, then install the repository from a local path:
|
|
110
119
|
|
|
111
120
|
```powershell
|
|
@@ -147,7 +156,7 @@ The default **Read bodies on demand** mode stores only the title index locally a
|
|
|
147
156
|
|
|
148
157
|
### ๐งฉ One `@` menu, multiple sources
|
|
149
158
|
|
|
150
|
-
The `@` menu contains seven groups: `Commands`, `Skills`, `Files and folders`, `DSH sessions`, `Local agent conversations`, `External conversations`, and `Cloud drive files`. The cloud-drive group browses folders and supported files from drives connected through OpenList; access is read-only, and connections are managed in Settings. Each group shows six rows before its expand action by default and accepts a separate hard candidate cap from 1 to 50. In collapse mode, each expand action reveals five more rows and updates the mounted menu without jumping back to the top; collapse restores the configured compact count. The external-conversation group keeps its sync action first and updates that row and the visible results in place while synchronization runs and completes. Under `Settings โ Reference Anything โ General`, you can enable or disable groups, reorder them, and choose **Collapse / expand** or **Native DSH scrolling**.
|
|
159
|
+
The `@` menu contains seven groups: `Commands`, `Skills`, `Files and folders`, `DSH sessions`, `Local agent conversations`, `External conversations`, and `Cloud drive files`. The cloud-drive group browses folders and supported files from drives connected through OpenList; access is read-only, and connections are managed in Settings. Each group shows six rows before its expand action by default and accepts a separate hard candidate cap from 1 to 50. In collapse mode, each expand action reveals five more rows and updates the mounted menu without jumping back to the top; collapse restores the configured compact count. The external-conversation group keeps its sync action first and updates that row and the visible results in place while synchronization runs and completes. Under `Settings โ Reference Anything โ General`, you can enable or disable groups, reorder them, and choose **Collapse / expand** or **Native DSH scrolling**.
|
|
151
160
|
|
|
152
161
|
#### โจ๏ธ @Commands โ DSH native commands
|
|
153
162
|
|
|
@@ -180,22 +189,22 @@ Type `@sessions:` to browse DSH sessions through the official session-reference
|
|
|
180
189
|
|
|
181
190
|
Selected sessions use DSH's canonical `dsh-session:` mention and native session appearance. Snapshot preparation and resolution remain owned by DSH rather than this plugin.
|
|
182
191
|
|
|
183
|
-
#### ๐ฅ๏ธ @Local agent conversations โ transcripts from local agent CLIs
|
|
184
|
-
|
|
185
|
-
Type `@agents:` to search and reference conversations saved by other local agent tools.
|
|
186
|
-
|
|
187
|
-
<p align="center"><img src="./images/at-local-agents.png" alt="Browse other local agents' transcripts from the @ menu" width="800" /></p>
|
|
188
|
-
|
|
189
|
-
**Supported agents:** Claude Code, Codex, Cursor, Qoder, Reasonix, OpenClaw, Kimi, Grok Build, Hermes, Gemini CLI, Pi, opencode, mimocode, and zcode.
|
|
190
|
-
|
|
191
|
-
**Features:**
|
|
192
|
-
|
|
193
|
-
- Automatically detects conversation history and shows the number found for each agent
|
|
194
|
-
- Lets you enable agents independently or choose a custom history folder
|
|
195
|
-
- Searches all detected conversations by default, with an option to limit results to the current workspace
|
|
196
|
-
- Reads conversation content on demand; tool names are concise by default, with full details available when needed
|
|
197
|
-
- Supports agent-specific prefixes such as `@codex:`, `@claude-code:`, and `@gemini-cli:`
|
|
198
|
-
|
|
192
|
+
#### ๐ฅ๏ธ @Local agent conversations โ transcripts from local agent CLIs
|
|
193
|
+
|
|
194
|
+
Type `@agents:` to search and reference conversations saved by other local agent tools.
|
|
195
|
+
|
|
196
|
+
<p align="center"><img src="./images/at-local-agents.png" alt="Browse other local agents' transcripts from the @ menu" width="800" /></p>
|
|
197
|
+
|
|
198
|
+
**Supported agents:** Claude Code, Codex, Cursor, Qoder, Reasonix, OpenClaw, Kimi, Grok Build, Hermes, Gemini CLI, Pi, opencode, mimocode, and zcode.
|
|
199
|
+
|
|
200
|
+
**Features:**
|
|
201
|
+
|
|
202
|
+
- Automatically detects conversation history and shows the number found for each agent
|
|
203
|
+
- Lets you enable agents independently or choose a custom history folder
|
|
204
|
+
- Searches all detected conversations by default, with an option to limit results to the current workspace
|
|
205
|
+
- Reads conversation content on demand; tool names are concise by default, with full details available when needed
|
|
206
|
+
- Supports agent-specific prefixes such as `@codex:`, `@claude-code:`, and `@gemini-cli:`
|
|
207
|
+
|
|
199
208
|
#### ๐ @External conversations โ external conversation platforms
|
|
200
209
|
|
|
201
210
|
Supports historical conversations from ChatGPT, Claude, Gemini, DeepSeek, Grok, and Kimi.
|
|
@@ -220,22 +229,22 @@ Supports historical conversations from ChatGPT, Claude, Gemini, DeepSeek, Grok,
|
|
|
220
229
|
|
|
221
230
|
Opening the source URL happens only in the UI; the URL is never injected into model context. The initial reference contains only a safe pointer; if the model needs the body, it calls `reference_read` on demand.
|
|
222
231
|
|
|
223
|
-
#### โ๏ธ @Cloud drive files โ files connected through OpenList
|
|
224
|
-
|
|
225
|
-
Type `@drive:`, `@cloud:`, `@netdisk:`, or `@็ฝ็` to browse folders and reference files from cloud drives connected through OpenList.
|
|
226
|
-
|
|
227
|
-
Common providers include OneDrive, Aliyun Drive, Baidu Netdisk, Quark, 115, 123, Dropbox, Google Drive/Photos, and Yandex. Other providers available in OpenList can be configured from the same settings page.
|
|
228
|
-
|
|
229
|
-
**Features:**
|
|
230
|
-
|
|
231
|
-
- Enables a managed OpenList instance with one click, or connects to an existing OpenList service
|
|
232
|
-
- Adds and manages drive mounts from Settings, including common providers through quick login
|
|
233
|
-
- Searches indexed files and supports folder-by-folder browsing from the `@` menu
|
|
234
|
-
- Shows the drive, path, and file type in search results to make similarly named files easy to distinguish
|
|
235
|
-
- Reads text files directly and downloads documents, spreadsheets, presentations, PDFs, and images when referenced
|
|
236
|
-
- Lets you choose and open the download directory
|
|
237
|
-
- Shows mount status and supports enabling, disabling, reauthenticating, removing, and rebuilding the search index
|
|
238
|
-
|
|
232
|
+
#### โ๏ธ @Cloud drive files โ files connected through OpenList
|
|
233
|
+
|
|
234
|
+
Type `@drive:`, `@cloud:`, `@netdisk:`, or `@็ฝ็` to browse folders and reference files from cloud drives connected through OpenList.
|
|
235
|
+
|
|
236
|
+
Common providers include OneDrive, Aliyun Drive, Baidu Netdisk, Quark, 115, 123, Dropbox, Google Drive/Photos, and Yandex. Other providers available in OpenList can be configured from the same settings page.
|
|
237
|
+
|
|
238
|
+
**Features:**
|
|
239
|
+
|
|
240
|
+
- Enables a managed OpenList instance with one click, or connects to an existing OpenList service
|
|
241
|
+
- Adds and manages drive mounts from Settings, including common providers through quick login
|
|
242
|
+
- Searches indexed files and supports folder-by-folder browsing from the `@` menu
|
|
243
|
+
- Shows the drive, path, and file type in search results to make similarly named files easy to distinguish
|
|
244
|
+
- Reads text files directly and downloads documents, spreadsheets, presentations, PDFs, and images when referenced
|
|
245
|
+
- Lets you choose and open the download directory
|
|
246
|
+
- Shows mount status and supports enabling, disabling, reauthenticating, removing, and rebuilding the search index
|
|
247
|
+
|
|
239
248
|
---
|
|
240
249
|
|
|
241
250
|
**General notes:**
|
package/lib/client/index.d.ts
CHANGED
package/lib/client.js
CHANGED
|
@@ -367,7 +367,7 @@ __export(index_exports, {
|
|
|
367
367
|
inject: () => inject
|
|
368
368
|
});
|
|
369
369
|
module.exports = __toCommonJS(index_exports);
|
|
370
|
-
var
|
|
370
|
+
var import_dsh_client_store = require("@deepseek-ai/dsh-client-store");
|
|
371
371
|
|
|
372
372
|
// node_modules/.pnpm/zod@4.4.3/node_modules/zod/v4/classic/external.js
|
|
373
373
|
var external_exports = {};
|
|
@@ -15236,7 +15236,7 @@ var REFERENCE_ANYTHING_REMOTE = {
|
|
|
15236
15236
|
descriptors: REFERENCE_ANYTHING_INVOCATIONS
|
|
15237
15237
|
};
|
|
15238
15238
|
|
|
15239
|
-
//
|
|
15239
|
+
// C:/Users/27923/AppData/Local/Temp/deepseek-harness-e31103e4de9c4ca398a9185a0bcb651d/packages/context/file-reference/lib/types/grammar.js
|
|
15240
15240
|
function formatFileMention(candidate, preserveQuote) {
|
|
15241
15241
|
const path = candidate.kind === "directory" ? `${candidate.path}/` : candidate.path;
|
|
15242
15242
|
if (/[\u0000-\u001f\u007f-\u009f"]/u.test(path))
|
|
@@ -17068,6 +17068,8 @@ var AGENT_SOURCE = "Local agent conversations";
|
|
|
17068
17068
|
var DRIVE_SOURCE = "Cloud drive files";
|
|
17069
17069
|
var COMMAND_SOURCE = "Commands";
|
|
17070
17070
|
var SKILL_SOURCE = "Skills";
|
|
17071
|
+
var driveMenuKinds = /* @__PURE__ */ new Map();
|
|
17072
|
+
var driveMenuIconKind = (description) => driveMenuKinds.get(description);
|
|
17071
17073
|
var WORKSPACE_EXTENSION_KIND = Object.freeze({
|
|
17072
17074
|
png: "image",
|
|
17073
17075
|
jpg: "image",
|
|
@@ -17567,6 +17569,7 @@ function createCloudDriveSource(search2, t = fallback, options = { ...DEFAULT_SO
|
|
|
17567
17569
|
name: DRIVE_SOURCE,
|
|
17568
17570
|
order: options.order,
|
|
17569
17571
|
async candidates(_session, { query, quoted, signal }) {
|
|
17572
|
+
driveMenuKinds.clear();
|
|
17570
17573
|
const scoped = scopedQuery(query, "drives");
|
|
17571
17574
|
if (scoped === void 0) return [];
|
|
17572
17575
|
if (quoted === true && scoped === query.trim()) return [];
|
|
@@ -17579,15 +17582,17 @@ function createCloudDriveSource(search2, t = fallback, options = { ...DEFAULT_SO
|
|
|
17579
17582
|
}];
|
|
17580
17583
|
const candidates = disambiguate(rows.map((row) => {
|
|
17581
17584
|
const name2 = row.label.trim() || "Untitled";
|
|
17585
|
+
const description = row.isDirectory === true ? row.origin ?? t("source.drives") : describeDriveRow(row, t);
|
|
17586
|
+
driveMenuKinds.set(description, workspacePathIconKind(name2, row.isDirectory === true ? "directory" : "file"));
|
|
17582
17587
|
if (row.isDirectory === true) return {
|
|
17583
17588
|
name: name2,
|
|
17584
|
-
description
|
|
17589
|
+
description,
|
|
17585
17590
|
icon: driveIcon(row),
|
|
17586
17591
|
value: encodeCandidate({ kind: "drive-folder", path: row.origin ?? "/" })
|
|
17587
17592
|
};
|
|
17588
17593
|
return {
|
|
17589
17594
|
name: name2,
|
|
17590
|
-
description
|
|
17595
|
+
description,
|
|
17591
17596
|
icon: driveIcon(row),
|
|
17592
17597
|
value: encodeCandidate({
|
|
17593
17598
|
kind: "drive",
|
|
@@ -17775,7 +17780,8 @@ function withDisplayPolicy(source, options, t, refreshPinned = (candidate) => ca
|
|
|
17775
17780
|
const cache = cacheCandidates(session, {
|
|
17776
17781
|
query: request.query,
|
|
17777
17782
|
quoted: request.quoted,
|
|
17778
|
-
position: request.position
|
|
17783
|
+
position: request.position,
|
|
17784
|
+
drilled: request.drilled
|
|
17779
17785
|
}, all2, (previous2?.revision ?? 0) + 1);
|
|
17780
17786
|
if (!request.signal.aborted) caches.set(session.sessionId, cache);
|
|
17781
17787
|
options.guardMenuActions?.(session.sessionId, source.name);
|
|
@@ -29609,8 +29615,9 @@ var css = `
|
|
|
29609
29615
|
/* Reference Anything customizes the public @ menu and only the visual glyph
|
|
29610
29616
|
inside matching Composer reference chips. Native text continues to own all
|
|
29611
29617
|
caret, selection, wrapping, and message geometry. */
|
|
29612
|
-
[data-composer-card] [role="listbox"]:has([role="presentation"][data-source]){box-sizing:border-box!important;width:100%!important;min-width:0!important;max-width:100%!important
|
|
29613
|
-
[data-
|
|
29618
|
+
[data-composer-card] [role="listbox"]:has([role="presentation"][data-source]){box-sizing:border-box!important;width:100%!important;min-width:0!important;max-width:100%!important}
|
|
29619
|
+
[data-trigger-menu]:has(> [role="listbox"] [role="presentation"][data-source]){border-radius:22px}
|
|
29620
|
+
[data-composer-card] [role="listbox"] [role="presentation"][data-source]{position:sticky;top:0;z-index:2;box-sizing:border-box;padding-top:6px!important;background:var(--dsw-specific-menu,var(--dsw-alias-background-primary,var(--dsw-alias-bg-layer-1,#fff)))}
|
|
29614
29621
|
[data-composer-card] [role="listbox"] [role="presentation"][data-source]:not(:first-child){margin-top:8px}
|
|
29615
29622
|
[data-composer-card] [role="listbox"] [role="option"]{scroll-margin-block-start:30px;scroll-margin-block-end:4px}
|
|
29616
29623
|
[data-composer-card] [role="listbox"]>[data-dsh-ref-menu-settling]{overflow-anchor:none!important}
|
|
@@ -29622,6 +29629,8 @@ var css = `
|
|
|
29622
29629
|
[data-composer-card] [role="listbox"] :is(.dsh_ref_projected_icon,.dsh_ref_picker_icon)>svg{display:block;width:16px;height:16px;overflow:visible}
|
|
29623
29630
|
[data-composer-card] [data-decoration="chip"][data-dsh-ref-chip-icon]>:first-child>svg{visibility:hidden!important}
|
|
29624
29631
|
[data-composer-card] [data-decoration="chip"][data-dsh-ref-chip-icon]>:first-child:after{content:"";position:absolute;top:50%;left:50%;display:block;width:16px;height:16px;transform:translate(-50%,-50%);background:currentColor;-webkit-mask:var(--dsh-ref-chip-icon-mask) center/contain no-repeat;mask:var(--dsh-ref-chip-icon-mask) center/contain no-repeat;pointer-events:none}
|
|
29632
|
+
[data-composer-card] [data-composer-chip][data-dsh-ref-chip-icon]>:first-child>svg{background:currentColor;-webkit-mask:var(--dsh-ref-chip-icon-mask) center/contain no-repeat;mask:var(--dsh-ref-chip-icon-mask) center/contain no-repeat}
|
|
29633
|
+
[data-composer-card] [data-composer-chip][data-dsh-ref-chip-icon]>:first-child>svg>*{display:none!important}
|
|
29625
29634
|
.dsh_ref_settings{display:flex;flex-direction:column;gap:18px;width:min(100%,1060px);padding:0 0 36px;color:var(--dsw-alias-label-primary);font-family:Geist,"Segoe UI",sans-serif}.dsh_ref_settings *{box-sizing:border-box}.dsh_ref_header{display:flex;align-items:flex-start;justify-content:space-between;gap:24px;padding:0 0 10px}.dsh_ref_header h2{margin:0 0 7px;font-size:28px;line-height:1.1;letter-spacing:-.035em}.dsh_ref_header p{margin:0;max-width:620px;color:var(--dsw-alias-label-primary);font-size:13px;line-height:1.5}.dsh_ref_settings button{min-height:34px;padding:0 13px;border:1px solid var(--dsw-alias-label-primary);border-radius:5px;background:transparent;color:var(--dsw-alias-label-primary);font:inherit;font-size:12px;font-weight:650;cursor:pointer}.dsh_ref_settings button:hover:not(:disabled){background:var(--dsw-alias-label-primary);color:var(--dsw-alias-bg-layer-1)}.dsh_ref_settings button:active:not(:disabled){transform:translateY(1px)}.dsh_ref_settings button:disabled{cursor:not-allowed;opacity:.42}
|
|
29626
29635
|
.dsh_ref_workspace{display:flex;flex-direction:column;border:1px solid var(--dsw-alias-label-primary);border-radius:0;background:transparent;overflow:hidden}.dsh_ref_workspace>.dsh_ref_panel,.dsh_ref_workspace>.dsh_ref_sources{margin:0;padding:24px;border:0;border-bottom:1px solid var(--dsw-alias-label-primary);border-radius:0;background:transparent}.dsh_ref_workspace>.dsh_ref_panel:last-child{border-bottom:0}.dsh_ref_workspace>.dsh_ref_error{margin:20px 24px 0}.dsh_ref_section_head{display:flex;align-items:flex-start;justify-content:space-between;gap:18px}.dsh_ref_section_head h3{margin:0 0 4px;font-size:17px;letter-spacing:-.02em}.dsh_ref_section_head p{margin:0;color:var(--dsw-alias-label-primary);font-size:12px;line-height:1.45}.dsh_ref_health,.dsh_ref_syncing{display:inline-flex;align-items:center;min-height:25px;padding:0 9px;border:1px solid var(--dsw-alias-label-primary);border-radius:4px;background:transparent;color:var(--dsw-alias-label-primary);font-size:10px;font-weight:700}
|
|
29627
29636
|
.dsh_ref_checklist{display:grid;gap:14px;margin-top:20px}.dsh_ref_check{display:flex;align-items:flex-start;gap:11px;min-height:40px}.dsh_ref_check>span{display:grid;place-items:center;flex:none;width:22px;height:22px;margin-top:2px;border:1px solid var(--dsw-alias-label-primary);border-radius:50%;background:transparent;color:var(--dsw-alias-label-primary);font-size:11px;font-weight:800}.dsh_ref_check div{display:grid;min-width:0;gap:2px}.dsh_ref_check strong{font-size:13px}.dsh_ref_check small{overflow-wrap:anywhere;color:var(--dsw-alias-label-primary);font-size:11px;opacity:.7}.dsh_ref_install{display:flex;align-items:center;justify-content:space-between;gap:18px;margin-top:20px;padding:14px;border:1px solid var(--dsw-alias-label-primary);background:transparent}.dsh_ref_install>div{display:grid;gap:3px}.dsh_ref_install strong{font-size:12px}.dsh_ref_install span{color:var(--dsw-alias-label-primary);font-size:11px;opacity:.7}.dsh_ref_service_actions{display:flex!important;flex:none;gap:8px}.dsh_ref_error{display:grid;gap:4px;padding:13px;border:1px solid var(--dsw-alias-label-primary);background:transparent;color:var(--dsw-alias-label-primary);font-size:11px}.dsh_ref_skeleton{display:grid;gap:12px;margin-top:20px}.dsh_ref_skeleton i{height:40px;border:1px solid var(--dsw-alias-label-primary);opacity:.25}
|
|
@@ -29644,7 +29653,7 @@ var css = `
|
|
|
29644
29653
|
whole panel upward after a saved toggle and leaves a large blank region. */
|
|
29645
29654
|
[role="dialog"]:has(.dsh_ref_settings){overflow:clip!important}
|
|
29646
29655
|
.dsh_ref_toggle{position:relative}
|
|
29647
|
-
body[data-ds-dark-theme] .dsh_ref_settings{--dsh-ref-card-surface
|
|
29656
|
+
body[data-ds-dark-theme] .dsh_ref_settings{--dsh-ref-card-surface:#2c2c30;--dsh-ref-control-surface:var(--dsw-alias-bg-layer-2,#363640)}
|
|
29648
29657
|
.dsh_ref_header{padding:2px 2px 4px}.dsh_ref_header h2{font-size:26px;font-weight:700;letter-spacing:-.025em}.dsh_ref_header p{max-width:660px;color:var(--dsw-alias-label-dimmed,var(--dsw-alias-label-primary));line-height:1.55}.dsh_ref_settings button{border-color:var(--dsh-ref-line);border-radius:9px;background:transparent;color:var(--dsw-alias-label-primary);font-weight:600;transition:background .16s ease,border-color .16s ease,color .16s ease,transform .16s ease}.dsh_ref_settings button:hover:not(:disabled){border-color:var(--dsh-ref-blue-line);background:var(--dsh-ref-blue-soft);color:var(--dsh-ref-blue)}
|
|
29649
29658
|
.dsh_ref_update_bar{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:18px;padding:13px 14px;border:1px solid var(--dsh-ref-line);border-radius:12px;background:var(--dsh-ref-surface)}.dsh_ref_update_bar.is_available{border-color:var(--dsh-ref-blue-line);background:var(--dsh-ref-blue-soft)}.dsh_ref_update_copy{display:grid;min-width:0;gap:3px}.dsh_ref_update_copy strong{font-size:12px}.dsh_ref_update_copy small{color:#64748b;font-size:10px;line-height:1.45;overflow-wrap:anywhere}.dsh_ref_update_actions{display:flex;align-items:center;flex:none;gap:8px}.dsh_ref_update_notes{display:grid;flex:0 0 100%;gap:8px;padding-top:12px;border-top:1px solid var(--dsh-ref-line);font-size:11px}.dsh_ref_update_markdown{max-height:260px;overflow:auto;overflow-wrap:anywhere;line-height:1.55}.dsh_ref_update_markdown>:first-child{margin-top:0}.dsh_ref_update_markdown>:last-child{margin-bottom:0}.dsh_ref_update_markdown :is(h1,h2,h3,h4,h5,h6){margin:14px 0 6px;font-size:12px}.dsh_ref_update_markdown :is(p,ul,ol,blockquote,pre){margin:6px 0}.dsh_ref_update_markdown :is(ul,ol){padding-left:22px}.dsh_ref_update_markdown blockquote{padding-left:10px;border-left:2px solid var(--dsh-ref-line);opacity:.78}.dsh_ref_update_markdown code{padding:1px 4px;border-radius:4px;background:var(--dsh-ref-surface);font-family:"Geist Mono",Consolas,monospace}.dsh_ref_update_markdown pre{overflow:auto;padding:9px;border:1px solid var(--dsh-ref-line);border-radius:7px;background:var(--dsh-ref-surface)}.dsh_ref_update_markdown pre code{padding:0;background:transparent}.dsh_ref_update_notes a{justify-self:start;color:var(--dsh-ref-blue);font-size:10px;font-weight:650}.dsh_ref_settings .dsh_ref_button{display:inline-flex;align-items:center;justify-content:center;min-height:34px;padding:0 13px;border:1px solid var(--dsh-ref-line);border-radius:9px;background:transparent;color:var(--dsw-alias-label-primary);font-size:12px;font-weight:600;text-decoration:none;transition:background .16s ease,border-color .16s ease,color .16s ease,transform .16s ease}.dsh_ref_settings .dsh_ref_button:hover{border-color:var(--dsh-ref-blue-line);background:var(--dsh-ref-blue-soft);color:var(--dsh-ref-blue)}.dsh_ref_settings .dsh_ref_button:active{transform:translateY(1px)}.dsh_ref_update_actions .is_primary{border-color:var(--dsh-ref-blue);background:var(--dsh-ref-blue);color:#fff}.dsh_ref_update_actions .is_primary:hover:not(:disabled){background:var(--dsh-ref-blue);color:#fff;filter:brightness(.94)}body[data-ds-dark-theme] .dsh_ref_update_copy small{color:var(--dsw-alias-label-tertiary,#94a3b8)}
|
|
29650
29659
|
.dsh_ref_recheck{border-color:var(--dsh-ref-blue-line)!important;color:var(--dsh-ref-blue)!important;background:var(--dsh-ref-blue-soft)!important}.dsh_ref_recheck:hover:not(:disabled){background:var(--dsh-ref-blue)!important;color:#fff!important}
|
|
@@ -29668,9 +29677,8 @@ body[data-ds-dark-theme] .dsh_ref_storage_header p{color:var(--dsw-alias-label-t
|
|
|
29668
29677
|
@media(max-width:720px){.dsh_ref_storage_header{grid-template-columns:1fr}.dsh_ref_storage_metric{justify-items:start;justify-self:start}.dsh_ref_provider_summary{grid-template-columns:minmax(100px,1fr) auto}.dsh_ref_provider_summary>small{grid-column:1 / -1}.dsh_ref_provider_controls{align-items:flex-start;flex-direction:column}.dsh_ref_provider_controls>.dsh_ref_provider_actions{justify-content:flex-start}}
|
|
29669
29678
|
@media(max-width:520px){.dsh_ref_provider{grid-template-columns:34px minmax(0,1fr)}.dsh_ref_provider_summary{grid-template-columns:1fr auto;gap:6px 10px}.dsh_ref_provider_controls>.dsh_ref_provider_actions{justify-content:flex-start}}
|
|
29670
29679
|
/* General is a layout group, not a card. Keep only the actual picker list framed. */
|
|
29671
|
-
.dsh_ref_workspace>.dsh_ref_panel.dsh_ref_general_settings{padding:0;border:0;border-radius:0;background:transparent}
|
|
29672
29680
|
/* The remaining sections keep their structural outline, but not a filled grey card. */
|
|
29673
|
-
.dsh_ref_workspace>.dsh_ref_panel,.dsh_ref_workspace>.dsh_ref_sources{background:transparent}.dsh_ref_check>span.is_ready{border-color:rgba(22,163,74,.35);background:rgba(22,163,74,.1);color:#16a34a}.dsh_ref_check>span.is_neutral{border-color:rgba(100,116,139,.35);background:rgba(100,116,139,.1);color:#64748b}.dsh_ref_check>span.is_error{border-color:rgba(220,38,38,.35);background:rgba(220,38,38,.08);color:#dc2626}.dsh_ref_check small.is_warning,.dsh_ref_provider>em,.dsh_ref_error{color:#dc2626}
|
|
29681
|
+
.dsh_ref_workspace>.dsh_ref_panel,.dsh_ref_workspace>.dsh_ref_sources{background:transparent}body[data-ds-dark-theme] .dsh_ref_workspace>.dsh_ref_panel,body[data-ds-dark-theme] .dsh_ref_workspace>.dsh_ref_sources{background:#242428}.dsh_ref_check>span.is_ready{border-color:rgba(22,163,74,.35);background:rgba(22,163,74,.1);color:#16a34a}.dsh_ref_check>span.is_neutral{border-color:rgba(100,116,139,.35);background:rgba(100,116,139,.1);color:#64748b}.dsh_ref_check>span.is_error{border-color:rgba(220,38,38,.35);background:rgba(220,38,38,.08);color:#dc2626}.dsh_ref_check small.is_warning,.dsh_ref_provider>em,.dsh_ref_error{color:#dc2626}
|
|
29674
29682
|
.dsh_ref_health.is_ready{border-color:rgba(22,163,74,.35);background:rgba(22,163,74,.1);color:#16a34a}.dsh_ref_check_body{flex:1}.dsh_ref_check_actions{display:flex!important;align-items:center;flex-wrap:wrap;gap:7px!important;margin-top:6px}.dsh_ref_check_actions>button{min-height:28px;padding:0 9px;border-color:var(--dsh-ref-blue-line);border-radius:7px;color:var(--dsh-ref-blue);font-size:10px}.dsh_ref_check_profile{display:flex!important;grid-template-columns:none!important;align-items:center;gap:7px!important}.dsh_ref_check_profile select{height:29px;max-width:220px;padding:0 8px;border:1px solid var(--dsh-ref-line);border-radius:7px;background:var(--dsh-ref-control-surface);color:var(--dsw-alias-label-primary);font:11px Geist,"Segoe UI",sans-serif}.dsh_ref_store_fallback{margin:14px 0 0;padding:10px 12px;border:1px solid rgba(220,38,38,.3);border-radius:9px;background:rgba(220,38,38,.06);color:#dc2626;font-size:11px}.dsh_ref_store_fallback a{color:inherit;font-weight:700}.dsh_ref_setup_step{margin:14px 0 0;padding:9px 11px;border:1px solid var(--dsh-ref-blue-line);border-radius:9px;background:var(--dsh-ref-blue-soft);color:var(--dsh-ref-blue);font-size:11px;font-weight:650}
|
|
29675
29683
|
.dsh_ref_chat{gap:0}.dsh_ref_chat_divider{height:0;margin:20px 0;border-top:1px solid var(--dsh-ref-line)}
|
|
29676
29684
|
.dsh_ref_cloud{display:grid;gap:14px}.dsh_ref_cloud_actions,.dsh_ref_cloud_cards article>div{display:flex;gap:8px;flex-wrap:wrap}.dsh_ref_cloud_connect,.dsh_ref_cloud_mount_form{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;padding-top:14px;border-top:1px solid var(--dsh-ref-line)}.dsh_ref_cloud label{display:grid;gap:5px;font-size:11px;font-weight:650}.dsh_ref_cloud input,.dsh_ref_cloud select,.dsh_ref_cloud textarea{min-width:0;padding:0 9px;border:1px solid var(--dsh-ref-line);border-radius:7px;background:var(--dsh-ref-control-surface);color:var(--dsw-alias-label-primary);font:12px Geist,"Segoe UI",sans-serif}.dsh_ref_cloud input,.dsh_ref_cloud select{height:34px}.dsh_ref_cloud textarea{padding-block:8px;resize:vertical}.dsh_ref_cloud .dsh_ref_masked_secret{-webkit-text-security:disc}.dsh_ref_cloud input[type=checkbox]{width:16px;height:16px;padding:0}.dsh_ref_cloud_mount_form h4{grid-column:1 / -1;margin:0;font-size:13px}.dsh_ref_cloud_cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(210px,1fr));gap:10px}.dsh_ref_cloud_cards article{display:grid;gap:7px;padding:12px;border:1px solid var(--dsh-ref-line);border-radius:10px;background:var(--dsh-ref-card-surface)}.dsh_ref_cloud_cards strong{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:13px}.dsh_ref_cloud_cards span,.dsh_ref_cloud_cards small{font-size:10px;opacity:.76}.dsh_ref_cloud_cards button{min-height:28px;padding:0 9px;font-size:10px}@media(max-width:640px){.dsh_ref_cloud_connect,.dsh_ref_cloud_mount_form{grid-template-columns:1fr}}
|
|
@@ -29959,6 +29967,49 @@ function adoptReferenceIconProjection() {
|
|
|
29959
29967
|
const providerMasks = Object.fromEntries(providers.map((provider) => [provider, providerIconMask(PROVIDER_ICON_PATH[provider])]));
|
|
29960
29968
|
const pickerMasks = Object.fromEntries(pickerKinds.map((kind) => [kind, pickerIconMask(kind)]));
|
|
29961
29969
|
const agentMasks = Object.fromEntries(agentKinds.map((agent) => [agent, reactIconMask(agentLogoElement(agent))]));
|
|
29970
|
+
const paintPicker = (node2, kind, secondary) => {
|
|
29971
|
+
node2.replaceChildren(createPickerIcon(kind), ...secondary === void 0 ? [] : [createPickerIcon(secondary)]);
|
|
29972
|
+
node2.classList.remove("dsh_ref_projected_icon");
|
|
29973
|
+
node2.classList.add("dsh_ref_picker_icon");
|
|
29974
|
+
node2.classList.toggle("dsh_ref_dual_icon", secondary !== void 0);
|
|
29975
|
+
node2.dataset.dshRefMenuIcon = kind;
|
|
29976
|
+
};
|
|
29977
|
+
const paintProvider = (node2, provider) => {
|
|
29978
|
+
node2.replaceChildren(createProviderIcon(PROVIDER_ICON_PATH[provider]));
|
|
29979
|
+
node2.classList.remove("dsh_ref_picker_icon", "dsh_ref_dual_icon");
|
|
29980
|
+
node2.classList.add("dsh_ref_projected_icon");
|
|
29981
|
+
node2.dataset.dshRefMenuIcon = provider;
|
|
29982
|
+
};
|
|
29983
|
+
const paintAgent = (node2, agent) => {
|
|
29984
|
+
const logo = agentLogoElement(agent);
|
|
29985
|
+
if (logo === void 0) return paintPicker(node2, "agent");
|
|
29986
|
+
node2.replaceChildren(createReactIcon(logo));
|
|
29987
|
+
node2.classList.remove("dsh_ref_picker_icon", "dsh_ref_dual_icon");
|
|
29988
|
+
node2.classList.add("dsh_ref_projected_icon");
|
|
29989
|
+
node2.dataset.dshRefMenuIcon = agent;
|
|
29990
|
+
};
|
|
29991
|
+
const projectAlphaOption = (option) => {
|
|
29992
|
+
const icon = option.firstElementChild;
|
|
29993
|
+
if (!(icon instanceof HTMLElement) || icon.childElementCount > 0 || (icon.textContent ?? "") !== "") return;
|
|
29994
|
+
let heading2 = option.previousElementSibling;
|
|
29995
|
+
while (heading2 !== null && !(heading2.getAttribute("role") === "presentation" && heading2.hasAttribute("data-source"))) heading2 = heading2.previousElementSibling;
|
|
29996
|
+
const source = heading2?.getAttribute("data-source");
|
|
29997
|
+
const name2 = option.children.item(1)?.textContent?.trim() ?? "";
|
|
29998
|
+
const description = option.children.item(2)?.textContent?.trim() ?? "";
|
|
29999
|
+
if (source === "Commands") return paintPicker(icon, "command");
|
|
30000
|
+
if (source === "Skills") return paintPicker(icon, "skill");
|
|
30001
|
+
if (source === "Files and folders") return paintPicker(icon, workspacePathIconKind(name2, name2.endsWith("/") ? "directory" : "file"));
|
|
30002
|
+
if (source === "DSH sessions") return paintPicker(icon, "session");
|
|
30003
|
+
if (source === "Local agent conversations") {
|
|
30004
|
+
const agent = Object.keys(LOCAL_AGENT_CHIP_LABEL).find((item) => description.startsWith(`${LOCAL_AGENT_CHIP_LABEL[item]} \xB7`));
|
|
30005
|
+
return agent === void 0 ? paintPicker(icon, "agent") : paintAgent(icon, agent);
|
|
30006
|
+
}
|
|
30007
|
+
if (source === "External conversations") {
|
|
30008
|
+
const provider = providers.find((item) => description.startsWith(`${CHIP_PROVIDER_LABEL[item]} \xB7`));
|
|
30009
|
+
return provider === void 0 ? paintPicker(icon, "refresh") : paintProvider(icon, provider);
|
|
30010
|
+
}
|
|
30011
|
+
if (source === "Cloud drive files") paintPicker(icon, "drive", driveMenuIconKind(description) ?? workspacePathIconKind(name2, name2.endsWith("/") ? "directory" : "file"));
|
|
30012
|
+
};
|
|
29962
30013
|
const project = (root3) => {
|
|
29963
30014
|
const selector = '[data-composer-card] [role="listbox"]';
|
|
29964
30015
|
const menus = /* @__PURE__ */ new Set();
|
|
@@ -29969,6 +30020,7 @@ function adoptReferenceIconProjection() {
|
|
|
29969
30020
|
}
|
|
29970
30021
|
for (const menu of Array.from(root3.querySelectorAll(selector))) menus.add(menu);
|
|
29971
30022
|
for (const menu of menus) {
|
|
30023
|
+
for (const option of Array.from(menu.querySelectorAll('[role="option"]'))) projectAlphaOption(option);
|
|
29972
30024
|
const walker = document.createTreeWalker(menu, NodeFilter.SHOW_ELEMENT);
|
|
29973
30025
|
let node2 = walker.nextNode();
|
|
29974
30026
|
while (node2 !== null) {
|
|
@@ -30058,7 +30110,7 @@ var LOCAL_AGENT_CHIP_LABEL = {
|
|
|
30058
30110
|
zcode: "zcode"
|
|
30059
30111
|
};
|
|
30060
30112
|
function projectComposerChips(root3, providerMasks, pickerMasks, agentMasks) {
|
|
30061
|
-
const selector = '[data-composer-card] [data-decoration="chip"][data-reference-appearance]';
|
|
30113
|
+
const selector = '[data-composer-card] :is([data-decoration="chip"][data-reference-appearance],[data-composer-chip])';
|
|
30062
30114
|
const chips = /* @__PURE__ */ new Set();
|
|
30063
30115
|
if (root3 instanceof Element) {
|
|
30064
30116
|
const chip = root3.matches(selector) ? root3 : root3.closest(selector);
|
|
@@ -30067,9 +30119,9 @@ function projectComposerChips(root3, providerMasks, pickerMasks, agentMasks) {
|
|
|
30067
30119
|
for (const chip of Array.from(root3.querySelectorAll(selector))) if (chip instanceof HTMLElement) chips.add(chip);
|
|
30068
30120
|
for (const chip of chips) {
|
|
30069
30121
|
const label = (chip.textContent ?? "").trim().replace(/^@/u, "");
|
|
30070
|
-
const
|
|
30122
|
+
const referenceSource = chip.dataset.referenceSource ?? chip.dataset.composerChip;
|
|
30123
|
+
const appearance = chip.dataset.referenceAppearance ?? (referenceSource === "Cloud drive files" || referenceSource === "Files and folders" ? "file" : "session");
|
|
30071
30124
|
if (appearance === "session") {
|
|
30072
|
-
const referenceSource = chip.dataset.referenceSource;
|
|
30073
30125
|
const agent = Object.keys(LOCAL_AGENT_CHIP_LABEL).find((item) => label.startsWith(`${LOCAL_AGENT_CHIP_LABEL[item]}\xB7`));
|
|
30074
30126
|
if (agent !== void 0) {
|
|
30075
30127
|
applyChipIcon(chip, agent, agentMasks[agent] ?? pickerMasks.agent);
|
|
@@ -30178,12 +30230,17 @@ function createPickerMenuUpdater(inputTriggers, sessions, schedule = mutateActiv
|
|
|
30178
30230
|
const base = matches(current, update) ? current : update.reopen && !current.open && current.generation === before.generation ? before : void 0;
|
|
30179
30231
|
if (base === void 0) return;
|
|
30180
30232
|
const groups = base.groups.map((group) => group.source === update.source ? { ...group, status: "ready", items: update.candidates } : group);
|
|
30181
|
-
const highlight = update.reopen
|
|
30233
|
+
const highlight = update.reopen ? retainedHighlight(before, update.candidates, update.source) : validHighlight(base, update.candidates, update.source) ? base.highlight : null;
|
|
30182
30234
|
controller.menu.set({ ...base, open: true, groups, highlight });
|
|
30183
30235
|
});
|
|
30184
30236
|
return true;
|
|
30185
30237
|
};
|
|
30186
30238
|
}
|
|
30239
|
+
function retainedHighlight(state, candidates, source) {
|
|
30240
|
+
if (state.highlight?.source !== source) return state.highlight;
|
|
30241
|
+
if (candidates.length === 0) return null;
|
|
30242
|
+
return { source, index: Math.min(state.highlight.index, candidates.length - 1) };
|
|
30243
|
+
}
|
|
30187
30244
|
function createPickerMenuActionGuard(inputTriggers, sessions) {
|
|
30188
30245
|
const patched = /* @__PURE__ */ new WeakMap();
|
|
30189
30246
|
return (sessionId, source) => {
|
|
@@ -30292,14 +30349,14 @@ var inject = [
|
|
|
30292
30349
|
"connection",
|
|
30293
30350
|
"locale",
|
|
30294
30351
|
"sessions",
|
|
30295
|
-
"
|
|
30352
|
+
"uiWorkspace"
|
|
30296
30353
|
];
|
|
30297
30354
|
function apply(ctx) {
|
|
30298
30355
|
adoptStyles();
|
|
30299
30356
|
ctx.effect(() => adoptMenuViewportTracking(), "reference-anything.client.menu-viewport-tracking");
|
|
30300
30357
|
ctx.effect(() => adoptReferenceIconProjection(), "reference-anything.client.icon-projection");
|
|
30301
30358
|
let remote;
|
|
30302
|
-
const scope = (0,
|
|
30359
|
+
const scope = (0, import_dsh_client_store.createSnapshotStore)({
|
|
30303
30360
|
settings: { opencliPath: "opencli", profile: "", detailConcurrency: 8, autoSync: false, syncOnStartup: false, autoSyncMinutes: 60, historyMode: "metadata-only", syncHistoryDays: null, enabledProviders: [...ALL_PROVIDERS], enabledAgents: [...ALL_LOCAL_AGENTS], maxReadTurns: 10, inputRenderMode: "pill", cloudDriveDownloadDirectory: "" },
|
|
30304
30361
|
loading: true
|
|
30305
30362
|
});
|
|
@@ -30716,14 +30773,14 @@ function apply(ctx) {
|
|
|
30716
30773
|
refreshStats,
|
|
30717
30774
|
refreshOpenList,
|
|
30718
30775
|
pickAgentDirectory: async (agent) => {
|
|
30719
|
-
const path = await pickDirectoryWithError(ctx.
|
|
30776
|
+
const path = await pickDirectoryWithError(ctx.uiWorkspace, (error51) => {
|
|
30720
30777
|
scope.set({ ...scope.getSnapshot(), error: message(error51), notice: void 0 });
|
|
30721
30778
|
});
|
|
30722
30779
|
if (!path) return;
|
|
30723
30780
|
const settings = scope.getSnapshot().settings;
|
|
30724
30781
|
if (await save({ ...settings, agentDirectories: { ...settings.agentDirectories ?? {}, [agent]: path } })) await refreshAgentStats();
|
|
30725
30782
|
},
|
|
30726
|
-
pickCloudDriveDownloadDirectory: () => pickDirectoryWithError(ctx.
|
|
30783
|
+
pickCloudDriveDownloadDirectory: () => pickDirectoryWithError(ctx.uiWorkspace, (error51) => {
|
|
30727
30784
|
scope.set({ ...scope.getSnapshot(), error: message(error51), notice: void 0 });
|
|
30728
30785
|
}),
|
|
30729
30786
|
openCloudDriveDownloadDirectory: async () => {
|
package/package.json
CHANGED
|
@@ -1,200 +1,218 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "dsh-reference-anything",
|
|
3
|
-
"version": "0.
|
|
4
|
-
"description": "Reference commands, skills, workspace files, DSH sessions, local agent transcripts, cloud-drive files, and mirrored web-chat conversations from one DeepSeek Harness @ menu",
|
|
5
|
-
"license": "MIT",
|
|
6
|
-
"publishConfig": {
|
|
7
|
-
"access": "public"
|
|
8
|
-
},
|
|
9
|
-
"type": "module",
|
|
10
|
-
"repository": {
|
|
11
|
-
"type": "git",
|
|
12
|
-
"url": "git+https://github.com/Chael-Chael/dsh-reference-anything.git"
|
|
13
|
-
},
|
|
14
|
-
"main": "lib/index.js",
|
|
15
|
-
"types": "lib/index.d.ts",
|
|
16
|
-
"exports": {
|
|
17
|
-
".": {
|
|
18
|
-
"types": "./lib/index.d.ts",
|
|
19
|
-
"default": "./lib/index.js"
|
|
20
|
-
},
|
|
21
|
-
"./reference": {
|
|
22
|
-
"types": "./lib/reference.d.ts",
|
|
23
|
-
"default": "./lib/reference.js"
|
|
24
|
-
},
|
|
25
|
-
"./tool": {
|
|
26
|
-
"types": "./lib/tool.d.ts",
|
|
27
|
-
"default": "./lib/tool.js"
|
|
28
|
-
},
|
|
29
|
-
"./file": {
|
|
30
|
-
"types": "./lib/sources/file.d.ts",
|
|
31
|
-
"default": "./lib/sources/file.js"
|
|
32
|
-
},
|
|
33
|
-
"./local-agent": {
|
|
34
|
-
"types": "./lib/sources/local-agent/index.d.ts",
|
|
35
|
-
"default": "./lib/sources/local-agent/index.js"
|
|
36
|
-
},
|
|
37
|
-
"./cloud-drive": {
|
|
38
|
-
"types": "./lib/sources/cloud-drive/index.d.ts",
|
|
39
|
-
"default": "./lib/sources/cloud-drive/index.js"
|
|
40
|
-
},
|
|
41
|
-
"./openlist": {
|
|
42
|
-
"types": "./lib/openlist/index.d.ts",
|
|
43
|
-
"default": "./lib/openlist/index.js"
|
|
44
|
-
},
|
|
45
|
-
"./web-chat": {
|
|
46
|
-
"types": "./lib/sources/web-chat/index.d.ts",
|
|
47
|
-
"default": "./lib/sources/web-chat/index.js"
|
|
48
|
-
},
|
|
49
|
-
"./web": {
|
|
50
|
-
"types": "./lib/web.d.ts",
|
|
51
|
-
"default": "./lib/web.js"
|
|
52
|
-
},
|
|
53
|
-
"./sync": {
|
|
54
|
-
"types": "./lib/sync/index.d.ts",
|
|
55
|
-
"default": "./lib/sync/index.js"
|
|
56
|
-
},
|
|
57
|
-
"./client": {
|
|
58
|
-
"types": "./lib/client/index.d.ts",
|
|
59
|
-
"default": "./lib/client.js"
|
|
60
|
-
},
|
|
61
|
-
"./package.json": "./package.json"
|
|
62
|
-
},
|
|
63
|
-
"files": [
|
|
64
|
-
"lib",
|
|
65
|
-
"opencli-plugin/*.js",
|
|
66
|
-
"opencli-plugin/opencli-plugin.json",
|
|
67
|
-
"opencli-plugin/package.json",
|
|
68
|
-
"cordis.patch.yml",
|
|
69
|
-
"images/logo.png",
|
|
70
|
-
"NOTICE.md",
|
|
71
|
-
"README.md"
|
|
72
|
-
],
|
|
73
|
-
"dsh": {
|
|
74
|
-
"bundle": {
|
|
75
|
-
"patch": "./cordis.patch.yml"
|
|
76
|
-
},
|
|
77
|
-
"client": {
|
|
78
|
-
"platform": "web",
|
|
79
|
-
"inject": [
|
|
80
|
-
"@deepseek-ai/dsh-
|
|
81
|
-
"@deepseek-ai/dsh-
|
|
82
|
-
"@deepseek-ai/dsh-
|
|
83
|
-
"@deepseek-ai/dsh-client-ui-
|
|
84
|
-
"@deepseek-ai/dsh-client-ui-
|
|
85
|
-
"@deepseek-ai/dsh-client-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
"
|
|
94
|
-
"
|
|
95
|
-
"
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
"
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
"@deepseek-ai/
|
|
102
|
-
"@deepseek-ai/dsh-
|
|
103
|
-
"@deepseek-ai/dsh-
|
|
104
|
-
"@deepseek-ai/dsh-
|
|
105
|
-
"@deepseek-ai/dsh-client-
|
|
106
|
-
"@deepseek-ai/dsh-client-
|
|
107
|
-
"@deepseek-ai/dsh-
|
|
108
|
-
"@deepseek-ai/dsh-client-
|
|
109
|
-
"@deepseek-ai/dsh-
|
|
110
|
-
"@deepseek-ai/dsh-
|
|
111
|
-
"@deepseek-ai/dsh-
|
|
112
|
-
"@deepseek-ai/dsh-
|
|
113
|
-
"@deepseek-ai/dsh-
|
|
114
|
-
"@deepseek-ai/dsh-
|
|
115
|
-
"@deepseek-ai/dsh-
|
|
116
|
-
"@deepseek-ai/dsh-
|
|
117
|
-
"@deepseek-ai/dsh-
|
|
118
|
-
"@deepseek-ai/dsh-
|
|
119
|
-
"
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
"@deepseek-ai/dsh-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
"
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
"@deepseek-ai/dsh-
|
|
129
|
-
"optional": true
|
|
130
|
-
},
|
|
131
|
-
"@deepseek-ai/dsh-
|
|
132
|
-
"optional": true
|
|
133
|
-
},
|
|
134
|
-
"@deepseek-ai/dsh-
|
|
135
|
-
"optional": true
|
|
136
|
-
},
|
|
137
|
-
"@deepseek-ai/dsh-client-
|
|
138
|
-
"optional": true
|
|
139
|
-
},
|
|
140
|
-
"@deepseek-ai/dsh-
|
|
141
|
-
"optional": true
|
|
142
|
-
},
|
|
143
|
-
"@deepseek-ai/dsh-client-
|
|
144
|
-
"optional": true
|
|
145
|
-
},
|
|
146
|
-
"@deepseek-ai/dsh-client-
|
|
147
|
-
"optional": true
|
|
148
|
-
},
|
|
149
|
-
"@deepseek-ai/dsh-client-ui-
|
|
150
|
-
"optional": true
|
|
151
|
-
},
|
|
152
|
-
"@deepseek-ai/dsh-
|
|
153
|
-
"optional": true
|
|
154
|
-
},
|
|
155
|
-
"
|
|
156
|
-
"optional": true
|
|
157
|
-
}
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
"@
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
"@deepseek-ai/dsh-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
"
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
"@deepseek-ai/
|
|
176
|
-
"@
|
|
177
|
-
"
|
|
178
|
-
"
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
"@deepseek-ai/
|
|
182
|
-
"@deepseek-ai/dsh-
|
|
183
|
-
"@deepseek-ai/dsh-
|
|
184
|
-
"@deepseek-ai/dsh-
|
|
185
|
-
"@deepseek-ai/dsh-
|
|
186
|
-
"@deepseek-ai/dsh-
|
|
187
|
-
"@deepseek-ai/dsh-
|
|
188
|
-
"@deepseek-ai/dsh-
|
|
189
|
-
"@
|
|
190
|
-
"@
|
|
191
|
-
"@
|
|
192
|
-
"@
|
|
193
|
-
"
|
|
194
|
-
"
|
|
195
|
-
"
|
|
196
|
-
"
|
|
197
|
-
"
|
|
198
|
-
"
|
|
199
|
-
|
|
200
|
-
|
|
1
|
+
{
|
|
2
|
+
"name": "dsh-reference-anything",
|
|
3
|
+
"version": "0.4.0-alpha.1",
|
|
4
|
+
"description": "Reference commands, skills, workspace files, DSH sessions, local agent transcripts, cloud-drive files, and mirrored web-chat conversations from one DeepSeek Harness @ menu",
|
|
5
|
+
"license": "MIT",
|
|
6
|
+
"publishConfig": {
|
|
7
|
+
"access": "public"
|
|
8
|
+
},
|
|
9
|
+
"type": "module",
|
|
10
|
+
"repository": {
|
|
11
|
+
"type": "git",
|
|
12
|
+
"url": "git+https://github.com/Chael-Chael/dsh-reference-anything.git"
|
|
13
|
+
},
|
|
14
|
+
"main": "lib/index.js",
|
|
15
|
+
"types": "lib/index.d.ts",
|
|
16
|
+
"exports": {
|
|
17
|
+
".": {
|
|
18
|
+
"types": "./lib/index.d.ts",
|
|
19
|
+
"default": "./lib/index.js"
|
|
20
|
+
},
|
|
21
|
+
"./reference": {
|
|
22
|
+
"types": "./lib/reference.d.ts",
|
|
23
|
+
"default": "./lib/reference.js"
|
|
24
|
+
},
|
|
25
|
+
"./tool": {
|
|
26
|
+
"types": "./lib/tool.d.ts",
|
|
27
|
+
"default": "./lib/tool.js"
|
|
28
|
+
},
|
|
29
|
+
"./file": {
|
|
30
|
+
"types": "./lib/sources/file.d.ts",
|
|
31
|
+
"default": "./lib/sources/file.js"
|
|
32
|
+
},
|
|
33
|
+
"./local-agent": {
|
|
34
|
+
"types": "./lib/sources/local-agent/index.d.ts",
|
|
35
|
+
"default": "./lib/sources/local-agent/index.js"
|
|
36
|
+
},
|
|
37
|
+
"./cloud-drive": {
|
|
38
|
+
"types": "./lib/sources/cloud-drive/index.d.ts",
|
|
39
|
+
"default": "./lib/sources/cloud-drive/index.js"
|
|
40
|
+
},
|
|
41
|
+
"./openlist": {
|
|
42
|
+
"types": "./lib/openlist/index.d.ts",
|
|
43
|
+
"default": "./lib/openlist/index.js"
|
|
44
|
+
},
|
|
45
|
+
"./web-chat": {
|
|
46
|
+
"types": "./lib/sources/web-chat/index.d.ts",
|
|
47
|
+
"default": "./lib/sources/web-chat/index.js"
|
|
48
|
+
},
|
|
49
|
+
"./web": {
|
|
50
|
+
"types": "./lib/web.d.ts",
|
|
51
|
+
"default": "./lib/web.js"
|
|
52
|
+
},
|
|
53
|
+
"./sync": {
|
|
54
|
+
"types": "./lib/sync/index.d.ts",
|
|
55
|
+
"default": "./lib/sync/index.js"
|
|
56
|
+
},
|
|
57
|
+
"./client": {
|
|
58
|
+
"types": "./lib/client/index.d.ts",
|
|
59
|
+
"default": "./lib/client.js"
|
|
60
|
+
},
|
|
61
|
+
"./package.json": "./package.json"
|
|
62
|
+
},
|
|
63
|
+
"files": [
|
|
64
|
+
"lib",
|
|
65
|
+
"opencli-plugin/*.js",
|
|
66
|
+
"opencli-plugin/opencli-plugin.json",
|
|
67
|
+
"opencli-plugin/package.json",
|
|
68
|
+
"cordis.patch.yml",
|
|
69
|
+
"images/logo.png",
|
|
70
|
+
"NOTICE.md",
|
|
71
|
+
"README.md"
|
|
72
|
+
],
|
|
73
|
+
"dsh": {
|
|
74
|
+
"bundle": {
|
|
75
|
+
"patch": "./cordis.patch.yml"
|
|
76
|
+
},
|
|
77
|
+
"client": {
|
|
78
|
+
"platform": "web",
|
|
79
|
+
"inject": [
|
|
80
|
+
"@deepseek-ai/dsh-api-session-controller",
|
|
81
|
+
"@deepseek-ai/dsh-client-store",
|
|
82
|
+
"@deepseek-ai/dsh-api-remotes",
|
|
83
|
+
"@deepseek-ai/dsh-client-ui-input-trigger",
|
|
84
|
+
"@deepseek-ai/dsh-client-ui-conversation",
|
|
85
|
+
"@deepseek-ai/dsh-client-ui-renderer",
|
|
86
|
+
"@deepseek-ai/dsh-client-ui-settings",
|
|
87
|
+
"@deepseek-ai/dsh-client-ui-workspace",
|
|
88
|
+
"@deepseek-ai/dsh-client-locale"
|
|
89
|
+
]
|
|
90
|
+
}
|
|
91
|
+
},
|
|
92
|
+
"scripts": {
|
|
93
|
+
"build": "node build.mjs",
|
|
94
|
+
"typecheck": "tsc -p tsconfig.json --noEmit",
|
|
95
|
+
"test": "vitest run",
|
|
96
|
+
"check": "npm run typecheck && npm run test && npm run build",
|
|
97
|
+
"prepublishOnly": "npm run check",
|
|
98
|
+
"prepare": "node build.mjs"
|
|
99
|
+
},
|
|
100
|
+
"peerDependencies": {
|
|
101
|
+
"@deepseek-ai/cordis": ">=4.0.1",
|
|
102
|
+
"@deepseek-ai/dsh-agent": ">=0.1.2-alpha.1",
|
|
103
|
+
"@deepseek-ai/dsh-api-remotes": ">=0.1.2-alpha.1",
|
|
104
|
+
"@deepseek-ai/dsh-attachment": ">=0.1.2-alpha.1",
|
|
105
|
+
"@deepseek-ai/dsh-client-connection": ">=0.1.2-alpha.1",
|
|
106
|
+
"@deepseek-ai/dsh-client-locale": ">=0.1.2-alpha.1",
|
|
107
|
+
"@deepseek-ai/dsh-api-session-controller": ">=0.1.2-alpha.1",
|
|
108
|
+
"@deepseek-ai/dsh-client-store": ">=0.1.2-alpha.1",
|
|
109
|
+
"@deepseek-ai/dsh-client-ui-conversation": ">=0.1.2-alpha.1",
|
|
110
|
+
"@deepseek-ai/dsh-client-ui-input-trigger": ">=0.1.2-alpha.1",
|
|
111
|
+
"@deepseek-ai/dsh-client-ui-renderer": ">=0.1.2-alpha.1",
|
|
112
|
+
"@deepseek-ai/dsh-client-ui-settings": ">=0.1.2-alpha.1",
|
|
113
|
+
"@deepseek-ai/dsh-client-ui-slots": ">=0.1.2-alpha.1",
|
|
114
|
+
"@deepseek-ai/dsh-client-ui-workspace": ">=0.1.2-alpha.1",
|
|
115
|
+
"@deepseek-ai/dsh-file-reference": ">=0.1.2-alpha.1",
|
|
116
|
+
"@deepseek-ai/dsh-llm": ">=0.1.2-alpha.1",
|
|
117
|
+
"@deepseek-ai/dsh-output-retention": ">=0.1.2-alpha.1",
|
|
118
|
+
"@deepseek-ai/dsh-session": ">=0.1.2-alpha.1",
|
|
119
|
+
"@deepseek-ai/dsh-session-reference": ">=0.1.2-alpha.1",
|
|
120
|
+
"@deepseek-ai/dsh-settings": ">=0.1.2-alpha.1",
|
|
121
|
+
"@deepseek-ai/dsh-storage-domain": ">=0.1.2-alpha.1",
|
|
122
|
+
"@deepseek-ai/dsh-tools": ">=0.1.2-alpha.1",
|
|
123
|
+
"@deepseek-ai/dsh-typert-protocol": ">=0.1.2-alpha.1",
|
|
124
|
+
"@deepseek-ai/dsh-typert-registry": ">=0.1.2-alpha.1",
|
|
125
|
+
"react": "^18.2.0"
|
|
126
|
+
},
|
|
127
|
+
"peerDependenciesMeta": {
|
|
128
|
+
"@deepseek-ai/dsh-session-reference": {
|
|
129
|
+
"optional": true
|
|
130
|
+
},
|
|
131
|
+
"@deepseek-ai/dsh-file-reference": {
|
|
132
|
+
"optional": true
|
|
133
|
+
},
|
|
134
|
+
"@deepseek-ai/dsh-api-session-controller": {
|
|
135
|
+
"optional": true
|
|
136
|
+
},
|
|
137
|
+
"@deepseek-ai/dsh-client-store": {
|
|
138
|
+
"optional": true
|
|
139
|
+
},
|
|
140
|
+
"@deepseek-ai/dsh-api-remotes": {
|
|
141
|
+
"optional": true
|
|
142
|
+
},
|
|
143
|
+
"@deepseek-ai/dsh-client-ui-input-trigger": {
|
|
144
|
+
"optional": true
|
|
145
|
+
},
|
|
146
|
+
"@deepseek-ai/dsh-client-ui-slots": {
|
|
147
|
+
"optional": true
|
|
148
|
+
},
|
|
149
|
+
"@deepseek-ai/dsh-client-ui-renderer": {
|
|
150
|
+
"optional": true
|
|
151
|
+
},
|
|
152
|
+
"@deepseek-ai/dsh-client-ui-workspace": {
|
|
153
|
+
"optional": true
|
|
154
|
+
},
|
|
155
|
+
"@deepseek-ai/dsh-client-ui-conversation": {
|
|
156
|
+
"optional": true
|
|
157
|
+
},
|
|
158
|
+
"@deepseek-ai/dsh-client-locale": {
|
|
159
|
+
"optional": true
|
|
160
|
+
},
|
|
161
|
+
"@deepseek-ai/dsh-client-connection": {
|
|
162
|
+
"optional": true
|
|
163
|
+
},
|
|
164
|
+
"@deepseek-ai/dsh-client-ui-settings": {
|
|
165
|
+
"optional": true
|
|
166
|
+
},
|
|
167
|
+
"@deepseek-ai/dsh-settings": {
|
|
168
|
+
"optional": true
|
|
169
|
+
},
|
|
170
|
+
"react": {
|
|
171
|
+
"optional": true
|
|
172
|
+
}
|
|
173
|
+
},
|
|
174
|
+
"dependencies": {
|
|
175
|
+
"@deepseek-ai/schemastery": "^3.18.1",
|
|
176
|
+
"@lobehub/icons": "^5.16.0",
|
|
177
|
+
"react-markdown": "^10.1.0",
|
|
178
|
+
"zod": "^4.4.3"
|
|
179
|
+
},
|
|
180
|
+
"devDependencies": {
|
|
181
|
+
"@deepseek-ai/cordis": "^4.0.1",
|
|
182
|
+
"@deepseek-ai/dsh-agent": "^0.1.2-alpha.1",
|
|
183
|
+
"@deepseek-ai/dsh-api-remotes": "^0.1.2-alpha.1",
|
|
184
|
+
"@deepseek-ai/dsh-attachment": "^0.1.2-alpha.1",
|
|
185
|
+
"@deepseek-ai/dsh-client-connection": "^0.1.2-alpha.1",
|
|
186
|
+
"@deepseek-ai/dsh-client-locale": "^0.1.2-alpha.1",
|
|
187
|
+
"@deepseek-ai/dsh-api-session-controller": "^0.1.2-alpha.1",
|
|
188
|
+
"@deepseek-ai/dsh-client-store": "^0.1.2-alpha.1",
|
|
189
|
+
"@deepseek-ai/dsh-client-ui-conversation": "^0.1.2-alpha.1",
|
|
190
|
+
"@deepseek-ai/dsh-client-ui-input-trigger": "^0.1.2-alpha.1",
|
|
191
|
+
"@deepseek-ai/dsh-client-ui-renderer": "^0.1.2-alpha.1",
|
|
192
|
+
"@deepseek-ai/dsh-client-ui-settings": "^0.1.2-alpha.1",
|
|
193
|
+
"@deepseek-ai/dsh-client-ui-slots": "^0.1.2-alpha.1",
|
|
194
|
+
"@deepseek-ai/dsh-client-ui-workspace": "^0.1.2-alpha.1",
|
|
195
|
+
"@deepseek-ai/dsh-file-reference": "^0.1.2-alpha.1",
|
|
196
|
+
"@deepseek-ai/dsh-llm": "^0.1.2-alpha.1",
|
|
197
|
+
"@deepseek-ai/dsh-output-retention": "^0.1.2-alpha.1",
|
|
198
|
+
"@deepseek-ai/dsh-session": "^0.1.2-alpha.1",
|
|
199
|
+
"@deepseek-ai/dsh-session-reference": "^0.1.2-alpha.1",
|
|
200
|
+
"@deepseek-ai/dsh-settings": "^0.1.2-alpha.1",
|
|
201
|
+
"@deepseek-ai/dsh-storage": "^0.1.2-alpha.1",
|
|
202
|
+
"@deepseek-ai/dsh-storage-domain": "^0.1.2-alpha.1",
|
|
203
|
+
"@deepseek-ai/dsh-system-prompt": "^0.1.2-alpha.1",
|
|
204
|
+
"@deepseek-ai/dsh-tools": "^0.1.2-alpha.1",
|
|
205
|
+
"@deepseek-ai/dsh-typert-protocol": "^0.1.2-alpha.1",
|
|
206
|
+
"@deepseek-ai/dsh-typert-registry": "^0.1.2-alpha.1",
|
|
207
|
+
"@jackwener/opencli": "1.8.6",
|
|
208
|
+
"@types/node": "^22.20.1",
|
|
209
|
+
"@types/react": "^18.2.0",
|
|
210
|
+
"@types/react-dom": "^18.3.7",
|
|
211
|
+
"esbuild": "^0.25.0",
|
|
212
|
+
"jsdom": "^26.1.0",
|
|
213
|
+
"react": "^18.2.0",
|
|
214
|
+
"react-dom": "^18.2.0",
|
|
215
|
+
"typescript": "^5.7.0",
|
|
216
|
+
"vitest": "^3.0.0"
|
|
217
|
+
}
|
|
218
|
+
}
|