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 @@
|
|
|
1
|
+
{"version":3,"file":"agent-detector.js","sourceRoot":"","sources":["../../src/services/agent-detector.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,17 @@
|
|
|
1
1
|
import { CraftDeskJson } from '../types/craftdesk-json';
|
|
2
|
+
/**
|
|
3
|
+
* Global configuration stored in ~/.craftdesk/config.json
|
|
4
|
+
* Used for persistent authentication tokens across sessions
|
|
5
|
+
*/
|
|
6
|
+
interface GlobalConfig {
|
|
7
|
+
registries: {
|
|
8
|
+
[url: string]: {
|
|
9
|
+
token: string;
|
|
10
|
+
user: string;
|
|
11
|
+
};
|
|
12
|
+
};
|
|
13
|
+
defaultRegistry?: string;
|
|
14
|
+
}
|
|
2
15
|
/**
|
|
3
16
|
* Manages configuration for the CraftDesk CLI
|
|
4
17
|
*
|
|
@@ -14,6 +27,7 @@ import { CraftDeskJson } from '../types/craftdesk-json';
|
|
|
14
27
|
*/
|
|
15
28
|
export declare class ConfigManager {
|
|
16
29
|
private craftDeskJson;
|
|
30
|
+
private globalConfig;
|
|
17
31
|
/**
|
|
18
32
|
* Gets the appropriate registry URL for a given craft
|
|
19
33
|
*
|
|
@@ -38,26 +52,79 @@ export declare class ConfigManager {
|
|
|
38
52
|
*/
|
|
39
53
|
getRegistryForCraft(craftName: string): Promise<string>;
|
|
40
54
|
/**
|
|
41
|
-
* Retrieves authentication token for a registry
|
|
55
|
+
* Retrieves authentication token for a registry
|
|
42
56
|
*
|
|
43
|
-
*
|
|
44
|
-
* CRAFTDESK_AUTH_{REGISTRY_NAME_UPPERCASE}
|
|
57
|
+
* Token precedence (first match wins):
|
|
58
|
+
* 1. Environment variable: CRAFTDESK_AUTH_{REGISTRY_NAME_UPPERCASE}
|
|
59
|
+
* 2. Global config file: ~/.craftdesk/config.json
|
|
45
60
|
*
|
|
46
|
-
*
|
|
61
|
+
* Environment variables take precedence to allow CI/CD overrides.
|
|
47
62
|
*
|
|
48
|
-
* @param
|
|
63
|
+
* @param registryUrl - The URL of the registry (e.g., 'https://craftdesk.ai')
|
|
49
64
|
* @returns The auth token if found, null otherwise
|
|
50
65
|
*
|
|
51
66
|
* @example
|
|
52
67
|
* ```typescript
|
|
53
|
-
* //
|
|
54
|
-
* const token = await configManager.getAuthToken('
|
|
68
|
+
* // Check for token (env var or config file)
|
|
69
|
+
* const token = await configManager.getAuthToken('https://craftdesk.ai');
|
|
70
|
+
*
|
|
71
|
+
* // Environment variable override:
|
|
72
|
+
* // export CRAFTDESK_AUTH_DEFAULT=token_abc123
|
|
73
|
+
* ```
|
|
74
|
+
*/
|
|
75
|
+
getAuthToken(registryUrl: string): Promise<string | null>;
|
|
76
|
+
/**
|
|
77
|
+
* Convert registry URL or name to environment variable name suffix
|
|
78
|
+
*
|
|
79
|
+
* @param registryUrl - The registry URL or name to convert
|
|
80
|
+
* @returns Environment variable name suffix (e.g., 'CRAFTDESK_AI')
|
|
81
|
+
* @private
|
|
82
|
+
*
|
|
83
|
+
* @example
|
|
84
|
+
* ```typescript
|
|
85
|
+
* // URL to env name
|
|
86
|
+
* getRegistryEnvName('https://craftdesk.ai');
|
|
87
|
+
* // Returns: 'CRAFTDESK_AI'
|
|
88
|
+
*
|
|
89
|
+
* // Registry name to env name
|
|
90
|
+
* getRegistryEnvName('company-private');
|
|
91
|
+
* // Returns: 'COMPANY_PRIVATE'
|
|
92
|
+
* ```
|
|
93
|
+
*/
|
|
94
|
+
private getRegistryEnvName;
|
|
95
|
+
/**
|
|
96
|
+
* Gets the default registry URL from craftdesk.json
|
|
97
|
+
*
|
|
98
|
+
* @returns The default registry URL, or null if not configured
|
|
99
|
+
*/
|
|
100
|
+
getDefaultRegistry(): Promise<string | null>;
|
|
101
|
+
/**
|
|
102
|
+
* Resolves a registry identifier to a full URL
|
|
103
|
+
*
|
|
104
|
+
* Handles three cases:
|
|
105
|
+
* 1. Full URL (http:// or https://) - returned as-is
|
|
106
|
+
* 2. Registry name - looked up in craftdesk.json registries section
|
|
107
|
+
* 3. Hostname - prefixed with https://
|
|
108
|
+
*
|
|
109
|
+
* @param registry - A URL, registry name, or hostname
|
|
110
|
+
* @returns The resolved registry URL
|
|
111
|
+
*
|
|
112
|
+
* @example
|
|
113
|
+
* ```typescript
|
|
114
|
+
* // Full URL - returned as-is
|
|
115
|
+
* await configManager.resolveRegistryUrl('https://my-registry.com');
|
|
116
|
+
* // Returns: 'https://my-registry.com'
|
|
55
117
|
*
|
|
56
|
-
* //
|
|
57
|
-
*
|
|
118
|
+
* // Registry name from craftdesk.json
|
|
119
|
+
* await configManager.resolveRegistryUrl('company-private');
|
|
120
|
+
* // Returns: 'https://company.internal' (from craftdesk.json)
|
|
121
|
+
*
|
|
122
|
+
* // Hostname - prefixed with https://
|
|
123
|
+
* await configManager.resolveRegistryUrl('my-registry.com');
|
|
124
|
+
* // Returns: 'https://my-registry.com'
|
|
58
125
|
* ```
|
|
59
126
|
*/
|
|
60
|
-
|
|
127
|
+
resolveRegistryUrl(registry: string): Promise<string>;
|
|
61
128
|
/**
|
|
62
129
|
* Returns the installation path for crafts
|
|
63
130
|
*
|
|
@@ -83,6 +150,57 @@ export declare class ConfigManager {
|
|
|
83
150
|
* ```
|
|
84
151
|
*/
|
|
85
152
|
getCraftDeskJson(): Promise<CraftDeskJson | null>;
|
|
153
|
+
/**
|
|
154
|
+
* Gets the path to the global config file
|
|
155
|
+
*
|
|
156
|
+
* @returns Path to ~/.craftdesk/config.json
|
|
157
|
+
*/
|
|
158
|
+
getGlobalConfigPath(): string;
|
|
159
|
+
/**
|
|
160
|
+
* Loads the global configuration from ~/.craftdesk/config.json
|
|
161
|
+
*
|
|
162
|
+
* Returns an empty config if the file doesn't exist
|
|
163
|
+
*
|
|
164
|
+
* @returns The global configuration object
|
|
165
|
+
*/
|
|
166
|
+
loadGlobalConfig(): Promise<GlobalConfig>;
|
|
167
|
+
/**
|
|
168
|
+
* Saves the global configuration to ~/.craftdesk/config.json
|
|
169
|
+
*
|
|
170
|
+
* Creates the .craftdesk directory if it doesn't exist
|
|
171
|
+
*
|
|
172
|
+
* @param config - The global configuration to save
|
|
173
|
+
*/
|
|
174
|
+
saveGlobalConfig(config: GlobalConfig): Promise<void>;
|
|
175
|
+
/**
|
|
176
|
+
* Sets the authentication token for a registry
|
|
177
|
+
* Saves the token and username to the global config file
|
|
178
|
+
*
|
|
179
|
+
* @param registryUrl - The URL of the registry
|
|
180
|
+
* @param token - The API token to store
|
|
181
|
+
* @param username - The username associated with the token
|
|
182
|
+
*/
|
|
183
|
+
setAuthToken(registryUrl: string, token: string, username: string): Promise<void>;
|
|
184
|
+
/**
|
|
185
|
+
* Removes the authentication token for a registry
|
|
186
|
+
*
|
|
187
|
+
* @param registryUrl - The URL of the registry to remove auth for
|
|
188
|
+
* @returns true if a token was removed, false if no token existed
|
|
189
|
+
*/
|
|
190
|
+
removeAuthToken(registryUrl: string): Promise<boolean>;
|
|
191
|
+
/**
|
|
192
|
+
* Gets the stored username for a registry
|
|
193
|
+
*
|
|
194
|
+
* @param registryUrl - The URL of the registry
|
|
195
|
+
* @returns The username if found, null otherwise
|
|
196
|
+
*/
|
|
197
|
+
getStoredUsername(registryUrl: string): Promise<string | null>;
|
|
198
|
+
/**
|
|
199
|
+
* Clears the cached global config
|
|
200
|
+
* Useful for testing or after external modifications
|
|
201
|
+
*/
|
|
202
|
+
clearGlobalConfigCache(): void;
|
|
86
203
|
}
|
|
87
204
|
export declare const configManager: ConfigManager;
|
|
205
|
+
export {};
|
|
88
206
|
//# sourceMappingURL=config-manager.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config-manager.d.ts","sourceRoot":"","sources":["../../src/services/config-manager.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"config-manager.d.ts","sourceRoot":"","sources":["../../src/services/config-manager.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAExD;;;GAGG;AACH,UAAU,YAAY;IACpB,UAAU,EAAE;QACV,CAAC,GAAG,EAAE,MAAM,GAAG;YACb,KAAK,EAAE,MAAM,CAAC;YACd,IAAI,EAAE,MAAM,CAAC;SACd,CAAC;KACH,CAAC;IACF,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED;;;;;;;;;;;;GAYG;AACH,qBAAa,aAAa;IACxB,OAAO,CAAC,aAAa,CAA8B;IACnD,OAAO,CAAC,YAAY,CAA6B;IAEjD;;;;;;;;;;;;;;;;;;;;;OAqBG;IACG,mBAAmB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IA6B7D;;;;;;;;;;;;;;;;;;;;OAoBG;IACG,YAAY,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAY/D;;;;;;;;;;;;;;;;;OAiBG;IACH,OAAO,CAAC,kBAAkB;IAU1B;;;;OAIG;IACG,kBAAkB,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAKlD;;;;;;;;;;;;;;;;;;;;;;;;;OAyBG;IACG,kBAAkB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAgB3D;;;;;;OAMG;IACH,cAAc,IAAI,MAAM;IAKxB;;;;;;;;;;;;;;;OAeG;IACG,gBAAgB,IAAI,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC;IAmBvD;;;;OAIG;IACH,mBAAmB,IAAI,MAAM;IAK7B;;;;;;OAMG;IACG,gBAAgB,IAAI,OAAO,CAAC,YAAY,CAAC;IAiB/C;;;;;;OAMG;IACG,gBAAgB,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC;IAO3D;;;;;;;OAOG;IACG,YAAY,CAAC,WAAW,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAMvF;;;;;OAKG;IACG,eAAe,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAU5D;;;;;OAKG;IACG,iBAAiB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAKpE;;;OAGG;IACH,sBAAsB,IAAI,IAAI;CAG/B;AAED,eAAO,MAAM,aAAa,eAAsB,CAAC"}
|
|
@@ -6,6 +6,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
6
6
|
exports.configManager = exports.ConfigManager = void 0;
|
|
7
7
|
const fs_extra_1 = __importDefault(require("fs-extra"));
|
|
8
8
|
const path_1 = __importDefault(require("path"));
|
|
9
|
+
const os_1 = __importDefault(require("os"));
|
|
9
10
|
/**
|
|
10
11
|
* Manages configuration for the CraftDesk CLI
|
|
11
12
|
*
|
|
@@ -21,6 +22,7 @@ const path_1 = __importDefault(require("path"));
|
|
|
21
22
|
*/
|
|
22
23
|
class ConfigManager {
|
|
23
24
|
craftDeskJson = null;
|
|
25
|
+
globalConfig = null;
|
|
24
26
|
/**
|
|
25
27
|
* Gets the appropriate registry URL for a given craft
|
|
26
28
|
*
|
|
@@ -53,7 +55,7 @@ class ConfigManager {
|
|
|
53
55
|
if (craftName.startsWith('@') && craftDesk.registries) {
|
|
54
56
|
const scope = craftName.split('/')[0];
|
|
55
57
|
// Look for a registry with matching scope
|
|
56
|
-
for (const [
|
|
58
|
+
for (const [_name, registry] of Object.entries(craftDesk.registries)) {
|
|
57
59
|
if (registry.scope === scope) {
|
|
58
60
|
return registry.url;
|
|
59
61
|
}
|
|
@@ -67,34 +69,111 @@ class ConfigManager {
|
|
|
67
69
|
return 'https://craftdesk.ai';
|
|
68
70
|
}
|
|
69
71
|
/**
|
|
70
|
-
* Retrieves authentication token for a registry
|
|
72
|
+
* Retrieves authentication token for a registry
|
|
71
73
|
*
|
|
72
|
-
*
|
|
73
|
-
* CRAFTDESK_AUTH_{REGISTRY_NAME_UPPERCASE}
|
|
74
|
+
* Token precedence (first match wins):
|
|
75
|
+
* 1. Environment variable: CRAFTDESK_AUTH_{REGISTRY_NAME_UPPERCASE}
|
|
76
|
+
* 2. Global config file: ~/.craftdesk/config.json
|
|
74
77
|
*
|
|
75
|
-
*
|
|
78
|
+
* Environment variables take precedence to allow CI/CD overrides.
|
|
76
79
|
*
|
|
77
|
-
* @param
|
|
80
|
+
* @param registryUrl - The URL of the registry (e.g., 'https://craftdesk.ai')
|
|
78
81
|
* @returns The auth token if found, null otherwise
|
|
79
82
|
*
|
|
80
83
|
* @example
|
|
81
84
|
* ```typescript
|
|
82
|
-
* //
|
|
83
|
-
* const token = await configManager.getAuthToken('
|
|
85
|
+
* // Check for token (env var or config file)
|
|
86
|
+
* const token = await configManager.getAuthToken('https://craftdesk.ai');
|
|
84
87
|
*
|
|
85
|
-
* //
|
|
86
|
-
* // export
|
|
88
|
+
* // Environment variable override:
|
|
89
|
+
* // export CRAFTDESK_AUTH_DEFAULT=token_abc123
|
|
87
90
|
* ```
|
|
88
91
|
*/
|
|
89
|
-
async getAuthToken(
|
|
92
|
+
async getAuthToken(registryUrl) {
|
|
93
|
+
// 1. Check environment variable first (for CI/CD overrides)
|
|
94
|
+
const envVar = `CRAFTDESK_AUTH_${this.getRegistryEnvName(registryUrl)}`;
|
|
95
|
+
if (process.env[envVar]) {
|
|
96
|
+
return process.env[envVar] || null;
|
|
97
|
+
}
|
|
98
|
+
// 2. Check global config file
|
|
99
|
+
const config = await this.loadGlobalConfig();
|
|
100
|
+
return config.registries[registryUrl]?.token || null;
|
|
101
|
+
}
|
|
102
|
+
/**
|
|
103
|
+
* Convert registry URL or name to environment variable name suffix
|
|
104
|
+
*
|
|
105
|
+
* @param registryUrl - The registry URL or name to convert
|
|
106
|
+
* @returns Environment variable name suffix (e.g., 'CRAFTDESK_AI')
|
|
107
|
+
* @private
|
|
108
|
+
*
|
|
109
|
+
* @example
|
|
110
|
+
* ```typescript
|
|
111
|
+
* // URL to env name
|
|
112
|
+
* getRegistryEnvName('https://craftdesk.ai');
|
|
113
|
+
* // Returns: 'CRAFTDESK_AI'
|
|
114
|
+
*
|
|
115
|
+
* // Registry name to env name
|
|
116
|
+
* getRegistryEnvName('company-private');
|
|
117
|
+
* // Returns: 'COMPANY_PRIVATE'
|
|
118
|
+
* ```
|
|
119
|
+
*/
|
|
120
|
+
getRegistryEnvName(registryUrl) {
|
|
121
|
+
try {
|
|
122
|
+
const url = new URL(registryUrl);
|
|
123
|
+
return url.hostname.toUpperCase().replace(/[.-]/g, '_');
|
|
124
|
+
}
|
|
125
|
+
catch {
|
|
126
|
+
// Not a URL - treat as registry name and convert directly
|
|
127
|
+
return registryUrl.toUpperCase().replace(/[.-]/g, '_');
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
/**
|
|
131
|
+
* Gets the default registry URL from craftdesk.json
|
|
132
|
+
*
|
|
133
|
+
* @returns The default registry URL, or null if not configured
|
|
134
|
+
*/
|
|
135
|
+
async getDefaultRegistry() {
|
|
90
136
|
const craftDesk = await this.getCraftDeskJson();
|
|
91
|
-
|
|
92
|
-
|
|
137
|
+
return craftDesk?.registries?.default?.url || null;
|
|
138
|
+
}
|
|
139
|
+
/**
|
|
140
|
+
* Resolves a registry identifier to a full URL
|
|
141
|
+
*
|
|
142
|
+
* Handles three cases:
|
|
143
|
+
* 1. Full URL (http:// or https://) - returned as-is
|
|
144
|
+
* 2. Registry name - looked up in craftdesk.json registries section
|
|
145
|
+
* 3. Hostname - prefixed with https://
|
|
146
|
+
*
|
|
147
|
+
* @param registry - A URL, registry name, or hostname
|
|
148
|
+
* @returns The resolved registry URL
|
|
149
|
+
*
|
|
150
|
+
* @example
|
|
151
|
+
* ```typescript
|
|
152
|
+
* // Full URL - returned as-is
|
|
153
|
+
* await configManager.resolveRegistryUrl('https://my-registry.com');
|
|
154
|
+
* // Returns: 'https://my-registry.com'
|
|
155
|
+
*
|
|
156
|
+
* // Registry name from craftdesk.json
|
|
157
|
+
* await configManager.resolveRegistryUrl('company-private');
|
|
158
|
+
* // Returns: 'https://company.internal' (from craftdesk.json)
|
|
159
|
+
*
|
|
160
|
+
* // Hostname - prefixed with https://
|
|
161
|
+
* await configManager.resolveRegistryUrl('my-registry.com');
|
|
162
|
+
* // Returns: 'https://my-registry.com'
|
|
163
|
+
* ```
|
|
164
|
+
*/
|
|
165
|
+
async resolveRegistryUrl(registry) {
|
|
166
|
+
// If it's already a full URL, use it directly
|
|
167
|
+
if (registry.startsWith('http://') || registry.startsWith('https://')) {
|
|
168
|
+
return registry;
|
|
169
|
+
}
|
|
170
|
+
// Look it up in the craftdesk.json registries section by name
|
|
171
|
+
const craftDeskJson = await this.getCraftDeskJson();
|
|
172
|
+
if (craftDeskJson?.registries?.[registry]) {
|
|
173
|
+
return craftDeskJson.registries[registry].url;
|
|
93
174
|
}
|
|
94
|
-
//
|
|
95
|
-
|
|
96
|
-
const envVar = `CRAFTDESK_AUTH_${registryName.toUpperCase().replace(/-/g, '_')}`;
|
|
97
|
-
return process.env[envVar] || null;
|
|
175
|
+
// Assume it's a hostname without protocol
|
|
176
|
+
return `https://${registry}`;
|
|
98
177
|
}
|
|
99
178
|
/**
|
|
100
179
|
* Returns the installation path for crafts
|
|
@@ -133,10 +212,103 @@ class ConfigManager {
|
|
|
133
212
|
this.craftDeskJson = JSON.parse(content);
|
|
134
213
|
return this.craftDeskJson;
|
|
135
214
|
}
|
|
136
|
-
catch
|
|
215
|
+
catch {
|
|
137
216
|
return null;
|
|
138
217
|
}
|
|
139
218
|
}
|
|
219
|
+
// ============================================================
|
|
220
|
+
// Global Configuration Methods (~/.craftdesk/config.json)
|
|
221
|
+
// ============================================================
|
|
222
|
+
/**
|
|
223
|
+
* Gets the path to the global config file
|
|
224
|
+
*
|
|
225
|
+
* @returns Path to ~/.craftdesk/config.json
|
|
226
|
+
*/
|
|
227
|
+
getGlobalConfigPath() {
|
|
228
|
+
const home = os_1.default.homedir();
|
|
229
|
+
return path_1.default.join(home, '.craftdesk', 'config.json');
|
|
230
|
+
}
|
|
231
|
+
/**
|
|
232
|
+
* Loads the global configuration from ~/.craftdesk/config.json
|
|
233
|
+
*
|
|
234
|
+
* Returns an empty config if the file doesn't exist
|
|
235
|
+
*
|
|
236
|
+
* @returns The global configuration object
|
|
237
|
+
*/
|
|
238
|
+
async loadGlobalConfig() {
|
|
239
|
+
if (this.globalConfig) {
|
|
240
|
+
return this.globalConfig;
|
|
241
|
+
}
|
|
242
|
+
const configPath = this.getGlobalConfigPath();
|
|
243
|
+
try {
|
|
244
|
+
const content = await fs_extra_1.default.readFile(configPath, 'utf-8');
|
|
245
|
+
const config = JSON.parse(content);
|
|
246
|
+
this.globalConfig = config;
|
|
247
|
+
return config;
|
|
248
|
+
}
|
|
249
|
+
catch {
|
|
250
|
+
// Return empty config if file doesn't exist
|
|
251
|
+
return { registries: {} };
|
|
252
|
+
}
|
|
253
|
+
}
|
|
254
|
+
/**
|
|
255
|
+
* Saves the global configuration to ~/.craftdesk/config.json
|
|
256
|
+
*
|
|
257
|
+
* Creates the .craftdesk directory if it doesn't exist
|
|
258
|
+
*
|
|
259
|
+
* @param config - The global configuration to save
|
|
260
|
+
*/
|
|
261
|
+
async saveGlobalConfig(config) {
|
|
262
|
+
const configPath = this.getGlobalConfigPath();
|
|
263
|
+
await fs_extra_1.default.ensureDir(path_1.default.dirname(configPath));
|
|
264
|
+
await fs_extra_1.default.writeFile(configPath, JSON.stringify(config, null, 2), 'utf-8');
|
|
265
|
+
this.globalConfig = config;
|
|
266
|
+
}
|
|
267
|
+
/**
|
|
268
|
+
* Sets the authentication token for a registry
|
|
269
|
+
* Saves the token and username to the global config file
|
|
270
|
+
*
|
|
271
|
+
* @param registryUrl - The URL of the registry
|
|
272
|
+
* @param token - The API token to store
|
|
273
|
+
* @param username - The username associated with the token
|
|
274
|
+
*/
|
|
275
|
+
async setAuthToken(registryUrl, token, username) {
|
|
276
|
+
const config = await this.loadGlobalConfig();
|
|
277
|
+
config.registries[registryUrl] = { token, user: username };
|
|
278
|
+
await this.saveGlobalConfig(config);
|
|
279
|
+
}
|
|
280
|
+
/**
|
|
281
|
+
* Removes the authentication token for a registry
|
|
282
|
+
*
|
|
283
|
+
* @param registryUrl - The URL of the registry to remove auth for
|
|
284
|
+
* @returns true if a token was removed, false if no token existed
|
|
285
|
+
*/
|
|
286
|
+
async removeAuthToken(registryUrl) {
|
|
287
|
+
const config = await this.loadGlobalConfig();
|
|
288
|
+
if (config.registries[registryUrl]) {
|
|
289
|
+
delete config.registries[registryUrl];
|
|
290
|
+
await this.saveGlobalConfig(config);
|
|
291
|
+
return true;
|
|
292
|
+
}
|
|
293
|
+
return false;
|
|
294
|
+
}
|
|
295
|
+
/**
|
|
296
|
+
* Gets the stored username for a registry
|
|
297
|
+
*
|
|
298
|
+
* @param registryUrl - The URL of the registry
|
|
299
|
+
* @returns The username if found, null otherwise
|
|
300
|
+
*/
|
|
301
|
+
async getStoredUsername(registryUrl) {
|
|
302
|
+
const config = await this.loadGlobalConfig();
|
|
303
|
+
return config.registries[registryUrl]?.user || null;
|
|
304
|
+
}
|
|
305
|
+
/**
|
|
306
|
+
* Clears the cached global config
|
|
307
|
+
* Useful for testing or after external modifications
|
|
308
|
+
*/
|
|
309
|
+
clearGlobalConfigCache() {
|
|
310
|
+
this.globalConfig = null;
|
|
311
|
+
}
|
|
140
312
|
}
|
|
141
313
|
exports.ConfigManager = ConfigManager;
|
|
142
314
|
exports.configManager = new ConfigManager();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config-manager.js","sourceRoot":"","sources":["../../src/services/config-manager.ts"],"names":[],"mappings":";;;;;;AAAA,wDAA0B;AAC1B,gDAAwB;
|
|
1
|
+
{"version":3,"file":"config-manager.js","sourceRoot":"","sources":["../../src/services/config-manager.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import type { ConversionOptions, ConversionResult, SupportedFormat } from '../types/converter';
|
|
2
|
+
/**
|
|
3
|
+
* Service for converting crafts between formats
|
|
4
|
+
*/
|
|
5
|
+
export declare class ConverterService {
|
|
6
|
+
/**
|
|
7
|
+
* Create a converter instance for the specified format
|
|
8
|
+
*
|
|
9
|
+
* @param options - Conversion options
|
|
10
|
+
* @returns Converter instance
|
|
11
|
+
* @throws Error if format is not supported
|
|
12
|
+
*/
|
|
13
|
+
private createConverter;
|
|
14
|
+
/**
|
|
15
|
+
* Convert a craft from a directory
|
|
16
|
+
*
|
|
17
|
+
* @param craftDir - Directory containing the craft
|
|
18
|
+
* @param options - Conversion options
|
|
19
|
+
* @returns Conversion result
|
|
20
|
+
*/
|
|
21
|
+
convertFromDirectory(craftDir: string, options: ConversionOptions): Promise<ConversionResult>;
|
|
22
|
+
/**
|
|
23
|
+
* Convert and write output files
|
|
24
|
+
*
|
|
25
|
+
* @param craftDir - Directory containing the craft
|
|
26
|
+
* @param options - Conversion options
|
|
27
|
+
* @param outputDir - Optional output directory
|
|
28
|
+
* @returns Conversion result
|
|
29
|
+
*/
|
|
30
|
+
convertAndWrite(craftDir: string, options: ConversionOptions, outputDir?: string): Promise<ConversionResult>;
|
|
31
|
+
/**
|
|
32
|
+
* Convert all installed crafts
|
|
33
|
+
*
|
|
34
|
+
* @param claudeDir - Claude directory path
|
|
35
|
+
* @param options - Conversion options
|
|
36
|
+
* @param outputDir - Optional output directory
|
|
37
|
+
* @returns Array of craft names with conversion results
|
|
38
|
+
*/
|
|
39
|
+
convertAllInstalled(claudeDir: string, options: ConversionOptions, outputDir?: string): Promise<Array<{
|
|
40
|
+
craft: string;
|
|
41
|
+
result: ConversionResult;
|
|
42
|
+
}>>;
|
|
43
|
+
/**
|
|
44
|
+
* Get list of supported formats
|
|
45
|
+
*
|
|
46
|
+
* @returns Array of supported formats with descriptions
|
|
47
|
+
*/
|
|
48
|
+
getSupportedFormats(): Array<{
|
|
49
|
+
format: SupportedFormat;
|
|
50
|
+
description: string;
|
|
51
|
+
}>;
|
|
52
|
+
}
|
|
53
|
+
//# sourceMappingURL=converter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"converter.d.ts","sourceRoot":"","sources":["../../src/services/converter.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EACV,iBAAiB,EACjB,gBAAgB,EAEhB,eAAe,EAChB,MAAM,oBAAoB,CAAC;AAG5B;;GAEG;AACH,qBAAa,gBAAgB;IAC3B;;;;;;OAMG;IACH,OAAO,CAAC,eAAe;IAgBvB;;;;;;OAMG;IACG,oBAAoB,CACxB,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,iBAAiB,GACzB,OAAO,CAAC,gBAAgB,CAAC;IAuD5B;;;;;;;OAOG;IACG,eAAe,CACnB,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,iBAAiB,EAC1B,SAAS,CAAC,EAAE,MAAM,GACjB,OAAO,CAAC,gBAAgB,CAAC;IAqC5B;;;;;;;OAOG;IACG,mBAAmB,CACvB,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,iBAAiB,EAC1B,SAAS,CAAC,EAAE,MAAM,GACjB,OAAO,CAAC,KAAK,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,gBAAgB,CAAA;KAAE,CAAC,CAAC;IA4C9D;;;;OAIG;IACH,mBAAmB,IAAI,KAAK,CAAC;QAAE,MAAM,EAAE,eAAe,CAAC;QAAC,WAAW,EAAE,MAAM,CAAA;KAAE,CAAC;CAO/E"}
|