crewly 1.11.5 → 1.12.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/config/skills/agent/onboarding/synthesize-hierarchy/SKILL.md +65 -0
- package/config/skills/agent/onboarding/synthesize-hierarchy/execute.sh +61 -0
- package/config/skills/agent/web-search/SKILL.md +70 -0
- package/config/skills/agent/web-search/execute.sh +170 -0
- package/config/skills/agent/web-search/skill.json +23 -0
- package/dist/backend/backend/src/constants.d.ts +34 -1
- package/dist/backend/backend/src/constants.d.ts.map +1 -1
- package/dist/backend/backend/src/constants.js +34 -1
- package/dist/backend/backend/src/constants.js.map +1 -1
- package/dist/backend/backend/src/controllers/cloud/cloud.controller.d.ts +22 -0
- package/dist/backend/backend/src/controllers/cloud/cloud.controller.d.ts.map +1 -1
- package/dist/backend/backend/src/controllers/cloud/cloud.controller.js +58 -0
- package/dist/backend/backend/src/controllers/cloud/cloud.controller.js.map +1 -1
- package/dist/backend/backend/src/controllers/cloud/cloud.routes.d.ts.map +1 -1
- package/dist/backend/backend/src/controllers/cloud/cloud.routes.js +3 -1
- package/dist/backend/backend/src/controllers/cloud/cloud.routes.js.map +1 -1
- package/dist/backend/backend/src/controllers/orchestrator-onboarding/orchestrator-onboarding.controller.d.ts +27 -0
- package/dist/backend/backend/src/controllers/orchestrator-onboarding/orchestrator-onboarding.controller.d.ts.map +1 -1
- package/dist/backend/backend/src/controllers/orchestrator-onboarding/orchestrator-onboarding.controller.js +108 -0
- package/dist/backend/backend/src/controllers/orchestrator-onboarding/orchestrator-onboarding.controller.js.map +1 -1
- package/dist/backend/backend/src/controllers/orchestrator-onboarding/orchestrator-onboarding.routes.d.ts +6 -2
- package/dist/backend/backend/src/controllers/orchestrator-onboarding/orchestrator-onboarding.routes.d.ts.map +1 -1
- package/dist/backend/backend/src/controllers/orchestrator-onboarding/orchestrator-onboarding.routes.js +9 -3
- package/dist/backend/backend/src/controllers/orchestrator-onboarding/orchestrator-onboarding.routes.js.map +1 -1
- package/dist/backend/backend/src/index.d.ts.map +1 -1
- package/dist/backend/backend/src/index.js +36 -2
- package/dist/backend/backend/src/index.js.map +1 -1
- package/dist/backend/backend/src/services/agent/crewly-agent/crewly-agent-external-runtime.service.d.ts +18 -0
- package/dist/backend/backend/src/services/agent/crewly-agent/crewly-agent-external-runtime.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/agent/crewly-agent/crewly-agent-external-runtime.service.js +24 -2
- package/dist/backend/backend/src/services/agent/crewly-agent/crewly-agent-external-runtime.service.js.map +1 -1
- package/dist/backend/backend/src/services/backup/backup-archive.service.d.ts +90 -0
- package/dist/backend/backend/src/services/backup/backup-archive.service.d.ts.map +1 -0
- package/dist/backend/backend/src/services/backup/backup-archive.service.js +309 -0
- package/dist/backend/backend/src/services/backup/backup-archive.service.js.map +1 -0
- package/dist/backend/backend/src/services/backup/backup-cloud.client.d.ts +75 -0
- package/dist/backend/backend/src/services/backup/backup-cloud.client.d.ts.map +1 -0
- package/dist/backend/backend/src/services/backup/backup-cloud.client.js +134 -0
- package/dist/backend/backend/src/services/backup/backup-cloud.client.js.map +1 -0
- package/dist/backend/backend/src/services/backup/backup-restore.service.d.ts +78 -0
- package/dist/backend/backend/src/services/backup/backup-restore.service.d.ts.map +1 -0
- package/dist/backend/backend/src/services/backup/backup-restore.service.js +358 -0
- package/dist/backend/backend/src/services/backup/backup-restore.service.js.map +1 -0
- package/dist/backend/backend/src/services/backup/backup.types.d.ts +163 -0
- package/dist/backend/backend/src/services/backup/backup.types.d.ts.map +1 -0
- package/dist/backend/backend/src/services/backup/backup.types.js +13 -0
- package/dist/backend/backend/src/services/backup/backup.types.js.map +1 -0
- package/dist/backend/backend/src/services/cloud/cloud-sync.service.d.ts +29 -2
- package/dist/backend/backend/src/services/cloud/cloud-sync.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/cloud/cloud-sync.service.js +97 -13
- package/dist/backend/backend/src/services/cloud/cloud-sync.service.js.map +1 -1
- package/dist/backend/backend/src/services/cloud/mobile-api-relay.service.d.ts +102 -0
- package/dist/backend/backend/src/services/cloud/mobile-api-relay.service.d.ts.map +1 -0
- package/dist/backend/backend/src/services/cloud/mobile-api-relay.service.js +164 -0
- package/dist/backend/backend/src/services/cloud/mobile-api-relay.service.js.map +1 -0
- package/dist/backend/backend/src/services/fission/fission-guard.service.d.ts +21 -0
- package/dist/backend/backend/src/services/fission/fission-guard.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/fission/fission-guard.service.js +30 -0
- package/dist/backend/backend/src/services/fission/fission-guard.service.js.map +1 -1
- package/dist/backend/backend/src/services/intent-task/intent-classifier.rules.d.ts +4 -0
- package/dist/backend/backend/src/services/intent-task/intent-classifier.rules.d.ts.map +1 -1
- package/dist/backend/backend/src/services/intent-task/intent-classifier.rules.js +8 -0
- package/dist/backend/backend/src/services/intent-task/intent-classifier.rules.js.map +1 -1
- package/dist/backend/backend/src/services/orchestrator/onboarding/materialize-team.d.ts +79 -58
- package/dist/backend/backend/src/services/orchestrator/onboarding/materialize-team.d.ts.map +1 -1
- package/dist/backend/backend/src/services/orchestrator/onboarding/materialize-team.js +140 -65
- package/dist/backend/backend/src/services/orchestrator/onboarding/materialize-team.js.map +1 -1
- package/dist/backend/backend/src/services/orchestrator/onboarding/synthesize-hierarchy.d.ts +117 -0
- package/dist/backend/backend/src/services/orchestrator/onboarding/synthesize-hierarchy.d.ts.map +1 -0
- package/dist/backend/backend/src/services/orchestrator/onboarding/synthesize-hierarchy.js +189 -0
- package/dist/backend/backend/src/services/orchestrator/onboarding/synthesize-hierarchy.js.map +1 -0
- package/dist/backend/backend/src/services/orchestrator/onboarding-mode-loader.d.ts.map +1 -1
- package/dist/backend/backend/src/services/orchestrator/onboarding-mode-loader.js +1 -0
- package/dist/backend/backend/src/services/orchestrator/onboarding-mode-loader.js.map +1 -1
- package/dist/backend/backend/src/services/orchestrator/onboarding-mode.skill-allowlist.d.ts.map +1 -1
- package/dist/backend/backend/src/services/orchestrator/onboarding-mode.skill-allowlist.js +2 -0
- package/dist/backend/backend/src/services/orchestrator/onboarding-mode.skill-allowlist.js.map +1 -1
- package/dist/backend/backend/src/services/orchestrator/prompts/onboarding-mode.prompt.d.ts.map +1 -1
- package/dist/backend/backend/src/services/orchestrator/prompts/onboarding-mode.prompt.js +17 -1
- package/dist/backend/backend/src/services/orchestrator/prompts/onboarding-mode.prompt.js.map +1 -1
- package/dist/backend/backend/src/services/reconciler/reconcile-rules.d.ts +50 -0
- package/dist/backend/backend/src/services/reconciler/reconcile-rules.d.ts.map +1 -1
- package/dist/backend/backend/src/services/reconciler/reconcile-rules.js +71 -0
- package/dist/backend/backend/src/services/reconciler/reconcile-rules.js.map +1 -1
- package/dist/backend/backend/src/services/reconciler/reconciler.service.d.ts +18 -0
- package/dist/backend/backend/src/services/reconciler/reconciler.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/reconciler/reconciler.service.js +75 -1
- package/dist/backend/backend/src/services/reconciler/reconciler.service.js.map +1 -1
- package/dist/backend/backend/src/services/session/pty/pty-session-backend.d.ts +115 -0
- package/dist/backend/backend/src/services/session/pty/pty-session-backend.d.ts.map +1 -1
- package/dist/backend/backend/src/services/session/pty/pty-session-backend.js +189 -3
- package/dist/backend/backend/src/services/session/pty/pty-session-backend.js.map +1 -1
- package/dist/backend/backend/src/services/session/pty/pty-session.d.ts +28 -0
- package/dist/backend/backend/src/services/session/pty/pty-session.d.ts.map +1 -1
- package/dist/backend/backend/src/services/session/pty/pty-session.js +61 -1
- package/dist/backend/backend/src/services/session/pty/pty-session.js.map +1 -1
- package/dist/backend/backend/src/services/template/template.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/template/template.service.js +67 -2
- package/dist/backend/backend/src/services/template/template.service.js.map +1 -1
- package/dist/backend/backend/src/services/v3/cascade-request-status.d.ts +19 -1
- package/dist/backend/backend/src/services/v3/cascade-request-status.d.ts.map +1 -1
- package/dist/backend/backend/src/services/v3/cascade-request-status.js +39 -2
- package/dist/backend/backend/src/services/v3/cascade-request-status.js.map +1 -1
- package/dist/backend/backend/src/services/v3/escalation-router.service.d.ts +41 -0
- package/dist/backend/backend/src/services/v3/escalation-router.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/v3/escalation-router.service.js +169 -0
- package/dist/backend/backend/src/services/v3/escalation-router.service.js.map +1 -1
- package/dist/backend/backend/src/services/v3/request-cascade.subscriber.d.ts +4 -1
- package/dist/backend/backend/src/services/v3/request-cascade.subscriber.d.ts.map +1 -1
- package/dist/backend/backend/src/services/v3/request-cascade.subscriber.js +21 -0
- package/dist/backend/backend/src/services/v3/request-cascade.subscriber.js.map +1 -1
- package/dist/backend/backend/src/types/intent-task.types.d.ts.map +1 -1
- package/dist/backend/backend/src/types/intent-task.types.js +8 -0
- package/dist/backend/backend/src/types/intent-task.types.js.map +1 -1
- package/dist/backend/backend/src/types/v2/request.types.d.ts +1 -1
- package/dist/backend/backend/src/types/v2/request.types.d.ts.map +1 -1
- package/dist/backend/backend/src/types/v2/request.types.js +1 -0
- package/dist/backend/backend/src/types/v2/request.types.js.map +1 -1
- package/dist/cli/backend/src/constants.d.ts +34 -1
- package/dist/cli/backend/src/constants.d.ts.map +1 -1
- package/dist/cli/backend/src/constants.js +34 -1
- package/dist/cli/backend/src/constants.js.map +1 -1
- package/dist/cli/backend/src/controllers/cloud/cloud-google-auth.controller.d.ts +70 -0
- package/dist/cli/backend/src/controllers/cloud/cloud-google-auth.controller.d.ts.map +1 -0
- package/dist/cli/backend/src/controllers/cloud/cloud-google-auth.controller.js +427 -0
- package/dist/cli/backend/src/controllers/cloud/cloud-google-auth.controller.js.map +1 -0
- package/dist/cli/backend/src/services/backup/backup-archive.service.d.ts +90 -0
- package/dist/cli/backend/src/services/backup/backup-archive.service.d.ts.map +1 -0
- package/dist/cli/backend/src/services/backup/backup-archive.service.js +309 -0
- package/dist/cli/backend/src/services/backup/backup-archive.service.js.map +1 -0
- package/dist/cli/backend/src/services/backup/backup-cloud.client.d.ts +75 -0
- package/dist/cli/backend/src/services/backup/backup-cloud.client.d.ts.map +1 -0
- package/dist/cli/backend/src/services/backup/backup-cloud.client.js +134 -0
- package/dist/cli/backend/src/services/backup/backup-cloud.client.js.map +1 -0
- package/dist/cli/backend/src/services/backup/backup-restore.service.d.ts +78 -0
- package/dist/cli/backend/src/services/backup/backup-restore.service.d.ts.map +1 -0
- package/dist/cli/backend/src/services/backup/backup-restore.service.js +358 -0
- package/dist/cli/backend/src/services/backup/backup-restore.service.js.map +1 -0
- package/dist/cli/backend/src/services/backup/backup.types.d.ts +163 -0
- package/dist/cli/backend/src/services/backup/backup.types.d.ts.map +1 -0
- package/dist/cli/backend/src/services/backup/backup.types.js +13 -0
- package/dist/cli/backend/src/services/backup/backup.types.js.map +1 -0
- package/dist/cli/backend/src/services/cloud/cloud-client.service.d.ts +410 -0
- package/dist/cli/backend/src/services/cloud/cloud-client.service.d.ts.map +1 -0
- package/dist/cli/backend/src/services/cloud/cloud-client.service.js +863 -0
- package/dist/cli/backend/src/services/cloud/cloud-client.service.js.map +1 -0
- package/dist/cli/backend/src/services/cloud/cloud-sync.service.d.ts +292 -0
- package/dist/cli/backend/src/services/cloud/cloud-sync.service.d.ts.map +1 -0
- package/dist/cli/backend/src/services/cloud/cloud-sync.service.js +1093 -0
- package/dist/cli/backend/src/services/cloud/cloud-sync.service.js.map +1 -0
- package/dist/cli/backend/src/services/cloud/cloud-sync.types.d.ts +328 -0
- package/dist/cli/backend/src/services/cloud/cloud-sync.types.d.ts.map +1 -0
- package/dist/cli/backend/src/services/cloud/cloud-sync.types.js +171 -0
- package/dist/cli/backend/src/services/cloud/cloud-sync.types.js.map +1 -0
- package/dist/cli/backend/src/services/cloud/device-identity.service.d.ts +89 -0
- package/dist/cli/backend/src/services/cloud/device-identity.service.d.ts.map +1 -0
- package/dist/cli/backend/src/services/cloud/device-identity.service.js +148 -0
- package/dist/cli/backend/src/services/cloud/device-identity.service.js.map +1 -0
- package/dist/cli/backend/src/services/user/user-identity.service.d.ts +86 -0
- package/dist/cli/backend/src/services/user/user-identity.service.d.ts.map +1 -0
- package/dist/cli/backend/src/services/user/user-identity.service.js +190 -0
- package/dist/cli/backend/src/services/user/user-identity.service.js.map +1 -0
- package/dist/cli/cli/src/commands/backup.d.ts +31 -0
- package/dist/cli/cli/src/commands/backup.d.ts.map +1 -0
- package/dist/cli/cli/src/commands/backup.js +280 -0
- package/dist/cli/cli/src/commands/backup.js.map +1 -0
- package/dist/cli/cli/src/index.js +10 -0
- package/dist/cli/cli/src/index.js.map +1 -1
- package/package.json +9 -3
- package/packages/crewly-agent/README.md +27 -0
- package/packages/crewly-agent/bin/crewly-agent +33 -0
- package/packages/crewly-agent/package.json +39 -0
- package/packages/crewly-agent/src/cli.ts +168 -0
- package/packages/crewly-agent/src/runtime/agent-runner.service.test.ts +2355 -0
- package/packages/crewly-agent/src/runtime/agent-runner.service.ts +1827 -0
- package/packages/crewly-agent/src/runtime/agent-stream.service.test.ts +153 -0
- package/packages/crewly-agent/src/runtime/agent-stream.service.ts +225 -0
- package/packages/crewly-agent/src/runtime/agent-worker.test.ts +171 -0
- package/packages/crewly-agent/src/runtime/agent-worker.ts +193 -0
- package/packages/crewly-agent/src/runtime/api-client.ts +143 -0
- package/packages/crewly-agent/src/runtime/approval-queue.service.ts +307 -0
- package/packages/crewly-agent/src/runtime/audit-log.service.test.ts +208 -0
- package/packages/crewly-agent/src/runtime/audit-log.service.ts +332 -0
- package/packages/crewly-agent/src/runtime/audit-trail.service.test.ts +178 -0
- package/packages/crewly-agent/src/runtime/audit-trail.service.ts +151 -0
- package/packages/crewly-agent/src/runtime/auditor-tools.test.ts +274 -0
- package/packages/crewly-agent/src/runtime/auditor-tools.ts +311 -0
- package/packages/crewly-agent/src/runtime/cloud-config.ts +67 -0
- package/packages/crewly-agent/src/runtime/deepseek-sse-transform.test.ts +165 -0
- package/packages/crewly-agent/src/runtime/deepseek-sse-transform.ts +168 -0
- package/packages/crewly-agent/src/runtime/env-isolation.service.ts +246 -0
- package/packages/crewly-agent/src/runtime/in-process-log-buffer.test.ts +280 -0
- package/packages/crewly-agent/src/runtime/in-process-log-buffer.ts +317 -0
- package/packages/crewly-agent/src/runtime/index.ts +38 -0
- package/packages/crewly-agent/src/runtime/mcp-tool-bridge.test.ts +352 -0
- package/packages/crewly-agent/src/runtime/mcp-tool-bridge.ts +244 -0
- package/packages/crewly-agent/src/runtime/model-manager.test.ts +326 -0
- package/packages/crewly-agent/src/runtime/model-manager.ts +363 -0
- package/packages/crewly-agent/src/runtime/output-filter.service.ts +175 -0
- package/packages/crewly-agent/src/runtime/prompt-guard.service.ts +303 -0
- package/packages/crewly-agent/src/runtime/rate-limiter.test.ts +228 -0
- package/packages/crewly-agent/src/runtime/rate-limiter.ts +353 -0
- package/packages/crewly-agent/src/runtime/tool-registry.test.ts +2510 -0
- package/packages/crewly-agent/src/runtime/tool-registry.ts +2104 -0
- package/packages/crewly-agent/src/runtime/types.test.ts +519 -0
- package/packages/crewly-agent/src/runtime/types.ts +637 -0
- package/packages/crewly-agent/src/runtime/web-search.tool.test.ts +131 -0
- package/packages/crewly-agent/src/runtime/web-search.tool.ts +140 -0
|
@@ -170,6 +170,18 @@ export const PTY_CONSTANTS = {
|
|
|
170
170
|
MIN_MEANINGFUL_OUTPUT_BYTES: 8,
|
|
171
171
|
/** Minimum time (ms) an agent must remain in_progress before emitting busy/idle events */
|
|
172
172
|
MIN_BUSY_DURATION_MS: 10000,
|
|
173
|
+
/**
|
|
174
|
+
* Cadence of the orphan-PTY reaper sweep (ms).
|
|
175
|
+
*
|
|
176
|
+
* The reaper walks the live sessionName→PtySession registry and tears down
|
|
177
|
+
* any PTY whose owning session is no longer active (killed, exited, or whose
|
|
178
|
+
* child shell has died) but which was never routed through centralized
|
|
179
|
+
* teardown — a defensive backstop against `/dev/ptmx` + `/dev/ttysNNN` FD
|
|
180
|
+
* accumulation (the 6-day backend that leaked 319 orphaned master FDs).
|
|
181
|
+
* 5 minutes is frequent enough to bound leakage well under the open-file
|
|
182
|
+
* ceiling yet cheap (an O(n) walk over a handful of sessions).
|
|
183
|
+
*/
|
|
184
|
+
ORPHAN_REAPER_INTERVAL_MS: 5 * 60 * 1000,
|
|
173
185
|
};
|
|
174
186
|
// Session command timing delays (in milliseconds)
|
|
175
187
|
export const SESSION_COMMAND_DELAYS = {
|
|
@@ -1187,8 +1199,29 @@ export const CLOUD_CONSTANTS = {
|
|
|
1187
1199
|
export const CLOUD_SYNC_CONSTANTS = {
|
|
1188
1200
|
/** Interval between heartbeat uploads (ms) */
|
|
1189
1201
|
HEARTBEAT_INTERVAL_MS: 30_000,
|
|
1190
|
-
/**
|
|
1202
|
+
/**
|
|
1203
|
+
* Idle interval between message poll requests (ms). Used as the gap when
|
|
1204
|
+
* long-poll is disabled (`MESSAGE_LONGPOLL_WAIT_MS = 0`), after a poll
|
|
1205
|
+
* error, or as the auto-degrade fallback when the relay returns a held
|
|
1206
|
+
* long-poll near-instantly (i.e. it doesn't support `wait=`).
|
|
1207
|
+
*/
|
|
1191
1208
|
MESSAGE_POLL_INTERVAL_MS: 5_000,
|
|
1209
|
+
/**
|
|
1210
|
+
* Long-poll hold time (ms) sent to the relay as `?wait=`. The relay holds
|
|
1211
|
+
* `/queue/poll` open until a message arrives (or this deadline), so the OSS
|
|
1212
|
+
* picks up Portal `chat_request`s near-instantly instead of on the old 5s
|
|
1213
|
+
* tick. Set to 0 to disable and fall back to fixed-interval polling. Kept
|
|
1214
|
+
* under the relay's own 25s ceiling.
|
|
1215
|
+
*/
|
|
1216
|
+
MESSAGE_LONGPOLL_WAIT_MS: 20_000,
|
|
1217
|
+
/**
|
|
1218
|
+
* HTTP request timeout (ms) for the long-poll message fetch. MUST exceed
|
|
1219
|
+
* {@link MESSAGE_LONGPOLL_WAIT_MS} so the client doesn't abort the held
|
|
1220
|
+
* connection before the relay's deadline returns it.
|
|
1221
|
+
*/
|
|
1222
|
+
MESSAGE_LONGPOLL_TIMEOUT_MS: 30_000,
|
|
1223
|
+
/** Gap (ms) before re-opening the next long-poll after one returns. */
|
|
1224
|
+
MESSAGE_LONGPOLL_GAP_MS: 100,
|
|
1192
1225
|
/** Interval between device list poll requests (ms) */
|
|
1193
1226
|
DEVICE_POLL_INTERVAL_MS: 30_000,
|
|
1194
1227
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../../backend/src/constants.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,0DAA0D;AAC1D,OAAO,EACL,gBAAgB,IAAI,uBAAuB,EAC3C,wBAAwB,IAAI,+BAA+B,EAC3D,gBAAgB,IAAI,uBAAuB,EAC3C,gBAAgB,IAAI,uBAAuB,EAC3C,sBAAsB,IAAI,6BAA6B,EACvD,8BAA8B,IAAI,qCAAqC,EACvE,uBAAuB,IAAI,8BAA8B,EACzD,uBAAuB,IAAI,8BAA8B,EACzD,iCAAiC,IAAI,wCAAwC,EAC7E,gCAAgC,IAAI,uCAAuC,EAC3E,qBAAqB,IAAI,4BAA4B,EACrD,8BAA8B,IAAI,qCAAqC,EACvE,eAAe,IAAI,sBAAsB,EACzC,iBAAiB,IAAI,wBAAwB,EAC7C,kBAAkB,IAAI,yBAAyB,EAC/C,aAAa,IAAI,oBAAoB,GACtC,MAAM,2BAA2B,CAAC;AAEnC,uDAAuD;AACvD,MAAM,CAAC,MAAM,kBAAkB,GAAG,yBAAyB,CAAC;AAC5D,MAAM,CAAC,MAAM,wBAAwB,GAAG,+BAA+B,CAAC;AACxE,MAAM,CAAC,MAAM,gBAAgB,GAAG,uBAAuB,CAAC;AACxD,MAAM,CAAC,MAAM,gBAAgB,GAAG,uBAAuB,CAAC;AACxD,MAAM,CAAC,MAAM,sBAAsB,GAAG,6BAA6B,CAAC;AACpE,MAAM,CAAC,MAAM,8BAA8B,GAAG,qCAAqC,CAAC;AACpF,MAAM,CAAC,MAAM,uBAAuB,GAAG,8BAA8B,CAAC;AACtE,MAAM,CAAC,MAAM,uBAAuB,GAAG,8BAA8B,CAAC;AACtE,MAAM,CAAC,MAAM,iCAAiC,GAAG,wCAAwC,CAAC;AAC1F,MAAM,CAAC,MAAM,gCAAgC,GAAG,uCAAuC,CAAC;AACxF,MAAM,CAAC,MAAM,aAAa,GAAG,oBAAoB,CAAC;AAClD,MAAM,CAAC,MAAM,eAAe,GAAG,sBAAsB,CAAC;AACtD,MAAM,CAAC,MAAM,iBAAiB,GAAG,wBAAwB,CAAC;AAE1D,2EAA2E;AAC3E,MAAM,CAAC,MAAM,yBAAyB,GAAG,uBAAuB,CAAC,QAAQ,CAAC,iBAAiB,CAAC;AAC5F,MAAM,CAAC,MAAM,iBAAiB,GAAG,cAAc,CAAC;AAChD,MAAM,CAAC,MAAM,wBAAwB,GAAG,qBAAqB,CAAC;AAC9D,MAAM,CAAC,MAAM,4BAA4B,GAAG,KAAK,CAAC;AAClD,MAAM,CAAC,MAAM,6BAA6B,GAAG,KAAK,CAAC;AAEnD,gEAAgE;AAChE,MAAM,CAAC,MAAM,gBAAgB,GAAG;IAC/B,GAAG,uBAAuB;IAC1B,8BAA8B;IAC9B,YAAY,EAAE;QACb,MAAM,EAAE,sBAAsB;KAC9B;CACQ,CAAC;AAEX,mFAAmF;AACnF,MAAM,CAAC,MAAM,aAAa,GAAG;IAC5B,sEAAsE;IACtE,mBAAmB,EAAE,qBAAqB;IAC1C,WAAW,EAAE,aAAa;IAC1B,6EAA6E;IAC7E,cAAc,EAAE,gBAAgB;IAChC,0DAA0D;IAC1D,cAAc,EAAE,gBAAgB;IAChC,qEAAqE;IACrE,mBAAmB,EAAE,qBAAqB;IAC1C,sDAAsD;IACtD,4BAA4B,EAAE,8BAA8B;IAC5D,4FAA4F;IAC5F,kBAAkB,EAAE,oBAAoB;CAC/B,CAAC;AAEX,kDAAkD;AAClD,MAAM,CAAC,MAAM,cAAc,GAAG;IAC7B,2BAA2B,EAAE,MAAM,EAAE,6BAA6B;IAClE,4BAA4B,EAAE,KAAK,EAAE,gCAAgC;IACrE,sFAAsF;IACtF,0BAA0B,EAAE,MAAM,EAAE,mCAAmC;IACvE,sGAAsG;IACtG,iBAAiB,EAAE,MAAM,EAAE,YAAY;CAC9B,CAAC;AAEX,mEAAmE;AACnE,MAAM,CAAC,MAAM,wBAAwB,GAAG;IACvC,6DAA6D;IAC7D,OAAO,EAAE,aAAa;IACtB,iEAAiE;IACjE,kBAAkB,EAAE,KAAK;IACzB;;;OAGG;IACH,gGAAgG;IAChG,iBAAiB,EAAE,EAAE;IACrB,kFAAkF;IAClF,kBAAkB,EAAE,EAAE;IACtB,iGAAiG;IACjG,oBAAoB,EAAE,EAAE;IACxB,6DAA6D;IAC7D,iBAAiB,EAAE,CAAC,GAAG,EAAE,GAAG,IAAI;IAChC,kFAAkF;IAClF,uBAAuB,EAAE,KAAK;CACrB,CAAC;AAEX;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG;IACtC;;sCAEkC;IAClC,iBAAiB,EAAE,MAAM;IACzB;;;yEAGqE;IACrE,wBAAwB,EAAE,CAAC,GAAG,MAAM;IACpC;;;;;;4EAMwE;IACxE,+BAA+B,EAAE,CAAC;IAClC;;;;;;;;;;OAUG;IACH,yBAAyB,EAAE,MAAM;CACxB,CAAC;AAEX,sBAAsB;AACtB,MAAM,CAAC,MAAM,aAAa,GAAG;IAC5B,WAAW,EAAE,aAAa;IAC1B,UAAU,EAAE,YAAY;IACxB,SAAS,EAAE,WAAW;IACtB,YAAY,EAAE,cAAc;CACnB,CAAC;AAEX;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,4BAA4B,GAAG,cAAuB,CAAC;AAEpE;;;;;;;;;;GAUG;AACH,MAAM,CAAC,MAAM,6BAA6B,GAAG,CAAC,yBAAyB,CAAU,CAAC;AAElF,+GAA+G;AAC/G,MAAM,CAAC,MAAM,8BAA8B,GAAG,CAAC,mBAAmB,EAAE,eAAe,EAAE,cAAc,CAAU,CAAC;AAE9G,wBAAwB;AACxB,MAAM,CAAC,MAAM,aAAa,GAAG;IAC5B,kBAAkB,EAAE,GAAG;IACvB,kBAAkB,EAAE,EAAE;IACtB,wBAAwB,EAAE,EAAE,GAAG,IAAI,GAAG,IAAI,EAAE,OAAO;IACnD,kBAAkB,EAAE,IAAI;IACxB,YAAY,EAAE,EAAE;IAChB,YAAY,EAAE,EAAE;IAChB,eAAe,EAAE,IAAI;IACrB,eAAe,EAAE,IAAI;IACrB,wEAAwE;IACxE,2BAA2B,EAAE,GAAG;IAChC,8EAA8E;IAC9E,8BAA8B,EAAE,IAAI;IACpC;;;uDAGmD;IACnD,2BAA2B,EAAE,CAAC;IAC9B,0FAA0F;IAC1F,oBAAoB,EAAE,KAAK;CAClB,CAAC;AAEX,kDAAkD;AAClD,MAAM,CAAC,MAAM,sBAAsB,GAAG;IACrC,iFAAiF;IACjF,aAAa,EAAE,IAAI;IACnB,6DAA6D;IAC7D,SAAS,EAAE,GAAG;IACd,mEAAmE;IACnE,mBAAmB,EAAE,GAAG;IACxB,+CAA+C;IAC/C,aAAa,EAAE,GAAG;IAClB,0DAA0D;IAC1D,qBAAqB,EAAE,GAAG;IAC1B,oDAAoD;IACpD,mBAAmB,EAAE,IAAI;IACzB,8EAA8E;IAC9E,wBAAwB,EAAE,GAAG;IAC7B,8GAA8G;IAC9G,4BAA4B,EAAE,IAAI;IAClC;6EACyE;IACzE,6BAA6B,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAU;CACjD,CAAC;AAEX,gCAAgC;AAChC,MAAM,CAAC,MAAM,6BAA6B,GAAG;IAC5C,qBAAqB,EAAE,EAAE;IACzB,iBAAiB,EAAE,GAAG;IACtB,eAAe,EAAE,MAAM,EAAE,+BAA+B;CAC/C,CAAC;AAEX,+EAA+E;AAC/E,MAAM,CAAC,MAAM,0BAA0B,GAAG;IACzC,0DAA0D;IAC1D,eAAe,EAAE,GAAG,GAAG,IAAI;IAC3B,0DAA0D;IAC1D,qBAAqB,EAAE,IAAI;IAC3B;;;;;;;;;;;;;;OAcG;IACH,4BAA4B,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAsB;CACtE,CAAC;AAEX,uFAAuF;AACvF,MAAM,CAAC,MAAM,sBAAsB,GAAG;IACrC,6CAA6C;IAC7C,cAAc,EAAE,MAAM;IACtB,+EAA+E;IAC/E,kBAAkB,EAAE,OAAO;CAClB,CAAC;AAEX;;;;GAIG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG;IAC/B,0CAA0C;IAC1C,QAAQ,EAAE,UAAU;IACpB,4BAA4B;IAC5B,SAAS,EAAE,WAAW;CACb,CAAC;AAEX;;;;GAIG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG;IACrC,0CAA0C;IAC1C,QAAQ,EAAE,gBAAgB;IAC1B,4BAA4B;IAC5B,SAAS,EAAE,iBAAiB;CACnB,CAAC;AAEX,0CAA0C;AAC1C,MAAM,CAAC,MAAM,wBAAwB,GAAG;IACvC,oDAAoD;IACpD,wBAAwB,EAAE,KAAK;IAC/B,yDAAyD;IACzD,6BAA6B,EAAE,IAAI;IACnC,2DAA2D;IAC3D,sBAAsB,EAAE,KAAK;IAC7B,gDAAgD;IAChD,uBAAuB,EAAE,KAAK;IAC9B,6DAA6D;IAC7D,qBAAqB,EAAE,GAAG;IAC1B,+DAA+D;IAC/D,iBAAiB,EAAE,IAAI;IACvB,kDAAkD;IAClD,iBAAiB,EAAE,GAAG;IACtB,iDAAiD;IACjD,iBAAiB,EAAE,CAAC;IACpB,wFAAwF;IACxF,6BAA6B,EAAE,GAAG;IAClC,iEAAiE;IACjE,eAAe,EAAE,KAAK;IACtB,mEAAmE;IACnE,mCAAmC,EAAE,EAAE;IACvC,6EAA6E;IAC7E,mBAAmB,EAAE,MAAM;IAC3B,uFAAuF;IACvF,oBAAoB,EAAE,KAAK;IAC3B,iFAAiF;IACjF,0BAA0B,EAAE,IAAI;IAChC;;gFAE4E;IAC5E,oBAAoB,EAAE,KAAK;IAC3B;;sFAEkF;IAClF,0BAA0B,EAAE,IAAI;IAChC,uDAAuD;IACvD,yBAAyB,EAAE,IAAI;IAC/B,0FAA0F;IAC1F,kBAAkB,EAAE,IAAI;IACxB,gEAAgE;IAChE,eAAe,EAAE,GAAG;IACpB,wFAAwF;IACxF,sBAAsB,EAAE,GAAG;IAC3B,2FAA2F;IAC3F,uBAAuB,EAAE,CAAC;IAC1B,wFAAwF;IACxF,kBAAkB,EAAE,OAAO;CAClB,CAAC;AAEX;;;GAGG;AACH,MAAM,CAAC,MAAM,6BAA6B,GAAG;IAC5C,sFAAsF;IACtF,iBAAiB,EAAE,IAAI;CACd,CAAC;AAEX;;;GAGG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG;IAChC;;;;OAIG;IACH,UAAU,EAAE,uBAAuB;IAEnC;;;OAGG;IACH,eAAe,EAAE,eAAe;IAEhC;;OAEG;IACH,WAAW,EAAE,kCAAkC;IAE/C;;;OAGG;IACH,YAAY,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAU;CAC5C,CAAC;AAEX;;;;;;GAMG;AACH,OAAO,EAAE,kBAAkB,IAAI,0BAA0B,EAAE,MAAM,sDAAsD,CAAC;AAExH;;;GAGG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG;IACtC,sDAAsD;IACtD,cAAc,EAAE,GAAG;IACnB,yDAAyD;IACzD,uBAAuB,EAAE,MAAM;IAC/B,sEAAsE;IACtE,gBAAgB,EAAE,EAAE;IACpB,yDAAyD;IACzD,mBAAmB,EAAE,GAAG;IACxB,6EAA6E;IAC7E,mBAAmB,EAAE,CAAC;IACtB,sEAAsE;IACtE,sBAAsB,EAAE,GAAG;IAC3B,wEAAwE;IACxE,+BAA+B,EAAE,KAAK;IACtC;yEACqE;IACrE,yBAAyB,EAAE,EAAE;IAC7B,6DAA6D;IAC7D,gBAAgB,EAAE,oBAAoB;IACtC,uCAAuC;IACvC,eAAe,EAAE,OAAO;IACxB,qDAAqD;IACrD,aAAa,EAAE;QACd,6CAA6C;QAC7C,gBAAgB,EAAE,wBAAwB;QAC1C,+CAA+C;QAC/C,kBAAkB,EAAE,0BAA0B;QAC9C,0CAA0C;QAC1C,iBAAiB,EAAE,yBAAyB;QAC5C,mCAAmC;QACnC,cAAc,EAAE,sBAAsB;QACtC,0CAA0C;QAC1C,iBAAiB,EAAE,yBAAyB;QAC5C,4CAA4C;QAC5C,aAAa,EAAE,qBAAqB;KACpC;CACQ,CAAC;AAEX;;;;GAIG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAAG;IACvC,6EAA6E;IAC7E,oBAAoB,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI;IACzC;qFACiF;IACjF,uBAAuB,EAAE,MAAM;IAC/B,qEAAqE;IACrE,gBAAgB,EAAE,EAAE;IACpB,mEAAmE;IACnE,aAAa,EAAE,YAAY;CAClB,CAAC;AAEX;;;GAGG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG;IACtC,0DAA0D;IAC1D,YAAY,EAAE,0BAA0B;IACxC,iFAAiF;IACjF,WAAW,EAAE,GAAG;IAChB,2EAA2E;IAC3E,qBAAqB,EAAE,EAAE;IACzB,oEAAoE;IACpE,uBAAuB,EAAE,EAAE;IAC3B,2DAA2D;IAC3D,mBAAmB,EAAE,GAAG;IACxB,iEAAiE;IACjE,eAAe,EAAE,CAAC;IAClB,mEAAmE;IACnE,kBAAkB,EAAE,GAAG;IACvB,wEAAwE;IACxE,kBAAkB,EAAE,CAAC,aAAa,EAAE,YAAY,EAAE,eAAe,EAAE,cAAc,CAAC;IAClF,yEAAyE;IACzE,iBAAiB,EAAE,CAAC,GAAG,EAAE,gBAAgB,EAAE,WAAW,EAAE,mBAAmB,CAAC;CACnE,CAAC;AAEX;;;GAGG;AACH,MAAM,CAAC,MAAM,0BAA0B,GAAG;IACzC;;kEAE8D;IAC9D,mBAAmB,EAAE,KAAK;IAC1B;;2DAEuD;IACvD,kBAAkB,EAAE,OAAO;CAClB,CAAC;AAEX;;;GAGG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG;IAClC;;mFAE+E;IAC/E,wBAAwB,EAAE,IAAI;IAC9B;;oFAEgF;IAChF,iBAAiB,EAAE,MAAM;IACzB;sFACkF;IAClF,gCAAgC,EAAE,GAAG;IACrC,6DAA6D;IAC7D,4BAA4B,EAAE,IAAI;IAClC,mDAAmD;IACnD,6BAA6B,EAAE,EAAE;IACjC,sDAAsD;IACtD,uBAAuB,EAAE,GAAG;IAC5B,0DAA0D;IAC1D,gBAAgB,EAAE,KAAK;IACvB,uEAAuE;IACvE,oBAAoB,EAAE,OAAO;IAC7B,iEAAiE;IACjE,2BAA2B,EAAE,GAAG;CACvB,CAAC;AAEX;;;;GAIG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG;IACrC,wDAAwD;IACxD,WAAW,EAAE,eAAe;IAC5B,4DAA4D;IAC5D,gBAAgB,EAAE,kBAAkB;IACpC,mDAAmD;IACnD,cAAc,EAAE,KAAK;IACrB,4DAA4D;IAC5D,iBAAiB,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI;CAClC,CAAC;AAEX;;;GAGG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG;IACrC,wDAAwD;IACxD,WAAW,EAAE,eAAe;IAC5B,mDAAmD;IACnD,cAAc,EAAE,KAAK;IACrB,4EAA4E;IAC5E,oBAAoB,EAAE,EAAE;CACf,CAAC;AAEX;;;;GAIG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG;IACrC,6EAA6E;IAC7E,sBAAsB,EAAE,MAAM;CACrB,CAAC;AAEX;;;GAGG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG;IACtC,yEAAyE;IACzE,uBAAuB,EAAE,GAAG;CACnB,CAAC;AAEX;;;;GAIG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG;IACpC,oFAAoF;IACpF,eAAe,EAAE,MAAM;IACvB,gEAAgE;IAChE,oBAAoB,EAAE,GAAG;CAChB,CAAC;AAEX;;;;GAIG;AACH,MAAM,CAAC,MAAM,+BAA+B,GAAG;IAC9C,uDAAuD;IACvD,0BAA0B,EAAE,CAAC,GAAG,EAAE,GAAG,IAAI;IACzC,wEAAwE;IACxE,kBAAkB,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI;IACvC,mEAAmE;IACnE,qBAAqB,EAAE,CAAC;IACxB,uEAAuE;IACvE,gBAAgB,EAAE,EAAE,GAAG,IAAI;CAClB,CAAC;AAEX;;;GAGG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG;IACtC,wEAAwE;IACxE,uBAAuB,EAAE,IAAI;IAC7B,6DAA6D;IAC7D,uBAAuB,EAAE,KAAK;CACrB,CAAC;AAEX;;;;;GAKG;AACH,MAAM,CAAC,MAAM,2BAA2B,GAAG;IAC1C;;;;OAIG;IACH,0BAA0B,EAAE;QAC3B,iBAAiB,EAAO,mCAAmC;QAC3D,eAAe,EAAS,qDAAqD;KACpE;IACV,8DAA8D;IAC9D,eAAe,EAAE,GAAG;IACpB,0CAA0C;IAC1C,mBAAmB,EAAE,CAAC;CACb,CAAC;AAEX;;;;;GAKG;AACH,MAAM,CAAC,MAAM,8BAA8B,GAAG;IAC7C,iEAAiE;IACjE,WAAW,EAAE,CAAC;IACd,sDAAsD;IACtD,kBAAkB,EAAE,KAAK;IACzB,qCAAqC;IACrC,cAAc,EAAE,MAAM;IACtB,mCAAmC;IACnC,kBAAkB,EAAE,CAAC;IACrB,qEAAqE;IACrE,oBAAoB,EAAE,EAAE;CACf,CAAC;AAEX;;;;;GAKG;AACH,MAAM,CAAC,MAAM,iCAAiC,GAAG,wCAAwC,CAAC;AAE1F;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAa;IAChD,mBAAmB;IACnB,oBAAoB;IACpB,aAAa;IACb,kBAAkB;IAClB,oBAAoB;IACpB,mBAAmB;IACnB,mBAAmB;IACnB,iBAAiB;IACjB,wBAAwB;IACxB,yBAAyB;IACzB,iCAAiC;CACjC,CAAC;AAEF;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,2BAA2B,GAAG,wDAAwD,CAAC;AAEpG;+DAC+D;AAC/D,MAAM,CAAC,MAAM,6BAA6B,GAAG,CAAC,CAAC;AAE/C;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,8BAA8B,GAAG,6GAA6G,CAAC;AAE5J;wCACwC;AACxC,MAAM,CAAC,MAAM,gCAAgC,GAAG,CAAC,CAAC;AAElD;oFACoF;AACpF,MAAM,CAAC,MAAM,gCAAgC,GAAG,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC,YAAY;AAE3E;;;GAGG;AACH,MAAM,CAAC,MAAM,6BAA6B,GAAa;IACtD,+BAA+B;IAC/B,yCAAyC;IACzC,sDAAsD;IACtD,+DAA+D;IAC/D,sEAAsE;IACtE,0BAA0B;CAC1B,CAAC;AAEF;;;;;;;;;;GAUG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAa;IAC9C,qFAAqF;IACrF,uCAAuC;IACvC,uDAAuD;IACvD,gDAAgD;CAChD,CAAC;AAEF;;;;;GAKG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAsB;IACvD,mBAAmB;IACnB,YAAY;IACZ,SAAS;IACT,iBAAiB;IACjB,cAAc;IACd,eAAe;CACN,CAAC;AAEX;;;;;;;;;;;;;GAaG;AACH,MAAM,CAAC,MAAM,4BAA4B,GAAG;IAC3C,8DAA8D;IAC9D,YAAY,EAAE,QAAQ;IACtB;;;;OAIG;IACH,mBAAmB,EAAE,mBAAmB;IACxC;;;;OAIG;IACH,iBAAiB,EAAE,CAAC;CACX,CAAC;AAEX;;;GAGG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG;IACrC,8DAA8D;IAC9D,eAAe,EAAE,IAAI;IACrB,qEAAqE;IACrE,qBAAqB,EAAE,GAAG;IAC1B;;;;;OAKG;IACH,uBAAuB,EAAE,CAAC;IAC1B;;;;;;OAMG;IACH,4BAA4B,EAAE,OAAO;IACrC;;;;OAIG;IACH,wBAAwB,EAAE,MAAM;IAChC;;;;OAIG;IACH,4BAA4B,EAAE,MAAM;CAC3B,CAAC;AAEX;;;;GAIG;AACH,MAAM,CAAC,MAAM,gCAAgC,GAAG;IAC/C,6DAA6D;IAC7D,iBAAiB,EAAE,MAAM;IACzB,6DAA6D;IAC7D,wBAAwB,EAAE,EAAE;IAC5B,yDAAyD;IACzD,qBAAqB,EAAE,EAAE;IACzB,8EAA8E;IAC9E,0BAA0B,EAAE,EAAE;IAC9B;;;;OAIG;IACH,qBAAqB,EAAE,KAAK;IAC5B,2DAA2D;IAC3D,yBAAyB,EAAE,CAAC;IAC5B,8DAA8D;IAC9D,kBAAkB,EAAE,EAAE,GAAG,EAAE,GAAG,IAAI;IAClC,wEAAwE;IACxE,uBAAuB,EAAE,MAAM;IAC/B,yDAAyD;IACzD,eAAe,EAAE,IAAI;IACrB,kEAAkE;IAClE,4BAA4B,EAAE,CAAC,GAAG,EAAE,GAAG,IAAI;IAC3C,6EAA6E;IAC7E,eAAe,EAAE,OAAO;IACxB,sEAAsE;IACtE,oBAAoB,EAAE,CAAC;IACvB,mEAAmE;IACnE,yBAAyB,EAAE,MAAM;IACjC,qFAAqF;IACrF,iCAAiC,EAAE,OAAO;IAC1C,2EAA2E;IAC3E,6BAA6B,EAAE,OAAO;CAC7B,CAAC;AAEX;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAAgC;IACpE,aAAa,EAAE,UAAU;IACzB,YAAY,EAAE,WAAW;IACzB,WAAW,EAAE,UAAU;IACvB,cAAc,EAAE,EAAE;CACT,CAAC;AAEX;;;;GAIG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG;IACtC,yDAAyD;IACzD,eAAe,EAAE,IAAI;IACrB,oEAAoE;IACpE,mBAAmB,EAAE,OAAO;IAC5B,qEAAqE;IACrE,uBAAuB,EAAE,MAAM;IAC/B,wEAAwE;IACxE,qBAAqB,EAAE,KAAK;IAC5B,mEAAmE;IACnE,uBAAuB,EAAE,CAAC;IAC1B,kEAAkE;IAClE,iBAAiB,EAAE,OAAO;IAC1B,oEAAoE;IACpE,oBAAoB,EAAE,GAAG;IACzB,iFAAiF;IACjF,sBAAsB,EAAE,MAAM;IAC9B,mFAAmF;IACnF,uBAAuB,EAAE,IAAI;CACpB,CAAC;AAEX;;;;;GAKG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAAe;IACnD,CAAC,sBAAsB,EAAE,yBAAyB,CAAC;IACnD,CAAC,sBAAsB,EAAE,qBAAqB,CAAC;IAC/C,CAAC,KAAK,EAAE,yBAAyB,CAAC;IAClC,CAAC,iBAAiB,EAAE,yBAAyB,CAAC;IAC9C,CAAC,sBAAsB,EAAE,oCAAoC,CAAC;IAC9D,CAAC,KAAK,EAAE,oCAAoC,CAAC;CAC7C,CAAC;AAEF;;;;GAIG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAAG;IACxC,wDAAwD;IACxD,cAAc,EAAE,EAAE;IAClB,0DAA0D;IAC1D,yBAAyB,EAAE,IAAI;CACtB,CAAC;AAEX;;;;GAIG;AACH,MAAM,CAAC,MAAM,+BAA+B,GAAG;IAC9C,gDAAgD;IAChD,aAAa,EAAE,KAAK,EAAE,WAAW;IACjC,gEAAgE;IAChE,cAAc,EAAE,MAAM,EAAE,aAAa;IACrC,uCAAuC;IACvC,UAAU,EAAE;QACX,YAAY,EAAE,EAAE,EAAM,WAAW;QACjC,aAAa,EAAE,EAAE,EAAK,WAAW;QACjC,cAAc,EAAE,EAAE,EAAI,WAAW;QACjC,eAAe,EAAE,EAAE,EAAG,WAAW;QACjC,WAAW,EAAE,EAAE,EAAO,wBAAwB;QAC9C,YAAY,EAAE,EAAE,EAAM,wBAAwB;KAC9C;CACQ,CAAC;AAEX;;GAEG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG;IAC/B,sDAAsD;IACtD,aAAa,EAAE,EAAE,GAAG,IAAI,GAAG,IAAI;IAC/B,mEAAmE;IACnE,kBAAkB,EAAE,CAAC;IACrB,uEAAuE;IACvE,yBAAyB,EAAE,IAAI;CACtB,CAAC;AAEX;;;;GAIG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG;IACpC,oEAAoE;IACpE,QAAQ,EAAE,kBAAkB;IAC5B,4DAA4D;IAC5D,aAAa,EAAE,gBAAgB,CAAC,aAAa;IAC7C,+FAA+F;IAC/F,eAAe,EAAE,CAAC,WAAW,EAAE,YAAY,EAAE,WAAW,EAAE,YAAY,CAAU;IAChF;;;OAGG;IACH,4BAA4B,EAAE,CAAC,QAAQ,CAAU;IACjD;;;;OAIG;IACH,iBAAiB,EAAE;QAClB,GAAG,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,EAAO,UAAU;QAC9C,IAAI,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,EAAc,kBAAkB;QACxD,KAAK,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,SAAS;QAChD,KAAK,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,SAAS;QAChD,SAAS,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,EAAG,wBAAwB;KACrD;IACV,2DAA2D;IAC3D,gBAAgB,EAAE,EAAE,GAAG,EAAE,GAAG,IAAI;IAChC,2DAA2D;IAC3D,QAAQ,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI;IAC7B,qDAAqD;IACrD,wBAAwB,EAAE,CAAC;IAC3B,+DAA+D;IAC/D,iBAAiB,EAAE,GAAG,GAAG,IAAI,GAAG,IAAI;IACpC,2DAA2D;IAC3D,sBAAsB,EAAE,CAAC;IACzB,mEAAmE;IACnE,kBAAkB,EAAE,gBAAgB,CAAC,kBAAkB;IACvD,uEAAuE;IACvE,yBAAyB,EAAE,gBAAgB,CAAC,yBAAyB;CAC5D,CAAC;AAEX;;;;GAIG;AACH,MAAM,CAAC,MAAM,2BAA2B,GAAG;IAC1C,iEAAiE;IACjE,QAAQ,EAAE,gBAAgB;IAC1B,kEAAkE;IAClE,aAAa,EAAE,gBAAgB,CAAC,aAAa;IAC7C,0CAA0C;IAC1C,oBAAoB,EAAE;QACrB,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM;QACxD,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO;QAChD,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;KAC7C;IACV,mEAAmE;IACnE,kBAAkB,EAAE,gBAAgB,CAAC,kBAAkB;IACvD,uEAAuE;IACvE,yBAAyB,EAAE,gBAAgB,CAAC,yBAAyB;CAC5D,CAAC;AAEX;;;;GAIG;AACH;;;;GAIG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAAG;IACxC,2DAA2D;IAC3D,gBAAgB,EAAE,KAAK;IACvB,uDAAuD;IACvD,YAAY,EAAE,MAAM;IACpB,2DAA2D;IAC3D,kBAAkB,EAAE,CAAC;IACrB,2FAA2F;IAC3F,YAAY,EAAE,EAAE;IAChB;qEACiE;IACjE,eAAe,EAAE,MAAM;IACvB,0DAA0D;IAC1D,wBAAwB,EAAE,MAAM;IAChC,mEAAmE;IACnE,eAAe,EAAE,MAAM;IACvB,qEAAqE;IACrE,8BAA8B,EAAE,CAAC;CACxB,CAAC;AAEX,MAAM,CAAC,MAAM,6BAA6B,GAAG;IAC5C,mEAAmE;IACnE,QAAQ,EAAE,iBAAiB;IAC3B,oEAAoE;IACpE,aAAa,EAAE,gBAAgB,CAAC,aAAa;IAC7C,oDAAoD;IACpD,wBAAwB,EAAE,CAAC;IAC3B,2DAA2D;IAC3D,sBAAsB,EAAE,CAAC;IACzB,yDAAyD;IACzD,mBAAmB,EAAE,MAAM;IAC3B,6EAA6E;IAC7E,yBAAyB,EAAE,IAAI;IAC/B,8CAA8C;IAC9C,iBAAiB,EAAE,CAAC,iBAAiB,CAAsB;CAClD,CAAC;AAEX;;;GAGG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG;IAC9B,KAAK,EAAE,OAAO;IACd,QAAQ,EAAE,UAAU;IACpB,QAAQ,EAAE,UAAU;IACpB,YAAY,EAAE,cAAc;IAC5B,WAAW,EAAE,aAAa;IAC1B,QAAQ,EAAE,UAAU;IACpB,aAAa,EAAE,eAAe;IAC9B,MAAM,EAAE,QAAQ;CACP,CAAC;AAEX;;;;GAIG;AACH,MAAM,CAAC,MAAM,4BAA4B,GAAG;IAC3C,kDAAkD;IAClD,gBAAgB,EAAE,KAAK;IACvB,2CAA2C;IAC3C,qBAAqB,EAAE,EAAE;IACzB,0CAA0C;IAC1C,YAAY,EAAE,wCAAwC;IACtD,8CAA8C;IAC9C,UAAU,EAAE,0CAA0C;IACtD,gCAAgC;IAChC,eAAe,EAAE,kCAAkC;IACnD,oCAAoC;IACpC,aAAa,EAAE,gCAAgC;IAC/C,yCAAyC;IACzC,gBAAgB,EAAE,MAAM;IACxB,mDAAmD;IACnD,wBAAwB,EAAE,CAAC;IAC3B,kEAAkE;IAClE,kBAAkB,EAAE,IAAI;CACf,CAAC;AAEX;;;GAGG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG;IACjC,wDAAwD;IACxD,gBAAgB,EAAE,KAAK;IACvB,wEAAwE;IACxE,mBAAmB,EAAE,EAAE;IACvB,sCAAsC;IACtC,gBAAgB,EAAE,MAAM;IACxB,gCAAgC;IAChC,QAAQ,EAAE,8BAA8B;IACxC,2DAA2D;IAC3D,kBAAkB,EAAE,IAAI;IACxB,mDAAmD;IACnD,wBAAwB,EAAE,CAAC;IAC3B,4BAA4B;IAC5B,gBAAgB,EAAE,2BAA2B;IAC7C,yDAAyD;IACzD,WAAW,EAAE,UAAU;CACd,CAAC;AAEX,qDAAqD;AACrD,MAAM,CAAC,MAAM,qBAAqB,GAAG,4BAA4B,CAAC;AAClE,MAAM,CAAC,MAAM,8BAA8B,GAAG,qCAAqC,CAAC;AAKpF;;;;GAIG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG;IACjC,mEAAmE;IACnE,QAAQ,EAAE,eAAe;IACzB,mDAAmD;IACnD,kBAAkB,EAAE,IAAI;IACxB,qDAAqD;IACrD,aAAa,EAAE,CAAC,GAAG,IAAI,GAAG,IAAI;IAC9B,+CAA+C;IAC/C,qBAAqB,EAAE,IAAI;IAC3B,sDAAsD;IACtD,aAAa,EAAE,KAAK;IACpB,kEAAkE;IAClE,mBAAmB,EAAE,IAAI;IACzB,sEAAsE;IACtE,0BAA0B,EAAE,IAAI;IAChC,4CAA4C;IAC5C,kBAAkB,EAAE,oBAAoB;IACxC,8CAA8C;IAC9C,oBAAoB,EAAE,KAAK;IAC3B,wEAAwE;IACxE,2BAA2B,EAAE,MAAM;CAC1B,CAAC;AAEX,qDAAqD;AACrD,MAAM,CAAC,MAAM,sBAAsB,GAAG;IACrC,aAAa,EAAE,8CAA8C;IAC7D,cAAc,EAAE,qCAAqC;IACrD,iBAAiB,EAAE,+CAA+C;IAClE;;;;;;;;;OASG;IACH,cAAc,EAAE;QACf,QAAQ;QACR,OAAO;QACP,8CAA8C;KAC9C;IACD,qEAAqE;IACrE,gBAAgB,EAAE;QACjB,gDAAgD;QAChD,4CAA4C;QAC5C,+CAA+C;QAC/C,4CAA4C;QAC5C,iDAAiD;QACjD,2CAA2C;KAC3C;CACQ,CAAC;AAEX;;;;GAIG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG;IAC9B,kEAAkE;IAClE,IAAI,iBAAiB;QACpB,OAAO,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC,IAAI,0BAA0B,CAAC;IACtE,CAAC;IACD,iDAAiD;IACjD,WAAW,EAAE,KAAK;IAClB,0BAA0B;IAC1B,SAAS,EAAE;QACV,sFAAsF;QACtF,UAAU,EAAE,qBAAqB;QACjC,uDAAuD;QACvD,IAAI,EAAE,gBAAgB;QACtB,6BAA6B;QAC7B,SAAS,EAAE,uBAAuB;QAClC,gCAAgC;QAChC,eAAe,EAAE,2BAA2B;KAC5C;IACD,iCAAiC;IACjC,QAAQ,EAAE;QACT,wCAAwC;QACxC,OAAO,EAAE,KAAK;QACd,0CAA0C;QAC1C,eAAe,EAAE,KAAK;QACtB,2CAA2C;QAC3C,qBAAqB,EAAE,KAAK;QAC5B,uCAAuC;QACvC,MAAM,EAAE,IAAI;KACZ;IACD,yBAAyB;IACzB,KAAK,EAAE;QACN,IAAI,EAAE,MAAM;QACZ,GAAG,EAAE,KAAK;QACV,UAAU,EAAE,YAAY;KACxB;IACD,0BAA0B;IAC1B,iBAAiB,EAAE;QAClB,YAAY,EAAE,cAAc;QAC5B,SAAS,EAAE,WAAW;QACtB,KAAK,EAAE,OAAO;QACd,4DAA4D;QAC5D,aAAa,EAAE,eAAe;KAC9B;IACD,uDAAuD;IACvD,eAAe,EAAE;QAChB,4DAA4D;QAC5D,OAAO,EAAE,uBAAuB;KAChC;CACQ,CAAC;AAEX;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG;IACnC,8CAA8C;IAC9C,qBAAqB,EAAE,MAAM;IAC7B,kDAAkD;IAClD,wBAAwB,EAAE,KAAK;IAC/B,sDAAsD;IACtD,uBAAuB,EAAE,MAAM;IAC/B;;;;;;;;;;OAUG;IACH,oBAAoB,EAAE,MAAM;IAC5B,0DAA0D;IAC1D,oBAAoB,EAAE,MAAM;IAC5B,mDAAmD;IACnD,kBAAkB,EAAE,MAAM;IAC1B,+DAA+D;IAC/D,wBAAwB,EAAE,EAAE;IAC5B;iFAC6E;IAC7E,0BAA0B,EAAE,MAAM;IAClC,kFAAkF;IAClF,2BAA2B,EAAE,CAAC;IAC9B,yGAAyG;IACzG,SAAS,EAAE;QACV,6FAA6F;QAC7F,SAAS,EAAE,yBAAyB;QACpC,kEAAkE;QAClE,OAAO,EAAE,uBAAuB;QAChC,+DAA+D;QAC/D,QAAQ,EAAE,0BAA0B;QACpC,2EAA2E;QAC3E,aAAa,EAAE,0BAA0B;QACzC,qCAAqC;QACrC,YAAY,EAAE,yBAAyB;KACvC;CACQ,CAAC;AASX;;;;GAIG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG;IAC7B,wBAAwB;IACxB,GAAG,EAAE;QACJ,qEAAqE;QACrE,IAAI,cAAc;YACjB,OAAO,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC,IAAI,4CAA4C,CAAC;QACzF,CAAC;QACD,8CAA8C;QAC9C,qBAAqB,EAAE,IAAI;QAC3B,gDAAgD;QAChD,sBAAsB,EAAE,SAAS;QACjC,+BAA+B;QAC/B,SAAS,EAAE,OAAO;QAClB,uBAAuB;QACvB,MAAM,EAAE,cAAc;KACtB;IACD,iBAAiB;IACjB,KAAK,EAAE;QACN,IAAI,EAAE,MAAM;QACZ,GAAG,EAAE,KAAK;QACV,UAAU,EAAE,YAAY;KACxB;IACD,2CAA2C;IAC3C,OAAO,EAAE;QACR,oCAAoC;QACpC,SAAS,EAAE,OAAO;QAClB,kCAAkC;QAClC,SAAS,EAAE,aAAa;QACxB,mDAAmD;QACnD,eAAe,EAAE,wBAAwB;KACzC;IACD,wBAAwB;IACxB,YAAY,EAAE;QACb,sBAAsB;QACtB,mBAAmB;QACnB,kBAAkB;KAClB;CACQ,CAAC;AAKX,+DAA+D;AAC/D,MAAM,CAAC,MAAM,gBAAgB,GAAG;IAC/B,6CAA6C;IAC7C,gBAAgB,EAAE,MAAM;IACxB,kEAAkE;IAClE,WAAW,EAAE,eAAe;IAC5B,0CAA0C;IAC1C,uBAAuB,EAAE,EAAE;CAClB,CAAC;AAEX;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG;IACnC,yDAAyD;IACzD,MAAM,EAAE;QACP,qDAAqD;QACrD,IAAI,SAAS;YACZ,OAAO,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC,IAAI,EAAE,CAAC;QAC9C,CAAC;KACD;IACD,0BAA0B;IAC1B,WAAW,EAAE;QACZ,KAAK,EAAE,OAAO;QACd,QAAQ,EAAE,UAAU;KACpB;IACD,uBAAuB;IACvB,cAAc,EAAE;QACf,MAAM,EAAE,QAAQ;QAChB,OAAO,EAAE,SAAS;QAClB,SAAS,EAAE,WAAW;KACtB;CACQ,CAAC;AAEX;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,2BAA2B,GAAG;IAC1C,sDAAsD;IACtD,iBAAiB,EAAE,EAAE,GAAG,EAAE,GAAG,IAAI;IACjC,6DAA6D;IAC7D,iBAAiB,EAAE,MAAM;IACzB;4EACwE;IACxE,gBAAgB,EAAE,EAAE,GAAG,EAAE,GAAG,IAAI;IAChC,yCAAyC;IACzC,oBAAoB,EAAE,gBAAgB;IACtC,4CAA4C;IAC5C,mBAAmB,EAAE,CAAC,gBAAgB,EAAE,aAAa,CAAsB;IAC3E,wEAAwE;IACxE,aAAa,EAAE,oJAAoJ;IACnK,2EAA2E;IAC3E,oBAAoB,EAAE,sBAAsB;IAC5C,gEAAgE;IAChE,mBAAmB,EAAE,CAAC;IACtB,8DAA8D;IAC9D,yBAAyB,EAAE,CAAC,GAAG,EAAE,GAAG,IAAI;IACxC,oEAAoE;IACpE,gCAAgC,EAAE,MAAM;IACxC,+CAA+C;IAC/C,gCAAgC,EAAE,CAAC;IACnC;;+FAE2F;IAC3F,yBAAyB,EAAE,MAAM;CACxB,CAAC;AAEX,yEAAyE;AACzE,MAAM,CAAC,MAAM,sBAAsB,GAAG;IACrC,oEAAoE;IACpE,kBAAkB,EAAE,EAAE,GAAG,IAAI,GAAG,IAAI;IACpC,+EAA+E;IAC/E,yBAAyB,EAAE,CAAC,GAAG,IAAI,GAAG,IAAI;IAC1C,wDAAwD;IACxD,sBAAsB,EAAE,CAAC;IACzB,gEAAgE;IAChE,wBAAwB,EAAE,EAAE,GAAG,EAAE,GAAG,IAAI;IACxC,2DAA2D;IAC3D,4BAA4B,EAAE,IAAI;IAClC,4DAA4D;IAC5D,gBAAgB,EAAE,UAAU;IAC5B,6DAA6D;IAC7D,WAAW,EAAE,SAAS;IACtB,0CAA0C;IAC1C,QAAQ,EAAE,MAAM;CACP,CAAC;AAEX,oDAAoD;AACpD,MAAM,CAAC,MAAM,iBAAiB,GAAG;IAChC,qCAAqC;IACrC,yBAAyB,EAAE,iCAAiC;IAC5D,8CAA8C;IAC9C,oBAAoB,EAAE,gBAAgB;IACtC,iCAAiC;IACjC,QAAQ,EAAE;QACT,OAAO,EAAE,cAAc;QACvB,QAAQ,EAAE,wBAAwB;QAClC,YAAY,EAAE,mBAAmB;KACjC;IACD,oCAAoC;IACpC,KAAK,EAAE;QACN,YAAY,EAAE,cAAc;QAC5B,oBAAoB,EAAE,qBAAqB;QAC3C,kBAAkB,EAAE,mBAAmB;QACvC,cAAc,EAAE,gBAAgB;QAChC,WAAW,EAAE,aAAa;QAC1B,WAAW,EAAE,aAAa;QAC1B,WAAW,EAAE,aAAa;QAC1B,aAAa,EAAE,eAAe;QAC9B,aAAa,EAAE,eAAe;QAC9B,aAAa,EAAE,eAAe;QAC9B,YAAY,EAAE,cAAc;QAC5B,aAAa,EAAE,eAAe;QAC9B,SAAS,EAAE,WAAW;KACtB;CACQ,CAAC"}
|
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../../backend/src/constants.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Cloud Google OAuth Controller
|
|
3
|
+
*
|
|
4
|
+
* Handles Google OAuth login flow for the CrewlyAI Cloud Console.
|
|
5
|
+
* Provides both browser-redirect (GET) and API (POST) flows.
|
|
6
|
+
*
|
|
7
|
+
* Routes:
|
|
8
|
+
* - GET /api/cloud/google/start -> Redirects to Google consent screen
|
|
9
|
+
* - GET /api/cloud/google/callback -> Handles Google redirect, issues JWT, redirects to frontend
|
|
10
|
+
* - POST /api/cloud/google/url -> Returns Google OAuth URL as JSON (for SPA clients)
|
|
11
|
+
* - POST /api/cloud/google/callback -> Exchanges code for JWT, returns JSON (for SPA clients)
|
|
12
|
+
*
|
|
13
|
+
* @module controllers/cloud/cloud-google-auth.controller
|
|
14
|
+
*/
|
|
15
|
+
import type { Request, Response, NextFunction } from 'express';
|
|
16
|
+
/**
|
|
17
|
+
* Sign a JWT using HMAC-SHA256.
|
|
18
|
+
*
|
|
19
|
+
* @param payload - JWT payload object
|
|
20
|
+
* @returns Signed JWT string (header.payload.signature)
|
|
21
|
+
*/
|
|
22
|
+
export declare function signJwt(payload: Record<string, unknown>): string;
|
|
23
|
+
/**
|
|
24
|
+
* Verify a JWT signed with HMAC-SHA256.
|
|
25
|
+
*
|
|
26
|
+
* @param token - JWT string (header.payload.signature)
|
|
27
|
+
* @returns Decoded payload if valid, null if invalid or expired
|
|
28
|
+
*/
|
|
29
|
+
export declare function verifyJwt(token: string): Record<string, unknown> | null;
|
|
30
|
+
/**
|
|
31
|
+
* GET /api/cloud/google/start
|
|
32
|
+
*
|
|
33
|
+
* Redirects the browser to the Google OAuth consent screen.
|
|
34
|
+
*
|
|
35
|
+
* @param req - Express request with optional query: { redirect }
|
|
36
|
+
* @param res - Express response (302 redirect)
|
|
37
|
+
* @param next - Next function for error propagation
|
|
38
|
+
*/
|
|
39
|
+
export declare function cloudGoogleStart(req: Request, res: Response, next: NextFunction): Promise<void>;
|
|
40
|
+
/**
|
|
41
|
+
* GET /api/cloud/google/callback
|
|
42
|
+
*
|
|
43
|
+
* Handles the Google OAuth redirect, exchanges code, issues JWT, and redirects.
|
|
44
|
+
*
|
|
45
|
+
* @param req - Express request with query: { code, state? }
|
|
46
|
+
* @param res - Express response (302 redirect to frontend)
|
|
47
|
+
* @param next - Next function for error propagation
|
|
48
|
+
*/
|
|
49
|
+
export declare function cloudGoogleCallback(req: Request, res: Response, next: NextFunction): Promise<void>;
|
|
50
|
+
/**
|
|
51
|
+
* POST /api/cloud/google/url
|
|
52
|
+
*
|
|
53
|
+
* Returns the Google OAuth consent URL as JSON (for SPA clients).
|
|
54
|
+
*
|
|
55
|
+
* @param req - Request with optional body: { redirectTo, redirectUrl }
|
|
56
|
+
* @param res - Response returning { success, data: { url } }
|
|
57
|
+
* @param next - Next function for error propagation
|
|
58
|
+
*/
|
|
59
|
+
export declare function cloudGoogleUrl(req: Request, res: Response, next: NextFunction): Promise<void>;
|
|
60
|
+
/**
|
|
61
|
+
* POST /api/cloud/google/callback
|
|
62
|
+
*
|
|
63
|
+
* SPA-friendly code exchange: accepts { code } in body, returns JWT + user as JSON.
|
|
64
|
+
*
|
|
65
|
+
* @param req - Request with body: { code }
|
|
66
|
+
* @param res - Response returning { success, data: { accessToken, refreshToken, expiresIn, user } }
|
|
67
|
+
* @param next - Next function for error propagation
|
|
68
|
+
*/
|
|
69
|
+
export declare function cloudGoogleCallbackPost(req: Request, res: Response, next: NextFunction): Promise<void>;
|
|
70
|
+
//# sourceMappingURL=cloud-google-auth.controller.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cloud-google-auth.controller.d.ts","sourceRoot":"","sources":["../../../../../../backend/src/controllers/cloud/cloud-google-auth.controller.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AA0J/D;;;;;GAKG;AACH,wBAAgB,OAAO,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAShE;AAED;;;;;GAKG;AACH,wBAAgB,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAwBvE;AAMD;;;;;;;;GAQG;AACH,wBAAsB,gBAAgB,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ,EAAE,IAAI,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CAiBrG;AAED;;;;;;;;GAQG;AACH,wBAAsB,mBAAmB,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ,EAAE,IAAI,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CAqGxG;AAED;;;;;;;;GAQG;AACH,wBAAsB,cAAc,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ,EAAE,IAAI,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CAiBnG;AAED;;;;;;;;GAQG;AACH,wBAAsB,uBAAuB,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ,EAAE,IAAI,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CAuF5G"}
|
|
@@ -0,0 +1,427 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Cloud Google OAuth Controller
|
|
3
|
+
*
|
|
4
|
+
* Handles Google OAuth login flow for the CrewlyAI Cloud Console.
|
|
5
|
+
* Provides both browser-redirect (GET) and API (POST) flows.
|
|
6
|
+
*
|
|
7
|
+
* Routes:
|
|
8
|
+
* - GET /api/cloud/google/start -> Redirects to Google consent screen
|
|
9
|
+
* - GET /api/cloud/google/callback -> Handles Google redirect, issues JWT, redirects to frontend
|
|
10
|
+
* - POST /api/cloud/google/url -> Returns Google OAuth URL as JSON (for SPA clients)
|
|
11
|
+
* - POST /api/cloud/google/callback -> Exchanges code for JWT, returns JSON (for SPA clients)
|
|
12
|
+
*
|
|
13
|
+
* @module controllers/cloud/cloud-google-auth.controller
|
|
14
|
+
*/
|
|
15
|
+
import crypto from 'crypto';
|
|
16
|
+
import { GOOGLE_OAUTH_CONSTANTS, AUTH_CONSTANTS, CLOUD_AUTH_CONSTANTS } from '../../constants.js';
|
|
17
|
+
import { UserIdentityService } from '../../services/user/user-identity.service.js';
|
|
18
|
+
import { DeviceIdentityService } from '../../services/cloud/device-identity.service.js';
|
|
19
|
+
import { CloudClientService } from '../../services/cloud/cloud-client.service.js';
|
|
20
|
+
import { LoggerService } from '../../services/core/logger.service.js';
|
|
21
|
+
const logger = LoggerService.getInstance().createComponentLogger('CloudGoogleAuth');
|
|
22
|
+
/** Env var for the Cloud Console frontend URL (where to redirect after login). */
|
|
23
|
+
const CLOUD_CONSOLE_FRONTEND_URL = () => process.env['CLOUD_CONSOLE_URL'] || process.env['CLOUD_PORTAL_URL'] || 'https://crewlyai.com';
|
|
24
|
+
/** Env var for the Google OAuth redirect URI (must match GCP console). */
|
|
25
|
+
const CLOUD_GOOGLE_REDIRECT_URI = (req) => process.env['CLOUD_GOOGLE_REDIRECT_URI'] ||
|
|
26
|
+
`${req.protocol}://${req.get('host')}/api/cloud/google/callback`;
|
|
27
|
+
/** Scopes for Cloud Console login -- only need email and profile. */
|
|
28
|
+
const LOGIN_SCOPES = ['openid', 'email', 'profile'];
|
|
29
|
+
/** Default user plan assigned to new users. */
|
|
30
|
+
const DEFAULT_USER_PLAN = AUTH_CONSTANTS.PLANS.FREE;
|
|
31
|
+
/**
|
|
32
|
+
* Build a Google OAuth consent URL with the given post-login redirect.
|
|
33
|
+
*
|
|
34
|
+
* Consolidates URL construction used by both cloudGoogleStart and cloudGoogleUrl.
|
|
35
|
+
*
|
|
36
|
+
* @param req - Express request (used to derive redirect_uri)
|
|
37
|
+
* @param postLoginRedirect - Where to send user after login completes
|
|
38
|
+
* @returns Full Google OAuth consent URL string
|
|
39
|
+
* @throws Error if GOOGLE_CLIENT_ID is not configured
|
|
40
|
+
*/
|
|
41
|
+
function buildGoogleOAuthUrl(req, postLoginRedirect) {
|
|
42
|
+
const clientId = CLOUD_AUTH_CONSTANTS.GOOGLE.CLIENT_ID;
|
|
43
|
+
if (!clientId)
|
|
44
|
+
throw new Error('GOOGLE_CLIENT_ID is not configured');
|
|
45
|
+
const redirectUri = CLOUD_GOOGLE_REDIRECT_URI(req);
|
|
46
|
+
const statePayload = {
|
|
47
|
+
redirectTo: postLoginRedirect,
|
|
48
|
+
t: Date.now(),
|
|
49
|
+
nonce: crypto.randomUUID(),
|
|
50
|
+
};
|
|
51
|
+
const state = Buffer.from(JSON.stringify(statePayload)).toString('base64url');
|
|
52
|
+
const url = new URL(GOOGLE_OAUTH_CONSTANTS.AUTH_BASE_URL);
|
|
53
|
+
url.searchParams.set('client_id', clientId);
|
|
54
|
+
url.searchParams.set('redirect_uri', redirectUri);
|
|
55
|
+
url.searchParams.set('response_type', 'code');
|
|
56
|
+
url.searchParams.set('access_type', 'offline');
|
|
57
|
+
url.searchParams.set('prompt', 'consent');
|
|
58
|
+
url.searchParams.set('scope', LOGIN_SCOPES.join(' '));
|
|
59
|
+
url.searchParams.set('state', state);
|
|
60
|
+
return url.toString();
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* Exchange a Google authorization code for tokens, fetch user profile,
|
|
64
|
+
* and upsert the user in the local identity store.
|
|
65
|
+
*
|
|
66
|
+
* Shared by both GET and POST callback handlers.
|
|
67
|
+
*
|
|
68
|
+
* @param code - Google authorization code
|
|
69
|
+
* @param req - Express request (used to derive redirect_uri)
|
|
70
|
+
* @returns GoogleLoginResult with user, profile, and token data
|
|
71
|
+
* @throws Error on credential misconfiguration, token exchange failure, or missing profile data
|
|
72
|
+
*/
|
|
73
|
+
async function exchangeCodeAndCreateUser(code, req) {
|
|
74
|
+
const clientId = CLOUD_AUTH_CONSTANTS.GOOGLE.CLIENT_ID;
|
|
75
|
+
const clientSecret = process.env['GOOGLE_CLIENT_SECRET'] || '';
|
|
76
|
+
if (!clientId || !clientSecret) {
|
|
77
|
+
throw new Error('Google OAuth credentials not configured');
|
|
78
|
+
}
|
|
79
|
+
const redirectUri = CLOUD_GOOGLE_REDIRECT_URI(req);
|
|
80
|
+
// Exchange code for tokens
|
|
81
|
+
const tokenResp = await fetch(GOOGLE_OAUTH_CONSTANTS.TOKEN_ENDPOINT, {
|
|
82
|
+
method: 'POST',
|
|
83
|
+
headers: { 'Content-Type': 'application/x-www-form-urlencoded' },
|
|
84
|
+
body: new URLSearchParams({
|
|
85
|
+
code,
|
|
86
|
+
client_id: clientId,
|
|
87
|
+
client_secret: clientSecret,
|
|
88
|
+
redirect_uri: redirectUri,
|
|
89
|
+
grant_type: 'authorization_code',
|
|
90
|
+
}),
|
|
91
|
+
});
|
|
92
|
+
if (!tokenResp.ok) {
|
|
93
|
+
const details = await tokenResp.text();
|
|
94
|
+
logger.error('Failed to exchange Google OAuth code', { status: tokenResp.status, details });
|
|
95
|
+
throw new Error(`token_exchange_failed: ${tokenResp.status}`);
|
|
96
|
+
}
|
|
97
|
+
const tokenData = (await tokenResp.json());
|
|
98
|
+
// Fetch Google profile
|
|
99
|
+
const profileResp = await fetch(GOOGLE_OAUTH_CONSTANTS.USERINFO_ENDPOINT, {
|
|
100
|
+
headers: { Authorization: `Bearer ${tokenData.access_token}` },
|
|
101
|
+
});
|
|
102
|
+
if (!profileResp.ok) {
|
|
103
|
+
logger.error('Failed to fetch Google profile', { status: profileResp.status });
|
|
104
|
+
throw new Error(`profile_fetch_failed: ${profileResp.status}`);
|
|
105
|
+
}
|
|
106
|
+
const profile = (await profileResp.json());
|
|
107
|
+
if (!profile.email) {
|
|
108
|
+
throw new Error('no_email');
|
|
109
|
+
}
|
|
110
|
+
// Create or find user and store tokens
|
|
111
|
+
const users = UserIdentityService.getInstance();
|
|
112
|
+
const user = await users.createOrUpdateUser({ email: profile.email });
|
|
113
|
+
if (tokenData.refresh_token || tokenData.access_token) {
|
|
114
|
+
await users.connectService(user.id, 'google', {
|
|
115
|
+
refreshToken: tokenData.refresh_token || tokenData.access_token,
|
|
116
|
+
accessToken: tokenData.access_token,
|
|
117
|
+
scopes: LOGIN_SCOPES,
|
|
118
|
+
});
|
|
119
|
+
}
|
|
120
|
+
return {
|
|
121
|
+
user,
|
|
122
|
+
profile: { email: profile.email, name: profile.name, picture: profile.picture },
|
|
123
|
+
tokenData: { access_token: tokenData.access_token, refresh_token: tokenData.refresh_token },
|
|
124
|
+
};
|
|
125
|
+
}
|
|
126
|
+
/**
|
|
127
|
+
* Sign a JWT using HMAC-SHA256.
|
|
128
|
+
*
|
|
129
|
+
* @param payload - JWT payload object
|
|
130
|
+
* @returns Signed JWT string (header.payload.signature)
|
|
131
|
+
*/
|
|
132
|
+
export function signJwt(payload) {
|
|
133
|
+
const header = { alg: 'HS256', typ: 'JWT' };
|
|
134
|
+
const headerB64 = Buffer.from(JSON.stringify(header)).toString('base64url');
|
|
135
|
+
const payloadB64 = Buffer.from(JSON.stringify(payload)).toString('base64url');
|
|
136
|
+
const signature = crypto
|
|
137
|
+
.createHmac('sha256', AUTH_CONSTANTS.JWT.DEFAULT_SECRET)
|
|
138
|
+
.update(`${headerB64}.${payloadB64}`)
|
|
139
|
+
.digest('base64url');
|
|
140
|
+
return `${headerB64}.${payloadB64}.${signature}`;
|
|
141
|
+
}
|
|
142
|
+
/**
|
|
143
|
+
* Verify a JWT signed with HMAC-SHA256.
|
|
144
|
+
*
|
|
145
|
+
* @param token - JWT string (header.payload.signature)
|
|
146
|
+
* @returns Decoded payload if valid, null if invalid or expired
|
|
147
|
+
*/
|
|
148
|
+
export function verifyJwt(token) {
|
|
149
|
+
try {
|
|
150
|
+
const parts = token.split('.');
|
|
151
|
+
if (parts.length !== 3)
|
|
152
|
+
return null;
|
|
153
|
+
const [headerB64, payloadB64, signature] = parts;
|
|
154
|
+
const expectedSig = crypto
|
|
155
|
+
.createHmac('sha256', AUTH_CONSTANTS.JWT.DEFAULT_SECRET)
|
|
156
|
+
.update(`${headerB64}.${payloadB64}`)
|
|
157
|
+
.digest('base64url');
|
|
158
|
+
if (signature !== expectedSig)
|
|
159
|
+
return null;
|
|
160
|
+
const payload = JSON.parse(Buffer.from(payloadB64, 'base64url').toString('utf8'));
|
|
161
|
+
// Check expiry
|
|
162
|
+
if (payload.exp && payload.exp < Math.floor(Date.now() / 1000)) {
|
|
163
|
+
return null;
|
|
164
|
+
}
|
|
165
|
+
return payload;
|
|
166
|
+
}
|
|
167
|
+
catch {
|
|
168
|
+
return null;
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
// ---------------------------------------------------------------------------
|
|
172
|
+
// Route handlers
|
|
173
|
+
// ---------------------------------------------------------------------------
|
|
174
|
+
/**
|
|
175
|
+
* GET /api/cloud/google/start
|
|
176
|
+
*
|
|
177
|
+
* Redirects the browser to the Google OAuth consent screen.
|
|
178
|
+
*
|
|
179
|
+
* @param req - Express request with optional query: { redirect }
|
|
180
|
+
* @param res - Express response (302 redirect)
|
|
181
|
+
* @param next - Next function for error propagation
|
|
182
|
+
*/
|
|
183
|
+
export async function cloudGoogleStart(req, res, next) {
|
|
184
|
+
try {
|
|
185
|
+
const postLoginRedirect = req.query['redirect'] ? String(req.query['redirect']) : '';
|
|
186
|
+
const url = buildGoogleOAuthUrl(req, postLoginRedirect);
|
|
187
|
+
logger.info('Redirecting to Google OAuth consent screen');
|
|
188
|
+
res.redirect(url);
|
|
189
|
+
}
|
|
190
|
+
catch (error) {
|
|
191
|
+
if (error instanceof Error && error.message.includes('GOOGLE_CLIENT_ID')) {
|
|
192
|
+
res.status(500).json({ success: false, error: error.message });
|
|
193
|
+
return;
|
|
194
|
+
}
|
|
195
|
+
logger.error('Failed to initiate Google OAuth', {
|
|
196
|
+
error: error instanceof Error ? error.message : String(error),
|
|
197
|
+
});
|
|
198
|
+
next(error);
|
|
199
|
+
}
|
|
200
|
+
}
|
|
201
|
+
/**
|
|
202
|
+
* GET /api/cloud/google/callback
|
|
203
|
+
*
|
|
204
|
+
* Handles the Google OAuth redirect, exchanges code, issues JWT, and redirects.
|
|
205
|
+
*
|
|
206
|
+
* @param req - Express request with query: { code, state? }
|
|
207
|
+
* @param res - Express response (302 redirect to frontend)
|
|
208
|
+
* @param next - Next function for error propagation
|
|
209
|
+
*/
|
|
210
|
+
export async function cloudGoogleCallback(req, res, next) {
|
|
211
|
+
try {
|
|
212
|
+
const code = req.query['code'] ? String(req.query['code']) : '';
|
|
213
|
+
const state = req.query['state'] ? String(req.query['state']) : '';
|
|
214
|
+
const errorParam = req.query['error'] ? String(req.query['error']) : '';
|
|
215
|
+
const consoleUrl = CLOUD_CONSOLE_FRONTEND_URL();
|
|
216
|
+
if (errorParam) {
|
|
217
|
+
logger.warn('Google OAuth returned error', { error: errorParam });
|
|
218
|
+
res.redirect(`${consoleUrl}/login?error=${encodeURIComponent(errorParam)}`);
|
|
219
|
+
return;
|
|
220
|
+
}
|
|
221
|
+
if (!code) {
|
|
222
|
+
logger.warn('Google OAuth callback missing code');
|
|
223
|
+
res.redirect(`${consoleUrl}/login?error=missing_code`);
|
|
224
|
+
return;
|
|
225
|
+
}
|
|
226
|
+
let result;
|
|
227
|
+
try {
|
|
228
|
+
result = await exchangeCodeAndCreateUser(code, req);
|
|
229
|
+
}
|
|
230
|
+
catch (err) {
|
|
231
|
+
const errMsg = err instanceof Error ? err.message : String(err);
|
|
232
|
+
logger.error('Google OAuth exchange failed', { error: errMsg });
|
|
233
|
+
const errorCode = errMsg.split(':')[0] || 'exchange_failed';
|
|
234
|
+
res.redirect(`${consoleUrl}/login?error=${encodeURIComponent(errorCode)}`);
|
|
235
|
+
return;
|
|
236
|
+
}
|
|
237
|
+
// Resolve device ID for JWT (enables Cloud-side auto-registration on poll/send)
|
|
238
|
+
let deviceId;
|
|
239
|
+
try {
|
|
240
|
+
const identity = await DeviceIdentityService.getInstance().getOrCreateIdentity();
|
|
241
|
+
deviceId = identity.deviceId;
|
|
242
|
+
}
|
|
243
|
+
catch {
|
|
244
|
+
logger.debug('Could not resolve deviceId for JWT (non-fatal)');
|
|
245
|
+
}
|
|
246
|
+
// Issue JWT access token
|
|
247
|
+
const now = Math.floor(Date.now() / 1000);
|
|
248
|
+
const accessToken = signJwt({
|
|
249
|
+
sub: result.user.id,
|
|
250
|
+
email: result.profile.email,
|
|
251
|
+
name: result.profile.name || '',
|
|
252
|
+
plan: DEFAULT_USER_PLAN,
|
|
253
|
+
...(deviceId && { deviceId }),
|
|
254
|
+
iat: now,
|
|
255
|
+
exp: now + AUTH_CONSTANTS.JWT.ACCESS_TOKEN_EXPIRY_S,
|
|
256
|
+
iss: AUTH_CONSTANTS.JWT.ISSUER,
|
|
257
|
+
type: 'access',
|
|
258
|
+
});
|
|
259
|
+
// Issue refresh token (long-lived, enables auto-renewal after access token expires)
|
|
260
|
+
const refreshToken = signJwt({
|
|
261
|
+
sub: result.user.id,
|
|
262
|
+
email: result.profile.email,
|
|
263
|
+
name: result.profile.name || '',
|
|
264
|
+
plan: DEFAULT_USER_PLAN,
|
|
265
|
+
...(deviceId && { deviceId }),
|
|
266
|
+
iat: now,
|
|
267
|
+
exp: now + AUTH_CONSTANTS.JWT.REFRESH_TOKEN_EXPIRY_S,
|
|
268
|
+
iss: AUTH_CONSTANTS.JWT.ISSUER,
|
|
269
|
+
type: 'refresh',
|
|
270
|
+
});
|
|
271
|
+
// Parse state for post-login redirect
|
|
272
|
+
let postLoginRedirect = '';
|
|
273
|
+
if (state) {
|
|
274
|
+
try {
|
|
275
|
+
const parsed = JSON.parse(Buffer.from(state, 'base64url').toString('utf8'));
|
|
276
|
+
postLoginRedirect = parsed.redirectTo || parsed.redirect || '';
|
|
277
|
+
}
|
|
278
|
+
catch {
|
|
279
|
+
logger.warn('Failed to parse OAuth state parameter');
|
|
280
|
+
}
|
|
281
|
+
}
|
|
282
|
+
const finalRedirect = postLoginRedirect || consoleUrl;
|
|
283
|
+
const separator = finalRedirect.includes('?') ? '&' : '?';
|
|
284
|
+
// Persist tokens to CloudClientService immediately so the refresh token
|
|
285
|
+
// is written to ~/.crewly/cloud/config.json before the frontend calls /connect.
|
|
286
|
+
try {
|
|
287
|
+
const cloudUrl = `${req.protocol}://${req.get('host')}`;
|
|
288
|
+
const client = CloudClientService.getInstance();
|
|
289
|
+
client.connectLocal(cloudUrl, accessToken, DEFAULT_USER_PLAN, refreshToken);
|
|
290
|
+
}
|
|
291
|
+
catch (connectErr) {
|
|
292
|
+
logger.warn('Failed to connect CloudClientService during OAuth callback (non-fatal)', {
|
|
293
|
+
error: connectErr instanceof Error ? connectErr.message : String(connectErr),
|
|
294
|
+
});
|
|
295
|
+
}
|
|
296
|
+
logger.info('Cloud Google OAuth login successful', { email: result.profile.email, userId: result.user.id });
|
|
297
|
+
res.redirect(`${finalRedirect}${separator}token=${accessToken}&refreshToken=${refreshToken}`);
|
|
298
|
+
}
|
|
299
|
+
catch (error) {
|
|
300
|
+
logger.error('Cloud Google OAuth callback error', {
|
|
301
|
+
error: error instanceof Error ? error.message : String(error),
|
|
302
|
+
});
|
|
303
|
+
next(error);
|
|
304
|
+
}
|
|
305
|
+
}
|
|
306
|
+
/**
|
|
307
|
+
* POST /api/cloud/google/url
|
|
308
|
+
*
|
|
309
|
+
* Returns the Google OAuth consent URL as JSON (for SPA clients).
|
|
310
|
+
*
|
|
311
|
+
* @param req - Request with optional body: { redirectTo, redirectUrl }
|
|
312
|
+
* @param res - Response returning { success, data: { url } }
|
|
313
|
+
* @param next - Next function for error propagation
|
|
314
|
+
*/
|
|
315
|
+
export async function cloudGoogleUrl(req, res, next) {
|
|
316
|
+
try {
|
|
317
|
+
const postLoginRedirect = req.body?.redirectTo || req.body?.redirectUrl || '';
|
|
318
|
+
const url = buildGoogleOAuthUrl(req, postLoginRedirect);
|
|
319
|
+
logger.info('Returning Google OAuth URL for SPA client');
|
|
320
|
+
res.json({ success: true, data: { url } });
|
|
321
|
+
}
|
|
322
|
+
catch (error) {
|
|
323
|
+
if (error instanceof Error && error.message.includes('GOOGLE_CLIENT_ID')) {
|
|
324
|
+
res.status(500).json({ success: false, error: error.message });
|
|
325
|
+
return;
|
|
326
|
+
}
|
|
327
|
+
logger.error('Failed to generate Google OAuth URL', {
|
|
328
|
+
error: error instanceof Error ? error.message : String(error),
|
|
329
|
+
});
|
|
330
|
+
next(error);
|
|
331
|
+
}
|
|
332
|
+
}
|
|
333
|
+
/**
|
|
334
|
+
* POST /api/cloud/google/callback
|
|
335
|
+
*
|
|
336
|
+
* SPA-friendly code exchange: accepts { code } in body, returns JWT + user as JSON.
|
|
337
|
+
*
|
|
338
|
+
* @param req - Request with body: { code }
|
|
339
|
+
* @param res - Response returning { success, data: { accessToken, refreshToken, expiresIn, user } }
|
|
340
|
+
* @param next - Next function for error propagation
|
|
341
|
+
*/
|
|
342
|
+
export async function cloudGoogleCallbackPost(req, res, next) {
|
|
343
|
+
try {
|
|
344
|
+
const { code } = req.body;
|
|
345
|
+
if (!code) {
|
|
346
|
+
res.status(400).json({ success: false, error: 'Missing authorization code' });
|
|
347
|
+
return;
|
|
348
|
+
}
|
|
349
|
+
const result = await exchangeCodeAndCreateUser(code, req);
|
|
350
|
+
// Resolve device ID for JWT (enables Cloud-side auto-registration on poll/send)
|
|
351
|
+
let deviceIdForJwt;
|
|
352
|
+
try {
|
|
353
|
+
const identity = await DeviceIdentityService.getInstance().getOrCreateIdentity();
|
|
354
|
+
deviceIdForJwt = identity.deviceId;
|
|
355
|
+
}
|
|
356
|
+
catch {
|
|
357
|
+
logger.debug('Could not resolve deviceId for JWT (non-fatal)');
|
|
358
|
+
}
|
|
359
|
+
// Issue access token
|
|
360
|
+
const now = Math.floor(Date.now() / 1000);
|
|
361
|
+
const accessToken = signJwt({
|
|
362
|
+
sub: result.user.id,
|
|
363
|
+
email: result.profile.email,
|
|
364
|
+
name: result.profile.name || '',
|
|
365
|
+
plan: DEFAULT_USER_PLAN,
|
|
366
|
+
...(deviceIdForJwt && { deviceId: deviceIdForJwt }),
|
|
367
|
+
iat: now,
|
|
368
|
+
exp: now + AUTH_CONSTANTS.JWT.ACCESS_TOKEN_EXPIRY_S,
|
|
369
|
+
iss: AUTH_CONSTANTS.JWT.ISSUER,
|
|
370
|
+
type: 'access',
|
|
371
|
+
});
|
|
372
|
+
// Issue refresh token (longer lived, carries user claims for token refresh)
|
|
373
|
+
const refreshToken = signJwt({
|
|
374
|
+
sub: result.user.id,
|
|
375
|
+
email: result.profile.email,
|
|
376
|
+
name: result.profile.name || '',
|
|
377
|
+
plan: DEFAULT_USER_PLAN,
|
|
378
|
+
...(deviceIdForJwt && { deviceId: deviceIdForJwt }),
|
|
379
|
+
iat: now,
|
|
380
|
+
exp: now + AUTH_CONSTANTS.JWT.REFRESH_TOKEN_EXPIRY_S,
|
|
381
|
+
iss: AUTH_CONSTANTS.JWT.ISSUER,
|
|
382
|
+
type: 'refresh',
|
|
383
|
+
});
|
|
384
|
+
// Persist tokens to CloudClientService immediately so the refresh token
|
|
385
|
+
// is written to ~/.crewly/cloud/config.json before the frontend calls /connect.
|
|
386
|
+
try {
|
|
387
|
+
const cloudUrl = `${req.protocol}://${req.get('host')}`;
|
|
388
|
+
const client = CloudClientService.getInstance();
|
|
389
|
+
client.connectLocal(cloudUrl, accessToken, DEFAULT_USER_PLAN, refreshToken);
|
|
390
|
+
}
|
|
391
|
+
catch (connectErr) {
|
|
392
|
+
logger.warn('Failed to connect CloudClientService during OAuth POST callback (non-fatal)', {
|
|
393
|
+
error: connectErr instanceof Error ? connectErr.message : String(connectErr),
|
|
394
|
+
});
|
|
395
|
+
}
|
|
396
|
+
logger.info('Cloud Google OAuth login successful (POST)', { email: result.profile.email, userId: result.user.id });
|
|
397
|
+
res.json({
|
|
398
|
+
success: true,
|
|
399
|
+
data: {
|
|
400
|
+
accessToken,
|
|
401
|
+
refreshToken,
|
|
402
|
+
expiresIn: AUTH_CONSTANTS.JWT.ACCESS_TOKEN_EXPIRY_S,
|
|
403
|
+
user: {
|
|
404
|
+
id: result.user.id,
|
|
405
|
+
email: result.profile.email,
|
|
406
|
+
displayName: result.profile.name || '',
|
|
407
|
+
plan: DEFAULT_USER_PLAN,
|
|
408
|
+
createdAt: result.user.createdAt || '',
|
|
409
|
+
},
|
|
410
|
+
},
|
|
411
|
+
});
|
|
412
|
+
}
|
|
413
|
+
catch (error) {
|
|
414
|
+
const errMsg = error instanceof Error ? error.message : String(error);
|
|
415
|
+
if (errMsg.includes('credentials not configured')) {
|
|
416
|
+
res.status(500).json({ success: false, error: 'Google OAuth credentials not configured' });
|
|
417
|
+
return;
|
|
418
|
+
}
|
|
419
|
+
if (errMsg.startsWith('token_exchange_failed') || errMsg.startsWith('profile_fetch_failed') || errMsg === 'no_email') {
|
|
420
|
+
res.status(400).json({ success: false, error: errMsg.includes(':') ? errMsg.split(':')[0] : errMsg });
|
|
421
|
+
return;
|
|
422
|
+
}
|
|
423
|
+
logger.error('Cloud Google OAuth callback (POST) error', { error: errMsg });
|
|
424
|
+
next(error);
|
|
425
|
+
}
|
|
426
|
+
}
|
|
427
|
+
//# sourceMappingURL=cloud-google-auth.controller.js.map
|