dsh-bailinghub 0.1.1 → 0.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +41 -0
- package/PRIVACY.md +17 -0
- package/README.md +198 -60
- package/SECURITY.md +32 -1
- package/cordis.agent-client.patch.yml +8 -0
- package/docs/AGENT_CLIENT_CONTRACT.md +260 -0
- package/docs/COMPATIBILITY.md +87 -5
- package/docs/GETTING_STARTED.md +92 -0
- package/docs/GETTING_STARTED.zh-CN.md +83 -0
- package/docs/MIGRATION_VNEXT.md +128 -0
- package/docs/PROJECT_BOUNDARIES.md +26 -7
- package/docs/README.zh-CN.md +177 -50
- package/lib/index.js +53 -0
- package/lib/runtime.js +1790 -0
- package/lib/transport.js +97 -0
- package/package.json +27 -7
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,46 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## Unreleased
|
|
4
|
+
|
|
5
|
+
## 0.3.0 - 2026-09-01
|
|
6
|
+
|
|
7
|
+
- Add `/bailinghub doctor` for credential-safe host-contract, configuration, SDK, authorization,
|
|
8
|
+
and workspace diagnostics before a business turn starts.
|
|
9
|
+
- Add real lifecycle coverage for DeepSeek Harness `0.1.1-rc.2` and enforce it in Ubuntu,
|
|
10
|
+
Windows, and tagged publication workflows.
|
|
11
|
+
- Make `connectionName` a user-controlled local selector while the business authorization page
|
|
12
|
+
owns login, account switching, tenant selection, and the trusted identity result.
|
|
13
|
+
- Reconcile same-binding connections by trusted `on_behalf_of`: replace an older same-identity
|
|
14
|
+
connection, keep different identities independent, and surface cleanup-required authorization
|
|
15
|
+
as a successful login with an explicit no-reauthorize warning.
|
|
16
|
+
- Preserve an existing alias and Session when same-alias authorization returns a different trusted
|
|
17
|
+
identity; allocate and select a non-conflicting local alias for the new identity.
|
|
18
|
+
- Add user-only `/bailinghub connections list|add|use|remove` lifecycle commands with quoted-name
|
|
19
|
+
parsing, new-session-only selection, existing-session pinning, and revoke-before-remove safety.
|
|
20
|
+
- Restore the SDK registry's current connection before the first new session or user command after
|
|
21
|
+
restart, with validated public metadata and a non-blocking bootstrap-field fallback.
|
|
22
|
+
- Reconcile defaults after connection removal: adopt a remaining current profile, become
|
|
23
|
+
unconfigured after the last removal, and preserve successful removal across registry refresh
|
|
24
|
+
failures without disturbing a valid non-current default.
|
|
25
|
+
- Pin the stable public `bailinghub-mcp-server@0.3.0` SDK, including Windows CurrentUser DPAPI
|
|
26
|
+
credential storage for Agent Session connections.
|
|
27
|
+
|
|
28
|
+
## 0.2.0 - 2026-08-26
|
|
29
|
+
|
|
30
|
+
- Add the native Cordis Agent Client adapter that keeps reasoning and orchestration in local DSH
|
|
31
|
+
while BailingHub retains identity, context, capability governance, approval, recovery, and audit.
|
|
32
|
+
- Add browser authorization, isolated connection aliases, dynamic per-turn business tools,
|
|
33
|
+
capability search, exact-invocation resume, and visible-only run completion through the generic
|
|
34
|
+
`bailinghub-mcp-server/sdk` facade.
|
|
35
|
+
- Restrict host configuration to `hubUrl`, `clientAppId`, `workspace`, and `connectionName`; no
|
|
36
|
+
business endpoint, Client Token, model key, or other secret is accepted by the plugin config.
|
|
37
|
+
- Preserve public `0.1.1` as the explicit static MCP/Client Token compatibility path rather than
|
|
38
|
+
silently migrating its credentials or orchestration semantics.
|
|
39
|
+
- Pin `bailinghub-mcp-server@0.2.0` as an ordinary dependency so installing only this plugin also
|
|
40
|
+
installs the exact compatible Agent Client SDK.
|
|
41
|
+
- Document the Core to MCP/SDK to DSH release order and the clean-profile browser-auth acceptance
|
|
42
|
+
gate.
|
|
43
|
+
|
|
3
44
|
## 0.1.1 - 2026-08-18
|
|
4
45
|
|
|
5
46
|
- Make the project contract accept future SemVer releases while keeping package and lock versions aligned.
|
package/PRIVACY.md
CHANGED
|
@@ -9,3 +9,20 @@ using personal, confidential, or regulated data.
|
|
|
9
9
|
|
|
10
10
|
Do not include tokens, private URLs, personal information, or production payloads in public
|
|
11
11
|
issues, screenshots, or compatibility reports.
|
|
12
|
+
|
|
13
|
+
## Native Agent Client 0.3.0
|
|
14
|
+
|
|
15
|
+
The native 0.3.0 plugin sends each direct human user turn to BailingHub Core and receives
|
|
16
|
+
model-visible instructions, memory, reference-only knowledge, governance, and active tool schemas.
|
|
17
|
+
Business tool arguments and governed results cross the same boundary. At completion it sends only
|
|
18
|
+
the hash-aliased assistant message id, visible final text, legal status, optional model/runtime
|
|
19
|
+
labels, and numeric public usage. It ignores `assistant/chunk` and never uploads hidden reasoning.
|
|
20
|
+
|
|
21
|
+
Browser authorization, refresh, and credential storage remain SDK-owned; this adapter stores no
|
|
22
|
+
BailingHub credential. The SDK uses macOS Keychain, Windows CurrentUser DPAPI, or an explicitly
|
|
23
|
+
enabled isolated mode-0600 POSIX file store. Review DSH, model-provider, BailingHub, and
|
|
24
|
+
business-system retention boundaries before enabling the plugin.
|
|
25
|
+
|
|
26
|
+
The multi-connection registry contains public connection name, Hub URL, client app id, workspace,
|
|
27
|
+
timestamps, and current-selection state. It does not contain access tokens, refresh tokens, model
|
|
28
|
+
keys, business cookies, prompts, tool arguments, or business results.
|
package/README.md
CHANGED
|
@@ -2,103 +2,241 @@
|
|
|
2
2
|
|
|
3
3
|
[简体中文](docs/README.zh-CN.md) | English
|
|
4
4
|
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
5
|
+
Use your local DeepSeek Harness Agent to operate the admin side of an online store, SaaS product,
|
|
6
|
+
or other business system through BailingHub. Ask it to look up data, update records, or run other
|
|
7
|
+
actions available to the connected account. The existing business identity, permissions, and
|
|
8
|
+
approval rules still apply, and BailingHub keeps the authorization and action trail.
|
|
9
|
+
|
|
10
|
+
For example, depending on what the connected business system has exposed, you can ask the local
|
|
11
|
+
Agent to:
|
|
12
|
+
|
|
13
|
+
- find an order, customer, product, or employee record;
|
|
14
|
+
- update an allowed field or business status;
|
|
15
|
+
- run another permitted admin action;
|
|
16
|
+
- return the result while BailingHub records the corresponding tool steps.
|
|
17
|
+
|
|
18
|
+
Reasoning and tool orchestration stay in DSH. BailingHub supplies the authorized business context,
|
|
19
|
+
available capabilities, approval state, invocation recovery, and audit records required for the
|
|
20
|
+
local Agent to act safely.
|
|
9
21
|
|
|
10
22
|
This is an independent community integration. It is not developed, certified, endorsed, or
|
|
11
23
|
recommended by DeepSeek.
|
|
12
24
|
|
|
13
|
-
|
|
25
|
+
> **Current stable line:** `dsh-bailinghub@0.3.0` uses the native Agent Client flow documented
|
|
26
|
+
> below. Public `0.1.1` remains available only as the explicit static MCP compatibility path.
|
|
14
27
|
|
|
15
|
-
|
|
28
|
+
For the shortest end-user path, follow the [three-minute getting started guide](docs/GETTING_STARTED.md).
|
|
16
29
|
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
30
|
+
## How the 0.3 Agent Client fits together
|
|
31
|
+
|
|
32
|
+
```text
|
|
33
|
+
DeepSeek Harness local Agent
|
|
34
|
+
-> dsh-bailinghub native Cordis adapter
|
|
35
|
+
-> bailinghub-mcp-server/sdk
|
|
36
|
+
-> BailingHub Agent Auth + Agent API
|
|
37
|
+
-> operator-selected business integration and final authorization
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
The packages have separate responsibilities:
|
|
41
|
+
|
|
42
|
+
- **BailingHub Core** owns Agent Auth, trusted business identity, runtime context, knowledge and
|
|
43
|
+
memory projection, capability governance, approvals, invocation state, and audit records.
|
|
44
|
+
- **`bailinghub-mcp-server/sdk`** owns browser login, PKCE, credential storage, refresh,
|
|
45
|
+
Hub/client/workspace connection selection, and HTTP DTO mapping.
|
|
46
|
+
- **`dsh-bailinghub`** owns only DSH session, prompt, command, and dynamic-tool lifecycle
|
|
47
|
+
integration. It does not store credentials or call a business API directly.
|
|
22
48
|
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
credentials through these tools.
|
|
49
|
+
This Agent Client is not the BailingHub executor. The executor receives jobs from the Hub for
|
|
50
|
+
work that must run near a machine; the Agent Client keeps the interactive reasoning loop on the
|
|
51
|
+
user's local DSH Agent.
|
|
27
52
|
|
|
28
|
-
##
|
|
53
|
+
## Before installing
|
|
54
|
+
|
|
55
|
+
The deployer and business integrator must prepare these public identifiers in BailingHub:
|
|
56
|
+
|
|
57
|
+
1. A reachable HTTPS BailingHub deployment with the matching Agent Auth and Agent API contracts.
|
|
58
|
+
2. A public Agent Client application id (`clientAppId`).
|
|
59
|
+
3. At least one authorized workspace. In Agent Client v1, the workspace id is the BailingHub
|
|
60
|
+
route id.
|
|
61
|
+
4. One stable, account- and tenant-neutral business authorization entry configured on the Hub
|
|
62
|
+
Client App, plus a governed ACC/Tool Provider integration behind that route. The business page
|
|
63
|
+
must handle sign-in, account switching, and tenant selection before it approves the request.
|
|
64
|
+
|
|
65
|
+
The end user does **not** enter a business API URL, business login credential, Tool Provider
|
|
66
|
+
signing secret, BailingHub Client Token, or model-provider key into this plugin.
|
|
67
|
+
|
|
68
|
+
## Install the 0.3 line
|
|
29
69
|
|
|
30
70
|
Prerequisites:
|
|
31
71
|
|
|
32
72
|
- Node.js `22.19.0+` or `24+`;
|
|
33
|
-
- `pnpm` and
|
|
34
|
-
-
|
|
35
|
-
|
|
73
|
+
- `pnpm` and a DeepSeek Harness release listed in the compatibility matrix;
|
|
74
|
+
- the BailingHub preparation above.
|
|
75
|
+
|
|
76
|
+
Install the exact stable version into the DSH Web profile:
|
|
36
77
|
|
|
37
78
|
```bash
|
|
38
|
-
npm install --global pnpm @deepseek-ai/dsh@0.1.
|
|
39
|
-
dsh plugin --profile web add dsh-bailinghub@0.
|
|
79
|
+
npm install --global pnpm @deepseek-ai/dsh@0.1.1-rc.2
|
|
80
|
+
dsh plugin --profile web add dsh-bailinghub@0.3.0
|
|
40
81
|
```
|
|
41
82
|
|
|
42
|
-
|
|
83
|
+
`dsh-bailinghub@0.3.0` installs its exact compatible `bailinghub-mcp-server@0.3.0` dependency
|
|
84
|
+
automatically. DSH users should not separately guess or install an SDK version.
|
|
85
|
+
|
|
86
|
+
## Configure one Hub connection
|
|
87
|
+
|
|
88
|
+
The native plugin has exactly four host configuration fields:
|
|
89
|
+
|
|
90
|
+
| Plugin field | Environment value | Meaning | Secret |
|
|
91
|
+
| --- | --- | --- | --- |
|
|
92
|
+
| `hubUrl` | `BAILINGHUB_HUB_URL` | Public HTTPS URL of the developer's own BailingHub | No |
|
|
93
|
+
| `clientAppId` | `BAILINGHUB_CLIENT_APP_ID` | Public Agent Client application id registered in that Hub | No |
|
|
94
|
+
| `workspace` | `BAILINGHUB_WORKSPACE` | Initial authorized workspace/route id | No |
|
|
95
|
+
| `connectionName` | `BAILINGHUB_CONNECTION_NAME` | User-selected local connection label | No |
|
|
96
|
+
|
|
97
|
+
Example placeholders:
|
|
43
98
|
|
|
44
99
|
```bash
|
|
45
|
-
export
|
|
46
|
-
export
|
|
47
|
-
export
|
|
100
|
+
export BAILINGHUB_HUB_URL='https://hub.example.com'
|
|
101
|
+
export BAILINGHUB_CLIENT_APP_ID='example-agent-client'
|
|
102
|
+
export BAILINGHUB_WORKSPACE='order_assistant'
|
|
103
|
+
export BAILINGHUB_CONNECTION_NAME='default'
|
|
48
104
|
```
|
|
49
105
|
|
|
50
|
-
|
|
106
|
+
The same four fields may be supplied through the DSH plugin settings surface. Do not add tokens,
|
|
107
|
+
authorization URLs, business domains, or credentials to the Cordis patch. The Hub resolves the
|
|
108
|
+
Client App to its single business authorization entry. `connectionName` is only a user-controlled
|
|
109
|
+
local selector; it is not an account, tenant, or identity claim.
|
|
110
|
+
|
|
111
|
+
Inspect the composed profile before starting it:
|
|
51
112
|
|
|
52
113
|
```bash
|
|
53
114
|
dsh --profile web --dump-config
|
|
54
115
|
dsh web
|
|
55
116
|
```
|
|
56
117
|
|
|
57
|
-
|
|
58
|
-
BailingHub, preserve the returned `job_id`, and wait for or query that same job.
|
|
118
|
+
## Authorize and use the local Agent
|
|
59
119
|
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
120
|
+
In DSH, run:
|
|
121
|
+
|
|
122
|
+
```text
|
|
123
|
+
/bailinghub login
|
|
124
|
+
/bailinghub doctor
|
|
125
|
+
/bailinghub status
|
|
126
|
+
/bailinghub workspaces
|
|
127
|
+
```
|
|
63
128
|
|
|
64
|
-
|
|
129
|
+
`login` opens the system browser at the single business authorization entry configured by the Hub
|
|
130
|
+
operator. That business page owns sign-in, account switching, and tenant selection, confirms the
|
|
131
|
+
resulting business identity and requested workspace, then returns to a random loopback callback
|
|
132
|
+
protected by `state` and PKCE S256. Access and refresh tokens remain in SDK-owned secure storage
|
|
133
|
+
and are never written to the plugin configuration or printed by the command.
|
|
65
134
|
|
|
66
|
-
|
|
67
|
-
2. Call `mcp__bailinghub__submit_governed_job` once.
|
|
68
|
-
3. Preserve its `job_id`.
|
|
69
|
-
4. Call `wait_for_governed_job`, or call `get_governed_job` later.
|
|
70
|
-
5. A wait timeout is not a failed task. Do not submit a replacement request.
|
|
135
|
+
Useful commands:
|
|
71
136
|
|
|
72
|
-
|
|
137
|
+
| Command | Purpose |
|
|
138
|
+
| --- | --- |
|
|
139
|
+
| `/bailinghub doctor` | Check host APIs, public configuration, SDK resolution, authorization, and workspace reachability without printing credentials |
|
|
140
|
+
| `/bailinghub connections list` | List local public connection metadata and authorization state without tokens |
|
|
141
|
+
| `/bailinghub connections add <name> <hub-url> <client-app-id> <workspace>` | Create and select another local connection instance for new sessions; the public binding may match an existing instance |
|
|
142
|
+
| `/bailinghub connections use <name-or-key>` | Select a registered connection for new sessions only |
|
|
143
|
+
| `/bailinghub connections remove <name-or-key>` | Remotely revoke its Agent Session, then remove its local credential and metadata |
|
|
144
|
+
| `/bailinghub login` | Authorize the configured Hub/client/workspace in the browser |
|
|
145
|
+
| `/bailinghub status` | Inspect the selected connection without printing credentials |
|
|
146
|
+
| `/bailinghub workspaces` | List workspaces allowed by the current business authorization |
|
|
147
|
+
| `/bailinghub use <workspace>` | Select another already-authorized workspace for new sessions |
|
|
148
|
+
| `/bailinghub sync` | Retry a pending visible completion record without repeating a tool call |
|
|
149
|
+
| `/bailinghub logout` | Revoke and remove the selected Agent Session |
|
|
150
|
+
|
|
151
|
+
The four plugin fields are the bootstrap connection. Additional connections can be registered with
|
|
152
|
+
`connections add`; the BailingHub console's Agent Client page can generate the same secret-free
|
|
153
|
+
command. On restart, the adapter reads the SDK registry before the first new Agent session or user
|
|
154
|
+
command and adopts its current connection's public metadata; a missing or unavailable registry
|
|
155
|
+
safely falls back to the four bootstrap fields. Quote a connection name when it contains spaces.
|
|
156
|
+
After `connections use`, run `/bailinghub login` if that binding is not authorized yet.
|
|
157
|
+
|
|
158
|
+
Connection selection is a user-only slash command and is never exposed as a model tool. It affects
|
|
159
|
+
only Agent sessions created afterward; existing sessions remain pinned to their original
|
|
160
|
+
connection and workspace. `/bailinghub use <workspace>` remains a different operation: it succeeds
|
|
161
|
+
only when the current Agent Session already authorizes that workspace.
|
|
162
|
+
|
|
163
|
+
After removing the selected connection, the adapter reads the SDK registry and adopts the remaining
|
|
164
|
+
current connection for new sessions, including connections without an alias. Removing the final
|
|
165
|
+
connection leaves the adapter explicitly unconfigured. A failed post-remove registry read never
|
|
166
|
+
turns a successful removal into an error; removing a non-current connection also preserves the
|
|
167
|
+
still-valid default when that refresh is unavailable.
|
|
168
|
+
|
|
169
|
+
For the same `Hub + clientAppId + workspace` public binding, browser authorization determines the
|
|
170
|
+
identity from the business page and its trusted `on_behalf_of` result. If that identity is already
|
|
171
|
+
authorized under another local connection name, the SDK replaces the older local connection and
|
|
172
|
+
revokes its old Agent Session. A different trusted identity remains an independent connection.
|
|
173
|
+
If login starts from a `connectionName` that already belongs to another identity, the SDK keeps
|
|
174
|
+
that original alias and Session, gives the newly authorized identity an available local alias such
|
|
175
|
+
as `default-2`, and selects the new alias for future sessions. Use `connections list` to see both
|
|
176
|
+
and `connections use <name-or-key>` to switch explicitly.
|
|
177
|
+
If login returns `cleanupRequired: true`, the newly selected connection is still authorized, but
|
|
178
|
+
one or more existing same-binding connections need explicit cleanup. Their identity may still be
|
|
179
|
+
unconfirmed when inspection was deferred. Do not authorize again; inspect
|
|
180
|
+
`connections list` and retry `/bailinghub connections remove <name-or-key>` for the reported old
|
|
181
|
+
entry.
|
|
182
|
+
|
|
183
|
+
For the first acceptance check, start a new DSH conversation and perform one read-only request,
|
|
184
|
+
then one permitted mutation. Confirm the same conversation, run, visible final answer, and tool
|
|
185
|
+
invocation trajectory appear in BailingHub. An approval-required capability must resume the
|
|
186
|
+
original invocation after approval; it must never create a replacement business call.
|
|
187
|
+
|
|
188
|
+
DSH Code Mode is deliberately degraded in this release because it cannot safely present the
|
|
189
|
+
current-turn dynamic schemas. Use native tool mode for governed business actions.
|
|
190
|
+
|
|
191
|
+
## Security and privacy boundary
|
|
192
|
+
|
|
193
|
+
- The model cannot choose a Hub URL, workspace, local connection, business identity, credential,
|
|
194
|
+
approval result, or capability revision through tool arguments.
|
|
195
|
+
- The SDK stores credentials in macOS Keychain. On Windows it protects credential files under
|
|
196
|
+
LocalAppData with CurrentUser DPAPI; unavailable Windows PowerShell or DPAPI fails closed without
|
|
197
|
+
a plaintext fallback. Linux and other POSIX systems require an explicit secure file-store opt-in.
|
|
198
|
+
- BailingHub revalidates identity, scope, approval, idempotency, and invocation state on every
|
|
199
|
+
governed call. The downstream business system still performs final authorization.
|
|
200
|
+
- The adapter sends visible user input, governed tool arguments/results, and the visible final
|
|
201
|
+
answer required by the Agent Client contracts. It never uploads hidden reasoning chunks.
|
|
202
|
+
- This plugin governs only the BailingHub tools it registers. It does not intercept unrelated DSH
|
|
203
|
+
tools or model-provider traffic.
|
|
204
|
+
|
|
205
|
+
Review [Security](SECURITY.md), [Privacy](PRIVACY.md), the
|
|
206
|
+
[Agent Client contract](docs/AGENT_CLIENT_CONTRACT.md), and
|
|
207
|
+
[compatibility](docs/COMPATIBILITY.md) before production use.
|
|
208
|
+
|
|
209
|
+
## Legacy public 0.1.x static mode
|
|
210
|
+
|
|
211
|
+
Public `dsh-bailinghub@0.1.1` remains an immutable configuration-only bundle. It uses the in-box
|
|
212
|
+
DSH MCP Client to start `bailinghub-mcp-server@0.1.1`, binds one operator-provisioned Client Token
|
|
213
|
+
to one fixed route, and leaves orchestration in BailingHub.
|
|
73
214
|
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
The current `0.1.x` bundle deliberately does not accept an acting subject as tool input. A route or
|
|
77
|
-
downstream business system must still resolve trusted identity and perform final
|
|
78
|
-
authorization. If the selected action requires identity that the configured path cannot
|
|
79
|
-
establish, it should remain unavailable or be rejected.
|
|
215
|
+
```bash
|
|
216
|
+
dsh plugin --profile web add dsh-bailinghub@0.1.1
|
|
80
217
|
|
|
81
|
-
|
|
82
|
-
|
|
218
|
+
export BAILINGHUB_BASE_URL='https://hub.example.com'
|
|
219
|
+
export BAILINGHUB_CLIENT_TOKEN='replace-with-a-route-scoped-client-token'
|
|
220
|
+
export BAILINGHUB_ROUTE='order_assistant'
|
|
221
|
+
```
|
|
83
222
|
|
|
84
|
-
|
|
223
|
+
It exposes exactly these three tools:
|
|
85
224
|
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
environment; production images may pre-cache the exact version.
|
|
225
|
+
```text
|
|
226
|
+
mcp__bailinghub__submit_governed_job
|
|
227
|
+
mcp__bailinghub__get_governed_job
|
|
228
|
+
mcp__bailinghub__wait_for_governed_job
|
|
229
|
+
```
|
|
92
230
|
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
231
|
+
The 0.3 Agent Client does not automatically consume or migrate the 0.1 Client Token. Keep versions
|
|
232
|
+
explicit and follow the [0.1-to-0.3 migration boundary](docs/MIGRATION_VNEXT.md) when testing or
|
|
233
|
+
rolling back.
|
|
96
234
|
|
|
97
|
-
## Compatibility and
|
|
235
|
+
## Compatibility and feedback
|
|
98
236
|
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
237
|
+
Version 0.3.0 is verified only against the versions listed in
|
|
238
|
+
[docs/COMPATIBILITY.md](docs/COMPATIBILITY.md). DeepSeek Harness remains a developer preview, so
|
|
239
|
+
every Harness release requires a new native lifecycle smoke test.
|
|
102
240
|
|
|
103
241
|
Report problems through [GitHub Issues](https://github.com/bailinghub/bailinghub-dsh-plugin/issues).
|
|
104
242
|
Never include tokens, private deployment URLs, personal information, or production business
|
package/SECURITY.md
CHANGED
|
@@ -4,7 +4,7 @@ Report vulnerabilities through a private GitHub Security Advisory in this reposi
|
|
|
4
4
|
Do not put tokens, private deployment URLs, personal information, or raw business payloads
|
|
5
5
|
in a public issue.
|
|
6
6
|
|
|
7
|
-
##
|
|
7
|
+
## Public legacy 0.1.x boundary
|
|
8
8
|
|
|
9
9
|
This bundle contributes configuration only. It has no custom runtime JavaScript, production
|
|
10
10
|
dependencies, or install-time scripts. On Harness startup, the built-in DSH MCP Client runs
|
|
@@ -18,3 +18,34 @@ or acting-subject credential. Route, URL, and token stay in operator-controlled
|
|
|
18
18
|
configuration and are never model tool arguments.
|
|
19
19
|
|
|
20
20
|
Non-loopback HTTP is denied by default. Do not enable insecure HTTP on an untrusted network.
|
|
21
|
+
|
|
22
|
+
## Native 0.3.0 boundary
|
|
23
|
+
|
|
24
|
+
The native 0.3.0 plugin accepts only `hubUrl`, `clientAppId`, `workspace`, and
|
|
25
|
+
`connectionName`. The generic SDK owns browser authorization, refresh, and secure credential
|
|
26
|
+
storage; business endpoints and final authorization remain Core/business-system concerns. The
|
|
27
|
+
Hub Client App owns one business authorization entry. That business page, not the plugin or model,
|
|
28
|
+
handles login, account switching, tenant selection, and the trusted `on_behalf_of` identity.
|
|
29
|
+
|
|
30
|
+
The multi-connection registry stores only public Hub/client/workspace metadata. `connectionName`
|
|
31
|
+
is a user-only local selector, not an identity claim. After browser
|
|
32
|
+
authorization, the SDK replaces an older same-binding connection only when the trusted
|
|
33
|
+
`on_behalf_of` matches; different trusted identities remain isolated. A same-alias authorization
|
|
34
|
+
for a different identity preserves the original alias and Session and assigns the new identity a
|
|
35
|
+
non-conflicting local alias. If inspection or old-Session revocation is uncertain, the new
|
|
36
|
+
connection stays authorized and explicit cleanup is required.
|
|
37
|
+
Connection add/use/remove are user slash commands, not model tools. Removing an authorized
|
|
38
|
+
connection is remote-revoke-first and keeps the local credential if revocation fails, so it cannot
|
|
39
|
+
falsely report a complete logout.
|
|
40
|
+
|
|
41
|
+
Tools are Agent/run scoped. Message ids are replaced by Core-safe hash aliases, invocation ids are
|
|
42
|
+
stable 64-character digests, and an `accepted_unknown` outcome must resume that exact invocation
|
|
43
|
+
instead of creating a replacement. Completion retries are bounded and reuse one frozen,
|
|
44
|
+
visible-only payload. Version 0.3.0 installs `bailinghub-mcp-server@0.3.0` as an exact ordinary
|
|
45
|
+
dependency and resolves its `./sdk` export. It does not depend on ambient modules, an optional
|
|
46
|
+
peer, a range, a dist-tag, or a local path. Public `0.1.1` does not provide that facade.
|
|
47
|
+
|
|
48
|
+
Agent Session credentials use macOS Keychain or Windows CurrentUser DPAPI-protected files under
|
|
49
|
+
LocalAppData. Windows PowerShell or DPAPI unavailability fails closed without a plaintext fallback.
|
|
50
|
+
Linux and other POSIX hosts must explicitly enable the SDK's isolated mode-0600 file store. The
|
|
51
|
+
plugin never receives the credential value and never writes one into Cordis configuration.
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
- insert:
|
|
2
|
+
- id: bailinghub-agent-client-vnext
|
|
3
|
+
name: dsh-bailinghub
|
|
4
|
+
config:
|
|
5
|
+
hubUrl: !!js process.env.BAILINGHUB_HUB_URL ?? ''
|
|
6
|
+
clientAppId: !!js process.env.BAILINGHUB_CLIENT_APP_ID ?? ''
|
|
7
|
+
workspace: !!js process.env.BAILINGHUB_WORKSPACE ?? ''
|
|
8
|
+
connectionName: !!js process.env.BAILINGHUB_CONNECTION_NAME ?? 'default'
|