@agent-phonon/protocol 0.2.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/LICENSE +21 -0
- package/README.md +70 -0
- package/dist/index.d.ts +24 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +24 -0
- package/dist/index.js.map +1 -0
- package/dist/json-schema/_index.json +3794 -0
- package/dist/json-schema/connect.hello.json +117 -0
- package/dist/json-schema/discovery.changed.json +190 -0
- package/dist/json-schema/discovery.get.json +183 -0
- package/dist/json-schema/discovery.list.json +182 -0
- package/dist/json-schema/document.prepare_upload.json +96 -0
- package/dist/json-schema/document.send.json +165 -0
- package/dist/json-schema/hook.fired.json +100 -0
- package/dist/json-schema/hook.resolve.json +96 -0
- package/dist/json-schema/interaction.cancel.json +48 -0
- package/dist/json-schema/interaction.request.json +376 -0
- package/dist/json-schema/interaction.response.json +68 -0
- package/dist/json-schema/project.create.json +89 -0
- package/dist/json-schema/project.get.json +76 -0
- package/dist/json-schema/project.git.deleteBranch.json +64 -0
- package/dist/json-schema/project.list.json +72 -0
- package/dist/json-schema/project.remove.json +69 -0
- package/dist/json-schema/project.worktree.create.json +88 -0
- package/dist/json-schema/project.worktree.list.json +77 -0
- package/dist/json-schema/project.worktree.remove.json +61 -0
- package/dist/json-schema/session.compress.json +72 -0
- package/dist/json-schema/session.create.json +128 -0
- package/dist/json-schema/session.inject.json +72 -0
- package/dist/json-schema/session.interrupt.json +58 -0
- package/dist/json-schema/session.list.json +127 -0
- package/dist/json-schema/session.send.json +132 -0
- package/dist/json-schema/session.status.json +94 -0
- package/dist/json-schema/session.switchModel.json +73 -0
- package/dist/json-schema/session.terminate.json +54 -0
- package/dist/json-schema/skill.install.json +171 -0
- package/dist/json-schema/skill.list.json +101 -0
- package/dist/json-schema/skill.uninstall.json +76 -0
- package/dist/json-schema/stream.ack.json +36 -0
- package/dist/json-schema/stream.event.json +381 -0
- package/dist/schemas/capabilities.d.ts +90 -0
- package/dist/schemas/capabilities.d.ts.map +1 -0
- package/dist/schemas/capabilities.js +59 -0
- package/dist/schemas/capabilities.js.map +1 -0
- package/dist/schemas/common.d.ts +66 -0
- package/dist/schemas/common.d.ts.map +1 -0
- package/dist/schemas/common.js +97 -0
- package/dist/schemas/common.js.map +1 -0
- package/dist/schemas/connect.d.ts +111 -0
- package/dist/schemas/connect.d.ts.map +1 -0
- package/dist/schemas/connect.js +46 -0
- package/dist/schemas/connect.js.map +1 -0
- package/dist/schemas/device.d.ts +221 -0
- package/dist/schemas/device.d.ts.map +1 -0
- package/dist/schemas/device.js +59 -0
- package/dist/schemas/device.js.map +1 -0
- package/dist/schemas/discovery.d.ts +892 -0
- package/dist/schemas/discovery.d.ts.map +1 -0
- package/dist/schemas/discovery.js +66 -0
- package/dist/schemas/discovery.js.map +1 -0
- package/dist/schemas/document.d.ts +351 -0
- package/dist/schemas/document.d.ts.map +1 -0
- package/dist/schemas/document.js +103 -0
- package/dist/schemas/document.js.map +1 -0
- package/dist/schemas/env.d.ts +265 -0
- package/dist/schemas/env.d.ts.map +1 -0
- package/dist/schemas/env.js +44 -0
- package/dist/schemas/env.js.map +1 -0
- package/dist/schemas/file.d.ts +274 -0
- package/dist/schemas/file.d.ts.map +1 -0
- package/dist/schemas/file.js +72 -0
- package/dist/schemas/file.js.map +1 -0
- package/dist/schemas/hook.d.ts +132 -0
- package/dist/schemas/hook.d.ts.map +1 -0
- package/dist/schemas/hook.js +58 -0
- package/dist/schemas/hook.js.map +1 -0
- package/dist/schemas/interaction.d.ts +1583 -0
- package/dist/schemas/interaction.d.ts.map +1 -0
- package/dist/schemas/interaction.js +112 -0
- package/dist/schemas/interaction.js.map +1 -0
- package/dist/schemas/jsonrpc.d.ts +314 -0
- package/dist/schemas/jsonrpc.d.ts.map +1 -0
- package/dist/schemas/jsonrpc.js +64 -0
- package/dist/schemas/jsonrpc.js.map +1 -0
- package/dist/schemas/methods.d.ts +3826 -0
- package/dist/schemas/methods.d.ts.map +1 -0
- package/dist/schemas/methods.js +311 -0
- package/dist/schemas/methods.js.map +1 -0
- package/dist/schemas/policy.d.ts +81 -0
- package/dist/schemas/policy.d.ts.map +1 -0
- package/dist/schemas/policy.js +66 -0
- package/dist/schemas/policy.js.map +1 -0
- package/dist/schemas/project.d.ts +506 -0
- package/dist/schemas/project.d.ts.map +1 -0
- package/dist/schemas/project.js +148 -0
- package/dist/schemas/project.js.map +1 -0
- package/dist/schemas/session.d.ts +730 -0
- package/dist/schemas/session.d.ts.map +1 -0
- package/dist/schemas/session.js +287 -0
- package/dist/schemas/session.js.map +1 -0
- package/dist/schemas/skill.d.ts +465 -0
- package/dist/schemas/skill.d.ts.map +1 -0
- package/dist/schemas/skill.js +103 -0
- package/dist/schemas/skill.js.map +1 -0
- package/dist/schemas/stream.d.ts +688 -0
- package/dist/schemas/stream.d.ts.map +1 -0
- package/dist/schemas/stream.js +133 -0
- package/dist/schemas/stream.js.map +1 -0
- package/package.json +52 -0
- package/src/index.ts +24 -0
- package/src/schemas/capabilities.ts +62 -0
- package/src/schemas/common.ts +119 -0
- package/src/schemas/connect.ts +50 -0
- package/src/schemas/device.ts +67 -0
- package/src/schemas/discovery.ts +80 -0
- package/src/schemas/document.ts +121 -0
- package/src/schemas/env.ts +60 -0
- package/src/schemas/file.ts +97 -0
- package/src/schemas/hook.ts +66 -0
- package/src/schemas/interaction.ts +135 -0
- package/src/schemas/jsonrpc.ts +80 -0
- package/src/schemas/methods.ts +414 -0
- package/src/schemas/policy.ts +71 -0
- package/src/schemas/project.ts +185 -0
- package/src/schemas/session.ts +336 -0
- package/src/schemas/skill.ts +121 -0
- package/src/schemas/stream.ts +149 -0
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
/**
|
|
3
|
+
* Hook 类型 — 归一化的拦截点(design §8)。
|
|
4
|
+
* adapter 负责把各家原生 hook 点(Codex hooks / Claude Code PreToolUse /
|
|
5
|
+
* OpenClaw 审批…)映射成这些归一化类型。
|
|
6
|
+
*/
|
|
7
|
+
export const HookType = z.enum([
|
|
8
|
+
"pre_tool", // 工具调用前
|
|
9
|
+
"post_tool", // 工具调用后
|
|
10
|
+
"pre_command", // 执行 shell/命令前(rm/git push 等危险操作)
|
|
11
|
+
"pre_file_write", // 写文件前
|
|
12
|
+
"pre_network", // 发起网络/外部请求前
|
|
13
|
+
"session_start", // 会话开始
|
|
14
|
+
"session_end", // 会话结束
|
|
15
|
+
"notification", // agent 主动通知(无需裁决,纯告知)
|
|
16
|
+
]);
|
|
17
|
+
/**
|
|
18
|
+
* Adapter 能力声明(design §7)。
|
|
19
|
+
* adapter 不假装统一,而是声明自己原生支持什么,phonon core 据此补齐缺口。
|
|
20
|
+
* 这份能力随 discovery 一起暴露给服务端,服务端先知能力再决定怎么用。
|
|
21
|
+
*/
|
|
22
|
+
export const AgentCapabilities = z.object({
|
|
23
|
+
/** 原生 session / resume(无则由 core 用注册表模拟)。 */
|
|
24
|
+
nativeSession: z.boolean(),
|
|
25
|
+
/** 原生上下文压缩(决定 session.compress mode=native 是否可用)。 */
|
|
26
|
+
nativeCompression: z.boolean(),
|
|
27
|
+
/** 原生上下文注入。 */
|
|
28
|
+
contextInjection: z.boolean(),
|
|
29
|
+
/**
|
|
30
|
+
* 是否会**主动/非请求触发地输出**(design 订阅模型)。
|
|
31
|
+
* OpenClaw 这类有 cron/心跳/定时任务,同一 session 内会不定期自发冲泡 → true;
|
|
32
|
+
* Codex 这类一次性,流到结果就结束 → false。
|
|
33
|
+
* server 据此判断哪些 session 需要长期保持监听。
|
|
34
|
+
*/
|
|
35
|
+
proactiveOutput: z.boolean(),
|
|
36
|
+
/** 是否支持同会话中途切换模型(design D16)。 */
|
|
37
|
+
modelSwitch: z.boolean(),
|
|
38
|
+
/** 是否支持打断正在进行的 turn(session.interrupt / whenBusy=interrupt,D18)。 */
|
|
39
|
+
interrupt: z.boolean(),
|
|
40
|
+
/** 是否支持中途插入输入(下一次 tool call 边界,whenBusy=inject,D18)。 */
|
|
41
|
+
injectMidTurn: z.boolean(),
|
|
42
|
+
/** 是否支持给该 agent 安装/卸载 skill(skill.* 接口,D24)。 */
|
|
43
|
+
skillManagement: z.boolean(),
|
|
44
|
+
/** 原生支持的 hook 点(其余由 core 尽力补齐或不支持)。 */
|
|
45
|
+
hooks: z.array(HookType),
|
|
46
|
+
/** 是否支持流式输出。 */
|
|
47
|
+
streaming: z.boolean(),
|
|
48
|
+
/**
|
|
49
|
+
* 可选调度限制(P2-13):server 据此做调度/背压。
|
|
50
|
+
*/
|
|
51
|
+
limits: z
|
|
52
|
+
.object({
|
|
53
|
+
maxConcurrentSessions: z.number().int().positive().optional(),
|
|
54
|
+
maxContextTokens: z.number().int().positive().optional(),
|
|
55
|
+
maxMessageBytes: z.number().int().positive().optional(),
|
|
56
|
+
})
|
|
57
|
+
.optional(),
|
|
58
|
+
});
|
|
59
|
+
//# sourceMappingURL=capabilities.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"capabilities.js","sourceRoot":"","sources":["../../src/schemas/capabilities.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB;;;;GAIG;AACH,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,CAAC,IAAI,CAAC;IAC7B,UAAU,EAAE,QAAQ;IACpB,WAAW,EAAE,QAAQ;IACrB,aAAa,EAAE,kCAAkC;IACjD,gBAAgB,EAAE,OAAO;IACzB,aAAa,EAAE,aAAa;IAC5B,eAAe,EAAE,OAAO;IACxB,aAAa,EAAE,OAAO;IACtB,cAAc,EAAE,uBAAuB;CACxC,CAAC,CAAC;AAGH;;;;GAIG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,CAAC,MAAM,CAAC;IACxC,4CAA4C;IAC5C,aAAa,EAAE,CAAC,CAAC,OAAO,EAAE;IAC1B,qDAAqD;IACrD,iBAAiB,EAAE,CAAC,CAAC,OAAO,EAAE;IAC9B,eAAe;IACf,gBAAgB,EAAE,CAAC,CAAC,OAAO,EAAE;IAC7B;;;;;OAKG;IACH,eAAe,EAAE,CAAC,CAAC,OAAO,EAAE;IAC5B,iCAAiC;IACjC,WAAW,EAAE,CAAC,CAAC,OAAO,EAAE;IACxB,oEAAoE;IACpE,SAAS,EAAE,CAAC,CAAC,OAAO,EAAE;IACtB,wDAAwD;IACxD,aAAa,EAAE,CAAC,CAAC,OAAO,EAAE;IAC1B,gDAAgD;IAChD,eAAe,EAAE,CAAC,CAAC,OAAO,EAAE;IAC5B,uCAAuC;IACvC,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC;IACxB,gBAAgB;IAChB,SAAS,EAAE,CAAC,CAAC,OAAO,EAAE;IACtB;;OAEG;IACH,MAAM,EAAE,CAAC;SACN,MAAM,CAAC;QACN,qBAAqB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE;QAC7D,gBAAgB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE;QACxD,eAAe,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE;KACxD,CAAC;SACD,QAAQ,EAAE;CACd,CAAC,CAAC"}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
/**
|
|
3
|
+
* agent-phonon wire protocol — shared primitives.
|
|
4
|
+
*
|
|
5
|
+
* 设计参考 docs/design.md。本文件定义全协议复用的基础类型:
|
|
6
|
+
* 协议版本、各类 ID、verbosity、错误码。
|
|
7
|
+
*/
|
|
8
|
+
/** 协议语义版本。device 与 server 握手时比对(见 connect.hello)。 */
|
|
9
|
+
export declare const PROTOCOL_VERSION: "0.1.0";
|
|
10
|
+
/** phonon 侧全局唯一的 session id(归属某一 tenant)。 */
|
|
11
|
+
export declare const SessionId: z.ZodBranded<z.ZodString, "SessionId">;
|
|
12
|
+
export type SessionId = z.infer<typeof SessionId>;
|
|
13
|
+
/** discovery 返回的 agent 标识,也是 session.create 的 `agent` 入参。 */
|
|
14
|
+
export declare const AgentId: z.ZodBranded<z.ZodString, "AgentId">;
|
|
15
|
+
export type AgentId = z.infer<typeof AgentId>;
|
|
16
|
+
/** 项目标识(项目 = 目录 + Git)。所有 session 必须绑定一个项目。 */
|
|
17
|
+
export declare const ProjectId: z.ZodBranded<z.ZodString, "ProjectId">;
|
|
18
|
+
export type ProjectId = z.infer<typeof ProjectId>;
|
|
19
|
+
/** 本地配置赋予的稳定租户 id(= 一条服务端连接,见 design D13)。 */
|
|
20
|
+
export declare const TenantId: z.ZodBranded<z.ZodString, "TenantId">;
|
|
21
|
+
export type TenantId = z.infer<typeof TenantId>;
|
|
22
|
+
/** 设备自身标识(一台设备一个,用于服务端区分多设备,但 phonon 不感知其他设备)。 */
|
|
23
|
+
export declare const DeviceId: z.ZodBranded<z.ZodString, "DeviceId">;
|
|
24
|
+
export type DeviceId = z.infer<typeof DeviceId>;
|
|
25
|
+
/**
|
|
26
|
+
* 4 档详细度,create 时设定、send 可覆盖:
|
|
27
|
+
* - final : 仅最终结果
|
|
28
|
+
* - messages : 每轮消息
|
|
29
|
+
* - tools : 含工具调用
|
|
30
|
+
* - trace : 全量(含思考)
|
|
31
|
+
*/
|
|
32
|
+
export declare const Verbosity: z.ZodEnum<["final", "messages", "tools", "trace"]>;
|
|
33
|
+
export type Verbosity = z.infer<typeof Verbosity>;
|
|
34
|
+
/**
|
|
35
|
+
* 应用级错误码(区别于 JSON-RPC 传输级 code)。
|
|
36
|
+
* 放在 JSON-RPC error 对象的 `data.appCode` 字段,便于调用方稳定判别。
|
|
37
|
+
*/
|
|
38
|
+
export declare const PhononErrorCode: z.ZodEnum<["errProtocolMismatch", "errUnauthorized", "errSessionNotInTenant", "errTenantQuotaExceeded", "errDeviceQuotaExceeded", "errAgentUnavailable", "errModelUnavailable", "errSessionNotFound", "errSessionTerminated", "errSessionBusy", "errCapabilityUnsupported", "errHookResolveInvalid", "errHookTimeout", "errProjectNotFound", "errProjectExists", "errProjectHasActiveSessions", "errSkillNotFound", "errSkillScopeInvalid", "errSkillInstallFailed", "errWorktreeNotFound", "errWorktreeHasChanges", "errWorktreeInUse", "errBranchNotMerged", "errBranchInUse", "errDocumentTooLarge", "errDocumentPathDenied", "errPolicyDenied", "errDuplicateRequest", "errInvalidParams", "errInternal"]>;
|
|
39
|
+
export type PhononErrorCode = z.infer<typeof PhononErrorCode>;
|
|
40
|
+
/** 统一附在 JSON-RPC error.data 上的结构。 */
|
|
41
|
+
export declare const PhononErrorData: z.ZodObject<{
|
|
42
|
+
appCode: z.ZodEnum<["errProtocolMismatch", "errUnauthorized", "errSessionNotInTenant", "errTenantQuotaExceeded", "errDeviceQuotaExceeded", "errAgentUnavailable", "errModelUnavailable", "errSessionNotFound", "errSessionTerminated", "errSessionBusy", "errCapabilityUnsupported", "errHookResolveInvalid", "errHookTimeout", "errProjectNotFound", "errProjectExists", "errProjectHasActiveSessions", "errSkillNotFound", "errSkillScopeInvalid", "errSkillInstallFailed", "errWorktreeNotFound", "errWorktreeHasChanges", "errWorktreeInUse", "errBranchNotMerged", "errBranchInUse", "errDocumentTooLarge", "errDocumentPathDenied", "errPolicyDenied", "errDuplicateRequest", "errInvalidParams", "errInternal"]>;
|
|
43
|
+
/** 可选的人类可读补充(不用于程序判别)。 */
|
|
44
|
+
detail: z.ZodOptional<z.ZodString>;
|
|
45
|
+
/** 可选:相关 session/agent/tenant,便于服务端定位。 */
|
|
46
|
+
sessionId: z.ZodOptional<z.ZodBranded<z.ZodString, "SessionId">>;
|
|
47
|
+
agentId: z.ZodOptional<z.ZodBranded<z.ZodString, "AgentId">>;
|
|
48
|
+
tenantId: z.ZodOptional<z.ZodBranded<z.ZodString, "TenantId">>;
|
|
49
|
+
}, "strip", z.ZodTypeAny, {
|
|
50
|
+
appCode: "errProtocolMismatch" | "errUnauthorized" | "errSessionNotInTenant" | "errTenantQuotaExceeded" | "errDeviceQuotaExceeded" | "errAgentUnavailable" | "errModelUnavailable" | "errSessionNotFound" | "errSessionTerminated" | "errSessionBusy" | "errCapabilityUnsupported" | "errHookResolveInvalid" | "errHookTimeout" | "errProjectNotFound" | "errProjectExists" | "errProjectHasActiveSessions" | "errSkillNotFound" | "errSkillScopeInvalid" | "errSkillInstallFailed" | "errWorktreeNotFound" | "errWorktreeHasChanges" | "errWorktreeInUse" | "errBranchNotMerged" | "errBranchInUse" | "errDocumentTooLarge" | "errDocumentPathDenied" | "errPolicyDenied" | "errDuplicateRequest" | "errInvalidParams" | "errInternal";
|
|
51
|
+
detail?: string | undefined;
|
|
52
|
+
sessionId?: (string & z.BRAND<"SessionId">) | undefined;
|
|
53
|
+
agentId?: (string & z.BRAND<"AgentId">) | undefined;
|
|
54
|
+
tenantId?: (string & z.BRAND<"TenantId">) | undefined;
|
|
55
|
+
}, {
|
|
56
|
+
appCode: "errProtocolMismatch" | "errUnauthorized" | "errSessionNotInTenant" | "errTenantQuotaExceeded" | "errDeviceQuotaExceeded" | "errAgentUnavailable" | "errModelUnavailable" | "errSessionNotFound" | "errSessionTerminated" | "errSessionBusy" | "errCapabilityUnsupported" | "errHookResolveInvalid" | "errHookTimeout" | "errProjectNotFound" | "errProjectExists" | "errProjectHasActiveSessions" | "errSkillNotFound" | "errSkillScopeInvalid" | "errSkillInstallFailed" | "errWorktreeNotFound" | "errWorktreeHasChanges" | "errWorktreeInUse" | "errBranchNotMerged" | "errBranchInUse" | "errDocumentTooLarge" | "errDocumentPathDenied" | "errPolicyDenied" | "errDuplicateRequest" | "errInvalidParams" | "errInternal";
|
|
57
|
+
detail?: string | undefined;
|
|
58
|
+
sessionId?: string | undefined;
|
|
59
|
+
agentId?: string | undefined;
|
|
60
|
+
tenantId?: string | undefined;
|
|
61
|
+
}>;
|
|
62
|
+
export type PhononErrorData = z.infer<typeof PhononErrorData>;
|
|
63
|
+
/** ISO-8601 时间戳字符串(统一用字符串,避免时区/精度歧义)。 */
|
|
64
|
+
export declare const Timestamp: z.ZodString;
|
|
65
|
+
export type Timestamp = z.infer<typeof Timestamp>;
|
|
66
|
+
//# sourceMappingURL=common.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"common.d.ts","sourceRoot":"","sources":["../../src/schemas/common.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB;;;;;GAKG;AAEH,qDAAqD;AACrD,eAAO,MAAM,gBAAgB,EAAG,OAAgB,CAAC;AAMjD,6CAA6C;AAC7C,eAAO,MAAM,SAAS,wCAAyC,CAAC;AAChE,MAAM,MAAM,SAAS,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,SAAS,CAAC,CAAC;AAElD,6DAA6D;AAC7D,eAAO,MAAM,OAAO,sCAAuC,CAAC;AAC5D,MAAM,MAAM,OAAO,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,OAAO,CAAC,CAAC;AAE9C,+CAA+C;AAC/C,eAAO,MAAM,SAAS,wCAAyC,CAAC;AAChE,MAAM,MAAM,SAAS,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,SAAS,CAAC,CAAC;AAElD,8CAA8C;AAC9C,eAAO,MAAM,QAAQ,uCAAwC,CAAC;AAC9D,MAAM,MAAM,QAAQ,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,QAAQ,CAAC,CAAC;AAEhD,kDAAkD;AAClD,eAAO,MAAM,QAAQ,uCAAwC,CAAC;AAC9D,MAAM,MAAM,QAAQ,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,QAAQ,CAAC,CAAC;AAMhD;;;;;;GAMG;AACH,eAAO,MAAM,SAAS,oDAAkD,CAAC;AACzE,MAAM,MAAM,SAAS,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,SAAS,CAAC,CAAC;AAMlD;;;GAGG;AACH,eAAO,MAAM,eAAe,grBA2C1B,CAAC;AACH,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,eAAe,CAAC,CAAC;AAE9D,qCAAqC;AACrC,eAAO,MAAM,eAAe;;IAE1B,0BAA0B;;IAE1B,0CAA0C;;;;;;;;;;;;;;;;EAI1C,CAAC;AACH,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,eAAe,CAAC,CAAC;AAE9D,yCAAyC;AACzC,eAAO,MAAM,SAAS,aAAwC,CAAC;AAC/D,MAAM,MAAM,SAAS,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,SAAS,CAAC,CAAC"}
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
/**
|
|
3
|
+
* agent-phonon wire protocol — shared primitives.
|
|
4
|
+
*
|
|
5
|
+
* 设计参考 docs/design.md。本文件定义全协议复用的基础类型:
|
|
6
|
+
* 协议版本、各类 ID、verbosity、错误码。
|
|
7
|
+
*/
|
|
8
|
+
/** 协议语义版本。device 与 server 握手时比对(见 connect.hello)。 */
|
|
9
|
+
export const PROTOCOL_VERSION = "0.1.0";
|
|
10
|
+
// ---------------------------------------------------------------------------
|
|
11
|
+
// ID 原语(全部是不透明字符串,调用方不应解析其结构)
|
|
12
|
+
// ---------------------------------------------------------------------------
|
|
13
|
+
/** phonon 侧全局唯一的 session id(归属某一 tenant)。 */
|
|
14
|
+
export const SessionId = z.string().min(1).brand();
|
|
15
|
+
/** discovery 返回的 agent 标识,也是 session.create 的 `agent` 入参。 */
|
|
16
|
+
export const AgentId = z.string().min(1).brand();
|
|
17
|
+
/** 项目标识(项目 = 目录 + Git)。所有 session 必须绑定一个项目。 */
|
|
18
|
+
export const ProjectId = z.string().min(1).brand();
|
|
19
|
+
/** 本地配置赋予的稳定租户 id(= 一条服务端连接,见 design D13)。 */
|
|
20
|
+
export const TenantId = z.string().min(1).brand();
|
|
21
|
+
/** 设备自身标识(一台设备一个,用于服务端区分多设备,但 phonon 不感知其他设备)。 */
|
|
22
|
+
export const DeviceId = z.string().min(1).brand();
|
|
23
|
+
// ---------------------------------------------------------------------------
|
|
24
|
+
// Verbosity — 控制 session 返回内容的多少(design §4)
|
|
25
|
+
// ---------------------------------------------------------------------------
|
|
26
|
+
/**
|
|
27
|
+
* 4 档详细度,create 时设定、send 可覆盖:
|
|
28
|
+
* - final : 仅最终结果
|
|
29
|
+
* - messages : 每轮消息
|
|
30
|
+
* - tools : 含工具调用
|
|
31
|
+
* - trace : 全量(含思考)
|
|
32
|
+
*/
|
|
33
|
+
export const Verbosity = z.enum(["final", "messages", "tools", "trace"]);
|
|
34
|
+
// ---------------------------------------------------------------------------
|
|
35
|
+
// 错误码 — JSON-RPC error.data.code 用(design 中提到的归一化错误)
|
|
36
|
+
// ---------------------------------------------------------------------------
|
|
37
|
+
/**
|
|
38
|
+
* 应用级错误码(区别于 JSON-RPC 传输级 code)。
|
|
39
|
+
* 放在 JSON-RPC error 对象的 `data.appCode` 字段,便于调用方稳定判别。
|
|
40
|
+
*/
|
|
41
|
+
export const PhononErrorCode = z.enum([
|
|
42
|
+
// 协议/握手
|
|
43
|
+
"errProtocolMismatch", // device 与 server 协议版本不兼容
|
|
44
|
+
"errUnauthorized", // device key 无效(注:终端用户鉴权在 server,不在此)
|
|
45
|
+
// 租户隔离(design §6 / D13)
|
|
46
|
+
"errSessionNotInTenant", // 跨租户访问 session
|
|
47
|
+
"errTenantQuotaExceeded", // 触达 per-tenant 配额
|
|
48
|
+
"errDeviceQuotaExceeded", // 触达全局配额
|
|
49
|
+
// 发现 / agent 绑定(design §5 / D14 / D15)
|
|
50
|
+
"errAgentUnavailable", // 目标 agent 不存在或不可用
|
|
51
|
+
"errModelUnavailable", // 模型不在该 agent 的可用列表内
|
|
52
|
+
// session 生命周期
|
|
53
|
+
"errSessionNotFound",
|
|
54
|
+
"errSessionTerminated", // 操作了已结束的 session
|
|
55
|
+
"errSessionBusy", // session 正忙(如上一轮未结束)
|
|
56
|
+
// 能力
|
|
57
|
+
"errCapabilityUnsupported", // adapter 不支持该操作(如 native 压缩缺失)
|
|
58
|
+
// hook / HITL
|
|
59
|
+
"errHookResolveInvalid", // hook.resolve 的裁决非法
|
|
60
|
+
"errHookTimeout", // 等待服务端裁决超时
|
|
61
|
+
// 项目 / skill(D23-D26)
|
|
62
|
+
"errProjectNotFound",
|
|
63
|
+
"errProjectExists", // 同名/同路径项目已存在
|
|
64
|
+
"errProjectHasActiveSessions", // 项目下还有 active session(remove 拦)
|
|
65
|
+
"errSkillNotFound",
|
|
66
|
+
"errSkillScopeInvalid", // scope=project 但缺 projectId 等
|
|
67
|
+
"errSkillInstallFailed",
|
|
68
|
+
// git / worktree(D25)
|
|
69
|
+
"errWorktreeNotFound",
|
|
70
|
+
"errWorktreeHasChanges", // 未提交变更,非 force 不清
|
|
71
|
+
"errWorktreeInUse", // worktree 还有 active session
|
|
72
|
+
"errBranchNotMerged", // 分支未合并,非 force 不删
|
|
73
|
+
"errBranchInUse", // 分支仍被某 worktree 检出
|
|
74
|
+
// 文档 / 上传(D20)
|
|
75
|
+
"errDocumentTooLarge", // 超 maxUploadBytes
|
|
76
|
+
"errDocumentPathDenied", // 路径不在项目范围 / 命中 deny
|
|
77
|
+
// 本地 policy(D27)
|
|
78
|
+
"errPolicyDenied", // 被设备本地安全策略拦截
|
|
79
|
+
// 幂等
|
|
80
|
+
"errDuplicateRequest", // clientRequestId 重复(已处理过)
|
|
81
|
+
// 通用
|
|
82
|
+
"errInvalidParams",
|
|
83
|
+
"errInternal",
|
|
84
|
+
]);
|
|
85
|
+
/** 统一附在 JSON-RPC error.data 上的结构。 */
|
|
86
|
+
export const PhononErrorData = z.object({
|
|
87
|
+
appCode: PhononErrorCode,
|
|
88
|
+
/** 可选的人类可读补充(不用于程序判别)。 */
|
|
89
|
+
detail: z.string().optional(),
|
|
90
|
+
/** 可选:相关 session/agent/tenant,便于服务端定位。 */
|
|
91
|
+
sessionId: SessionId.optional(),
|
|
92
|
+
agentId: AgentId.optional(),
|
|
93
|
+
tenantId: TenantId.optional(),
|
|
94
|
+
});
|
|
95
|
+
/** ISO-8601 时间戳字符串(统一用字符串,避免时区/精度歧义)。 */
|
|
96
|
+
export const Timestamp = z.string().datetime({ offset: true });
|
|
97
|
+
//# sourceMappingURL=common.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"common.js","sourceRoot":"","sources":["../../src/schemas/common.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
/**
|
|
3
|
+
* 连接握手(design §6)。
|
|
4
|
+
*
|
|
5
|
+
* phonon 拨出连接后,首先发 connect.hello 表明:协议版本、设备身份。
|
|
6
|
+
* device key 的鉴权由传输层/服务端处理(如 WS header / 首帧),不在业务 params 里明文带。
|
|
7
|
+
* server 回 connect.welcome 确认,并可下发 tenant 绑定与服务端能力。
|
|
8
|
+
*/
|
|
9
|
+
export declare const ConnectHelloParams: z.ZodObject<{
|
|
10
|
+
/** 本端协议版本(= PROTOCOL_VERSION)。 */
|
|
11
|
+
protocolVersion: z.ZodString;
|
|
12
|
+
/** 设备标识(服务端用于区分多设备)。 */
|
|
13
|
+
deviceId: z.ZodBranded<z.ZodString, "DeviceId">;
|
|
14
|
+
/** phonon 实现版本(软件版本,便于服务端兼容处理)。 */
|
|
15
|
+
phononVersion: z.ZodOptional<z.ZodString>;
|
|
16
|
+
/** 本端声明支持的可选特性开关,便于前向兼容。 */
|
|
17
|
+
features: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
|
|
18
|
+
/** 设备鉴权(可选):server 据此验证设备身份。也可走传输层 header。 */
|
|
19
|
+
auth: z.ZodOptional<z.ZodObject<{
|
|
20
|
+
deviceKey: z.ZodString;
|
|
21
|
+
}, "strip", z.ZodTypeAny, {
|
|
22
|
+
deviceKey: string;
|
|
23
|
+
}, {
|
|
24
|
+
deviceKey: string;
|
|
25
|
+
}>>;
|
|
26
|
+
/**
|
|
27
|
+
* 重连时携带(P0-4):phonon 本地 outbox 中每个 session 尚未被 ack 的起始 seq,
|
|
28
|
+
* 让 server 知道哪些要补发 / 从哪重放。首次连接可省略。
|
|
29
|
+
*/
|
|
30
|
+
resumeFrom: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
31
|
+
sessionId: z.ZodString;
|
|
32
|
+
fromSeq: z.ZodNumber;
|
|
33
|
+
}, "strip", z.ZodTypeAny, {
|
|
34
|
+
sessionId: string;
|
|
35
|
+
fromSeq: number;
|
|
36
|
+
}, {
|
|
37
|
+
sessionId: string;
|
|
38
|
+
fromSeq: number;
|
|
39
|
+
}>, "many">>;
|
|
40
|
+
at: z.ZodString;
|
|
41
|
+
}, "strip", z.ZodTypeAny, {
|
|
42
|
+
at: string;
|
|
43
|
+
protocolVersion: string;
|
|
44
|
+
deviceId: string & z.BRAND<"DeviceId">;
|
|
45
|
+
features: string[];
|
|
46
|
+
phononVersion?: string | undefined;
|
|
47
|
+
auth?: {
|
|
48
|
+
deviceKey: string;
|
|
49
|
+
} | undefined;
|
|
50
|
+
resumeFrom?: {
|
|
51
|
+
sessionId: string;
|
|
52
|
+
fromSeq: number;
|
|
53
|
+
}[] | undefined;
|
|
54
|
+
}, {
|
|
55
|
+
at: string;
|
|
56
|
+
protocolVersion: string;
|
|
57
|
+
deviceId: string;
|
|
58
|
+
phononVersion?: string | undefined;
|
|
59
|
+
features?: string[] | undefined;
|
|
60
|
+
auth?: {
|
|
61
|
+
deviceKey: string;
|
|
62
|
+
} | undefined;
|
|
63
|
+
resumeFrom?: {
|
|
64
|
+
sessionId: string;
|
|
65
|
+
fromSeq: number;
|
|
66
|
+
}[] | undefined;
|
|
67
|
+
}>;
|
|
68
|
+
export type ConnectHelloParams = z.infer<typeof ConnectHelloParams>;
|
|
69
|
+
export declare const ConnectWelcomeResult: z.ZodObject<{
|
|
70
|
+
/** 服务端协议版本。 */
|
|
71
|
+
protocolVersion: z.ZodString;
|
|
72
|
+
/** 服务端为本连接分配/确认的租户身份(= 一条服务端连接,design D13)。 */
|
|
73
|
+
tenantId: z.ZodBranded<z.ZodString, "TenantId">;
|
|
74
|
+
/** 服务端声明支持的可选特性。 */
|
|
75
|
+
features: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
|
|
76
|
+
/**
|
|
77
|
+
* 重连时服务端告知「我各 session 最后收到的 seq」(P0-4),
|
|
78
|
+
* phonon 据此从 outbox 精确补发(> lastSeq 的),避免重复/遗漏。
|
|
79
|
+
*/
|
|
80
|
+
ackedSeqs: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
81
|
+
sessionId: z.ZodString;
|
|
82
|
+
lastSeq: z.ZodNumber;
|
|
83
|
+
}, "strip", z.ZodTypeAny, {
|
|
84
|
+
sessionId: string;
|
|
85
|
+
lastSeq: number;
|
|
86
|
+
}, {
|
|
87
|
+
sessionId: string;
|
|
88
|
+
lastSeq: number;
|
|
89
|
+
}>, "many">>;
|
|
90
|
+
at: z.ZodString;
|
|
91
|
+
}, "strip", z.ZodTypeAny, {
|
|
92
|
+
at: string;
|
|
93
|
+
tenantId: string & z.BRAND<"TenantId">;
|
|
94
|
+
protocolVersion: string;
|
|
95
|
+
features: string[];
|
|
96
|
+
ackedSeqs?: {
|
|
97
|
+
sessionId: string;
|
|
98
|
+
lastSeq: number;
|
|
99
|
+
}[] | undefined;
|
|
100
|
+
}, {
|
|
101
|
+
at: string;
|
|
102
|
+
tenantId: string;
|
|
103
|
+
protocolVersion: string;
|
|
104
|
+
features?: string[] | undefined;
|
|
105
|
+
ackedSeqs?: {
|
|
106
|
+
sessionId: string;
|
|
107
|
+
lastSeq: number;
|
|
108
|
+
}[] | undefined;
|
|
109
|
+
}>;
|
|
110
|
+
export type ConnectWelcomeResult = z.infer<typeof ConnectWelcomeResult>;
|
|
111
|
+
//# sourceMappingURL=connect.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"connect.d.ts","sourceRoot":"","sources":["../../src/schemas/connect.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB;;;;;;GAMG;AAEH,eAAO,MAAM,kBAAkB;IAC7B,kCAAkC;;IAElC,wBAAwB;;IAExB,mCAAmC;;IAEnC,4BAA4B;;IAE5B,8CAA8C;;;;;;;;IAE9C;;;OAGG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAKH,CAAC;AACH,MAAM,MAAM,kBAAkB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAEpE,eAAO,MAAM,oBAAoB;IAC/B,eAAe;;IAEf,+CAA+C;;IAE/C,oBAAoB;;IAEpB;;;OAGG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAKH,CAAC;AACH,MAAM,MAAM,oBAAoB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAC"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
import { DeviceId, TenantId, Timestamp } from "./common.js";
|
|
3
|
+
/**
|
|
4
|
+
* 连接握手(design §6)。
|
|
5
|
+
*
|
|
6
|
+
* phonon 拨出连接后,首先发 connect.hello 表明:协议版本、设备身份。
|
|
7
|
+
* device key 的鉴权由传输层/服务端处理(如 WS header / 首帧),不在业务 params 里明文带。
|
|
8
|
+
* server 回 connect.welcome 确认,并可下发 tenant 绑定与服务端能力。
|
|
9
|
+
*/
|
|
10
|
+
export const ConnectHelloParams = z.object({
|
|
11
|
+
/** 本端协议版本(= PROTOCOL_VERSION)。 */
|
|
12
|
+
protocolVersion: z.string(),
|
|
13
|
+
/** 设备标识(服务端用于区分多设备)。 */
|
|
14
|
+
deviceId: DeviceId,
|
|
15
|
+
/** phonon 实现版本(软件版本,便于服务端兼容处理)。 */
|
|
16
|
+
phononVersion: z.string().optional(),
|
|
17
|
+
/** 本端声明支持的可选特性开关,便于前向兼容。 */
|
|
18
|
+
features: z.array(z.string()).default([]),
|
|
19
|
+
/** 设备鉴权(可选):server 据此验证设备身份。也可走传输层 header。 */
|
|
20
|
+
auth: z.object({ deviceKey: z.string() }).optional(),
|
|
21
|
+
/**
|
|
22
|
+
* 重连时携带(P0-4):phonon 本地 outbox 中每个 session 尚未被 ack 的起始 seq,
|
|
23
|
+
* 让 server 知道哪些要补发 / 从哪重放。首次连接可省略。
|
|
24
|
+
*/
|
|
25
|
+
resumeFrom: z
|
|
26
|
+
.array(z.object({ sessionId: z.string(), fromSeq: z.number().int().nonnegative() }))
|
|
27
|
+
.optional(),
|
|
28
|
+
at: Timestamp,
|
|
29
|
+
});
|
|
30
|
+
export const ConnectWelcomeResult = z.object({
|
|
31
|
+
/** 服务端协议版本。 */
|
|
32
|
+
protocolVersion: z.string(),
|
|
33
|
+
/** 服务端为本连接分配/确认的租户身份(= 一条服务端连接,design D13)。 */
|
|
34
|
+
tenantId: TenantId,
|
|
35
|
+
/** 服务端声明支持的可选特性。 */
|
|
36
|
+
features: z.array(z.string()).default([]),
|
|
37
|
+
/**
|
|
38
|
+
* 重连时服务端告知「我各 session 最后收到的 seq」(P0-4),
|
|
39
|
+
* phonon 据此从 outbox 精确补发(> lastSeq 的),避免重复/遗漏。
|
|
40
|
+
*/
|
|
41
|
+
ackedSeqs: z
|
|
42
|
+
.array(z.object({ sessionId: z.string(), lastSeq: z.number().int().nonnegative() }))
|
|
43
|
+
.optional(),
|
|
44
|
+
at: Timestamp,
|
|
45
|
+
});
|
|
46
|
+
//# sourceMappingURL=connect.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"connect.js","sourceRoot":"","sources":["../../src/schemas/connect.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAE5D;;;;;;GAMG;AAEH,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,CAAC,MAAM,CAAC;IACzC,kCAAkC;IAClC,eAAe,EAAE,CAAC,CAAC,MAAM,EAAE;IAC3B,wBAAwB;IACxB,QAAQ,EAAE,QAAQ;IAClB,mCAAmC;IACnC,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACpC,4BAA4B;IAC5B,QAAQ,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;IACzC,8CAA8C;IAC9C,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,QAAQ,EAAE;IACpD;;;OAGG;IACH,UAAU,EAAE,CAAC;SACV,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;SACnF,QAAQ,EAAE;IACb,EAAE,EAAE,SAAS;CACd,CAAC,CAAC;AAGH,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC3C,eAAe;IACf,eAAe,EAAE,CAAC,CAAC,MAAM,EAAE;IAC3B,+CAA+C;IAC/C,QAAQ,EAAE,QAAQ;IAClB,oBAAoB;IACpB,QAAQ,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;IACzC;;;OAGG;IACH,SAAS,EAAE,CAAC;SACT,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;SACnF,QAAQ,EAAE;IACb,EAAE,EAAE,SAAS;CACd,CAAC,CAAC"}
|
|
@@ -0,0 +1,221 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
/**
|
|
3
|
+
* 设备级信息与可观测协议。
|
|
4
|
+
*
|
|
5
|
+
* device.info:相对静态的 OS/机器信息,用于服务端按需调度。
|
|
6
|
+
* device.resources:运行时资源快照,用于 debug,不做资源调度或限制。
|
|
7
|
+
*/
|
|
8
|
+
export declare const DeviceInfoParams: z.ZodDefault<z.ZodObject<{}, "strip", z.ZodTypeAny, {}, {}>>;
|
|
9
|
+
export type DeviceInfoParams = z.infer<typeof DeviceInfoParams>;
|
|
10
|
+
export declare const DeviceInfoResult: z.ZodObject<{
|
|
11
|
+
at: z.ZodString;
|
|
12
|
+
hostname: z.ZodString;
|
|
13
|
+
os: z.ZodObject<{
|
|
14
|
+
platform: z.ZodUnion<[z.ZodEnum<["aix", "darwin", "freebsd", "linux", "openbsd", "sunos", "win32", "cygwin", "netbsd"]>, z.ZodString]>;
|
|
15
|
+
type: z.ZodString;
|
|
16
|
+
release: z.ZodString;
|
|
17
|
+
arch: z.ZodString;
|
|
18
|
+
}, "strip", z.ZodTypeAny, {
|
|
19
|
+
type: string;
|
|
20
|
+
platform: string;
|
|
21
|
+
release: string;
|
|
22
|
+
arch: string;
|
|
23
|
+
}, {
|
|
24
|
+
type: string;
|
|
25
|
+
platform: string;
|
|
26
|
+
release: string;
|
|
27
|
+
arch: string;
|
|
28
|
+
}>;
|
|
29
|
+
runtime: z.ZodOptional<z.ZodObject<{
|
|
30
|
+
node: z.ZodOptional<z.ZodString>;
|
|
31
|
+
}, "strip", z.ZodTypeAny, {
|
|
32
|
+
node?: string | undefined;
|
|
33
|
+
}, {
|
|
34
|
+
node?: string | undefined;
|
|
35
|
+
}>>;
|
|
36
|
+
/** 便于 server 做粗粒度任务路由:ios-development/windows-desktop-development/nvidia-gpu 等。 */
|
|
37
|
+
capabilities: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
|
|
38
|
+
}, "strip", z.ZodTypeAny, {
|
|
39
|
+
at: string;
|
|
40
|
+
capabilities: string[];
|
|
41
|
+
hostname: string;
|
|
42
|
+
os: {
|
|
43
|
+
type: string;
|
|
44
|
+
platform: string;
|
|
45
|
+
release: string;
|
|
46
|
+
arch: string;
|
|
47
|
+
};
|
|
48
|
+
runtime?: {
|
|
49
|
+
node?: string | undefined;
|
|
50
|
+
} | undefined;
|
|
51
|
+
}, {
|
|
52
|
+
at: string;
|
|
53
|
+
hostname: string;
|
|
54
|
+
os: {
|
|
55
|
+
type: string;
|
|
56
|
+
platform: string;
|
|
57
|
+
release: string;
|
|
58
|
+
arch: string;
|
|
59
|
+
};
|
|
60
|
+
capabilities?: string[] | undefined;
|
|
61
|
+
runtime?: {
|
|
62
|
+
node?: string | undefined;
|
|
63
|
+
} | undefined;
|
|
64
|
+
}>;
|
|
65
|
+
export type DeviceInfoResult = z.infer<typeof DeviceInfoResult>;
|
|
66
|
+
export declare const DeviceResourcesParams: z.ZodDefault<z.ZodObject<{}, "strip", z.ZodTypeAny, {}, {}>>;
|
|
67
|
+
export type DeviceResourcesParams = z.infer<typeof DeviceResourcesParams>;
|
|
68
|
+
export declare const DeviceResourcesResult: z.ZodObject<{
|
|
69
|
+
at: z.ZodString;
|
|
70
|
+
cpu: z.ZodOptional<z.ZodObject<{
|
|
71
|
+
loadavg: z.ZodOptional<z.ZodArray<z.ZodNumber, "many">>;
|
|
72
|
+
cores: z.ZodOptional<z.ZodNumber>;
|
|
73
|
+
usagePercent: z.ZodOptional<z.ZodNumber>;
|
|
74
|
+
}, "strip", z.ZodTypeAny, {
|
|
75
|
+
usagePercent?: number | undefined;
|
|
76
|
+
loadavg?: number[] | undefined;
|
|
77
|
+
cores?: number | undefined;
|
|
78
|
+
}, {
|
|
79
|
+
usagePercent?: number | undefined;
|
|
80
|
+
loadavg?: number[] | undefined;
|
|
81
|
+
cores?: number | undefined;
|
|
82
|
+
}>>;
|
|
83
|
+
memory: z.ZodObject<{
|
|
84
|
+
totalBytes: z.ZodNumber;
|
|
85
|
+
freeBytes: z.ZodNumber;
|
|
86
|
+
usedBytes: z.ZodNumber;
|
|
87
|
+
usagePercent: z.ZodOptional<z.ZodNumber>;
|
|
88
|
+
}, "strip", z.ZodTypeAny, {
|
|
89
|
+
totalBytes: number;
|
|
90
|
+
freeBytes: number;
|
|
91
|
+
usedBytes: number;
|
|
92
|
+
usagePercent?: number | undefined;
|
|
93
|
+
}, {
|
|
94
|
+
totalBytes: number;
|
|
95
|
+
freeBytes: number;
|
|
96
|
+
usedBytes: number;
|
|
97
|
+
usagePercent?: number | undefined;
|
|
98
|
+
}>;
|
|
99
|
+
disk: z.ZodOptional<z.ZodObject<{
|
|
100
|
+
path: z.ZodString;
|
|
101
|
+
totalBytes: z.ZodOptional<z.ZodNumber>;
|
|
102
|
+
freeBytes: z.ZodOptional<z.ZodNumber>;
|
|
103
|
+
usedBytes: z.ZodOptional<z.ZodNumber>;
|
|
104
|
+
usagePercent: z.ZodOptional<z.ZodNumber>;
|
|
105
|
+
}, "strip", z.ZodTypeAny, {
|
|
106
|
+
path: string;
|
|
107
|
+
usagePercent?: number | undefined;
|
|
108
|
+
totalBytes?: number | undefined;
|
|
109
|
+
freeBytes?: number | undefined;
|
|
110
|
+
usedBytes?: number | undefined;
|
|
111
|
+
}, {
|
|
112
|
+
path: string;
|
|
113
|
+
usagePercent?: number | undefined;
|
|
114
|
+
totalBytes?: number | undefined;
|
|
115
|
+
freeBytes?: number | undefined;
|
|
116
|
+
usedBytes?: number | undefined;
|
|
117
|
+
}>>;
|
|
118
|
+
gpu: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
119
|
+
name: z.ZodOptional<z.ZodString>;
|
|
120
|
+
memoryTotalBytes: z.ZodOptional<z.ZodNumber>;
|
|
121
|
+
memoryUsedBytes: z.ZodOptional<z.ZodNumber>;
|
|
122
|
+
utilizationPercent: z.ZodOptional<z.ZodNumber>;
|
|
123
|
+
}, "strip", z.ZodTypeAny, {
|
|
124
|
+
name?: string | undefined;
|
|
125
|
+
memoryTotalBytes?: number | undefined;
|
|
126
|
+
memoryUsedBytes?: number | undefined;
|
|
127
|
+
utilizationPercent?: number | undefined;
|
|
128
|
+
}, {
|
|
129
|
+
name?: string | undefined;
|
|
130
|
+
memoryTotalBytes?: number | undefined;
|
|
131
|
+
memoryUsedBytes?: number | undefined;
|
|
132
|
+
utilizationPercent?: number | undefined;
|
|
133
|
+
}>, "many">>;
|
|
134
|
+
process: z.ZodOptional<z.ZodObject<{
|
|
135
|
+
pid: z.ZodNumber;
|
|
136
|
+
uptimeSeconds: z.ZodNumber;
|
|
137
|
+
rssBytes: z.ZodOptional<z.ZodNumber>;
|
|
138
|
+
heapUsedBytes: z.ZodOptional<z.ZodNumber>;
|
|
139
|
+
heapTotalBytes: z.ZodOptional<z.ZodNumber>;
|
|
140
|
+
}, "strip", z.ZodTypeAny, {
|
|
141
|
+
pid: number;
|
|
142
|
+
uptimeSeconds: number;
|
|
143
|
+
rssBytes?: number | undefined;
|
|
144
|
+
heapUsedBytes?: number | undefined;
|
|
145
|
+
heapTotalBytes?: number | undefined;
|
|
146
|
+
}, {
|
|
147
|
+
pid: number;
|
|
148
|
+
uptimeSeconds: number;
|
|
149
|
+
rssBytes?: number | undefined;
|
|
150
|
+
heapUsedBytes?: number | undefined;
|
|
151
|
+
heapTotalBytes?: number | undefined;
|
|
152
|
+
}>>;
|
|
153
|
+
}, "strip", z.ZodTypeAny, {
|
|
154
|
+
at: string;
|
|
155
|
+
memory: {
|
|
156
|
+
totalBytes: number;
|
|
157
|
+
freeBytes: number;
|
|
158
|
+
usedBytes: number;
|
|
159
|
+
usagePercent?: number | undefined;
|
|
160
|
+
};
|
|
161
|
+
cpu?: {
|
|
162
|
+
usagePercent?: number | undefined;
|
|
163
|
+
loadavg?: number[] | undefined;
|
|
164
|
+
cores?: number | undefined;
|
|
165
|
+
} | undefined;
|
|
166
|
+
disk?: {
|
|
167
|
+
path: string;
|
|
168
|
+
usagePercent?: number | undefined;
|
|
169
|
+
totalBytes?: number | undefined;
|
|
170
|
+
freeBytes?: number | undefined;
|
|
171
|
+
usedBytes?: number | undefined;
|
|
172
|
+
} | undefined;
|
|
173
|
+
gpu?: {
|
|
174
|
+
name?: string | undefined;
|
|
175
|
+
memoryTotalBytes?: number | undefined;
|
|
176
|
+
memoryUsedBytes?: number | undefined;
|
|
177
|
+
utilizationPercent?: number | undefined;
|
|
178
|
+
}[] | undefined;
|
|
179
|
+
process?: {
|
|
180
|
+
pid: number;
|
|
181
|
+
uptimeSeconds: number;
|
|
182
|
+
rssBytes?: number | undefined;
|
|
183
|
+
heapUsedBytes?: number | undefined;
|
|
184
|
+
heapTotalBytes?: number | undefined;
|
|
185
|
+
} | undefined;
|
|
186
|
+
}, {
|
|
187
|
+
at: string;
|
|
188
|
+
memory: {
|
|
189
|
+
totalBytes: number;
|
|
190
|
+
freeBytes: number;
|
|
191
|
+
usedBytes: number;
|
|
192
|
+
usagePercent?: number | undefined;
|
|
193
|
+
};
|
|
194
|
+
cpu?: {
|
|
195
|
+
usagePercent?: number | undefined;
|
|
196
|
+
loadavg?: number[] | undefined;
|
|
197
|
+
cores?: number | undefined;
|
|
198
|
+
} | undefined;
|
|
199
|
+
disk?: {
|
|
200
|
+
path: string;
|
|
201
|
+
usagePercent?: number | undefined;
|
|
202
|
+
totalBytes?: number | undefined;
|
|
203
|
+
freeBytes?: number | undefined;
|
|
204
|
+
usedBytes?: number | undefined;
|
|
205
|
+
} | undefined;
|
|
206
|
+
gpu?: {
|
|
207
|
+
name?: string | undefined;
|
|
208
|
+
memoryTotalBytes?: number | undefined;
|
|
209
|
+
memoryUsedBytes?: number | undefined;
|
|
210
|
+
utilizationPercent?: number | undefined;
|
|
211
|
+
}[] | undefined;
|
|
212
|
+
process?: {
|
|
213
|
+
pid: number;
|
|
214
|
+
uptimeSeconds: number;
|
|
215
|
+
rssBytes?: number | undefined;
|
|
216
|
+
heapUsedBytes?: number | undefined;
|
|
217
|
+
heapTotalBytes?: number | undefined;
|
|
218
|
+
} | undefined;
|
|
219
|
+
}>;
|
|
220
|
+
export type DeviceResourcesResult = z.infer<typeof DeviceResourcesResult>;
|
|
221
|
+
//# sourceMappingURL=device.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"device.d.ts","sourceRoot":"","sources":["../../src/schemas/device.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB;;;;;GAKG;AAEH,eAAO,MAAM,gBAAgB,8DAA2B,CAAC;AACzD,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gBAAgB,CAAC,CAAC;AAEhE,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;IAY3B,mFAAmF;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAEnF,CAAC;AACH,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gBAAgB,CAAC,CAAC;AAEhE,eAAO,MAAM,qBAAqB,8DAA2B,CAAC;AAC9D,MAAM,MAAM,qBAAqB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAC;AAE1E,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAiChC,CAAC;AACH,MAAM,MAAM,qBAAqB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAC"}
|