{{ template()?.description }}

@if (!state().operation && !state().uncertain) {
@if (setup(); as setup) { @if (!setup.canInstall) {

{{ setup.reason }}

} @if (setup.models.length) { } @for (capability of setup.optionalCapabilities; track capability.key) { } @if (capabilities().includes('realtime-voice')) { } }
}
@if (state().operation; as operation) {

{{ 'XP.Installation.' + statusLabel(operation) | translate: { Default: statusLabel(operation) } }}

{{ 'XP.Installation.' + stages[operation.stage] | translate: { Default: stages[operation.stage] } }} · {{ 'XP.Installation.Attempt' | translate: { Default: 'Attempt {{count}}', count: operation.attempt } }}

{{ 'XP.Installation.ID' | translate: { Default: 'Installation ID' } }}: {{ operation.id }}

@if (operation.error) { } @if (operation.assistantAvailability === 'unavailable') {

{{ 'XP.Installation.AssistantUnavailable' | translate : { Default: 'This assistant was deleted or is no longer accessible. Create another assistant to install this template again.' } }}

} @if (operation.pendingAuthInstallationIds.length && operation.assistantAvailability !== 'unavailable') {

{{ 'XP.Installation.Pending' | translate: { Default: 'Assistant created. {{count}} connections still require configuration in the workspace.', count: operation.pendingAuthInstallationIds.length } }}

}
@if (operation.retryable) { } @if (operation.status === 'succeeded') { @if (operation.pendingAuthInstallationIds.length && canOpen(operation)) { } } @if (operation.status !== 'running') { }
} @if (state().uncertain) {

{{ 'XP.Installation.Uncertain' | translate: { Default: 'Connection interrupted. Check status to continue the same installation safely.' } }}

} @if (state().error || error() || openingError()) { }

{{ 'XP.Installation.CloseHint' | translate : { Default: 'You can close this window. Reopen this template and workspace to continue from installation history.' } }}

{{ 'XP.Installation.History' | translate: { Default: 'Installation history' } }}
@for (item of state().history; track item.id) { } @if (state().hasMore) {
}