crewly 1.20.362 → 1.20.363

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 (262) hide show
  1. package/config/hooks/destructive-git-guard/guard.mjs +96 -0
  2. package/config/skills/agent/core/ask-owner/SKILL.md +31 -0
  3. package/config/skills/agent/core/ask-owner/execute.sh +14 -3
  4. package/config/skills/agent/core/ask-owner/execute.test.sh +8 -0
  5. package/config/skills/agent/core/gmail-read/SKILL.md +8 -0
  6. package/config/skills/agent/core/gmail-send/SKILL.md +10 -3
  7. package/config/skills/agent/core/gmail-send/execute.sh +2 -1
  8. package/config/skills/agent/core/gmail-watch-thread/SKILL.md +69 -0
  9. package/config/skills/agent/core/gmail-watch-thread/execute.sh +51 -0
  10. package/config/skills/agent/core/project-tickets/SKILL.md +12 -0
  11. package/config/skills/agent/core/project-tickets/execute.sh +13 -3
  12. package/config/skills/agent/core/project-tickets/execute.test.sh +4 -0
  13. package/config/skills/agent/core/watch-for-event/SKILL.md +22 -0
  14. package/config/skills/orchestrator/harness-login/SKILL.md +1 -1
  15. package/dist/backend/backend/src/constants.d.ts +63 -2
  16. package/dist/backend/backend/src/constants.d.ts.map +1 -1
  17. package/dist/backend/backend/src/constants.js +64 -3
  18. package/dist/backend/backend/src/constants.js.map +1 -1
  19. package/dist/backend/backend/src/controllers/google/google.controller.d.ts +44 -0
  20. package/dist/backend/backend/src/controllers/google/google.controller.d.ts.map +1 -1
  21. package/dist/backend/backend/src/controllers/google/google.controller.js +121 -3
  22. package/dist/backend/backend/src/controllers/google/google.controller.js.map +1 -1
  23. package/dist/backend/backend/src/controllers/google/google.routes.d.ts.map +1 -1
  24. package/dist/backend/backend/src/controllers/google/google.routes.js +5 -1
  25. package/dist/backend/backend/src/controllers/google/google.routes.js.map +1 -1
  26. package/dist/backend/backend/src/controllers/harness/owner-login.controller.d.ts +1 -1
  27. package/dist/backend/backend/src/controllers/harness/owner-login.controller.js +1 -1
  28. package/dist/backend/backend/src/controllers/project-tickets/project-tickets.controller.d.ts +1 -1
  29. package/dist/backend/backend/src/controllers/project-tickets/project-tickets.controller.d.ts.map +1 -1
  30. package/dist/backend/backend/src/controllers/project-tickets/project-tickets.controller.js +2 -1
  31. package/dist/backend/backend/src/controllers/project-tickets/project-tickets.controller.js.map +1 -1
  32. package/dist/backend/backend/src/index.d.ts.map +1 -1
  33. package/dist/backend/backend/src/index.js +61 -0
  34. package/dist/backend/backend/src/index.js.map +1 -1
  35. package/dist/backend/backend/src/services/ai/prompt-modules/skills-reference.module.d.ts.map +1 -1
  36. package/dist/backend/backend/src/services/ai/prompt-modules/skills-reference.module.js +2 -1
  37. package/dist/backend/backend/src/services/ai/prompt-modules/skills-reference.module.js.map +1 -1
  38. package/dist/backend/backend/src/services/decisions/decision-card.d.ts +46 -13
  39. package/dist/backend/backend/src/services/decisions/decision-card.d.ts.map +1 -1
  40. package/dist/backend/backend/src/services/decisions/decision-card.js +100 -50
  41. package/dist/backend/backend/src/services/decisions/decision-card.js.map +1 -1
  42. package/dist/backend/backend/src/services/decisions/decision-contract.d.ts +23 -1
  43. package/dist/backend/backend/src/services/decisions/decision-contract.d.ts.map +1 -1
  44. package/dist/backend/backend/src/services/decisions/decision-contract.js +76 -4
  45. package/dist/backend/backend/src/services/decisions/decision-contract.js.map +1 -1
  46. package/dist/backend/backend/src/services/decisions/decision-wording.d.ts +167 -0
  47. package/dist/backend/backend/src/services/decisions/decision-wording.d.ts.map +1 -0
  48. package/dist/backend/backend/src/services/decisions/decision-wording.js +406 -0
  49. package/dist/backend/backend/src/services/decisions/decision-wording.js.map +1 -0
  50. package/dist/backend/backend/src/services/decisions/decision.service.d.ts +30 -1
  51. package/dist/backend/backend/src/services/decisions/decision.service.d.ts.map +1 -1
  52. package/dist/backend/backend/src/services/decisions/decision.service.js +44 -8
  53. package/dist/backend/backend/src/services/decisions/decision.service.js.map +1 -1
  54. package/dist/backend/backend/src/services/decisions/decision.wiring.d.ts.map +1 -1
  55. package/dist/backend/backend/src/services/decisions/decision.wiring.js +17 -0
  56. package/dist/backend/backend/src/services/decisions/decision.wiring.js.map +1 -1
  57. package/dist/backend/backend/src/services/event-bus/event-bus.service.d.ts.map +1 -1
  58. package/dist/backend/backend/src/services/event-bus/event-bus.service.js +1 -0
  59. package/dist/backend/backend/src/services/event-bus/event-bus.service.js.map +1 -1
  60. package/dist/backend/backend/src/services/google/gmail-reply-watch.service.d.ts +142 -0
  61. package/dist/backend/backend/src/services/google/gmail-reply-watch.service.d.ts.map +1 -0
  62. package/dist/backend/backend/src/services/google/gmail-reply-watch.service.js +304 -0
  63. package/dist/backend/backend/src/services/google/gmail-reply-watch.service.js.map +1 -0
  64. package/dist/backend/backend/src/services/google/gmail-send-approval.service.d.ts +130 -0
  65. package/dist/backend/backend/src/services/google/gmail-send-approval.service.d.ts.map +1 -0
  66. package/dist/backend/backend/src/services/google/gmail-send-approval.service.js +216 -0
  67. package/dist/backend/backend/src/services/google/gmail-send-approval.service.js.map +1 -0
  68. package/dist/backend/backend/src/services/google/gmail-send-gate.d.ts +28 -13
  69. package/dist/backend/backend/src/services/google/gmail-send-gate.d.ts.map +1 -1
  70. package/dist/backend/backend/src/services/google/gmail-send-gate.js +82 -29
  71. package/dist/backend/backend/src/services/google/gmail-send-gate.js.map +1 -1
  72. package/dist/backend/backend/src/services/google/gmail.service.d.ts +90 -0
  73. package/dist/backend/backend/src/services/google/gmail.service.d.ts.map +1 -1
  74. package/dist/backend/backend/src/services/google/gmail.service.js +122 -0
  75. package/dist/backend/backend/src/services/google/gmail.service.js.map +1 -1
  76. package/dist/backend/backend/src/services/harness/claude-accounts.d.ts +24 -14
  77. package/dist/backend/backend/src/services/harness/claude-accounts.d.ts.map +1 -1
  78. package/dist/backend/backend/src/services/harness/claude-accounts.js +35 -21
  79. package/dist/backend/backend/src/services/harness/claude-accounts.js.map +1 -1
  80. package/dist/backend/backend/src/services/harness/claude-native-login.d.ts +106 -0
  81. package/dist/backend/backend/src/services/harness/claude-native-login.d.ts.map +1 -0
  82. package/dist/backend/backend/src/services/harness/claude-native-login.js +174 -0
  83. package/dist/backend/backend/src/services/harness/claude-native-login.js.map +1 -0
  84. package/dist/backend/backend/src/services/harness/claude-token-migration.service.d.ts +158 -0
  85. package/dist/backend/backend/src/services/harness/claude-token-migration.service.d.ts.map +1 -0
  86. package/dist/backend/backend/src/services/harness/claude-token-migration.service.js +283 -0
  87. package/dist/backend/backend/src/services/harness/claude-token-migration.service.js.map +1 -0
  88. package/dist/backend/backend/src/services/harness/harness-credentials.store.d.ts +44 -24
  89. package/dist/backend/backend/src/services/harness/harness-credentials.store.d.ts.map +1 -1
  90. package/dist/backend/backend/src/services/harness/harness-credentials.store.js +96 -39
  91. package/dist/backend/backend/src/services/harness/harness-credentials.store.js.map +1 -1
  92. package/dist/backend/backend/src/services/harness/harness-registry.js +1 -1
  93. package/dist/backend/backend/src/services/harness/harness-registry.js.map +1 -1
  94. package/dist/backend/backend/src/services/harness/harness-relogin.service.d.ts +2 -2
  95. package/dist/backend/backend/src/services/harness/harness-relogin.service.js +2 -2
  96. package/dist/backend/backend/src/services/harness/harness.service.d.ts.map +1 -1
  97. package/dist/backend/backend/src/services/harness/harness.service.js +10 -1
  98. package/dist/backend/backend/src/services/harness/harness.service.js.map +1 -1
  99. package/dist/backend/backend/src/services/harness/login-broker.service.d.ts +24 -21
  100. package/dist/backend/backend/src/services/harness/login-broker.service.d.ts.map +1 -1
  101. package/dist/backend/backend/src/services/harness/login-broker.service.js +50 -64
  102. package/dist/backend/backend/src/services/harness/login-broker.service.js.map +1 -1
  103. package/dist/backend/backend/src/services/harness/login-rules.d.ts +17 -11
  104. package/dist/backend/backend/src/services/harness/login-rules.d.ts.map +1 -1
  105. package/dist/backend/backend/src/services/harness/login-rules.js +22 -25
  106. package/dist/backend/backend/src/services/harness/login-rules.js.map +1 -1
  107. package/dist/backend/backend/src/services/open-items/open-item-extractor.d.ts +36 -0
  108. package/dist/backend/backend/src/services/open-items/open-item-extractor.d.ts.map +1 -1
  109. package/dist/backend/backend/src/services/open-items/open-item-extractor.js +70 -0
  110. package/dist/backend/backend/src/services/open-items/open-item-extractor.js.map +1 -1
  111. package/dist/backend/backend/src/services/open-items/open-items.service.d.ts +25 -0
  112. package/dist/backend/backend/src/services/open-items/open-items.service.d.ts.map +1 -1
  113. package/dist/backend/backend/src/services/open-items/open-items.service.js +65 -5
  114. package/dist/backend/backend/src/services/open-items/open-items.service.js.map +1 -1
  115. package/dist/backend/backend/src/services/project-tickets/project-ticket.service.d.ts +5 -0
  116. package/dist/backend/backend/src/services/project-tickets/project-ticket.service.d.ts.map +1 -1
  117. package/dist/backend/backend/src/services/project-tickets/project-ticket.service.js +30 -6
  118. package/dist/backend/backend/src/services/project-tickets/project-ticket.service.js.map +1 -1
  119. package/dist/backend/backend/src/services/project-tickets/ticket-file.d.ts.map +1 -1
  120. package/dist/backend/backend/src/services/project-tickets/ticket-file.js +6 -1
  121. package/dist/backend/backend/src/services/project-tickets/ticket-file.js.map +1 -1
  122. package/dist/backend/backend/src/services/project-tickets/ticket-hold-registry.d.ts +64 -0
  123. package/dist/backend/backend/src/services/project-tickets/ticket-hold-registry.d.ts.map +1 -0
  124. package/dist/backend/backend/src/services/project-tickets/ticket-hold-registry.js +93 -0
  125. package/dist/backend/backend/src/services/project-tickets/ticket-hold-registry.js.map +1 -0
  126. package/dist/backend/backend/src/services/project-tickets/ticket-hold.d.ts +176 -0
  127. package/dist/backend/backend/src/services/project-tickets/ticket-hold.d.ts.map +1 -0
  128. package/dist/backend/backend/src/services/project-tickets/ticket-hold.js +301 -0
  129. package/dist/backend/backend/src/services/project-tickets/ticket-hold.js.map +1 -0
  130. package/dist/backend/backend/src/services/reconciler/reconcile-rules.d.ts +33 -3
  131. package/dist/backend/backend/src/services/reconciler/reconcile-rules.d.ts.map +1 -1
  132. package/dist/backend/backend/src/services/reconciler/reconcile-rules.js +50 -4
  133. package/dist/backend/backend/src/services/reconciler/reconcile-rules.js.map +1 -1
  134. package/dist/backend/backend/src/services/reconciler/reconciler-data-provider.d.ts +8 -1
  135. package/dist/backend/backend/src/services/reconciler/reconciler-data-provider.d.ts.map +1 -1
  136. package/dist/backend/backend/src/services/reconciler/reconciler-data-provider.js +26 -0
  137. package/dist/backend/backend/src/services/reconciler/reconciler-data-provider.js.map +1 -1
  138. package/dist/backend/backend/src/services/reconciler/reconciler.service.d.ts +6 -1
  139. package/dist/backend/backend/src/services/reconciler/reconciler.service.d.ts.map +1 -1
  140. package/dist/backend/backend/src/services/reconciler/reconciler.service.js +3 -2
  141. package/dist/backend/backend/src/services/reconciler/reconciler.service.js.map +1 -1
  142. package/dist/backend/backend/src/services/runtime-fallback/runtime-fallback.wiring.d.ts.map +1 -1
  143. package/dist/backend/backend/src/services/runtime-fallback/runtime-fallback.wiring.js +4 -1
  144. package/dist/backend/backend/src/services/runtime-fallback/runtime-fallback.wiring.js.map +1 -1
  145. package/dist/backend/backend/src/services/stall/stall-watcher.service.d.ts +34 -0
  146. package/dist/backend/backend/src/services/stall/stall-watcher.service.d.ts.map +1 -1
  147. package/dist/backend/backend/src/services/stall/stall-watcher.service.js +70 -2
  148. package/dist/backend/backend/src/services/stall/stall-watcher.service.js.map +1 -1
  149. package/dist/backend/backend/src/services/worktree/worktree-janitor.service.d.ts +3 -0
  150. package/dist/backend/backend/src/services/worktree/worktree-janitor.service.d.ts.map +1 -1
  151. package/dist/backend/backend/src/services/worktree/worktree-janitor.service.js +5 -2
  152. package/dist/backend/backend/src/services/worktree/worktree-janitor.service.js.map +1 -1
  153. package/dist/backend/backend/src/services/worktree/worktree-unmerged-notice.d.ts +7 -2
  154. package/dist/backend/backend/src/services/worktree/worktree-unmerged-notice.d.ts.map +1 -1
  155. package/dist/backend/backend/src/services/worktree/worktree-unmerged-notice.js +11 -2
  156. package/dist/backend/backend/src/services/worktree/worktree-unmerged-notice.js.map +1 -1
  157. package/dist/backend/backend/src/types/decision.types.d.ts +53 -1
  158. package/dist/backend/backend/src/types/decision.types.d.ts.map +1 -1
  159. package/dist/backend/backend/src/types/event-bus.types.d.ts +4 -2
  160. package/dist/backend/backend/src/types/event-bus.types.d.ts.map +1 -1
  161. package/dist/backend/backend/src/types/event-bus.types.js +8 -0
  162. package/dist/backend/backend/src/types/event-bus.types.js.map +1 -1
  163. package/dist/backend/backend/src/types/project-ticket.types.d.ts +7 -0
  164. package/dist/backend/backend/src/types/project-ticket.types.d.ts.map +1 -1
  165. package/dist/backend/backend/src/types/project-ticket.types.js +1 -0
  166. package/dist/backend/backend/src/types/project-ticket.types.js.map +1 -1
  167. package/dist/backend/backend/src/types/v2/open-item.types.d.ts +8 -1
  168. package/dist/backend/backend/src/types/v2/open-item.types.d.ts.map +1 -1
  169. package/dist/backend/build-info.json +2 -2
  170. package/dist/cli/backend/src/constants.d.ts +63 -2
  171. package/dist/cli/backend/src/constants.d.ts.map +1 -1
  172. package/dist/cli/backend/src/constants.js +64 -3
  173. package/dist/cli/backend/src/constants.js.map +1 -1
  174. package/dist/cli/backend/src/services/ai/prompt-modules/skills-reference.module.d.ts.map +1 -1
  175. package/dist/cli/backend/src/services/ai/prompt-modules/skills-reference.module.js +2 -1
  176. package/dist/cli/backend/src/services/ai/prompt-modules/skills-reference.module.js.map +1 -1
  177. package/dist/cli/backend/src/services/decisions/decision-card.d.ts +46 -13
  178. package/dist/cli/backend/src/services/decisions/decision-card.d.ts.map +1 -1
  179. package/dist/cli/backend/src/services/decisions/decision-card.js +100 -50
  180. package/dist/cli/backend/src/services/decisions/decision-card.js.map +1 -1
  181. package/dist/cli/backend/src/services/decisions/decision-contract.d.ts +23 -1
  182. package/dist/cli/backend/src/services/decisions/decision-contract.d.ts.map +1 -1
  183. package/dist/cli/backend/src/services/decisions/decision-contract.js +76 -4
  184. package/dist/cli/backend/src/services/decisions/decision-contract.js.map +1 -1
  185. package/dist/cli/backend/src/services/decisions/decision-wording.d.ts +167 -0
  186. package/dist/cli/backend/src/services/decisions/decision-wording.d.ts.map +1 -0
  187. package/dist/cli/backend/src/services/decisions/decision-wording.js +406 -0
  188. package/dist/cli/backend/src/services/decisions/decision-wording.js.map +1 -0
  189. package/dist/cli/backend/src/services/decisions/decision.service.d.ts +30 -1
  190. package/dist/cli/backend/src/services/decisions/decision.service.d.ts.map +1 -1
  191. package/dist/cli/backend/src/services/decisions/decision.service.js +44 -8
  192. package/dist/cli/backend/src/services/decisions/decision.service.js.map +1 -1
  193. package/dist/cli/backend/src/services/event-bus/event-bus.service.d.ts.map +1 -1
  194. package/dist/cli/backend/src/services/event-bus/event-bus.service.js +1 -0
  195. package/dist/cli/backend/src/services/event-bus/event-bus.service.js.map +1 -1
  196. package/dist/cli/backend/src/services/harness/claude-accounts.d.ts +24 -14
  197. package/dist/cli/backend/src/services/harness/claude-accounts.d.ts.map +1 -1
  198. package/dist/cli/backend/src/services/harness/claude-accounts.js +35 -21
  199. package/dist/cli/backend/src/services/harness/claude-accounts.js.map +1 -1
  200. package/dist/cli/backend/src/services/harness/claude-native-login.d.ts +106 -0
  201. package/dist/cli/backend/src/services/harness/claude-native-login.d.ts.map +1 -0
  202. package/dist/cli/backend/src/services/harness/claude-native-login.js +174 -0
  203. package/dist/cli/backend/src/services/harness/claude-native-login.js.map +1 -0
  204. package/dist/cli/backend/src/services/harness/claude-token-migration.service.d.ts +158 -0
  205. package/dist/cli/backend/src/services/harness/claude-token-migration.service.d.ts.map +1 -0
  206. package/dist/cli/backend/src/services/harness/claude-token-migration.service.js +283 -0
  207. package/dist/cli/backend/src/services/harness/claude-token-migration.service.js.map +1 -0
  208. package/dist/cli/backend/src/services/harness/harness-credentials.store.d.ts +44 -24
  209. package/dist/cli/backend/src/services/harness/harness-credentials.store.d.ts.map +1 -1
  210. package/dist/cli/backend/src/services/harness/harness-credentials.store.js +96 -39
  211. package/dist/cli/backend/src/services/harness/harness-credentials.store.js.map +1 -1
  212. package/dist/cli/backend/src/services/harness/harness-registry.js +1 -1
  213. package/dist/cli/backend/src/services/harness/harness-registry.js.map +1 -1
  214. package/dist/cli/backend/src/services/harness/harness-relogin.service.d.ts +2 -2
  215. package/dist/cli/backend/src/services/harness/harness-relogin.service.js +2 -2
  216. package/dist/cli/backend/src/services/harness/harness.service.d.ts.map +1 -1
  217. package/dist/cli/backend/src/services/harness/harness.service.js +10 -1
  218. package/dist/cli/backend/src/services/harness/harness.service.js.map +1 -1
  219. package/dist/cli/backend/src/services/harness/login-broker.service.d.ts +24 -21
  220. package/dist/cli/backend/src/services/harness/login-broker.service.d.ts.map +1 -1
  221. package/dist/cli/backend/src/services/harness/login-broker.service.js +50 -64
  222. package/dist/cli/backend/src/services/harness/login-broker.service.js.map +1 -1
  223. package/dist/cli/backend/src/services/harness/login-rules.d.ts +17 -11
  224. package/dist/cli/backend/src/services/harness/login-rules.d.ts.map +1 -1
  225. package/dist/cli/backend/src/services/harness/login-rules.js +22 -25
  226. package/dist/cli/backend/src/services/harness/login-rules.js.map +1 -1
  227. package/dist/cli/backend/src/services/open-items/open-item-extractor.d.ts +36 -0
  228. package/dist/cli/backend/src/services/open-items/open-item-extractor.d.ts.map +1 -1
  229. package/dist/cli/backend/src/services/open-items/open-item-extractor.js +70 -0
  230. package/dist/cli/backend/src/services/open-items/open-item-extractor.js.map +1 -1
  231. package/dist/cli/backend/src/services/open-items/open-items.service.d.ts +25 -0
  232. package/dist/cli/backend/src/services/open-items/open-items.service.d.ts.map +1 -1
  233. package/dist/cli/backend/src/services/open-items/open-items.service.js +65 -5
  234. package/dist/cli/backend/src/services/open-items/open-items.service.js.map +1 -1
  235. package/dist/cli/backend/src/services/orc/owner-completion-report.text.d.ts +86 -0
  236. package/dist/cli/backend/src/services/orc/owner-completion-report.text.d.ts.map +1 -0
  237. package/dist/cli/backend/src/services/orc/owner-completion-report.text.js +170 -0
  238. package/dist/cli/backend/src/services/orc/owner-completion-report.text.js.map +1 -0
  239. package/dist/cli/backend/src/services/project-tickets/project-ticket.service.d.ts +5 -0
  240. package/dist/cli/backend/src/services/project-tickets/project-ticket.service.d.ts.map +1 -1
  241. package/dist/cli/backend/src/services/project-tickets/project-ticket.service.js +30 -6
  242. package/dist/cli/backend/src/services/project-tickets/project-ticket.service.js.map +1 -1
  243. package/dist/cli/backend/src/services/project-tickets/ticket-file.d.ts.map +1 -1
  244. package/dist/cli/backend/src/services/project-tickets/ticket-file.js +6 -1
  245. package/dist/cli/backend/src/services/project-tickets/ticket-file.js.map +1 -1
  246. package/dist/cli/backend/src/services/project-tickets/ticket-hold.d.ts +176 -0
  247. package/dist/cli/backend/src/services/project-tickets/ticket-hold.d.ts.map +1 -0
  248. package/dist/cli/backend/src/services/project-tickets/ticket-hold.js +301 -0
  249. package/dist/cli/backend/src/services/project-tickets/ticket-hold.js.map +1 -0
  250. package/dist/cli/backend/src/types/decision.types.d.ts +53 -1
  251. package/dist/cli/backend/src/types/decision.types.d.ts.map +1 -1
  252. package/dist/cli/backend/src/types/event-bus.types.d.ts +4 -2
  253. package/dist/cli/backend/src/types/event-bus.types.d.ts.map +1 -1
  254. package/dist/cli/backend/src/types/event-bus.types.js +8 -0
  255. package/dist/cli/backend/src/types/event-bus.types.js.map +1 -1
  256. package/dist/cli/backend/src/types/project-ticket.types.d.ts +7 -0
  257. package/dist/cli/backend/src/types/project-ticket.types.d.ts.map +1 -1
  258. package/dist/cli/backend/src/types/project-ticket.types.js +1 -0
  259. package/dist/cli/backend/src/types/project-ticket.types.js.map +1 -1
  260. package/dist/cli/backend/src/types/v2/open-item.types.d.ts +8 -1
  261. package/dist/cli/backend/src/types/v2/open-item.types.d.ts.map +1 -1
  262. package/package.json +1 -1
