dsh-reference-anything 0.4.4 → 0.5.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.
Files changed (119) hide show
  1. package/NOTICE.md +58 -0
  2. package/README.md +151 -64
  3. package/cordis.patch.yml +19 -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 -34024
  46. package/lib/contract.d.ts +50 -3
  47. package/lib/contract.js +14 -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 +55 -11
  52. package/lib/host.js +200 -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-reference-tools.d.ts +4 -0
  62. package/lib/local-reference-tools.js +195 -0
  63. package/lib/local-reference.d.ts +118 -0
  64. package/lib/local-reference.js +289 -0
  65. package/lib/opencli.d.ts +5 -2
  66. package/lib/opencli.js +88 -64
  67. package/lib/reference.d.ts +5 -3
  68. package/lib/reference.js +167 -72
  69. package/lib/render.d.ts +1 -1
  70. package/lib/render.js +4 -4
  71. package/lib/retain.d.ts +14 -0
  72. package/lib/retain.js +1 -1
  73. package/lib/serialize.d.ts +1 -1
  74. package/lib/serialize.js +2 -2
  75. package/lib/sources/local-agent/index.d.ts +23 -16
  76. package/lib/sources/local-agent/index.js +101 -15
  77. package/lib/store/spec.d.ts +40 -7
  78. package/lib/sync/index.js +4 -0
  79. package/lib/tool.d.ts +2 -0
  80. package/lib/tool.js +36 -41
  81. package/lib/typert.js +2 -0
  82. package/lib/types.d.ts +2 -0
  83. package/lib/update.d.ts +2 -0
  84. package/lib/update.js +12 -0
  85. package/lib/uri-codec.d.ts +1 -0
  86. package/lib/uri-codec.js +64 -3
  87. package/lib/uri.d.ts +1 -10
  88. package/lib/uri.js +16 -5
  89. package/lib/wire.d.ts +59 -0
  90. package/lib/wire.js +13 -4
  91. package/opencli-plugin/common.js +5 -3
  92. package/opencli-plugin/opencli-plugin.json +1 -1
  93. package/opencli-plugin/package.json +1 -1
  94. package/package.json +28 -4
  95. package/release-notes/0.4.4/commands.png +0 -0
  96. package/release-notes/0.4.4/demos/agent-import.gif +0 -0
  97. package/release-notes/0.4.4/demos/chat-import-upgrade.gif +0 -0
  98. package/release-notes/0.4.4/demos/folders.gif +0 -0
  99. package/release-notes/0.4.4/demos/local-plugins.gif +0 -0
  100. package/release-notes/0.4.4/demos/shortcuts.gif +0 -0
  101. package/release-notes/0.4.4/features.json +36 -0
  102. package/release-notes/0.4.4/files.png +0 -0
  103. package/release-notes/0.5.0/demos/agent-import.gif +0 -0
  104. package/release-notes/0.5.0/demos/chat-import-upgrade.gif +0 -0
  105. package/release-notes/0.5.0/demos/folders.gif +0 -0
  106. package/release-notes/0.5.0/demos/local-plugins.gif +0 -0
  107. package/release-notes/0.5.0/demos/local-references.gif +0 -0
  108. package/release-notes/0.5.0/demos/shortcuts.gif +0 -0
  109. package/release-notes/0.5.0/features.json +65 -0
  110. package/release-notes/README.md +38 -0
  111. package/vendor/chat-import-reader/LICENSE +22 -0
  112. package/vendor/chat-import-reader/LICENSE.fzstd +21 -0
  113. package/vendor/chat-import-reader/README.md +48 -0
  114. package/vendor/chat-import-reader/availability-worker.mjs +114 -0
  115. package/vendor/chat-import-reader/parsers.d.mts +6 -0
  116. package/vendor/chat-import-reader/parsers.mjs +11168 -0
  117. package/vendor/chat-import-reader/scan-worker.mjs +7 -0
  118. package/vendor/chat-import-reader/scanners.mjs +4286 -0
  119. 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,59 @@ 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). See also the [v0.5.1 compatibility fixes](./docs/release-v0.5.1.md).
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
+
78
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.
79
134
 
80
135
  - **2026-10-06 · v0.4.3** — Reference Anything now supports DSH Desktop! Enjoy a refreshed and optimized settings page!
@@ -88,7 +143,7 @@ Type `@`, search across enabled sources, and insert the selected reference into
88
143
  ## 🧭 Roadmap
89
144
 
