dsh-reference-anything 0.4.0-alpha.1 → 0.4.0

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
@@ -14,7 +14,8 @@ One `@` for them all.
14
14
 
15
15
  <!-- SHIELD GROUP -->
16
16
 
17
- [![][github-version-shield]][github-version-link]
17
+ [![][stable-version-shield]][stable-version-link]
18
+ [![][alpha-version-shield]][alpha-version-link]
18
19
  [![][typescript-shield]][typescript-link]
19
20
  [![][dsh-plugin-shield]][repository-link]
20
21
  <br/>
@@ -70,15 +71,17 @@ Type `@`, search across enabled sources, and insert the selected reference into
70
71
  **The External conversations group** — and only that group — uses OpenCLI to reach AI chat sessions you are already logged into. By default it stores conversation titles locally and the agent fetches remote content on demand; an optional offline-mirror mode stores the latest complete bodies locally instead. **Local agent conversations need none of that**: those transcripts are already files on your own disk, so that group reads them directly, with no browser, no OpenCLI, and nothing mirrored.
71
72
 
72
73
  > [!IMPORTANT]
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
+ > v0.4.0 targets DSH `>=0.1.2-rc.1` and uses the RC1 Skills Remote, Session snapshot API, native `@` trigger menu, official file/session Remotes, and native Composer reference rendering. It is incompatible with DSH versions older than `0.1.2-rc.1`.
75
+ > 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`, development releases will target DSH `v0.1.2-rc.1` or newer, use the npm `alpha` tag, and no longer support older DSH releases.
75
76
 
76
77
  > [!NOTE]
77
78
  > 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.
78
79
 
79
80
  ## 📰 News
80
81
 
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-09-03 · v0.4.0** — **Compatibility: DSH `>=0.1.2-rc.1`.** Migrated Skills discovery to the DSH RC1 Skills Remote, restored historical reference grants through the RC1 Session snapshot API, and verified the plugin against DSH `0.1.2-rc.1`.
83
+
84
+ - **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`, will migrate to DeepSeek Harness `v0.1.2-rc.1` under the npm `alpha` tag and will not support older DSH releases.
82
85
  - **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.
83
86
  - **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.
84
87
 
@@ -107,7 +110,7 @@ Install the stable `0.3.x` line for the current stable DSH SDK:
107
110
  dsh plugin --profile web add dsh-reference-anything@latest
108
111
  ```
109
112
 
110
- Starting with `v0.4.0-alpha.1`, users on DSH `v0.1.2-alpha.1` can install the development line separately:
113
+ Install `v0.4.0` on DSH `>=0.1.2-rc.1`:
111
114
 
112
115
  ```powershell
113
116
  dsh plugin --profile web add dsh-reference-anything@alpha
@@ -115,12 +118,21 @@ dsh plugin --profile web add dsh-reference-anything@alpha
115
118
 
116
119
  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
120
 
118
- For development, install the published DSH rc.8 SDK dependencies, run the verification gate, then install the repository from a local path:
121
+ To install the stable source locally with DSH `v0.1.0-rc.8 ~ v0.1.1-rc.2`:
122
+
123
+ ```powershell
124
+ git switch main
125
+ pnpm install
126
+ npm run check
127
+ dsh plugin --profile web add .
128
+ ```
129
+
130
+ To install the alpha source locally with DSH `v0.1.2-rc.1` or newer:
119
131
 
120
132
  ```powershell
121
- # Run from the repository root
133
+ git switch alpha
122
134
  pnpm install
123
- pnpm run check
135
+ npm run check
124
136
  dsh plugin --profile web add .
125
137
  ```
126
138
 
@@ -334,8 +346,10 @@ This project is licensed under the [MIT License](./LICENSE). Third-party copyrig
334
346
  [typescript-link]: https://www.typescriptlang.org/
335
347
  [typescript-shield]: https://img.shields.io/badge/TypeScript-3178C6?labelColor=black&logo=typescript&logoColor=white&style=flat-square
336
348
  [dsh-plugin-shield]: https://img.shields.io/badge/DSH-plugin-ffffff?labelColor=black&style=flat-square
