@zivis/mcp 0.1.0-alpha.18 → 0.1.0-alpha.2
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 +0 -8
- package/dist/api-client.js +3 -35
- package/dist/api-client.js.map +1 -1
- package/dist/auth/index.d.ts +5 -8
- package/dist/auth/index.js +17 -32
- package/dist/auth/index.js.map +1 -1
- package/dist/auth/keychain.d.ts +5 -6
- package/dist/auth/keychain.js +45 -50
- package/dist/auth/keychain.js.map +1 -1
- package/dist/auth/oauth.d.ts +0 -18
- package/dist/auth/oauth.js +6 -55
- package/dist/auth/oauth.js.map +1 -1
- package/dist/auth/sessions.d.ts +4 -5
- package/dist/auth/sessions.js +14 -20
- package/dist/auth/sessions.js.map +1 -1
- package/dist/auth/token-refresh.d.ts +2 -2
- package/dist/auth/token-refresh.js +9 -42
- package/dist/auth/token-refresh.js.map +1 -1
- package/dist/cli.js +20 -32
- package/dist/cli.js.map +1 -1
- package/dist/project-binding.d.ts +0 -6
- package/dist/project-binding.js +0 -21
- package/dist/project-binding.js.map +1 -1
- package/dist/server.js +6 -62
- package/dist/server.js.map +1 -1
- package/dist/tools/check-project.d.ts +4 -4
- package/dist/tools/check-project.js +63 -109
- package/dist/tools/check-project.js.map +1 -1
- package/dist/tools/check-repo-trust.d.ts +10 -4
- package/dist/tools/check-repo-trust.js +27 -56
- package/dist/tools/check-repo-trust.js.map +1 -1
- package/dist/tools/enterprise/list-agents.d.ts +1 -1
- package/dist/tools/enterprise/manage-finding.d.ts +1 -1
- package/dist/tools/get-finding-details.d.ts +10 -4
- package/dist/tools/get-finding-details.js +10 -28
- package/dist/tools/get-finding-details.js.map +1 -1
- package/dist/tools/get-findings.d.ts +10 -4
- package/dist/tools/get-findings.js +23 -44
- package/dist/tools/get-findings.js.map +1 -1
- package/dist/tools/list-applications.d.ts +1 -1
- package/dist/tools/list-scans.d.ts +10 -4
- package/dist/tools/list-scans.js +21 -55
- package/dist/tools/list-scans.js.map +1 -1
- package/dist/tools/list-test-scenarios.d.ts +10 -4
- package/dist/tools/list-test-scenarios.js +13 -41
- package/dist/tools/list-test-scenarios.js.map +1 -1
- package/dist/tools/local-scan.d.ts +1 -1
- package/dist/tools/open-in-ide.d.ts +1 -1
- package/dist/tools/setup-red-team-target.d.ts +12 -6
- package/dist/tools/setup-red-team-target.js +20 -51
- package/dist/tools/setup-red-team-target.js.map +1 -1
- package/dist/tools/triage-finding.d.ts +10 -4
- package/dist/tools/triage-finding.js +21 -30
- package/dist/tools/triage-finding.js.map +1 -1
- package/dist/types.d.ts +2 -42
- package/dist/types.js +23 -29
- package/dist/types.js.map +1 -1
- package/package.json +1 -1
- package/dist/lib/next-steps.d.ts +0 -57
- package/dist/lib/next-steps.js +0 -45
- package/dist/lib/next-steps.js.map +0 -1
- package/dist/prompts/audit-dependencies.d.ts +0 -10
- package/dist/prompts/audit-dependencies.js +0 -56
- package/dist/prompts/audit-dependencies.js.map +0 -1
- package/dist/prompts/getting-started.d.ts +0 -12
- package/dist/prompts/getting-started.js +0 -48
- package/dist/prompts/getting-started.js.map +0 -1
- package/dist/prompts/index.d.ts +0 -14
- package/dist/prompts/index.js +0 -25
- package/dist/prompts/index.js.map +0 -1
- package/dist/prompts/prep-for-launch.d.ts +0 -9
- package/dist/prompts/prep-for-launch.js +0 -62
- package/dist/prompts/prep-for-launch.js.map +0 -1
- package/dist/prompts/secure-my-app.d.ts +0 -9
- package/dist/prompts/secure-my-app.js +0 -70
- package/dist/prompts/secure-my-app.js.map +0 -1
- package/dist/prompts/weekly-check.d.ts +0 -9
- package/dist/prompts/weekly-check.js +0 -48
- package/dist/prompts/weekly-check.js.map +0 -1
- package/dist/tools/enterprise/get-campaign.d.ts +0 -27
- package/dist/tools/enterprise/get-campaign.js +0 -31
- package/dist/tools/enterprise/get-campaign.js.map +0 -1
- package/dist/tools/enterprise/list-attack-scenarios.d.ts +0 -29
- package/dist/tools/enterprise/list-attack-scenarios.js +0 -69
- package/dist/tools/enterprise/list-attack-scenarios.js.map +0 -1
- package/dist/tools/enterprise/list-attack-step-library-tests.d.ts +0 -29
- package/dist/tools/enterprise/list-attack-step-library-tests.js +0 -61
- package/dist/tools/enterprise/list-attack-step-library-tests.js.map +0 -1
- package/dist/tools/enterprise/list-campaigns.d.ts +0 -37
- package/dist/tools/enterprise/list-campaigns.js +0 -60
- package/dist/tools/enterprise/list-campaigns.js.map +0 -1
- package/dist/tools/enterprise/list-threat-model-review-items.d.ts +0 -35
- package/dist/tools/enterprise/list-threat-model-review-items.js +0 -60
- package/dist/tools/enterprise/list-threat-model-review-items.js.map +0 -1
- package/dist/tools/enterprise/list-threat-model-versions.d.ts +0 -29
- package/dist/tools/enterprise/list-threat-model-versions.js +0 -60
- package/dist/tools/enterprise/list-threat-model-versions.js.map +0 -1
- package/dist/tools/enterprise/manage-campaign-agent-instance.d.ts +0 -42
- package/dist/tools/enterprise/manage-campaign-agent-instance.js +0 -68
- package/dist/tools/enterprise/manage-campaign-agent-instance.js.map +0 -1
- package/dist/tools/enterprise/manage-campaign-target.d.ts +0 -44
- package/dist/tools/enterprise/manage-campaign-target.js +0 -70
- package/dist/tools/enterprise/manage-campaign-target.js.map +0 -1
- package/dist/tools/enterprise/manage-campaign.d.ts +0 -62
- package/dist/tools/enterprise/manage-campaign.js +0 -114
- package/dist/tools/enterprise/manage-campaign.js.map +0 -1
- package/dist/tools/enterprise/manage-threat-model-analysis.d.ts +0 -52
- package/dist/tools/enterprise/manage-threat-model-analysis.js +0 -92
- package/dist/tools/enterprise/manage-threat-model-analysis.js.map +0 -1
- package/dist/tools/enterprise/manage-threat-model-review.d.ts +0 -47
- package/dist/tools/enterprise/manage-threat-model-review.js +0 -82
- package/dist/tools/enterprise/manage-threat-model-review.js.map +0 -1
- package/dist/tools/get-application-auth-config.d.ts +0 -27
- package/dist/tools/get-application-auth-config.js +0 -44
- package/dist/tools/get-application-auth-config.js.map +0 -1
- package/dist/tools/get-started.d.ts +0 -28
- package/dist/tools/get-started.js +0 -364
- package/dist/tools/get-started.js.map +0 -1
- package/dist/tools/manage-application.d.ts +0 -72
- package/dist/tools/manage-application.js +0 -138
- package/dist/tools/manage-application.js.map +0 -1
- package/dist/tools/manage-endpoint-lifecycle.d.ts +0 -90
- package/dist/tools/manage-endpoint-lifecycle.js +0 -191
- package/dist/tools/manage-endpoint-lifecycle.js.map +0 -1
package/dist/api-client.d.ts
CHANGED
|
@@ -13,14 +13,6 @@ import type { ZivisConfig } from "./types.js";
|
|
|
13
13
|
export declare class ApiClient {
|
|
14
14
|
private config;
|
|
15
15
|
constructor(config?: ZivisConfig);
|
|
16
|
-
/**
|
|
17
|
-
* Return a config with the session resolved from the project binding when
|
|
18
|
-
* no explicit session was set at server startup. Called on every request so
|
|
19
|
-
* that a globally-installed MCP server automatically uses the right session
|
|
20
|
-
* for whichever workspace it's called from, without needing a per-project
|
|
21
|
-
* `zivis mcp install`.
|
|
22
|
-
*/
|
|
23
|
-
resolveEffectiveConfig(cwd?: string): ZivisConfig;
|
|
24
16
|
/**
|
|
25
17
|
* Build auth headers from current credentials
|
|
26
18
|
*/
|
package/dist/api-client.js
CHANGED
|
@@ -10,42 +10,12 @@
|
|
|
10
10
|
* before returning an auth error.
|
|
11
11
|
*/
|
|
12
12
|
import { resolveAuth } from "./auth/index.js";
|
|
13
|
-
import { detectProjectBinding } from "./project-binding.js";
|
|
14
13
|
import { DEFAULT_CONFIG } from "./types.js";
|
|
15
14
|
export class ApiClient {
|
|
16
15
|
config;
|
|
17
16
|
constructor(config = DEFAULT_CONFIG) {
|
|
18
17
|
this.config = config;
|
|
19
18
|
}
|
|
20
|
-
/**
|
|
21
|
-
* Return a config with the session resolved from the project binding when
|
|
22
|
-
* no explicit session was set at server startup. Called on every request so
|
|
23
|
-
* that a globally-installed MCP server automatically uses the right session
|
|
24
|
-
* for whichever workspace it's called from, without needing a per-project
|
|
25
|
-
* `zivis mcp install`.
|
|
26
|
-
*/
|
|
27
|
-
resolveEffectiveConfig(cwd) {
|
|
28
|
-
// If the server was explicitly configured with a session (via ZIVIS_SESSION env var
|
|
29
|
-
// or constructor), trust that config entirely — the MCP server is already pointed
|
|
30
|
-
// at the right environment via its env block in the IDE's MCP config.
|
|
31
|
-
if (this.config.session) {
|
|
32
|
-
return this.config;
|
|
33
|
-
}
|
|
34
|
-
// No explicit session — try the project binding to auto-discover the environment.
|
|
35
|
-
// This is the CLI-without-env-vars case where the binding carries staging/prod config.
|
|
36
|
-
const detected = detectProjectBinding(cwd ?? process.cwd());
|
|
37
|
-
if (detected) {
|
|
38
|
-
const { binding } = detected;
|
|
39
|
-
return {
|
|
40
|
-
...this.config,
|
|
41
|
-
session: binding.session,
|
|
42
|
-
...(binding.apiBaseUrl ? { apiBaseUrl: binding.apiBaseUrl } : {}),
|
|
43
|
-
...(binding.oauthApiUrl ? { oauthApiUrl: binding.oauthApiUrl } : {}),
|
|
44
|
-
...(binding.oauthClientId ? { oauthClientId: binding.oauthClientId } : {}),
|
|
45
|
-
};
|
|
46
|
-
}
|
|
47
|
-
return this.config;
|
|
48
|
-
}
|
|
49
19
|
/**
|
|
50
20
|
* Build auth headers from current credentials
|
|
51
21
|
*/
|
|
@@ -66,15 +36,14 @@ export class ApiClient {
|
|
|
66
36
|
* On 401 with OAuth, attempts one token refresh and retries.
|
|
67
37
|
*/
|
|
68
38
|
async request(method, path, body) {
|
|
69
|
-
const
|
|
70
|
-
const creds = await resolveAuth(effectiveConfig);
|
|
39
|
+
const creds = await resolveAuth(this.config);
|
|
71
40
|
if (creds.method === "none") {
|
|
72
41
|
throw new ApiError("Not authenticated. Run: zivis auth login", 401, "AUTH_REQUIRED");
|
|
73
42
|
}
|
|
74
43
|
const result = await this.doRequest(method, path, body, creds);
|
|
75
44
|
// If 401 and using OAuth, try refreshing
|
|
76
45
|
if (result.status === 401 && creds.method === "oauth") {
|
|
77
|
-
const freshCreds = await resolveAuth(
|
|
46
|
+
const freshCreds = await resolveAuth(this.config);
|
|
78
47
|
if (freshCreds.method === "oauth" &&
|
|
79
48
|
freshCreds.accessToken !== creds.accessToken) {
|
|
80
49
|
// Token was refreshed, retry
|
|
@@ -135,8 +104,7 @@ export class ApiClient {
|
|
|
135
104
|
* Used for artifact content streaming where the response is not JSON.
|
|
136
105
|
*/
|
|
137
106
|
async getText(path) {
|
|
138
|
-
const
|
|
139
|
-
const creds = await resolveAuth(effectiveConfig);
|
|
107
|
+
const creds = await resolveAuth(this.config);
|
|
140
108
|
if (creds.method === "none") {
|
|
141
109
|
throw new ApiError("Not authenticated. Run: zivis auth login", 401, "AUTH_REQUIRED");
|
|
142
110
|
}
|
package/dist/api-client.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api-client.js","sourceRoot":"","sources":["../src/api-client.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"api-client.js","sourceRoot":"","sources":["../src/api-client.ts"],"names":[],"mappings":"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"}
|
package/dist/auth/index.d.ts
CHANGED
|
@@ -2,18 +2,15 @@
|
|
|
2
2
|
* Auth Orchestrator
|
|
3
3
|
*
|
|
4
4
|
* Resolves credentials using the defined precedence:
|
|
5
|
-
* 1. OS Keychain —
|
|
6
|
-
*
|
|
7
|
-
*
|
|
8
|
-
*
|
|
9
|
-
* 3. OS Keychain — OAuth tokens (fallback for `zivis auth login` users)
|
|
10
|
-
* 4. OS Keychain — default API key (no named session)
|
|
11
|
-
* 5. Not authenticated
|
|
5
|
+
* 1. OS Keychain — OAuth tokens (preferred, user-scoped, auto-refresh)
|
|
6
|
+
* 2. OS Keychain — API key (fallback, org-scoped)
|
|
7
|
+
* 3. ZIVIS_API_KEY env var (CI environments)
|
|
8
|
+
* 4. Not authenticated (tools return auth error with setup instructions)
|
|
12
9
|
*/
|
|
13
10
|
import type { AuthCredentials, AuthMethod, ZivisConfig } from "../types.js";
|
|
14
11
|
export { login } from "./oauth.js";
|
|
15
12
|
export { keychainClearAll, keychainClearSession, getStorageName, getSessionAccount } from "./keychain.js";
|
|
16
|
-
export { keychainStore, keychainRead
|
|
13
|
+
export { keychainStore, keychainRead } from "./keychain.js";
|
|
17
14
|
export { loadTokens } from "./token-refresh.js";
|
|
18
15
|
export { loadSessionIndex, saveSessionEntry, removeSessionEntry, listSessions } from "./sessions.js";
|
|
19
16
|
/**
|
package/dist/auth/index.js
CHANGED
|
@@ -2,20 +2,17 @@
|
|
|
2
2
|
* Auth Orchestrator
|
|
3
3
|
*
|
|
4
4
|
* Resolves credentials using the defined precedence:
|
|
5
|
-
* 1. OS Keychain —
|
|
6
|
-
*
|
|
7
|
-
*
|
|
8
|
-
*
|
|
9
|
-
* 3. OS Keychain — OAuth tokens (fallback for `zivis auth login` users)
|
|
10
|
-
* 4. OS Keychain — default API key (no named session)
|
|
11
|
-
* 5. Not authenticated
|
|
5
|
+
* 1. OS Keychain — OAuth tokens (preferred, user-scoped, auto-refresh)
|
|
6
|
+
* 2. OS Keychain — API key (fallback, org-scoped)
|
|
7
|
+
* 3. ZIVIS_API_KEY env var (CI environments)
|
|
8
|
+
* 4. Not authenticated (tools return auth error with setup instructions)
|
|
12
9
|
*/
|
|
13
10
|
import { keychainRead } from "./keychain.js";
|
|
14
11
|
import { getValidAccessToken } from "./token-refresh.js";
|
|
15
|
-
import { DEFAULT_CONFIG
|
|
12
|
+
import { DEFAULT_CONFIG } from "../types.js";
|
|
16
13
|
export { login } from "./oauth.js";
|
|
17
14
|
export { keychainClearAll, keychainClearSession, getStorageName, getSessionAccount } from "./keychain.js";
|
|
18
|
-
export { keychainStore, keychainRead
|
|
15
|
+
export { keychainStore, keychainRead } from "./keychain.js";
|
|
19
16
|
export { loadTokens } from "./token-refresh.js";
|
|
20
17
|
export { loadSessionIndex, saveSessionEntry, removeSessionEntry, listSessions } from "./sessions.js";
|
|
21
18
|
/**
|
|
@@ -29,46 +26,34 @@ export { loadSessionIndex, saveSessionEntry, removeSessionEntry, listSessions }
|
|
|
29
26
|
*/
|
|
30
27
|
export async function resolveAuth(config = DEFAULT_CONFIG, forceMethod) {
|
|
31
28
|
const session = config.session;
|
|
32
|
-
|
|
33
|
-
// 1. Per-session keychain API key — Local Project Binding Token (preferred).
|
|
34
|
-
// Minted by `zivis auth bind` and stored under `apikey.<session>`.
|
|
35
|
-
// Org-scoped at the WorkOS level, never refreshes, no drift risk.
|
|
36
|
-
// Also covers `zivis auth token sk_xxx --session <name>` for CI injection.
|
|
37
|
-
if (forceMethod !== "oauth") {
|
|
38
|
-
const apiKeyAccount = session ? `apikey.${session}` : null;
|
|
39
|
-
if (apiKeyAccount) {
|
|
40
|
-
const sessionApiKey = await keychainRead(apiKeyAccount, st);
|
|
41
|
-
if (sessionApiKey) {
|
|
42
|
-
return { method: "apikey", apiKey: sessionApiKey };
|
|
43
|
-
}
|
|
44
|
-
}
|
|
45
|
-
}
|
|
46
|
-
// 2. ZIVIS_API_KEY env var (CI environments — explicit, no session ambiguity).
|
|
47
|
-
const envKey = process.env.ZIVIS_API_KEY;
|
|
48
|
-
if (envKey) {
|
|
49
|
-
return { method: "apikey", apiKey: envKey };
|
|
50
|
-
}
|
|
51
|
-
// 3. OAuth tokens (fallback for `zivis auth login` users who haven't run bind).
|
|
29
|
+
// 1. OAuth tokens (unless forced to apikey)
|
|
52
30
|
if (forceMethod !== "apikey") {
|
|
53
31
|
const accessToken = await getValidAccessToken(config);
|
|
54
32
|
if (accessToken) {
|
|
55
33
|
return { method: "oauth", accessToken };
|
|
56
34
|
}
|
|
57
35
|
}
|
|
36
|
+
// 2. ZIVIS_API_KEY env var — always checked, even for named sessions.
|
|
37
|
+
// This is an explicit user action (they set the env var in their MCP config),
|
|
38
|
+
// so it's safe to use regardless of session scope.
|
|
39
|
+
const envKey = process.env.ZIVIS_API_KEY;
|
|
40
|
+
if (envKey) {
|
|
41
|
+
return { method: "apikey", apiKey: envKey };
|
|
42
|
+
}
|
|
58
43
|
// CROSS-TENANT SAFETY: If a named session is active, do NOT fall through
|
|
59
44
|
// to default keychain credentials. This prevents accidentally using admin tokens
|
|
60
45
|
// when working in a customer's project.
|
|
61
46
|
if (session) {
|
|
62
47
|
return { method: "none" };
|
|
63
48
|
}
|
|
64
|
-
//
|
|
49
|
+
// 3. API key from keychain (only for default/no-session)
|
|
65
50
|
if (forceMethod !== "oauth") {
|
|
66
|
-
const apiKey = await keychainRead("apikey"
|
|
51
|
+
const apiKey = await keychainRead("apikey");
|
|
67
52
|
if (apiKey) {
|
|
68
53
|
return { method: "apikey", apiKey };
|
|
69
54
|
}
|
|
70
55
|
}
|
|
71
|
-
//
|
|
56
|
+
// 4. Not authenticated
|
|
72
57
|
return { method: "none" };
|
|
73
58
|
}
|
|
74
59
|
/**
|
package/dist/auth/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/auth/index.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/auth/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAC7C,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAEzD,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAE7C,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,OAAO,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAC1G,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAC5D,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAChD,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAErG;;;;;;;;GAQG;AACH,MAAM,CAAC,KAAK,UAAU,WAAW,CAC/B,SAAsB,cAAc,EACpC,WAAwB;IAExB,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;IAE/B,4CAA4C;IAC5C,IAAI,WAAW,KAAK,QAAQ,EAAE,CAAC;QAC7B,MAAM,WAAW,GAAG,MAAM,mBAAmB,CAAC,MAAM,CAAC,CAAC;QACtD,IAAI,WAAW,EAAE,CAAC;YAChB,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,CAAC;QAC1C,CAAC;IACH,CAAC;IAED,sEAAsE;IACtE,8EAA8E;IAC9E,mDAAmD;IACnD,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC;IACzC,IAAI,MAAM,EAAE,CAAC;QACX,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;IAC9C,CAAC;IAED,yEAAyE;IACzE,iFAAiF;IACjF,wCAAwC;IACxC,IAAI,OAAO,EAAE,CAAC;QACZ,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;IAC5B,CAAC;IAED,yDAAyD;IACzD,IAAI,WAAW,KAAK,OAAO,EAAE,CAAC;QAC5B,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,QAAQ,CAAC,CAAC;QAC5C,IAAI,MAAM,EAAE,CAAC;YACX,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC;QACtC,CAAC;IACH,CAAC;IAED,uBAAuB;IACvB,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;AAC5B,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,SAAsB,cAAc;IAEpC,MAAM,KAAK,GAAG,MAAM,WAAW,CAAC,MAAM,CAAC,CAAC;IACxC,QAAQ,KAAK,CAAC,MAAM,EAAE,CAAC;QACrB,KAAK,OAAO;YACV,OAAO,sBAAsB,CAAC;QAChC,KAAK,QAAQ;YACX,OAAO,YAAY,KAAK,CAAC,MAAM,EAAE,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC;QACpG,KAAK,MAAM;YACT,OAAO,mBAAmB,CAAC;IAC/B,CAAC;AACH,CAAC"}
|
package/dist/auth/keychain.d.ts
CHANGED
|
@@ -10,25 +10,24 @@
|
|
|
10
10
|
*
|
|
11
11
|
* Falls back to encrypted file if keychain CLI is unavailable.
|
|
12
12
|
*/
|
|
13
|
-
import { type CredentialStorage } from "../types.js";
|
|
14
13
|
/**
|
|
15
14
|
* Returns the keychain account key for a given session.
|
|
16
15
|
* - No session or undefined → "oauth" (backward compatible)
|
|
17
16
|
* - Named session → "oauth.{session}"
|
|
18
17
|
*/
|
|
19
18
|
export declare function getSessionAccount(session?: string): string;
|
|
20
|
-
export declare function keychainStore(account: string, value: string
|
|
21
|
-
export declare function keychainRead(account: string
|
|
22
|
-
export declare function keychainDelete(account: string
|
|
19
|
+
export declare function keychainStore(account: string, value: string): Promise<void>;
|
|
20
|
+
export declare function keychainRead(account: string): Promise<string | null>;
|
|
21
|
+
export declare function keychainDelete(account: string): Promise<void>;
|
|
23
22
|
/**
|
|
24
23
|
* Delete credentials for a specific session
|
|
25
24
|
*/
|
|
26
|
-
export declare function keychainClearSession(session?: string
|
|
25
|
+
export declare function keychainClearSession(session?: string): Promise<void>;
|
|
27
26
|
/**
|
|
28
27
|
* Delete all stored credentials (default OAuth + API key).
|
|
29
28
|
* Does NOT clear named sessions — use keychainClearSession() for those.
|
|
30
29
|
*/
|
|
31
|
-
export declare function keychainClearAll(
|
|
30
|
+
export declare function keychainClearAll(): Promise<void>;
|
|
32
31
|
/**
|
|
33
32
|
* Returns the storage mechanism name for display purposes
|
|
34
33
|
*/
|
package/dist/auth/keychain.js
CHANGED
|
@@ -18,12 +18,8 @@ import * as os from "node:os";
|
|
|
18
18
|
import * as crypto from "node:crypto";
|
|
19
19
|
import { ENV_CONFIG } from "../types.js";
|
|
20
20
|
const execFileAsync = promisify(execFile);
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
keychainPrefix: ENV_CONFIG.keychainPrefix,
|
|
24
|
-
configDir: ENV_CONFIG.configDir,
|
|
25
|
-
});
|
|
26
|
-
}
|
|
21
|
+
// Use environment-aware prefix so staging and production credentials are isolated
|
|
22
|
+
const SERVICE_PREFIX = ENV_CONFIG.keychainPrefix;
|
|
27
23
|
/**
|
|
28
24
|
* Returns the keychain account key for a given session.
|
|
29
25
|
* - No session or undefined → "oauth" (backward compatible)
|
|
@@ -32,21 +28,23 @@ function resolvedStorage(storage) {
|
|
|
32
28
|
export function getSessionAccount(session) {
|
|
33
29
|
return session ? `oauth.${session}` : "oauth";
|
|
34
30
|
}
|
|
35
|
-
function getServiceName(account
|
|
36
|
-
return `${
|
|
31
|
+
function getServiceName(account) {
|
|
32
|
+
return `${SERVICE_PREFIX}.${account}`;
|
|
37
33
|
}
|
|
38
|
-
function getFallbackDir(
|
|
34
|
+
function getFallbackDir() {
|
|
35
|
+
// Use environment-aware config dir so staging and production are isolated
|
|
36
|
+
const configDir = ENV_CONFIG.configDir;
|
|
39
37
|
if (process.platform === "win32") {
|
|
40
38
|
return path.join(process.env.APPDATA || os.homedir(), configDir);
|
|
41
39
|
}
|
|
42
40
|
return path.join(os.homedir(), ".config", configDir);
|
|
43
41
|
}
|
|
44
|
-
function getFallbackPath(account
|
|
45
|
-
return path.join(getFallbackDir(
|
|
42
|
+
function getFallbackPath(account) {
|
|
43
|
+
return path.join(getFallbackDir(), `${account}.enc`);
|
|
46
44
|
}
|
|
47
45
|
// ── macOS Keychain ──
|
|
48
|
-
async function macosStore(account, value
|
|
49
|
-
const service = getServiceName(account
|
|
46
|
+
async function macosStore(account, value) {
|
|
47
|
+
const service = getServiceName(account);
|
|
50
48
|
// Delete existing entry first (ignore errors if not found)
|
|
51
49
|
try {
|
|
52
50
|
await execFileAsync("security", [
|
|
@@ -70,8 +68,8 @@ async function macosStore(account, value, keychainPrefix) {
|
|
|
70
68
|
value,
|
|
71
69
|
]);
|
|
72
70
|
}
|
|
73
|
-
async function macosRead(account
|
|
74
|
-
const service = getServiceName(account
|
|
71
|
+
async function macosRead(account) {
|
|
72
|
+
const service = getServiceName(account);
|
|
75
73
|
try {
|
|
76
74
|
const { stdout } = await execFileAsync("security", [
|
|
77
75
|
"find-generic-password",
|
|
@@ -87,8 +85,8 @@ async function macosRead(account, keychainPrefix) {
|
|
|
87
85
|
return null;
|
|
88
86
|
}
|
|
89
87
|
}
|
|
90
|
-
async function macosDelete(account
|
|
91
|
-
const service = getServiceName(account
|
|
88
|
+
async function macosDelete(account) {
|
|
89
|
+
const service = getServiceName(account);
|
|
92
90
|
try {
|
|
93
91
|
await execFileAsync("security", [
|
|
94
92
|
"delete-generic-password",
|
|
@@ -103,13 +101,13 @@ async function macosDelete(account, keychainPrefix) {
|
|
|
103
101
|
}
|
|
104
102
|
}
|
|
105
103
|
// ── Linux Secret Service ──
|
|
106
|
-
async function linuxStore(account, value
|
|
104
|
+
async function linuxStore(account, value) {
|
|
107
105
|
const child = execFileAsync("secret-tool", [
|
|
108
106
|
"store",
|
|
109
107
|
"--label",
|
|
110
108
|
`ZIVIS MCP ${account}`,
|
|
111
109
|
"service",
|
|
112
|
-
|
|
110
|
+
SERVICE_PREFIX,
|
|
113
111
|
"account",
|
|
114
112
|
account,
|
|
115
113
|
]);
|
|
@@ -118,12 +116,12 @@ async function linuxStore(account, value, keychainPrefix) {
|
|
|
118
116
|
child.child.stdin?.end();
|
|
119
117
|
await child;
|
|
120
118
|
}
|
|
121
|
-
async function linuxRead(account
|
|
119
|
+
async function linuxRead(account) {
|
|
122
120
|
try {
|
|
123
121
|
const { stdout } = await execFileAsync("secret-tool", [
|
|
124
122
|
"lookup",
|
|
125
123
|
"service",
|
|
126
|
-
|
|
124
|
+
SERVICE_PREFIX,
|
|
127
125
|
"account",
|
|
128
126
|
account,
|
|
129
127
|
]);
|
|
@@ -133,12 +131,12 @@ async function linuxRead(account, keychainPrefix) {
|
|
|
133
131
|
return null;
|
|
134
132
|
}
|
|
135
133
|
}
|
|
136
|
-
async function linuxDelete(account
|
|
134
|
+
async function linuxDelete(account) {
|
|
137
135
|
try {
|
|
138
136
|
await execFileAsync("secret-tool", [
|
|
139
137
|
"clear",
|
|
140
138
|
"service",
|
|
141
|
-
|
|
139
|
+
SERVICE_PREFIX,
|
|
142
140
|
"account",
|
|
143
141
|
account,
|
|
144
142
|
]);
|
|
@@ -153,7 +151,7 @@ function deriveKey() {
|
|
|
153
151
|
const seed = `zivis-mcp:${os.hostname()}:${os.userInfo().username}`;
|
|
154
152
|
return crypto.createHash("sha256").update(seed).digest();
|
|
155
153
|
}
|
|
156
|
-
async function fileStore(account, value
|
|
154
|
+
async function fileStore(account, value) {
|
|
157
155
|
const key = deriveKey();
|
|
158
156
|
const iv = crypto.randomBytes(16);
|
|
159
157
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
@@ -161,13 +159,13 @@ async function fileStore(account, value, storage) {
|
|
|
161
159
|
let encrypted = cipher.update(value, "utf8", "hex");
|
|
162
160
|
encrypted += cipher.final("hex");
|
|
163
161
|
const data = JSON.stringify({ iv: iv.toString("hex"), data: encrypted });
|
|
164
|
-
const dir = getFallbackDir(
|
|
162
|
+
const dir = getFallbackDir();
|
|
165
163
|
await fs.mkdir(dir, { recursive: true });
|
|
166
|
-
await fs.writeFile(getFallbackPath(account
|
|
164
|
+
await fs.writeFile(getFallbackPath(account), data, { mode: 0o600 });
|
|
167
165
|
}
|
|
168
|
-
async function fileRead(account
|
|
166
|
+
async function fileRead(account) {
|
|
169
167
|
try {
|
|
170
|
-
const raw = await fs.readFile(getFallbackPath(account
|
|
168
|
+
const raw = await fs.readFile(getFallbackPath(account), "utf8");
|
|
171
169
|
const { iv, data } = JSON.parse(raw);
|
|
172
170
|
const key = deriveKey();
|
|
173
171
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
@@ -180,9 +178,9 @@ async function fileRead(account, storage) {
|
|
|
180
178
|
return null;
|
|
181
179
|
}
|
|
182
180
|
}
|
|
183
|
-
async function fileDelete(account
|
|
181
|
+
async function fileDelete(account) {
|
|
184
182
|
try {
|
|
185
|
-
await fs.unlink(getFallbackPath(account
|
|
183
|
+
await fs.unlink(getFallbackPath(account));
|
|
186
184
|
}
|
|
187
185
|
catch {
|
|
188
186
|
// File didn't exist
|
|
@@ -213,54 +211,51 @@ async function useKeychain() {
|
|
|
213
211
|
return keychainAvailable;
|
|
214
212
|
}
|
|
215
213
|
// ── Public API ──
|
|
216
|
-
export async function keychainStore(account, value
|
|
217
|
-
const st = resolvedStorage(storage);
|
|
214
|
+
export async function keychainStore(account, value) {
|
|
218
215
|
// Always store to encrypted file as fallback (for environments where keychain CLI
|
|
219
216
|
// may not be available, e.g., MCP servers spawned by IDEs with different $PATH)
|
|
220
|
-
await fileStore(account, value
|
|
217
|
+
await fileStore(account, value);
|
|
221
218
|
// Also store to native keychain if available
|
|
222
219
|
if (await useKeychain()) {
|
|
223
220
|
if (process.platform === "darwin") {
|
|
224
|
-
await macosStore(account, value
|
|
221
|
+
await macosStore(account, value);
|
|
225
222
|
}
|
|
226
223
|
else if (process.platform === "linux") {
|
|
227
|
-
await linuxStore(account, value
|
|
224
|
+
await linuxStore(account, value);
|
|
228
225
|
}
|
|
229
226
|
}
|
|
230
227
|
}
|
|
231
|
-
export async function keychainRead(account
|
|
232
|
-
const st = resolvedStorage(storage);
|
|
228
|
+
export async function keychainRead(account) {
|
|
233
229
|
if (await useKeychain()) {
|
|
234
230
|
if (process.platform === "darwin")
|
|
235
|
-
return macosRead(account
|
|
231
|
+
return macosRead(account);
|
|
236
232
|
if (process.platform === "linux")
|
|
237
|
-
return linuxRead(account
|
|
233
|
+
return linuxRead(account);
|
|
238
234
|
}
|
|
239
|
-
return fileRead(account
|
|
235
|
+
return fileRead(account);
|
|
240
236
|
}
|
|
241
|
-
export async function keychainDelete(account
|
|
242
|
-
const st = resolvedStorage(storage);
|
|
237
|
+
export async function keychainDelete(account) {
|
|
243
238
|
if (await useKeychain()) {
|
|
244
239
|
if (process.platform === "darwin")
|
|
245
|
-
return macosDelete(account
|
|
240
|
+
return macosDelete(account);
|
|
246
241
|
if (process.platform === "linux")
|
|
247
|
-
return linuxDelete(account
|
|
242
|
+
return linuxDelete(account);
|
|
248
243
|
}
|
|
249
|
-
return fileDelete(account
|
|
244
|
+
return fileDelete(account);
|
|
250
245
|
}
|
|
251
246
|
/**
|
|
252
247
|
* Delete credentials for a specific session
|
|
253
248
|
*/
|
|
254
|
-
export async function keychainClearSession(session
|
|
255
|
-
await keychainDelete(getSessionAccount(session)
|
|
249
|
+
export async function keychainClearSession(session) {
|
|
250
|
+
await keychainDelete(getSessionAccount(session));
|
|
256
251
|
}
|
|
257
252
|
/**
|
|
258
253
|
* Delete all stored credentials (default OAuth + API key).
|
|
259
254
|
* Does NOT clear named sessions — use keychainClearSession() for those.
|
|
260
255
|
*/
|
|
261
|
-
export async function keychainClearAll(
|
|
262
|
-
await keychainDelete("oauth"
|
|
263
|
-
await keychainDelete("apikey"
|
|
256
|
+
export async function keychainClearAll() {
|
|
257
|
+
await keychainDelete("oauth");
|
|
258
|
+
await keychainDelete("apikey");
|
|
264
259
|
}
|
|
265
260
|
/**
|
|
266
261
|
* Returns the storage mechanism name for display purposes
|
|
@@ -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,25 +32,7 @@ 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;
|
|
41
35
|
/** Skip the pre-browser confirmation prompt (for scripted/interactive-wizard callers). */
|
|
42
36
|
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;
|
|
55
37
|
}
|
|
56
38
|
export declare function login(config?: ZivisConfig, session?: string, organizationId?: string, opts?: LoginOptions): Promise<OAuthTokens>;
|