@graychennpm/codebridge 0.0.0-stage → 0.1.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 (434) hide show
  1. package/CHANGELOG.md +14 -0
  2. package/LICENSE +21 -0
  3. package/README.md +217 -2
  4. package/README.zh-CN.md +222 -0
  5. package/apps/web/public/brand/agent-logo-carbon.svg +1 -0
  6. package/apps/web/public/brand/agent-logo.svg +1 -0
  7. package/docs/zh-CN/npm-release.md +77 -0
  8. package/node_modules/@codebridge/agent-registry/dist/index.d.ts +32 -0
  9. package/node_modules/@codebridge/agent-registry/dist/index.js +177 -0
  10. package/node_modules/@codebridge/agent-registry/dist/setup.d.ts +9 -0
  11. package/node_modules/@codebridge/agent-registry/dist/setup.js +115 -0
  12. package/node_modules/@codebridge/agent-registry/package.json +17 -0
  13. package/node_modules/@codebridge/backends/dist/acp/acp-active-session.d.ts +12 -0
  14. package/node_modules/@codebridge/backends/dist/acp/acp-active-session.js +57 -0
  15. package/node_modules/@codebridge/backends/dist/acp/acp-claude-activity.d.ts +9 -0
  16. package/node_modules/@codebridge/backends/dist/acp/acp-claude-activity.js +49 -0
  17. package/node_modules/@codebridge/backends/dist/acp/acp-config-options.d.ts +46 -0
  18. package/node_modules/@codebridge/backends/dist/acp/acp-config-options.js +220 -0
  19. package/node_modules/@codebridge/backends/dist/acp/acp-doctor.d.ts +3 -0
  20. package/node_modules/@codebridge/backends/dist/acp/acp-doctor.js +18 -0
  21. package/node_modules/@codebridge/backends/dist/acp/acp-event-mapper.d.ts +5 -0
  22. package/node_modules/@codebridge/backends/dist/acp/acp-event-mapper.js +136 -0
  23. package/node_modules/@codebridge/backends/dist/acp/acp-kill.d.ts +10 -0
  24. package/node_modules/@codebridge/backends/dist/acp/acp-kill.js +24 -0
  25. package/node_modules/@codebridge/backends/dist/acp/acp-race.d.ts +6 -0
  26. package/node_modules/@codebridge/backends/dist/acp/acp-race.js +29 -0
  27. package/node_modules/@codebridge/backends/dist/acp/acp-session-list.d.ts +32 -0
  28. package/node_modules/@codebridge/backends/dist/acp/acp-session-list.js +218 -0
  29. package/node_modules/@codebridge/backends/dist/acp/acp-session-pool.d.ts +85 -0
  30. package/node_modules/@codebridge/backends/dist/acp/acp-session-pool.js +165 -0
  31. package/node_modules/@codebridge/backends/dist/acp/acp-session-runner.d.ts +78 -0
  32. package/node_modules/@codebridge/backends/dist/acp/acp-session-runner.js +550 -0
  33. package/node_modules/@codebridge/backends/dist/acp/acp-spawn-profiles.d.ts +9 -0
  34. package/node_modules/@codebridge/backends/dist/acp/acp-spawn-profiles.js +28 -0
  35. package/node_modules/@codebridge/backends/dist/acp/headless-client.d.ts +19 -0
  36. package/node_modules/@codebridge/backends/dist/acp/headless-client.js +47 -0
  37. package/node_modules/@codebridge/backends/dist/acp/index.d.ts +9 -0
  38. package/node_modules/@codebridge/backends/dist/acp/index.js +9 -0
  39. package/node_modules/@codebridge/backends/dist/agent-setup.d.ts +60 -0
  40. package/node_modules/@codebridge/backends/dist/agent-setup.js +504 -0
  41. package/node_modules/@codebridge/backends/dist/attachment-prompt.d.ts +8 -0
  42. package/node_modules/@codebridge/backends/dist/attachment-prompt.js +28 -0
  43. package/node_modules/@codebridge/backends/dist/auth-error-hints.d.ts +8 -0
  44. package/node_modules/@codebridge/backends/dist/auth-error-hints.js +33 -0
  45. package/node_modules/@codebridge/backends/dist/codex-skill-commands.d.ts +3 -0
  46. package/node_modules/@codebridge/backends/dist/codex-skill-commands.js +88 -0
  47. package/node_modules/@codebridge/backends/dist/index.d.ts +18 -0
  48. package/node_modules/@codebridge/backends/dist/index.js +34 -0
  49. package/node_modules/@codebridge/backends/dist/pi-providers.d.ts +45 -0
  50. package/node_modules/@codebridge/backends/dist/pi-providers.js +148 -0
  51. package/node_modules/@codebridge/backends/dist/pi-session-runner.d.ts +85 -0
  52. package/node_modules/@codebridge/backends/dist/pi-session-runner.js +460 -0
  53. package/node_modules/@codebridge/backends/dist/provider-connection.d.ts +17 -0
  54. package/node_modules/@codebridge/backends/dist/provider-connection.js +99 -0
  55. package/node_modules/@codebridge/backends/dist/session-discovery.d.ts +23 -0
  56. package/node_modules/@codebridge/backends/dist/session-discovery.js +340 -0
  57. package/node_modules/@codebridge/backends/dist/skill-control-plane.d.ts +147 -0
  58. package/node_modules/@codebridge/backends/dist/skill-control-plane.js +832 -0
  59. package/node_modules/@codebridge/backends/package.json +22 -0
  60. package/node_modules/@codebridge/bridge/dist/alert-notification-rules.d.ts +14 -0
  61. package/node_modules/@codebridge/bridge/dist/alert-notification-rules.js +37 -0
  62. package/node_modules/@codebridge/bridge/dist/channel-config.d.ts +4 -0
  63. package/node_modules/@codebridge/bridge/dist/channel-config.js +9 -0
  64. package/node_modules/@codebridge/bridge/dist/channel-ingress.d.ts +5 -0
  65. package/node_modules/@codebridge/bridge/dist/channel-ingress.js +403 -0
  66. package/node_modules/@codebridge/bridge/dist/cli.d.ts +3 -0
  67. package/node_modules/@codebridge/bridge/dist/cli.js +581 -0
  68. package/node_modules/@codebridge/bridge/dist/deployment.d.ts +46 -0
  69. package/node_modules/@codebridge/bridge/dist/deployment.js +174 -0
  70. package/node_modules/@codebridge/bridge/dist/event-loop-lag.d.ts +19 -0
  71. package/node_modules/@codebridge/bridge/dist/event-loop-lag.js +33 -0
  72. package/node_modules/@codebridge/bridge/dist/feishu-alert-monitor.d.ts +70 -0
  73. package/node_modules/@codebridge/bridge/dist/feishu-alert-monitor.js +591 -0
  74. package/node_modules/@codebridge/bridge/dist/init-wizard.d.ts +52 -0
  75. package/node_modules/@codebridge/bridge/dist/init-wizard.js +571 -0
  76. package/node_modules/@codebridge/bridge/dist/mcp-api.d.ts +4 -0
  77. package/node_modules/@codebridge/bridge/dist/mcp-api.js +100 -0
  78. package/node_modules/@codebridge/bridge/dist/outbound-api.d.ts +31 -0
  79. package/node_modules/@codebridge/bridge/dist/outbound-api.js +184 -0
  80. package/node_modules/@codebridge/bridge/dist/outbound-publishers.d.ts +54 -0
  81. package/node_modules/@codebridge/bridge/dist/outbound-publishers.js +213 -0
  82. package/node_modules/@codebridge/bridge/dist/project-api.d.ts +4 -0
  83. package/node_modules/@codebridge/bridge/dist/project-api.js +161 -0
  84. package/node_modules/@codebridge/bridge/dist/secrets-command.d.ts +13 -0
  85. package/node_modules/@codebridge/bridge/dist/secrets-command.js +34 -0
  86. package/node_modules/@codebridge/bridge/dist/session-api.d.ts +26 -0
  87. package/node_modules/@codebridge/bridge/dist/session-api.js +1378 -0
  88. package/node_modules/@codebridge/bridge/dist/session-history-import.d.ts +24 -0
  89. package/node_modules/@codebridge/bridge/dist/session-history-import.js +82 -0
  90. package/node_modules/@codebridge/bridge/dist/session-runtime-api.d.ts +19 -0
  91. package/node_modules/@codebridge/bridge/dist/session-runtime-api.js +453 -0
  92. package/node_modules/@codebridge/bridge/dist/session-runtime-migration.d.ts +21 -0
  93. package/node_modules/@codebridge/bridge/dist/session-runtime-migration.js +43 -0
  94. package/node_modules/@codebridge/bridge/dist/session-runtime-types.d.ts +85 -0
  95. package/node_modules/@codebridge/bridge/dist/session-runtime-types.js +98 -0
  96. package/node_modules/@codebridge/bridge/dist/skill-api.d.ts +28 -0
  97. package/node_modules/@codebridge/bridge/dist/skill-api.js +129 -0
  98. package/node_modules/@codebridge/bridge/dist/startup-surfaces.d.ts +15 -0
  99. package/node_modules/@codebridge/bridge/dist/startup-surfaces.js +13 -0
  100. package/node_modules/@codebridge/bridge/dist/web-frontend.d.ts +8 -0
  101. package/node_modules/@codebridge/bridge/dist/web-frontend.js +76 -0
  102. package/node_modules/@codebridge/bridge/dist/work-item-api.d.ts +6 -0
  103. package/node_modules/@codebridge/bridge/dist/work-item-api.js +414 -0
  104. package/node_modules/@codebridge/bridge/package.json +28 -0
  105. package/node_modules/@codebridge/channel-feishu/dist/alert-reactions.d.ts +6 -0
  106. package/node_modules/@codebridge/channel-feishu/dist/alert-reactions.js +58 -0
  107. package/node_modules/@codebridge/channel-feishu/dist/alert-types.d.ts +35 -0
  108. package/node_modules/@codebridge/channel-feishu/dist/alert-types.js +2 -0
  109. package/node_modules/@codebridge/channel-feishu/dist/bridge.d.ts +130 -0
  110. package/node_modules/@codebridge/channel-feishu/dist/bridge.js +1231 -0
  111. package/node_modules/@codebridge/channel-feishu/dist/cardkit-writer.d.ts +48 -0
  112. package/node_modules/@codebridge/channel-feishu/dist/cardkit-writer.js +153 -0
  113. package/node_modules/@codebridge/channel-feishu/dist/chain-topics.d.ts +20 -0
  114. package/node_modules/@codebridge/channel-feishu/dist/chain-topics.js +35 -0
  115. package/node_modules/@codebridge/channel-feishu/dist/coalescing-card-writer.d.ts +12 -0
  116. package/node_modules/@codebridge/channel-feishu/dist/coalescing-card-writer.js +53 -0
  117. package/node_modules/@codebridge/channel-feishu/dist/delivery-reconciler.d.ts +19 -0
  118. package/node_modules/@codebridge/channel-feishu/dist/delivery-reconciler.js +53 -0
  119. package/node_modules/@codebridge/channel-feishu/dist/durable-markdown-card.d.ts +19 -0
  120. package/node_modules/@codebridge/channel-feishu/dist/durable-markdown-card.js +77 -0
  121. package/node_modules/@codebridge/channel-feishu/dist/feishu-extra-events.d.ts +27 -0
  122. package/node_modules/@codebridge/channel-feishu/dist/feishu-extra-events.js +24 -0
  123. package/node_modules/@codebridge/channel-feishu/dist/feishu-http.d.ts +4 -0
  124. package/node_modules/@codebridge/channel-feishu/dist/feishu-http.js +25 -0
  125. package/node_modules/@codebridge/channel-feishu/dist/feishu-inbound-context.d.ts +13 -0
  126. package/node_modules/@codebridge/channel-feishu/dist/feishu-inbound-context.js +45 -0
  127. package/node_modules/@codebridge/channel-feishu/dist/feishu-inbound-media.d.ts +22 -0
  128. package/node_modules/@codebridge/channel-feishu/dist/feishu-inbound-media.js +273 -0
  129. package/node_modules/@codebridge/channel-feishu/dist/feishu-mention-gate.d.ts +13 -0
  130. package/node_modules/@codebridge/channel-feishu/dist/feishu-mention-gate.js +22 -0
  131. package/node_modules/@codebridge/channel-feishu/dist/feishu-outbound-file.d.ts +12 -0
  132. package/node_modules/@codebridge/channel-feishu/dist/feishu-outbound-file.js +38 -0
  133. package/node_modules/@codebridge/channel-feishu/dist/feishu-quoted-message.d.ts +30 -0
  134. package/node_modules/@codebridge/channel-feishu/dist/feishu-quoted-message.js +183 -0
  135. package/node_modules/@codebridge/channel-feishu/dist/index.d.ts +7 -0
  136. package/node_modules/@codebridge/channel-feishu/dist/index.js +3 -0
  137. package/node_modules/@codebridge/channel-feishu/dist/redacting-logger.d.ts +17 -0
  138. package/node_modules/@codebridge/channel-feishu/dist/redacting-logger.js +41 -0
  139. package/node_modules/@codebridge/channel-feishu/dist/run-status.d.ts +39 -0
  140. package/node_modules/@codebridge/channel-feishu/dist/run-status.js +166 -0
  141. package/node_modules/@codebridge/channel-feishu/dist/session-watcher.d.ts +98 -0
  142. package/node_modules/@codebridge/channel-feishu/dist/session-watcher.js +655 -0
  143. package/node_modules/@codebridge/channel-feishu/package.json +19 -0
  144. package/node_modules/@codebridge/channel-telegram/dist/coalescing-message-writer.d.ts +14 -0
  145. package/node_modules/@codebridge/channel-telegram/dist/coalescing-message-writer.js +56 -0
  146. package/node_modules/@codebridge/channel-telegram/dist/index.d.ts +3 -0
  147. package/node_modules/@codebridge/channel-telegram/dist/index.js +3 -0
  148. package/node_modules/@codebridge/channel-telegram/dist/telegram-api.d.ts +62 -0
  149. package/node_modules/@codebridge/channel-telegram/dist/telegram-api.js +72 -0
  150. package/node_modules/@codebridge/channel-telegram/dist/telegram-bridge.d.ts +64 -0
  151. package/node_modules/@codebridge/channel-telegram/dist/telegram-bridge.js +469 -0
  152. package/node_modules/@codebridge/channel-telegram/dist/telegram-session-watcher.d.ts +41 -0
  153. package/node_modules/@codebridge/channel-telegram/dist/telegram-session-watcher.js +184 -0
  154. package/node_modules/@codebridge/channel-telegram/package.json +18 -0
  155. package/node_modules/@codebridge/core/dist/config-schema.d.ts +1195 -0
  156. package/node_modules/@codebridge/core/dist/config-schema.js +293 -0
  157. package/node_modules/@codebridge/core/dist/config-store.d.ts +48 -0
  158. package/node_modules/@codebridge/core/dist/config-store.js +207 -0
  159. package/node_modules/@codebridge/core/dist/index.d.ts +11 -0
  160. package/node_modules/@codebridge/core/dist/index.js +10 -0
  161. package/node_modules/@codebridge/core/dist/json-file-store.d.ts +16 -0
  162. package/node_modules/@codebridge/core/dist/json-file-store.js +46 -0
  163. package/node_modules/@codebridge/core/dist/mcp-types.d.ts +7 -0
  164. package/node_modules/@codebridge/core/dist/mcp-types.js +2 -0
  165. package/node_modules/@codebridge/core/dist/mentions.d.ts +36 -0
  166. package/node_modules/@codebridge/core/dist/mentions.js +138 -0
  167. package/node_modules/@codebridge/core/dist/secret-migration.d.ts +14 -0
  168. package/node_modules/@codebridge/core/dist/secret-migration.js +55 -0
  169. package/node_modules/@codebridge/core/dist/secret-refs.d.ts +34 -0
  170. package/node_modules/@codebridge/core/dist/secret-refs.js +142 -0
  171. package/node_modules/@codebridge/core/dist/session-event-wire.d.ts +17 -0
  172. package/node_modules/@codebridge/core/dist/session-event-wire.js +28 -0
  173. package/node_modules/@codebridge/core/dist/types.d.ts +363 -0
  174. package/node_modules/@codebridge/core/dist/types.js +22 -0
  175. package/node_modules/@codebridge/core/dist/workspace-key.d.ts +11 -0
  176. package/node_modules/@codebridge/core/dist/workspace-key.js +25 -0
  177. package/node_modules/@codebridge/core/package.json +22 -0
  178. package/node_modules/@codebridge/mcp-runtime/dist/.tsbuildinfo +1 -0
  179. package/node_modules/@codebridge/mcp-runtime/dist/index.d.ts +92 -0
  180. package/node_modules/@codebridge/mcp-runtime/dist/index.js +377 -0
  181. package/node_modules/@codebridge/mcp-runtime/package.json +19 -0
  182. package/node_modules/@codebridge/policy/dist/capability-runtime.d.ts +123 -0
  183. package/node_modules/@codebridge/policy/dist/capability-runtime.js +195 -0
  184. package/node_modules/@codebridge/policy/dist/demo-capabilities.d.ts +4 -0
  185. package/node_modules/@codebridge/policy/dist/demo-capabilities.js +134 -0
  186. package/node_modules/@codebridge/policy/dist/equity-capabilities.d.ts +8 -0
  187. package/node_modules/@codebridge/policy/dist/equity-capabilities.js +35 -0
  188. package/node_modules/@codebridge/policy/dist/index.d.ts +107 -0
  189. package/node_modules/@codebridge/policy/dist/index.js +317 -0
  190. package/node_modules/@codebridge/policy/package.json +17 -0
  191. package/node_modules/@codebridge/project-catalog/dist/index.d.ts +145 -0
  192. package/node_modules/@codebridge/project-catalog/dist/index.js +699 -0
  193. package/node_modules/@codebridge/project-catalog/package.json +18 -0
  194. package/node_modules/@codebridge/router/dist/channel-stream-projector.d.ts +19 -0
  195. package/node_modules/@codebridge/router/dist/channel-stream-projector.js +68 -0
  196. package/node_modules/@codebridge/router/dist/command-help.d.ts +14 -0
  197. package/node_modules/@codebridge/router/dist/command-help.js +151 -0
  198. package/node_modules/@codebridge/router/dist/feishu-stream-presenter.d.ts +18 -0
  199. package/node_modules/@codebridge/router/dist/feishu-stream-presenter.js +193 -0
  200. package/node_modules/@codebridge/router/dist/index.d.ts +9 -0
  201. package/node_modules/@codebridge/router/dist/index.js +9 -0
  202. package/node_modules/@codebridge/router/dist/model-effort.d.ts +5 -0
  203. package/node_modules/@codebridge/router/dist/model-effort.js +33 -0
  204. package/node_modules/@codebridge/router/dist/orchestrator.d.ts +56 -0
  205. package/node_modules/@codebridge/router/dist/orchestrator.js +290 -0
  206. package/node_modules/@codebridge/router/dist/session-list-format.d.ts +19 -0
  207. package/node_modules/@codebridge/router/dist/session-list-format.js +97 -0
  208. package/node_modules/@codebridge/router/dist/session-rotation.d.ts +9 -0
  209. package/node_modules/@codebridge/router/dist/session-rotation.js +31 -0
  210. package/node_modules/@codebridge/router/dist/session-router.d.ts +59 -0
  211. package/node_modules/@codebridge/router/dist/session-router.js +182 -0
  212. package/node_modules/@codebridge/router/dist/slash-commands.d.ts +78 -0
  213. package/node_modules/@codebridge/router/dist/slash-commands.js +874 -0
  214. package/node_modules/@codebridge/router/package.json +18 -0
  215. package/node_modules/@codebridge/run-executor/dist/agent-event-aggregator.d.ts +18 -0
  216. package/node_modules/@codebridge/run-executor/dist/agent-event-aggregator.js +88 -0
  217. package/node_modules/@codebridge/run-executor/dist/index.d.ts +55 -0
  218. package/node_modules/@codebridge/run-executor/dist/index.js +754 -0
  219. package/node_modules/@codebridge/run-executor/dist/run-heartbeat.d.ts +14 -0
  220. package/node_modules/@codebridge/run-executor/dist/run-heartbeat.js +24 -0
  221. package/node_modules/@codebridge/run-executor/package.json +20 -0
  222. package/node_modules/@codebridge/runner-client/dist/index.d.ts +142 -0
  223. package/node_modules/@codebridge/runner-client/dist/index.js +439 -0
  224. package/node_modules/@codebridge/runner-client/package.json +18 -0
  225. package/node_modules/@codebridge/runner-host/dist/cli.d.ts +3 -0
  226. package/node_modules/@codebridge/runner-host/dist/cli.js +58 -0
  227. package/node_modules/@codebridge/runner-host/dist/codex-session-ownership.d.ts +13 -0
  228. package/node_modules/@codebridge/runner-host/dist/codex-session-ownership.js +79 -0
  229. package/node_modules/@codebridge/runner-host/dist/deployment-mcp-server.d.ts +10 -0
  230. package/node_modules/@codebridge/runner-host/dist/deployment-mcp-server.js +54 -0
  231. package/node_modules/@codebridge/runner-host/dist/fcb-script.d.ts +3 -0
  232. package/node_modules/@codebridge/runner-host/dist/fcb-script.js +99 -0
  233. package/node_modules/@codebridge/runner-host/dist/index.d.ts +3 -0
  234. package/node_modules/@codebridge/runner-host/dist/index.js +2 -0
  235. package/node_modules/@codebridge/runner-host/dist/materialize-attachments.d.ts +4 -0
  236. package/node_modules/@codebridge/runner-host/dist/materialize-attachments.js +62 -0
  237. package/node_modules/@codebridge/runner-host/dist/server.d.ts +150 -0
  238. package/node_modules/@codebridge/runner-host/dist/server.js +1295 -0
  239. package/node_modules/@codebridge/runner-host/dist/session-lease.d.ts +12 -0
  240. package/node_modules/@codebridge/runner-host/dist/session-lease.js +146 -0
  241. package/node_modules/@codebridge/runner-host/package.json +26 -0
  242. package/node_modules/@codebridge/session-catalog/dist/index.d.ts +124 -0
  243. package/node_modules/@codebridge/session-catalog/dist/index.js +411 -0
  244. package/node_modules/@codebridge/session-catalog/package.json +17 -0
  245. package/node_modules/@codebridge/session-coordinator/dist/coordinator.d.ts +111 -0
  246. package/node_modules/@codebridge/session-coordinator/dist/coordinator.js +364 -0
  247. package/node_modules/@codebridge/session-coordinator/dist/index.d.ts +5 -0
  248. package/node_modules/@codebridge/session-coordinator/dist/index.js +5 -0
  249. package/node_modules/@codebridge/session-coordinator/dist/lease.d.ts +14 -0
  250. package/node_modules/@codebridge/session-coordinator/dist/lease.js +26 -0
  251. package/node_modules/@codebridge/session-coordinator/dist/queued-claim.d.ts +20 -0
  252. package/node_modules/@codebridge/session-coordinator/dist/queued-claim.js +45 -0
  253. package/node_modules/@codebridge/session-coordinator/dist/recovery.d.ts +31 -0
  254. package/node_modules/@codebridge/session-coordinator/dist/recovery.js +114 -0
  255. package/node_modules/@codebridge/session-coordinator/package.json +17 -0
  256. package/node_modules/@codebridge/web/dist/assets/KaTeX_AMS-Regular-BQhdFMY1.woff2 +0 -0
  257. package/node_modules/@codebridge/web/dist/assets/KaTeX_AMS-Regular-DMm9YOAa.woff +0 -0
  258. package/node_modules/@codebridge/web/dist/assets/KaTeX_AMS-Regular-DRggAlZN.ttf +0 -0
  259. package/node_modules/@codebridge/web/dist/assets/KaTeX_Caligraphic-Bold-ATXxdsX0.ttf +0 -0
  260. package/node_modules/@codebridge/web/dist/assets/KaTeX_Caligraphic-Bold-BEiXGLvX.woff +0 -0
  261. package/node_modules/@codebridge/web/dist/assets/KaTeX_Caligraphic-Bold-Dq_IR9rO.woff2 +0 -0
  262. package/node_modules/@codebridge/web/dist/assets/KaTeX_Caligraphic-Regular-CTRA-rTL.woff +0 -0
  263. package/node_modules/@codebridge/web/dist/assets/KaTeX_Caligraphic-Regular-Di6jR-x-.woff2 +0 -0
  264. package/node_modules/@codebridge/web/dist/assets/KaTeX_Caligraphic-Regular-wX97UBjC.ttf +0 -0
  265. package/node_modules/@codebridge/web/dist/assets/KaTeX_Fraktur-Bold-BdnERNNW.ttf +0 -0
  266. package/node_modules/@codebridge/web/dist/assets/KaTeX_Fraktur-Bold-BsDP51OF.woff +0 -0
  267. package/node_modules/@codebridge/web/dist/assets/KaTeX_Fraktur-Bold-CL6g_b3V.woff2 +0 -0
  268. package/node_modules/@codebridge/web/dist/assets/KaTeX_Fraktur-Regular-CB_wures.ttf +0 -0
  269. package/node_modules/@codebridge/web/dist/assets/KaTeX_Fraktur-Regular-CTYiF6lA.woff2 +0 -0
  270. package/node_modules/@codebridge/web/dist/assets/KaTeX_Fraktur-Regular-Dxdc4cR9.woff +0 -0
  271. package/node_modules/@codebridge/web/dist/assets/KaTeX_Main-Bold-Cx986IdX.woff2 +0 -0
  272. package/node_modules/@codebridge/web/dist/assets/KaTeX_Main-Bold-Jm3AIy58.woff +0 -0
  273. package/node_modules/@codebridge/web/dist/assets/KaTeX_Main-Bold-waoOVXN0.ttf +0 -0
  274. package/node_modules/@codebridge/web/dist/assets/KaTeX_Main-BoldItalic-DxDJ3AOS.woff2 +0 -0
  275. package/node_modules/@codebridge/web/dist/assets/KaTeX_Main-BoldItalic-DzxPMmG6.ttf +0 -0
  276. package/node_modules/@codebridge/web/dist/assets/KaTeX_Main-BoldItalic-SpSLRI95.woff +0 -0
  277. package/node_modules/@codebridge/web/dist/assets/KaTeX_Main-Italic-3WenGoN9.ttf +0 -0
  278. package/node_modules/@codebridge/web/dist/assets/KaTeX_Main-Italic-BMLOBm91.woff +0 -0
  279. package/node_modules/@codebridge/web/dist/assets/KaTeX_Main-Italic-NWA7e6Wa.woff2 +0 -0
  280. package/node_modules/@codebridge/web/dist/assets/KaTeX_Main-Regular-B22Nviop.woff2 +0 -0
  281. package/node_modules/@codebridge/web/dist/assets/KaTeX_Main-Regular-Dr94JaBh.woff +0 -0
  282. package/node_modules/@codebridge/web/dist/assets/KaTeX_Main-Regular-ypZvNtVU.ttf +0 -0
  283. package/node_modules/@codebridge/web/dist/assets/KaTeX_Math-BoldItalic-B3XSjfu4.ttf +0 -0
  284. package/node_modules/@codebridge/web/dist/assets/KaTeX_Math-BoldItalic-CZnvNsCZ.woff2 +0 -0
  285. package/node_modules/@codebridge/web/dist/assets/KaTeX_Math-BoldItalic-iY-2wyZ7.woff +0 -0
  286. package/node_modules/@codebridge/web/dist/assets/KaTeX_Math-Italic-DA0__PXp.woff +0 -0
  287. package/node_modules/@codebridge/web/dist/assets/KaTeX_Math-Italic-flOr_0UB.ttf +0 -0
  288. package/node_modules/@codebridge/web/dist/assets/KaTeX_Math-Italic-t53AETM-.woff2 +0 -0
  289. package/node_modules/@codebridge/web/dist/assets/KaTeX_SansSerif-Bold-CFMepnvq.ttf +0 -0
  290. package/node_modules/@codebridge/web/dist/assets/KaTeX_SansSerif-Bold-D1sUS0GD.woff2 +0 -0
  291. package/node_modules/@codebridge/web/dist/assets/KaTeX_SansSerif-Bold-DbIhKOiC.woff +0 -0
  292. package/node_modules/@codebridge/web/dist/assets/KaTeX_SansSerif-Italic-C3H0VqGB.woff2 +0 -0
  293. package/node_modules/@codebridge/web/dist/assets/KaTeX_SansSerif-Italic-DN2j7dab.woff +0 -0
  294. package/node_modules/@codebridge/web/dist/assets/KaTeX_SansSerif-Italic-YYjJ1zSn.ttf +0 -0
  295. package/node_modules/@codebridge/web/dist/assets/KaTeX_SansSerif-Regular-BNo7hRIc.ttf +0 -0
  296. package/node_modules/@codebridge/web/dist/assets/KaTeX_SansSerif-Regular-CS6fqUqJ.woff +0 -0
  297. package/node_modules/@codebridge/web/dist/assets/KaTeX_SansSerif-Regular-DDBCnlJ7.woff2 +0 -0
  298. package/node_modules/@codebridge/web/dist/assets/KaTeX_Script-Regular-C5JkGWo-.ttf +0 -0
  299. package/node_modules/@codebridge/web/dist/assets/KaTeX_Script-Regular-D3wIWfF6.woff2 +0 -0
  300. package/node_modules/@codebridge/web/dist/assets/KaTeX_Script-Regular-D5yQViql.woff +0 -0
  301. package/node_modules/@codebridge/web/dist/assets/KaTeX_Size1-Regular-C195tn64.woff +0 -0
  302. package/node_modules/@codebridge/web/dist/assets/KaTeX_Size1-Regular-Dbsnue_I.ttf +0 -0
  303. package/node_modules/@codebridge/web/dist/assets/KaTeX_Size1-Regular-mCD8mA8B.woff2 +0 -0
  304. package/node_modules/@codebridge/web/dist/assets/KaTeX_Size2-Regular-B7gKUWhC.ttf +0 -0
  305. package/node_modules/@codebridge/web/dist/assets/KaTeX_Size2-Regular-Dy4dx90m.woff2 +0 -0
  306. package/node_modules/@codebridge/web/dist/assets/KaTeX_Size2-Regular-oD1tc_U0.woff +0 -0
  307. package/node_modules/@codebridge/web/dist/assets/KaTeX_Size3-Regular-CTq5MqoE.woff +0 -0
  308. package/node_modules/@codebridge/web/dist/assets/KaTeX_Size3-Regular-DgpXs0kz.ttf +0 -0
  309. package/node_modules/@codebridge/web/dist/assets/KaTeX_Size4-Regular-BF-4gkZK.woff +0 -0
  310. package/node_modules/@codebridge/web/dist/assets/KaTeX_Size4-Regular-DWFBv043.ttf +0 -0
  311. package/node_modules/@codebridge/web/dist/assets/KaTeX_Size4-Regular-Dl5lxZxV.woff2 +0 -0
  312. package/node_modules/@codebridge/web/dist/assets/KaTeX_Typewriter-Regular-C0xS9mPB.woff +0 -0
  313. package/node_modules/@codebridge/web/dist/assets/KaTeX_Typewriter-Regular-CO6r4hn1.woff2 +0 -0
  314. package/node_modules/@codebridge/web/dist/assets/KaTeX_Typewriter-Regular-D3Ib7_Hf.ttf +0 -0
  315. package/node_modules/@codebridge/web/dist/assets/abnfDiagram-N423BO3Z-C-JdFv0U.js +1 -0
  316. package/node_modules/@codebridge/web/dist/assets/arc-DsNROjzU.js +1 -0
  317. package/node_modules/@codebridge/web/dist/assets/architecture-TIHT7OUA-ZEBHG2JZ.js +1 -0
  318. package/node_modules/@codebridge/web/dist/assets/architectureDiagram-T3A2C74G-OsrxcwPM.js +36 -0
  319. package/node_modules/@codebridge/web/dist/assets/array-BifhSqXX.js +1 -0
  320. package/node_modules/@codebridge/web/dist/assets/blockDiagram-VBNYF7ZC-DRgfNeNW.js +132 -0
  321. package/node_modules/@codebridge/web/dist/assets/c4Diagram-5PPSVZJV-BtOGKTh8.js +10 -0
  322. package/node_modules/@codebridge/web/dist/assets/channel-MhXyjxUS.js +1 -0
  323. package/node_modules/@codebridge/web/dist/assets/chunk-2GRJ4B5K-Dy1gJ7sY.js +1 -0
  324. package/node_modules/@codebridge/web/dist/assets/chunk-2Q5K7J3B-C1jixKkw.js +1 -0
  325. package/node_modules/@codebridge/web/dist/assets/chunk-4I5QYGJK-1pOLR_SG.js +1 -0
  326. package/node_modules/@codebridge/web/dist/assets/chunk-5RXB4S5H-CP43rgsO.js +231 -0
  327. package/node_modules/@codebridge/web/dist/assets/chunk-5VM5RSS4-ZNzvKenW.js +15 -0
  328. package/node_modules/@codebridge/web/dist/assets/chunk-6Q2QTUOP-Bi3Xrp6W.js +88 -0
  329. package/node_modules/@codebridge/web/dist/assets/chunk-7BUUIJ7U-Bb538aSH.js +1 -0
  330. package/node_modules/@codebridge/web/dist/assets/chunk-7Z6QIM7H-CILAW2Nk.js +10 -0
  331. package/node_modules/@codebridge/web/dist/assets/chunk-GF5L2VYU-CAp09yhq.js +206 -0
  332. package/node_modules/@codebridge/web/dist/assets/chunk-I66GZJ75-B_rJXmNu.js +128 -0
  333. package/node_modules/@codebridge/web/dist/assets/chunk-JQJVKLGR-OVeOJFCx.js +156 -0
  334. package/node_modules/@codebridge/web/dist/assets/chunk-JWPE2WC7-DVXcaiue.js +1 -0
  335. package/node_modules/@codebridge/web/dist/assets/chunk-KBJHAD2P-uaupp0k5.js +1 -0
  336. package/node_modules/@codebridge/web/dist/assets/chunk-KEIR6QF5-BICK3FdT.js +161 -0
  337. package/node_modules/@codebridge/web/dist/assets/chunk-NSK5VX7P-fIHF5wwn.js +2 -0
  338. package/node_modules/@codebridge/web/dist/assets/chunk-QR6OTTB3-DxkJuF2b.js +62 -0
  339. package/node_modules/@codebridge/web/dist/assets/chunk-RYQCIY6F-CC5j3u-X.js +1 -0
  340. package/node_modules/@codebridge/web/dist/assets/chunk-UBXNYLIW-DB35O-6R.js +1 -0
  341. package/node_modules/@codebridge/web/dist/assets/chunk-W5SLKNZC-bkRBsbq-.js +1 -0
  342. package/node_modules/@codebridge/web/dist/assets/chunk-WRU74C26-DwvEoD-1.js +70 -0
  343. package/node_modules/@codebridge/web/dist/assets/chunk-XXDRQBXY-DRyYA-HY.js +1 -0
  344. package/node_modules/@codebridge/web/dist/assets/chunk-Y2CYZVJY-DsF7k-Jl.js +1 -0
  345. package/node_modules/@codebridge/web/dist/assets/classDiagram-JCYQIIEL-B8r7z8ii.js +1 -0
  346. package/node_modules/@codebridge/web/dist/assets/classDiagram-v2-OCEON4UE-B8r7z8ii.js +1 -0
  347. package/node_modules/@codebridge/web/dist/assets/cose-bilkent-JH36ORCC-CLkwlrX7.js +1 -0
  348. package/node_modules/@codebridge/web/dist/assets/cynefin-VYW2F7L2-C3_Llw02.js +1 -0
  349. package/node_modules/@codebridge/web/dist/assets/cynefinDiagram-MW4NZA55-D5v7UnJy.js +62 -0
  350. package/node_modules/@codebridge/web/dist/assets/cytoscape.esm-B-NFISlW.js +321 -0
  351. package/node_modules/@codebridge/web/dist/assets/dagre-Buvkdvvj.js +1 -0
  352. package/node_modules/@codebridge/web/dist/assets/dagre-VZM6K2ZE-Cr0IibwW.js +4 -0
  353. package/node_modules/@codebridge/web/dist/assets/defaultLocale-BFoDCU3G.js +1 -0
  354. package/node_modules/@codebridge/web/dist/assets/diagram-7IWD3JNH-CpQXDIzA.js +30 -0
  355. package/node_modules/@codebridge/web/dist/assets/diagram-B4RE2ZJO-VaOkH0Ya.js +3 -0
  356. package/node_modules/@codebridge/web/dist/assets/diagram-LBJQPF4R-D0iXyNks.js +24 -0
  357. package/node_modules/@codebridge/web/dist/assets/diagram-Q27KOJAE-CtqYk01P.js +24 -0
  358. package/node_modules/@codebridge/web/dist/assets/diagram-UB23O5K3-CFnd3H1_.js +41 -0
  359. package/node_modules/@codebridge/web/dist/assets/dist-D2L7nRdk.js +1 -0
  360. package/node_modules/@codebridge/web/dist/assets/ebnfDiagram-BXEA7PRR-B0GIbJYt.js +1 -0
  361. package/node_modules/@codebridge/web/dist/assets/erDiagram-JOGREHBK-BApaLGVA.js +85 -0
  362. package/node_modules/@codebridge/web/dist/assets/eventmodeling-45OFAUF4-DqGGjcld.js +1 -0
  363. package/node_modules/@codebridge/web/dist/assets/flowDiagram-UKHOOZJN-I_qlizLH.js +1 -0
  364. package/node_modules/@codebridge/web/dist/assets/ganttDiagram-PKOTCBZU-B-QZ-J82.js +292 -0
  365. package/node_modules/@codebridge/web/dist/assets/gitGraph-TEB2WS4Q-DK2SJ2Ne.js +1 -0
  366. package/node_modules/@codebridge/web/dist/assets/gitGraphDiagram-DS77QQ5N-B6Z-pu0D.js +106 -0
  367. package/node_modules/@codebridge/web/dist/assets/graphlib-DS17s2tU.js +1 -0
  368. package/node_modules/@codebridge/web/dist/assets/index-8BzpyygS.js +559 -0
  369. package/node_modules/@codebridge/web/dist/assets/index-Bzaz89LE.css +1 -0
  370. package/node_modules/@codebridge/web/dist/assets/info-DKCQHKI2-CGWxt_Py.js +1 -0
  371. package/node_modules/@codebridge/web/dist/assets/infoDiagram-6WML65LV-77XjrPZs.js +2 -0
  372. package/node_modules/@codebridge/web/dist/assets/init-C-OQMol4.js +1 -0
  373. package/node_modules/@codebridge/web/dist/assets/ishikawaDiagram-WSZJBQD7-P1bZAz2x.js +70 -0
  374. package/node_modules/@codebridge/web/dist/assets/journeyDiagram-NVQOT4AX-C4rwMcBY.js +139 -0
  375. package/node_modules/@codebridge/web/dist/assets/kanban-definition-27J2QSJJ-mtw4a9bc.js +89 -0
  376. package/node_modules/@codebridge/web/dist/assets/line-DP4RkYqm.js +1 -0
  377. package/node_modules/@codebridge/web/dist/assets/linear-DMg3PPio.js +1 -0
  378. package/node_modules/@codebridge/web/dist/assets/map-BaFkSB1l.js +1 -0
  379. package/node_modules/@codebridge/web/dist/assets/mermaid-parser.core-HY84kHw1.js +7 -0
  380. package/node_modules/@codebridge/web/dist/assets/mermaid.core-DdgCdsnM.js +42 -0
  381. package/node_modules/@codebridge/web/dist/assets/mindmap-definition-FAOFIHXS-Cw1EnbhZ.js +96 -0
  382. package/node_modules/@codebridge/web/dist/assets/ordinal-BDEzSJ7C.js +1 -0
  383. package/node_modules/@codebridge/web/dist/assets/packet-7NZHBO7P-CEbrbJH3.js +1 -0
  384. package/node_modules/@codebridge/web/dist/assets/path-fybaL0A-.js +1 -0
  385. package/node_modules/@codebridge/web/dist/assets/pegDiagram-VL7TDLO6-CEc1Gedb.js +1 -0
  386. package/node_modules/@codebridge/web/dist/assets/pie-RZYD4A2V-DPXVs-IW.js +1 -0
  387. package/node_modules/@codebridge/web/dist/assets/pieDiagram-7S7Q4E2Y-hoQeGMFH.js +39 -0
  388. package/node_modules/@codebridge/web/dist/assets/quadrantDiagram-CIZ2JOQS-C-Nmxx0f.js +7 -0
  389. package/node_modules/@codebridge/web/dist/assets/radar-I7S5WNFK-BVd3X3Pd.js +1 -0
  390. package/node_modules/@codebridge/web/dist/assets/railroad-3IZDKUUU-CxLxzr_v.js +1 -0
  391. package/node_modules/@codebridge/web/dist/assets/railroad-abnf-AHOZXSZD-MA1zPI84.js +1 -0
  392. package/node_modules/@codebridge/web/dist/assets/railroad-ebnf-EBAXGLYW-Bqug_umD.js +1 -0
  393. package/node_modules/@codebridge/web/dist/assets/railroad-peg-LSFZ7HO6-DRcRFwpq.js +1 -0
  394. package/node_modules/@codebridge/web/dist/assets/railroadDiagram-AXF67PYL-B007ZkL9.js +1 -0
  395. package/node_modules/@codebridge/web/dist/assets/requirementDiagram-LRYGKXZP-LrTCcEi5.js +84 -0
  396. package/node_modules/@codebridge/web/dist/assets/rough.esm-Dy-Kn_BL.js +1 -0
  397. package/node_modules/@codebridge/web/dist/assets/sankeyDiagram-W5VNT64P-Ch4mzHck.js +40 -0
  398. package/node_modules/@codebridge/web/dist/assets/sequenceDiagram-SI44F4Z6-CHg4OzLX.js +162 -0
  399. package/node_modules/@codebridge/web/dist/assets/sizeCapture-X5ZJPWSS-B0uUizjq.js +1 -0
  400. package/node_modules/@codebridge/web/dist/assets/src-BrO6_odD.js +1 -0
  401. package/node_modules/@codebridge/web/dist/assets/stateDiagram-OKZ733FA-7cVkr5nR.js +1 -0
  402. package/node_modules/@codebridge/web/dist/assets/stateDiagram-v2-UEYNNEHI-CTy_mAXb.js +1 -0
  403. package/node_modules/@codebridge/web/dist/assets/swimlanes-SLNWSIFB-BwSVF5qy.js +2 -0
  404. package/node_modules/@codebridge/web/dist/assets/swimlanesDiagram-ULZ7WXOC-BBQnfZ1j.js +8 -0
  405. package/node_modules/@codebridge/web/dist/assets/timeline-definition-Z64GVDOM-BaHEkVDV.js +120 -0
  406. package/node_modules/@codebridge/web/dist/assets/treeView-QDETBFTQ-CF0kLN62.js +1 -0
  407. package/node_modules/@codebridge/web/dist/assets/treemap-6X3UGDF4-BB8A8uux.js +1 -0
  408. package/node_modules/@codebridge/web/dist/assets/vennDiagram-T6HMQDX7-BFK12Iro.js +34 -0
  409. package/node_modules/@codebridge/web/dist/assets/wardley-OPB4EBWU-C_3y61zk.js +1 -0
  410. package/node_modules/@codebridge/web/dist/assets/wardleyDiagram-T6FBY63Y-W2oGu4WK.js +78 -0
  411. package/node_modules/@codebridge/web/dist/assets/xychartDiagram-ELKLHX3M-BiVRnbvz.js +7 -0
  412. package/node_modules/@codebridge/web/dist/brand/agent-logo-carbon.svg +1 -0
  413. package/node_modules/@codebridge/web/dist/brand/agent-logo.svg +1 -0
  414. package/node_modules/@codebridge/web/dist/brand/agnet-logo-carbon.svg +1 -0
  415. package/node_modules/@codebridge/web/dist/brand/agnet-logo.svg +1 -0
  416. package/node_modules/@codebridge/web/dist/brand/agnet-mark-carbon.svg +1 -0
  417. package/node_modules/@codebridge/web/dist/brand/agnet-mark.svg +1 -0
  418. package/node_modules/@codebridge/web/dist/fonts/CommitMono-400-Regular.otf +0 -0
  419. package/node_modules/@codebridge/web/dist/fonts/CommitMono-700-Regular.otf +0 -0
  420. package/node_modules/@codebridge/web/dist/fonts/CommitMono-OFL.txt +21 -0
  421. package/node_modules/@codebridge/web/dist/fonts/DepartureMono-OFL.txt +21 -0
  422. package/node_modules/@codebridge/web/dist/fonts/DepartureMono-Regular.woff2 +0 -0
  423. package/node_modules/@codebridge/web/dist/index.html +25 -0
  424. package/node_modules/@codebridge/web/package.json +7 -0
  425. package/node_modules/@codebridge/work-items/dist/index.d.ts +371 -0
  426. package/node_modules/@codebridge/work-items/dist/index.js +1784 -0
  427. package/node_modules/@codebridge/work-items/dist/session-projector.d.ts +4 -0
  428. package/node_modules/@codebridge/work-items/dist/session-projector.js +506 -0
  429. package/node_modules/@codebridge/work-items/dist/session-runtime.d.ts +274 -0
  430. package/node_modules/@codebridge/work-items/dist/session-runtime.js +1103 -0
  431. package/node_modules/@codebridge/work-items/dist/session-schema.d.ts +9 -0
  432. package/node_modules/@codebridge/work-items/dist/session-schema.js +292 -0
  433. package/node_modules/@codebridge/work-items/package.json +20 -0
  434. package/package.json +75 -4
