@shgroup/dsh-serenity-hooks 1.57.0 → 1.57.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/lib/acp-core.d.ts DELETED
@@ -1,80 +0,0 @@
1
- /**
2
- * acp-core.ts — ACP 会话管理层(F4c,v1.26.0 实验性)
3
- *
4
- * **传输无关**:方法处理器(initialize/session/new/prompt/cancel/list/close/request_permission)
5
- * 不依赖任何传输(stdio/HTTP/直调)——企业微信桥同进程直调处理器函数,
6
- * acp-http 端点(外部程序化面)与未来 stdio 独立进程复用同一处理器。
7
- *
8
- * Skiff 映射(S142 用户拍板:指定 认知容器+角色+会话(可选)进行对话):
9
- * - session/new { ccc, role, sessionId? } → createSkiffAgent / getSkiffAgent 复用
10
- * (无 sessionId → 新建;有 → 进程内延续——与 v1.25.10 调试页同语义)
11
- * - session/prompt → askSkiff(agent, question, 0)(全量轨迹)
12
- * - session/cancel → agent.interrupt(DSH 能力)
13
- * - session/close → unregisterSkiffSession(释放 agent + 注册表清理)
14
- * - session/request_permission → 恒 allow(G9:白名单即授权)
15
- *
16
- * 实验性质:仅当 ACP 服务装配(settings acpEnabled)且 CCC 配置了角色时才创建 agent;
17
- * 未启用时本模块零副作用(无监听、无 agent)。
18
- */
19
- import type { Context } from 'cordis';
20
- interface JsonRpcResponse {
21
- jsonrpc: '2.0';
22
- id: string | number | null;
23
- result?: unknown;
24
- error?: {
25
- code: number;
26
- message: string;
27
- data?: unknown;
28
- };
29
- }
30
- /** JSON-RPC 错误码(对齐标准) */
31
- export declare const RPC_ERROR: {
32
- readonly PARSE: -32700;
33
- readonly INVALID_REQUEST: -32600;
34
- readonly METHOD_NOT_FOUND: -32601;
35
- readonly INVALID_PARAMS: -32602;
36
- readonly INTERNAL: -32603;
37
- };
38
- /**
39
- * ACP 会话管理器:持有 skiff agent 会话(与 skiff-core 注册表同源——
40
- * 创建走 createSkiffAgent(自动注册),关闭走 unregisterSkiffSession)。
41
- * 传输无关:HTTP 端点/企业微信桥/未来 stdio 都调 handle(method, params)。
42
- */
43
- export declare class AcpServer {
44
- private readonly ctx;
45
- constructor(ctx: Context);
46
- /** 实现级方法调度(返回 result 或抛 JSON-RPC 语义错误) */
47
- handle(method: string, params: Record<string, unknown> | undefined): Promise<unknown>;
48
- private initialize;
49
- /**
50
- * session/new:{ ccc, role, sessionId? } → 创建或延续 skiff 会话。
51
- * 无 sessionId → createSkiffAgent(新会话,continued:false);
52
- * 有 → 进程内延续(getSkiffAgent 命中 + role/ccc 绑定校验;未命中 → 错误)。
53
- */
54
- private newSession;
55
- private listSessions;
56
- /**
57
- * session/prompt:{ sessionId, question } → 答案(**v1.26.10:不返回 trajectory**——
58
- * 3100 对外只提供问答,轨迹含工具结果等内部信息;3099 调试页另走 /ask 保留)
59
- */
60
- private prompt;
61
- /** session/cancel:{ sessionId } → 取消该会话的当前活动(Agent.cancel,宿主 rc.1 契约) */
62
- private cancel;
63
- /** session/close:{ sessionId } → 释放 agent + 注册表清理(进程内) */
64
- private closeSession;
65
- }
66
- /** 方法不存在错误(JSON-RPC -32601) */
67
- export declare class RpcMethodError extends Error {
68
- constructor(message: string);
69
- }
70
- /** 参数错误(JSON-RPC -32602) */
71
- export declare class RpcInvalidParams extends Error {
72
- constructor(message: string);
73
- }
74
- /**
75
- * JSON-RPC 2.0 批处理(单帧):解析请求/通知 → 调 AcpServer.handle → 响应。
76
- * 传输无关:acp-http 端点 / 未来 stdio 共用。
77
- * @returns 响应帧数组(请求有响应;通知无;解析失败 → 单错误响应)
78
- */
79
- export declare function dispatchRpc(server: AcpServer, frame: unknown): Promise<JsonRpcResponse[]>;
80
- export {};
package/lib/acp-http.d.ts DELETED
@@ -1,37 +0,0 @@
1
- /**
2
- * acp-http.ts — ACP HTTP JSON-RPC + 建议问答页(F4c/F4d,v1.26.x 实验性)
3
- *
4
- * node:http 服务(默认关,仅监听 127.0.0.1;启停 = 人工——设置面板「Serenity」
5
- * 页 ACP 区块开关 / 问答页开关,不随插件加载自动启动;仿 skiff 调试服务模式)。
6
- *
7
- * - POST / → JSON-RPC 2.0 单帧/批处理(acpEnabled 门控;ACP 程序化面)
8
- * - GET / → 容器列表页(publicAskEnabled 门控;v1.26.2:只列已开放容器)
9
- * - GET /c/<name> → 单容器问答页(v1.26.2:URL 体现容器名,用户只输 key)
10
- * - POST /c/<name>/ask → 该容器问答(key 校验 + allowed 白名单校验)
11
- * - POST /ask → 兼容旧形态 { key, ccc, ... }(key 校验 + allowed 校验)
12
- *
13
- * 与 skiff 调试页(人工测试面)共享同一会话核心(acp-core → skiff-core);
14
- * 企业微信桥(F4c-2)同进程直调 acp-core 处理器函数,不经本端点。
15
- * stdio 形态(独立进程部署)后续复用同一 acp-core(官方 NDJSON 帧格式)。
16
- *
17
- * 实验性质:未开启时零资源占用(无监听、无 agent 创建)。
18
- */
19
- import type { Context } from 'cordis';
20
- import { type FaceSpec } from './face-host.js';
21
- export declare function acpHttpActive(): boolean;
22
- export declare function acpHttpPort(): number | null;
23
- /**
24
- * 本面的规格(C4 块 A/④:**只提供** name/port/host/enabled/handler)。
25
- * 两个子面(ACP JSON-RPC / 对外问答页)的路由与鉴权仍全部归 {@link handle}——
26
- * 面宿主不介入面语义,也**不合并** D/E 两面(两者共用会话核心但各有独立 listener/路由/HTML)。
27
- */
28
- export declare function acpHttpSpec(ctx: Context, port: number, defaultRoot?: string): FaceSpec;
29
- /**
30
- * 启动 ACP HTTP JSON-RPC + 建议问答页服务(单实例;重复启动幂等返回既有实例)。
31
- * C4 块 A:listener 的创建/监听/错误/端口占用/关闭归 `face-host`。
32
- * @param ctx 插件上下文(AcpServer 内部经 skiff-core 创建 agent)
33
- * @param port 监听端口(仅 127.0.0.1)
34
- * @param defaultRoot 默认 CCC 根(问答页候选发现兜底;resolveSkiffRoot 传入)
35
- */
36
- export declare function startAcpHttpServer(ctx: Context, port: number, defaultRoot?: string): Promise<void>;
37
- export declare function stopAcpHttpServer(): void;
@@ -1,43 +0,0 @@
1
- import { dirname, join } from "node:path";
2
- import { readFileSync } from "node:fs";
3
- import { fileURLToPath } from "node:url";
4
- //#region src/constants.ts
5
- /** 常量(纯模块,零 DSH 依赖) */
6
- /**
7
- * ACC 版本:自动从 package.json 读取(单一真相源,消除与 CHANGELOG 的漂移)。
8
- * 发布时只需改 package.json 的 version。
9
- */
10
- const ACC_VERSION = (() => {
11
- try {
12
- const here = dirname(fileURLToPath(import.meta.url));
13
- return JSON.parse(readFileSync(join(here, "..", "package.json"), "utf-8")).version ?? "0.0.0";
14
- } catch {
15
- return "0.0.0";
16
- }
17
- })();
18
- //#endregion
19
- //#region src/skiff-registry.ts
20
- const skiffSessions = /* @__PURE__ */ new Map();
21
- /** 查 sessionId 的 Skiff 角色名(无 → null)——向后兼容(guards/seams 依赖) */
22
- function skiffRoleFor(sessionId) {
23
- return skiffSessions.get(sessionId)?.role ?? null;
24
- }
25
- /** 查 sessionId 的完整绑定(role + ccc;无 → null)——v1.25.10 会话追问校验 */
26
- function skiffSessionInfo(sessionId) {
27
- return skiffSessions.get(sessionId) ?? null;
28
- }
29
- function registerSkiffSession(sessionId, role, ccc) {
30
- skiffSessions.set(sessionId, {
31
- role,
32
- ccc
33
- });
34
- }
35
- function unregisterSkiffSession(sessionId) {
36
- skiffSessions.delete(sessionId);
37
- }
38
- /** 测试/调试:注册表快照(sessionId → {role, ccc}) */
39
- function skiffSessionSnapshot() {
40
- return new Map(skiffSessions);
41
- }
42
- //#endregion
43
- export { unregisterSkiffSession as a, skiffSessionSnapshot as i, skiffRoleFor as n, ACC_VERSION as o, skiffSessionInfo as r, registerSkiffSession as t };