devchain-cli 0.24.0 → 0.24.2

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 (432) hide show
  1. package/README.md +1 -4
  2. package/dist/build-info.json +2 -2
  3. package/dist/cli.js +66 -11
  4. package/dist/host-install/devchain-host-bootstrap.tgz +0 -0
  5. package/dist/host-install/pins.json +31 -2
  6. package/dist/lib/exclusive-run.js +51 -3
  7. package/dist/lib/git-owner.js +284 -0
  8. package/dist/lib/host-install.js +19 -151
  9. package/dist/lib/local-api.js +175 -0
  10. package/dist/server/common/config/env.config.d.ts +3 -0
  11. package/dist/server/common/config/env.config.js +1 -0
  12. package/dist/server/common/config/env.config.js.map +1 -1
  13. package/dist/server/common/config/host-image.json +3 -3
  14. package/dist/server/common/constants/syncthing-markers.d.ts +1 -0
  15. package/dist/server/common/constants/syncthing-markers.js +6 -1
  16. package/dist/server/common/constants/syncthing-markers.js.map +1 -1
  17. package/dist/server/common/filesystem/vm-home-path.d.ts +11 -0
  18. package/dist/server/common/filesystem/vm-home-path.js +48 -0
  19. package/dist/server/common/filesystem/vm-home-path.js.map +1 -0
  20. package/dist/server/common/process-ids-env.d.ts +1 -0
  21. package/dist/server/common/process-ids-env.js +13 -0
  22. package/dist/server/common/process-ids-env.js.map +1 -0
  23. package/dist/server/common/test/api-test-app.d.ts +12 -0
  24. package/dist/server/common/test/api-test-app.js +76 -0
  25. package/dist/server/common/test/api-test-app.js.map +1 -0
  26. package/dist/server/common/test/app-bootstrap.helper.js +8 -1
  27. package/dist/server/common/test/app-bootstrap.helper.js.map +1 -1
  28. package/dist/server/common/test/fake-bootstrap.server.js +3 -2
  29. package/dist/server/common/test/fake-bootstrap.server.js.map +1 -1
  30. package/dist/server/common/test/fake-docker-engine.server.d.ts +24 -6
  31. package/dist/server/common/test/fake-docker-engine.server.js +123 -25
  32. package/dist/server/common/test/fake-docker-engine.server.js.map +1 -1
  33. package/dist/server/common/test/fake-proxmox.server.js +4 -4
  34. package/dist/server/common/test/fake-ssh.server.js +6 -6
  35. package/dist/server/common/test/fake-ssh.server.js.map +1 -1
  36. package/dist/server/common/test/test-database.helper.d.ts +6 -0
  37. package/dist/server/common/test/test-database.helper.js +29 -0
  38. package/dist/server/common/test/test-database.helper.js.map +1 -0
  39. package/dist/server/modules/cloud-tunnel/services/mobile-chat-rpc.service.d.ts +1 -0
  40. package/dist/server/modules/cloud-tunnel/services/mobile-chat-rpc.service.js +9 -3
  41. package/dist/server/modules/cloud-tunnel/services/mobile-chat-rpc.service.js.map +1 -1
  42. package/dist/server/modules/cloud-tunnel/services/mobile-transcript-projection.d.ts +6 -0
  43. package/dist/server/modules/cloud-tunnel/services/mobile-transcript-projection.js +88 -0
  44. package/dist/server/modules/cloud-tunnel/services/mobile-transcript-projection.js.map +1 -0
  45. package/dist/server/modules/cloud-tunnel/services/tunnel-event-forwarder.service.js +7 -1
  46. package/dist/server/modules/cloud-tunnel/services/tunnel-event-forwarder.service.js.map +1 -1
  47. package/dist/server/modules/core/controllers/docker-archive.d.ts +9 -2
  48. package/dist/server/modules/core/controllers/docker-archive.js +22 -6
  49. package/dist/server/modules/core/controllers/docker-archive.js.map +1 -1
  50. package/dist/server/modules/core/controllers/docker-engine.client.d.ts +2 -1
  51. package/dist/server/modules/core/controllers/docker-engine.client.js +57 -4
  52. package/dist/server/modules/core/controllers/docker-engine.client.js.map +1 -1
  53. package/dist/server/modules/core/controllers/docker-image-metadata.d.ts +248 -0
  54. package/dist/server/modules/core/controllers/docker-image-metadata.js +161 -0
  55. package/dist/server/modules/core/controllers/docker-image-metadata.js.map +1 -0
  56. package/dist/server/modules/core/controllers/docker-settings.d.ts +13 -2
  57. package/dist/server/modules/core/controllers/docker-settings.js +49 -11
  58. package/dist/server/modules/core/controllers/docker-settings.js.map +1 -1
  59. package/dist/server/modules/core/controllers/host-user-identity.d.ts +34 -0
  60. package/dist/server/modules/core/controllers/host-user-identity.js +23 -0
  61. package/dist/server/modules/core/controllers/host-user-identity.js.map +1 -0
  62. package/dist/server/modules/core/controllers/runtime.controller.d.ts +11 -4
  63. package/dist/server/modules/core/controllers/runtime.controller.js +2 -0
  64. package/dist/server/modules/core/controllers/runtime.controller.js.map +1 -1
  65. package/dist/server/modules/file-sync/build-exclusion-suggestions.d.ts +15 -0
  66. package/dist/server/modules/file-sync/build-exclusion-suggestions.js +402 -0
  67. package/dist/server/modules/file-sync/build-exclusion-suggestions.js.map +1 -0
  68. package/dist/server/modules/file-sync/file-sync-auto-fix.dto.d.ts +102 -0
  69. package/dist/server/modules/file-sync/file-sync-auto-fix.dto.js +22 -0
  70. package/dist/server/modules/file-sync/file-sync-auto-fix.dto.js.map +1 -0
  71. package/dist/server/modules/file-sync/file-sync-auto-fix.store.d.ts +12 -0
  72. package/dist/server/modules/file-sync/file-sync-auto-fix.store.js +73 -0
  73. package/dist/server/modules/file-sync/file-sync-auto-fix.store.js.map +1 -0
  74. package/dist/server/modules/file-sync/file-sync-conflicts.d.ts +3 -0
  75. package/dist/server/modules/file-sync/file-sync-conflicts.js +191 -0
  76. package/dist/server/modules/file-sync/file-sync-conflicts.js.map +1 -0
  77. package/dist/server/modules/file-sync/file-sync-ignores.store.d.ts +5 -1
  78. package/dist/server/modules/file-sync/file-sync-ignores.store.js +39 -8
  79. package/dist/server/modules/file-sync/file-sync-ignores.store.js.map +1 -1
  80. package/dist/server/modules/file-sync/file-sync.controller.d.ts +1 -3
  81. package/dist/server/modules/file-sync/file-sync.controller.js +5 -14
  82. package/dist/server/modules/file-sync/file-sync.controller.js.map +1 -1
  83. package/dist/server/modules/file-sync/file-sync.dto.d.ts +220 -1
  84. package/dist/server/modules/file-sync/file-sync.dto.js +70 -4
  85. package/dist/server/modules/file-sync/file-sync.dto.js.map +1 -1
  86. package/dist/server/modules/file-sync/file-sync.module.js +16 -1
  87. package/dist/server/modules/file-sync/file-sync.module.js.map +1 -1
  88. package/dist/server/modules/file-sync/file-sync.service.d.ts +20 -5
  89. package/dist/server/modules/file-sync/file-sync.service.js +173 -37
  90. package/dist/server/modules/file-sync/file-sync.service.js.map +1 -1
  91. package/dist/server/modules/file-sync/git-guard.dto.d.ts +61 -0
  92. package/dist/server/modules/file-sync/git-guard.dto.js +26 -0
  93. package/dist/server/modules/file-sync/git-guard.dto.js.map +1 -0
  94. package/dist/server/modules/file-sync/home-git-guard.service.d.ts +4 -2
  95. package/dist/server/modules/file-sync/home-git-guard.service.js +50 -25
  96. package/dist/server/modules/file-sync/home-git-guard.service.js.map +1 -1
  97. package/dist/server/modules/file-sync/host-git-guard.controller.d.ts +10 -0
  98. package/dist/server/modules/file-sync/host-git-guard.controller.js +64 -0
  99. package/dist/server/modules/file-sync/host-git-guard.controller.js.map +1 -0
  100. package/dist/server/modules/file-sync/host-git-index.controller.d.ts +9 -0
  101. package/dist/server/modules/file-sync/host-git-index.controller.js +67 -0
  102. package/dist/server/modules/file-sync/host-git-index.controller.js.map +1 -0
  103. package/dist/server/modules/file-sync/host-sync.controller.d.ts +15 -2
  104. package/dist/server/modules/file-sync/host-sync.controller.js +122 -14
  105. package/dist/server/modules/file-sync/host-sync.controller.js.map +1 -1
  106. package/dist/server/modules/file-sync/ignore-pattern-matcher.d.ts +30 -0
  107. package/dist/server/modules/file-sync/ignore-pattern-matcher.js +183 -0
  108. package/dist/server/modules/file-sync/ignore-pattern-matcher.js.map +1 -0
  109. package/dist/server/modules/file-sync/project-repository.d.ts +2 -0
  110. package/dist/server/modules/file-sync/project-repository.js +20 -0
  111. package/dist/server/modules/file-sync/project-repository.js.map +1 -0
  112. package/dist/server/modules/file-sync/sync-chown.dto.d.ts +99 -0
  113. package/dist/server/modules/file-sync/sync-chown.dto.js +46 -0
  114. package/dist/server/modules/file-sync/sync-chown.dto.js.map +1 -0
  115. package/dist/server/modules/file-sync/sync-chown.service.d.ts +12 -0
  116. package/dist/server/modules/file-sync/sync-chown.service.js +230 -0
  117. package/dist/server/modules/file-sync/sync-chown.service.js.map +1 -0
  118. package/dist/server/modules/file-sync/sync-path-inspection.dto.d.ts +626 -0
  119. package/dist/server/modules/file-sync/sync-path-inspection.dto.js +108 -0
  120. package/dist/server/modules/file-sync/sync-path-inspection.dto.js.map +1 -0
  121. package/dist/server/modules/file-sync/sync-path-inspector.d.ts +12 -0
  122. package/dist/server/modules/file-sync/sync-path-inspector.js +413 -0
  123. package/dist/server/modules/file-sync/sync-path-inspector.js.map +1 -0
  124. package/dist/server/modules/file-sync/syncthing-rest.client.d.ts +1 -1
  125. package/dist/server/modules/file-sync/syncthing-rest.client.js +9 -4
  126. package/dist/server/modules/file-sync/syncthing-rest.client.js.map +1 -1
  127. package/dist/server/modules/file-sync/testing/fake-file-sync.service.d.ts +28 -5
  128. package/dist/server/modules/file-sync/testing/fake-file-sync.service.js +68 -5
  129. package/dist/server/modules/file-sync/testing/fake-file-sync.service.js.map +1 -1
  130. package/dist/server/modules/file-sync/translate-git-ignore-rule.d.ts +3 -0
  131. package/dist/server/modules/file-sync/translate-git-ignore-rule.js +30 -0
  132. package/dist/server/modules/file-sync/translate-git-ignore-rule.js.map +1 -0
  133. package/dist/server/modules/hooks/dtos/hook-event.dto.d.ts +86 -0
  134. package/dist/server/modules/hooks/dtos/hook-event.dto.js +15 -1
  135. package/dist/server/modules/hooks/dtos/hook-event.dto.js.map +1 -1
  136. package/dist/server/modules/hooks/services/hooks-config.service.js +29 -0
  137. package/dist/server/modules/hooks/services/hooks-config.service.js.map +1 -1
  138. package/dist/server/modules/hooks/services/hooks.service.d.ts +5 -1
  139. package/dist/server/modules/hooks/services/hooks.service.js +27 -5
  140. package/dist/server/modules/hooks/services/hooks.service.js.map +1 -1
  141. package/dist/server/modules/hooks/services/pending-ask-user-question.service.d.ts +2 -2
  142. package/dist/server/modules/hooks/services/pending-ask-user-question.service.js +9 -12
  143. package/dist/server/modules/hooks/services/pending-ask-user-question.service.js.map +1 -1
  144. package/dist/server/modules/mcp/services/handlers/skill-tools.js +2 -2
  145. package/dist/server/modules/mcp/services/handlers/skill-tools.js.map +1 -1
  146. package/dist/server/modules/metrics/services/metrics.service.js +1 -1
  147. package/dist/server/modules/metrics/services/metrics.service.js.map +1 -1
  148. package/dist/server/modules/providers/adapters/claude.adapter.d.ts +3 -1
  149. package/dist/server/modules/providers/adapters/claude.adapter.js +4 -1
  150. package/dist/server/modules/providers/adapters/claude.adapter.js.map +1 -1
  151. package/dist/server/modules/remotes/connect-choices.controller.d.ts +9 -0
  152. package/dist/server/modules/remotes/connect-choices.controller.js +54 -0
  153. package/dist/server/modules/remotes/connect-choices.controller.js.map +1 -0
  154. package/dist/server/modules/remotes/connect-choices.dto.d.ts +52 -0
  155. package/dist/server/modules/remotes/connect-choices.dto.js +19 -0
  156. package/dist/server/modules/remotes/connect-choices.dto.js.map +1 -0
  157. package/dist/server/modules/remotes/connect-choices.store.d.ts +12 -0
  158. package/dist/server/modules/remotes/connect-choices.store.js +95 -0
  159. package/dist/server/modules/remotes/connect-choices.store.js.map +1 -0
  160. package/dist/server/modules/remotes/controllers/remotes.controller.d.ts +3 -0
  161. package/dist/server/modules/remotes/controllers/remotes.controller.js +9 -1
  162. package/dist/server/modules/remotes/controllers/remotes.controller.js.map +1 -1
  163. package/dist/server/modules/remotes/docker/docker-copy-back.d.ts +1 -0
  164. package/dist/server/modules/remotes/docker/docker-copy-back.js +70 -31
  165. package/dist/server/modules/remotes/docker/docker-copy-back.js.map +1 -1
  166. package/dist/server/modules/remotes/docker/docker-handoff.d.ts +5 -3
  167. package/dist/server/modules/remotes/docker/docker-handoff.js +221 -53
  168. package/dist/server/modules/remotes/docker/docker-handoff.js.map +1 -1
  169. package/dist/server/modules/remotes/docker/docker-handoff.store.d.ts +5 -0
  170. package/dist/server/modules/remotes/docker/docker-handoff.store.js.map +1 -1
  171. package/dist/server/modules/remotes/docker/docker-plan-fit.d.ts +4 -1
  172. package/dist/server/modules/remotes/docker/docker-plan-fit.js +19 -6
  173. package/dist/server/modules/remotes/docker/docker-plan-fit.js.map +1 -1
  174. package/dist/server/modules/remotes/docker/docker-plan-policy.d.ts +6 -2
  175. package/dist/server/modules/remotes/docker/docker-plan-policy.js +191 -38
  176. package/dist/server/modules/remotes/docker/docker-plan-policy.js.map +1 -1
  177. package/dist/server/modules/remotes/docker/docker-plan-source.service.d.ts +55 -6
  178. package/dist/server/modules/remotes/docker/docker-plan-source.service.js +284 -52
  179. package/dist/server/modules/remotes/docker/docker-plan-source.service.js.map +1 -1
  180. package/dist/server/modules/remotes/docker/docker-plan.controller.d.ts +2 -1
  181. package/dist/server/modules/remotes/docker/docker-plan.controller.js +15 -1
  182. package/dist/server/modules/remotes/docker/docker-plan.controller.js.map +1 -1
  183. package/dist/server/modules/remotes/docker/docker-plan.dto.d.ts +47 -1
  184. package/dist/server/modules/remotes/docker/docker-plan.dto.js +1 -0
  185. package/dist/server/modules/remotes/docker/docker-plan.dto.js.map +1 -1
  186. package/dist/server/modules/remotes/docker/docker-plan.service.d.ts +15 -6
  187. package/dist/server/modules/remotes/docker/docker-plan.service.js +83 -20
  188. package/dist/server/modules/remotes/docker/docker-plan.service.js.map +1 -1
  189. package/dist/server/modules/remotes/docker/docker-project-compose.d.ts +7 -0
  190. package/dist/server/modules/remotes/docker/docker-project-compose.js +30 -0
  191. package/dist/server/modules/remotes/docker/docker-project-compose.js.map +1 -0
  192. package/dist/server/modules/remotes/dtos/remote.dto.d.ts +2 -0
  193. package/dist/server/modules/remotes/dtos/remote.dto.js.map +1 -1
  194. package/dist/server/modules/remotes/git-owner.store.d.ts +13 -0
  195. package/dist/server/modules/remotes/git-owner.store.js +69 -0
  196. package/dist/server/modules/remotes/git-owner.store.js.map +1 -0
  197. package/dist/server/modules/remotes/host/host-docker.controller.d.ts +14 -1
  198. package/dist/server/modules/remotes/host/host-docker.controller.js +28 -9
  199. package/dist/server/modules/remotes/host/host-docker.controller.js.map +1 -1
  200. package/dist/server/modules/remotes/host/host-docker.dto.d.ts +640 -3
  201. package/dist/server/modules/remotes/host/host-docker.dto.js +66 -9
  202. package/dist/server/modules/remotes/host/host-docker.dto.js.map +1 -1
  203. package/dist/server/modules/remotes/host/host-docker.service.d.ts +18 -6
  204. package/dist/server/modules/remotes/host/host-docker.service.js +184 -81
  205. package/dist/server/modules/remotes/host/host-docker.service.js.map +1 -1
  206. package/dist/server/modules/remotes/host/host-ipv4-routes.d.ts +4 -0
  207. package/dist/server/modules/remotes/host/host-ipv4-routes.js +43 -0
  208. package/dist/server/modules/remotes/host/host-ipv4-routes.js.map +1 -0
  209. package/dist/server/modules/remotes/host-image.d.ts +1 -1
  210. package/dist/server/modules/remotes/host-image.js +1 -1
  211. package/dist/server/modules/remotes/host-install/host-install-block.d.ts +1 -0
  212. package/dist/server/modules/remotes/host-install/host-install-block.js +76 -2
  213. package/dist/server/modules/remotes/host-install/host-install-block.js.map +1 -1
  214. package/dist/server/modules/remotes/host-install/host-install.service.d.ts +0 -1
  215. package/dist/server/modules/remotes/host-install/host-install.service.js +9 -26
  216. package/dist/server/modules/remotes/host-install/host-install.service.js.map +1 -1
  217. package/dist/server/modules/remotes/operations/attach.operation.d.ts +5 -1
  218. package/dist/server/modules/remotes/operations/attach.operation.js +41 -5
  219. package/dist/server/modules/remotes/operations/attach.operation.js.map +1 -1
  220. package/dist/server/modules/remotes/operations/claim.operation.d.ts +1 -0
  221. package/dist/server/modules/remotes/operations/claim.operation.js +6 -1
  222. package/dist/server/modules/remotes/operations/claim.operation.js.map +1 -1
  223. package/dist/server/modules/remotes/operations/detach.operation.d.ts +4 -1
  224. package/dist/server/modules/remotes/operations/detach.operation.js +10 -2
  225. package/dist/server/modules/remotes/operations/detach.operation.js.map +1 -1
  226. package/dist/server/modules/remotes/operations/docker-import-inventory.store.d.ts +10 -0
  227. package/dist/server/modules/remotes/operations/docker-import-inventory.store.js +17 -0
  228. package/dist/server/modules/remotes/operations/docker-import-inventory.store.js.map +1 -1
  229. package/dist/server/modules/remotes/operations/file-sync-handoff.d.ts +30 -2
  230. package/dist/server/modules/remotes/operations/file-sync-handoff.js +498 -57
  231. package/dist/server/modules/remotes/operations/file-sync-handoff.js.map +1 -1
  232. package/dist/server/modules/remotes/operations/force-sync.operation.d.ts +39 -0
  233. package/dist/server/modules/remotes/operations/force-sync.operation.js +177 -0
  234. package/dist/server/modules/remotes/operations/force-sync.operation.js.map +1 -0
  235. package/dist/server/modules/remotes/operations/git-owner.dto.d.ts +83 -0
  236. package/dist/server/modules/remotes/operations/git-owner.dto.js +25 -0
  237. package/dist/server/modules/remotes/operations/git-owner.dto.js.map +1 -0
  238. package/dist/server/modules/remotes/operations/git-owner.operation.d.ts +35 -0
  239. package/dist/server/modules/remotes/operations/git-owner.operation.js +216 -0
  240. package/dist/server/modules/remotes/operations/git-owner.operation.js.map +1 -0
  241. package/dist/server/modules/remotes/operations/remote-host.client.d.ts +72 -8
  242. package/dist/server/modules/remotes/operations/remote-host.client.js +162 -28
  243. package/dist/server/modules/remotes/operations/remote-host.client.js.map +1 -1
  244. package/dist/server/modules/remotes/operations/remote-operation.dto.d.ts +19 -0
  245. package/dist/server/modules/remotes/operations/remote-operation.dto.js +5 -1
  246. package/dist/server/modules/remotes/operations/remote-operation.dto.js.map +1 -1
  247. package/dist/server/modules/remotes/operations/remote-operation.runner.d.ts +3 -1
  248. package/dist/server/modules/remotes/operations/remote-operation.runner.js +59 -21
  249. package/dist/server/modules/remotes/operations/remote-operation.runner.js.map +1 -1
  250. package/dist/server/modules/remotes/operations/remote-operation.types.d.ts +4 -1
  251. package/dist/server/modules/remotes/operations/remote-operation.types.js +4 -2
  252. package/dist/server/modules/remotes/operations/remote-operation.types.js.map +1 -1
  253. package/dist/server/modules/remotes/operations/remote-operations.controller.d.ts +5 -0
  254. package/dist/server/modules/remotes/operations/remote-operations.controller.js +56 -0
  255. package/dist/server/modules/remotes/operations/remote-operations.controller.js.map +1 -1
  256. package/dist/server/modules/remotes/operations/remote-operations.service.d.ts +16 -1
  257. package/dist/server/modules/remotes/operations/remote-operations.service.js +155 -5
  258. package/dist/server/modules/remotes/operations/remote-operations.service.js.map +1 -1
  259. package/dist/server/modules/remotes/operations/update-logins.operation.d.ts +1 -3
  260. package/dist/server/modules/remotes/operations/update-logins.operation.js +3 -18
  261. package/dist/server/modules/remotes/operations/update-logins.operation.js.map +1 -1
  262. package/dist/server/modules/remotes/ports/remote-health.port.d.ts +2 -0
  263. package/dist/server/modules/remotes/ports/remote-health.port.js.map +1 -1
  264. package/dist/server/modules/remotes/remotes.module.js +18 -0
  265. package/dist/server/modules/remotes/remotes.module.js.map +1 -1
  266. package/dist/server/modules/remotes/replica/__fixtures__/replica-seed.d.ts +2 -2
  267. package/dist/server/modules/remotes/replica/__fixtures__/replica-seed.js +2 -13
  268. package/dist/server/modules/remotes/replica/__fixtures__/replica-seed.js.map +1 -1
  269. package/dist/server/modules/remotes/services/remote-health.service.js +5 -0
  270. package/dist/server/modules/remotes/services/remote-health.service.js.map +1 -1
  271. package/dist/server/modules/remotes/sync/file-sync-failures.service.d.ts +18 -0
  272. package/dist/server/modules/remotes/sync/file-sync-failures.service.js +157 -0
  273. package/dist/server/modules/remotes/sync/file-sync-failures.service.js.map +1 -0
  274. package/dist/server/modules/remotes/sync/file-sync-pattern-preview.service.d.ts +14 -0
  275. package/dist/server/modules/remotes/sync/file-sync-pattern-preview.service.js +99 -0
  276. package/dist/server/modules/remotes/sync/file-sync-pattern-preview.service.js.map +1 -0
  277. package/dist/server/modules/remotes/sync/file-sync-suggestions.service.d.ts +15 -0
  278. package/dist/server/modules/remotes/sync/file-sync-suggestions.service.js +90 -0
  279. package/dist/server/modules/remotes/sync/file-sync-suggestions.service.js.map +1 -0
  280. package/dist/server/modules/remotes/sync/project-file-sync.controller.d.ts +29 -0
  281. package/dist/server/modules/remotes/sync/project-file-sync.controller.js +160 -0
  282. package/dist/server/modules/remotes/sync/project-file-sync.controller.js.map +1 -0
  283. package/dist/server/modules/remotes/sync/remote-file-sync.dto.d.ts +72 -0
  284. package/dist/server/modules/remotes/sync/remote-file-sync.dto.js +16 -0
  285. package/dist/server/modules/remotes/sync/remote-file-sync.dto.js.map +1 -0
  286. package/dist/server/modules/remotes/sync/remote-file-sync.service.d.ts +32 -1
  287. package/dist/server/modules/remotes/sync/remote-file-sync.service.js +499 -38
  288. package/dist/server/modules/remotes/sync/remote-file-sync.service.js.map +1 -1
  289. package/dist/server/modules/remotes/sync/remote-live-sync.service.d.ts +2 -0
  290. package/dist/server/modules/remotes/sync/remote-live-sync.service.js +26 -12
  291. package/dist/server/modules/remotes/sync/remote-live-sync.service.js.map +1 -1
  292. package/dist/server/modules/remotes/vm-user-identity.d.ts +29 -0
  293. package/dist/server/modules/remotes/vm-user-identity.js +45 -0
  294. package/dist/server/modules/remotes/vm-user-identity.js.map +1 -0
  295. package/dist/server/modules/runtime-context-capture/codex-plugin-profile-materializer.service.js +5 -1
  296. package/dist/server/modules/runtime-context-capture/codex-plugin-profile-materializer.service.js.map +1 -1
  297. package/dist/server/modules/session-reader/adapters/claude-session-reader.adapter.d.ts +5 -0
  298. package/dist/server/modules/session-reader/adapters/claude-session-reader.adapter.js +9 -0
  299. package/dist/server/modules/session-reader/adapters/claude-session-reader.adapter.js.map +1 -1
  300. package/dist/server/modules/session-reader/adapters/session-reader-adapter.interface.d.ts +1 -0
  301. package/dist/server/modules/session-reader/adapters/utils/coalesce-turns.js +1 -0
  302. package/dist/server/modules/session-reader/adapters/utils/coalesce-turns.js.map +1 -1
  303. package/dist/server/modules/session-reader/builders/semantic-step-extractor.js +1 -1
  304. package/dist/server/modules/session-reader/builders/semantic-step-extractor.js.map +1 -1
  305. package/dist/server/modules/session-reader/controllers/session-reader.controller.js +1 -1
  306. package/dist/server/modules/session-reader/controllers/session-reader.controller.js.map +1 -1
  307. package/dist/server/modules/session-reader/data/pricing.json +89 -12
  308. package/dist/server/modules/session-reader/dtos/unified-message.types.d.ts +1 -0
  309. package/dist/server/modules/session-reader/parsers/claude-jsonl.parser.d.ts +3 -0
  310. package/dist/server/modules/session-reader/parsers/claude-jsonl.parser.js +10 -1
  311. package/dist/server/modules/session-reader/parsers/claude-jsonl.parser.js.map +1 -1
  312. package/dist/server/modules/session-reader/parsers/claude-turn-evidence.d.ts +11 -0
  313. package/dist/server/modules/session-reader/parsers/claude-turn-evidence.js +50 -0
  314. package/dist/server/modules/session-reader/parsers/claude-turn-evidence.js.map +1 -0
  315. package/dist/server/modules/session-reader/parsers/codex-jsonl.parser.js +8 -2
  316. package/dist/server/modules/session-reader/parsers/codex-jsonl.parser.js.map +1 -1
  317. package/dist/server/modules/session-reader/services/bounded-anchor-proof.d.ts +7 -0
  318. package/dist/server/modules/session-reader/services/bounded-anchor-proof.js +31 -2
  319. package/dist/server/modules/session-reader/services/bounded-anchor-proof.js.map +1 -1
  320. package/dist/server/modules/session-reader/services/session-cache.service.d.ts +8 -2
  321. package/dist/server/modules/session-reader/services/session-cache.service.js +80 -21
  322. package/dist/server/modules/session-reader/services/session-cache.service.js.map +1 -1
  323. package/dist/server/modules/session-reader/services/session-reader.service.d.ts +4 -0
  324. package/dist/server/modules/session-reader/services/session-reader.service.js +40 -8
  325. package/dist/server/modules/session-reader/services/session-reader.service.js.map +1 -1
  326. package/dist/server/modules/session-reader/services/transcript-cursor.d.ts +16 -4
  327. package/dist/server/modules/session-reader/services/transcript-cursor.js +65 -6
  328. package/dist/server/modules/session-reader/services/transcript-cursor.js.map +1 -1
  329. package/dist/server/modules/session-reader/services/transcript-serialization.js +2 -1
  330. package/dist/server/modules/session-reader/services/transcript-serialization.js.map +1 -1
  331. package/dist/server/modules/session-reader/services/transcript-turn-state.d.ts +4 -0
  332. package/dist/server/modules/session-reader/services/transcript-turn-state.js +20 -0
  333. package/dist/server/modules/session-reader/services/transcript-turn-state.js.map +1 -0
  334. package/dist/server/modules/session-reader/services/transcript-watcher.service.d.ts +4 -1
  335. package/dist/server/modules/session-reader/services/transcript-watcher.service.js +43 -18
  336. package/dist/server/modules/session-reader/services/transcript-watcher.service.js.map +1 -1
  337. package/dist/server/modules/sessions/services/provider-launch-config/provider-launch-config.service.js +5 -0
  338. package/dist/server/modules/sessions/services/provider-launch-config/provider-launch-config.service.js.map +1 -1
  339. package/dist/server/modules/sessions/services/session-runtime/__test-utils__/pipeline-harness.d.ts +36 -17
  340. package/dist/server/modules/sessions/services/session-runtime/__test-utils__/pipeline-harness.js +26 -9
  341. package/dist/server/modules/sessions/services/session-runtime/__test-utils__/pipeline-harness.js.map +1 -1
  342. package/dist/server/modules/sessions/services/session-runtime/ensure-mcp-readiness.d.ts +19 -0
  343. package/dist/server/modules/sessions/services/session-runtime/ensure-mcp-readiness.js +26 -0
  344. package/dist/server/modules/sessions/services/session-runtime/ensure-mcp-readiness.js.map +1 -0
  345. package/dist/server/modules/sessions/services/session-runtime/session-launch-pipeline.service.js +10 -18
  346. package/dist/server/modules/sessions/services/session-runtime/session-launch-pipeline.service.js.map +1 -1
  347. package/dist/server/modules/sessions/services/session-runtime/session-restore-pipeline.service.d.ts +5 -1
  348. package/dist/server/modules/sessions/services/session-runtime/session-restore-pipeline.service.js +20 -2
  349. package/dist/server/modules/sessions/services/session-runtime/session-restore-pipeline.service.js.map +1 -1
  350. package/dist/server/modules/settings/local/delegates/skills-settings.delegate.d.ts +6 -0
  351. package/dist/server/modules/settings/local/delegates/skills-settings.delegate.js +26 -0
  352. package/dist/server/modules/settings/local/delegates/skills-settings.delegate.js.map +1 -1
  353. package/dist/server/modules/settings/services/settings.service.d.ts +3 -1
  354. package/dist/server/modules/settings/services/settings.service.js +6 -0
  355. package/dist/server/modules/settings/services/settings.service.js.map +1 -1
  356. package/dist/server/modules/skills/adapters/anthropic-skill-source.adapter.js +5 -5
  357. package/dist/server/modules/skills/adapters/anthropic-skill-source.adapter.js.map +1 -1
  358. package/dist/server/modules/skills/adapters/github-directory-skill-source.adapter.js +5 -5
  359. package/dist/server/modules/skills/adapters/github-directory-skill-source.adapter.js.map +1 -1
  360. package/dist/server/modules/skills/adapters/github-skill-source.base.js +4 -3
  361. package/dist/server/modules/skills/adapters/github-skill-source.base.js.map +1 -1
  362. package/dist/server/modules/skills/adapters/local-skill-source.adapter.js +5 -5
  363. package/dist/server/modules/skills/adapters/local-skill-source.adapter.js.map +1 -1
  364. package/dist/server/modules/skills/adapters/microsoft-skill-source.adapter.js +5 -5
  365. package/dist/server/modules/skills/adapters/microsoft-skill-source.adapter.js.map +1 -1
  366. package/dist/server/modules/skills/adapters/openai-skill-source.adapter.js +5 -5
  367. package/dist/server/modules/skills/adapters/openai-skill-source.adapter.js.map +1 -1
  368. package/dist/server/modules/skills/adapters/skill-source.adapter.d.ts +5 -0
  369. package/dist/server/modules/skills/adapters/skill-sync-temp-cleanup.d.ts +5 -0
  370. package/dist/server/modules/skills/adapters/skill-sync-temp-cleanup.js +75 -0
  371. package/dist/server/modules/skills/adapters/skill-sync-temp-cleanup.js.map +1 -0
  372. package/dist/server/modules/skills/adapters/trailofbits-skill-source.adapter.js +5 -5
  373. package/dist/server/modules/skills/adapters/trailofbits-skill-source.adapter.js.map +1 -1
  374. package/dist/server/modules/skills/adapters/vercel-skill-source.adapter.js +5 -5
  375. package/dist/server/modules/skills/adapters/vercel-skill-source.adapter.js.map +1 -1
  376. package/dist/server/modules/skills/controllers/skills.controller.js +2 -2
  377. package/dist/server/modules/skills/controllers/skills.controller.js.map +1 -1
  378. package/dist/server/modules/skills/services/skill-source-lifecycle.service.d.ts +3 -3
  379. package/dist/server/modules/skills/services/skill-source-lifecycle.service.js +9 -4
  380. package/dist/server/modules/skills/services/skill-source-lifecycle.service.js.map +1 -1
  381. package/dist/server/modules/skills/services/skill-sync.service.d.ts +3 -3
  382. package/dist/server/modules/skills/services/skill-sync.service.js +32 -6
  383. package/dist/server/modules/skills/services/skill-sync.service.js.map +1 -1
  384. package/dist/server/modules/skills/services/skill-sync.types.d.ts +3 -0
  385. package/dist/server/modules/storage/db/schema.d.ts +2 -2
  386. package/dist/server/modules/storage/db/schema.js +2 -0
  387. package/dist/server/modules/storage/db/schema.js.map +1 -1
  388. package/dist/server/modules/storage/models/domain.models.d.ts +1 -1
  389. package/dist/server/modules/storage/models/domain.models.js +2 -0
  390. package/dist/server/modules/storage/models/domain.models.js.map +1 -1
  391. package/dist/server/modules/teams/storage/teams.store.d.ts +1 -0
  392. package/dist/server/modules/teams/storage/teams.store.js +19 -3
  393. package/dist/server/modules/teams/storage/teams.store.js.map +1 -1
  394. package/dist/server/modules/terminal/gateways/terminal.gateway.d.ts +3 -1
  395. package/dist/server/modules/terminal/gateways/terminal.gateway.js +9 -4
  396. package/dist/server/modules/terminal/gateways/terminal.gateway.js.map +1 -1
  397. package/dist/server/modules/terminal/services/session-turn-signals.d.ts +18 -0
  398. package/dist/server/modules/terminal/services/session-turn-signals.js +6 -0
  399. package/dist/server/modules/terminal/services/session-turn-signals.js.map +1 -0
  400. package/dist/server/modules/terminal/services/terminal-activity.service.d.ts +32 -5
  401. package/dist/server/modules/terminal/services/terminal-activity.service.js +322 -40
  402. package/dist/server/modules/terminal/services/terminal-activity.service.js.map +1 -1
  403. package/dist/server/modules/terminal/services/terminal-io/lifecycle.js +15 -3
  404. package/dist/server/modules/terminal/services/terminal-io/lifecycle.js.map +1 -1
  405. package/dist/server/modules/terminal/terminal.module.js +2 -0
  406. package/dist/server/modules/terminal/terminal.module.js.map +1 -1
  407. package/dist/server/modules/terminal/utils/ansi-sanitizer.d.ts +0 -1
  408. package/dist/server/modules/terminal/utils/ansi-sanitizer.js +0 -4
  409. package/dist/server/modules/terminal/utils/ansi-sanitizer.js.map +1 -1
  410. package/dist/server/templates/teams-dev.json +14 -14
  411. package/dist/server/test-setup-node.js +4 -3
  412. package/dist/server/test-setup-node.js.map +1 -1
  413. package/dist/server/test-setup.js +7 -0
  414. package/dist/server/test-setup.js.map +1 -1
  415. package/dist/server/tsconfig.tsbuildinfo +1 -1
  416. package/dist/server/ui/assets/{ExternalRichEditor--kNXs-Eb.js → ExternalRichEditor-CIZPhssf.js} +24 -24
  417. package/dist/server/ui/assets/ReviewDetailPage-winyLSQ7.js +6 -0
  418. package/dist/server/ui/assets/ReviewsPage-BYKBReMp.js +6 -0
  419. package/dist/server/ui/assets/index-CiDJX6Hn.js +1191 -0
  420. package/dist/server/ui/assets/index-f1WOAqXB.css +32 -0
  421. package/dist/server/ui/assets/useReviewSubscription-v3Cto0y4.js +69 -0
  422. package/dist/server/ui/index.html +2 -2
  423. package/dist/templates/teams-dev.json +14 -14
  424. package/package.json +15 -1
  425. package/dist/server/modules/reviews/utils/notification-formatter.d.ts +0 -12
  426. package/dist/server/modules/reviews/utils/notification-formatter.js +0 -60
  427. package/dist/server/modules/reviews/utils/notification-formatter.js.map +0 -1
  428. package/dist/server/ui/assets/ReviewDetailPage-DMgP5fKn.js +0 -6
  429. package/dist/server/ui/assets/ReviewsPage-CkyFUJr6.js +0 -6
  430. package/dist/server/ui/assets/index-CVUaAlP4.css +0 -32
  431. package/dist/server/ui/assets/index-CqRufKpA.js +0 -994
  432. package/dist/server/ui/assets/useReviewSubscription-CU70CzwG.js +0 -69