337
- [github-version-shield]: https://img.shields.io/github/package-json/v/Chael-Chael/dsh-reference-anything/main?color=369eff&label=version&labelColor=black&style=flat-square
338
- [github-version-link]: https://github.com/Chael-Chael/dsh-reference-anything/blob/main/package.json
349
+ [stable-version-shield]: https://img.shields.io/github/package-json/v/Chael-Chael/dsh-reference-anything/main?color=369eff&label=stable&labelColor=black&style=flat-square
350
+ [stable-version-link]: https://github.com/Chael-Chael/dsh-reference-anything/tree/main
351
+ [alpha-version-shield]: https://img.shields.io/github/package-json/v/Chael-Chael/dsh-reference-anything/alpha?color=f59e0b&label=alpha&labelColor=black&style=flat-square
352
+ [alpha-version-link]: https://github.com/Chael-Chael/dsh-reference-anything/tree/alpha
339
353
  [npm-downloads-shield]: https://img.shields.io/npm/dt/dsh-reference-anything?color=cb3837&label=downloads&labelColor=black&style=flat-square
340
354
  [npm-package-link]: https://www.npmjs.com/package/dsh-reference-anything
341
355
  [github-stars-link]: https://github.com/Chael-Chael/dsh-reference-anything/stargazers
package/lib/client.js CHANGED
@@ -15236,7 +15236,7 @@ var REFERENCE_ANYTHING_REMOTE = {
15236
15236
  descriptors: REFERENCE_ANYTHING_INVOCATIONS
15237
15237
  };
15238
15238
 
15239
- // C:/Users/27923/AppData/Local/Temp/deepseek-harness-e31103e4de9c4ca398a9185a0bcb651d/packages/context/file-reference/lib/types/grammar.js
15239
+ // node_modules/.pnpm/@deepseek-ai+dsh-file-refer_daf56328ce92b9c97bd2707e03352fe0/node_modules/@deepseek-ai/dsh-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))
@@ -30343,10 +30343,10 @@ var inject = [
30343
30343
  "inputTriggers",
30344
30344
  "remote",
30345
30345
  "remote.commands",
30346
+ "remote.skills",
30346
30347
  "remote.fileReferences",
30347
30348
  "remote.sessionReferenceResolver",
30348
30349
  "slots",
30349
- "connection",
30350
30350
  "locale",
30351
30351
  "sessions",
30352
30352
  "uiWorkspace"
@@ -30570,7 +30570,6 @@ function apply(ctx) {
30570
30570
  const sessions = ctx.sessions;
30571
30571
  const updateMenu = createPickerMenuUpdater(inputTriggers, sessions);
30572
30572
  const guardMenuActions = createPickerMenuActionGuard(inputTriggers, sessions);
30573
- const connection = ctx.get("connection");
30574
30573
  let sourceDisposers = [];
30575
30574
  let appliedPicker;
30576
30575
  const registerSources = (picker) => {
@@ -30611,7 +30610,7 @@ function apply(ctx) {
30611
30610
  return unwrap(await ctx.remote.commands.list(sessionId));
30612
30611
  }, t, optionsFor("commands"))));
30613
30612
  if (picker.skills.enabled) disposers.push(inputTriggers.registerSource(createSkillSource(async (sessionId, signal) => {
30614
- const { result } = await connection.api.skills.list({ sessionId }, signal);
30613
+ const result = await ctx.remote.skills.list({ sessionId }, signal);
30615
30614
  if (!result.ok) throw new Error(`${result.error.code}: ${result.error.message}`);
30616
30615
  return result.value.skills;
30617
30616
  }, t, optionsFor("skills"))));
