Skip to content

Commit f5fa798

Browse files
committed
Update context var setup in extension activation for both node and web
instead of chat activation, utils refactored
1 parent 2dbdac3 commit f5fa798

File tree

11 files changed

+59
-40
lines changed

11 files changed

+59
-40
lines changed

packages/amazonq/src/app/chat/activation.ts

Lines changed: 1 addition & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ import * as vscode from 'vscode'
77
import { ExtensionContext, window } from 'vscode'
88
import { telemetry } from 'aws-core-vscode/telemetry'
99
import { AuthUtil, CodeWhispererSettings } from 'aws-core-vscode/codewhisperer'
10-
import { Commands, placeholder, funcUtil, setContext, isSageMaker } from 'aws-core-vscode/shared'
10+
import { Commands, placeholder, funcUtil } from 'aws-core-vscode/shared'
1111
import * as amazonq from 'aws-core-vscode/amazonq'
1212
import { scanChatAppInit } from '../amazonqScan'
1313
import { init as inlineChatInit } from '../../inlineChat/app'
@@ -16,7 +16,6 @@ export async function activate(context: ExtensionContext) {
1616
const appInitContext = amazonq.DefaultAmazonQAppInitContext.instance
1717

1818
registerApps(appInitContext, context)
19-
await setIsSMUSContext()
2019

2120
const provider = new amazonq.AmazonQChatViewProvider(
2221
context,
@@ -64,12 +63,6 @@ export async function activate(context: ExtensionContext) {
6463

6564
void setupLsp()
6665
void setupAuthNotification()
67-
68-
async function setIsSMUSContext() {
69-
// set context key for SageMaker Unified Studio
70-
const isSMUS = isSageMaker(true)
71-
await setContext('aws.isSageMakerUnifiedStudio', isSMUS)
72-
}
7366
}
7467

7568
function registerApps(appInitContext: amazonq.AmazonQAppInitContext, context: ExtensionContext) {

packages/amazonq/src/extension.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@ import {
3232
setupUninstallHandler,
3333
maybeShowMinVscodeWarning,
3434
Experiments,
35+
isSageMaker,
3536
} from 'aws-core-vscode/shared'
3637
import { ExtStartUpSources } from 'aws-core-vscode/telemetry'
3738
import { VSCODE_EXTENSION_ID } from 'aws-core-vscode/utils'
@@ -146,6 +147,9 @@ export async function activateAmazonQCommon(context: vscode.ExtensionContext, is
146147
// Hide the Amazon Q tree in toolkit explorer
147148
await setContext('aws.toolkit.amazonq.dismissed', true)
148149

150+
// set context var to check if its SageMaker Unified Studio or not
151+
await setContext('aws.isSageMakerUnifiedStudio', isSageMaker('SMUS'))
152+
149153
// reload webviews
150154
await vscode.commands.executeCommand('workbench.action.webview.reloadWebviewAction')
151155

packages/core/src/amazonq/webview/generators/webViewContent.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -83,7 +83,7 @@ export class WebViewContentGenerator {
8383
const disclaimerAcknowledged = globals.globalState.tryGet('aws.amazonq.disclaimerAcknowledged', Boolean, false)
8484

8585
const welcomeLoadCount = globals.globalState.tryGet('aws.amazonq.welcomeChatShowCount', Number, 0)
86-
const serviceName = process.env.SERVICE_NAME ?? ''
86+
const isSMUS = isSageMaker('SMUS')
8787

8888
return `
8989
<script type="text/javascript" src="${javascriptEntrypoint.toString()}" defer onload="init()"></script>
@@ -92,7 +92,7 @@ export class WebViewContentGenerator {
9292
const init = () => {
9393
createMynahUI(acquireVsCodeApi(), ${
9494
(await AuthUtil.instance.getChatAuthState()).amazonQ === 'connected'
95-
},${featureConfigsString},${welcomeLoadCount},${disclaimerAcknowledged},${disabledCommandsString}, '${serviceName}');
95+
},${featureConfigsString},${welcomeLoadCount},${disclaimerAcknowledged},${disabledCommandsString},${isSMUS});
9696
}
9797
</script>
9898
`

packages/core/src/amazonq/webview/ui/main.ts

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ export const createMynahUI = (
4848
welcomeCount: number,
4949
disclaimerAcknowledged: boolean,
5050
disabledCommands?: string[],
51-
service?: string
51+
isSMUS?: boolean
5252
) => {
5353
let disclaimerCardActive = !disclaimerAcknowledged
5454
// eslint-disable-next-line prefer-const
@@ -59,7 +59,6 @@ export const createMynahUI = (
5959
const responseMetadata = new Map<string, string[]>()
6060

6161
let savedContextCommands: MynahUIDataModel['contextCommands'] = []
62-
const serviceName = service ?? ''
6362

6463
window.addEventListener('error', (e) => {
6564
const { error, message } = e
@@ -626,7 +625,7 @@ export const createMynahUI = (
626625
tabsStorage.updateTabTypeFromUnknown(tabID, 'cwc')
627626
mynahUI?.updateTabDefaults({
628627
store: {
629-
...tabDataGenerator.getTabData('cwc', true, undefined, serviceName),
628+
...tabDataGenerator.getTabData('cwc', true, undefined, isSMUS),
630629
tabHeaderDetails: void 0,
631630
compactMode: false,
632631
tabBackground: false,
@@ -933,15 +932,15 @@ export const createMynahUI = (
933932
store: {
934933
...(showWelcomePage()
935934
? welcomeScreenTabData(tabDataGenerator).store
936-
: tabDataGenerator.getTabData('cwc', true, undefined, serviceName)),
935+
: tabDataGenerator.getTabData('cwc', true, undefined, isSMUS)),
937936
...(disclaimerCardActive ? { promptInputStickyCard: disclaimerCard } : {}),
938937
},
939938
},
940939
},
941940
defaults: {
942941
store: showWelcomePage()
943942
? welcomeScreenTabData(tabDataGenerator).store
944-
: tabDataGenerator.getTabData('cwc', true, undefined, serviceName),
943+
: tabDataGenerator.getTabData('cwc', true, undefined, isSMUS),
945944
},
946945
config: {
947946
maxTabs: 10,

packages/core/src/amazonq/webview/ui/tabs/constants.ts

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,6 @@ export const qChatIntroMessageForSMUS = `Hi, I'm Amazon Q. I can answer your sof
1515
You can enter \`/\` to see a list of quick actions. Use \`@\` to add saved prompts, files, folders, or your entire workspace as context.
1616
You are now using Q free tier.\n\
1717
`
18-
export const sageMakerUnifiedStudio = 'SageMakerUnifiedStudio'
1918

2019
export type TabTypeData = {
2120
title: string

packages/core/src/amazonq/webview/ui/tabs/generator.ts

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ import { ChatItemType, MynahUIDataModel, QuickActionCommandGroup } from '@aws/my
77
import { TabType } from '../storages/tabsStorage'
88
import { FollowUpGenerator } from '../followUps/generator'
99
import { QuickActionGenerator } from '../quickActions/generator'
10-
import { qChatIntroMessageForSMUS, sageMakerUnifiedStudio, TabTypeDataMap } from './constants'
10+
import { qChatIntroMessageForSMUS, TabTypeDataMap } from './constants'
1111
import { agentWalkthroughDataModel } from '../walkthrough/agent'
1212
import { FeatureContext } from '../../../../shared/featureConfig'
1313

@@ -43,7 +43,7 @@ export class TabDataGenerator {
4343
tabType: TabType,
4444
needWelcomeMessages: boolean,
4545
taskName?: string,
46-
serviceName?: string
46+
isSMUS?: boolean
4747
): MynahUIDataModel {
4848
if (tabType === 'agentWalkthrough') {
4949
return agentWalkthroughDataModel
@@ -53,8 +53,6 @@ export class TabDataGenerator {
5353
return {}
5454
}
5555

56-
const isSMUS = serviceName ? serviceName === sageMakerUnifiedStudio : false
57-
5856
const tabData: MynahUIDataModel = {
5957
tabTitle: taskName ?? TabTypeDataMap[tabType].title,
6058
promptInputInfo:

packages/core/src/auth/auth.ts

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1108,12 +1108,10 @@ export class Auth implements AuthService, ConnectionManager {
11081108
*
11091109
* @param isC9 boolean for if Cloud9 is host
11101110
* @param isSM boolean for if SageMaker is host
1111-
* @param isSMUS boolean for if SageMaker Unified Studio is host
11121111
* @returns boolean for if C9 "OR" SM
11131112
*/
1114-
export function hasVendedIamCredentials(isC9?: boolean, isSM?: boolean, isSMUS?: boolean) {
1113+
export function hasVendedIamCredentials(isC9?: boolean, isSM?: boolean) {
11151114
isC9 ??= isCloud9()
11161115
isSM ??= isSageMaker()
1117-
isSMUS ??= isSageMaker(true)
1118-
return isSM || isC9 || isSMUS
1116+
return isSM || isC9
11191117
}

packages/core/src/codewhisperer/ui/statusBarMenu.ts

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@ import { Commands } from '../../shared/vscode/commands2'
3030
import { createExitButton } from '../../shared/ui/buttons'
3131
import { telemetry } from '../../shared/telemetry/telemetry'
3232
import { getLogger } from '../../shared/logger/logger'
33+
import { isSageMaker } from '../../shared/extensionUtilities'
3334

3435
function getAmazonQCodeWhispererNodes() {
3536
const autoTriggerEnabled = CodeSuggestionsState.instance.isSuggestionsEnabled()
@@ -92,7 +93,9 @@ export function getQuickPickItems(): DataQuickPickItem<string>[] {
9293
// Add settings and signout
9394
createSeparator(),
9495
createSettingsNode(),
95-
...(AuthUtil.instance.isConnected() && !hasVendedIamCredentials() ? [createSignout()] : []),
96+
...(AuthUtil.instance.isConnected() && !(hasVendedIamCredentials() || isSageMaker('SMUS'))
97+
? [createSignout()]
98+
: []),
9699
]
97100

98101
return children

packages/core/src/extension.ts

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ import globals, { initialize, isWeb } from './shared/extensionGlobals'
1717
import { join } from 'path'
1818
import { Commands } from './shared/vscode/commands2'
1919
import { endpointsFileUrl, githubCreateIssueUrl, githubUrl } from './shared/constants'
20-
import { getIdeProperties, aboutExtension, getDocUrl } from './shared/extensionUtilities'
20+
import { getIdeProperties, aboutExtension, getDocUrl, isSageMaker } from './shared/extensionUtilities'
2121
import { logAndShowError, logAndShowWebviewError } from './shared/utilities/logAndShowUtils'
2222
import { telemetry } from './shared/telemetry/telemetry'
2323
import { openUrl } from './shared/utilities/vsCodeUtils'
@@ -54,6 +54,7 @@ import { AWSClientBuilderV3 } from './shared/awsClientBuilderV3'
5454
import { setupUninstallHandler } from './shared/handleUninstall'
5555
import { maybeShowMinVscodeWarning } from './shared/extensionStartup'
5656
import { getLogger } from './shared/logger/logger'
57+
import { setContext } from './shared/vscode/setContext'
5758

5859
disableAwsSdkWarning()
5960

@@ -118,6 +119,9 @@ export async function activateCommon(
118119
// telemetry
119120
await activateTelemetry(context, globals.awsContext, Settings.instance, 'AWS Toolkit For VS Code')
120121

122+
// set context var to identify if its SageMaker Unified Studio or not
123+
await setContext('aws.isSageMakerUnifiedStudio', isSageMaker('SMUS'))
124+
121125
// Create this now, but don't call vscode.window.registerUriHandler() until after all
122126
// Toolkit services have a chance to register their path handlers. #4105
123127
globals.uriHandler = new UriHandler()

packages/core/src/shared/extensionUtilities.ts

Lines changed: 26 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -22,15 +22,17 @@ import {
2222
samDeployDocUrl,
2323
samInitDocUrl,
2424
} from './constants'
25+
import {
26+
cloud9Appname,
27+
cloud9CnAppname,
28+
sageMakerAppname,
29+
sageMakerUnifiedStudio,
30+
vscodeAppname,
31+
} from './vscode/constants'
2532

2633
const localize = nls.loadMessageBundle()
2734

28-
const vscodeAppname = 'Visual Studio Code'
29-
const cloud9Appname = 'AWS Cloud9'
30-
const cloud9CnAppname = 'Amazon Cloud9'
31-
const sageMakerAppname = 'SageMaker Code Editor'
3235
const notInitialized = 'notInitialized'
33-
const sageMakerUnifiedStudio = 'SageMakerUnifiedStudio'
3436

3537
function _isAmazonQ() {
3638
const id = globals.context.extension.id
@@ -66,6 +68,8 @@ export function commandsPrefix(): string {
6668
}
6769

6870
let computeRegion: string | undefined = notInitialized
71+
let serviceName: string = notInitialized
72+
let isSMUS: boolean = false
6973

7074
export function getIdeType(): 'vscode' | 'cloud9' | 'sagemaker' | 'unknown' {
7175
if (vscode.env.appName === cloud9Appname || vscode.env.appName === cloud9CnAppname) {
@@ -147,11 +151,11 @@ function createCloud9Properties(company: string): IdeProperties {
147151
}
148152

149153
function isSageMakerUnifiedStudio(): boolean {
150-
const service = process.env.SERVICE_NAME
151-
if (service) {
152-
return service === sageMakerUnifiedStudio
154+
if (serviceName === notInitialized) {
155+
serviceName = process.env.SERVICE_NAME ?? ''
156+
isSMUS = serviceName === sageMakerUnifiedStudio
153157
}
154-
return false
158+
return isSMUS
155159
}
156160

157161
/**
@@ -166,12 +170,20 @@ export function isCloud9(flavor: 'classic' | 'codecatalyst' | 'any' = 'any'): bo
166170
return (flavor === 'classic' && !codecat) || (flavor === 'codecatalyst' && codecat)
167171
}
168172

169-
export function isSageMaker(isUnifiedStudio?: boolean): boolean {
170-
const isSM = vscode.env.appName === sageMakerAppname
171-
if (isUnifiedStudio) {
172-
return isSM && isSageMakerUnifiedStudio()
173+
/**
174+
*
175+
* @param appName to identify the proper SM instance
176+
* @returns true if the current system is SageMaker(SMAI or SMUS)
177+
*/
178+
export function isSageMaker(appName: string = 'SMAI'): boolean {
179+
switch (appName) {
180+
case 'SMAI':
181+
return vscode.env.appName === sageMakerAppname
182+
case 'SMUS':
183+
return vscode.env.appName === sageMakerAppname && isSageMakerUnifiedStudio()
184+
default:
185+
return false
173186
}
174-
return isSM
175187
}
176188

177189
export function isCn(): boolean {

0 commit comments

Comments
 (0)