@dmsdc-ai/aigentry-deliberation 0.0.5 → 0.0.7
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.js +58 -9
- package/package.json +5 -2
package/index.js
CHANGED
|
@@ -126,6 +126,20 @@ const DEFAULT_LLM_DOMAINS = [
|
|
|
126
126
|
"notebooklm.google.com",
|
|
127
127
|
];
|
|
128
128
|
|
|
129
|
+
// Well-known web LLMs — always available as speaker candidates regardless of browser detection.
|
|
130
|
+
// When a matching browser tab is detected, transport upgrades to browser_auto (CDP) or clipboard.
|
|
131
|
+
// When no tab is detected, transport falls back to clipboard (manual paste).
|
|
132
|
+
const DEFAULT_WEB_SPEAKERS = [
|
|
133
|
+
{ speaker: "web-chatgpt", provider: "chatgpt", name: "ChatGPT", url: "https://chatgpt.com" },
|
|
134
|
+
{ speaker: "web-claude", provider: "claude", name: "Claude", url: "https://claude.ai" },
|
|
135
|
+
{ speaker: "web-gemini", provider: "gemini", name: "Gemini", url: "https://gemini.google.com" },
|
|
136
|
+
{ speaker: "web-copilot", provider: "copilot", name: "Copilot", url: "https://copilot.microsoft.com" },
|
|
137
|
+
{ speaker: "web-perplexity", provider: "perplexity", name: "Perplexity", url: "https://perplexity.ai" },
|
|
138
|
+
{ speaker: "web-deepseek", provider: "deepseek", name: "DeepSeek", url: "https://deepseek.com" },
|
|
139
|
+
{ speaker: "web-mistral", provider: "mistral", name: "Mistral", url: "https://mistral.ai" },
|
|
140
|
+
{ speaker: "web-poe", provider: "poe", name: "Poe", url: "https://poe.com" },
|
|
141
|
+
];
|
|
142
|
+
|
|
129
143
|
let _extensionProviderRegistry = null;
|
|
130
144
|
const __dirnameEsm = path.dirname(new URL(import.meta.url).pathname.replace(/^\/([A-Z]:)/, "$1"));
|
|
131
145
|
function loadExtensionProviderRegistry() {
|
|
@@ -1159,12 +1173,33 @@ async function collectSpeakerCandidates({ include_cli = true, include_browser =
|
|
|
1159
1173
|
}
|
|
1160
1174
|
}
|
|
1161
1175
|
|
|
1176
|
+
// Auto-register well-known web LLMs that weren't already detected via browser scanning.
|
|
1177
|
+
// This ensures web speakers are ALWAYS available regardless of browser detection success.
|
|
1178
|
+
// If a browser tab for the same provider was already detected, skip auto-registration
|
|
1179
|
+
// to avoid duplicates (e.g., detected "web-chatgpt-1" vs auto-registered "web-chatgpt").
|
|
1180
|
+
const detectedProviders = new Set(
|
|
1181
|
+
candidates.filter(c => c.type === "browser" && !c.auto_registered).map(c => c.provider)
|
|
1182
|
+
);
|
|
1183
|
+
for (const ws of DEFAULT_WEB_SPEAKERS) {
|
|
1184
|
+
if (detectedProviders.has(ws.provider)) continue;
|
|
1185
|
+
add({
|
|
1186
|
+
speaker: ws.speaker,
|
|
1187
|
+
type: "browser",
|
|
1188
|
+
provider: ws.provider,
|
|
1189
|
+
browser: "auto-registered",
|
|
1190
|
+
title: ws.name,
|
|
1191
|
+
url: ws.url,
|
|
1192
|
+
auto_registered: true,
|
|
1193
|
+
});
|
|
1194
|
+
}
|
|
1195
|
+
|
|
1162
1196
|
return { candidates, browserNote };
|
|
1163
1197
|
}
|
|
1164
1198
|
|
|
1165
1199
|
function formatSpeakerCandidatesReport({ candidates, browserNote }) {
|
|
1166
1200
|
const cli = candidates.filter(c => c.type === "cli");
|
|
1167
|
-
const
|
|
1201
|
+
const detected = candidates.filter(c => c.type === "browser" && !c.auto_registered);
|
|
1202
|
+
const autoReg = candidates.filter(c => c.type === "browser" && c.auto_registered);
|
|
1168
1203
|
|
|
1169
1204
|
let out = "## Selectable Speakers\n\n";
|
|
1170
1205
|
out += "### CLI\n";
|
|
@@ -1174,17 +1209,22 @@ function formatSpeakerCandidatesReport({ candidates, browserNote }) {
|
|
|
1174
1209
|
out += `${cli.map(c => `- \`${c.speaker}\` (command: ${c.command})`).join("\n")}\n\n`;
|
|
1175
1210
|
}
|
|
1176
1211
|
|
|
1177
|
-
out += "### Browser LLM\n";
|
|
1178
|
-
if (
|
|
1179
|
-
out += "- (감지된
|
|
1212
|
+
out += "### Browser LLM (감지됨)\n";
|
|
1213
|
+
if (detected.length === 0) {
|
|
1214
|
+
out += "- (브라우저에서 감지된 LLM 탭 없음)\n";
|
|
1180
1215
|
} else {
|
|
1181
|
-
out += `${
|
|
1216
|
+
out += `${detected.map(c => {
|
|
1182
1217
|
const icon = c.cdp_available ? "⚡자동" : "📋클립보드";
|
|
1183
1218
|
const extTag = String(c.url || "").startsWith("chrome-extension://") ? " [Extension]" : "";
|
|
1184
1219
|
return `- \`${c.speaker}\` [${icon}]${extTag} [${c.browser}] ${c.title}\n ${c.url}`;
|
|
1185
1220
|
}).join("\n")}\n`;
|
|
1186
1221
|
}
|
|
1187
1222
|
|
|
1223
|
+
out += "\n### Web LLM (자동 등록)\n";
|
|
1224
|
+
out += `${autoReg.map(c => {
|
|
1225
|
+
return `- \`${c.speaker}\` — ${c.title} (${c.url})`;
|
|
1226
|
+
}).join("\n")}\n`;
|
|
1227
|
+
|
|
1188
1228
|
if (browserNote) {
|
|
1189
1229
|
out += `\n\nℹ️ ${browserNote}`;
|
|
1190
1230
|
}
|
|
@@ -1218,10 +1258,19 @@ function mapParticipantProfiles(speakers, candidates, typeOverrides) {
|
|
|
1218
1258
|
|
|
1219
1259
|
const candidate = bySpeaker.get(speaker);
|
|
1220
1260
|
if (!candidate) {
|
|
1221
|
-
|
|
1222
|
-
|
|
1223
|
-
|
|
1224
|
-
|
|
1261
|
+
// Force CLI type if the speaker is available as a CLI command in PATH
|
|
1262
|
+
if (commandExistsInPath(speaker)) {
|
|
1263
|
+
profiles.push({
|
|
1264
|
+
speaker,
|
|
1265
|
+
type: "cli",
|
|
1266
|
+
command: speaker,
|
|
1267
|
+
});
|
|
1268
|
+
} else {
|
|
1269
|
+
profiles.push({
|
|
1270
|
+
speaker,
|
|
1271
|
+
type: "manual",
|
|
1272
|
+
});
|
|
1273
|
+
}
|
|
1225
1274
|
continue;
|
|
1226
1275
|
}
|
|
1227
1276
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@dmsdc-ai/aigentry-deliberation",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.7",
|
|
4
4
|
"description": "MCP Deliberation Server — Multi-session AI deliberation with smart speaker ordering and persona roles",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"license": "MIT",
|
|
@@ -43,7 +43,10 @@
|
|
|
43
43
|
"start": "node index.js",
|
|
44
44
|
"test": "vitest run",
|
|
45
45
|
"test:watch": "vitest",
|
|
46
|
-
"prepublishOnly": "vitest run"
|
|
46
|
+
"prepublishOnly": "vitest run",
|
|
47
|
+
"release:patch": "npm version patch && git push && git push --tags",
|
|
48
|
+
"release:minor": "npm version minor && git push && git push --tags",
|
|
49
|
+
"release:major": "npm version major && git push && git push --tags"
|
|
47
50
|
},
|
|
48
51
|
"dependencies": {
|
|
49
52
|
"@modelcontextprotocol/sdk": "^1.26.0",
|