@lightupai/polaris 0.0.36 → 0.0.37
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/package.json +1 -1
- package/src/client/client.ts +7 -7
- package/src/service/server.ts +26 -13
package/package.json
CHANGED
package/src/client/client.ts
CHANGED
|
@@ -267,17 +267,17 @@ mcp.setRequestHandler(CallToolRequestSchema, async (req) => {
|
|
|
267
267
|
try {
|
|
268
268
|
const res = await daemonGet("/team");
|
|
269
269
|
if (res.ok) {
|
|
270
|
-
const body = await res.json() as { members: Array<{ name: string; participant_id: string; slack_id: string | null; slack_handle: string | null; slack_display: string | null }> };
|
|
270
|
+
const body = await res.json() as { members: Array<{ name: string; participant_id: string | null; slack_id: string | null; slack_handle: string | null; slack_display: string | null; polaris_user: boolean }> };
|
|
271
271
|
if (body.members.length === 0) {
|
|
272
272
|
return { content: [{ type: "text", text: "No team members found." }] };
|
|
273
273
|
}
|
|
274
|
-
const
|
|
275
|
-
|
|
276
|
-
.map((m) => ` @${m.slack_handle
|
|
274
|
+
const taggable = body.members.filter((m) => m.slack_id && m.slack_handle);
|
|
275
|
+
const list = taggable
|
|
276
|
+
.map((m) => ` @${m.slack_handle} — ${m.name}${m.polaris_user ? " ✓" : ""} [${m.slack_id}]`)
|
|
277
277
|
.join("\n");
|
|
278
|
-
const
|
|
279
|
-
const
|
|
280
|
-
return { content: [{ type: "text", text: `Team members (use @handle to tag):\n${list}${
|
|
278
|
+
const notTaggable = body.members.filter((m) => !m.slack_id);
|
|
279
|
+
const note = notTaggable.length > 0 ? `\n\nNot on Slack: ${notTaggable.map(m => m.name).join(", ")}` : "";
|
|
280
|
+
return { content: [{ type: "text", text: `Team members (use @handle to tag, ✓ = Polaris user):\n${list}${note}` }] };
|
|
281
281
|
}
|
|
282
282
|
return { content: [{ type: "text", text: "Failed to fetch team list." }] };
|
|
283
283
|
} catch {
|
package/src/service/server.ts
CHANGED
|
@@ -472,23 +472,36 @@ export async function startServer(opts: {
|
|
|
472
472
|
} catch { /* Slack API unavailable */ }
|
|
473
473
|
}
|
|
474
474
|
|
|
475
|
-
//
|
|
476
|
-
const
|
|
477
|
-
|
|
478
|
-
|
|
479
|
-
|
|
480
|
-
|
|
481
|
-
);
|
|
475
|
+
// Build team from ALL Slack workspace members, annotate with Polaris identity
|
|
476
|
+
const matchedEmails = new Set<string>();
|
|
477
|
+
const team = slackMembers.map((m) => {
|
|
478
|
+
const polarisUser = users.find((u) => u.email.toLowerCase() === m.email.toLowerCase())
|
|
479
|
+
?? users.find((u) => u.name.toLowerCase() === m.name.toLowerCase());
|
|
480
|
+
if (polarisUser) matchedEmails.add(polarisUser.email.toLowerCase());
|
|
482
481
|
return {
|
|
483
|
-
name:
|
|
484
|
-
|
|
485
|
-
|
|
486
|
-
|
|
487
|
-
|
|
488
|
-
|
|
482
|
+
name: m.name || m.display_name || m.username,
|
|
483
|
+
slack_id: m.id,
|
|
484
|
+
slack_handle: m.username,
|
|
485
|
+
slack_display: m.display_name || m.name,
|
|
486
|
+
participant_id: polarisUser?.participant_id ?? null,
|
|
487
|
+
polaris_user: !!polarisUser,
|
|
489
488
|
};
|
|
490
489
|
});
|
|
491
490
|
|
|
491
|
+
// Add Polaris users not in Slack (e.g., synthetic test users)
|
|
492
|
+
for (const u of users) {
|
|
493
|
+
if (!matchedEmails.has(u.email.toLowerCase())) {
|
|
494
|
+
team.push({
|
|
495
|
+
name: u.name,
|
|
496
|
+
slack_id: null,
|
|
497
|
+
slack_handle: null,
|
|
498
|
+
slack_display: null,
|
|
499
|
+
participant_id: u.participant_id,
|
|
500
|
+
polaris_user: true,
|
|
501
|
+
});
|
|
502
|
+
}
|
|
503
|
+
}
|
|
504
|
+
|
|
492
505
|
return json({ members: team });
|
|
493
506
|
}
|
|
494
507
|
|