crewly 1.20.127 → 1.20.129

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 (153) hide show
  1. package/config/templates/growth-marketing-team.json +12 -1
  2. package/config/templates/personal-assistant-team.json +28 -0
  3. package/dist/backend/backend/src/constants.d.ts +75 -0
  4. package/dist/backend/backend/src/constants.d.ts.map +1 -1
  5. package/dist/backend/backend/src/constants.js +81 -0
  6. package/dist/backend/backend/src/constants.js.map +1 -1
  7. package/dist/backend/backend/src/controllers/chat/chat.controller.d.ts +49 -0
  8. package/dist/backend/backend/src/controllers/chat/chat.controller.d.ts.map +1 -1
  9. package/dist/backend/backend/src/controllers/chat/chat.controller.js +135 -106
  10. package/dist/backend/backend/src/controllers/chat/chat.controller.js.map +1 -1
  11. package/dist/backend/backend/src/controllers/onboarding/index.d.ts +1 -0
  12. package/dist/backend/backend/src/controllers/onboarding/index.d.ts.map +1 -1
  13. package/dist/backend/backend/src/controllers/onboarding/index.js +1 -0
  14. package/dist/backend/backend/src/controllers/onboarding/index.js.map +1 -1
  15. package/dist/backend/backend/src/controllers/onboarding/onboarding-checklist.controller.d.ts +38 -0
  16. package/dist/backend/backend/src/controllers/onboarding/onboarding-checklist.controller.d.ts.map +1 -0
  17. package/dist/backend/backend/src/controllers/onboarding/onboarding-checklist.controller.js +106 -0
  18. package/dist/backend/backend/src/controllers/onboarding/onboarding-checklist.controller.js.map +1 -0
  19. package/dist/backend/backend/src/controllers/onboarding/onboarding-checklist.routes.d.ts +24 -0
  20. package/dist/backend/backend/src/controllers/onboarding/onboarding-checklist.routes.d.ts.map +1 -0
  21. package/dist/backend/backend/src/controllers/onboarding/onboarding-checklist.routes.js +34 -0
  22. package/dist/backend/backend/src/controllers/onboarding/onboarding-checklist.routes.js.map +1 -0
  23. package/dist/backend/backend/src/index.d.ts.map +1 -1
  24. package/dist/backend/backend/src/index.js +48 -1
  25. package/dist/backend/backend/src/index.js.map +1 -1
  26. package/dist/backend/backend/src/routes/api.routes.d.ts.map +1 -1
  27. package/dist/backend/backend/src/routes/api.routes.js +5 -0
  28. package/dist/backend/backend/src/routes/api.routes.js.map +1 -1
  29. package/dist/backend/backend/src/services/agent/oauth-relogin-monitor.service.d.ts +33 -0
  30. package/dist/backend/backend/src/services/agent/oauth-relogin-monitor.service.d.ts.map +1 -1
  31. package/dist/backend/backend/src/services/agent/oauth-relogin-monitor.service.js +63 -0
  32. package/dist/backend/backend/src/services/agent/oauth-relogin-monitor.service.js.map +1 -1
  33. package/dist/backend/backend/src/services/agent/relogin-agent-resumer.service.d.ts +76 -0
  34. package/dist/backend/backend/src/services/agent/relogin-agent-resumer.service.d.ts.map +1 -0
  35. package/dist/backend/backend/src/services/agent/relogin-agent-resumer.service.js +108 -0
  36. package/dist/backend/backend/src/services/agent/relogin-agent-resumer.service.js.map +1 -0
  37. package/dist/backend/backend/src/services/cloud/mobile-api-relay.service.d.ts.map +1 -1
  38. package/dist/backend/backend/src/services/cloud/mobile-api-relay.service.js +10 -0
  39. package/dist/backend/backend/src/services/cloud/mobile-api-relay.service.js.map +1 -1
  40. package/dist/backend/backend/src/services/harness/harness-relogin.service.d.ts +361 -0
  41. package/dist/backend/backend/src/services/harness/harness-relogin.service.d.ts.map +1 -0
  42. package/dist/backend/backend/src/services/harness/harness-relogin.service.js +756 -0
  43. package/dist/backend/backend/src/services/harness/harness-relogin.service.js.map +1 -0
  44. package/dist/backend/backend/src/services/harness/harness.service.d.ts +16 -1
  45. package/dist/backend/backend/src/services/harness/harness.service.d.ts.map +1 -1
  46. package/dist/backend/backend/src/services/harness/harness.service.js +28 -1
  47. package/dist/backend/backend/src/services/harness/harness.service.js.map +1 -1
  48. package/dist/backend/backend/src/services/harness/harness.types.d.ts +16 -1
  49. package/dist/backend/backend/src/services/harness/harness.types.d.ts.map +1 -1
  50. package/dist/backend/backend/src/services/harness/harness.types.js.map +1 -1
  51. package/dist/backend/backend/src/services/harness/login-expiry-rules.d.ts +75 -0
  52. package/dist/backend/backend/src/services/harness/login-expiry-rules.d.ts.map +1 -0
  53. package/dist/backend/backend/src/services/harness/login-expiry-rules.js +159 -0
  54. package/dist/backend/backend/src/services/harness/login-expiry-rules.js.map +1 -0
  55. package/dist/backend/backend/src/services/onboarding/onboarding-checklist.factory.d.ts +45 -0
  56. package/dist/backend/backend/src/services/onboarding/onboarding-checklist.factory.d.ts.map +1 -0
  57. package/dist/backend/backend/src/services/onboarding/onboarding-checklist.factory.js +103 -0
  58. package/dist/backend/backend/src/services/onboarding/onboarding-checklist.factory.js.map +1 -0
  59. package/dist/backend/backend/src/services/onboarding/onboarding-checklist.service.d.ts +301 -0
  60. package/dist/backend/backend/src/services/onboarding/onboarding-checklist.service.d.ts.map +1 -0
  61. package/dist/backend/backend/src/services/onboarding/onboarding-checklist.service.js +365 -0
  62. package/dist/backend/backend/src/services/onboarding/onboarding-checklist.service.js.map +1 -0
  63. package/dist/backend/backend/src/services/onboarding/onboarding-state.store.d.ts +89 -0
  64. package/dist/backend/backend/src/services/onboarding/onboarding-state.store.d.ts.map +1 -0
  65. package/dist/backend/backend/src/services/onboarding/onboarding-state.store.js +122 -0
  66. package/dist/backend/backend/src/services/onboarding/onboarding-state.store.js.map +1 -0
  67. package/dist/backend/backend/src/services/slack/slack-orchestrator-bridge.d.ts +21 -1
  68. package/dist/backend/backend/src/services/slack/slack-orchestrator-bridge.d.ts.map +1 -1
  69. package/dist/backend/backend/src/services/slack/slack-orchestrator-bridge.js +39 -0
  70. package/dist/backend/backend/src/services/slack/slack-orchestrator-bridge.js.map +1 -1
  71. package/dist/backend/backend/src/services/slack/slack-relogin-dm.service.d.ts +80 -0
  72. package/dist/backend/backend/src/services/slack/slack-relogin-dm.service.d.ts.map +1 -0
  73. package/dist/backend/backend/src/services/slack/slack-relogin-dm.service.js +127 -0
  74. package/dist/backend/backend/src/services/slack/slack-relogin-dm.service.js.map +1 -0
  75. package/dist/backend/backend/src/services/template/template.service.d.ts +15 -1
  76. package/dist/backend/backend/src/services/template/template.service.d.ts.map +1 -1
  77. package/dist/backend/backend/src/services/template/template.service.js +22 -1
  78. package/dist/backend/backend/src/services/template/template.service.js.map +1 -1
  79. package/dist/backend/backend/src/types/team-template.types.d.ts +30 -0
  80. package/dist/backend/backend/src/types/team-template.types.d.ts.map +1 -1
  81. package/dist/backend/backend/src/types/team-template.types.js +24 -0
  82. package/dist/backend/backend/src/types/team-template.types.js.map +1 -1
  83. package/dist/backend/build-info.json +2 -2
  84. package/dist/cli/backend/src/constants.d.ts +75 -0
  85. package/dist/cli/backend/src/constants.d.ts.map +1 -1
  86. package/dist/cli/backend/src/constants.js +81 -0
  87. package/dist/cli/backend/src/constants.js.map +1 -1
  88. package/dist/cli/backend/src/services/agent/oauth-relogin-monitor.service.d.ts +33 -0
  89. package/dist/cli/backend/src/services/agent/oauth-relogin-monitor.service.d.ts.map +1 -1
  90. package/dist/cli/backend/src/services/agent/oauth-relogin-monitor.service.js +63 -0
  91. package/dist/cli/backend/src/services/agent/oauth-relogin-monitor.service.js.map +1 -1
  92. package/dist/cli/backend/src/services/harness/harness-relogin.service.d.ts +361 -0
  93. package/dist/cli/backend/src/services/harness/harness-relogin.service.d.ts.map +1 -0
  94. package/dist/cli/backend/src/services/harness/harness-relogin.service.js +756 -0
  95. package/dist/cli/backend/src/services/harness/harness-relogin.service.js.map +1 -0
  96. package/dist/cli/backend/src/services/harness/harness.service.d.ts +16 -1
  97. package/dist/cli/backend/src/services/harness/harness.service.d.ts.map +1 -1
  98. package/dist/cli/backend/src/services/harness/harness.service.js +28 -1
  99. package/dist/cli/backend/src/services/harness/harness.service.js.map +1 -1
  100. package/dist/cli/backend/src/services/harness/harness.types.d.ts +16 -1
  101. package/dist/cli/backend/src/services/harness/harness.types.d.ts.map +1 -1
  102. package/dist/cli/backend/src/services/harness/harness.types.js.map +1 -1
  103. package/dist/cli/backend/src/services/harness/login-expiry-rules.d.ts +75 -0
  104. package/dist/cli/backend/src/services/harness/login-expiry-rules.d.ts.map +1 -0
  105. package/dist/cli/backend/src/services/harness/login-expiry-rules.js +159 -0
  106. package/dist/cli/backend/src/services/harness/login-expiry-rules.js.map +1 -0
  107. package/dist/cli/backend/src/services/onboarding/onboarding-checklist.service.d.ts +301 -0
  108. package/dist/cli/backend/src/services/onboarding/onboarding-checklist.service.d.ts.map +1 -0
  109. package/dist/cli/backend/src/services/onboarding/onboarding-checklist.service.js +365 -0
  110. package/dist/cli/backend/src/services/onboarding/onboarding-checklist.service.js.map +1 -0
  111. package/dist/cli/backend/src/services/onboarding/onboarding-state.store.d.ts +89 -0
  112. package/dist/cli/backend/src/services/onboarding/onboarding-state.store.d.ts.map +1 -0
  113. package/dist/cli/backend/src/services/onboarding/onboarding-state.store.js +122 -0
  114. package/dist/cli/backend/src/services/onboarding/onboarding-state.store.js.map +1 -0
  115. package/dist/cli/backend/src/services/skill/skill-tier.service.d.ts +116 -0
  116. package/dist/cli/backend/src/services/skill/skill-tier.service.d.ts.map +1 -0
  117. package/dist/cli/backend/src/services/skill/skill-tier.service.js +155 -0
  118. package/dist/cli/backend/src/services/skill/skill-tier.service.js.map +1 -0
  119. package/dist/cli/backend/src/services/slack/slack-orchestrator-bridge.d.ts +21 -1
  120. package/dist/cli/backend/src/services/slack/slack-orchestrator-bridge.d.ts.map +1 -1
  121. package/dist/cli/backend/src/services/slack/slack-orchestrator-bridge.js +39 -0
  122. package/dist/cli/backend/src/services/slack/slack-orchestrator-bridge.js.map +1 -1
  123. package/dist/cli/backend/src/services/template/template.service.d.ts +152 -0
  124. package/dist/cli/backend/src/services/template/template.service.d.ts.map +1 -0
  125. package/dist/cli/backend/src/services/template/template.service.js +506 -0
  126. package/dist/cli/backend/src/services/template/template.service.js.map +1 -0
  127. package/dist/cli/backend/src/types/team-template.types.d.ts +30 -0
  128. package/dist/cli/backend/src/types/team-template.types.d.ts.map +1 -1
  129. package/dist/cli/backend/src/types/team-template.types.js +24 -0
  130. package/dist/cli/backend/src/types/team-template.types.js.map +1 -1
  131. package/dist/cli/cli/src/commands/onboard-checklist.d.ts +152 -0
  132. package/dist/cli/cli/src/commands/onboard-checklist.d.ts.map +1 -0
  133. package/dist/cli/cli/src/commands/onboard-checklist.js +241 -0
  134. package/dist/cli/cli/src/commands/onboard-checklist.js.map +1 -0
  135. package/dist/cli/cli/src/commands/onboard.d.ts +87 -6
  136. package/dist/cli/cli/src/commands/onboard.d.ts.map +1 -1
  137. package/dist/cli/cli/src/commands/onboard.js +203 -37
  138. package/dist/cli/cli/src/commands/onboard.js.map +1 -1
  139. package/dist/cli/cli/src/constants.d.ts +5 -0
  140. package/dist/cli/cli/src/constants.d.ts.map +1 -1
  141. package/dist/cli/cli/src/constants.js +5 -0
  142. package/dist/cli/cli/src/constants.js.map +1 -1
  143. package/dist/cli/cli/src/index.js +2 -1
  144. package/dist/cli/cli/src/index.js.map +1 -1
  145. package/dist/cli/cli/src/utils/templates.d.ts +27 -0
  146. package/dist/cli/cli/src/utils/templates.d.ts.map +1 -1
  147. package/dist/cli/cli/src/utils/templates.js +29 -0
  148. package/dist/cli/cli/src/utils/templates.js.map +1 -1
  149. package/frontend/dist/assets/index-2bdb57b9.css +42 -0
  150. package/frontend/dist/assets/{index-aaf65055.js → index-5b98bf77.js} +285 -285
  151. package/frontend/dist/index.html +2 -2
  152. package/package.json +1 -1
  153. package/frontend/dist/assets/index-0a2f783c.css +0 -42
