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
@@ -12,7 +12,7 @@ var __param = (this && this.__param) || function (paramIndex, decorator) {
12
12
  return function (target, key) { decorator(target, key, paramIndex); }
13
13
  };
14
14
  Object.defineProperty(exports, "__esModule", { value: true });
15
- exports.TerminalActivityService = void 0;
15
+ exports.TerminalActivityService = exports.POST_STOP_OUTPUT_GRACE_MS = exports.TURN_FALLBACK_IDLE_MS = void 0;
16
16
  const common_1 = require("@nestjs/common");
17
17
  const event_emitter_1 = require("@nestjs/event-emitter");
18
18
  const logger_1 = require("../../../common/logging/logger");
@@ -21,23 +21,45 @@ const better_sqlite3_1 = require("drizzle-orm/better-sqlite3");
21
21
  const sqlite_raw_1 = require("../../storage/db/sqlite-raw");
22
22
  const settings_service_1 = require("../../settings/services/settings.service");
23
23
  const settings_constants_1 = require("../../settings/services/settings.constants");
24
+ const pending_ask_user_question_service_1 = require("../../hooks/services/pending-ask-user-question.service");
24
25
  const terminal_session_registry_1 = require("./terminal-session/terminal-session-registry");
25
26
  const terminal_activity_1 = require("../utils/terminal-activity");
27
+ const session_turn_signals_1 = require("./session-turn-signals");
26
28
  const logger = (0, logger_1.createLogger)('TerminalActivityService');
