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 CHANGED
@@ -196,29 +196,7 @@ amalfa/
196
196
 
197
197
  AMALFA follows a **Brief → Work → Debrief → Playbook** cycle:
198
198
 
199
- ```dot
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
+ ![AMALFA Workflow](https://raw.githubusercontent.com/pjsvis/amalfa/main/docs/workflow.png)
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
- ### Phase 1: Basic Auto-Augmentation (In Progress)
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
- - [ ] Embedding generation
260
- - [ ] Git integration
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 Tagging (Planned)
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: Semantic Relationships (Planned)
258
+ ### 🔗 Phase 3: Graph Intelligence (Planned)
270
259
 
271
- - [ ] K-nearest neighbor search
260
+ - [ ] K-nearest neighbor recommendations
272
261
  - [ ] Suggested reading lists
273
- - [ ] Temporal sequences
262
+ - [ ] Temporal sequence tracking
274
263
  - [ ] Backlink maintenance
264
+ - [ ] Graph traversal tools
275
265
 
276
- ### Phase 4: Learning from Corrections (Future)
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 early development. Contributions welcome once v1.0 is released.
348
+ Amalfa is in active development. Contributions are welcome!
358
349
 
359
- **For now:**
360
- - ⭐ Star the repo if interested
361
- - 👀 Watch for release announcements
362
- - 💬 Open issues for feedback
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&#45;&gt;work -->
20
+ <g id="edge1" class="edge">
21
+ <title>brief-&gt;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&#45;&gt;debrief -->
34
+ <g id="edge2" class="edge">
35
+ <title>work-&gt;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&#45;&gt;playbook -->
48
+ <g id="edge3" class="edge">
49
+ <title>debrief-&gt;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&#45;&gt;db -->
63
+ <g id="edge4" class="edge">
64
+ <title>playbook-&gt;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&#45;&gt;brief -->
70
+ <g id="edge5" class="edge">
71
+ <title>db-&gt;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&#45;&gt;db -->
78
+ <g id="edge6" class="edge">
79
+ <title>db-&gt;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.14",
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.14";
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;