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
@@ -0,0 +1,80 @@
1
+ /**
2
+ * Slack side of the harness re-login (onboarding Phase 2).
3
+ *
4
+ * - {@link SlackReloginDmService.sendToOwner}: DM the owner (the person who
5
+ * installed the Slack app) through the master bot. The DM channel is
6
+ * remembered so replies can be matched to it. When the owner id is not
7
+ * known, falls back to the owner-notification path
8
+ * (`SlackService.sendNotification`, the most recent master-bot DM).
9
+ * - {@link SlackReloginDmService.isOwnerDmReply}: whether an inbound message
10
+ * is the owner writing in that DM, so the Slack bridge may offer it to the
11
+ * re-login coordinator before anything else (logging, thread store, orc).
12
+ *
13
+ * @module services/slack/slack-relogin-dm.service
14
+ */
15
+ import type { SlackIncomingMessage, SlackNotification, SlackOutgoingMessage } from '../../types/slack.types.js';
16
+ import type { HarnessReloginService, ReloginOwnerNotifier } from '../harness/harness-relogin.service.js';
17
+ /** The slice of SlackService this adapter uses. */
18
+ export interface ReloginDmSlackApi {
19
+ isConnected(): boolean;
20
+ getOwnerUserId: (() => string | null) | null;
21
+ isAgentOwnedConversation: ((channelId: string) => boolean) | null;
22
+ openDirectMessage(userId: string): Promise<string>;
23
+ sendMessage(message: SlackOutgoingMessage): Promise<string>;
24
+ sendNotification(notification: SlackNotification): Promise<void>;
25
+ }
26
+ /**
27
+ * Escape the three characters Slack reserves in message text. Slack still
28
+ * auto-links a bare URL and decodes `&amp;` in its target, so an OAuth URL
29
+ * full of `&` stays intact.
30
+ *
31
+ * @param text - Plain message text
32
+ * @returns Text safe for `chat.postMessage`
33
+ */
34
+ export declare function escapeSlackText(text: string): string;
35
+ /** DMs the owner for the re-login coordinator and recognises their replies. */
36
+ export declare class SlackReloginDmService implements ReloginOwnerNotifier {
37
+ private readonly getSlack;
38
+ private readonly now;
39
+ private readonly logger;
40
+ /** DM channel the last re-login message went to */
41
+ private dmChannelId;
42
+ /**
43
+ * @param getSlack - Slack service accessor (resolved per call; the connection can come up late)
44
+ * @param now - Clock
45
+ */
46
+ constructor(getSlack: () => ReloginDmSlackApi, now?: () => Date);
47
+ /**
48
+ * DM the owner. Never logs the text.
49
+ *
50
+ * @param text - Message (plain text with Slack mrkdwn emphasis; escaped here)
51
+ * @returns True when Slack accepted it
52
+ */
53
+ sendToOwner(text: string): Promise<boolean>;
54
+ /**
55
+ * Whether a message is the owner writing in their DM with the master bot
56
+ * (the DM the re-login messages went to, when known).
57
+ *
58
+ * @param message - Inbound Slack message
59
+ * @returns True for the owner's DM reply
60
+ */
61
+ isOwnerDmReply(message: SlackIncomingMessage): boolean;
62
+ }
63
+ /**
64
+ * Build the Slack bridge's inbound interceptor for the re-login: an owner's
65
+ * DM reply (text only) is offered to the coordinator, which consumes it only
66
+ * when it belongs to a login (a code, the retry keyword, a reply to an
67
+ * unrecognised screen). A consumed message must not be logged, stored or
68
+ * forwarded to the orchestrator.
69
+ *
70
+ * @param dm - Owner-DM recogniser
71
+ * @param coordinator - Re-login coordinator
72
+ * @returns Interceptor: true when the message was consumed
73
+ *
74
+ * @example
75
+ * ```ts
76
+ * bridge.setInboundInterceptor(createReloginReplyInterceptor(dm, getHarnessReloginService()));
77
+ * ```
78
+ */
79
+ export declare function createReloginReplyInterceptor(dm: Pick<SlackReloginDmService, 'isOwnerDmReply'>, coordinator: Pick<HarnessReloginService, 'handleOwnerReply'>): (message: SlackIncomingMessage) => boolean;
80
+ //# sourceMappingURL=slack-relogin-dm.service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"slack-relogin-dm.service.d.ts","sourceRoot":"","sources":["../../../../../../backend/src/services/slack/slack-relogin-dm.service.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,KAAK,EAAE,oBAAoB,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AAChH,OAAO,KAAK,EAAE,qBAAqB,EAAE,oBAAoB,EAAE,MAAM,uCAAuC,CAAC;AAMzG,mDAAmD;AACnD,MAAM,WAAW,iBAAiB;IACjC,WAAW,IAAI,OAAO,CAAC;IACvB,cAAc,EAAE,CAAC,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC;IAC7C,wBAAwB,EAAE,CAAC,CAAC,SAAS,EAAE,MAAM,KAAK,OAAO,CAAC,GAAG,IAAI,CAAC;IAClE,iBAAiB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IACnD,WAAW,CAAC,OAAO,EAAE,oBAAoB,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAC5D,gBAAgB,CAAC,YAAY,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACjE;AAED;;;;;;;GAOG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAEpD;AAED,+EAA+E;AAC/E,qBAAa,qBAAsB,YAAW,oBAAoB;IAUhE,OAAO,CAAC,QAAQ,CAAC,QAAQ;IACzB,OAAO,CAAC,QAAQ,CAAC,GAAG;IAVrB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAkB;IACzC,mDAAmD;IACnD,OAAO,CAAC,WAAW,CAAuB;IAE1C;;;OAGG;gBAEe,QAAQ,EAAE,MAAM,iBAAiB,EACjC,GAAG,GAAE,MAAM,IAAuB;IAKpD;;;;;OAKG;IACG,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IA0BjD;;;;;;OAMG;IACH,cAAc,CAAC,OAAO,EAAE,oBAAoB,GAAG,OAAO;CAUtD;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,6BAA6B,CAC5C,EAAE,EAAE,IAAI,CAAC,qBAAqB,EAAE,gBAAgB,CAAC,EACjD,WAAW,EAAE,IAAI,CAAC,qBAAqB,EAAE,kBAAkB,CAAC,GAC1D,CAAC,OAAO,EAAE,oBAAoB,KAAK,OAAO,CAM5C"}
@@ -0,0 +1,127 @@
1
+ /**
2
+ * Slack side of the harness re-login (onboarding Phase 2).
3
+ *
4
+ * - {@link SlackReloginDmService.sendToOwner}: DM the owner (the person who
5
+ * installed the Slack app) through the master bot. The DM channel is
6
+ * remembered so replies can be matched to it. When the owner id is not
7
+ * known, falls back to the owner-notification path
8
+ * (`SlackService.sendNotification`, the most recent master-bot DM).
9
+ * - {@link SlackReloginDmService.isOwnerDmReply}: whether an inbound message
10
+ * is the owner writing in that DM, so the Slack bridge may offer it to the
11
+ * re-login coordinator before anything else (logging, thread store, orc).
12
+ *
13
+ * @module services/slack/slack-relogin-dm.service
14
+ */
15
+ import { LoggerService } from '../core/logger.service.js';
16
+ /** Prefix of Slack direct-message channel ids. */
17
+ const DM_CHANNEL_PREFIX = 'D';
18
+ /**
19
+ * Escape the three characters Slack reserves in message text. Slack still
20
+ * auto-links a bare URL and decodes `&amp;` in its target, so an OAuth URL
21
+ * full of `&` stays intact.
22
+ *
23
+ * @param text - Plain message text
24
+ * @returns Text safe for `chat.postMessage`
25
+ */
26
+ export function escapeSlackText(text) {
27
+ return text.replace(/&/g, '&amp;').replace(/</g, '&lt;').replace(/>/g, '&gt;');
28
+ }
29
+ /** DMs the owner for the re-login coordinator and recognises their replies. */
30
+ export class SlackReloginDmService {
31
+ getSlack;
32
+ now;
33
+ logger;
34
+ /** DM channel the last re-login message went to */
35
+ dmChannelId = null;
36
+ /**
37
+ * @param getSlack - Slack service accessor (resolved per call; the connection can come up late)
38
+ * @param now - Clock
39
+ */
40
+ constructor(getSlack, now = () => new Date()) {
41
+ this.getSlack = getSlack;
42
+ this.now = now;
43
+ this.logger = LoggerService.getInstance().createComponentLogger('SlackReloginDm');
44
+ }
45
+ /**
46
+ * DM the owner. Never logs the text.
47
+ *
48
+ * @param text - Message (plain text with Slack mrkdwn emphasis; escaped here)
49
+ * @returns True when Slack accepted it
50
+ */
51
+ async sendToOwner(text) {
52
+ const slack = this.getSlack();
53
+ if (!slack.isConnected())
54
+ return false;
55
+ const escaped = escapeSlackText(text);
56
+ const ownerId = slack.getOwnerUserId?.() ?? null;
57
+ if (ownerId) {
58
+ try {
59
+ const channelId = await slack.openDirectMessage(ownerId);
60
+ await slack.sendMessage({ channelId, text: escaped, unfurlLinks: false, unfurlMedia: false, skipChatV2Mirror: true });
61
+ this.dmChannelId = channelId;
62
+ return true;
63
+ }
64
+ catch (error) {
65
+ this.logger.warn('Could not DM the owner directly; using the owner-notification path', {
66
+ error: error instanceof Error ? error.message : String(error),
67
+ });
68
+ }
69
+ }
70
+ try {
71
+ await slack.sendNotification({ type: 'agent_error', title: 'Login needed', message: escaped, urgency: 'high', timestamp: this.now().toISOString() });
72
+ return true;
73
+ }
74
+ catch (error) {
75
+ this.logger.warn('Could not send the re-login message to the owner', { error: error instanceof Error ? error.message : String(error) });
76
+ return false;
77
+ }
78
+ }
79
+ /**
80
+ * Whether a message is the owner writing in their DM with the master bot
81
+ * (the DM the re-login messages went to, when known).
82
+ *
83
+ * @param message - Inbound Slack message
84
+ * @returns True for the owner's DM reply
85
+ */
86
+ isOwnerDmReply(message) {
87
+ if (message.agentSession || message.authorAgentSession || message.handoffTo)
88
+ return false;
89
+ if (!message.channelId?.startsWith(DM_CHANNEL_PREFIX))
90
+ return false;
91
+ const slack = this.getSlack();
92
+ if (slack.isAgentOwnedConversation?.(message.channelId))
93
+ return false;
94
+ const ownerId = slack.getOwnerUserId?.() ?? null;
95
+ if (ownerId && message.userId !== ownerId)
96
+ return false;
97
+ if (this.dmChannelId && message.channelId !== this.dmChannelId)
98
+ return false;
99
+ return true;
100
+ }
101
+ }
102
+ /**
103
+ * Build the Slack bridge's inbound interceptor for the re-login: an owner's
104
+ * DM reply (text only) is offered to the coordinator, which consumes it only
105
+ * when it belongs to a login (a code, the retry keyword, a reply to an
106
+ * unrecognised screen). A consumed message must not be logged, stored or
107
+ * forwarded to the orchestrator.
108
+ *
109
+ * @param dm - Owner-DM recogniser
110
+ * @param coordinator - Re-login coordinator
111
+ * @returns Interceptor: true when the message was consumed
112
+ *
113
+ * @example
114
+ * ```ts
115
+ * bridge.setInboundInterceptor(createReloginReplyInterceptor(dm, getHarnessReloginService()));
116
+ * ```
117
+ */
118
+ export function createReloginReplyInterceptor(dm, coordinator) {
119
+ return (message) => {
120
+ if (message.hasFiles || !message.text)
121
+ return false;
122
+ if (!dm.isOwnerDmReply(message))
123
+ return false;
124
+ return coordinator.handleOwnerReply(message.text);
125
+ };
126
+ }
127
+ //# sourceMappingURL=slack-relogin-dm.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"slack-relogin-dm.service.js","sourceRoot":"","sources":["../../../../../../backend/src/services/slack/slack-relogin-dm.service.ts"],"names":[],"mappings":"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"}
@@ -7,7 +7,7 @@
7
7
  *