@@ -0,0 +1,73 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ var __param = (this && this.__param) || function (paramIndex, decorator) {
12
+ return function (target, key) { decorator(target, key, paramIndex); }
13
+ };
14
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ exports.FileSyncAutoFixStore = void 0;
16
+ const common_1 = require("@nestjs/common");
17
+ const zod_1 = require("zod");
18
+ const db_provider_1 = require("../storage/db/db.provider");
19
+ const sqlite_raw_1 = require("../storage/db/sqlite-raw");
20
+ const transaction_runner_1 = require("../storage/db/transaction-runner");
21
+ const file_sync_auto_fix_dto_1 = require("./file-sync-auto-fix.dto");
22
+ const SETTINGS_KEY = 'fileSync.autoFix';
23
+ const defaults = () => ({ enabled: true, actions: [] });
24
+ let FileSyncAutoFixStore = class FileSyncAutoFixStore {
25
+ sqlite;
26
+ transactions;
27
+ constructor(db) {
28
+ this.sqlite = (0, sqlite_raw_1.getRawSqliteClient)(db);
29
+ this.transactions = new transaction_runner_1.TransactionRunner(this.sqlite);
30
+ }
31
+ get(projectId) {
32
+ return this.readMap()[projectId] ?? defaults();
33
+ }
34
+ setEnabled(projectId, enabled) {
35
+ return this.update(projectId, (value) => ({ ...value, enabled }));
36
+ }
37
+ record(projectId, action) {
38
+ const parsed = file_sync_auto_fix_dto_1.FileSyncAutoFixActionSchema.parse(action);
39
+ return this.update(projectId, (value) => ({
40
+ ...value,
41
+ actions: [...value.actions, parsed].slice(-file_sync_auto_fix_dto_1.FILE_SYNC_AUTO_FIX_ACTIONS_MAX),
42
+ }));
43
+ }
44
+ update(projectId, change) {
45
+ return this.transactions.runImmediate(() => {
46
+ const map = this.readMap();
47
+ const value = change(map[projectId] ?? defaults());
48
+ map[projectId] = value;
49
+ const now = new Date().toISOString();
50
+ this.sqlite
51
+ .prepare(`INSERT INTO settings (id, key, value, created_at, updated_at)
52
+ VALUES (lower(hex(randomblob(16))), ?, ?, ?, ?)
53
+ ON CONFLICT(key) DO UPDATE SET value = excluded.value, updated_at = excluded.updated_at`)
54
+ .run(SETTINGS_KEY, JSON.stringify(map), now, now);
55
+ return value;
56
+ });
57
+ }
58
+ readMap() {
59
+ const row = this.sqlite
60
+ .prepare('SELECT value FROM settings WHERE key = ?')
61
+ .get(SETTINGS_KEY);
62
+ if (!row)
63
+ return {};
64
+ return zod_1.z.record(file_sync_auto_fix_dto_1.FileSyncAutoFixSchema).parse(JSON.parse(row.value));
65
+ }
66
+ };
67
+ exports.FileSyncAutoFixStore = FileSyncAutoFixStore;
68
+ exports.FileSyncAutoFixStore = FileSyncAutoFixStore = __decorate([
69
+ (0, common_1.Injectable)(),
70
+ __param(0, (0, common_1.Inject)(db_provider_1.DB_CONNECTION)),
71
+ __metadata("design:paramtypes", [Function])
72
+ ], FileSyncAutoFixStore);
73
+ //# sourceMappingURL=file-sync-auto-fix.store.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"file-sync-auto-fix.store.js","sourceRoot":"","sources":["../../../src/modules/file-sync/file-sync-auto-fix.store.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,2CAAoD;AAGpD,6BAAwB;AACxB,2DAA0D;AAC1D,yDAA8D;AAC9D,yEAAqE;AACrE,qEAMkC;AAElC,MAAM,YAAY,GAAG,kBAAkB,CAAC;AAExC,MAAM,QAAQ,GAAG,GAAoB,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,CAAC;AAGlE,IAAM,oBAAoB,GAA1B,MAAM,oBAAoB;IACd,MAAM,CAAoB;IAC1B,YAAY,CAAoB;IAEjD,YAAmC,EAAyB;QAC1D,IAAI,CAAC,MAAM,GAAG,IAAA,+BAAkB,EAAC,EAAE,CAAC,CAAC;QACrC,IAAI,CAAC,YAAY,GAAG,IAAI,sCAAiB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACzD,CAAC;IAED,GAAG,CAAC,SAAiB;QACnB,OAAO,IAAI,CAAC,OAAO,EAAE,CAAC,SAAS,CAAC,IAAI,QAAQ,EAAE,CAAC;IACjD,CAAC;IAED,UAAU,CAAC,SAAiB,EAAE,OAAgB;QAC5C,OAAO,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC;IACpE,CAAC;IAED,MAAM,CAAC,SAAiB,EAAE,MAA6B;QACrD,MAAM,MAAM,GAAG,oDAA2B,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QACzD,OAAO,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;YACxC,GAAG,KAAK;YACR,OAAO,EAAE,CAAC,GAAG,KAAK,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC,uDAA8B,CAAC;SAC3E,CAAC,CAAC,CAAC;IACN,CAAC;IAEO,MAAM,CACZ,SAAiB,EACjB,MAAmD;QAEnD,OAAO,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,GAAG,EAAE;YACzC,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC;YAC3B,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,QAAQ,EAAE,CAAC,CAAC;YACnD,GAAG,CAAC,SAAS,CAAC,GAAG,KAAK,CAAC;YACvB,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;YACrC,IAAI,CAAC,MAAM;iBACR,OAAO,CACN;;iGAEuF,CACxF;iBACA,GAAG,CAAC,YAAY,EAAE,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;YACpD,OAAO,KAAK,CAAC;QACf,CAAC,CAAC,CAAC;IACL,CAAC;IAEO,OAAO;QACb,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM;aACpB,OAAO,CAAC,0CAA0C,CAAC;aACnD,GAAG,CAAC,YAAY,CAAkC,CAAC;QACtD,IAAI,CAAC,GAAG;YAAE,OAAO,EAAE,CAAC;QACpB,OAAO,OAAC,CAAC,MAAM,CAAC,8CAAqB,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;IACtE,CAAC;CACF,CAAA;AApDY,oDAAoB;+BAApB,oBAAoB;IADhC,IAAA,mBAAU,GAAE;IAKE,WAAA,IAAA,eAAM,EAAC,2BAAa,CAAC,CAAA;;GAJvB,oBAAoB,CAoDhC"}
@@ -0,0 +1,3 @@
1
+ import { type ConflictBaseline, type ConflictReport } from './file-sync.dto';
2
+ export declare function captureFileSyncConflictBaseline(root: string, ignores: readonly string[], signal?: AbortSignal): Promise<ConflictBaseline>;
3
+ export declare function scanFileSyncConflicts(root: string, baseline: ConflictBaseline, ignores: readonly string[], signal?: AbortSignal): Promise<ConflictReport>;
@@ -0,0 +1,191 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.captureFileSyncConflictBaseline = captureFileSyncConflictBaseline;
4
+ exports.scanFileSyncConflicts = scanFileSyncConflicts;
5
+ const promises_1 = require("node:fs/promises");
6
+ const node_path_1 = require("node:path");
7
+ const file_sync_dto_1 = require("./file-sync.dto");
8
+ async function ignoreRules(root, patterns) {
9
+ const rules = [];
10
+ const loaded = new Set();
11
+ const parse = async (lines, directory) => {
12
+ let escape = process.platform === 'win32' ? '|' : '\\';
13
+ for (let pattern of lines) {
14
+ pattern = pattern.trim();
15
+ if (!pattern || pattern.startsWith('//'))
16
+ continue;
17
+ if (pattern.startsWith('#escape=')) {
18
+ escape = pattern.slice(8);
19
+ continue;
20
+ }
21
+ if (pattern.startsWith('#include ')) {
22
+ const path = (0, node_path_1.resolve)(directory, pattern.slice(9).trim());
23
+ if (loaded.has(path))
24
+ throw new Error('An ignore file was included more than once.');
25
+ loaded.add(path);
26
+ await parse((await (0, promises_1.readFile)(path, 'utf8')).split(/\r?\n/), (0, node_path_1.dirname)(path));
27
+ continue;
28
+ }
29
+ let include = false;
30
+ let insensitive = process.platform === 'win32' || process.platform === 'darwin';
31
+ while (pattern.startsWith('!') || /^\(\?[id]\)/.test(pattern)) {
32
+ if (pattern.startsWith('!')) {
33
+ include = true;
34
+ pattern = pattern.slice(1);
35
+ }
36
+ else {
37
+ if (pattern.startsWith('(?i)'))
38
+ insensitive = true;
39
+ pattern = pattern.slice(4);
40
+ }
41
+ }
42
+ const rooted = pattern.startsWith('/');
43
+ const body = rooted ? pattern.slice(1) : pattern;
44
+ const source = globSource(body, escape);
45
+ rules.push({
46
+ include,
47
+ base: include && rooted ? literalBase(body, escape, insensitive) : null,
48
+ match: new RegExp(`${rooted ? '^' : '(?:^|/)'}${source}${pattern.endsWith('/') ? '' : '(?:$|/)'}`, insensitive ? 'i' : ''),
49
+ });
50
+ }
51
+ };
52
+ await parse(patterns, root);
53
+ return rules;
54
+ }
55
+ function literalBase(body, escape, insensitive) {
56
+ const segments = [];
57
+ let segment = '';
58
+ for (let i = 0; i < body.length; i += 1) {
59
+ const char = body[i];
60
+ if (char === escape && i + 1 < body.length)
61
+ segment += body[++i];
62
+ else if ('*?[{'.includes(char))
63
+ return { path: segments.join('/'), exact: false, insensitive };
64
+ else if (char === '/') {
65
+ segments.push(segment);
66
+ segment = '';
67
+ }
68
+ else
69
+ segment += char;
70
+ }
71
+ if (segment)
72
+ segments.push(segment);
73
+ return { path: segments.join('/'), exact: true, insensitive };
74
+ }
75
+ function reachesInside(rule, name) {
76
+ if (!rule.base)
77
+ return true;
78
+ const fold = (value) => (rule.base?.insensitive ? value.toLowerCase() : value);
79
+ const path = fold(rule.base.path);
80
+ const folder = fold(name);
81
+ if (path.startsWith(`${folder}/`))
82
+ return true;
83
+ return !rule.base.exact && (path === '' || folder === path || folder.startsWith(`${path}/`));
84
+ }
85
+ function globSource(pattern, escape) {
86
+ const literal = (value) => value.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
87
+ let result = '';
88
+ let alternatives = 0;
89
+ for (let i = 0; i < pattern.length; i += 1) {
90
+ const char = pattern[i];
91
+ if (char === escape && i + 1 < pattern.length)
92
+ result += literal(pattern[++i]);
93
+ else if (char === '*') {
94
+ if (pattern[i + 1] === '*') {
95
+ i += 1;
96
+ if (pattern[i + 1] === '/') {
97
+ i += 1;
98
+ result += '(?:.*/)?';
99
+ }
100
+ else
101
+ result += '.*';
102
+ }
103
+ else
104
+ result += '[^/]*';
105
+ }
106
+ else if (char === '?')
107
+ result += '[^/]';
108
+ else if (char === '[' && pattern.indexOf(']', i + 1) >= 0) {
109
+ const end = pattern.indexOf(']', i + 1);
110
+ result += pattern.slice(i, end + 1);
111
+ i = end;
112
+ }
113
+ else if (char === '{') {
114
+ alternatives += 1;
115
+ result += '(?:';
116
+ }
117
+ else if (char === '}' && alternatives > 0) {
118
+ alternatives -= 1;
119
+ result += ')';
120
+ }
121
+ else if (char === ',' && alternatives > 0)
122
+ result += '|';
123
+ else
124
+ result += literal(char);
125
+ }
126
+ return result;
127
+ }
128
+ async function walkConflicts(root, ignores, visit, signal) {
129
+ const rules = await ignoreRules(root, ignores);
130
+ const walk = async (path) => {
131
+ signal?.throwIfAborted();
132
+ const directory = await (0, promises_1.opendir)(path);
133
+ try {
134
+ for await (const entry of directory) {
135
+ signal?.throwIfAborted();
136
+ const conflictCopy = entry.isFile() && entry.name.includes('.sync-conflict-');
137
+ if (entry.isSymbolicLink() || (!entry.isDirectory() && !conflictCopy))
138
+ continue;
139
+ const fullPath = (0, node_path_1.join)(path, entry.name);
140
+ const name = (0, node_path_1.relative)(root, fullPath).split(node_path_1.sep).join('/');
141
+ const matched = rules.findIndex((rule) => rule.match.test(name));
142
+ const ignored = matched >= 0 && !rules[matched].include;
143
+ if (entry.isDirectory()) {
144
+ if (!ignored ||
145
+ rules.slice(0, matched).some((rule) => rule.include && reachesInside(rule, name)))
146
+ await walk(fullPath);
147
+ }
148
+ else if (!ignored) {
149
+ visit(name);
150
+ }
151
+ }
152
+ }
153
+ finally {
154
+ await directory.close().catch(() => undefined);
155
+ }
156
+ };
157
+ await walk(root);
158
+ }
159
+ async function captureFileSyncConflictBaseline(root, ignores, signal) {
160
+ const paths = [];
161
+ let baselineOverCap = false;
162
+ await walkConflicts(root, ignores, (name) => {
163
+ if (baselineOverCap)
164
+ return;
165
+ if (paths.length === file_sync_dto_1.CONFLICT_BASELINE_MAX) {
166
+ baselineOverCap = true;
167
+ paths.length = 0;
168
+ }
169
+ else
170
+ paths.push(name);
171
+ }, signal);
172
+ return baselineOverCap ? { baselineOverCap: true } : { baselineOverCap: false, paths };
173
+ }
174
+ async function scanFileSyncConflicts(root, baseline, ignores, signal) {
175
+ const previous = new Set(baseline.baselineOverCap ? [] : baseline.paths);
176
+ const result = {
177
+ total: 0,
178
+ sample: [],
179
+ ...(baseline.baselineOverCap && { baselineOverCap: true }),
180
+ };
181
+ await walkConflicts(root, ignores, (name) => {
182
+ if (previous.has(name))
183
+ return;
184
+ result.total += 1;
185
+ if (result.sample.length < file_sync_dto_1.FILE_SYNC_REPORT_SAMPLE)
186
+ result.sample.push(name);
187
+ }, signal);
188
+ result.sample.sort();
189
+ return result;
190
+ }
191
+ //# sourceMappingURL=file-sync-conflicts.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"file-sync-conflicts.js","sourceRoot":"","sources":["../../../src/modules/file-sync/file-sync-conflicts.ts"],"names":[],"mappings":"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"}
@@ -3,8 +3,12 @@ import { DEFAULT_FILE_SYNC_IGNORES } from './file-sync.dto';
3
3
  export { DEFAULT_FILE_SYNC_IGNORES };
