@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.
Files changed (127) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +70 -0
  3. package/dist/index.d.ts +24 -0
  4. package/dist/index.d.ts.map +1 -0
  5. package/dist/index.js +24 -0
  6. package/dist/index.js.map +1 -0
  7. package/dist/json-schema/_index.json +3794 -0
  8. package/dist/json-schema/connect.hello.json +117 -0
  9. package/dist/json-schema/discovery.changed.json +190 -0
  10. package/dist/json-schema/discovery.get.json +183 -0
  11. package/dist/json-schema/discovery.list.json +182 -0
  12. package/dist/json-schema/document.prepare_upload.json +96 -0
  13. package/dist/json-schema/document.send.json +165 -0
  14. package/dist/json-schema/hook.fired.json +100 -0
  15. package/dist/json-schema/hook.resolve.json +96 -0
  16. package/dist/json-schema/interaction.cancel.json +48 -0
  17. package/dist/json-schema/interaction.request.json +376 -0
  18. package/dist/json-schema/interaction.response.json +68 -0
  19. package/dist/json-schema/project.create.json +89 -0
  20. package/dist/json-schema/project.get.json +76 -0
  21. package/dist/json-schema/project.git.deleteBranch.json +64 -0
  22. package/dist/json-schema/project.list.json +72 -0
  23. package/dist/json-schema/project.remove.json +69 -0
  24. package/dist/json-schema/project.worktree.create.json +88 -0
  25. package/dist/json-schema/project.worktree.list.json +77 -0
  26. package/dist/json-schema/project.worktree.remove.json +61 -0
  27. package/dist/json-schema/session.compress.json +72 -0
  28. package/dist/json-schema/session.create.json +128 -0
  29. package/dist/json-schema/session.inject.json +72 -0
  30. package/dist/json-schema/session.interrupt.json +58 -0
  31. package/dist/json-schema/session.list.json +127 -0
  32. package/dist/json-schema/session.send.json +132 -0
  33. package/dist/json-schema/session.status.json +94 -0
  34. package/dist/json-schema/session.switchModel.json +73 -0
  35. package/dist/json-schema/session.terminate.json +54 -0
  36. package/dist/json-schema/skill.install.json +171 -0
  37. package/dist/json-schema/skill.list.json +101 -0
  38. package/dist/json-schema/skill.uninstall.json +76 -0
  39. package/dist/json-schema/stream.ack.json +36 -0
  40. package/dist/json-schema/stream.event.json +381 -0
  41. package/dist/schemas/capabilities.d.ts +90 -0
  42. package/dist/schemas/capabilities.d.ts.map +1 -0
  43. package/dist/schemas/capabilities.js +59 -0
  44. package/dist/schemas/capabilities.js.map +1 -0
  45. package/dist/schemas/common.d.ts +66 -0
  46. package/dist/schemas/common.d.ts.map +1 -0
  47. package/dist/schemas/common.js +97 -0
  48. package/dist/schemas/common.js.map +1 -0
  49. package/dist/schemas/connect.d.ts +111 -0
  50. package/dist/schemas/connect.d.ts.map +1 -0
  51. package/dist/schemas/connect.js +46 -0
  52. package/dist/schemas/connect.js.map +1 -0
  53. package/dist/schemas/device.d.ts +221 -0
  54. package/dist/schemas/device.d.ts.map +1 -0
  55. package/dist/schemas/device.js +59 -0
  56. package/dist/schemas/device.js.map +1 -0
  57. package/dist/schemas/discovery.d.ts +892 -0
  58. package/dist/schemas/discovery.d.ts.map +1 -0
  59. package/dist/schemas/discovery.js +66 -0
  60. package/dist/schemas/discovery.js.map +1 -0
  61. package/dist/schemas/document.d.ts +351 -0
  62. package/dist/schemas/document.d.ts.map +1 -0
  63. package/dist/schemas/document.js +103 -0
  64. package/dist/schemas/document.js.map +1 -0
  65. package/dist/schemas/env.d.ts +265 -0
  66. package/dist/schemas/env.d.ts.map +1 -0
  67. package/dist/schemas/env.js +44 -0
  68. package/dist/schemas/env.js.map +1 -0
  69. package/dist/schemas/file.d.ts +274 -0
  70. package/dist/schemas/file.d.ts.map +1 -0
  71. package/dist/schemas/file.js +72 -0
  72. package/dist/schemas/file.js.map +1 -0
  73. package/dist/schemas/hook.d.ts +132 -0
  74. package/dist/schemas/hook.d.ts.map +1 -0
  75. package/dist/schemas/hook.js +58 -0
  76. package/dist/schemas/hook.js.map +1 -0
  77. package/dist/schemas/interaction.d.ts +1583 -0
  78. package/dist/schemas/interaction.d.ts.map +1 -0
  79. package/dist/schemas/interaction.js +112 -0
  80. package/dist/schemas/interaction.js.map +1 -0
  81. package/dist/schemas/jsonrpc.d.ts +314 -0
  82. package/dist/schemas/jsonrpc.d.ts.map +1 -0
  83. package/dist/schemas/jsonrpc.js +64 -0
  84. package/dist/schemas/jsonrpc.js.map +1 -0
  85. package/dist/schemas/methods.d.ts +3826 -0
  86. package/dist/schemas/methods.d.ts.map +1 -0
  87. package/dist/schemas/methods.js +311 -0
  88. package/dist/schemas/methods.js.map +1 -0
  89. package/dist/schemas/policy.d.ts +81 -0
  90. package/dist/schemas/policy.d.ts.map +1 -0
  91. package/dist/schemas/policy.js +66 -0
  92. package/dist/schemas/policy.js.map +1 -0
  93. package/dist/schemas/project.d.ts +506 -0
  94. package/dist/schemas/project.d.ts.map +1 -0
  95. package/dist/schemas/project.js +148 -0
  96. package/dist/schemas/project.js.map +1 -0
  97. package/dist/schemas/session.d.ts +730 -0
  98. package/dist/schemas/session.d.ts.map +1 -0
  99. package/dist/schemas/session.js +287 -0
  100. package/dist/schemas/session.js.map +1 -0
  101. package/dist/schemas/skill.d.ts +465 -0
  102. package/dist/schemas/skill.d.ts.map +1 -0
  103. package/dist/schemas/skill.js +103 -0
  104. package/dist/schemas/skill.js.map +1 -0
  105. package/dist/schemas/stream.d.ts +688 -0
  106. package/dist/schemas/stream.d.ts.map +1 -0
  107. package/dist/schemas/stream.js +133 -0
  108. package/dist/schemas/stream.js.map +1 -0
  109. package/package.json +52 -0
  110. package/src/index.ts +24 -0
  111. package/src/schemas/capabilities.ts +62 -0
  112. package/src/schemas/common.ts +119 -0
  113. package/src/schemas/connect.ts +50 -0
  114. package/src/schemas/device.ts +67 -0
  115. package/src/schemas/discovery.ts +80 -0
  116. package/src/schemas/document.ts +121 -0
  117. package/src/schemas/env.ts +60 -0
  118. package/src/schemas/file.ts +97 -0
  119. package/src/schemas/hook.ts +66 -0
  120. package/src/schemas/interaction.ts +135 -0
  121. package/src/schemas/jsonrpc.ts +80 -0
  122. package/src/schemas/methods.ts +414 -0
  123. package/src/schemas/policy.ts +71 -0
  124. package/src/schemas/project.ts +185 -0
  125. package/src/schemas/session.ts +336 -0
  126. package/src/schemas/skill.ts +121 -0
  127. package/src/schemas/stream.ts +149 -0
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 agent-phonon contributors
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.
package/README.md ADDED
@@ -0,0 +1,70 @@
1
+ # @agent-phonon/protocol
2
+
3
+ > agent-phonon 的**线协议**——phonon 设备与服务端之间的唯一契约。
4
+ > zod schema + TS 类型 + 方法注册表的单一事实来源。对应设计:[`../../docs/design.md`](../../docs/design.md)。
5
+
6
+ ## 是什么
7
+
8
+ 任何想调度本机 agent 的服务端,都通过这套协议和 phonon 通信。本包用 **zod** 定义全部消息形状,既是运行时校验、又是编译期类型,还能导出 **JSON Schema** 给非 TS 的服务端(Python/Go…)消费。
9
+
10
+ ## 传输模型(design D2)
11
+
12
+ 单条 **WebSocket** 上双向跑 **JSON-RPC 2.0**,两端皆可作 requester:
13
+
14
+ | 方向 | 方法 |
15
+ |------|------|
16
+ | **phonon → server** (`p2s`) | `connect.hello`、`discovery.changed`、`stream.event`、`hook.fired` |
17
+ | **server → phonon** (`s2p`) | `discovery.list/get`、`session.*`、`hook.resolve` |
18
+
19
+ ## 方法一览(33 个)
20
+
21
+ ```
22
+ connect.hello 握手:协议版本 + 设备身份 → 服务端回 tenant 绑定
23
+ discovery.list/get 发现:本机有哪些 agent 可用、各自哪些模型(design §5)
24
+ discovery.changed 可用性变化时 phonon 主动推
25
+ session.create 建会话,必须绑定 agent + model(D15)
26
+ session.send 发任务=对话;结果走 stream.event 异步流式回
27
+ session.inject 上下文注入
28
+ session.compress 压缩双模 native | custom(D7)
29
+ session.terminate 结束会话
30
+ session.status/list 查会话(始终携带 agent 身份)
31
+ stream.event phonon 上推流式结果(按 verbosity 分档)
32
+ hook.fired 到 hook 点抛事件,阻塞等服务端裁决(HITL,design §8)
33
+ hook.resolve 服务端裁决:continue | inject | modify | abort
34
+ ```
35
+
36
+ ## 核心设计点
37
+
38
+ - **session 必绑 agent**(D15):`session.create` 的 `agent`(来自 discovery 的 agentId) + `model` 必填,全生命周期携带。
39
+ - **verbosity 4 档**:`final | messages | tools | trace`,控制返回内容多少。
40
+ - **HITL 甩锅服务端**(design §8):phonon 只做 `hook.fired` → 阻塞等 `hook.resolve`,问不问真人由服务端决定。
41
+ - **tenant 隔离错误码**:`errSessionNotInTenant` 等,挂在 JSON-RPC `error.data.appCode`。
42
+ - **方法注册表** `METHODS`:声明每个方法的 direction/kind/params/result,core 与 client-sdk 共享同一份,机器可校验。
43
+
44
+ ## 用法
45
+
46
+ ```ts
47
+ import { parseParams, parseResult, METHODS, StreamEvent } from "@agent-phonon/protocol";
48
+
49
+ // 校验入参
50
+ const p = parseParams("session.create", { agent: "openclaw", model: "claude-opus-4.8" });
51
+
52
+ // 取类型
53
+ type CreateParams = import("@agent-phonon/protocol").ParamsOf<"session.create">;
54
+
55
+ // 校验流式事件
56
+ const ev = StreamEvent.parse(incoming);
57
+ ```
58
+
59
+ ## 脚本
60
+
61
+ ```bash
62
+ pnpm build # tsc → dist/
63
+ pnpm typecheck # 仅类型检查
64
+ pnpm test # build + node --test(10 个契约测试)
65
+ pnpm json-schema # 导出 dist/json-schema/*.json(供非 TS 服务端)
66
+ ```
67
+
68
+ ## 状态
69
+
70
+ 🚧 **v0.0.1 草案** — 协议仍在和需求方对齐中,字段可能调整。未发布。
@@ -0,0 +1,24 @@
1
+ /**
2
+ * @agent-phonon/protocol
3
+ *
4
+ * agent-phonon 的线协议——phonon 设备与服务端之间的唯一契约。
5
+ * zod schema + 类型 + 方法注册表的单一事实来源(design docs/design.md)。
6
+ */
7
+ export * from "./schemas/common.js";
8
+ export * from "./schemas/capabilities.js";
9
+ export * from "./schemas/discovery.js";
10
+ export * from "./schemas/session.js";
11
+ export * from "./schemas/stream.js";
12
+ export * from "./schemas/hook.js";
13
+ export * from "./schemas/document.js";
14
+ export * from "./schemas/interaction.js";
15
+ export * from "./schemas/project.js";
16
+ export * from "./schemas/skill.js";
17
+ export * from "./schemas/policy.js";
18
+ export * from "./schemas/connect.js";
19
+ export * from "./schemas/device.js";
20
+ export * from "./schemas/file.js";
21
+ export * from "./schemas/env.js";
22
+ export * from "./schemas/jsonrpc.js";
23
+ export * from "./schemas/methods.js";
24
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,cAAc,qBAAqB,CAAC;AACpC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,wBAAwB,CAAC;AACvC,cAAc,sBAAsB,CAAC;AACrC,cAAc,qBAAqB,CAAC;AACpC,cAAc,mBAAmB,CAAC;AAClC,cAAc,uBAAuB,CAAC;AACtC,cAAc,0BAA0B,CAAC;AACzC,cAAc,sBAAsB,CAAC;AACrC,cAAc,oBAAoB,CAAC;AACnC,cAAc,qBAAqB,CAAC;AACpC,cAAc,sBAAsB,CAAC;AACrC,cAAc,qBAAqB,CAAC;AACpC,cAAc,mBAAmB,CAAC;AAClC,cAAc,kBAAkB,CAAC;AACjC,cAAc,sBAAsB,CAAC;AACrC,cAAc,sBAAsB,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1,24 @@
1
+ /**
2
+ * @agent-phonon/protocol
3
+ *
4
+ * agent-phonon 的线协议——phonon 设备与服务端之间的唯一契约。
5
+ * zod schema + 类型 + 方法注册表的单一事实来源(design docs/design.md)。
6
+ */
7
+ export * from "./schemas/common.js";
8
+ export * from "./schemas/capabilities.js";
9
+ export * from "./schemas/discovery.js";
10
+ export * from "./schemas/session.js";
11
+ export * from "./schemas/stream.js";
12
+ export * from "./schemas/hook.js";
13
+ export * from "./schemas/document.js";
14
+ export * from "./schemas/interaction.js";
15
+ export * from "./schemas/project.js";
16
+ export * from "./schemas/skill.js";
17
+ export * from "./schemas/policy.js";
18
+ export * from "./schemas/connect.js";
19
+ export * from "./schemas/device.js";
20
+ export * from "./schemas/file.js";
21
+ export * from "./schemas/env.js";
22
+ export * from "./schemas/jsonrpc.js";
23
+ export * from "./schemas/methods.js";
24
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,cAAc,qBAAqB,CAAC;AACpC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,wBAAwB,CAAC;AACvC,cAAc,sBAAsB,CAAC;AACrC,cAAc,qBAAqB,CAAC;AACpC,cAAc,mBAAmB,CAAC;AAClC,cAAc,uBAAuB,CAAC;AACtC,cAAc,0BAA0B,CAAC;AACzC,cAAc,sBAAsB,CAAC;AACrC,cAAc,oBAAoB,CAAC;AACnC,cAAc,qBAAqB,CAAC;AACpC,cAAc,sBAAsB,CAAC;AACrC,cAAc,qBAAqB,CAAC;AACpC,cAAc,mBAAmB,CAAC;AAClC,cAAc,kBAAkB,CAAC;AACjC,cAAc,sBAAsB,CAAC;AACrC,cAAc,sBAAsB,CAAC"}