8
8
  * @module services/template/template
9
9
  */
10
- import type { TeamTemplate } from '../../types/team-template.types.js';
10
+ import type { TeamTemplate, TemplateOnboarding } from '../../types/team-template.types.js';
11
11
  import type { Team } from '../../types/index.js';
12
12
  import { type CloudTier } from '../../constants.js';
13
13
  /** Result of creating a team from a template */
@@ -36,6 +36,8 @@ export interface TemplateSummary {
36
36
  source: TemplateSource;
37
37
  /** Minimum tier required to use this template */
38
38
  requiredTier?: CloudTier;
39
+ /** First-run starter metadata (only on onboarding starters) */
40
+ onboarding?: TemplateOnboarding;
39
41
  }
40
42
  /**
41
43
  * TemplateService manages team templates.
@@ -78,6 +80,18 @@ export declare class TemplateService {
78
80
  * @returns Array of local template summaries
79
81
  */
80
82
  listTemplates(): TemplateSummary[];
83
+ /**
84
+ * The first-run starter templates (those with `onboarding` metadata),
85
+ * ordered by `onboarding.order`.
86
+ *
87
+ * @returns Starter templates, first-shown first
88
+ *
89
+ * @example
90
+ * ```ts
91
+ * const [recommended] = TemplateService.getInstance().listOnboardingStarters();
92
+ * ```
93
+ */
94
+ listOnboardingStarters(): TeamTemplate[];
81
95
  /**
82
96
  * Get a specific template by ID.
83
97
  *
@@ -1 +1 @@
1
- {"version":3,"file":"template.service.d.ts","sourceRoot":"","sources":["../../../../../../backend/src/services/template/template.service.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAOH,OAAO,KAAK,EAAE,YAAY,EAAgB,MAAM,oCAAoC,CAAC;AAErF,OAAO,KAAK,EAAc,IAAI,EAAkB,MAAM,sBAAsB,CAAC;AAE7E,OAAO,EAAE,KAAK,SAAS,EAAmB,MAAM,oBAAoB,CAAC;AA8BrE,gDAAgD;AAChD,MAAM,WAAW,wBAAwB;IACvC,uBAAuB;IACvB,IAAI,EAAE,IAAI,CAAC;IACX,uBAAuB;IACvB,UAAU,EAAE,MAAM,CAAC;IACnB,gCAAgC;IAChC,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,mCAAmC;AACnC,MAAM,MAAM,cAAc,GAAG,OAAO,CAAC;AAErC,2CAA2C;AAC3C,MAAM,WAAW,eAAe;IAC9B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,OAAO,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,0CAA0C;IAC1C,MAAM,EAAE,cAAc,CAAC;IACvB,iDAAiD;IACjD,YAAY,CAAC,EAAE,SAAS,CAAC;CAC1B;AAMD;;;;;;GAMG;AACH,qBAAa,eAAe;IAC1B,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAgC;IAEvD,qCAAqC;IACrC,OAAO,CAAC,SAAS,CAAwC;IAEzD,+BAA+B;IAC/B,OAAO,CAAC,YAAY,CAAS;IAE7B,yCAAyC;IACzC,OAAO,CAAC,MAAM,CAAkB;IAEhC,OAAO;IAIP;;;;;OAKG;IACH,MAAM,CAAC,WAAW,CAAC,YAAY,CAAC,EAAE,MAAM,GAAG,eAAe;IAO1D;;OAEG;IACH,MAAM,CAAC,aAAa,IAAI,IAAI;IAI5B;;;;;;OAMG;IACH,aAAa,IAAI,MAAM;IA8BvB;;;;OAIG;IACH,aAAa,IAAI,eAAe,EAAE;IAmBlC;;;;;OAKG;IACH,WAAW,CAAC,EAAE,EAAE,MAAM,GAAG,YAAY,GAAG,IAAI;IAK5C;;;;;;;;;OASG;IACH,sBAAsB,CACpB,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM,EAChB,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EACtC,QAAQ,CAAC,EAAE,SAAS,GACnB,wBAAwB,GAAG,IAAI;IAyIlC;;;;;;;;OAQG;IACH,OAAO,CAAC,aAAa;IAiDrB;;;;;OAKG;IACH,OAAO,CAAC,gBAAgB;IAUxB;;;;OAIG;IACH,gBAAgB,IAAI,MAAM;IAQ1B;;;;;OAKG;IACH,OAAO,CAAC,gBAAgB;IAkBxB;;;;;;OAMG;IACH,OAAO,CAAC,kBAAkB;CAuG3B"}
1
+ {"version":3,"file":"template.service.d.ts","sourceRoot":"","sources":["../../../../../../backend/src/services/template/template.service.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAOH,OAAO,KAAK,EAAE,YAAY,EAAgB,kBAAkB,EAAE,MAAM,oCAAoC,CAAC;AAEzG,OAAO,KAAK,EAAc,IAAI,EAAkB,MAAM,sBAAsB,CAAC;AAE7E,OAAO,EAAE,KAAK,SAAS,EAAmB,MAAM,oBAAoB,CAAC;AA8BrE,gDAAgD;AAChD,MAAM,WAAW,wBAAwB;IACvC,uBAAuB;IACvB,IAAI,EAAE,IAAI,CAAC;IACX,uBAAuB;IACvB,UAAU,EAAE,MAAM,CAAC;IACnB,gCAAgC;IAChC,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,mCAAmC;AACnC,MAAM,MAAM,cAAc,GAAG,OAAO,CAAC;AAErC,2CAA2C;AAC3C,MAAM,WAAW,eAAe;IAC9B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,OAAO,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,0CAA0C;IAC1C,MAAM,EAAE,cAAc,CAAC;IACvB,iDAAiD;IACjD,YAAY,CAAC,EAAE,SAAS,CAAC;IACzB,+DAA+D;IAC/D,UAAU,CAAC,EAAE,kBAAkB,CAAC;CACjC;AAMD;;;;;;GAMG;AACH,qBAAa,eAAe;IAC1B,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAgC;IAEvD,qCAAqC;IACrC,OAAO,CAAC,SAAS,CAAwC;IAEzD,+BAA+B;IAC/B,OAAO,CAAC,YAAY,CAAS;IAE7B,yCAAyC;IACzC,OAAO,CAAC,MAAM,CAAkB;IAEhC,OAAO;IAIP;;;;;OAKG;IACH,MAAM,CAAC,WAAW,CAAC,YAAY,CAAC,EAAE,MAAM,GAAG,eAAe;IAO1D;;OAEG;IACH,MAAM,CAAC,aAAa,IAAI,IAAI;IAI5B;;;;;;OAMG;IACH,aAAa,IAAI,MAAM;IA8BvB;;;;OAIG;IACH,aAAa,IAAI,eAAe,EAAE;IAmBlC;;;;;;;;;;OAUG;IACH,sBAAsB,IAAI,YAAY,EAAE;IAQxC;;;;;OAKG;IACH,WAAW,CAAC,EAAE,EAAE,MAAM,GAAG,YAAY,GAAG,IAAI;IAK5C;;;;;;;;;OASG;IACH,sBAAsB,CACpB,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM,EAChB,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EACtC,QAAQ,CAAC,EAAE,SAAS,GACnB,wBAAwB,GAAG,IAAI;IAyIlC;;;;;;;;OAQG;IACH,OAAO,CAAC,aAAa;IAiDrB;;;;;OAKG;IACH,OAAO,CAAC,gBAAgB;IAUxB;;;;OAIG;IACH,gBAAgB,IAAI,MAAM;IAQ1B;;;;;OAKG;IACH,OAAO,CAAC,gBAAgB;IAkBxB;;;;;;OAMG;IACH,OAAO,CAAC,kBAAkB;CAyG3B"}
@@ -12,7 +12,7 @@ import { homedir } from 'os';
12
12
  import { join, resolve } from 'path';
13
13
  import { LoggerService } from '../core/logger.service.js';
14
14
  import { randomUUID } from 'crypto';
15
- import { isValidTeamTemplate } from '../../types/team-template.types.js';
15
+ import { isValidTeamTemplate, isValidTemplateOnboarding } from '../../types/team-template.types.js';
16
16
  import { SkillTierService } from '../skill/skill-tier.service.js';
17
17
  import { CLOUD_CONSTANTS } from '../../constants.js';
18
18
  // =============================================================================
@@ -126,8 +126,27 @@ export class TemplateService {
126
126
  icon: t.icon,
127
127
  source: 'local',
128
128
  requiredTier: t.requiredTier,
129
+ ...(t.onboarding ? { onboarding: t.onboarding } : {}),
129
130
  }));
130
131
  }
132
+ /**
133
+ * The first-run starter templates (those with `onboarding` metadata),
134
+ * ordered by `onboarding.order`.
135
+ *
136
+ * @returns Starter templates, first-shown first
137
+ *
138
+ * @example
139
+ * ```ts
140
+ * const [recommended] = TemplateService.getInstance().listOnboardingStarters();
141
+ * ```
142
+ */
143
+ listOnboardingStarters() {
144
+ if (!this.loaded)
145
+ this.loadTemplates();
146
+ return Array.from(this.templates.values())
147
+ .filter((t) => !!t.onboarding)
148
+ .sort((a, b) => a.onboarding.order - b.onboarding.order);
149
+ }
131
150
  /**
132
151
  * Get a specific template by ID.
133
152
  *
@@ -435,6 +454,7 @@ export class TemplateService {
435
454
  verificationPipeline: data.verificationPipeline ?? defaultPipeline,
436
455
  ...(typeof data.requiredTier === 'string' ? { requiredTier: data.requiredTier } : {}),
437
456
  ...(Array.isArray(data.tags) ? { tags: data.tags } : {}),
457
+ ...(isValidTemplateOnboarding(data.onboarding) ? { onboarding: data.onboarding } : {}),
438
458
  };
439
459
  this.templates.set(id, rolesTemplate);
440
460
  return;
@@ -474,6 +494,7 @@ export class TemplateService {
474
494
  passPolicy: 'all',
475
495
  maxRetries: 1,
476
496
  },
497
+ ...(isValidTemplateOnboarding(data.onboarding) ? { onboarding: data.onboarding } : {}),
477
498
  };
478
499
  this.templates.set(id, template);
479
500
  }
@@ -1 +1 @@
1
- {"version":3,"file":"template.service.js","sourceRoot":"","sources":["../../../../../../backend/src/services/template/template.service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"template.service.js","sourceRoot":"","sources":["../../../../../../backend/src/services/template/template.service.ts"],"names":[],"mappings":"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"}
@@ -131,6 +131,34 @@ export interface TemplateRole {
131
131
  /** Risk policy ID — loads config/risk-policies/{riskPolicy}.policy.md into the role's prompt */
