devchain-cli 0.14.1 → 0.16.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 (521) hide show
  1. package/README.md +11 -8
  2. package/dist/cli.js +19 -16
  3. package/dist/drizzle/0065_next_lady_bullseye.sql +11 -0
  4. package/dist/drizzle/meta/0065_snapshot.json +5691 -0
  5. package/dist/drizzle/meta/_journal.json +7 -0
  6. package/dist/node_modules/@devchain/codebase-overview/tsconfig.tsbuildinfo +1 -1
  7. package/dist/node_modules/@devchain/codebase-overview/types.d.ts.map +1 -1
  8. package/dist/node_modules/@devchain/shared/__fixtures__/phase2-frames.d.ts +20 -0
  9. package/dist/node_modules/@devchain/shared/__fixtures__/phase2-frames.d.ts.map +1 -0
  10. package/dist/node_modules/@devchain/shared/__fixtures__/phase2-frames.js +77 -0
  11. package/dist/node_modules/@devchain/shared/__fixtures__/phase2-frames.js.map +1 -0
  12. package/dist/node_modules/@devchain/shared/device-key/index.d.ts +2 -0
  13. package/dist/node_modules/@devchain/shared/device-key/index.d.ts.map +1 -0
  14. package/dist/node_modules/@devchain/shared/device-key/index.js +2 -0
  15. package/dist/node_modules/@devchain/shared/device-key/index.js.map +1 -0
  16. package/dist/node_modules/@devchain/shared/device-key/keypair.d.ts +23 -0
  17. package/dist/node_modules/@devchain/shared/device-key/keypair.d.ts.map +1 -0
  18. package/dist/node_modules/@devchain/shared/device-key/keypair.js +54 -0
  19. package/dist/node_modules/@devchain/shared/device-key/keypair.js.map +1 -0
  20. package/dist/node_modules/@devchain/shared/e2ee/aad.d.ts +3 -0
  21. package/dist/node_modules/@devchain/shared/e2ee/aad.d.ts.map +1 -0
  22. package/dist/node_modules/@devchain/shared/e2ee/aad.js +0 -0
  23. package/dist/node_modules/@devchain/shared/e2ee/aad.js.map +1 -0
  24. package/dist/node_modules/@devchain/shared/e2ee/base64.d.ts +6 -0
  25. package/dist/node_modules/@devchain/shared/e2ee/base64.d.ts.map +1 -0
  26. package/dist/node_modules/@devchain/shared/e2ee/base64.js +69 -0
  27. package/dist/node_modules/@devchain/shared/e2ee/base64.js.map +1 -0
  28. package/dist/node_modules/@devchain/shared/e2ee/crypto-envelope.service.d.ts +9 -0
  29. package/dist/node_modules/@devchain/shared/e2ee/crypto-envelope.service.d.ts.map +1 -0
  30. package/dist/node_modules/@devchain/shared/e2ee/crypto-envelope.service.js +78 -0
  31. package/dist/node_modules/@devchain/shared/e2ee/crypto-envelope.service.js.map +1 -0
  32. package/dist/node_modules/@devchain/shared/e2ee/envelope.d.ts +63 -0
  33. package/dist/node_modules/@devchain/shared/e2ee/envelope.d.ts.map +1 -0
  34. package/dist/node_modules/@devchain/shared/e2ee/envelope.js +64 -0
  35. package/dist/node_modules/@devchain/shared/e2ee/envelope.js.map +1 -0
  36. package/dist/node_modules/@devchain/shared/e2ee/index.d.ts +10 -0
  37. package/dist/node_modules/@devchain/shared/e2ee/index.d.ts.map +1 -0
  38. package/dist/node_modules/@devchain/shared/e2ee/index.js +10 -0
  39. package/dist/node_modules/@devchain/shared/e2ee/index.js.map +1 -0
  40. package/dist/node_modules/@devchain/shared/e2ee/key-exchange.d.ts +17 -0
  41. package/dist/node_modules/@devchain/shared/e2ee/key-exchange.d.ts.map +1 -0
  42. package/dist/node_modules/@devchain/shared/e2ee/key-exchange.js +72 -0
  43. package/dist/node_modules/@devchain/shared/e2ee/key-exchange.js.map +1 -0
  44. package/dist/node_modules/@devchain/shared/e2ee/keypair.d.ts +13 -0
  45. package/dist/node_modules/@devchain/shared/e2ee/keypair.d.ts.map +1 -0
  46. package/dist/node_modules/@devchain/shared/e2ee/keypair.js +34 -0
  47. package/dist/node_modules/@devchain/shared/e2ee/keypair.js.map +1 -0
  48. package/dist/node_modules/@devchain/shared/e2ee/negotiation.d.ts +30 -0
  49. package/dist/node_modules/@devchain/shared/e2ee/negotiation.d.ts.map +1 -0
  50. package/dist/node_modules/@devchain/shared/e2ee/negotiation.js +70 -0
  51. package/dist/node_modules/@devchain/shared/e2ee/negotiation.js.map +1 -0
  52. package/dist/node_modules/@devchain/shared/e2ee/safety-number.d.ts +3 -0
  53. package/dist/node_modules/@devchain/shared/e2ee/safety-number.d.ts.map +1 -0
  54. package/dist/node_modules/@devchain/shared/e2ee/safety-number.js +33 -0
  55. package/dist/node_modules/@devchain/shared/e2ee/safety-number.js.map +1 -0
  56. package/dist/node_modules/@devchain/shared/e2ee/trust.d.ts +22 -0
  57. package/dist/node_modules/@devchain/shared/e2ee/trust.d.ts.map +1 -0
  58. package/dist/node_modules/@devchain/shared/e2ee/trust.js +25 -0
  59. package/dist/node_modules/@devchain/shared/e2ee/trust.js.map +1 -0
  60. package/dist/node_modules/@devchain/shared/index.d.ts +3 -0
  61. package/dist/node_modules/@devchain/shared/index.d.ts.map +1 -1
  62. package/dist/node_modules/@devchain/shared/index.js +3 -0
  63. package/dist/node_modules/@devchain/shared/index.js.map +1 -1
  64. package/dist/node_modules/@devchain/shared/schemas/export-schema.d.ts +14 -6
  65. package/dist/node_modules/@devchain/shared/schemas/export-schema.d.ts.map +1 -1
  66. package/dist/node_modules/@devchain/shared/schemas/export-schema.js +1 -0
  67. package/dist/node_modules/@devchain/shared/schemas/export-schema.js.map +1 -1
  68. package/dist/node_modules/@devchain/shared/tsconfig.tsbuildinfo +1 -1
  69. package/dist/node_modules/@devchain/shared/tunnel-protocol.d.ts +99 -0
  70. package/dist/node_modules/@devchain/shared/tunnel-protocol.d.ts.map +1 -0
  71. package/dist/node_modules/@devchain/shared/tunnel-protocol.js +148 -0
  72. package/dist/node_modules/@devchain/shared/tunnel-protocol.js.map +1 -0
  73. package/dist/server/app.main.module.js +2 -0
  74. package/dist/server/app.main.module.js.map +1 -1
  75. package/dist/server/app.normal.module.js +2 -0
  76. package/dist/server/app.normal.module.js.map +1 -1
  77. package/dist/server/common/config/env.config.js +5 -7
  78. package/dist/server/common/config/env.config.js.map +1 -1
  79. package/dist/server/common/test/app-bootstrap.helper.js +5 -1
  80. package/dist/server/common/test/app-bootstrap.helper.js.map +1 -1
  81. package/dist/server/modules/agent-message-delivery/adapters/legacy-delivery-formatter.adapter.js +4 -0
  82. package/dist/server/modules/agent-message-delivery/adapters/legacy-delivery-formatter.adapter.js.map +1 -1
  83. package/dist/server/modules/agent-message-delivery/agent-message-delivery.service.d.ts +3 -1
  84. package/dist/server/modules/agent-message-delivery/agent-message-delivery.service.js +16 -3
  85. package/dist/server/modules/agent-message-delivery/agent-message-delivery.service.js.map +1 -1
  86. package/dist/server/modules/agent-message-delivery/dtos/delivery.types.d.ts +4 -0
  87. package/dist/server/modules/cloud/cloud.module.js +8 -1
  88. package/dist/server/modules/cloud/cloud.module.js.map +1 -1
  89. package/dist/server/modules/cloud/controllers/auth-callback.controller.js +5 -4
  90. package/dist/server/modules/cloud/controllers/auth-callback.controller.js.map +1 -1
  91. package/dist/server/modules/cloud/controllers/devices-proxy.controller.js +1 -1
  92. package/dist/server/modules/cloud/controllers/devices-proxy.controller.js.map +1 -1
  93. package/dist/server/modules/cloud/controllers/preferences-proxy.controller.js +1 -1
  94. package/dist/server/modules/cloud/controllers/preferences-proxy.controller.js.map +1 -1
  95. package/dist/server/modules/cloud/controllers/qr-initiate-proxy.controller.js +1 -1
  96. package/dist/server/modules/cloud/controllers/qr-initiate-proxy.controller.js.map +1 -1
  97. package/dist/server/modules/cloud/controllers/store-tokens-error.d.ts +4 -0
  98. package/dist/server/modules/cloud/controllers/store-tokens-error.js +103 -0
  99. package/dist/server/modules/cloud/controllers/store-tokens-error.js.map +1 -0
  100. package/dist/server/modules/cloud/services/cloud-session-manager.service.js +18 -8
  101. package/dist/server/modules/cloud/services/cloud-session-manager.service.js.map +1 -1
  102. package/dist/server/modules/cloud/services/egress-queue.service.js +2 -2
  103. package/dist/server/modules/cloud/services/egress-queue.service.js.map +1 -1
  104. package/dist/server/modules/cloud/services/event-mapper.service.d.ts +9 -1
  105. package/dist/server/modules/cloud/services/event-mapper.service.js +18 -2
  106. package/dist/server/modules/cloud/services/event-mapper.service.js.map +1 -1
  107. package/dist/server/modules/cloud/services/project-activity-reporter.service.js +1 -1
  108. package/dist/server/modules/cloud/services/project-activity-reporter.service.js.map +1 -1
  109. package/dist/server/modules/cloud-tunnel/cloud-tunnel.module.js +57 -2
  110. package/dist/server/modules/cloud-tunnel/cloud-tunnel.module.js.map +1 -1
  111. package/dist/server/modules/cloud-tunnel/services/ask-user-question-push-gate.service.d.ts +20 -0
  112. package/dist/server/modules/cloud-tunnel/services/ask-user-question-push-gate.service.js +84 -0
  113. package/dist/server/modules/cloud-tunnel/services/ask-user-question-push-gate.service.js.map +1 -0
  114. package/dist/server/modules/cloud-tunnel/services/epic-dto.util.d.ts +3 -0
  115. package/dist/server/modules/cloud-tunnel/services/epic-dto.util.js +43 -0
  116. package/dist/server/modules/cloud-tunnel/services/epic-dto.util.js.map +1 -0
  117. package/dist/server/modules/cloud-tunnel/services/jsonrpc-error.util.d.ts +11 -0
  118. package/dist/server/modules/cloud-tunnel/services/jsonrpc-error.util.js +32 -0
  119. package/dist/server/modules/cloud-tunnel/services/jsonrpc-error.util.js.map +1 -0
  120. package/dist/server/modules/cloud-tunnel/services/lifecycle-operation-tracker.d.ts +30 -0
  121. package/dist/server/modules/cloud-tunnel/services/lifecycle-operation-tracker.js +80 -0
  122. package/dist/server/modules/cloud-tunnel/services/lifecycle-operation-tracker.js.map +1 -0
  123. package/dist/server/modules/cloud-tunnel/services/mobile-board-rpc.service.d.ts +16 -0
  124. package/dist/server/modules/cloud-tunnel/services/mobile-board-rpc.service.js +78 -0
  125. package/dist/server/modules/cloud-tunnel/services/mobile-board-rpc.service.js.map +1 -0
  126. package/dist/server/modules/cloud-tunnel/services/mobile-chat-rpc.service.d.ts +112 -0
  127. package/dist/server/modules/cloud-tunnel/services/mobile-chat-rpc.service.js +457 -0
  128. package/dist/server/modules/cloud-tunnel/services/mobile-chat-rpc.service.js.map +1 -0
  129. package/dist/server/modules/cloud-tunnel/services/tunnel-client.service.d.ts +28 -2
  130. package/dist/server/modules/cloud-tunnel/services/tunnel-client.service.js +143 -5
  131. package/dist/server/modules/cloud-tunnel/services/tunnel-client.service.js.map +1 -1
  132. package/dist/server/modules/cloud-tunnel/services/tunnel-event-forwarder.service.d.ts +21 -0
  133. package/dist/server/modules/cloud-tunnel/services/tunnel-event-forwarder.service.js +171 -0
  134. package/dist/server/modules/cloud-tunnel/services/tunnel-event-forwarder.service.js.map +1 -0
  135. package/dist/server/modules/cloud-tunnel/services/tunnel-handler.service.d.ts +12 -5
  136. package/dist/server/modules/cloud-tunnel/services/tunnel-handler.service.js +209 -54
  137. package/dist/server/modules/cloud-tunnel/services/tunnel-handler.service.js.map +1 -1
  138. package/dist/server/modules/cloud-tunnel/services/tunnel-push-crypto.service.d.ts +21 -0
  139. package/dist/server/modules/cloud-tunnel/services/tunnel-push-crypto.service.js +117 -0
  140. package/dist/server/modules/cloud-tunnel/services/tunnel-push-crypto.service.js.map +1 -0
  141. package/dist/server/modules/cloud-tunnel/services/tunnel-rpc-crypto.service.d.ts +45 -0
  142. package/dist/server/modules/cloud-tunnel/services/tunnel-rpc-crypto.service.js +126 -0
  143. package/dist/server/modules/cloud-tunnel/services/tunnel-rpc-crypto.service.js.map +1 -0
  144. package/dist/server/modules/cloud-tunnel/services/tunnel-viewport-crypto.service.d.ts +20 -0
  145. package/dist/server/modules/cloud-tunnel/services/tunnel-viewport-crypto.service.js +114 -0
  146. package/dist/server/modules/cloud-tunnel/services/tunnel-viewport-crypto.service.js.map +1 -0
  147. package/dist/server/modules/cloud-tunnel/services/viewport-frame-sink.d.ts +6 -0
  148. package/dist/server/modules/cloud-tunnel/services/viewport-frame-sink.js +7 -0
  149. package/dist/server/modules/cloud-tunnel/services/viewport-frame-sink.js.map +1 -0
  150. package/dist/server/modules/cloud-tunnel/services/viewport-streamer.service.d.ts +30 -0
  151. package/dist/server/modules/cloud-tunnel/services/viewport-streamer.service.js +228 -0
  152. package/dist/server/modules/cloud-tunnel/services/viewport-streamer.service.js.map +1 -0
  153. package/dist/server/modules/core/core-normal.module.js +2 -9
  154. package/dist/server/modules/core/core-normal.module.js.map +1 -1
  155. package/dist/server/modules/core/services/antigravity-trusted-workspaces.module.d.ts +2 -0
  156. package/dist/server/modules/core/services/antigravity-trusted-workspaces.module.js +21 -0
  157. package/dist/server/modules/core/services/antigravity-trusted-workspaces.module.js.map +1 -0
  158. package/dist/server/modules/core/services/antigravity-trusted-workspaces.service.d.ts +21 -0
  159. package/dist/server/modules/core/services/antigravity-trusted-workspaces.service.js +249 -0
  160. package/dist/server/modules/core/services/antigravity-trusted-workspaces.service.js.map +1 -0
  161. package/dist/server/modules/core/services/copilot-auth-probe.module.d.ts +2 -0
  162. package/dist/server/modules/core/services/copilot-auth-probe.module.js +21 -0
  163. package/dist/server/modules/core/services/copilot-auth-probe.module.js.map +1 -0
  164. package/dist/server/modules/core/services/copilot-auth-probe.service.d.ts +7 -0
  165. package/dist/server/modules/core/services/copilot-auth-probe.service.js +63 -0
  166. package/dist/server/modules/core/services/copilot-auth-probe.service.js.map +1 -0
  167. package/dist/server/modules/core/services/copilot-trusted-folders.module.d.ts +2 -0
  168. package/dist/server/modules/core/services/{gemini-trusted-folders.module.js → copilot-trusted-folders.module.js} +9 -9
  169. package/dist/server/modules/core/services/copilot-trusted-folders.module.js.map +1 -0
  170. package/dist/server/modules/core/services/copilot-trusted-folders.service.d.ts +22 -0
  171. package/dist/server/modules/core/services/copilot-trusted-folders.service.js +228 -0
  172. package/dist/server/modules/core/services/copilot-trusted-folders.service.js.map +1 -0
  173. package/dist/server/modules/core/services/preflight.service.d.ts +1 -0
  174. package/dist/server/modules/core/services/preflight.service.js +35 -3
  175. package/dist/server/modules/core/services/preflight.service.js.map +1 -1
  176. package/dist/server/modules/core/services/trust-folders-logic.d.ts +11 -0
  177. package/dist/server/modules/core/services/trust-folders-logic.js +33 -0
  178. package/dist/server/modules/core/services/trust-folders-logic.js.map +1 -0
  179. package/dist/server/modules/e2ee/controllers/e2ee-pairing.controller.d.ts +19 -0
  180. package/dist/server/modules/e2ee/controllers/e2ee-pairing.controller.js +63 -0
  181. package/dist/server/modules/e2ee/controllers/e2ee-pairing.controller.js.map +1 -0
  182. package/dist/server/modules/e2ee/controllers/e2ee-trust.controller.d.ts +19 -0
  183. package/dist/server/modules/e2ee/controllers/e2ee-trust.controller.js +85 -0
  184. package/dist/server/modules/e2ee/controllers/e2ee-trust.controller.js.map +1 -0
  185. package/dist/server/modules/e2ee/e2ee.module.d.ts +2 -0
  186. package/dist/server/modules/e2ee/e2ee.module.js +27 -0
  187. package/dist/server/modules/e2ee/e2ee.module.js.map +1 -0
  188. package/dist/server/modules/e2ee/services/e2ee-device-store.service.d.ts +36 -0
  189. package/dist/server/modules/e2ee/services/e2ee-device-store.service.js +165 -0
  190. package/dist/server/modules/e2ee/services/e2ee-device-store.service.js.map +1 -0
  191. package/dist/server/modules/e2ee/services/e2ee-keypair.service.d.ts +21 -0
  192. package/dist/server/modules/e2ee/services/e2ee-keypair.service.js +152 -0
  193. package/dist/server/modules/e2ee/services/e2ee-keypair.service.js.map +1 -0
  194. package/dist/server/modules/e2ee/services/e2ee-pairing.service.d.ts +29 -0
  195. package/dist/server/modules/e2ee/services/e2ee-pairing.service.js +108 -0
  196. package/dist/server/modules/e2ee/services/e2ee-pairing.service.js.map +1 -0
  197. package/dist/server/modules/e2ee/services/e2ee-trust.service.d.ts +36 -0
  198. package/dist/server/modules/e2ee/services/e2ee-trust.service.js +121 -0
  199. package/dist/server/modules/e2ee/services/e2ee-trust.service.js.map +1 -0
  200. package/dist/server/modules/epics/services/epics.service.d.ts +1 -0
  201. package/dist/server/modules/epics/services/epics.service.js +10 -0
  202. package/dist/server/modules/epics/services/epics.service.js.map +1 -1
  203. package/dist/server/modules/events/catalog/broadcast-metadata.d.ts +6 -2
  204. package/dist/server/modules/events/catalog/broadcast-registry.d.ts +2 -2
  205. package/dist/server/modules/events/catalog/broadcast-registry.js +58 -1
  206. package/dist/server/modules/events/catalog/broadcast-registry.js.map +1 -1
  207. package/dist/server/modules/events/catalog/claude.hooks.ask_user_question.pending.d.ts +122 -0
  208. package/dist/server/modules/events/catalog/claude.hooks.ask_user_question.pending.js +28 -0
  209. package/dist/server/modules/events/catalog/claude.hooks.ask_user_question.pending.js.map +1 -0
  210. package/dist/server/modules/events/catalog/claude.hooks.ask_user_question.resolved.d.ts +18 -0
  211. package/dist/server/modules/events/catalog/claude.hooks.ask_user_question.resolved.js +13 -0
  212. package/dist/server/modules/events/catalog/claude.hooks.ask_user_question.resolved.js.map +1 -0
  213. package/dist/server/modules/events/catalog/claude.hooks.session.started.d.ts +6 -0
  214. package/dist/server/modules/events/catalog/claude.hooks.session.started.js +2 -0
  215. package/dist/server/modules/events/catalog/claude.hooks.session.started.js.map +1 -1
  216. package/dist/server/modules/events/catalog/index.d.ts +106 -10
  217. package/dist/server/modules/events/catalog/index.js +4 -0
  218. package/dist/server/modules/events/catalog/index.js.map +1 -1
  219. package/dist/server/modules/events/catalog/project-broadcast.d.ts +7 -0
  220. package/dist/server/modules/events/catalog/project-broadcast.js +10 -0
  221. package/dist/server/modules/events/catalog/project-broadcast.js.map +1 -0
  222. package/dist/server/modules/events/catalog/session.activity.changed.d.ts +2 -2
  223. package/dist/server/modules/events/catalog/session.transcript.discovered.d.ts +5 -2
  224. package/dist/server/modules/events/catalog/session.transcript.discovered.js +1 -0
  225. package/dist/server/modules/events/catalog/session.transcript.discovered.js.map +1 -1
  226. package/dist/server/modules/events/catalog/session.transcript.ended.d.ts +2 -2
  227. package/dist/server/modules/events/catalog/session.transcript.updated.d.ts +2 -2
  228. package/dist/server/modules/events/catalog/terminal.watcher.triggered.d.ts +2 -2
  229. package/dist/server/modules/events/services/catalog-broadcaster.service.js +3 -4
  230. package/dist/server/modules/events/services/catalog-broadcaster.service.js.map +1 -1
  231. package/dist/server/modules/hooks/dtos/ask-user-question.dto.d.ts +5 -0
  232. package/dist/server/modules/hooks/dtos/ask-user-question.dto.js +51 -0
  233. package/dist/server/modules/hooks/dtos/ask-user-question.dto.js.map +1 -0
  234. package/dist/server/modules/hooks/dtos/hook-event.dto.d.ts +324 -7
  235. package/dist/server/modules/hooks/dtos/hook-event.dto.js +57 -9
  236. package/dist/server/modules/hooks/dtos/hook-event.dto.js.map +1 -1
  237. package/dist/server/modules/hooks/hooks.module.js +14 -2
  238. package/dist/server/modules/hooks/hooks.module.js.map +1 -1
  239. package/dist/server/modules/hooks/services/copilot-hooks-config.service.d.ts +13 -0
  240. package/dist/server/modules/hooks/services/copilot-hooks-config.service.js +185 -0
  241. package/dist/server/modules/hooks/services/copilot-hooks-config.service.js.map +1 -0
  242. package/dist/server/modules/hooks/services/hooks-config.service.d.ts +1 -0
  243. package/dist/server/modules/hooks/services/hooks-config.service.js +52 -33
  244. package/dist/server/modules/hooks/services/hooks-config.service.js.map +1 -1
  245. package/dist/server/modules/hooks/services/hooks.service.d.ts +6 -1
  246. package/dist/server/modules/hooks/services/hooks.service.js +86 -3
  247. package/dist/server/modules/hooks/services/hooks.service.js.map +1 -1
  248. package/dist/server/modules/hooks/services/pending-ask-user-question.service.d.ts +38 -0
  249. package/dist/server/modules/hooks/services/pending-ask-user-question.service.js +105 -0
  250. package/dist/server/modules/hooks/services/pending-ask-user-question.service.js.map +1 -0
  251. package/dist/server/modules/mcp/dtos/mcp.dto.d.ts +2 -2
  252. package/dist/server/modules/orchestrator/docker/services/docker.service.js +16 -3
  253. package/dist/server/modules/orchestrator/docker/services/docker.service.js.map +1 -1
  254. package/dist/server/modules/orchestrator/worktrees/services/worktrees.service.js +3 -0
  255. package/dist/server/modules/orchestrator/worktrees/services/worktrees.service.js.map +1 -1
  256. package/dist/server/modules/projects/controllers/projects.controller.d.ts +7 -0
  257. package/dist/server/modules/projects/dtos/export.dto.d.ts +8 -0
  258. package/dist/server/modules/projects/dtos/export.dto.js +1 -0
  259. package/dist/server/modules/projects/dtos/export.dto.js.map +1 -1
  260. package/dist/server/modules/projects/helpers/project-export.d.ts +1 -0
  261. package/dist/server/modules/projects/helpers/project-export.js +19 -5
  262. package/dist/server/modules/projects/helpers/project-export.js.map +1 -1
  263. package/dist/server/modules/projects/helpers/project-import-sessions.d.ts +11 -0
  264. package/dist/server/modules/projects/helpers/project-import-sessions.js +47 -0
  265. package/dist/server/modules/projects/helpers/project-import-sessions.js.map +1 -0
  266. package/dist/server/modules/projects/helpers/project-import.d.ts +4 -0
  267. package/dist/server/modules/projects/helpers/project-import.js +12 -2
  268. package/dist/server/modules/projects/helpers/project-import.js.map +1 -1
  269. package/dist/server/modules/projects/services/projects.service.d.ts +5 -0
  270. package/dist/server/modules/providers/adapters/antigravity.adapter.d.ts +22 -0
  271. package/dist/server/modules/providers/adapters/antigravity.adapter.js +81 -0
  272. package/dist/server/modules/providers/adapters/antigravity.adapter.js.map +1 -0
  273. package/dist/server/modules/providers/adapters/capabilities/index.d.ts +2 -2
  274. package/dist/server/modules/providers/adapters/capabilities/index.js +3 -1
  275. package/dist/server/modules/providers/adapters/capabilities/index.js.map +1 -1
  276. package/dist/server/modules/providers/adapters/capabilities/type-guards.d.ts +16 -1
  277. package/dist/server/modules/providers/adapters/capabilities/type-guards.js +8 -0
  278. package/dist/server/modules/providers/adapters/capabilities/type-guards.js.map +1 -1
  279. package/dist/server/modules/providers/adapters/claude.adapter.d.ts +1 -0
  280. package/dist/server/modules/providers/adapters/claude.adapter.js +1 -0
  281. package/dist/server/modules/providers/adapters/claude.adapter.js.map +1 -1
  282. package/dist/server/modules/providers/adapters/codex.adapter.d.ts +1 -0
  283. package/dist/server/modules/providers/adapters/codex.adapter.js +10 -4
  284. package/dist/server/modules/providers/adapters/codex.adapter.js.map +1 -1
  285. package/dist/server/modules/providers/adapters/copilot.adapter.d.ts +31 -0
  286. package/dist/server/modules/providers/adapters/copilot.adapter.js +122 -0
  287. package/dist/server/modules/providers/adapters/copilot.adapter.js.map +1 -0
  288. package/dist/server/modules/providers/adapters/index.d.ts +1 -1
  289. package/dist/server/modules/providers/adapters/index.js +1 -1
  290. package/dist/server/modules/providers/adapters/index.js.map +1 -1
  291. package/dist/server/modules/providers/adapters/opencode.adapter.d.ts +4 -1
  292. package/dist/server/modules/providers/adapters/opencode.adapter.js +3 -0
  293. package/dist/server/modules/providers/adapters/opencode.adapter.js.map +1 -1
  294. package/dist/server/modules/providers/adapters/provider-adapter.factory.d.ts +3 -2
  295. package/dist/server/modules/providers/adapters/provider-adapter.factory.js +8 -5
  296. package/dist/server/modules/providers/adapters/provider-adapter.factory.js.map +1 -1
  297. package/dist/server/modules/providers/adapters/provider-adapter.interface.d.ts +6 -0
  298. package/dist/server/modules/providers/adapters/provider-adapters.module.js +19 -4
  299. package/dist/server/modules/providers/adapters/provider-adapters.module.js.map +1 -1
  300. package/dist/server/modules/providers/controllers/provider-models.controller.js +3 -2
  301. package/dist/server/modules/providers/controllers/provider-models.controller.js.map +1 -1
  302. package/dist/server/modules/providers/controllers/providers.controller.d.ts +50 -3
  303. package/dist/server/modules/providers/controllers/providers.controller.js +12 -3
  304. package/dist/server/modules/providers/controllers/providers.controller.js.map +1 -1
  305. package/dist/server/modules/providers/providers.module.js +1 -0
  306. package/dist/server/modules/providers/providers.module.js.map +1 -1
  307. package/dist/server/modules/providers/services/mcp-registration/antigravity-mcp-registration.adapter.d.ts +17 -0
  308. package/dist/server/modules/providers/services/mcp-registration/antigravity-mcp-registration.adapter.js +264 -0
  309. package/dist/server/modules/providers/services/mcp-registration/antigravity-mcp-registration.adapter.js.map +1 -0
  310. package/dist/server/modules/providers/services/mcp-registration/cli-mcp-registration.adapter.js +5 -6
  311. package/dist/server/modules/providers/services/mcp-registration/cli-mcp-registration.adapter.js.map +1 -1
  312. package/dist/server/modules/providers/services/mcp-registration/index.d.ts +1 -0
  313. package/dist/server/modules/providers/services/mcp-registration/index.js +3 -1
  314. package/dist/server/modules/providers/services/mcp-registration/index.js.map +1 -1
  315. package/dist/server/modules/providers/services/mcp-registration/mcp-registration.port.d.ts +3 -1
  316. package/dist/server/modules/providers/services/mcp-registration/mcp-registration.port.js +6 -1
  317. package/dist/server/modules/providers/services/mcp-registration/mcp-registration.port.js.map +1 -1
  318. package/dist/server/modules/providers/services/provider-state-manager.service.d.ts +2 -1
  319. package/dist/server/modules/providers/services/provider-state-manager.service.js +43 -1
  320. package/dist/server/modules/providers/services/provider-state-manager.service.js.map +1 -1
  321. package/dist/server/modules/registry/controllers/templates.controller.d.ts +2 -1
  322. package/dist/server/modules/registry/services/template-cache.service.d.ts +2 -0
  323. package/dist/server/modules/registry/services/template-cache.service.js +5 -0
  324. package/dist/server/modules/registry/services/template-cache.service.js.map +1 -1
  325. package/dist/server/modules/registry/services/unified-template.service.d.ts +1 -0
  326. package/dist/server/modules/registry/services/unified-template.service.js +9 -1
  327. package/dist/server/modules/registry/services/unified-template.service.js.map +1 -1
  328. package/dist/server/modules/seeders/seeders/0009_seed_remove_gemini_provider.d.ts +3 -0
  329. package/dist/server/modules/seeders/seeders/0009_seed_remove_gemini_provider.js +64 -0
  330. package/dist/server/modules/seeders/seeders/0009_seed_remove_gemini_provider.js.map +1 -0
  331. package/dist/server/modules/seeders/services/data-seeder.service.js +2 -0
  332. package/dist/server/modules/seeders/services/data-seeder.service.js.map +1 -1
  333. package/dist/server/modules/session-reader/__fixtures__/antigravity-fixture-db.d.ts +12 -0
  334. package/dist/server/modules/session-reader/__fixtures__/antigravity-fixture-db.js +41 -0
  335. package/dist/server/modules/session-reader/__fixtures__/antigravity-fixture-db.js.map +1 -0
  336. package/dist/server/modules/session-reader/__fixtures__/opencode-fixture-db.d.ts +44 -0
  337. package/dist/server/modules/session-reader/__fixtures__/opencode-fixture-db.js +85 -0
  338. package/dist/server/modules/session-reader/__fixtures__/opencode-fixture-db.js.map +1 -0
  339. package/dist/server/modules/session-reader/adapters/antigravity-session-reader.adapter.d.ts +30 -0
  340. package/dist/server/modules/session-reader/adapters/antigravity-session-reader.adapter.js +268 -0
  341. package/dist/server/modules/session-reader/adapters/antigravity-session-reader.adapter.js.map +1 -0
  342. package/dist/server/modules/session-reader/adapters/{gemini-session-reader.adapter.d.ts → copilot-session-reader.adapter.d.ts} +4 -5
  343. package/dist/server/modules/session-reader/adapters/{gemini-session-reader.adapter.js → copilot-session-reader.adapter.js} +35 -68
  344. package/dist/server/modules/session-reader/adapters/copilot-session-reader.adapter.js.map +1 -0
  345. package/dist/server/modules/session-reader/adapters/opencode-session-reader.adapter.d.ts +23 -0
  346. package/dist/server/modules/session-reader/adapters/opencode-session-reader.adapter.js +150 -0
  347. package/dist/server/modules/session-reader/adapters/opencode-session-reader.adapter.js.map +1 -0
  348. package/dist/server/modules/session-reader/adapters/session-reader-adapter.factory.js.map +1 -1
  349. package/dist/server/modules/session-reader/adapters/session-reader-adapter.interface.d.ts +16 -2
  350. package/dist/server/modules/session-reader/adapters/session-reader-adapter.interface.js +39 -0
  351. package/dist/server/modules/session-reader/adapters/session-reader-adapter.interface.js.map +1 -1
  352. package/dist/server/modules/session-reader/adapters/utils/coalesce-turns.d.ts +11 -0
  353. package/dist/server/modules/session-reader/adapters/utils/coalesce-turns.js +81 -0
  354. package/dist/server/modules/session-reader/adapters/utils/coalesce-turns.js.map +1 -0
  355. package/dist/server/modules/session-reader/adapters/utils/tool-result-fold.d.ts +2 -0
  356. package/dist/server/modules/session-reader/adapters/utils/tool-result-fold.js +9 -0
  357. package/dist/server/modules/session-reader/adapters/utils/tool-result-fold.js.map +1 -0
  358. package/dist/server/modules/session-reader/builders/chunk-builder.js +0 -2
  359. package/dist/server/modules/session-reader/builders/chunk-builder.js.map +1 -1
  360. package/dist/server/modules/session-reader/builders/semantic-step-extractor.js +2 -0
  361. package/dist/server/modules/session-reader/builders/semantic-step-extractor.js.map +1 -1
  362. package/dist/server/modules/session-reader/controllers/session-reader.controller.d.ts +1 -0
  363. package/dist/server/modules/session-reader/data/pricing.json +513 -44
  364. package/dist/server/modules/session-reader/dtos/unified-message.types.d.ts +1 -0
  365. package/dist/server/modules/session-reader/dtos/unified-session.types.d.ts +6 -0
  366. package/dist/server/modules/session-reader/dtos/unified-session.types.js.map +1 -1
  367. package/dist/server/modules/session-reader/parsers/antigravity-jsonl.parser.d.ts +16 -0
  368. package/dist/server/modules/session-reader/parsers/antigravity-jsonl.parser.js +307 -0
  369. package/dist/server/modules/session-reader/parsers/antigravity-jsonl.parser.js.map +1 -0
  370. package/dist/server/modules/session-reader/parsers/claude-jsonl.parser.js +46 -0
  371. package/dist/server/modules/session-reader/parsers/claude-jsonl.parser.js.map +1 -1
  372. package/dist/server/modules/session-reader/parsers/codex-jsonl.parser.js +35 -17
  373. package/dist/server/modules/session-reader/parsers/codex-jsonl.parser.js.map +1 -1
  374. package/dist/server/modules/session-reader/parsers/{gemini-json.parser.d.ts → copilot-jsonl.parser.d.ts} +4 -3
  375. package/dist/server/modules/session-reader/parsers/copilot-jsonl.parser.js +432 -0
  376. package/dist/server/modules/session-reader/parsers/copilot-jsonl.parser.js.map +1 -0
  377. package/dist/server/modules/session-reader/readers/antigravity-metrics.reader.d.ts +25 -0
  378. package/dist/server/modules/session-reader/readers/antigravity-metrics.reader.js +142 -0
  379. package/dist/server/modules/session-reader/readers/antigravity-metrics.reader.js.map +1 -0
  380. package/dist/server/modules/session-reader/readers/antigravity-model-pricing.d.ts +6 -0
  381. package/dist/server/modules/session-reader/readers/antigravity-model-pricing.js +35 -0
  382. package/dist/server/modules/session-reader/readers/antigravity-model-pricing.js.map +1 -0
  383. package/dist/server/modules/session-reader/readers/antigravity-transcript.reader.d.ts +24 -0
  384. package/dist/server/modules/session-reader/readers/antigravity-transcript.reader.js +80 -0
  385. package/dist/server/modules/session-reader/readers/antigravity-transcript.reader.js.map +1 -0
  386. package/dist/server/modules/session-reader/readers/copilot-model-pricing.d.ts +10 -0
  387. package/dist/server/modules/session-reader/readers/copilot-model-pricing.js +37 -0
  388. package/dist/server/modules/session-reader/readers/copilot-model-pricing.js.map +1 -0
  389. package/dist/server/modules/session-reader/readers/opencode-sqlite.reader.d.ts +69 -0
  390. package/dist/server/modules/session-reader/readers/opencode-sqlite.reader.js +378 -0
  391. package/dist/server/modules/session-reader/readers/opencode-sqlite.reader.js.map +1 -0
  392. package/dist/server/modules/session-reader/readers/protobuf-wire.d.ts +13 -0
  393. package/dist/server/modules/session-reader/readers/protobuf-wire.js +94 -0
  394. package/dist/server/modules/session-reader/readers/protobuf-wire.js.map +1 -0
  395. package/dist/server/modules/session-reader/services/session-cache.service.d.ts +12 -3
  396. package/dist/server/modules/session-reader/services/session-cache.service.js +104 -19
  397. package/dist/server/modules/session-reader/services/session-cache.service.js.map +1 -1
  398. package/dist/server/modules/session-reader/services/session-reader.service.d.ts +5 -0
  399. package/dist/server/modules/session-reader/services/session-reader.service.js +51 -16
  400. package/dist/server/modules/session-reader/services/session-reader.service.js.map +1 -1
  401. package/dist/server/modules/session-reader/services/transcript-path-validator.service.js +3 -1
  402. package/dist/server/modules/session-reader/services/transcript-path-validator.service.js.map +1 -1
  403. package/dist/server/modules/session-reader/services/transcript-persistence.listener.d.ts +4 -0
  404. package/dist/server/modules/session-reader/services/transcript-persistence.listener.js +109 -8
  405. package/dist/server/modules/session-reader/services/transcript-persistence.listener.js.map +1 -1
  406. package/dist/server/modules/session-reader/services/transcript-watcher-rehydrator.service.d.ts +10 -0
  407. package/dist/server/modules/session-reader/services/transcript-watcher-rehydrator.service.js +47 -0
  408. package/dist/server/modules/session-reader/services/transcript-watcher-rehydrator.service.js.map +1 -0
  409. package/dist/server/modules/session-reader/services/transcript-watcher.service.d.ts +7 -1
  410. package/dist/server/modules/session-reader/services/transcript-watcher.service.js +177 -28
  411. package/dist/server/modules/session-reader/services/transcript-watcher.service.js.map +1 -1
  412. package/dist/server/modules/session-reader/session-reader.module.d.ts +7 -3
  413. package/dist/server/modules/session-reader/session-reader.module.js +21 -7
  414. package/dist/server/modules/session-reader/session-reader.module.js.map +1 -1
  415. package/dist/server/modules/sessions/controllers/sessions.controller.js +2 -22
  416. package/dist/server/modules/sessions/controllers/sessions.controller.js.map +1 -1
  417. package/dist/server/modules/sessions/dtos/sessions.dto.d.ts +1 -0
  418. package/dist/server/modules/sessions/dtos/sessions.dto.js.map +1 -1
  419. package/dist/server/modules/sessions/services/active-session-lookup.service.d.ts +5 -0
  420. package/dist/server/modules/sessions/services/active-session-lookup.service.js +12 -0
  421. package/dist/server/modules/sessions/services/active-session-lookup.service.js.map +1 -1
  422. package/dist/server/modules/sessions/services/message-enqueue.service.d.ts +2 -0
  423. package/dist/server/modules/sessions/services/message-enqueue.service.js +2 -0
  424. package/dist/server/modules/sessions/services/message-enqueue.service.js.map +1 -1
  425. package/dist/server/modules/sessions/services/message-pool.types.d.ts +2 -0
  426. package/dist/server/modules/sessions/services/provider-launch-config/provider-launch-config.service.d.ts +2 -0
  427. package/dist/server/modules/sessions/services/provider-launch-config/provider-launch-config.service.js +14 -1
  428. package/dist/server/modules/sessions/services/provider-launch-config/provider-launch-config.service.js.map +1 -1
  429. package/dist/server/modules/sessions/services/session-lifecycle-facade.service.d.ts +18 -0
  430. package/dist/server/modules/sessions/services/session-lifecycle-facade.service.js +74 -0
  431. package/dist/server/modules/sessions/services/session-lifecycle-facade.service.js.map +1 -0
  432. package/dist/server/modules/sessions/services/session-runtime/__test-utils__/pipeline-harness.d.ts +12 -2
  433. package/dist/server/modules/sessions/services/session-runtime/__test-utils__/pipeline-harness.js +12 -3
  434. package/dist/server/modules/sessions/services/session-runtime/__test-utils__/pipeline-harness.js.map +1 -1
  435. package/dist/server/modules/sessions/services/session-runtime/session-launch-pipeline.service.d.ts +5 -1
  436. package/dist/server/modules/sessions/services/session-runtime/session-launch-pipeline.service.js +44 -7
  437. package/dist/server/modules/sessions/services/session-runtime/session-launch-pipeline.service.js.map +1 -1
  438. package/dist/server/modules/sessions/services/session-runtime/session-restore-pipeline.service.js +3 -2
  439. package/dist/server/modules/sessions/services/session-runtime/session-restore-pipeline.service.js.map +1 -1
  440. package/dist/server/modules/sessions/services/sessions-message-pool.service.js +15 -3
  441. package/dist/server/modules/sessions/services/sessions-message-pool.service.js.map +1 -1
  442. package/dist/server/modules/sessions/services/sessions.service.d.ts +8 -0
  443. package/dist/server/modules/sessions/services/sessions.service.js +52 -1
  444. package/dist/server/modules/sessions/services/sessions.service.js.map +1 -1
  445. package/dist/server/modules/sessions/sessions-lifecycle.module.d.ts +2 -0
  446. package/dist/server/modules/sessions/sessions-lifecycle.module.js +23 -0
  447. package/dist/server/modules/sessions/sessions-lifecycle.module.js.map +1 -0
  448. package/dist/server/modules/settings/local/delegates/core-settings.delegate.js.map +1 -1
  449. package/dist/server/modules/storage/db/schema.d.ts +83 -0
  450. package/dist/server/modules/storage/db/schema.js +15 -2
  451. package/dist/server/modules/storage/db/schema.js.map +1 -1
  452. package/dist/server/modules/storage/interfaces/storage.interface.d.ts +13 -2
  453. package/dist/server/modules/storage/interfaces/storage.interface.js.map +1 -1
  454. package/dist/server/modules/storage/local/delegates/epic.delegate.d.ts +1 -0
  455. package/dist/server/modules/storage/local/delegates/epic.delegate.js +8 -0
  456. package/dist/server/modules/storage/local/delegates/epic.delegate.js.map +1 -1
  457. package/dist/server/modules/storage/local/delegates/provider.delegate.d.ts +5 -1
  458. package/dist/server/modules/storage/local/delegates/provider.delegate.js +122 -0
  459. package/dist/server/modules/storage/local/delegates/provider.delegate.js.map +1 -1
  460. package/dist/server/modules/storage/local/delegates/session.delegate.d.ts +9 -0
  461. package/dist/server/modules/storage/local/delegates/session.delegate.js +115 -0
  462. package/dist/server/modules/storage/local/delegates/session.delegate.js.map +1 -0
  463. package/dist/server/modules/storage/local/local-storage.service.d.ts +10 -0
  464. package/dist/server/modules/storage/local/local-storage.service.js +20 -0
  465. package/dist/server/modules/storage/local/local-storage.service.js.map +1 -1
  466. package/dist/server/modules/storage/models/domain.models.d.ts +1 -0
  467. package/dist/server/modules/subscribers/events/event-fields-catalog.js +5 -3
  468. package/dist/server/modules/subscribers/events/event-fields-catalog.js.map +1 -1
  469. package/dist/server/modules/subscribers/services/automation-scheduler.service.js.map +1 -1
  470. package/dist/server/modules/teams/services/teams.service.d.ts +28 -2
  471. package/dist/server/modules/teams/services/teams.service.js +175 -0
  472. package/dist/server/modules/teams/services/teams.service.js.map +1 -1
  473. package/dist/server/modules/teams/storage/teams.store.d.ts +5 -0
  474. package/dist/server/modules/teams/storage/teams.store.js +34 -0
  475. package/dist/server/modules/teams/storage/teams.store.js.map +1 -1
  476. package/dist/server/modules/terminal/gateways/terminal.gateway.d.ts +5 -0
  477. package/dist/server/modules/terminal/gateways/terminal.gateway.js +38 -0
  478. package/dist/server/modules/terminal/gateways/terminal.gateway.js.map +1 -1
  479. package/dist/server/modules/terminal/services/pty.service.js +11 -3
  480. package/dist/server/modules/terminal/services/pty.service.js.map +1 -1
  481. package/dist/server/modules/terminal/services/terminal-io/terminal-io.service.d.ts +1 -1
  482. package/dist/server/modules/terminal/services/terminal-io/terminal-io.service.js +9 -2
  483. package/dist/server/modules/terminal/services/terminal-io/terminal-io.service.js.map +1 -1
  484. package/dist/server/modules/terminal/services/terminal-io/viewport-capture.d.ts +12 -0
  485. package/dist/server/modules/terminal/services/terminal-io/viewport-capture.js +50 -0
  486. package/dist/server/modules/terminal/services/terminal-io/viewport-capture.js.map +1 -0
  487. package/dist/server/modules/terminal/services/terminal-session/terminal-session.d.ts +2 -0
  488. package/dist/server/modules/terminal/services/terminal-session/terminal-session.js +10 -4
  489. package/dist/server/modules/terminal/services/terminal-session/terminal-session.js.map +1 -1
  490. package/dist/server/modules/terminal/services/terminal-viewport/terminal-viewport.facade.d.ts +12 -0
  491. package/dist/server/modules/terminal/services/terminal-viewport/terminal-viewport.facade.js +55 -0
  492. package/dist/server/modules/terminal/services/terminal-viewport/terminal-viewport.facade.js.map +1 -0
  493. package/dist/server/modules/terminal/terminal-viewport.module.d.ts +2 -0
  494. package/dist/server/modules/terminal/terminal-viewport.module.js +24 -0
  495. package/dist/server/modules/terminal/terminal-viewport.module.js.map +1 -0
  496. package/dist/server/templates/3-agents-dev.json +198 -160
  497. package/dist/server/templates/teams-dev.json +285 -225
  498. package/dist/server/tsconfig.tsbuildinfo +1 -1
  499. package/dist/server/ui/assets/{ReviewDetailPage-CobRKQBn.js → ReviewDetailPage-BDisSE9l.js} +1 -1
  500. package/dist/server/ui/assets/{ReviewsPage-Bb6ZmriH.js → ReviewsPage-3puoJiOQ.js} +1 -1
  501. package/dist/server/ui/assets/index-CzMrWNAV.css +32 -0
  502. package/dist/server/ui/assets/index-zlQ1ekQ2.js +1103 -0
  503. package/dist/server/ui/assets/{useReviewSubscription-DzaIaXy7.js → useReviewSubscription-wTrdkdi0.js} +1 -1
  504. package/dist/server/ui/favicon.svg +2 -16
  505. package/dist/server/ui/index.html +2 -2
  506. package/dist/templates/3-agents-dev.json +198 -160
  507. package/dist/templates/teams-dev.json +285 -225
  508. package/package.json +31 -8
  509. package/dist/server/modules/core/services/gemini-trusted-folders.module.d.ts +0 -2
  510. package/dist/server/modules/core/services/gemini-trusted-folders.module.js.map +0 -1
  511. package/dist/server/modules/core/services/gemini-trusted-folders.service.d.ts +0 -26
  512. package/dist/server/modules/core/services/gemini-trusted-folders.service.js +0 -181
  513. package/dist/server/modules/core/services/gemini-trusted-folders.service.js.map +0 -1
  514. package/dist/server/modules/providers/adapters/gemini.adapter.d.ts +0 -27
  515. package/dist/server/modules/providers/adapters/gemini.adapter.js +0 -119
  516. package/dist/server/modules/providers/adapters/gemini.adapter.js.map +0 -1
  517. package/dist/server/modules/session-reader/adapters/gemini-session-reader.adapter.js.map +0 -1
  518. package/dist/server/modules/session-reader/parsers/gemini-json.parser.js +0 -380
  519. package/dist/server/modules/session-reader/parsers/gemini-json.parser.js.map +0 -1
  520. package/dist/server/ui/assets/index-BV_-Jlz8.js +0 -1095
  521. package/dist/server/ui/assets/index-C_ZOt0it.css +0 -32
