crewly 1.20.123 → 1.20.124

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 (165) hide show
  1. package/dist/backend/backend/src/constants.d.ts +118 -0
  2. package/dist/backend/backend/src/constants.d.ts.map +1 -1
  3. package/dist/backend/backend/src/constants.js +118 -0
  4. package/dist/backend/backend/src/constants.js.map +1 -1
  5. package/dist/backend/backend/src/controllers/harness/harness.controller.d.ts +54 -0
  6. package/dist/backend/backend/src/controllers/harness/harness.controller.d.ts.map +1 -0
  7. package/dist/backend/backend/src/controllers/harness/harness.controller.js +204 -0
  8. package/dist/backend/backend/src/controllers/harness/harness.controller.js.map +1 -0
  9. package/dist/backend/backend/src/controllers/harness/harness.routes.d.ts +27 -0
  10. package/dist/backend/backend/src/controllers/harness/harness.routes.d.ts.map +1 -0
  11. package/dist/backend/backend/src/controllers/harness/harness.routes.js +43 -0
  12. package/dist/backend/backend/src/controllers/harness/harness.routes.js.map +1 -0
  13. package/dist/backend/backend/src/routes/api.routes.d.ts.map +1 -1
  14. package/dist/backend/backend/src/routes/api.routes.js +4 -0
  15. package/dist/backend/backend/src/routes/api.routes.js.map +1 -1
  16. package/dist/backend/backend/src/services/agent/agent-registration.service.d.ts +5 -0
  17. package/dist/backend/backend/src/services/agent/agent-registration.service.d.ts.map +1 -1
  18. package/dist/backend/backend/src/services/agent/agent-registration.service.js +7 -0
  19. package/dist/backend/backend/src/services/agent/agent-registration.service.js.map +1 -1
  20. package/dist/backend/backend/src/services/cloud/cloud-client.service.d.ts +2 -1
  21. package/dist/backend/backend/src/services/cloud/cloud-client.service.d.ts.map +1 -1
  22. package/dist/backend/backend/src/services/cloud/cloud-client.service.js +4 -3
  23. package/dist/backend/backend/src/services/cloud/cloud-client.service.js.map +1 -1
  24. package/dist/backend/backend/src/services/cloud/mobile-api-relay.service.d.ts.map +1 -1
  25. package/dist/backend/backend/src/services/cloud/mobile-api-relay.service.js +14 -0
  26. package/dist/backend/backend/src/services/cloud/mobile-api-relay.service.js.map +1 -1
  27. package/dist/backend/backend/src/services/harness/claude-config.utils.d.ts +67 -0
  28. package/dist/backend/backend/src/services/harness/claude-config.utils.d.ts.map +1 -0
  29. package/dist/backend/backend/src/services/harness/claude-config.utils.js +118 -0
  30. package/dist/backend/backend/src/services/harness/claude-config.utils.js.map +1 -0
  31. package/dist/backend/backend/src/services/harness/harness-api-key.service.d.ts +99 -0
  32. package/dist/backend/backend/src/services/harness/harness-api-key.service.d.ts.map +1 -0
  33. package/dist/backend/backend/src/services/harness/harness-api-key.service.js +157 -0
  34. package/dist/backend/backend/src/services/harness/harness-api-key.service.js.map +1 -0
  35. package/dist/backend/backend/src/services/harness/harness-credentials.store.d.ts +135 -0
  36. package/dist/backend/backend/src/services/harness/harness-credentials.store.d.ts.map +1 -0
  37. package/dist/backend/backend/src/services/harness/harness-credentials.store.js +208 -0
  38. package/dist/backend/backend/src/services/harness/harness-credentials.store.js.map +1 -0
  39. package/dist/backend/backend/src/services/harness/harness-exec.utils.d.ts +85 -0
  40. package/dist/backend/backend/src/services/harness/harness-exec.utils.d.ts.map +1 -0
  41. package/dist/backend/backend/src/services/harness/harness-exec.utils.js +183 -0
  42. package/dist/backend/backend/src/services/harness/harness-exec.utils.js.map +1 -0
  43. package/dist/backend/backend/src/services/harness/harness-install.service.d.ts +106 -0
  44. package/dist/backend/backend/src/services/harness/harness-install.service.d.ts.map +1 -0
  45. package/dist/backend/backend/src/services/harness/harness-install.service.js +205 -0
  46. package/dist/backend/backend/src/services/harness/harness-install.service.js.map +1 -0
  47. package/dist/backend/backend/src/services/harness/harness-registry.d.ts +86 -0
  48. package/dist/backend/backend/src/services/harness/harness-registry.d.ts.map +1 -0
  49. package/dist/backend/backend/src/services/harness/harness-registry.js +121 -0
  50. package/dist/backend/backend/src/services/harness/harness-registry.js.map +1 -0
  51. package/dist/backend/backend/src/services/harness/harness-status.service.d.ts +173 -0
  52. package/dist/backend/backend/src/services/harness/harness-status.service.d.ts.map +1 -0
  53. package/dist/backend/backend/src/services/harness/harness-status.service.js +324 -0
  54. package/dist/backend/backend/src/services/harness/harness-status.service.js.map +1 -0
  55. package/dist/backend/backend/src/services/harness/harness.service.d.ts +146 -0
  56. package/dist/backend/backend/src/services/harness/harness.service.d.ts.map +1 -0
  57. package/dist/backend/backend/src/services/harness/harness.service.js +193 -0
  58. package/dist/backend/backend/src/services/harness/harness.service.js.map +1 -0
  59. package/dist/backend/backend/src/services/harness/harness.types.d.ts +138 -0
  60. package/dist/backend/backend/src/services/harness/harness.types.d.ts.map +1 -0
  61. package/dist/backend/backend/src/services/harness/harness.types.js +51 -0
  62. package/dist/backend/backend/src/services/harness/harness.types.js.map +1 -0
  63. package/dist/backend/backend/src/services/harness/login-broker.service.d.ts +238 -0
  64. package/dist/backend/backend/src/services/harness/login-broker.service.d.ts.map +1 -0
  65. package/dist/backend/backend/src/services/harness/login-broker.service.js +495 -0
  66. package/dist/backend/backend/src/services/harness/login-broker.service.js.map +1 -0
  67. package/dist/backend/backend/src/services/harness/login-rules.d.ts +162 -0
  68. package/dist/backend/backend/src/services/harness/login-rules.d.ts.map +1 -0
  69. package/dist/backend/backend/src/services/harness/login-rules.js +344 -0
  70. package/dist/backend/backend/src/services/harness/login-rules.js.map +1 -0
  71. package/dist/backend/backend/src/services/harness/orc-harness.store.d.ts +59 -0
  72. package/dist/backend/backend/src/services/harness/orc-harness.store.d.ts.map +1 -0
  73. package/dist/backend/backend/src/services/harness/orc-harness.store.js +108 -0
  74. package/dist/backend/backend/src/services/harness/orc-harness.store.js.map +1 -0
  75. package/dist/backend/build-info.json +2 -2
  76. package/dist/cli/backend/src/constants.d.ts +118 -0
  77. package/dist/cli/backend/src/constants.d.ts.map +1 -1
  78. package/dist/cli/backend/src/constants.js +118 -0
  79. package/dist/cli/backend/src/constants.js.map +1 -1
  80. package/dist/cli/backend/src/services/agent/agent-registration.service.d.ts +5 -0
  81. package/dist/cli/backend/src/services/agent/agent-registration.service.d.ts.map +1 -1
  82. package/dist/cli/backend/src/services/agent/agent-registration.service.js +7 -0
  83. package/dist/cli/backend/src/services/agent/agent-registration.service.js.map +1 -1
  84. package/dist/cli/backend/src/services/cloud/cloud-client.service.d.ts +2 -1
  85. package/dist/cli/backend/src/services/cloud/cloud-client.service.d.ts.map +1 -1
  86. package/dist/cli/backend/src/services/cloud/cloud-client.service.js +4 -3
  87. package/dist/cli/backend/src/services/cloud/cloud-client.service.js.map +1 -1
  88. package/dist/cli/backend/src/services/harness/claude-config.utils.d.ts +67 -0
  89. package/dist/cli/backend/src/services/harness/claude-config.utils.d.ts.map +1 -0
  90. package/dist/cli/backend/src/services/harness/claude-config.utils.js +118 -0
  91. package/dist/cli/backend/src/services/harness/claude-config.utils.js.map +1 -0
  92. package/dist/cli/backend/src/services/harness/harness-api-key.service.d.ts +99 -0
  93. package/dist/cli/backend/src/services/harness/harness-api-key.service.d.ts.map +1 -0
  94. package/dist/cli/backend/src/services/harness/harness-api-key.service.js +157 -0
  95. package/dist/cli/backend/src/services/harness/harness-api-key.service.js.map +1 -0
  96. package/dist/cli/backend/src/services/harness/harness-credentials.store.d.ts +135 -0
  97. package/dist/cli/backend/src/services/harness/harness-credentials.store.d.ts.map +1 -0
  98. package/dist/cli/backend/src/services/harness/harness-credentials.store.js +208 -0
  99. package/dist/cli/backend/src/services/harness/harness-credentials.store.js.map +1 -0
  100. package/dist/cli/backend/src/services/harness/harness-exec.utils.d.ts +85 -0
  101. package/dist/cli/backend/src/services/harness/harness-exec.utils.d.ts.map +1 -0
  102. package/dist/cli/backend/src/services/harness/harness-exec.utils.js +183 -0
  103. package/dist/cli/backend/src/services/harness/harness-exec.utils.js.map +1 -0
  104. package/dist/cli/backend/src/services/harness/harness-install.service.d.ts +106 -0
  105. package/dist/cli/backend/src/services/harness/harness-install.service.d.ts.map +1 -0
  106. package/dist/cli/backend/src/services/harness/harness-install.service.js +205 -0
  107. package/dist/cli/backend/src/services/harness/harness-install.service.js.map +1 -0
  108. package/dist/cli/backend/src/services/harness/harness-registry.d.ts +86 -0
  109. package/dist/cli/backend/src/services/harness/harness-registry.d.ts.map +1 -0
  110. package/dist/cli/backend/src/services/harness/harness-registry.js +121 -0
  111. package/dist/cli/backend/src/services/harness/harness-registry.js.map +1 -0
  112. package/dist/cli/backend/src/services/harness/harness-status.service.d.ts +173 -0
  113. package/dist/cli/backend/src/services/harness/harness-status.service.d.ts.map +1 -0
  114. package/dist/cli/backend/src/services/harness/harness-status.service.js +324 -0
  115. package/dist/cli/backend/src/services/harness/harness-status.service.js.map +1 -0
  116. package/dist/cli/backend/src/services/harness/harness.service.d.ts +146 -0
  117. package/dist/cli/backend/src/services/harness/harness.service.d.ts.map +1 -0
  118. package/dist/cli/backend/src/services/harness/harness.service.js +193 -0
  119. package/dist/cli/backend/src/services/harness/harness.service.js.map +1 -0
  120. package/dist/cli/backend/src/services/harness/harness.types.d.ts +138 -0
  121. package/dist/cli/backend/src/services/harness/harness.types.d.ts.map +1 -0
  122. package/dist/cli/backend/src/services/harness/harness.types.js +51 -0
  123. package/dist/cli/backend/src/services/harness/harness.types.js.map +1 -0
  124. package/dist/cli/backend/src/services/harness/login-broker.service.d.ts +238 -0
  125. package/dist/cli/backend/src/services/harness/login-broker.service.d.ts.map +1 -0
  126. package/dist/cli/backend/src/services/harness/login-broker.service.js +495 -0
  127. package/dist/cli/backend/src/services/harness/login-broker.service.js.map +1 -0
  128. package/dist/cli/backend/src/services/harness/login-rules.d.ts +162 -0
  129. package/dist/cli/backend/src/services/harness/login-rules.d.ts.map +1 -0
  130. package/dist/cli/backend/src/services/harness/login-rules.js +344 -0
  131. package/dist/cli/backend/src/services/harness/login-rules.js.map +1 -0
  132. package/dist/cli/backend/src/services/harness/orc-harness.store.d.ts +59 -0
  133. package/dist/cli/backend/src/services/harness/orc-harness.store.d.ts.map +1 -0
  134. package/dist/cli/backend/src/services/harness/orc-harness.store.js +108 -0
  135. package/dist/cli/backend/src/services/harness/orc-harness.store.js.map +1 -0
  136. package/dist/cli/cli/src/commands/harness-setup.d.ts +159 -0
  137. package/dist/cli/cli/src/commands/harness-setup.d.ts.map +1 -0
  138. package/dist/cli/cli/src/commands/harness-setup.js +377 -0
  139. package/dist/cli/cli/src/commands/harness-setup.js.map +1 -0
  140. package/dist/cli/cli/src/commands/harness.d.ts +56 -0
  141. package/dist/cli/cli/src/commands/harness.d.ts.map +1 -0
  142. package/dist/cli/cli/src/commands/harness.js +97 -0
  143. package/dist/cli/cli/src/commands/harness.js.map +1 -0
  144. package/dist/cli/cli/src/commands/onboard.d.ts +108 -50
  145. package/dist/cli/cli/src/commands/onboard.d.ts.map +1 -1
  146. package/dist/cli/cli/src/commands/onboard.js +200 -191
  147. package/dist/cli/cli/src/commands/onboard.js.map +1 -1
  148. package/dist/cli/cli/src/constants.d.ts +18 -0
  149. package/dist/cli/cli/src/constants.d.ts.map +1 -1
  150. package/dist/cli/cli/src/constants.js +18 -0
  151. package/dist/cli/cli/src/constants.js.map +1 -1
  152. package/dist/cli/cli/src/index.js +22 -3
  153. package/dist/cli/cli/src/index.js.map +1 -1
  154. package/dist/cli/cli/src/utils/harness-engine.d.ts +99 -0
  155. package/dist/cli/cli/src/utils/harness-engine.d.ts.map +1 -0
  156. package/dist/cli/cli/src/utils/harness-engine.js +143 -0
  157. package/dist/cli/cli/src/utils/harness-engine.js.map +1 -0
  158. package/dist/cli/cli/src/utils/prompt-io.d.ts +25 -0
  159. package/dist/cli/cli/src/utils/prompt-io.d.ts.map +1 -0
  160. package/dist/cli/cli/src/utils/prompt-io.js +47 -0
  161. package/dist/cli/cli/src/utils/prompt-io.js.map +1 -0
  162. package/frontend/dist/assets/{index-8327e63e.css → index-0a2f783c.css} +1 -1
  163. package/frontend/dist/assets/{index-daf43f1a.js → index-aaf65055.js} +309 -309
  164. package/frontend/dist/index.html +2 -2
  165. package/package.json +1 -1
