@stofone/dsh-agent-roster 0.10.3 → 0.10.5
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 +25 -1
- package/README.md +1 -1
- package/README.zh.md +1 -1
- package/bin/cli.mjs +1 -1
- package/lib/migrate.js +1 -1
- package/lib/service.js +1 -0
- package/lib/tools.js +2 -0
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -4,6 +4,28 @@
|
|
|
4
4
|
|
|
5
5
|
## [Unreleased]
|
|
6
6
|
|
|
7
|
+
## [0.10.5] - 2026-11-03
|
|
8
|
+
|
|
9
|
+
### Fixed
|
|
10
|
+
|
|
11
|
+
- **`roster_index` could not run at all.** Its `execute()` called `loadRemotePanel` and `fetchCollection`,
|
|
12
|
+
neither of which was imported; the module loaded fine and threw `ReferenceError` on the first call.
|
|
13
|
+
It now imports both, and a test executes the tool so this class of breakage cannot pass silently again.
|
|
14
|
+
- **Every public collection answered HTTP 404.** `loadRemotePanel` rebuilds each registry collection from
|
|
15
|
+
an explicit field list, and `files` was not on it — so every URL fell back to the v1 path
|
|
16
|
+
`<id>/roster.yaml`, which no longer exists for a v2 library. The projection keeps `files` now, with a
|
|
17
|
+
test that fails if the field is dropped again.
|
|
18
|
+
|
|
19
|
+
## [0.10.4] - 2026-11-03
|
|
20
|
+
|
|
21
|
+
### Fixed
|
|
22
|
+
|
|
23
|
+
- **`compile --repo` was accepted and ignored.** The flag was parsed, then the artifact recorded `ownRepo()`
|
|
24
|
+
— the coordinates of whichever checkout ran the compiler. A repository that committed `dist/` therefore
|
|
25
|
+
disagreed with its own CI on every run: the drift check recompiled, got a different `source.repo`, and
|
|
26
|
+
failed. `migrate` had the same fault one layer down: it passed `source: {}` to the compiler instead of
|
|
27
|
+
the repository it was told to record. Both now write the coordinates they were given, and a test pins it.
|
|
28
|
+
|
|
7
29
|
## [0.10.3] - 2026-11-03
|
|
8
30
|
|
|
9
31
|
### Added
|
|
@@ -490,7 +512,9 @@
|
|
|
490
512
|
- 工具返回值含 `undefined` 键,运行时按 `value is not lossless JSON` 整次拒绝;缺失值统一写 `null`,
|
|
491
513
|
且所有返回值先过 `lib/json.js#lossless`。
|
|
492
514
|
|
|
493
|
-
[Unreleased]: https://github.com/dsh-agent-roster/dsh-agent-roster/compare/v0.10.
|
|
515
|
+
[Unreleased]: https://github.com/dsh-agent-roster/dsh-agent-roster/compare/v0.10.5...main
|
|
516
|
+
[0.10.5]: https://github.com/dsh-agent-roster/dsh-agent-roster/compare/v0.10.4...v0.10.5
|
|
517
|
+
[0.10.4]: https://github.com/dsh-agent-roster/dsh-agent-roster/compare/v0.10.3...v0.10.4
|
|
494
518
|
[0.10.3]: https://github.com/dsh-agent-roster/dsh-agent-roster/compare/v0.10.2...v0.10.3
|
|
495
519
|
[0.10.2]: https://github.com/dsh-agent-roster/dsh-agent-roster/compare/v0.10.1...v0.10.2
|
|
496
520
|
[0.10.1]: https://github.com/dsh-agent-roster/dsh-agent-roster/compare/v0.10.0...v0.10.1
|
package/README.md
CHANGED
|
@@ -480,7 +480,7 @@ test/ unit tests
|
|
|
480
480
|
|
|
481
481
|
Verified on this machine:
|
|
482
482
|
|
|
483
|
-
- `npm test` —
|
|
483
|
+
- `npm test` — 295/295 passing (format, parse, validate, registry, paths, bridge, verify buckets, digests and provenance, roster diff, capability requirements and the capability gate, library organization, registry schema, lossless JSON, write plan/apply, all routes, panel snapshot and hints, dictionary consistency, tool contracts, client loader contract, library snapshot, config view, package manifest, declared fields and captain block, schema/constant alignment, the v2 role/roster/compiled layers and their schema alignment, v1→v2 migration, run records feeding the plan, remote registry and one-click install).
|
|
484
484
|
- `npm run smoke` — `apply()` registers all six tools through a real `defineTool` from a DSH bundle; `roster_list` / `roster_show` / `roster_create` / `roster_verify` / `roster_diff` execute, every output survives `lossless` checks, `path` overrides are honored, effect disposal runs cleanly. The same command then loads `client.js` against a stubbed module table and asserts the three slot registrations, style injection and effect disposal.
|
|
485
485
|
- CLI: `validate --dir examples` returns exit 0 over both example libraries.
|
|
486
486
|
- Installed into a real profile with the plugin manager (`plugin_manager install_bundle` against this directory → `link:` dependency + bundle entry); the profile re-reads the linked files on restart.
|
package/README.zh.md
CHANGED
|
@@ -454,7 +454,7 @@ test/ 单测
|
|
|
454
454
|
|
|
455
455
|
本机已验证:
|
|
456
456
|
|
|
457
|
-
- `npm test` ——
|
|
457
|
+
- `npm test` —— 295/295 通过(格式、解析、校验、扫描、路径、桥接、核对四桶、摘要与溯源、档案差异、能力要求与能力闸门、档案库组织、索引 schema、无损 JSON、写入计划与执行、六条路由、快照与提示、两本词典一致、工具契约、客户端加载器契约、包清单、配置视图、样式 token 约束、声明层字段与队长段、schema 与常量对齐、v2 角色/组装/编译三层及其 schema 对齐、v1→v2 迁移、执行回执并入施工图)。
|
|
458
458
|
- `npm run smoke` —— 用真实 DSH bundle 的 `defineTool` 注册六个工具,逐个调用:输出全部通过无损校验、`path` 覆盖生效、释放干净;同一条命令随后用桩模块表加载 `client.js`,断言三处槽位注册、样式只注入一次、effect 可回收。
|
|
459
459
|
- CLI:`validate --dir examples` 对两座示例库退出码 0。
|
|
460
460
|
- 用插件管理器真的装进了本机 profile(`plugin_manager install_bundle` 指向本仓库 → `link:` 依赖 + bundle 条目),重启后按链接读取本仓库文件。
|
package/bin/cli.mjs
CHANGED
|
@@ -275,7 +275,7 @@ async function runCompile(options) {
|
|
|
275
275
|
const result = compileRosterAt(rosterDir, {
|
|
276
276
|
rolesDir,
|
|
277
277
|
knownToolPolicies: options.knownPolicies.length > 0 ? options.knownPolicies : null,
|
|
278
|
-
source: { repo: ownRepo(), ref: "main" },
|
|
278
|
+
source: { repo: options.repo ?? ownRepo(), ref: "main" },
|
|
279
279
|
});
|
|
280
280
|
|
|
281
281
|
const diagnostics = [...(result.diagnostics ?? [])];
|
package/lib/migrate.js
CHANGED
|
@@ -295,7 +295,7 @@ export function migrateLibrary(rootDir, { write = false, knownToolPolicies = nul
|
|
|
295
295
|
roles: scanned.roles,
|
|
296
296
|
expectedId: entry.id,
|
|
297
297
|
knownToolPolicies,
|
|
298
|
-
source: {},
|
|
298
|
+
source: { ...source },
|
|
299
299
|
});
|
|
300
300
|
if (!compiled.ok) {
|
|
301
301
|
report.diagnostics.push({
|
package/lib/service.js
CHANGED
|
@@ -461,6 +461,7 @@ export async function loadRemotePanel(config, options = {}) {
|
|
|
461
461
|
repo: collection.repo,
|
|
462
462
|
ref: collection.ref,
|
|
463
463
|
path: collection.path,
|
|
464
|
+
files: collection.files,
|
|
464
465
|
rosters: collection.rosters,
|
|
465
466
|
tags: collection.tags,
|
|
466
467
|
license: collection.license,
|
package/lib/tools.js
CHANGED
|
@@ -19,6 +19,8 @@ import { LIMITS } from "./format.js";
|
|
|
19
19
|
import { resolveDirSpec } from "./home.js";
|
|
20
20
|
import { lossless } from "./json.js";
|
|
21
21
|
import { findRoster, loadRosterAt, scanRosterLibrary } from "./registry.js";
|
|
22
|
+
import { fetchCollection } from "./remote.js";
|
|
23
|
+
import { loadRemotePanel } from "./service.js";
|
|
22
24
|
import {
|
|
23
25
|
renderBridgePlan,
|
|
24
26
|
renderCapabilityGate,
|
package/package.json
CHANGED