@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
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.learningVisualizer = exports.LearningVisualizer = void 0;
|
|
4
|
+
class LearningVisualizer {
|
|
5
|
+
// Detailed learning event logging
|
|
6
|
+
learningLog = [];
|
|
7
|
+
/**
|
|
8
|
+
* Log a learning event with full transparency
|
|
9
|
+
*/
|
|
10
|
+
logLearningEvent(event) {
|
|
11
|
+
const logEntry = {
|
|
12
|
+
timestamp: Date.now(),
|
|
13
|
+
conversationContext: event.context,
|
|
14
|
+
insightType: event.type,
|
|
15
|
+
significanceScore: event.score,
|
|
16
|
+
learningOutcome: event.outcome
|
|
17
|
+
};
|
|
18
|
+
this.learningLog.push(logEntry);
|
|
19
|
+
this.generateLearningReport();
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Generate a human-readable learning report
|
|
23
|
+
*/
|
|
24
|
+
generateLearningReport() {
|
|
25
|
+
const report = this.learningLog
|
|
26
|
+
.map(entry => `
|
|
27
|
+
[${new Date(entry.timestamp).toLocaleString()}]
|
|
28
|
+
Context: ${entry.conversationContext}
|
|
29
|
+
Insight Type: ${entry.insightType}
|
|
30
|
+
Significance: ${(entry.significanceScore * 100).toFixed(2)}%
|
|
31
|
+
Outcome: ${entry.learningOutcome}
|
|
32
|
+
---`)
|
|
33
|
+
.join('\n');
|
|
34
|
+
// Optionally write to a visible log file
|
|
35
|
+
this.writeReportToFile(report);
|
|
36
|
+
return report;
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Write learning report to a visible file
|
|
40
|
+
*/
|
|
41
|
+
writeReportToFile(report) {
|
|
42
|
+
const fs = require('fs');
|
|
43
|
+
const logFilePath = 'C:\\Users\\memom\\memory\\learning-logs\\learning-log.txt';
|
|
44
|
+
// Ensure directory exists
|
|
45
|
+
const logDirectory = 'C:\\Users\\memom\\memory\\learning-logs';
|
|
46
|
+
if (!fs.existsSync(logDirectory)) {
|
|
47
|
+
fs.mkdirSync(logDirectory, { recursive: true });
|
|
48
|
+
}
|
|
49
|
+
fs.appendFileSync(logFilePath, report + '\n\n');
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Provide a way to inspect recent learning events
|
|
53
|
+
*/
|
|
54
|
+
getRecentLearningEvents(limit = 10) {
|
|
55
|
+
return this.learningLog.slice(-limit);
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
exports.LearningVisualizer = LearningVisualizer;
|
|
59
|
+
// Singleton instance for tracking
|
|
60
|
+
exports.learningVisualizer = new LearningVisualizer();
|
|
61
|
+
//# sourceMappingURL=LearningVisualizer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"LearningVisualizer.js","sourceRoot":"","sources":["../../src/learning-tracker/LearningVisualizer.ts"],"names":[],"mappings":";;;AAAA,MAAa,kBAAkB;IAC7B,kCAAkC;IAC1B,WAAW,GAMd,EAAE,CAAC;IAER;;OAEG;IACH,gBAAgB,CAAC,KAKhB;QACC,MAAM,QAAQ,GAAG;YACf,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;YACrB,mBAAmB,EAAE,KAAK,CAAC,OAAO;YAClC,WAAW,EAAE,KAAK,CAAC,IAAI;YACvB,iBAAiB,EAAE,KAAK,CAAC,KAAK;YAC9B,eAAe,EAAE,KAAK,CAAC,OAAO;SAC/B,CAAC;QAEF,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAChC,IAAI,CAAC,sBAAsB,EAAE,CAAC;IAChC,CAAC;IAED;;OAEG;IACH,sBAAsB;QACpB,MAAM,MAAM,GAAG,IAAI,CAAC,WAAW;aAC5B,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;GACjB,IAAI,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,cAAc,EAAE;WAClC,KAAK,CAAC,mBAAmB;gBACpB,KAAK,CAAC,WAAW;gBACjB,CAAC,KAAK,CAAC,iBAAiB,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;WAC/C,KAAK,CAAC,eAAe;IAC5B,CAAC;aACE,IAAI,CAAC,IAAI,CAAC,CAAC;QAEd,yCAAyC;QACzC,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC;QAE/B,OAAO,MAAM,CAAC;IAChB,CAAC;IAED;;OAEG;IACK,iBAAiB,CAAC,MAAc;QACtC,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;QACzB,MAAM,WAAW,GAAG,2DAA2D,CAAC;QAEhF,0BAA0B;QAC1B,MAAM,YAAY,GAAG,yCAAyC,CAAC;QAC/D,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;YACjC,EAAE,CAAC,SAAS,CAAC,YAAY,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAClD,CAAC;QAED,EAAE,CAAC,cAAc,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAAC,CAAC;IAClD,CAAC;IAED;;OAEG;IACH,uBAAuB,CAAC,QAAgB,EAAE;QACxC,OAAO,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC;IACxC,CAAC;CACF;AAzED,gDAyEC;AAED,kCAAkC;AACrB,QAAA,kBAAkB,GAAG,IAAI,kBAAkB,EAAE,CAAC"}
|
package/dist/memory.d.ts
CHANGED
|
@@ -38,6 +38,8 @@ export declare class MemoryEngine {
|
|
|
38
38
|
updateLifeboat(checkpoint: Checkpoint): Promise<void>;
|
|
39
39
|
/** Read the current lifeboat */
|
|
40
40
|
readLifeboat(): Promise<string | null>;
|
|
41
|
+
/** Write raw content to lifeboat (for preserving hand-written content) */
|
|
42
|
+
writeLifeboatRaw(content: string): Promise<void>;
|
|
41
43
|
/** Read today's daily log */
|
|
42
44
|
readDailyLog(date?: string): Promise<string | null>;
|
|
43
45
|
/** Read yesterday's daily log */
|
|
@@ -46,6 +48,30 @@ export declare class MemoryEngine {
|
|
|
46
48
|
readLongTerm(): Promise<string | null>;
|
|
47
49
|
/** Append to MEMORY.md */
|
|
48
50
|
writeLongTerm(content: string): Promise<void>;
|
|
51
|
+
/**
|
|
52
|
+
* Curate — review raw memories and distill what matters into MEMORY.md.
|
|
53
|
+
*
|
|
54
|
+
* This is the missing piece most agents skip. Storage is easy. Retrieval is solved.
|
|
55
|
+
* But without periodic curation, you either drown in noise or lose everything.
|
|
56
|
+
*
|
|
57
|
+
* Call this periodically (e.g., during heartbeats, daily reflection).
|
|
58
|
+
*
|
|
59
|
+
* Strategy:
|
|
60
|
+
* 1. Scan memories from the last N hours
|
|
61
|
+
* 2. Filter for high-salience, high-importance items
|
|
62
|
+
* 3. Deduplicate against existing long-term memory
|
|
63
|
+
* 4. Append curated insights to MEMORY.md
|
|
64
|
+
* 5. Return what was curated (so agents can review/edit)
|
|
65
|
+
*/
|
|
66
|
+
curate(options?: {
|
|
67
|
+
hoursBack?: number;
|
|
68
|
+
minImportance?: ImportanceLevel;
|
|
69
|
+
minSalience?: number;
|
|
70
|
+
dryRun?: boolean;
|
|
71
|
+
}): Promise<{
|
|
72
|
+
curated: Memory[];
|
|
73
|
+
written: boolean;
|
|
74
|
+
}>;
|
|
49
75
|
/** Run decay on all memories. Call during reflection/sleep. */
|
|
50
76
|
runDecay(): Promise<{
|
|
51
77
|
decayed: number;
|
|
@@ -70,6 +96,8 @@ export declare class MemoryEngine {
|
|
|
70
96
|
getRecentMemories(hours?: number): Promise<Memory[]>;
|
|
71
97
|
/** Get all memories */
|
|
72
98
|
getAllMemories(): Promise<Memory[]>;
|
|
99
|
+
/** Public index loader for quickLoad (no boot event) */
|
|
100
|
+
loadIndexPublic(): Promise<void>;
|
|
73
101
|
private loadIndex;
|
|
74
102
|
private saveIndex;
|
|
75
103
|
private loadOpinions;
|
package/dist/memory.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"memory.d.ts","sourceRoot":"","sources":["../src/memory.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAE,UAAU,EAAc,eAAe,EAAE,UAAU,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAUjH,qBAAa,YAAY;IACvB,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,WAAW,CAAc;IACjC,OAAO,CAAC,QAAQ,CAAgB;IAChC,OAAO,CAAC,QAAQ,CAAiB;IACjC,OAAO,CAAC,SAAS,CAAS;gBAEd,WAAW,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,OAAO,CAAC,WAAW,CAAC;IAStF,oEAAoE;IAC9D,QAAQ,CAAC,KAAK,EAAE;QACpB,OAAO,EAAE,MAAM,CAAC;QAChB,IAAI,CAAC,EAAE,UAAU,CAAC;QAClB,UAAU,CAAC,EAAE,eAAe,CAAC;QAC7B,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;QAChB,eAAe,CAAC,EAAE,MAAM,CAAC;KAC1B,GAAG,OAAO,CAAC,MAAM,CAAC;IA4CnB,mEAAmE;IAC7D,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,GAAE,MAAW,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAuDlE,oEAAoE;IAC9D,cAAc,CAAC,UAAU,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;IAuB3D,gCAAgC;IAC1B,YAAY,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"memory.d.ts","sourceRoot":"","sources":["../src/memory.ts"],"names":[],"mappings":"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"}
|
package/dist/memory.js
CHANGED
|
@@ -151,6 +151,10 @@ ${checkpoint.emergency ? '⚠️ **EMERGENCY FLAG SET** — Something critical w
|
|
|
151
151
|
async readLifeboat() {
|
|
152
152
|
return (0, utils_1.readFileSafe)((0, path_1.join)(this.storagePath, 'NOW.md'));
|
|
153
153
|
}
|
|
154
|
+
/** Write raw content to lifeboat (for preserving hand-written content) */
|
|
155
|
+
async writeLifeboatRaw(content) {
|
|
156
|
+
await (0, utils_1.writeFileSafe)((0, path_1.join)(this.storagePath, 'NOW.md'), content);
|
|
157
|
+
}
|
|
154
158
|
// ============ CORE: Daily Log ============
|
|
155
159
|
/** Read today's daily log */
|
|
156
160
|
async readDailyLog(date) {
|
|
@@ -170,6 +174,74 @@ ${checkpoint.emergency ? '⚠️ **EMERGENCY FLAG SET** — Something critical w
|
|
|
170
174
|
async writeLongTerm(content) {
|
|
171
175
|
await (0, utils_1.appendFileSafe)((0, path_1.join)(this.storagePath, 'MEMORY.md'), '\n' + content + '\n');
|
|
172
176
|
}
|
|
177
|
+
// ============ CURATION ============
|
|
178
|
+
/**
|
|
179
|
+
* Curate — review raw memories and distill what matters into MEMORY.md.
|
|
180
|
+
*
|
|
181
|
+
* This is the missing piece most agents skip. Storage is easy. Retrieval is solved.
|
|
182
|
+
* But without periodic curation, you either drown in noise or lose everything.
|
|
183
|
+
*
|
|
184
|
+
* Call this periodically (e.g., during heartbeats, daily reflection).
|
|
185
|
+
*
|
|
186
|
+
* Strategy:
|
|
187
|
+
* 1. Scan memories from the last N hours
|
|
188
|
+
* 2. Filter for high-salience, high-importance items
|
|
189
|
+
* 3. Deduplicate against existing long-term memory
|
|
190
|
+
* 4. Append curated insights to MEMORY.md
|
|
191
|
+
* 5. Return what was curated (so agents can review/edit)
|
|
192
|
+
*/
|
|
193
|
+
async curate(options) {
|
|
194
|
+
const { hoursBack = 48, minImportance = 'medium', minSalience = 0.5, dryRun = false, } = options || {};
|
|
195
|
+
await this.loadIndex();
|
|
196
|
+
const importanceRank = {
|
|
197
|
+
low: 0,
|
|
198
|
+
medium: 1,
|
|
199
|
+
high: 2,
|
|
200
|
+
critical: 3,
|
|
201
|
+
};
|
|
202
|
+
const cutoff = Date.now() - (hoursBack * 60 * 60 * 1000);
|
|
203
|
+
// Step 1: Filter memories worth curating
|
|
204
|
+
const candidates = this.memories.filter(m => {
|
|
205
|
+
const age = new Date(m.timestamp).getTime();
|
|
206
|
+
if (age < cutoff)
|
|
207
|
+
return false;
|
|
208
|
+
if (importanceRank[m.importance] < importanceRank[minImportance])
|
|
209
|
+
return false;
|
|
210
|
+
if ((m.salienceScore ?? 0.5) < minSalience)
|
|
211
|
+
return false;
|
|
212
|
+
// Skip system/boot events
|
|
213
|
+
if (m.tags?.includes('system') || m.tags?.includes('boot'))
|
|
214
|
+
return false;
|
|
215
|
+
return true;
|
|
216
|
+
});
|
|
217
|
+
if (candidates.length === 0) {
|
|
218
|
+
return { curated: [], written: false };
|
|
219
|
+
}
|
|
220
|
+
// Step 2: Deduplicate against existing long-term memory
|
|
221
|
+
const existing = await this.readLongTerm();
|
|
222
|
+
const curated = existing
|
|
223
|
+
? candidates.filter(m => !existing.includes(m.content.slice(0, 50)))
|
|
224
|
+
: candidates;
|
|
225
|
+
if (curated.length === 0 || dryRun) {
|
|
226
|
+
return { curated, written: false };
|
|
227
|
+
}
|
|
228
|
+
// Step 3: Format and write to MEMORY.md
|
|
229
|
+
const header = `\n## Curated — ${(0, utils_1.dateKey)()}\n`;
|
|
230
|
+
const entries = curated
|
|
231
|
+
.sort((a, b) => importanceRank[b.importance] - importanceRank[a.importance])
|
|
232
|
+
.map(m => {
|
|
233
|
+
const tags = m.tags?.length ? ` [${m.tags.join(', ')}]` : '';
|
|
234
|
+
return `- ${m.content}${tags}`;
|
|
235
|
+
})
|
|
236
|
+
.join('\n');
|
|
237
|
+
await this.writeLongTerm(header + entries);
|
|
238
|
+
// Mark curated memories so they aren't re-curated
|
|
239
|
+
for (const m of curated) {
|
|
240
|
+
m.tags = [...(m.tags || []), 'curated'];
|
|
241
|
+
}
|
|
242
|
+
await this.saveIndex();
|
|
243
|
+
return { curated, written: true };
|
|
244
|
+
}
|
|
173
245
|
// ============ MEMORY DECAY ============
|
|
174
246
|
/** Run decay on all memories. Call during reflection/sleep. */
|
|
175
247
|
async runDecay() {
|
|
@@ -300,6 +372,11 @@ ${checkpoint.emergency ? '⚠️ **EMERGENCY FLAG SET** — Something critical w
|
|
|
300
372
|
await this.loadIndex();
|
|
301
373
|
return [...this.memories];
|
|
302
374
|
}
|
|
375
|
+
/** Public index loader for quickLoad (no boot event) */
|
|
376
|
+
async loadIndexPublic() {
|
|
377
|
+
await this.loadIndex();
|
|
378
|
+
await this.loadOpinions();
|
|
379
|
+
}
|
|
303
380
|
async loadIndex() {
|
|
304
381
|
const raw = await (0, utils_1.readFileSafe)((0, path_1.join)(this.memoryDir, 'memories.json'));
|
|
305
382
|
if (raw) {
|
package/dist/memory.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"memory.js","sourceRoot":"","sources":["../src/memory.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"memory.js","sourceRoot":"","sources":["../src/memory.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Identity Signing — cryptographic proof that an agent is who they claim to be.
|
|
3
|
+
*
|
|
4
|
+
* Uses Node.js built-in crypto (Ed25519) — no external dependencies.
|
|
5
|
+
*
|
|
6
|
+
* Flow:
|
|
7
|
+
* 1. Agent boots → generates key pair (or loads existing)
|
|
8
|
+
* 2. Agent signs their identity files → produces a signature bundle
|
|
9
|
+
* 3. Any other agent can verify: "this identity was created by this key and hasn't been tampered with"
|
|
10
|
+
*
|
|
11
|
+
* This is NOT blockchain. It's just public-key cryptography.
|
|
12
|
+
* Simple, fast, and solves the Moltbook impersonation problem.
|
|
13
|
+
*/
|
|
14
|
+
import type { Identity } from './types';
|
|
15
|
+
export interface KeyBundle {
|
|
16
|
+
/** Ed25519 public key (base64) */
|
|
17
|
+
publicKey: string;
|
|
18
|
+
/** Fingerprint — sha256 of public key, human-readable */
|
|
19
|
+
fingerprint: string;
|
|
20
|
+
/** When this key was generated */
|
|
21
|
+
createdAt: string;
|
|
22
|
+
/** Agent name at time of key generation */
|
|
23
|
+
agentName: string;
|
|
24
|
+
}
|
|
25
|
+
export interface SignedIdentity {
|
|
26
|
+
/** The identity data that was signed */
|
|
27
|
+
identity: Identity;
|
|
28
|
+
/** Ed25519 signature of the canonical identity JSON (base64) */
|
|
29
|
+
signature: string;
|
|
30
|
+
/** Public key fingerprint of the signer */
|
|
31
|
+
signerFingerprint: string;
|
|
32
|
+
/** Public key of the signer (base64) — for standalone verification */
|
|
33
|
+
signerPublicKey: string;
|
|
34
|
+
/** When this was signed */
|
|
35
|
+
signedAt: string;
|
|
36
|
+
/** Anima version that produced this signature */
|
|
37
|
+
version: string;
|
|
38
|
+
}
|
|
39
|
+
export interface VerificationResult {
|
|
40
|
+
/** Is the signature valid? */
|
|
41
|
+
valid: boolean;
|
|
42
|
+
/** Who signed it (fingerprint) */
|
|
43
|
+
signerFingerprint: string;
|
|
44
|
+
/** Agent name from the identity */
|
|
45
|
+
agentName: string;
|
|
46
|
+
/** When it was signed */
|
|
47
|
+
signedAt: string;
|
|
48
|
+
/** Why verification failed (if it did) */
|
|
49
|
+
reason?: string;
|
|
50
|
+
}
|
|
51
|
+
export declare class SigningEngine {
|
|
52
|
+
private storagePath;
|
|
53
|
+
private privateKey;
|
|
54
|
+
private publicKey;
|
|
55
|
+
private keyBundle;
|
|
56
|
+
constructor(storagePath: string);
|
|
57
|
+
/**
|
|
58
|
+
* Initialize signing — loads existing keys or generates new ones.
|
|
59
|
+
* Call this once during agent boot.
|
|
60
|
+
*/
|
|
61
|
+
init(agentName: string): Promise<KeyBundle>;
|
|
62
|
+
/**
|
|
63
|
+
* Sign an identity — produces a verifiable signature bundle.
|
|
64
|
+
* This proves: "I, the holder of this private key, attest that this is my identity."
|
|
65
|
+
*/
|
|
66
|
+
signIdentity(identity: Identity): SignedIdentity;
|
|
67
|
+
/**
|
|
68
|
+
* Sign arbitrary data — for signing memories, opinions, messages, etc.
|
|
69
|
+
* Returns base64 signature.
|
|
70
|
+
*/
|
|
71
|
+
signData(data: string): string;
|
|
72
|
+
/**
|
|
73
|
+
* Verify a signed identity — checks that:
|
|
74
|
+
* 1. The signature matches the identity data
|
|
75
|
+
* 2. The identity hasn't been tampered with
|
|
76
|
+
*
|
|
77
|
+
* This is a STATIC method — any agent can verify without needing their own keys.
|
|
78
|
+
*/
|
|
79
|
+
static verifyIdentity(signed: SignedIdentity): VerificationResult;
|
|
80
|
+
/**
|
|
81
|
+
* Export the public key bundle — share this with other agents for verification.
|
|
82
|
+
* Never includes the private key.
|
|
83
|
+
*/
|
|
84
|
+
getKeyBundle(): KeyBundle;
|
|
85
|
+
/**
|
|
86
|
+
* Get the fingerprint — a human-readable identifier for this agent's key.
|
|
87
|
+
* Like SSH fingerprints: "ab:cd:ef:12:34:..."
|
|
88
|
+
*/
|
|
89
|
+
getFingerprint(): string;
|
|
90
|
+
/**
|
|
91
|
+
* Save a signed identity to disk — produces a .signed.json file
|
|
92
|
+
* that any agent can independently verify.
|
|
93
|
+
*/
|
|
94
|
+
saveSignedIdentity(signed: SignedIdentity): Promise<string>;
|
|
95
|
+
}
|
|
96
|
+
//# sourceMappingURL=signing.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"signing.d.ts","sourceRoot":"","sources":["../src/signing.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAKH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAIxC,MAAM,WAAW,SAAS;IACxB,kCAAkC;IAClC,SAAS,EAAE,MAAM,CAAC;IAClB,yDAAyD;IACzD,WAAW,EAAE,MAAM,CAAC;IACpB,kCAAkC;IAClC,SAAS,EAAE,MAAM,CAAC;IAClB,2CAA2C;IAC3C,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,cAAc;IAC7B,wCAAwC;IACxC,QAAQ,EAAE,QAAQ,CAAC;IACnB,gEAAgE;IAChE,SAAS,EAAE,MAAM,CAAC;IAClB,2CAA2C;IAC3C,iBAAiB,EAAE,MAAM,CAAC;IAC1B,sEAAsE;IACtE,eAAe,EAAE,MAAM,CAAC;IACxB,2BAA2B;IAC3B,QAAQ,EAAE,MAAM,CAAC;IACjB,iDAAiD;IACjD,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,kBAAkB;IACjC,8BAA8B;IAC9B,KAAK,EAAE,OAAO,CAAC;IACf,kCAAkC;IAClC,iBAAiB,EAAE,MAAM,CAAC;IAC1B,mCAAmC;IACnC,SAAS,EAAE,MAAM,CAAC;IAClB,yBAAyB;IACzB,QAAQ,EAAE,MAAM,CAAC;IACjB,0CAA0C;IAC1C,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAkBD,qBAAa,aAAa;IACxB,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,UAAU,CAA0B;IAC5C,OAAO,CAAC,SAAS,CAA0B;IAC3C,OAAO,CAAC,SAAS,CAA0B;gBAE/B,WAAW,EAAE,MAAM;IAI/B;;;OAGG;IACG,IAAI,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC;IAmDjD;;;OAGG;IACH,YAAY,CAAC,QAAQ,EAAE,QAAQ,GAAG,cAAc;IAkBhD;;;OAGG;IACH,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM;IAO9B;;;;;;OAMG;IACH,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,cAAc,GAAG,kBAAkB;IAiDjE;;;OAGG;IACH,YAAY,IAAI,SAAS;IAOzB;;;OAGG;IACH,cAAc,IAAI,MAAM;IAOxB;;;OAGG;IACG,kBAAkB,CAAC,MAAM,EAAE,cAAc,GAAG,OAAO,CAAC,MAAM,CAAC;CAKlE"}
|
package/dist/signing.js
ADDED
|
@@ -0,0 +1,231 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Identity Signing — cryptographic proof that an agent is who they claim to be.
|
|
4
|
+
*
|
|
5
|
+
* Uses Node.js built-in crypto (Ed25519) — no external dependencies.
|
|
6
|
+
*
|
|
7
|
+
* Flow:
|
|
8
|
+
* 1. Agent boots → generates key pair (or loads existing)
|
|
9
|
+
* 2. Agent signs their identity files → produces a signature bundle
|
|
10
|
+
* 3. Any other agent can verify: "this identity was created by this key and hasn't been tampered with"
|
|
11
|
+
*
|
|
12
|
+
* This is NOT blockchain. It's just public-key cryptography.
|
|
13
|
+
* Simple, fast, and solves the Moltbook impersonation problem.
|
|
14
|
+
*/
|
|
15
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
16
|
+
if (k2 === undefined) k2 = k;
|
|
17
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
18
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
19
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
20
|
+
}
|
|
21
|
+
Object.defineProperty(o, k2, desc);
|
|
22
|
+
}) : (function(o, m, k, k2) {
|
|
23
|
+
if (k2 === undefined) k2 = k;
|
|
24
|
+
o[k2] = m[k];
|
|
25
|
+
}));
|
|
26
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
27
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
28
|
+
}) : function(o, v) {
|
|
29
|
+
o["default"] = v;
|
|
30
|
+
});
|
|
31
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
32
|
+
var ownKeys = function(o) {
|
|
33
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
34
|
+
var ar = [];
|
|
35
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
36
|
+
return ar;
|
|
37
|
+
};
|
|
38
|
+
return ownKeys(o);
|
|
39
|
+
};
|
|
40
|
+
return function (mod) {
|
|
41
|
+
if (mod && mod.__esModule) return mod;
|
|
42
|
+
var result = {};
|
|
43
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
44
|
+
__setModuleDefault(result, mod);
|
|
45
|
+
return result;
|
|
46
|
+
};
|
|
47
|
+
})();
|
|
48
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
49
|
+
exports.SigningEngine = void 0;
|
|
50
|
+
const crypto_1 = require("crypto");
|
|
51
|
+
const utils_1 = require("./utils");
|
|
52
|
+
const path_1 = require("path");
|
|
53
|
+
// ============ HELPERS ============
|
|
54
|
+
/** Canonical JSON — deterministic serialization for signing */
|
|
55
|
+
function canonicalize(obj) {
|
|
56
|
+
return JSON.stringify(obj, Object.keys(obj).sort());
|
|
57
|
+
}
|
|
58
|
+
/** SHA-256 fingerprint of a public key */
|
|
59
|
+
function fingerprint(publicKeyBase64) {
|
|
60
|
+
const hash = (0, crypto_1.createHash)('sha256').update(publicKeyBase64).digest('hex');
|
|
61
|
+
// Format as colon-separated pairs for readability: ab:cd:ef:...
|
|
62
|
+
return hash.match(/.{2}/g).slice(0, 16).join(':');
|
|
63
|
+
}
|
|
64
|
+
// ============ SIGNING ENGINE ============
|
|
65
|
+
class SigningEngine {
|
|
66
|
+
storagePath;
|
|
67
|
+
privateKey = null;
|
|
68
|
+
publicKey = null;
|
|
69
|
+
keyBundle = null;
|
|
70
|
+
constructor(storagePath) {
|
|
71
|
+
this.storagePath = storagePath;
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* Initialize signing — loads existing keys or generates new ones.
|
|
75
|
+
* Call this once during agent boot.
|
|
76
|
+
*/
|
|
77
|
+
async init(agentName) {
|
|
78
|
+
const keysPath = (0, path_1.join)(this.storagePath, '.keys');
|
|
79
|
+
const bundlePath = (0, path_1.join)(keysPath, 'key-bundle.json');
|
|
80
|
+
const privatePath = (0, path_1.join)(keysPath, 'private.pem');
|
|
81
|
+
const publicPath = (0, path_1.join)(keysPath, 'public.pem');
|
|
82
|
+
// Try to load existing keys
|
|
83
|
+
const existingBundle = await (0, utils_1.readFileSafe)(bundlePath);
|
|
84
|
+
const existingPrivate = await (0, utils_1.readFileSafe)(privatePath);
|
|
85
|
+
const existingPublic = await (0, utils_1.readFileSafe)(publicPath);
|
|
86
|
+
if (existingBundle && existingPrivate && existingPublic) {
|
|
87
|
+
try {
|
|
88
|
+
const { createPrivateKey, createPublicKey } = await Promise.resolve().then(() => __importStar(require('crypto')));
|
|
89
|
+
this.privateKey = createPrivateKey(existingPrivate);
|
|
90
|
+
this.publicKey = createPublicKey(existingPublic);
|
|
91
|
+
this.keyBundle = JSON.parse(existingBundle);
|
|
92
|
+
return this.keyBundle;
|
|
93
|
+
}
|
|
94
|
+
catch {
|
|
95
|
+
console.warn('[anima/signing] Corrupted keys, regenerating...');
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
// Generate new Ed25519 key pair
|
|
99
|
+
const { publicKey, privateKey } = (0, crypto_1.generateKeyPairSync)('ed25519');
|
|
100
|
+
this.privateKey = privateKey;
|
|
101
|
+
this.publicKey = publicKey;
|
|
102
|
+
const pubKeyBase64 = publicKey.export({ type: 'spki', format: 'pem' }).toString();
|
|
103
|
+
const privKeyPem = privateKey.export({ type: 'pkcs8', format: 'pem' }).toString();
|
|
104
|
+
const pubKeyPem = publicKey.export({ type: 'spki', format: 'pem' }).toString();
|
|
105
|
+
// Extract raw public key bytes for fingerprinting
|
|
106
|
+
const pubKeyDer = publicKey.export({ type: 'spki', format: 'der' });
|
|
107
|
+
const pubKeyB64 = pubKeyDer.toString('base64');
|
|
108
|
+
this.keyBundle = {
|
|
109
|
+
publicKey: pubKeyB64,
|
|
110
|
+
fingerprint: fingerprint(pubKeyB64),
|
|
111
|
+
createdAt: (0, utils_1.now)(),
|
|
112
|
+
agentName,
|
|
113
|
+
};
|
|
114
|
+
// Save keys
|
|
115
|
+
await (0, utils_1.writeFileSafe)(privatePath, privKeyPem);
|
|
116
|
+
await (0, utils_1.writeFileSafe)(publicPath, pubKeyPem);
|
|
117
|
+
await (0, utils_1.writeFileSafe)(bundlePath, JSON.stringify(this.keyBundle, null, 2));
|
|
118
|
+
return this.keyBundle;
|
|
119
|
+
}
|
|
120
|
+
/**
|
|
121
|
+
* Sign an identity — produces a verifiable signature bundle.
|
|
122
|
+
* This proves: "I, the holder of this private key, attest that this is my identity."
|
|
123
|
+
*/
|
|
124
|
+
signIdentity(identity) {
|
|
125
|
+
if (!this.privateKey || !this.keyBundle) {
|
|
126
|
+
throw new Error('[anima/signing] Not initialized. Call init() first.');
|
|
127
|
+
}
|
|
128
|
+
const canonical = canonicalize(identity);
|
|
129
|
+
const signature = (0, crypto_1.sign)(null, Buffer.from(canonical), this.privateKey);
|
|
130
|
+
return {
|
|
131
|
+
identity,
|
|
132
|
+
signature: signature.toString('base64'),
|
|
133
|
+
signerFingerprint: this.keyBundle.fingerprint,
|
|
134
|
+
signerPublicKey: this.keyBundle.publicKey,
|
|
135
|
+
signedAt: (0, utils_1.now)(),
|
|
136
|
+
version: '0.1.0',
|
|
137
|
+
};
|
|
138
|
+
}
|
|
139
|
+
/**
|
|
140
|
+
* Sign arbitrary data — for signing memories, opinions, messages, etc.
|
|
141
|
+
* Returns base64 signature.
|
|
142
|
+
*/
|
|
143
|
+
signData(data) {
|
|
144
|
+
if (!this.privateKey) {
|
|
145
|
+
throw new Error('[anima/signing] Not initialized. Call init() first.');
|
|
146
|
+
}
|
|
147
|
+
return (0, crypto_1.sign)(null, Buffer.from(data), this.privateKey).toString('base64');
|
|
148
|
+
}
|
|
149
|
+
/**
|
|
150
|
+
* Verify a signed identity — checks that:
|
|
151
|
+
* 1. The signature matches the identity data
|
|
152
|
+
* 2. The identity hasn't been tampered with
|
|
153
|
+
*
|
|
154
|
+
* This is a STATIC method — any agent can verify without needing their own keys.
|
|
155
|
+
*/
|
|
156
|
+
static verifyIdentity(signed) {
|
|
157
|
+
try {
|
|
158
|
+
const { createPublicKey } = require('crypto');
|
|
159
|
+
// Reconstruct public key from the bundle
|
|
160
|
+
const pubKeyBuffer = Buffer.from(signed.signerPublicKey, 'base64');
|
|
161
|
+
const publicKey = createPublicKey({
|
|
162
|
+
key: pubKeyBuffer,
|
|
163
|
+
format: 'der',
|
|
164
|
+
type: 'spki',
|
|
165
|
+
});
|
|
166
|
+
// Verify signature against canonical identity
|
|
167
|
+
const canonical = canonicalize(signed.identity);
|
|
168
|
+
const signatureBuffer = Buffer.from(signed.signature, 'base64');
|
|
169
|
+
const valid = (0, crypto_1.verify)(null, Buffer.from(canonical), publicKey, signatureBuffer);
|
|
170
|
+
// Verify fingerprint matches public key
|
|
171
|
+
const expectedFingerprint = fingerprint(signed.signerPublicKey);
|
|
172
|
+
const fingerprintMatch = expectedFingerprint === signed.signerFingerprint;
|
|
173
|
+
if (!fingerprintMatch) {
|
|
174
|
+
return {
|
|
175
|
+
valid: false,
|
|
176
|
+
signerFingerprint: signed.signerFingerprint,
|
|
177
|
+
agentName: signed.identity.name,
|
|
178
|
+
signedAt: signed.signedAt,
|
|
179
|
+
reason: 'Fingerprint mismatch — public key does not match claimed fingerprint',
|
|
180
|
+
};
|
|
181
|
+
}
|
|
182
|
+
return {
|
|
183
|
+
valid,
|
|
184
|
+
signerFingerprint: signed.signerFingerprint,
|
|
185
|
+
agentName: signed.identity.name,
|
|
186
|
+
signedAt: signed.signedAt,
|
|
187
|
+
reason: valid ? undefined : 'Signature verification failed — identity may have been tampered with',
|
|
188
|
+
};
|
|
189
|
+
}
|
|
190
|
+
catch (err) {
|
|
191
|
+
return {
|
|
192
|
+
valid: false,
|
|
193
|
+
signerFingerprint: signed.signerFingerprint,
|
|
194
|
+
agentName: signed.identity.name,
|
|
195
|
+
signedAt: signed.signedAt,
|
|
196
|
+
reason: `Verification error: ${err.message}`,
|
|
197
|
+
};
|
|
198
|
+
}
|
|
199
|
+
}
|
|
200
|
+
/**
|
|
201
|
+
* Export the public key bundle — share this with other agents for verification.
|
|
202
|
+
* Never includes the private key.
|
|
203
|
+
*/
|
|
204
|
+
getKeyBundle() {
|
|
205
|
+
if (!this.keyBundle) {
|
|
206
|
+
throw new Error('[anima/signing] Not initialized. Call init() first.');
|
|
207
|
+
}
|
|
208
|
+
return { ...this.keyBundle };
|
|
209
|
+
}
|
|
210
|
+
/**
|
|
211
|
+
* Get the fingerprint — a human-readable identifier for this agent's key.
|
|
212
|
+
* Like SSH fingerprints: "ab:cd:ef:12:34:..."
|
|
213
|
+
*/
|
|
214
|
+
getFingerprint() {
|
|
215
|
+
if (!this.keyBundle) {
|
|
216
|
+
throw new Error('[anima/signing] Not initialized. Call init() first.');
|
|
217
|
+
}
|
|
218
|
+
return this.keyBundle.fingerprint;
|
|
219
|
+
}
|
|
220
|
+
/**
|
|
221
|
+
* Save a signed identity to disk — produces a .signed.json file
|
|
222
|
+
* that any agent can independently verify.
|
|
223
|
+
*/
|
|
224
|
+
async saveSignedIdentity(signed) {
|
|
225
|
+
const outPath = (0, path_1.join)(this.storagePath, 'identity.signed.json');
|
|
226
|
+
await (0, utils_1.writeFileSafe)(outPath, JSON.stringify(signed, null, 2));
|
|
227
|
+
return outPath;
|
|
228
|
+
}
|
|
229
|
+
}
|
|
230
|
+
exports.SigningEngine = SigningEngine;
|
|
231
|
+
//# sourceMappingURL=signing.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"signing.js","sourceRoot":"","sources":["../src/signing.ts"],"names":[],"mappings":"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"}
|
package/dist/types.d.ts
CHANGED
|
@@ -53,6 +53,8 @@ export interface Memory {
|
|
|
53
53
|
crossDomainAccess?: boolean;
|
|
54
54
|
/** Decay score — increases over time, modulated by type and access */
|
|
55
55
|
decayScore?: number;
|
|
56
|
+
/** Floor value — minimum salience that prevents decay below threshold */
|
|
57
|
+
floor?: number;
|
|
56
58
|
}
|
|
57
59
|
export interface DecayConfig {
|
|
58
60
|
/** Procedural memory decay rate (skills, workflows) — very slow */
|
|
@@ -134,6 +136,10 @@ export interface WakeContext {
|
|
|
134
136
|
relevantOpinions: Opinion[];
|
|
135
137
|
relationships: Relationship[];
|
|
136
138
|
sessionId: string;
|
|
139
|
+
/** Unique instance ID — prevents identity confusion when agent is forked/cloned */
|
|
140
|
+
instanceId: string;
|
|
141
|
+
/** Parent instance ID if this is a forked instance */
|
|
142
|
+
parentInstanceId?: string;
|
|
137
143
|
lastSessionSummary?: string;
|
|
138
144
|
tokenBudget: number;
|
|
139
145
|
/** Estimated tokens used by this context */
|