@@ -1,9 +1,14 @@
1
1
  /**
2
2
  * Harness credentials store — the harness logins Crewly itself holds.
3
3
  *
4
- * Claude Code's `setup-token` prints a long-lived OAuth token instead of
5
- * saving it, and an Anthropic API key has to reach agents somehow; both live
6
- * here, in `<crewlyHome>/harness-credentials.json` with mode 0600. Codex
4
+ * An Anthropic API key has to reach agents somehow, so it lives here, in
5
+ * `<crewlyHome>/harness-credentials.json` with mode 0600. Crewly no longer
6
+ * saves Claude.ai sign-in tokens: Claude Code stores its own login (config
7
+ * dir or keychain) and Anthropic's rules say developers may not collect or
8
+ * store those. Older versions did save a `claude setup-token` token here
9
+ * (`claude.oauthToken`, `claudeAccounts.<name>.oauthToken`); that data is
10
+ * only read to keep an account working until the owner signs it in again,
11
+ * then deleted (services/harness/claude-token-migration.service.ts). Codex
7
12
  * writes its own credentials (`$CODEX_HOME/auth.json`), so nothing is stored
8
13
  * for it unless a future flow needs the key. Antigravity CLI reads its Gemini
9
14
  * API key only from the environment, so Crewly keeps that key here too.
@@ -91,19 +96,6 @@ export class HarnessCredentialsStore {
91
96
  fs.renameSync(tmp, file);
92
97
  fs.chmodSync(file, HARNESS_CONSTANTS.CREDENTIALS_FILE_MODE);
93
98
  }
94
- /**
95
- * Store Claude's long-lived OAuth token. Replaces a stored API key, so
96
- * agents use exactly the login the owner chose last.
97
- *
98
- * @param token - Token printed by `claude setup-token`
99
- * @throws Error when the token is empty
100
- */
101
- setClaudeOauthToken(token) {
102
- if (!isNonEmptyString(token))
103
- throw new Error('Claude OAuth token is empty');
104
- const current = this.read();
105
- this.write({ ...current, claude: { oauthToken: token.trim(), updatedAt: new Date().toISOString() } });
106
- }
107
99
  /**
108
100
  * Store an Anthropic API key. Replaces a stored OAuth token.
109
101
  *
@@ -172,23 +164,8 @@ export class HarnessCredentialsStore {
172
164
  this.write(next);
173
165
  }
174
166
  /**
175
- * Store the `setup-token` token of one of the owner's other Claude Code accounts.
176
- *
177
- * @param account - Account name (validated by the caller)
178
- * @param token - Token printed by `claude setup-token`
179
- * @throws Error when the token is empty
180
- */
181
- setClaudeAccountToken(account, token) {
182
- if (!isNonEmptyString(token))
183
- throw new Error('Claude OAuth token is empty');
184
- const current = this.read();
185
- this.write({
186
- ...current,
187
- claudeAccounts: { ...(current.claudeAccounts ?? {}), [account]: { oauthToken: token.trim(), updatedAt: new Date().toISOString() } },
188
- });
189
- }
190
- /**
191
- * The stored token of one of the owner's other Claude Code accounts.
167
+ * LEGACY: the token an older Crewly saved for one of the owner's other
168
+ * Claude Code accounts (never written any more).
192
169
  *
193
170
  * @param account - Account name
194
171
  * @returns The token, or null when none is stored
@@ -207,7 +184,8 @@ export class HarnessCredentialsStore {
207
184
  return Object.keys(accounts).filter((name) => isNonEmptyString(accounts[name]?.oauthToken));
208
185
  }
209
186
  /**
210
- * Forget the token of one of the owner's other Claude Code accounts.
187
+ * Forget the token of one of the owner's other Claude Code accounts. The
188
+ * `claudeAccounts` key goes away with its last entry.
211
189
  *
212
190
  * @param account - Account name
213
191
  */
