dsh-reference-anything 0.4.3 → 0.5.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.
Files changed (122) hide show
  1. package/NOTICE.md +58 -0
  2. package/README.md +159 -70
  3. package/cordis.patch.yml +17 -15
  4. package/images/agents/LICENSE +22 -0
  5. package/images/agents/README.md +3 -0
  6. package/images/agents/antigravity.svg +1 -0
  7. package/images/agents/chatgpt.svg +1 -0
  8. package/images/agents/claude.svg +1 -0
  9. package/images/agents/cline.svg +1 -0
  10. package/images/agents/codex.svg +1 -0
  11. package/images/agents/continue.svg +1 -0
  12. package/images/agents/crush.svg +1 -0
  13. package/images/agents/cursor.svg +1 -0
  14. package/images/agents/dsh.svg +1 -0
  15. package/images/agents/gemini.svg +1 -0
  16. package/images/agents/goose.svg +1 -0
  17. package/images/agents/grokbuild.svg +1 -0
  18. package/images/agents/hermes.svg +1 -0
  19. package/images/agents/kilocode.svg +1 -0
  20. package/images/agents/kimi.svg +1 -0
  21. package/images/agents/mimocode.svg +1 -0
  22. package/images/agents/openclaw.svg +1 -0
  23. package/images/agents/opencode.svg +1 -0
  24. package/images/agents/pi.svg +1 -0
  25. package/images/agents/qoder.svg +1 -0
  26. package/images/agents/qwen.svg +1 -0
  27. package/images/agents/reasonix.svg +6 -0
  28. package/images/agents/teleagent.svg +1 -0
  29. package/images/agents/trae.svg +1 -0
  30. package/images/agents/vibe.svg +1 -0
  31. package/images/agents/workbuddy.svg +37 -0
  32. package/images/agents/zcode.svg +1 -0
  33. package/images/agents/zed.svg +1 -0
  34. package/lib/agent-scan-cache.d.ts +13 -0
  35. package/lib/agent-scan-cache.js +43 -0
  36. package/lib/chat-import-compatibility.d.ts +18 -0
  37. package/lib/chat-import-compatibility.js +87 -0
  38. package/lib/chat-import-discovery.d.ts +32 -0
  39. package/lib/chat-import-discovery.js +17 -0
  40. package/lib/chat-import-reader.d.ts +27 -0
  41. package/lib/chat-import-reader.js +111 -0
  42. package/lib/chat-import-runtime.d.ts +4 -0
  43. package/lib/chat-import-runtime.js +4 -0
  44. package/lib/client/index.d.ts +5 -0
  45. package/lib/client.js +4 -33741
  46. package/lib/contract.d.ts +65 -4
  47. package/lib/contract.js +24 -4
  48. package/lib/conversation-availability.d.ts +13 -0
  49. package/lib/conversation-availability.js +76 -0
  50. package/lib/errors.d.ts +2 -2
  51. package/lib/host.d.ts +104 -11
  52. package/lib/host.js +202 -14
  53. package/lib/index.d.ts +3 -1
  54. package/lib/index.js +31 -3
  55. package/lib/local-conversation-reader.d.ts +3 -0
  56. package/lib/local-conversation-reader.js +81 -0
  57. package/lib/local-conversation-scanner.d.ts +18 -0
  58. package/lib/local-conversation-scanner.js +55 -0
  59. package/lib/local-locator.d.ts +14 -0
  60. package/lib/local-locator.js +34 -0
  61. package/lib/local-plugins.d.ts +6 -0
  62. package/lib/local-plugins.js +119 -0
  63. package/lib/local-reference-tools.d.ts +4 -0
  64. package/lib/local-reference-tools.js +195 -0
  65. package/lib/local-reference.d.ts +118 -0
  66. package/lib/local-reference.js +289 -0
  67. package/lib/opencli.d.ts +5 -2
  68. package/lib/opencli.js +88 -64
  69. package/lib/reference.d.ts +5 -3
  70. package/lib/reference.js +167 -72
  71. package/lib/render.d.ts +1 -1
  72. package/lib/render.js +4 -4
  73. package/lib/retain.d.ts +14 -0
  74. package/lib/retain.js +1 -1
  75. package/lib/serialize.d.ts +1 -1
  76. package/lib/serialize.js +2 -2
  77. package/lib/sources/local-agent/index.d.ts +23 -16
  78. package/lib/sources/local-agent/index.js +101 -15
  79. package/lib/store/spec.d.ts +104 -7
  80. package/lib/sync/index.js +4 -0
  81. package/lib/tool.d.ts +2 -0
  82. package/lib/tool.js +36 -41
  83. package/lib/typert.js +3 -0
  84. package/lib/types.d.ts +2 -0
  85. package/lib/update.d.ts +2 -0
  86. package/lib/update.js +12 -0
  87. package/lib/uri-codec.d.ts +1 -0
  88. package/lib/uri-codec.js +64 -3
  89. package/lib/uri.d.ts +1 -10
  90. package/lib/uri.js +16 -5
  91. package/lib/web.js +3 -1
  92. package/lib/wire.d.ts +200 -0
  93. package/lib/wire.js +38 -13
  94. package/opencli-plugin/common.js +5 -3
  95. package/opencli-plugin/opencli-plugin.json +1 -1
  96. package/opencli-plugin/package.json +1 -1
  97. package/package.json +30 -4
  98. package/release-notes/0.4.4/commands.png +0 -0
  99. package/release-notes/0.4.4/demos/agent-import.gif +0 -0
  100. package/release-notes/0.4.4/demos/chat-import-upgrade.gif +0 -0
  101. package/release-notes/0.4.4/demos/folders.gif +0 -0
  102. package/release-notes/0.4.4/demos/local-plugins.gif +0 -0
  103. package/release-notes/0.4.4/demos/shortcuts.gif +0 -0
  104. package/release-notes/0.4.4/features.json +36 -0
  105. package/release-notes/0.4.4/files.png +0 -0
  106. package/release-notes/0.5.0/demos/agent-import.gif +0 -0
  107. package/release-notes/0.5.0/demos/chat-import-upgrade.gif +0 -0
  108. package/release-notes/0.5.0/demos/folders.gif +0 -0
  109. package/release-notes/0.5.0/demos/local-plugins.gif +0 -0
  110. package/release-notes/0.5.0/demos/local-references.gif +0 -0
  111. package/release-notes/0.5.0/demos/shortcuts.gif +0 -0
  112. package/release-notes/0.5.0/features.json +65 -0
  113. package/release-notes/README.md +36 -0
  114. package/vendor/chat-import-reader/LICENSE +22 -0
  115. package/vendor/chat-import-reader/LICENSE.fzstd +21 -0
  116. package/vendor/chat-import-reader/README.md +48 -0
  117. package/vendor/chat-import-reader/availability-worker.mjs +114 -0
  118. package/vendor/chat-import-reader/parsers.d.mts +6 -0
  119. package/vendor/chat-import-reader/parsers.mjs +11168 -0
  120. package/vendor/chat-import-reader/scan-worker.mjs +7 -0
  121. package/vendor/chat-import-reader/scanners.mjs +4286 -0
  122. package/vendor/chat-import-reader/upstream-sha256.json +101 -0
