mycontext-cli 2.0.27 ā 2.0.29
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/README.md +71 -342
- package/dist/agents/implementations/CodeGenSubAgent.d.ts.map +1 -1
- package/dist/agents/implementations/CodeGenSubAgent.js +67 -14
- package/dist/agents/implementations/CodeGenSubAgent.js.map +1 -1
- package/dist/agents/implementations/DesignPipelineAgent.d.ts +80 -0
- package/dist/agents/implementations/DesignPipelineAgent.d.ts.map +1 -0
- package/dist/agents/implementations/DesignPipelineAgent.js +1406 -0
- package/dist/agents/implementations/DesignPipelineAgent.js.map +1 -0
- package/dist/agents/implementations/FeatureAssemblyAgent.d.ts +67 -0
- package/dist/agents/implementations/FeatureAssemblyAgent.d.ts.map +1 -0
- package/dist/agents/implementations/FeatureAssemblyAgent.js +564 -0
- package/dist/agents/implementations/FeatureAssemblyAgent.js.map +1 -0
- package/dist/agents/implementations/PromptConstructorAgent.d.ts +10 -0
- package/dist/agents/implementations/PromptConstructorAgent.d.ts.map +1 -1
- package/dist/agents/implementations/PromptConstructorAgent.js +172 -12
- package/dist/agents/implementations/PromptConstructorAgent.js.map +1 -1
- package/dist/agents/implementations/RoleBasedGenerator.d.ts +52 -0
- package/dist/agents/implementations/RoleBasedGenerator.d.ts.map +1 -0
- package/dist/agents/implementations/RoleBasedGenerator.js +370 -0
- package/dist/agents/implementations/RoleBasedGenerator.js.map +1 -0
- package/dist/cli.js +111 -56
- package/dist/cli.js.map +1 -1
- package/dist/clients/ClaudeSDKClient.d.ts +48 -0
- package/dist/clients/ClaudeSDKClient.d.ts.map +1 -0
- package/dist/clients/ClaudeSDKClient.js +158 -0
- package/dist/clients/ClaudeSDKClient.js.map +1 -0
- package/dist/clients/MyContextAIClient.d.ts +73 -0
- package/dist/clients/MyContextAIClient.d.ts.map +1 -0
- package/dist/clients/MyContextAIClient.js +280 -0
- package/dist/clients/MyContextAIClient.js.map +1 -0
- package/dist/clients/ProviderChain.d.ts +87 -0
- package/dist/clients/ProviderChain.d.ts.map +1 -0
- package/dist/clients/ProviderChain.js +246 -0
- package/dist/clients/ProviderChain.js.map +1 -0
- package/dist/clients/XAIClient.d.ts +48 -0
- package/dist/clients/XAIClient.d.ts.map +1 -0
- package/dist/clients/XAIClient.js +152 -0
- package/dist/clients/XAIClient.js.map +1 -0
- package/dist/commands/assemble-features.d.ts +40 -0
- package/dist/commands/assemble-features.d.ts.map +1 -0
- package/dist/commands/assemble-features.js +383 -0
- package/dist/commands/assemble-features.js.map +1 -0
- package/dist/commands/clone-starter.d.ts +32 -0
- package/dist/commands/clone-starter.d.ts.map +1 -0
- package/dist/commands/clone-starter.js +218 -0
- package/dist/commands/clone-starter.js.map +1 -0
- package/dist/commands/design-analyze.d.ts +46 -0
- package/dist/commands/design-analyze.d.ts.map +1 -0
- package/dist/commands/design-analyze.js +232 -0
- package/dist/commands/design-analyze.js.map +1 -0
- package/dist/commands/generate-components.d.ts +11 -0
- package/dist/commands/generate-components.d.ts.map +1 -1
- package/dist/commands/generate-components.js +342 -12
- package/dist/commands/generate-components.js.map +1 -1
- package/dist/commands/generate-context-files.d.ts +9 -0
- package/dist/commands/generate-context-files.d.ts.map +1 -1
- package/dist/commands/generate-context-files.js +57 -0
- package/dist/commands/generate-context-files.js.map +1 -1
- package/dist/commands/generate.d.ts +5 -0
- package/dist/commands/generate.d.ts.map +1 -1
- package/dist/commands/generate.js +109 -2
- package/dist/commands/generate.js.map +1 -1
- package/dist/commands/init.d.ts +1 -0
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +32 -10
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/preview-components.d.ts +12 -0
- package/dist/commands/preview-components.d.ts.map +1 -0
- package/dist/commands/preview-components.js +122 -0
- package/dist/commands/preview-components.js.map +1 -0
- package/dist/commands/refine-component.d.ts +43 -0
- package/dist/commands/refine-component.d.ts.map +1 -0
- package/dist/commands/refine-component.js +313 -0
- package/dist/commands/refine-component.js.map +1 -0
- package/dist/commands/review-context.d.ts +47 -0
- package/dist/commands/review-context.d.ts.map +1 -0
- package/dist/commands/review-context.js +335 -0
- package/dist/commands/review-context.js.map +1 -0
- package/dist/commands/setup-complete.d.ts.map +1 -1
- package/dist/commands/setup-complete.js +38 -2
- package/dist/commands/setup-complete.js.map +1 -1
- package/dist/commands/workflow.d.ts.map +1 -1
- package/dist/commands/workflow.js +86 -7
- package/dist/commands/workflow.js.map +1 -1
- package/dist/config/intent-dictionary.json +3700 -0
- package/dist/package.json +12 -1
- package/dist/services/ContextValidator.d.ts +99 -0
- package/dist/services/ContextValidator.d.ts.map +1 -0
- package/dist/services/ContextValidator.js +433 -0
- package/dist/services/ContextValidator.js.map +1 -0
- package/dist/services/IntentEnricher.d.ts +61 -0
- package/dist/services/IntentEnricher.d.ts.map +1 -0
- package/dist/services/IntentEnricher.js +318 -0
- package/dist/services/IntentEnricher.js.map +1 -0
- package/dist/services/IntentValidator.d.ts +114 -0
- package/dist/services/IntentValidator.d.ts.map +1 -0
- package/dist/services/IntentValidator.js +680 -0
- package/dist/services/IntentValidator.js.map +1 -0
- package/dist/services/MutationLogger.d.ts +54 -0
- package/dist/services/MutationLogger.d.ts.map +1 -0
- package/dist/services/MutationLogger.js +164 -0
- package/dist/services/MutationLogger.js.map +1 -0
- package/dist/services/RegressionRunner.d.ts +49 -0
- package/dist/services/RegressionRunner.d.ts.map +1 -0
- package/dist/services/RegressionRunner.js +285 -0
- package/dist/services/RegressionRunner.js.map +1 -0
- package/dist/services/TriggerLogger.d.ts +101 -0
- package/dist/services/TriggerLogger.d.ts.map +1 -0
- package/dist/services/TriggerLogger.js +263 -0
- package/dist/services/TriggerLogger.js.map +1 -0
- package/dist/types/design-pipeline.d.ts +300 -0
- package/dist/types/design-pipeline.d.ts.map +1 -0
- package/dist/types/design-pipeline.js +9 -0
- package/dist/types/design-pipeline.js.map +1 -0
- package/dist/types/feature-bundle.d.ts +239 -0
- package/dist/types/feature-bundle.d.ts.map +1 -0
- package/dist/types/feature-bundle.js +9 -0
- package/dist/types/feature-bundle.js.map +1 -0
- package/dist/types/index.d.ts +2 -0
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/index.js +2 -0
- package/dist/types/index.js.map +1 -1
- package/dist/types/intent-dictionary.d.ts +525 -0
- package/dist/types/intent-dictionary.d.ts.map +1 -0
- package/dist/types/intent-dictionary.js +11 -0
- package/dist/types/intent-dictionary.js.map +1 -0
- package/dist/types/role-permissions.d.ts +167 -0
- package/dist/types/role-permissions.d.ts.map +1 -0
- package/dist/types/role-permissions.js +9 -0
- package/dist/types/role-permissions.js.map +1 -0
- package/dist/utils/contextEnricher.d.ts +41 -0
- package/dist/utils/contextEnricher.d.ts.map +1 -0
- package/dist/utils/contextEnricher.js +327 -0
- package/dist/utils/contextEnricher.js.map +1 -0
- package/dist/utils/designFallbacks.d.ts +48 -0
- package/dist/utils/designFallbacks.d.ts.map +1 -0
- package/dist/utils/designFallbacks.js +885 -0
- package/dist/utils/designFallbacks.js.map +1 -0
- package/dist/utils/designManifestManager.d.ts +89 -0
- package/dist/utils/designManifestManager.d.ts.map +1 -0
- package/dist/utils/designManifestManager.js +533 -0
- package/dist/utils/designManifestManager.js.map +1 -0
- package/dist/utils/designPipelineStateManager.d.ts +63 -0
- package/dist/utils/designPipelineStateManager.d.ts.map +1 -0
- package/dist/utils/designPipelineStateManager.js +174 -0
- package/dist/utils/designPipelineStateManager.js.map +1 -0
- package/dist/utils/envExampleGenerator.d.ts.map +1 -1
- package/dist/utils/envExampleGenerator.js +41 -171
- package/dist/utils/envExampleGenerator.js.map +1 -1
- package/dist/utils/featureBundleManager.d.ts +90 -0
- package/dist/utils/featureBundleManager.d.ts.map +1 -0
- package/dist/utils/featureBundleManager.js +340 -0
- package/dist/utils/featureBundleManager.js.map +1 -0
- package/dist/utils/githubCloner.d.ts +93 -0
- package/dist/utils/githubCloner.d.ts.map +1 -0
- package/dist/utils/githubCloner.js +305 -0
- package/dist/utils/githubCloner.js.map +1 -0
- package/dist/utils/hybridAIClient.d.ts.map +1 -1
- package/dist/utils/hybridAIClient.js +21 -0
- package/dist/utils/hybridAIClient.js.map +1 -1
- package/dist/utils/openRouterClient.d.ts +10 -0
- package/dist/utils/openRouterClient.d.ts.map +1 -0
- package/dist/utils/openRouterClient.js +61 -0
- package/dist/utils/openRouterClient.js.map +1 -0
- package/dist/utils/rolePermissionMapper.d.ts +89 -0
- package/dist/utils/rolePermissionMapper.d.ts.map +1 -0
- package/dist/utils/rolePermissionMapper.js +337 -0
- package/dist/utils/rolePermissionMapper.js.map +1 -0
- package/dist/utils/unifiedDesignContextLoader.d.ts +76 -0
- package/dist/utils/unifiedDesignContextLoader.d.ts.map +1 -0
- package/dist/utils/unifiedDesignContextLoader.js +344 -0
- package/dist/utils/unifiedDesignContextLoader.js.map +1 -0
- package/package.json +12 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"XAIClient.d.ts","sourceRoot":"","sources":["../../src/clients/XAIClient.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,QAAQ,EACR,eAAe,EACf,YAAY,EACb,MAAM,wBAAwB,CAAC;AAEhC;;;;;GAKG;AACH,qBAAa,SAAU,YAAW,QAAQ;IACxC,QAAQ,CAAC,UAAU,EAAG,YAAY,CAAU;IAC5C,QAAQ,CAAC,aAAa,SAAS;IAC/B,QAAQ,CAAC,iBAAiB,SAAS;IAEnC,OAAO,CAAC,MAAM,CAAuB;IACrC,OAAO,CAAC,OAAO,CAAyB;;IAMxC;;OAEG;IACH,SAAS,IAAI,OAAO;IAIpB;;OAEG;IACH,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAI/B;;OAEG;IACG,eAAe,IAAI,OAAO,CAAC,OAAO,CAAC;IA+BzC;;OAEG;IACG,YAAY,CAChB,MAAM,EAAE,MAAM,EACd,OAAO,GAAE,eAAoB,GAC5B,OAAO,CAAC,MAAM,CAAC;IAsClB;;OAEG;IACG,iBAAiB,CACrB,MAAM,EAAE,MAAM,EACd,OAAO,CAAC,EAAE,YAAY,EACtB,OAAO,GAAE,eAAoB,GAC5B,OAAO,CAAC,MAAM,CAAC;IAoBlB;;OAEG;IACG,2BAA2B,CAC/B,aAAa,EAAE,MAAM,EACrB,MAAM,EAAE,MAAM,EACd,OAAO,CAAC,EAAE,YAAY,EACtB,OAAO,GAAE,eAAoB,GAC5B,OAAO,CAAC,MAAM,CAAC;IAmBlB;;OAEG;IACG,UAAU,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;IAIrC;;OAEG;IACG,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;CAG/B"}
|
|
@@ -0,0 +1,152 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.XAIClient = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* XAI Client - Fallback provider using X AI API (Grok)
|
|
6
|
+
*
|
|
7
|
+
* This is a simplified client that uses the X AI API directly
|
|
8
|
+
* as a secondary fallback when MyContext AI and Claude SDK are not available.
|
|
9
|
+
*/
|
|
10
|
+
class XAIClient {
|
|
11
|
+
constructor() {
|
|
12
|
+
this.clientType = "direct-api";
|
|
13
|
+
this.supportsTools = false;
|
|
14
|
+
this.supportsStreaming = false;
|
|
15
|
+
this.apiKey = null;
|
|
16
|
+
this.baseUrl = "https://api.x.ai/v1";
|
|
17
|
+
this.apiKey = process.env.XAI_API_KEY || null;
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Check if API key is available
|
|
21
|
+
*/
|
|
22
|
+
hasApiKey() {
|
|
23
|
+
return !!this.apiKey;
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Set API key for X AI API
|
|
27
|
+
*/
|
|
28
|
+
setApiKey(apiKey) {
|
|
29
|
+
this.apiKey = apiKey;
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Check connection to X AI API
|
|
33
|
+
*/
|
|
34
|
+
async checkConnection() {
|
|
35
|
+
if (!this.apiKey) {
|
|
36
|
+
return false;
|
|
37
|
+
}
|
|
38
|
+
try {
|
|
39
|
+
const response = await fetch(`${this.baseUrl}/chat/completions`, {
|
|
40
|
+
method: "POST",
|
|
41
|
+
headers: {
|
|
42
|
+
"Content-Type": "application/json",
|
|
43
|
+
Authorization: `Bearer ${this.apiKey}`,
|
|
44
|
+
},
|
|
45
|
+
body: JSON.stringify({
|
|
46
|
+
model: "grok-beta",
|
|
47
|
+
max_tokens: 10,
|
|
48
|
+
messages: [
|
|
49
|
+
{
|
|
50
|
+
role: "user",
|
|
51
|
+
content: "test",
|
|
52
|
+
},
|
|
53
|
+
],
|
|
54
|
+
}),
|
|
55
|
+
});
|
|
56
|
+
return response.ok;
|
|
57
|
+
}
|
|
58
|
+
catch (error) {
|
|
59
|
+
console.warn("XAI connection check failed:", error);
|
|
60
|
+
return false;
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Generate text using X AI API
|
|
65
|
+
*/
|
|
66
|
+
async generateText(prompt, options = {}) {
|
|
67
|
+
if (!this.apiKey) {
|
|
68
|
+
throw new Error("XAI API key not configured");
|
|
69
|
+
}
|
|
70
|
+
try {
|
|
71
|
+
const response = await fetch(`${this.baseUrl}/chat/completions`, {
|
|
72
|
+
method: "POST",
|
|
73
|
+
headers: {
|
|
74
|
+
"Content-Type": "application/json",
|
|
75
|
+
Authorization: `Bearer ${this.apiKey}`,
|
|
76
|
+
},
|
|
77
|
+
body: JSON.stringify({
|
|
78
|
+
model: options.model || "grok-beta",
|
|
79
|
+
max_tokens: options.maxTokens || 4000,
|
|
80
|
+
temperature: options.temperature || 0.7,
|
|
81
|
+
messages: [
|
|
82
|
+
{
|
|
83
|
+
role: "user",
|
|
84
|
+
content: prompt,
|
|
85
|
+
},
|
|
86
|
+
],
|
|
87
|
+
}),
|
|
88
|
+
});
|
|
89
|
+
if (!response.ok) {
|
|
90
|
+
throw new Error(`XAI API error: ${response.status} ${response.statusText}`);
|
|
91
|
+
}
|
|
92
|
+
const data = await response.json();
|
|
93
|
+
return data.choices[0].message.content || "";
|
|
94
|
+
}
|
|
95
|
+
catch (error) {
|
|
96
|
+
throw new Error(`XAI generation failed: ${error}`);
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
/**
|
|
100
|
+
* Generate React component using X AI API
|
|
101
|
+
*/
|
|
102
|
+
async generateComponent(prompt, context, options = {}) {
|
|
103
|
+
const systemPrompt = `You are a React component generator. Generate production-ready React components with TypeScript.
|
|
104
|
+
|
|
105
|
+
Requirements:
|
|
106
|
+
- Use functional components with hooks
|
|
107
|
+
- Include proper TypeScript types
|
|
108
|
+
- Add accessibility attributes
|
|
109
|
+
- Use Tailwind CSS for styling
|
|
110
|
+
- Include proper imports and exports
|
|
111
|
+
- Generate complete, runnable code
|
|
112
|
+
|
|
113
|
+
${context?.prd ? `Project Requirements: ${context.prd}` : ""}
|
|
114
|
+
${context?.types ? `Type Definitions: ${context.types}` : ""}
|
|
115
|
+
${context?.brand ? `Brand Guidelines: ${context.brand}` : ""}`;
|
|
116
|
+
const fullPrompt = `${systemPrompt}\n\nGenerate a React component for: ${prompt}`;
|
|
117
|
+
return this.generateText(fullPrompt, options);
|
|
118
|
+
}
|
|
119
|
+
/**
|
|
120
|
+
* Generate component refinement using X AI API
|
|
121
|
+
*/
|
|
122
|
+
async generateComponentRefinement(componentCode, prompt, context, options = {}) {
|
|
123
|
+
const systemPrompt = `You are a React component refiner. Improve and modify existing React components.
|
|
124
|
+
|
|
125
|
+
Requirements:
|
|
126
|
+
- Maintain existing functionality
|
|
127
|
+
- Preserve TypeScript types
|
|
128
|
+
- Keep accessibility attributes
|
|
129
|
+
- Follow React best practices
|
|
130
|
+
- Provide complete refined component
|
|
131
|
+
|
|
132
|
+
${context?.prd ? `Project Requirements: ${context.prd}` : ""}
|
|
133
|
+
${context?.types ? `Type Definitions: ${context.types}` : ""}
|
|
134
|
+
${context?.brand ? `Brand Guidelines: ${context.brand}` : ""}`;
|
|
135
|
+
const fullPrompt = `${systemPrompt}\n\nComponent to refine:\n\`\`\`tsx\n${componentCode}\n\`\`\n\nRefinement request: ${prompt}`;
|
|
136
|
+
return this.generateText(fullPrompt, options);
|
|
137
|
+
}
|
|
138
|
+
/**
|
|
139
|
+
* List available models
|
|
140
|
+
*/
|
|
141
|
+
async listModels() {
|
|
142
|
+
return ["grok-beta", "grok-2-1212", "grok-2-vision-1212"];
|
|
143
|
+
}
|
|
144
|
+
/**
|
|
145
|
+
* Cleanup resources
|
|
146
|
+
*/
|
|
147
|
+
async cleanup() {
|
|
148
|
+
// No cleanup needed for fetch-based client
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
exports.XAIClient = XAIClient;
|
|
152
|
+
//# sourceMappingURL=XAIClient.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"XAIClient.js","sourceRoot":"","sources":["../../src/clients/XAIClient.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Assemble Features Command
|
|
3
|
+
*
|
|
4
|
+
* Combines generated components into complete working features
|
|
5
|
+
* with actions, hooks, routes, and role-based permissions.
|
|
6
|
+
*/
|
|
7
|
+
import { Command } from "commander";
|
|
8
|
+
import { Role } from "../types/role-permissions";
|
|
9
|
+
export interface AssembleFeaturesOptions {
|
|
10
|
+
fromComponents?: boolean;
|
|
11
|
+
useStarter?: boolean;
|
|
12
|
+
role?: Role;
|
|
13
|
+
feature?: string;
|
|
14
|
+
output?: string;
|
|
15
|
+
template?: string;
|
|
16
|
+
includeTests?: boolean;
|
|
17
|
+
includeDocs?: boolean;
|
|
18
|
+
verbose?: boolean;
|
|
19
|
+
}
|
|
20
|
+
export declare class AssembleFeaturesCommand {
|
|
21
|
+
private command;
|
|
22
|
+
constructor();
|
|
23
|
+
private setupCommand;
|
|
24
|
+
execute(options: AssembleFeaturesOptions): Promise<void>;
|
|
25
|
+
private assembleFromStarter;
|
|
26
|
+
private assembleFromComponents;
|
|
27
|
+
private loadAdminStarterBundle;
|
|
28
|
+
private extractFeaturesFromStarter;
|
|
29
|
+
private loadGeneratedComponents;
|
|
30
|
+
private loadContextFiles;
|
|
31
|
+
private loadDesignManifest;
|
|
32
|
+
private loadFeatureTemplates;
|
|
33
|
+
private getTargetRoles;
|
|
34
|
+
private saveFeatureBundles;
|
|
35
|
+
private hasGeneratedComponents;
|
|
36
|
+
private hasAdminStarter;
|
|
37
|
+
private showNextSteps;
|
|
38
|
+
getCommand(): Command;
|
|
39
|
+
}
|
|
40
|
+
//# sourceMappingURL=assemble-features.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"assemble-features.d.ts","sourceRoot":"","sources":["../../src/commands/assemble-features.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAapC,OAAO,EAAE,IAAI,EAAiB,MAAM,2BAA2B,CAAC;AAGhE,MAAM,WAAW,uBAAuB;IACtC,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,IAAI,CAAC,EAAE,IAAI,CAAC;IACZ,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,qBAAa,uBAAuB;IAClC,OAAO,CAAC,OAAO,CAAU;;IAOzB,OAAO,CAAC,YAAY;IAqBd,OAAO,CAAC,OAAO,EAAE,uBAAuB,GAAG,OAAO,CAAC,IAAI,CAAC;YAwChD,mBAAmB;YAkDnB,sBAAsB;YAkDtB,sBAAsB;YAStB,0BAA0B;YA4E1B,uBAAuB;YAevB,gBAAgB;YAuBhB,kBAAkB;YAelB,oBAAoB;IA2BlC,OAAO,CAAC,cAAc;YASR,kBAAkB;YA6ClB,sBAAsB;YAUtB,eAAe;IAc7B,OAAO,CAAC,aAAa;IAgCrB,UAAU,IAAI,OAAO;CAGtB"}
|
|
@@ -0,0 +1,383 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Assemble Features Command
|
|
4
|
+
*
|
|
5
|
+
* Combines generated components into complete working features
|
|
6
|
+
* with actions, hooks, routes, and role-based permissions.
|
|
7
|
+
*/
|
|
8
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
9
|
+
if (k2 === undefined) k2 = k;
|
|
10
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
11
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
12
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
13
|
+
}
|
|
14
|
+
Object.defineProperty(o, k2, desc);
|
|
15
|
+
}) : (function(o, m, k, k2) {
|
|
16
|
+
if (k2 === undefined) k2 = k;
|
|
17
|
+
o[k2] = m[k];
|
|
18
|
+
}));
|
|
19
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
20
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
21
|
+
}) : function(o, v) {
|
|
22
|
+
o["default"] = v;
|
|
23
|
+
});
|
|
24
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
25
|
+
var ownKeys = function(o) {
|
|
26
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
27
|
+
var ar = [];
|
|
28
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
29
|
+
return ar;
|
|
30
|
+
};
|
|
31
|
+
return ownKeys(o);
|
|
32
|
+
};
|
|
33
|
+
return function (mod) {
|
|
34
|
+
if (mod && mod.__esModule) return mod;
|
|
35
|
+
var result = {};
|
|
36
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
37
|
+
__setModuleDefault(result, mod);
|
|
38
|
+
return result;
|
|
39
|
+
};
|
|
40
|
+
})();
|
|
41
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
42
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
43
|
+
};
|
|
44
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
45
|
+
exports.AssembleFeaturesCommand = void 0;
|
|
46
|
+
const commander_1 = require("commander");
|
|
47
|
+
const fs = __importStar(require("fs/promises"));
|
|
48
|
+
const path = __importStar(require("path"));
|
|
49
|
+
const chalk_1 = __importDefault(require("chalk"));
|
|
50
|
+
const FeatureAssemblyAgent_1 = require("../agents/implementations/FeatureAssemblyAgent");
|
|
51
|
+
const RoleBasedGenerator_1 = require("../agents/implementations/RoleBasedGenerator");
|
|
52
|
+
class AssembleFeaturesCommand {
|
|
53
|
+
constructor() {
|
|
54
|
+
this.command = new commander_1.Command("assemble-features");
|
|
55
|
+
this.setupCommand();
|
|
56
|
+
}
|
|
57
|
+
setupCommand() {
|
|
58
|
+
this.command
|
|
59
|
+
.description("Assemble components into complete working features")
|
|
60
|
+
.option("--from-components", "Assemble from generated components")
|
|
61
|
+
.option("--use-starter", "Use admin starter template")
|
|
62
|
+
.option("--role <role>", "Generate for specific role (admin/user/guest)", "admin")
|
|
63
|
+
.option("--feature <name>", "Generate specific feature")
|
|
64
|
+
.option("--output <path>", "Output directory for features", "./features")
|
|
65
|
+
.option("--template <name>", "Use specific feature template")
|
|
66
|
+
.option("--include-tests", "Include test files")
|
|
67
|
+
.option("--include-docs", "Include documentation")
|
|
68
|
+
.option("--verbose", "Verbose output")
|
|
69
|
+
.action(async (options) => {
|
|
70
|
+
await this.execute(options);
|
|
71
|
+
});
|
|
72
|
+
}
|
|
73
|
+
async execute(options) {
|
|
74
|
+
console.log(chalk_1.default.cyan("š§ Feature Assembly starting..."));
|
|
75
|
+
try {
|
|
76
|
+
const projectPath = process.cwd();
|
|
77
|
+
const outputPath = path.resolve(options.output || "./features");
|
|
78
|
+
// Ensure output directory exists
|
|
79
|
+
await fs.mkdir(outputPath, { recursive: true });
|
|
80
|
+
if (options.useStarter) {
|
|
81
|
+
await this.assembleFromStarter(projectPath, outputPath, options);
|
|
82
|
+
}
|
|
83
|
+
else if (options.fromComponents) {
|
|
84
|
+
await this.assembleFromComponents(projectPath, outputPath, options);
|
|
85
|
+
}
|
|
86
|
+
else {
|
|
87
|
+
// Auto-detect approach
|
|
88
|
+
const hasComponents = await this.hasGeneratedComponents(projectPath);
|
|
89
|
+
const hasStarter = await this.hasAdminStarter(projectPath);
|
|
90
|
+
if (hasStarter) {
|
|
91
|
+
console.log(chalk_1.default.blue(" š¦ Using admin starter template"));
|
|
92
|
+
await this.assembleFromStarter(projectPath, outputPath, options);
|
|
93
|
+
}
|
|
94
|
+
else if (hasComponents) {
|
|
95
|
+
console.log(chalk_1.default.blue(" š§© Using generated components"));
|
|
96
|
+
await this.assembleFromComponents(projectPath, outputPath, options);
|
|
97
|
+
}
|
|
98
|
+
else {
|
|
99
|
+
throw new Error('No components or starter found. Run "mycontext generate-components" first or use --use-starter');
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
console.log(chalk_1.default.green("ā
Feature assembly completed successfully!"));
|
|
103
|
+
this.showNextSteps(outputPath, options);
|
|
104
|
+
}
|
|
105
|
+
catch (error) {
|
|
106
|
+
console.log(chalk_1.default.red(`ā Feature assembly failed: ${error}`));
|
|
107
|
+
process.exit(1);
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
async assembleFromStarter(projectPath, outputPath, options) {
|
|
111
|
+
console.log(chalk_1.default.gray(" š¦ Loading admin starter template..."));
|
|
112
|
+
// Load admin starter bundle
|
|
113
|
+
const starterBundle = await this.loadAdminStarterBundle();
|
|
114
|
+
// Extract features from starter
|
|
115
|
+
const adminFeatures = await this.extractFeaturesFromStarter(starterBundle, projectPath);
|
|
116
|
+
// Generate role-based features
|
|
117
|
+
const roleHierarchy = RoleBasedGenerator_1.RoleBasedGenerator.createDefaultRoleHierarchy();
|
|
118
|
+
const targetRoles = this.getTargetRoles(options.role);
|
|
119
|
+
const roleGenerator = new RoleBasedGenerator_1.RoleBasedGenerator(projectPath);
|
|
120
|
+
const roleContext = {
|
|
121
|
+
projectPath,
|
|
122
|
+
adminFeatures,
|
|
123
|
+
targetRoles,
|
|
124
|
+
roleHierarchy,
|
|
125
|
+
outputPath,
|
|
126
|
+
};
|
|
127
|
+
const roleResult = await roleGenerator.run(roleContext);
|
|
128
|
+
if (!roleResult.success) {
|
|
129
|
+
throw new Error(`Role-based generation failed: ${roleResult.errors.join(", ")}`);
|
|
130
|
+
}
|
|
131
|
+
// Save feature bundles
|
|
132
|
+
await this.saveFeatureBundles(roleResult.roleFeatures, outputPath);
|
|
133
|
+
console.log(chalk_1.default.green(` ā Generated features for ${roleResult.metadata.totalRoles} roles`));
|
|
134
|
+
console.log(chalk_1.default.green(` ā Total features: ${roleResult.metadata.totalFeatures}`));
|
|
135
|
+
}
|
|
136
|
+
async assembleFromComponents(projectPath, outputPath, options) {
|
|
137
|
+
console.log(chalk_1.default.gray(" š§© Loading generated components..."));
|
|
138
|
+
// Load components and context files
|
|
139
|
+
const components = await this.loadGeneratedComponents(projectPath);
|
|
140
|
+
const contextFiles = await this.loadContextFiles(projectPath);
|
|
141
|
+
const designManifest = await this.loadDesignManifest(projectPath);
|
|
142
|
+
// Load feature templates
|
|
143
|
+
const featureTemplates = await this.loadFeatureTemplates();
|
|
144
|
+
// Generate features
|
|
145
|
+
const assemblyAgent = new FeatureAssemblyAgent_1.FeatureAssemblyAgent(projectPath);
|
|
146
|
+
const assemblyContext = {
|
|
147
|
+
projectPath,
|
|
148
|
+
components,
|
|
149
|
+
contextFiles,
|
|
150
|
+
designManifest,
|
|
151
|
+
targetRole: options.role || "admin",
|
|
152
|
+
featureTemplates,
|
|
153
|
+
outputPath,
|
|
154
|
+
};
|
|
155
|
+
const result = await assemblyAgent.run(assemblyContext);
|
|
156
|
+
if (!result.success) {
|
|
157
|
+
throw new Error(`Feature assembly failed: ${result.errors.join(", ")}`);
|
|
158
|
+
}
|
|
159
|
+
console.log(chalk_1.default.green(` ā Generated ${result.metadata.totalFeatures} features`));
|
|
160
|
+
console.log(chalk_1.default.green(` ā Generated ${result.metadata.totalComponents} components`));
|
|
161
|
+
console.log(chalk_1.default.green(` ā Generated ${result.metadata.totalActions} actions`));
|
|
162
|
+
console.log(chalk_1.default.green(` ā Generated ${result.metadata.totalHooks} hooks`));
|
|
163
|
+
console.log(chalk_1.default.green(` ā Generated ${result.metadata.totalRoutes} routes`));
|
|
164
|
+
}
|
|
165
|
+
async loadAdminStarterBundle() {
|
|
166
|
+
const bundlePath = path.join(__dirname, "../../templates/admin-starter-bundle.json");
|
|
167
|
+
const bundleContent = await fs.readFile(bundlePath, "utf-8");
|
|
168
|
+
return JSON.parse(bundleContent);
|
|
169
|
+
}
|
|
170
|
+
async extractFeaturesFromStarter(starterBundle, projectPath) {
|
|
171
|
+
const features = [];
|
|
172
|
+
for (const [featureName, template] of Object.entries(starterBundle.features)) {
|
|
173
|
+
const featureTemplate = template;
|
|
174
|
+
const feature = {
|
|
175
|
+
name: featureName,
|
|
176
|
+
description: featureTemplate.description,
|
|
177
|
+
role: "admin",
|
|
178
|
+
components: featureTemplate.components.map((c) => c.name),
|
|
179
|
+
types: featureTemplate.components.map((c) => c.name),
|
|
180
|
+
actions: featureTemplate.actions.map((a) => ({
|
|
181
|
+
name: a.name,
|
|
182
|
+
description: a.description,
|
|
183
|
+
file: `actions/${a.name}.ts`,
|
|
184
|
+
function: a.name,
|
|
185
|
+
parameters: a.parameters,
|
|
186
|
+
returnType: a.returnType,
|
|
187
|
+
permissions: a.permissions,
|
|
188
|
+
validation: undefined,
|
|
189
|
+
})),
|
|
190
|
+
hooks: featureTemplate.hooks.map((h) => ({
|
|
191
|
+
name: h.name,
|
|
192
|
+
description: h.description,
|
|
193
|
+
file: `hooks/${h.name}.ts`,
|
|
194
|
+
function: h.name,
|
|
195
|
+
parameters: h.parameters,
|
|
196
|
+
returnType: h.returnType,
|
|
197
|
+
dependencies: h.dependencies,
|
|
198
|
+
})),
|
|
199
|
+
routes: featureTemplate.routes.map((r) => ({
|
|
200
|
+
path: r.path,
|
|
201
|
+
method: r.method,
|
|
202
|
+
description: r.description,
|
|
203
|
+
file: `app/api${r.path}/route.ts`,
|
|
204
|
+
function: r.path.replace(/\//g, "_").replace(/\[.*?\]/g, "id"),
|
|
205
|
+
parameters: r.parameters,
|
|
206
|
+
responseType: r.responseType,
|
|
207
|
+
permissions: r.permissions,
|
|
208
|
+
middleware: undefined,
|
|
209
|
+
})),
|
|
210
|
+
database: {
|
|
211
|
+
schema: JSON.stringify(featureTemplate.database, null, 2),
|
|
212
|
+
queries: featureTemplate.database.tables.map((t) => `SELECT * FROM ${t.name}`),
|
|
213
|
+
mutations: featureTemplate.database.tables.map((t) => `INSERT INTO ${t.name}`),
|
|
214
|
+
},
|
|
215
|
+
permissions: featureTemplate.permissions.map((p) => ({
|
|
216
|
+
id: `${featureName}-${p.role}-${p.resource}`,
|
|
217
|
+
resource: p.resource,
|
|
218
|
+
action: p.actions[0],
|
|
219
|
+
conditions: p.conditions,
|
|
220
|
+
description: `Permission for ${p.role} on ${p.resource}`,
|
|
221
|
+
})),
|
|
222
|
+
metadata: {
|
|
223
|
+
createdAt: new Date().toISOString(),
|
|
224
|
+
updatedAt: new Date().toISOString(),
|
|
225
|
+
version: "1.0.0",
|
|
226
|
+
dependencies: featureTemplate.dependencies,
|
|
227
|
+
},
|
|
228
|
+
};
|
|
229
|
+
features.push(feature);
|
|
230
|
+
}
|
|
231
|
+
return features;
|
|
232
|
+
}
|
|
233
|
+
async loadGeneratedComponents(projectPath) {
|
|
234
|
+
const componentsDir = path.join(projectPath, "components");
|
|
235
|
+
try {
|
|
236
|
+
const files = await fs.readdir(componentsDir, { recursive: true });
|
|
237
|
+
return files
|
|
238
|
+
.filter((file) => typeof file === "string" && file.endsWith(".tsx"))
|
|
239
|
+
.map((file) => file.replace(".tsx", ""));
|
|
240
|
+
}
|
|
241
|
+
catch {
|
|
242
|
+
return [];
|
|
243
|
+
}
|
|
244
|
+
}
|
|
245
|
+
async loadContextFiles(projectPath) {
|
|
246
|
+
const contextDir = path.join(projectPath, ".mycontext");
|
|
247
|
+
const contextFiles = {};
|
|
248
|
+
try {
|
|
249
|
+
const files = ["prd.md", "types.ts", "brand.md", "component-list.json"];
|
|
250
|
+
for (const file of files) {
|
|
251
|
+
const filePath = path.join(contextDir, file);
|
|
252
|
+
try {
|
|
253
|
+
const content = await fs.readFile(filePath, "utf-8");
|
|
254
|
+
contextFiles[file.replace(/\.(md|ts|json)$/, "")] = content;
|
|
255
|
+
}
|
|
256
|
+
catch {
|
|
257
|
+
// File doesn't exist, skip
|
|
258
|
+
}
|
|
259
|
+
}
|
|
260
|
+
}
|
|
261
|
+
catch {
|
|
262
|
+
// Context directory doesn't exist
|
|
263
|
+
}
|
|
264
|
+
return contextFiles;
|
|
265
|
+
}
|
|
266
|
+
async loadDesignManifest(projectPath) {
|
|
267
|
+
const manifestPath = path.join(projectPath, ".mycontext", "design-manifest.json");
|
|
268
|
+
try {
|
|
269
|
+
const content = await fs.readFile(manifestPath, "utf-8");
|
|
270
|
+
return JSON.parse(content);
|
|
271
|
+
}
|
|
272
|
+
catch {
|
|
273
|
+
return null;
|
|
274
|
+
}
|
|
275
|
+
}
|
|
276
|
+
async loadFeatureTemplates() {
|
|
277
|
+
// Load feature templates from templates directory
|
|
278
|
+
const templatesDir = path.join(__dirname, "../../templates/feature-templates");
|
|
279
|
+
try {
|
|
280
|
+
const files = await fs.readdir(templatesDir);
|
|
281
|
+
const templates = [];
|
|
282
|
+
for (const file of files) {
|
|
283
|
+
if (file.endsWith(".json")) {
|
|
284
|
+
const content = await fs.readFile(path.join(templatesDir, file), "utf-8");
|
|
285
|
+
templates.push(JSON.parse(content));
|
|
286
|
+
}
|
|
287
|
+
}
|
|
288
|
+
return templates;
|
|
289
|
+
}
|
|
290
|
+
catch {
|
|
291
|
+
return [];
|
|
292
|
+
}
|
|
293
|
+
}
|
|
294
|
+
getTargetRoles(role) {
|
|
295
|
+
if (role) {
|
|
296
|
+
return [role];
|
|
297
|
+
}
|
|
298
|
+
// Default to all roles
|
|
299
|
+
return ["admin", "user", "guest"];
|
|
300
|
+
}
|
|
301
|
+
async saveFeatureBundles(roleFeatures, outputPath) {
|
|
302
|
+
const bundlesDir = path.join(outputPath, ".mycontext", "feature-bundles");
|
|
303
|
+
await fs.mkdir(bundlesDir, { recursive: true });
|
|
304
|
+
for (const [role, features] of roleFeatures) {
|
|
305
|
+
const roleDir = path.join(bundlesDir, role);
|
|
306
|
+
await fs.mkdir(roleDir, { recursive: true });
|
|
307
|
+
for (const feature of features) {
|
|
308
|
+
const featureFile = path.join(roleDir, `${feature.name}.json`);
|
|
309
|
+
await fs.writeFile(featureFile, JSON.stringify(feature, null, 2));
|
|
310
|
+
}
|
|
311
|
+
// Save role summary
|
|
312
|
+
const summary = {
|
|
313
|
+
role,
|
|
314
|
+
features: features.map((f) => ({
|
|
315
|
+
name: f.name,
|
|
316
|
+
description: f.description,
|
|
317
|
+
components: f.components.length,
|
|
318
|
+
actions: f.actions.length,
|
|
319
|
+
hooks: f.hooks.length,
|
|
320
|
+
routes: f.routes.length,
|
|
321
|
+
})),
|
|
322
|
+
metadata: {
|
|
323
|
+
totalFeatures: features.length,
|
|
324
|
+
totalComponents: features.reduce((sum, f) => sum + f.components.length, 0),
|
|
325
|
+
totalActions: features.reduce((sum, f) => sum + f.actions.length, 0),
|
|
326
|
+
totalHooks: features.reduce((sum, f) => sum + f.hooks.length, 0),
|
|
327
|
+
totalRoutes: features.reduce((sum, f) => sum + f.routes.length, 0),
|
|
328
|
+
generatedAt: new Date().toISOString(),
|
|
329
|
+
},
|
|
330
|
+
};
|
|
331
|
+
const summaryFile = path.join(roleDir, "summary.json");
|
|
332
|
+
await fs.writeFile(summaryFile, JSON.stringify(summary, null, 2));
|
|
333
|
+
}
|
|
334
|
+
}
|
|
335
|
+
async hasGeneratedComponents(projectPath) {
|
|
336
|
+
const componentsDir = path.join(projectPath, "components");
|
|
337
|
+
try {
|
|
338
|
+
const files = await fs.readdir(componentsDir);
|
|
339
|
+
return files.some((file) => file.endsWith(".tsx"));
|
|
340
|
+
}
|
|
341
|
+
catch {
|
|
342
|
+
return false;
|
|
343
|
+
}
|
|
344
|
+
}
|
|
345
|
+
async hasAdminStarter(projectPath) {
|
|
346
|
+
const starterPath = path.join(projectPath, ".mycontext", "admin-starter.json");
|
|
347
|
+
try {
|
|
348
|
+
await fs.access(starterPath);
|
|
349
|
+
return true;
|
|
350
|
+
}
|
|
351
|
+
catch {
|
|
352
|
+
return false;
|
|
353
|
+
}
|
|
354
|
+
}
|
|
355
|
+
showNextSteps(outputPath, options) {
|
|
356
|
+
console.log(chalk_1.default.blue("\nš Next Steps:"));
|
|
357
|
+
console.log(chalk_1.default.cyan(" 1. Review generated features:"));
|
|
358
|
+
console.log(chalk_1.default.white(` cd ${outputPath}`));
|
|
359
|
+
console.log(chalk_1.default.cyan(" 2. Install dependencies:"));
|
|
360
|
+
console.log(chalk_1.default.white(" npm install"));
|
|
361
|
+
console.log(chalk_1.default.cyan(" 3. Set up database:"));
|
|
362
|
+
console.log(chalk_1.default.white(" mycontext setup-database"));
|
|
363
|
+
console.log(chalk_1.default.cyan(" 4. Start development:"));
|
|
364
|
+
console.log(chalk_1.default.white(" npm run dev"));
|
|
365
|
+
if (options.includeTests) {
|
|
366
|
+
console.log(chalk_1.default.cyan(" 5. Run tests:"));
|
|
367
|
+
console.log(chalk_1.default.white(" npm test"));
|
|
368
|
+
}
|
|
369
|
+
if (options.includeDocs) {
|
|
370
|
+
console.log(chalk_1.default.cyan(" 6. Generate documentation:"));
|
|
371
|
+
console.log(chalk_1.default.white(" mycontext docs generate"));
|
|
372
|
+
}
|
|
373
|
+
console.log(chalk_1.default.gray("\n Additional:"));
|
|
374
|
+
console.log(chalk_1.default.gray(" ⢠Review feature bundles in .mycontext/feature-bundles/"));
|
|
375
|
+
console.log(chalk_1.default.gray(" ⢠Customize features for your specific needs"));
|
|
376
|
+
console.log(chalk_1.default.gray(" ⢠Deploy with: mycontext deploy"));
|
|
377
|
+
}
|
|
378
|
+
getCommand() {
|
|
379
|
+
return this.command;
|
|
380
|
+
}
|
|
381
|
+
}
|
|
382
|
+
exports.AssembleFeaturesCommand = AssembleFeaturesCommand;
|
|
383
|
+
//# sourceMappingURL=assemble-features.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"assemble-features.js","sourceRoot":"","sources":["../../src/commands/assemble-features.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Clone Starter Command
|
|
3
|
+
*
|
|
4
|
+
* Clones the admin starter repository and sets up the project
|
|
5
|
+
* with InstantDB, shadcn/ui, and authentication.
|
|
6
|
+
*/
|
|
7
|
+
import { Command } from "commander";
|
|
8
|
+
export interface CloneStarterOptions {
|
|
9
|
+
url?: string;
|
|
10
|
+
output?: string;
|
|
11
|
+
branch?: string;
|
|
12
|
+
install?: boolean;
|
|
13
|
+
setup?: boolean;
|
|
14
|
+
verbose?: boolean;
|
|
15
|
+
}
|
|
16
|
+
export declare class CloneStarterCommand {
|
|
17
|
+
private command;
|
|
18
|
+
constructor();
|
|
19
|
+
private setupCommand;
|
|
20
|
+
execute(options: CloneStarterOptions): Promise<void>;
|
|
21
|
+
private cloneRepository;
|
|
22
|
+
private loadStarterBundle;
|
|
23
|
+
private installDependencies;
|
|
24
|
+
private setupEnvironment;
|
|
25
|
+
private generateEnvironmentFile;
|
|
26
|
+
private updatePackageJson;
|
|
27
|
+
private runSetupCommands;
|
|
28
|
+
private saveStarterConfiguration;
|
|
29
|
+
private showNextSteps;
|
|
30
|
+
getCommand(): Command;
|
|
31
|
+
}
|
|
32
|
+
//# sourceMappingURL=clone-starter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"clone-starter.d.ts","sourceRoot":"","sources":["../../src/commands/clone-starter.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAUpC,MAAM,WAAW,mBAAmB;IAClC,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,qBAAa,mBAAmB;IAC9B,OAAO,CAAC,OAAO,CAAU;;IAOzB,OAAO,CAAC,YAAY;IAsBd,OAAO,CAAC,OAAO,EAAE,mBAAmB,GAAG,OAAO,CAAC,IAAI,CAAC;YA4C5C,eAAe;YAcf,iBAAiB;YASjB,mBAAmB;YAcnB,gBAAgB;IAuB9B,OAAO,CAAC,uBAAuB;YASjB,iBAAiB;YA4BjB,gBAAgB;YAiBhB,wBAAwB;IAYtC,OAAO,CAAC,aAAa;IAmCrB,UAAU,IAAI,OAAO;CAGtB"}
|