@ankhorage/studio 2.6.3 → 2.7.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 +1 -1
- package/apm/update.json +1 -1
- package/dist/authSettings.d.ts +5 -3
- package/dist/authSettings.d.ts.map +1 -1
- package/dist/authSettings.js +61 -49
- package/dist/authSettings.js.map +1 -1
- package/dist/cli/index.js +4 -4
- package/dist/cli/index.js.map +1 -1
- package/dist/core/studioManifestDraftModel.d.ts.map +1 -1
- package/dist/core/studioManifestDraftModel.js +9 -2
- package/dist/core/studioManifestDraftModel.js.map +1 -1
- package/dist/features/infrastructure/adapters/outbound/createStudioInfraAdapterPackageResolver.d.ts +4 -0
- package/dist/features/infrastructure/adapters/outbound/createStudioInfraAdapterPackageResolver.d.ts.map +1 -0
- package/dist/features/infrastructure/adapters/outbound/createStudioInfraAdapterPackageResolver.js +22 -0
- package/dist/features/infrastructure/adapters/outbound/createStudioInfraAdapterPackageResolver.js.map +1 -0
- package/dist/features/infrastructure/application/use-cases/initializeProjectLocalInfraNetworking.d.ts +4 -0
- package/dist/features/infrastructure/application/use-cases/initializeProjectLocalInfraNetworking.d.ts.map +1 -0
- package/dist/features/infrastructure/application/use-cases/initializeProjectLocalInfraNetworking.js +36 -0
- package/dist/features/infrastructure/application/use-cases/initializeProjectLocalInfraNetworking.js.map +1 -0
- package/dist/features/infrastructure/composition/createStudioProjectInfraLifecycle.d.ts +27 -0
- package/dist/features/infrastructure/composition/createStudioProjectInfraLifecycle.d.ts.map +1 -0
- package/dist/features/infrastructure/composition/createStudioProjectInfraLifecycle.js +67 -0
- package/dist/features/infrastructure/composition/createStudioProjectInfraLifecycle.js.map +1 -0
- package/dist/features/project-updates/adapters/outbound/inspectPendingModuleLifecycleEvidenceAsync.d.ts.map +1 -1
- package/dist/features/project-updates/adapters/outbound/inspectPendingModuleLifecycleEvidenceAsync.js +23 -59
- package/dist/features/project-updates/adapters/outbound/inspectPendingModuleLifecycleEvidenceAsync.js.map +1 -1
- package/dist/features/project-updates/adapters/outbound/readPendingModuleLifecycleStateAsync.d.ts +21 -0
- package/dist/features/project-updates/adapters/outbound/readPendingModuleLifecycleStateAsync.d.ts.map +1 -0
- package/dist/features/project-updates/adapters/outbound/readPendingModuleLifecycleStateAsync.js +35 -0
- package/dist/features/project-updates/adapters/outbound/readPendingModuleLifecycleStateAsync.js.map +1 -0
- package/dist/features/project-updates/adapters/outbound/readStudioManifestDigestAsync.d.ts +3 -0
- package/dist/features/project-updates/adapters/outbound/readStudioManifestDigestAsync.d.ts.map +1 -0
- package/dist/features/project-updates/adapters/outbound/readStudioManifestDigestAsync.js +9 -0
- package/dist/features/project-updates/adapters/outbound/readStudioManifestDigestAsync.js.map +1 -0
- package/dist/features/project-updates/adapters/outbound/resolveCurrentStudioApmArtifactAsync.d.ts +15 -0
- package/dist/features/project-updates/adapters/outbound/resolveCurrentStudioApmArtifactAsync.d.ts.map +1 -0
- package/dist/features/project-updates/adapters/outbound/resolveCurrentStudioApmArtifactAsync.js +32 -0
- package/dist/features/project-updates/adapters/outbound/resolveCurrentStudioApmArtifactAsync.js.map +1 -0
- package/dist/features/project-updates/application/StudioPendingModuleLifecyclePort.d.ts +6 -0
- package/dist/features/project-updates/application/StudioPendingModuleLifecyclePort.d.ts.map +1 -0
- package/dist/features/project-updates/application/StudioPendingModuleLifecyclePort.js +2 -0
- package/dist/features/project-updates/application/StudioPendingModuleLifecyclePort.js.map +1 -0
- package/dist/features/project-updates/application/planPendingModuleLifecycleAsync.d.ts +15 -0
- package/dist/features/project-updates/application/planPendingModuleLifecycleAsync.d.ts.map +1 -0
- package/dist/features/project-updates/application/planPendingModuleLifecycleAsync.js +214 -0
- package/dist/features/project-updates/application/planPendingModuleLifecycleAsync.js.map +1 -0
- package/dist/features/project-updates/composition/createStudioProjectUpdateApplyOwnerStepPort.d.ts +5 -0
- package/dist/features/project-updates/composition/createStudioProjectUpdateApplyOwnerStepPort.d.ts.map +1 -0
- package/dist/features/project-updates/composition/createStudioProjectUpdateApplyOwnerStepPort.js +171 -0
- package/dist/features/project-updates/composition/createStudioProjectUpdateApplyOwnerStepPort.js.map +1 -0
- package/dist/features/project-updates/composition/createStudioProjectUpdateProtocolPort.d.ts +9 -3
- package/dist/features/project-updates/composition/createStudioProjectUpdateProtocolPort.d.ts.map +1 -1
- package/dist/features/project-updates/composition/createStudioProjectUpdateProtocolPort.js +51 -12
- package/dist/features/project-updates/composition/createStudioProjectUpdateProtocolPort.js.map +1 -1
- package/dist/features/project-updates/composition/createStudioProjectUpdateService.d.ts +3 -2
- package/dist/features/project-updates/composition/createStudioProjectUpdateService.d.ts.map +1 -1
- package/dist/features/project-updates/composition/createStudioProjectUpdateService.js +13 -3
- package/dist/features/project-updates/composition/createStudioProjectUpdateService.js.map +1 -1
- package/dist/features/project-updates/composition/createStudioProjectUpdateVerifyOwnerStepPort.d.ts +5 -0
- package/dist/features/project-updates/composition/createStudioProjectUpdateVerifyOwnerStepPort.d.ts.map +1 -0
- package/dist/features/project-updates/composition/createStudioProjectUpdateVerifyOwnerStepPort.js +67 -0
- package/dist/features/project-updates/composition/createStudioProjectUpdateVerifyOwnerStepPort.js.map +1 -0
- package/dist/features/project-updates/domain/pendingModuleLifecycleState.d.ts +24 -0
- package/dist/features/project-updates/domain/pendingModuleLifecycleState.d.ts.map +1 -0
- package/dist/features/project-updates/domain/pendingModuleLifecycleState.js +48 -0
- package/dist/features/project-updates/domain/pendingModuleLifecycleState.js.map +1 -0
- package/dist/features/project-updates/domain/pendingModulePlanStep.d.ts +10 -0
- package/dist/features/project-updates/domain/pendingModulePlanStep.d.ts.map +1 -0
- package/dist/features/project-updates/domain/pendingModulePlanStep.js +25 -0
- package/dist/features/project-updates/domain/pendingModulePlanStep.js.map +1 -0
- package/dist/host/auth/projectAuthHealthService.d.ts +3 -4
- package/dist/host/auth/projectAuthHealthService.d.ts.map +1 -1
- package/dist/host/auth/projectAuthHealthService.js +14 -12
- package/dist/host/auth/projectAuthHealthService.js.map +1 -1
- package/dist/host/auth/projectAuthRuntimeDiagnostics.d.ts +10 -23
- package/dist/host/auth/projectAuthRuntimeDiagnostics.d.ts.map +1 -1
- package/dist/host/auth/projectAuthRuntimeDiagnostics.js +54 -118
- package/dist/host/auth/projectAuthRuntimeDiagnostics.js.map +1 -1
- package/dist/host/createStudioHost.d.ts +3 -3
- package/dist/host/createStudioHost.d.ts.map +1 -1
- package/dist/host/createStudioHost.js +5 -7
- package/dist/host/createStudioHost.js.map +1 -1
- package/dist/host/http/projectRuntimeRoutes.d.ts +2 -4
- package/dist/host/http/projectRuntimeRoutes.d.ts.map +1 -1
- package/dist/host/http/projectRuntimeRoutes.js +15 -44
- package/dist/host/http/projectRuntimeRoutes.js.map +1 -1
- package/dist/host/http/server.d.ts.map +1 -1
- package/dist/host/http/server.js +5 -91
- package/dist/host/http/server.js.map +1 -1
- package/dist/host/layout/auth/resolveAuthLayoutPlan.js +2 -2
- package/dist/host/layout/auth/resolveAuthLayoutPlan.js.map +1 -1
- package/dist/host/layout/layoutGenerator.d.ts.map +1 -1
- package/dist/host/layout/layoutGenerator.js +17 -13
- package/dist/host/layout/layoutGenerator.js.map +1 -1
- package/dist/host/manifestSystem/auth/shared/global.auth.system.tpl.js +1 -1
- package/dist/host/manifestSystem/auth/shared/global.auth.system.tpl.js.map +1 -1
- package/dist/host/media/projectMediaStorage.d.ts +1 -1
- package/dist/host/media/projectMediaStorage.d.ts.map +1 -1
- package/dist/host/media/projectMediaStorage.js +19 -28
- package/dist/host/media/projectMediaStorage.js.map +1 -1
- package/dist/host/orchestrator/createHostModuleOrchestrator.d.ts +4 -0
- package/dist/host/orchestrator/createHostModuleOrchestrator.d.ts.map +1 -0
- package/dist/host/orchestrator/createHostModuleOrchestrator.js +10 -0
- package/dist/host/orchestrator/createHostModuleOrchestrator.js.map +1 -0
- package/dist/host/orchestrator/createStudioPendingModuleLifecyclePort.d.ts +4 -0
- package/dist/host/orchestrator/createStudioPendingModuleLifecyclePort.d.ts.map +1 -0
- package/dist/host/orchestrator/createStudioPendingModuleLifecyclePort.js +20 -0
- package/dist/host/orchestrator/createStudioPendingModuleLifecyclePort.js.map +1 -0
- package/dist/host/orchestrator/moduleManager.d.ts.map +1 -1
- package/dist/host/orchestrator/moduleManager.js +6 -9
- package/dist/host/orchestrator/moduleManager.js.map +1 -1
- package/dist/host/orchestrator/projectManager.d.ts +16 -21
- package/dist/host/orchestrator/projectManager.d.ts.map +1 -1
- package/dist/host/orchestrator/projectManager.js +62 -55
- package/dist/host/orchestrator/projectManager.js.map +1 -1
- package/dist/host/orchestrator/studioInfraUp.d.ts +5 -11
- package/dist/host/orchestrator/studioInfraUp.d.ts.map +1 -1
- package/dist/host/orchestrator/studioInfraUp.js +8 -36
- package/dist/host/orchestrator/studioInfraUp.js.map +1 -1
- package/dist/host/secrets/projectSecretService.d.ts +2 -3
- package/dist/host/secrets/projectSecretService.d.ts.map +1 -1
- package/dist/host/secrets/projectSecretService.js +24 -46
- package/dist/host/secrets/projectSecretService.js.map +1 -1
- package/dist/host/secrets/resolveProjectSecretDatabaseUrl.d.ts +3 -5
- package/dist/host/secrets/resolveProjectSecretDatabaseUrl.d.ts.map +1 -1
- package/dist/host/secrets/resolveProjectSecretDatabaseUrl.js +4 -11
- package/dist/host/secrets/resolveProjectSecretDatabaseUrl.js.map +1 -1
- package/dist/host/secrets/trustedOAuthInfraEnvironment.d.ts.map +1 -1
- package/dist/host/secrets/trustedOAuthInfraEnvironment.js +2 -2
- package/dist/host/secrets/trustedOAuthInfraEnvironment.js.map +1 -1
- package/dist/manifestState.d.ts.map +1 -1
- package/dist/manifestState.js +13 -8
- package/dist/manifestState.js.map +1 -1
- package/dist/manifestSync.js +1 -1
- package/dist/manifestSync.js.map +1 -1
- package/dist/projectAuthApi.d.ts +2 -2
- package/dist/projectAuthApi.d.ts.map +1 -1
- package/dist/projectAuthApi.js +6 -6
- package/dist/projectAuthApi.js.map +1 -1
- package/dist/projectAuthHealth.d.ts +4 -3
- package/dist/projectAuthHealth.d.ts.map +1 -1
- package/dist/projectAuthHealth.js +8 -6
- package/dist/projectAuthHealth.js.map +1 -1
- package/dist/projectAuthRuntimeDiagnostics.d.ts +2 -1
- package/dist/projectAuthRuntimeDiagnostics.d.ts.map +1 -1
- package/dist/projectAuthRuntimeDiagnostics.js.map +1 -1
- package/dist/projectDeployRuntimeInput.d.ts +2 -2
- package/dist/projectDeployRuntimeInput.d.ts.map +1 -1
- package/dist/projectOAuthSetup.d.ts +4 -3
- package/dist/projectOAuthSetup.d.ts.map +1 -1
- package/dist/projectOAuthSetup.js +3 -2
- package/dist/projectOAuthSetup.js.map +1 -1
- package/dist/projectSecretUsage.js +17 -16
- package/dist/projectSecretUsage.js.map +1 -1
- package/dist/ui/admin/pages/AuthAdminPage.d.ts.map +1 -1
- package/dist/ui/admin/pages/AuthAdminPage.js +21 -10
- package/dist/ui/admin/pages/AuthAdminPage.js.map +1 -1
- package/dist/ui/admin/pages/OverviewAdminPage.js +1 -1
- package/dist/ui/admin/pages/OverviewAdminPage.js.map +1 -1
- package/dist/ui/admin/pages/adminAuthCredentialFlow.js +0 -1
- package/dist/ui/admin/pages/adminAuthCredentialFlow.js.map +1 -1
- package/dist/ui/admin/pages/deploy/DeployMonetizationSyncCard.d.ts.map +1 -1
- package/dist/ui/admin/pages/deploy/DeployMonetizationSyncCard.js +2 -2
- package/dist/ui/admin/pages/deploy/DeployMonetizationSyncCard.js.map +1 -1
- package/dist/ui/admin/pages/deploy/DeployReleaseOperationsCard.d.ts.map +1 -1
- package/dist/ui/admin/pages/deploy/DeployReleaseOperationsCard.js +2 -2
- package/dist/ui/admin/pages/deploy/DeployReleaseOperationsCard.js.map +1 -1
- package/package.json +9 -6
- package/dist/host/orchestrator/infraSession.d.ts +0 -31
- package/dist/host/orchestrator/infraSession.d.ts.map +0 -1
- package/dist/host/orchestrator/infraSession.js +0 -79
- package/dist/host/orchestrator/infraSession.js.map +0 -1
- package/dist/host/utils/trimOutput.d.ts +0 -11
- package/dist/host/utils/trimOutput.d.ts.map +0 -1
- package/dist/host/utils/trimOutput.js +0 -9
- package/dist/host/utils/trimOutput.js.map +0 -1
|
@@ -1,13 +1,12 @@
|
|
|
1
1
|
import type { ProjectAuthHealth } from '../../projectAuthHealth';
|
|
2
2
|
import type { ProjectManager } from '../orchestrator/projectManager';
|
|
3
3
|
import type { ProjectSecretService } from '../secrets/projectSecretService';
|
|
4
|
-
type ProjectAuthHealthManager = Pick<ProjectManager, 'getInfrastructureStatus' | 'getProjectManifest'>;
|
|
4
|
+
type ProjectAuthHealthManager = Pick<ProjectManager, 'getInfrastructureOutputs' | 'getInfrastructureStatus' | 'getProjectManifest'>;
|
|
5
5
|
export declare class ProjectAuthHealthService {
|
|
6
6
|
private readonly projectManager;
|
|
7
7
|
private readonly secretService;
|
|
8
|
-
private readonly workspaceRoot;
|
|
9
8
|
/***
|
|
10
|
-
* Create the Studio host service that combines authored Auth state, secret availability, and
|
|
9
|
+
* Create the Studio host service that combines authored Auth state, secret availability, and provider-neutral Infra diagnostics.
|
|
11
10
|
* @todo Move this service under the auth domain's host/application boundary.
|
|
12
11
|
*/
|
|
13
12
|
constructor(options: {
|
|
@@ -15,7 +14,7 @@ export declare class ProjectAuthHealthService {
|
|
|
15
14
|
readonly secretService: Pick<ProjectSecretService, 'list'>;
|
|
16
15
|
readonly workspaceRoot: string;
|
|
17
16
|
});
|
|
18
|
-
/*** Resolve one project's bounded Auth health result without
|
|
17
|
+
/*** Resolve one project's bounded Auth health result without relying on provider-specific runtime scripts. */
|
|
19
18
|
get(input: {
|
|
20
19
|
readonly projectId: string;
|
|
21
20
|
readonly environment?: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"projectAuthHealthService.d.ts","sourceRoot":"","sources":["../../../src/host/auth/projectAuthHealthService.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"projectAuthHealthService.d.ts","sourceRoot":"","sources":["../../../src/host/auth/projectAuthHealthService.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAIjE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAC;AACrE,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,iCAAiC,CAAC;AAG5E,KAAK,wBAAwB,GAAG,IAAI,CAClC,cAAc,EACd,0BAA0B,GAAG,yBAAyB,GAAG,oBAAoB,CAC9E,CAAC;AAEF,qBAAa,wBAAwB;IACnC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAA2B;IAC1D,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAqC;IAEnE;;;OAGG;gBACS,OAAO,EAAE;QACnB,QAAQ,CAAC,cAAc,EAAE,wBAAwB,CAAC;QAClD,QAAQ,CAAC,aAAa,EAAE,IAAI,CAAC,oBAAoB,EAAE,MAAM,CAAC,CAAC;QAC3D,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;KAChC;IAKD,8GAA8G;IACxG,GAAG,CAAC,KAAK,EAAE;QACf,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;QAC3B,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;KAC/B,GAAG,OAAO,CAAC,uBAAuB,CAAC;CAqErC;AAED,MAAM,MAAM,uBAAuB,GAC/B;IACE,QAAQ,CAAC,EAAE,EAAE,IAAI,CAAC;IAClB,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC;IACzB,QAAQ,CAAC,IAAI,EAAE,iBAAiB,CAAC;CAClC,GACD;IACE,QAAQ,CAAC,EAAE,EAAE,KAAK,CAAC;IACnB,QAAQ,CAAC,KAAK,EAAE;QACd,QAAQ,CAAC,IAAI,EAAE,sBAAsB,CAAC;QACtC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;KAC1B,CAAC;CACH,CAAC"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { readOwnProperty } from '@ankhorage/utility/object';
|
|
1
2
|
import { analyzeProjectAuthHealth } from '../../projectAuthHealth';
|
|
2
3
|
import { applyProjectAuthRuntimeDiagnostics } from '../../projectAuthRuntimeDiagnostics';
|
|
3
4
|
import { resolveProjectAuthEnvironment } from '../../projectOAuthSetup';
|
|
@@ -5,17 +6,15 @@ import { observeProjectAuthRuntimeDiagnostics } from './projectAuthRuntimeDiagno
|
|
|
5
6
|
export class ProjectAuthHealthService {
|
|
6
7
|
projectManager;
|
|
7
8
|
secretService;
|
|
8
|
-
workspaceRoot;
|
|
9
9
|
/***
|
|
10
|
-
* Create the Studio host service that combines authored Auth state, secret availability, and
|
|
10
|
+
* Create the Studio host service that combines authored Auth state, secret availability, and provider-neutral Infra diagnostics.
|
|
11
11
|
* @todo Move this service under the auth domain's host/application boundary.
|
|
12
12
|
*/
|
|
13
13
|
constructor(options) {
|
|
14
14
|
this.projectManager = options.projectManager;
|
|
15
15
|
this.secretService = options.secretService;
|
|
16
|
-
this.workspaceRoot = options.workspaceRoot;
|
|
17
16
|
}
|
|
18
|
-
/*** Resolve one project's bounded Auth health result without
|
|
17
|
+
/*** Resolve one project's bounded Auth health result without relying on provider-specific runtime scripts. */
|
|
19
18
|
async get(input) {
|
|
20
19
|
let manifest;
|
|
21
20
|
try {
|
|
@@ -41,7 +40,8 @@ export class ProjectAuthHealthService {
|
|
|
41
40
|
secretStoreAvailable: secretResult.ok,
|
|
42
41
|
environment,
|
|
43
42
|
});
|
|
44
|
-
const
|
|
43
|
+
const environmentSpec = readOwnProperty(manifest.infra.environments, environment);
|
|
44
|
+
const oauth = environmentSpec?.auth?.oauth;
|
|
45
45
|
if (!oauth?.enabled || !oauth.providers.some((provider) => provider.enabled === true)) {
|
|
46
46
|
return {
|
|
47
47
|
ok: true,
|
|
@@ -50,14 +50,16 @@ export class ProjectAuthHealthService {
|
|
|
50
50
|
};
|
|
51
51
|
}
|
|
52
52
|
try {
|
|
53
|
-
const infraStatus = await
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
53
|
+
const [infraStatus, infraOutputs] = await Promise.all([
|
|
54
|
+
this.projectManager.getInfrastructureStatus(input.projectId),
|
|
55
|
+
this.projectManager.getInfrastructureOutputs(input.projectId),
|
|
56
|
+
]);
|
|
57
|
+
const publicBaseUrl = environmentSpec?.networking?.publicBaseUrl;
|
|
58
|
+
const runtimeDiagnostics = observeProjectAuthRuntimeDiagnostics({
|
|
59
|
+
status: infraStatus,
|
|
60
|
+
outputs: infraOutputs.outputs,
|
|
60
61
|
callbackRoute: oauth.callbackRoute,
|
|
62
|
+
...(publicBaseUrl ? { publicBaseUrl } : {}),
|
|
61
63
|
});
|
|
62
64
|
return {
|
|
63
65
|
ok: true,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"projectAuthHealthService.js","sourceRoot":"","sources":["../../../src/host/auth/projectAuthHealthService.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,wBAAwB,EAAE,MAAM,yBAAyB,CAAC;AACnE,OAAO,EAAE,kCAAkC,EAAE,MAAM,qCAAqC,CAAC;AACzF,OAAO,EAAE,6BAA6B,EAAE,MAAM,yBAAyB,CAAC;AAGxE,OAAO,EAAE,oCAAoC,EAAE,MAAM,iCAAiC,CAAC;AAOvF,MAAM,OAAO,wBAAwB;IAClB,cAAc,CAA2B;IACzC,aAAa,CAAqC;
|
|
1
|
+
{"version":3,"file":"projectAuthHealthService.js","sourceRoot":"","sources":["../../../src/host/auth/projectAuthHealthService.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,34 +1,21 @@
|
|
|
1
|
-
import type {
|
|
2
|
-
import type { ProjectAuthRuntimeDiagnostics
|
|
1
|
+
import type { InfraOutput, InfraStatus } from '@ankhorage/contracts/infra';
|
|
2
|
+
import type { ProjectAuthRuntimeDiagnostics } from '../../projectAuthRuntimeDiagnostics';
|
|
3
3
|
export interface ProjectAuthRedirectRuntime {
|
|
4
4
|
readonly providerRedirectUrl: string;
|
|
5
|
-
readonly siteUrl: string;
|
|
6
5
|
readonly appCallbackTargets: readonly string[];
|
|
7
6
|
readonly redirectAllowList: readonly string[];
|
|
8
7
|
}
|
|
9
|
-
|
|
10
|
-
readonly rolloutStatus: ProjectAuthRuntimeRolloutStatus;
|
|
11
|
-
readonly providerRedirectUrl?: string;
|
|
12
|
-
readonly appCallbackUrl?: string;
|
|
13
|
-
}
|
|
14
|
-
/***
|
|
15
|
-
* Observe generated Auth redirect configuration and runtime lifecycle status for one Studio project.
|
|
16
|
-
* @todo Keep this generated-infra observation under the auth domain's host adapter.
|
|
17
|
-
*/
|
|
8
|
+
/*** Observe Auth redirect configuration and rollout readiness from provider-neutral Infra outputs and status. */
|
|
18
9
|
export declare function observeProjectAuthRuntimeDiagnostics(input: {
|
|
19
|
-
readonly rootPath: string;
|
|
20
|
-
readonly projectId: string;
|
|
21
|
-
readonly target: string | null;
|
|
22
|
-
readonly generated: boolean;
|
|
23
|
-
readonly environment: AuthRedirectEnvironment;
|
|
24
10
|
readonly callbackRoute: string;
|
|
25
|
-
|
|
26
|
-
|
|
11
|
+
readonly outputs: readonly InfraOutput[];
|
|
12
|
+
readonly publicBaseUrl?: string;
|
|
13
|
+
readonly status: InfraStatus;
|
|
14
|
+
}): ProjectAuthRuntimeDiagnostics;
|
|
15
|
+
/*** Resolve canonical Auth callback URLs from current public Infra outputs and authored networking intent. */
|
|
27
16
|
export declare function resolveProjectAuthRedirectRuntime(input: {
|
|
28
|
-
readonly environment: AuthRedirectEnvironment;
|
|
29
17
|
readonly callbackRoute: string;
|
|
30
|
-
readonly
|
|
18
|
+
readonly outputs: readonly InfraOutput[];
|
|
19
|
+
readonly publicBaseUrl?: string;
|
|
31
20
|
}): ProjectAuthRedirectRuntime;
|
|
32
|
-
/*** Parse bounded Auth provider callback and readiness values from generated infrastructure status output. */
|
|
33
|
-
export declare function parseProjectAuthRuntimeStatus(stdout: string): ParsedProjectAuthRuntimeStatus;
|
|
34
21
|
//# sourceMappingURL=projectAuthRuntimeDiagnostics.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"projectAuthRuntimeDiagnostics.d.ts","sourceRoot":"","sources":["../../../src/host/auth/projectAuthRuntimeDiagnostics.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"projectAuthRuntimeDiagnostics.d.ts","sourceRoot":"","sources":["../../../src/host/auth/projectAuthRuntimeDiagnostics.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAE3E,OAAO,KAAK,EAAE,6BAA6B,EAAE,MAAM,qCAAqC,CAAC;AAEzF,MAAM,WAAW,0BAA0B;IACzC,QAAQ,CAAC,mBAAmB,EAAE,MAAM,CAAC;IACrC,QAAQ,CAAC,kBAAkB,EAAE,SAAS,MAAM,EAAE,CAAC;IAC/C,QAAQ,CAAC,iBAAiB,EAAE,SAAS,MAAM,EAAE,CAAC;CAC/C;AAED,iHAAiH;AACjH,wBAAgB,oCAAoC,CAAC,KAAK,EAAE;IAC1D,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,OAAO,EAAE,SAAS,WAAW,EAAE,CAAC;IACzC,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC;CAC9B,GAAG,6BAA6B,CAahC;AAED,8GAA8G;AAC9G,wBAAgB,iCAAiC,CAAC,KAAK,EAAE;IACvD,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,OAAO,EAAE,SAAS,WAAW,EAAE,CAAC;IACzC,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC;CACjC,GAAG,0BAA0B,CAsB7B"}
|
|
@@ -1,128 +1,64 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
'APP_PORT_FORWARD_LOCAL_PORT',
|
|
9
|
-
'EXPO_PUBLIC_SUPABASE_URL',
|
|
10
|
-
'OAUTH_NATIVE_REDIRECT_URLS',
|
|
11
|
-
'SITE_URL',
|
|
12
|
-
'SUPABASE_GATEWAY_FORWARD_LOCAL_PORT',
|
|
13
|
-
];
|
|
14
|
-
/***
|
|
15
|
-
* Observe generated Auth redirect configuration and runtime lifecycle status for one Studio project.
|
|
16
|
-
* @todo Keep this generated-infra observation under the auth domain's host adapter.
|
|
17
|
-
*/
|
|
18
|
-
export async function observeProjectAuthRuntimeDiagnostics(input) {
|
|
19
|
-
if (!input.generated || !input.target) {
|
|
20
|
-
return {
|
|
21
|
-
appCallbackTargets: [],
|
|
22
|
-
redirectAllowList: [],
|
|
23
|
-
rolloutStatus: 'not-generated',
|
|
24
|
-
};
|
|
25
|
-
}
|
|
26
|
-
const diagnostics = [];
|
|
27
|
-
const projectPath = getProjectPath(input.rootPath, input.projectId);
|
|
28
|
-
let expected = null;
|
|
29
|
-
try {
|
|
30
|
-
const environment = await readProjectInfrastructureEnvironment({
|
|
31
|
-
keys: SAFE_INFRA_ENV_KEYS,
|
|
32
|
-
projectPath,
|
|
33
|
-
target: input.target,
|
|
34
|
-
});
|
|
35
|
-
expected = resolveProjectAuthRedirectRuntime({
|
|
36
|
-
environment: input.environment,
|
|
37
|
-
callbackRoute: input.callbackRoute,
|
|
38
|
-
infraEnvironment: environment,
|
|
39
|
-
});
|
|
40
|
-
}
|
|
41
|
-
catch {
|
|
42
|
-
diagnostics.push({
|
|
43
|
-
code: 'auth_redirect_configuration_unavailable',
|
|
44
|
-
severity: 'warning',
|
|
45
|
-
message: 'Canonical Auth callback diagnostics could not be derived from generated Infra.',
|
|
46
|
-
path: 'infra.auth.oauth',
|
|
47
|
-
});
|
|
48
|
-
}
|
|
49
|
-
let observed = { rolloutStatus: 'unavailable' };
|
|
50
|
-
try {
|
|
51
|
-
const status = await runProjectInfrastructureLifecycle({
|
|
52
|
-
projectId: input.projectId,
|
|
53
|
-
projectPath,
|
|
54
|
-
target: input.target,
|
|
55
|
-
script: 'status',
|
|
56
|
-
});
|
|
57
|
-
observed = parseProjectAuthRuntimeStatus(status.stdout);
|
|
58
|
-
}
|
|
59
|
-
catch {
|
|
60
|
-
// The public health result deliberately reports only a bounded state, never script output.
|
|
61
|
-
}
|
|
62
|
-
if (expected?.providerRedirectUrl &&
|
|
63
|
-
observed.providerRedirectUrl &&
|
|
64
|
-
expected.providerRedirectUrl !== observed.providerRedirectUrl) {
|
|
65
|
-
diagnostics.push({
|
|
66
|
-
code: 'auth_runtime_provider_callback_stale',
|
|
67
|
-
severity: 'error',
|
|
68
|
-
message: 'The running Auth provider callback does not match generated Infra configuration.',
|
|
69
|
-
path: 'infra.auth.oauth.providerCallback',
|
|
70
|
-
});
|
|
71
|
-
}
|
|
72
|
-
const expectedAppCallbackUrl = expected?.appCallbackTargets.find(isExactHttpUrl);
|
|
73
|
-
if (expectedAppCallbackUrl &&
|
|
74
|
-
observed.appCallbackUrl &&
|
|
75
|
-
expectedAppCallbackUrl !== observed.appCallbackUrl) {
|
|
76
|
-
diagnostics.push({
|
|
77
|
-
code: 'auth_runtime_app_callback_stale',
|
|
78
|
-
severity: 'error',
|
|
79
|
-
message: 'The running Auth app callback does not match generated Infra configuration.',
|
|
80
|
-
path: 'infra.auth.oauth.callbackRoute',
|
|
81
|
-
});
|
|
82
|
-
}
|
|
1
|
+
/*** Observe Auth redirect configuration and rollout readiness from provider-neutral Infra outputs and status. */
|
|
2
|
+
export function observeProjectAuthRuntimeDiagnostics(input) {
|
|
3
|
+
const expected = resolveProjectAuthRedirectRuntime({
|
|
4
|
+
callbackRoute: input.callbackRoute,
|
|
5
|
+
outputs: input.outputs,
|
|
6
|
+
...(input.publicBaseUrl ? { publicBaseUrl: input.publicBaseUrl } : {}),
|
|
7
|
+
});
|
|
83
8
|
return {
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
: {}),
|
|
89
|
-
appCallbackTargets: expected?.appCallbackTargets ?? [],
|
|
90
|
-
redirectAllowList: expected?.redirectAllowList ?? [],
|
|
91
|
-
rolloutStatus: observed.rolloutStatus,
|
|
92
|
-
diagnostics,
|
|
9
|
+
providerRedirectUrl: expected.providerRedirectUrl,
|
|
10
|
+
appCallbackTargets: expected.appCallbackTargets,
|
|
11
|
+
redirectAllowList: expected.redirectAllowList,
|
|
12
|
+
rolloutStatus: resolveProjectAuthRolloutStatus(input.status),
|
|
93
13
|
};
|
|
94
14
|
}
|
|
95
|
-
/*** Resolve canonical Auth
|
|
15
|
+
/*** Resolve canonical Auth callback URLs from current public Infra outputs and authored networking intent. */
|
|
96
16
|
export function resolveProjectAuthRedirectRuntime(input) {
|
|
97
|
-
const
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
throw new Error('Generated Infra does not expose canonical app and gateway origins.');
|
|
17
|
+
const supabaseUrl = readPublicEnvironmentOutput(input.outputs, 'EXPO_PUBLIC_SUPABASE_URL');
|
|
18
|
+
if (!supabaseUrl) {
|
|
19
|
+
throw new Error('Infra does not expose EXPO_PUBLIC_SUPABASE_URL for Auth diagnostics.');
|
|
101
20
|
}
|
|
102
|
-
const
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
});
|
|
21
|
+
const providerRedirectUrl = new URL('/auth/v1/callback', ensureTrailingSlash(supabaseUrl)).toString();
|
|
22
|
+
const publicBaseUrl = input.publicBaseUrl?.trim();
|
|
23
|
+
if (!publicBaseUrl) {
|
|
24
|
+
return { providerRedirectUrl, appCallbackTargets: [], redirectAllowList: [] };
|
|
25
|
+
}
|
|
26
|
+
const siteUrl = ensureTrailingSlash(publicBaseUrl);
|
|
27
|
+
const appCallbackUrl = new URL(normalizeCallbackRoute(input.callbackRoute), siteUrl).toString();
|
|
110
28
|
return {
|
|
111
|
-
providerRedirectUrl
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
redirectAllowList: configuration.redirectAllowList,
|
|
29
|
+
providerRedirectUrl,
|
|
30
|
+
appCallbackTargets: [appCallbackUrl],
|
|
31
|
+
redirectAllowList: [siteUrl, appCallbackUrl],
|
|
115
32
|
};
|
|
116
33
|
}
|
|
117
|
-
/***
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
34
|
+
/*** Map provider-neutral Infra status to the bounded Auth rollout state exposed by Studio. */
|
|
35
|
+
function resolveProjectAuthRolloutStatus(status) {
|
|
36
|
+
if (status.state === 'ready')
|
|
37
|
+
return 'ready';
|
|
38
|
+
if (status.state === 'absent')
|
|
39
|
+
return 'not-generated';
|
|
40
|
+
if (status.state === 'pending' ||
|
|
41
|
+
status.state === 'degraded' ||
|
|
42
|
+
status.state === 'failed' ||
|
|
43
|
+
status.state === 'stopped') {
|
|
44
|
+
return 'not-ready';
|
|
45
|
+
}
|
|
46
|
+
return 'unavailable';
|
|
47
|
+
}
|
|
48
|
+
/*** Read one non-empty public Infra output by its application environment-variable name. */
|
|
49
|
+
function readPublicEnvironmentOutput(outputs, environmentVariable) {
|
|
50
|
+
const output = outputs.find((candidate) => candidate.visibility === 'public' && candidate.environmentVariable === environmentVariable);
|
|
51
|
+
if (output?.visibility !== 'public')
|
|
52
|
+
return undefined;
|
|
53
|
+
const value = String(output.value).trim();
|
|
54
|
+
return value.length > 0 ? value : undefined;
|
|
55
|
+
}
|
|
56
|
+
/*** Normalize an HTTP base URL to a trailing-slash form compatible with URL resolution. */
|
|
57
|
+
function ensureTrailingSlash(value) {
|
|
58
|
+
return value.endsWith('/') ? value : `${value}/`;
|
|
59
|
+
}
|
|
60
|
+
/*** Normalize one authored callback route to a relative URL path. */
|
|
61
|
+
function normalizeCallbackRoute(value) {
|
|
62
|
+
return value.trim().replace(/^\/+/, '');
|
|
127
63
|
}
|
|
128
64
|
//# sourceMappingURL=projectAuthRuntimeDiagnostics.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"projectAuthRuntimeDiagnostics.js","sourceRoot":"","sources":["../../../src/host/auth/projectAuthRuntimeDiagnostics.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"projectAuthRuntimeDiagnostics.js","sourceRoot":"","sources":["../../../src/host/auth/projectAuthRuntimeDiagnostics.ts"],"names":[],"mappings":"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"}
|
|
@@ -5,7 +5,7 @@ export interface CreateStudioHostOptions {
|
|
|
5
5
|
readonly workspaceRoot: string;
|
|
6
6
|
}
|
|
7
7
|
/***
|
|
8
|
-
* Compose the Studio host edge from project, module, update, deploy, and infrastructure
|
|
8
|
+
* Compose the Studio host edge from project, module, update, deploy, and infrastructure lifecycle owners.
|
|
9
9
|
* @todo Keep this as thin host composition while moving domain services out of host-owned folders.
|
|
10
10
|
*/
|
|
11
11
|
export declare function createStudioHost(options: CreateStudioHostOptions): {
|
|
@@ -14,8 +14,8 @@ export declare function createStudioHost(options: CreateStudioHostOptions): {
|
|
|
14
14
|
moduleManager: ModuleManager;
|
|
15
15
|
projectUpdateService: import(".").ProjectUpdateService;
|
|
16
16
|
projectDeployService: ProjectDeployService;
|
|
17
|
-
/*** Close host-owned
|
|
18
|
-
close()
|
|
17
|
+
/*** Close Studio host-owned resources. Provider-neutral Infra lifecycle operations own their own runtime handles. */
|
|
18
|
+
close: () => void;
|
|
19
19
|
};
|
|
20
20
|
export type StudioHost = ReturnType<typeof createStudioHost>;
|
|
21
21
|
//# sourceMappingURL=createStudioHost.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createStudioHost.d.ts","sourceRoot":"","sources":["../../src/host/createStudioHost.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,oBAAoB,EAAE,MAAM,+BAA+B,CAAC;AAErE,OAAO,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAC7D,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAE/D,MAAM,WAAW,uBAAuB;IACtC,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;CAChC;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,uBAAuB;;;;;;
|
|
1
|
+
{"version":3,"file":"createStudioHost.d.ts","sourceRoot":"","sources":["../../src/host/createStudioHost.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,oBAAoB,EAAE,MAAM,+BAA+B,CAAC;AAErE,OAAO,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAC7D,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAE/D,MAAM,WAAW,uBAAuB;IACtC,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;CAChC;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,uBAAuB;;;;;;IAiB7D,qHAAqH;iBAC1G,IAAI;EAElB;AAED,MAAM,MAAM,UAAU,GAAG,UAAU,CAAC,OAAO,gBAAgB,CAAC,CAAC"}
|
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
import { createStudioProjectUpdateService } from '../features/project-updates/composition/createStudioProjectUpdateService';
|
|
2
2
|
import { ProjectDeployService } from './deploy/ProjectDeployService';
|
|
3
|
-
import {
|
|
3
|
+
import { createStudioPendingModuleLifecyclePort } from './orchestrator/createStudioPendingModuleLifecyclePort';
|
|
4
4
|
import { ModuleManager } from './orchestrator/moduleManager';
|
|
5
5
|
import { ProjectManager } from './orchestrator/projectManager';
|
|
6
6
|
/***
|
|
7
|
-
* Compose the Studio host edge from project, module, update, deploy, and infrastructure
|
|
7
|
+
* Compose the Studio host edge from project, module, update, deploy, and infrastructure lifecycle owners.
|
|
8
8
|
* @todo Keep this as thin host composition while moving domain services out of host-owned folders.
|
|
9
9
|
*/
|
|
10
10
|
export function createStudioHost(options) {
|
|
11
11
|
const projectManager = new ProjectManager(options.workspaceRoot);
|
|
12
12
|
const moduleManager = new ModuleManager(options.workspaceRoot);
|
|
13
|
-
const projectUpdateService = createStudioProjectUpdateService();
|
|
13
|
+
const projectUpdateService = createStudioProjectUpdateService({}, createStudioPendingModuleLifecyclePort());
|
|
14
14
|
const projectDeployService = new ProjectDeployService({
|
|
15
15
|
projectManager,
|
|
16
16
|
workspaceRoot: options.workspaceRoot,
|
|
@@ -21,10 +21,8 @@ export function createStudioHost(options) {
|
|
|
21
21
|
moduleManager,
|
|
22
22
|
projectUpdateService,
|
|
23
23
|
projectDeployService,
|
|
24
|
-
/*** Close host-owned
|
|
25
|
-
|
|
26
|
-
await stopAllProjectInfraPortForwards();
|
|
27
|
-
},
|
|
24
|
+
/*** Close Studio host-owned resources. Provider-neutral Infra lifecycle operations own their own runtime handles. */
|
|
25
|
+
close: () => undefined,
|
|
28
26
|
};
|
|
29
27
|
}
|
|
30
28
|
//# sourceMappingURL=createStudioHost.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createStudioHost.js","sourceRoot":"","sources":["../../src/host/createStudioHost.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gCAAgC,EAAE,MAAM,0EAA0E,CAAC;AAC5H,OAAO,EAAE,oBAAoB,EAAE,MAAM,+BAA+B,CAAC;AACrE,OAAO,EAAE
|
|
1
|
+
{"version":3,"file":"createStudioHost.js","sourceRoot":"","sources":["../../src/host/createStudioHost.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gCAAgC,EAAE,MAAM,0EAA0E,CAAC;AAC5H,OAAO,EAAE,oBAAoB,EAAE,MAAM,+BAA+B,CAAC;AACrE,OAAO,EAAE,sCAAsC,EAAE,MAAM,uDAAuD,CAAC;AAC/G,OAAO,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAC7D,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAM/D;;;GAGG;AACH,MAAM,UAAU,gBAAgB,CAAC,OAAgC;IAC/D,MAAM,cAAc,GAAG,IAAI,cAAc,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;IACjE,MAAM,aAAa,GAAG,IAAI,aAAa,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;IAC/D,MAAM,oBAAoB,GAAG,gCAAgC,CAC3D,EAAE,EACF,sCAAsC,EAAE,CACzC,CAAC;IACF,MAAM,oBAAoB,GAAG,IAAI,oBAAoB,CAAC;QACpD,cAAc;QACd,aAAa,EAAE,OAAO,CAAC,aAAa;KACrC,CAAC,CAAC;IACH,OAAO;QACL,aAAa,EAAE,OAAO,CAAC,aAAa;QACpC,cAAc;QACd,aAAa;QACb,oBAAoB;QACpB,oBAAoB;QACpB,qHAAqH;QACrH,KAAK,EAAE,GAAS,EAAE,CAAC,SAAS;KAC7B,CAAC;AACJ,CAAC"}
|
|
@@ -1,12 +1,10 @@
|
|
|
1
1
|
import type { FastifyInstance } from 'fastify';
|
|
2
|
-
import { type InfraSessionDependencies } from '../orchestrator/infraSession';
|
|
3
2
|
import type { ProjectManager } from '../orchestrator/projectManager';
|
|
4
|
-
type ProjectRuntimeManager = Pick<ProjectManager, '
|
|
5
|
-
/*** Register
|
|
3
|
+
type ProjectRuntimeManager = Pick<ProjectManager, 'upInfrastructure'>;
|
|
4
|
+
/*** Register the provider-neutral infrastructure runtime recovery HTTP adapter. */
|
|
6
5
|
export declare function registerProjectRuntimeRoutes(fastify: FastifyInstance, options: {
|
|
7
6
|
readonly projectManager: ProjectRuntimeManager;
|
|
8
7
|
readonly workspaceRoot: string;
|
|
9
|
-
readonly dependencies?: InfraSessionDependencies;
|
|
10
8
|
}): void;
|
|
11
9
|
export {};
|
|
12
10
|
//# sourceMappingURL=projectRuntimeRoutes.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"projectRuntimeRoutes.d.ts","sourceRoot":"","sources":["../../../src/host/http/projectRuntimeRoutes.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,
|
|
1
|
+
{"version":3,"file":"projectRuntimeRoutes.d.ts","sourceRoot":"","sources":["../../../src/host/http/projectRuntimeRoutes.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAgB,MAAM,SAAS,CAAC;AAE7D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAC;AAErE,KAAK,qBAAqB,GAAG,IAAI,CAAC,cAAc,EAAE,kBAAkB,CAAC,CAAC;AAEtE,mFAAmF;AACnF,wBAAgB,4BAA4B,CAC1C,OAAO,EAAE,eAAe,EACxB,OAAO,EAAE;IACP,QAAQ,CAAC,cAAc,EAAE,qBAAqB,CAAC;IAC/C,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;CAChC,GACA,IAAI,CAWN"}
|
|
@@ -1,49 +1,20 @@
|
|
|
1
|
-
|
|
2
|
-
import { getProjectPath } from '../orchestrator/projectPaths';
|
|
3
|
-
/*** Register Studio project-launch and infrastructure-runtime ensure HTTP adapters. */
|
|
1
|
+
/*** Register the provider-neutral infrastructure runtime recovery HTTP adapter. */
|
|
4
2
|
export function registerProjectRuntimeRoutes(fastify, options) {
|
|
5
|
-
/***
|
|
6
|
-
fastify.post('/api/projects/:id/
|
|
7
|
-
const
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
url: runtime.url,
|
|
12
|
-
started: runtime.started,
|
|
13
|
-
};
|
|
14
|
-
}));
|
|
15
|
-
/*** Ensure the project's infrastructure runtime session is active. */
|
|
16
|
-
fastify.post('/api/projects/:id/infra/runtime/ensure', (request, reply) => handleProjectRuntimeRequest(request, reply, options, async ({ args, target }) => {
|
|
17
|
-
await ensureProjectInfrastructureRuntimeSession(args, options.dependencies);
|
|
18
|
-
return { success: true, target };
|
|
19
|
-
}));
|
|
20
|
-
}
|
|
21
|
-
/***
|
|
22
|
-
* Resolve project runtime target/path context, honor skipped projects, execute an injected runtime action, and translate failures to HTTP 500.
|
|
23
|
-
* @todo Keep this project/infra runtime orchestration in the deploy/runtime application owner rather than extracting it as a generic HTTP helper.
|
|
24
|
-
*/
|
|
25
|
-
async function handleProjectRuntimeRequest(request, reply, options, run) {
|
|
26
|
-
const { id } = request.params;
|
|
27
|
-
try {
|
|
28
|
-
const status = await options.projectManager.getInfrastructureStatus(id);
|
|
29
|
-
if (status.skipped) {
|
|
30
|
-
return { success: true, skipped: status.skipped };
|
|
3
|
+
/*** Reconcile the project's local infrastructure environment to its desired running state. */
|
|
4
|
+
fastify.post('/api/projects/:id/infra/runtime/ensure', async (request, reply) => {
|
|
5
|
+
const { id } = request.params;
|
|
6
|
+
try {
|
|
7
|
+
const reconciled = await options.projectManager.upInfrastructure(id);
|
|
8
|
+
return { success: true, reconciled };
|
|
31
9
|
}
|
|
32
|
-
|
|
33
|
-
|
|
10
|
+
catch (error) {
|
|
11
|
+
return sendRuntimeFailure(reply, error);
|
|
34
12
|
}
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
target: status.target,
|
|
42
|
-
});
|
|
43
|
-
}
|
|
44
|
-
catch (error) {
|
|
45
|
-
const message = error instanceof Error ? error.message : String(error);
|
|
46
|
-
return reply.status(500).send({ error: message });
|
|
47
|
-
}
|
|
13
|
+
});
|
|
14
|
+
}
|
|
15
|
+
/*** Translate a project infrastructure runtime failure into the bounded Studio HTTP response. */
|
|
16
|
+
function sendRuntimeFailure(reply, error) {
|
|
17
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
18
|
+
return reply.status(500).send({ error: message });
|
|
48
19
|
}
|
|
49
20
|
//# sourceMappingURL=projectRuntimeRoutes.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"projectRuntimeRoutes.js","sourceRoot":"","sources":["../../../src/host/http/projectRuntimeRoutes.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"projectRuntimeRoutes.js","sourceRoot":"","sources":["../../../src/host/http/projectRuntimeRoutes.ts"],"names":[],"mappings":"AAMA,mFAAmF;AACnF,MAAM,UAAU,4BAA4B,CAC1C,OAAwB,EACxB,OAGC;IAED,8FAA8F;IAC9F,OAAO,CAAC,IAAI,CAAC,wCAAwC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE;QAC9E,MAAM,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,MAAiC,CAAC;QACzD,IAAI,CAAC;YACH,MAAM,UAAU,GAAG,MAAM,OAAO,CAAC,cAAc,CAAC,gBAAgB,CAAC,EAAE,CAAC,CAAC;YACrE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC;QACvC,CAAC;QAAC,OAAO,KAAc,EAAE,CAAC;YACxB,OAAO,kBAAkB,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QAC1C,CAAC;IACH,CAAC,CAAC,CAAC;AACL,CAAC;AAED,iGAAiG;AACjG,SAAS,kBAAkB,CAAC,KAAmB,EAAE,KAAc;IAC7D,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACvE,OAAO,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC;AACpD,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../../src/host/http/server.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../../src/host/http/server.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAgC,MAAM,SAAS,CAAC;AAK7E,OAAO,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AAC9D,OAAO,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAC;AAgChE;;;GAGG;AACH,wBAAsB,sBAAsB,CAAC,IAAI,EAAE;IACjD,cAAc,EAAE,cAAc,CAAC;IAC/B,YAAY,EAAE,aAAa,CAAC;IAC5B,WAAW,EAAE,MAAM,CAAC;IACpB,eAAe,CAAC,EAAE,eAAe,CAAC;CACnC,kPA4NA;AAED,MAAM,WAAW,4BAA4B;IAC3C,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;CAC/B;AAED,uHAAuH;AACvH,wBAAsB,qBAAqB,CAAC,OAAO,GAAE,MAAM,GAAG,4BAAiC,kPAY9F"}
|