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.
Files changed (92) hide show
  1. package/README.md +229 -132
  2. package/README.zh-CN.md +330 -0
  3. package/dist/bin/hitch.js +9 -0
  4. package/dist/bin/hitch.js.map +1 -0
  5. package/dist/scripts/check-release.js +25 -0
  6. package/dist/scripts/check-release.js.map +1 -0
  7. package/dist/scripts/check-syntax.js +32 -0
  8. package/dist/scripts/check-syntax.js.map +1 -0
  9. package/dist/src/adapters.js +461 -0
  10. package/dist/src/adapters.js.map +1 -0
  11. package/dist/src/artifacts.js +1081 -0
  12. package/dist/src/artifacts.js.map +1 -0
  13. package/dist/src/cli.js +699 -0
  14. package/dist/src/cli.js.map +1 -0
  15. package/dist/src/config.js +53 -0
  16. package/dist/src/config.js.map +1 -0
  17. package/dist/src/controller-runtime/hash.js +353 -0
  18. package/dist/src/controller-runtime/hash.js.map +1 -0
  19. package/dist/src/controller-runtime/store.js +323 -0
  20. package/dist/src/controller-runtime/store.js.map +1 -0
  21. package/dist/src/daemon.js +461 -0
  22. package/dist/src/daemon.js.map +1 -0
  23. package/dist/src/domain/types.js +10 -0
  24. package/dist/src/domain/types.js.map +1 -0
  25. package/dist/src/domain/validate.js +240 -0
  26. package/dist/src/domain/validate.js.map +1 -0
  27. package/dist/src/engine.js +465 -0
  28. package/dist/src/engine.js.map +1 -0
  29. package/dist/src/errors.js +14 -0
  30. package/dist/src/errors.js.map +1 -0
  31. package/dist/src/eval-tools.js +318 -0
  32. package/dist/src/eval-tools.js.map +1 -0
  33. package/dist/src/evals.js +313 -0
  34. package/dist/src/evals.js.map +1 -0
  35. package/dist/src/events.js +80 -0
  36. package/dist/src/events.js.map +1 -0
  37. package/dist/src/feedback/service.js +315 -0
  38. package/dist/src/feedback/service.js.map +1 -0
  39. package/dist/src/fs.js +45 -0
  40. package/dist/src/fs.js.map +1 -0
  41. package/dist/src/harbor-backend.js +280 -0
  42. package/dist/src/harbor-backend.js.map +1 -0
  43. package/dist/src/harness-reference.js +83 -0
  44. package/dist/src/harness-reference.js.map +1 -0
  45. package/dist/src/line-stream.js +20 -0
  46. package/dist/src/line-stream.js.map +1 -0
  47. package/dist/src/locks.js +38 -0
  48. package/dist/src/locks.js.map +1 -0
  49. package/dist/src/package-root.js +40 -0
  50. package/dist/src/package-root.js.map +1 -0
  51. package/dist/src/process.js +50 -0
  52. package/dist/src/process.js.map +1 -0
  53. package/dist/src/registry.js +81 -0
  54. package/dist/src/registry.js.map +1 -0
  55. package/dist/src/scheduler.js +162 -0
  56. package/dist/src/scheduler.js.map +1 -0
  57. package/dist/src/trajectories/contract.js +17 -0
  58. package/dist/src/trajectories/contract.js.map +1 -0
  59. package/dist/src/trajectories/format.js +127 -0
  60. package/dist/src/trajectories/format.js.map +1 -0
  61. package/dist/src/trajectories/projector.js +385 -0
  62. package/dist/src/trajectories/projector.js.map +1 -0
  63. package/dist/src/trajectories/store.js +281 -0
  64. package/dist/src/trajectories/store.js.map +1 -0
  65. package/dist/src/workspaces.js +858 -0
  66. package/dist/src/workspaces.js.map +1 -0
  67. package/docs/schemas/controller-runtime-manifest.schema.json +57 -0
  68. package/docs/schemas/controller-runtime-ref.schema.json +16 -0
  69. package/docs/schemas/message-feedback.schema.json +37 -0
  70. package/docs/schemas/trajectory-ref.schema.json +30 -0
  71. package/integrations/harbor/hitch_harbor_agent.py +176 -4
  72. package/package.json +19 -11
  73. package/bin/hitch.js +0 -9
  74. package/src/adapters.js +0 -435
  75. package/src/artifacts.js +0 -949
  76. package/src/cli.js +0 -505
  77. package/src/config.js +0 -51
  78. package/src/daemon.js +0 -416
  79. package/src/engine.js +0 -400
  80. package/src/errors.js +0 -12
  81. package/src/eval-tools.js +0 -334
  82. package/src/evals.js +0 -276
  83. package/src/events.js +0 -69
  84. package/src/fs.js +0 -43
  85. package/src/harbor-backend.js +0 -285
  86. package/src/harness-reference.js +0 -78
  87. package/src/line-stream.js +0 -17
  88. package/src/locks.js +0 -33
  89. package/src/process.js +0 -49
  90. package/src/registry.js +0 -84
  91. package/src/scheduler.js +0 -156
  92. package/src/workspaces.js +0 -893