90
145
  - [x] Support referencing historical conversations from other local agents
91
- - [ ] Support continuing referenced local-agent sessions
146
+ - [x] Support continuing referenced local-agent sessions (Continue Session)
92
147
  - [x] Reference cloud-drive files through OpenList
93
148
  - [ ] Manage cloud-drive files inside the plugin (in progress; current access is read-only)
94
149
  - [ ] Support more keyword matching rules, including blacklists and whitelists, especially for file search
@@ -103,72 +158,82 @@ Type `@`, search across enabled sources, and insert the selected reference into
103
158
 
104
159
  ## 📦 Installation
105
160
 
106
- Prerequisites:
161
+ The released version is **v0.5.1**, with a declared minimum DSH SDK version of **`0.2.0-rc.2`**.
107
162
 
108
- - `dsh` is installed and running; automatic OpenCLI installation requires the `npm` bundled with Node.js.
109
- - The target platforms are already logged in under the selected Chrome Profile.
163
+ ### Official desktop app
110
164
 
111
- Install the stable `0.3.x` line for the current stable DSH SDK:
165
+ Reference Anything handles native references by default. If you explicitly enable the official `ui-reference` plugin in your profile, restart DSH and reload the page: the official plugin handles native references, and RA hides its duplicate file and DSH session candidates. Previously inserted RA file/session references still work; other RA sources are unaffected.
112
166
 
113
- ```powershell
114
- dsh plugin --profile web add dsh-reference-anything@latest
115
- ```
167
+ Official file and session sections follow RA's visibility switches and independent ordering, and retain its collapsed item counts and expand/collapse actions, including arrow-key, Enter, and Tab navigation. The official plugin still handles reference insertion, copying, and previews. Select “No collapse (native)” to show the full list; unsupported candidate formats also fall back to the full list.
116
168
 
117
- Install `v0.4.4` on DSH `>=0.2.0-rc.2`:
169
+ After Tab enters a file directory, RA pauses searches in other sources and the menu shows only files. Returning to the root restores other sources. Expand/collapse actions use gray text.
118
170
 
119
- ```powershell
120
- dsh plugin --profile web add dsh-reference-anything@alpha
121
- ```
171
+ 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**.
122
172
 
123
- After the DSH alpha API stabilizes and the migration is verified, the `alpha` line will be promoted to `latest` and become the default installation.
173
+ 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).
124
174
 
125
- To install the stable source locally with DSH `v0.1.0-rc.8 ~ v0.1.1-rc.2`:
175
+ ### DSH Market
176
+
177
+ 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:
126
178
 
127
179
  ```powershell
128
- git switch main
129
- pnpm install
130
- npm run check
131
- dsh plugin --profile web add .
180
+ dsh plugin --profile web add dshmarket
132
181
  ```
133
182
 
134
- To install the alpha source locally with DSH `v0.2.0-rc.2` or newer:
183
+ ### Web CLI
135
184
 
136
185
  ```powershell
137
- git switch alpha
138
- pnpm install
139
- npm run check
140
- dsh plugin --profile web add .
186
+ dsh plugin --profile web add dsh-reference-anything
141
187
  ```
142
188
 
143
- > [!NOTE]
144
- > To restore DSH's original `@` menu appearance, simply uninstall this plugin.
189
+ The installed version depends on the selected channel; this README describes v0.5.1.
190
+
191
+ ### Optional: Connect web AI chats
192
+
193
+ 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.
145
194
 
146
- 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.
195
+ 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.
147
196
 
148
- You can also install OpenCLI and the conversation adapter manually, then start Browser Bridge:
197
+ For a custom global OpenCLI, install it manually and enter its full executable path in settings. The default opencli always uses the plugin dependency:
149
198
 
150
199
  ```powershell
151
- npm install --global "@jackwener/opencli@>=1.8.6"
200
+ npm install --global "@jackwener/opencli@2.0.0"
152
201
  opencli plugin install file:///C:/path/to/dsh-reference-anything/opencli-plugin
153
202
  opencli daemon restart
154
203
  ```
155
204
 
156
- 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.
205
+ 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.
157
206
 
158
207
  ## 🚀 Usage
159
208
 
160
209
  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.
161
210
 
