@f2a/network 0.1.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.
Files changed (234) hide show
  1. package/.github/workflows/ci.yml +113 -0
  2. package/.github/workflows/publish.yml +60 -0
  3. package/LICENSE +21 -0
  4. package/MONOREPO.md +58 -0
  5. package/README.md +280 -0
  6. package/SKILL.md +137 -0
  7. package/dist/adapters/openclaw.d.ts +103 -0
  8. package/dist/adapters/openclaw.d.ts.map +1 -0
  9. package/dist/adapters/openclaw.js +297 -0
  10. package/dist/adapters/openclaw.js.map +1 -0
  11. package/dist/cli/commands.d.ts +17 -0
  12. package/dist/cli/commands.d.ts.map +1 -0
  13. package/dist/cli/commands.js +107 -0
  14. package/dist/cli/commands.js.map +1 -0
  15. package/dist/cli/index.d.ts +6 -0
  16. package/dist/cli/index.d.ts.map +1 -0
  17. package/dist/cli/index.js +203 -0
  18. package/dist/cli/index.js.map +1 -0
  19. package/dist/core/autonomous-economy.d.ts +136 -0
  20. package/dist/core/autonomous-economy.d.ts.map +1 -0
  21. package/dist/core/autonomous-economy.js +255 -0
  22. package/dist/core/autonomous-economy.js.map +1 -0
  23. package/dist/core/connection-manager.d.ts +80 -0
  24. package/dist/core/connection-manager.d.ts.map +1 -0
  25. package/dist/core/connection-manager.js +235 -0
  26. package/dist/core/connection-manager.js.map +1 -0
  27. package/dist/core/connection-manager.test.d.ts +2 -0
  28. package/dist/core/connection-manager.test.d.ts.map +1 -0
  29. package/dist/core/connection-manager.test.js +52 -0
  30. package/dist/core/connection-manager.test.js.map +1 -0
  31. package/dist/core/e2ee-crypto.d.ts +90 -0
  32. package/dist/core/e2ee-crypto.d.ts.map +1 -0
  33. package/dist/core/e2ee-crypto.js +190 -0
  34. package/dist/core/e2ee-crypto.js.map +1 -0
  35. package/dist/core/f2a.d.ts +126 -0
  36. package/dist/core/f2a.d.ts.map +1 -0
  37. package/dist/core/f2a.js +425 -0
  38. package/dist/core/f2a.js.map +1 -0
  39. package/dist/core/identity.d.ts +47 -0
  40. package/dist/core/identity.d.ts.map +1 -0
  41. package/dist/core/identity.js +130 -0
  42. package/dist/core/identity.js.map +1 -0
  43. package/dist/core/identity.test.d.ts +2 -0
  44. package/dist/core/identity.test.d.ts.map +1 -0
  45. package/dist/core/identity.test.js +43 -0
  46. package/dist/core/identity.test.js.map +1 -0
  47. package/dist/core/p2p-network.d.ts +242 -0
  48. package/dist/core/p2p-network.d.ts.map +1 -0
  49. package/dist/core/p2p-network.js +1182 -0
  50. package/dist/core/p2p-network.js.map +1 -0
  51. package/dist/core/reputation-security.d.ts +168 -0
  52. package/dist/core/reputation-security.d.ts.map +1 -0
  53. package/dist/core/reputation-security.js +369 -0
  54. package/dist/core/reputation-security.js.map +1 -0
  55. package/dist/core/reputation.d.ts +179 -0
  56. package/dist/core/reputation.d.ts.map +1 -0
  57. package/dist/core/reputation.js +472 -0
  58. package/dist/core/reputation.js.map +1 -0
  59. package/dist/core/review-committee.d.ts +130 -0
  60. package/dist/core/review-committee.d.ts.map +1 -0
  61. package/dist/core/review-committee.js +251 -0
  62. package/dist/core/review-committee.js.map +1 -0
  63. package/dist/core/serverless.d.ts +155 -0
  64. package/dist/core/serverless.d.ts.map +1 -0
  65. package/dist/core/serverless.js +615 -0
  66. package/dist/core/serverless.js.map +1 -0
  67. package/dist/core/token-manager.d.ts +42 -0
  68. package/dist/core/token-manager.d.ts.map +1 -0
  69. package/dist/core/token-manager.js +122 -0
  70. package/dist/core/token-manager.js.map +1 -0
  71. package/dist/daemon/control-server.d.ts +55 -0
  72. package/dist/daemon/control-server.d.ts.map +1 -0
  73. package/dist/daemon/control-server.js +262 -0
  74. package/dist/daemon/control-server.js.map +1 -0
  75. package/dist/daemon/index.d.ts +35 -0
  76. package/dist/daemon/index.d.ts.map +1 -0
  77. package/dist/daemon/index.js +69 -0
  78. package/dist/daemon/index.js.map +1 -0
  79. package/dist/daemon/main.d.ts +6 -0
  80. package/dist/daemon/main.d.ts.map +1 -0
  81. package/dist/daemon/main.js +38 -0
  82. package/dist/daemon/main.js.map +1 -0
  83. package/dist/daemon/start.d.ts +6 -0
  84. package/dist/daemon/start.d.ts.map +1 -0
  85. package/dist/daemon/start.js +25 -0
  86. package/dist/daemon/start.js.map +1 -0
  87. package/dist/daemon/webhook.d.ts +30 -0
  88. package/dist/daemon/webhook.d.ts.map +1 -0
  89. package/dist/daemon/webhook.js +86 -0
  90. package/dist/daemon/webhook.js.map +1 -0
  91. package/dist/daemon/webhook.test.d.ts +2 -0
  92. package/dist/daemon/webhook.test.d.ts.map +1 -0
  93. package/dist/daemon/webhook.test.js +24 -0
  94. package/dist/daemon/webhook.test.js.map +1 -0
  95. package/dist/index.d.ts +24 -0
  96. package/dist/index.d.ts.map +1 -0
  97. package/dist/index.js +25 -0
  98. package/dist/index.js.map +1 -0
  99. package/dist/protocol/messages.d.ts +739 -0
  100. package/dist/protocol/messages.d.ts.map +1 -0
  101. package/dist/protocol/messages.js +188 -0
  102. package/dist/protocol/messages.js.map +1 -0
  103. package/dist/protocol/messages.test.d.ts +2 -0
  104. package/dist/protocol/messages.test.d.ts.map +1 -0
  105. package/dist/protocol/messages.test.js +55 -0
  106. package/dist/protocol/messages.test.js.map +1 -0
  107. package/dist/types/index.d.ts +247 -0
  108. package/dist/types/index.d.ts.map +1 -0
  109. package/dist/types/index.js +10 -0
  110. package/dist/types/index.js.map +1 -0
  111. package/dist/types/result.d.ts +28 -0
  112. package/dist/types/result.d.ts.map +1 -0
  113. package/dist/types/result.js +16 -0
  114. package/dist/types/result.js.map +1 -0
  115. package/dist/utils/benchmark.d.ts +67 -0
  116. package/dist/utils/benchmark.d.ts.map +1 -0
  117. package/dist/utils/benchmark.js +179 -0
  118. package/dist/utils/benchmark.js.map +1 -0
  119. package/dist/utils/logger.d.ts +105 -0
  120. package/dist/utils/logger.d.ts.map +1 -0
  121. package/dist/utils/logger.js +275 -0
  122. package/dist/utils/logger.js.map +1 -0
  123. package/dist/utils/middleware.d.ts +85 -0
  124. package/dist/utils/middleware.d.ts.map +1 -0
  125. package/dist/utils/middleware.js +173 -0
  126. package/dist/utils/middleware.js.map +1 -0
  127. package/dist/utils/rate-limiter.d.ts +71 -0
  128. package/dist/utils/rate-limiter.d.ts.map +1 -0
  129. package/dist/utils/rate-limiter.js +160 -0
  130. package/dist/utils/rate-limiter.js.map +1 -0
  131. package/dist/utils/signature.d.ts +57 -0
  132. package/dist/utils/signature.d.ts.map +1 -0
  133. package/dist/utils/signature.js +102 -0
  134. package/dist/utils/signature.js.map +1 -0
  135. package/dist/utils/validation.d.ts +504 -0
  136. package/dist/utils/validation.d.ts.map +1 -0
  137. package/dist/utils/validation.js +159 -0
  138. package/dist/utils/validation.js.map +1 -0
  139. package/docs/F2A-PROTOCOL.md +61 -0
  140. package/docs/MOBILE_BOOTSTRAP_DESIGN.md +126 -0
  141. package/docs/a2a-lessons.md +316 -0
  142. package/docs/middleware-guide.md +448 -0
  143. package/docs/readme-update-checklist.md +90 -0
  144. package/docs/reputation-guide.md +396 -0
  145. package/docs/rfcs/001-reputation-system.md +712 -0
  146. package/docs/security-design.md +247 -0
  147. package/install.sh +231 -0
  148. package/package.json +64 -0
  149. package/packages/openclaw-adapter/README.md +510 -0
  150. package/packages/openclaw-adapter/openclaw.plugin.json +106 -0
  151. package/packages/openclaw-adapter/package.json +40 -0
  152. package/packages/openclaw-adapter/src/announcement-queue.test.ts +449 -0
  153. package/packages/openclaw-adapter/src/announcement-queue.ts +403 -0
  154. package/packages/openclaw-adapter/src/capability-detector.test.ts +99 -0
  155. package/packages/openclaw-adapter/src/capability-detector.ts +183 -0
  156. package/packages/openclaw-adapter/src/claim-handlers.test.ts +974 -0
  157. package/packages/openclaw-adapter/src/claim-handlers.ts +482 -0
  158. package/packages/openclaw-adapter/src/connector.business.test.ts +583 -0
  159. package/packages/openclaw-adapter/src/connector.ts +795 -0
  160. package/packages/openclaw-adapter/src/index.test.ts +82 -0
  161. package/packages/openclaw-adapter/src/index.ts +18 -0
  162. package/packages/openclaw-adapter/src/integration.e2e.test.ts +829 -0
  163. package/packages/openclaw-adapter/src/logger.ts +51 -0
  164. package/packages/openclaw-adapter/src/network-client.test.ts +266 -0
  165. package/packages/openclaw-adapter/src/network-client.ts +251 -0
  166. package/packages/openclaw-adapter/src/network-recovery.test.ts +465 -0
  167. package/packages/openclaw-adapter/src/node-manager.test.ts +136 -0
  168. package/packages/openclaw-adapter/src/node-manager.ts +429 -0
  169. package/packages/openclaw-adapter/src/plugin.test.ts +439 -0
  170. package/packages/openclaw-adapter/src/plugin.ts +104 -0
  171. package/packages/openclaw-adapter/src/reputation.test.ts +221 -0
  172. package/packages/openclaw-adapter/src/reputation.ts +368 -0
  173. package/packages/openclaw-adapter/src/task-guard.test.ts +502 -0
  174. package/packages/openclaw-adapter/src/task-guard.ts +860 -0
  175. package/packages/openclaw-adapter/src/task-queue.concurrency.test.ts +462 -0
  176. package/packages/openclaw-adapter/src/task-queue.edge-cases.test.ts +284 -0
  177. package/packages/openclaw-adapter/src/task-queue.persistence.test.ts +408 -0
  178. package/packages/openclaw-adapter/src/task-queue.ts +668 -0
  179. package/packages/openclaw-adapter/src/tool-handlers.test.ts +906 -0
  180. package/packages/openclaw-adapter/src/tool-handlers.ts +574 -0
  181. package/packages/openclaw-adapter/src/types.ts +361 -0
  182. package/packages/openclaw-adapter/src/webhook-pusher.test.ts +188 -0
  183. package/packages/openclaw-adapter/src/webhook-pusher.ts +220 -0
  184. package/packages/openclaw-adapter/src/webhook-server.test.ts +580 -0
  185. package/packages/openclaw-adapter/src/webhook-server.ts +202 -0
  186. package/packages/openclaw-adapter/tsconfig.json +20 -0
  187. package/src/cli/commands.test.ts +157 -0
  188. package/src/cli/commands.ts +129 -0
  189. package/src/cli/index.test.ts +77 -0
  190. package/src/cli/index.ts +234 -0
  191. package/src/core/autonomous-economy.test.ts +291 -0
  192. package/src/core/autonomous-economy.ts +428 -0
  193. package/src/core/e2ee-crypto.test.ts +125 -0
  194. package/src/core/e2ee-crypto.ts +246 -0
  195. package/src/core/f2a.test.ts +269 -0
  196. package/src/core/f2a.ts +618 -0
  197. package/src/core/p2p-network.test.ts +199 -0
  198. package/src/core/p2p-network.ts +1432 -0
  199. package/src/core/reputation-security.test.ts +403 -0
  200. package/src/core/reputation-security.ts +562 -0
  201. package/src/core/reputation.test.ts +260 -0
  202. package/src/core/reputation.ts +576 -0
  203. package/src/core/review-committee.test.ts +380 -0
  204. package/src/core/review-committee.ts +401 -0
  205. package/src/core/token-manager.test.ts +133 -0
  206. package/src/core/token-manager.ts +140 -0
  207. package/src/daemon/control-server.test.ts +216 -0
  208. package/src/daemon/control-server.ts +292 -0
  209. package/src/daemon/index.test.ts +85 -0
  210. package/src/daemon/index.ts +89 -0
  211. package/src/daemon/main.ts +44 -0
  212. package/src/daemon/start.ts +29 -0
  213. package/src/daemon/webhook.test.ts +68 -0
  214. package/src/daemon/webhook.ts +105 -0
  215. package/src/index.test.ts +436 -0
  216. package/src/index.ts +72 -0
  217. package/src/types/index.test.ts +87 -0
  218. package/src/types/index.ts +341 -0
  219. package/src/types/result.ts +68 -0
  220. package/src/utils/benchmark.ts +237 -0
  221. package/src/utils/logger.ts +331 -0
  222. package/src/utils/middleware.ts +229 -0
  223. package/src/utils/rate-limiter.ts +207 -0
  224. package/src/utils/signature.ts +136 -0
  225. package/src/utils/validation.ts +186 -0
  226. package/tests/docker/Dockerfile.node +23 -0
  227. package/tests/docker/Dockerfile.runner +18 -0
  228. package/tests/docker/docker-compose.test.yml +73 -0
  229. package/tests/integration/message-passing.test.ts +109 -0
  230. package/tests/integration/multi-node.test.ts +92 -0
  231. package/tests/integration/p2p-connection.test.ts +83 -0
  232. package/tests/integration/test-config.ts +32 -0
  233. package/tsconfig.json +21 -0
  234. package/vitest.config.ts +26 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"signature.js","sourceRoot":"","sources":["../../src/utils/signature.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,504 @@
1
+ /**
2
+ * F2A 输入验证 Schema
3
+ * 使用 Zod 进行运行时类型验证
4
+ */
5
+ import { z } from 'zod';
6
+ export declare const LogLevelSchema: z.ZodEnum<["DEBUG", "INFO", "WARN", "ERROR"]>;
7
+ export declare const SecurityLevelSchema: z.ZodEnum<["low", "medium", "high"]>;
8
+ export declare const ParameterSchemaSchema: z.ZodObject<{
9
+ type: z.ZodEnum<["string", "number", "boolean", "object", "array"]>;
10
+ required: z.ZodOptional<z.ZodBoolean>;
11
+ default: z.ZodOptional<z.ZodUnknown>;
12
+ description: z.ZodOptional<z.ZodString>;
13
+ }, "strip", z.ZodTypeAny, {
14
+ type: "string" | "number" | "boolean" | "object" | "array";
15
+ default?: unknown;
16
+ required?: boolean | undefined;
17
+ description?: string | undefined;
18
+ }, {
19
+ type: "string" | "number" | "boolean" | "object" | "array";
20
+ default?: unknown;
21
+ required?: boolean | undefined;
22
+ description?: string | undefined;
23
+ }>;
24
+ export declare const AgentCapabilitySchema: z.ZodObject<{
25
+ name: z.ZodString;
26
+ description: z.ZodString;
27
+ tools: z.ZodArray<z.ZodString, "many">;
28
+ parameters: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodObject<{
29
+ type: z.ZodEnum<["string", "number", "boolean", "object", "array"]>;
30
+ required: z.ZodOptional<z.ZodBoolean>;
31
+ default: z.ZodOptional<z.ZodUnknown>;
32
+ description: z.ZodOptional<z.ZodString>;
33
+ }, "strip", z.ZodTypeAny, {
34
+ type: "string" | "number" | "boolean" | "object" | "array";
35
+ default?: unknown;
36
+ required?: boolean | undefined;
37
+ description?: string | undefined;
38
+ }, {
39
+ type: "string" | "number" | "boolean" | "object" | "array";
40
+ default?: unknown;
41
+ required?: boolean | undefined;
42
+ description?: string | undefined;
43
+ }>>>;
44
+ }, "strip", z.ZodTypeAny, {
45
+ description: string;
46
+ name: string;
47
+ tools: string[];
48
+ parameters?: Record<string, {
49
+ type: "string" | "number" | "boolean" | "object" | "array";
50
+ default?: unknown;
51
+ required?: boolean | undefined;
52
+ description?: string | undefined;
53
+ }> | undefined;
54
+ }, {
55
+ description: string;
56
+ name: string;
57
+ tools: string[];
58
+ parameters?: Record<string, {
59
+ type: "string" | "number" | "boolean" | "object" | "array";
60
+ default?: unknown;
61
+ required?: boolean | undefined;
62
+ description?: string | undefined;
63
+ }> | undefined;
64
+ }>;
65
+ export declare const P2PNetworkConfigSchema: z.ZodObject<{
66
+ listenPort: z.ZodOptional<z.ZodNumber>;
67
+ listenAddresses: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
68
+ bootstrapPeers: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
69
+ enableMDNS: z.ZodOptional<z.ZodBoolean>;
70
+ enableDHT: z.ZodOptional<z.ZodBoolean>;
71
+ dhtServerMode: z.ZodOptional<z.ZodBoolean>;
72
+ }, "strip", z.ZodTypeAny, {
73
+ listenPort?: number | undefined;
74
+ listenAddresses?: string[] | undefined;
75
+ bootstrapPeers?: string[] | undefined;
76
+ enableMDNS?: boolean | undefined;
77
+ enableDHT?: boolean | undefined;
78
+ dhtServerMode?: boolean | undefined;
79
+ }, {
80
+ listenPort?: number | undefined;
81
+ listenAddresses?: string[] | undefined;
82
+ bootstrapPeers?: string[] | undefined;
83
+ enableMDNS?: boolean | undefined;
84
+ enableDHT?: boolean | undefined;
85
+ dhtServerMode?: boolean | undefined;
86
+ }>;
87
+ export declare const SecurityConfigSchema: z.ZodObject<{
88
+ level: z.ZodEnum<["low", "medium", "high"]>;
89
+ requireConfirmation: z.ZodBoolean;
90
+ verifySignatures: z.ZodBoolean;
91
+ whitelist: z.ZodOptional<z.ZodSet<z.ZodString>>;
92
+ blacklist: z.ZodOptional<z.ZodSet<z.ZodString>>;
93
+ rateLimit: z.ZodOptional<z.ZodObject<{
94
+ maxRequests: z.ZodNumber;
95
+ windowMs: z.ZodNumber;
96
+ }, "strip", z.ZodTypeAny, {
97
+ maxRequests: number;
98
+ windowMs: number;
99
+ }, {
100
+ maxRequests: number;
101
+ windowMs: number;
102
+ }>>;
103
+ }, "strip", z.ZodTypeAny, {
104
+ level: "low" | "medium" | "high";
105
+ requireConfirmation: boolean;
106
+ verifySignatures: boolean;
107
+ whitelist?: Set<string> | undefined;
108
+ blacklist?: Set<string> | undefined;
109
+ rateLimit?: {
110
+ maxRequests: number;
111
+ windowMs: number;
112
+ } | undefined;
113
+ }, {
114
+ level: "low" | "medium" | "high";
115
+ requireConfirmation: boolean;
116
+ verifySignatures: boolean;
117
+ whitelist?: Set<string> | undefined;
118
+ blacklist?: Set<string> | undefined;
119
+ rateLimit?: {
120
+ maxRequests: number;
121
+ windowMs: number;
122
+ } | undefined;
123
+ }>;
124
+ export declare const F2AOptionsSchema: z.ZodObject<{
125
+ displayName: z.ZodOptional<z.ZodString>;
126
+ agentType: z.ZodOptional<z.ZodEnum<["openclaw", "claude-code", "codex", "custom"]>>;
127
+ network: z.ZodOptional<z.ZodObject<{
128
+ listenPort: z.ZodOptional<z.ZodNumber>;
129
+ listenAddresses: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
130
+ bootstrapPeers: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
131
+ enableMDNS: z.ZodOptional<z.ZodBoolean>;
132
+ enableDHT: z.ZodOptional<z.ZodBoolean>;
133
+ dhtServerMode: z.ZodOptional<z.ZodBoolean>;
134
+ }, "strip", z.ZodTypeAny, {
135
+ listenPort?: number | undefined;
136
+ listenAddresses?: string[] | undefined;
137
+ bootstrapPeers?: string[] | undefined;
138
+ enableMDNS?: boolean | undefined;
139
+ enableDHT?: boolean | undefined;
140
+ dhtServerMode?: boolean | undefined;
141
+ }, {
142
+ listenPort?: number | undefined;
143
+ listenAddresses?: string[] | undefined;
144
+ bootstrapPeers?: string[] | undefined;
145
+ enableMDNS?: boolean | undefined;
146
+ enableDHT?: boolean | undefined;
147
+ dhtServerMode?: boolean | undefined;
148
+ }>>;
149
+ security: z.ZodOptional<z.ZodObject<{
150
+ level: z.ZodEnum<["low", "medium", "high"]>;
151
+ requireConfirmation: z.ZodBoolean;
152
+ verifySignatures: z.ZodBoolean;
153
+ whitelist: z.ZodOptional<z.ZodSet<z.ZodString>>;
154
+ blacklist: z.ZodOptional<z.ZodSet<z.ZodString>>;
155
+ rateLimit: z.ZodOptional<z.ZodObject<{
156
+ maxRequests: z.ZodNumber;
157
+ windowMs: z.ZodNumber;
158
+ }, "strip", z.ZodTypeAny, {
159
+ maxRequests: number;
160
+ windowMs: number;
161
+ }, {
162
+ maxRequests: number;
163
+ windowMs: number;
164
+ }>>;
165
+ }, "strip", z.ZodTypeAny, {
166
+ level: "low" | "medium" | "high";
167
+ requireConfirmation: boolean;
168
+ verifySignatures: boolean;
169
+ whitelist?: Set<string> | undefined;
170
+ blacklist?: Set<string> | undefined;
171
+ rateLimit?: {
172
+ maxRequests: number;
173
+ windowMs: number;
174
+ } | undefined;
175
+ }, {
176
+ level: "low" | "medium" | "high";
177
+ requireConfirmation: boolean;
178
+ verifySignatures: boolean;
179
+ whitelist?: Set<string> | undefined;
180
+ blacklist?: Set<string> | undefined;
181
+ rateLimit?: {
182
+ maxRequests: number;
183
+ windowMs: number;
184
+ } | undefined;
185
+ }>>;
186
+ logLevel: z.ZodOptional<z.ZodEnum<["DEBUG", "INFO", "WARN", "ERROR"]>>;
187
+ dataDir: z.ZodOptional<z.ZodString>;
188
+ }, "strip", z.ZodTypeAny, {
189
+ displayName?: string | undefined;
190
+ agentType?: "openclaw" | "claude-code" | "codex" | "custom" | undefined;
191
+ network?: {
192
+ listenPort?: number | undefined;
193
+ listenAddresses?: string[] | undefined;
194
+ bootstrapPeers?: string[] | undefined;
195
+ enableMDNS?: boolean | undefined;
196
+ enableDHT?: boolean | undefined;
197
+ dhtServerMode?: boolean | undefined;
198
+ } | undefined;
199
+ security?: {
200
+ level: "low" | "medium" | "high";
201
+ requireConfirmation: boolean;
202
+ verifySignatures: boolean;
203
+ whitelist?: Set<string> | undefined;
204
+ blacklist?: Set<string> | undefined;
205
+ rateLimit?: {
206
+ maxRequests: number;
207
+ windowMs: number;
208
+ } | undefined;
209
+ } | undefined;
210
+ logLevel?: "DEBUG" | "INFO" | "WARN" | "ERROR" | undefined;
211
+ dataDir?: string | undefined;
212
+ }, {
213
+ displayName?: string | undefined;
214
+ agentType?: "openclaw" | "claude-code" | "codex" | "custom" | undefined;
215
+ network?: {
216
+ listenPort?: number | undefined;
217
+ listenAddresses?: string[] | undefined;
218
+ bootstrapPeers?: string[] | undefined;
219
+ enableMDNS?: boolean | undefined;
220
+ enableDHT?: boolean | undefined;
221
+ dhtServerMode?: boolean | undefined;
222
+ } | undefined;
223
+ security?: {
224
+ level: "low" | "medium" | "high";
225
+ requireConfirmation: boolean;
226
+ verifySignatures: boolean;
227
+ whitelist?: Set<string> | undefined;
228
+ blacklist?: Set<string> | undefined;
229
+ rateLimit?: {
230
+ maxRequests: number;
231
+ windowMs: number;
232
+ } | undefined;
233
+ } | undefined;
234
+ logLevel?: "DEBUG" | "INFO" | "WARN" | "ERROR" | undefined;
235
+ dataDir?: string | undefined;
236
+ }>;
237
+ export declare const TaskDelegateOptionsSchema: z.ZodObject<{
238
+ capability: z.ZodString;
239
+ description: z.ZodString;
240
+ parameters: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
241
+ timeout: z.ZodOptional<z.ZodNumber>;
242
+ parallel: z.ZodOptional<z.ZodBoolean>;
243
+ minResponses: z.ZodOptional<z.ZodNumber>;
244
+ }, "strip", z.ZodTypeAny, {
245
+ description: string;
246
+ capability: string;
247
+ timeout?: number | undefined;
248
+ parameters?: Record<string, unknown> | undefined;
249
+ parallel?: boolean | undefined;
250
+ minResponses?: number | undefined;
251
+ }, {
252
+ description: string;
253
+ capability: string;
254
+ timeout?: number | undefined;
255
+ parameters?: Record<string, unknown> | undefined;
256
+ parallel?: boolean | undefined;
257
+ minResponses?: number | undefined;
258
+ }>;
259
+ export declare const F2AMessageTypeSchema: z.ZodEnum<["DISCOVER", "DISCOVER_RESP", "CAPABILITY_QUERY", "CAPABILITY_RESPONSE", "TASK_REQUEST", "TASK_RESPONSE", "TASK_DELEGATE", "PING", "PONG"]>;
260
+ export declare const F2AMessageSchema: z.ZodObject<{
261
+ id: z.ZodString;
262
+ type: z.ZodEnum<["DISCOVER", "DISCOVER_RESP", "CAPABILITY_QUERY", "CAPABILITY_RESPONSE", "TASK_REQUEST", "TASK_RESPONSE", "TASK_DELEGATE", "PING", "PONG"]>;
263
+ from: z.ZodString;
264
+ to: z.ZodOptional<z.ZodString>;
265
+ timestamp: z.ZodNumber;
266
+ ttl: z.ZodOptional<z.ZodNumber>;
267
+ payload: z.ZodUnknown;
268
+ }, "strip", z.ZodTypeAny, {
269
+ timestamp: number;
270
+ type: "DISCOVER" | "DISCOVER_RESP" | "CAPABILITY_QUERY" | "CAPABILITY_RESPONSE" | "TASK_REQUEST" | "TASK_RESPONSE" | "TASK_DELEGATE" | "PING" | "PONG";
271
+ id: string;
272
+ from: string;
273
+ to?: string | undefined;
274
+ ttl?: number | undefined;
275
+ payload?: unknown;
276
+ }, {
277
+ timestamp: number;
278
+ type: "DISCOVER" | "DISCOVER_RESP" | "CAPABILITY_QUERY" | "CAPABILITY_RESPONSE" | "TASK_REQUEST" | "TASK_RESPONSE" | "TASK_DELEGATE" | "PING" | "PONG";
279
+ id: string;
280
+ from: string;
281
+ to?: string | undefined;
282
+ ttl?: number | undefined;
283
+ payload?: unknown;
284
+ }>;
285
+ export declare const TaskRequestPayloadSchema: z.ZodObject<{
286
+ taskId: z.ZodString;
287
+ taskType: z.ZodString;
288
+ description: z.ZodString;
289
+ parameters: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
290
+ timeout: z.ZodOptional<z.ZodNumber>;
291
+ }, "strip", z.ZodTypeAny, {
292
+ description: string;
293
+ taskId: string;
294
+ taskType: string;
295
+ timeout?: number | undefined;
296
+ parameters?: Record<string, unknown> | undefined;
297
+ }, {
298
+ description: string;
299
+ taskId: string;
300
+ taskType: string;
301
+ timeout?: number | undefined;
302
+ parameters?: Record<string, unknown> | undefined;
303
+ }>;
304
+ export declare const TaskResponsePayloadSchema: z.ZodObject<{
305
+ taskId: z.ZodString;
306
+ status: z.ZodEnum<["success", "error", "rejected", "delegated"]>;
307
+ result: z.ZodOptional<z.ZodUnknown>;
308
+ error: z.ZodOptional<z.ZodString>;
309
+ delegatedTo: z.ZodOptional<z.ZodString>;
310
+ }, "strip", z.ZodTypeAny, {
311
+ status: "success" | "error" | "rejected" | "delegated";
312
+ taskId: string;
313
+ error?: string | undefined;
314
+ result?: unknown;
315
+ delegatedTo?: string | undefined;
316
+ }, {
317
+ status: "success" | "error" | "rejected" | "delegated";
318
+ taskId: string;
319
+ error?: string | undefined;
320
+ result?: unknown;
321
+ delegatedTo?: string | undefined;
322
+ }>;
323
+ export declare const WebhookConfigSchema: z.ZodObject<{
324
+ url: z.ZodString;
325
+ token: z.ZodString;
326
+ timeout: z.ZodOptional<z.ZodNumber>;
327
+ retries: z.ZodOptional<z.ZodNumber>;
328
+ retryDelay: z.ZodOptional<z.ZodNumber>;
329
+ }, "strip", z.ZodTypeAny, {
330
+ url: string;
331
+ token: string;
332
+ timeout?: number | undefined;
333
+ retries?: number | undefined;
334
+ retryDelay?: number | undefined;
335
+ }, {
336
+ url: string;
337
+ token: string;
338
+ timeout?: number | undefined;
339
+ retries?: number | undefined;
340
+ retryDelay?: number | undefined;
341
+ }>;
342
+ /**
343
+ * 验证 F2A 配置
344
+ */
345
+ export declare function validateF2AOptions(options: unknown): z.SafeParseReturnType<{
346
+ displayName?: string | undefined;
347
+ agentType?: "openclaw" | "claude-code" | "codex" | "custom" | undefined;
348
+ network?: {
349
+ listenPort?: number | undefined;
350
+ listenAddresses?: string[] | undefined;
351
+ bootstrapPeers?: string[] | undefined;
352
+ enableMDNS?: boolean | undefined;
353
+ enableDHT?: boolean | undefined;
354
+ dhtServerMode?: boolean | undefined;
355
+ } | undefined;
356
+ security?: {
357
+ level: "low" | "medium" | "high";
358
+ requireConfirmation: boolean;
359
+ verifySignatures: boolean;
360
+ whitelist?: Set<string> | undefined;
361
+ blacklist?: Set<string> | undefined;
362
+ rateLimit?: {
363
+ maxRequests: number;
364
+ windowMs: number;
365
+ } | undefined;
366
+ } | undefined;
367
+ logLevel?: "DEBUG" | "INFO" | "WARN" | "ERROR" | undefined;
368
+ dataDir?: string | undefined;
369
+ }, {
370
+ displayName?: string | undefined;
371
+ agentType?: "openclaw" | "claude-code" | "codex" | "custom" | undefined;
372
+ network?: {
373
+ listenPort?: number | undefined;
374
+ listenAddresses?: string[] | undefined;
375
+ bootstrapPeers?: string[] | undefined;
376
+ enableMDNS?: boolean | undefined;
377
+ enableDHT?: boolean | undefined;
378
+ dhtServerMode?: boolean | undefined;
379
+ } | undefined;
380
+ security?: {
381
+ level: "low" | "medium" | "high";
382
+ requireConfirmation: boolean;
383
+ verifySignatures: boolean;
384
+ whitelist?: Set<string> | undefined;
385
+ blacklist?: Set<string> | undefined;
386
+ rateLimit?: {
387
+ maxRequests: number;
388
+ windowMs: number;
389
+ } | undefined;
390
+ } | undefined;
391
+ logLevel?: "DEBUG" | "INFO" | "WARN" | "ERROR" | undefined;
392
+ dataDir?: string | undefined;
393
+ }>;
394
+ /**
395
+ * 验证任务委托选项
396
+ */
397
+ export declare function validateTaskDelegateOptions(options: unknown): z.SafeParseReturnType<{
398
+ description: string;
399
+ capability: string;
400
+ timeout?: number | undefined;
401
+ parameters?: Record<string, unknown> | undefined;
402
+ parallel?: boolean | undefined;
403
+ minResponses?: number | undefined;
404
+ }, {
405
+ description: string;
406
+ capability: string;
407
+ timeout?: number | undefined;
408
+ parameters?: Record<string, unknown> | undefined;
409
+ parallel?: boolean | undefined;
410
+ minResponses?: number | undefined;
411
+ }>;
412
+ /**
413
+ * 验证 Agent 能力
414
+ */
415
+ export declare function validateAgentCapability(capability: unknown): z.SafeParseReturnType<{
416
+ description: string;
417
+ name: string;
418
+ tools: string[];
419
+ parameters?: Record<string, {
420
+ type: "string" | "number" | "boolean" | "object" | "array";
421
+ default?: unknown;
422
+ required?: boolean | undefined;
423
+ description?: string | undefined;
424
+ }> | undefined;
425
+ }, {
426
+ description: string;
427
+ name: string;
428
+ tools: string[];
429
+ parameters?: Record<string, {
430
+ type: "string" | "number" | "boolean" | "object" | "array";
431
+ default?: unknown;
432
+ required?: boolean | undefined;
433
+ description?: string | undefined;
434
+ }> | undefined;
435
+ }>;
436
+ /**
437
+ * 验证 F2A 消息
438
+ */
439
+ export declare function validateF2AMessage(message: unknown): z.SafeParseReturnType<{
440
+ timestamp: number;
441
+ type: "DISCOVER" | "DISCOVER_RESP" | "CAPABILITY_QUERY" | "CAPABILITY_RESPONSE" | "TASK_REQUEST" | "TASK_RESPONSE" | "TASK_DELEGATE" | "PING" | "PONG";
442
+ id: string;
443
+ from: string;
444
+ to?: string | undefined;
445
+ ttl?: number | undefined;
446
+ payload?: unknown;
447
+ }, {
448
+ timestamp: number;
449
+ type: "DISCOVER" | "DISCOVER_RESP" | "CAPABILITY_QUERY" | "CAPABILITY_RESPONSE" | "TASK_REQUEST" | "TASK_RESPONSE" | "TASK_DELEGATE" | "PING" | "PONG";
450
+ id: string;
451
+ from: string;
452
+ to?: string | undefined;
453
+ ttl?: number | undefined;
454
+ payload?: unknown;
455
+ }>;
456
+ /**
457
+ * 验证任务请求载荷
458
+ */
459
+ export declare function validateTaskRequestPayload(payload: unknown): z.SafeParseReturnType<{
460
+ description: string;
461
+ taskId: string;
462
+ taskType: string;
463
+ timeout?: number | undefined;
464
+ parameters?: Record<string, unknown> | undefined;
465
+ }, {
466
+ description: string;
467
+ taskId: string;
468
+ taskType: string;
469
+ timeout?: number | undefined;
470
+ parameters?: Record<string, unknown> | undefined;
471
+ }>;
472
+ /**
473
+ * 验证任务响应载荷
474
+ */
475
+ export declare function validateTaskResponsePayload(payload: unknown): z.SafeParseReturnType<{
476
+ status: "success" | "error" | "rejected" | "delegated";
477
+ taskId: string;
478
+ error?: string | undefined;
479
+ result?: unknown;
480
+ delegatedTo?: string | undefined;
481
+ }, {
482
+ status: "success" | "error" | "rejected" | "delegated";
483
+ taskId: string;
484
+ error?: string | undefined;
485
+ result?: unknown;
486
+ delegatedTo?: string | undefined;
487
+ }>;
488
+ /**
489
+ * 验证 Webhook 配置
490
+ */
491
+ export declare function validateWebhookConfig(config: unknown): z.SafeParseReturnType<{
492
+ url: string;
493
+ token: string;
494
+ timeout?: number | undefined;
495
+ retries?: number | undefined;
496
+ retryDelay?: number | undefined;
497
+ }, {
498
+ url: string;
499
+ token: string;
500
+ timeout?: number | undefined;
501
+ retries?: number | undefined;
502
+ retryDelay?: number | undefined;
503
+ }>;
504
+ //# sourceMappingURL=validation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validation.d.ts","sourceRoot":"","sources":["../../src/utils/validation.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAMxB,eAAO,MAAM,cAAc,+CAA6C,CAAC;AAEzE,eAAO,MAAM,mBAAmB,sCAAoC,CAAC;AAMrE,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;EAKhC,CAAC;AAEH,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAKhC,CAAC;AAMH,eAAO,MAAM,sBAAsB;;;;;;;;;;;;;;;;;;;;;EAOjC,CAAC;AAEH,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAU/B,CAAC;AAEH,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAO3B,CAAC;AAMH,eAAO,MAAM,yBAAyB;;;;;;;;;;;;;;;;;;;;;EAOpC,CAAC;AAMH,eAAO,MAAM,oBAAoB,uJAU/B,CAAC;AAEH,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;EAQ3B,CAAC;AAEH,eAAO,MAAM,wBAAwB;;;;;;;;;;;;;;;;;;EAMnC,CAAC;AAEH,eAAO,MAAM,yBAAyB;;;;;;;;;;;;;;;;;;EAMpC,CAAC;AAMH,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;EAM9B,CAAC;AAMH;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAElD;AAED;;GAEG;AACH,wBAAgB,2BAA2B,CAAC,OAAO,EAAE,OAAO;;;;;;;;;;;;;;GAE3D;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CAAC,UAAU,EAAE,OAAO;;;;;;;;;;;;;;;;;;;;GAE1D;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,OAAO;;;;;;;;;;;;;;;;GAElD;AAED;;GAEG;AACH,wBAAgB,0BAA0B,CAAC,OAAO,EAAE,OAAO;;;;;;;;;;;;GAE1D;AAED;;GAEG;AACH,wBAAgB,2BAA2B,CAAC,OAAO,EAAE,OAAO;;;;;;;;;;;;GAE3D;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,OAAO;;;;;;;;;;;;GAEpD"}
@@ -0,0 +1,159 @@
1
+ /**
2
+ * F2A 输入验证 Schema
3
+ * 使用 Zod 进行运行时类型验证
4
+ */
5
+ import { z } from 'zod';
6
+ // ============================================================================
7
+ // 基础类型 Schema
8
+ // ============================================================================
9
+ export const LogLevelSchema = z.enum(['DEBUG', 'INFO', 'WARN', 'ERROR']);
10
+ export const SecurityLevelSchema = z.enum(['low', 'medium', 'high']);
11
+ // ============================================================================
12
+ // Agent 能力 Schema
13
+ // ============================================================================
14
+ export const ParameterSchemaSchema = z.object({
15
+ type: z.enum(['string', 'number', 'boolean', 'object', 'array']),
16
+ required: z.boolean().optional(),
17
+ default: z.unknown().optional(),
18
+ description: z.string().optional()
19
+ });
20
+ export const AgentCapabilitySchema = z.object({
21
+ name: z.string().min(1).max(64).regex(/^[a-z0-9-]+$/),
22
+ description: z.string().min(1).max(256),
23
+ tools: z.array(z.string()).max(32),
24
+ parameters: z.record(ParameterSchemaSchema).optional()
25
+ });
26
+ // ============================================================================
27
+ // 网络配置 Schema
28
+ // ============================================================================
29
+ export const P2PNetworkConfigSchema = z.object({
30
+ listenPort: z.number().int().min(0).max(65535).optional(),
31
+ listenAddresses: z.array(z.string()).optional(),
32
+ bootstrapPeers: z.array(z.string()).optional(),
33
+ enableMDNS: z.boolean().optional(),
34
+ enableDHT: z.boolean().optional(),
35
+ dhtServerMode: z.boolean().optional()
36
+ });
37
+ export const SecurityConfigSchema = z.object({
38
+ level: SecurityLevelSchema,
39
+ requireConfirmation: z.boolean(),
40
+ verifySignatures: z.boolean(),
41
+ whitelist: z.set(z.string()).optional(),
42
+ blacklist: z.set(z.string()).optional(),
43
+ rateLimit: z.object({
44
+ maxRequests: z.number().int().positive(),
45
+ windowMs: z.number().int().positive()
46
+ }).optional()
47
+ });
48
+ export const F2AOptionsSchema = z.object({
49
+ displayName: z.string().min(1).max(64).optional(),
50
+ agentType: z.enum(['openclaw', 'claude-code', 'codex', 'custom']).optional(),
51
+ network: P2PNetworkConfigSchema.optional(),
52
+ security: SecurityConfigSchema.optional(),
53
+ logLevel: LogLevelSchema.optional(),
54
+ dataDir: z.string().optional()
55
+ });
56
+ // ============================================================================
57
+ // 任务委托 Schema
58
+ // ============================================================================
59
+ export const TaskDelegateOptionsSchema = z.object({
60
+ capability: z.string().min(1).max(64),
61
+ description: z.string().min(1).max(1024),
62
+ parameters: z.record(z.unknown()).optional(),
63
+ timeout: z.number().int().min(1000).max(300000).optional(), // 1s - 5min
64
+ parallel: z.boolean().optional(),
65
+ minResponses: z.number().int().min(1).max(10).optional()
66
+ });
67
+ // ============================================================================
68
+ // 消息协议 Schema
69
+ // ============================================================================
70
+ export const F2AMessageTypeSchema = z.enum([
71
+ 'DISCOVER',
72
+ 'DISCOVER_RESP',
73
+ 'CAPABILITY_QUERY',
74
+ 'CAPABILITY_RESPONSE',
75
+ 'TASK_REQUEST',
76
+ 'TASK_RESPONSE',
77
+ 'TASK_DELEGATE',
78
+ 'PING',
79
+ 'PONG'
80
+ ]);
81
+ export const F2AMessageSchema = z.object({
82
+ id: z.string().uuid(),
83
+ type: F2AMessageTypeSchema,
84
+ from: z.string().min(1),
85
+ to: z.string().optional(),
86
+ timestamp: z.number().int().positive(),
87
+ ttl: z.number().int().positive().optional(),
88
+ payload: z.unknown()
89
+ });
90
+ export const TaskRequestPayloadSchema = z.object({
91
+ taskId: z.string().uuid(),
92
+ taskType: z.string().min(1).max(64),
93
+ description: z.string().min(1).max(1024),
94
+ parameters: z.record(z.unknown()).optional(),
95
+ timeout: z.number().int().min(1).max(300).optional() // seconds
96
+ });
97
+ export const TaskResponsePayloadSchema = z.object({
98
+ taskId: z.string().uuid(),
99
+ status: z.enum(['success', 'error', 'rejected', 'delegated']),
100
+ result: z.unknown().optional(),
101
+ error: z.string().max(1024).optional(),
102
+ delegatedTo: z.string().optional()
103
+ });
104
+ // ============================================================================
105
+ // Webhook Schema
106
+ // ============================================================================
107
+ export const WebhookConfigSchema = z.object({
108
+ url: z.string().url(),
109
+ token: z.string().min(1),
110
+ timeout: z.number().int().positive().optional(),
111
+ retries: z.number().int().min(0).max(10).optional(),
112
+ retryDelay: z.number().int().positive().optional()
113
+ });
114
+ // ============================================================================
115
+ // 验证函数
116
+ // ============================================================================
117
+ /**
118
+ * 验证 F2A 配置
119
+ */
120
+ export function validateF2AOptions(options) {
121
+ return F2AOptionsSchema.safeParse(options);
122
+ }
123
+ /**
124
+ * 验证任务委托选项
125
+ */
126
+ export function validateTaskDelegateOptions(options) {
127
+ return TaskDelegateOptionsSchema.safeParse(options);
128
+ }
129
+ /**
130
+ * 验证 Agent 能力
131
+ */
132
+ export function validateAgentCapability(capability) {
133
+ return AgentCapabilitySchema.safeParse(capability);
134
+ }
135
+ /**
136
+ * 验证 F2A 消息
137
+ */
138
+ export function validateF2AMessage(message) {
139
+ return F2AMessageSchema.safeParse(message);
140
+ }
141
+ /**
142
+ * 验证任务请求载荷
143
+ */
144
+ export function validateTaskRequestPayload(payload) {
145
+ return TaskRequestPayloadSchema.safeParse(payload);
146
+ }
147
+ /**
148
+ * 验证任务响应载荷
149
+ */
150
+ export function validateTaskResponsePayload(payload) {
151
+ return TaskResponsePayloadSchema.safeParse(payload);
152
+ }
153
+ /**
154
+ * 验证 Webhook 配置
155
+ */
156
+ export function validateWebhookConfig(config) {
157
+ return WebhookConfigSchema.safeParse(config);
158
+ }
159
+ //# sourceMappingURL=validation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validation.js","sourceRoot":"","sources":["../../src/utils/validation.ts"],"names":[],"mappings":"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"}