Commit Graph

81 Commits

Author SHA1 Message Date
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