4
4
  export declare class FileSyncIgnoresStore {
5
5
  private readonly sqlite;
6
+ private readonly transactions;
6
7
  constructor(db: BetterSQLite3Database);
7
8
  get(projectId: string): string[];
8
- set(projectId: string, ignores: string[] | null): string[];
9
+ set(projectId: string, ignores: string[] | null, expectedRevision?: number): string[];
10
+ revision(projectId: string): number;
11
+ private readRevisions;
12
+ private write;
9
13
  private readMap;
10
14
  }
@@ -14,34 +14,65 @@ var __param = (this && this.__param) || function (paramIndex, decorator) {
14
14
  Object.defineProperty(exports, "__esModule", { value: true });
15
15
  exports.FileSyncIgnoresStore = exports.DEFAULT_FILE_SYNC_IGNORES = void 0;
16
16
  const common_1 = require("@nestjs/common");
17
+ const zod_1 = require("zod");
17
18
  const logger_1 = require("../../common/logging/logger");
18
19
  const db_provider_1 = require("../storage/db/db.provider");
19
20
  const sqlite_raw_1 = require("../storage/db/sqlite-raw");
21
+ const transaction_runner_1 = require("../storage/db/transaction-runner");
22
+ const error_types_1 = require("../../common/errors/error-types");
20
23
  const file_sync_dto_1 = require("./file-sync.dto");
21
24
  Object.defineProperty(exports, "DEFAULT_FILE_SYNC_IGNORES", { enumerable: true, get: function () { return file_sync_dto_1.DEFAULT_FILE_SYNC_IGNORES; } });
22
25
  const logger = (0, logger_1.createLogger)('FileSyncIgnoresStore');
23
26
  const SETTINGS_KEY = 'fileSync.ignores';
27
+ const REVISIONS_KEY = 'fileSync.ignoreRevisions';
24
28
  let FileSyncIgnoresStore = class FileSyncIgnoresStore {
25
29
  sqlite;
30
+ transactions;
26
31
  constructor(db) {
27
32
  this.sqlite = (0, sqlite_raw_1.getRawSqliteClient)(db);
33
+ this.transactions = new transaction_runner_1.TransactionRunner(this.sqlite);
28
34
  }
29
35
  get(projectId) {
30
36
  return this.readMap()[projectId] ?? [...file_sync_dto_1.DEFAULT_FILE_SYNC_IGNORES];
31
37
  }
32
- set(projectId, ignores) {
33
- const map = this.readMap();
34
- if (ignores === null)
35
- delete map[projectId];
36
- else
37
- map[projectId] = file_sync_dto_1.IgnorePatternsSchema.parse(ignores);
38
+ set(projectId, ignores, expectedRevision) {
39
+ const validated = ignores === null ? null : file_sync_dto_1.IgnorePatternsSchema.parse(ignores);
40
+ return this.transactions.runImmediate(() => {
41
+ const revisions = this.readRevisions();
42
+ const revision = revisions[projectId] ?? 0;
43
+ if (expectedRevision !== undefined && expectedRevision !== revision)
44
+ throw new error_types_1.AppError('The file list changed. Review it again.', file_sync_dto_1.FILE_SYNC_IGNORES_CHANGED, 409);
45
+ const map = this.readMap();
46
+ if (validated === null)
47
+ delete map[projectId];
48
+ else
49
+ map[projectId] = validated;
50
+ revisions[projectId] = revision + 1;
51
+ this.write(SETTINGS_KEY, map);
52
+ this.write(REVISIONS_KEY, revisions);
53
+ return this.get(projectId);
54
+ });
55
+ }
56
+ revision(projectId) {
57
+ return this.readRevisions()[projectId] ?? 0;
58
+ }
59
+ readRevisions() {
60
+ const row = this.sqlite
61
+ .prepare('SELECT value FROM settings WHERE key = ?')
62
+ .get(REVISIONS_KEY);
63
+ if (!row)
64
+ return {};
65
+ return zod_1.z
66
+ .record(zod_1.z.number().int().nonnegative().max(Number.MAX_SAFE_INTEGER))
67
+ .parse(JSON.parse(row.value));
68
+ }
69
+ write(key, value) {
38
70
  const now = new Date().toISOString();
39
71
  this.sqlite
40
72
  .prepare(`INSERT INTO settings (id, key, value, created_at, updated_at)
41
73
  VALUES (lower(hex(randomblob(16))), ?, ?, ?, ?)
42
74
  ON CONFLICT(key) DO UPDATE SET value = excluded.value, updated_at = excluded.updated_at`)
43
- .run(SETTINGS_KEY, JSON.stringify(map), now, now);
44
- return this.get(projectId);
75
+ .run(key, JSON.stringify(value), now, now);
45
76
  }
46
77
  readMap() {
47
78
  const row = this.sqlite
@@ -1 +1 @@
1
- {"version":3,"file":"file-sync-ignores.store.js","sourceRoot":"","sources":["../../../src/modules/file-sync/file-sync-ignores.store.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,2CAAoD;AAGpD,wDAA2D;AAC3D,2DAA0D;AAC1D,yDAA8D;AAC9D,mDAAkF;AAOzE,0GAPA,yCAAyB,OAOA;AALlC,MAAM,MAAM,GAAG,IAAA,qBAAY,EAAC,sBAAsB,CAAC,CAAC;AAGpD,MAAM,YAAY,GAAG,kBAAkB,CAAC;AAKjC,IAAM,oBAAoB,GAA1B,MAAM,oBAAoB;IACd,MAAM,CAAoB;IAE3C,YAAmC,EAAyB;QAC1D,IAAI,CAAC,MAAM,GAAG,IAAA,+BAAkB,EAAC,EAAE,CAAC,CAAC;IACvC,CAAC;IAGD,GAAG,CAAC,SAAiB;QACnB,OAAO,IAAI,CAAC,OAAO,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,yCAAyB,CAAC,CAAC;IACrE,CAAC;IAGD,GAAG,CAAC,SAAiB,EAAE,OAAwB;QAC7C,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC;QAC3B,IAAI,OAAO,KAAK,IAAI;YAAE,OAAO,GAAG,CAAC,SAAS,CAAC,CAAC;;YACvC,GAAG,CAAC,SAAS,CAAC,GAAG,oCAAoB,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAC1D,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;QACrC,IAAI,CAAC,MAAM;aACR,OAAO,CACN;;iGAEyF,CAC1F;aACA,GAAG,CAAC,YAAY,EAAE,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;QACpD,OAAO,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;IAC7B,CAAC;IAEO,OAAO;QACb,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM;aACpB,OAAO,CAAC,0CAA0C,CAAC;aACnD,GAAG,CAAC,YAAY,CAAkC,CAAC;QACtD,IAAI,CAAC,GAAG;YAAE,OAAO,EAAE,CAAC;QACpB,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAA4B,CAAC;YAChE,MAAM,GAAG,GAA6B,EAAE,CAAC;YACzC,KAAK,MAAM,CAAC,SAAS,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;gBACxD,MAAM,OAAO,GAAG,oCAAoB,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;gBACtD,IAAI,OAAO,CAAC,OAAO;oBAAE,GAAG,CAAC,SAAS,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;YACrD,CAAC;YACD,OAAO,GAAG,CAAC;QACb,CAAC;QAAC,MAAM,CAAC;YACP,MAAM,CAAC,IAAI,CAAC,kEAAkE,CAAC,CAAC;YAChF,OAAO,EAAE,CAAC;QACZ,CAAC;IACH,CAAC;CACF,CAAA;AA9CY,oDAAoB;+BAApB,oBAAoB;IADhC,IAAA,mBAAU,GAAE;IAIE,WAAA,IAAA,eAAM,EAAC,2BAAa,CAAC,CAAA;;GAHvB,oBAAoB,CA8ChC"}
1
+ {"version":3,"file":"file-sync-ignores.store.js","sourceRoot":"","sources":["../../../src/modules/file-sync/file-sync-ignores.store.ts"],"names":[],"mappings":"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"}
@@ -7,8 +7,6 @@ export declare class FileSyncController {
7
7
  }>;
8
8
  get(projectId: string): {
9
9
  ignores: string[];
10
- };
11
- put(projectId: string, body: unknown): {
12
- ignores: string[];
10
+ revision: number;
13
11
  };
14
12
  }
@@ -15,7 +15,6 @@ Object.defineProperty(exports, "__esModule", { value: true });
15
15
  exports.FileSyncController = void 0;
16
16
  const common_1 = require("@nestjs/common");
17
17
  const zod_1 = require("zod");
18
- const file_sync_dto_1 = require("./file-sync.dto");
19
18
  const file_sync_service_1 = require("./file-sync.service");
20
19
  const ProjectIdSchema = zod_1.z.string().trim().min(1).max(128);
21
20
  let FileSyncController = class FileSyncController {
@@ -27,11 +26,11 @@ let FileSyncController = class FileSyncController {
27
26
  return { folders: await this.fileSync.projectNeed(ProjectIdSchema.parse(projectId)) };
28
27
  }
29
28
  get(projectId) {
30
- return { ignores: this.fileSync.getIgnores(ProjectIdSchema.parse(projectId)) };
31
- }
32
- put(projectId, body) {
33
- const { ignores } = file_sync_dto_1.IgnoresBodySchema.parse(body);
34
- return { ignores: this.fileSync.setIgnores(ProjectIdSchema.parse(projectId), ignores) };
29
+ const id = ProjectIdSchema.parse(projectId);
30
+ return {
31
+ ignores: this.fileSync.getIgnores(id),
32
+ revision: this.fileSync.getIgnoresRevision(id),
33
+ };
35
34
  }
36
35
  };
37
36
  exports.FileSyncController = FileSyncController;
@@ -49,14 +48,6 @@ __decorate([
49
48
  __metadata("design:paramtypes", [String]),
50
49
  __metadata("design:returntype", Object)
51
50
  ], FileSyncController.prototype, "get", null);
52
- __decorate([
53
- (0, common_1.Put)('ignores'),
54
- __param(0, (0, common_1.Param)('projectId')),
55
- __param(1, (0, common_1.Body)()),
56
- __metadata("design:type", Function),
57
- __metadata("design:paramtypes", [String, Object]),
58
- __metadata("design:returntype", Object)
59
- ], FileSyncController.prototype, "put", null);
60
51
  exports.FileSyncController = FileSyncController = __decorate([
61
52
  (0, common_1.Controller)('api/file-sync/projects/:projectId'),
62
53
  __metadata("design:paramtypes", [file_sync_service_1.FileSyncService])
@@ -1 +1 @@
1
- {"version":3,"file":"file-sync.controller.js","sourceRoot":"","sources":["../../../src/modules/file-sync/file-sync.controller.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,2CAAmE;AACnE,6BAAwB;AACxB,mDAAoD;AACpD,2DAAuE;AAEvE,MAAM,eAAe,GAAG,OAAC,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AAInD,IAAM,kBAAkB,GAAxB,MAAM,kBAAkB;IACA;IAA7B,YAA6B,QAAyB;QAAzB,aAAQ,GAAR,QAAQ,CAAiB;IAAG,CAAC;IAIpD,AAAN,KAAK,CAAC,MAAM,CAAqB,SAAiB;QAChD,OAAO,EAAE,OAAO,EAAE,MAAM,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,eAAe,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC;IACxF,CAAC;IAID,GAAG,CAAqB,SAAiB;QACvC,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,eAAe,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC;IACjF,CAAC;IAGD,GAAG,CAAqB,SAAiB,EAAU,IAAa;QAC9D,MAAM,EAAE,OAAO,EAAE,GAAG,iCAAiB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAClD,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,eAAe,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,OAAO,CAAC,EAAE,CAAC;IAC1F,CAAC;CACF,CAAA;AApBY,gDAAkB;AAKvB;IADL,IAAA,YAAG,EAAC,QAAQ,CAAC;IACA,WAAA,IAAA,cAAK,EAAC,WAAW,CAAC,CAAA;;;;gDAE/B;AAID;IADC,IAAA,YAAG,EAAC,SAAS,CAAC;IACV,WAAA,IAAA,cAAK,EAAC,WAAW,CAAC,CAAA;;;;6CAEtB;AAGD;IADC,IAAA,YAAG,EAAC,SAAS,CAAC;IACV,WAAA,IAAA,cAAK,EAAC,WAAW,CAAC,CAAA;IAAqB,WAAA,IAAA,aAAI,GAAE,CAAA;;;;6CAGjD;6BAnBU,kBAAkB;IAD9B,IAAA,mBAAU,EAAC,mCAAmC,CAAC;qCAEP,mCAAe;GAD3C,kBAAkB,CAoB9B"}
1
+ {"version":3,"file":"file-sync.controller.js","sourceRoot":"","sources":["../../../src/modules/file-sync/file-sync.controller.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,2CAAwD;AACxD,6BAAwB;AACxB,2DAAuE;AAEvE,MAAM,eAAe,GAAG,OAAC,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AAInD,IAAM,kBAAkB,GAAxB,MAAM,kBAAkB;IACA;IAA7B,YAA6B,QAAyB;QAAzB,aAAQ,GAAR,QAAQ,CAAiB;IAAG,CAAC;IAIpD,AAAN,KAAK,CAAC,MAAM,CAAqB,SAAiB;QAChD,OAAO,EAAE,OAAO,EAAE,MAAM,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,eAAe,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC;IACxF,CAAC;IAID,GAAG,CAAqB,SAAiB;QACvC,MAAM,EAAE,GAAG,eAAe,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;QAC5C,OAAO;YACL,OAAO,EAAE,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;YACrC,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,kBAAkB,CAAC,EAAE,CAAC;SAC/C,CAAC;IACJ,CAAC;CACF,CAAA;AAlBY,gDAAkB;AAKvB;IADL,IAAA,YAAG,EAAC,QAAQ,CAAC;IACA,WAAA,IAAA,cAAK,EAAC,WAAW,CAAC,CAAA;;;;gDAE/B;AAID;IADC,IAAA,YAAG,EAAC,SAAS,CAAC;IACV,WAAA,IAAA,cAAK,EAAC,WAAW,CAAC,CAAA;;;;6CAMtB;6BAjBU,kBAAkB;IAD9B,IAAA,mBAAU,EAAC,mCAAmC,CAAC;qCAEP,mCAAe;GAD3C,kBAAkB,CAkB9B"}