132
132
  riskPolicy?: string;
133
133
  }
134
+ /**
135
+ * Marks a template as a first-run starter (specs/onboarding-harness-login.md,
136
+ * Phase 3). Only free, members-only templates in `config/templates/` carry it.
137
+ */
138
+ export interface TemplateOnboarding {
139
+ /** Position in the starter list (lower first) */
140
+ order: number;
141
+ /** The default starter (exactly one template sets this) */
142
+ recommended: boolean;
143
+ /** Short Chinese display name, e.g. 个人助理 */
144
+ label: string;
145
+ /** One-line pitch shown under the label */
146
+ tagline: string;
147
+ /** Example first tasks shown under the "派第一件事" box */
148
+ suggestions: string[];
149
+ }
150
+ /**
151
+ * Check if a value is valid onboarding starter metadata.
152
+ *
153
+ * @param value - Value to check
154
+ * @returns True when every field has the right type
155
+ *
156
+ * @example
157
+ * ```ts
158
+ * if (isValidTemplateOnboarding(raw.onboarding)) starters.push(raw);
159
+ * ```
160
+ */
161
+ export declare function isValidTemplateOnboarding(value: unknown): value is TemplateOnboarding;
134
162
  /**
135
163
  * A complete team recipe: roles, skills, hierarchy, and verification pipeline.
136
164
  */
