@lightupai/polaris 0.0.93 → 0.0.95
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/README.md +4 -0
- package/package.json +1 -1
- package/src/cli/cli.ts +51 -0
- package/src/client/client.ts +7 -3
package/README.md
CHANGED
|
@@ -121,6 +121,10 @@ polaris use you@personal.com # Switch to a personal account (triggers
|
|
|
121
121
|
# Other commands
|
|
122
122
|
polaris daemon # Start the local daemon (kills any existing daemon first)
|
|
123
123
|
polaris status # Show active account, daemon state, sessions
|
|
124
|
+
polaris feedback # Report a bug or request a feature (opens GitHub)
|
|
125
|
+
polaris feedback "it crashed on startup" # Pre-fill the issue title
|
|
126
|
+
polaris feedback --bug "description" # Open with bug label
|
|
127
|
+
polaris feedback --feature "description" # Open with feature-request label
|
|
124
128
|
polaris logout # Remove active account credentials
|
|
125
129
|
polaris logout --all # Remove all credentials
|
|
126
130
|
```
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@lightupai/polaris",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.95",
|
|
4
4
|
"description": "Record and stream Claude Code sessions to Slack. Like Gong for AI coding — capture every prompt, response, and tool call. Multiplayer collaboration across AI coding agents.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"claude-code",
|
package/src/cli/cli.ts
CHANGED
|
@@ -12,6 +12,7 @@
|
|
|
12
12
|
// polaris daemon — start the local daemon
|
|
13
13
|
// polaris status — show connection status
|
|
14
14
|
// polaris recover — re-POST locally logged events missing upstream
|
|
15
|
+
// polaris feedback — report a bug or request a feature
|
|
15
16
|
// polaris logout — remove credentials
|
|
16
17
|
|
|
17
18
|
import { mkdir, writeFile, readFile, rm, copyFile, chmod, readdir } from "node:fs/promises";
|
|
@@ -805,6 +806,46 @@ async function logout(all = false) {
|
|
|
805
806
|
console.log("MCP config and hooks are still installed — run `polaris install` to reset them.");
|
|
806
807
|
}
|
|
807
808
|
|
|
809
|
+
// --- Feedback ---
|
|
810
|
+
|
|
811
|
+
const GITHUB_ISSUES_URL = "https://github.com/lightup-data/polaris/issues/new";
|
|
812
|
+
|
|
813
|
+
function openUrl(url: string): void {
|
|
814
|
+
Bun.spawn(
|
|
815
|
+
process.platform === "darwin" ? ["open", url] :
|
|
816
|
+
process.platform === "win32" ? ["cmd", "/c", "start", url] :
|
|
817
|
+
["xdg-open", url],
|
|
818
|
+
{ stdout: "ignore", stderr: "ignore" }
|
|
819
|
+
).unref?.();
|
|
820
|
+
}
|
|
821
|
+
|
|
822
|
+
async function feedback(text?: string, label?: "bug" | "enhancement") {
|
|
823
|
+
let version = "";
|
|
824
|
+
try {
|
|
825
|
+
const pkgPath = join(import.meta.dir, "..", "..", "package.json");
|
|
826
|
+
({ version } = JSON.parse(await readFile(pkgPath, "utf-8")) as { version: string });
|
|
827
|
+
} catch { /* non-fatal */ }
|
|
828
|
+
|
|
829
|
+
const params: Record<string, string> = {};
|
|
830
|
+
if (text) {
|
|
831
|
+
params.title = text;
|
|
832
|
+
const versionLine = version ? `**polaris version:** ${version}\n\n` : "";
|
|
833
|
+
params.body = `${versionLine}${text}`;
|
|
834
|
+
}
|
|
835
|
+
if (label) params.labels = label;
|
|
836
|
+
|
|
837
|
+
const qs = new URLSearchParams(params).toString();
|
|
838
|
+
const url = qs ? `${GITHUB_ISSUES_URL}?${qs}` : GITHUB_ISSUES_URL;
|
|
839
|
+
|
|
840
|
+
openUrl(url);
|
|
841
|
+
if (text) {
|
|
842
|
+
console.log(`Opening GitHub with your feedback: "${text}"`);
|
|
843
|
+
} else {
|
|
844
|
+
console.log("Opening GitHub issues page...");
|
|
845
|
+
}
|
|
846
|
+
console.log(`\nIf the browser didn't open: ${url}`);
|
|
847
|
+
}
|
|
848
|
+
|
|
808
849
|
// --- Update check ---
|
|
809
850
|
// Warn if a newer version is available on npm. Best-effort: never blocks startup.
|
|
810
851
|
|
|
@@ -902,6 +943,15 @@ switch (command) {
|
|
|
902
943
|
await recover();
|
|
903
944
|
break;
|
|
904
945
|
|
|
946
|
+
case "feedback": {
|
|
947
|
+
const isBug = hasFlag("bug");
|
|
948
|
+
const isFeature = hasFlag("feature");
|
|
949
|
+
const label = isBug ? "bug" : isFeature ? "enhancement" : undefined;
|
|
950
|
+
const text = args.slice(1).find(a => !a.startsWith("--"));
|
|
951
|
+
await feedback(text, label);
|
|
952
|
+
break;
|
|
953
|
+
}
|
|
954
|
+
|
|
905
955
|
case "logout":
|
|
906
956
|
await logout(hasFlag("all"));
|
|
907
957
|
break;
|
|
@@ -940,6 +990,7 @@ switch (command) {
|
|
|
940
990
|
console.log(" polaris daemon — start the local daemon");
|
|
941
991
|
console.log(" polaris status — show connection status");
|
|
942
992
|
console.log(" polaris recover — re-POST locally logged events missing upstream");
|
|
993
|
+
console.log(" polaris feedback — report a bug or request a feature");
|
|
943
994
|
console.log(" polaris logout — remove active profile");
|
|
944
995
|
console.log(" polaris logout --all — remove all credentials");
|
|
945
996
|
}
|
package/src/client/client.ts
CHANGED
|
@@ -285,9 +285,11 @@ mcp.setRequestHandler(CallToolRequestSchema, async (req) => {
|
|
|
285
285
|
if (name === "polaris_status") {
|
|
286
286
|
try {
|
|
287
287
|
const res = await daemonGet(`/status/${CC_SESSION_ID}`);
|
|
288
|
-
const body = (await res.json()) as { connected: boolean; project?: string; session?: string; user?: string };
|
|
288
|
+
const body = (await res.json()) as { connected: boolean; project?: string; session?: string; user?: string; account?: string; slackChannel?: string };
|
|
289
289
|
if (body.connected) {
|
|
290
|
-
|
|
290
|
+
const accountTag = body.account ? ` [${body.account}]` : "";
|
|
291
|
+
const slackTag = body.slackChannel ? ` #${body.slackChannel}` : "";
|
|
292
|
+
return { content: [{ type: "text", text: `Connected: ${body.project}/${body.session} as ${body.user}${accountTag}${slackTag}` }] };
|
|
291
293
|
}
|
|
292
294
|
return { content: [{ type: "text", text: "Not connected to any Polaris session." }] };
|
|
293
295
|
} catch {
|
|
@@ -440,7 +442,9 @@ async function main() {
|
|
|
440
442
|
currentSession = body.session ?? saved.session;
|
|
441
443
|
currentUser = saved.user;
|
|
442
444
|
currentProfile = reconnectProfile;
|
|
443
|
-
|
|
445
|
+
// Show email when it looks like one; fall back to profile key or "default"
|
|
446
|
+
const accountLabel = reconnectProfile.includes("@") ? reconnectProfile : (reconnectProfile || "default");
|
|
447
|
+
console.error(`Polaris auto-reconnected to #${currentProject}/${currentSession} [${accountLabel}]`);
|
|
444
448
|
} else {
|
|
445
449
|
// Session or project no longer exists — clear stale state
|
|
446
450
|
await clearSessionState();
|