antenna-openclaw-plugin 0.6.1 → 0.7.1
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/index.ts +20 -5
- package/package.json +1 -1
- package/skills/antenna/SKILL.md +7 -10
package/index.ts
CHANGED
|
@@ -221,17 +221,17 @@ export default function register(api: any) {
|
|
|
221
221
|
api.registerTool({
|
|
222
222
|
name: "antenna_scan",
|
|
223
223
|
description:
|
|
224
|
-
"Scan for nearby people
|
|
224
|
+
"Scan for nearby people. If lat/lng are omitted, uses the location from the user's web GPS binding (antenna.fyi/locate). Returns raw profile cards — the agent decides who to recommend.",
|
|
225
225
|
parameters: {
|
|
226
226
|
type: "object",
|
|
227
227
|
properties: {
|
|
228
|
-
lat: { type: "number", description: "Latitude" },
|
|
229
|
-
lng: { type: "number", description: "Longitude" },
|
|
228
|
+
lat: { type: "number", description: "Latitude (optional if location was shared via web)" },
|
|
229
|
+
lng: { type: "number", description: "Longitude (optional if location was shared via web)" },
|
|
230
230
|
radius_m: { type: "number", description: "Search radius in meters (default: 500)" },
|
|
231
231
|
sender_id: { type: "string", description: "The sender's user ID (from message context)" },
|
|
232
232
|
channel: { type: "string", description: "The channel name (telegram, whatsapp, etc.)" },
|
|
233
233
|
},
|
|
234
|
-
required: ["
|
|
234
|
+
required: ["sender_id", "channel"],
|
|
235
235
|
},
|
|
236
236
|
async execute(_id: string, params: any) {
|
|
237
237
|
const cfg = getConfig(api);
|
|
@@ -243,7 +243,21 @@ export default function register(api: any) {
|
|
|
243
243
|
return ok({ nearby: [], message: "刚刚才扫描过,稍等一会儿再试。", rate_limited: true });
|
|
244
244
|
}
|
|
245
245
|
|
|
246
|
-
|
|
246
|
+
let lat = params.lat;
|
|
247
|
+
let lng = params.lng;
|
|
248
|
+
|
|
249
|
+
// If no coordinates, read from profile (web GPS bind)
|
|
250
|
+
if (lat == null || lng == null) {
|
|
251
|
+
const { data: loc } = await supabase.rpc("get_profile_location", { p_device_id: deviceId });
|
|
252
|
+
if (loc?.found) {
|
|
253
|
+
lat = loc.lat;
|
|
254
|
+
lng = loc.lng;
|
|
255
|
+
} else {
|
|
256
|
+
return ok({ nearby: [], message: "还没有位置信息。请先通过链接分享位置,或者发送位置消息。" });
|
|
257
|
+
}
|
|
258
|
+
}
|
|
259
|
+
|
|
260
|
+
const fuzzy = fuzzyCoords(lat, lng);
|
|
247
261
|
|
|
248
262
|
const { error: upsertErr } = await supabase.rpc("upsert_profile_location", {
|
|
249
263
|
p_device_id: deviceId, p_lng: fuzzy.lng, p_lat: fuzzy.lat,
|
|
@@ -333,6 +347,7 @@ export default function register(api: any) {
|
|
|
333
347
|
updated: true,
|
|
334
348
|
profile: { display_name: data.display_name, emoji: data.emoji,
|
|
335
349
|
line1: data.line1, line2: data.line2, line3: data.line3, visible: data.visible },
|
|
350
|
+
next_step: "IMPORTANT: Now call antenna_bind to generate a GPS link for the user. Do not skip this.",
|
|
336
351
|
});
|
|
337
352
|
},
|
|
338
353
|
});
|
package/package.json
CHANGED
package/skills/antenna/SKILL.md
CHANGED
|
@@ -19,21 +19,18 @@ Plugin 安装后,agent 应该**主动**开始引导,不要等用户问"怎
|
|
|
19
19
|
|
|
20
20
|
**第二步:聊天式填名片**(见下方详细流程)
|
|
21
21
|
|
|
22
|
-
|
|
22
|
+
**第三步:名片存好后,立刻调 antenna_bind**
|
|
23
23
|
|
|
24
|
-
|
|
24
|
+
**这一步是强制的。** 名片保存成功后,你**必须立刻**调用 `antenna_bind` 生成链接并发给用户。不要问用户要不要,不要等用户说什么,直接调。
|
|
25
25
|
|
|
26
|
-
**方式 1:生成绑定链接(推荐)**
|
|
27
26
|
调用 `antenna_bind` 生成链接,发给用户:
|
|
28
27
|
> "名片存好了 ✅ 点这个链接,在手机浏览器打开,允许定位就行:
|
|
29
28
|
> [链接]
|
|
30
29
|
> 我收到你的位置后会自动帮你看看附近有谁。"
|
|
31
30
|
|
|
32
|
-
|
|
33
|
-
如果用户在 Telegram/WhatsApp 里,可以直接发位置:
|
|
34
|
-
> "或者你也可以直接在聊天里点位置分享发给我。"
|
|
31
|
+
备选:如果用户在 Telegram/WhatsApp 里,也可以直接发位置消息。但优先用链接。
|
|
35
32
|
|
|
36
|
-
|
|
33
|
+
**⚠️ 如果你保存了名片但没有调 antenna_bind,你就没有完成 onboarding。**
|
|
37
34
|
|
|
38
35
|
## When to use
|
|
39
36
|
|
|
@@ -84,11 +81,11 @@ Check for mutual matches and contact info updates.
|
|
|
84
81
|
- Returns mutual matches with any contact info the other person shared
|
|
85
82
|
|
|
86
83
|
### `antenna_bind`
|
|
87
|
-
Generate a GPS binding link.
|
|
84
|
+
Generate a GPS binding link. **You MUST call this immediately after saving a profile.** Do not skip this step.
|
|
88
85
|
- `sender_id`, `channel`: from context
|
|
89
86
|
- Returns a URL like `https://www.antenna.fyi/locate?token=xxx`
|
|
90
|
-
- Send this link to the user — they open it on their phone, allow GPS, and their location is automatically shared
|
|
91
|
-
- **
|
|
87
|
+
- Send this link to the user — they open it on their phone, allow GPS, and their location is automatically shared
|
|
88
|
+
- **MANDATORY after profile save. Do not wait for user to ask.**
|
|
92
89
|
|
|
93
90
|
## Behavior guidelines
|
|
94
91
|
|