devchain-cli 0.25.0 → 0.26.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 (637) hide show
  1. package/README.md +1 -1
  2. package/dist/build-info.json +2 -2
  3. package/dist/cli.js +34 -76
  4. package/dist/drizzle/0094_agent_worktree_lanes.sql +20 -0
  5. package/dist/drizzle/meta/0094_snapshot.json +7810 -0
  6. package/dist/drizzle/meta/_journal.json +7 -0
  7. package/dist/host-cli-pins.json +1 -1
  8. package/dist/host-install/devchain-host-bootstrap.tgz +0 -0
  9. package/dist/host-install/pins.json +2 -1
  10. package/dist/lib/git-owner.js +30 -205
  11. package/dist/lib/git-shim.js +417 -0
  12. package/dist/lib/git-supervisor.js +289 -0
  13. package/dist/lib/host-api-key.js +75 -19
  14. package/dist/lib/local-api.js +4 -2
  15. package/dist/lib/local-app-process.js +77 -0
  16. package/dist/node_modules/@devchain/shared/index.d.ts +1 -0
  17. package/dist/node_modules/@devchain/shared/index.d.ts.map +1 -1
  18. package/dist/node_modules/@devchain/shared/index.js +1 -0
  19. package/dist/node_modules/@devchain/shared/index.js.map +1 -1
  20. package/dist/node_modules/@devchain/shared/mobile-rpc-contract/index.d.ts +510 -5
  21. package/dist/node_modules/@devchain/shared/mobile-rpc-contract/index.d.ts.map +1 -1
  22. package/dist/node_modules/@devchain/shared/mobile-rpc-contract/index.js +55 -0
  23. package/dist/node_modules/@devchain/shared/mobile-rpc-contract/index.js.map +1 -1
  24. package/dist/node_modules/@devchain/shared/schemas/index.d.ts +1 -0
  25. package/dist/node_modules/@devchain/shared/schemas/index.d.ts.map +1 -1
  26. package/dist/node_modules/@devchain/shared/schemas/index.js +1 -0
  27. package/dist/node_modules/@devchain/shared/schemas/index.js.map +1 -1
  28. package/dist/node_modules/@devchain/shared/schemas/provider-clis.js +1 -1
  29. package/dist/node_modules/@devchain/shared/schemas/provider-clis.js.map +1 -1
  30. package/dist/node_modules/@devchain/shared/schemas/provider-usage.d.ts +350 -0
  31. package/dist/node_modules/@devchain/shared/schemas/provider-usage.d.ts.map +1 -0
  32. package/dist/node_modules/@devchain/shared/schemas/provider-usage.js +71 -0
  33. package/dist/node_modules/@devchain/shared/schemas/provider-usage.js.map +1 -0
  34. package/dist/node_modules/@devchain/shared/tsconfig.tsbuildinfo +1 -1
  35. package/dist/server/app.module.js +4 -0
  36. package/dist/server/app.module.js.map +1 -1
  37. package/dist/server/common/config/env.config.d.ts +3 -0
  38. package/dist/server/common/config/env.config.js +1 -0
  39. package/dist/server/common/config/env.config.js.map +1 -1
  40. package/dist/server/common/config/host-image.json +3 -3
  41. package/dist/server/common/config/vm-destroy-fence.d.ts +18 -0
  42. package/dist/server/common/config/vm-destroy-fence.js +38 -0
  43. package/dist/server/common/config/vm-destroy-fence.js.map +1 -0
  44. package/dist/server/common/errors/error-types.d.ts +3 -0
  45. package/dist/server/common/errors/error-types.js +10 -1
  46. package/dist/server/common/errors/error-types.js.map +1 -1
  47. package/dist/server/common/git-shim-paths.d.ts +4 -0
  48. package/dist/server/common/git-shim-paths.js +24 -0
  49. package/dist/server/common/git-shim-paths.js.map +1 -0
  50. package/dist/server/common/test/fake-bootstrap.server.d.ts +5 -0
  51. package/dist/server/common/test/fake-bootstrap.server.js +12 -3
  52. package/dist/server/common/test/fake-bootstrap.server.js.map +1 -1
  53. package/dist/server/common/test/shared-vm.stub.d.ts +2 -0
  54. package/dist/server/common/test/shared-vm.stub.js +13 -0
  55. package/dist/server/common/test/shared-vm.stub.js.map +1 -0
  56. package/dist/server/main.js +2 -0
  57. package/dist/server/main.js.map +1 -1
  58. package/dist/server/modules/cloud-tunnel/cloud-tunnel.module.js +2 -0
  59. package/dist/server/modules/cloud-tunnel/cloud-tunnel.module.js.map +1 -1
  60. package/dist/server/modules/cloud-tunnel/services/mobile-chat-rpc.service.d.ts +5 -1
  61. package/dist/server/modules/cloud-tunnel/services/mobile-chat-rpc.service.js +11 -2
  62. package/dist/server/modules/cloud-tunnel/services/mobile-chat-rpc.service.js.map +1 -1
  63. package/dist/server/modules/cloud-tunnel/services/mobile-rpc-contract.generated.d.ts +506 -1
  64. package/dist/server/modules/cloud-tunnel/services/mobile-rpc-contract.generated.js +56 -1
  65. package/dist/server/modules/cloud-tunnel/services/mobile-rpc-contract.generated.js.map +1 -1
  66. package/dist/server/modules/cloud-tunnel/services/mobile-rpc-workspace-access.service.d.ts +1 -0
  67. package/dist/server/modules/cloud-tunnel/services/mobile-rpc-workspace-access.service.js +1 -0
  68. package/dist/server/modules/cloud-tunnel/services/mobile-rpc-workspace-access.service.js.map +1 -1
  69. package/dist/server/modules/cloud-tunnel/services/tunnel-handler.service.js +1 -0
  70. package/dist/server/modules/cloud-tunnel/services/tunnel-handler.service.js.map +1 -1
  71. package/dist/server/modules/events/catalog/broadcast-registry.js +8 -0
  72. package/dist/server/modules/events/catalog/broadcast-registry.js.map +1 -1
  73. package/dist/server/modules/events/catalog/index.d.ts +18 -11
  74. package/dist/server/modules/events/catalog/index.js +3 -0
  75. package/dist/server/modules/events/catalog/index.js.map +1 -1
  76. package/dist/server/modules/events/catalog/provider-usage.updated.d.ts +12 -0
  77. package/dist/server/modules/events/catalog/provider-usage.updated.js +13 -0
  78. package/dist/server/modules/events/catalog/provider-usage.updated.js.map +1 -0
  79. package/dist/server/modules/events/catalog/review.comment.created.d.ts +2 -2
  80. package/dist/server/modules/events/catalog/review.created.d.ts +8 -8
  81. package/dist/server/modules/file-sync/file-sync.dto.d.ts +18 -0
  82. package/dist/server/modules/file-sync/file-sync.dto.js +12 -2
  83. package/dist/server/modules/file-sync/file-sync.dto.js.map +1 -1
  84. package/dist/server/modules/file-sync/file-sync.module.js +17 -2
  85. package/dist/server/modules/file-sync/file-sync.module.js.map +1 -1
  86. package/dist/server/modules/file-sync/file-sync.service.d.ts +4 -0
  87. package/dist/server/modules/file-sync/file-sync.service.js +35 -0
  88. package/dist/server/modules/file-sync/file-sync.service.js.map +1 -1
  89. package/dist/server/modules/file-sync/git-guard.dto.d.ts +0 -21
  90. package/dist/server/modules/file-sync/git-guard.dto.js +1 -7
  91. package/dist/server/modules/file-sync/git-guard.dto.js.map +1 -1
  92. package/dist/server/modules/file-sync/home-git-guard.service.d.ts +3 -0
  93. package/dist/server/modules/file-sync/home-git-guard.service.js +128 -22
  94. package/dist/server/modules/file-sync/home-git-guard.service.js.map +1 -1
  95. package/dist/server/modules/file-sync/host-git-guard.controller.d.ts +3 -1
  96. package/dist/server/modules/file-sync/host-git-guard.controller.js +11 -5
  97. package/dist/server/modules/file-sync/host-git-guard.controller.js.map +1 -1
  98. package/dist/server/modules/file-sync/host-sync.controller.d.ts +11 -7
  99. package/dist/server/modules/file-sync/host-sync.controller.js +53 -20
  100. package/dist/server/modules/file-sync/host-sync.controller.js.map +1 -1
  101. package/dist/server/modules/file-sync/syncthing-launcher.d.ts +1 -0
  102. package/dist/server/modules/file-sync/syncthing-launcher.js +2 -1
  103. package/dist/server/modules/file-sync/syncthing-launcher.js.map +1 -1
  104. package/dist/server/modules/file-sync/testing/fake-file-sync.service.d.ts +2 -1
  105. package/dist/server/modules/file-sync/testing/fake-file-sync.service.js +6 -0
  106. package/dist/server/modules/file-sync/testing/fake-file-sync.service.js.map +1 -1
  107. package/dist/server/modules/git/dtos/git.dto.d.ts +4 -4
  108. package/dist/server/modules/mcp/dtos/mcp.dto.d.ts +95 -1
  109. package/dist/server/modules/mcp/dtos/mcp.dto.js +45 -2
  110. package/dist/server/modules/mcp/dtos/mcp.dto.js.map +1 -1
  111. package/dist/server/modules/mcp/mcp-full.module.js +2 -0
  112. package/dist/server/modules/mcp/mcp-full.module.js.map +1 -1
  113. package/dist/server/modules/mcp/services/handlers/epic-context.d.ts +2 -2
  114. package/dist/server/modules/mcp/services/handlers/epic-tools.js +16 -0
  115. package/dist/server/modules/mcp/services/handlers/epic-tools.js.map +1 -1
  116. package/dist/server/modules/mcp/services/handlers/teams-tools.d.ts +1 -0
  117. package/dist/server/modules/mcp/services/handlers/teams-tools.js +51 -0
  118. package/dist/server/modules/mcp/services/handlers/teams-tools.js.map +1 -1
  119. package/dist/server/modules/mcp/services/handlers/worktree-context.d.ts +6 -0
  120. package/dist/server/modules/mcp/services/handlers/worktree-context.js +3 -0
  121. package/dist/server/modules/mcp/services/handlers/worktree-context.js.map +1 -0
  122. package/dist/server/modules/mcp/services/handlers/worktree-tools.d.ts +7 -0
  123. package/dist/server/modules/mcp/services/handlers/worktree-tools.js +77 -0
  124. package/dist/server/modules/mcp/services/handlers/worktree-tools.js.map +1 -0
  125. package/dist/server/modules/mcp/services/mcp-tool-binding.registry.d.ts +2 -1
  126. package/dist/server/modules/mcp/services/mcp-tool-binding.registry.js +6 -2
  127. package/dist/server/modules/mcp/services/mcp-tool-binding.registry.js.map +1 -1
  128. package/dist/server/modules/mcp/tool-descriptors/binding-types.d.ts +4 -2
  129. package/dist/server/modules/mcp/tool-descriptors/binding-types.js.map +1 -1
  130. package/dist/server/modules/mcp/tool-descriptors/epic.metadata.js +2 -2
  131. package/dist/server/modules/mcp/tool-descriptors/epic.metadata.js.map +1 -1
  132. package/dist/server/modules/mcp/tool-descriptors/index.js +2 -0
  133. package/dist/server/modules/mcp/tool-descriptors/index.js.map +1 -1
  134. package/dist/server/modules/mcp/tool-descriptors/runtime-bindings.js +2 -0
  135. package/dist/server/modules/mcp/tool-descriptors/runtime-bindings.js.map +1 -1
  136. package/dist/server/modules/mcp/tool-descriptors/team.bindings.js +1 -0
  137. package/dist/server/modules/mcp/tool-descriptors/team.bindings.js.map +1 -1
  138. package/dist/server/modules/mcp/tool-descriptors/team.metadata.js +33 -0
  139. package/dist/server/modules/mcp/tool-descriptors/team.metadata.js.map +1 -1
  140. package/dist/server/modules/mcp/tool-descriptors/worktree.bindings.d.ts +1 -0
  141. package/dist/server/modules/mcp/tool-descriptors/worktree.bindings.js +20 -0
  142. package/dist/server/modules/mcp/tool-descriptors/worktree.bindings.js.map +1 -0
  143. package/dist/server/modules/mcp/tool-descriptors/worktree.metadata.d.ts +2 -0
  144. package/dist/server/modules/mcp/tool-descriptors/worktree.metadata.js +105 -0
  145. package/dist/server/modules/mcp/tool-descriptors/worktree.metadata.js.map +1 -0
  146. package/dist/server/modules/provider-auth/opencode-credential-family.v2.d.ts +4 -0
  147. package/dist/server/modules/provider-auth/opencode-credential-family.v2.js +41 -0
  148. package/dist/server/modules/provider-auth/opencode-credential-family.v2.js.map +1 -0
  149. package/dist/server/modules/provider-auth/opencode-credentials.d.ts +25 -0
  150. package/dist/server/modules/provider-auth/opencode-credentials.js +102 -0
  151. package/dist/server/modules/provider-auth/opencode-credentials.js.map +1 -0
  152. package/dist/server/modules/provider-auth/opencode-pc-logins.service.d.ts +11 -0
  153. package/dist/server/modules/provider-auth/opencode-pc-logins.service.js +62 -0
  154. package/dist/server/modules/provider-auth/opencode-pc-logins.service.js.map +1 -0
  155. package/dist/server/modules/provider-auth/opencode-pc-logins.v1.d.ts +1 -0
  156. package/dist/server/modules/provider-auth/opencode-pc-logins.v1.js +25 -0
  157. package/dist/server/modules/provider-auth/opencode-pc-logins.v1.js.map +1 -0
  158. package/dist/server/modules/provider-auth/opencode-pc-logins.v2.d.ts +3 -0
  159. package/dist/server/modules/provider-auth/opencode-pc-logins.v2.js +25 -0
  160. package/dist/server/modules/provider-auth/opencode-pc-logins.v2.js.map +1 -0
  161. package/dist/server/modules/provider-auth/provider-auth-adapters.d.ts +4 -1
  162. package/dist/server/modules/provider-auth/provider-auth-adapters.js +65 -33
  163. package/dist/server/modules/provider-auth/provider-auth-adapters.js.map +1 -1
  164. package/dist/server/modules/provider-auth/provider-auth-generator.service.d.ts +3 -1
  165. package/dist/server/modules/provider-auth/provider-auth-generator.service.js +12 -6
  166. package/dist/server/modules/provider-auth/provider-auth-generator.service.js.map +1 -1
  167. package/dist/server/modules/provider-auth/provider-auth-vault.service.d.ts +3 -2
  168. package/dist/server/modules/provider-auth/provider-auth-vault.service.js +8 -25
  169. package/dist/server/modules/provider-auth/provider-auth-vault.service.js.map +1 -1
  170. package/dist/server/modules/provider-auth/provider-auth-watcher.service.d.ts +5 -1
  171. package/dist/server/modules/provider-auth/provider-auth-watcher.service.js +32 -1
  172. package/dist/server/modules/provider-auth/provider-auth-watcher.service.js.map +1 -1
  173. package/dist/server/modules/provider-auth/provider-auth.module.js +4 -0
  174. package/dist/server/modules/provider-auth/provider-auth.module.js.map +1 -1
  175. package/dist/server/modules/provider-usage/checkers/agy.checker.d.ts +15 -0
  176. package/dist/server/modules/provider-usage/checkers/agy.checker.js +129 -0
  177. package/dist/server/modules/provider-usage/checkers/agy.checker.js.map +1 -0
  178. package/dist/server/modules/provider-usage/checkers/checker-helpers.d.ts +4 -0
  179. package/dist/server/modules/provider-usage/checkers/checker-helpers.js +12 -0
  180. package/dist/server/modules/provider-usage/checkers/checker-helpers.js.map +1 -0
  181. package/dist/server/modules/provider-usage/checkers/claude-login.checker.d.ts +10 -0
  182. package/dist/server/modules/provider-usage/checkers/claude-login.checker.js +92 -0
  183. package/dist/server/modules/provider-usage/checkers/claude-login.checker.js.map +1 -0
  184. package/dist/server/modules/provider-usage/checkers/claude-token.checker.d.ts +5 -0
  185. package/dist/server/modules/provider-usage/checkers/claude-token.checker.js +80 -0
  186. package/dist/server/modules/provider-usage/checkers/claude-token.checker.js.map +1 -0
  187. package/dist/server/modules/provider-usage/checkers/claude-usage-parser.d.ts +12 -0
  188. package/dist/server/modules/provider-usage/checkers/claude-usage-parser.js +113 -0
  189. package/dist/server/modules/provider-usage/checkers/claude-usage-parser.js.map +1 -0
  190. package/dist/server/modules/provider-usage/checkers/codex.checker.d.ts +7 -0
  191. package/dist/server/modules/provider-usage/checkers/codex.checker.js +159 -0
  192. package/dist/server/modules/provider-usage/checkers/codex.checker.js.map +1 -0
  193. package/dist/server/modules/provider-usage/checkers/private-cwd.d.ts +1 -0
  194. package/dist/server/modules/provider-usage/checkers/private-cwd.js +8 -0
  195. package/dist/server/modules/provider-usage/checkers/private-cwd.js.map +1 -0
  196. package/dist/server/modules/provider-usage/controllers/provider-usage.controller.d.ts +7 -0
  197. package/dist/server/modules/provider-usage/controllers/provider-usage.controller.js +51 -0
  198. package/dist/server/modules/provider-usage/controllers/provider-usage.controller.js.map +1 -0
  199. package/dist/server/modules/provider-usage/provider-usage.module.d.ts +2 -0
  200. package/dist/server/modules/provider-usage/provider-usage.module.js +58 -0
  201. package/dist/server/modules/provider-usage/provider-usage.module.js.map +1 -0
  202. package/dist/server/modules/provider-usage/provider-usage.types.d.ts +26 -0
  203. package/dist/server/modules/provider-usage/provider-usage.types.js +5 -0
  204. package/dist/server/modules/provider-usage/provider-usage.types.js.map +1 -0
  205. package/dist/server/modules/provider-usage/services/provider-usage-accounts.d.ts +5 -0
  206. package/dist/server/modules/provider-usage/services/provider-usage-accounts.js +94 -0
  207. package/dist/server/modules/provider-usage/services/provider-usage-accounts.js.map +1 -0
  208. package/dist/server/modules/provider-usage/services/provider-usage-accounts.service.d.ts +23 -0
  209. package/dist/server/modules/provider-usage/services/provider-usage-accounts.service.js +81 -0
  210. package/dist/server/modules/provider-usage/services/provider-usage-accounts.service.js.map +1 -0
  211. package/dist/server/modules/provider-usage/services/provider-usage.service.d.ts +37 -0
  212. package/dist/server/modules/provider-usage/services/provider-usage.service.js +262 -0
  213. package/dist/server/modules/provider-usage/services/provider-usage.service.js.map +1 -0
  214. package/dist/server/modules/providers/adapters/capabilities/index.d.ts +2 -2
  215. package/dist/server/modules/providers/adapters/capabilities/index.js +2 -1
  216. package/dist/server/modules/providers/adapters/capabilities/index.js.map +1 -1
  217. package/dist/server/modules/providers/adapters/capabilities/provider-plugin.capability.d.ts +16 -2
  218. package/dist/server/modules/providers/adapters/capabilities/session-command.capability.d.ts +5 -0
  219. package/dist/server/modules/providers/adapters/capabilities/session-command.capability.js +3 -0
  220. package/dist/server/modules/providers/adapters/capabilities/session-command.capability.js.map +1 -0
  221. package/dist/server/modules/providers/adapters/capabilities/type-guards.d.ts +4 -1
  222. package/dist/server/modules/providers/adapters/capabilities/type-guards.js +5 -3
  223. package/dist/server/modules/providers/adapters/capabilities/type-guards.js.map +1 -1
  224. package/dist/server/modules/providers/adapters/claude.adapter.d.ts +6 -3
  225. package/dist/server/modules/providers/adapters/claude.adapter.js +7 -2
  226. package/dist/server/modules/providers/adapters/claude.adapter.js.map +1 -1
  227. package/dist/server/modules/providers/adapters/codex.adapter.d.ts +6 -6
  228. package/dist/server/modules/providers/adapters/codex.adapter.js +47 -41
  229. package/dist/server/modules/providers/adapters/codex.adapter.js.map +1 -1
  230. package/dist/server/modules/providers/adapters/opencode-cli-version.d.ts +13 -0
  231. package/dist/server/modules/providers/adapters/opencode-cli-version.js +24 -0
  232. package/dist/server/modules/providers/adapters/opencode-cli-version.js.map +1 -0
  233. package/dist/server/modules/providers/adapters/opencode-config-content.d.ts +1 -0
  234. package/dist/server/modules/providers/adapters/opencode-config-content.js +43 -0
  235. package/dist/server/modules/providers/adapters/opencode-config-content.js.map +1 -0
  236. package/dist/server/modules/providers/adapters/opencode-launch.v1.d.ts +4 -0
  237. package/dist/server/modules/providers/adapters/opencode-launch.v1.js +10 -0
  238. package/dist/server/modules/providers/adapters/opencode-launch.v1.js.map +1 -0
  239. package/dist/server/modules/providers/adapters/opencode-launch.v2.d.ts +2 -0
  240. package/dist/server/modules/providers/adapters/opencode-launch.v2.js +18 -0
  241. package/dist/server/modules/providers/adapters/opencode-launch.v2.js.map +1 -0
  242. package/dist/server/modules/providers/adapters/opencode.adapter.d.ts +3 -4
  243. package/dist/server/modules/providers/adapters/opencode.adapter.js +11 -42
  244. package/dist/server/modules/providers/adapters/opencode.adapter.js.map +1 -1
  245. package/dist/server/modules/providers/adapters/plugin-catalog.utils.d.ts +3 -0
  246. package/dist/server/modules/providers/adapters/plugin-catalog.utils.js +10 -0
  247. package/dist/server/modules/providers/adapters/plugin-catalog.utils.js.map +1 -1
  248. package/dist/server/modules/providers/adapters/provider-adapter.interface.d.ts +9 -3
  249. package/dist/server/modules/providers/adapters/provider-cli-policy.d.ts +3 -0
  250. package/dist/server/modules/providers/adapters/provider-cli-policy.js +8 -0
  251. package/dist/server/modules/providers/adapters/provider-cli-policy.js.map +1 -1
  252. package/dist/server/modules/providers/controllers/provider-models.controller.d.ts +3 -1
  253. package/dist/server/modules/providers/controllers/provider-models.controller.js +18 -3
  254. package/dist/server/modules/providers/controllers/provider-models.controller.js.map +1 -1
  255. package/dist/server/modules/providers/providers.module.js +5 -0
  256. package/dist/server/modules/providers/providers.module.js.map +1 -1
  257. package/dist/server/modules/providers/services/codex-app-server.client.d.ts +11 -0
  258. package/dist/server/modules/providers/services/codex-app-server.client.js +129 -0
  259. package/dist/server/modules/providers/services/codex-app-server.client.js.map +1 -0
  260. package/dist/server/modules/providers/services/provider-cli-version-probe.module.d.ts +2 -0
  261. package/dist/server/modules/providers/services/provider-cli-version-probe.module.js +23 -0
  262. package/dist/server/modules/providers/services/provider-cli-version-probe.module.js.map +1 -0
  263. package/dist/server/modules/providers/services/provider-cli-version-probe.service.d.ts +8 -0
  264. package/dist/server/modules/providers/services/provider-cli-version-probe.service.js +65 -0
  265. package/dist/server/modules/providers/services/provider-cli-version-probe.service.js.map +1 -0
  266. package/dist/server/modules/providers/services/provider-plugins.service.d.ts +5 -1
  267. package/dist/server/modules/providers/services/provider-plugins.service.js +43 -16
  268. package/dist/server/modules/providers/services/provider-plugins.service.js.map +1 -1
  269. package/dist/server/modules/providers/utils/codex-config.d.ts +9 -0
  270. package/dist/server/modules/providers/utils/codex-config.js +34 -16
  271. package/dist/server/modules/providers/utils/codex-config.js.map +1 -1
  272. package/dist/server/modules/providers/utils/private-cwd.d.ts +1 -0
  273. package/dist/server/modules/providers/utils/private-cwd.js +12 -0
  274. package/dist/server/modules/providers/utils/private-cwd.js.map +1 -0
  275. package/dist/server/modules/remotes/contract/host-routes.d.ts +2180 -35
  276. package/dist/server/modules/remotes/contract/host-routes.js +168 -16
  277. package/dist/server/modules/remotes/contract/host-routes.js.map +1 -1
  278. package/dist/server/modules/remotes/controllers/home-shared-vm-notices.controller.d.ts +10 -0
  279. package/dist/server/modules/remotes/controllers/home-shared-vm-notices.controller.js +59 -0
  280. package/dist/server/modules/remotes/controllers/home-shared-vm-notices.controller.js.map +1 -0
  281. package/dist/server/modules/remotes/controllers/remotes.controller.js +1 -0
  282. package/dist/server/modules/remotes/controllers/remotes.controller.js.map +1 -1
  283. package/dist/server/modules/remotes/dtos/remote-notices.dto.d.ts +4 -0
  284. package/dist/server/modules/remotes/dtos/remote-notices.dto.js +3 -0
  285. package/dist/server/modules/remotes/dtos/remote-notices.dto.js.map +1 -0
  286. package/dist/server/modules/remotes/dtos/remote.dto.d.ts +2 -0
  287. package/dist/server/modules/remotes/dtos/remote.dto.js.map +1 -1
  288. package/dist/server/modules/remotes/dtos/shared-vm.dto.d.ts +488 -0
  289. package/dist/server/modules/remotes/dtos/shared-vm.dto.js +60 -0
  290. package/dist/server/modules/remotes/dtos/shared-vm.dto.js.map +1 -0
  291. package/dist/server/modules/remotes/git-coordinator/git-checkpoint.d.ts +5 -0
  292. package/dist/server/modules/remotes/git-coordinator/git-checkpoint.js +95 -0
  293. package/dist/server/modules/remotes/git-coordinator/git-checkpoint.js.map +1 -0
  294. package/dist/server/modules/remotes/git-coordinator/git-coordinator-index.service.d.ts +18 -0
  295. package/dist/server/modules/remotes/git-coordinator/git-coordinator-index.service.js +192 -0
  296. package/dist/server/modules/remotes/git-coordinator/git-coordinator-index.service.js.map +1 -0
  297. package/dist/server/modules/remotes/git-coordinator/git-coordinator.dto.d.ts +519 -0
  298. package/dist/server/modules/remotes/git-coordinator/git-coordinator.dto.js +104 -0
  299. package/dist/server/modules/remotes/git-coordinator/git-coordinator.dto.js.map +1 -0
  300. package/dist/server/modules/remotes/git-coordinator/git-coordinator.service.d.ts +66 -0
  301. package/dist/server/modules/remotes/git-coordinator/git-coordinator.service.js +555 -0
  302. package/dist/server/modules/remotes/git-coordinator/git-coordinator.service.js.map +1 -0
  303. package/dist/server/modules/remotes/git-coordinator/git-coordinator.store.d.ts +11 -0
  304. package/dist/server/modules/remotes/git-coordinator/git-coordinator.store.js +69 -0
  305. package/dist/server/modules/remotes/git-coordinator/git-coordinator.store.js.map +1 -0
  306. package/dist/server/modules/remotes/git-coordinator/git-process-identity.d.ts +3 -0
  307. package/dist/server/modules/remotes/git-coordinator/git-process-identity.js +71 -0
  308. package/dist/server/modules/remotes/git-coordinator/git-process-identity.js.map +1 -0
  309. package/dist/server/modules/remotes/git-coordinator/host-git-coordinator.controller.d.ts +19 -0
  310. package/dist/server/modules/remotes/git-coordinator/host-git-coordinator.controller.js +181 -0
  311. package/dist/server/modules/remotes/git-coordinator/host-git-coordinator.controller.js.map +1 -0
  312. package/dist/server/modules/remotes/git-coordinator/loopback.d.ts +2 -0
  313. package/dist/server/modules/remotes/git-coordinator/loopback.js +10 -0
  314. package/dist/server/modules/remotes/git-coordinator/loopback.js.map +1 -0
  315. package/dist/server/modules/remotes/git-coordinator/vm-git-coordinator.controller.d.ts +9 -0
  316. package/dist/server/modules/remotes/git-coordinator/vm-git-coordinator.controller.js +66 -0
  317. package/dist/server/modules/remotes/git-coordinator/vm-git-coordinator.controller.js.map +1 -0
  318. package/dist/server/modules/remotes/git-owner.store.d.ts +102 -1
  319. package/dist/server/modules/remotes/git-owner.store.js +37 -11
  320. package/dist/server/modules/remotes/git-owner.store.js.map +1 -1
  321. package/dist/server/modules/remotes/git-shim/git-shim-registry.service.d.ts +31 -0
  322. package/dist/server/modules/remotes/git-shim/git-shim-registry.service.js +175 -0
  323. package/dist/server/modules/remotes/git-shim/git-shim-registry.service.js.map +1 -0
  324. package/dist/server/modules/remotes/git-writes/change-barrier.d.ts +16 -0
  325. package/dist/server/modules/remotes/git-writes/change-barrier.js +40 -0
  326. package/dist/server/modules/remotes/git-writes/change-barrier.js.map +1 -0
  327. package/dist/server/modules/remotes/git-writes/home-git-handover.service.d.ts +42 -0
  328. package/dist/server/modules/remotes/git-writes/home-git-handover.service.js +349 -0
  329. package/dist/server/modules/remotes/git-writes/home-git-handover.service.js.map +1 -0
  330. package/dist/server/modules/remotes/git-writes/home-git-transitions.d.ts +16 -0
  331. package/dist/server/modules/remotes/git-writes/home-git-transitions.js +12 -0
  332. package/dist/server/modules/remotes/git-writes/home-git-transitions.js.map +1 -0
  333. package/dist/server/modules/remotes/git-writes/home-git-write.controller.d.ts +10 -0
  334. package/dist/server/modules/remotes/git-writes/home-git-write.controller.js +74 -0
  335. package/dist/server/modules/remotes/git-writes/home-git-write.controller.js.map +1 -0
  336. package/dist/server/modules/remotes/git-writes/home-git-write.service.d.ts +72 -0
  337. package/dist/server/modules/remotes/git-writes/home-git-write.service.js +481 -0
  338. package/dist/server/modules/remotes/git-writes/home-git-write.service.js.map +1 -0
  339. package/dist/server/modules/remotes/git-writes/home-git-write.store.d.ts +39 -0
  340. package/dist/server/modules/remotes/git-writes/home-git-write.store.js +78 -0
  341. package/dist/server/modules/remotes/git-writes/home-git-write.store.js.map +1 -0
  342. package/dist/server/modules/remotes/host/host-helper.dto.d.ts +4 -0
  343. package/dist/server/modules/remotes/host/host-helper.dto.js +14 -1
  344. package/dist/server/modules/remotes/host/host-helper.dto.js.map +1 -1
  345. package/dist/server/modules/remotes/host/host-helper.service.d.ts +5 -1
  346. package/dist/server/modules/remotes/host/host-helper.service.js +9 -3
  347. package/dist/server/modules/remotes/host/host-helper.service.js.map +1 -1
  348. package/dist/server/modules/remotes/host/host-opencode-credentials.v2.d.ts +7 -0
  349. package/dist/server/modules/remotes/host/host-opencode-credentials.v2.js +46 -0
  350. package/dist/server/modules/remotes/host/host-opencode-credentials.v2.js.map +1 -0
  351. package/dist/server/modules/remotes/host/host-provider-auth.service.d.ts +11 -2
  352. package/dist/server/modules/remotes/host/host-provider-auth.service.js +92 -14
  353. package/dist/server/modules/remotes/host/host-provider-auth.service.js.map +1 -1
  354. package/dist/server/modules/remotes/host/host-provider-usage-revision.d.ts +2 -0
  355. package/dist/server/modules/remotes/host/host-provider-usage-revision.js +11 -0
  356. package/dist/server/modules/remotes/host/host-provider-usage-revision.js.map +1 -0
  357. package/dist/server/modules/remotes/host/host-provider-usage-settings.controller.d.ts +11 -0
  358. package/dist/server/modules/remotes/host/host-provider-usage-settings.controller.js +62 -0
  359. package/dist/server/modules/remotes/host/host-provider-usage-settings.controller.js.map +1 -0
  360. package/dist/server/modules/remotes/host/host-provider-usage-settings.service.d.ts +9 -0
  361. package/dist/server/modules/remotes/host/host-provider-usage-settings.service.js +35 -0
  362. package/dist/server/modules/remotes/host/host-provider-usage-settings.service.js.map +1 -0
  363. package/dist/server/modules/remotes/host/host-shared-vm.controller.d.ts +24 -0
  364. package/dist/server/modules/remotes/host/host-shared-vm.controller.js +183 -0
  365. package/dist/server/modules/remotes/host/host-shared-vm.controller.js.map +1 -0
  366. package/dist/server/modules/remotes/host/host-shared-vm.service.d.ts +28 -0
  367. package/dist/server/modules/remotes/host/host-shared-vm.service.js +159 -0
  368. package/dist/server/modules/remotes/host/host-shared-vm.service.js.map +1 -0
  369. package/dist/server/modules/remotes/host/host-shared-vm.store.d.ts +18 -0
  370. package/dist/server/modules/remotes/host/host-shared-vm.store.js +105 -0
  371. package/dist/server/modules/remotes/host/host-shared-vm.store.js.map +1 -0
  372. package/dist/server/modules/remotes/host/host-update.controller.js +3 -3
  373. package/dist/server/modules/remotes/host/host-update.controller.js.map +1 -1
  374. package/dist/server/modules/remotes/host/host.service.d.ts +3 -1
  375. package/dist/server/modules/remotes/host/host.service.js +9 -2
  376. package/dist/server/modules/remotes/host/host.service.js.map +1 -1
  377. package/dist/server/modules/remotes/host/shared-vm.contract.d.ts +184 -0
  378. package/dist/server/modules/remotes/host/shared-vm.contract.js +44 -0
  379. package/dist/server/modules/remotes/host/shared-vm.contract.js.map +1 -0
  380. package/dist/server/modules/remotes/host-install/host-install-block.d.ts +2 -0
  381. package/dist/server/modules/remotes/host-install/host-install-block.js +3 -2
  382. package/dist/server/modules/remotes/host-install/host-install-block.js.map +1 -1
  383. package/dist/server/modules/remotes/host-install/host-install.service.d.ts +2 -0
  384. package/dist/server/modules/remotes/host-install/host-install.service.js +10 -0
  385. package/dist/server/modules/remotes/host-install/host-install.service.js.map +1 -1
  386. package/dist/server/modules/remotes/host-install/host-join-block.d.ts +16 -0
  387. package/dist/server/modules/remotes/host-install/host-join-block.js +122 -0
  388. package/dist/server/modules/remotes/host-install/host-join-block.js.map +1 -0
  389. package/dist/server/modules/remotes/host-install/ssh-runner.d.ts +1 -0
  390. package/dist/server/modules/remotes/host-install/ssh-runner.js +2 -2
  391. package/dist/server/modules/remotes/host-install/ssh-runner.js.map +1 -1
  392. package/dist/server/modules/remotes/operations/attach.operation.d.ts +9 -2
  393. package/dist/server/modules/remotes/operations/attach.operation.js +38 -11
  394. package/dist/server/modules/remotes/operations/attach.operation.js.map +1 -1
  395. package/dist/server/modules/remotes/operations/claim.operation.d.ts +4 -0
  396. package/dist/server/modules/remotes/operations/claim.operation.js +15 -0
  397. package/dist/server/modules/remotes/operations/claim.operation.js.map +1 -1
  398. package/dist/server/modules/remotes/operations/claude-user-instructions.d.ts +2 -0
  399. package/dist/server/modules/remotes/operations/claude-user-instructions.js +23 -0
  400. package/dist/server/modules/remotes/operations/claude-user-instructions.js.map +1 -0
  401. package/dist/server/modules/remotes/operations/destroy-vm.operation.d.ts +4 -2
  402. package/dist/server/modules/remotes/operations/destroy-vm.operation.js +43 -23
  403. package/dist/server/modules/remotes/operations/destroy-vm.operation.js.map +1 -1
  404. package/dist/server/modules/remotes/operations/detach.operation.d.ts +12 -1
  405. package/dist/server/modules/remotes/operations/detach.operation.js +106 -29
  406. package/dist/server/modules/remotes/operations/detach.operation.js.map +1 -1
  407. package/dist/server/modules/remotes/operations/disconnect-all.operation.d.ts +50 -0
  408. package/dist/server/modules/remotes/operations/disconnect-all.operation.js +222 -0
  409. package/dist/server/modules/remotes/operations/disconnect-all.operation.js.map +1 -0
  410. package/dist/server/modules/remotes/operations/file-sync-handoff.d.ts +3 -1
  411. package/dist/server/modules/remotes/operations/file-sync-handoff.js +69 -68
  412. package/dist/server/modules/remotes/operations/file-sync-handoff.js.map +1 -1
  413. package/dist/server/modules/remotes/operations/git-owner.dto.d.ts +10 -44
  414. package/dist/server/modules/remotes/operations/git-owner.dto.js +1 -12
  415. package/dist/server/modules/remotes/operations/git-owner.dto.js.map +1 -1
  416. package/dist/server/modules/remotes/operations/guarded-vm-destroy.d.ts +2 -0
  417. package/dist/server/modules/remotes/operations/guarded-vm-destroy.js +14 -0
  418. package/dist/server/modules/remotes/operations/guarded-vm-destroy.js.map +1 -1
  419. package/dist/server/modules/remotes/operations/install-host.operation.d.ts +21 -1
  420. package/dist/server/modules/remotes/operations/install-host.operation.js +285 -27
  421. package/dist/server/modules/remotes/operations/install-host.operation.js.map +1 -1
  422. package/dist/server/modules/remotes/operations/remote-host.client.d.ts +51 -12
  423. package/dist/server/modules/remotes/operations/remote-host.client.js +129 -23
  424. package/dist/server/modules/remotes/operations/remote-host.client.js.map +1 -1
  425. package/dist/server/modules/remotes/operations/remote-operation.dto.d.ts +161 -0
  426. package/dist/server/modules/remotes/operations/remote-operation.dto.js +12 -1
  427. package/dist/server/modules/remotes/operations/remote-operation.dto.js.map +1 -1
  428. package/dist/server/modules/remotes/operations/remote-operation.runner.d.ts +4 -2
  429. package/dist/server/modules/remotes/operations/remote-operation.runner.js +53 -9
  430. package/dist/server/modules/remotes/operations/remote-operation.runner.js.map +1 -1
  431. package/dist/server/modules/remotes/operations/remote-operation.types.d.ts +6 -3
  432. package/dist/server/modules/remotes/operations/remote-operation.types.js +10 -1
  433. package/dist/server/modules/remotes/operations/remote-operation.types.js.map +1 -1
  434. package/dist/server/modules/remotes/operations/remote-operations.controller.d.ts +2 -3
  435. package/dist/server/modules/remotes/operations/remote-operations.controller.js +20 -25
  436. package/dist/server/modules/remotes/operations/remote-operations.controller.js.map +1 -1
  437. package/dist/server/modules/remotes/operations/remote-operations.service.d.ts +11 -9
  438. package/dist/server/modules/remotes/operations/remote-operations.service.js +123 -118
  439. package/dist/server/modules/remotes/operations/remote-operations.service.js.map +1 -1
  440. package/dist/server/modules/remotes/operations/remote-worktree-guard.d.ts +16 -0
  441. package/dist/server/modules/remotes/operations/remote-worktree-guard.js +100 -0
  442. package/dist/server/modules/remotes/operations/remote-worktree-guard.js.map +1 -0
  443. package/dist/server/modules/remotes/operations/reset-vm.operation.d.ts +15 -2
  444. package/dist/server/modules/remotes/operations/reset-vm.operation.js +115 -15
  445. package/dist/server/modules/remotes/operations/reset-vm.operation.js.map +1 -1
  446. package/dist/server/modules/remotes/operations/update-host.operation.d.ts +2 -0
  447. package/dist/server/modules/remotes/operations/update-host.operation.js +11 -5
  448. package/dist/server/modules/remotes/operations/update-host.operation.js.map +1 -1
  449. package/dist/server/modules/remotes/operations/vm-operations.controller.d.ts +5 -1
  450. package/dist/server/modules/remotes/operations/vm-operations.controller.js +36 -2
  451. package/dist/server/modules/remotes/operations/vm-operations.controller.js.map +1 -1
  452. package/dist/server/modules/remotes/operations/vm-operations.dto.d.ts +150 -0
  453. package/dist/server/modules/remotes/operations/vm-operations.dto.js +9 -1
  454. package/dist/server/modules/remotes/operations/vm-operations.dto.js.map +1 -1
  455. package/dist/server/modules/remotes/operations/vm-operations.service.d.ts +3 -1
  456. package/dist/server/modules/remotes/operations/vm-operations.service.js +38 -15
  457. package/dist/server/modules/remotes/operations/vm-operations.service.js.map +1 -1
  458. package/dist/server/modules/remotes/ports/remote-health.port.d.ts +2 -0
  459. package/dist/server/modules/remotes/ports/remote-health.port.js.map +1 -1
  460. package/dist/server/modules/remotes/remotes.module.js +53 -2
  461. package/dist/server/modules/remotes/remotes.module.js.map +1 -1
  462. package/dist/server/modules/remotes/services/home-shared-vm-notices.service.d.ts +18 -0
  463. package/dist/server/modules/remotes/services/home-shared-vm-notices.service.js +81 -0
  464. package/dist/server/modules/remotes/services/home-shared-vm-notices.service.js.map +1 -0
  465. package/dist/server/modules/remotes/services/remote-forced-detach.service.d.ts +11 -0
  466. package/dist/server/modules/remotes/services/remote-forced-detach.service.js +69 -0
  467. package/dist/server/modules/remotes/services/remote-forced-detach.service.js.map +1 -0
  468. package/dist/server/modules/remotes/services/remote-forced-detach.store.d.ts +23 -0
  469. package/dist/server/modules/remotes/services/remote-forced-detach.store.js +73 -0
  470. package/dist/server/modules/remotes/services/remote-forced-detach.store.js.map +1 -0
  471. package/dist/server/modules/remotes/services/remote-health.service.d.ts +7 -1
  472. package/dist/server/modules/remotes/services/remote-health.service.js +41 -4
  473. package/dist/server/modules/remotes/services/remote-health.service.js.map +1 -1
  474. package/dist/server/modules/remotes/services/remote-provider-usage-settings.service.d.ts +13 -0
  475. package/dist/server/modules/remotes/services/remote-provider-usage-settings.service.js +57 -0
  476. package/dist/server/modules/remotes/services/remote-provider-usage-settings.service.js.map +1 -0
  477. package/dist/server/modules/remotes/services/remote-shared-vm.service.d.ts +37 -0
  478. package/dist/server/modules/remotes/services/remote-shared-vm.service.js +184 -0
  479. package/dist/server/modules/remotes/services/remote-shared-vm.service.js.map +1 -0
  480. package/dist/server/modules/remotes/services/remote-shared-vm.store.d.ts +11 -0
  481. package/dist/server/modules/remotes/services/remote-shared-vm.store.js +75 -0
  482. package/dist/server/modules/remotes/services/remote-shared-vm.store.js.map +1 -0
  483. package/dist/server/modules/remotes/sync/remote-file-sync.service.d.ts +5 -1
  484. package/dist/server/modules/remotes/sync/remote-file-sync.service.js +95 -41
  485. package/dist/server/modules/remotes/sync/remote-file-sync.service.js.map +1 -1
  486. package/dist/server/modules/remotes/time/project-time-settler.dto.d.ts +2 -2
  487. package/dist/server/modules/remotes/transport/host-transport.d.ts +2 -0
  488. package/dist/server/modules/remotes/transport/host-transport.js +7 -0
  489. package/dist/server/modules/remotes/transport/host-transport.js.map +1 -1
  490. package/dist/server/modules/reviews/dtos/review.dto.d.ts +2 -2
  491. package/dist/server/modules/runtime-context-capture/codex-plugin-profile-materializer.service.d.ts +5 -1
  492. package/dist/server/modules/runtime-context-capture/codex-plugin-profile-materializer.service.js +25 -5
  493. package/dist/server/modules/runtime-context-capture/codex-plugin-profile-materializer.service.js.map +1 -1
  494. package/dist/server/modules/session-reader/__fixtures__/opencode-fixture-db.d.ts +6 -4
  495. package/dist/server/modules/session-reader/__fixtures__/opencode-fixture-db.js +17 -20
  496. package/dist/server/modules/session-reader/__fixtures__/opencode-fixture-db.js.map +1 -1
  497. package/dist/server/modules/session-reader/__fixtures__/opencode-v2-fixture-db.d.ts +61 -0
  498. package/dist/server/modules/session-reader/__fixtures__/opencode-v2-fixture-db.js +250 -0
  499. package/dist/server/modules/session-reader/__fixtures__/opencode-v2-fixture-db.js.map +1 -0
  500. package/dist/server/modules/session-reader/adapters/codex-session-reader.adapter.d.ts +1 -0
  501. package/dist/server/modules/session-reader/adapters/codex-session-reader.adapter.js +1 -0
  502. package/dist/server/modules/session-reader/adapters/codex-session-reader.adapter.js.map +1 -1
  503. package/dist/server/modules/session-reader/adapters/opencode-session-reader.adapter.d.ts +3 -1
  504. package/dist/server/modules/session-reader/adapters/opencode-session-reader.adapter.js +34 -13
  505. package/dist/server/modules/session-reader/adapters/opencode-session-reader.adapter.js.map +1 -1
  506. package/dist/server/modules/session-reader/adapters/session-reader-adapter.interface.d.ts +1 -0
  507. package/dist/server/modules/session-reader/data/pricing.json +302 -61
  508. package/dist/server/modules/session-reader/readers/opencode-sqlite.db.d.ts +73 -0
  509. package/dist/server/modules/session-reader/readers/opencode-sqlite.db.js +176 -0
  510. package/dist/server/modules/session-reader/readers/opencode-sqlite.db.js.map +1 -0
  511. package/dist/server/modules/session-reader/readers/opencode-sqlite.v1.reader.d.ts +45 -0
  512. package/dist/server/modules/session-reader/readers/{opencode-sqlite.reader.js → opencode-sqlite.v1.reader.js} +171 -164
  513. package/dist/server/modules/session-reader/readers/opencode-sqlite.v1.reader.js.map +1 -0
  514. package/dist/server/modules/session-reader/readers/opencode-sqlite.v2.reader.d.ts +15 -0
  515. package/dist/server/modules/session-reader/readers/opencode-sqlite.v2.reader.js +474 -0
  516. package/dist/server/modules/session-reader/readers/opencode-sqlite.v2.reader.js.map +1 -0
  517. package/dist/server/modules/session-reader/services/pricing.interface.d.ts +1 -0
  518. package/dist/server/modules/session-reader/services/pricing.interface.js.map +1 -1
  519. package/dist/server/modules/session-reader/services/pricing.service.d.ts +1 -0
  520. package/dist/server/modules/session-reader/services/pricing.service.js +3 -0
  521. package/dist/server/modules/session-reader/services/pricing.service.js.map +1 -1
  522. package/dist/server/modules/session-reader/services/session-reader.service.js +6 -1
  523. package/dist/server/modules/session-reader/services/session-reader.service.js.map +1 -1
  524. package/dist/server/modules/sessions/services/message-enqueue.service.d.ts +3 -0
  525. package/dist/server/modules/sessions/services/message-enqueue.service.js +1 -0
  526. package/dist/server/modules/sessions/services/message-enqueue.service.js.map +1 -1
  527. package/dist/server/modules/sessions/services/message-pool.types.d.ts +6 -0
  528. package/dist/server/modules/sessions/services/message-pool.types.js +6 -1
  529. package/dist/server/modules/sessions/services/message-pool.types.js.map +1 -1
  530. package/dist/server/modules/sessions/services/provider-launch-config/provider-launch-config.service.d.ts +2 -0
  531. package/dist/server/modules/sessions/services/provider-launch-config/provider-launch-config.service.js +18 -1
  532. package/dist/server/modules/sessions/services/provider-launch-config/provider-launch-config.service.js.map +1 -1
  533. package/dist/server/modules/sessions/services/provider-runtime-preparation/provider-runtime-preparation.service.d.ts +5 -1
  534. package/dist/server/modules/sessions/services/provider-runtime-preparation/provider-runtime-preparation.service.js +26 -2
  535. package/dist/server/modules/sessions/services/provider-runtime-preparation/provider-runtime-preparation.service.js.map +1 -1
  536. package/dist/server/modules/sessions/services/session-lifecycle-facade.service.d.ts +7 -2
  537. package/dist/server/modules/sessions/services/session-lifecycle-facade.service.js +4 -4
  538. package/dist/server/modules/sessions/services/session-lifecycle-facade.service.js.map +1 -1
  539. package/dist/server/modules/sessions/services/sessions-message-pool.service.d.ts +1 -0
  540. package/dist/server/modules/sessions/services/sessions-message-pool.service.js +30 -0
  541. package/dist/server/modules/sessions/services/sessions-message-pool.service.js.map +1 -1
  542. package/dist/server/modules/sessions/sessions.module.js +5 -0
  543. package/dist/server/modules/sessions/sessions.module.js.map +1 -1
  544. package/dist/server/modules/settings/dtos/settings.dto.d.ts +33 -0
  545. package/dist/server/modules/settings/dtos/settings.dto.js +2 -0
  546. package/dist/server/modules/settings/dtos/settings.dto.js.map +1 -1
  547. package/dist/server/modules/settings/local/delegates/core-settings.delegate.d.ts +3 -0
  548. package/dist/server/modules/settings/local/delegates/core-settings.delegate.js +35 -0
  549. package/dist/server/modules/settings/local/delegates/core-settings.delegate.js.map +1 -1
  550. package/dist/server/modules/settings/local/delegates/provider-cli-settings.delegate.js +6 -1
  551. package/dist/server/modules/settings/local/delegates/provider-cli-settings.delegate.js.map +1 -1
  552. package/dist/server/modules/settings/services/settings.service.d.ts +2 -1
  553. package/dist/server/modules/settings/services/settings.service.js +3 -0
  554. package/dist/server/modules/settings/services/settings.service.js.map +1 -1
  555. package/dist/server/modules/storage/db/schema.d.ts +235 -0
  556. package/dist/server/modules/storage/db/schema.js +22 -1
  557. package/dist/server/modules/storage/db/schema.js.map +1 -1
  558. package/dist/server/modules/storage/interfaces/storage.interface.d.ts +10 -2
  559. package/dist/server/modules/storage/interfaces/storage.interface.js.map +1 -1
  560. package/dist/server/modules/storage/local/delegates/project-replica.delegate.js +7 -0
  561. package/dist/server/modules/storage/local/delegates/project-replica.delegate.js.map +1 -1
  562. package/dist/server/modules/storage/local/delegates/worktree.delegate.d.ts +14 -0
  563. package/dist/server/modules/storage/local/delegates/worktree.delegate.js +89 -0
  564. package/dist/server/modules/storage/local/delegates/worktree.delegate.js.map +1 -0
  565. package/dist/server/modules/storage/local/helpers/host-abandoned-projects.d.ts +5 -0
  566. package/dist/server/modules/storage/local/helpers/host-abandoned-projects.js +39 -0
  567. package/dist/server/modules/storage/local/helpers/host-abandoned-projects.js.map +1 -0
  568. package/dist/server/modules/storage/local/local-storage.service.js +2 -0
  569. package/dist/server/modules/storage/local/local-storage.service.js.map +1 -1
  570. package/dist/server/modules/storage/local/storage-routes.d.ts +26 -0
  571. package/dist/server/modules/storage/local/storage-routes.js +9 -0
  572. package/dist/server/modules/storage/local/storage-routes.js.map +1 -1
  573. package/dist/server/modules/storage/models/domain.models.d.ts +20 -1
  574. package/dist/server/modules/storage/models/domain.models.js +1 -0
  575. package/dist/server/modules/storage/models/domain.models.js.map +1 -1
  576. package/dist/server/modules/storage/write-gate/storage-write-scope.d.ts +1 -0
  577. package/dist/server/modules/storage/write-gate/storage-write-scope.js +1 -0
  578. package/dist/server/modules/storage/write-gate/storage-write-scope.js.map +1 -1
  579. package/dist/server/modules/teams/services/teams.service.d.ts +46 -6
  580. package/dist/server/modules/teams/services/teams.service.js +129 -8
  581. package/dist/server/modules/teams/services/teams.service.js.map +1 -1
  582. package/dist/server/modules/teams/teams.module.js +14 -1
  583. package/dist/server/modules/teams/teams.module.js.map +1 -1
  584. package/dist/server/modules/vm-providers/proxmox-vm.provider.d.ts +1 -0
  585. package/dist/server/modules/vm-providers/proxmox-vm.provider.js +17 -0
  586. package/dist/server/modules/vm-providers/proxmox-vm.provider.js.map +1 -1
  587. package/dist/server/modules/worktrees/git-output.d.ts +5 -0
  588. package/dist/server/modules/worktrees/git-output.js +53 -0
  589. package/dist/server/modules/worktrees/git-output.js.map +1 -0
  590. package/dist/server/modules/worktrees/host-worktrees.controller.d.ts +10 -0
  591. package/dist/server/modules/worktrees/host-worktrees.controller.js +59 -0
  592. package/dist/server/modules/worktrees/host-worktrees.controller.js.map +1 -0
  593. package/dist/server/modules/worktrees/host-worktrees.dto.d.ts +40 -0
  594. package/dist/server/modules/worktrees/host-worktrees.dto.js +9 -0
  595. package/dist/server/modules/worktrees/host-worktrees.dto.js.map +1 -0
  596. package/dist/server/modules/worktrees/project-git-mutex.d.ts +5 -0
  597. package/dist/server/modules/worktrees/project-git-mutex.js +38 -0
  598. package/dist/server/modules/worktrees/project-git-mutex.js.map +1 -0
  599. package/dist/server/modules/worktrees/worktree-admission.service.d.ts +15 -0
  600. package/dist/server/modules/worktrees/worktree-admission.service.js +87 -0
  601. package/dist/server/modules/worktrees/worktree-admission.service.js.map +1 -0
  602. package/dist/server/modules/worktrees/worktree-git-runner.d.ts +12 -0
  603. package/dist/server/modules/worktrees/worktree-git-runner.js +57 -0
  604. package/dist/server/modules/worktrees/worktree-git-runner.js.map +1 -0
  605. package/dist/server/modules/worktrees/worktrees.errors.d.ts +5 -0
  606. package/dist/server/modules/worktrees/worktrees.errors.js +11 -0
  607. package/dist/server/modules/worktrees/worktrees.errors.js.map +1 -0
  608. package/dist/server/modules/worktrees/worktrees.module.d.ts +2 -0
  609. package/dist/server/modules/worktrees/worktrees.module.js +37 -0
  610. package/dist/server/modules/worktrees/worktrees.module.js.map +1 -0
  611. package/dist/server/modules/worktrees/worktrees.service.d.ts +50 -0
  612. package/dist/server/modules/worktrees/worktrees.service.js +586 -0
  613. package/dist/server/modules/worktrees/worktrees.service.js.map +1 -0
  614. package/dist/server/modules/worktrees/worktrees.types.d.ts +58 -0
  615. package/dist/server/modules/worktrees/worktrees.types.js +3 -0
  616. package/dist/server/modules/worktrees/worktrees.types.js.map +1 -0
  617. package/dist/server/templates/teams-dev.json +6 -6
  618. package/dist/server/tsconfig.build.tsbuildinfo +1 -1
  619. package/dist/server/ui/assets/{ExternalRichEditor-CB-LjWox.js → ExternalRichEditor-NpBNzn_X.js} +1 -1
  620. package/dist/server/ui/assets/{ReviewDetailPage-CpMMjYet.js → ReviewDetailPage-DxVCE1zh.js} +1 -1
  621. package/dist/server/ui/assets/{ReviewsPage-Cw17_agp.js → ReviewsPage-Bx6jkULr.js} +1 -1
  622. package/dist/server/ui/assets/index-BZjQEWOy.css +32 -0
  623. package/dist/server/ui/assets/{index-DmRXRpSy.js → index-CLPZxkZt.js} +263 -263
  624. package/dist/server/ui/assets/{useReviewSubscription-wd5iHNQy.js → useReviewSubscription-BLuFzXjh.js} +1 -1
  625. package/dist/server/ui/index.html +2 -2
  626. package/dist/templates/teams-dev.json +6 -6
  627. package/npm-shrinkwrap.json +6189 -0
  628. package/package.json +19 -13
  629. package/dist/server/modules/file-sync/host-git-index.controller.d.ts +0 -10
  630. package/dist/server/modules/file-sync/host-git-index.controller.js +0 -67
  631. package/dist/server/modules/file-sync/host-git-index.controller.js.map +0 -1
  632. package/dist/server/modules/remotes/operations/git-owner.operation.d.ts +0 -35
  633. package/dist/server/modules/remotes/operations/git-owner.operation.js +0 -216
  634. package/dist/server/modules/remotes/operations/git-owner.operation.js.map +0 -1
  635. package/dist/server/modules/session-reader/readers/opencode-sqlite.reader.d.ts +0 -73
  636. package/dist/server/modules/session-reader/readers/opencode-sqlite.reader.js.map +0 -1
  637. package/dist/server/ui/assets/index-BwuNu70G.css +0 -32
