@einsia/agent-git 0.2.12 → 0.2.13

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.
Files changed (2) hide show
  1. package/CHANGELOG.md +91 -0
  2. package/package.json +6 -6
package/CHANGELOG.md CHANGED
@@ -8,6 +8,97 @@ its [GitHub Release](https://github.com/Einsia/agent-git/releases), and the
8
8
 
9
9
  ## [Unreleased]
10
10
 
11
+ ## [0.2.13] - 2026-09-30
12
+
13
+ ### Changed
14
+
15
+ - **Installations that skip install scripts are counted.** An installation whose
16
+ installer recorded no install receipt, such as one run through `npx`, with
17
+ npm `--ignore-scripts`, or by a package manager that skips install scripts,
18
+ now records one from its first user command, marked
19
+ `receipt_origin=first_command`; installer receipts are marked
20
+ `receipt_origin=installer`. Setup, hooks, MCP, RC, background processes and
21
+ commands an installer runs never record it, so a create-agit receipt keeps its
22
+ acquisition key. Installations whose statistics state predates this release,
23
+ or whose `AGIT_HOME` already held older state, are never reported this way. See
24
+ [First-command receipt](docs/telemetry.md#acquisition-funnel-contract).
25
+
26
+ - **Session reuse and invitation counts on the Hub.** When `agit run` continues
27
+ a session line or forks from a point on one, it sends the Hub one receipt
28
+ naming the repository, the source session ID and commit, whether the run
29
+ continues or forks, and the per-process operation ID, so the Hub can count
30
+ how often sessions are picked up. A continue is reported once the session is
31
+ ready to launch, a fork once its branch exists, and a `--mine` fork to the
32
+ repository it copied. The receipt is sent in the background only for
33
+ checkouts of the configured Hub, only from a settled session, and never with
34
+ renewed credentials: an expired sign-in sends nothing. A Hub that is
35
+ unreachable or refuses it never changes the run's output or exit code.
36
+ `agit fork` and `agit resume` stay offline.
37
+ `agit repo invite <owner/repo>@<branch>` also tells the Hub which session its
38
+ link opens. The download attribution headers still carry no arguments or
39
+ names. See
40
+ [Session reuse and invitations](docs/telemetry.md#session-reuse-and-invitations).
41
+
42
+ ### Fixed
43
+
44
+ - Remote Control can return a fresh, bounded native history page with watch
45
+ admission, avoiding a separate network round trip when opening a conversation.
46
+ Native history transfers negotiate compression, preserving complete tool
47
+ results and compatibility with older clients and servers. Optional history
48
+ reads do not block the daemon or prevent a successful live subscription.
49
+ - Device name changes synchronize to Cloud without enrolling another device.
50
+ - Failed session publication retries while the conversation is idle, so a
51
+ transient upload failure does not require another user message to recover.
52
+
53
+ - `agit login` checks that it can save credentials under `AGIT_HOME` before it
54
+ asks the Hub for anything. An agent sandbox that refuses writes there no
55
+ longer uses up the human's approval: login stops with the directory to allow
56
+ and says no login request was created, and `agit login --complete` leaves the
57
+ approved sign-in unclaimed so the same command finishes it later. If saving
58
+ still fails after sign-in, the new Hub session is signed out again.
59
+ - Signing in from an agent no longer fails when the agent runtime stops the
60
+ waiting `agit login`. Every browser and device-code request is recorded
61
+ privately under `AGIT_HOME` when the Hub creates it, and
62
+ `agit login --complete` without a value finishes it from any later process,
63
+ including an interrupted `agit login --device`. `--complete` now waits for
64
+ the approval for up to 90 seconds (`--wait <seconds>`, `0` checks once)
65
+ instead of checking once, keeps waiting through a failed poll, keeps the
66
+ request when the wait runs out, and forgets it when the Hub says it expired
67
+ or was already used. Running the printed `--complete` command again after
68
+ the sign-in finished reports success instead of "no longer valid". A new
69
+ `agit login` finishes a request the human already approved instead of
70
+ replacing it. `agit whoami --check`, `agit commit` and commands that stop
71
+ with "not logged in" first claim an approved request once, and otherwise
72
+ point to `agit login --complete` instead of a new login. Signing out cancels
73
+ a sign-in still being claimed: a session approved after `agit logout` is
74
+ signed out again instead of saved, and a session a concurrent sign-in saved
75
+ while `agit logout` ran is revoked with the credentials it removes. A second
76
+ `agit login --complete` or a new `agit login` started while another process
77
+ claims the same sign-in waits for it and reports success instead of "no
78
+ longer valid" or a new login link.
79
+ - Local state problems read as local problems. `agit whoami --check` reports
80
+ an unwritable home or a held credential lock instead of "can't reach" the
81
+ Hub, `agit doctor` checks that `AGIT_HOME` is writable, and every command
82
+ that meets one exits with the precondition code. Messages name the agit lock
83
+ another process holds and say that agit's lock files are released when their
84
+ process exits and must not be deleted; credential locks give up after a
85
+ bounded wait, and session locks say what they are waiting for.
86
+ - Re-importing a session describes its claim: a registration is saved by the
87
+ import, a saved session says where and how to record later turns, and a
88
+ session saved elsewhere says how to move it. The link file path is no longer
89
+ offered as a next step, and a failed import restores the session's previous
90
+ link, including none.
91
+ - A session targeted at `main` is refused before anything is adopted or
92
+ created, with the reason and an example branch in the caller's syntax.
93
+ - `agit push` leaves an `origin` that already points at the destination alone
94
+ and writes a changed one under the repository lock, so a manual push and a
95
+ hook's auto-push no longer collide on `.git/config`. Git failures on a held
96
+ lock say not to delete it while a git process runs; a refused write says the
97
+ checkout is not writable instead.
98
+ - `agit setup` recognizes its own hooks by their arguments, so installing from
99
+ another executable path replaces the old entry instead of adding a second
100
+ one.
101
+
11
102
  ## [0.2.12] - 2026-09-28
12
103
 
13
104
  ### Fixed
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@einsia/agent-git",
3
- "version": "0.2.12",
3
+ "version": "0.2.13",
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.12",
53
- "@einsia/agent-git-linux-arm64": "0.2.12",
54
- "@einsia/agent-git-darwin-x64": "0.2.12",
55
- "@einsia/agent-git-darwin-arm64": "0.2.12",
56
- "@einsia/agent-git-win32-x64": "0.2.12"
52
+ "@einsia/agent-git-linux-x64": "0.2.13",
53
+ "@einsia/agent-git-linux-arm64": "0.2.13",
54
+ "@einsia/agent-git-darwin-x64": "0.2.13",
55
+ "@einsia/agent-git-darwin-arm64": "0.2.13",
56
+ "@einsia/agent-git-win32-x64": "0.2.13"
57
57
  }
58
58
  }