@@ -1 +1 @@
1
- {"version":3,"file":"mobile-api-relay.service.js","sourceRoot":"","sources":["../../../../../../backend/src/services/cloud/mobile-api-relay.service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"mobile-api-relay.service.js","sourceRoot":"","sources":["../../../../../../backend/src/services/cloud/mobile-api-relay.service.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,361 @@
1
+ /**
2
+ * Harness re-login coordinator — Phase 2 of onboarding: re-login over Slack.
3
+ *
4
+ * When a harness login expires, Crewly notices by itself, starts ONE login
5
+ * broker session for that harness, DMs the owner what to do on their phone,
6
+ * and resumes the agents that were stuck once the login succeeds. Nobody
7
+ * has to touch the machine.
8
+ *
9
+ * Inputs:
10
+ * - {@link HarnessReloginService.reportExpiry} — called by the OAuth
11
+ * re-login monitor when an agent's terminal output matches an expiry rule
12
+ * (login-expiry-rules.ts), and by the periodic status check of the
13
+ * orchestrator's harness ({@link HarnessReloginService.checkOrcHarness}).
14
+ * - {@link HarnessReloginService.handleOwnerReply} — an owner's Slack DM
15
+ * reply. A reply is consumed only when it belongs to a flow: Claude's
16
+ * authorization code (while Claude's login is waiting for it and the reply
17
+ * looks like a code), the retry keyword, or a reply to an unrecognised
18
+ * login screen. Everything else goes through the normal chat path.
19
+ * - The broker's `update` / `finished` events.
20
+ *
21
+ * Rules:
22
+ * - One flow per harness. Repeated detections only add stuck sessions. A
23
+ * flow that failed is restarted by a new detection at most once per
24
+ * {@link HARNESS_CONSTANTS.RELOGIN.REMIND_INTERVAL_MS} (the re-reminder),
25
+ * or at once when the owner replies `relogin` / `重新登录`.
26
+ * - If Crewly holds an API key for the harness it is used silently (no DM).
27
+ * - Claude → `subscription` (`claude setup-token`), Codex → `device`.
28
+ * - Secrets: Claude's code is passed to the broker and never stored, logged
29
+ * or echoed; DMs are built from {@link LoginSession} snapshots, which never
30
+ * contain a token, and the screen text is redacted again.
31
+ *
32
+ * @module services/harness/harness-relogin.service
33
+ */
34
+ import type { HarnessApiKeyService } from './harness-api-key.service.js';
35
+ import { type HarnessCredentialsStore } from './harness-credentials.store.js';
36
+ import { type HarnessId, type HarnessLogger, type LoginSession, type LoginState, type ReloginPending } from './harness.types.js';
37
+ import { type LoginBrokerService } from './login-broker.service.js';
38
+ /** Where an expiry report came from. */
39
+ export type ExpirySource = 'output' | 'screen' | 'status';
40
+ /** An expired-login report. */
41
+ export interface ExpiryReport {
42
+ harnessId: HarnessId;
43
+ /** Agent session whose output matched, or null when unknown (status check) */
44
+ sessionName: string | null;
45
+ /**
46
+ * `output`: a live PTY chunk; `screen`: the periodic screen sweep (may show
47
+ * old scrollback); `status`: the harness's own status command
48
+ */
49
+ source: ExpirySource;
50
+ }
51
+ /** Sends a Slack DM to the owner. */
52
+ export interface ReloginOwnerNotifier {
53
+ /**
54
+ * Send a DM to the owner.
55
+ *
56
+ * @param text - Slack mrkdwn text (never contains a secret)
57
+ * @returns True when delivered
58
+ */
59
+ sendToOwner(text: string): Promise<boolean>;
60
+ }
61
+ /** Restarts agents after a login succeeded. */
62
+ export interface ReloginAgentResumer {
63
+ /**
64
+ * Live agent sessions that run on a harness.
65
+ *
66
+ * @param harnessId - Harness (= runtime type)
67
+ * @returns Session names
68
+ */
69
+ listSessions(harnessId: HarnessId): string[];
70
+ /**
71
+ * Restart sessions so they pick up the new login, resuming their conversation.
72
+ *
73
+ * @param sessionNames - Sessions to restart
74
+ * @returns Which ones came back and which did not
75
+ */
76
+ resume(sessionNames: readonly string[]): Promise<{
77
+ resumed: string[];
78
+ failed: string[];
79
+ }>;
80
+ }
81
+ /** The slice of the login broker the coordinator uses. */
82
+ export type ReloginBroker = Pick<LoginBrokerService, 'start' | 'get' | 'input' | 'cancel' | 'on'>;
83
+ /** Injectable dependencies. */
84
+ export interface HarnessReloginDeps {
85
+ broker: ReloginBroker;
86
+ credentials: Pick<HarnessCredentialsStore, 'read' | 'getClaudeCredentialKind'>;
87
+ apiKeys: Pick<HarnessApiKeyService, 'submit'>;
88
+ /** The harness's login state from its own status command */
89
+ checkLoginState: (harnessId: HarnessId) => Promise<LoginState>;
90
+ /** The orchestrator's harness (null before setup recorded one) */
91
+ getOrcHarness: () => Promise<string | null>;
92
+ notifier?: ReloginOwnerNotifier | null;
93
+ resumer?: ReloginAgentResumer | null;
94
+ now?: () => number;
95
+ logger?: HarnessLogger;
96
+ }
97
+ /**
98
+ * Whether a reply asks to start the login over.
99
+ *
100
+ * @param text - Owner reply
101
+ * @returns True for `relogin`, `re-login` or `重新登录`
102
+ */
103
+ export declare function isRetryKeyword(text: string): boolean;
104
+ /**
105
+ * Strip formatting Slack clients add around a pasted value (backticks).
106
+ *
107
+ * @param text - Owner reply
108
+ * @returns The bare value, trimmed
109
+ */
110
+ export declare function unwrapReply(text: string): string;
111
+ /**
112
+ * Whether a reply plausibly is Claude's authorization code: one token with
113
+ * no whitespace and a plausible length.
114
+ *
115
+ * @param text - Unwrapped owner reply
116
+ * @returns True when it can be typed into `claude setup-token`
117
+ */
118
+ export declare function looksLikeAuthCode(text: string): boolean;
119
+ /**
120
+ * "2 agents are waiting: a, b" — capped list of waiting agents.
121
+ *
122
+ * @param agents - Session names
123
+ * @returns Sentence fragment
124
+ */
125
+ export declare function describeWaitingAgents(agents: readonly string[]): string;
126
+ /**
127
+ * Prefix an owner reply needs before it is typed into an unrecognised login
128
+ * screen. Without it, any one-line DM to the orc during the login would have
129
+ * been swallowed by the terminal.
130
+ */
131
+ export declare const SCREEN_REPLY_PREFIXES: readonly ["输入", "input"];
132
+ /**
133
+ * The text after a screen-reply prefix ("输入 1" → "1"), or null.
134
+ *
135
+ * @param reply - Owner reply (already unwrapped)
136
+ * @returns Text to type, or null when the reply has no prefix
137
+ */
138
+ export declare function stripScreenReplyPrefix(reply: string): string | null;
139
+ /**
140
+ * DM with the sign-in link (and Codex's one-time code on its own line).
141
+ *
142
+ * @param session - Broker session (never contains a secret)
143
+ * @param waiting - Agents waiting on the login
144
+ * @returns Slack mrkdwn text
145
+ */
146
+ export declare function formatLinkDm(session: LoginSession, waiting: readonly string[]): string;
147
+ /**
148
+ * DM for a login screen the broker did not recognise.
149
+ *
150
+ * @param session - Broker session
151
+ * @param waiting - Agents waiting on the login
152
+ * @returns Slack mrkdwn text
153
+ */
154
+ export declare function formatScreenDm(session: LoginSession, waiting: readonly string[]): string;
155
+ /**
156
+ * DM after the harness rejected the owner's reply (e.g. a wrong code).
157
+ *
158
+ * @param session - Broker session (awaiting input again)
159
+ * @returns Slack mrkdwn text
160
+ */
161
+ export declare function formatRejectedDm(session: LoginSession): string;
162
+ /**
163
+ * DM after the login succeeded and the agents were restarted.
164
+ *
165
+ * @param harnessId - Harness
166
+ * @param result - Resume result
167
+ * @returns Slack mrkdwn text
168
+ */
169
+ export declare function formatSuccessDm(harnessId: HarnessId, result: {
170
+ resumed: string[];
171
+ failed: string[];
172
+ }): string;
173
+ /**
174
+ * DM after the login failed or timed out (sent once per failure).
175
+ *
176
+ * @param harnessId - Harness
177
+ * @param reason - Broker message (redacted here)
178
+ * @returns Slack mrkdwn text
179
+ */
180
+ export declare function formatFailureDm(harnessId: HarnessId, reason: string | null): string;
181
+ /** Coordinates Slack re-login flows, one per harness. */
182
+ export declare class HarnessReloginService {
183
+ private readonly broker;
184
+ private readonly credentials;
185
+ private readonly apiKeys;
186
+ private readonly checkLoginState;
187
+ private readonly getOrcHarness;
188
+ private notifier;
189
+ private resumer;
190
+ private readonly now;
191
+ private readonly logger;
192
+ private readonly flows;
193
+ /** Expiry reports are ignored until then (resumed transcripts repeat old errors) */
194
+ private readonly quietUntil;
195
+ /** Last silent API-key recovery per harness */
196
+ private readonly silentKeyAt;
197
+ /** Sessions restarted after a login: screen-sweep reports are ignored until live output reports again */
198
+ private readonly mutedScreens;
199
+ /** Harnesses the status check has seen logged in */
200
+ private readonly seenLoggedIn;
201
+ private statusTimer;
202
+ private statusCheckInFlight;
203
+ /**
204
+ * @param deps - Dependencies
205
+ */
206
+ constructor(deps: HarnessReloginDeps);
207
+ /**
208
+ * Set how the owner is DM'd (the Slack adapter; wired after Slack is up).
209
+ *
210
+ * @param notifier - Notifier, or null
211
+ */
212
+ setNotifier(notifier: ReloginOwnerNotifier | null): void;
213
+ /**
214
+ * Set how agents are restarted after a login.
215
+ *
216
+ * @param resumer - Resumer, or null
217
+ */
218
+ setResumer(resumer: ReloginAgentResumer | null): void;
219
+ /**
220
+ * Report an expired harness login.
221
+ *
222
+ * @param report - Which harness, which session, from where
223
+ * @returns True when the coordinator owns the harness's re-login (the
224
+ * caller must not start its own `/login` or notice); false for a
225
+ * harness Crewly cannot log in (no broker method)
226
+ */
227
+ reportExpiry(report: ExpiryReport): boolean;
228
+ /**
229
+ * Offer an owner's Slack DM reply to the re-login flows.
230
+ *
231
+ * @param text - Reply text (never logged)
232
+ * @returns True when consumed; the caller must then NOT pass it on as a chat message
233
+ */
234
+ handleOwnerReply(text: string): boolean;
235
+ /**
236
+ * The pending re-login for a harness (shown by `GET /api/harness`).
237
+ *
238
+ * @param harnessId - Harness id
239
+ * @returns The pending re-login, or null when none is running
240
+ */
241
+ getPending(harnessId: HarnessId): ReloginPending | null;
242
+ /**
243
+ * Check the orchestrator's harness with its own status command, and
244
+ * report an expiry when it says logged out. Only a harness that was seen
245
+ * logged in, or that agents are running on, counts (a machine that was
246
+ * never logged in is onboarding's job, not a re-login).
247
+ *
248
+ * @returns Resolves when the check is done; never rejects
249
+ */
250
+ checkOrcHarness(): Promise<void>;
251
+ /**
252
+ * Start the periodic status check of the orchestrator's harness.
253
+ *
254
+ * @param intervalMs - Cadence (defaults to STATUS_CHECK_INTERVAL_MS)
255
+ */
256
+ start(intervalMs?: number): void;
257
+ /** Stop the periodic check and forget every flow's timers. */
258
+ stop(): void;
259
+ /**
260
+ * Start a flow: silent API key if Crewly holds one, else a broker login.
261
+ *
262
+ * @param harnessId - Harness
263
+ * @param stuck - Sessions known to be stuck
264
+ */
265
+ private begin;
266
+ /**
267
+ * Body of a flow (async part of {@link begin}).
268
+ *
269
+ * @param flow - The flow
270
+ */
271
+ private run;
272
+ /**
273
+ * Use an API key Crewly holds for the harness, without asking the owner.
274
+ * Not repeated within SILENT_KEY_RETRY_WINDOW_MS: a key that did not
275
+ * help falls back to the phone login.
276
+ *
277
+ * @param flow - The flow
278
+ * @returns True when the key was used and the agents were resumed
279
+ */
280
+ private tryStoredApiKey;
281
+ /**
282
+ * Broker update: send the link once it is complete, report a rejected reply.
283
+ *
284
+ * @param session - Session snapshot
285
+ */
286
+ private handleUpdate;
287
+ /**
288
+ * Broker session finished.
289
+ *
290
+ * @param session - Final snapshot
291
+ */
292
+ private handleFinished;
293
+ /**
294
+ * The login is back: restart the stuck agents and tell the owner.
295
+ *
296
+ * @param flow - The flow
297
+ * @param notify - DM the owner (false for the silent API-key path)
298
+ */
299
+ private succeed;
300
+ /**
301
+ * Start a flow over (retry keyword or re-reminder).
302
+ *
303
+ * @param flow - The flow to replace
304
+ */
305
+ private restart;
306
+ /**
307
+ * Cancel the flow's live broker session, marking it as cancelled by the
308
+ * coordinator so no failure DM is sent for it.
309
+ *
310
+ * @param flow - The flow
311
+ */
312
+ private cancelOwnSession;
313
+ /**
314
+ * After UNRECOGNISED_SCREEN_MS without a link: send the screen as-is.
315
+ *
316
+ * @param flow - The flow
317
+ */
318
+ private sendScreenIfUnrecognised;
319
+ /**
320
+ * Agents waiting on a flow: the stuck ones, else every session of the harness.
321
+ *
322
+ * @param flow - The flow
323
+ * @returns Session names
324
+ */
325
+ private waitingAgents;
326
+ /**
327
+ * DM the owner (logs when no notifier is wired; never logs the text).
328
+ *
329
+ * @param flow - The flow
330
+ * @param text - DM text
331
+ */
332
+ private dm;
333
+ /**
334
+ * Read a broker session.
335
+ *
336
+ * @param sessionId - Session id
337
+ * @returns The session, or null when the broker forgot it
338
+ */
339
+ private readSession;
340
+ /**
341
+ * Clear a flow's unrecognised-screen timer.
342
+ *
343
+ * @param flow - The flow
344
+ */
345
+ private clearScreenTimer;
346
+ }
347
+ /**
348
+ * The backend's re-login coordinator, bound to the backend harness service
349
+ * (its broker, credentials, API keys and status). Registers itself as the
350
+ * `reloginPending` source of `GET /api/harness`.
351
+ *
352
+ * @returns The singleton
353
+ */
354
+ export declare function getHarnessReloginService(): HarnessReloginService;
355
+ /**
356
+ * Replace or clear the singleton (tests).
357
+ *
358
+ * @param service - Service, or null
359
+ */
360
+ export declare function setHarnessReloginServiceForTesting(service: HarnessReloginService | null): void;
361
+ //# sourceMappingURL=harness-relogin.service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"harness-relogin.service.d.ts","sourceRoot":"","sources":["../../../../../../backend/src/services/harness/harness-relogin.service.ts"],"names":[],"mappings":"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"}