@@ -176,6 +204,8 @@ export interface TeamTemplate {
176
204
  serviceContract?: ServiceContract;
177
205
  /** Team mission statement */
178
206
  mission?: string;
207
+ /** Set when this template is a first-run starter (Phase 3 onboarding) */
208
+ onboarding?: TemplateOnboarding;
179
209
  }
180
210
  /**
181
211
  * Check if a value is a valid TemplateCategory.
@@ -1 +1 @@
1
- {"version":3,"file":"team-template.types.d.ts","sourceRoot":"","sources":["../../../../../backend/src/types/team-template.types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"team-template.types.d.ts","sourceRoot":"","sources":["../../../../../backend/src/types/team-template.types.ts"],"names":[],"mappings":"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"}
@@ -28,6 +28,30 @@ export const VERIFICATION_METHODS = [
28
28
  'manual_review',
29
29
  'custom_script',
30
30
  ];
31
+ /**
32
+ * Check if a value is valid onboarding starter metadata.
33
+ *
34
+ * @param value - Value to check
35
+ * @returns True when every field has the right type
36
+ *
37
+ * @example
38
+ * ```ts
39
+ * if (isValidTemplateOnboarding(raw.onboarding)) starters.push(raw);
40
+ * ```
41
+ */
42
+ export function isValidTemplateOnboarding(value) {
43
+ if (!value || typeof value !== 'object')
44
+ return false;
45
+ const o = value;
46
+ return (typeof o.order === 'number' &&
47
+ Number.isFinite(o.order) &&
48
+ typeof o.recommended === 'boolean' &&
49
+ typeof o.label === 'string' &&
50
+ o.label.trim().length > 0 &&
51
+ typeof o.tagline === 'string' &&
52
+ Array.isArray(o.suggestions) &&
53
+ o.suggestions.every((s) => typeof s === 'string' && s.trim().length > 0));
54
+ }
31
55
  // =============================================================================