package/lib/index.js CHANGED
@@ -111,7 +111,7 @@ export default class ReferenceRuntime extends Service {
111
111
  assertSessionGranted(session, ref) {
112
112
  const key = ReferenceRuntime.grantKey(ref);
113
113
  if (session && !this.grants.get(String(session.id))?.has(key)) {
114
- const mentioned = session.events.some(event => {
114
+ const mentioned = session.snapshotEvents().some(event => {
115
115
  if (event.type === 'user/message')
116
116
  return ReferenceRuntime.contentMentions(event.data.content, key);
117
117
  if (event.type === 'tool/result')
package/lib/update.d.ts CHANGED
@@ -17,7 +17,7 @@ export interface PackageUpdateResult {
17
17
  interface UpdateManagerOptions {
18
18
  packageRoot?: string;
19
19
  dshHome?: string;
20
- fetchLatest?: (signal?: AbortSignal) => Promise<string>;
20
+ fetchLatest?: (signal?: AbortSignal, tag?: string) => Promise<string>;
21
21
  fetchReleaseNotes?: (version: string, signal?: AbortSignal) => Promise<Pick<PackageUpdateStatus, 'releaseNotes' | 'releaseUrl'>>;
22
22
  install?: (profileDir: string, version: string, signal?: AbortSignal) => Promise<void>;
23
23
  afterInstall?: (profileDir: string, version: string, signal?: AbortSignal) => Promise<void>;
@@ -41,7 +41,7 @@ export declare class PackageUpdateManager {
41
41
  update(signal?: AbortSignal): Promise<PackageUpdateResult>;
42
42
  private runCheck;
43
43
  }
44
- export declare function fetchLatestVersion(signal?: AbortSignal): Promise<string>;
44
+ export declare function fetchLatestVersion(signal?: AbortSignal, tag?: string): Promise<string>;
45
45
  export declare function fetchGitHubReleaseNotes(version: string, signal?: AbortSignal): Promise<Pick<PackageUpdateStatus, 'releaseNotes' | 'releaseUrl'>>;
46
46
  export declare function readPackageVersion(packageRoot?: string): Promise<string>;
47
47
  /** Find the profile that owns this exact installed package, including pnpm links. */
package/lib/update.js CHANGED
@@ -73,7 +73,8 @@ export class PackageUpdateManager {
73
73
  let currentVersion = '0.0.0';
74
74
  try {
75
75
  currentVersion = await readPackageVersion(this.packageRoot);
76
- const latestVersion = await this.fetchLatest(signal);
76
+ const tag = currentVersion.split('-')[1]?.split('.')[0] ?? 'latest';
77
+ const latestVersion = await this.fetchLatest(signal, tag);
77
78
  const updateAvailable = compareVersions(latestVersion, currentVersion) > 0;
78
79
  let release = {};
79
80
  try {
@@ -103,9 +104,11 @@ export class PackageUpdateManager {
103
104
  }
104
105
  }
105
106
  }
106
- export async function fetchLatestVersion(signal) {
107
+ export async function fetchLatestVersion(signal, tag = 'latest') {
108
+ if (!/^[0-9A-Za-z][0-9A-Za-z._-]*$/.test(tag))
109
+ throw new Error('refusing to request an invalid npm tag');
107
110
  const timeout = AbortSignal.timeout(CHECK_TIMEOUT_MS);
108
- const response = await fetch(NPM_LATEST_URL, {
111
+ const response = await fetch(NPM_LATEST_URL.replace(/latest$/, tag), {
109
112
  // The registry's package metadata endpoint accepts the install-v1 media
110
113
  // type, but its `/latest` dist-tag endpoint responds 406 to that same
111
114
  // header. Request ordinary JSON because this endpoint returns one manifest.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "dsh-reference-anything",
3
- "version": "0.4.0-alpha.1",
3
+ "version": "0.4.0",
4
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
5
  "license": "MIT",
6
6
  "publishConfig": {
@@ -99,29 +99,29 @@
99
99
  },
100
100
  "peerDependencies": {
101
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",
102
+ "@deepseek-ai/dsh-agent": ">=0.1.2-rc.1",
103
+ "@deepseek-ai/dsh-api-remotes": ">=0.1.2-rc.1",
104
+ "@deepseek-ai/dsh-attachment": ">=0.1.2-rc.1",
105
+ "@deepseek-ai/dsh-client-connection": ">=0.1.2-rc.1",
106
+ "@deepseek-ai/dsh-client-locale": ">=0.1.2-rc.1",
107
+ "@deepseek-ai/dsh-api-session-controller": ">=0.1.2-rc.1",
108
+ "@deepseek-ai/dsh-client-store": ">=0.1.2-rc.1",
109
+ "@deepseek-ai/dsh-client-ui-conversation": ">=0.1.2-rc.1",
110
+ "@deepseek-ai/dsh-client-ui-input-trigger": ">=0.1.2-rc.1",
111
+ "@deepseek-ai/dsh-client-ui-renderer": ">=0.1.2-rc.1",
112
+ "@deepseek-ai/dsh-client-ui-settings": ">=0.1.2-rc.1",
113
+ "@deepseek-ai/dsh-client-ui-slots": ">=0.1.2-rc.1",
114
+ "@deepseek-ai/dsh-client-ui-workspace": ">=0.1.2-rc.1",
115
+ "@deepseek-ai/dsh-file-reference": ">=0.1.2-rc.1",
116
+ "@deepseek-ai/dsh-llm": ">=0.1.2-rc.1",
117
+ "@deepseek-ai/dsh-output-retention": ">=0.1.2-rc.1",
118
+ "@deepseek-ai/dsh-session": ">=0.1.2-rc.1",
119
+ "@deepseek-ai/dsh-session-reference": ">=0.1.2-rc.1",
120
+ "@deepseek-ai/dsh-settings": ">=0.1.2-rc.1",
121
+ "@deepseek-ai/dsh-storage-domain": ">=0.1.2-rc.1",
122
+ "@deepseek-ai/dsh-tools": ">=0.1.2-rc.1",
123
+ "@deepseek-ai/dsh-typert-protocol": ">=0.1.2-rc.1",
124
+ "@deepseek-ai/dsh-typert-registry": ">=0.1.2-rc.1",
125
125
  "react": "^18.2.0"
126
126
  },
127
127
  "peerDependenciesMeta": {
@@ -179,31 +179,31 @@
179
179
  },
180
180
  "devDependencies": {
181
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",
182
+ "@deepseek-ai/dsh-agent": "0.1.2-rc.1",
183
+ "@deepseek-ai/dsh-api-remotes": "0.1.2-rc.1",
184
+ "@deepseek-ai/dsh-attachment": "0.1.2-rc.1",
185
+ "@deepseek-ai/dsh-client-connection": "0.1.2-rc.1",
186
+ "@deepseek-ai/dsh-client-locale": "0.1.2-rc.1",
187
+ "@deepseek-ai/dsh-api-session-controller": "0.1.2-rc.1",
188
+ "@deepseek-ai/dsh-client-store": "0.1.2-rc.1",
189
+ "@deepseek-ai/dsh-client-ui-conversation": "0.1.2-rc.1",
190
+ "@deepseek-ai/dsh-client-ui-input-trigger": "0.1.2-rc.1",
191
+ "@deepseek-ai/dsh-client-ui-renderer": "0.1.2-rc.1",
192
+ "@deepseek-ai/dsh-client-ui-settings": "0.1.2-rc.1",
193
+ "@deepseek-ai/dsh-client-ui-slots": "0.1.2-rc.1",
194
+ "@deepseek-ai/dsh-client-ui-workspace": "0.1.2-rc.1",
195
+ "@deepseek-ai/dsh-file-reference": "0.1.2-rc.1",
196
+ "@deepseek-ai/dsh-llm": "0.1.2-rc.1",
197
+ "@deepseek-ai/dsh-output-retention": "0.1.2-rc.1",
198
+ "@deepseek-ai/dsh-session": "0.1.2-rc.1",
199
+ "@deepseek-ai/dsh-session-reference": "0.1.2-rc.1",
200
+ "@deepseek-ai/dsh-settings": "0.1.2-rc.1",
201
+ "@deepseek-ai/dsh-storage": "0.1.2-rc.1",
202
+ "@deepseek-ai/dsh-storage-domain": "0.1.2-rc.1",
203
+ "@deepseek-ai/dsh-system-prompt": "0.1.2-rc.1",
204
+ "@deepseek-ai/dsh-tools": "0.1.2-rc.1",
205
+ "@deepseek-ai/dsh-typert-protocol": "0.1.2-rc.1",
206
+ "@deepseek-ai/dsh-typert-registry": "0.1.2-rc.1",
207
207
  "@jackwener/opencli": "1.8.6",
208
208
  "@types/node": "^22.20.1",
209
209
  "@types/react": "^18.2.0",