lyon
|
06284f5287
|
feat: add project workbench launch
|
2026-06-25 17:59:19 +08:00 |
|
Lyon
|
fe2ed4e308
|
fix: read workbench final response from message parts (#2083)
|
2026-06-25 05:17:58 +08:00 |
|
Lyon
|
2651a6ee55
|
fix(workbench): replay SSE outbox through runtime service (#2070)
|
2026-06-24 23:21:02 +08:00 |
|
Lyon
|
c604dd2236
|
fix(workbench): replay realtime outbox by after seq (#2068)
|
2026-06-24 22:45:17 +08:00 |
|
Lyon
|
deef52bdc6
|
fix(workbench): emit session message outbox snapshots (#2065)
|
2026-06-24 21:14:52 +08:00 |
|
Lyon
|
b49f2a5ed2
|
fix(workbench): surface projection fallback failures (#2052)
|
2026-06-24 17:10:07 +08:00 |
|
Lyon
|
9e094a6697
|
fix(workbench): do not derive final response while running (#2024)
|
2026-06-24 06:36:49 +08:00 |
|
Lyon
|
1cfb09cc08
|
fix(workbench): classify runtime dependency outages as retryable (#2021)
|
2026-06-24 06:05:14 +08:00 |
|
Lyon
|
6f02aa095d
|
fix(workbench): query latest message facts by default (#2016)
|
2026-06-24 05:20:57 +08:00 |
|
Lyon
|
7ad24b56c8
|
fix(workbench): return latest messages by default (#2015)
|
2026-06-24 05:15:01 +08:00 |
|
Lyon
|
f7db5e7cc2
|
fix(v03): drain workbench sse on shutdown (#2001)
|
2026-06-24 01:34:45 +08:00 |
|
Lyon
|
21f349f3b1
|
fix(workbench): stream terminal message snapshots (#1996)
|
2026-06-23 23:56:08 +08:00 |
|
Lyon
|
0b6fc63472
|
fix(workbench): tag read model not found spans (#1990)
Co-authored-by: root <root@lyon.remote>
|
2026-06-23 22:11:24 +08:00 |
|
Lyon
|
79e71db1fd
|
fix(workbench): include timing facts in message page (#1989)
Co-authored-by: root <root@lyon.remote>
|
2026-06-23 21:57:27 +08:00 |
|
Lyon
|
d63b08c492
|
fix(workbench): flush sse and report open latency (#1986)
Co-authored-by: root <root@lyon.remote>
|
2026-06-23 20:56:39 +08:00 |
|
Lyon
|
7ef77d8ed4
|
fix(workbench): stabilize running timing start (#1982)
Co-authored-by: root <root@lyon.remote>
|
2026-06-23 19:35:50 +08:00 |
|
Lyon
|
7d7fd82df1
|
fix(workbench): derive running timing from trace events (#1981)
Co-authored-by: root <root@lyon.remote>
|
2026-06-23 19:28:49 +08:00 |
|
Lyon
|
4759afa308
|
fix(workbench): keep realtime turn timing complete (#1972)
|
2026-06-23 14:30:24 +08:00 |
|
Lyon
|
9fc6f655d2
|
fix(workbench): stream durable fact turn snapshots (#1971)
|
2026-06-23 14:16:05 +08:00 |
|
Lyon
|
730c1a7fbc
|
fix(workbench): stream turn timing to optimistic cards (#1970)
|
2026-06-23 14:08:33 +08:00 |
|
Lyon
|
8aa8a9cf61
|
fix(workbench): repair session SSE block syntax (#1963)
* fix(workbench): stream session outbox events over sse
* fix(workbench): repair session sse block structure
|
2026-06-23 10:33:35 +08:00 |
|
Lyon
|
ee8181fb52
|
fix(workbench): stream session outbox events over sse (#1962)
|
2026-06-23 10:20:50 +08:00 |
|
Lyon
|
78a57dc98c
|
fix(workbench): read durable facts from runtime service (#1960)
|
2026-06-23 10:05:39 +08:00 |
|
Lyon
|
0d0fdd0b51
|
fix(workbench): bound durable read fan-out (#1954)
|
2026-06-23 06:48:49 +08:00 |
|
Lyon
|
5e1cc8ade5
|
fix(workbench): avoid readiness and SSE stalls (#1951)
|
2026-06-23 05:30:57 +08:00 |
|
Lyon
|
df487ec088
|
fix: bound Workbench read model latency (#1912)
|
2026-06-22 18:58:31 +08:00 |
|
lyon
|
52182aa0a5
|
fix: expose workbench cache observability
|
2026-06-22 15:10:26 +08:00 |
|
lyon
|
ea0354aca2
|
instrument workbench runtime otel spans
|
2026-06-21 21:55:52 +08:00 |
|
lyon
|
2bafed5b85
|
fix workbench runtime nullable json reads
|
2026-06-21 21:38:30 +08:00 |
|
lyon
|
0fe111747e
|
move workbench session list to go runtime
|
2026-06-21 21:25:14 +08:00 |
|
Lyon
|
0833e115bf
|
fix: reduce workbench read model load (#1829)
|
2026-06-21 18:41:07 +08:00 |
|
Lyon
|
a5b47d5d8d
|
fix: expose workbench projection failures in otel (#1824)
|
2026-06-21 13:44:22 +08:00 |
|
Lyon
|
70d90e85eb
|
fix: emit workbench sse accepted span (#1816)
|
2026-06-21 12:20:25 +08:00 |
|
Lyon
|
0f3bc3f99a
|
fix workbench otel http span timing (#1815)
|
2026-06-21 12:07:37 +08:00 |
|
lyon
|
e9d19c8617
|
fix: retry transient workbench facts reads
|
2026-06-21 05:08:08 +08:00 |
|
lyon
|
7ac200cd7e
|
fix: expose retryable projection gaps
|
2026-06-21 04:14:58 +08:00 |
|
lyon
|
1f59fbd33e
|
fix: keep running turn timing authoritative
|
2026-06-21 03:29:29 +08:00 |
|
lyon
|
0d861d03ec
|
fix: prioritize terminal checkpoint status
|
2026-06-21 03:21:09 +08:00 |
|
lyon
|
49e42be440
|
fix(workbench): derive session terminal status from durable trace
|
2026-06-21 01:56:09 +08:00 |
|
Lyon
|
cd981355c6
|
fix(workbench): keep per-turn message timing isolated (#1768)
|
2026-06-21 00:56:12 +08:00 |
|
lyon
|
800f674d5c
|
fix: recover AgentRun terminal projection
|
2026-06-20 20:05:13 +08:00 |
|
lyon
|
6ab94f23c8
|
fix: clarify workbench trace event diagnostics
|
2026-06-20 19:43:54 +08:00 |
|
Lyon
|
9574e2b514
|
feat: PJ2026-0104010803 P3 后端读侧推理清零 - session list + metric status 只读 projection (#1757)
server-workbench-http.ts:
- sessionListProjectionOptions: 当 session snapshot 已有 durable projection 字段
(projectionStatus/terminal/sealedAt) 时,直接使用 projection 字段构建 turn projection,
不再从 compactSessionTraceResult/compactSessionTraceSnapshot 多来源混合
- recordWorkbenchProjectionMetric: status 只读 projection.status,不再 fallback 到
result?.status ?? trace?.status;source 固定为 workbench_read_model
- SPEC header 更新到 draft-2026-06-20-p3-read-side-zero
workbench-turn-projection.ts:
- SPEC header 更新到 draft-2026-06-20-p1-zero-split-durable-realtime
Closes #1749
Refs #1742
|
2026-06-20 19:34:52 +08:00 |
|
Lyon
|
7c5a1f8c5b
|
feat: PJ2026-0104010803 P2 SSE/realtime 无状态化 - durable outbox cursor replay (#1756)
server-workbench-http.ts:
- handleWorkbenchRealtimeHttp 优先从 durable outbox 读取 (readWorkbenchProjectionOutbox)
- 当 runtimeStore 支持 outbox 时,SSE 用 polling cursor replay 代替 traceStore.subscribe
- outbox 不支持时保留内存 traceStore.subscribe 作为兼容降级
- terminal commit 从 outbox terminal 行触发 snapshot + trace realtime
- 新增 HWLAB_WORKBENCH_SSE_OUTBOX_POLL_MS 环境变量控制 poll 间隔
workbench-facts-store.ts:
- 新增 subscribeDurableProjection 方法,从 durable outbox polling 读取
- subscribeTrace 保留兼容(内存 trace),新增 durable projection subscription 入口
- SPEC header 更新到 draft-2026-06-20-p1-zero-split-durable-realtime
cloud-api 重启后 SSE 从 DB outbox cursor 继续输出,不依赖内存 listener
Closes #1748
Refs #1742
|
2026-06-20 19:31:49 +08:00 |
|
lyon
|
11e2f08e70
|
fix: order workbench sessions by updated desc
|
2026-06-20 15:36:41 +08:00 |
|
lyon
|
03942afc5c
|
fix: 收敛 workbench 消息头 timing 投影
|
2026-06-20 14:54:04 +08:00 |
|
lyon
|
4a9498d720
|
fix(workbench): expose code agent timing metadata
|
2026-06-20 13:55:57 +08:00 |
|
lyon
|
6468263672
|
fix: thin workbench session list projection
|
2026-06-20 13:24:49 +08:00 |
|
Lyon
|
acd9831149
|
Fix workbench trace projection authority (#1696)
|
2026-06-20 12:47:18 +08:00 |
|
lyon
|
c9028519ca
|
fix: overlap workbench session include query
|
2026-06-20 12:01:30 +08:00 |
|