package/NOTICE.md CHANGED
@@ -1,5 +1,24 @@
1
1
  # Third-party notices
2
2
 
3
+ ## Lucide action icons
4
+
5
+ The Import, Summary, and Undo 2 SVG paths in `src/client/provider-icons.tsx`
6
+ are from https://github.com/lucide-icons/lucide and are licensed under ISC:
7
+
8
+ Copyright (c) 2026 Lucide Icons and Contributors
9
+
10
+ Permission to use, copy, modify, and/or distribute this software for any
11
+ purpose with or without fee is hereby granted, provided that the above
12
+ copyright notice and this permission notice appear in all copies.
13
+
14
+ THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
15
+ WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
16
+ MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
17
+ ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
18
+ WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
19
+ ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
20
+ OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
21
+
3
22
  The OpenCLI provider adapters in `opencli-plugin/` are derived in part from
4
23
  `pinguarmy/ai-chat-exporter` at commit
5
24
  `9f0f9e21d818316d45c0a13c98d288a80bb8174e`.
@@ -46,7 +65,46 @@ redistributed by this package.
46
65
 
47
66
  ## DeepSeek Harness reference services
48
67
 
68
+ `src/client/native-reference-text.tsx` adapts `user-text-rules.ts` and
69
+ `FileReference.tsx` from `packages/client/ui-reference/src/client/` at
70
+ https://github.com/deepseek-ai/deepseek-harness/tree/687f282e8625c6b8d11ff58211a90524be2e4317.
71
+
72
+ Copyright (c) 2026 DeepSeek
73
+
74
+ Permission is hereby granted, free of charge, to any person obtaining a copy
75
+ of this software and associated documentation files (the "Software"), to deal
76
+ in the Software without restriction, including without limitation the rights
77
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
78
+ copies of the Software, and to permit persons to whom the Software is
79
+ furnished to do so, subject to the following conditions:
80
+
81
+ The above copyright notice and this permission notice shall be included in all
82
+ copies or substantial portions of the Software.
83
+
84
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
85
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
86
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
87
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
88
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
89
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
90
+ SOFTWARE.
91
+
49
92
  File candidate formatting and cross-session candidate types use the official
50
93
  DeepSeek Harness packages `@deepseek-ai/dsh-file-reference` and
51
94
  `@deepseek-ai/dsh-session-reference`. Those packages remain external package
52
95
  dependencies and are used under the DeepSeek Harness project's MIT license.
96
+
97
+ ## dsh-chat-import agent icons
98
+
99
+ Settings icons in images/agents are copied from Nwflower/dsh-chat-import (dbd03e1dfeaffea980458df1afc4ef899af9a2a4).
100
+ Copyright (c) 2026 Nwflower; Copyright (c) 2026 Scarlett.
101
+ Distributed under the MIT License; the full license is included in images/agents/LICENSE.
102
+
103
+ ## Bundled conversation scanners and readers
104
+
105
+ `vendor/chat-import-reader/parsers.mjs` and `scanners.mjs` contain adapted
106
+ read-only discovery, database summary, parser and preview code from Nwflower/dsh-chat-import npm 0.26.1, plus its fzstd decoder.
107
+ Copyright (c) 2026 Nwflower and Scarlett; fzstd copyright (c) 2020 Arjun Barrett.
108
+ Both are MIT licensed. Full licenses are shipped in
109
+ `vendor/chat-import-reader/LICENSE` and `LICENSE.fzstd`; source hashes and
110
+ regeneration instructions accompany the snapshot in the repository.
package/README.md CHANGED
@@ -35,25 +35,27 @@ One `@` for them all.
35
35
 
36
36
  </div>
37
37
 
38
- **Reference Anything is an enhancement for the DeepSeek Harness (DSH) `@` menu.** It brings multiple reference sources into one searchable menu, so you can mention the context you need without switching tools or copying content manually.
38
+ **Reference Anything is an enhancement for the DeepSeek Harness (DSH) `@` menu.** It brings files, sessions, local agents, web chats, cloud drives, and local plugins into one searchable menu, so you can mention the context you need without switching tools or copying content manually.
39
39
 
40
- After typing `@`, you can browse and click items in the menu with your mouse, or use the keyboard to enter text, search, and narrow down the results.
40
+ After typing `@`, you can browse and click items in the menu with your mouse, or use the keyboard to enter text, search, and narrow down the results. When a folder is selected, press `Tab` to enter it and continue browsing, or `Enter` to insert the folder reference.
41
41
 
42
42
  Use one `@` menu to reference:
43
43
 
44
44
  - 🧩 DSH commands and Skills
45
45
  - 📁 Workspace files and folders
46
46
  - 💬 DSH session history
47
- - 🖥️ **NEW: Transcripts left on disk by other local agent CLIs (Claude Code, Codex, Cursor, and eleven more)**
48
- - ✨ **NEW: Historical conversations from online chatbots like ChatGPT, Claude, Gemini, DeepSeek, Grok, and Kimi**
49
- - ☁️ **NEW: Files from cloud drives connected through OpenList**
47
+ - 🖥️ **Local Agent conversations:** bundled scanning and read-only parsers for 29 source formats, including Claude Code, Codex and Cursor; optional import into DSH through Chat Import. Live acceptance coverage is recorded separately.
48
+ - ✨ **Added by this plugin — highlight: Historical conversations from web chatbots including ChatGPT, Claude, Gemini, DeepSeek, Grok, and Kimi**
49
+ - ☁️ **Added by this plugin: Files from cloud drives connected through OpenList**
50
+ - 🧩 **Added by this plugin: Installed and configured local DSH plugins, without repeatedly hunting through directories**
50
51
 
51
52
  Beyond extending what `@` can reference, Reference Anything also enhances the `@` menu itself:
52
53
 
53
- - 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
54
+ - Customize visible groups: enable or hide `Commands`, `Skills`, files, DSH sessions, local agent conversations, external conversations, cloud-drive files, and local plugins, then arrange them in any order
55
+ - Customize shortcuts: assign your own shortcuts to source groups, web providers, local agents, and cloud-drive mounts
54
56
  - Customize result counts: set each group's collapsed row count and hard candidate cap independently
55
57
  - Choose how to browse: expand or collapse individual groups, or use DSH's native scrolling list
56
- - Enhanced visual icons: distinguish reference sources with type icons and platform logos, making menu items easier to identify
58
+ - Enhanced visual icons and commands: distinguish reference sources with type icons and platform logos
57
59
 
58
60
  <table>
59
61
  <tr>
@@ -75,6 +77,61 @@ Type `@`, search across enabled sources, and insert the selected reference into
75
77
 
76
78
  ## 📰 News
77
79
 
