@einsia/agent-git 0.1.2 → 0.2.1
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 +96 -0
- package/README.md +19 -12
- package/npm/README.md +8 -0
- package/npm/lib/run.js +4 -1
- package/npm/postinstall.js +12 -2
- package/package.json +6 -6
package/CHANGELOG.md
CHANGED
|
@@ -6,6 +6,100 @@ Every notable change to agit, the AgentGit CLI, by release. The format follows
|
|
|
6
6
|
its [GitHub Release](https://github.com/Einsia/agent-git/releases), and the
|
|
7
7
|
`@einsia/agent-git` npm package ships this file.
|
|
8
8
|
|
|
9
|
+
## [0.2.1] - 2026-09-17
|
|
10
|
+
|
|
11
|
+
### Added
|
|
12
|
+
|
|
13
|
+
- **Native Windows peer remote control.** Windows supports the same controller,
|
|
14
|
+
executor and Cloud tunnel protocol as Linux and macOS, using a current-user
|
|
15
|
+
named pipe for local owner RPC.
|
|
16
|
+
- **Bundled Git and Git LFS.** Official distribution binaries include their Git
|
|
17
|
+
runtime, so session version control does not require a separate Git installation.
|
|
18
|
+
|
|
19
|
+
### Changed
|
|
20
|
+
|
|
21
|
+
- **Owner-only Cloud access by default.** Run `agit login`, then
|
|
22
|
+
`agit rc start --detach`. Startup registers the device and enables remote control
|
|
23
|
+
for the signed-in owner, without a separate enrollment command. Use the same Hub
|
|
24
|
+
account in Web Workspaces or the desktop app. This does not grant public access.
|
|
25
|
+
- **Remove the paired RC transport.** Startup and device management use peer/Cloud
|
|
26
|
+
only. Users of the paired default in 0.2.0 must upgrade; the existing Linux 0.2.0
|
|
27
|
+
peer/Cloud protocol remains supported. Server retirement follows verification of
|
|
28
|
+
the new Windows and Linux release artifacts.
|
|
29
|
+
- Reuse Cloud HTTP connections, overlap admission checks with tunnel setup, and
|
|
30
|
+
race resolved TCP addresses to avoid waiting on a slow address before trying another.
|
|
31
|
+
- Reduce repeated repository checks and keep repository preparation and background
|
|
32
|
+
metadata work off the native session command loop. Record startup phase timings
|
|
33
|
+
without logging prompt contents.
|
|
34
|
+
|
|
35
|
+
### Fixed
|
|
36
|
+
|
|
37
|
+
- Prevent detached Windows daemon helpers from opening console windows; release
|
|
38
|
+
inherited caller pipes when starting in the background.
|
|
39
|
+
- Preserve tunnel failure details and renew Cloud authority without repeatedly
|
|
40
|
+
reconnecting healthy idle sessions.
|
|
41
|
+
- Recover a revoked device registration when its owner explicitly starts RC again;
|
|
42
|
+
background reconnects do not undo revocation.
|
|
43
|
+
- Read history and goals from fresh Codex sessions before a transcript file exists,
|
|
44
|
+
and isolate history readers from snapshot capture and session control.
|
|
45
|
+
- Preserve native history identity and snapshot consistency, and protect generated
|
|
46
|
+
session observations with repository secret rules before settlement.
|
|
47
|
+
|
|
48
|
+
## [0.2.0] - 2026-09-16
|
|
49
|
+
|
|
50
|
+
### Added
|
|
51
|
+
|
|
52
|
+
- **Daemon peers and Cloud tunnels.** `agitd` manages local harness sessions while
|
|
53
|
+
independent SSH or Cloud tunnel workers transport peer messages. Controllers can
|
|
54
|
+
discover and operate sessions on another executor through the same peer protocol.
|
|
55
|
+
Peer hosting is available on Linux and macOS. Cloud connections require a Hub
|
|
56
|
+
with peer relay support enabled.
|
|
57
|
+
- **Independent control and inbound access.** A local controller can connect to
|
|
58
|
+
another device while its own inbound access stays disabled. Cloud admission and
|
|
59
|
+
executor session permissions are enforced separately. Adapters can constrain
|
|
60
|
+
requests to a lower role, enforced by the executor when a queued write runs.
|
|
61
|
+
- **More native conversation sources.** Discover and import OpenClaw, Hermes and
|
|
62
|
+
WorkBuddy sessions, with runtime-specific setup and transcript handling.
|
|
63
|
+
- **Large session files.** Stage binary deliverables with `agit file add --lfs`;
|
|
64
|
+
verify payloads during upload and download before publishing or materializing them.
|
|
65
|
+
- **Local and scoped search.** Search saved local history without Hub requests, or
|
|
66
|
+
limit remote session searches to an organization or the current code origin.
|
|
67
|
+
- **Optional automatic publishing.** Configure `push.auto` per user or repository
|
|
68
|
+
to publish settled turns, while keeping explicit publication available.
|
|
69
|
+
- **Usage statistics controls.** Inspect collection with `agit telemetry`, disable
|
|
70
|
+
it with `agit telemetry disable` or `DO_NOT_TRACK=1`, and preview the field policy.
|
|
71
|
+
Setup discloses the default-on choice; a recorded opt-out is preserved. See the
|
|
72
|
+
[collection and privacy details](docs/telemetry.md).
|
|
73
|
+
|
|
74
|
+
### Changed
|
|
75
|
+
|
|
76
|
+
- **Use `agit run` for saved sources.** `agit open` is removed. Update scripts to
|
|
77
|
+
use `agit run owner/repo@ref`; `agit resume` still continues a selected session.
|
|
78
|
+
- Review a frozen publication in an interactive agent before pushing, including
|
|
79
|
+
explicit handling of credential findings.
|
|
80
|
+
- Status includes bounded native session details, shared files, merge progress and
|
|
81
|
+
project metadata without unbounded transcript scans.
|
|
82
|
+
- Interactive startup can offer to install an available update after confirmation.
|
|
83
|
+
Non-interactive update notices go to stderr and preserve JSON output.
|
|
84
|
+
- Repository secret dictionaries keep their encryption keys in local Git metadata,
|
|
85
|
+
avoiding repeated Keychain prompts after migration. Neither the dictionary nor
|
|
86
|
+
its key is uploaded by push.
|
|
87
|
+
|
|
88
|
+
### Fixed
|
|
89
|
+
|
|
90
|
+
- Recover from expired CLI credentials and retry browser sign-in choices without
|
|
91
|
+
losing the selected Hub or repository.
|
|
92
|
+
- Keep session discovery and native watch preparation responsive, hide internal
|
|
93
|
+
runtime sessions, and preserve transcript identity across polling and replay.
|
|
94
|
+
- Correlate canonical Codex user history and prevent duplicate Claude prompts.
|
|
95
|
+
- Preserve native Codex session titles and recover remote session history reliably.
|
|
96
|
+
- Keep controller requests, tunnel failures and harness failures within their
|
|
97
|
+
ownership boundaries, with bounded queues and diagnostic logs for recovery.
|
|
98
|
+
- Support Hub SOCKS proxies and preserve Windows browser launch, process ownership
|
|
99
|
+
and named-pipe behavior.
|
|
100
|
+
- Scope installed AgentGit skills to explicit session operations and retire legacy
|
|
101
|
+
home-directory instructions without replacing unrelated user content.
|
|
102
|
+
|
|
9
103
|
## [0.1.2] - 2026-09-12
|
|
10
104
|
|
|
11
105
|
### Added
|
|
@@ -107,6 +201,8 @@ First public release.
|
|
|
107
201
|
per-platform packages for Linux and macOS on x64 and arm64, and GitHub Release
|
|
108
202
|
artifacts with `SHA256SUMS`.
|
|
109
203
|
|
|
204
|
+
[0.2.1]: https://github.com/Einsia/agent-git/releases/tag/agit-v0.2.1
|
|
205
|
+
[0.2.0]: https://github.com/Einsia/agent-git/releases/tag/agit-v0.2.0
|
|
110
206
|
[0.1.2]: https://github.com/Einsia/agent-git/releases/tag/agit-v0.1.2
|
|
111
207
|
[0.1.1]: https://github.com/Einsia/agent-git/releases/tag/agit-v0.1.1
|
|
112
208
|
[0.1.0]: https://github.com/Einsia/agent-git/releases/tag/agit-v0.1.0
|
package/README.md
CHANGED
|
@@ -18,13 +18,12 @@ agit import choose an existing runtime conversation to ado
|
|
|
18
18
|
agit log choose a session and browse its history
|
|
19
19
|
agit push choose a saved session to publish
|
|
20
20
|
agit share choose a session and review link settings
|
|
21
|
-
agit
|
|
21
|
+
agit run owner/repo@ref open a saved source, forking when needed
|
|
22
22
|
```
|
|
23
23
|
|
|
24
24
|
These bare commands open their interfaces in a human terminal. `agit resume`
|
|
25
|
-
continues the same session and never forks; `agit
|
|
26
|
-
session from a tag, historical point or another author's source.
|
|
27
|
-
remains a compatibility alias for `open`.
|
|
25
|
+
continues the same session and never forks; `agit run` can start a new writable
|
|
26
|
+
session from a tag, historical point or another author's source.
|
|
28
27
|
|
|
29
28
|
Inside an adopted agent session, `agit commit` saves completed turns and
|
|
30
29
|
`agit push` publishes that session. For scripts, pass the target explicitly,
|
|
@@ -47,7 +46,7 @@ Inspecting lineage in an existing repository requires NUL-framed Git worktree ou
|
|
|
47
46
|
normally available in Git 2.36 or newer. An unsupported Git reports `git_worktree_format`;
|
|
48
47
|
explicit `--onto`, `--independent`, and `--link-only` imports retain their ordinary checks.
|
|
49
48
|
|
|
50
|
-
`agit clone` fetches repository history locally. Use `agit
|
|
49
|
+
`agit clone` fetches repository history locally. Use `agit run` or `agit resume`
|
|
51
50
|
to start a runtime. A clone is **read-only by default** on the Hub: nothing is
|
|
52
51
|
created in your name and `origin` points at the source. `agit clone --mine`
|
|
53
52
|
creates your copy, repoints `origin` and remembers the source as `upstream`.
|
|
@@ -70,9 +69,10 @@ picks the platform sub-package matching your `os`/`cpu`; on platforms with no
|
|
|
70
69
|
prebuilt binary (e.g. FreeBSD) running `agit` prints the source-build recipe.
|
|
71
70
|
Details and environment variables: [`npm/README.md`](npm/README.md).
|
|
72
71
|
|
|
73
|
-
Windows x64 packages include the
|
|
74
|
-
|
|
75
|
-
|
|
72
|
+
Windows x64 packages include the native peer RC daemon. On Windows, Linux and macOS, run
|
|
73
|
+
`agit login` followed by `agit rc start --detach` to register the device and allow your own
|
|
74
|
+
account to control it from Workspaces. Windows owner RPC uses a local named pipe restricted
|
|
75
|
+
to the current user. RC state requires a private, user-owned directory.
|
|
76
76
|
|
|
77
77
|
pnpm (v10+) does not run dependency install scripts by default, so the
|
|
78
78
|
automatic `agit setup` is skipped there — run `agit setup` once yourself
|
|
@@ -82,8 +82,10 @@ The Linux artifact is **musl static-linked**, so no minimum glibc — the
|
|
|
82
82
|
release pipeline runs every Linux binary inside an Alpine / Amazon Linux /
|
|
83
83
|
Debian / Ubuntu container matrix before publishing.
|
|
84
84
|
|
|
85
|
-
|
|
86
|
-
|
|
85
|
+
Prebuilt binaries include Git and Git LFS, extracted into a private cache on first
|
|
86
|
+
use. Your shell PATH and global Git configuration stay unchanged. Source builds
|
|
87
|
+
use system Git; `AGIT_USE_SYSTEM_GIT=1` selects it in a prebuilt binary too.
|
|
88
|
+
See [runtime configuration and source prerequisites](docs/01_setup.md).
|
|
87
89
|
|
|
88
90
|
> Do not install `@einsia/agentgit` (no hyphen) — that is the pre-rewrite
|
|
89
91
|
> CLI; its protocol does not match this branch and it will not work.
|
|
@@ -161,10 +163,15 @@ The section becomes the GitHub Release body (`scripts/release-notes.mjs` extract
|
|
|
161
163
|
`release.yml`, with repository-relative links pinned to the release tag) and ships inside
|
|
162
164
|
the `@einsia/agent-git` package.
|
|
163
165
|
|
|
164
|
-
|
|
166
|
+
After the source release commit passes CI and is synchronized to GitHub `main`,
|
|
167
|
+
verify the mirrored files and create the tag in that GitHub checkout. The mirror
|
|
168
|
+
rewrites commit IDs, so the source repository's SHA is not the release SHA.
|
|
169
|
+
Pushing the tag to GitHub runs the whole chain — binaries first, npm right after:
|
|
165
170
|
|
|
166
171
|
```sh
|
|
167
|
-
|
|
172
|
+
# Run from the verified Einsia/agent-git GitHub mirror checkout.
|
|
173
|
+
git tag agit-v0.1.0
|
|
174
|
+
git push git@github.com:Einsia/agent-git.git refs/tags/agit-v0.1.0
|
|
168
175
|
```
|
|
169
176
|
|
|
170
177
|
Distribution to users runs through the npm registry: each target ships as a
|
package/npm/README.md
CHANGED
|
@@ -26,6 +26,13 @@ the platform sub-package matching your `os`/`cpu` via `optionalDependencies`
|
|
|
26
26
|
that execs that binary with argv/stdio/exit-code forwarded, and `postinstall`
|
|
27
27
|
runs `agit setup` once to wire skills, hooks, MCP and AGENTS.md.
|
|
28
28
|
|
|
29
|
+
The executable contains Git and Git LFS. On first use it extracts them under
|
|
30
|
+
`$AGIT_HOME/git-runtime` (default `~/.agit/git-runtime`), with no runtime download.
|
|
31
|
+
Only AgentGit's child processes use that private runtime; your shell PATH and
|
|
32
|
+
global Git configuration are unchanged. Copying or upgrading the single executable
|
|
33
|
+
also carries its Git runtime. External credential helpers and extensions may still
|
|
34
|
+
need your local tools; `AGIT_USE_SYSTEM_GIT=1` uses your system Git installation.
|
|
35
|
+
|
|
29
36
|
pnpm (v10+) blocks dependency install scripts unless approved, so under pnpm
|
|
30
37
|
the automatic `agit setup` does not run — run it once yourself after
|
|
31
38
|
installing (or `pnpm approve-builds -g` and reinstall).
|
|
@@ -68,6 +75,7 @@ Unsupported operating system and architecture pairs get no prebuilt binary: runn
|
|
|
68
75
|
| `AGIT_FORCE_INSTALL` | Also run postinstall inside the source checkout (CI smoke tests). |
|
|
69
76
|
| `AGIT_HUB_URL` | Point the CLI at another hub (default `https://agent-git.com`). |
|
|
70
77
|
| `AGIT_NPM_REGISTRY` | Registry `agit upgrade` downloads platform packages from. |
|
|
78
|
+
| `AGIT_USE_SYSTEM_GIT` | Set to `1` to use system Git and Git LFS instead of the bundled runtime. |
|
|
71
79
|
|
|
72
80
|
## Upgrading
|
|
73
81
|
|
package/npm/lib/run.js
CHANGED
|
@@ -37,7 +37,10 @@ function run() {
|
|
|
37
37
|
process.exit(127);
|
|
38
38
|
}
|
|
39
39
|
|
|
40
|
-
const r = spawnSync(bin, process.argv.slice(2), {
|
|
40
|
+
const r = spawnSync(bin, process.argv.slice(2), {
|
|
41
|
+
stdio: 'inherit',
|
|
42
|
+
env: { ...process.env, AGIT_INSTALL_CHANNEL: 'npm_global' },
|
|
43
|
+
});
|
|
41
44
|
if (r.error) {
|
|
42
45
|
log.error(`failed to start ${bin}: ${r.error.message}`);
|
|
43
46
|
process.exit(1);
|
package/npm/postinstall.js
CHANGED
|
@@ -42,15 +42,25 @@ function main() {
|
|
|
42
42
|
}
|
|
43
43
|
if (!bin) return; // unsupported platform: the shim gives full instructions on the next command.
|
|
44
44
|
|
|
45
|
-
const
|
|
45
|
+
const env = { ...process.env, AGIT_TELEMETRY_DEFER: '1', AGIT_INSTALL_CHANNEL: 'npm_global' };
|
|
46
|
+
const check = spawnSync(bin, ['--version'], { encoding: 'utf8', env });
|
|
46
47
|
if (check.error || check.status !== 0) {
|
|
47
48
|
log.warn(`installed binary does not run: ${bin}`);
|
|
48
49
|
log.warn((check.stderr || check.error?.message || `exit ${check.status}`).trim());
|
|
49
50
|
return;
|
|
50
51
|
}
|
|
51
52
|
|
|
53
|
+
// npx create-agit owns its durable-copy receipt and passes the browser acquisition key.
|
|
54
|
+
if (process.env.npm_command !== 'exec') {
|
|
55
|
+
const receiptArgs = ['--internal-install-completed'];
|
|
56
|
+
if (!truthy(process.env.npm_config_foreground_scripts)) receiptArgs.push('--defer-notice');
|
|
57
|
+
spawnSync(bin, receiptArgs, {
|
|
58
|
+
stdio: ['ignore', 'inherit', 'inherit'],
|
|
59
|
+
env: { ...process.env, AGIT_INSTALL_CHANNEL: 'npm_global' },
|
|
60
|
+
});
|
|
61
|
+
}
|
|
52
62
|
if (truthy(process.env.AGIT_SKIP_SETUP)) return;
|
|
53
|
-
const setup = spawnSync(bin, ['setup'], { stdio: 'inherit' });
|
|
63
|
+
const setup = spawnSync(bin, ['setup'], { stdio: 'inherit', env });
|
|
54
64
|
if (setup.status !== 0) {
|
|
55
65
|
log.warn('`agit setup` did not fully succeed — re-run it any time; the CLI itself is installed.');
|
|
56
66
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@einsia/agent-git",
|
|
3
|
-
"version": "0.1
|
|
3
|
+
"version": "0.2.1",
|
|
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.1
|
|
53
|
-
"@einsia/agent-git-linux-arm64": "0.1
|
|
54
|
-
"@einsia/agent-git-darwin-x64": "0.1
|
|
55
|
-
"@einsia/agent-git-darwin-arm64": "0.1
|
|
56
|
-
"@einsia/agent-git-win32-x64": "0.1
|
|
52
|
+
"@einsia/agent-git-linux-x64": "0.2.1",
|
|
53
|
+
"@einsia/agent-git-linux-arm64": "0.2.1",
|
|
54
|
+
"@einsia/agent-git-darwin-x64": "0.2.1",
|
|
55
|
+
"@einsia/agent-git-darwin-arm64": "0.2.1",
|
|
56
|
+
"@einsia/agent-git-win32-x64": "0.2.1"
|
|
57
57
|
}
|
|
58
58
|
}
|