@@ -217,7 +195,85 @@ export class HarnessCredentialsStore {
217
195
  return;
218
196
  const accounts = { ...current.claudeAccounts };
219
197
  delete accounts[account];
220
- this.write({ ...current, claudeAccounts: accounts });
198
+ const next = { ...current };
199
+ if (Object.keys(accounts).length > 0)
200
+ next.claudeAccounts = accounts;
201
+ else
202
+ delete next.claudeAccounts;
203
+ this.write(next);
204
+ }
205
+ /**
206
+ * LEGACY: the default login's token an older Crewly saved.
207
+ *
208
+ * @returns The token, or null
209
+ */
210
+ getLegacyClaudeOauthToken() {
211
+ const token = this.read().claude?.oauthToken;
212
+ return isNonEmptyString(token) ? token : null;
213
+ }
214
+ /**
215
+ * Delete the default login's legacy token. The `claude` key is removed
216
+ * when nothing but bookkeeping is left (a stored API key stays).
217
+ */
218
+ clearLegacyClaudeOauthToken() {
219
+ const current = this.read();
220
+ if (!current.claude || !('oauthToken' in current.claude))
221
+ return;
222
+ const { oauthToken: _removed, ...rest } = current.claude;
223
+ const next = { ...current };
224
+ if (isNonEmptyString(rest.anthropicApiKey))
225
+ next.claude = rest;
226
+ else
227
+ delete next.claude;
228
+ this.write(next);
229
+ }
230
+ /**
231
+ * Remove what an older Crewly left for Claude sign-in tokens once no token
232
+ * is stored: empty `claudeAccounts` entries or object, an empty
233
+ * `claude.oauthToken`, and a `claude` object holding nothing but
234
+ * bookkeeping. A stored API key and every other key stay untouched. Does
235
+ * nothing (and does not rewrite the file) when there is nothing to remove.
236
+ */
237
+ pruneLegacyClaudeKeys() {
238
+ const current = this.read();
239
+ const next = { ...current };
240
+ let changed = false;
241
+ if (next.claudeAccounts) {
242
+ const kept = Object.fromEntries(Object.entries(next.claudeAccounts).filter(([, v]) => isNonEmptyString(v?.oauthToken)));
243
+ if (Object.keys(kept).length !== Object.keys(next.claudeAccounts).length || Object.keys(kept).length === 0) {
244
+ changed = true;
245
+ if (Object.keys(kept).length > 0)
246
+ next.claudeAccounts = kept;
247
+ else
248
+ delete next.claudeAccounts;
249
+ }
250
+ }
251
+ if (next.claude && !isNonEmptyString(next.claude.oauthToken)) {
252
+ const { oauthToken: _unused, updatedAt: _stamp, ...rest } = next.claude;
253
+ if (Object.keys(rest).length === 0) {
254
+ delete next.claude;
255
+ changed = true;
256
+ }
257
+ else if ('oauthToken' in next.claude) {
258
+ next.claude = { ...rest, ...(next.claude.updatedAt ? { updatedAt: next.claude.updatedAt } : {}) };
259
+ changed = true;
260
+ }
261
+ }
262
+ if (changed)
263
+ this.write(next);
264
+ }
265
+ /**
266
+ * Env that keeps an account working with the token an older Crewly saved
267
+ * for it. LEGACY, transition only: empty once the account's native login
268
+ * is verified and the token deleted. This is the only place the token is
269
+ * handed to a Claude Code process.
270
+ *
271
+ * @param account - Named account; null = the default login
272
+ * @returns `{ CLAUDE_CODE_OAUTH_TOKEN }`, or `{}` when no token is stored
273
+ */
274
+ legacyClaudeTokenEnv(account) {
275
+ const token = account ? this.getClaudeAccountToken(account) : this.getLegacyClaudeOauthToken();
276
+ return token ? { [HARNESS_CONSTANTS.CLAUDE.OAUTH_TOKEN_ENV]: token } : {};
221
277
  }