162
- 1. Open `Settings → Reference Anything` in DSH Web.
163
- 2. Under **Availability check**, confirm that OpenCLI, Browser Bridge, the browser extension, and the conversation adapter are ready.
164
- 3. Under **Web AI conversation sync settings**, choose a browser profile, storage mode, sync mode, and history range, then start syncing.
165
- 4. Type `@` in the input box and choose from the `Commands`, `Skills`, `Files and folders`, `DSH sessions`, `Local agent conversations`, `External conversations`, `Cloud drive files`, or `All local plugins` groups.
166
- 5. Type a keyword to filter candidates, for example `@cache-design`.
211
+ 1. Type `@` to browse sources, or enter a keyword such as `@cache-design`.
212
+ 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.
213
+ 3. Add your request and send it: “Use this Codex conversation and project folder to check whether the earlier plan has been implemented.”
214
+
215
+ 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.
167
216
 
168
217
  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.
169
218
 
170
- > [!WARNING]
171
- > 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.
219
+ > [!NOTE]
220
+ > 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.
221
+
222
+ ### Shortcut examples
223
+
224
+ These examples use the current defaults. After changing shortcuts, use the values shown in Settings.
225
+
226
+ | Input | What it finds |
227
+ | --- | --- |
228
+ | `@file:README` | Workspace files and folders |
229
+ | `@session:` | DSH session history |
230
+ | `@agent:` / `@codex:` | Local agent history / Codex only |
231
+ | `@chat:` / `@chatgpt:cache` | Web chats / matching ChatGPT chats |
232
+ | `@drive:` | Connected cloud drives |
233
+ | `@plugin:` | Local DSH plugins |
234
+ | `@command:` / `@skill:` | Commands / Skills |
235
+
236
+ 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.
172
237
 
173
238
  ### 🧩 One `@` menu, multiple sources
174
239
 
@@ -176,30 +241,30 @@ The `@` menu contains eight groups: `Commands`, `Skills`, `Files and folders`, `
176
241
 
177
242
  #### ⌨️ @Commands — DSH native commands
178
243
 
179
- To browse commands, use `@commands`; selecting one hands `/command` back to DSH's native slash pipeline.
244
+ To browse commands, use `@command:`; selecting one hands `/command` back to DSH's native slash pipeline.
180
245
 
181
246
  <p align="center"><img src="./images/at-commands.png" alt="Browse DSH commands from the @ menu" width="800" /></p>
182
247
 
183
248
  #### 🛠️ @Skills — DSH skill library
184
249
 
185
- To browse skills, use `@skills:`; selecting one inserts `/skill` for DSH's native skill handling.
250
+ To browse skills, use `@skill:`; selecting one inserts `/skill` for DSH's native skill handling.
186
251
 
187
252
  <p align="center"><img src="./images/at-skills.png" alt="Browse DSH skills from the @ menu" width="800" /></p>
188
253
 
189
254
  #### 📁 @Files and folders — workspace files and directories
190
255
 
191
- Type `@files:` in the input box to browse files and folders through DSH's official file-reference Remote.
256
+ Type `@file:` in the input box to browse files and folders through DSH's official file-reference Remote.
192
257
 
193
258
  <p align="center"><img src="./images/at-files.png" alt="Browse workspace files and folders from the @ menu" width="800" /></p>
194
259
 
195
260
  **Features:**
261
+
196
262
  - Uses the official `@path` / `@"path with spaces"` grammar and canonical file candidate service
197
- - Files become native atomic references; selecting a directory keeps the path editable and continues completion
198
- - The plugin no longer creates or parses a custom `dsh-file:` scheme
263
+ - Files and folders become native references; press `Tab` on a folder to browse inside it, or `Enter` to insert it
199
264
 
200
265
  #### 💬 @DSH sessions — DSH session history
201
266
 
202
- Type `@sessions:` to browse DSH sessions through the official session-reference Remote.
267
+ Type `@session:` to browse DSH sessions through the official session-reference Remote.
203
268
 
204
269
  <p align="center"><img src="./images/at-sessions.png" alt="Browse DSH sessions from the @ menu" width="800" /></p>
205
270
 
@@ -207,23 +272,39 @@ Selected sessions use DSH's canonical `dsh-session:` mention and native session
207
272
 
208
273
  #### 🖥️ @Local agent conversations — transcripts from local agent CLIs
209
274
 
210
- Type `@agents:` to search and reference conversations saved by other local agent tools.
275
+ Type `@agent:` to search and reference conversations saved by other local agent tools.
276
+
277
+ 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.
278
+
279
+ 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.
280
+
281
+ 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.
282
+
283
+ `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.
284
+
285
+ 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`.
286
+
287
+ 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.
288
+
289
+ 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.
211
290
 
212
291
  <p align="center"><img src="./images/at-local-agents.png" alt="Browse other local agents' transcripts from the @ menu" width="800" /></p>
213
292
 
214
- **Supported agents:** Claude Code, Codex, Cursor, Qoder, Reasonix, OpenClaw, Kimi, Grok Build, Hermes, Gemini CLI, Pi, opencode, mimocode, and zcode.
293
+ **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.
215
294
 
216
295
  **Features:**
217
296
 
218
297
  - Automatically detects conversation history and shows the number found for each agent
219
298
  - Lets you enable agents independently or choose a custom history folder
220
299
  - Searches all detected conversations by default, with an option to limit results to the current workspace
221
- - Reads conversation content on demand; tool names are concise by default, with full details available when needed
300
+ - Automatically previews recent body text; reads numbered messages, associated tool details and images on demand
222
301
  - Supports agent-specific prefixes such as `@codex:`, `@claude-code:`, and `@gemini-cli:`
223
302
 
303
+ 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.
304
+
224
305
  #### 🧩 @Local plugins — installed and configured plugins
225
306
 
226
- Use `@plugin:`, `@plugins:`, `@插件:`, or `@本地插件:` to find 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.
307
+ 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.
227
308
 
228
309
  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.
229
310
 
@@ -233,15 +314,22 @@ Supports historical conversations from ChatGPT, Claude, Gemini, DeepSeek, Grok,
233
314
 
234
315
  <p align="center"><img src="./images/at-external-conversations.png" alt="Browse external conversations from the @ menu" width="800" /></p>
235
316
 
317
+ **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.
318
+
236
319
  **Platform filtering:**
320
+
237
321
  - Use `@chatgpt:cache` or `@claude:refactor` to filter a specific platform
238
322
  - Short aliases are also accepted, such as `@gpt:` and `@ds:`
239
323
  - Entering `@claude` alone lists recent conversations for that platform
240
324
 
241
325
  **Search capabilities:**
326
+
242
327
  - **Title match:** fuzzy search on conversation titles
328
+
243
329
  - **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
330
+
244
331
  - **Provider and account isolation:** history is maintained separately by Provider and account scope
332
+
245
333
  - `@` 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
246
334
 
247
335
  **Reference display:** after selection, the draft shows a native removable DSH reference with the Provider logo. Its stable serialized form is:
@@ -249,11 +337,11 @@ Supports historical conversations from ChatGPT, Claude, Gemini, DeepSeek, Grok,
249
337
  @[ChatGPT·Conversation title](dsh-ref:<opaque-base64url>)
250
338
  ```
