@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.
Files changed (84) hide show
  1. package/README.md +148 -113
  2. package/dist/alme/core/KnowledgeGraph.d.ts +58 -0
  3. package/dist/alme/core/KnowledgeGraph.d.ts.map +1 -0
  4. package/dist/alme/core/KnowledgeGraph.js +114 -0
  5. package/dist/alme/core/KnowledgeGraph.js.map +1 -0
  6. package/dist/alme/core/MetacognitionEngine.d.ts +35 -0
  7. package/dist/alme/core/MetacognitionEngine.d.ts.map +1 -0
  8. package/dist/alme/core/MetacognitionEngine.js +90 -0
  9. package/dist/alme/core/MetacognitionEngine.js.map +1 -0
  10. package/dist/alme/core/PerformanceAnalyzer.d.ts +68 -0
  11. package/dist/alme/core/PerformanceAnalyzer.d.ts.map +1 -0
  12. package/dist/alme/core/PerformanceAnalyzer.js +142 -0
  13. package/dist/alme/core/PerformanceAnalyzer.js.map +1 -0
  14. package/dist/alme/core/SelfReflectionModule.d.ts +41 -0
  15. package/dist/alme/core/SelfReflectionModule.d.ts.map +1 -0
  16. package/dist/alme/core/SelfReflectionModule.js +101 -0
  17. package/dist/alme/core/SelfReflectionModule.js.map +1 -0
  18. package/dist/alme/core/SkillProfile.d.ts +52 -0
  19. package/dist/alme/core/SkillProfile.d.ts.map +1 -0
  20. package/dist/alme/core/SkillProfile.js +97 -0
  21. package/dist/alme/core/SkillProfile.js.map +1 -0
  22. package/dist/anima.d.ts +57 -0
  23. package/dist/anima.d.ts.map +1 -1
  24. package/dist/anima.js +106 -8
  25. package/dist/anima.js.map +1 -1
  26. package/dist/codegen/ArchitecturalDesignGenerator.d.ts +77 -0
  27. package/dist/codegen/ArchitecturalDesignGenerator.d.ts.map +1 -0
  28. package/dist/codegen/ArchitecturalDesignGenerator.js +194 -0
  29. package/dist/codegen/ArchitecturalDesignGenerator.js.map +1 -0
  30. package/dist/codegen/ContextAwareGenerator.d.ts +67 -0
  31. package/dist/codegen/ContextAwareGenerator.d.ts.map +1 -0
  32. package/dist/codegen/ContextAwareGenerator.js +158 -0
  33. package/dist/codegen/ContextAwareGenerator.js.map +1 -0
  34. package/dist/codegen/SystemInteractionSimulator.d.ts +87 -0
  35. package/dist/codegen/SystemInteractionSimulator.d.ts.map +1 -0
  36. package/dist/codegen/SystemInteractionSimulator.js +203 -0
  37. package/dist/codegen/SystemInteractionSimulator.js.map +1 -0
  38. package/dist/codegen/multiStageCodegen.d.ts +30 -0
  39. package/dist/codegen/multiStageCodegen.d.ts.map +1 -0
  40. package/dist/codegen/multiStageCodegen.js +60 -0
  41. package/dist/codegen/multiStageCodegen.js.map +1 -0
  42. package/dist/esm/anima.js +340 -0
  43. package/dist/esm/anima.js.map +1 -0
  44. package/dist/esm/identity.js +205 -0
  45. package/dist/esm/identity.js.map +1 -0
  46. package/dist/esm/index.js +14 -0
  47. package/dist/esm/index.js.map +1 -0
  48. package/dist/esm/memory.js +429 -0
  49. package/dist/esm/memory.js.map +1 -0
  50. package/dist/esm/reflection.js +86 -0
  51. package/dist/esm/reflection.js.map +1 -0
  52. package/dist/esm/signing.js +194 -0
  53. package/dist/esm/signing.js.map +1 -0
  54. package/dist/esm/types.js +6 -0
  55. package/dist/esm/types.js.map +1 -0
  56. package/dist/esm/utils.js +155 -0
  57. package/dist/esm/utils.js.map +1 -0
  58. package/dist/ideation/InnovationEngine.d.ts +47 -0
  59. package/dist/ideation/InnovationEngine.d.ts.map +1 -0
  60. package/dist/ideation/InnovationEngine.js +127 -0
  61. package/dist/ideation/InnovationEngine.js.map +1 -0
  62. package/dist/index.d.ts +2 -0
  63. package/dist/index.d.ts.map +1 -1
  64. package/dist/index.js +3 -1
  65. package/dist/index.js.map +1 -1
  66. package/dist/learning-tracker/LearningVisualizer.d.ts +26 -0
  67. package/dist/learning-tracker/LearningVisualizer.d.ts.map +1 -0
  68. package/dist/learning-tracker/LearningVisualizer.js +61 -0
  69. package/dist/learning-tracker/LearningVisualizer.js.map +1 -0
  70. package/dist/memory.d.ts +28 -0
  71. package/dist/memory.d.ts.map +1 -1
  72. package/dist/memory.js +77 -0
  73. package/dist/memory.js.map +1 -1
  74. package/dist/signing.d.ts +96 -0
  75. package/dist/signing.d.ts.map +1 -0
  76. package/dist/signing.js +231 -0
  77. package/dist/signing.js.map +1 -0
  78. package/dist/types.d.ts +6 -0
  79. package/dist/types.d.ts.map +1 -1
  80. package/dist/utils.d.ts +8 -2
  81. package/dist/utils.d.ts.map +1 -1
  82. package/dist/utils.js +28 -9
  83. package/dist/utils.js.map +1 -1
  84. 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;
@@ -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;IAM5C,6BAA6B;IACvB,YAAY,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAKzD,iCAAiC;IAC3B,gBAAgB,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAMhD,gDAAgD;IAC1C,YAAY,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAI5C,0BAA0B;IACpB,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAMnD,+DAA+D;IACzD,QAAQ,IAAI,OAAO,CAAC;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;IA2D9E,kCAAkC;IAC5B,KAAK,CAAC,KAAK,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,OAAO,CAAC;IAiC5F,uBAAuB;IACjB,WAAW,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;IAOvC,wDAAwD;IAClD,cAAc,CAAC,OAAO,EAAE;QAC5B,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,aAAa,CAAC,EAAE,MAAM,CAAC;QACvB,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;KAC5B,GAAG,OAAO,CAAC,IAAI,CAAC;IA6BjB,0CAA0C;IACpC,iBAAiB,CAAC,KAAK,GAAE,MAAW,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAQ9D,uBAAuB;IACjB,cAAc,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;YAK3B,SAAS;YAWT,SAAS;YAOT,YAAY;YAWZ,YAAY;IAO1B,OAAO,CAAC,eAAe;IASvB,OAAO,CAAC,kBAAkB;IAU1B,OAAO,CAAC,cAAc;CAOvB"}
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) {
@@ -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"}
@@ -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 */