@akshar5/cohall 0.6.1 → 0.7.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/CHANGELOG.md +25 -0
- package/README.md +79 -7
- package/bin/cohall.js +1030 -349
- package/bin/cohall.js.map +17 -16
- package/deploy/windows/install-device.ps1 +21 -2
- package/docs/grok-bot.md +196 -0
- package/docs/install.md +6 -6
- package/docs/integrations.md +8 -1
- package/docs/services.md +21 -4
- package/package.json +5 -3
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,30 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## [0.7.0](https://github.com/AksharP5/cohall/compare/v0.6.2...v0.7.0) (2026-09-26)
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
### Features
|
|
7
|
+
|
|
8
|
+
* **delegation:** exchange bounded task files ([#86](https://github.com/AksharP5/cohall/issues/86)) ([8a2f808](https://github.com/AksharP5/cohall/commit/8a2f80841d52a189736a17b991277eaf0c267f23))
|
|
9
|
+
* **tasks:** surface completed work in a client inbox ([#84](https://github.com/AksharP5/cohall/issues/84)) ([a7a367f](https://github.com/AksharP5/cohall/commit/a7a367ff1ffcf9aa77d971d8f83d419154bbb656))
|
|
10
|
+
|
|
11
|
+
## [0.6.2](https://github.com/AksharP5/cohall/compare/v0.6.1...v0.6.2) (2026-09-24)
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
### Bug Fixes
|
|
15
|
+
|
|
16
|
+
* **bot:** retain cancellation limits after uncertain dispatch ([#81](https://github.com/AksharP5/cohall/issues/81)) ([e324530](https://github.com/AksharP5/cohall/commit/e324530ee578bae7fd5a244a70daffa4304d8eb7))
|
|
17
|
+
* **cli:** reject invalid timeouts before sending work ([#70](https://github.com/AksharP5/cohall/issues/70)) ([bac67e9](https://github.com/AksharP5/cohall/commit/bac67e9a2dc8c9c460f2b5df7b882d098177c5ae))
|
|
18
|
+
* **config:** reject files as workspace roots ([#75](https://github.com/AksharP5/cohall/issues/75)) ([7b86305](https://github.com/AksharP5/cohall/commit/7b86305f36f68d264441c0d09fabbcbc23f457ae))
|
|
19
|
+
* **delegation:** keep child tasks out of blocked parent slots ([#80](https://github.com/AksharP5/cohall/issues/80)) ([5b1e891](https://github.com/AksharP5/cohall/commit/5b1e891244c913d752b98015a28f30d6dd9b237a))
|
|
20
|
+
* **deps:** update packages with published advisories ([#77](https://github.com/AksharP5/cohall/issues/77)) ([10801c9](https://github.com/AksharP5/cohall/commit/10801c9bc620b61da73b33480628ece4e0d1b583))
|
|
21
|
+
* **pairing:** track the source of worker requests ([#79](https://github.com/AksharP5/cohall/issues/79)) ([5f383c6](https://github.com/AksharP5/cohall/commit/5f383c6ec8c5068417fcb7bdd915aed4976e71dc))
|
|
22
|
+
* **provider:** finish cancellation before releasing the worker ([#74](https://github.com/AksharP5/cohall/issues/74)) ([a4ff068](https://github.com/AksharP5/cohall/commit/a4ff0684be9d1fbbc543d141537f2d0d5232559d))
|
|
23
|
+
* **relay:** isolate failed device connections ([#72](https://github.com/AksharP5/cohall/issues/72)) ([035868d](https://github.com/AksharP5/cohall/commit/035868d72fcf5894ff8dcf71407951522bf66d1c))
|
|
24
|
+
* **service:** retain the configured file and Node runtime ([#73](https://github.com/AksharP5/cohall/issues/73)) ([9811d1b](https://github.com/AksharP5/cohall/commit/9811d1b83bc9e8249f7f514c200967e110f7befc))
|
|
25
|
+
* **tasks:** preserve continuity after reconnects ([#76](https://github.com/AksharP5/cohall/issues/76)) ([3b22717](https://github.com/AksharP5/cohall/commit/3b2271726316d6b6364fda3a8adbecaf69149342))
|
|
26
|
+
* **windows:** launch providers, upgrades, and background workers reliably ([#78](https://github.com/AksharP5/cohall/issues/78)) ([6ccc4f8](https://github.com/AksharP5/cohall/commit/6ccc4f89550dcb22449d3035daa96af716c2558e))
|
|
27
|
+
|
|
3
28
|
## [0.6.1](https://github.com/AksharP5/cohall/compare/v0.6.0...v0.6.1) (2026-09-23)
|
|
4
29
|
|
|
5
30
|
|
package/README.md
CHANGED
|
@@ -122,6 +122,13 @@ unset pairing_token
|
|
|
122
122
|
`cohall join` remains available for scripts that only want to exchange a
|
|
123
123
|
pairing token and write configuration.
|
|
124
124
|
|
|
125
|
+
Full-worker pairings associate both credentials with the same device. Once the
|
|
126
|
+
worker registers, its client requests record the source device and automatic
|
|
127
|
+
routing prefers an equally suitable peer. Older pairings keep working; pair the
|
|
128
|
+
worker again to enable source attribution and that routing preference. Forgetting
|
|
129
|
+
a device revokes both associated credentials. Client-only pairings have no worker
|
|
130
|
+
identity.
|
|
131
|
+
|
|
125
132
|
### 3. Keep the device available
|
|
126
133
|
|
|
127
134
|
```bash
|
|
@@ -190,8 +197,59 @@ npx -y @akshar5/cohall wait <task-id> --timeout 1800
|
|
|
190
197
|
npx -y @akshar5/cohall trace <task-id> --follow
|
|
191
198
|
```
|
|
192
199
|
|
|
200
|
+
Completed tasks also appear in the sending client's inbox. This covers queued
|
|
201
|
+
work and tasks that finish after a wait times out:
|
|
202
|
+
|
|
203
|
+
```bash
|
|
204
|
+
npx -y @akshar5/cohall inbox
|
|
205
|
+
npx -y @akshar5/cohall status <task-id>
|
|
206
|
+
npx -y @akshar5/cohall inbox ack <task-id>
|
|
207
|
+
```
|
|
208
|
+
|
|
209
|
+
The inbox shows short previews; `status` returns the full result. Acknowledge a
|
|
210
|
+
task after handling it. Synchronous `delegate` calls acknowledge their own
|
|
211
|
+
results automatically. The inbox shows up to 20 oldest entries and sets
|
|
212
|
+
`hasMore` when more are waiting; acknowledge handled entries to reveal the rest.
|
|
213
|
+
Each client credential has its own inbox, including
|
|
214
|
+
client-only pairings. The relay keeps at most 1,000 completed tasks by default,
|
|
215
|
+
so an old unacknowledged result can leave the inbox when history is pruned.
|
|
216
|
+
Tasks created before the inbox was added have no inbox entry.
|
|
217
|
+
|
|
218
|
+
Attach up to two explicit files to a coding task. Each file may be up to 256 KiB.
|
|
219
|
+
The target receives them as temporary files and can return up to two files by
|
|
220
|
+
writing them to the output directory named in its task prompt. List task files
|
|
221
|
+
or download a file using the task ID:
|
|
222
|
+
|
|
223
|
+
```bash
|
|
224
|
+
cohall delegate --target @macbook --attach ./screenshot.png \
|
|
225
|
+
--prompt 'Inspect the screenshot and return a short report file.'
|
|
226
|
+
cohall attachments <task-id>
|
|
227
|
+
cohall download <task-id> report.txt --output ./report.txt
|
|
228
|
+
```
|
|
229
|
+
|
|
230
|
+
The `delegate` MCP tool accepts `attachment_paths`; `list_task_attachments` and
|
|
231
|
+
`download_task_attachment` provide the same retrieval flow. Downloads require a
|
|
232
|
+
new destination path and never overwrite a local file. When an input and output
|
|
233
|
+
share a name, downloads select the output by default; pass `--direction input`
|
|
234
|
+
(or the MCP `direction` argument) to retrieve the input. File bytes remain on the
|
|
235
|
+
relay until the task is removed by its configured history limit. Upgrade the
|
|
236
|
+
relay and target worker before sending attachments; older workers do not
|
|
237
|
+
advertise attachment support. Named Grok Bots do not support file attachments.
|
|
238
|
+
If a long result and output files exceed the 1 MiB transfer limit, the task
|
|
239
|
+
completes with its text result and a notice that the files were omitted.
|
|
240
|
+
|
|
241
|
+
`--timeout` accepts 5 to 86400 seconds and defaults to 900. It limits how long
|
|
242
|
+
the command waits; the task continues after that. Invalid timeout values are
|
|
243
|
+
rejected before any work is sent, including with `--no-wait`.
|
|
244
|
+
|
|
193
245
|
Reuse the returned `thread_id` for follow-ups so the target resumes its provider
|
|
194
|
-
session.
|
|
246
|
+
session. Queued follow-ups pick up the preceding turn's session when they start,
|
|
247
|
+
including after a worker restart.
|
|
248
|
+
|
|
249
|
+
Delegated child tasks inherit their parent's thread. Cohall routes them away
|
|
250
|
+
from unfinished ancestors using the same worker slot, and rejects an explicit
|
|
251
|
+
target that would make them wait on an ancestor. A Bot can still delegate to
|
|
252
|
+
Codex or a different Bot on its own computer.
|
|
195
253
|
|
|
196
254
|
## Talk to your Grok Bots
|
|
197
255
|
|
|
@@ -200,13 +258,22 @@ through the local Grok Bot gateway on their computer. It uses each Bot's current
|
|
|
200
258
|
conversation, tools, and permissions. Grok Bot remains the agent responding;
|
|
201
259
|
Codex is a separate provider that the Bot can delegate to.
|
|
202
260
|
|
|
203
|
-
|
|
204
|
-
|
|
261
|
+
For a new computer, follow [Grok Bot setup](docs/grok-bot.md). It covers
|
|
262
|
+
Tailscale access, the suggested `tag:grokbot` identity, secure pairing, gateway
|
|
263
|
+
configuration, and recovery on hosts without systemd. Pair the computer once;
|
|
264
|
+
its Cohall worker discovers every named Bot there. Tailscale policies can
|
|
265
|
+
select the computer by its tag; Cohall does not require one.
|
|
266
|
+
|
|
267
|
+
On an already paired Grok Bot computer, configure its actual gateway file and
|
|
268
|
+
restart the Cohall worker:
|
|
205
269
|
|
|
206
270
|
```bash
|
|
207
|
-
|
|
271
|
+
test -r "$HOME/agent-data/gateway.json" &&
|
|
272
|
+
cohall configure --grok-gateway "$HOME/agent-data/gateway.json" --providers grok-bot
|
|
208
273
|
```
|
|
209
274
|
|
|
275
|
+
The path is an example; check the file on that computer before using it. Add
|
|
276
|
+
`codex` to the provider list only when Codex is installed and signed in there.
|
|
210
277
|
The path can also be supplied as `COHALL_GROK_GATEWAY`. The gateway credential
|
|
211
278
|
stays on that computer; clients discover Bots through the Cohall relay. Upgrade
|
|
212
279
|
the relay, workers, and clients before enabling this provider. Restart
|
|
@@ -234,9 +301,13 @@ and `delegate` tools; the Bot target selects the provider automatically.
|
|
|
234
301
|
A Cohall thread records the exchange and lets follow-ups find the same Bot.
|
|
235
302
|
It does not create an isolated Grok Bot conversation: messages sent in the
|
|
236
303
|
Grok Bot app share that Bot's history. Bot tasks use the Bot's own permissions
|
|
237
|
-
and computer context, so omit `--workspace`. Queued Bot tasks
|
|
238
|
-
active Bot turns must be stopped in Grok Bot because
|
|
239
|
-
cancel a specific Cohall turn.
|
|
304
|
+
and computer context, so omit `--workspace`. Queued Bot tasks that have never
|
|
305
|
+
been dispatched can be cancelled; active Bot turns must be stopped in Grok Bot because
|
|
306
|
+
the gateway cannot safely cancel a specific Cohall turn.
|
|
307
|
+
A dispatched Bot request remains non-cancellable through Cohall if a disconnect
|
|
308
|
+
or relay restart puts it back in the queue, even if its acceptance message was lost.
|
|
309
|
+
When upgrading an older relay without dispatch records, outstanding Bot requests
|
|
310
|
+
are conservatively treated as potentially dispatched.
|
|
240
311
|
|
|
241
312
|
Cohall includes a local callback command in each Bot request. After finishing,
|
|
242
313
|
the Bot hands its result back by running `cohall reply <task-id> --message-file
|
|
@@ -342,6 +413,7 @@ configuration.
|
|
|
342
413
|
## Documentation
|
|
343
414
|
|
|
344
415
|
- [Installation, pairing, providers, and upgrades](docs/install.md)
|
|
416
|
+
- [Grok Bot computer setup, Tailscale, and recovery](docs/grok-bot.md)
|
|
345
417
|
- [Agent skill and MCP integrations](docs/integrations.md)
|
|
346
418
|
- [Linux, macOS, and Windows services](docs/services.md)
|
|
347
419
|
- [Contributing](CONTRIBUTING.md)
|