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,101 @@
|
|
|
1
|
+
export interface TriggerEvent {
|
|
2
|
+
id: string;
|
|
3
|
+
type: "context-change" | "schema-change" | "component-refinement" | "approval-change";
|
|
4
|
+
timestamp: string;
|
|
5
|
+
description: string;
|
|
6
|
+
affectedComponents: string[];
|
|
7
|
+
userAction: string;
|
|
8
|
+
metadata?: Record<string, any>;
|
|
9
|
+
}
|
|
10
|
+
export interface TriggerLog {
|
|
11
|
+
events: TriggerEvent[];
|
|
12
|
+
lastUpdated: string;
|
|
13
|
+
version: string;
|
|
14
|
+
}
|
|
15
|
+
export declare class TriggerLogger {
|
|
16
|
+
private logPath;
|
|
17
|
+
/**
|
|
18
|
+
* Log a trigger event
|
|
19
|
+
*/
|
|
20
|
+
logTrigger(type: TriggerEvent["type"], description: string, affectedComponents: string[], userAction: string, metadata?: Record<string, any>): Promise<void>;
|
|
21
|
+
/**
|
|
22
|
+
* Log context file changes
|
|
23
|
+
*/
|
|
24
|
+
logContextChange(changedFiles: string[], userAction?: string): Promise<void>;
|
|
25
|
+
/**
|
|
26
|
+
* Log schema changes
|
|
27
|
+
*/
|
|
28
|
+
logSchemaChange(userAction?: string): Promise<void>;
|
|
29
|
+
/**
|
|
30
|
+
* Log component refinement
|
|
31
|
+
*/
|
|
32
|
+
logComponentRefinement(componentName: string, refinementType: "in-place" | "context-update", userAction?: string): Promise<void>;
|
|
33
|
+
/**
|
|
34
|
+
* Log approval changes
|
|
35
|
+
*/
|
|
36
|
+
logApprovalChange(featureId: string, oldApproval: boolean | null, newApproval: boolean | null, userAction?: string): Promise<void>;
|
|
37
|
+
/**
|
|
38
|
+
* Get recent trigger events
|
|
39
|
+
*/
|
|
40
|
+
getRecentEvents(limit?: number): Promise<TriggerEvent[]>;
|
|
41
|
+
/**
|
|
42
|
+
* Get events by type
|
|
43
|
+
*/
|
|
44
|
+
getEventsByType(type: TriggerEvent["type"]): Promise<TriggerEvent[]>;
|
|
45
|
+
/**
|
|
46
|
+
* Get events affecting a specific component
|
|
47
|
+
*/
|
|
48
|
+
getEventsForComponent(componentName: string): Promise<TriggerEvent[]>;
|
|
49
|
+
/**
|
|
50
|
+
* Check if component needs regeneration based on triggers
|
|
51
|
+
*/
|
|
52
|
+
needsRegeneration(componentName: string): Promise<boolean>;
|
|
53
|
+
/**
|
|
54
|
+
* Get regeneration recommendations
|
|
55
|
+
*/
|
|
56
|
+
getRegenerationRecommendations(): Promise<{
|
|
57
|
+
shouldRegenerate: string[];
|
|
58
|
+
reason: string;
|
|
59
|
+
}>;
|
|
60
|
+
/**
|
|
61
|
+
* Clear old events (keep last 50)
|
|
62
|
+
*/
|
|
63
|
+
cleanupOldEvents(): Promise<void>;
|
|
64
|
+
/**
|
|
65
|
+
* Load trigger log from file
|
|
66
|
+
*/
|
|
67
|
+
private loadLog;
|
|
68
|
+
/**
|
|
69
|
+
* Save trigger log to file
|
|
70
|
+
*/
|
|
71
|
+
private saveLog;
|
|
72
|
+
/**
|
|
73
|
+
* Generate unique event ID
|
|
74
|
+
*/
|
|
75
|
+
private generateEventId;
|
|
76
|
+
/**
|
|
77
|
+
* Get affected components from context file changes
|
|
78
|
+
*/
|
|
79
|
+
private getAffectedComponentsFromContext;
|
|
80
|
+
/**
|
|
81
|
+
* Get affected components from schema changes
|
|
82
|
+
*/
|
|
83
|
+
private getAffectedComponentsFromSchema;
|
|
84
|
+
/**
|
|
85
|
+
* Get affected components from feature approval changes
|
|
86
|
+
*/
|
|
87
|
+
private getAffectedComponentsFromFeature;
|
|
88
|
+
/**
|
|
89
|
+
* Get all component names from component list
|
|
90
|
+
*/
|
|
91
|
+
private getAllComponentNames;
|
|
92
|
+
/**
|
|
93
|
+
* Display trigger log summary
|
|
94
|
+
*/
|
|
95
|
+
displaySummary(): Promise<void>;
|
|
96
|
+
/**
|
|
97
|
+
* Get human-readable time ago
|
|
98
|
+
*/
|
|
99
|
+
private getTimeAgo;
|
|
100
|
+
}
|
|
101
|
+
//# sourceMappingURL=TriggerLogger.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TriggerLogger.d.ts","sourceRoot":"","sources":["../../src/services/TriggerLogger.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EACA,gBAAgB,GAChB,eAAe,GACf,sBAAsB,GACtB,iBAAiB,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,kBAAkB,EAAE,MAAM,EAAE,CAAC;IAC7B,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;CAChC;AAED,MAAM,WAAW,UAAU;IACzB,MAAM,EAAE,YAAY,EAAE,CAAC;IACvB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,qBAAa,aAAa;IACxB,OAAO,CAAC,OAAO,CAAiC;IAEhD;;OAEG;IACG,UAAU,CACd,IAAI,EAAE,YAAY,CAAC,MAAM,CAAC,EAC1B,WAAW,EAAE,MAAM,EACnB,kBAAkB,EAAE,MAAM,EAAE,EAC5B,UAAU,EAAE,MAAM,EAClB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAC7B,OAAO,CAAC,IAAI,CAAC;IAkBhB;;OAEG;IACG,gBAAgB,CACpB,YAAY,EAAE,MAAM,EAAE,EACtB,UAAU,GAAE,MAAgC,GAC3C,OAAO,CAAC,IAAI,CAAC;IAchB;;OAEG;IACG,eAAe,CAAC,UAAU,GAAE,MAAyB,GAAG,OAAO,CAAC,IAAI,CAAC;IAY3E;;OAEG;IACG,sBAAsB,CAC1B,aAAa,EAAE,MAAM,EACrB,cAAc,EAAE,UAAU,GAAG,gBAAgB,EAC7C,UAAU,GAAE,MAA4B,GACvC,OAAO,CAAC,IAAI,CAAC;IAUhB;;OAEG;IACG,iBAAiB,CACrB,SAAS,EAAE,MAAM,EACjB,WAAW,EAAE,OAAO,GAAG,IAAI,EAC3B,WAAW,EAAE,OAAO,GAAG,IAAI,EAC3B,UAAU,GAAE,MAAmC,GAC9C,OAAO,CAAC,IAAI,CAAC;IAchB;;OAEG;IACG,eAAe,CAAC,KAAK,GAAE,MAAW,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC;IAUlE;;OAEG;IACG,eAAe,CAAC,IAAI,EAAE,YAAY,CAAC,MAAM,CAAC,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC;IAK1E;;OAEG;IACG,qBAAqB,CAAC,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC;IAO3E;;OAEG;IACG,iBAAiB,CAAC,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAahE;;OAEG;IACG,8BAA8B,IAAI,OAAO,CAAC;QAC9C,gBAAgB,EAAE,MAAM,EAAE,CAAC;QAC3B,MAAM,EAAE,MAAM,CAAC;KAChB,CAAC;IAkBF;;OAEG;IACG,gBAAgB,IAAI,OAAO,CAAC,IAAI,CAAC;IAYvC;;OAEG;YACW,OAAO;IAkBrB;;OAEG;YACW,OAAO;IAMrB;;OAEG;IACH,OAAO,CAAC,eAAe;IAIvB;;OAEG;YACW,gCAAgC;IAsB9C;;OAEG;YACW,+BAA+B;IAK7C;;OAEG;YACW,gCAAgC;IAS9C;;OAEG;YACW,oBAAoB;IA8BlC;;OAEG;IACG,cAAc,IAAI,OAAO,CAAC,IAAI,CAAC;IAmCrC;;OAEG;IACH,OAAO,CAAC,UAAU;CAanB"}
|
|
@@ -0,0 +1,263 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.TriggerLogger = void 0;
|
|
7
|
+
const chalk_1 = __importDefault(require("chalk"));
|
|
8
|
+
class TriggerLogger {
|
|
9
|
+
constructor() {
|
|
10
|
+
this.logPath = ".mycontext/trigger-log.json";
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Log a trigger event
|
|
14
|
+
*/
|
|
15
|
+
async logTrigger(type, description, affectedComponents, userAction, metadata) {
|
|
16
|
+
const event = {
|
|
17
|
+
id: this.generateEventId(),
|
|
18
|
+
type,
|
|
19
|
+
timestamp: new Date().toISOString(),
|
|
20
|
+
description,
|
|
21
|
+
affectedComponents,
|
|
22
|
+
userAction,
|
|
23
|
+
metadata,
|
|
24
|
+
};
|
|
25
|
+
const log = await this.loadLog();
|
|
26
|
+
log.events.push(event);
|
|
27
|
+
log.lastUpdated = new Date().toISOString();
|
|
28
|
+
await this.saveLog(log);
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Log context file changes
|
|
32
|
+
*/
|
|
33
|
+
async logContextChange(changedFiles, userAction = "Context files updated") {
|
|
34
|
+
const affectedComponents = await this.getAffectedComponentsFromContext(changedFiles);
|
|
35
|
+
await this.logTrigger("context-change", `Context files changed: ${changedFiles.join(", ")}`, affectedComponents, userAction, { changedFiles });
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Log schema changes
|
|
39
|
+
*/
|
|
40
|
+
async logSchemaChange(userAction = "Schema updated") {
|
|
41
|
+
const affectedComponents = await this.getAffectedComponentsFromSchema();
|
|
42
|
+
await this.logTrigger("schema-change", "InstantDB schema modified", affectedComponents, userAction, { schemaChanged: true });
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Log component refinement
|
|
46
|
+
*/
|
|
47
|
+
async logComponentRefinement(componentName, refinementType, userAction = "Component refined") {
|
|
48
|
+
await this.logTrigger("component-refinement", `Component ${componentName} refined via ${refinementType}`, [componentName], userAction, { refinementType, componentName });
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Log approval changes
|
|
52
|
+
*/
|
|
53
|
+
async logApprovalChange(featureId, oldApproval, newApproval, userAction = "Feature approval changed") {
|
|
54
|
+
const affectedComponents = await this.getAffectedComponentsFromFeature(featureId);
|
|
55
|
+
await this.logTrigger("approval-change", `Feature ${featureId} approval changed from ${oldApproval} to ${newApproval}`, affectedComponents, userAction, { featureId, oldApproval, newApproval });
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Get recent trigger events
|
|
59
|
+
*/
|
|
60
|
+
async getRecentEvents(limit = 10) {
|
|
61
|
+
const log = await this.loadLog();
|
|
62
|
+
return log.events
|
|
63
|
+
.sort((a, b) => new Date(b.timestamp).getTime() - new Date(a.timestamp).getTime())
|
|
64
|
+
.slice(0, limit);
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Get events by type
|
|
68
|
+
*/
|
|
69
|
+
async getEventsByType(type) {
|
|
70
|
+
const log = await this.loadLog();
|
|
71
|
+
return log.events.filter((event) => event.type === type);
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* Get events affecting a specific component
|
|
75
|
+
*/
|
|
76
|
+
async getEventsForComponent(componentName) {
|
|
77
|
+
const log = await this.loadLog();
|
|
78
|
+
return log.events.filter((event) => event.affectedComponents.includes(componentName));
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* Check if component needs regeneration based on triggers
|
|
82
|
+
*/
|
|
83
|
+
async needsRegeneration(componentName) {
|
|
84
|
+
const events = await this.getEventsForComponent(componentName);
|
|
85
|
+
// Check if there are any recent trigger events
|
|
86
|
+
const recentEvents = events.filter((event) => {
|
|
87
|
+
const eventTime = new Date(event.timestamp).getTime();
|
|
88
|
+
const oneHourAgo = Date.now() - 60 * 60 * 1000;
|
|
89
|
+
return eventTime > oneHourAgo;
|
|
90
|
+
});
|
|
91
|
+
return recentEvents.length > 0;
|
|
92
|
+
}
|
|
93
|
+
/**
|
|
94
|
+
* Get regeneration recommendations
|
|
95
|
+
*/
|
|
96
|
+
async getRegenerationRecommendations() {
|
|
97
|
+
const recentEvents = await this.getRecentEvents(5);
|
|
98
|
+
const shouldRegenerate = [];
|
|
99
|
+
let reason = "";
|
|
100
|
+
for (const event of recentEvents) {
|
|
101
|
+
if (event.type === "context-change" || event.type === "schema-change") {
|
|
102
|
+
shouldRegenerate.push(...event.affectedComponents);
|
|
103
|
+
reason = `Recent ${event.type} detected`;
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
return {
|
|
107
|
+
shouldRegenerate: [...new Set(shouldRegenerate)], // Remove duplicates
|
|
108
|
+
reason,
|
|
109
|
+
};
|
|
110
|
+
}
|
|
111
|
+
/**
|
|
112
|
+
* Clear old events (keep last 50)
|
|
113
|
+
*/
|
|
114
|
+
async cleanupOldEvents() {
|
|
115
|
+
const log = await this.loadLog();
|
|
116
|
+
log.events = log.events
|
|
117
|
+
.sort((a, b) => new Date(b.timestamp).getTime() - new Date(a.timestamp).getTime())
|
|
118
|
+
.slice(0, 50);
|
|
119
|
+
await this.saveLog(log);
|
|
120
|
+
}
|
|
121
|
+
/**
|
|
122
|
+
* Load trigger log from file
|
|
123
|
+
*/
|
|
124
|
+
async loadLog() {
|
|
125
|
+
try {
|
|
126
|
+
const fs = require("fs-extra");
|
|
127
|
+
if (await fs.pathExists(this.logPath)) {
|
|
128
|
+
const content = await fs.readFile(this.logPath, "utf8");
|
|
129
|
+
return JSON.parse(content);
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
catch (error) {
|
|
133
|
+
// If file doesn't exist or is corrupted, return empty log
|
|
134
|
+
}
|
|
135
|
+
return {
|
|
136
|
+
events: [],
|
|
137
|
+
lastUpdated: new Date().toISOString(),
|
|
138
|
+
version: "1.0",
|
|
139
|
+
};
|
|
140
|
+
}
|
|
141
|
+
/**
|
|
142
|
+
* Save trigger log to file
|
|
143
|
+
*/
|
|
144
|
+
async saveLog(log) {
|
|
145
|
+
const fs = require("fs-extra");
|
|
146
|
+
await fs.ensureDir(".mycontext");
|
|
147
|
+
await fs.writeFile(this.logPath, JSON.stringify(log, null, 2));
|
|
148
|
+
}
|
|
149
|
+
/**
|
|
150
|
+
* Generate unique event ID
|
|
151
|
+
*/
|
|
152
|
+
generateEventId() {
|
|
153
|
+
return `event_${Date.now()}_${Math.random().toString(36).substr(2, 9)}`;
|
|
154
|
+
}
|
|
155
|
+
/**
|
|
156
|
+
* Get affected components from context file changes
|
|
157
|
+
*/
|
|
158
|
+
async getAffectedComponentsFromContext(changedFiles) {
|
|
159
|
+
// This would analyze which components are affected by context changes
|
|
160
|
+
// For now, return all components if PRD or features files changed
|
|
161
|
+
const criticalFiles = [
|
|
162
|
+
"01a-features.md",
|
|
163
|
+
"01b-user-flows.md",
|
|
164
|
+
"01c-edge-cases.md",
|
|
165
|
+
];
|
|
166
|
+
const hasCriticalChange = changedFiles.some((file) => criticalFiles.some((critical) => file.includes(critical)));
|
|
167
|
+
if (hasCriticalChange) {
|
|
168
|
+
// Return all components - this is a conservative approach
|
|
169
|
+
return await this.getAllComponentNames();
|
|
170
|
+
}
|
|
171
|
+
return [];
|
|
172
|
+
}
|
|
173
|
+
/**
|
|
174
|
+
* Get affected components from schema changes
|
|
175
|
+
*/
|
|
176
|
+
async getAffectedComponentsFromSchema() {
|
|
177
|
+
// Schema changes typically affect all components that use data
|
|
178
|
+
return await this.getAllComponentNames();
|
|
179
|
+
}
|
|
180
|
+
/**
|
|
181
|
+
* Get affected components from feature approval changes
|
|
182
|
+
*/
|
|
183
|
+
async getAffectedComponentsFromFeature(featureId) {
|
|
184
|
+
// Map feature ID to component name
|
|
185
|
+
return [
|
|
186
|
+
featureId.replace(/-/g, " ").replace(/\b\w/g, (l) => l.toUpperCase()),
|
|
187
|
+
];
|
|
188
|
+
}
|
|
189
|
+
/**
|
|
190
|
+
* Get all component names from component list
|
|
191
|
+
*/
|
|
192
|
+
async getAllComponentNames() {
|
|
193
|
+
try {
|
|
194
|
+
const fs = require("fs-extra");
|
|
195
|
+
const componentListPath = ".mycontext/component-list.json";
|
|
196
|
+
if (await fs.pathExists(componentListPath)) {
|
|
197
|
+
const content = await fs.readFile(componentListPath, "utf8");
|
|
198
|
+
const componentList = JSON.parse(content);
|
|
199
|
+
// Extract component names from hierarchical structure
|
|
200
|
+
const names = [];
|
|
201
|
+
const extractNames = (item) => {
|
|
202
|
+
if (item.components) {
|
|
203
|
+
item.components.forEach((comp) => names.push(comp.name));
|
|
204
|
+
}
|
|
205
|
+
if (item.children) {
|
|
206
|
+
item.children.forEach(extractNames);
|
|
207
|
+
}
|
|
208
|
+
};
|
|
209
|
+
extractNames(componentList);
|
|
210
|
+
return names;
|
|
211
|
+
}
|
|
212
|
+
}
|
|
213
|
+
catch (error) {
|
|
214
|
+
// Return empty array if component list not found
|
|
215
|
+
}
|
|
216
|
+
return [];
|
|
217
|
+
}
|
|
218
|
+
/**
|
|
219
|
+
* Display trigger log summary
|
|
220
|
+
*/
|
|
221
|
+
async displaySummary() {
|
|
222
|
+
const recentEvents = await this.getRecentEvents(5);
|
|
223
|
+
const recommendations = await this.getRegenerationRecommendations();
|
|
224
|
+
console.log(chalk_1.default.blue("\n📋 Trigger Log Summary"));
|
|
225
|
+
console.log(chalk_1.default.gray("Recent events affecting your components:"));
|
|
226
|
+
if (recentEvents.length === 0) {
|
|
227
|
+
console.log(chalk_1.default.green(" ✅ No recent trigger events"));
|
|
228
|
+
return;
|
|
229
|
+
}
|
|
230
|
+
recentEvents.forEach((event, index) => {
|
|
231
|
+
const timeAgo = this.getTimeAgo(event.timestamp);
|
|
232
|
+
console.log(chalk_1.default.yellow(` ${index + 1}. ${event.description}`));
|
|
233
|
+
console.log(chalk_1.default.gray(` ${timeAgo} - ${event.userAction}`));
|
|
234
|
+
if (event.affectedComponents.length > 0) {
|
|
235
|
+
console.log(chalk_1.default.gray(` Affects: ${event.affectedComponents.join(", ")}`));
|
|
236
|
+
}
|
|
237
|
+
});
|
|
238
|
+
if (recommendations.shouldRegenerate.length > 0) {
|
|
239
|
+
console.log(chalk_1.default.yellow(`\n⚠️ ${recommendations.reason}`));
|
|
240
|
+
console.log(chalk_1.default.blue(` Consider regenerating: ${recommendations.shouldRegenerate.join(", ")}`));
|
|
241
|
+
}
|
|
242
|
+
}
|
|
243
|
+
/**
|
|
244
|
+
* Get human-readable time ago
|
|
245
|
+
*/
|
|
246
|
+
getTimeAgo(timestamp) {
|
|
247
|
+
const now = new Date().getTime();
|
|
248
|
+
const eventTime = new Date(timestamp).getTime();
|
|
249
|
+
const diffMs = now - eventTime;
|
|
250
|
+
const diffMins = Math.floor(diffMs / (1000 * 60));
|
|
251
|
+
const diffHours = Math.floor(diffMs / (1000 * 60 * 60));
|
|
252
|
+
const diffDays = Math.floor(diffMs / (1000 * 60 * 60 * 24));
|
|
253
|
+
if (diffMins < 1)
|
|
254
|
+
return "just now";
|
|
255
|
+
if (diffMins < 60)
|
|
256
|
+
return `${diffMins}m ago`;
|
|
257
|
+
if (diffHours < 24)
|
|
258
|
+
return `${diffHours}h ago`;
|
|
259
|
+
return `${diffDays}d ago`;
|
|
260
|
+
}
|
|
261
|
+
}
|
|
262
|
+
exports.TriggerLogger = TriggerLogger;
|
|
263
|
+
//# sourceMappingURL=TriggerLogger.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TriggerLogger.js","sourceRoot":"","sources":["../../src/services/TriggerLogger.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,300 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Design Pipeline Types
|
|
3
|
+
*
|
|
4
|
+
* Defines interfaces for all 8 phases of the design reasoning pipeline
|
|
5
|
+
* that replicates an internal design process for rich, contextual component generation.
|
|
6
|
+
*/
|
|
7
|
+
export interface FunctionalSummary {
|
|
8
|
+
app_name: string;
|
|
9
|
+
core_purpose: string;
|
|
10
|
+
key_features: string[];
|
|
11
|
+
primary_user_actions: string[];
|
|
12
|
+
platform: string;
|
|
13
|
+
technical_requirements: string[];
|
|
14
|
+
complexity_level: "low" | "medium" | "high";
|
|
15
|
+
user_personas?: string[];
|
|
16
|
+
business_goals?: string[];
|
|
17
|
+
success_metrics?: string[];
|
|
18
|
+
}
|
|
19
|
+
export interface ProjectScope {
|
|
20
|
+
build_scope: "single_component" | "ui_page" | "full_app";
|
|
21
|
+
reason: string;
|
|
22
|
+
expected_outputs: string[];
|
|
23
|
+
estimated_screens?: number;
|
|
24
|
+
estimated_components?: number;
|
|
25
|
+
development_phases?: string[];
|
|
26
|
+
technical_complexity?: "simple" | "moderate" | "complex";
|
|
27
|
+
}
|
|
28
|
+
export interface ContextGaps {
|
|
29
|
+
missing: string[];
|
|
30
|
+
recommended_next_action: string;
|
|
31
|
+
visual_direction_needed?: boolean;
|
|
32
|
+
tone_guidance_needed?: boolean;
|
|
33
|
+
accessibility_requirements?: string[];
|
|
34
|
+
interaction_patterns?: string[];
|
|
35
|
+
brand_consistency?: string[];
|
|
36
|
+
}
|
|
37
|
+
export interface InspirationSource {
|
|
38
|
+
name: string;
|
|
39
|
+
style: string;
|
|
40
|
+
url?: string;
|
|
41
|
+
reasoning?: string;
|
|
42
|
+
}
|
|
43
|
+
export interface DesignBrief {
|
|
44
|
+
theme: "dark" | "light" | "mixed";
|
|
45
|
+
inspiration_sources: InspirationSource[];
|
|
46
|
+
blended_style: string;
|
|
47
|
+
primary_color: string;
|
|
48
|
+
support_colors: string[];
|
|
49
|
+
typography: {
|
|
50
|
+
heading: string;
|
|
51
|
+
body: string;
|
|
52
|
+
mono?: string;
|
|
53
|
+
};
|
|
54
|
+
ui_principles: string[];
|
|
55
|
+
motion_style: string;
|
|
56
|
+
personality_keywords: string[];
|
|
57
|
+
emotional_tone: string;
|
|
58
|
+
target_audience: string;
|
|
59
|
+
accessibility_focus?: string[];
|
|
60
|
+
}
|
|
61
|
+
export interface ColorPalette {
|
|
62
|
+
primary: string;
|
|
63
|
+
secondary?: string;
|
|
64
|
+
accent?: string;
|
|
65
|
+
background: string;
|
|
66
|
+
surface: string;
|
|
67
|
+
text: string;
|
|
68
|
+
text_muted: string;
|
|
69
|
+
border?: string;
|
|
70
|
+
success?: string;
|
|
71
|
+
warning?: string;
|
|
72
|
+
error?: string;
|
|
73
|
+
info?: string;
|
|
74
|
+
}
|
|
75
|
+
export interface TypographyScale {
|
|
76
|
+
xs: string;
|
|
77
|
+
sm: string;
|
|
78
|
+
md: string;
|
|
79
|
+
lg: string;
|
|
80
|
+
xl: string;
|
|
81
|
+
"2xl": string;
|
|
82
|
+
"3xl": string;
|
|
83
|
+
"4xl": string;
|
|
84
|
+
}
|
|
85
|
+
export interface SpacingScale {
|
|
86
|
+
xs: string;
|
|
87
|
+
sm: string;
|
|
88
|
+
md: string;
|
|
89
|
+
lg: string;
|
|
90
|
+
xl: string;
|
|
91
|
+
"2xl": string;
|
|
92
|
+
"3xl": string;
|
|
93
|
+
"4xl": string;
|
|
94
|
+
}
|
|
95
|
+
export interface BorderRadius {
|
|
96
|
+
none: string;
|
|
97
|
+
sm: string;
|
|
98
|
+
md: string;
|
|
99
|
+
lg: string;
|
|
100
|
+
xl: string;
|
|
101
|
+
full: string;
|
|
102
|
+
}
|
|
103
|
+
export interface ShadowSystem {
|
|
104
|
+
sm: string;
|
|
105
|
+
md: string;
|
|
106
|
+
lg: string;
|
|
107
|
+
xl: string;
|
|
108
|
+
inner?: string;
|
|
109
|
+
}
|
|
110
|
+
export interface MotionTokens {
|
|
111
|
+
duration: {
|
|
112
|
+
fast: string;
|
|
113
|
+
normal: string;
|
|
114
|
+
slow: string;
|
|
115
|
+
};
|
|
116
|
+
easing: {
|
|
117
|
+
linear: string;
|
|
118
|
+
ease_in: string;
|
|
119
|
+
ease_out: string;
|
|
120
|
+
ease_in_out: string;
|
|
121
|
+
};
|
|
122
|
+
}
|
|
123
|
+
export interface VisualSystem {
|
|
124
|
+
colors: ColorPalette;
|
|
125
|
+
typography: {
|
|
126
|
+
font_families: {
|
|
127
|
+
heading: string;
|
|
128
|
+
body: string;
|
|
129
|
+
mono: string;
|
|
130
|
+
};
|
|
131
|
+
scale: TypographyScale;
|
|
132
|
+
weights: {
|
|
133
|
+
normal: string;
|
|
134
|
+
medium: string;
|
|
135
|
+
semibold: string;
|
|
136
|
+
bold: string;
|
|
137
|
+
};
|
|
138
|
+
};
|
|
139
|
+
spacing: SpacingScale;
|
|
140
|
+
radii: BorderRadius;
|
|
141
|
+
shadows: ShadowSystem;
|
|
142
|
+
motion: MotionTokens;
|
|
143
|
+
breakpoints: {
|
|
144
|
+
sm: string;
|
|
145
|
+
md: string;
|
|
146
|
+
lg: string;
|
|
147
|
+
xl: string;
|
|
148
|
+
};
|
|
149
|
+
}
|
|
150
|
+
export interface ComponentProps {
|
|
151
|
+
name: string;
|
|
152
|
+
type: string;
|
|
153
|
+
required: boolean;
|
|
154
|
+
description: string;
|
|
155
|
+
default_value?: any;
|
|
156
|
+
}
|
|
157
|
+
export interface ComponentDefinition {
|
|
158
|
+
name: string;
|
|
159
|
+
description: string;
|
|
160
|
+
type: "layout" | "form" | "display" | "navigation" | "feedback" | "overlay";
|
|
161
|
+
props: ComponentProps[];
|
|
162
|
+
interactions: string[];
|
|
163
|
+
states: string[];
|
|
164
|
+
accessibility_requirements: string[];
|
|
165
|
+
responsive_behavior: string;
|
|
166
|
+
related_components: string[];
|
|
167
|
+
}
|
|
168
|
+
export interface ScreenDefinition {
|
|
169
|
+
name: string;
|
|
170
|
+
description: string;
|
|
171
|
+
purpose: string;
|
|
172
|
+
components: string[];
|
|
173
|
+
layout_type: "single_column" | "multi_column" | "grid" | "dashboard" | "modal";
|
|
174
|
+
navigation_flow: string[];
|
|
175
|
+
user_journey_position: "entry" | "main" | "secondary" | "exit";
|
|
176
|
+
}
|
|
177
|
+
export interface ComponentHierarchy {
|
|
178
|
+
screens: ScreenDefinition[];
|
|
179
|
+
components: ComponentDefinition[];
|
|
180
|
+
design_patterns: string[];
|
|
181
|
+
interaction_flows: string[];
|
|
182
|
+
state_management: string[];
|
|
183
|
+
data_flow: string[];
|
|
184
|
+
}
|
|
185
|
+
export interface ImplementationPlan {
|
|
186
|
+
framework: string;
|
|
187
|
+
pages: string[];
|
|
188
|
+
state_management: string;
|
|
189
|
+
build_requirements: string[];
|
|
190
|
+
data_persistence: string;
|
|
191
|
+
notifications?: string;
|
|
192
|
+
authentication?: string;
|
|
193
|
+
api_integration?: string;
|
|
194
|
+
deployment_strategy?: string;
|
|
195
|
+
performance_optimizations: string[];
|
|
196
|
+
accessibility_implementation: string[];
|
|
197
|
+
testing_strategy: string[];
|
|
198
|
+
monitoring_analytics?: string[];
|
|
199
|
+
}
|
|
200
|
+
export interface DesignIntent {
|
|
201
|
+
visual_philosophy: string;
|
|
202
|
+
design_anchors: string[];
|
|
203
|
+
user_experience_goals: string[];
|
|
204
|
+
brand_alignment: string;
|
|
205
|
+
technical_constraints: string[];
|
|
206
|
+
scalability_considerations: string[];
|
|
207
|
+
maintenance_guidelines: string[];
|
|
208
|
+
success_criteria: string[];
|
|
209
|
+
}
|
|
210
|
+
export interface DesignManifest {
|
|
211
|
+
version: string;
|
|
212
|
+
generated_at: string;
|
|
213
|
+
project_name: string;
|
|
214
|
+
phases: {
|
|
215
|
+
functional_summary: FunctionalSummary;
|
|
216
|
+
project_scope: ProjectScope;
|
|
217
|
+
context_gaps: ContextGaps;
|
|
218
|
+
design_brief: DesignBrief;
|
|
219
|
+
visual_system: VisualSystem;
|
|
220
|
+
component_hierarchy: ComponentHierarchy;
|
|
221
|
+
implementation_plan: ImplementationPlan;
|
|
222
|
+
design_intent: DesignIntent;
|
|
223
|
+
intent_validation?: {
|
|
224
|
+
validation_report: import("./intent-dictionary").IntentValidationReport;
|
|
225
|
+
enriched_intents: import("./intent-dictionary").EnrichedComponentSpec[];
|
|
226
|
+
clarifications: import("./intent-dictionary").ClarificationResponse[];
|
|
227
|
+
};
|
|
228
|
+
};
|
|
229
|
+
metadata: {
|
|
230
|
+
ai_model_used?: string;
|
|
231
|
+
confidence_scores: Record<string, number>;
|
|
232
|
+
fallbacks_used: string[];
|
|
233
|
+
generation_time_ms: number;
|
|
234
|
+
};
|
|
235
|
+
}
|
|
236
|
+
export interface DesignPipelineInput {
|
|
237
|
+
prd: string;
|
|
238
|
+
types?: string;
|
|
239
|
+
branding?: string;
|
|
240
|
+
component_list?: string;
|
|
241
|
+
project_path: string;
|
|
242
|
+
force_regenerate?: boolean;
|
|
243
|
+
target_phases?: string[];
|
|
244
|
+
}
|
|
245
|
+
export interface DesignPipelineOutput {
|
|
246
|
+
manifest: DesignManifest;
|
|
247
|
+
success: boolean;
|
|
248
|
+
warnings: string[];
|
|
249
|
+
errors: string[];
|
|
250
|
+
fallbacks_used: string[];
|
|
251
|
+
}
|
|
252
|
+
export interface DesignTemplate {
|
|
253
|
+
name: string;
|
|
254
|
+
description: string;
|
|
255
|
+
category: "dashboard" | "ecommerce" | "saas" | "mobile" | "content" | "custom";
|
|
256
|
+
phases: Partial<DesignManifest["phases"]>;
|
|
257
|
+
use_cases: string[];
|
|
258
|
+
complexity: "low" | "medium" | "high";
|
|
259
|
+
}
|
|
260
|
+
export interface FallbackResult {
|
|
261
|
+
success: boolean;
|
|
262
|
+
data: any;
|
|
263
|
+
confidence: number;
|
|
264
|
+
method: "ai_generation" | "rule_based" | "template_based" | "default";
|
|
265
|
+
warnings: string[];
|
|
266
|
+
}
|
|
267
|
+
export interface EnrichedContext {
|
|
268
|
+
project_summary: FunctionalSummary;
|
|
269
|
+
design_system: VisualSystem;
|
|
270
|
+
design_intent: DesignIntent;
|
|
271
|
+
component_architecture: ComponentHierarchy;
|
|
272
|
+
technical_context: {
|
|
273
|
+
prd: string;
|
|
274
|
+
types: string;
|
|
275
|
+
brand: string;
|
|
276
|
+
};
|
|
277
|
+
implementation_guidelines: ImplementationPlan;
|
|
278
|
+
design_principles: string[];
|
|
279
|
+
visual_tokens: Record<string, any>;
|
|
280
|
+
interaction_patterns: string[];
|
|
281
|
+
accessibility_requirements: string[];
|
|
282
|
+
enriched_intents?: import("./intent-dictionary").EnrichedComponentSpec[];
|
|
283
|
+
intent_validation_report?: import("./intent-dictionary").IntentValidationReport;
|
|
284
|
+
intent_clarifications?: import("./intent-dictionary").ClarificationResponse[];
|
|
285
|
+
}
|
|
286
|
+
export interface ValidationResult {
|
|
287
|
+
valid: boolean;
|
|
288
|
+
errors: string[];
|
|
289
|
+
warnings: string[];
|
|
290
|
+
suggestions: string[];
|
|
291
|
+
confidence_score: number;
|
|
292
|
+
}
|
|
293
|
+
export interface PhaseValidation {
|
|
294
|
+
phase_name: string;
|
|
295
|
+
result: ValidationResult;
|
|
296
|
+
required_fields: string[];
|
|
297
|
+
missing_fields: string[];
|
|
298
|
+
quality_indicators: Record<string, any>;
|
|
299
|
+
}
|
|
300
|
+
//# sourceMappingURL=design-pipeline.d.ts.map
|