@aman_asmuei/aman 0.1.0 → 0.1.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 +62 -26
- package/dist/index.js +59 -5
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
|
|
10
10
|
### Your complete AI companion.
|
|
11
11
|
|
|
12
|
-
Identity + Memory + Tools — one command, any AI.
|
|
12
|
+
Identity + Memory + Tools + Workflows + Guardrails + Evaluation — one command, any AI.
|
|
13
13
|
|
|
14
14
|
<br>
|
|
15
15
|
|
|
@@ -31,16 +31,14 @@ Sets up your complete AI ecosystem:
|
|
|
31
31
|
```
|
|
32
32
|
◆ aman — your complete AI companion
|
|
33
33
|
|
|
34
|
-
✔
|
|
35
|
-
✔ Memory:
|
|
36
|
-
✔ Tools:
|
|
34
|
+
✔ Identity: created ~/.acore/core.md
|
|
35
|
+
✔ Memory: run npx @aman_asmuei/amem to enable
|
|
36
|
+
✔ Tools: run npx @aman_asmuei/akit add github
|
|
37
|
+
✔ Workflows: run npx @aman_asmuei/aflow init
|
|
38
|
+
✔ Guardrails: run npx @aman_asmuei/arules init
|
|
39
|
+
✔ Evaluation: run npx @aman_asmuei/aeval init
|
|
37
40
|
|
|
38
41
|
✔ Your AI companion is ready.
|
|
39
|
-
|
|
40
|
-
aman status See your full ecosystem
|
|
41
|
-
acore customize Change personality
|
|
42
|
-
akit add <tool> Add tools
|
|
43
|
-
npx @aman_asmuei/amem Enable automated memory
|
|
44
42
|
```
|
|
45
43
|
|
|
46
44
|
---
|
|
@@ -49,17 +47,23 @@ Sets up your complete AI ecosystem:
|
|
|
49
47
|
|
|
50
48
|
```
|
|
51
49
|
aman
|
|
52
|
-
├── acore
|
|
53
|
-
├── amem
|
|
54
|
-
|
|
50
|
+
├── acore → identity → who your AI IS
|
|
51
|
+
├── amem → memory → what your AI KNOWS
|
|
52
|
+
├── akit → tools → what your AI CAN DO
|
|
53
|
+
├── aflow → workflows → HOW your AI works
|
|
54
|
+
├── arules → guardrails → what your AI WON'T do
|
|
55
|
+
└── aeval → evaluation → how GOOD your AI is
|
|
55
56
|
```
|
|
56
57
|
|
|
57
58
|
| Layer | Package | What it does |
|
|
58
59
|
|:------|:--------|:-------------|
|
|
59
60
|
| Identity | [acore](https://github.com/amanasmuei/acore) | Personality, values, relationship memory |
|
|
60
61
|
| Memory | [amem](https://github.com/amanasmuei/amem) | Automated knowledge storage (MCP) |
|
|
61
|
-
| Tools | [akit](https://github.com/amanasmuei/akit) |
|
|
62
|
-
|
|
|
62
|
+
| Tools | [akit](https://github.com/amanasmuei/akit) | 15 portable AI tools (MCP + manual fallback) |
|
|
63
|
+
| Workflows | [aflow](https://github.com/amanasmuei/aflow) | Reusable AI workflows (code review, bug fix, etc.) |
|
|
64
|
+
| Guardrails | [arules](https://github.com/amanasmuei/arules) | Safety boundaries and permissions |
|
|
65
|
+
| Evaluation | [aeval](https://github.com/amanasmuei/aeval) | Relationship tracking and session logging |
|
|
66
|
+
| **Unified** | **[aman](https://github.com/amanasmuei/aman)** | **One command to set up everything** |
|
|
63
67
|
|
|
64
68
|
Each package works independently. `aman` is the front door.
|
|
65
69
|
|
|
@@ -70,18 +74,22 @@ Each package works independently. `aman` is the front door.
|
|
|
70
74
|
| Command | What it does |
|
|
71
75
|
|:--------|:------------|
|
|
72
76
|
| `aman` | First run: setup. After that: show status |
|
|
73
|
-
| `aman setup` | Set up
|
|
74
|
-
| `aman status` | View
|
|
77
|
+
| `aman setup` | Set up the full ecosystem |
|
|
78
|
+
| `aman status` | View ecosystem status (all 6 layers) |
|
|
75
79
|
|
|
76
80
|
After setup, use the individual CLIs for detailed management:
|
|
77
81
|
|
|
78
82
|
```bash
|
|
79
83
|
acore customize # change AI personality
|
|
80
|
-
acore
|
|
84
|
+
acore doctor # health check identity
|
|
81
85
|
akit add github # add tools
|
|
82
86
|
akit search database # find tools
|
|
83
|
-
|
|
84
|
-
|
|
87
|
+
aflow init # set up AI workflows
|
|
88
|
+
aflow list # view workflows
|
|
89
|
+
arules init # set up guardrails
|
|
90
|
+
arules add Coding # add a coding rule
|
|
91
|
+
aeval log # log a session
|
|
92
|
+
aeval report # view relationship report
|
|
85
93
|
```
|
|
86
94
|
|
|
87
95
|
---
|
|
@@ -93,19 +101,47 @@ $ aman status
|
|
|
93
101
|
|
|
94
102
|
◆ aman — ecosystem status
|
|
95
103
|
|
|
96
|
-
✔ Identity:
|
|
97
|
-
✔ Memory:
|
|
98
|
-
✔ Tools:
|
|
99
|
-
✔
|
|
104
|
+
✔ Identity: Companion + Aman
|
|
105
|
+
✔ Memory: amem connected (automated)
|
|
106
|
+
✔ Tools: 3 installed
|
|
107
|
+
✔ Workflows: 4 defined
|
|
108
|
+
✔ Guardrails: 24 rules
|
|
109
|
+
✔ Evaluation: 12 sessions tracked
|
|
110
|
+
✔ Platform: Claude Code (auto-save + MCP)
|
|
111
|
+
|
|
112
|
+
Ecosystem: Complete ecosystem (6/6 layers active)
|
|
113
|
+
```
|
|
114
|
+
|
|
115
|
+
---
|
|
116
|
+
|
|
117
|
+
## How It All Connects
|
|
100
118
|
|
|
101
|
-
|
|
119
|
+
Every layer is a markdown file. acore auto-injects all of them into your AI's system prompt:
|
|
120
|
+
|
|
121
|
+
```
|
|
122
|
+
CLAUDE.md / .cursorrules / .windsurfrules
|
|
123
|
+
├── core.md (identity — acore)
|
|
124
|
+
├── context.md (project — acore)
|
|
125
|
+
├── kit.md (tools — akit)
|
|
126
|
+
├── flow.md (workflows — aflow)
|
|
127
|
+
└── rules.md (guardrails — arules)
|
|
102
128
|
```
|
|
103
129
|
|
|
130
|
+
Your AI reads these files and behaves accordingly. Switch platforms? Bring your files.
|
|
131
|
+
|
|
132
|
+
---
|
|
133
|
+
|
|
134
|
+
## Not a Developer?
|
|
135
|
+
|
|
136
|
+
Generate your AI identity from a browser — no terminal needed:
|
|
137
|
+
|
|
138
|
+
https://amanasmuei.github.io/acore/
|
|
139
|
+
|
|
104
140
|
---
|
|
105
141
|
|
|
106
142
|
## Works With
|
|
107
143
|
|
|
108
|
-
ChatGPT, Claude, Claude Code, Cursor, Windsurf, Gemini, and any AI that accepts a system prompt.
|
|
144
|
+
ChatGPT, Claude, Claude Code, Cursor, Windsurf, Gemini, Ollama, and any AI that accepts a system prompt.
|
|
109
145
|
|
|
110
146
|
## License
|
|
111
147
|
|
|
@@ -115,6 +151,6 @@ ChatGPT, Claude, Claude Code, Cursor, Windsurf, Gemini, and any AI that accepts
|
|
|
115
151
|
|
|
116
152
|
<div align="center">
|
|
117
153
|
|
|
118
|
-
**One command.
|
|
154
|
+
**One command. 6 layers. Any AI. Your companion.**
|
|
119
155
|
|
|
120
156
|
</div>
|
package/dist/index.js
CHANGED
|
@@ -104,10 +104,41 @@ function detectEcosystem() {
|
|
|
104
104
|
}
|
|
105
105
|
}
|
|
106
106
|
}
|
|
107
|
+
const aflowPath = path.join(home, ".aflow", "flow.md");
|
|
108
|
+
let aflowWorkflowCount = 0;
|
|
109
|
+
if (fs.existsSync(aflowPath)) {
|
|
110
|
+
try {
|
|
111
|
+
const content = fs.readFileSync(aflowPath, "utf-8");
|
|
112
|
+
aflowWorkflowCount = (content.match(/^## /gm) || []).length;
|
|
113
|
+
} catch {
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
const arulesPath = path.join(home, ".arules", "rules.md");
|
|
117
|
+
let arulesRuleCount = 0;
|
|
118
|
+
if (fs.existsSync(arulesPath)) {
|
|
119
|
+
try {
|
|
120
|
+
const content = fs.readFileSync(arulesPath, "utf-8");
|
|
121
|
+
arulesRuleCount = (content.match(/^- /gm) || []).length;
|
|
122
|
+
} catch {
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
const aevalPath = path.join(home, ".aeval", "eval.md");
|
|
126
|
+
let aevalSessions = 0;
|
|
127
|
+
if (fs.existsSync(aevalPath)) {
|
|
128
|
+
try {
|
|
129
|
+
const content = fs.readFileSync(aevalPath, "utf-8");
|
|
130
|
+
const match = content.match(/- Sessions: (\d+)/);
|
|
131
|
+
aevalSessions = match ? parseInt(match[1], 10) : 0;
|
|
132
|
+
} catch {
|
|
133
|
+
}
|
|
134
|
+
}
|
|
107
135
|
return {
|
|
108
136
|
acore: { installed: fs.existsSync(acorePath), path: acorePath },
|
|
109
137
|
amem: { installed: amemInstalled },
|
|
110
|
-
akit: { installed: fs.existsSync(akitPath), path: akitPath, toolCount: akitToolCount }
|
|
138
|
+
akit: { installed: fs.existsSync(akitPath), path: akitPath, toolCount: akitToolCount },
|
|
139
|
+
aflow: { installed: fs.existsSync(aflowPath), path: aflowPath, workflowCount: aflowWorkflowCount },
|
|
140
|
+
arules: { installed: fs.existsSync(arulesPath), path: arulesPath, ruleCount: arulesRuleCount },
|
|
141
|
+
aeval: { installed: fs.existsSync(aevalPath), path: aevalPath, sessions: aevalSessions }
|
|
111
142
|
};
|
|
112
143
|
}
|
|
113
144
|
|
|
@@ -350,6 +381,11 @@ async function setupCommand() {
|
|
|
350
381
|
} else {
|
|
351
382
|
p.log.info(`Tools: run ${pc.bold("npx @aman_asmuei/akit add github")} to add capabilities`);
|
|
352
383
|
}
|
|
384
|
+
if (ecosystem.aflow.installed) {
|
|
385
|
+
p.log.success(`Workflows: ${ecosystem.aflow.workflowCount} defined`);
|
|
386
|
+
} else {
|
|
387
|
+
p.log.info(`Workflows: run ${pc.bold("npx @aman_asmuei/aflow init")} to add AI workflows`);
|
|
388
|
+
}
|
|
353
389
|
const card = [
|
|
354
390
|
"",
|
|
355
391
|
` ${pc.green("\u2714")} Your AI companion is ready.`,
|
|
@@ -390,6 +426,21 @@ function statusCommand() {
|
|
|
390
426
|
} else {
|
|
391
427
|
p2.log.warning(`Tools: none \u2014 ${pc2.dim("npx @aman_asmuei/akit add github")}`);
|
|
392
428
|
}
|
|
429
|
+
if (ecosystem.aflow.installed) {
|
|
430
|
+
p2.log.success(`Workflows: ${ecosystem.aflow.workflowCount} defined \u2014 ${pc2.dim("aflow list for details")}`);
|
|
431
|
+
} else {
|
|
432
|
+
p2.log.warning(`Workflows: none \u2014 ${pc2.dim("npx @aman_asmuei/aflow init")}`);
|
|
433
|
+
}
|
|
434
|
+
if (ecosystem.arules.installed) {
|
|
435
|
+
p2.log.success(`Guardrails: ${ecosystem.arules.ruleCount} rules defined \u2014 ${pc2.dim("arules list for details")}`);
|
|
436
|
+
} else {
|
|
437
|
+
p2.log.warning(`Guardrails: none \u2014 ${pc2.dim("npx @aman_asmuei/arules init")}`);
|
|
438
|
+
}
|
|
439
|
+
if (ecosystem.aeval.installed) {
|
|
440
|
+
p2.log.success(`Evaluation: ${ecosystem.aeval.sessions} sessions tracked \u2014 ${pc2.dim("aeval report")}`);
|
|
441
|
+
} else {
|
|
442
|
+
p2.log.warning(`Evaluation: not tracking \u2014 ${pc2.dim("npx @aman_asmuei/aeval init")}`);
|
|
443
|
+
}
|
|
393
444
|
const platformLabels = {
|
|
394
445
|
"claude-code": "Claude Code",
|
|
395
446
|
cursor: "Cursor",
|
|
@@ -406,16 +457,19 @@ function statusCommand() {
|
|
|
406
457
|
if (ecosystem.acore.installed) score += 1;
|
|
407
458
|
if (ecosystem.amem.installed) score += 1;
|
|
408
459
|
if (ecosystem.akit.installed) score += 1;
|
|
409
|
-
|
|
410
|
-
|
|
460
|
+
if (ecosystem.aflow.installed) score += 1;
|
|
461
|
+
if (ecosystem.arules.installed) score += 1;
|
|
462
|
+
if (ecosystem.aeval.installed) score += 1;
|
|
463
|
+
const levels = ["Not started", "Getting started", "Growing", "Building", "Strong", "Advanced", "Complete ecosystem"];
|
|
464
|
+
const colors = [pc2.red, pc2.red, pc2.yellow, pc2.yellow, pc2.cyan, pc2.cyan, pc2.green];
|
|
411
465
|
p2.log.message("");
|
|
412
|
-
p2.log.info(`Ecosystem: ${colors[score](levels[score])} (${score}/
|
|
466
|
+
p2.log.info(`Ecosystem: ${colors[score](levels[score])} (${score}/6 layers active)`);
|
|
413
467
|
p2.outro("");
|
|
414
468
|
}
|
|
415
469
|
|
|
416
470
|
// src/index.ts
|
|
417
471
|
var program = new Command();
|
|
418
|
-
program.name("aman").description("Your complete AI companion \u2014 identity, memory, and tools in one command").version("0.1.
|
|
472
|
+
program.name("aman").description("Your complete AI companion \u2014 identity, memory, and tools in one command").version("0.1.1").action(() => {
|
|
419
473
|
const ecosystem = detectEcosystem();
|
|
420
474
|
if (ecosystem.acore.installed) {
|
|
421
475
|
statusCommand();
|