@@ -7,30 +7,80 @@ import TutorialOrchestrator from "./tutorialOrchestrator";
77import createPipelineBackup from "./utils/createPipelineBackup" ;
88import getExtensionUri from "./utils/getExtensionUri" ;
99import setDirectory from "./utils/setExtensionDirectory" ;
10+ import { ZenmlSidebarProvider } from "./zenmlSidebarProvider" ;
1011
1112export async function activate ( context : vscode . ExtensionContext ) {
13+ console . log ( "ZenML Tutorial extension is being activated" ) ;
14+
1215 try {
1316 const extensionUri = getExtensionUri ( context ) ;
17+ console . log ( "Extension URI:" , extensionUri . toString ( ) ) ;
18+
1419 // Only set the directory if running in devcontainer
1520 if ( vscode . env . remoteName ) {
1621 setDirectory ( extensionUri ) ;
22+ console . log ( "Set directory for remote environment" ) ;
1723 }
1824
1925 createPipelineBackup ( extensionUri ) ;
26+ console . log ( "Created pipeline backup" ) ;
2027
2128 const tutorial = new Tutorial ( tutorialMetadata , context ) ;
2229 const orchestrator = new TutorialOrchestrator ( context , tutorial ) ;
30+ console . log ( "Created tutorial and orchestrator instances" ) ;
31+
32+ // Register sidebar provider
33+ const sidebarProvider = new ZenmlSidebarProvider ( orchestrator ) ;
34+ const treeView = vscode . window . createTreeView ( 'zenmlTutorialView' , {
35+ treeDataProvider : sidebarProvider
36+ } ) ;
37+ context . subscriptions . push ( treeView ) ;
38+ console . log ( "Registered sidebar provider" ) ;
2339
2440 // Register command to start tutorial
2541 const startCommand = vscode . commands . registerCommand ( "zenml.startTutorial" , ( ) => {
42+ console . log ( "zenml.startTutorial command triggered" ) ;
43+ vscode . window . showInformationMessage ( "Starting ZenML Tutorial..." ) ;
2644 orchestrator . start ( ) ;
2745 } ) ;
2846
29- context . subscriptions . push ( startCommand ) ;
47+ // Register command to open homepage (welcome screen)
48+ const homepageCommand = vscode . commands . registerCommand ( "zenml.openHomepage" , ( ) => {
49+ console . log ( "zenml.openHomepage command triggered" ) ;
50+ vscode . window . showInformationMessage ( "Opening ZenML Homepage..." ) ;
51+ orchestrator . openSection ( 0 ) ; // Open welcome screen
52+ } ) ;
53+
54+ context . subscriptions . push ( startCommand , homepageCommand ) ;
55+ console . log ( "Registered commands:" , [ "zenml.startTutorial" , "zenml.openHomepage" ] ) ;
56+
57+ // Check if this is the first time the extension is being activated
58+ const isFirstTime = ! context . globalState . get < boolean > ( "zenml.hasBeenActivated" , false ) ;
59+ const isCodespace = process . env . CODESPACES === "true" ;
60+ const isTutorialEnabled = process . env . ZENML_ENABLE_TUTORIAL === "true" ;
3061
31- // Auto-start the tutorial
32- orchestrator . start ( ) ;
62+ console . log ( "Environment check:" , {
63+ isFirstTime,
64+ isCodespace,
65+ isTutorialEnabled
66+ } ) ;
67+
68+ // Auto-start the tutorial only on first installation or in codespaces
69+ if ( isFirstTime || isCodespace || isTutorialEnabled ) {
70+ console . log ( "Auto-starting tutorial" ) ;
71+ orchestrator . start ( ) ;
72+
73+ // Mark as activated for future sessions
74+ if ( isFirstTime ) {
75+ await context . globalState . update ( "zenml.hasBeenActivated" , true ) ;
76+ console . log ( "Marked extension as activated" ) ;
77+ }
78+ } else {
79+ console . log ( "Not auto-starting tutorial" ) ;
80+ }
81+ console . log ( "ZenML Tutorial extension activation completed successfully" ) ;
3382 } catch ( error ) {
83+ console . error ( "ZenML Tutorial activation error:" , error ) ;
3484 vscode . window . showErrorMessage ( `Failed to activate ZenML Tutorial: ${ error } ` ) ;
3585 }
3686}
0 commit comments