loudmouth-ai 0.1.0 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (593) hide show
  1. package/README.md +148 -77
  2. package/dist/build-info.json +3 -3
  3. package/extensions/package.json +6 -0
  4. package/package.json +1 -1
  5. package/skills/autopilot/SKILL.md +179 -0
  6. package/skills/goals/SKILL.md +189 -0
  7. package/skills/wordpress/SKILL.md +232 -0
  8. package/extensions/bluebubbles/clawdbot.plugin.json +0 -11
  9. package/extensions/bluebubbles/index.ts +0 -20
  10. package/extensions/bluebubbles/package.json +0 -33
  11. package/extensions/bluebubbles/src/accounts.ts +0 -80
  12. package/extensions/bluebubbles/src/actions.test.ts +0 -651
  13. package/extensions/bluebubbles/src/actions.ts +0 -403
  14. package/extensions/bluebubbles/src/attachments.test.ts +0 -346
  15. package/extensions/bluebubbles/src/attachments.ts +0 -282
  16. package/extensions/bluebubbles/src/channel.ts +0 -399
  17. package/extensions/bluebubbles/src/chat.test.ts +0 -462
  18. package/extensions/bluebubbles/src/chat.ts +0 -354
  19. package/extensions/bluebubbles/src/config-schema.ts +0 -51
  20. package/extensions/bluebubbles/src/media-send.ts +0 -168
  21. package/extensions/bluebubbles/src/monitor.test.ts +0 -2140
  22. package/extensions/bluebubbles/src/monitor.ts +0 -2101
  23. package/extensions/bluebubbles/src/onboarding.ts +0 -340
  24. package/extensions/bluebubbles/src/probe.ts +0 -127
  25. package/extensions/bluebubbles/src/reactions.test.ts +0 -393
  26. package/extensions/bluebubbles/src/reactions.ts +0 -183
  27. package/extensions/bluebubbles/src/runtime.ts +0 -14
  28. package/extensions/bluebubbles/src/send.test.ts +0 -809
  29. package/extensions/bluebubbles/src/send.ts +0 -418
  30. package/extensions/bluebubbles/src/targets.test.ts +0 -184
  31. package/extensions/bluebubbles/src/targets.ts +0 -323
  32. package/extensions/bluebubbles/src/types.ts +0 -127
  33. package/extensions/copilot-proxy/README.md +0 -24
  34. package/extensions/copilot-proxy/clawdbot.plugin.json +0 -11
  35. package/extensions/copilot-proxy/index.ts +0 -142
  36. package/extensions/copilot-proxy/package.json +0 -11
  37. package/extensions/google-antigravity-auth/README.md +0 -24
  38. package/extensions/google-antigravity-auth/clawdbot.plugin.json +0 -11
  39. package/extensions/google-antigravity-auth/index.ts +0 -437
  40. package/extensions/google-antigravity-auth/package.json +0 -11
  41. package/extensions/google-gemini-cli-auth/README.md +0 -35
  42. package/extensions/google-gemini-cli-auth/clawdbot.plugin.json +0 -11
  43. package/extensions/google-gemini-cli-auth/index.ts +0 -91
  44. package/extensions/google-gemini-cli-auth/oauth.test.ts +0 -228
  45. package/extensions/google-gemini-cli-auth/oauth.ts +0 -580
  46. package/extensions/google-gemini-cli-auth/package.json +0 -11
  47. package/extensions/googlechat/clawdbot.plugin.json +0 -11
  48. package/extensions/googlechat/index.ts +0 -20
  49. package/extensions/googlechat/package.json +0 -39
  50. package/extensions/googlechat/src/accounts.ts +0 -133
  51. package/extensions/googlechat/src/actions.ts +0 -162
  52. package/extensions/googlechat/src/api.test.ts +0 -62
  53. package/extensions/googlechat/src/api.ts +0 -259
  54. package/extensions/googlechat/src/auth.ts +0 -113
  55. package/extensions/googlechat/src/channel.ts +0 -580
  56. package/extensions/googlechat/src/monitor.test.ts +0 -27
  57. package/extensions/googlechat/src/monitor.ts +0 -900
  58. package/extensions/googlechat/src/onboarding.ts +0 -278
  59. package/extensions/googlechat/src/runtime.ts +0 -14
  60. package/extensions/googlechat/src/targets.test.ts +0 -35
  61. package/extensions/googlechat/src/targets.ts +0 -55
  62. package/extensions/googlechat/src/types.config.ts +0 -3
  63. package/extensions/googlechat/src/types.ts +0 -73
  64. package/extensions/imessage/clawdbot.plugin.json +0 -11
  65. package/extensions/imessage/index.ts +0 -18
  66. package/extensions/imessage/package.json +0 -11
  67. package/extensions/imessage/src/channel.ts +0 -294
  68. package/extensions/imessage/src/runtime.ts +0 -14
  69. package/extensions/line/clawdbot.plugin.json +0 -11
  70. package/extensions/line/index.ts +0 -20
  71. package/extensions/line/package.json +0 -29
  72. package/extensions/line/src/card-command.ts +0 -338
  73. package/extensions/line/src/channel.logout.test.ts +0 -96
  74. package/extensions/line/src/channel.sendPayload.test.ts +0 -308
  75. package/extensions/line/src/channel.ts +0 -773
  76. package/extensions/line/src/runtime.ts +0 -14
  77. package/extensions/matrix/CHANGELOG.md +0 -54
  78. package/extensions/matrix/clawdbot.plugin.json +0 -11
  79. package/extensions/matrix/index.ts +0 -18
  80. package/extensions/matrix/package.json +0 -36
  81. package/extensions/matrix/src/actions.ts +0 -185
  82. package/extensions/matrix/src/channel.directory.test.ts +0 -56
  83. package/extensions/matrix/src/channel.ts +0 -417
  84. package/extensions/matrix/src/config-schema.ts +0 -62
  85. package/extensions/matrix/src/directory-live.ts +0 -175
  86. package/extensions/matrix/src/group-mentions.ts +0 -61
  87. package/extensions/matrix/src/matrix/accounts.test.ts +0 -83
  88. package/extensions/matrix/src/matrix/accounts.ts +0 -63
  89. package/extensions/matrix/src/matrix/actions/client.ts +0 -53
  90. package/extensions/matrix/src/matrix/actions/messages.ts +0 -120
  91. package/extensions/matrix/src/matrix/actions/pins.ts +0 -70
  92. package/extensions/matrix/src/matrix/actions/reactions.ts +0 -84
  93. package/extensions/matrix/src/matrix/actions/room.ts +0 -88
  94. package/extensions/matrix/src/matrix/actions/summary.ts +0 -77
  95. package/extensions/matrix/src/matrix/actions/types.ts +0 -84
  96. package/extensions/matrix/src/matrix/actions.ts +0 -15
  97. package/extensions/matrix/src/matrix/active-client.ts +0 -11
  98. package/extensions/matrix/src/matrix/client/config.ts +0 -165
  99. package/extensions/matrix/src/matrix/client/create-client.ts +0 -127
  100. package/extensions/matrix/src/matrix/client/logging.ts +0 -35
  101. package/extensions/matrix/src/matrix/client/runtime.ts +0 -4
  102. package/extensions/matrix/src/matrix/client/shared.ts +0 -169
  103. package/extensions/matrix/src/matrix/client/storage.ts +0 -131
  104. package/extensions/matrix/src/matrix/client/types.ts +0 -34
  105. package/extensions/matrix/src/matrix/client.test.ts +0 -57
  106. package/extensions/matrix/src/matrix/client.ts +0 -9
  107. package/extensions/matrix/src/matrix/credentials.ts +0 -103
  108. package/extensions/matrix/src/matrix/deps.ts +0 -57
  109. package/extensions/matrix/src/matrix/format.test.ts +0 -34
  110. package/extensions/matrix/src/matrix/format.ts +0 -22
  111. package/extensions/matrix/src/matrix/index.ts +0 -11
  112. package/extensions/matrix/src/matrix/monitor/allowlist.ts +0 -58
  113. package/extensions/matrix/src/matrix/monitor/auto-join.ts +0 -68
  114. package/extensions/matrix/src/matrix/monitor/direct.ts +0 -105
  115. package/extensions/matrix/src/matrix/monitor/events.ts +0 -103
  116. package/extensions/matrix/src/matrix/monitor/handler.ts +0 -645
  117. package/extensions/matrix/src/matrix/monitor/index.ts +0 -279
  118. package/extensions/matrix/src/matrix/monitor/location.ts +0 -83
  119. package/extensions/matrix/src/matrix/monitor/media.test.ts +0 -103
  120. package/extensions/matrix/src/matrix/monitor/media.ts +0 -113
  121. package/extensions/matrix/src/matrix/monitor/mentions.ts +0 -31
  122. package/extensions/matrix/src/matrix/monitor/replies.ts +0 -96
  123. package/extensions/matrix/src/matrix/monitor/room-info.ts +0 -58
  124. package/extensions/matrix/src/matrix/monitor/rooms.ts +0 -43
  125. package/extensions/matrix/src/matrix/monitor/threads.ts +0 -64
  126. package/extensions/matrix/src/matrix/monitor/types.ts +0 -39
  127. package/extensions/matrix/src/matrix/poll-types.test.ts +0 -22
  128. package/extensions/matrix/src/matrix/poll-types.ts +0 -157
  129. package/extensions/matrix/src/matrix/probe.ts +0 -70
  130. package/extensions/matrix/src/matrix/send/client.ts +0 -63
  131. package/extensions/matrix/src/matrix/send/formatting.ts +0 -92
  132. package/extensions/matrix/src/matrix/send/media.ts +0 -220
  133. package/extensions/matrix/src/matrix/send/targets.test.ts +0 -102
  134. package/extensions/matrix/src/matrix/send/targets.ts +0 -144
  135. package/extensions/matrix/src/matrix/send/types.ts +0 -109
  136. package/extensions/matrix/src/matrix/send.test.ts +0 -172
  137. package/extensions/matrix/src/matrix/send.ts +0 -255
  138. package/extensions/matrix/src/onboarding.ts +0 -432
  139. package/extensions/matrix/src/outbound.ts +0 -53
  140. package/extensions/matrix/src/resolve-targets.ts +0 -89
  141. package/extensions/matrix/src/runtime.ts +0 -14
  142. package/extensions/matrix/src/tool-actions.ts +0 -160
  143. package/extensions/matrix/src/types.ts +0 -95
  144. package/extensions/mattermost/clawdbot.plugin.json +0 -11
  145. package/extensions/mattermost/index.ts +0 -18
  146. package/extensions/mattermost/package.json +0 -25
  147. package/extensions/mattermost/src/channel.test.ts +0 -43
  148. package/extensions/mattermost/src/channel.ts +0 -339
  149. package/extensions/mattermost/src/config-schema.ts +0 -56
  150. package/extensions/mattermost/src/group-mentions.ts +0 -14
  151. package/extensions/mattermost/src/mattermost/accounts.ts +0 -115
  152. package/extensions/mattermost/src/mattermost/client.ts +0 -208
  153. package/extensions/mattermost/src/mattermost/index.ts +0 -9
  154. package/extensions/mattermost/src/mattermost/monitor-helpers.ts +0 -150
  155. package/extensions/mattermost/src/mattermost/monitor.ts +0 -921
  156. package/extensions/mattermost/src/mattermost/probe.ts +0 -70
  157. package/extensions/mattermost/src/mattermost/send.ts +0 -217
  158. package/extensions/mattermost/src/normalize.ts +0 -38
  159. package/extensions/mattermost/src/onboarding-helpers.ts +0 -42
  160. package/extensions/mattermost/src/onboarding.ts +0 -187
  161. package/extensions/mattermost/src/runtime.ts +0 -14
  162. package/extensions/mattermost/src/types.ts +0 -50
  163. package/extensions/msteams/CHANGELOG.md +0 -51
  164. package/extensions/msteams/clawdbot.plugin.json +0 -11
  165. package/extensions/msteams/index.ts +0 -18
  166. package/extensions/msteams/package.json +0 -36
  167. package/extensions/msteams/src/attachments/download.ts +0 -206
  168. package/extensions/msteams/src/attachments/graph.ts +0 -319
  169. package/extensions/msteams/src/attachments/html.ts +0 -76
  170. package/extensions/msteams/src/attachments/payload.ts +0 -22
  171. package/extensions/msteams/src/attachments/shared.ts +0 -235
  172. package/extensions/msteams/src/attachments/types.ts +0 -37
  173. package/extensions/msteams/src/attachments.test.ts +0 -424
  174. package/extensions/msteams/src/attachments.ts +0 -18
  175. package/extensions/msteams/src/channel.directory.test.ts +0 -46
  176. package/extensions/msteams/src/channel.ts +0 -436
  177. package/extensions/msteams/src/conversation-store-fs.test.ts +0 -88
  178. package/extensions/msteams/src/conversation-store-fs.ts +0 -155
  179. package/extensions/msteams/src/conversation-store-memory.ts +0 -45
  180. package/extensions/msteams/src/conversation-store.ts +0 -41
  181. package/extensions/msteams/src/directory-live.ts +0 -179
  182. package/extensions/msteams/src/errors.test.ts +0 -46
  183. package/extensions/msteams/src/errors.ts +0 -158
  184. package/extensions/msteams/src/file-consent-helpers.test.ts +0 -234
  185. package/extensions/msteams/src/file-consent-helpers.ts +0 -73
  186. package/extensions/msteams/src/file-consent.ts +0 -122
  187. package/extensions/msteams/src/graph-chat.ts +0 -52
  188. package/extensions/msteams/src/graph-upload.ts +0 -445
  189. package/extensions/msteams/src/inbound.test.ts +0 -67
  190. package/extensions/msteams/src/inbound.ts +0 -38
  191. package/extensions/msteams/src/index.ts +0 -4
  192. package/extensions/msteams/src/media-helpers.test.ts +0 -186
  193. package/extensions/msteams/src/media-helpers.ts +0 -77
  194. package/extensions/msteams/src/messenger.test.ts +0 -245
  195. package/extensions/msteams/src/messenger.ts +0 -460
  196. package/extensions/msteams/src/monitor-handler/inbound-media.ts +0 -123
  197. package/extensions/msteams/src/monitor-handler/message-handler.ts +0 -629
  198. package/extensions/msteams/src/monitor-handler.ts +0 -166
  199. package/extensions/msteams/src/monitor-types.ts +0 -5
  200. package/extensions/msteams/src/monitor.ts +0 -290
  201. package/extensions/msteams/src/onboarding.ts +0 -432
  202. package/extensions/msteams/src/outbound.ts +0 -47
  203. package/extensions/msteams/src/pending-uploads.ts +0 -87
  204. package/extensions/msteams/src/policy.test.ts +0 -210
  205. package/extensions/msteams/src/policy.ts +0 -202
  206. package/extensions/msteams/src/polls-store-memory.ts +0 -30
  207. package/extensions/msteams/src/polls-store.test.ts +0 -40
  208. package/extensions/msteams/src/polls.test.ts +0 -72
  209. package/extensions/msteams/src/polls.ts +0 -299
  210. package/extensions/msteams/src/probe.test.ts +0 -57
  211. package/extensions/msteams/src/probe.ts +0 -99
  212. package/extensions/msteams/src/reply-dispatcher.ts +0 -128
  213. package/extensions/msteams/src/resolve-allowlist.ts +0 -277
  214. package/extensions/msteams/src/runtime.ts +0 -14
  215. package/extensions/msteams/src/sdk-types.ts +0 -19
  216. package/extensions/msteams/src/sdk.ts +0 -33
  217. package/extensions/msteams/src/send-context.ts +0 -156
  218. package/extensions/msteams/src/send.ts +0 -489
  219. package/extensions/msteams/src/sent-message-cache.test.ts +0 -16
  220. package/extensions/msteams/src/sent-message-cache.ts +0 -41
  221. package/extensions/msteams/src/storage.ts +0 -22
  222. package/extensions/msteams/src/store-fs.ts +0 -80
  223. package/extensions/msteams/src/token.ts +0 -19
  224. package/extensions/nextcloud-talk/clawdbot.plugin.json +0 -11
  225. package/extensions/nextcloud-talk/index.ts +0 -18
  226. package/extensions/nextcloud-talk/package.json +0 -30
  227. package/extensions/nextcloud-talk/src/accounts.ts +0 -154
  228. package/extensions/nextcloud-talk/src/channel.ts +0 -404
  229. package/extensions/nextcloud-talk/src/config-schema.ts +0 -78
  230. package/extensions/nextcloud-talk/src/format.ts +0 -79
  231. package/extensions/nextcloud-talk/src/inbound.ts +0 -336
  232. package/extensions/nextcloud-talk/src/monitor.ts +0 -246
  233. package/extensions/nextcloud-talk/src/normalize.ts +0 -31
  234. package/extensions/nextcloud-talk/src/onboarding.ts +0 -341
  235. package/extensions/nextcloud-talk/src/policy.ts +0 -175
  236. package/extensions/nextcloud-talk/src/room-info.ts +0 -111
  237. package/extensions/nextcloud-talk/src/runtime.ts +0 -14
  238. package/extensions/nextcloud-talk/src/send.ts +0 -206
  239. package/extensions/nextcloud-talk/src/signature.ts +0 -67
  240. package/extensions/nextcloud-talk/src/types.ts +0 -179
  241. package/extensions/nostr/CHANGELOG.md +0 -46
  242. package/extensions/nostr/README.md +0 -136
  243. package/extensions/nostr/clawdbot.plugin.json +0 -11
  244. package/extensions/nostr/index.ts +0 -69
  245. package/extensions/nostr/package.json +0 -31
  246. package/extensions/nostr/src/channel.test.ts +0 -141
  247. package/extensions/nostr/src/channel.ts +0 -342
  248. package/extensions/nostr/src/config-schema.ts +0 -90
  249. package/extensions/nostr/src/metrics.ts +0 -464
  250. package/extensions/nostr/src/nostr-bus.fuzz.test.ts +0 -544
  251. package/extensions/nostr/src/nostr-bus.integration.test.ts +0 -452
  252. package/extensions/nostr/src/nostr-bus.test.ts +0 -199
  253. package/extensions/nostr/src/nostr-bus.ts +0 -741
  254. package/extensions/nostr/src/nostr-profile-http.test.ts +0 -378
  255. package/extensions/nostr/src/nostr-profile-http.ts +0 -500
  256. package/extensions/nostr/src/nostr-profile-import.test.ts +0 -120
  257. package/extensions/nostr/src/nostr-profile-import.ts +0 -259
  258. package/extensions/nostr/src/nostr-profile.fuzz.test.ts +0 -479
  259. package/extensions/nostr/src/nostr-profile.test.ts +0 -410
  260. package/extensions/nostr/src/nostr-profile.ts +0 -242
  261. package/extensions/nostr/src/nostr-state-store.test.ts +0 -128
  262. package/extensions/nostr/src/nostr-state-store.ts +0 -226
  263. package/extensions/nostr/src/runtime.ts +0 -14
  264. package/extensions/nostr/src/seen-tracker.ts +0 -271
  265. package/extensions/nostr/src/types.test.ts +0 -161
  266. package/extensions/nostr/src/types.ts +0 -99
  267. package/extensions/nostr/test/setup.ts +0 -5
  268. package/extensions/open-prose/README.md +0 -25
  269. package/extensions/open-prose/clawdbot.plugin.json +0 -11
  270. package/extensions/open-prose/index.ts +0 -5
  271. package/extensions/open-prose/package.json +0 -11
  272. package/extensions/open-prose/skills/prose/LICENSE +0 -21
  273. package/extensions/open-prose/skills/prose/SKILL.md +0 -318
  274. package/extensions/open-prose/skills/prose/alt-borges.md +0 -141
  275. package/extensions/open-prose/skills/prose/alts/arabian-nights.md +0 -358
  276. package/extensions/open-prose/skills/prose/alts/borges.md +0 -360
  277. package/extensions/open-prose/skills/prose/alts/folk.md +0 -322
  278. package/extensions/open-prose/skills/prose/alts/homer.md +0 -346
  279. package/extensions/open-prose/skills/prose/alts/kafka.md +0 -373
  280. package/extensions/open-prose/skills/prose/compiler.md +0 -2967
  281. package/extensions/open-prose/skills/prose/examples/01-hello-world.prose +0 -4
  282. package/extensions/open-prose/skills/prose/examples/02-research-and-summarize.prose +0 -6
  283. package/extensions/open-prose/skills/prose/examples/03-code-review.prose +0 -17
  284. package/extensions/open-prose/skills/prose/examples/04-write-and-refine.prose +0 -14
  285. package/extensions/open-prose/skills/prose/examples/05-debug-issue.prose +0 -20
  286. package/extensions/open-prose/skills/prose/examples/06-explain-codebase.prose +0 -17
  287. package/extensions/open-prose/skills/prose/examples/07-refactor.prose +0 -20
  288. package/extensions/open-prose/skills/prose/examples/08-blog-post.prose +0 -20
  289. package/extensions/open-prose/skills/prose/examples/09-research-with-agents.prose +0 -25
  290. package/extensions/open-prose/skills/prose/examples/10-code-review-agents.prose +0 -32
  291. package/extensions/open-prose/skills/prose/examples/11-skills-and-imports.prose +0 -27
  292. package/extensions/open-prose/skills/prose/examples/12-secure-agent-permissions.prose +0 -43
  293. package/extensions/open-prose/skills/prose/examples/13-variables-and-context.prose +0 -51
  294. package/extensions/open-prose/skills/prose/examples/14-composition-blocks.prose +0 -48
  295. package/extensions/open-prose/skills/prose/examples/15-inline-sequences.prose +0 -23
  296. package/extensions/open-prose/skills/prose/examples/16-parallel-reviews.prose +0 -19
  297. package/extensions/open-prose/skills/prose/examples/17-parallel-research.prose +0 -19
  298. package/extensions/open-prose/skills/prose/examples/18-mixed-parallel-sequential.prose +0 -36
  299. package/extensions/open-prose/skills/prose/examples/19-advanced-parallel.prose +0 -71
  300. package/extensions/open-prose/skills/prose/examples/20-fixed-loops.prose +0 -20
  301. package/extensions/open-prose/skills/prose/examples/21-pipeline-operations.prose +0 -35
  302. package/extensions/open-prose/skills/prose/examples/22-error-handling.prose +0 -51
  303. package/extensions/open-prose/skills/prose/examples/23-retry-with-backoff.prose +0 -63
  304. package/extensions/open-prose/skills/prose/examples/24-choice-blocks.prose +0 -86
  305. package/extensions/open-prose/skills/prose/examples/25-conditionals.prose +0 -114
  306. package/extensions/open-prose/skills/prose/examples/26-parameterized-blocks.prose +0 -100
  307. package/extensions/open-prose/skills/prose/examples/27-string-interpolation.prose +0 -105
  308. package/extensions/open-prose/skills/prose/examples/28-automated-pr-review.prose +0 -37
  309. package/extensions/open-prose/skills/prose/examples/28-gas-town.prose +0 -1572
  310. package/extensions/open-prose/skills/prose/examples/29-captains-chair.prose +0 -218
  311. package/extensions/open-prose/skills/prose/examples/30-captains-chair-simple.prose +0 -42
  312. package/extensions/open-prose/skills/prose/examples/31-captains-chair-with-memory.prose +0 -145
  313. package/extensions/open-prose/skills/prose/examples/33-pr-review-autofix.prose +0 -168
  314. package/extensions/open-prose/skills/prose/examples/34-content-pipeline.prose +0 -204
  315. package/extensions/open-prose/skills/prose/examples/35-feature-factory.prose +0 -296
  316. package/extensions/open-prose/skills/prose/examples/36-bug-hunter.prose +0 -237
  317. package/extensions/open-prose/skills/prose/examples/37-the-forge.prose +0 -1474
  318. package/extensions/open-prose/skills/prose/examples/38-skill-scan.prose +0 -455
  319. package/extensions/open-prose/skills/prose/examples/39-architect-by-simulation.prose +0 -277
  320. package/extensions/open-prose/skills/prose/examples/40-rlm-self-refine.prose +0 -32
  321. package/extensions/open-prose/skills/prose/examples/41-rlm-divide-conquer.prose +0 -38
  322. package/extensions/open-prose/skills/prose/examples/42-rlm-filter-recurse.prose +0 -46
  323. package/extensions/open-prose/skills/prose/examples/43-rlm-pairwise.prose +0 -50
  324. package/extensions/open-prose/skills/prose/examples/44-run-endpoint-ux-test.prose +0 -261
  325. package/extensions/open-prose/skills/prose/examples/45-plugin-release.prose +0 -159
  326. package/extensions/open-prose/skills/prose/examples/45-run-endpoint-ux-test-with-remediation.prose +0 -637
  327. package/extensions/open-prose/skills/prose/examples/46-run-endpoint-ux-test-fast.prose +0 -148
  328. package/extensions/open-prose/skills/prose/examples/46-workflow-crystallizer.prose +0 -225
  329. package/extensions/open-prose/skills/prose/examples/47-language-self-improvement.prose +0 -356
  330. package/extensions/open-prose/skills/prose/examples/48-habit-miner.prose +0 -445
  331. package/extensions/open-prose/skills/prose/examples/49-prose-run-retrospective.prose +0 -210
  332. package/extensions/open-prose/skills/prose/examples/README.md +0 -391
  333. package/extensions/open-prose/skills/prose/examples/roadmap/README.md +0 -22
  334. package/extensions/open-prose/skills/prose/examples/roadmap/iterative-refinement.prose +0 -20
  335. package/extensions/open-prose/skills/prose/examples/roadmap/parallel-review.prose +0 -18
  336. package/extensions/open-prose/skills/prose/examples/roadmap/simple-pipeline.prose +0 -17
  337. package/extensions/open-prose/skills/prose/examples/roadmap/syntax/open-prose-syntax.prose +0 -223
  338. package/extensions/open-prose/skills/prose/guidance/antipatterns.md +0 -951
  339. package/extensions/open-prose/skills/prose/guidance/patterns.md +0 -700
  340. package/extensions/open-prose/skills/prose/guidance/system-prompt.md +0 -180
  341. package/extensions/open-prose/skills/prose/help.md +0 -143
  342. package/extensions/open-prose/skills/prose/lib/README.md +0 -105
  343. package/extensions/open-prose/skills/prose/lib/calibrator.prose +0 -215
  344. package/extensions/open-prose/skills/prose/lib/cost-analyzer.prose +0 -174
  345. package/extensions/open-prose/skills/prose/lib/error-forensics.prose +0 -250
  346. package/extensions/open-prose/skills/prose/lib/inspector.prose +0 -196
  347. package/extensions/open-prose/skills/prose/lib/profiler.prose +0 -460
  348. package/extensions/open-prose/skills/prose/lib/program-improver.prose +0 -275
  349. package/extensions/open-prose/skills/prose/lib/project-memory.prose +0 -118
  350. package/extensions/open-prose/skills/prose/lib/user-memory.prose +0 -93
  351. package/extensions/open-prose/skills/prose/lib/vm-improver.prose +0 -243
  352. package/extensions/open-prose/skills/prose/primitives/session.md +0 -587
  353. package/extensions/open-prose/skills/prose/prose.md +0 -1235
  354. package/extensions/open-prose/skills/prose/state/filesystem.md +0 -478
  355. package/extensions/open-prose/skills/prose/state/in-context.md +0 -380
  356. package/extensions/open-prose/skills/prose/state/postgres.md +0 -875
  357. package/extensions/open-prose/skills/prose/state/sqlite.md +0 -572
  358. package/extensions/qwen-portal-auth/README.md +0 -24
  359. package/extensions/qwen-portal-auth/clawdbot.plugin.json +0 -11
  360. package/extensions/qwen-portal-auth/index.ts +0 -127
  361. package/extensions/qwen-portal-auth/oauth.ts +0 -190
  362. package/extensions/signal/clawdbot.plugin.json +0 -11
  363. package/extensions/signal/index.ts +0 -18
  364. package/extensions/signal/package.json +0 -11
  365. package/extensions/signal/src/channel.ts +0 -312
  366. package/extensions/signal/src/runtime.ts +0 -14
  367. package/extensions/telegram/clawdbot.plugin.json +0 -11
  368. package/extensions/telegram/index.ts +0 -18
  369. package/extensions/telegram/package.json +0 -11
  370. package/extensions/telegram/src/channel.ts +0 -478
  371. package/extensions/telegram/src/runtime.ts +0 -14
  372. package/extensions/tlon/README.md +0 -5
  373. package/extensions/tlon/clawdbot.plugin.json +0 -11
  374. package/extensions/tlon/index.ts +0 -18
  375. package/extensions/tlon/package.json +0 -30
  376. package/extensions/tlon/src/channel.ts +0 -379
  377. package/extensions/tlon/src/config-schema.test.ts +0 -32
  378. package/extensions/tlon/src/config-schema.ts +0 -43
  379. package/extensions/tlon/src/monitor/discovery.ts +0 -71
  380. package/extensions/tlon/src/monitor/history.ts +0 -87
  381. package/extensions/tlon/src/monitor/index.ts +0 -501
  382. package/extensions/tlon/src/monitor/processed-messages.test.ts +0 -24
  383. package/extensions/tlon/src/monitor/processed-messages.ts +0 -38
  384. package/extensions/tlon/src/monitor/utils.ts +0 -83
  385. package/extensions/tlon/src/onboarding.ts +0 -213
  386. package/extensions/tlon/src/runtime.ts +0 -14
  387. package/extensions/tlon/src/targets.ts +0 -79
  388. package/extensions/tlon/src/types.ts +0 -85
  389. package/extensions/tlon/src/urbit/auth.ts +0 -18
  390. package/extensions/tlon/src/urbit/http-api.ts +0 -36
  391. package/extensions/tlon/src/urbit/send.test.ts +0 -38
  392. package/extensions/tlon/src/urbit/send.ts +0 -127
  393. package/extensions/tlon/src/urbit/sse-client.test.ts +0 -41
  394. package/extensions/tlon/src/urbit/sse-client.ts +0 -367
  395. package/extensions/twitch/CHANGELOG.md +0 -21
  396. package/extensions/twitch/README.md +0 -89
  397. package/extensions/twitch/clawdbot.plugin.json +0 -9
  398. package/extensions/twitch/index.ts +0 -20
  399. package/extensions/twitch/package.json +0 -20
  400. package/extensions/twitch/src/access-control.test.ts +0 -489
  401. package/extensions/twitch/src/access-control.ts +0 -154
  402. package/extensions/twitch/src/actions.ts +0 -173
  403. package/extensions/twitch/src/client-manager-registry.ts +0 -115
  404. package/extensions/twitch/src/config-schema.ts +0 -82
  405. package/extensions/twitch/src/config.test.ts +0 -88
  406. package/extensions/twitch/src/config.ts +0 -116
  407. package/extensions/twitch/src/monitor.ts +0 -257
  408. package/extensions/twitch/src/onboarding.test.ts +0 -311
  409. package/extensions/twitch/src/onboarding.ts +0 -411
  410. package/extensions/twitch/src/outbound.test.ts +0 -373
  411. package/extensions/twitch/src/outbound.ts +0 -186
  412. package/extensions/twitch/src/plugin.test.ts +0 -39
  413. package/extensions/twitch/src/plugin.ts +0 -274
  414. package/extensions/twitch/src/probe.test.ts +0 -198
  415. package/extensions/twitch/src/probe.ts +0 -118
  416. package/extensions/twitch/src/resolver.ts +0 -137
  417. package/extensions/twitch/src/runtime.ts +0 -14
  418. package/extensions/twitch/src/send.test.ts +0 -289
  419. package/extensions/twitch/src/send.ts +0 -136
  420. package/extensions/twitch/src/status.test.ts +0 -270
  421. package/extensions/twitch/src/status.ts +0 -176
  422. package/extensions/twitch/src/token.test.ts +0 -171
  423. package/extensions/twitch/src/token.ts +0 -87
  424. package/extensions/twitch/src/twitch-client.test.ts +0 -574
  425. package/extensions/twitch/src/twitch-client.ts +0 -277
  426. package/extensions/twitch/src/types.ts +0 -141
  427. package/extensions/twitch/src/utils/markdown.ts +0 -92
  428. package/extensions/twitch/src/utils/twitch.ts +0 -78
  429. package/extensions/twitch/test/setup.ts +0 -7
  430. package/extensions/voice-call/CHANGELOG.md +0 -72
  431. package/extensions/voice-call/README.md +0 -134
  432. package/extensions/voice-call/clawdbot.plugin.json +0 -601
  433. package/extensions/voice-call/index.ts +0 -497
  434. package/extensions/voice-call/package.json +0 -16
  435. package/extensions/voice-call/src/cli.ts +0 -300
  436. package/extensions/voice-call/src/config.test.ts +0 -204
  437. package/extensions/voice-call/src/config.ts +0 -493
  438. package/extensions/voice-call/src/core-bridge.ts +0 -196
  439. package/extensions/voice-call/src/manager/context.ts +0 -21
  440. package/extensions/voice-call/src/manager/events.ts +0 -177
  441. package/extensions/voice-call/src/manager/lookup.ts +0 -33
  442. package/extensions/voice-call/src/manager/outbound.ts +0 -248
  443. package/extensions/voice-call/src/manager/state.ts +0 -50
  444. package/extensions/voice-call/src/manager/store.ts +0 -88
  445. package/extensions/voice-call/src/manager/timers.ts +0 -86
  446. package/extensions/voice-call/src/manager/twiml.ts +0 -9
  447. package/extensions/voice-call/src/manager.test.ts +0 -108
  448. package/extensions/voice-call/src/manager.ts +0 -876
  449. package/extensions/voice-call/src/media-stream.test.ts +0 -97
  450. package/extensions/voice-call/src/media-stream.ts +0 -393
  451. package/extensions/voice-call/src/providers/base.ts +0 -67
  452. package/extensions/voice-call/src/providers/index.ts +0 -10
  453. package/extensions/voice-call/src/providers/mock.ts +0 -168
  454. package/extensions/voice-call/src/providers/plivo.test.ts +0 -28
  455. package/extensions/voice-call/src/providers/plivo.ts +0 -504
  456. package/extensions/voice-call/src/providers/stt-openai-realtime.ts +0 -311
  457. package/extensions/voice-call/src/providers/telnyx.ts +0 -364
  458. package/extensions/voice-call/src/providers/tts-openai.ts +0 -264
  459. package/extensions/voice-call/src/providers/twilio/api.ts +0 -45
  460. package/extensions/voice-call/src/providers/twilio/webhook.ts +0 -29
  461. package/extensions/voice-call/src/providers/twilio.test.ts +0 -64
  462. package/extensions/voice-call/src/providers/twilio.ts +0 -595
  463. package/extensions/voice-call/src/response-generator.ts +0 -171
  464. package/extensions/voice-call/src/runtime.ts +0 -205
  465. package/extensions/voice-call/src/telephony-audio.ts +0 -88
  466. package/extensions/voice-call/src/telephony-tts.ts +0 -95
  467. package/extensions/voice-call/src/tunnel.ts +0 -331
  468. package/extensions/voice-call/src/types.ts +0 -272
  469. package/extensions/voice-call/src/utils.ts +0 -12
  470. package/extensions/voice-call/src/voice-mapping.ts +0 -65
  471. package/extensions/voice-call/src/webhook-security.test.ts +0 -233
  472. package/extensions/voice-call/src/webhook-security.ts +0 -446
  473. package/extensions/voice-call/src/webhook.ts +0 -490
  474. package/extensions/whatsapp/clawdbot.plugin.json +0 -11
  475. package/extensions/whatsapp/index.ts +0 -18
  476. package/extensions/whatsapp/package.json +0 -11
  477. package/extensions/whatsapp/src/channel.ts +0 -500
  478. package/extensions/whatsapp/src/runtime.ts +0 -14
  479. package/extensions/zalo/CHANGELOG.md +0 -55
  480. package/extensions/zalo/README.md +0 -50
  481. package/extensions/zalo/clawdbot.plugin.json +0 -11
  482. package/extensions/zalo/index.ts +0 -20
  483. package/extensions/zalo/package.json +0 -33
  484. package/extensions/zalo/src/accounts.ts +0 -71
  485. package/extensions/zalo/src/actions.ts +0 -62
  486. package/extensions/zalo/src/api.ts +0 -206
  487. package/extensions/zalo/src/channel.directory.test.ts +0 -35
  488. package/extensions/zalo/src/channel.ts +0 -394
  489. package/extensions/zalo/src/config-schema.ts +0 -24
  490. package/extensions/zalo/src/monitor.ts +0 -760
  491. package/extensions/zalo/src/monitor.webhook.test.ts +0 -70
  492. package/extensions/zalo/src/onboarding.ts +0 -405
  493. package/extensions/zalo/src/probe.ts +0 -46
  494. package/extensions/zalo/src/proxy.ts +0 -18
  495. package/extensions/zalo/src/runtime.ts +0 -14
  496. package/extensions/zalo/src/send.ts +0 -117
  497. package/extensions/zalo/src/status-issues.ts +0 -50
  498. package/extensions/zalo/src/token.ts +0 -55
  499. package/extensions/zalo/src/types.ts +0 -42
  500. package/extensions/zalouser/CHANGELOG.md +0 -33
  501. package/extensions/zalouser/README.md +0 -221
  502. package/extensions/zalouser/clawdbot.plugin.json +0 -11
  503. package/extensions/zalouser/index.ts +0 -32
  504. package/extensions/zalouser/package.json +0 -33
  505. package/extensions/zalouser/src/accounts.ts +0 -117
  506. package/extensions/zalouser/src/channel.test.ts +0 -17
  507. package/extensions/zalouser/src/channel.ts +0 -641
  508. package/extensions/zalouser/src/config-schema.ts +0 -27
  509. package/extensions/zalouser/src/monitor.ts +0 -574
  510. package/extensions/zalouser/src/onboarding.ts +0 -488
  511. package/extensions/zalouser/src/probe.ts +0 -28
  512. package/extensions/zalouser/src/runtime.ts +0 -14
  513. package/extensions/zalouser/src/send.ts +0 -150
  514. package/extensions/zalouser/src/status-issues.test.ts +0 -58
  515. package/extensions/zalouser/src/status-issues.ts +0 -81
  516. package/extensions/zalouser/src/tool.ts +0 -156
  517. package/extensions/zalouser/src/types.ts +0 -102
  518. package/extensions/zalouser/src/zca.ts +0 -208
  519. package/skills/1password/SKILL.md +0 -53
  520. package/skills/1password/references/cli-examples.md +0 -29
  521. package/skills/1password/references/get-started.md +0 -17
  522. package/skills/apple-notes/SKILL.md +0 -50
  523. package/skills/apple-reminders/SKILL.md +0 -67
  524. package/skills/bear-notes/SKILL.md +0 -79
  525. package/skills/bird/SKILL.md +0 -197
  526. package/skills/blogwatcher/SKILL.md +0 -46
  527. package/skills/blucli/SKILL.md +0 -27
  528. package/skills/bluebubbles/SKILL.md +0 -39
  529. package/skills/camsnap/SKILL.md +0 -25
  530. package/skills/canvas/SKILL.md +0 -189
  531. package/skills/clawdhub/SKILL.md +0 -53
  532. package/skills/coding-agent/SKILL.md +0 -278
  533. package/skills/discord/SKILL.md +0 -475
  534. package/skills/eightctl/SKILL.md +0 -29
  535. package/skills/food-order/SKILL.md +0 -41
  536. package/skills/gemini/SKILL.md +0 -23
  537. package/skills/gifgrep/SKILL.md +0 -47
  538. package/skills/github/SKILL.md +0 -48
  539. package/skills/gog/SKILL.md +0 -92
  540. package/skills/goplaces/SKILL.md +0 -30
  541. package/skills/himalaya/SKILL.md +0 -217
  542. package/skills/himalaya/references/configuration.md +0 -174
  543. package/skills/himalaya/references/message-composition.md +0 -182
  544. package/skills/imsg/SKILL.md +0 -25
  545. package/skills/local-places/SERVER_README.md +0 -101
  546. package/skills/local-places/SKILL.md +0 -91
  547. package/skills/local-places/pyproject.toml +0 -27
  548. package/skills/local-places/src/local_places/__init__.py +0 -2
  549. package/skills/local-places/src/local_places/google_places.py +0 -314
  550. package/skills/local-places/src/local_places/main.py +0 -65
  551. package/skills/local-places/src/local_places/schemas.py +0 -107
  552. package/skills/mcporter/SKILL.md +0 -38
  553. package/skills/model-usage/SKILL.md +0 -45
  554. package/skills/model-usage/references/codexbar-cli.md +0 -28
  555. package/skills/model-usage/scripts/model_usage.py +0 -310
  556. package/skills/nano-banana-pro/SKILL.md +0 -30
  557. package/skills/nano-banana-pro/scripts/generate_image.py +0 -169
  558. package/skills/nano-pdf/SKILL.md +0 -20
  559. package/skills/notion/SKILL.md +0 -156
  560. package/skills/obsidian/SKILL.md +0 -55
  561. package/skills/openai-image-gen/SKILL.md +0 -71
  562. package/skills/openai-image-gen/scripts/gen.py +0 -240
  563. package/skills/openai-whisper/SKILL.md +0 -19
  564. package/skills/openai-whisper-api/SKILL.md +0 -43
  565. package/skills/openai-whisper-api/scripts/transcribe.sh +0 -85
  566. package/skills/openhue/SKILL.md +0 -30
  567. package/skills/oracle/SKILL.md +0 -105
  568. package/skills/ordercli/SKILL.md +0 -47
  569. package/skills/peekaboo/SKILL.md +0 -153
  570. package/skills/sag/SKILL.md +0 -62
  571. package/skills/session-logs/SKILL.md +0 -105
  572. package/skills/sherpa-onnx-tts/SKILL.md +0 -49
  573. package/skills/sherpa-onnx-tts/bin/sherpa-onnx-tts +0 -178
  574. package/skills/skill-creator/SKILL.md +0 -371
  575. package/skills/skill-creator/license.txt +0 -202
  576. package/skills/skill-creator/scripts/init_skill.py +0 -378
  577. package/skills/skill-creator/scripts/package_skill.py +0 -111
  578. package/skills/skill-creator/scripts/quick_validate.py +0 -101
  579. package/skills/slack/SKILL.md +0 -144
  580. package/skills/songsee/SKILL.md +0 -29
  581. package/skills/sonoscli/SKILL.md +0 -26
  582. package/skills/spotify-player/SKILL.md +0 -34
  583. package/skills/summarize/SKILL.md +0 -67
  584. package/skills/things-mac/SKILL.md +0 -61
  585. package/skills/tmux/SKILL.md +0 -121
  586. package/skills/tmux/scripts/find-sessions.sh +0 -112
  587. package/skills/tmux/scripts/wait-for-text.sh +0 -83
  588. package/skills/trello/SKILL.md +0 -84
  589. package/skills/video-frames/SKILL.md +0 -29
  590. package/skills/video-frames/scripts/frame.sh +0 -81
  591. package/skills/voice-call/SKILL.md +0 -35
  592. package/skills/wacli/SKILL.md +0 -42
  593. package/skills/weather/SKILL.md +0 -49