@@ -0,0 +1,4 @@
1
+ import type { DatabaseSync } from "node:sqlite";
2
+ import type { DomainEvent } from "./index.js";
3
+ export declare function projectSessionEvent(database: DatabaseSync, sessionId: string, event: DomainEvent): void;
4
+ //# sourceMappingURL=session-projector.d.ts.map
@@ -0,0 +1,506 @@
1
+ const MAX_SEGMENT_BYTES = 16 * 1_024;
2
+ export function projectSessionEvent(database, sessionId, event) {
3
+ const cursor = database
4
+ .prepare(`SELECT last_projected_sequence
5
+ FROM session_projection_cursors
6
+ WHERE session_id = ?`)
7
+ .get(sessionId);
8
+ if ((cursor?.last_projected_sequence ?? 0) >= event.sequence)
9
+ return;
10
+ switch (event.type) {
11
+ case "TURN_DISPATCHED":
12
+ projectTurnDispatched(database, sessionId, event);
13
+ break;
14
+ case "MESSAGE_RECEIVED":
15
+ projectUserMessage(database, sessionId, event);
16
+ break;
17
+ case "RUN_STARTED":
18
+ updateTurnStatus(database, event.runId, "running", event);
19
+ ensureBlock(database, sessionId, event, `work:${event.runId}`, "work", "running");
20
+ break;
21
+ case "AGENT_EVENT":
22
+ projectAgentEvent(database, sessionId, event);
23
+ break;
24
+ case "APPROVAL_REQUESTED":
25
+ updateTurnStatus(database, event.runId, "waiting", event);
26
+ ensureBlock(database, sessionId, event, approvalBlockId(event), "approval", "waiting", {
27
+ ...event.payload,
28
+ capability_id: event.target,
29
+ });
30
+ break;
31
+ case "APPROVAL_GRANTED":
32
+ updateApprovalBlock(database, event, "granted");
33
+ break;
34
+ case "APPROVAL_REJECTED":
35
+ updateApprovalBlock(database, event, "rejected");
36
+ break;
37
+ case "RUN_SUCCEEDED":
38
+ closeRun(database, event, "succeeded");
39
+ break;
40
+ case "RUN_FAILED":
41
+ closeRun(database, event, "failed");
42
+ break;
43
+ case "RUN_CANCELLED":
44
+ closeRun(database, event, "cancelled");
45
+ break;
46
+ case "RUN_INTERRUPTED":
47
+ closeRun(database, event, "interrupted");
48
+ break;
49
+ case "TURN_CANCELLED":
50
+ assertQueuedTurnHasNoTimeline(database, String(event.target));
51
+ break;
52
+ // Agent-emitted step events advance the cursor without creating controls.
53
+ case "STEP_STARTED":
54
+ case "STEP_RETRYING":
55
+ case "STEP_SUCCEEDED":
56
+ case "STEP_FAILED":
57
+ case "STEP_SKIPPED":
58
+ break;
59
+ // 已知但有意不进时间线的类型:显式 no-op(cursor 正常前进)。
60
+ case "WORK_ITEM_CREATED":
61
+ case "TURN_QUEUED":
62
+ case "RUN_CREATED":
63
+ case "PLAN_VALIDATED":
64
+ case "RUN_CANCEL_REQUESTED":
65
+ case "BRANCH_SELECTED":
66
+ case "PROJECT_CANDIDATE_FOUND":
67
+ case "ARTIFACT_CREATED":
68
+ case "VERIFICATION_COMPLETED":
69
+ case "WORK_ITEM_COMPLETED":
70
+ // 迁移/水合/学习信号事件:绑定前写下的历史事件会经 backfillSessionProjection
71
+ // 走投影,显式 no-op(否则回放命中 default 会打挂迁移)。
72
+ case "SESSION_HISTORY_HYDRATED":
73
+ case "PLAN_PROPOSED":
74
+ case "DISCOVERY_STARTED":
75
+ break;
76
+ default:
77
+ // R2:未知事件不得静默跳过——抛错后 cursor 停在旧 sequence,
78
+ // 修复投影后才能重放(appendEvent 整笔回滚)。
79
+ throw new Error(`Unsupported session projection event type: ${event.type}`);
80
+ }
81
+ database
82
+ .prepare(`INSERT INTO session_projection_cursors(
83
+ session_id, last_projected_sequence
84
+ ) VALUES (?, ?)
85
+ ON CONFLICT(session_id) DO UPDATE SET
86
+ last_projected_sequence = excluded.last_projected_sequence`)
87
+ .run(sessionId, event.sequence);
88
+ }
89
+ function projectTurnDispatched(database, sessionId, event) {
90
+ const runId = requireRunId(event);
91
+ const turnId = typeof event.payload.turn_id === "string"
92
+ ? event.payload.turn_id
93
+ : String(event.target);
94
+ const row = database
95
+ .prepare(`SELECT COALESCE(MAX(timeline_index), 0) + 1 AS next_index
96
+ FROM session_timeline_turns
97
+ WHERE session_id = ?`)
98
+ .get(sessionId);
99
+ database
100
+ .prepare(`INSERT INTO session_timeline_turns (
101
+ session_id, timeline_index, turn_id, run_id, started_sequence,
102
+ ended_sequence, status, updated_at
103
+ ) VALUES (?, ?, ?, ?, ?, NULL, 'dispatched', ?)`)
104
+ .run(sessionId, Number(row?.next_index ?? 1), turnId, runId, event.sequence, event.occurredAt);
105
+ }
106
+ function projectUserMessage(database, sessionId, event) {
107
+ const runId = requireRunId(event);
108
+ const turn = findTimelineTurn(database, runId);
109
+ if (!turn)
110
+ throw new Error(`Timeline Turn not found for Run: ${runId}`);
111
+ const blockId = `user:${String(turn.turn_id)}`;
112
+ ensureBlock(database, sessionId, event, blockId, "user_message", "completed", {
113
+ attachment_ids: Array.isArray(event.payload.attachment_ids)
114
+ ? event.payload.attachment_ids
115
+ : [],
116
+ });
117
+ appendSegment(database, blockId, typeof event.payload.message === "string"
118
+ ? event.payload.message
119
+ : "", true);
120
+ }
121
+ function projectAgentEvent(database, sessionId, event) {
122
+ const value = event.payload.event;
123
+ if (!value || typeof value !== "object")
124
+ return;
125
+ const agentEvent = value;
126
+ const type = typeof agentEvent.type === "string"
127
+ ? agentEvent.type
128
+ : "";
129
+ if (type === "available_commands_update") {
130
+ projectCommands(database, sessionId, event.sequence, agentEvent);
131
+ return;
132
+ }
133
+ if (type === "text_delta" || type === "thought_delta") {
134
+ const runId = requireRunId(event);
135
+ const phase = agentEvent.phase === "commentary"
136
+ ? "commentary"
137
+ : "final_answer";
138
+ const kind = type === "thought_delta"
139
+ ? "thought"
140
+ : phase === "commentary"
141
+ ? "work"
142
+ : "assistant";
143
+ if (kind !== "thought") {
144
+ completeOpenThoughtBlocks(database, runId, event.occurredAt);
145
+ }
146
+ const turn = findTimelineTurn(database, runId);
147
+ if (!turn)
148
+ throw new Error(`Timeline Turn not found for Run: ${runId}`);
149
+ const blockId = kind === "thought"
150
+ ? resolveThoughtBlockId(database, runId, event, agentEvent)
151
+ : stringValue(agentEvent.blockId)
152
+ ?? stringValue(agentEvent.messageId)
153
+ ?? `${runId}:${phase}`;
154
+ ensureBlock(database, sessionId, event, blockId, kind, "running", { phase }, kind === "thought"
155
+ ? thoughtInsertIndex(database, String(turn.turn_id))
156
+ : undefined);
157
+ appendSegment(database, blockId, typeof agentEvent.text === "string" ? agentEvent.text : "", false);
158
+ return;
159
+ }
160
+ if (type === "tool_start"
161
+ || type === "tool_update"
162
+ || type === "tool_end") {
163
+ const runId = requireRunId(event);
164
+ const toolCallId = stringValue(agentEvent.toolCallId)
165
+ ?? `${runId}:tool:${event.sequence}`;
166
+ const blockId = `tool:${toolCallId}`;
167
+ if (type === "tool_start") {
168
+ completeOpenThoughtBlocks(database, runId, event.occurredAt);
169
+ sealOpenSegmentsForRun(database, runId);
170
+ ensureBlock(database, sessionId, event, blockId, "tool", "running", agentEvent);
171
+ return;
172
+ }
173
+ updateToolBlock(database, blockId, agentEvent, type === "tool_end");
174
+ return;
175
+ }
176
+ if (type === "error") {
177
+ const runId = requireRunId(event);
178
+ const message = typeof agentEvent.message === "string"
179
+ ? agentEvent.message
180
+ : "";
181
+ if (!message)
182
+ return;
183
+ const blockId = `error:${runId}:${event.sequence}`;
184
+ ensureBlock(database, sessionId, event, blockId, "error", "failed");
185
+ appendSegment(database, blockId, message, true);
186
+ }
187
+ }
188
+ function projectCommands(database, sessionId, sequence, event) {
189
+ const commands = Array.isArray(event.availableCommands)
190
+ ? event.availableCommands
191
+ : [];
192
+ database
193
+ .prepare("DELETE FROM session_commands WHERE session_id = ?")
194
+ .run(sessionId);
195
+ const insert = database.prepare(`INSERT INTO session_commands (
196
+ session_id, name, description, input_json, source_sequence
197
+ ) VALUES (?, ?, ?, ?, ?)`);
198
+ for (const value of commands) {
199
+ if (!value || typeof value !== "object")
200
+ continue;
201
+ const command = value;
202
+ if (typeof command.name !== "string"
203
+ || typeof command.description !== "string") {
204
+ continue;
205
+ }
206
+ const input = command.input && typeof command.input === "object"
207
+ ? command.input
208
+ : null;
209
+ insert.run(sessionId, command.name, command.description, input ? JSON.stringify(input) : null, sequence);
210
+ }
211
+ }
212
+ function updateTurnStatus(database, runId, status, event) {
213
+ if (!runId)
214
+ return;
215
+ database
216
+ .prepare(`UPDATE session_timeline_turns
217
+ SET status = ?, updated_at = ?
218
+ WHERE run_id = ?`)
219
+ .run(status, event.occurredAt, runId);
220
+ }
221
+ function ensureBlock(database, sessionId, event, blockId, kind, status, metadata = {}, insertIndex) {
222
+ const existing = database
223
+ .prepare("SELECT block_id FROM session_timeline_blocks WHERE block_id = ?")
224
+ .get(blockId);
225
+ if (existing)
226
+ return;
227
+ const runId = requireRunId(event);
228
+ const turn = findTimelineTurn(database, runId);
229
+ if (!turn)
230
+ throw new Error(`Timeline Turn not found for Run: ${runId}`);
231
+ const turnId = String(turn.turn_id);
232
+ const row = database
233
+ .prepare(`SELECT COALESCE(MAX(block_index), -1) + 1 AS next_index
234
+ FROM session_timeline_blocks
235
+ WHERE turn_id = ?`)
236
+ .get(turnId);
237
+ const appendIndex = Number(row?.next_index ?? 0);
238
+ const blockIndex = insertIndex ?? appendIndex;
239
+ if (blockIndex < appendIndex)
240
+ shiftBlockIndices(database, turnId, blockIndex);
241
+ database
242
+ .prepare(`INSERT INTO session_timeline_blocks (
243
+ block_id, session_id, turn_id, run_id, block_index, kind, status,
244
+ metadata_json
245
+ ) VALUES (?, ?, ?, ?, ?, ?, ?, ?)`)
246
+ .run(blockId, sessionId, turnId, runId, blockIndex, kind, status, JSON.stringify(boundMetadata({
247
+ ...metadata,
248
+ started_at: event.occurredAt,
249
+ })));
250
+ }
251
+ function resolveThoughtBlockId(database, runId, event, agentEvent) {
252
+ const running = database
253
+ .prepare(`SELECT block_id FROM session_timeline_blocks
254
+ WHERE run_id = ? AND kind = 'thought' AND status = 'running'
255
+ ORDER BY block_index DESC
256
+ LIMIT 1`)
257
+ .get(runId);
258
+ if (running?.block_id)
259
+ return String(running.block_id);
260
+ const explicit = stringValue(agentEvent.blockId)
261
+ ?? stringValue(agentEvent.messageId);
262
+ if (explicit) {
263
+ const existing = database
264
+ .prepare("SELECT status FROM session_timeline_blocks WHERE block_id = ?")
265
+ .get(explicit);
266
+ if (!existing || existing.status === "running")
267
+ return explicit;
268
+ }
269
+ return `${runId}:thought:${event.sequence}`;
270
+ }
271
+ function thoughtInsertIndex(database, turnId) {
272
+ const lastThought = database
273
+ .prepare(`SELECT MAX(block_index) AS idx FROM session_timeline_blocks
274
+ WHERE turn_id = ? AND kind = 'thought'`)
275
+ .get(turnId);
276
+ if (lastThought?.idx != null)
277
+ return Number(lastThought.idx) + 1;
278
+ const append = database
279
+ .prepare(`SELECT COALESCE(MAX(block_index), -1) + 1 AS next_index
280
+ FROM session_timeline_blocks
281
+ WHERE turn_id = ?`)
282
+ .get(turnId);
283
+ return Number(append?.next_index ?? 0);
284
+ }
285
+ function shiftBlockIndices(database, turnId, fromIndex) {
286
+ const rows = database
287
+ .prepare(`SELECT block_id, block_index FROM session_timeline_blocks
288
+ WHERE turn_id = ? AND block_index >= ?
289
+ ORDER BY block_index DESC`)
290
+ .all(turnId, fromIndex);
291
+ const update = database.prepare("UPDATE session_timeline_blocks SET block_index = ? WHERE block_id = ?");
292
+ for (const row of rows) {
293
+ update.run(Number(row.block_index) + 1, row.block_id);
294
+ }
295
+ }
296
+ function completeOpenThoughtBlocks(database, runId, endedAt) {
297
+ const rows = database
298
+ .prepare(`SELECT block_id, metadata_json FROM session_timeline_blocks
299
+ WHERE run_id = ? AND kind = 'thought' AND status = 'running'`)
300
+ .all(runId);
301
+ const update = database.prepare(`UPDATE session_timeline_blocks
302
+ SET status = ?, metadata_json = ?
303
+ WHERE block_id = ?`);
304
+ for (const row of rows) {
305
+ const metadata = JSON.parse(row.metadata_json ?? "{}");
306
+ update.run("completed", JSON.stringify(boundMetadata({ ...metadata, ended_at: endedAt })), row.block_id);
307
+ database
308
+ .prepare(`UPDATE session_output_segments
309
+ SET sealed = 1
310
+ WHERE block_id = ? AND sealed = 0`)
311
+ .run(row.block_id);
312
+ }
313
+ }
314
+ function appendSegment(database, blockId, text, sealAfter) {
315
+ let remaining = text;
316
+ while (remaining) {
317
+ let tail = database
318
+ .prepare(`SELECT * FROM session_output_segments
319
+ WHERE block_id = ?
320
+ ORDER BY segment_index DESC
321
+ LIMIT 1`)
322
+ .get(blockId);
323
+ if (!tail || Number(tail.sealed) === 1) {
324
+ const nextIndex = tail ? Number(tail.segment_index) + 1 : 0;
325
+ const segmentId = `${blockId}:${nextIndex}`;
326
+ database
327
+ .prepare(`INSERT INTO session_output_segments (
328
+ segment_id, block_id, segment_index, content, byte_length, sealed
329
+ ) VALUES (?, ?, ?, '', 0, 0)`)
330
+ .run(segmentId, blockId, nextIndex);
331
+ tail = database
332
+ .prepare("SELECT * FROM session_output_segments WHERE segment_id = ?")
333
+ .get(segmentId);
334
+ }
335
+ const current = String(tail.content);
336
+ const currentBytes = Number(tail.byte_length);
337
+ const capacity = MAX_SEGMENT_BYTES - currentBytes;
338
+ const { head, tail: rest } = splitUtf8(remaining, capacity);
339
+ const nextContent = current + head;
340
+ const nextBytes = Buffer.byteLength(nextContent, "utf8");
341
+ const sealed = rest.length > 0 || nextBytes >= MAX_SEGMENT_BYTES;
342
+ database
343
+ .prepare(`UPDATE session_output_segments
344
+ SET content = ?, byte_length = ?, sealed = ?
345
+ WHERE segment_id = ?`)
346
+ .run(nextContent, nextBytes, sealed ? 1 : 0, String(tail.segment_id));
347
+ remaining = rest;
348
+ }
349
+ if (sealAfter) {
350
+ database
351
+ .prepare(`UPDATE session_output_segments
352
+ SET sealed = 1
353
+ WHERE block_id = ? AND sealed = 0`)
354
+ .run(blockId);
355
+ }
356
+ }
357
+ function updateToolBlock(database, blockId, update, ended) {
358
+ const row = database
359
+ .prepare(`SELECT metadata_json FROM session_timeline_blocks
360
+ WHERE block_id = ?`)
361
+ .get(blockId);
362
+ if (!row)
363
+ return;
364
+ const current = JSON.parse(row.metadata_json ?? "{}");
365
+ const status = ended
366
+ ? update.status === "failed"
367
+ ? "failed"
368
+ : "completed"
369
+ : "running";
370
+ database
371
+ .prepare(`UPDATE session_timeline_blocks
372
+ SET status = ?, metadata_json = ?
373
+ WHERE block_id = ?`)
374
+ .run(status, JSON.stringify(boundMetadata({ ...current, ...update })), blockId);
375
+ }
376
+ function closeRun(database, event, status) {
377
+ const runId = requireRunId(event);
378
+ const nextStatus = status === "succeeded" ? "completed" : status;
379
+ database
380
+ .prepare(`UPDATE session_timeline_turns
381
+ SET status = ?, ended_sequence = ?, updated_at = ?
382
+ WHERE run_id = ?`)
383
+ .run(status, event.sequence, event.occurredAt, runId);
384
+ const openBlocks = database
385
+ .prepare(`SELECT block_id, metadata_json FROM session_timeline_blocks
386
+ WHERE run_id = ? AND status IN ('running', 'waiting')`)
387
+ .all(runId);
388
+ const updateBlock = database.prepare(`UPDATE session_timeline_blocks
389
+ SET status = ?, metadata_json = ?
390
+ WHERE block_id = ?`);
391
+ for (const block of openBlocks) {
392
+ const metadata = JSON.parse(block.metadata_json ?? "{}");
393
+ updateBlock.run(nextStatus, JSON.stringify(boundMetadata({ ...metadata, ended_at: event.occurredAt })), block.block_id);
394
+ }
395
+ sealOpenSegmentsForRun(database, runId);
396
+ }
397
+ function sealOpenSegmentsForRun(database, runId) {
398
+ database
399
+ .prepare(`UPDATE session_output_segments
400
+ SET sealed = 1
401
+ WHERE sealed = 0 AND block_id IN (
402
+ SELECT block_id FROM session_timeline_blocks WHERE run_id = ?
403
+ )`)
404
+ .run(runId);
405
+ }
406
+ function asRecord(value) {
407
+ return value && typeof value === "object" && !Array.isArray(value)
408
+ ? value
409
+ : {};
410
+ }
411
+ function approvalIdOf(event) {
412
+ const approvalId = asRecord(event.payload).approval_id;
413
+ if (typeof approvalId !== "string" || !approvalId) {
414
+ throw new Error(`Approval event missing approval_id: ${event.eventId}`);
415
+ }
416
+ return approvalId;
417
+ }
418
+ function approvalBlockId(event) {
419
+ return `approval:${approvalIdOf(event)}`;
420
+ }
421
+ function updateApprovalBlock(database, event, status) {
422
+ const preferredBlockId = approvalBlockId(event);
423
+ const legacyBlockId = event.target ? `approval:${event.target}` : null;
424
+ const candidates = legacyBlockId
425
+ ? [preferredBlockId, legacyBlockId]
426
+ : [preferredBlockId];
427
+ let blockId = null;
428
+ let metadata = {};
429
+ for (const candidate of candidates) {
430
+ const row = database
431
+ .prepare(`SELECT metadata_json FROM session_timeline_blocks
432
+ WHERE block_id = ?`)
433
+ .get(candidate);
434
+ if (!row)
435
+ continue;
436
+ blockId = candidate;
437
+ metadata = JSON.parse(row.metadata_json ?? "{}");
438
+ break;
439
+ }
440
+ if (!blockId)
441
+ return;
442
+ database
443
+ .prepare(`UPDATE session_timeline_blocks
444
+ SET status = ?, metadata_json = ?
445
+ WHERE block_id = ?`)
446
+ .run(status, JSON.stringify(boundMetadata({
447
+ ...metadata,
448
+ ...event.payload,
449
+ capability_id: event.target ?? metadata.capability_id ?? null,
450
+ resolved_at: event.occurredAt,
451
+ })), blockId);
452
+ }
453
+ function assertQueuedTurnHasNoTimeline(database, turnId) {
454
+ const turn = database
455
+ .prepare("SELECT status FROM session_turns WHERE turn_id = ?")
456
+ .get(turnId);
457
+ if (turn?.status === "dispatched") {
458
+ throw new Error("dispatched Turn cannot be cancelled");
459
+ }
460
+ const timeline = database
461
+ .prepare("SELECT 1 FROM session_timeline_turns WHERE turn_id = ? LIMIT 1")
462
+ .get(turnId);
463
+ if (timeline)
464
+ throw new Error("queued Turn cannot have a timeline");
465
+ }
466
+ function findTimelineTurn(database, runId) {
467
+ return database
468
+ .prepare("SELECT * FROM session_timeline_turns WHERE run_id = ?")
469
+ .get(runId);
470
+ }
471
+ function requireRunId(event) {
472
+ if (!event.runId) {
473
+ throw new Error(`${event.type} requires a Run`);
474
+ }
475
+ return event.runId;
476
+ }
477
+ function stringValue(value) {
478
+ return typeof value === "string" && value ? value : undefined;
479
+ }
480
+ function splitUtf8(value, maximumBytes) {
481
+ if (maximumBytes <= 0)
482
+ return { head: "", tail: value };
483
+ let bytes = 0;
484
+ let end = 0;
485
+ for (const character of value) {
486
+ const characterBytes = Buffer.byteLength(character, "utf8");
487
+ if (bytes + characterBytes > maximumBytes)
488
+ break;
489
+ bytes += characterBytes;
490
+ end += character.length;
491
+ }
492
+ return { head: value.slice(0, end), tail: value.slice(end) };
493
+ }
494
+ function boundMetadata(metadata) {
495
+ const serialized = JSON.stringify(metadata);
496
+ if (Buffer.byteLength(serialized, "utf8") <= MAX_SEGMENT_BYTES) {
497
+ return metadata;
498
+ }
499
+ return {
500
+ type: metadata.type,
501
+ name: metadata.name,
502
+ status: metadata.status,
503
+ truncated: true,
504
+ };
505
+ }
506
+ //# sourceMappingURL=session-projector.js.map