@aman_asmuei/aman-agent 0.28.0 → 0.29.0

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 CHANGED
@@ -47,7 +47,7 @@
47
47
  <details>
48
48
  <summary><strong>Table of Contents</strong></summary>
49
49
 
50
- - [What's New](#whats-new-in-v0280)
50
+ - [What's New](#whats-new-in-v0290)
51
51
  - [The Problem](#the-problem)
52
52
  - [The Solution](#the-solution)
53
53
  - [Quick Start](#quick-start)
@@ -80,27 +80,25 @@
80
80
 
81
81
  ---
82
82
 
83
- ## What's New in v0.28.0
83
+ ## What's New in v0.29.0
84
84
 
85
- > **The learning loop is complete.**
85
+ > **Ecosystem parity the knowledge graph wires up.**
86
86
 
87
- aman-agent now closes the full crystallization + adaptive intelligence cycle. Rejected skills are remembered. Repeated suggestions get reinforced. Near-duplicates get merged with version history. Nudges adapt to your actual response patterns. Frustration is predicted before it happens. All zero or near-zero LLM overhead.
87
+ Memories now auto-relate after extraction, building a knowledge graph of connected insights across sessions. Admin tools for memory health diagnostics, repair, config, and reflection are fully wired. Stale references cleaned up.
88
88
 
89
89
  | Feature | What it does |
90
90
  |:---|:---|
91
- | **Rejection feedback loop** | Rejected skill names injected into postmortem promptagent won't suggest them again |
92
- | **Cross-session reinforcement** | Tracks how many times each skill candidate appears; auto-recommends after 3+ suggestions |
93
- | **Skill merging + versioning** | Near-duplicate skills prompt merge instead of skip; old versions archived as `.v1`, `.v2`, etc. |
94
- | **Adaptive nudge learning** | Wellbeing nudges that consistently precede low-rated sessions get automatically suppressed |
95
- | **Semantic trigger matching** | TF-IDF cosine similarity alongside keyword matching — skills trigger on meaning, not just words |
96
- | **Feed-forward v2** | Preemptive context injection from frustration correlations (late-night, long sessions) |
97
- | **LLM-based sentiment** | Piggybacks tone analysis on memory extraction — zero extra LLM calls |
98
- | **Burnout predictor** | Forecasts burnout risk from session patterns; surfaces care nudge when risk > 70% |
99
- | **`/skills list --auto`** | Now shows reinforcement count (★) and version history per skill |
91
+ | **Auto-relate memories** | After each successful extraction, `autoRelateMemory` finds and links semantically similar memories builds a knowledge graph automatically |
92
+ | **Stale reference cleanup** | `aman-claude-code` `aman-plugin` across all docs |
100
93
 
101
94
  <details>
102
95
  <summary><strong>Highlights from earlier releases</strong></summary>
103
96
 
97
+ **v0.28 — Learning loop completion**
98
+ - Rejection feedback, cross-session reinforcement, skill merging + versioning
99
+ - Adaptive nudge learning, semantic trigger matching, feed-forward v2
100
+ - LLM-based sentiment, burnout predictor, `/skills list --auto` enhancements
101
+
104
102
  **v0.27 — Dynamic user model**
105
103
  - Cross-session profile: trust (EMA), sentiment baseline, energy distribution
106
104
  - Feed-forward personalized energy/mode overrides
@@ -906,7 +904,7 @@ The agent adapts its personality in real-time based on signals:
906
904
  - **User sentiment**: detects frustration, excitement, confusion, fatigue from keywords
907
905
  - **Wellbeing nudges**: suggests breaks when you've been at it too long, gently mentions sleep during late-night sessions
908
906
 
909
- All state syncs to acore's Dynamics section — works across aman-agent, achannel, and aman-claude-code.
907
+ All state syncs to acore's Dynamics section — works across aman-agent, achannel, and aman-plugin.
910
908
 
911
909
  ### Auto-Triggered Skills
912
910
 
package/dist/index.js CHANGED
@@ -6045,7 +6045,7 @@ function handleReset(action) {
6045
6045
  function handleUpdate() {
6046
6046
  try {
6047
6047
  const current = execFileSync3("npm", ["view", "@aman_asmuei/aman-agent", "version"], { encoding: "utf-8" }).trim();
6048
- const local = true ? "0.28.0" : "unknown";
6048
+ const local = true ? "0.29.0" : "unknown";
6049
6049
  if (current === local) {
6050
6050
  return { handled: true, output: `${pc5.green("Up to date")} \u2014 v${local}` };
6051
6051
  }
@@ -7575,7 +7575,7 @@ function matchKnowledge(userInput) {
7575
7575
  }
7576
7576
 
7577
7577
  // src/memory-extractor.ts
7578
- import { reflect as reflect2, isReflectionDue as isReflectionDue2 } from "@aman_asmuei/amem-core";
7578
+ import { reflect as reflect2, isReflectionDue as isReflectionDue2, autoRelateMemory } from "@aman_asmuei/amem-core";
7579
7579
  var VALID_TYPES = /* @__PURE__ */ new Set(["preference", "fact", "pattern", "topology", "decision", "correction"]);
7580
7580
  var MIN_RESPONSE_LENGTH = 50;
7581
7581
  var MIN_TURNS_BETWEEN_EMPTY = 3;
@@ -7703,6 +7703,10 @@ Assistant: ${assistantResponse.slice(0, 2e3)}`;
7703
7703
  if (storeResult.action !== "private") {
7704
7704
  stored++;
7705
7705
  log.debug("extractor", "Stored " + candidate.type + ": " + candidate.content);
7706
+ try {
7707
+ autoRelateMemory(getDb(), storeResult.id);
7708
+ } catch {
7709
+ }
7706
7710
  if (candidate.type === "pattern" || candidate.type === "preference") {
7707
7711
  const skillMatch = matchPatternToSkill(candidate.content, candidate.tags);
7708
7712
  if (skillMatch) {
@@ -9020,7 +9024,7 @@ function bootstrapEcosystem() {
9020
9024
  return true;
9021
9025
  }
9022
9026
  var program = new Command();
9023
- program.name("aman-agent").description("Your AI companion, running locally").version("0.28.0").option("--model <model>", "Override LLM model").option("--budget <tokens>", "Token budget for system prompt (default: 8000)", parseInt).option("--profile <name>", "Use a specific agent profile (e.g., coder, writer, researcher)").action(async (options) => {
9027
+ program.name("aman-agent").description("Your AI companion, running locally").version("0.29.0").option("--model <model>", "Override LLM model").option("--budget <tokens>", "Token budget for system prompt (default: 8000)", parseInt).option("--profile <name>", "Use a specific agent profile (e.g., coder, writer, researcher)").action(async (options) => {
9024
9028
  p3.intro(pc8.bold("aman agent") + pc8.dim(" \u2014 your AI companion"));
9025
9029
  let config = loadConfig();
9026
9030
  if (!config) {