80
+ ### 0.5.0 Preview · Feature Demos
81
+
82
+ This update also adds unified local pagination, resumable long-text reads and message/tool search, rechecks source switches on every read, and moves non-local tools to external_reference_list/read. See the [release and migration guide](./docs/release-v0.5.0.md). Version 0.5.0 is not yet published.
83
+
84
+ #### Import Past Conversations into DSH and Pick Up Where You Left Off
85
+
86
+ Want to continue an existing local session without copying and pasting chat logs or treating old threads purely as static context?
87
+
88
+ Now, when you find a local session in the `@` menu, you have two ways to use it:
89
+ - **Reference as context (`Enter`)**: Insert the session directly as a reference;
90
+ - **Import and continue chatting (`Tab`)**: Open the action menu, select **Import**, and confirm to bring the entire conversation history into DSH and keep chatting seamlessly! (Prefer a faster workflow? You can disable the confirmation prompt in Settings.)
91
+
92
+ > 💡 **Note**: Importing requires `dsh-chat-import` v0.26.1 or a compatible newer version to be installed and enabled.
93
+
94
+ ![Press Enter to reference a session, or Tab to open the action menu and import history; uses mock data.](./release-notes/0.5.0/demos/agent-import.gif)
95
+
96
+ #### One-Click Upgrade for `dsh-chat-import` Right from the Menu
97
+
98
+ If an outdated version of `dsh-chat-import` prevents you from using chat import or handoff summaries, you no longer need to update it manually.
99
+
100
+ Simply click the **upgrade prompt** right inside the menu to update to v0.26.1 or later. If prompted after the upgrade, restart DSH to apply the changes.
101
+
102
+ ![Upgrade dsh-chat-import from the menu and view the simulated restart prompt in settings.](./release-notes/0.5.0/demos/chat-import-upgrade.gif)
103
+
104
+ #### Type `@plugin:` to Reference Installed Plugins Directly
105
+
106
+ Want your Agent to troubleshoot a plugin issue or inspect its source code? Digging through deep system folders just to find the installation path is a hassle.
107
+
108
+ Now you can simply type `@plugin:`, search for the plugin name, and press `Enter` to pass its installation directory straight to the Agent (supports all plugins currently installed in your DSH environment).
109
+
110
+ ![Filter local plugins in the @plugin: menu and press Enter to insert the plugin directory reference.](./release-notes/0.5.0/demos/local-plugins.gif)
111
+
112
+ #### Custom Shortcuts to Narrow Down Your Search Scope Instantly
113
+
114
+ Tired of scrolling through a cluttered `@` menu full of files, folders, and different sources just to find a past conversation?
115
+
116
+ You can now assign **custom shortcuts** to different chat sources in Settings (multiple shortcuts can be separated by commas), allowing you to filter by category and narrow down your search scope right as you type:
117
+ - **Search across a combined group**: Not sure where a conversation happened? Assign the same shortcut (e.g., `chat`) to both Local Agents and Web Chats, then type `@chat:` to narrow your search exclusively to those sources;
118
+ - **Target a specific source**: When you know exactly where to look, use a dedicated shortcut like `@codex:` to filter exclusively for Codex sessions.
119
+
120
+ ![Configure shared shortcuts in settings, then search sessions using both shared and source-specific shortcuts.](./release-notes/0.5.0/demos/shortcuts.gif)
121
+
122
+ #### Browse Folders Directly in the `@` Menu — No Need to Type Full Paths
123
+
124
+ Want to reference a deeply nested folder without memorizing or typing out its full path?
125
+
126
+ You can now navigate folder hierarchies directly inside the `@` file menu:
127
+ - **Open subfolder**: Select a folder and press `Tab` to step inside;
128
+ - **Go back**: Use the breadcrumb navigation bar at the top of the menu;
129
+ - **Insert reference**: Press `Enter` on your target folder to insert it directly into your chat.
130
+
131
+ ![Press Tab in the file menu to enter subdirectories, navigate back, and press Enter to reference a folder.](./release-notes/0.5.0/demos/folders.gif)
132
+
133
+ - **2026-10-12 · v0.4.4** — Added local plugin discovery to the `@` menu, configurable source and provider shortcuts, improved picker icons and folder insertion, and added the `model` command entry.
134
+
78
135
  - **2026-10-06 · v0.4.3** — Reference Anything now supports DSH Desktop! Enjoy a refreshed and optimized settings page!
79
136
 
80
137
  - **2026-09-28 · v0.4.2 — Important update** — Fixed a fatal plugin compatibility error with the current DSH interface. During plugin loading, DSH now requires every strict `agentSearch` registration codec to provide a `create()` validator factory; v0.4.1 supplied only validation rules, so DSH rejected the plugin before search could run. This release adds the required factory and fixes command icon sizing plus bilingual command labels in the native picker.
@@ -83,121 +140,125 @@ Type `@`, search across enabled sources, and insert the selected reference into
83
140
 
84
141
  - **2026-09-03 · v0.4.0** — **Compatibility: DSH `>=0.2.0-rc.2`.** 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.2.0-rc.2`.
85
142
 
86
- - **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 was the final release line targeting the current stable DeepSeek Harness SDK; `v0.4.0` migrated to DeepSeek Harness `v0.2.0-rc.2` under the npm `alpha` tag and does not support older DSH releases.
87
- - **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.
88
- - **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.
89
-
90
143
  ## 🧭 Roadmap
91
144
 
92
145
  - [x] Support referencing historical conversations from other local agents
93
- - [ ] Support continuing referenced local-agent sessions
146
+ - [x] Support continuing referenced local-agent sessions (Continue Session)
94
147
  - [x] Reference cloud-drive files through OpenList
95
148
  - [ ] Manage cloud-drive files inside the plugin (in progress; current access is read-only)
96
149
  - [ ] Support more keyword matching rules, including blacklists and whitelists, especially for file search
97
150
  - [ ] Support more AI conversation platforms
98
151
  - [ ] Provide a quieter AI conversation synchronization mechanism
99
152
  - [ ] Support referencing applications or browser windows currently open on the computer
153
+ - [ ] Add cross-source full-text and semantic search with hit snippets and unified ranking (P0)
154
+ - [ ] Reduce setup cost for cross-platform sources with auto-detection, reconnect, account isolation, and sync status (P1)
155
+ - [ ] Support optionally continuing a referenced local-agent task with goals, key files, and unfinished work (P2)
156
+ - [ ] Add provenance, time and scope visibility, sensitive-content filtering, and local-cache cleanup controls (P2)
100
157
  - [ ] More ideas are welcome in Issues
101
158
 
102
159
  ## 📦 Installation
103
160
 
104
- Prerequisites:
161
+ The released version is **v0.5.0**, with a declared minimum DSH SDK version of **`0.2.0-rc.2`**.
105
162
 
106
- - `dsh` is installed and running; automatic OpenCLI installation requires the `npm` bundled with Node.js.
107
- - The target platforms are already logged in under the selected Chrome Profile.
163
+ ### Official desktop app
108
164
 
109
- Install the stable `0.3.x` line for the current stable DSH SDK:
165
+ Download the official desktop app from the [DeepSeek Harness website](https://www.deepseek.com/en/harness/), open **Plugins → Add plugin**, enter `dsh-reference-anything`, and follow the prompts to install and enable it. Restart DSH if asked, then open **Settings → Reference Anything**.
110
166
 
111
- ```powershell
112
- dsh plugin --profile web add dsh-reference-anything@latest
113
- ```
167
+ Desktop uses a separate plugin profile; plugins installed in the Web profile are not automatically enabled in Desktop. See the [official desktop documentation](https://github.com/deepseek-ai/deepseek-harness/blob/master/apps/desktop/README.md).
114
168
 
115
- Install `v0.4.3` on DSH `>=0.2.0-rc.2`:
169
+ ### DSH Market
170
+
171
+ Open [Reference Anything on DSH Market](https://dshmarket.com/p/Chael-Chael/dsh-reference-anything/), or search for `dsh-reference-anything` in the in-app market. If the market is not installed, use **Add plugin** with `dshmarket` in Desktop; for Web, run:
116
172
 
117
173
  ```powershell
