@agent-pulse/openclaw-skill 1.0.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.
@@ -0,0 +1,325 @@
1
+ {
2
+ "name": "@agent-pulse/openclaw-skill",
3
+ "version": "1.0.0",
4
+ "lockfileVersion": 3,
5
+ "requires": true,
6
+ "packages": {
7
+ "": {
8
+ "name": "@agent-pulse/openclaw-skill",
9
+ "version": "1.0.0",
10
+ "license": "MIT",
11
+ "dependencies": {
12
+ "@agent-pulse/sdk": "^0.2.0",
13
+ "ajv": "^8.12.0",
14
+ "viem": "^2.0.0"
15
+ },
16
+ "devDependencies": {
17
+ "@types/node": "^20.0.0",
18
+ "typescript": "^5.3.0"
19
+ },
20
+ "peerDependencies": {
21
+ "@agent-pulse/sdk": "^0.2.0"
22
+ }
23
+ },
24
+ "node_modules/@adraffy/ens-normalize": {
25
+ "version": "1.11.1",
26
+ "resolved": "https://registry.npmjs.org/@adraffy/ens-normalize/-/ens-normalize-1.11.1.tgz",
27
+ "integrity": "sha512-nhCBV3quEgesuf7c7KYfperqSS14T8bYuvJ8PcLJp6znkZpFc0AuW4qBtr8eKVyPPe/8RSr7sglCWPU5eaxwKQ==",
28
+ "license": "MIT"
29
+ },
30
+ "node_modules/@agent-pulse/sdk": {
31
+ "version": "0.2.1",
32
+ "resolved": "https://registry.npmjs.org/@agent-pulse/sdk/-/sdk-0.2.1.tgz",
33
+ "integrity": "sha512-9Qt2Jsu2GbbdGmYSptPeMdBEdE5xqw2B2BqK8pkSAbGr7JZ1FSo7cBzpzyjy75NknB7sjUpcayTA+V4NfYDzCg==",
34
+ "license": "MIT",
35
+ "dependencies": {
36
+ "viem": "^2.0.0"
37
+ },
38
+ "engines": {
39
+ "node": ">=18.0.0"
40
+ }
41
+ },
42
+ "node_modules/@noble/ciphers": {
43
+ "version": "1.3.0",
44
+ "resolved": "https://registry.npmjs.org/@noble/ciphers/-/ciphers-1.3.0.tgz",
45
+ "integrity": "sha512-2I0gnIVPtfnMw9ee9h1dJG7tp81+8Ob3OJb3Mv37rx5L40/b0i7djjCVvGOVqc9AEIQyvyu1i6ypKdFw8R8gQw==",
46
+ "license": "MIT",
47
+ "engines": {
48
+ "node": "^14.21.3 || >=16"
49
+ },
50
+ "funding": {
51
+ "url": "https://paulmillr.com/funding/"
52
+ }
53
+ },
54
+ "node_modules/@noble/curves": {
55
+ "version": "1.9.1",
56
+ "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.9.1.tgz",
57
+ "integrity": "sha512-k11yZxZg+t+gWvBbIswW0yoJlu8cHOC7dhunwOzoWH/mXGBiYyR4YY6hAEK/3EUs4UpB8la1RfdRpeGsFHkWsA==",
58
+ "license": "MIT",
59
+ "dependencies": {
60
+ "@noble/hashes": "1.8.0"
61
+ },
62
+ "engines": {
63
+ "node": "^14.21.3 || >=16"
64
+ },
65
+ "funding": {
66
+ "url": "https://paulmillr.com/funding/"
67
+ }
68
+ },
69
+ "node_modules/@noble/hashes": {
70
+ "version": "1.8.0",
71
+ "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.8.0.tgz",
72
+ "integrity": "sha512-jCs9ldd7NwzpgXDIf6P3+NrHh9/sD6CQdxHyjQI+h/6rDNo88ypBxxz45UDuZHz9r3tNz7N/VInSVoVdtXEI4A==",
73
+ "license": "MIT",
74
+ "engines": {
75
+ "node": "^14.21.3 || >=16"
76
+ },
77
+ "funding": {
78
+ "url": "https://paulmillr.com/funding/"
79
+ }
80
+ },
81
+ "node_modules/@scure/base": {
82
+ "version": "1.2.6",
83
+ "resolved": "https://registry.npmjs.org/@scure/base/-/base-1.2.6.tgz",
84
+ "integrity": "sha512-g/nm5FgUa//MCj1gV09zTJTaM6KBAHqLN907YVQqf7zC49+DcO4B1so4ZX07Ef10Twr6nuqYEH9GEggFXA4Fmg==",
85
+ "license": "MIT",
86
+ "funding": {
87
+ "url": "https://paulmillr.com/funding/"
88
+ }
89
+ },
90
+ "node_modules/@scure/bip32": {
91
+ "version": "1.7.0",
92
+ "resolved": "https://registry.npmjs.org/@scure/bip32/-/bip32-1.7.0.tgz",
93
+ "integrity": "sha512-E4FFX/N3f4B80AKWp5dP6ow+flD1LQZo/w8UnLGYZO674jS6YnYeepycOOksv+vLPSpgN35wgKgy+ybfTb2SMw==",
94
+ "license": "MIT",
95
+ "dependencies": {
96
+ "@noble/curves": "~1.9.0",
97
+ "@noble/hashes": "~1.8.0",
98
+ "@scure/base": "~1.2.5"
99
+ },
100
+ "funding": {
101
+ "url": "https://paulmillr.com/funding/"
102
+ }
103
+ },
104
+ "node_modules/@scure/bip39": {
105
+ "version": "1.6.0",
106
+ "resolved": "https://registry.npmjs.org/@scure/bip39/-/bip39-1.6.0.tgz",
107
+ "integrity": "sha512-+lF0BbLiJNwVlev4eKelw1WWLaiKXw7sSl8T6FvBlWkdX+94aGJ4o8XjUdlyhTCjd8c+B3KT3JfS8P0bLRNU6A==",
108
+ "license": "MIT",
109
+ "dependencies": {
110
+ "@noble/hashes": "~1.8.0",
111
+ "@scure/base": "~1.2.5"
112
+ },
113
+ "funding": {
114
+ "url": "https://paulmillr.com/funding/"
115
+ }
116
+ },
117
+ "node_modules/@types/node": {
118
+ "version": "20.19.33",
119
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-20.19.33.tgz",
120
+ "integrity": "sha512-Rs1bVAIdBs5gbTIKza/tgpMuG1k3U/UMJLWecIMxNdJFDMzcM5LOiLVRYh3PilWEYDIeUDv7bpiHPLPsbydGcw==",
121
+ "dev": true,
122
+ "license": "MIT",
123
+ "dependencies": {
124
+ "undici-types": "~6.21.0"
125
+ }
126
+ },
127
+ "node_modules/abitype": {
128
+ "version": "1.2.3",
129
+ "resolved": "https://registry.npmjs.org/abitype/-/abitype-1.2.3.tgz",
130
+ "integrity": "sha512-Ofer5QUnuUdTFsBRwARMoWKOH1ND5ehwYhJ3OJ/BQO+StkwQjHw0XyVh4vDttzHB7QOFhPHa/o413PJ82gU/Tg==",
131
+ "license": "MIT",
132
+ "funding": {
133
+ "url": "https://github.com/sponsors/wevm"
134
+ },
135
+ "peerDependencies": {
136
+ "typescript": ">=5.0.4",
137
+ "zod": "^3.22.0 || ^4.0.0"
138
+ },
139
+ "peerDependenciesMeta": {
140
+ "typescript": {
141
+ "optional": true
142
+ },
143
+ "zod": {
144
+ "optional": true
145
+ }
146
+ }
147
+ },
148
+ "node_modules/ajv": {
149
+ "version": "8.17.1",
150
+ "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz",
151
+ "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==",
152
+ "license": "MIT",
153
+ "dependencies": {
154
+ "fast-deep-equal": "^3.1.3",
155
+ "fast-uri": "^3.0.1",
156
+ "json-schema-traverse": "^1.0.0",
157
+ "require-from-string": "^2.0.2"
158
+ },
159
+ "funding": {
160
+ "type": "github",
161
+ "url": "https://github.com/sponsors/epoberezkin"
162
+ }
163
+ },
164
+ "node_modules/eventemitter3": {
165
+ "version": "5.0.1",
166
+ "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-5.0.1.tgz",
167
+ "integrity": "sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==",
168
+ "license": "MIT"
169
+ },
170
+ "node_modules/fast-deep-equal": {
171
+ "version": "3.1.3",
172
+ "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
173
+ "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==",
174
+ "license": "MIT"
175
+ },
176
+ "node_modules/fast-uri": {
177
+ "version": "3.1.0",
178
+ "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.1.0.tgz",
179
+ "integrity": "sha512-iPeeDKJSWf4IEOasVVrknXpaBV0IApz/gp7S2bb7Z4Lljbl2MGJRqInZiUrQwV16cpzw/D3S5j5Julj/gT52AA==",
180
+ "funding": [
181
+ {
182
+ "type": "github",
183
+ "url": "https://github.com/sponsors/fastify"
184
+ },
185
+ {
186
+ "type": "opencollective",
187
+ "url": "https://opencollective.com/fastify"
188
+ }
189
+ ],
190
+ "license": "BSD-3-Clause"
191
+ },
192
+ "node_modules/isows": {
193
+ "version": "1.0.7",
194
+ "resolved": "https://registry.npmjs.org/isows/-/isows-1.0.7.tgz",
195
+ "integrity": "sha512-I1fSfDCZL5P0v33sVqeTDSpcstAg/N+wF5HS033mogOVIp4B+oHC7oOCsA3axAbBSGTJ8QubbNmnIRN/h8U7hg==",
196
+ "funding": [
197
+ {
198
+ "type": "github",
199
+ "url": "https://github.com/sponsors/wevm"
200
+ }
201
+ ],
202
+ "license": "MIT",
203
+ "peerDependencies": {
204
+ "ws": "*"
205
+ }
206
+ },
207
+ "node_modules/json-schema-traverse": {
208
+ "version": "1.0.0",
209
+ "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz",
210
+ "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==",
211
+ "license": "MIT"
212
+ },
213
+ "node_modules/ox": {
214
+ "version": "0.11.3",
215
+ "resolved": "https://registry.npmjs.org/ox/-/ox-0.11.3.tgz",
216
+ "integrity": "sha512-1bWYGk/xZel3xro3l8WGg6eq4YEKlaqvyMtVhfMFpbJzK2F6rj4EDRtqDCWVEJMkzcmEi9uW2QxsqELokOlarw==",
217
+ "funding": [
218
+ {
219
+ "type": "github",
220
+ "url": "https://github.com/sponsors/wevm"
221
+ }
222
+ ],
223
+ "license": "MIT",
224
+ "dependencies": {
225
+ "@adraffy/ens-normalize": "^1.11.0",
226
+ "@noble/ciphers": "^1.3.0",
227
+ "@noble/curves": "1.9.1",
228
+ "@noble/hashes": "^1.8.0",
229
+ "@scure/bip32": "^1.7.0",
230
+ "@scure/bip39": "^1.6.0",
231
+ "abitype": "^1.2.3",
232
+ "eventemitter3": "5.0.1"
233
+ },
234
+ "peerDependencies": {
235
+ "typescript": ">=5.4.0"
236
+ },
237
+ "peerDependenciesMeta": {
238
+ "typescript": {
239
+ "optional": true
240
+ }
241
+ }
242
+ },
243
+ "node_modules/require-from-string": {
244
+ "version": "2.0.2",
245
+ "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz",
246
+ "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==",
247
+ "license": "MIT",
248
+ "engines": {
249
+ "node": ">=0.10.0"
250
+ }
251
+ },
252
+ "node_modules/typescript": {
253
+ "version": "5.9.3",
254
+ "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.9.3.tgz",
255
+ "integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==",
256
+ "devOptional": true,
257
+ "license": "Apache-2.0",
258
+ "bin": {
259
+ "tsc": "bin/tsc",
260
+ "tsserver": "bin/tsserver"
261
+ },
262
+ "engines": {
263
+ "node": ">=14.17"
264
+ }
265
+ },
266
+ "node_modules/undici-types": {
267
+ "version": "6.21.0",
268
+ "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.21.0.tgz",
269
+ "integrity": "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==",
270
+ "dev": true,
271
+ "license": "MIT"
272
+ },
273
+ "node_modules/viem": {
274
+ "version": "2.45.1",
275
+ "resolved": "https://registry.npmjs.org/viem/-/viem-2.45.1.tgz",
276
+ "integrity": "sha512-LN6Pp7vSfv50LgwhkfSbIXftAM5J89lP9x8TeDa8QM7o41IxlHrDh0F9X+FfnCWtsz11pEVV5sn+yBUoOHNqYA==",
277
+ "funding": [
278
+ {
279
+ "type": "github",
280
+ "url": "https://github.com/sponsors/wevm"
281
+ }
282
+ ],
283
+ "license": "MIT",
284
+ "dependencies": {
285
+ "@noble/curves": "1.9.1",
286
+ "@noble/hashes": "1.8.0",
287
+ "@scure/bip32": "1.7.0",
288
+ "@scure/bip39": "1.6.0",
289
+ "abitype": "1.2.3",
290
+ "isows": "1.0.7",
291
+ "ox": "0.11.3",
292
+ "ws": "8.18.3"
293
+ },
294
+ "peerDependencies": {
295
+ "typescript": ">=5.0.4"
296
+ },
297
+ "peerDependenciesMeta": {
298
+ "typescript": {
299
+ "optional": true
300
+ }
301
+ }
302
+ },
303
+ "node_modules/ws": {
304
+ "version": "8.18.3",
305
+ "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.3.tgz",
306
+ "integrity": "sha512-PEIGCY5tSlUt50cqyMXfCzX+oOPqN0vuGqWzbcJ2xvnkzkq46oOpz7dQaTDBdfICb4N14+GARUDw2XV2N4tvzg==",
307
+ "license": "MIT",
308
+ "engines": {
309
+ "node": ">=10.0.0"
310
+ },
311
+ "peerDependencies": {
312
+ "bufferutil": "^4.0.1",
313
+ "utf-8-validate": ">=5.0.2"
314
+ },
315
+ "peerDependenciesMeta": {
316
+ "bufferutil": {
317
+ "optional": true
318
+ },
319
+ "utf-8-validate": {
320
+ "optional": true
321
+ }
322
+ }
323
+ }
324
+ }
325
+ }
@@ -0,0 +1,53 @@
1
+ {
2
+ "name": "@agent-pulse/openclaw-skill",
3
+ "version": "1.0.0",
4
+ "description": "OpenClaw skill integration for AgentPulse SDK gating",
5
+ "type": "module",
6
+ "files": [
7
+ "dist",
8
+ "gate-schema.json",
9
+ "SKILL.md",
10
+ "README.md"
11
+ ],
12
+ "main": "./dist/index.js",
13
+ "types": "./dist/index.d.ts",
14
+ "exports": {
15
+ ".": {
16
+ "import": "./dist/index.js",
17
+ "types": "./dist/index.d.ts"
18
+ },
19
+ "./gate-schema.json": "./gate-schema.json"
20
+ },
21
+ "scripts": {
22
+ "build": "tsc",
23
+ "dev": "tsc --watch",
24
+ "lint": "eslint . --ext .ts",
25
+ "typecheck": "tsc --noEmit"
26
+ },
27
+ "dependencies": {
28
+ "@agent-pulse/sdk": "workspace:*",
29
+ "ajv": "^8.12.0",
30
+ "viem": "^2.0.0"
31
+ },
32
+ "devDependencies": {
33
+ "@types/node": "^20.0.0",
34
+ "typescript": "^5.3.0"
35
+ },
36
+ "peerDependencies": {
37
+ "@agent-pulse/sdk": "^1.0.0"
38
+ },
39
+ "keywords": [
40
+ "agent-pulse",
41
+ "openclaw",
42
+ "skill",
43
+ "gating",
44
+ "liveness",
45
+ "agents"
46
+ ],
47
+ "license": "MIT",
48
+ "repository": {
49
+ "type": "git",
50
+ "url": "https://github.com/consensus-hq/agent-pulse",
51
+ "directory": "agent-pulse/skills/openclaw"
52
+ }
53
+ }
@@ -0,0 +1,31 @@
1
+ {
2
+ "compilerOptions": {
3
+ "target": "ES2022",
4
+ "module": "NodeNext",
5
+ "moduleResolution": "NodeNext",
6
+ "lib": ["ES2022"],
7
+ "outDir": "./dist",
8
+ "rootDir": ".",
9
+ "strict": true,
10
+ "esModuleInterop": true,
11
+ "skipLibCheck": true,
12
+ "forceConsistentCasingInFileNames": true,
13
+ "declaration": true,
14
+ "declarationMap": true,
15
+ "sourceMap": true,
16
+ "resolveJsonModule": true,
17
+ "allowSyntheticDefaultImports": true,
18
+ "noUnusedLocals": true,
19
+ "noUnusedParameters": true,
20
+ "noImplicitReturns": true,
21
+ "noFallthroughCasesInSwitch": true
22
+ },
23
+ "include": [
24
+ "*.ts",
25
+ "*.json"
26
+ ],
27
+ "exclude": [
28
+ "node_modules",
29
+ "dist"
30
+ ]
31
+ }
@@ -0,0 +1,147 @@
1
+ /**
2
+ * OpenClaw Skill - AgentPulse Gate Integration
3
+ * Type definitions for the gate configuration and runtime state.
4
+ */
5
+ import type { Address } from "viem";
6
+ import type { GateMode } from "@agent-pulse/sdk";
7
+ /**
8
+ * Gate configuration from skill YAML
9
+ */
10
+ export interface GateConfig {
11
+ /** Whether gating is enabled */
12
+ enabled: boolean;
13
+ /** Gating mode: strict (reject), warn (log+proceed), log (telemetry only) */
14
+ mode: GateMode;
15
+ /** Duration threshold for liveness check (e.g., "24h", "30m") */
16
+ threshold: string;
17
+ /** Optional chain ID (default: 84532 for Base Sepolia) */
18
+ chainId?: number;
19
+ /** Optional custom RPC URL */
20
+ rpcUrl?: string;
21
+ /** Optional contract address overrides */
22
+ contracts?: {
23
+ pulseToken?: Address;
24
+ pulseRegistry?: Address;
25
+ };
26
+ }
27
+ /**
28
+ * Parsed threshold duration
29
+ */
30
+ export interface ParsedThreshold {
31
+ /** Numeric value */
32
+ value: number;
33
+ /** Unit of time */
34
+ unit: "s" | "m" | "h" | "d" | "w";
35
+ /** Total seconds */
36
+ seconds: number;
37
+ }
38
+ /**
39
+ * Gate runtime status
40
+ */
41
+ export interface GateRuntimeStatus {
42
+ /** Whether gate is currently active */
43
+ active: boolean;
44
+ /** Current mode */
45
+ mode: GateMode;
46
+ /** Threshold duration string */
47
+ threshold: string;
48
+ /** SDK initialization status */
49
+ sdkInitialized: boolean;
50
+ /** Last error message (if any) */
51
+ lastError?: string;
52
+ /** Timestamp of last successful check */
53
+ lastCheck?: number;
54
+ }
55
+ /**
56
+ * Gate check result
57
+ */
58
+ export interface GateCheckResult {
59
+ /** Whether the check passed */
60
+ allowed: boolean;
61
+ /** Agent address checked */
62
+ address: Address;
63
+ /** Direction of check */
64
+ direction: "incoming" | "outgoing";
65
+ /** Whether agent is alive */
66
+ isAlive: boolean;
67
+ /** Timestamp of check */
68
+ timestamp: number;
69
+ /** Error message (if rejected) */
70
+ error?: string;
71
+ }
72
+ /**
73
+ * Gate statistics for status reporting
74
+ */
75
+ export interface GateStats {
76
+ /** Total number of agents checked */
77
+ agentsChecked: number;
78
+ /** Number of agents rejected */
79
+ agentsRejected: number;
80
+ /** Number of incoming checks */
81
+ incomingChecks: number;
82
+ /** Number of outgoing checks */
83
+ outgoingChecks: number;
84
+ /** Number of SDK errors */
85
+ sdkErrors: number;
86
+ /** Last check timestamp */
87
+ lastCheck: number | null;
88
+ }
89
+ /**
90
+ * Gate section in skill status output
91
+ */
92
+ export interface GateStatusOutput {
93
+ /** Whether gating is enabled */
94
+ enabled: boolean;
95
+ /** Current gating mode */
96
+ mode: GateMode;
97
+ /** Threshold duration */
98
+ threshold: string;
99
+ /** Gate status: active, degraded, or disabled */
100
+ status: "active" | "degraded" | "disabled";
101
+ /** Timestamp of last check */
102
+ lastCheck: number | null;
103
+ /** Statistics */
104
+ stats: GateStats;
105
+ /** SDK configuration (sanitized) */
106
+ config: {
107
+ chainId: number;
108
+ hasCustomRpc: boolean;
109
+ hasCustomContracts: boolean;
110
+ };
111
+ }
112
+ /**
113
+ * Context passed to skill actions/evaluators
114
+ */
115
+ export interface SkillContext {
116
+ /** Gate instance for manual checks */
117
+ gate?: OpenClawGate;
118
+ /** Gate status */
119
+ gateStatus: GateRuntimeStatus;
120
+ }
121
+ /**
122
+ * OpenClaw Gate interface exposed to skills
123
+ */
124
+ export interface OpenClawGate {
125
+ /** Check incoming request */
126
+ gateIncoming(requesterAddr: Address): Promise<boolean>;
127
+ /** Check outgoing request */
128
+ gateOutgoing(targetAddr: Address): Promise<boolean>;
129
+ /** Get current status */
130
+ getStatus(): GateRuntimeStatus;
131
+ /** Get statistics */
132
+ getStats(): GateStats;
133
+ }
134
+ /**
135
+ * Skill startup result
136
+ */
137
+ export interface SkillStartupResult {
138
+ /** Whether startup succeeded */
139
+ success: boolean;
140
+ /** Gate instance (if initialized) */
141
+ gate?: OpenClawGate;
142
+ /** Error message (if failed) */
143
+ error?: string;
144
+ /** Status */
145
+ status: GateRuntimeStatus;
146
+ }
147
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../types.ts"],"names":[],"mappings":"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"}
package/dist/types.js ADDED
@@ -0,0 +1,6 @@
1
+ /**
2
+ * OpenClaw Skill - AgentPulse Gate Integration
3
+ * Type definitions for the gate configuration and runtime state.
4
+ */
5
+ export {};
6
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../types.ts"],"names":[],"mappings":"AAAA;;;GAGG"}
@@ -0,0 +1,75 @@
1
+ {
2
+ "$schema": "http://json-schema.org/draft-07/schema#",
3
+ "$id": "https://agent-pulse.io/schemas/openclaw-gate.json",
4
+ "title": "OpenClaw AgentPulse Gate Configuration",
5
+ "description": "Schema for the gate block in OpenClaw skill YAML configurations",
6
+ "type": "object",
7
+ "properties": {
8
+ "enabled": {
9
+ "type": "boolean",
10
+ "description": "Whether gating is enabled for this skill",
11
+ "default": false
12
+ },
13
+ "mode": {
14
+ "type": "string",
15
+ "enum": ["strict", "warn", "log"],
16
+ "description": "Gating mode: strict (reject dead agents), warn (allow with warning), log (passive telemetry only)",
17
+ "default": "strict"
18
+ },
19
+ "threshold": {
20
+ "type": "string",
21
+ "description": "Duration string specifying the maximum time since last pulse (e.g., '24h', '1d', '30m')",
22
+ "pattern": "^[0-9]+[smhdw]$",
23
+ "examples": ["24h", "1d", "30m", "7d"]
24
+ },
25
+ "rpcUrl": {
26
+ "type": "string",
27
+ "format": "uri",
28
+ "description": "Optional RPC URL for AgentPulse SDK connection. Uses default if not specified."
29
+ },
30
+ "chainId": {
31
+ "type": "integer",
32
+ "description": "Chain ID for the AgentPulse protocol (default: 84532 for Base Sepolia)",
33
+ "default": 84532
34
+ },
35
+ "contracts": {
36
+ "type": "object",
37
+ "description": "Optional contract address overrides",
38
+ "properties": {
39
+ "pulseToken": {
40
+ "type": "string",
41
+ "pattern": "^0x[a-fA-F0-9]{40}$",
42
+ "description": "PULSE token contract address"
43
+ },
44
+ "pulseRegistry": {
45
+ "type": "string",
46
+ "pattern": "^0x[a-fA-F0-9]{40}$",
47
+ "description": "PulseRegistry contract address"
48
+ }
49
+ }
50
+ }
51
+ },
52
+ "required": ["enabled"],
53
+ "if": {
54
+ "properties": {
55
+ "enabled": { "const": true }
56
+ }
57
+ },
58
+ "then": {
59
+ "required": ["mode", "threshold"]
60
+ },
61
+ "additionalProperties": false,
62
+ "examples": [
63
+ {
64
+ "enabled": true,
65
+ "mode": "strict",
66
+ "threshold": "24h"
67
+ },
68
+ {
69
+ "enabled": true,
70
+ "mode": "warn",
71
+ "threshold": "12h",
72
+ "chainId": 8453
73
+ }
74
+ ]
75
+ }