amalfa 1.0.14 → 1.0.16
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 +35 -42
- package/amalfa.svg +87 -0
- package/package.json +1 -1
- package/src/cli.ts +1 -1
package/README.md
CHANGED
|
@@ -196,29 +196,7 @@ amalfa/
|
|
|
196
196
|
|
|
197
197
|
AMALFA follows a **Brief → Work → Debrief → Playbook** cycle:
|
|
198
198
|
|
|
199
|
-
|
|
200
|
-
digraph workflow {
|
|
201
|
-
rankdir=LR;
|
|
202
|
-
node [shape=box, style=filled];
|
|
203
|
-
|
|
204
|
-
// Nodes
|
|
205
|
-
brief [label="Brief\n(Task Spec)", fillcolor=lightyellow];
|
|
206
|
-
work [label="Work\n(Implementation)", fillcolor=lightblue];
|
|
207
|
-
debrief [label="Debrief\n(Lessons Learned)", fillcolor=lightgreen];
|
|
208
|
-
playbook [label="Playbook\n(Codified Pattern)", fillcolor=orange];
|
|
209
|
-
db [label="AMALFA\nKnowledge Graph", shape=cylinder, fillcolor=lightgray];
|
|
210
|
-
|
|
211
|
-
// Flow
|
|
212
|
-
brief -> work [label="guides"];
|
|
213
|
-
work -> debrief [label="captures"];
|
|
214
|
-
debrief -> playbook [label="abstracts to"];
|
|
215
|
-
playbook -> db [label="indexed as"];
|
|
216
|
-
db -> brief [label="informs\nnext task", style=dashed];
|
|
217
|
-
|
|
218
|
-
// Semantic layer
|
|
219
|
-
db -> db [label="semantic search\nvector embeddings\ngraph traversal", style=dotted];
|
|
220
|
-
}
|
|
221
|
-
```
|
|
199
|
+

|
|
222
200
|
|
|
223
201
|
**Example:**
|
|
224
202
|
|
|
@@ -251,34 +229,47 @@ Agents generate knowledge through structured reflection. Amalfa provides semanti
|
|
|
251
229
|
|
|
252
230
|
## Implementation Status
|
|
253
231
|
|
|
254
|
-
###
|
|
232
|
+
### ✅ Core Functionality (v1.0 - Released)
|
|
233
|
+
|
|
234
|
+
- ✅ **MCP Server** - stdio transport, tools, resources
|
|
235
|
+
- ✅ **Vector Search** - FastEmbed embeddings (384-dim), semantic search
|
|
236
|
+
- ✅ **Database** - SQLite with hollow nodes, FAFCAS protocol
|
|
237
|
+
- ✅ **Ingestion Pipeline** - Markdown → nodes + embeddings
|
|
238
|
+
- ✅ **CLI** - init, serve, stats, doctor, servers, daemon, vector
|
|
239
|
+
- ✅ **Service Management** - Vector daemon, file watcher, lifecycle
|
|
240
|
+
- ✅ **Pre-flight Validation** - Check markdown before ingestion
|
|
241
|
+
|
|
242
|
+
### 🚧 Phase 1: Auto-Augmentation (In Progress)
|
|
255
243
|
|
|
256
|
-
- [ ] Entity extraction
|
|
257
|
-
- [ ] Auto-linking (wiki-style)
|
|
258
|
-
- [ ] Tag extraction
|
|
259
|
-
- [ ]
|
|
260
|
-
- [ ]
|
|
244
|
+
- [ ] Entity extraction from markdown
|
|
245
|
+
- [ ] Auto-linking (wiki-style [[links]])
|
|
246
|
+
- [ ] Tag extraction and indexing
|
|
247
|
+
- [ ] Git-based auditing for augmentations
|
|
248
|
+
- [ ] Automated file watcher updates
|
|
261
249
|
|
|
262
|
-
### Phase 2: Latent Space
|
|
250
|
+
### 📋 Phase 2: Latent Space Organization (Planned)
|
|
263
251
|
|
|
264
252
|
- [ ] Document clustering (HDBSCAN)
|
|
265
253
|
- [ ] Cluster label generation
|
|
266
254
|
- [ ] Confidence-based tagging
|
|
267
255
|
- [ ] Topic modeling (BERTopic)
|
|
256
|
+
- [ ] Self-organizing taxonomy
|
|
268
257
|
|
|
269
|
-
### Phase 3:
|
|
258
|
+
### 🔗 Phase 3: Graph Intelligence (Planned)
|
|
270
259
|
|
|
271
|
-
- [ ] K-nearest neighbor
|
|
260
|
+
- [ ] K-nearest neighbor recommendations
|
|
272
261
|
- [ ] Suggested reading lists
|
|
273
|
-
- [ ] Temporal
|
|
262
|
+
- [ ] Temporal sequence tracking
|
|
274
263
|
- [ ] Backlink maintenance
|
|
264
|
+
- [ ] Graph traversal tools
|
|
275
265
|
|
|
276
|
-
### Phase 4: Learning from
|
|
266
|
+
### 🎯 Phase 4: Learning from Feedback (Future)
|
|
277
267
|
|
|
278
|
-
- [ ] Track human edits
|
|
268
|
+
- [ ] Track human edits to augmentations
|
|
279
269
|
- [ ] Adjust confidence thresholds
|
|
280
|
-
- [ ] Improve extraction
|
|
281
|
-
- [ ] Weekly digest
|
|
270
|
+
- [ ] Improve extraction heuristics
|
|
271
|
+
- [ ] Weekly knowledge digest
|
|
272
|
+
- [ ] Multi-agent coordination
|
|
282
273
|
|
|
283
274
|
---
|
|
284
275
|
|
|
@@ -354,12 +345,14 @@ bun run format # Biome format
|
|
|
354
345
|
|
|
355
346
|
## Contributing
|
|
356
347
|
|
|
357
|
-
Amalfa is in
|
|
348
|
+
Amalfa is in active development. Contributions are welcome!
|
|
358
349
|
|
|
359
|
-
**
|
|
360
|
-
- ⭐ Star the repo if
|
|
361
|
-
-
|
|
362
|
-
-
|
|
350
|
+
**How to contribute:**
|
|
351
|
+
- ⭐ Star the repo if you find it useful
|
|
352
|
+
- 🐛 Report bugs or request features via issues
|
|
353
|
+
- 📝 Improve documentation
|
|
354
|
+
- 🚀 Submit PRs for new features or fixes
|
|
355
|
+
- 💬 Join discussions about the vision and roadmap
|
|
363
356
|
|
|
364
357
|
---
|
|
365
358
|
|
package/amalfa.svg
ADDED
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="304pt" height="443pt" viewBox="0.00 0.00 304.00 443.00">
|
|
2
|
+
<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 438.8)">
|
|
3
|
+
<title>workflow</title>
|
|
4
|
+
<polygon fill="white" stroke="none" points="-4,4 -4,-438.8 299.54,-438.8 299.54,4 -4,4"/>
|
|
5
|
+
<!-- brief -->
|
|
6
|
+
<g id="node1" class="node">
|
|
7
|
+
<title>brief</title>
|
|
8
|
+
<polygon fill="lightyellow" stroke="black" points="155.52,-434.8 72.27,-434.8 72.27,-393.2 155.52,-393.2 155.52,-434.8"/>
|
|
9
|
+
<text xml:space="preserve" text-anchor="middle" x="113.9" y="-418.2" font-family="Times,serif" font-size="14.00">Brief</text>
|
|
10
|
+
<text xml:space="preserve" text-anchor="middle" x="113.9" y="-401.4" font-family="Times,serif" font-size="14.00">(Task Spec)</text>
|
|
11
|
+
</g>
|
|
12
|
+
<!-- work -->
|
|
13
|
+
<g id="node2" class="node">
|
|
14
|
+
<title>work</title>
|
|
15
|
+
<polygon fill="lightblue" stroke="black" points="124.88,-340.4 10.91,-340.4 10.91,-298.8 124.88,-298.8 124.88,-340.4"/>
|
|
16
|
+
<text xml:space="preserve" text-anchor="middle" x="67.9" y="-323.8" font-family="Times,serif" font-size="14.00">Work</text>
|
|
17
|
+
<text xml:space="preserve" text-anchor="middle" x="67.9" y="-307" font-family="Times,serif" font-size="14.00">(Implementation)</text>
|
|
18
|
+
</g>
|
|
19
|
+
<!-- brief->work -->
|
|
20
|
+
<g id="edge1" class="edge">
|
|
21
|
+
<title>brief->work</title>
|
|
22
|
+
<path fill="none" stroke="black" d="M103.91,-392.95C97.77,-380.6 89.77,-364.53 82.87,-350.68"/>
|
|
23
|
+
<polygon fill="black" stroke="black" points="86.12,-349.36 78.53,-341.97 79.85,-352.48 86.12,-349.36"/>
|
|
24
|
+
<text xml:space="preserve" text-anchor="middle" x="113.29" y="-362.6" font-family="Times,serif" font-size="14.00">guides</text>
|
|
25
|
+
</g>
|
|
26
|
+
<!-- debrief -->
|
|
27
|
+
<g id="node3" class="node">
|
|
28
|
+
<title>debrief</title>
|
|
29
|
+
<polygon fill="lightgreen" stroke="black" points="119.79,-246 0,-246 0,-204.4 119.79,-204.4 119.79,-246"/>
|
|
30
|
+
<text xml:space="preserve" text-anchor="middle" x="59.9" y="-229.4" font-family="Times,serif" font-size="14.00">Debrief</text>
|
|
31
|
+
<text xml:space="preserve" text-anchor="middle" x="59.9" y="-212.6" font-family="Times,serif" font-size="14.00">(Lessons Learned)</text>
|
|
32
|
+
</g>
|
|
33
|
+
<!-- work->debrief -->
|
|
34
|
+
<g id="edge2" class="edge">
|
|
35
|
+
<title>work->debrief</title>
|
|
36
|
+
<path fill="none" stroke="black" d="M66.16,-298.55C65.12,-286.56 63.78,-271.07 62.61,-257.5"/>
|
|
37
|
+
<polygon fill="black" stroke="black" points="66.11,-257.38 61.76,-247.72 59.13,-257.98 66.11,-257.38"/>
|
|
38
|
+
<text xml:space="preserve" text-anchor="middle" x="87.93" y="-268.2" font-family="Times,serif" font-size="14.00">captures</text>
|
|
39
|
+
</g>
|
|
40
|
+
<!-- playbook -->
|
|
41
|
+
<g id="node4" class="node">
|
|
42
|
+
<title>playbook</title>
|
|
43
|
+
<polygon fill="orange" stroke="black" points="125.63,-151.6 8.16,-151.6 8.16,-110 125.63,-110 125.63,-151.6"/>
|
|
44
|
+
<text xml:space="preserve" text-anchor="middle" x="66.9" y="-135" font-family="Times,serif" font-size="14.00">Playbook</text>
|
|
45
|
+
<text xml:space="preserve" text-anchor="middle" x="66.9" y="-118.2" font-family="Times,serif" font-size="14.00">(Codified Pattern)</text>
|
|
46
|
+
</g>
|
|
47
|
+
<!-- debrief->playbook -->
|
|
48
|
+
<g id="edge3" class="edge">
|
|
49
|
+
<title>debrief->playbook</title>
|
|
50
|
+
<path fill="none" stroke="black" d="M61.41,-204.15C62.32,-192.16 63.5,-176.67 64.52,-163.1"/>
|
|
51
|
+
<polygon fill="black" stroke="black" points="68,-163.56 65.26,-153.32 61.02,-163.03 68,-163.56"/>
|
|
52
|
+
<text xml:space="preserve" text-anchor="middle" x="95.71" y="-173.8" font-family="Times,serif" font-size="14.00">abstracts to</text>
|
|
53
|
+
</g>
|
|
54
|
+
<!-- db -->
|
|
55
|
+
<g id="node5" class="node">
|
|
56
|
+
<title>db</title>
|
|
57
|
+
<path fill="lightgray" stroke="black" d="M171.41,-52C171.41,-54.87 144.73,-57.2 111.9,-57.2 79.06,-57.2 52.38,-54.87 52.38,-52 52.38,-52 52.38,-5.2 52.38,-5.2 52.38,-2.33 79.06,0 111.9,0 144.73,0 171.41,-2.33 171.41,-5.2 171.41,-5.2 171.41,-52 171.41,-52"/>
|
|
58
|
+
<path fill="none" stroke="black" d="M171.41,-52C171.41,-49.13 144.73,-46.8 111.9,-46.8 79.06,-46.8 52.38,-49.13 52.38,-52"/>
|
|
59
|
+
<text xml:space="preserve" text-anchor="middle" x="111.9" y="-32.8" font-family="Times,serif" font-size="14.00">AMALFA</text>
|
|
60
|
+
<text xml:space="preserve" text-anchor="middle" x="111.9" y="-16" font-family="Times,serif" font-size="14.00">Knowledge Graph</text>
|
|
61
|
+
</g>
|
|
62
|
+
<!-- playbook->db -->
|
|
63
|
+
<g id="edge4" class="edge">
|
|
64
|
+
<title>playbook->db</title>
|
|
65
|
+
<path fill="none" stroke="black" d="M71.12,-109.58C73.7,-99.06 77.45,-86.15 82.42,-75.2 83.65,-72.48 85.03,-69.73 86.5,-67"/>
|
|
66
|
+
<polygon fill="black" stroke="black" points="89.37,-69.03 91.37,-58.63 83.32,-65.51 89.37,-69.03"/>
|
|
67
|
+
<text xml:space="preserve" text-anchor="middle" x="112.16" y="-79.4" font-family="Times,serif" font-size="14.00">indexed as</text>
|
|
68
|
+
</g>
|
|
69
|
+
<!-- db->brief -->
|
|
70
|
+
<g id="edge5" class="edge">
|
|
71
|
+
<title>db->brief</title>
|
|
72
|
+
<path fill="none" stroke="black" stroke-dasharray="5,2" d="M132.14,-57.23C135.75,-62.98 139.21,-69.13 141.9,-75.2 152.03,-98.11 155.9,-104.75 155.9,-129.8 155.9,-320.6 155.9,-320.6 155.9,-320.6 155.9,-342.99 145.55,-365.92 135.13,-383.33"/>
|
|
73
|
+
<polygon fill="black" stroke="black" points="132.27,-381.3 129.87,-391.62 138.18,-385.05 132.27,-381.3"/>
|
|
74
|
+
<text xml:space="preserve" text-anchor="middle" x="180.97" y="-229.4" font-family="Times,serif" font-size="14.00">informs</text>
|
|
75
|
+
<text xml:space="preserve" text-anchor="middle" x="180.97" y="-212.6" font-family="Times,serif" font-size="14.00">next task</text>
|
|
76
|
+
</g>
|
|
77
|
+
<!-- db->db -->
|
|
78
|
+
<g id="edge6" class="edge">
|
|
79
|
+
<title>db->db</title>
|
|
80
|
+
<path fill="none" stroke="black" stroke-dasharray="1,5" d="M171.69,-38.27C182.14,-36.98 189.41,-33.76 189.41,-28.6 189.41,-25.54 186.85,-23.16 182.58,-21.46"/>
|
|
81
|
+
<polygon fill="black" stroke="black" points="183.7,-18.13 173.17,-19.27 182.12,-24.95 183.7,-18.13"/>
|
|
82
|
+
<text xml:space="preserve" text-anchor="middle" x="242.47" y="-41.2" font-family="Times,serif" font-size="14.00">semantic search</text>
|
|
83
|
+
<text xml:space="preserve" text-anchor="middle" x="242.47" y="-24.4" font-family="Times,serif" font-size="14.00">vector embeddings</text>
|
|
84
|
+
<text xml:space="preserve" text-anchor="middle" x="242.47" y="-7.6" font-family="Times,serif" font-size="14.00">graph traversal</text>
|
|
85
|
+
</g>
|
|
86
|
+
</g>
|
|
87
|
+
</svg>
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "amalfa",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.16",
|
|
4
4
|
"description": "Local-first knowledge graph engine for AI agents. Transforms markdown into searchable memory with MCP protocol.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"homepage": "https://github.com/pjsvis/amalfa#readme",
|
package/src/cli.ts
CHANGED
|
@@ -3,7 +3,7 @@ import { existsSync, statSync } from "node:fs";
|
|
|
3
3
|
import { join } from "node:path";
|
|
4
4
|
import { spawn } from "node:child_process";
|
|
5
5
|
|
|
6
|
-
const VERSION = "1.0.
|
|
6
|
+
const VERSION = "1.0.16";
|
|
7
7
|
|
|
8
8
|
// Database path loaded from config (lazy loaded per command)
|
|
9
9
|
let DB_PATH: string | null = null;
|