118
- dsh plugin --profile web add dsh-reference-anything@alpha
174
+ dsh plugin --profile web add dshmarket
119
175
  ```
120
176
 
121
- After the DSH alpha API stabilizes and the migration is verified, the `alpha` line will be promoted to `latest` and become the default installation.
122
-
123
- To install the stable source locally with DSH `v0.1.0-rc.8 ~ v0.1.1-rc.2`:
177
+ ### Web CLI
124
178
 
125
179
  ```powershell
126
- git switch main
127
- pnpm install
128
- npm run check
129
- dsh plugin --profile web add .
180
+ dsh plugin --profile web add dsh-reference-anything
130
181
  ```
131
182
 
132
- To install the alpha source locally with DSH `v0.2.0-rc.2` or newer:
183
+ The installed version depends on the selected channel; this README describes v0.5.0.
133
184
 
134
- ```powershell
135
- git switch alpha
136
- pnpm install
137
- npm run check
138
- dsh plugin --profile web add .
139
- ```
185
+ ### Optional: Connect web AI chats
140
186
 
141
- > [!NOTE]
142
- > To restore DSH's original `@` menu appearance, simply uninstall this plugin.
187
+ Only web chats need this step. Local sources work without it. Sign into the desired platforms in your browser. OpenCLI is installed with this plugin; adapter setup still needs npm.
143
188
 
144
- After installing the DSH plugin, open `Settings → Reference Anything → Availability check` in DSH Web (restart DSH first if this settings entry is not yet visible), then click **One-click setup**. It discovers OpenCLI; installs or upgrades it globally through npm when it is missing or older than `1.8.6`; installs the bundled adapters for all six platforms; starts or refreshes Browser Bridge; and opens the OpenCLI Browser Bridge page in the [Chrome Web Store](https://chromewebstore.google.com/detail/opencli/ildkmabpimmkaediidaifkhjpohdnifk). Confirm the extension installation, then return and click **Recheck setup**. Any remaining failed check displays its own recovery action.
189
+ After installing the DSH plugin, open `Settings → Reference Anything → Availability check` in DSH (restart DSH first if this settings entry is not yet visible), then click **One-click setup**. It uses OpenCLI 2.0.0 installed as a runtime dependency and updated together with this plugin; installs the bundled adapters for all six platforms; starts or refreshes Browser Bridge; and opens the OpenCLI Browser Bridge page in the [Chrome Web Store](https://chromewebstore.google.com/detail/opencli/ildkmabpimmkaediidaifkhjpohdnifk). Confirm the extension installation, then return and click **Recheck setup**. Any remaining failed check displays its own recovery action.
145
190
 
146
- You can also install OpenCLI and the conversation adapter manually, then start Browser Bridge:
191
+ For a custom global OpenCLI, install it manually and enter its full executable path in settings. The default opencli always uses the plugin dependency:
147
192
 
148
193
  ```powershell
149
- npm install --global "@jackwener/opencli@>=1.8.6"
194
+ npm install --global "@jackwener/opencli@2.0.0"
150
195
  opencli plugin install file:///C:/path/to/dsh-reference-anything/opencli-plugin
151
196
  opencli daemon restart
