@alan-ai-hq/agent-manager 0.1.113 → 0.1.115

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 (655) hide show
  1. package/LICENSE +88 -0
  2. package/dist/__tests__/binding-switch-git.test.d.ts +2 -0
  3. package/dist/__tests__/binding-switch-git.test.d.ts.map +1 -0
  4. package/dist/__tests__/binding-switch-git.test.js +555 -0
  5. package/dist/__tests__/binding-switch-git.test.js.map +1 -0
  6. package/dist/__tests__/cli-ensure-install.test.d.ts +2 -0
  7. package/dist/__tests__/cli-ensure-install.test.d.ts.map +1 -0
  8. package/dist/__tests__/cli-ensure-install.test.js +177 -0
  9. package/dist/__tests__/cli-ensure-install.test.js.map +1 -0
  10. package/dist/__tests__/cli-executable.test.d.ts +2 -0
  11. package/dist/__tests__/cli-executable.test.d.ts.map +1 -0
  12. package/dist/__tests__/cli-executable.test.js +155 -0
  13. package/dist/__tests__/cli-executable.test.js.map +1 -0
  14. package/dist/__tests__/cli-executable.windows.test.d.ts +2 -0
  15. package/dist/__tests__/cli-executable.windows.test.d.ts.map +1 -0
  16. package/dist/__tests__/cli-executable.windows.test.js +123 -0
  17. package/dist/__tests__/cli-executable.windows.test.js.map +1 -0
  18. package/dist/__tests__/cli-help.test.d.ts +2 -0
  19. package/dist/__tests__/cli-help.test.d.ts.map +1 -0
  20. package/dist/__tests__/cli-help.test.js +47 -0
  21. package/dist/__tests__/cli-help.test.js.map +1 -0
  22. package/dist/__tests__/computer-readiness.test.d.ts +2 -0
  23. package/dist/__tests__/computer-readiness.test.d.ts.map +1 -0
  24. package/dist/__tests__/computer-readiness.test.js +63 -0
  25. package/dist/__tests__/computer-readiness.test.js.map +1 -0
  26. package/dist/__tests__/core-agent-provider-auth-env.test.d.ts +2 -0
  27. package/dist/__tests__/core-agent-provider-auth-env.test.d.ts.map +1 -0
  28. package/dist/__tests__/core-agent-provider-auth-env.test.js +93 -0
  29. package/dist/__tests__/core-agent-provider-auth-env.test.js.map +1 -0
  30. package/dist/__tests__/core-agent-workflow-context.test.d.ts +2 -0
  31. package/dist/__tests__/core-agent-workflow-context.test.d.ts.map +1 -0
  32. package/dist/__tests__/core-agent-workflow-context.test.js +139 -0
  33. package/dist/__tests__/core-agent-workflow-context.test.js.map +1 -0
  34. package/dist/__tests__/daemon-native-hooks.test.d.ts +2 -0
  35. package/dist/__tests__/daemon-native-hooks.test.d.ts.map +1 -0
  36. package/dist/__tests__/daemon-native-hooks.test.js +94 -0
  37. package/dist/__tests__/daemon-native-hooks.test.js.map +1 -0
  38. package/dist/__tests__/daemon-reconcile-ask.test.d.ts +2 -0
  39. package/dist/__tests__/daemon-reconcile-ask.test.d.ts.map +1 -0
  40. package/dist/__tests__/daemon-reconcile-ask.test.js +100 -0
  41. package/dist/__tests__/daemon-reconcile-ask.test.js.map +1 -0
  42. package/dist/__tests__/daemon-runner-status.test.d.ts +2 -0
  43. package/dist/__tests__/daemon-runner-status.test.d.ts.map +1 -0
  44. package/dist/__tests__/daemon-runner-status.test.js +102 -0
  45. package/dist/__tests__/daemon-runner-status.test.js.map +1 -0
  46. package/dist/__tests__/daemon-socket.integration.test.d.ts +2 -0
  47. package/dist/__tests__/daemon-socket.integration.test.d.ts.map +1 -0
  48. package/dist/__tests__/daemon-socket.integration.test.js +435 -0
  49. package/dist/__tests__/daemon-socket.integration.test.js.map +1 -0
  50. package/dist/__tests__/daemon.test.d.ts +2 -0
  51. package/dist/__tests__/daemon.test.d.ts.map +1 -0
  52. package/dist/__tests__/daemon.test.js +4884 -0
  53. package/dist/__tests__/daemon.test.js.map +1 -0
  54. package/dist/__tests__/ensure-shared-checkout-branch.test.d.ts +2 -0
  55. package/dist/__tests__/ensure-shared-checkout-branch.test.d.ts.map +1 -0
  56. package/dist/__tests__/ensure-shared-checkout-branch.test.js +129 -0
  57. package/dist/__tests__/ensure-shared-checkout-branch.test.js.map +1 -0
  58. package/dist/__tests__/event-journal-stress.test.d.ts +2 -0
  59. package/dist/__tests__/event-journal-stress.test.d.ts.map +1 -0
  60. package/dist/__tests__/event-journal-stress.test.js +124 -0
  61. package/dist/__tests__/event-journal-stress.test.js.map +1 -0
  62. package/dist/__tests__/event-journal.test.d.ts +2 -0
  63. package/dist/__tests__/event-journal.test.d.ts.map +1 -0
  64. package/dist/__tests__/event-journal.test.js +264 -0
  65. package/dist/__tests__/event-journal.test.js.map +1 -0
  66. package/dist/__tests__/event-outbox-persist-failure.test.d.ts +2 -0
  67. package/dist/__tests__/event-outbox-persist-failure.test.d.ts.map +1 -0
  68. package/dist/__tests__/event-outbox-persist-failure.test.js +143 -0
  69. package/dist/__tests__/event-outbox-persist-failure.test.js.map +1 -0
  70. package/dist/__tests__/event-outbox.test.d.ts +2 -0
  71. package/dist/__tests__/event-outbox.test.d.ts.map +1 -0
  72. package/dist/__tests__/event-outbox.test.js +602 -0
  73. package/dist/__tests__/event-outbox.test.js.map +1 -0
  74. package/dist/__tests__/execution-activity-tracker.test.d.ts +2 -0
  75. package/dist/__tests__/execution-activity-tracker.test.d.ts.map +1 -0
  76. package/dist/__tests__/execution-activity-tracker.test.js +64 -0
  77. package/dist/__tests__/execution-activity-tracker.test.js.map +1 -0
  78. package/dist/__tests__/execution-lease-client.test.d.ts +2 -0
  79. package/dist/__tests__/execution-lease-client.test.d.ts.map +1 -0
  80. package/dist/__tests__/execution-lease-client.test.js +274 -0
  81. package/dist/__tests__/execution-lease-client.test.js.map +1 -0
  82. package/dist/__tests__/fake-provider-cli.test.d.ts +2 -0
  83. package/dist/__tests__/fake-provider-cli.test.d.ts.map +1 -0
  84. package/dist/__tests__/fake-provider-cli.test.js +46 -0
  85. package/dist/__tests__/fake-provider-cli.test.js.map +1 -0
  86. package/dist/__tests__/generated-images.test.d.ts +2 -0
  87. package/dist/__tests__/generated-images.test.d.ts.map +1 -0
  88. package/dist/__tests__/generated-images.test.js +132 -0
  89. package/dist/__tests__/generated-images.test.js.map +1 -0
  90. package/dist/__tests__/helpers/sandbox-outbox.d.ts +3 -0
  91. package/dist/__tests__/helpers/sandbox-outbox.d.ts.map +1 -0
  92. package/dist/__tests__/helpers/sandbox-outbox.js +23 -0
  93. package/dist/__tests__/helpers/sandbox-outbox.js.map +1 -0
  94. package/dist/__tests__/install-command.test.d.ts +2 -0
  95. package/dist/__tests__/install-command.test.d.ts.map +1 -0
  96. package/dist/__tests__/install-command.test.js +185 -0
  97. package/dist/__tests__/install-command.test.js.map +1 -0
  98. package/dist/__tests__/integration-cli.test.d.ts +2 -0
  99. package/dist/__tests__/integration-cli.test.d.ts.map +1 -0
  100. package/dist/__tests__/integration-cli.test.js +150 -0
  101. package/dist/__tests__/integration-cli.test.js.map +1 -0
  102. package/dist/__tests__/lifecycle-contracts.test.d.ts +2 -0
  103. package/dist/__tests__/lifecycle-contracts.test.d.ts.map +1 -0
  104. package/dist/__tests__/lifecycle-contracts.test.js +66 -0
  105. package/dist/__tests__/lifecycle-contracts.test.js.map +1 -0
  106. package/dist/__tests__/lifecycle-logger.test.d.ts +2 -0
  107. package/dist/__tests__/lifecycle-logger.test.d.ts.map +1 -0
  108. package/dist/__tests__/lifecycle-logger.test.js +49 -0
  109. package/dist/__tests__/lifecycle-logger.test.js.map +1 -0
  110. package/dist/__tests__/local-daemon-lifecycle.test.d.ts +2 -0
  111. package/dist/__tests__/local-daemon-lifecycle.test.d.ts.map +1 -0
  112. package/dist/__tests__/local-daemon-lifecycle.test.js +594 -0
  113. package/dist/__tests__/local-daemon-lifecycle.test.js.map +1 -0
  114. package/dist/__tests__/local-git-status.test.d.ts +2 -0
  115. package/dist/__tests__/local-git-status.test.d.ts.map +1 -0
  116. package/dist/__tests__/local-git-status.test.js +31 -0
  117. package/dist/__tests__/local-git-status.test.js.map +1 -0
  118. package/dist/__tests__/mcp-config-adapters-files.test.d.ts +2 -0
  119. package/dist/__tests__/mcp-config-adapters-files.test.d.ts.map +1 -0
  120. package/dist/__tests__/mcp-config-adapters-files.test.js +486 -0
  121. package/dist/__tests__/mcp-config-adapters-files.test.js.map +1 -0
  122. package/dist/__tests__/mcp-config-adapters.test.d.ts +2 -0
  123. package/dist/__tests__/mcp-config-adapters.test.d.ts.map +1 -0
  124. package/dist/__tests__/mcp-config-adapters.test.js +492 -0
  125. package/dist/__tests__/mcp-config-adapters.test.js.map +1 -0
  126. package/dist/__tests__/mcp-sync.test.d.ts +2 -0
  127. package/dist/__tests__/mcp-sync.test.d.ts.map +1 -0
  128. package/dist/__tests__/mcp-sync.test.js +21 -0
  129. package/dist/__tests__/mcp-sync.test.js.map +1 -0
  130. package/dist/__tests__/model-scan-runner.test.d.ts +2 -0
  131. package/dist/__tests__/model-scan-runner.test.d.ts.map +1 -0
  132. package/dist/__tests__/model-scan-runner.test.js +80 -0
  133. package/dist/__tests__/model-scan-runner.test.js.map +1 -0
  134. package/dist/__tests__/native-hook-command.test.d.ts +2 -0
  135. package/dist/__tests__/native-hook-command.test.d.ts.map +1 -0
  136. package/dist/__tests__/native-hook-command.test.js +386 -0
  137. package/dist/__tests__/native-hook-command.test.js.map +1 -0
  138. package/dist/__tests__/native-hook-config.test.d.ts +2 -0
  139. package/dist/__tests__/native-hook-config.test.d.ts.map +1 -0
  140. package/dist/__tests__/native-hook-config.test.js +374 -0
  141. package/dist/__tests__/native-hook-config.test.js.map +1 -0
  142. package/dist/__tests__/native-hook-drain.test.d.ts +2 -0
  143. package/dist/__tests__/native-hook-drain.test.d.ts.map +1 -0
  144. package/dist/__tests__/native-hook-drain.test.js +197 -0
  145. package/dist/__tests__/native-hook-drain.test.js.map +1 -0
  146. package/dist/__tests__/native-hook-inbox.test.d.ts +2 -0
  147. package/dist/__tests__/native-hook-inbox.test.d.ts.map +1 -0
  148. package/dist/__tests__/native-hook-inbox.test.js +139 -0
  149. package/dist/__tests__/native-hook-inbox.test.js.map +1 -0
  150. package/dist/__tests__/native-session.test.d.ts +2 -0
  151. package/dist/__tests__/native-session.test.d.ts.map +1 -0
  152. package/dist/__tests__/native-session.test.js +41 -0
  153. package/dist/__tests__/native-session.test.js.map +1 -0
  154. package/dist/__tests__/native-stream-outbox.test.d.ts +2 -0
  155. package/dist/__tests__/native-stream-outbox.test.d.ts.map +1 -0
  156. package/dist/__tests__/native-stream-outbox.test.js +231 -0
  157. package/dist/__tests__/native-stream-outbox.test.js.map +1 -0
  158. package/dist/__tests__/native-stream-platform.test.d.ts +2 -0
  159. package/dist/__tests__/native-stream-platform.test.d.ts.map +1 -0
  160. package/dist/__tests__/native-stream-platform.test.js +20 -0
  161. package/dist/__tests__/native-stream-platform.test.js.map +1 -0
  162. package/dist/__tests__/native-transcript-cursor.test.d.ts +2 -0
  163. package/dist/__tests__/native-transcript-cursor.test.d.ts.map +1 -0
  164. package/dist/__tests__/native-transcript-cursor.test.js +60 -0
  165. package/dist/__tests__/native-transcript-cursor.test.js.map +1 -0
  166. package/dist/__tests__/native-transcript-stream.test.d.ts +2 -0
  167. package/dist/__tests__/native-transcript-stream.test.d.ts.map +1 -0
  168. package/dist/__tests__/native-transcript-stream.test.js +378 -0
  169. package/dist/__tests__/native-transcript-stream.test.js.map +1 -0
  170. package/dist/__tests__/network-diagnostics.test.d.ts +2 -0
  171. package/dist/__tests__/network-diagnostics.test.d.ts.map +1 -0
  172. package/dist/__tests__/network-diagnostics.test.js +26 -0
  173. package/dist/__tests__/network-diagnostics.test.js.map +1 -0
  174. package/dist/__tests__/observable-map.test.d.ts +2 -0
  175. package/dist/__tests__/observable-map.test.d.ts.map +1 -0
  176. package/dist/__tests__/observable-map.test.js +54 -0
  177. package/dist/__tests__/observable-map.test.js.map +1 -0
  178. package/dist/__tests__/outbox-baseline.bench.test.d.ts +2 -0
  179. package/dist/__tests__/outbox-baseline.bench.test.d.ts.map +1 -0
  180. package/dist/__tests__/outbox-baseline.bench.test.js +108 -0
  181. package/dist/__tests__/outbox-baseline.bench.test.js.map +1 -0
  182. package/dist/__tests__/provider-auth-preflight.test.d.ts +2 -0
  183. package/dist/__tests__/provider-auth-preflight.test.d.ts.map +1 -0
  184. package/dist/__tests__/provider-auth-preflight.test.js +123 -0
  185. package/dist/__tests__/provider-auth-preflight.test.js.map +1 -0
  186. package/dist/__tests__/provider-model-discovery.test.d.ts +2 -0
  187. package/dist/__tests__/provider-model-discovery.test.d.ts.map +1 -0
  188. package/dist/__tests__/provider-model-discovery.test.js +1071 -0
  189. package/dist/__tests__/provider-model-discovery.test.js.map +1 -0
  190. package/dist/__tests__/resource-diagnostics.test.d.ts +2 -0
  191. package/dist/__tests__/resource-diagnostics.test.d.ts.map +1 -0
  192. package/dist/__tests__/resource-diagnostics.test.js +138 -0
  193. package/dist/__tests__/resource-diagnostics.test.js.map +1 -0
  194. package/dist/__tests__/resume-fallback-env.test.d.ts +2 -0
  195. package/dist/__tests__/resume-fallback-env.test.d.ts.map +1 -0
  196. package/dist/__tests__/resume-fallback-env.test.js +28 -0
  197. package/dist/__tests__/resume-fallback-env.test.js.map +1 -0
  198. package/dist/__tests__/run-journal.test.d.ts +2 -0
  199. package/dist/__tests__/run-journal.test.d.ts.map +1 -0
  200. package/dist/__tests__/run-journal.test.js +121 -0
  201. package/dist/__tests__/run-journal.test.js.map +1 -0
  202. package/dist/__tests__/run-start-gate.test.d.ts +2 -0
  203. package/dist/__tests__/run-start-gate.test.d.ts.map +1 -0
  204. package/dist/__tests__/run-start-gate.test.js +18 -0
  205. package/dist/__tests__/run-start-gate.test.js.map +1 -0
  206. package/dist/__tests__/runtime-capabilities-sync.test.d.ts +2 -0
  207. package/dist/__tests__/runtime-capabilities-sync.test.d.ts.map +1 -0
  208. package/dist/__tests__/runtime-capabilities-sync.test.js +66 -0
  209. package/dist/__tests__/runtime-capabilities-sync.test.js.map +1 -0
  210. package/dist/__tests__/runtime-config.test.d.ts +2 -0
  211. package/dist/__tests__/runtime-config.test.d.ts.map +1 -0
  212. package/dist/__tests__/runtime-config.test.js +137 -0
  213. package/dist/__tests__/runtime-config.test.js.map +1 -0
  214. package/dist/__tests__/runtime-presenter-heartbeat.test.d.ts +2 -0
  215. package/dist/__tests__/runtime-presenter-heartbeat.test.d.ts.map +1 -0
  216. package/dist/__tests__/runtime-presenter-heartbeat.test.js +253 -0
  217. package/dist/__tests__/runtime-presenter-heartbeat.test.js.map +1 -0
  218. package/dist/__tests__/runtime-registration.test.d.ts +2 -0
  219. package/dist/__tests__/runtime-registration.test.d.ts.map +1 -0
  220. package/dist/__tests__/runtime-registration.test.js +109 -0
  221. package/dist/__tests__/runtime-registration.test.js.map +1 -0
  222. package/dist/__tests__/sandbox-outbox-storage.test.d.ts +2 -0
  223. package/dist/__tests__/sandbox-outbox-storage.test.d.ts.map +1 -0
  224. package/dist/__tests__/sandbox-outbox-storage.test.js +81 -0
  225. package/dist/__tests__/sandbox-outbox-storage.test.js.map +1 -0
  226. package/dist/__tests__/sandbox-outbox.test.d.ts +2 -0
  227. package/dist/__tests__/sandbox-outbox.test.d.ts.map +1 -0
  228. package/dist/__tests__/sandbox-outbox.test.js +300 -0
  229. package/dist/__tests__/sandbox-outbox.test.js.map +1 -0
  230. package/dist/__tests__/sandbox-workflow-context.test.d.ts +2 -0
  231. package/dist/__tests__/sandbox-workflow-context.test.d.ts.map +1 -0
  232. package/dist/__tests__/sandbox-workflow-context.test.js +600 -0
  233. package/dist/__tests__/sandbox-workflow-context.test.js.map +1 -0
  234. package/dist/__tests__/service-manager-deadline.test.d.ts +2 -0
  235. package/dist/__tests__/service-manager-deadline.test.d.ts.map +1 -0
  236. package/dist/__tests__/service-manager-deadline.test.js +36 -0
  237. package/dist/__tests__/service-manager-deadline.test.js.map +1 -0
  238. package/dist/__tests__/service-manager.test.d.ts +2 -0
  239. package/dist/__tests__/service-manager.test.d.ts.map +1 -0
  240. package/dist/__tests__/service-manager.test.js +769 -0
  241. package/dist/__tests__/service-manager.test.js.map +1 -0
  242. package/dist/__tests__/service-stop-ownership.test.d.ts +2 -0
  243. package/dist/__tests__/service-stop-ownership.test.d.ts.map +1 -0
  244. package/dist/__tests__/service-stop-ownership.test.js +89 -0
  245. package/dist/__tests__/service-stop-ownership.test.js.map +1 -0
  246. package/dist/__tests__/skill-invocation.test.d.ts +2 -0
  247. package/dist/__tests__/skill-invocation.test.d.ts.map +1 -0
  248. package/dist/__tests__/skill-invocation.test.js +40 -0
  249. package/dist/__tests__/skill-invocation.test.js.map +1 -0
  250. package/dist/__tests__/sleep-inhibitor-real.test.d.ts +2 -0
  251. package/dist/__tests__/sleep-inhibitor-real.test.d.ts.map +1 -0
  252. package/dist/__tests__/sleep-inhibitor-real.test.js +68 -0
  253. package/dist/__tests__/sleep-inhibitor-real.test.js.map +1 -0
  254. package/dist/__tests__/sleep-inhibitor.test.d.ts +2 -0
  255. package/dist/__tests__/sleep-inhibitor.test.d.ts.map +1 -0
  256. package/dist/__tests__/sleep-inhibitor.test.js +236 -0
  257. package/dist/__tests__/sleep-inhibitor.test.js.map +1 -0
  258. package/dist/__tests__/status-local-workspace.test.d.ts +2 -0
  259. package/dist/__tests__/status-local-workspace.test.d.ts.map +1 -0
  260. package/dist/__tests__/status-local-workspace.test.js +121 -0
  261. package/dist/__tests__/status-local-workspace.test.js.map +1 -0
  262. package/dist/__tests__/suspension-detector.test.d.ts +2 -0
  263. package/dist/__tests__/suspension-detector.test.d.ts.map +1 -0
  264. package/dist/__tests__/suspension-detector.test.js +112 -0
  265. package/dist/__tests__/suspension-detector.test.js.map +1 -0
  266. package/dist/__tests__/web-presenter-parent-events.test.d.ts +2 -0
  267. package/dist/__tests__/web-presenter-parent-events.test.d.ts.map +1 -0
  268. package/dist/__tests__/web-presenter-parent-events.test.js +168 -0
  269. package/dist/__tests__/web-presenter-parent-events.test.js.map +1 -0
  270. package/dist/__tests__/workspace-probe-concurrency.test.d.ts +2 -0
  271. package/dist/__tests__/workspace-probe-concurrency.test.d.ts.map +1 -0
  272. package/dist/__tests__/workspace-probe-concurrency.test.js +54 -0
  273. package/dist/__tests__/workspace-probe-concurrency.test.js.map +1 -0
  274. package/dist/__tests__/workspace-relocation.test.d.ts +2 -0
  275. package/dist/__tests__/workspace-relocation.test.d.ts.map +1 -0
  276. package/dist/__tests__/workspace-relocation.test.js +66 -0
  277. package/dist/__tests__/workspace-relocation.test.js.map +1 -0
  278. package/dist/__tests__/workspace-rpc.test.d.ts +2 -0
  279. package/dist/__tests__/workspace-rpc.test.d.ts.map +1 -0
  280. package/dist/__tests__/workspace-rpc.test.js +90 -0
  281. package/dist/__tests__/workspace-rpc.test.js.map +1 -0
  282. package/dist/__tests__/workspace-run-lease.test.d.ts +2 -0
  283. package/dist/__tests__/workspace-run-lease.test.d.ts.map +1 -0
  284. package/dist/__tests__/workspace-run-lease.test.js +331 -0
  285. package/dist/__tests__/workspace-run-lease.test.js.map +1 -0
  286. package/dist/__tests__/ws-client-connection.test.d.ts +2 -0
  287. package/dist/__tests__/ws-client-connection.test.d.ts.map +1 -0
  288. package/dist/__tests__/ws-client-connection.test.js +295 -0
  289. package/dist/__tests__/ws-client-connection.test.js.map +1 -0
  290. package/dist/__tests__/ws-client-heartbeat-volatile.test.d.ts +2 -0
  291. package/dist/__tests__/ws-client-heartbeat-volatile.test.d.ts.map +1 -0
  292. package/dist/__tests__/ws-client-heartbeat-volatile.test.js +63 -0
  293. package/dist/__tests__/ws-client-heartbeat-volatile.test.js.map +1 -0
  294. package/dist/__tests__/ws-client-heartbeat.integration.test.d.ts +2 -0
  295. package/dist/__tests__/ws-client-heartbeat.integration.test.d.ts.map +1 -0
  296. package/dist/__tests__/ws-client-heartbeat.integration.test.js +236 -0
  297. package/dist/__tests__/ws-client-heartbeat.integration.test.js.map +1 -0
  298. package/dist/__tests__/ws-client-user-message-ack.integration.test.d.ts +2 -0
  299. package/dist/__tests__/ws-client-user-message-ack.integration.test.d.ts.map +1 -0
  300. package/dist/__tests__/ws-client-user-message-ack.integration.test.js +211 -0
  301. package/dist/__tests__/ws-client-user-message-ack.integration.test.js.map +1 -0
  302. package/dist/antigravity-api-key-config.d.ts +2 -0
  303. package/dist/antigravity-api-key-config.d.ts.map +1 -0
  304. package/dist/antigravity-api-key-config.js +79 -0
  305. package/dist/antigravity-api-key-config.js.map +1 -0
  306. package/dist/binding-switch-git.d.ts +26 -0
  307. package/dist/binding-switch-git.d.ts.map +1 -0
  308. package/dist/binding-switch-git.js +871 -0
  309. package/dist/binding-switch-git.js.map +1 -0
  310. package/dist/cli-ensure-install.d.ts +34 -0
  311. package/dist/cli-ensure-install.d.ts.map +1 -0
  312. package/dist/cli-ensure-install.js +154 -0
  313. package/dist/cli-ensure-install.js.map +1 -0
  314. package/dist/cli-executable.d.ts +44 -0
  315. package/dist/cli-executable.d.ts.map +1 -0
  316. package/dist/cli-executable.js +435 -0
  317. package/dist/cli-executable.js.map +1 -0
  318. package/dist/cli-help.d.ts +11 -0
  319. package/dist/cli-help.d.ts.map +1 -0
  320. package/dist/cli-help.js +65 -0
  321. package/dist/cli-help.js.map +1 -0
  322. package/dist/computer-readiness.d.ts +41 -0
  323. package/dist/computer-readiness.d.ts.map +1 -0
  324. package/dist/computer-readiness.js +191 -0
  325. package/dist/computer-readiness.js.map +1 -0
  326. package/dist/core-agent.d.ts +32 -0
  327. package/dist/core-agent.d.ts.map +1 -0
  328. package/dist/core-agent.js +331 -0
  329. package/dist/core-agent.js.map +1 -0
  330. package/dist/daemon-execute.d.ts +42 -0
  331. package/dist/daemon-execute.d.ts.map +1 -0
  332. package/dist/daemon-execute.js +666 -0
  333. package/dist/daemon-execute.js.map +1 -0
  334. package/dist/daemon-helpers.d.ts +150 -0
  335. package/dist/daemon-helpers.d.ts.map +1 -0
  336. package/dist/daemon-helpers.js +157 -0
  337. package/dist/daemon-helpers.js.map +1 -0
  338. package/dist/daemon-local-control.d.ts +208 -0
  339. package/dist/daemon-local-control.d.ts.map +1 -0
  340. package/dist/daemon-local-control.js +826 -0
  341. package/dist/daemon-local-control.js.map +1 -0
  342. package/dist/daemon-local-http.d.ts +57 -0
  343. package/dist/daemon-local-http.d.ts.map +1 -0
  344. package/dist/daemon-local-http.js +375 -0
  345. package/dist/daemon-local-http.js.map +1 -0
  346. package/dist/daemon-native-hooks.d.ts +17 -0
  347. package/dist/daemon-native-hooks.d.ts.map +1 -0
  348. package/dist/daemon-native-hooks.js +54 -0
  349. package/dist/daemon-native-hooks.js.map +1 -0
  350. package/dist/daemon-provider-scan.d.ts +33 -0
  351. package/dist/daemon-provider-scan.d.ts.map +1 -0
  352. package/dist/daemon-provider-scan.js +187 -0
  353. package/dist/daemon-provider-scan.js.map +1 -0
  354. package/dist/daemon-runner-status.d.ts +164 -0
  355. package/dist/daemon-runner-status.d.ts.map +1 -0
  356. package/dist/daemon-runner-status.js +424 -0
  357. package/dist/daemon-runner-status.js.map +1 -0
  358. package/dist/daemon-start.d.ts +5 -0
  359. package/dist/daemon-start.d.ts.map +1 -0
  360. package/dist/daemon-start.js +1313 -0
  361. package/dist/daemon-start.js.map +1 -0
  362. package/dist/daemon-workspace.d.ts +36 -0
  363. package/dist/daemon-workspace.d.ts.map +1 -0
  364. package/dist/daemon-workspace.js +154 -0
  365. package/dist/daemon-workspace.js.map +1 -0
  366. package/dist/daemon.d.ts +59 -0
  367. package/dist/daemon.d.ts.map +1 -0
  368. package/dist/daemon.js +681 -0
  369. package/dist/daemon.js.map +1 -0
  370. package/dist/event-journal-crypto.d.ts +14 -0
  371. package/dist/event-journal-crypto.d.ts.map +1 -0
  372. package/dist/event-journal-crypto.js +89 -0
  373. package/dist/event-journal-crypto.js.map +1 -0
  374. package/dist/event-journal-paths.d.ts +10 -0
  375. package/dist/event-journal-paths.d.ts.map +1 -0
  376. package/dist/event-journal-paths.js +29 -0
  377. package/dist/event-journal-paths.js.map +1 -0
  378. package/dist/event-journal-recovery.d.ts +83 -0
  379. package/dist/event-journal-recovery.d.ts.map +1 -0
  380. package/dist/event-journal-recovery.js +333 -0
  381. package/dist/event-journal-recovery.js.map +1 -0
  382. package/dist/event-journal-types.d.ts +54 -0
  383. package/dist/event-journal-types.d.ts.map +1 -0
  384. package/dist/event-journal-types.js +10 -0
  385. package/dist/event-journal-types.js.map +1 -0
  386. package/dist/event-journal-writer.d.ts +44 -0
  387. package/dist/event-journal-writer.d.ts.map +1 -0
  388. package/dist/event-journal-writer.js +182 -0
  389. package/dist/event-journal-writer.js.map +1 -0
  390. package/dist/event-outbox.d.ts +113 -0
  391. package/dist/event-outbox.d.ts.map +1 -0
  392. package/dist/event-outbox.js +707 -0
  393. package/dist/event-outbox.js.map +1 -0
  394. package/dist/execution-activity-tracker.d.ts +43 -0
  395. package/dist/execution-activity-tracker.d.ts.map +1 -0
  396. package/dist/execution-activity-tracker.js +116 -0
  397. package/dist/execution-activity-tracker.js.map +1 -0
  398. package/dist/execution-lease-client.d.ts +62 -0
  399. package/dist/execution-lease-client.d.ts.map +1 -0
  400. package/dist/execution-lease-client.js +271 -0
  401. package/dist/execution-lease-client.js.map +1 -0
  402. package/dist/fake-provider-cli.d.ts +13 -0
  403. package/dist/fake-provider-cli.d.ts.map +1 -0
  404. package/dist/fake-provider-cli.js +53 -0
  405. package/dist/fake-provider-cli.js.map +1 -0
  406. package/dist/generated-images.d.ts +2 -0
  407. package/dist/generated-images.d.ts.map +1 -0
  408. package/dist/generated-images.js +2 -0
  409. package/dist/generated-images.js.map +1 -0
  410. package/dist/index.cjs +47033 -45514
  411. package/dist/index.d.ts +2 -0
  412. package/dist/index.d.ts.map +1 -0
  413. package/dist/index.js +224 -0
  414. package/dist/index.js.map +1 -0
  415. package/dist/install-command.d.ts +2 -0
  416. package/dist/install-command.d.ts.map +1 -0
  417. package/dist/install-command.js +96 -0
  418. package/dist/install-command.js.map +1 -0
  419. package/dist/integration-cli.d.ts +14 -0
  420. package/dist/integration-cli.d.ts.map +1 -0
  421. package/dist/integration-cli.js +80 -0
  422. package/dist/integration-cli.js.map +1 -0
  423. package/dist/lifecycle-logger.d.ts +25 -0
  424. package/dist/lifecycle-logger.d.ts.map +1 -0
  425. package/dist/lifecycle-logger.js +73 -0
  426. package/dist/lifecycle-logger.js.map +1 -0
  427. package/dist/local-daemon-lifecycle.d.ts +112 -0
  428. package/dist/local-daemon-lifecycle.d.ts.map +1 -0
  429. package/dist/local-daemon-lifecycle.js +433 -0
  430. package/dist/local-daemon-lifecycle.js.map +1 -0
  431. package/dist/local-git-status.d.ts +14 -0
  432. package/dist/local-git-status.d.ts.map +1 -0
  433. package/dist/local-git-status.js +43 -0
  434. package/dist/local-git-status.js.map +1 -0
  435. package/dist/managed-mcp.d.ts +7 -0
  436. package/dist/managed-mcp.d.ts.map +1 -0
  437. package/dist/managed-mcp.js +16 -0
  438. package/dist/managed-mcp.js.map +1 -0
  439. package/dist/mcp-config-adapters.d.ts +57 -0
  440. package/dist/mcp-config-adapters.d.ts.map +1 -0
  441. package/dist/mcp-config-adapters.js +929 -0
  442. package/dist/mcp-config-adapters.js.map +1 -0
  443. package/dist/mcp-sync.d.ts +44 -0
  444. package/dist/mcp-sync.d.ts.map +1 -0
  445. package/dist/mcp-sync.js +68 -0
  446. package/dist/mcp-sync.js.map +1 -0
  447. package/dist/model-scan-runner.d.ts +15 -0
  448. package/dist/model-scan-runner.d.ts.map +1 -0
  449. package/dist/model-scan-runner.js +56 -0
  450. package/dist/model-scan-runner.js.map +1 -0
  451. package/dist/native-hook-command.d.ts +31 -0
  452. package/dist/native-hook-command.d.ts.map +1 -0
  453. package/dist/native-hook-command.js +289 -0
  454. package/dist/native-hook-command.js.map +1 -0
  455. package/dist/native-hook-config.d.ts +43 -0
  456. package/dist/native-hook-config.d.ts.map +1 -0
  457. package/dist/native-hook-config.js +601 -0
  458. package/dist/native-hook-config.js.map +1 -0
  459. package/dist/native-hook-drain.d.ts +34 -0
  460. package/dist/native-hook-drain.d.ts.map +1 -0
  461. package/dist/native-hook-drain.js +83 -0
  462. package/dist/native-hook-drain.js.map +1 -0
  463. package/dist/native-hook-inbox.d.ts +40 -0
  464. package/dist/native-hook-inbox.d.ts.map +1 -0
  465. package/dist/native-hook-inbox.js +217 -0
  466. package/dist/native-hook-inbox.js.map +1 -0
  467. package/dist/native-project-config.d.ts +11 -0
  468. package/dist/native-project-config.d.ts.map +1 -0
  469. package/dist/native-project-config.js +49 -0
  470. package/dist/native-project-config.js.map +1 -0
  471. package/dist/native-session.d.ts +20 -0
  472. package/dist/native-session.d.ts.map +1 -0
  473. package/dist/native-session.js +213 -0
  474. package/dist/native-session.js.map +1 -0
  475. package/dist/native-stream-journal.d.ts +22 -0
  476. package/dist/native-stream-journal.d.ts.map +1 -0
  477. package/dist/native-stream-journal.js +98 -0
  478. package/dist/native-stream-journal.js.map +1 -0
  479. package/dist/native-stream-outbox.d.ts +40 -0
  480. package/dist/native-stream-outbox.d.ts.map +1 -0
  481. package/dist/native-stream-outbox.js +358 -0
  482. package/dist/native-stream-outbox.js.map +1 -0
  483. package/dist/native-stream-platform.d.ts +4 -0
  484. package/dist/native-stream-platform.d.ts.map +1 -0
  485. package/dist/native-stream-platform.js +11 -0
  486. package/dist/native-stream-platform.js.map +1 -0
  487. package/dist/native-transcript-cursor.d.ts +33 -0
  488. package/dist/native-transcript-cursor.d.ts.map +1 -0
  489. package/dist/native-transcript-cursor.js +108 -0
  490. package/dist/native-transcript-cursor.js.map +1 -0
  491. package/dist/native-transcript-stream.d.ts +20 -0
  492. package/dist/native-transcript-stream.d.ts.map +1 -0
  493. package/dist/native-transcript-stream.js +438 -0
  494. package/dist/native-transcript-stream.js.map +1 -0
  495. package/dist/network-diagnostics.d.ts +8 -0
  496. package/dist/network-diagnostics.d.ts.map +1 -0
  497. package/dist/network-diagnostics.js +56 -0
  498. package/dist/network-diagnostics.js.map +1 -0
  499. package/dist/observable-map.d.ts +13 -0
  500. package/dist/observable-map.d.ts.map +1 -0
  501. package/dist/observable-map.js +30 -0
  502. package/dist/observable-map.js.map +1 -0
  503. package/dist/provider-auth-preflight.d.ts +19 -0
  504. package/dist/provider-auth-preflight.d.ts.map +1 -0
  505. package/dist/provider-auth-preflight.js +107 -0
  506. package/dist/provider-auth-preflight.js.map +1 -0
  507. package/dist/provider-model-discovery.d.ts +33 -0
  508. package/dist/provider-model-discovery.d.ts.map +1 -0
  509. package/dist/provider-model-discovery.js +731 -0
  510. package/dist/provider-model-discovery.js.map +1 -0
  511. package/dist/resource-diagnostics.d.ts +21 -0
  512. package/dist/resource-diagnostics.d.ts.map +1 -0
  513. package/dist/resource-diagnostics.js +161 -0
  514. package/dist/resource-diagnostics.js.map +1 -0
  515. package/dist/resume-fallback-env.d.ts +3 -0
  516. package/dist/resume-fallback-env.d.ts.map +1 -0
  517. package/dist/resume-fallback-env.js +14 -0
  518. package/dist/resume-fallback-env.js.map +1 -0
  519. package/dist/run-journal.d.ts +51 -0
  520. package/dist/run-journal.d.ts.map +1 -0
  521. package/dist/run-journal.js +193 -0
  522. package/dist/run-journal.js.map +1 -0
  523. package/dist/runtime-backends.d.ts +2 -0
  524. package/dist/runtime-backends.d.ts.map +1 -0
  525. package/dist/runtime-backends.js +2 -0
  526. package/dist/runtime-backends.js.map +1 -0
  527. package/dist/runtime-capabilities-sync.d.ts +40 -0
  528. package/dist/runtime-capabilities-sync.d.ts.map +1 -0
  529. package/dist/runtime-capabilities-sync.js +56 -0
  530. package/dist/runtime-capabilities-sync.js.map +1 -0
  531. package/dist/runtime-config.d.ts +26 -0
  532. package/dist/runtime-config.d.ts.map +1 -0
  533. package/dist/runtime-config.js +170 -0
  534. package/dist/runtime-config.js.map +1 -0
  535. package/dist/runtime-presenter.d.ts +81 -0
  536. package/dist/runtime-presenter.d.ts.map +1 -0
  537. package/dist/runtime-presenter.js +422 -0
  538. package/dist/runtime-presenter.js.map +1 -0
  539. package/dist/runtime-registration.d.ts +40 -0
  540. package/dist/runtime-registration.d.ts.map +1 -0
  541. package/dist/runtime-registration.js +143 -0
  542. package/dist/runtime-registration.js.map +1 -0
  543. package/dist/sandbox-outbox-storage.d.ts +13 -0
  544. package/dist/sandbox-outbox-storage.d.ts.map +1 -0
  545. package/dist/sandbox-outbox-storage.js +98 -0
  546. package/dist/sandbox-outbox-storage.js.map +1 -0
  547. package/dist/sandbox-outbox.d.ts +115 -0
  548. package/dist/sandbox-outbox.d.ts.map +1 -0
  549. package/dist/sandbox-outbox.js +213 -0
  550. package/dist/sandbox-outbox.js.map +1 -0
  551. package/dist/sandbox.d.ts +34 -0
  552. package/dist/sandbox.d.ts.map +1 -0
  553. package/dist/sandbox.js +469 -0
  554. package/dist/sandbox.js.map +1 -0
  555. package/dist/service-manager.d.ts +113 -0
  556. package/dist/service-manager.d.ts.map +1 -0
  557. package/dist/service-manager.js +1065 -0
  558. package/dist/service-manager.js.map +1 -0
  559. package/dist/skills/__tests__/local-skill-source.test.d.ts +2 -0
  560. package/dist/skills/__tests__/local-skill-source.test.d.ts.map +1 -0
  561. package/dist/skills/__tests__/local-skill-source.test.js +373 -0
  562. package/dist/skills/__tests__/local-skill-source.test.js.map +1 -0
  563. package/dist/skills/__tests__/managed-skill-store.test.d.ts +2 -0
  564. package/dist/skills/__tests__/managed-skill-store.test.d.ts.map +1 -0
  565. package/dist/skills/__tests__/managed-skill-store.test.js +114 -0
  566. package/dist/skills/__tests__/managed-skill-store.test.js.map +1 -0
  567. package/dist/skills/__tests__/runtime-skill-coordinator.test.d.ts +2 -0
  568. package/dist/skills/__tests__/runtime-skill-coordinator.test.d.ts.map +1 -0
  569. package/dist/skills/__tests__/runtime-skill-coordinator.test.js +251 -0
  570. package/dist/skills/__tests__/runtime-skill-coordinator.test.js.map +1 -0
  571. package/dist/skills/__tests__/runtime-skill-manager.test.d.ts +2 -0
  572. package/dist/skills/__tests__/runtime-skill-manager.test.d.ts.map +1 -0
  573. package/dist/skills/__tests__/runtime-skill-manager.test.js +664 -0
  574. package/dist/skills/__tests__/runtime-skill-manager.test.js.map +1 -0
  575. package/dist/skills/__tests__/skill-bundle.test.d.ts +2 -0
  576. package/dist/skills/__tests__/skill-bundle.test.d.ts.map +1 -0
  577. package/dist/skills/__tests__/skill-bundle.test.js +42 -0
  578. package/dist/skills/__tests__/skill-bundle.test.js.map +1 -0
  579. package/dist/skills/__tests__/skill-control-client.test.d.ts +2 -0
  580. package/dist/skills/__tests__/skill-control-client.test.d.ts.map +1 -0
  581. package/dist/skills/__tests__/skill-control-client.test.js +49 -0
  582. package/dist/skills/__tests__/skill-control-client.test.js.map +1 -0
  583. package/dist/skills/__tests__/skill-source-config.test.d.ts +2 -0
  584. package/dist/skills/__tests__/skill-source-config.test.d.ts.map +1 -0
  585. package/dist/skills/__tests__/skill-source-config.test.js +295 -0
  586. package/dist/skills/__tests__/skill-source-config.test.js.map +1 -0
  587. package/dist/skills/local-skill-source.d.ts +77 -0
  588. package/dist/skills/local-skill-source.d.ts.map +1 -0
  589. package/dist/skills/local-skill-source.js +660 -0
  590. package/dist/skills/local-skill-source.js.map +1 -0
  591. package/dist/skills/managed-skill-store.d.ts +44 -0
  592. package/dist/skills/managed-skill-store.d.ts.map +1 -0
  593. package/dist/skills/managed-skill-store.js +160 -0
  594. package/dist/skills/managed-skill-store.js.map +1 -0
  595. package/dist/skills/runtime-skill-coordinator.d.ts +35 -0
  596. package/dist/skills/runtime-skill-coordinator.d.ts.map +1 -0
  597. package/dist/skills/runtime-skill-coordinator.js +166 -0
  598. package/dist/skills/runtime-skill-coordinator.js.map +1 -0
  599. package/dist/skills/runtime-skill-manager.d.ts +89 -0
  600. package/dist/skills/runtime-skill-manager.d.ts.map +1 -0
  601. package/dist/skills/runtime-skill-manager.js +934 -0
  602. package/dist/skills/runtime-skill-manager.js.map +1 -0
  603. package/dist/skills/skill-bundle.d.ts +2 -0
  604. package/dist/skills/skill-bundle.d.ts.map +1 -0
  605. package/dist/skills/skill-bundle.js +2 -0
  606. package/dist/skills/skill-bundle.js.map +1 -0
  607. package/dist/skills/skill-cli.d.ts +2 -0
  608. package/dist/skills/skill-cli.d.ts.map +1 -0
  609. package/dist/skills/skill-cli.js +81 -0
  610. package/dist/skills/skill-cli.js.map +1 -0
  611. package/dist/skills/skill-control-client.d.ts +20 -0
  612. package/dist/skills/skill-control-client.d.ts.map +1 -0
  613. package/dist/skills/skill-control-client.js +56 -0
  614. package/dist/skills/skill-control-client.js.map +1 -0
  615. package/dist/skills/skill-invocation.d.ts +10 -0
  616. package/dist/skills/skill-invocation.d.ts.map +1 -0
  617. package/dist/skills/skill-invocation.js +24 -0
  618. package/dist/skills/skill-invocation.js.map +1 -0
  619. package/dist/sleep-inhibitor.d.ts +32 -0
  620. package/dist/sleep-inhibitor.d.ts.map +1 -0
  621. package/dist/sleep-inhibitor.js +297 -0
  622. package/dist/sleep-inhibitor.js.map +1 -0
  623. package/dist/suspension-detector.d.ts +24 -0
  624. package/dist/suspension-detector.d.ts.map +1 -0
  625. package/dist/suspension-detector.js +59 -0
  626. package/dist/suspension-detector.js.map +1 -0
  627. package/dist/types.d.ts +2 -0
  628. package/dist/types.d.ts.map +1 -0
  629. package/dist/types.js +2 -0
  630. package/dist/types.js.map +1 -0
  631. package/dist/version.d.ts +2 -0
  632. package/dist/version.d.ts.map +1 -0
  633. package/dist/version.js +2 -0
  634. package/dist/version.js.map +1 -0
  635. package/dist/web-presenter.d.ts +52 -0
  636. package/dist/web-presenter.d.ts.map +1 -0
  637. package/dist/web-presenter.js +264 -0
  638. package/dist/web-presenter.js.map +1 -0
  639. package/dist/workspace-relocation.d.ts +22 -0
  640. package/dist/workspace-relocation.d.ts.map +1 -0
  641. package/dist/workspace-relocation.js +90 -0
  642. package/dist/workspace-relocation.js.map +1 -0
  643. package/dist/workspace-rpc.d.ts +2 -0
  644. package/dist/workspace-rpc.d.ts.map +1 -0
  645. package/dist/workspace-rpc.js +15 -0
  646. package/dist/workspace-rpc.js.map +1 -0
  647. package/dist/workspace-run-lease.d.ts +116 -0
  648. package/dist/workspace-run-lease.d.ts.map +1 -0
  649. package/dist/workspace-run-lease.js +320 -0
  650. package/dist/workspace-run-lease.js.map +1 -0
  651. package/dist/ws-client.d.ts +168 -0
  652. package/dist/ws-client.d.ts.map +1 -0
  653. package/dist/ws-client.js +440 -0
  654. package/dist/ws-client.js.map +1 -0
  655. package/package.json +4 -3