222
278
  /**
223
279
  * Which Claude credential Crewly holds (never the value).
@@ -236,8 +292,8 @@ export class HarnessCredentialsStore {
236
292
  * Env vars to inject into agent sessions.
237
293
  *
238
294
  * Always sets PATH (user npm prefix bin first, see harness-exec.utils).
239
- * Adds `CLAUDE_CODE_OAUTH_TOKEN` or `ANTHROPIC_API_KEY` when Crewly holds
240
- * a Claude credential. Nothing is added for Codex: it reads its own
295
+ * Adds `ANTHROPIC_API_KEY` when Crewly holds one (and, during the token
296
+ * migration only, the legacy token of the default login). Nothing is added for Codex: it reads its own
241
297
  * `auth.json`.
242
298
  *
243
299
  * For an `antigravity-cli` session it also adds the stored Gemini key as
@@ -254,8 +310,9 @@ export class HarnessCredentialsStore {
254
310
  const env = { PATH: buildHarnessPath(baseEnv.PATH) };
255
311
  const stored = this.read();
256
312
  const claude = stored.claude;
257
- if (isNonEmptyString(claude?.oauthToken)) {
258
- env[HARNESS_CONSTANTS.CLAUDE.OAUTH_TOKEN_ENV] = claude.oauthToken;
313
+ const legacy = this.legacyClaudeTokenEnv(null);
314
+ if (Object.keys(legacy).length > 0) {
315
+ Object.assign(env, legacy);
259
316
  }
260
317
  else if (isNonEmptyString(claude?.anthropicApiKey)) {
261
318
  env[HARNESS_CONSTANTS.CLAUDE.API_KEY_ENV] = claude.anthropicApiKey;
@@ -1 +1 @@
1
- {"version":3,"file":"harness-credentials.store.js","sourceRoot":"","sources":["../../../../../../backend/src/services/harness/harness-credentials.store.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"harness-credentials.store.js","sourceRoot":"","sources":["../../../../../../backend/src/services/harness/harness-credentials.store.ts"],"names":[],"mappings":"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"}
@@ -30,7 +30,7 @@ export const HARNESS_DEFINITIONS = [
30
30
  id: 'subscription',
31
31
  label: 'Claude subscription (Pro / Max)',
32
32
  kind: 'broker',
33
- broker: { command: 'claude', args: ['setup-token'] },
33
+ broker: { command: 'claude', args: ['auth', 'login'] },
34
34
  },
35
35
  { id: 'api_key', label: 'Anthropic API key', kind: 'api_key' },
36
36
  ],
@@ -1 +1 @@
1
- {"version":3,"file":"harness-registry.js","sourceRoot":"","sources":["../../../../../../backend/src/services/harness/harness-registry.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"harness-registry.js","sourceRoot":"","sources":["../../../../../../backend/src/services/harness/harness-registry.ts"],"names":[],"mappings":"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"}
@@ -29,7 +29,7 @@
29
29
  * the DM. The Slack bridge offers owner DMs to
30
30
  * {@link HarnessReloginService.handleOwnerReply} before anything else, so
31
31
  * this works with no agent awake. The login broker runs the harness's
32
- * login in its own PTY (`claude setup-token` / `codex login --device-auth`)
32
+ * login in its own PTY (`claude auth login` / `codex login --device-auth`)
33
33
  * and the link (and Codex's one-time code) is sent back.
34
34
  * 5. **The code.** For Claude the owner replies with the code from the page;
35
35
  * it is typed into the waiting login. A rejected code is reported once; an
@@ -253,7 +253,7 @@ export declare function unwrapReply(text: string): string;
253
253
  * no whitespace and a plausible length.
254
254
  *
255
255
  * @param text - Unwrapped owner reply
256
- * @returns True when it can be typed into `claude setup-token`
256
+ * @returns True when it can be typed into `claude auth login`
257
257
  */
