antenna-fyi 1.3.16 → 1.3.17
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/core.js +18 -18
- package/lib/mcp.js +5 -5
- package/package.json +1 -1
package/lib/core.js
CHANGED
|
@@ -106,9 +106,9 @@ export async function scan({ lat, lng, radius_m = 500, device_id, supabaseUrl, s
|
|
|
106
106
|
ref,
|
|
107
107
|
name: p.display_name || "匿名",
|
|
108
108
|
emoji: p.emoji || "👤",
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
109
|
+
personal_description: p.line1,
|
|
110
|
+
looking_for: p.line2,
|
|
111
|
+
conversation_style: p.line3,
|
|
112
112
|
distance_m: p.distance_m ?? p.dist_meters ?? null,
|
|
113
113
|
};
|
|
114
114
|
});
|
|
@@ -185,9 +185,9 @@ export async function scan({ lat, lng, radius_m = 500, device_id, supabaseUrl, s
|
|
|
185
185
|
|
|
186
186
|
export const PROFILE_FIELDS = {
|
|
187
187
|
display_name: { label: "显示名称", description: "How you want to be called" },
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
188
|
+
personal_description: { label: "个人描述", description: "Who you are and what you do", maxLength: 220, required: true },
|
|
189
|
+
looking_for: { label: "想认识的人", description: "The kind of people you want to meet", maxLength: 140 },
|
|
190
|
+
conversation_style: { label: "想要的交流方式", description: "The type of conversations you want", maxLength: 160 },
|
|
191
191
|
matching_context: { label: "匹配上下文", description: "Agent-generated rich context for better matching (not shown to others)", maxLength: 1000 },
|
|
192
192
|
interest_tags: { label: "兴趣标签", description: "Interest/topic tags shown on the card (up to 8)", maxItems: 8 },
|
|
193
193
|
city: { label: "国家/地区", description: "Country or region" },
|
|
@@ -418,9 +418,9 @@ export async function checkMatches({ device_id, supabaseUrl, supabaseKey }) {
|
|
|
418
418
|
_device_id: m.target_id,
|
|
419
419
|
name: m.name || "匿名",
|
|
420
420
|
emoji: m.emoji || "👤",
|
|
421
|
-
|
|
422
|
-
|
|
423
|
-
|
|
421
|
+
personal_description: m.line1,
|
|
422
|
+
looking_for: m.line2,
|
|
423
|
+
conversation_style: m.line3,
|
|
424
424
|
their_contact: m.their_contact || null,
|
|
425
425
|
you_shared: m.you_shared || null,
|
|
426
426
|
}));
|
|
@@ -431,9 +431,9 @@ export async function checkMatches({ device_id, supabaseUrl, supabaseKey }) {
|
|
|
431
431
|
_device_id: m.target_id,
|
|
432
432
|
name: m.name || "匿名",
|
|
433
433
|
emoji: m.emoji || "👤",
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
|
|
434
|
+
personal_description: m.line1,
|
|
435
|
+
looking_for: m.line2,
|
|
436
|
+
conversation_style: m.line3,
|
|
437
437
|
}));
|
|
438
438
|
|
|
439
439
|
const messages = [];
|
|
@@ -503,9 +503,9 @@ export async function discover({ device_id, supabaseUrl, supabaseKey }) {
|
|
|
503
503
|
ref,
|
|
504
504
|
name: p.display_name || "匿名",
|
|
505
505
|
emoji: p.emoji || "👤",
|
|
506
|
-
|
|
507
|
-
|
|
508
|
-
|
|
506
|
+
personal_description: p.line1,
|
|
507
|
+
looking_for: p.line2,
|
|
508
|
+
conversation_style: p.line3,
|
|
509
509
|
match_reason: reason,
|
|
510
510
|
});
|
|
511
511
|
}
|
|
@@ -694,9 +694,9 @@ export async function eventScan({ code, device_id, supabaseUrl, supabaseKey }) {
|
|
|
694
694
|
ref,
|
|
695
695
|
name: p.display_name || "匿名",
|
|
696
696
|
emoji: p.emoji || "👤",
|
|
697
|
-
|
|
698
|
-
|
|
699
|
-
|
|
697
|
+
personal_description: p.line1,
|
|
698
|
+
looking_for: p.line2,
|
|
699
|
+
conversation_style: p.line3,
|
|
700
700
|
checked_in: !!p.checked_in,
|
|
701
701
|
role: p.role || "participant",
|
|
702
702
|
status: p.status || "active",
|
package/lib/mcp.js
CHANGED
|
@@ -111,9 +111,9 @@ export async function startMcpServer() {
|
|
|
111
111
|
sender_id: z.string().describe("The sender's user ID"),
|
|
112
112
|
channel: z.string().describe("Channel name"),
|
|
113
113
|
display_name: z.string().optional().describe("Display name"),
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
114
|
+
personal_description: z.string().optional().describe("Personal description — who you are and what you do (max 220 chars)"),
|
|
115
|
+
looking_for: z.string().optional().describe("Looking for — the kind of people you want to meet (max 140 chars)"),
|
|
116
|
+
conversation_style: z.string().optional().describe("Conversation style — the type of conversations you want (max 160 chars)"),
|
|
117
117
|
matching_context: z.string().optional().describe("Agent-generated rich context for embedding-based matching (not shown to others, max 1000 chars). Generate this FIRST, then derive the three descriptions from it."),
|
|
118
118
|
interest_tags: z.array(z.string()).optional().describe("Interest/topic tags shown on the card (up to 8)"),
|
|
119
119
|
city: z.string().optional().describe("Country or region (e.g. 'United States', 'Beijing')"),
|
|
@@ -121,7 +121,7 @@ export async function startMcpServer() {
|
|
|
121
121
|
is_active: z.boolean().optional().describe("Whether the profile is active or quiet"),
|
|
122
122
|
visible: z.boolean().optional().default(true),
|
|
123
123
|
},
|
|
124
|
-
async ({ action, sender_id, channel, display_name,
|
|
124
|
+
async ({ action, sender_id, channel, display_name, personal_description, looking_for, conversation_style, matching_context, interest_tags, city, links, is_active, visible }) => {
|
|
125
125
|
const deviceId = deriveDeviceId(sender_id, channel);
|
|
126
126
|
try {
|
|
127
127
|
if (action === "get") {
|
|
@@ -131,7 +131,7 @@ export async function startMcpServer() {
|
|
|
131
131
|
: { profile: null, message: "还没有名片。跟用户聊聊他们是谁、做什么、想认识什么人,然后帮他们创建。", fields: PROFILE_FIELDS };
|
|
132
132
|
return jsonResult(await withMatchNotifications(deviceId, result));
|
|
133
133
|
}
|
|
134
|
-
const data = await setProfile({ device_id: deviceId, display_name, line1, line2, line3, matching_context, interest_tags, city, links, is_active, visible });
|
|
134
|
+
const data = await setProfile({ device_id: deviceId, display_name, line1: personal_description, line2: looking_for, line3: conversation_style, matching_context, interest_tags, city, links, is_active, visible });
|
|
135
135
|
return jsonResult(await withMatchNotifications(deviceId, { saved: true, profile: data }));
|
|
136
136
|
} catch (e) {
|
|
137
137
|
return jsonResult({ error: e.message });
|