152
197
  ```
153
198
 
154
- Replace `C:/path/to/dsh-reference-anything` with the repository location. Browser extensions cannot be silently installed from a webpage; confirm the installation in the Chrome Web Store, or download an extension package from [OpenCLI Releases](https://github.com/jackwener/opencli/releases) and use “Load unpacked.” If the browser blocks the store popup, the settings page keeps a normal fallback link. When multiple browser profiles are connected, select and apply one directly in the failed check. Global npm installation remains subject to OS permissions; failures retain their original diagnostic in the settings page.
199
+ Replace `C:/path/to/dsh-reference-anything` with the repository location. Browser extensions cannot be silently installed from a webpage; confirm the installation in the Chrome Web Store, or download an extension package from [OpenCLI Releases](https://github.com/jackwener/opencli/releases) and use “Load unpacked.” If the browser blocks the store popup, the settings page keeps a normal fallback link. When multiple browser profiles are connected, select and apply one directly in the failed check. OpenCLI updates with this plugin; the browser store updates the extension separately.
155
200
 
156
201
  ## 🚀 Usage
157
202
 
158
- Reference Anything registers seven sources in the native DSH `@` menu rather than introducing a separate search interface. Settings let you choose which groups appear, their order, their collapsed row count, their hard candidate cap, and whether groups use plugin-owned collapse actions or the native scrolling list. A separate one-click control switches the visible picker back to DSH's official file/session list without stopping the plugin, synchronization service, local data, or model-facing tools; the same control restores the Reference Anything picker at any time.
203
+ Reference Anything registers eight sources in the native DSH `@` menu rather than introducing a separate search interface. Settings let you choose which groups appear, their order, their collapsed row count, their hard candidate cap, and whether groups use plugin-owned collapse actions or the native scrolling list. A separate one-click control switches the visible picker back to DSH's official file/session list without stopping the plugin, synchronization service, local data, or model-facing tools; the same control restores the Reference Anything picker at any time.
159
204
 
160
- 1. Open `Settings → Reference Anything` in DSH Web.
161
- 2. Under **Availability check**, confirm that OpenCLI, Browser Bridge, the browser extension, and the conversation adapter are ready.
162
- 3. Under **Web AI conversation sync settings**, choose a browser profile, storage mode, sync mode, and history range, then start syncing.
163
- 4. Type `@` in the input box and choose from the `Commands`, `Skills`, `Files and folders`, `DSH sessions`, `Local agent conversations`, `External conversations`, or `Cloud drive files` groups.
164
- 5. Type a keyword to filter candidates, for example `@cache-design`.
205
+ 1. Type `@` to browse sources, or enter a keyword such as `@cache-design`.
206
+ 2. Click a result, or select it with the arrow keys and press `Enter`. For workspace folders, `Tab` opens the folder and `Enter` inserts a reference.
207
+ 3. Add your request and send it: “Use this Codex conversation and project folder to check whether the earlier plan has been implemented.”
208
+
209
+ For web chats, complete the connection steps above, then choose platforms, browser profile, storage mode, and history range under **Settings → Reference Anything → Web AI conversation sync settings** and start syncing. For cloud files, connect OpenList and add a mount in Settings.
165
210
 
166
211
  The default **Read bodies on demand** mode stores only the title index locally and uses the browser when an agent needs the conversation. Choose **Store full bodies locally** for offline reading and full-text search. The plugin checks for new versions when it loads; release notes are available in Settings, and installed updates take effect after restarting DSH.
167
212
 
168
- > [!WARNING]
169
- > To protect your account and conversation data, external conversations are imported and synchronized through OpenCLI using your existing logged-in browser session. A browser window may temporarily open during use or synchronization. In most cases, leave it open in the background: the plugin will reuse it without interrupting your work. The window may also display OpenCLI debugging information. This is expected—please do not be alarmed or close it manually; wait for the operation to finish. Due to current OpenCLI limitations, we temporarily use slower serial synchronization to reduce how often browser windows open. Once the upstream OpenCLI repository is updated, we will switch to faster parallel synchronization.
213
+ > [!NOTE]
214
+ > OpenCLI may open or reuse browser windows while syncing web chats or reading bodies. Keep them available until the operation finishes. Sync speed depends on the platform, history size, and browser connection.
215
+
216
+ ### Shortcut examples
217
+
218
+ These examples use the current defaults. After changing shortcuts, use the values shown in Settings.
219
+
220
+ | Input | What it finds |
221
+ | --- | --- |
222
+ | `@file:README` | Workspace files and folders |
223
+ | `@session:` | DSH session history |
224
+ | `@agent:` / `@codex:` | Local agent history / Codex only |
225
+ | `@chat:` / `@chatgpt:cache` | Web chats / matching ChatGPT chats |
226
+ | `@drive:` | Connected cloud drives |
227
+ | `@plugin:` | Local DSH plugins |
228
+ | `@command:` / `@skill:` | Commands / Skills |
229
+
230
+ Under **General**, set shortcuts for groups, web providers, local agents, and cloud mounts. Separate multiple shortcuts with commas: set the file group to `file,f`, then use `@f:README`. A shortcut can target multiple sources. Full-width colons (`:`) are also supported.
170
231
 
171
232
  ### 🧩 One `@` menu, multiple sources
172
233
 
173
- 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**.
234
+ The `@` menu contains eight groups: `Commands`, `Skills`, `Files and folders`, `DSH sessions`, `Local agent conversations`, `External conversations`, `Cloud drive files`, and `All local plugins`. 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, assign an optional custom shortcut (for example `f` for Files, then use `@f:notes`), and choose **Collapse / expand** or **Native DSH scrolling**.
174
235
 
175
236
  #### ⌨️ @Commands — DSH native commands
176
237
 
177
- To browse commands, use `@commands`; selecting one hands `/command` back to DSH's native slash pipeline.
238
+ To browse commands, use `@command:`; selecting one hands `/command` back to DSH's native slash pipeline.
178
239
 
179
240
  <p align="center"><img src="./images/at-commands.png" alt="Browse DSH commands from the @ menu" width="800" /></p>
180
241
 
181
242
  #### 🛠️ @Skills — DSH skill library
182
243
 
183
- To browse skills, use `@skills:`; selecting one inserts `/skill` for DSH's native skill handling.
244
+ To browse skills, use `@skill:`; selecting one inserts `/skill` for DSH's native skill handling.
184
245
 
185
246
  <p align="center"><img src="./images/at-skills.png" alt="Browse DSH skills from the @ menu" width="800" /></p>
186
247
 
187
248
  #### 📁 @Files and folders — workspace files and directories
188
249
 
189
- Type `@files:` in the input box to browse files and folders through DSH's official file-reference Remote.
250
+ Type `@file:` in the input box to browse files and folders through DSH's official file-reference Remote.
190
251
 
191
252
  <p align="center"><img src="./images/at-files.png" alt="Browse workspace files and folders from the @ menu" width="800" /></p>
192
253
 
193
254
  **Features:**
255
+
194
256
  - Uses the official `@path` / `@"path with spaces"` grammar and canonical file candidate service
195
- - Files become native atomic references; selecting a directory keeps the path editable and continues completion
196
- - The plugin no longer creates or parses a custom `dsh-file:` scheme
257
+ - Files and folders become native references; press `Tab` on a folder to browse inside it, or `Enter` to insert it
197
258
 
198
259
  #### 💬 @DSH sessions — DSH session history
199
260
 
200
- Type `@sessions:` to browse DSH sessions through the official session-reference Remote.
261
+ Type `@session:` to browse DSH sessions through the official session-reference Remote.
201
262
 
202
263
  <p align="center"><img src="./images/at-sessions.png" alt="Browse DSH sessions from the @ menu" width="800" /></p>
203
264
 
@@ -205,35 +266,64 @@ Selected sessions use DSH's canonical `dsh-session:` mention and native session
205
266
 
206
267
  #### 🖥️ @Local agent conversations — transcripts from local agent CLIs
207
268
 
208
- Type `@agents:` to search and reference conversations saved by other local agent tools.
269
+ Type `@agent:` to search and reference conversations saved by other local agent tools.
270
+
271
+ All 29 sources use bundled read-only scanners and parsers derived from dsh-chat-import. Scanning and references work without installing Chat Import. Source switches, additional directories and workspace scope still apply; settings show source paths, counts and scan errors. Enter inserts a reference, including recoverable images through DSH attachments; viewing images requires a vision-capable model. Confirmed empty conversations are hidden; read errors remain visible. Local references now store a readable source, path and session ID; reselect references created with the old local URI protocol.
272
+
273
+ When you send local references, the plugin appends one aggregated background after each user message. The model reads `ref: {source, path, sessionId}` with a content `revision`. `reference_list` discovers local sessions; `reference_read` reads `messages`, `tools` or `images`; `reference_search` searches message/tool text; `reference_image` returns actual pixels.
274
+
275
+ Use `from` for both scope and starting position: `messages` uses `messageId`; `tools` uses `toolId` with an optional owning `messageId`; `images` uses `imageId` with an optional owning `messageId`. Copy the complete `next` object into `from` to continue. Long text uses a Unicode code-point `textOffset`, preserving every remaining character rather than keeping only the head and tail. Source-provided summaries use `role: "summary"`; source limitations use an English `notice`. Source content is never translated.
276
+
277
+ `reference-mention.maxTextBytes` caps all new reference contexts in one pre-step batch at 16 KiB by default; estimated remaining context can reduce it. `reference-tool.maxTextBytes` separately caps each local tool text result at 16 KiB. Unknown capacity leaves only bounded metadata and a notice; metadata that cannot fit fails explicitly. Previews contain a continuous recent suffix, with a continuation for an oversized final message. Images have a separate 10 MiB limit.
278
+
279
+ Every new read checks the enabled source, allowed real path and session identity; no per-session grant is needed for local references. After a version change, restart `reference_read` with the same `ref`, `part: "messages"`, and omit both `revision` and `from`. No full-text snapshots or cross-call parsed-body caches are saved. Other sources retain their existing URI-based protocol under `external_reference_list` and `external_reference_read`.
280
+
281
+ Import status, session import and handoff summaries use the optional Chat Import API. Install or upgrade the independent plugin from settings when needed; Reference Anything does not install it on startup. An unavailable API leaves import status unknown and does not stop local scanning or reference reading. Tab retains the configured import and summary actions and confirmation flow.
282
+
283
+ The scanner runs in a separate process and caches metadata for 30 seconds. Parsing a reference may still read its complete source before returning a page. Source code and icons retain their MIT licenses (see `vendor/chat-import-reader/` and `images/agents/LICENSE`). Maintainers update both snapshots with `npm run vendor:sync -- <built-dsh-chat-import-directory>`; see the vendor README for checks before shipping.
209
284
 
210
285
  <p align="center"><img src="./images/at-local-agents.png" alt="Browse other local agents' transcripts from the @ menu" width="800" /></p>
211
286
 
212
- **Supported agents:** Claude Code, Codex, Cursor, Qoder, Reasonix, OpenClaw, Kimi, Grok Build, Hermes, Gemini CLI, Pi, opencode, mimocode, and zcode.
287
+ **Supported sources:** Claude Code, Codex, Cursor, Gemini CLI, Antigravity, Reasonix, opencode, mimocode, zcode, Grok Build, OpenClaw, Pi, Hermes, Kimi, Kilo Code, Qoder, ChatGPT exports, WorkBuddy, Qwen Code, Continue, Cline, Goose, DSH 4, Zed, Crush, Teleagent, Trae Work, Vibe, and DSH.
213
288
 
214
289
  **Features:**
215
290
 
216
291
  - Automatically detects conversation history and shows the number found for each agent
217
292
  - Lets you enable agents independently or choose a custom history folder
218
293
  - Searches all detected conversations by default, with an option to limit results to the current workspace
219
- - Reads conversation content on demand; tool names are concise by default, with full details available when needed
294
+ - Automatically previews recent body text; reads numbered messages, associated tool details and images on demand
220
295
  - Supports agent-specific prefixes such as `@codex:`, `@claude-code:`, and `@gemini-cli:`
221
296
 
297
+ References read local history without modifying it. Import and handoff-summary actions are separate operations through Chat Import. Claude Code and Codex adapters have been checked against real transcripts; other formats are primarily fixture-tested and may vary by tool version. Database reads for opencode, mimocode, and zcode require `node:sqlite` in the DSH host runtime.
298
+
299
+ #### 🧩 @Local plugins — installed and configured plugins
300
+
301
+ Use `@plugin:` to find plugins. Settings can also show only running plugins or hide official DeepSeek plugins. Under **Settings → Reference Anything → General**, the **All local plugins** switch enables or disables this group immediately; the choice is saved. It is enabled by default, with six collapsed rows and a candidate cap of 50.
302
+
303
+ The list uses the active DSH loader's composed entries and lifecycle state, supplemented by declared profile bundles and installed packages with DSH bundle/client metadata. Ordinary dependencies are excluded. Running, disabled, and not-running states describe host entries; packages without a host entry are shown as not running. Selecting a plugin inserts its name and, when available, a native reference to its real local directory. File access still uses DSH's existing tools and permissions.
304
+
222
305
  #### 🌐 @External conversations — external conversation platforms
223
306
 
224
307
  Supports historical conversations from ChatGPT, Claude, Gemini, DeepSeek, Grok, and Kimi.
225
308
 
226
309
  <p align="center"><img src="./images/at-external-conversations.png" alt="Browse external conversations from the @ menu" width="800" /></p>
227
310
 
311
+ **Store full bodies locally** enables offline reading of synchronized text; it does not mean attachments are saved offline. Automatic and startup sync are off by default and can be enabled in Settings.
312
+
228
313
  **Platform filtering:**
314
+
229
315
  - Use `@chatgpt:cache` or `@claude:refactor` to filter a specific platform
230
316
  - Short aliases are also accepted, such as `@gpt:` and `@ds:`
231
317
  - Entering `@claude` alone lists recent conversations for that platform
232
318
 
233
319
  **Search capabilities:**
320
+
234
321
  - **Title match:** fuzzy search on conversation titles
322
+
235
323
  - **Content search:** available only in **Store full bodies locally** mode; if title matches are insufficient, synchronized bodies are searched and matching excerpts are shown in the candidate list
324
+
236
325
  - **Provider and account isolation:** history is maintained separately by Provider and account scope
326
+
237
327
  - `@` search uses the account scope cached by the latest sync and never probes the browser; after a sync observes an account switch, it exposes only that account while older rows remain available in conversation management for cleanup
238
328
 
239
329
  **Reference display:** after selection, the draft shows a native removable DSH reference with the Provider logo. Its stable serialized form is:
@@ -241,11 +331,11 @@ Supports historical conversations from ChatGPT, Claude, Gemini, DeepSeek, Grok,
241
331
  @[ChatGPT·Conversation title](dsh-ref:<opaque-base64url>)
242
332
  ```