29
+ exports.TURN_FALLBACK_IDLE_MS = 10 * 60 * 1000;
30
+ exports.POST_STOP_OUTPUT_GRACE_MS = 2000;
31
+ const TRANSCRIPT_TURN_POLICIES = new Set(['claude', 'codex']);
32
+ function policyFor(providerName) {
33
+ switch (providerName?.toLowerCase()) {
34
+ case 'claude':
35
+ return 'claude';
36
+ case 'codex':
37
+ return 'codex';
38
+ case 'copilot':
39
+ return 'copilot';
40
+ default:
41
+ return 'output';
42
+ }
43
+ }
27
44
  let TerminalActivityService = class TerminalActivityService {
28
45
  eventEmitter;
29
46
  settingsService;
30
47
  registry;
48
+ pendingQuestions;
31
49
  sqlite;
32
50
  idleTimers = new Map();
33
51
  lastSignalAt = new Map();
52
+ fallbackTimers = new Map();
53
+ heartbeatTimers = new Map();
54
+ turns = new Map();
34
55
  suppressUntil = new Map();
35
56
  frameListeners = new Map();
36
57
  idleAfterMs = settings_constants_1.DEFAULT_ACTIVITY_IDLE_TIMEOUT_MS;
37
- constructor(db, eventEmitter, settingsService, registry) {
58
+ constructor(db, eventEmitter, settingsService, registry, pendingQuestions) {
38
59
  this.eventEmitter = eventEmitter;
39
60
  this.settingsService = settingsService;
40
61
  this.registry = registry;
62
+ this.pendingQuestions = pendingQuestions;
41
63
  this.sqlite = (0, sqlite_raw_1.getRawSqliteClient)(db);
42
64
  this.refreshIdleTimeout();
43
65
  logger.info('TerminalActivityService initialized');
@@ -45,9 +67,49 @@ let TerminalActivityService = class TerminalActivityService {
45
67
  get idleTimeoutMs() {
46
68
  return this.idleAfterMs;
47
69
  }
70
+ onApplicationBootstrap() {
71
+ const rows = this.sqlite
72
+ .prepare(`SELECT id, provider_name_at_launch FROM sessions
73
+ WHERE status = 'running' AND activity_state = 'busy'`)
74
+ .all();
75
+ for (const row of rows) {
76
+ const policy = policyFor(row.provider_name_at_launch);
77
+ const turn = this.turnRecord(row.id);
78
+ if (turn.hold !== null)
79
+ continue;
80
+ if (TRANSCRIPT_TURN_POLICIES.has(policy)) {
81
+ turn.hold = 'turn';
82
+ this.armFallback(row.id);
83
+ }
84
+ else {
85
+ turn.hold = 'output';
86
+ this.lastSignalAt.set(row.id, Date.now());
87
+ this.scheduleIdle(row.id);
88
+ }
89
+ }
90
+ }
48
91
  handleRemoteProjectSynced() {
49
92
  this.refreshIdleTimeout();
50
93
  }
94
+ handleTurnHook(signal) {
95
+ try {
96
+ if (signal.kind === 'prompt-submitted')
97
+ this.promptSubmitted(signal);
98
+ else
99
+ this.turnStopped(signal);
100
+ }
101
+ catch (error) {
102
+ logger.warn({ error, sessionId: signal.sessionId }, 'Failed to apply turn hook');
103
+ }
104
+ }
105
+ handleTranscriptTurn(signal) {
106
+ try {
107
+ this.transcriptTurn(signal);
108
+ }
109
+ catch (error) {
110
+ logger.warn({ error, sessionId: signal.sessionId }, 'Failed to apply transcript turn');
111
+ }
112
+ }
51
113
  refreshIdleTimeout() {
52
114
  const configured = Number(this.settingsService.getSetting('activity.idleTimeoutMs'));
53
115
  const resolved = Number.isFinite(configured) && configured > 0 ? configured : settings_constants_1.DEFAULT_ACTIVITY_IDLE_TIMEOUT_MS;
@@ -57,6 +119,8 @@ let TerminalActivityService = class TerminalActivityService {
57
119
  this.idleAfterMs = resolved;
58
120
  for (const sessionId of this.idleTimers.keys())
59
121
  this.scheduleIdle(sessionId);
122
+ for (const sessionId of [...this.heartbeatTimers.keys()])
123
+ this.armHeartbeat(sessionId);
60
124
  }
61
125
  watchSession(sessionId, suppressUntil = 0) {
62
126
  const session = this.registry.get(sessionId);
@@ -94,12 +158,9 @@ let TerminalActivityService = class TerminalActivityService {
94
158
  this.suppressUntil.set(sessionId, suppressUntil);
95
159
  }
96
160
  clearSession(sessionId) {
97
- const timer = this.idleTimers.get(sessionId);
98
- if (timer) {
99
- clearTimeout(timer);
100
- this.idleTimers.delete(sessionId);
101
- }
161
+ this.clearTimers(sessionId);
102
162
  this.lastSignalAt.delete(sessionId);
163
+ this.turns.delete(sessionId);
103
164
  const listener = this.frameListeners.get(sessionId);
104
165
  if (listener) {
105
166
  const session = this.registry.get(sessionId);
@@ -111,41 +172,187 @@ let TerminalActivityService = class TerminalActivityService {
111
172
  this.suppressUntil.delete(sessionId);
112
173
  }
113
174
  onModuleDestroy() {
114
- for (const timer of this.idleTimers.values())
115
- clearTimeout(timer);
116
- this.idleTimers.clear();
175
+ for (const timers of [this.idleTimers, this.fallbackTimers, this.heartbeatTimers]) {
176
+ for (const timer of timers.values())
177
+ clearTimeout(timer);
178
+ timers.clear();
179
+ }
117
180
  }
118
- getBufferSize(_sessionId) {
119
- return 0;
181
+ readSession(sessionId) {
182
+ return this.sqlite
183
+ .prepare(`SELECT status, activity_state, provider_name_at_launch FROM sessions WHERE id = ?`)
184
+ .get(sessionId);
120
185
  }
121
- isSessionRunning(sessionId) {
122
- const row = this.sqlite.prepare(`SELECT status FROM sessions WHERE id = ?`).get(sessionId);
123
- return row?.status === 'running';
186
+ turnRecord(sessionId) {
187
+ let turn = this.turns.get(sessionId);
188
+ if (!turn) {
189
+ turn = {
190
+ openedAtMs: Number.NEGATIVE_INFINITY,
191
+ closedAtMs: Number.NEGATIVE_INFINITY,
192
+ hasTurnEvidence: false,
193
+ transcriptOpen: null,
194
+ hold: null,
195
+ outputIgnoredUntil: 0,
196
+ };
197
+ this.turns.set(sessionId, turn);
198
+ }
199
+ return turn;
124
200
  }
125
201
  signal(sessionId) {
126
- if (!this.isSessionRunning(sessionId))
202
+ const row = this.readSession(sessionId);
203
+ if (row?.status !== 'running')
204
+ return;
205
+ const turn = this.turnRecord(sessionId);
206
+ const busy = row.activity_state === 'busy';
207
+ const now = Date.now();
208
+ switch (policyFor(row.provider_name_at_launch)) {
209
+ case 'claude':
210
+ if (turn.hasTurnEvidence) {
211
+ this.touchTurn(sessionId, turn, busy);
212
+ return;
213
+ }
214
+ break;
215
+ case 'codex':
216
+ if (turn.transcriptOpen === true) {
217
+ this.holdByTurn(sessionId, busy);
218
+ return;
219
+ }
220
+ break;
221
+ case 'copilot':
222
+ if (now < turn.outputIgnoredUntil)
223
+ return;
224
+ break;
225
+ case 'output':
226
+ break;
227
+ }
228
+ this.holdByOutput(sessionId, busy);
229
+ }
230
+ promptSubmitted(signal) {
231
+ const row = this.readSession(signal.sessionId);
232
+ if (row?.status !== 'running')
233
+ return;
234
+ const turn = this.turnRecord(signal.sessionId);
235
+ if (!this.openClaudeTurn(turn, signal.firedAtMs))
236
+ return;
237
+ this.holdByTurn(signal.sessionId, row.activity_state === 'busy');
238
+ }
239
+ turnStopped(signal) {
240
+ const row = this.readSession(signal.sessionId);
241
+ if (row?.status !== 'running')
242
+ return;
243
+ const turn = this.turnRecord(signal.sessionId);
244
+ const policy = policyFor(row.provider_name_at_launch);
245
+ if (policy === 'claude') {
246
+ if (!this.closeClaudeTurn(turn, signal.firedAtMs))
247
+ return;
248
+ }
249
+ else if (policy === 'copilot') {
250
+ turn.outputIgnoredUntil = Date.now() + exports.POST_STOP_OUTPUT_GRACE_MS;
251
+ }
252
+ this.endTurn(signal.sessionId, row.activity_state === 'busy');
253
+ }
254
+ transcriptTurn(signal) {
255
+ const row = this.readSession(signal.sessionId);
256
+ if (row?.status !== 'running')
257
+ return;
258
+ const policy = policyFor(row.provider_name_at_launch);
259
+ if (!TRANSCRIPT_TURN_POLICIES.has(policy))
260
+ return;
261
+ const turn = this.turnRecord(signal.sessionId);
262
+ const busy = row.activity_state === 'busy';
263
+ const state = signal.turn;
264
+ if (!state) {
265
+ if (signal.grew)
266
+ this.touchTurn(signal.sessionId, turn, busy);
267
+ return;
268
+ }
269
+ turn.transcriptOpen = state.open;
270
+ if (policy === 'codex') {
271
+ if (state.open)
272
+ this.holdByTurn(signal.sessionId, busy, signal.grew);
273
+ else
274
+ this.endTurn(signal.sessionId, busy);
275
+ return;
276
+ }
277
+ const atMs = state.atMs ?? Date.now();
278
+ if (state.open) {
279
+ if (this.openClaudeTurn(turn, atMs))
280
+ this.holdByTurn(signal.sessionId, busy, signal.grew);
127
281
  return;
128
- const now = new Date().toISOString();
129
- this.sqlite
130
- .prepare(`UPDATE sessions SET last_activity_at = ?, updated_at = ? WHERE id = ?`)
131
- .run(now, now, sessionId);
132
- const row = this.sqlite
133
- .prepare(`SELECT activity_state FROM sessions WHERE id = ?`)
134
- .get(sessionId);
135
- if (!row || row.activity_state !== 'busy') {
136
- this.sqlite
137
- .prepare(`UPDATE sessions SET activity_state = 'busy', busy_since = ?, updated_at = ? WHERE id = ?`)
138
- .run(now, now, sessionId);
139
- this.eventEmitter.emit('session.activity.changed', {
140
- sessionId,
141
- state: 'busy',
142
- lastActivityAt: now,
143
- busySince: now,
144
- });
145
282
  }
283
+ if (!this.closeClaudeTurn(turn, atMs)) {
284
+ if (signal.grew)
285
+ this.touchTurn(signal.sessionId, turn, busy);
286
+ return;
287
+ }
288
+ this.endTurn(signal.sessionId, busy);
289
+ }
290
+ openClaudeTurn(turn, atMs) {
291
+ turn.hasTurnEvidence = true;
292
+ if (atMs <= turn.closedAtMs)
293
+ return false;
294
+ turn.openedAtMs = Math.max(turn.openedAtMs, atMs);
295
+ return true;
296
+ }
297
+ closeClaudeTurn(turn, atMs) {
298
+ turn.hasTurnEvidence = true;
299
+ if (atMs < turn.openedAtMs)
300
+ return false;
301
+ turn.closedAtMs = Math.max(turn.closedAtMs, atMs);
302
+ return true;
303
+ }
304
+ holdByOutput(sessionId, busy) {
305
+ const turn = this.turnRecord(sessionId);
306
+ this.clearTurnTimers(sessionId);
307
+ turn.hold = 'output';
308
+ this.markBusy(sessionId, busy);
146
309
  this.lastSignalAt.set(sessionId, Date.now());
147
310
  this.scheduleIdle(sessionId);
148
311
  }
312
+ holdByTurn(sessionId, busy, alive = true) {
313
+ const turn = this.turnRecord(sessionId);
314
+ const wasHeld = busy && turn.hold === 'turn';
315
+ this.clearTimer(this.idleTimers, sessionId);
316
+ this.lastSignalAt.delete(sessionId);
317
+ turn.hold = 'turn';
318
+ if (!wasHeld)
319
+ this.markBusy(sessionId, busy);
320
+ if (!wasHeld || alive || !this.fallbackTimers.has(sessionId))
321
+ this.armFallback(sessionId);
322
+ if (!this.heartbeatTimers.has(sessionId))
323
+ this.armHeartbeat(sessionId);
324
+ }
325
+ touchTurn(sessionId, turn, busy) {
326
+ if (busy && turn.hold === 'turn')
327
+ this.armFallback(sessionId);
328
+ }
329
+ endTurn(sessionId, busy) {
330
+ const turn = this.turnRecord(sessionId);
331
+ const heldByTurn = turn.hold === 'turn';
332
+ this.clearTimers(sessionId);
333
+ this.lastSignalAt.delete(sessionId);
334
+ turn.hold = null;
335
+ this.pendingQuestions?.clearBySession(sessionId);
336
+ if (busy)
337
+ this.transitionToIdle(sessionId, heldByTurn);
338
+ }
339
+ markBusy(sessionId, busy) {
340
+ if (busy) {
341
+ this.stampLastActivity(sessionId);
342
+ return;
343
+ }
344
+ const now = new Date().toISOString();
345
+ this.sqlite
346
+ .prepare(`UPDATE sessions SET activity_state = 'busy', busy_since = ?, last_activity_at = ?,
347
+ updated_at = ? WHERE id = ?`)
348
+ .run(now, now, now, sessionId);
349
+ this.eventEmitter.emit('session.activity.changed', {
350
+ sessionId,
351
+ state: 'busy',
352
+ lastActivityAt: now,
353
+ busySince: now,
354
+ });
355
+ }
149
356
  scheduleIdle(sessionId) {
150
357
  const prior = this.idleTimers.get(sessionId);
151
358
  if (prior)
@@ -153,16 +360,77 @@ let TerminalActivityService = class TerminalActivityService {
153
360
  const elapsed = Date.now() - (this.lastSignalAt.get(sessionId) ?? Date.now());
154
361
  this.idleTimers.set(sessionId, setTimeout(() => {
155
362
  this.idleTimers.delete(sessionId);
156
- this.transitionToIdle(sessionId);
363
+ const turn = this.turns.get(sessionId);
364
+ if (turn)
365
+ turn.hold = null;
366
+ this.transitionToIdle(sessionId, false);
157
367
  }, Math.max(0, this.idleAfterMs - elapsed)));
158
368
  }
159
- transitionToIdle(sessionId) {
160
- if (!this.isSessionRunning(sessionId))
161
- return;
369
+ armFallback(sessionId) {
370
+ this.clearTimer(this.fallbackTimers, sessionId);
371
+ const timer = setTimeout(() => {
372
+ this.fallbackTimers.delete(sessionId);
373
+ if (this.pendingQuestions?.hasPendingQuestion(sessionId)) {
374
+ this.armFallback(sessionId);
375
+ return;
376
+ }
377
+ logger.info({ sessionId }, 'No turn end evidence — idle after the turn fallback');
378
+ const row = this.readSession(sessionId);
379
+ this.endTurn(sessionId, row?.activity_state === 'busy');
380
+ }, exports.TURN_FALLBACK_IDLE_MS);
381
+ timer.unref?.();
382
+ this.fallbackTimers.set(sessionId, timer);
383
+ }
384
+ armHeartbeat(sessionId) {
385
+ this.clearTimer(this.heartbeatTimers, sessionId);
386
+ const intervalMs = Math.max(1000, Math.floor(this.idleAfterMs / 3));
387
+ const timer = setInterval(() => {
388
+ const row = this.readSession(sessionId);
389
+ if (row?.status !== 'running' || row.activity_state !== 'busy') {
390
+ this.clearTimer(this.heartbeatTimers, sessionId);
391
+ return;
392
+ }
393
+ this.stampLastActivity(sessionId);
394
+ }, intervalMs);
395
+ timer.unref?.();
396
+ this.heartbeatTimers.set(sessionId, timer);
397
+ }
398
+ stampLastActivity(sessionId) {
162
399
  const now = new Date().toISOString();
163
400
  this.sqlite
164
- .prepare(`UPDATE sessions SET activity_state = 'idle', updated_at = ? WHERE id = ?`)
165
- .run(now, sessionId);
401
+ .prepare(`UPDATE sessions SET last_activity_at = ?, updated_at = ? WHERE id = ?`)
402
+ .run(now, now, sessionId);
403
+ }
404
+ clearTimer(timers, sessionId) {
405
+ const timer = timers.get(sessionId);
406
+ if (timer)
407
+ clearTimeout(timer);
408
+ timers.delete(sessionId);
409
+ }
410
+ clearTurnTimers(sessionId) {
411
+ this.clearTimer(this.fallbackTimers, sessionId);
412
+ this.clearTimer(this.heartbeatTimers, sessionId);
413
+ }
414
+ clearTimers(sessionId) {
415
+ this.clearTimer(this.idleTimers, sessionId);
416
+ this.clearTurnTimers(sessionId);
417
+ }
418
+ transitionToIdle(sessionId, stampActivity) {
419
+ const row = this.readSession(sessionId);
420
+ if (row?.status !== 'running')
421
+ return;
422
+ const now = new Date().toISOString();
423
+ if (stampActivity) {
424
+ this.sqlite
425
+ .prepare(`UPDATE sessions SET activity_state = 'idle', last_activity_at = ?, updated_at = ?
426
+ WHERE id = ?`)
427
+ .run(now, now, sessionId);
428
+ }
429
+ else {
430
+ this.sqlite
431
+ .prepare(`UPDATE sessions SET activity_state = 'idle', updated_at = ? WHERE id = ?`)
432
+ .run(now, sessionId);
433
+ }
166
434
  this.eventEmitter.emit('session.activity.changed', {
167
435
  sessionId,
168
436
  state: 'idle',
@@ -178,13 +446,27 @@ __decorate([
178
446
  __metadata("design:paramtypes", []),
179
447
  __metadata("design:returntype", void 0)
180
448
  ], TerminalActivityService.prototype, "handleRemoteProjectSynced", null);
449
+ __decorate([
450
+ (0, event_emitter_1.OnEvent)(session_turn_signals_1.SESSION_TURN_HOOK_SIGNAL),
451
+ __metadata("design:type", Function),
452
+ __metadata("design:paramtypes", [Object]),
453
+ __metadata("design:returntype", void 0)
454
+ ], TerminalActivityService.prototype, "handleTurnHook", null);
455
+ __decorate([
456
+ (0, event_emitter_1.OnEvent)(session_turn_signals_1.SESSION_TRANSCRIPT_TURN_SIGNAL),
457
+ __metadata("design:type", Function),
458
+ __metadata("design:paramtypes", [Object]),
459
+ __metadata("design:returntype", void 0)
460
+ ], TerminalActivityService.prototype, "handleTranscriptTurn", null);
181
461
  exports.TerminalActivityService = TerminalActivityService = __decorate([
182
462
  (0, common_1.Injectable)(),
183
463
  __param(0, (0, common_1.Inject)(db_provider_1.DB_CONNECTION)),
184
464
  __param(3, (0, common_1.Inject)((0, common_1.forwardRef)(() => terminal_session_registry_1.TerminalSessionRegistry))),
465
+ __param(4, (0, common_1.Optional)()),
185
466
  __metadata("design:paramtypes", [better_sqlite3_1.BetterSQLite3Database,
186
467
  event_emitter_1.EventEmitter2,
187
468
  settings_service_1.SettingsService,
188
- terminal_session_registry_1.TerminalSessionRegistry])
469
+ terminal_session_registry_1.TerminalSessionRegistry,
470
+ pending_ask_user_question_service_1.PendingAskUserQuestionService])
189
471
  ], TerminalActivityService);
190
472
  //# sourceMappingURL=terminal-activity.service.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"terminal-activity.service.js","sourceRoot":"","sources":["../../../../src/modules/terminal/services/terminal-activity.service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"terminal-activity.service.js","sourceRoot":"","sources":["../../../../src/modules/terminal/services/terminal-activity.service.ts"],"names":[],"mappings":"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"}
@@ -6,6 +6,7 @@ exports.destroyExpectedSession = destroyExpectedSession;
6
6
  exports.listSessions = listSessions;
7
7
  exports.sessionExists = sessionExists;
8
8
  exports.applyWindowTheme = applyWindowTheme;
9
+ const process_ids_env_1 = require("../../../../common/process-ids-env");
9
10
  const STRICT_HEX_RE = /^#[0-9a-fA-F]{6}$/;
10
11
  function assertHexColor(color, field) {
11
12
  if (!STRICT_HEX_RE.test(color)) {
@@ -22,11 +23,22 @@ function assertTmuxOptionApplied(result, target, optionName) {
22
23
  throw new Error(`Failed to apply tmux ${optionName} for session "${target.name}": ${reason}`);
23
24
  }
24
25
  async function createSession(executor, name, command, options) {
25
- const createResult = await executor.run({
26
- argv: ['tmux', 'new-session', '-d', '-s', name, '-c', options.cwd, ...command],
26
+ const idsEnv = (0, process_ids_env_1.processIdsEnv)();
27
+ const sessionEnvArgs = Object.entries(idsEnv).flatMap(([key, value]) => [
28
+ '-e',
29
+ `${key}=${value}`,
30
+ ]);
31
+ const env = options.env ? { ...options.env, ...idsEnv } : undefined;
32
+ const newSession = (envArgs) => executor.run({
33
+ argv: ['tmux', 'new-session', '-d', '-s', name, '-c', options.cwd, ...envArgs, ...command],
27
34
  mode: 'pipe',
28
- env: options.env ? { ...options.env } : undefined,
35
+ env,
29
36
  });
37
+ let createResult = await newSession(sessionEnvArgs);
38
+ if (!createResult.success &&
39
+ sessionEnvArgs.length > 0 &&
40
+ /usage: new-session|unknown (flag|option)/.test(createResult.stderr))
41
+ createResult = await newSession([]);
30
42
  if (!createResult.success) {
31
43
  throw new Error(`Failed to create tmux session "${name}": ${createResult.stderr}`);
32
44
  }
@@ -1 +1 @@
1
- {"version":3,"file":"lifecycle.js","sourceRoot":"","sources":["../../../../../src/modules/terminal/services/terminal-io/lifecycle.ts"],"names":[],"mappings":";;AA2BA,sCA+BC;AAED,wCAYC;AAED,wDA+BC;AAmBD,oCAeC;AAED,sCAUC;AAQD,4CAsBC;AAlLD,MAAM,aAAa,GAAG,mBAAmB,CAAC;AAE1C,SAAS,cAAc,CAAC,KAAa,EAAE,KAAa;IAClD,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;QAC/B,MAAM,IAAI,KAAK,CAAC,WAAW,KAAK,MAAM,KAAK,wCAAwC,CAAC,CAAC;IACvF,CAAC;AACH,CAAC;AAED,SAAS,uBAAuB,CAC9B,MAAsB,EACtB,MAAqB,EACrB,UAAkD;IAElD,IAAI,MAAM,CAAC,OAAO,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;QACvC,OAAO;IACT,CAAC;IAED,MAAM,MAAM,GAAG,MAAM,CAAC,QAAQ;QAC5B,CAAC,CAAC,WAAW;QACb,CAAC,CAAC,MAAM,CAAC,MAAM,IAAI,aAAa,MAAM,CAAC,QAAQ,IAAI,SAAS,EAAE,CAAC;IAEjE,MAAM,IAAI,KAAK,CAAC,wBAAwB,UAAU,iBAAiB,MAAM,CAAC,IAAI,MAAM,MAAM,EAAE,CAAC,CAAC;AAChG,CAAC;AAEM,KAAK,UAAU,aAAa,CACjC,QAAyB,EACzB,IAAY,EACZ,OAAiB,EACjB,OAA6B;IAE7B,MAAM,YAAY,GAAG,MAAM,QAAQ,CAAC,GAAG,CAAC;QACtC,IAAI,EAAE,CAAC,MAAM,EAAE,aAAa,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,CAAC,GAAG,EAAE,GAAG,OAAO,CAAC;QAC9E,IAAI,EAAE,MAAM;QACZ,GAAG,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,SAAS;KAClD,CAAC,CAAC;IAEH,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,CAAC;QAC1B,MAAM,IAAI,KAAK,CAAC,kCAAkC,IAAI,MAAM,YAAY,CAAC,MAAM,EAAE,CAAC,CAAC;IACrF,CAAC;IAED,MAAM,QAAQ,CAAC,GAAG,CAAC;QACjB,IAAI,EAAE,CAAC,MAAM,EAAE,YAAY,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,CAAC;QACzD,IAAI,EAAE,MAAM;KACb,CAAC,CAAC;IAMH,MAAM,QAAQ,CAAC,GAAG,CAAC;QACjB,IAAI,EAAE,CAAC,MAAM,EAAE,YAAY,EAAE,IAAI,EAAE,eAAe,EAAE,IAAI,CAAC;QACzD,IAAI,EAAE,MAAM;KACb,CAAC,CAAC;IAEH,OAAO,EAAE,IAAI,EAAE,CAAC;AAClB,CAAC;AAEM,KAAK,UAAU,cAAc,CAClC,QAAyB,EACzB,MAAqB;IAErB,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,GAAG,CAAC;QAChC,IAAI,EAAE,CAAC,MAAM,EAAE,cAAc,EAAE,IAAI,EAAE,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC;QACvD,IAAI,EAAE,MAAM;KACb,CAAC,CAAC;IAEH,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;QACpB,MAAM,IAAI,KAAK,CAAC,mCAAmC,MAAM,CAAC,IAAI,MAAM,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;IACvF,CAAC;AACH,CAAC;AAEM,KAAK,UAAU,sBAAsB,CAC1C,QAAyB,EACzB,MAAqB;IAErB,IAAI,MAAsB,CAAC;IAC3B,IAAI,CAAC;QACH,MAAM,GAAG,MAAM,QAAQ,CAAC,GAAG,CAAC;YAC1B,IAAI,EAAE,CAAC,MAAM,EAAE,cAAc,EAAE,IAAI,EAAE,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC;YACvD,IAAI,EAAE,MAAM;SACb,CAAC,CAAC;IACL,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,EAAE,OAAO,EAAE,eAAe,EAAE,KAAK,EAAE,qBAAqB,CAAC,MAAM,EAAE,KAAK,CAAC,EAAE,CAAC;IACnF,CAAC;IAED,IAAI,MAAM,CAAC,OAAO,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;QACvC,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,CAAC;IAClC,CAAC;IAED,IAAI,kCAAkC,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC;QACvD,OAAO,EAAE,OAAO,EAAE,cAAc,EAAE,CAAC;IACrC,CAAC;IAED,MAAM,MAAM,GAAG,MAAM,CAAC,QAAQ;QAC5B,CAAC,CAAC,WAAW;QACb,CAAC,CAAC,MAAM,CAAC,SAAS;YAChB,CAAC,CAAC,wBAAwB;YAC1B,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,aAAa,MAAM,CAAC,QAAQ,IAAI,SAAS,EAAE,CAAC;IAC1E,OAAO;QACL,OAAO,EAAE,eAAe;QACxB,KAAK,EAAE,IAAI,KAAK,CAAC,mCAAmC,MAAM,CAAC,IAAI,MAAM,MAAM,EAAE,CAAC;KAC/E,CAAC;AACJ,CAAC;AAED,SAAS,kCAAkC,CACzC,MAAsB,EACtB,MAAqB;IAErB,IAAI,MAAM,CAAC,QAAQ,IAAI,MAAM,CAAC,SAAS,IAAI,MAAM,CAAC,QAAQ,KAAK,IAAI;QAAE,OAAO,KAAK,CAAC;IAElF,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;IACpC,OAAO,CACL,MAAM,KAAK,uBAAuB,MAAM,CAAC,IAAI,EAAE,IAAI,4BAA4B,CAAC,IAAI,CAAC,MAAM,CAAC,CAC7F,CAAC;AACJ,CAAC;AAED,SAAS,qBAAqB,CAAC,MAAqB,EAAE,KAAc;IAClE,MAAM,MAAM,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACtE,OAAO,IAAI,KAAK,CAAC,mCAAmC,MAAM,CAAC,IAAI,MAAM,MAAM,EAAE,CAAC,CAAC;AACjF,CAAC;AAEM,KAAK,UAAU,YAAY,CAAC,QAAyB;IAC1D,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,GAAG,CAAC;QAChC,IAAI,EAAE,CAAC,MAAM,EAAE,eAAe,EAAE,IAAI,EAAE,iBAAiB,CAAC;QACxD,IAAI,EAAE,MAAM;KACb,CAAC,CAAC;IAEH,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;QACpB,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,OAAO,MAAM,CAAC,MAAM;SACjB,IAAI,EAAE;SACN,KAAK,CAAC,IAAI,CAAC;SACX,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;SAC9C,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;AAC/B,CAAC;AAEM,KAAK,UAAU,aAAa,CACjC,QAAyB,EACzB,MAAqB;IAErB,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,GAAG,CAAC;QAChC,IAAI,EAAE,CAAC,MAAM,EAAE,aAAa,EAAE,IAAI,EAAE,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC;QACtD,IAAI,EAAE,MAAM;KACb,CAAC,CAAC;IAEH,OAAO,MAAM,CAAC,OAAO,CAAC;AACxB,CAAC;AAQM,KAAK,UAAU,gBAAgB,CACpC,QAAyB,EACzB,MAAqB,EACrB,UAAkB,EAClB,UAAkB;IAElB,cAAc,CAAC,UAAU,EAAE,YAAY,CAAC,CAAC;IACzC,cAAc,CAAC,UAAU,EAAE,YAAY,CAAC,CAAC;IAEzC,MAAM,KAAK,GAAG,MAAM,UAAU,OAAO,UAAU,EAAE,CAAC;IAElD,MAAM,iBAAiB,GAAG,MAAM,QAAQ,CAAC,GAAG,CAAC;QAC3C,IAAI,EAAE,CAAC,MAAM,EAAE,mBAAmB,EAAE,IAAI,EAAE,IAAI,MAAM,CAAC,IAAI,GAAG,EAAE,cAAc,EAAE,KAAK,CAAC;QACpF,IAAI,EAAE,MAAM;KACb,CAAC,CAAC;IACH,uBAAuB,CAAC,iBAAiB,EAAE,MAAM,EAAE,cAAc,CAAC,CAAC;IAEnE,MAAM,iBAAiB,GAAG,MAAM,QAAQ,CAAC,GAAG,CAAC;QAC3C,IAAI,EAAE,CAAC,MAAM,EAAE,mBAAmB,EAAE,IAAI,EAAE,IAAI,MAAM,CAAC,IAAI,GAAG,EAAE,qBAAqB,EAAE,KAAK,CAAC;QAC3F,IAAI,EAAE,MAAM;KACb,CAAC,CAAC;IACH,uBAAuB,CAAC,iBAAiB,EAAE,MAAM,EAAE,qBAAqB,CAAC,CAAC;AAC5E,CAAC"}
1
+ {"version":3,"file":"lifecycle.js","sourceRoot":"","sources":["../../../../../src/modules/terminal/services/terminal-io/lifecycle.ts"],"names":[],"mappings":"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"}
@@ -27,6 +27,7 @@ const terminal_send_scheduler_service_1 = require("./services/terminal-send-sche
27
27
  const human_prompt_state_service_1 = require("./services/human-prompt-state.service");
28
28
  const standalone_terminal_service_1 = require("./services/standalone-terminal.service");
29
29
  const process_executor_module_1 = require("./services/process-executor/process-executor.module");
30
+ const hooks_module_1 = require("../hooks/hooks.module");
30
31
  let TerminalModule = class TerminalModule {
31
32
  };
32
33
  exports.TerminalModule = TerminalModule;
@@ -40,6 +41,7 @@ exports.TerminalModule = TerminalModule = __decorate([
40
41
  session_terminal_runtime_module_1.SessionTerminalRuntimeModule,
41
42
  realtime_broadcast_module_1.RealtimeBroadcastModule,
42
43
  metrics_module_1.MetricsModule,
44
+ hooks_module_1.HooksModule,
43
45
  ],
44
46
  providers: [
45
47
  terminal_stream_service_1.TerminalStreamService,
@@ -1 +1 @@
1
- {"version":3,"file":"terminal.module.js","sourceRoot":"","sources":["../../../src/modules/terminal/terminal.module.ts"],"names":[],"mappings":";;;;;;;;;AAAA,2CAAwC;AACxC,gFAA2E;AAC3E,wDAAoD;AACpD,kEAA8D;AAC9D,qEAAgE;AAChE,iEAA6D;AAC7D,iHAA2G;AAC3G,4EAAuE;AACvE,qGAAgG;AAChG,4EAAwE;AACxE,0GAA6F;AAC7F,oFAA+E;AAC/E,qFAAgF;AAChF,yEAAoE;AACpE,8DAA0D;AAC1D,4FAAsF;AACtF,gGAA0F;AAC1F,sFAAgF;AAChF,wFAAmF;AACnF,iGAA4F;AA6CrF,IAAM,cAAc,GAApB,MAAM,cAAc;CAAG,CAAA;AAAjB,wCAAc;yBAAd,cAAc;IA3C1B,IAAA,eAAM,EAAC;QACN,OAAO,EAAE;YACP,iDAAsB;YACtB,+CAAqB;YACrB,qCAAgB;YAChB,gCAAc;YACd,8DAA4B;YAC5B,mDAAuB;YACvB,8BAAa;SACd;QACD,SAAS,EAAE;YACT,+CAAqB;YACrB,wBAAU;YACV,kCAAe;YACf,2CAAmB;YACnB,0DAA0B;YAC1B,8DAA4B;YAC5B;gBACE,OAAO,EAAE,mDAAuB;gBAChC,UAAU,EAAE,CAAC,eAAgC,EAAE,gBAAyC,EAAE,EAAE,CAC1F,IAAI,mDAAuB,CAAC,GAAG,EAAE;oBAC/B,MAAM,GAAG,GAAG,eAAe,CAAC,UAAU,CAAC,wBAAwB,CAAC,CAAC;oBACjE,MAAM,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;oBAC3B,OAAO,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC;gBACpE,CAAC,EAAE,gBAAgB,CAAC;gBACtB,MAAM,EAAE,CAAC,kCAAe,EAAE,oDAAuB,CAAC;aACnD;YACD,iEAA0B;YAC1B,mDAAuB;YACvB,uDAAyB;SAC1B;QACD,OAAO,EAAE;YACP,+CAAqB;YACrB,wBAAU;YACV,kCAAe;YACf,2CAAmB;YACnB,8DAA4B;YAC5B,iDAAsB;YACtB,mDAAuB;YACvB,mDAAuB;YACvB,uDAAyB;SAC1B;KACF,CAAC;GACW,cAAc,CAAG"}
1
+ {"version":3,"file":"terminal.module.js","sourceRoot":"","sources":["../../../src/modules/terminal/terminal.module.ts"],"names":[],"mappings":";;;;;;;;;AAAA,2CAAwC;AACxC,gFAA2E;AAC3E,wDAAoD;AACpD,kEAA8D;AAC9D,qEAAgE;AAChE,iEAA6D;AAC7D,iHAA2G;AAC3G,4EAAuE;AACvE,qGAAgG;AAChG,4EAAwE;AACxE,0GAA6F;AAC7F,oFAA+E;AAC/E,qFAAgF;AAChF,yEAAoE;AACpE,8DAA0D;AAC1D,4FAAsF;AACtF,gGAA0F;AAC1F,sFAAgF;AAChF,wFAAmF;AACnF,iGAA4F;AAC5F,wDAAoD;AA8C7C,IAAM,cAAc,GAApB,MAAM,cAAc;CAAG,CAAA;AAAjB,wCAAc;yBAAd,cAAc;IA5C1B,IAAA,eAAM,EAAC;QACN,OAAO,EAAE;YACP,iDAAsB;YACtB,+CAAqB;YACrB,qCAAgB;YAChB,gCAAc;YACd,8DAA4B;YAC5B,mDAAuB;YACvB,8BAAa;YACb,0BAAW;SACZ;QACD,SAAS,EAAE;YACT,+CAAqB;YACrB,wBAAU;YACV,kCAAe;YACf,2CAAmB;YACnB,0DAA0B;YAC1B,8DAA4B;YAC5B;gBACE,OAAO,EAAE,mDAAuB;gBAChC,UAAU,EAAE,CAAC,eAAgC,EAAE,gBAAyC,EAAE,EAAE,CAC1F,IAAI,mDAAuB,CAAC,GAAG,EAAE;oBAC/B,MAAM,GAAG,GAAG,eAAe,CAAC,UAAU,CAAC,wBAAwB,CAAC,CAAC;oBACjE,MAAM,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;oBAC3B,OAAO,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC;gBACpE,CAAC,EAAE,gBAAgB,CAAC;gBACtB,MAAM,EAAE,CAAC,kCAAe,EAAE,oDAAuB,CAAC;aACnD;YACD,iEAA0B;YAC1B,mDAAuB;YACvB,uDAAyB;SAC1B;QACD,OAAO,EAAE;YACP,+CAAqB;YACrB,wBAAU;YACV,kCAAe;YACf,2CAAmB;YACnB,8DAA4B;YAC5B,iDAAsB;YACtB,mDAAuB;YACvB,mDAAuB;YACvB,uDAAyB;SAC1B;KACF,CAAC;GACW,cAAc,CAAG"}
@@ -1,5 +1,4 @@
1
1
  export declare function stripAlternateScreenSequences(data: string): string;
2
- export declare function sanitizeAnsiForClient(data: string): string;
3
2
  export declare class AltAwareAnsiSanitizer {
4
3
  private readonly mode;
5
4
  private altActive;
@@ -2,7 +2,6 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.AltAwareAnsiSanitizer = void 0;
4
4
  exports.stripAlternateScreenSequences = stripAlternateScreenSequences;
5
- exports.sanitizeAnsiForClient = sanitizeAnsiForClient;
6
5
  const ALT_SCREEN_DPM_RE = /\x1b\[\?([0-9;]+)([hl])/g;
7
6
  const DECSTBM_RE = /\x1b\[(\d*);(\d*)r/g;
8
7
  function containsAltScreenCode(nums) {
@@ -18,9 +17,6 @@ function stripAlternateScreenSequences(data) {
18
17
  return containsAltScreenCode(nums) ? '' : match;
19
18
  });
20
19
  }
21
- function sanitizeAnsiForClient(data) {
22
- return stripAlternateScreenSequences(data);
23
- }
24
20
  class AltAwareAnsiSanitizer {
25
21
  mode;
26
22
  altActive = false;
@@ -1 +1 @@
1
- {"version":3,"file":"ansi-sanitizer.js","sourceRoot":"","sources":["../../../../src/modules/terminal/utils/ansi-sanitizer.ts"],"names":[],"mappings":";;;AAsBA,sEAIC;AAGD,sDAGC;AAtBD,MAAM,iBAAiB,GAAG,0BAA0B,CAAC;AAErD,MAAM,UAAU,GAAG,qBAAqB,CAAC;AAEzC,SAAS,qBAAqB,CAAC,IAAY;IACzC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAC9B,KAAK,MAAM,CAAC,IAAI,KAAK,EAAE,CAAC;QACtB,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,MAAM,IAAI,CAAC,KAAK,MAAM;YAAE,OAAO,IAAI,CAAC;IAC9D,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAgB,6BAA6B,CAAC,IAAY;IACxD,OAAO,IAAI,CAAC,OAAO,CAAC,iBAAiB,EAAE,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE;QACrD,OAAO,qBAAqB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC;IAClD,CAAC,CAAC,CAAC;AACL,CAAC;AAGD,SAAgB,qBAAqB,CAAC,IAAY;IAEhD,OAAO,6BAA6B,CAAC,IAAI,CAAC,CAAC;AAC7C,CAAC;AAKD,MAAa,qBAAqB;IAEH;IADrB,SAAS,GAAG,KAAK,CAAC;IAC1B,YAA6B,OAAkC,WAAW;QAA7C,SAAI,GAAJ,IAAI,CAAyC;IAAG,CAAC;IAE9E,OAAO,CAAC,KAAa;QAEnB,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,iBAAiB,EAAE,CAAC,EAAU,EAAE,IAAY,EAAE,EAAU,EAAE,EAAE;YAChF,IAAI,qBAAqB,CAAC,IAAI,CAAC,EAAE,CAAC;gBAChC,IAAI,CAAC,SAAS,GAAG,EAAE,KAAK,GAAG,CAAC;gBAC5B,OAAO,EAAE,CAAC;YACZ,CAAC;YACD,OAAO,EAAE,CAAC;QACZ,CAAC,CAAC,CAAC;QAEH,IAAI,IAAI,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;YAI9B,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC,EAAU,EAAE,GAAW,EAAE,IAAY,EAAE,EAAE;gBAC1E,MAAM,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;gBAC7C,MAAM,cAAc,GAAG,IAAI,CAAC,SAAS,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,MAAM,GAAG,CAAC,CAAC,CAAC;gBACjF,OAAO,cAAc,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC;YACxC,CAAC,CAAC,CAAC;QACL,CAAC;QAED,OAAO,KAAK,CAAC;IACf,CAAC;CACF;AA3BD,sDA2BC"}
1
+ {"version":3,"file":"ansi-sanitizer.js","sourceRoot":"","sources":["../../../../src/modules/terminal/utils/ansi-sanitizer.ts"],"names":[],"mappings":";;;AAsBA,sEAIC;AAhBD,MAAM,iBAAiB,GAAG,0BAA0B,CAAC;AAErD,MAAM,UAAU,GAAG,qBAAqB,CAAC;AAEzC,SAAS,qBAAqB,CAAC,IAAY;IACzC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAC9B,KAAK,MAAM,CAAC,IAAI,KAAK,EAAE,CAAC;QACtB,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,MAAM,IAAI,CAAC,KAAK,MAAM;YAAE,OAAO,IAAI,CAAC;IAC9D,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAgB,6BAA6B,CAAC,IAAY;IACxD,OAAO,IAAI,CAAC,OAAO,CAAC,iBAAiB,EAAE,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE;QACrD,OAAO,qBAAqB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC;IAClD,CAAC,CAAC,CAAC;AACL,CAAC;AAKD,MAAa,qBAAqB;IAEH;IADrB,SAAS,GAAG,KAAK,CAAC;IAC1B,YAA6B,OAAkC,WAAW;QAA7C,SAAI,GAAJ,IAAI,CAAyC;IAAG,CAAC;IAE9E,OAAO,CAAC,KAAa;QAEnB,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,iBAAiB,EAAE,CAAC,EAAU,EAAE,IAAY,EAAE,EAAU,EAAE,EAAE;YAChF,IAAI,qBAAqB,CAAC,IAAI,CAAC,EAAE,CAAC;gBAChC,IAAI,CAAC,SAAS,GAAG,EAAE,KAAK,GAAG,CAAC;gBAC5B,OAAO,EAAE,CAAC;YACZ,CAAC;YACD,OAAO,EAAE,CAAC;QACZ,CAAC,CAAC,CAAC;QAEH,IAAI,IAAI,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;YAI9B,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC,EAAU,EAAE,GAAW,EAAE,IAAY,EAAE,EAAE;gBAC1E,MAAM,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;gBAC7C,MAAM,cAAc,GAAG,IAAI,CAAC,SAAS,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,MAAM,GAAG,CAAC,CAAC,CAAC;gBACjF,OAAO,cAAc,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC;YACxC,CAAC,CAAC,CAAC;QACL,CAAC;QAED,OAAO,KAAK,CAAC;IACf,CAAC;CACF;AA3BD,sDA2BC"}