diff --git a/azure.yaml b/azure.yaml index a4abe1a..c46718b 100644 --- a/azure.yaml +++ b/azure.yaml @@ -1,15 +1,3 @@ -name: ai-foundry-agent -metadata: - template: ai-foundry-agent@0.0.1 - location: eastus2 - -# Infra-only pattern - no services defined -# Container image deployment handled by hooks - -infra: - path: ./infra - module: main - hooks: # Phase 1: Create Entra app, generate config files preprovision: @@ -17,15 +5,23 @@ hooks: shell: pwsh run: ./deployment/hooks/preprovision.ps1 continueOnError: false + posix: + shell: pwsh + run: ./deployment/hooks/preprovision.ps1 + continueOnError: false # Phase 2: Provision (automatic - Bicep templates with placeholder image) - + # Phase 3: Build real image and deploy to Container App (runs after provision) postprovision: windows: shell: pwsh run: ./deployment/hooks/postprovision.ps1 continueOnError: false + posix: + shell: pwsh + run: ./deployment/hooks/postprovision.ps1 + continueOnError: false # Cleanup Entra app and config files postdown: @@ -33,3 +29,7 @@ hooks: shell: pwsh run: ./deployment/hooks/postdown.ps1 continueOnError: false + posix: + shell: pwsh + run: ./deployment/hooks/postdown.ps1 + continueOnError: false diff --git a/deployment/scripts/build-and-deploy-container.ps1 b/deployment/scripts/build-and-deploy-container.ps1 index 4333137..0557bdc 100644 --- a/deployment/scripts/build-and-deploy-container.ps1 +++ b/deployment/scripts/build-and-deploy-container.ps1 @@ -83,10 +83,12 @@ if ($dockerAvailable) { Push-Location $projectRoot try { + $dockerfilePath = Join-Path "deployment" "docker" "frontend.Dockerfile" docker build ` + --platform linux/amd64 ` --build-arg ENTRA_SPA_CLIENT_ID=$ClientId ` --build-arg ENTRA_TENANT_ID=$TenantId ` - -f .\deployment\docker\frontend.Dockerfile ` + -f $dockerfilePath ` -t $imageName ` . 2>&1 | Out-Host @@ -129,6 +131,7 @@ if ($dockerAvailable) { $buildOutput = az acr build ` --registry $AcrName ` --image "ai-foundry-agent/web-dev:$imageTag" ` + --platform linux/amd64 ` --build-arg ENTRA_SPA_CLIENT_ID=$ClientId ` --build-arg ENTRA_TENANT_ID=$TenantId ` --file .\deployment\docker\frontend.Dockerfile ` diff --git a/frontend/package-lock.json b/frontend/package-lock.json index e45ab00..a8bec79 100644 --- a/frontend/package-lock.json +++ b/frontend/package-lock.json @@ -45,7 +45,6 @@ "node_modules/@azure/msal-browser": { "version": "4.26.0", "license": "MIT", - "peer": true, "dependencies": { "@azure/msal-common": "15.13.1" }, @@ -96,7 +95,6 @@ "version": "7.28.5", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@babel/code-frame": "^7.27.1", "@babel/generator": "^7.28.5", @@ -926,7 +924,6 @@ "node_modules/@floating-ui/dom": { "version": "1.7.4", "license": "MIT", - "peer": true, "dependencies": { "@floating-ui/core": "^1.7.3", "@floating-ui/utils": "^0.2.10" @@ -1019,6 +1016,7 @@ "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.2.tgz", "integrity": "sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==", "license": "MIT", + "peer": true, "dependencies": { "loose-envify": "^1.1.0" } @@ -1804,7 +1802,6 @@ "node_modules/@fluentui/keyboard-keys": { "version": "9.0.8", "license": "MIT", - "peer": true, "dependencies": { "@swc/helpers": "^0.5.1" } @@ -1864,7 +1861,6 @@ "node_modules/@fluentui/react-aria": { "version": "9.17.4", "license": "MIT", - "peer": true, "dependencies": { "@fluentui/keyboard-keys": "^9.0.8", "@fluentui/react-jsx-runtime": "^9.3.1", @@ -2062,7 +2058,6 @@ "node_modules/@fluentui/react-combobox": { "version": "9.16.10", "license": "MIT", - "peer": true, "dependencies": { "@fluentui/keyboard-keys": "^9.0.8", "@fluentui/react-aria": "^9.17.4", @@ -2089,7 +2084,6 @@ "node_modules/@fluentui/react-components": { "version": "9.72.4", "license": "MIT", - "peer": true, "dependencies": { "@fluentui/react-accordion": "^9.8.11", "@fluentui/react-alert": "9.0.0-beta.127", @@ -2164,7 +2158,6 @@ "node_modules/@fluentui/react-context-selector": { "version": "9.2.10", "license": "MIT", - "peer": true, "dependencies": { "@fluentui/react-utilities": "^9.25.2", "@swc/helpers": "^0.5.1" @@ -2267,7 +2260,6 @@ "node_modules/@fluentui/react-icons": { "version": "2.0.313", "license": "MIT", - "peer": true, "dependencies": { "@griffel/react": "^1.0.0", "tslib": "^2.1.0" @@ -2359,7 +2351,6 @@ "node_modules/@fluentui/react-jsx-runtime": { "version": "9.3.1", "license": "MIT", - "peer": true, "dependencies": { "@fluentui/react-utilities": "^9.25.2", "@swc/helpers": "^0.5.1", @@ -2481,7 +2472,6 @@ "node_modules/@fluentui/react-motion": { "version": "9.11.2", "license": "MIT", - "peer": true, "dependencies": { "@fluentui/react-shared-contexts": "^9.25.2", "@fluentui/react-utilities": "^9.25.2", @@ -2617,7 +2607,6 @@ "node_modules/@fluentui/react-positioning": { "version": "9.20.8", "license": "MIT", - "peer": true, "dependencies": { "@floating-ui/devtools": "^0.2.3", "@floating-ui/dom": "^1.6.12", @@ -2759,7 +2748,6 @@ "node_modules/@fluentui/react-shared-contexts": { "version": "9.25.2", "license": "MIT", - "peer": true, "dependencies": { "@fluentui/react-theme": "^9.2.0", "@swc/helpers": "^0.5.1" @@ -2941,7 +2929,6 @@ "node_modules/@fluentui/react-tabster": { "version": "9.26.8", "license": "MIT", - "peer": true, "dependencies": { "@fluentui/react-shared-contexts": "^9.25.2", "@fluentui/react-theme": "^9.2.0", @@ -3074,7 +3061,6 @@ "node_modules/@fluentui/react-theme": { "version": "9.2.0", "license": "MIT", - "peer": true, "dependencies": { "@fluentui/tokens": "1.0.0-alpha.22", "@swc/helpers": "^0.5.1" @@ -3182,7 +3168,6 @@ "node_modules/@fluentui/react-utilities": { "version": "9.25.2", "license": "MIT", - "peer": true, "dependencies": { "@fluentui/keyboard-keys": "^9.0.8", "@fluentui/react-shared-contexts": "^9.25.2", @@ -3213,7 +3198,6 @@ "node_modules/@fluentui/tokens": { "version": "1.0.0-alpha.22", "license": "MIT", - "peer": true, "dependencies": { "@swc/helpers": "^0.5.1" } @@ -3335,7 +3319,6 @@ "node_modules/@lexical/clipboard": { "version": "0.12.6", "license": "MIT", - "peer": true, "dependencies": { "@lexical/html": "0.12.6", "@lexical/list": "0.12.6", @@ -3513,7 +3496,6 @@ "node_modules/@lexical/selection": { "version": "0.12.6", "license": "MIT", - "peer": true, "peerDependencies": { "lexical": "0.12.6" } @@ -3538,7 +3520,6 @@ "node_modules/@lexical/utils": { "version": "0.12.6", "license": "MIT", - "peer": true, "dependencies": { "@lexical/list": "0.12.6", "@lexical/selection": "0.12.6", @@ -3989,7 +3970,6 @@ "version": "24.10.0", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "undici-types": "~7.16.0" } @@ -4002,12 +3982,12 @@ "version": "15.7.15", "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.15.tgz", "integrity": "sha512-F6bEyamV9jKGAFBEmlQnesRPGOQqS2+Uwi0Em15xenOxHaf2hv6L8YCVn3rPdPJOiJfPiCnLIRyvwVaqMY3MIw==", - "license": "MIT" + "license": "MIT", + "peer": true }, "node_modules/@types/react": { "version": "19.2.2", "license": "MIT", - "peer": true, "dependencies": { "csstype": "^3.0.2" } @@ -4015,7 +3995,6 @@ "node_modules/@types/react-dom": { "version": "19.2.2", "license": "MIT", - "peer": true, "peerDependencies": { "@types/react": "^19.2.0" } @@ -4072,7 +4051,6 @@ "version": "8.46.3", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@typescript-eslint/scope-manager": "8.46.3", "@typescript-eslint/types": "8.46.3", @@ -4303,7 +4281,6 @@ "version": "8.15.0", "dev": true, "license": "MIT", - "peer": true, "bin": { "acorn": "bin/acorn" }, @@ -4412,7 +4389,6 @@ } ], "license": "MIT", - "peer": true, "dependencies": { "baseline-browser-mapping": "^2.8.19", "caniuse-lite": "^1.0.30001751", @@ -4638,8 +4614,7 @@ }, "node_modules/embla-carousel": { "version": "8.6.0", - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/embla-carousel-autoplay": { "version": "8.6.0", @@ -4718,7 +4693,6 @@ "version": "9.39.1", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@eslint-community/eslint-utils": "^4.8.0", "@eslint-community/regexpp": "^4.12.1", @@ -5319,6 +5293,7 @@ "resolved": "https://registry.npmjs.org/isomorphic.js/-/isomorphic.js-0.2.5.tgz", "integrity": "sha512-PIeMbHqMt4DnUP3MA/Flc0HElYjMXArsw1qwJZcm9sqR8mq3l8NYizFMty0pWwE/tzIGH3EKK5+jes5mAr85yw==", "license": "MIT", + "peer": true, "funding": { "type": "GitHub Sponsors ❤", "url": "https://github.com/sponsors/dmonad" @@ -5402,14 +5377,14 @@ }, "node_modules/lexical": { "version": "0.12.6", - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/lib0": { "version": "0.2.114", "resolved": "https://registry.npmjs.org/lib0/-/lib0-0.2.114.tgz", "integrity": "sha512-gcxmNFzA4hv8UYi8j43uPlQ7CGcyMJ2KQb5kZASw6SnAKAf10hK12i2fjrS3Cl/ugZa5Ui6WwIu1/6MIXiHttQ==", "license": "MIT", + "peer": true, "dependencies": { "isomorphic.js": "^0.2.4" }, @@ -5458,6 +5433,7 @@ "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", "license": "MIT", + "peer": true, "dependencies": { "js-tokens": "^3.0.0 || ^4.0.0" }, @@ -6513,7 +6489,6 @@ "node_modules/react": { "version": "19.2.0", "license": "MIT", - "peer": true, "engines": { "node": ">=0.10.0" } @@ -6521,7 +6496,6 @@ "node_modules/react-dom": { "version": "19.2.0", "license": "MIT", - "peer": true, "dependencies": { "scheduler": "^0.27.0" }, @@ -6975,7 +6949,6 @@ "version": "4.0.3", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": ">=12" }, @@ -7044,7 +7017,6 @@ "version": "5.9.3", "dev": true, "license": "Apache-2.0", - "peer": true, "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" @@ -7239,7 +7211,6 @@ "version": "7.2.0", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "esbuild": "^0.25.0", "fdir": "^6.5.0", @@ -7329,7 +7300,6 @@ "version": "4.0.3", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": ">=12" }, @@ -7397,7 +7367,6 @@ "version": "4.1.12", "dev": true, "license": "MIT", - "peer": true, "funding": { "url": "https://github.com/sponsors/colinhacks" }