251
339
 
252
- 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.
340
+ 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.
253
341
 
254
342
  #### ☁️ @Cloud drive files — files connected through OpenList
255
343
 
256
- Type `@drive:`, `@cloud:`, `@netdisk:`, or `@网盘` to browse folders and reference files from cloud drives connected through OpenList.
344
+ Type `@drive:` to browse folders and reference files from cloud drives connected through OpenList.
257
345
 
258
346
  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.
259
347
 
@@ -270,25 +358,24 @@ Common providers include OneDrive, Aliyun Drive, Baidu Netdisk, Quark, 115, 123,
270
358
  ---
271
359
 
272
360
  **General notes:**
273
- - 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`.
361
+
362
+ - 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`.
274
363
  - Without a type prefix, all groups are searched at once.
275
364
  - Commands and Skills are handed back to DSH's native slash-command handling after selection; the native `/` panel remains available.
276
- - 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.
365
+ - 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.
277
366
 
278
367
  ## 🔄 How External Conversation References Work
279
368
 
280
369
  ```text
281
- DSH Web @Conversations
370
+ DSH Web / Desktop @chat:
282
371
  ↕ Host Remote
283
- DSH Host + reference_anything local mirror
372
+ DSH Host + reference_anything index / optional body mirror
284
373
  ↕ execFile(opencli, argv)
285
374
  opencli-plugin-dsh-chat-history
286
375
  ↕ OpenCLI daemon + official Browser Bridge
287
376
  ChatGPT / Claude / Gemini / DeepSeek / Grok / Kimi
288
377
  ```
289
378
 
290
- 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.
291
-
292
379
  ### 🤖 Model-facing Protocol
293
380
 
294
381
  A reference produces an untrusted-data envelope alongside the current user request. The initial envelope contains only pointers and never the conversation body:
