@zivis/cli 0.1.0-alpha.3 → 0.1.0-alpha.30
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/commands/app/index.js +2 -2
- package/dist/commands/app/index.js.map +1 -1
- package/dist/commands/auth/bind.d.ts +14 -0
- package/dist/commands/auth/bind.js +108 -0
- package/dist/commands/auth/bind.js.map +1 -0
- package/dist/commands/auth/index.js +27 -1
- package/dist/commands/auth/index.js.map +1 -1
- package/dist/commands/auth/init.d.ts +5 -0
- package/dist/commands/auth/init.js +271 -0
- package/dist/commands/auth/init.js.map +1 -0
- package/dist/commands/auth/login.d.ts +2 -0
- package/dist/commands/auth/login.js +28 -8
- package/dist/commands/auth/login.js.map +1 -1
- package/dist/commands/auth/logout.js +21 -6
- package/dist/commands/auth/logout.js.map +1 -1
- package/dist/commands/auth/sessions.js +7 -3
- package/dist/commands/auth/sessions.js.map +1 -1
- package/dist/commands/auth/status.js +34 -11
- package/dist/commands/auth/status.js.map +1 -1
- package/dist/commands/auth/token.d.ts +17 -0
- package/dist/commands/auth/token.js +91 -0
- package/dist/commands/auth/token.js.map +1 -0
- package/dist/commands/credits/index.js +2 -2
- package/dist/commands/credits/index.js.map +1 -1
- package/dist/commands/mcp/index.js +79 -13
- package/dist/commands/mcp/index.js.map +1 -1
- package/dist/commands/scan/index.js +2 -2
- package/dist/commands/scan/index.js.map +1 -1
- package/dist/commands/tm/index.js +3 -3
- package/dist/commands/tm/index.js.map +1 -1
- package/dist/internal/binding-token-mint.d.ts +60 -0
- package/dist/internal/binding-token-mint.js +185 -0
- package/dist/internal/binding-token-mint.js.map +1 -0
- package/dist/internal/ide-setup.d.ts +38 -7
- package/dist/internal/ide-setup.js +359 -41
- package/dist/internal/ide-setup.js.map +1 -1
- package/dist/internal/project-binding.d.ts +2 -0
- package/dist/internal/project-binding.js +18 -8
- package/dist/internal/project-binding.js.map +1 -1
- package/package.json +2 -2
|
@@ -1,16 +1,322 @@
|
|
|
1
1
|
import * as fs from "node:fs";
|
|
2
2
|
import * as path from "node:path";
|
|
3
3
|
const SERVER_NAME = "zivis";
|
|
4
|
-
|
|
5
|
-
|
|
4
|
+
// ── Idempotent block append ──
|
|
5
|
+
/**
|
|
6
|
+
* Append (or replace) a ZIVIS-managed block inside a text file.
|
|
7
|
+
* The block is wrapped in <!-- BEGIN ZIVIS:key --> / <!-- END ZIVIS:key -->
|
|
8
|
+
* markers so future calls replace only this section without touching user content.
|
|
9
|
+
*/
|
|
10
|
+
function appendBlock(filePath, blockKey, content) {
|
|
11
|
+
const begin = `<!-- BEGIN ZIVIS:${blockKey} -->`;
|
|
12
|
+
const end = `<!-- END ZIVIS:${blockKey} -->`;
|
|
13
|
+
let existing = fs.existsSync(filePath)
|
|
14
|
+
? fs.readFileSync(filePath, "utf-8")
|
|
15
|
+
: "";
|
|
16
|
+
const blockRegex = new RegExp(`${escapeRegex(begin)}[\\s\\S]*?${escapeRegex(end)}`, "g");
|
|
17
|
+
const newBlock = `${begin}\n${content}\n${end}`;
|
|
18
|
+
if (blockRegex.test(existing)) {
|
|
19
|
+
existing = existing.replace(blockRegex, newBlock);
|
|
20
|
+
}
|
|
21
|
+
else {
|
|
22
|
+
if (existing && !existing.endsWith("\n"))
|
|
23
|
+
existing += "\n";
|
|
24
|
+
existing += `\n${newBlock}\n`;
|
|
25
|
+
}
|
|
26
|
+
const dir = path.dirname(filePath);
|
|
27
|
+
if (!fs.existsSync(dir))
|
|
28
|
+
fs.mkdirSync(dir, { recursive: true });
|
|
29
|
+
fs.writeFileSync(filePath, existing);
|
|
30
|
+
}
|
|
31
|
+
function escapeRegex(s) {
|
|
32
|
+
return s.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
|
|
33
|
+
}
|
|
34
|
+
// ── Content templates ──
|
|
35
|
+
/** Full Cursor .mdc rule — uses globs so it only attaches when relevant files are open */
|
|
36
|
+
function cursorRuleContent() {
|
|
37
|
+
return `---
|
|
38
|
+
description: ZIVIS security guidance — quietly suggest security checks at the right moments
|
|
39
|
+
globs:
|
|
40
|
+
- "**/*.{ts,tsx,js,jsx,py,go,rb,java}"
|
|
41
|
+
- "**/package.json"
|
|
42
|
+
- "**/requirements.txt"
|
|
43
|
+
- "**/pyproject.toml"
|
|
44
|
+
- "**/go.mod"
|
|
45
|
+
- "**/Dockerfile"
|
|
46
|
+
alwaysApply: false
|
|
47
|
+
---
|
|
48
|
+
|
|
49
|
+
<!-- BEGIN ZIVIS:guidance -->
|
|
50
|
+
|
|
51
|
+
# ZIVIS Security Guidance
|
|
52
|
+
|
|
53
|
+
ZIVIS is a security platform connected to this project as an MCP server.
|
|
54
|
+
Use it sparingly and only when relevant — never nag.
|
|
55
|
+
|
|
56
|
+
## When to suggest ZIVIS
|
|
57
|
+
|
|
58
|
+
**On first security question in this project (per session):**
|
|
59
|
+
If the user asks anything about security, safety, vulnerabilities, or "is this
|
|
60
|
+
secure", call \`zivis_get_started\` first (no arguments). Present the
|
|
61
|
+
\`recommended_next_steps\` as a numbered list. Do NOT invent your own security
|
|
62
|
+
checklist — let ZIVIS produce one based on actual project state.
|
|
63
|
+
|
|
64
|
+
**When dependencies change** (\`package.json\`, \`requirements.txt\`, \`go.mod\`,
|
|
65
|
+
\`pyproject.toml\` is being edited and a new package is added):
|
|
66
|
+
Mention once per session: "Want me to check this dependency with ZIVIS?
|
|
67
|
+
It scans for prompt-injection risks and known vulnerabilities."
|
|
68
|
+
If yes, call \`zivis_check_repo_trust\` with the package's source repo.
|
|
69
|
+
This tool requires NO auth — works for any public GitHub repo.
|
|
70
|
+
|
|
71
|
+
**When AI/LLM SDKs are imported** (\`openai\`, \`anthropic\`, \`langchain\`,
|
|
72
|
+
\`@anthropic-ai/sdk\`, \`llamaindex\`, \`cohere\`, \`together\`, etc.):
|
|
73
|
+
Mention once per session: "You're integrating an AI SDK. Want to set up a
|
|
74
|
+
red-team target with ZIVIS? It tests for prompt injection, jailbreaks, and
|
|
75
|
+
PII leakage." If yes, call \`zivis_setup_red_team_target\` with
|
|
76
|
+
target_type=ai_chat.
|
|
77
|
+
|
|
78
|
+
**When user mentions:** "audit", "compliance", "SOC 2", "pen test",
|
|
79
|
+
"customer security questionnaire", "going to production", "launch":
|
|
80
|
+
Call \`zivis_get_started\` with their phrase as the \`concern\` parameter.
|
|
81
|
+
|
|
82
|
+
**When user has unread findings:**
|
|
83
|
+
At the start of a session you may call \`zivis_get_findings\` (status=open) once.
|
|
84
|
+
If any critical findings exist, surface them before the user starts new work.
|
|
85
|
+
|
|
86
|
+
## When NOT to suggest ZIVIS
|
|
87
|
+
|
|
88
|
+
- Never for non-security questions (refactors, performance, styling, tests, business logic).
|
|
89
|
+
- Never call \`zivis_get_started\` more than once per session unless re-asked.
|
|
90
|
+
- Never run scans that cost credits without explicit user confirmation.
|
|
91
|
+
- Do not lecture about security best practices — let ZIVIS findings speak.
|
|
92
|
+
|
|
93
|
+
## Vocabulary
|
|
94
|
+
|
|
95
|
+
The user is a developer, not a security engineer. Avoid these words unless
|
|
96
|
+
the user uses them first: "actor", "attack vector", "threat model", "STRIDE",
|
|
97
|
+
"kill chain", "TTPs". Prefer plain alternatives: "tester", "how an attacker
|
|
98
|
+
might break in", "security plan", "categories of attacks".
|
|
99
|
+
|
|
100
|
+
## Available slash commands
|
|
101
|
+
|
|
102
|
+
- \`/zivis-getting-started\` — entry-point tour for new users
|
|
103
|
+
- \`/zivis-secure-my-app\` — register and test an app
|
|
104
|
+
- \`/zivis-audit-dependencies\` — check open source libraries (no auth needed)
|
|
105
|
+
- \`/zivis-prep-for-launch\` — pre-launch security checklist
|
|
106
|
+
- \`/zivis-weekly-check\` — weekly security status update
|
|
107
|
+
|
|
108
|
+
## Top tools (for quick reference)
|
|
109
|
+
|
|
110
|
+
- \`zivis_get_started\` — entry point when user is unsure
|
|
111
|
+
- \`zivis_check_repo_trust\` — scan a GitHub repo for risks (no auth needed)
|
|
112
|
+
- \`zivis_setup_red_team_target\` — register an app for testing
|
|
113
|
+
- \`zivis_run_test_scenario\` — run a security test against a target
|
|
114
|
+
- \`zivis_get_findings\` — list current security issues
|
|
115
|
+
- \`zivis_triage_finding\` — resolve / dismiss / accept-risk a finding
|
|
116
|
+
- \`zivis_security_review\` — pre-PR composite security intelligence
|
|
117
|
+
|
|
118
|
+
<!-- END ZIVIS:guidance -->`;
|
|
119
|
+
}
|
|
120
|
+
/** Short block for CLAUDE.md / AGENTS.md — must be concise (read every turn) */
|
|
121
|
+
function claudeBlockContent() {
|
|
122
|
+
return `## ZIVIS Security (MCP)
|
|
123
|
+
|
|
124
|
+
ZIVIS is connected to this project. Use its tools sparingly — only for security-related topics.
|
|
125
|
+
|
|
126
|
+
**When to use ZIVIS:**
|
|
127
|
+
- User asks "is this secure" / "check for vulnerabilities" / "audit my deps" → call \`zivis_get_started\` first
|
|
128
|
+
- User adds a new npm/pip/go package → offer to call \`zivis_check_repo_trust\` (no auth needed)
|
|
129
|
+
- User adds openai/anthropic/langchain import → offer to call \`zivis_setup_red_team_target\` (target_type=ai_chat)
|
|
130
|
+
- User mentions "launch", "audit", "compliance", "pen test" → call \`zivis_get_started\` with concern=<their phrase>
|
|
131
|
+
|
|
132
|
+
**When NOT to use:** refactors, performance, styling, tests, business logic, anything non-security.
|
|
133
|
+
|
|
134
|
+
**Vocabulary:** Don't use "threat model", "STRIDE", "attack vector", "kill chain" unless user does.
|
|
135
|
+
|
|
136
|
+
**Slash commands:** /zivis-getting-started /zivis-secure-my-app /zivis-audit-dependencies /zivis-prep-for-launch`;
|
|
137
|
+
}
|
|
138
|
+
/** .clinerules / .windsurfrules content */
|
|
139
|
+
function ruleFileContent() {
|
|
140
|
+
return `# ZIVIS Security Guidance
|
|
141
|
+
|
|
142
|
+
ZIVIS is connected to this project via MCP. Use it only for security-related requests.
|
|
143
|
+
|
|
144
|
+
## When to suggest ZIVIS
|
|
145
|
+
|
|
146
|
+
- User asks about security, vulnerabilities, or safety → call zivis_get_started (no args)
|
|
147
|
+
- New dependency added → offer zivis_check_repo_trust (no auth, works for any public repo)
|
|
148
|
+
- AI SDK import added (openai, anthropic, langchain, etc.) → offer zivis_setup_red_team_target with target_type=ai_chat
|
|
149
|
+
- User mentions "audit", "launch", "pen test", "SOC 2" → call zivis_get_started with concern=<their phrase>
|
|
150
|
+
|
|
151
|
+
## When NOT to use
|
|
152
|
+
|
|
153
|
+
Non-security work: refactors, performance, styling, tests, business logic.
|
|
154
|
+
Never run paid scans without user confirmation.
|
|
155
|
+
Never call zivis_get_started more than once per session unless re-asked.
|
|
156
|
+
|
|
157
|
+
## Vocabulary rule
|
|
158
|
+
|
|
159
|
+
Avoid security jargon unless the user uses it first.
|
|
160
|
+
Say "how someone might break in" not "attack vector".
|
|
161
|
+
Say "security plan" not "threat model".
|
|
162
|
+
|
|
163
|
+
## Slash commands
|
|
164
|
+
|
|
165
|
+
/zivis-getting-started — start here if user is new
|
|
166
|
+
/zivis-secure-my-app — set up an app for testing
|
|
167
|
+
/zivis-audit-dependencies — check libraries (free, no login)
|
|
168
|
+
/zivis-prep-for-launch — pre-launch checklist
|
|
169
|
+
/zivis-weekly-check — weekly status update`;
|
|
170
|
+
}
|
|
171
|
+
/** GitHub Copilot instructions block */
|
|
172
|
+
function copilotBlockContent() {
|
|
173
|
+
return `## ZIVIS Security Integration
|
|
174
|
+
|
|
175
|
+
This project has ZIVIS security tools available via MCP.
|
|
176
|
+
|
|
177
|
+
Use ZIVIS only for security-related user requests. Never proactively run scans or access security data for non-security work.
|
|
178
|
+
|
|
179
|
+
**Trigger conditions:**
|
|
180
|
+
1. User asks about security/vulnerabilities/safety → call zivis_get_started
|
|
181
|
+
2. New external dependency added → offer zivis_check_repo_trust (no auth required)
|
|
182
|
+
3. AI SDK import added (openai, anthropic, langchain) → offer zivis_setup_red_team_target with target_type=ai_chat
|
|
183
|
+
4. User mentions audit/launch/pen test/compliance → call zivis_get_started with concern parameter
|
|
184
|
+
|
|
185
|
+
**Key tools:** zivis_get_started, zivis_check_repo_trust, zivis_setup_red_team_target, zivis_get_findings, zivis_triage_finding
|
|
186
|
+
|
|
187
|
+
**Language:** Avoid security jargon (threat model, STRIDE, attack vector) unless user uses it first.`;
|
|
188
|
+
}
|
|
189
|
+
// ── Per-IDE writers ──
|
|
190
|
+
function writeCursorGuidance(cwd) {
|
|
191
|
+
const rulesDir = path.join(cwd, ".cursor", "rules");
|
|
192
|
+
if (!fs.existsSync(rulesDir))
|
|
193
|
+
fs.mkdirSync(rulesDir, { recursive: true });
|
|
194
|
+
const rulesPath = path.join(rulesDir, "zivis.mdc");
|
|
195
|
+
fs.writeFileSync(rulesPath, cursorRuleContent());
|
|
196
|
+
return rulesPath;
|
|
197
|
+
}
|
|
198
|
+
function writeClaudeBlockGuidance(cwd) {
|
|
199
|
+
const written = [];
|
|
200
|
+
const claudePath = path.join(cwd, "CLAUDE.md");
|
|
201
|
+
appendBlock(claudePath, "zivis-security", claudeBlockContent());
|
|
202
|
+
written.push(claudePath);
|
|
203
|
+
const agentsPath = path.join(cwd, "AGENTS.md");
|
|
204
|
+
if (fs.existsSync(agentsPath)) {
|
|
205
|
+
appendBlock(agentsPath, "zivis-security", claudeBlockContent());
|
|
206
|
+
written.push(agentsPath);
|
|
207
|
+
}
|
|
208
|
+
return written;
|
|
209
|
+
}
|
|
210
|
+
function writeCopilotGuidance(cwd) {
|
|
211
|
+
const ghDir = path.join(cwd, ".github");
|
|
212
|
+
if (!fs.existsSync(ghDir))
|
|
213
|
+
fs.mkdirSync(ghDir, { recursive: true });
|
|
214
|
+
const instructionsPath = path.join(ghDir, "copilot-instructions.md");
|
|
215
|
+
appendBlock(instructionsPath, "zivis-security", copilotBlockContent());
|
|
216
|
+
return instructionsPath;
|
|
217
|
+
}
|
|
218
|
+
function writeClineGuidance(cwd) {
|
|
219
|
+
const rulesPath = path.join(cwd, ".clinerules");
|
|
220
|
+
fs.writeFileSync(rulesPath, ruleFileContent());
|
|
221
|
+
return rulesPath;
|
|
222
|
+
}
|
|
223
|
+
function writeWindsurfGuidance(cwd) {
|
|
224
|
+
const rulesPath = path.join(cwd, ".windsurfrules");
|
|
225
|
+
fs.writeFileSync(rulesPath, ruleFileContent());
|
|
226
|
+
return rulesPath;
|
|
227
|
+
}
|
|
228
|
+
/**
|
|
229
|
+
* Write IDE guidance files for the given client.
|
|
230
|
+
*
|
|
231
|
+
* The guidance files teach the host AI (Cursor, Claude Code, etc.)
|
|
232
|
+
* when to suggest ZIVIS tools — no security knowledge required from the user.
|
|
233
|
+
*
|
|
234
|
+
* All writes are idempotent: re-running replaces only the ZIVIS-managed
|
|
235
|
+
* block, never user content.
|
|
236
|
+
*
|
|
237
|
+
* Returns the list of file paths written.
|
|
238
|
+
*/
|
|
239
|
+
export function writeGuidance(opts) {
|
|
240
|
+
const { cwd, client } = opts;
|
|
241
|
+
const written = [];
|
|
242
|
+
switch (client) {
|
|
243
|
+
case "cursor": {
|
|
244
|
+
written.push(writeCursorGuidance(cwd));
|
|
245
|
+
// Also write CLAUDE.md/AGENTS.md block if those files exist
|
|
246
|
+
const extraPaths = writeClaudeBlockGuidance(cwd).filter((p) => fs.existsSync(p));
|
|
247
|
+
written.push(...extraPaths);
|
|
248
|
+
break;
|
|
249
|
+
}
|
|
250
|
+
case "claude-code-cli":
|
|
251
|
+
case "vscode-claude": {
|
|
252
|
+
written.push(...writeClaudeBlockGuidance(cwd));
|
|
253
|
+
break;
|
|
254
|
+
}
|
|
255
|
+
case "vscode-copilot": {
|
|
256
|
+
written.push(writeCopilotGuidance(cwd));
|
|
257
|
+
break;
|
|
258
|
+
}
|
|
259
|
+
case "cline": {
|
|
260
|
+
written.push(writeClineGuidance(cwd));
|
|
261
|
+
break;
|
|
262
|
+
}
|
|
263
|
+
case "windsurf": {
|
|
264
|
+
written.push(writeWindsurfGuidance(cwd));
|
|
265
|
+
break;
|
|
266
|
+
}
|
|
267
|
+
}
|
|
268
|
+
return written.filter(Boolean);
|
|
269
|
+
}
|
|
270
|
+
/**
|
|
271
|
+
* Detect which IDE configs are present in the given workspace.
|
|
272
|
+
* Returns client identifiers whose config files/dirs were found.
|
|
273
|
+
*/
|
|
274
|
+
export function detectIdesInRepo(cwd) {
|
|
275
|
+
const found = [];
|
|
276
|
+
// Cursor
|
|
277
|
+
if (fs.existsSync(path.join(cwd, ".cursor"))) {
|
|
278
|
+
found.push("cursor");
|
|
279
|
+
}
|
|
280
|
+
// Claude Code (CLAUDE.md)
|
|
281
|
+
if (fs.existsSync(path.join(cwd, "CLAUDE.md"))) {
|
|
282
|
+
found.push("claude-code-cli");
|
|
283
|
+
}
|
|
284
|
+
// VS Code (check for .vscode directory)
|
|
285
|
+
if (fs.existsSync(path.join(cwd, ".vscode"))) {
|
|
286
|
+
// Assume Copilot by default for VS Code
|
|
287
|
+
found.push("vscode-copilot");
|
|
288
|
+
}
|
|
289
|
+
// Cline (.clinerules)
|
|
290
|
+
if (fs.existsSync(path.join(cwd, ".clinerules"))) {
|
|
291
|
+
found.push("cline");
|
|
292
|
+
}
|
|
293
|
+
// Windsurf (.windsurfrules)
|
|
294
|
+
if (fs.existsSync(path.join(cwd, ".windsurfrules"))) {
|
|
295
|
+
found.push("windsurf");
|
|
296
|
+
}
|
|
297
|
+
return found;
|
|
298
|
+
}
|
|
299
|
+
/**
|
|
300
|
+
* Build the MCP server config for an IDE config file.
|
|
301
|
+
*
|
|
302
|
+
* When workspacePath is provided, we pass it as `--workspace <path>` so the
|
|
303
|
+
* MCP server process resolves its session from `.zivis/project.json` at that
|
|
304
|
+
* path — not from an env var that can drift or be accidentally reused across
|
|
305
|
+
* tenants. This gives us one-process-per-org isolation at the IDE level.
|
|
306
|
+
*
|
|
307
|
+
* ZIVIS_SESSION is intentionally NOT used here. The workspace path is the
|
|
308
|
+
* canonical, immutable tenant binding for an MCP process.
|
|
309
|
+
*/
|
|
310
|
+
function buildServerConfig(workspacePath, extra) {
|
|
311
|
+
const args = ["mcp", "serve"];
|
|
312
|
+
if (workspacePath) {
|
|
313
|
+
args.push("--workspace", workspacePath);
|
|
314
|
+
}
|
|
315
|
+
return {
|
|
6
316
|
...extra,
|
|
7
317
|
command: "zivis",
|
|
8
|
-
args
|
|
318
|
+
args,
|
|
9
319
|
};
|
|
10
|
-
if (session) {
|
|
11
|
-
config.env = { ZIVIS_SESSION: session };
|
|
12
|
-
}
|
|
13
|
-
return config;
|
|
14
320
|
}
|
|
15
321
|
async function updateMcpConfig(configPath, serverName, serverConfig, rootKey) {
|
|
16
322
|
const configDir = path.dirname(configPath);
|
|
@@ -33,41 +339,54 @@ async function updateMcpConfig(configPath, serverName, serverConfig, rootKey) {
|
|
|
33
339
|
servers[serverName] = serverConfig;
|
|
34
340
|
fs.writeFileSync(configPath, JSON.stringify(config, null, 2) + "\n");
|
|
35
341
|
}
|
|
36
|
-
export async function setupCursor(
|
|
342
|
+
export async function setupCursor() {
|
|
37
343
|
const homeDir = process.env.HOME || "";
|
|
38
344
|
const configPath = path.join(homeDir, ".cursor", "mcp.json");
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
console.log(` Session: ${session}`);
|
|
345
|
+
// Global config has no workspace path — serves repos without .zivis/project.json
|
|
346
|
+
await updateMcpConfig(configPath, SERVER_NAME, buildServerConfig(), "mcpServers");
|
|
347
|
+
console.log(`✓ Cursor global MCP config updated: ${configPath}`);
|
|
43
348
|
console.log(" Restart Cursor for changes to take effect");
|
|
44
349
|
}
|
|
45
|
-
|
|
46
|
-
|
|
350
|
+
/**
|
|
351
|
+
* Write a workspace-level .cursor/mcp.json with `--workspace <cwd>` so Cursor
|
|
352
|
+
* starts an isolated MCP process bound to this specific repo.
|
|
353
|
+
* One process = one org = zero cross-tenant risk, regardless of what other
|
|
354
|
+
* repos are open in Cursor.
|
|
355
|
+
*/
|
|
356
|
+
export async function setupCursorWorkspace() {
|
|
357
|
+
const workspacePath = process.cwd();
|
|
358
|
+
const configPath = path.join(workspacePath, ".cursor", "mcp.json");
|
|
359
|
+
await updateMcpConfig(configPath, SERVER_NAME, buildServerConfig(workspacePath), "mcpServers");
|
|
360
|
+
console.log(`✓ Cursor workspace MCP config updated: ${configPath}`);
|
|
361
|
+
console.log(` Workspace: ${workspacePath}`);
|
|
362
|
+
console.log(" Reload Cursor for changes to take effect");
|
|
363
|
+
}
|
|
364
|
+
export async function setupVsCodeCopilot() {
|
|
365
|
+
const workspacePath = process.cwd();
|
|
366
|
+
const localConfigPath = path.join(workspacePath, ".vscode", "mcp.json");
|
|
47
367
|
const globalConfigPath = path.join(process.env.HOME || "", ".vscode", "mcp.json");
|
|
48
368
|
let configPath = localConfigPath;
|
|
49
369
|
const exists = fs.existsSync(localConfigPath);
|
|
50
370
|
if (!exists && fs.existsSync(globalConfigPath)) {
|
|
51
371
|
configPath = globalConfigPath;
|
|
52
372
|
}
|
|
53
|
-
await updateMcpConfig(configPath, SERVER_NAME, buildServerConfig(
|
|
373
|
+
await updateMcpConfig(configPath, SERVER_NAME, buildServerConfig(workspacePath, { type: "stdio" }), "servers");
|
|
54
374
|
console.log(`✓ VS Code (GitHub Copilot) MCP config updated: ${configPath}`);
|
|
55
|
-
|
|
56
|
-
console.log(` Session: ${session}`);
|
|
375
|
+
console.log(` Workspace: ${workspacePath}`);
|
|
57
376
|
console.log(" Restart VS Code for changes to take effect");
|
|
58
377
|
}
|
|
59
|
-
export async function setupVsCodeClaude(
|
|
60
|
-
const
|
|
61
|
-
|
|
378
|
+
export async function setupVsCodeClaude() {
|
|
379
|
+
const workspacePath = process.cwd();
|
|
380
|
+
const configPath = path.join(workspacePath, ".vscode", "mcp.json");
|
|
381
|
+
await updateMcpConfig(configPath, SERVER_NAME, buildServerConfig(workspacePath), "mcpServers");
|
|
62
382
|
console.log(`✓ VS Code (Claude Code) MCP config updated: ${configPath}`);
|
|
63
|
-
|
|
64
|
-
console.log(` Session: ${session}`);
|
|
383
|
+
console.log(` Workspace: ${workspacePath}`);
|
|
65
384
|
console.log(" Restart VS Code for changes to take effect");
|
|
66
385
|
}
|
|
67
|
-
export async function setupClaudeCodeCli(
|
|
386
|
+
export async function setupClaudeCodeCli() {
|
|
68
387
|
const homeDir = process.env.HOME || "";
|
|
69
388
|
const configPath = path.join(homeDir, ".claude.json");
|
|
70
|
-
const
|
|
389
|
+
const workspacePath = process.cwd();
|
|
71
390
|
if (!fs.existsSync(configPath)) {
|
|
72
391
|
console.log(" Skipping Claude Code CLI (no ~/.claude.json found)");
|
|
73
392
|
return;
|
|
@@ -75,48 +394,47 @@ export async function setupClaudeCodeCli(session) {
|
|
|
75
394
|
try {
|
|
76
395
|
const config = JSON.parse(fs.readFileSync(configPath, "utf-8"));
|
|
77
396
|
config.projects ??= {};
|
|
78
|
-
config.projects[
|
|
79
|
-
config.projects[
|
|
80
|
-
config.projects[
|
|
397
|
+
config.projects[workspacePath] ??= {};
|
|
398
|
+
config.projects[workspacePath].mcpServers ??= {};
|
|
399
|
+
config.projects[workspacePath].mcpServers[SERVER_NAME] = {
|
|
81
400
|
type: "stdio",
|
|
82
401
|
command: "zivis",
|
|
83
|
-
args: ["mcp", "serve"],
|
|
84
|
-
env: session ? { ZIVIS_SESSION: session } : {},
|
|
402
|
+
args: ["mcp", "serve", "--workspace", workspacePath],
|
|
85
403
|
};
|
|
86
404
|
fs.writeFileSync(configPath, JSON.stringify(config, null, 2) + "\n");
|
|
87
405
|
console.log("✓ Claude Code CLI MCP config updated: ~/.claude.json");
|
|
88
|
-
|
|
89
|
-
console.log(` Session: ${session}`);
|
|
406
|
+
console.log(` Workspace: ${workspacePath}`);
|
|
90
407
|
console.log(" Restart Claude Code for changes to take effect");
|
|
91
408
|
}
|
|
92
409
|
catch (err) {
|
|
93
410
|
console.log(` WARNING: Failed to update ~/.claude.json: ${err instanceof Error ? err.message : err}`);
|
|
94
411
|
}
|
|
95
412
|
}
|
|
96
|
-
export async function setupCline(
|
|
413
|
+
export async function setupCline() {
|
|
414
|
+
const workspacePath = process.cwd();
|
|
97
415
|
const homeDir = process.env.HOME || "";
|
|
98
416
|
const configPath = process.platform === "darwin"
|
|
99
417
|
? path.join(homeDir, "Library", "Application Support", "Code", "User", "globalStorage", "saoudrizwan.claude-dev", "settings", "cline_mcp_settings.json")
|
|
100
418
|
: path.join(homeDir, ".config", "Code", "User", "globalStorage", "saoudrizwan.claude-dev", "settings", "cline_mcp_settings.json");
|
|
101
|
-
await updateMcpConfig(configPath, SERVER_NAME, buildServerConfig(
|
|
419
|
+
await updateMcpConfig(configPath, SERVER_NAME, buildServerConfig(workspacePath), "mcpServers");
|
|
102
420
|
console.log(`✓ Cline MCP config updated: ${configPath}`);
|
|
103
|
-
|
|
104
|
-
console.log(` Session: ${session}`);
|
|
421
|
+
console.log(` Workspace: ${workspacePath}`);
|
|
105
422
|
console.log(" Restart VS Code for changes to take effect");
|
|
106
423
|
}
|
|
107
|
-
export async function setupWindsurf(
|
|
424
|
+
export async function setupWindsurf() {
|
|
425
|
+
const workspacePath = process.cwd();
|
|
108
426
|
const homeDir = process.env.HOME || "";
|
|
109
427
|
const configPath = path.join(homeDir, ".codeium", "windsurf", "mcp_config.json");
|
|
110
|
-
await updateMcpConfig(configPath, SERVER_NAME, buildServerConfig(
|
|
428
|
+
await updateMcpConfig(configPath, SERVER_NAME, buildServerConfig(workspacePath), "mcpServers");
|
|
111
429
|
console.log(`✓ Windsurf MCP config updated: ${configPath}`);
|
|
112
|
-
|
|
113
|
-
console.log(` Session: ${session}`);
|
|
430
|
+
console.log(` Workspace: ${workspacePath}`);
|
|
114
431
|
console.log(" Restart Windsurf for changes to take effect");
|
|
115
432
|
}
|
|
116
|
-
export function printClaudeCodeManual(
|
|
433
|
+
export function printClaudeCodeManual() {
|
|
434
|
+
const workspacePath = process.cwd();
|
|
117
435
|
const serverConfig = {
|
|
118
436
|
mcpServers: {
|
|
119
|
-
[SERVER_NAME]: buildServerConfig(
|
|
437
|
+
[SERVER_NAME]: buildServerConfig(workspacePath),
|
|
120
438
|
},
|
|
121
439
|
};
|
|
122
440
|
console.log("");
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ide-setup.js","sourceRoot":"","sources":["../../src/internal/ide-setup.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ide-setup.js","sourceRoot":"","sources":["../../src/internal/ide-setup.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAElC,MAAM,WAAW,GAAG,OAAO,CAAC;AAmB5B,gCAAgC;AAEhC;;;;GAIG;AACH,SAAS,WAAW,CAClB,QAAgB,EAChB,QAAgB,EAChB,OAAe;IAEf,MAAM,KAAK,GAAG,oBAAoB,QAAQ,MAAM,CAAC;IACjD,MAAM,GAAG,GAAG,kBAAkB,QAAQ,MAAM,CAAC;IAC7C,IAAI,QAAQ,GAAG,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC;QACpC,CAAC,CAAC,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC;QACpC,CAAC,CAAC,EAAE,CAAC;IACP,MAAM,UAAU,GAAG,IAAI,MAAM,CAC3B,GAAG,WAAW,CAAC,KAAK,CAAC,aAAa,WAAW,CAAC,GAAG,CAAC,EAAE,EACpD,GAAG,CACJ,CAAC;IACF,MAAM,QAAQ,GAAG,GAAG,KAAK,KAAK,OAAO,KAAK,GAAG,EAAE,CAAC;IAChD,IAAI,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC9B,QAAQ,GAAG,QAAQ,CAAC,OAAO,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;IACpD,CAAC;SAAM,CAAC;QACN,IAAI,QAAQ,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC;YAAE,QAAQ,IAAI,IAAI,CAAC;QAC3D,QAAQ,IAAI,KAAK,QAAQ,IAAI,CAAC;IAChC,CAAC;IACD,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IACnC,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC;QAAE,EAAE,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAChE,EAAE,CAAC,aAAa,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;AACvC,CAAC;AAED,SAAS,WAAW,CAAC,CAAS;IAC5B,OAAO,CAAC,CAAC,OAAO,CAAC,qBAAqB,EAAE,MAAM,CAAC,CAAC;AAClD,CAAC;AAED,0BAA0B;AAE1B,0FAA0F;AAC1F,SAAS,iBAAiB;IACxB,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4BAiFmB,CAAC;AAC7B,CAAC;AAED,gFAAgF;AAChF,SAAS,kBAAkB;IACzB,OAAO;;;;;;;;;;;;;;oHAc2G,CAAC;AACrH,CAAC;AAED,2CAA2C;AAC3C,SAAS,eAAe;IACtB,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2CA6BkC,CAAC;AAC5C,CAAC;AAED,wCAAwC;AACxC,SAAS,mBAAmB;IAC1B,OAAO;;;;;;;;;;;;;;qGAc4F,CAAC;AACtG,CAAC;AAED,wBAAwB;AAExB,SAAS,mBAAmB,CAAC,GAAW;IACtC,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;IACpD,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC;QAAE,EAAE,CAAC,SAAS,CAAC,QAAQ,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC1E,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC;IACnD,EAAE,CAAC,aAAa,CAAC,SAAS,EAAE,iBAAiB,EAAE,CAAC,CAAC;IACjD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,SAAS,wBAAwB,CAAC,GAAW;IAC3C,MAAM,OAAO,GAAa,EAAE,CAAC;IAC7B,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,WAAW,CAAC,CAAC;IAC/C,WAAW,CAAC,UAAU,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,CAAC,CAAC;IAChE,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IACzB,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,WAAW,CAAC,CAAC;IAC/C,IAAI,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QAC9B,WAAW,CAAC,UAAU,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,CAAC,CAAC;QAChE,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IAC3B,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,SAAS,oBAAoB,CAAC,GAAW;IACvC,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;IACxC,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,KAAK,CAAC;QAAE,EAAE,CAAC,SAAS,CAAC,KAAK,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACpE,MAAM,gBAAgB,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,yBAAyB,CAAC,CAAC;IACrE,WAAW,CAAC,gBAAgB,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,CAAC,CAAC;IACvE,OAAO,gBAAgB,CAAC;AAC1B,CAAC;AAED,SAAS,kBAAkB,CAAC,GAAW;IACrC,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,aAAa,CAAC,CAAC;IAChD,EAAE,CAAC,aAAa,CAAC,SAAS,EAAE,eAAe,EAAE,CAAC,CAAC;IAC/C,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,SAAS,qBAAqB,CAAC,GAAW;IACxC,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,gBAAgB,CAAC,CAAC;IACnD,EAAE,CAAC,aAAa,CAAC,SAAS,EAAE,eAAe,EAAE,CAAC,CAAC;IAC/C,OAAO,SAAS,CAAC;AACnB,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,UAAU,aAAa,CAAC,IAAqB;IACjD,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;IAC7B,MAAM,OAAO,GAAa,EAAE,CAAC;IAE7B,QAAQ,MAAM,EAAE,CAAC;QACf,KAAK,QAAQ,CAAC,CAAC,CAAC;YACd,OAAO,CAAC,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,CAAC,CAAC;YACvC,4DAA4D;YAC5D,MAAM,UAAU,GAAG,wBAAwB,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAC5D,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,CACjB,CAAC;YACF,OAAO,CAAC,IAAI,CAAC,GAAG,UAAU,CAAC,CAAC;YAC5B,MAAM;QACR,CAAC;QACD,KAAK,iBAAiB,CAAC;QACvB,KAAK,eAAe,CAAC,CAAC,CAAC;YACrB,OAAO,CAAC,IAAI,CAAC,GAAG,wBAAwB,CAAC,GAAG,CAAC,CAAC,CAAC;YAC/C,MAAM;QACR,CAAC;QACD,KAAK,gBAAgB,CAAC,CAAC,CAAC;YACtB,OAAO,CAAC,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,CAAC,CAAC;YACxC,MAAM;QACR,CAAC;QACD,KAAK,OAAO,CAAC,CAAC,CAAC;YACb,OAAO,CAAC,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,CAAC,CAAC;YACtC,MAAM;QACR,CAAC;QACD,KAAK,UAAU,CAAC,CAAC,CAAC;YAChB,OAAO,CAAC,IAAI,CAAC,qBAAqB,CAAC,GAAG,CAAC,CAAC,CAAC;YACzC,MAAM;QACR,CAAC;IACH,CAAC;IAED,OAAO,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;AACjC,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,gBAAgB,CAAC,GAAW;IAC1C,MAAM,KAAK,GAAqB,EAAE,CAAC;IAEnC,SAAS;IACT,IAAI,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC,EAAE,CAAC;QAC7C,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACvB,CAAC;IACD,0BAA0B;IAC1B,IAAI,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,WAAW,CAAC,CAAC,EAAE,CAAC;QAC/C,KAAK,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;IAChC,CAAC;IACD,wCAAwC;IACxC,IAAI,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC,EAAE,CAAC;QAC7C,wCAAwC;QACxC,KAAK,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;IAC/B,CAAC;IACD,sBAAsB;IACtB,IAAI,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,aAAa,CAAC,CAAC,EAAE,CAAC;QACjD,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACtB,CAAC;IACD,4BAA4B;IAC5B,IAAI,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,gBAAgB,CAAC,CAAC,EAAE,CAAC;QACpD,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IACzB,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;;;;;;;;GAUG;AACH,SAAS,iBAAiB,CACxB,aAAsB,EACtB,KAA+B;IAE/B,MAAM,IAAI,GAAG,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;IAC9B,IAAI,aAAa,EAAE,CAAC;QAClB,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,aAAa,CAAC,CAAC;IAC1C,CAAC;IACD,OAAO;QACL,GAAG,KAAK;QACR,OAAO,EAAE,OAAO;QAChB,IAAI;KACL,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,eAAe,CAC5B,UAAkB,EAClB,UAAkB,EAClB,YAAqC,EACrC,OAAe;IAEf,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;IAC3C,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;QAC9B,EAAE,CAAC,SAAS,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC/C,CAAC;IAED,IAAI,MAAM,GAA4B,EAAE,CAAC;IACzC,IAAI,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QAC9B,IAAI,CAAC;YACH,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC,CAAC;QAC5D,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,CAAC,IAAI,CAAC,qCAAqC,UAAU,kBAAkB,CAAC,CAAC;QAClF,CAAC;IACH,CAAC;IAED,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC;QACrB,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC;IACvB,CAAC;IACD,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAA4B,CAAC;IAC3D,OAAO,CAAC,UAAU,CAAC,GAAG,YAAY,CAAC;IAEnC,EAAE,CAAC,aAAa,CAAC,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;AACvE,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,WAAW;IAC/B,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,EAAE,CAAC;IACvC,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,SAAS,EAAE,UAAU,CAAC,CAAC;IAC7D,iFAAiF;IACjF,MAAM,eAAe,CAAC,UAAU,EAAE,WAAW,EAAE,iBAAiB,EAAE,EAAE,YAAY,CAAC,CAAC;IAClF,OAAO,CAAC,GAAG,CAAC,uCAAuC,UAAU,EAAE,CAAC,CAAC;IACjE,OAAO,CAAC,GAAG,CAAC,6CAA6C,CAAC,CAAC;AAC7D,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,oBAAoB;IACxC,MAAM,aAAa,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IACpC,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,SAAS,EAAE,UAAU,CAAC,CAAC;IACnE,MAAM,eAAe,CAAC,UAAU,EAAE,WAAW,EAAE,iBAAiB,CAAC,aAAa,CAAC,EAAE,YAAY,CAAC,CAAC;IAC/F,OAAO,CAAC,GAAG,CAAC,0CAA0C,UAAU,EAAE,CAAC,CAAC;IACpE,OAAO,CAAC,GAAG,CAAC,gBAAgB,aAAa,EAAE,CAAC,CAAC;IAC7C,OAAO,CAAC,GAAG,CAAC,4CAA4C,CAAC,CAAC;AAC5D,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,kBAAkB;IACtC,MAAM,aAAa,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IACpC,MAAM,eAAe,GAAG,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,SAAS,EAAE,UAAU,CAAC,CAAC;IACxE,MAAM,gBAAgB,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,EAAE,EAAE,SAAS,EAAE,UAAU,CAAC,CAAC;IAElF,IAAI,UAAU,GAAG,eAAe,CAAC;IACjC,MAAM,MAAM,GAAG,EAAE,CAAC,UAAU,CAAC,eAAe,CAAC,CAAC;IAC9C,IAAI,CAAC,MAAM,IAAI,EAAE,CAAC,UAAU,CAAC,gBAAgB,CAAC,EAAE,CAAC;QAC/C,UAAU,GAAG,gBAAgB,CAAC;IAChC,CAAC;IAED,MAAM,eAAe,CACnB,UAAU,EACV,WAAW,EACX,iBAAiB,CAAC,aAAa,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,EACnD,SAAS,CACV,CAAC;IACF,OAAO,CAAC,GAAG,CAAC,kDAAkD,UAAU,EAAE,CAAC,CAAC;IAC5E,OAAO,CAAC,GAAG,CAAC,gBAAgB,aAAa,EAAE,CAAC,CAAC;IAC7C,OAAO,CAAC,GAAG,CAAC,8CAA8C,CAAC,CAAC;AAC9D,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,iBAAiB;IACrC,MAAM,aAAa,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IACpC,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,SAAS,EAAE,UAAU,CAAC,CAAC;IACnE,MAAM,eAAe,CAAC,UAAU,EAAE,WAAW,EAAE,iBAAiB,CAAC,aAAa,CAAC,EAAE,YAAY,CAAC,CAAC;IAC/F,OAAO,CAAC,GAAG,CAAC,+CAA+C,UAAU,EAAE,CAAC,CAAC;IACzE,OAAO,CAAC,GAAG,CAAC,gBAAgB,aAAa,EAAE,CAAC,CAAC;IAC7C,OAAO,CAAC,GAAG,CAAC,8CAA8C,CAAC,CAAC;AAC9D,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,kBAAkB;IACtC,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,EAAE,CAAC;IACvC,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC;IACtD,MAAM,aAAa,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IAEpC,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QAC/B,OAAO,CAAC,GAAG,CAAC,sDAAsD,CAAC,CAAC;QACpE,OAAO;IACT,CAAC;IAED,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC,CAAC;QAChE,MAAM,CAAC,QAAQ,KAAK,EAAE,CAAC;QACvB,MAAM,CAAC,QAAQ,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC;QACtC,MAAM,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,UAAU,KAAK,EAAE,CAAC;QACjD,MAAM,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,UAAU,CAAC,WAAW,CAAC,GAAG;YACvD,IAAI,EAAE,OAAO;YACb,OAAO,EAAE,OAAO;YAChB,IAAI,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,aAAa,EAAE,aAAa,CAAC;SACrD,CAAC;QACF,EAAE,CAAC,aAAa,CAAC,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;QACrE,OAAO,CAAC,GAAG,CAAC,sDAAsD,CAAC,CAAC;QACpE,OAAO,CAAC,GAAG,CAAC,gBAAgB,aAAa,EAAE,CAAC,CAAC;QAC7C,OAAO,CAAC,GAAG,CAAC,kDAAkD,CAAC,CAAC;IAClE,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,CAAC,GAAG,CACT,+CAA+C,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,CAC1F,CAAC;IACJ,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,UAAU;IAC9B,MAAM,aAAa,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IACpC,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,EAAE,CAAC;IACvC,MAAM,UAAU,GACd,OAAO,CAAC,QAAQ,KAAK,QAAQ;QAC3B,CAAC,CAAC,IAAI,CAAC,IAAI,CACP,OAAO,EACP,SAAS,EACT,qBAAqB,EACrB,MAAM,EACN,MAAM,EACN,eAAe,EACf,wBAAwB,EACxB,UAAU,EACV,yBAAyB,CAC1B;QACH,CAAC,CAAC,IAAI,CAAC,IAAI,CACP,OAAO,EACP,SAAS,EACT,MAAM,EACN,MAAM,EACN,eAAe,EACf,wBAAwB,EACxB,UAAU,EACV,yBAAyB,CAC1B,CAAC;IACR,MAAM,eAAe,CAAC,UAAU,EAAE,WAAW,EAAE,iBAAiB,CAAC,aAAa,CAAC,EAAE,YAAY,CAAC,CAAC;IAC/F,OAAO,CAAC,GAAG,CAAC,+BAA+B,UAAU,EAAE,CAAC,CAAC;IACzD,OAAO,CAAC,GAAG,CAAC,gBAAgB,aAAa,EAAE,CAAC,CAAC;IAC7C,OAAO,CAAC,GAAG,CAAC,8CAA8C,CAAC,CAAC;AAC9D,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,aAAa;IACjC,MAAM,aAAa,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IACpC,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,EAAE,CAAC;IACvC,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,iBAAiB,CAAC,CAAC;IACjF,MAAM,eAAe,CAAC,UAAU,EAAE,WAAW,EAAE,iBAAiB,CAAC,aAAa,CAAC,EAAE,YAAY,CAAC,CAAC;IAC/F,OAAO,CAAC,GAAG,CAAC,kCAAkC,UAAU,EAAE,CAAC,CAAC;IAC5D,OAAO,CAAC,GAAG,CAAC,gBAAgB,aAAa,EAAE,CAAC,CAAC;IAC7C,OAAO,CAAC,GAAG,CAAC,+CAA+C,CAAC,CAAC;AAC/D,CAAC;AAED,MAAM,UAAU,qBAAqB;IACnC,MAAM,aAAa,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IACpC,MAAM,YAAY,GAAG;QACnB,UAAU,EAAE;YACV,CAAC,WAAW,CAAC,EAAE,iBAAiB,CAAC,aAAa,CAAC;SAChD;KACF,CAAC;IACF,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAChB,OAAO,CAAC,GAAG,CAAC,kCAAkC,CAAC,CAAC;IAChD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAChB,OAAO,CAAC,GAAG,CAAC,qDAAqD,CAAC,CAAC;IACnE,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAChB,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,YAAY,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;IACnD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAChB,OAAO,CAAC,GAAG,CAAC,qDAAqD,CAAC,CAAC;AACrE,CAAC"}
|
|
@@ -7,5 +7,7 @@ export interface EnsureBindingOpts {
|
|
|
7
7
|
cwd: string;
|
|
8
8
|
autoBind: boolean;
|
|
9
9
|
skipBind: boolean;
|
|
10
|
+
/** Overwrite an existing conflicting binding without erroring (used by `zivis auth init`). */
|
|
11
|
+
force?: boolean;
|
|
10
12
|
}
|
|
11
13
|
export declare function ensureProjectBinding(opts: EnsureBindingOpts): Promise<void>;
|
|
@@ -13,19 +13,27 @@ export async function ensureProjectBinding(opts) {
|
|
|
13
13
|
console.log(" Note: JWT has no org_id — skipping project binding.");
|
|
14
14
|
return;
|
|
15
15
|
}
|
|
16
|
-
|
|
16
|
+
let detected = detectProjectBinding(cwd);
|
|
17
17
|
if (detected?.binding.workosOrgId === jwtOrgId) {
|
|
18
18
|
console.log(`✓ Project binding verified: ${detected.filePath}`);
|
|
19
19
|
return;
|
|
20
20
|
}
|
|
21
21
|
if (detected?.binding.workosOrgId && detected.binding.workosOrgId !== jwtOrgId) {
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
22
|
+
if (!opts.force) {
|
|
23
|
+
console.error("");
|
|
24
|
+
console.error("[zivis] ERROR: Project binding org mismatches JWT org.");
|
|
25
|
+
console.error(`[zivis] Binding file: ${detected.filePath}`);
|
|
26
|
+
console.error(`[zivis] Binding org: ${detected.binding.workosOrgId}${detected.binding.orgName ? ` (${detected.binding.orgName})` : ""}`);
|
|
27
|
+
console.error(`[zivis] JWT org: ${jwtOrgId}`);
|
|
28
|
+
console.error("[zivis] This should not happen — investigate before proceeding.");
|
|
29
|
+
process.exit(1);
|
|
30
|
+
}
|
|
31
|
+
// force=true: init is intentionally replacing the binding.
|
|
32
|
+
// Clear detected so we don't accidentally inherit the OLD binding's name/id.
|
|
33
|
+
const oldLabel = detected.binding.orgName ?? detected.binding.workosOrgId;
|
|
34
|
+
console.log(` Replacing existing binding (was: ${oldLabel})`);
|
|
35
|
+
fs.unlinkSync(detected.filePath);
|
|
36
|
+
detected = null;
|
|
29
37
|
}
|
|
30
38
|
let orgInfo;
|
|
31
39
|
try {
|
|
@@ -35,6 +43,8 @@ export async function ensureProjectBinding(opts) {
|
|
|
35
43
|
catch (err) {
|
|
36
44
|
console.log(` WARNING: Could not fetch org info: ${err instanceof Error ? err.message : err}`);
|
|
37
45
|
}
|
|
46
|
+
// Only fall back to detected?.binding.orgName when we are UPGRADING the same org
|
|
47
|
+
// (detected still set), not when force-replacing a different org (detected=null).
|
|
38
48
|
const orgName = orgInfo?.name || detected?.binding.orgName;
|
|
39
49
|
const zivisOrgId = orgInfo?.id || detected?.binding.orgId;
|
|
40
50
|
const orgLabel = orgName ? `${orgName} (${jwtOrgId})` : jwtOrgId;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"project-binding.js","sourceRoot":"","sources":["../../src/internal/project-binding.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,KAAK,QAAQ,MAAM,wBAAwB,CAAC;AACnD,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AAElE,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"project-binding.js","sourceRoot":"","sources":["../../src/internal/project-binding.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@zivis/cli",
|
|
3
|
-
"version": "0.1.0-alpha.
|
|
3
|
+
"version": "0.1.0-alpha.30",
|
|
4
4
|
"description": "ZIVIS CLI — threat modeling, scans, and MCP server for IDE integration",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|
|
@@ -23,7 +23,7 @@
|
|
|
23
23
|
"ignore": "^7.0.5",
|
|
24
24
|
"open": "^10.1.0",
|
|
25
25
|
"web-tree-sitter": "^0.26.8",
|
|
26
|
-
"@zivis/mcp": "0.1.0-alpha.
|
|
26
|
+
"@zivis/mcp": "0.1.0-alpha.19"
|
|
27
27
|
},
|
|
28
28
|
"devDependencies": {
|
|
29
29
|
"@types/node": "^22.0.0",
|