@openclaw/crabline 0.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.
Files changed (111) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +226 -0
  3. package/dist/src/bin/crabline.d.ts +2 -0
  4. package/dist/src/bin/crabline.js +7 -0
  5. package/dist/src/bin/crabline.js.map +1 -0
  6. package/dist/src/cli/program.d.ts +5 -0
  7. package/dist/src/cli/program.js +295 -0
  8. package/dist/src/cli/program.js.map +1 -0
  9. package/dist/src/config/load.d.ts +6 -0
  10. package/dist/src/config/load.js +41 -0
  11. package/dist/src/config/load.js.map +1 -0
  12. package/dist/src/config/schema.d.ts +1571 -0
  13. package/dist/src/config/schema.js +528 -0
  14. package/dist/src/config/schema.js.map +1 -0
  15. package/dist/src/core/errors.d.ts +12 -0
  16. package/dist/src/core/errors.js +28 -0
  17. package/dist/src/core/errors.js.map +1 -0
  18. package/dist/src/core/exit-codes.d.ts +13 -0
  19. package/dist/src/core/exit-codes.js +13 -0
  20. package/dist/src/core/exit-codes.js.map +1 -0
  21. package/dist/src/core/matcher.d.ts +2 -0
  22. package/dist/src/core/matcher.js +30 -0
  23. package/dist/src/core/matcher.js.map +1 -0
  24. package/dist/src/core/message-template.d.ts +2 -0
  25. package/dist/src/core/message-template.js +20 -0
  26. package/dist/src/core/message-template.js.map +1 -0
  27. package/dist/src/core/nonces.d.ts +2 -0
  28. package/dist/src/core/nonces.js +11 -0
  29. package/dist/src/core/nonces.js.map +1 -0
  30. package/dist/src/core/reporters.d.ts +3 -0
  31. package/dist/src/core/reporters.js +23 -0
  32. package/dist/src/core/reporters.js.map +1 -0
  33. package/dist/src/core/run.d.ts +30 -0
  34. package/dist/src/core/run.js +240 -0
  35. package/dist/src/core/run.js.map +1 -0
  36. package/dist/src/fake-servers/index.d.ts +10 -0
  37. package/dist/src/fake-servers/index.js +12 -0
  38. package/dist/src/fake-servers/index.js.map +1 -0
  39. package/dist/src/fake-servers/telegram.d.ts +29 -0
  40. package/dist/src/fake-servers/telegram.js +346 -0
  41. package/dist/src/fake-servers/telegram.js.map +1 -0
  42. package/dist/src/index.d.ts +15 -0
  43. package/dist/src/index.js +9 -0
  44. package/dist/src/index.js.map +1 -0
  45. package/dist/src/openclaw.d.ts +102 -0
  46. package/dist/src/openclaw.js +289 -0
  47. package/dist/src/openclaw.js.map +1 -0
  48. package/dist/src/providers/builtin/discord.d.ts +15 -0
  49. package/dist/src/providers/builtin/discord.js +92 -0
  50. package/dist/src/providers/builtin/discord.js.map +1 -0
  51. package/dist/src/providers/builtin/feishu.d.ts +10 -0
  52. package/dist/src/providers/builtin/feishu.js +95 -0
  53. package/dist/src/providers/builtin/feishu.js.map +1 -0
  54. package/dist/src/providers/builtin/googlechat.d.ts +11 -0
  55. package/dist/src/providers/builtin/googlechat.js +83 -0
  56. package/dist/src/providers/builtin/googlechat.js.map +1 -0
  57. package/dist/src/providers/builtin/imessage.d.ts +11 -0
  58. package/dist/src/providers/builtin/imessage.js +67 -0
  59. package/dist/src/providers/builtin/imessage.js.map +1 -0
  60. package/dist/src/providers/builtin/loopback.d.ts +63 -0
  61. package/dist/src/providers/builtin/loopback.js +174 -0
  62. package/dist/src/providers/builtin/loopback.js.map +1 -0
  63. package/dist/src/providers/builtin/matrix.d.ts +21 -0
  64. package/dist/src/providers/builtin/matrix.js +84 -0
  65. package/dist/src/providers/builtin/matrix.js.map +1 -0
  66. package/dist/src/providers/builtin/mattermost.d.ts +11 -0
  67. package/dist/src/providers/builtin/mattermost.js +67 -0
  68. package/dist/src/providers/builtin/mattermost.js.map +1 -0
  69. package/dist/src/providers/builtin/msteams.d.ts +13 -0
  70. package/dist/src/providers/builtin/msteams.js +72 -0
  71. package/dist/src/providers/builtin/msteams.js.map +1 -0
  72. package/dist/src/providers/builtin/native-local-mock.d.ts +48 -0
  73. package/dist/src/providers/builtin/native-local-mock.js +119 -0
  74. package/dist/src/providers/builtin/native-local-mock.js.map +1 -0
  75. package/dist/src/providers/builtin/script.d.ts +39 -0
  76. package/dist/src/providers/builtin/script.js +206 -0
  77. package/dist/src/providers/builtin/script.js.map +1 -0
  78. package/dist/src/providers/builtin/slack.d.ts +6 -0
  79. package/dist/src/providers/builtin/slack.js +106 -0
  80. package/dist/src/providers/builtin/slack.js.map +1 -0
  81. package/dist/src/providers/builtin/telegram.d.ts +21 -0
  82. package/dist/src/providers/builtin/telegram.js +123 -0
  83. package/dist/src/providers/builtin/telegram.js.map +1 -0
  84. package/dist/src/providers/builtin/whatsapp.d.ts +19 -0
  85. package/dist/src/providers/builtin/whatsapp.js +90 -0
  86. package/dist/src/providers/builtin/whatsapp.js.map +1 -0
  87. package/dist/src/providers/builtin/zalo.d.ts +17 -0
  88. package/dist/src/providers/builtin/zalo.js +70 -0
  89. package/dist/src/providers/builtin/zalo.js.map +1 -0
  90. package/dist/src/providers/catalog.d.ts +69 -0
  91. package/dist/src/providers/catalog.js +95 -0
  92. package/dist/src/providers/catalog.js.map +1 -0
  93. package/dist/src/providers/local-mock.d.ts +41 -0
  94. package/dist/src/providers/local-mock.js +243 -0
  95. package/dist/src/providers/local-mock.js.map +1 -0
  96. package/dist/src/providers/recorder.d.ts +19 -0
  97. package/dist/src/providers/recorder.js +160 -0
  98. package/dist/src/providers/recorder.js.map +1 -0
  99. package/dist/src/providers/registry.d.ts +8 -0
  100. package/dist/src/providers/registry.js +171 -0
  101. package/dist/src/providers/registry.js.map +1 -0
  102. package/dist/src/providers/types.d.ts +94 -0
  103. package/dist/src/providers/types.js +2 -0
  104. package/dist/src/providers/types.js.map +1 -0
  105. package/dist/src/providers/webhook-server.d.ts +12 -0
  106. package/dist/src/providers/webhook-server.js +118 -0
  107. package/dist/src/providers/webhook-server.js.map +1 -0
  108. package/docs/channel-setup.md +181 -0
  109. package/fixtures/examples/crabline.example.yaml +195 -0
  110. package/fixtures/examples/openclaw-bridge.yaml +125 -0
  111. package/package.json +64 -0
