@zecalis/fael 0.12.0 → 0.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 +28 -11
- package/npm-shrinkwrap.json +2 -2
- package/package.json +2 -2
package/README.md
CHANGED
|
@@ -5,14 +5,15 @@
|
|
|
5
5
|
[](https://github.com/zecalis/fael/actions/workflows/ci.yml)
|
|
6
6
|
[](LICENSE)
|
|
7
7
|
|
|
8
|
-
**The secretary for every agent on your team.** Every agent on your repo
|
|
9
|
-
what's still open —
|
|
8
|
+
**The secretary for every agent on your team.** Every agent on your repo gets what git can't tell
|
|
9
|
+
it — why a call was made, what was rejected, what's still open — next to the file it opens.
|
|
10
10
|
|
|
11
11
|
One person runs five agents; a team runs fifty — and each of those hands work to sub-agents. Every
|
|
12
12
|
one of them starts from zero: it finds the same flaky test, re-asks why that function looks weird,
|
|
13
13
|
and repeats the mistake the last agent already fixed.
|
|
14
14
|
Memory tools that try to help stuff a summary of everything into context before the agent has said
|
|
15
|
-
what it's about to do —
|
|
15
|
+
what it's about to do — the one row that mattered gets averaged away, and a summary of stale notes
|
|
16
|
+
is still stale.
|
|
16
17
|
|
|
17
18
|
fael works the other way round: like a good secretary, it takes the notes nobody else will and hands
|
|
18
19
|
each agent **only what matters for the file in front of it**. The agent writes down what it decided
|
|
@@ -35,10 +36,15 @@ fael gives the repo a memory that agents can't skip:
|
|
|
35
36
|
session after compaction, is told again — it no longer has them), and cut to a token budget
|
|
36
37
|
(800 by default) — not a notes dump. Anything else the agent asks for itself, through MCP.
|
|
37
38
|
`fael stats` shows exactly what fael has put into context.
|
|
39
|
+
- **It retires what the code outgrew.** Git owns what changed; fael keeps only what git can't say.
|
|
40
|
+
When an agent edits a file, it is asked to close a row the code now says, or re-file one the
|
|
41
|
+
code contradicts — in the same message. `fael doctor` lists the rest: open rows whose files took
|
|
42
|
+
10+ commits since they were written, to check against the code.
|
|
38
43
|
- **It follows the code.** Rename a file and its rows follow it (`git log -M`). Split one into
|
|
39
44
|
several and `fael mv old new` points the rows at the new files.
|
|
40
|
-
- **It lives in git.** Rows are plain JSONL in
|
|
41
|
-
|
|
45
|
+
- **It lives in your git, out of your branches.** Rows are plain JSONL in the clone's `.git/fael/`,
|
|
46
|
+
shared at once by every worktree, so PRs never carry log lines to conflict on. `fael sync` carries
|
|
47
|
+
them to teammates through your own remote (`refs/fael/*`). No server, no account.
|
|
42
48
|
|
|
43
49
|
Works with **Claude Code, Codex and OpenCode**, and any MCP host. One small binary; hooks run in 2–3 ms.
|
|
44
50
|
|
|
@@ -51,7 +57,7 @@ Works with **Claude Code, Codex and OpenCode**, and any MCP host. One small bina
|
|
|
51
57
|
| Agent notices a bug mid-task, then forgets it | It's filed on the spot, and shown to whoever touches that file next |
|
|
52
58
|
| Two agents in parallel worktrees hit the same problem | The first files it; the second gets it when it opens the file — the same hour, before any commit |
|
|
53
59
|
| A sub-agent finds something and its summary drops it | Its `fael issue: …` line is filed when it stops (Claude Code), and the parent gets it on that file |
|
|
54
|
-
| Knowledge stays in one person's chat history | It's in the
|
|
60
|
+
| Knowledge stays in one person's chat history | It's in the clone — teammates and their agents get it on `fael sync` |
|
|
55
61
|
| A PM's requirement lives in a ticket the agent never opens | `fael add decision … --files src/pay.rs` — it's in front of the agent the moment it opens the file |
|
|
56
62
|
|
|
57
63
|
## Install
|
|
@@ -59,7 +65,6 @@ Works with **Claude Code, Codex and OpenCode**, and any MCP host. One small bina
|
|
|
59
65
|
**1. Get the binary** — prebuilt for macOS, Linux and Windows. No Rust needed.
|
|
60
66
|
|
|
61
67
|
```bash
|
|
62
|
-
npm i -g @zecalis/fael # Node
|
|
63
68
|
brew install zecalis/tap/fael # Homebrew (macOS / Linux)
|
|
64
69
|
curl -LsSf https://github.com/zecalis/fael/releases/latest/download/fael-installer.sh | sh
|
|
65
70
|
```
|
|
@@ -70,6 +75,9 @@ Windows (PowerShell):
|
|
|
70
75
|
irm https://github.com/zecalis/fael/releases/latest/download/fael-installer.ps1 | iex
|
|
71
76
|
```
|
|
72
77
|
|
|
78
|
+
Or through npm: `npm i -g @zecalis/fael`. It works, but every `fael` call — including each hook —
|
|
79
|
+
starts Node first, so the options above are faster.
|
|
80
|
+
|
|
73
81
|
**2. Connect your agents** — once per machine.
|
|
74
82
|
|
|
75
83
|
```bash
|
|
@@ -82,7 +90,16 @@ fael install --dry-run # show what would change, write nothing
|
|
|
82
90
|
an old path. That's also why `npx @zecalis/fael install` is refused: npx keeps the binary in a
|
|
83
91
|
throwaway cache. Install it globally first.
|
|
84
92
|
|
|
85
|
-
**3. Work as usual.**
|
|
93
|
+
**3. Work as usual.** Rows land in `.git/fael/` — nothing to commit. To share them or back them up:
|
|
94
|
+
|
|
95
|
+
```bash
|
|
96
|
+
git config fael.remote <url> # any git remote you can push to — origin works, a private one if the repo is public
|
|
97
|
+
fael sync # push your rows, pull everyone else's (the Stop hook also runs it once per session)
|
|
98
|
+
```
|
|
99
|
+
|
|
100
|
+
Rather review memory in PRs? `store = "tracked"` in `.fael/config.toml` also writes the rows to
|
|
101
|
+
`.fael/log/` in the tree, to commit like code. Repos that already have a `.fael/log/` keep that mode;
|
|
102
|
+
`fael migrate local` moves one over ([docs/integrate.md](docs/integrate.md#moving-a-tracked-repo-to-local)).
|
|
86
103
|
|
|
87
104
|
## How it works
|
|
88
105
|
|
|
@@ -90,7 +107,7 @@ throwaway cache. Install it globally first.
|
|
|
90
107
|
agent reads src/pay.rs → fael attaches: "[bug] refund rounds down on JPY → src/pay.rs"
|
|
91
108
|
agent fixes it, replies → "…done. fael decision: refunds round half-up, per finance [files: src/pay.rs]"
|
|
92
109
|
fael → files that line as a row — no extra turn, nothing blocked
|
|
93
|
-
|
|
110
|
+
fael sync → the next agent, on any machine, sees it when it opens src/pay.rs
|
|
94
111
|
```
|
|
95
112
|
|
|
96
113
|
Agents use the `fael` MCP server (`find`, `add`, `close`). You can use the same log from the shell:
|
|
@@ -102,7 +119,7 @@ fael add bug "refund rounds down on JPY" --files src/pay.rs
|
|
|
102
119
|
fael add issue "count from order date or ship date?" --to finance --files src/pay.rs
|
|
103
120
|
fael close <id> "fixed in 4f2a91c"
|
|
104
121
|
fael mv src/pay.rs src/pay/refund.rs # a split git can't see — rows follow
|
|
105
|
-
fael doctor # check the setup (e.g.
|
|
122
|
+
fael doctor # check the setup (e.g. no fael.remote to back rows up)
|
|
106
123
|
```
|
|
107
124
|
|
|
108
125
|
`fael` with no arguments lists every command.
|
|
@@ -112,8 +129,8 @@ fael doctor # check the setup (e.g.
|
|
|
112
129
|
|
|
113
130
|
## Links
|
|
114
131
|
|
|
115
|
-
- **npm:** [@zecalis/fael](https://www.npmjs.com/package/@zecalis/fael)
|
|
116
132
|
- **Homebrew tap:** [zecalis/homebrew-tap](https://github.com/zecalis/homebrew-tap)
|
|
133
|
+
- **npm:** [@zecalis/fael](https://www.npmjs.com/package/@zecalis/fael)
|
|
117
134
|
- **Releases & changelog:** [GitHub Releases](https://github.com/zecalis/fael/releases)
|
|
118
135
|
- **Bugs & ideas:** [Issues](https://github.com/zecalis/fael/issues)
|
|
119
136
|
- **Docs:** [architecture](docs/architecture.md) · [log format](docs/format.md) (read/write it without fael) · [integrate another agent](docs/integrate.md)
|
package/npm-shrinkwrap.json
CHANGED
|
@@ -19,7 +19,7 @@
|
|
|
19
19
|
"hasInstallScript": true,
|
|
20
20
|
"license": "MIT",
|
|
21
21
|
"name": "@zecalis/fael",
|
|
22
|
-
"version": "0.
|
|
22
|
+
"version": "0.14.0"
|
|
23
23
|
},
|
|
24
24
|
"node_modules/detect-libc": {
|
|
25
25
|
"engines": {
|
|
@@ -48,5 +48,5 @@
|
|
|
48
48
|
}
|
|
49
49
|
},
|
|
50
50
|
"requires": true,
|
|
51
|
-
"version": "0.
|
|
51
|
+
"version": "0.14.0"
|
|
52
52
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"artifactDownloadUrls": [
|
|
3
|
-
"https://github.com/zecalis/fael/releases/download/v0.
|
|
3
|
+
"https://github.com/zecalis/fael/releases/download/v0.14.0"
|
|
4
4
|
],
|
|
5
5
|
"bin": {
|
|
6
6
|
"fael": "run-fael.js"
|
|
@@ -81,7 +81,7 @@
|
|
|
81
81
|
"zipExt": ".tar.xz"
|
|
82
82
|
}
|
|
83
83
|
},
|
|
84
|
-
"version": "0.
|
|
84
|
+
"version": "0.14.0",
|
|
85
85
|
"volta": {
|
|
86
86
|
"node": "18.14.1",
|
|
87
87
|
"npm": "9.5.0"
|