258
258
  export declare function looksLikeAuthCode(text: string): boolean;
259
259
  /**
@@ -29,7 +29,7 @@
29
29
  * the DM. The Slack bridge offers owner DMs to
30
30
  * {@link HarnessReloginService.handleOwnerReply} before anything else, so
31
31
  * this works with no agent awake. The login broker runs the harness's
32
- * login in its own PTY (`claude setup-token` / `codex login --device-auth`)
32
+ * login in its own PTY (`claude auth login` / `codex login --device-auth`)
33
33
  * and the link (and Codex's one-time code) is sent back.
34
34
  * 5. **The code.** For Claude the owner replies with the code from the page;
35
35
  * it is typed into the waiting login. A rejected code is reported once; an
@@ -168,7 +168,7 @@ export function unwrapReply(text) {
168
168
  * no whitespace and a plausible length.
169
169
  *
170
170
  * @param text - Unwrapped owner reply
171
- * @returns True when it can be typed into `claude setup-token`
171
+ * @returns True when it can be typed into `claude auth login`
172
172
  */
173
173
  export function looksLikeAuthCode(text) {
174
174
  const { CODE_MIN_LENGTH, CODE_MAX_LENGTH } = HARNESS_CONSTANTS.RELOGIN;
@@ -1 +1 @@
1
- {"version":3,"file":"harness.service.d.ts","sourceRoot":"","sources":["../../../../../../backend/src/services/harness/harness.service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"harness.service.d.ts","sourceRoot":"","sources":["../../../../../../backend/src/services/harness/harness.service.ts"],"names":[],"mappings":"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"}
@@ -10,7 +10,11 @@
10
10
  *
11
11
  * @module services/harness/harness.service
12
12
  */
13
+ import { HARNESS_CONSTANTS } from '../../constants.js';
13
14
  import { LoggerService } from '../core/logger.service.js';
15
+ import { claudeAccountConfigDir } from './claude-accounts.js';
16
+ import { probeClaudeNativeLogin } from './claude-native-login.js';
17
+ import { getClaudeTokenMigrationService } from './claude-token-migration.service.js';
14
18
  import { HarnessApiKeyService } from './harness-api-key.service.js';
15
19
  import { HarnessInstallService } from './harness-install.service.js';
16
20
  import { getHarnessDefinition } from './harness-registry.js';
@@ -183,7 +187,12 @@ export function createHarnessService(options = {}) {
183
187
  const broker = new LoginBrokerService({
184
188
  logger,
185
189
  env,
186
- verify: async (harnessId) => {
190
+ afterClaudeLogin: (account) => getClaudeTokenMigrationService().afterLogin(account),
191
+ verify: async (harnessId, account) => {
192
+ if (harnessId === HARNESS_CONSTANTS.IDS.CLAUDE_CODE) {
193
+ // A real Claude turn on Claude Code's own login, with no token or key in the env.
194
+ return (await probeClaudeNativeLogin(account ? claudeAccountConfigDir(account) : null, { env })) === 'logged_in';
195
+ }
187
196
  const def = getHarnessDefinition(harnessId);
188
197
  if (!def)
189
198
  return false;
@@ -1 +1 @@
1
- {"version":3,"file":"harness.service.js","sourceRoot":"","sources":["../../../../../../backend/src/services/harness/harness.service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"harness.service.js","sourceRoot":"","sources":["../../../../../../backend/src/services/harness/harness.service.ts"],"names":[],"mappings":"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"}
@@ -2,7 +2,7 @@
2
2
  * Login broker — runs a harness's own login command in a PTY and relays it.
3
3
  *
4
4
  * The broker knows nothing about harness APIs. It spawns the login command
5
- * (`claude setup-token`, `codex login --device-auth`) in a very wide PTY,
5
+ * (`claude auth login`, `codex login --device-auth`) in a very wide PTY,
6
6
  * normalizes the screen and applies the harness's rule set (login-rules.ts)
7
7
  * to find the sign-in URL, a one-time code, a "paste the code" prompt,
8
8
  * success and failure. Front ends read the resulting {@link LoginSession}
@@ -13,10 +13,13 @@
13
13
  * {@link LoginBrokerService.waitForCompletion}, and Phase 2 (re-login over
14
14
  * Slack DM) subscribes to the `update` / `finished` events.
15
15
  *
16
- * Secrets: Claude's long-lived token is captured from the screen, stored with
17
- * {@link HarnessCredentialsStore.setClaudeOauthToken}, redacted from every
18
- * exposed screen and scrubbed from the raw buffer. It is never logged or
19
- * emitted.
16
+ * Credentials: the broker never captures or stores one. Claude Code's own
17
+ * login (`claude auth login`, with `CLAUDE_CONFIG_DIR` set for a named
18
+ * account) stores the login itself, in its config dir or the keychain; the
19
+ * broker only relays the sign-in link and the one-time code the owner pastes
20
+ * back. Anthropic's rule: sign-in must complete through its own flow, and
21
+ * developers may not collect, store or intermediate Claude.ai credentials.
22
+ * Any credential-shaped text is still masked on every exposed screen.
20
23
  *
21
24
  * State machine:
22
25
  * `starting` → `awaiting_user` (URL / code / prompt seen) → `verifying`
@@ -36,7 +39,6 @@
36
39
  * @module services/harness/login-broker.service
37
40
  */
38
41
  import { EventEmitter } from 'events';
39
- import { HarnessCredentialsStore } from './harness-credentials.store.js';
40
42
  import { type HarnessId, type HarnessLogger, type LoginSession } from './harness.types.js';
41
43
  /** The slice of a PTY the broker uses (node-pty's IPty satisfies it). */
42
44
  export interface BrokerPty {
@@ -80,9 +82,14 @@ export interface LoginBrokerDeps {
80
82
  resolveCommand?: (command: string, envPath: string) => string | null;
81
83
  env?: NodeJS.ProcessEnv;
82
84
  homeDir?: string;
83
- credentials?: HarnessCredentialsStore;
84
- /** Confirms a login with the harness's own status command (Codex) */
85
- verify?: (harnessId: HarnessId) => Promise<boolean>;
85
+ /**
86
+ * Confirms a login with a real check: Codex's status command, or a real
87
+ * Claude turn on the login's own config dir (`account`: a named Claude
88
+ * Code account; absent = the default login).
89
+ */
90
+ verify?: (harnessId: HarnessId, account?: string) => Promise<boolean>;
91
+ /** Runs after a Claude Code login is verified (migrates a token Crewly stored earlier); never throws into the login */
92
+ afterClaudeLogin?: (account: string | null) => Promise<void>;
86
93
  /** Records Claude's first-run answers after a Claude login */
87
94
  prepareClaudeConfig?: () => void;
88
95
  /** Creates one of the owner's other Claude Code accounts' config dir; returns it */
@@ -104,8 +111,8 @@ export declare class LoginBrokerService extends EventEmitter {
104
111
  private readonly resolveCommand;
105
112
  private readonly env;
106
113
  private readonly homeDir;
107
- private readonly credentials;
108
114
  private readonly verify;
115
+ private readonly afterClaudeLogin;
109
116
  private readonly prepareClaudeConfig;
110
117
  private readonly ensureAccountDir;
111
118
  private readonly prepareAccount;
@@ -136,7 +143,8 @@ export declare class LoginBrokerService extends EventEmitter {
136
143
  * With `options.account` (Claude Code only, issue #942) the login is for
137
144
  * one of the owner's other Claude Code accounts: it runs with that
138
145
  * account's config dir (`CLAUDE_CONFIG_DIR`) and none of the default
139
- * login's credentials, and the token is stored for that account only.
146
+ * login's credentials; Claude Code stores that login in the config dir
147
+ * itself.
140
148
  *
141
149
  * @param harnessId - Harness id
142
150
  * @param method - Broker login method (`subscription`, `device`)
@@ -220,13 +228,6 @@ export declare class LoginBrokerService extends EventEmitter {
220
228
  * @param message - The failure line
221
229
  */
222
230
  private awaitExitAfterFailure;
223
- /**
224
- * Handle a reported success: store the secret (Claude) or confirm (Codex).
225
- *
226
- * @param record - Session record
227
- * @param secret - Captured credential, when the rule set has one
228
- */
229
- private complete;
230
231
  /**
231
232
  * Confirm a login with the harness's status command.
232
233
  *
@@ -234,12 +235,14 @@ export declare class LoginBrokerService extends EventEmitter {
234
235
  */
235
236
  private confirm;
236
237
  /**
237
- * Save a captured credential. Never logs it.
238
+ * A Claude Code login was verified with a real turn: record Claude's
239
+ * first-run answers in the login's config dir and let the migration retire
240
+ * a token Crewly stored for it earlier. Failures only log: the login itself
241
+ * worked.
238
242
  *
239
243
  * @param record - Session record
240
- * @param secret - The credential
241
244
  */
242
- private storeSecret;
245
+ private onLoginVerified;
243
246
  /**
244
247
  * The login command exited.
245
248
  *
@@ -1 +1 @@
1
- {"version":3,"file":"login-broker.service.d.ts","sourceRoot":"","sources":["../../../../../../backend/src/services/harness/login-broker.service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"login-broker.service.d.ts","sourceRoot":"","sources":["../../../../../../backend/src/services/harness/login-broker.service.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuCG;AAGH,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AAStC,OAAO,EAGN,KAAK,SAAS,EACd,KAAK,aAAa,EAElB,KAAK,YAAY,EAEjB,MAAM,oBAAoB,CAAC;AAG5B,yEAAyE;AACzE,MAAM,WAAW,SAAS;IACzB,MAAM,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,GAAG,OAAO,CAAC;IAClD,MAAM,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,GAAG,OAAO,CAAC;IAClF,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,IAAI,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC5B;AAED,oBAAoB;AACpB,MAAM,MAAM,gBAAgB,GAAG,CAC9B,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,EAAE,EACd,OAAO,EAAE;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CAAE,KAC7E,SAAS,CAAC;AAEf,+FAA+F;AAC/F,eAAO,MAAM,mBAAmB;IAC/B,8BAA8B;;IAE9B,yCAAyC;;CAEhC,CAAC;AAEX,wDAAwD;AACxD,MAAM,MAAM,oBAAoB,GAAG,iBAAiB,GAAG,oBAAoB,GAAG,eAAe,GAAG,cAAc,GAAG,WAAW,GAAG,YAAY,CAAC;AAE5I,iDAAiD;AACjD,qBAAa,gBAAiB,SAAQ,KAAK;aAMzB,IAAI,EAAE,oBAAoB;IAL3C;;;OAGG;gBAEc,IAAI,EAAE,oBAAoB,EAC1C,OAAO,EAAE,MAAM;CAKhB;AAED,+BAA+B;AAC/B,MAAM,WAAW,eAAe;IAC/B,QAAQ,CAAC,EAAE,gBAAgB,CAAC;IAC5B,wCAAwC;IACxC,cAAc,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,KAAK,MAAM,GAAG,IAAI,CAAC;IACrE,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;IACxB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;;;;OAIG;IACH,MAAM,CAAC,EAAE,CAAC,SAAS,EAAE,SAAS,EAAE,OAAO,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IACtE,uHAAuH;IACvH,gBAAgB,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC7D,8DAA8D;IAC9D,mBAAmB,CAAC,EAAE,MAAM,IAAI,CAAC;IACjC,oFAAoF;IACpF,gBAAgB,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,MAAM,CAAC;IAC/C,oFAAoF;IACpF,cAAc,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IAC3C,GAAG,CAAC,EAAE,MAAM,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,MAAM,CAAC;IACzB,MAAM,CAAC,EAAE,aAAa,CAAC;IACvB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,mFAAmF;IACnF,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,mFAAmF;IACnF,aAAa,CAAC,EAAE,MAAM,CAAC;CACvB;AA+BD,qEAAqE;AACrE,qBAAa,kBAAmB,SAAQ,YAAY;IACnD,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAmB;IAC5C,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAsD;IACrF,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAoB;IACxC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA+D;IACtF,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAA4C;IAC7E,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAAa;IACjD,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAA8B;IAC/D,OAAO,CAAC,QAAQ,CAAC,cAAc,CAA4B;IAC3D,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAe;IACnC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAe;IACzC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAgB;IACvC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;IACnC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAoC;IAC7D,gDAAgD;IAChD,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAqB;IAC/C,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAS;IACvC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAS;IAEvC;;OAEG;gBACS,IAAI,GAAE,eAAoB;IAmBtC;;;;;;OAMG;IACH,QAAQ,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;IAYlC;;;;;;;;;;;;;;OAcG;IACH,KAAK,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,GAAE;QAAE,OAAO,CAAC,EAAE,MAAM,CAAA;KAAO,GAAG,YAAY;IA4F1F;;;;;;OAMG;IACH,GAAG,CAAC,SAAS,EAAE,MAAM,GAAG,YAAY;IAIpC;;;;;;OAMG;IACH,gBAAgB,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,YAAY,GAAG,IAAI;IAQ1E;;;;;;;OAOG;IACH,KAAK,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,YAAY;IAmCpD;;;;;;OAMG;IACH,MAAM,CAAC,SAAS,EAAE,MAAM,GAAG,YAAY;IAMvC;;;;;;OAMG;IACG,iBAAiB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC;IAMjE,8DAA8D;IAC9D,QAAQ,IAAI,IAAI;IAMhB;;;;;;OAMG;IACH,OAAO,CAAC,aAAa;IAMrB;;;;;OAKG;IACH,OAAO,CAAC,UAAU;IAYlB;;;;;OAKG;IACH,OAAO,CAAC,QAAQ;IAuChB;;;;;;OAMG;IACH,OAAO,CAAC,qBAAqB;IAU7B;;;;OAIG;YACW,OAAO;IAqBrB;;;;;;;OAOG;YACW,eAAe;IAgB7B;;;;;OAKG;YACW,UAAU;IAoCxB;;;;;;OAMG;IACH,OAAO,CAAC,MAAM;IA2Bd;;;;;OAKG;IACH,OAAO,CAAC,MAAM;IAKd;;;;;;OAMG;IACH,OAAO,CAAC,WAAW;IAMnB;;;;;;OAMG;IACH,OAAO,CAAC,aAAa;IAMrB,gEAAgE;IAChE,OAAO,CAAC,KAAK;CAMb"}