@@ -0,0 +1,77 @@
1
+ export const PHASE2_FIXTURE_IDS = Object.freeze({
2
+ userId: 'user-fixture-1',
3
+ instanceId: 'inst-fixture-1',
4
+ sessionId: 'sess-fixture-1',
5
+ agentId: 'agent-fixture-1',
6
+ projectId: 'proj-fixture-1',
7
+ toolUseId: 'tool-use-fixture-1',
8
+ threadId: 'thread-fixture-1',
9
+ });
10
+ export const TRANSCRIPT_UPDATED_ENVELOPE = Object.freeze({
11
+ type: 'push',
12
+ v: 2,
13
+ topic: `session/${PHASE2_FIXTURE_IDS.sessionId}/transcript`,
14
+ eventType: 'updated',
15
+ payload: { newMessageCount: 1 },
16
+ });
17
+ export const AUQ_PENDING_ENVELOPE = Object.freeze({
18
+ type: 'push',
19
+ v: 2,
20
+ topic: `session/${PHASE2_FIXTURE_IDS.sessionId}`,
21
+ eventType: 'ask_user_question.pending',
22
+ payload: { toolUseId: PHASE2_FIXTURE_IDS.toolUseId },
23
+ });
24
+ export const AUQ_RESOLVED_ENVELOPE = Object.freeze({
25
+ type: 'push',
26
+ v: 2,
27
+ topic: `session/${PHASE2_FIXTURE_IDS.sessionId}`,
28
+ eventType: 'ask_user_question.resolved',
29
+ payload: { toolUseId: PHASE2_FIXTURE_IDS.toolUseId },
30
+ });
31
+ export const PRESENCE_CHANGED_ENVELOPE = Object.freeze({
32
+ type: 'push',
33
+ v: 2,
34
+ topic: `agent/${PHASE2_FIXTURE_IDS.agentId}`,
35
+ eventType: 'presence',
36
+ payload: { online: true },
37
+ });
38
+ export const ACTIVITY_CHANGED_ENVELOPE = Object.freeze({
39
+ type: 'push',
40
+ v: 2,
41
+ topic: `session/${PHASE2_FIXTURE_IDS.sessionId}`,
42
+ eventType: 'activity',
43
+ payload: { state: 'busy', lastActivityAt: 1, busySince: 0 },
44
+ });
45
+ export const UNKNOWN_TOPIC_ENVELOPE = Object.freeze({
46
+ type: 'push',
47
+ v: 2,
48
+ topic: `session/${PHASE2_FIXTURE_IDS.sessionId}/frobnicate`,
49
+ eventType: 'updated',
50
+ payload: {},
51
+ });
52
+ export const WRONG_EVENT_TYPE_ENVELOPE = Object.freeze({
53
+ type: 'push',
54
+ v: 2,
55
+ topic: `session/${PHASE2_FIXTURE_IDS.sessionId}/transcript`,
56
+ eventType: 'ask_user_question.pending',
57
+ payload: {},
58
+ });
59
+ export const SMUGGLED_EVENT_ID_FRAME = Object.freeze({
60
+ type: 'push',
61
+ v: 2,
62
+ topic: `session/${PHASE2_FIXTURE_IDS.sessionId}/transcript`,
63
+ eventType: 'updated',
64
+ eventId: 'client-smuggled-999',
65
+ payload: { trap: true },
66
+ });
67
+ export const ALLOWLISTED_TOPIC_PAIRS = Object.freeze([
68
+ [`session/${PHASE2_FIXTURE_IDS.sessionId}/transcript`, 'updated'],
69
+ [`session/${PHASE2_FIXTURE_IDS.sessionId}`, 'ask_user_question.pending'],
70
+ [`session/${PHASE2_FIXTURE_IDS.sessionId}`, 'ask_user_question.resolved'],
71
+ [`session/${PHASE2_FIXTURE_IDS.sessionId}`, 'activity'],
72
+ [`agent/${PHASE2_FIXTURE_IDS.agentId}`, 'presence'],
73
+ [`project/${PHASE2_FIXTURE_IDS.projectId}/state`, 'agent.created'],
74
+ [`project/${PHASE2_FIXTURE_IDS.projectId}/state`, 'agent.deleted'],
75
+ [`chat/${PHASE2_FIXTURE_IDS.threadId}`, 'message.created'],
76
+ ]);
77
+ //# sourceMappingURL=phase2-frames.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"phase2-frames.js","sourceRoot":"","sources":["../../src/__fixtures__/phase2-frames.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export { ED25519_PRIVATE_KEY_BYTES, ED25519_PUBLIC_KEY_BYTES, ED25519_SIGNATURE_BYTES, DEVICE_KEY_KTY, DEVICE_KEY_CRV, fromEd25519PrivateKey, generateEd25519KeyPair, publicKeyToJwk, canonicalJwk, computeJwkThumbprint, signMessage, verifySignature, type Ed25519KeyPair, type Ed25519PublicJwk, } from './keypair.js';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/device-key/index.ts"],"names":[],"mappings":"AAKA,OAAO,EACL,yBAAyB,EACzB,wBAAwB,EACxB,uBAAuB,EACvB,cAAc,EACd,cAAc,EACd,qBAAqB,EACrB,sBAAsB,EACtB,cAAc,EACd,YAAY,EACZ,oBAAoB,EACpB,WAAW,EACX,eAAe,EACf,KAAK,cAAc,EACnB,KAAK,gBAAgB,GACtB,MAAM,cAAc,CAAC"}
@@ -0,0 +1,2 @@
1
+ export { ED25519_PRIVATE_KEY_BYTES, ED25519_PUBLIC_KEY_BYTES, ED25519_SIGNATURE_BYTES, DEVICE_KEY_KTY, DEVICE_KEY_CRV, fromEd25519PrivateKey, generateEd25519KeyPair, publicKeyToJwk, canonicalJwk, computeJwkThumbprint, signMessage, verifySignature, } from './keypair.js';
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/device-key/index.ts"],"names":[],"mappings":"AAKA,OAAO,EACL,yBAAyB,EACzB,wBAAwB,EACxB,uBAAuB,EACvB,cAAc,EACd,cAAc,EACd,qBAAqB,EACrB,sBAAsB,EACtB,cAAc,EACd,YAAY,EACZ,oBAAoB,EACpB,WAAW,EACX,eAAe,GAGhB,MAAM,cAAc,CAAC"}
@@ -0,0 +1,23 @@
1
+ import type { RandomBytes } from '../e2ee/envelope.js';
2
+ export declare const ED25519_PRIVATE_KEY_BYTES = 32;
3
+ export declare const ED25519_PUBLIC_KEY_BYTES = 32;
4
+ export declare const ED25519_SIGNATURE_BYTES = 64;
5
+ export declare const DEVICE_KEY_KTY = "OKP";
6
+ export declare const DEVICE_KEY_CRV = "Ed25519";
7
+ export interface Ed25519KeyPair {
8
+ privateKey: Uint8Array;
9
+ publicKey: Uint8Array;
10
+ }
11
+ export interface Ed25519PublicJwk {
12
+ kty: typeof DEVICE_KEY_KTY;
13
+ crv: typeof DEVICE_KEY_CRV;
14
+ x: string;
15
+ }
16
+ export declare function fromEd25519PrivateKey(privateKey: Uint8Array): Ed25519KeyPair;
17
+ export declare function generateEd25519KeyPair(randomBytes: RandomBytes): Ed25519KeyPair;
18
+ export declare function publicKeyToJwk(publicKey: Uint8Array): Ed25519PublicJwk;
19
+ export declare function canonicalJwk(publicKey: Uint8Array): string;
20
+ export declare function computeJwkThumbprint(publicKey: Uint8Array): string;
21
+ export declare function signMessage(privateKey: Uint8Array, message: Uint8Array): Uint8Array;
22
+ export declare function verifySignature(publicKey: Uint8Array, message: Uint8Array, signature: Uint8Array): boolean;
23
+ //# sourceMappingURL=keypair.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"keypair.d.ts","sourceRoot":"","sources":["../../src/device-key/keypair.ts"],"names":[],"mappings":"AAoBA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAGvD,eAAO,MAAM,yBAAyB,KAAK,CAAC;AAE5C,eAAO,MAAM,wBAAwB,KAAK,CAAC;AAE3C,eAAO,MAAM,uBAAuB,KAAK,CAAC;AAG1C,eAAO,MAAM,cAAc,QAAQ,CAAC;AAEpC,eAAO,MAAM,cAAc,YAAY,CAAC;AAExC,MAAM,WAAW,cAAc;IAE7B,UAAU,EAAE,UAAU,CAAC;IAEvB,SAAS,EAAE,UAAU,CAAC;CACvB;AAGD,MAAM,WAAW,gBAAgB;IAC/B,GAAG,EAAE,OAAO,cAAc,CAAC;IAC3B,GAAG,EAAE,OAAO,cAAc,CAAC;IAE3B,CAAC,EAAE,MAAM,CAAC;CACX;AAOD,wBAAgB,qBAAqB,CAAC,UAAU,EAAE,UAAU,GAAG,cAAc,CAQ5E;AAOD,wBAAgB,sBAAsB,CAAC,WAAW,EAAE,WAAW,GAAG,cAAc,CAQ/E;AAGD,wBAAgB,cAAc,CAAC,SAAS,EAAE,UAAU,GAAG,gBAAgB,CAOtE;AAQD,wBAAgB,YAAY,CAAC,SAAS,EAAE,UAAU,GAAG,MAAM,CAG1D;AAOD,wBAAgB,oBAAoB,CAAC,SAAS,EAAE,UAAU,GAAG,MAAM,CAQlE;AAOD,wBAAgB,WAAW,CAAC,UAAU,EAAE,UAAU,EAAE,OAAO,EAAE,UAAU,GAAG,UAAU,CAEnF;AAQD,wBAAgB,eAAe,CAC7B,SAAS,EAAE,UAAU,EACrB,OAAO,EAAE,UAAU,EACnB,SAAS,EAAE,UAAU,GACpB,OAAO,CAMT"}
@@ -0,0 +1,54 @@
1
+ import { ed25519 } from '@noble/curves/ed25519';
2
+ import { sha256 } from '@noble/hashes/sha2';
3
+ import { bytesToBase64 } from '../e2ee/base64.js';
4
+ export const ED25519_PRIVATE_KEY_BYTES = 32;
5
+ export const ED25519_PUBLIC_KEY_BYTES = 32;
6
+ export const ED25519_SIGNATURE_BYTES = 64;
7
+ export const DEVICE_KEY_KTY = 'OKP';
8
+ export const DEVICE_KEY_CRV = 'Ed25519';
9
+ export function fromEd25519PrivateKey(privateKey) {
10
+ if (privateKey.length !== ED25519_PRIVATE_KEY_BYTES) {
11
+ throw new TypeError(`fromEd25519PrivateKey: privateKey must be ${ED25519_PRIVATE_KEY_BYTES} bytes, got ${privateKey.length}`);
12
+ }
13
+ const publicKey = ed25519.getPublicKey(privateKey);
14
+ return { privateKey, publicKey };
15
+ }
16
+ export function generateEd25519KeyPair(randomBytes) {
17
+ const privateKey = randomBytes(ED25519_PRIVATE_KEY_BYTES);
18
+ if (privateKey.length !== ED25519_PRIVATE_KEY_BYTES) {
19
+ throw new Error(`generateEd25519KeyPair: RNG returned ${privateKey.length} bytes, expected ${ED25519_PRIVATE_KEY_BYTES}`);
20
+ }
21
+ return fromEd25519PrivateKey(privateKey);
22
+ }
23
+ export function publicKeyToJwk(publicKey) {
24
+ if (publicKey.length !== ED25519_PUBLIC_KEY_BYTES) {
25
+ throw new TypeError(`publicKeyToJwk: publicKey must be ${ED25519_PUBLIC_KEY_BYTES} bytes, got ${publicKey.length}`);
26
+ }
27
+ return { kty: DEVICE_KEY_KTY, crv: DEVICE_KEY_CRV, x: bytesToBase64Url(publicKey) };
28
+ }
29
+ export function canonicalJwk(publicKey) {
30
+ const jwk = publicKeyToJwk(publicKey);
31
+ return `{"crv":"${jwk.crv}","kty":"${jwk.kty}","x":"${jwk.x}"}`;
32
+ }
33
+ export function computeJwkThumbprint(publicKey) {
34
+ if (publicKey.length !== ED25519_PUBLIC_KEY_BYTES) {
35
+ throw new TypeError(`computeJwkThumbprint: publicKey must be ${ED25519_PUBLIC_KEY_BYTES} bytes, got ${publicKey.length}`);
36
+ }
37
+ const digest = sha256(new TextEncoder().encode(canonicalJwk(publicKey)));
38
+ return bytesToBase64Url(digest);
39
+ }
40
+ export function signMessage(privateKey, message) {
41
+ return ed25519.sign(message, privateKey);
42
+ }
43
+ export function verifySignature(publicKey, message, signature) {
44
+ try {
45
+ return ed25519.verify(signature, message, publicKey);
46
+ }
47
+ catch {
48
+ return false;
49
+ }
50
+ }
51
+ function bytesToBase64Url(bytes) {
52
+ return bytesToBase64(bytes).replace(/\+/g, '-').replace(/\//g, '_').replace(/=+$/, '');
53
+ }
54
+ //# sourceMappingURL=keypair.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"keypair.js","sourceRoot":"","sources":["../../src/device-key/keypair.ts"],"names":[],"mappings":"AAiBA,OAAO,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAChD,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAC5C,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAIlD,MAAM,CAAC,MAAM,yBAAyB,GAAG,EAAE,CAAC;AAE5C,MAAM,CAAC,MAAM,wBAAwB,GAAG,EAAE,CAAC;AAE3C,MAAM,CAAC,MAAM,uBAAuB,GAAG,EAAE,CAAC;AAG1C,MAAM,CAAC,MAAM,cAAc,GAAG,KAAK,CAAC;AAEpC,MAAM,CAAC,MAAM,cAAc,GAAG,SAAS,CAAC;AAsBxC,MAAM,UAAU,qBAAqB,CAAC,UAAsB;IAC1D,IAAI,UAAU,CAAC,MAAM,KAAK,yBAAyB,EAAE,CAAC;QACpD,MAAM,IAAI,SAAS,CACjB,6CAA6C,yBAAyB,eAAe,UAAU,CAAC,MAAM,EAAE,CACzG,CAAC;IACJ,CAAC;IACD,MAAM,SAAS,GAAG,OAAO,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC;IACnD,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,CAAC;AACnC,CAAC;AAOD,MAAM,UAAU,sBAAsB,CAAC,WAAwB;IAC7D,MAAM,UAAU,GAAG,WAAW,CAAC,yBAAyB,CAAC,CAAC;IAC1D,IAAI,UAAU,CAAC,MAAM,KAAK,yBAAyB,EAAE,CAAC;QACpD,MAAM,IAAI,KAAK,CACb,wCAAwC,UAAU,CAAC,MAAM,oBAAoB,yBAAyB,EAAE,CACzG,CAAC;IACJ,CAAC;IACD,OAAO,qBAAqB,CAAC,UAAU,CAAC,CAAC;AAC3C,CAAC;AAGD,MAAM,UAAU,cAAc,CAAC,SAAqB;IAClD,IAAI,SAAS,CAAC,MAAM,KAAK,wBAAwB,EAAE,CAAC;QAClD,MAAM,IAAI,SAAS,CACjB,qCAAqC,wBAAwB,eAAe,SAAS,CAAC,MAAM,EAAE,CAC/F,CAAC;IACJ,CAAC;IACD,OAAO,EAAE,GAAG,EAAE,cAAc,EAAE,GAAG,EAAE,cAAc,EAAE,CAAC,EAAE,gBAAgB,CAAC,SAAS,CAAC,EAAE,CAAC;AACtF,CAAC;AAQD,MAAM,UAAU,YAAY,CAAC,SAAqB;IAChD,MAAM,GAAG,GAAG,cAAc,CAAC,SAAS,CAAC,CAAC;IACtC,OAAO,WAAW,GAAG,CAAC,GAAG,YAAY,GAAG,CAAC,GAAG,UAAU,GAAG,CAAC,CAAC,IAAI,CAAC;AAClE,CAAC;AAOD,MAAM,UAAU,oBAAoB,CAAC,SAAqB;IACxD,IAAI,SAAS,CAAC,MAAM,KAAK,wBAAwB,EAAE,CAAC;QAClD,MAAM,IAAI,SAAS,CACjB,2CAA2C,wBAAwB,eAAe,SAAS,CAAC,MAAM,EAAE,CACrG,CAAC;IACJ,CAAC;IACD,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;IACzE,OAAO,gBAAgB,CAAC,MAAM,CAAC,CAAC;AAClC,CAAC;AAOD,MAAM,UAAU,WAAW,CAAC,UAAsB,EAAE,OAAmB;IACrE,OAAO,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;AAC3C,CAAC;AAQD,MAAM,UAAU,eAAe,CAC7B,SAAqB,EACrB,OAAmB,EACnB,SAAqB;IAErB,IAAI,CAAC;QACH,OAAO,OAAO,CAAC,MAAM,CAAC,SAAS,EAAE,OAAO,EAAE,SAAS,CAAC,CAAC;IACvD,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAID,SAAS,gBAAgB,CAAC,KAAiB;IACzC,OAAO,aAAa,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;AACzF,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { E2eeAlg, E2eeContext, E2eeEnvelopeVersion } from './envelope.js';
2
+ export declare function buildAad(ctx: E2eeContext, kid: string, version: E2eeEnvelopeVersion, alg: E2eeAlg): Uint8Array;
3
+ //# sourceMappingURL=aad.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"aad.d.ts","sourceRoot":"","sources":["../../src/e2ee/aad.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAE,OAAO,EAAE,WAAW,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AAwB/E,wBAAgB,QAAQ,CACtB,GAAG,EAAE,WAAW,EAChB,GAAG,EAAE,MAAM,EACX,OAAO,EAAE,mBAAmB,EAC5B,GAAG,EAAE,OAAO,GACX,UAAU,CAYZ"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"aad.js","sourceRoot":"","sources":["../../src/e2ee/aad.ts"],"names":[],"mappings":"AAaA,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAI/D,MAAM,UAAU,GAAG,sBAAsB,CAAC;AAG1C,SAAS,KAAK,CAAC,KAAa;IAC1B,MAAM,IAAI,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC;IAChC,MAAM,MAAM,GAAG,IAAI,UAAU,CAAC,CAAC,CAAC,CAAC;IAEjC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,KAAK,EAAE,CAAC,GAAG,IAAI,CAAC;IACxC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,KAAK,EAAE,CAAC,GAAG,IAAI,CAAC;IACxC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC;IACvC,MAAM,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;IAC/B,OAAO,WAAW,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;AACnC,CAAC;AASD,MAAM,UAAU,QAAQ,CACtB,GAAgB,EAChB,GAAW,EACX,OAA4B,EAC5B,GAAY;IAEZ,OAAO,WAAW,CAChB,KAAK,CAAC,UAAU,CAAC,EACjB,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,EACtB,KAAK,CAAC,GAAG,CAAC,EACV,KAAK,CAAC,GAAG,CAAC,EACV,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EACf,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,EACpB,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC,EACrB,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,EACnB,KAAK,CAAC,GAAG,CAAC,GAAG,KAAK,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CACzD,CAAC;AACJ,CAAC"}
@@ -0,0 +1,6 @@
1
+ export declare function bytesToBase64(bytes: Uint8Array): string;
2
+ export declare function base64ToBytes(b64: string): Uint8Array;
3
+ export declare class InvalidBase64Error extends Error {
4
+ constructor(reason: string);
5
+ }
6
+ //# sourceMappingURL=base64.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"base64.d.ts","sourceRoot":"","sources":["../../src/e2ee/base64.ts"],"names":[],"mappings":"AAiBA,wBAAgB,aAAa,CAAC,KAAK,EAAE,UAAU,GAAG,MAAM,CAoBvD;AAOD,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,UAAU,CA0BrD;AAED,qBAAa,kBAAmB,SAAQ,KAAK;gBAC/B,MAAM,EAAE,MAAM;CAI3B"}
@@ -0,0 +1,69 @@
1
+ const ALPHABET = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';
2
+ const LOOKUP = (() => {
3
+ const table = new Int8Array(256).fill(-1);
4
+ for (let i = 0; i < ALPHABET.length; i++)
5
+ table[ALPHABET.charCodeAt(i)] = i;
6
+ return table;
7
+ })();
8
+ export function bytesToBase64(bytes) {
9
+ let out = '';
10
+ let i = 0;
11
+ for (; i + 2 < bytes.length; i += 3) {
12
+ const n = (bytes[i] << 16) | (bytes[i + 1] << 8) | bytes[i + 2];
13
+ out +=
14
+ ALPHABET[(n >> 18) & 63] +
15
+ ALPHABET[(n >> 12) & 63] +
16
+ ALPHABET[(n >> 6) & 63] +
17
+ ALPHABET[n & 63];
18
+ }
19
+ const rem = bytes.length - i;
20
+ if (rem === 1) {
21
+ const n = bytes[i] << 16;
22
+ out += ALPHABET[(n >> 18) & 63] + ALPHABET[(n >> 12) & 63] + '==';
23
+ }
24
+ else if (rem === 2) {
25
+ const n = (bytes[i] << 16) | (bytes[i + 1] << 8);
26
+ out += ALPHABET[(n >> 18) & 63] + ALPHABET[(n >> 12) & 63] + ALPHABET[(n >> 6) & 63] + '=';
27
+ }
28
+ return out;
29
+ }
30
+ export function base64ToBytes(b64) {
31
+ let len = b64.length;
32
+ if (len % 4 !== 0)
33
+ throw new InvalidBase64Error('length is not a multiple of 4');
34
+ let pad = 0;
35
+ if (len > 0 && b64.charCodeAt(len - 1) === 61) {
36
+ pad++;
37
+ if (b64.charCodeAt(len - 2) === 61)
38
+ pad++;
39
+ }
40
+ const outLen = (len / 4) * 3 - pad;
41
+ const out = new Uint8Array(outLen);
42
+ let o = 0;
43
+ for (let i = 0; i < len; i += 4) {
44
+ const c0 = LOOKUP[b64.charCodeAt(i)];
45
+ const c1 = LOOKUP[b64.charCodeAt(i + 1)];
46
+ const isLast = i + 4 >= len;
47
+ const ch2 = b64.charCodeAt(i + 2);
48
+ const ch3 = b64.charCodeAt(i + 3);
49
+ const c2 = ch2 === 61 && isLast ? 0 : LOOKUP[ch2];
50
+ const c3 = ch3 === 61 && isLast ? 0 : LOOKUP[ch3];
51
+ if (c0 < 0 || c1 < 0 || c2 < 0 || c3 < 0)
52
+ throw new InvalidBase64Error('illegal character');
53
+ const n = (c0 << 18) | (c1 << 12) | (c2 << 6) | c3;
54
+ if (o < outLen)
55
+ out[o++] = (n >> 16) & 0xff;
56
+ if (o < outLen)
57
+ out[o++] = (n >> 8) & 0xff;
58
+ if (o < outLen)
59
+ out[o++] = n & 0xff;
60
+ }
61
+ return out;
62
+ }
63
+ export class InvalidBase64Error extends Error {
64
+ constructor(reason) {
65
+ super(`invalid base64: ${reason}`);
66
+ this.name = 'InvalidBase64Error';
67
+ }
68
+ }
69
+ //# sourceMappingURL=base64.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"base64.js","sourceRoot":"","sources":["../../src/e2ee/base64.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ import { type E2eeContext, type E2eeEnvelope, type E2eeKeyProvider, type RandomBytes } from './envelope.js';
2
+ export declare class CryptoEnvelopeService {
3
+ private readonly keys;
4
+ private readonly randomBytes;
5
+ constructor(keys: E2eeKeyProvider, randomBytes: RandomBytes);
6
+ seal<T>(plaintext: T, ctx: E2eeContext): Promise<E2eeEnvelope>;
7
+ open<T = unknown>(envelope: unknown, ctx: E2eeContext): Promise<T>;
8
+ }
9
+ //# sourceMappingURL=crypto-envelope.service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"crypto-envelope.service.d.ts","sourceRoot":"","sources":["../../src/e2ee/crypto-envelope.service.ts"],"names":[],"mappings":"AAYA,OAAO,EAaL,KAAK,WAAW,EAChB,KAAK,YAAY,EACjB,KAAK,eAAe,EACpB,KAAK,WAAW,EACjB,MAAM,eAAe,CAAC;AAEvB,qBAAa,qBAAqB;IAE9B,OAAO,CAAC,QAAQ,CAAC,IAAI;IACrB,OAAO,CAAC,QAAQ,CAAC,WAAW;gBADX,IAAI,EAAE,eAAe,EACrB,WAAW,EAAE,WAAW;IAQrC,IAAI,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,GAAG,EAAE,WAAW,GAAG,OAAO,CAAC,YAAY,CAAC;IA8B9D,IAAI,CAAC,CAAC,GAAG,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,EAAE,WAAW,GAAG,OAAO,CAAC,CAAC,CAAC;CAsDzE"}
@@ -0,0 +1,78 @@
1
+ import { xchacha20poly1305 } from '@noble/ciphers/chacha';
2
+ import { utf8ToBytes, bytesToUtf8 } from '@noble/hashes/utils';
3
+ import { buildAad } from './aad.js';
4
+ import { base64ToBytes, bytesToBase64, InvalidBase64Error } from './base64.js';
5
+ import { E2EE_ALG_XCHACHA20POLY1305, E2EE_ENVELOPE_VERSION, E2EE_KEY_BYTES, E2EE_NONCE_BYTES, E2eeAuthenticationError, E2eeError, E2eeInvalidKeyError, E2eeMalformedEnvelopeError, E2eeUnknownKeyError, E2eeUnsupportedAlgError, E2eeUnsupportedVersionError, isE2eeEnvelope, } from './envelope.js';
6
+ export class CryptoEnvelopeService {
7
+ constructor(keys, randomBytes) {
8
+ this.keys = keys;
9
+ this.randomBytes = randomBytes;
10
+ }
11
+ async seal(plaintext, ctx) {
12
+ const { kid, key } = await this.keys.resolveSealKey();
13
+ assertKeyLength(key);
14
+ const nonce = this.randomBytes(E2EE_NONCE_BYTES);
15
+ if (nonce.length !== E2EE_NONCE_BYTES) {
16
+ throw new E2eeError(`RNG returned ${nonce.length} bytes, expected ${E2EE_NONCE_BYTES}`);
17
+ }
18
+ const aad = buildAad(ctx, kid, E2EE_ENVELOPE_VERSION, E2EE_ALG_XCHACHA20POLY1305);
19
+ const pt = utf8ToBytes(JSON.stringify(plaintext));
20
+ const ct = xchacha20poly1305(key, nonce, aad).encrypt(pt);
21
+ return {
22
+ v: E2EE_ENVELOPE_VERSION,
23
+ kid,
24
+ alg: E2EE_ALG_XCHACHA20POLY1305,
25
+ nonce: bytesToBase64(nonce),
26
+ ct: bytesToBase64(ct),
27
+ };
28
+ }
29
+ async open(envelope, ctx) {
30
+ if (!isE2eeEnvelope(envelope)) {
31
+ throw new E2eeMalformedEnvelopeError('shape failed structural validation');
32
+ }
33
+ if (envelope.v !== E2EE_ENVELOPE_VERSION) {
34
+ throw new E2eeUnsupportedVersionError(envelope.v);
35
+ }
36
+ if (envelope.alg !== E2EE_ALG_XCHACHA20POLY1305) {
37
+ throw new E2eeUnsupportedAlgError(envelope.alg);
38
+ }
39
+ const key = (await this.keys.getKeyById(envelope.kid)) ?? undefined;
40
+ if (!key)
41
+ throw new E2eeUnknownKeyError(envelope.kid);
42
+ assertKeyLength(key);
43
+ let nonce;
44
+ let ct;
45
+ try {
46
+ nonce = base64ToBytes(envelope.nonce);
47
+ ct = base64ToBytes(envelope.ct);
48
+ }
49
+ catch (err) {
50
+ if (err instanceof InvalidBase64Error) {
51
+ throw new E2eeMalformedEnvelopeError(err.message);
52
+ }
53
+ throw err;
54
+ }
55
+ if (nonce.length !== E2EE_NONCE_BYTES) {
56
+ throw new E2eeMalformedEnvelopeError(`nonce must be ${E2EE_NONCE_BYTES} bytes, got ${nonce.length}`);
57
+ }
58
+ const aad = buildAad(ctx, envelope.kid, envelope.v, envelope.alg);
59
+ let pt;
60
+ try {
61
+ pt = xchacha20poly1305(key, nonce, aad).decrypt(ct);
62
+ }
63
+ catch {
64
+ throw new E2eeAuthenticationError();
65
+ }
66
+ try {
67
+ return JSON.parse(bytesToUtf8(pt));
68
+ }
69
+ catch {
70
+ throw new E2eeMalformedEnvelopeError('decrypted plaintext is not valid JSON');
71
+ }
72
+ }
73
+ }
74
+ function assertKeyLength(key) {
75
+ if (key.length !== E2EE_KEY_BYTES)
76
+ throw new E2eeInvalidKeyError(key.length);
77
+ }
78
+ //# sourceMappingURL=crypto-envelope.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"crypto-envelope.service.js","sourceRoot":"","sources":["../../src/e2ee/crypto-envelope.service.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,63 @@
1
+ export declare const E2EE_KEY_BYTES = 32;
2
+ export declare const E2EE_NONCE_BYTES = 24;
3
+ export declare const E2EE_ENVELOPE_VERSION = 1;
4
+ export type E2eeEnvelopeVersion = typeof E2EE_ENVELOPE_VERSION;
5
+ export declare const E2EE_ALG_XCHACHA20POLY1305 = "XC20P";
6
+ export type E2eeAlg = typeof E2EE_ALG_XCHACHA20POLY1305;
7
+ export interface E2eeRecipient {
8
+ kid: string;
9
+ wrappedKey: string;
10
+ }
11
+ export interface E2eeEnvelope {
12
+ v: E2eeEnvelopeVersion;
13
+ kid: string;
14
+ alg: E2eeAlg;
15
+ nonce: string;
16
+ ct: string;
17
+ recipients?: E2eeRecipient[];
18
+ }
19
+ export type E2eeLane = 'rpc' | 'push' | 'viewport';
20
+ export type E2eeDirection = 'pc-to-mobile' | 'mobile-to-pc';
21
+ export interface E2eeContext {
22
+ lane: E2eeLane;
23
+ direction: E2eeDirection;
24
+ instanceId: string;
25
+ routeKey: string;
26
+ seq?: number;
27
+ }
28
+ export interface E2eeKeyProvider {
29
+ resolveSealKey(): SealKey | Promise<SealKey>;
30
+ getKeyById(kid: string): KeyLookup | Promise<KeyLookup>;
31
+ }
32
+ export interface SealKey {
33
+ kid: string;
34
+ key: Uint8Array;
35
+ }
36
+ export type KeyLookup = Uint8Array | undefined | null;
37
+ export type RandomBytes = (n: number) => Uint8Array;
38
+ export declare class E2eeError extends Error {
39
+ constructor(message: string);
40
+ }
41
+ export declare class E2eeMalformedEnvelopeError extends E2eeError {
42
+ constructor(reason: string);
43
+ }
44
+ export declare class E2eeUnsupportedVersionError extends E2eeError {
45
+ readonly version: unknown;
46
+ constructor(version: unknown);
47
+ }
48
+ export declare class E2eeUnsupportedAlgError extends E2eeError {
49
+ readonly alg: unknown;
50
+ constructor(alg: unknown);
51
+ }
52
+ export declare class E2eeUnknownKeyError extends E2eeError {
53
+ readonly kid: string;
54
+ constructor(kid: string);
55
+ }
56
+ export declare class E2eeAuthenticationError extends E2eeError {
57
+ constructor();
58
+ }
59
+ export declare class E2eeInvalidKeyError extends E2eeError {
60
+ constructor(actual: number);
61
+ }
62
+ export declare function isE2eeEnvelope(value: unknown): value is E2eeEnvelope;
63
+ //# sourceMappingURL=envelope.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"envelope.d.ts","sourceRoot":"","sources":["../../src/e2ee/envelope.ts"],"names":[],"mappings":"AASA,eAAO,MAAM,cAAc,KAAK,CAAC;AAGjC,eAAO,MAAM,gBAAgB,KAAK,CAAC;AAGnC,eAAO,MAAM,qBAAqB,IAAI,CAAC;AACvC,MAAM,MAAM,mBAAmB,GAAG,OAAO,qBAAqB,CAAC;AAG/D,eAAO,MAAM,0BAA0B,UAAU,CAAC;AAClD,MAAM,MAAM,OAAO,GAAG,OAAO,0BAA0B,CAAC;AAOxD,MAAM,WAAW,aAAa;IAC5B,GAAG,EAAE,MAAM,CAAC;IAEZ,UAAU,EAAE,MAAM,CAAC;CACpB;AAOD,MAAM,WAAW,YAAY;IAE3B,CAAC,EAAE,mBAAmB,CAAC;IAEvB,GAAG,EAAE,MAAM,CAAC;IAEZ,GAAG,EAAE,OAAO,CAAC;IAEb,KAAK,EAAE,MAAM,CAAC;IAEd,EAAE,EAAE,MAAM,CAAC;IAEX,UAAU,CAAC,EAAE,aAAa,EAAE,CAAC;CAC9B;AAGD,MAAM,MAAM,QAAQ,GAAG,KAAK,GAAG,MAAM,GAAG,UAAU,CAAC;AAGnD,MAAM,MAAM,aAAa,GAAG,cAAc,GAAG,cAAc,CAAC;AAa5D,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,QAAQ,CAAC;IACf,SAAS,EAAE,aAAa,CAAC;IAEzB,UAAU,EAAE,MAAM,CAAC;IAEnB,QAAQ,EAAE,MAAM,CAAC;IAEjB,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAOD,MAAM,WAAW,eAAe;IAE9B,cAAc,IAAI,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAE7C,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC;CACzD;AAED,MAAM,WAAW,OAAO;IACtB,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,UAAU,CAAC;CACjB;AACD,MAAM,MAAM,SAAS,GAAG,UAAU,GAAG,SAAS,GAAG,IAAI,CAAC;AAGtD,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,EAAE,MAAM,KAAK,UAAU,CAAC;AAIpD,qBAAa,SAAU,SAAQ,KAAK;gBACtB,OAAO,EAAE,MAAM;CAI5B;AAED,qBAAa,0BAA2B,SAAQ,SAAS;gBAC3C,MAAM,EAAE,MAAM;CAI3B;AAED,qBAAa,2BAA4B,SAAQ,SAAS;aAC5B,OAAO,EAAE,OAAO;gBAAhB,OAAO,EAAE,OAAO;CAI7C;AAED,qBAAa,uBAAwB,SAAQ,SAAS;aACxB,GAAG,EAAE,OAAO;gBAAZ,GAAG,EAAE,OAAO;CAIzC;AAED,qBAAa,mBAAoB,SAAQ,SAAS;aACpB,GAAG,EAAE,MAAM;gBAAX,GAAG,EAAE,MAAM;CAIxC;AAED,qBAAa,uBAAwB,SAAQ,SAAS;;CAKrD;AAED,qBAAa,mBAAoB,SAAQ,SAAS;gBACpC,MAAM,EAAE,MAAM;CAI3B;AAQD,wBAAgB,cAAc,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,YAAY,CAcpE"}
@@ -0,0 +1,64 @@
1
+ export const E2EE_KEY_BYTES = 32;
2
+ export const E2EE_NONCE_BYTES = 24;
3
+ export const E2EE_ENVELOPE_VERSION = 1;
4
+ export const E2EE_ALG_XCHACHA20POLY1305 = 'XC20P';
5
+ export class E2eeError extends Error {
6
+ constructor(message) {
7
+ super(message);
8
+ this.name = 'E2eeError';
9
+ }
10
+ }
11
+ export class E2eeMalformedEnvelopeError extends E2eeError {
12
+ constructor(reason) {
13
+ super(`malformed e2ee envelope: ${reason}`);
14
+ this.name = 'E2eeMalformedEnvelopeError';
15
+ }
16
+ }
17
+ export class E2eeUnsupportedVersionError extends E2eeError {
18
+ constructor(version) {
19
+ super(`unsupported e2ee envelope version: ${String(version)}`);
20
+ this.version = version;
21
+ this.name = 'E2eeUnsupportedVersionError';
22
+ }
23
+ }
24
+ export class E2eeUnsupportedAlgError extends E2eeError {
25
+ constructor(alg) {
26
+ super(`unsupported e2ee alg: ${String(alg)}`);
27
+ this.alg = alg;
28
+ this.name = 'E2eeUnsupportedAlgError';
29
+ }
30
+ }
31
+ export class E2eeUnknownKeyError extends E2eeError {
32
+ constructor(kid) {
33
+ super(`no e2ee key for kid: ${kid}`);
34
+ this.kid = kid;
35
+ this.name = 'E2eeUnknownKeyError';
36
+ }
37
+ }
38
+ export class E2eeAuthenticationError extends E2eeError {
39
+ constructor() {
40
+ super('e2ee authentication failed');
41
+ this.name = 'E2eeAuthenticationError';
42
+ }
43
+ }
44
+ export class E2eeInvalidKeyError extends E2eeError {
45
+ constructor(actual) {
46
+ super(`e2ee key must be ${E2EE_KEY_BYTES} bytes, got ${actual}`);
47
+ this.name = 'E2eeInvalidKeyError';
48
+ }
49
+ }
50
+ export function isE2eeEnvelope(value) {
51
+ if (typeof value !== 'object' || value === null)
52
+ return false;
53
+ const e = value;
54
+ return (typeof e.v === 'number' &&
55
+ typeof e.kid === 'string' &&
56
+ e.kid.length > 0 &&
57
+ typeof e.alg === 'string' &&
58
+ typeof e.nonce === 'string' &&
59
+ e.nonce.length > 0 &&
60
+ typeof e.ct === 'string' &&
61
+ e.ct.length > 0 &&
62
+ (e.recipients === undefined || Array.isArray(e.recipients)));
63
+ }
64
+ //# sourceMappingURL=envelope.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"envelope.js","sourceRoot":"","sources":["../../src/e2ee/envelope.ts"],"names":[],"mappings":"AASA,MAAM,CAAC,MAAM,cAAc,GAAG,EAAE,CAAC;AAGjC,MAAM,CAAC,MAAM,gBAAgB,GAAG,EAAE,CAAC;AAGnC,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,CAAC;AAIvC,MAAM,CAAC,MAAM,0BAA0B,GAAG,OAAO,CAAC;AAqFlD,MAAM,OAAO,SAAU,SAAQ,KAAK;IAClC,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,WAAW,CAAC;IAC1B,CAAC;CACF;AAED,MAAM,OAAO,0BAA2B,SAAQ,SAAS;IACvD,YAAY,MAAc;QACxB,KAAK,CAAC,4BAA4B,MAAM,EAAE,CAAC,CAAC;QAC5C,IAAI,CAAC,IAAI,GAAG,4BAA4B,CAAC;IAC3C,CAAC;CACF;AAED,MAAM,OAAO,2BAA4B,SAAQ,SAAS;IACxD,YAA4B,OAAgB;QAC1C,KAAK,CAAC,sCAAsC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QADrC,YAAO,GAAP,OAAO,CAAS;QAE1C,IAAI,CAAC,IAAI,GAAG,6BAA6B,CAAC;IAC5C,CAAC;CACF;AAED,MAAM,OAAO,uBAAwB,SAAQ,SAAS;IACpD,YAA4B,GAAY;QACtC,KAAK,CAAC,yBAAyB,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QADpB,QAAG,GAAH,GAAG,CAAS;QAEtC,IAAI,CAAC,IAAI,GAAG,yBAAyB,CAAC;IACxC,CAAC;CACF;AAED,MAAM,OAAO,mBAAoB,SAAQ,SAAS;IAChD,YAA4B,GAAW;QACrC,KAAK,CAAC,wBAAwB,GAAG,EAAE,CAAC,CAAC;QADX,QAAG,GAAH,GAAG,CAAQ;QAErC,IAAI,CAAC,IAAI,GAAG,qBAAqB,CAAC;IACpC,CAAC;CACF;AAED,MAAM,OAAO,uBAAwB,SAAQ,SAAS;IACpD;QACE,KAAK,CAAC,4BAA4B,CAAC,CAAC;QACpC,IAAI,CAAC,IAAI,GAAG,yBAAyB,CAAC;IACxC,CAAC;CACF;AAED,MAAM,OAAO,mBAAoB,SAAQ,SAAS;IAChD,YAAY,MAAc;QACxB,KAAK,CAAC,oBAAoB,cAAc,eAAe,MAAM,EAAE,CAAC,CAAC;QACjE,IAAI,CAAC,IAAI,GAAG,qBAAqB,CAAC;IACpC,CAAC;CACF;AAQD,MAAM,UAAU,cAAc,CAAC,KAAc;IAC3C,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI;QAAE,OAAO,KAAK,CAAC;IAC9D,MAAM,CAAC,GAAG,KAAgC,CAAC;IAC3C,OAAO,CACL,OAAO,CAAC,CAAC,CAAC,KAAK,QAAQ;QACvB,OAAO,CAAC,CAAC,GAAG,KAAK,QAAQ;QACzB,CAAC,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC;QAChB,OAAO,CAAC,CAAC,GAAG,KAAK,QAAQ;QACzB,OAAO,CAAC,CAAC,KAAK,KAAK,QAAQ;QAC3B,CAAC,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC;QAClB,OAAO,CAAC,CAAC,EAAE,KAAK,QAAQ;QACxB,CAAC,CAAC,EAAE,CAAC,MAAM,GAAG,CAAC;QACf,CAAC,CAAC,CAAC,UAAU,KAAK,SAAS,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAC5D,CAAC;AACJ,CAAC"}
@@ -0,0 +1,10 @@
1
+ export { E2EE_KEY_BYTES, E2EE_NONCE_BYTES, E2EE_ENVELOPE_VERSION, E2EE_ALG_XCHACHA20POLY1305, E2eeError, E2eeMalformedEnvelopeError, E2eeUnsupportedVersionError, E2eeUnsupportedAlgError, E2eeUnknownKeyError, E2eeAuthenticationError, E2eeInvalidKeyError, isE2eeEnvelope, type E2eeEnvelope, type E2eeEnvelopeVersion, type E2eeAlg, type E2eeRecipient, type E2eeLane, type E2eeDirection, type E2eeContext, type E2eeKeyProvider, type SealKey, type KeyLookup, type RandomBytes, } from './envelope.js';
2
+ export { buildAad } from './aad.js';
3
+ export { bytesToBase64, base64ToBytes, InvalidBase64Error } from './base64.js';
4
+ export { CryptoEnvelopeService } from './crypto-envelope.service.js';
5
+ export { X25519_PRIVATE_KEY_BYTES, X25519_PUBLIC_KEY_BYTES, E2EE_KID_BYTES, deriveKid, generateX25519KeyPair, fromX25519PrivateKey, type E2eeKeyPair, } from './keypair.js';
6
+ export { E2EE_SHARED_KEY_BYTES, E2EE_HKDF_INFO, E2EE_HKDF_SALT, PAIRING_SECRET_BYTES, PAIRING_MAC_BYTES, deriveSharedKey, buildPairingTranscript, computePairingMac, verifyPairingMac, type PairingTranscriptInput, } from './key-exchange.js';
7
+ export { isE2eeVerified, reconcilePeerKey, markVerifiedViaSafetyNumber, type E2eeTrustStatus, type E2eeVerificationMethod, type E2eeAdoptionMethod, type E2eeTrustRecord, type IncomingPeerKey, } from './trust.js';
8
+ export { E2EE_SAFETY_NUMBER_GROUPS, deriveSafetyNumber } from './safety-number.js';
9
+ export { E2EE_NEGOTIATION_VERSION, isE2eeCapability, isCapable, negotiateE2ee, buildE2eeCapability, type E2eeCapability, type E2eeNegotiationMode, type E2eeNegotiationReason, type E2eeNegotiationResult, } from './negotiation.js';
10
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/e2ee/index.ts"],"names":[],"mappings":"AAGA,OAAO,EACL,cAAc,EACd,gBAAgB,EAChB,qBAAqB,EACrB,0BAA0B,EAC1B,SAAS,EACT,0BAA0B,EAC1B,2BAA2B,EAC3B,uBAAuB,EACvB,mBAAmB,EACnB,uBAAuB,EACvB,mBAAmB,EACnB,cAAc,EACd,KAAK,YAAY,EACjB,KAAK,mBAAmB,EACxB,KAAK,OAAO,EACZ,KAAK,aAAa,EAClB,KAAK,QAAQ,EACb,KAAK,aAAa,EAClB,KAAK,WAAW,EAChB,KAAK,eAAe,EACpB,KAAK,OAAO,EACZ,KAAK,SAAS,EACd,KAAK,WAAW,GACjB,MAAM,eAAe,CAAC;AAEvB,OAAO,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AACpC,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAC/E,OAAO,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;AACrE,OAAO,EACL,wBAAwB,EACxB,uBAAuB,EACvB,cAAc,EACd,SAAS,EACT,qBAAqB,EACrB,oBAAoB,EACpB,KAAK,WAAW,GACjB,MAAM,cAAc,CAAC;AACtB,OAAO,EACL,qBAAqB,EACrB,cAAc,EACd,cAAc,EACd,oBAAoB,EACpB,iBAAiB,EACjB,eAAe,EACf,sBAAsB,EACtB,iBAAiB,EACjB,gBAAgB,EAChB,KAAK,sBAAsB,GAC5B,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACL,cAAc,EACd,gBAAgB,EAChB,2BAA2B,EAC3B,KAAK,eAAe,EACpB,KAAK,sBAAsB,EAC3B,KAAK,kBAAkB,EACvB,KAAK,eAAe,EACpB,KAAK,eAAe,GACrB,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,yBAAyB,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AACnF,OAAO,EACL,wBAAwB,EACxB,gBAAgB,EAChB,SAAS,EACT,aAAa,EACb,mBAAmB,EACnB,KAAK,cAAc,EACnB,KAAK,mBAAmB,EACxB,KAAK,qBAAqB,EAC1B,KAAK,qBAAqB,GAC3B,MAAM,kBAAkB,CAAC"}
@@ -0,0 +1,10 @@
1
+ export { E2EE_KEY_BYTES, E2EE_NONCE_BYTES, E2EE_ENVELOPE_VERSION, E2EE_ALG_XCHACHA20POLY1305, E2eeError, E2eeMalformedEnvelopeError, E2eeUnsupportedVersionError, E2eeUnsupportedAlgError, E2eeUnknownKeyError, E2eeAuthenticationError, E2eeInvalidKeyError, isE2eeEnvelope, } from './envelope.js';
2
+ export { buildAad } from './aad.js';
3
+ export { bytesToBase64, base64ToBytes, InvalidBase64Error } from './base64.js';
4
+ export { CryptoEnvelopeService } from './crypto-envelope.service.js';
5
+ export { X25519_PRIVATE_KEY_BYTES, X25519_PUBLIC_KEY_BYTES, E2EE_KID_BYTES, deriveKid, generateX25519KeyPair, fromX25519PrivateKey, } from './keypair.js';
6
+ export { E2EE_SHARED_KEY_BYTES, E2EE_HKDF_INFO, E2EE_HKDF_SALT, PAIRING_SECRET_BYTES, PAIRING_MAC_BYTES, deriveSharedKey, buildPairingTranscript, computePairingMac, verifyPairingMac, } from './key-exchange.js';
7
+ export { isE2eeVerified, reconcilePeerKey, markVerifiedViaSafetyNumber, } from './trust.js';
8
+ export { E2EE_SAFETY_NUMBER_GROUPS, deriveSafetyNumber } from './safety-number.js';
9
+ export { E2EE_NEGOTIATION_VERSION, isE2eeCapability, isCapable, negotiateE2ee, buildE2eeCapability, } from './negotiation.js';
10
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/e2ee/index.ts"],"names":[],"mappings":"AAGA,OAAO,EACL,cAAc,EACd,gBAAgB,EAChB,qBAAqB,EACrB,0BAA0B,EAC1B,SAAS,EACT,0BAA0B,EAC1B,2BAA2B,EAC3B,uBAAuB,EACvB,mBAAmB,EACnB,uBAAuB,EACvB,mBAAmB,EACnB,cAAc,GAYf,MAAM,eAAe,CAAC;AAEvB,OAAO,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AACpC,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAC/E,OAAO,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;AACrE,OAAO,EACL,wBAAwB,EACxB,uBAAuB,EACvB,cAAc,EACd,SAAS,EACT,qBAAqB,EACrB,oBAAoB,GAErB,MAAM,cAAc,CAAC;AACtB,OAAO,EACL,qBAAqB,EACrB,cAAc,EACd,cAAc,EACd,oBAAoB,EACpB,iBAAiB,EACjB,eAAe,EACf,sBAAsB,EACtB,iBAAiB,EACjB,gBAAgB,GAEjB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACL,cAAc,EACd,gBAAgB,EAChB,2BAA2B,GAM5B,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,yBAAyB,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AACnF,OAAO,EACL,wBAAwB,EACxB,gBAAgB,EAChB,SAAS,EACT,aAAa,EACb,mBAAmB,GAKpB,MAAM,kBAAkB,CAAC"}
@@ -0,0 +1,17 @@
1
+ export declare const E2EE_SHARED_KEY_BYTES = 32;
2
+ export declare const E2EE_HKDF_INFO = "devchain-e2ee-v1";
3
+ export declare const E2EE_HKDF_SALT = "devchain/e2ee/hkdf/salt/v1";
4
+ export declare const PAIRING_SECRET_BYTES = 32;
5
+ export declare const PAIRING_MAC_BYTES = 32;
6
+ export declare function deriveSharedKey(privateKey: Uint8Array, peerPublicKey: Uint8Array): Uint8Array;
7
+ export interface PairingTranscriptInput {
8
+ pcPublicKey: Uint8Array;
9
+ pcKid: string;
10
+ mobilePublicKey: Uint8Array;
11
+ mobileKid: string;
12
+ channelId: string;
13
+ }
14
+ export declare function buildPairingTranscript(input: PairingTranscriptInput): Uint8Array;
15
+ export declare function computePairingMac(pairingSecret: Uint8Array, transcript: Uint8Array): Uint8Array;
16
+ export declare function verifyPairingMac(pairingSecret: Uint8Array, transcript: Uint8Array, mac: Uint8Array): boolean;
17
+ //# sourceMappingURL=key-exchange.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"key-exchange.d.ts","sourceRoot":"","sources":["../../src/e2ee/key-exchange.ts"],"names":[],"mappings":"AAgCA,eAAO,MAAM,qBAAqB,KAAK,CAAC;AAMxC,eAAO,MAAM,cAAc,qBAAqB,CAAC;AAOjD,eAAO,MAAM,cAAc,+BAA+B,CAAC;AAG3D,eAAO,MAAM,oBAAoB,KAAK,CAAC;AAGvC,eAAO,MAAM,iBAAiB,KAAK,CAAC;AAYpC,wBAAgB,eAAe,CAAC,UAAU,EAAE,UAAU,EAAE,aAAa,EAAE,UAAU,GAAG,UAAU,CAmB7F;AAGD,MAAM,WAAW,sBAAsB;IAErC,WAAW,EAAE,UAAU,CAAC;IAExB,KAAK,EAAE,MAAM,CAAC;IAEd,eAAe,EAAE,UAAU,CAAC;IAE5B,SAAS,EAAE,MAAM,CAAC;IAElB,SAAS,EAAE,MAAM,CAAC;CACnB;AASD,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,sBAAsB,GAAG,UAAU,CAShF;AAOD,wBAAgB,iBAAiB,CAAC,aAAa,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,GAAG,UAAU,CAK/F;AAQD,wBAAgB,gBAAgB,CAC9B,aAAa,EAAE,UAAU,EACzB,UAAU,EAAE,UAAU,EACtB,GAAG,EAAE,UAAU,GACd,OAAO,CAQT"}