@@ -0,0 +1,24 @@
1
+ import type { FastifyRequest } from 'fastify';
2
+ import { HostApiKeyService } from './host-api-key.service';
3
+ import { HostHelperService } from './host-helper.service';
4
+ import { HostSharedVmService } from './host-shared-vm.service';
5
+ import { HostSharedVmStore } from './host-shared-vm.store';
6
+ export declare class HostSharedVmController {
7
+ private readonly shared;
8
+ private readonly store;
9
+ private readonly keys;
10
+ private readonly helper;
11
+ constructor(shared: HostSharedVmService, store: HostSharedVmStore, keys: HostApiKeyService, helper: HostHelperService);
12
+ count(request: FastifyRequest): ReturnType<HostSharedVmStore['readOccupancy']>;
13
+ receive(request: FastifyRequest, body: unknown): Promise<void>;
14
+ roster(request: FastifyRequest): ReturnType<HostSharedVmService['roster']>;
15
+ notify(request: FastifyRequest, body: unknown): ReturnType<HostSharedVmService['notify']>;
16
+ notices(request: FastifyRequest): {
17
+ notices: ReturnType<HostSharedVmStore['notices']>;
18
+ };
19
+ dismiss(request: FastifyRequest, body: unknown): Promise<void>;
20
+ abandon(request: FastifyRequest, body: unknown): Promise<void>;
21
+ fence(request: FastifyRequest, body: unknown): ReturnType<HostHelperService['destroyFence']>;
22
+ private key;
23
+ private loopback;
24
+ }
@@ -0,0 +1,183 @@
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.HostSharedVmController = void 0;
16
+ const common_1 = require("@nestjs/common");
17
+ const swagger_1 = require("@nestjs/swagger");
18
+ const integration_admission_1 = require("../../../common/config/integration-admission");
19
+ const error_types_1 = require("../../../common/errors/error-types");
20
+ const host_api_key_service_1 = require("./host-api-key.service");
21
+ const host_helper_service_1 = require("./host-helper.service");
22
+ const host_shared_vm_service_1 = require("./host-shared-vm.service");
23
+ const host_shared_vm_store_1 = require("./host-shared-vm.store");
24
+ const shared_vm_contract_1 = require("./shared-vm.contract");
25
+ let HostSharedVmController = class HostSharedVmController {
26
+ shared;
27
+ store;
28
+ keys;
29
+ helper;
30
+ constructor(shared, store, keys, helper) {
31
+ this.shared = shared;
32
+ this.store = store;
33
+ this.keys = keys;
34
+ this.helper = helper;
35
+ }
36
+ count(request) {
37
+ this.loopback(request);
38
+ return this.store.readOccupancy();
39
+ }
40
+ async receive(request, body) {
41
+ this.loopback(request);
42
+ await this.store.receive(shared_vm_contract_1.SharedVmInboxSchema.parse(body));
43
+ }
44
+ roster(request) {
45
+ this.key(request);
46
+ return this.shared.roster();
47
+ }
48
+ notify(request, body) {
49
+ this.key(request);
50
+ return this.shared.notify(shared_vm_contract_1.SharedVmNotifySchema.parse(body));
51
+ }
52
+ notices(request) {
53
+ this.key(request);
54
+ return { notices: this.store.notices() };
55
+ }
56
+ async dismiss(request, body) {
57
+ this.key(request);
58
+ await this.store.dismiss(shared_vm_contract_1.SharedVmDismissSchema.parse(body).id);
59
+ }
60
+ async abandon(request, body) {
61
+ this.key(request);
62
+ await this.store.abandon(shared_vm_contract_1.SharedVmAbandonSchema.parse(body).projectId);
63
+ }
64
+ fence(request, body) {
65
+ this.key(request);
66
+ this.shared.assertOwner();
67
+ const { mode, operationId } = shared_vm_contract_1.SharedVmFenceRequestSchema.parse(body);
68
+ return this.helper.destroyFence(mode, operationId);
69
+ }
70
+ key(request) {
71
+ const refusal = this.keys.allows(request.raw, 'http', true);
72
+ if (refusal)
73
+ throw new error_types_1.AppError(refusal.message, refusal.code, refusal.statusCode);
74
+ this.helper.assertClaimedHost();
75
+ }
76
+ loopback(request) {
77
+ if (!(0, integration_admission_1.isLoopbackHost)(request.raw.socket.remoteAddress ?? '')) {
78
+ throw new error_types_1.ForbiddenError('This route accepts only loopback callers.', {
79
+ code: 'HOST_LOOPBACK_REQUIRED',
80
+ });
81
+ }
82
+ this.helper.assertClaimedHost();
83
+ }
84
+ };
85
+ exports.HostSharedVmController = HostSharedVmController;
86
+ __decorate([
87
+ (0, common_1.Get)('connected-count'),
88
+ (0, swagger_1.ApiOperation)({ summary: 'Loopback-only connected-project count' }),
89
+ (0, swagger_1.ApiResponse)({ status: 200, description: 'Count of non-template, non-abandoned projects' }),
90
+ (0, swagger_1.ApiResponse)({
91
+ status: 503,
92
+ description: 'An admitted writer prevents a current occupancy snapshot',
93
+ }),
94
+ __param(0, (0, common_1.Req)()),
95
+ __metadata("design:type", Function),
96
+ __metadata("design:paramtypes", [Object]),
97
+ __metadata("design:returntype", void 0)
98
+ ], HostSharedVmController.prototype, "count", null);
99
+ __decorate([
100
+ (0, common_1.Post)('inbox'),
101
+ (0, common_1.HttpCode)(204),
102
+ (0, swagger_1.ApiOperation)({ summary: 'Loopback-only notice delivery' }),
103
+ (0, swagger_1.ApiResponse)({ status: 204, description: 'Notice stored in this instance' }),
104
+ __param(0, (0, common_1.Req)()),
105
+ __param(1, (0, common_1.Body)()),
106
+ __metadata("design:type", Function),
107
+ __metadata("design:paramtypes", [Object, Object]),
108
+ __metadata("design:returntype", Promise)
109
+ ], HostSharedVmController.prototype, "receive", null);
110
+ __decorate([
111
+ (0, common_1.Get)('roster'),
112
+ (0, swagger_1.ApiOperation)({ summary: 'Read every claimed instance and its occupancy' }),
113
+ (0, swagger_1.ApiResponse)({
114
+ status: 200,
115
+ description: 'Registry instances, with unknown for unavailable counts',
116
+ }),
117
+ __param(0, (0, common_1.Req)()),
118
+ __metadata("design:type", Function),
119
+ __metadata("design:paramtypes", [Object]),
120
+ __metadata("design:returntype", void 0)
121
+ ], HostSharedVmController.prototype, "roster", null);
122
+ __decorate([
123
+ (0, common_1.Post)('notify'),
124
+ (0, common_1.HttpCode)(200),
125
+ (0, swagger_1.ApiOperation)({ summary: 'Notify every other VM user once' }),
126
+ (0, swagger_1.ApiResponse)({ status: 200, description: 'Per-user delivery results' }),
127
+ __param(0, (0, common_1.Req)()),
128
+ __param(1, (0, common_1.Body)()),
129
+ __metadata("design:type", Function),
130
+ __metadata("design:paramtypes", [Object, Object]),
131
+ __metadata("design:returntype", void 0)
132
+ ], HostSharedVmController.prototype, "notify", null);
133
+ __decorate([
134
+ (0, common_1.Get)('notices'),
135
+ (0, swagger_1.ApiOperation)({ summary: 'Read this instance notice inbox' }),
136
+ (0, swagger_1.ApiResponse)({ status: 200, description: 'Notices awaiting dismissal' }),
137
+ __param(0, (0, common_1.Req)()),
138
+ __metadata("design:type", Function),
139
+ __metadata("design:paramtypes", [Object]),
140
+ __metadata("design:returntype", Object)
141
+ ], HostSharedVmController.prototype, "notices", null);
142
+ __decorate([
143
+ (0, common_1.Post)('dismiss'),
144
+ (0, common_1.HttpCode)(204),
145
+ (0, swagger_1.ApiOperation)({ summary: 'Dismiss one notice' }),
146
+ (0, swagger_1.ApiResponse)({ status: 204, description: 'Notice dismissed, including already absent IDs' }),
147
+ __param(0, (0, common_1.Req)()),
148
+ __param(1, (0, common_1.Body)()),
149
+ __metadata("design:type", Function),
150
+ __metadata("design:paramtypes", [Object, Object]),
151
+ __metadata("design:returntype", Promise)
152
+ ], HostSharedVmController.prototype, "dismiss", null);
153
+ __decorate([
154
+ (0, common_1.Post)('abandon'),
155
+ (0, common_1.HttpCode)(204),
156
+ (0, swagger_1.ApiOperation)({ summary: 'Exclude a forced-disconnected project from occupancy' }),
157
+ (0, swagger_1.ApiResponse)({ status: 204, description: 'Project excluded; its rows and files remain' }),
158
+ __param(0, (0, common_1.Req)()),
159
+ __param(1, (0, common_1.Body)()),
160
+ __metadata("design:type", Function),
161
+ __metadata("design:paramtypes", [Object, Object]),
162
+ __metadata("design:returntype", Promise)
163
+ ], HostSharedVmController.prototype, "abandon", null);
164
+ __decorate([
165
+ (0, common_1.Post)('fence'),
166
+ (0, common_1.HttpCode)(200),
167
+ (0, swagger_1.ApiOperation)({ summary: 'Set or clear the owner destroy fence' }),
168
+ (0, swagger_1.ApiResponse)({ status: 200, description: 'VM-wide fence, or null after clearing' }),
169
+ __param(0, (0, common_1.Req)()),
170
+ __param(1, (0, common_1.Body)()),
171
+ __metadata("design:type", Function),
172
+ __metadata("design:paramtypes", [Object, Object]),
173
+ __metadata("design:returntype", void 0)
174
+ ], HostSharedVmController.prototype, "fence", null);
175
+ exports.HostSharedVmController = HostSharedVmController = __decorate([
176
+ (0, swagger_1.ApiTags)('host'),
177
+ (0, common_1.Controller)('api/host/shared-vm'),
178
+ __metadata("design:paramtypes", [host_shared_vm_service_1.HostSharedVmService,
179
+ host_shared_vm_store_1.HostSharedVmStore,
180
+ host_api_key_service_1.HostApiKeyService,
181
+ host_helper_service_1.HostHelperService])
182
+ ], HostSharedVmController);
183
+ //# sourceMappingURL=host-shared-vm.controller.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"host-shared-vm.controller.js","sourceRoot":"","sources":["../../../../src/modules/remotes/host/host-shared-vm.controller.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,28 @@
1
+ import { z } from 'zod';
2
+ import { HostHelperService } from './host-helper.service';
3
+ import type { SharedVmNotify, SharedVmNotifyResult, SharedVmRoster } from './shared-vm.contract';
4
+ declare const ClaimSchema: z.ZodObject<{
5
+ userName: z.ZodString;
6
+ port: z.ZodNumber;
7
+ version: z.ZodOptional<z.ZodString>;
8
+ }, "strip", z.ZodTypeAny, {
9
+ port: number;
10
+ userName: string;
11
+ version?: string | undefined;
12
+ }, {
13
+ port: number;
14
+ userName: string;
15
+ version?: string | undefined;
16
+ }>;
17
+ type Claim = z.infer<typeof ClaimSchema>;
18
+ export declare class HostSharedVmService {
19
+ private readonly helper;
20
+ constructor(helper: HostHelperService);
21
+ roster(): Promise<SharedVmRoster>;
22
+ notify(notice: SharedVmNotify): Promise<SharedVmNotifyResult>;
23
+ assertOwner(): Claim;
24
+ private registryDir;
25
+ private registry;
26
+ private readClaim;
27
+ }
28
+ export {};
@@ -0,0 +1,159 @@
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
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.HostSharedVmService = void 0;
13
+ const common_1 = require("@nestjs/common");
14
+ const node_fs_1 = require("node:fs");
15
+ const node_path_1 = require("node:path");
16
+ const zod_1 = require("zod");
17
+ const env_config_1 = require("../../../common/config/env.config");
18
+ const vm_destroy_fence_1 = require("../../../common/config/vm-destroy-fence");
19
+ const error_types_1 = require("../../../common/errors/error-types");
20
+ const host_helper_service_1 = require("./host-helper.service");
21
+ const shared_vm_contract_1 = require("./shared-vm.contract");
22
+ const PEER_TIMEOUT_MS = 2000;
23
+ const ClaimSchema = zod_1.z.object({
24
+ userName: vm_destroy_fence_1.InstanceUserNameSchema,
25
+ port: zod_1.z.number().int().min(1024).max(65535),
26
+ version: zod_1.z.string().optional(),
27
+ });
28
+ let HostSharedVmService = class HostSharedVmService {
29
+ helper;
30
+ constructor(helper) {
31
+ this.helper = helper;
32
+ }
33
+ async roster() {
34
+ this.helper.assertClaimedHost();
35
+ const instances = await Promise.all(this.registry().map(async (claim) => {
36
+ let connectedCount = 'unknown';
37
+ let connectedProjectIds = 'unknown';
38
+ try {
39
+ const response = await fetch(`http://127.0.0.1:${claim.port}/api/host/shared-vm/connected-count`, {
40
+ signal: AbortSignal.timeout(PEER_TIMEOUT_MS),
41
+ redirect: 'error',
42
+ });
43
+ if (response.ok) {
44
+ const occupancy = shared_vm_contract_1.SharedVmCountSchema.parse(await response.json());
45
+ connectedCount = occupancy.connectedCount;
46
+ connectedProjectIds = occupancy.connectedProjectIds;
47
+ }
48
+ else
49
+ await response.body?.cancel();
50
+ }
51
+ catch {
52
+ }
53
+ return {
54
+ user: claim.userName,
55
+ port: claim.port,
56
+ version: claim.version ?? null,
57
+ connectedCount,
58
+ connectedProjectIds,
59
+ };
60
+ }));
61
+ return { instances };
62
+ }
63
+ async notify(notice) {
64
+ const owner = this.assertOwner();
65
+ const body = JSON.stringify({
66
+ ...notice,
67
+ fromUser: owner.userName,
68
+ at: new Date().toISOString(),
69
+ });
70
+ const results = await Promise.all(this.registry()
71
+ .filter((claim) => claim.userName !== owner.userName)
72
+ .map(async (claim) => {
73
+ let delivered = false;
74
+ try {
75
+ const response = await fetch(`http://127.0.0.1:${claim.port}/api/host/shared-vm/inbox`, {
76
+ method: 'POST',
77
+ headers: { 'content-type': 'application/json' },
78
+ body,
79
+ signal: AbortSignal.timeout(PEER_TIMEOUT_MS),
80
+ redirect: 'error',
81
+ });
82
+ delivered = response.ok;
83
+ await response.body?.cancel();
84
+ }
85
+ catch {
86
+ }
87
+ return { user: claim.userName, delivered };
88
+ }));
89
+ return { results };
90
+ }
91
+ assertOwner() {
92
+ this.helper.assertClaimedHost();
93
+ const ownDir = (0, node_path_1.resolve)((0, env_config_1.getEnvConfig)().DEVCHAIN_HOST_ETC_DIR);
94
+ const ownerDir = this.registryDir();
95
+ if (ownDir !== ownerDir) {
96
+ throw new error_types_1.ForbiddenError('Only the VM owner can set a destroy fence or notify other users.', {
97
+ code: 'VM_OWNER_REQUIRED',
98
+ });
99
+ }
100
+ const owner = this.readClaim((0, node_path_1.join)(ownerDir, 'claim.json'));
101
+ if (!owner)
102
+ throw new error_types_1.IOError('The VM owner claim is missing.');
103
+ return owner;
104
+ }
105
+ registryDir() {
106
+ const own = (0, node_path_1.resolve)((0, env_config_1.getEnvConfig)().DEVCHAIN_HOST_ETC_DIR);
107
+ return (0, node_path_1.basename)((0, node_path_1.dirname)(own)) === 'instances' ? (0, node_path_1.dirname)((0, node_path_1.dirname)(own)) : own;
108
+ }
109
+ registry() {
110
+ const root = this.registryDir();
111
+ const claims = [];
112
+ const owner = this.readClaim((0, node_path_1.join)(root, 'claim.json'));
113
+ if (owner)
114
+ claims.push(owner);
115
+ let entries;
116
+ try {
117
+ entries = (0, node_fs_1.readdirSync)((0, node_path_1.join)(root, 'instances'), { withFileTypes: true });
118
+ }
119
+ catch (error) {
120
+ if (error.code === 'ENOENT')
121
+ return claims;
122
+ throw new error_types_1.IOError('Cannot read the VM instance registry.');
123
+ }
124
+ for (const entry of entries) {
125
+ if (!entry.isDirectory() || !vm_destroy_fence_1.InstanceUserNameSchema.safeParse(entry.name).success) {
126
+ throw new error_types_1.IOError('The VM instance registry is invalid.');
127
+ }
128
+ const claim = this.readClaim((0, node_path_1.join)(root, 'instances', entry.name, 'claim.json'));
129
+ if (claim && claim.userName !== entry.name)
130
+ throw new error_types_1.IOError('The VM instance claim does not match its user.');
131
+ if (claim)
132
+ claims.push(claim);
133
+ }
134
+ return claims;
135
+ }
136
+ readClaim(file) {
137
+ let raw;
138
+ try {
139
+ raw = (0, node_fs_1.readFileSync)(file, 'utf8');
140
+ }
141
+ catch (error) {
142
+ if (error.code === 'ENOENT')
143
+ return null;
144
+ throw new error_types_1.IOError('Cannot read the VM instance claim.');
145
+ }
146
+ try {
147
+ return ClaimSchema.parse(JSON.parse(raw));
148
+ }
149
+ catch {
150
+ throw new error_types_1.IOError('The VM instance claim is invalid.');
151
+ }
152
+ }
153
+ };
154
+ exports.HostSharedVmService = HostSharedVmService;
155
+ exports.HostSharedVmService = HostSharedVmService = __decorate([
156
+ (0, common_1.Injectable)(),
157
+ __metadata("design:paramtypes", [host_helper_service_1.HostHelperService])
158
+ ], HostSharedVmService);
159
+ //# sourceMappingURL=host-shared-vm.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"host-shared-vm.service.js","sourceRoot":"","sources":["../../../../src/modules/remotes/host/host-shared-vm.service.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,18 @@
1
+ import type { BetterSQLite3Database } from 'drizzle-orm/better-sqlite3';
2
+ import type { SharedVmInbox, SharedVmNotice } from './shared-vm.contract';
3
+ export declare class HostSharedVmStore {
4
+ private readonly sqlite;
5
+ private readonly transactions;
6
+ constructor(db: BetterSQLite3Database);
7
+ connectedCount(): number;
8
+ readOccupancy(): Promise<ReturnType<HostSharedVmStore['occupancy']>>;
9
+ occupancy(): {
10
+ connectedCount: number;
11
+ connectedProjectIds: string[];
12
+ };
13
+ abandon(projectId: string): Promise<void>;
14
+ notices(): SharedVmNotice[];
15
+ receive(notice: SharedVmInbox): Promise<SharedVmNotice>;
16
+ dismiss(id: string): Promise<void>;
17
+ private writeNotices;
18
+ }
@@ -0,0 +1,105 @@
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.HostSharedVmStore = void 0;
16
+ const common_1 = require("@nestjs/common");
17
+ const node_crypto_1 = require("node:crypto");
18
+ const zod_1 = require("zod");
19
+ const error_types_1 = require("../../../common/errors/error-types");
20
+ const db_provider_1 = require("../../storage/db/db.provider");
21
+ const sqlite_raw_1 = require("../../storage/db/sqlite-raw");
22
+ const transaction_runner_1 = require("../../storage/db/transaction-runner");
23
+ const host_abandoned_projects_1 = require("../../storage/local/helpers/host-abandoned-projects");
24
+ const shared_vm_contract_1 = require("./shared-vm.contract");
25
+ const NOTICES_KEY = 'host.noticeInbox';
26
+ const NoticesSchema = zod_1.z.array(shared_vm_contract_1.SharedVmNoticeSchema);
27
+ let HostSharedVmStore = class HostSharedVmStore {
28
+ sqlite;
29
+ transactions;
30
+ constructor(db) {
31
+ this.sqlite = (0, sqlite_raw_1.getRawSqliteClient)(db);
32
+ this.transactions = new transaction_runner_1.TransactionRunner(this.sqlite);
33
+ }
34
+ connectedCount() {
35
+ return this.occupancy().connectedCount;
36
+ }
37
+ async readOccupancy() {
38
+ try {
39
+ return await this.transactions.runImmediateQueued(() => this.occupancy());
40
+ }
41
+ catch (error) {
42
+ if (error && typeof error === 'object' && 'code' in error && error.code === 'SQLITE_BUSY') {
43
+ throw new error_types_1.AppError('The VM occupancy snapshot is temporarily unavailable.', 'VM_OCCUPANCY_UNAVAILABLE', 503);
44
+ }
45
+ throw error;
46
+ }
47
+ }
48
+ occupancy() {
49
+ const abandoned = new Set((0, host_abandoned_projects_1.readAbandonedProjects)(this.sqlite));
50
+ const projects = this.sqlite
51
+ .prepare('SELECT id FROM projects WHERE is_template = 0')
52
+ .all();
53
+ const connectedProjectIds = projects
54
+ .filter(({ id }) => !abandoned.has(id))
55
+ .map(({ id }) => id)
56
+ .sort();
57
+ return { connectedCount: connectedProjectIds.length, connectedProjectIds };
58
+ }
59
+ async abandon(projectId) {
60
+ await this.transactions.runImmediateQueued(() => {
61
+ (0, host_abandoned_projects_1.writeAbandonedProjects)(this.sqlite, [...(0, host_abandoned_projects_1.readAbandonedProjects)(this.sqlite), projectId]);
62
+ });
63
+ }
64
+ notices() {
65
+ const row = this.sqlite.prepare('SELECT value FROM settings WHERE key = ?').get(NOTICES_KEY);
66
+ if (!row)
67
+ return [];
68
+ try {
69
+ return NoticesSchema.parse(JSON.parse(row.value));
70
+ }
71
+ catch {
72
+ throw new error_types_1.IOError('The host notice inbox is invalid.');
73
+ }
74
+ }
75
+ async receive(notice) {
76
+ return this.transactions.runImmediateQueued(() => {
77
+ const stored = shared_vm_contract_1.SharedVmNoticeSchema.parse({ ...notice, id: (0, node_crypto_1.randomUUID)() });
78
+ this.writeNotices([...this.notices(), stored]);
79
+ return stored;
80
+ });
81
+ }
82
+ async dismiss(id) {
83
+ await this.transactions.runImmediateQueued(() => {
84
+ const notices = this.notices();
85
+ const next = notices.filter((notice) => notice.id !== id);
86
+ if (next.length !== notices.length)
87
+ this.writeNotices(next);
88
+ });
89
+ }
90
+ writeNotices(notices) {
91
+ const now = new Date().toISOString();
92
+ this.sqlite
93
+ .prepare(`INSERT INTO settings (id, key, value, created_at, updated_at)
94
+ VALUES (lower(hex(randomblob(16))), ?, ?, ?, ?)
95
+ ON CONFLICT(key) DO UPDATE SET value = excluded.value, updated_at = excluded.updated_at`)
96
+ .run(NOTICES_KEY, JSON.stringify(notices), now, now);
97
+ }
98
+ };
99
+ exports.HostSharedVmStore = HostSharedVmStore;
100
+ exports.HostSharedVmStore = HostSharedVmStore = __decorate([
101
+ (0, common_1.Injectable)(),
102
+ __param(0, (0, common_1.Inject)(db_provider_1.DB_CONNECTION)),
103
+ __metadata("design:paramtypes", [Function])
104
+ ], HostSharedVmStore);
105
+ //# sourceMappingURL=host-shared-vm.store.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"host-shared-vm.store.js","sourceRoot":"","sources":["../../../../src/modules/remotes/host/host-shared-vm.store.ts"],"names":[],"mappings":"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"}
@@ -34,9 +34,9 @@ let HostUpdateController = class HostUpdateController {
34
34
  throw new error_types_1.ConflictError('This DevChain instance is not a host VM.', { code: 'NOT_A_HOST' });
35
35
  }
