agentdir-cli 0.7.7__tar.gz → 0.7.8__tar.gz
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.
- {agentdir_cli-0.7.7/src/agentdir_cli.egg-info → agentdir_cli-0.7.8}/PKG-INFO +15 -3
- {agentdir_cli-0.7.7 → agentdir_cli-0.7.8}/README.md +14 -2
- {agentdir_cli-0.7.7 → agentdir_cli-0.7.8}/docs/AGENTIC_CODING.md +10 -1
- {agentdir_cli-0.7.7 → agentdir_cli-0.7.8}/docs/INSTALL.md +17 -6
- {agentdir_cli-0.7.7 → agentdir_cli-0.7.8}/docs/PI_PACKAGE.md +5 -3
- {agentdir_cli-0.7.7 → agentdir_cli-0.7.8}/docs/RELEASING.md +15 -15
- agentdir_cli-0.7.8/docs/releases/v0.7.8.md +50 -0
- {agentdir_cli-0.7.7 → agentdir_cli-0.7.8}/package.json +2 -2
- {agentdir_cli-0.7.7 → agentdir_cli-0.7.8}/pyproject.toml +1 -1
- {agentdir_cli-0.7.7 → agentdir_cli-0.7.8}/scripts/install.sh +3 -1
- {agentdir_cli-0.7.7 → agentdir_cli-0.7.8}/scripts/rollback.sh +1 -1
- {agentdir_cli-0.7.7 → agentdir_cli-0.7.8}/skills/agentdir/SKILL.md +1 -1
- {agentdir_cli-0.7.7 → agentdir_cli-0.7.8}/src/agentdir/__init__.py +1 -1
- {agentdir_cli-0.7.7 → agentdir_cli-0.7.8}/src/agentdir/skills.py +6 -3
- {agentdir_cli-0.7.7 → agentdir_cli-0.7.8/src/agentdir_cli.egg-info}/PKG-INFO +15 -3
- {agentdir_cli-0.7.7 → agentdir_cli-0.7.8}/src/agentdir_cli.egg-info/SOURCES.txt +2 -0
- {agentdir_cli-0.7.7 → agentdir_cli-0.7.8}/tests/test_agent_first.py +20 -1
- {agentdir_cli-0.7.7 → agentdir_cli-0.7.8}/tests/test_environment.py +1 -0
- agentdir_cli-0.7.8/tests/test_install_script.py +14 -0
- {agentdir_cli-0.7.7 → agentdir_cli-0.7.8}/tests/test_pi_package.py +3 -2
- {agentdir_cli-0.7.7 → agentdir_cli-0.7.8}/LICENSE +0 -0
- {agentdir_cli-0.7.7 → agentdir_cli-0.7.8}/MANIFEST.in +0 -0
- {agentdir_cli-0.7.7 → agentdir_cli-0.7.8}/docs/DEMO.md +0 -0
- {agentdir_cli-0.7.7 → agentdir_cli-0.7.8}/docs/PRD.md +0 -0
- {agentdir_cli-0.7.7 → agentdir_cli-0.7.8}/docs/TECH_BRIEF.md +0 -0
- {agentdir_cli-0.7.7 → agentdir_cli-0.7.8}/docs/assets/agentdir-overview.png +0 -0
- {agentdir_cli-0.7.7 → agentdir_cli-0.7.8}/docs/investigations/2026-05-12-cross-repo-ergonomics-lanes.md +0 -0
- {agentdir_cli-0.7.7 → agentdir_cli-0.7.8}/docs/investigations/2026-05-12-rag-vector-scenarios.md +0 -0
- {agentdir_cli-0.7.7 → agentdir_cli-0.7.8}/docs/releases/v0.1.0.md +0 -0
- {agentdir_cli-0.7.7 → agentdir_cli-0.7.8}/docs/releases/v0.1.1.md +0 -0
- {agentdir_cli-0.7.7 → agentdir_cli-0.7.8}/docs/releases/v0.2.0.md +0 -0
- {agentdir_cli-0.7.7 → agentdir_cli-0.7.8}/docs/releases/v0.3.0.md +0 -0
- {agentdir_cli-0.7.7 → agentdir_cli-0.7.8}/docs/releases/v0.3.1.md +0 -0
- {agentdir_cli-0.7.7 → agentdir_cli-0.7.8}/docs/releases/v0.3.2.md +0 -0
- {agentdir_cli-0.7.7 → agentdir_cli-0.7.8}/docs/releases/v0.3.3.md +0 -0
- {agentdir_cli-0.7.7 → agentdir_cli-0.7.8}/docs/releases/v0.3.4.md +0 -0
- {agentdir_cli-0.7.7 → agentdir_cli-0.7.8}/docs/releases/v0.4.0.md +0 -0
- {agentdir_cli-0.7.7 → agentdir_cli-0.7.8}/docs/releases/v0.5.0.md +0 -0
- {agentdir_cli-0.7.7 → agentdir_cli-0.7.8}/docs/releases/v0.5.1.md +0 -0
- {agentdir_cli-0.7.7 → agentdir_cli-0.7.8}/docs/releases/v0.5.2.md +0 -0
- {agentdir_cli-0.7.7 → agentdir_cli-0.7.8}/docs/releases/v0.5.3.md +0 -0
- {agentdir_cli-0.7.7 → agentdir_cli-0.7.8}/docs/releases/v0.6.0.md +0 -0
- {agentdir_cli-0.7.7 → agentdir_cli-0.7.8}/docs/releases/v0.7.0.md +0 -0
- {agentdir_cli-0.7.7 → agentdir_cli-0.7.8}/docs/releases/v0.7.1.md +0 -0
- {agentdir_cli-0.7.7 → agentdir_cli-0.7.8}/docs/releases/v0.7.2.md +0 -0
- {agentdir_cli-0.7.7 → agentdir_cli-0.7.8}/docs/releases/v0.7.3.md +0 -0
- {agentdir_cli-0.7.7 → agentdir_cli-0.7.8}/docs/releases/v0.7.4.md +0 -0
- {agentdir_cli-0.7.7 → agentdir_cli-0.7.8}/docs/releases/v0.7.5.md +0 -0
- {agentdir_cli-0.7.7 → agentdir_cli-0.7.8}/docs/releases/v0.7.6.md +0 -0
- {agentdir_cli-0.7.7 → agentdir_cli-0.7.8}/docs/releases/v0.7.7.md +0 -0
- {agentdir_cli-0.7.7 → agentdir_cli-0.7.8}/examples/dogfood-session.sh +0 -0
- {agentdir_cli-0.7.7 → agentdir_cli-0.7.8}/setup.cfg +0 -0
- {agentdir_cli-0.7.7 → agentdir_cli-0.7.8}/src/agentdir/__main__.py +0 -0
- {agentdir_cli-0.7.7 → agentdir_cli-0.7.8}/src/agentdir/actors.py +0 -0
- {agentdir_cli-0.7.7 → agentdir_cli-0.7.8}/src/agentdir/artifacts.py +0 -0
- {agentdir_cli-0.7.7 → agentdir_cli-0.7.8}/src/agentdir/audit.py +0 -0
- {agentdir_cli-0.7.7 → agentdir_cli-0.7.8}/src/agentdir/capture.py +0 -0
- {agentdir_cli-0.7.7 → agentdir_cli-0.7.8}/src/agentdir/cli.py +0 -0
- {agentdir_cli-0.7.7 → agentdir_cli-0.7.8}/src/agentdir/context.py +0 -0
- {agentdir_cli-0.7.7 → agentdir_cli-0.7.8}/src/agentdir/control.py +0 -0
- {agentdir_cli-0.7.7 → agentdir_cli-0.7.8}/src/agentdir/daemon.py +0 -0
- {agentdir_cli-0.7.7 → agentdir_cli-0.7.8}/src/agentdir/doctor.py +0 -0
- {agentdir_cli-0.7.7 → agentdir_cli-0.7.8}/src/agentdir/envelope.py +0 -0
- {agentdir_cli-0.7.7 → agentdir_cli-0.7.8}/src/agentdir/environment.py +0 -0
- {agentdir_cli-0.7.7 → agentdir_cli-0.7.8}/src/agentdir/events.py +0 -0
- {agentdir_cli-0.7.7 → agentdir_cli-0.7.8}/src/agentdir/federation.py +0 -0
- {agentdir_cli-0.7.7 → agentdir_cli-0.7.8}/src/agentdir/fsutil.py +0 -0
- {agentdir_cli-0.7.7 → agentdir_cli-0.7.8}/src/agentdir/git.py +0 -0
- {agentdir_cli-0.7.7 → agentdir_cli-0.7.8}/src/agentdir/gitignore.py +0 -0
- {agentdir_cli-0.7.7 → agentdir_cli-0.7.8}/src/agentdir/hooks.py +0 -0
- {agentdir_cli-0.7.7 → agentdir_cli-0.7.8}/src/agentdir/index.py +0 -0
- {agentdir_cli-0.7.7 → agentdir_cli-0.7.8}/src/agentdir/mailbox.py +0 -0
- {agentdir_cli-0.7.7 → agentdir_cli-0.7.8}/src/agentdir/memory.py +0 -0
- {agentdir_cli-0.7.7 → agentdir_cli-0.7.8}/src/agentdir/query.py +0 -0
- {agentdir_cli-0.7.7 → agentdir_cli-0.7.8}/src/agentdir/redaction.py +0 -0
- {agentdir_cli-0.7.7 → agentdir_cli-0.7.8}/src/agentdir/rendering.py +0 -0
- {agentdir_cli-0.7.7 → agentdir_cli-0.7.8}/src/agentdir/replay.py +0 -0
- {agentdir_cli-0.7.7 → agentdir_cli-0.7.8}/src/agentdir/retention.py +0 -0
- {agentdir_cli-0.7.7 → agentdir_cli-0.7.8}/src/agentdir/review.py +0 -0
- {agentdir_cli-0.7.7 → agentdir_cli-0.7.8}/src/agentdir/secrets.py +0 -0
- {agentdir_cli-0.7.7 → agentdir_cli-0.7.8}/src/agentdir/sessions.py +0 -0
- {agentdir_cli-0.7.7 → agentdir_cli-0.7.8}/src/agentdir/store.py +0 -0
- {agentdir_cli-0.7.7 → agentdir_cli-0.7.8}/src/agentdir/upgrade.py +0 -0
- {agentdir_cli-0.7.7 → agentdir_cli-0.7.8}/src/agentdir_cli.egg-info/dependency_links.txt +0 -0
- {agentdir_cli-0.7.7 → agentdir_cli-0.7.8}/src/agentdir_cli.egg-info/entry_points.txt +0 -0
- {agentdir_cli-0.7.7 → agentdir_cli-0.7.8}/src/agentdir_cli.egg-info/requires.txt +0 -0
- {agentdir_cli-0.7.7 → agentdir_cli-0.7.8}/src/agentdir_cli.egg-info/top_level.txt +0 -0
- {agentdir_cli-0.7.7 → agentdir_cli-0.7.8}/tests/test_agent_trust.py +0 -0
- {agentdir_cli-0.7.7 → agentdir_cli-0.7.8}/tests/test_audit.py +0 -0
- {agentdir_cli-0.7.7 → agentdir_cli-0.7.8}/tests/test_truncation.py +0 -0
- {agentdir_cli-0.7.7 → agentdir_cli-0.7.8}/tests/test_v1_behavior.py +0 -0
- {agentdir_cli-0.7.7 → agentdir_cli-0.7.8}/tests/test_vector_memory.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: agentdir-cli
|
|
3
|
-
Version: 0.7.
|
|
3
|
+
Version: 0.7.8
|
|
4
4
|
Summary: Local-first Maildir-inspired work mailstore for software agents
|
|
5
5
|
Author: AgentDir Contributors
|
|
6
6
|
License-Expression: MIT
|
|
@@ -128,7 +128,8 @@ curl -fsSL https://raw.githubusercontent.com/jstxn/agentdir/main/scripts/install
|
|
|
128
128
|
|
|
129
129
|
The installer uses `pipx` when available. Otherwise it creates a self-contained
|
|
130
130
|
virtual environment under `~/.local/share/agentdir` and links the CLI into
|
|
131
|
-
`~/.local/bin`.
|
|
131
|
+
`~/.local/bin`. It does not edit Git configuration or ignore files; after
|
|
132
|
+
installation it prints the explicit adoption choices.
|
|
132
133
|
|
|
133
134
|
Verify:
|
|
134
135
|
|
|
@@ -155,7 +156,7 @@ available automatically during coding tasks:
|
|
|
155
156
|
Package page: [@jstxn/agentdir-pi](https://pi.dev/packages/@jstxn/agentdir-pi)
|
|
156
157
|
|
|
157
158
|
```bash
|
|
158
|
-
pi install npm:@jstxn/agentdir-pi@0.7.
|
|
159
|
+
pi install npm:@jstxn/agentdir-pi@0.7.8
|
|
159
160
|
# or install directly from a local checkout / release tag:
|
|
160
161
|
pi install /absolute/path/to/agentdir
|
|
161
162
|
pi install git:github.com/jstxn/agentdir@<tag-or-commit>
|
|
@@ -174,6 +175,13 @@ Run once from a git repository:
|
|
|
174
175
|
agentdir adopt
|
|
175
176
|
```
|
|
176
177
|
|
|
178
|
+
Coding agents use the non-interactive form below so `.agentdir/` is ignored at
|
|
179
|
+
the user level without creating a repository `.gitignore` change:
|
|
180
|
+
|
|
181
|
+
```bash
|
|
182
|
+
agentdir adopt --gitignore user
|
|
183
|
+
```
|
|
184
|
+
|
|
177
185
|
This is intentionally boring setup. It prepares the repository once, then agents
|
|
178
186
|
operate AgentDir during normal coding work:
|
|
179
187
|
|
|
@@ -219,6 +227,10 @@ agentdir adopt --gitignore user # write the user-level Git excludes file
|
|
|
219
227
|
agentdir adopt --gitignore none # leave ignore files unchanged
|
|
220
228
|
```
|
|
221
229
|
|
|
230
|
+
Generated AgentDir guidance selects `--gitignore user` by default. The plain
|
|
231
|
+
interactive command still prompts, and all three explicit choices remain
|
|
232
|
+
available.
|
|
233
|
+
|
|
222
234
|
Undo managed setup while keeping the `.agentdir` evidence store:
|
|
223
235
|
|
|
224
236
|
```bash
|
|
@@ -95,7 +95,8 @@ curl -fsSL https://raw.githubusercontent.com/jstxn/agentdir/main/scripts/install
|
|
|
95
95
|
|
|
96
96
|
The installer uses `pipx` when available. Otherwise it creates a self-contained
|
|
97
97
|
virtual environment under `~/.local/share/agentdir` and links the CLI into
|
|
98
|
-
`~/.local/bin`.
|
|
98
|
+
`~/.local/bin`. It does not edit Git configuration or ignore files; after
|
|
99
|
+
installation it prints the explicit adoption choices.
|
|
99
100
|
|
|
100
101
|
Verify:
|
|
101
102
|
|
|
@@ -122,7 +123,7 @@ available automatically during coding tasks:
|
|
|
122
123
|
Package page: [@jstxn/agentdir-pi](https://pi.dev/packages/@jstxn/agentdir-pi)
|
|
123
124
|
|
|
124
125
|
```bash
|
|
125
|
-
pi install npm:@jstxn/agentdir-pi@0.7.
|
|
126
|
+
pi install npm:@jstxn/agentdir-pi@0.7.8
|
|
126
127
|
# or install directly from a local checkout / release tag:
|
|
127
128
|
pi install /absolute/path/to/agentdir
|
|
128
129
|
pi install git:github.com/jstxn/agentdir@<tag-or-commit>
|
|
@@ -141,6 +142,13 @@ Run once from a git repository:
|
|
|
141
142
|
agentdir adopt
|
|
142
143
|
```
|
|
143
144
|
|
|
145
|
+
Coding agents use the non-interactive form below so `.agentdir/` is ignored at
|
|
146
|
+
the user level without creating a repository `.gitignore` change:
|
|
147
|
+
|
|
148
|
+
```bash
|
|
149
|
+
agentdir adopt --gitignore user
|
|
150
|
+
```
|
|
151
|
+
|
|
144
152
|
This is intentionally boring setup. It prepares the repository once, then agents
|
|
145
153
|
operate AgentDir during normal coding work:
|
|
146
154
|
|
|
@@ -186,6 +194,10 @@ agentdir adopt --gitignore user # write the user-level Git excludes file
|
|
|
186
194
|
agentdir adopt --gitignore none # leave ignore files unchanged
|
|
187
195
|
```
|
|
188
196
|
|
|
197
|
+
Generated AgentDir guidance selects `--gitignore user` by default. The plain
|
|
198
|
+
interactive command still prompts, and all three explicit choices remain
|
|
199
|
+
available.
|
|
200
|
+
|
|
189
201
|
Undo managed setup while keeping the `.agentdir` evidence store:
|
|
190
202
|
|
|
191
203
|
```bash
|
|
@@ -27,6 +27,15 @@ From a git repository:
|
|
|
27
27
|
agentdir adopt
|
|
28
28
|
```
|
|
29
29
|
|
|
30
|
+
For agent-driven, non-interactive setup, make the ignore destination explicit:
|
|
31
|
+
|
|
32
|
+
```bash
|
|
33
|
+
agentdir adopt --gitignore user
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
This keeps `.agentdir/` out of Git across repositories without changing a
|
|
37
|
+
project's tracked `.gitignore`.
|
|
38
|
+
|
|
30
39
|
This initializes `.agentdir`, installs managed Git hook shims, installs the
|
|
31
40
|
Codex skill in the user skill directory, writes broad project guidance for
|
|
32
41
|
common agent tools, asks interactive users where to ignore `.agentdir/`, runs
|
|
@@ -54,7 +63,7 @@ The user should not have to operate AgentDir during a normal coding session. Onc
|
|
|
54
63
|
Agent responsibilities:
|
|
55
64
|
|
|
56
65
|
- run `agentdir work start "<task>" --emit-context` when coding work begins
|
|
57
|
-
- run `agentdir adopt` once if the repository has not been prepared yet
|
|
66
|
+
- run `agentdir adopt --gitignore user` once if the repository has not been prepared yet
|
|
58
67
|
- use `agentdir status` when a single health view is needed
|
|
59
68
|
- emit context packs when retrieved context materially informs the work
|
|
60
69
|
- record which context sources were consumed and cited when reporting lineage
|
|
@@ -28,6 +28,17 @@ The installer downloads release assets anonymously with `curl`. If `curl` is
|
|
|
28
28
|
unavailable or the download fails, it falls back to authenticated GitHub CLI
|
|
29
29
|
(`gh auth login`).
|
|
30
30
|
|
|
31
|
+
The installer does not modify Git configuration or ignore files. It prints a
|
|
32
|
+
post-install command that agents can use from a repository:
|
|
33
|
+
|
|
34
|
+
```bash
|
|
35
|
+
agentdir adopt --gitignore user
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
This appends `.agentdir/` to the configured user-level Git excludes file. Use
|
|
39
|
+
`--gitignore project` for a repository `.gitignore` entry or `--gitignore none`
|
|
40
|
+
to leave ignore files unchanged.
|
|
41
|
+
|
|
31
42
|
The installer downloads the release wheel and installs it with `pipx` when available. If `pipx` is not installed, it falls back to a self-contained virtual environment at:
|
|
32
43
|
|
|
33
44
|
```text
|
|
@@ -65,7 +76,7 @@ Useful variants:
|
|
|
65
76
|
```bash
|
|
66
77
|
agentdir update --install-skill none
|
|
67
78
|
agentdir update --no-adopt
|
|
68
|
-
agentdir update --version v0.7.
|
|
79
|
+
agentdir update --version v0.7.8
|
|
69
80
|
agentdir update --dry-run
|
|
70
81
|
```
|
|
71
82
|
|
|
@@ -82,7 +93,7 @@ repo="$(mktemp -d)/agentdir-install-smoke"
|
|
|
82
93
|
mkdir -p "$repo"
|
|
83
94
|
git -C "$repo" init
|
|
84
95
|
cd "$repo"
|
|
85
|
-
agentdir adopt --install-skill store
|
|
96
|
+
agentdir adopt --install-skill store --gitignore user
|
|
86
97
|
agentdir work start "install smoke" --emit-context
|
|
87
98
|
agentdir run -- python3 -c "print('agentdir install smoke')"
|
|
88
99
|
agentdir evidence --brief
|
|
@@ -99,13 +110,13 @@ agentdir work finish --json
|
|
|
99
110
|
If you already have the wheel asset:
|
|
100
111
|
|
|
101
112
|
```bash
|
|
102
|
-
AGENTDIR_WHEEL=/path/to/agentdir_cli-0.7.
|
|
113
|
+
AGENTDIR_WHEEL=/path/to/agentdir_cli-0.7.8-py3-none-any.whl bash scripts/install.sh
|
|
103
114
|
```
|
|
104
115
|
|
|
105
116
|
To force the virtual environment installer even when `pipx` is present:
|
|
106
117
|
|
|
107
118
|
```bash
|
|
108
|
-
AGENTDIR_FORCE_VENV=1 AGENTDIR_WHEEL=/path/to/agentdir_cli-0.7.
|
|
119
|
+
AGENTDIR_FORCE_VENV=1 AGENTDIR_WHEEL=/path/to/agentdir_cli-0.7.8-py3-none-any.whl bash scripts/install.sh
|
|
109
120
|
```
|
|
110
121
|
|
|
111
122
|
## Roll Back To The Previous Release
|
|
@@ -122,13 +133,13 @@ curl -fsSL https://raw.githubusercontent.com/jstxn/agentdir/main/scripts/rollbac
|
|
|
122
133
|
To choose a specific release:
|
|
123
134
|
|
|
124
135
|
```bash
|
|
125
|
-
curl -fsSL https://raw.githubusercontent.com/jstxn/agentdir/main/scripts/rollback.sh | bash -s -- v0.7.
|
|
136
|
+
curl -fsSL https://raw.githubusercontent.com/jstxn/agentdir/main/scripts/rollback.sh | bash -s -- v0.7.7
|
|
126
137
|
```
|
|
127
138
|
|
|
128
139
|
The equivalent manual rollback is:
|
|
129
140
|
|
|
130
141
|
```bash
|
|
131
|
-
curl -fsSL https://raw.githubusercontent.com/jstxn/agentdir/main/scripts/install.sh | AGENTDIR_VERSION=v0.7.
|
|
142
|
+
curl -fsSL https://raw.githubusercontent.com/jstxn/agentdir/main/scripts/install.sh | AGENTDIR_VERSION=v0.7.7 bash
|
|
132
143
|
```
|
|
133
144
|
|
|
134
145
|
## Optional Extras
|
|
@@ -9,7 +9,9 @@ skills/agentdir/SKILL.md
|
|
|
9
9
|
|
|
10
10
|
The skill teaches Pi to start AgentDir sessions, wrap evidence-bearing shell
|
|
11
11
|
commands, use local memory/context packs, and produce evidence-aware handoffs.
|
|
12
|
-
It
|
|
12
|
+
It also tells Pi to adopt unprepared repositories with `--gitignore user`, so
|
|
13
|
+
the local store stays out of Git without changing project files. It does not
|
|
14
|
+
install the `agentdir` CLI; install AgentDir separately first.
|
|
13
15
|
|
|
14
16
|
## Install
|
|
15
17
|
|
|
@@ -34,7 +36,7 @@ pi install git:github.com/jstxn/agentdir@<tag-or-commit>
|
|
|
34
36
|
If the npm package has been published:
|
|
35
37
|
|
|
36
38
|
```bash
|
|
37
|
-
pi install npm:@jstxn/agentdir-pi@0.7.
|
|
39
|
+
pi install npm:@jstxn/agentdir-pi@0.7.8
|
|
38
40
|
```
|
|
39
41
|
|
|
40
42
|
Use `pi config` to enable or disable the bundled skill after installation.
|
|
@@ -48,7 +50,7 @@ The root `package.json` declares the Pi resources:
|
|
|
48
50
|
"keywords": ["pi-package"],
|
|
49
51
|
"pi": {
|
|
50
52
|
"skills": ["./skills"],
|
|
51
|
-
"image": "https://raw.githubusercontent.com/jstxn/agentdir/v0.7.
|
|
53
|
+
"image": "https://raw.githubusercontent.com/jstxn/agentdir/v0.7.8/docs/assets/agentdir-overview.png"
|
|
52
54
|
}
|
|
53
55
|
}
|
|
54
56
|
```
|
|
@@ -31,9 +31,9 @@ chmod +x dist/rollback-agentdir.sh
|
|
|
31
31
|
Expected assets (substitute the release version):
|
|
32
32
|
|
|
33
33
|
```text
|
|
34
|
-
dist/agentdir_cli-0.7.
|
|
35
|
-
dist/agentdir_cli-0.7.
|
|
36
|
-
dist/jstxn-agentdir-pi-0.7.
|
|
34
|
+
dist/agentdir_cli-0.7.8-py3-none-any.whl
|
|
35
|
+
dist/agentdir_cli-0.7.8.tar.gz
|
|
36
|
+
dist/jstxn-agentdir-pi-0.7.8.tgz
|
|
37
37
|
dist/install-agentdir.sh
|
|
38
38
|
dist/rollback-agentdir.sh
|
|
39
39
|
```
|
|
@@ -41,19 +41,19 @@ dist/rollback-agentdir.sh
|
|
|
41
41
|
## Tag And Release
|
|
42
42
|
|
|
43
43
|
```bash
|
|
44
|
-
git tag -a v0.7.
|
|
44
|
+
git tag -a v0.7.8 -m "Release AgentDir v0.7.8"
|
|
45
45
|
git push origin main
|
|
46
|
-
git push origin v0.7.
|
|
46
|
+
git push origin v0.7.8
|
|
47
47
|
|
|
48
|
-
gh release create v0.7.
|
|
49
|
-
dist/agentdir_cli-0.7.
|
|
50
|
-
dist/agentdir_cli-0.7.
|
|
51
|
-
dist/jstxn-agentdir-pi-0.7.
|
|
48
|
+
gh release create v0.7.8 \
|
|
49
|
+
dist/agentdir_cli-0.7.8-py3-none-any.whl \
|
|
50
|
+
dist/agentdir_cli-0.7.8.tar.gz \
|
|
51
|
+
dist/jstxn-agentdir-pi-0.7.8.tgz \
|
|
52
52
|
dist/install-agentdir.sh \
|
|
53
53
|
dist/rollback-agentdir.sh \
|
|
54
54
|
--repo jstxn/agentdir \
|
|
55
|
-
--title "AgentDir v0.7.
|
|
56
|
-
--notes-file docs/releases/v0.7.
|
|
55
|
+
--title "AgentDir v0.7.8" \
|
|
56
|
+
--notes-file docs/releases/v0.7.8.md
|
|
57
57
|
```
|
|
58
58
|
|
|
59
59
|
Publishing the release triggers `publish.yml`, which rebuilds the sdist and
|
|
@@ -65,7 +65,7 @@ Use a disposable environment:
|
|
|
65
65
|
|
|
66
66
|
```bash
|
|
67
67
|
tmp="$(mktemp -d)"
|
|
68
|
-
gh release download v0.7.
|
|
68
|
+
gh release download v0.7.8 --repo jstxn/agentdir --pattern install-agentdir.sh --dir "$tmp"
|
|
69
69
|
AGENTDIR_PREFIX="$tmp/prefix" AGENTDIR_HOME="$tmp/home" bash "$tmp/install-agentdir.sh"
|
|
70
70
|
"$tmp/prefix/bin/agentdir" --help
|
|
71
71
|
"$tmp/prefix/bin/agentdir" --version
|
|
@@ -79,7 +79,7 @@ mkdir -p "$repo"
|
|
|
79
79
|
git -C "$repo" init
|
|
80
80
|
printf 'release smoke\n' > "$tmp/body.txt"
|
|
81
81
|
cd "$repo"
|
|
82
|
-
"$tmp/prefix/bin/agentdir" adopt --install-skill store
|
|
82
|
+
"$tmp/prefix/bin/agentdir" adopt --install-skill store --gitignore user
|
|
83
83
|
"$tmp/prefix/bin/agentdir" work start "release smoke" --emit-context
|
|
84
84
|
"$tmp/prefix/bin/agentdir" run -- python3 -c "print('release smoke')"
|
|
85
85
|
"$tmp/prefix/bin/agentdir" context build "release smoke"
|
|
@@ -101,13 +101,13 @@ tmp="$(mktemp -d)"
|
|
|
101
101
|
AGENTDIR_PREFIX="$tmp/prefix" \
|
|
102
102
|
AGENTDIR_HOME="$tmp/home" \
|
|
103
103
|
AGENTDIR_FORCE_VENV=1 \
|
|
104
|
-
AGENTDIR_WHEEL="$PWD/dist/agentdir_cli-0.7.
|
|
104
|
+
AGENTDIR_WHEEL="$PWD/dist/agentdir_cli-0.7.8-py3-none-any.whl" \
|
|
105
105
|
bash dist/install-agentdir.sh
|
|
106
106
|
|
|
107
107
|
AGENTDIR_PREFIX="$tmp/prefix" \
|
|
108
108
|
AGENTDIR_HOME="$tmp/home" \
|
|
109
109
|
AGENTDIR_FORCE_VENV=1 \
|
|
110
|
-
bash dist/rollback-agentdir.sh v0.7.
|
|
110
|
+
bash dist/rollback-agentdir.sh v0.7.7
|
|
111
111
|
|
|
112
112
|
"$tmp/prefix/bin/agentdir" --help
|
|
113
113
|
```
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
# AgentDir v0.7.8
|
|
2
|
+
|
|
3
|
+
AgentDir v0.7.8 removes a common first-run annoyance by teaching coding agents
|
|
4
|
+
to keep the local `.agentdir/` store out of Git automatically.
|
|
5
|
+
|
|
6
|
+
## Changes
|
|
7
|
+
|
|
8
|
+
- Update generated Codex, generic, Claude, Copilot, Cursor, Windsurf, rulesync,
|
|
9
|
+
and Pi guidance to adopt repositories with `agentdir adopt --gitignore user`.
|
|
10
|
+
- Keep plain interactive adoption and all existing
|
|
11
|
+
`--gitignore ask|project|user|none` choices backward compatible.
|
|
12
|
+
- Make the release installer print the recommended user-level adoption command
|
|
13
|
+
and the project/none alternatives without silently editing Git configuration.
|
|
14
|
+
- Add regression coverage for every generated guidance surface, the Pi package,
|
|
15
|
+
rulesync, and installer messaging.
|
|
16
|
+
|
|
17
|
+
## Install Or Update
|
|
18
|
+
|
|
19
|
+
Install from PyPI:
|
|
20
|
+
|
|
21
|
+
```bash
|
|
22
|
+
uv tool install agentdir-cli
|
|
23
|
+
# or
|
|
24
|
+
pipx install agentdir-cli
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
Update an existing installation:
|
|
28
|
+
|
|
29
|
+
```bash
|
|
30
|
+
agentdir update
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
Or use the release installer:
|
|
34
|
+
|
|
35
|
+
```bash
|
|
36
|
+
curl -fsSL https://raw.githubusercontent.com/jstxn/agentdir/main/scripts/install.sh | bash
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
Install the Pi package from npm or the release tag:
|
|
40
|
+
|
|
41
|
+
```bash
|
|
42
|
+
pi install npm:@jstxn/agentdir-pi@0.7.8
|
|
43
|
+
pi install git:github.com/jstxn/agentdir@v0.7.8
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
Rollback to v0.7.7 with:
|
|
47
|
+
|
|
48
|
+
```bash
|
|
49
|
+
curl -fsSL https://raw.githubusercontent.com/jstxn/agentdir/main/scripts/rollback.sh | bash
|
|
50
|
+
```
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@jstxn/agentdir-pi",
|
|
3
|
-
"version": "0.7.
|
|
3
|
+
"version": "0.7.8",
|
|
4
4
|
"description": "Pi package for AgentDir local-first coding-agent memory and evidence capture.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"keywords": [
|
|
@@ -29,6 +29,6 @@
|
|
|
29
29
|
"skills": [
|
|
30
30
|
"./skills"
|
|
31
31
|
],
|
|
32
|
-
"image": "https://raw.githubusercontent.com/jstxn/agentdir/v0.7.
|
|
32
|
+
"image": "https://raw.githubusercontent.com/jstxn/agentdir/v0.7.8/docs/assets/agentdir-overview.png"
|
|
33
33
|
}
|
|
34
34
|
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
#!/usr/bin/env bash
|
|
2
2
|
set -euo pipefail
|
|
3
3
|
|
|
4
|
-
AGENTDIR_VERSION="${AGENTDIR_VERSION:-v0.7.
|
|
4
|
+
AGENTDIR_VERSION="${AGENTDIR_VERSION:-v0.7.8}"
|
|
5
5
|
AGENTDIR_REPO="${AGENTDIR_REPO:-jstxn/agentdir}"
|
|
6
6
|
AGENTDIR_PACKAGE_VERSION="${AGENTDIR_VERSION#v}"
|
|
7
7
|
# Releases after v0.7.4 ship the wheel under the agentdir-cli distribution
|
|
@@ -151,6 +151,8 @@ main() {
|
|
|
151
151
|
fail "agentdir executable was not found on PATH after pipx install"
|
|
152
152
|
fi
|
|
153
153
|
log "installed AgentDir $AGENTDIR_VERSION"
|
|
154
|
+
log "next: from a repository, run: agentdir adopt --gitignore user"
|
|
155
|
+
log "use --gitignore project for a repo-local rule, or --gitignore none to leave ignore files unchanged"
|
|
154
156
|
}
|
|
155
157
|
|
|
156
158
|
main "$@"
|
|
@@ -21,7 +21,7 @@ This Pi package teaches Pi how to operate AgentDir. It does not install the `age
|
|
|
21
21
|
|
|
22
22
|
At the start of a non-trivial coding task in a software repository:
|
|
23
23
|
|
|
24
|
-
1. If `.agentdir` is missing, run `agentdir adopt` once
|
|
24
|
+
1. If `.agentdir` is missing, run `agentdir adopt --gitignore user` once so the local store stays out of Git without changing the repository's `.gitignore`.
|
|
25
25
|
2. Start the session with `agentdir work start "<short task>" --emit-context`.
|
|
26
26
|
3. Keep any returned context pack id/source ids if you plan to cite or consume retrieved context later.
|
|
27
27
|
|
|
@@ -35,7 +35,9 @@ user when reporting evidence, blockers, or setup problems.
|
|
|
35
35
|
## Start
|
|
36
36
|
|
|
37
37
|
- At the start of a coding task in a repository, run `agentdir work start "<short task>" --emit-context`.
|
|
38
|
-
- If `.agentdir` is missing and the task is non-trivial, run
|
|
38
|
+
- If `.agentdir` is missing and the task is non-trivial, run
|
|
39
|
+
`agentdir adopt --gitignore user` once so the local store stays out of Git
|
|
40
|
+
without changing the repository's `.gitignore`.
|
|
39
41
|
- Prefer the default project store. It writes to the nearest repo `.agentdir`.
|
|
40
42
|
- Do not record secrets, private keys, raw environment dumps, or credential-bearing command output.
|
|
41
43
|
- If `doctor` reports secret-like persisted bodies, do not print the bodies.
|
|
@@ -103,7 +105,8 @@ The engineer should not have to run AgentDir commands during normal coding work.
|
|
|
103
105
|
The agent owns the background recording flow:
|
|
104
106
|
|
|
105
107
|
- Start non-trivial coding work with `agentdir work start "<short task>" --emit-context`.
|
|
106
|
-
- If `.agentdir` is missing, run `agentdir adopt` once
|
|
108
|
+
- If `.agentdir` is missing, run `agentdir adopt --gitignore user` once so the
|
|
109
|
+
local store stays out of Git without changing the repository's `.gitignore`.
|
|
107
110
|
- Run evidence-bearing commands through `agentdir run -- <command>`.
|
|
108
111
|
- Evidence-bearing commands include tests, lint, typecheck, build, release checks,
|
|
109
112
|
reproduced failures, and diagnostics that support final claims.
|
|
@@ -697,7 +700,7 @@ GUIDANCE_BODY = """AgentDir is agent-owned background instrumentation for this r
|
|
|
697
700
|
The engineer installs or adopts it once; agents operate it during normal work.
|
|
698
701
|
|
|
699
702
|
- Start non-trivial coding work with `agentdir work start "<short task>" --emit-context`.
|
|
700
|
-
- If `.agentdir` is missing, run `agentdir adopt` once
|
|
703
|
+
- If `.agentdir` is missing, run `agentdir adopt --gitignore user` once so the local store stays out of Git without changing the repository's `.gitignore`.
|
|
701
704
|
- Wrap evidence-bearing commands with `agentdir run -- <command>`.
|
|
702
705
|
- Evidence includes tests, lint, typecheck, builds, doctor checks, release checks, reproduced failures, and diagnostics used in final claims.
|
|
703
706
|
- Do not wrap routine exploration such as `rg`, `sed`, `nl`, `cat`, `ls`, `find`, or quick read-only `git status`.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: agentdir-cli
|
|
3
|
-
Version: 0.7.
|
|
3
|
+
Version: 0.7.8
|
|
4
4
|
Summary: Local-first Maildir-inspired work mailstore for software agents
|
|
5
5
|
Author: AgentDir Contributors
|
|
6
6
|
License-Expression: MIT
|
|
@@ -128,7 +128,8 @@ curl -fsSL https://raw.githubusercontent.com/jstxn/agentdir/main/scripts/install
|
|
|
128
128
|
|
|
129
129
|
The installer uses `pipx` when available. Otherwise it creates a self-contained
|
|
130
130
|
virtual environment under `~/.local/share/agentdir` and links the CLI into
|
|
131
|
-
`~/.local/bin`.
|
|
131
|
+
`~/.local/bin`. It does not edit Git configuration or ignore files; after
|
|
132
|
+
installation it prints the explicit adoption choices.
|
|
132
133
|
|
|
133
134
|
Verify:
|
|
134
135
|
|
|
@@ -155,7 +156,7 @@ available automatically during coding tasks:
|
|
|
155
156
|
Package page: [@jstxn/agentdir-pi](https://pi.dev/packages/@jstxn/agentdir-pi)
|
|
156
157
|
|
|
157
158
|
```bash
|
|
158
|
-
pi install npm:@jstxn/agentdir-pi@0.7.
|
|
159
|
+
pi install npm:@jstxn/agentdir-pi@0.7.8
|
|
159
160
|
# or install directly from a local checkout / release tag:
|
|
160
161
|
pi install /absolute/path/to/agentdir
|
|
161
162
|
pi install git:github.com/jstxn/agentdir@<tag-or-commit>
|
|
@@ -174,6 +175,13 @@ Run once from a git repository:
|
|
|
174
175
|
agentdir adopt
|
|
175
176
|
```
|
|
176
177
|
|
|
178
|
+
Coding agents use the non-interactive form below so `.agentdir/` is ignored at
|
|
179
|
+
the user level without creating a repository `.gitignore` change:
|
|
180
|
+
|
|
181
|
+
```bash
|
|
182
|
+
agentdir adopt --gitignore user
|
|
183
|
+
```
|
|
184
|
+
|
|
177
185
|
This is intentionally boring setup. It prepares the repository once, then agents
|
|
178
186
|
operate AgentDir during normal coding work:
|
|
179
187
|
|
|
@@ -219,6 +227,10 @@ agentdir adopt --gitignore user # write the user-level Git excludes file
|
|
|
219
227
|
agentdir adopt --gitignore none # leave ignore files unchanged
|
|
220
228
|
```
|
|
221
229
|
|
|
230
|
+
Generated AgentDir guidance selects `--gitignore user` by default. The plain
|
|
231
|
+
interactive command still prompts, and all three explicit choices remain
|
|
232
|
+
available.
|
|
233
|
+
|
|
222
234
|
Undo managed setup while keeping the `.agentdir` evidence store:
|
|
223
235
|
|
|
224
236
|
```bash
|
|
@@ -35,6 +35,7 @@ docs/releases/v0.7.4.md
|
|
|
35
35
|
docs/releases/v0.7.5.md
|
|
36
36
|
docs/releases/v0.7.6.md
|
|
37
37
|
docs/releases/v0.7.7.md
|
|
38
|
+
docs/releases/v0.7.8.md
|
|
38
39
|
examples/dogfood-session.sh
|
|
39
40
|
scripts/install.sh
|
|
40
41
|
scripts/rollback.sh
|
|
@@ -82,6 +83,7 @@ tests/test_agent_first.py
|
|
|
82
83
|
tests/test_agent_trust.py
|
|
83
84
|
tests/test_audit.py
|
|
84
85
|
tests/test_environment.py
|
|
86
|
+
tests/test_install_script.py
|
|
85
87
|
tests/test_pi_package.py
|
|
86
88
|
tests/test_truncation.py
|
|
87
89
|
tests/test_v1_behavior.py
|
|
@@ -69,7 +69,7 @@ def query_rows(root: Path, event_type: str | None = None) -> list[dict[str, obje
|
|
|
69
69
|
def test_cli_version_reports_package_version() -> None:
|
|
70
70
|
result = run_cli("--version")
|
|
71
71
|
|
|
72
|
-
assert result.stdout.strip() == "agentdir 0.7.
|
|
72
|
+
assert result.stdout.strip() == "agentdir 0.7.8"
|
|
73
73
|
|
|
74
74
|
|
|
75
75
|
def test_session_current_and_sessionless_emit_use_project_store(tmp_path: Path) -> None:
|
|
@@ -322,6 +322,7 @@ def test_setup_installs_hooks_and_user_codex_skill(tmp_path: Path) -> None:
|
|
|
322
322
|
assert skill_path.is_file()
|
|
323
323
|
skill_text = skill_path.read_text(encoding="utf-8")
|
|
324
324
|
assert "The user should not have to run AgentDir commands during normal coding work." in skill_text
|
|
325
|
+
assert "agentdir adopt --gitignore user" in skill_text
|
|
325
326
|
assert 'agentdir work start "<short task>" --emit-context' in skill_text
|
|
326
327
|
assert "agentdir status" in skill_text
|
|
327
328
|
assert "agentdir run -- <command>" in skill_text
|
|
@@ -566,6 +567,24 @@ def test_integrations_project_rerun_is_byte_stable_for_managed_only_files(tmp_pa
|
|
|
566
567
|
assert all(item["updated"] is False for item in json.loads(rerun.stdout))
|
|
567
568
|
|
|
568
569
|
|
|
570
|
+
def test_generated_agent_guidance_uses_user_gitignore(tmp_path: Path) -> None:
|
|
571
|
+
repo = init_repo(tmp_path / "repo")
|
|
572
|
+
|
|
573
|
+
run_cli("integrations", "install", "all", "--target", "project", "--json", cwd=repo)
|
|
574
|
+
|
|
575
|
+
guidance_paths = [
|
|
576
|
+
repo / "AGENTS.md",
|
|
577
|
+
repo / ".agents" / "skills" / "agentdir" / "SKILL.md",
|
|
578
|
+
repo / "CLAUDE.md",
|
|
579
|
+
repo / ".github" / "copilot-instructions.md",
|
|
580
|
+
repo / ".cursor" / "rules" / "agentdir.mdc",
|
|
581
|
+
repo / ".windsurf" / "rules" / "agentdir.md",
|
|
582
|
+
]
|
|
583
|
+
for path in guidance_paths:
|
|
584
|
+
text = path.read_text(encoding="utf-8")
|
|
585
|
+
assert "agentdir adopt --gitignore user" in text, path
|
|
586
|
+
|
|
587
|
+
|
|
569
588
|
def test_integrations_install_all_store_target(tmp_path: Path) -> None:
|
|
570
589
|
repo = init_repo(tmp_path / "repo")
|
|
571
590
|
|
|
@@ -89,6 +89,7 @@ def test_adopt_redirects_integrations_to_rulesync_source_rule(tmp_path: Path) ->
|
|
|
89
89
|
assert 'targets: ["*"]' in rule_text
|
|
90
90
|
assert "<!-- agentdir-managed-rulesync:start -->" in rule_text
|
|
91
91
|
assert "agentdir work start" in rule_text
|
|
92
|
+
assert "agentdir adopt --gitignore user" in rule_text
|
|
92
93
|
assert not (repo / "CLAUDE.md").exists()
|
|
93
94
|
assert not (repo / "AGENTS.md").exists()
|
|
94
95
|
assert not (repo / ".cursor").exists()
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
from __future__ import annotations
|
|
2
|
+
|
|
3
|
+
from pathlib import Path
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
ROOT = Path(__file__).resolve().parents[1]
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
def test_installer_prints_safe_gitignore_choices() -> None:
|
|
10
|
+
text = (ROOT / "scripts" / "install.sh").read_text(encoding="utf-8")
|
|
11
|
+
|
|
12
|
+
assert "agentdir adopt --gitignore user" in text
|
|
13
|
+
assert "--gitignore project" in text
|
|
14
|
+
assert "--gitignore none" in text
|
|
@@ -12,11 +12,11 @@ def test_pi_package_manifest_points_to_agentdir_skill() -> None:
|
|
|
12
12
|
package = json.loads((ROOT / "package.json").read_text(encoding="utf-8"))
|
|
13
13
|
|
|
14
14
|
assert package["name"] == "@jstxn/agentdir-pi"
|
|
15
|
-
assert package["version"] == "0.7.
|
|
15
|
+
assert package["version"] == "0.7.8"
|
|
16
16
|
assert "pi-package" in package["keywords"]
|
|
17
17
|
assert package["pi"] == {
|
|
18
18
|
"skills": ["./skills"],
|
|
19
|
-
"image": "https://raw.githubusercontent.com/jstxn/agentdir/v0.7.
|
|
19
|
+
"image": "https://raw.githubusercontent.com/jstxn/agentdir/v0.7.8/docs/assets/agentdir-overview.png",
|
|
20
20
|
}
|
|
21
21
|
assert "skills" in package["files"]
|
|
22
22
|
assert "docs/PI_PACKAGE.md" in package["files"]
|
|
@@ -35,5 +35,6 @@ def test_agentdir_pi_skill_frontmatter_and_workflow() -> None:
|
|
|
35
35
|
assert len(description.group(1)) <= 1024
|
|
36
36
|
assert re.search(r"^compatibility: ", frontmatter, re.MULTILINE)
|
|
37
37
|
assert "agentdir work start" in text
|
|
38
|
+
assert "agentdir adopt --gitignore user" in text
|
|
38
39
|
assert "agentdir run --" in text
|
|
39
40
|
assert "agentdir work finish --json" in text
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{agentdir_cli-0.7.7 → agentdir_cli-0.7.8}/docs/investigations/2026-05-12-rag-vector-scenarios.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|