faf-cli 6.11.0 → 6.13.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
@@ -4,16 +4,16 @@
4
4
  <div style="display: flex; align-items: center; gap: 12px;">
5
5
  <img src="https://www.faf.one/orange-smiley.svg" alt="FAF" width="40" />
6
6
  <div>
7
- <h1 style="margin: 0; color: #000000;">faf-cli — The Ledger Edition</h1>
7
+ <h1 style="margin: 0; color: #000000;">faf-cli — The Single-Source Edition</h1>
8
8
  <p style="margin: 2px 0 0 0; font-size: 0.85em; letter-spacing: 0.12em; opacity: 0.7; text-transform: uppercase;"><strong>Persistent AI Context Standard</strong></p>
9
9
  <p style="margin: 6px 0 0 0;"><strong>Persistent Project Context for AI.</strong></p>
10
10
  <p style="margin: 0;"><strong>Define once. Run anywhere.</strong></p>
11
11
  </div>
12
12
  </div>
13
13
 
14
- [![npm version](https://img.shields.io/npm/v/faf-cli)](https://www.npmjs.com/package/faf-cli)
14
+ [![npm version](https://img.shields.io/npm/v/faf-cli)](https://www.npmjs.com/package/faf-cli)[![npm downloads](https://img.shields.io/npm/dt/faf-cli?color=008B8B&label=downloads)](https://www.npmjs.com/package/faf-cli)
15
15
  [![FAF Trophy 100%](https://img.shields.io/badge/FAF-%F0%9F%8F%86%20100%25-000000?labelColor=FF6B35)](https://faf.one)
16
- [![IANA: vnd.faf+yaml](https://img.shields.io/badge/IANA-vnd.faf%2Byaml-00D4D4)](https://www.iana.org/assignments/media-types/application/vnd.faf+yaml)[![IANA: vnd.fafm+yaml](https://img.shields.io/badge/IANA-vnd.fafm%2Byaml-00D4D4)](https://www.iana.org/assignments/media-types/application/vnd.fafm+yaml)
16
+ [![IANA: vnd.faf+yaml](https://img.shields.io/badge/IANA-vnd.faf%2Byaml-008B8B)](https://www.iana.org/assignments/media-types/application/vnd.faf+yaml)[![IANA: vnd.fafm+yaml](https://img.shields.io/badge/IANA-vnd.fafm%2Byaml-008B8B)](https://www.iana.org/assignments/media-types/application/vnd.fafm+yaml)
17
17
  [![DOI: Context paper](https://img.shields.io/badge/DOI-Context%20paper-FF6B35)](https://doi.org/10.5281/zenodo.18251362)[![DOI: Memory paper](https://img.shields.io/badge/DOI-Memory%20paper-FF6B35)](https://doi.org/10.5281/zenodo.20348942)
18
18
 
19
19
  **Home:** [faf.one/cli](https://faf.one/cli)
@@ -25,7 +25,7 @@
25
25
  [![CI](https://github.com/Wolfe-Jam/faf-cli/actions/workflows/ci.yml/badge.svg)](https://github.com/Wolfe-Jam/faf-cli/actions/workflows/ci.yml)
26
26
  [![Homebrew](https://img.shields.io/badge/Homebrew-faf--cli-orange)](https://github.com/Wolfe-Jam/homebrew-faf)
27
27
  [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
28
- [![project.faf](https://img.shields.io/badge/project.faf-inside-00D4D4)](https://github.com/Wolfe-Jam/faf)
28
+ [![project.faf](https://img.shields.io/badge/project.faf-inside-008B8B)](https://github.com/Wolfe-Jam/faf)
29
29
 
30
30
  ```
31
31
  project/
@@ -63,6 +63,33 @@ Run `faf` with no arguments:
63
63
 
64
64
  ---
65
65
 
66
+ ## v6.13 — The Dart Edition
67
+
68
+ **faf now understands Dart and Flutter projects.** Content-aware `pubspec.yaml` classification — Flutter app vs reusable package · Dart server (Serverpod / Dart Frog / Shelf) / CLI / MCP — pure Dart stays Dart. The single-source engine faf-python-sdk and the MCPs compose, parity-tested across languages.
69
+
70
+ ```bash
71
+ faf auto # reads pubspec.yaml → Dart/Flutter into project.faf
72
+ ```
73
+
74
+ A pubspec alone no longer means "Flutter": `faf` reads the dependencies and classifies — a Flutter app, a reusable package, a Dart server, a CLI, or a Dart MCP server. The detection knowledge lives in one spec (`dart-detection.json`) that faf-cli, faf-python-sdk, and the MCPs all share.
75
+
76
+ ---
77
+
78
+ ## v6.12 — The Single-Source Edition
79
+
80
+ **faf-cli is now the single source for the registry `_meta`** — it emits the `one.faf/context` block every FAF MCP server composes: `registryMeta`/`registryName`/`fafContextBlock`, one deterministic projection, byte-identical, end-to-end across every surface, verifiable by sha, re-derivable instantly on-demand.
81
+
82
+ ```ts
83
+ import { registryMeta, registryName } from 'faf-cli';
84
+
85
+ serverJson.name = registryName(faf); // → one.faf/<name>, derived from project.homepage
86
+ serverJson._meta = registryMeta(faf); // nests one.faf/context under publisher-provided (4 KB cap)
87
+ ```
88
+
89
+ Honest-first: the block carries `{ faf, mediaType, iana, deterministic, generated }` — **no baked score**. One emitter, every door, byte-identical.
90
+
91
+ ---
92
+
66
93
  ## v6.11 — The Ledger Edition
67
94
 
68
95
  **`faf bench --submit` posts your cold-vs-grounded receipt to the public ledger — the context bench goes public, one command.** Run the grounding benchmark, then submit the full pair receipt:
@@ -164,9 +191,9 @@ v6 is a ground-up rewrite. All-in on Bun — same toolchain as Claude Code.
164
191
  | **Language** | TypeScript | TypeScript |
165
192
  | **Compile** | Bun bytecode | `bun build --compile` |
166
193
 
167
- 408 tests in ~13s. 296KB bundle in 2.4s. Single portable binary, 4 platforms. npx backward-compatible.
194
+ 880 tests in ~18s. 296KB bundle in 2.4s. Single portable binary, 4 platforms. npx backward-compatible.
168
195
 
169
- 26 commands. 408 tests. WJTTC-tested. 93% smaller than v5.
196
+ 32 commands. 880 tests. WJTTC-tested. 93% smaller than v5.
170
197
 
171
198
  ```
172
199
  commands → interop → core → wasm
@@ -286,7 +313,7 @@ src/
286
313
  > **Robust. Reliable. Next-level WJTTC tested.** — The Foundation Edition.
287
314
 
288
315
  ```bash
289
- bun test # 408 tests, 42 files, ~13s
316
+ bun test # 880 tests, 75 files, ~18s
290
317
  ```
291
318
 
292
319
  - **WJTTC Build Resilience** (13) — every regression class locked.