@adaptiqai/deepseek-harness 0.2.6 → 0.2.11
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +11 -9
- package/lib/client.js +4 -4
- package/lib/host.js +6123 -0
- package/lib/index.js +78 -4857
- package/lib/typert.host.js +54 -18
- package/lib/typert.remote-client.js +40 -18
- package/lib/types/client/Chips.d.ts +2 -0
- package/lib/types/client/Extras.d.ts +0 -6
- package/lib/types/client/Knowledge.d.ts +26 -0
- package/lib/types/client/Overlay.d.ts +13 -1
- package/lib/types/client/SettingsPage.d.ts +9 -0
- package/lib/types/client/Update.d.ts +48 -0
- package/lib/types/client/actions.d.ts +6 -0
- package/lib/types/client/attach.d.ts +62 -9
- package/lib/types/client/store.d.ts +2 -0
- package/lib/types/host/adapter.d.ts +22 -5
- package/lib/types/host/commands.d.ts +3 -0
- package/lib/types/host/controller.d.ts +6 -0
- package/lib/types/host/entry.d.ts +29 -0
- package/lib/types/host/index.d.ts +15 -1
- package/lib/types/host/relations.d.ts +23 -0
- package/lib/types/host/stream.d.ts +3 -1
- package/lib/types/host/tools.d.ts +1 -1
- package/lib/types/host/updater.d.ts +43 -0
- package/lib/types/host/wire.d.ts +31 -2
- package/package.json +3 -2
package/README.md
CHANGED
|
@@ -6,19 +6,19 @@ Use your AdaptiqAI workspace in DeepSeek Harness: every model your workspace has
|
|
|
6
6
|
|
|
7
7
|
## Install
|
|
8
8
|
|
|
9
|
+
Needs DeepSeek Harness 0.2.0-rc.2 or a later 0.2 release.
|
|
10
|
+
|
|
9
11
|
1. Open **Plugins** in the sidebar and choose **Add plugin**.
|
|
10
12
|
2. Enter the package — `@adaptiqai/deepseek-harness`, or the full path to a downloaded `adaptiqai-deepseek-harness-<version>.tgz` — and install it.
|
|
11
13
|
3. A welcome card asks you to **Connect AdaptiqAI**. Your browser opens; you sign in (or create an account with GitHub, Google or email) and approve, and the harness picks it up by itself.
|
|
12
14
|
4. A new account has no model yet: the same card shows the models on offer, with price, speed and memory. Choose one and how many lanes (conversations at once), then **Get access** and confirm in the browser. The model appears in the picker as soon as it is active.
|
|
13
15
|
|
|
14
|
-
|
|
16
|
+
In the DeepSeek Harness desktop app, use the Plugins page; it keeps its own profile, which the `dsh` command can't change. If you run `dsh web` from a terminal, the same install is:
|
|
15
17
|
|
|
16
18
|
```bash
|
|
17
19
|
dsh plugin --profile web add @adaptiqai/deepseek-harness
|
|
18
20
|
```
|
|
19
21
|
|
|
20
|
-
DeepSeek Harness 0.2.0-rc.2 or a later 0.2 release is required.
|
|
21
|
-
|
|
22
22
|
## What you get
|
|
23
23
|
|
|
24
24
|
**Your models, set up correctly.** The model picker gets an **AdaptiqAI** group with exactly the models your workspace has lanes on. Each one comes with its real context window, its output limit and its own thinking levels, all read from the server — nothing in the plugin names a model.
|
|
@@ -41,7 +41,7 @@ DeepSeek Harness 0.2.0-rc.2 or a later 0.2 release is required.
|
|
|
41
41
|
|
|
42
42
|
 
|
|
43
43
|
|
|
44
|
-
**Notices that say what to do.** If every lane is busy, the harness waits and retries by itself and tells you so. If the workspace has no lanes on a model, you get a **Get access** button. If memory is nearly full, you are told before it fills, with a way to clean up or continue privately. If your sign-in expires, you are asked to sign in again.
|
|
44
|
+
**Notices that say what to do.** If every lane is busy, the harness waits and retries by itself and tells you so. If the workspace has no lanes on a model, you get a **Get access** button. If memory is nearly full, you are told before it fills, with a way to clean up or continue privately. Where AdaptiqAI puts idle conversations to sleep to make room, one quiet line says so instead: nothing is deleted, and they wake when you use them. Then you are only told when nothing idle could sleep or your library is full, with a button to the console. If your sign-in expires, you are asked to sign in again.
|
|
45
45
|
|
|
46
46
|

|
|
47
47
|
|
|
@@ -51,16 +51,17 @@ DeepSeek Harness 0.2.0-rc.2 or a later 0.2 release is required.
|
|
|
51
51
|
|
|
52
52
|
 
