@pulso/companion 0.4.7 → 0.4.8
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/dist/index.js +52 -2
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -9955,6 +9955,39 @@ async function handleCommand(command, params, streamCb) {
|
|
|
9955
9955
|
}
|
|
9956
9956
|
};
|
|
9957
9957
|
}
|
|
9958
|
+
if (command === "llm_detect_sessions") {
|
|
9959
|
+
const sessions = [];
|
|
9960
|
+
const PROVIDERS = [
|
|
9961
|
+
{ provider: "claude", url: "claude.ai", login_indicator: "/login" },
|
|
9962
|
+
{ provider: "chatgpt", url: "chatgpt.com", login_indicator: "/auth/login" },
|
|
9963
|
+
{ provider: "perplexity", url: "perplexity.ai", login_indicator: "/login" },
|
|
9964
|
+
{ provider: "gemini", url: "gemini.google.com", login_indicator: "/signin" }
|
|
9965
|
+
];
|
|
9966
|
+
try {
|
|
9967
|
+
const tabsResult = await adapter.browserListTabs();
|
|
9968
|
+
const tabs = Array.isArray(tabsResult) ? tabsResult : tabsResult?.data ?? [];
|
|
9969
|
+
const tabList = tabs;
|
|
9970
|
+
for (const p of PROVIDERS) {
|
|
9971
|
+
const matchingTabs = tabList.filter((t) => t.url?.includes(p.url));
|
|
9972
|
+
const tabOpen = matchingTabs.length > 0;
|
|
9973
|
+
const loggedIn = tabOpen && !matchingTabs.some((t) => t.url?.includes(p.login_indicator));
|
|
9974
|
+
sessions.push({ provider: p.provider, url: p.url, logged_in: loggedIn, tab_open: tabOpen });
|
|
9975
|
+
}
|
|
9976
|
+
} catch {
|
|
9977
|
+
for (const p of PROVIDERS) {
|
|
9978
|
+
sessions.push({ provider: p.provider, url: p.url, logged_in: false, tab_open: false });
|
|
9979
|
+
}
|
|
9980
|
+
}
|
|
9981
|
+
const available = sessions.filter((s) => s.logged_in).map((s) => s.provider);
|
|
9982
|
+
return {
|
|
9983
|
+
success: true,
|
|
9984
|
+
data: {
|
|
9985
|
+
sessions,
|
|
9986
|
+
available_providers: available,
|
|
9987
|
+
has_browser_llm: available.length > 0
|
|
9988
|
+
}
|
|
9989
|
+
};
|
|
9990
|
+
}
|
|
9958
9991
|
if (command === "llm_infer") {
|
|
9959
9992
|
const {
|
|
9960
9993
|
messages,
|
|
@@ -11200,12 +11233,28 @@ print(result.stdout[:5000])
|
|
|
11200
11233
|
);
|
|
11201
11234
|
}
|
|
11202
11235
|
case "sys_claude_status": {
|
|
11236
|
+
const _home = process.env.HOME || "";
|
|
11237
|
+
const _claudePaths = [
|
|
11238
|
+
`${_home}/.local/bin/claude`,
|
|
11239
|
+
`${_home}/.local/share/claude/versions/latest/claude`,
|
|
11240
|
+
"/usr/local/bin/claude",
|
|
11241
|
+
"/opt/homebrew/bin/claude"
|
|
11242
|
+
];
|
|
11243
|
+
let _claudeBin = "claude";
|
|
11244
|
+
for (const _p of _claudePaths) {
|
|
11245
|
+
try {
|
|
11246
|
+
execSync3(`test -x "${_p}"`, { stdio: "ignore" });
|
|
11247
|
+
_claudeBin = _p;
|
|
11248
|
+
break;
|
|
11249
|
+
} catch {
|
|
11250
|
+
}
|
|
11251
|
+
}
|
|
11203
11252
|
try {
|
|
11204
|
-
const version = await runShell4("
|
|
11253
|
+
const version = await runShell4(`"${_claudeBin}" --version 2>/dev/null`, 5e3);
|
|
11205
11254
|
let authStatus = "unknown";
|
|
11206
11255
|
let authDetails;
|
|
11207
11256
|
try {
|
|
11208
|
-
const status = await runShell4("
|
|
11257
|
+
const status = await runShell4(`"${_claudeBin}" auth status 2>&1`, 1e4);
|
|
11209
11258
|
const trimmed = status.trim();
|
|
11210
11259
|
let parsed = null;
|
|
11211
11260
|
try {
|
|
@@ -12293,6 +12342,7 @@ async function probeCapabilities() {
|
|
|
12293
12342
|
}
|
|
12294
12343
|
tools.add("llm_infer");
|
|
12295
12344
|
tools.add("llm_list_local");
|
|
12345
|
+
tools.add("llm_detect_sessions");
|
|
12296
12346
|
if (adapter.platform === "macos" || adapter.platform === "windows") {
|
|
12297
12347
|
tools.add("llm_browser_claude");
|
|
12298
12348
|
tools.add("llm_browser_chatgpt");
|