@vibecodr/cli 1.0.6 → 1.0.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/CHANGELOG.md +33 -0
- package/README.md +31 -11
- package/dist/app/command-registry.d.ts +13 -0
- package/dist/app/command-registry.d.ts.map +1 -0
- package/dist/app/command-registry.js +54 -0
- package/dist/app/command-registry.js.map +1 -0
- package/dist/app/help.d.ts +5 -0
- package/dist/app/help.d.ts.map +1 -0
- package/dist/app/help.js +158 -0
- package/dist/app/help.js.map +1 -0
- package/dist/bin/vibecodr-mcp.js +82 -80
- package/dist/bin/vibecodr-mcp.js.map +1 -1
- package/dist/commands/context.d.ts +2 -0
- package/dist/commands/context.d.ts.map +1 -1
- package/dist/commands/doctor.d.ts.map +1 -1
- package/dist/commands/doctor.js +81 -2
- package/dist/commands/doctor.js.map +1 -1
- package/dist/commands/feedback.d.ts +3 -0
- package/dist/commands/feedback.d.ts.map +1 -0
- package/dist/commands/feedback.js +92 -0
- package/dist/commands/feedback.js.map +1 -0
- package/dist/commands/login.d.ts.map +1 -1
- package/dist/commands/login.js +29 -4
- package/dist/commands/login.js.map +1 -1
- package/dist/commands/logout.d.ts.map +1 -1
- package/dist/commands/logout.js +25 -3
- package/dist/commands/logout.js.map +1 -1
- package/dist/commands/mcp.d.ts +3 -0
- package/dist/commands/mcp.d.ts.map +1 -0
- package/dist/commands/mcp.js +26 -0
- package/dist/commands/mcp.js.map +1 -0
- package/dist/commands/status.d.ts.map +1 -1
- package/dist/commands/status.js +78 -6
- package/dist/commands/status.js.map +1 -1
- package/dist/commands/tools.d.ts.map +1 -1
- package/dist/commands/tools.js +45 -1
- package/dist/commands/tools.js.map +1 -1
- package/dist/legacy/cli/install.js +4 -4
- package/dist/legacy/cli/run.js +353 -353
- package/dist/legacy/cli/run.js.map +1 -1
- package/dist/legacy/config/store.js +7 -7
- package/dist/legacy/core/api-client.js +3 -3
- package/dist/legacy/core/api-client.js.map +1 -1
- package/dist/legacy/core/validators.js +4 -4
- package/dist/legacy/core/version.d.ts +2 -2
- package/dist/legacy/core/version.js +1 -1
- package/docs/API-CONTRACT.md +605 -606
- package/docs/RELEASE-CHECKLIST.md +264 -260
- package/docs/SECURITY.md +166 -162
- package/docs/VALIDATION-MATRIX.md +45 -45
- package/docs/architecture.md +9 -6
- package/docs/auth.md +15 -7
- package/docs/commands.md +280 -256
- package/docs/install.md +5 -5
- package/package.json +4 -3
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"vibecodr-mcp.js","sourceRoot":"","sources":["../../src/bin/vibecodr-mcp.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AAC9D,OAAO,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AACzD,OAAO,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AACzD,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AACxD,OAAO,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACtE,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC1C,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAClF,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AACxD,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAC/D,OAAO,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AAClE,OAAO,EAAE,sBAAsB,EAAE,MAAM,8BAA8B,CAAC;AACtE,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"vibecodr-mcp.js","sourceRoot":"","sources":["../../src/bin/vibecodr-mcp.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { Output } from "../cli/output.js";
|
|
2
2
|
import { TokenManager } from "../auth/token-manager.js";
|
|
3
|
+
import type { CredentialBroker } from "../auth/credential-broker.js";
|
|
3
4
|
import { ConfigStore } from "../storage/config-store.js";
|
|
4
5
|
import { SecretStore } from "../storage/secret-store.js";
|
|
5
6
|
import { McpRuntimeClient } from "../core/mcp-client.js";
|
|
@@ -11,5 +12,6 @@ export interface CommandContext {
|
|
|
11
12
|
secretStore: SecretStore;
|
|
12
13
|
tokenManager: TokenManager;
|
|
13
14
|
runtimeClient: McpRuntimeClient;
|
|
15
|
+
credentialBroker?: CredentialBroker;
|
|
14
16
|
}
|
|
15
17
|
//# sourceMappingURL=context.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../src/commands/context.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC1C,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AACxD,OAAO,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AACzD,OAAO,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AACzD,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAExD,MAAM,WAAW,cAAc;IAC7B,aAAa,EAAE,aAAa,CAAC;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,WAAW,CAAC;IACzB,WAAW,EAAE,WAAW,CAAC;IACzB,YAAY,EAAE,YAAY,CAAC;IAC3B,aAAa,EAAE,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../src/commands/context.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC1C,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AACxD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AACrE,OAAO,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AACzD,OAAO,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AACzD,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAExD,MAAM,WAAW,cAAc;IAC7B,aAAa,EAAE,aAAa,CAAC;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,WAAW,CAAC;IACzB,WAAW,EAAE,WAAW,CAAC;IACzB,YAAY,EAAE,YAAY,CAAC;IAC3B,aAAa,EAAE,gBAAgB,CAAC;IAChC,gBAAgB,CAAC,EAAE,gBAAgB,CAAC;CACrC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"doctor.d.ts","sourceRoot":"","sources":["../../src/commands/doctor.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"doctor.d.ts","sourceRoot":"","sources":["../../src/commands/doctor.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AA2FnD,wBAAsB,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CA0B7F"}
|
package/dist/commands/doctor.js
CHANGED
|
@@ -2,18 +2,97 @@ import { parseFlags } from "../cli/parse.js";
|
|
|
2
2
|
import { runDoctor } from "../doctor/run.js";
|
|
3
3
|
import { EXIT_CODES } from "../cli/errors.js";
|
|
4
4
|
import { showHelpIfRequested } from "./help.js";
|
|
5
|
+
function doctorHelpText() {
|
|
6
|
+
return [
|
|
7
|
+
"Usage: vibecodr doctor [--client <codex|cursor|vscode|windsurf|claude-desktop>]",
|
|
8
|
+
"",
|
|
9
|
+
"Checks the local CLI, secure storage, OAuth setup, MCP Gateway credentials,",
|
|
10
|
+
"Agent Computer credentials, and optional editor/client setup.",
|
|
11
|
+
"",
|
|
12
|
+
"Most people:",
|
|
13
|
+
" vibecodr doctor Find the next setup problem.",
|
|
14
|
+
" vibecodr doctor --client codex",
|
|
15
|
+
" Also check whether Codex is ready to use Vibecodr.",
|
|
16
|
+
"",
|
|
17
|
+
"For scripts:",
|
|
18
|
+
" vibecodr doctor --json --non-interactive"
|
|
19
|
+
].join("\n");
|
|
20
|
+
}
|
|
21
|
+
async function credentialCheck(context, id, label, endpoint) {
|
|
22
|
+
if (!context.credentialBroker) {
|
|
23
|
+
return {
|
|
24
|
+
id,
|
|
25
|
+
status: "warn",
|
|
26
|
+
summary: `${label} credential broker is unavailable.`
|
|
27
|
+
};
|
|
28
|
+
}
|
|
29
|
+
try {
|
|
30
|
+
const credential = await context.credentialBroker.getCredentialForEndpoint(endpoint);
|
|
31
|
+
return {
|
|
32
|
+
id,
|
|
33
|
+
status: credential ? "pass" : "warn",
|
|
34
|
+
summary: credential
|
|
35
|
+
? `${label} credential is available via ${credential.kind}.`
|
|
36
|
+
: `${label} credential is not stored.`
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
catch (error) {
|
|
40
|
+
return {
|
|
41
|
+
id,
|
|
42
|
+
status: "warn",
|
|
43
|
+
summary: `${label} credential state could not be read: ${error instanceof Error ? error.message : String(error)}`
|
|
44
|
+
};
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
function nextStepForCheck(check) {
|
|
48
|
+
if (check.status === "pass")
|
|
49
|
+
return undefined;
|
|
50
|
+
if (check.id === "mcp-gateway-credential") {
|
|
51
|
+
return "Run `vibecodr login` for publishing, uploads, Pulses, and MCP Gateway tools.";
|
|
52
|
+
}
|
|
53
|
+
if (check.id === "agent-computer-credential") {
|
|
54
|
+
return "Run `vibecodr start` when you want hosted browser/computer work.";
|
|
55
|
+
}
|
|
56
|
+
if (check.id === "refresh-token") {
|
|
57
|
+
return "Run `vibecodr login` to refresh this CLI session.";
|
|
58
|
+
}
|
|
59
|
+
if (check.id.includes("client")) {
|
|
60
|
+
return "Run `vibecodr install <client>` for the editor or agent you use.";
|
|
61
|
+
}
|
|
62
|
+
return undefined;
|
|
63
|
+
}
|
|
64
|
+
function doctorHumanLines(checks) {
|
|
65
|
+
const failures = checks.filter((check) => check.status === "fail");
|
|
66
|
+
const warnings = checks.filter((check) => check.status === "warn");
|
|
67
|
+
const firstAction = [...failures, ...warnings].map((check) => nextStepForCheck(check)).find(Boolean);
|
|
68
|
+
const headline = failures.length > 0
|
|
69
|
+
? "Vibecodr doctor found setup blockers."
|
|
70
|
+
: warnings.length > 0
|
|
71
|
+
? "Vibecodr doctor found things to check."
|
|
72
|
+
: "Vibecodr doctor passed.";
|
|
73
|
+
return [
|
|
74
|
+
headline,
|
|
75
|
+
`Passed: ${checks.filter((check) => check.status === "pass").length}`,
|
|
76
|
+
`Needs attention: ${failures.length + warnings.length}`,
|
|
77
|
+
firstAction ? `Next: ${firstAction}` : "Next: run `vibecodr status` to see what is connected.",
|
|
78
|
+
"",
|
|
79
|
+
"Details:",
|
|
80
|
+
...checks.map((check) => `[${check.status.toUpperCase()}] ${check.id}: ${check.summary}`)
|
|
81
|
+
];
|
|
82
|
+
}
|
|
5
83
|
export async function runDoctorCommand(args, context) {
|
|
6
|
-
if (showHelpIfRequested(args, context,
|
|
84
|
+
if (showHelpIfRequested(args, context, doctorHelpText()))
|
|
7
85
|
return;
|
|
8
86
|
const { flags } = parseFlags(args, {
|
|
9
87
|
valueFlags: ["client"]
|
|
10
88
|
});
|
|
11
89
|
const checks = await runDoctor(context.globalOptions, context.tokenManager, context.secretStore, typeof flags["client"] === "string" ? flags["client"] : undefined);
|
|
90
|
+
checks.push(await credentialCheck(context, "agent-computer-credential", "Agent Computer", "tools.vibecodr.space"), await credentialCheck(context, "mcp-gateway-credential", "MCP Gateway", "openai.vibecodr.space/mcp"));
|
|
12
91
|
context.output.success({
|
|
13
92
|
schemaVersion: 1,
|
|
14
93
|
ok: checks.every((check) => check.status === "pass"),
|
|
15
94
|
checks
|
|
16
|
-
}, checks
|
|
95
|
+
}, doctorHumanLines(checks));
|
|
17
96
|
if (checks.some((check) => check.status === "fail")) {
|
|
18
97
|
process.exitCode = EXIT_CODES.runtime;
|
|
19
98
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"doctor.js","sourceRoot":"","sources":["../../src/commands/doctor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"doctor.js","sourceRoot":"","sources":["../../src/commands/doctor.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"feedback.d.ts","sourceRoot":"","sources":["../../src/commands/feedback.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAwCnD,wBAAsB,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CAiE/F"}
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
import { parseFlags } from "../cli/parse.js";
|
|
2
|
+
import { CliError, EXIT_CODES } from "../cli/errors.js";
|
|
3
|
+
import { promptText } from "../platform/prompt.js";
|
|
4
|
+
import { showHelpIfRequested } from "./help.js";
|
|
5
|
+
import { callToolWithRetry } from "./call.js";
|
|
6
|
+
const FEEDBACK_CATEGORIES = new Set(["feedback", "idea", "bug", "question", "praise", "other"]);
|
|
7
|
+
function stringFlag(value, name) {
|
|
8
|
+
if (value === undefined)
|
|
9
|
+
return undefined;
|
|
10
|
+
if (typeof value !== "string") {
|
|
11
|
+
throw new CliError("usage.invalid_flag", `--${name} must have a text value.`, EXIT_CODES.usage);
|
|
12
|
+
}
|
|
13
|
+
const trimmed = value.trim();
|
|
14
|
+
return trimmed || undefined;
|
|
15
|
+
}
|
|
16
|
+
function parseCategory(value) {
|
|
17
|
+
if (value === undefined)
|
|
18
|
+
return undefined;
|
|
19
|
+
if (FEEDBACK_CATEGORIES.has(value))
|
|
20
|
+
return value;
|
|
21
|
+
throw new CliError("usage.feedback_category_invalid", `Unknown feedback category: ${value}`, EXIT_CODES.usage, { nextStep: "Use one of: feedback, idea, bug, question, praise, other." });
|
|
22
|
+
}
|
|
23
|
+
function feedbackIdFromResult(result) {
|
|
24
|
+
if (!result || typeof result !== "object")
|
|
25
|
+
return undefined;
|
|
26
|
+
const structured = result.structuredContent;
|
|
27
|
+
if (!structured || typeof structured !== "object")
|
|
28
|
+
return undefined;
|
|
29
|
+
const feedbackId = structured["feedbackId"];
|
|
30
|
+
return typeof feedbackId === "string" && feedbackId.trim() ? feedbackId : undefined;
|
|
31
|
+
}
|
|
32
|
+
function founderEmailQueuedFromResult(result) {
|
|
33
|
+
if (!result || typeof result !== "object")
|
|
34
|
+
return undefined;
|
|
35
|
+
const structured = result.structuredContent;
|
|
36
|
+
if (!structured || typeof structured !== "object")
|
|
37
|
+
return undefined;
|
|
38
|
+
const queued = structured["founderEmailQueued"];
|
|
39
|
+
return typeof queued === "boolean" ? queued : undefined;
|
|
40
|
+
}
|
|
41
|
+
export async function runFeedbackCommand(args, context) {
|
|
42
|
+
if (showHelpIfRequested(args, context, [
|
|
43
|
+
"Usage: vibecodr feedback [message] [--message <text>] [--subject <text>] [--category <kind>] [--page-url <url>] [--no-login]",
|
|
44
|
+
"",
|
|
45
|
+
"Send product feedback straight to the Vibecodr dev. The note is saved for review and queues founder notification.",
|
|
46
|
+
"",
|
|
47
|
+
"Examples:",
|
|
48
|
+
" vibecodr feedback \"The publish form wording is confusing\"",
|
|
49
|
+
" vibecodr feedback --category idea --subject \"Better examples\" --message \"Show Codex and Claude install examples side by side\"",
|
|
50
|
+
"",
|
|
51
|
+
"Categories: feedback, idea, bug, question, praise, other"
|
|
52
|
+
].join("\n")))
|
|
53
|
+
return;
|
|
54
|
+
const { flags, positionals } = parseFlags(args, {
|
|
55
|
+
valueFlags: ["message", "subject", "category", "page-url", "client"],
|
|
56
|
+
booleanFlags: ["no-login"]
|
|
57
|
+
});
|
|
58
|
+
const message = stringFlag(flags["message"], "message") || positionals.join(" ").trim() || (context.globalOptions.nonInteractive
|
|
59
|
+
? undefined
|
|
60
|
+
: await promptText("What should Braden know? "));
|
|
61
|
+
if (!message) {
|
|
62
|
+
throw new CliError("usage.feedback_message_required", "A feedback message is required.", EXIT_CODES.usage, { nextStep: "Run `vibecodr feedback \"your note\"` or pass `--message <text>`." });
|
|
63
|
+
}
|
|
64
|
+
const category = parseCategory(stringFlag(flags["category"], "category"));
|
|
65
|
+
const subject = stringFlag(flags["subject"], "subject");
|
|
66
|
+
const pageUrl = stringFlag(flags["page-url"], "page-url");
|
|
67
|
+
const client = stringFlag(flags["client"], "client") || "vibecodr-cli";
|
|
68
|
+
const input = {
|
|
69
|
+
message,
|
|
70
|
+
source: "cli",
|
|
71
|
+
client,
|
|
72
|
+
...(category ? { category } : {}),
|
|
73
|
+
...(subject ? { subject } : {}),
|
|
74
|
+
...(pageUrl ? { pageUrl } : {})
|
|
75
|
+
};
|
|
76
|
+
const { result } = await callToolWithRetry(context, "submit_feedback", input, !flags["no-login"]);
|
|
77
|
+
const feedbackId = feedbackIdFromResult(result);
|
|
78
|
+
const founderEmailQueued = founderEmailQueuedFromResult(result);
|
|
79
|
+
context.output.success({
|
|
80
|
+
schemaVersion: 1,
|
|
81
|
+
ok: true,
|
|
82
|
+
...(feedbackId ? { feedbackId } : {}),
|
|
83
|
+
...(founderEmailQueued !== undefined ? { founderEmailQueued } : {})
|
|
84
|
+
}, [
|
|
85
|
+
"Sent to Braden.",
|
|
86
|
+
...(feedbackId ? [`Saved as feedback ${feedbackId}.`] : ["Saved for review."]),
|
|
87
|
+
...(founderEmailQueued === undefined
|
|
88
|
+
? []
|
|
89
|
+
: [founderEmailQueued ? "Founder notification was queued." : "Founder email was not queued by the server."])
|
|
90
|
+
]);
|
|
91
|
+
}
|
|
92
|
+
//# sourceMappingURL=feedback.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"feedback.js","sourceRoot":"","sources":["../../src/commands/feedback.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"login.d.ts","sourceRoot":"","sources":["../../src/commands/login.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"login.d.ts","sourceRoot":"","sources":["../../src/commands/login.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAqBnD,wBAAsB,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CAwD5F"}
|
package/dist/commands/login.js
CHANGED
|
@@ -1,11 +1,33 @@
|
|
|
1
1
|
import { parseFlags } from "../cli/parse.js";
|
|
2
|
+
import { CliError, EXIT_CODES } from "../cli/errors.js";
|
|
2
3
|
import { showHelpIfRequested } from "./help.js";
|
|
4
|
+
const MCP_GATEWAY_AUTH_SCOPES = new Set(["mcp", "mcp-gateway", "gateway"]);
|
|
5
|
+
function loginHelpText() {
|
|
6
|
+
return [
|
|
7
|
+
"Usage: vibecodr login [mcp] [--scope <oauth-scope>] [--registration auto|preregistered|cimd|dcr|manual] [--browser open|print] [--timeout-sec <n>]",
|
|
8
|
+
" vibecodr login agent [--no-browser] [--credential-file <path> | --credential-stdin]",
|
|
9
|
+
"",
|
|
10
|
+
"Most people:",
|
|
11
|
+
" vibecodr login Sign in for publishing, uploads, Pulses, and MCP Gateway tools.",
|
|
12
|
+
" vibecodr start Sign in and verify the hosted Agent Computer.",
|
|
13
|
+
"",
|
|
14
|
+
"Explicit lanes:",
|
|
15
|
+
" vibecodr login mcp Same as vibecodr login; uses browser OAuth.",
|
|
16
|
+
" vibecodr login agent Uses the hosted Agent Computer approval flow.",
|
|
17
|
+
"",
|
|
18
|
+
"Tip: run `vibecodr status` after login to see what is connected."
|
|
19
|
+
].join("\n");
|
|
20
|
+
}
|
|
3
21
|
export async function runLoginCommand(args, context) {
|
|
4
|
-
|
|
22
|
+
const scopedArgs = MCP_GATEWAY_AUTH_SCOPES.has(args[0] ?? "") ? args.slice(1) : args;
|
|
23
|
+
if (showHelpIfRequested(scopedArgs, context, loginHelpText()))
|
|
5
24
|
return;
|
|
6
|
-
const { flags } = parseFlags(
|
|
25
|
+
const { flags, positionals } = parseFlags(scopedArgs, {
|
|
7
26
|
valueFlags: ["scope", "registration", "browser", "timeout-sec"]
|
|
8
27
|
});
|
|
28
|
+
if (positionals.length > 0) {
|
|
29
|
+
throw new CliError("usage.unknown_login_scope", `Unknown login target: ${positionals[0]}`, EXIT_CODES.usage, { nextStep: "Use `vibecodr login` for the usual path, or `vibecodr login agent` for the hosted Agent Computer." });
|
|
30
|
+
}
|
|
9
31
|
let authorizationUrl;
|
|
10
32
|
let callbackUrl;
|
|
11
33
|
const result = await context.tokenManager.login(context.globalOptions, {
|
|
@@ -16,13 +38,14 @@ export async function runLoginCommand(args, context) {
|
|
|
16
38
|
onLoopbackReady: (url) => {
|
|
17
39
|
callbackUrl = url;
|
|
18
40
|
if (!context.globalOptions.json) {
|
|
19
|
-
context.output.info(`Waiting for
|
|
41
|
+
context.output.info(`Waiting for sign-in to finish on ${url}`);
|
|
20
42
|
context.output.info("Keep this terminal open until login completes.");
|
|
21
43
|
}
|
|
22
44
|
},
|
|
23
45
|
onAuthorizationUrl: (url) => {
|
|
24
46
|
authorizationUrl = url;
|
|
25
47
|
if (!context.globalOptions.json) {
|
|
48
|
+
context.output.info("Open this URL to sign in to Vibecodr:");
|
|
26
49
|
context.output.info(url);
|
|
27
50
|
}
|
|
28
51
|
}
|
|
@@ -33,13 +56,15 @@ export async function runLoginCommand(args, context) {
|
|
|
33
56
|
...(callbackUrl ? { callbackUrl } : {}),
|
|
34
57
|
...(context.globalOptions.json && authorizationUrl ? { authorizationUrl } : {})
|
|
35
58
|
}, [
|
|
59
|
+
"Signed in to Vibecodr for publishing, uploads, Pulses, and MCP Gateway tools.",
|
|
36
60
|
`Profile: ${result.profile}`,
|
|
37
61
|
`Server URL: ${result.serverUrl}`,
|
|
38
62
|
`Authorization server: ${result.authorizationServerIssuer || "discovered"}`,
|
|
39
63
|
`Registration mode: ${result.registrationMode}`,
|
|
40
64
|
`Expires at: ${result.expiresAt || "unknown"}`,
|
|
41
65
|
`Refresh token: ${result.hasRefreshToken ? "available" : "not issued"}`,
|
|
42
|
-
"
|
|
66
|
+
"Next: run `vibecodr status` to see what is connected.",
|
|
67
|
+
"Note: Codex, Cursor, Claude, VS Code, and Windsurf have their own OAuth sessions. Use `vibecodr install codex` or another supported app name to add Vibecodr there."
|
|
43
68
|
]);
|
|
44
69
|
}
|
|
45
70
|
//# sourceMappingURL=login.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"login.js","sourceRoot":"","sources":["../../src/commands/login.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAC;AAIhD,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,IAAc,EAAE,OAAuB;IAC3E,IAAI,
|
|
1
|
+
{"version":3,"file":"login.js","sourceRoot":"","sources":["../../src/commands/login.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"logout.d.ts","sourceRoot":"","sources":["../../src/commands/logout.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"logout.d.ts","sourceRoot":"","sources":["../../src/commands/logout.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAoBnD,wBAAsB,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CAwC7F"}
|
package/dist/commands/logout.js
CHANGED
|
@@ -1,11 +1,32 @@
|
|
|
1
1
|
import { parseFlags } from "../cli/parse.js";
|
|
2
|
+
import { CliError, EXIT_CODES } from "../cli/errors.js";
|
|
2
3
|
import { showHelpIfRequested } from "./help.js";
|
|
4
|
+
const MCP_GATEWAY_AUTH_SCOPES = new Set(["mcp", "mcp-gateway", "gateway"]);
|
|
5
|
+
function logoutHelpText() {
|
|
6
|
+
return [
|
|
7
|
+
"Usage: vibecodr logout [mcp] [--all] [--no-revoke]",
|
|
8
|
+
" vibecodr logout agent --yes",
|
|
9
|
+
"",
|
|
10
|
+
"Most people:",
|
|
11
|
+
" vibecodr logout Sign out this CLI from publishing, uploads, Pulses, and MCP tools.",
|
|
12
|
+
"",
|
|
13
|
+
"Explicit lanes:",
|
|
14
|
+
" vibecodr logout mcp Same as vibecodr logout; clears the MCP Gateway session.",
|
|
15
|
+
" vibecodr logout agent Clears the hosted Agent Computer credential.",
|
|
16
|
+
"",
|
|
17
|
+
"Tip: run `vibecodr status` after logout to confirm what remains connected."
|
|
18
|
+
].join("\n");
|
|
19
|
+
}
|
|
3
20
|
export async function runLogoutCommand(args, context) {
|
|
4
|
-
|
|
21
|
+
const scopedArgs = MCP_GATEWAY_AUTH_SCOPES.has(args[0] ?? "") ? args.slice(1) : args;
|
|
22
|
+
if (showHelpIfRequested(scopedArgs, context, logoutHelpText()))
|
|
5
23
|
return;
|
|
6
|
-
const { flags } = parseFlags(
|
|
24
|
+
const { flags, positionals } = parseFlags(scopedArgs, {
|
|
7
25
|
booleanFlags: ["all", "no-revoke"]
|
|
8
26
|
});
|
|
27
|
+
if (positionals.length > 0) {
|
|
28
|
+
throw new CliError("usage.unknown_logout_scope", `Unknown logout target: ${positionals[0]}`, EXIT_CODES.usage, { nextStep: "Use `vibecodr logout` for the usual path, or `vibecodr logout agent --yes` for the hosted Agent Computer." });
|
|
29
|
+
}
|
|
9
30
|
const config = await context.configStore.load();
|
|
10
31
|
const targetProfiles = flags["all"]
|
|
11
32
|
? Object.keys(config.profiles)
|
|
@@ -23,8 +44,9 @@ export async function runLogoutCommand(args, context) {
|
|
|
23
44
|
schemaVersion: 1,
|
|
24
45
|
results
|
|
25
46
|
}, [
|
|
47
|
+
"Signed out of the Vibecodr MCP Gateway session for this CLI.",
|
|
26
48
|
...results.map((result) => `${result.profile}: local tokens ${result.localTokensDeleted ? "deleted" : "not present"}, revocation ${result.revocationAttempted ? (result.revocationConfirmed ? "confirmed" : "attempted") : "skipped"}`),
|
|
27
|
-
"Editor registrations are unchanged."
|
|
49
|
+
"Editor registrations are unchanged. Agent Computer credentials are unchanged unless you ran `vibecodr logout agent --yes`."
|
|
28
50
|
]);
|
|
29
51
|
}
|
|
30
52
|
//# sourceMappingURL=logout.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"logout.js","sourceRoot":"","sources":["../../src/commands/logout.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAC;AAGhD,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,IAAc,EAAE,OAAuB;IAC5E,IAAI,
|
|
1
|
+
{"version":3,"file":"logout.js","sourceRoot":"","sources":["../../src/commands/logout.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AACxD,OAAO,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAC;AAGhD,MAAM,uBAAuB,GAAG,IAAI,GAAG,CAAC,CAAC,KAAK,EAAE,aAAa,EAAE,SAAS,CAAC,CAAC,CAAC;AAE3E,SAAS,cAAc;IACrB,OAAO;QACL,oDAAoD;QACpD,oCAAoC;QACpC,EAAE;QACF,cAAc;QACd,4FAA4F;QAC5F,EAAE;QACF,iBAAiB;QACjB,kFAAkF;QAClF,sEAAsE;QACtE,EAAE;QACF,4EAA4E;KAC7E,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACf,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,IAAc,EAAE,OAAuB;IAC5E,MAAM,UAAU,GAAG,uBAAuB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IACrF,IAAI,mBAAmB,CAAC,UAAU,EAAE,OAAO,EAAE,cAAc,EAAE,CAAC;QAAE,OAAO;IACvE,MAAM,EAAE,KAAK,EAAE,WAAW,EAAE,GAAG,UAAU,CAAC,UAAU,EAAE;QACpD,YAAY,EAAE,CAAC,KAAK,EAAE,WAAW,CAAC;KACnC,CAAC,CAAC;IACH,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC3B,MAAM,IAAI,QAAQ,CAChB,4BAA4B,EAC5B,0BAA0B,WAAW,CAAC,CAAC,CAAC,EAAE,EAC1C,UAAU,CAAC,KAAK,EAChB,EAAE,QAAQ,EAAE,2GAA2G,EAAE,CAC1H,CAAC;IACJ,CAAC;IACD,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC;IAChD,MAAM,cAAc,GAAG,KAAK,CAAC,KAAK,CAAC;QACjC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC;QAC9B,CAAC,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC,OAAO,IAAI,MAAM,CAAC,cAAc,CAAC,CAAC;IAE7D,MAAM,OAAO,GAAG,EAAE,CAAC;IACnB,KAAK,MAAM,WAAW,IAAI,cAAc,EAAE,CAAC;QACzC,OAAO,CAAC,IAAI,CAAC;YACX,OAAO,EAAE,WAAW;YACpB,GAAG,CAAC,MAAM,OAAO,CAAC,YAAY,CAAC,MAAM,CAAC,WAAW,EAAE;gBACjD,QAAQ,EAAE,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;aACtC,CAAC,CAAC;SACJ,CAAC,CAAC;IACL,CAAC;IAED,OAAO,CAAC,MAAM,CAAC,OAAO,CACpB;QACE,aAAa,EAAE,CAAC;QAChB,OAAO;KACR,EACD;QACE,8DAA8D;QAC9D,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,GAAG,MAAM,CAAC,OAAO,kBAAkB,MAAM,CAAC,kBAAkB,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,aAAa,gBAAgB,MAAM,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,mBAAmB,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC;QACvO,4HAA4H;KAC7H,CACF,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mcp.d.ts","sourceRoot":"","sources":["../../src/commands/mcp.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAEnD,wBAAsB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CAyB1F"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { CliError, EXIT_CODES } from "../cli/errors.js";
|
|
2
|
+
import { isHelpToken } from "../cli/parse.js";
|
|
3
|
+
import { mcpCommandSuggestion, mcpHelpText } from "../app/help.js";
|
|
4
|
+
import { runCallCommand } from "./call.js";
|
|
5
|
+
import { runToolsCommand } from "./tools.js";
|
|
6
|
+
export async function runMcpCommand(args, context) {
|
|
7
|
+
const [subcommand, ...rest] = args;
|
|
8
|
+
if (!subcommand || isHelpToken(subcommand)) {
|
|
9
|
+
process.stdout.write(`${mcpHelpText()}\n`);
|
|
10
|
+
return;
|
|
11
|
+
}
|
|
12
|
+
switch (subcommand) {
|
|
13
|
+
case "tools":
|
|
14
|
+
await runToolsCommand(rest, context);
|
|
15
|
+
return;
|
|
16
|
+
case "call":
|
|
17
|
+
await runCallCommand(rest, context);
|
|
18
|
+
return;
|
|
19
|
+
case "help":
|
|
20
|
+
await runMcpCommand(rest, context);
|
|
21
|
+
return;
|
|
22
|
+
default:
|
|
23
|
+
throw new CliError("usage.unknown_mcp_command", `Unknown MCP Gateway command: ${subcommand}`, EXIT_CODES.usage, { nextStep: mcpCommandSuggestion(subcommand) });
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
//# sourceMappingURL=mcp.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mcp.js","sourceRoot":"","sources":["../../src/commands/mcp.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AACxD,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAC9C,OAAO,EAAE,oBAAoB,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AACnE,OAAO,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAC3C,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAG7C,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,IAAc,EAAE,OAAuB;IACzE,MAAM,CAAC,UAAU,EAAE,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC;IACnC,IAAI,CAAC,UAAU,IAAI,WAAW,CAAC,UAAU,CAAC,EAAE,CAAC;QAC3C,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,WAAW,EAAE,IAAI,CAAC,CAAC;QAC3C,OAAO;IACT,CAAC;IAED,QAAQ,UAAU,EAAE,CAAC;QACnB,KAAK,OAAO;YACV,MAAM,eAAe,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;YACrC,OAAO;QACT,KAAK,MAAM;YACT,MAAM,cAAc,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;YACpC,OAAO;QACT,KAAK,MAAM;YACT,MAAM,aAAa,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;YACnC,OAAO;QACT;YACE,MAAM,IAAI,QAAQ,CAChB,2BAA2B,EAC3B,gCAAgC,UAAU,EAAE,EAC5C,UAAU,CAAC,KAAK,EAChB,EAAE,QAAQ,EAAE,oBAAoB,CAAC,UAAU,CAAC,EAAE,CAC/C,CAAC;IACN,CAAC;AACH,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"status.d.ts","sourceRoot":"","sources":["../../src/commands/status.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"status.d.ts","sourceRoot":"","sources":["../../src/commands/status.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAsGnD,wBAAsB,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CAuD7F"}
|
package/dist/commands/status.js
CHANGED
|
@@ -23,6 +23,66 @@ async function inspectInstall(entry) {
|
|
|
23
23
|
};
|
|
24
24
|
}
|
|
25
25
|
}
|
|
26
|
+
async function inspectCredentialSurface(context, surface, endpoint) {
|
|
27
|
+
if (!context.credentialBroker) {
|
|
28
|
+
return {
|
|
29
|
+
surface,
|
|
30
|
+
endpoint,
|
|
31
|
+
authenticated: false,
|
|
32
|
+
error: "credential broker unavailable"
|
|
33
|
+
};
|
|
34
|
+
}
|
|
35
|
+
try {
|
|
36
|
+
const credential = await context.credentialBroker.getCredentialForEndpoint(endpoint);
|
|
37
|
+
return {
|
|
38
|
+
surface,
|
|
39
|
+
endpoint,
|
|
40
|
+
authenticated: Boolean(credential),
|
|
41
|
+
...(credential ? { credentialKind: credential.kind, serviceId: credential.serviceId } : {}),
|
|
42
|
+
...(credential?.expiresAt !== undefined ? { expiresAt: credential.expiresAt } : {})
|
|
43
|
+
};
|
|
44
|
+
}
|
|
45
|
+
catch (error) {
|
|
46
|
+
return {
|
|
47
|
+
surface,
|
|
48
|
+
endpoint,
|
|
49
|
+
authenticated: false,
|
|
50
|
+
error: error instanceof Error ? error.message : String(error)
|
|
51
|
+
};
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
function credentialSurfaceLine(surface) {
|
|
55
|
+
const label = surface.surface === "agentComputer" ? "Agent Computer" : "MCP Gateway";
|
|
56
|
+
if (surface.error)
|
|
57
|
+
return `${label}: credential state unavailable (${surface.error})`;
|
|
58
|
+
if (!surface.authenticated)
|
|
59
|
+
return `${label}: not authenticated`;
|
|
60
|
+
const kind = surface.credentialKind ? ` via ${formatCredentialKind(surface.credentialKind)}` : "";
|
|
61
|
+
return `${label}: signed in${kind}`;
|
|
62
|
+
}
|
|
63
|
+
function formatCredentialKind(kind) {
|
|
64
|
+
switch (kind) {
|
|
65
|
+
case "api_key":
|
|
66
|
+
return "API key";
|
|
67
|
+
case "oauth":
|
|
68
|
+
return "OAuth";
|
|
69
|
+
case "token":
|
|
70
|
+
return "temporary token";
|
|
71
|
+
default:
|
|
72
|
+
return kind;
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
function statusNextStep(credentialSurfaces) {
|
|
76
|
+
const agentComputer = credentialSurfaces.find((surface) => surface.surface === "agentComputer");
|
|
77
|
+
const mcpGateway = credentialSurfaces.find((surface) => surface.surface === "mcpGateway");
|
|
78
|
+
if (!mcpGateway?.authenticated) {
|
|
79
|
+
return "Next: run `vibecodr login` for publishing, uploads, Pulses, and MCP Gateway tools.";
|
|
80
|
+
}
|
|
81
|
+
if (!agentComputer?.authenticated) {
|
|
82
|
+
return "Next: run `vibecodr start` when you want hosted browser/computer work.";
|
|
83
|
+
}
|
|
84
|
+
return "Next: run `vibecodr browser read https://example.com` or `vibecodr mcp tools`.";
|
|
85
|
+
}
|
|
26
86
|
export async function runStatusCommand(args, context) {
|
|
27
87
|
if (showHelpIfRequested(args, context, "Usage: vibecodr status [--probe] [--show-installs]"))
|
|
28
88
|
return;
|
|
@@ -32,6 +92,10 @@ export async function runStatusCommand(args, context) {
|
|
|
32
92
|
const { profileName, profile, serverUrl } = await context.tokenManager.resolveProfile(context.globalOptions);
|
|
33
93
|
const session = await context.tokenManager.getSession(profileName, serverUrl);
|
|
34
94
|
const sessionState = context.tokenManager.sessionState(session);
|
|
95
|
+
const credentialSurfaces = await Promise.all([
|
|
96
|
+
inspectCredentialSurface(context, "agentComputer", "tools.vibecodr.space"),
|
|
97
|
+
inspectCredentialSurface(context, "mcpGateway", "openai.vibecodr.space/mcp")
|
|
98
|
+
]);
|
|
35
99
|
const installs = flags["show-installs"]
|
|
36
100
|
? await Promise.all((await new InstallManifestStore().find(() => true)).map((entry) => inspectInstall(entry)))
|
|
37
101
|
: [];
|
|
@@ -43,26 +107,34 @@ export async function runStatusCommand(args, context) {
|
|
|
43
107
|
pkceS256: Boolean(discovery.authorizationServerMetadata?.code_challenge_methods_supported?.includes("S256"))
|
|
44
108
|
};
|
|
45
109
|
}
|
|
46
|
-
|
|
110
|
+
const value = {
|
|
47
111
|
schemaVersion: 1,
|
|
48
112
|
profile: profileName,
|
|
49
113
|
serverUrl,
|
|
50
114
|
sessionState,
|
|
51
115
|
registrationMode: session?.registrationMode || profile.registrationMode,
|
|
52
116
|
expiresAt: session?.expiresAt,
|
|
117
|
+
credentialSurfaces,
|
|
53
118
|
installs,
|
|
54
119
|
...(probe ? { probe } : {})
|
|
55
|
-
}
|
|
120
|
+
};
|
|
121
|
+
const humanLines = [
|
|
122
|
+
"Vibecodr status",
|
|
123
|
+
...credentialSurfaces.map((surface) => credentialSurfaceLine(surface)),
|
|
124
|
+
statusNextStep(credentialSurfaces),
|
|
125
|
+
"",
|
|
126
|
+
"Details:",
|
|
56
127
|
`Profile: ${profileName}`,
|
|
57
|
-
`
|
|
58
|
-
`
|
|
128
|
+
`MCP server: ${serverUrl}`,
|
|
129
|
+
`MCP session: ${sessionState}`,
|
|
59
130
|
`Registration mode: ${session?.registrationMode || profile.registrationMode}`,
|
|
60
|
-
`
|
|
131
|
+
`MCP session expires: ${session?.expiresAt || "not logged in"}`,
|
|
61
132
|
...(flags["show-installs"] ? [`Managed installs: ${installs.length}`] : []),
|
|
62
133
|
...(flags["show-installs"]
|
|
63
134
|
? installs.map((install) => `Install: ${install.client} ${install.scope} ${install.location} [${install.status}]`)
|
|
64
135
|
: []),
|
|
65
136
|
...(probe ? [`Authorization server: ${String(probe["authorizationServerUrl"])}`, `PKCE S256: ${probe["pkceS256"] ? "yes" : "no"}`] : [])
|
|
66
|
-
]
|
|
137
|
+
];
|
|
138
|
+
context.output.success(value, humanLines);
|
|
67
139
|
}
|
|
68
140
|
//# sourceMappingURL=status.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"status.js","sourceRoot":"","sources":["../../src/commands/status.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC1C,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAC;AAChD,OAAO,EAAE,oBAAoB,EAAE,MAAM,gCAAgC,CAAC;
|
|
1
|
+
{"version":3,"file":"status.js","sourceRoot":"","sources":["../../src/commands/status.ts"],"names":[],"mappings":"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"}
|