@@ -0,0 +1,528 @@
1
+ import { z } from "zod";
2
+ export const FIXTURE_MODES = ["probe", "send", "roundtrip", "agent"];
3
+ const FIXTURE_ID_PATTERN = /^[a-z0-9-]+$/i;
4
+ export const INBOUND_AUTHORS = ["assistant", "user", "system", "any"];
5
+ export const INBOUND_STRATEGIES = ["contains", "exact", "regex"];
6
+ export const INBOUND_NONCE_MODES = ["contains", "exact", "ignore"];
7
+ export const BUILTIN_ADAPTERS = [
8
+ "discord",
9
+ "feishu",
10
+ "googlechat",
11
+ "imessage",
12
+ "loopback",
13
+ "matrix",
14
+ "mattermost",
15
+ "msteams",
16
+ "script",
17
+ "slack",
18
+ "telegram",
19
+ "whatsapp",
20
+ "zalo",
21
+ ];
22
+ export const PROVIDER_PLATFORMS = [
23
+ "bluebubbles",
24
+ "discord",
25
+ "feishu",
26
+ "googlechat",
27
+ "imessage",
28
+ "irc",
29
+ "line",
30
+ "loopback",
31
+ "matrix",
32
+ "mattermost",
33
+ "msteams",
34
+ "nextcloudtalk",
35
+ "nostr",
36
+ "signal",
37
+ "slack",
38
+ "synologychat",
39
+ "telegram",
40
+ "tlon",
41
+ "twitch",
42
+ "webchat",
43
+ "whatsapp",
44
+ "zalo",
45
+ "zalouser",
46
+ ];
47
+ function inferProviderPlatform(adapter) {
48
+ if (adapter === "script") {
49
+ return undefined;
50
+ }
51
+ return adapter;
52
+ }
53
+ const TargetSchema = z.object({
54
+ id: z.string().min(1),
55
+ channelId: z.string().min(1).optional(),
56
+ threadId: z.string().min(1).optional(),
57
+ behavior: z.enum(["agent", "echo", "sink"]).optional(),
58
+ metadata: z.record(z.string(), z.string()).default({}),
59
+ });
60
+ const InboundMatchSchema = z.object({
61
+ author: z.enum(INBOUND_AUTHORS).default("assistant"),
62
+ nonce: z.enum(INBOUND_NONCE_MODES).default("contains"),
63
+ pattern: z.string().min(1).optional(),
64
+ strategy: z.enum(INBOUND_STRATEGIES).default("contains"),
65
+ });
66
+ const ScriptCommandsSchema = z.object({
67
+ probe: z.string().min(1).optional(),
68
+ send: z.string().min(1).optional(),
69
+ waitForInbound: z.string().min(1).optional(),
70
+ watch: z.string().min(1).optional(),
71
+ });
72
+ const LoopbackConfigSchema = z.object({
73
+ delayMs: z.number().int().min(0).default(25),
74
+ });
75
+ const ScriptConfigSchema = z.object({
76
+ commands: ScriptCommandsSchema,
77
+ cwd: z.string().min(1).optional(),
78
+ shell: z.string().min(1).optional(),
79
+ });
80
+ const SlackRecorderSchema = z.object({
81
+ path: z.string().min(1).optional(),
82
+ });
83
+ const SlackWebhookSchema = z.object({
84
+ host: z.string().min(1).default("127.0.0.1"),
85
+ path: z.string().min(1).default("/slack/events"),
86
+ port: z.number().int().min(0).max(65_535).default(8787),
87
+ publicUrl: z.string().url().optional(),
88
+ });
89
+ const SlackConfigSchema = z.object({
90
+ recorder: SlackRecorderSchema.default({}),
91
+ webhook: SlackWebhookSchema.default({
92
+ host: "127.0.0.1",
93
+ path: "/slack/events",
94
+ port: 8787,
95
+ }),
96
+ });
97
+ const DiscordRecorderSchema = z.object({
98
+ path: z.string().min(1).optional(),
99
+ });
100
+ const DiscordWebhookSchema = z.object({
101
+ host: z.string().min(1).default("127.0.0.1"),
102
+ path: z.string().min(1).default("/discord/interactions"),
103
+ port: z.number().int().min(0).max(65_535).default(8788),
104
+ publicUrl: z.string().url().optional(),
105
+ });
106
+ const DiscordConfigSchema = z.object({
107
+ applicationId: z.string().min(1).optional(),
108
+ botToken: z.string().min(1).optional(),
109
+ gatewayDurationMs: z.number().int().min(1000).default(180_000),
110
+ mentionRoleIds: z.array(z.string().min(1)).optional(),
111
+ publicKey: z.string().min(1).optional(),
112
+ recorder: DiscordRecorderSchema.default({}),
113
+ webhook: DiscordWebhookSchema.default({
114
+ host: "127.0.0.1",
115
+ path: "/discord/interactions",
116
+ port: 8788,
117
+ }),
118
+ });
119
+ const WhatsAppRecorderSchema = z.object({
120
+ path: z.string().min(1).optional(),
121
+ });
122
+ const WhatsAppWebhookSchema = z.object({
123
+ host: z.string().min(1).default("127.0.0.1"),
124
+ path: z.string().min(1).default("/whatsapp/webhook"),
125
+ port: z.number().int().min(0).max(65_535).default(8789),
126
+ publicUrl: z.string().url().optional(),
127
+ });
128
+ const WhatsAppConfigSchema = z.object({
129
+ accessToken: z.string().min(1).optional(),
130
+ apiUrl: z.string().url().optional(),
131
+ apiVersion: z.string().min(1).optional(),
132
+ appSecret: z.string().min(1).optional(),
133
+ phoneNumberId: z.string().min(1).optional(),
134
+ recorder: WhatsAppRecorderSchema.default({}),
135
+ userName: z.string().min(1).optional(),
136
+ verifyToken: z.string().min(1).optional(),
137
+ webhook: WhatsAppWebhookSchema.default({
138
+ host: "127.0.0.1",
139
+ path: "/whatsapp/webhook",
140
+ port: 8789,
141
+ }),
142
+ });
143
+ const MsTeamsFederatedSchema = z.object({
144
+ clientAudience: z.string().min(1).optional(),
145
+ clientId: z.string().min(1),
146
+ });
147
+ const MsTeamsRecorderSchema = z.object({
148
+ path: z.string().min(1).optional(),
149
+ });
150
+ const MsTeamsWebhookSchema = z.object({
151
+ host: z.string().min(1).default("127.0.0.1"),
152
+ path: z.string().min(1).default("/msteams/webhook"),
153
+ port: z.number().int().min(0).max(65_535).default(8791),
154
+ publicUrl: z.string().url().optional(),
155
+ });
156
+ const MsTeamsConfigSchema = z.object({
157
+ apiUrl: z.string().url().optional(),
158
+ appId: z.string().min(1).optional(),
159
+ appPassword: z.string().min(1).optional(),
160
+ appTenantId: z.string().min(1).optional(),
161
+ appType: z.enum(["MultiTenant", "SingleTenant"]).optional(),
162
+ dialogOpenTimeoutMs: z.number().int().min(0).optional(),
163
+ federated: MsTeamsFederatedSchema.optional(),
164
+ recorder: MsTeamsRecorderSchema.default({}),
165
+ userName: z.string().min(1).optional(),
166
+ webhook: MsTeamsWebhookSchema.default({
167
+ host: "127.0.0.1",
168
+ path: "/msteams/webhook",
169
+ port: 8791,
170
+ }),
171
+ });
172
+ const GoogleChatCredentialsSchema = z
173
+ .object({
174
+ client_email: z.string().min(1),
175
+ private_key: z.string().min(1),
176
+ project_id: z.string().min(1).optional(),
177
+ })
178
+ .passthrough();
179
+ const GoogleChatRecorderSchema = z.object({
180
+ path: z.string().min(1).optional(),
181
+ });
182
+ const GoogleChatWebhookSchema = z.object({
183
+ host: z.string().min(1).default("127.0.0.1"),
184
+ path: z.string().min(1).default("/googlechat/webhook"),
185
+ port: z.number().int().min(0).max(65_535).default(8792),
186
+ publicUrl: z.string().url().optional(),
187
+ });
188
+ const GoogleChatConfigSchema = z.object({
189
+ apiUrl: z.string().url().optional(),
190
+ credentials: GoogleChatCredentialsSchema.optional(),
191
+ disableSignatureVerification: z.boolean().optional(),
192
+ endpointUrl: z.string().url().optional(),
193
+ googleChatProjectNumber: z.string().min(1).optional(),
194
+ impersonateUser: z.string().min(1).optional(),
195
+ pubsubAudience: z.string().min(1).optional(),
196
+ pubsubTopic: z.string().min(1).optional(),
197
+ recorder: GoogleChatRecorderSchema.default({}),
198
+ useApplicationDefaultCredentials: z.boolean().optional(),
199
+ userName: z.string().min(1).optional(),
200
+ webhook: GoogleChatWebhookSchema.default({
201
+ host: "127.0.0.1",
202
+ path: "/googlechat/webhook",
203
+ port: 8792,
204
+ }),
205
+ });
206
+ const TelegramLongPollingSchema = z.object({
207
+ allowedUpdates: z.array(z.string().min(1)).optional(),
208
+ deleteWebhook: z.boolean().optional(),
209
+ dropPendingUpdates: z.boolean().optional(),
210
+ limit: z.number().int().min(1).max(100).optional(),
211
+ retryDelayMs: z.number().int().min(0).optional(),
212
+ timeout: z.number().int().min(0).optional(),
213
+ });
214
+ const TelegramRecorderSchema = z.object({
215
+ path: z.string().min(1).optional(),
216
+ });
217
+ const TelegramWebhookSchema = z.object({
218
+ host: z.string().min(1).default("127.0.0.1"),
219
+ path: z.string().min(1).default("/telegram/webhook"),
220
+ port: z.number().int().min(0).max(65_535).default(8790),
221
+ publicUrl: z.string().url().optional(),
222
+ });
223
+ const TelegramConfigSchema = z.object({
224
+ apiUrl: z.string().url().optional(),
225
+ botToken: z.string().min(1).optional(),
226
+ longPolling: TelegramLongPollingSchema.optional(),
227
+ mode: z.enum(["auto", "polling", "webhook"]).default("auto"),
228
+ recorder: TelegramRecorderSchema.default({}),
229
+ secretToken: z.string().min(1).optional(),
230
+ userName: z.string().min(1).optional(),
231
+ webhook: TelegramWebhookSchema.default({
232
+ host: "127.0.0.1",
233
+ path: "/telegram/webhook",
234
+ port: 8790,
235
+ }),
236
+ });
237
+ const FeishuConfigSchema = z.object({
238
+ appId: z.string().min(1).optional(),
239
+ appSecret: z.string().min(1).optional(),
240
+ recorder: z.object({ path: z.string().min(1).optional() }).default({}),
241
+ userName: z.string().min(1).optional(),
242
+ webhook: z
243
+ .object({
244
+ host: z.string().min(1).default("127.0.0.1"),
245
+ path: z.string().min(1).default("/feishu/webhook"),
246
+ port: z.number().int().min(0).max(65_535).default(8795),
247
+ publicUrl: z.string().url().optional(),
248
+ })
249
+ .default({
250
+ host: "127.0.0.1",
251
+ path: "/feishu/webhook",
252
+ port: 8795,
253
+ }),
254
+ });
255
+ const MattermostRecorderSchema = z.object({
256
+ path: z.string().min(1).optional(),
257
+ });
258
+ const MattermostWebhookSchema = z.object({
259
+ host: z.string().min(1).default("127.0.0.1"),
260
+ path: z.string().min(1).default("/mattermost/webhook"),
261
+ port: z.number().int().min(0).max(65_535).default(8793),
262
+ publicUrl: z.string().url().optional(),
263
+ });
264
+ const MattermostWebsocketSchema = z.object({
265
+ enabled: z.boolean().optional(),
266
+ maxReconnectDelayMs: z.number().int().min(0).optional(),
267
+ reconnectDelayMs: z.number().int().min(0).optional(),
268
+ });
269
+ const MattermostConfigSchema = z.object({
270
+ baseUrl: z.string().url().optional(),
271
+ botToken: z.string().min(1).optional(),
272
+ callbackUrl: z.string().url().optional(),
273
+ recorder: MattermostRecorderSchema.default({}),
274
+ userName: z.string().min(1).optional(),
275
+ webhook: MattermostWebhookSchema.default({
276
+ host: "127.0.0.1",
277
+ path: "/mattermost/webhook",
278
+ port: 8793,
279
+ }),
280
+ websocket: MattermostWebsocketSchema.optional(),
281
+ });
282
+ const ZaloRecorderSchema = z.object({
283
+ path: z.string().min(1).optional(),
284
+ });
285
+ const ZaloWebhookSchema = z.object({
286
+ host: z.string().min(1).default("127.0.0.1"),
287
+ path: z.string().min(1).default("/zalo/webhook"),
288
+ port: z.number().int().min(0).max(65_535).default(8794),
289
+ publicUrl: z.string().url().optional(),
290
+ });
291
+ const ZaloConfigSchema = z.object({
292
+ botToken: z.string().min(1).optional(),
293
+ recorder: ZaloRecorderSchema.default({}),
294
+ userName: z.string().min(1).optional(),
295
+ webhook: ZaloWebhookSchema.default({
296
+ host: "127.0.0.1",
297
+ path: "/zalo/webhook",
298
+ port: 8794,
299
+ }),
300
+ webhookSecret: z.string().min(1).optional(),
301
+ });
302
+ const MatrixAccessTokenAuthSchema = z.object({
303
+ accessToken: z.string().min(1),
304
+ type: z.literal("accessToken"),
305
+ userID: z.string().min(1).optional(),
306
+ });
307
+ const MatrixPasswordAuthSchema = z.object({
308
+ password: z.string().min(1),
309
+ type: z.literal("password"),
310
+ userID: z.string().min(1).optional(),
311
+ username: z.string().min(1),
312
+ });
313
+ const MatrixConfigSchema = z.object({
314
+ auth: z.union([MatrixAccessTokenAuthSchema, MatrixPasswordAuthSchema]).optional(),
315
+ baseURL: z.string().url().optional(),
316
+ commandPrefix: z.string().min(1).optional(),
317
+ recorder: z.object({ path: z.string().min(1).optional() }).default({}),
318
+ recoveryKey: z.string().min(1).optional(),
319
+ roomAllowlist: z.array(z.string().min(1)).optional(),
320
+ webhook: z
321
+ .object({
322
+ host: z.string().min(1).default("127.0.0.1"),
323
+ path: z.string().min(1).default("/matrix/webhook"),
324
+ port: z.number().int().min(0).max(65_535).default(8797),
325
+ publicUrl: z.string().url().optional(),
326
+ })
327
+ .default({
328
+ host: "127.0.0.1",
329
+ path: "/matrix/webhook",
330
+ port: 8797,
331
+ }),
332
+ });
333
+ const IMessageConfigSchema = z.object({
334
+ apiKey: z.string().min(1).optional(),
335
+ gatewayDurationMs: z.number().int().min(1000).default(180_000),
336
+ local: z.boolean().optional(),
337
+ recorder: z.object({ path: z.string().min(1).optional() }).default({}),
338
+ serverUrl: z.string().url().optional(),
339
+ webhook: z
340
+ .object({
341
+ host: z.string().min(1).default("127.0.0.1"),
342
+ path: z.string().min(1).default("/imessage/webhook"),
343
+ port: z.number().int().min(0).max(65_535).default(8796),
344
+ publicUrl: z.string().url().optional(),
345
+ })
346
+ .default({
347
+ host: "127.0.0.1",
348
+ path: "/imessage/webhook",
349
+ port: 8796,
350
+ }),
351
+ });
352
+ export const ProviderConfigSchema = z
353
+ .object({
354
+ adapter: z.enum(BUILTIN_ADAPTERS),
355
+ capabilities: z.array(z.enum(FIXTURE_MODES)).default(["probe", "send", "roundtrip", "agent"]),
356
+ discord: DiscordConfigSchema.optional(),
357
+ env: z.array(z.string().min(1)).default([]),
358
+ feishu: FeishuConfigSchema.optional(),
359
+ googlechat: GoogleChatConfigSchema.optional(),
360
+ imessage: IMessageConfigSchema.optional(),
361
+ loopback: LoopbackConfigSchema.optional(),
362
+ matrix: MatrixConfigSchema.optional(),
363
+ mattermost: MattermostConfigSchema.optional(),
364
+ msteams: MsTeamsConfigSchema.optional(),
365
+ notes: z.string().optional(),
366
+ platform: z.enum(PROVIDER_PLATFORMS).optional(),
367
+ slack: SlackConfigSchema.optional(),
368
+ script: ScriptConfigSchema.optional(),
369
+ status: z.enum(["active", "disabled", "planned"]).default("active"),
370
+ telegram: TelegramConfigSchema.optional(),
371
+ whatsapp: WhatsAppConfigSchema.optional(),
372
+ zalo: ZaloConfigSchema.optional(),
373
+ })
374
+ .superRefine((value, ctx) => {
375
+ const platform = value.platform ?? inferProviderPlatform(value.adapter);
376
+ if (value.adapter === "script" && !value.script) {
377
+ ctx.addIssue({
378
+ code: z.ZodIssueCode.custom,
379
+ message: "script adapter requires a script configuration",
380
+ path: ["script"],
381
+ });
382
+ }
383
+ if (value.adapter === "script" && !value.platform) {
384
+ ctx.addIssue({
385
+ code: z.ZodIssueCode.custom,
386
+ message: "script adapter requires platform",
387
+ path: ["platform"],
388
+ });
389
+ }
390
+ if (value.adapter === "script" && value.status === "active" && value.script) {
391
+ const requiredCommands = new Set();
392
+ for (const capability of value.capabilities) {
393
+ if (capability === "probe") {
394
+ requiredCommands.add("probe");
395
+ }
396
+ if (capability === "send" || capability === "roundtrip" || capability === "agent") {
397
+ requiredCommands.add("send");
398
+ }
399
+ if (capability === "roundtrip" || capability === "agent") {
400
+ requiredCommands.add("waitForInbound");
401
+ }
402
+ }
403
+ for (const command of requiredCommands) {
404
+ if (!value.script.commands[command]) {
405
+ ctx.addIssue({
406
+ code: z.ZodIssueCode.custom,
407
+ message: `active script provider requires script.commands.${command} for its declared capabilities`,
408
+ path: ["script", "commands", command],
409
+ });
410
+ }
411
+ }
412
+ }
413
+ if (value.adapter === "loopback" && platform !== "loopback") {
414
+ ctx.addIssue({
415
+ code: z.ZodIssueCode.custom,
416
+ message: "loopback adapter must use platform=loopback",
417
+ path: ["platform"],
418
+ });
419
+ }
420
+ if (value.adapter === "slack" && platform !== "slack") {
421
+ ctx.addIssue({
422
+ code: z.ZodIssueCode.custom,
423
+ message: "slack adapter must use platform=slack",
424
+ path: ["platform"],
425
+ });
426
+ }
427
+ if (value.adapter === "discord" && platform !== "discord") {
428
+ ctx.addIssue({
429
+ code: z.ZodIssueCode.custom,
430
+ message: "discord adapter must use platform=discord",
431
+ path: ["platform"],
432
+ });
433
+ }
434
+ if (value.adapter === "feishu" && platform !== "feishu") {
435
+ ctx.addIssue({
436
+ code: z.ZodIssueCode.custom,
437
+ message: "feishu adapter must use platform=feishu",
438
+ path: ["platform"],
439
+ });
440
+ }
441
+ if (value.adapter === "googlechat" && platform !== "googlechat") {
442
+ ctx.addIssue({
443
+ code: z.ZodIssueCode.custom,
444
+ message: "googlechat adapter must use platform=googlechat",
445
+ path: ["platform"],
446
+ });
447
+ }
448
+ if (value.adapter === "mattermost" && platform !== "mattermost") {
449
+ ctx.addIssue({
450
+ code: z.ZodIssueCode.custom,
451
+ message: "mattermost adapter must use platform=mattermost",
452
+ path: ["platform"],
453
+ });
454
+ }
455
+ if (value.adapter === "msteams" && platform !== "msteams") {
456
+ ctx.addIssue({
457
+ code: z.ZodIssueCode.custom,
458
+ message: "msteams adapter must use platform=msteams",
459
+ path: ["platform"],
460
+ });
461
+ }
462
+ if (value.adapter === "whatsapp" && platform !== "whatsapp") {
463
+ ctx.addIssue({
464
+ code: z.ZodIssueCode.custom,
465
+ message: "whatsapp adapter must use platform=whatsapp",
466
+ path: ["platform"],
467
+ });
468
+ }
469
+ if (value.adapter === "telegram" && platform !== "telegram") {
470
+ ctx.addIssue({
471
+ code: z.ZodIssueCode.custom,
472
+ message: "telegram adapter must use platform=telegram",
473
+ path: ["platform"],
474
+ });
475
+ }
476
+ if (value.adapter === "matrix" && platform !== "matrix") {
477
+ ctx.addIssue({
478
+ code: z.ZodIssueCode.custom,
479
+ message: "matrix adapter must use platform=matrix",
480
+ path: ["platform"],
481
+ });
482
+ }
483
+ if (value.adapter === "imessage" && platform !== "imessage") {
484
+ ctx.addIssue({
485
+ code: z.ZodIssueCode.custom,
486
+ message: "imessage adapter must use platform=imessage",
487
+ path: ["platform"],
488
+ });
489
+ }
490
+ if (value.adapter === "zalo" && platform !== "zalo") {
491
+ ctx.addIssue({
492
+ code: z.ZodIssueCode.custom,
493
+ message: "zalo adapter must use platform=zalo",
494
+ path: ["platform"],
495
+ });
496
+ }
497
+ })
498
+ .transform((value) => ({
499
+ ...value,
500
+ platform: value.platform ?? inferProviderPlatform(value.adapter) ?? "loopback",
501
+ }));
502
+ export const FixtureSchema = z.object({
503
+ accountId: z.string().min(1).optional(),
504
+ env: z.array(z.string().min(1)).default([]),
505
+ id: z
506
+ .string()
507
+ .min(1)
508
+ .regex(FIXTURE_ID_PATTERN, "fixture id must contain only letters, numbers, and hyphens"),
509
+ inboundMatch: InboundMatchSchema.default({
510
+ author: "assistant",
511
+ nonce: "contains",
512
+ strategy: "contains",
513
+ }),
514
+ mode: z.enum(FIXTURE_MODES),
515
+ notes: z.string().optional(),
516
+ provider: z.string().min(1),
517
+ retries: z.number().int().min(0).default(0),
518
+ tags: z.array(z.string().min(1)).default([]),
519
+ target: TargetSchema,
520
+ timeoutMs: z.number().int().min(100).default(30_000),
521
+ });
522
+ export const ManifestSchema = z.object({
523
+ configVersion: z.literal(1).default(1),
524
+ fixtures: z.array(FixtureSchema).default([]),
525
+ providers: z.record(z.string(), ProviderConfigSchema).default({}),
526
+ userName: z.string().min(1).default("crabline"),
527
+ });
528
+ //# sourceMappingURL=schema.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema.js","sourceRoot":"","sources":["../../../src/config/schema.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ import { type ExitCode } from "./exit-codes.js";
2
+ export type FailureKind = "config" | "auth" | "connectivity" | "outbound" | "inbound" | "timeout" | "assertion";
3
+ export declare class CrablineError extends Error {
4
+ readonly exitCode: ExitCode;
5
+ readonly kind: FailureKind | undefined;
6
+ constructor(message: string, options?: {
7
+ cause?: unknown;
8
+ exitCode?: ExitCode;
9
+ kind?: FailureKind;
10
+ });
11
+ }
12
+ export declare function ensureErrorMessage(error: unknown): string;
@@ -0,0 +1,28 @@
1
+ import { EXIT_CODES } from "./exit-codes.js";
2
+ const KIND_TO_EXIT = {
3
+ config: EXIT_CODES.CONFIG,
4
+ auth: EXIT_CODES.AUTH,
5
+ connectivity: EXIT_CODES.CONNECTIVITY,
6
+ outbound: EXIT_CODES.OUTBOUND,
7
+ inbound: EXIT_CODES.INBOUND,
8
+ timeout: EXIT_CODES.TIMEOUT,
9
+ assertion: EXIT_CODES.ASSERTION,
10
+ };
11
+ export class CrablineError extends Error {
12
+ exitCode;
13
+ kind;
14
+ constructor(message, options) {
15
+ super(message, options);
16
+ this.name = "CrablineError";
17
+ this.kind = options?.kind;
18
+ this.exitCode =
19
+ options?.exitCode ?? (options?.kind ? KIND_TO_EXIT[options.kind] : EXIT_CODES.FAILURE);
20
+ }
21
+ }
22
+ export function ensureErrorMessage(error) {
23
+ if (error instanceof Error) {
24
+ return error.message;
25
+ }
26
+ return String(error);
27
+ }
28
+ //# sourceMappingURL=errors.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.js","sourceRoot":"","sources":["../../../src/core/errors.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAiB,MAAM,iBAAiB,CAAC;AAW5D,MAAM,YAAY,GAAkC;IAClD,MAAM,EAAE,UAAU,CAAC,MAAM;IACzB,IAAI,EAAE,UAAU,CAAC,IAAI;IACrB,YAAY,EAAE,UAAU,CAAC,YAAY;IACrC,QAAQ,EAAE,UAAU,CAAC,QAAQ;IAC7B,OAAO,EAAE,UAAU,CAAC,OAAO;IAC3B,OAAO,EAAE,UAAU,CAAC,OAAO;IAC3B,SAAS,EAAE,UAAU,CAAC,SAAS;CAChC,CAAC;AAEF,MAAM,OAAO,aAAc,SAAQ,KAAK;IAC7B,QAAQ,CAAW;IACnB,IAAI,CAA0B;IAEvC,YACE,OAAe,EACf,OAAsE;QAEtE,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QACxB,IAAI,CAAC,IAAI,GAAG,eAAe,CAAC;QAC5B,IAAI,CAAC,IAAI,GAAG,OAAO,EAAE,IAAI,CAAC;QAC1B,IAAI,CAAC,QAAQ;YACX,OAAO,EAAE,QAAQ,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;IAC3F,CAAC;CACF;AAED,MAAM,UAAU,kBAAkB,CAAC,KAAc;IAC/C,IAAI,KAAK,YAAY,KAAK,EAAE,CAAC;QAC3B,OAAO,KAAK,CAAC,OAAO,CAAC;IACvB,CAAC;IAED,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;AACvB,CAAC"}
@@ -0,0 +1,13 @@
1
+ export declare const EXIT_CODES: {
2
+ readonly SUCCESS: 0;
3
+ readonly FAILURE: 1;
4
+ readonly USAGE: 2;
5
+ readonly CONFIG: 10;
6
+ readonly AUTH: 11;
7
+ readonly CONNECTIVITY: 12;
8
+ readonly OUTBOUND: 13;
9
+ readonly INBOUND: 14;
10
+ readonly TIMEOUT: 15;
11
+ readonly ASSERTION: 16;
12
+ };
13
+ export type ExitCode = (typeof EXIT_CODES)[keyof typeof EXIT_CODES];
@@ -0,0 +1,13 @@
1
+ export const EXIT_CODES = {
2
+ SUCCESS: 0,
3
+ FAILURE: 1,
4
+ USAGE: 2,
5
+ CONFIG: 10,
6
+ AUTH: 11,
7
+ CONNECTIVITY: 12,
8
+ OUTBOUND: 13,
9
+ INBOUND: 14,
10
+ TIMEOUT: 15,
11
+ ASSERTION: 16,
12
+ };
13
+ //# sourceMappingURL=exit-codes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"exit-codes.js","sourceRoot":"","sources":["../../../src/core/exit-codes.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,UAAU,GAAG;IACxB,OAAO,EAAE,CAAC;IACV,OAAO,EAAE,CAAC;IACV,KAAK,EAAE,CAAC;IACR,MAAM,EAAE,EAAE;IACV,IAAI,EAAE,EAAE;IACR,YAAY,EAAE,EAAE;IAChB,QAAQ,EAAE,EAAE;IACZ,OAAO,EAAE,EAAE;IACX,OAAO,EAAE,EAAE;IACX,SAAS,EAAE,EAAE;CACL,CAAC"}
@@ -0,0 +1,2 @@
1
+ import type { InboundEnvelope, InboundMatchConfig } from "../providers/types.js";
2
+ export declare function matchesInbound(envelope: InboundEnvelope, config: InboundMatchConfig, nonce: string): boolean;