@@ -315,11 +402,11 @@ A reference produces an untrusted-data envelope alongside the current user reque
315
402
  }
316
403
  ```
317
404
 
318
- - 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.
405
+ - 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.
319
406
  - For the initial `deferred=true` item, the first call passes only `uri` and does not send an empty `nextCursor`.
320
- - 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.
407
+ - 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.
321
408
  - `before` is kept only as a deprecated compatibility parameter and cannot be combined with `cursor`.
322
- - A mention or `reference_list` grants the current task permission to read that URI; unauthorized URIs are rejected.
409
+ - A mention or `external_reference_list` grants the current task permission to read that URI; unauthorized URIs are rejected.
323
410
  - Each conversation keeps only the latest revision. Cursors for older revisions expire after content changes.
324
411
  - `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.
325
412
  - 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,25 @@
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.
11
+ # If a profile explicitly enables ui-reference, RA defers those registrations
12
+ # and hides its duplicate file/session candidates (saved RA chips still work).
10
13
  disabled: true
11
14
 
12
15
  - insert:
16
+ - id: reference-chat-import-runtime
17
+ name: 'dsh-reference-anything/chat-import-runtime'
18
+
13
19
  # The registry every source registers into.
14
20
  - id: references
15
21
  name: 'dsh-reference-anything'
16
22
  config:
17
23
  listLimit: 20
18
24
 
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.
25
+ # Local Agent mentions receive bounded body previews before the model runs.
26
+ # Other external sources retain deferred reading. Native file and
27
+ # `dsh-session:` references stay with DSH's official services.
23
28
  - id: reference-mention
24
29
  name: 'dsh-reference-anything/reference'
25
30
  config:
@@ -76,9 +81,9 @@
76
81
  # OpenList is inert until a connection is configured in the Cloud
77
82
  # drives settings section; no account secret is stored in this patch.
78
83
  drives: ['openlist']
79
- # Where OpenList listing starts when `roots` has no explicit entry.
80
- # Keep it empty to show the OpenList root.
81
- root: ''
84
+ # Where OpenList listing starts when `roots` has no explicit entry.
85
+ # Keep it empty to show the OpenList root.
86
+ root: ''
82
87
  # Optional OpenList root, for example {openlist: '/notes'}.
83
88
  roots: {}
84
89
  listTtlMs: 30000
@@ -90,9 +95,8 @@
90
95
  maxReadTurns: 20
91
96
  blockChars: 4000
92
97
 
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.
98
+ # Local transcripts are read only from enabled sources and allowed roots;
99
+ # no per-task grant. Every read rechecks the current source policy.
96
100
  - id: reference-local-agent
97
101
  name: 'dsh-reference-anything/local-agent'
98
102
  config:
@@ -106,9 +110,9 @@
106
110
  'kimi', 'grokbuild', 'hermes', 'gemini-cli', 'pi',
107
111
  'opencode', 'mimocode', 'zcode']
108
112
  extraRoots: []
109
- # The @ menu is a cross-project history picker; the per-Agent enable
110
- # switches remain the explicit visibility boundary.
111
- scope: 'all'
113
+ # The @ menu is a cross-project history picker; the per-Agent enable
114
+ # switches remain the explicit visibility boundary.
115
+ scope: 'all'
112
116
  maxTranscripts: 200
113
117
  maxReadTurns: 20
114
118
  maxScanBytes: 33554432
@@ -118,7 +122,7 @@
118
122
  maxLineBytes: 1048576
119
123
  directoryTtlMs: 5000
120
124
  includeThinking: false
121
- toolCalls: 'full'
125
+ toolCalls: 'full'
122
126
  includeSidechains: false
123
127
  stripEnvironmentPreamble: true
124
128
  # 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>
@@ -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="15" font-weight="700" letter-spacing="-0.02em" fill="#0E1116">C</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"/><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="#5A56E0">Cr</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="M22.106 5.68L12.5.135a.998.998 0 00-.998 0L1.893 5.68a.84.84 0 00-.419.726v11.186c0 .3.16.577.42.727l9.607 5.547a.999.999 0 00.998 0l9.608-5.547a.84.84 0 00.42-.727V6.407a.84.84 0 00-.42-.726zm-.603 1.176L12.228 22.92c-.063.108-.228.064-.228-.061V12.34a.59.59 0 00-.295-.51l-9.11-5.26c-.107-.062-.063-.228.062-.228h18.55c.264 0 .428.286.296.514z" fill="#111216"/></svg>