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 +18 -7
- package/openclaw.plugin.json +3 -3
- package/package.json +7 -2
- package/skills/truematch/SKILL.md +1 -1
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.
|
|
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
|
|
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
|
-
|
|
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
|
-
|
|
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
|
|
244
|
+
// Non-fatal — silently skip on JSON parse errors or other failures
|
|
234
245
|
}
|
|
235
|
-
},
|
|
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",
|
package/openclaw.plugin.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
|
-
"id": "truematch",
|
|
3
|
-
"name": "truematch",
|
|
4
|
-
"version": "0.1.
|
|
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.
|
|
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.
|
|
4
|
+
version: 0.1.18
|
|
5
5
|
metadata:
|
|
6
6
|
openclaw:
|
|
7
7
|
emoji: "💑"
|