antenna-fyi 1.2.12 ā 1.2.14
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/lib/cli.js +5 -5
- package/lib/core.js +2 -0
- package/lib/hermes-plugin/tools.py +7 -0
- package/package.json +1 -1
- package/skill/EVENTS.md +8 -3
- package/skill/SKILL.md +4 -0
package/lib/cli.js
CHANGED
|
@@ -178,8 +178,8 @@ export async function handleEvent(f) {
|
|
|
178
178
|
}
|
|
179
179
|
|
|
180
180
|
if (f.create || (!f.join && !f.scan && !f.end && f.name)) {
|
|
181
|
-
if (!f.name) return console.error("Usage: antenna event --create --name 'AI Meetup' [--desc 'description'] [--og-image 'url']");
|
|
182
|
-
const result = await createEvent({ name: f.name, device_id: f.id || null, lat: f.lat ? +f.lat : undefined, lng: f.lng ? +f.lng : undefined, description: f.desc || undefined, og_image: f['og-image'] || undefined });
|
|
181
|
+
if (!f.name) return console.error("Usage: antenna event --create --name 'AI Meetup' [--desc 'description'] [--og-image 'url'] [--requires-approval] [--screening-questions 'Q1|Q2']");
|
|
182
|
+
const result = await createEvent({ name: f.name, device_id: f.id || null, lat: f.lat ? +f.lat : undefined, lng: f.lng ? +f.lng : undefined, description: f.desc || undefined, og_image: f['og-image'] || undefined, requires_approval: f['requires-approval'] === true || f['requires-approval'] === 'true' || undefined, screening_questions: f['screening-questions'] ? f['screening-questions'].split('|') : undefined });
|
|
183
183
|
console.log(`\nš Event created!\n`);
|
|
184
184
|
console.log(` Name: ${result.name}`);
|
|
185
185
|
console.log(` Code: ${result.code}`);
|
|
@@ -190,7 +190,7 @@ export async function handleEvent(f) {
|
|
|
190
190
|
|
|
191
191
|
if (f.join) {
|
|
192
192
|
if (!f.code || !f.id) return console.error("Usage: antenna event --join --code abc123 --id telegram:123");
|
|
193
|
-
const result = await joinEvent({ code: f.code, device_id: f.id });
|
|
193
|
+
const result = await joinEvent({ code: f.code, device_id: f.id, lat: f.lat ? +f.lat : undefined, lng: f.lng ? +f.lng : undefined, application_context: f['application-context'] || undefined });
|
|
194
194
|
if (result.joined) {
|
|
195
195
|
console.log(`\nā
Joined "${result.name}" (${result.code})\n`);
|
|
196
196
|
} else {
|
|
@@ -215,7 +215,7 @@ export async function handleEvent(f) {
|
|
|
215
215
|
}
|
|
216
216
|
|
|
217
217
|
console.log(`Usage:
|
|
218
|
-
antenna event --create --name 'AI Meetup' [--id telegram:123] [--desc 'description'] [--og-image 'url']
|
|
218
|
+
antenna event --create --name 'AI Meetup' [--id telegram:123] [--desc 'description'] [--og-image 'url'] [--requires-approval] [--screening-questions 'Q1|Q2']
|
|
219
219
|
antenna event --join --code abc123 --id telegram:123
|
|
220
220
|
antenna event --scan --code abc123 [--id telegram:123]
|
|
221
221
|
antenna event --checkin --code abc123 --id telegram:123 [--lat 34.05 --lng -118.24]
|
|
@@ -606,7 +606,7 @@ Usage:
|
|
|
606
606
|
antenna pass --id telegram:123 --target telegram:789 (or --ref 1)
|
|
607
607
|
antenna matches --id telegram:123
|
|
608
608
|
antenna discover --id telegram:123
|
|
609
|
-
antenna event --create --name 'AI Meetup' [--desc '...'] [--og-image 'url'] | --join --code abc123 | --scan --code abc123 | --end --code abc123 --id telegram:123 | --upload-image --code abc123 --file /path/to/image.png
|
|
609
|
+
antenna event --create --name 'AI Meetup' [--desc '...'] [--og-image 'url'] [--requires-approval] [--screening-questions 'Q1|Q2'] | --join --code abc123 | --scan --code abc123 | --end --code abc123 --id telegram:123 | --upload-image --code abc123 --file /path/to/image.png | --update --code abc123 --name 'New Name' | --approve --code abc123 --ref 1 | --reject --code abc123 --ref 1 | --add-host --code abc123 --ref 1
|
|
610
610
|
antenna watch --id telegram:123 Watch for new matches in real-time (Ctrl+C to stop)
|
|
611
611
|
antenna bind --id telegram:123
|
|
612
612
|
antenna serve Start MCP server (stdio transport)
|
package/lib/core.js
CHANGED
|
@@ -555,6 +555,8 @@ export async function joinEvent({ code, device_id, lat, lng, application_context
|
|
|
555
555
|
const { data, error } = await sb.rpc("join_event", {
|
|
556
556
|
p_code: code,
|
|
557
557
|
p_device_id: device_id,
|
|
558
|
+
p_lat: (lat != null && lng != null) ? fuzzyCoord(lat, lng).lat : null,
|
|
559
|
+
p_lng: (lat != null && lng != null) ? fuzzyCoord(lat, lng).lng : null,
|
|
558
560
|
p_application_context: application_context || null,
|
|
559
561
|
});
|
|
560
562
|
if (error) throw new Error(error.message);
|
|
@@ -383,6 +383,10 @@ def handle_event_create(params: dict) -> str:
|
|
|
383
383
|
rpc_params["p_description"] = params["description"]
|
|
384
384
|
if params.get("og_image"):
|
|
385
385
|
rpc_params["p_og_image"] = params["og_image"]
|
|
386
|
+
if params.get("requires_approval"):
|
|
387
|
+
rpc_params["p_requires_approval"] = params["requires_approval"]
|
|
388
|
+
if params.get("screening_questions"):
|
|
389
|
+
rpc_params["p_screening_questions"] = params["screening_questions"]
|
|
386
390
|
|
|
387
391
|
resp = sb.rpc("create_event", rpc_params).execute()
|
|
388
392
|
data = resp.data or {}
|
|
@@ -423,6 +427,9 @@ def handle_event_join(params: dict) -> str:
|
|
|
423
427
|
resp = sb.rpc("join_event", {
|
|
424
428
|
"p_device_id": did,
|
|
425
429
|
"p_code": params["code"],
|
|
430
|
+
"p_lat": lat,
|
|
431
|
+
"p_lng": lng,
|
|
432
|
+
"p_application_context": params.get("application_context"),
|
|
426
433
|
}).execute()
|
|
427
434
|
data = resp.data or {}
|
|
428
435
|
|
package/package.json
CHANGED
package/skill/EVENTS.md
CHANGED
|
@@ -33,6 +33,10 @@ Create an event. Returns a shareable link (antenna.fyi/events/CODE).
|
|
|
33
33
|
- `starts_at`, `ends_at`: optional time range (default: now to +12h)
|
|
34
34
|
- `description`: optional event description
|
|
35
35
|
- `og_image`: optional OG image URL for social sharing preview
|
|
36
|
+
- `requires_approval`: boolean, default false. If true, participants must be approved by the organizer before they become visible.
|
|
37
|
+
- `screening_questions`: string array. Questions to ask applicants. Agent should collect answers via conversation and submit as `application_context` when joining.
|
|
38
|
+
|
|
39
|
+
**When the user says anything about "å®”ę¹" / "approval" / "ēé" / "ę„å蔨"**, set `requires_approval: true` and ask what screening questions they want.
|
|
36
40
|
|
|
37
41
|
**GPS flow for events:** If the user doesn't provide coordinates, generate a bind link (`antenna_bind` with `purpose="event"` and `event_code`) and ask them to open it at the event location. The GPS will update the event's coordinates, NOT the user's profile.
|
|
38
42
|
|
|
@@ -79,9 +83,10 @@ Generate a GPS link for setting event location.
|
|
|
79
83
|
|
|
80
84
|
### When someone says "create an event"
|
|
81
85
|
1. Ask for event name (required) and description (optional)
|
|
82
|
-
2.
|
|
83
|
-
3.
|
|
84
|
-
4.
|
|
86
|
+
2. **Ask if participants need approval** ("Do you want to review and approve participants before they join?"). If yes, ask what screening questions to include.
|
|
87
|
+
3. Call `antenna_event_create` with `requires_approval` and `screening_questions` if applicable
|
|
88
|
+
4. If no GPS provided, call `antenna_bind(purpose="event", event_code=CODE)` and send the link
|
|
89
|
+
5. Share the event URL with the user
|
|
85
90
|
|
|
86
91
|
### When someone shares an event link
|
|
87
92
|
1. Extract the code from `antenna.fyi/events/CODE`
|
package/skill/SKILL.md
CHANGED
|
@@ -302,6 +302,10 @@ Create an event. Returns a shareable link (antenna.fyi/events/CODE).
|
|
|
302
302
|
- `starts_at`, `ends_at`: optional time range (default: now to +12h)
|
|
303
303
|
- `description`: optional event description
|
|
304
304
|
- `og_image`: optional OG image URL for social sharing preview
|
|
305
|
+
- `requires_approval`: boolean, default false. If true, participants need organizer approval.
|
|
306
|
+
- `screening_questions`: string array. Questions for applicants.
|
|
307
|
+
|
|
308
|
+
**When the user mentions "å®”ę¹" / "approval" / "ēé" / "ę„å蔨"**, set `requires_approval: true` and ask what questions they want to screen with.
|
|
305
309
|
|
|
306
310
|
**GPS flow for events:** If the user doesn't provide coordinates, generate a bind link (`antenna_bind`) and ask them to open it at the event location. Once GPS comes in, use those coordinates for the event's `lat`/`lng` ā do NOT treat this as the user's personal location. The bind link GPS for event creation goes to the event, not the user's profile. Only use `antenna_checkin` when the user wants to update their own location.
|
|
307
311
|
|