@grant-vine/wunderkind 0.10.7 → 0.11.0
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/.claude-plugin/plugin.json +1 -1
- package/README.md +19 -0
- package/agents/ciso.md +44 -15
- package/agents/creative-director.md +18 -111
- package/agents/fullstack-wunderkind.md +50 -9
- package/agents/legal-counsel.md +14 -85
- package/agents/marketing-wunderkind.md +20 -117
- package/agents/product-wunderkind.md +40 -14
- package/commands/design-md.md +49 -0
- package/dist/agents/ciso.d.ts.map +1 -1
- package/dist/agents/ciso.js +4 -28
- package/dist/agents/ciso.js.map +1 -1
- package/dist/agents/creative-director.d.ts.map +1 -1
- package/dist/agents/creative-director.js +4 -150
- package/dist/agents/creative-director.js.map +1 -1
- package/dist/agents/fullstack-wunderkind.d.ts.map +1 -1
- package/dist/agents/fullstack-wunderkind.js +4 -33
- package/dist/agents/fullstack-wunderkind.js.map +1 -1
- package/dist/agents/legal-counsel.d.ts.map +1 -1
- package/dist/agents/legal-counsel.js +4 -116
- package/dist/agents/legal-counsel.js.map +1 -1
- package/dist/agents/marketing-wunderkind.d.ts.map +1 -1
- package/dist/agents/marketing-wunderkind.js +4 -163
- package/dist/agents/marketing-wunderkind.js.map +1 -1
- package/dist/agents/product-wunderkind.d.ts.map +1 -1
- package/dist/agents/product-wunderkind.js +4 -36
- package/dist/agents/product-wunderkind.js.map +1 -1
- package/dist/agents/shared-prompt-sections.d.ts +2 -0
- package/dist/agents/shared-prompt-sections.d.ts.map +1 -1
- package/dist/agents/shared-prompt-sections.js +16 -0
- package/dist/agents/shared-prompt-sections.js.map +1 -1
- package/dist/agents/slash-commands.d.ts +189 -0
- package/dist/agents/slash-commands.d.ts.map +1 -0
- package/dist/agents/slash-commands.js +274 -0
- package/dist/agents/slash-commands.js.map +1 -0
- package/dist/cli/cli-installer.d.ts.map +1 -1
- package/dist/cli/cli-installer.js +6 -0
- package/dist/cli/cli-installer.js.map +1 -1
- package/dist/cli/config-manager/index.d.ts.map +1 -1
- package/dist/cli/config-manager/index.js +39 -3
- package/dist/cli/config-manager/index.js.map +1 -1
- package/dist/cli/design-md-helper.d.ts +12 -0
- package/dist/cli/design-md-helper.d.ts.map +1 -0
- package/dist/cli/design-md-helper.js +114 -0
- package/dist/cli/design-md-helper.js.map +1 -0
- package/dist/cli/doctor.d.ts.map +1 -1
- package/dist/cli/doctor.js +110 -1
- package/dist/cli/doctor.js.map +1 -1
- package/dist/cli/index.js +32 -0
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/init.d.ts +4 -0
- package/dist/cli/init.d.ts.map +1 -1
- package/dist/cli/init.js +135 -0
- package/dist/cli/init.js.map +1 -1
- package/dist/cli/mcp-adapters.d.ts +24 -0
- package/dist/cli/mcp-adapters.d.ts.map +1 -0
- package/dist/cli/mcp-adapters.js +27 -0
- package/dist/cli/mcp-adapters.js.map +1 -0
- package/dist/cli/mcp-helpers.d.ts +5 -0
- package/dist/cli/mcp-helpers.d.ts.map +1 -0
- package/dist/cli/mcp-helpers.js +120 -0
- package/dist/cli/mcp-helpers.js.map +1 -0
- package/dist/cli/types.d.ts +12 -1
- package/dist/cli/types.d.ts.map +1 -1
- package/dist/cli/uninstall.d.ts +3 -0
- package/dist/cli/uninstall.d.ts.map +1 -1
- package/dist/cli/uninstall.js +104 -0
- package/dist/cli/uninstall.js.map +1 -1
- package/package.json +1 -1
- package/schemas/wunderkind.config.schema.json +4 -1
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
import { existsSync, mkdirSync, readFileSync, writeFileSync } from "node:fs";
|
|
2
|
+
import { dirname, join } from "node:path";
|
|
3
|
+
import { parse as parseJsonc } from "jsonc-parser";
|
|
4
|
+
import { resolveOpenCodeConfigPath } from "./config-manager/index.js";
|
|
5
|
+
import { GOOGLE_STITCH_ADAPTER } from "./mcp-adapters.js";
|
|
6
|
+
const OPENCODE_SCHEMA_URL = "https://opencode.ai/config.json";
|
|
7
|
+
function isRecord(value) {
|
|
8
|
+
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
9
|
+
}
|
|
10
|
+
function trimOneTrailingSlash(value) {
|
|
11
|
+
return value.endsWith("/") ? value.slice(0, -1) : value;
|
|
12
|
+
}
|
|
13
|
+
function resolveProjectOpenCodeConfigPath(projectPath) {
|
|
14
|
+
const projectJson = join(projectPath, "opencode.json");
|
|
15
|
+
const projectJsonc = join(projectPath, "opencode.jsonc");
|
|
16
|
+
const projectLegacyJson = join(projectPath, "config.json");
|
|
17
|
+
const projectLegacyJsonc = join(projectPath, "config.jsonc");
|
|
18
|
+
if (existsSync(projectJson))
|
|
19
|
+
return projectJson;
|
|
20
|
+
if (existsSync(projectJsonc))
|
|
21
|
+
return projectJsonc;
|
|
22
|
+
if (existsSync(projectLegacyJson))
|
|
23
|
+
return projectLegacyJson;
|
|
24
|
+
if (existsSync(projectLegacyJsonc))
|
|
25
|
+
return projectLegacyJsonc;
|
|
26
|
+
return projectJson;
|
|
27
|
+
}
|
|
28
|
+
function parseOpenCodeConfig(filePath) {
|
|
29
|
+
try {
|
|
30
|
+
const content = readFileSync(filePath, "utf-8");
|
|
31
|
+
if (!content.trim())
|
|
32
|
+
return null;
|
|
33
|
+
const parsed = parseJsonc(content);
|
|
34
|
+
if (!isRecord(parsed))
|
|
35
|
+
return null;
|
|
36
|
+
return parsed;
|
|
37
|
+
}
|
|
38
|
+
catch {
|
|
39
|
+
return null;
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
function getMcpEntries(config) {
|
|
43
|
+
if (!config || !isRecord(config.mcp)) {
|
|
44
|
+
return {};
|
|
45
|
+
}
|
|
46
|
+
return config.mcp;
|
|
47
|
+
}
|
|
48
|
+
function hasStitchConfig(filePath) {
|
|
49
|
+
if (!existsSync(filePath)) {
|
|
50
|
+
return false;
|
|
51
|
+
}
|
|
52
|
+
const config = parseOpenCodeConfig(filePath);
|
|
53
|
+
const mcpEntries = getMcpEntries(config);
|
|
54
|
+
if (Object.prototype.hasOwnProperty.call(mcpEntries, GOOGLE_STITCH_ADAPTER.serverName)) {
|
|
55
|
+
return true;
|
|
56
|
+
}
|
|
57
|
+
for (const value of Object.values(mcpEntries)) {
|
|
58
|
+
if (!isRecord(value)) {
|
|
59
|
+
continue;
|
|
60
|
+
}
|
|
61
|
+
if (typeof value.url !== "string") {
|
|
62
|
+
continue;
|
|
63
|
+
}
|
|
64
|
+
if (trimOneTrailingSlash(value.url) === trimOneTrailingSlash(GOOGLE_STITCH_ADAPTER.remoteUrl)) {
|
|
65
|
+
return true;
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
return false;
|
|
69
|
+
}
|
|
70
|
+
function isDriftedStitchConfig(value) {
|
|
71
|
+
if (!isRecord(value)) {
|
|
72
|
+
return true;
|
|
73
|
+
}
|
|
74
|
+
if (typeof value.url !== "string") {
|
|
75
|
+
return true;
|
|
76
|
+
}
|
|
77
|
+
if (trimOneTrailingSlash(value.url) !== trimOneTrailingSlash(GOOGLE_STITCH_ADAPTER.remoteUrl)) {
|
|
78
|
+
return true;
|
|
79
|
+
}
|
|
80
|
+
return value.oauth === true;
|
|
81
|
+
}
|
|
82
|
+
export async function detectStitchMcpPresence(projectPath) {
|
|
83
|
+
const globalConfigPath = resolveOpenCodeConfigPath("global").path;
|
|
84
|
+
const projectConfigPath = projectPath === undefined
|
|
85
|
+
? resolveOpenCodeConfigPath("project").path
|
|
86
|
+
: resolveProjectOpenCodeConfigPath(projectPath);
|
|
87
|
+
const hasGlobal = hasStitchConfig(globalConfigPath);
|
|
88
|
+
const hasProject = hasStitchConfig(projectConfigPath);
|
|
89
|
+
if (hasGlobal && hasProject)
|
|
90
|
+
return "both";
|
|
91
|
+
if (hasProject)
|
|
92
|
+
return "project-local";
|
|
93
|
+
if (hasGlobal)
|
|
94
|
+
return "global-only";
|
|
95
|
+
return "missing";
|
|
96
|
+
}
|
|
97
|
+
export async function mergeStitchMcpConfig(projectPath) {
|
|
98
|
+
const targetPath = resolveProjectOpenCodeConfigPath(projectPath);
|
|
99
|
+
const targetDir = dirname(targetPath);
|
|
100
|
+
mkdirSync(targetDir, { recursive: true });
|
|
101
|
+
const existingConfig = parseOpenCodeConfig(targetPath) ?? {};
|
|
102
|
+
const nextConfig = { ...existingConfig };
|
|
103
|
+
if (nextConfig.$schema === undefined) {
|
|
104
|
+
nextConfig.$schema = OPENCODE_SCHEMA_URL;
|
|
105
|
+
}
|
|
106
|
+
const existingMcpEntries = getMcpEntries(existingConfig);
|
|
107
|
+
const nextMcpEntries = { ...existingMcpEntries };
|
|
108
|
+
const existingStitchEntry = existingMcpEntries[GOOGLE_STITCH_ADAPTER.serverName];
|
|
109
|
+
if (existingStitchEntry === undefined || isDriftedStitchConfig(existingStitchEntry)) {
|
|
110
|
+
nextMcpEntries[GOOGLE_STITCH_ADAPTER.serverName] = GOOGLE_STITCH_ADAPTER.getOpenCodePayload(false);
|
|
111
|
+
}
|
|
112
|
+
nextConfig.mcp = nextMcpEntries;
|
|
113
|
+
writeFileSync(targetPath, `${JSON.stringify(nextConfig, null, 2)}\n`);
|
|
114
|
+
}
|
|
115
|
+
export async function writeStitchSecretFile(apiKey, cwd) {
|
|
116
|
+
const secretFilePath = join(cwd, GOOGLE_STITCH_ADAPTER.secretFilePath);
|
|
117
|
+
mkdirSync(dirname(secretFilePath), { recursive: true });
|
|
118
|
+
writeFileSync(secretFilePath, apiKey.trim());
|
|
119
|
+
}
|
|
120
|
+
//# sourceMappingURL=mcp-helpers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mcp-helpers.js","sourceRoot":"","sources":["../../src/cli/mcp-helpers.ts"],"names":[],"mappings":"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"}
|
package/dist/cli/types.d.ts
CHANGED
|
@@ -3,6 +3,8 @@ export type InstallScope = "global" | "project";
|
|
|
3
3
|
export type InstallRegistrationScope = InstallScope | "both" | "none";
|
|
4
4
|
export type DocHistoryMode = "overwrite" | "append-dated" | "new-dated-file" | "overwrite-archive";
|
|
5
5
|
export type PrdPipelineMode = "filesystem" | "github";
|
|
6
|
+
export type DesignTool = "none" | "google-stitch";
|
|
7
|
+
export type DesignMcpOwnership = "none" | "wunderkind-managed" | "reused-project" | "reused-global";
|
|
6
8
|
export type TeamCulture = "formal-strict" | "pragmatic-balanced" | "experimental-informal";
|
|
7
9
|
export type OrgStructure = "flat" | "hierarchical";
|
|
8
10
|
export type CisoPersonality = "paranoid-enforcer" | "pragmatic-risk-manager" | "educator-collaborator";
|
|
@@ -30,6 +32,9 @@ export interface ProjectConfig {
|
|
|
30
32
|
docsPath: string;
|
|
31
33
|
docHistoryMode: DocHistoryMode;
|
|
32
34
|
prdPipelineMode: PrdPipelineMode;
|
|
35
|
+
designTool: DesignTool;
|
|
36
|
+
designPath: string;
|
|
37
|
+
designMcpOwnership: DesignMcpOwnership;
|
|
33
38
|
}
|
|
34
39
|
export interface InstallArgs {
|
|
35
40
|
tui: boolean;
|
|
@@ -50,7 +55,10 @@ export interface InstallArgs {
|
|
|
50
55
|
docsPath?: string | undefined;
|
|
51
56
|
docHistoryMode?: string | undefined;
|
|
52
57
|
}
|
|
53
|
-
export interface InstallConfig extends GlobalConfig, ProjectConfig {
|
|
58
|
+
export interface InstallConfig extends GlobalConfig, Omit<ProjectConfig, "designTool" | "designPath" | "designMcpOwnership"> {
|
|
59
|
+
designTool?: DesignTool;
|
|
60
|
+
designPath?: string;
|
|
61
|
+
designMcpOwnership?: DesignMcpOwnership;
|
|
54
62
|
}
|
|
55
63
|
export interface ConfigMergeResult {
|
|
56
64
|
success: boolean;
|
|
@@ -83,6 +91,9 @@ export interface DetectedConfig {
|
|
|
83
91
|
docsPath: string;
|
|
84
92
|
docHistoryMode: DocHistoryMode;
|
|
85
93
|
prdPipelineMode: PrdPipelineMode;
|
|
94
|
+
designTool: DesignTool;
|
|
95
|
+
designPath: string;
|
|
96
|
+
designMcpOwnership: DesignMcpOwnership;
|
|
86
97
|
}
|
|
87
98
|
export interface PluginVersionInfo {
|
|
88
99
|
packageName: string;
|
package/dist/cli/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/cli/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,UAAU,GAAG,IAAI,GAAG,KAAK,CAAA;AACrC,MAAM,MAAM,YAAY,GAAG,QAAQ,GAAG,SAAS,CAAA;AAC/C,MAAM,MAAM,wBAAwB,GAAG,YAAY,GAAG,MAAM,GAAG,MAAM,CAAA;AACrE,MAAM,MAAM,cAAc,GAAG,WAAW,GAAG,cAAc,GAAG,gBAAgB,GAAG,mBAAmB,CAAA;AAClG,MAAM,MAAM,eAAe,GAAG,YAAY,GAAG,QAAQ,CAAA;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/cli/types.ts"],"names":[],"mappings":"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"}
|
package/dist/cli/uninstall.d.ts
CHANGED
|
@@ -1,6 +1,9 @@
|
|
|
1
1
|
import type { InstallScope } from "./types.js";
|
|
2
|
+
type RemoveMcpMode = "ask" | "yes" | "no";
|
|
2
3
|
export interface UninstallOptions {
|
|
3
4
|
scope?: InstallScope;
|
|
5
|
+
removeMcp?: RemoveMcpMode;
|
|
4
6
|
}
|
|
5
7
|
export declare function runUninstall(options: UninstallOptions): Promise<number>;
|
|
8
|
+
export {};
|
|
6
9
|
//# sourceMappingURL=uninstall.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"uninstall.d.ts","sourceRoot":"","sources":["../../src/cli/uninstall.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"uninstall.d.ts","sourceRoot":"","sources":["../../src/cli/uninstall.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAgD,YAAY,EAAE,MAAM,YAAY,CAAA;AAE5F,KAAK,aAAa,GAAG,KAAK,GAAG,KAAK,GAAG,IAAI,CAAA;AAEzC,MAAM,WAAW,gBAAgB;IAC/B,KAAK,CAAC,EAAE,YAAY,CAAA;IACpB,SAAS,CAAC,EAAE,aAAa,CAAA;CAC1B;AA2ID,wBAAsB,YAAY,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,MAAM,CAAC,CAsF7E"}
|
package/dist/cli/uninstall.js
CHANGED
|
@@ -1,5 +1,10 @@
|
|
|
1
|
+
import * as p from "@clack/prompts";
|
|
2
|
+
import { existsSync, readFileSync, rmSync, writeFileSync } from "node:fs";
|
|
3
|
+
import { join } from "node:path";
|
|
4
|
+
import { parse as parseJsonc } from "jsonc-parser";
|
|
1
5
|
import color from "picocolors";
|
|
2
6
|
import { detectCurrentConfig, removeNativeAgentFiles, removeNativeCommandFiles, removeNativeSkillFiles, removeGlobalWunderkindConfig, removePluginFromOpenCodeConfig, } from "./config-manager/index.js";
|
|
7
|
+
import { GOOGLE_STITCH_ADAPTER } from "./mcp-adapters.js";
|
|
3
8
|
function resolveScopes(scope, detectedScope) {
|
|
4
9
|
if (scope === "global")
|
|
5
10
|
return ["global"];
|
|
@@ -13,6 +18,102 @@ function resolveScopes(scope, detectedScope) {
|
|
|
13
18
|
return ["global"];
|
|
14
19
|
return [];
|
|
15
20
|
}
|
|
21
|
+
function isRecord(value) {
|
|
22
|
+
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
23
|
+
}
|
|
24
|
+
function readProjectOpenCodeConfig(projectRoot) {
|
|
25
|
+
const projectJson = join(projectRoot, "opencode.json");
|
|
26
|
+
const projectJsonc = join(projectRoot, "opencode.jsonc");
|
|
27
|
+
const projectLegacyJson = join(projectRoot, "config.json");
|
|
28
|
+
const projectLegacyJsonc = join(projectRoot, "config.jsonc");
|
|
29
|
+
const configPath = existsSync(projectJson)
|
|
30
|
+
? projectJson
|
|
31
|
+
: existsSync(projectJsonc)
|
|
32
|
+
? projectJsonc
|
|
33
|
+
: existsSync(projectLegacyJson)
|
|
34
|
+
? projectLegacyJson
|
|
35
|
+
: existsSync(projectLegacyJsonc)
|
|
36
|
+
? projectLegacyJsonc
|
|
37
|
+
: null;
|
|
38
|
+
if (configPath === null) {
|
|
39
|
+
return null;
|
|
40
|
+
}
|
|
41
|
+
const parsed = parseJsonc(readFileSync(configPath, "utf-8"));
|
|
42
|
+
if (!isRecord(parsed)) {
|
|
43
|
+
throw new Error(`Invalid OpenCode config format at ${configPath}`);
|
|
44
|
+
}
|
|
45
|
+
return {
|
|
46
|
+
config: parsed,
|
|
47
|
+
path: configPath,
|
|
48
|
+
};
|
|
49
|
+
}
|
|
50
|
+
function removeProjectStitchMcpEntry(projectRoot) {
|
|
51
|
+
const loaded = readProjectOpenCodeConfig(projectRoot);
|
|
52
|
+
if (loaded === null) {
|
|
53
|
+
return false;
|
|
54
|
+
}
|
|
55
|
+
const { config, path } = loaded;
|
|
56
|
+
const mcpEntries = isRecord(config.mcp) ? { ...config.mcp } : {};
|
|
57
|
+
if (!Object.prototype.hasOwnProperty.call(mcpEntries, GOOGLE_STITCH_ADAPTER.serverName)) {
|
|
58
|
+
return false;
|
|
59
|
+
}
|
|
60
|
+
delete mcpEntries[GOOGLE_STITCH_ADAPTER.serverName];
|
|
61
|
+
if (Object.keys(mcpEntries).length === 0) {
|
|
62
|
+
delete config.mcp;
|
|
63
|
+
}
|
|
64
|
+
else {
|
|
65
|
+
config.mcp = mcpEntries;
|
|
66
|
+
}
|
|
67
|
+
writeFileSync(path, `${JSON.stringify(config, null, 2)}\n`);
|
|
68
|
+
return true;
|
|
69
|
+
}
|
|
70
|
+
function removeManagedStitchSecret(projectRoot) {
|
|
71
|
+
const secretPath = join(projectRoot, GOOGLE_STITCH_ADAPTER.secretFilePath);
|
|
72
|
+
if (!existsSync(secretPath)) {
|
|
73
|
+
return false;
|
|
74
|
+
}
|
|
75
|
+
rmSync(secretPath, { force: true });
|
|
76
|
+
return true;
|
|
77
|
+
}
|
|
78
|
+
async function confirmStitchRemoval(ownership, removeMcp) {
|
|
79
|
+
const isInteractive = process.stdin.isTTY === true && process.stdout.isTTY === true;
|
|
80
|
+
if (removeMcp === "yes")
|
|
81
|
+
return true;
|
|
82
|
+
if (removeMcp === "no")
|
|
83
|
+
return false;
|
|
84
|
+
if (!isInteractive)
|
|
85
|
+
return false;
|
|
86
|
+
const confirmed = await p.confirm({
|
|
87
|
+
message: ownership === "wunderkind-managed"
|
|
88
|
+
? "Also remove project-local Google Stitch MCP config and managed API key file?"
|
|
89
|
+
: "Also remove the project-local Google Stitch MCP config entry?",
|
|
90
|
+
initialValue: ownership === "wunderkind-managed",
|
|
91
|
+
});
|
|
92
|
+
if (p.isCancel(confirmed)) {
|
|
93
|
+
p.cancel("Uninstall cancelled.");
|
|
94
|
+
throw new Error("Uninstall cancelled");
|
|
95
|
+
}
|
|
96
|
+
return confirmed;
|
|
97
|
+
}
|
|
98
|
+
async function handleProjectStitchCleanup(ownership, removeMcp, projectRoot) {
|
|
99
|
+
if (ownership === "none" || ownership === "reused-global") {
|
|
100
|
+
return;
|
|
101
|
+
}
|
|
102
|
+
const shouldRemove = await confirmStitchRemoval(ownership, removeMcp);
|
|
103
|
+
if (!shouldRemove) {
|
|
104
|
+
return;
|
|
105
|
+
}
|
|
106
|
+
const mcpRemoved = removeProjectStitchMcpEntry(projectRoot);
|
|
107
|
+
if (mcpRemoved) {
|
|
108
|
+
console.log(`${color.green("✓")} Removed project-local Google Stitch MCP entry (${color.dim(join(projectRoot, "opencode.json"))})`);
|
|
109
|
+
}
|
|
110
|
+
if (ownership === "wunderkind-managed") {
|
|
111
|
+
const secretRemoved = removeManagedStitchSecret(projectRoot);
|
|
112
|
+
if (secretRemoved) {
|
|
113
|
+
console.log(`${color.green("✓")} Removed managed Google Stitch API key file (${color.dim(join(projectRoot, GOOGLE_STITCH_ADAPTER.secretFilePath))})`);
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
}
|
|
16
117
|
export async function runUninstall(options) {
|
|
17
118
|
try {
|
|
18
119
|
const detected = detectCurrentConfig();
|
|
@@ -80,6 +181,9 @@ export async function runUninstall(options) {
|
|
|
80
181
|
console.log(`${color.dim("- ")}Global Wunderkind config already absent (${color.dim(globalConfigResult.configPath)})`);
|
|
81
182
|
}
|
|
82
183
|
}
|
|
184
|
+
else {
|
|
185
|
+
await handleProjectStitchCleanup(detected.designMcpOwnership, options.removeMcp, process.cwd());
|
|
186
|
+
}
|
|
83
187
|
}
|
|
84
188
|
console.log();
|
|
85
189
|
console.log(color.bold("Safety note"));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"uninstall.js","sourceRoot":"","sources":["../../src/cli/uninstall.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,YAAY,CAAA;AAC9B,OAAO,EACL,mBAAmB,EACnB,sBAAsB,EACtB,wBAAwB,EACxB,sBAAsB,EACtB,4BAA4B,EAC5B,8BAA8B,GAC/B,MAAM,2BAA2B,CAAA;
|
|
1
|
+
{"version":3,"file":"uninstall.js","sourceRoot":"","sources":["../../src/cli/uninstall.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -38,7 +38,10 @@
|
|
|
38
38
|
"docsEnabled": { "type": "boolean" },
|
|
39
39
|
"docsPath": { "type": "string" },
|
|
40
40
|
"docHistoryMode": { "enum": ["overwrite", "append-dated", "new-dated-file", "overwrite-archive"] },
|
|
41
|
-
"prdPipelineMode": { "enum": ["filesystem", "github"] }
|
|
41
|
+
"prdPipelineMode": { "enum": ["filesystem", "github"] },
|
|
42
|
+
"designTool": { "enum": ["none", "google-stitch"] },
|
|
43
|
+
"designPath": { "type": "string" },
|
|
44
|
+
"designMcpOwnership": { "enum": ["none", "wunderkind-managed", "reused-project", "reused-global"] }
|
|
42
45
|
},
|
|
43
46
|
"required": [
|
|
44
47
|
"$schema",
|