crewly 1.16.0 → 1.17.0
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.
- package/README.md +33 -1
- package/config/roles/orchestrator/prompt.md +20 -5
- package/config/skills/agent/core/calendar-create/SKILL.md +62 -0
- package/config/skills/agent/core/calendar-create/execute.sh +91 -0
- package/config/skills/agent/core/calendar-create/execute.test.sh +80 -0
- package/config/skills/agent/core/calendar-list/SKILL.md +58 -0
- package/config/skills/agent/core/calendar-list/execute.sh +88 -0
- package/config/skills/agent/core/calendar-list/execute.test.sh +71 -0
- package/config/skills/agent/core/gmail-read/SKILL.md +61 -0
- package/config/skills/agent/core/gmail-read/execute.sh +62 -0
- package/config/skills/agent/core/gmail-read/execute.test.sh +68 -0
- package/config/skills/agent/core/gmail-search/SKILL.md +64 -0
- package/config/skills/agent/core/gmail-search/execute.sh +70 -0
- package/config/skills/agent/core/gmail-search/execute.test.sh +67 -0
- package/config/skills/agent/core/gmail-send/SKILL.md +69 -0
- package/config/skills/agent/core/gmail-send/execute.sh +114 -0
- package/config/skills/agent/core/gmail-send/execute.test.sh +83 -0
- package/config/skills/orchestrator/list-missions/SKILL.md +47 -0
- package/config/skills/orchestrator/list-missions/execute.sh +34 -0
- package/config/skills/orchestrator/list-missions/execute.test.sh +33 -0
- package/config/slack-master-app-manifest.json +64 -0
- package/dist/backend/backend/src/constants.d.ts +125 -0
- package/dist/backend/backend/src/constants.d.ts.map +1 -1
- package/dist/backend/backend/src/constants.js +125 -0
- package/dist/backend/backend/src/constants.js.map +1 -1
- package/dist/backend/backend/src/controllers/cloud/cloud.controller.d.ts.map +1 -1
- package/dist/backend/backend/src/controllers/cloud/cloud.controller.js +3 -1
- package/dist/backend/backend/src/controllers/cloud/cloud.controller.js.map +1 -1
- package/dist/backend/backend/src/controllers/google/google.controller.d.ts +100 -0
- package/dist/backend/backend/src/controllers/google/google.controller.d.ts.map +1 -0
- package/dist/backend/backend/src/controllers/google/google.controller.js +293 -0
- package/dist/backend/backend/src/controllers/google/google.controller.js.map +1 -0
- package/dist/backend/backend/src/controllers/google/google.routes.d.ts +26 -0
- package/dist/backend/backend/src/controllers/google/google.routes.d.ts.map +1 -0
- package/dist/backend/backend/src/controllers/google/google.routes.js +38 -0
- package/dist/backend/backend/src/controllers/google/google.routes.js.map +1 -0
- package/dist/backend/backend/src/controllers/slack/slack.controller.d.ts.map +1 -1
- package/dist/backend/backend/src/controllers/slack/slack.controller.js +209 -2
- package/dist/backend/backend/src/controllers/slack/slack.controller.js.map +1 -1
- package/dist/backend/backend/src/index.d.ts.map +1 -1
- package/dist/backend/backend/src/index.js +39 -8
- package/dist/backend/backend/src/index.js.map +1 -1
- package/dist/backend/backend/src/routes/api.routes.d.ts.map +1 -1
- package/dist/backend/backend/src/routes/api.routes.js +4 -0
- package/dist/backend/backend/src/routes/api.routes.js.map +1 -1
- package/dist/backend/backend/src/services/cloud/cloud-initializer.d.ts +8 -0
- package/dist/backend/backend/src/services/cloud/cloud-initializer.d.ts.map +1 -1
- package/dist/backend/backend/src/services/cloud/cloud-initializer.js +25 -0
- package/dist/backend/backend/src/services/cloud/cloud-initializer.js.map +1 -1
- package/dist/backend/backend/src/services/cloud/cloud-sync.types.d.ts +1 -1
- package/dist/backend/backend/src/services/cloud/cloud-sync.types.d.ts.map +1 -1
- package/dist/backend/backend/src/services/cloud/cloud-sync.types.js +1 -0
- package/dist/backend/backend/src/services/cloud/cloud-sync.types.js.map +1 -1
- package/dist/backend/backend/src/services/google/calendar.service.d.ts +98 -0
- package/dist/backend/backend/src/services/google/calendar.service.d.ts.map +1 -0
- package/dist/backend/backend/src/services/google/calendar.service.js +125 -0
- package/dist/backend/backend/src/services/google/calendar.service.js.map +1 -0
- package/dist/backend/backend/src/services/google/gmail.service.d.ts +165 -0
- package/dist/backend/backend/src/services/google/gmail.service.d.ts.map +1 -0
- package/dist/backend/backend/src/services/google/gmail.service.js +296 -0
- package/dist/backend/backend/src/services/google/gmail.service.js.map +1 -0
- package/dist/backend/backend/src/services/google/google-api.client.d.ts +44 -0
- package/dist/backend/backend/src/services/google/google-api.client.d.ts.map +1 -0
- package/dist/backend/backend/src/services/google/google-api.client.js +104 -0
- package/dist/backend/backend/src/services/google/google-api.client.js.map +1 -0
- package/dist/backend/backend/src/services/google/google-workspace-token.service.d.ts +159 -0
- package/dist/backend/backend/src/services/google/google-workspace-token.service.d.ts.map +1 -0
- package/dist/backend/backend/src/services/google/google-workspace-token.service.js +274 -0
- package/dist/backend/backend/src/services/google/google-workspace-token.service.js.map +1 -0
- package/dist/backend/backend/src/services/slack/slack-agent-identity.service.d.ts +12 -1
- package/dist/backend/backend/src/services/slack/slack-agent-identity.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/slack/slack-agent-identity.service.js +30 -0
- package/dist/backend/backend/src/services/slack/slack-agent-identity.service.js.map +1 -1
- package/dist/backend/backend/src/services/slack/slack-cloud-config.service.d.ts +186 -0
- package/dist/backend/backend/src/services/slack/slack-cloud-config.service.d.ts.map +1 -0
- package/dist/backend/backend/src/services/slack/slack-cloud-config.service.js +409 -0
- package/dist/backend/backend/src/services/slack/slack-cloud-config.service.js.map +1 -0
- package/dist/backend/backend/src/services/slack/slack-initializer.d.ts +95 -1
- package/dist/backend/backend/src/services/slack/slack-initializer.d.ts.map +1 -1
- package/dist/backend/backend/src/services/slack/slack-initializer.js +284 -4
- package/dist/backend/backend/src/services/slack/slack-initializer.js.map +1 -1
- package/dist/backend/backend/src/services/slack/slack-instance-registry.service.d.ts +178 -0
- package/dist/backend/backend/src/services/slack/slack-instance-registry.service.d.ts.map +1 -0
- package/dist/backend/backend/src/services/slack/slack-instance-registry.service.js +392 -0
- package/dist/backend/backend/src/services/slack/slack-instance-registry.service.js.map +1 -0
- package/dist/backend/backend/src/services/slack/slack.service.d.ts +76 -1
- package/dist/backend/backend/src/services/slack/slack.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/slack/slack.service.js +234 -47
- package/dist/backend/backend/src/services/slack/slack.service.js.map +1 -1
- package/dist/backend/backend/src/services/v3/mission-reminder.service.d.ts +4 -0
- package/dist/backend/backend/src/services/v3/mission-reminder.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/v3/mission-reminder.service.js +17 -0
- package/dist/backend/backend/src/services/v3/mission-reminder.service.js.map +1 -1
- package/dist/backend/backend/src/services/v3/okr-owner-guidance.service.d.ts +116 -0
- package/dist/backend/backend/src/services/v3/okr-owner-guidance.service.d.ts.map +1 -0
- package/dist/backend/backend/src/services/v3/okr-owner-guidance.service.js +254 -0
- package/dist/backend/backend/src/services/v3/okr-owner-guidance.service.js.map +1 -0
- package/dist/backend/backend/src/types/slack.types.d.ts +141 -2
- package/dist/backend/backend/src/types/slack.types.d.ts.map +1 -1
- package/dist/backend/backend/src/types/slack.types.js.map +1 -1
- package/dist/backend/backend/src/types/v2/mission.types.d.ts +2 -0
- package/dist/backend/backend/src/types/v2/mission.types.d.ts.map +1 -1
- package/dist/backend/backend/src/types/v2/mission.types.js.map +1 -1
- package/dist/backend/build-info.json +2 -2
- package/dist/cli/backend/src/constants.d.ts +125 -0
- package/dist/cli/backend/src/constants.d.ts.map +1 -1
- package/dist/cli/backend/src/constants.js +125 -0
- package/dist/cli/backend/src/constants.js.map +1 -1
- package/dist/cli/backend/src/services/cloud/cloud-sync.types.d.ts +1 -1
- package/dist/cli/backend/src/services/cloud/cloud-sync.types.d.ts.map +1 -1
- package/dist/cli/backend/src/services/cloud/cloud-sync.types.js +1 -0
- package/dist/cli/backend/src/services/cloud/cloud-sync.types.js.map +1 -1
- package/dist/cli/backend/src/services/slack/slack-agent-identity.service.d.ts +12 -1
- package/dist/cli/backend/src/services/slack/slack-agent-identity.service.d.ts.map +1 -1
- package/dist/cli/backend/src/services/slack/slack-agent-identity.service.js +30 -0
- package/dist/cli/backend/src/services/slack/slack-agent-identity.service.js.map +1 -1
- package/dist/cli/backend/src/services/slack/slack.service.d.ts +76 -1
- package/dist/cli/backend/src/services/slack/slack.service.d.ts.map +1 -1
- package/dist/cli/backend/src/services/slack/slack.service.js +234 -47
- package/dist/cli/backend/src/services/slack/slack.service.js.map +1 -1
- package/dist/cli/backend/src/types/slack.types.d.ts +141 -2
- package/dist/cli/backend/src/types/slack.types.d.ts.map +1 -1
- package/dist/cli/backend/src/types/slack.types.js.map +1 -1
- package/dist/cli/backend/src/types/v2/mission.types.d.ts +2 -0
- package/dist/cli/backend/src/types/v2/mission.types.d.ts.map +1 -1
- package/dist/cli/backend/src/types/v2/mission.types.js.map +1 -1
- package/frontend/dist/assets/{index-019817e2.js → index-c87332bf.js} +273 -273
- package/frontend/dist/assets/{index-a56613e7.css → index-f6b4230e.css} +1 -1
- package/frontend/dist/index.html +2 -2
- package/package.json +1 -1
|
@@ -0,0 +1,274 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Google Workspace Token Service
|
|
3
|
+
*
|
|
4
|
+
* Crewly Cloud holds the owner's Google OAuth grant; this service asks Cloud
|
|
5
|
+
* (`/api/cloud/google/workspace/token`) for a short-lived access token and
|
|
6
|
+
* caches it until shortly before expiry, so Gmail / Calendar calls made by
|
|
7
|
+
* this instance never carry the refresh token and mail content never passes
|
|
8
|
+
* through Cloud.
|
|
9
|
+
*
|
|
10
|
+
* Cloud auth reuses the Crewly Cloud session already held by
|
|
11
|
+
* `CloudClientService` (its access JWT as Bearer) — no separate login.
|
|
12
|
+
*
|
|
13
|
+
* @module services/google/google-workspace-token.service
|
|
14
|
+
*/
|
|
15
|
+
import { CloudClientService } from '../cloud/cloud-client.service.js';
|
|
16
|
+
import { LoggerService } from '../core/logger.service.js';
|
|
17
|
+
import { GOOGLE_WORKSPACE_CONSTANTS } from '../../constants.js';
|
|
18
|
+
/**
|
|
19
|
+
* Error raised for every Cloud / Google failure. `status` is the HTTP status
|
|
20
|
+
* the OSS controller should answer with and `code` is one of
|
|
21
|
+
* {@link GOOGLE_WORKSPACE_CONSTANTS.ERROR_CODES} (or `http_<n>` for anything
|
|
22
|
+
* unmapped), so the controller and the skills can branch without parsing text.
|
|
23
|
+
*/
|
|
24
|
+
export class GoogleWorkspaceError extends Error {
|
|
25
|
+
status;
|
|
26
|
+
code;
|
|
27
|
+
constructor(status, code, message) {
|
|
28
|
+
super(message);
|
|
29
|
+
this.status = status;
|
|
30
|
+
this.code = code;
|
|
31
|
+
this.name = 'GoogleWorkspaceError';
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Map a Cloud workspace-endpoint failure to the status/code this instance
|
|
36
|
+
* answers with. 404 (no grant) and 409 (grant revoked) both mean "not
|
|
37
|
+
* connected — go through the consent flow again"; 503 means Cloud itself has
|
|
38
|
+
* no Google client; 502 is Google refusing Cloud.
|
|
39
|
+
*
|
|
40
|
+
* @param httpStatus - Status Cloud answered with
|
|
41
|
+
* @param code - `code` (or `error`) field from Cloud's body, if any
|
|
42
|
+
* @param message - Human message from Cloud's body, if any
|
|
43
|
+
* @returns The error to throw
|
|
44
|
+
*/
|
|
45
|
+
export function mapCloudFailure(httpStatus, code, message) {
|
|
46
|
+
const CODES = GOOGLE_WORKSPACE_CONSTANTS.ERROR_CODES;
|
|
47
|
+
if (httpStatus === 401 || httpStatus === 403) {
|
|
48
|
+
return new GoogleWorkspaceError(401, CODES.NOT_LOGGED_IN, 'Crewly Cloud session expired. Sign in to Crewly Cloud again.');
|
|
49
|
+
}
|
|
50
|
+
if (httpStatus === 404 || httpStatus === 409 || code === CODES.NOT_CONNECTED || code === 'grant_revoked') {
|
|
51
|
+
return new GoogleWorkspaceError(409, CODES.NOT_CONNECTED, 'Google Workspace is not connected for this Crewly Cloud account.');
|
|
52
|
+
}
|
|
53
|
+
if (httpStatus === 503 || code === CODES.NOT_CONFIGURED) {
|
|
54
|
+
return new GoogleWorkspaceError(503, CODES.NOT_CONFIGURED, 'Crewly Cloud is not configured for Google Workspace.');
|
|
55
|
+
}
|
|
56
|
+
if (httpStatus === 502 || code === CODES.GOOGLE_ERROR) {
|
|
57
|
+
return new GoogleWorkspaceError(502, CODES.GOOGLE_ERROR, message || 'Google rejected the token request.');
|
|
58
|
+
}
|
|
59
|
+
return new GoogleWorkspaceError(502, code ?? `http_${httpStatus}`, message || `Cloud request failed (${httpStatus})`);
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* Fetches, caches and refreshes the Google access token that Cloud mints
|
|
63
|
+
* from the owner's stored grant.
|
|
64
|
+
*
|
|
65
|
+
* @example
|
|
66
|
+
* ```ts
|
|
67
|
+
* const token = await GoogleWorkspaceTokenService.getInstance().getAccessToken();
|
|
68
|
+
* ```
|
|
69
|
+
*/
|
|
70
|
+
export class GoogleWorkspaceTokenService {
|
|
71
|
+
static instance = null;
|
|
72
|
+
logger;
|
|
73
|
+
cloud;
|
|
74
|
+
fetchImpl;
|
|
75
|
+
nowFn;
|
|
76
|
+
/** Cached token + absolute expiry (ms since epoch), or null. */
|
|
77
|
+
cached = null;
|
|
78
|
+
/** The one refresh currently on the wire, so concurrent callers share it. */
|
|
79
|
+
inflight = null;
|
|
80
|
+
/**
|
|
81
|
+
* @param deps - Cloud client slice, fetch and clock overrides (tests)
|
|
82
|
+
*/
|
|
83
|
+
constructor(deps = {}) {
|
|
84
|
+
this.logger = LoggerService.getInstance().createComponentLogger('GoogleWorkspaceToken');
|
|
85
|
+
this.cloud = deps.cloud ?? CloudClientService.getInstance();
|
|
86
|
+
this.fetchImpl = deps.fetchImpl ?? fetch;
|
|
87
|
+
this.nowFn = deps.now ?? (() => Date.now());
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* Process-wide instance bound to the real CloudClientService.
|
|
91
|
+
*
|
|
92
|
+
* @returns The singleton
|
|
93
|
+
*/
|
|
94
|
+
static getInstance() {
|
|
95
|
+
if (!GoogleWorkspaceTokenService.instance) {
|
|
96
|
+
GoogleWorkspaceTokenService.instance = new GoogleWorkspaceTokenService();
|
|
97
|
+
}
|
|
98
|
+
return GoogleWorkspaceTokenService.instance;
|
|
99
|
+
}
|
|
100
|
+
/**
|
|
101
|
+
* Drop the singleton (tests).
|
|
102
|
+
*/
|
|
103
|
+
static resetInstance() {
|
|
104
|
+
GoogleWorkspaceTokenService.instance = null;
|
|
105
|
+
}
|
|
106
|
+
/**
|
|
107
|
+
* Whether this instance is signed in to Crewly Cloud (prerequisite for
|
|
108
|
+
* everything else here).
|
|
109
|
+
*
|
|
110
|
+
* @returns True when a Cloud URL and access JWT are available
|
|
111
|
+
*/
|
|
112
|
+
isCloudAvailable() {
|
|
113
|
+
return this.cloud.isConnected() && !!this.cloud.getToken() && !!this.cloud.getCloudUrl();
|
|
114
|
+
}
|
|
115
|
+
/**
|
|
116
|
+
* A Google access token that is valid for at least the refresh margin.
|
|
117
|
+
* Served from cache when possible; otherwise one Cloud round-trip shared
|
|
118
|
+
* by every concurrent caller.
|
|
119
|
+
*
|
|
120
|
+
* @returns Bearer token for Gmail / Calendar
|
|
121
|
+
* @throws GoogleWorkspaceError — not_logged_in / not_connected / not_configured / google_error / network
|
|
122
|
+
*/
|
|
123
|
+
async getAccessToken() {
|
|
124
|
+
const margin = GOOGLE_WORKSPACE_CONSTANTS.TOKEN_REFRESH_MARGIN_MS;
|
|
125
|
+
if (this.cached && this.cached.expiresAtMs - margin > this.nowFn()) {
|
|
126
|
+
return this.cached.accessToken;
|
|
127
|
+
}
|
|
128
|
+
if (this.inflight)
|
|
129
|
+
return this.inflight;
|
|
130
|
+
this.inflight = this.refresh().finally(() => {
|
|
131
|
+
this.inflight = null;
|
|
132
|
+
});
|
|
133
|
+
return this.inflight;
|
|
134
|
+
}
|
|
135
|
+
/**
|
|
136
|
+
* Forget the cached token so the next call refreshes (used after Google
|
|
137
|
+
* answers 401, or when the grant is revoked).
|
|
138
|
+
*/
|
|
139
|
+
clearCache() {
|
|
140
|
+
this.cached = null;
|
|
141
|
+
}
|
|
142
|
+
/**
|
|
143
|
+
* Whether Cloud holds a Workspace grant, and for which email.
|
|
144
|
+
* Never throws for the two "not there" cases (no Cloud session / no grant);
|
|
145
|
+
* those come back as `connected: false`.
|
|
146
|
+
*
|
|
147
|
+
* @returns Connection status
|
|
148
|
+
* @throws GoogleWorkspaceError for Cloud outages / misconfiguration
|
|
149
|
+
*/
|
|
150
|
+
async status() {
|
|
151
|
+
if (!this.isCloudAvailable()) {
|
|
152
|
+
return { connected: false, cloudConnected: false };
|
|
153
|
+
}
|
|
154
|
+
try {
|
|
155
|
+
const data = await this.cloudRequest('GET', GOOGLE_WORKSPACE_CONSTANTS.CLOUD_ENDPOINTS.STATUS);
|
|
156
|
+
if (!data.connected)
|
|
157
|
+
this.clearCache();
|
|
158
|
+
return {
|
|
159
|
+
connected: !!data.connected,
|
|
160
|
+
cloudConnected: true,
|
|
161
|
+
...(data.email ? { email: data.email } : {}),
|
|
162
|
+
...(data.scopes ? { scopes: data.scopes } : {}),
|
|
163
|
+
...(data.grantedAt ? { grantedAt: data.grantedAt } : {}),
|
|
164
|
+
};
|
|
165
|
+
}
|
|
166
|
+
catch (err) {
|
|
167
|
+
if (err instanceof GoogleWorkspaceError && err.code === GOOGLE_WORKSPACE_CONSTANTS.ERROR_CODES.NOT_CONNECTED) {
|
|
168
|
+
this.clearCache();
|
|
169
|
+
return { connected: false, cloudConnected: true };
|
|
170
|
+
}
|
|
171
|
+
throw err;
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
/**
|
|
175
|
+
* Ask Cloud to revoke the grant and forget it; also drops the local cache.
|
|
176
|
+
*
|
|
177
|
+
* @returns Whether Cloud had a grant to remove
|
|
178
|
+
* @throws GoogleWorkspaceError when not signed in to Cloud or Cloud fails
|
|
179
|
+
*/
|
|
180
|
+
async disconnect() {
|
|
181
|
+
this.clearCache();
|
|
182
|
+
const data = await this.cloudRequest('DELETE', GOOGLE_WORKSPACE_CONSTANTS.CLOUD_ENDPOINTS.DISCONNECT);
|
|
183
|
+
return { removed: !!data.removed };
|
|
184
|
+
}
|
|
185
|
+
/**
|
|
186
|
+
* The Cloud consent-start URL for the browser: carries the current Cloud
|
|
187
|
+
* access JWT (Cloud accepts `?token=` because a top-level navigation cannot
|
|
188
|
+
* set a Bearer header) and where to land afterwards.
|
|
189
|
+
*
|
|
190
|
+
* @param returnUrl - Absolute dashboard URL Cloud redirects back to
|
|
191
|
+
* @returns Absolute URL to open
|
|
192
|
+
* @throws GoogleWorkspaceError(401, not_logged_in) when not signed in to Cloud
|
|
193
|
+
*/
|
|
194
|
+
buildConnectUrl(returnUrl) {
|
|
195
|
+
const token = this.cloud.getToken();
|
|
196
|
+
const base = this.cloud.getCloudUrl();
|
|
197
|
+
if (!this.isCloudAvailable() || !token || !base) {
|
|
198
|
+
throw new GoogleWorkspaceError(401, GOOGLE_WORKSPACE_CONSTANTS.ERROR_CODES.NOT_LOGGED_IN, 'Sign in to Crewly Cloud first.');
|
|
199
|
+
}
|
|
200
|
+
const url = new URL(`${base.replace(/\/$/, '')}${GOOGLE_WORKSPACE_CONSTANTS.CLOUD_PATH}${GOOGLE_WORKSPACE_CONSTANTS.CLOUD_ENDPOINTS.START}`);
|
|
201
|
+
url.searchParams.set('token', token);
|
|
202
|
+
url.searchParams.set('returnUrl', returnUrl);
|
|
203
|
+
return url.toString();
|
|
204
|
+
}
|
|
205
|
+
/**
|
|
206
|
+
* One Cloud `/token` round-trip; updates the cache.
|
|
207
|
+
*
|
|
208
|
+
* @returns The fresh access token
|
|
209
|
+
*/
|
|
210
|
+
async refresh() {
|
|
211
|
+
try {
|
|
212
|
+
const data = await this.cloudRequest('GET', GOOGLE_WORKSPACE_CONSTANTS.CLOUD_ENDPOINTS.TOKEN);
|
|
213
|
+
if (!data.accessToken) {
|
|
214
|
+
throw new GoogleWorkspaceError(502, GOOGLE_WORKSPACE_CONSTANTS.ERROR_CODES.GOOGLE_ERROR, 'Cloud returned no access token.');
|
|
215
|
+
}
|
|
216
|
+
const expiresAtMs = Date.parse(data.expiresAt);
|
|
217
|
+
this.cached = {
|
|
218
|
+
accessToken: data.accessToken,
|
|
219
|
+
// An unparseable expiry is treated as already stale so we refresh next time.
|
|
220
|
+
expiresAtMs: Number.isFinite(expiresAtMs) ? expiresAtMs : this.nowFn(),
|
|
221
|
+
...(data.email ? { email: data.email } : {}),
|
|
222
|
+
...(data.scopes ? { scopes: data.scopes } : {}),
|
|
223
|
+
};
|
|
224
|
+
this.logger.debug('Google access token refreshed', { expiresAt: data.expiresAt });
|
|
225
|
+
return data.accessToken;
|
|
226
|
+
}
|
|
227
|
+
catch (err) {
|
|
228
|
+
this.cached = null;
|
|
229
|
+
throw err;
|
|
230
|
+
}
|
|
231
|
+
}
|
|
232
|
+
/**
|
|
233
|
+
* Authenticated call to a Cloud workspace endpoint using the Cloud session
|
|
234
|
+
* JWT. Unwraps the auth service's `{ success, data }` envelope.
|
|
235
|
+
*
|
|
236
|
+
* @param method - HTTP verb
|
|
237
|
+
* @param suffix - Path under CLOUD_PATH
|
|
238
|
+
* @returns The `data` payload
|
|
239
|
+
* @throws GoogleWorkspaceError mapped via {@link mapCloudFailure}
|
|
240
|
+
*/
|
|
241
|
+
async cloudRequest(method, suffix) {
|
|
242
|
+
const token = this.cloud.getToken();
|
|
243
|
+
const base = this.cloud.getCloudUrl();
|
|
244
|
+
if (!this.isCloudAvailable() || !token || !base) {
|
|
245
|
+
throw new GoogleWorkspaceError(401, GOOGLE_WORKSPACE_CONSTANTS.ERROR_CODES.NOT_LOGGED_IN, 'Not signed in to Crewly Cloud.');
|
|
246
|
+
}
|
|
247
|
+
const url = `${base.replace(/\/$/, '')}${GOOGLE_WORKSPACE_CONSTANTS.CLOUD_PATH}${suffix}`;
|
|
248
|
+
let res;
|
|
249
|
+
try {
|
|
250
|
+
res = await this.fetchImpl(url, {
|
|
251
|
+
method,
|
|
252
|
+
headers: { Authorization: `Bearer ${token}` },
|
|
253
|
+
signal: AbortSignal.timeout(GOOGLE_WORKSPACE_CONSTANTS.REQUEST_TIMEOUT_MS),
|
|
254
|
+
});
|
|
255
|
+
}
|
|
256
|
+
catch (err) {
|
|
257
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
258
|
+
throw new GoogleWorkspaceError(502, GOOGLE_WORKSPACE_CONSTANTS.ERROR_CODES.NETWORK, `Crewly Cloud unreachable: ${message}`);
|
|
259
|
+
}
|
|
260
|
+
const text = await res.text();
|
|
261
|
+
let parsed = {};
|
|
262
|
+
try {
|
|
263
|
+
parsed = JSON.parse(text);
|
|
264
|
+
}
|
|
265
|
+
catch {
|
|
266
|
+
parsed = {};
|
|
267
|
+
}
|
|
268
|
+
if (!res.ok || parsed.success !== true) {
|
|
269
|
+
throw mapCloudFailure(res.status, parsed.code ?? parsed.error, parsed.error);
|
|
270
|
+
}
|
|
271
|
+
return (parsed.data ?? {});
|
|
272
|
+
}
|
|
273
|
+
}
|
|
274
|
+
//# sourceMappingURL=google-workspace-token.service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"google-workspace-token.service.js","sourceRoot":"","sources":["../../../../../../backend/src/services/google/google-workspace-token.service.ts"],"names":[],"mappings":"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"}
|
|
@@ -22,7 +22,7 @@
|
|
|
22
22
|
*
|
|
23
23
|
* @module services/slack/slack-agent-identity.service
|
|
24
24
|
*/
|
|
25
|
-
import type { SlackAgentIdentityRecord, SlackAgentIdentitiesFile } from '../../types/slack.types.js';
|
|
25
|
+
import type { SlackAgentIdentityRecord, SlackAgentIdentitiesFile, SlackCloudAgentConfig } from '../../types/slack.types.js';
|
|
26
26
|
/** The slice of CloudClientService this service needs. */
|
|
27
27
|
export interface IdentityCloudClient {
|
|
28
28
|
isConnected(): boolean;
|
|
@@ -132,6 +132,17 @@ export declare class SlackAgentIdentityService {
|
|
|
132
132
|
* @returns All records after the merge
|
|
133
133
|
*/
|
|
134
134
|
refreshFromCloud(): Promise<SlackAgentIdentityRecord[]>;
|
|
135
|
+
/**
|
|
136
|
+
* Merge the installed identities handed down with the Cloud-owned Slack
|
|
137
|
+
* config (`GET /api/cloud/slack/config` → `agents`). Each entry is a fully
|
|
138
|
+
* installed bot user, so it lands as `installed` and fires
|
|
139
|
+
* {@link onInstalled} the first time it is seen — the team-channel
|
|
140
|
+
* service then invites the bot into its channels. Idempotent.
|
|
141
|
+
*
|
|
142
|
+
* @param agents - Agents from the Cloud config
|
|
143
|
+
* @returns Number of records that became installed by this call
|
|
144
|
+
*/
|
|
145
|
+
applyCloudConfig(agents: SlackCloudAgentConfig[]): Promise<number>;
|
|
135
146
|
/**
|
|
136
147
|
* Delete an agent's Slack app on Cloud and forget it locally.
|
|
137
148
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"slack-agent-identity.service.d.ts","sourceRoot":"","sources":["../../../../../../backend/src/services/slack/slack-agent-identity.service.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAIH,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"slack-agent-identity.service.d.ts","sourceRoot":"","sources":["../../../../../../backend/src/services/slack/slack-agent-identity.service.ts"],"names":[],"mappings":"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"}
|
|
@@ -148,6 +148,36 @@ export class SlackAgentIdentityService {
|
|
|
148
148
|
this.stopPolling();
|
|
149
149
|
return store.identities.map((r) => ({ ...r }));
|
|
150
150
|
}
|
|
151
|
+
/**
|
|
152
|
+
* Merge the installed identities handed down with the Cloud-owned Slack
|
|
153
|
+
* config (`GET /api/cloud/slack/config` → `agents`). Each entry is a fully
|
|
154
|
+
* installed bot user, so it lands as `installed` and fires
|
|
155
|
+
* {@link onInstalled} the first time it is seen — the team-channel
|
|
156
|
+
* service then invites the bot into its channels. Idempotent.
|
|
157
|
+
*
|
|
158
|
+
* @param agents - Agents from the Cloud config
|
|
159
|
+
* @returns Number of records that became installed by this call
|
|
160
|
+
*/
|
|
161
|
+
async applyCloudConfig(agents) {
|
|
162
|
+
let newlyInstalled = 0;
|
|
163
|
+
for (const agent of agents) {
|
|
164
|
+
if (!agent.agentSession || !agent.botToken || !agent.botUserId)
|
|
165
|
+
continue;
|
|
166
|
+
const before = this.getInstalled(agent.agentSession);
|
|
167
|
+
await this.mergeView({
|
|
168
|
+
agentSession: agent.agentSession,
|
|
169
|
+
displayName: agent.displayName || agent.agentSession,
|
|
170
|
+
appId: agent.appId,
|
|
171
|
+
status: 'installed',
|
|
172
|
+
botUserId: agent.botUserId,
|
|
173
|
+
teamId: agent.teamId,
|
|
174
|
+
botToken: agent.botToken,
|
|
175
|
+
});
|
|
176
|
+
if (!before)
|
|
177
|
+
newlyInstalled += 1;
|
|
178
|
+
}
|
|
179
|
+
return newlyInstalled;
|
|
180
|
+
}
|
|
151
181
|
/**
|
|
152
182
|
* Delete an agent's Slack app on Cloud and forget it locally.
|
|
153
183
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"slack-agent-identity.service.js","sourceRoot":"","sources":["../../../../../../backend/src/services/slack/slack-agent-identity.service.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"slack-agent-identity.service.js","sourceRoot":"","sources":["../../../../../../backend/src/services/slack/slack-agent-identity.service.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,186 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Slack Cloud Config Service — the Cloud-owned Slack setup, cached locally.
|
|
3
|
+
*
|
|
4
|
+
* Slack v3 ("Crewly Cloud owns Slack"): the owner installs the Crewly Slack
|
|
5
|
+
* app once from the portal; every OSS instance signed in to the same Crewly
|
|
6
|
+
* account then gets the workspace bot token, bot user id and the installed
|
|
7
|
+
* per-agent identities from `GET /api/cloud/slack/config` — no manual
|
|
8
|
+
* tokens. This service:
|
|
9
|
+
*
|
|
10
|
+
* - fetches that config on boot and every 10 minutes while signed in;
|
|
11
|
+
* - caches it at `~/.crewly/slack-cloud-config.json` (mode 0600) so a
|
|
12
|
+
* restart without Cloud reachability still connects;
|
|
13
|
+
* - exposes the master bot as a {@link SlackConfig} with the `cloud`
|
|
14
|
+
* transport for `SlackService`, and the agents for
|
|
15
|
+
* `SlackAgentIdentityService`;
|
|
16
|
+
* - notifies listeners when the config appears, changes or goes away, so
|
|
17
|
+
* the initializer can (re)connect without a restart.
|
|
18
|
+
*
|
|
19
|
+
* Source precedence lives in {@link resolveSlackSourceMode}: unset → Cloud
|
|
20
|
+
* wins when both exist (logged once), `CREWLY_SLACK_SOURCE=env` → never
|
|
21
|
+
* touch Cloud, `CREWLY_SLACK_SOURCE=cloud` → never use local tokens.
|
|
22
|
+
*
|
|
23
|
+
* @module services/slack/slack-cloud-config.service
|
|
24
|
+
*/
|
|
25
|
+
import type { SlackCloudAgentConfig, SlackCloudConfig, SlackConfig } from '../../types/slack.types.js';
|
|
26
|
+
import { type IdentityCloudClient } from './slack-agent-identity.service.js';
|
|
27
|
+
/** Where the Slack tokens come from. */
|
|
28
|
+
export type SlackSourceMode = 'env' | 'cloud' | 'auto';
|
|
29
|
+
/** Constructor dependencies. */
|
|
30
|
+
export interface SlackCloudConfigServiceDeps {
|
|
31
|
+
cloud: IdentityCloudClient;
|
|
32
|
+
/** Cache path; defaults to `<CREWLY_HOME>/slack-cloud-config.json`. */
|
|
33
|
+
storePath?: string;
|
|
34
|
+
fetchImpl?: typeof fetch;
|
|
35
|
+
now?: () => number;
|
|
36
|
+
/** Timer overrides for tests. */
|
|
37
|
+
setInterval?: typeof setInterval;
|
|
38
|
+
clearInterval?: typeof clearInterval;
|
|
39
|
+
/** Environment override for tests. */
|
|
40
|
+
env?: NodeJS.ProcessEnv;
|
|
41
|
+
}
|
|
42
|
+
/** Listener for config changes (`null` = Cloud has no workspace any more). */
|
|
43
|
+
export type SlackCloudConfigListener = (config: SlackCloudConfig | null) => void;
|
|
44
|
+
/**
|
|
45
|
+
* Read `CREWLY_SLACK_SOURCE` into a mode. Anything but `env` / `cloud`
|
|
46
|
+
* (case-insensitive) is `auto`.
|
|
47
|
+
*
|
|
48
|
+
* @param env - Environment to read (defaults to `process.env`)
|
|
49
|
+
* @returns The mode
|
|
50
|
+
*/
|
|
51
|
+
export declare function resolveSlackSourceMode(env?: NodeJS.ProcessEnv): SlackSourceMode;
|
|
52
|
+
/**
|
|
53
|
+
* Service — see module docs.
|
|
54
|
+
*/
|
|
55
|
+
export declare class SlackCloudConfigService {
|
|
56
|
+
private readonly logger;
|
|
57
|
+
private readonly deps;
|
|
58
|
+
private readonly storePath;
|
|
59
|
+
private readonly fetchImpl;
|
|
60
|
+
private config;
|
|
61
|
+
private fetchedAt;
|
|
62
|
+
private loading;
|
|
63
|
+
private refreshTimer;
|
|
64
|
+
private lastError;
|
|
65
|
+
private readonly listeners;
|
|
66
|
+
constructor(deps: SlackCloudConfigServiceDeps);
|
|
67
|
+
/**
|
|
68
|
+
* Whether Cloud can be asked (signed in, url + token known) and the source
|
|
69
|
+
* mode does not forbid it.
|
|
70
|
+
*
|
|
71
|
+
* @returns True when `refresh()` can reach Cloud
|
|
72
|
+
*/
|
|
73
|
+
isAvailable(): boolean;
|
|
74
|
+
/**
|
|
75
|
+
* The configured source mode (`CREWLY_SLACK_SOURCE`).
|
|
76
|
+
*
|
|
77
|
+
* @returns `env`, `cloud` or `auto`
|
|
78
|
+
*/
|
|
79
|
+
getSourceMode(): SlackSourceMode;
|
|
80
|
+
/**
|
|
81
|
+
* Load the cached config from disk once. Never touches Cloud.
|
|
82
|
+
*
|
|
83
|
+
* @returns The cached config or null
|
|
84
|
+
*/
|
|
85
|
+
load(): Promise<SlackCloudConfig | null>;
|
|
86
|
+
/**
|
|
87
|
+
* Fetch `GET /api/cloud/slack/config`, update the cache and notify
|
|
88
|
+
* listeners when the config changed. A 404 means the account has no
|
|
89
|
+
* workspace installed: the cache is cleared. A network / Cloud failure
|
|
90
|
+
* keeps whatever is cached and is reported via {@link getLastError}.
|
|
91
|
+
*
|
|
92
|
+
* @returns The current config after the refresh (cached on failure)
|
|
93
|
+
*/
|
|
94
|
+
refresh(): Promise<SlackCloudConfig | null>;
|
|
95
|
+
/**
|
|
96
|
+
* Convenience for boot: cached copy first, then a Cloud refresh when
|
|
97
|
+
* possible. Returns the best available config.
|
|
98
|
+
*
|
|
99
|
+
* @returns The config or null
|
|
100
|
+
*/
|
|
101
|
+
loadOrRefresh(): Promise<SlackCloudConfig | null>;
|
|
102
|
+
/**
|
|
103
|
+
* Forget the cached config (workspace removed). Notifies listeners.
|
|
104
|
+
*/
|
|
105
|
+
clear(): Promise<void>;
|
|
106
|
+
/**
|
|
107
|
+
* Remove the account's Slack workspace on Cloud (`DELETE
|
|
108
|
+
* /api/cloud/slack/workspace`) and forget the local cache. Every instance
|
|
109
|
+
* of the account loses Slack on its next refresh.
|
|
110
|
+
*
|
|
111
|
+
* @returns True when Cloud removed a workspace
|
|
112
|
+
* @throws {SlackIdentityCloudError} on a Cloud failure
|
|
113
|
+
*/
|
|
114
|
+
removeWorkspace(): Promise<boolean>;
|
|
115
|
+
/**
|
|
116
|
+
* Periodic refresh (every 10 min). Idempotent; never keeps the process
|
|
117
|
+
* alive on its own.
|
|
118
|
+
*/
|
|
119
|
+
start(): void;
|
|
120
|
+
/** Stop the periodic refresh. */
|
|
121
|
+
stop(): void;
|
|
122
|
+
/**
|
|
123
|
+
* The in-memory config (call {@link load} / {@link refresh} first).
|
|
124
|
+
*
|
|
125
|
+
* @returns The config or null
|
|
126
|
+
*/
|
|
127
|
+
getConfig(): SlackCloudConfig | null;
|
|
128
|
+
/**
|
|
129
|
+
* ISO timestamp of the last successful Cloud fetch (or the cache's).
|
|
130
|
+
*
|
|
131
|
+
* @returns Timestamp or null
|
|
132
|
+
*/
|
|
133
|
+
getFetchedAt(): string | null;
|
|
134
|
+
/**
|
|
135
|
+
* Last refresh failure, if the most recent attempt failed.
|
|
136
|
+
*
|
|
137
|
+
* @returns Error message or null
|
|
138
|
+
*/
|
|
139
|
+
getLastError(): string | null;
|
|
140
|
+
/**
|
|
141
|
+
* The master workspace as a {@link SlackConfig} for `SlackService`
|
|
142
|
+
* (`transport: 'cloud'`, no socket credentials). Optional env knobs
|
|
143
|
+
* (`SLACK_DEFAULT_CHANNEL`, `SLACK_ALLOWED_USERS`) still apply.
|
|
144
|
+
*
|
|
145
|
+
* @returns The config, or null without a workspace
|
|
146
|
+
*/
|
|
147
|
+
toSlackConfig(): SlackConfig | null;
|
|
148
|
+
/**
|
|
149
|
+
* Installed per-agent identities from the config.
|
|
150
|
+
*
|
|
151
|
+
* @returns Copies (tokens included — never log them)
|
|
152
|
+
*/
|
|
153
|
+
getAgents(): SlackCloudAgentConfig[];
|
|
154
|
+
/**
|
|
155
|
+
* Register a change listener. Fired after the cache is written.
|
|
156
|
+
*
|
|
157
|
+
* @param listener - Called with the new config (null when removed)
|
|
158
|
+
* @returns Unsubscribe
|
|
159
|
+
*/
|
|
160
|
+
onChange(listener: SlackCloudConfigListener): () => void;
|
|
161
|
+
/** Persist + notify when the config differs from the current one. */
|
|
162
|
+
private apply;
|
|
163
|
+
/** `GET /api/cloud/slack/config`; null on 404 (not connected). */
|
|
164
|
+
private fetchFromCloud;
|
|
165
|
+
private now;
|
|
166
|
+
}
|
|
167
|
+
/**
|
|
168
|
+
* Runtime guard for the Cloud config payload.
|
|
169
|
+
*
|
|
170
|
+
* @param value - Parsed JSON
|
|
171
|
+
* @returns True when it has a workspace with a bot token and an agents list
|
|
172
|
+
*/
|
|
173
|
+
export declare function isCloudConfig(value: unknown): value is SlackCloudConfig;
|
|
174
|
+
/**
|
|
175
|
+
* Install the process-wide instance (composition root).
|
|
176
|
+
*
|
|
177
|
+
* @param service - The service or null
|
|
178
|
+
*/
|
|
179
|
+
export declare function setSlackCloudConfigService(service: SlackCloudConfigService | null): void;
|
|
180
|
+
/**
|
|
181
|
+
* The process-wide instance, or null before wiring.
|
|
182
|
+
*
|
|
183
|
+
* @returns The service or null
|
|
184
|
+
*/
|
|
185
|
+
export declare function getSlackCloudConfigService(): SlackCloudConfigService | null;
|
|
186
|
+
//# sourceMappingURL=slack-cloud-config.service.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"slack-cloud-config.service.d.ts","sourceRoot":"","sources":["../../../../../../backend/src/services/slack/slack-cloud-config.service.ts"],"names":[],"mappings":"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"}
|