32
56
  // Validators
33
57
  // =============================================================================
@@ -1 +1 @@
1
- {"version":3,"file":"team-template.types.js","sourceRoot":"","sources":["../../../../../backend/src/types/team-template.types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"team-template.types.js","sourceRoot":"","sources":["../../../../../backend/src/types/team-template.types.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
1
  {
2
- "commit": "2041701fea8486638c798e2e81fa00d35248b9bb",
3
- "builtAt": "2026-09-25T05:48:55.890Z"
2
+ "commit": "0dc2d24f7c5ba95beea335d273e91be31c1dfb33",
3
+ "builtAt": "2026-09-25T08:05:53.994Z"
4
4
  }
@@ -2956,6 +2956,36 @@ export declare const HARNESS_CONSTANTS: {
2956
2956
  /** Keys typed after user input */
2957
2957
  readonly ENTER: "\r";
2958
2958
  };
2959
+ /**
2960
+ * Re-login over Slack (Phase 2): an expired harness login is noticed in
2961
+ * agent output or by a periodic status check, a broker login is started
2962
+ * and the owner finishes it from their phone.
2963
+ */
2964
+ readonly RELOGIN: {
2965
+ /** At most one owner reminder per harness in this window while the owner has not acted */
2966
+ readonly REMIND_INTERVAL_MS: number;
2967
+ /** How often the orchestrator's harness login state is checked */
2968
+ readonly STATUS_CHECK_INTERVAL_MS: number;
2969
+ /** A broker screen with no URL, code or prompt after this long is sent to the owner as-is */
2970
+ readonly UNRECOGNISED_SCREEN_MS: 20000;
2971
+ /** Expiry reports for a harness are ignored this long after its login succeeded (resumed transcripts repeat old errors) */
2972
+ readonly POST_SUCCESS_QUIET_MS: number;
2973
+ /** A second expiry within this window after a silent API-key recovery falls back to the phone login */
2974
+ readonly SILENT_KEY_RETRY_WINDOW_MS: number;
2975
+ /** Bounds for an owner reply that is taken as Claude's authorization code */
2976
+ readonly CODE_MIN_LENGTH: 16;
2977
+ readonly CODE_MAX_LENGTH: 512;
2978
+ /** Longest reply typed into an unrecognised login screen */
2979
+ readonly SCREEN_REPLY_MAX_LENGTH: 512;
2980
+ /** Owner replies that start the login over (compared trimmed, case-insensitive) */
2981
+ readonly RETRY_KEYWORDS: readonly string[];
2982
+ /** Tail of the (redacted) login screen included in a DM */
2983
+ readonly DM_SCREEN_MAX_CHARS: 1500;
2984
+ /** Longest broker message quoted in a DM */
2985
+ readonly DM_MESSAGE_MAX_CHARS: 300;
2986
+ /** Waiting agents named in a DM; the rest are counted */
2987
+ readonly DM_MAX_LISTED_AGENTS: 8;
2988
+ };
2959
2989
  /** Claude Code facts */
2960
2990
  readonly CLAUDE: {
2961
2991
  readonly OAUTH_TOKEN_ENV: "CLAUDE_CODE_OAUTH_TOKEN";
@@ -2999,6 +3029,51 @@ export declare const HARNESS_CONSTANTS: {
2999
3029
  /** Web setup page opened by `crewly onboard --web` */
3000
3030
  readonly WEB_SETUP_PATH: "/setup";
3001
3031
  };
3032
+ /**
3033
+ * First-run checklist and starter teams (specs/onboarding-harness-login.md,
3034
+ * Phase 3): harness → first team → first task → Cloud → Slack.
3035
+ */
3036
+ export declare const ONBOARDING_CONSTANTS: {
3037
+ /** Checklist state (dismissed flag, blank choice, first-task record) under the Crewly home dir */
3038
+ readonly STATE_FILE: "onboarding.json";
3039
+ /** Checklist step ids, in display order */
3040
+ readonly STEP_IDS: {
3041
+ readonly HARNESS: "harness";
3042
+ readonly TEAM: "team";
3043
+ readonly FIRST_TASK: "first_task";
3044
+ readonly CLOUD: "cloud";
3045
+ readonly SLACK: "slack";
3046
+ };
3047
+ readonly STEP_ORDER: readonly string[];
3048
+ /** Starter id of "Blank": the orchestrator only, no team */
3049
+ readonly BLANK_STARTER_ID: "blank";
3050
+ /** Display copy for the Blank starter (templates carry their own) */
3051
+ readonly BLANK_STARTER: {
3052
+ readonly NAME: "Blank";
3053
+ readonly LABEL: "空白";
3054
+ readonly TAGLINE: "只有 Orc(总调度),先不建团队。需要时让 Orc 帮你组队。";
3055
+ readonly SUGGESTIONS: readonly string[];
3056
+ };
3057
+ /** Longest first task accepted */
3058
+ readonly FIRST_TASK_MAX_LENGTH: 4000;
3059
+ /** First line of the message the orchestrator receives for a first task */
3060
+ readonly FIRST_TASK_HEADER: "[初始设置 · 第一件事]";
3061
+ /** Chat metadata `source` of a first task sent from setup */
3062
+ readonly FIRST_TASK_SOURCE: "onboarding_first_task";
3063
+ /** Query parameter that opens `/setup` at a step (e.g. `/setup?step=cloud`) */
3064
+ readonly WEB_STEP_QUERY: "step";
3065
+ /** Crewly Cloud sign-in that works from a phone */
3066
+ readonly CLOUD: {
3067
+ /** Cloud auth route that starts Google sign-in and redirects back with ?token=&refreshToken= */
3068
+ readonly GOOGLE_START_PATH: "/api/cloud/google/start";
3069
+ /** Portal page that shows the token + refresh token for copy-paste */
3070
+ readonly CLI_TOKEN_PATH: "/cloud/cli-token";
3071
+ /** The web app's callback page that hands the token to this backend */
3072
+ readonly WEB_CALLBACK_PATH: "/auth/callback";
3073
+ /** Portal base URL (env: CLOUD_CONSOLE_URL) */
3074
+ readonly CONSOLE_URL: string;
3075
+ };
3076
+ };
3002
3077
  /** License status type */
3003
3078
  export type CloudLicenseStatus = (typeof CLOUD_AUTH_CONSTANTS.LICENSE_STATUS)[keyof typeof CLOUD_AUTH_CONSTANTS.LICENSE_STATUS];
3004
3079
  export type AgentStatus = (typeof CREWLY_CONSTANTS.AGENT_STATUSES)[keyof typeof CREWLY_CONSTANTS.AGENT_STATUSES];