openwork-server 0.18.41 → 0.18.43
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 +72 -1
- package/dist/bin/openwork-server +0 -0
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -23,6 +23,44 @@ The server logs the client token and host token on boot when they are auto-gener
|
|
|
23
23
|
|
|
24
24
|
Add `--verbose` to print resolved config details on startup. Use `--version` to print the server version and exit.
|
|
25
25
|
|
|
26
|
+
## Desktop task recovery
|
|
27
|
+
|
|
28
|
+
The desktop enables `resumeInterruptedTasks` when embedding a server that owns
|
|
29
|
+
its local engines. Standalone servers, attached engines, remote workspaces, and
|
|
30
|
+
read-only servers do not opt in. Recovery works with both OpenCode v1 and v2 and
|
|
31
|
+
does not depend on an open conversation tab.
|
|
32
|
+
|
|
33
|
+
The `desktop_task_recovery` table in the existing runtime SQLite database stores
|
|
34
|
+
up to 1,000 task identities, their workspace path, original engine, last observed
|
|
35
|
+
user turn, and recovery phase. It stores no prompts, transcripts, or credentials.
|
|
36
|
+
Only tasks admitted after this feature is enabled are tracked; old unfinished
|
|
37
|
+
conversations are not swept or resumed retroactively.
|
|
38
|
+
|
|
39
|
+
On quit or update, a final checkpoint runs before engine teardown with two task
|
|
40
|
+
snapshots in flight and a 10-second budget. On restart, the coordinator checks two task
|
|
41
|
+
snapshots every two seconds and admits at most one continuation every two seconds,
|
|
42
|
+
with at most two recovered tasks active. Already-active native runs are observed,
|
|
43
|
+
not re-prompted, and native active work also limits new recovery admissions.
|
|
44
|
+
|
|
45
|
+
Completed, archived, manually stopped, approval/question-blocked, and active
|
|
46
|
+
delegated work are excluded. New manual work invalidates the old recovery intent.
|
|
47
|
+
Missing workspaces, changed directories, unavailable policy, and unverified
|
|
48
|
+
snapshots never authorize a send. V1 requires the original user turn and model
|
|
49
|
+
in its recent 100-message snapshot; v2 keeps the session's native model. A
|
|
50
|
+
continuation asks to inspect completed effects first, not rerun the original prompt.
|
|
51
|
+
|
|
52
|
+
A send is claimed durably before admission. Lost acknowledgements are never
|
|
53
|
+
blindly retried, even after another restart. Crash recovery requires an observed
|
|
54
|
+
running task and a still-unfinished matching turn; unexplained aborts stay stopped.
|
|
55
|
+
Tasks whose admission or shutdown checkpoint cannot be confirmed remain manual.
|
|
56
|
+
This prevents duplicate recovery admissions, not exactly-once execution of external
|
|
57
|
+
tools; uncertain earlier effects must be inspected or clarified before continuing.
|
|
58
|
+
|
|
59
|
+
Desktop Automation and remote-command requests opt out with
|
|
60
|
+
`x-openwork-task-recovery: off`; their existing execution ownership is unchanged.
|
|
61
|
+
Runtime journey verification for actual Electron restarts on both engines remains
|
|
62
|
+
separate from the focused coordinator and mocked-proxy tests.
|
|
63
|
+
|
|
26
64
|
## Config file
|
|
27
65
|
|
|
28
66
|
Defaults to `~/.config/openwork/server.json` (override with `OPENWORK_SERVER_CONFIG` or `--config`).
|
|
@@ -100,7 +138,7 @@ Sandbox advertisement (for capability discovery):
|
|
|
100
138
|
- `GET /workspace/:id/audit`
|
|
101
139
|
- `GET /workspace/:id/export`
|
|
102
140
|
|
|
103
|
-
Token management (
|
|
141
|
+
Token management (collaborator or owner bearer token):
|
|
104
142
|
|
|
105
143
|
- `GET /tokens`
|
|
106
144
|
- `POST /tokens` (body: `{ "scope": "owner"|"collaborator"|"viewer", "label"?: string }`)
|
|
@@ -116,6 +154,18 @@ Inbox/outbox:
|
|
|
116
154
|
- `GET /files/sessions/:sessionId/catalog/snapshot`
|
|
117
155
|
- `POST /files/sessions/:sessionId/ops`
|
|
118
156
|
|
|
157
|
+
UI control mailbox:
|
|
158
|
+
|
|
159
|
+
- `POST /experimental/ui-control/request` (collaborator or owner bearer token)
|
|
160
|
+
- `GET /experimental/ui-control/pending` (collaborator or owner bearer token; optional `?wait=1`)
|
|
161
|
+
- `POST /experimental/ui-control/:id/reply` (collaborator or owner bearer token)
|
|
162
|
+
|
|
163
|
+
Desktop and web renderers poll the same server they are connected to. The first
|
|
164
|
+
polling window claims each request; commands are never broadcast to every tab.
|
|
165
|
+
Requests expire after five seconds, and a server with no recent renderer poll
|
|
166
|
+
returns an explicit no-window result. The external desktop UI MCP bridge remains
|
|
167
|
+
available; in-app tools no longer discover or fall back to that bridge.
|
|
168
|
+
|
|
119
169
|
OpenCode proxy:
|
|
120
170
|
|
|
121
171
|
- `GET|POST|... /opencode/*`
|
|
@@ -136,3 +186,24 @@ Approvals endpoints:
|
|
|
136
186
|
- `POST /approvals/:id` with `{ "reply": "allow" | "deny" }`
|
|
137
187
|
|
|
138
188
|
Set `OPENWORK_APPROVAL_MODE=auto` to auto-approve during local development.
|
|
189
|
+
|
|
190
|
+
## Automatic title recovery
|
|
191
|
+
|
|
192
|
+
The managed v1 engine ships a title-only compatibility plugin. If a provider
|
|
193
|
+
returns HTTP 400 with `unsupported_value` or `unsupported_parameter` for
|
|
194
|
+
`reasoning.effort`, `reasoning_effort`, `temperature`, or `top_p`, it makes at
|
|
195
|
+
most one corrected request. It uses a reported supported effort or omits the
|
|
196
|
+
rejected optional parameter so the same model can use its default. Provider,
|
|
197
|
+
model, credentials, conversation content, and normal chat options stay intact.
|
|
198
|
+
Access, quota, transport, and unrelated request errors do not trigger an added
|
|
199
|
+
recovery request. The engine's own transport retry policy still applies.
|
|
200
|
+
|
|
201
|
+
Engine log records with service `openwork.title` / message `Automatic title
|
|
202
|
+
generation` contain only session/provider/model IDs, outcome, recovery attempt,
|
|
203
|
+
HTTP status, and the rejected parameter name. `accepted_after_recovery` means
|
|
204
|
+
the provider accepted the retry; `title_available` separately confirms a real
|
|
205
|
+
title was observed in a session update. An accepted request with no title update
|
|
206
|
+
within 60 seconds is `title_unconfirmed`, which can mean empty output, a stream
|
|
207
|
+
failure, or missing persistence; it is not reported as success. The app's
|
|
208
|
+
existing bounded placeholder probes and warning remain the user-facing safety
|
|
209
|
+
net. Existing untitled conversations are not bulk-regenerated.
|
package/dist/bin/openwork-server
CHANGED
|
Binary file
|