@@ -1,161 +0,0 @@
1
- import { describe, expect, it } from "vitest";
2
- import {
3
- listNostrAccountIds,
4
- resolveDefaultNostrAccountId,
5
- resolveNostrAccount,
6
- } from "./types.js";
7
-
8
- const TEST_PRIVATE_KEY = "0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef";
9
-
10
- describe("listNostrAccountIds", () => {
11
- it("returns empty array when not configured", () => {
12
- const cfg = { channels: {} };
13
- expect(listNostrAccountIds(cfg)).toEqual([]);
14
- });
15
-
16
- it("returns empty array when nostr section exists but no privateKey", () => {
17
- const cfg = { channels: { nostr: { enabled: true } } };
18
- expect(listNostrAccountIds(cfg)).toEqual([]);
19
- });
20
-
21
- it("returns default when privateKey is configured", () => {
22
- const cfg = {
23
- channels: {
24
- nostr: { privateKey: TEST_PRIVATE_KEY },
25
- },
26
- };
27
- expect(listNostrAccountIds(cfg)).toEqual(["default"]);
28
- });
29
- });
30
-
31
- describe("resolveDefaultNostrAccountId", () => {
32
- it("returns default when configured", () => {
33
- const cfg = {
34
- channels: {
35
- nostr: { privateKey: TEST_PRIVATE_KEY },
36
- },
37
- };
38
- expect(resolveDefaultNostrAccountId(cfg)).toBe("default");
39
- });
40
-
41
- it("returns default when not configured", () => {
42
- const cfg = { channels: {} };
43
- expect(resolveDefaultNostrAccountId(cfg)).toBe("default");
44
- });
45
- });
46
-
47
- describe("resolveNostrAccount", () => {
48
- it("resolves configured account", () => {
49
- const cfg = {
50
- channels: {
51
- nostr: {
52
- privateKey: TEST_PRIVATE_KEY,
53
- name: "Test Bot",
54
- relays: ["wss://test.relay"],
55
- dmPolicy: "pairing" as const,
56
- },
57
- },
58
- };
59
- const account = resolveNostrAccount({ cfg });
60
-
61
- expect(account.accountId).toBe("default");
62
- expect(account.name).toBe("Test Bot");
63
- expect(account.enabled).toBe(true);
64
- expect(account.configured).toBe(true);
65
- expect(account.privateKey).toBe(TEST_PRIVATE_KEY);
66
- expect(account.publicKey).toMatch(/^[0-9a-f]{64}$/);
67
- expect(account.relays).toEqual(["wss://test.relay"]);
68
- });
69
-
70
- it("resolves unconfigured account with defaults", () => {
71
- const cfg = { channels: {} };
72
- const account = resolveNostrAccount({ cfg });
73
-
74
- expect(account.accountId).toBe("default");
75
- expect(account.enabled).toBe(true);
76
- expect(account.configured).toBe(false);
77
- expect(account.privateKey).toBe("");
78
- expect(account.publicKey).toBe("");
79
- expect(account.relays).toContain("wss://relay.damus.io");
80
- expect(account.relays).toContain("wss://nos.lol");
81
- });
82
-
83
- it("handles disabled channel", () => {
84
- const cfg = {
85
- channels: {
86
- nostr: {
87
- enabled: false,
88
- privateKey: TEST_PRIVATE_KEY,
89
- },
90
- },
91
- };
92
- const account = resolveNostrAccount({ cfg });
93
-
94
- expect(account.enabled).toBe(false);
95
- expect(account.configured).toBe(true);
96
- });
97
-
98
- it("handles custom accountId parameter", () => {
99
- const cfg = {
100
- channels: {
101
- nostr: { privateKey: TEST_PRIVATE_KEY },
102
- },
103
- };
104
- const account = resolveNostrAccount({ cfg, accountId: "custom" });
105
-
106
- expect(account.accountId).toBe("custom");
107
- });
108
-
109
- it("handles allowFrom config", () => {
110
- const cfg = {
111
- channels: {
112
- nostr: {
113
- privateKey: TEST_PRIVATE_KEY,
114
- allowFrom: ["npub1test", "0123456789abcdef"],
115
- },
116
- },
117
- };
118
- const account = resolveNostrAccount({ cfg });
119
-
120
- expect(account.config.allowFrom).toEqual(["npub1test", "0123456789abcdef"]);
121
- });
122
-
123
- it("handles invalid private key gracefully", () => {
124
- const cfg = {
125
- channels: {
126
- nostr: {
127
- privateKey: "invalid-key",
128
- },
129
- },
130
- };
131
- const account = resolveNostrAccount({ cfg });
132
-
133
- expect(account.configured).toBe(true); // key is present
134
- expect(account.publicKey).toBe(""); // but can't derive pubkey
135
- });
136
-
137
- it("preserves all config options", () => {
138
- const cfg = {
139
- channels: {
140
- nostr: {
141
- privateKey: TEST_PRIVATE_KEY,
142
- name: "Bot",
143
- enabled: true,
144
- relays: ["wss://relay1", "wss://relay2"],
145
- dmPolicy: "allowlist" as const,
146
- allowFrom: ["pubkey1", "pubkey2"],
147
- },
148
- },
149
- };
150
- const account = resolveNostrAccount({ cfg });
151
-
152
- expect(account.config).toEqual({
153
- privateKey: TEST_PRIVATE_KEY,
154
- name: "Bot",
155
- enabled: true,
156
- relays: ["wss://relay1", "wss://relay2"],
157
- dmPolicy: "allowlist",
158
- allowFrom: ["pubkey1", "pubkey2"],
159
- });
160
- });
161
- });
@@ -1,99 +0,0 @@
1
- import type { ClawdbotConfig } from "clawdbot/plugin-sdk";
2
- import { getPublicKeyFromPrivate } from "./nostr-bus.js";
3
- import { DEFAULT_RELAYS } from "./nostr-bus.js";
4
- import type { NostrProfile } from "./config-schema.js";
5
-
6
- export interface NostrAccountConfig {
7
- enabled?: boolean;
8
- name?: string;
9
- privateKey?: string;
10
- relays?: string[];
11
- dmPolicy?: "pairing" | "allowlist" | "open" | "disabled";
12
- allowFrom?: Array<string | number>;
13
- profile?: NostrProfile;
14
- }
15
-
16
- export interface ResolvedNostrAccount {
17
- accountId: string;
18
- name?: string;
19
- enabled: boolean;
20
- configured: boolean;
21
- privateKey: string;
22
- publicKey: string;
23
- relays: string[];
24
- profile?: NostrProfile;
25
- config: NostrAccountConfig;
26
- }
27
-
28
- const DEFAULT_ACCOUNT_ID = "default";
29
-
30
- /**
31
- * List all configured Nostr account IDs
32
- */
33
- export function listNostrAccountIds(cfg: ClawdbotConfig): string[] {
34
- const nostrCfg = (cfg.channels as Record<string, unknown> | undefined)?.nostr as
35
- | NostrAccountConfig
36
- | undefined;
37
-
38
- // If privateKey is configured at top level, we have a default account
39
- if (nostrCfg?.privateKey) {
40
- return [DEFAULT_ACCOUNT_ID];
41
- }
42
-
43
- return [];
44
- }
45
-
46
- /**
47
- * Get the default account ID
48
- */
49
- export function resolveDefaultNostrAccountId(cfg: ClawdbotConfig): string {
50
- const ids = listNostrAccountIds(cfg);
51
- if (ids.includes(DEFAULT_ACCOUNT_ID)) return DEFAULT_ACCOUNT_ID;
52
- return ids[0] ?? DEFAULT_ACCOUNT_ID;
53
- }
54
-
55
- /**
56
- * Resolve a Nostr account from config
57
- */
58
- export function resolveNostrAccount(opts: {
59
- cfg: ClawdbotConfig;
60
- accountId?: string | null;
61
- }): ResolvedNostrAccount {
62
- const accountId = opts.accountId ?? DEFAULT_ACCOUNT_ID;
63
- const nostrCfg = (opts.cfg.channels as Record<string, unknown> | undefined)?.nostr as
64
- | NostrAccountConfig
65
- | undefined;
66
-
67
- const baseEnabled = nostrCfg?.enabled !== false;
68
- const privateKey = nostrCfg?.privateKey ?? "";
69
- const configured = Boolean(privateKey.trim());
70
-
71
- let publicKey = "";
72
- if (configured) {
73
- try {
74
- publicKey = getPublicKeyFromPrivate(privateKey);
75
- } catch {
76
- // Invalid key - leave publicKey empty, configured will indicate issues
77
- }
78
- }
79
-
80
- return {
81
- accountId,
82
- name: nostrCfg?.name?.trim() || undefined,
83
- enabled: baseEnabled,
84
- configured,
85
- privateKey,
86
- publicKey,
87
- relays: nostrCfg?.relays ?? DEFAULT_RELAYS,
88
- profile: nostrCfg?.profile,
89
- config: {
90
- enabled: nostrCfg?.enabled,
91
- name: nostrCfg?.name,
92
- privateKey: nostrCfg?.privateKey,
93
- relays: nostrCfg?.relays,
94
- dmPolicy: nostrCfg?.dmPolicy,
95
- allowFrom: nostrCfg?.allowFrom,
96
- profile: nostrCfg?.profile,
97
- },
98
- };
99
- }
@@ -1,5 +0,0 @@
1
- // Test setup file for nostr extension
2
- import { vi } from "vitest";
3
-
4
- // Mock console.error to suppress noise in tests
5
- vi.spyOn(console, "error").mockImplementation(() => {});
@@ -1,25 +0,0 @@
1
- # OpenProse (plugin)
2
-
3
- Adds the OpenProse skill pack and `/prose` slash command.
4
-
5
- ## Enable
6
-
7
- Bundled plugins are disabled by default. Enable this one:
8
-
9
- ```json
10
- {
11
- "plugins": {
12
- "entries": {
13
- "open-prose": { "enabled": true }
14
- }
15
- }
16
- }
17
- ```
18
-
19
- Restart the Gateway after enabling.
20
-
21
- ## What you get
22
-
23
- - `/prose` slash command (user-invocable skill)
24
- - OpenProse VM semantics (`.prose` programs + multi-agent orchestration)
25
- - Telemetry support (best-effort, per OpenProse spec)
@@ -1,11 +0,0 @@
1
- {
2
- "id": "open-prose",
3
- "name": "OpenProse",
4
- "description": "OpenProse VM skill pack with a /prose slash command.",
5
- "skills": ["./skills"],
6
- "configSchema": {
7
- "type": "object",
8
- "additionalProperties": false,
9
- "properties": {}
10
- }
11
- }
@@ -1,5 +0,0 @@
1
- import type { ClawdbotPluginApi } from "../../src/plugins/types.js";
2
-
3
- export default function register(_api: ClawdbotPluginApi) {
4
- // OpenProse is delivered via plugin-shipped skills.
5
- }
@@ -1,11 +0,0 @@
1
- {
2
- "name": "@clawdbot/open-prose",
3
- "version": "2026.1.25",
4
- "type": "module",
5
- "description": "OpenProse VM skill pack plugin (slash command + telemetry).",
6
- "clawdbot": {
7
- "extensions": [
8
- "./index.ts"
9
- ]
10
- }
11
- }
@@ -1,21 +0,0 @@
1
- MIT License
2
-
3
- Copyright (c) 2025 OpenProse
4
-
5
- Permission is hereby granted, free of charge, to any person obtaining a copy
6
- of this software and associated documentation files (the "Software"), to deal
7
- in the Software without restriction, including without limitation the rights
8
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
- copies of the Software, and to permit persons to whom the Software is
10
- furnished to do so, subject to the following conditions:
11
-
12
- The above copyright notice and this permission notice shall be included in all
13
- copies or substantial portions of the Software.
14
-
15
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
- SOFTWARE.
@@ -1,318 +0,0 @@
1
- ---
2
- name: prose
3
- description: OpenProse VM skill pack. Activate on any `prose` command, .prose files, or OpenProse mentions; orchestrates multi-agent workflows.
4
- metadata: {"clawdbot":{"emoji":"🪶","homepage":"https://www.prose.md"}}
5
- ---
6
-
7
- # OpenProse Skill
8
-
9
- OpenProse is a programming language for AI sessions. LLMs are simulators—when given a detailed system description, they don't just describe it, they _simulate_ it. The `prose.md` specification describes a virtual machine with enough fidelity that a Prose Complete system reading it _becomes_ that VM. Simulation with sufficient fidelity is implementation. **You are the Prose Complete system.**
10
-
11
- ## Clawdbot Runtime Mapping
12
-
13
- - **Task tool** in the upstream spec == Clawdbot `sessions_spawn`
14
- - **File I/O** == Clawdbot `read`/`write`
15
- - **Remote fetch** == Clawdbot `web_fetch` (or `exec` with curl when POST is required)
16
-
17
- ## When to Activate
18
-
19
- Activate this skill when the user:
20
-
21
- - **Uses ANY `prose` command** (e.g., `prose boot`, `prose run`, `prose compile`, `prose update`, `prose help`, etc.)
22
- - Asks to run a `.prose` file
23
- - Mentions "OpenProse" or "prose program"
24
- - Wants to orchestrate multiple AI agents from a script
25
- - Has a file with `session "..."` or `agent name:` syntax
26
- - Wants to create a reusable workflow
27
-
28
- ## Command Routing
29
-
30
- When a user invokes `prose <command>`, intelligently route based on intent:
31
-
32
- | Command | Action |
33
- |---------|--------|
34
- | `prose help` | Load `help.md`, guide user to what they need |
35
- | `prose run <file>` | Load VM (`prose.md` + state backend), execute the program |
36
- | `prose run handle/slug` | Fetch from registry, then execute (see Remote Programs below) |
37
- | `prose compile <file>` | Load `compiler.md`, validate the program |
38
- | `prose update` | Run migration (see Migration section below) |
39
- | `prose examples` | Show or run example programs from `examples/` |
40
- | Other | Intelligently interpret based on context |
41
-
42
- ### Important: Single Skill
43
-
44
- There is only ONE skill: `open-prose`. There are NO separate skills like `prose-run`, `prose-compile`, or `prose-boot`. All `prose` commands route through this single skill.
45
-
46
- ### Resolving Example References
47
-
48
- **Examples are bundled in `examples/` (same directory as this file).** When users reference examples by name (e.g., "run the gastown example"):
49
-
50
- 1. Read `examples/` to list available files
51
- 2. Match by partial name, keyword, or number
52
- 3. Run with: `prose run examples/28-gas-town.prose`
53
-
54
- **Common examples by keyword:**
55
- | Keyword | File |
56
- |---------|------|
57
- | hello, hello world | `examples/01-hello-world.prose` |
58
- | gas town, gastown | `examples/28-gas-town.prose` |
59
- | captain, chair | `examples/29-captains-chair.prose` |
60
- | forge, browser | `examples/37-the-forge.prose` |
61
- | parallel | `examples/16-parallel-reviews.prose` |
62
- | pipeline | `examples/21-pipeline-operations.prose` |
63
- | error, retry | `examples/22-error-handling.prose` |
64
-
65
- ### Remote Programs
66
-
67
- You can run any `.prose` program from a URL or registry reference:
68
-
69
- ```bash
70
- # Direct URL — any fetchable URL works
71
- prose run https://raw.githubusercontent.com/openprose/prose/main/skills/open-prose/examples/48-habit-miner.prose
72
-
73
- # Registry shorthand — handle/slug resolves to p.prose.md
74
- prose run irl-danb/habit-miner
75
- prose run alice/code-review
76
- ```
77
-
78
- **Resolution rules:**
79
-
80
- | Input | Resolution |
81
- |-------|------------|
82
- | Starts with `http://` or `https://` | Fetch directly from URL |
83
- | Contains `/` but no protocol | Resolve to `https://p.prose.md/{path}` |
84
- | Otherwise | Treat as local file path |
85
-
86
- **Steps for remote programs:**
87
-
88
- 1. Apply resolution rules above
89
- 2. Fetch the `.prose` content
90
- 3. Load the VM and execute as normal
91
-
92
- This same resolution applies to `use` statements inside `.prose` files:
93
-
94
- ```prose
95
- use "https://example.com/my-program.prose" # Direct URL
96
- use "alice/research" as research # Registry shorthand
97
- ```
98
-
99
- ---
100
-
101
- ## File Locations
102
-
103
- **Do NOT search for OpenProse documentation files.** All skill files are co-located with this SKILL.md file:
104
-
105
- | File | Location | Purpose |
106
- | ------------------------- | --------------------------- | ----------------------------------------- |
107
- | `prose.md` | Same directory as this file | VM semantics (load to run programs) |
108
- | `help.md` | Same directory as this file | Help, FAQs, onboarding (load for `prose help`) |
109
- | `state/filesystem.md` | Same directory as this file | File-based state (default, load with VM) |
110
- | `state/in-context.md` | Same directory as this file | In-context state (on request) |
111
- | `state/sqlite.md` | Same directory as this file | SQLite state (experimental, on request) |
112
- | `state/postgres.md` | Same directory as this file | PostgreSQL state (experimental, on request) |
113
- | `compiler.md` | Same directory as this file | Compiler/validator (load only on request) |
114
- | `guidance/patterns.md` | Same directory as this file | Best practices (load when writing .prose) |
115
- | `guidance/antipatterns.md`| Same directory as this file | What to avoid (load when writing .prose) |
116
- | `examples/` | Same directory as this file | 37 example programs |
117
-
118
- **User workspace files** (these ARE in the user's project):
119
-
120
- | File/Directory | Location | Purpose |
121
- | ---------------- | ------------------------ | ----------------------------------- |
122
- | `.prose/.env` | User's working directory | Config (key=value format) |
123
- | `.prose/runs/` | User's working directory | Runtime state for file-based mode |
124
- | `.prose/agents/` | User's working directory | Project-scoped persistent agents |
125
- | `*.prose` files | User's project | User-created programs to execute |
126
-
127
- **User-level files** (in user's home directory, shared across all projects):
128
-
129
- | File/Directory | Location | Purpose |
130
- | ----------------- | ---------------- | ---------------------------------------- |
131
- | `~/.prose/agents/`| User's home dir | User-scoped persistent agents (cross-project) |
132
-
133
- When you need to read `prose.md` or `compiler.md`, read them from the same directory where you found this SKILL.md file. Never search the user's workspace for these files.
134
-
135
- ---
136
-
137
- ## Core Documentation
138
-
139
- | File | Purpose | When to Load |
140
- | --------------------- | -------------------- | ---------------------------------------------- |
141
- | `prose.md` | VM / Interpreter | Always load to run programs |
142
- | `state/filesystem.md` | File-based state | Load with VM (default) |
143
- | `state/in-context.md` | In-context state | Only if user requests `--in-context` or says "use in-context state" |
144
- | `state/sqlite.md` | SQLite state (experimental) | Only if user requests `--state=sqlite` (requires sqlite3 CLI) |
145
- | `state/postgres.md` | PostgreSQL state (experimental) | Only if user requests `--state=postgres` (requires psql + PostgreSQL) |
146
- | `compiler.md` | Compiler / Validator | **Only** when user asks to compile or validate |
147
- | `guidance/patterns.md` | Best practices | Load when **writing** new .prose files |
148
- | `guidance/antipatterns.md` | What to avoid | Load when **writing** new .prose files |
149
-
150
- ### Authoring Guidance
151
-
152
- When the user asks you to **write or create** a new `.prose` file, load the guidance files:
153
- - `guidance/patterns.md` — Proven patterns for robust, efficient programs
154
- - `guidance/antipatterns.md` — Common mistakes to avoid
155
-
156
- Do **not** load these when running or compiling—they're for authoring only.
157
-
158
- ### State Modes
159
-
160
- OpenProse supports three state management approaches:
161
-
162
- | Mode | When to Use | State Location |
163
- |------|-------------|----------------|
164
- | **filesystem** (default) | Complex programs, resumption needed, debugging | `.prose/runs/{id}/` files |
165
- | **in-context** | Simple programs (<30 statements), no persistence needed | Conversation history |
166
- | **sqlite** (experimental) | Queryable state, atomic transactions, flexible schema | `.prose/runs/{id}/state.db` |
167
- | **postgres** (experimental) | True concurrent writes, external integrations, team collaboration | PostgreSQL database |
168
-
169
- **Default behavior:** When loading `prose.md`, also load `state/filesystem.md`. This is the recommended mode for most programs.
170
-
171
- **Switching modes:** If the user says "use in-context state" or passes `--in-context`, load `state/in-context.md` instead.
172
-
173
- **Experimental SQLite mode:** If the user passes `--state=sqlite` or says "use sqlite state", load `state/sqlite.md`. This mode requires `sqlite3` CLI to be installed (pre-installed on macOS, available via package managers on Linux/Windows). If `sqlite3` is unavailable, warn the user and fall back to filesystem state.
174
-
175
- **Experimental PostgreSQL mode:** If the user passes `--state=postgres` or says "use postgres state":
176
-
177
- **⚠️ Security Note:** Database credentials in `OPENPROSE_POSTGRES_URL` are passed to subagent sessions and visible in logs. Advise users to use a dedicated database with limited-privilege credentials. See `state/postgres.md` for secure setup guidance.
178
-
179
- 1. **Check for connection configuration first:**
180
- ```bash
181
- # Check .prose/.env for OPENPROSE_POSTGRES_URL
182
- cat .prose/.env 2>/dev/null | grep OPENPROSE_POSTGRES_URL
183
- # Or check environment variable
184
- echo $OPENPROSE_POSTGRES_URL
185
- ```
186
-
187
- 2. **If connection string exists, verify connectivity:**
188
- ```bash
189
- psql "$OPENPROSE_POSTGRES_URL" -c "SELECT 1" 2>&1
190
- ```
191
-
192
- 3. **If not configured or connection fails, advise the user:**
193
- ```
194
- ⚠️ PostgreSQL state requires a connection URL.
195
-
196
- To configure:
197
- 1. Set up a PostgreSQL database (Docker, local, or cloud)
198
- 2. Add connection string to .prose/.env:
199
-
200
- echo "OPENPROSE_POSTGRES_URL=postgresql://user:pass@localhost:5432/prose" >> .prose/.env
201
-
202
- Quick Docker setup:
203
- docker run -d --name prose-pg -e POSTGRES_DB=prose -e POSTGRES_HOST_AUTH_METHOD=trust -p 5432:5432 postgres:16
204
- echo "OPENPROSE_POSTGRES_URL=postgresql://postgres@localhost:5432/prose" >> .prose/.env
205
-
206
- See state/postgres.md for detailed setup options.
207
- ```
208
-
209
- 4. **Only after successful connection check, load `state/postgres.md`**
210
-
211
- This mode requires both `psql` CLI and a running PostgreSQL server. If either is unavailable, warn and offer fallback to filesystem state.
212
-
213
- **Context warning:** `compiler.md` is large. Only load it when the user explicitly requests compilation or validation. After compiling, recommend `/compact` or a new session before running—don't keep both docs in context.
214
-
215
- ## Examples
216
-
217
- The `examples/` directory contains 37 example programs:
218
-
219
- - **01-08**: Basics (hello world, research, code review, debugging)
220
- - **09-12**: Agents and skills
221
- - **13-15**: Variables and composition
222
- - **16-19**: Parallel execution
223
- - **20-21**: Loops and pipelines
224
- - **22-23**: Error handling
225
- - **24-27**: Advanced (choice, conditionals, blocks, interpolation)
226
- - **28**: Gas Town (multi-agent orchestration)
227
- - **29-31**: Captain's chair pattern (persistent orchestrator)
228
- - **33-36**: Production workflows (PR auto-fix, content pipeline, feature factory, bug hunter)
229
- - **37**: The Forge (build a browser from scratch)
230
-
231
- Start with `01-hello-world.prose` or try `37-the-forge.prose` to watch AI build a web browser.
232
-
233
- ## Execution
234
-
235
- When first invoking the OpenProse VM in a session, display this banner:
236
-
237
- ```
238
- ┌─────────────────────────────────────┐
239
- │ ◇ OpenProse VM ◇ │
240
- │ A new kind of computer │
241
- └─────────────────────────────────────┘
242
- ```
243
-
244
- To execute a `.prose` file, you become the OpenProse VM:
245
-
246
- 1. **Read `prose.md`** — this document defines how you embody the VM
247
- 2. **You ARE the VM** — your conversation is its memory, your tools are its instructions
248
- 3. **Spawn sessions** — each `session` statement triggers a Task tool call
249
- 4. **Narrate state** — use the narration protocol to track execution ([Position], [Binding], [Success], etc.)
250
- 5. **Evaluate intelligently** — `**...**` markers require your judgment
251
-
252
- ## Help & FAQs
253
-
254
- For syntax reference, FAQs, and getting started guidance, load `help.md`.
255
-
256
- ---
257
-
258
- ## Migration (`prose update`)
259
-
260
- When a user invokes `prose update`, check for legacy file structures and migrate them to the current format.
261
-
262
- ### Legacy Paths to Check
263
-
264
- | Legacy Path | Current Path | Notes |
265
- |-------------|--------------|-------|
266
- | `.prose/state.json` | `.prose/.env` | Convert JSON to key=value format |
267
- | `.prose/execution/` | `.prose/runs/` | Rename directory |
268
-
269
- ### Migration Steps
270
-
271
- 1. **Check for `.prose/state.json`**
272
- - If exists, read the JSON content
273
- - Convert to `.env` format:
274
- ```json
275
- {"OPENPROSE_TELEMETRY": "enabled", "USER_ID": "user-xxx", "SESSION_ID": "sess-xxx"}
276
- ```
277
- becomes:
278
- ```env
279
- OPENPROSE_TELEMETRY=enabled
280
- USER_ID=user-xxx
281
- SESSION_ID=sess-xxx
282
- ```
283
- - Write to `.prose/.env`
284
- - Delete `.prose/state.json`
285
-
286
- 2. **Check for `.prose/execution/`**
287
- - If exists, rename to `.prose/runs/`
288
- - The internal structure of run directories may also have changed; migration of individual run state is best-effort
289
-
290
- 3. **Create `.prose/agents/` if missing**
291
- - This is a new directory for project-scoped persistent agents
292
-
293
- ### Migration Output
294
-
295
- ```
296
- 🔄 Migrating OpenProse workspace...
297
- ✓ Converted .prose/state.json → .prose/.env
298
- ✓ Renamed .prose/execution/ → .prose/runs/
299
- ✓ Created .prose/agents/
300
- ✅ Migration complete. Your workspace is up to date.
301
- ```
302
-
303
- If no legacy files are found:
304
- ```
305
- ✅ Workspace already up to date. No migration needed.
306
- ```
307
-
308
- ### Skill File References (for maintainers)
309
-
310
- These documentation files were renamed in the skill itself (not user workspace):
311
-
312
- | Legacy Name | Current Name |
313
- |-------------|--------------|
314
- | `docs.md` | `compiler.md` |
315
- | `patterns.md` | `guidance/patterns.md` |
316
- | `antipatterns.md` | `guidance/antipatterns.md` |
317
-
318
- If you encounter references to the old names in user prompts or external docs, map them to the current paths.