|
|
53
53
|
|
|
54
|
-
**Conversations as knowledge.** Type `@` in a message and pick another conversation: if it is on the same model, it is added to this conversation from memory (the model does not read it again as text), and it stays added for later messages. The memory pill says what was added. Or open the memory pill and choose **Add**:
|
|
54
|
+
**Conversations as knowledge.** Type `@` in a message and pick another conversation: if it is on the same model, it is added to this conversation from memory (the model does not read it again as text), and it stays added for later messages. The memory pill says what was added. Or open the memory pill and choose **Add**: two tabs, **Knowledge** (your collections, newest first, the ones made in the last days marked *New*, the ones made for another model greyed with *Make available here*) and **Conversations** (recent ones on this model, named as in the sidebar); everything shows without typing, one click adds or removes. What a conversation uses shows as chips above the message box, × to stop using one, also before the first message. A private conversation adds nothing; a conversation you mention there is read as text.
|
|
55
55
|
|
|
56
56
|

|
|
57
57
|
|
|
58
|
-
**Agent tools.** Agents can find and attach knowledge (`adaptiq_knowledge`), check shared memory and offer clean-up options (`adaptiq_memory`), and save what they learned as a new collection (`adaptiq_create_knowledge`).
|
|
58
|
+
**Agent tools.** Agents can find and attach knowledge (`adaptiq_knowledge`), check shared memory and offer clean-up options (`adaptiq_memory`), and save what they learned as a new collection (`adaptiq_create_knowledge`). After reading a sizeable set of files, or when you say *remember*, *save*, *collection* or *NCM*, the agent searches your knowledge and offers to save the material as a collection; on your yes it creates it and confirms in one sentence, in your language. Its chip shows a quiet progress line while it compiles and a short notice says when it is ready. The agent never shows ids or technical status. If it saved something with a mistake, saving again corrects the same collection instead of making a second one, and it can take back a collection it made in this conversation in the last 15 minutes; it never deletes anything else. The whole journey, with what still needs the server, is in [docs/CONTEXT_MANAGEMENT.md](../../docs/CONTEXT_MANAGEMENT.md).
|
|
59
59
|
|
|
60
60
|
## How it works
|
|
61
61
|
|
|
62
62
|
- **Requests** go to the AdaptiqAI OpenAI-compatible API. Each request carries the harness conversation id (`X-Adaptiq-Session-Id`), so the server keeps one memory per conversation. Title requests carry no id, so they never fork a saved conversation.
|
|
63
|
-
- **
|
|
63
|
+
- **Subagents and teammates** also name the conversation that started them (`X-Adaptiq-Parent-Session-Id`), so the console shows them under it. A subagent is a `helper` of its parent; an Agent Teams teammate is a `track`, a line of work of its own (`X-Adaptiq-Session-Role`). A conversation you fork yourself names no parent.
|
|
64
|
+
- **No compaction.** AdaptiqAI keeps the full conversation, so the plugin reports the model's true context window and declines the harness's compaction requests — in Remember and in Private — with a plain explanation, said once rather than at every step. Nothing is ever summarised away, and nothing is sent to the server for it.
|
|
64
65
|
- **Thinking levels** come from each model's capability card (`adaptiq-model-capabilities-v1`): the levels, the value that turns thinking off, the default and the request field. Models without a card fall back to Low/High/Extra high/Max only when their id names a reasoning model.
|
|
65
66
|
- **Usage** is reported the harness's way: tokens read from memory count as cache reads, so the harness's own counters (cost, cache hit) are right.
|
|
66
67
|
- **Busy and preparing answers** are retried by the harness, honouring the server's `Retry-After`.
|
|
@@ -103,13 +104,14 @@ Everything has a production default. To change something, add a row to your prof
|
|
|
103
104
|
|
|
104
105
|
```bash
|
|
105
106
|
pnpm install
|
|
106
|
-
npm
|
|
107
|
+
npm install -g @deepseek-ai/dsh@0.2.0-rc.2 # the harness release the plugin targets (as CI does)
|
|
108
|
+
npm run link-dsh # link the installed DeepSeek Harness packages for types and tests
|
|
107
109
|
npm run build # lib/index.js (Host), lib/client.js (browser), Typert artifacts
|
|
108
110
|
npm test # unit tests
|
|
109
111
|
ADAPTIQ_LIVE=1 ADAPTIQAI_API_KEY=ak_live_… npx vitest run test/live.test.ts # one short live request
|
|
110
112
|
npm run pack:local # dist/adaptiqai-deepseek-harness-<version>.tgz
|
|
111
113
|
```
|
|
112
114
|
|
|
113
|
-
Layout: `src/host` (adapter, sign-in, workspace service, Remote controller, command, tools), `src/client` (React UI in the AdaptiqAI design), `
|
|
115
|
+
Layout: `src/host` (adapter, sign-in, workspace service, Remote controller, command, tools), `src/client` (React UI in the AdaptiqAI design), `scripts/remote-spec.mjs` (the Remote namespace; `scripts/gen-typert.mjs` turns it into the Typert artifacts the harness loads).
|
|
114
116
|
|
|
115
117
|
The UI uses PP Frama when it is installed on the computer. The package does not ship PP Frama (its licence does not allow it); otherwise it falls back to Manrope, an SIL Open Font License grotesk embedded in the browser bundle (licence in `assets/fonts/Manrope-OFL.txt`).
|