@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,125 @@
1
+ configVersion: 1
2
+ userName: crabline
3
+
4
+ x-openclaw-bridge: &openclaw-bridge
5
+ adapter: script
6
+ env:
7
+ - OPENCLAW_URL
8
+ - OPENCLAW_TOKEN
9
+ script:
10
+ commands:
11
+ probe: node ./scripts/openclaw-bridge-probe.mjs
12
+ send: node ./scripts/openclaw-bridge-send.mjs
13
+ waitForInbound: node ./scripts/openclaw-bridge-wait.mjs
14
+ watch: node ./scripts/openclaw-bridge-watch.mjs
15
+
16
+ providers:
17
+ bluebubbles-openclaw:
18
+ <<: *openclaw-bridge
19
+ platform: bluebubbles
20
+ discord-openclaw:
21
+ <<: *openclaw-bridge
22
+ platform: discord
23
+ feishu-openclaw:
24
+ <<: *openclaw-bridge
25
+ platform: feishu
26
+ googlechat-openclaw:
27
+ <<: *openclaw-bridge
28
+ platform: googlechat
29
+ imessage-openclaw:
30
+ <<: *openclaw-bridge
31
+ platform: imessage
32
+ irc-openclaw:
33
+ <<: *openclaw-bridge
34
+ platform: irc
35
+ line-openclaw:
36
+ <<: *openclaw-bridge
37
+ platform: line
38
+ matrix-openclaw:
39
+ <<: *openclaw-bridge
40
+ platform: matrix
41
+ mattermost-openclaw:
42
+ <<: *openclaw-bridge
43
+ platform: mattermost
44
+ msteams-openclaw:
45
+ <<: *openclaw-bridge
46
+ platform: msteams
47
+ nextcloudtalk-openclaw:
48
+ <<: *openclaw-bridge
49
+ platform: nextcloudtalk
50
+ nostr-openclaw:
51
+ <<: *openclaw-bridge
52
+ platform: nostr
53
+ signal-openclaw:
54
+ <<: *openclaw-bridge
55
+ platform: signal
56
+ slack-openclaw:
57
+ <<: *openclaw-bridge
58
+ platform: slack
59
+ synologychat-openclaw:
60
+ <<: *openclaw-bridge
61
+ platform: synologychat
62
+ telegram-openclaw:
63
+ <<: *openclaw-bridge
64
+ platform: telegram
65
+ tlon-openclaw:
66
+ <<: *openclaw-bridge
67
+ platform: tlon
68
+ twitch-openclaw:
69
+ <<: *openclaw-bridge
70
+ platform: twitch
71
+ webchat-openclaw:
72
+ <<: *openclaw-bridge
73
+ platform: webchat
74
+ whatsapp-openclaw:
75
+ <<: *openclaw-bridge
76
+ platform: whatsapp
77
+ zalo-openclaw:
78
+ <<: *openclaw-bridge
79
+ platform: zalo
80
+ zalouser-openclaw:
81
+ <<: *openclaw-bridge
82
+ platform: zalouser
83
+
84
+ fixtures:
85
+ - id: slack-openclaw-agent
86
+ provider: slack-openclaw
87
+ mode: agent
88
+ target:
89
+ id: REPLACE_ME
90
+ channelId: REPLACE_ME
91
+ inboundMatch:
92
+ author: assistant
93
+ strategy: contains
94
+ nonce: contains
95
+
96
+ - id: discord-openclaw-roundtrip
97
+ provider: discord-openclaw
98
+ mode: roundtrip
99
+ target:
100
+ id: REPLACE_ME
101
+ channelId: REPLACE_ME
102
+ inboundMatch:
103
+ author: assistant
104
+ strategy: contains
105
+ nonce: contains
106
+
107
+ - id: telegram-openclaw-roundtrip
108
+ provider: telegram-openclaw
109
+ mode: roundtrip
110
+ target:
111
+ id: REPLACE_ME # Telegram user id; use a dedicated human/MTProto test account, not another bot
112
+ inboundMatch:
113
+ author: assistant
114
+ strategy: contains
115
+ nonce: contains
116
+
117
+ - id: whatsapp-openclaw-roundtrip
118
+ provider: whatsapp-openclaw
119
+ mode: roundtrip
120
+ target:
121
+ id: REPLACE_ME
122
+ inboundMatch:
123
+ author: assistant
124
+ strategy: contains
125
+ nonce: contains
package/package.json ADDED
@@ -0,0 +1,64 @@
1
+ {
2
+ "name": "@openclaw/crabline",
3
+ "version": "0.0.0",
4
+ "description": "Standalone CLI for deterministic messaging provider E2E tests",
5
+ "license": "MIT",
6
+ "bin": {
7
+ "crabline": "dist/src/bin/crabline.js"
8
+ },
9
+ "files": [
10
+ "dist/src",
11
+ "README.md",
12
+ "docs/channel-setup.md",
13
+ "fixtures"
14
+ ],
15
+ "type": "module",
16
+ "main": "./dist/src/index.js",
17
+ "types": "./dist/src/index.d.ts",
18
+ "exports": {
19
+ ".": {
20
+ "types": "./dist/src/index.d.ts",
21
+ "import": "./dist/src/index.js"
22
+ }
23
+ },
24
+ "scripts": {
25
+ "prebuild": "rm -rf dist",
26
+ "build": "tsgo -p tsconfig.build.json",
27
+ "clean": "rm -rf dist coverage",
28
+ "dev": "tsx src/bin/crabline.ts",
29
+ "doctor": "tsx src/bin/crabline.ts doctor",
30
+ "fixtures": "tsx src/bin/crabline.ts fixtures",
31
+ "format": "oxfmt --write .",
32
+ "format:check": "oxfmt --check .",
33
+ "lint": "pnpm format:check && pnpm typecheck && oxlint --deny-warnings --allow vitest/require-mock-type-parameters --type-aware --tsconfig tsconfig.test.json src test",
34
+ "prepare": "npm run build",
35
+ "run": "tsx src/bin/crabline.ts run",
36
+ "test": "vitest run",
37
+ "test:coverage": "vitest run --coverage",
38
+ "test:watch": "vitest",
39
+ "typecheck": "tsgo -p tsconfig.test.json",
40
+ "verify": "pnpm lint && pnpm test:coverage",
41
+ "check": "pnpm verify"
42
+ },
43
+ "dependencies": {
44
+ "commander": "^14.0.3",
45
+ "picocolors": "^1.1.1",
46
+ "yaml": "^2.9.0",
47
+ "zod": "^4.4.3"
48
+ },
49
+ "devDependencies": {
50
+ "@types/node": "^25.9.2",
51
+ "@typescript/native-preview": "7.0.0-dev.20260503.1",
52
+ "@vitest/coverage-v8": "^4.1.8",
53
+ "oxfmt": "^0.47.0",
54
+ "oxlint": "^1.69.0",
55
+ "oxlint-tsgolint": "^0.22.1",
56
+ "tsx": "^4.22.4",
57
+ "typescript": "^6.0.3",
58
+ "vitest": "^4.1.8"
59
+ },
60
+ "engines": {
61
+ "node": ">=22"
62
+ },
63
+ "packageManager": "pnpm@10.32.1"
64
+ }