@stofone/dsh-agent-roster 0.6.1 → 0.7.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 +76 -1
- package/LICENSE +21 -21
- package/README.md +370 -319
- package/README.zh.md +57 -8
- package/index.js +2 -2
- package/lib/bridge.js +89 -10
- package/lib/capabilities.js +434 -0
- package/lib/diff.js +216 -0
- package/lib/digest.js +65 -0
- package/lib/library.js +5 -0
- package/lib/registry.js +127 -4
- package/lib/render.js +238 -7
- package/lib/tools.js +248 -23
- package/lib/verify.js +135 -10
- package/package.json +5 -2
- package/schema/capabilities.v1.schema.json +124 -0
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,80 @@
|
|
|
2
2
|
|
|
3
3
|
遵循 [Keep a Changelog](https://keepachangelog.com/zh-CN/1.1.0/) 与 [SemVer](https://semver.org/lang/zh-CN/)。
|
|
4
4
|
|
|
5
|
+
## [Unreleased]
|
|
6
|
+
|
|
7
|
+
## [0.7.0] - 2026-11-02
|
|
8
|
+
|
|
9
|
+
### Honest verification (issue #2)
|
|
10
|
+
|
|
11
|
+
- **`omitted` is split in two.** "The roster did not declare this field" and "the roster declared
|
|
12
|
+
a value, the runtime never persisted it" used to collapse into one status that the summary
|
|
13
|
+
counted as "not degraded". They are now `omitted` (nothing to check, expected) and
|
|
14
|
+
`not-persisted` (sent, no receipt, counted as degraded). `systemPrompt` lands in the second
|
|
15
|
+
bucket because `team.json` members have no `executionPrompt` key at all — the persona was
|
|
16
|
+
never actually verified before.
|
|
17
|
+
- **One predicate instead of three.** `isBindingFaithful` now delegates to
|
|
18
|
+
`summarizeBinding(...).faithful`, so the note and the implementation cannot drift apart again.
|
|
19
|
+
- **Four mutually exclusive buckets** in `roster_verify`: `faithful` / `unverified` / `drift` /
|
|
20
|
+
`missing`. `ok` requires `drift === 0 && missing === 0`, and `unverified` is printed on the
|
|
21
|
+
status line and the summary instead of hiding inside "degraded".
|
|
22
|
+
- **Materialised tool filters are visible.** Each member shows `deny`/`allow` counts and a
|
|
23
|
+
digest of the normalised list; the same `toolPolicy` materialising into two different deny
|
|
24
|
+
lists inside one team is reported as policy drift.
|
|
25
|
+
- **Provenance.** `roster_create` emits `roster:<id>@<version>#<sha8>` for the created team's
|
|
26
|
+
description; `roster_verify` parses it back and reports `absent` / `id-only` / `match` /
|
|
27
|
+
`differ` / `unknown-roster`. The plugin still never writes team state.
|
|
28
|
+
- **New tool `roster_diff`** — roster-to-roster diff for generation hand-over: members matched
|
|
29
|
+
by name (`aliases` are a hint, never auto-merged), effective values compared with their
|
|
30
|
+
origin, persona compared by length and hash only.
|
|
31
|
+
|
|
32
|
+
### Capability requirements (new sibling file)
|
|
33
|
+
|
|
34
|
+
- **`capabilities.yaml`** — an optional file next to `roster.yaml` that declares what the
|
|
35
|
+
deployment must provide: `requires.skills`, `requires.toolPolicies`, `onMissing`
|
|
36
|
+
(`refuse` | `degraded`), `asOf` (date only) and `notes`. Unknown keys and unknown requirement
|
|
37
|
+
categories are errors: model routing, plugin versions, credential pointers and business
|
|
38
|
+
preconditions have no evidence source, so declaring them would only manufacture a new kind of
|
|
39
|
+
false green.
|
|
40
|
+
- **Three states, not two.** `checkCapabilities` answers `present` / `missing` / `unknown`;
|
|
41
|
+
only `missing` (the evidence source explicitly says no) trips the gate. `unknown` is neither a
|
|
42
|
+
pass nor a failure and is always printed.
|
|
43
|
+
- **`roster_create` refuses instead of warning.** With a `missing` requirement under
|
|
44
|
+
`onMissing: refuse` it emits no `agent_teams_add_member` argument at all and prints where each
|
|
45
|
+
requirement has to be installed. `onMissing: degraded` hands over the arguments and records
|
|
46
|
+
the debt.
|
|
47
|
+
- **`roster_verify`** gains `requires=<missing>missing/<declared>` and `capabilityBlocked` in its
|
|
48
|
+
status line, a capability section in the body, `ok` includes `capabilityBlocked === 0`, and a
|
|
49
|
+
structured `capabilities` field.
|
|
50
|
+
- **`roster_show`** prints the declaration block.
|
|
51
|
+
- New `schema/capabilities.v1.schema.json`, pinned to `lib/capabilities.js` by
|
|
52
|
+
`test/capabilities.test.js`.
|
|
53
|
+
|
|
54
|
+
- **The panel sees it.** Capability requirements surface as roster diagnostics: a missing
|
|
55
|
+
`toolPolicies` requirement is `error` under `refuse` (the sidebar badge turns red) and `warn`
|
|
56
|
+
under `degraded`; skill requirements are `capability-skills-unverified` / `info` because the
|
|
57
|
+
panel snapshot is synchronous and cannot enumerate the catalogue; an unset `knownToolPolicies`
|
|
58
|
+
yields one `capability-cross-check-skipped` entry naming the affected rosters.
|
|
59
|
+
|
|
60
|
+
### Docs
|
|
61
|
+
|
|
62
|
+
- README (both languages): six tools, the new verification buckets, `roster_diff`, a
|
|
63
|
+
"one roster per directory, two generations per machine" section answering how to keep both
|
|
64
|
+
generations side by side, and a "capability requirements" section covering the three-state
|
|
65
|
+
check and the gate.
|
|
66
|
+
|
|
67
|
+
## [0.6.2] - 2026-10-30
|
|
68
|
+
|
|
69
|
+
### Packaging
|
|
70
|
+
|
|
71
|
+
- `peerDependencies` for `@deepseek-ai/dsh-tools` no longer uses the wildcard. node-semver only
|
|
72
|
+
admits a prerelease version when one comparator in the range shares its exact
|
|
73
|
+
`major.minor.patch` tuple and itself carries a prerelease tag, so `*` — like the broad
|
|
74
|
+
`>=0.0.1-rc.1 <0.2.0` form — silently excludes every prerelease harness build. The range is now
|
|
75
|
+
`^0.1.0-rc.1 || ^0.2.0-rc.1 || ^0.2.1-rc.1 || ^0.3.0-rc.1`, which admits the 0.1.x, 0.2.0-x,
|
|
76
|
+
0.2.1-x and 0.3.x prerelease lines while still refusing 0.4.x prereleases.
|
|
77
|
+
- No runtime change; the peer stays optional because the host always provides the module.
|
|
78
|
+
|
|
5
79
|
## [0.6.1] - 2026-10-30
|
|
6
80
|
|
|
7
81
|
### Custom registry mirror
|
|
@@ -189,5 +263,6 @@
|
|
|
189
263
|
- 工具返回值含 `undefined` 键,运行时按 `value is not lossless JSON` 整次拒绝;缺失值统一写 `null`,
|
|
190
264
|
且所有返回值先过 `lib/json.js#lossless`。
|
|
191
265
|
|
|
192
|
-
[Unreleased]: https://github.com/STofone/dsh-agent-roster/compare/v0.
|
|
266
|
+
[Unreleased]: https://github.com/STofone/dsh-agent-roster/compare/v0.7.0...main
|
|
267
|
+
[0.7.0]: https://github.com/STofone/dsh-agent-roster/releases/tag/v0.7.0
|
|
193
268
|
[0.2.0]: https://github.com/STofone/dsh-agent-roster/releases/tag/v0.2.0
|
package/LICENSE
CHANGED
|
@@ -1,21 +1,21 @@
|
|
|
1
|
-
MIT License
|
|
2
|
-
|
|
3
|
-
Copyright (c) 2026 STofone
|
|
4
|
-
|
|
5
|
-
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
-
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
-
in the Software without restriction, including without limitation the rights
|
|
8
|
-
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
-
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
-
furnished to do so, subject to the following conditions:
|
|
11
|
-
|
|
12
|
-
The above copyright notice and this permission notice shall be included in all
|
|
13
|
-
copies or substantial portions of the Software.
|
|
14
|
-
|
|
15
|
-
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
-
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
-
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
-
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
-
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
-
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
-
SOFTWARE.
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 STofone
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|