@shgroup/dsh-serenity-hooks 1.34.1 → 1.34.2
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/dsh.plugin.json +1 -1
- package/lib/host/contract.d.ts +17 -5
- package/lib/index.js +19 -28
- package/package.json +1 -1
package/dsh.plugin.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"id": "dsh-serenity-hooks",
|
|
3
|
-
"version": "1.34.
|
|
3
|
+
"version": "1.34.2",
|
|
4
4
|
"main": "lib/index.js",
|
|
5
5
|
"description": "宁静号 ACC harness(Native Cordis 插件):给 DSH 装一个「AI 工作区」——11 个工具(container_fs/container_trajectory/dashboard/container_git/msm/praxis/handyman/localstore/container_admin/im-bridge/acc-diag;后两个按配置条件出现)+ 机械约束(安全模式/工作区围墙/密钥守卫)+ 轨迹日志与原地重建 + 网页登录入口/微信桥/子角色/对外问答页/trajectory 唤醒注册表。适配 DSH 0.1.5-rc.2(deepseek-ai/deepseek-harness)。",
|
|
6
6
|
"engines": {
|
package/lib/host/contract.d.ts
CHANGED
|
@@ -101,15 +101,27 @@ export declare function checkHostVersion(version: string | null): {
|
|
|
101
101
|
*/
|
|
102
102
|
export declare function probeHostContract(ctx: unknown, hostVersion?: string | null): HostContractReport;
|
|
103
103
|
/**
|
|
104
|
-
*
|
|
104
|
+
* 取宿主契约报告——**每次调用现探**(`ctx` 决定"问谁",**不缓存"答案"**)。
|
|
105
105
|
*
|
|
106
|
-
*
|
|
106
|
+
* 为什么**不缓存**(R↓:一个被实测推翻的设计,留档以免重犯):
|
|
107
|
+
* v1.34.1 曾把 `apply()` 时的探针结果存为模块级快照,理由是"两者对**同一个已装载的宿主**
|
|
108
|
+
* 问同一个问题,第二次计算的答案**不可能不同**,成本却是一次全服务遍历"。
|
|
109
|
+
* **该前提被实测证伪**(本机 2026-09-15,v1.34.1 部署后):
|
|
110
|
+
* - `apply()` 跑在装载早期,表中 `access:'lazy'` 的服务**尚未实例化**(`ctx.get` 返回 undefined)
|
|
111
|
+
* ⇒ 启动探针把它们记为 `not available (lazy)`;
|
|
112
|
+
* - 到 `dashboard health` 被调用时它们早已可用 ⇒ **现探给的是相反结论**。
|
|
113
|
+
* - 实测差异:快照 = `checked 36 / issues 3`(含 `workspaceRegistry not available` + 后果
|
|
114
|
+
* "工作区白名单下拉为空"),而**同一时刻** `GET /serenity/cccs` 正常返回 **4 个工作区**
|
|
115
|
+
* (含 3 个无 live 会话的冷 CCC)⇒ 快照渲染出的是**假阴性**。
|
|
116
|
+
* ⇒ 「两次探针」**不是重复计算,问的是两个时刻**;缓存答案 = 把装载瞬间的观测冒充运行态事实。
|
|
117
|
+
*
|
|
118
|
+
* 保留统一入口的收益(这才是 C5 的正确部分):取数口唯一——`container-status` / `kit-ops`
|
|
119
|
+
* 只问这一个函数;将来若要"筛掉装载期噪声",只需改这一处。
|
|
120
|
+
*
|
|
121
|
+
* @param ctx 宿主上下文;**未给** ⇒ 返回 `null`(不猜、不暗跑探针)
|
|
107
122
|
* @param hostVersion 运行中宿主版本(`readDshVersion()`;null = 未知)
|
|
108
|
-
* @returns 契约报告;快照未捕获且未给 `ctx` → `null`(不猜、不重算)
|
|
109
123
|
*/
|
|
110
124
|
export declare function hostContractReport(ctx?: unknown, hostVersion?: string | null): HostContractReport | null;
|
|
111
|
-
/** 测试用:复位进程内快照(避免用例间串味;与 `__resetWakeSchedulerStateForTest` 同规格) */
|
|
112
|
-
export declare function __resetHostContractForTest(): void;
|
|
113
125
|
/** 单行摘要(启动告警用) */
|
|
114
126
|
export declare function summarizeHostContract(report: HostContractReport): string;
|
|
115
127
|
export {};
|
package/lib/index.js
CHANGED
|
@@ -7966,38 +7966,29 @@ function probeHostContract(ctx, hostVersion = null) {
|
|
|
7966
7966
|
};
|
|
7967
7967
|
}
|
|
7968
7968
|
/**
|
|
7969
|
-
*
|
|
7970
|
-
*
|
|
7971
|
-
*
|
|
7972
|
-
*
|
|
7973
|
-
*
|
|
7974
|
-
*
|
|
7975
|
-
*
|
|
7976
|
-
*
|
|
7977
|
-
*
|
|
7978
|
-
*
|
|
7979
|
-
*
|
|
7980
|
-
*
|
|
7981
|
-
*
|
|
7982
|
-
*
|
|
7983
|
-
*
|
|
7984
|
-
*
|
|
7985
|
-
*
|
|
7986
|
-
*
|
|
7987
|
-
*/
|
|
7988
|
-
let snapshot = null;
|
|
7989
|
-
/**
|
|
7990
|
-
* 取宿主契约报告——**进程内唯一来源**。
|
|
7991
|
-
*
|
|
7992
|
-
* @param ctx 宿主上下文;**仅当快照尚未捕获时**用于跑探针(首见即捕获一次)
|
|
7969
|
+
* 取宿主契约报告——**每次调用现探**(`ctx` 决定"问谁",**不缓存"答案"**)。
|
|
7970
|
+
*
|
|
7971
|
+
* 为什么**不缓存**(R↓:一个被实测推翻的设计,留档以免重犯):
|
|
7972
|
+
* v1.34.1 曾把 `apply()` 时的探针结果存为模块级快照,理由是"两者对**同一个已装载的宿主**
|
|
7973
|
+
* 问同一个问题,第二次计算的答案**不可能不同**,成本却是一次全服务遍历"。
|
|
7974
|
+
* **该前提被实测证伪**(本机 2026-09-15,v1.34.1 部署后):
|
|
7975
|
+
* - `apply()` 跑在装载早期,表中 `access:'lazy'` 的服务**尚未实例化**(`ctx.get` 返回 undefined)
|
|
7976
|
+
* ⇒ 启动探针把它们记为 `not available (lazy)`;
|
|
7977
|
+
* - 到 `dashboard health` 被调用时它们早已可用 ⇒ **现探给的是相反结论**。
|
|
7978
|
+
* - 实测差异:快照 = `checked 36 / issues 3`(含 `workspaceRegistry not available` + 后果
|
|
7979
|
+
* "工作区白名单下拉为空"),而**同一时刻** `GET /serenity/cccs` 正常返回 **4 个工作区**
|
|
7980
|
+
* (含 3 个无 live 会话的冷 CCC)⇒ 快照渲染出的是**假阴性**。
|
|
7981
|
+
* ⇒ 「两次探针」**不是重复计算,问的是两个时刻**;缓存答案 = 把装载瞬间的观测冒充运行态事实。
|
|
7982
|
+
*
|
|
7983
|
+
* 保留统一入口的收益(这才是 C5 的正确部分):取数口唯一——`container-status` / `kit-ops`
|
|
7984
|
+
* 只问这一个函数;将来若要"筛掉装载期噪声",只需改这一处。
|
|
7985
|
+
*
|
|
7986
|
+
* @param ctx 宿主上下文;**未给** ⇒ 返回 `null`(不猜、不暗跑探针)
|
|
7993
7987
|
* @param hostVersion 运行中宿主版本(`readDshVersion()`;null = 未知)
|
|
7994
|
-
* @returns 契约报告;快照未捕获且未给 `ctx` → `null`(不猜、不重算)
|
|
7995
7988
|
*/
|
|
7996
7989
|
function hostContractReport(ctx, hostVersion = null) {
|
|
7997
|
-
if (snapshot !== null) return snapshot;
|
|
7998
7990
|
if (ctx === void 0) return null;
|
|
7999
|
-
|
|
8000
|
-
return snapshot;
|
|
7991
|
+
return probeHostContract(ctx, hostVersion);
|
|
8001
7992
|
}
|
|
8002
7993
|
/** 单行摘要(启动告警用) */
|
|
8003
7994
|
function summarizeHostContract(report) {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@shgroup/dsh-serenity-hooks",
|
|
3
|
-
"version": "1.34.
|
|
3
|
+
"version": "1.34.2",
|
|
4
4
|
"description": "宁静号 ACC harness(Native Cordis 插件)——给 DeepSeek Harness 装一个「AI 工作区」:11 个工具(container_fs/container_trajectory/dashboard/container_git/msm/praxis/handyman/localstore/container_admin/im-bridge/acc-diag)+ 机械约束(安全模式/工作区围墙/密钥守卫/对外输出守卫)+ 工作日志与原地重建 + 网页登录入口/微信桥/子角色/对外问答页/trajectory 唤醒注册表。适配 DSH 0.1.5-rc.2。",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"repository": {
|