craftdesk 0.3.0 → 0.5.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/CHANGELOG.md +88 -0
- package/README.md +1609 -132
- package/dist/commands/add.d.ts +5 -0
- package/dist/commands/add.d.ts.map +1 -1
- package/dist/commands/add.js +306 -8
- package/dist/commands/add.js.map +1 -1
- package/dist/commands/convert.d.ts +8 -0
- package/dist/commands/convert.d.ts.map +1 -0
- package/dist/commands/convert.js +146 -0
- package/dist/commands/convert.js.map +1 -0
- package/dist/commands/detect-agents.d.ts +14 -0
- package/dist/commands/detect-agents.d.ts.map +1 -0
- package/dist/commands/detect-agents.js +86 -0
- package/dist/commands/detect-agents.js.map +1 -0
- package/dist/commands/embed.d.ts +14 -0
- package/dist/commands/embed.d.ts.map +1 -0
- package/dist/commands/embed.js +147 -0
- package/dist/commands/embed.js.map +1 -0
- package/dist/commands/info.d.ts +8 -0
- package/dist/commands/info.d.ts.map +1 -0
- package/dist/commands/info.js +66 -0
- package/dist/commands/info.js.map +1 -0
- package/dist/commands/init.d.ts +5 -0
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +8 -2
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/install.d.ts +5 -0
- package/dist/commands/install.d.ts.map +1 -1
- package/dist/commands/install.js +24 -4
- package/dist/commands/install.js.map +1 -1
- package/dist/commands/list.d.ts +5 -0
- package/dist/commands/list.d.ts.map +1 -1
- package/dist/commands/list.js +75 -7
- package/dist/commands/list.js.map +1 -1
- package/dist/commands/login.d.ts +8 -0
- package/dist/commands/login.d.ts.map +1 -0
- package/dist/commands/login.js +158 -0
- package/dist/commands/login.js.map +1 -0
- package/dist/commands/logout.d.ts +8 -0
- package/dist/commands/logout.d.ts.map +1 -0
- package/dist/commands/logout.js +51 -0
- package/dist/commands/logout.js.map +1 -0
- package/dist/commands/outdated.d.ts +23 -0
- package/dist/commands/outdated.d.ts.map +1 -0
- package/dist/commands/outdated.js +268 -0
- package/dist/commands/outdated.js.map +1 -0
- package/dist/commands/publish.d.ts +8 -0
- package/dist/commands/publish.d.ts.map +1 -0
- package/dist/commands/publish.js +203 -0
- package/dist/commands/publish.js.map +1 -0
- package/dist/commands/remove.d.ts +5 -0
- package/dist/commands/remove.d.ts.map +1 -1
- package/dist/commands/remove.js +51 -10
- package/dist/commands/remove.js.map +1 -1
- package/dist/commands/search.d.ts +8 -0
- package/dist/commands/search.d.ts.map +1 -0
- package/dist/commands/search.js +60 -0
- package/dist/commands/search.js.map +1 -0
- package/dist/commands/setup-multi-agent.d.ts +17 -0
- package/dist/commands/setup-multi-agent.d.ts.map +1 -0
- package/dist/commands/setup-multi-agent.js +188 -0
- package/dist/commands/setup-multi-agent.js.map +1 -0
- package/dist/commands/sync.d.ts +14 -0
- package/dist/commands/sync.d.ts.map +1 -0
- package/dist/commands/sync.js +144 -0
- package/dist/commands/sync.js.map +1 -0
- package/dist/commands/unembed.d.ts +14 -0
- package/dist/commands/unembed.d.ts.map +1 -0
- package/dist/commands/unembed.js +96 -0
- package/dist/commands/unembed.js.map +1 -0
- package/dist/commands/update.d.ts +8 -0
- package/dist/commands/update.d.ts.map +1 -0
- package/dist/commands/update.js +372 -0
- package/dist/commands/update.js.map +1 -0
- package/dist/commands/verify.d.ts +14 -0
- package/dist/commands/verify.d.ts.map +1 -0
- package/dist/commands/verify.js +143 -0
- package/dist/commands/verify.js.map +1 -0
- package/dist/commands/whoami.d.ts +8 -0
- package/dist/commands/whoami.d.ts.map +1 -0
- package/dist/commands/whoami.js +58 -0
- package/dist/commands/whoami.js.map +1 -0
- package/dist/converters/base-converter.d.ts +89 -0
- package/dist/converters/base-converter.d.ts.map +1 -0
- package/dist/converters/base-converter.js +249 -0
- package/dist/converters/base-converter.js.map +1 -0
- package/dist/converters/continue-converter.d.ts +53 -0
- package/dist/converters/continue-converter.d.ts.map +1 -0
- package/dist/converters/continue-converter.js +243 -0
- package/dist/converters/continue-converter.js.map +1 -0
- package/dist/converters/cursor-converter.d.ts +70 -0
- package/dist/converters/cursor-converter.d.ts.map +1 -0
- package/dist/converters/cursor-converter.js +272 -0
- package/dist/converters/cursor-converter.js.map +1 -0
- package/dist/index.js +56 -3
- package/dist/index.js.map +1 -1
- package/dist/services/agent-detector.d.ts +57 -0
- package/dist/services/agent-detector.d.ts.map +1 -0
- package/dist/services/agent-detector.js +146 -0
- package/dist/services/agent-detector.js.map +1 -0
- package/dist/services/config-manager.d.ts +128 -10
- package/dist/services/config-manager.d.ts.map +1 -1
- package/dist/services/config-manager.js +190 -18
- package/dist/services/config-manager.js.map +1 -1
- package/dist/services/converter.d.ts +53 -0
- package/dist/services/converter.d.ts.map +1 -0
- package/dist/services/converter.js +185 -0
- package/dist/services/converter.js.map +1 -0
- package/dist/services/craft-wrapper.d.ts +108 -0
- package/dist/services/craft-wrapper.d.ts.map +1 -0
- package/dist/services/craft-wrapper.js +268 -0
- package/dist/services/craft-wrapper.js.map +1 -0
- package/dist/services/git-resolver.d.ts +9 -3
- package/dist/services/git-resolver.d.ts.map +1 -1
- package/dist/services/git-resolver.js +44 -20
- package/dist/services/git-resolver.js.map +1 -1
- package/dist/services/gitignore-manager.d.ts +74 -0
- package/dist/services/gitignore-manager.d.ts.map +1 -0
- package/dist/services/gitignore-manager.js +188 -0
- package/dist/services/gitignore-manager.js.map +1 -0
- package/dist/services/installer.d.ts +60 -1
- package/dist/services/installer.d.ts.map +1 -1
- package/dist/services/installer.js +295 -20
- package/dist/services/installer.js.map +1 -1
- package/dist/services/multi-agent-sync.d.ts +88 -0
- package/dist/services/multi-agent-sync.d.ts.map +1 -0
- package/dist/services/multi-agent-sync.js +316 -0
- package/dist/services/multi-agent-sync.js.map +1 -0
- package/dist/services/plugin-resolver.d.ts +80 -0
- package/dist/services/plugin-resolver.d.ts.map +1 -0
- package/dist/services/plugin-resolver.js +183 -0
- package/dist/services/plugin-resolver.js.map +1 -0
- package/dist/services/registry-client.d.ts +132 -5
- package/dist/services/registry-client.d.ts.map +1 -1
- package/dist/services/registry-client.js +239 -34
- package/dist/services/registry-client.js.map +1 -1
- package/dist/services/settings-manager.d.ts +151 -0
- package/dist/services/settings-manager.d.ts.map +1 -0
- package/dist/services/settings-manager.js +333 -0
- package/dist/services/settings-manager.js.map +1 -0
- package/dist/types/claude-settings.d.ts +155 -0
- package/dist/types/claude-settings.d.ts.map +1 -0
- package/dist/types/claude-settings.js +20 -0
- package/dist/types/claude-settings.js.map +1 -0
- package/dist/types/converter.d.ts +98 -0
- package/dist/types/converter.d.ts.map +1 -0
- package/dist/types/converter.js +6 -0
- package/dist/types/converter.js.map +1 -0
- package/dist/types/craftdesk-json.d.ts +76 -3
- package/dist/types/craftdesk-json.d.ts.map +1 -1
- package/dist/types/craftdesk-lock.d.ts +62 -1
- package/dist/types/craftdesk-lock.d.ts.map +1 -1
- package/dist/types/multi-agent.d.ts +85 -0
- package/dist/types/multi-agent.d.ts.map +1 -0
- package/dist/types/multi-agent.js +6 -0
- package/dist/types/multi-agent.js.map +1 -0
- package/dist/utils/crypto.d.ts +23 -0
- package/dist/utils/crypto.d.ts.map +1 -0
- package/dist/utils/crypto.js +52 -0
- package/dist/utils/crypto.js.map +1 -0
- package/dist/utils/file-system.d.ts +43 -0
- package/dist/utils/file-system.d.ts.map +1 -1
- package/dist/utils/file-system.js +45 -2
- package/dist/utils/file-system.js.map +1 -1
- package/dist/utils/logger.d.ts +75 -0
- package/dist/utils/logger.d.ts.map +1 -1
- package/dist/utils/logger.js +76 -1
- package/dist/utils/logger.js.map +1 -1
- package/dist/utils/version-utils.d.ts +63 -0
- package/dist/utils/version-utils.d.ts.map +1 -0
- package/dist/utils/version-utils.js +130 -0
- package/dist/utils/version-utils.js.map +1 -0
- package/package.json +36 -9
- package/.claude/settings.local.json +0 -19
- package/.github/workflows/ci.yml +0 -94
- package/API.md +0 -414
- package/TESTING.md +0 -263
- package/dist/commands/config.d.ts +0 -3
- package/dist/commands/config.d.ts.map +0 -1
- package/dist/commands/config.js +0 -56
- package/dist/commands/config.js.map +0 -1
- package/dist/types/config.d.ts +0 -17
- package/dist/types/config.d.ts.map +0 -1
- package/dist/types/config.js +0 -3
- package/dist/types/config.js.map +0 -1
- package/docs/DEPENDENCY_RESOLUTION.md +0 -237
- package/examples/craftdesk-all-sources.json +0 -79
- package/examples/craftdesk-git-monorepo.json +0 -41
- package/examples/craftdesk-multi-registry.json +0 -40
- package/examples/craftdesk-with-registries.json +0 -49
- package/examples/simple-craftdesk.json +0 -10
- package/src/commands/add.ts +0 -314
- package/src/commands/init.ts +0 -55
- package/src/commands/install.ts +0 -126
- package/src/commands/list.ts +0 -126
- package/src/commands/remove.ts +0 -82
- package/src/index.ts +0 -56
- package/src/services/config-manager.ts +0 -150
- package/src/services/git-resolver.ts +0 -373
- package/src/services/installer.ts +0 -314
- package/src/services/registry-client.ts +0 -163
- package/src/types/craftdesk-json.ts +0 -53
- package/src/types/craftdesk-lock.ts +0 -38
- package/src/utils/file-system.ts +0 -55
- package/src/utils/logger.ts +0 -82
- package/tests/fixtures/craftdesk-git.json +0 -17
- package/tests/fixtures/craftdesk.json +0 -15
- package/tests/helpers/test-utils.ts +0 -60
- package/tests/integration/init-command.test.ts +0 -70
- package/tests/integration/list-command.test.ts +0 -77
- package/tests/unit/config-manager.test.ts +0 -228
- package/tests/unit/git-resolver.test.ts +0 -303
- package/tests/unit/installer.test.ts +0 -105
- package/tsconfig.json +0 -20
- package/vitest.config.ts +0 -29
|
@@ -0,0 +1,151 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SettingsManager - Manages .claude/settings.json file
|
|
3
|
+
*
|
|
4
|
+
* Handles:
|
|
5
|
+
* - Reading and writing Claude Code settings
|
|
6
|
+
* - Plugin registration and lifecycle
|
|
7
|
+
* - MCP server configuration
|
|
8
|
+
* - Wrapped craft tracking
|
|
9
|
+
*/
|
|
10
|
+
import type { ClaudeSettings, PluginConfig, MCPServerConfig, WrappedCraftConfig } from '../types/claude-settings';
|
|
11
|
+
/**
|
|
12
|
+
* Service for managing Claude Code settings.json file
|
|
13
|
+
*
|
|
14
|
+
* Handles plugin registration, MCP server configuration, and settings validation
|
|
15
|
+
*/
|
|
16
|
+
export declare class SettingsManager {
|
|
17
|
+
private installDir;
|
|
18
|
+
private settingsPath;
|
|
19
|
+
/**
|
|
20
|
+
* Creates a new SettingsManager instance
|
|
21
|
+
*
|
|
22
|
+
* @param installDir - Installation directory (default: '.claude')
|
|
23
|
+
*/
|
|
24
|
+
constructor(installDir?: string);
|
|
25
|
+
/**
|
|
26
|
+
* Read the settings file
|
|
27
|
+
*
|
|
28
|
+
* Returns default settings if file doesn't exist
|
|
29
|
+
*
|
|
30
|
+
* @returns The Claude settings object
|
|
31
|
+
*/
|
|
32
|
+
readSettings(): Promise<ClaudeSettings>;
|
|
33
|
+
/**
|
|
34
|
+
* Write settings to file
|
|
35
|
+
*
|
|
36
|
+
* @param settings - The settings object to write
|
|
37
|
+
*/
|
|
38
|
+
writeSettings(settings: ClaudeSettings): Promise<void>;
|
|
39
|
+
/**
|
|
40
|
+
* Register a plugin in settings
|
|
41
|
+
*
|
|
42
|
+
* @param config - Plugin configuration to register
|
|
43
|
+
*/
|
|
44
|
+
registerPlugin(config: PluginConfig): Promise<void>;
|
|
45
|
+
/**
|
|
46
|
+
* Unregister a plugin from settings
|
|
47
|
+
*
|
|
48
|
+
* @param pluginName - Name of the plugin to unregister
|
|
49
|
+
*/
|
|
50
|
+
unregisterPlugin(pluginName: string): Promise<void>;
|
|
51
|
+
/**
|
|
52
|
+
* Get plugin configuration
|
|
53
|
+
*
|
|
54
|
+
* @param pluginName - Name of the plugin
|
|
55
|
+
* @returns Plugin configuration or null if not found
|
|
56
|
+
*/
|
|
57
|
+
getPlugin(pluginName: string): Promise<PluginConfig | null>;
|
|
58
|
+
/**
|
|
59
|
+
* List all registered plugins
|
|
60
|
+
*
|
|
61
|
+
* @returns Array of plugin configurations
|
|
62
|
+
*/
|
|
63
|
+
listPlugins(): Promise<PluginConfig[]>;
|
|
64
|
+
/**
|
|
65
|
+
* Enable a plugin
|
|
66
|
+
*
|
|
67
|
+
* @param pluginName - Name of the plugin to enable
|
|
68
|
+
* @throws Error if plugin not found
|
|
69
|
+
*/
|
|
70
|
+
enablePlugin(pluginName: string): Promise<void>;
|
|
71
|
+
/**
|
|
72
|
+
* Disable a plugin
|
|
73
|
+
*
|
|
74
|
+
* @param pluginName - Name of the plugin to disable
|
|
75
|
+
* @throws Error if plugin not found
|
|
76
|
+
*/
|
|
77
|
+
disablePlugin(pluginName: string): Promise<void>;
|
|
78
|
+
/**
|
|
79
|
+
* Register an MCP server
|
|
80
|
+
*
|
|
81
|
+
* @param serverName - Name of the MCP server
|
|
82
|
+
* @param config - MCP server configuration
|
|
83
|
+
*/
|
|
84
|
+
registerMCPServer(serverName: string, config: MCPServerConfig): Promise<void>;
|
|
85
|
+
/**
|
|
86
|
+
* Unregister an MCP server
|
|
87
|
+
*
|
|
88
|
+
* @param serverName - Name of the MCP server to unregister
|
|
89
|
+
*/
|
|
90
|
+
unregisterMCPServer(serverName: string): Promise<void>;
|
|
91
|
+
/**
|
|
92
|
+
* Track a wrapped craft
|
|
93
|
+
*
|
|
94
|
+
* @param pluginName - Name of the plugin
|
|
95
|
+
* @param wrappedConfig - Wrapped craft configuration
|
|
96
|
+
* @throws Error if plugin not found
|
|
97
|
+
*/
|
|
98
|
+
registerWrappedCraft(pluginName: string, wrappedConfig: WrappedCraftConfig): Promise<void>;
|
|
99
|
+
/**
|
|
100
|
+
* Update plugin dependencies tracking
|
|
101
|
+
*
|
|
102
|
+
* @param pluginName - Name of the plugin
|
|
103
|
+
* @param dependencies - Array of dependency names
|
|
104
|
+
* @throws Error if plugin not found
|
|
105
|
+
*/
|
|
106
|
+
updatePluginDependencies(pluginName: string, dependencies: string[]): Promise<void>;
|
|
107
|
+
/**
|
|
108
|
+
* Mark plugin as dependency of another plugin
|
|
109
|
+
*
|
|
110
|
+
* @param pluginName - Name of the plugin
|
|
111
|
+
* @param isDependency - Whether to mark as dependency (default: true)
|
|
112
|
+
* @throws Error if plugin not found
|
|
113
|
+
*/
|
|
114
|
+
markAsDependency(pluginName: string, isDependency?: boolean): Promise<void>;
|
|
115
|
+
/**
|
|
116
|
+
* Get all plugins that are dependencies (not directly installed)
|
|
117
|
+
*
|
|
118
|
+
* @returns Array of dependency plugin configurations
|
|
119
|
+
*/
|
|
120
|
+
getDependencyPlugins(): Promise<PluginConfig[]>;
|
|
121
|
+
/**
|
|
122
|
+
* Get all directly installed plugins (not dependencies)
|
|
123
|
+
*
|
|
124
|
+
* @returns Array of directly installed plugin configurations
|
|
125
|
+
*/
|
|
126
|
+
getDirectPlugins(): Promise<PluginConfig[]>;
|
|
127
|
+
/**
|
|
128
|
+
* Check if settings file exists
|
|
129
|
+
*
|
|
130
|
+
* @returns True if settings file exists
|
|
131
|
+
*/
|
|
132
|
+
exists(): Promise<boolean>;
|
|
133
|
+
/**
|
|
134
|
+
* Create default settings structure
|
|
135
|
+
*
|
|
136
|
+
* @returns Default Claude settings object
|
|
137
|
+
* @private
|
|
138
|
+
*/
|
|
139
|
+
private createDefaultSettings;
|
|
140
|
+
/**
|
|
141
|
+
* Validate settings structure
|
|
142
|
+
*
|
|
143
|
+
* @returns Validation result with valid flag and error messages
|
|
144
|
+
*/
|
|
145
|
+
validateSettings(): Promise<{
|
|
146
|
+
valid: boolean;
|
|
147
|
+
errors: string[];
|
|
148
|
+
}>;
|
|
149
|
+
}
|
|
150
|
+
export declare const settingsManager: SettingsManager;
|
|
151
|
+
//# sourceMappingURL=settings-manager.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"settings-manager.d.ts","sourceRoot":"","sources":["../../src/services/settings-manager.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAIH,OAAO,KAAK,EACV,cAAc,EACd,YAAY,EACZ,eAAe,EACf,kBAAkB,EACnB,MAAM,0BAA0B,CAAC;AAGlC;;;;GAIG;AACH,qBAAa,eAAe;IAQd,OAAO,CAAC,UAAU;IAP9B,OAAO,CAAC,YAAY,CAAS;IAE7B;;;;OAIG;gBACiB,UAAU,GAAE,MAAkB;IAIlD;;;;;;OAMG;IACG,YAAY,IAAI,OAAO,CAAC,cAAc,CAAC;IAkB7C;;;;OAIG;IACG,aAAa,CAAC,QAAQ,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC;IAuB5D;;;;OAIG;IACG,cAAc,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC;IAazD;;;;OAIG;IACG,gBAAgB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAazD;;;;;OAKG;IACG,SAAS,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC;IAKjE;;;;OAIG;IACG,WAAW,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC;IAK5C;;;;;OAKG;IACG,YAAY,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAYrD;;;;;OAKG;IACG,aAAa,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAYtD;;;;;OAKG;IACG,iBAAiB,CACrB,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,eAAe,GACtB,OAAO,CAAC,IAAI,CAAC;IAYhB;;;;OAIG;IACG,mBAAmB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAa5D;;;;;;OAMG;IACG,oBAAoB,CACxB,UAAU,EAAE,MAAM,EAClB,aAAa,EAAE,kBAAkB,GAChC,OAAO,CAAC,IAAI,CAAC;IAgBhB;;;;;;OAMG;IACG,wBAAwB,CAC5B,UAAU,EAAE,MAAM,EAClB,YAAY,EAAE,MAAM,EAAE,GACrB,OAAO,CAAC,IAAI,CAAC;IAWhB;;;;;;OAMG;IACG,gBAAgB,CAAC,UAAU,EAAE,MAAM,EAAE,YAAY,GAAE,OAAc,GAAG,OAAO,CAAC,IAAI,CAAC;IAWvF;;;;OAIG;IACG,oBAAoB,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC;IAKrD;;;;OAIG;IACG,gBAAgB,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC;IAKjD;;;;OAIG;IACG,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC;IAIhC;;;;;OAKG;IACH,OAAO,CAAC,qBAAqB;IAS7B;;;;OAIG;IACG,gBAAgB,IAAI,OAAO,CAAC;QAAE,KAAK,EAAE,OAAO,CAAC;QAAC,MAAM,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC;CAgDxE;AAGD,eAAO,MAAM,eAAe,iBAAwB,CAAC"}
|
|
@@ -0,0 +1,333 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* SettingsManager - Manages .claude/settings.json file
|
|
4
|
+
*
|
|
5
|
+
* Handles:
|
|
6
|
+
* - Reading and writing Claude Code settings
|
|
7
|
+
* - Plugin registration and lifecycle
|
|
8
|
+
* - MCP server configuration
|
|
9
|
+
* - Wrapped craft tracking
|
|
10
|
+
*/
|
|
11
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
12
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
13
|
+
};
|
|
14
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
+
exports.settingsManager = exports.SettingsManager = void 0;
|
|
16
|
+
const fs_extra_1 = __importDefault(require("fs-extra"));
|
|
17
|
+
const path_1 = __importDefault(require("path"));
|
|
18
|
+
const logger_1 = require("../utils/logger");
|
|
19
|
+
/**
|
|
20
|
+
* Service for managing Claude Code settings.json file
|
|
21
|
+
*
|
|
22
|
+
* Handles plugin registration, MCP server configuration, and settings validation
|
|
23
|
+
*/
|
|
24
|
+
class SettingsManager {
|
|
25
|
+
installDir;
|
|
26
|
+
settingsPath;
|
|
27
|
+
/**
|
|
28
|
+
* Creates a new SettingsManager instance
|
|
29
|
+
*
|
|
30
|
+
* @param installDir - Installation directory (default: '.claude')
|
|
31
|
+
*/
|
|
32
|
+
constructor(installDir = '.claude') {
|
|
33
|
+
this.installDir = installDir;
|
|
34
|
+
this.settingsPath = path_1.default.join(installDir, 'settings.json');
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Read the settings file
|
|
38
|
+
*
|
|
39
|
+
* Returns default settings if file doesn't exist
|
|
40
|
+
*
|
|
41
|
+
* @returns The Claude settings object
|
|
42
|
+
*/
|
|
43
|
+
async readSettings() {
|
|
44
|
+
try {
|
|
45
|
+
if (await fs_extra_1.default.pathExists(this.settingsPath)) {
|
|
46
|
+
const content = await fs_extra_1.default.readFile(this.settingsPath, 'utf-8');
|
|
47
|
+
const settings = JSON.parse(content);
|
|
48
|
+
return settings;
|
|
49
|
+
}
|
|
50
|
+
// Return default settings if file doesn't exist
|
|
51
|
+
return this.createDefaultSettings();
|
|
52
|
+
}
|
|
53
|
+
catch (error) {
|
|
54
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
55
|
+
logger_1.logger.warn(`Failed to read settings file: ${message}`);
|
|
56
|
+
logger_1.logger.debug('Returning default settings');
|
|
57
|
+
return this.createDefaultSettings();
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Write settings to file
|
|
62
|
+
*
|
|
63
|
+
* @param settings - The settings object to write
|
|
64
|
+
*/
|
|
65
|
+
async writeSettings(settings) {
|
|
66
|
+
try {
|
|
67
|
+
// Ensure .claude directory exists
|
|
68
|
+
await fs_extra_1.default.ensureDir(this.installDir);
|
|
69
|
+
// Update timestamp
|
|
70
|
+
settings.updatedAt = new Date().toISOString();
|
|
71
|
+
// Write with pretty formatting
|
|
72
|
+
await fs_extra_1.default.writeFile(this.settingsPath, JSON.stringify(settings, null, 2) + '\n', 'utf-8');
|
|
73
|
+
logger_1.logger.debug(`Updated settings file: ${this.settingsPath}`);
|
|
74
|
+
}
|
|
75
|
+
catch (error) {
|
|
76
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
77
|
+
logger_1.logger.error(`Failed to write settings file: ${message}`);
|
|
78
|
+
throw error;
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* Register a plugin in settings
|
|
83
|
+
*
|
|
84
|
+
* @param config - Plugin configuration to register
|
|
85
|
+
*/
|
|
86
|
+
async registerPlugin(config) {
|
|
87
|
+
const settings = await this.readSettings();
|
|
88
|
+
// Add or update plugin
|
|
89
|
+
settings.plugins[config.name] = {
|
|
90
|
+
...config,
|
|
91
|
+
installedAt: config.installedAt || new Date().toISOString()
|
|
92
|
+
};
|
|
93
|
+
await this.writeSettings(settings);
|
|
94
|
+
logger_1.logger.info(`Registered plugin: ${config.name}@${config.version}`);
|
|
95
|
+
}
|
|
96
|
+
/**
|
|
97
|
+
* Unregister a plugin from settings
|
|
98
|
+
*
|
|
99
|
+
* @param pluginName - Name of the plugin to unregister
|
|
100
|
+
*/
|
|
101
|
+
async unregisterPlugin(pluginName) {
|
|
102
|
+
const settings = await this.readSettings();
|
|
103
|
+
if (!settings.plugins[pluginName]) {
|
|
104
|
+
logger_1.logger.warn(`Plugin not found in settings: ${pluginName}`);
|
|
105
|
+
return;
|
|
106
|
+
}
|
|
107
|
+
delete settings.plugins[pluginName];
|
|
108
|
+
await this.writeSettings(settings);
|
|
109
|
+
logger_1.logger.info(`Unregistered plugin: ${pluginName}`);
|
|
110
|
+
}
|
|
111
|
+
/**
|
|
112
|
+
* Get plugin configuration
|
|
113
|
+
*
|
|
114
|
+
* @param pluginName - Name of the plugin
|
|
115
|
+
* @returns Plugin configuration or null if not found
|
|
116
|
+
*/
|
|
117
|
+
async getPlugin(pluginName) {
|
|
118
|
+
const settings = await this.readSettings();
|
|
119
|
+
return settings.plugins[pluginName] || null;
|
|
120
|
+
}
|
|
121
|
+
/**
|
|
122
|
+
* List all registered plugins
|
|
123
|
+
*
|
|
124
|
+
* @returns Array of plugin configurations
|
|
125
|
+
*/
|
|
126
|
+
async listPlugins() {
|
|
127
|
+
const settings = await this.readSettings();
|
|
128
|
+
return Object.values(settings.plugins);
|
|
129
|
+
}
|
|
130
|
+
/**
|
|
131
|
+
* Enable a plugin
|
|
132
|
+
*
|
|
133
|
+
* @param pluginName - Name of the plugin to enable
|
|
134
|
+
* @throws Error if plugin not found
|
|
135
|
+
*/
|
|
136
|
+
async enablePlugin(pluginName) {
|
|
137
|
+
const settings = await this.readSettings();
|
|
138
|
+
if (!settings.plugins[pluginName]) {
|
|
139
|
+
throw new Error(`Plugin not found: ${pluginName}`);
|
|
140
|
+
}
|
|
141
|
+
settings.plugins[pluginName].enabled = true;
|
|
142
|
+
await this.writeSettings(settings);
|
|
143
|
+
logger_1.logger.info(`Enabled plugin: ${pluginName}`);
|
|
144
|
+
}
|
|
145
|
+
/**
|
|
146
|
+
* Disable a plugin
|
|
147
|
+
*
|
|
148
|
+
* @param pluginName - Name of the plugin to disable
|
|
149
|
+
* @throws Error if plugin not found
|
|
150
|
+
*/
|
|
151
|
+
async disablePlugin(pluginName) {
|
|
152
|
+
const settings = await this.readSettings();
|
|
153
|
+
if (!settings.plugins[pluginName]) {
|
|
154
|
+
throw new Error(`Plugin not found: ${pluginName}`);
|
|
155
|
+
}
|
|
156
|
+
settings.plugins[pluginName].enabled = false;
|
|
157
|
+
await this.writeSettings(settings);
|
|
158
|
+
logger_1.logger.info(`Disabled plugin: ${pluginName}`);
|
|
159
|
+
}
|
|
160
|
+
/**
|
|
161
|
+
* Register an MCP server
|
|
162
|
+
*
|
|
163
|
+
* @param serverName - Name of the MCP server
|
|
164
|
+
* @param config - MCP server configuration
|
|
165
|
+
*/
|
|
166
|
+
async registerMCPServer(serverName, config) {
|
|
167
|
+
const settings = await this.readSettings();
|
|
168
|
+
if (!settings.mcpServers) {
|
|
169
|
+
settings.mcpServers = {};
|
|
170
|
+
}
|
|
171
|
+
settings.mcpServers[serverName] = config;
|
|
172
|
+
await this.writeSettings(settings);
|
|
173
|
+
logger_1.logger.info(`Registered MCP server: ${serverName}`);
|
|
174
|
+
}
|
|
175
|
+
/**
|
|
176
|
+
* Unregister an MCP server
|
|
177
|
+
*
|
|
178
|
+
* @param serverName - Name of the MCP server to unregister
|
|
179
|
+
*/
|
|
180
|
+
async unregisterMCPServer(serverName) {
|
|
181
|
+
const settings = await this.readSettings();
|
|
182
|
+
if (!settings.mcpServers || !settings.mcpServers[serverName]) {
|
|
183
|
+
logger_1.logger.warn(`MCP server not found: ${serverName}`);
|
|
184
|
+
return;
|
|
185
|
+
}
|
|
186
|
+
delete settings.mcpServers[serverName];
|
|
187
|
+
await this.writeSettings(settings);
|
|
188
|
+
logger_1.logger.info(`Unregistered MCP server: ${serverName}`);
|
|
189
|
+
}
|
|
190
|
+
/**
|
|
191
|
+
* Track a wrapped craft
|
|
192
|
+
*
|
|
193
|
+
* @param pluginName - Name of the plugin
|
|
194
|
+
* @param wrappedConfig - Wrapped craft configuration
|
|
195
|
+
* @throws Error if plugin not found
|
|
196
|
+
*/
|
|
197
|
+
async registerWrappedCraft(pluginName, wrappedConfig) {
|
|
198
|
+
const settings = await this.readSettings();
|
|
199
|
+
if (!settings.plugins[pluginName]) {
|
|
200
|
+
throw new Error(`Plugin not found: ${pluginName}`);
|
|
201
|
+
}
|
|
202
|
+
settings.plugins[pluginName].wrappedCraft = {
|
|
203
|
+
...wrappedConfig,
|
|
204
|
+
wrappedAt: new Date().toISOString()
|
|
205
|
+
};
|
|
206
|
+
await this.writeSettings(settings);
|
|
207
|
+
logger_1.logger.info(`Registered wrapped craft for plugin: ${pluginName}`);
|
|
208
|
+
}
|
|
209
|
+
/**
|
|
210
|
+
* Update plugin dependencies tracking
|
|
211
|
+
*
|
|
212
|
+
* @param pluginName - Name of the plugin
|
|
213
|
+
* @param dependencies - Array of dependency names
|
|
214
|
+
* @throws Error if plugin not found
|
|
215
|
+
*/
|
|
216
|
+
async updatePluginDependencies(pluginName, dependencies) {
|
|
217
|
+
const settings = await this.readSettings();
|
|
218
|
+
if (!settings.plugins[pluginName]) {
|
|
219
|
+
throw new Error(`Plugin not found: ${pluginName}`);
|
|
220
|
+
}
|
|
221
|
+
settings.plugins[pluginName].dependencies = dependencies;
|
|
222
|
+
await this.writeSettings(settings);
|
|
223
|
+
}
|
|
224
|
+
/**
|
|
225
|
+
* Mark plugin as dependency of another plugin
|
|
226
|
+
*
|
|
227
|
+
* @param pluginName - Name of the plugin
|
|
228
|
+
* @param isDependency - Whether to mark as dependency (default: true)
|
|
229
|
+
* @throws Error if plugin not found
|
|
230
|
+
*/
|
|
231
|
+
async markAsDependency(pluginName, isDependency = true) {
|
|
232
|
+
const settings = await this.readSettings();
|
|
233
|
+
if (!settings.plugins[pluginName]) {
|
|
234
|
+
throw new Error(`Plugin not found: ${pluginName}`);
|
|
235
|
+
}
|
|
236
|
+
settings.plugins[pluginName].isDependency = isDependency;
|
|
237
|
+
await this.writeSettings(settings);
|
|
238
|
+
}
|
|
239
|
+
/**
|
|
240
|
+
* Get all plugins that are dependencies (not directly installed)
|
|
241
|
+
*
|
|
242
|
+
* @returns Array of dependency plugin configurations
|
|
243
|
+
*/
|
|
244
|
+
async getDependencyPlugins() {
|
|
245
|
+
const settings = await this.readSettings();
|
|
246
|
+
return Object.values(settings.plugins).filter(p => p.isDependency);
|
|
247
|
+
}
|
|
248
|
+
/**
|
|
249
|
+
* Get all directly installed plugins (not dependencies)
|
|
250
|
+
*
|
|
251
|
+
* @returns Array of directly installed plugin configurations
|
|
252
|
+
*/
|
|
253
|
+
async getDirectPlugins() {
|
|
254
|
+
const settings = await this.readSettings();
|
|
255
|
+
return Object.values(settings.plugins).filter(p => !p.isDependency);
|
|
256
|
+
}
|
|
257
|
+
/**
|
|
258
|
+
* Check if settings file exists
|
|
259
|
+
*
|
|
260
|
+
* @returns True if settings file exists
|
|
261
|
+
*/
|
|
262
|
+
async exists() {
|
|
263
|
+
return fs_extra_1.default.pathExists(this.settingsPath);
|
|
264
|
+
}
|
|
265
|
+
/**
|
|
266
|
+
* Create default settings structure
|
|
267
|
+
*
|
|
268
|
+
* @returns Default Claude settings object
|
|
269
|
+
* @private
|
|
270
|
+
*/
|
|
271
|
+
createDefaultSettings() {
|
|
272
|
+
return {
|
|
273
|
+
version: '1.0.0',
|
|
274
|
+
installPath: this.installDir,
|
|
275
|
+
updatedAt: new Date().toISOString(),
|
|
276
|
+
plugins: {}
|
|
277
|
+
};
|
|
278
|
+
}
|
|
279
|
+
/**
|
|
280
|
+
* Validate settings structure
|
|
281
|
+
*
|
|
282
|
+
* @returns Validation result with valid flag and error messages
|
|
283
|
+
*/
|
|
284
|
+
async validateSettings() {
|
|
285
|
+
const errors = [];
|
|
286
|
+
try {
|
|
287
|
+
const settings = await this.readSettings();
|
|
288
|
+
// Check version
|
|
289
|
+
if (!settings.version) {
|
|
290
|
+
errors.push('Missing version field');
|
|
291
|
+
}
|
|
292
|
+
// Check plugins
|
|
293
|
+
if (!settings.plugins || typeof settings.plugins !== 'object') {
|
|
294
|
+
errors.push('Invalid plugins structure');
|
|
295
|
+
}
|
|
296
|
+
else {
|
|
297
|
+
// Validate each plugin
|
|
298
|
+
for (const [name, config] of Object.entries(settings.plugins)) {
|
|
299
|
+
if (!config.name || !config.version || !config.type || !config.installPath) {
|
|
300
|
+
errors.push(`Invalid plugin config for: ${name}`);
|
|
301
|
+
}
|
|
302
|
+
}
|
|
303
|
+
}
|
|
304
|
+
// Check MCP servers if present
|
|
305
|
+
if (settings.mcpServers) {
|
|
306
|
+
for (const [name, server] of Object.entries(settings.mcpServers)) {
|
|
307
|
+
if (!server.type) {
|
|
308
|
+
errors.push(`Invalid MCP server config for: ${name}`);
|
|
309
|
+
}
|
|
310
|
+
if (server.type === 'stdio' && !server.command) {
|
|
311
|
+
errors.push(`Missing command for stdio MCP server: ${name}`);
|
|
312
|
+
}
|
|
313
|
+
if (server.type === 'sse' && !server.url) {
|
|
314
|
+
errors.push(`Missing URL for sse MCP server: ${name}`);
|
|
315
|
+
}
|
|
316
|
+
}
|
|
317
|
+
}
|
|
318
|
+
return {
|
|
319
|
+
valid: errors.length === 0,
|
|
320
|
+
errors
|
|
321
|
+
};
|
|
322
|
+
}
|
|
323
|
+
catch (error) {
|
|
324
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
325
|
+
errors.push(`Failed to read settings: ${message}`);
|
|
326
|
+
return { valid: false, errors };
|
|
327
|
+
}
|
|
328
|
+
}
|
|
329
|
+
}
|
|
330
|
+
exports.SettingsManager = SettingsManager;
|
|
331
|
+
// Export singleton instance
|
|
332
|
+
exports.settingsManager = new SettingsManager();
|
|
333
|
+
//# sourceMappingURL=settings-manager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"settings-manager.js","sourceRoot":"","sources":["../../src/services/settings-manager.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,155 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Type definitions for .claude/settings.json
|
|
3
|
+
*
|
|
4
|
+
* This file manages Claude Code's plugin system configuration,
|
|
5
|
+
* including MCP server registration and plugin lifecycle.
|
|
6
|
+
*/
|
|
7
|
+
/**
|
|
8
|
+
* MCP (Model Context Protocol) Server Configuration
|
|
9
|
+
* Used to register external tools and services with Claude
|
|
10
|
+
*/
|
|
11
|
+
export interface MCPServerConfig {
|
|
12
|
+
/** Server type - stdio for local processes, sse for server-sent events */
|
|
13
|
+
type: 'stdio' | 'sse';
|
|
14
|
+
/** Command to execute (for stdio type) */
|
|
15
|
+
command?: string;
|
|
16
|
+
/** Command arguments */
|
|
17
|
+
args?: string[];
|
|
18
|
+
/** Environment variables */
|
|
19
|
+
env?: Record<string, string>;
|
|
20
|
+
/** Server URL (for sse type) */
|
|
21
|
+
url?: string;
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Configuration for individual crafts wrapped as plugins
|
|
25
|
+
*/
|
|
26
|
+
export interface WrappedCraftConfig {
|
|
27
|
+
/** Original craft type */
|
|
28
|
+
type: 'skill' | 'agent' | 'command' | 'hook';
|
|
29
|
+
/** Path to original craft relative to .claude/ */
|
|
30
|
+
originalPath: string;
|
|
31
|
+
/** Expose craft capabilities as tools */
|
|
32
|
+
exposeAsTools?: boolean;
|
|
33
|
+
/** Expose craft via MCP server */
|
|
34
|
+
exposeAsMCP?: boolean;
|
|
35
|
+
/** When the craft was wrapped */
|
|
36
|
+
wrappedAt?: string;
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Plugin configuration in Claude settings
|
|
40
|
+
*/
|
|
41
|
+
export interface PluginConfig {
|
|
42
|
+
/** Plugin name (author/name format) */
|
|
43
|
+
name: string;
|
|
44
|
+
/** Plugin version */
|
|
45
|
+
version: string;
|
|
46
|
+
/** Plugin type - native plugin or wrapped craft */
|
|
47
|
+
type: 'plugin' | 'wrapped';
|
|
48
|
+
/** Whether plugin is currently enabled */
|
|
49
|
+
enabled: boolean;
|
|
50
|
+
/** Installation path relative to .claude/ */
|
|
51
|
+
installPath: string;
|
|
52
|
+
/** Installation timestamp */
|
|
53
|
+
installedAt: string;
|
|
54
|
+
/** MCP server configuration (if plugin provides MCP tools) */
|
|
55
|
+
mcp?: MCPServerConfig;
|
|
56
|
+
/** Wrapped craft metadata (if type is 'wrapped') */
|
|
57
|
+
wrappedCraft?: WrappedCraftConfig;
|
|
58
|
+
/** Plugin dependencies (for tracking) */
|
|
59
|
+
dependencies?: string[];
|
|
60
|
+
/** Whether this plugin was installed as a dependency */
|
|
61
|
+
isDependency?: boolean;
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Complete .claude/settings.json structure
|
|
65
|
+
*/
|
|
66
|
+
export interface ClaudeSettings {
|
|
67
|
+
/** Settings file format version */
|
|
68
|
+
version: string;
|
|
69
|
+
/** Path to .claude directory */
|
|
70
|
+
installPath: string;
|
|
71
|
+
/** Last updated timestamp */
|
|
72
|
+
updatedAt: string;
|
|
73
|
+
/** Registered plugins */
|
|
74
|
+
plugins: Record<string, PluginConfig>;
|
|
75
|
+
/** MCP server registry (global servers not tied to specific plugins) */
|
|
76
|
+
mcpServers?: Record<string, MCPServerConfig>;
|
|
77
|
+
/** Plugin lifecycle hooks */
|
|
78
|
+
hooks?: {
|
|
79
|
+
/** Run after plugin installation */
|
|
80
|
+
postInstall?: string[];
|
|
81
|
+
/** Run before plugin removal */
|
|
82
|
+
preRemove?: string[];
|
|
83
|
+
};
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* Plugin manifest structure (.claude-plugin/plugin.json)
|
|
87
|
+
* Based on official Claude Code plugin specification
|
|
88
|
+
*/
|
|
89
|
+
export interface PluginManifest {
|
|
90
|
+
/** Plugin name (required) - kebab-case, unique identifier */
|
|
91
|
+
name: string;
|
|
92
|
+
/** Plugin version - semantic versioning (e.g., "1.0.0") */
|
|
93
|
+
version?: string;
|
|
94
|
+
/** Plugin description */
|
|
95
|
+
description?: string;
|
|
96
|
+
/** Plugin author - can be string or object */
|
|
97
|
+
author?: string | {
|
|
98
|
+
name: string;
|
|
99
|
+
email?: string;
|
|
100
|
+
url?: string;
|
|
101
|
+
};
|
|
102
|
+
/** Homepage URL */
|
|
103
|
+
homepage?: string;
|
|
104
|
+
/** Repository URL */
|
|
105
|
+
repository?: string;
|
|
106
|
+
/** License */
|
|
107
|
+
license?: string;
|
|
108
|
+
/** Keywords for discovery/categorization */
|
|
109
|
+
keywords?: string[];
|
|
110
|
+
/** Commands directory path (default: "commands/") */
|
|
111
|
+
commands?: string | string[];
|
|
112
|
+
/** Agents directory path (default: "agents/") */
|
|
113
|
+
agents?: string | string[];
|
|
114
|
+
/** Hooks configuration path (default: "hooks/hooks.json") */
|
|
115
|
+
hooks?: string | object;
|
|
116
|
+
/** MCP servers configuration (default: ".mcp.json") */
|
|
117
|
+
mcpServers?: string | Record<string, MCPServerConfig>;
|
|
118
|
+
/** CraftDesk-specific: Components listing (not part of official spec) */
|
|
119
|
+
components?: {
|
|
120
|
+
skills?: string[];
|
|
121
|
+
agents?: string[];
|
|
122
|
+
commands?: string[];
|
|
123
|
+
hooks?: string[];
|
|
124
|
+
};
|
|
125
|
+
/** CraftDesk-specific: Plugin dependencies (not part of official spec) */
|
|
126
|
+
dependencies?: Record<string, string>;
|
|
127
|
+
/** CraftDesk-specific: Peer dependencies (not part of official spec) */
|
|
128
|
+
peerDependencies?: Record<string, string>;
|
|
129
|
+
/** CraftDesk-specific: Lifecycle scripts (not part of official spec) */
|
|
130
|
+
scripts?: {
|
|
131
|
+
postInstall?: string;
|
|
132
|
+
preRemove?: string;
|
|
133
|
+
};
|
|
134
|
+
/** CraftDesk-specific: Wrapped craft metadata (for plugins created from individual crafts) */
|
|
135
|
+
wrapped?: {
|
|
136
|
+
/** Original craft name */
|
|
137
|
+
craftName: string;
|
|
138
|
+
/** Original craft type */
|
|
139
|
+
craftType: string;
|
|
140
|
+
/** Timestamp when the craft was wrapped */
|
|
141
|
+
wrappedAt?: string;
|
|
142
|
+
/** Whether to expose as tools */
|
|
143
|
+
exposeAsTools?: boolean;
|
|
144
|
+
/** Whether to expose via MCP */
|
|
145
|
+
exposeAsMCP?: boolean;
|
|
146
|
+
};
|
|
147
|
+
/** Additional metadata - allows for future extensibility */
|
|
148
|
+
[key: string]: unknown;
|
|
149
|
+
}
|
|
150
|
+
/**
|
|
151
|
+
* Default Claude settings structure
|
|
152
|
+
* Used when initializing a new .claude/settings.json file
|
|
153
|
+
*/
|
|
154
|
+
export declare const DEFAULT_CLAUDE_SETTINGS: ClaudeSettings;
|
|
155
|
+
//# sourceMappingURL=claude-settings.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"claude-settings.d.ts","sourceRoot":"","sources":["../../src/types/claude-settings.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Type definitions for .claude/settings.json
|
|
4
|
+
*
|
|
5
|
+
* This file manages Claude Code's plugin system configuration,
|
|
6
|
+
* including MCP server registration and plugin lifecycle.
|
|
7
|
+
*/
|
|
8
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
+
exports.DEFAULT_CLAUDE_SETTINGS = void 0;
|
|
10
|
+
/**
|
|
11
|
+
* Default Claude settings structure
|
|
12
|
+
* Used when initializing a new .claude/settings.json file
|
|
13
|
+
*/
|
|
14
|
+
exports.DEFAULT_CLAUDE_SETTINGS = {
|
|
15
|
+
version: '1.0.0',
|
|
16
|
+
installPath: '.claude',
|
|
17
|
+
updatedAt: new Date().toISOString(),
|
|
18
|
+
plugins: {}
|
|
19
|
+
};
|
|
20
|
+
//# sourceMappingURL=claude-settings.js.map
|