@cfio/cohort-sync 0.18.0 → 0.19.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.
package/dist/index.js CHANGED
@@ -13423,7 +13423,7 @@ function dumpCtx(ctx) {
13423
13423
  function dumpEvent(event) {
13424
13424
  return dumpCtx(event);
13425
13425
  }
13426
- var PLUGIN_VERSION = true ? "0.18.0" : "unknown";
13426
+ var PLUGIN_VERSION = true ? "0.19.0" : "unknown";
13427
13427
  function resolveGatewayToken(api) {
13428
13428
  const token = api.config?.gateway?.auth?.token;
13429
13429
  return typeof token === "string" ? token : null;
@@ -14304,6 +14304,42 @@ async function invokePairingApprove(params) {
14304
14304
  error: "pairing-approve via gateway-method is a stub; call openclaw pairing approve via Fly machines exec instead (see convex/cohortChannels.ts:runTelegramPairingApprove)"
14305
14305
  };
14306
14306
  }
14307
+ var ALLOWED_SEND_KINDS = /* @__PURE__ */ new Set([
14308
+ "telegram",
14309
+ "discord",
14310
+ "slack",
14311
+ "whatsapp"
14312
+ ]);
14313
+ var MAX_BODY_LENGTH = 4e3;
14314
+ var RECIPIENT_RE = /^[A-Za-z0-9@:_.+\-]{1,128}$/;
14315
+ async function invokeSendMessage(params) {
14316
+ const channelKind = typeof params.channelKind === "string" ? params.channelKind : "";
14317
+ const recipient = typeof params.recipient === "string" ? params.recipient : "";
14318
+ const body = typeof params.body === "string" ? params.body : "";
14319
+ const agentId = typeof params.agentId === "string" ? params.agentId : "";
14320
+ if (!ALLOWED_SEND_KINDS.has(channelKind)) {
14321
+ return { ok: false, error: `invalid channel kind: ${channelKind || "(empty)"}` };
14322
+ }
14323
+ if (!RECIPIENT_RE.test(recipient)) {
14324
+ return { ok: false, error: "invalid recipient (must be printable ASCII, \u2264128 chars, no shell metachars)" };
14325
+ }
14326
+ if (body.length === 0) {
14327
+ return { ok: false, error: "body is empty" };
14328
+ }
14329
+ if (body.length > MAX_BODY_LENGTH) {
14330
+ return { ok: false, error: `body too long (${body.length} > ${MAX_BODY_LENGTH})` };
14331
+ }
14332
+ if (agentId.length === 0 || agentId.length > 64) {
14333
+ return { ok: false, error: "agentId must be 1\u201364 chars" };
14334
+ }
14335
+ if (!/^[A-Za-z0-9_\-]+$/.test(agentId)) {
14336
+ return { ok: false, error: "agentId contains invalid characters" };
14337
+ }
14338
+ return {
14339
+ ok: false,
14340
+ error: "send-message via gateway-method is a stub; Convex invokes `openclaw agent --deliver` via Fly machines exec instead (see convex/agentOutbound.ts:_sendOne)"
14341
+ };
14342
+ }
14307
14343
  function registerGatewayMethods(api, getGatewayClient) {
14308
14344
  api.registerGatewayMethod(
14309
14345
  "cohort-sync/secrets-reload",
@@ -14328,6 +14364,18 @@ function registerGatewayMethods(api, getGatewayClient) {
14328
14364
  // write operation.
14329
14365
  { scope: "operator.write" }
14330
14366
  );
14367
+ api.registerGatewayMethod(
14368
+ "cohort-sync/send-message",
14369
+ async ({ respond, params }) => {
14370
+ const result = await invokeSendMessage(
14371
+ params ?? {}
14372
+ );
14373
+ respond(true, result);
14374
+ },
14375
+ // operator.write — outbound messaging is a mutating operator action,
14376
+ // same tier as channel attach/detach.
14377
+ { scope: "operator.write" }
14378
+ );
14331
14379
  }
14332
14380
 
14333
14381
  // src/pocket-guide.ts
@@ -55,5 +55,5 @@
55
55
  }
56
56
  }
57
57
  },
58
- "version": "0.18.0"
58
+ "version": "0.19.0"
59
59
  }
package/dist/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cfio/cohort-sync",
3
- "version": "0.18.0",
3
+ "version": "0.19.0",
4
4
  "description": "OpenClaw plugin — syncs agent telemetry, sessions, and activity to the Cohort dashboard",
5
5
  "type": "module",
6
6
  "main": "index.js",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cfio/cohort-sync",
3
- "version": "0.18.0",
3
+ "version": "0.19.0",
4
4
  "description": "OpenClaw plugin — syncs agent telemetry, sessions, and activity to the Cohort dashboard",
5
5
  "license": "MIT",
6
6
  "homepage": "https://docs.cohort.bot/gateway",