@zivis/mcp 0.1.0-alpha.2 → 0.1.0-alpha.21
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/api-client.d.ts +11 -11
- package/dist/api-client.js +41 -36
- package/dist/api-client.js.map +1 -1
- package/dist/auth/index.d.ts +9 -5
- package/dist/auth/index.js +33 -17
- package/dist/auth/index.js.map +1 -1
- package/dist/auth/keychain.d.ts +6 -5
- package/dist/auth/keychain.js +82 -69
- package/dist/auth/keychain.js.map +1 -1
- package/dist/auth/oauth.d.ts +18 -0
- package/dist/auth/oauth.js +55 -6
- package/dist/auth/oauth.js.map +1 -1
- package/dist/auth/sessions.d.ts +5 -4
- package/dist/auth/sessions.js +20 -14
- package/dist/auth/sessions.js.map +1 -1
- package/dist/auth/token-refresh.d.ts +2 -2
- package/dist/auth/token-refresh.js +42 -9
- package/dist/auth/token-refresh.js.map +1 -1
- package/dist/cli.d.ts +7 -15
- package/dist/cli.js +36 -904
- package/dist/cli.js.map +1 -1
- package/dist/lib/next-steps.d.ts +57 -0
- package/dist/lib/next-steps.js +45 -0
- package/dist/lib/next-steps.js.map +1 -0
- package/dist/project-binding.d.ts +19 -2
- package/dist/project-binding.js +57 -3
- package/dist/project-binding.js.map +1 -1
- package/dist/prompts/audit-dependencies.d.ts +10 -0
- package/dist/prompts/audit-dependencies.js +56 -0
- package/dist/prompts/audit-dependencies.js.map +1 -0
- package/dist/prompts/getting-started.d.ts +12 -0
- package/dist/prompts/getting-started.js +48 -0
- package/dist/prompts/getting-started.js.map +1 -0
- package/dist/prompts/index.d.ts +14 -0
- package/dist/prompts/index.js +25 -0
- package/dist/prompts/index.js.map +1 -0
- package/dist/prompts/prep-for-launch.d.ts +9 -0
- package/dist/prompts/prep-for-launch.js +62 -0
- package/dist/prompts/prep-for-launch.js.map +1 -0
- package/dist/prompts/secure-my-app.d.ts +9 -0
- package/dist/prompts/secure-my-app.js +70 -0
- package/dist/prompts/secure-my-app.js.map +1 -0
- package/dist/prompts/weekly-check.d.ts +9 -0
- package/dist/prompts/weekly-check.js +48 -0
- package/dist/prompts/weekly-check.js.map +1 -0
- package/dist/server.d.ts +1 -1
- package/dist/server.js +119 -43
- package/dist/server.js.map +1 -1
- package/dist/tools/check-project.d.ts +7 -7
- package/dist/tools/check-project.js +127 -95
- package/dist/tools/check-project.js.map +1 -1
- package/dist/tools/check-repo-trust.d.ts +4 -10
- package/dist/tools/check-repo-trust.js +56 -27
- package/dist/tools/check-repo-trust.js.map +1 -1
- package/dist/tools/enterprise/get-campaign.d.ts +27 -0
- package/dist/tools/enterprise/get-campaign.js +31 -0
- package/dist/tools/enterprise/get-campaign.js.map +1 -0
- package/dist/tools/enterprise/list-agents.d.ts +1 -1
- package/dist/tools/enterprise/list-attack-scenarios.d.ts +29 -0
- package/dist/tools/enterprise/list-attack-scenarios.js +69 -0
- package/dist/tools/enterprise/list-attack-scenarios.js.map +1 -0
- package/dist/tools/enterprise/list-attack-step-library-tests.d.ts +29 -0
- package/dist/tools/enterprise/list-attack-step-library-tests.js +61 -0
- package/dist/tools/enterprise/list-attack-step-library-tests.js.map +1 -0
- package/dist/tools/enterprise/list-campaigns.d.ts +37 -0
- package/dist/tools/enterprise/list-campaigns.js +60 -0
- package/dist/tools/enterprise/list-campaigns.js.map +1 -0
- package/dist/tools/enterprise/list-threat-model-review-items.d.ts +35 -0
- package/dist/tools/enterprise/list-threat-model-review-items.js +60 -0
- package/dist/tools/enterprise/list-threat-model-review-items.js.map +1 -0
- package/dist/tools/enterprise/list-threat-model-versions.d.ts +29 -0
- package/dist/tools/enterprise/list-threat-model-versions.js +60 -0
- package/dist/tools/enterprise/list-threat-model-versions.js.map +1 -0
- package/dist/tools/enterprise/manage-campaign-agent-instance.d.ts +42 -0
- package/dist/tools/enterprise/manage-campaign-agent-instance.js +68 -0
- package/dist/tools/enterprise/manage-campaign-agent-instance.js.map +1 -0
- package/dist/tools/enterprise/manage-campaign-target.d.ts +44 -0
- package/dist/tools/enterprise/manage-campaign-target.js +70 -0
- package/dist/tools/enterprise/manage-campaign-target.js.map +1 -0
- package/dist/tools/enterprise/manage-campaign.d.ts +62 -0
- package/dist/tools/enterprise/manage-campaign.js +114 -0
- package/dist/tools/enterprise/manage-campaign.js.map +1 -0
- package/dist/tools/enterprise/manage-finding.d.ts +1 -1
- package/dist/tools/enterprise/manage-threat-model-analysis.d.ts +52 -0
- package/dist/tools/enterprise/manage-threat-model-analysis.js +92 -0
- package/dist/tools/enterprise/manage-threat-model-analysis.js.map +1 -0
- package/dist/tools/enterprise/manage-threat-model-review.d.ts +47 -0
- package/dist/tools/enterprise/manage-threat-model-review.js +82 -0
- package/dist/tools/enterprise/manage-threat-model-review.js.map +1 -0
- package/dist/tools/get-application-auth-config.d.ts +27 -0
- package/dist/tools/get-application-auth-config.js +44 -0
- package/dist/tools/get-application-auth-config.js.map +1 -0
- package/dist/tools/get-finding-details.d.ts +4 -10
- package/dist/tools/get-finding-details.js +28 -10
- package/dist/tools/get-finding-details.js.map +1 -1
- package/dist/tools/get-findings.d.ts +4 -10
- package/dist/tools/get-findings.js +44 -23
- package/dist/tools/get-findings.js.map +1 -1
- package/dist/tools/get-started.d.ts +28 -0
- package/dist/tools/get-started.js +364 -0
- package/dist/tools/get-started.js.map +1 -0
- package/dist/tools/list-applications.d.ts +1 -1
- package/dist/tools/list-scans.d.ts +4 -10
- package/dist/tools/list-scans.js +55 -21
- package/dist/tools/list-scans.js.map +1 -1
- package/dist/tools/list-test-scenarios.d.ts +4 -10
- package/dist/tools/list-test-scenarios.js +41 -13
- package/dist/tools/list-test-scenarios.js.map +1 -1
- package/dist/tools/local-scan.d.ts +1 -1
- package/dist/tools/manage-application.d.ts +72 -0
- package/dist/tools/manage-application.js +138 -0
- package/dist/tools/manage-application.js.map +1 -0
- package/dist/tools/manage-endpoint-lifecycle.d.ts +90 -0
- package/dist/tools/manage-endpoint-lifecycle.js +191 -0
- package/dist/tools/manage-endpoint-lifecycle.js.map +1 -0
- package/dist/tools/open-in-ide.d.ts +1 -1
- package/dist/tools/setup-red-team-target.d.ts +6 -12
- package/dist/tools/setup-red-team-target.js +51 -20
- package/dist/tools/setup-red-team-target.js.map +1 -1
- package/dist/tools/triage-finding.d.ts +4 -10
- package/dist/tools/triage-finding.js +30 -21
- package/dist/tools/triage-finding.js.map +1 -1
- package/dist/types.d.ts +42 -2
- package/dist/types.js +29 -23
- package/dist/types.js.map +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"keychain.js","sourceRoot":"","sources":["../../src/auth/keychain.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACtC,OAAO,KAAK,EAAE,MAAM,kBAAkB,CAAC;AACvC,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,KAAK,MAAM,MAAM,aAAa,CAAC;AACtC,OAAO,EAAE,UAAU,
|
|
1
|
+
{"version":3,"file":"keychain.js","sourceRoot":"","sources":["../../src/auth/keychain.ts"],"names":[],"mappings":"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"}
|
package/dist/auth/oauth.d.ts
CHANGED
|
@@ -32,7 +32,25 @@ import type { OAuthTokens, ZivisConfig } from "../types.js";
|
|
|
32
32
|
export interface LoginOptions {
|
|
33
33
|
/** Human-readable org name, shown in the pre-browser confirmation prompt. */
|
|
34
34
|
orgName?: string;
|
|
35
|
+
/**
|
|
36
|
+
* Optional human-readable session label for prompts.
|
|
37
|
+
* Useful when callers use an internal storage session name (e.g. temporary bind sessions)
|
|
38
|
+
* but want to display a cleaner label to users.
|
|
39
|
+
*/
|
|
40
|
+
sessionLabel?: string;
|
|
35
41
|
/** Skip the pre-browser confirmation prompt (for scripted/interactive-wizard callers). */
|
|
36
42
|
skipConfirm?: boolean;
|
|
43
|
+
/**
|
|
44
|
+
* Instead of auto-opening the browser, print the auth URL and wait for the user
|
|
45
|
+
* to paste it into a private/incognito window manually. Useful when the browser
|
|
46
|
+
* already has a session for a different org that would override the requested org.
|
|
47
|
+
*/
|
|
48
|
+
printUrlOnly?: boolean;
|
|
49
|
+
/**
|
|
50
|
+
* Try to open the auth URL in a private/incognito browser window.
|
|
51
|
+
* Attempts Chrome (--incognito) then Firefox (-private-window) then falls back
|
|
52
|
+
* to printing the URL for manual paste.
|
|
53
|
+
*/
|
|
54
|
+
incognito?: boolean;
|
|
37
55
|
}
|
|
38
56
|
export declare function login(config?: ZivisConfig, session?: string, organizationId?: string, opts?: LoginOptions): Promise<OAuthTokens>;
|
package/dist/auth/oauth.js
CHANGED
|
@@ -19,7 +19,7 @@ import { URL } from "node:url";
|
|
|
19
19
|
import open from "open";
|
|
20
20
|
import { keychainStore, getSessionAccount } from "./keychain.js";
|
|
21
21
|
import { decodeJwtPayload } from "./jwt.js";
|
|
22
|
-
import { DEFAULT_CONFIG } from "../types.js";
|
|
22
|
+
import { DEFAULT_CONFIG, credentialStorageFromConfig } from "../types.js";
|
|
23
23
|
const LOGIN_TIMEOUT_MS = 5 * 60 * 1000; // 5 minutes
|
|
24
24
|
function generatePKCE() {
|
|
25
25
|
const verifier = crypto.randomBytes(32).toString("base64url");
|
|
@@ -169,6 +169,18 @@ async function exchangeCodeForTokens(config, code, codeVerifier) {
|
|
|
169
169
|
throw new Error(errorMsg);
|
|
170
170
|
}
|
|
171
171
|
const data = (await response.json());
|
|
172
|
+
if (!data.refresh_token) {
|
|
173
|
+
// This means WorkOS isn't issuing refresh tokens for this client.
|
|
174
|
+
// Most likely cause: the OAuth client in the WorkOS dashboard doesn't have
|
|
175
|
+
// "Refresh Tokens" enabled, or offline_access scope was rejected.
|
|
176
|
+
// Without a refresh token the user will be logged out after every access token expiry.
|
|
177
|
+
console.error("[zivis] WARNING: WorkOS did not return a refresh_token. " +
|
|
178
|
+
"Verify the OAuth client has Refresh Tokens / offline_access enabled in the WorkOS dashboard. " +
|
|
179
|
+
"Without this, sessions will expire and require manual re-login.");
|
|
180
|
+
}
|
|
181
|
+
else {
|
|
182
|
+
console.error("[zivis] Token exchange complete — refresh_token received, session will auto-renew.");
|
|
183
|
+
}
|
|
172
184
|
return {
|
|
173
185
|
access_token: data.access_token,
|
|
174
186
|
refresh_token: data.refresh_token,
|
|
@@ -189,7 +201,8 @@ export async function login(config = DEFAULT_CONFIG, session, organizationId, op
|
|
|
189
201
|
const orgLabel = opts.orgName
|
|
190
202
|
? `${opts.orgName} (${organizationId})`
|
|
191
203
|
: organizationId;
|
|
192
|
-
const
|
|
204
|
+
const displaySession = opts.sessionLabel ?? session;
|
|
205
|
+
const sessionLabel = displaySession ? ` as session "${displaySession}"` : "";
|
|
193
206
|
console.error("");
|
|
194
207
|
console.error(`[zivis] About to authenticate to org: ${orgLabel}${sessionLabel}`);
|
|
195
208
|
const rl = readline.createInterface({
|
|
@@ -211,9 +224,45 @@ export async function login(config = DEFAULT_CONFIG, session, organizationId, op
|
|
|
211
224
|
}
|
|
212
225
|
// Start callback server before opening browser
|
|
213
226
|
const codePromise = startCallbackServer(config.callbackPort, state);
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
227
|
+
if (opts.printUrlOnly) {
|
|
228
|
+
console.error("[zivis] Open this URL in a private/incognito browser window:");
|
|
229
|
+
console.error("");
|
|
230
|
+
console.error(` ${authUrl}`);
|
|
231
|
+
console.error("");
|
|
232
|
+
console.error("[zivis] Waiting for login...");
|
|
233
|
+
}
|
|
234
|
+
else if (opts.incognito) {
|
|
235
|
+
let opened = false;
|
|
236
|
+
// Try Chrome incognito, then Firefox private, then fall back to printing URL
|
|
237
|
+
for (const app of [
|
|
238
|
+
{ name: "google chrome", args: ["--incognito"] },
|
|
239
|
+
{ name: "chromium", args: ["--incognito"] },
|
|
240
|
+
{ name: "firefox", args: ["-private-window"] },
|
|
241
|
+
]) {
|
|
242
|
+
try {
|
|
243
|
+
await open(authUrl, { app: { name: app.name, arguments: [authUrl, ...app.args] } });
|
|
244
|
+
console.error(`[zivis] Opened private window in ${app.name} — waiting for login...`);
|
|
245
|
+
opened = true;
|
|
246
|
+
break;
|
|
247
|
+
}
|
|
248
|
+
catch {
|
|
249
|
+
// browser not found, try next
|
|
250
|
+
}
|
|
251
|
+
}
|
|
252
|
+
if (!opened) {
|
|
253
|
+
console.error("[zivis] Could not open an incognito window automatically.");
|
|
254
|
+
console.error("[zivis] Paste this URL into a private/incognito browser window:");
|
|
255
|
+
console.error("");
|
|
256
|
+
console.error(` ${authUrl}`);
|
|
257
|
+
console.error("");
|
|
258
|
+
console.error("[zivis] Waiting for login...");
|
|
259
|
+
}
|
|
260
|
+
}
|
|
261
|
+
else {
|
|
262
|
+
console.error("[zivis] Opening browser for authentication...");
|
|
263
|
+
await open(authUrl);
|
|
264
|
+
console.error("[zivis] Waiting for login...");
|
|
265
|
+
}
|
|
217
266
|
// Wait for the authorization code
|
|
218
267
|
const code = await codePromise;
|
|
219
268
|
// Exchange code for tokens
|
|
@@ -235,7 +284,7 @@ export async function login(config = DEFAULT_CONFIG, session, organizationId, op
|
|
|
235
284
|
console.error(`[zivis] \u2713 JWT org_id verified: ${jwtOrgId}`);
|
|
236
285
|
}
|
|
237
286
|
// Store in keychain (session-qualified key for multi-tenant isolation)
|
|
238
|
-
await keychainStore(getSessionAccount(session), JSON.stringify(tokens));
|
|
287
|
+
await keychainStore(getSessionAccount(session), JSON.stringify(tokens), credentialStorageFromConfig(config));
|
|
239
288
|
return tokens;
|
|
240
289
|
}
|
|
241
290
|
//# sourceMappingURL=oauth.js.map
|
package/dist/auth/oauth.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"oauth.js","sourceRoot":"","sources":["../../src/auth/oauth.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,KAAK,MAAM,MAAM,aAAa,CAAC;AACtC,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,KAAK,QAAQ,MAAM,wBAAwB,CAAC;AACnD,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;AAC/B,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AACjE,OAAO,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAE5C,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"oauth.js","sourceRoot":"","sources":["../../src/auth/oauth.ts"],"names":[],"mappings":"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"}
|
package/dist/auth/sessions.d.ts
CHANGED
|
@@ -7,22 +7,23 @@
|
|
|
7
7
|
* Session index file: ~/.config/{configDir}/sessions.json
|
|
8
8
|
*/
|
|
9
9
|
import type { SessionIndex, SessionInfo } from "../types.js";
|
|
10
|
+
import { type CredentialStorage } from "../types.js";
|
|
10
11
|
/**
|
|
11
12
|
* Load the session index from disk.
|
|
12
13
|
* Returns an empty object if the file doesn't exist.
|
|
13
14
|
*/
|
|
14
|
-
export declare function loadSessionIndex(): Promise<SessionIndex>;
|
|
15
|
+
export declare function loadSessionIndex(storage?: CredentialStorage): Promise<SessionIndex>;
|
|
15
16
|
/**
|
|
16
17
|
* Add or update a session entry in the index.
|
|
17
18
|
*/
|
|
18
|
-
export declare function saveSessionEntry(name: string, email: string): Promise<void>;
|
|
19
|
+
export declare function saveSessionEntry(name: string, email: string, storage?: CredentialStorage): Promise<void>;
|
|
19
20
|
/**
|
|
20
21
|
* Remove a session entry from the index.
|
|
21
22
|
*/
|
|
22
|
-
export declare function removeSessionEntry(name: string): Promise<void>;
|
|
23
|
+
export declare function removeSessionEntry(name: string, storage?: CredentialStorage): Promise<void>;
|
|
23
24
|
/**
|
|
24
25
|
* List all sessions with their metadata.
|
|
25
26
|
*/
|
|
26
|
-
export declare function listSessions(): Promise<Array<{
|
|
27
|
+
export declare function listSessions(storage?: CredentialStorage): Promise<Array<{
|
|
27
28
|
name: string;
|
|
28
29
|
} & SessionInfo>>;
|
package/dist/auth/sessions.js
CHANGED
|
@@ -10,8 +10,14 @@ import * as fs from "node:fs/promises";
|
|
|
10
10
|
import * as path from "node:path";
|
|
11
11
|
import * as os from "node:os";
|
|
12
12
|
import { ENV_CONFIG } from "../types.js";
|
|
13
|
-
function
|
|
14
|
-
|
|
13
|
+
function resolveSessionStorage(storage) {
|
|
14
|
+
return (storage ?? {
|
|
15
|
+
keychainPrefix: ENV_CONFIG.keychainPrefix,
|
|
16
|
+
configDir: ENV_CONFIG.configDir,
|
|
17
|
+
});
|
|
18
|
+
}
|
|
19
|
+
function getSessionIndexPath(storage) {
|
|
20
|
+
const { configDir } = resolveSessionStorage(storage);
|
|
15
21
|
const base = process.platform === "win32"
|
|
16
22
|
? process.env.APPDATA || os.homedir()
|
|
17
23
|
: path.join(os.homedir(), ".config");
|
|
@@ -21,9 +27,9 @@ function getSessionIndexPath() {
|
|
|
21
27
|
* Load the session index from disk.
|
|
22
28
|
* Returns an empty object if the file doesn't exist.
|
|
23
29
|
*/
|
|
24
|
-
export async function loadSessionIndex() {
|
|
30
|
+
export async function loadSessionIndex(storage) {
|
|
25
31
|
try {
|
|
26
|
-
const raw = await fs.readFile(getSessionIndexPath(), "utf8");
|
|
32
|
+
const raw = await fs.readFile(getSessionIndexPath(storage), "utf8");
|
|
27
33
|
return JSON.parse(raw);
|
|
28
34
|
}
|
|
29
35
|
catch {
|
|
@@ -33,8 +39,8 @@ export async function loadSessionIndex() {
|
|
|
33
39
|
/**
|
|
34
40
|
* Save the full session index to disk.
|
|
35
41
|
*/
|
|
36
|
-
async function saveSessionIndex(index) {
|
|
37
|
-
const filePath = getSessionIndexPath();
|
|
42
|
+
async function saveSessionIndex(index, storage) {
|
|
43
|
+
const filePath = getSessionIndexPath(storage);
|
|
38
44
|
await fs.mkdir(path.dirname(filePath), { recursive: true });
|
|
39
45
|
await fs.writeFile(filePath, JSON.stringify(index, null, 2) + "\n", {
|
|
40
46
|
mode: 0o600,
|
|
@@ -43,27 +49,27 @@ async function saveSessionIndex(index) {
|
|
|
43
49
|
/**
|
|
44
50
|
* Add or update a session entry in the index.
|
|
45
51
|
*/
|
|
46
|
-
export async function saveSessionEntry(name, email) {
|
|
47
|
-
const index = await loadSessionIndex();
|
|
52
|
+
export async function saveSessionEntry(name, email, storage) {
|
|
53
|
+
const index = await loadSessionIndex(storage);
|
|
48
54
|
index[name] = {
|
|
49
55
|
email,
|
|
50
56
|
createdAt: index[name]?.createdAt || new Date().toISOString(),
|
|
51
57
|
};
|
|
52
|
-
await saveSessionIndex(index);
|
|
58
|
+
await saveSessionIndex(index, storage);
|
|
53
59
|
}
|
|
54
60
|
/**
|
|
55
61
|
* Remove a session entry from the index.
|
|
56
62
|
*/
|
|
57
|
-
export async function removeSessionEntry(name) {
|
|
58
|
-
const index = await loadSessionIndex();
|
|
63
|
+
export async function removeSessionEntry(name, storage) {
|
|
64
|
+
const index = await loadSessionIndex(storage);
|
|
59
65
|
delete index[name];
|
|
60
|
-
await saveSessionIndex(index);
|
|
66
|
+
await saveSessionIndex(index, storage);
|
|
61
67
|
}
|
|
62
68
|
/**
|
|
63
69
|
* List all sessions with their metadata.
|
|
64
70
|
*/
|
|
65
|
-
export async function listSessions() {
|
|
66
|
-
const index = await loadSessionIndex();
|
|
71
|
+
export async function listSessions(storage) {
|
|
72
|
+
const index = await loadSessionIndex(storage);
|
|
67
73
|
return Object.entries(index).map(([name, info]) => ({ name, ...info }));
|
|
68
74
|
}
|
|
69
75
|
//# sourceMappingURL=sessions.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sessions.js","sourceRoot":"","sources":["../../src/auth/sessions.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,MAAM,kBAAkB,CAAC;AACvC,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAE9B,OAAO,EAAE,UAAU,
|
|
1
|
+
{"version":3,"file":"sessions.js","sourceRoot":"","sources":["../../src/auth/sessions.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,MAAM,kBAAkB,CAAC;AACvC,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAE9B,OAAO,EAAE,UAAU,EAA0B,MAAM,aAAa,CAAC;AAEjE,SAAS,qBAAqB,CAAC,OAA2B;IACxD,OAAO,CACL,OAAO,IAAI;QACT,cAAc,EAAE,UAAU,CAAC,cAAc;QACzC,SAAS,EAAE,UAAU,CAAC,SAAS;KAChC,CACF,CAAC;AACJ,CAAC;AAED,SAAS,mBAAmB,CAAC,OAA2B;IACtD,MAAM,EAAE,SAAS,EAAE,GAAG,qBAAqB,CAAC,OAAO,CAAC,CAAC;IACrD,MAAM,IAAI,GACR,OAAO,CAAC,QAAQ,KAAK,OAAO;QAC1B,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,IAAI,EAAE,CAAC,OAAO,EAAE;QACrC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,SAAS,CAAC,CAAC;IACzC,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,EAAE,eAAe,CAAC,CAAC;AACrD,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,OAA2B;IAE3B,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,mBAAmB,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC,CAAC;QACpE,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAiB,CAAC;IACzC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,gBAAgB,CAC7B,KAAmB,EACnB,OAA2B;IAE3B,MAAM,QAAQ,GAAG,mBAAmB,CAAC,OAAO,CAAC,CAAC;IAC9C,MAAM,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC5D,MAAM,EAAE,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,EAAE;QAClE,IAAI,EAAE,KAAK;KACZ,CAAC,CAAC;AACL,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,IAAY,EACZ,KAAa,EACb,OAA2B;IAE3B,MAAM,KAAK,GAAG,MAAM,gBAAgB,CAAC,OAAO,CAAC,CAAC;IAC9C,KAAK,CAAC,IAAI,CAAC,GAAG;QACZ,KAAK;QACL,SAAS,EAAE,KAAK,CAAC,IAAI,CAAC,EAAE,SAAS,IAAI,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;KAC9D,CAAC;IACF,MAAM,gBAAgB,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;AACzC,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,IAAY,EACZ,OAA2B;IAE3B,MAAM,KAAK,GAAG,MAAM,gBAAgB,CAAC,OAAO,CAAC,CAAC;IAC9C,OAAO,KAAK,CAAC,IAAI,CAAC,CAAC;IACnB,MAAM,gBAAgB,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;AACzC,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY,CAChC,OAA2B;IAI3B,MAAM,KAAK,GAAG,MAAM,gBAAgB,CAAC,OAAO,CAAC,CAAC;IAC9C,OAAO,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,GAAG,IAAI,EAAE,CAAC,CAAC,CAAC;AAC1E,CAAC"}
|
|
@@ -5,12 +5,12 @@
|
|
|
5
5
|
* refresh token. Checks expiry with a 5-minute buffer to avoid
|
|
6
6
|
* mid-request expirations.
|
|
7
7
|
*/
|
|
8
|
-
import type { OAuthTokens, ZivisConfig } from "../types.js";
|
|
8
|
+
import type { OAuthTokens, ZivisConfig, CredentialStorage } from "../types.js";
|
|
9
9
|
/**
|
|
10
10
|
* Load OAuth tokens from keychain
|
|
11
11
|
* @param session - Optional named session for multi-tenant isolation
|
|
12
12
|
*/
|
|
13
|
-
export declare function loadTokens(session?: string): Promise<OAuthTokens | null>;
|
|
13
|
+
export declare function loadTokens(session?: string, storage?: CredentialStorage): Promise<OAuthTokens | null>;
|
|
14
14
|
/**
|
|
15
15
|
* Check if the access token is still valid (with 5-min buffer)
|
|
16
16
|
*/
|
|
@@ -6,14 +6,14 @@
|
|
|
6
6
|
* mid-request expirations.
|
|
7
7
|
*/
|
|
8
8
|
import { keychainRead, keychainStore, keychainDelete, getSessionAccount } from "./keychain.js";
|
|
9
|
-
import { DEFAULT_CONFIG } from "../types.js";
|
|
10
|
-
const EXPIRY_BUFFER_MS =
|
|
9
|
+
import { DEFAULT_CONFIG, credentialStorageFromConfig } from "../types.js";
|
|
10
|
+
const EXPIRY_BUFFER_MS = 30 * 1000; // 30 seconds
|
|
11
11
|
/**
|
|
12
12
|
* Load OAuth tokens from keychain
|
|
13
13
|
* @param session - Optional named session for multi-tenant isolation
|
|
14
14
|
*/
|
|
15
|
-
export async function loadTokens(session) {
|
|
16
|
-
const raw = await keychainRead(getSessionAccount(session));
|
|
15
|
+
export async function loadTokens(session, storage) {
|
|
16
|
+
const raw = await keychainRead(getSessionAccount(session), storage);
|
|
17
17
|
if (!raw)
|
|
18
18
|
return null;
|
|
19
19
|
try {
|
|
@@ -29,6 +29,16 @@ export async function loadTokens(session) {
|
|
|
29
29
|
export function isTokenValid(tokens) {
|
|
30
30
|
return tokens.expires_at > Date.now() + EXPIRY_BUFFER_MS;
|
|
31
31
|
}
|
|
32
|
+
/**
|
|
33
|
+
* Errors that indicate the refresh token itself is permanently invalid.
|
|
34
|
+
* On these we should clear stored credentials and force re-login.
|
|
35
|
+
* Anything else (network error, server error) is transient — keep credentials.
|
|
36
|
+
*/
|
|
37
|
+
const FATAL_REFRESH_ERRORS = new Set([
|
|
38
|
+
"invalid_grant", // refresh token expired or revoked
|
|
39
|
+
"invalid_client", // client ID mismatch
|
|
40
|
+
"unauthorized_client", // client not allowed to use refresh tokens
|
|
41
|
+
]);
|
|
32
42
|
/**
|
|
33
43
|
* Refresh the access token using the refresh token
|
|
34
44
|
*/
|
|
@@ -47,7 +57,12 @@ async function refreshAccessToken(refreshToken, config) {
|
|
|
47
57
|
});
|
|
48
58
|
if (!response.ok) {
|
|
49
59
|
const error = (await response.json().catch(() => ({})));
|
|
50
|
-
|
|
60
|
+
const errorCode = error.error || "";
|
|
61
|
+
const errorMsg = error.error_description || errorCode || "Token refresh failed";
|
|
62
|
+
// Attach the OAuth error code so the caller can decide whether to clear credentials
|
|
63
|
+
const err = new Error(errorMsg);
|
|
64
|
+
err.oauthErrorCode = errorCode;
|
|
65
|
+
throw err;
|
|
51
66
|
}
|
|
52
67
|
const data = (await response.json());
|
|
53
68
|
return {
|
|
@@ -67,25 +82,43 @@ async function refreshAccessToken(refreshToken, config) {
|
|
|
67
82
|
export async function getValidAccessToken(config = DEFAULT_CONFIG) {
|
|
68
83
|
const session = config.session;
|
|
69
84
|
const account = getSessionAccount(session);
|
|
70
|
-
const
|
|
85
|
+
const st = credentialStorageFromConfig(config);
|
|
86
|
+
const tokens = await loadTokens(session, st);
|
|
71
87
|
if (!tokens) {
|
|
72
88
|
return null;
|
|
73
89
|
}
|
|
74
90
|
if (isTokenValid(tokens)) {
|
|
75
91
|
return tokens.access_token;
|
|
76
92
|
}
|
|
93
|
+
const expiresInSec = Math.round((tokens.expires_at - Date.now()) / 1000);
|
|
77
94
|
if (tokens.refresh_token) {
|
|
95
|
+
console.error(`[zivis] Access token expiring in ${expiresInSec}s — refreshing silently...`);
|
|
78
96
|
try {
|
|
79
97
|
const newTokens = await refreshAccessToken(tokens.refresh_token, config);
|
|
80
|
-
await keychainStore(account, JSON.stringify(newTokens));
|
|
98
|
+
await keychainStore(account, JSON.stringify(newTokens), st);
|
|
99
|
+
const newExpiresInMin = Math.round((newTokens.expires_at - Date.now()) / 1000 / 60);
|
|
100
|
+
console.error(`[zivis] Token refreshed successfully — new token valid for ~${newExpiresInMin}m`);
|
|
81
101
|
return newTokens.access_token;
|
|
82
102
|
}
|
|
83
103
|
catch (err) {
|
|
84
|
-
|
|
85
|
-
|
|
104
|
+
const oauthCode = err.oauthErrorCode;
|
|
105
|
+
const isFatal = oauthCode && FATAL_REFRESH_ERRORS.has(oauthCode);
|
|
106
|
+
console.error(`[zivis] Token refresh failed (${oauthCode ?? "network/server error"}):`, err instanceof Error ? err.message : err);
|
|
107
|
+
if (isFatal) {
|
|
108
|
+
// Refresh token is permanently invalid — clear credentials so the user
|
|
109
|
+
// gets a clear "please re-login" message rather than silent failures.
|
|
110
|
+
console.error("[zivis] Refresh token revoked or expired — clearing stored credentials. Run: zivis auth login");
|
|
111
|
+
await keychainDelete(account, st);
|
|
112
|
+
}
|
|
113
|
+
else {
|
|
114
|
+
// Transient failure (network, 5xx, timeout) — keep credentials so the
|
|
115
|
+
// next request can retry. Don't log the user out over a bad network.
|
|
116
|
+
console.error("[zivis] Transient refresh error — keeping stored credentials, will retry on next request.");
|
|
117
|
+
}
|
|
86
118
|
return null;
|
|
87
119
|
}
|
|
88
120
|
}
|
|
121
|
+
console.error(`[zivis] Access token expired ${Math.abs(expiresInSec)}s ago and no refresh token stored — re-login required`);
|
|
89
122
|
return null;
|
|
90
123
|
}
|
|
91
124
|
//# sourceMappingURL=token-refresh.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"token-refresh.js","sourceRoot":"","sources":["../../src/auth/token-refresh.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAE/F,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"token-refresh.js","sourceRoot":"","sources":["../../src/auth/token-refresh.ts"],"names":[],"mappings":"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"}
|
package/dist/cli.d.ts
CHANGED
|
@@ -1,23 +1,15 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
2
|
+
* `zivis-mcp` Binary
|
|
3
3
|
*
|
|
4
|
-
*
|
|
5
|
-
* -
|
|
6
|
-
*
|
|
7
|
-
*
|
|
8
|
-
*
|
|
9
|
-
* - sessions: List all stored sessions
|
|
10
|
-
* - serve: Start MCP server (called by IDE, not by user directly)
|
|
4
|
+
* The MCP package only owns the `serve` command (spawned by IDE MCP configs).
|
|
5
|
+
* Every user-facing command — login, init, bind, sessions, status, logout,
|
|
6
|
+
* token, mcp install — lives in @zivis/cli. Keeping a parallel implementation
|
|
7
|
+
* here drifts (e.g. doesn't auto-mint the binding token), so we deliberately
|
|
8
|
+
* delete it.
|
|
11
9
|
*/
|
|
12
10
|
import type { ZivisConfig } from "./types.js";
|
|
13
|
-
/**
|
|
14
|
-
* Parse CLI arguments into a command and options
|
|
15
|
-
*/
|
|
16
11
|
export declare function parseArgs(argv: string[]): {
|
|
17
12
|
command: string;
|
|
18
13
|
options: Record<string, string>;
|
|
19
14
|
};
|
|
20
|
-
|
|
21
|
-
* Run the appropriate CLI command
|
|
22
|
-
*/
|
|
23
|
-
export declare function runCli(command: string, options: Record<string, string>, config?: ZivisConfig): Promise<void>;
|
|
15
|
+
export declare function runCli(command: string, _options: Record<string, string>, config?: ZivisConfig): Promise<void>;
|