36
36
  async update(body) {
37
- const { version } = host_routes_1.hostRoutes.requestHostUpdate.body.parse(body);
38
- logger.info({ version }, 'POST /api/host/update');
39
- await this.helper.requestUpdate(version);
37
+ const { version, npmRegistry } = host_routes_1.hostRoutes.requestHostUpdate.body.parse(body);
38
+ logger.info({ version, registry: npmRegistry !== undefined }, 'POST /api/host/update');
39
+ await this.helper.requestUpdate(version, npmRegistry);
40
40
  return { version, state: 'pending' };
41
41
  }
42
42
  status() {
@@ -1 +1 @@
1
- {"version":3,"file":"host-update.controller.js","sourceRoot":"","sources":["../../../../src/modules/remotes/host/host-update.controller.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"host-update.controller.js","sourceRoot":"","sources":["../../../../src/modules/remotes/host/host-update.controller.ts"],"names":[],"mappings":"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"}
@@ -5,6 +5,7 @@ import { ProjectSessionsStopper } from '../services/project-sessions-stopper.ser
5
5
  import { ProjectReplicaApplier } from '../replica/project-replica.applier';
6
6
  import { ProjectReplicaBuilder } from '../replica/project-replica.builder';
7
7
  import { ProjectFreezeService } from './project-freeze.service';
8
+ import { GitCoordinatorService } from '../git-coordinator/git-coordinator.service';
8
9
  import { HostSkillSettingsService } from './host-skill-settings.service';
9
10
  import type { HostChangesQuery } from './host.dto';
10
11
  import { ProjectTimeSettler, type ProjectTimeSettlement } from '../time/project-time-settler.service';
@@ -18,7 +19,8 @@ export declare class HostService {
18
19
  private readonly timeSettler;
19
20
  private readonly skillSettings;
20
21
  private readonly settings;
21
- constructor(builder: ProjectReplicaBuilder, applier: ProjectReplicaApplier, freeze: ProjectFreezeService, storage: ProjectHostStorage, sessionsStopper: ProjectSessionsStopper, timeSettler: ProjectTimeSettler, skillSettings: HostSkillSettingsService, settings: SettingsService);
22
+ private readonly gitCoordinator;
23
+ constructor(builder: ProjectReplicaBuilder, applier: ProjectReplicaApplier, freeze: ProjectFreezeService, storage: ProjectHostStorage, sessionsStopper: ProjectSessionsStopper, timeSettler: ProjectTimeSettler, skillSettings: HostSkillSettingsService, settings: SettingsService, gitCoordinator: GitCoordinatorService);
22
24
  importProject(body: unknown, options: {
23
25
  resnapshot: boolean;
24
26
  }): Promise<ProjectReplicaImportResult>;