@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,138 @@
1
+ import { JsonMapStore } from "./json-file-store.js";
2
+ function scopeKey(scope) {
3
+ return `${scope.chatId}\0${scope.topicId ?? ""}`;
4
+ }
5
+ function targetKey(target) {
6
+ return `${target.channel}\0${target.kind}\0${target.id}`;
7
+ }
8
+ export class MentionRegistry {
9
+ targetByKey = new Map();
10
+ targetByRef = new Map();
11
+ refsByScope = new Map();
12
+ nextUserRef = 1;
13
+ nextBotRef = 1;
14
+ store;
15
+ constructor(filePath) {
16
+ if (!filePath)
17
+ return;
18
+ this.store = new JsonMapStore(filePath);
19
+ const saved = this.store.read();
20
+ if (!saved || typeof saved !== "object" || Array.isArray(saved)) {
21
+ throw new Error("Invalid persisted mention registry");
22
+ }
23
+ for (const [ref, entry] of Object.entries(saved)) {
24
+ const target = entry?.target;
25
+ const ordinal = Number(ref.slice(1));
26
+ if (!/^[ub][1-9]\d*$/.test(ref) || !Number.isSafeInteger(ordinal + 1)
27
+ || !target || target.ref !== ref
28
+ || target.kind !== (ref[0] === "u" ? "user" : "bot")
29
+ || typeof target.id !== "string" || !target.id
30
+ || typeof target.channel !== "string" || !target.channel
31
+ || !Array.isArray(entry.scopes)
32
+ || entry.scopes.some((scope) => typeof scope !== "string" || !scope.includes("\0"))
33
+ || this.targetByKey.has(targetKey(target))) {
34
+ throw new Error("Invalid persisted mention registry");
35
+ }
36
+ this.targetByKey.set(targetKey(target), target);
37
+ this.targetByRef.set(ref, target);
38
+ for (const scope of entry.scopes) {
39
+ const refs = this.refsByScope.get(scope) ?? new Set();
40
+ refs.add(ref);
41
+ this.refsByScope.set(scope, refs);
42
+ }
43
+ if (target.kind === "user")
44
+ this.nextUserRef = Math.max(this.nextUserRef, ordinal + 1);
45
+ else
46
+ this.nextBotRef = Math.max(this.nextBotRef, ordinal + 1);
47
+ }
48
+ }
49
+ register(scope, target) {
50
+ const key = targetKey(target);
51
+ const previous = this.targetByKey.get(key);
52
+ const registered = previous
53
+ ? {
54
+ ...previous,
55
+ ...target,
56
+ name: target.name ?? previous.name,
57
+ username: target.username ?? previous.username,
58
+ }
59
+ : {
60
+ ...target,
61
+ ref: target.kind === "bot"
62
+ ? `b${this.nextBotRef++}`
63
+ : `u${this.nextUserRef++}`,
64
+ };
65
+ this.targetByKey.set(key, registered);
66
+ this.targetByRef.set(registered.ref, registered);
67
+ const scoped = this.refsByScope.get(scopeKey(scope)) ?? new Set();
68
+ scoped.add(registered.ref);
69
+ this.refsByScope.set(scopeKey(scope), scoped);
70
+ this.save();
71
+ return registered;
72
+ }
73
+ /** Drop stored names that are really labels (e.g. a role written by an older version). Returns how many were cleared. */
74
+ forgetNames(names) {
75
+ let cleared = 0;
76
+ for (const [ref, target] of this.targetByRef) {
77
+ if (target.name === undefined || !names.includes(target.name))
78
+ continue;
79
+ const { name: _dropped, ...rest } = target;
80
+ this.targetByRef.set(ref, rest);
81
+ this.targetByKey.set(targetKey(rest), rest);
82
+ cleared += 1;
83
+ }
84
+ if (cleared)
85
+ this.save();
86
+ return cleared;
87
+ }
88
+ save() {
89
+ if (!this.store)
90
+ return;
91
+ const saved = {};
92
+ for (const [ref, target] of this.targetByRef)
93
+ saved[ref] = { target, scopes: [] };
94
+ for (const [key, refs] of this.refsByScope) {
95
+ for (const ref of refs)
96
+ saved[ref].scopes.push(key);
97
+ }
98
+ this.store.write(saved);
99
+ }
100
+ resolve(scope, ref) {
101
+ if (!this.refsByScope.get(scopeKey(scope))?.has(ref))
102
+ return undefined;
103
+ return this.targetByRef.get(ref);
104
+ }
105
+ list(scope) {
106
+ return [...(this.refsByScope.get(scopeKey(scope)) ?? [])]
107
+ .map((ref) => this.targetByRef.get(ref))
108
+ .filter((target) => Boolean(target));
109
+ }
110
+ }
111
+ /**
112
+ * `roles` labels a target for this prompt only (e.g. an alert approver).
113
+ * Roles are never stored as the target's name: the registry is shared across chats.
114
+ */
115
+ export function formatMentionGuidance(targets, requesterRef, roles = {}) {
116
+ if (targets.length === 0)
117
+ return "";
118
+ const lines = targets.map((target) => {
119
+ const label = target.name ??
120
+ target.username ??
121
+ (target.ref === requesterRef ? "当前发送者" : target.id);
122
+ const role = roles[target.ref] !== undefined
123
+ ? `(${roles[target.ref]})`
124
+ : target.ref === requesterRef
125
+ ? "(当前发送者)"
126
+ : target.kind === "bot"
127
+ ? "(机器人)"
128
+ : "";
129
+ return `- ${target.ref}:${label}${role}`;
130
+ });
131
+ return [
132
+ "【可主动通知对象】",
133
+ ...lines,
134
+ '需要主动提醒其中某个对象时,执行 `fcb mention <对象引用> "<消息>"`。',
135
+ "仅在确实需要主动通知时使用;普通回复不要调用,也不要自行猜测对象引用。",
136
+ ].join("\n");
137
+ }
138
+ //# sourceMappingURL=mentions.js.map
@@ -0,0 +1,14 @@
1
+ import { type SecretOptions } from "./secret-refs.js";
2
+ export interface SecretMigration {
3
+ migrated: string[];
4
+ /** Field name -> why it was left as is (already a ref, missing, placeholder). */
5
+ skipped: Record<string, string>;
6
+ }
7
+ /**
8
+ * Move plaintext secrets from config.yaml into the OS keychain and replace them with
9
+ * keychain: refs. Nothing is written if any target item already holds a different value;
10
+ * each secret is read back before the file changes, and the file is rewritten once,
11
+ * atomically, keeping comments. A symlinked config.yaml is updated at its real target.
12
+ */
13
+ export declare function migrateConfigSecrets(configPath: string, options?: SecretOptions): SecretMigration;
14
+ //# sourceMappingURL=secret-migration.d.ts.map
@@ -0,0 +1,55 @@
1
+ import fs from "node:fs";
2
+ import path from "node:path";
3
+ import { parseDocument } from "yaml";
4
+ import { SECRET_PATHS, isPlaintextSecret, keychainServiceFor, resolveSecretRef, secretPathName, secretSourceOf, storeKeychainSecret, } from "./secret-refs.js";
5
+ function readKeychain(service, options) {
6
+ try {
7
+ return resolveSecretRef(`keychain:${service}`, options);
8
+ }
9
+ catch {
10
+ return undefined;
11
+ }
12
+ }
13
+ /**
14
+ * Move plaintext secrets from config.yaml into the OS keychain and replace them with
15
+ * keychain: refs. Nothing is written if any target item already holds a different value;
16
+ * each secret is read back before the file changes, and the file is rewritten once,
17
+ * atomically, keeping comments. A symlinked config.yaml is updated at its real target.
18
+ */
19
+ export function migrateConfigSecrets(configPath, options = {}) {
20
+ const target = fs.realpathSync(configPath);
21
+ const dataDir = path.dirname(configPath);
22
+ const doc = parseDocument(fs.readFileSync(target, "utf8"));
23
+ const result = { migrated: [], skipped: {} };
24
+ const plan = [];
25
+ for (const secretPath of SECRET_PATHS) {
26
+ const name = secretPathName(secretPath);
27
+ const value = doc.getIn(secretPath);
28
+ if (!isPlaintextSecret(value)) {
29
+ result.skipped[name] = secretSourceOf(value);
30
+ continue;
31
+ }
32
+ const service = keychainServiceFor(secretPath, dataDir);
33
+ const existing = readKeychain(service, options);
34
+ if (existing !== undefined && existing !== value) {
35
+ throw new Error(`钥匙串条目 ${service} 已存在且值不同,未做任何修改(可能属于另一套 CodeBridge 配置)`);
36
+ }
37
+ plan.push({ secretPath, service, value, stored: existing === value });
38
+ }
39
+ for (const item of plan) {
40
+ if (!item.stored)
41
+ storeKeychainSecret(item.service, item.value, options);
42
+ if (readKeychain(item.service, options) !== item.value) {
43
+ throw new Error(`${secretPathName(item.secretPath)} 写入钥匙串后读回不一致,config.yaml 未修改`);
44
+ }
45
+ doc.setIn(item.secretPath, `keychain:${item.service}`);
46
+ result.migrated.push(secretPathName(item.secretPath));
47
+ }
48
+ if (result.migrated.length) {
49
+ const temporary = `${target}.${process.pid}.tmp`;
50
+ fs.writeFileSync(temporary, doc.toString(), { mode: 0o600, flag: "wx" });
51
+ fs.renameSync(temporary, target);
52
+ }
53
+ return result;
54
+ }
55
+ //# sourceMappingURL=secret-migration.js.map
@@ -0,0 +1,34 @@
1
+ /**
2
+ * Config fields that may hold a secret reference instead of a plaintext value:
3
+ * env:NAME read from the environment variable NAME
4
+ * keychain:SERVICE macOS Keychain (security) or Linux Secret Service (secret-tool)
5
+ */
6
+ export declare const SECRET_PATHS: readonly [readonly ["feishu", "appSecret"], readonly ["runner", "token"], readonly ["telegram", "botToken"]];
7
+ export type SecretPath = (typeof SECRET_PATHS)[number];
8
+ export type SecretSource = "keychain" | "env" | "plaintext" | "placeholder" | "missing";
9
+ /** Env overrides read by ConfigStore for each secret field. */
10
+ export declare const SECRET_ENV_VARS: Record<string, string>;
11
+ export declare const KEYCHAIN_ACCOUNT = "codebridge";
12
+ /** Runs a helper binary; `input` is written to stdin so secrets never appear in argv. */
13
+ export type SecretCommand = (file: string, args: string[], input?: string) => string;
14
+ export interface SecretOptions {
15
+ platform?: NodeJS.Platform;
16
+ env?: NodeJS.ProcessEnv;
17
+ run?: SecretCommand;
18
+ }
19
+ export declare function secretPathName(path: SecretPath): string;
20
+ /**
21
+ * Keychain service for a field. Items are per data dir so a second install (e.g. a dev
22
+ * data dir) can never overwrite the production secrets; the default dir keeps short names.
23
+ */
24
+ export declare function keychainServiceFor(secretPath: SecretPath, dataDir?: string): string;
25
+ export declare function isSecretRef(value: unknown): value is string;
26
+ export declare function secretSourceOf(value: unknown): SecretSource;
27
+ /** A real plaintext secret worth migrating (not a default placeholder). */
28
+ export declare function isPlaintextSecret(value: unknown): value is string;
29
+ export declare function resolveSecretRef(ref: string, options?: SecretOptions): string;
30
+ export declare function storeKeychainSecret(service: string, value: string, options?: SecretOptions): void;
31
+ export declare function getPath(root: unknown, path: readonly string[]): unknown;
32
+ /** Sets (or, for `undefined`, deletes) a nested value; never creates missing parents for a delete. */
33
+ export declare function setPath(root: Record<string, unknown>, path: readonly string[], value: unknown): void;
34
+ //# sourceMappingURL=secret-refs.d.ts.map
@@ -0,0 +1,142 @@
1
+ import { execFileSync } from "node:child_process";
2
+ import { createHash } from "node:crypto";
3
+ import fs from "node:fs";
4
+ import os from "node:os";
5
+ import path from "node:path";
6
+ /**
7
+ * Config fields that may hold a secret reference instead of a plaintext value:
8
+ * env:NAME read from the environment variable NAME
9
+ * keychain:SERVICE macOS Keychain (security) or Linux Secret Service (secret-tool)
10
+ */
11
+ export const SECRET_PATHS = [
12
+ ["feishu", "appSecret"],
13
+ ["runner", "token"],
14
+ ["telegram", "botToken"],
15
+ ];
16
+ /** Env overrides read by ConfigStore for each secret field. */
17
+ export const SECRET_ENV_VARS = {
18
+ "feishu.appSecret": "FEISHU_APP_SECRET",
19
+ "runner.token": "RUNNER_TOKEN",
20
+ "telegram.botToken": "TELEGRAM_BOT_TOKEN",
21
+ };
22
+ export const KEYCHAIN_ACCOUNT = "codebridge";
23
+ const PLACEHOLDERS = new Set(["secret_placeholder", "change-me-runner-token"]);
24
+ const defaultRun = (file, args, input) => execFileSync(file, args, { encoding: "utf8", input, timeout: 10_000, stdio: ["pipe", "pipe", "pipe"] });
25
+ export function secretPathName(path) {
26
+ return path.join(".");
27
+ }
28
+ /**
29
+ * Keychain service for a field. Items are per data dir so a second install (e.g. a dev
30
+ * data dir) can never overwrite the production secrets; the default dir keeps short names.
31
+ */
32
+ export function keychainServiceFor(secretPath, dataDir) {
33
+ const name = secretPathName(secretPath);
34
+ if (!dataDir)
35
+ return `codebridge.${name}`;
36
+ const real = fs.existsSync(dataDir) ? fs.realpathSync(dataDir) : path.resolve(dataDir);
37
+ const defaultDir = path.join(os.homedir(), ".codebridge");
38
+ const defaultReal = fs.existsSync(defaultDir) ? fs.realpathSync(defaultDir) : defaultDir;
39
+ if (real === defaultReal)
40
+ return `codebridge.${name}`;
41
+ return `codebridge.${createHash("sha256").update(real).digest("hex").slice(0, 8)}.${name}`;
42
+ }
43
+ export function isSecretRef(value) {
44
+ return typeof value === "string" && /^(env|keychain):\S+$/.test(value);
45
+ }
46
+ export function secretSourceOf(value) {
47
+ if (isSecretRef(value))
48
+ return value.startsWith("env:") ? "env" : "keychain";
49
+ if (typeof value !== "string" || value === "")
50
+ return "missing";
51
+ return PLACEHOLDERS.has(value) ? "placeholder" : "plaintext";
52
+ }
53
+ /** A real plaintext secret worth migrating (not a default placeholder). */
54
+ export function isPlaintextSecret(value) {
55
+ return secretSourceOf(value) === "plaintext";
56
+ }
57
+ export function resolveSecretRef(ref, options = {}) {
58
+ const env = options.env ?? process.env;
59
+ const run = options.run ?? defaultRun;
60
+ const platform = options.platform ?? process.platform;
61
+ const [kind, name] = [ref.slice(0, ref.indexOf(":")), ref.slice(ref.indexOf(":") + 1)];
62
+ let value;
63
+ try {
64
+ if (kind === "env") {
65
+ value = env[name];
66
+ }
67
+ else if (platform === "darwin") {
68
+ value = run("/usr/bin/security", ["find-generic-password", "-s", name, "-a", KEYCHAIN_ACCOUNT, "-w"]);
69
+ }
70
+ else if (platform === "linux") {
71
+ value = run("secret-tool", ["lookup", "service", name, "account", KEYCHAIN_ACCOUNT]);
72
+ }
73
+ else {
74
+ throw new Error(`当前平台 ${platform} 不支持 keychain 引用`);
75
+ }
76
+ }
77
+ catch (error) {
78
+ throw new Error(`读取密钥 ${ref} 失败:${helperFailure(error)}${RECOVERY_HINT}`);
79
+ }
80
+ const resolved = value?.replace(/\r?\n$/, "");
81
+ if (!resolved)
82
+ throw new Error(`读取密钥 ${ref} 失败:${kind === "env" ? "环境变量未设置" : "钥匙串中没有该条目"}${RECOVERY_HINT}`);
83
+ return resolved;
84
+ }
85
+ const RECOVERY_HINT = "(codebridge secrets status 可逐项查看;也可把该字段临时改回明文或 env: 引用)";
86
+ /** The helper's own reason (stderr), not execFileSync's "Command failed: <argv>" line. */
87
+ function helperFailure(error) {
88
+ const stderr = error?.stderr;
89
+ const text = typeof stderr === "string" ? stderr : Buffer.isBuffer(stderr) ? stderr.toString("utf8") : "";
90
+ if (text.trim())
91
+ return text.trim().split("\n").at(-1).trim();
92
+ const message = error instanceof Error ? error.message : String(error);
93
+ const lines = message.split("\n").map((line) => line.trim()).filter(Boolean);
94
+ return (lines.length > 1 ? lines.at(-1) : lines[0]) ?? "未知错误";
95
+ }
96
+ export function storeKeychainSecret(service, value, options = {}) {
97
+ const run = options.run ?? defaultRun;
98
+ const platform = options.platform ?? process.platform;
99
+ if (!/^[A-Za-z0-9._-]+$/.test(service))
100
+ throw new Error(`钥匙串服务名 ${service} 含非法字符`);
101
+ if (platform === "darwin") {
102
+ // `security -i` reads the command from stdin; its parser has no escaping, so refuse
103
+ // anything that could break out of the quoted argument instead of guessing.
104
+ if (!/^[\x21-\x7e]+$/.test(value) || /["\\]/.test(value)) {
105
+ throw new Error(`${service} 含引号、反斜杠或空白,无法安全写入钥匙串;请手动写入后改为 keychain:${service}`);
106
+ }
107
+ run("/usr/bin/security", ["-i"], `add-generic-password -U -s ${service} -a ${KEYCHAIN_ACCOUNT} -w "${value}"\n`);
108
+ }
109
+ else if (platform === "linux") {
110
+ run("secret-tool", ["store", "--label", `CodeBridge ${service}`, "service", service, "account", KEYCHAIN_ACCOUNT], value);
111
+ }
112
+ else {
113
+ throw new Error(`当前平台 ${platform} 不支持钥匙串`);
114
+ }
115
+ }
116
+ export function getPath(root, path) {
117
+ let node = root;
118
+ for (const key of path) {
119
+ if (!node || typeof node !== "object")
120
+ return undefined;
121
+ node = node[key];
122
+ }
123
+ return node;
124
+ }
125
+ /** Sets (or, for `undefined`, deletes) a nested value; never creates missing parents for a delete. */
126
+ export function setPath(root, path, value) {
127
+ let node = root;
128
+ for (const key of path.slice(0, -1)) {
129
+ if (!node[key] || typeof node[key] !== "object") {
130
+ if (value === undefined)
131
+ return;
132
+ node[key] = {};
133
+ }
134
+ node = node[key];
135
+ }
136
+ const last = path[path.length - 1];
137
+ if (value === undefined)
138
+ delete node[last];
139
+ else
140
+ node[last] = value;
141
+ }
142
+ //# sourceMappingURL=secret-refs.js.map
@@ -0,0 +1,17 @@
1
+ export interface SessionEventWire {
2
+ schema_version: 1;
3
+ event_id: string;
4
+ sequence: number;
5
+ work_item_id: string;
6
+ run_id: string | null;
7
+ execution_kind: "agent" | "flow" | null;
8
+ type: string;
9
+ occurred_at: string;
10
+ actor: string;
11
+ target: string | null;
12
+ input_hash: string | null;
13
+ result_ref: string | null;
14
+ payload: Record<string, unknown>;
15
+ }
16
+ export declare function parseSessionEventWire(input: unknown): SessionEventWire;
17
+ //# sourceMappingURL=session-event-wire.d.ts.map
@@ -0,0 +1,28 @@
1
+ export function parseSessionEventWire(input) {
2
+ if (!input || typeof input !== "object" || Array.isArray(input)) {
3
+ throw new Error("session_event_schema_mismatch");
4
+ }
5
+ const event = input;
6
+ if (event.schema_version !== 1
7
+ || typeof event.event_id !== "string"
8
+ || !Number.isInteger(event.sequence)
9
+ || typeof event.work_item_id !== "string"
10
+ || !(typeof event.run_id === "string" || event.run_id === null)
11
+ || !(event.execution_kind === "agent"
12
+ || event.execution_kind === "flow"
13
+ || event.execution_kind === null)
14
+ || (event.run_id === null) !== (event.execution_kind === null)
15
+ || typeof event.type !== "string"
16
+ || typeof event.occurred_at !== "string"
17
+ || typeof event.actor !== "string"
18
+ || !(typeof event.target === "string" || event.target === null)
19
+ || !(typeof event.input_hash === "string" || event.input_hash === null)
20
+ || !(typeof event.result_ref === "string" || event.result_ref === null)
21
+ || !event.payload
22
+ || typeof event.payload !== "object"
23
+ || Array.isArray(event.payload)) {
24
+ throw new Error("session_event_schema_mismatch");
25
+ }
26
+ return event;
27
+ }
28
+ //# sourceMappingURL=session-event-wire.js.map