dsh-bailinghub 0.4.0 → 0.6.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 +108 -0
- package/PRIVACY.md +62 -12
- package/README.md +50 -20
- package/SECURITY.md +47 -6
- package/docs/AGENT_CLIENT_CONTRACT.md +201 -16
- package/docs/CAPABILITY_FEEDBACK.md +199 -0
- package/docs/COMPATIBILITY.md +63 -5
- package/docs/CROSS_SYSTEM_CONVERSATIONS.md +138 -0
- package/docs/GENERATED_ARTIFACTS.md +77 -0
- package/docs/GETTING_STARTED.md +37 -11
- package/docs/GETTING_STARTED.zh-CN.md +32 -12
- package/docs/INVOCATION_RECOVERY.md +182 -0
- package/docs/MIGRATION_VNEXT.md +78 -7
- package/docs/PROJECT_BOUNDARIES.md +4 -1
- package/docs/README.zh-CN.md +59 -18
- package/docs/RELEASE_NOTES_v0.5.0.md +79 -0
- package/docs/RELEASE_NOTES_v0.6.0.en.md +39 -0
- package/docs/RELEASE_NOTES_v0.6.0.md +39 -0
- package/docs/SESSION_TOOL_REUSE.md +213 -0
- package/docs/TASK_CONTROL.md +183 -0
- package/docs/UPGRADE_v0.6.0.en.md +71 -0
- package/docs/UPGRADE_v0.6.0.md +73 -0
- package/lib/artifact-store.js +56 -0
- package/lib/artifacts.js +132 -0
- package/lib/authorizations.js +23 -8
- package/lib/capability-feedback.js +138 -0
- package/lib/conversation-archive-store.js +2 -2
- package/lib/conversation-outbox.js +37 -7
- package/lib/index.js +7 -1
- package/lib/invocation-journal.js +223 -0
- package/lib/invocation-store.js +275 -0
- package/lib/runtime.js +1126 -174
- package/lib/session-scope-store.js +2 -2
- package/lib/session-scope.js +146 -30
- package/lib/session-task-store.js +275 -0
- package/lib/session-task.js +237 -0
- package/lib/session-tool-cache.js +168 -0
- package/lib/session-tools.js +240 -0
- package/lib/subject-display.js +39 -0
- package/lib/system-info.js +76 -0
- package/lib/tool-catalog.js +38 -0
- package/lib/transport.js +34 -0
- package/package.json +14 -3
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,113 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 0.6.0 - 2026-09-16
|
|
4
|
+
|
|
5
|
+
See [scenarios and upgrade](docs/RELEASE_NOTES_v0.6.0.md) · [English](docs/RELEASE_NOTES_v0.6.0.en.md).
|
|
6
|
+
|
|
7
|
+
- Bind administrator-created tasks through persistent taskStore and public host APIs. Preserve original members, cumulative budgets, cancellation and read-only receipt inspection; models cannot create or switch tasks.
|
|
8
|
+
|
|
9
|
+
- Let a conversation panel inspect a pending shop listing or inventory change
|
|
10
|
+
after reopening, without starting a model turn or business run. Explicit continuation
|
|
11
|
+
first inspects the original receipt, preserves approval and task controls, and never
|
|
12
|
+
replaces an uncertain write. Panel and model actions serialize the same invocation.
|
|
13
|
+
Preserve local storage errors, cancellation and original retry deadlines. See the
|
|
14
|
+
[host integration contract](docs/TASK_CONTROL.md).
|
|
15
|
+
|
|
16
|
+
- Let a host read original conversation and selected shop/inventory authorization
|
|
17
|
+
coordinates through `getSessionTaskCoordinates(session)` when preparing a governed
|
|
18
|
+
task. Revalidate the complete original group without locking a draft, creating a
|
|
19
|
+
run or exposing unselected targets. Keep persistence failures distinct from
|
|
20
|
+
retryable network failures and unsupported versions. Existing task binding and
|
|
21
|
+
execution rules remain in force; see [the host contract](docs/TASK_CONTROL.md).
|
|
22
|
+
|
|
23
|
+
- Let an opted-in host retain complete shop, inventory or other business tool
|
|
24
|
+
declarations across user messages in the same living Session. Prepare current
|
|
25
|
+
target context once per user turn; valid exact-name lookups need no additional
|
|
26
|
+
capability-search request. Ordinary chat starts no business run.
|
|
27
|
+
- Bound the session cache to 64 target-tool pairs and 2 MiB, with a 12-schema
|
|
28
|
+
presentation window. Separate cached declarations from currently prepared tools;
|
|
29
|
+
return full schemas and current context through the existing search entry point.
|
|
30
|
+
- A direct unprepared cached call returns preparation only. It creates no business
|
|
31
|
+
invocation, and replaying its call ID cannot turn it into a write. Current identity,
|
|
32
|
+
declaration changes, cancellation and original-invocation recovery remain enforced.
|
|
33
|
+
- Keep legacy `active_turn` behavior by default. Hosts explicitly enable
|
|
34
|
+
`toolLifecycle: 'session'` after handling preparation results. Core and SDK need
|
|
35
|
+
no additional API for this candidate. See [the integration contract](docs/SESSION_TOOL_REUSE.md).
|
|
36
|
+
|
|
37
|
+
- Preserve an authoritative `invocation_not_found` response during polling and
|
|
38
|
+
direct recovery. Stop automatic retries and ask for inspection of the original
|
|
39
|
+
execution evidence, without declaring the business action unexecuted or creating
|
|
40
|
+
a replacement write. Generic network/HTTP failures retain conservative recovery.
|
|
41
|
+
|
|
42
|
+
- Reopen a conversation after pending approval or a lost business response and recover
|
|
43
|
+
the original invocation through a durable, metadata-only local journal. Persist the
|
|
44
|
+
original authorization, run, invocation and parameter digest before dispatch; never
|
|
45
|
+
rebuild a business write from transcript text or substitute another account.
|
|
46
|
+
- Custom hosts can supply an invocation store and inspect or restore its local status.
|
|
47
|
+
Storage failures remain explicit. Restoring metadata sends no business recovery
|
|
48
|
+
request; an explicit resume may continue the original approved operation.
|
|
49
|
+
See [reopening and original invocation recovery](docs/INVOCATION_RECOVERY.md).
|
|
50
|
+
|
|
51
|
+
- Keep long tasks moving between product creation, queries and inventory checks:
|
|
52
|
+
searches merge valid tools during the active turn instead of unloading the previous
|
|
53
|
+
batch. Retain up to 64 callable tools behind a 12-schema model window; unchanged
|
|
54
|
+
registrations survive concurrent discovery and calls.
|
|
55
|
+
- Invalidate only the changed authorization catalog, quarantine contradictory
|
|
56
|
+
declarations, and preserve original invocation recovery and cancellation boundaries.
|
|
57
|
+
See [long-task lifecycle and host upgrade guidance](docs/CAPABILITY_FEEDBACK.md).
|
|
58
|
+
|
|
59
|
+
- Honor Hub retry delays after pre-dispatch rate limiting. Long waits retain the original invocation for later recovery; early manual resumes avoid extra requests. Shared quota details stay visible to the model.
|
|
60
|
+
|
|
61
|
+
- Add an image-first Local Agent attachment space for adapted hosts: list approved conversation
|
|
62
|
+
outputs, upload 1–8 PNG/JPEG/WebP images to an explicitly selected authorization, and reuse
|
|
63
|
+
ready URLs with existing business tools. Persist original upload records for recovery.
|
|
64
|
+
- See [attachment integration](docs/GENERATED_ARTIFACTS.md) for campaign artwork, charts
|
|
65
|
+
and shop examples. Host file access is explicit; upload success and business action results
|
|
66
|
+
are independent. Business limits and original-call recovery remain independent from attachment delivery.
|
|
67
|
+
|
|
68
|
+
- Explain each search target’s returned candidates separately from the conversation’s
|
|
69
|
+
currently loaded tools. Keep unknown totals explicit and describe the shared loading limit.
|
|
70
|
+
- Return actionable, safe failure feedback through native DSH dispatch, including retired
|
|
71
|
+
tool names rejected before the business SDK. Valid loaded tools remain directly callable.
|
|
72
|
+
- Keep an unconfirmed write bound to its original invocation; discovery cannot create
|
|
73
|
+
a replacement operation. Add read-only feedback seams for custom hosts.
|
|
74
|
+
- See [capability discovery and recovery](docs/CAPABILITY_FEEDBACK.md) for shop/inventory
|
|
75
|
+
examples, compatibility and exact candidate installation requirements.
|
|
76
|
+
|
|
77
|
+
## 0.5.0 - 2026-09-10
|
|
78
|
+
|
|
79
|
+
### Shop and inventory in one conversation
|
|
80
|
+
|
|
81
|
+
See [release scenarios and upgrade steps](docs/RELEASE_NOTES_v0.5.0.md): check inventory, update a shop price and follow the listing result or approval. Business tools and confirmed product mappings are prerequisites.
|
|
82
|
+
|
|
83
|
+
- Show the business-supplied name of an authorized organization, account, project or other subject
|
|
84
|
+
separately from its product's purpose. Keep local connection selectors independent and explicitly
|
|
85
|
+
identify missing names, unsupported metadata and cached display data. Renames and duplicate names
|
|
86
|
+
preserve original scope, Session, invocation and archive identities and historical labels.
|
|
87
|
+
- Understand each selected system's purpose before searching its tools. Read administrator-managed
|
|
88
|
+
descriptions using the original authorization binding, consistently for one account, multiple
|
|
89
|
+
accounts in one system, or multiple systems. Descriptions grant no permissions and create no runs.
|
|
90
|
+
- Distinguish unknown or not-yet-loaded capabilities from unavailable services. Missing metadata
|
|
91
|
+
and older metadata APIs preserve existing business flows; identity failures still block the whole
|
|
92
|
+
scope. Cancelled description requests cannot replace a newer turn's directory.
|
|
93
|
+
- Select authorized targets from different applications or workspaces on one Hub in the same
|
|
94
|
+
conversation. The Agent discovers each target's capabilities only when needed; unrelated
|
|
95
|
+
targets do not automatically receive the full user turn or load their context.
|
|
96
|
+
- Keep same-named capabilities from different systems separate. Each call and recovery retains
|
|
97
|
+
its original connection, application, workspace, Session, run and invocation.
|
|
98
|
+
- Keep one visible conversation archive with independently verified target members. Persist
|
|
99
|
+
cross-system scope/outbox v2 while retaining same-system v1 snapshots and APIs.
|
|
100
|
+
- Require explicit SDK/Core capability support for cross-system scope. Older combinations
|
|
101
|
+
refuse the new mode while retaining existing same-system behavior.
|
|
102
|
+
- Pair with Core 0.7.0 and pin exact SDK 0.5.0. Preserve existing credentials, v1 scopes and original
|
|
103
|
+
archive events; open a new conversation when choosing targets from different systems.
|
|
104
|
+
- Keep the same-Hub, same-audit-domain boundary. This is not a durable task scheduler, automatic
|
|
105
|
+
product mapping, stock synchronization, cross-system transaction or business rollback engine.
|
|
106
|
+
- Retain the transitive Hono 4.13.7 update for upstream fixes.
|
|
107
|
+
|
|
108
|
+
See the [migration guide](docs/MIGRATION_VNEXT.md) for upgrading from 0.4.0 or an older native
|
|
109
|
+
version. Maintainer and synthetic compatibility checks are not independent production adoption.
|
|
110
|
+
|
|
3
111
|
## 0.4.0 - 2026-09-08
|
|
4
112
|
|
|
5
113
|
### For users
|
package/PRIVACY.md
CHANGED
|
@@ -1,6 +1,33 @@
|
|
|
1
1
|
# Privacy
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
## Cross-system conversations in 0.5.0
|
|
4
|
+
|
|
5
|
+
The 0.5.0 cross-system mode is opt-in through an explicit selected target set on one Hub.
|
|
6
|
+
Before business execution, the original members and the Hub's capability support are verified.
|
|
7
|
+
The Agent initially receives only a directory of authorization references, business subject display
|
|
8
|
+
names, controlled system descriptions, opaque system references and workspace names. Descriptions
|
|
9
|
+
and names are read under the original selection without sending user text or creating a run. A target starts its run only after an explicit capability
|
|
10
|
+
search or recovery selecting that target. The search query becomes that target's task input;
|
|
11
|
+
the full original user message is retained in the independent conversation archive instead of
|
|
12
|
+
automatically being sent to every target's run. Other selected targets may receive authorization
|
|
13
|
+
checks and archive membership confirmation, but no automatic business context request.
|
|
14
|
+
|
|
15
|
+
Query text is model-authored. Minimal disclosure is instructed, not an automatic redaction or
|
|
16
|
+
field-level data-flow policy: the local model can see all activated target context and the visible
|
|
17
|
+
conversation. Only use a shared conversation where that sharing is allowed. Cross-system object
|
|
18
|
+
relationships must come from verified mappings or explicit user confirmation, not matching names.
|
|
19
|
+
Original system/workspace bindings stay attached to tools, results and execution records.
|
|
20
|
+
|
|
21
|
+
Cross-system scope and outbox v2 persist each member's public Hub/app/workspace and original
|
|
22
|
+
Session with the same storage protections and plaintext archive boundary below. Same-system v1
|
|
23
|
+
records remain unchanged. The full transcript belongs to the independent Hub management audit;
|
|
24
|
+
holding one target's authorization does not grant full-transcript reading. This release does
|
|
25
|
+
not upload hidden reasoning or provide cross-process business-task recovery.
|
|
26
|
+
|
|
27
|
+
The following sections describe the retained same-system flow introduced in 0.4.0, and common
|
|
28
|
+
storage/archiving behavior. The cross-system target-query rules above take precedence for v2 scopes.
|
|
29
|
+
|
|
30
|
+
This bundle adds no telemetry and stores no BailingHub credentials. The native plugin
|
|
4
31
|
persists session-scope metadata and, when the SDK supports conversation archives, a separate
|
|
5
32
|
private outbox containing visible task text as described below.
|
|
6
33
|
|
|
@@ -12,9 +39,9 @@ using personal, confidential, or regulated data.
|
|
|
12
39
|
Do not include tokens, private URLs, personal information, or production payloads in public
|
|
13
40
|
issues, screenshots, or compatibility reports.
|
|
14
41
|
|
|
15
|
-
## Native Agent Client
|
|
42
|
+
## Native Agent Client: retained same-system data flow
|
|
16
43
|
|
|
17
|
-
After explicit nonempty scope selection, the
|
|
44
|
+
After explicit nonempty same-system scope selection, the plugin sends each direct human user turn
|
|
18
45
|
to BailingHub Core and receives model-visible instructions, memory, reference-only knowledge, governance, and active tool schemas.
|
|
19
46
|
Business tool arguments and governed results cross the same boundary. At completion it sends a
|
|
20
47
|
hash-aliased message id, legal status, optional model/runtime labels, and numeric public usage. A single-authorization run receives the visible final answer;
|
|
@@ -30,9 +57,19 @@ The multi-connection registry contains public connection name, Hub URL, client a
|
|
|
30
57
|
timestamps, and current-selection state. It does not contain access tokens, refresh tokens, model
|
|
31
58
|
keys, business cookies, prompts, tool arguments, or business results.
|
|
32
59
|
|
|
60
|
+
## Authorization display metadata
|
|
61
|
+
|
|
62
|
+
The SDK may cache the business-supplied subject name in a separate private display-only record
|
|
63
|
+
bound to the original connection and Session. A connection list can read that cache without a
|
|
64
|
+
network request; `cache` does not claim the name or authorization was freshly verified. Credential
|
|
65
|
+
storage and the registry are independent. The plugin retains current metadata in memory for
|
|
66
|
+
presentation; a refresh does not rewrite scope, archive events or frozen historical labels.
|
|
67
|
+
Controlled system descriptions are fetched for each selected member and are not persisted by
|
|
68
|
+
this adapter. See the [host contract](docs/AGENT_CLIENT_CONTRACT.md#authorization-subject-display-050).
|
|
69
|
+
|
|
33
70
|
## Same-system authorization selection
|
|
34
71
|
|
|
35
|
-
|
|
72
|
+
The same-system scope introduced in 0.4.0 includes only the authorization keys explicitly selected for a DSH
|
|
36
73
|
conversation, restricted to the same Hub/client/workspace binding. Unset or empty scope means
|
|
37
74
|
ordinary chat: no BailingHub run starts, no BailingHub business tool is registered, and the plugin
|
|
38
75
|
does not send that conversation's user input to a business system. Logging in or selecting a
|
|
@@ -42,7 +79,9 @@ DSH, the configured model provider, or unrelated host tools.
|
|
|
42
79
|
The host snapshots the selected connection bindings and exposes only session-local authorization
|
|
43
80
|
references, local display names, and availability as the selection directory. It does not expose
|
|
44
81
|
the raw registry, credentials, connection keys, or Session inspection responses to the model.
|
|
45
|
-
|
|
82
|
+
In 0.5.0, current business-supplied subject names are display metadata, separate from system
|
|
83
|
+
descriptions, frozen historical labels and fixed authorization references. Neither a name nor a
|
|
84
|
+
cached display record proves current identity. Names do not grant permission or rewrite history.
|
|
46
85
|
|
|
47
86
|
After the full selection is validated, each user turn is sent to a separate Core run under each
|
|
48
87
|
selected authorization to obtain its instructions, governance, memory, and reference-only
|
|
@@ -58,15 +97,19 @@ default or silently retaining a subset.
|
|
|
58
97
|
Each business call uses only its selected authorization. Recovery retains the original
|
|
59
98
|
authorization and invocation. At completion, multi-authorization runs receive separate
|
|
60
99
|
deterministic summaries of their own governed calls, not the combined visible final answer or
|
|
61
|
-
another authorization's results. SDK 0.
|
|
100
|
+
another authorization's results. SDK 0.5.0 with Core 0.7.0 also sends the combined visible
|
|
62
101
|
conversation through the independent archive boundary below. Single-authorization conversations
|
|
63
102
|
retain the existing visible-answer completion flow.
|
|
64
103
|
Hidden reasoning is never uploaded by the adapter.
|
|
65
104
|
|
|
66
105
|
The host checks the captured connection key, workspace, and original Agent Session id before
|
|
67
106
|
transport operations without projecting those inspection fields into the model's directory.
|
|
68
|
-
Invocation bindings
|
|
69
|
-
|
|
107
|
+
Invocation bindings stay host-side. The [durable recovery journal](docs/INVOCATION_RECOVERY.md)
|
|
108
|
+
adds a separate `invocation-records` store in the plugin data directory for original binding
|
|
109
|
+
metadata, parameter/receipt digests, last-known state and retry deadline. It stores no raw
|
|
110
|
+
arguments, receipt bodies, credentials or conversation text. Records remain until the host/operator
|
|
111
|
+
removes them; there is no automatic cleanup or upload of this journal. The same original Session
|
|
112
|
+
can recover known calls after reopening; new conversations and unknown IDs cannot use that binding.
|
|
70
113
|
|
|
71
114
|
The default file adapter saves scope schema/version, DSH session id, revision, lock/state, public
|
|
72
115
|
Hub/client/workspace binding, and the selected connection keys, sanitized labels, workspace, and
|
|
@@ -84,12 +127,13 @@ loading it does not query its old authorizations or send them user input. A fail
|
|
|
84
127
|
write can leave that draft on disk, but it still cannot reactivate automatically in a new runtime.
|
|
85
128
|
Configuration or metadata history alone does not lock a never-started draft. Missing or invalid
|
|
86
129
|
scope snapshots on started conversations do not adopt current registry connections.
|
|
87
|
-
Restoring
|
|
88
|
-
tasks across a process restart.
|
|
130
|
+
Restoring the scope alone does not recover pending business invocations, approvals, completions,
|
|
131
|
+
or tasks across a process restart. Original invocation recovery requires the separate durable
|
|
132
|
+
journal and an explicit recovery request; it does not automatically resume the whole task.
|
|
89
133
|
|
|
90
134
|
## Visible conversation archive
|
|
91
135
|
|
|
92
|
-
For a nonempty frozen scope, SDK 0.
|
|
136
|
+
For a nonempty frozen scope, SDK 0.5.0 with Core 0.7.0 sends the claimed user messages,
|
|
93
137
|
visible assistant text, turn boundaries, and original run links as one conversation audit owned
|
|
94
138
|
by the complete selected authorization set. Visible text may itself contain personal or business
|
|
95
139
|
data; the adapter does not claim to redact arbitrary secrets pasted into that text. It never adds
|
|
@@ -112,7 +156,8 @@ Network failures preserve successfully written events for later upload. Local wr
|
|
|
112
156
|
not prove durable capture. Reopened DSH history is checked for detectable missing visible events,
|
|
113
157
|
reported as `recovery_gap`; unavailable host history is marked unverified. Previously unarchived
|
|
114
158
|
messages, attachments, and hidden content are not claimed as a complete transcript. The archive
|
|
115
|
-
does not restore business invocation or approval execution after restart
|
|
159
|
+
does not itself restore business invocation or approval execution after restart; the separate
|
|
160
|
+
invocation journal does not make an incomplete visible archive complete. An older SDK reports
|
|
116
161
|
unsupported without creating an outbox, and business calls remain available.
|
|
117
162
|
|
|
118
163
|
An offline reopen keeps the original frozen scope closed until every member can be revalidated.
|
|
@@ -120,3 +165,8 @@ A later retry on the same runtime may recover a temporary network failure, but c
|
|
|
120
165
|
confirmed revocation, replacement identity, or a storage conflict. Archive status retains known
|
|
121
166
|
unsaved events and history gaps while upload is blocked. Revocation confirmed during asynchronous
|
|
122
167
|
archive capability discovery or opening is rechecked before reporting availability or uploading.
|
|
168
|
+
|
|
169
|
+
|
|
170
|
+
## Task records in 0.6.0
|
|
171
|
+
|
|
172
|
+
A private persistent task store binds the original Session, fixed members and administrator-created task. It does not store administrative credentials or grant model task-management authority. Retain original scope, task, invocation and archive records; storage errors never downgrade to an unrestricted flow. Task enrollment persists on the original Agent Session even after cancellation. Do not downgrade an enrolled authorization to a host/Core that ignores that requirement. See [task control](docs/TASK_CONTROL.md) and [upgrade](docs/UPGRADE_v0.6.0.en.md).
|
package/README.md
CHANGED
|
@@ -1,19 +1,33 @@
|
|
|
1
1
|
# BailingHub for DeepSeek Harness
|
|
2
2
|
|
|
3
|
+
## 0.6.0: longer tasks, attachments and original-call recovery
|
|
4
|
+
|
|
5
|
+
Retain the correct target while moving between edits and queries, reuse uploaded image URLs and inspect original calls after reopening. Task budgets survive turn changes. Pair Core 0.8.0 / SDK 0.6.0 / DSH 0.6.0; host integration is required for task binding and opt-in cross-turn reuse.
|
|
6
|
+
|
|
7
|
+
[Changes](docs/RELEASE_NOTES_v0.6.0.en.md) · [Upgrade](docs/UPGRADE_v0.6.0.en.md)
|
|
8
|
+
|
|
9
|
+
|
|
3
10
|
[简体中文](docs/README.zh-CN.md) | English
|
|
4
11
|
|
|
5
12
|
Ask your local DeepSeek Harness Agent to work with a business system connected to BailingHub:
|
|
6
13
|
find records, update allowed fields, and follow the system's existing approval rules.
|
|
7
14
|
BailingHub records which authorization was used and what each business action returned.
|
|
8
15
|
|
|
9
|
-
**Version 0.
|
|
10
|
-
|
|
16
|
+
**Version 0.5.0 lets one conversation use authorizations from different systems on the same Hub.**
|
|
17
|
+
Authorize a shop and inventory system separately, select both for a new conversation and ask:
|
|
18
|
+
|
|
19
|
+
> Check tumbler stock. If any are available, change the corresponding shop product's price to 59
|
|
20
|
+
> and list it; otherwise leave it unlisted.
|
|
11
21
|
|
|
12
|
-
|
|
22
|
+
The Agent reads stock with the inventory authorization, then uses the shop authorization for the
|
|
23
|
+
permitted price and listing actions. Those capabilities must already exist, and the product mapping
|
|
24
|
+
must be confirmed. A stock read does not reserve or synchronize stock. Price changes, listing
|
|
25
|
+
results and approvals are tracked separately.
|
|
13
26
|
|
|
14
|
-
The
|
|
15
|
-
|
|
16
|
-
|
|
27
|
+
The 0.4.0 same-system flow remains available: select Store A and Store B to compare sales without
|
|
28
|
+
switching a global connection. New system descriptions explain each selected system's purpose
|
|
29
|
+
before tool search, and business-supplied names identify the approved organization, account or
|
|
30
|
+
other subject. See [what changed and how to upgrade](docs/RELEASE_NOTES_v0.5.0.md).
|
|
17
31
|
|
|
18
32
|
It also keeps the visible conversation together with links to its business actions. If uploading
|
|
19
33
|
that record fails, it can retry after reconnecting or restarting without repeating those actions.
|
|
@@ -21,19 +35,20 @@ that record fails, it can retry after reconnecting or restarting without repeati
|
|
|
21
35
|
This is an independent community integration, not a plugin developed, certified, endorsed, or
|
|
22
36
|
recommended by DeepSeek.
|
|
23
37
|
|
|
38
|
+
|
|
24
39
|
## Install and start
|
|
25
40
|
|
|
26
41
|
You need Node.js `22.19.0+` or `24+`, pnpm, and a compatible DeepSeek Harness release. Your
|
|
27
42
|
administrator must first connect the business system to BailingHub. The matched release set is
|
|
28
|
-
**BailingHub Core 0.
|
|
43
|
+
**BailingHub Core 0.8.0 → BailingHub MCP/SDK 0.6.0 → this plugin 0.6.0**.
|
|
29
44
|
|
|
30
45
|
```bash
|
|
31
46
|
npm install --global pnpm @deepseek-ai/dsh@0.1.1-rc.2
|
|
32
|
-
dsh plugin --profile web add dsh-bailinghub@0.
|
|
47
|
+
dsh plugin --profile web add dsh-bailinghub@0.6.0
|
|
33
48
|
```
|
|
34
49
|
|
|
35
|
-
The plugin installs its exact `bailinghub-mcp-server@0.
|
|
36
|
-
For an existing installation, read the [
|
|
50
|
+
The plugin installs its exact `bailinghub-mcp-server@0.6.0` dependency automatically.
|
|
51
|
+
For an existing installation, read the [migration steps from 0.4.0 and earlier](docs/MIGRATION_VNEXT.md).
|
|
37
52
|
|
|
38
53
|
Follow the [getting started guide](docs/GETTING_STARTED.md) to enter your administrator's four
|
|
39
54
|
public connection values and authorize in the browser. Do not put a business password, Client
|
|
@@ -41,21 +56,26 @@ Token, signing secret, or model-provider key into this plugin's settings or chat
|
|
|
41
56
|
|
|
42
57
|
## Choose the accounts for each conversation
|
|
43
58
|
|
|
44
|
-
Authorize each account separately through
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
59
|
+
Authorize each account separately through its original business authorization page and verify the
|
|
60
|
+
approved subject. A compatible business backend supplies its display name automatically, such as
|
|
61
|
+
“Brand flagship store” or “Main warehouse”. A missing name is shown as “Authorization name pending
|
|
62
|
+
sync”; the plugin does not guess it from a local alias.
|
|
63
|
+
|
|
64
|
+
Names are for display only. Duplicate names and renames do not merge or recreate credentials,
|
|
65
|
+
change an original Session, or rewrite history. Keep the local connection selector and fixed key
|
|
66
|
+
independent from both the current business name and the system description.
|
|
48
67
|
|
|
49
68
|
In a **new conversation, before the first message**, run:
|
|
50
69
|
|
|
51
70
|
```text
|
|
52
71
|
/bailinghub connections list
|
|
53
|
-
/bailinghub scope set <
|
|
72
|
+
/bailinghub scope set <shop-connection-key> <inventory-connection-key>
|
|
54
73
|
/bailinghub scope
|
|
55
74
|
```
|
|
56
75
|
|
|
57
76
|
Replace the placeholders with the fixed keys from the list, not connection names. You can select
|
|
58
|
-
just one account
|
|
77
|
+
just one account, several accounts in one system, or several systems on the same Hub and audit
|
|
78
|
+
domain. Each selected target must have its own original Agent Session.
|
|
59
79
|
Wait for the command to confirm the selection, then send your request.
|
|
60
80
|
|
|
61
81
|
**New conversations start as ordinary chat until you select their business scope.** Logging in or
|
|
@@ -63,8 +83,8 @@ changing the default connection does not enable business tools. `/bailinghub sco
|
|
|
63
83
|
chooses ordinary chat. The first user message freezes the selection; start a new conversation to
|
|
64
84
|
change accounts or move from ordinary chat to business access.
|
|
65
85
|
|
|
66
|
-
|
|
67
|
-
call; it does not receive credentials. Every action still uses that account's own permissions and
|
|
86
|
+
Matching tools within one system are shared; same-named tools from different systems remain
|
|
87
|
+
separate. The Agent chooses the authorization for each call; it does not receive credentials. Every action still uses that account's own permissions and
|
|
68
88
|
approval rules. An approval-required action continues the original call after approval while that
|
|
69
89
|
conversation is still running.
|
|
70
90
|
|
|
@@ -75,7 +95,7 @@ A confirmed revocation or identity change requires a new conversation with a val
|
|
|
75
95
|
|
|
76
96
|
## Follow the conversation and its actions
|
|
77
97
|
|
|
78
|
-
With Core 0.
|
|
98
|
+
With Core 0.7.0 and SDK 0.5.0, BailingHub can show the visible user and assistant messages, turn
|
|
79
99
|
boundaries, and links to the original business runs as one conversation record. Each authorization
|
|
80
100
|
also keeps its own business-call record; the combined reply is not copied into every account's
|
|
81
101
|
memory.
|
|
@@ -156,6 +176,7 @@ identity separately. Custom DSH hosts must implement the [scope selection and re
|
|
|
156
176
|
and display confirmation before the first message. The native slash commands already use those
|
|
157
177
|
APIs. Tool envelopes, persistence, event schemas, and recovery limits are documented in the
|
|
158
178
|
[Agent Client contract](docs/AGENT_CLIENT_CONTRACT.md).
|
|
179
|
+
For the Local Agent attachment space (image-first), see [host artifact integration](docs/GENERATED_ARTIFACTS.md). Register approved conversation outputs, upload them once, and use ready URLs with existing business tools.
|
|
159
180
|
|
|
160
181
|
Use Native Tool Mode. DSH Code Mode is deliberately degraded because it cannot safely present the
|
|
161
182
|
current-turn dynamic schemas. See the [compatibility matrix](docs/COMPATIBILITY.md).
|
|
@@ -164,9 +185,18 @@ current-turn dynamic schemas. See the [compatibility matrix](docs/COMPATIBILITY.
|
|
|
164
185
|
|
|
165
186
|
Public `dsh-bailinghub@0.1.1` remains the separate static MCP compatibility path. It starts
|
|
166
187
|
`bailinghub-mcp-server@0.1.1`, uses one operator-provided route-scoped Client Token, and leaves
|
|
167
|
-
orchestration in BailingHub.
|
|
188
|
+
orchestration in BailingHub. The native plugin does not read or convert that credential. Keep the exact
|
|
168
189
|
legacy version when using that path and follow the [migration guide](docs/MIGRATION_VNEXT.md).
|
|
169
190
|
|
|
170
191
|
Report issues at [GitHub Issues](https://github.com/bailinghub/bailinghub-dsh-plugin/issues) with
|
|
171
192
|
versions and redacted errors. Do not include tokens, private URLs, personal data, or production
|
|
172
193
|
payloads. Compatibility tests and package downloads are not evidence of production adoption.
|
|
194
|
+
|
|
195
|
+
|
|
196
|
+
## Recover an original action after reopening
|
|
197
|
+
|
|
198
|
+
Version 0.6.0 adds a local invocation journal for actions such as a product listing
|
|
199
|
+
awaiting approval or an inventory update whose response was lost. Reopen the same conversation
|
|
200
|
+
and explicitly recover the original call without creating a second business request. Custom
|
|
201
|
+
hosts must retain the new store alongside their existing Session scope. See the
|
|
202
|
+
[recovery contract, limits and host integration](docs/INVOCATION_RECOVERY.md).
|
package/SECURITY.md
CHANGED
|
@@ -4,6 +4,39 @@ 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
|
+
## Cross-system scope in 0.5.0
|
|
8
|
+
|
|
9
|
+
Different applications/workspaces may participate only through a frozen same-Hub target set,
|
|
10
|
+
with a distinct original Session per target. Capability support must be explicitly negotiated;
|
|
11
|
+
unsupported Core/SDK combinations cannot start cross-system business runs. Each member keeps
|
|
12
|
+
its own app/workspace binding, credential checks, approval rules and original invocations.
|
|
13
|
+
The SDK verifies the full expected binding before target HTTP dispatch, including refresh.
|
|
14
|
+
|
|
15
|
+
Capability search requires an explicit target and sends a model-authored, task-specific query;
|
|
16
|
+
it cannot fan out to all systems by omitting a selector. Identical tool names or schemas in
|
|
17
|
+
different systems do not establish shared semantics. Scoped aliases map back to an immutable
|
|
18
|
+
original capability and an allowed authorization set. The host enforces target membership;
|
|
19
|
+
it does not automatically prove the business meaning of model-generated queries or arguments.
|
|
20
|
+
|
|
21
|
+
All original members must remain valid. Temporary validation failure closes a retryable gate;
|
|
22
|
+
confirmed identity replacement or revocation blocks the complete selection. Cancellation and
|
|
23
|
+
late responses cannot reactivate ended-turn tools. Scope/outbox v2 retains original membership,
|
|
24
|
+
event IDs and CAS; a downgrade cannot reinterpret that state as v1. Full transcript reading
|
|
25
|
+
remains in the Hub's management audit boundary, not an individual member's Agent bearer.
|
|
26
|
+
|
|
27
|
+
## System descriptions and authorization names
|
|
28
|
+
|
|
29
|
+
System purpose comes from controlled Client/route metadata and is read only for selected original
|
|
30
|
+
bindings before capability search. It is descriptive data, not executable instructions or a grant
|
|
31
|
+
of tools. Business backends supply subject display names for the actual approved identity; names
|
|
32
|
+
remain separate from internal keys, original Sessions and the system description. Only the name
|
|
33
|
+
field is projected, with bounded length, valid Unicode and no control or line-separator characters.
|
|
34
|
+
|
|
35
|
+
A duplicate or changed name cannot merge authorizations, replace scope members or rewrite archived
|
|
36
|
+
labels. SDK display-cache data is auxiliary and cannot validate credentials or mask a scope/archive
|
|
37
|
+
storage error. Missing or unsupported display metadata leaves existing tools unchanged; a confirmed
|
|
38
|
+
identity failure still blocks the complete selection.
|
|
39
|
+
|
|
7
40
|
## Public legacy 0.1.x boundary
|
|
8
41
|
|
|
9
42
|
This bundle contributes configuration only. It has no custom runtime JavaScript, production
|
|
@@ -19,9 +52,9 @@ configuration and are never model tool arguments.
|
|
|
19
52
|
|
|
20
53
|
Non-loopback HTTP is denied by default. Do not enable insecure HTTP on an untrusted network.
|
|
21
54
|
|
|
22
|
-
## Native 0.
|
|
55
|
+
## Native 0.5.0 boundary
|
|
23
56
|
|
|
24
|
-
The native 0.
|
|
57
|
+
The native 0.5.0 plugin accepts only `hubUrl`, `clientAppId`, `workspace`, and
|
|
25
58
|
`connectionName`. The generic SDK owns browser authorization, refresh, and secure credential
|
|
26
59
|
storage; business endpoints and final authorization remain Core/business-system concerns. The
|
|
27
60
|
Hub Client App owns one business authorization entry. That business page, not the plugin or model,
|
|
@@ -41,7 +74,7 @@ falsely report a complete logout.
|
|
|
41
74
|
Tools are Agent/run scoped. Message ids are replaced by Core-safe hash aliases, invocation ids are
|
|
42
75
|
stable 64-character digests, and an `accepted_unknown` outcome must resume that exact invocation
|
|
43
76
|
instead of creating a replacement. Completion retries are bounded and reuse one frozen,
|
|
44
|
-
visible-only payload. Version 0.
|
|
77
|
+
visible-only payload. Version 0.5.0 installs `bailinghub-mcp-server@0.5.0` as an exact ordinary
|
|
45
78
|
dependency and resolves its `./sdk` export. It does not depend on ambient modules, an optional
|
|
46
79
|
peer, a range, a dist-tag, or a local path. Public `0.1.1` does not provide that facade.
|
|
47
80
|
|
|
@@ -52,7 +85,7 @@ plugin never receives the credential value and never writes one into Cordis conf
|
|
|
52
85
|
|
|
53
86
|
## Same-system authorization selection
|
|
54
87
|
|
|
55
|
-
|
|
88
|
+
The same-system path introduced in 0.4.0 lets the model select a session-local `authorization_ref` from the current
|
|
56
89
|
conversation's directory. This is a constrained per-call selector, not a connection-management
|
|
57
90
|
tool or authority to supply a Hub, route, raw connection key, credential, or business identity.
|
|
58
91
|
The host must first explicitly select fixed connection keys for this conversation through
|
|
@@ -85,8 +118,11 @@ Each invocation binds its chosen authorization, Core run, and capability revisio
|
|
|
85
118
|
accepts only an invocation known to this conversation and resolves its original binding; the
|
|
86
119
|
model cannot provide a replacement authorization. Changing a default connection cannot retarget
|
|
87
120
|
an existing call.
|
|
88
|
-
|
|
89
|
-
|
|
121
|
+
The live invocation map supports later turns of the same conversation. The unreleased
|
|
122
|
+
[durable recovery journal](docs/INVOCATION_RECOVERY.md) additionally persists original
|
|
123
|
+
metadata before dispatch and validates it after reopening. New conversations, missing records,
|
|
124
|
+
and conflicting original identities still reject recovery. Raw parameters and credentials do
|
|
125
|
+
not belong in the invocation journal; model text never reconstructs its authority.
|
|
90
126
|
|
|
91
127
|
Only non-secret scope metadata belongs in the scope store. Its default file store uses SHA-256 session filenames,
|
|
92
128
|
mode-0600 files and mode-0700 directories on POSIX, bounded reads, rejection of symlinks/non-regular files,
|
|
@@ -141,3 +177,8 @@ that validation. Confirmed revocation/replacement and storage/CAS conflicts rema
|
|
|
141
177
|
blocked, with no default or subset fallback. The gate is rechecked after asynchronous archive
|
|
142
178
|
capability discovery and outbox opening; a late result cannot erase a confirmed revocation.
|
|
143
179
|
Known local storage errors and capture gaps remain visible even while network or scope checks block upload.
|
|
180
|
+
|
|
181
|
+
|
|
182
|
+
## Task records in 0.6.0
|
|
183
|
+
|
|
184
|
+
A private persistent task store binds the original Session, fixed members and administrator-created task. It does not store administrative credentials or grant model task-management authority. Retain original scope, task, invocation and archive records; storage errors never downgrade to an unrestricted flow. Task enrollment persists on the original Agent Session even after cancellation. Do not downgrade an enrolled authorization to a host/Core that ignores that requirement. See [task control](docs/TASK_CONTROL.md) and [upgrade](docs/UPGRADE_v0.6.0.en.md).
|