@@ -0,0 +1,374 @@
1
+ import { execFileSync } from "node:child_process";
2
+ import { randomBytes } from "node:crypto";
3
+ import { existsSync, mkdirSync, mkdtempSync, readFileSync, writeFileSync } from "node:fs";
4
+ import { tmpdir } from "node:os";
5
+ import { join } from "node:path";
6
+ import { fileURLToPath } from "node:url";
7
+ import { describe, expect, it } from "vitest";
8
+ import { extractNativeHookConfigPath, inspectNativeHooksConfigured, nativeHookCommand, readInstalledNativeHookConfigPath, reconcileClaudeNativeHooks, reconcileCodexNativeHooks, reconcileCopilotNativeHooks, reconcileCursorNativeHooks, reconcileGrokNativeHooks, reconcileKimiNativeHooks, reconcileOpencodeNativePlugin, removeClaudeNativeHooks, removeCodexNativeHooks, removeCopilotNativeHooks, removeCursorNativeHooks, removeGrokNativeHooks, removeKimiNativeHooks, removeOpencodeNativePlugin, } from "../native-hook-config.js";
9
+ import { EncryptedNativeHookInbox, nativeHookInboxPath } from "../native-hook-inbox.js";
10
+ describe("native hook configuration", () => {
11
+ it("reconciles Codex lifecycle hooks without replacing user hooks", () => {
12
+ const homeDir = mkdtempSync(join(tmpdir(), "alan-codex-hooks-"));
13
+ mkdirSync(join(homeDir, ".codex"));
14
+ writeFileSync(join(homeDir, ".codex", "hooks.json"), JSON.stringify({ hooks: { Stop: [{ hooks: [{ type: "command", command: "user-stop" }] }] } }));
15
+ const input = {
16
+ configPath: join(homeDir, ".alan", "config.json"),
17
+ homeDir,
18
+ nodeExecutable: "/usr/bin/node",
19
+ cliEntry: "/opt/alan/index.cjs",
20
+ };
21
+ expect(reconcileCodexNativeHooks(input)).toBe(true);
22
+ expect(reconcileCodexNativeHooks(input)).toBe(false);
23
+ const configured = readFileSync(join(homeDir, ".codex", "hooks.json"), "utf8");
24
+ expect(configured).toContain("user-stop");
25
+ expect(configured).toContain("codex_app_server");
26
+ expect(configured).toContain("commandWindows");
27
+ expect(removeCodexNativeHooks(homeDir)).toBe(true);
28
+ expect(readFileSync(join(homeDir, ".codex", "hooks.json"), "utf8")).toContain("user-stop");
29
+ });
30
+ it("owns one auto-discovered Copilot hook file in the documented shape", () => {
31
+ const homeDir = mkdtempSync(join(tmpdir(), "alan-copilot-hooks-"));
32
+ const input = {
33
+ configPath: join(homeDir, ".alan", "config.json"),
34
+ homeDir,
35
+ nodeExecutable: "/usr/bin/node",
36
+ cliEntry: "/opt/alan/index.cjs",
37
+ };
38
+ expect(reconcileCopilotNativeHooks(input)).toBe(true);
39
+ expect(reconcileCopilotNativeHooks(input)).toBe(false);
40
+ const hookPath = join(homeDir, ".copilot", "hooks", "alan-native-session.json");
41
+ const configured = JSON.parse(readFileSync(hookPath, "utf8"));
42
+ expect(configured.version).toBe(1);
43
+ expect(configured.hooks.Stop?.[0]).toMatchObject({
44
+ type: "command",
45
+ timeoutSec: 5,
46
+ });
47
+ expect(configured.hooks.Stop?.[0]?.bash).toContain("copilot_cli");
48
+ expect(configured.hooks.Stop?.[0]?.powershell).toContain("copilot_cli");
49
+ expect(configured.hooks.SubagentStart).toBeUndefined();
50
+ expect(removeCopilotNativeHooks(homeDir)).toBe(true);
51
+ expect(existsSync(hookPath)).toBe(false);
52
+ });
53
+ it("reconciles Cursor lifecycle hooks in the documented flat hook shape", () => {
54
+ const homeDir = mkdtempSync(join(tmpdir(), "alan-cursor-hooks-"));
55
+ mkdirSync(join(homeDir, ".cursor"));
56
+ writeFileSync(join(homeDir, ".cursor", "hooks.json"), JSON.stringify({ version: 1, hooks: { stop: [{ command: "user-stop" }] } }));
57
+ const input = {
58
+ configPath: join(homeDir, ".alan", "config.json"),
59
+ homeDir,
60
+ nodeExecutable: "/usr/bin/node",
61
+ cliEntry: "/opt/alan/index.cjs",
62
+ };
63
+ expect(reconcileCursorNativeHooks(input)).toBe(true);
64
+ expect(reconcileCursorNativeHooks(input)).toBe(false);
65
+ const configured = JSON.parse(readFileSync(join(homeDir, ".cursor", "hooks.json"), "utf8"));
66
+ expect(configured.hooks.stop).toHaveLength(2);
67
+ expect(configured.hooks.sessionStart?.[0]?.command).toContain("cursor_agent_cli");
68
+ expect(removeCursorNativeHooks(homeDir)).toBe(true);
69
+ expect(readFileSync(join(homeDir, ".cursor", "hooks.json"), "utf8")).toContain("user-stop");
70
+ });
71
+ it("reconciles Kimi lifecycle hooks without replacing user TOML", () => {
72
+ const homeDir = mkdtempSync(join(tmpdir(), "alan-kimi-hooks-"));
73
+ mkdirSync(join(homeDir, ".kimi-code"));
74
+ writeFileSync(join(homeDir, ".kimi-code", "config.toml"), 'default_model = "kimi-code/k3"\n');
75
+ const input = {
76
+ configPath: join(homeDir, ".alan", "config.json"),
77
+ homeDir,
78
+ nodeExecutable: "/usr/bin/node",
79
+ cliEntry: "/opt/alan/index.cjs",
80
+ };
81
+ expect(reconcileKimiNativeHooks(input)).toBe(true);
82
+ expect(reconcileKimiNativeHooks(input)).toBe(false);
83
+ const configured = readFileSync(join(homeDir, ".kimi-code", "config.toml"), "utf8");
84
+ expect(configured).toContain('default_model = "kimi-code/k3"');
85
+ expect(configured).toContain('event = "SessionStart"');
86
+ expect(configured).toContain("kimi_cli");
87
+ expect(removeKimiNativeHooks(homeDir)).toBe(true);
88
+ expect(readFileSync(join(homeDir, ".kimi-code", "config.toml"), "utf8")).toBe('default_model = "kimi-code/k3"\n');
89
+ });
90
+ it("owns one auto-discovered Grok hook file", () => {
91
+ const homeDir = mkdtempSync(join(tmpdir(), "alan-grok-hooks-"));
92
+ const input = {
93
+ configPath: join(homeDir, ".alan", "config.json"),
94
+ homeDir,
95
+ nodeExecutable: "/usr/bin/node",
96
+ cliEntry: "/opt/alan/index.cjs",
97
+ };
98
+ expect(reconcileGrokNativeHooks(input)).toBe(true);
99
+ expect(reconcileGrokNativeHooks(input)).toBe(false);
100
+ const hookPath = join(homeDir, ".grok", "hooks", "alan-native-session.json");
101
+ const configured = readFileSync(hookPath, "utf8");
102
+ expect(configured).toContain("StopCancelled");
103
+ expect(configured).toContain("grok_cli");
104
+ expect(removeGrokNativeHooks(homeDir)).toBe(true);
105
+ expect(existsSync(hookPath)).toBe(false);
106
+ });
107
+ it("owns one auto-discovered OpenCode plugin and removes only marked content", () => {
108
+ const homeDir = mkdtempSync(join(tmpdir(), "alan-opencode-plugin-"));
109
+ const input = {
110
+ configPath: join(homeDir, ".alan", "config.json"),
111
+ homeDir,
112
+ nodeExecutable: "/usr/bin/node",
113
+ cliEntry: "/opt/alan/index.cjs",
114
+ };
115
+ expect(reconcileOpencodeNativePlugin(input)).toBe(true);
116
+ expect(reconcileOpencodeNativePlugin(input)).toBe(false);
117
+ const pluginPath = join(homeDir, ".config", "opencode", "plugins", "alan-native-session.js");
118
+ const source = readFileSync(pluginPath, "utf8");
119
+ expect(source).toContain("message.part.updated");
120
+ expect(source).toContain("userPartIdsBySession.get(part.sessionID)?.has(part.id)");
121
+ expect(source).toContain("opencode_cli");
122
+ expect(removeOpencodeNativePlugin(homeDir)).toBe(true);
123
+ expect(existsSync(pluginPath)).toBe(false);
124
+ });
125
+ it("preserves user hooks and reconciles Alan hooks idempotently", () => {
126
+ const homeDir = mkdtempSync(join(tmpdir(), "alan-native-hooks-"));
127
+ const configDir = join(homeDir, ".claude");
128
+ const agentConfigPath = join(homeDir, ".alan-dev", "agent", "config.json");
129
+ mkdirSync(configDir);
130
+ writeFileSync(join(configDir, "settings.json"), JSON.stringify({
131
+ hooks: {
132
+ Stop: [
133
+ { hooks: [{ type: "command", command: "user-hook" }] },
134
+ {
135
+ hooks: [
136
+ {
137
+ type: "command",
138
+ command: "ALAN_AGENT_CONFIG_PATH='/old/config.json' node old.cjs hook # alan-native-session-hook",
139
+ },
140
+ ],
141
+ },
142
+ ],
143
+ },
144
+ }));
145
+ expect(reconcileClaudeNativeHooks({
146
+ configPath: agentConfigPath,
147
+ homeDir,
148
+ nodeExecutable: "/usr/bin/node",
149
+ cliEntry: "/opt/alan/index.cjs",
150
+ })).toBe(true);
151
+ expect(reconcileClaudeNativeHooks({
152
+ configPath: agentConfigPath,
153
+ homeDir,
154
+ nodeExecutable: "/usr/bin/node",
155
+ cliEntry: "/opt/alan/index.cjs",
156
+ })).toBe(false);
157
+ const configured = readFileSync(join(configDir, "settings.json"), "utf8");
158
+ expect(configured).toContain("user-hook");
159
+ expect(configured).toContain("alan-native-session-hook");
160
+ expect(configured).not.toContain("/old/config.json");
161
+ const parsed = JSON.parse(configured);
162
+ expect(parsed.hooks.Stop).toHaveLength(2);
163
+ expect(parsed.hooks.Stop[1]?.hooks[0]).toMatchObject({
164
+ type: "command",
165
+ command: "/usr/bin/node",
166
+ args: [
167
+ "/opt/alan/index.cjs",
168
+ "hook",
169
+ "--config-path",
170
+ agentConfigPath,
171
+ "--provider",
172
+ "claude_cli",
173
+ "--event",
174
+ "Stop",
175
+ "# alan-native-session-hook",
176
+ ],
177
+ timeout: 5,
178
+ });
179
+ expect(inspectNativeHooksConfigured("claude_cli", homeDir)).toBe(true);
180
+ expect(inspectNativeHooksConfigured("claude_cli", homeDir, agentConfigPath)).toBe(true);
181
+ expect(inspectNativeHooksConfigured("claude_cli", homeDir, join(homeDir, ".alan", "agent", "config.json"))).toBe(false);
182
+ expect(removeClaudeNativeHooks(homeDir)).toBe(true);
183
+ expect(inspectNativeHooksConfigured("claude_cli", homeDir)).toBe(false);
184
+ const removed = readFileSync(join(configDir, "settings.json"), "utf8");
185
+ expect(removed).toContain("user-hook");
186
+ expect(removed).not.toContain("alan-native-session-hook");
187
+ });
188
+ it("uses shell-free exec form and pins the selected config path as an argument", () => {
189
+ const directory = mkdtempSync(join(tmpdir(), "alan-native-hook-profile-"));
190
+ const configPath = join(directory, "profile's config.json");
191
+ const outputPath = join(directory, "hook-output.json");
192
+ const cliEntry = join(directory, "hook-probe.cjs");
193
+ writeFileSync(cliEntry, `require("node:fs").writeFileSync(${JSON.stringify(outputPath)}, JSON.stringify({ args: process.argv.slice(2) }));\n`);
194
+ const hook = nativeHookCommand({
195
+ configPath,
196
+ nodeExecutable: process.execPath,
197
+ cliEntry,
198
+ provider: "claude_cli",
199
+ event: "UserPromptSubmit",
200
+ });
201
+ expect(hook.shell).toBeUndefined();
202
+ execFileSync(hook.command, hook.args);
203
+ expect(JSON.parse(readFileSync(outputPath, "utf8"))).toEqual({
204
+ args: [
205
+ "hook",
206
+ "--config-path",
207
+ configPath,
208
+ "--provider",
209
+ "claude_cli",
210
+ "--event",
211
+ "UserPromptSubmit",
212
+ "# alan-native-session-hook",
213
+ ],
214
+ });
215
+ });
216
+ it("uses explicit PowerShell shell form when the runtime needs environment variables", () => {
217
+ const hook = nativeHookCommand({
218
+ configPath: "C:\\Users\\O'Brien\\.alan\\agent\\config.json",
219
+ nodeExecutable: "C:\\Program Files\\Alan\\Alan.exe",
220
+ cliEntry: "C:\\Program Files\\Alan\\resources\\alan-agent\\index.cjs",
221
+ environment: { ELECTRON_RUN_AS_NODE: "1" },
222
+ platform: "win32",
223
+ provider: "claude_cli",
224
+ event: "SessionStart",
225
+ });
226
+ expect(hook).toEqual({
227
+ type: "command",
228
+ shell: "powershell",
229
+ command: "$env:ELECTRON_RUN_AS_NODE='1'; & 'C:\\Program Files\\Alan\\Alan.exe' 'C:\\Program Files\\Alan\\resources\\alan-agent\\index.cjs' 'hook' '--config-path' 'C:\\Users\\O''Brien\\.alan\\agent\\config.json' '--provider' 'claude_cli' '--event' 'SessionStart' '# alan-native-session-hook'",
230
+ timeout: 5,
231
+ });
232
+ });
233
+ it.skipIf(process.platform !== "win32")("executes the PowerShell shell form with literal paths, environment, arguments, and stdin", () => {
234
+ const root = mkdtempSync(join(tmpdir(), "alan-native-hook-windows-"));
235
+ const directory = join(root, "path with O'Brien & value");
236
+ mkdirSync(directory);
237
+ const configPath = join(directory, "agent config.json");
238
+ const outputPath = join(directory, "hook output.json");
239
+ const cliEntry = join(directory, "hook probe.cjs");
240
+ writeFileSync(cliEntry, `const fs = require("node:fs"); const input = fs.readFileSync(0, "utf8"); fs.writeFileSync(${JSON.stringify(outputPath)}, JSON.stringify({ electronRunAsNode: process.env.ELECTRON_RUN_AS_NODE, args: process.argv.slice(2), input }));\n`);
241
+ const hook = nativeHookCommand({
242
+ configPath,
243
+ nodeExecutable: process.execPath,
244
+ cliEntry,
245
+ environment: { ELECTRON_RUN_AS_NODE: "1" },
246
+ platform: "win32",
247
+ provider: "claude_cli",
248
+ event: "SessionStart",
249
+ });
250
+ const input = JSON.stringify({ session_id: "windows-shell-session" });
251
+ execFileSync("powershell.exe", ["-NoProfile", "-Command", hook.command], { input });
252
+ expect(JSON.parse(readFileSync(outputPath, "utf8"))).toEqual({
253
+ electronRunAsNode: "1",
254
+ args: [
255
+ "hook",
256
+ "--config-path",
257
+ configPath,
258
+ "--provider",
259
+ "claude_cli",
260
+ "--event",
261
+ "SessionStart",
262
+ "# alan-native-session-hook",
263
+ ],
264
+ input,
265
+ });
266
+ });
267
+ it.skipIf(process.platform === "win32")("uses explicit Bash shell form when a POSIX runtime needs environment variables", () => {
268
+ const directory = mkdtempSync(join(tmpdir(), "alan-native-hook-posix-environment-"));
269
+ const configPath = join(directory, "O'Brien", "config.json");
270
+ const outputPath = join(directory, "hook-output.json");
271
+ const cliEntry = join(directory, "hook-probe.cjs");
272
+ writeFileSync(cliEntry, `require("node:fs").writeFileSync(${JSON.stringify(outputPath)}, JSON.stringify({ electronRunAsNode: process.env.ELECTRON_RUN_AS_NODE, args: process.argv.slice(2) }));\n`);
273
+ const hook = nativeHookCommand({
274
+ configPath,
275
+ nodeExecutable: process.execPath,
276
+ cliEntry,
277
+ environment: { ELECTRON_RUN_AS_NODE: "1" },
278
+ platform: "darwin",
279
+ provider: "claude_cli",
280
+ event: "SessionStart",
281
+ });
282
+ expect(hook.shell).toBe("bash");
283
+ execFileSync("/bin/bash", ["-c", hook.command], {
284
+ input: JSON.stringify({ session_id: "shell-form-session" }),
285
+ });
286
+ expect(JSON.parse(readFileSync(outputPath, "utf8"))).toEqual({
287
+ electronRunAsNode: "1",
288
+ args: [
289
+ "hook",
290
+ "--config-path",
291
+ configPath,
292
+ "--provider",
293
+ "claude_cli",
294
+ "--event",
295
+ "SessionStart",
296
+ "# alan-native-session-hook",
297
+ ],
298
+ });
299
+ });
300
+ it("rejects invalid runtime environment variable names", () => {
301
+ expect(() => nativeHookCommand({
302
+ configPath: "/tmp/config.json",
303
+ nodeExecutable: process.execPath,
304
+ cliEntry: "/tmp/index.cjs",
305
+ environment: { "INVALID-NAME": "value" },
306
+ provider: "claude_cli",
307
+ event: "SessionStart",
308
+ })).toThrow("Invalid native hook environment variable: INVALID-NAME");
309
+ });
310
+ it("writes hook events to the inbox beside the selected profile", async () => {
311
+ const directory = mkdtempSync(join(tmpdir(), "alan-native-hook-selected-profile-"));
312
+ const configPath = join(directory, "profile's config.json");
313
+ const key = randomBytes(32).toString("base64url");
314
+ writeFileSync(configPath, JSON.stringify({ eventSpoolKey: key }));
315
+ const wrapper = join(directory, "node-wrapper.cjs");
316
+ const indexPath = fileURLToPath(new URL("../index.ts", import.meta.url));
317
+ writeFileSync(wrapper, `const { spawnSync } = require("node:child_process");\nconst result = spawnSync(process.execPath, ["--import", "tsx", ${JSON.stringify(indexPath)}, ...process.argv.slice(2)], { env: process.env, input: require("node:fs").readFileSync(0), stdio: ["pipe", "inherit", "inherit"] });\nprocess.exit(result.status ?? 1);\n`);
318
+ const hook = nativeHookCommand({
319
+ configPath,
320
+ nodeExecutable: process.execPath,
321
+ cliEntry: wrapper,
322
+ provider: "claude_cli",
323
+ event: "SessionStart",
324
+ });
325
+ execFileSync(hook.command, hook.args, {
326
+ env: {
327
+ ...process.env,
328
+ ALAN_MANAGED_RUN: "",
329
+ ALAN_RUN_ID: "",
330
+ },
331
+ input: JSON.stringify({ session_id: "selected-profile-session" }),
332
+ });
333
+ const received = [];
334
+ await new EncryptedNativeHookInbox(nativeHookInboxPath(configPath), key).drain(async (event) => {
335
+ received.push(event.externalSessionId);
336
+ return true;
337
+ });
338
+ expect(received).toEqual(["selected-profile-session"]);
339
+ });
340
+ it("refuses to install ambiguous hooks without an exact config path", () => {
341
+ const previousConfigPath = process.env.ALAN_AGENT_CONFIG_PATH;
342
+ delete process.env.ALAN_AGENT_CONFIG_PATH;
343
+ try {
344
+ expect(() => reconcileClaudeNativeHooks({
345
+ homeDir: mkdtempSync(join(tmpdir(), "alan-native-hooks-no-profile-")),
346
+ nodeExecutable: "/usr/bin/node",
347
+ cliEntry: "/opt/alan/index.cjs",
348
+ })).toThrow("without an exact Alan agent config path");
349
+ }
350
+ finally {
351
+ if (previousConfigPath === undefined)
352
+ delete process.env.ALAN_AGENT_CONFIG_PATH;
353
+ else
354
+ process.env.ALAN_AGENT_CONFIG_PATH = previousConfigPath;
355
+ }
356
+ });
357
+ it("extracts installed hook config paths from CLI hook commands", () => {
358
+ expect(extractNativeHookConfigPath(JSON.stringify(["hook", "--config-path", "C:\\Users\\Test\\.alan\\agent\\config.json"]))).toBe("C:\\Users\\Test\\.alan\\agent\\config.json");
359
+ expect(extractNativeHookConfigPath("/usr/bin/node /opt/alan/index.cjs hook --config-path '/Users/test/.alan-dev/agent/config.json' --provider claude_cli --event Stop # alan-native-session-hook")).toBe("/Users/test/.alan-dev/agent/config.json");
360
+ expect(extractNativeHookConfigPath("'/usr/bin/node' '/opt/alan/index.cjs' 'hook' '--config-path' '/Users/test/.alan-dev/agent/config.json' '--provider' 'codex_app_server'")).toBe("/Users/test/.alan-dev/agent/config.json");
361
+ const homeDir = mkdtempSync(join(tmpdir(), "alan-native-hook-installed-path-"));
362
+ const configDir = join(homeDir, ".claude");
363
+ mkdirSync(configDir, { recursive: true });
364
+ const agentConfigPath = join(homeDir, ".alan", "agent", "config.json");
365
+ reconcileClaudeNativeHooks({
366
+ homeDir,
367
+ configPath: agentConfigPath,
368
+ nodeExecutable: "/usr/bin/node",
369
+ cliEntry: "/opt/alan/index.cjs",
370
+ });
371
+ expect(readInstalledNativeHookConfigPath(homeDir)).toBe(agentConfigPath);
372
+ });
373
+ });
374
+ //# sourceMappingURL=native-hook-config.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"native-hook-config.test.js","sourceRoot":"","sources":["../../src/__tests__/native-hook-config.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,WAAW,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAC1F,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AACjC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAC9C,OAAO,EACL,2BAA2B,EAC3B,4BAA4B,EAC5B,iBAAiB,EACjB,iCAAiC,EACjC,0BAA0B,EAC1B,yBAAyB,EACzB,2BAA2B,EAC3B,0BAA0B,EAC1B,wBAAwB,EACxB,wBAAwB,EACxB,6BAA6B,EAC7B,uBAAuB,EACvB,sBAAsB,EACtB,wBAAwB,EACxB,uBAAuB,EACvB,qBAAqB,EACrB,qBAAqB,EACrB,0BAA0B,GAC3B,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,wBAAwB,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAExF,QAAQ,CAAC,2BAA2B,EAAE,GAAG,EAAE;IACzC,EAAE,CAAC,+DAA+D,EAAE,GAAG,EAAE;QACvE,MAAM,OAAO,GAAG,WAAW,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,mBAAmB,CAAC,CAAC,CAAC;QACjE,SAAS,CAAC,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAC;QACnC,aAAa,CACX,IAAI,CAAC,OAAO,EAAE,QAAQ,EAAE,YAAY,CAAC,EACrC,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,WAAW,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAC9F,CAAC;QAEF,MAAM,KAAK,GAAG;YACZ,UAAU,EAAE,IAAI,CAAC,OAAO,EAAE,OAAO,EAAE,aAAa,CAAC;YACjD,OAAO;YACP,cAAc,EAAE,eAAe;YAC/B,QAAQ,EAAE,qBAAqB;SAChC,CAAC;QACF,MAAM,CAAC,yBAAyB,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACpD,MAAM,CAAC,yBAAyB,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAErD,MAAM,UAAU,GAAG,YAAY,CAAC,IAAI,CAAC,OAAO,EAAE,QAAQ,EAAE,YAAY,CAAC,EAAE,MAAM,CAAC,CAAC;QAC/E,MAAM,CAAC,UAAU,CAAC,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;QAC1C,MAAM,CAAC,UAAU,CAAC,CAAC,SAAS,CAAC,kBAAkB,CAAC,CAAC;QACjD,MAAM,CAAC,UAAU,CAAC,CAAC,SAAS,CAAC,gBAAgB,CAAC,CAAC;QAC/C,MAAM,CAAC,sBAAsB,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACnD,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,EAAE,QAAQ,EAAE,YAAY,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;IAC7F,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,oEAAoE,EAAE,GAAG,EAAE;QAC5E,MAAM,OAAO,GAAG,WAAW,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,qBAAqB,CAAC,CAAC,CAAC;QACnE,MAAM,KAAK,GAAG;YACZ,UAAU,EAAE,IAAI,CAAC,OAAO,EAAE,OAAO,EAAE,aAAa,CAAC;YACjD,OAAO;YACP,cAAc,EAAE,eAAe;YAC/B,QAAQ,EAAE,qBAAqB;SAChC,CAAC;QAEF,MAAM,CAAC,2BAA2B,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACtD,MAAM,CAAC,2BAA2B,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACvD,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,0BAA0B,CAAC,CAAC;QAChF,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,QAAQ,EAAE,MAAM,CAAC,CAG3D,CAAC;QACF,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACnC,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC;YAC/C,IAAI,EAAE,SAAS;YACf,UAAU,EAAE,CAAC;SACd,CAAC,CAAC;QACH,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC;QAClE,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC;QACxE,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,aAAa,EAAE,CAAC;QACvD,MAAM,CAAC,wBAAwB,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACrD,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC3C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,qEAAqE,EAAE,GAAG,EAAE;QAC7E,MAAM,OAAO,GAAG,WAAW,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,oBAAoB,CAAC,CAAC,CAAC;QAClE,SAAS,CAAC,IAAI,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC,CAAC;QACpC,aAAa,CACX,IAAI,CAAC,OAAO,EAAE,SAAS,EAAE,YAAY,CAAC,EACtC,IAAI,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,OAAO,EAAE,WAAW,EAAE,CAAC,EAAE,EAAE,CAAC,CAC5E,CAAC;QAEF,MAAM,KAAK,GAAG;YACZ,UAAU,EAAE,IAAI,CAAC,OAAO,EAAE,OAAO,EAAE,aAAa,CAAC;YACjD,OAAO;YACP,cAAc,EAAE,eAAe;YAC/B,QAAQ,EAAE,qBAAqB;SAChC,CAAC;QACF,MAAM,CAAC,0BAA0B,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACrD,MAAM,CAAC,0BAA0B,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAEtD,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,EAAE,SAAS,EAAE,YAAY,CAAC,EAAE,MAAM,CAAC,CAEzF,CAAC;QACF,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;QAC9C,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,SAAS,CAAC,kBAAkB,CAAC,CAAC;QAClF,MAAM,CAAC,uBAAuB,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACpD,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,EAAE,SAAS,EAAE,YAAY,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;IAC9F,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,6DAA6D,EAAE,GAAG,EAAE;QACrE,MAAM,OAAO,GAAG,WAAW,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,kBAAkB,CAAC,CAAC,CAAC;QAChE,SAAS,CAAC,IAAI,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC,CAAC;QACvC,aAAa,CAAC,IAAI,CAAC,OAAO,EAAE,YAAY,EAAE,aAAa,CAAC,EAAE,kCAAkC,CAAC,CAAC;QAC9F,MAAM,KAAK,GAAG;YACZ,UAAU,EAAE,IAAI,CAAC,OAAO,EAAE,OAAO,EAAE,aAAa,CAAC;YACjD,OAAO;YACP,cAAc,EAAE,eAAe;YAC/B,QAAQ,EAAE,qBAAqB;SAChC,CAAC;QAEF,MAAM,CAAC,wBAAwB,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACnD,MAAM,CAAC,wBAAwB,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACpD,MAAM,UAAU,GAAG,YAAY,CAAC,IAAI,CAAC,OAAO,EAAE,YAAY,EAAE,aAAa,CAAC,EAAE,MAAM,CAAC,CAAC;QACpF,MAAM,CAAC,UAAU,CAAC,CAAC,SAAS,CAAC,gCAAgC,CAAC,CAAC;QAC/D,MAAM,CAAC,UAAU,CAAC,CAAC,SAAS,CAAC,wBAAwB,CAAC,CAAC;QACvD,MAAM,CAAC,UAAU,CAAC,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;QACzC,MAAM,CAAC,qBAAqB,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAClD,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,EAAE,YAAY,EAAE,aAAa,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,IAAI,CAC3E,kCAAkC,CACnC,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,yCAAyC,EAAE,GAAG,EAAE;QACjD,MAAM,OAAO,GAAG,WAAW,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,kBAAkB,CAAC,CAAC,CAAC;QAChE,MAAM,KAAK,GAAG;YACZ,UAAU,EAAE,IAAI,CAAC,OAAO,EAAE,OAAO,EAAE,aAAa,CAAC;YACjD,OAAO;YACP,cAAc,EAAE,eAAe;YAC/B,QAAQ,EAAE,qBAAqB;SAChC,CAAC;QAEF,MAAM,CAAC,wBAAwB,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACnD,MAAM,CAAC,wBAAwB,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACpD,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,0BAA0B,CAAC,CAAC;QAC7E,MAAM,UAAU,GAAG,YAAY,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QAClD,MAAM,CAAC,UAAU,CAAC,CAAC,SAAS,CAAC,eAAe,CAAC,CAAC;QAC9C,MAAM,CAAC,UAAU,CAAC,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;QACzC,MAAM,CAAC,qBAAqB,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAClD,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC3C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,0EAA0E,EAAE,GAAG,EAAE;QAClF,MAAM,OAAO,GAAG,WAAW,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,uBAAuB,CAAC,CAAC,CAAC;QACrE,MAAM,KAAK,GAAG;YACZ,UAAU,EAAE,IAAI,CAAC,OAAO,EAAE,OAAO,EAAE,aAAa,CAAC;YACjD,OAAO;YACP,cAAc,EAAE,eAAe;YAC/B,QAAQ,EAAE,qBAAqB;SAChC,CAAC;QACF,MAAM,CAAC,6BAA6B,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACxD,MAAM,CAAC,6BAA6B,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACzD,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,SAAS,EAAE,wBAAwB,CAAC,CAAC;QAC7F,MAAM,MAAM,GAAG,YAAY,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;QAChD,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,sBAAsB,CAAC,CAAC;QACjD,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,wDAAwD,CAAC,CAAC;QACnF,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC;QACzC,MAAM,CAAC,0BAA0B,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACvD,MAAM,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC7C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,6DAA6D,EAAE,GAAG,EAAE;QACrE,MAAM,OAAO,GAAG,WAAW,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,oBAAoB,CAAC,CAAC,CAAC;QAClE,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;QAC3C,MAAM,eAAe,GAAG,IAAI,CAAC,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,aAAa,CAAC,CAAC;QAC3E,SAAS,CAAC,SAAS,CAAC,CAAC;QACrB,aAAa,CACX,IAAI,CAAC,SAAS,EAAE,eAAe,CAAC,EAChC,IAAI,CAAC,SAAS,CAAC;YACb,KAAK,EAAE;gBACL,IAAI,EAAE;oBACJ,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,WAAW,EAAE,CAAC,EAAE;oBACtD;wBACE,KAAK,EAAE;4BACL;gCACE,IAAI,EAAE,SAAS;gCACf,OAAO,EACL,wFAAwF;6BAC3F;yBACF;qBACF;iBACF;aACF;SACF,CAAC,CACH,CAAC;QAEF,MAAM,CACJ,0BAA0B,CAAC;YACzB,UAAU,EAAE,eAAe;YAC3B,OAAO;YACP,cAAc,EAAE,eAAe;YAC/B,QAAQ,EAAE,qBAAqB;SAChC,CAAC,CACH,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACb,MAAM,CACJ,0BAA0B,CAAC;YACzB,UAAU,EAAE,eAAe;YAC3B,OAAO;YACP,cAAc,EAAE,eAAe;YAC/B,QAAQ,EAAE,qBAAqB;SAChC,CAAC,CACH,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACd,MAAM,UAAU,GAAG,YAAY,CAAC,IAAI,CAAC,SAAS,EAAE,eAAe,CAAC,EAAE,MAAM,CAAC,CAAC;QAC1E,MAAM,CAAC,UAAU,CAAC,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;QAC1C,MAAM,CAAC,UAAU,CAAC,CAAC,SAAS,CAAC,0BAA0B,CAAC,CAAC;QACzD,MAAM,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,kBAAkB,CAAC,CAAC;QACrD,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAEnC,CAAC;QACF,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;QAC1C,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC;YACnD,IAAI,EAAE,SAAS;YACf,OAAO,EAAE,eAAe;YACxB,IAAI,EAAE;gBACJ,qBAAqB;gBACrB,MAAM;gBACN,eAAe;gBACf,eAAe;gBACf,YAAY;gBACZ,YAAY;gBACZ,SAAS;gBACT,MAAM;gBACN,4BAA4B;aAC7B;YACD,OAAO,EAAE,CAAC;SACX,CAAC,CAAC;QAEH,MAAM,CAAC,4BAA4B,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACvE,MAAM,CAAC,4BAA4B,CAAC,YAAY,EAAE,OAAO,EAAE,eAAe,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACxF,MAAM,CACJ,4BAA4B,CAC1B,YAAY,EACZ,OAAO,EACP,IAAI,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,aAAa,CAAC,CAC/C,CACF,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACd,MAAM,CAAC,uBAAuB,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACpD,MAAM,CAAC,4BAA4B,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACxE,MAAM,OAAO,GAAG,YAAY,CAAC,IAAI,CAAC,SAAS,EAAE,eAAe,CAAC,EAAE,MAAM,CAAC,CAAC;QACvE,MAAM,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;QACvC,MAAM,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,0BAA0B,CAAC,CAAC;IAC5D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,4EAA4E,EAAE,GAAG,EAAE;QACpF,MAAM,SAAS,GAAG,WAAW,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,2BAA2B,CAAC,CAAC,CAAC;QAC3E,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,EAAE,uBAAuB,CAAC,CAAC;QAC5D,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,EAAE,kBAAkB,CAAC,CAAC;QACvD,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,EAAE,gBAAgB,CAAC,CAAC;QACnD,aAAa,CACX,QAAQ,EACR,oCAAoC,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,uDAAuD,CACtH,CAAC;QAEF,MAAM,IAAI,GAAG,iBAAiB,CAAC;YAC7B,UAAU;YACV,cAAc,EAAE,OAAO,CAAC,QAAQ;YAChC,QAAQ;YACR,QAAQ,EAAE,YAAY;YACtB,KAAK,EAAE,kBAAkB;SAC1B,CAAC,CAAC;QACH,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,aAAa,EAAE,CAAC;QACnC,YAAY,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;QAEtC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;YAC3D,IAAI,EAAE;gBACJ,MAAM;gBACN,eAAe;gBACf,UAAU;gBACV,YAAY;gBACZ,YAAY;gBACZ,SAAS;gBACT,kBAAkB;gBAClB,4BAA4B;aAC7B;SACF,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,kFAAkF,EAAE,GAAG,EAAE;QAC1F,MAAM,IAAI,GAAG,iBAAiB,CAAC;YAC7B,UAAU,EAAE,+CAA+C;YAC3D,cAAc,EAAE,mCAAmC;YACnD,QAAQ,EAAE,2DAA2D;YACrE,WAAW,EAAE,EAAE,oBAAoB,EAAE,GAAG,EAAE;YAC1C,QAAQ,EAAE,OAAO;YACjB,QAAQ,EAAE,YAAY;YACtB,KAAK,EAAE,cAAc;SACtB,CAAC,CAAC;QAEH,MAAM,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC;YACnB,IAAI,EAAE,SAAS;YACf,KAAK,EAAE,YAAY;YACnB,OAAO,EACL,0RAA0R;YAC5R,OAAO,EAAE,CAAC;SACX,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,QAAQ,KAAK,OAAO,CAAC,CACrC,0FAA0F,EAC1F,GAAG,EAAE;QACH,MAAM,IAAI,GAAG,WAAW,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,2BAA2B,CAAC,CAAC,CAAC;QACtE,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,EAAE,2BAA2B,CAAC,CAAC;QAC1D,SAAS,CAAC,SAAS,CAAC,CAAC;QACrB,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,EAAE,mBAAmB,CAAC,CAAC;QACxD,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,EAAE,kBAAkB,CAAC,CAAC;QACvD,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,EAAE,gBAAgB,CAAC,CAAC;QACnD,aAAa,CACX,QAAQ,EACR,6FAA6F,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,mHAAmH,CAC3O,CAAC;QACF,MAAM,IAAI,GAAG,iBAAiB,CAAC;YAC7B,UAAU;YACV,cAAc,EAAE,OAAO,CAAC,QAAQ;YAChC,QAAQ;YACR,WAAW,EAAE,EAAE,oBAAoB,EAAE,GAAG,EAAE;YAC1C,QAAQ,EAAE,OAAO;YACjB,QAAQ,EAAE,YAAY;YACtB,KAAK,EAAE,cAAc;SACtB,CAAC,CAAC;QACH,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,EAAE,UAAU,EAAE,uBAAuB,EAAE,CAAC,CAAC;QAEtE,YAAY,CAAC,gBAAgB,EAAE,CAAC,YAAY,EAAE,UAAU,EAAE,IAAI,CAAC,OAAO,CAAC,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;QAEpF,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;YAC3D,iBAAiB,EAAE,GAAG;YACtB,IAAI,EAAE;gBACJ,MAAM;gBACN,eAAe;gBACf,UAAU;gBACV,YAAY;gBACZ,YAAY;gBACZ,SAAS;gBACT,cAAc;gBACd,4BAA4B;aAC7B;YACD,KAAK;SACN,CAAC,CAAC;IACL,CAAC,CACF,CAAC;IAEF,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,QAAQ,KAAK,OAAO,CAAC,CACrC,gFAAgF,EAChF,GAAG,EAAE;QACH,MAAM,SAAS,GAAG,WAAW,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,qCAAqC,CAAC,CAAC,CAAC;QACrF,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,EAAE,SAAS,EAAE,aAAa,CAAC,CAAC;QAC7D,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,EAAE,kBAAkB,CAAC,CAAC;QACvD,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,EAAE,gBAAgB,CAAC,CAAC;QACnD,aAAa,CACX,QAAQ,EACR,oCAAoC,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,4GAA4G,CAC3K,CAAC;QACF,MAAM,IAAI,GAAG,iBAAiB,CAAC;YAC7B,UAAU;YACV,cAAc,EAAE,OAAO,CAAC,QAAQ;YAChC,QAAQ;YACR,WAAW,EAAE,EAAE,oBAAoB,EAAE,GAAG,EAAE;YAC1C,QAAQ,EAAE,QAAQ;YAClB,QAAQ,EAAE,YAAY;YACtB,KAAK,EAAE,cAAc;SACtB,CAAC,CAAC;QACH,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAChC,YAAY,CAAC,WAAW,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,EAAE;YAC9C,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,UAAU,EAAE,oBAAoB,EAAE,CAAC;SAC5D,CAAC,CAAC;QACH,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;YAC3D,iBAAiB,EAAE,GAAG;YACtB,IAAI,EAAE;gBACJ,MAAM;gBACN,eAAe;gBACf,UAAU;gBACV,YAAY;gBACZ,YAAY;gBACZ,SAAS;gBACT,cAAc;gBACd,4BAA4B;aAC7B;SACF,CAAC,CAAC;IACL,CAAC,CACF,CAAC;IAEF,EAAE,CAAC,oDAAoD,EAAE,GAAG,EAAE;QAC5D,MAAM,CAAC,GAAG,EAAE,CACV,iBAAiB,CAAC;YAChB,UAAU,EAAE,kBAAkB;YAC9B,cAAc,EAAE,OAAO,CAAC,QAAQ;YAChC,QAAQ,EAAE,gBAAgB;YAC1B,WAAW,EAAE,EAAE,cAAc,EAAE,OAAO,EAAE;YACxC,QAAQ,EAAE,YAAY;YACtB,KAAK,EAAE,cAAc;SACtB,CAAC,CACH,CAAC,OAAO,CAAC,wDAAwD,CAAC,CAAC;IACtE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,6DAA6D,EAAE,KAAK,IAAI,EAAE;QAC3E,MAAM,SAAS,GAAG,WAAW,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,oCAAoC,CAAC,CAAC,CAAC;QACpF,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,EAAE,uBAAuB,CAAC,CAAC;QAC5D,MAAM,GAAG,GAAG,WAAW,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;QAClD,aAAa,CAAC,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,aAAa,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC;QAClE,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,EAAE,kBAAkB,CAAC,CAAC;QACpD,MAAM,SAAS,GAAG,aAAa,CAAC,IAAI,GAAG,CAAC,aAAa,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;QACzE,aAAa,CACX,OAAO,EACP,wHAAwH,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,4KAA4K,CAC9T,CAAC;QAEF,MAAM,IAAI,GAAG,iBAAiB,CAAC;YAC7B,UAAU;YACV,cAAc,EAAE,OAAO,CAAC,QAAQ;YAChC,QAAQ,EAAE,OAAO;YACjB,QAAQ,EAAE,YAAY;YACtB,KAAK,EAAE,cAAc;SACtB,CAAC,CAAC;QACH,YAAY,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,IAAI,EAAE;YACpC,GAAG,EAAE;gBACH,GAAG,OAAO,CAAC,GAAG;gBACd,gBAAgB,EAAE,EAAE;gBACpB,WAAW,EAAE,EAAE;aAChB;YACD,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,UAAU,EAAE,0BAA0B,EAAE,CAAC;SAClE,CAAC,CAAC;QAEH,MAAM,QAAQ,GAAa,EAAE,CAAC;QAC9B,MAAM,IAAI,wBAAwB,CAAC,mBAAmB,CAAC,UAAU,CAAC,EAAE,GAAG,CAAC,CAAC,KAAK,CAC5E,KAAK,EAAE,KAAK,EAAE,EAAE;YACd,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC;YACvC,OAAO,IAAI,CAAC;QACd,CAAC,CACF,CAAC;QACF,MAAM,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,CAAC,0BAA0B,CAAC,CAAC,CAAC;IACzD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,iEAAiE,EAAE,GAAG,EAAE;QACzE,MAAM,kBAAkB,GAAG,OAAO,CAAC,GAAG,CAAC,sBAAsB,CAAC;QAC9D,OAAO,OAAO,CAAC,GAAG,CAAC,sBAAsB,CAAC;QAC1C,IAAI,CAAC;YACH,MAAM,CAAC,GAAG,EAAE,CACV,0BAA0B,CAAC;gBACzB,OAAO,EAAE,WAAW,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,+BAA+B,CAAC,CAAC;gBACrE,cAAc,EAAE,eAAe;gBAC/B,QAAQ,EAAE,qBAAqB;aAChC,CAAC,CACH,CAAC,OAAO,CAAC,yCAAyC,CAAC,CAAC;QACvD,CAAC;gBAAS,CAAC;YACT,IAAI,kBAAkB,KAAK,SAAS;gBAAE,OAAO,OAAO,CAAC,GAAG,CAAC,sBAAsB,CAAC;;gBAC3E,OAAO,CAAC,GAAG,CAAC,sBAAsB,GAAG,kBAAkB,CAAC;QAC/D,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,6DAA6D,EAAE,GAAG,EAAE;QACrE,MAAM,CACJ,2BAA2B,CACzB,IAAI,CAAC,SAAS,CAAC,CAAC,MAAM,EAAE,eAAe,EAAE,4CAA4C,CAAC,CAAC,CACxF,CACF,CAAC,IAAI,CAAC,4CAA4C,CAAC,CAAC;QACrD,MAAM,CACJ,2BAA2B,CACzB,8JAA8J,CAC/J,CACF,CAAC,IAAI,CAAC,yCAAyC,CAAC,CAAC;QAClD,MAAM,CACJ,2BAA2B,CACzB,wIAAwI,CACzI,CACF,CAAC,IAAI,CAAC,yCAAyC,CAAC,CAAC;QAElD,MAAM,OAAO,GAAG,WAAW,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,kCAAkC,CAAC,CAAC,CAAC;QAChF,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;QAC3C,SAAS,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAC1C,MAAM,eAAe,GAAG,IAAI,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,aAAa,CAAC,CAAC;QACvE,0BAA0B,CAAC;YACzB,OAAO;YACP,UAAU,EAAE,eAAe;YAC3B,cAAc,EAAE,eAAe;YAC/B,QAAQ,EAAE,qBAAqB;SAChC,CAAC,CAAC;QACH,MAAM,CAAC,iCAAiC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;IAC3E,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=native-hook-drain.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"native-hook-drain.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/native-hook-drain.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,197 @@
1
+ import { describe, expect, it, vi } from "vitest";
2
+ import { drainNativeHookInbox } from "../native-hook-drain.js";
3
+ function envelope(eventType) {
4
+ return {
5
+ schemaVersion: 1,
6
+ eventId: `hook-${eventType}`,
7
+ provider: "claude",
8
+ externalSessionId: "session-1",
9
+ eventType,
10
+ observedAt: "2026-09-01T00:00:00.000Z",
11
+ transcriptPath: "/tmp/session.jsonl",
12
+ };
13
+ }
14
+ function fakeInbox(value) {
15
+ return {
16
+ drain: async (consume) => {
17
+ const acknowledged = await consume(value);
18
+ return {
19
+ attempted: 1,
20
+ acknowledged: acknowledged ? 1 : 0,
21
+ deferred: acknowledged ? 0 : 1,
22
+ };
23
+ },
24
+ };
25
+ }
26
+ describe("drainNativeHookInbox ordering", () => {
27
+ it("persists UserPromptSubmit before replaying transcript deltas", async () => {
28
+ const order = [];
29
+ const hook = envelope("user_prompt");
30
+ const result = await drainNativeHookInbox({
31
+ inbox: fakeInbox(hook),
32
+ sink: {
33
+ deliver: async (event) => {
34
+ order.push(event.eventId);
35
+ return true;
36
+ },
37
+ },
38
+ transcriptStreamer: {
39
+ stream: async (_hook, deliver) => {
40
+ await deliver({ ...hook, eventId: "source-text" });
41
+ order.push("stream-complete");
42
+ return { complete: true };
43
+ },
44
+ },
45
+ });
46
+ expect(result.acknowledged).toBe(1);
47
+ expect(order).toEqual(["hook-user_prompt", "source-text", "stream-complete"]);
48
+ });
49
+ it("routes transcript records through the canonical sink after a binding acknowledgement", async () => {
50
+ const order = [];
51
+ const hook = envelope("user_prompt");
52
+ const binding = { conversationId: "conversation-1", runId: "run-1" };
53
+ const setBinding = vi.fn();
54
+ await drainNativeHookInbox({
55
+ inbox: fakeInbox(hook),
56
+ sink: {
57
+ deliver: async (event) => {
58
+ order.push(`native:${event.eventId}`);
59
+ return { accepted: true, binding };
60
+ },
61
+ deliverCanonical: async (destination, event) => {
62
+ order.push(`canonical:${destination.runId}:${event.eventId}`);
63
+ return true;
64
+ },
65
+ },
66
+ transcriptStreamer: {
67
+ setBinding,
68
+ stream: async (_hook, deliver) => {
69
+ await deliver({ ...hook, eventId: "source-text" });
70
+ return { complete: true };
71
+ },
72
+ },
73
+ });
74
+ expect(setBinding).toHaveBeenCalledWith(hook, binding);
75
+ expect(order).toEqual(["native:hook-user_prompt", "canonical:run-1:source-text"]);
76
+ });
77
+ it("replays final transcript deltas before persisting Stop", async () => {
78
+ const order = [];
79
+ const hook = envelope("stop");
80
+ await drainNativeHookInbox({
81
+ inbox: fakeInbox(hook),
82
+ sink: {
83
+ deliver: async (event) => {
84
+ order.push(event.eventId);
85
+ return true;
86
+ },
87
+ },
88
+ transcriptStreamer: {
89
+ stream: async (_hook, deliver) => {
90
+ await deliver({ ...hook, eventId: "source-final-text" });
91
+ return { complete: true };
92
+ },
93
+ },
94
+ });
95
+ expect(order).toEqual(["source-final-text", "hook-stop"]);
96
+ });
97
+ it("marks a terminal hook when its transcript was already replayed", async () => {
98
+ const deliver = vi.fn(async () => true);
99
+ const hook = envelope("stop");
100
+ await drainNativeHookInbox({
101
+ inbox: fakeInbox(hook),
102
+ sink: { deliver },
103
+ transcriptStreamer: {
104
+ stream: async () => ({ complete: true, assistantOutputDelivered: true }),
105
+ },
106
+ });
107
+ expect(deliver).toHaveBeenLastCalledWith({ ...hook, assistantOutputReplayed: true });
108
+ });
109
+ it("preserves terminal fallback when transcript replay emitted no assistant text", async () => {
110
+ const deliver = vi.fn(async () => true);
111
+ const hook = envelope("stop");
112
+ await drainNativeHookInbox({
113
+ inbox: fakeInbox(hook),
114
+ sink: { deliver },
115
+ transcriptStreamer: {
116
+ stream: async () => ({ complete: true, assistantOutputDelivered: false }),
117
+ },
118
+ });
119
+ expect(deliver).toHaveBeenLastCalledWith(hook);
120
+ });
121
+ it("does not stream a delayed SessionStart transcript", async () => {
122
+ const stream = vi.fn();
123
+ const hook = envelope("session_start");
124
+ const delivered = [];
125
+ await drainNativeHookInbox({
126
+ inbox: fakeInbox(hook),
127
+ sink: {
128
+ deliver: async (event) => {
129
+ delivered.push(event.eventId);
130
+ return true;
131
+ },
132
+ },
133
+ transcriptStreamer: { stream },
134
+ });
135
+ expect(delivered).toEqual(["hook-session_start"]);
136
+ expect(stream).not.toHaveBeenCalled();
137
+ });
138
+ it("defers a terminal hook when its transcript is temporarily unavailable", async () => {
139
+ const onTranscriptError = vi.fn();
140
+ const deliver = vi.fn(async () => true);
141
+ const hook = envelope("session_end");
142
+ const result = await drainNativeHookInbox({
143
+ inbox: fakeInbox(hook),
144
+ sink: { deliver },
145
+ transcriptStreamer: {
146
+ stream: async () => {
147
+ throw new Error("ENOENT transcript");
148
+ },
149
+ },
150
+ onTranscriptError,
151
+ });
152
+ expect(result).toEqual({ attempted: 1, acknowledged: 0, deferred: 1 });
153
+ expect(deliver).not.toHaveBeenCalled();
154
+ expect(onTranscriptError).toHaveBeenCalledWith({ envelope: hook, error: expect.any(Error) });
155
+ });
156
+ it("delivers a stale terminal hook when its transcript was permanently removed", async () => {
157
+ const onTranscriptError = vi.fn();
158
+ const deliver = vi.fn(async () => true);
159
+ const hook = envelope("session_end");
160
+ const missingTranscript = Object.assign(new Error("missing transcript"), { code: "ENOENT" });
161
+ const result = await drainNativeHookInbox({
162
+ inbox: fakeInbox(hook),
163
+ sink: { deliver },
164
+ transcriptStreamer: {
165
+ stream: async () => {
166
+ throw missingTranscript;
167
+ },
168
+ },
169
+ onTranscriptError,
170
+ missingTranscriptGraceMs: 10_000,
171
+ now: () => Date.parse(hook.observedAt) + 10_000,
172
+ });
173
+ expect(result).toEqual({ attempted: 1, acknowledged: 1, deferred: 0 });
174
+ expect(deliver).toHaveBeenCalledOnce();
175
+ expect(deliver).toHaveBeenCalledWith(hook);
176
+ expect(onTranscriptError).toHaveBeenCalledWith({ envelope: hook, error: missingTranscript });
177
+ });
178
+ it("keeps a recent missing transcript eligible for the next drain", async () => {
179
+ const deliver = vi.fn(async () => true);
180
+ const hook = envelope("session_end");
181
+ const missingTranscript = Object.assign(new Error("missing transcript"), { code: "ENOENT" });
182
+ const result = await drainNativeHookInbox({
183
+ inbox: fakeInbox(hook),
184
+ sink: { deliver },
185
+ transcriptStreamer: {
186
+ stream: async () => {
187
+ throw missingTranscript;
188
+ },
189
+ },
190
+ missingTranscriptGraceMs: 10_000,
191
+ now: () => Date.parse(hook.observedAt) + 9_999,
192
+ });
193
+ expect(result).toEqual({ attempted: 1, acknowledged: 0, deferred: 1 });
194
+ expect(deliver).not.toHaveBeenCalled();
195
+ });
196
+ });
197
+ //# sourceMappingURL=native-hook-drain.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"native-hook-drain.test.js","sourceRoot":"","sources":["../../src/__tests__/native-hook-drain.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=native-hook-inbox.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"native-hook-inbox.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/native-hook-inbox.test.ts"],"names":[],"mappings":""}