package/README.md CHANGED
@@ -4,46 +4,68 @@
4
4
  [![GitHub release](https://img.shields.io/github/v/release/rsi-gear/agent-hitch)](https://github.com/rsi-gear/agent-hitch/releases)
5
5
  [![Discord](https://img.shields.io/badge/Discord-Join_chat-5865F2?logo=discord&logoColor=white)](https://discord.gg/cZ4NBbHDk)
6
6
 
7
- **Let agents choose their harness with one runtime.**
7
+ [English](README.md) | [简体中文](README.zh-CN.md)
8
8
 
9
- Hitch lets an agent choose which harness and revision to use for each run. It is
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 is designed as infrastructure for Recursive Self-Improvement (RSI),
14
- including harness evolution and model evolution.
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
- > Status: pre-alpha. Installed-harness discovery, immutable revision resolution,
17
- > prepared artifact caching, direct runs, the local daemon, and Harbor-backed
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
- ## News
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
- - **2026-08-13:** Hitch now supports DeepSeek Harness.
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
- ## Available now
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
- Hitch currently supports Codex CLI, Claude Code, Pi, OpenCode, and DeepSeek
27
- Harness adapters. It provides:
42
+ ## Why harness version control?
28
43
 
29
- - executable discovery, version probing, and executable fingerprints;
30
- - exact package-version and Git-commit resolution;
31
- - immutable prepared artifacts with integrity-aware caching;
32
- - direct execution with normalized JSONL events;
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
- Versioned machine-contract schemas live in [`docs/schemas`](docs/schemas).
41
- Runtime validation rejects unknown request fields and preserves typed errors
42
- across the daemon HTTP boundary.
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
- ## Installation
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
- Hitch requires Node.js 22 or newer. Install the CLI globally from npm:
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
- You can also try it without a global installation:
76
+ Resolve and prepare an exact harness version:
55
77
 
56
78
  ```bash
57
- npx agent-hitch --help
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 a task directly:
83
+ Run that exact version in an isolated Git worktree:
69
84
 
70
85
  ```bash
71
86
  hitch run \
72
- --harness codex@installed \
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
- Run through the persistent daemon:
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 daemon start --max-concurrent 4
100
+ hitch trajectory inspect RUN_ID --json
101
+ ```
84
102
 
85
- hitch run \
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
- hitch daemon status --json
94
- hitch daemon stop
105
+ ```bash
106
+ npm install
107
+ npm run check
108
+ npm link
109
+ hitch list --json
95
110
  ```
96
111
 
97
- Submit asynchronously and cancel later:
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
- hitch daemon submit \
101
- --harness claude@installed \
102
- --cwd /workspace/project \
103
- --prompt-file task.md
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
- hitch daemon cancel run_<id>
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
- State is stored below `~/.hitch` by default. Use `--root <path>` or
109
- `HITCH_ROOT` to relocate it. Native executable overrides use
110
- `HITCH_CODEX_PATH`, `HITCH_CLAUDE_PATH`, `HITCH_PI_PATH`,
111
- `HITCH_OPENCODE_PATH`, and `HITCH_DEEPSEEK_PATH`.
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
- Run an agent eval with Harbor:
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 eval_<id> --json
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 into each task container and
143
- runs the exact selected harness revision in `/app`. This ensures the benchmark
144
- measures the Hitch execution path rather than Harbor's native agent adapter.
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 currently accepts exact `version:` refs and `commit:` refs backed by a
147
- registered remote source. Installed executables and local `git+file://` refs are
148
- rejected because they are not portable into Harbor containers. Common provider
149
- credentials are forwarded by environment-variable reference; use
150
- `--pass-env NAME` for an additional variable. Eval records are stored under
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
- ## Select a harness revision
213
+ See [Harbor-backed agent evals](docs/evals.md) for setup, portability rules, and
214
+ the execution boundary.
155
215
 
156
- Harness selection is explicit for every run. Bare names retain the installed
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
- ```bash
161
- # Bare name is an alias for codex@installed.
162
- hitch run --harness codex --prompt "Inspect this repository"
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
- # Resolve or prewarm an exact published version.
165
- hitch resolve codex@version:0.92.0 --json
166
- hitch prepare codex@version:0.92.0 --json
167
- hitch run --harness codex@version:0.92.0 --prompt "Inspect this repository"
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
- # Build a commit from the registered upstream repository.
170
- hitch run --harness codex@commit:0123456789abcdef --prompt "Inspect this repository"
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
- --harness 'pi@git+file:///workspace/pi#0123456789abcdef' \
175
- --prompt "Inspect this repository"
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
- Version selectors require exact semantic versions; ranges and `latest` are not
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
- The legacy `--agent <name>` option remains available as an alias for
185
- `--harness <name>@installed`. It cannot select revisions or be combined with
186
- `--harness`.
262
+ ```bash
263
+ hitch daemon submit \
264
+ --harness claude@version:EXACT_VERSION \
265
+ --cwd /workspace/project \
266
+ --prompt-file task.md
187
267
 
188
- Preparation executes the registered package lifecycle or source-build commands
189
- with the permissions of the Hitch process. A resolved identity makes the input
190
- auditable and cacheable; it is not a security sandbox.
268
+ hitch daemon cancel RUN_ID
269
+ ```
191
270
 
192
- ## Why Hitch?
271
+ ## State and isolation
193
272
 
194
- Coding-agent CLIs expose different commands, model flags, configuration formats,
195
- session models, event streams, and process behavior. Hitch absorbs that
196
- integration cost behind a small adapter contract while preserving the native
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
- ```text
200
- caller -> Hitch CLI / daemon -> shared run engine -> Codex CLI
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
- The direct CLI and daemon use the same engine, so persistence, timeout,
208
- cancellation, and event behavior do not drift.
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
- ## Design principles
315
+ ## News
217
316
 
218
- - **Agent-first:** structured output, stable exit categories, no required UI.
219
- - **Explicit over ambient:** agent, model, workspace, and state root are visible.
220
- - **Minimal common contract:** unknown native events remain available rather
221
- than being forced into misleading abstractions.
222
- - **Isolated control state:** each root has its own daemon, token, queue, and run
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 coding-agent infrastructure.
335
+ questions, share feedback, and discuss agent-harness infrastructure.
239
336
 
240
337
  ## Acknowledgements
241
338