243
333
 
244
- 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.
334
+ Opening the source URL happens only in the UI; the URL is never injected into model context. A Web conversation reference initially contains only a safe pointer; if the model needs the body, it calls `external_reference_read` on demand.
245
335
 
246
336
  #### ☁️ @Cloud drive files — files connected through OpenList
247
337
 
248
- Type `@drive:`, `@cloud:`, `@netdisk:`, or `@网盘` to browse folders and reference files from cloud drives connected through OpenList.
338
+ Type `@drive:` to browse folders and reference files from cloud drives connected through OpenList.
249
339
 
250
340
  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.
251
341
 
@@ -262,25 +352,24 @@ Common providers include OneDrive, Aliyun Drive, Baidu Netdisk, Quark, 115, 123,
262
352
  ---
263
353
 
264
354
  **General notes:**
265
- - Use `:` or `/` as the separator instead of a space: the `@` candidate token ends at a space, so `@chatgpt keyword` closes the menu as soon as you press the space. For multi-word searches, write `@cachedesign` or `@cache-design`.
355
+
356
+ - Use `:` after a group shortcut instead of a space: the `@` candidate token ends at a space, so `@chatgpt keyword` closes the menu as soon as you press the space. For multi-word searches, write `@cachedesign` or `@cache-design`.
266
357
  - Without a type prefix, all groups are searched at once.
267
358
  - Commands and Skills are handed back to DSH's native slash-command handling after selection; the native `/` panel remains available.
268
- - Switching the picker back to DSH's official file/session list hides every plugin-owned group, including `Local agent conversations` and `Cloud drive files`. The host source stays registered, so an already-inserted reference still expands and `reference_read` still works; only the menu entry is gone until you switch back.
359
+ - Switching the picker back to DSH's official file/session list hides every plugin-owned group, including `Local agent conversations` and `Cloud drive files`. The host source stays registered, so an already-inserted reference still expands and `external_reference_read` still works; only the menu entry is gone until you switch back.
269
360
 
