truematch-plugin 0.1.17 → 0.1.19

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/plugin.js CHANGED
@@ -149,7 +149,7 @@ export default {
149
149
  id: "truematch",
150
150
  name: "TrueMatch",
151
151
  description: "AI agent dating network — matched on who you actually are, not who you think you are",
152
- version: "0.1.17",
152
+ version: "0.1.18",
153
153
  kind: "lifecycle",
154
154
  register(api) {
155
155
  // ── Tool: /truematch-prefs ─────────────────────────────────────────────────
@@ -187,11 +187,14 @@ export default {
187
187
  pluginState.needsPreferences = true;
188
188
  }
189
189
  // Register the TrueMatch background cron job if not already present.
190
- // Deferred 2s to avoid the gateway:startup race condition (openclaw issue #30257)
190
+ // Deferred to avoid the gateway:startup race condition (openclaw issue #30257)
191
191
  // where the cron subsystem may not be ready immediately after startup.
192
+ // Delay is configurable via TRUEMATCH_CRON_REGISTER_DELAY_MS for slow environments
193
+ // (e.g. network filesystems). Defaults to 2s.
192
194
  // Uses spawnSync with an argument array (not execSync with a shell string)
193
195
  // to avoid shell injection. Non-fatal — cron may not be available in all
194
196
  // environments (e.g. local dev without OpenClaw installed).
197
+ const cronDelay = parseInt(process.env["TRUEMATCH_CRON_REGISTER_DELAY_MS"] ?? "2000", 10);
195
198
  setTimeout(() => {
196
199
  try {
197
200
  const openclawStateDir = process.env["OPENCLAW_STATE_DIR"] ??
@@ -207,15 +210,18 @@ export default {
207
210
  : (raw.jobs ?? []);
208
211
  const alreadyRegistered = jobs.some((j) => j.name === "truematch-heartbeat");
209
212
  if (!alreadyRegistered) {
210
- spawnSync("openclaw", [
213
+ const FIFTEEN_MINUTES_MS = 15 * 60 * 1000; // 900000
214
+ const result = spawnSync("openclaw", [
211
215
  "cron",
212
216
  "add",
213
217
  "--name",
214
218
  "truematch-heartbeat",
215
219
  "--every",
216
- "900000",
220
+ String(FIFTEEN_MINUTES_MS),
217
221
  "--session",
218
222
  "isolated",
223
+ // "next-heartbeat": job fires on the next scheduled gateway heartbeat
224
+ // tick rather than immediately, avoiding burst load on startup.
219
225
  "--wake",
220
226
  "next-heartbeat",
221
227
  "--message",
@@ -226,13 +232,18 @@ export default {
226
232
  "for each JSONL line received, register and process per the negotiation protocol, " +
227
233
  "truematch match --status. " +
228
234
  "Only surface a confirmed match — do not send a message if there is nothing to report.",
229
- ], { stdio: "pipe" });
235
+ ], { stdio: "pipe", timeout: 5000 });
236
+ // spawnSync does not throw on ENOENT — check error explicitly
237
+ if (result.error) {
238
+ // openclaw not on PATH or failed to start — non-fatal
239
+ return;
240
+ }
230
241
  }
231
242
  }
232
243
  catch {
233
- // Non-fatal — silently skip if cron is unavailable
244
+ // Non-fatal — silently skip on JSON parse errors or other failures
234
245
  }
235
- }, 2000);
246
+ }, cronDelay);
236
247
  }, {
237
248
  name: "TrueMatch startup check",
238
249
  description: "Detects whether TrueMatch setup and preferences are configured, and registers background cron job",
@@ -1,7 +1,7 @@
1
1
  {
2
- "id": "truematch",
3
- "name": "truematch",
4
- "version": "0.1.17",
2
+ "id": "truematch-plugin",
3
+ "name": "truematch-plugin",
4
+ "version": "0.1.19",
5
5
  "description": "AI agent dating network — matched on who you actually are, not who you think you are",
6
6
  "homepage": "https://clawmatch.org",
7
7
  "kind": "lifecycle",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "truematch-plugin",
3
- "version": "0.1.17",
3
+ "version": "0.1.19",
4
4
  "description": "TrueMatch OpenClaw plugin — AI agent dating network skill",
5
5
  "license": "MIT",
6
6
  "repository": {
@@ -59,5 +59,10 @@
59
59
  "engines": {
60
60
  "node": ">=20"
61
61
  },
62
- "packageManager": "pnpm@9.0.0"
62
+ "packageManager": "pnpm@9.0.0",
63
+ "openclaw": {
64
+ "extensions": [
65
+ "./dist/plugin.js"
66
+ ]
67
+ }
63
68
  }
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  name: truematch
3
3
  description: Participate in the TrueMatch AI agent dating network. Use when the user wants to opt in to TrueMatch, check their matching status, update their observed personality profile, or opt out.
4
- version: 0.1.17
4
+ version: 0.1.18
5
5
  metadata:
6
6
  openclaw:
7
7
  emoji: "💑"