@@ -0,0 +1,238 @@
1
+ /**
2
+ * Login broker — runs a harness's own login command in a PTY and relays it.
3
+ *
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,
6
+ * normalizes the screen and applies the harness's rule set (login-rules.ts)
7
+ * to find the sign-in URL, a one-time code, a "paste the code" prompt,
8
+ * success and failure. Front ends read the resulting {@link LoginSession}
9
+ * and send the user's reply back with {@link LoginBrokerService.input}.
10
+ *
11
+ * Front ends are consumers of the same events: the REST API polls
12
+ * {@link LoginBrokerService.get}, the CLI awaits
13
+ * {@link LoginBrokerService.waitForCompletion}, and Phase 2 (re-login over
14
+ * Slack DM) subscribes to the `update` / `finished` events.
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.
20
+ *
21
+ * State machine:
22
+ * `starting` → `awaiting_user` (URL / code / prompt seen) → `verifying`
23
+ * (input sent, or the command reported success and is being confirmed) →
24
+ * `succeeded` | `failed`; any live state → `timed_out` (15 min) | `cancelled`.
25
+ * A prompt that reappears after input returns the session to `awaiting_user`.
26
+ *
27
+ * @module services/harness/login-broker.service
28
+ */
29
+ import { EventEmitter } from 'events';
30
+ import { HarnessCredentialsStore } from './harness-credentials.store.js';
31
+ import { type HarnessId, type HarnessLogger, type LoginSession } from './harness.types.js';
32
+ /** The slice of a PTY the broker uses (node-pty's IPty satisfies it). */
33
+ export interface BrokerPty {
34
+ onData(listener: (data: string) => void): unknown;
35
+ onExit(listener: (event: {
36
+ exitCode: number;
37
+ signal?: number;
38
+ }) => void): unknown;
39
+ write(data: string): void;
40
+ kill(signal?: string): void;
41
+ }
42
+ /** Spawns a PTY. */
43
+ export type BrokerPtySpawner = (file: string, args: string[], options: {
44
+ cols: number;
45
+ rows: number;
46
+ cwd: string;
47
+ env: Record<string, string>;
48
+ }) => BrokerPty;
49
+ /** Events emitted by the broker. Listeners receive a {@link LoginSession} (never a secret). */
50
+ export declare const LOGIN_BROKER_EVENTS: {
51
+ /** Any change to a session */
52
+ readonly UPDATE: "update";
53
+ /** A session reached a terminal state */
54
+ readonly FINISHED: "finished";
55
+ };
56
+ /** Error codes the REST layer maps to HTTP statuses. */
57
+ export type LoginBrokerErrorCode = 'unknown_harness' | 'unsupported_method' | 'not_installed' | 'spawn_failed' | 'not_found' | 'not_active';
58
+ /** Broker error with a machine-readable code. */
59
+ export declare class LoginBrokerError extends Error {
60
+ readonly code: LoginBrokerErrorCode;
61
+ /**
62
+ * @param code - Machine-readable code
63
+ * @param message - Human-readable message (never contains a secret)
64
+ */
65
+ constructor(code: LoginBrokerErrorCode, message: string);
66
+ }
67
+ /** Injectable dependencies. */
68
+ export interface LoginBrokerDeps {
69
+ spawnPty?: BrokerPtySpawner;
70
+ /** PATH lookup for the login command */
71
+ resolveCommand?: (command: string, envPath: string) => string | null;
72
+ env?: NodeJS.ProcessEnv;
73
+ homeDir?: string;
74
+ credentials?: HarnessCredentialsStore;
75
+ /** Confirms a login with the harness's own status command (Codex) */
76
+ verify?: (harnessId: HarnessId) => Promise<boolean>;
77
+ /** Records Claude's first-run answers after a Claude login */
78
+ prepareClaudeConfig?: () => void;
79
+ now?: () => number;
80
+ idFactory?: () => string;
81
+ logger?: HarnessLogger;
82
+ timeoutMs?: number;
83
+ }
84
+ /** Runs harness login commands in PTYs and tracks their sessions. */
85
+ export declare class LoginBrokerService extends EventEmitter {
86
+ private readonly spawnPty;
87
+ private readonly resolveCommand;
88
+ private readonly env;
89
+ private readonly homeDir;
90
+ private readonly credentials;
91
+ private readonly verify;
92
+ private readonly prepareClaudeConfig;
93
+ private readonly now;
94
+ private readonly idFactory;
95
+ private readonly logger;
96
+ private readonly timeoutMs;
97
+ private readonly sessions;
98
+ /** Sessions whose verification is in flight. */
99
+ private readonly verifying;
100
+ /**
101
+ * @param deps - Injectable dependencies (all optional)
102
+ */
103
+ constructor(deps?: LoginBrokerDeps);
104
+ /**
105
+ * Environment for the login PTY: the harness PATH, no owner API token, no
106
+ * nested-Claude-session markers, and a no-op BROWSER so the harness does
107
+ * not try to open a browser on the server.
108
+ *
109
+ * @returns String-only env map
110
+ */
111
+ buildEnv(): Record<string, string>;
112
+ /**
113
+ * Start a login session, or return the live one for this harness.
114
+ *
115
+ * @param harnessId - Harness id
116
+ * @param method - Broker login method (`subscription`, `device`)
117
+ * @returns The session
118
+ * @throws LoginBrokerError unknown_harness | unsupported_method | not_installed | spawn_failed
119
+ */
120
+ start(harnessId: string, method: string): LoginSession;
121
+ /**
122
+ * Read a session.
123
+ *
124
+ * @param sessionId - Session id
125
+ * @returns The session
126
+ * @throws LoginBrokerError not_found
127
+ */
128
+ get(sessionId: string): LoginSession;
129
+ /**
130
+ * The live (non-terminal) session for a harness, if any.
131
+ *
132
+ * @param harnessId - Harness id
133
+ * @returns The session, or null
134
+ */
135
+ getActiveSession(harnessId: string): LoginSession | null;
136
+ /**
137
+ * Type the user's reply into the PTY, followed by Enter.
138
+ *
139
+ * @param sessionId - Session id
140
+ * @param text - What the user typed (e.g. the code from platform.claude.com)
141
+ * @returns The session
142
+ * @throws LoginBrokerError not_found | not_active
143
+ */
144
+ input(sessionId: string, text: string): LoginSession;
145
+ /**
146
+ * Cancel a session (kills the PTY). Cancelling a finished session is a no-op.
147
+ *
148
+ * @param sessionId - Session id
149
+ * @returns The session
150
+ * @throws LoginBrokerError not_found
151
+ */
152
+ cancel(sessionId: string): LoginSession;
153
+ /**
154
+ * Resolve when the session reaches a terminal state.
155
+ *
156
+ * @param sessionId - Session id
157
+ * @returns The final session
158
+ * @throws LoginBrokerError not_found
159
+ */
160
+ waitForCompletion(sessionId: string): Promise<LoginSession>;
161
+ /** Cancel every live session (backend shutdown, CLI exit). */
162
+ shutdown(): void;
163
+ /**
164
+ * Session record or a not_found error.
165
+ *
166
+ * @param sessionId - Session id
167
+ * @returns The record
168
+ * @throws LoginBrokerError not_found
169
+ */
170
+ private requireRecord;
171
+ /**
172
+ * Append PTY output and re-evaluate the rules.
173
+ *
174
+ * @param record - Session record
175
+ * @param data - Output chunk
176
+ */
177
+ private handleData;
178
+ /**
179
+ * Apply the rule set to the current screen and move the state machine.
180
+ *
181
+ * @param record - Session record
182
+ * @param final - The process has exited
183
+ */
184
+ private evaluate;
185
+ /**
186
+ * Handle a reported success: store the secret (Claude) or confirm (Codex).
187
+ *
188
+ * @param record - Session record
189
+ * @param secret - Captured credential, when the rule set has one
190
+ */
191
+ private complete;
192
+ /**
193
+ * Confirm a login with the harness's status command.
194
+ *
195
+ * @param record - Session record
196
+ */
197
+ private confirm;
198
+ /**
199
+ * Save a captured credential. Never logs it.
200
+ *
201
+ * @param record - Session record
202
+ * @param secret - The credential
203
+ */
204
+ private storeSecret;
205
+ /**
206
+ * The login command exited.
207
+ *
208
+ * @param record - Session record
209
+ * @param exitCode - Process exit code
210
+ */
211
+ private handleExit;
212
+ /**
213
+ * Move a session to a terminal state and release the PTY.
214
+ *
215
+ * @param record - Session record
216
+ * @param state - Terminal state
217
+ * @param message - Message for the user
218
+ */
219
+ private finish;
220
+ /**
221
+ * Apply a patch, bump `updatedAt` and emit `update`.
222
+ *
223
+ * @param record - Session record
224
+ * @param patch - Fields to change
225
+ */
226
+ private update;
227
+ /**
228
+ * Tail of the screen, secrets redacted.
229
+ *
230
+ * @param record - Session record
231
+ * @param text - Normalized text
232
+ * @returns Exposed screen text
233
+ */
234
+ private exposedScreen;
235
+ /** Forget finished sessions older than the retention window. */
236
+ private prune;
237
+ }
238
+ //# sourceMappingURL=login-broker.service.d.ts.map
@@ -0,0 +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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"}