diff --git a/workspaces/x2a/plugins/x2a-backend/templates/x2a-job-script.sh b/workspaces/x2a/plugins/x2a-backend/templates/x2a-job-script.sh
index bd33947b90..9a0da61324 100644
--- a/workspaces/x2a/plugins/x2a-backend/templates/x2a-job-script.sh
+++ b/workspaces/x2a/plugins/x2a-backend/templates/x2a-job-script.sh
@@ -412,12 +412,19 @@ case "${PHASE}" in
echo "=== Step 2: Publishing to AAP ==="
echo "Command: uv run app.py publish-aap --target-repo ${TARGET_REPO_URL} --target-branch ${TARGET_REPO_BRANCH} --project-id ${PROJECT_DIR}"
cd /app
- uv run app.py publish-aap \
+ PUBLISH_OUTPUT=$(uv run app.py publish-aap \
--target-repo "${TARGET_REPO_URL}" \
--target-branch "${TARGET_REPO_BRANCH}" \
- --project-id "${PROJECT_DIR}"
-
- ARTIFACTS+=("ansible_project:${PROJECT_DIR}/ansible-project")
+ --project-id "${PROJECT_DIR}" 2>&1 | tee /dev/stderr)
+
+ # Parse AAP project ID from output and construct URL
+ AAP_PROJECT_ID=$(echo "${PUBLISH_OUTPUT}" | grep -oP 'ID: \K[0-9]+' | tail -1)
+ if [ -n "${AAP_PROJECT_ID}" ]; then
+ ARTIFACTS+=("ansible_project:${AAP_CONTROLLER_URL}/execution/projects/${AAP_PROJECT_ID}/details")
+ else
+ echo "WARNING: Could not parse AAP project ID from publish-aap output"
+ ARTIFACTS+=("ansible_project:${AAP_CONTROLLER_URL}/execution/projects")
+ fi
;;
*)
diff --git a/workspaces/x2a/plugins/x2a/src/components/ModulePage/ArtifactsCard.tsx b/workspaces/x2a/plugins/x2a/src/components/ModulePage/ArtifactsCard.tsx
index f270ea7dc7..8be4ed1c44 100644
--- a/workspaces/x2a/plugins/x2a/src/components/ModulePage/ArtifactsCard.tsx
+++ b/workspaces/x2a/plugins/x2a/src/components/ModulePage/ArtifactsCard.tsx
@@ -114,11 +114,17 @@ export const ArtifactsCard = ({
+ ansibleProjectArtifact ? (
+
+ {humanizeArtifactType(t, ansibleProjectArtifact.type)}
+
+ ) : (
+ t('module.phases.none')
+ )
}
/>
diff --git a/workspaces/x2a/plugins/x2a/src/components/ModuleTable/Artifacts.tsx b/workspaces/x2a/plugins/x2a/src/components/ModuleTable/Artifacts.tsx
index feaf1cc4b4..79f0457028 100644
--- a/workspaces/x2a/plugins/x2a/src/components/ModuleTable/Artifacts.tsx
+++ b/workspaces/x2a/plugins/x2a/src/components/ModuleTable/Artifacts.tsx
@@ -39,9 +39,13 @@ export const ArtifactLink = ({
}) => {
const classes = styles();
const { t } = useTranslation();
+ const url =
+ artifact.type === 'ansible_project'
+ ? artifact.value
+ : buildArtifactUrl(artifact.value, targetRepoUrl, targetRepoBranch);
return (