agent-hitch 0.1.1 → 0.2.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 +229 -132
- package/README.zh-CN.md +330 -0
- package/dist/bin/hitch.js +9 -0
- package/dist/bin/hitch.js.map +1 -0
- package/dist/scripts/check-release.js +25 -0
- package/dist/scripts/check-release.js.map +1 -0
- package/dist/scripts/check-syntax.js +32 -0
- package/dist/scripts/check-syntax.js.map +1 -0
- package/dist/src/adapters.js +461 -0
- package/dist/src/adapters.js.map +1 -0
- package/dist/src/artifacts.js +1081 -0
- package/dist/src/artifacts.js.map +1 -0
- package/dist/src/cli.js +699 -0
- package/dist/src/cli.js.map +1 -0
- package/dist/src/config.js +53 -0
- package/dist/src/config.js.map +1 -0
- package/dist/src/controller-runtime/hash.js +353 -0
- package/dist/src/controller-runtime/hash.js.map +1 -0
- package/dist/src/controller-runtime/store.js +323 -0
- package/dist/src/controller-runtime/store.js.map +1 -0
- package/dist/src/daemon.js +461 -0
- package/dist/src/daemon.js.map +1 -0
- package/dist/src/domain/types.js +10 -0
- package/dist/src/domain/types.js.map +1 -0
- package/dist/src/domain/validate.js +240 -0
- package/dist/src/domain/validate.js.map +1 -0
- package/dist/src/engine.js +465 -0
- package/dist/src/engine.js.map +1 -0
- package/dist/src/errors.js +14 -0
- package/dist/src/errors.js.map +1 -0
- package/dist/src/eval-tools.js +318 -0
- package/dist/src/eval-tools.js.map +1 -0
- package/dist/src/evals.js +313 -0
- package/dist/src/evals.js.map +1 -0
- package/dist/src/events.js +80 -0
- package/dist/src/events.js.map +1 -0
- package/dist/src/feedback/service.js +315 -0
- package/dist/src/feedback/service.js.map +1 -0
- package/dist/src/fs.js +45 -0
- package/dist/src/fs.js.map +1 -0
- package/dist/src/harbor-backend.js +280 -0
- package/dist/src/harbor-backend.js.map +1 -0
- package/dist/src/harness-reference.js +83 -0
- package/dist/src/harness-reference.js.map +1 -0
- package/dist/src/line-stream.js +20 -0
- package/dist/src/line-stream.js.map +1 -0
- package/dist/src/locks.js +38 -0
- package/dist/src/locks.js.map +1 -0
- package/dist/src/package-root.js +40 -0
- package/dist/src/package-root.js.map +1 -0
- package/dist/src/process.js +50 -0
- package/dist/src/process.js.map +1 -0
- package/dist/src/registry.js +81 -0
- package/dist/src/registry.js.map +1 -0
- package/dist/src/scheduler.js +162 -0
- package/dist/src/scheduler.js.map +1 -0
- package/dist/src/trajectories/contract.js +17 -0
- package/dist/src/trajectories/contract.js.map +1 -0
- package/dist/src/trajectories/format.js +127 -0
- package/dist/src/trajectories/format.js.map +1 -0
- package/dist/src/trajectories/projector.js +385 -0
- package/dist/src/trajectories/projector.js.map +1 -0
- package/dist/src/trajectories/store.js +281 -0
- package/dist/src/trajectories/store.js.map +1 -0
- package/dist/src/workspaces.js +858 -0
- package/dist/src/workspaces.js.map +1 -0
- package/docs/schemas/controller-runtime-manifest.schema.json +57 -0
- package/docs/schemas/controller-runtime-ref.schema.json +16 -0
- package/docs/schemas/message-feedback.schema.json +37 -0
- package/docs/schemas/trajectory-ref.schema.json +30 -0
- package/integrations/harbor/hitch_harbor_agent.py +176 -4
- package/package.json +19 -11
- package/bin/hitch.js +0 -9
- package/src/adapters.js +0 -435
- package/src/artifacts.js +0 -949
- package/src/cli.js +0 -505
- package/src/config.js +0 -51
- package/src/daemon.js +0 -416
- package/src/engine.js +0 -400
- package/src/errors.js +0 -12
- package/src/eval-tools.js +0 -334
- package/src/evals.js +0 -276
- package/src/events.js +0 -69
- package/src/fs.js +0 -43
- package/src/harbor-backend.js +0 -285
- package/src/harness-reference.js +0 -78
- package/src/line-stream.js +0 -17
- package/src/locks.js +0 -33
- package/src/process.js +0 -49
- package/src/registry.js +0 -84
- package/src/scheduler.js +0 -156
- package/src/workspaces.js +0 -893
package/README.md
CHANGED
|
@@ -4,46 +4,68 @@
|
|
|
4
4
|
[](https://github.com/rsi-gear/agent-hitch/releases)
|
|
5
5
|
[](https://discord.gg/cZ4NBbHDk)
|
|
6
6
|
|
|
7
|
-
|
|
7
|
+
[English](README.md) | [简体中文](README.zh-CN.md)
|
|
8
8
|
|
|
9
|
-
|
|
10
|
-
an agent-first CLI and daemon for discovering and running native coding agents
|
|
11
|
-
through one stable, machine-oriented interface.
|
|
9
|
+
**Content-addressed version control and evidence storage for agent harnesses.**
|
|
12
10
|
|
|
13
|
-
Hitch
|
|
14
|
-
|
|
11
|
+
Hitch makes every agent run traceable to an exact harness revision. It resolves
|
|
12
|
+
harness references to immutable identities, prepares content-addressed runnable
|
|
13
|
+
artifacts, executes them through a stable interface, and preserves the
|
|
14
|
+
trajectory and evaluation evidence produced by each run.
|
|
15
15
|
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
> agent evals are implemented.
|
|
16
|
+
Git can identify the harness source that changed. Hitch carries that identity
|
|
17
|
+
through build and execution:
|
|
19
18
|
|
|
20
|
-
|
|
19
|
+
```text
|
|
20
|
+
Harness ref
|
|
21
|
+
-> resolved revision
|
|
22
|
+
-> prepared artifact
|
|
23
|
+
-> run / eval
|
|
24
|
+
-> trajectory
|
|
25
|
+
-> feedback and evaluation evidence
|
|
26
|
+
|
|
27
|
+
Hitch controller
|
|
28
|
+
-> content-addressed runtime bundle
|
|
29
|
+
-> referenced by containerized evals
|
|
30
|
+
```
|
|
21
31
|
|
|
22
|
-
|
|
32
|
+
Hitch is infrastructure for systems that develop, compare, and evolve agent
|
|
33
|
+
harnesses. It owns version resolution, runnable artifacts, execution records,
|
|
34
|
+
and evidence. Candidate generation, comparison policy, and promotion decisions
|
|
35
|
+
belong to the system using Hitch.
|
|
23
36
|
|
|
24
|
-
|
|
37
|
+
> **Status:** pre-alpha. The core identity and evidence path is implemented,
|
|
38
|
+
> including immutable revision resolution, prepared artifact caching, direct and
|
|
39
|
+
> daemon-backed runs, Harbor-backed evals, content-addressed controller runtimes,
|
|
40
|
+
> DSH-compatible canonical trajectories, and message feedback.
|
|
25
41
|
|
|
26
|
-
|
|
27
|
-
Harness adapters. It provides:
|
|
42
|
+
## Why harness version control?
|
|
28
43
|
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
- a persistent local daemon with bounded concurrency;
|
|
34
|
-
- queued and active-run cancellation, timeouts, and process-tree cleanup;
|
|
35
|
-
- managed shared, Git worktree, and independent-copy workspace modes;
|
|
36
|
-
- Harbor-backed evaluation in Docker with normalized reward summaries;
|
|
37
|
-
- atomic manifests/results plus raw stdout and stderr logs; and
|
|
38
|
-
- conservative recovery of interrupted records after daemon restart.
|
|
44
|
+
An agent harness is more than a source commit. What actually ran can also depend
|
|
45
|
+
on the package release, build output, controller code, workspace mode, native
|
|
46
|
+
adapter, and mutable executable installed on a machine. A score or transcript
|
|
47
|
+
without those identities is difficult to audit and harder to reproduce.
|
|
39
48
|
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
49
|
+
Hitch preserves an explicit chain from a requested harness reference to the
|
|
50
|
+
evidence generated by its execution:
|
|
51
|
+
|
|
52
|
+
| Record | What it identifies |
|
|
53
|
+
| --- | --- |
|
|
54
|
+
| Harness reference | The version, commit, local source, or installed executable requested by the caller |
|
|
55
|
+
| Resolved revision | The immutable source identity selected for the run |
|
|
56
|
+
| Prepared artifact | The validated, content-addressed runnable build |
|
|
57
|
+
| Controller runtime | The exact Hitch runtime uploaded for a containerized eval |
|
|
58
|
+
| Run or eval record | The request, workspace, lifecycle, result, and links between identities |
|
|
59
|
+
| Canonical trajectory | The agent messages and tool activity in a stable DSH-compatible format |
|
|
60
|
+
| Feedback and eval evidence | Message-level feedback, verifier output, rewards, and backend records |
|
|
43
61
|
|
|
44
|
-
|
|
62
|
+
This is a local versioning and evidence layer, not a replacement for Git and not
|
|
63
|
+
yet a remote artifact registry. Hitch does not currently provide branches,
|
|
64
|
+
tags, diffs, candidate promotion, or rollback policy.
|
|
45
65
|
|
|
46
|
-
|
|
66
|
+
## Quick start
|
|
67
|
+
|
|
68
|
+
Hitch requires Node.js 22 or newer. Install it from npm:
|
|
47
69
|
|
|
48
70
|
```bash
|
|
49
71
|
npm install --global agent-hitch
|
|
@@ -51,25 +73,18 @@ hitch --version
|
|
|
51
73
|
hitch list --json
|
|
52
74
|
```
|
|
53
75
|
|
|
54
|
-
|
|
76
|
+
Resolve and prepare an exact harness version:
|
|
55
77
|
|
|
56
78
|
```bash
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
For development from a checkout:
|
|
61
|
-
|
|
62
|
-
```bash
|
|
63
|
-
npm test
|
|
64
|
-
npm link
|
|
65
|
-
hitch list --json
|
|
79
|
+
hitch resolve codex@version:0.92.0 --json
|
|
80
|
+
hitch prepare codex@version:0.92.0 --json
|
|
66
81
|
```
|
|
67
82
|
|
|
68
|
-
Run
|
|
83
|
+
Run that exact version in an isolated Git worktree:
|
|
69
84
|
|
|
70
85
|
```bash
|
|
71
86
|
hitch run \
|
|
72
|
-
--harness codex@
|
|
87
|
+
--harness codex@version:0.92.0 \
|
|
73
88
|
--model gpt-5.6-terra \
|
|
74
89
|
--cwd /workspace/project \
|
|
75
90
|
--workspace-mode worktree \
|
|
@@ -77,42 +92,93 @@ hitch run \
|
|
|
77
92
|
--output jsonl
|
|
78
93
|
```
|
|
79
94
|
|
|
80
|
-
|
|
95
|
+
Every run writes an atomic manifest and result, raw process logs, normalized
|
|
96
|
+
events, and a canonical trajectory below `~/.hitch/runs/RUN_ID`. Inspect the
|
|
97
|
+
trajectory through the CLI:
|
|
81
98
|
|
|
82
99
|
```bash
|
|
83
|
-
hitch
|
|
100
|
+
hitch trajectory inspect RUN_ID --json
|
|
101
|
+
```
|
|
84
102
|
|
|
85
|
-
|
|
86
|
-
--daemon \
|
|
87
|
-
--harness codex@installed \
|
|
88
|
-
--model gpt-5.6-terra \
|
|
89
|
-
--cwd /workspace/project \
|
|
90
|
-
--prompt-file task.md \
|
|
91
|
-
--output jsonl
|
|
103
|
+
For development from a checkout:
|
|
92
104
|
|
|
93
|
-
|
|
94
|
-
|
|
105
|
+
```bash
|
|
106
|
+
npm install
|
|
107
|
+
npm run check
|
|
108
|
+
npm link
|
|
109
|
+
hitch list --json
|
|
95
110
|
```
|
|
96
111
|
|
|
97
|
-
|
|
112
|
+
## Harness references
|
|
113
|
+
|
|
114
|
+
Harness selection is explicit for every run. Exact package versions and Git
|
|
115
|
+
commits resolve to immutable identities and are prepared in Hitch's artifact
|
|
116
|
+
store.
|
|
98
117
|
|
|
99
118
|
```bash
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
119
|
+
# Use and fingerprint the executable already installed on this machine.
|
|
120
|
+
hitch run --harness codex@installed --prompt "Inspect this repository"
|
|
121
|
+
|
|
122
|
+
# Resolve, prepare, or run an exact published version.
|
|
123
|
+
hitch resolve codex@version:0.92.0 --json
|
|
124
|
+
hitch prepare codex@version:0.92.0 --json
|
|
125
|
+
hitch run --harness codex@version:0.92.0 --prompt "Inspect this repository"
|
|
104
126
|
|
|
105
|
-
|
|
127
|
+
# Build a commit from the registered upstream repository.
|
|
128
|
+
hitch run --harness codex@commit:0123456789abcdef --prompt "Inspect this repository"
|
|
129
|
+
|
|
130
|
+
# Build a clean commit from a local harness repository.
|
|
131
|
+
hitch run \
|
|
132
|
+
--harness 'pi@git+file:///workspace/pi#0123456789abcdef' \
|
|
133
|
+
--prompt "Inspect this repository"
|
|
106
134
|
```
|
|
107
135
|
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
136
|
+
Bare names such as `codex` are compatibility aliases for `codex@installed`.
|
|
137
|
+
Installed executables are useful for local work, but exact version or commit
|
|
138
|
+
references should be preferred when portability matters.
|
|
139
|
+
|
|
140
|
+
Version selectors require exact semantic versions; ranges and mutable tags such
|
|
141
|
+
as `latest` are not accepted. Short commit IDs are expanded and must be
|
|
142
|
+
unambiguous. Local Git repositories must be clean. Codex, Pi, and DeepSeek
|
|
143
|
+
Harness support source-commit preparation; Claude Code and OpenCode currently
|
|
144
|
+
support installed and exact-version sources.
|
|
145
|
+
|
|
146
|
+
Preparation executes registered package lifecycle or source-build commands with
|
|
147
|
+
the permissions of the Hitch process. Content addressing makes an artifact
|
|
148
|
+
auditable and cacheable; it does not make untrusted build code safe.
|
|
149
|
+
|
|
150
|
+
## Evidence from every run
|
|
151
|
+
|
|
152
|
+
Hitch keeps lifecycle events and agent trajectories as two related but distinct
|
|
153
|
+
records:
|
|
154
|
+
|
|
155
|
+
- normalized JSONL events describe Hitch's control plane, including resolution,
|
|
156
|
+
preparation, process lifecycle, cancellation, and terminal status;
|
|
157
|
+
- a DSH-compatible canonical trajectory records the agent session, messages,
|
|
158
|
+
tool calls, and tool results with an explicit fidelity level;
|
|
159
|
+
- `trajectory.ref.json` binds the run to the canonical trajectory and its
|
|
160
|
+
SHA-256 digest; and
|
|
161
|
+
- feedback sidecars attach versioned positive or negative ratings and notes to
|
|
162
|
+
assistant messages without rewriting the immutable trajectory.
|
|
163
|
+
|
|
164
|
+
```bash
|
|
165
|
+
hitch trajectory inspect RUN_ID
|
|
166
|
+
hitch feedback list RUN_ID --json
|
|
167
|
+
hitch feedback put RUN_ID \
|
|
168
|
+
--message MESSAGE_ID \
|
|
169
|
+
--rating positive \
|
|
170
|
+
--note "Kept the change focused" \
|
|
171
|
+
--json
|
|
172
|
+
```
|
|
173
|
+
|
|
174
|
+
Machine-contract schemas are versioned in [`docs/schemas`](docs/schemas).
|
|
175
|
+
Runtime validation rejects unknown request fields and preserves typed errors
|
|
176
|
+
across the daemon HTTP boundary.
|
|
112
177
|
|
|
113
178
|
## Harbor-backed evals
|
|
114
179
|
|
|
115
|
-
|
|
180
|
+
Hitch can evaluate an exact, portable harness revision with
|
|
181
|
+
[Harbor](https://github.com/harbor-framework/harbor):
|
|
116
182
|
|
|
117
183
|
```bash
|
|
118
184
|
# Installs pinned Harbor into ~/.hitch/tools without changing system Python.
|
|
@@ -128,104 +194,135 @@ hitch eval run \
|
|
|
128
194
|
--max-concurrent 4
|
|
129
195
|
|
|
130
196
|
hitch eval list
|
|
131
|
-
hitch eval inspect
|
|
197
|
+
hitch eval inspect EVAL_ID --json
|
|
132
198
|
```
|
|
133
199
|
|
|
134
|
-
`hitch eval setup harbor` requires Python 3.12+ and creates an isolated virtual
|
|
135
|
-
environment at `~/.hitch/tools/harbor-<version>`. It does not install or start
|
|
136
|
-
Docker. `hitch eval doctor` checks Python, the selected Harbor installation,
|
|
137
|
-
the Docker daemon, and whether a common provider credential is present. Hitch
|
|
138
|
-
automatically prefers the managed Harbor installation for subsequent evals;
|
|
139
|
-
`--harbor` and `HITCH_HARBOR_PATH` remain explicit overrides.
|
|
140
|
-
|
|
141
200
|
Harbor owns task discovery, Docker lifecycle, verification, and rewards. Its
|
|
142
|
-
custom Hitch agent uploads a minimal Hitch runtime
|
|
143
|
-
|
|
144
|
-
|
|
201
|
+
custom Hitch agent uploads a minimal, SHA-256-addressed Hitch controller runtime
|
|
202
|
+
into each task container and executes the selected harness revision in `/app`.
|
|
203
|
+
The resulting eval record links the request, resolved revision, controller
|
|
204
|
+
runtime, backend configuration and logs, normalized result, reward summary, and
|
|
205
|
+
trajectory evidence.
|
|
145
206
|
|
|
146
|
-
Eval
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
credentials are forwarded by environment-variable reference; use
|
|
150
|
-
|
|
151
|
-
`~/.hitch/evals` and include the request, resolved revision, plan, generated
|
|
152
|
-
Harbor config, raw backend logs/result, normalized result, and JSONL events.
|
|
207
|
+
Eval accepts exact `version:` refs and `commit:` refs backed by a registered
|
|
208
|
+
remote source. Installed executables and local `git+file://` refs are rejected
|
|
209
|
+
because they are not portable into Harbor containers. Common provider
|
|
210
|
+
credentials are forwarded by environment-variable reference; use `--pass-env
|
|
211
|
+
NAME` for an additional variable.
|
|
153
212
|
|
|
154
|
-
|
|
213
|
+
See [Harbor-backed agent evals](docs/evals.md) for setup, portability rules, and
|
|
214
|
+
the execution boundary.
|
|
155
215
|
|
|
156
|
-
|
|
157
|
-
executable behavior; exact published versions and Git commits resolve to
|
|
158
|
-
immutable identities and are prepared in Hitch's artifact store.
|
|
216
|
+
## Stable execution layer
|
|
159
217
|
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
218
|
+
Versioned artifacts still need a consistent way to run. Hitch provides adapters
|
|
219
|
+
for Codex CLI, Claude Code, Pi, OpenCode, and DeepSeek Harness and normalizes
|
|
220
|
+
their invocation and lifecycle behavior behind one machine-oriented contract.
|
|
163
221
|
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
222
|
+
```text
|
|
223
|
+
caller -> Hitch CLI / daemon -> shared run engine -> Codex CLI
|
|
224
|
+
\----> Claude Code
|
|
225
|
+
\----> Pi
|
|
226
|
+
\----> OpenCode
|
|
227
|
+
\----> DeepSeek Harness
|
|
228
|
+
```
|
|
168
229
|
|
|
169
|
-
|
|
170
|
-
|
|
230
|
+
The direct CLI and persistent daemon use the same run engine, so revision
|
|
231
|
+
resolution, records, timeout, cancellation, and event behavior do not drift.
|
|
232
|
+
The runtime currently provides:
|
|
233
|
+
|
|
234
|
+
- executable discovery, version probing, and executable fingerprints;
|
|
235
|
+
- exact package-version and Git-commit resolution;
|
|
236
|
+
- immutable prepared artifacts with integrity-aware caching;
|
|
237
|
+
- direct execution with normalized JSONL events;
|
|
238
|
+
- a persistent local daemon with bounded concurrency;
|
|
239
|
+
- queued and active-run cancellation, timeouts, and process-tree cleanup;
|
|
240
|
+
- managed shared, Git worktree, and independent-copy workspace modes;
|
|
241
|
+
- atomic manifests and results plus raw stdout and stderr logs; and
|
|
242
|
+
- conservative recovery of interrupted records after daemon restart.
|
|
243
|
+
|
|
244
|
+
Run through the daemon when a long-lived queue is useful:
|
|
245
|
+
|
|
246
|
+
```bash
|
|
247
|
+
hitch daemon start --max-concurrent 4
|
|
171
248
|
|
|
172
|
-
# Build a clean commit from a local harness repository.
|
|
173
249
|
hitch run \
|
|
174
|
-
--
|
|
175
|
-
--
|
|
250
|
+
--daemon \
|
|
251
|
+
--harness codex@version:0.92.0 \
|
|
252
|
+
--cwd /workspace/project \
|
|
253
|
+
--prompt-file task.md \
|
|
254
|
+
--output jsonl
|
|
255
|
+
|
|
256
|
+
hitch daemon status --json
|
|
257
|
+
hitch daemon stop
|
|
176
258
|
```
|
|
177
259
|
|
|
178
|
-
|
|
179
|
-
accepted. Short commit IDs are expanded and must be unambiguous. Local Git
|
|
180
|
-
repositories must be clean. Codex, Pi, and DeepSeek Harness support
|
|
181
|
-
source-commit preparation; Claude Code and OpenCode currently support installed
|
|
182
|
-
and exact-version sources.
|
|
260
|
+
Asynchronous submission and cancellation are also available:
|
|
183
261
|
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
262
|
+
```bash
|
|
263
|
+
hitch daemon submit \
|
|
264
|
+
--harness claude@version:EXACT_VERSION \
|
|
265
|
+
--cwd /workspace/project \
|
|
266
|
+
--prompt-file task.md
|
|
187
267
|
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
auditable and cacheable; it is not a security sandbox.
|
|
268
|
+
hitch daemon cancel RUN_ID
|
|
269
|
+
```
|
|
191
270
|
|
|
192
|
-
##
|
|
271
|
+
## State and isolation
|
|
193
272
|
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
runtime.
|
|
273
|
+
State is stored below `~/.hitch` by default. Use `--root <path>` or
|
|
274
|
+
`HITCH_ROOT` to relocate it. Each root owns its artifact store, controller
|
|
275
|
+
runtime store, run and eval records, daemon token, and queue.
|
|
198
276
|
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
\----> Claude Code
|
|
202
|
-
\----> Pi
|
|
203
|
-
\----> OpenCode
|
|
204
|
-
\----> DeepSeek Harness
|
|
205
|
-
```
|
|
277
|
+
Native executable overrides use `HITCH_CODEX_PATH`, `HITCH_CLAUDE_PATH`,
|
|
278
|
+
`HITCH_PI_PATH`, `HITCH_OPENCODE_PATH`, and `HITCH_DEEPSEEK_PATH`.
|
|
206
279
|
|
|
207
|
-
|
|
208
|
-
|
|
280
|
+
Workspace modes make mutation boundaries explicit:
|
|
281
|
+
|
|
282
|
+
- `shared` runs directly in the source directory;
|
|
283
|
+
- `worktree` creates a detached Git worktree from a clean `HEAD`; and
|
|
284
|
+
- `copy` creates an independent filesystem copy.
|
|
285
|
+
|
|
286
|
+
Workspace isolation is not a process security sandbox.
|
|
287
|
+
|
|
288
|
+
## Design principles
|
|
289
|
+
|
|
290
|
+
- **Traceable by default:** every run links the requested reference, resolved
|
|
291
|
+
revision, runnable artifact, execution record, and evidence.
|
|
292
|
+
- **Immutable resolution:** mutable input is resolved before preparation or
|
|
293
|
+
execution, then recorded by identity.
|
|
294
|
+
- **Content-addressed reuse:** validated artifacts and controller runtimes are
|
|
295
|
+
reused by digest rather than copied per run.
|
|
296
|
+
- **Evidence without lossy abstraction:** stable canonical records coexist with
|
|
297
|
+
raw harness output and explicit trajectory fidelity.
|
|
298
|
+
- **Machine-first contracts:** structured output, versioned schemas, and typed
|
|
299
|
+
failures are the public interface.
|
|
300
|
+
- **Policy lives above Hitch:** mutation, ranking, promotion, and rollback remain
|
|
301
|
+
explicit decisions for the calling system.
|
|
302
|
+
- **Safe interruption:** cancellation targets the complete subprocess tree, and
|
|
303
|
+
interrupted workspace-mutating runs are never replayed implicitly.
|
|
209
304
|
|
|
210
305
|
## Planned work
|
|
211
306
|
|
|
307
|
+
- [ ] Comparison primitives for harness revisions and their evidence
|
|
308
|
+
- [ ] Named candidate and champion references
|
|
309
|
+
- [ ] Promotion and rollback records without embedding promotion policy
|
|
310
|
+
- [ ] Remote artifact and evidence synchronization
|
|
212
311
|
- [ ] Additional harness adapters
|
|
213
312
|
- [ ] Additional API provider support
|
|
214
313
|
- [ ] Local model inference support
|
|
215
314
|
|
|
216
|
-
##
|
|
315
|
+
## News
|
|
217
316
|
|
|
218
|
-
- **
|
|
219
|
-
|
|
220
|
-
-
|
|
221
|
-
|
|
222
|
-
- **
|
|
223
|
-
records.
|
|
224
|
-
- **Safe interruption:** cancellation targets the complete subprocess tree.
|
|
225
|
-
- **No implicit replay:** interrupted workspace-mutating runs fail visibly.
|
|
317
|
+
- **2026-08-20:** Hitch 0.2 development moved the project to strict TypeScript
|
|
318
|
+
compiled to ESM, added a shared SHA-256 controller runtime cache, recorded a
|
|
319
|
+
DSH-compatible canonical trajectory for every run, and introduced
|
|
320
|
+
lifecycle-bound message feedback.
|
|
321
|
+
- **2026-08-13:** Hitch added DeepSeek Harness support.
|
|
226
322
|
|
|
227
323
|
## Documentation
|
|
228
324
|
|
|
325
|
+
- [Hitch 0.2 development spec](docs/hitch-0.2-development-spec.md)
|
|
229
326
|
- [Design document](docs/design.md)
|
|
230
327
|
- [Agent daemon analysis and port](docs/daemon.md)
|
|
231
328
|
- [Workspace isolation](docs/workspaces.md)
|
|
@@ -235,7 +332,7 @@ cancellation, and event behavior do not drift.
|
|
|
235
332
|
## Community
|
|
236
333
|
|
|
237
334
|
Join the [Hitch community on Discord](https://discord.gg/cZ4NBbHDk) to ask
|
|
238
|
-
questions, share feedback, and discuss
|
|
335
|
+
questions, share feedback, and discuss agent-harness infrastructure.
|
|
239
336
|
|
|
240
337
|
## Acknowledgements
|
|
241
338
|
|