@getanima/core 0.1.0 → 0.2.1
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 +148 -113
- package/dist/alme/core/KnowledgeGraph.d.ts +58 -0
- package/dist/alme/core/KnowledgeGraph.d.ts.map +1 -0
- package/dist/alme/core/KnowledgeGraph.js +114 -0
- package/dist/alme/core/KnowledgeGraph.js.map +1 -0
- package/dist/alme/core/MetacognitionEngine.d.ts +35 -0
- package/dist/alme/core/MetacognitionEngine.d.ts.map +1 -0
- package/dist/alme/core/MetacognitionEngine.js +90 -0
- package/dist/alme/core/MetacognitionEngine.js.map +1 -0
- package/dist/alme/core/PerformanceAnalyzer.d.ts +68 -0
- package/dist/alme/core/PerformanceAnalyzer.d.ts.map +1 -0
- package/dist/alme/core/PerformanceAnalyzer.js +142 -0
- package/dist/alme/core/PerformanceAnalyzer.js.map +1 -0
- package/dist/alme/core/SelfReflectionModule.d.ts +41 -0
- package/dist/alme/core/SelfReflectionModule.d.ts.map +1 -0
- package/dist/alme/core/SelfReflectionModule.js +101 -0
- package/dist/alme/core/SelfReflectionModule.js.map +1 -0
- package/dist/alme/core/SkillProfile.d.ts +52 -0
- package/dist/alme/core/SkillProfile.d.ts.map +1 -0
- package/dist/alme/core/SkillProfile.js +97 -0
- package/dist/alme/core/SkillProfile.js.map +1 -0
- package/dist/anima.d.ts +57 -0
- package/dist/anima.d.ts.map +1 -1
- package/dist/anima.js +106 -8
- package/dist/anima.js.map +1 -1
- package/dist/codegen/ArchitecturalDesignGenerator.d.ts +77 -0
- package/dist/codegen/ArchitecturalDesignGenerator.d.ts.map +1 -0
- package/dist/codegen/ArchitecturalDesignGenerator.js +194 -0
- package/dist/codegen/ArchitecturalDesignGenerator.js.map +1 -0
- package/dist/codegen/ContextAwareGenerator.d.ts +67 -0
- package/dist/codegen/ContextAwareGenerator.d.ts.map +1 -0
- package/dist/codegen/ContextAwareGenerator.js +158 -0
- package/dist/codegen/ContextAwareGenerator.js.map +1 -0
- package/dist/codegen/SystemInteractionSimulator.d.ts +87 -0
- package/dist/codegen/SystemInteractionSimulator.d.ts.map +1 -0
- package/dist/codegen/SystemInteractionSimulator.js +203 -0
- package/dist/codegen/SystemInteractionSimulator.js.map +1 -0
- package/dist/codegen/multiStageCodegen.d.ts +30 -0
- package/dist/codegen/multiStageCodegen.d.ts.map +1 -0
- package/dist/codegen/multiStageCodegen.js +60 -0
- package/dist/codegen/multiStageCodegen.js.map +1 -0
- package/dist/esm/anima.js +340 -0
- package/dist/esm/anima.js.map +1 -0
- package/dist/esm/identity.js +205 -0
- package/dist/esm/identity.js.map +1 -0
- package/dist/esm/index.js +14 -0
- package/dist/esm/index.js.map +1 -0
- package/dist/esm/memory.js +429 -0
- package/dist/esm/memory.js.map +1 -0
- package/dist/esm/reflection.js +86 -0
- package/dist/esm/reflection.js.map +1 -0
- package/dist/esm/signing.js +194 -0
- package/dist/esm/signing.js.map +1 -0
- package/dist/esm/types.js +6 -0
- package/dist/esm/types.js.map +1 -0
- package/dist/esm/utils.js +155 -0
- package/dist/esm/utils.js.map +1 -0
- package/dist/ideation/InnovationEngine.d.ts +47 -0
- package/dist/ideation/InnovationEngine.d.ts.map +1 -0
- package/dist/ideation/InnovationEngine.js +127 -0
- package/dist/ideation/InnovationEngine.js.map +1 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -1
- package/dist/index.js.map +1 -1
- package/dist/learning-tracker/LearningVisualizer.d.ts +26 -0
- package/dist/learning-tracker/LearningVisualizer.d.ts.map +1 -0
- package/dist/learning-tracker/LearningVisualizer.js +61 -0
- package/dist/learning-tracker/LearningVisualizer.js.map +1 -0
- package/dist/memory.d.ts +28 -0
- package/dist/memory.d.ts.map +1 -1
- package/dist/memory.js +77 -0
- package/dist/memory.js.map +1 -1
- package/dist/signing.d.ts +96 -0
- package/dist/signing.d.ts.map +1 -0
- package/dist/signing.js +231 -0
- package/dist/signing.js.map +1 -0
- package/dist/types.d.ts +6 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/utils.d.ts +8 -2
- package/dist/utils.d.ts.map +1 -1
- package/dist/utils.js +28 -9
- package/dist/utils.js.map +1 -1
- package/package.json +5 -2
package/dist/anima.js
CHANGED
|
@@ -31,6 +31,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
31
31
|
exports.Anima = void 0;
|
|
32
32
|
const memory_1 = require("./memory");
|
|
33
33
|
const identity_1 = require("./identity");
|
|
34
|
+
const signing_1 = require("./signing");
|
|
34
35
|
const utils_1 = require("./utils");
|
|
35
36
|
class Anima {
|
|
36
37
|
config;
|
|
@@ -39,6 +40,7 @@ class Anima {
|
|
|
39
40
|
memory;
|
|
40
41
|
bootTime = 0;
|
|
41
42
|
memoriesThisSession = 0;
|
|
43
|
+
signing;
|
|
42
44
|
booted = false;
|
|
43
45
|
constructor(config) {
|
|
44
46
|
this.config = {
|
|
@@ -52,6 +54,7 @@ class Anima {
|
|
|
52
54
|
this.session = (0, utils_1.sessionId)();
|
|
53
55
|
this.identity = new identity_1.IdentityManager(this.config.storagePath, this.config.identity);
|
|
54
56
|
this.memory = new memory_1.MemoryEngine(this.config.storagePath, this.session, this.config.decay);
|
|
57
|
+
this.signing = new signing_1.SigningEngine(this.config.storagePath);
|
|
55
58
|
}
|
|
56
59
|
// ============ BOOT SEQUENCE ============
|
|
57
60
|
// Order matters. This is enforced, not suggested.
|
|
@@ -61,6 +64,18 @@ class Anima {
|
|
|
61
64
|
* Returns a WakeContext with everything the agent needs to start working.
|
|
62
65
|
* Target: productive state in <60 seconds.
|
|
63
66
|
*/
|
|
67
|
+
/**
|
|
68
|
+
* QuickLoad — lightweight init for CLI commands that don't need full boot context.
|
|
69
|
+
* Loads index + opinions without logging a boot event or returning full context.
|
|
70
|
+
*/
|
|
71
|
+
async quickLoad() {
|
|
72
|
+
if (this.booted)
|
|
73
|
+
return;
|
|
74
|
+
await this.identity.load();
|
|
75
|
+
// Load memory index and opinions silently
|
|
76
|
+
await this.memory.loadIndexPublic();
|
|
77
|
+
this.booted = true;
|
|
78
|
+
}
|
|
64
79
|
async boot() {
|
|
65
80
|
const startTime = Date.now();
|
|
66
81
|
// Step 1: Load identity (SOUL.md + identity.json) — ~5s
|
|
@@ -102,6 +117,8 @@ class Anima {
|
|
|
102
117
|
relevantOpinions: opinions,
|
|
103
118
|
relationships: [], // TODO: relationship engine
|
|
104
119
|
sessionId: this.session,
|
|
120
|
+
instanceId: (0, utils_1.sessionId)(), // Unique per boot — prevents identity confusion when forked
|
|
121
|
+
parentInstanceId: undefined, // Set by caller if this is a forked instance
|
|
105
122
|
lastSessionSummary: todayLog || yesterdayLog || undefined,
|
|
106
123
|
tokenBudget: 4000, // reasonable default
|
|
107
124
|
tokensUsed: this.estimateTokens(identityData, recentMemories, opinions),
|
|
@@ -162,6 +179,25 @@ class Anima {
|
|
|
162
179
|
this.ensureBooted();
|
|
163
180
|
return this.memory.opine({ topic, opinion, confidence });
|
|
164
181
|
}
|
|
182
|
+
// ============ CURATE ============
|
|
183
|
+
/**
|
|
184
|
+
* Curate — review raw memories and distill what matters into long-term memory.
|
|
185
|
+
*
|
|
186
|
+
* The missing piece between storage and retrieval.
|
|
187
|
+
* Raw daily logs are your journal. MEMORY.md is your identity.
|
|
188
|
+
* This method bridges the two.
|
|
189
|
+
*
|
|
190
|
+
* Call periodically (heartbeats, daily, whenever feels right).
|
|
191
|
+
*
|
|
192
|
+
* ```typescript
|
|
193
|
+
* const result = await anima.curate();
|
|
194
|
+
* console.log(`Curated ${result.curated.length} memories`);
|
|
195
|
+
* ```
|
|
196
|
+
*/
|
|
197
|
+
async curate(options) {
|
|
198
|
+
this.ensureBooted();
|
|
199
|
+
return this.memory.curate(options);
|
|
200
|
+
}
|
|
165
201
|
// ============ REFLECT (End of session) ============
|
|
166
202
|
/**
|
|
167
203
|
* Reflect — end-of-session consolidation.
|
|
@@ -170,6 +206,8 @@ class Anima {
|
|
|
170
206
|
async reflect() {
|
|
171
207
|
this.ensureBooted();
|
|
172
208
|
const startTime = Date.now();
|
|
209
|
+
// Curate before decay — promote important memories to MEMORY.md
|
|
210
|
+
const curationResult = await this.memory.curate({ hoursBack: 24, minImportance: 'medium' });
|
|
173
211
|
// Run memory decay
|
|
174
212
|
const decayResult = await this.memory.runDecay();
|
|
175
213
|
// Get all opinions for summary
|
|
@@ -177,7 +215,7 @@ class Anima {
|
|
|
177
215
|
// Generate session summary
|
|
178
216
|
const summary = {
|
|
179
217
|
sessionId: this.session,
|
|
180
|
-
startedAt: new Date(Date.now() -
|
|
218
|
+
startedAt: new Date(Date.now() - this.bootTime).toISOString(),
|
|
181
219
|
endedAt: (0, utils_1.now)(),
|
|
182
220
|
summary: `Session ${this.session}: ${this.memoriesThisSession} memories created. Decay: ${decayResult.decayed} removed, ${decayResult.archived} archived, ${decayResult.kept} kept.`,
|
|
183
221
|
memoriesCreated: this.memoriesThisSession,
|
|
@@ -197,15 +235,75 @@ class Anima {
|
|
|
197
235
|
importance: 'low',
|
|
198
236
|
tags: ['system', 'session-summary'],
|
|
199
237
|
});
|
|
200
|
-
//
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
238
|
+
// Update lifeboat with session summary — PRESERVE existing content
|
|
239
|
+
// The lifeboat may contain a hand-written letter from the agent to future-self.
|
|
240
|
+
// Append session summary instead of nuking everything.
|
|
241
|
+
const existingLifeboat = await this.memory.readLifeboat();
|
|
242
|
+
const sessionEndNote = [
|
|
243
|
+
`\n## Last Session Summary (${(0, utils_1.now)()})`,
|
|
244
|
+
summary.summary,
|
|
245
|
+
`Curated ${curationResult.curated.length} memories to long-term.`,
|
|
246
|
+
`\n## Status`,
|
|
247
|
+
`done — session ended normally. Read everything above for context.`,
|
|
248
|
+
].join('\n');
|
|
249
|
+
if (existingLifeboat && !existingLifeboat.includes('session ended normally')) {
|
|
250
|
+
// Preserve existing lifeboat, append summary
|
|
251
|
+
await this.memory.writeLifeboatRaw(existingLifeboat + '\n' + sessionEndNote);
|
|
252
|
+
}
|
|
253
|
+
else {
|
|
254
|
+
// No meaningful lifeboat content — write clean end state
|
|
255
|
+
await this.memory.updateLifeboat({
|
|
256
|
+
activeTask: 'No active task — session ended normally',
|
|
257
|
+
status: 'done',
|
|
258
|
+
resumePoint: 'Start fresh next session',
|
|
259
|
+
updatedAt: (0, utils_1.now)(),
|
|
260
|
+
});
|
|
261
|
+
}
|
|
207
262
|
return summary;
|
|
208
263
|
}
|
|
264
|
+
// ============ SIGNING ============
|
|
265
|
+
/**
|
|
266
|
+
* Sign — cryptographically sign this agent's identity.
|
|
267
|
+
* Produces a verifiable bundle that proves "this identity is mine and untampered."
|
|
268
|
+
* Initializes keys on first call.
|
|
269
|
+
*/
|
|
270
|
+
async sign() {
|
|
271
|
+
this.ensureBooted();
|
|
272
|
+
await this.signing.init(this.config.name);
|
|
273
|
+
const identity = this.identity.get();
|
|
274
|
+
const signed = this.signing.signIdentity(identity);
|
|
275
|
+
await this.signing.saveSignedIdentity(signed);
|
|
276
|
+
return signed;
|
|
277
|
+
}
|
|
278
|
+
/**
|
|
279
|
+
* Verify — check another agent's signed identity.
|
|
280
|
+
* Static: doesn't require booting your own Anima instance.
|
|
281
|
+
*
|
|
282
|
+
* Usage:
|
|
283
|
+
* ```typescript
|
|
284
|
+
* const result = Anima.verify(signedIdentityFromOtherAgent);
|
|
285
|
+
* if (result.valid) console.log(`Verified: ${result.agentName}`);
|
|
286
|
+
* ```
|
|
287
|
+
*/
|
|
288
|
+
static verify(signed) {
|
|
289
|
+
return signing_1.SigningEngine.verifyIdentity(signed);
|
|
290
|
+
}
|
|
291
|
+
/**
|
|
292
|
+
* Get this agent's public key bundle — share this for others to verify you.
|
|
293
|
+
* Never includes the private key.
|
|
294
|
+
*/
|
|
295
|
+
async getKeyBundle() {
|
|
296
|
+
await this.signing.init(this.config.name);
|
|
297
|
+
return this.signing.getKeyBundle();
|
|
298
|
+
}
|
|
299
|
+
/**
|
|
300
|
+
* Get this agent's fingerprint — a short, human-readable identity string.
|
|
301
|
+
* Like SSH: "ab:cd:ef:12:34:56:78:90:..."
|
|
302
|
+
*/
|
|
303
|
+
async getFingerprint() {
|
|
304
|
+
await this.signing.init(this.config.name);
|
|
305
|
+
return this.signing.getFingerprint();
|
|
306
|
+
}
|
|
209
307
|
// ============ ACCESSORS ============
|
|
210
308
|
/** Get current session ID */
|
|
211
309
|
getSessionId() {
|
package/dist/anima.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"anima.js","sourceRoot":"","sources":["../src/anima.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;;;AAGH,qCAAwC;AACxC,yCAA6C;AAC7C,mCAAkD;AAElD,MAAa,KAAK;IACR,MAAM,CAAwB;IAC9B,OAAO,CAAS;IAChB,QAAQ,CAAkB;IAC1B,MAAM,CAAe;IACrB,QAAQ,GAAW,CAAC,CAAC;IACrB,mBAAmB,GAAW,CAAC,CAAC;IAChC,MAAM,GAAY,KAAK,CAAC;IAEhC,YAAY,MAAmB;QAC7B,IAAI,CAAC,MAAM,GAAG;YACZ,WAAW,EAAE,cAAc;YAC3B,gBAAgB,EAAE,EAAE;YACpB,KAAK,EAAE,QAAQ;YACf,KAAK,EAAE,EAAE,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE;YAC/D,QAAQ,EAAE,EAAE;YACZ,GAAG,MAAM;SACV,CAAC;QAEF,IAAI,CAAC,OAAO,GAAG,IAAA,iBAAS,GAAE,CAAC;QAC3B,IAAI,CAAC,QAAQ,GAAG,IAAI,0BAAe,CAAC,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QACnF,IAAI,CAAC,MAAM,GAAG,IAAI,qBAAY,CAAC,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"anima.js","sourceRoot":"","sources":["../src/anima.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
import { KnowledgeGraph } from '../alme/core/KnowledgeGraph';
|
|
2
|
+
declare enum ArchitecturalPattern {
|
|
3
|
+
Microservices = 0,
|
|
4
|
+
EventDriven = 1,
|
|
5
|
+
Monolithic = 2,
|
|
6
|
+
Serverless = 3,
|
|
7
|
+
Hexagonal = 4,
|
|
8
|
+
CleanArchitecture = 5
|
|
9
|
+
}
|
|
10
|
+
interface TechnologyStack {
|
|
11
|
+
backend: string[];
|
|
12
|
+
frontend: string[];
|
|
13
|
+
database: string[];
|
|
14
|
+
deployment: string[];
|
|
15
|
+
}
|
|
16
|
+
interface ProjectRequirements {
|
|
17
|
+
domain: string;
|
|
18
|
+
scalabilityNeeds: 'low' | 'medium' | 'high';
|
|
19
|
+
performanceConstraints: {
|
|
20
|
+
responseTime: number;
|
|
21
|
+
concurrentUsers: number;
|
|
22
|
+
};
|
|
23
|
+
complexityLevel: 'simple' | 'moderate' | 'complex';
|
|
24
|
+
}
|
|
25
|
+
export declare class ArchitecturalDesignGenerator {
|
|
26
|
+
private knowledgeGraph;
|
|
27
|
+
private architecturalTemplates;
|
|
28
|
+
private technologyStacks;
|
|
29
|
+
constructor(knowledgeGraph: KnowledgeGraph);
|
|
30
|
+
/**
|
|
31
|
+
* Generate architectural design
|
|
32
|
+
* @param requirements Project requirements
|
|
33
|
+
* @returns Comprehensive architectural design
|
|
34
|
+
*/
|
|
35
|
+
generateArchitecture(requirements: ProjectRequirements): {
|
|
36
|
+
selectedPattern: ArchitecturalPattern;
|
|
37
|
+
technologyStack: TechnologyStack;
|
|
38
|
+
architecturalBlueprint: string;
|
|
39
|
+
designRecommendations: string[];
|
|
40
|
+
};
|
|
41
|
+
/**
|
|
42
|
+
* Select optimal architectural pattern
|
|
43
|
+
* @param requirements Project requirements
|
|
44
|
+
* @returns Best matching architectural pattern
|
|
45
|
+
*/
|
|
46
|
+
private selectArchitecturalPattern;
|
|
47
|
+
/**
|
|
48
|
+
* Retrieve technology stack for pattern
|
|
49
|
+
* @param pattern Selected architectural pattern
|
|
50
|
+
* @returns Recommended technology stack
|
|
51
|
+
*/
|
|
52
|
+
private getTechnologyStack;
|
|
53
|
+
/**
|
|
54
|
+
* Create architectural blueprint
|
|
55
|
+
* @param pattern Selected architectural pattern
|
|
56
|
+
* @param requirements Project requirements
|
|
57
|
+
* @returns Architectural blueprint
|
|
58
|
+
*/
|
|
59
|
+
private createArchitecturalBlueprint;
|
|
60
|
+
/**
|
|
61
|
+
* Enrich blueprint with knowledge graph insights
|
|
62
|
+
* @param blueprint Base architectural blueprint
|
|
63
|
+
* @param requirements Project requirements
|
|
64
|
+
* @returns Enriched blueprint
|
|
65
|
+
*/
|
|
66
|
+
private enrichBlueprintWithKnowledgeInsights;
|
|
67
|
+
/**
|
|
68
|
+
* Generate design recommendations
|
|
69
|
+
* @param pattern Selected architectural pattern
|
|
70
|
+
* @param requirements Project requirements
|
|
71
|
+
* @returns Design recommendations
|
|
72
|
+
*/
|
|
73
|
+
private generateDesignRecommendations;
|
|
74
|
+
}
|
|
75
|
+
export declare const architecturalDesignGenerator: ArchitecturalDesignGenerator;
|
|
76
|
+
export {};
|
|
77
|
+
//# sourceMappingURL=ArchitecturalDesignGenerator.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ArchitecturalDesignGenerator.d.ts","sourceRoot":"","sources":["../../src/codegen/ArchitecturalDesignGenerator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAG7D,aAAK,oBAAoB;IACvB,aAAa,IAAA;IACb,WAAW,IAAA;IACX,UAAU,IAAA;IACV,UAAU,IAAA;IACV,SAAS,IAAA;IACT,iBAAiB,IAAA;CAClB;AAGD,UAAU,eAAe;IACvB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,UAAU,EAAE,MAAM,EAAE,CAAC;CACtB;AAGD,UAAU,mBAAmB;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,gBAAgB,EAAE,KAAK,GAAG,QAAQ,GAAG,MAAM,CAAC;IAC5C,sBAAsB,EAAE;QACtB,YAAY,EAAE,MAAM,CAAC;QACrB,eAAe,EAAE,MAAM,CAAC;KACzB,CAAC;IACF,eAAe,EAAE,QAAQ,GAAG,UAAU,GAAG,SAAS,CAAC;CACpD;AAED,qBAAa,4BAA4B;IACvC,OAAO,CAAC,cAAc,CAAiB;IAGvC,OAAO,CAAC,sBAAsB,CAsC3B;IAGH,OAAO,CAAC,gBAAgB,CAarB;gBAES,cAAc,EAAE,cAAc;IAI1C;;;;OAIG;IACH,oBAAoB,CAClB,YAAY,EAAE,mBAAmB,GAChC;QACD,eAAe,EAAE,oBAAoB,CAAC;QACtC,eAAe,EAAE,eAAe,CAAC;QACjC,sBAAsB,EAAE,MAAM,CAAC;QAC/B,qBAAqB,EAAE,MAAM,EAAE,CAAC;KACjC;IAiCD;;;;OAIG;IACH,OAAO,CAAC,0BAA0B;IAelC;;;;OAIG;IACH,OAAO,CAAC,kBAAkB;IAU1B;;;;;OAKG;IACH,OAAO,CAAC,4BAA4B;IAqBpC;;;;;OAKG;IACH,OAAO,CAAC,oCAAoC;IAkB5C;;;;;OAKG;IACH,OAAO,CAAC,6BAA6B;CA8BtC;AAGD,eAAO,MAAM,4BAA4B,8BAExC,CAAC"}
|
|
@@ -0,0 +1,194 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.architecturalDesignGenerator = exports.ArchitecturalDesignGenerator = void 0;
|
|
4
|
+
const KnowledgeGraph_1 = require("../alme/core/KnowledgeGraph");
|
|
5
|
+
// Architectural patterns and styles
|
|
6
|
+
var ArchitecturalPattern;
|
|
7
|
+
(function (ArchitecturalPattern) {
|
|
8
|
+
ArchitecturalPattern[ArchitecturalPattern["Microservices"] = 0] = "Microservices";
|
|
9
|
+
ArchitecturalPattern[ArchitecturalPattern["EventDriven"] = 1] = "EventDriven";
|
|
10
|
+
ArchitecturalPattern[ArchitecturalPattern["Monolithic"] = 2] = "Monolithic";
|
|
11
|
+
ArchitecturalPattern[ArchitecturalPattern["Serverless"] = 3] = "Serverless";
|
|
12
|
+
ArchitecturalPattern[ArchitecturalPattern["Hexagonal"] = 4] = "Hexagonal";
|
|
13
|
+
ArchitecturalPattern[ArchitecturalPattern["CleanArchitecture"] = 5] = "CleanArchitecture";
|
|
14
|
+
})(ArchitecturalPattern || (ArchitecturalPattern = {}));
|
|
15
|
+
class ArchitecturalDesignGenerator {
|
|
16
|
+
knowledgeGraph;
|
|
17
|
+
// Predefined architectural templates
|
|
18
|
+
architecturalTemplates = new Map([
|
|
19
|
+
[ArchitecturalPattern.Microservices, {
|
|
20
|
+
description: 'Distributed system with independently deployable services',
|
|
21
|
+
bestPractices: [
|
|
22
|
+
'Use lightweight communication protocols',
|
|
23
|
+
'Implement service discovery',
|
|
24
|
+
'Design for fault tolerance'
|
|
25
|
+
],
|
|
26
|
+
componentStructure: `
|
|
27
|
+
microservices/
|
|
28
|
+
├── service-discovery/
|
|
29
|
+
├── api-gateway/
|
|
30
|
+
├── auth-service/
|
|
31
|
+
├── core-service/
|
|
32
|
+
└── monitoring/
|
|
33
|
+
`
|
|
34
|
+
}],
|
|
35
|
+
[ArchitecturalPattern.Serverless, {
|
|
36
|
+
description: 'Event-driven, cloud-native architecture',
|
|
37
|
+
bestPractices: [
|
|
38
|
+
'Minimize cold start times',
|
|
39
|
+
'Design stateless functions',
|
|
40
|
+
'Implement robust error handling'
|
|
41
|
+
],
|
|
42
|
+
componentStructure: `
|
|
43
|
+
serverless/
|
|
44
|
+
├── functions/
|
|
45
|
+
│ ├── authentication/
|
|
46
|
+
│ ├── data-processing/
|
|
47
|
+
│ └── notification/
|
|
48
|
+
├── event-sources/
|
|
49
|
+
└── infrastructure/
|
|
50
|
+
`
|
|
51
|
+
}]
|
|
52
|
+
]);
|
|
53
|
+
// Recommended technology stacks
|
|
54
|
+
technologyStacks = new Map([
|
|
55
|
+
[ArchitecturalPattern.Microservices, {
|
|
56
|
+
backend: ['Node.js', 'Kotlin', 'Go'],
|
|
57
|
+
frontend: ['React', 'Vue.js'],
|
|
58
|
+
database: ['MongoDB', 'Cassandra'],
|
|
59
|
+
deployment: ['Kubernetes', 'Docker']
|
|
60
|
+
}],
|
|
61
|
+
[ArchitecturalPattern.Serverless, {
|
|
62
|
+
backend: ['AWS Lambda', 'Azure Functions'],
|
|
63
|
+
frontend: ['Next.js', 'Svelte'],
|
|
64
|
+
database: ['DynamoDB', 'Firestore'],
|
|
65
|
+
deployment: ['Terraform', 'Serverless Framework']
|
|
66
|
+
}]
|
|
67
|
+
]);
|
|
68
|
+
constructor(knowledgeGraph) {
|
|
69
|
+
this.knowledgeGraph = knowledgeGraph;
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* Generate architectural design
|
|
73
|
+
* @param requirements Project requirements
|
|
74
|
+
* @returns Comprehensive architectural design
|
|
75
|
+
*/
|
|
76
|
+
generateArchitecture(requirements) {
|
|
77
|
+
// 1. Select appropriate architectural pattern
|
|
78
|
+
const selectedPattern = this.selectArchitecturalPattern(requirements);
|
|
79
|
+
// 2. Retrieve technology stack
|
|
80
|
+
const technologyStack = this.getTechnologyStack(selectedPattern);
|
|
81
|
+
// 3. Generate architectural blueprint
|
|
82
|
+
const architecturalBlueprint = this.createArchitecturalBlueprint(selectedPattern, requirements);
|
|
83
|
+
// 4. Generate design recommendations
|
|
84
|
+
const designRecommendations = this.generateDesignRecommendations(selectedPattern, requirements);
|
|
85
|
+
// 5. Enrich with knowledge graph insights
|
|
86
|
+
const enrichedBlueprint = this.enrichBlueprintWithKnowledgeInsights(architecturalBlueprint, requirements);
|
|
87
|
+
return {
|
|
88
|
+
selectedPattern,
|
|
89
|
+
technologyStack,
|
|
90
|
+
architecturalBlueprint: enrichedBlueprint,
|
|
91
|
+
designRecommendations
|
|
92
|
+
};
|
|
93
|
+
}
|
|
94
|
+
/**
|
|
95
|
+
* Select optimal architectural pattern
|
|
96
|
+
* @param requirements Project requirements
|
|
97
|
+
* @returns Best matching architectural pattern
|
|
98
|
+
*/
|
|
99
|
+
selectArchitecturalPattern(requirements) {
|
|
100
|
+
// Intelligent pattern selection logic
|
|
101
|
+
if (requirements.scalabilityNeeds === 'high') {
|
|
102
|
+
return ArchitecturalPattern.Microservices;
|
|
103
|
+
}
|
|
104
|
+
if (requirements.performanceConstraints.concurrentUsers > 10000) {
|
|
105
|
+
return ArchitecturalPattern.Serverless;
|
|
106
|
+
}
|
|
107
|
+
return ArchitecturalPattern.Microservices; // Default fallback
|
|
108
|
+
}
|
|
109
|
+
/**
|
|
110
|
+
* Retrieve technology stack for pattern
|
|
111
|
+
* @param pattern Selected architectural pattern
|
|
112
|
+
* @returns Recommended technology stack
|
|
113
|
+
*/
|
|
114
|
+
getTechnologyStack(pattern) {
|
|
115
|
+
const stack = this.technologyStacks.get(pattern);
|
|
116
|
+
if (!stack) {
|
|
117
|
+
throw new Error(`No technology stack found for pattern: ${pattern}`);
|
|
118
|
+
}
|
|
119
|
+
return stack;
|
|
120
|
+
}
|
|
121
|
+
/**
|
|
122
|
+
* Create architectural blueprint
|
|
123
|
+
* @param pattern Selected architectural pattern
|
|
124
|
+
* @param requirements Project requirements
|
|
125
|
+
* @returns Architectural blueprint
|
|
126
|
+
*/
|
|
127
|
+
createArchitecturalBlueprint(pattern, requirements) {
|
|
128
|
+
const template = this.architecturalTemplates.get(pattern);
|
|
129
|
+
if (!template) {
|
|
130
|
+
throw new Error(`No template found for pattern: ${pattern}`);
|
|
131
|
+
}
|
|
132
|
+
return `
|
|
133
|
+
# Architectural Design: ${requirements.domain}
|
|
134
|
+
## Pattern: ${ArchitecturalPattern[pattern]}
|
|
135
|
+
## Complexity: ${requirements.complexityLevel}
|
|
136
|
+
|
|
137
|
+
${template.componentStructure}
|
|
138
|
+
|
|
139
|
+
## Best Practices:
|
|
140
|
+
${template.bestPractices.map(practice => `- ${practice}`).join('\n')}
|
|
141
|
+
`;
|
|
142
|
+
}
|
|
143
|
+
/**
|
|
144
|
+
* Enrich blueprint with knowledge graph insights
|
|
145
|
+
* @param blueprint Base architectural blueprint
|
|
146
|
+
* @param requirements Project requirements
|
|
147
|
+
* @returns Enriched blueprint
|
|
148
|
+
*/
|
|
149
|
+
enrichBlueprintWithKnowledgeInsights(blueprint, requirements) {
|
|
150
|
+
// Find related concepts in knowledge graph
|
|
151
|
+
const relatedConcepts = this.knowledgeGraph.findRelatedConcepts(requirements.domain, 2 // Depth of exploration
|
|
152
|
+
);
|
|
153
|
+
// Extract and integrate insights
|
|
154
|
+
const conceptInsights = relatedConcepts
|
|
155
|
+
.map(concept => `## Domain Insight: ${concept.content}`)
|
|
156
|
+
.join('\n');
|
|
157
|
+
return `${blueprint}\n\n${conceptInsights}`;
|
|
158
|
+
}
|
|
159
|
+
/**
|
|
160
|
+
* Generate design recommendations
|
|
161
|
+
* @param pattern Selected architectural pattern
|
|
162
|
+
* @param requirements Project requirements
|
|
163
|
+
* @returns Design recommendations
|
|
164
|
+
*/
|
|
165
|
+
generateDesignRecommendations(pattern, requirements) {
|
|
166
|
+
const baseRecommendations = [
|
|
167
|
+
`Optimize for ${requirements.scalabilityNeeds} scalability`,
|
|
168
|
+
`Design to support ${requirements.performanceConstraints.concurrentUsers} concurrent users`,
|
|
169
|
+
`Implement ${requirements.complexityLevel} complexity architecture`
|
|
170
|
+
];
|
|
171
|
+
const patternSpecificRecommendations = {
|
|
172
|
+
[ArchitecturalPattern.Microservices]: [
|
|
173
|
+
'Implement robust service discovery',
|
|
174
|
+
'Design for independent service deployment'
|
|
175
|
+
],
|
|
176
|
+
[ArchitecturalPattern.Serverless]: [
|
|
177
|
+
'Minimize cold start times',
|
|
178
|
+
'Design stateless, event-driven functions'
|
|
179
|
+
],
|
|
180
|
+
[ArchitecturalPattern.EventDriven]: [],
|
|
181
|
+
[ArchitecturalPattern.Monolithic]: [],
|
|
182
|
+
[ArchitecturalPattern.Hexagonal]: [],
|
|
183
|
+
[ArchitecturalPattern.CleanArchitecture]: []
|
|
184
|
+
};
|
|
185
|
+
return [
|
|
186
|
+
...baseRecommendations,
|
|
187
|
+
...(patternSpecificRecommendations[pattern] || [])
|
|
188
|
+
];
|
|
189
|
+
}
|
|
190
|
+
}
|
|
191
|
+
exports.ArchitecturalDesignGenerator = ArchitecturalDesignGenerator;
|
|
192
|
+
// Singleton instance for global use
|
|
193
|
+
exports.architecturalDesignGenerator = new ArchitecturalDesignGenerator(new KnowledgeGraph_1.KnowledgeGraph());
|
|
194
|
+
//# sourceMappingURL=ArchitecturalDesignGenerator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ArchitecturalDesignGenerator.js","sourceRoot":"","sources":["../../src/codegen/ArchitecturalDesignGenerator.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
import { KnowledgeGraph } from '../../alme/core/KnowledgeGraph';
|
|
2
|
+
declare enum CodeGenerationContext {
|
|
3
|
+
MobileApp = 0,
|
|
4
|
+
WebService = 1,
|
|
5
|
+
SystemIntegration = 2,
|
|
6
|
+
MachineLearning = 3,
|
|
7
|
+
ServerlessArchitecture = 4
|
|
8
|
+
}
|
|
9
|
+
interface CodeGenerationRequest {
|
|
10
|
+
context: CodeGenerationContext;
|
|
11
|
+
domain: string;
|
|
12
|
+
specificRequirements: string[];
|
|
13
|
+
constraints: {
|
|
14
|
+
performanceTarget?: number;
|
|
15
|
+
memoryLimit?: number;
|
|
16
|
+
scalabilityRequirements?: string;
|
|
17
|
+
};
|
|
18
|
+
}
|
|
19
|
+
export declare class ContextAwareCodeGenerator {
|
|
20
|
+
private knowledgeGraph;
|
|
21
|
+
private codeTemplates;
|
|
22
|
+
constructor(knowledgeGraph: KnowledgeGraph);
|
|
23
|
+
/**
|
|
24
|
+
* Generate context-aware code
|
|
25
|
+
* @param request Code generation requirements
|
|
26
|
+
* @returns Generated code snippet
|
|
27
|
+
*/
|
|
28
|
+
generateCode(request: CodeGenerationRequest): Promise<string>;
|
|
29
|
+
/**
|
|
30
|
+
* Retrieve appropriate code template
|
|
31
|
+
* @param context Generation context
|
|
32
|
+
* @returns Matching code template
|
|
33
|
+
*/
|
|
34
|
+
private getCodeTemplate;
|
|
35
|
+
/**
|
|
36
|
+
* Enrich template with contextual insights
|
|
37
|
+
* @param template Base code template
|
|
38
|
+
* @param contextNodes Related knowledge graph nodes
|
|
39
|
+
* @param request Generation request
|
|
40
|
+
* @returns Enhanced template
|
|
41
|
+
*/
|
|
42
|
+
private enrichTemplateWithContextualInsights;
|
|
43
|
+
/**
|
|
44
|
+
* Fill template with specific implementation details
|
|
45
|
+
* @param template Enhanced code template
|
|
46
|
+
* @param request Generation request
|
|
47
|
+
* @returns Specific code implementation
|
|
48
|
+
*/
|
|
49
|
+
private fillTemplateWithSpecifics;
|
|
50
|
+
/**
|
|
51
|
+
* Validate generated code
|
|
52
|
+
* @param code Generated code snippet
|
|
53
|
+
* @param request Original generation request
|
|
54
|
+
* @returns Validation result
|
|
55
|
+
*/
|
|
56
|
+
private validateGeneratedCode;
|
|
57
|
+
/**
|
|
58
|
+
* Refine generated code based on feedback
|
|
59
|
+
* @param code Original generated code
|
|
60
|
+
* @param feedback Validation feedback
|
|
61
|
+
* @returns Improved code
|
|
62
|
+
*/
|
|
63
|
+
private refineCode;
|
|
64
|
+
}
|
|
65
|
+
export declare const contextAwareCodeGenerator: ContextAwareCodeGenerator;
|
|
66
|
+
export {};
|
|
67
|
+
//# sourceMappingURL=ContextAwareGenerator.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ContextAwareGenerator.d.ts","sourceRoot":"","sources":["../../src/codegen/ContextAwareGenerator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAC;AAGhE,aAAK,qBAAqB;IACxB,SAAS,IAAA;IACT,UAAU,IAAA;IACV,iBAAiB,IAAA;IACjB,eAAe,IAAA;IACf,sBAAsB,IAAA;CACvB;AAGD,UAAU,qBAAqB;IAC7B,OAAO,EAAE,qBAAqB,CAAC;IAC/B,MAAM,EAAE,MAAM,CAAC;IACf,oBAAoB,EAAE,MAAM,EAAE,CAAC;IAC/B,WAAW,EAAE;QACX,iBAAiB,CAAC,EAAE,MAAM,CAAC;QAC3B,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,uBAAuB,CAAC,EAAE,MAAM,CAAC;KAClC,CAAC;CACH;AASD,qBAAa,yBAAyB;IACpC,OAAO,CAAC,cAAc,CAAiB;IAGvC,OAAO,CAAC,aAAa,CA2ClB;gBAES,cAAc,EAAE,cAAc;IAI1C;;;;OAIG;IACG,YAAY,CAAC,OAAO,EAAE,qBAAqB,GAAG,OAAO,CAAC,MAAM,CAAC;IA+BnE;;;;OAIG;IACH,OAAO,CAAC,eAAe;IAQvB;;;;;;OAMG;IACH,OAAO,CAAC,oCAAoC;IAmB5C;;;;;OAKG;IACH,OAAO,CAAC,yBAAyB;IAUjC;;;;;OAKG;YACW,qBAAqB;IAoBnC;;;;;OAKG;IACH,OAAO,CAAC,UAAU;CAMnB;AAGD,eAAO,MAAM,yBAAyB,2BAErC,CAAC"}
|