faf-cli 7.13.0 → 7.14.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 +11 -26
- package/dist/cli.js +279 -279
- package/dist/cli.js.map +29 -29
- package/dist/core/safe-write.d.ts +97 -0
- package/dist/core/slots.d.ts +2 -2
- package/dist/core/typed-none.d.ts +1 -1
- package/dist/detect/assemble.d.ts +1 -1
- package/dist/index.js +156 -156
- package/dist/index.js.map +24 -24
- package/dist/interop/cards.d.ts +18 -3
- package/package.json +1 -1
- package/project.faf +3 -3
package/README.md
CHANGED
|
@@ -132,35 +132,20 @@ faf memory etch "a durable fact" --id my-fact
|
|
|
132
132
|
faf memory show
|
|
133
133
|
```
|
|
134
134
|
|
|
135
|
-
### What's New in v7.
|
|
136
|
-
|
|
137
|
-
**
|
|
138
|
-
|
|
139
|
-
- **
|
|
140
|
-
- **`
|
|
141
|
-
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
- In a slot the app-type leaves out, `faf auto` writes `slotignored` (shown as N/A).
|
|
145
|
-
- The 6Ws stay yours: faf never replaces your words there, and `faf go` asks for the empty ones.
|
|
146
|
-
- **`faf ai enhance` is retired.** project.faf isn't enhanced: tech slots come from repo facts, and the 6Ws come from you.
|
|
147
|
-
- **Links and encodings are checked first.** faf refuses, in one line, to write:
|
|
148
|
-
- through a link that leaves the project;
|
|
149
|
-
- into `.git`, beyond its own hook section and diff driver;
|
|
150
|
-
- over a whole file faf didn't render;
|
|
151
|
-
- over a file that isn't UTF-8.
|
|
152
|
-
- **A whole file faf renders is replaced only when it's still exactly what faf wrote.** project.html and the Server and A2A cards now carry a render hash. If you edited one, faf leaves it and says so; `--force` replaces it.
|
|
153
|
-
- **One-time step when upgrading:** faf can't tell whether a project.html, Server Card or A2A card written before 7.13 was edited. The first run that would change one refuses it once, and that run exits 1. Check the file for hand edits, then run the same command once with `--force`; after that faf recognises its own output.
|
|
154
|
-
- **A failed write keeps the original.** faf writes to a temp file and renames it into place, so a full disk or a killed process leaves your file as it was. A file you edit while faf is writing is left alone.
|
|
155
|
-
- **Memory stays yours.**
|
|
156
|
-
- `soul.fafm` keeps its curated index, its facts and its comments, and etching an id that already exists merges into that fact.
|
|
157
|
-
- Tri-sync (`FAF_PRO=1`) writes Claude Code's own memory file as one section on top, and Claude's notes stay.
|
|
158
|
-
- **Detection stays inside the project.** Turbo-Cat no longer reads parent folders, so a monorepo root's stack no longer leaks into a package.
|
|
159
|
-
- **For builders.** New exports: `resolveInside`, `safeWriteFile`, `updateFafFile`, `writeClaudeMemory`, `FafDNAManager`, `authorFafFromRepo`, `registryTitle`, `isNonProjectRoot` and `scoreText`. `writeFaf` on an existing file now merges; pass `{ replace: true }` for the old overwrite.
|
|
160
|
-
- **Node 22+.** The engine floor matches CI (22 and 24).
|
|
135
|
+
### What's New in v7.14.0 — The Passport Edition
|
|
136
|
+
|
|
137
|
+
**The A2A Agent Card's FAF extension carries real agent identity now — an `agentId`, a `passport` URL, and the full FAF media-type family — not just project provenance.**
|
|
138
|
+
|
|
139
|
+
- **The extension moved to `https://faf.one/ext/context/v1`** and its `params` gained `fafaSpecVersion`, `agentId` (from `.fafa` `agent.id`), the full `mediaTypes` family, and a `passport` URL — nested `provenance.faf`/`provenance.mediaType` replace the old flat pointer fields.
|
|
140
|
+
- **`defaultInputModes` reflects what your skills actually cite.** Any FAF media type a capability's `cites_spec` names now shows up there, and on that skill's own `inputModes`.
|
|
141
|
+
- **`provider` is optional again.** It's emitted only when both `agent.vendor` and `agent.homepage` are present — no longer a hard requirement.
|
|
142
|
+
- **`capabilities.streaming` stays honest at `false`.** Having an A2A endpoint was never proof it supports streaming; this only flips once a real per-door signal exists to key off.
|
|
143
|
+
- Breaking for anything reading the old flat A2A extension shape or the old `https://faf.one/context` URI. MCP Server Cards and registry entries are unaffected.
|
|
161
144
|
|
|
162
145
|
**Recent sprint**
|
|
163
146
|
|
|
147
|
+
- 🛂 [7.14.0](https://github.com/Wolfe-Jam/faf-cli/releases/tag/v7.14.0) The Passport Edition
|
|
148
|
+
- 🛡️ [7.13.1](https://github.com/Wolfe-Jam/faf-cli/releases/tag/v7.13.1) security: detection reads stay inside the project
|
|
164
149
|
- 🤝 [7.13.0](https://github.com/Wolfe-Jam/faf-cli/releases/tag/v7.13.0) The Co-Author Edition
|
|
165
150
|
- 🧩 [7.12.0](https://github.com/Wolfe-Jam/faf-cli/releases/tag/v7.12.0) The Open Renderers Edition
|
|
166
151
|
- 🖥️ [7.11.0](https://github.com/Wolfe-Jam/faf-cli/releases/tag/v7.11.0) The VS Code Edition
|