@einsia/agent-git 0.2.12 → 0.2.14
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/CHANGELOG.md +126 -0
- package/package.json +6 -6
package/CHANGELOG.md
CHANGED
|
@@ -8,6 +8,132 @@ its [GitHub Release](https://github.com/Einsia/agent-git/releases), and the
|
|
|
8
8
|
|
|
9
9
|
## [Unreleased]
|
|
10
10
|
|
|
11
|
+
## [0.2.14] - 2026-09-30
|
|
12
|
+
|
|
13
|
+
### Added
|
|
14
|
+
|
|
15
|
+
- `agit project bind` enrolls a selected directory and its unbound subdirectories
|
|
16
|
+
in an existing repository, with explicit history import and automatic upload
|
|
17
|
+
choices. `project sync` retries synchronization, `project status` reports local
|
|
18
|
+
results, and `project unbind` pauses project capture. Codex and Claude Code hooks
|
|
19
|
+
preserve existing session claims and enforce the current project policy before
|
|
20
|
+
publishing.
|
|
21
|
+
|
|
22
|
+
### Fixed
|
|
23
|
+
|
|
24
|
+
- Repeated Remote Control history reads reuse bounded, authenticated secret
|
|
25
|
+
dictionary records and compiled protection patterns. Changed ciphertext,
|
|
26
|
+
keys, or protection rules invalidate the corresponding cached state.
|
|
27
|
+
- Release builds optimize for runtime speed to reduce history projection and
|
|
28
|
+
secret scanning latency.
|
|
29
|
+
- Remote Control retries failed local session saves while idle, without requiring
|
|
30
|
+
another user turn to resume archiving.
|
|
31
|
+
- Push uses authenticated remote history to avoid rescanning already-published
|
|
32
|
+
objects, while continuing to inspect new objects and their selected LFS payloads.
|
|
33
|
+
Use `--audit` when a complete history review is needed.
|
|
34
|
+
- Native history reads take authenticated, bounded dictionary snapshots without
|
|
35
|
+
waiting for a dictionary writer. Conservative pattern filtering avoids scanning
|
|
36
|
+
history for secret patterns that cannot occur while preserving redaction rules.
|
|
37
|
+
- Compatible Cloud servers can read native history through a scoped project
|
|
38
|
+
controller without opening a separate session controller. Project controllers
|
|
39
|
+
remain read-only and cannot subscribe to or change a conversation.
|
|
40
|
+
- Completed RC turns retain durable archive jobs until protected publication has
|
|
41
|
+
a receipt. A daemon restart retries pending jobs without starting the model or
|
|
42
|
+
requiring a viewer to open the conversation.
|
|
43
|
+
- Settlement subprocesses retry temporary executable-busy failures within a
|
|
44
|
+
bounded window while retaining the current authority lease.
|
|
45
|
+
|
|
46
|
+
## [0.2.13] - 2026-09-30
|
|
47
|
+
|
|
48
|
+
### Changed
|
|
49
|
+
|
|
50
|
+
- **Installations that skip install scripts are counted.** An installation whose
|
|
51
|
+
installer recorded no install receipt, such as one run through `npx`, with
|
|
52
|
+
npm `--ignore-scripts`, or by a package manager that skips install scripts,
|
|
53
|
+
now records one from its first user command, marked
|
|
54
|
+
`receipt_origin=first_command`; installer receipts are marked
|
|
55
|
+
`receipt_origin=installer`. Setup, hooks, MCP, RC, background processes and
|
|
56
|
+
commands an installer runs never record it, so a create-agit receipt keeps its
|
|
57
|
+
acquisition key. Installations whose statistics state predates this release,
|
|
58
|
+
or whose `AGIT_HOME` already held older state, are never reported this way. See
|
|
59
|
+
[First-command receipt](docs/telemetry.md#acquisition-funnel-contract).
|
|
60
|
+
|
|
61
|
+
- **Session reuse and invitation counts on the Hub.** When `agit run` continues
|
|
62
|
+
a session line or forks from a point on one, it sends the Hub one receipt
|
|
63
|
+
naming the repository, the source session ID and commit, whether the run
|
|
64
|
+
continues or forks, and the per-process operation ID, so the Hub can count
|
|
65
|
+
how often sessions are picked up. A continue is reported once the session is
|
|
66
|
+
ready to launch, a fork once its branch exists, and a `--mine` fork to the
|
|
67
|
+
repository it copied. The receipt is sent in the background only for
|
|
68
|
+
checkouts of the configured Hub, only from a settled session, and never with
|
|
69
|
+
renewed credentials: an expired sign-in sends nothing. A Hub that is
|
|
70
|
+
unreachable or refuses it never changes the run's output or exit code.
|
|
71
|
+
`agit fork` and `agit resume` stay offline.
|
|
72
|
+
`agit repo invite <owner/repo>@<branch>` also tells the Hub which session its
|
|
73
|
+
link opens. The download attribution headers still carry no arguments or
|
|
74
|
+
names. See
|
|
75
|
+
[Session reuse and invitations](docs/telemetry.md#session-reuse-and-invitations).
|
|
76
|
+
|
|
77
|
+
### Fixed
|
|
78
|
+
|
|
79
|
+
- Remote Control can return a fresh, bounded native history page with watch
|
|
80
|
+
admission, avoiding a separate network round trip when opening a conversation.
|
|
81
|
+
Native history transfers negotiate compression, preserving complete tool
|
|
82
|
+
results and compatibility with older clients and servers. Optional history
|
|
83
|
+
reads do not block the daemon or prevent a successful live subscription.
|
|
84
|
+
- Device name changes synchronize to Cloud without enrolling another device.
|
|
85
|
+
- Failed session publication retries while the conversation is idle, so a
|
|
86
|
+
transient upload failure does not require another user message to recover.
|
|
87
|
+
|
|
88
|
+
- `agit login` checks that it can save credentials under `AGIT_HOME` before it
|
|
89
|
+
asks the Hub for anything. An agent sandbox that refuses writes there no
|
|
90
|
+
longer uses up the human's approval: login stops with the directory to allow
|
|
91
|
+
and says no login request was created, and `agit login --complete` leaves the
|
|
92
|
+
approved sign-in unclaimed so the same command finishes it later. If saving
|
|
93
|
+
still fails after sign-in, the new Hub session is signed out again.
|
|
94
|
+
- Signing in from an agent no longer fails when the agent runtime stops the
|
|
95
|
+
waiting `agit login`. Every browser and device-code request is recorded
|
|
96
|
+
privately under `AGIT_HOME` when the Hub creates it, and
|
|
97
|
+
`agit login --complete` without a value finishes it from any later process,
|
|
98
|
+
including an interrupted `agit login --device`. `--complete` now waits for
|
|
99
|
+
the approval for up to 90 seconds (`--wait <seconds>`, `0` checks once)
|
|
100
|
+
instead of checking once, keeps waiting through a failed poll, keeps the
|
|
101
|
+
request when the wait runs out, and forgets it when the Hub says it expired
|
|
102
|
+
or was already used. Running the printed `--complete` command again after
|
|
103
|
+
the sign-in finished reports success instead of "no longer valid". A new
|
|
104
|
+
`agit login` finishes a request the human already approved instead of
|
|
105
|
+
replacing it. `agit whoami --check`, `agit commit` and commands that stop
|
|
106
|
+
with "not logged in" first claim an approved request once, and otherwise
|
|
107
|
+
point to `agit login --complete` instead of a new login. Signing out cancels
|
|
108
|
+
a sign-in still being claimed: a session approved after `agit logout` is
|
|
109
|
+
signed out again instead of saved, and a session a concurrent sign-in saved
|
|
110
|
+
while `agit logout` ran is revoked with the credentials it removes. A second
|
|
111
|
+
`agit login --complete` or a new `agit login` started while another process
|
|
112
|
+
claims the same sign-in waits for it and reports success instead of "no
|
|
113
|
+
longer valid" or a new login link.
|
|
114
|
+
- Local state problems read as local problems. `agit whoami --check` reports
|
|
115
|
+
an unwritable home or a held credential lock instead of "can't reach" the
|
|
116
|
+
Hub, `agit doctor` checks that `AGIT_HOME` is writable, and every command
|
|
117
|
+
that meets one exits with the precondition code. Messages name the agit lock
|
|
118
|
+
another process holds and say that agit's lock files are released when their
|
|
119
|
+
process exits and must not be deleted; credential locks give up after a
|
|
120
|
+
bounded wait, and session locks say what they are waiting for.
|
|
121
|
+
- Re-importing a session describes its claim: a registration is saved by the
|
|
122
|
+
import, a saved session says where and how to record later turns, and a
|
|
123
|
+
session saved elsewhere says how to move it. The link file path is no longer
|
|
124
|
+
offered as a next step, and a failed import restores the session's previous
|
|
125
|
+
link, including none.
|
|
126
|
+
- A session targeted at `main` is refused before anything is adopted or
|
|
127
|
+
created, with the reason and an example branch in the caller's syntax.
|
|
128
|
+
- `agit push` leaves an `origin` that already points at the destination alone
|
|
129
|
+
and writes a changed one under the repository lock, so a manual push and a
|
|
130
|
+
hook's auto-push no longer collide on `.git/config`. Git failures on a held
|
|
131
|
+
lock say not to delete it while a git process runs; a refused write says the
|
|
132
|
+
checkout is not writable instead.
|
|
133
|
+
- `agit setup` recognizes its own hooks by their arguments, so installing from
|
|
134
|
+
another executable path replaces the old entry instead of adding a second
|
|
135
|
+
one.
|
|
136
|
+
|
|
11
137
|
## [0.2.12] - 2026-09-28
|
|
12
138
|
|
|
13
139
|
### Fixed
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@einsia/agent-git",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.14",
|
|
4
4
|
"description": "Version control for agent sessions — the agit CLI plus skills/hooks/MCP wiring for Claude Code, Codex, OpenCode and Cursor. The AgentGit hub deploys separately.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"agit",
|
|
@@ -49,10 +49,10 @@
|
|
|
49
49
|
"access": "public"
|
|
50
50
|
},
|
|
51
51
|
"optionalDependencies": {
|
|
52
|
-
"@einsia/agent-git-linux-x64": "0.2.
|
|
53
|
-
"@einsia/agent-git-linux-arm64": "0.2.
|
|
54
|
-
"@einsia/agent-git-darwin-x64": "0.2.
|
|
55
|
-
"@einsia/agent-git-darwin-arm64": "0.2.
|
|
56
|
-
"@einsia/agent-git-win32-x64": "0.2.
|
|
52
|
+
"@einsia/agent-git-linux-x64": "0.2.14",
|
|
53
|
+
"@einsia/agent-git-linux-arm64": "0.2.14",
|
|
54
|
+
"@einsia/agent-git-darwin-x64": "0.2.14",
|
|
55
|
+
"@einsia/agent-git-darwin-arm64": "0.2.14",
|
|
56
|
+
"@einsia/agent-git-win32-x64": "0.2.14"
|
|
57
57
|
}
|
|
58
58
|
}
|