270
361
  ## 🔄 How External Conversation References Work
271
362
 
272
363
  ```text
273
- DSH Web @Conversations
364
+ DSH Web / Desktop @chat:
274
365
  ↕ Host Remote
275
- DSH Host + reference_anything local mirror
366
+ DSH Host + reference_anything index / optional body mirror
276
367
  ↕ execFile(opencli, argv)
277
368
  opencli-plugin-dsh-chat-history
278
369
  ↕ OpenCLI daemon + official Browser Bridge
279
370
  ChatGPT / Claude / Gemini / DeepSeek / Grok / Kimi
280
371
  ```
281
372
 
282
- This does not include the legacy standalone DeepSeek CDP / `--remote-debugging-port` collector. All six platforms use the OpenCLI Provider adapter path, avoiding duplicate browser-reading implementations.
283
-
284
373
  ### 🤖 Model-facing Protocol
285
374
 
286
375
  A reference produces an untrusted-data envelope alongside the current user request. The initial envelope contains only pointers and never the conversation body:
@@ -307,11 +396,11 @@ A reference produces an untrusted-data envelope alongside the current user reque
307
396
  }
308
397
  ```
309
398
 
310
- - The agent calls `reference_read({ uri, limit, cursor })` only when it needs the body. Turns in each page are in chronological order, and pagination moves from newer pages toward older ones.
399
+ - The agent calls `external_reference_read({ uri, limit, cursor })` only when it needs the body. Turns in each page are in chronological order, and pagination moves from newer pages toward older ones.
311
400
  - For the initial `deferred=true` item, the first call passes only `uri` and does not send an empty `nextCursor`.
312
- - In offline-mirror mode, `reference_read` paginates over the current revision. In metadata-only mode, each read requests content from the Provider again and validates the cached account scope inside that same browser operation. Missing, account-mismatch, and fetch errors instruct the agent to ask for a Provider sync before retrying.
401
+ - In offline-mirror mode, `external_reference_read` paginates over the current revision. In metadata-only mode, each read requests content from the Provider again and validates the cached account scope inside that same browser operation. Missing, account-mismatch, and fetch errors instruct the agent to ask for a Provider sync before retrying.
313
402
  - `before` is kept only as a deprecated compatibility parameter and cannot be combined with `cursor`.
314
- - A mention or `reference_list` grants the current task permission to read that URI; unauthorized URIs are rejected.
403
+ - A mention or `external_reference_list` grants the current task permission to read that URI; unauthorized URIs are rejected.
315
404
  - Each conversation keeps only the latest revision. Cursors for older revisions expire after content changes.
316
405
  - `reference_attachment_read` validates the task grant and, for Web conversations, verifies that the active provider account still matches the account scope captured by sync. A mismatch is rejected with guidance to sync that provider and reselect the conversation.
317
406
  - Attachments are capped at 25 MiB while streaming. PNG, JPEG, WebP, and GIF may render inline; every other format, including SVG, is returned as an ordinary temporary file. Successful files expire after one hour, and failures or plugin disposal remove them immediately.
package/cordis.patch.yml CHANGED
@@ -6,20 +6,23 @@
6
6
  - id: ui-reference
7
7
  # Reference Anything re-registers Files and DSH sessions as two independent
8
8
  # sources over the same official Remotes. Disabling only this Client source
9
- # keeps the official file/session services and canonical mention semantics.
9
+ # keeps the official file/session services. RA also owns the native
10
+ # "reference" codec and the newer Host's file/folder message renderers.
10
11
  disabled: true
11
12
 
12
13
  - insert:
14
+ - id: reference-chat-import-runtime
15
+ name: 'dsh-reference-anything/chat-import-runtime'
16
+
13
17
  # The registry every source registers into.
14
18
  - id: references
15
19
  name: 'dsh-reference-anything'
16
20
  config:
17
21
  listLimit: 20
18
22
 
19
- # Expands plugin-owned `@[label](dsh-ref:…)` mentions into untrusted
20
- # metadata on every surface. Native file and `dsh-session:` references stay
21
- # with DSH's official services. External transcripts are not prefetched;
22
- # the agent calls reference_read only when the current task needs one.
23
+ # Local Agent mentions receive bounded body previews before the model runs.
24
+ # Other external sources retain deferred reading. Native file and
25
+ # `dsh-session:` references stay with DSH's official services.
23
26
  - id: reference-mention
24
27
  name: 'dsh-reference-anything/reference'
25
28
  config:
@@ -76,9 +79,9 @@
76
79
  # OpenList is inert until a connection is configured in the Cloud
77
80
  # drives settings section; no account secret is stored in this patch.
78
81
  drives: ['openlist']
79
- # Where OpenList listing starts when `roots` has no explicit entry.
80
- # Keep it empty to show the OpenList root.
81
- root: ''
82
+ # Where OpenList listing starts when `roots` has no explicit entry.
83
+ # Keep it empty to show the OpenList root.
84
+ root: ''
82
85
  # Optional OpenList root, for example {openlist: '/notes'}.
83
86
  roots: {}
84
87
  listTtlMs: 30000
@@ -90,9 +93,8 @@
90
93
  maxReadTurns: 20
91
94
  blockChars: 4000
92
95
 
93
- # Transcripts other coding agents leave on disk, listed by title and read a
94
- # window at a time. Reading one needs a per-task grant: these are other
95
- # sessions' conversations, so the model may only open what its user named.
96
+ # Local transcripts are read only from enabled sources and allowed roots;
97
+ # no per-task grant. Every read rechecks the current source policy.
96
98
  - id: reference-local-agent
97
99
  name: 'dsh-reference-anything/local-agent'
98
100
  config:
@@ -106,9 +108,9 @@
106
108
  'kimi', 'grokbuild', 'hermes', 'gemini-cli', 'pi',
107
109
  'opencode', 'mimocode', 'zcode']
108
110
  extraRoots: []
109
- # The @ menu is a cross-project history picker; the per-Agent enable
110
- # switches remain the explicit visibility boundary.
111
- scope: 'all'
111
+ # The @ menu is a cross-project history picker; the per-Agent enable
112
+ # switches remain the explicit visibility boundary.
113
+ scope: 'all'
112
114
  maxTranscripts: 200
113
115
  maxReadTurns: 20
114
116
  maxScanBytes: 33554432
@@ -118,7 +120,7 @@
118
120
  maxLineBytes: 1048576
119
121
  directoryTtlMs: 5000
120
122
  includeThinking: false
121
- toolCalls: 'full'
123
+ toolCalls: 'full'
122
124
  includeSidechains: false
123
125
  stripEnvironmentPreamble: true
124
126
  # The last three formats keep every conversation in one SQLite database
@@ -0,0 +1,22 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 Nwflower
4
+ Copyright (c) 2026 Scarlett
5
+
6
+ Permission is hereby granted, free of charge, to any person obtaining a copy
7
+ of this software and associated documentation files (the "Software"), to deal
8
+ in the Software without restriction, including without limitation the rights
9
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
10
+ copies of the Software, and to permit persons to whom the Software is
11
+ furnished to do so, subject to the following conditions:
12
+
13
+ The above copyright notice and this permission notice shall be included in all
14
+ copies or substantial portions of the Software.
15
+
16
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
19
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
20
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
21
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
22
+ SOFTWARE.
@@ -0,0 +1,3 @@
1
+ Agent icons copied unchanged from https://github.com/Nwflower/dsh-chat-import/tree/dbd03e1dfeaffea980458df1afc4ef899af9a2a4/assets/agents.
2
+
3
+ MIT license: see LICENSE in this directory. DSH4 reuses dsh.svg.
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="-4 -4 32 32" width="48" height="48"><rect x="-4" y="-4" width="32" height="32" rx="6" fill="#fff"/><path d="M12 3.2 2.6 21.9h3.2l2.03-4.1h8.34l2.03 4.1h3.2L12 3.2zm0 4.6 2.72 5.5H9.28L12 7.8z" fill="#1A73E8"/></svg>
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="-4 -4 32 32" width="48" height="48"><rect x="-4" y="-4" width="32" height="32" rx="6" fill="#fff"/><g fill="#000000"><path d="M9.205 8.658v-2.26c0-.19.072-.333.238-.428l4.543-2.616c.619-.357 1.356-.523 2.117-.523 2.854 0 4.662 2.212 4.662 4.566 0 .167 0 .357-.024.547l-4.71-2.759a.797.797 0 00-.856 0l-5.97 3.473zm10.609 8.8V12.06c0-.333-.143-.57-.429-.737l-5.97-3.473 1.95-1.118a.433.433 0 01.476 0l4.543 2.617c1.309.76 2.189 2.378 2.189 3.948 0 1.808-1.07 3.473-2.76 4.163zM7.802 12.703l-1.95-1.142c-.167-.095-.239-.238-.239-.428V5.899c0-2.545 1.95-4.472 4.591-4.472 1 0 1.927.333 2.712.928L8.23 5.067c-.285.166-.428.404-.428.737v6.898zM12 15.128l-2.795-1.57v-3.33L12 8.658l2.795 1.57v3.33L12 15.128zm1.796 7.23c-1 0-1.927-.332-2.712-.927l4.686-2.712c.285-.166.428-.404.428-.737v-6.898l1.974 1.142c.167.095.238.238.238.428v5.233c0 2.545-1.974 4.472-4.614 4.472zm-5.637-5.303l-4.544-2.617c-1.308-.761-2.188-2.378-2.188-3.948A4.482 4.482 0 014.21 6.327v5.423c0 .333.143.571.428.738l5.947 3.449-1.95 1.118a.432.432 0 01-.476 0zm-.262 3.9c-2.688 0-4.662-2.021-4.662-4.519 0-.19.024-.38.047-.57l4.686 2.71c.286.167.571.167.856 0l5.97-3.448v2.26c0 .19-.07.333-.237.428l-4.543 2.616c-.619.357-1.356.523-2.117.523zm5.899 2.83a5.947 5.947 0 005.827-4.756C22.287 18.339 24 15.84 24 13.296c0-1.665-.713-3.282-1.998-4.448.119-.5.19-.999.19-1.498 0-3.401-2.759-5.947-5.946-5.947-.642 0-1.26.095-1.88.31A5.962 5.962 0 0010.205 0a5.947 5.947 0 00-5.827 4.757C1.713 5.447 0 7.945 0 10.49c0 1.666.713 3.283 1.998 4.448-.119.5-.19 1-.19 1.499 0 3.401 2.759 5.946 5.946 5.946.642 0 1.26-.095 1.88-.309a5.96 5.96 0 004.162 1.713z"></path></g></svg>
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="-4 -4 32 32" width="48" height="48"><rect x="-4" y="-4" width="32" height="32" rx="6" fill="#fff"/><path clip-rule="evenodd" d="M20.998 10.949H24v3.102h-3v3.028h-1.487V20H18v-2.921h-1.487V20H15v-2.921H9V20H7.488v-2.921H6V20H4.487v-2.921H3V14.05H0V10.95h3V5h17.998v5.949zM6 10.949h1.488V8.102H6v2.847zm10.51 0H18V8.102h-1.49v2.847z" fill="#D97757" fill-rule="evenodd"/></svg>
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="-4 -4 32 32" width="48" height="48"><rect x="-4" y="-4" width="32" height="32" rx="6" fill="#fff"/><text x="12" y="12" text-anchor="middle" dominant-baseline="central" font-family="sans-serif" font-size="13" font-weight="700" letter-spacing="-0.02em" fill="#0E1116">Cl</text></svg>
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="-4 -4 32 32" width="48" height="48"><rect x="-4" y="-4" width="32" height="32" rx="6" fill="#fff"/><path d="M9.064 3.344a4.578 4.578 0 012.285-.312c1 .115 1.891.54 2.673 1.275.01.01.024.017.037.021a.09.09 0 00.043 0 4.55 4.55 0 013.046.275l.047.022.116.057a4.581 4.581 0 012.188 2.399c.209.51.313 1.041.315 1.595a4.24 4.24 0 01-.134 1.223.123.123 0 00.03.115c.594.607.988 1.33 1.183 2.17.289 1.425-.007 2.71-.887 3.854l-.136.166a4.548 4.548 0 01-2.201 1.388.123.123 0 00-.081.076c-.191.551-.383 1.023-.74 1.494-.9 1.187-2.222 1.846-3.711 1.838-1.187-.006-2.239-.44-3.157-1.302a.107.107 0 00-.105-.024c-.388.125-.78.143-1.204.138a4.441 4.441 0 01-1.945-.466 4.544 4.544 0 01-1.61-1.335c-.152-.202-.303-.392-.414-.617a5.81 5.81 0 01-.37-.961 4.582 4.582 0 01-.014-2.298.124.124 0 00.006-.056.085.085 0 00-.027-.048 4.467 4.467 0 01-1.034-1.651 3.896 3.896 0 01-.251-1.192 5.189 5.189 0 01.141-1.6c.337-1.112.982-1.985 1.933-2.618.212-.141.413-.251.601-.33.215-.089.43-.164.646-.227a.098.098 0 00.065-.066 4.51 4.51 0 01.829-1.615 4.535 4.535 0 011.837-1.388zm3.482 10.565a.637.637 0 000 1.272h3.636a.637.637 0 100-1.272h-3.636zM8.462 9.23a.637.637 0 00-1.106.631l1.272 2.224-1.266 2.136a.636.636 0 101.095.649l1.454-2.455a.636.636 0 00.005-.64L8.462 9.23z" fill="url(#dsh-import-grad-codex)"/><defs><linearGradient id="dsh-import-grad-codex" x1="12" x2="12" y1="3" y2="21" gradientUnits="userSpaceOnUse"><stop stop-color="#B1A7FF"/><stop offset=".5" stop-color="#7A9DFF"/><stop offset="1" stop-color="#3941FF"/></linearGradient></defs></svg>