agent-hitch 0.1.0 → 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 +240 -126
  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 -361
  75. package/src/artifacts.js +0 -948
  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 -386
  80. package/src/errors.js +0 -12
  81. package/src/eval-tools.js +0 -331
  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
@@ -1,40 +1,71 @@
1
1
  # Hitch
2
2
 
3
- **One local runtime. Any coding agent.**
3
+ [![npm version](https://img.shields.io/npm/v/agent-hitch.svg)](https://www.npmjs.com/package/agent-hitch)
4
+ [![GitHub release](https://img.shields.io/github/v/release/rsi-gear/agent-hitch)](https://github.com/rsi-gear/agent-hitch/releases)
5
+ [![Discord](https://img.shields.io/badge/Discord-Join_chat-5865F2?logo=discord&logoColor=white)](https://discord.gg/cZ4NBbHDk)
4
6
 
5
- Hitch is an agent-first CLI and daemon for discovering and running native coding
6
- agents through one stable, machine-oriented interface.
7
+ [English](README.md) | [简体中文](README.zh-CN.md)
7
8
 
8
- It lets an agent choose which harness and revision to use for each run. Hitch is
9
- designed as infrastructure for Recursive Self-Improvement (RSI), including harness evolution and model
10
- evolution.
9
+ **Content-addressed version control and evidence storage for agent harnesses.**
11
10
 
12
- > Status: pre-alpha. Installed-harness discovery, immutable revision resolution,
13
- > prepared artifact caching, direct runs, the local daemon, and Harbor-backed
14
- > agent evals are implemented.
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
- ## Available now
16
+ Git can identify the harness source that changed. Hitch carries that identity
17
+ through build and execution:
17
18
 
18
- Hitch currently supports Codex CLI, Claude Code, Pi, and OpenCode adapters. It provides:
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
+ ```
19
31
 
20
- - executable discovery, version probing, and executable fingerprints;
21
- - exact package-version and Git-commit resolution;
22
- - immutable prepared artifacts with integrity-aware caching;
23
- - direct execution with normalized JSONL events;
24
- - a persistent local daemon with bounded concurrency;
25
- - queued and active-run cancellation, timeouts, and process-tree cleanup;
26
- - managed shared, Git worktree, and independent-copy workspace modes;
27
- - Harbor-backed evaluation in Docker with normalized reward summaries;
28
- - atomic manifests/results plus raw stdout and stderr logs; and
29
- - conservative recovery of interrupted records after daemon restart.
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.
30
36
 
31
- Versioned machine-contract schemas live in [`docs/schemas`](docs/schemas).
32
- Runtime validation rejects unknown request fields and preserves typed errors
33
- across the daemon HTTP boundary.
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.
41
+
42
+ ## Why harness version control?
43
+
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.
48
+
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 |
34
61
 
35
- ## 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.
36
65
 
37
- 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:
38
69
 
39
70
  ```bash
40
71
  npm install --global agent-hitch
@@ -42,25 +73,18 @@ hitch --version
42
73
  hitch list --json
43
74
  ```
44
75
 
45
- You can also try it without a global installation:
46
-
47
- ```bash
48
- npx agent-hitch --help
49
- ```
50
-
51
- For development from a checkout:
76
+ Resolve and prepare an exact harness version:
52
77
 
53
78
  ```bash
54
- npm test
55
- npm link
56
- hitch list --json
79
+ hitch resolve codex@version:0.92.0 --json
80
+ hitch prepare codex@version:0.92.0 --json
57
81
  ```
58
82
 
59
- Run a task directly:
83
+ Run that exact version in an isolated Git worktree:
60
84
 
61
85
  ```bash
62
86
  hitch run \
63
- --harness codex@installed \
87
+ --harness codex@version:0.92.0 \
64
88
  --model gpt-5.6-terra \
65
89
  --cwd /workspace/project \
66
90
  --workspace-mode worktree \
@@ -68,42 +92,93 @@ hitch run \
68
92
  --output jsonl
69
93
  ```
70
94
 
71
- 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:
72
98
 
73
99
  ```bash
74
- hitch daemon start --max-concurrent 4
100
+ hitch trajectory inspect RUN_ID --json
101
+ ```
75
102
 
76
- hitch run \
77
- --daemon \
78
- --harness codex@installed \
79
- --model gpt-5.6-terra \
80
- --cwd /workspace/project \
81
- --prompt-file task.md \
82
- --output jsonl
103
+ For development from a checkout:
83
104
 
84
- hitch daemon status --json
85
- hitch daemon stop
105
+ ```bash
106
+ npm install
107
+ npm run check
108
+ npm link
109
+ hitch list --json
86
110
  ```
87
111
 
88
- 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.
89
117
 
90
118
  ```bash
91
- hitch daemon submit \
92
- --harness claude@installed \
93
- --cwd /workspace/project \
94
- --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"
95
121
 
96
- hitch daemon cancel run_<id>
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"
126
+
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"
97
134
  ```
98
135
 
99
- State is stored below `~/.hitch` by default. Use `--root <path>` or
100
- `HITCH_ROOT` to relocate it. Native executable overrides use
101
- `HITCH_CODEX_PATH`, `HITCH_CLAUDE_PATH`, `HITCH_PI_PATH`, and
102
- `HITCH_OPENCODE_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.
103
177
 
104
178
  ## Harbor-backed evals
105
179
 
106
- Run an agent eval with Harbor:
180
+ Hitch can evaluate an exact, portable harness revision with
181
+ [Harbor](https://github.com/harbor-framework/harbor):
107
182
 
108
183
  ```bash
109
184
  # Installs pinned Harbor into ~/.hitch/tools without changing system Python.
@@ -119,106 +194,145 @@ hitch eval run \
119
194
  --max-concurrent 4
120
195
 
121
196
  hitch eval list
122
- hitch eval inspect eval_<id> --json
197
+ hitch eval inspect EVAL_ID --json
123
198
  ```
124
199
 
125
- `hitch eval setup harbor` requires Python 3.12+ and creates an isolated virtual
126
- environment at `~/.hitch/tools/harbor-<version>`. It does not install or start
127
- Docker. `hitch eval doctor` checks Python, the selected Harbor installation,
128
- the Docker daemon, and whether a common provider credential is present. Hitch
129
- automatically prefers the managed Harbor installation for subsequent evals;
130
- `--harbor` and `HITCH_HARBOR_PATH` remain explicit overrides.
131
-
132
200
  Harbor owns task discovery, Docker lifecycle, verification, and rewards. Its
133
- custom Hitch agent uploads a minimal Hitch runtime into each task container and
134
- runs the exact selected harness revision in `/app`. This ensures the benchmark
135
- 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.
136
206
 
137
- Eval currently accepts exact `version:` refs and `commit:` refs backed by a
138
- registered remote source. Installed executables and local `git+file://` refs are
139
- rejected because they are not portable into Harbor containers. Common provider
140
- credentials are forwarded by environment-variable reference; use
141
- `--pass-env NAME` for an additional variable. Eval records are stored under
142
- `~/.hitch/evals` and include the request, resolved revision, plan, generated
143
- 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.
144
212
 
145
- ## Select a harness revision
213
+ See [Harbor-backed agent evals](docs/evals.md) for setup, portability rules, and
214
+ the execution boundary.
146
215
 
147
- Harness selection is explicit for every run. Bare names retain the installed
148
- executable behavior; exact published versions and Git commits resolve to
149
- immutable identities and are prepared in Hitch's artifact store.
216
+ ## Stable execution layer
150
217
 
151
- ```bash
152
- # Bare name is an alias for codex@installed.
153
- 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.
154
221
 
155
- # Resolve or prewarm an exact published version.
156
- hitch resolve codex@version:0.92.0 --json
157
- hitch prepare codex@version:0.92.0 --json
158
- 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
+ ```
159
229
 
160
- # Build a commit from the registered upstream repository.
161
- 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
162
248
 
163
- # Build a clean commit from a local harness repository.
164
249
  hitch run \
165
- --harness 'pi@git+file:///workspace/pi#0123456789abcdef' \
166
- --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
167
258
  ```
168
259
 
169
- Version selectors require exact semantic versions; ranges and `latest` are not
170
- accepted. Short commit IDs are expanded and must be unambiguous. Local Git
171
- repositories must be clean. Codex and Pi support source-commit preparation;
172
- Claude Code and OpenCode currently support installed and exact-version sources.
260
+ Asynchronous submission and cancellation are also available:
173
261
 
174
- The legacy `--agent <name>` option remains available as an alias for
175
- `--harness <name>@installed`. It cannot select revisions or be combined with
176
- `--harness`.
262
+ ```bash
263
+ hitch daemon submit \
264
+ --harness claude@version:EXACT_VERSION \
265
+ --cwd /workspace/project \
266
+ --prompt-file task.md
177
267
 
178
- Preparation executes the registered package lifecycle or source-build commands
179
- with the permissions of the Hitch process. A resolved identity makes the input
180
- auditable and cacheable; it is not a security sandbox.
268
+ hitch daemon cancel RUN_ID
269
+ ```
181
270
 
182
- ## Why Hitch?
271
+ ## State and isolation
183
272
 
184
- Coding-agent CLIs expose different commands, model flags, configuration formats,
185
- session models, event streams, and process behavior. Hitch absorbs that
186
- integration cost behind a small adapter contract while preserving the native
187
- 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.
188
276
 
189
- ```text
190
- caller -> Hitch CLI / daemon -> shared run engine -> Codex CLI
191
- \----> Claude Code
192
- \----> Pi
193
- \----> OpenCode
194
- ```
277
+ Native executable overrides use `HITCH_CODEX_PATH`, `HITCH_CLAUDE_PATH`,
278
+ `HITCH_PI_PATH`, `HITCH_OPENCODE_PATH`, and `HITCH_DEEPSEEK_PATH`.
279
+
280
+ Workspace modes make mutation boundaries explicit:
195
281
 
196
- The direct CLI and daemon use the same engine, so persistence, timeout,
197
- cancellation, and event behavior do not drift.
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.
198
304
 
199
305
  ## Planned work
200
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
201
311
  - [ ] Additional harness adapters
202
312
  - [ ] Additional API provider support
203
313
  - [ ] Local model inference support
204
314
 
205
- ## Design principles
315
+ ## News
206
316
 
207
- - **Agent-first:** structured output, stable exit categories, no required UI.
208
- - **Explicit over ambient:** agent, model, workspace, and state root are visible.
209
- - **Minimal common contract:** unknown native events remain available rather
210
- than being forced into misleading abstractions.
211
- - **Isolated control state:** each root has its own daemon, token, queue, and run
212
- records.
213
- - **Safe interruption:** cancellation targets the complete subprocess tree.
214
- - **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.
215
322
 
216
323
  ## Documentation
217
324
 
325
+ - [Hitch 0.2 development spec](docs/hitch-0.2-development-spec.md)
218
326
  - [Design document](docs/design.md)
219
327
  - [Agent daemon analysis and port](docs/daemon.md)
220
328
  - [Workspace isolation](docs/workspaces.md)
221
329
  - [Harbor-backed evals](docs/evals.md)
330
+ - [Release process](docs/releasing.md)
331
+
332
+ ## Community
333
+
334
+ Join the [Hitch community on Discord](https://discord.gg/cZ4NBbHDk) to ask
335
+ questions, share feedback, and discuss agent-harness infrastructure.
222
336
 
223
337
  ## Acknowledgements
224
338