@profoundlogic/coderflow-server 0.5.6 → 0.5.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/coder-server.js +1 -1
- package/dist/config.js +1 -1
- package/dist/lib/agent-keepalive.js +1 -1
- package/dist/lib/agent-models.js +1 -1
- package/dist/lib/api-keys.js +1 -1
- package/dist/lib/apiKeys.js +1 -1
- package/dist/lib/app-server-ports.js +1 -1
- package/dist/lib/auto-judge.js +1 -1
- package/dist/lib/automation-service.js +1 -1
- package/dist/lib/basic-auth.js +1 -1
- package/dist/lib/bindings.js +1 -1
- package/dist/lib/build-history.js +1 -1
- package/dist/lib/build-output-service.js +1 -1
- package/dist/lib/build-scheduler.js +1 -1
- package/dist/lib/build-service.js +1 -1
- package/dist/lib/ca-certificates.js +1 -1
- package/dist/lib/claude-oauth-refresh.js +1 -1
- package/dist/lib/cli/build.js +1 -1
- package/dist/lib/cli/cleanup-users.js +1 -1
- package/dist/lib/cli/config-command.js +1 -1
- package/dist/lib/cli/config.js +1 -1
- package/dist/lib/cli/create-user.js +1 -1
- package/dist/lib/cli/grant-admin.js +1 -1
- package/dist/lib/cli/init.js +1 -1
- package/dist/lib/cli/jira.js +1 -1
- package/dist/lib/cli/license.js +1 -1
- package/dist/lib/cli/list-roles.js +1 -1
- package/dist/lib/cli/list-users.js +1 -1
- package/dist/lib/cli/server-manager.js +1 -1
- package/dist/lib/cli/set-password.js +1 -1
- package/dist/lib/config-migration.js +1 -1
- package/dist/lib/container-credential-sync.js +1 -1
- package/dist/lib/container-tokens.js +1 -1
- package/dist/lib/data-dir.js +1 -1
- package/dist/lib/deployment-history.js +1 -1
- package/dist/lib/deployment-service.js +1 -1
- package/dist/lib/docker-utils.js +1 -1
- package/dist/lib/email.js +1 -1
- package/dist/lib/emailTemplates.js +1 -1
- package/dist/lib/entitlement.js +1 -1
- package/dist/lib/external-connections.js +1 -1
- package/dist/lib/fetch-utils.js +1 -1
- package/dist/lib/git-commit-details-route.js +1 -1
- package/dist/lib/git-history-diff-guardrails.js +1 -1
- package/dist/lib/git-provider-service.js +1 -1
- package/dist/lib/git-provider-setup/github-setup-handler.js +1 -1
- package/dist/lib/git-provider-setup/index.js +1 -1
- package/dist/lib/git-provider-setup/setup-factory.js +1 -1
- package/dist/lib/git-provider-setup/setup-interface.js +1 -1
- package/dist/lib/git-providers/azure-devops-provider.js +1 -1
- package/dist/lib/git-providers/github-app-provider.js +1 -1
- package/dist/lib/git-providers/index.js +1 -1
- package/dist/lib/git-providers/provider-factory.js +1 -1
- package/dist/lib/git-providers/provider-interface.js +1 -1
- package/dist/lib/github-urls.js +1 -1
- package/dist/lib/group-objective-linking.js +1 -1
- package/dist/lib/ibmi-sync.js +1 -1
- package/dist/lib/jira-client.js +1 -1
- package/dist/lib/judge-blinding.js +1 -1
- package/dist/lib/logger.js +1 -1
- package/dist/lib/migration-to-scoped-rbac.js +1 -1
- package/dist/lib/model-fetcher.js +1 -1
- package/dist/lib/notifications.js +1 -1
- package/dist/lib/objective-context.js +1 -1
- package/dist/lib/oidc-auth.js +1 -1
- package/dist/lib/oidc-device-flow.js +1 -1
- package/dist/lib/passwordTokens.js +1 -1
- package/dist/lib/permission-resolver.js +1 -1
- package/dist/lib/pin-cascade.js +1 -1
- package/dist/lib/provider-accounts.js +1 -1
- package/dist/lib/provider-oauth.js +1 -1
- package/dist/lib/provider-profile.js +1 -1
- package/dist/lib/provider-token-refresh.js +1 -1
- package/dist/lib/rbac-user-state.js +1 -1
- package/dist/lib/request-url.js +1 -1
- package/dist/lib/rewind.js +1 -1
- package/dist/lib/role-definitions.js +1 -1
- package/dist/lib/roles.js +1 -1
- package/dist/lib/secrets.js +1 -1
- package/dist/lib/setup-repo-git-auth.js +1 -1
- package/dist/lib/state-capture.js +1 -1
- package/dist/lib/static-files.js +1 -1
- package/dist/lib/task-name-format.js +1 -1
- package/dist/lib/task-name-generator.js +1 -1
- package/dist/lib/task-source-metadata.js +1 -1
- package/dist/lib/teams.js +1 -1
- package/dist/lib/user-git-oauth.js +1 -1
- package/dist/lib/user-git-tokens.js +1 -1
- package/dist/lib/users.js +1 -1
- package/dist/middleware/requireAuth.js +1 -1
- package/dist/middleware/requireInit.js +1 -1
- package/dist/middleware/requirePermission.js +1 -1
- package/dist/package.json +1 -1
- package/dist/playwright.config.js +1 -1
- package/dist/routes/apiKeys.js +1 -1
- package/dist/routes/auth-oidc.js +1 -1
- package/dist/routes/auth.js +1 -1
- package/dist/routes/automations.js +1 -1
- package/dist/routes/bindings.js +1 -1
- package/dist/routes/build.js +1 -1
- package/dist/routes/containers.js +1 -1
- package/dist/routes/deploy-task.js +1 -1
- package/dist/routes/environment-management.js +1 -1
- package/dist/routes/environments.js +1 -1
- package/dist/routes/external-skills.js +1 -1
- package/dist/routes/git-credentials.js +1 -1
- package/dist/routes/git-oauth.js +1 -1
- package/dist/routes/git-provider-setup.js +1 -1
- package/dist/routes/health.js +1 -1
- package/dist/routes/jira.js +1 -1
- package/dist/routes/objective-management.js +1 -1
- package/dist/routes/password.js +1 -1
- package/dist/routes/prompt.js +1 -1
- package/dist/routes/provider-auth.js +1 -1
- package/dist/routes/qa.js +1 -1
- package/dist/routes/roles.js +1 -1
- package/dist/routes/settings.js +1 -1
- package/dist/routes/skill-management.js +1 -1
- package/dist/routes/skills.js +1 -1
- package/dist/routes/tasks.js +1 -1
- package/dist/routes/teams.js +1 -1
- package/dist/routes/templates.js +1 -1
- package/dist/routes/test-task.js +1 -1
- package/dist/routes/test.js +1 -1
- package/dist/routes/users.js +1 -1
- package/dist/routes/visualizations.js +1 -1
- package/dist/scripts/create-user.js +1 -1
- package/dist/scripts/migrate-config-to-data-dir.js +1 -1
- package/dist/start.js +1 -1
- package/dist/web-ui/public/activity-detail-modal.js +1 -1
- package/dist/web-ui/public/activity-feed.js +1 -1
- package/dist/web-ui/public/activity-formatters.js +1 -1
- package/dist/web-ui/public/agent-event-parser.js +1 -1
- package/dist/web-ui/public/app.js +1 -1
- package/dist/web-ui/public/approve-dialog.js +1 -1
- package/dist/web-ui/public/automation-links.js +1 -1
- package/dist/web-ui/public/automation-schedule.js +1 -1
- package/dist/web-ui/public/comments-widget.js +1 -1
- package/dist/web-ui/public/diff-utils.js +1 -1
- package/dist/web-ui/public/environments.js +1 -1
- package/dist/web-ui/public/feedback-widget.css +6 -4
- package/dist/web-ui/public/feedback-widget.js +1 -1
- package/dist/web-ui/public/git-history-lazy-utils.js +1 -1
- package/dist/web-ui/public/git-history.js +1 -1
- package/dist/web-ui/public/git-status.js +1 -1
- package/dist/web-ui/public/index.js +1 -1
- package/dist/web-ui/public/login.js +1 -1
- package/dist/web-ui/public/markdown-editor.js +1 -1
- package/dist/web-ui/public/markdown-file-editor.js +1 -1
- package/dist/web-ui/public/modal-maximize.js +1 -1
- package/dist/web-ui/public/notifications.js +1 -1
- package/dist/web-ui/public/pr-dialog.js +1 -1
- package/dist/web-ui/public/roles.js +1 -1
- package/dist/web-ui/public/server-health.js +1 -1
- package/dist/web-ui/public/settings.js +1 -1
- package/dist/web-ui/public/setup-password.js +1 -1
- package/dist/web-ui/public/skills.js +1 -1
- package/dist/web-ui/public/sse-client.js +1 -1
- package/dist/web-ui/public/sse-shared-worker.js +1 -1
- package/dist/web-ui/public/styles.css +34 -4
- package/dist/web-ui/public/task.js +1 -1
- package/dist/web-ui/public/teams.js +1 -1
- package/dist/web-ui/public/terminal.js +1 -1
- package/dist/web-ui/public/theme.js +1 -1
- package/dist/web-ui/public/users.js +1 -1
- package/dist/web-ui/public/variant-grouping.js +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
import{API,Utils,CustomSelect,ConfirmDialog,AutocompleteSelect,initializeAdminMenu}from'./app.js';import{getCurrentTheme,initTheme,mountThemeToggle,onThemeChange}from'./theme.js';import*as _0x2d56e7 from'./git-status.js?v=2';import{parsePatchContent,renderUnifiedDiff,safeBase64}from'./diff-utils.js';import{buildAutomationTaskFilterHref,parseAutomationDeepLinkParams}from'./automation-links.js';import{AUTOMATION_MONTHLY_DAY_MAX,buildAutomationCronFromFormState,parseAutomationScheduleToFormState}from'./automation-schedule.js';let monacoLoaded=![];const monacoEditors=new Map(),getMonacoTheme=()=>getCurrentTheme()==='dark'?'vs-dark':'vs';onThemeChange(_0x1aed4c=>{window['monaco']?.['editor']&&monaco['editor']['setTheme'](_0x1aed4c==='dark'?'vs-dark':'vs');});let defaultAgentSelect=null,defaultAgentSelectInitializing=![],newEnvAgentSelect=null,automationInstructionsEditor=null;const automationCustomSelects={},AUTOMATION_MODAL_SELECT_IDS=['automation-frequency','automation-weekly-day','automation-monthly-day','automation-recurring-interval','automation-recurring-start-hour','automation-recurring-end-hour','automation-agent-name','automation-effort-level','automation-reasoning-level','automation-template-name'];let repoAutocomplete=null,newEnvRepoAutocomplete=null,editRepoAutocomplete=null,newRepoBranchAutocomplete=null,editRepoBranchAutocomplete=null;const SESSION_KEY_ENV='environments_selectedEnv',SESSION_KEY_TAB='environments_currentTab',state={'environments':[],'selectedEnv':null,'selectedEnvData':null,'currentTab':sessionStorage['getItem'](SESSION_KEY_TAB)||'overview','hasUnsavedChanges':![],'modifiedFiles':new Set(),'changedFiles':[],'setupRepoAuth':null,'currentUser':null,'currentFile':'Dockerfile','currentTemplate':null,'currentTemplateData':null,'currentRepo':null,'currentTest':null,'agentsContent':null,'readmeContent':null,'currentBuildSecret':null,'buildSecrets':[],'automations':[],'automationsLoadedEnv':null,'viewingAutomationId':null,'editingAutomationId':null,'automationModalMode':'create','availableModels':null,'availableModelsLoaded':![],'automationTemplateParamValues':{},'currentDeployProfile':null,'currentDeployProfileData':null,'profileHasUnsavedChanges':![],'profileScriptEditor':null,'secrets':[],'editingSecret':null,'gitProviders':[],'editingGitProvider':null,'editingGitProviderOriginalAuthMethod':null,'deploymentHistory':[],'currentDeploymentId':null,'deploymentPollInterval':null,'deploymentStartTime':null,'deploymentOutput':'','deploymentParamCache':{},'availableSkills':[],'availableSkillsLoaded':![],'availableSkillsLoading':![],'availableSkillsError':null,'skillsModalSelection':[],'skillsModalOpen':![],'parameterModalContext':null,'editingParamName':null,'parameterOptions':[],'uncommittedDiff':null,'uncommittedDiffFiles':null,'editingConnection':null};let secretValueStore='',secretValueVisible=![],lastCursorPosition=0x0,sshKeyValueStore='',sshKeyValueVisible=![],sshKeyLastCursorPosition=0x0;const KNOWN_POST_CLONE_ACTIONS=['none','npm\x20install','npm\x20ci','yarn','pnpm\x20install','pip\x20install\x20-r\x20requirements.txt','pip\x20install\x20-e\x20.','mvn\x20install\x20-DskipTests','./gradlew\x20build\x20-x\x20test','dotnet\x20restore','dotnet\x20build','composer\x20install','custom'];function getBranchAutocompleteInputValue(_0x3736c3){return _0x3736c3?.['input']?.['value']?.['trim']()||'';}function setBranchAutocompleteValue(_0x300477,_0x42c48e){if(!_0x300477||!_0x300477['input'])return;const _0x18be2e=(_0x42c48e||'')['trim']();_0x300477['input']['value']=_0x18be2e,_0x300477['clearBtn']['hidden']=!_0x18be2e,(!_0x18be2e||_0x300477['selectedItem']?.['name']!==_0x18be2e)&&(_0x300477['selectedItem']=null);}function clearBranchAutocompleteError(_0x9568c3){_0x9568c3?.['wrapper']&&_0x9568c3['wrapper']['classList']['remove']('input-error');}function setBranchAutocompleteErrorState(_0x10738f,_0x2b7e49){if(!_0x10738f?.['wrapper'])return;_0x10738f['wrapper']['classList']['toggle']('input-error',Boolean(_0x2b7e49));}function getNewRepoBranchValue(){return getBranchAutocompleteInputValue(newRepoBranchAutocomplete);}function setNewRepoBranchValue(_0x361eb9){setBranchAutocompleteValue(newRepoBranchAutocomplete,_0x361eb9);}function getEditRepoBranchValue(){return getBranchAutocompleteInputValue(editRepoBranchAutocomplete);}function setEditRepoBranchValue(_0x48ae92){setBranchAutocompleteValue(editRepoBranchAutocomplete,_0x48ae92);}function getNewRepoBranchContext(){const _0x425be4=document['querySelector']('input[name=\x22repo-entry-mode\x22]:checked')?.['value']||'manual',_0x348a44=_0x425be4==='provider'?document['getElementById']('new-repo-source-provider')?.['value']||'':'',_0x2dffad=_0x425be4==='provider'?repoAutocomplete?repoAutocomplete['getSelectedItem']():null:null,_0x31a95d=_0x425be4==='provider'?_0x2dffad?.['clone_url']||_0x2dffad?.['url']||'':document['getElementById']('new-repo-url')?.['value']?.['trim']()||'';return{'providerName':_0x348a44,'repoUrl':_0x31a95d};}function getEditRepoBranchContext(){const _0x2f8553=document['getElementById']('edit-repo-provider')?.['value']||'',_0x51fe50=document['getElementById']('repo-url')?.['value']?.['trim']()||'';return{'providerName':_0x2f8553,'repoUrl':_0x51fe50};}async function fetchRepoBranches({providerName:_0x589a7c,repoUrl:_0xa2b6e9,query:_0x3246de}){if(!_0x589a7c||!_0xa2b6e9)return[];const _0x5ce168='/settings/git-providers/'+encodeURIComponent(_0x589a7c)+'/branches';let _0x1595a5=_0x5ce168+'?repoUrl='+encodeURIComponent(_0xa2b6e9)+'&limit=100';_0x3246de&&_0x3246de['trim']()&&(_0x1595a5+='&search='+encodeURIComponent(_0x3246de['trim']()));try{const _0x3fa355=await API['get'](_0x1595a5);return _0x3fa355['branches']||[];}catch(_0x3d5966){console['error']('Failed\x20to\x20load\x20repository\x20branches:',_0x3d5966);throw _0x3d5966;}}function reloadNewRepoBranchSuggestions(){if(!newRepoBranchAutocomplete)return;const {providerName:_0x4a909a,repoUrl:_0x5cb3e6}=getNewRepoBranchContext();newRepoBranchAutocomplete['selectedItem']=null,newRepoBranchAutocomplete['clearBtn']['hidden']=!![];if(!_0x4a909a||!_0x5cb3e6){newRepoBranchAutocomplete['close']();return;}return newRepoBranchAutocomplete['loadAndShow']('');}function reloadEditRepoBranchSuggestions(){if(!editRepoBranchAutocomplete)return;const {providerName:_0x4abaf1,repoUrl:_0x55405a}=getEditRepoBranchContext();editRepoBranchAutocomplete['selectedItem']=null,editRepoBranchAutocomplete['clearBtn']['hidden']=!![];if(!_0x4abaf1||!_0x55405a){editRepoBranchAutocomplete['close']();return;}return editRepoBranchAutocomplete['loadAndShow']('');}function isKnownPostCloneAction(_0x4a7799){return KNOWN_POST_CLONE_ACTIONS['includes'](_0x4a7799);}document['addEventListener']('DOMContentLoaded',initialize);async function initialize(){try{initTheme(),mountThemeToggle(),await checkAdminAccess();const _0x12ebba=await API['get']('/auth/me');state['currentUser']=_0x12ebba['user'],await initializeAdminMenu(state['currentUser']),setupEventListeners(),await loadAvailableAutomationModels(),renderAutomationAgentOptions(),await loadEnvironments(),state['currentTab']!=='overview'&&switchTab(state['currentTab']),await handleAutomationDeepLinkParams(),await refreshRepositoryGitStatus(),await handleSetupRepoOAuthReturn(),setInterval(refreshRepositoryGitStatus,0x7530);}catch(_0x3edd8d){console['error']('Initialization\x20error:',_0x3edd8d),Utils['showError']('Failed\x20to\x20initialize\x20environment\x20management');}}async function checkAdminAccess(){try{const _0xa5533e=await API['getCurrentUser']();if(!_0xa5533e['hasEnvironmentsManage']){Utils['showToast']('Access\x20denied:\x20Environment\x20admin\x20privileges\x20required','error'),setTimeout(()=>{window['location']['href']='index.html';},0x7d0);return;}}catch(_0x59cac4){window['location']['href']='login.html';}}function initializeCustomSelects(){if(!defaultAgentSelect){const _0x37fbc1=document['getElementById']('env-default-agent-wrapper');if(!_0x37fbc1){console['error']('Wrapper\x20element\x20not\x20found');return;}_0x37fbc1['innerHTML']='';const _0x4c185a=document['createElement']('select');_0x4c185a['id']='env-default-agent',_0x4c185a['innerHTML']='\x0a\x20\x20\x20\x20\x20\x20<option\x20value=\x22claude\x22>Claude</option>\x0a\x20\x20\x20\x20\x20\x20<option\x20value=\x22codex\x22>Codex</option>\x0a\x20\x20\x20\x20\x20\x20<option\x20value=\x22gemini\x22>Gemini</option>\x0a\x20\x20\x20\x20',_0x37fbc1['appendChild'](_0x4c185a),defaultAgentSelect=new CustomSelect(_0x4c185a,{'searchable':![]}),_0x4c185a['addEventListener']('change',()=>{if(defaultAgentSelectInitializing)return;markAsModified();});}}function setupEventListeners(){document['querySelectorAll']('.content-tab')['forEach'](_0x162649=>{_0x162649['addEventListener']('click',()=>switchTab(_0x162649['dataset']['tab']));}),document['getElementById']('repo-pull-btn')['addEventListener']('click',pullRepositoryChanges),document['getElementById']('repo-push-btn')['addEventListener']('click',pushRepositoryChanges),initGitConnectionsRequiredModal(),document['getElementById']('save-btn')['addEventListener']('click',saveChanges),document['getElementById']('repo-commit-btn')['addEventListener']('click',openCommitModal),document['getElementById']('repo-discard-btn')['addEventListener']('click',openDiscardModal),document['getElementById']('new-env-btn')['addEventListener']('click',createNewEnvironment),document['querySelector']('#commit-modal\x20.modal-close')['addEventListener']('click',closeCommitModal),document['getElementById']('commit-cancel-btn')['addEventListener']('click',closeCommitModal),document['getElementById']('commit-confirm-btn')['addEventListener']('click',commitAndPush),document['querySelector']('#discard-modal\x20.modal-close')['addEventListener']('click',closeDiscardModal),document['getElementById']('discard-cancel-btn')['addEventListener']('click',closeDiscardModal),document['getElementById']('discard-confirm-btn')['addEventListener']('click',confirmDiscard),document['querySelector']('#build-confirm-modal\x20.modal-close')['addEventListener']('click',closeBuildConfirmModal),document['getElementById']('build-confirm-cancel-btn')['addEventListener']('click',closeBuildConfirmModal),document['getElementById']('build-confirm-start-btn')['addEventListener']('click',confirmStartBuild),document['querySelector']('#base-image-required-modal\x20.modal-close')['addEventListener']('click',closeBaseImageRequiredModal),document['querySelector']('#base-image-required-modal\x20.modal-overlay')['addEventListener']('click',closeBaseImageRequiredModal),document['getElementById']('base-image-required-close-btn')['addEventListener']('click',closeBaseImageRequiredModal),document['getElementById']('base-image-required-open-btn')['addEventListener']('click',openBaseImageBuildFromRequiredModal),document['querySelector']('#new-env-modal\x20.modal-close')['addEventListener']('click',closeNewEnvModal),document['getElementById']('new-env-cancel-btn')['addEventListener']('click',closeNewEnvModal),document['getElementById']('new-env-create-btn')['addEventListener']('click',confirmCreateEnvironment),document['getElementById']('new-env-name')['addEventListener']('input',_0x11cb34=>{const _0x1b64a0=_0x11cb34['target']['value']['trim'](),_0x509c6e=document['getElementById']('new-env-image');!_0x509c6e['dataset']['userModified']&&(_0x509c6e['value']=_0x1b64a0);}),document['getElementById']('new-env-image')['addEventListener']('input',_0x4be944=>{const _0x43bcfe=document['getElementById']('new-env-name')['value']['trim']();_0x4be944['target']['value']!==_0x43bcfe?_0x4be944['target']['dataset']['userModified']='true':delete _0x4be944['target']['dataset']['userModified'];}),document['querySelector']('#delete-env-modal\x20.modal-close')['addEventListener']('click',closeDeleteEnvModal),document['getElementById']('delete-env-cancel-btn')['addEventListener']('click',closeDeleteEnvModal),document['getElementById']('delete-env-confirm-btn')['addEventListener']('click',confirmDeleteEnvironment),document['querySelector']('#add-repo-modal\x20.modal-close')['addEventListener']('click',closeAddRepoModal),document['getElementById']('add-repo-cancel-btn')['addEventListener']('click',closeAddRepoModal),document['getElementById']('add-repo-confirm-btn')['addEventListener']('click',confirmAddRepo),document['getElementById']('new-repo-branch-refresh-btn')['addEventListener']('click',_0x3eb473=>{_0x3eb473['preventDefault'](),reloadNewRepoBranchSuggestions();}),document['querySelector']('#delete-repo-modal\x20.modal-close')['addEventListener']('click',closeDeleteRepoModal),document['getElementById']('delete-repo-cancel-btn')['addEventListener']('click',closeDeleteRepoModal),document['getElementById']('delete-repo-confirm-btn')['addEventListener']('click',confirmDeleteRepo),document['querySelector']('#add-test-modal\x20.modal-close')['addEventListener']('click',closeAddTestModal),document['getElementById']('add-test-cancel-btn')['addEventListener']('click',closeAddTestModal),document['getElementById']('add-test-confirm-btn')['addEventListener']('click',confirmAddTest),document['querySelector']('#delete-test-modal\x20.modal-close')['addEventListener']('click',closeDeleteTestModal),document['getElementById']('delete-test-cancel-btn')['addEventListener']('click',closeDeleteTestModal),document['getElementById']('delete-test-confirm-btn')['addEventListener']('click',confirmDeleteTest),document['querySelector']('#add-template-modal\x20.modal-close')['addEventListener']('click',closeAddTemplateModal),document['getElementById']('add-template-cancel-btn')['addEventListener']('click',closeAddTemplateModal),document['getElementById']('add-template-confirm-btn')['addEventListener']('click',confirmAddTemplate),document['querySelector']('#delete-template-modal\x20.modal-close')['addEventListener']('click',closeDeleteTemplateModal),document['getElementById']('delete-template-cancel-btn')['addEventListener']('click',closeDeleteTemplateModal),document['getElementById']('delete-template-confirm-btn')['addEventListener']('click',confirmDeleteTemplate),document['querySelector']('#add-deploy-profile-modal\x20.modal-close')['addEventListener']('click',closeAddDeployProfileModal),document['getElementById']('add-deploy-profile-cancel-btn')['addEventListener']('click',closeAddDeployProfileModal),document['getElementById']('add-deploy-profile-confirm-btn')['addEventListener']('click',confirmAddDeployProfile),document['querySelector']('#delete-deploy-profile-modal\x20.modal-close')['addEventListener']('click',closeDeleteDeployProfileModal),document['getElementById']('delete-deploy-profile-cancel-btn')['addEventListener']('click',closeDeleteDeployProfileModal),document['getElementById']('delete-deploy-profile-confirm-btn')['addEventListener']('click',confirmDeleteDeployProfile),document['getElementById']('new-deploy-profile-tab')['addEventListener']('click',openAddDeployProfileModal),document['getElementById']('delete-deploy-profile-btn')['addEventListener']('click',openDeleteDeployProfileModal),document['getElementById']('profile-description')['addEventListener']('input',markProfileAsModified),document['getElementById']('add-profile-secret-btn')['addEventListener']('click',openAddProfileSecretModal),document['getElementById']('add-profile-parameter-btn')['addEventListener']('click',openAddProfileParameterModal),initDeploySectionToggles(),document['getElementById']('run-deploy-profile-btn')['addEventListener']('click',openRunDeploymentModal),document['querySelector']('#run-deployment-modal\x20.modal-close')['addEventListener']('click',closeRunDeploymentModal),document['querySelector']('#run-deployment-modal\x20.modal-overlay')['addEventListener']('click',closeRunDeploymentModal),document['getElementById']('run-deployment-cancel-btn')['addEventListener']('click',closeRunDeploymentModal),document['getElementById']('run-deployment-start-btn')['addEventListener']('click',startDeployment),document['getElementById']('cancel-deployment-btn')['addEventListener']('click',cancelDeploymentExecution),document['getElementById']('refresh-deploy-history-btn')['addEventListener']('click',()=>{state['selectedEnv']&&loadDeploymentHistory();}),document['getElementById']('add-secret-btn')['addEventListener']('click',openAddSecretModal),document['getElementById']('secrets-filter')['addEventListener']('change',renderSecrets),document['querySelector']('#secret-modal\x20.modal-close')['addEventListener']('click',closeSecretModal),document['getElementById']('secret-modal-cancel-btn')['addEventListener']('click',closeSecretModal),document['getElementById']('secret-modal-save-btn')['addEventListener']('click',saveSecret),document['getElementById']('secret-type-file')['addEventListener']('change',handleSecretTypeChange),document['getElementById']('secret-type-value')['addEventListener']('change',handleSecretTypeChange),document['getElementById']('secret-available-build')['addEventListener']('change',updateExposeAsVisibility),document['getElementById']('secret-available-tasks')['addEventListener']('change',updateExposeAsVisibility),document['getElementById']('secret-available-deploy')['addEventListener']('change',updateExposeAsVisibility),document['getElementById']('secret-expose-env')['addEventListener']('change',updateSecretTargetLabel),document['getElementById']('secret-expose-file')['addEventListener']('change',updateSecretTargetLabel),document['getElementById']('secret-source')['addEventListener']('input',debounce(validateSecretSourcePath,0x1f4)),document['getElementById']('secret-import-file-btn')['addEventListener']('click',()=>{document['getElementById']('secret-file-input')['click']();}),document['getElementById']('secret-file-input')['addEventListener']('change',handleSecretFileImport),document['querySelector']('.secret-toggle-visibility')['addEventListener']('click',toggleSecretValueVisibility);const _0x510809=document['getElementById']('secret-value');_0x510809['addEventListener']('beforeinput',handleSecretValueBeforeInput),_0x510809['addEventListener']('input',handleSecretValueInput),document['getElementById']('secret-git-pat-checkbox')['addEventListener']('change',handleGitPatCheckboxChange),document['getElementById']('secret-git-host')['addEventListener']('change',handleGitHostChange),document['querySelector']('#delete-secret-modal\x20.modal-close')['addEventListener']('click',closeDeleteSecretModal),document['getElementById']('delete-secret-cancel-btn')['addEventListener']('click',closeDeleteSecretModal),document['getElementById']('delete-secret-confirm-btn')['addEventListener']('click',confirmDeleteSecret),document['getElementById']('add-connection-btn')['addEventListener']('click',openAddConnectionModal),document['querySelector']('#connection-modal\x20.modal-close')['addEventListener']('click',closeConnectionModal),document['getElementById']('connection-modal-cancel-btn')['addEventListener']('click',closeConnectionModal),document['getElementById']('connection-modal-save-btn')['addEventListener']('click',saveConnection),document['getElementById']('connection-type-sqlserver')['addEventListener']('change',updateConnectionFormVisibility),document['getElementById']('connection-type-ibmi')['addEventListener']('change',updateConnectionFormVisibility),document['getElementById']('connection-type-ssh')['addEventListener']('change',updateConnectionFormVisibility),['feature-sql','feature-build','feature-interactive','feature-ssh','feature-sync']['forEach'](_0x5b133b=>document['getElementById'](_0x5b133b)['addEventListener']('change',updateConnectionFormVisibility)),document['getElementById']('feature-sync')['addEventListener']('change',_0x27d223=>{const _0x5dda8a=document['getElementById']('feature-ssh');_0x27d223['target']['checked']?(_0x5dda8a['checked']=!![],_0x5dda8a['disabled']=!![]):_0x5dda8a['disabled']=![];}),document['getElementById']('connection-available-tasks')['addEventListener']('change',updateConnectionFormVisibility),document['getElementById']('connection-available-deploy')['addEventListener']('change',updateConnectionFormVisibility),document['getElementById']('connection-verify-cert')['addEventListener']('change',_0x45eba7=>{document['getElementById']('connection-verify-cert-warning')['hidden']=_0x45eba7['target']['checked'];}),document['getElementById']('connection-host')['addEventListener']('input',syncHostToPuiBaseUrl),document['getElementById']('connection-pui-base-url')['addEventListener']('input',syncPuiBaseUrlToHost),document['getElementById']('connection-password-toggle')['addEventListener']('click',toggleConnectionPasswordVisibility),document['querySelector']('.connection-ssh-key-toggle')['addEventListener']('click',toggleSshKeyVisibility);const _0x4d5f37=document['getElementById']('connection-ssh-private-key');_0x4d5f37['addEventListener']('beforeinput',handleSshKeyBeforeInput),_0x4d5f37['addEventListener']('input',handleSshKeyInput),document['getElementById']('connection-ssh-import-btn')['addEventListener']('click',()=>{document['getElementById']('connection-ssh-file-input')['click']();}),document['getElementById']('connection-ssh-file-input')['addEventListener']('change',handleSshKeyFileImport),document['getElementById']('connection-ssh-pubkey-import-btn')['addEventListener']('click',()=>{document['getElementById']('connection-ssh-pubkey-file-input')['click']();}),document['getElementById']('connection-ssh-pubkey-file-input')['addEventListener']('change',handleSshPubKeyFileImport),document['getElementById']('connection-generate-keypair-btn')['addEventListener']('click',generateKeypair),document['getElementById']('connection-test-sql-btn')['addEventListener']('click',()=>testConnection('sql')),document['getElementById']('connection-test-ssh-btn')['addEventListener']('click',()=>testConnection('ssh')),document['getElementById']('connection-install-key-btn')['addEventListener']('click',openInstallKeyModal),document['querySelector']('#install-key-modal\x20.modal-close')['addEventListener']('click',closeInstallKeyModal),document['getElementById']('install-key-cancel-btn')['addEventListener']('click',closeInstallKeyModal),document['getElementById']('install-key-confirm-btn')['addEventListener']('click',installPublicKey),document['getElementById']('install-key-password-toggle')['addEventListener']('click',()=>{const _0x112564=document['getElementById']('install-key-password'),_0x34ea9d=document['getElementById']('install-key-password-toggle'),_0x9aa99c=_0x112564['type']==='password';_0x112564['type']=_0x9aa99c?'text':'password',_0x34ea9d['querySelector']('.eye-open')['style']['display']=_0x9aa99c?'none':'',_0x34ea9d['querySelector']('.eye-closed')['style']['display']=_0x9aa99c?'':'none';}),document['getElementById']('connection-ibmi-helper-link')['addEventListener']('click',_0x5b5adb=>{_0x5b5adb['preventDefault'](),openIbmiHelperDialog();}),document['querySelector']('#ibmi-helper-modal\x20.modal-close')['addEventListener']('click',()=>document['getElementById']('ibmi-helper-modal')['hidden']=!![]),document['getElementById']('ibmi-helper-close-btn')['addEventListener']('click',()=>document['getElementById']('ibmi-helper-modal')['hidden']=!![]),document['querySelector']('#delete-connection-modal\x20.modal-close')['addEventListener']('click',closeDeleteConnectionModal),document['getElementById']('delete-connection-cancel-btn')['addEventListener']('click',closeDeleteConnectionModal),document['getElementById']('delete-connection-confirm-btn')['addEventListener']('click',confirmDeleteConnection),document['querySelectorAll']('input[name=\x22repo-entry-mode\x22]')['forEach'](_0x3d712d=>{_0x3d712d['addEventListener']('change',onRepoEntryModeChange);}),document['getElementById']('new-repo-source-provider')['addEventListener']('change',onRepoSourceProviderChange),document['querySelector']('#profile-secret-modal\x20.modal-close')['addEventListener']('click',closeProfileSecretModal),document['querySelector']('#profile-secret-modal\x20.modal-overlay')['addEventListener']('click',closeProfileSecretModal),document['getElementById']('profile-secret-cancel-btn')['addEventListener']('click',closeProfileSecretModal),document['getElementById']('profile-secret-save-btn')['addEventListener']('click',saveProfileSecret),document['getElementById']('profile-secret-name')['addEventListener']('change',updateProfileSecretInfo),document['querySelector']('#profile-parameter-modal\x20.modal-close')['addEventListener']('click',closeProfileParameterModal),document['querySelector']('#profile-parameter-modal\x20.modal-overlay')['addEventListener']('click',closeProfileParameterModal),document['getElementById']('profile-parameter-cancel-btn')['addEventListener']('click',closeProfileParameterModal),document['getElementById']('profile-parameter-save-btn')['addEventListener']('click',saveProfileParameter),document['getElementById']('profile-param-type')['addEventListener']('change',updateProfileParamTypeVisibility),document['getElementById']('profile-param-add-option-btn')['addEventListener']('click',addParameterOption),document['querySelector']('#uncommitted-changes-modal\x20.modal-close')['addEventListener']('click',closeUncommittedChangesModal),document['getElementById']('uncommitted-changes-close-btn')['addEventListener']('click',closeUncommittedChangesModal),document['getElementById']('repo-status')['addEventListener']('click',handleRepoStatusClick);const _0x55650c=document['getElementById']('delete-repo-btn');_0x55650c&&_0x55650c['addEventListener']('click',()=>{state['currentRepo']!==null&&removeRepo(state['currentRepo']);});const _0x28c7a2=document['getElementById']('delete-test-btn');_0x28c7a2&&_0x28c7a2['addEventListener']('click',()=>{state['currentTest']!==null&&removeTest(state['currentTest']);});const _0x40638e=document['getElementById']('delete-template-btn');_0x40638e&&_0x40638e['addEventListener']('click',()=>{state['currentTemplate']!==null&&removeTemplate(state['currentTemplate']);});document['getElementById']('env-description')['addEventListener']('input',markAsModified),document['getElementById']('env-image-name')['addEventListener']('input',markAsModified),document['getElementById']('env-timezone')['addEventListener']('input',markAsModified),document['getElementById']('env-screen-render-url')['addEventListener']('input',markAsModified);const _0x202d30=document['getElementById']('env-skills-manage-btn');if(_0x202d30)_0x202d30['addEventListener']('click',openSkillsModal);const _0x3ab37a=document['getElementById']('skills-modal');if(_0x3ab37a){const _0x2907e8=_0x3ab37a['querySelector']('.modal-close'),_0x19d3b1=_0x3ab37a['querySelector']('.modal-overlay'),_0x143580=document['getElementById']('skills-modal-cancel-btn'),_0x32b71e=document['getElementById']('skills-modal-apply-btn'),_0x2fbb54=document['getElementById']('skills-modal-search-input'),_0xa740a3=document['getElementById']('skills-modal-search-clear');_0x2907e8?.['addEventListener']('click',closeSkillsModal),_0x19d3b1?.['addEventListener']('click',closeSkillsModal),_0x143580?.['addEventListener']('click',closeSkillsModal),_0x32b71e?.['addEventListener']('click',applySkillsModalSelection),_0x2fbb54?.['addEventListener']('input',renderSkillsModal),_0xa740a3?.['addEventListener']('click',()=>{_0x2fbb54&&(_0x2fbb54['value']='',_0x2fbb54['focus']()),renderSkillsModal();});}const _0x9bf28d=document['getElementById']('actions-menu-btn'),_0x141ad8=document['getElementById']('actions-menu');_0x9bf28d['addEventListener']('click',_0x536457=>{_0x536457['stopPropagation']();const _0x1dd36f=document['getElementById']('admin-menu');if(_0x1dd36f)_0x1dd36f['hidden']=!![];_0x141ad8['hidden']=!_0x141ad8['hidden'];}),document['addEventListener']('click',_0x5255a8=>{!_0x141ad8['hidden']&&!_0x141ad8['contains'](_0x5255a8['target'])&&(_0x141ad8['hidden']=!![]);}),_0x141ad8['addEventListener']('click',()=>{_0x141ad8['hidden']=!![];}),document['getElementById']('build-base-image-btn')?.['addEventListener']('click',openBaseImageBuildModal),document['querySelector']('#base-image-build-modal\x20.modal-close')['addEventListener']('click',closeBaseImageBuildModal),document['querySelector']('#base-image-build-modal\x20.modal-overlay')['addEventListener']('click',closeBaseImageBuildModal),document['getElementById']('base-image-build-cancel-btn')['addEventListener']('click',closeBaseImageBuildModal),document['getElementById']('base-image-build-start-btn')['addEventListener']('click',startBaseImageBuild),document['getElementById']('base-image-refresh-history-btn')['addEventListener']('click',loadBaseImageBuildHistory),document['getElementById']('delete-env-btn')['addEventListener']('click',deleteEnvironment),document['getElementById']('env-rename-btn')['addEventListener']('click',openRenameEnvModal),document['getElementById']('rename-env-cancel-btn')['addEventListener']('click',closeRenameEnvModal),document['getElementById']('rename-env-confirm-btn')['addEventListener']('click',confirmRenameEnvironment),document['getElementById']('rename-env-modal')['querySelector']('.modal-close')['addEventListener']('click',closeRenameEnvModal),document['getElementById']('rename-env-modal')['querySelector']('.modal-overlay')['addEventListener']('click',closeRenameEnvModal),setupEnvTabsScrolling(),setupContentNavScrolling();}function setupEnvTabsScrolling(){const _0x57aef9=document['getElementById']('env-tabs-wrapper'),_0x416a34=document['getElementById']('env-tabs-scroll-left'),_0x488847=document['getElementById']('env-tabs-scroll-right');if(!_0x57aef9||!_0x416a34||!_0x488847)return;const _0x16e796=0xc8;function _0x39ab12(){const {scrollLeft:_0x4d8df4,scrollWidth:_0x300651,clientWidth:_0x5cafad}=_0x57aef9,_0xc1fb4a=_0x4d8df4>0x1,_0xa9da=_0x4d8df4<_0x300651-_0x5cafad-0x1;_0x416a34['classList']['toggle']('visible',_0xc1fb4a),_0x488847['classList']['toggle']('visible',_0xa9da),_0x57aef9['classList']['toggle']('fade-left',_0xc1fb4a),_0x57aef9['classList']['toggle']('fade-right',_0xa9da);}_0x416a34['addEventListener']('click',()=>{_0x57aef9['scrollBy']({'left':-_0x16e796,'behavior':'smooth'});}),_0x488847['addEventListener']('click',()=>{_0x57aef9['scrollBy']({'left':_0x16e796,'behavior':'smooth'});}),_0x57aef9['addEventListener']('scroll',_0x39ab12);const _0x38357d=new ResizeObserver(()=>{_0x39ab12();});_0x38357d['observe'](_0x57aef9),_0x39ab12(),window['updateEnvTabsScrollState']=_0x39ab12;}function scrollToActiveEnvTab(){const _0x58ce3b=document['getElementById']('env-tabs-wrapper'),_0x195796=document['querySelector']('.env-tab.active');if(!_0x58ce3b||!_0x195796)return;const _0x2ab1bd=_0x58ce3b['getBoundingClientRect'](),_0x27b037=_0x195796['getBoundingClientRect']();if(_0x27b037['left']<_0x2ab1bd['left'])_0x58ce3b['scrollBy']({'left':_0x27b037['left']-_0x2ab1bd['left']-0x10,'behavior':'smooth'});else _0x27b037['right']>_0x2ab1bd['right']&&_0x58ce3b['scrollBy']({'left':_0x27b037['right']-_0x2ab1bd['right']+0x10,'behavior':'smooth'});}function setupContentNavScrolling(){const _0x3d615c=document['getElementById']('content-nav'),_0x34f73a=document['getElementById']('content-nav-scroll-left'),_0x8e699c=document['getElementById']('content-nav-scroll-right');if(!_0x3d615c||!_0x34f73a||!_0x8e699c)return;const _0x32362d=0x96;function _0x1bebb6(){const {scrollLeft:_0x51aaed,scrollWidth:_0x1e5e26,clientWidth:_0x411656}=_0x3d615c,_0x42e250=_0x51aaed>0x1,_0x44eee9=_0x51aaed<_0x1e5e26-_0x411656-0x1;_0x34f73a['classList']['toggle']('visible',_0x42e250),_0x8e699c['classList']['toggle']('visible',_0x44eee9),_0x3d615c['classList']['toggle']('fade-left',_0x42e250),_0x3d615c['classList']['toggle']('fade-right',_0x44eee9);}_0x34f73a['addEventListener']('click',()=>{_0x3d615c['scrollBy']({'left':-_0x32362d,'behavior':'smooth'});}),_0x8e699c['addEventListener']('click',()=>{_0x3d615c['scrollBy']({'left':_0x32362d,'behavior':'smooth'});}),_0x3d615c['addEventListener']('scroll',_0x1bebb6);const _0x195847=new ResizeObserver(()=>{_0x1bebb6();});_0x195847['observe'](_0x3d615c),_0x1bebb6(),window['updateContentNavScrollState']=_0x1bebb6;}function scrollToActiveContentTab(){const _0x450f02=document['getElementById']('content-nav'),_0x429d00=document['querySelector']('.content-tab.active');if(!_0x450f02||!_0x429d00)return;const _0x50d98b=_0x450f02['getBoundingClientRect'](),_0x197649=_0x429d00['getBoundingClientRect']();if(_0x197649['left']<_0x50d98b['left'])_0x450f02['scrollBy']({'left':_0x197649['left']-_0x50d98b['left']-0x10,'behavior':'smooth'});else _0x197649['right']>_0x50d98b['right']&&_0x450f02['scrollBy']({'left':_0x197649['right']-_0x50d98b['right']+0x10,'behavior':'smooth'});}async function loadEnvironments(){try{const _0x201294=await API['get']('/environments');state['environments']=_0x201294['environments']||[],renderEnvironmentsList();if(state['environments']['length']>0x0){const _0x240ca2=sessionStorage['getItem'](SESSION_KEY_ENV),_0x2326ed=_0x201294['default_environment'];let _0x2f35f9;if(_0x240ca2&&state['environments']['find'](_0x368b21=>_0x368b21['name']===_0x240ca2))_0x2f35f9=_0x240ca2;else _0x2326ed&&state['environments']['find'](_0x1770ce=>_0x1770ce['name']===_0x2326ed)?_0x2f35f9=_0x2326ed:_0x2f35f9=state['environments'][0x0]['name'];await selectEnvironment(_0x2f35f9);}}catch(_0x57ccd5){console['error']('Failed\x20to\x20load\x20environments:',_0x57ccd5),document['getElementById']('env-tabs')['innerHTML']='<div\x20class=\x22error\x22>Failed\x20to\x20load\x20environments</div>';}}function renderEnvironmentsList(){const _0x677888=document['getElementById']('env-tabs');if(state['environments']['length']===0x0){_0x677888['innerHTML']='<div\x20class=\x22empty-state-inline\x22>No\x20environments\x20found</div>';return;}_0x677888['innerHTML']=state['environments']['map'](_0x5df89a=>'\x0a\x20\x20\x20\x20<button\x20class=\x22env-tab\x20'+(_0x5df89a['name']===state['selectedEnv']?'active':'')+'\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20data-env=\x22'+_0x5df89a['name']+'\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20onclick=\x22selectEnvironment(\x27'+_0x5df89a['name']+'\x27)\x22>\x0a\x20\x20\x20\x20\x20\x20'+_0x5df89a['name']+'\x0a\x20\x20\x20\x20</button>\x0a\x20\x20')['join'](''),window['updateEnvTabsScrollState']&&requestAnimationFrame(()=>{window['updateEnvTabsScrollState']();});}window['selectEnvironment']=async function(_0x30141b){if(state['hasUnsavedChanges']){const _0xfd7171=await ConfirmDialog['show']({'title':'Unsaved\x20Changes','message':'You\x20have\x20unsaved\x20changes\x20that\x20will\x20be\x20lost.\x20Continue?','confirmText':'Continue','danger':!![]});if(!_0xfd7171)return;}const _0x25089f=state['selectedEnv'];_0x25089f&&_0x25089f!==_0x30141b&&resetBuildPanelForEnvironmentChange(),state['selectedEnv']=_0x30141b,sessionStorage['setItem'](SESSION_KEY_ENV,_0x30141b),state['hasUnsavedChanges']=![],document['querySelectorAll']('.env-tab')['forEach'](_0x34b335=>{_0x34b335['classList']['toggle']('active',_0x34b335['dataset']['env']===_0x30141b);}),scrollToActiveEnvTab(),document['getElementById']('env-empty-state')['hidden']=!![],document['getElementById']('env-details')['hidden']=![],await loadEnvironmentDetails(_0x30141b);};async function loadEnvironmentDetails(_0x2dacca){try{const _0x46b77e=await API['get']('/environments/'+_0x2dacca);if(_0x2dacca!==state['selectedEnv'])return;state['selectedEnvData']=_0x46b77e,state['originalTemplates']=(_0x46b77e['templates']||[])['map'](_0x5ef124=>_0x5ef124['filename']),state['hasUnsavedChanges']=![],state['currentRepo']=null,cleanupEditRepoAutocomplete();const _0x2a8610=['server-command-editor','file-editor','script-editor','template-md-editor'];for(const _0xbf984c of _0x2a8610){const _0x18bf72=monacoEditors['get'](_0xbf984c);_0x18bf72&&(_0x18bf72['dispose'](),monacoEditors['delete'](_0xbf984c));}const _0x4bd18f=['agents-editor','readme-editor'];for(const _0x451d57 of _0x4bd18f){window['MarkdownFileEditor']&&window['MarkdownFileEditor']['has'](_0x451d57)&&window['MarkdownFileEditor']['dispose'](_0x451d57);const _0x1d5e9c=monacoEditors['get'](_0x451d57);_0x1d5e9c&&(_0x1d5e9c['dispose'](),monacoEditors['delete'](_0x451d57));}state['currentTest']=null,state['currentTemplate']=null,state['currentDeployProfile']=null,state['currentDeployProfileData']=null,state['readmeContent']=null,state['agentsContent']=null,currentScript='pre-clone',state['currentDeploymentId']=null,stopDeploymentPolling();const _0x29dc4b=document['getElementById']('deployment-progress-panel');_0x29dc4b&&(_0x29dc4b['hidden']=!![]),state['deploymentParamCache']={},updateButtonStates(),renderEnvironmentDetails(),setupTabEventListeners(),state['currentTab']==='deploy'&&loadDeploymentHistory();}catch(_0x3d3683){console['error']('Failed\x20to\x20load\x20environment\x20details:',_0x3d3683),Utils['showError']('Failed\x20to\x20load\x20environment\x20details');}}function setupTabEventListeners(){const _0x554a9a=document['getElementById']('rebuild-schedule-enabled-build-tab'),_0x3bf116=document['getElementById']('rebuild-interval-build-tab');if(_0x554a9a)_0x554a9a['addEventListener']('change',toggleRebuildSchedule);if(_0x3bf116)_0x3bf116['addEventListener']('input',markAsModified);const _0x5db89d=document['getElementById']('server-enabled'),_0x356de6=document['getElementById']('server-name'),_0x4e85a8=document['getElementById']('server-proxy'),_0x181816=document['getElementById']('server-qa-url'),_0x4af029=document['getElementById']('server-auth-user-property'),_0x2559eb=document['getElementById']('server-auth-password-property'),_0x16bca0=document['getElementById']('add-port-btn'),_0x3cae40=document['getElementById']('add-url-btn'),_0x19606f=document['getElementById']('clear-primary-url-btn'),_0x3c607c=document['getElementById']('add-proxy-header-btn'),_0x34d79c=document['getElementById']('add-port-qa-url-btn');if(_0x5db89d)_0x5db89d['addEventListener']('change',toggleServerConfig);if(_0x356de6)_0x356de6['addEventListener']('input',markAsModified);if(_0x4e85a8)_0x4e85a8['addEventListener']('input',markAsModified);if(_0x181816)_0x181816['addEventListener']('input',markAsModified);if(_0x4af029)_0x4af029['addEventListener']('input',markAsModified);if(_0x2559eb)_0x2559eb['addEventListener']('input',markAsModified);if(_0x16bca0)_0x16bca0['addEventListener']('click',addPort);if(_0x3cae40)_0x3cae40['addEventListener']('click',addURL);if(_0x19606f)_0x19606f['addEventListener']('click',clearPrimaryURL);if(_0x3c607c)_0x3c607c['addEventListener']('click',addProxyHeader);if(_0x34d79c)_0x34d79c['addEventListener']('click',addPortQaUrl);const _0x3fe1e7=document['getElementById']('agents-editor'),_0x1e609d=document['getElementById']('preview-agents-btn');_0x3fe1e7&&_0x3fe1e7['addEventListener']('input',()=>{markAsModified(),updateAgentStats();});if(_0x1e609d)_0x1e609d['addEventListener']('click',toggleAgentsPreview);document['querySelectorAll']('#scripts-section-body\x20.script-tab')['forEach'](_0x4e1385=>{_0x4e1385['addEventListener']('click',()=>{saveCurrentScriptToState(),switchScript(_0x4e1385['dataset']['script']);});});const _0x472b2e=document['getElementById']('scripts-section-header');_0x472b2e&&_0x472b2e['addEventListener']('click',toggleScriptsSection);const _0x310072=document['getElementById']('preview-dockerfile-btn');_0x310072&&_0x310072['addEventListener']('click',showDockerfilePreview);const _0x544d6c=document['getElementById']('dockerfile-preview-modal');_0x544d6c&&(_0x544d6c['querySelector']('.modal-close')['addEventListener']('click',closeDockerfilePreviewModal),_0x544d6c['querySelector']('.modal-overlay')['addEventListener']('click',closeDockerfilePreviewModal),document['getElementById']('dockerfile-preview-close-btn')['addEventListener']('click',closeDockerfilePreviewModal),document['getElementById']('dockerfile-copy-btn')['addEventListener']('click',copyDockerfileToClipboard));const _0xf1c21e=document['getElementById']('preview-template-btn');if(_0xf1c21e)_0xf1c21e['addEventListener']('click',toggleTemplatePreview);initializeAutomationFormOptions(),initializeAutomationModalCustomSelects(),initializeAutomationInstructionsEditor();const _0x10a949=document['getElementById']('add-automation-btn');if(_0x10a949)_0x10a949['addEventListener']('click',()=>openAutomationModal('create'));const _0x555f40=document['getElementById']('automations-empty-create-btn');if(_0x555f40)_0x555f40['addEventListener']('click',()=>openAutomationModal('create'));const _0x272fe8=document['getElementById']('automation-history-back-btn');if(_0x272fe8)_0x272fe8['addEventListener']('click',closeAutomationHistoryView);const _0x3cff70=document['getElementById']('automation-history-run-btn');if(_0x3cff70)_0x3cff70['addEventListener']('click',triggerViewedAutomation);const _0x2a6702=document['getElementById']('automations-table-body');_0x2a6702&&(_0x2a6702['addEventListener']('click',handleAutomationTableActionClick),_0x2a6702['addEventListener']('change',handleAutomationTableToggleChange));const _0x2a4c44=document['getElementById']('automation-modal'),_0x1c13e2=_0x2a4c44?.['querySelector']('.modal-overlay');if(_0x1c13e2)_0x1c13e2['addEventListener']('click',closeAutomationModal);const _0x3b310=document['getElementById']('automation-modal-close');if(_0x3b310)_0x3b310['addEventListener']('click',closeAutomationModal);const _0x541607=document['getElementById']('automation-cancel-btn');if(_0x541607)_0x541607['addEventListener']('click',closeAutomationModal);const _0x579f7a=document['getElementById']('automation-save-btn');if(_0x579f7a)_0x579f7a['addEventListener']('click',saveAutomationFromModal);const _0x2c717b=document['getElementById']('automation-frequency');_0x2c717b&&_0x2c717b['addEventListener']('change',()=>{updateAutomationFrequencyFields(),updateAutomationScheduleSummary();});document['querySelectorAll']('#automation-daily-time,\x20#automation-weekly-day,\x20#automation-weekly-time,\x20#automation-monthly-day,\x20#automation-monthly-time,\x20#automation-recurring-interval,\x20#automation-recurring-start-hour,\x20#automation-recurring-end-hour,\x20#automation-custom-cron')['forEach'](_0x3ce35e=>{_0x3ce35e['addEventListener']('change',updateAutomationScheduleSummary),_0x3ce35e['addEventListener']('input',updateAutomationScheduleSummary);});const _0xdefa06=document['getElementById']('automation-recurring-days');_0xdefa06&&_0xdefa06['addEventListener']('change',updateAutomationScheduleSummary);const _0x41a1b2=document['getElementById']('automation-agent-name');if(_0x41a1b2)_0x41a1b2['addEventListener']('change',updateAutomationAgentFields);document['querySelectorAll']('input[name=\x22automation-task-mode\x22]')['forEach'](_0x141ff5=>{_0x141ff5['addEventListener']('change',updateAutomationTaskMode);});const _0x1c77ee=document['getElementById']('automation-template-name');_0x1c77ee&&_0x1c77ee['addEventListener']('change',()=>{renderAutomationTemplateParameters();});}function updateTabBadge(_0x263c71,_0x5e1893){const _0x186a01=document['getElementById'](_0x263c71);if(!_0x186a01)return;_0x5e1893>0x0?(_0x186a01['textContent']=_0x5e1893,_0x186a01['hidden']=![]):_0x186a01['hidden']=!![];}function renderEnvironmentDetails(){const _0x48caf0=state['selectedEnvData'];updateTabBadge('badge-secrets',0x0),updateTabBadge('badge-automations',0x0),updateTabBadge('badge-access',0x0),updateTabBadge('badge-deploy',(_0x48caf0['deployment_profiles']||[])['length']),document['getElementById']('env-name-display')['textContent']=_0x48caf0['name'],document['getElementById']('env-description-display')['textContent']=_0x48caf0['description']||'No\x20description',initializeCustomSelects(),defaultAgentSelectInitializing=!![],document['getElementById']('env-description')['value']=_0x48caf0['description']||'',defaultAgentSelect['select'](_0x48caf0['default_agent']||'claude'),document['getElementById']('env-image-name')['value']=_0x48caf0['image_name']||'',document['getElementById']('env-timezone')['value']=_0x48caf0['timezone']||'',document['getElementById']('env-screen-render-url')['value']=_0x48caf0['screenRenderUrl']||'',state['selectedEnvData']['skills']=Array['isArray'](_0x48caf0['skills'])?_0x48caf0['skills']:[];const _0x15f457=_0x48caf0['rebuild_schedule']||{},_0x3ea371=_0x15f457['enabled']===!![];document['getElementById']('rebuild-schedule-enabled-build-tab')['checked']=_0x3ea371,document['getElementById']('rebuild-interval-build-tab')['value']=_0x15f457['interval_hours']||0x18,document['getElementById']('rebuild-schedule-config-build-tab')['hidden']=!_0x3ea371,defaultAgentSelectInitializing=![];const _0x5bc787=_0x48caf0['repos']?.['length']||0x0,_0x3bf731=Object['keys'](_0x48caf0['tests']||{})['length'],_0x1fa6df=_0x48caf0['templates']?.['length']||0x0,_0x1fb742=_0x48caf0['deployment_profiles']?.['length']||0x0;document['getElementById']('stat-repos')['textContent']=_0x5bc787,document['getElementById']('stat-repos-label')['textContent']=_0x5bc787===0x1?'Repository':'Repositories',document['getElementById']('stat-tests')['textContent']=_0x3bf731,document['getElementById']('stat-tests-label')['textContent']=_0x3bf731===0x1?'Test\x20Command':'Test\x20Commands',document['getElementById']('stat-templates')['textContent']=_0x1fa6df,document['getElementById']('stat-templates-label')['textContent']=_0x1fa6df===0x1?'Template':'Templates',document['getElementById']('stat-deploy-profiles')['textContent']=_0x1fb742,document['getElementById']('stat-deploy-profiles-label')['textContent']=_0x1fb742===0x1?'Deploy\x20Profile':'Deploy\x20Profiles',renderReadme(),renderEnvironmentSkills();const _0x3b8c88=state['selectedEnv'];loadAvailableSkills()['then'](()=>{if(state['selectedEnv']!==_0x3b8c88)return;renderEnvironmentSkills(),state['skillsModalOpen']&&renderSkillsModal();}),renderRepos(),renderServerConfig(),renderAgentInstructions(),renderTests(),renderTemplates(),state['viewingAutomationId']=null,closeAutomationHistoryView(),renderAutomationAgentOptions(_0x48caf0['default_agent']||''),renderAutomations();const _0x2c982f=state['selectedEnv'];loadSecrets()['then'](()=>{if(state['selectedEnv']!==_0x2c982f)return;renderSecrets();}),loadConnections(),renderConnections();const _0xd3cb31=state['selectedEnv'];API['getBindings']({'environment':state['selectedEnv']})['then'](_0x33b32d=>{if(state['selectedEnv']!==_0xd3cb31)return;updateTabBadge('badge-access',(_0x33b32d['bindings']||[])['length']);})['catch'](()=>{}),state['currentTab']==='build'&&loadBuildHistory();}async function loadAvailableSkills(){if(state['availableSkillsLoaded']||state['availableSkillsLoading'])return;state['availableSkillsLoading']=!![],state['availableSkillsError']=null;try{const _0x1cef1d=await API['getSkills']();state['availableSkills']=_0x1cef1d['skills']||[],state['availableSkillsLoaded']=!![];}catch(_0x44a50c){console['error']('Failed\x20to\x20load\x20skills:',_0x44a50c),state['availableSkillsError']=_0x44a50c['message']||'Failed\x20to\x20load\x20skills.';}finally{state['availableSkillsLoading']=![];}}function getSkillDisplayInfo(_0x56dfc9){const _0x3a6b3a=state['availableSkills']['find'](_0x5efe6f=>_0x5efe6f['id']===_0x56dfc9);if(_0x3a6b3a)return{'id':_0x3a6b3a['id'],'name':_0x3a6b3a['name']||_0x3a6b3a['id'],'description':_0x3a6b3a['description']||''};return{'id':_0x56dfc9,'name':_0x56dfc9,'description':''};}function renderEnvironmentSkills(){const _0x2e5dbb=document['getElementById']('env-skills-chips'),_0x24c5af=document['getElementById']('env-skills-empty');if(!_0x2e5dbb||!_0x24c5af)return;const _0x353855=state['selectedEnvData']?.['skills']||[];_0x2e5dbb['innerHTML']='';if(_0x353855['length']===0x0){_0x2e5dbb['hidden']=!![],_0x2e5dbb['classList']['add']('skills-chip-grid-empty'),_0x24c5af['hidden']=![];return;}_0x2e5dbb['hidden']=![],_0x2e5dbb['classList']['remove']('skills-chip-grid-empty'),_0x24c5af['hidden']=!![],_0x353855['forEach'](_0xaa7312=>{const _0x140d59=getSkillDisplayInfo(_0xaa7312),_0x2f26e7=document['createElement']('div');_0x2f26e7['className']='skill-chip',_0x2f26e7['dataset']['skillId']=_0x140d59['id'],_0x2f26e7['innerHTML']='\x0a\x20\x20\x20\x20\x20\x20<span\x20class=\x22skill-chip-name\x22>'+Utils['escapeHtml'](_0x140d59['name'])+'</span>\x0a\x20\x20\x20\x20\x20\x20<span\x20class=\x22skill-chip-id\x22>'+Utils['escapeHtml'](_0x140d59['id'])+'</span>\x0a\x20\x20\x20\x20\x20\x20<button\x20type=\x22button\x22\x20class=\x22skill-chip-remove\x22\x20aria-label=\x22Remove\x20skill\x22>×</button>\x0a\x20\x20\x20\x20';const _0x3c3070=_0x2f26e7['querySelector']('.skill-chip-remove');_0x3c3070['addEventListener']('click',()=>removeSkillFromEnvironment(_0x140d59['id'])),_0x2e5dbb['appendChild'](_0x2f26e7);});}function removeSkillFromEnvironment(_0x1ce3a5){const _0x4727e8=getConnectionRequiredSkills();if(_0x4727e8['has'](_0x1ce3a5)){Utils['showError']('Cannot\x20remove\x20skill\x20\x22'+_0x1ce3a5+'\x22\x20—\x20it\x20is\x20required\x20by\x20an\x20external\x20connection.\x20Remove\x20the\x20connection\x20first.');return;}const _0x4ca41d=state['selectedEnvData']?.['skills']||[],_0x359f37=_0x4ca41d['filter'](_0xdc39a8=>_0xdc39a8!==_0x1ce3a5);state['selectedEnvData']['skills']=_0x359f37,markAsModified(),renderEnvironmentSkills(),state['skillsModalOpen']&&(state['skillsModalSelection']=[..._0x359f37],renderSkillsModal());}function openSkillsModal(){if(!state['selectedEnvData'])return;const _0x42eefa=document['getElementById']('skills-modal');if(!_0x42eefa)return;state['skillsModalOpen']=!![],state['skillsModalSelection']=[...state['selectedEnvData']['skills']||[]];const _0x4a6818=document['getElementById']('skills-modal-search-input');_0x4a6818&&(_0x4a6818['value']=''),_0x42eefa['hidden']=![],loadAvailableSkills()['then'](()=>{renderSkillsModal(),_0x4a6818&&_0x4a6818['focus']();}),renderSkillsModal();}function closeSkillsModal(){const _0x92465c=document['getElementById']('skills-modal');_0x92465c&&(_0x92465c['hidden']=!![]),state['skillsModalOpen']=![];}function applySkillsModalSelection(){if(!state['selectedEnvData'])return;state['selectedEnvData']['skills']=[...state['skillsModalSelection']],markAsModified(),renderEnvironmentSkills(),closeSkillsModal();}function renderSkillsModal(){const _0x1a0f01=document['getElementById']('skills-modal-list'),_0x53fea7=document['getElementById']('skills-modal-selected-list'),_0x13529a=document['getElementById']('skills-modal-selected-empty'),_0x17d4a1=document['getElementById']('skills-modal-selected-count'),_0x481c45=document['getElementById']('skills-modal-search-input'),_0x2ce525=document['getElementById']('skills-modal-search-clear'),_0x2351e8=document['getElementById']('skills-modal-search-meta'),_0x4bee23=document['getElementById']('skills-modal-error'),_0x1e9ab1=document['getElementById']('skills-modal-loading');if(!_0x1a0f01||!_0x53fea7||!_0x13529a||!_0x17d4a1)return;const _0x572a90=(_0x481c45?.['value']||'')['trim']()['toLowerCase']();_0x2ce525&&(_0x2ce525['hidden']=!_0x572a90);_0x4bee23&&(_0x4bee23['hidden']=!![]);_0x1e9ab1&&(_0x1e9ab1['hidden']=!state['availableSkillsLoading']);state['availableSkillsError']&&_0x4bee23&&(_0x4bee23['textContent']=state['availableSkillsError'],_0x4bee23['hidden']=![]);const _0x2443cb=state['availableSkills']||[],_0x245ecf=_0x2443cb['filter'](_0xa197ba=>{const _0x3ad6e2=(_0xa197ba['name']||'')['toLowerCase'](),_0x372e47=(_0xa197ba['id']||'')['toLowerCase'](),_0x324b9d=(_0xa197ba['description']||'')['toLowerCase']();return!_0x572a90||_0x3ad6e2['includes'](_0x572a90)||_0x372e47['includes'](_0x572a90)||_0x324b9d['includes'](_0x572a90);});_0x1a0f01['innerHTML']='';if(!state['availableSkillsLoading']&&_0x245ecf['length']===0x0){const _0x55a8a4=document['createElement']('div');_0x55a8a4['className']='text-muted',_0x55a8a4['textContent']=_0x572a90?'No\x20skills\x20match\x20your\x20search.':'No\x20skills\x20available\x20yet.',_0x1a0f01['appendChild'](_0x55a8a4);}_0x245ecf['forEach'](_0x5beb2a=>{const _0x18b556=state['skillsModalSelection']['includes'](_0x5beb2a['id']),_0x45483d=document['createElement']('div');_0x45483d['className']='skills-modal-item'+(_0x18b556?'\x20selected':''),_0x45483d['innerHTML']='\x0a\x20\x20\x20\x20\x20\x20<label>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<input\x20type=\x22checkbox\x22\x20'+(_0x18b556?'checked':'')+'\x20aria-label=\x22Select\x20'+Utils['escapeHtml'](_0x5beb2a['name']||_0x5beb2a['id'])+'\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22skills-modal-item-name\x22>'+Utils['escapeHtml'](_0x5beb2a['name']||_0x5beb2a['id'])+'</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22skills-modal-item-id\x22>'+Utils['escapeHtml'](_0x5beb2a['id'])+'</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22skills-modal-item-desc\x22>'+Utils['escapeHtml'](_0x5beb2a['description']||'No\x20description\x20provided.')+'</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20</label>\x0a\x20\x20\x20\x20';const _0x2b8c76=_0x45483d['querySelector']('input[type=\x22checkbox\x22]');_0x2b8c76['addEventListener']('change',_0x44f4d6=>{toggleSkillSelection(_0x5beb2a['id'],_0x44f4d6['target']['checked']);}),_0x1a0f01['appendChild'](_0x45483d);}),_0x53fea7['innerHTML']='';const _0x46ae4e=state['skillsModalSelection']['map'](getSkillDisplayInfo);_0x17d4a1['textContent']=_0x46ae4e['length']['toString']();_0x46ae4e['length']===0x0?_0x13529a['hidden']=![]:(_0x13529a['hidden']=!![],_0x46ae4e['forEach'](_0x56b919=>{const _0x46b0a3=document['createElement']('div');_0x46b0a3['className']='skill-chip',_0x46b0a3['dataset']['skillId']=_0x56b919['id'],_0x46b0a3['innerHTML']='\x0a\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22skill-chip-name\x22>'+Utils['escapeHtml'](_0x56b919['name'])+'</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22skill-chip-id\x22>'+Utils['escapeHtml'](_0x56b919['id'])+'</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<button\x20type=\x22button\x22\x20class=\x22skill-chip-remove\x22\x20aria-label=\x22Remove\x20skill\x22>×</button>\x0a\x20\x20\x20\x20\x20\x20';const _0x4febd1=_0x46b0a3['querySelector']('.skill-chip-remove');_0x4febd1['addEventListener']('click',()=>toggleSkillSelection(_0x56b919['id'],![])),_0x53fea7['appendChild'](_0x46b0a3);}));if(_0x2351e8){if(state['availableSkillsLoading'])_0x2351e8['textContent']='Loading\x20skills...';else{if(!_0x2443cb['length'])_0x2351e8['textContent']='No\x20skills\x20available\x20yet.';else _0x572a90?_0x2351e8['textContent']=_0x245ecf['length']?_0x245ecf['length']+'\x20skill'+(_0x245ecf['length']===0x1?'':'s')+'\x20found':'No\x20matching\x20skills\x20found.':_0x2351e8['textContent']=_0x2443cb['length']+'\x20skill'+(_0x2443cb['length']===0x1?'':'s')+'\x20available';}}}function toggleSkillSelection(_0xd00bf3,_0x17a250){const _0x243487=new Set(state['skillsModalSelection']);_0x17a250?_0x243487['add'](_0xd00bf3):_0x243487['delete'](_0xd00bf3),state['skillsModalSelection']=Array['from'](_0x243487),renderSkillsModal();}async function refreshRepositoryGitStatus(){try{const _0x230f36=await _0x2d56e7['fetchGitStatus']();state['changedFiles']=_0x230f36['changedFiles']||[],state['setupRepoAuth']=_0x230f36['setupRepoAuth']||null,invalidateDiffCache(),_0x2d56e7['updateGitStatusIndicator']({'statusIcon':document['getElementById']('repo-status-icon'),'statusText':document['getElementById']('repo-status-text'),'branchText':document['getElementById']('repo-branch-text'),'authBadge':document['getElementById']('repo-auth-mode-badge'),'container':document['getElementById']('repo-status'),'commitBtn':document['getElementById']('repo-commit-btn'),'discardBtn':document['getElementById']('repo-discard-btn')},_0x230f36),updatePushButtonState(_0x230f36);}catch(_0x2de424){console['error']('Failed\x20to\x20get\x20repository\x20git\x20status:',_0x2de424),_0x2d56e7['showGitStatusError']({'statusIcon':document['getElementById']('repo-status-icon'),'statusText':document['getElementById']('repo-status-text'),'authBadge':document['getElementById']('repo-auth-mode-badge')}),updatePushButtonState(null);}}function invalidateDiffCache(){state['uncommittedDiff']=null,state['uncommittedDiffFiles']=null;}async function loadUncommittedDiff(){if(state['uncommittedDiff']!==null)return;try{const _0x9dfc34=await _0x2d56e7['fetchGitDiff']();state['uncommittedDiff']=_0x9dfc34['diff']||'',state['uncommittedDiffFiles']=parsePatchContent(state['uncommittedDiff']);}catch(_0x367158){console['error']('Failed\x20to\x20fetch\x20diff:',_0x367158),state['uncommittedDiff']='',state['uncommittedDiffFiles']=[];}}async function handleFileClick(_0x1fb580,_0x22da1d){const _0x47ef5a=_0x22da1d['nextElementSibling'];if(_0x47ef5a&&_0x47ef5a['classList']['contains']('inline-file-diff')){_0x47ef5a['remove'](),_0x22da1d['classList']['remove']('diff-expanded');return;}const _0x415095=_0x22da1d['closest']('ul');_0x415095['querySelectorAll']('.inline-file-diff')['forEach'](_0x33c1e8=>_0x33c1e8['remove']()),_0x415095['querySelectorAll']('.diff-expanded')['forEach'](_0x1071e7=>_0x1071e7['classList']['remove']('diff-expanded')),_0x22da1d['classList']['add']('diff-expanded');const _0x569f0c=document['createElement']('li');_0x569f0c['className']='inline-file-diff\x20inline-file-diff-loading',_0x569f0c['textContent']='Loading\x20diff...',_0x22da1d['after'](_0x569f0c),await loadUncommittedDiff();const _0x5e2b5b=state['uncommittedDiffFiles']?.['find'](_0x2c171d=>_0x2c171d['newPath']===_0x1fb580||_0x2c171d['oldPath']===_0x1fb580);if(!_0x5e2b5b){_0x569f0c['innerHTML']='<div\x20class=\x22inline-diff-empty\x22>No\x20diff\x20available\x20for\x20this\x20file</div>';return;}const _0x5342d0=renderUnifiedDiff([_0x5e2b5b],'env-uncommitted-'+safeBase64(_0x1fb580));_0x569f0c['className']='inline-file-diff',_0x569f0c['innerHTML']=_0x5342d0,_0x569f0c['querySelectorAll']('.file-diff-header')['forEach'](_0x2d890a=>{_0x2d890a['addEventListener']('click',_0xf1b737=>{if(_0xf1b737['target']['closest']('.file-diff-toggle-btn'))return;const _0x221f98=_0x2d890a['dataset']['diffId'],_0x8c2326=document['getElementById'](_0x221f98);if(_0x8c2326){const _0x1fc826=_0x8c2326['classList']['toggle']('collapsed'),_0x2e4461=_0x2d890a['querySelector']('.file-diff-toggle-btn');if(_0x2e4461)_0x2e4461['dataset']['collapsed']=String(_0x1fc826);}});}),_0x569f0c['querySelectorAll']('.file-diff-toggle-btn')['forEach'](_0x33c301=>{_0x33c301['addEventListener']('click',_0x378b0b=>{_0x378b0b['stopPropagation']();const _0x143105=document['getElementById'](_0x33c301['dataset']['diffId']);if(_0x143105){const _0x288088=_0x143105['classList']['toggle']('collapsed');_0x33c301['dataset']['collapsed']=String(_0x288088);}});});}function updatePushButtonState(_0x1145d3){const _0x2775e1=document['getElementById']('repo-push-btn');if(!_0x2775e1)return;const _0x47a908=Boolean(_0x1145d3)&&!_0x1145d3['hasUncommittedChanges']&&Number(_0x1145d3['ahead']||0x0)>0x0&&Number(_0x1145d3['behind']||0x0)===0x0;_0x2775e1['hidden']=!_0x47a908,_0x2775e1['disabled']=!_0x47a908;}async function pushRepositoryChanges(){const _0x60b67c=document['getElementById']('repo-push-btn');if(!_0x60b67c||_0x60b67c['hidden']||_0x60b67c['disabled'])return;try{const _0x2a6e66=document['getElementById']('repo-status-icon'),_0x51b068=document['getElementById']('repo-status-text');_0x60b67c['disabled']=!![],_0x60b67c['innerHTML']='<span>📤</span>\x20Pushing...',_0x2a6e66['textContent']='📤',_0x51b068['textContent']='Pushing\x20to\x20git...',await API['post']('/environments/git/push'),Utils['showSuccess']('Successfully\x20pushed\x20local\x20commits'),await refreshRepositoryGitStatus();}catch(_0x1d9c48){_0x1d9c48['message']==='setup_repo_user_not_connected'?(savePendingSetupRepoAction('push'),showSetupRepoConnectPrompt(state['setupRepoAuth']?.['provider'],state['setupRepoAuth']?.['provider_type'])):Utils['showError'](_0x1d9c48['message']||'Failed\x20to\x20push\x20commits'),await refreshRepositoryGitStatus();}finally{_0x60b67c['disabled']=![],_0x60b67c['innerHTML']='<span>📤</span>\x20Push\x20to\x20Git';}}async function pullRepositoryChanges(){try{const _0x1921e9=document['getElementById']('repo-pull-btn'),_0x311121=document['getElementById']('repo-status-icon'),_0x35ad6a=document['getElementById']('repo-status-text');_0x1921e9['disabled']=!![],_0x1921e9['innerHTML']='<span>🔄</span>\x20Pulling...',_0x311121['textContent']='🔄',_0x35ad6a['textContent']='Pulling\x20from\x20git...';const _0xe5c15=await API['post']('/environments/git/pull');_0xe5c15['conflicts']?(Utils['showError']('Pull\x20resulted\x20in\x20conflicts.\x20Please\x20resolve\x20manually.'),_0x311121['textContent']='⚠️',_0x35ad6a['textContent']='Conflicts\x20detected'):(Utils['showSuccess']('Successfully\x20pulled\x20latest\x20changes'),await refreshRepositoryGitStatus(),state['selectedEnv']&&await loadEnvironmentDetails(state['selectedEnv']));}catch(_0x2b0b4c){_0x2b0b4c['message']==='setup_repo_user_not_connected'?(savePendingSetupRepoAction('pull'),showSetupRepoConnectPrompt(state['setupRepoAuth']?.['provider'],state['setupRepoAuth']?.['provider_type'])):Utils['showError']('Failed\x20to\x20pull\x20changes'),await refreshRepositoryGitStatus();}finally{const _0x38fc59=document['getElementById']('repo-pull-btn');_0x38fc59['disabled']=![],_0x38fc59['innerHTML']='<span>🔄</span>\x20Pull\x20from\x20Git';}}const PENDING_SETUP_REPO_ACTION_KEY='pendingSetupRepoAction_environments';function savePendingSetupRepoAction(_0x2f0955,_0x4b81db={}){sessionStorage['setItem'](PENDING_SETUP_REPO_ACTION_KEY,JSON['stringify']({'action':_0x2f0955,'data':_0x4b81db,'timestamp':Date['now']()}));}function loadAndClearPendingSetupRepoAction(){try{const _0x5d342d=sessionStorage['getItem'](PENDING_SETUP_REPO_ACTION_KEY);sessionStorage['removeItem'](PENDING_SETUP_REPO_ACTION_KEY);if(!_0x5d342d)return null;const _0x5bc4dc=JSON['parse'](_0x5d342d);if(Date['now']()-_0x5bc4dc['timestamp']>0xa*0x3c*0x3e8)return null;return _0x5bc4dc;}catch{return null;}}async function handleSetupRepoOAuthReturn(){const _0x1c8cbe=new URLSearchParams(window['location']['search']);if(_0x1c8cbe['get']('git_connection')!=='success')return;const _0x107125=new URL(window['location']);_0x107125['searchParams']['delete']('git_connection'),_0x107125['searchParams']['delete']('provider'),window['history']['replaceState']({},'',_0x107125),Utils['showSuccess']('Account\x20connected\x20successfully');const _0x3723f8=loadAndClearPendingSetupRepoAction();if(!_0x3723f8)return;if(_0x3723f8['action']==='pull')setTimeout(()=>pullRepositoryChanges(),0x1f4);else{if(_0x3723f8['action']==='push')setTimeout(()=>pushRepositoryChanges(),0x1f4);else{if(_0x3723f8['action']==='commit'){const {message:_0x36e64c,pullFirst:_0x404021,push:_0x228682}=_0x3723f8['data'];setTimeout(async()=>{try{const _0x330075=await API['post']('/environments/git/commit',{'message':_0x36e64c,'pullFirst':_0x404021,'push':_0x228682});_0x330075['success']&&(Utils['showSuccess'](_0x228682?'Changes\x20committed\x20and\x20pushed':'Changes\x20committed\x20locally'),state['modifiedFiles']['clear'](),updateButtonStates(),await refreshRepositoryGitStatus(),state['selectedEnv']&&await loadEnvironmentDetails(state['selectedEnv']));}catch(_0x576d69){console['error']('Commit\x20retry\x20failed:',_0x576d69),Utils['showError'](_0x576d69['message']||'Failed\x20to\x20commit\x20changes');}},0x1f4);}}}}function initGitConnectionsRequiredModal(){const _0x55ad73=document['getElementById']('git-connections-required-modal');if(!_0x55ad73)return;const _0x576e60=_0x55ad73['querySelector']('.modal-close'),_0x57866a=document['getElementById']('git-connections-close-btn'),_0x50d82a=_0x55ad73['querySelector']('.modal-overlay'),_0x23db0c=()=>{_0x55ad73['hidden']=!![];};_0x576e60?.['addEventListener']('click',_0x23db0c),_0x57866a?.['addEventListener']('click',_0x23db0c),_0x50d82a?.['addEventListener']('click',_0x23db0c);}function showSetupRepoConnectPrompt(_0x578c06,_0x334c73){const _0x3af95f=document['getElementById']('git-connections-required-modal'),_0xc92f5c=document['getElementById']('git-connections-required-list');if(!_0x3af95f||!_0xc92f5c){Utils['showError']('Your\x20account\x20is\x20not\x20connected\x20to\x20provider\x20\x22'+_0x578c06+'\x22.\x20Please\x20connect\x20via\x20Settings.');return;}const _0x3e9cc5=_0x334c73==='github'?'<svg\x20viewBox=\x220\x200\x2098\x2096\x22\x20fill=\x22currentColor\x22><path\x20fill-rule=\x22evenodd\x22\x20clip-rule=\x22evenodd\x22\x20d=\x22M48.854\x200C21.839\x200\x200\x2022\x200\x2049.217c0\x2021.756\x2013.993\x2040.172\x2033.405\x2046.69\x202.427.49\x203.316-1.059\x203.316-2.362\x200-1.141-.08-5.052-.08-9.127-13.59\x202.934-16.42-5.867-16.42-5.867-2.184-5.704-5.42-7.17-5.42-7.17-4.448-3.015.324-3.015.324-3.015\x204.934.326\x207.523\x205.052\x207.523\x205.052\x204.367\x207.496\x2011.404\x205.378\x2014.235\x204.074.404-3.178\x201.699-5.378\x203.074-6.6-10.839-1.141-22.243-5.378-22.243-24.283\x200-5.378\x201.94-9.778\x205.014-13.2-.485-1.222-2.184-6.275.486-13.038\x200\x200\x204.125-1.304\x2013.426\x205.052a46.97\x2046.97\x200\x200\x201\x2012.214-1.63c4.125\x200\x208.33.571\x2012.213\x201.63\x209.302-6.356\x2013.427-5.052\x2013.427-5.052\x202.67\x206.763.97\x2011.816.485\x2013.038\x203.155\x203.422\x205.015\x207.822\x205.015\x2013.2\x200\x2018.905-11.404\x2023.06-22.324\x2024.283\x201.78\x201.548\x203.316\x204.481\x203.316\x209.126\x200\x206.6-.08\x2011.897-.08\x2013.526\x200\x201.304.89\x202.853\x203.316\x202.364\x2019.412-6.52\x2033.405-24.935\x2033.405-46.691C97.707\x2022\x2075.788\x200\x2048.854\x200z\x22/></svg>':'<svg\x20viewBox=\x220\x200\x2024\x2024\x22\x20fill=\x22currentColor\x22><path\x20d=\x22M13.05\x204.24L6.56\x2018.05l2.09.81L18\x209.77l.3-.41-5.25-5.12zm-4.21\x202.6l5.79\x205.64-.42.4-9.28\x202.6\x203.91-8.64zm-1.79\x2010.1l9.31-2.59.43-.39\x201.61\x201.57L4.67\x2019.2l2.38-2.26z\x22/></svg>';_0xc92f5c['innerHTML']='\x0a\x20\x20\x20\x20<div\x20class=\x22git-provider-card\x22>\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22git-provider-card-header\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22git-provider-card-info\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22git-provider-card-icon\x22>'+_0x3e9cc5+'</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22git-provider-card-details\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22git-provider-card-name\x22>'+Utils['escapeHtml'](_0x578c06)+'</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<button\x20class=\x22btn-primary\x20btn-small\x22\x20onclick=\x22connectGitProviderFromModal(\x27'+Utils['escapeHtml'](_0x578c06)+'\x27)\x22>Connect</button>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20',_0x3af95f['hidden']=![];}window['connectGitProviderFromModal']=async function(_0xaa5b95){try{const _0x367c62=await API['post']('/api/git-oauth/start',{'provider_name':_0xaa5b95,'redirect_after':window['location']['pathname']+'?git_connection=success&provider='+encodeURIComponent(_0xaa5b95)}),_0x17591d=document['getElementById']('git-connections-required-modal');if(_0x17591d)_0x17591d['hidden']=!![];window['location']['href']=_0x367c62['oauth_url'];}catch(_0x3f2b72){console['error']('Failed\x20to\x20start\x20OAuth\x20flow:',_0x3f2b72),Utils['showError'](_0x3f2b72['message']||'Failed\x20to\x20start\x20connection');}};function openCommitModal(){invalidateDiffCache(),_0x2d56e7['showCommitModal'](document['getElementById']('commit-modal'),{'userNameEl':document['getElementById']('commit-user-name'),'userEmailEl':document['getElementById']('commit-user-email'),'filesListEl':document['getElementById']('commit-files-list'),'messageEl':document['getElementById']('commit-message'),'pushCheckboxEl':document['getElementById']('commit-push'),'errorEl':document['getElementById']('commit-error'),'user':state['currentUser'],'changedFiles':state['changedFiles'],'onFileClick':handleFileClick});}function closeCommitModal(){document['getElementById']('commit-modal')['hidden']=!![];}async function commitAndPush(){const _0xbd4bd8=document['getElementById']('commit-error'),_0x42aebf=document['getElementById']('commit-message'),_0x57aecb=_0x42aebf['value']['trim']();_0xbd4bd8['hidden']=!![],_0x42aebf['classList']['remove']('input-error');if(!_0x57aecb){_0xbd4bd8['textContent']='Please\x20enter\x20a\x20commit\x20message',_0xbd4bd8['hidden']=![],_0x42aebf['classList']['add']('input-error');return;}if(state['hasUnsavedChanges']){_0xbd4bd8['textContent']='Please\x20save\x20your\x20changes\x20before\x20committing',_0xbd4bd8['hidden']=![];return;}const _0x4b68ac=document['getElementById']('commit-pull-first')['checked'],_0x3255a3=document['getElementById']('commit-push')['checked'];try{const _0x27f427=document['getElementById']('commit-confirm-btn');_0x27f427['disabled']=!![],_0x27f427['textContent']='Committing...';const _0x1078df=await API['post']('/environments/git/commit',{'message':_0x57aecb,'pullFirst':_0x4b68ac,'push':_0x3255a3});_0x1078df['success']?(Utils['showSuccess'](_0x3255a3?'Changes\x20committed\x20and\x20pushed':'Changes\x20committed\x20locally'),state['modifiedFiles']['clear'](),updateButtonStates(),closeCommitModal(),await refreshRepositoryGitStatus(),state['selectedEnv']&&await loadEnvironmentDetails(state['selectedEnv'])):(_0xbd4bd8['textContent']=_0x1078df['error']||'Commit\x20failed',_0xbd4bd8['hidden']=![]);}catch(_0x1351fc){_0x1351fc['message']==='setup_repo_user_not_connected'?(savePendingSetupRepoAction('commit',{'message':_0x57aecb,'pullFirst':_0x4b68ac,'push':_0x3255a3}),closeCommitModal(),showSetupRepoConnectPrompt(state['setupRepoAuth']?.['provider'],state['setupRepoAuth']?.['provider_type'])):(_0xbd4bd8['textContent']=_0x1351fc['message']||'Failed\x20to\x20commit\x20changes',_0xbd4bd8['hidden']=![]);}finally{const _0x2244c9=document['getElementById']('commit-confirm-btn');_0x2244c9['disabled']=![],_0x2244c9['textContent']='Commit\x20&\x20Push';}}function handleRepoStatusClick(){const _0x11f93e=document['getElementById']('repo-status-text')['textContent'];_0x11f93e==='Uncommitted\x20changes'&&openUncommittedChangesModal();}function openUncommittedChangesModal(){invalidateDiffCache(),_0x2d56e7['showUncommittedChangesModal'](document['getElementById']('uncommitted-changes-modal'),document['getElementById']('uncommitted-files-list'),state['changedFiles'],handleFileClick);}function closeUncommittedChangesModal(){document['getElementById']('uncommitted-changes-modal')['hidden']=!![];}function openDiscardModal(){invalidateDiffCache(),_0x2d56e7['showDiscardModal'](document['getElementById']('discard-modal'),document['getElementById']('discard-files-list'),state['changedFiles'],handleFileClick);}function closeDiscardModal(){document['getElementById']('discard-modal')['hidden']=!![];}async function confirmDiscard(){try{const _0x5bceca=document['getElementById']('discard-confirm-btn');_0x5bceca['disabled']=!![],_0x5bceca['textContent']='Discarding...';const _0x4658ce=await API['post']('/environments/git/discard');_0x4658ce['success']?(Utils['showSuccess']('All\x20uncommitted\x20changes\x20have\x20been\x20discarded'),state['hasUnsavedChanges']=![],state['modifiedFiles']['clear'](),updateButtonStates(),closeDiscardModal(),await refreshRepositoryGitStatus(),state['selectedEnv']&&await loadEnvironmentDetails(state['selectedEnv'])):Utils['showError'](_0x4658ce['error']||'Failed\x20to\x20discard\x20changes');}catch(_0x3db6d0){console['error']('Discard\x20failed:',_0x3db6d0),Utils['showError'](_0x3db6d0['message']||'Failed\x20to\x20discard\x20changes');}finally{const _0x1c77d9=document['getElementById']('discard-confirm-btn');_0x1c77d9['disabled']=![],_0x1c77d9['textContent']='Discard\x20Changes';}}let baseImageBuildPollingInterval=null,baseImageBuildOutputEventSource=null;function openBaseImageBuildModal(){document['getElementById']('base-image-no-cache')['checked']=![],document['getElementById']('base-image-build-status')['hidden']=!![],document['getElementById']('base-image-build-start-btn')['disabled']=![],document['getElementById']('base-image-build-cancel-btn')['textContent']='Cancel';const _0xdb3fe6=document['getElementById']('base-image-build-output');if(_0xdb3fe6){_0xdb3fe6['hidden']=!![];const _0x3048d7=_0xdb3fe6['querySelector']('pre');if(_0x3048d7)_0x3048d7['textContent']='';}loadBaseImageBuildHistory(),document['getElementById']('base-image-build-modal')['hidden']=![];}function closeBaseImageBuildModal(){baseImageBuildPollingInterval&&(clearInterval(baseImageBuildPollingInterval),baseImageBuildPollingInterval=null),stopBaseImageBuildOutputStreaming(),document['getElementById']('base-image-build-modal')['hidden']=!![];}async function startBaseImageBuild(){const _0x2b5dfc=document['getElementById']('base-image-no-cache')['checked'],_0x56c734=document['getElementById']('base-image-build-start-btn'),_0x5d208d=document['getElementById']('base-image-build-cancel-btn'),_0x2313c6=document['getElementById']('base-image-build-status'),_0x25b869=_0x2313c6['querySelector']('.build-status-message');_0x56c734['disabled']=!![],_0x56c734['innerHTML']='<span>Building...</span>',_0x2313c6['hidden']=![],_0x25b869['innerHTML']='<span\x20class=\x22status-icon\x22>⏳</span>\x20Starting\x20base\x20image\x20build...',_0x25b869['className']='build-status-message\x20status-building',showBaseImageBuildOutput(),clearBaseImageBuildOutput();try{const _0x56b270=await API['post']('/build/base',{'noCache':_0x2b5dfc});if(_0x56b270['buildId'])startBaseImageBuildOutputStreaming(_0x56b270['buildId']),pollBaseImageBuildStatus(_0x56b270['buildId']);else throw new Error('No\x20build\x20ID\x20received');}catch(_0x593a90){console['error']('Failed\x20to\x20start\x20base\x20image\x20build:',_0x593a90),_0x25b869['innerHTML']='<span\x20class=\x22status-icon\x22>❌</span>\x20Failed\x20to\x20start\x20build:\x20'+(_0x593a90['message']||'Unknown\x20error'),_0x25b869['className']='build-status-message\x20status-failed',_0x56c734['innerHTML']='<span>Build</span>',_0x56c734['disabled']=![];}}function pollBaseImageBuildStatus(_0x42ea76){const _0x4b48da=document['getElementById']('base-image-build-status'),_0x436a6f=_0x4b48da['querySelector']('.build-status-message'),_0x25fdf6=document['getElementById']('base-image-build-start-btn'),_0x404228=document['getElementById']('base-image-build-cancel-btn');baseImageBuildPollingInterval=setInterval(async()=>{try{const _0x226e96=await API['get']('/build/base/status/'+_0x42ea76);if(_0x226e96['status']==='building'){const _0x130976=_0x226e96['duration']?Math['floor'](_0x226e96['duration']/0x3e8):0x0;_0x436a6f['innerHTML']='<span\x20class=\x22status-icon\x22>⏳</span>\x20Building\x20base\x20image...\x20('+formatDuration(_0x130976*0x3e8)+')',_0x436a6f['className']='build-status-message\x20status-building';}else{if(_0x226e96['status']==='success'){clearInterval(baseImageBuildPollingInterval),baseImageBuildPollingInterval=null,stopBaseImageBuildOutputStreaming();const _0x5a490e=_0x226e96['duration']?formatDuration(_0x226e96['duration']):'unknown';_0x436a6f['innerHTML']='<span\x20class=\x22status-icon\x22>✅</span>\x20Base\x20image\x20built\x20successfully\x20in\x20'+_0x5a490e,_0x436a6f['className']='build-status-message\x20status-success',_0x25fdf6['innerHTML']='<span>Build</span>',_0x25fdf6['disabled']=![],_0x404228['textContent']='Close',Utils['showSuccess']('Base\x20image\x20built\x20successfully'),loadBaseImageBuildHistory();}else _0x226e96['status']==='failed'&&(clearInterval(baseImageBuildPollingInterval),baseImageBuildPollingInterval=null,stopBaseImageBuildOutputStreaming(),_0x436a6f['innerHTML']='<span\x20class=\x22status-icon\x22>❌</span>\x20Build\x20failed:\x20'+(_0x226e96['error']||'Unknown\x20error'),_0x436a6f['className']='build-status-message\x20status-failed',_0x25fdf6['innerHTML']='<span>Build</span>',_0x25fdf6['disabled']=![],Utils['showError']('Base\x20image\x20build\x20failed\x20-\x20check\x20output\x20for\x20details'),loadBaseImageBuildHistory());}}catch(_0x24950f){console['error']('Failed\x20to\x20poll\x20build\x20status:',_0x24950f);}},0xbb8);}function formatDuration(_0x5a5df9){const _0x1f37f5=Math['floor'](_0x5a5df9/0x3e8),_0x5ee9a9=Math['floor'](_0x1f37f5/0x3c),_0x544ce2=_0x1f37f5%0x3c;if(_0x5ee9a9>0x0)return _0x5ee9a9+'m\x20'+_0x544ce2+'s';return _0x1f37f5+'s';}function formatTriggeredBy(_0x441e2d){if(typeof _0x441e2d!=='string'||_0x441e2d['trim']()==='')return'Manual';const _0x559d2a=_0x441e2d['trim']()['toLowerCase']();if(_0x559d2a==='manual')return'Manual';if(_0x559d2a==='scheduled'||_0x559d2a==='schedule')return'Scheduled';if(_0x559d2a==='system')return'System';return _0x441e2d;}async function loadBaseImageBuildHistory(){const _0x4c78ab=document['getElementById']('base-image-build-history');if(!_0x4c78ab)return;try{_0x4c78ab['innerHTML']='<p\x20class=\x22text-muted\x22>Loading...</p>';const _0x5156c6=await API['get']('/build/base/history?limit=5'),_0x122baa=_0x5156c6['builds']||[];if(_0x122baa['length']===0x0){_0x4c78ab['innerHTML']='<p\x20class=\x22text-muted\x22>No\x20build\x20history\x20yet.</p>';return;}const _0x9b5232=_0x122baa['map'](_0x3a5e60=>{const _0x3ad0cb=new Date(_0x3a5e60['startTime']),_0x1359d9=_0x3ad0cb['toLocaleDateString']()+'\x20'+_0x3ad0cb['toLocaleTimeString']([],{'hour':'2-digit','minute':'2-digit'}),_0x1e38fc=_0x3a5e60['duration']?formatDuration(_0x3a5e60['duration']):'-',_0xea047f=_0x3a5e60['status']==='success'?'✅':'❌',_0x11504b=formatTriggeredBy(_0x3a5e60['triggeredBy']),_0x493a98=Utils['escapeHtml'](_0x3a5e60['buildId']);return'\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22build-history-row\x20'+_0x3a5e60['status']+'\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22build-status-icon\x22>'+_0xea047f+'</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22build-date\x22>'+_0x1359d9+'</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22build-duration\x22>'+_0x1e38fc+'</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22build-triggered-by\x22>'+Utils['escapeHtml'](_0x11504b)+'</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20class=\x22btn-ghost\x20btn-small\x22\x20onclick=\x22viewBaseImageBuildOutput(\x27'+_0x493a98+'\x27)\x22\x20title=\x22View\x20build\x20output\x22\x20style=\x22padding:\x202px\x206px;\x20font-size:\x2011px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20View\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20';})['join']('');_0x4c78ab['innerHTML']='\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22build-history-compact-list\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20'+_0x9b5232+'\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20';}catch(_0x4137fc){console['error']('Failed\x20to\x20load\x20base\x20image\x20build\x20history:',_0x4137fc),_0x4c78ab['innerHTML']='<p\x20class=\x22text-muted\x22\x20style=\x22color:\x20var(--color-error);\x22>Failed\x20to\x20load\x20history</p>';}}function showBaseImageBuildOutput(){const _0x58afca=document['getElementById']('base-image-build-output');_0x58afca&&(_0x58afca['hidden']=![]);}function clearBaseImageBuildOutput(){const _0x4ee093=document['getElementById']('base-image-build-output');if(_0x4ee093){const _0x28e76b=_0x4ee093['querySelector']('pre');_0x28e76b&&(_0x28e76b['textContent']='');}}function appendToBaseImageBuildOutput(_0x316616){const _0x39a38d=document['getElementById']('base-image-build-output');if(_0x39a38d){const _0x6ac8f3=_0x39a38d['querySelector']('pre');_0x6ac8f3&&(_0x6ac8f3['textContent']+=_0x316616,_0x39a38d['scrollTop']=_0x39a38d['scrollHeight']);}}function startBaseImageBuildOutputStreaming(_0x59aaf5){stopBaseImageBuildOutputStreaming();try{baseImageBuildOutputEventSource=new EventSource('/build/output/stream/'+_0x59aaf5),baseImageBuildOutputEventSource['onmessage']=_0x503c37=>{try{const _0x38baa8=JSON['parse'](_0x503c37['data']);if(_0x38baa8['type']==='output')appendToBaseImageBuildOutput(_0x38baa8['data']);else _0x38baa8['type']==='complete'&&(console['log']('Base\x20image\x20build\x20completed\x20via\x20stream:',_0x38baa8),stopBaseImageBuildOutputStreaming());}catch(_0x5b6655){console['error']('Failed\x20to\x20parse\x20base\x20image\x20build\x20output\x20event:',_0x5b6655);}},baseImageBuildOutputEventSource['onerror']=_0x17bf52=>{console['error']('Base\x20image\x20build\x20output\x20stream\x20error:',_0x17bf52),baseImageBuildOutputEventSource&&baseImageBuildOutputEventSource['readyState']===EventSource['CLOSED']&&stopBaseImageBuildOutputStreaming();};}catch(_0x5dbf8f){console['error']('Failed\x20to\x20start\x20base\x20image\x20build\x20output\x20streaming:',_0x5dbf8f);}}function stopBaseImageBuildOutputStreaming(){baseImageBuildOutputEventSource&&(baseImageBuildOutputEventSource['close'](),baseImageBuildOutputEventSource=null);}window['viewBaseImageBuildOutput']=async function(_0x5559af){showBaseImageBuildOutput(),clearBaseImageBuildOutput();const _0x217e22=document['getElementById']('base-image-build-output');if(_0x217e22){const _0x4fccda=_0x217e22['querySelector']('pre');_0x4fccda&&(_0x4fccda['textContent']='Loading\x20build\x20output...');}try{const _0x68dea=await API['get']('/build/output/'+_0x5559af);if(_0x68dea['output']&&_0x217e22){const _0x4d9c7a=_0x217e22['querySelector']('pre');_0x4d9c7a&&(_0x4d9c7a['textContent']=_0x68dea['output']);}else{if(_0x217e22){const _0x4308b3=_0x217e22['querySelector']('pre');_0x4308b3&&(_0x4308b3['textContent']='No\x20output\x20available\x20for\x20this\x20build.');}}}catch(_0xb6991e){console['error']('Failed\x20to\x20load\x20base\x20image\x20build\x20output:',_0xb6991e);if(_0x217e22){const _0x22b6dc=_0x217e22['querySelector']('pre');_0x22b6dc&&(_0x22b6dc['textContent']='Failed\x20to\x20load\x20build\x20output:\x20'+(_0xb6991e['message']||'Unknown\x20error'));}}};const AUTOMATION_WEEKDAYS=[{'value':'0','label':'Sunday'},{'value':'1','label':'Monday'},{'value':'2','label':'Tuesday'},{'value':'3','label':'Wednesday'},{'value':'4','label':'Thursday'},{'value':'5','label':'Friday'},{'value':'6','label':'Saturday'}],FALLBACK_AUTOMATION_AGENTS=['claude','codex','gemini'],AUTOMATION_AGENT_LABELS={'claude':'Claude','codex':'Codex','gemini':'Gemini'};function formatAutomationTime(_0x41fbf2,_0x303489){const _0x26964c=Number['parseInt'](_0x41fbf2,0xa),_0x24b8fd=Number['parseInt'](_0x303489,0xa);if(!Number['isInteger'](_0x26964c)||!Number['isInteger'](_0x24b8fd))return _0x41fbf2+':'+_0x303489;const _0x466934=_0x26964c>=0xc?'PM':'AM',_0x44d340=_0x26964c%0xc||0xc;return _0x44d340+':'+String(_0x24b8fd)['padStart'](0x2,'0')+'\x20'+_0x466934;}function parseAutomationTimeInputValue(_0x47f91f,_0x195d2a='0',_0x4526b3='0'){const _0x1c6236={'hour':String(Number['parseInt'](_0x195d2a,0xa)||0x0),'minute':String(Number['parseInt'](_0x4526b3,0xa)||0x0)},_0x28776d=String(_0x47f91f||'')['trim']()['match'](/^(\d{1,2}):(\d{2})$/);if(!_0x28776d)return _0x1c6236;const _0x1f40c6=Number['parseInt'](_0x28776d[0x1],0xa),_0x2c9cfa=Number['parseInt'](_0x28776d[0x2],0xa);if(!Number['isInteger'](_0x1f40c6)||_0x1f40c6<0x0||_0x1f40c6>0x17)return _0x1c6236;if(!Number['isInteger'](_0x2c9cfa)||_0x2c9cfa<0x0||_0x2c9cfa>0x3b)return _0x1c6236;return{'hour':String(_0x1f40c6),'minute':String(_0x2c9cfa)};}function formatAutomationTimeInputValue(_0x1541ae,_0x37a5b5,_0x57eb4f='0',_0x121f38='0'){const _0x4427a8=parseAutomationTimeInputValue(String(_0x1541ae??'')['trim']()+':'+String(_0x37a5b5??'')['trim']()['padStart'](0x2,'0'),_0x57eb4f,_0x121f38);return _0x4427a8['hour']['padStart'](0x2,'0')+':'+_0x4427a8['minute']['padStart'](0x2,'0');}function getAutomationTimeInputState(_0x5e9fa4,_0x1b8dfe='0',_0xc383f4='0'){return parseAutomationTimeInputValue(document['getElementById'](_0x5e9fa4)?.['value']||'',_0x1b8dfe,_0xc383f4);}function setAutomationTimeInputValue(_0x17d4e4,_0x44a165,_0x19b058,_0x427ca6='0',_0x1770a5='0'){const _0x4dd585=document['getElementById'](_0x17d4e4);if(!_0x4dd585)return;_0x4dd585['value']=formatAutomationTimeInputValue(_0x44a165,_0x19b058,_0x427ca6,_0x1770a5);}function formatOrdinal(_0x4b3205){const _0x2f075b=Number['parseInt'](_0x4b3205,0xa);if(!Number['isInteger'](_0x2f075b))return''+_0x4b3205;const _0x4c14ed=_0x2f075b%0xa,_0x5ebf5e=_0x2f075b%0x64;if(_0x4c14ed===0x1&&_0x5ebf5e!==0xb)return _0x2f075b+'st';if(_0x4c14ed===0x2&&_0x5ebf5e!==0xc)return _0x2f075b+'nd';if(_0x4c14ed===0x3&&_0x5ebf5e!==0xd)return _0x2f075b+'rd';return _0x2f075b+'th';}function initializeAutomationModalCustomSelects(){for(const _0x2a238f of AUTOMATION_MODAL_SELECT_IDS){if(automationCustomSelects[_0x2a238f])continue;const _0x49c842=document['getElementById'](_0x2a238f);if(!_0x49c842)continue;automationCustomSelects[_0x2a238f]=new CustomSelect(_0x49c842,{'searchable':_0x2a238f==='automation-template-name'});}}function refreshAutomationModalCustomSelect(_0x234759){const _0x873cfe=automationCustomSelects[_0x234759];if(!_0x873cfe||!_0x873cfe['nativeSelect'])return;_0x873cfe['selectedValue']=_0x873cfe['nativeSelect']['value']||'',_0x873cfe['updateDisplay']();}function refreshAllAutomationModalCustomSelects(){for(const _0x4d427d of AUTOMATION_MODAL_SELECT_IDS){refreshAutomationModalCustomSelect(_0x4d427d);}}function initializeAutomationInstructionsEditor(){if(automationInstructionsEditor)return;const _0x529d0a=document['getElementById']('automation-instructions');if(!_0x529d0a||!window['MarkdownEditor'])return;automationInstructionsEditor=new window['MarkdownEditor'](_0x529d0a,{'placeholder':'What\x20should\x20the\x20agent\x20do?','minHeight':'140px','toolbar':!![]});}function setAutomationInstructionsValue(_0x226896=''){if(automationInstructionsEditor){automationInstructionsEditor['setMarkdown'](_0x226896||'');return;}const _0x3b8f86=document['getElementById']('automation-instructions');_0x3b8f86&&(_0x3b8f86['value']=_0x226896||'');}function getAutomationInstructionsValue(){if(automationInstructionsEditor)return automationInstructionsEditor['getMarkdown']();return document['getElementById']('automation-instructions')?.['value']||'';}function initializeAutomationFormOptions(){const _0x436fed=(_0x483fdb,_0x534913)=>{const _0x1b0765=document['getElementById'](_0x483fdb);if(!_0x1b0765||_0x1b0765['dataset']['initialized']==='true')return;_0x1b0765['value']=_0x534913,_0x1b0765['dataset']['initialized']='true';},_0x511c38=(_0x50909e,_0x6fa18a=![])=>{const _0x43c52c=document['getElementById'](_0x50909e);if(!_0x43c52c||_0x43c52c['dataset']['initialized']==='true')return;const _0x4d3d15=[];_0x6fa18a&&_0x4d3d15['push']('<option\x20value=\x22\x22>Any</option>');for(let _0x30f4fd=0x0;_0x30f4fd<=0x17;_0x30f4fd+=0x1){const _0x373594=String(_0x30f4fd);_0x4d3d15['push']('<option\x20value=\x22'+_0x373594+'\x22>'+formatAutomationTime(_0x30f4fd,0x0)+'</option>');}_0x43c52c['innerHTML']=_0x4d3d15['join'](''),_0x43c52c['dataset']['initialized']='true';};_0x436fed('automation-daily-time','02:00'),_0x436fed('automation-weekly-time','09:00'),_0x436fed('automation-monthly-time','00:00'),_0x511c38('automation-recurring-start-hour',!![]),_0x511c38('automation-recurring-end-hour',!![]);const _0x5f4fdc=document['getElementById']('automation-weekly-day');_0x5f4fdc&&_0x5f4fdc['dataset']['initialized']!=='true'&&(_0x5f4fdc['innerHTML']=AUTOMATION_WEEKDAYS['map'](_0xdbc3b8=>'<option\x20value=\x22'+_0xdbc3b8['value']+'\x22>'+_0xdbc3b8['label']+'</option>')['join'](''),_0x5f4fdc['dataset']['initialized']='true');const _0x4aea6a=document['getElementById']('automation-monthly-day');if(_0x4aea6a&&_0x4aea6a['dataset']['initialized']!=='true'){const _0xd4b6f4=[];for(let _0x422241=0x1;_0x422241<=AUTOMATION_MONTHLY_DAY_MAX;_0x422241+=0x1){_0xd4b6f4['push']('<option\x20value=\x22'+_0x422241+'\x22>'+formatOrdinal(_0x422241)+'</option>');}_0x4aea6a['innerHTML']=_0xd4b6f4['join'](''),_0x4aea6a['dataset']['initialized']='true';}const _0x5b602a=document['getElementById']('automation-recurring-days');_0x5b602a&&_0x5b602a['dataset']['initialized']!=='true'&&(_0x5b602a['innerHTML']=AUTOMATION_WEEKDAYS['map'](_0x17b205=>'\x0a\x20\x20\x20\x20\x20\x20<label\x20class=\x22day-toggle-label\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<input\x20type=\x22checkbox\x22\x20value=\x22'+_0x17b205['value']+'\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<span>'+_0x17b205['label']['slice'](0x0,0x3)+'</span>\x0a\x20\x20\x20\x20\x20\x20</label>\x0a\x20\x20\x20\x20')['join'](''),_0x5b602a['dataset']['initialized']='true'),refreshAllAutomationModalCustomSelects();}function formatAutomationAgentLabel(_0x44ada1){const _0x19c4fa=String(_0x44ada1||'')['trim']();if(!_0x19c4fa)return'Agent';if(AUTOMATION_AGENT_LABELS[_0x19c4fa])return AUTOMATION_AGENT_LABELS[_0x19c4fa];return _0x19c4fa['replace'](/[_-]+/g,'\x20')['replace'](/\b\w/g,_0x9f3ccc=>_0x9f3ccc['toUpperCase']());}function getAvailableAutomationAgentNames(){const _0x123055=Object['entries'](state['availableModels']||{})['filter'](([_0x2078dd,_0x188690])=>Boolean(_0x2078dd)&&_0x188690&&typeof _0x188690==='object'&&Array['isArray'](_0x188690['models']))['map'](([_0x2c3ce0])=>_0x2c3ce0);if(_0x123055['length']>0x0)return _0x123055;return[...FALLBACK_AUTOMATION_AGENTS];}async function loadAvailableAutomationModels(_0x30fb39=![]){if(state['availableModelsLoaded']&&!_0x30fb39)return state['availableModels'];state['availableModelsLoaded']=!![];if(!state['currentUser']?.['hasSettingsView'])return state['availableModels']=null,state['availableModels'];try{const _0x1f10f5=await API['get']('/settings/available-models');state['availableModels']=_0x1f10f5&&typeof _0x1f10f5==='object'?_0x1f10f5:null;}catch(_0x55f2e2){state['availableModels']=null,console['warn']('Failed\x20to\x20load\x20available\x20models\x20for\x20automations:',_0x55f2e2);}return state['availableModels'];}function renderAutomationAgentOptions(_0x1c2d5f=''){const _0x5d137b=document['getElementById']('automation-agent-name');if(!_0x5d137b)return;const _0x41e3f4=String(state['selectedEnvData']?.['default_agent']||'')['trim'](),_0x314f83=String(_0x1c2d5f||_0x5d137b['value']||'')['trim'](),_0x2d0d7e=[],_0x451c1a=_0x3d2328=>{const _0x53d6df=String(_0x3d2328||'')['trim']();if(!_0x53d6df||_0x2d0d7e['includes'](_0x53d6df))return;_0x2d0d7e['push'](_0x53d6df);};getAvailableAutomationAgentNames()['forEach'](_0x451c1a),_0x451c1a(_0x41e3f4),_0x451c1a(_0x314f83);_0x2d0d7e['length']===0x0&&_0x451c1a('claude');_0x5d137b['innerHTML']=_0x2d0d7e['map'](_0xcbd38e=>'<option\x20value=\x22'+Utils['escapeHtml'](_0xcbd38e)+'\x22>'+Utils['escapeHtml'](formatAutomationAgentLabel(_0xcbd38e))+'</option>')['join']('');const _0xb35c8e=_0x2d0d7e['includes'](_0x314f83)?_0x314f83:_0x2d0d7e['includes'](_0x41e3f4)?_0x41e3f4:_0x2d0d7e[0x0];_0xb35c8e&&(_0x5d137b['value']=_0xb35c8e),refreshAutomationModalCustomSelect('automation-agent-name');}function setAutomationAgentSelection(_0x3c0122=''){renderAutomationAgentOptions(_0x3c0122),updateAutomationAgentFields();}function updateAutomationFrequencyFields(){const _0x50f9a8=document['getElementById']('automation-frequency')?.['value']||'daily',_0x2ea7f6={'daily':document['getElementById']('automation-daily-fields'),'weekly':document['getElementById']('automation-weekly-fields'),'monthly':document['getElementById']('automation-monthly-fields'),'recurring':document['getElementById']('automation-recurring-fields'),'custom':document['getElementById']('automation-custom-fields')};Object['entries'](_0x2ea7f6)['forEach'](([_0x1e1fd4,_0x551a9c])=>{if(!_0x551a9c)return;_0x551a9c['hidden']=_0x1e1fd4!==_0x50f9a8;});}function updateAutomationAgentFields(){const _0x111a1b=document['getElementById']('automation-agent-name')?.['value']||state['selectedEnvData']?.['default_agent']||getAvailableAutomationAgentNames()[0x0]||'claude',_0x3fdbc3=document['getElementById']('automation-effort-row'),_0x10f630=document['getElementById']('automation-reasoning-row');if(_0x3fdbc3)_0x3fdbc3['hidden']=_0x111a1b!=='claude';if(_0x10f630)_0x10f630['hidden']=_0x111a1b!=='codex';}function getSelectedAutomationTaskMode(){return document['querySelector']('input[name=\x22automation-task-mode\x22]:checked')?.['value']||'instructions';}function updateAutomationTaskMode(){const _0x34726b=getSelectedAutomationTaskMode(),_0x4a1aa3=document['getElementById']('automation-template-row'),_0x1483aa=document['getElementById']('automation-instructions-label');if(_0x4a1aa3)_0x4a1aa3['hidden']=_0x34726b!=='template';_0x1483aa&&(_0x1483aa['textContent']=_0x34726b==='template'?'Additional\x20Instructions':'Instructions');}function parseRecurringDayToken(_0x496a23){const _0x12f6e0=new Set(),_0x312ee8=String(_0x496a23||'')['trim']();if(!_0x312ee8||_0x312ee8==='*')return _0x12f6e0;return _0x312ee8['split'](',')['forEach'](_0x551cf5=>{const _0x4c4132=_0x551cf5['trim']();if(!_0x4c4132)return;if(_0x4c4132['includes']('-')){const [_0xcb89,_0x320e0f]=_0x4c4132['split']('-'),_0x4dd849=Number['parseInt'](_0xcb89,0xa),_0x543712=Number['parseInt'](_0x320e0f,0xa);if(Number['isInteger'](_0x4dd849)&&Number['isInteger'](_0x543712)&&_0x4dd849<=_0x543712)for(let _0x55c67f=_0x4dd849;_0x55c67f<=_0x543712;_0x55c67f+=0x1){_0x12f6e0['add'](String(_0x55c67f===0x7?0x0:_0x55c67f));}return;}const _0x4899c3=Number['parseInt'](_0x4c4132,0xa);Number['isInteger'](_0x4899c3)&&_0x12f6e0['add'](String(_0x4899c3===0x7?0x0:_0x4899c3));}),_0x12f6e0;}function getRecurringDaySelectionToken(){const _0x23ea23=document['querySelectorAll']('#automation-recurring-days\x20input[type=\x22checkbox\x22]:checked'),_0x22d433=[..._0x23ea23]['map'](_0x27b690=>_0x27b690['value']);if(_0x22d433['length']===0x0)return'*';return _0x22d433['sort']((_0x2eccfc,_0x36a72d)=>Number['parseInt'](_0x2eccfc,0xa)-Number['parseInt'](_0x36a72d,0xa)),_0x22d433['join'](',');}function setRecurringDaySelectionToken(_0x321bd8){const _0x41180e=parseRecurringDayToken(_0x321bd8);document['querySelectorAll']('#automation-recurring-days\x20input[type=\x22checkbox\x22]')['forEach'](_0x5168af=>{_0x5168af['checked']=_0x41180e['has'](_0x5168af['value']);});}function getAutomationScheduleFormState(){const _0x559e1e=getAutomationTimeInputState('automation-daily-time','2','0'),_0x1ccf2f=getAutomationTimeInputState('automation-weekly-time','9','0'),_0x2b80c8=getAutomationTimeInputState('automation-monthly-time','0','0');return{'frequency':document['getElementById']('automation-frequency')?.['value']||'daily','customCron':document['getElementById']('automation-custom-cron')?.['value']?.['trim']()||'','dailyHour':_0x559e1e['hour'],'dailyMinute':_0x559e1e['minute'],'weeklyDay':document['getElementById']('automation-weekly-day')?.['value']||'1','weeklyHour':_0x1ccf2f['hour'],'weeklyMinute':_0x1ccf2f['minute'],'monthlyDay':document['getElementById']('automation-monthly-day')?.['value']||'1','monthlyHour':_0x2b80c8['hour'],'monthlyMinute':_0x2b80c8['minute'],'recurringInterval':document['getElementById']('automation-recurring-interval')?.['value']||'*/30\x20*\x20*\x20*\x20*','recurringStartHour':document['getElementById']('automation-recurring-start-hour')?.['value']||'','recurringEndHour':document['getElementById']('automation-recurring-end-hour')?.['value']||'','recurringDayToken':getRecurringDaySelectionToken()};}function buildAutomationScheduleFromForm(){const _0x1e741a=getAutomationScheduleFormState(),_0x139b08=_0x1e741a['frequency'],_0x2c0798=_0x1e741a['customCron'];if(_0x139b08==='custom')return{'cron':buildAutomationCronFromFormState(_0x1e741a),'summary':_0x2c0798?'Custom:\x20'+_0x2c0798:'Custom\x20cron\x20expression'};if(_0x139b08==='daily')return{'cron':buildAutomationCronFromFormState(_0x1e741a),'summary':'Every\x20day\x20at\x20'+formatAutomationTime(_0x1e741a['dailyHour'],_0x1e741a['dailyMinute'])};if(_0x139b08==='weekly'){const _0x306f12=AUTOMATION_WEEKDAYS['find'](_0xe94e72=>_0xe94e72['value']===_0x1e741a['weeklyDay'])?.['label']||'Selected\x20day';return{'cron':buildAutomationCronFromFormState(_0x1e741a),'summary':'Every\x20'+_0x306f12+'\x20at\x20'+formatAutomationTime(_0x1e741a['weeklyHour'],_0x1e741a['weeklyMinute'])};}if(_0x139b08==='monthly')return{'cron':buildAutomationCronFromFormState(_0x1e741a),'summary':formatOrdinal(_0x1e741a['monthlyDay'])+'\x20of\x20every\x20month\x20at\x20'+formatAutomationTime(_0x1e741a['monthlyHour'],_0x1e741a['monthlyMinute'])};const _0x348320=_0x1e741a['recurringInterval'],[_0x104764,_0x499ece]=_0x348320['split']('\x20'),_0x1920c1=[],_0x17ef59=_0x1e741a['recurringStartHour'],_0x4be68a=_0x1e741a['recurringEndHour'];if(_0x17ef59!==''&&_0x4be68a!==''){const _0x2eff99=Number['parseInt'](_0x17ef59,0xa),_0x2c05d7=Number['parseInt'](_0x4be68a,0xa);Number['isInteger'](_0x2eff99)&&Number['isInteger'](_0x2c05d7)&&_0x2eff99<=_0x2c05d7&&_0x1920c1['push'](formatAutomationTime(_0x2eff99,0x0)+'\x20-\x20'+formatAutomationTime(_0x2c05d7,0x0));}const _0x490698=_0x1e741a['recurringDayToken'];if(_0x490698!=='*'){const _0xcce2ac=_0x490698['split'](',')['map'](_0x40472e=>AUTOMATION_WEEKDAYS['find'](_0x44ca6d=>_0x44ca6d['value']===_0x40472e)?.['label']?.['slice'](0x0,0x3))['filter'](Boolean);_0xcce2ac['length']>0x0&&_0x1920c1['push'](_0xcce2ac['join'](',\x20'));}let _0x2c57fa='';if(_0x104764==='*/15')_0x2c57fa='Every\x2015\x20minutes';else{if(_0x104764==='*/30')_0x2c57fa='Every\x2030\x20minutes';else{if(_0x104764==='0'&&_0x499ece==='*')_0x2c57fa='Every\x20hour';else{if(_0x104764==='0'&&_0x499ece['startsWith']('*/'))_0x2c57fa='Every\x20'+_0x499ece['slice'](0x2)+'\x20hours';else _0x2c57fa='Recurring\x20schedule\x20('+_0x348320+')';}}}return _0x1920c1['length']>0x0&&(_0x2c57fa=_0x2c57fa+',\x20'+_0x1920c1['join'](',\x20')),{'cron':buildAutomationCronFromFormState(_0x1e741a),'summary':_0x2c57fa};}function updateAutomationScheduleSummary(){const _0x23bc4c=document['getElementById']('automation-schedule-summary');if(!_0x23bc4c)return;try{const {summary:_0x4f3dd1}=buildAutomationScheduleFromForm();_0x23bc4c['textContent']=_0x4f3dd1||'Choose\x20schedule\x20options';}catch(_0x3aa8a5){_0x23bc4c['textContent']='Invalid\x20schedule\x20settings:\x20'+_0x3aa8a5['message'];}}function describeAutomationCron(_0x2dd69f){const _0x1613fd=String(_0x2dd69f||'')['trim'](),_0xb8386e=_0x1613fd['match'](/^(\d{1,2}) (\d{1,2}) \* \* \*$/);if(_0xb8386e)return'Every\x20day\x20at\x20'+formatAutomationTime(_0xb8386e[0x2],_0xb8386e[0x1]);const _0x19b615=_0x1613fd['match'](/^(\d{1,2}) (\d{1,2}) \* \* ([0-7])$/);if(_0x19b615){const _0x5b1d8f=_0x19b615[0x3]==='7'?'0':_0x19b615[0x3],_0x515203=AUTOMATION_WEEKDAYS['find'](_0x26ef15=>_0x26ef15['value']===_0x5b1d8f)?.['label']||'Day\x20'+_0x5b1d8f;return'Every\x20'+_0x515203+'\x20at\x20'+formatAutomationTime(_0x19b615[0x2],_0x19b615[0x1]);}const _0x13a284=_0x1613fd['match'](/^(\d{1,2}) (\d{1,2}) (\d{1,2}) \* \*$/);if(_0x13a284)return formatOrdinal(_0x13a284[0x3])+'\x20of\x20every\x20month\x20at\x20'+formatAutomationTime(_0x13a284[0x2],_0x13a284[0x1]);const _0x27e285=_0x1613fd['match'](/^(\*\/15|\*\/30|0) ([^\s]+) \* \* ([^\s]+)$/);if(_0x27e285){const [_0x258e9d,_0x276265,_0x530ec4,_0x24ecd0]=_0x27e285;let _0x4827ee='Recurring';if(_0x276265==='*/15')_0x4827ee='Every\x2015\x20minutes';else{if(_0x276265==='*/30')_0x4827ee='Every\x2030\x20minutes';else{if(_0x276265==='0'&&(_0x530ec4==='*'||/\d+-\d+$/['test'](_0x530ec4)))_0x4827ee='Every\x20hour';else{if(_0x276265==='0'&&_0x530ec4['startsWith']('*/'))_0x4827ee='Every\x20'+_0x530ec4['slice'](0x2)+'\x20hours';else{if(_0x276265==='0'){const _0x316df7=_0x530ec4['match'](/^[\d-]+\/(\d+)$/);if(_0x316df7)_0x4827ee='Every\x20'+_0x316df7[0x1]+'\x20hours';}}}}}const _0x1eb291=[_0x4827ee],_0x75dfb=_0x530ec4['match'](/^(\d+)-(\d+)(?:\/\d+)?$/);_0x75dfb&&_0x1eb291['push'](formatAutomationTime(_0x75dfb[0x1],0x0)+'\x20-\x20'+formatAutomationTime(_0x75dfb[0x2],0x0));if(_0x24ecd0!=='*'){const _0x5892aa=[...parseRecurringDayToken(_0x24ecd0)]['sort']((_0x52de71,_0x51138e)=>Number['parseInt'](_0x52de71,0xa)-Number['parseInt'](_0x51138e,0xa))['map'](_0xd32879=>AUTOMATION_WEEKDAYS['find'](_0x38daf0=>_0x38daf0['value']===_0xd32879)?.['label']?.['slice'](0x0,0x3))['filter'](Boolean);_0x5892aa['length']>0x0&&_0x1eb291['push'](_0x5892aa['join'](',\x20'));}return _0x1eb291['join'](',\x20');}return _0x1613fd||'Custom\x20schedule';}function applyAutomationScheduleToForm(_0x28248a){const _0x250fbb=parseAutomationScheduleToFormState(_0x28248a);setAutomationTimeInputValue('automation-daily-time',_0x250fbb['dailyHour'],_0x250fbb['dailyMinute'],'2','0'),setAutomationTimeInputValue('automation-weekly-time',_0x250fbb['weeklyHour'],_0x250fbb['weeklyMinute'],'9','0'),document['getElementById']('automation-weekly-day')['value']=_0x250fbb['weeklyDay'],setAutomationTimeInputValue('automation-monthly-time',_0x250fbb['monthlyHour'],_0x250fbb['monthlyMinute'],'0','0'),document['getElementById']('automation-monthly-day')['value']=_0x250fbb['monthlyDay'],document['getElementById']('automation-recurring-interval')['value']=_0x250fbb['recurringInterval'],document['getElementById']('automation-recurring-start-hour')['value']=_0x250fbb['recurringStartHour'],document['getElementById']('automation-recurring-end-hour')['value']=_0x250fbb['recurringEndHour'],document['getElementById']('automation-custom-cron')['value']=_0x250fbb['frequency']==='custom'?_0x250fbb['customCron']:'',setRecurringDaySelectionToken(_0x250fbb['recurringDayToken']);const _0x54dce0=document['getElementById']('automation-frequency');_0x54dce0&&(_0x54dce0['value']=_0x250fbb['frequency']),refreshAllAutomationModalCustomSelects(),updateAutomationFrequencyFields(),updateAutomationScheduleSummary();}function getAutomationTemplates(){const _0x5a22c6=state['selectedEnvData']?.['templates']||[];if(_0x5a22c6['length']>0x0)return _0x5a22c6['map'](_0x3ed65c=>{const _0xde9825=_0x3ed65c['filename']?.['replace'](/\.md$/,'')||_0x3ed65c['title'];return{'name':_0xde9825,'title':_0x3ed65c['title']||_0xde9825,'description':_0x3ed65c['description']||'','parameters':_0x3ed65c['parameters']||{}};});const _0x353708=state['selectedEnvData']?.['task_templates']||[];return _0x353708['map'](_0x12f4e8=>({'name':_0x12f4e8['name'],'title':_0x12f4e8['title']||_0x12f4e8['name'],'description':'','parameters':{}}));}function getSelectedAutomationTemplate(){const _0x56f4f6=document['getElementById']('automation-template-name')?.['value']||'';return getAutomationTemplates()['find'](_0x4a2539=>_0x4a2539['name']===_0x56f4f6)||null;}function renderAutomationTemplateOptions(_0x4bf898=''){const _0x480c8f=document['getElementById']('automation-template-name');if(!_0x480c8f)return;const _0x56ed8c=getAutomationTemplates();if(_0x56ed8c['length']===0x0){_0x480c8f['innerHTML']='<option\x20value=\x22\x22>No\x20templates\x20available</option>',_0x480c8f['value']='',refreshAutomationModalCustomSelect('automation-template-name');return;}_0x480c8f['innerHTML']=['<option\x20value=\x22\x22>Select\x20template...</option>',..._0x56ed8c['map'](_0x493c35=>'<option\x20value=\x22'+Utils['escapeHtml'](_0x493c35['name'])+'\x22>'+Utils['escapeHtml'](_0x493c35['title'])+'</option>')]['join'](''),_0x480c8f['value']=_0x4bf898&&_0x56ed8c['some'](_0x5b5d5f=>_0x5b5d5f['name']===_0x4bf898)?_0x4bf898:_0x56ed8c[0x0]['name'],refreshAutomationModalCustomSelect('automation-template-name');}function renderAutomationTemplateParameters(_0x32d87a=null){const _0x34b5a1=document['getElementById']('automation-template-params');if(!_0x34b5a1)return;_0x32d87a&&typeof _0x32d87a==='object'&&(state['automationTemplateParamValues']={..._0x32d87a});const _0x4e2cfa=getSelectedAutomationTemplate(),_0x164b55=_0x4e2cfa?.['parameters']&&typeof _0x4e2cfa['parameters']==='object'?Object['entries'](_0x4e2cfa['parameters']):[];if(_0x164b55['length']===0x0){_0x34b5a1['innerHTML']='<p\x20class=\x22text-muted\x20small\x22>This\x20template\x20has\x20no\x20parameters.</p>';return;}_0x34b5a1['innerHTML']=_0x164b55['map'](([_0x15bf65,_0x1ac662])=>{const _0x6f42f7=Boolean(_0x1ac662?.['required']),_0x1817ca=_0x1ac662?.['type']||'string',_0x453ddb=state['automationTemplateParamValues'][_0x15bf65]??_0x1ac662?.['default']??'',_0xd6e886=_0x1ac662?.['label']||_0x15bf65,_0x1f4071=_0x1ac662?.['description']||'',_0x37eb4f=_0x1817ca==='number'?'number':'text';return'\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22form-row\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<label>'+Utils['escapeHtml'](_0xd6e886)+(_0x6f42f7?'\x20*':'')+'</label>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<input\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20type=\x22'+_0x37eb4f+'\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20class=\x22form-input\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20data-automation-param=\x22'+Utils['escapeHtml'](_0x15bf65)+'\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20value=\x22'+Utils['escapeHtml'](String(_0x453ddb))+'\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20placeholder=\x22'+Utils['escapeHtml'](_0x1f4071)+'\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20'+(_0x6f42f7?'required':'')+'>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20';})['join'](''),_0x34b5a1['querySelectorAll']('[data-automation-param]')['forEach'](_0x236b1b=>{_0x236b1b['addEventListener']('input',()=>{const _0x4fcf89=_0x236b1b['getAttribute']('data-automation-param');if(!_0x4fcf89)return;state['automationTemplateParamValues'][_0x4fcf89]=_0x236b1b['value'];});});}function collectAutomationTemplateParameters(){const _0x210c0b=getSelectedAutomationTemplate(),_0x3779a9=_0x210c0b?.['parameters']&&typeof _0x210c0b['parameters']==='object'?_0x210c0b['parameters']:{},_0x2e4011={};return document['querySelectorAll']('[data-automation-param]')['forEach'](_0x568008=>{const _0x3b6e10=_0x568008['getAttribute']('data-automation-param');if(!_0x3b6e10)return;const _0x369697=_0x3779a9[_0x3b6e10]||{},_0x12af1d=_0x568008['value']??'',_0x4b2b5e=String(_0x12af1d)['trim']();if(_0x4b2b5e==='')return;if(_0x369697['type']==='number'){const _0x5e2dad=Number(_0x4b2b5e);_0x2e4011[_0x3b6e10]=Number['isNaN'](_0x5e2dad)?_0x4b2b5e:_0x5e2dad;}else _0x369697['type']==='boolean'?_0x2e4011[_0x3b6e10]=_0x4b2b5e['toLowerCase']()==='true':_0x2e4011[_0x3b6e10]=_0x4b2b5e;}),_0x2e4011;}function setAutomationFormError(_0x155c02=''){const _0x5406af=document['getElementById']('automation-form-error');if(!_0x5406af)return;_0x155c02?(_0x5406af['hidden']=![],_0x5406af['textContent']=_0x155c02):(_0x5406af['hidden']=!![],_0x5406af['textContent']='');}function resetAutomationModalForm(){setAutomationFormError(''),state['automationTemplateParamValues']={},state['editingAutomationId']=null,state['automationModalMode']='create',document['getElementById']('automation-name')['value']='',document['getElementById']('automation-description')['value']='',document['getElementById']('automation-frequency')['value']='daily',document['getElementById']('automation-daily-time')['value']='02:00',document['getElementById']('automation-weekly-day')['value']='1',document['getElementById']('automation-weekly-time')['value']='09:00',document['getElementById']('automation-monthly-day')['value']='1',document['getElementById']('automation-monthly-time')['value']='00:00',document['getElementById']('automation-recurring-interval')['value']='*/30\x20*\x20*\x20*\x20*',document['getElementById']('automation-recurring-start-hour')['value']='',document['getElementById']('automation-recurring-end-hour')['value']='',document['getElementById']('automation-custom-cron')['value']='',setRecurringDaySelectionToken('*');const _0x240b6a=state['selectedEnvData']?.['default_agent']||getAvailableAutomationAgentNames()[0x0]||'claude';setAutomationAgentSelection(_0x240b6a),document['getElementById']('automation-effort-level')['value']='',document['getElementById']('automation-reasoning-level')['value']='',document['getElementById']('automation-task-name')['value']='Automation\x20-\x20{{date}}',setAutomationInstructionsValue(''),document['querySelector']('input[name=\x22automation-task-mode\x22][value=\x22instructions\x22]')['checked']=!![],document['getElementById']('automation-enabled')['checked']=!![],renderAutomationTemplateOptions(),renderAutomationTemplateParameters({}),refreshAllAutomationModalCustomSelects(),updateAutomationFrequencyFields(),updateAutomationAgentFields(),updateAutomationTaskMode(),updateAutomationScheduleSummary();}function closeAutomationModal(){const _0x3f9ba1=document['getElementById']('automation-modal');if(!_0x3f9ba1)return;_0x3f9ba1['hidden']=!![],setAutomationFormError('');}function findAutomationById(_0x8fb9fe){return state['automations']['find'](_0x28155c=>_0x28155c['id']===_0x8fb9fe)||null;}function applyAutomationToModal(_0x456969){document['getElementById']('automation-name')['value']=_0x456969['name']||'',document['getElementById']('automation-description')['value']=_0x456969['description']||'',document['getElementById']('automation-task-name')['value']=_0x456969['task']?.['name']||'Automation\x20-\x20{{date}}',setAutomationAgentSelection(_0x456969['agent']?.['name']||state['selectedEnvData']?.['default_agent']||getAvailableAutomationAgentNames()[0x0]||'claude'),document['getElementById']('automation-effort-level')['value']=_0x456969['agent']?.['effortLevel']||'',document['getElementById']('automation-reasoning-level')['value']=_0x456969['agent']?.['reasoningLevel']||'',document['getElementById']('automation-enabled')['checked']=_0x456969['enabled']!==![];const _0x55ec92=_0x456969['task']?.['taskType']?'template':'instructions';document['querySelector']('input[name=\x22automation-task-mode\x22][value=\x22'+_0x55ec92+'\x22]')['checked']=!![],setAutomationInstructionsValue(_0x456969['task']?.['instructions']||''),renderAutomationTemplateOptions(_0x456969['task']?.['taskType']||''),state['automationTemplateParamValues']={..._0x456969['task']?.['parameters']||{}},renderAutomationTemplateParameters(state['automationTemplateParamValues']),refreshAllAutomationModalCustomSelects(),applyAutomationScheduleToForm(_0x456969['schedule']||'0\x202\x20*\x20*\x20*'),updateAutomationTaskMode(),updateAutomationAgentFields();}async function openAutomationModal(_0x2aa672='create',_0x43a0e4=null){if(!state['selectedEnv'])return;await loadAvailableAutomationModels(),initializeAutomationModalCustomSelects(),initializeAutomationInstructionsEditor(),renderAutomationAgentOptions(state['selectedEnvData']?.['default_agent']||''),initializeAutomationFormOptions(),resetAutomationModalForm();const _0x45ffec=document['getElementById']('automation-modal'),_0x3c7770=document['getElementById']('automation-modal-title');if(!_0x45ffec||!_0x3c7770)return;if(_0x2aa672==='edit'&&_0x43a0e4){state['automationModalMode']='edit',state['editingAutomationId']=_0x43a0e4,_0x3c7770['textContent']='Edit\x20Automation';const _0x3d9366=findAutomationById(_0x43a0e4);if(_0x3d9366)applyAutomationToModal(_0x3d9366);else try{const _0x40c784=await API['getAutomation'](_0x43a0e4);_0x40c784?.['automation']&&applyAutomationToModal(_0x40c784['automation']);}catch(_0x3ce2c7){setAutomationFormError(_0x3ce2c7['message']||'Failed\x20to\x20load\x20automation');}}else state['automationModalMode']='create',_0x3c7770['textContent']='Create\x20Automation';_0x45ffec['hidden']=![];}function buildAutomationPayloadFromForm(){const _0x1e0fa9=document['getElementById']('automation-name')?.['value']?.['trim']()||'',_0xffa8c5=document['getElementById']('automation-description')?.['value']?.['trim']()||'',_0x4699ad=document['getElementById']('automation-task-name')?.['value']?.['trim']()||'',_0x5bcd9f=document['getElementById']('automation-enabled')?.['checked']!==![],_0x4be9c2=document['getElementById']('automation-agent-name')?.['value']||state['selectedEnvData']?.['default_agent']||getAvailableAutomationAgentNames()[0x0]||'claude',_0x572c2f=document['getElementById']('automation-effort-level')?.['value']||null,_0x57b4ca=document['getElementById']('automation-reasoning-level')?.['value']||null,_0x4c908d=getSelectedAutomationTaskMode();if(!_0x1e0fa9)throw new Error('Automation\x20name\x20is\x20required');if(!_0x4699ad)throw new Error('Task\x20name\x20template\x20is\x20required');const _0x5ad6ea=buildAutomationScheduleFromForm();if(!_0x5ad6ea['cron'])throw new Error('Schedule\x20is\x20required');const _0x315647={'name':_0x1e0fa9,'description':_0xffa8c5,'environment':state['selectedEnv'],'enabled':_0x5bcd9f,'schedule':_0x5ad6ea['cron'],'agent':{'name':_0x4be9c2,'effortLevel':_0x4be9c2==='claude'?_0x572c2f||null:null,'reasoningLevel':_0x4be9c2==='codex'?_0x57b4ca||null:null},'task':{'name':_0x4699ad,'instructions':'','taskType':null,'parameters':{},'skills':[]},'settings':{'retainHistoryDays':0x1e}};if(_0x4c908d==='template'){const _0x1d79f6=document['getElementById']('automation-template-name')?.['value']||'';if(!_0x1d79f6)throw new Error('Select\x20a\x20task\x20template');const _0x55af93=getSelectedAutomationTemplate(),_0x3cc6eb=_0x55af93?.['parameters']&&typeof _0x55af93['parameters']==='object'?_0x55af93['parameters']:{},_0x3d960d=collectAutomationTemplateParameters(),_0xba8e3=Object['entries'](_0x3cc6eb)['filter'](([_0x4c5d06,_0x54c671])=>Boolean(_0x54c671?.['required'])&&String(_0x3d960d[_0x4c5d06]??'')['trim']()==='')['map'](([_0x37cef1])=>_0x37cef1);if(_0xba8e3['length']>0x0)throw new Error('Missing\x20required\x20template\x20parameters:\x20'+_0xba8e3['join'](',\x20'));_0x315647['task']['taskType']=_0x1d79f6,_0x315647['task']['parameters']=_0x3d960d,_0x315647['task']['instructions']=getAutomationInstructionsValue()['trim']();}else{const _0x3ef402=getAutomationInstructionsValue()['trim']();if(!_0x3ef402)throw new Error('Instructions\x20are\x20required');_0x315647['task']['instructions']=_0x3ef402;}return _0x315647;}async function saveAutomationFromModal(){try{setAutomationFormError('');const _0x5d6217=buildAutomationPayloadFromForm();state['automationModalMode']==='edit'&&state['editingAutomationId']?(await API['updateAutomation'](state['editingAutomationId'],_0x5d6217),Utils['showSuccess']('Automation\x20updated')):(await API['createAutomation'](_0x5d6217),Utils['showSuccess']('Automation\x20created')),closeAutomationModal(),await renderAutomations(),state['viewingAutomationId']&&await openAutomationHistoryView(state['viewingAutomationId']);}catch(_0x228759){setAutomationFormError(_0x228759['message']||'Failed\x20to\x20save\x20automation');}}function closeAutomationHistoryView(){const _0x595025=document['getElementById']('automations-list-view'),_0x239569=document['getElementById']('automation-history-view');if(_0x595025)_0x595025['hidden']=![];if(_0x239569)_0x239569['hidden']=!![];state['viewingAutomationId']=null;}async function triggerAutomationById(_0x426bd1){try{await API['triggerAutomation'](_0x426bd1),Utils['showSuccess']('Automation\x20triggered'),await renderAutomations(),state['viewingAutomationId']===_0x426bd1&&await openAutomationHistoryView(_0x426bd1);}catch(_0x10cdff){Utils['showError'](_0x10cdff['message']||'Failed\x20to\x20trigger\x20automation');}}async function triggerViewedAutomation(){if(!state['viewingAutomationId'])return;await triggerAutomationById(state['viewingAutomationId']);}async function openAutomationHistoryView(_0x522f47){const _0xee00de=findAutomationById(_0x522f47);if(!_0xee00de)return;const _0x2a578b=document['getElementById']('automations-list-view'),_0x2900cb=document['getElementById']('automation-history-view'),_0xe70688=document['getElementById']('automation-history-title'),_0x273535=document['getElementById']('automation-history-subtitle'),_0x2ff30c=document['getElementById']('automation-history-body'),_0x20b7fa=document['getElementById']('automation-history-tasks-link');if(!_0x2a578b||!_0x2900cb||!_0xe70688||!_0x273535||!_0x2ff30c)return;state['viewingAutomationId']=_0x522f47,_0x2a578b['hidden']=!![],_0x2900cb['hidden']=![],_0xe70688['textContent']=_0xee00de['name'],_0x273535['textContent']=describeAutomationCron(_0xee00de['schedule'])+'\x20·\x20'+(_0xee00de['agent']?.['name']||'agent');_0x20b7fa&&(_0x20b7fa['href']=buildAutomationTaskFilterHref(_0x522f47));try{const _0x1b29b2=await API['getAutomationHistory'](_0x522f47,0x32),_0x1efd90=_0x1b29b2['runs']||[];if(_0x1efd90['length']===0x0){_0x2ff30c['innerHTML']='<tr><td\x20colspan=\x224\x22\x20class=\x22text-muted\x22>No\x20runs\x20yet.</td></tr>';return;}_0x2ff30c['innerHTML']=_0x1efd90['map'](_0x4349e2=>{const _0x18ca82=_0x4349e2['status']==='failed'?'status-failed':_0x4349e2['status']==='running'?'status-running':'status-completed',_0x5cf926=_0x4349e2['triggeredAt']?new Date(_0x4349e2['triggeredAt'])['toLocaleString']():'-',_0x4ba717=_0x4349e2['taskId']?'<a\x20href=\x22task.html?id='+encodeURIComponent(_0x4349e2['taskId'])+'\x22>View\x20Task</a>':'<span\x20class=\x22text-muted\x22>-</span>';return'\x0a\x20\x20\x20\x20\x20\x20\x20\x20<tr>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<td>'+Utils['escapeHtml'](_0x5cf926)+'</td>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<td>'+Utils['escapeHtml'](_0x4349e2['triggeredBy']||'-')+'</td>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<td><span\x20class=\x22automation-run-status\x20'+_0x18ca82+'\x22>'+Utils['escapeHtml'](_0x4349e2['status']||'-')+'</span></td>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<td>'+_0x4ba717+'</td>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</tr>\x0a\x20\x20\x20\x20\x20\x20';})['join']('');}catch(_0x53eab3){_0x2ff30c['innerHTML']='<tr><td\x20colspan=\x224\x22\x20class=\x22text-danger\x22>'+Utils['escapeHtml'](_0x53eab3['message']||'Failed\x20to\x20load\x20history')+'</td></tr>';}}async function deleteAutomationById(_0x33a1a3){const _0x34c4bb=findAutomationById(_0x33a1a3);if(!_0x34c4bb)return;const _0x2291d9=await ConfirmDialog['show']({'title':'Delete\x20Automation','message':'Delete\x20automation\x20\x22'+_0x34c4bb['name']+'\x22?','confirmText':'Delete','danger':!![]});if(!_0x2291d9)return;try{await API['deleteAutomation'](_0x33a1a3),Utils['showSuccess']('Automation\x20deleted'),state['viewingAutomationId']===_0x33a1a3&&closeAutomationHistoryView(),await renderAutomations();}catch(_0x4979a6){Utils['showError'](_0x4979a6['message']||'Failed\x20to\x20delete\x20automation');}}async function handleAutomationTableToggleChange(_0x1750ae){const _0x140660=_0x1750ae['target']['closest']('[data-automation-toggle]');if(!_0x140660)return;const _0x34aae8=_0x140660['getAttribute']('data-automation-toggle'),_0x442b3b=_0x140660['checked'];try{await API['setAutomationEnabled'](_0x34aae8,_0x442b3b),Utils['showSuccess'](_0x442b3b?'Automation\x20enabled':'Automation\x20disabled'),await renderAutomations();}catch(_0x5ee05f){_0x140660['checked']=!_0x442b3b,Utils['showError'](_0x5ee05f['message']||'Failed\x20to\x20update\x20automation\x20status');}}async function handleAutomationTableActionClick(_0x4dc25a){const _0x184972=_0x4dc25a['target']['closest']('[data-automation-action]');if(!_0x184972)return;const _0x467938=_0x184972['getAttribute']('data-automation-action'),_0x10373e=_0x184972['getAttribute']('data-automation-id');if(!_0x10373e)return;if(_0x467938==='trigger'){await triggerAutomationById(_0x10373e);return;}if(_0x467938==='edit'){await openAutomationModal('edit',_0x10373e);return;}if(_0x467938==='delete'){await deleteAutomationById(_0x10373e);return;}_0x467938==='history'&&await openAutomationHistoryView(_0x10373e);}function renderAutomationsTable(){const _0x16a04a=document['getElementById']('automations-count'),_0x47905b=document['getElementById']('automations-empty'),_0x2ca684=document['getElementById']('automations-table-wrapper'),_0x24f365=document['getElementById']('automations-table-body');if(!_0x16a04a||!_0x47905b||!_0x2ca684||!_0x24f365)return;const _0x253a28=state['automations']||[];_0x16a04a['textContent']=_0x253a28['length']+'\x20item'+(_0x253a28['length']===0x1?'':'s');if(_0x253a28['length']===0x0){_0x47905b['hidden']=![],_0x2ca684['hidden']=!![],_0x24f365['innerHTML']='';return;}_0x47905b['hidden']=!![],_0x2ca684['hidden']=![],_0x24f365['innerHTML']=_0x253a28['map'](_0x57f51a=>{const _0x4a3c5c=_0x57f51a['description']?'<div\x20class=\x22text-muted\x20small\x22>'+Utils['escapeHtml'](_0x57f51a['description'])+'</div>':'',_0x991779=describeAutomationCron(_0x57f51a['schedule']),_0x4448c0=_0x57f51a['lastRun']?'Last\x20run\x20'+Utils['formatRelativeTime'](_0x57f51a['lastRun']):'Never\x20run';return'\x0a\x20\x20\x20\x20\x20\x20<tr>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<td>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<strong>'+Utils['escapeHtml'](_0x57f51a['name'])+'</strong>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20'+_0x4a3c5c+'\x0a\x20\x20\x20\x20\x20\x20\x20\x20</td>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<td>'+Utils['escapeHtml'](_0x991779)+'</td>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<td>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<input\x20type=\x22checkbox\x22\x20data-automation-toggle=\x22'+Utils['escapeHtml'](_0x57f51a['id'])+'\x22\x20'+(_0x57f51a['enabled']?'checked':'')+'>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22text-muted\x20small\x22>'+Utils['escapeHtml'](_0x4448c0)+'</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</td>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<td>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22automation-actions-cell\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20class=\x22btn-ghost\x20btn-small\x22\x20data-automation-action=\x22history\x22\x20data-automation-id=\x22'+Utils['escapeHtml'](_0x57f51a['id'])+'\x22>History</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20class=\x22btn-ghost\x20btn-small\x22\x20data-automation-action=\x22edit\x22\x20data-automation-id=\x22'+Utils['escapeHtml'](_0x57f51a['id'])+'\x22>Edit</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20class=\x22btn-ghost\x20btn-small\x20danger\x22\x20data-automation-action=\x22delete\x22\x20data-automation-id=\x22'+Utils['escapeHtml'](_0x57f51a['id'])+'\x22>Delete</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</td>\x0a\x20\x20\x20\x20\x20\x20</tr>\x0a\x20\x20\x20\x20';})['join']('');}async function renderAutomations(){if(!state['selectedEnv'])return;const _0x5b2443=document['getElementById']('automations-loading'),_0x2eff78=document['getElementById']('automations-error');if(_0x5b2443)_0x5b2443['hidden']=![];_0x2eff78&&(_0x2eff78['hidden']=!![],_0x2eff78['textContent']='');const _0x16e1f7=state['selectedEnv'];try{const _0xbfb239=await API['getAutomations']({'environment':_0x16e1f7});if(state['selectedEnv']!==_0x16e1f7)return;state['automations']=_0xbfb239['automations']||[],state['automationsLoadedEnv']=_0x16e1f7,renderAutomationsTable(),updateTabBadge('badge-automations',state['automations']['length']);}catch(_0x3da4eb){console['error']('Failed\x20to\x20load\x20automations:',_0x3da4eb),_0x2eff78&&(_0x2eff78['hidden']=![],_0x2eff78['textContent']=_0x3da4eb['message']||'Failed\x20to\x20load\x20automations');}finally{if(_0x5b2443)_0x5b2443['hidden']=!![];}}async function handleAutomationDeepLinkParams(){const {env:_0x54e181,tab:_0x21a80f,automation:_0x1e491f}=parseAutomationDeepLinkParams(window['location']['search']);if(!_0x54e181&&!_0x21a80f&&!_0x1e491f)return;_0x54e181&&_0x54e181!==state['selectedEnv']&&state['environments']['some'](_0xcae683=>_0xcae683['name']===_0x54e181)&&await selectEnvironment(_0x54e181),_0x21a80f&&switchTab(_0x21a80f),_0x1e491f&&(switchTab('automations'),await renderAutomations(),await openAutomationHistoryView(_0x1e491f));}window['switchTab']=function(_0x230675){state['currentTab']=_0x230675,sessionStorage['setItem'](SESSION_KEY_TAB,_0x230675),document['querySelectorAll']('.content-tab')['forEach'](_0x364d9f=>{const _0x18bfc9=_0x364d9f['dataset']['tab']===_0x230675;_0x364d9f['classList']['toggle']('active',_0x18bfc9),_0x364d9f['setAttribute']('aria-selected',_0x18bfc9);}),scrollToActiveContentTab(),document['querySelectorAll']('.tab-panel')['forEach'](_0x17c6bd=>{_0x17c6bd['hidden']=_0x17c6bd['id']!=='tab-'+_0x230675;}),_0x230675==='build'&&state['selectedEnv']&&(renderBuildTab(),loadBuildHistory()),_0x230675==='deploy'&&state['selectedEnv']&&(renderDeployProfiles(),loadDeploymentHistory()),_0x230675==='access'&&state['selectedEnv']&&loadAccessTab(),_0x230675==='automations'&&state['selectedEnv']&&renderAutomations(),_0x230675==='server'&&state['selectedEnv']&&renderServerConfig();};function renderRepos(){const _0x4e1bed=document['querySelector']('.repos-sidebar'),_0x270869=state['selectedEnvData']['repos']||[];updateTabBadge('badge-repos',_0x270869['length']);const _0x41167d=_0x4e1bed['querySelector']('#new-repo-tab'),_0x31e094=_0x270869['map']((_0x589331,_0x1ebb78)=>'\x0a\x20\x20\x20\x20<button\x20class=\x22repo-tab\x22\x20data-repo=\x22'+_0x1ebb78+'\x22\x20onclick=\x22selectRepo('+_0x1ebb78+')\x22>\x0a\x20\x20\x20\x20\x20\x20<span\x20class=\x22repo-icon\x22>📁</span>\x0a\x20\x20\x20\x20\x20\x20<span>'+Utils['escapeHtml'](_0x589331['name'])+'</span>\x0a\x20\x20\x20\x20</button>\x0a\x20\x20')['join']('');_0x4e1bed['innerHTML']=_0x41167d['outerHTML']+_0x31e094,_0x4e1bed['querySelector']('#new-repo-tab')['addEventListener']('click',addRepo);if(_0x270869['length']>0x0&&state['currentRepo']===null)selectRepo(0x0);else _0x270869['length']===0x0&&showRepoEmptyState();}function showRepoEmptyState(){document['getElementById']('current-repo-name')['textContent']='Select\x20a\x20Repository',document['getElementById']('delete-repo-btn')['hidden']=!![],document['getElementById']('repo-details-container')['innerHTML']='<p\x20class=\x22text-muted\x22>Select\x20a\x20repository\x20from\x20the\x20sidebar\x20to\x20view\x20details,\x20or\x20add\x20a\x20new\x20one.</p>';}function persistCurrentRepoFormChanges(){if(state['currentRepo']===null)return;const _0x35c8ec=state['selectedEnvData']?.['repos'];if(!Array['isArray'](_0x35c8ec)||!_0x35c8ec[state['currentRepo']])return;const _0xfd31b2=document['getElementById']('repo-url'),_0x4e9a25=document['getElementById']('repo-allow-branch-selection'),_0x298e63=document['getElementById']('repo-path'),_0x42af22=document['getElementById']('repo-description'),_0x28525a=document['getElementById']('repo-clone-auto'),_0x2a47de=document['getElementById']('repo-post-clone-action');if(!_0xfd31b2||!_0x4e9a25||!_0x298e63||!_0x42af22||!_0x28525a||!_0x2a47de)return;const _0x2bb844=_0x35c8ec[state['currentRepo']],_0x3842d9=document['getElementById']('edit-repo-provider')?.['value']||'',_0x2ae418=document['getElementById']('edit-repo-credential-mode')?.['value']||'app',_0x17ea3e=monacoEditors['get']('repo-custom-action-editor'),_0xb78f7f=_0x17ea3e?_0x17ea3e['getValue']()['trim']():'';let _0x119d90;if(_0x2a47de['value']==='custom'&&_0xb78f7f)_0x119d90=_0xb78f7f;else _0x2a47de['value']!=='none'&&_0x2a47de['value']!=='custom'&&(_0x119d90=_0x2a47de['value']);const _0x562dd7={..._0x2bb844,'url':_0xfd31b2['value'],'branch':getEditRepoBranchValue(),'allow_branch_selection':_0x4e9a25['checked'],'path':_0x298e63['value']||undefined,'description':_0x42af22['value']||undefined,'clone_auto':_0x28525a['checked'],'post_clone_action':_0x119d90||undefined};_0x3842d9?_0x562dd7['remote_provider']={'provider':_0x3842d9,'credential_mode':_0x2ae418}:delete _0x562dd7['remote_provider'],_0x35c8ec[state['currentRepo']]=_0x562dd7;}window['selectRepo']=function(_0x2d3dfa){persistCurrentRepoFormChanges();const _0x31dca6=monacoEditors['get']('repo-custom-action-editor');_0x31dca6&&(_0x31dca6['dispose'](),monacoEditors['delete']('repo-custom-action-editor'));state['currentRepo']=_0x2d3dfa;const _0x3ac73c=state['selectedEnvData']['repos'][_0x2d3dfa],_0x24faef=_0x3ac73c['remote_provider']&&_0x3ac73c['remote_provider']['provider'];document['querySelectorAll']('.repo-tab')['forEach'](_0x352a1f=>{_0x352a1f['classList']['toggle']('active',_0x352a1f['dataset']['repo']===String(_0x2d3dfa));}),document['getElementById']('current-repo-name')['textContent']=_0x3ac73c['name'],document['getElementById']('delete-repo-btn')['hidden']=![];const _0x58b302='\x0a\x20\x20\x20\x20<div\x20class=\x22form-row\x22>\x0a\x20\x20\x20\x20\x20\x20<label\x20for=\x22edit-repo-provider\x22>Git\x20Provider</label>\x0a\x20\x20\x20\x20\x20\x20<select\x20id=\x22edit-repo-provider\x22\x20class=\x22form-input\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\x22\x22>None</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<!--\x20Providers\x20populated\x20via\x20loadEditRepoProviders()\x20-->\x0a\x20\x20\x20\x20\x20\x20</select>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20',_0x41f4d2=_0x3ac73c['remote_provider']?.['credential_mode']||'app',_0x1c117a='\x0a\x20\x20\x20\x20<div\x20id=\x22edit-repo-credential-mode-row\x22\x20class=\x22form-row\x22\x20'+(_0x24faef?'':'hidden')+'>\x0a\x20\x20\x20\x20\x20\x20<label\x20for=\x22edit-repo-credential-mode\x22>Credential\x20Mode</label>\x0a\x20\x20\x20\x20\x20\x20<select\x20id=\x22edit-repo-credential-mode\x22\x20class=\x22form-input\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\x22app\x22\x20'+(_0x41f4d2==='app'?'selected':'')+'>App\x20Credentials</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\x22user\x22\x20'+(_0x41f4d2==='user'?'selected':'')+'>User\x20Credentials</option>\x0a\x20\x20\x20\x20\x20\x20</select>\x0a\x20\x20\x20\x20\x20\x20<small\x20class=\x22form-hint\x22>For\x20tasks\x20and\x20deployments.\x20App:\x20app/bot\x20identity.\x20User:\x20personal\x20Git\x20account\x20(requires\x20connection).</small>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20',_0x488412='\x0a\x20\x20\x20\x20<div\x20id=\x22edit-repo-url-row\x22\x20class=\x22form-row\x22\x20'+(_0x24faef?'hidden':'')+'>\x0a\x20\x20\x20\x20\x20\x20<label\x20for=\x22repo-url\x22>Repository\x20URL</label>\x0a\x20\x20\x20\x20\x20\x20<input\x20type=\x22text\x22\x20id=\x22repo-url\x22\x20class=\x22form-input\x20code-font\x22\x20value=\x22'+Utils['escapeHtml'](_0x3ac73c['url'])+'\x22\x20placeholder=\x22https://github.com/user/repo.git\x22>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20',_0xecc5bb='\x0a\x20\x20\x20\x20<div\x20id=\x22edit-repo-autocomplete-row\x22\x20class=\x22form-row\x22\x20'+(_0x24faef?'':'hidden')+'\x20style=\x22margin-top:\x2016px;\x22>\x0a\x20\x20\x20\x20\x20\x20<label>Repository</label>\x0a\x20\x20\x20\x20\x20\x20<div\x20id=\x22edit-repo-autocomplete-container\x22></div>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20',_0x2a8482=document['getElementById']('repo-details-container');_0x2a8482['innerHTML']='\x0a\x20\x20\x20\x20<div\x20class=\x22form-single-column\x22>\x0a\x20\x20\x20\x20\x20\x20'+_0x58b302+'\x0a\x20\x20\x20\x20\x20\x20'+_0x1c117a+'\x0a\x20\x20\x20\x20\x20\x20'+_0x488412+'\x0a\x20\x20\x20\x20\x20\x20'+_0xecc5bb+'\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22form-row\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<label\x20for=\x22repo-branch-field\x22>Branch</label>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22autocomplete-control-with-icon\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20id=\x22repo-branch-field\x22></div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20type=\x22button\x22\x20class=\x22btn-icon\x20autocomplete-refresh-btn\x22\x20id=\x22repo-branch-refresh-btn\x22\x20title=\x22Reload\x20branch\x20list\x22\x20aria-label=\x22Reload\x20branch\x20list\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20↻\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22form-row\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<label>Allow\x20Branch\x20Selection</label>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<label\x20class=\x22toggle-switch\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<input\x20type=\x22checkbox\x22\x20id=\x22repo-allow-branch-selection\x22\x20'+(_0x3ac73c['allow_branch_selection']?'checked':'')+'>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22toggle-slider\x22></span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</label>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22form-row\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<label>Path</label>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<input\x20type=\x22text\x22\x20id=\x22repo-path\x22\x20class=\x22form-input\x20code-font\x22\x20value=\x22'+Utils['escapeHtml'](_0x3ac73c['path']||'')+'\x22\x20placeholder=\x22Optional\x20path\x20in\x20environment\x22>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22form-row\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<label>Description</label>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<input\x20type=\x22text\x22\x20id=\x22repo-description\x22\x20class=\x22form-input\x22\x20value=\x22'+Utils['escapeHtml'](_0x3ac73c['description']||'')+'\x22\x20placeholder=\x22Optional\x20description\x22>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22form-row\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<label>Clone\x20Automatically</label>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<label\x20class=\x22toggle-switch\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<input\x20type=\x22checkbox\x22\x20id=\x22repo-clone-auto\x22\x20'+(_0x3ac73c['clone_auto']!==![]?'checked':'')+'>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22toggle-slider\x22></span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</label>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<small\x20class=\x22form-hint\x22>Include\x20this\x20repository\x20in\x20the\x20Docker\x20build.\x20Disable\x20to\x20clone\x20manually\x20at\x20runtime\x20or\x20via\x20post-clone\x20script.</small>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22form-row\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<label\x20for=\x22repo-post-clone-action\x22>Post-clone\x20Action</label>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<select\x20id=\x22repo-post-clone-action\x22\x20class=\x22form-input\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\x22none\x22\x20'+(!_0x3ac73c['post_clone_action']||_0x3ac73c['post_clone_action']==='none'?'selected':'')+'>None</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<optgroup\x20label=\x22Node.js\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\x22npm\x20install\x22\x20'+(_0x3ac73c['post_clone_action']==='npm\x20install'?'selected':'')+'>npm\x20install</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\x22npm\x20ci\x22\x20'+(_0x3ac73c['post_clone_action']==='npm\x20ci'?'selected':'')+'>npm\x20ci</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\x22yarn\x22\x20'+(_0x3ac73c['post_clone_action']==='yarn'?'selected':'')+'>yarn</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\x22pnpm\x20install\x22\x20'+(_0x3ac73c['post_clone_action']==='pnpm\x20install'?'selected':'')+'>pnpm\x20install</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</optgroup>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<optgroup\x20label=\x22Python\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\x22pip\x20install\x20-r\x20requirements.txt\x22\x20'+(_0x3ac73c['post_clone_action']==='pip\x20install\x20-r\x20requirements.txt'?'selected':'')+'>pip\x20install\x20-r\x20requirements.txt</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\x22pip\x20install\x20-e\x20.\x22\x20'+(_0x3ac73c['post_clone_action']==='pip\x20install\x20-e\x20.'?'selected':'')+'>pip\x20install\x20-e\x20.\x20(editable)</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</optgroup>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<optgroup\x20label=\x22Java\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\x22mvn\x20install\x20-DskipTests\x22\x20'+(_0x3ac73c['post_clone_action']==='mvn\x20install\x20-DskipTests'?'selected':'')+'>mvn\x20install\x20(skip\x20tests)</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\x22./gradlew\x20build\x20-x\x20test\x22\x20'+(_0x3ac73c['post_clone_action']==='./gradlew\x20build\x20-x\x20test'?'selected':'')+'>gradle\x20build\x20(skip\x20tests)</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</optgroup>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<optgroup\x20label=\x22.NET\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\x22dotnet\x20restore\x22\x20'+(_0x3ac73c['post_clone_action']==='dotnet\x20restore'?'selected':'')+'>dotnet\x20restore</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\x22dotnet\x20build\x22\x20'+(_0x3ac73c['post_clone_action']==='dotnet\x20build'?'selected':'')+'>dotnet\x20build</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</optgroup>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<optgroup\x20label=\x22PHP\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\x22composer\x20install\x22\x20'+(_0x3ac73c['post_clone_action']==='composer\x20install'?'selected':'')+'>composer\x20install</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</optgroup>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<optgroup\x20label=\x22Other\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\x22custom\x22\x20'+(_0x3ac73c['post_clone_action']==='custom'||_0x3ac73c['post_clone_action']&&!isKnownPostCloneAction(_0x3ac73c['post_clone_action'])?'selected':'')+'>Custom\x20command...</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</optgroup>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</select>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<small\x20class=\x22form-hint\x22>Command\x20to\x20run\x20in\x20this\x20repository\x27s\x20directory\x20after\x20cloning.</small>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22form-row\x22\x20id=\x22repo-custom-action-row\x22\x20'+(_0x3ac73c['post_clone_action']&&!isKnownPostCloneAction(_0x3ac73c['post_clone_action'])&&_0x3ac73c['post_clone_action']!=='none'?'':'hidden')+'>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<label\x20for=\x22repo-custom-action\x22>Custom\x20Command</label>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20id=\x22repo-custom-action-editor\x22\x20style=\x22height:\x20150px;\x20border:\x201px\x20solid\x20var(--color-border);\x20border-radius:\x204px;\x22></div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<small\x20class=\x22form-hint\x22>Shell\x20commands\x20to\x20run\x20after\x20cloning.\x20Use\x20multiple\x20lines\x20for\x20complex\x20commands.</small>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20',loadEditRepoProviders(_0x3ac73c),initEditRepoBranchAutocomplete(_0x3ac73c);const _0x5d74fa=document['getElementById']('repo-branch-refresh-btn');_0x5d74fa&&(_0x5d74fa['onclick']=_0x2017d9=>{_0x2017d9['preventDefault'](),reloadEditRepoBranchSuggestions();});document['getElementById']('edit-repo-provider')['addEventListener']('change',onEditRepoProviderChange),document['getElementById']('repo-post-clone-action')['addEventListener']('change',async _0x5b1de3=>{const _0x55e235=document['getElementById']('repo-custom-action-row'),_0x1b2b1e=_0x5b1de3['target']['value']==='custom';_0x55e235['hidden']=!_0x1b2b1e;if(_0x1b2b1e){const _0x5dcc87=monacoEditors['get']('repo-custom-action-editor');if(!_0x5dcc87){const _0x37d2b9=await createMonacoEditor('repo-custom-action-editor','','shell',![]);_0x37d2b9&&(_0x37d2b9['updateOptions']({'wordWrap':'off'}),_0x37d2b9['onDidChangeModelContent'](()=>markAsModified()));}}markAsModified();});if(_0x3ac73c['post_clone_action']&&!isKnownPostCloneAction(_0x3ac73c['post_clone_action'])&&_0x3ac73c['post_clone_action']!=='none'){const _0x343bc6=_0x3ac73c['post_clone_action'];createMonacoEditor('repo-custom-action-editor',_0x343bc6,'shell',![])['then'](_0x3ab0e4=>{_0x3ab0e4&&(_0x3ab0e4['updateOptions']({'wordWrap':'off'}),_0x3ab0e4['onDidChangeModelContent'](()=>markAsModified()));});}const _0x2af972=['repo-url','repo-allow-branch-selection','repo-path','repo-description','repo-clone-auto','edit-repo-credential-mode'];_0x2af972['forEach'](_0x4dec90=>{const _0x40e44a=document['getElementById'](_0x4dec90);_0x40e44a&&(_0x40e44a['addEventListener']('input',markAsModified),_0x40e44a['addEventListener']('change',markAsModified));});};const REPO_ICON_PUBLIC='<svg\x20viewBox=\x220\x200\x2016\x2016\x22><path\x20d=\x22M2\x202.5A2.5\x202.5\x200\x200\x201\x204.5\x200h8.75a.75.75\x200\x200\x201\x20.75.75v12.5a.75.75\x200\x200\x201-.75.75h-2.5a.75.75\x200\x200\x201\x200-1.5h1.75v-2h-8a1\x201\x200\x200\x200-.714\x201.7.75.75\x200\x201\x201-1.072\x201.05A2.495\x202.495\x200\x200\x201\x202\x2011.5Zm10.5-1h-8a1\x201\x200\x200\x200-1\x201v6.708A2.486\x202.486\x200\x200\x201\x204.5\x209h8ZM5\x2012.25a.25.25\x200\x200\x201\x20.25-.25h3.5a.25.25\x200\x200\x201\x20.25.25v3.25a.25.25\x200\x200\x201-.4.2l-1.45-1.087a.249.249\x200\x200\x200-.3\x200L5.4\x2015.7a.25.25\x200\x200\x201-.4-.2Z\x22></path></svg>',REPO_ICON_PRIVATE='<svg\x20viewBox=\x220\x200\x2016\x2016\x22><path\x20fill-rule=\x22evenodd\x22\x20d=\x22M4\x204v2h-.25A1.75\x201.75\x200\x20002\x207.75v5.5c0\x20.966.784\x201.75\x201.75\x201.75h8.5A1.75\x201.75\x200\x200014\x2013.25v-5.5A1.75\x201.75\x200\x200012.25\x206H12V4a4\x204\x200\x2010-8\x200zm6.5\x202V4a2.5\x202.5\x200\x2000-5\x200v2h5zM12\x207.5h.25a.25.25\x200\x2001.25.25v5.5a.25.25\x200\x2001-.25.25h-8.5a.25.25\x200\x2001-.25-.25v-5.5a.25.25\x200\x2001.25-.25H12z\x22></path></svg>';async function loadEditRepoProviders(_0x1e5963){const _0x30d391=document['getElementById']('edit-repo-provider');if(!_0x30d391)return;const _0xac5407=_0x1e5963['remote_provider']&&_0x1e5963['remote_provider']['provider'];try{const _0x4c270f=await API['get']('/environments/'+state['selectedEnv']+'/repos/providers'),_0x18fe9b=_0x4c270f['providers']||[];let _0x36b8b8='<option\x20value=\x22\x22>None</option>',_0x188957=![];_0x18fe9b['forEach'](_0x2ba058=>{const _0x56963c=_0xac5407&&_0x1e5963['remote_provider']['provider']===_0x2ba058['name'];if(_0x56963c)_0x188957=!![];const _0x3c32b9=_0x56963c?'selected':'';_0x36b8b8+='<option\x20value=\x22'+Utils['escapeHtml'](_0x2ba058['name'])+'\x22\x20'+_0x3c32b9+'>'+Utils['escapeHtml'](_0x2ba058['name'])+'\x20('+Utils['escapeHtml'](_0x2ba058['type'])+')</option>';}),_0xac5407&&!_0x188957&&(_0x36b8b8+='<option\x20value=\x22'+Utils['escapeHtml'](_0x1e5963['remote_provider']['provider'])+'\x22\x20selected\x20disabled>'+Utils['escapeHtml'](_0x1e5963['remote_provider']['provider'])+'\x20(unavailable)</option>'),_0x30d391['innerHTML']=_0x36b8b8,state['editRepoProviders']=_0x18fe9b,initEditRepoAutocomplete(_0x1e5963);}catch(_0x4430fb){console['error']('Failed\x20to\x20load\x20providers\x20for\x20edit\x20repo:',_0x4430fb);}}function extractRepoFullName(_0x48c842){if(!_0x48c842)return'';try{const _0x29c6cf=_0x48c842['match'](/\/([^/]+)\/_git\/([^/]+?)(?:\.git)?$/);if(_0x29c6cf)return _0x29c6cf[0x1]+'/'+_0x29c6cf[0x2];const _0x5005af=_0x48c842['match'](/[/:]([^/:]+\/[^/]+?)(?:\.git)?$/);return _0x5005af?_0x5005af[0x1]:_0x48c842;}catch{return _0x48c842;}}function normalizeGitUrl(_0xc68365){if(!_0xc68365)return _0xc68365;const _0xa47c6f=_0xc68365['match'](/^(https?:\/\/)[^@/]+@(.+)$/i);if(_0xa47c6f)return''+_0xa47c6f[0x1]+_0xa47c6f[0x2];return _0xc68365;}function initEditRepoAutocomplete(_0x55bd22){const _0x72c306=document['getElementById']('edit-repo-autocomplete-container');if(!_0x72c306)return;const _0x5f284c=_0x55bd22['remote_provider']&&_0x55bd22['remote_provider']['provider'];editRepoAutocomplete&&(editRepoAutocomplete['destroy'](),editRepoAutocomplete=null);editRepoAutocomplete=new AutocompleteSelect(_0x72c306,{'placeholder':'Search\x20for\x20a\x20repository','maxItems':0x64,'emptyMessage':'No\x20repositories\x20found','loadingMessage':'Loading\x20repositories...','preload':![],'searchMode':'server','loadItems':async _0xc37e89=>{const _0x308ba7=document['getElementById']('edit-repo-provider')['value'];if(!_0x308ba7)return[];try{let _0x33c91f='/environments/'+state['selectedEnv']+'/repos/available-from-provider?provider='+encodeURIComponent(_0x308ba7)+'&limit=100';_0xc37e89&&_0xc37e89['trim']()&&(_0x33c91f+='&search='+encodeURIComponent(_0xc37e89['trim']()));const _0x37b2dc=await API['get'](_0x33c91f);return _0x37b2dc['repositories']||[];}catch(_0x293378){console['error']('Failed\x20to\x20load\x20repositories:',_0x293378);throw _0x293378;}},'renderItem':_0x58c16d=>{const _0x57faef=_0x58c16d['private']===!![];let _0x4ab75d=_0x58c16d['description']||'no\x20description';return _0x58c16d['descriptionSource']==='project'&&_0x58c16d['description']&&(_0x4ab75d='Project:\x20'+_0x58c16d['description']),{'primary':_0x58c16d['full_name']||_0x58c16d['name'],'secondary':_0x4ab75d,'icon':_0x57faef?REPO_ICON_PRIVATE:REPO_ICON_PUBLIC,'iconClass':_0x57faef?'icon-private':'icon-public'};},'sortItems':_0x3ec2f9=>{return _0x3ec2f9['sort']((_0x5a7cde,_0x19990d)=>{const _0x12f1e0=(_0x5a7cde['full_name']||_0x5a7cde['name']||'')['toLowerCase'](),_0x4dac42=(_0x19990d['full_name']||_0x19990d['name']||'')['toLowerCase']();return _0x12f1e0['localeCompare'](_0x4dac42);});},'getItemValue':_0x5ae3cb=>_0x5ae3cb['clone_url']||_0x5ae3cb['url'],'onSelect':_0x538108=>{if(_0x538108){const _0xdd9eb3=document['getElementById']('repo-url');_0xdd9eb3&&(_0xdd9eb3['value']=_0x538108['clone_url']||_0x538108['url']||''),setEditRepoBranchValue(_0x538108['default_branch']||'main'),reloadEditRepoBranchSuggestions(),markAsModified();}}});if(_0x5f284c){editRepoAutocomplete['enable'](),editRepoAutocomplete['preloadData']();const _0x444a62={'full_name':extractRepoFullName(_0x55bd22['url']),'clone_url':_0x55bd22['url'],'name':_0x55bd22['name']};editRepoAutocomplete['setValue'](_0x444a62);}else editRepoAutocomplete['disable']();}function onEditRepoProviderChange(){const _0x48cfc9=document['getElementById']('edit-repo-provider')['value'],_0x41b2db=document['getElementById']('edit-repo-url-row'),_0x1fc877=document['getElementById']('edit-repo-autocomplete-row'),_0x268800=document['getElementById']('edit-repo-credential-mode-row'),_0x125ff4=document['getElementById']('repo-url');if(_0x48cfc9){_0x41b2db['hidden']=!![],_0x1fc877['hidden']=![];if(_0x268800)_0x268800['hidden']=![];_0x125ff4&&(_0x125ff4['value']=''),editRepoAutocomplete&&(editRepoAutocomplete['reset'](),editRepoAutocomplete['enable'](),editRepoAutocomplete['preloadData']());}else{_0x41b2db['hidden']=![],_0x1fc877['hidden']=!![];if(_0x268800)_0x268800['hidden']=!![];_0x125ff4&&(_0x125ff4['value']=''),editRepoAutocomplete&&(editRepoAutocomplete['reset'](),editRepoAutocomplete['disable']());}reloadEditRepoBranchSuggestions(),markAsModified();}function cleanupEditRepoAutocomplete(){editRepoAutocomplete&&(editRepoAutocomplete['destroy'](),editRepoAutocomplete=null),editRepoBranchAutocomplete&&(editRepoBranchAutocomplete['destroy'](),editRepoBranchAutocomplete=null);}function initEditRepoBranchAutocomplete(_0x45c14e){const _0x14caa7=document['getElementById']('repo-branch-field');if(!_0x14caa7)return;editRepoBranchAutocomplete&&(editRepoBranchAutocomplete['destroy'](),editRepoBranchAutocomplete=null);editRepoBranchAutocomplete=new AutocompleteSelect(_0x14caa7,{'placeholder':'Search\x20for\x20a\x20branch','maxItems':0x64,'emptyMessage':'No\x20branches\x20found','loadingMessage':'Loading\x20branches...','preload':![],'searchMode':'server','loadItems':async _0x416b0b=>{const {providerName:_0x5ea236,repoUrl:_0x20ccf3}=getEditRepoBranchContext();if(!_0x5ea236||!_0x20ccf3)return[];return fetchRepoBranches({'providerName':_0x5ea236,'repoUrl':_0x20ccf3,'query':_0x416b0b});},'renderItem':_0x27b5ad=>({'primary':_0x27b5ad['name'],'secondary':_0x27b5ad['isDefault']?'default':''}),'sortItems':_0xd333c5=>_0xd333c5['sort']((_0x474729,_0x12a713)=>{if(_0x474729['isDefault'])return-0x1;if(_0x12a713['isDefault'])return 0x1;return(_0x474729['name']||'')['localeCompare'](_0x12a713['name']||'');}),'getItemValue':_0x53c03d=>_0x53c03d['name'],'onSelect':_0x4bb724=>{_0x4bb724&&setEditRepoBranchValue(_0x4bb724['name']),markAsModified();}}),setEditRepoBranchValue(_0x45c14e?.['branch']||'main');editRepoBranchAutocomplete['input']&&editRepoBranchAutocomplete['input']['addEventListener']('input',()=>{clearBranchAutocompleteError(editRepoBranchAutocomplete),markAsModified();});const _0x1cb92b=document['getElementById']('edit-repo-provider')?.['value']||'',_0x2d5502=document['getElementById']('repo-url')?.['value']?.['trim']()||'';_0x1cb92b&&_0x2d5502&&editRepoBranchAutocomplete['preloadData']();}function validateEditRepoForm(){const _0x40829c=document['getElementById']('edit-repo-provider')?.['value']||'',_0x1e1bfd=document['getElementById']('repo-url')?.['value']?.['trim']()||'',_0x134814=getEditRepoBranchValue(),_0x236322=[];return _0x40829c?!_0x1e1bfd&&_0x236322['push']('Please\x20select\x20a\x20repository\x20from\x20the\x20provider'):!_0x1e1bfd&&_0x236322['push']('Repository\x20URL\x20is\x20required'),!_0x134814&&_0x236322['push']('Branch\x20is\x20required'),_0x236322;}function addRepo(){const _0xe45243=document['getElementById']('new-repo-url'),_0x3a121f=document['getElementById']('new-repo-name'),_0x3d948b=document['getElementById']('add-repo-error');document['getElementById']('repo-modal-title')['textContent']='Add\x20Repository',_0xe45243['value']='',_0x3a121f['value']='',setNewRepoBranchValue('main'),document['getElementById']('new-repo-allow-branch')['checked']=![],document['getElementById']('new-repo-path')['value']='',document['getElementById']('new-repo-description')['value']='',document['querySelector']('input[name=\x22repo-entry-mode\x22][value=\x22manual\x22]')['checked']=!![],document['getElementById']('repo-provider-selection')['hidden']=!![],document['getElementById']('repo-url-row')['hidden']=![],document['getElementById']('new-repo-source-provider')['value']='';repoAutocomplete&&(repoAutocomplete['reset'](),repoAutocomplete['disable']());const _0x39db70=document['getElementById']('new-repo-credential-mode');_0x39db70&&(_0x39db70['value']='app');_0xe45243['classList']['remove']('input-error'),_0x3a121f['classList']['remove']('input-error'),clearBranchAutocompleteError(newRepoBranchAutocomplete),_0x3d948b['hidden']=!![];const _0x394881=_0x147400=>_0x147400['target']['classList']['remove']('input-error');_0xe45243['addEventListener']('input',_0x394881,{'once':!![]}),_0x3a121f['addEventListener']('input',_0x394881,{'once':!![]}),_0xe45243['addEventListener']('input',()=>{const _0x300a2d=_0xe45243['value']['trim']();if(_0x300a2d&&!_0x3a121f['value']){const _0x2b563a=_0x300a2d['split']('/'),_0x2fed85=_0x2b563a[_0x2b563a['length']-0x1]['replace'](/\.git$/,'');_0x3a121f['placeholder']=_0x2fed85||'Auto-extracted\x20from\x20URL';}}),loadRepoModalProviders(),initNewRepoBranchAutocomplete(),reloadNewRepoBranchSuggestions(),document['getElementById']('add-repo-modal')['hidden']=![];}function closeAddRepoModal(){document['getElementById']('add-repo-modal')['hidden']=!![],newRepoBranchAutocomplete&&(newRepoBranchAutocomplete['destroy'](),newRepoBranchAutocomplete=null),repoAutocomplete&&(repoAutocomplete['reset'](),repoAutocomplete['disable']());}function initNewRepoBranchAutocomplete(){const _0x32e591=document['getElementById']('new-repo-branch-field');if(!_0x32e591)return;newRepoBranchAutocomplete&&(newRepoBranchAutocomplete['destroy'](),newRepoBranchAutocomplete=null),newRepoBranchAutocomplete=new AutocompleteSelect(_0x32e591,{'placeholder':'Search\x20for\x20a\x20branch','maxItems':0x64,'emptyMessage':'No\x20branches\x20found','loadingMessage':'Loading\x20branches...','preload':![],'searchMode':'server','loadItems':async _0x41375c=>{const {providerName:_0x53748a,repoUrl:_0x1b00a4}=getNewRepoBranchContext();if(!_0x53748a||!_0x1b00a4)return[];return fetchRepoBranches({'providerName':_0x53748a,'repoUrl':_0x1b00a4,'query':_0x41375c});},'renderItem':_0x1f7658=>({'primary':_0x1f7658['name'],'secondary':_0x1f7658['isDefault']?'default':''}),'sortItems':_0x53e297=>_0x53e297['sort']((_0x4d067a,_0x430556)=>{if(_0x4d067a['isDefault'])return-0x1;if(_0x430556['isDefault'])return 0x1;return(_0x4d067a['name']||'')['localeCompare'](_0x430556['name']||'');}),'getItemValue':_0x3fff4d=>_0x3fff4d['name'],'onSelect':_0xcbf4a=>{_0xcbf4a&&setNewRepoBranchValue(_0xcbf4a['name']);}}),newRepoBranchAutocomplete['input']&&newRepoBranchAutocomplete['input']['addEventListener']('input',()=>{clearBranchAutocompleteError(newRepoBranchAutocomplete);});}async function confirmAddRepo(){const _0x4f9910=document['getElementById']('new-repo-url'),_0x527c1c=document['getElementById']('new-repo-name'),_0x27a425=document['getElementById']('add-repo-error'),_0x26529f=_0x4f9910['value']['trim'](),_0x2ed354=getNewRepoBranchValue();let _0x46a5e5=_0x527c1c['value']['trim']();_0x4f9910['classList']['remove']('input-error'),_0x527c1c['classList']['remove']('input-error'),clearBranchAutocompleteError(newRepoBranchAutocomplete),_0x27a425['hidden']=!![];const _0x40dc72=document['querySelector']('input[name=\x22repo-entry-mode\x22]:checked')['value'];let _0x1ba910=![],_0x537555='';if(_0x40dc72==='provider'){const _0x87d152=document['getElementById']('new-repo-source-provider')['value'],_0xdcd83c=repoAutocomplete?repoAutocomplete['getSelectedItem']():null;if(!_0x87d152)_0x537555='Please\x20select\x20a\x20Git\x20provider',_0x1ba910=!![];else!_0xdcd83c&&(_0x537555='Please\x20select\x20a\x20repository',_0x1ba910=!![]);}else!_0x26529f&&(_0x4f9910['classList']['add']('input-error'),_0x537555='Repository\x20URL\x20is\x20required',_0x1ba910=!![]);!_0x2ed354&&(setBranchAutocompleteErrorState(newRepoBranchAutocomplete,!![]),_0x537555=_0x537555||'Branch\x20is\x20required',_0x1ba910=!![]);if(!_0x46a5e5&&_0x26529f){const _0x4532b0=_0x26529f['split']('/');_0x46a5e5=_0x4532b0[_0x4532b0['length']-0x1]['replace'](/\.git$/,'');}!_0x46a5e5&&(_0x527c1c['classList']['add']('input-error'),_0x537555=_0x537555||'Repository\x20name\x20is\x20required',_0x1ba910=!![]);if(_0x1ba910){_0x27a425['textContent']=_0x537555,_0x27a425['hidden']=![];return;}const _0x1038f5={'name':_0x46a5e5,'url':_0x26529f,'branch':_0x2ed354,'allow_branch_selection':document['getElementById']('new-repo-allow-branch')['checked'],'path':document['getElementById']('new-repo-path')['value']['trim']()||undefined,'description':document['getElementById']('new-repo-description')['value']['trim']()||undefined};if(_0x40dc72==='provider'){const _0x3ac054=document['getElementById']('new-repo-source-provider')['value'];if(_0x3ac054){const _0x4c9f00=document['getElementById']('new-repo-credential-mode')?.['value']||'app';_0x1038f5['remote_provider']={'provider':_0x3ac054,'credential_mode':_0x4c9f00};}}state['selectedEnvData']['repos']=[...state['selectedEnvData']['repos']||[],_0x1038f5],renderRepos(),markAsModified(),closeAddRepoModal(),Utils['showSuccess']('Repository\x20added\x20(click\x20Save\x20to\x20persist\x20changes)');}async function loadRepoModalProviders(){try{const _0x392128=await API['get']('/environments/'+state['selectedEnv']+'/repos/providers'),_0x3c8a68=_0x392128['providers']||[],_0x4763f0=document['getElementById']('new-repo-source-provider');_0x4763f0['innerHTML']='<option\x20value=\x22\x22>--\x20Select\x20a\x20provider\x20--</option>',_0x3c8a68['forEach'](_0x1761d4=>{_0x4763f0['innerHTML']+='<option\x20value=\x22'+Utils['escapeHtml'](_0x1761d4['name'])+'\x22>'+Utils['escapeHtml'](_0x1761d4['name'])+'\x20('+Utils['escapeHtml'](_0x1761d4['type'])+')</option>';});}catch(_0x5ec26e){console['error']('Failed\x20to\x20load\x20providers\x20for\x20repo\x20modal:',_0x5ec26e);}}function onRepoEntryModeChange(_0x1365cb){const _0xb62dcc=_0x1365cb['target']['value'],_0xb095fe=document['getElementById']('repo-provider-selection'),_0x4021e4=document['getElementById']('repo-url-row'),_0x3d72f6=document['getElementById']('new-repo-url'),_0x335e3e=document['getElementById']('new-repo-name'),_0x24b635=document['getElementById']('new-repo-source-provider');_0xb62dcc==='provider'?(_0xb095fe['hidden']=![],_0x4021e4['hidden']=!![],_0x24b635['value']='',initRepoAutocomplete(),_0x335e3e['placeholder']='Auto-extracted\x20from\x20URL'):(_0xb095fe['hidden']=!![],_0x4021e4['hidden']=![],_0x3d72f6['value']='',repoAutocomplete&&(repoAutocomplete['reset'](),repoAutocomplete['disable']()),_0x335e3e['placeholder']='Auto-extracted\x20from\x20URL'),reloadNewRepoBranchSuggestions();}function initRepoAutocomplete(){const _0x1ba569=document['getElementById']('repo-autocomplete-container');if(!_0x1ba569)return;repoAutocomplete&&repoAutocomplete['destroy'](),repoAutocomplete=new AutocompleteSelect(_0x1ba569,{'placeholder':'Search\x20for\x20a\x20repository','maxItems':0x64,'emptyMessage':'No\x20repositories\x20found','loadingMessage':'Loading\x20repositories...','preload':![],'searchMode':'server','loadItems':async _0x2376bc=>{const _0x14e6d2=document['getElementById']('new-repo-source-provider')['value'];if(!_0x14e6d2)return[];try{let _0x399ddf='/environments/'+state['selectedEnv']+'/repos/available-from-provider?provider='+encodeURIComponent(_0x14e6d2)+'&limit=100';_0x2376bc&&_0x2376bc['trim']()&&(_0x399ddf+='&search='+encodeURIComponent(_0x2376bc['trim']()));const _0x434035=await API['get'](_0x399ddf);return _0x434035['repositories']||[];}catch(_0x813001){console['error']('Failed\x20to\x20load\x20repositories:',_0x813001);throw _0x813001;}},'renderItem':_0x29873e=>{const _0x5d5a7c=_0x29873e['private']===!![];let _0x1da710=_0x29873e['description']||'no\x20description';return _0x29873e['descriptionSource']==='project'&&_0x29873e['description']&&(_0x1da710='Project:\x20'+_0x29873e['description']),{'primary':_0x29873e['full_name']||_0x29873e['name'],'secondary':_0x1da710,'icon':_0x5d5a7c?REPO_ICON_PRIVATE:REPO_ICON_PUBLIC,'iconClass':_0x5d5a7c?'icon-private':'icon-public'};},'sortItems':_0x4df38e=>{return _0x4df38e['sort']((_0x176384,_0x174cb3)=>{const _0xa346bf=(_0x176384['full_name']||_0x176384['name']||'')['toLowerCase'](),_0x193eb8=(_0x174cb3['full_name']||_0x174cb3['name']||'')['toLowerCase']();return _0xa346bf['localeCompare'](_0x193eb8);});},'getItemValue':_0x209943=>_0x209943['clone_url']||_0x209943['url'],'onSelect':_0x57b301=>{const _0x17b028=document['getElementById']('new-repo-url'),_0x53cb83=document['getElementById']('new-repo-name');if(_0x57b301){_0x17b028['value']=_0x57b301['clone_url']||_0x57b301['url']||'';const _0x492647=(_0x57b301['full_name']||_0x57b301['name']||'')['split']('/')['pop']()||'';_0x53cb83['placeholder']=_0x492647||'Auto-extracted\x20from\x20URL',setNewRepoBranchValue(_0x57b301['default_branch']||'main'),reloadNewRepoBranchSuggestions();}else _0x17b028['value']='',_0x53cb83['placeholder']='Auto-extracted\x20from\x20URL',setNewRepoBranchValue('main');}}),repoAutocomplete['disable']();}function onRepoSourceProviderChange(){const _0x10a687=document['getElementById']('new-repo-source-provider')['value'],_0x2722b1=document['getElementById']('new-repo-url'),_0x38eea8=document['getElementById']('new-repo-name');_0x2722b1['value']='',_0x38eea8['placeholder']='Auto-extracted\x20from\x20URL';if(!_0x10a687){repoAutocomplete&&(repoAutocomplete['reset'](),repoAutocomplete['disable']());reloadNewRepoBranchSuggestions();return;}repoAutocomplete&&(repoAutocomplete['reset'](),repoAutocomplete['enable'](),repoAutocomplete['preloadData']()),setNewRepoBranchValue('main'),reloadNewRepoBranchSuggestions();}function onRepoFromProviderSelect(){}window['editRepo']=function(_0x1c1521){selectRepo(_0x1c1521);},window['removeRepo']=function(_0x364a9d){const _0x11d745=state['selectedEnvData']['repos'][_0x364a9d];document['getElementById']('delete-repo-name')['textContent']=_0x11d745['name']||_0x11d745['url'],document['getElementById']('delete-repo-confirm-btn')['dataset']['repoIndex']=_0x364a9d,document['getElementById']('delete-repo-modal')['hidden']=![];};function closeDeleteRepoModal(){document['getElementById']('delete-repo-modal')['hidden']=!![];}function confirmDeleteRepo(){const _0x409ff6=parseInt(document['getElementById']('delete-repo-confirm-btn')['dataset']['repoIndex']);state['selectedEnvData']['repos']=state['selectedEnvData']['repos']['filter']((_0x558125,_0x22b484)=>_0x22b484!==_0x409ff6);if(state['currentRepo']===_0x409ff6)state['currentRepo']=null,cleanupEditRepoAutocomplete();else state['currentRepo']>_0x409ff6&&state['currentRepo']--;renderRepos(),markAsModified(),closeDeleteRepoModal(),Utils['showSuccess']('Repository\x20removed\x20(click\x20Save\x20to\x20persist\x20changes)');}function renderServerConfig(){const _0x2e9e28=state['selectedEnvData']['application_server'],_0x3d03b5=_0x2e9e28?.['enabled']||![],_0x5a13f4=state['selectedEnvData']?.['external_connections']||[],_0x16b2a3=_0x5a13f4['find'](_0x5c47d3=>_0x5c47d3['type']==='ibmi'&&(_0x5c47d3['config']?.['features']||[])['includes']('interactive')&&_0x5c47d3['config']?.['pui_base_url']),_0x318398=document['getElementById']('server-connection-banner'),_0x2fa984=document['getElementById']('server-enabled'),_0x3b80f9=document['getElementById']('server-name'),_0x4b1fd7=document['getElementById']('server-proxy');if(_0x16b2a3){const _0x7d13e=Utils['escapeHtml'](_0x16b2a3['name']||'IBM\x20i\x20Session');_0x318398['innerHTML']='<strong>External\x20Connection:</strong>\x20App\x20server\x20proxy,\x20launch\x20URL,\x20and\x20authentication\x20are\x20configured\x20by\x20connection\x20<strong>'+_0x7d13e+'</strong>.\x20Edit\x20the\x20connection\x20to\x20change\x20these\x20settings.',_0x318398['hidden']=![],_0x2fa984['checked']=!![],_0x2fa984['disabled']=!![],document['getElementById']('server-config')['hidden']=![],_0x3b80f9['value']=_0x16b2a3['name']||'IBM\x20i\x20Session',_0x3b80f9['disabled']=!![],addConnectionHint(_0x3b80f9,_0x7d13e),_0x4b1fd7['value']=_0x16b2a3['config']['pui_base_url'],_0x4b1fd7['disabled']=!![],addConnectionHint(_0x4b1fd7,_0x7d13e);const _0x34297c=document['getElementById']('env-screen-render-url');if(_0x34297c){const _0x19ca6c=_0x16b2a3['config']['pui_render_path']||'/profoundui/genie';_0x34297c['value']=''+_0x16b2a3['config']['pui_base_url']+_0x19ca6c,_0x34297c['disabled']=!![],addConnectionHint(_0x34297c,_0x7d13e);}}else{_0x318398['hidden']=!![],_0x318398['innerHTML']='',_0x2fa984['checked']=_0x3d03b5,_0x2fa984['disabled']=![],document['getElementById']('server-config')['hidden']=!_0x3d03b5,_0x3b80f9['value']=_0x2e9e28?.['name']||'',_0x3b80f9['disabled']=![],removeConnectionHint(_0x3b80f9),_0x4b1fd7['value']=_0x2e9e28?.['proxy']||'',_0x4b1fd7['disabled']=![],removeConnectionHint(_0x4b1fd7);const _0x1c45e4=document['getElementById']('env-screen-render-url');_0x1c45e4&&_0x1c45e4['disabled']&&(_0x1c45e4['disabled']=![],removeConnectionHint(_0x1c45e4));}const _0x3714d7=monacoEditors['get']('server-command-editor');_0x3714d7?_0x3714d7['setValue'](_0x2e9e28?.['start_command']||''):createMonacoEditor('server-command-editor',_0x2e9e28?.['start_command']||'','shell',![])['then'](_0x162b87=>{_0x162b87&&(_0x162b87['updateOptions']({'wordWrap':'off'}),_0x162b87['onDidChangeModelContent'](()=>markAsModified()));});document['getElementById']('server-qa-url')['value']=_0x2e9e28?.['qa_url']||'';const _0x9c67b2=_0x2e9e28?.['basic_auth']||{};document['getElementById']('server-auth-user-property')['value']=_0x9c67b2['user_property']||'',document['getElementById']('server-auth-password-property')['value']=_0x9c67b2['password_property']||'',renderPorts(_0x2e9e28?.['ports']||[]);if(_0x16b2a3){const _0x3dfed3=_0x16b2a3['config']['pui_launch_path']||'/profoundui/auth/genie',_0x5c5c75=_0x16b2a3['name']||'IBM\x20i\x20Session';state['_connectionLaunchUrl']={'name':'Genie\x20('+_0x5c5c75+')','path':_0x3dfed3,'description':'From\x20connection:\x20'+_0x5c5c75};}else state['_connectionLaunchUrl']=null;renderURLs(_0x2e9e28?.['launch_urls']||[]),renderProxyHeaders(_0x2e9e28?.['proxy_headers']||{}),renderPortQaUrls(_0x2e9e28?.['port_qa_urls']||{}),renderVolumeMounts(state['selectedEnvData']?.['volume_mounts']||[]);}function addConnectionHint(_0x2b3a0c,_0x304600){removeConnectionHint(_0x2b3a0c);const _0x4efe66=document['createElement']('small');_0x4efe66['className']='form-hint\x20connection-hint',_0x4efe66['textContent']='From\x20connection\x20\x22'+_0x304600+'\x22',_0x2b3a0c['parentNode']['appendChild'](_0x4efe66);}function removeConnectionHint(_0x5d8f07){const _0x3f03fe=_0x5d8f07['parentNode']?.['querySelector']('.connection-hint');if(_0x3f03fe)_0x3f03fe['remove']();}function toggleRebuildSchedule(){const _0x4d1cd1=document['getElementById']('rebuild-schedule-enabled-build-tab')['checked'];document['getElementById']('rebuild-schedule-config-build-tab')['hidden']=!_0x4d1cd1,markAsModified();}function toggleServerConfig(){const _0x149a19=document['getElementById']('server-enabled')['checked'];document['getElementById']('server-config')['hidden']=!_0x149a19,markAsModified();}function renderPorts(_0x189965){const _0x530aa1=document['getElementById']('ports-list');_0x530aa1['innerHTML']=_0x189965['map']((_0x30ac49,_0x2de6e2)=>'\x0a\x20\x20\x20\x20<div\x20class=\x22config-item\x22>\x0a\x20\x20\x20\x20\x20\x20<input\x20type=\x22number\x22\x20value=\x22'+_0x30ac49['internal']+'\x22\x20placeholder=\x22Port\x22\x20class=\x22form-input\x22\x20oninput=\x22markAsModified()\x22>\x0a\x20\x20\x20\x20\x20\x20<input\x20type=\x22text\x22\x20value=\x22'+Utils['escapeHtml'](_0x30ac49['name'])+'\x22\x20placeholder=\x22Name\x22\x20class=\x22form-input\x22\x20oninput=\x22markAsModified()\x22>\x0a\x20\x20\x20\x20\x20\x20<button\x20class=\x22btn-icon\x22\x20onclick=\x22removePort('+_0x2de6e2+')\x22>×</button>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20')['join']('');}function renderURLs(_0x5c0d7c){const _0xb161=document['getElementById']('urls-list'),_0x5e9e78=_0x5c0d7c['findIndex'](_0x1f590c=>_0x1f590c?.['primary']),_0x525309=document['getElementById']('clear-primary-url-btn');_0x525309&&(_0x525309['disabled']=_0x5e9e78===-0x1||!!state['_connectionLaunchUrl']);let _0x98b162='';const _0xb4a3d1=state['_connectionLaunchUrl'];_0xb4a3d1&&(_0x98b162+='\x0a\x20\x20\x20\x20<div\x20class=\x22config-item\x22\x20data-connection-derived=\x22true\x22>\x0a\x20\x20\x20\x20\x20\x20<input\x20type=\x22text\x22\x20data-field=\x22name\x22\x20value=\x22'+Utils['escapeHtml'](_0xb4a3d1['name'])+'\x22\x20placeholder=\x22Name\x22\x20class=\x22form-input\x22\x20disabled>\x0a\x20\x20\x20\x20\x20\x20<input\x20type=\x22text\x22\x20data-field=\x22path\x22\x20value=\x22'+Utils['escapeHtml'](_0xb4a3d1['path'])+'\x22\x20placeholder=\x22Path\x22\x20class=\x22form-input\x22\x20disabled>\x0a\x20\x20\x20\x20\x20\x20<input\x20type=\x22number\x22\x20data-field=\x22port\x22\x20value=\x22\x22\x20placeholder=\x22Port\x22\x20class=\x22form-input\x22\x20style=\x22max-width:\x2080px;\x22\x20disabled>\x0a\x20\x20\x20\x20\x20\x20<input\x20type=\x22text\x22\x20data-field=\x22description\x22\x20value=\x22'+Utils['escapeHtml'](_0xb4a3d1['description']||'')+'\x22\x20placeholder=\x22Description\x22\x20class=\x22form-input\x22\x20disabled>\x0a\x20\x20\x20\x20\x20\x20<label\x20class=\x22primary-url-toggle\x20is-primary\x22\x20title=\x22Primary\x20URL\x20from\x20external\x20connection\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<input\x20type=\x22radio\x22\x20name=\x22connection-primary-url\x22\x20data-field=\x22primary\x22\x20checked\x20disabled>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<span>Primary</span>\x0a\x20\x20\x20\x20\x20\x20</label>\x0a\x20\x20\x20\x20\x20\x20<button\x20class=\x22btn-icon\x22\x20disabled>↑</button>\x0a\x20\x20\x20\x20\x20\x20<button\x20class=\x22btn-icon\x22\x20disabled>↓</button>\x0a\x20\x20\x20\x20\x20\x20<button\x20class=\x22btn-icon\x22\x20disabled>×</button>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20'),_0x98b162+=_0x5c0d7c['map']((_0x4fe2f2,_0x24ac9a)=>{const _0x5e53fd=_0x5e9e78===-0x1?![]:_0x24ac9a===_0x5e9e78;return'\x0a\x20\x20\x20\x20<div\x20class=\x22config-item\x22>\x0a\x20\x20\x20\x20\x20\x20<input\x20type=\x22text\x22\x20data-field=\x22name\x22\x20value=\x22'+Utils['escapeHtml'](_0x4fe2f2['name'])+'\x22\x20placeholder=\x22Name\x22\x20class=\x22form-input\x22\x20oninput=\x22markAsModified()\x22>\x0a\x20\x20\x20\x20\x20\x20<input\x20type=\x22text\x22\x20data-field=\x22path\x22\x20value=\x22'+Utils['escapeHtml'](_0x4fe2f2['path'])+'\x22\x20placeholder=\x22Path\x22\x20class=\x22form-input\x22\x20oninput=\x22markAsModified()\x22>\x0a\x20\x20\x20\x20\x20\x20<input\x20type=\x22number\x22\x20data-field=\x22port\x22\x20value=\x22'+(_0x4fe2f2['port']??'')+'\x22\x20placeholder=\x22Port\x22\x20class=\x22form-input\x22\x20style=\x22max-width:\x2080px;\x22\x20oninput=\x22markAsModified()\x22>\x0a\x20\x20\x20\x20\x20\x20<input\x20type=\x22text\x22\x20data-field=\x22description\x22\x20value=\x22'+Utils['escapeHtml'](_0x4fe2f2['description']||'')+'\x22\x20placeholder=\x22Description\x22\x20class=\x22form-input\x22\x20oninput=\x22markAsModified()\x22>\x0a\x20\x20\x20\x20\x20\x20<label\x20class=\x22primary-url-toggle\x20'+(_0x5e53fd?'is-primary':'')+'\x22\x20title=\x22'+(_0xb4a3d1?'Primary\x20is\x20set\x20by\x20external\x20connection':'Primary\x20URL\x20opened\x20by\x20the\x20Testing\x20button')+'\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<input\x20type=\x22radio\x22\x20name=\x22primary-launch-url\x22\x20data-field=\x22primary\x22\x20'+(_0x5e53fd?'checked':'')+'\x20'+(_0xb4a3d1?'disabled':'onclick=\x22setPrimaryURL('+_0x24ac9a+')\x22')+'>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<span>Primary</span>\x0a\x20\x20\x20\x20\x20\x20</label>\x0a\x20\x20\x20\x20\x20\x20<button\x20class=\x22btn-icon\x22\x20onclick=\x22moveURL('+_0x24ac9a+',\x20-1)\x22\x20title=\x22Move\x20up\x22\x20aria-label=\x22Move\x20URL\x20up\x22\x20'+(_0x24ac9a===0x0?'disabled':'')+'>↑</button>\x0a\x20\x20\x20\x20\x20\x20<button\x20class=\x22btn-icon\x22\x20onclick=\x22moveURL('+_0x24ac9a+',\x201)\x22\x20title=\x22Move\x20down\x22\x20aria-label=\x22Move\x20URL\x20down\x22\x20'+(_0x24ac9a===_0x5c0d7c['length']-0x1?'disabled':'')+'>↓</button>\x0a\x20\x20\x20\x20\x20\x20<button\x20class=\x22btn-icon\x22\x20onclick=\x22removeURL('+_0x24ac9a+')\x22>×</button>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20';})['join'](''),_0xb161['innerHTML']=_0x98b162;}function collectURLsFromForm(_0x2e6a49=![]){const _0xf3a839=document['getElementById']('urls-list');if(!_0xf3a839)return[];const _0x40b012=_0xf3a839['querySelectorAll']('.config-item'),_0x4c79af=[];let _0x5232dc=![];return _0x40b012['forEach'](_0x3d9508=>{if(_0x3d9508['hasAttribute']('data-connection-derived'))return;const _0x3ff0ce=_0x3d9508['querySelector']('input[data-field=\x22name\x22]'),_0x8665c8=_0x3d9508['querySelector']('input[data-field=\x22path\x22]'),_0x423f66=_0x3d9508['querySelector']('input[data-field=\x22port\x22]'),_0x1c52f1=_0x3d9508['querySelector']('input[data-field=\x22description\x22]'),_0x19cd7e=_0x3d9508['querySelector']('input[data-field=\x22primary\x22]');if(!_0x3ff0ce||!_0x8665c8||!_0x423f66||!_0x1c52f1)return;const _0x308eed=_0x3ff0ce['value']['trim'](),_0x2abf44=_0x8665c8['value']['trim'](),_0xb692d3=_0x423f66['value']['trim'](),_0x3842e8=_0x1c52f1['value']['trim'](),_0x523d45=_0x308eed||_0x2abf44||_0xb692d3||_0x3842e8;if(_0x2e6a49||_0x523d45){const _0x15cc5e={'name':_0x308eed,'path':_0x2abf44};if(_0xb692d3)_0x15cc5e['port']=parseInt(_0xb692d3,0xa);else _0x2e6a49&&(_0x15cc5e['port']='');if(_0x3842e8)_0x15cc5e['description']=_0x3842e8;else _0x2e6a49&&(_0x15cc5e['description']='');const _0x193bf6=_0x19cd7e?.['checked']||![];_0x193bf6&&!_0x5232dc&&_0x523d45&&(_0x15cc5e['primary']=!![],_0x5232dc=!![]),_0x4c79af['push'](_0x15cc5e);}}),_0x4c79af;}function renderProxyHeaders(_0x264b48){const _0x3d86e9=document['getElementById']('proxy-headers-list'),_0x2ef386=Object['entries'](_0x264b48);_0x3d86e9['innerHTML']=_0x2ef386['map'](([_0x418e29,_0x2d14ba],_0x262432)=>'\x0a\x20\x20\x20\x20<div\x20class=\x22config-item\x22>\x0a\x20\x20\x20\x20\x20\x20<input\x20type=\x22text\x22\x20value=\x22'+Utils['escapeHtml'](_0x418e29)+'\x22\x20placeholder=\x22Header\x20Name\x22\x20class=\x22form-input\x22\x20oninput=\x22markAsModified()\x22>\x0a\x20\x20\x20\x20\x20\x20<input\x20type=\x22text\x22\x20value=\x22'+Utils['escapeHtml'](_0x2d14ba)+'\x22\x20placeholder=\x22Header\x20Value\x22\x20class=\x22form-input\x20code-font\x22\x20oninput=\x22markAsModified()\x22>\x0a\x20\x20\x20\x20\x20\x20<button\x20class=\x22btn-icon\x22\x20onclick=\x22removeProxyHeader('+_0x262432+')\x22>×</button>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20')['join']('');}function renderPortQaUrls(_0xc924dd){const _0x447252=document['getElementById']('port-qa-urls-list'),_0xfb9c2c=Object['entries'](_0xc924dd);_0x447252['innerHTML']=_0xfb9c2c['map'](([_0x41364b,_0x58065f],_0x3ca98)=>'\x0a\x20\x20\x20\x20<div\x20class=\x22config-item\x22>\x0a\x20\x20\x20\x20\x20\x20<input\x20type=\x22number\x22\x20value=\x22'+Utils['escapeHtml'](_0x41364b)+'\x22\x20placeholder=\x22Port\x22\x20class=\x22form-input\x22\x20style=\x22max-width:\x20100px;\x22\x20oninput=\x22markAsModified()\x22>\x0a\x20\x20\x20\x20\x20\x20<input\x20type=\x22text\x22\x20value=\x22'+Utils['escapeHtml'](_0x58065f)+'\x22\x20placeholder=\x22QA\x20URL\x20(e.g.,\x20https://production.example.com)\x22\x20class=\x22form-input\x20code-font\x22\x20oninput=\x22markAsModified()\x22>\x0a\x20\x20\x20\x20\x20\x20<button\x20class=\x22btn-icon\x22\x20onclick=\x22removePortQaUrl('+_0x3ca98+')\x22>×</button>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20')['join']('');}function addPortQaUrl(){const _0x4714ff=document['getElementById']('port-qa-urls-list'),_0x46da6a=_0x4714ff['querySelectorAll']('.config-item');if(_0x46da6a['length']>0x0){const _0x18b68c=_0x46da6a[_0x46da6a['length']-0x1],_0xffce07=_0x18b68c['querySelectorAll']('input'),_0x4e74e9=_0xffce07[0x0]['value']['trim'](),_0x4802bf=_0xffce07[0x1]['value']['trim']();if(!_0x4e74e9&&!_0x4802bf)return;}const _0x4ce5ba=state['selectedEnvData']['application_server']||{},_0x530c88=_0x4ce5ba['port_qa_urls']||{};_0x530c88['']='',!state['selectedEnvData']['application_server']&&(state['selectedEnvData']['application_server']={}),state['selectedEnvData']['application_server']['port_qa_urls']=_0x530c88,renderPortQaUrls(_0x530c88),markAsModified();}function removePortQaUrl(_0x2717c2){const _0x1e8112=document['getElementById']('port-qa-urls-list'),_0x57b87c=_0x1e8112['querySelectorAll']('.config-item');_0x2717c2>=0x0&&_0x2717c2<_0x57b87c['length']&&(_0x57b87c[_0x2717c2]['remove'](),markAsModified());}function collectPortQaUrlsFromForm(){const _0x16be95=document['getElementById']('port-qa-urls-list');if(!_0x16be95)return{};const _0x4a2fa4=_0x16be95['querySelectorAll']('.config-item'),_0x597444={};return _0x4a2fa4['forEach'](_0x50acaf=>{const _0x43bd60=_0x50acaf['querySelectorAll']('input');if(_0x43bd60['length']>=0x2){const _0x57c95d=_0x43bd60[0x0]['value']['trim'](),_0x5283f2=_0x43bd60[0x1]['value']['trim']();_0x57c95d&&_0x5283f2&&(_0x597444[_0x57c95d]=_0x5283f2);}}),_0x597444;}function addPort(){const _0x58c9ec=document['getElementById']('ports-list'),_0x20c30d=_0x58c9ec['querySelectorAll']('.config-item');if(_0x20c30d['length']>0x0){const _0x54b37d=_0x20c30d[_0x20c30d['length']-0x1],_0x26bb0d=_0x54b37d['querySelectorAll']('input'),_0x135ab3=_0x26bb0d[0x0]['value']['trim'](),_0x26f1e8=_0x26bb0d[0x1]['value']['trim']();if(!_0x135ab3&&!_0x26f1e8)return;}const _0x4de7ba=state['selectedEnvData']['application_server']||{},_0x16446a=_0x4de7ba['ports']||[];_0x16446a['push']({'internal':'','name':''}),!state['selectedEnvData']['application_server']&&(state['selectedEnvData']['application_server']={}),state['selectedEnvData']['application_server']['ports']=_0x16446a,renderPorts(_0x16446a),markAsModified();}function addURL(){const _0x8381d9=document['getElementById']('urls-list'),_0x53d07b=_0x8381d9['querySelectorAll']('.config-item');if(_0x53d07b['length']>0x0){const _0x463a66=_0x53d07b[_0x53d07b['length']-0x1],_0x4133de=_0x463a66['querySelector']('input[data-field=\x22name\x22]')?.['value']['trim']()||'',_0x4747f7=_0x463a66['querySelector']('input[data-field=\x22path\x22]')?.['value']['trim']()||'',_0x30dadf=_0x463a66['querySelector']('input[data-field=\x22port\x22]')?.['value']['trim']()||'',_0x280d05=_0x463a66['querySelector']('input[data-field=\x22description\x22]')?.['value']['trim']()||'';if(!_0x4133de&&!_0x4747f7&&!_0x30dadf&&!_0x280d05)return;}const _0x53fcbe=state['selectedEnvData']['application_server']||{},_0x1577b7=_0x53fcbe['launch_urls']||[];_0x1577b7['push']({'name':'','path':''}),!state['selectedEnvData']['application_server']&&(state['selectedEnvData']['application_server']={}),state['selectedEnvData']['application_server']['launch_urls']=_0x1577b7,renderURLs(_0x1577b7),markAsModified();}window['removePort']=function(_0x4f5e49){const _0x44e756=state['selectedEnvData']['application_server']||{},_0x5f2f3d=_0x44e756['ports']||[];_0x5f2f3d['splice'](_0x4f5e49,0x1),state['selectedEnvData']['application_server']['ports']=_0x5f2f3d,renderPorts(_0x5f2f3d),markAsModified();},window['removeURL']=function(_0x295586){const _0x27d5c6=state['selectedEnvData']['application_server']||{},_0x398b4c=_0x27d5c6['launch_urls']||[];_0x398b4c['splice'](_0x295586,0x1),state['selectedEnvData']['application_server']['launch_urls']=_0x398b4c,renderURLs(_0x398b4c),markAsModified();},window['moveURL']=function(_0x4d18dc,_0x3102f6){const _0x57f31a=collectURLsFromForm(!![]),_0x277629=_0x4d18dc+_0x3102f6;if(_0x277629<0x0||_0x277629>=_0x57f31a['length'])return;const [_0x59d5d9]=_0x57f31a['splice'](_0x4d18dc,0x1);_0x57f31a['splice'](_0x277629,0x0,_0x59d5d9),!state['selectedEnvData']['application_server']&&(state['selectedEnvData']['application_server']={}),state['selectedEnvData']['application_server']['launch_urls']=_0x57f31a,renderURLs(_0x57f31a),markAsModified();},window['setPrimaryURL']=function(_0x1c3cea){const _0xd8809c=collectURLsFromForm(!![]);_0xd8809c['forEach']((_0x573c46,_0x31f5d1)=>{_0x31f5d1===_0x1c3cea&&(_0x573c46['name']||_0x573c46['path']||_0x573c46['port']||_0x573c46['description'])?_0x573c46['primary']=!![]:delete _0x573c46['primary'];}),!state['selectedEnvData']['application_server']&&(state['selectedEnvData']['application_server']={}),state['selectedEnvData']['application_server']['launch_urls']=_0xd8809c,renderURLs(_0xd8809c),markAsModified();};function clearPrimaryURL(){const _0x5d63e8=collectURLsFromForm(!![]);_0x5d63e8['forEach'](_0x1215ae=>{delete _0x1215ae['primary'];}),!state['selectedEnvData']['application_server']&&(state['selectedEnvData']['application_server']={}),state['selectedEnvData']['application_server']['launch_urls']=_0x5d63e8,renderURLs(_0x5d63e8),markAsModified();}function addProxyHeader(){const _0x376182=document['getElementById']('proxy-headers-list'),_0x1cf413=_0x376182['querySelectorAll']('.config-item');if(_0x1cf413['length']>0x0){const _0x5075e4=_0x1cf413[_0x1cf413['length']-0x1],_0x2aa267=_0x5075e4['querySelectorAll']('input'),_0x1c4dcd=_0x2aa267[0x0]['value']['trim'](),_0x27cbf6=_0x2aa267[0x1]['value']['trim']();if(!_0x1c4dcd&&!_0x27cbf6)return;}const _0x22dca1=state['selectedEnvData']['application_server']||{},_0x31a0bd=_0x22dca1['proxy_headers']||{};_0x31a0bd['']='',!state['selectedEnvData']['application_server']&&(state['selectedEnvData']['application_server']={}),state['selectedEnvData']['application_server']['proxy_headers']=_0x31a0bd,renderProxyHeaders(_0x31a0bd),markAsModified();}window['removeProxyHeader']=function(_0x15cdb1){const _0x1f2460=state['selectedEnvData']['application_server']||{},_0x5438e0=_0x1f2460['proxy_headers']||{},_0x41a540=Object['keys'](_0x5438e0);_0x15cdb1<_0x41a540['length']&&delete _0x5438e0[_0x41a540[_0x15cdb1]],state['selectedEnvData']['application_server']['proxy_headers']=_0x5438e0,renderProxyHeaders(_0x5438e0),markAsModified();},window['removePortQaUrl']=function(_0x3bee17){const _0x41edff=state['selectedEnvData']['application_server']||{},_0x8d85db=_0x41edff['port_qa_urls']||{},_0x488c32=Object['keys'](_0x8d85db);_0x3bee17<_0x488c32['length']&&delete _0x8d85db[_0x488c32[_0x3bee17]],state['selectedEnvData']['application_server']['port_qa_urls']=_0x8d85db,renderPortQaUrls(_0x8d85db),markAsModified();};function renderReadme(){const _0x455bb1=state['selectedEnvData']['readmeContent']||'',_0x11db49=document['getElementById']('readme-preview'),_0x501f18=document['getElementById']('readme-editor'),_0x158f23=document['getElementById']('preview-readme-btn');_0x455bb1?_0x11db49['innerHTML']=marked['parse'](_0x455bb1):_0x11db49['innerHTML']='<p\x20class=\x22text-muted\x22>No\x20README\x20content\x20yet.\x20Click\x20Edit\x20to\x20add\x20documentation\x20for\x20this\x20environment.</p>',_0x11db49['hidden']=![],_0x501f18['hidden']=!![],_0x158f23['innerHTML']='<span>✏️</span>\x20Edit',!state['readmeContent']&&(state['readmeContent']=_0x455bb1);}window['toggleReadmePreview']=async function(){const _0x4f0be6=document['getElementById']('readme-editor'),_0xb2d1c6=document['getElementById']('readme-preview'),_0x3c1d54=document['getElementById']('preview-readme-btn'),_0x103ea7='readme-editor';if(_0xb2d1c6['hidden']){const _0xf74186=getMonacoValue(_0x103ea7)||'';_0xf74186?_0xb2d1c6['innerHTML']=marked['parse'](_0xf74186):_0xb2d1c6['innerHTML']='<p\x20class=\x22text-muted\x22>No\x20README\x20content\x20yet.</p>',_0xb2d1c6['hidden']=![],_0x4f0be6['hidden']=!![],_0x3c1d54['innerHTML']='<span>✏️</span>\x20Edit';}else{_0xb2d1c6['hidden']=!![],_0x4f0be6['hidden']=![],_0x3c1d54['innerHTML']='<span>👁</span>\x20Preview';const _0x318e93=window['MarkdownFileEditor']&&window['MarkdownFileEditor']['editors']['has'](_0x103ea7),_0x1f42e2=monacoEditors['has'](_0x103ea7);if(!_0x318e93&&!_0x1f42e2){const _0x2439a3=state['selectedEnvData']['readmeContent']||'';if(window['MarkdownFileEditor']){const _0x2bf173=window['MarkdownFileEditor']['getOrCreate'](_0x103ea7,_0x2439a3,![],'400px',()=>markAsModified());}else{const _0x2dbc04=await createMonacoEditor(_0x103ea7,_0x2439a3,'markdown',![]);_0x2dbc04&&_0x2dbc04['onDidChangeModelContent'](()=>{markAsModified();});}}}};async function renderAgentInstructions(){const _0x10b8b7=state['selectedEnvData']['agentsContent']||'',_0x2b35b9=document['getElementById']('agents-preview'),_0x13cf0e=document['getElementById']('agents-editor'),_0x89a6f0=document['getElementById']('preview-agents-btn');_0x2b35b9['innerHTML']=marked['parse'](_0x10b8b7),_0x2b35b9['hidden']=![],_0x13cf0e['hidden']=!![],_0x89a6f0['innerHTML']='<span>✏️</span>\x20Edit',state['agentsContent']=_0x10b8b7;}function updateAgentStats(){const _0x505bd0=getMonacoValue('agents-editor')||'',_0xcf84ed=_0x505bd0['split']('\x0a')['length'],_0x2ff7d7=_0x505bd0['trim']()['split'](/\s+/)['length'],_0x125a32=_0x505bd0['length'];document['getElementById']('agents-stats')['textContent']='Lines:\x20'+_0xcf84ed+'\x20•\x20Words:\x20'+_0x2ff7d7+'\x20•\x20Characters:\x20'+_0x125a32;}async function toggleAgentsPreview(){const _0x79b5e0=document['getElementById']('agents-editor'),_0xbfd145=document['getElementById']('agents-preview'),_0x213b3d=document['getElementById']('preview-agents-btn'),_0x498f2c='agents-editor';if(_0xbfd145['hidden']){const _0x412a75=getMonacoValue(_0x498f2c)||'';_0xbfd145['innerHTML']=marked['parse'](_0x412a75),_0xbfd145['hidden']=![],_0x79b5e0['hidden']=!![],_0x213b3d['innerHTML']='<span>✏️</span>\x20Edit';}else{_0xbfd145['hidden']=!![],_0x79b5e0['hidden']=![],_0x213b3d['innerHTML']='<span>👁</span>\x20Preview';const _0x3c8bb5=window['MarkdownFileEditor']&&window['MarkdownFileEditor']['editors']['has'](_0x498f2c),_0x2af3ef=monacoEditors['has'](_0x498f2c);if(!_0x3c8bb5&&!_0x2af3ef){const _0x42ba3c=state['agentsContent']||'';if(window['MarkdownFileEditor']){const _0x4359c1=window['MarkdownFileEditor']['getOrCreate'](_0x498f2c,_0x42ba3c,![],'500px',()=>{updateAgentStats(),markAsModified();});}else{const _0x1f515f=await createMonacoEditor(_0x498f2c,_0x42ba3c,'markdown',![]);_0x1f515f&&_0x1f515f['onDidChangeModelContent'](()=>{updateAgentStats(),markAsModified();});}updateAgentStats();}}}let currentScript='pre-clone';function renderBuildTab(){}function toggleScriptsSection(){const _0x1c626a=document['querySelector']('#scripts-section-header')['closest']('.collapsible-card'),_0x4dec24=document['getElementById']('scripts-section-body');_0x4dec24['hidden']?(_0x4dec24['hidden']=![],_0x1c626a['classList']['add']('expanded'),!monacoEditors['has']('script-editor')&&switchScript(currentScript)):(_0x4dec24['hidden']=!![],_0x1c626a['classList']['remove']('expanded'));}async function switchScript(_0x3feb3e){currentScript=_0x3feb3e,document['querySelectorAll']('#scripts-section-body\x20.script-tab')['forEach'](_0x23d44c=>{_0x23d44c['classList']['toggle']('active',_0x23d44c['dataset']['script']===_0x3feb3e);});const _0x35db1c=['pre-clone','post-clone','setup','cleanup'];_0x35db1c['forEach'](_0x2aeae3=>{const _0x1134d5=document['querySelector']('.script-desc-'+_0x2aeae3);_0x1134d5&&(_0x1134d5['hidden']=_0x3feb3e!==_0x2aeae3&&_0x3feb3e!==_0x2aeae3+'.sh');});let _0x30f40a='';if(_0x3feb3e==='pre-clone'||_0x3feb3e==='post-clone'){const _0xc08f=_0x3feb3e==='pre-clone'?'pre_clone_instructions':'post_clone_instructions';_0x30f40a=state['selectedEnvData']['docker_config']?.[_0xc08f]||'';}else _0x30f40a=state['selectedEnvData']['files']?.[_0x3feb3e]||'';const _0x158da2=await createMonacoEditor('script-editor',_0x30f40a,'shell',![]);_0x158da2&&(_0x158da2['updateOptions']({'wordWrap':'off'}),_0x158da2['onDidChangeModelContent'](()=>{markAsModified();}));}function getCurrentScriptContent(){if(!monacoEditors['has']('script-editor'))return null;return getMonacoValue('script-editor');}function saveCurrentScriptToState(){const _0x40748a=getCurrentScriptContent();if(_0x40748a===null)return;if(currentScript==='pre-clone'||currentScript==='post-clone'){!state['selectedEnvData']['docker_config']&&(state['selectedEnvData']['docker_config']={});const _0x5906ab=currentScript==='pre-clone'?'pre_clone_instructions':'post_clone_instructions';state['selectedEnvData']['docker_config'][_0x5906ab]=_0x40748a;}else!state['selectedEnvData']['files']&&(state['selectedEnvData']['files']={}),state['selectedEnvData']['files'][currentScript]=_0x40748a;}function getCodermakeBuildCommands(_0x486942,_0x4815e0){const _0x288751=_0x486942['external_connections']||[],_0x40cfd4=_0x486942['repos']||[],_0x11f460=[];for(const _0x5df5dd of _0x288751){if(_0x5df5dd['type']!=='ibmi')continue;const _0x518243=_0x5df5dd['config']?.['features']||[];if(!_0x518243['includes']('build'))continue;if(!_0x5df5dd['config']?.['build_repo'])continue;if(!_0x4815e0['find'](_0x1b2850=>_0x1b2850['name']===_0x5df5dd['config']['build_repo']))continue;const _0x15a19d=_0x40cfd4['find'](_0x45c65b=>_0x45c65b['name']===_0x5df5dd['config']['build_repo']),_0x393d04=_0x15a19d?'/workspace/'+(_0x15a19d['path']||_0x15a19d['name']):'/workspace',_0x1b2bd2=_0x5df5dd['config']['build_path']?_0x393d04+'/'+_0x5df5dd['config']['build_path']:_0x393d04;_0x11f460['push']('cd\x20'+_0x1b2bd2+'\x20&&\x20IBMI_BUILD_LIBRARY=container_setup_build\x20IBMI_HOST=dummy\x20IBMI_USER=dummy\x20codermake\x20-t');}return _0x11f460;}function generateDockerfilePreview(){saveCurrentScriptToState();const _0x1ad159=state['selectedEnvData'],_0x2ac1e1='profoundlogic/coder-base:latest',_0x13a9cd=_0x1ad159['repos']||[],_0x175eb4=_0x1ad159['docker_config']?.['pre_clone_instructions']||'',_0x493531=_0x1ad159['docker_config']?.['post_clone_instructions']||'';let _0x3d0817='FROM\x20'+_0x2ac1e1+'\x0a\x0a';_0x175eb4['trim']()&&(_0x3d0817+='#\x20Pre-clone\x20instructions\x0a',_0x3d0817+=_0x175eb4['trim']()+'\x0a\x0a');const _0x189508=_0x13a9cd['filter'](_0x4271d8=>_0x4271d8['clone_auto']!==![]);if(_0x189508['length']>0x0){const _0x499259=_0x189508['map'](_0x3445d4=>{const _0x32d355=_0x3445d4['path']||_0x3445d4['name']||_0x3445d4['url']?.['split']('/')['pop']()?.['replace']('.git','')||'repo',_0x3bd685=normalizeGitUrl(_0x3445d4['url']);return'git\x20clone\x20--depth=50\x20--no-single-branch\x20'+_0x3bd685+'\x20/workspace/'+_0x32d355;}),_0xc79539=_0x189508['filter'](_0x1c9476=>_0x1c9476['post_clone_action']&&_0x1c9476['post_clone_action']!=='none')['map'](_0x128ee9=>{const _0x4024e6=_0x128ee9['path']||_0x128ee9['name']||_0x128ee9['url']?.['split']('/')['pop']()?.['replace']('.git','')||'repo',_0x416b52=_0x128ee9['post_clone_action']['split']('\x0a')['map'](_0x22f99e=>_0x22f99e['replace'](/\r$/,''))['filter'](_0x1ac2ca=>_0x1ac2ca['trim']())['join']('\x20&&\x20\x5c\x0a\x20\x20\x20\x20');return'cd\x20/workspace/'+_0x4024e6+'\x20&&\x20'+_0x416b52;}),_0x1dd65f=_0x189508['some'](_0x3e9c43=>_0x3e9c43['remote_provider']);_0x3d0817+='#\x20Clone\x20repositories\x20and\x20install\x20dependencies\x0a';_0x1dd65f?_0x3d0817+='RUN\x20--mount=type=secret,id=git-credentials,target=/root/.git-credentials\x20\x5c\x0a\x20\x20\x20\x20':_0x3d0817+='RUN\x20';_0x3d0817+=_0x499259['join']('\x20&&\x20\x5c\x0a\x20\x20\x20\x20');_0xc79539['length']>0x0&&(_0x3d0817+='\x20&&\x20\x5c\x0a\x20\x20\x20\x20'+_0xc79539['join']('\x20&&\x20\x5c\x0a\x20\x20\x20\x20'));const _0x54d8a4=getCodermakeBuildCommands(_0x1ad159,_0x189508);_0x54d8a4['length']>0x0&&(_0x3d0817+='\x20&&\x20\x5c\x0a\x20\x20\x20\x20'+_0x54d8a4['join']('\x20&&\x20\x5c\x0a\x20\x20\x20\x20')),_0x3d0817+='\x20&&\x20\x5c\x0a\x20\x20\x20\x20chown\x20-R\x20coder:coder\x20/workspace\x0a\x0a';}return _0x493531['trim']()&&(_0x3d0817+='#\x20Post-clone\x20instructions\x0a',_0x3d0817+=_0x493531['trim']()+'\x0a\x0a'),_0x3d0817+='WORKDIR\x20/workspace\x0a',_0x3d0817;}function showDockerfilePreview(){const _0x2475db=generateDockerfilePreview(),_0x34fd0b=document['getElementById']('dockerfile-preview-text');_0x34fd0b['textContent']=_0x2475db,document['getElementById']('dockerfile-preview-modal')['hidden']=![];}function closeDockerfilePreviewModal(){document['getElementById']('dockerfile-preview-modal')['hidden']=!![];}async function copyDockerfileToClipboard(){const _0x2daef7=generateDockerfilePreview();try{await navigator['clipboard']['writeText'](_0x2daef7);const _0x30c56e=document['getElementById']('dockerfile-copy-btn'),_0x1000f4=_0x30c56e['innerHTML'];_0x30c56e['innerHTML']='<svg\x20width=\x2214\x22\x20height=\x2214\x22\x20viewBox=\x220\x200\x2024\x2024\x22\x20fill=\x22none\x22\x20stroke=\x22currentColor\x22\x20stroke-width=\x222\x22><polyline\x20points=\x2220\x206\x209\x2017\x204\x2012\x22></polyline></svg>\x20Copied!',setTimeout(()=>{_0x30c56e['innerHTML']=_0x1000f4;},0x7d0);}catch(_0x1774c7){console['error']('Failed\x20to\x20copy:',_0x1774c7);}}function renderTests(){const _0x5523fb=document['querySelector']('.tests-sidebar'),_0x1052f2=state['selectedEnvData']['tests']||{},_0xa66a80=Object['keys'](_0x1052f2);updateTabBadge('badge-tests',_0xa66a80['length']);const _0xc199cf=_0x5523fb['querySelector']('#new-test-tab'),_0x4d68f2=_0xa66a80['map']((_0x3ebd98,_0x327739)=>'\x0a\x20\x20\x20\x20<button\x20class=\x22test-tab\x22\x20data-test=\x22'+_0x327739+'\x22\x20onclick=\x22selectTest(\x27'+_0x3ebd98+'\x27)\x22>\x0a\x20\x20\x20\x20\x20\x20<span\x20class=\x22test-icon\x22>▶</span>\x0a\x20\x20\x20\x20\x20\x20<span>'+Utils['escapeHtml'](_0x3ebd98)+'</span>\x0a\x20\x20\x20\x20</button>\x0a\x20\x20')['join']('');_0x5523fb['innerHTML']=_0xc199cf['outerHTML']+_0x4d68f2,_0x5523fb['querySelector']('#new-test-tab')['addEventListener']('click',addTest);if(_0xa66a80['length']>0x0&&state['currentTest']===null)selectTest(_0xa66a80[0x0]);else _0xa66a80['length']===0x0&&showTestEmptyState();}function showTestEmptyState(){document['getElementById']('current-test-name')['textContent']='Select\x20a\x20Test',document['getElementById']('delete-test-btn')['hidden']=!![],document['getElementById']('test-details-container')['innerHTML']='<p\x20class=\x22text-muted\x22>Select\x20a\x20test\x20from\x20the\x20sidebar\x20to\x20view\x20details,\x20or\x20add\x20a\x20new\x20one.</p>';}window['selectTest']=function(_0x308773){state['currentTest']=_0x308773;const _0x4d6ddb=state['selectedEnvData']['tests'][_0x308773];document['querySelectorAll']('.test-tab')['forEach'](_0x11a5b1=>{const _0x4d95da=_0x11a5b1['querySelector']('span:last-child')['textContent'];_0x11a5b1['classList']['toggle']('active',_0x4d95da===_0x308773);}),document['getElementById']('current-test-name')['textContent']=_0x308773,document['getElementById']('delete-test-btn')['hidden']=![];const _0x4706d8=document['getElementById']('test-details-container');let _0x12f513='',_0x34655c=![];if(_0x4d6ddb['commands']&&Array['isArray'](_0x4d6ddb['commands']))_0x12f513=_0x4d6ddb['commands']['join']('\x0a'),_0x34655c=!![];else _0x4d6ddb['command']&&(Array['isArray'](_0x4d6ddb['command'])?_0x12f513=_0x4d6ddb['command']['join']('\x20&&\x20'):_0x12f513=_0x4d6ddb['command']);const _0x373e4a=_0x4d6ddb['parameters']?Object['keys'](_0x4d6ddb['parameters'])['length']:0x0;_0x4706d8['innerHTML']='\x0a\x20\x20\x20\x20<div\x20class=\x22form-single-column\x22>\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22form-row\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<label>Description</label>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<input\x20type=\x22text\x22\x20id=\x22test-description\x22\x20class=\x22form-input\x22\x20value=\x22'+Utils['escapeHtml'](_0x4d6ddb['description']||'')+'\x22\x20placeholder=\x22Test\x20description\x22>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22form-row\x22\x20style=\x22align-items:\x20start;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<label>Command'+(_0x34655c?'s':'')+'</label>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<textarea\x20id=\x22test-command\x22\x20class=\x22form-input\x20code-font\x22\x20rows=\x22'+(_0x34655c?'8':'3')+'\x22\x20placeholder=\x22'+(_0x34655c?'One\x20command\x20per\x20line':'Test\x20command')+'\x22>'+Utils['escapeHtml'](_0x12f513)+'</textarea>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20'+(_0x34655c?'<p\x20class=\x22text-muted\x22\x20style=\x22margin-top:\x20-8px;\x20font-size:\x2012px;\x22>One\x20command\x20per\x20line</p>':'')+'\x0a\x20\x20\x20\x20</div>\x0a\x0a\x20\x20\x20\x20<!--\x20Parameters\x20Section\x20(visual\x20maintenance\x20like\x20Deploy\x20tab)\x20-->\x0a\x20\x20\x20\x20<div\x20class=\x22deploy-section\x22\x20style=\x22margin-top:\x2024px;\x22>\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22deploy-section-header\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<button\x20class=\x22deploy-section-toggle\x22\x20type=\x22button\x22\x20aria-expanded=\x22false\x22\x20aria-controls=\x22test-parameters-section\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22deploy-section-title\x22>Parameters</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22deploy-section-count\x22\x20id=\x22test-parameters-count\x22>'+_0x373e4a+'</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<button\x20class=\x22btn-secondary\x20btn-small\x22\x20onclick=\x22openAddTestParameterModal()\x22>+\x20Add</button>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22deploy-section-body\x22\x20id=\x22test-parameters-section\x22\x20hidden>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20id=\x22test-parameters-list\x22\x20class=\x22profile-list\x22></div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<p\x20class=\x22text-muted\x20small\x22>User-provided\x20values\x20prompted\x20when\x20running\x20this\x20test\x20command.</p>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20',['test-description','test-command']['forEach'](_0x560627=>{const _0x3291db=document['getElementById'](_0x560627);_0x3291db&&_0x3291db['addEventListener']('input',markAsModified);}),initTestParameterSectionToggle(),renderTestParameters();};function initTestParameterSectionToggle(){const _0x5867d8=document['querySelector']('#test-details-container\x20.deploy-section-toggle');if(!_0x5867d8)return;_0x5867d8['addEventListener']('click',function(){const _0xedabe3=this['getAttribute']('aria-expanded')==='true',_0x5d4a83=this['getAttribute']('aria-controls'),_0x32401d=document['getElementById'](_0x5d4a83);this['setAttribute']('aria-expanded',!_0xedabe3),_0x32401d&&(_0x32401d['hidden']=_0xedabe3);});}function addTest(){const _0x3d94db=document['getElementById']('new-test-name'),_0x101cf5=document['getElementById']('new-test-command'),_0x59f628=document['getElementById']('add-test-error');_0x3d94db['value']='',document['getElementById']('new-test-description')['value']='',_0x101cf5['value']='',_0x3d94db['classList']['remove']('input-error'),_0x101cf5['classList']['remove']('input-error'),_0x59f628['hidden']=!![],document['getElementById']('add-test-modal')['hidden']=![];}function closeAddTestModal(){document['getElementById']('add-test-modal')['hidden']=!![];}async function confirmAddTest(){const _0x4b7e64=document['getElementById']('new-test-name'),_0x660d57=document['getElementById']('new-test-command'),_0x2a384a=document['getElementById']('add-test-error'),_0xd237c5=_0x4b7e64['value']['trim'](),_0x2be6fa=document['getElementById']('new-test-description')['value']['trim'](),_0x531f62=_0x660d57['value']['trim']();_0x4b7e64['classList']['remove']('input-error'),_0x660d57['classList']['remove']('input-error'),_0x2a384a['hidden']=!![];if(!_0xd237c5||!_0x531f62){if(!_0xd237c5)_0x4b7e64['classList']['add']('input-error');if(!_0x531f62)_0x660d57['classList']['add']('input-error');_0x2a384a['textContent']='Test\x20name\x20and\x20command\x20are\x20required',_0x2a384a['hidden']=![];return;}if(state['selectedEnvData']['tests'][_0xd237c5]){_0x4b7e64['classList']['add']('input-error'),_0x2a384a['textContent']='A\x20test\x20with\x20this\x20name\x20already\x20exists',_0x2a384a['hidden']=![];return;}const _0x82f0fc=_0x531f62['split']('\x0a')['filter'](_0xc35305=>_0xc35305['trim']());let _0x10c852;_0x82f0fc['length']>0x1?_0x10c852={'commands':_0x82f0fc}:_0x10c852={'command':_0x82f0fc[0x0]};const _0x20b03b={'description':_0x2be6fa,..._0x10c852};state['selectedEnvData']['tests']={...state['selectedEnvData']['tests'],[_0xd237c5]:_0x20b03b},renderTests(),markAsModified(),closeAddTestModal(),Utils['showSuccess']('Test\x20command\x20added\x20(click\x20Save\x20to\x20persist\x20changes)');}window['editTest']=function(_0x52045c){selectTest(_0x52045c);},window['removeTest']=function(_0x3c0d01){document['getElementById']('delete-test-name')['textContent']=_0x3c0d01,document['getElementById']('delete-test-confirm-btn')['dataset']['testKey']=_0x3c0d01,document['getElementById']('delete-test-modal')['hidden']=![];};function closeDeleteTestModal(){document['getElementById']('delete-test-modal')['hidden']=!![];}function confirmDeleteTest(){const _0x10e60d=document['getElementById']('delete-test-confirm-btn')['dataset']['testKey'],_0xd9dcf8={...state['selectedEnvData']['tests']};delete _0xd9dcf8[_0x10e60d],state['selectedEnvData']['tests']=_0xd9dcf8,state['currentTest']===_0x10e60d&&(state['currentTest']=null),renderTests(),markAsModified(),closeDeleteTestModal(),Utils['showSuccess']('Test\x20command\x20removed\x20(click\x20Save\x20to\x20persist\x20changes)');}function renderTemplates(){const _0x3072bb=document['querySelector']('.templates-sidebar'),_0x10c445=state['selectedEnvData']['templates']||[];updateTabBadge('badge-templates',_0x10c445['length']);const _0x276999=_0x3072bb['querySelector']('#new-template-tab'),_0xabf416=_0x10c445['map']((_0x521ee8,_0x5dd400)=>'\x0a\x20\x20\x20\x20<button\x20class=\x22template-tab\x22\x20data-template=\x22'+_0x5dd400+'\x22\x20onclick=\x22selectTemplate('+_0x5dd400+')\x22>\x0a\x20\x20\x20\x20\x20\x20<span\x20class=\x22template-icon\x22>📝</span>\x0a\x20\x20\x20\x20\x20\x20<span>'+Utils['escapeHtml'](_0x521ee8['title'])+'</span>\x0a\x20\x20\x20\x20</button>\x0a\x20\x20')['join']('');_0x3072bb['innerHTML']=_0x276999['outerHTML']+_0xabf416,_0x3072bb['querySelector']('#new-template-tab')['addEventListener']('click',createNewTemplate);if(_0x10c445['length']>0x0&&state['currentTemplate']===null)selectTemplate(0x0);else _0x10c445['length']===0x0&&showTemplateEmptyState();}function showTemplateEmptyState(){document['getElementById']('current-template-name')['textContent']='Select\x20a\x20Template',document['getElementById']('delete-template-btn')['hidden']=!![],document['getElementById']('preview-template-btn')['hidden']=!![],document['getElementById']('template-editor-container')['innerHTML']='<p\x20class=\x22text-muted\x22>Select\x20a\x20template\x20from\x20the\x20sidebar\x20to\x20edit,\x20or\x20create\x20a\x20new\x20one.</p>';}window['selectTemplate']=async function(_0x301f34){state['currentTemplate']=_0x301f34;const _0x13a865=state['selectedEnvData']['templates'][_0x301f34],_0x49b3cf=monacoEditors['get']('template-md-editor');_0x49b3cf&&(_0x49b3cf['dispose'](),monacoEditors['delete']('template-md-editor'));document['querySelectorAll']('.template-tab')['forEach'](_0x23e87a=>{_0x23e87a['classList']['toggle']('active',_0x23e87a['dataset']['template']===String(_0x301f34));}),document['getElementById']('current-template-name')['textContent']=_0x13a865['title'],document['getElementById']('delete-template-btn')['hidden']=![],document['getElementById']('preview-template-btn')['hidden']=![],document['getElementById']('preview-template-btn')['innerHTML']='<span>✏️</span>\x20Edit';const _0x295efb=_0x13a865['parameters']?Object['keys'](_0x13a865['parameters'])['length']:0x0,_0x5d6a2b=document['getElementById']('template-editor-container');_0x5d6a2b['innerHTML']='\x0a\x20\x20\x20\x20<div\x20id=\x22template-preview-container\x22>\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22form-group\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<label>Template\x20Content</label>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22markdown-preview-container\x22\x20id=\x22template-md-preview\x22></div>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22form-group\x22\x20style=\x22margin-top:\x2024px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<label>Template\x20Metadata</label>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22form-single-column\x22\x20style=\x22margin-top:\x208px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22form-row\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<label>Title</label>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<input\x20type=\x22text\x22\x20class=\x22form-input\x22\x20value=\x22'+Utils['escapeHtml'](_0x13a865['title']||'')+'\x22\x20disabled>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20'+(_0x13a865['description']?'\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22form-row\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<label>Description</label>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<input\x20type=\x22text\x22\x20class=\x22form-input\x22\x20value=\x22'+Utils['escapeHtml'](_0x13a865['description'])+'\x22\x20disabled>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20':'')+'\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x0a\x20\x20\x20\x20\x20\x20<!--\x20Parameters\x20Section\x20(visual\x20maintenance\x20-\x20preview\x20mode\x20shows\x20summary)\x20-->\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22deploy-section\x22\x20style=\x22margin-top:\x2024px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22deploy-section-header\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20class=\x22deploy-section-toggle\x22\x20type=\x22button\x22\x20aria-expanded=\x22false\x22\x20aria-controls=\x22template-parameters-section-preview\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22deploy-section-title\x22>Parameters</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22deploy-section-count\x22>'+_0x295efb+'</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22deploy-section-body\x22\x20id=\x22template-parameters-section-preview\x22\x20hidden>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20id=\x22template-parameters-preview-list\x22\x20class=\x22profile-list\x22></div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<p\x20class=\x22text-muted\x20small\x22>Switch\x20to\x20Edit\x20mode\x20to\x20add\x20or\x20modify\x20parameters.</p>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20<div\x20id=\x22template-editor-container-edit\x22\x20hidden>\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22form-group\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<label>Template\x20Content\x20(Markdown)</label>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20id=\x22template-md-editor\x22\x20style=\x22height:\x20400px;\x20border:\x201px\x20solid\x20var(--color-border);\x20margin-top:\x208px;\x22></div>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22form-group\x22\x20style=\x22margin-top:\x2024px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<label>Template\x20Metadata</label>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22form-single-column\x22\x20style=\x22margin-top:\x208px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22form-row\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<label\x20for=\x22template-edit-title\x22>Title</label>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<input\x20type=\x22text\x22\x20id=\x22template-edit-title\x22\x20class=\x22form-input\x22\x20value=\x22'+Utils['escapeHtml'](_0x13a865['title']||'')+'\x22\x20placeholder=\x22Template\x20title\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22form-row\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<label\x20for=\x22template-edit-description\x22>Description</label>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<input\x20type=\x22text\x22\x20id=\x22template-edit-description\x22\x20class=\x22form-input\x22\x20value=\x22'+Utils['escapeHtml'](_0x13a865['description']||'')+'\x22\x20placeholder=\x22Short\x20description\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x0a\x20\x20\x20\x20\x20\x20<!--\x20Parameters\x20Section\x20(visual\x20maintenance\x20-\x20edit\x20mode)\x20-->\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22deploy-section\x22\x20style=\x22margin-top:\x2024px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22deploy-section-header\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20class=\x22deploy-section-toggle\x20template-param-toggle\x22\x20type=\x22button\x22\x20aria-expanded=\x22false\x22\x20aria-controls=\x22template-parameters-section\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22deploy-section-title\x22>Parameters</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22deploy-section-count\x22\x20id=\x22template-parameters-count\x22>'+_0x295efb+'</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20class=\x22btn-secondary\x20btn-small\x22\x20onclick=\x22openAddTemplateParameterModal()\x22>+\x20Add</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22deploy-section-body\x22\x20id=\x22template-parameters-section\x22\x20hidden>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20id=\x22template-parameters-list\x22\x20class=\x22profile-list\x22></div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<p\x20class=\x22text-muted\x20small\x22>Define\x20parameters\x20that\x20will\x20be\x20prompted\x20when\x20using\x20this\x20template.</p>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20';const _0x34bda1=document['getElementById']('template-md-preview');_0x34bda1['innerHTML']=marked['parse'](_0x13a865['content']||''),state['currentTemplateData']={..._0x13a865,'parameters':_0x13a865['parameters']?JSON['parse'](JSON['stringify'](_0x13a865['parameters'])):{}},initTemplateSectionToggles(),renderTemplateParametersPreview();};function initTemplateSectionToggles(){document['querySelectorAll']('#template-editor-container\x20.deploy-section-toggle')['forEach'](_0x396e6e=>{_0x396e6e['addEventListener']('click',function(){const _0x47870b=this['getAttribute']('aria-expanded')==='true',_0x1a3303=this['getAttribute']('aria-controls'),_0xe12ef7=document['getElementById'](_0x1a3303);this['setAttribute']('aria-expanded',!_0x47870b),_0xe12ef7&&(_0xe12ef7['hidden']=_0x47870b);});});}function renderTemplateParametersPreview(){const _0xcb724=document['getElementById']('template-parameters-preview-list');if(!_0xcb724)return;const _0x386c06=state['currentTemplateData']?.['parameters']||{},_0x4ed449=Array['isArray'](_0x386c06)?Object['fromEntries'](_0x386c06['map'](_0x4e518c=>[_0x4e518c['name'],_0x4e518c])):_0x386c06,_0x217b60=Object['entries'](_0x4ed449);if(_0x217b60['length']===0x0){_0xcb724['innerHTML']='<div\x20class=\x22profile-list-empty\x22>No\x20parameters\x20defined</div>';return;}_0xcb724['innerHTML']=_0x217b60['map'](([_0x2d346c,_0x227634])=>{const _0x2b5d8d=getParameterTypeLabel(_0x227634),_0x2c8573=_0x227634['prompt']?.['label']||_0x227634['label']||'';return'\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22profile-param-item\x22\x20data-name=\x22'+Utils['escapeHtml'](_0x2d346c)+'\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22profile-item-key\x22>'+Utils['escapeHtml'](_0x2d346c)+'</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22param-type-badge\x22>'+_0x2b5d8d+'</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22profile-item-value\x22>'+(_0x2c8573?Utils['escapeHtml'](_0x2c8573):'')+'</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20'+(_0x227634['required']?'<span\x20class=\x22param-required\x22>Required</span>':'')+'\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20';})['join']('');}async function toggleTemplatePreview(){const _0x4eaa1c=document['getElementById']('template-preview-container'),_0x49617d=document['getElementById']('template-editor-container-edit'),_0x2dada5=document['getElementById']('preview-template-btn');if(!_0x4eaa1c||!_0x49617d)return;if(_0x4eaa1c['hidden']){const _0x56e943=getMonacoValue('template-md-editor');if(_0x56e943!==null){const _0x334207=document['getElementById']('template-md-preview');_0x334207&&(_0x334207['innerHTML']=marked['parse'](_0x56e943));}const _0x412058=document['getElementById']('template-edit-title'),_0x1532a2=document['getElementById']('template-edit-description');_0x412058&&state['currentTemplateData']&&(state['currentTemplateData']['title']=_0x412058['value']),_0x1532a2&&state['currentTemplateData']&&(state['currentTemplateData']['description']=_0x1532a2['value']),renderTemplateParametersPreview(),_0x4eaa1c['hidden']=![],_0x49617d['hidden']=!![],_0x2dada5['innerHTML']='<span>✏️</span>\x20Edit';}else{_0x4eaa1c['hidden']=!![],_0x49617d['hidden']=![],_0x2dada5['innerHTML']='<span>👁</span>\x20Preview';const _0x103da0=state['currentTemplateData'],_0x9dc6e7='template-md-editor',_0x1d5168=window['MarkdownFileEditor']&&window['MarkdownFileEditor']['editors']['has'](_0x9dc6e7),_0x1f9e55=monacoEditors['has'](_0x9dc6e7);if(_0x103da0&&!_0x1d5168&&!_0x1f9e55){if(window['MarkdownFileEditor']){const _0x2161b0=window['MarkdownFileEditor']['getOrCreate'](_0x9dc6e7,_0x103da0['content']||'',![],'400px',()=>markAsModified());}else{const _0x53ca76=await createMonacoEditor(_0x9dc6e7,_0x103da0['content']||'','markdown',![]);_0x53ca76&&_0x53ca76['onDidChangeModelContent'](()=>{markAsModified();});}}const _0x4c1cb5=document['getElementById']('template-edit-title'),_0x45db71=document['getElementById']('template-edit-description');_0x4c1cb5&&_0x4c1cb5['addEventListener']('input',markAsModified),_0x45db71&&_0x45db71['addEventListener']('input',markAsModified),renderTemplateParameters();}}function createNewTemplate(){const _0x1ced48=document['getElementById']('new-template-title'),_0x34f837=document['getElementById']('new-template-description'),_0x4e5f5e=document['getElementById']('new-template-filename'),_0x2ee338=document['getElementById']('add-template-error');_0x1ced48['value']='',_0x34f837['value']='',_0x4e5f5e['value']='',_0x1ced48['classList']['remove']('input-error'),_0x4e5f5e['classList']['remove']('input-error'),_0x2ee338['hidden']=!![],_0x1ced48['addEventListener']('input',()=>{const _0x334386=_0x1ced48['value']['trim']();if(_0x334386&&!_0x4e5f5e['value']){const _0x11a30c=_0x334386['toLowerCase']()['replace'](/[^a-z0-9]+/g,'-')['replace'](/^-+|-+$/g,'')+'.md';_0x4e5f5e['placeholder']=_0x11a30c;}}),document['getElementById']('add-template-modal')['hidden']=![];}function closeAddTemplateModal(){document['getElementById']('add-template-modal')['hidden']=!![];}function confirmAddTemplate(){const _0x3e2f87=document['getElementById']('new-template-title'),_0x3b4f20=document['getElementById']('new-template-filename'),_0x4748a6=document['getElementById']('add-template-error'),_0x41f7ee=_0x3e2f87['value']['trim'](),_0x2176cc=document['getElementById']('new-template-description')['value']['trim']();let _0x4d48a7=_0x3b4f20['value']['trim']();_0x3e2f87['classList']['remove']('input-error'),_0x3b4f20['classList']['remove']('input-error'),_0x4748a6['hidden']=!![];if(!_0x41f7ee){_0x3e2f87['classList']['add']('input-error'),_0x4748a6['textContent']='Template\x20title\x20is\x20required',_0x4748a6['hidden']=![];return;}!_0x4d48a7&&(_0x4d48a7=_0x41f7ee['toLowerCase']()['replace'](/[^a-z0-9]+/g,'-')['replace'](/^-+|-+$/g,'')+'.md');!_0x4d48a7['endsWith']('.md')&&(_0x4d48a7+='.md');if(state['selectedEnvData']['templates']['some'](_0x268b53=>_0x268b53['filename']===_0x4d48a7)){_0x3b4f20['classList']['add']('input-error'),_0x4748a6['textContent']='A\x20template\x20with\x20this\x20filename\x20already\x20exists',_0x4748a6['hidden']=![];return;}const _0x35f7ef={'title':_0x41f7ee,'description':_0x2176cc||undefined,'filename':_0x4d48a7,'content':'','parameters':[]};state['selectedEnvData']['templates']=[...state['selectedEnvData']['templates']||[],_0x35f7ef],renderTemplates(),markAsModified(),closeAddTemplateModal(),Utils['showSuccess']('Template\x20added\x20(click\x20Save\x20to\x20persist\x20changes)');}window['editTemplate']=function(_0x52f340){selectTemplate(_0x52f340);},window['removeTemplate']=function(_0x8cf70b){const _0x2bb67a=state['selectedEnvData']['templates'][_0x8cf70b];document['getElementById']('delete-template-name')['textContent']=_0x2bb67a['title'],document['getElementById']('delete-template-confirm-btn')['dataset']['templateIndex']=_0x8cf70b,document['getElementById']('delete-template-modal')['hidden']=![];};function closeDeleteTemplateModal(){document['getElementById']('delete-template-modal')['hidden']=!![];}function confirmDeleteTemplate(){const _0x2b943c=parseInt(document['getElementById']('delete-template-confirm-btn')['dataset']['templateIndex']);state['selectedEnvData']['templates']=state['selectedEnvData']['templates']['filter']((_0x166c87,_0x282dcd)=>_0x282dcd!==_0x2b943c);if(state['currentTemplate']===_0x2b943c)state['currentTemplate']=null;else state['currentTemplate']>_0x2b943c&&state['currentTemplate']--;renderTemplates(),markAsModified(),closeDeleteTemplateModal(),Utils['showSuccess']('Template\x20removed\x20(click\x20Save\x20to\x20persist\x20changes)');}function renderDeployProfiles(){const _0x4fa2a6=document['querySelector']('.deploy-sidebar'),_0x413dd8=state['selectedEnvData']['deployment_profiles']||[];updateTabBadge('badge-deploy',_0x413dd8['length']);const _0x22d472=_0x4fa2a6['querySelector']('#new-deploy-profile-tab'),_0x1b7c7b=_0x413dd8['map'](_0x34a380=>'\x0a\x20\x20\x20\x20<button\x20class=\x22deploy-profile-tab\x20'+(!_0x34a380['hasScript']?'missing-script':'')+'\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20data-profile=\x22'+Utils['escapeHtml'](_0x34a380['name'])+'\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20onclick=\x22selectDeployProfile(\x27'+Utils['escapeHtml'](_0x34a380['name'])+'\x27)\x22>\x0a\x20\x20\x20\x20\x20\x20<svg\x20class=\x22deploy-profile-icon\x22\x20width=\x2216\x22\x20height=\x2216\x22\x20viewBox=\x220\x200\x2024\x2024\x22\x20fill=\x22none\x22\x20stroke=\x22currentColor\x22\x20stroke-width=\x222\x22\x20stroke-linecap=\x22round\x22\x20stroke-linejoin=\x22round\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<polygon\x20points=\x2212\x202\x202\x207\x2012\x2012\x2022\x207\x2012\x202\x22></polygon>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<polyline\x20points=\x222\x2017\x2012\x2022\x2022\x2017\x22></polyline>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<polyline\x20points=\x222\x2012\x2012\x2017\x2022\x2012\x22></polyline>\x0a\x20\x20\x20\x20\x20\x20</svg>\x0a\x20\x20\x20\x20\x20\x20<span>'+Utils['escapeHtml'](_0x34a380['name'])+'</span>\x0a\x20\x20\x20\x20</button>\x0a\x20\x20')['join']('');_0x4fa2a6['innerHTML']=_0x22d472['outerHTML']+_0x1b7c7b,_0x4fa2a6['querySelector']('#new-deploy-profile-tab')['addEventListener']('click',openAddDeployProfileModal);if(_0x413dd8['length']>0x0&&state['currentDeployProfile']===null)selectDeployProfile(_0x413dd8[0x0]['name']);else{if(_0x413dd8['length']===0x0)showDeployProfileEmptyState();else{if(state['currentDeployProfile']){const _0x4fbc49=_0x413dd8['find'](_0x5959c2=>_0x5959c2['name']===state['currentDeployProfile']);_0x4fbc49?selectDeployProfile(state['currentDeployProfile']):(state['currentDeployProfile']=null,showDeployProfileEmptyState());}}}}function showDeployProfileEmptyState(){document['getElementById']('current-deploy-profile-name')['textContent']='Select\x20a\x20Profile',document['getElementById']('run-deploy-profile-btn')['hidden']=!![],document['getElementById']('delete-deploy-profile-btn')['hidden']=!![],document['getElementById']('deploy-profile-details-container')['hidden']=![],document['getElementById']('deploy-profile-editor')['hidden']=!![],document['getElementById']('deployment-progress-panel')['hidden']=!![],updateDeploySectionCount('deploy-secrets-count',0x0),updateDeploySectionCount('deploy-parameters-count',0x0),state['profileScriptEditor']&&(state['profileScriptEditor']['dispose'](),state['profileScriptEditor']=null),state['currentDeployProfile']=null,state['currentDeployProfileData']=null,state['profileHasUnsavedChanges']=![];}window['selectDeployProfile']=async function(_0x167306){if(state['profileHasUnsavedChanges']&&state['currentDeployProfile']!==_0x167306){const _0x55171d=confirm('You\x20have\x20unsaved\x20changes\x20to\x20this\x20profile.\x20Switch\x20anyway?\x0a\x0aUse\x20the\x20global\x20Save\x20button\x20to\x20save\x20all\x20changes.');if(!_0x55171d)return;state['profileHasUnsavedChanges']=![];}state['currentDeployProfile']=_0x167306,document['querySelectorAll']('.deploy-profile-tab')['forEach'](_0x403bf4=>{_0x403bf4['classList']['toggle']('active',_0x403bf4['dataset']['profile']===_0x167306);});const _0x190bbf=state['selectedEnvData']['deployment_profiles']||[],_0x487d16=_0x190bbf['find'](_0x270f8c=>_0x270f8c['name']===_0x167306);if(!_0x487d16){showDeployProfileEmptyState();return;}try{const _0x136a5e=await API['get']('/environments/'+state['selectedEnv']+'/deployment-profiles/'+_0x167306);state['currentDeployProfileData']=_0x136a5e,document['getElementById']('current-deploy-profile-name')['textContent']=_0x167306;const _0x1a0aff=document['getElementById']('run-deploy-profile-btn');_0x1a0aff['hidden']=![],_0x1a0aff['disabled']=!_0x136a5e['hasScript'],document['getElementById']('delete-deploy-profile-btn')['hidden']=![],document['getElementById']('deploy-profile-details-container')['hidden']=!![],document['getElementById']('deploy-profile-editor')['hidden']=![],document['getElementById']('profile-description')['value']=_0x136a5e['description']||'',document['getElementById']('profile-script-filename')['textContent']=_0x167306+'.sh',await initProfileScriptEditor(_0x136a5e['scriptContent']||''),renderProfileSecrets(),renderProfileParameters();}catch(_0x43240f){console['error']('Failed\x20to\x20load\x20profile:',_0x43240f),Utils['showError']('Failed\x20to\x20load\x20profile\x20details'),showDeployProfileEmptyState();}};async function initProfileScriptEditor(_0x8c04d0){state['profileScriptEditor']&&(state['profileScriptEditor']['dispose'](),state['profileScriptEditor']=null),state['profileScriptEditor']=await createMonacoEditor('profile-script-editor',_0x8c04d0,'shell',![]),state['profileScriptEditor']&&state['profileScriptEditor']['onDidChangeModelContent'](()=>{markProfileAsModified();});}function markProfileAsModified(){state['profileHasUnsavedChanges']=!![],markAsModified();}function renderProfileSecrets(){const _0x25dfa7=document['getElementById']('profile-secrets-list'),_0x57d7c0=state['currentDeployProfileData']?.['secrets']||[];updateDeploySectionCount('deploy-secrets-count',_0x57d7c0['length']);if(_0x57d7c0['length']===0x0){_0x25dfa7['innerHTML']='<div\x20class=\x22profile-list-empty\x22>No\x20secrets\x20configured</div>';return;}const _0x2e6205=state['secrets']['map'](_0x2dccdd=>_0x2dccdd['name']);_0x25dfa7['innerHTML']=_0x57d7c0['map']((_0x499f13,_0x16c3a9)=>{const _0x2200d8=_0x2e6205['includes'](_0x499f13['name']),_0x3cee3b=_0x499f13['expose_as']==='file'?'File':'Env\x20Var';return'\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22profile-secret-item\x20'+(!_0x2200d8?'warning':'')+'\x22\x20data-index=\x22'+_0x16c3a9+'\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22profile-item-key\x22>'+Utils['escapeHtml'](_0x499f13['name'])+'</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22secret-expose-type\x20'+_0x499f13['expose_as']+'\x22>'+_0x3cee3b+'</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22profile-item-value\x22\x20title=\x22'+Utils['escapeHtml'](_0x499f13['target'])+'\x22>'+Utils['escapeHtml'](_0x499f13['target'])+'</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20'+(!_0x2200d8?'<span\x20class=\x22profile-item-meta\x22\x20style=\x22color:\x20var(--color-warning);\x22>⚠\x20Not\x20found</span>':'')+'\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22profile-item-actions\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20class=\x22profile-item-delete\x22\x20onclick=\x22deleteProfileSecret('+_0x16c3a9+')\x22\x20title=\x22Delete\x22>🗑</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20';})['join']('');}function renderProfileParameters(){const _0x22510a=document['getElementById']('profile-parameters-list'),_0x12d2ed=state['currentDeployProfileData']?.['parameters']||{},_0x312e9a=Object['entries'](_0x12d2ed);updateDeploySectionCount('deploy-parameters-count',_0x312e9a['length']);if(_0x312e9a['length']===0x0){_0x22510a['innerHTML']='<div\x20class=\x22profile-list-empty\x22>No\x20parameters\x20defined</div>';return;}_0x22510a['innerHTML']=_0x312e9a['map'](([_0x4ac627,_0x1037d9])=>{const _0x26e0cf=getParameterTypeLabel(_0x1037d9),_0x3dc2f6=_0x1037d9['label']||'';return'\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22profile-param-item\x22\x20data-name=\x22'+Utils['escapeHtml'](_0x4ac627)+'\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22profile-item-key\x22>'+Utils['escapeHtml'](_0x4ac627)+'</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22param-type-badge\x22>'+_0x26e0cf+'</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22profile-item-value\x22>'+(_0x3dc2f6?Utils['escapeHtml'](_0x3dc2f6):'')+'</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20'+(_0x1037d9['required']?'<span\x20class=\x22param-required\x22>Required</span>':'')+'\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22profile-item-actions\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20class=\x22profile-item-edit\x22\x20onclick=\x22editProfileParameter(\x27'+Utils['escapeHtml'](_0x4ac627)+'\x27)\x22\x20title=\x22Edit\x22>✏️</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20class=\x22profile-item-delete\x22\x20onclick=\x22deleteProfileParameter(\x27'+Utils['escapeHtml'](_0x4ac627)+'\x27)\x22\x20title=\x22Delete\x22>🗑</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20';})['join']('');}function openRunDeploymentModal(){if(!state['currentDeployProfileData']||!state['currentDeployProfile'])return;const _0x5201ed=document['getElementById']('run-deployment-modal'),_0x11f388=document['getElementById']('run-deployment-error'),_0x2baf49=state['currentDeployProfile'];document['getElementById']('run-deployment-profile-name')['textContent']=_0x2baf49,document['getElementById']('run-deployment-dry-run')['checked']=![],document['getElementById']('run-deployment-start-btn')['disabled']=![],_0x11f388['hidden']=!![],_0x11f388['textContent']='',renderDeploymentParameterInputs(state['currentDeployProfileData']['parameters']||{}),_0x5201ed['hidden']=![];}function closeRunDeploymentModal(){document['getElementById']('run-deployment-modal')['hidden']=!![];}function renderDeploymentParameterInputs(_0xa929a){const _0x178151=document['getElementById']('run-deployment-parameters');_0x178151['innerHTML']='';const _0x588a33=Object['entries'](_0xa929a);if(_0x588a33['length']===0x0){_0x178151['innerHTML']='<p\x20class=\x22text-muted\x20small\x22>No\x20parameters\x20required\x20for\x20this\x20deployment.</p>';return;}for(const [_0x5a51ca,_0x110db1]of _0x588a33){const _0x3c87ed=document['createElement']('div');_0x3c87ed['className']='deployment-param-row',_0x3c87ed['dataset']['param']=_0x5a51ca,_0x3c87ed['dataset']['type']=_0x110db1['type']||'text';const _0x23577b=document['createElement']('label');_0x23577b['className']='deployment-param-label',_0x23577b['setAttribute']('for','deployment-param-'+_0x5a51ca),_0x23577b['textContent']=_0x110db1['label']||_0x5a51ca;if(_0x110db1['required']){const _0x54ba84=document['createElement']('span');_0x54ba84['className']='param-required',_0x54ba84['textContent']='Required',_0x23577b['appendChild'](_0x54ba84);}_0x3c87ed['appendChild'](_0x23577b);let _0x39d351;if(_0x110db1['type']==='select')_0x39d351=document['createElement']('select'),_0x39d351['className']='form-input',_0x39d351['innerHTML']=(_0x110db1['options']||[])['map'](_0x288120=>{const _0x20693f=Utils['escapeHtml'](_0x288120);return'<option\x20value=\x22'+_0x20693f+'\x22>'+_0x20693f+'</option>';})['join'](''),_0x110db1['default']&&(_0x39d351['value']=_0x110db1['default']);else{if(_0x110db1['type']==='boolean')_0x39d351=document['createElement']('input'),_0x39d351['type']='checkbox',_0x39d351['checked']=_0x110db1['default']===!![]||_0x110db1['default']==='true';else _0x110db1['type']==='command'?(_0x39d351=document['createElement']('select'),_0x39d351['className']='form-input',_0x39d351['disabled']=!![],_0x39d351['innerHTML']='<option\x20value=\x22\x22>Loading\x20options...</option>'):(_0x39d351=document['createElement']('input'),_0x39d351['type']='text',_0x39d351['className']='form-input',_0x39d351['placeholder']=_0x110db1['default']||'',_0x110db1['default']&&(_0x39d351['value']=_0x110db1['default']));}_0x39d351['id']='deployment-param-'+_0x5a51ca,_0x3c87ed['appendChild'](_0x39d351);if(_0x110db1['description']){const _0x569d32=document['createElement']('div');_0x569d32['className']='deployment-param-description',_0x569d32['textContent']=_0x110db1['description'],_0x3c87ed['appendChild'](_0x569d32);}_0x178151['appendChild'](_0x3c87ed),_0x110db1['type']==='command'&&loadDeploymentCommandOptions(_0x5a51ca,_0x110db1,_0x39d351);}}async function loadDeploymentCommandOptions(_0x4c0ab1,_0xf7868a,_0x2f6ca4){const _0x1253df=state['selectedEnv']+':'+state['currentDeployProfile']+':'+_0x4c0ab1;if(state['deploymentParamCache'][_0x1253df]){populateDeploymentCommandOptions(_0x2f6ca4,state['deploymentParamCache'][_0x1253df],_0xf7868a['default']);return;}try{const _0x46e882=await API['promptParameter']({'environment':state['selectedEnv'],'command':_0xf7868a['command'],'parser':'lines'}),_0x121861=_0x46e882['choices']||[];state['deploymentParamCache'][_0x1253df]=_0x121861,populateDeploymentCommandOptions(_0x2f6ca4,_0x121861,_0xf7868a['default']);}catch(_0xd1c2d9){_0x2f6ca4['disabled']=!![],_0x2f6ca4['innerHTML']='<option\x20value=\x22\x22>Failed\x20to\x20load\x20options</option>',console['error']('Failed\x20to\x20load\x20deployment\x20parameter\x20options:',_0xd1c2d9);}}function populateDeploymentCommandOptions(_0x4e5640,_0x2a2138,_0x3c6220){_0x4e5640['disabled']=![];if(_0x2a2138['length']===0x0){_0x4e5640['innerHTML']='<option\x20value=\x22\x22>No\x20options\x20available</option>';return;}_0x4e5640['innerHTML']=_0x2a2138['map'](_0x3f2722=>{const _0xf1747e=Utils['escapeHtml'](_0x3f2722['value']),_0x2bb7e8=Utils['escapeHtml'](_0x3f2722['label']||_0x3f2722['value']);return'<option\x20value=\x22'+_0xf1747e+'\x22>'+_0x2bb7e8+'</option>';})['join'](''),_0x3c6220&&_0x2a2138['some'](_0x476d31=>_0x476d31['value']===_0x3c6220)&&(_0x4e5640['value']=_0x3c6220);}function collectDeploymentParameters(){const _0x24bc31={};return document['querySelectorAll']('#run-deployment-parameters\x20[data-param]')['forEach'](_0x1984ef=>{const _0x4cb6a8=_0x1984ef['dataset']['param'],_0x5d8cda=_0x1984ef['dataset']['type'],_0xe0a2fe=_0x1984ef['querySelector']('input,\x20select');if(!_0xe0a2fe)return;if(_0x5d8cda==='boolean')_0x24bc31[_0x4cb6a8]=_0xe0a2fe['checked'];else{const _0xaf9886=_0xe0a2fe['value']['trim']();_0xaf9886!==''&&(_0x24bc31[_0x4cb6a8]=_0xaf9886);}}),_0x24bc31;}function validateDeploymentInputs(_0x3b6843,_0x389e33){const _0x5b35dc=[];return Object['entries'](_0x389e33||{})['forEach'](([_0x14f450,_0x5c30af])=>{if(!_0x5c30af['required'])return;if(_0x5c30af['type']==='boolean')return;!_0x3b6843[_0x14f450]&&_0x5b35dc['push'](_0x14f450);}),_0x5b35dc;}async function startDeployment(){if(!state['currentDeployProfile'])return;const _0x5196b9=document['getElementById']('run-deployment-error');_0x5196b9['hidden']=!![],_0x5196b9['textContent']='';const _0x1c9513=collectDeploymentParameters(),_0x1866eb=validateDeploymentInputs(_0x1c9513,state['currentDeployProfileData']?.['parameters']||{});if(_0x1866eb['length']>0x0){_0x5196b9['textContent']='Missing\x20required\x20parameters:\x20'+_0x1866eb['join'](',\x20'),_0x5196b9['hidden']=![];return;}const _0x3756e2=document['getElementById']('run-deployment-dry-run')['checked'],_0x9e4c74=document['getElementById']('run-deployment-start-btn');_0x9e4c74['disabled']=!![];try{const _0x42e1d4=await API['post']('/environments/'+state['selectedEnv']+'/deployment-profiles/'+state['currentDeployProfile']+'/execute',{'parameters':_0x1c9513,'dryRun':_0x3756e2});closeRunDeploymentModal(),_0x42e1d4['status']==='running'?(startDeploymentPolling(_0x42e1d4['deploymentId']),Utils['showSuccess']('Deployment\x20started')):(Utils['showSuccess']('Deployment\x20dry\x20run\x20completed'),await loadDeploymentHistory());}catch(_0x10cd0f){_0x5196b9['textContent']=_0x10cd0f['message']||'Failed\x20to\x20start\x20deployment',_0x5196b9['hidden']=![];}finally{_0x9e4c74['disabled']=![];}}function startDeploymentPolling(_0x16c2f1){state['currentDeploymentId']=_0x16c2f1,state['deploymentStartTime']=Date['now'](),state['deploymentOutput']='';const _0x29b776=document['getElementById']('deployment-progress-panel');_0x29b776['hidden']=![];const _0x37502b=document['getElementById']('deployment-progress-profile');_0x37502b&&(_0x37502b['textContent']=state['currentDeployProfile']||''),document['getElementById']('deployment-output')['textContent']='',state['deploymentPollInterval']&&clearInterval(state['deploymentPollInterval']),pollDeploymentStatus(),state['deploymentPollInterval']=setInterval(pollDeploymentStatus,0x7d0);}function stopDeploymentPolling(){state['deploymentPollInterval']&&(clearInterval(state['deploymentPollInterval']),state['deploymentPollInterval']=null);}async function pollDeploymentStatus(){if(!state['currentDeploymentId'])return;try{const _0x4c7af2=await API['get']('/environments/'+state['selectedEnv']+'/deployments/'+state['currentDeploymentId']);updateDeploymentProgress(_0x4c7af2),_0x4c7af2['status']&&_0x4c7af2['status']!=='running'&&(stopDeploymentPolling(),state['currentDeploymentId']=null,await loadDeploymentHistory());}catch(_0x314c87){console['error']('Failed\x20to\x20poll\x20deployment\x20status:',_0x314c87);}}function updateDeploymentProgress(_0x43ac8b){const _0x502764=document['getElementById']('deployment-progress-profile'),_0x11cc89=document['getElementById']('deployment-progress-badge'),_0x31d697=document['getElementById']('deployment-progress-duration'),_0x4af6dd=document['getElementById']('deployment-output');_0x502764&&_0x43ac8b['profile']&&(_0x502764['textContent']=_0x43ac8b['profile']);_0x11cc89&&(_0x11cc89['textContent']=_0x43ac8b['status']||'running',_0x11cc89['className']='deployment-status-badge\x20'+(_0x43ac8b['status']||'running'));if(_0x31d697){const _0x4ebdb6=_0x43ac8b['startedAt']?Date['parse'](_0x43ac8b['startedAt']):state['deploymentStartTime'],_0x5e23b9=_0x43ac8b['completedAt']?Date['parse'](_0x43ac8b['completedAt']):Date['now']();_0x31d697['textContent']=formatDuration(_0x5e23b9-_0x4ebdb6);}_0x4af6dd&&(_0x4af6dd['textContent']=_0x43ac8b['output']||'',_0x4af6dd['scrollTop']=_0x4af6dd['scrollHeight']);}async function cancelDeploymentExecution(){if(!state['currentDeploymentId'])return;try{await API['post']('/environments/'+state['selectedEnv']+'/deployments/'+state['currentDeploymentId']+'/cancel',{}),Utils['showSuccess']('Deployment\x20cancelled');}catch(_0x1b32e5){Utils['showError'](_0x1b32e5['message']||'Failed\x20to\x20cancel\x20deployment');}}async function loadDeploymentHistory(){if(!state['selectedEnv'])return;try{const _0x5ceec8=await API['get']('/environments/'+state['selectedEnv']+'/deployment-history?limit=20');state['deploymentHistory']=_0x5ceec8['deployments']||[],renderDeploymentHistory();}catch(_0xd912c){console['error']('Failed\x20to\x20load\x20deployment\x20history:',_0xd912c),state['deploymentHistory']=[],renderDeploymentHistory();}}function renderDeploymentHistory(){const _0xf72e4e=document['getElementById']('deployment-history-list');if(!_0xf72e4e)return;updateDeploySectionCount('deploy-history-count',state['deploymentHistory']['length']);if(state['deploymentHistory']['length']===0x0){_0xf72e4e['innerHTML']='<div\x20class=\x22profile-list-empty\x22>No\x20deployments\x20yet</div>';return;}_0xf72e4e['innerHTML']='',state['deploymentHistory']['forEach'](_0x42df59=>{const _0x10c641=document['createElement']('div');_0x10c641['className']='deployment-history-item';const _0x108d6d=document['createElement']('div');_0x108d6d['className']='deployment-history-header';const _0x2cd3ee=document['createElement']('div');_0x2cd3ee['className']='deployment-history-title',_0x2cd3ee['textContent']=_0x42df59['profile']+'\x20('+_0x42df59['status']+')';const _0x4baf69=document['createElement']('span');_0x4baf69['className']='deployment-status-badge\x20'+_0x42df59['status'],_0x4baf69['textContent']=_0x42df59['status'],_0x108d6d['appendChild'](_0x2cd3ee),_0x108d6d['appendChild'](_0x4baf69);const _0xaecccb=document['createElement']('div');_0xaecccb['className']='deployment-history-meta';const _0x512ddd=_0x42df59['startedAt']?formatTimestamp(_0x42df59['startedAt']):'Unknown\x20time',_0x1f18d3=_0x42df59['completedAt']?formatDuration(Date['parse'](_0x42df59['completedAt'])-Date['parse'](_0x42df59['startedAt'])):'Running';_0xaecccb['innerHTML']='\x0a\x20\x20\x20\x20\x20\x20<span>'+_0x512ddd+'</span>\x0a\x20\x20\x20\x20\x20\x20<span>Duration:\x20'+_0x1f18d3+'</span>\x0a\x20\x20\x20\x20\x20\x20<span>Triggered\x20by:\x20'+Utils['escapeHtml'](_0x42df59['triggeredBy']||'unknown')+'</span>\x0a\x20\x20\x20\x20';const _0x319535=document['createElement']('button');_0x319535['className']='btn-ghost\x20btn-small',_0x319535['textContent']='View\x20Output',_0x108d6d['appendChild'](_0x319535);const _0x3c2a66=document['createElement']('div');_0x3c2a66['className']='deployment-history-output',_0x3c2a66['hidden']=!![],_0x3c2a66['textContent']=_0x42df59['output']||'No\x20output\x20captured.',_0x319535['addEventListener']('click',()=>{_0x3c2a66['hidden']=!_0x3c2a66['hidden'],_0x319535['textContent']=_0x3c2a66['hidden']?'View\x20Output':'Hide\x20Output';}),_0x10c641['appendChild'](_0x108d6d),_0x10c641['appendChild'](_0xaecccb),_0x10c641['appendChild'](_0x3c2a66),_0xf72e4e['appendChild'](_0x10c641);});}function formatTimestamp(_0x4504e3){try{const _0x14feac=new Date(_0x4504e3);return _0x14feac['toLocaleString']();}catch{return _0x4504e3;}}function initDeploySectionToggles(){document['querySelectorAll']('.deploy-section-toggle')['forEach'](_0x2444a9=>{_0x2444a9['addEventListener']('click',()=>{const _0x175f0c=_0x2444a9['getAttribute']('aria-controls');if(!_0x175f0c)return;const _0x211915=document['getElementById'](_0x175f0c);if(!_0x211915)return;const _0x4cf630=_0x2444a9['getAttribute']('aria-expanded')==='true';_0x2444a9['setAttribute']('aria-expanded',String(!_0x4cf630)),_0x211915['hidden']=_0x4cf630;});});}function updateDeploySectionCount(_0x1be883,_0x4730df){const _0x410501=document['getElementById'](_0x1be883);if(!_0x410501)return;_0x410501['textContent']=String(_0x4730df),_0x410501['title']=_0x4730df+'\x20item'+(_0x4730df===0x1?'':'s');}function openAddProfileSecretModal(){const _0x1f66ae=document['getElementById']('profile-secret-modal'),_0x2b600c=document['getElementById']('profile-secret-name'),_0x420785=document['getElementById']('profile-secret-error');_0x420785['hidden']=!![],populateProfileSecretSelect(),updateProfileSecretInfo(),_0x1f66ae['hidden']=![],_0x2b600c['focus']();}function populateProfileSecretSelect(){const _0x1681bb=document['getElementById']('profile-secret-name'),_0x3d3597=state['secrets']||[],_0x33122e=_0x3d3597['filter'](_0xb588b8=>{const _0x482a29=_0xb588b8['available_for']||[];return _0x482a29['includes']('deploy');});if(_0x33122e['length']===0x0){_0x1681bb['innerHTML']='<option\x20value=\x22\x22>No\x20secrets\x20available\x20for\x20deploy</option>';return;}const _0x14c1b7=(state['currentDeployProfileData']?.['secrets']||[])['map'](_0x1ffbc8=>typeof _0x1ffbc8==='string'?_0x1ffbc8:_0x1ffbc8['name']),_0x34b912=_0x33122e['filter'](_0x5083e4=>!_0x14c1b7['includes'](_0x5083e4['name']));if(_0x34b912['length']===0x0){_0x1681bb['innerHTML']='<option\x20value=\x22\x22>All\x20deploy\x20secrets\x20already\x20added</option>';return;}_0x1681bb['innerHTML']=_0x34b912['map'](_0x4b86ad=>'<option\x20value=\x22'+Utils['escapeHtml'](_0x4b86ad['name'])+'\x22>'+Utils['escapeHtml'](_0x4b86ad['name'])+(_0x4b86ad['description']?'\x20-\x20'+Utils['escapeHtml'](_0x4b86ad['description']):'')+'</option>')['join']('');}function updateProfileSecretInfo(){const _0x550d5f=document['getElementById']('profile-secret-name'),_0x5a5e05=document['getElementById']('profile-secret-info'),_0x52c1a4=_0x550d5f['value'];if(!_0x52c1a4){_0x5a5e05['hidden']=!![];return;}const _0x37d23d=state['secrets']['find'](_0x10d6dd=>_0x10d6dd['name']===_0x52c1a4);if(!_0x37d23d){_0x5a5e05['hidden']=!![];return;}const _0x1a8639=_0x37d23d['expose_as']==='file'?'File\x20(bind\x20mount)':'Environment\x20Variable',_0x27f903=_0x37d23d['expose_as']==='file'?'Container\x20Path':'Variable\x20Name';_0x5a5e05['innerHTML']='\x0a\x20\x20\x20\x20<div\x20class=\x22secret-info-item\x22>\x0a\x20\x20\x20\x20\x20\x20<span\x20class=\x22secret-info-label\x22>Expose\x20As:</span>\x0a\x20\x20\x20\x20\x20\x20<span\x20class=\x22secret-info-value\x22>'+Utils['escapeHtml'](_0x1a8639)+'</span>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20<div\x20class=\x22secret-info-item\x22>\x0a\x20\x20\x20\x20\x20\x20<span\x20class=\x22secret-info-label\x22>'+Utils['escapeHtml'](_0x27f903)+':</span>\x0a\x20\x20\x20\x20\x20\x20<span\x20class=\x22secret-info-value\x20code-font\x22>'+Utils['escapeHtml'](_0x37d23d['target']||'Not\x20set')+'</span>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20',_0x5a5e05['hidden']=![];}function closeProfileSecretModal(){document['getElementById']('profile-secret-modal')['hidden']=!![];}function saveProfileSecret(){const _0x30839a=document['getElementById']('profile-secret-name'),_0x16d32f=document['getElementById']('profile-secret-error'),_0x5d842f=_0x30839a['value'];if(!_0x5d842f){_0x16d32f['textContent']='Please\x20select\x20a\x20secret',_0x16d32f['hidden']=![];return;}!state['currentDeployProfileData']['secrets']&&(state['currentDeployProfileData']['secrets']=[]),state['currentDeployProfileData']['secrets']['push']({'name':_0x5d842f}),closeProfileSecretModal(),renderProfileSecrets(),markProfileAsModified();}window['deleteProfileSecret']=function(_0x11ca2a){if(!state['currentDeployProfileData']?.['secrets'])return;if(!confirm('Delete\x20this\x20secret\x20reference?'))return;state['currentDeployProfileData']['secrets']['splice'](_0x11ca2a,0x1),renderProfileSecrets(),markProfileAsModified();};function openAddParameterModal(_0x473805){state['parameterModalContext']=_0x473805,state['editingParamName']=null,state['parameterOptions']=[];const _0x50db3f=document['getElementById']('profile-parameter-modal'),_0x4156c8=document['getElementById']('profile-parameter-modal-title'),_0x12251e=document['getElementById']('profile-parameter-error');_0x4156c8['textContent']='Add\x20Parameter',_0x12251e['hidden']=!![],document['getElementById']('profile-param-name')['value']='',document['getElementById']('profile-param-name')['disabled']=![],document['getElementById']('profile-param-label')['value']='',document['getElementById']('profile-param-description')['value']='',document['getElementById']('profile-param-type')['value']='text',document['getElementById']('profile-param-command')['value']='',document['getElementById']('profile-param-parser')['value']='lines',document['getElementById']('profile-param-repos')['value']='',document['getElementById']('profile-param-path')['value']='',document['getElementById']('profile-param-include')['value']='files',document['getElementById']('profile-param-pattern')['value']='',document['getElementById']('profile-param-files-repos')['value']='',document['getElementById']('profile-param-multiselect')['checked']=![],document['getElementById']('profile-param-default')['value']='',document['getElementById']('profile-param-required')['checked']=![],renderParameterOptionsList(),updateProfileParamTypeVisibility(),_0x50db3f['hidden']=![],document['getElementById']('profile-param-name')['focus']();}function openAddProfileParameterModal(){openAddParameterModal('deploy');}function updateProfileParamTypeVisibility(){const _0x518826=document['getElementById']('profile-param-type')['value'],_0x591efd=document['getElementById']('profile-param-options-row'),_0x3c7f53=document['getElementById']('profile-param-command-row'),_0x10b00a=document['getElementById']('profile-param-files-row'),_0x1372f0=document['getElementById']('profile-param-multiselect-row');_0x591efd['hidden']=!![],_0x3c7f53['hidden']=!![],_0x10b00a['hidden']=!![],_0x1372f0['hidden']=!![];if(_0x518826==='list')_0x591efd['hidden']=![],_0x1372f0['hidden']=![];else{if(_0x518826==='command')_0x3c7f53['hidden']=![],_0x1372f0['hidden']=![];else _0x518826==='files'&&(_0x10b00a['hidden']=![],_0x1372f0['hidden']=![]);}}function addParameterOption(){state['parameterOptions']['push']({'value':'','label':'','description':''}),renderParameterOptionsList();const _0x3f548e=document['querySelectorAll']('#profile-param-options-list\x20.option-value-input');_0x3f548e['length']>0x0&&_0x3f548e[_0x3f548e['length']-0x1]['focus']();}window['removeParameterOption']=function(_0x54308f){state['parameterOptions']['splice'](_0x54308f,0x1),renderParameterOptionsList();},window['updateParameterOption']=function(_0x39f7ab,_0x2a14f0,_0x440e60){state['parameterOptions'][_0x39f7ab]&&(state['parameterOptions'][_0x39f7ab][_0x2a14f0]=_0x440e60);};function renderParameterOptionsList(){const _0x2473e9=document['getElementById']('profile-param-options-list');if(!_0x2473e9)return;if(state['parameterOptions']['length']===0x0){_0x2473e9['innerHTML']='<div\x20class=\x22options-empty\x20text-muted\x22>No\x20options\x20defined.\x20Click\x20\x22+\x20Add\x20Option\x22\x20to\x20add\x20one.</div>';return;}_0x2473e9['innerHTML']=state['parameterOptions']['map']((_0x50c54a,_0x303144)=>'\x0a\x20\x20\x20\x20<div\x20class=\x22option-item\x22\x20data-index=\x22'+_0x303144+'\x22>\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22option-row\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<input\x20type=\x22text\x22\x20class=\x22form-input\x20option-value-input\x22\x20placeholder=\x22Value\x20(required)\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20value=\x22'+Utils['escapeHtml'](_0x50c54a['value']||'')+'\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20onchange=\x22updateParameterOption('+_0x303144+',\x20\x27value\x27,\x20this.value)\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<input\x20type=\x22text\x22\x20class=\x22form-input\x20option-label-input\x22\x20placeholder=\x22Label\x20(optional)\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20value=\x22'+Utils['escapeHtml'](_0x50c54a['label']||'')+'\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20onchange=\x22updateParameterOption('+_0x303144+',\x20\x27label\x27,\x20this.value)\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<button\x20type=\x22button\x22\x20class=\x22btn-icon\x20btn-danger-icon\x22\x20onclick=\x22removeParameterOption('+_0x303144+')\x22\x20title=\x22Remove\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<svg\x20width=\x2214\x22\x20height=\x2214\x22\x20viewBox=\x220\x200\x2024\x2024\x22\x20fill=\x22none\x22\x20stroke=\x22currentColor\x22\x20stroke-width=\x222\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<line\x20x1=\x2218\x22\x20y1=\x226\x22\x20x2=\x226\x22\x20y2=\x2218\x22></line>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<line\x20x1=\x226\x22\x20y1=\x226\x22\x20x2=\x2218\x22\x20y2=\x2218\x22></line>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</svg>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</button>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20<input\x20type=\x22text\x22\x20class=\x22form-input\x20option-desc-input\x22\x20placeholder=\x22Description\x20(optional)\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20value=\x22'+Utils['escapeHtml'](_0x50c54a['description']||'')+'\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20onchange=\x22updateParameterOption('+_0x303144+',\x20\x27description\x27,\x20this.value)\x22>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20')['join']('');}function openEditParameterModal(_0x342c42,_0x4d06fb){state['parameterModalContext']=_0x4d06fb,state['editingParamName']=_0x342c42;let _0x19f5d2;if(_0x4d06fb==='deploy')_0x19f5d2=state['currentDeployProfileData']?.['parameters']?.[_0x342c42];else{if(_0x4d06fb==='test'){const _0x6f8107=state['selectedEnvData']?.['tests']?.[state['currentTest']];_0x19f5d2=_0x6f8107?.['parameters']?.[_0x342c42];}else _0x4d06fb==='template'&&(_0x19f5d2=state['currentTemplateData']?.['parameters']?.[_0x342c42]);}if(!_0x19f5d2)return;const _0x4232cd=document['getElementById']('profile-parameter-modal'),_0xbf09e=document['getElementById']('profile-parameter-modal-title'),_0xcf6eb5=document['getElementById']('profile-parameter-error');_0xbf09e['textContent']='Edit\x20Parameter',_0xcf6eb5['hidden']=!![],document['getElementById']('profile-param-name')['value']=_0x342c42,document['getElementById']('profile-param-name')['disabled']=!![],document['getElementById']('profile-param-description')['value']=_0x19f5d2['description']||'',document['getElementById']('profile-param-default')['value']=_0x19f5d2['default']||'',document['getElementById']('profile-param-required')['checked']=_0x19f5d2['required']||![];const _0x10496c=_0x19f5d2['prompt'];if(_0x10496c){document['getElementById']('profile-param-label')['value']=_0x10496c['label']||'',document['getElementById']('profile-param-multiselect')['checked']=_0x10496c['multiSelect']||![];if(_0x10496c['type']==='list')document['getElementById']('profile-param-type')['value']='list',state['parameterOptions']=(_0x10496c['options']||[])['map'](_0x527175=>{if(typeof _0x527175==='string')return{'value':_0x527175,'label':'','description':''};return{'value':_0x527175['value']||'','label':_0x527175['label']||'','description':_0x527175['description']||''};});else{if(_0x10496c['type']==='command')document['getElementById']('profile-param-type')['value']='command',document['getElementById']('profile-param-command')['value']=_0x10496c['command']||'',document['getElementById']('profile-param-parser')['value']=_0x10496c['parser']||'lines',document['getElementById']('profile-param-repos')['value']=(_0x10496c['repos']||[])['join'](',\x20'),state['parameterOptions']=[];else _0x10496c['type']==='files'?(document['getElementById']('profile-param-type')['value']='files',document['getElementById']('profile-param-path')['value']=_0x10496c['path']||'',document['getElementById']('profile-param-include')['value']=_0x10496c['include']||'files',document['getElementById']('profile-param-pattern')['value']=_0x10496c['pattern']||'',document['getElementById']('profile-param-files-repos')['value']=(_0x10496c['repos']||[])['join'](',\x20'),state['parameterOptions']=[]):(document['getElementById']('profile-param-type')['value']='text',state['parameterOptions']=[]);}}else{document['getElementById']('profile-param-label')['value']=_0x19f5d2['label']||'',document['getElementById']('profile-param-multiselect')['checked']=![];const _0x54db2e=_0x19f5d2['type']||'text';if(_0x54db2e==='select')document['getElementById']('profile-param-type')['value']='list',state['parameterOptions']=(_0x19f5d2['options']||[])['map'](_0x50422a=>{if(typeof _0x50422a==='string')return{'value':_0x50422a,'label':'','description':''};return{'value':_0x50422a['value']||_0x50422a,'label':_0x50422a['label']||'','description':_0x50422a['description']||''};});else{if(_0x54db2e==='command')document['getElementById']('profile-param-type')['value']='command',document['getElementById']('profile-param-command')['value']=_0x19f5d2['command']||'',document['getElementById']('profile-param-parser')['value']=_0x19f5d2['parser']||'lines',document['getElementById']('profile-param-repos')['value']=(_0x19f5d2['repos']||[])['join'](',\x20'),state['parameterOptions']=[];else _0x54db2e==='boolean'?(document['getElementById']('profile-param-type')['value']='boolean',state['parameterOptions']=[]):(document['getElementById']('profile-param-type')['value']='text',state['parameterOptions']=[]);}}renderParameterOptionsList(),updateProfileParamTypeVisibility(),_0x4232cd['hidden']=![],document['getElementById']('profile-param-label')['focus']();}window['editProfileParameter']=function(_0x3415ea){openEditParameterModal(_0x3415ea,'deploy');},window['editTestParameter']=function(_0x127c40){openEditParameterModal(_0x127c40,'test');},window['editTemplateParameter']=function(_0x755965){openEditParameterModal(_0x755965,'template');};function closeProfileParameterModal(){document['getElementById']('profile-parameter-modal')['hidden']=!![],state['editingParamName']=null,state['parameterModalContext']=null,state['parameterOptions']=[];}function saveProfileParameter(){const _0x48e96c=document['getElementById']('profile-param-name'),_0x2eed4e=document['getElementById']('profile-param-label'),_0x43cf97=document['getElementById']('profile-param-description'),_0x550162=document['getElementById']('profile-param-type'),_0x4ea387=document['getElementById']('profile-param-command'),_0x4eb3f8=document['getElementById']('profile-param-parser'),_0x10b00e=document['getElementById']('profile-param-repos'),_0x39cfa6=document['getElementById']('profile-param-path'),_0xc7277e=document['getElementById']('profile-param-include'),_0x2a2c3a=document['getElementById']('profile-param-pattern'),_0x3b8479=document['getElementById']('profile-param-files-repos'),_0x544daa=document['getElementById']('profile-param-multiselect'),_0x25f188=document['getElementById']('profile-param-default'),_0x514f9a=document['getElementById']('profile-param-required'),_0xd7e4b7=document['getElementById']('profile-parameter-error'),_0x248979=_0x48e96c['value']['trim'](),_0xd3ea86=_0x2eed4e['value']['trim'](),_0x5a5065=_0x43cf97['value']['trim'](),_0x5e7db9=_0x550162['value'],_0x4aa996=_0x514f9a['checked'],_0x26cb52=_0x25f188['value']['trim'](),_0x345a60=_0x544daa['checked'],_0x5a107d=state['parameterModalContext'];if(!_0x248979){_0xd7e4b7['textContent']='Parameter\x20name\x20is\x20required',_0xd7e4b7['hidden']=![],_0x48e96c['focus']();return;}if(!/^[A-Za-z_][A-Za-z0-9_]*$/['test'](_0x248979)){_0xd7e4b7['textContent']='Invalid\x20parameter\x20name.\x20Use\x20letters,\x20numbers,\x20and\x20underscores.',_0xd7e4b7['hidden']=![],_0x48e96c['focus']();return;}let _0x3196e5;if(_0x5a107d==='deploy')!state['currentDeployProfileData']['parameters']&&(state['currentDeployProfileData']['parameters']={}),_0x3196e5=state['currentDeployProfileData']['parameters'];else{if(_0x5a107d==='test'){const _0x556b5b=state['selectedEnvData']['tests'][state['currentTest']];!_0x556b5b['parameters']&&(_0x556b5b['parameters']={}),_0x3196e5=_0x556b5b['parameters'];}else _0x5a107d==='template'&&(!state['currentTemplateData']['parameters']&&(state['currentTemplateData']['parameters']={}),_0x3196e5=state['currentTemplateData']['parameters']);}if(state['editingParamName']===null&&_0x3196e5[_0x248979]){_0xd7e4b7['textContent']='Parameter\x20\x22'+_0x248979+'\x22\x20already\x20exists',_0xd7e4b7['hidden']=![];return;}let _0x13c165;if(_0x5a107d==='deploy'){_0x13c165={'required':_0x4aa996};if(_0xd3ea86)_0x13c165['label']=_0xd3ea86;if(_0x5a5065)_0x13c165['description']=_0x5a5065;if(_0x26cb52)_0x13c165['default']=_0x26cb52;if(_0x5e7db9==='list'){_0x13c165['type']='select';const _0x5d32cc=state['parameterOptions']['filter'](_0x5edd35=>_0x5edd35['value']['trim']());if(_0x5d32cc['length']<0x1){_0xd7e4b7['textContent']='At\x20least\x20one\x20option\x20with\x20a\x20value\x20is\x20required',_0xd7e4b7['hidden']=![];return;}_0x13c165['options']=_0x5d32cc['map'](_0x304bee=>{if(_0x304bee['label']||_0x304bee['description'])return{'value':_0x304bee['value'],'label':_0x304bee['label']||undefined,'description':_0x304bee['description']||undefined};return _0x304bee['value'];});}else{if(_0x5e7db9==='command'){_0x13c165['type']='command';const _0x1f67e5=_0x4ea387['value']['trim']();if(!_0x1f67e5){_0xd7e4b7['textContent']='Command\x20is\x20required\x20for\x20dynamic\x20type',_0xd7e4b7['hidden']=![],_0x4ea387['focus']();return;}_0x13c165['command']=_0x1f67e5;const _0x426463=_0x4eb3f8['value'];if(_0x426463&&_0x426463!=='lines')_0x13c165['parser']=_0x426463;const _0x5e50e6=_0x10b00e['value']['split'](',')['map'](_0x37500e=>_0x37500e['trim']())['filter'](_0x4b5116=>_0x4b5116);if(_0x5e50e6['length']>0x0)_0x13c165['repos']=_0x5e50e6;}else{if(_0x5e7db9==='files'){_0x13c165['type']='files';const _0x3678a6=_0x39cfa6['value']['trim']();if(!_0x3678a6){_0xd7e4b7['textContent']='Directory\x20path\x20is\x20required\x20for\x20file\x20browser\x20type',_0xd7e4b7['hidden']=![],_0x39cfa6['focus']();return;}_0x13c165['path']=_0x3678a6,_0x13c165['include']=_0xc7277e['value'];const _0x5ccaa0=_0x2a2c3a['value']['trim']();if(_0x5ccaa0)_0x13c165['pattern']=_0x5ccaa0;const _0x11876a=_0x3b8479['value']['split'](',')['map'](_0x5bff85=>_0x5bff85['trim']())['filter'](_0x1ccf3e=>_0x1ccf3e);if(_0x11876a['length']>0x0)_0x13c165['repos']=_0x11876a;if(_0x345a60)_0x13c165['multiSelect']=!![];}else _0x5e7db9==='boolean'?_0x13c165['type']='boolean':_0x13c165['type']='text';}}}else{_0x13c165={'required':_0x4aa996};if(_0x5a5065)_0x13c165['description']=_0x5a5065;if(_0x26cb52)_0x13c165['default']=_0x26cb52;if(_0x5e7db9!=='text'&&_0x5e7db9!=='boolean'){_0x13c165['prompt']={'type':_0x5e7db9};if(_0xd3ea86)_0x13c165['prompt']['label']=_0xd3ea86;if(_0x345a60)_0x13c165['prompt']['multiSelect']=!![];if(_0x5e7db9==='list'){const _0x27933f=state['parameterOptions']['filter'](_0x158284=>_0x158284['value']['trim']());if(_0x27933f['length']<0x1){_0xd7e4b7['textContent']='At\x20least\x20one\x20option\x20with\x20a\x20value\x20is\x20required',_0xd7e4b7['hidden']=![];return;}_0x13c165['prompt']['options']=_0x27933f['map'](_0x528a2b=>{const _0x359844={'value':_0x528a2b['value']};if(_0x528a2b['label'])_0x359844['label']=_0x528a2b['label'];if(_0x528a2b['description'])_0x359844['description']=_0x528a2b['description'];return _0x359844;});}else{if(_0x5e7db9==='command'){const _0x4e463f=_0x4ea387['value']['trim']();if(!_0x4e463f){_0xd7e4b7['textContent']='Command\x20is\x20required\x20for\x20dynamic\x20type',_0xd7e4b7['hidden']=![],_0x4ea387['focus']();return;}_0x13c165['prompt']['command']=_0x4e463f;const _0x3344af=_0x4eb3f8['value'];if(_0x3344af&&_0x3344af!=='json')_0x13c165['prompt']['parser']=_0x3344af;const _0x204f4f=_0x10b00e['value']['split'](',')['map'](_0x3c31f7=>_0x3c31f7['trim']())['filter'](_0x32d749=>_0x32d749);if(_0x204f4f['length']>0x0)_0x13c165['prompt']['repos']=_0x204f4f;}else{if(_0x5e7db9==='files'){const _0x2c4c77=_0x39cfa6['value']['trim']();if(!_0x2c4c77){_0xd7e4b7['textContent']='Directory\x20path\x20is\x20required\x20for\x20file\x20browser\x20type',_0xd7e4b7['hidden']=![],_0x39cfa6['focus']();return;}_0x13c165['prompt']['path']=_0x2c4c77;const _0x485914=_0xc7277e['value'];if(_0x485914!=='files')_0x13c165['prompt']['include']=_0x485914;const _0x4c68d5=_0x2a2c3a['value']['trim']();if(_0x4c68d5)_0x13c165['prompt']['pattern']=_0x4c68d5;const _0x34c4d7=_0x3b8479['value']['split'](',')['map'](_0x366574=>_0x366574['trim']())['filter'](_0x4833a7=>_0x4833a7);if(_0x34c4d7['length']>0x0)_0x13c165['prompt']['repos']=_0x34c4d7;}}}}}_0x3196e5[_0x248979]=_0x13c165,closeProfileParameterModal();if(_0x5a107d==='deploy')renderProfileParameters(),markProfileAsModified();else{if(_0x5a107d==='test')renderTestParameters(),markAsModified();else _0x5a107d==='template'&&(renderTemplateParameters(),markAsModified());}}function deleteParameter(_0x3eebb1,_0x42e971){if(!confirm('Delete\x20this\x20parameter?'))return;if(_0x42e971==='deploy'){if(!state['currentDeployProfileData']?.['parameters'])return;delete state['currentDeployProfileData']['parameters'][_0x3eebb1],renderProfileParameters(),markProfileAsModified();}else{if(_0x42e971==='test'){const _0x1552e1=state['selectedEnvData']?.['tests']?.[state['currentTest']];if(!_0x1552e1?.['parameters'])return;delete _0x1552e1['parameters'][_0x3eebb1],renderTestParameters(),markAsModified();}else{if(_0x42e971==='template'){if(!state['currentTemplateData']?.['parameters'])return;delete state['currentTemplateData']['parameters'][_0x3eebb1],renderTemplateParameters(),markAsModified();}}}}window['deleteProfileParameter']=function(_0x333131){deleteParameter(_0x333131,'deploy');},window['deleteTestParameter']=function(_0x34e983){deleteParameter(_0x34e983,'test');},window['deleteTemplateParameter']=function(_0x4c67ef){deleteParameter(_0x4c67ef,'template');};function renderTestParameters(){const _0x51d548=document['getElementById']('test-parameters-list');if(!_0x51d548)return;const _0x21166f=state['selectedEnvData']?.['tests']?.[state['currentTest']],_0x564d3d=_0x21166f?.['parameters']||{},_0x24181a=Object['entries'](_0x564d3d),_0x2e989c=document['getElementById']('test-parameters-count');if(_0x2e989c)_0x2e989c['textContent']=_0x24181a['length'];if(_0x24181a['length']===0x0){_0x51d548['innerHTML']='<div\x20class=\x22profile-list-empty\x22>No\x20parameters\x20defined</div>';return;}_0x51d548['innerHTML']=_0x24181a['map'](([_0x5dcdb2,_0x274541])=>{const _0x8b019b=getParameterTypeLabel(_0x274541),_0x37954b=_0x274541['prompt']?.['label']||_0x274541['label']||'';return'\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22profile-param-item\x22\x20data-name=\x22'+Utils['escapeHtml'](_0x5dcdb2)+'\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22profile-item-key\x22>'+Utils['escapeHtml'](_0x5dcdb2)+'</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22param-type-badge\x22>'+_0x8b019b+'</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22profile-item-value\x22>'+(_0x37954b?Utils['escapeHtml'](_0x37954b):'')+'</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20'+(_0x274541['required']?'<span\x20class=\x22param-required\x22>Required</span>':'')+'\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22profile-item-actions\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20class=\x22profile-item-edit\x22\x20onclick=\x22editTestParameter(\x27'+Utils['escapeHtml'](_0x5dcdb2)+'\x27)\x22\x20title=\x22Edit\x22>✏️</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20class=\x22profile-item-delete\x22\x20onclick=\x22deleteTestParameter(\x27'+Utils['escapeHtml'](_0x5dcdb2)+'\x27)\x22\x20title=\x22Delete\x22>🗑</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20';})['join']('');}function renderTemplateParameters(){const _0x2e731d=document['getElementById']('template-parameters-list');if(!_0x2e731d)return;const _0x174ffe=state['currentTemplateData']?.['parameters']||{},_0x40124d=Array['isArray'](_0x174ffe)?Object['fromEntries'](_0x174ffe['map'](_0x5a0b9a=>[_0x5a0b9a['name'],_0x5a0b9a])):_0x174ffe,_0xa26024=Object['entries'](_0x40124d),_0x32b7c0=document['getElementById']('template-parameters-count');if(_0x32b7c0)_0x32b7c0['textContent']=_0xa26024['length'];if(_0xa26024['length']===0x0){_0x2e731d['innerHTML']='<div\x20class=\x22profile-list-empty\x22>No\x20parameters\x20defined</div>';return;}_0x2e731d['innerHTML']=_0xa26024['map'](([_0x4f38ef,_0x43ebd1])=>{const _0x453962=getParameterTypeLabel(_0x43ebd1),_0xc460ef=_0x43ebd1['prompt']?.['label']||_0x43ebd1['label']||'';return'\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22profile-param-item\x22\x20data-name=\x22'+Utils['escapeHtml'](_0x4f38ef)+'\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22profile-item-key\x22>'+Utils['escapeHtml'](_0x4f38ef)+'</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22param-type-badge\x22>'+_0x453962+'</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22profile-item-value\x22>'+(_0xc460ef?Utils['escapeHtml'](_0xc460ef):'')+'</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20'+(_0x43ebd1['required']?'<span\x20class=\x22param-required\x22>Required</span>':'')+'\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22profile-item-actions\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20class=\x22profile-item-edit\x22\x20onclick=\x22editTemplateParameter(\x27'+Utils['escapeHtml'](_0x4f38ef)+'\x27)\x22\x20title=\x22Edit\x22>✏️</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20class=\x22profile-item-delete\x22\x20onclick=\x22deleteTemplateParameter(\x27'+Utils['escapeHtml'](_0x4f38ef)+'\x27)\x22\x20title=\x22Delete\x22>🗑</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20';})['join']('');}function getParameterTypeLabel(_0x3d217b){if(_0x3d217b['prompt'])return _0x3d217b['prompt']['type']||'text';const _0x372702=_0x3d217b['type']||'text';if(_0x372702==='select')return'list';return _0x372702;}window['openAddTestParameterModal']=function(){openAddParameterModal('test');},window['openAddTemplateParameterModal']=function(){openAddParameterModal('template');};function openAddDeployProfileModal(){const _0x3c4443=document['getElementById']('add-deploy-profile-modal'),_0x475f22=document['getElementById']('new-deploy-profile-name'),_0x2ea1b1=document['getElementById']('new-deploy-profile-description'),_0x4fcd3a=document['getElementById']('add-deploy-profile-error');_0x475f22['value']='',_0x2ea1b1['value']='',_0x4fcd3a['hidden']=!![],_0x475f22['classList']['remove']('input-error'),_0x2ea1b1['classList']['remove']('input-error'),_0x3c4443['hidden']=![],_0x475f22['focus']();}function closeAddDeployProfileModal(){document['getElementById']('add-deploy-profile-modal')['hidden']=!![];}async function confirmAddDeployProfile(){const _0x28a361=document['getElementById']('new-deploy-profile-name'),_0x200725=document['getElementById']('new-deploy-profile-description'),_0x549725=document['getElementById']('add-deploy-profile-error'),_0x51c7db=_0x28a361['value']['trim'](),_0x410cc8=_0x200725['value']['trim']();_0x28a361['classList']['remove']('input-error'),_0x200725['classList']['remove']('input-error'),_0x549725['hidden']=!![];if(!_0x51c7db){_0x28a361['classList']['add']('input-error'),_0x549725['textContent']='Profile\x20name\x20is\x20required',_0x549725['hidden']=![];return;}if(!/^[A-Za-z_][A-Za-z0-9_-]*$/['test'](_0x51c7db)){_0x28a361['classList']['add']('input-error'),_0x549725['textContent']='Profile\x20name\x20must\x20start\x20with\x20a\x20letter\x20or\x20underscore,\x20and\x20contain\x20only\x20letters,\x20numbers,\x20hyphens,\x20and\x20underscores',_0x549725['hidden']=![];return;}if(!_0x410cc8){_0x200725['classList']['add']('input-error'),_0x549725['textContent']='Description\x20is\x20required',_0x549725['hidden']=![];return;}const _0xc8e82a=state['selectedEnvData']['deployment_profiles']||[];if(_0xc8e82a['find'](_0x188f35=>_0x188f35['name']['toLowerCase']()===_0x51c7db['toLowerCase']())){_0x28a361['classList']['add']('input-error'),_0x549725['textContent']='A\x20profile\x20with\x20this\x20name\x20already\x20exists',_0x549725['hidden']=![];return;}try{const _0x3c02ec=await fetch('/environments/'+state['selectedEnv']+'/deployment-profiles',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'profileName':_0x51c7db,'description':_0x410cc8})}),_0x504eed=await _0x3c02ec['json']();if(!_0x3c02ec['ok']){_0x549725['textContent']=_0x504eed['error']||'Failed\x20to\x20create\x20profile',_0x549725['hidden']=![];return;}await loadEnvironmentDetails(state['selectedEnv']),state['currentDeployProfile']=_0x51c7db,renderDeployProfiles(),closeAddDeployProfileModal(),Utils['showSuccess']('Deployment\x20profile\x20\x22'+_0x51c7db+'\x22\x20created');}catch(_0x1bba8d){_0x549725['textContent']=_0x1bba8d['message']||'Failed\x20to\x20create\x20profile',_0x549725['hidden']=![];}}function openDeleteDeployProfileModal(){if(!state['currentDeployProfile'])return;document['getElementById']('delete-deploy-profile-name')['textContent']=state['currentDeployProfile'],document['getElementById']('delete-deploy-profile-modal')['hidden']=![];}function closeDeleteDeployProfileModal(){document['getElementById']('delete-deploy-profile-modal')['hidden']=!![];}async function confirmDeleteDeployProfile(){if(!state['currentDeployProfile'])return;const _0x5dc091=state['currentDeployProfile'];try{const _0x1a49bc=await fetch('/environments/'+state['selectedEnv']+'/deployment-profiles/'+_0x5dc091,{'method':'DELETE'}),_0x4b4d2d=await _0x1a49bc['json']();if(!_0x1a49bc['ok']){Utils['showError'](_0x4b4d2d['error']||'Failed\x20to\x20delete\x20profile'),closeDeleteDeployProfileModal();return;}await loadEnvironmentDetails(state['selectedEnv']),state['currentDeployProfile']=null,state['currentDeployProfileData']=null,renderDeployProfiles(),closeDeleteDeployProfileModal(),Utils['showSuccess']('Deployment\x20profile\x20\x22'+_0x5dc091+'\x22\x20deleted');}catch(_0x5c85c6){Utils['showError'](_0x5c85c6['message']||'Failed\x20to\x20delete\x20profile'),closeDeleteDeployProfileModal();}}async function loadSecrets(){if(!state['selectedEnv']){state['secrets']=[];return;}try{const _0x543f22=await API['get']('/environments/'+state['selectedEnv']+'/secrets');state['secrets']=_0x543f22['secrets']||[];}catch(_0x3e8447){console['error']('Failed\x20to\x20load\x20secrets:',_0x3e8447),state['secrets']=[];}}function renderSecrets(){const _0x265ccf=document['getElementById']('secrets-list'),_0x1e59a2=document['getElementById']('secrets-empty'),_0xdcf8ec=document['getElementById']('secrets-filter');if(!_0x265ccf||!_0x1e59a2)return;updateTabBadge('badge-secrets',state['secrets']?.['length']||0x0);const _0x521ef6=_0xdcf8ec?.['value']||'all',_0x141b89=_0x521ef6==='all'?state['secrets']:state['secrets']['filter'](_0x484d48=>{const _0xa33e77=_0x484d48['available_for']||[];return _0xa33e77['includes'](_0x521ef6);});if(_0x141b89['length']===0x0){_0x265ccf['innerHTML']='',_0x265ccf['hidden']=!![];state['secrets']['length']>0x0&&_0x521ef6!=='all'?_0x1e59a2['innerHTML']='\x0a\x20\x20\x20\x20\x20\x20\x20\x20<p>No\x20secrets\x20match\x20the\x20\x22'+_0x521ef6+'\x22\x20filter.</p>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<p\x20class=\x22text-muted\x22>Try\x20selecting\x20\x22All\x22\x20to\x20see\x20all\x20secrets.</p>\x0a\x20\x20\x20\x20\x20\x20':_0x1e59a2['innerHTML']='\x0a\x20\x20\x20\x20\x20\x20\x20\x20<p>No\x20secrets\x20configured.</p>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<p\x20class=\x22text-muted\x22>Secrets\x20can\x20be\x20referenced\x20in\x20builds,\x20tasks,\x20and\x20deployment\x20profiles\x20and\x20exposed\x20as\x20environment\x20variables\x20or\x20mounted\x20files.</p>\x0a\x20\x20\x20\x20\x20\x20';_0x1e59a2['hidden']=![];return;}_0x265ccf['hidden']=![],_0x1e59a2['hidden']=!![],_0x265ccf['innerHTML']=_0x141b89['map'](_0x3f89f8=>{const _0x22e3cf=_0x3f89f8['type']==='file'?'file':'value',_0x445a0c=_0x3f89f8['type']==='file'?'File':'Value',_0x2f779d=_0x3f89f8['type']==='file'?'<span\x20class=\x22secret-source\x22\x20title=\x22'+Utils['escapeHtml'](_0x3f89f8['source'])+'\x22>'+Utils['escapeHtml'](_0x3f89f8['source'])+'</span>':_0x3f89f8['value']?'':'<span\x20class=\x22secret-meta-text\x20warning\x22>No\x20value</span>',_0x1b420c=_0x3f89f8['available_for']||[],_0x5dd9a1='\x0a\x20\x20\x20\x20\x20\x20<span\x20class=\x22secret-availability-badges\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20'+(_0x1b420c['includes']('build')?'<span\x20class=\x22availability-badge\x20build\x22>Build</span>':'')+'\x0a\x20\x20\x20\x20\x20\x20\x20\x20'+(_0x1b420c['includes']('tasks')?'<span\x20class=\x22availability-badge\x20tasks\x22>Tasks</span>':'')+'\x0a\x20\x20\x20\x20\x20\x20\x20\x20'+(_0x1b420c['includes']('deploy')?'<span\x20class=\x22availability-badge\x20deploy\x22>Deploy</span>':'')+'\x0a\x20\x20\x20\x20\x20\x20</span>\x0a\x20\x20\x20\x20',_0xecf467=_0x3f89f8['git_remote']?'<span\x20class=\x22git-pat-badge\x22\x20title=\x22Git\x20PAT\x20for\x20'+Utils['escapeHtml'](_0x3f89f8['git_remote'])+'\x22>PAT:\x20'+Utils['escapeHtml'](_0x3f89f8['git_remote'])+'</span>':'';return'\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22secret-item\x22\x20data-secret=\x22'+Utils['escapeHtml'](_0x3f89f8['name'])+'\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22secret-info\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22secret-name\x22>'+Utils['escapeHtml'](_0x3f89f8['name'])+'</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22secret-meta\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20'+_0x5dd9a1+'\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22secret-type-badge\x20'+_0x22e3cf+'\x22>'+_0x445a0c+'</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20'+_0xecf467+'\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20'+(_0x3f89f8['description']?'<span\x20class=\x22secret-description\x22\x20title=\x22'+Utils['escapeHtml'](_0x3f89f8['description'])+'\x22>'+Utils['escapeHtml'](_0x3f89f8['description'])+'</span>':'')+'\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22secret-meta-column\x22>'+_0x2f779d+'</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22secret-actions\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20class=\x22secret-edit\x22\x20title=\x22Edit\x20secret\x22\x20onclick=\x22openEditSecretModal(\x27'+Utils['escapeHtml'](_0x3f89f8['name'])+'\x27)\x22>✏️</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20class=\x22secret-delete\x22\x20title=\x22Delete\x20secret\x22\x20onclick=\x22openDeleteSecretModal(\x27'+Utils['escapeHtml'](_0x3f89f8['name'])+'\x27)\x22>🗑</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20';})['join']('');}function openAddSecretModal(){state['editingSecret']=null;const _0x18429b=document['getElementById']('secret-modal'),_0x1d75a6=document['getElementById']('secret-modal-title'),_0x59f917=document['getElementById']('secret-name'),_0x5764d4=document['getElementById']('secret-description'),_0x2f5e11=document['getElementById']('secret-type-file'),_0x2ca9a1=document['getElementById']('secret-type-value'),_0x63119c=document['getElementById']('secret-source'),_0x7832bc=document['getElementById']('secret-value'),_0x43e776=document['getElementById']('secret-modal-error'),_0x2e686f=document['getElementById']('secret-source-validation'),_0x4ba99e=document['getElementById']('secret-available-build'),_0x501d59=document['getElementById']('secret-available-tasks'),_0x583ffa=document['getElementById']('secret-available-deploy'),_0x1768e1=document['getElementById']('secret-expose-env'),_0x94064a=document['getElementById']('secret-expose-file'),_0x5227a9=document['getElementById']('secret-target');_0x1d75a6['textContent']='Add\x20Secret',_0x59f917['value']='',_0x59f917['disabled']=![],_0x5764d4['value']='',_0x2ca9a1['checked']=!![],_0x2f5e11['checked']=![],_0x63119c['value']='',resetSecretValueVisibility(''),_0x43e776['hidden']=!![],_0x2e686f['hidden']=!![];const _0x48c80c=document['getElementById']('secrets-filter'),_0x24eae0=_0x48c80c?.['value']||'all';_0x24eae0==='all'?(_0x4ba99e['checked']=![],_0x501d59['checked']=!![],_0x583ffa['checked']=![]):(_0x4ba99e['checked']=_0x24eae0==='build',_0x501d59['checked']=_0x24eae0==='tasks',_0x583ffa['checked']=_0x24eae0==='deploy');_0x1768e1['checked']=!![],_0x94064a['checked']=![],_0x5227a9['value']='',handleSecretTypeChange(),resetGitPatFields(),updateGitPatVisibility(),updateExposeAsVisibility(),updateSecretTargetLabel();const _0x5e4aac=document['getElementById']('secret-source-hint');_0x5e4aac&&state['selectedEnvData']?.['path']&&(_0x5e4aac['textContent']='Absolute\x20path,\x20or\x20relative\x20to:\x20'+state['selectedEnvData']['path']),_0x18429b['hidden']=![],_0x59f917['focus']();}window['openEditSecretModal']=async function(_0x53d055){state['editingSecret']=_0x53d055;const _0x53460c=state['secrets']['find'](_0x56fdec=>_0x56fdec['name']===_0x53d055);if(!_0x53460c){Utils['showError']('Secret\x20not\x20found');return;}const _0x5e408e=document['getElementById']('secret-modal'),_0x2e824c=document['getElementById']('secret-modal-title'),_0x22ba6f=document['getElementById']('secret-name'),_0x20a008=document['getElementById']('secret-description'),_0x21454f=document['getElementById']('secret-type-file'),_0x41f2e4=document['getElementById']('secret-type-value'),_0x31cad8=document['getElementById']('secret-source'),_0x4714ca=document['getElementById']('secret-value'),_0x1a9a6c=document['getElementById']('secret-modal-error'),_0x2665b6=document['getElementById']('secret-source-validation'),_0x19edf4=document['getElementById']('secret-available-build'),_0x68f4d8=document['getElementById']('secret-available-tasks'),_0x3b40d6=document['getElementById']('secret-available-deploy'),_0x4296b0=document['getElementById']('secret-expose-env'),_0x1710a2=document['getElementById']('secret-expose-file'),_0x3ac9e5=document['getElementById']('secret-target');_0x2e824c['textContent']='Edit\x20Secret',_0x22ba6f['value']=_0x53d055,_0x22ba6f['disabled']=!![],_0x20a008['value']=_0x53460c['description']||'';_0x53460c['type']==='file'?(_0x21454f['checked']=!![],_0x41f2e4['checked']=![],_0x31cad8['value']=_0x53460c['source']||'',resetSecretValueVisibility('')):(_0x41f2e4['checked']=!![],_0x21454f['checked']=![],_0x31cad8['value']='',resetSecretValueVisibility(_0x53460c['value']||''),_0x4714ca['placeholder']='Enter\x20secret\x20value');const _0x8d63e7=_0x53460c['available_for']||[];_0x19edf4['checked']=_0x8d63e7['includes']('build'),_0x68f4d8['checked']=_0x8d63e7['includes']('tasks'),_0x3b40d6['checked']=_0x8d63e7['includes']('deploy');_0x53460c['expose_as']==='file'?(_0x1710a2['checked']=!![],_0x4296b0['checked']=![]):(_0x4296b0['checked']=!![],_0x1710a2['checked']=![]);_0x3ac9e5['value']=_0x53460c['target']||'',setGitPatFields(_0x53460c['git_remote']),_0x1a9a6c['hidden']=!![],_0x2665b6['hidden']=!![],handleSecretTypeChange(),updateGitPatVisibility(),updateExposeAsVisibility(),updateSecretTargetLabel();const _0x4ba46c=document['getElementById']('secret-source-hint');_0x4ba46c&&state['selectedEnvData']?.['path']&&(_0x4ba46c['textContent']='Absolute\x20path,\x20or\x20relative\x20to:\x20'+state['selectedEnvData']['path']),_0x5e408e['hidden']=![];};function closeSecretModal(){document['getElementById']('secret-modal')['hidden']=!![],state['editingSecret']=null,document['getElementById']('secret-value')['placeholder']='Enter\x20secret\x20value\x20(e.g.,\x20SSH\x20private\x20key\x20content)',resetSecretValueVisibility('');}function handleSecretTypeChange(){const _0x3554a6=document['getElementById']('secret-type-file')['checked'];document['getElementById']('secret-source-row')['hidden']=!_0x3554a6,document['getElementById']('secret-value-row')['hidden']=_0x3554a6;}function updateExposeAsVisibility(){const _0x31017e=document['getElementById']('secret-available-tasks')['checked'],_0x2822bd=document['getElementById']('secret-available-deploy')['checked'],_0x1ad9f2=document['getElementById']('secret-git-pat-checkbox')['checked'],_0x407fe0=(_0x31017e||_0x2822bd)&&!_0x1ad9f2;document['getElementById']('secret-expose-as-row')['hidden']=!_0x407fe0,document['getElementById']('secret-target-row')['hidden']=!_0x407fe0;}function updateSecretTargetLabel(){const _0x837a8=document['getElementById']('secret-expose-file')['checked'],_0x6b4a76=document['getElementById']('secret-target-label'),_0x2b93b7=document['getElementById']('secret-target-hint'),_0xd161a=document['getElementById']('secret-target');_0x837a8?(_0x6b4a76['innerHTML']='Container\x20Path\x20<span\x20class=\x22required\x22>*</span>',_0x2b93b7['textContent']='Absolute\x20path\x20where\x20file\x20will\x20be\x20mounted\x20in\x20container',_0xd161a['placeholder']='e.g.,\x20/secrets/key.pem'):(_0x6b4a76['innerHTML']='Variable\x20Name\x20<span\x20class=\x22required\x22>*</span>',_0x2b93b7['textContent']='The\x20environment\x20variable\x20name',_0xd161a['placeholder']='e.g.,\x20SSH_PRIVATE_KEY');}function updateGitPatVisibility(){document['getElementById']('secret-git-pat-row')['hidden']=![];}function handleGitPatCheckboxChange(){const _0x3e5768=document['getElementById']('secret-git-pat-checkbox')['checked'],_0x555e6c=document['getElementById']('secret-git-host-row');_0x555e6c['hidden']=!_0x3e5768,!_0x3e5768&&(document['getElementById']('secret-git-custom-host-row')['hidden']=!![],document['getElementById']('secret-git-host')['value']='',document['getElementById']('secret-git-custom-host')['value']=''),updateExposeAsVisibility();}function handleGitHostChange(){const _0x9a3f4b=document['getElementById']('secret-git-host')['value'],_0x50df0b=document['getElementById']('secret-git-custom-host-row');_0x50df0b['hidden']=_0x9a3f4b!=='custom',_0x9a3f4b!=='custom'&&(document['getElementById']('secret-git-custom-host')['value']='');}function getGitRemoteValue(){const _0x52e934=document['getElementById']('secret-git-pat-checkbox')['checked'];if(!_0x52e934)return null;const _0x448cca=document['getElementById']('secret-git-host')['value'];if(!_0x448cca)return null;if(_0x448cca==='custom'){const _0x12d0a9=document['getElementById']('secret-git-custom-host')['value']['trim']();return _0x12d0a9||null;}return _0x448cca;}function setGitPatFields(_0x125981){const _0x215bec=document['getElementById']('secret-git-pat-checkbox'),_0x21935e=document['getElementById']('secret-git-host'),_0x259354=document['getElementById']('secret-git-custom-host'),_0xe7228c=document['getElementById']('secret-git-host-row'),_0x444f14=document['getElementById']('secret-git-custom-host-row');if(!_0x125981){_0x215bec['checked']=![],_0x21935e['value']='',_0x259354['value']='',_0xe7228c['hidden']=!![],_0x444f14['hidden']=!![];return;}_0x215bec['checked']=!![],_0xe7228c['hidden']=![];const _0x5369e5=['github.com','dev.azure.com','bitbucket.org','gitlab.com'];_0x5369e5['includes'](_0x125981['toLowerCase']())?(_0x21935e['value']=_0x125981['toLowerCase'](),_0x444f14['hidden']=!![],_0x259354['value']=''):(_0x21935e['value']='custom',_0x444f14['hidden']=![],_0x259354['value']=_0x125981);}function resetGitPatFields(){document['getElementById']('secret-git-pat-checkbox')['checked']=![],document['getElementById']('secret-git-host')['value']='',document['getElementById']('secret-git-custom-host')['value']='',document['getElementById']('secret-git-host-row')['hidden']=!![],document['getElementById']('secret-git-custom-host-row')['hidden']=!![];}async function validateSecretSourcePath(){const _0xb6d22c=document['getElementById']('secret-source'),_0x5688c3=document['getElementById']('secret-source-validation'),_0x28ff7e=_0xb6d22c['value']['trim']();if(!_0x28ff7e){_0x5688c3['hidden']=!![];return;}try{const _0x177184=await fetch('/environments/'+state['selectedEnv']+'/secrets/_validate/validate',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'source':_0x28ff7e})}),_0x2aeadf=await _0x177184['json']();if(_0x2aeadf['exists']&&_0x2aeadf['isFile'])_0x5688c3['className']='field-validation\x20valid',_0x5688c3['innerHTML']='✓\x20File\x20exists\x20('+formatBytes(_0x2aeadf['size'])+')';else _0x2aeadf['exists']&&!_0x2aeadf['isFile']?(_0x5688c3['className']='field-validation\x20warning',_0x5688c3['innerHTML']='⚠\x20Path\x20exists\x20but\x20is\x20not\x20a\x20file'):(_0x5688c3['className']='field-validation\x20warning',_0x5688c3['innerHTML']='⚠\x20File\x20not\x20found');_0x5688c3['hidden']=![];}catch(_0x3bee32){_0x5688c3['className']='field-validation\x20warning',_0x5688c3['innerHTML']='⚠\x20Could\x20not\x20validate\x20path',_0x5688c3['hidden']=![];}}function formatBytes(_0xea48ee){if(_0xea48ee===0x0)return'0\x20B';const _0x26b606=0x400,_0x30efe0=['B','KB','MB','GB'],_0x34280b=Math['floor'](Math['log'](_0xea48ee)/Math['log'](_0x26b606));return parseFloat((_0xea48ee/Math['pow'](_0x26b606,_0x34280b))['toFixed'](0x1))+'\x20'+_0x30efe0[_0x34280b];}function resetSecretValueVisibility(_0x3062f5){secretValueStore=_0x3062f5,secretValueVisible=![],lastCursorPosition=0x0;const _0x484f5d=document['getElementById']('secret-value'),_0x1d858a=document['querySelector']('.secret-toggle-visibility');_0x484f5d&&(_0x484f5d['value']=_0x3062f5?'•'['repeat'](_0x3062f5['length']):''),_0x1d858a&&(_0x1d858a['hidden']=![],_0x1d858a['querySelector']('.eye-open')['style']['display']='block',_0x1d858a['querySelector']('.eye-closed')['style']['display']='none');}function toggleSecretValueVisibility(){const _0x461fd7=document['getElementById']('secret-value'),_0x1b6cc4=document['querySelector']('.secret-toggle-visibility');secretValueVisible=!secretValueVisible,secretValueVisible?(_0x461fd7['value']=secretValueStore,_0x1b6cc4['querySelector']('.eye-open')['style']['display']='none',_0x1b6cc4['querySelector']('.eye-closed')['style']['display']='block'):(_0x461fd7['value']=secretValueStore?'•'['repeat'](secretValueStore['length']):'',_0x1b6cc4['querySelector']('.eye-open')['style']['display']='block',_0x1b6cc4['querySelector']('.eye-closed')['style']['display']='none');}function handleSecretValueBeforeInput(_0x356c10){if(!secretValueVisible){const _0x6440bf=_0x356c10['target'];lastCursorPosition=_0x6440bf['selectionStart'],_0x6440bf['dataset']['selectionEnd']=_0x6440bf['selectionEnd'];}}function handleSecretValueInput(_0xe901e3){const _0x5984b2=_0xe901e3['target'];if(secretValueVisible)secretValueStore=_0x5984b2['value'];else{const _0x300d39=_0xe901e3['inputType'],_0xaf275d=_0x5984b2['value'],_0x2393e5='•',_0x3edd33=_0x5984b2['selectionStart'],_0x2c5a51=_0xaf275d['replace'](new RegExp(_0x2393e5,'g'),''),_0x105f4f=secretValueStore['length'],_0x123b59=lastCursorPosition,_0x34f78a=parseInt(_0x5984b2['dataset']['selectionEnd']||_0x123b59),_0xd59cb9=_0x34f78a>_0x123b59;if(_0xaf275d==='')secretValueStore='',lastCursorPosition=0x0;else{if(_0x300d39&&_0x300d39['startsWith']('delete')){if(_0xd59cb9)secretValueStore=secretValueStore['slice'](0x0,_0x123b59)+secretValueStore['slice'](_0x34f78a),lastCursorPosition=_0x123b59;else{const _0x4c7f00=_0x105f4f-_0xaf275d['length'];_0x300d39==='deleteContentBackward'?secretValueStore=secretValueStore['slice'](0x0,_0x3edd33)+secretValueStore['slice'](_0x3edd33+_0x4c7f00):secretValueStore=secretValueStore['slice'](0x0,_0x3edd33)+secretValueStore['slice'](_0x3edd33+_0x4c7f00),lastCursorPosition=_0x3edd33;}}else{if(_0x2c5a51['length']>0x0){const _0x1e12ff=_0xaf275d['length']-_0x2c5a51['length'];if(_0x1e12ff===0x0)secretValueStore=_0x2c5a51,lastCursorPosition=_0x2c5a51['length'];else _0xd59cb9?(secretValueStore=secretValueStore['slice'](0x0,_0x123b59)+_0x2c5a51+secretValueStore['slice'](_0x34f78a),lastCursorPosition=_0x123b59+_0x2c5a51['length']):(secretValueStore=secretValueStore['slice'](0x0,_0x123b59)+_0x2c5a51+secretValueStore['slice'](_0x123b59),lastCursorPosition=_0x123b59+_0x2c5a51['length']);}else _0xaf275d['length']<_0x105f4f?(secretValueStore=secretValueStore['slice'](0x0,_0xaf275d['length']),lastCursorPosition=_0x3edd33):lastCursorPosition=_0x3edd33;}}const _0x18f807=_0x2393e5['repeat'](secretValueStore['length']);_0x5984b2['value']=_0x18f807,_0x5984b2['setSelectionRange'](lastCursorPosition,lastCursorPosition),delete _0x5984b2['dataset']['selectionEnd'];}}function handleSecretFileImport(_0x389a34){const _0x2048ac=_0x389a34['target']['files'][0x0];if(!_0x2048ac)return;const _0x299bb5=new FileReader();_0x299bb5['onload']=function(_0x39fef8){const _0x2f5b5f=_0x39fef8['target']['result'];document['getElementById']('secret-value')['value']=_0x2f5b5f,secretValueStore=_0x2f5b5f,secretValueVisible=!![];const _0x5a81b1=document['querySelector']('.secret-toggle-visibility');_0x5a81b1&&(_0x5a81b1['querySelector']('.eye-open')['style']['display']='none',_0x5a81b1['querySelector']('.eye-closed')['style']['display']='block');},_0x299bb5['onerror']=function(){Utils['showError']('Failed\x20to\x20read\x20file');},_0x299bb5['readAsText'](_0x2048ac),_0x389a34['target']['value']='';}async function saveSecret(){const _0x1398cb=document['getElementById']('secret-name'),_0x3e58b0=document['getElementById']('secret-description'),_0x18bca6=document['getElementById']('secret-type-file')['checked'],_0x29e09b=document['getElementById']('secret-source'),_0x2c8788=document['getElementById']('secret-value'),_0x4d931f=document['getElementById']('secret-modal-error'),_0x51e887=document['getElementById']('secret-available-build'),_0x468292=document['getElementById']('secret-available-tasks'),_0x237b35=document['getElementById']('secret-available-deploy'),_0x43ae09=document['getElementById']('secret-expose-file')['checked'],_0x339afc=document['getElementById']('secret-target'),_0x4db9d3=_0x1398cb['value']['trim'](),_0x44f34b=_0x3e58b0['value']['trim'](),_0x2fc564=_0x18bca6?'file':'value',_0x2f2157=_0x29e09b['value']['trim'](),_0x35f504=secretValueStore,_0x60eee5=_0x43ae09?'file':'env_var',_0x338008=_0x339afc['value']['trim'](),_0xbeea76=getGitRemoteValue(),_0x4572d2=document['getElementById']('secret-git-pat-checkbox')['checked'],_0x3e466d=[];if(_0x51e887['checked'])_0x3e466d['push']('build');if(_0x468292['checked'])_0x3e466d['push']('tasks');if(_0x237b35['checked'])_0x3e466d['push']('deploy');const _0x51e5c6=_0x468292['checked']||_0x237b35['checked'];_0x4d931f['hidden']=!![];if(!_0x4db9d3){_0x4d931f['textContent']='Secret\x20name\x20is\x20required',_0x4d931f['hidden']=![],_0x1398cb['focus']();return;}if(!/^[A-Za-z_][A-Za-z0-9_]*$/['test'](_0x4db9d3)){_0x4d931f['textContent']='Secret\x20name\x20must\x20start\x20with\x20a\x20letter\x20or\x20underscore,\x20and\x20contain\x20only\x20letters,\x20numbers,\x20and\x20underscores',_0x4d931f['hidden']=![],_0x1398cb['focus']();return;}if(_0x18bca6&&!_0x2f2157){_0x4d931f['textContent']='File\x20path\x20is\x20required\x20for\x20file-type\x20secrets',_0x4d931f['hidden']=![],_0x29e09b['focus']();return;}if(!_0x18bca6&&!_0x35f504){_0x4d931f['textContent']='Value\x20is\x20required\x20for\x20value-type\x20secrets',_0x4d931f['hidden']=![],_0x2c8788['focus']();return;}if(_0x3e466d['length']===0x0){_0x4d931f['textContent']='At\x20least\x20one\x20availability\x20option\x20must\x20be\x20selected\x20(Build,\x20Tasks,\x20or\x20Deploy)',_0x4d931f['hidden']=![];return;}if(_0x51e5c6&&!_0x4572d2){if(!_0x338008){_0x4d931f['textContent']=_0x60eee5==='env_var'?'Variable\x20name\x20is\x20required\x20when\x20available\x20for\x20Tasks\x20or\x20Deploy':'Container\x20path\x20is\x20required\x20when\x20available\x20for\x20Tasks\x20or\x20Deploy',_0x4d931f['hidden']=![],_0x339afc['focus']();return;}if(_0x60eee5==='env_var'&&!/^[A-Za-z_][A-Za-z0-9_]*$/['test'](_0x338008)){_0x4d931f['textContent']='Variable\x20name\x20must\x20start\x20with\x20a\x20letter\x20or\x20underscore,\x20and\x20contain\x20only\x20letters,\x20numbers,\x20and\x20underscores',_0x4d931f['hidden']=![],_0x339afc['focus']();return;}if(_0x60eee5==='file'&&!_0x338008['startsWith']('/')){_0x4d931f['textContent']='Container\x20path\x20must\x20be\x20an\x20absolute\x20path\x20(start\x20with\x20/)',_0x4d931f['hidden']=![],_0x339afc['focus']();return;}if(_0x60eee5==='file'&&!_0x18bca6){_0x4d931f['textContent']='Value-type\x20secrets\x20cannot\x20be\x20exposed\x20as\x20files.\x20Select\x20\x22File\x20on\x20host\x22\x20as\x20source\x20type\x20or\x20expose\x20as\x20\x22Environment\x20Variable\x22.',_0x4d931f['hidden']=![];return;}if(_0x60eee5==='env_var'&&_0x18bca6){_0x4d931f['textContent']='File-type\x20secrets\x20cannot\x20be\x20exposed\x20as\x20environment\x20variables.\x20Select\x20\x22Direct\x20value\x22\x20as\x20source\x20type\x20or\x20expose\x20as\x20\x22File\x20(bind\x20mount)\x22.',_0x4d931f['hidden']=![];return;}}if(_0x4572d2){const _0xd3273e=document['getElementById']('secret-git-host'),_0x1916f1=document['getElementById']('secret-git-custom-host'),_0x319e4c=_0xd3273e['value'];if(!_0x319e4c){_0x4d931f['textContent']='Please\x20select\x20a\x20Git\x20host\x20for\x20the\x20PAT',_0x4d931f['hidden']=![],_0xd3273e['focus']();return;}if(_0x319e4c==='custom'){const _0x557e77=_0x1916f1['value']['trim']();if(!_0x557e77){_0x4d931f['textContent']='Please\x20enter\x20a\x20custom\x20Git\x20hostname',_0x4d931f['hidden']=![],_0x1916f1['focus']();return;}if(!/^[a-zA-Z0-9]([a-zA-Z0-9\-\.]*[a-zA-Z0-9])?$/['test'](_0x557e77)){_0x4d931f['textContent']='Invalid\x20hostname\x20format.\x20Use\x20a\x20valid\x20hostname\x20like\x20\x22git.mycompany.com\x22',_0x4d931f['hidden']=![],_0x1916f1['focus']();return;}}}try{const _0xc4eb3c={'type':_0x2fc564,'description':_0x44f34b,'available_for':_0x3e466d,..._0x51e5c6&&!_0x4572d2?{'expose_as':_0x60eee5,'target':_0x338008}:{},..._0x18bca6?{'source':_0x2f2157}:{},...!_0x18bca6&&_0x35f504?{'value':_0x35f504}:{},'git_remote':_0xbeea76};state['editingSecret']?(await API['put']('/environments/'+state['selectedEnv']+'/secrets/'+_0x4db9d3,_0xc4eb3c),Utils['showSuccess']('Secret\x20\x22'+_0x4db9d3+'\x22\x20updated')):(_0xc4eb3c['secretName']=_0x4db9d3,await API['post']('/environments/'+state['selectedEnv']+'/secrets',_0xc4eb3c),Utils['showSuccess']('Secret\x20\x22'+_0x4db9d3+'\x22\x20created')),closeSecretModal(),await loadSecrets(),renderSecrets();}catch(_0x4c7657){_0x4d931f['textContent']=_0x4c7657['message']||'Failed\x20to\x20save\x20secret',_0x4d931f['hidden']=![];}}window['openDeleteSecretModal']=function(_0x508bdc){document['getElementById']('delete-secret-name')['textContent']=_0x508bdc,document['getElementById']('delete-secret-modal')['hidden']=![],document['getElementById']('delete-secret-modal')['dataset']['secretName']=_0x508bdc;};function closeDeleteSecretModal(){document['getElementById']('delete-secret-modal')['hidden']=!![];}async function confirmDeleteSecret(){const _0x2ff0cb=document['getElementById']('delete-secret-modal')['dataset']['secretName'];try{await API['delete']('/environments/'+state['selectedEnv']+'/secrets/'+_0x2ff0cb),Utils['showSuccess']('Secret\x20\x22'+_0x2ff0cb+'\x22\x20deleted'),closeDeleteSecretModal(),await loadSecrets(),renderSecrets();}catch(_0x50323f){Utils['showError'](_0x50323f['message']||'Failed\x20to\x20delete\x20secret'),closeDeleteSecretModal();}}function loadConnections(){if(!state['selectedEnvData'])return;!state['selectedEnvData']['external_connections']&&(state['selectedEnvData']['external_connections']=[]);}function renderConnections(){const _0x700264=document['getElementById']('connections-list'),_0x2a08bc=document['getElementById']('connections-empty');if(!_0x700264||!_0x2a08bc)return;const _0x5841a8=state['selectedEnvData']?.['external_connections']||[];if(_0x5841a8['length']===0x0){_0x700264['innerHTML']='',_0x700264['hidden']=!![],_0x2a08bc['hidden']=![];return;}_0x700264['hidden']=![],_0x2a08bc['hidden']=!![],_0x700264['innerHTML']=_0x5841a8['map'](_0x283b12=>{const _0x45ec52={'sqlserver':'SQL\x20Server','ibmi':'IBM\x20i','ssh':'SSH'},_0x27a397=_0x45ec52[_0x283b12['type']]||_0x283b12['type'],_0x5c6664=_0x283b12['type']==='ibmi'?_0x283b12['config']?.['features']||[]:[],_0x1cc4b2=_0x5c6664['map'](_0x375039=>'<span\x20class=\x22connection-feature-tag\x22>'+Utils['escapeHtml'](_0x375039)+'</span>')['join'](''),_0x13e850=_0x283b12['available_for']||[],_0x4fd0c4='\x0a\x20\x20\x20\x20\x20\x20<span\x20class=\x22secret-availability-badges\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20'+(_0x13e850['includes']('tasks')?'<span\x20class=\x22availability-badge\x20tasks\x22>Tasks</span>':'')+'\x0a\x20\x20\x20\x20\x20\x20\x20\x20'+(_0x13e850['includes']('deploy')?'<span\x20class=\x22availability-badge\x20deploy\x22>Deploy</span>':'')+'\x0a\x20\x20\x20\x20\x20\x20</span>';return'\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22connection-item\x22\x20data-connection-id=\x22'+Utils['escapeHtml'](_0x283b12['id'])+'\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22connection-info\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22connection-name\x22>'+Utils['escapeHtml'](_0x283b12['name'])+'</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22connection-meta\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20'+_0x4fd0c4+'\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22connection-type-badge\x20'+_0x283b12['type']+'\x22>'+_0x27a397+'</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20'+_0x1cc4b2+'\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20'+(_0x283b12['description']?'<span\x20class=\x22connection-description\x22>'+Utils['escapeHtml'](_0x283b12['description'])+'</span>':'')+'\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22connection-host\x22>'+Utils['escapeHtml'](_0x283b12['config']?.['host']||'')+'</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22connection-actions\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20class=\x22connection-edit\x22\x20title=\x22Edit\x20connection\x22\x20onclick=\x22openEditConnectionModal(\x27'+Utils['escapeHtml'](_0x283b12['id'])+'\x27)\x22>✏️</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20class=\x22connection-delete\x22\x20title=\x22Delete\x20connection\x22\x20onclick=\x22openDeleteConnectionModal(\x27'+Utils['escapeHtml'](_0x283b12['id'])+'\x27)\x22>🗑</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20</div>';})['join']('');}function openAddConnectionModal(){state['editingConnection']=null,document['getElementById']('connection-modal-title')['textContent']='Add\x20Connection',document['getElementById']('connection-name')['value']='',document['getElementById']('connection-description')['value']='',document['getElementById']('connection-host')['value']='',document['getElementById']('connection-verify-cert')['checked']=!![],document['getElementById']('connection-verify-cert-warning')['hidden']=!![],document['getElementById']('connection-database')['value']='',document['getElementById']('connection-user')['value']='',document['getElementById']('connection-password')['value']='',document['getElementById']('connection-password')['type']='password',resetPasswordToggleIcon(),resetSshKeyVisibility(''),document['getElementById']('connection-ssh-public-key')['value']='',document['getElementById']('connection-pui-base-url')['value']='',document['getElementById']('connection-pui-render-path')['value']='',document['getElementById']('connection-pui-launch-path')['value']='',document['getElementById']('connection-build-library-prefix')['value']='AITSK',document['getElementById']('connection-build-repo')['value']='',document['getElementById']('connection-build-path')['value']='',document['querySelectorAll']('input[name=\x22connection-type\x22]')['forEach'](_0x5e8bb6=>_0x5e8bb6['disabled']=![]),document['getElementById']('connection-type-sqlserver')['checked']=!![],document['getElementById']('feature-sql')['checked']=!![],document['getElementById']('feature-build')['checked']=![],document['getElementById']('feature-interactive')['checked']=![],document['getElementById']('feature-ssh')['checked']=![],document['getElementById']('feature-ssh')['disabled']=![],document['getElementById']('feature-sync')['checked']=![],document['getElementById']('connection-available-tasks')['checked']=!![],document['getElementById']('connection-available-deploy')['checked']=![];const _0x3f6013=document['getElementById']('connection-modal-error');_0x3f6013['hidden']=!![],_0x3f6013['textContent']='',clearConnectionTestResult(),updateConnectionFormVisibility(),document['getElementById']('connection-modal')['hidden']=![];}window['openEditConnectionModal']=function(_0x2a51bf){const _0x4ec6a6=state['selectedEnvData']?.['external_connections']||[],_0xa8473a=_0x4ec6a6['find'](_0x964c8c=>_0x964c8c['id']===_0x2a51bf);if(!_0xa8473a)return;state['editingConnection']=_0x2a51bf,document['getElementById']('connection-modal-title')['textContent']='Edit\x20Connection',document['getElementById']('connection-name')['value']=_0xa8473a['name']||'',document['getElementById']('connection-description')['value']=_0xa8473a['description']||'',document['getElementById']('connection-host')['value']=_0xa8473a['config']?.['host']||'';const _0x531974=_0xa8473a['config']?.['verify_db_server_certificate']!==![];document['getElementById']('connection-verify-cert')['checked']=_0x531974,document['getElementById']('connection-verify-cert-warning')['hidden']=_0x531974,document['getElementById']('connection-database')['value']=_0xa8473a['config']?.['database']||'',document['getElementById']('connection-user')['value']=_0xa8473a['config']?.['user']||'',document['getElementById']('connection-password')['value']=_0xa8473a['password']||'',document['getElementById']('connection-password')['type']='password',resetPasswordToggleIcon(),resetSshKeyVisibility(_0xa8473a['ssh_private_key']||''),document['getElementById']('connection-ssh-public-key')['value']=_0xa8473a['ssh_public_key']||'',document['getElementById']('connection-pui-base-url')['value']=_0xa8473a['config']?.['pui_base_url']||'',document['getElementById']('connection-pui-render-path')['value']=_0xa8473a['config']?.['pui_render_path']||'',document['getElementById']('connection-pui-launch-path')['value']=_0xa8473a['config']?.['pui_launch_path']||'',document['getElementById']('connection-build-library-prefix')['value']=_0xa8473a['config']?.['build_library_prefix']||'AITSK',populateBuildRepoSelect(_0xa8473a['config']?.['build_repo']||''),document['getElementById']('connection-build-path')['value']=_0xa8473a['config']?.['build_path']||'',document['querySelectorAll']('input[name=\x22connection-type\x22]')['forEach'](_0x4056bc=>{_0x4056bc['disabled']=!![],_0x4056bc['checked']=_0x4056bc['value']===_0xa8473a['type'];});if(_0xa8473a['type']==='ibmi'){const _0x4b9362=_0xa8473a['config']?.['features']||[];document['getElementById']('feature-sql')['checked']=_0x4b9362['includes']('sql'),document['getElementById']('feature-build')['checked']=_0x4b9362['includes']('build'),document['getElementById']('feature-interactive')['checked']=_0x4b9362['includes']('interactive'),document['getElementById']('feature-ssh')['checked']=_0x4b9362['includes']('ssh'),document['getElementById']('feature-sync')['checked']=_0x4b9362['includes']('sync'),_0x4b9362['includes']('sync')?document['getElementById']('feature-ssh')['disabled']=!![]:document['getElementById']('feature-ssh')['disabled']=![];}else document['getElementById']('feature-sql')['checked']=!![],document['getElementById']('feature-build')['checked']=![],document['getElementById']('feature-interactive')['checked']=![],document['getElementById']('feature-ssh')['checked']=![],document['getElementById']('feature-ssh')['disabled']=![],document['getElementById']('feature-sync')['checked']=![];const _0x1dad3f=_0xa8473a['available_for']||[];document['getElementById']('connection-available-tasks')['checked']=_0x1dad3f['includes']('tasks'),document['getElementById']('connection-available-deploy')['checked']=_0x1dad3f['includes']('deploy');const _0x48f076=document['getElementById']('connection-modal-error');_0x48f076['hidden']=!![],_0x48f076['textContent']='',clearConnectionTestResult(),updateConnectionFormVisibility(),document['getElementById']('connection-modal')['hidden']=![];};function isFullyQualifiedHostname(_0x17e080){if(!_0x17e080||typeof _0x17e080!=='string')return![];return/^[a-zA-Z0-9]([a-zA-Z0-9-]*[a-zA-Z0-9])?(\.[a-zA-Z0-9]([a-zA-Z0-9-]*[a-zA-Z0-9])?)+$/['test'](_0x17e080);}function syncHostToPuiBaseUrl(){const _0x4e7885=document['querySelector']('input[name=\x22connection-type\x22]:checked')?.['value'];if(_0x4e7885!=='ibmi')return;if(!document['getElementById']('feature-interactive')['checked'])return;const _0x48d5be=document['getElementById']('connection-host')['value']['trim'](),_0x2fcf2d=document['getElementById']('connection-pui-base-url'),_0x5b542d=_0x2fcf2d['value']['trim']();if(!_0x48d5be)return;if(!_0x5b542d)_0x2fcf2d['value']='https://'+_0x48d5be;else try{const _0x5cc242=new URL(_0x5b542d);_0x5cc242['hostname']=_0x48d5be,_0x2fcf2d['value']=_0x5cc242['origin'];}catch{}}function syncPuiBaseUrlToHost(){const _0x161926=document['querySelector']('input[name=\x22connection-type\x22]:checked')?.['value'];if(_0x161926!=='ibmi')return;const _0x29f3f3=document['getElementById']('connection-pui-base-url')['value']['trim']();if(!_0x29f3f3)return;try{const _0x31319b=new URL(_0x29f3f3),_0x23c095=_0x31319b['hostname'];_0x23c095&&(document['getElementById']('connection-host')['value']=_0x23c095);}catch{}}function populateBuildRepoSelect(_0x112470){const _0x26a40c=document['getElementById']('connection-build-repo'),_0xa87f88=state['selectedEnvData']?.['repos']||[];_0x26a40c['innerHTML']='<option\x20value=\x22\x22>—\x20Select\x20a\x20repo\x20—</option>'+_0xa87f88['map'](_0x6a6bed=>'<option\x20value=\x22'+Utils['escapeHtml'](_0x6a6bed['name'])+'\x22'+(_0x6a6bed['name']===_0x112470?'\x20selected':'')+'>'+Utils['escapeHtml'](_0x6a6bed['name'])+'</option>')['join']('');}function updateConnectionFormVisibility(){const _0x27b13c=document['querySelector']('input[name=\x22connection-type\x22]:checked')?.['value']||'sqlserver',_0x27fb49=_0x27b13c==='ibmi',_0x15527d=_0x27b13c==='ssh',_0x23b553=_0x27b13c==='sqlserver',_0x3da876=document['getElementById']('feature-sql')['checked'],_0x2499e4=document['getElementById']('feature-build')['checked'],_0x2773f6=document['getElementById']('feature-interactive')['checked'],_0x3e2a37=document['getElementById']('feature-ssh')['checked'],_0x5858de=document['getElementById']('feature-sync')['checked'],_0x369098=document['getElementById']('connection-available-tasks')['checked'];document['getElementById']('connection-database-row')['hidden']=!_0x23b553;const _0x42fd6e=_0x23b553||_0x27fb49&&_0x3da876;document['getElementById']('connection-verify-cert-row')['hidden']=!_0x42fd6e,document['getElementById']('connection-features-row')['hidden']=!_0x27fb49,document['getElementById']('connection-pui-settings')['hidden']=!(_0x27fb49&&_0x2773f6),document['getElementById']('connection-ssh-settings')['hidden']=!(_0x15527d||_0x27fb49&&(_0x3e2a37||_0x2499e4)),document['getElementById']('connection-password-row')['hidden']=!(_0x23b553||_0x27fb49&&(_0x3da876||_0x2773f6));const _0x20defa=document['getElementById']('connection-build-repo-row'),_0x3d5f7a=document['getElementById']('connection-build-path-row'),_0x4a6110=_0x27fb49&&_0x2499e4;_0x20defa['hidden']=!_0x4a6110,_0x3d5f7a['hidden']=!_0x4a6110;_0x4a6110&&populateBuildRepoSelect(document['getElementById']('connection-build-repo')['value']);const _0x41a528=document['getElementById']('connection-build-library-prefix-row'),_0x128373=_0x27fb49&&_0x2499e4&&_0x369098;_0x41a528['hidden']=!_0x128373;!_0x128373&&(document['getElementById']('connection-build-library-prefix')['value']=document['getElementById']('connection-build-library-prefix')['value']||'AITSK');document['getElementById']('connection-ibmi-helper-row')['hidden']=!_0x27fb49;const _0x240c10=_0x23b553||_0x27fb49&&_0x3da876,_0x4dd1ba=_0x27fb49&&(_0x3e2a37||_0x2499e4||_0x5858de)||_0x15527d;document['getElementById']('connection-test-row')['hidden']=!(_0x240c10||_0x4dd1ba),document['getElementById']('connection-test-sql-btn')['hidden']=!_0x240c10,document['getElementById']('connection-test-ssh-btn')['hidden']=!_0x4dd1ba;const _0x341158=document['getElementById']('connection-ssh-public-key')['value'];document['getElementById']('connection-install-key-row')['hidden']=!(_0x341158&&_0x341158!=='***');}function closeConnectionModal(){document['getElementById']('connection-modal')['hidden']=!![],state['editingConnection']=null;}function validateConnectionFrontend(_0x2a3e28,_0xf70588=[],_0x265248=null){const _0x49c28e=[],_0x25054d=['sqlserver','ibmi','ssh'],_0xbd07e2=['tasks','deploy'],_0x1c5a14=['sql','build','interactive','ssh','sync'],_0x27202c=['build','interactive'],_0x3987c3={'sync':['ssh']},_0x4d79ed=['sql','interactive'],_0x50c2c4=['build','ssh','sync'],_0x4e4a22=/^[A-Z@#$][A-Z@#$0-9_.]{0,4}$/;if(!_0x2a3e28['name']||typeof _0x2a3e28['name']!=='string')_0x49c28e['push']('Connection\x20name\x20is\x20required');else{if(!/^[a-zA-Z0-9_-]+$/['test'](_0x2a3e28['name']))_0x49c28e['push']('Connection\x20name\x20must\x20contain\x20only\x20letters,\x20numbers,\x20hyphens,\x20and\x20underscores');else{const _0x50a416=_0x2a3e28['name']['toLowerCase'](),_0x54d97d=_0xf70588['find'](_0x14fe0f=>_0x14fe0f['id']!==_0x265248&&_0x14fe0f['name']['toLowerCase']()===_0x50a416);_0x54d97d&&_0x49c28e['push']('Connection\x20name\x20\x22'+_0x2a3e28['name']+'\x22\x20is\x20already\x20in\x20use');}}if(!Array['isArray'](_0x2a3e28['available_for'])||_0x2a3e28['available_for']['length']===0x0)_0x49c28e['push']('At\x20least\x20one\x20availability\x20scope\x20is\x20required\x20(tasks,\x20deploy)');else _0x2a3e28['available_for']['some'](_0x736f38=>!_0xbd07e2['includes'](_0x736f38))&&_0x49c28e['push']('Available\x20scopes\x20must\x20be:\x20'+_0xbd07e2['join'](',\x20'));(!_0x2a3e28['type']||!_0x25054d['includes'](_0x2a3e28['type']))&&_0x49c28e['push']('Connection\x20type\x20must\x20be\x20one\x20of:\x20'+_0x25054d['join'](',\x20'));if(_0x2a3e28['type']==='sqlserver'){if(!_0x2a3e28['config']?.['host'])_0x49c28e['push']('Host\x20is\x20required\x20for\x20SQL\x20Server');else!isFullyQualifiedHostname(_0x2a3e28['config']['host'])&&_0x49c28e['push']('Host\x20must\x20be\x20a\x20fully\x20qualified\x20hostname\x20(e.g.\x20myserver.mycompany.com)');if(!_0x2a3e28['config']?.['database'])_0x49c28e['push']('Database\x20is\x20required\x20for\x20SQL\x20Server');if(!_0x2a3e28['config']?.['user'])_0x49c28e['push']('User\x20is\x20required\x20for\x20SQL\x20Server');if(!_0x2a3e28['password'])_0x49c28e['push']('Password\x20is\x20required\x20for\x20SQL\x20Server');}else{if(_0x2a3e28['type']==='ibmi'){if(!_0x2a3e28['config']?.['host'])_0x49c28e['push']('Host\x20is\x20required\x20for\x20IBM\x20i');else!isFullyQualifiedHostname(_0x2a3e28['config']['host'])&&_0x49c28e['push']('Host\x20must\x20be\x20a\x20fully\x20qualified\x20hostname\x20(e.g.\x20myserver.mycompany.com)');if(!_0x2a3e28['config']?.['user'])_0x49c28e['push']('User\x20is\x20required\x20for\x20IBM\x20i');const _0x15c80e=_0x2a3e28['config']?.['features']||[];_0x15c80e['some'](_0xef8885=>_0x4d79ed['includes'](_0xef8885))&&!_0x2a3e28['password']&&_0x49c28e['push']('Password\x20is\x20required\x20for\x20IBM\x20i\x20SQL\x20and\x20Interactive\x20features');if(!Array['isArray'](_0x15c80e)||_0x15c80e['length']===0x0)_0x49c28e['push']('At\x20least\x20one\x20IBM\x20i\x20feature\x20is\x20required');else{const _0x2ba29f=_0x15c80e['filter'](_0x3c4b6b=>!_0x1c5a14['includes'](_0x3c4b6b));_0x2ba29f['length']>0x0&&_0x49c28e['push']('Invalid\x20IBM\x20i\x20features:\x20'+_0x2ba29f['join'](',\x20'));for(const [_0x58e220,_0x2ca24a]of Object['entries'](_0x3987c3)){if(_0x15c80e['includes'](_0x58e220))for(const _0x105f77 of _0x2ca24a){!_0x15c80e['includes'](_0x105f77)&&_0x49c28e['push']('IBM\x20i\x20feature\x20\x22'+_0x58e220+'\x22\x20requires\x20\x22'+_0x105f77+'\x22');}}if(_0x15c80e['includes']('build')){!_0x2a3e28['config']?.['build_repo']&&_0x49c28e['push']('Build\x20repo\x20is\x20required\x20when\x20Build\x20feature\x20is\x20selected');const _0x33dd5a=_0x2a3e28['config']?.['build_path'];if(_0x33dd5a){const _0x578ce5=_0x33dd5a['split']('/');_0x578ce5['some'](_0x5d2abb=>_0x5d2abb==='.'||_0x5d2abb==='..')&&_0x49c28e['push']('Build\x20directory\x20must\x20not\x20contain\x20\x22.\x22\x20or\x20\x22..\x22\x20segments');}}if(_0x15c80e['includes']('build')&&_0x2a3e28['available_for']?.['includes']('tasks')){const _0x12f0e9=_0x2a3e28['config']?.['build_library_prefix'];if(!_0x12f0e9)_0x49c28e['push']('Build\x20library\x20prefix\x20is\x20required\x20when\x20Build\x20feature\x20is\x20used\x20with\x20Tasks\x20scope');else!_0x4e4a22['test'](_0x12f0e9)&&_0x49c28e['push']('Build\x20library\x20prefix\x20must\x20be\x201-5\x20characters:\x20first\x20character\x20A-Z,\x20@,\x20#,\x20or\x20$;\x20remaining\x20characters\x20A-Z,\x20@,\x20#,\x20$,\x200-9,\x20_,\x20or\x20.');}_0x15c80e['some'](_0x13c871=>_0x50c2c4['includes'](_0x13c871))&&!_0x2a3e28['ssh_private_key']&&_0x49c28e['push']('SSH\x20private\x20key\x20is\x20required\x20for\x20this\x20connection\x20type');_0x15c80e['includes']('interactive')&&!(_0x2a3e28['available_for']||[])['includes']('tasks')&&_0x49c28e['push']('Interactive\x20feature\x20requires\x20Tasks\x20availability\x20scope');if(_0x15c80e['includes']('interactive')){if(!_0x2a3e28['config']?.['pui_base_url'])_0x49c28e['push']('PUI\x20Base\x20URL\x20is\x20required\x20when\x20Interactive\x20feature\x20is\x20selected');else{if(_0x2a3e28['config']?.['host'])try{const _0x5a0a8a=new URL(_0x2a3e28['config']['pui_base_url'])['hostname'];_0x5a0a8a&&_0x5a0a8a!==_0x2a3e28['config']['host']&&_0x49c28e['push']('PUI\x20Base\x20URL\x20hostname\x20\x22'+_0x5a0a8a+'\x22\x20must\x20match\x20the\x20connection\x20host\x20\x22'+_0x2a3e28['config']['host']+'\x22');}catch{_0x49c28e['push']('PUI\x20Base\x20URL\x20must\x20be\x20a\x20valid\x20URL\x20(e.g.\x20https://myibmi.mycompany.com:8080)');}}}const _0x40b3d0=_0x15c80e['some'](_0x422144=>_0x27202c['includes'](_0x422144));if(_0x40b3d0&&Array['isArray'](_0x2a3e28['available_for'])){const _0x1d8b6f=_0xf70588['filter'](_0x24a527=>_0x24a527['id']!==_0x265248&&_0x24a527['type']==='ibmi'&&(_0x24a527['config']?.['features']||[])['some'](_0xe8139b=>_0x27202c['includes'](_0xe8139b)));for(const _0x42f048 of _0x1d8b6f){const _0x5631e5=_0x2a3e28['available_for']['filter'](_0x9c47d5=>(_0x42f048['available_for']||[])['includes'](_0x9c47d5));if(_0x5631e5['length']>0x0){_0x49c28e['push']('Only\x20one\x20IBM\x20i\x20connection\x20with\x20build/interactive\x20features\x20is\x20allowed\x20per\x20scope.\x20'+('Connection\x20\x22'+_0x42f048['name']+'\x22\x20already\x20has\x20build/interactive\x20in\x20scope:\x20'+_0x5631e5['join'](',\x20')));break;}}}}}else{if(_0x2a3e28['type']==='ssh'){if(!_0x2a3e28['config']?.['host'])_0x49c28e['push']('Host\x20is\x20required\x20for\x20SSH');else!isFullyQualifiedHostname(_0x2a3e28['config']['host'])&&_0x49c28e['push']('Host\x20must\x20be\x20a\x20fully\x20qualified\x20hostname\x20(e.g.\x20myserver.mycompany.com)');if(!_0x2a3e28['config']?.['user'])_0x49c28e['push']('User\x20is\x20required\x20for\x20SSH');!_0x2a3e28['ssh_private_key']&&_0x49c28e['push']('SSH\x20private\x20key\x20is\x20required\x20for\x20SSH\x20connections');}}}return{'valid':_0x49c28e['length']===0x0,'errors':_0x49c28e};}async function saveConnection(){const _0x17693e=document['getElementById']('connection-modal-error');_0x17693e['hidden']=!![];const _0x3d26af=document['querySelector']('input[name=\x22connection-type\x22]:checked')?.['value'],_0x2f16ad=document['getElementById']('connection-name')['value']['trim'](),_0x437955=document['getElementById']('connection-description')['value']['trim'](),_0x3b0a69=document['getElementById']('connection-host')['value']['trim'](),_0x5e3efc=document['getElementById']('connection-user')['value']['trim'](),_0x1f12c0=[];if(document['getElementById']('connection-available-tasks')['checked'])_0x1f12c0['push']('tasks');if(document['getElementById']('connection-available-deploy')['checked'])_0x1f12c0['push']('deploy');const _0x5a954e={'host':_0x3b0a69,'user':_0x5e3efc};if(_0x3d26af==='sqlserver')_0x5a954e['database']=document['getElementById']('connection-database')['value']['trim'](),!document['getElementById']('connection-verify-cert')['checked']&&(_0x5a954e['verify_db_server_certificate']=![]);else{if(_0x3d26af==='ibmi'){const _0x1bf4b9=[];if(document['getElementById']('feature-sql')['checked'])_0x1bf4b9['push']('sql');if(document['getElementById']('feature-build')['checked'])_0x1bf4b9['push']('build');if(document['getElementById']('feature-interactive')['checked'])_0x1bf4b9['push']('interactive');if(document['getElementById']('feature-ssh')['checked']||document['getElementById']('feature-ssh')['disabled'])_0x1bf4b9['push']('ssh');if(document['getElementById']('feature-sync')['checked'])_0x1bf4b9['push']('sync');_0x5a954e['features']=_0x1bf4b9;_0x1bf4b9['includes']('sql')&&!document['getElementById']('connection-verify-cert')['checked']&&(_0x5a954e['verify_db_server_certificate']=![]);if(_0x1bf4b9['includes']('interactive')){_0x5a954e['pui_base_url']=document['getElementById']('connection-pui-base-url')['value']['trim']();const _0xfe4735=document['getElementById']('connection-pui-render-path')['value']['trim'](),_0x4ae019=document['getElementById']('connection-pui-launch-path')['value']['trim']();if(_0xfe4735)_0x5a954e['pui_render_path']=_0xfe4735;if(_0x4ae019)_0x5a954e['pui_launch_path']=_0x4ae019;}if(_0x1bf4b9['includes']('build')){const _0x9e3847=document['getElementById']('connection-build-repo')['value'];if(!_0x9e3847){_0x17693e['textContent']='Build\x20repo\x20is\x20required\x20when\x20Build\x20feature\x20is\x20selected',_0x17693e['hidden']=![];return;}_0x5a954e['build_repo']=_0x9e3847;let _0x55d995=document['getElementById']('connection-build-path')['value']['trim']();_0x55d995=_0x55d995['replace'](/^\/+/,'');if(_0x55d995){const _0x2f2ac2=_0x55d995['split']('/');if(_0x2f2ac2['some'](_0x5e712e=>_0x5e712e==='.'||_0x5e712e==='..')){_0x17693e['textContent']='Build\x20directory\x20must\x20not\x20contain\x20\x22.\x22\x20or\x20\x22..\x22\x20segments',_0x17693e['hidden']=![];return;}_0x5a954e['build_path']=_0x55d995;}}if(_0x1bf4b9['includes']('build')&&_0x1f12c0['includes']('tasks')){let _0xf91649=document['getElementById']('connection-build-library-prefix')['value']['trim']()['toUpperCase']();document['getElementById']('connection-build-library-prefix')['value']=_0xf91649;if(!_0xf91649){_0x17693e['textContent']='Build\x20library\x20prefix\x20is\x20required',_0x17693e['hidden']=![];return;}if(!/^[A-Z@#$][A-Z@#$0-9_.]{0,4}$/['test'](_0xf91649)){_0x17693e['textContent']='Build\x20library\x20prefix\x20must\x20be\x201-5\x20characters:\x20first\x20character\x20A-Z,\x20@,\x20#,\x20$;\x20remaining\x20A-Z,\x20@,\x20#,\x20$,\x200-9,\x20_,\x20.',_0x17693e['hidden']=![];return;}_0x5a954e['build_library_prefix']=_0xf91649;}}}const _0x1c2234={'name':_0x2f16ad,'type':_0x3d26af,'description':_0x437955,'available_for':_0x1f12c0,'config':_0x5a954e};state['editingConnection']?_0x1c2234['id']=state['editingConnection']:_0x1c2234['id']=crypto['randomUUID']();const _0x553e4e=document['getElementById']('connection-password')['value'];if(_0x553e4e)_0x1c2234['password']=_0x553e4e;if(sshKeyValueStore)_0x1c2234['ssh_private_key']=sshKeyValueStore;const _0x3f9ee9=document['getElementById']('connection-ssh-public-key')['value'];if(_0x3f9ee9)_0x1c2234['ssh_public_key']=_0x3f9ee9;const _0x34cc7a=state['selectedEnvData']?.['external_connections']||[],_0x2029a1=validateConnectionFrontend(_0x1c2234,_0x34cc7a,state['editingConnection']);if(!_0x2029a1['valid']){_0x17693e['textContent']=_0x2029a1['errors'][0x0],_0x17693e['hidden']=![];return;}if(state['editingConnection']){const _0x418c06=_0x34cc7a['findIndex'](_0xfeec95=>_0xfeec95['id']===state['editingConnection']);_0x418c06>=0x0&&(_0x34cc7a[_0x418c06]=_0x1c2234);}else _0x34cc7a['push'](_0x1c2234);state['selectedEnvData']['external_connections']=_0x34cc7a,Utils['showSuccess']('Connection\x20\x22'+_0x2f16ad+'\x22\x20'+(state['editingConnection']?'updated':'added')+'\x20(click\x20Save\x20to\x20persist\x20changes)'),closeConnectionModal(),renderConnections(),markAsModified();const _0x13d639=getRequiredSkillsForConnection(_0x1c2234);_0x13d639['length']>0x0&&await autoImportConnectionSkills(_0x13d639);}window['openDeleteConnectionModal']=function(_0x3ea177){const _0x5553e5=state['selectedEnvData']?.['external_connections']||[],_0x5df976=_0x5553e5['find'](_0x50b28c=>_0x50b28c['id']===_0x3ea177);if(!_0x5df976)return;document['getElementById']('delete-connection-name')['textContent']=_0x5df976['name']+'\x20('+_0x5df976['type']+')',document['getElementById']('delete-connection-modal')['dataset']['connectionId']=_0x3ea177,document['getElementById']('delete-connection-modal')['hidden']=![];};function closeDeleteConnectionModal(){document['getElementById']('delete-connection-modal')['hidden']=!![];}function confirmDeleteConnection(){const _0x3586f1=document['getElementById']('delete-connection-modal')['dataset']['connectionId'],_0x3ca7dc=state['selectedEnvData']?.['external_connections']||[];state['selectedEnvData']['external_connections']=_0x3ca7dc['filter'](_0x86078d=>_0x86078d['id']!==_0x3586f1),Utils['showSuccess']('Connection\x20removed\x20(click\x20Save\x20to\x20persist\x20changes)'),closeDeleteConnectionModal(),renderConnections(),markAsModified();}function openIbmiHelperDialog(){const _0x32ddf6=document['getElementById']('connection-user')['value']['trim']()||'{USER}',_0x57d86f=_0x32ddf6['toUpperCase'](),_0x1fda9b=_0x32ddf6['toLowerCase'](),_0xf9ca51=document['getElementById']('connection-password')['value'],_0x500f7d=_0xf9ca51&&_0xf9ca51!=='***'?_0xf9ca51:'',_0x46e252=['CRTUSRPRF\x20USRPRF('+_0x57d86f+')\x20PASSWORD('+_0x500f7d+')\x20USRCLS(*USER)\x20INLMNU(*SIGNOFF)\x20LMTCPB(*YES)\x20TEXT(\x27CoderFlow\x20service\x20account\x27)\x20SPCAUT(*NONE)\x20JOBD(JOB_DESCRIPTION)','CRTDIR\x20DIR(\x27/home/'+_0x1fda9b+'\x27)','CHGOWN\x20OBJ(\x27/home/'+_0x1fda9b+'\x27)\x20NEWOWN('+_0x57d86f+')','QSH\x20CMD(\x27chmod\x20755\x20/home/'+_0x1fda9b+'\x27)'],_0xc31881=document['getElementById']('ibmi-helper-commands');_0xc31881['innerHTML']='',_0x46e252['forEach'](_0x397de6=>{const _0x2249c6=document['createElement']('div');_0x2249c6['className']='command-line';const _0x1c30d4=document['createElement']('code');_0x1c30d4['textContent']=_0x397de6;const _0x2a4b34=document['createElement']('button');_0x2a4b34['type']='button',_0x2a4b34['className']='btn-icon\x20copy-btn',_0x2a4b34['title']='Copy',_0x2a4b34['innerHTML']='<svg\x20width=\x2214\x22\x20height=\x2214\x22\x20viewBox=\x220\x200\x2024\x2024\x22\x20fill=\x22none\x22\x20stroke=\x22currentColor\x22\x20stroke-width=\x222\x22><rect\x20x=\x229\x22\x20y=\x229\x22\x20width=\x2213\x22\x20height=\x2213\x22\x20rx=\x222\x22/><path\x20d=\x22M5\x2015H4a2\x202\x200\x2001-2-2V4a2\x202\x200\x20012-2h9a2\x202\x200\x20012\x202v1\x22/></svg>',_0x2a4b34['addEventListener']('click',()=>{navigator['clipboard']['writeText'](_0x397de6)['then'](()=>{_0x2a4b34['innerHTML']='<svg\x20width=\x2214\x22\x20height=\x2214\x22\x20viewBox=\x220\x200\x2024\x2024\x22\x20fill=\x22none\x22\x20stroke=\x22currentColor\x22\x20stroke-width=\x222\x22><path\x20d=\x22M20\x206L9\x2017l-5-5\x22/></svg>',setTimeout(()=>{_0x2a4b34['innerHTML']='<svg\x20width=\x2214\x22\x20height=\x2214\x22\x20viewBox=\x220\x200\x2024\x2024\x22\x20fill=\x22none\x22\x20stroke=\x22currentColor\x22\x20stroke-width=\x222\x22><rect\x20x=\x229\x22\x20y=\x229\x22\x20width=\x2213\x22\x20height=\x2213\x22\x20rx=\x222\x22/><path\x20d=\x22M5\x2015H4a2\x202\x200\x2001-2-2V4a2\x202\x200\x20012-2h9a2\x202\x200\x20012\x202v1\x22/></svg>';},0x5dc);});}),_0x2249c6['appendChild'](_0x1c30d4),_0x2249c6['appendChild'](_0x2a4b34),_0xc31881['appendChild'](_0x2249c6);}),document['getElementById']('ibmi-helper-modal')['hidden']=![];}function resetPasswordToggleIcon(){const _0x4d4290=document['getElementById']('connection-password-toggle');_0x4d4290['querySelector']('.eye-open')['style']['display']='',_0x4d4290['querySelector']('.eye-closed')['style']['display']='none';}function toggleConnectionPasswordVisibility(){const _0x1b2d77=document['getElementById']('connection-password'),_0x4ecd1f=document['getElementById']('connection-password-toggle'),_0x17b635=_0x1b2d77['type']==='password';_0x1b2d77['type']=_0x17b635?'text':'password',_0x4ecd1f['querySelector']('.eye-open')['style']['display']=_0x17b635?'none':'',_0x4ecd1f['querySelector']('.eye-closed')['style']['display']=_0x17b635?'':'none';}function resetSshKeyVisibility(_0x19ce85){sshKeyValueStore=_0x19ce85,sshKeyValueVisible=![],sshKeyLastCursorPosition=0x0;const _0x34f1db=document['getElementById']('connection-ssh-private-key'),_0x3fd8a8=document['querySelector']('.connection-ssh-key-toggle');_0x34f1db&&(_0x34f1db['value']=_0x19ce85?'•'['repeat'](_0x19ce85['length']):''),_0x3fd8a8&&(_0x3fd8a8['hidden']=![],_0x3fd8a8['querySelector']('.eye-open')['style']['display']='block',_0x3fd8a8['querySelector']('.eye-closed')['style']['display']='none');}function toggleSshKeyVisibility(){const _0x3f3387=document['getElementById']('connection-ssh-private-key'),_0x50284d=document['querySelector']('.connection-ssh-key-toggle');sshKeyValueVisible=!sshKeyValueVisible,sshKeyValueVisible?(_0x3f3387['value']=sshKeyValueStore,_0x50284d['querySelector']('.eye-open')['style']['display']='none',_0x50284d['querySelector']('.eye-closed')['style']['display']='block'):(_0x3f3387['value']=sshKeyValueStore?'•'['repeat'](sshKeyValueStore['length']):'',_0x50284d['querySelector']('.eye-open')['style']['display']='block',_0x50284d['querySelector']('.eye-closed')['style']['display']='none');}function handleSshKeyBeforeInput(_0x3d8ab9){if(!sshKeyValueVisible){const _0x2e160c=_0x3d8ab9['target'];sshKeyLastCursorPosition=_0x2e160c['selectionStart'],_0x2e160c['dataset']['selectionEnd']=_0x2e160c['selectionEnd'];}}function handleSshKeyInput(_0xea7316){const _0x1a0b0c=_0xea7316['target'];if(sshKeyValueVisible)sshKeyValueStore=_0x1a0b0c['value'];else{const _0x5c5c86=_0xea7316['inputType'],_0x438628=_0x1a0b0c['value'],_0x2b44c8='•',_0x337fea=_0x1a0b0c['selectionStart'],_0x127f66=_0x438628['replace'](new RegExp(_0x2b44c8,'g'),''),_0x316763=sshKeyValueStore['length'],_0x1aa1a2=sshKeyLastCursorPosition,_0x336d00=parseInt(_0x1a0b0c['dataset']['selectionEnd']||_0x1aa1a2),_0x2584e3=_0x336d00>_0x1aa1a2;if(_0x438628==='')sshKeyValueStore='',sshKeyLastCursorPosition=0x0;else{if(_0x5c5c86&&_0x5c5c86['startsWith']('delete')){if(_0x2584e3)sshKeyValueStore=sshKeyValueStore['slice'](0x0,_0x1aa1a2)+sshKeyValueStore['slice'](_0x336d00),sshKeyLastCursorPosition=_0x1aa1a2;else{const _0x5b384a=_0x316763-_0x438628['length'];_0x5c5c86==='deleteContentBackward'?sshKeyValueStore=sshKeyValueStore['slice'](0x0,_0x337fea)+sshKeyValueStore['slice'](_0x337fea+_0x5b384a):sshKeyValueStore=sshKeyValueStore['slice'](0x0,_0x337fea)+sshKeyValueStore['slice'](_0x337fea+_0x5b384a),sshKeyLastCursorPosition=_0x337fea;}}else{if(_0x127f66['length']>0x0){const _0x38ce8a=_0x438628['length']-_0x127f66['length'];if(_0x38ce8a===0x0)sshKeyValueStore=_0x127f66,sshKeyLastCursorPosition=_0x127f66['length'];else _0x2584e3?(sshKeyValueStore=sshKeyValueStore['slice'](0x0,_0x1aa1a2)+_0x127f66+sshKeyValueStore['slice'](_0x336d00),sshKeyLastCursorPosition=_0x1aa1a2+_0x127f66['length']):(sshKeyValueStore=sshKeyValueStore['slice'](0x0,_0x1aa1a2)+_0x127f66+sshKeyValueStore['slice'](_0x1aa1a2),sshKeyLastCursorPosition=_0x1aa1a2+_0x127f66['length']);}else _0x438628['length']<_0x316763?(sshKeyValueStore=sshKeyValueStore['slice'](0x0,_0x438628['length']),sshKeyLastCursorPosition=_0x337fea):sshKeyLastCursorPosition=_0x337fea;}}const _0x4f087d=_0x2b44c8['repeat'](sshKeyValueStore['length']);_0x1a0b0c['value']=_0x4f087d,_0x1a0b0c['setSelectionRange'](sshKeyLastCursorPosition,sshKeyLastCursorPosition),delete _0x1a0b0c['dataset']['selectionEnd'];}}function handleSshKeyFileImport(_0x592ed9){const _0x3ae558=_0x592ed9['target']['files'][0x0];if(!_0x3ae558)return;const _0xcb77e0=new FileReader();_0xcb77e0['onload']=function(_0x55a692){const _0x4912b=_0x55a692['target']['result'];sshKeyValueStore=_0x4912b,sshKeyValueVisible=!![],document['getElementById']('connection-ssh-private-key')['value']=_0x4912b;const _0xdb2e14=document['querySelector']('.connection-ssh-key-toggle');_0xdb2e14&&(_0xdb2e14['querySelector']('.eye-open')['style']['display']='none',_0xdb2e14['querySelector']('.eye-closed')['style']['display']='block');},_0xcb77e0['onerror']=function(){Utils['showError']('Failed\x20to\x20read\x20file');},_0xcb77e0['readAsText'](_0x3ae558),_0x592ed9['target']['value']='';}function handleSshPubKeyFileImport(_0x599bda){const _0x1d376e=_0x599bda['target']['files'][0x0];if(!_0x1d376e)return;const _0x3c1499=new FileReader();_0x3c1499['onload']=function(_0x56f448){document['getElementById']('connection-ssh-public-key')['value']=_0x56f448['target']['result'],updateConnectionFormVisibility();},_0x3c1499['onerror']=function(){Utils['showError']('Failed\x20to\x20read\x20file');},_0x3c1499['readAsText'](_0x1d376e),_0x599bda['target']['value']='';}async function generateKeypair(){try{const _0x52cd50=await API['post']('/environments/'+state['selectedEnv']+'/connections/generate-keypair');sshKeyValueStore=_0x52cd50['privateKey'],sshKeyValueVisible=!![],document['getElementById']('connection-ssh-private-key')['value']=_0x52cd50['privateKey'];const _0x25d210=document['querySelector']('.connection-ssh-key-toggle');_0x25d210&&(_0x25d210['querySelector']('.eye-open')['style']['display']='none',_0x25d210['querySelector']('.eye-closed')['style']['display']='block'),document['getElementById']('connection-ssh-public-key')['value']=_0x52cd50['publicKey'],updateConnectionFormVisibility(),Utils['showSuccess']('SSH\x20keypair\x20generated');}catch(_0x330b1c){Utils['showError'](_0x330b1c['message']||'Failed\x20to\x20generate\x20keypair');}}function showConnectionTestResult(_0x461a52,_0x442a81,_0x59f647){const _0x4d5641=document['getElementById']('connection-test-spinner'),_0x44813b=document['getElementById']('connection-test-result');_0x4d5641['hidden']=!![];let _0x22a2f0='<div\x20class=\x22test-result-title\x22>'+Utils['escapeHtml'](_0x442a81)+'</div>';_0x59f647&&(_0x22a2f0+='<div\x20class=\x22test-result-detail\x22>'+Utils['escapeHtml'](_0x59f647)+'</div>'),_0x44813b['innerHTML']=_0x22a2f0,_0x44813b['className']='connection-test-result\x20'+(_0x461a52?'success':'error'),_0x44813b['hidden']=![];}function clearConnectionTestResult(){document['getElementById']('connection-test-spinner')['hidden']=!![];const _0x4efe69=document['getElementById']('connection-test-result');_0x4efe69['hidden']=!![],_0x4efe69['innerHTML']='',_0x4efe69['className']='connection-test-result';}async function testConnection(_0x38b78e){const _0x1347a7=state['editingConnection']||'_unsaved',_0x26483d=document['getElementById']('connection-test-spinner');clearConnectionTestResult(),_0x26483d['hidden']=![];try{const _0x377d8c=document['querySelector']('input[name=\x22connection-type\x22]:checked')?.['value'],_0x117645={'testType':_0x38b78e,'type':_0x377d8c,'host':document['getElementById']('connection-host')['value']['trim'](),'user':document['getElementById']('connection-user')['value']['trim']()};_0x377d8c==='ibmi'&&(_0x117645['features']=['sql','build','ssh','sync']['filter'](_0x5f0285=>document['getElementById']('feature-'+_0x5f0285)['checked']));_0x38b78e==='sql'?(_0x117645['password']=document['getElementById']('connection-password')['value'],_0x117645['database']=document['getElementById']('connection-database')['value']['trim'](),!document['getElementById']('connection-verify-cert')['checked']&&(_0x117645['verify_db_server_certificate']=![])):_0x117645['ssh_private_key']=sshKeyValueStore;const _0x5d871b=await API['post']('/environments/'+state['selectedEnv']+'/connections/'+_0x1347a7+'/test',_0x117645);showConnectionTestResult(!![],_0x5d871b['message']||'Connection\x20successful');}catch(_0x5b103c){showConnectionTestResult(![],_0x5b103c['message']||'Connection\x20failed',_0x5b103c['detail']);}}function openInstallKeyModal(){const _0xbc4991=document['getElementById']('connection-host')['value']['trim'](),_0x5ee23b=document['getElementById']('connection-user')['value']['trim'](),_0x1be989=document['getElementById']('connection-ssh-public-key')['value']['trim']();if(!_0xbc4991||!_0x5ee23b){showConnectionTestResult(![],'Host\x20and\x20user\x20are\x20required\x20to\x20install\x20the\x20public\x20key');return;}if(!_0x1be989||_0x1be989==='***'){showConnectionTestResult(![],'A\x20public\x20key\x20is\x20required\x20to\x20install');return;}const _0x5d77fe=document['getElementById']('connection-password')['value'],_0x189ad1=document['getElementById']('connection-password-row'),_0x5e1249=document['getElementById']('install-key-password');_0x5e1249['value']=!_0x189ad1['hidden']&&_0x5d77fe&&_0x5d77fe!=='***'?_0x5d77fe:'',_0x5e1249['type']='password';const _0x23a5b4=document['getElementById']('install-key-password-toggle');_0x23a5b4['querySelector']('.eye-open')['style']['display']='',_0x23a5b4['querySelector']('.eye-closed')['style']['display']='none';const _0x2fa2aa=document['getElementById']('install-key-result');_0x2fa2aa['hidden']=!![],_0x2fa2aa['innerHTML']='',_0x2fa2aa['className']='connection-test-result',document['getElementById']('install-key-confirm-btn')['disabled']=![],document['getElementById']('install-key-modal')['hidden']=![];}function closeInstallKeyModal(){document['getElementById']('install-key-modal')['hidden']=!![];}async function installPublicKey(){const _0x58c8b4=document['getElementById']('install-key-password')['value'];if(!_0x58c8b4){const _0x14a81a=document['getElementById']('install-key-result');_0x14a81a['innerHTML']='<div\x20class=\x22test-result-title\x22>'+Utils['escapeHtml']('Password\x20is\x20required')+'</div>',_0x14a81a['className']='connection-test-result\x20error',_0x14a81a['hidden']=![];return;}const _0x447bfb=state['editingConnection']||'_unsaved',_0x526df=document['getElementById']('connection-host')['value']['trim'](),_0x4e242e=document['getElementById']('connection-user')['value']['trim'](),_0x55cb57=document['getElementById']('connection-ssh-public-key')['value']['trim'](),_0x3b6678=document['getElementById']('install-key-result');_0x3b6678['innerHTML']='Installing...',_0x3b6678['className']='connection-test-result',_0x3b6678['hidden']=![],document['getElementById']('install-key-confirm-btn')['disabled']=!![];try{const _0x167938={'host':_0x526df,'user':_0x4e242e,'password':_0x58c8b4,'public_key':_0x55cb57},_0x10966b=await API['post']('/environments/'+state['selectedEnv']+'/connections/'+_0x447bfb+'/install-public-key',_0x167938);_0x3b6678['innerHTML']='<div\x20class=\x22test-result-title\x22>'+Utils['escapeHtml'](_0x10966b['message']||'Public\x20key\x20installed\x20successfully')+'</div>',_0x3b6678['className']='connection-test-result\x20success';}catch(_0x55b511){let _0x279b5a='<div\x20class=\x22test-result-title\x22>'+Utils['escapeHtml'](_0x55b511['message']||'Failed\x20to\x20install\x20public\x20key')+'</div>';_0x55b511['detail']&&(_0x279b5a+='<div\x20class=\x22test-result-detail\x22>'+Utils['escapeHtml'](_0x55b511['detail'])+'</div>'),_0x3b6678['innerHTML']=_0x279b5a,_0x3b6678['className']='connection-test-result\x20error',document['getElementById']('install-key-confirm-btn')['disabled']=![];}}function getRequiredSkillsForConnection(_0x2733ad){const _0x392e6b={'sqlserver':['sql'],'ibmi':{'sql':['sql'],'build':['codermake'],'interactive':['ibmi-interactive-session'],'ssh':['ibmi-clcmd'],'sync':[]},'ssh':[]};if(_0x2733ad['type']==='sqlserver')return[..._0x392e6b['sqlserver']];if(_0x2733ad['type']==='ibmi'){const _0x1aa4e1=[];for(const _0x12c403 of _0x2733ad['config']?.['features']||[]){const _0x5b639b=_0x392e6b['ibmi'][_0x12c403];if(_0x5b639b)for(const _0x13fb35 of _0x5b639b){if(!_0x1aa4e1['includes'](_0x13fb35))_0x1aa4e1['push'](_0x13fb35);}}return _0x1aa4e1;}return[];}function getConnectionRequiredSkills(){const _0x34ec1f={'sqlserver':['sql'],'ibmi':{'sql':['sql'],'build':['codermake'],'interactive':['ibmi-interactive-session'],'ssh':['ibmi-clcmd'],'sync':[]},'ssh':[]},_0x5c70f9=new Set();for(const _0x183a8b of state['selectedEnvData']?.['external_connections']||[]){if(_0x183a8b['type']==='sqlserver')_0x34ec1f['sqlserver']['forEach'](_0x1d5553=>_0x5c70f9['add'](_0x1d5553));else{if(_0x183a8b['type']==='ibmi')for(const _0x2b722c of _0x183a8b['config']?.['features']||[]){const _0x590967=_0x34ec1f['ibmi'][_0x2b722c];if(_0x590967)_0x590967['forEach'](_0x39ccb4=>_0x5c70f9['add'](_0x39ccb4));}}}return _0x5c70f9;}async function autoImportConnectionSkills(_0x53361f){const _0x423f8d=state['selectedEnvData']?.['skills']||[];for(const _0x475d3b of _0x53361f){if(_0x423f8d['includes'](_0x475d3b))continue;try{await API['post']('/external-skills/import/catalog',{'skillId':_0x475d3b});}catch(_0x331431){console['debug']('Skill\x20import\x20(may\x20already\x20exist):',_0x475d3b,_0x331431['message']);}!_0x423f8d['includes'](_0x475d3b)&&_0x423f8d['push'](_0x475d3b);}state['selectedEnvData']&&(state['selectedEnvData']['skills']=_0x423f8d,markAsModified(),renderEnvironmentSkills());}function debounce(_0x340e10,_0x1bb5a2){let _0x1e236d;return function _0x13f01e(..._0x343e00){const _0x1b1ac5=()=>{clearTimeout(_0x1e236d),_0x340e10(..._0x343e00);};clearTimeout(_0x1e236d),_0x1e236d=setTimeout(_0x1b1ac5,_0x1bb5a2);};}window['markAsModified']=function(){state['hasUnsavedChanges']=!![],updateButtonStates();};function updateButtonStates(){const _0x2014f1=document['getElementById']('save-btn'),_0x2c40c8=document['getElementById']('repo-commit-btn'),_0x17b54b=document['getElementById']('repo-discard-btn');_0x2014f1&&(_0x2014f1['disabled']=!state['hasUnsavedChanges']);_0x2c40c8&&(_0x2c40c8['disabled']=state['modifiedFiles']['size']===0x0);if(_0x17b54b){const _0x14fad4=state['changedFiles']&&state['changedFiles']['length']>0x0;_0x17b54b['disabled']=!_0x14fad4;}}async function saveChanges(){if(!state['hasUnsavedChanges'])return;if(state['currentRepo']!==null&&document['getElementById']('edit-repo-provider')){const _0x34facd=validateEditRepoForm();if(_0x34facd['length']>0x0){Utils['showError'](_0x34facd[0x0]);return;}}try{const _0x4e6a50=document['getElementById']('save-btn');_0x4e6a50['disabled']=!![],_0x4e6a50['innerHTML']='<span>⏳</span>\x20Saving...';const _0x529da7=await saveCurrentState(),_0x19280f=[];_0x529da7['modifiedEnvironmentJson']&&_0x19280f['push']('environment.json');_0x529da7['modifiedTests']&&_0x19280f['push']('tests.json');const _0x3ab470=_0x3c4b3f=>{return monacoEditors['has'](_0x3c4b3f)||window['MarkdownFileEditor']&&window['MarkdownFileEditor']['editors']['has'](_0x3c4b3f);};if(state['currentTab']==='agents')_0x19280f['push']('AGENTS.md');else{if(state['currentTab']==='files')_0x19280f['push'](state['currentFile']);else{if(state['currentTab']==='build')monacoEditors['has']('script-editor')&&_0x19280f['push'](currentScript);else state['currentTab']==='overview'&&(_0x3ab470('readme-editor')&&_0x19280f['push']('README.md'));}}_0x529da7['modifiedDeployProfile']&&_0x19280f['push']('deployment-profiles/'+_0x529da7['modifiedDeployProfile']+'.sh'),_0x19280f['forEach'](_0x1b045a=>state['modifiedFiles']['add'](_0x1b045a)),state['hasUnsavedChanges']=![],updateButtonStates(),await refreshRepositoryGitStatus(),Utils['showSuccess']('Changes\x20saved\x20to\x20files'),_0x4e6a50['innerHTML']='<span>💾</span>\x20Save';}catch(_0x113ab3){console['error']('Save\x20failed:',_0x113ab3);const _0x25f2ea=_0x113ab3['message']&&(_0x113ab3['message']['includes']('Invalid\x20JSON\x20in\x20Parameters\x20field')||_0x113ab3['message']['includes']('Invalid\x20JSON\x20in\x20template\x20metadata'));!_0x25f2ea&&Utils['showError']('Failed\x20to\x20save\x20changes');const _0x320081=document['getElementById']('save-btn');_0x320081['disabled']=![],_0x320081['innerHTML']='<span>💾</span>\x20Save';}}async function saveCurrentState(){const _0x2cd9e4={'description':document['getElementById']('env-description')['value'],'default_agent':defaultAgentSelect['selectedValue'],'image_name':document['getElementById']('env-image-name')['value'],'timezone':document['getElementById']('env-timezone')['value']||undefined,'screenRenderUrl':document['getElementById']('env-screen-render-url')['disabled']?state['selectedEnvData']['screenRenderUrl']||undefined:document['getElementById']('env-screen-render-url')['value']||undefined,'skills':state['selectedEnvData']['skills']||[]},_0x590a29=document['getElementById']('rebuild-schedule-enabled-build-tab')['checked'];_0x590a29?_0x2cd9e4['rebuild_schedule']={'enabled':!![],'interval_hours':parseInt(document['getElementById']('rebuild-interval-build-tab')['value'],0xa)}:_0x2cd9e4['rebuild_schedule']={'enabled':![]};monacoEditors['has']('script-editor')&¤tScript&&(currentScript==='pre-clone'||currentScript==='post-clone')&&saveCurrentScriptToState();const _0x327f45=state['selectedEnvData']['docker_config'],_0xc2687f=_0x327f45&&(Object['prototype']['hasOwnProperty']['call'](_0x327f45,'pre_clone_instructions')||Object['prototype']['hasOwnProperty']['call'](_0x327f45,'post_clone_instructions'));_0xc2687f&&(_0x2cd9e4['docker_config']={'pre_clone_instructions':_0x327f45['pre_clone_instructions']||'','post_clone_instructions':_0x327f45['post_clone_instructions']||''});const _0x5dfb06=[...state['selectedEnvData']['repos']||[]];state['selectedEnvData']['repos']=_0x5dfb06,persistCurrentRepoFormChanges(),_0x2cd9e4['repos']=_0x5dfb06;const _0x170472={...state['selectedEnvData']['tests']};if(state['currentTest']!==null&&document['getElementById']('test-description')){const _0x4b1651=document['getElementById']('test-command')['value']['trim']();let _0x2a7974;const _0x3c7c1e=_0x4b1651['split']('\x0a')['filter'](_0x1cbc24=>_0x1cbc24['trim']());if(_0x3c7c1e['length']>0x1)_0x2a7974={'commands':_0x3c7c1e};else _0x3c7c1e['length']===0x1?_0x2a7974={'command':_0x3c7c1e[0x0]}:_0x2a7974={'command':''};const _0x33ab8d=state['selectedEnvData']['tests'][state['currentTest']],_0x393474=_0x33ab8d?.['parameters']&&Object['keys'](_0x33ab8d['parameters'])['length']>0x0?{'parameters':_0x33ab8d['parameters']}:{};_0x170472[state['currentTest']]={..._0x170472[state['currentTest']],'description':document['getElementById']('test-description')['value'],..._0x2a7974,..._0x393474};}_0x2cd9e4['tests']=_0x170472;const _0xd70299=document['getElementById']('server-name');if(_0xd70299){const _0x5cd60b=document['getElementById']('server-enabled'),_0x5193b4=document['getElementById']('server-proxy'),_0x308e02={...state['selectedEnvData']['application_server'],'enabled':_0x5cd60b['disabled']?!![]:_0x5cd60b['checked'],'name':_0xd70299['disabled']?state['selectedEnvData']['application_server']?.['name']||'':_0xd70299['value']},_0x2c444e=monacoEditors['get']('server-command-editor'),_0x19a85d=_0x2c444e?_0x2c444e['getValue']()['trim']():'';_0x19a85d?_0x308e02['start_command']=_0x19a85d:delete _0x308e02['start_command'];const _0x46a826=_0x5193b4['disabled']?(state['selectedEnvData']['application_server']?.['proxy']||'')['trim']():_0x5193b4['value']['trim']();_0x46a826?_0x308e02['proxy']=_0x46a826:delete _0x308e02['proxy'];const _0x13deac=document['getElementById']('server-qa-url')['value']['trim']();_0x13deac?_0x308e02['qa_url']=_0x13deac:delete _0x308e02['qa_url'];const _0x20ab0e=collectPortQaUrlsFromForm();Object['keys'](_0x20ab0e)['length']>0x0?_0x308e02['port_qa_urls']=_0x20ab0e:delete _0x308e02['port_qa_urls'];const _0x58ed12=document['getElementById']('server-auth-user-property')['value']['trim'](),_0x19330b=document['getElementById']('server-auth-password-property')['value']['trim']();if(_0x58ed12||_0x19330b){_0x308e02['basic_auth']={};if(_0x58ed12)_0x308e02['basic_auth']['user_property']=_0x58ed12;if(_0x19330b)_0x308e02['basic_auth']['password_property']=_0x19330b;}else delete _0x308e02['basic_auth'];const _0x31ab94=document['getElementById']('ports-list');if(_0x31ab94){const _0x47ee95=_0x31ab94['querySelectorAll']('.config-item'),_0x458530=[];_0x47ee95['forEach'](_0x78bf66=>{const _0x3347f6=_0x78bf66['querySelectorAll']('input');if(_0x3347f6['length']>=0x2){const _0x350168=_0x3347f6[0x0]['value']['trim'](),_0x235caa=_0x3347f6[0x1]['value']['trim']();(_0x350168||_0x235caa)&&_0x458530['push']({'internal':_0x350168?parseInt(_0x350168,0xa):'','name':_0x235caa});}}),_0x458530['length']>0x0?_0x308e02['ports']=_0x458530:delete _0x308e02['ports'];}const _0x9076cd=collectURLsFromForm(![]);_0x9076cd['length']>0x0?_0x308e02['launch_urls']=_0x9076cd:delete _0x308e02['launch_urls'];const _0x5f39ab=document['getElementById']('proxy-headers-list');if(_0x5f39ab){const _0x18f823=_0x5f39ab['querySelectorAll']('.config-item'),_0x2fec00={};_0x18f823['forEach'](_0x37facc=>{const _0x5c4810=_0x37facc['querySelectorAll']('input');if(_0x5c4810['length']>=0x2){const _0x1b5196=_0x5c4810[0x0]['value']['trim'](),_0x173ed1=_0x5c4810[0x1]['value']['trim']();_0x1b5196&&_0x173ed1&&(_0x2fec00[_0x1b5196]=_0x173ed1);}}),Object['keys'](_0x2fec00)['length']>0x0?_0x308e02['proxy_headers']=_0x2fec00:delete _0x308e02['proxy_headers'];}const _0x55f69c=_0x308e02['name']||_0x308e02['start_command']||_0x308e02['proxy']||_0x308e02['qa_url']||_0x308e02['basic_auth']||_0x308e02['ports']?.['length']>0x0||_0x308e02['launch_urls']?.['length']>0x0||Object['keys'](_0x308e02['proxy_headers']||{})['length']>0x0;_0x55f69c?_0x2cd9e4['application_server']=_0x308e02:_0x2cd9e4['application_server']=null;}_0x2cd9e4['volume_mounts']=state['selectedEnvData']['volume_mounts']||[];state['selectedEnvData']['external_connections']!==undefined&&(_0x2cd9e4['external_connections']=state['selectedEnvData']['external_connections']);const _0x4f5117=_0x3beb53=>{return monacoEditors['has'](_0x3beb53)||window['MarkdownFileEditor']&&window['MarkdownFileEditor']['editors']['has'](_0x3beb53);};if(_0x4f5117('agents-editor')){const _0x3e340c=getMonacoValue('agents-editor');await API['post']('/environments/'+state['selectedEnv']+'/files/AGENTS.md',{'content':_0x3e340c}),state['selectedEnvData']['agentsContent']=_0x3e340c;}if(_0x4f5117('readme-editor')){const _0x39c0ee=getMonacoValue('readme-editor');await API['post']('/environments/'+state['selectedEnv']+'/files/README.md',{'content':_0x39c0ee}),state['selectedEnvData']['readmeContent']=_0x39c0ee;}if(_0x4f5117('file-editor')&&state['currentFile']){const _0x777f81=getMonacoValue('file-editor');await API['post']('/environments/'+state['selectedEnv']+'/files/'+state['currentFile'],{'content':_0x777f81}),!state['selectedEnvData']['files']&&(state['selectedEnvData']['files']={}),state['selectedEnvData']['files'][state['currentFile']]=_0x777f81;}if(monacoEditors['has']('script-editor')&¤tScript){saveCurrentScriptToState();if(currentScript==='pre-clone'||currentScript==='post-clone'){}else{const _0xcabb7c=getMonacoValue('script-editor');await API['post']('/environments/'+state['selectedEnv']+'/files/'+currentScript,{'content':_0xcabb7c}),!state['selectedEnvData']['files']&&(state['selectedEnvData']['files']={}),state['selectedEnvData']['files'][currentScript]=_0xcabb7c;}}const _0x5dd36d=(state['selectedEnvData']['templates']||[])['map'](_0x20773a=>_0x20773a['filename']),_0x5c4a9a=state['originalTemplates']||[],_0x24a8d5=_0x5dd36d['filter'](_0x59d11f=>!_0x5c4a9a['includes'](_0x59d11f)),_0x5978b3=_0x5c4a9a['filter'](_0x3ffe84=>!_0x5dd36d['includes'](_0x3ffe84));for(const _0x44d32a of _0x24a8d5){const _0x55bb66=state['selectedEnvData']['templates']['find'](_0x22bef1=>_0x22bef1['filename']===_0x44d32a);if(_0x55bb66){await API['post']('/environments/'+state['selectedEnv']+'/files/task-templates/'+_0x44d32a,{'content':_0x55bb66['content']||''});const _0x367689=_0x44d32a['replace'](/\.md$/,'.json'),_0x3f213f={'title':_0x55bb66['title'],'description':_0x55bb66['description'],'parameters':_0x55bb66['parameters']||[]};await API['post']('/environments/'+state['selectedEnv']+'/files/task-templates/'+_0x367689,{'content':JSON['stringify'](_0x3f213f,null,0x2)});}}for(const _0x308fb1 of _0x5978b3){const _0x3561d2=_0x308fb1['replace'](/\.md$/,'.json');await API['delete']('/environments/'+state['selectedEnv']+'/files/task-templates/'+_0x308fb1),await API['delete']('/environments/'+state['selectedEnv']+'/files/task-templates/'+_0x3561d2);}if(state['currentTemplate']!==null&&state['currentTemplateData']){const _0x1f9ae9=state['selectedEnvData']['templates'][state['currentTemplate']],_0x3829e2=_0x4f5117('template-md-editor')?getMonacoValue('template-md-editor'):state['currentTemplateData']['content']||'',_0x42e36d=document['getElementById']('template-edit-title'),_0x6ce8b4=document['getElementById']('template-edit-description'),_0xc80094={'title':_0x42e36d?_0x42e36d['value']:state['currentTemplateData']['title'],'description':_0x6ce8b4?_0x6ce8b4['value']:state['currentTemplateData']['description'],'parameters':state['currentTemplateData']['parameters']||{}};await API['post']('/environments/'+state['selectedEnv']+'/files/task-templates/'+_0x1f9ae9['filename'],{'content':_0x3829e2});const _0x278326=_0x1f9ae9['filename']['replace'](/\.md$/,'.json'),_0x10a01b=_0xc80094['title']||_0xc80094['description']||_0xc80094['parameters']&&Object['keys'](_0xc80094['parameters'])['length']>0x0;_0x10a01b&&await API['post']('/environments/'+state['selectedEnv']+'/files/task-templates/'+_0x278326,{'content':JSON['stringify'](_0xc80094,null,0x2)}),state['selectedEnvData']['templates'][state['currentTemplate']]={..._0x1f9ae9,'content':_0x3829e2,..._0xc80094};}state['originalTemplates']=_0x5dd36d;let _0x25e83b=null;if(state['profileHasUnsavedChanges']&&state['currentDeployProfile']&&state['currentDeployProfileData']){const _0x45c284=state['currentDeployProfile'],_0xb66d97=document['getElementById']('profile-description')?.['value']['trim']()||'',_0x17d15d=state['profileScriptEditor']?state['profileScriptEditor']['getValue']():'',_0x4b0e56=state['currentDeployProfileData']['env_vars']||[],_0x3b98d8=state['currentDeployProfileData']['secrets']||[],_0x3b5326=state['currentDeployProfileData']['parameters']||{};await API['put']('/environments/'+state['selectedEnv']+'/deployment-profiles/'+_0x45c284,{'description':_0xb66d97,'scriptContent':_0x17d15d,'env_vars':_0x4b0e56,'secrets':_0x3b98d8,'parameters':_0x3b5326}),_0x25e83b=_0x45c284,state['profileHasUnsavedChanges']=![];}return await API['put']('/environments/'+state['selectedEnv'],_0x2cd9e4),Object['assign'](state['selectedEnvData'],_0x2cd9e4),{'modifiedEnvironmentJson':!![],'modifiedTests':_0x2cd9e4['tests']!==undefined,'modifiedDeployProfile':_0x25e83b};}async function createNewEnvironment(){document['getElementById']('new-env-name')['value']='',document['getElementById']('new-env-description')['value']='',document['getElementById']('new-env-repo-url')['value']='',document['getElementById']('new-env-image')['value']='',document['getElementById']('new-env-error')['hidden']=!![],document['querySelector']('input[name=\x22new-env-repo-mode\x22][value=\x22none\x22]')['checked']=!![],document['getElementById']('new-env-repo-url-row')['hidden']=!![],document['getElementById']('new-env-repo-provider-selection')['hidden']=!![];const _0x456228=document['getElementById']('new-env-repo-source-provider');newEnvRepoAutocomplete&&(newEnvRepoAutocomplete['reset'](),newEnvRepoAutocomplete['disable']());const _0x5848af=document['getElementById']('new-env-repo-credential-mode');_0x5848af&&(_0x5848af['value']='app');try{const _0xb6c92=await API['get']('/settings/git-providers');_0x456228['innerHTML']='<option\x20value=\x22\x22>--\x20Select\x20a\x20provider\x20--</option>';for(const _0x1e290f of _0xb6c92['providers']||[]){_0x456228['innerHTML']+='<option\x20value=\x22'+Utils['escapeHtml'](_0x1e290f['name'])+'\x22>'+Utils['escapeHtml'](_0x1e290f['name'])+'</option>';}}catch(_0x803020){console['error']('Failed\x20to\x20load\x20git\x20providers:',_0x803020),_0x456228['innerHTML']='<option\x20value=\x22\x22>--\x20No\x20providers\x20available\x20--</option>';}if(!newEnvAgentSelect){const _0x127e53=document['getElementById']('new-env-agent-wrapper');_0x127e53['innerHTML']='';const _0x5154cf=document['createElement']('select');_0x5154cf['id']='new-env-agent',_0x5154cf['innerHTML']='\x0a\x20\x20\x20\x20\x20\x20<option\x20value=\x22\x22\x20disabled\x20selected\x20hidden>Select\x20default\x20agent...</option>\x0a\x20\x20\x20\x20\x20\x20<option\x20value=\x22claude\x22>Claude</option>\x0a\x20\x20\x20\x20\x20\x20<option\x20value=\x22codex\x22>Codex</option>\x0a\x20\x20\x20\x20\x20\x20<option\x20value=\x22gemini\x22>Gemini</option>\x0a\x20\x20\x20\x20',_0x127e53['appendChild'](_0x5154cf),newEnvAgentSelect=new CustomSelect(_0x5154cf,{'searchable':![]});}else newEnvAgentSelect['select']('');document['getElementById']('new-env-modal')['hidden']=![],setTimeout(()=>{document['getElementById']('new-env-name')['focus']();},0x64);}function closeNewEnvModal(){document['getElementById']('new-env-modal')['hidden']=!![];}window['onNewEnvRepoModeChange']=function(_0x372834){const _0xacc274=_0x372834['value'],_0x24e26a=document['getElementById']('new-env-repo-url-row'),_0x55aa77=document['getElementById']('new-env-repo-provider-selection'),_0x240f56=document['getElementById']('new-env-repo-url'),_0xe7d3d1=document['getElementById']('new-env-repo-source-provider');if(_0xacc274==='none')_0x24e26a['hidden']=!![],_0x55aa77['hidden']=!![],_0x240f56['value']='',newEnvRepoAutocomplete&&(newEnvRepoAutocomplete['reset'](),newEnvRepoAutocomplete['disable']());else{if(_0xacc274==='manual')_0x24e26a['hidden']=![],_0x55aa77['hidden']=!![],_0x240f56['value']='',newEnvRepoAutocomplete&&(newEnvRepoAutocomplete['reset'](),newEnvRepoAutocomplete['disable']());else _0xacc274==='provider'&&(_0x24e26a['hidden']=!![],_0x55aa77['hidden']=![],_0xe7d3d1['value']='',initNewEnvRepoAutocomplete());}},window['onNewEnvRepoProviderChange']=async function(){const _0x416423=document['getElementById']('new-env-repo-source-provider')['value'];if(!_0x416423){newEnvRepoAutocomplete&&(newEnvRepoAutocomplete['reset'](),newEnvRepoAutocomplete['disable']());return;}newEnvRepoAutocomplete&&(newEnvRepoAutocomplete['reset'](),newEnvRepoAutocomplete['enable'](),newEnvRepoAutocomplete['preloadData']());};function initNewEnvRepoAutocomplete(){const _0x246f7f=document['getElementById']('new-env-repo-autocomplete-container');if(!_0x246f7f)return;newEnvRepoAutocomplete&&newEnvRepoAutocomplete['destroy'](),newEnvRepoAutocomplete=new AutocompleteSelect(_0x246f7f,{'placeholder':'Search\x20for\x20a\x20repository','maxItems':0x64,'emptyMessage':'No\x20repositories\x20found','loadingMessage':'Loading\x20repositories...','preload':![],'searchMode':'server','loadItems':async _0x36cf74=>{const _0x2a5b87=document['getElementById']('new-env-repo-source-provider')['value'];if(!_0x2a5b87)return[];try{let _0x405e85='/settings/git-providers/'+encodeURIComponent(_0x2a5b87)+'/repositories?limit=100';_0x36cf74&&_0x36cf74['trim']()&&(_0x405e85+='&search='+encodeURIComponent(_0x36cf74['trim']()));const _0x35c1af=await API['get'](_0x405e85);return _0x35c1af['repositories']||[];}catch(_0x59cc23){console['error']('Failed\x20to\x20load\x20repositories:',_0x59cc23);throw _0x59cc23;}},'renderItem':_0x1cdee6=>{const _0x258d43=_0x1cdee6['private']===!![];let _0x1fdf93=_0x1cdee6['description']||'no\x20description';return _0x1cdee6['descriptionSource']==='project'&&_0x1cdee6['description']&&(_0x1fdf93='Project:\x20'+_0x1cdee6['description']),{'primary':_0x1cdee6['full_name']||_0x1cdee6['name'],'secondary':_0x1fdf93,'icon':_0x258d43?REPO_ICON_PRIVATE:REPO_ICON_PUBLIC,'iconClass':_0x258d43?'icon-private':'icon-public'};},'sortItems':_0x852ca0=>{return _0x852ca0['sort']((_0xb38857,_0x588fa8)=>{const _0xc53e00=(_0xb38857['full_name']||_0xb38857['name']||'')['toLowerCase'](),_0x229780=(_0x588fa8['full_name']||_0x588fa8['name']||'')['toLowerCase']();return _0xc53e00['localeCompare'](_0x229780);});},'getItemValue':_0x3ecb84=>_0x3ecb84['clone_url']||_0x3ecb84['url'],'onSelect':_0x4f9ed0=>{}}),newEnvRepoAutocomplete['disable']();}function showNewEnvError(_0x4bf38a){const _0x1a7cfe=document['getElementById']('new-env-error');_0x1a7cfe['textContent']=_0x4bf38a,_0x1a7cfe['hidden']=![];}function hideNewEnvError(){document['getElementById']('new-env-error')['hidden']=!![];}async function confirmCreateEnvironment(){const _0x4dbe62=document['getElementById']('new-env-name'),_0x58410a=document['getElementById']('new-env-image'),_0x32f945=document['getElementById']('new-env-error'),_0x3aa955=_0x4dbe62['value']['trim'](),_0x549243=document['getElementById']('new-env-description')['value']['trim'](),_0x3e88d9=_0x58410a['value']['trim'](),_0x433541=newEnvAgentSelect['selectedValue'],_0x1f8e2=document['querySelector']('input[name=\x22new-env-repo-mode\x22]:checked')['value'],_0x22ddcb=document['getElementById']('new-env-repo-url')['value']['trim'](),_0x262fc0=newEnvRepoAutocomplete?newEnvRepoAutocomplete['getSelectedItem']():null,_0x351fe8=_0x262fc0?_0x262fc0['clone_url']||_0x262fc0['url']:'',_0x57660c=document['getElementById']('new-env-repo-source-provider')['value'];_0x4dbe62['classList']['remove']('input-error'),_0x58410a['classList']['remove']('input-error'),_0x32f945['hidden']=!![];let _0x155dc0=![],_0x791f1d='';if(!_0x3aa955)_0x4dbe62['classList']['add']('input-error'),_0x155dc0=!![],_0x791f1d='Environment\x20name\x20is\x20required';else!/^[a-z0-9-]+$/['test'](_0x3aa955)&&(_0x4dbe62['classList']['add']('input-error'),_0x155dc0=!![],_0x791f1d='Environment\x20name\x20must\x20contain\x20only\x20lowercase\x20letters,\x20numbers,\x20and\x20hyphens');if(!_0x3e88d9){_0x58410a['classList']['add']('input-error'),_0x155dc0=!![];if(!_0x791f1d)_0x791f1d='Docker\x20image\x20is\x20required';}if(!_0x433541){_0x155dc0=!![];if(!_0x791f1d)_0x791f1d='Default\x20agent\x20is\x20required';}if(_0x1f8e2==='provider'){if(!_0x57660c){_0x155dc0=!![];if(!_0x791f1d)_0x791f1d='Please\x20select\x20a\x20Git\x20provider';}else{if(!_0x262fc0){_0x155dc0=!![];if(!_0x791f1d)_0x791f1d='Please\x20select\x20a\x20repository';}}}if(_0x155dc0){_0x32f945['textContent']=_0x791f1d,_0x32f945['hidden']=![];return;}const _0x47fdac=document['getElementById']('new-env-create-btn');_0x47fdac['disabled']=!![],_0x47fdac['textContent']='Creating...';try{const _0x34ecc2={'name':_0x3aa955,'image_name':_0x3e88d9,'default_agent':_0x433541};_0x549243&&(_0x34ecc2['description']=_0x549243);if(_0x1f8e2==='manual'&&_0x22ddcb)_0x34ecc2['repo_url']=_0x22ddcb;else{if(_0x1f8e2==='provider'&&_0x351fe8){_0x34ecc2['repo_url']=_0x351fe8;const _0x2bb8f2=document['getElementById']('new-env-repo-credential-mode')?.['value']||'app';_0x34ecc2['repo_provider']={'provider':_0x57660c,'credential_mode':_0x2bb8f2};}}await API['post']('/environments',_0x34ecc2),Utils['showSuccess']('Environment\x20\x22'+_0x3aa955+'\x22\x20created\x20successfully'),closeNewEnvModal(),await loadEnvironments(),await refreshRepositoryGitStatus(),state['environments']['find'](_0x3d1fd9=>_0x3d1fd9['name']===_0x3aa955)&&await window['selectEnvironment'](_0x3aa955);}catch(_0x755075){console['error']('Failed\x20to\x20create\x20environment:',_0x755075),showNewEnvError(_0x755075['message']||'Unknown\x20error');}finally{_0x47fdac['disabled']=![],_0x47fdac['textContent']='Create\x20Environment';}}async function deleteEnvironment(){const _0x3a6e1f=state['selectedEnv'];if(!_0x3a6e1f){Utils['showError']('No\x20environment\x20selected');return;}document['getElementById']('delete-env-name-display')['textContent']=_0x3a6e1f,document['getElementById']('delete-env-modal')['hidden']=![];}function closeDeleteEnvModal(){document['getElementById']('delete-env-modal')['hidden']=!![];}async function confirmDeleteEnvironment(){const _0x395402=state['selectedEnv'];if(!_0x395402){closeDeleteEnvModal();return;}try{await API['delete']('/environments/'+_0x395402),Utils['showSuccess']('Environment\x20\x22'+_0x395402+'\x22\x20deleted\x20successfully'),closeDeleteEnvModal(),state['selectedEnv']=null,state['selectedEnvData']=null,sessionStorage['removeItem'](SESSION_KEY_ENV),await loadEnvironments(),await refreshRepositoryGitStatus(),state['environments']['length']===0x0&&(document['getElementById']('env-details')['hidden']=!![],document['getElementById']('env-empty-state')['hidden']=![]);}catch(_0x4eb97d){console['error']('Failed\x20to\x20delete\x20environment:',_0x4eb97d),Utils['showError']('Failed\x20to\x20delete\x20environment:\x20'+(_0x4eb97d['message']||'Unknown\x20error')),closeDeleteEnvModal();}}async function cloneEnvironment(){Utils['showToast']('Clone\x20environment\x20coming\x20soon','info');}function openRenameEnvModal(){const _0x1eb3f5=state['selectedEnv'];if(!_0x1eb3f5){Utils['showError']('No\x20environment\x20selected');return;}document['getElementById']('rename-env-error')['hidden']=!![],document['getElementById']('rename-env-current')['value']=_0x1eb3f5,document['getElementById']('rename-env-new')['value']='',document['getElementById']('rename-env-modal')['hidden']=![],setTimeout(()=>{document['getElementById']('rename-env-new')['focus']();},0x64);}function closeRenameEnvModal(){document['getElementById']('rename-env-modal')['hidden']=!![],document['getElementById']('rename-env-error')['hidden']=!![];}async function confirmRenameEnvironment(){const _0x52705c=state['selectedEnv'],_0x2f5f16=document['getElementById']('rename-env-new')['value']['trim'](),_0x509d67=document['getElementById']('rename-env-error');if(!_0x2f5f16){_0x509d67['textContent']='Please\x20enter\x20a\x20new\x20name',_0x509d67['hidden']=![];return;}if(!/^[a-z0-9-]+$/['test'](_0x2f5f16)){_0x509d67['textContent']='Name\x20must\x20contain\x20only\x20lowercase\x20letters,\x20numbers,\x20and\x20hyphens',_0x509d67['hidden']=![];return;}if(_0x2f5f16===_0x52705c){_0x509d67['textContent']='New\x20name\x20must\x20be\x20different\x20from\x20current\x20name',_0x509d67['hidden']=![];return;}if(state['environments']['some'](_0x376686=>_0x376686['name']===_0x2f5f16)){_0x509d67['textContent']='An\x20environment\x20with\x20this\x20name\x20already\x20exists',_0x509d67['hidden']=![];return;}const _0x5e6ca9=document['getElementById']('rename-env-confirm-btn'),_0xeaeac2=_0x5e6ca9['textContent'];try{_0x5e6ca9['disabled']=!![],_0x5e6ca9['textContent']='Renaming...',await API['post']('/environments/'+_0x52705c+'/rename',{'newName':_0x2f5f16}),Utils['showSuccess']('Environment\x20renamed\x20to\x20\x22'+_0x2f5f16+'\x22'),closeRenameEnvModal(),state['selectedEnv']=_0x2f5f16,await loadEnvironments(),await selectEnvironment(_0x2f5f16),await refreshRepositoryGitStatus();}catch(_0x583358){console['error']('Failed\x20to\x20rename\x20environment:',_0x583358),_0x509d67['textContent']=_0x583358['message']||'Failed\x20to\x20rename\x20environment',_0x509d67['hidden']=![];}finally{_0x5e6ca9['disabled']=![],_0x5e6ca9['textContent']=_0xeaeac2;}}async function loadMonaco(){if(monacoLoaded)return;const _0x4d77a4=document['querySelector']('script[src*=\x22monaco-editor\x22][src*=\x22loader.min.js\x22]');if(_0x4d77a4){if(typeof monaco!=='undefined'){monacoLoaded=!![],monaco['editor']['setTheme'](getMonacoTheme());return;}return new Promise((_0xd2117f,_0x1b74cd)=>{const _0x384fbf=setInterval(()=>{typeof monaco!=='undefined'&&(clearInterval(_0x384fbf),monacoLoaded=!![],monaco['editor']['setTheme'](getMonacoTheme()),_0xd2117f());},0x64);setTimeout(()=>{clearInterval(_0x384fbf),_0x1b74cd(new Error('Monaco\x20loading\x20timeout'));},0x2710);});}return new Promise((_0x3111e0,_0x13c176)=>{const _0x515179=document['createElement']('script');_0x515179['src']='https://cdnjs.cloudflare.com/ajax/libs/monaco-editor/0.45.0/min/vs/loader.min.js',_0x515179['onload']=()=>{require['config']({'paths':{'vs':'https://cdnjs.cloudflare.com/ajax/libs/monaco-editor/0.45.0/min/vs'}}),require(['vs/editor/editor.main'],()=>{monacoLoaded=!![],monaco['editor']['setTheme'](getMonacoTheme()),_0x3111e0();});},_0x515179['onerror']=()=>_0x13c176(new Error('Failed\x20to\x20load\x20Monaco\x20Editor')),document['head']['appendChild'](_0x515179);});}async function createMonacoEditor(_0x9ee0da,_0x527929,_0x53be2d,_0x507dc0=![]){!monacoLoaded&&await loadMonaco();const _0x19d503=document['getElementById'](_0x9ee0da);if(!_0x19d503)return console['error']('Monaco\x20container\x20not\x20found:',_0x9ee0da),null;const _0x590225=monacoEditors['get'](_0x9ee0da);_0x590225&&_0x590225['dispose']();const _0x4e3e96=monaco['editor']['create'](_0x19d503,{'value':_0x527929||'','language':_0x53be2d,'theme':getMonacoTheme(),'readOnly':_0x507dc0,'minimap':{'enabled':![]},'fontSize':0xd,'lineNumbers':'on','scrollBeyondLastLine':![],'automaticLayout':!![],'wordWrap':'on','tabSize':0x2}),_0xef3d6e=_0x4e3e96['getModel']();return _0xef3d6e&&_0xef3d6e['setEOL'](monaco['editor']['EndOfLineSequence']['LF']),monacoEditors['set'](_0x9ee0da,_0x4e3e96),_0x4e3e96;}function getLanguageFromFilename(_0x1f6a7a){const _0x54988e=_0x1f6a7a['split']('.')['pop']()['toLowerCase'](),_0x2bace2={'js':'javascript','ts':'typescript','json':'json','md':'markdown','sh':'shell','dockerfile':'dockerfile','py':'python','java':'java','xml':'xml','html':'html','css':'css','yml':'yaml','yaml':'yaml'};if(_0x1f6a7a==='Dockerfile')return'dockerfile';return _0x2bace2[_0x54988e]||'plaintext';}function getMonacoValue(_0x253ee1){if(window['MarkdownFileEditor']&&window['MarkdownFileEditor']['editors']['has'](_0x253ee1)){const _0x36f319=window['MarkdownFileEditor']['editors']['get'](_0x253ee1);return _0x36f319?_0x36f319['getValue']():null;}const _0x58452c=monacoEditors['get'](_0x253ee1);if(!_0x58452c)return null;return _0x58452c['getValue'](monaco['editor']['EndOfLinePreference']['LF']);}let buildPollTimer=null,buildElapsedTimer=null,currentBuildId=null,currentBuildEnv=null,buildOutputEventSource=null,buildOutputExpanded=!![];function openBaseImageRequiredModal(){document['getElementById']('base-image-required-modal')['hidden']=![];}function closeBaseImageRequiredModal(){document['getElementById']('base-image-required-modal')['hidden']=!![];}function openBaseImageBuildFromRequiredModal(){closeBaseImageRequiredModal(),openBaseImageBuildModal();}async function ensureBaseImageAvailableForBuild(){try{const _0x7552=await API['get']('/build/base/availability');if(_0x7552['available'])return!![];return openBaseImageRequiredModal(),![];}catch(_0x29eed1){return console['error']('Failed\x20to\x20check\x20base\x20image\x20availability:',_0x29eed1),Utils['showError'](_0x29eed1['message']||'Failed\x20to\x20verify\x20base\x20image\x20availability'),![];}}window['showBuildConfirmation']=async function(){if(!state['selectedEnv']){Utils['showError']('No\x20environment\x20selected');return;}const _0x1527d7=await ensureBaseImageAvailableForBuild();if(!_0x1527d7)return;document['getElementById']('build-confirm-env-name')['textContent']=state['selectedEnv'],document['getElementById']('build-confirm-modal')['hidden']=![];};function closeBuildConfirmModal(){document['getElementById']('build-confirm-modal')['hidden']=!![];}async function confirmStartBuild(){closeBuildConfirmModal(),await startManualBuild();}async function startManualBuild(){if(!state['selectedEnv']){Utils['showError']('No\x20environment\x20selected');return;}const _0x22b7e9=state['selectedEnv'],_0x341992=document['getElementById']('build-now-btn'),_0x1721b0=document['getElementById']('build-status-message');try{_0x341992&&(_0x341992['disabled']=!![],_0x341992['innerHTML']='<span>⏳</span>\x20Building...');const _0x3f4bbb=await API['post']('/environments/'+_0x22b7e9+'/build',{});currentBuildId=_0x3f4bbb['buildId'],currentBuildEnv=_0x22b7e9,_0x1721b0&&(_0x1721b0['hidden']=![],_0x1721b0['className']='alert\x20alert-info',_0x1721b0['innerHTML']='\x0a\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22alert-icon\x22>⏳</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<strong>Build\x20in\x20progress...</strong>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<p\x20id=\x22build-elapsed-time\x22>Elapsed\x20time:\x200s</p>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20'),showBuildOutputContainer(),clearBuildOutput(),scrollBuildOutputIntoView(),startBuildOutputStreaming(_0x3f4bbb['buildId'],_0x22b7e9),startBuildPolling(_0x3f4bbb['buildId'],_0x22b7e9);}catch(_0x4dd9ed){console['error']('Failed\x20to\x20start\x20build:',_0x4dd9ed),(_0x4dd9ed['message']||'')['toLowerCase']()['includes']('base\x20image')?openBaseImageRequiredModal():Utils['showError'](_0x4dd9ed['message']||'Failed\x20to\x20start\x20build'),_0x341992&&(_0x341992['disabled']=![],_0x341992['innerHTML']='<span>📦</span>\x20Build\x20Now');}};function clearBuildTimers(){buildPollTimer&&(clearInterval(buildPollTimer),buildPollTimer=null),buildElapsedTimer&&(clearInterval(buildElapsedTimer),buildElapsedTimer=null);}function isActiveBuildContext(_0x3f9306,_0x500ca6){return currentBuildId===_0x3f9306&¤tBuildEnv===_0x500ca6;}function startBuildPolling(_0x3c1c53,_0x59f5d9){const _0x55aeac=Date['now']();clearBuildTimers(),buildElapsedTimer=setInterval(()=>{if(!isActiveBuildContext(_0x3c1c53,_0x59f5d9)){clearBuildTimers();return;}const _0x24267b=Math['floor']((Date['now']()-_0x55aeac)/0x3e8),_0x1a3c5a=document['getElementById']('build-elapsed-time');if(_0x1a3c5a){const _0x4f0f1e=Math['floor'](_0x24267b/0x3c),_0x207bbd=_0x24267b%0x3c;_0x1a3c5a['textContent']=_0x4f0f1e>0x0?'Elapsed\x20time:\x20'+_0x4f0f1e+'m\x20'+_0x207bbd+'s':'Elapsed\x20time:\x20'+_0x207bbd+'s';}},0x3e8),buildPollTimer=setInterval(async()=>{if(!isActiveBuildContext(_0x3c1c53,_0x59f5d9)){clearBuildTimers();return;}try{const _0x1ee6d0=await API['get']('/environments/'+_0x59f5d9+'/build-status/'+_0x3c1c53);if(!isActiveBuildContext(_0x3c1c53,_0x59f5d9))return;if(_0x1ee6d0['status']==='success'||_0x1ee6d0['status']==='failed'){clearBuildTimers(),currentBuildId=null,currentBuildEnv=null,stopBuildOutputStreaming();const _0x25e06c=document['getElementById']('build-now-btn');_0x25e06c&&(_0x25e06c['disabled']=![],_0x25e06c['innerHTML']='<span>📦</span>\x20Build\x20Now');const _0x3f4c6a=document['getElementById']('build-status-message'),_0x27a1ed=formatDuration(_0x1ee6d0['duration']);_0x3f4c6a?(_0x1ee6d0['status']==='success'?(_0x3f4c6a['className']='alert\x20alert-success',_0x3f4c6a['innerHTML']='\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22alert-icon\x22>✅</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<strong>Build\x20completed\x20successfully!</strong>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<p>Duration:\x20'+_0x27a1ed+'</p>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20',Utils['showToast']('Build\x20completed\x20in\x20'+_0x27a1ed,'success')):(_0x3f4c6a['className']='alert\x20alert-error',_0x3f4c6a['innerHTML']='\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22alert-icon\x22>❌</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<strong>Build\x20failed</strong>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<p>'+Utils['escapeHtml'](_0x1ee6d0['error']||'Unknown\x20error')+'</p>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<p\x20style=\x22margin-top:\x204px;\x20font-size:\x2013px;\x22>Duration:\x20'+_0x27a1ed+'</p>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20',Utils['showToast']('Build\x20failed\x20-\x20check\x20output\x20for\x20details','error')),setTimeout(()=>{_0x3f4c6a&&state['selectedEnv']===_0x59f5d9&&(_0x3f4c6a['hidden']=!![]);},0x2710)):_0x1ee6d0['status']==='success'?Utils['showToast']('Build\x20completed\x20in\x20'+_0x27a1ed,'success'):Utils['showToast']('Build\x20failed\x20-\x20check\x20output\x20for\x20details','error'),setTimeout(()=>{state['selectedEnv']===_0x59f5d9&&loadBuildHistory();},0x3e8);}}catch(_0x67eb77){if(!isActiveBuildContext(_0x3c1c53,_0x59f5d9))return;console['error']('Failed\x20to\x20poll\x20build\x20status:',_0x67eb77),clearBuildTimers(),currentBuildId=null,currentBuildEnv=null,stopBuildOutputStreaming();const _0x38d34f=document['getElementById']('build-now-btn');_0x38d34f&&(_0x38d34f['disabled']=![],_0x38d34f['innerHTML']='<span>📦</span>\x20Build\x20Now'),state['selectedEnv']===_0x59f5d9&&loadBuildHistory();}},0xbb8);}function stopBuildPolling(){clearBuildTimers(),stopBuildOutputStreaming(),currentBuildId=null,currentBuildEnv=null;}function resetBuildPanelForEnvironmentChange(){stopBuildPolling(),clearBuildOutput(),hideBuildOutputContainer();const _0x1cd85b=document['getElementById']('build-status-message');_0x1cd85b&&(_0x1cd85b['hidden']=!![],_0x1cd85b['className']='',_0x1cd85b['innerHTML']='');const _0x31d190=document['getElementById']('build-now-btn');_0x31d190&&(_0x31d190['disabled']=![],_0x31d190['innerHTML']='<span>📦</span>\x20Build\x20Now');}function showBuildOutputContainer(){const _0x4d10fb=document['getElementById']('build-output-container');_0x4d10fb&&(_0x4d10fb['hidden']=![],buildOutputExpanded=!![],updateBuildOutputToggle());}function scrollBuildOutputIntoView(){const _0x55ff95=document['getElementById']('build-output-container');if(!_0x55ff95||_0x55ff95['hidden'])return;requestAnimationFrame(()=>{_0x55ff95['scrollIntoView']({'behavior':'smooth','block':'start'});});}function hideBuildOutputContainer(){const _0x134ede=document['getElementById']('build-output-container');_0x134ede&&(_0x134ede['hidden']=!![]);}function clearBuildOutput(){const _0x18821d=document['getElementById']('build-output-text');_0x18821d&&(_0x18821d['textContent']='');}window['toggleBuildOutput']=function(){buildOutputExpanded=!buildOutputExpanded,updateBuildOutputToggle();};function updateBuildOutputToggle(){const _0x5c5b8b=document['getElementById']('build-output-content'),_0x5bd0d7=document['getElementById']('build-output-toggle-icon');_0x5c5b8b&&(_0x5c5b8b['style']['display']=buildOutputExpanded?'block':'none'),_0x5bd0d7&&(_0x5bd0d7['innerHTML']=buildOutputExpanded?'▼':'▶');}function appendToBuildOutput(_0xa17400){const _0x361730=document['getElementById']('build-output-text'),_0x59ee80=document['getElementById']('build-output-content');_0x361730&&(_0x361730['textContent']+=_0xa17400,_0x59ee80&&(_0x59ee80['scrollTop']=_0x59ee80['scrollHeight']));}function startBuildOutputStreaming(_0x1cd0e7,_0x3cd58c){stopBuildOutputStreaming();try{const _0x44a1cb=new EventSource('/build/output/stream/'+_0x1cd0e7);buildOutputEventSource=_0x44a1cb,_0x44a1cb['onmessage']=_0x30fa9b=>{if(buildOutputEventSource!==_0x44a1cb)return;if(!isActiveBuildContext(_0x1cd0e7,_0x3cd58c)||state['selectedEnv']!==_0x3cd58c){_0x44a1cb['close']();buildOutputEventSource===_0x44a1cb&&(buildOutputEventSource=null);return;}try{const _0x5679=JSON['parse'](_0x30fa9b['data']);if(_0x5679['type']==='output')appendToBuildOutput(_0x5679['data']);else _0x5679['type']==='complete'&&(console['log']('Build\x20completed\x20via\x20stream:',_0x5679),stopBuildOutputStreaming());}catch(_0xb3395d){console['error']('Failed\x20to\x20parse\x20build\x20output\x20event:',_0xb3395d);}},_0x44a1cb['onerror']=_0x4f3aba=>{if(buildOutputEventSource!==_0x44a1cb)return;console['error']('Build\x20output\x20stream\x20error:',_0x4f3aba),_0x44a1cb['readyState']===EventSource['CLOSED']&&stopBuildOutputStreaming();};}catch(_0x3d4a7c){console['error']('Failed\x20to\x20start\x20build\x20output\x20streaming:',_0x3d4a7c);}}function stopBuildOutputStreaming(){buildOutputEventSource&&(buildOutputEventSource['close'](),buildOutputEventSource=null);}async function loadBuildOutputForBuild(_0x4853e5){const _0x538d4e=state['selectedEnv'];showBuildOutputContainer(),clearBuildOutput(),scrollBuildOutputIntoView();const _0x2c2b4b=document['getElementById']('build-output-text');_0x2c2b4b&&(_0x2c2b4b['textContent']='Loading\x20build\x20output...');try{const _0x459530=await API['get']('/build/output/'+_0x4853e5);if(_0x538d4e!==state['selectedEnv'])return;_0x459530['output']?_0x2c2b4b&&(_0x2c2b4b['textContent']=_0x459530['output']):_0x2c2b4b&&(_0x2c2b4b['textContent']='No\x20output\x20available\x20for\x20this\x20build.');}catch(_0xec76d9){if(_0x538d4e!==state['selectedEnv'])return;console['error']('Failed\x20to\x20load\x20build\x20output:',_0xec76d9),_0x2c2b4b&&(_0x2c2b4b['textContent']='Failed\x20to\x20load\x20build\x20output:\x20'+(_0xec76d9['message']||'Unknown\x20error'));}}window['viewBuildOutput']=function(_0xa4d1e5){loadBuildOutputForBuild(_0xa4d1e5);},window['loadBuildHistory']=async function(){if(!state['selectedEnv'])return;const _0x2bd90c=state['selectedEnv'],_0x42fbc6=document['getElementById']('build-history-container');if(!_0x42fbc6)return;try{_0x42fbc6['innerHTML']='<p\x20class=\x22text-muted\x22>Loading\x20build\x20history...</p>';const _0x2df25c=await API['get']('/environments/'+_0x2bd90c+'/build-history?limit=20');if(_0x2bd90c!==state['selectedEnv'])return;const _0x259682=_0x2df25c['builds']||[];if(_0x259682['length']===0x0){_0x42fbc6['innerHTML']='<p\x20class=\x22text-muted\x22>No\x20build\x20history\x20available\x20yet.\x20Build\x20this\x20environment\x20to\x20see\x20history.</p>';return;}_0x42fbc6['innerHTML']='\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22build-history-table\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<table\x20style=\x22width:\x20100%;\x20border-collapse:\x20collapse;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<thead>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<tr\x20style=\x22border-bottom:\x202px\x20solid\x20var(--color-border);\x20text-align:\x20left;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<th\x20style=\x22padding:\x208px;\x22>Status</th>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<th\x20style=\x22padding:\x208px;\x22>Build\x20Time</th>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<th\x20style=\x22padding:\x208px;\x22>Duration</th>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<th\x20style=\x22padding:\x208px;\x22>Triggered\x20By</th>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<th\x20style=\x22padding:\x208px;\x22>Output</th>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</tr>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</thead>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<tbody>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20'+_0x259682['map'](_0x3df194=>{const _0x2fbefe=new Date(_0x3df194['timestamp']),_0x257015=_0x2fbefe['toLocaleString'](),_0x33fc56=formatDuration(_0x3df194['duration']),_0x2f1833=_0x3df194['status']==='success'?'✅':'❌',_0x303960=_0x3df194['status']==='success'?'Success':'Failed',_0x2d13a8=_0x3df194['status']==='success'?'var(--color-success)':'var(--color-error)',_0x78131c=Utils['escapeHtml'](_0x3df194['buildId']);return'\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<tr\x20style=\x22border-bottom:\x201px\x20solid\x20var(--color-border);\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<td\x20style=\x22padding:\x208px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20style=\x22color:\x20'+_0x2d13a8+';\x22>'+_0x2f1833+'\x20'+_0x303960+'</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</td>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<td\x20style=\x22padding:\x208px;\x20font-family:\x20var(--font-mono);\x20font-size:\x2013px;\x22>'+_0x257015+'</td>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<td\x20style=\x22padding:\x208px;\x22>'+_0x33fc56+'</td>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<td\x20style=\x22padding:\x208px;\x22>'+Utils['escapeHtml'](formatTriggeredBy(_0x3df194['triggeredBy']))+'</td>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<td\x20style=\x22padding:\x208px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20class=\x22btn-ghost\x20btn-small\x22\x20onclick=\x22viewBuildOutput(\x27'+_0x78131c+'\x27)\x22\x20title=\x22View\x20build\x20output\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20View\x20Output\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</td>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</tr>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20';})['join']('')+'\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</tbody>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</table>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20';}catch(_0x19cd4e){if(_0x2bd90c!==state['selectedEnv'])return;console['error']('Failed\x20to\x20load\x20build\x20history:',_0x19cd4e),_0x42fbc6['innerHTML']='<p\x20class=\x22text-muted\x22\x20style=\x22color:\x20var(--color-error);\x22>Failed\x20to\x20load\x20build\x20history</p>';}},window['renderVolumeMounts']=function(_0x5c9178){const _0xc9dde3=document['getElementById']('volume-mounts-list'),_0x512036=_0x5c9178!==undefined?_0x5c9178:state['selectedEnvData']?.['volume_mounts']||[];if(!_0xc9dde3)return;if(_0x512036['length']===0x0){_0xc9dde3['innerHTML']='<p\x20class=\x22text-muted\x22>No\x20volume\x20mounts\x20configured.</p>';return;}_0xc9dde3['innerHTML']=_0x512036['map']((_0x5c887b,_0x1a3db2)=>'\x0a\x20\x20\x20\x20<div\x20class=\x22volume-mount-item\x22\x20style=\x22background:\x20var(--color-bg-secondary);\x20padding:\x2016px;\x20border-radius:\x208px;\x20margin-bottom:\x2012px;\x20border:\x201px\x20solid\x20var(--color-border);\x22>\x0a\x20\x20\x20\x20\x20\x20<div\x20style=\x22display:\x20flex;\x20justify-content:\x20space-between;\x20align-items:\x20flex-start;\x20margin-bottom:\x2012px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22flex:\x201;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22font-weight:\x20500;\x20margin-bottom:\x204px;\x22>'+Utils['escapeHtml'](_0x5c887b['description']||'Volume\x20Mount')+'</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22font-size:\x2013px;\x20color:\x20var(--color-text-muted);\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20'+(_0x5c887b['read_only']?'🔒\x20Read-only':'✏️\x20Read/Write')+'\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<button\x20class=\x22btn-ghost\x20btn-small\x22\x20onclick=\x22removeVolumeMount('+_0x1a3db2+')\x22\x20title=\x22Remove\x20mount\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span>🗑</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</button>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20<div\x20style=\x22display:\x20grid;\x20grid-template-columns:\x201fr\x201fr;\x20gap:\x2012px;\x20font-family:\x20var(--font-mono);\x20font-size:\x2013px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22color:\x20var(--color-text-muted);\x20font-size:\x2011px;\x20margin-bottom:\x204px;\x22>HOST\x20PATH</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22background:\x20var(--color-bg);\x20padding:\x206px\x208px;\x20border-radius:\x204px;\x20word-break:\x20break-all;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20'+Utils['escapeHtml'](_0x5c887b['host_path'])+'\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22color:\x20var(--color-text-muted);\x20font-size:\x2011px;\x20margin-bottom:\x204px;\x22>CONTAINER\x20PATH</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22background:\x20var(--color-bg);\x20padding:\x206px\x208px;\x20border-radius:\x204px;\x20word-break:\x20break-all;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20'+Utils['escapeHtml'](_0x5c887b['container_path'])+'\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20<div\x20style=\x22margin-top:\x208px;\x20text-align:\x20right;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<button\x20class=\x22btn-ghost\x20btn-small\x22\x20onclick=\x22editVolumeMount('+_0x1a3db2+')\x22\x20style=\x22font-size:\x2012px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span>✏️</span>\x20Edit\x0a\x20\x20\x20\x20\x20\x20\x20\x20</button>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20')['join']('');},document['getElementById']('add-volume-mount-btn')?.['addEventListener']('click',()=>{showVolumeMountDialog();}),window['showVolumeMountDialog']=function(_0x332832=null){const _0x468348=_0x332832!==null?state['selectedEnvData']['volume_mounts'][_0x332832]:null,_0x16355c=_0x468348!==null;Utils['showModal']({'title':_0x16355c?'Edit\x20Volume\x20Mount':'Add\x20Volume\x20Mount','content':'\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22modal-form\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20id=\x22volume-mount-error\x22\x20class=\x22modal-error\x22\x20style=\x22display:\x20none;\x20margin-bottom:\x2016px;\x20padding:\x2012px;\x20background:\x20var(--color-error-bg,\x20#fee);\x20border:\x201px\x20solid\x20var(--color-error,\x20#c00);\x20border-radius:\x206px;\x20color:\x20var(--color-error,\x20#c00);\x22></div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22form-single-column\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22form-row\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<label\x20for=\x22mount-description\x22>Description</label>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<input\x20type=\x22text\x22\x20id=\x22mount-description\x22\x20class=\x22form-input\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20placeholder=\x22e.g.,\x20Task\x20storage\x20directory\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20value=\x22'+Utils['escapeHtml'](_0x468348?.['description']||'')+'\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22form-row\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<label\x20for=\x22mount-host-path\x22>Host\x20Path</label>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<input\x20type=\x22text\x22\x20id=\x22mount-host-path\x22\x20class=\x22form-input\x20code-font\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20placeholder=\x22e.g.,\x20${TASK_STORAGE_PATH}\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20value=\x22'+Utils['escapeHtml'](_0x468348?.['host_path']||'')+'\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<p\x20class=\x22text-muted\x22\x20style=\x22margin-top:\x204px;\x20font-size:\x2012px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20Use\x20variables\x20like\x20${TASK_STORAGE_PATH},\x20${CODER_SETUP_PATH},\x20${SERVER_DATA_PATH}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</p>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22form-row\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<label\x20for=\x22mount-container-path\x22>Container\x20Path</label>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<input\x20type=\x22text\x22\x20id=\x22mount-container-path\x22\x20class=\x22form-input\x20code-font\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20placeholder=\x22e.g.,\x20/host-data/tasks\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20value=\x22'+Utils['escapeHtml'](_0x468348?.['container_path']||'')+'\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<p\x20class=\x22text-muted\x22\x20style=\x22margin-top:\x204px;\x20font-size:\x2012px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20Absolute\x20path\x20inside\x20the\x20container\x20where\x20the\x20volume\x20will\x20be\x20mounted\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</p>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22form-row\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<label\x20class=\x22toggle-switch\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<input\x20type=\x22checkbox\x22\x20id=\x22mount-read-only\x22\x20'+(_0x468348?.['read_only']?'checked':'')+'>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22toggle-slider\x22></span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22toggle-label\x22>Read-only</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</label>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<p\x20class=\x22text-muted\x22\x20style=\x22margin-top:\x204px;\x20font-size:\x2012px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20Prevent\x20containers\x20from\x20modifying\x20the\x20mounted\x20directory\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</p>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20','buttons':[{'text':'Cancel','className':'btn-secondary','onClick':()=>Utils['hideModal']()},{'text':_0x16355c?'Save':'Add','className':'btn-primary','onClick':()=>{const _0x367120=document['getElementById']('mount-description')['value']['trim'](),_0x50f713=document['getElementById']('mount-host-path')['value']['trim'](),_0x35a968=document['getElementById']('mount-container-path')['value']['trim'](),_0x1a2092=document['getElementById']('mount-read-only')['checked'],_0x5e9550=document['getElementById']('volume-mount-error');_0x5e9550['style']['display']='none',_0x5e9550['textContent']='';if(!_0x50f713||!_0x35a968){_0x5e9550['textContent']='Host\x20path\x20and\x20container\x20path\x20are\x20required',_0x5e9550['style']['display']='block';return;}if(!_0x35a968['startsWith']('/')){_0x5e9550['textContent']='Container\x20path\x20must\x20be\x20absolute\x20(start\x20with\x20/)',_0x5e9550['style']['display']='block';return;}const _0x47732e={'description':_0x367120,'host_path':_0x50f713,'container_path':_0x35a968,'read_only':_0x1a2092};!state['selectedEnvData']['volume_mounts']&&(state['selectedEnvData']['volume_mounts']=[]),_0x16355c?state['selectedEnvData']['volume_mounts'][_0x332832]=_0x47732e:state['selectedEnvData']['volume_mounts']['push'](_0x47732e),renderVolumeMounts(),state['hasUnsavedChanges']=!![],updateButtonStates(),Utils['hideModal'](),Utils['showToast']('Volume\x20mount\x20'+(_0x16355c?'updated':'added'),'success');}}]});},window['editVolumeMount']=function(_0x47ef05){showVolumeMountDialog(_0x47ef05);},window['removeVolumeMount']=function(_0x154543){Utils['showModal']({'title':'Remove\x20Volume\x20Mount','content':'\x0a\x20\x20\x20\x20\x20\x20<p>Are\x20you\x20sure\x20you\x20want\x20to\x20remove\x20this\x20volume\x20mount?</p>\x0a\x20\x20\x20\x20\x20\x20<div\x20style=\x22background:\x20var(--color-bg-secondary);\x20padding:\x2012px;\x20border-radius:\x206px;\x20margin-top:\x2012px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22font-weight:\x20500;\x20margin-bottom:\x204px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20'+Utils['escapeHtml'](state['selectedEnvData']['volume_mounts'][_0x154543]['description']||'Volume\x20Mount')+'\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22font-family:\x20var(--font-mono);\x20font-size:\x2012px;\x20color:\x20var(--color-text-muted);\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20'+Utils['escapeHtml'](state['selectedEnvData']['volume_mounts'][_0x154543]['host_path'])+'\x20→\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20'+Utils['escapeHtml'](state['selectedEnvData']['volume_mounts'][_0x154543]['container_path'])+'\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20','buttons':[{'text':'Cancel','className':'btn-secondary','onClick':()=>Utils['hideModal']()},{'text':'Remove','className':'btn-danger','onClick':()=>{state['selectedEnvData']['volume_mounts']['splice'](_0x154543,0x1),renderVolumeMounts(),state['hasUnsavedChanges']=!![],updateButtonStates(),Utils['hideModal'](),Utils['showToast']('Volume\x20mount\x20removed','success');}}]});};const accessTabState={'bindings':[],'roles':[],'teams':[],'users':[],'loaded':![]};async function loadAccessTab(){const _0x343619=document['getElementById']('access-loading'),_0x2f0919=document['getElementById']('access-empty'),_0x5ef8c2=document['getElementById']('access-bindings-container'),_0x349edf=document['getElementById']('access-add-binding-btn');if(!_0x343619)return;_0x343619['hidden']=![],_0x2f0919['hidden']=!![],_0x5ef8c2['style']['display']='none',document['getElementById']('access-add-form')['hidden']=!![];try{const [_0x54820c,_0x4119e2]=await Promise['all']([API['getBindings']({'resource_type':'environment','resource_id':state['selectedEnv']}),API['getRoleDefinitions']()]);accessTabState['bindings']=_0x54820c['bindings']||[],accessTabState['roles']=_0x4119e2['roles']||[];try{const _0x4fd05d=await API['getTeams']();accessTabState['teams']=_0x4fd05d['teams']||[];}catch{accessTabState['teams']=[];}try{const _0x458f8d=await API['getUsers']();accessTabState['users']=_0x458f8d['users']||[];}catch{accessTabState['users']=[];}accessTabState['loaded']=!![],_0x343619['hidden']=!![],updateTabBadge('badge-access',accessTabState['bindings']['length']);accessTabState['bindings']['length']===0x0?_0x2f0919['hidden']=![]:(_0x5ef8c2['style']['display']='',renderAccessBindings());const _0x5b3e9b=state['currentUser'];_0x5b3e9b?.['hasEnvironmentsManageAccess']&&(_0x349edf['hidden']=![]);}catch(_0x1a140e){_0x343619['hidden']=!![],Utils['showToast']('Failed\x20to\x20load\x20access\x20bindings:\x20'+_0x1a140e['message'],'error');}}function renderAccessBindings(){const _0x49c4ed=document['getElementById']('access-bindings-body');if(!_0x49c4ed)return;const _0x18f998=state['currentUser']?.['hasEnvironmentsManageAccess'];_0x49c4ed['innerHTML']=accessTabState['bindings']['map'](_0x33bcd2=>{const _0x29e2e7=_0x33bcd2['created_at']?new Date(_0x33bcd2['created_at'])['toLocaleDateString']():'—';return'\x0a\x20\x20\x20\x20\x20\x20<tr>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<td>'+Utils['escapeHtml'](_0x33bcd2['subject_name']||_0x33bcd2['subject_id'])+'</td>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<td><span\x20class=\x22tag\x22\x20style=\x22font-size:\x200.75em;\x20text-transform:\x20capitalize;\x22>'+Utils['escapeHtml'](_0x33bcd2['subject_type'])+'</span></td>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<td>'+Utils['escapeHtml'](_0x33bcd2['role_name']||_0x33bcd2['role_id'])+'</td>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<td>'+Utils['escapeHtml'](_0x33bcd2['created_by']||'—')+'</td>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<td\x20style=\x22white-space:\x20nowrap;\x22>'+_0x29e2e7+'</td>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<td>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20'+(_0x18f998?'<button\x20class=\x22btn-ghost\x20btn-small\x22\x20onclick=\x22window.removeAccessBinding(\x27'+_0x33bcd2['id']+'\x27)\x22\x20style=\x22color:\x20var(--color-danger);\x22>Remove</button>':'—')+'\x0a\x20\x20\x20\x20\x20\x20\x20\x20</td>\x0a\x20\x20\x20\x20\x20\x20</tr>';})['join']('');}function populateAccessSubjectSelect(){const _0x48b6f5=document['getElementById']('access-subject-type'),_0x2bea28=document['getElementById']('access-subject-id'),_0x4c2bac=_0x48b6f5?.['value'];if(!_0x2bea28)return;const _0x7b9fb1=new Set(accessTabState['bindings']['filter'](_0x504519=>_0x504519['subject_type']===_0x4c2bac)['map'](_0x2cd0ff=>_0x2cd0ff['subject_id'])),_0x15c6b9=_0x4c2bac==='team'?accessTabState['teams']['filter'](_0x378059=>!_0x7b9fb1['has'](_0x378059['id'])):accessTabState['users']['filter'](_0x3de7c9=>!_0x7b9fb1['has'](_0x3de7c9['id']));_0x2bea28['innerHTML']=_0x15c6b9['length']?_0x15c6b9['map'](_0x546522=>{const _0x3b730d=_0x4c2bac==='team'?_0x546522['name']:_0x546522['username']||_0x546522['name'];return'<option\x20value=\x22'+_0x546522['id']+'\x22>'+Utils['escapeHtml'](_0x3b730d)+'</option>';})['join'](''):'<option\x20value=\x22\x22>None\x20available</option>';}document['addEventListener']('DOMContentLoaded',()=>{document['getElementById']('access-add-binding-btn')?.['addEventListener']('click',()=>{const _0x24c4d7=document['getElementById']('access-role-id');_0x24c4d7&&(_0x24c4d7['innerHTML']=accessTabState['roles']['map'](_0x3c8b94=>'<option\x20value=\x22'+_0x3c8b94['id']+'\x22>'+Utils['escapeHtml'](_0x3c8b94['name'])+'</option>')['join']('')),populateAccessSubjectSelect(),document['getElementById']('access-add-form')['hidden']=![],document['getElementById']('access-add-binding-btn')['hidden']=!![];}),document['getElementById']('access-subject-type')?.['addEventListener']('change',populateAccessSubjectSelect),document['getElementById']('access-cancel-binding-btn')?.['addEventListener']('click',()=>{document['getElementById']('access-add-form')['hidden']=!![],document['getElementById']('access-add-binding-btn')['hidden']=![];}),document['getElementById']('access-save-binding-btn')?.['addEventListener']('click',async()=>{const _0x330149=document['getElementById']('access-subject-type')['value'],_0x2b8718=document['getElementById']('access-subject-id')['value'],_0x5ece37=document['getElementById']('access-role-id')['value'];if(!_0x2b8718||!_0x5ece37||!state['selectedEnv'])return;const _0x5609a7=document['getElementById']('access-save-binding-btn');_0x5609a7['disabled']=!![],_0x5609a7['textContent']='Adding…';try{await API['createBinding']({'subject_type':_0x330149,'subject_id':_0x2b8718,'role_id':_0x5ece37,'resource_type':'environment','resource_id':state['selectedEnv']}),Utils['showToast']('Binding\x20added','success'),document['getElementById']('access-add-form')['hidden']=!![],document['getElementById']('access-add-binding-btn')['hidden']=![],await loadAccessTab();}catch(_0x23af0d){Utils['showToast'](_0x23af0d['message'],'error');}finally{_0x5609a7['disabled']=![],_0x5609a7['textContent']='Add\x20Binding';}});}),window['removeAccessBinding']=async function(_0x38e4ac){try{await API['deleteBinding'](_0x38e4ac),Utils['showToast']('Binding\x20removed','success'),await loadAccessTab();}catch(_0x324b78){Utils['showToast'](_0x324b78['message'],'error');}};
|
|
1
|
+
import{API,Utils,CustomSelect,ConfirmDialog,AutocompleteSelect,initializeAdminMenu}from'./app.js';import{getCurrentTheme,initTheme,mountThemeToggle,onThemeChange}from'./theme.js';import*as _0x131d51 from'./git-status.js?v=2';import{parsePatchContent,renderUnifiedDiff,safeBase64}from'./diff-utils.js';import{buildAutomationTaskFilterHref,parseAutomationDeepLinkParams}from'./automation-links.js';import{AUTOMATION_MONTHLY_DAY_MAX,buildAutomationCronFromFormState,parseAutomationScheduleToFormState}from'./automation-schedule.js';let monacoLoaded=![];const monacoEditors=new Map(),getMonacoTheme=()=>getCurrentTheme()==='dark'?'vs-dark':'vs';onThemeChange(_0x12d4d5=>{window['monaco']?.['editor']&&monaco['editor']['setTheme'](_0x12d4d5==='dark'?'vs-dark':'vs');});let defaultAgentSelect=null,defaultAgentSelectInitializing=![],newEnvAgentSelect=null,automationInstructionsEditor=null;const automationCustomSelects={},AUTOMATION_MODAL_SELECT_IDS=['automation-frequency','automation-weekly-day','automation-monthly-day','automation-recurring-interval','automation-recurring-start-hour','automation-recurring-end-hour','automation-agent-name','automation-effort-level','automation-reasoning-level','automation-template-name'];let repoAutocomplete=null,newEnvRepoAutocomplete=null,editRepoAutocomplete=null,newRepoBranchAutocomplete=null,editRepoBranchAutocomplete=null;const SESSION_KEY_ENV='environments_selectedEnv',SESSION_KEY_TAB='environments_currentTab',state={'environments':[],'selectedEnv':null,'selectedEnvData':null,'currentTab':sessionStorage['getItem'](SESSION_KEY_TAB)||'overview','hasUnsavedChanges':![],'modifiedFiles':new Set(),'changedFiles':[],'setupRepoAuth':null,'currentUser':null,'currentFile':'Dockerfile','currentTemplate':null,'currentTemplateData':null,'currentRepo':null,'currentTest':null,'agentsContent':null,'readmeContent':null,'currentBuildSecret':null,'buildSecrets':[],'automations':[],'automationsLoadedEnv':null,'viewingAutomationId':null,'editingAutomationId':null,'automationModalMode':'create','availableModels':null,'availableModelsLoaded':![],'automationTemplateParamValues':{},'currentDeployProfile':null,'currentDeployProfileData':null,'profileHasUnsavedChanges':![],'profileScriptEditor':null,'secrets':[],'editingSecret':null,'gitProviders':[],'editingGitProvider':null,'editingGitProviderOriginalAuthMethod':null,'deploymentHistory':[],'currentDeploymentId':null,'deploymentPollInterval':null,'deploymentStartTime':null,'deploymentOutput':'','deploymentParamCache':{},'availableSkills':[],'availableSkillsLoaded':![],'availableSkillsLoading':![],'availableSkillsError':null,'skillsModalSelection':[],'skillsModalOpen':![],'parameterModalContext':null,'editingParamName':null,'parameterOptions':[],'uncommittedDiff':null,'uncommittedDiffFiles':null,'editingConnection':null};let secretValueStore='',secretValueVisible=![],lastCursorPosition=0x0,sshKeyValueStore='',sshKeyValueVisible=![],sshKeyLastCursorPosition=0x0;const KNOWN_POST_CLONE_ACTIONS=['none','npm\x20install','npm\x20ci','yarn','pnpm\x20install','pip\x20install\x20-r\x20requirements.txt','pip\x20install\x20-e\x20.','mvn\x20install\x20-DskipTests','./gradlew\x20build\x20-x\x20test','dotnet\x20restore','dotnet\x20build','composer\x20install','custom'];function getBranchAutocompleteInputValue(_0xa8f2c){return _0xa8f2c?.['input']?.['value']?.['trim']()||'';}function setBranchAutocompleteValue(_0x17c8ff,_0x45806e){if(!_0x17c8ff||!_0x17c8ff['input'])return;const _0x1c875=(_0x45806e||'')['trim']();_0x17c8ff['input']['value']=_0x1c875,_0x17c8ff['clearBtn']['hidden']=!_0x1c875,(!_0x1c875||_0x17c8ff['selectedItem']?.['name']!==_0x1c875)&&(_0x17c8ff['selectedItem']=null);}function clearBranchAutocompleteError(_0x5605cd){_0x5605cd?.['wrapper']&&_0x5605cd['wrapper']['classList']['remove']('input-error');}function setBranchAutocompleteErrorState(_0x22ad3d,_0x51bf5b){if(!_0x22ad3d?.['wrapper'])return;_0x22ad3d['wrapper']['classList']['toggle']('input-error',Boolean(_0x51bf5b));}function getNewRepoBranchValue(){return getBranchAutocompleteInputValue(newRepoBranchAutocomplete);}function setNewRepoBranchValue(_0x437294){setBranchAutocompleteValue(newRepoBranchAutocomplete,_0x437294);}function getEditRepoBranchValue(){return getBranchAutocompleteInputValue(editRepoBranchAutocomplete);}function setEditRepoBranchValue(_0x59374d){setBranchAutocompleteValue(editRepoBranchAutocomplete,_0x59374d);}function getNewRepoBranchContext(){const _0x2c947b=document['querySelector']('input[name=\x22repo-entry-mode\x22]:checked')?.['value']||'manual',_0x2b87b3=_0x2c947b==='provider'?document['getElementById']('new-repo-source-provider')?.['value']||'':'',_0x3a766e=_0x2c947b==='provider'?repoAutocomplete?repoAutocomplete['getSelectedItem']():null:null,_0x32884f=_0x2c947b==='provider'?_0x3a766e?.['clone_url']||_0x3a766e?.['url']||'':document['getElementById']('new-repo-url')?.['value']?.['trim']()||'';return{'providerName':_0x2b87b3,'repoUrl':_0x32884f};}function getEditRepoBranchContext(){const _0x29acd3=document['getElementById']('edit-repo-provider')?.['value']||'',_0x1f9098=document['getElementById']('repo-url')?.['value']?.['trim']()||'';return{'providerName':_0x29acd3,'repoUrl':_0x1f9098};}async function fetchRepoBranches({providerName:_0x27227c,repoUrl:_0x8cd061,query:_0x30a161}){if(!_0x27227c||!_0x8cd061)return[];const _0x2df6ac='/settings/git-providers/'+encodeURIComponent(_0x27227c)+'/branches';let _0x40938e=_0x2df6ac+'?repoUrl='+encodeURIComponent(_0x8cd061)+'&limit=100';_0x30a161&&_0x30a161['trim']()&&(_0x40938e+='&search='+encodeURIComponent(_0x30a161['trim']()));try{const _0x3358a5=await API['get'](_0x40938e);return _0x3358a5['branches']||[];}catch(_0x193ab7){console['error']('Failed\x20to\x20load\x20repository\x20branches:',_0x193ab7);throw _0x193ab7;}}function reloadNewRepoBranchSuggestions(){if(!newRepoBranchAutocomplete)return;const {providerName:_0x1440c9,repoUrl:_0x5ed8c4}=getNewRepoBranchContext();newRepoBranchAutocomplete['selectedItem']=null,newRepoBranchAutocomplete['clearBtn']['hidden']=!![];if(!_0x1440c9||!_0x5ed8c4){newRepoBranchAutocomplete['close']();return;}return newRepoBranchAutocomplete['loadAndShow']('');}function reloadEditRepoBranchSuggestions(){if(!editRepoBranchAutocomplete)return;const {providerName:_0x317c09,repoUrl:_0x3b0b5b}=getEditRepoBranchContext();editRepoBranchAutocomplete['selectedItem']=null,editRepoBranchAutocomplete['clearBtn']['hidden']=!![];if(!_0x317c09||!_0x3b0b5b){editRepoBranchAutocomplete['close']();return;}return editRepoBranchAutocomplete['loadAndShow']('');}function isKnownPostCloneAction(_0x167c86){return KNOWN_POST_CLONE_ACTIONS['includes'](_0x167c86);}document['addEventListener']('DOMContentLoaded',initialize);async function initialize(){try{initTheme(),mountThemeToggle(),await checkAdminAccess();const _0x4af8c2=await API['get']('/auth/me');state['currentUser']=_0x4af8c2['user'],await initializeAdminMenu(state['currentUser']),setupEventListeners(),await loadAvailableAutomationModels(),renderAutomationAgentOptions(),await loadEnvironments(),state['currentTab']!=='overview'&&switchTab(state['currentTab']),await handleAutomationDeepLinkParams(),await refreshRepositoryGitStatus(),await handleSetupRepoOAuthReturn(),setInterval(refreshRepositoryGitStatus,0x7530);}catch(_0x5dd1c6){console['error']('Initialization\x20error:',_0x5dd1c6),Utils['showError']('Failed\x20to\x20initialize\x20environment\x20management');}}async function checkAdminAccess(){try{const _0x68edcf=await API['getCurrentUser']();if(!_0x68edcf['hasEnvironmentsManage']){Utils['showToast']('Access\x20denied:\x20Environment\x20admin\x20privileges\x20required','error'),setTimeout(()=>{window['location']['href']='index.html';},0x7d0);return;}}catch(_0x528dee){window['location']['href']='login.html';}}function initializeCustomSelects(){if(!defaultAgentSelect){const _0x1b62c8=document['getElementById']('env-default-agent-wrapper');if(!_0x1b62c8){console['error']('Wrapper\x20element\x20not\x20found');return;}_0x1b62c8['innerHTML']='';const _0x46c7dd=document['createElement']('select');_0x46c7dd['id']='env-default-agent',_0x46c7dd['innerHTML']='\x0a\x20\x20\x20\x20\x20\x20<option\x20value=\x22claude\x22>Claude</option>\x0a\x20\x20\x20\x20\x20\x20<option\x20value=\x22codex\x22>Codex</option>\x0a\x20\x20\x20\x20\x20\x20<option\x20value=\x22gemini\x22>Gemini</option>\x0a\x20\x20\x20\x20',_0x1b62c8['appendChild'](_0x46c7dd),defaultAgentSelect=new CustomSelect(_0x46c7dd,{'searchable':![]}),_0x46c7dd['addEventListener']('change',()=>{if(defaultAgentSelectInitializing)return;markAsModified();});}}function setupEventListeners(){document['querySelectorAll']('.content-tab')['forEach'](_0x2e3d2b=>{_0x2e3d2b['addEventListener']('click',()=>switchTab(_0x2e3d2b['dataset']['tab']));}),document['getElementById']('repo-pull-btn')['addEventListener']('click',pullRepositoryChanges),document['getElementById']('repo-push-btn')['addEventListener']('click',pushRepositoryChanges),initGitConnectionsRequiredModal(),document['getElementById']('save-btn')['addEventListener']('click',saveChanges),document['getElementById']('repo-commit-btn')['addEventListener']('click',openCommitModal),document['getElementById']('repo-discard-btn')['addEventListener']('click',openDiscardModal),document['getElementById']('new-env-btn')['addEventListener']('click',createNewEnvironment),document['querySelector']('#commit-modal\x20.modal-close')['addEventListener']('click',closeCommitModal),document['getElementById']('commit-cancel-btn')['addEventListener']('click',closeCommitModal),document['getElementById']('commit-confirm-btn')['addEventListener']('click',commitAndPush),document['querySelector']('#discard-modal\x20.modal-close')['addEventListener']('click',closeDiscardModal),document['getElementById']('discard-cancel-btn')['addEventListener']('click',closeDiscardModal),document['getElementById']('discard-confirm-btn')['addEventListener']('click',confirmDiscard),document['querySelector']('#build-confirm-modal\x20.modal-close')['addEventListener']('click',closeBuildConfirmModal),document['getElementById']('build-confirm-cancel-btn')['addEventListener']('click',closeBuildConfirmModal),document['getElementById']('build-confirm-start-btn')['addEventListener']('click',confirmStartBuild),document['querySelector']('#base-image-required-modal\x20.modal-close')['addEventListener']('click',closeBaseImageRequiredModal),document['querySelector']('#base-image-required-modal\x20.modal-overlay')['addEventListener']('click',closeBaseImageRequiredModal),document['getElementById']('base-image-required-close-btn')['addEventListener']('click',closeBaseImageRequiredModal),document['getElementById']('base-image-required-open-btn')['addEventListener']('click',openBaseImageBuildFromRequiredModal),document['querySelector']('#new-env-modal\x20.modal-close')['addEventListener']('click',closeNewEnvModal),document['getElementById']('new-env-cancel-btn')['addEventListener']('click',closeNewEnvModal),document['getElementById']('new-env-create-btn')['addEventListener']('click',confirmCreateEnvironment),document['getElementById']('new-env-name')['addEventListener']('input',_0x186bc0=>{const _0x41d3e7=_0x186bc0['target']['value']['trim'](),_0x340bb7=document['getElementById']('new-env-image');!_0x340bb7['dataset']['userModified']&&(_0x340bb7['value']=_0x41d3e7);}),document['getElementById']('new-env-image')['addEventListener']('input',_0x5e9b91=>{const _0x196213=document['getElementById']('new-env-name')['value']['trim']();_0x5e9b91['target']['value']!==_0x196213?_0x5e9b91['target']['dataset']['userModified']='true':delete _0x5e9b91['target']['dataset']['userModified'];}),document['querySelector']('#delete-env-modal\x20.modal-close')['addEventListener']('click',closeDeleteEnvModal),document['getElementById']('delete-env-cancel-btn')['addEventListener']('click',closeDeleteEnvModal),document['getElementById']('delete-env-confirm-btn')['addEventListener']('click',confirmDeleteEnvironment),document['querySelector']('#add-repo-modal\x20.modal-close')['addEventListener']('click',closeAddRepoModal),document['getElementById']('add-repo-cancel-btn')['addEventListener']('click',closeAddRepoModal),document['getElementById']('add-repo-confirm-btn')['addEventListener']('click',confirmAddRepo),document['getElementById']('new-repo-branch-refresh-btn')['addEventListener']('click',_0x3e9bd3=>{_0x3e9bd3['preventDefault'](),reloadNewRepoBranchSuggestions();}),document['querySelector']('#delete-repo-modal\x20.modal-close')['addEventListener']('click',closeDeleteRepoModal),document['getElementById']('delete-repo-cancel-btn')['addEventListener']('click',closeDeleteRepoModal),document['getElementById']('delete-repo-confirm-btn')['addEventListener']('click',confirmDeleteRepo),document['querySelector']('#add-test-modal\x20.modal-close')['addEventListener']('click',closeAddTestModal),document['getElementById']('add-test-cancel-btn')['addEventListener']('click',closeAddTestModal),document['getElementById']('add-test-confirm-btn')['addEventListener']('click',confirmAddTest),document['querySelector']('#delete-test-modal\x20.modal-close')['addEventListener']('click',closeDeleteTestModal),document['getElementById']('delete-test-cancel-btn')['addEventListener']('click',closeDeleteTestModal),document['getElementById']('delete-test-confirm-btn')['addEventListener']('click',confirmDeleteTest),document['querySelector']('#add-template-modal\x20.modal-close')['addEventListener']('click',closeAddTemplateModal),document['getElementById']('add-template-cancel-btn')['addEventListener']('click',closeAddTemplateModal),document['getElementById']('add-template-confirm-btn')['addEventListener']('click',confirmAddTemplate),document['querySelector']('#delete-template-modal\x20.modal-close')['addEventListener']('click',closeDeleteTemplateModal),document['getElementById']('delete-template-cancel-btn')['addEventListener']('click',closeDeleteTemplateModal),document['getElementById']('delete-template-confirm-btn')['addEventListener']('click',confirmDeleteTemplate),document['querySelector']('#add-deploy-profile-modal\x20.modal-close')['addEventListener']('click',closeAddDeployProfileModal),document['getElementById']('add-deploy-profile-cancel-btn')['addEventListener']('click',closeAddDeployProfileModal),document['getElementById']('add-deploy-profile-confirm-btn')['addEventListener']('click',confirmAddDeployProfile),document['querySelector']('#delete-deploy-profile-modal\x20.modal-close')['addEventListener']('click',closeDeleteDeployProfileModal),document['getElementById']('delete-deploy-profile-cancel-btn')['addEventListener']('click',closeDeleteDeployProfileModal),document['getElementById']('delete-deploy-profile-confirm-btn')['addEventListener']('click',confirmDeleteDeployProfile),document['getElementById']('new-deploy-profile-tab')['addEventListener']('click',openAddDeployProfileModal),document['getElementById']('delete-deploy-profile-btn')['addEventListener']('click',openDeleteDeployProfileModal),document['getElementById']('profile-description')['addEventListener']('input',markProfileAsModified),document['getElementById']('add-profile-secret-btn')['addEventListener']('click',openAddProfileSecretModal),document['getElementById']('add-profile-parameter-btn')['addEventListener']('click',openAddProfileParameterModal),initDeploySectionToggles(),document['getElementById']('run-deploy-profile-btn')['addEventListener']('click',openRunDeploymentModal),document['querySelector']('#run-deployment-modal\x20.modal-close')['addEventListener']('click',closeRunDeploymentModal),document['querySelector']('#run-deployment-modal\x20.modal-overlay')['addEventListener']('click',closeRunDeploymentModal),document['getElementById']('run-deployment-cancel-btn')['addEventListener']('click',closeRunDeploymentModal),document['getElementById']('run-deployment-start-btn')['addEventListener']('click',startDeployment),document['getElementById']('cancel-deployment-btn')['addEventListener']('click',cancelDeploymentExecution),document['getElementById']('refresh-deploy-history-btn')['addEventListener']('click',()=>{state['selectedEnv']&&loadDeploymentHistory();}),document['getElementById']('add-secret-btn')['addEventListener']('click',openAddSecretModal),document['getElementById']('secrets-filter')['addEventListener']('change',renderSecrets),document['querySelector']('#secret-modal\x20.modal-close')['addEventListener']('click',closeSecretModal),document['getElementById']('secret-modal-cancel-btn')['addEventListener']('click',closeSecretModal),document['getElementById']('secret-modal-save-btn')['addEventListener']('click',saveSecret),document['getElementById']('secret-type-file')['addEventListener']('change',handleSecretTypeChange),document['getElementById']('secret-type-value')['addEventListener']('change',handleSecretTypeChange),document['getElementById']('secret-available-build')['addEventListener']('change',updateExposeAsVisibility),document['getElementById']('secret-available-tasks')['addEventListener']('change',updateExposeAsVisibility),document['getElementById']('secret-available-deploy')['addEventListener']('change',updateExposeAsVisibility),document['getElementById']('secret-expose-env')['addEventListener']('change',updateSecretTargetLabel),document['getElementById']('secret-expose-file')['addEventListener']('change',updateSecretTargetLabel),document['getElementById']('secret-source')['addEventListener']('input',debounce(validateSecretSourcePath,0x1f4)),document['getElementById']('secret-import-file-btn')['addEventListener']('click',()=>{document['getElementById']('secret-file-input')['click']();}),document['getElementById']('secret-file-input')['addEventListener']('change',handleSecretFileImport),document['querySelector']('.secret-toggle-visibility')['addEventListener']('click',toggleSecretValueVisibility);const _0x4aa457=document['getElementById']('secret-value');_0x4aa457['addEventListener']('beforeinput',handleSecretValueBeforeInput),_0x4aa457['addEventListener']('input',handleSecretValueInput),document['getElementById']('secret-git-pat-checkbox')['addEventListener']('change',handleGitPatCheckboxChange),document['getElementById']('secret-git-host')['addEventListener']('change',handleGitHostChange),document['querySelector']('#delete-secret-modal\x20.modal-close')['addEventListener']('click',closeDeleteSecretModal),document['getElementById']('delete-secret-cancel-btn')['addEventListener']('click',closeDeleteSecretModal),document['getElementById']('delete-secret-confirm-btn')['addEventListener']('click',confirmDeleteSecret),document['getElementById']('add-connection-btn')['addEventListener']('click',openAddConnectionModal),document['querySelector']('#connection-modal\x20.modal-close')['addEventListener']('click',closeConnectionModal),document['getElementById']('connection-modal-cancel-btn')['addEventListener']('click',closeConnectionModal),document['getElementById']('connection-modal-save-btn')['addEventListener']('click',saveConnection),document['getElementById']('connection-type-sqlserver')['addEventListener']('change',updateConnectionFormVisibility),document['getElementById']('connection-type-ibmi')['addEventListener']('change',updateConnectionFormVisibility),document['getElementById']('connection-type-ssh')['addEventListener']('change',updateConnectionFormVisibility),['feature-sql','feature-build','feature-interactive','feature-ssh','feature-sync']['forEach'](_0x25123b=>document['getElementById'](_0x25123b)['addEventListener']('change',updateConnectionFormVisibility)),document['getElementById']('feature-sync')['addEventListener']('change',_0x1930b8=>{const _0x5a969e=document['getElementById']('feature-ssh');_0x1930b8['target']['checked']?(_0x5a969e['checked']=!![],_0x5a969e['disabled']=!![]):_0x5a969e['disabled']=![];}),document['getElementById']('connection-available-tasks')['addEventListener']('change',updateConnectionFormVisibility),document['getElementById']('connection-available-deploy')['addEventListener']('change',updateConnectionFormVisibility),document['getElementById']('connection-verify-cert')['addEventListener']('change',_0x1acec3=>{document['getElementById']('connection-verify-cert-warning')['hidden']=_0x1acec3['target']['checked'];}),document['getElementById']('connection-host')['addEventListener']('input',syncHostToPuiBaseUrl),document['getElementById']('connection-pui-base-url')['addEventListener']('input',syncPuiBaseUrlToHost),document['getElementById']('connection-password-toggle')['addEventListener']('click',toggleConnectionPasswordVisibility),document['querySelector']('.connection-ssh-key-toggle')['addEventListener']('click',toggleSshKeyVisibility);const _0x52c74d=document['getElementById']('connection-ssh-private-key');_0x52c74d['addEventListener']('beforeinput',handleSshKeyBeforeInput),_0x52c74d['addEventListener']('input',handleSshKeyInput),document['getElementById']('connection-ssh-import-btn')['addEventListener']('click',()=>{document['getElementById']('connection-ssh-file-input')['click']();}),document['getElementById']('connection-ssh-file-input')['addEventListener']('change',handleSshKeyFileImport),document['getElementById']('connection-ssh-pubkey-import-btn')['addEventListener']('click',()=>{document['getElementById']('connection-ssh-pubkey-file-input')['click']();}),document['getElementById']('connection-ssh-pubkey-file-input')['addEventListener']('change',handleSshPubKeyFileImport),document['getElementById']('connection-generate-keypair-btn')['addEventListener']('click',generateKeypair),document['getElementById']('connection-test-sql-btn')['addEventListener']('click',()=>testConnection('sql')),document['getElementById']('connection-test-ssh-btn')['addEventListener']('click',()=>testConnection('ssh')),document['getElementById']('connection-install-key-btn')['addEventListener']('click',openInstallKeyModal),document['querySelector']('#install-key-modal\x20.modal-close')['addEventListener']('click',closeInstallKeyModal),document['getElementById']('install-key-cancel-btn')['addEventListener']('click',closeInstallKeyModal),document['getElementById']('install-key-confirm-btn')['addEventListener']('click',installPublicKey),document['getElementById']('install-key-password-toggle')['addEventListener']('click',()=>{const _0x139dd6=document['getElementById']('install-key-password'),_0x24649c=document['getElementById']('install-key-password-toggle'),_0xdac9a1=_0x139dd6['type']==='password';_0x139dd6['type']=_0xdac9a1?'text':'password',_0x24649c['querySelector']('.eye-open')['style']['display']=_0xdac9a1?'none':'',_0x24649c['querySelector']('.eye-closed')['style']['display']=_0xdac9a1?'':'none';}),document['getElementById']('connection-ibmi-helper-link')['addEventListener']('click',_0x1ef88f=>{_0x1ef88f['preventDefault'](),openIbmiHelperDialog();}),document['querySelector']('#ibmi-helper-modal\x20.modal-close')['addEventListener']('click',()=>document['getElementById']('ibmi-helper-modal')['hidden']=!![]),document['getElementById']('ibmi-helper-close-btn')['addEventListener']('click',()=>document['getElementById']('ibmi-helper-modal')['hidden']=!![]),document['querySelector']('#delete-connection-modal\x20.modal-close')['addEventListener']('click',closeDeleteConnectionModal),document['getElementById']('delete-connection-cancel-btn')['addEventListener']('click',closeDeleteConnectionModal),document['getElementById']('delete-connection-confirm-btn')['addEventListener']('click',confirmDeleteConnection),document['querySelectorAll']('input[name=\x22repo-entry-mode\x22]')['forEach'](_0x69149=>{_0x69149['addEventListener']('change',onRepoEntryModeChange);}),document['getElementById']('new-repo-source-provider')['addEventListener']('change',onRepoSourceProviderChange),document['querySelector']('#profile-secret-modal\x20.modal-close')['addEventListener']('click',closeProfileSecretModal),document['querySelector']('#profile-secret-modal\x20.modal-overlay')['addEventListener']('click',closeProfileSecretModal),document['getElementById']('profile-secret-cancel-btn')['addEventListener']('click',closeProfileSecretModal),document['getElementById']('profile-secret-save-btn')['addEventListener']('click',saveProfileSecret),document['getElementById']('profile-secret-name')['addEventListener']('change',updateProfileSecretInfo),document['querySelector']('#profile-parameter-modal\x20.modal-close')['addEventListener']('click',closeProfileParameterModal),document['querySelector']('#profile-parameter-modal\x20.modal-overlay')['addEventListener']('click',closeProfileParameterModal),document['getElementById']('profile-parameter-cancel-btn')['addEventListener']('click',closeProfileParameterModal),document['getElementById']('profile-parameter-save-btn')['addEventListener']('click',saveProfileParameter),document['getElementById']('profile-param-type')['addEventListener']('change',updateProfileParamTypeVisibility),document['getElementById']('profile-param-add-option-btn')['addEventListener']('click',addParameterOption),document['querySelector']('#uncommitted-changes-modal\x20.modal-close')['addEventListener']('click',closeUncommittedChangesModal),document['getElementById']('uncommitted-changes-close-btn')['addEventListener']('click',closeUncommittedChangesModal),document['getElementById']('repo-status')['addEventListener']('click',handleRepoStatusClick);const _0x181972=document['getElementById']('delete-repo-btn');_0x181972&&_0x181972['addEventListener']('click',()=>{state['currentRepo']!==null&&removeRepo(state['currentRepo']);});const _0x48cf23=document['getElementById']('delete-test-btn');_0x48cf23&&_0x48cf23['addEventListener']('click',()=>{state['currentTest']!==null&&removeTest(state['currentTest']);});const _0x56528a=document['getElementById']('delete-template-btn');_0x56528a&&_0x56528a['addEventListener']('click',()=>{state['currentTemplate']!==null&&removeTemplate(state['currentTemplate']);});document['getElementById']('env-description')['addEventListener']('input',markAsModified),document['getElementById']('env-image-name')['addEventListener']('input',markAsModified),document['getElementById']('env-timezone')['addEventListener']('input',markAsModified),document['getElementById']('env-screen-render-url')['addEventListener']('input',markAsModified);const _0x59a44a=document['getElementById']('env-skills-manage-btn');if(_0x59a44a)_0x59a44a['addEventListener']('click',openSkillsModal);const _0xb72b60=document['getElementById']('skills-modal');if(_0xb72b60){const _0x2b3a98=_0xb72b60['querySelector']('.modal-close'),_0x167aa8=_0xb72b60['querySelector']('.modal-overlay'),_0x22ac23=document['getElementById']('skills-modal-cancel-btn'),_0xdaf150=document['getElementById']('skills-modal-apply-btn'),_0x36b448=document['getElementById']('skills-modal-search-input'),_0x4bcbaa=document['getElementById']('skills-modal-search-clear');_0x2b3a98?.['addEventListener']('click',closeSkillsModal),_0x167aa8?.['addEventListener']('click',closeSkillsModal),_0x22ac23?.['addEventListener']('click',closeSkillsModal),_0xdaf150?.['addEventListener']('click',applySkillsModalSelection),_0x36b448?.['addEventListener']('input',renderSkillsModal),_0x4bcbaa?.['addEventListener']('click',()=>{_0x36b448&&(_0x36b448['value']='',_0x36b448['focus']()),renderSkillsModal();});}const _0x2f074a=document['getElementById']('actions-menu-btn'),_0x480664=document['getElementById']('actions-menu');_0x2f074a['addEventListener']('click',_0x5ba4f2=>{_0x5ba4f2['stopPropagation']();const _0x11ccd1=document['getElementById']('admin-menu');if(_0x11ccd1)_0x11ccd1['hidden']=!![];_0x480664['hidden']=!_0x480664['hidden'];}),document['addEventListener']('click',_0x401932=>{!_0x480664['hidden']&&!_0x480664['contains'](_0x401932['target'])&&(_0x480664['hidden']=!![]);}),_0x480664['addEventListener']('click',()=>{_0x480664['hidden']=!![];}),document['getElementById']('build-base-image-btn')?.['addEventListener']('click',openBaseImageBuildModal),document['querySelector']('#base-image-build-modal\x20.modal-close')['addEventListener']('click',closeBaseImageBuildModal),document['querySelector']('#base-image-build-modal\x20.modal-overlay')['addEventListener']('click',closeBaseImageBuildModal),document['getElementById']('base-image-build-cancel-btn')['addEventListener']('click',closeBaseImageBuildModal),document['getElementById']('base-image-build-start-btn')['addEventListener']('click',startBaseImageBuild),document['getElementById']('base-image-refresh-history-btn')['addEventListener']('click',loadBaseImageBuildHistory),document['getElementById']('delete-env-btn')['addEventListener']('click',deleteEnvironment),document['getElementById']('env-rename-btn')['addEventListener']('click',openRenameEnvModal),document['getElementById']('rename-env-cancel-btn')['addEventListener']('click',closeRenameEnvModal),document['getElementById']('rename-env-confirm-btn')['addEventListener']('click',confirmRenameEnvironment),document['getElementById']('rename-env-modal')['querySelector']('.modal-close')['addEventListener']('click',closeRenameEnvModal),document['getElementById']('rename-env-modal')['querySelector']('.modal-overlay')['addEventListener']('click',closeRenameEnvModal),setupEnvTabsScrolling(),setupContentNavScrolling();}function setupEnvTabsScrolling(){const _0x252e5c=document['getElementById']('env-tabs-wrapper'),_0x232d8d=document['getElementById']('env-tabs-scroll-left'),_0x3dcc89=document['getElementById']('env-tabs-scroll-right');if(!_0x252e5c||!_0x232d8d||!_0x3dcc89)return;const _0x411e2a=0xc8;function _0x3138e7(){const {scrollLeft:_0x5d4252,scrollWidth:_0xcc1d04,clientWidth:_0x30ea9d}=_0x252e5c,_0x1ca030=_0x5d4252>0x1,_0x2ff457=_0x5d4252<_0xcc1d04-_0x30ea9d-0x1;_0x232d8d['classList']['toggle']('visible',_0x1ca030),_0x3dcc89['classList']['toggle']('visible',_0x2ff457),_0x252e5c['classList']['toggle']('fade-left',_0x1ca030),_0x252e5c['classList']['toggle']('fade-right',_0x2ff457);}_0x232d8d['addEventListener']('click',()=>{_0x252e5c['scrollBy']({'left':-_0x411e2a,'behavior':'smooth'});}),_0x3dcc89['addEventListener']('click',()=>{_0x252e5c['scrollBy']({'left':_0x411e2a,'behavior':'smooth'});}),_0x252e5c['addEventListener']('scroll',_0x3138e7);const _0x7ce2c9=new ResizeObserver(()=>{_0x3138e7();});_0x7ce2c9['observe'](_0x252e5c),_0x3138e7(),window['updateEnvTabsScrollState']=_0x3138e7;}function scrollToActiveEnvTab(){const _0x58e5d5=document['getElementById']('env-tabs-wrapper'),_0x14d922=document['querySelector']('.env-tab.active');if(!_0x58e5d5||!_0x14d922)return;const _0x12e022=_0x58e5d5['getBoundingClientRect'](),_0x27486a=_0x14d922['getBoundingClientRect']();if(_0x27486a['left']<_0x12e022['left'])_0x58e5d5['scrollBy']({'left':_0x27486a['left']-_0x12e022['left']-0x10,'behavior':'smooth'});else _0x27486a['right']>_0x12e022['right']&&_0x58e5d5['scrollBy']({'left':_0x27486a['right']-_0x12e022['right']+0x10,'behavior':'smooth'});}function setupContentNavScrolling(){const _0x5b8a6c=document['getElementById']('content-nav'),_0x5c0083=document['getElementById']('content-nav-scroll-left'),_0x3d8e95=document['getElementById']('content-nav-scroll-right');if(!_0x5b8a6c||!_0x5c0083||!_0x3d8e95)return;const _0x3f48f7=0x96;function _0x136695(){const {scrollLeft:_0x344609,scrollWidth:_0x54f314,clientWidth:_0x58f33a}=_0x5b8a6c,_0x78900c=_0x344609>0x1,_0x18a1bb=_0x344609<_0x54f314-_0x58f33a-0x1;_0x5c0083['classList']['toggle']('visible',_0x78900c),_0x3d8e95['classList']['toggle']('visible',_0x18a1bb),_0x5b8a6c['classList']['toggle']('fade-left',_0x78900c),_0x5b8a6c['classList']['toggle']('fade-right',_0x18a1bb);}_0x5c0083['addEventListener']('click',()=>{_0x5b8a6c['scrollBy']({'left':-_0x3f48f7,'behavior':'smooth'});}),_0x3d8e95['addEventListener']('click',()=>{_0x5b8a6c['scrollBy']({'left':_0x3f48f7,'behavior':'smooth'});}),_0x5b8a6c['addEventListener']('scroll',_0x136695);const _0x4d5c53=new ResizeObserver(()=>{_0x136695();});_0x4d5c53['observe'](_0x5b8a6c),_0x136695(),window['updateContentNavScrollState']=_0x136695;}function scrollToActiveContentTab(){const _0x5ac26d=document['getElementById']('content-nav'),_0xc8ec97=document['querySelector']('.content-tab.active');if(!_0x5ac26d||!_0xc8ec97)return;const _0x5eff96=_0x5ac26d['getBoundingClientRect'](),_0x2c6ba5=_0xc8ec97['getBoundingClientRect']();if(_0x2c6ba5['left']<_0x5eff96['left'])_0x5ac26d['scrollBy']({'left':_0x2c6ba5['left']-_0x5eff96['left']-0x10,'behavior':'smooth'});else _0x2c6ba5['right']>_0x5eff96['right']&&_0x5ac26d['scrollBy']({'left':_0x2c6ba5['right']-_0x5eff96['right']+0x10,'behavior':'smooth'});}async function loadEnvironments(){try{const _0x4fc514=await API['get']('/environments');state['environments']=_0x4fc514['environments']||[],renderEnvironmentsList();if(state['environments']['length']>0x0){const _0x543ada=sessionStorage['getItem'](SESSION_KEY_ENV),_0x19215f=_0x4fc514['default_environment'];let _0x1fc7ce;if(_0x543ada&&state['environments']['find'](_0x57249a=>_0x57249a['name']===_0x543ada))_0x1fc7ce=_0x543ada;else _0x19215f&&state['environments']['find'](_0x3e63d6=>_0x3e63d6['name']===_0x19215f)?_0x1fc7ce=_0x19215f:_0x1fc7ce=state['environments'][0x0]['name'];await selectEnvironment(_0x1fc7ce);}}catch(_0x1c41c9){console['error']('Failed\x20to\x20load\x20environments:',_0x1c41c9),document['getElementById']('env-tabs')['innerHTML']='<div\x20class=\x22error\x22>Failed\x20to\x20load\x20environments</div>';}}function renderEnvironmentsList(){const _0x3c9f7c=document['getElementById']('env-tabs');if(state['environments']['length']===0x0){_0x3c9f7c['innerHTML']='<div\x20class=\x22empty-state-inline\x22>No\x20environments\x20found</div>';return;}_0x3c9f7c['innerHTML']=state['environments']['map'](_0x1a6b20=>'\x0a\x20\x20\x20\x20<button\x20class=\x22env-tab\x20'+(_0x1a6b20['name']===state['selectedEnv']?'active':'')+'\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20data-env=\x22'+_0x1a6b20['name']+'\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20onclick=\x22selectEnvironment(\x27'+_0x1a6b20['name']+'\x27)\x22>\x0a\x20\x20\x20\x20\x20\x20'+_0x1a6b20['name']+'\x0a\x20\x20\x20\x20</button>\x0a\x20\x20')['join'](''),window['updateEnvTabsScrollState']&&requestAnimationFrame(()=>{window['updateEnvTabsScrollState']();});}window['selectEnvironment']=async function(_0x48d579){if(state['hasUnsavedChanges']){const _0x29be34=await ConfirmDialog['show']({'title':'Unsaved\x20Changes','message':'You\x20have\x20unsaved\x20changes\x20that\x20will\x20be\x20lost.\x20Continue?','confirmText':'Continue','danger':!![]});if(!_0x29be34)return;}const _0x20f785=state['selectedEnv'];_0x20f785&&_0x20f785!==_0x48d579&&resetBuildPanelForEnvironmentChange(),state['selectedEnv']=_0x48d579,sessionStorage['setItem'](SESSION_KEY_ENV,_0x48d579),state['hasUnsavedChanges']=![],document['querySelectorAll']('.env-tab')['forEach'](_0x4ce85f=>{_0x4ce85f['classList']['toggle']('active',_0x4ce85f['dataset']['env']===_0x48d579);}),scrollToActiveEnvTab(),document['getElementById']('env-empty-state')['hidden']=!![],document['getElementById']('env-details')['hidden']=![],await loadEnvironmentDetails(_0x48d579);};async function loadEnvironmentDetails(_0x46b0dd){try{const _0x443773=await API['get']('/environments/'+_0x46b0dd);if(_0x46b0dd!==state['selectedEnv'])return;state['selectedEnvData']=_0x443773,state['originalTemplates']=(_0x443773['templates']||[])['map'](_0x1362ae=>_0x1362ae['filename']),state['hasUnsavedChanges']=![],state['currentRepo']=null,cleanupEditRepoAutocomplete();const _0x12122a=['server-command-editor','file-editor','script-editor','template-md-editor'];for(const _0x120b97 of _0x12122a){const _0x1159ad=monacoEditors['get'](_0x120b97);_0x1159ad&&(_0x1159ad['dispose'](),monacoEditors['delete'](_0x120b97));}const _0x2e401d=['agents-editor','readme-editor'];for(const _0x2c03ec of _0x2e401d){window['MarkdownFileEditor']&&window['MarkdownFileEditor']['has'](_0x2c03ec)&&window['MarkdownFileEditor']['dispose'](_0x2c03ec);const _0x5461f1=monacoEditors['get'](_0x2c03ec);_0x5461f1&&(_0x5461f1['dispose'](),monacoEditors['delete'](_0x2c03ec));}state['currentTest']=null,state['currentTemplate']=null,state['currentDeployProfile']=null,state['currentDeployProfileData']=null,state['readmeContent']=null,state['agentsContent']=null,currentScript='pre-clone',state['currentDeploymentId']=null,stopDeploymentPolling();const _0x19ba45=document['getElementById']('deployment-progress-panel');_0x19ba45&&(_0x19ba45['hidden']=!![]),state['deploymentParamCache']={},updateButtonStates(),renderEnvironmentDetails(),setupTabEventListeners(),state['currentTab']==='deploy'&&loadDeploymentHistory();}catch(_0x94b8f3){console['error']('Failed\x20to\x20load\x20environment\x20details:',_0x94b8f3),Utils['showError']('Failed\x20to\x20load\x20environment\x20details');}}function setupTabEventListeners(){const _0x524bcd=document['getElementById']('rebuild-schedule-enabled-build-tab'),_0x257bcf=document['getElementById']('rebuild-interval-build-tab');if(_0x524bcd)_0x524bcd['addEventListener']('change',toggleRebuildSchedule);if(_0x257bcf)_0x257bcf['addEventListener']('input',markAsModified);const _0x1ba998=document['getElementById']('server-enabled'),_0x4652ea=document['getElementById']('server-name'),_0x56980d=document['getElementById']('server-proxy'),_0x37d4c1=document['getElementById']('server-qa-url'),_0x5bb10f=document['getElementById']('server-auth-user-property'),_0x183239=document['getElementById']('server-auth-password-property'),_0x33f16f=document['getElementById']('add-port-btn'),_0x16236b=document['getElementById']('add-url-btn'),_0x3c48f6=document['getElementById']('clear-primary-url-btn'),_0x244506=document['getElementById']('add-proxy-header-btn'),_0x8b077d=document['getElementById']('add-port-qa-url-btn');if(_0x1ba998)_0x1ba998['addEventListener']('change',toggleServerConfig);if(_0x4652ea)_0x4652ea['addEventListener']('input',markAsModified);if(_0x56980d)_0x56980d['addEventListener']('input',markAsModified);if(_0x37d4c1)_0x37d4c1['addEventListener']('input',markAsModified);if(_0x5bb10f)_0x5bb10f['addEventListener']('input',markAsModified);if(_0x183239)_0x183239['addEventListener']('input',markAsModified);if(_0x33f16f)_0x33f16f['addEventListener']('click',addPort);if(_0x16236b)_0x16236b['addEventListener']('click',addURL);if(_0x3c48f6)_0x3c48f6['addEventListener']('click',clearPrimaryURL);if(_0x244506)_0x244506['addEventListener']('click',addProxyHeader);if(_0x8b077d)_0x8b077d['addEventListener']('click',addPortQaUrl);const _0x347d43=document['getElementById']('agents-editor'),_0x3c58e4=document['getElementById']('preview-agents-btn');_0x347d43&&_0x347d43['addEventListener']('input',()=>{markAsModified(),updateAgentStats();});if(_0x3c58e4)_0x3c58e4['addEventListener']('click',toggleAgentsPreview);document['querySelectorAll']('#scripts-section-body\x20.script-tab')['forEach'](_0x4f5963=>{_0x4f5963['addEventListener']('click',()=>{saveCurrentScriptToState(),switchScript(_0x4f5963['dataset']['script']);});});const _0x31cfcb=document['getElementById']('scripts-section-header');_0x31cfcb&&_0x31cfcb['addEventListener']('click',toggleScriptsSection);const _0x4d9d51=document['getElementById']('preview-dockerfile-btn');_0x4d9d51&&_0x4d9d51['addEventListener']('click',showDockerfilePreview);const _0x3810cb=document['getElementById']('dockerfile-preview-modal');_0x3810cb&&(_0x3810cb['querySelector']('.modal-close')['addEventListener']('click',closeDockerfilePreviewModal),_0x3810cb['querySelector']('.modal-overlay')['addEventListener']('click',closeDockerfilePreviewModal),document['getElementById']('dockerfile-preview-close-btn')['addEventListener']('click',closeDockerfilePreviewModal),document['getElementById']('dockerfile-copy-btn')['addEventListener']('click',copyDockerfileToClipboard));const _0x34553c=document['getElementById']('preview-template-btn');if(_0x34553c)_0x34553c['addEventListener']('click',toggleTemplatePreview);initializeAutomationFormOptions(),initializeAutomationModalCustomSelects(),initializeAutomationInstructionsEditor();const _0x493716=document['getElementById']('add-automation-btn');if(_0x493716)_0x493716['addEventListener']('click',()=>openAutomationModal('create'));const _0x190116=document['getElementById']('automations-empty-create-btn');if(_0x190116)_0x190116['addEventListener']('click',()=>openAutomationModal('create'));const _0x1c5b20=document['getElementById']('automation-history-back-btn');if(_0x1c5b20)_0x1c5b20['addEventListener']('click',closeAutomationHistoryView);const _0x307904=document['getElementById']('automation-history-run-btn');if(_0x307904)_0x307904['addEventListener']('click',triggerViewedAutomation);const _0x95d089=document['getElementById']('automations-table-body');_0x95d089&&(_0x95d089['addEventListener']('click',handleAutomationTableActionClick),_0x95d089['addEventListener']('change',handleAutomationTableToggleChange));const _0x1f88b4=document['getElementById']('automation-modal'),_0x5b880d=_0x1f88b4?.['querySelector']('.modal-overlay');if(_0x5b880d)_0x5b880d['addEventListener']('click',closeAutomationModal);const _0x533331=document['getElementById']('automation-modal-close');if(_0x533331)_0x533331['addEventListener']('click',closeAutomationModal);const _0x5f451d=document['getElementById']('automation-cancel-btn');if(_0x5f451d)_0x5f451d['addEventListener']('click',closeAutomationModal);const _0x2cbe31=document['getElementById']('automation-save-btn');if(_0x2cbe31)_0x2cbe31['addEventListener']('click',saveAutomationFromModal);const _0x58151c=document['getElementById']('automation-frequency');_0x58151c&&_0x58151c['addEventListener']('change',()=>{updateAutomationFrequencyFields(),updateAutomationScheduleSummary();});document['querySelectorAll']('#automation-daily-time,\x20#automation-weekly-day,\x20#automation-weekly-time,\x20#automation-monthly-day,\x20#automation-monthly-time,\x20#automation-recurring-interval,\x20#automation-recurring-start-hour,\x20#automation-recurring-end-hour,\x20#automation-custom-cron')['forEach'](_0x353de1=>{_0x353de1['addEventListener']('change',updateAutomationScheduleSummary),_0x353de1['addEventListener']('input',updateAutomationScheduleSummary);});const _0x4aeff9=document['getElementById']('automation-recurring-days');_0x4aeff9&&_0x4aeff9['addEventListener']('change',updateAutomationScheduleSummary);const _0x227d80=document['getElementById']('automation-agent-name');if(_0x227d80)_0x227d80['addEventListener']('change',updateAutomationAgentFields);document['querySelectorAll']('input[name=\x22automation-task-mode\x22]')['forEach'](_0x2c97eb=>{_0x2c97eb['addEventListener']('change',updateAutomationTaskMode);});const _0x5a89de=document['getElementById']('automation-template-name');_0x5a89de&&_0x5a89de['addEventListener']('change',()=>{renderAutomationTemplateParameters();});}function updateTabBadge(_0x5973be,_0x40f127){const _0x23520a=document['getElementById'](_0x5973be);if(!_0x23520a)return;_0x40f127>0x0?(_0x23520a['textContent']=_0x40f127,_0x23520a['hidden']=![]):_0x23520a['hidden']=!![];}function renderEnvironmentDetails(){const _0x3fe2b5=state['selectedEnvData'];updateTabBadge('badge-secrets',0x0),updateTabBadge('badge-automations',0x0),updateTabBadge('badge-access',0x0),updateTabBadge('badge-deploy',(_0x3fe2b5['deployment_profiles']||[])['length']),document['getElementById']('env-name-display')['textContent']=_0x3fe2b5['name'],document['getElementById']('env-description-display')['textContent']=_0x3fe2b5['description']||'No\x20description',initializeCustomSelects(),defaultAgentSelectInitializing=!![],document['getElementById']('env-description')['value']=_0x3fe2b5['description']||'',defaultAgentSelect['select'](_0x3fe2b5['default_agent']||'claude'),document['getElementById']('env-image-name')['value']=_0x3fe2b5['image_name']||'',document['getElementById']('env-timezone')['value']=_0x3fe2b5['timezone']||'',document['getElementById']('env-screen-render-url')['value']=_0x3fe2b5['screenRenderUrl']||'',state['selectedEnvData']['skills']=Array['isArray'](_0x3fe2b5['skills'])?_0x3fe2b5['skills']:[];const _0x395ce2=_0x3fe2b5['rebuild_schedule']||{},_0x3e97ad=_0x395ce2['enabled']===!![];document['getElementById']('rebuild-schedule-enabled-build-tab')['checked']=_0x3e97ad,document['getElementById']('rebuild-interval-build-tab')['value']=_0x395ce2['interval_hours']||0x18,document['getElementById']('rebuild-schedule-config-build-tab')['hidden']=!_0x3e97ad,defaultAgentSelectInitializing=![];const _0x1ec8b5=_0x3fe2b5['repos']?.['length']||0x0,_0x5d2f9f=Object['keys'](_0x3fe2b5['tests']||{})['length'],_0xcf5ae4=_0x3fe2b5['templates']?.['length']||0x0,_0x1bce7b=_0x3fe2b5['deployment_profiles']?.['length']||0x0;document['getElementById']('stat-repos')['textContent']=_0x1ec8b5,document['getElementById']('stat-repos-label')['textContent']=_0x1ec8b5===0x1?'Repository':'Repositories',document['getElementById']('stat-tests')['textContent']=_0x5d2f9f,document['getElementById']('stat-tests-label')['textContent']=_0x5d2f9f===0x1?'Test\x20Command':'Test\x20Commands',document['getElementById']('stat-templates')['textContent']=_0xcf5ae4,document['getElementById']('stat-templates-label')['textContent']=_0xcf5ae4===0x1?'Template':'Templates',document['getElementById']('stat-deploy-profiles')['textContent']=_0x1bce7b,document['getElementById']('stat-deploy-profiles-label')['textContent']=_0x1bce7b===0x1?'Deploy\x20Profile':'Deploy\x20Profiles',renderReadme(),renderEnvironmentSkills();const _0xe5abfc=state['selectedEnv'];loadAvailableSkills()['then'](()=>{if(state['selectedEnv']!==_0xe5abfc)return;renderEnvironmentSkills(),state['skillsModalOpen']&&renderSkillsModal();}),renderRepos(),renderServerConfig(),renderAgentInstructions(),renderTests(),renderTemplates(),state['viewingAutomationId']=null,closeAutomationHistoryView(),renderAutomationAgentOptions(_0x3fe2b5['default_agent']||''),renderAutomations();const _0x20e271=state['selectedEnv'];loadSecrets()['then'](()=>{if(state['selectedEnv']!==_0x20e271)return;renderSecrets();}),loadConnections(),renderConnections();const _0x3c5003=state['selectedEnv'];API['getBindings']({'environment':state['selectedEnv']})['then'](_0x551833=>{if(state['selectedEnv']!==_0x3c5003)return;updateTabBadge('badge-access',(_0x551833['bindings']||[])['length']);})['catch'](()=>{}),state['currentTab']==='build'&&loadBuildHistory();}async function loadAvailableSkills(){if(state['availableSkillsLoaded']||state['availableSkillsLoading'])return;state['availableSkillsLoading']=!![],state['availableSkillsError']=null;try{const _0x30a520=await API['getSkills']();state['availableSkills']=_0x30a520['skills']||[],state['availableSkillsLoaded']=!![];}catch(_0x591616){console['error']('Failed\x20to\x20load\x20skills:',_0x591616),state['availableSkillsError']=_0x591616['message']||'Failed\x20to\x20load\x20skills.';}finally{state['availableSkillsLoading']=![];}}function getSkillDisplayInfo(_0x4fb8d8){const _0x2c4f99=state['availableSkills']['find'](_0x439231=>_0x439231['id']===_0x4fb8d8);if(_0x2c4f99)return{'id':_0x2c4f99['id'],'name':_0x2c4f99['name']||_0x2c4f99['id'],'description':_0x2c4f99['description']||''};return{'id':_0x4fb8d8,'name':_0x4fb8d8,'description':''};}function renderEnvironmentSkills(){const _0x52d8f4=document['getElementById']('env-skills-chips'),_0x4c3364=document['getElementById']('env-skills-empty');if(!_0x52d8f4||!_0x4c3364)return;const _0x232434=state['selectedEnvData']?.['skills']||[];_0x52d8f4['innerHTML']='';if(_0x232434['length']===0x0){_0x52d8f4['hidden']=!![],_0x52d8f4['classList']['add']('skills-chip-grid-empty'),_0x4c3364['hidden']=![];return;}_0x52d8f4['hidden']=![],_0x52d8f4['classList']['remove']('skills-chip-grid-empty'),_0x4c3364['hidden']=!![],_0x232434['forEach'](_0xcf4072=>{const _0x26fcbc=getSkillDisplayInfo(_0xcf4072),_0x1df9ee=document['createElement']('div');_0x1df9ee['className']='skill-chip',_0x1df9ee['dataset']['skillId']=_0x26fcbc['id'],_0x1df9ee['innerHTML']='\x0a\x20\x20\x20\x20\x20\x20<span\x20class=\x22skill-chip-name\x22>'+Utils['escapeHtml'](_0x26fcbc['name'])+'</span>\x0a\x20\x20\x20\x20\x20\x20<span\x20class=\x22skill-chip-id\x22>'+Utils['escapeHtml'](_0x26fcbc['id'])+'</span>\x0a\x20\x20\x20\x20\x20\x20<button\x20type=\x22button\x22\x20class=\x22skill-chip-remove\x22\x20aria-label=\x22Remove\x20skill\x22>×</button>\x0a\x20\x20\x20\x20';const _0x5dfb6e=_0x1df9ee['querySelector']('.skill-chip-remove');_0x5dfb6e['addEventListener']('click',()=>removeSkillFromEnvironment(_0x26fcbc['id'])),_0x52d8f4['appendChild'](_0x1df9ee);});}function removeSkillFromEnvironment(_0x49f94c){const _0x1a3f75=getConnectionRequiredSkills();if(_0x1a3f75['has'](_0x49f94c)){Utils['showError']('Cannot\x20remove\x20skill\x20\x22'+_0x49f94c+'\x22\x20—\x20it\x20is\x20required\x20by\x20an\x20external\x20connection.\x20Remove\x20the\x20connection\x20first.');return;}const _0x543a14=state['selectedEnvData']?.['skills']||[],_0x55c17a=_0x543a14['filter'](_0x1e7e2d=>_0x1e7e2d!==_0x49f94c);state['selectedEnvData']['skills']=_0x55c17a,markAsModified(),renderEnvironmentSkills(),state['skillsModalOpen']&&(state['skillsModalSelection']=[..._0x55c17a],renderSkillsModal());}function openSkillsModal(){if(!state['selectedEnvData'])return;const _0x3eb5eb=document['getElementById']('skills-modal');if(!_0x3eb5eb)return;state['skillsModalOpen']=!![],state['skillsModalSelection']=[...state['selectedEnvData']['skills']||[]];const _0x4e7e50=document['getElementById']('skills-modal-search-input');_0x4e7e50&&(_0x4e7e50['value']=''),_0x3eb5eb['hidden']=![],loadAvailableSkills()['then'](()=>{renderSkillsModal(),_0x4e7e50&&_0x4e7e50['focus']();}),renderSkillsModal();}function closeSkillsModal(){const _0x13d60b=document['getElementById']('skills-modal');_0x13d60b&&(_0x13d60b['hidden']=!![]),state['skillsModalOpen']=![];}function applySkillsModalSelection(){if(!state['selectedEnvData'])return;state['selectedEnvData']['skills']=[...state['skillsModalSelection']],markAsModified(),renderEnvironmentSkills(),closeSkillsModal();}function renderSkillsModal(){const _0x56b4f5=document['getElementById']('skills-modal-list'),_0x1cd13b=document['getElementById']('skills-modal-selected-list'),_0x37a603=document['getElementById']('skills-modal-selected-empty'),_0x80935c=document['getElementById']('skills-modal-selected-count'),_0x5318b9=document['getElementById']('skills-modal-search-input'),_0x2950b1=document['getElementById']('skills-modal-search-clear'),_0xfee01a=document['getElementById']('skills-modal-search-meta'),_0x453baa=document['getElementById']('skills-modal-error'),_0x2ecd69=document['getElementById']('skills-modal-loading');if(!_0x56b4f5||!_0x1cd13b||!_0x37a603||!_0x80935c)return;const _0x463014=(_0x5318b9?.['value']||'')['trim']()['toLowerCase']();_0x2950b1&&(_0x2950b1['hidden']=!_0x463014);_0x453baa&&(_0x453baa['hidden']=!![]);_0x2ecd69&&(_0x2ecd69['hidden']=!state['availableSkillsLoading']);state['availableSkillsError']&&_0x453baa&&(_0x453baa['textContent']=state['availableSkillsError'],_0x453baa['hidden']=![]);const _0x273576=state['availableSkills']||[],_0x392195=_0x273576['filter'](_0x2a3bf4=>{const _0x31a2f7=(_0x2a3bf4['name']||'')['toLowerCase'](),_0x4a0853=(_0x2a3bf4['id']||'')['toLowerCase'](),_0x2829a2=(_0x2a3bf4['description']||'')['toLowerCase']();return!_0x463014||_0x31a2f7['includes'](_0x463014)||_0x4a0853['includes'](_0x463014)||_0x2829a2['includes'](_0x463014);});_0x56b4f5['innerHTML']='';if(!state['availableSkillsLoading']&&_0x392195['length']===0x0){const _0x27e1d6=document['createElement']('div');_0x27e1d6['className']='text-muted',_0x27e1d6['textContent']=_0x463014?'No\x20skills\x20match\x20your\x20search.':'No\x20skills\x20available\x20yet.',_0x56b4f5['appendChild'](_0x27e1d6);}_0x392195['forEach'](_0xa2052f=>{const _0x3f136b=state['skillsModalSelection']['includes'](_0xa2052f['id']),_0xcd6350=document['createElement']('div');_0xcd6350['className']='skills-modal-item'+(_0x3f136b?'\x20selected':''),_0xcd6350['innerHTML']='\x0a\x20\x20\x20\x20\x20\x20<label>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<input\x20type=\x22checkbox\x22\x20'+(_0x3f136b?'checked':'')+'\x20aria-label=\x22Select\x20'+Utils['escapeHtml'](_0xa2052f['name']||_0xa2052f['id'])+'\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22skills-modal-item-name\x22>'+Utils['escapeHtml'](_0xa2052f['name']||_0xa2052f['id'])+'</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22skills-modal-item-id\x22>'+Utils['escapeHtml'](_0xa2052f['id'])+'</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22skills-modal-item-desc\x22>'+Utils['escapeHtml'](_0xa2052f['description']||'No\x20description\x20provided.')+'</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20</label>\x0a\x20\x20\x20\x20';const _0x5824ae=_0xcd6350['querySelector']('input[type=\x22checkbox\x22]');_0x5824ae['addEventListener']('change',_0x390ce1=>{toggleSkillSelection(_0xa2052f['id'],_0x390ce1['target']['checked']);}),_0x56b4f5['appendChild'](_0xcd6350);}),_0x1cd13b['innerHTML']='';const _0xdb07d5=state['skillsModalSelection']['map'](getSkillDisplayInfo);_0x80935c['textContent']=_0xdb07d5['length']['toString']();_0xdb07d5['length']===0x0?_0x37a603['hidden']=![]:(_0x37a603['hidden']=!![],_0xdb07d5['forEach'](_0x2b234a=>{const _0x39f851=document['createElement']('div');_0x39f851['className']='skill-chip',_0x39f851['dataset']['skillId']=_0x2b234a['id'],_0x39f851['innerHTML']='\x0a\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22skill-chip-name\x22>'+Utils['escapeHtml'](_0x2b234a['name'])+'</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22skill-chip-id\x22>'+Utils['escapeHtml'](_0x2b234a['id'])+'</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<button\x20type=\x22button\x22\x20class=\x22skill-chip-remove\x22\x20aria-label=\x22Remove\x20skill\x22>×</button>\x0a\x20\x20\x20\x20\x20\x20';const _0x29a144=_0x39f851['querySelector']('.skill-chip-remove');_0x29a144['addEventListener']('click',()=>toggleSkillSelection(_0x2b234a['id'],![])),_0x1cd13b['appendChild'](_0x39f851);}));if(_0xfee01a){if(state['availableSkillsLoading'])_0xfee01a['textContent']='Loading\x20skills...';else{if(!_0x273576['length'])_0xfee01a['textContent']='No\x20skills\x20available\x20yet.';else _0x463014?_0xfee01a['textContent']=_0x392195['length']?_0x392195['length']+'\x20skill'+(_0x392195['length']===0x1?'':'s')+'\x20found':'No\x20matching\x20skills\x20found.':_0xfee01a['textContent']=_0x273576['length']+'\x20skill'+(_0x273576['length']===0x1?'':'s')+'\x20available';}}}function toggleSkillSelection(_0x2e7115,_0x1af8ca){const _0x126512=new Set(state['skillsModalSelection']);_0x1af8ca?_0x126512['add'](_0x2e7115):_0x126512['delete'](_0x2e7115),state['skillsModalSelection']=Array['from'](_0x126512),renderSkillsModal();}async function refreshRepositoryGitStatus(){try{const _0x58ebdf=await _0x131d51['fetchGitStatus']();state['changedFiles']=_0x58ebdf['changedFiles']||[],state['setupRepoAuth']=_0x58ebdf['setupRepoAuth']||null,invalidateDiffCache(),_0x131d51['updateGitStatusIndicator']({'statusIcon':document['getElementById']('repo-status-icon'),'statusText':document['getElementById']('repo-status-text'),'branchText':document['getElementById']('repo-branch-text'),'authBadge':document['getElementById']('repo-auth-mode-badge'),'container':document['getElementById']('repo-status'),'commitBtn':document['getElementById']('repo-commit-btn'),'discardBtn':document['getElementById']('repo-discard-btn')},_0x58ebdf),updatePushButtonState(_0x58ebdf);}catch(_0x4f765c){console['error']('Failed\x20to\x20get\x20repository\x20git\x20status:',_0x4f765c),_0x131d51['showGitStatusError']({'statusIcon':document['getElementById']('repo-status-icon'),'statusText':document['getElementById']('repo-status-text'),'authBadge':document['getElementById']('repo-auth-mode-badge')}),updatePushButtonState(null);}}function invalidateDiffCache(){state['uncommittedDiff']=null,state['uncommittedDiffFiles']=null;}async function loadUncommittedDiff(){if(state['uncommittedDiff']!==null)return;try{const _0x593ec9=await _0x131d51['fetchGitDiff']();state['uncommittedDiff']=_0x593ec9['diff']||'',state['uncommittedDiffFiles']=parsePatchContent(state['uncommittedDiff']);}catch(_0xd198f7){console['error']('Failed\x20to\x20fetch\x20diff:',_0xd198f7),state['uncommittedDiff']='',state['uncommittedDiffFiles']=[];}}async function handleFileClick(_0x2891d0,_0x533636){const _0x724d4=_0x533636['nextElementSibling'];if(_0x724d4&&_0x724d4['classList']['contains']('inline-file-diff')){_0x724d4['remove'](),_0x533636['classList']['remove']('diff-expanded');return;}const _0x432cc2=_0x533636['closest']('ul');_0x432cc2['querySelectorAll']('.inline-file-diff')['forEach'](_0x4df6d6=>_0x4df6d6['remove']()),_0x432cc2['querySelectorAll']('.diff-expanded')['forEach'](_0x521273=>_0x521273['classList']['remove']('diff-expanded')),_0x533636['classList']['add']('diff-expanded');const _0x2f3d95=document['createElement']('li');_0x2f3d95['className']='inline-file-diff\x20inline-file-diff-loading',_0x2f3d95['textContent']='Loading\x20diff...',_0x533636['after'](_0x2f3d95),await loadUncommittedDiff();const _0x1584ca=state['uncommittedDiffFiles']?.['find'](_0x8c7d15=>_0x8c7d15['newPath']===_0x2891d0||_0x8c7d15['oldPath']===_0x2891d0);if(!_0x1584ca){_0x2f3d95['innerHTML']='<div\x20class=\x22inline-diff-empty\x22>No\x20diff\x20available\x20for\x20this\x20file</div>';return;}const _0x7fdc2a=renderUnifiedDiff([_0x1584ca],'env-uncommitted-'+safeBase64(_0x2891d0));_0x2f3d95['className']='inline-file-diff',_0x2f3d95['innerHTML']=_0x7fdc2a,_0x2f3d95['querySelectorAll']('.file-diff-header')['forEach'](_0x27042c=>{_0x27042c['addEventListener']('click',_0x13b075=>{if(_0x13b075['target']['closest']('.file-diff-toggle-btn'))return;const _0xa59c8=_0x27042c['dataset']['diffId'],_0x5005d0=document['getElementById'](_0xa59c8);if(_0x5005d0){const _0x15a26f=_0x5005d0['classList']['toggle']('collapsed'),_0x11a822=_0x27042c['querySelector']('.file-diff-toggle-btn');if(_0x11a822)_0x11a822['dataset']['collapsed']=String(_0x15a26f);}});}),_0x2f3d95['querySelectorAll']('.file-diff-toggle-btn')['forEach'](_0x201320=>{_0x201320['addEventListener']('click',_0x1f697e=>{_0x1f697e['stopPropagation']();const _0x4456c2=document['getElementById'](_0x201320['dataset']['diffId']);if(_0x4456c2){const _0x28158b=_0x4456c2['classList']['toggle']('collapsed');_0x201320['dataset']['collapsed']=String(_0x28158b);}});});}function updatePushButtonState(_0x43261c){const _0x126545=document['getElementById']('repo-push-btn');if(!_0x126545)return;const _0x1c4382=Boolean(_0x43261c)&&!_0x43261c['hasUncommittedChanges']&&Number(_0x43261c['ahead']||0x0)>0x0&&Number(_0x43261c['behind']||0x0)===0x0;_0x126545['hidden']=!_0x1c4382,_0x126545['disabled']=!_0x1c4382;}async function pushRepositoryChanges(){const _0x3add10=document['getElementById']('repo-push-btn');if(!_0x3add10||_0x3add10['hidden']||_0x3add10['disabled'])return;try{const _0x12da3d=document['getElementById']('repo-status-icon'),_0xefd8b1=document['getElementById']('repo-status-text');_0x3add10['disabled']=!![],_0x3add10['innerHTML']='<span>📤</span>\x20Pushing...',_0x12da3d['textContent']='📤',_0xefd8b1['textContent']='Pushing\x20to\x20git...',await API['post']('/environments/git/push'),Utils['showSuccess']('Successfully\x20pushed\x20local\x20commits'),await refreshRepositoryGitStatus();}catch(_0x27297b){_0x27297b['message']==='setup_repo_user_not_connected'?(savePendingSetupRepoAction('push'),showSetupRepoConnectPrompt(state['setupRepoAuth']?.['provider'],state['setupRepoAuth']?.['provider_type'])):Utils['showError'](_0x27297b['message']||'Failed\x20to\x20push\x20commits'),await refreshRepositoryGitStatus();}finally{_0x3add10['disabled']=![],_0x3add10['innerHTML']='<span>📤</span>\x20Push\x20to\x20Git';}}async function pullRepositoryChanges(){try{const _0x3b0c3f=document['getElementById']('repo-pull-btn'),_0x2ab8ef=document['getElementById']('repo-status-icon'),_0x4aee6f=document['getElementById']('repo-status-text');_0x3b0c3f['disabled']=!![],_0x3b0c3f['innerHTML']='<span>🔄</span>\x20Pulling...',_0x2ab8ef['textContent']='🔄',_0x4aee6f['textContent']='Pulling\x20from\x20git...';const _0x4be718=await API['post']('/environments/git/pull');_0x4be718['conflicts']?(Utils['showError']('Pull\x20resulted\x20in\x20conflicts.\x20Please\x20resolve\x20manually.'),_0x2ab8ef['textContent']='⚠️',_0x4aee6f['textContent']='Conflicts\x20detected'):(Utils['showSuccess']('Successfully\x20pulled\x20latest\x20changes'),await refreshRepositoryGitStatus(),state['selectedEnv']&&await loadEnvironmentDetails(state['selectedEnv']));}catch(_0x5eeed1){_0x5eeed1['message']==='setup_repo_user_not_connected'?(savePendingSetupRepoAction('pull'),showSetupRepoConnectPrompt(state['setupRepoAuth']?.['provider'],state['setupRepoAuth']?.['provider_type'])):Utils['showError']('Failed\x20to\x20pull\x20changes'),await refreshRepositoryGitStatus();}finally{const _0x396581=document['getElementById']('repo-pull-btn');_0x396581['disabled']=![],_0x396581['innerHTML']='<span>🔄</span>\x20Pull\x20from\x20Git';}}const PENDING_SETUP_REPO_ACTION_KEY='pendingSetupRepoAction_environments';function savePendingSetupRepoAction(_0x1a41ac,_0x1fd80c={}){sessionStorage['setItem'](PENDING_SETUP_REPO_ACTION_KEY,JSON['stringify']({'action':_0x1a41ac,'data':_0x1fd80c,'timestamp':Date['now']()}));}function loadAndClearPendingSetupRepoAction(){try{const _0x2e1b3b=sessionStorage['getItem'](PENDING_SETUP_REPO_ACTION_KEY);sessionStorage['removeItem'](PENDING_SETUP_REPO_ACTION_KEY);if(!_0x2e1b3b)return null;const _0x3cd82b=JSON['parse'](_0x2e1b3b);if(Date['now']()-_0x3cd82b['timestamp']>0xa*0x3c*0x3e8)return null;return _0x3cd82b;}catch{return null;}}async function handleSetupRepoOAuthReturn(){const _0x1445a0=new URLSearchParams(window['location']['search']);if(_0x1445a0['get']('git_connection')!=='success')return;const _0x2e1f2e=new URL(window['location']);_0x2e1f2e['searchParams']['delete']('git_connection'),_0x2e1f2e['searchParams']['delete']('provider'),window['history']['replaceState']({},'',_0x2e1f2e),Utils['showSuccess']('Account\x20connected\x20successfully');const _0x14428b=loadAndClearPendingSetupRepoAction();if(!_0x14428b)return;if(_0x14428b['action']==='pull')setTimeout(()=>pullRepositoryChanges(),0x1f4);else{if(_0x14428b['action']==='push')setTimeout(()=>pushRepositoryChanges(),0x1f4);else{if(_0x14428b['action']==='commit'){const {message:_0x109447,pullFirst:_0x176b50,push:_0x2beb48}=_0x14428b['data'];setTimeout(async()=>{try{const _0x38d23c=await API['post']('/environments/git/commit',{'message':_0x109447,'pullFirst':_0x176b50,'push':_0x2beb48});_0x38d23c['success']&&(Utils['showSuccess'](_0x2beb48?'Changes\x20committed\x20and\x20pushed':'Changes\x20committed\x20locally'),state['modifiedFiles']['clear'](),updateButtonStates(),await refreshRepositoryGitStatus(),state['selectedEnv']&&await loadEnvironmentDetails(state['selectedEnv']));}catch(_0x5ba7de){console['error']('Commit\x20retry\x20failed:',_0x5ba7de),Utils['showError'](_0x5ba7de['message']||'Failed\x20to\x20commit\x20changes');}},0x1f4);}}}}function initGitConnectionsRequiredModal(){const _0x5687e1=document['getElementById']('git-connections-required-modal');if(!_0x5687e1)return;const _0x3aacc4=_0x5687e1['querySelector']('.modal-close'),_0x10e3d1=document['getElementById']('git-connections-close-btn'),_0x20d4c9=_0x5687e1['querySelector']('.modal-overlay'),_0x39f7a2=()=>{_0x5687e1['hidden']=!![];};_0x3aacc4?.['addEventListener']('click',_0x39f7a2),_0x10e3d1?.['addEventListener']('click',_0x39f7a2),_0x20d4c9?.['addEventListener']('click',_0x39f7a2);}function showSetupRepoConnectPrompt(_0x514884,_0x10de4c){const _0x10ba54=document['getElementById']('git-connections-required-modal'),_0x5f5841=document['getElementById']('git-connections-required-list');if(!_0x10ba54||!_0x5f5841){Utils['showError']('Your\x20account\x20is\x20not\x20connected\x20to\x20provider\x20\x22'+_0x514884+'\x22.\x20Please\x20connect\x20via\x20Settings.');return;}const _0x1b48b7=_0x10de4c==='github'?'<svg\x20viewBox=\x220\x200\x2098\x2096\x22\x20fill=\x22currentColor\x22><path\x20fill-rule=\x22evenodd\x22\x20clip-rule=\x22evenodd\x22\x20d=\x22M48.854\x200C21.839\x200\x200\x2022\x200\x2049.217c0\x2021.756\x2013.993\x2040.172\x2033.405\x2046.69\x202.427.49\x203.316-1.059\x203.316-2.362\x200-1.141-.08-5.052-.08-9.127-13.59\x202.934-16.42-5.867-16.42-5.867-2.184-5.704-5.42-7.17-5.42-7.17-4.448-3.015.324-3.015.324-3.015\x204.934.326\x207.523\x205.052\x207.523\x205.052\x204.367\x207.496\x2011.404\x205.378\x2014.235\x204.074.404-3.178\x201.699-5.378\x203.074-6.6-10.839-1.141-22.243-5.378-22.243-24.283\x200-5.378\x201.94-9.778\x205.014-13.2-.485-1.222-2.184-6.275.486-13.038\x200\x200\x204.125-1.304\x2013.426\x205.052a46.97\x2046.97\x200\x200\x201\x2012.214-1.63c4.125\x200\x208.33.571\x2012.213\x201.63\x209.302-6.356\x2013.427-5.052\x2013.427-5.052\x202.67\x206.763.97\x2011.816.485\x2013.038\x203.155\x203.422\x205.015\x207.822\x205.015\x2013.2\x200\x2018.905-11.404\x2023.06-22.324\x2024.283\x201.78\x201.548\x203.316\x204.481\x203.316\x209.126\x200\x206.6-.08\x2011.897-.08\x2013.526\x200\x201.304.89\x202.853\x203.316\x202.364\x2019.412-6.52\x2033.405-24.935\x2033.405-46.691C97.707\x2022\x2075.788\x200\x2048.854\x200z\x22/></svg>':'<svg\x20viewBox=\x220\x200\x2024\x2024\x22\x20fill=\x22currentColor\x22><path\x20d=\x22M13.05\x204.24L6.56\x2018.05l2.09.81L18\x209.77l.3-.41-5.25-5.12zm-4.21\x202.6l5.79\x205.64-.42.4-9.28\x202.6\x203.91-8.64zm-1.79\x2010.1l9.31-2.59.43-.39\x201.61\x201.57L4.67\x2019.2l2.38-2.26z\x22/></svg>';_0x5f5841['innerHTML']='\x0a\x20\x20\x20\x20<div\x20class=\x22git-provider-card\x22>\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22git-provider-card-header\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22git-provider-card-info\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22git-provider-card-icon\x22>'+_0x1b48b7+'</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22git-provider-card-details\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22git-provider-card-name\x22>'+Utils['escapeHtml'](_0x514884)+'</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<button\x20class=\x22btn-primary\x20btn-small\x22\x20onclick=\x22connectGitProviderFromModal(\x27'+Utils['escapeHtml'](_0x514884)+'\x27)\x22>Connect</button>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20',_0x10ba54['hidden']=![];}window['connectGitProviderFromModal']=async function(_0x258e1b){try{const _0x304475=await API['post']('/api/git-oauth/start',{'provider_name':_0x258e1b,'redirect_after':window['location']['pathname']+'?git_connection=success&provider='+encodeURIComponent(_0x258e1b)}),_0x139fa3=document['getElementById']('git-connections-required-modal');if(_0x139fa3)_0x139fa3['hidden']=!![];window['location']['href']=_0x304475['oauth_url'];}catch(_0x583113){console['error']('Failed\x20to\x20start\x20OAuth\x20flow:',_0x583113),Utils['showError'](_0x583113['message']||'Failed\x20to\x20start\x20connection');}};function openCommitModal(){invalidateDiffCache(),_0x131d51['showCommitModal'](document['getElementById']('commit-modal'),{'userNameEl':document['getElementById']('commit-user-name'),'userEmailEl':document['getElementById']('commit-user-email'),'filesListEl':document['getElementById']('commit-files-list'),'messageEl':document['getElementById']('commit-message'),'pushCheckboxEl':document['getElementById']('commit-push'),'errorEl':document['getElementById']('commit-error'),'user':state['currentUser'],'changedFiles':state['changedFiles'],'onFileClick':handleFileClick});}function closeCommitModal(){document['getElementById']('commit-modal')['hidden']=!![];}async function commitAndPush(){const _0x345672=document['getElementById']('commit-error'),_0x25d569=document['getElementById']('commit-message'),_0xa19e44=_0x25d569['value']['trim']();_0x345672['hidden']=!![],_0x25d569['classList']['remove']('input-error');if(!_0xa19e44){_0x345672['textContent']='Please\x20enter\x20a\x20commit\x20message',_0x345672['hidden']=![],_0x25d569['classList']['add']('input-error');return;}if(state['hasUnsavedChanges']){_0x345672['textContent']='Please\x20save\x20your\x20changes\x20before\x20committing',_0x345672['hidden']=![];return;}const _0x1ece90=document['getElementById']('commit-pull-first')['checked'],_0x304279=document['getElementById']('commit-push')['checked'];try{const _0x51889b=document['getElementById']('commit-confirm-btn');_0x51889b['disabled']=!![],_0x51889b['textContent']='Committing...';const _0x259d71=await API['post']('/environments/git/commit',{'message':_0xa19e44,'pullFirst':_0x1ece90,'push':_0x304279});_0x259d71['success']?(Utils['showSuccess'](_0x304279?'Changes\x20committed\x20and\x20pushed':'Changes\x20committed\x20locally'),state['modifiedFiles']['clear'](),updateButtonStates(),closeCommitModal(),await refreshRepositoryGitStatus(),state['selectedEnv']&&await loadEnvironmentDetails(state['selectedEnv'])):(_0x345672['textContent']=_0x259d71['error']||'Commit\x20failed',_0x345672['hidden']=![]);}catch(_0x54f648){_0x54f648['message']==='setup_repo_user_not_connected'?(savePendingSetupRepoAction('commit',{'message':_0xa19e44,'pullFirst':_0x1ece90,'push':_0x304279}),closeCommitModal(),showSetupRepoConnectPrompt(state['setupRepoAuth']?.['provider'],state['setupRepoAuth']?.['provider_type'])):(_0x345672['textContent']=_0x54f648['message']||'Failed\x20to\x20commit\x20changes',_0x345672['hidden']=![]);}finally{const _0x4b4e1a=document['getElementById']('commit-confirm-btn');_0x4b4e1a['disabled']=![],_0x4b4e1a['textContent']='Commit\x20&\x20Push';}}function handleRepoStatusClick(){const _0x450f71=document['getElementById']('repo-status-text')['textContent'];_0x450f71==='Uncommitted\x20changes'&&openUncommittedChangesModal();}function openUncommittedChangesModal(){invalidateDiffCache(),_0x131d51['showUncommittedChangesModal'](document['getElementById']('uncommitted-changes-modal'),document['getElementById']('uncommitted-files-list'),state['changedFiles'],handleFileClick);}function closeUncommittedChangesModal(){document['getElementById']('uncommitted-changes-modal')['hidden']=!![];}function openDiscardModal(){invalidateDiffCache(),_0x131d51['showDiscardModal'](document['getElementById']('discard-modal'),document['getElementById']('discard-files-list'),state['changedFiles'],handleFileClick);}function closeDiscardModal(){document['getElementById']('discard-modal')['hidden']=!![];}async function confirmDiscard(){try{const _0x30d87f=document['getElementById']('discard-confirm-btn');_0x30d87f['disabled']=!![],_0x30d87f['textContent']='Discarding...';const _0x3a656e=await API['post']('/environments/git/discard');_0x3a656e['success']?(Utils['showSuccess']('All\x20uncommitted\x20changes\x20have\x20been\x20discarded'),state['hasUnsavedChanges']=![],state['modifiedFiles']['clear'](),updateButtonStates(),closeDiscardModal(),await refreshRepositoryGitStatus(),state['selectedEnv']&&await loadEnvironmentDetails(state['selectedEnv'])):Utils['showError'](_0x3a656e['error']||'Failed\x20to\x20discard\x20changes');}catch(_0x4ce5ef){console['error']('Discard\x20failed:',_0x4ce5ef),Utils['showError'](_0x4ce5ef['message']||'Failed\x20to\x20discard\x20changes');}finally{const _0x1c7409=document['getElementById']('discard-confirm-btn');_0x1c7409['disabled']=![],_0x1c7409['textContent']='Discard\x20Changes';}}let baseImageBuildPollingInterval=null,baseImageBuildOutputEventSource=null;function openBaseImageBuildModal(){document['getElementById']('base-image-no-cache')['checked']=![],document['getElementById']('base-image-build-status')['hidden']=!![],document['getElementById']('base-image-build-start-btn')['disabled']=![],document['getElementById']('base-image-build-cancel-btn')['textContent']='Cancel';const _0x1312bb=document['getElementById']('base-image-build-output');if(_0x1312bb){_0x1312bb['hidden']=!![];const _0x4102b=_0x1312bb['querySelector']('pre');if(_0x4102b)_0x4102b['textContent']='';}loadBaseImageBuildHistory(),document['getElementById']('base-image-build-modal')['hidden']=![];}function closeBaseImageBuildModal(){baseImageBuildPollingInterval&&(clearInterval(baseImageBuildPollingInterval),baseImageBuildPollingInterval=null),stopBaseImageBuildOutputStreaming(),document['getElementById']('base-image-build-modal')['hidden']=!![];}async function startBaseImageBuild(){const _0x5dac6a=document['getElementById']('base-image-no-cache')['checked'],_0x59156d=document['getElementById']('base-image-build-start-btn'),_0x2b9e40=document['getElementById']('base-image-build-cancel-btn'),_0x5f1bdd=document['getElementById']('base-image-build-status'),_0x953b36=_0x5f1bdd['querySelector']('.build-status-message');_0x59156d['disabled']=!![],_0x59156d['innerHTML']='<span>Building...</span>',_0x5f1bdd['hidden']=![],_0x953b36['innerHTML']='<span\x20class=\x22status-icon\x22>⏳</span>\x20Starting\x20base\x20image\x20build...',_0x953b36['className']='build-status-message\x20status-building',showBaseImageBuildOutput(),clearBaseImageBuildOutput();try{const _0xa43620=await API['post']('/build/base',{'noCache':_0x5dac6a});if(_0xa43620['buildId'])startBaseImageBuildOutputStreaming(_0xa43620['buildId']),pollBaseImageBuildStatus(_0xa43620['buildId']);else throw new Error('No\x20build\x20ID\x20received');}catch(_0x4a32c4){console['error']('Failed\x20to\x20start\x20base\x20image\x20build:',_0x4a32c4),_0x953b36['innerHTML']='<span\x20class=\x22status-icon\x22>❌</span>\x20Failed\x20to\x20start\x20build:\x20'+(_0x4a32c4['message']||'Unknown\x20error'),_0x953b36['className']='build-status-message\x20status-failed',_0x59156d['innerHTML']='<span>Build</span>',_0x59156d['disabled']=![];}}function pollBaseImageBuildStatus(_0x1d0abc){const _0x2f659e=document['getElementById']('base-image-build-status'),_0x1180f6=_0x2f659e['querySelector']('.build-status-message'),_0x135668=document['getElementById']('base-image-build-start-btn'),_0x324ab8=document['getElementById']('base-image-build-cancel-btn');baseImageBuildPollingInterval=setInterval(async()=>{try{const _0x4eadea=await API['get']('/build/base/status/'+_0x1d0abc);if(_0x4eadea['status']==='building'){const _0x439932=_0x4eadea['duration']?Math['floor'](_0x4eadea['duration']/0x3e8):0x0;_0x1180f6['innerHTML']='<span\x20class=\x22status-icon\x22>⏳</span>\x20Building\x20base\x20image...\x20('+formatDuration(_0x439932*0x3e8)+')',_0x1180f6['className']='build-status-message\x20status-building';}else{if(_0x4eadea['status']==='success'){clearInterval(baseImageBuildPollingInterval),baseImageBuildPollingInterval=null,stopBaseImageBuildOutputStreaming();const _0xfec33a=_0x4eadea['duration']?formatDuration(_0x4eadea['duration']):'unknown';_0x1180f6['innerHTML']='<span\x20class=\x22status-icon\x22>✅</span>\x20Base\x20image\x20built\x20successfully\x20in\x20'+_0xfec33a,_0x1180f6['className']='build-status-message\x20status-success',_0x135668['innerHTML']='<span>Build</span>',_0x135668['disabled']=![],_0x324ab8['textContent']='Close',Utils['showSuccess']('Base\x20image\x20built\x20successfully'),loadBaseImageBuildHistory();}else _0x4eadea['status']==='failed'&&(clearInterval(baseImageBuildPollingInterval),baseImageBuildPollingInterval=null,stopBaseImageBuildOutputStreaming(),_0x1180f6['innerHTML']='<span\x20class=\x22status-icon\x22>❌</span>\x20Build\x20failed:\x20'+(_0x4eadea['error']||'Unknown\x20error'),_0x1180f6['className']='build-status-message\x20status-failed',_0x135668['innerHTML']='<span>Build</span>',_0x135668['disabled']=![],Utils['showError']('Base\x20image\x20build\x20failed\x20-\x20check\x20output\x20for\x20details'),loadBaseImageBuildHistory());}}catch(_0x4b7233){console['error']('Failed\x20to\x20poll\x20build\x20status:',_0x4b7233);}},0xbb8);}function formatDuration(_0x23ebc5){const _0x1f36e4=Math['floor'](_0x23ebc5/0x3e8),_0x43c412=Math['floor'](_0x1f36e4/0x3c),_0x489174=_0x1f36e4%0x3c;if(_0x43c412>0x0)return _0x43c412+'m\x20'+_0x489174+'s';return _0x1f36e4+'s';}function formatTriggeredBy(_0x2515df){if(typeof _0x2515df!=='string'||_0x2515df['trim']()==='')return'Manual';const _0x129f41=_0x2515df['trim']()['toLowerCase']();if(_0x129f41==='manual')return'Manual';if(_0x129f41==='scheduled'||_0x129f41==='schedule')return'Scheduled';if(_0x129f41==='system')return'System';return _0x2515df;}async function loadBaseImageBuildHistory(){const _0x32a701=document['getElementById']('base-image-build-history');if(!_0x32a701)return;try{_0x32a701['innerHTML']='<p\x20class=\x22text-muted\x22>Loading...</p>';const _0x24e714=await API['get']('/build/base/history?limit=5'),_0xf119e2=_0x24e714['builds']||[];if(_0xf119e2['length']===0x0){_0x32a701['innerHTML']='<p\x20class=\x22text-muted\x22>No\x20build\x20history\x20yet.</p>';return;}const _0x420553=_0xf119e2['map'](_0x3601e6=>{const _0x422f10=new Date(_0x3601e6['startTime']),_0x5539d7=_0x422f10['toLocaleDateString']()+'\x20'+_0x422f10['toLocaleTimeString']([],{'hour':'2-digit','minute':'2-digit'}),_0x3dc1ae=_0x3601e6['duration']?formatDuration(_0x3601e6['duration']):'-',_0x30f348=_0x3601e6['status']==='success'?'✅':'❌',_0x511d9f=formatTriggeredBy(_0x3601e6['triggeredBy']),_0x21443d=Utils['escapeHtml'](_0x3601e6['buildId']);return'\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22build-history-row\x20'+_0x3601e6['status']+'\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22build-status-icon\x22>'+_0x30f348+'</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22build-date\x22>'+_0x5539d7+'</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22build-duration\x22>'+_0x3dc1ae+'</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22build-triggered-by\x22>'+Utils['escapeHtml'](_0x511d9f)+'</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20class=\x22btn-ghost\x20btn-small\x22\x20onclick=\x22viewBaseImageBuildOutput(\x27'+_0x21443d+'\x27)\x22\x20title=\x22View\x20build\x20output\x22\x20style=\x22padding:\x202px\x206px;\x20font-size:\x2011px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20View\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20';})['join']('');_0x32a701['innerHTML']='\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22build-history-compact-list\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20'+_0x420553+'\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20';}catch(_0x59769c){console['error']('Failed\x20to\x20load\x20base\x20image\x20build\x20history:',_0x59769c),_0x32a701['innerHTML']='<p\x20class=\x22text-muted\x22\x20style=\x22color:\x20var(--color-error);\x22>Failed\x20to\x20load\x20history</p>';}}function showBaseImageBuildOutput(){const _0x5665d7=document['getElementById']('base-image-build-output');_0x5665d7&&(_0x5665d7['hidden']=![]);}function clearBaseImageBuildOutput(){const _0x5e06ee=document['getElementById']('base-image-build-output');if(_0x5e06ee){const _0x6a61f4=_0x5e06ee['querySelector']('pre');_0x6a61f4&&(_0x6a61f4['textContent']='');}}function appendToBaseImageBuildOutput(_0x489858){const _0xca51f0=document['getElementById']('base-image-build-output');if(_0xca51f0){const _0x10cf6e=_0xca51f0['querySelector']('pre');_0x10cf6e&&(_0x10cf6e['textContent']+=_0x489858,_0xca51f0['scrollTop']=_0xca51f0['scrollHeight']);}}function startBaseImageBuildOutputStreaming(_0x2639bb){stopBaseImageBuildOutputStreaming();try{baseImageBuildOutputEventSource=new EventSource('/build/output/stream/'+_0x2639bb),baseImageBuildOutputEventSource['onmessage']=_0x344dbb=>{try{const _0x17fa62=JSON['parse'](_0x344dbb['data']);if(_0x17fa62['type']==='output')appendToBaseImageBuildOutput(_0x17fa62['data']);else _0x17fa62['type']==='complete'&&(console['log']('Base\x20image\x20build\x20completed\x20via\x20stream:',_0x17fa62),stopBaseImageBuildOutputStreaming());}catch(_0x563cbf){console['error']('Failed\x20to\x20parse\x20base\x20image\x20build\x20output\x20event:',_0x563cbf);}},baseImageBuildOutputEventSource['onerror']=_0xb40866=>{console['error']('Base\x20image\x20build\x20output\x20stream\x20error:',_0xb40866),baseImageBuildOutputEventSource&&baseImageBuildOutputEventSource['readyState']===EventSource['CLOSED']&&stopBaseImageBuildOutputStreaming();};}catch(_0x32df9a){console['error']('Failed\x20to\x20start\x20base\x20image\x20build\x20output\x20streaming:',_0x32df9a);}}function stopBaseImageBuildOutputStreaming(){baseImageBuildOutputEventSource&&(baseImageBuildOutputEventSource['close'](),baseImageBuildOutputEventSource=null);}window['viewBaseImageBuildOutput']=async function(_0x2bd661){showBaseImageBuildOutput(),clearBaseImageBuildOutput();const _0x2655ef=document['getElementById']('base-image-build-output');if(_0x2655ef){const _0x24b272=_0x2655ef['querySelector']('pre');_0x24b272&&(_0x24b272['textContent']='Loading\x20build\x20output...');}try{const _0x5c56f5=await API['get']('/build/output/'+_0x2bd661);if(_0x5c56f5['output']&&_0x2655ef){const _0x1000b1=_0x2655ef['querySelector']('pre');_0x1000b1&&(_0x1000b1['textContent']=_0x5c56f5['output']);}else{if(_0x2655ef){const _0x9b9c64=_0x2655ef['querySelector']('pre');_0x9b9c64&&(_0x9b9c64['textContent']='No\x20output\x20available\x20for\x20this\x20build.');}}}catch(_0x159ffa){console['error']('Failed\x20to\x20load\x20base\x20image\x20build\x20output:',_0x159ffa);if(_0x2655ef){const _0x415ff0=_0x2655ef['querySelector']('pre');_0x415ff0&&(_0x415ff0['textContent']='Failed\x20to\x20load\x20build\x20output:\x20'+(_0x159ffa['message']||'Unknown\x20error'));}}};const AUTOMATION_WEEKDAYS=[{'value':'0','label':'Sunday'},{'value':'1','label':'Monday'},{'value':'2','label':'Tuesday'},{'value':'3','label':'Wednesday'},{'value':'4','label':'Thursday'},{'value':'5','label':'Friday'},{'value':'6','label':'Saturday'}],FALLBACK_AUTOMATION_AGENTS=['claude','codex','gemini'],AUTOMATION_AGENT_LABELS={'claude':'Claude','codex':'Codex','gemini':'Gemini'};function formatAutomationTime(_0x5146c1,_0xbf2b2d){const _0xaf4e0e=Number['parseInt'](_0x5146c1,0xa),_0x474898=Number['parseInt'](_0xbf2b2d,0xa);if(!Number['isInteger'](_0xaf4e0e)||!Number['isInteger'](_0x474898))return _0x5146c1+':'+_0xbf2b2d;const _0x1ad92b=_0xaf4e0e>=0xc?'PM':'AM',_0x50d48f=_0xaf4e0e%0xc||0xc;return _0x50d48f+':'+String(_0x474898)['padStart'](0x2,'0')+'\x20'+_0x1ad92b;}function parseAutomationTimeInputValue(_0x5c2241,_0x7ae1ef='0',_0x4306db='0'){const _0x501fac={'hour':String(Number['parseInt'](_0x7ae1ef,0xa)||0x0),'minute':String(Number['parseInt'](_0x4306db,0xa)||0x0)},_0x74d421=String(_0x5c2241||'')['trim']()['match'](/^(\d{1,2}):(\d{2})$/);if(!_0x74d421)return _0x501fac;const _0x495700=Number['parseInt'](_0x74d421[0x1],0xa),_0x2aeac7=Number['parseInt'](_0x74d421[0x2],0xa);if(!Number['isInteger'](_0x495700)||_0x495700<0x0||_0x495700>0x17)return _0x501fac;if(!Number['isInteger'](_0x2aeac7)||_0x2aeac7<0x0||_0x2aeac7>0x3b)return _0x501fac;return{'hour':String(_0x495700),'minute':String(_0x2aeac7)};}function formatAutomationTimeInputValue(_0x2f49fa,_0x5332ec,_0x2079e2='0',_0x410015='0'){const _0x1fd993=parseAutomationTimeInputValue(String(_0x2f49fa??'')['trim']()+':'+String(_0x5332ec??'')['trim']()['padStart'](0x2,'0'),_0x2079e2,_0x410015);return _0x1fd993['hour']['padStart'](0x2,'0')+':'+_0x1fd993['minute']['padStart'](0x2,'0');}function getAutomationTimeInputState(_0x567f41,_0x32c2a5='0',_0x2f9544='0'){return parseAutomationTimeInputValue(document['getElementById'](_0x567f41)?.['value']||'',_0x32c2a5,_0x2f9544);}function setAutomationTimeInputValue(_0x2ecb56,_0x4ecd24,_0x25bc46,_0x5e4594='0',_0x522083='0'){const _0x3cfcef=document['getElementById'](_0x2ecb56);if(!_0x3cfcef)return;_0x3cfcef['value']=formatAutomationTimeInputValue(_0x4ecd24,_0x25bc46,_0x5e4594,_0x522083);}function formatOrdinal(_0x3854ad){const _0xf9df1d=Number['parseInt'](_0x3854ad,0xa);if(!Number['isInteger'](_0xf9df1d))return''+_0x3854ad;const _0x4b9075=_0xf9df1d%0xa,_0x498dd2=_0xf9df1d%0x64;if(_0x4b9075===0x1&&_0x498dd2!==0xb)return _0xf9df1d+'st';if(_0x4b9075===0x2&&_0x498dd2!==0xc)return _0xf9df1d+'nd';if(_0x4b9075===0x3&&_0x498dd2!==0xd)return _0xf9df1d+'rd';return _0xf9df1d+'th';}function initializeAutomationModalCustomSelects(){for(const _0x14f5ac of AUTOMATION_MODAL_SELECT_IDS){if(automationCustomSelects[_0x14f5ac])continue;const _0x9c78c7=document['getElementById'](_0x14f5ac);if(!_0x9c78c7)continue;automationCustomSelects[_0x14f5ac]=new CustomSelect(_0x9c78c7,{'searchable':_0x14f5ac==='automation-template-name'});}}function refreshAutomationModalCustomSelect(_0x48c8f7){const _0x315f79=automationCustomSelects[_0x48c8f7];if(!_0x315f79||!_0x315f79['nativeSelect'])return;_0x315f79['selectedValue']=_0x315f79['nativeSelect']['value']||'',_0x315f79['updateDisplay']();}function refreshAllAutomationModalCustomSelects(){for(const _0x18d60d of AUTOMATION_MODAL_SELECT_IDS){refreshAutomationModalCustomSelect(_0x18d60d);}}function initializeAutomationInstructionsEditor(){if(automationInstructionsEditor)return;const _0x301d60=document['getElementById']('automation-instructions');if(!_0x301d60||!window['MarkdownEditor'])return;automationInstructionsEditor=new window['MarkdownEditor'](_0x301d60,{'placeholder':'What\x20should\x20the\x20agent\x20do?','minHeight':'140px','toolbar':!![]});}function setAutomationInstructionsValue(_0x32563e=''){if(automationInstructionsEditor){automationInstructionsEditor['setMarkdown'](_0x32563e||'');return;}const _0x1f0229=document['getElementById']('automation-instructions');_0x1f0229&&(_0x1f0229['value']=_0x32563e||'');}function getAutomationInstructionsValue(){if(automationInstructionsEditor)return automationInstructionsEditor['getMarkdown']();return document['getElementById']('automation-instructions')?.['value']||'';}function initializeAutomationFormOptions(){const _0x2cf42d=(_0x5b59e7,_0x5769c3)=>{const _0x55adba=document['getElementById'](_0x5b59e7);if(!_0x55adba||_0x55adba['dataset']['initialized']==='true')return;_0x55adba['value']=_0x5769c3,_0x55adba['dataset']['initialized']='true';},_0x1c0201=(_0x2a6b1f,_0x51fc85=![])=>{const _0x413182=document['getElementById'](_0x2a6b1f);if(!_0x413182||_0x413182['dataset']['initialized']==='true')return;const _0x101500=[];_0x51fc85&&_0x101500['push']('<option\x20value=\x22\x22>Any</option>');for(let _0x4394e9=0x0;_0x4394e9<=0x17;_0x4394e9+=0x1){const _0x566def=String(_0x4394e9);_0x101500['push']('<option\x20value=\x22'+_0x566def+'\x22>'+formatAutomationTime(_0x4394e9,0x0)+'</option>');}_0x413182['innerHTML']=_0x101500['join'](''),_0x413182['dataset']['initialized']='true';};_0x2cf42d('automation-daily-time','02:00'),_0x2cf42d('automation-weekly-time','09:00'),_0x2cf42d('automation-monthly-time','00:00'),_0x1c0201('automation-recurring-start-hour',!![]),_0x1c0201('automation-recurring-end-hour',!![]);const _0x475585=document['getElementById']('automation-weekly-day');_0x475585&&_0x475585['dataset']['initialized']!=='true'&&(_0x475585['innerHTML']=AUTOMATION_WEEKDAYS['map'](_0x5cf731=>'<option\x20value=\x22'+_0x5cf731['value']+'\x22>'+_0x5cf731['label']+'</option>')['join'](''),_0x475585['dataset']['initialized']='true');const _0x333769=document['getElementById']('automation-monthly-day');if(_0x333769&&_0x333769['dataset']['initialized']!=='true'){const _0x1b46da=[];for(let _0x1efb47=0x1;_0x1efb47<=AUTOMATION_MONTHLY_DAY_MAX;_0x1efb47+=0x1){_0x1b46da['push']('<option\x20value=\x22'+_0x1efb47+'\x22>'+formatOrdinal(_0x1efb47)+'</option>');}_0x333769['innerHTML']=_0x1b46da['join'](''),_0x333769['dataset']['initialized']='true';}const _0xeda0b1=document['getElementById']('automation-recurring-days');_0xeda0b1&&_0xeda0b1['dataset']['initialized']!=='true'&&(_0xeda0b1['innerHTML']=AUTOMATION_WEEKDAYS['map'](_0x112ce0=>'\x0a\x20\x20\x20\x20\x20\x20<label\x20class=\x22day-toggle-label\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<input\x20type=\x22checkbox\x22\x20value=\x22'+_0x112ce0['value']+'\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<span>'+_0x112ce0['label']['slice'](0x0,0x3)+'</span>\x0a\x20\x20\x20\x20\x20\x20</label>\x0a\x20\x20\x20\x20')['join'](''),_0xeda0b1['dataset']['initialized']='true'),refreshAllAutomationModalCustomSelects();}function formatAutomationAgentLabel(_0x5ac9d2){const _0x3019c4=String(_0x5ac9d2||'')['trim']();if(!_0x3019c4)return'Agent';if(AUTOMATION_AGENT_LABELS[_0x3019c4])return AUTOMATION_AGENT_LABELS[_0x3019c4];return _0x3019c4['replace'](/[_-]+/g,'\x20')['replace'](/\b\w/g,_0x15619c=>_0x15619c['toUpperCase']());}function getAvailableAutomationAgentNames(){const _0x440bed=Object['entries'](state['availableModels']||{})['filter'](([_0x3b8b88,_0x4fc52b])=>Boolean(_0x3b8b88)&&_0x4fc52b&&typeof _0x4fc52b==='object'&&Array['isArray'](_0x4fc52b['models']))['map'](([_0x2f6c06])=>_0x2f6c06);if(_0x440bed['length']>0x0)return _0x440bed;return[...FALLBACK_AUTOMATION_AGENTS];}async function loadAvailableAutomationModels(_0x5a6780=![]){if(state['availableModelsLoaded']&&!_0x5a6780)return state['availableModels'];state['availableModelsLoaded']=!![];if(!state['currentUser']?.['hasSettingsView'])return state['availableModels']=null,state['availableModels'];try{const _0x1c950a=await API['get']('/settings/available-models');state['availableModels']=_0x1c950a&&typeof _0x1c950a==='object'?_0x1c950a:null;}catch(_0x1c4fa9){state['availableModels']=null,console['warn']('Failed\x20to\x20load\x20available\x20models\x20for\x20automations:',_0x1c4fa9);}return state['availableModels'];}function renderAutomationAgentOptions(_0x17e580=''){const _0x16ab3c=document['getElementById']('automation-agent-name');if(!_0x16ab3c)return;const _0x4ffce9=String(state['selectedEnvData']?.['default_agent']||'')['trim'](),_0xb6d494=String(_0x17e580||_0x16ab3c['value']||'')['trim'](),_0x23968e=[],_0x147bdf=_0x2190d3=>{const _0x1bda06=String(_0x2190d3||'')['trim']();if(!_0x1bda06||_0x23968e['includes'](_0x1bda06))return;_0x23968e['push'](_0x1bda06);};getAvailableAutomationAgentNames()['forEach'](_0x147bdf),_0x147bdf(_0x4ffce9),_0x147bdf(_0xb6d494);_0x23968e['length']===0x0&&_0x147bdf('claude');_0x16ab3c['innerHTML']=_0x23968e['map'](_0x3fc112=>'<option\x20value=\x22'+Utils['escapeHtml'](_0x3fc112)+'\x22>'+Utils['escapeHtml'](formatAutomationAgentLabel(_0x3fc112))+'</option>')['join']('');const _0x4707c1=_0x23968e['includes'](_0xb6d494)?_0xb6d494:_0x23968e['includes'](_0x4ffce9)?_0x4ffce9:_0x23968e[0x0];_0x4707c1&&(_0x16ab3c['value']=_0x4707c1),refreshAutomationModalCustomSelect('automation-agent-name');}function setAutomationAgentSelection(_0x46356c=''){renderAutomationAgentOptions(_0x46356c),updateAutomationAgentFields();}function updateAutomationFrequencyFields(){const _0x157cc5=document['getElementById']('automation-frequency')?.['value']||'daily',_0x3b25ed={'daily':document['getElementById']('automation-daily-fields'),'weekly':document['getElementById']('automation-weekly-fields'),'monthly':document['getElementById']('automation-monthly-fields'),'recurring':document['getElementById']('automation-recurring-fields'),'custom':document['getElementById']('automation-custom-fields')};Object['entries'](_0x3b25ed)['forEach'](([_0x23554f,_0x37b1f1])=>{if(!_0x37b1f1)return;_0x37b1f1['hidden']=_0x23554f!==_0x157cc5;});}function updateAutomationAgentFields(){const _0x510e89=document['getElementById']('automation-agent-name')?.['value']||state['selectedEnvData']?.['default_agent']||getAvailableAutomationAgentNames()[0x0]||'claude',_0x312ef5=document['getElementById']('automation-effort-row'),_0x31359e=document['getElementById']('automation-reasoning-row');if(_0x312ef5)_0x312ef5['hidden']=_0x510e89!=='claude';if(_0x31359e)_0x31359e['hidden']=_0x510e89!=='codex';}function getSelectedAutomationTaskMode(){return document['querySelector']('input[name=\x22automation-task-mode\x22]:checked')?.['value']||'instructions';}function updateAutomationTaskMode(){const _0x151ffb=getSelectedAutomationTaskMode(),_0x279dd7=document['getElementById']('automation-template-row'),_0x1607d9=document['getElementById']('automation-instructions-label');if(_0x279dd7)_0x279dd7['hidden']=_0x151ffb!=='template';_0x1607d9&&(_0x1607d9['textContent']=_0x151ffb==='template'?'Additional\x20Instructions':'Instructions');}function parseRecurringDayToken(_0x827c9d){const _0x2f3302=new Set(),_0xeb2b67=String(_0x827c9d||'')['trim']();if(!_0xeb2b67||_0xeb2b67==='*')return _0x2f3302;return _0xeb2b67['split'](',')['forEach'](_0x4491ac=>{const _0x469ee9=_0x4491ac['trim']();if(!_0x469ee9)return;if(_0x469ee9['includes']('-')){const [_0x240e55,_0x25eefd]=_0x469ee9['split']('-'),_0x3d2829=Number['parseInt'](_0x240e55,0xa),_0x38fcf0=Number['parseInt'](_0x25eefd,0xa);if(Number['isInteger'](_0x3d2829)&&Number['isInteger'](_0x38fcf0)&&_0x3d2829<=_0x38fcf0)for(let _0x23848f=_0x3d2829;_0x23848f<=_0x38fcf0;_0x23848f+=0x1){_0x2f3302['add'](String(_0x23848f===0x7?0x0:_0x23848f));}return;}const _0x5ec7ff=Number['parseInt'](_0x469ee9,0xa);Number['isInteger'](_0x5ec7ff)&&_0x2f3302['add'](String(_0x5ec7ff===0x7?0x0:_0x5ec7ff));}),_0x2f3302;}function getRecurringDaySelectionToken(){const _0x3bcc8d=document['querySelectorAll']('#automation-recurring-days\x20input[type=\x22checkbox\x22]:checked'),_0x4d56f2=[..._0x3bcc8d]['map'](_0x4a7f1a=>_0x4a7f1a['value']);if(_0x4d56f2['length']===0x0)return'*';return _0x4d56f2['sort']((_0x2fec55,_0x2ce340)=>Number['parseInt'](_0x2fec55,0xa)-Number['parseInt'](_0x2ce340,0xa)),_0x4d56f2['join'](',');}function setRecurringDaySelectionToken(_0xa0a1fe){const _0x125ad5=parseRecurringDayToken(_0xa0a1fe);document['querySelectorAll']('#automation-recurring-days\x20input[type=\x22checkbox\x22]')['forEach'](_0x343cd5=>{_0x343cd5['checked']=_0x125ad5['has'](_0x343cd5['value']);});}function getAutomationScheduleFormState(){const _0x54bfe1=getAutomationTimeInputState('automation-daily-time','2','0'),_0x5c6ec2=getAutomationTimeInputState('automation-weekly-time','9','0'),_0x3a8619=getAutomationTimeInputState('automation-monthly-time','0','0');return{'frequency':document['getElementById']('automation-frequency')?.['value']||'daily','customCron':document['getElementById']('automation-custom-cron')?.['value']?.['trim']()||'','dailyHour':_0x54bfe1['hour'],'dailyMinute':_0x54bfe1['minute'],'weeklyDay':document['getElementById']('automation-weekly-day')?.['value']||'1','weeklyHour':_0x5c6ec2['hour'],'weeklyMinute':_0x5c6ec2['minute'],'monthlyDay':document['getElementById']('automation-monthly-day')?.['value']||'1','monthlyHour':_0x3a8619['hour'],'monthlyMinute':_0x3a8619['minute'],'recurringInterval':document['getElementById']('automation-recurring-interval')?.['value']||'*/30\x20*\x20*\x20*\x20*','recurringStartHour':document['getElementById']('automation-recurring-start-hour')?.['value']||'','recurringEndHour':document['getElementById']('automation-recurring-end-hour')?.['value']||'','recurringDayToken':getRecurringDaySelectionToken()};}function buildAutomationScheduleFromForm(){const _0x489b89=getAutomationScheduleFormState(),_0x29c3a1=_0x489b89['frequency'],_0x2c3878=_0x489b89['customCron'];if(_0x29c3a1==='custom')return{'cron':buildAutomationCronFromFormState(_0x489b89),'summary':_0x2c3878?'Custom:\x20'+_0x2c3878:'Custom\x20cron\x20expression'};if(_0x29c3a1==='daily')return{'cron':buildAutomationCronFromFormState(_0x489b89),'summary':'Every\x20day\x20at\x20'+formatAutomationTime(_0x489b89['dailyHour'],_0x489b89['dailyMinute'])};if(_0x29c3a1==='weekly'){const _0x38b974=AUTOMATION_WEEKDAYS['find'](_0x4b932b=>_0x4b932b['value']===_0x489b89['weeklyDay'])?.['label']||'Selected\x20day';return{'cron':buildAutomationCronFromFormState(_0x489b89),'summary':'Every\x20'+_0x38b974+'\x20at\x20'+formatAutomationTime(_0x489b89['weeklyHour'],_0x489b89['weeklyMinute'])};}if(_0x29c3a1==='monthly')return{'cron':buildAutomationCronFromFormState(_0x489b89),'summary':formatOrdinal(_0x489b89['monthlyDay'])+'\x20of\x20every\x20month\x20at\x20'+formatAutomationTime(_0x489b89['monthlyHour'],_0x489b89['monthlyMinute'])};const _0x4f2bd5=_0x489b89['recurringInterval'],[_0xfc98dd,_0x4dcbe3]=_0x4f2bd5['split']('\x20'),_0x4c4042=[],_0x548ce3=_0x489b89['recurringStartHour'],_0x2f0111=_0x489b89['recurringEndHour'];if(_0x548ce3!==''&&_0x2f0111!==''){const _0x21d7ee=Number['parseInt'](_0x548ce3,0xa),_0x39f179=Number['parseInt'](_0x2f0111,0xa);Number['isInteger'](_0x21d7ee)&&Number['isInteger'](_0x39f179)&&_0x21d7ee<=_0x39f179&&_0x4c4042['push'](formatAutomationTime(_0x21d7ee,0x0)+'\x20-\x20'+formatAutomationTime(_0x39f179,0x0));}const _0x1525ab=_0x489b89['recurringDayToken'];if(_0x1525ab!=='*'){const _0x481c00=_0x1525ab['split'](',')['map'](_0x25a2d6=>AUTOMATION_WEEKDAYS['find'](_0x36a2e5=>_0x36a2e5['value']===_0x25a2d6)?.['label']?.['slice'](0x0,0x3))['filter'](Boolean);_0x481c00['length']>0x0&&_0x4c4042['push'](_0x481c00['join'](',\x20'));}let _0x2951d2='';if(_0xfc98dd==='*/15')_0x2951d2='Every\x2015\x20minutes';else{if(_0xfc98dd==='*/30')_0x2951d2='Every\x2030\x20minutes';else{if(_0xfc98dd==='0'&&_0x4dcbe3==='*')_0x2951d2='Every\x20hour';else{if(_0xfc98dd==='0'&&_0x4dcbe3['startsWith']('*/'))_0x2951d2='Every\x20'+_0x4dcbe3['slice'](0x2)+'\x20hours';else _0x2951d2='Recurring\x20schedule\x20('+_0x4f2bd5+')';}}}return _0x4c4042['length']>0x0&&(_0x2951d2=_0x2951d2+',\x20'+_0x4c4042['join'](',\x20')),{'cron':buildAutomationCronFromFormState(_0x489b89),'summary':_0x2951d2};}function updateAutomationScheduleSummary(){const _0x5602f4=document['getElementById']('automation-schedule-summary');if(!_0x5602f4)return;try{const {summary:_0x2dca80}=buildAutomationScheduleFromForm();_0x5602f4['textContent']=_0x2dca80||'Choose\x20schedule\x20options';}catch(_0x130bdb){_0x5602f4['textContent']='Invalid\x20schedule\x20settings:\x20'+_0x130bdb['message'];}}function describeAutomationCron(_0x147df1){const _0x1b0d56=String(_0x147df1||'')['trim'](),_0x3b38c4=_0x1b0d56['match'](/^(\d{1,2}) (\d{1,2}) \* \* \*$/);if(_0x3b38c4)return'Every\x20day\x20at\x20'+formatAutomationTime(_0x3b38c4[0x2],_0x3b38c4[0x1]);const _0x2cf6aa=_0x1b0d56['match'](/^(\d{1,2}) (\d{1,2}) \* \* ([0-7])$/);if(_0x2cf6aa){const _0x482d12=_0x2cf6aa[0x3]==='7'?'0':_0x2cf6aa[0x3],_0x2c59e4=AUTOMATION_WEEKDAYS['find'](_0x44e152=>_0x44e152['value']===_0x482d12)?.['label']||'Day\x20'+_0x482d12;return'Every\x20'+_0x2c59e4+'\x20at\x20'+formatAutomationTime(_0x2cf6aa[0x2],_0x2cf6aa[0x1]);}const _0x2c6435=_0x1b0d56['match'](/^(\d{1,2}) (\d{1,2}) (\d{1,2}) \* \*$/);if(_0x2c6435)return formatOrdinal(_0x2c6435[0x3])+'\x20of\x20every\x20month\x20at\x20'+formatAutomationTime(_0x2c6435[0x2],_0x2c6435[0x1]);const _0x393d6f=_0x1b0d56['match'](/^(\*\/15|\*\/30|0) ([^\s]+) \* \* ([^\s]+)$/);if(_0x393d6f){const [_0x2e9917,_0x22f45b,_0x12e7ec,_0x41c53e]=_0x393d6f;let _0x4a26e7='Recurring';if(_0x22f45b==='*/15')_0x4a26e7='Every\x2015\x20minutes';else{if(_0x22f45b==='*/30')_0x4a26e7='Every\x2030\x20minutes';else{if(_0x22f45b==='0'&&(_0x12e7ec==='*'||/\d+-\d+$/['test'](_0x12e7ec)))_0x4a26e7='Every\x20hour';else{if(_0x22f45b==='0'&&_0x12e7ec['startsWith']('*/'))_0x4a26e7='Every\x20'+_0x12e7ec['slice'](0x2)+'\x20hours';else{if(_0x22f45b==='0'){const _0x4846f1=_0x12e7ec['match'](/^[\d-]+\/(\d+)$/);if(_0x4846f1)_0x4a26e7='Every\x20'+_0x4846f1[0x1]+'\x20hours';}}}}}const _0x1fbf54=[_0x4a26e7],_0x244bf5=_0x12e7ec['match'](/^(\d+)-(\d+)(?:\/\d+)?$/);_0x244bf5&&_0x1fbf54['push'](formatAutomationTime(_0x244bf5[0x1],0x0)+'\x20-\x20'+formatAutomationTime(_0x244bf5[0x2],0x0));if(_0x41c53e!=='*'){const _0x17c475=[...parseRecurringDayToken(_0x41c53e)]['sort']((_0x406d6c,_0x4e2963)=>Number['parseInt'](_0x406d6c,0xa)-Number['parseInt'](_0x4e2963,0xa))['map'](_0x4f9f99=>AUTOMATION_WEEKDAYS['find'](_0x174cc0=>_0x174cc0['value']===_0x4f9f99)?.['label']?.['slice'](0x0,0x3))['filter'](Boolean);_0x17c475['length']>0x0&&_0x1fbf54['push'](_0x17c475['join'](',\x20'));}return _0x1fbf54['join'](',\x20');}return _0x1b0d56||'Custom\x20schedule';}function applyAutomationScheduleToForm(_0xcb1d71){const _0x2d80f2=parseAutomationScheduleToFormState(_0xcb1d71);setAutomationTimeInputValue('automation-daily-time',_0x2d80f2['dailyHour'],_0x2d80f2['dailyMinute'],'2','0'),setAutomationTimeInputValue('automation-weekly-time',_0x2d80f2['weeklyHour'],_0x2d80f2['weeklyMinute'],'9','0'),document['getElementById']('automation-weekly-day')['value']=_0x2d80f2['weeklyDay'],setAutomationTimeInputValue('automation-monthly-time',_0x2d80f2['monthlyHour'],_0x2d80f2['monthlyMinute'],'0','0'),document['getElementById']('automation-monthly-day')['value']=_0x2d80f2['monthlyDay'],document['getElementById']('automation-recurring-interval')['value']=_0x2d80f2['recurringInterval'],document['getElementById']('automation-recurring-start-hour')['value']=_0x2d80f2['recurringStartHour'],document['getElementById']('automation-recurring-end-hour')['value']=_0x2d80f2['recurringEndHour'],document['getElementById']('automation-custom-cron')['value']=_0x2d80f2['frequency']==='custom'?_0x2d80f2['customCron']:'',setRecurringDaySelectionToken(_0x2d80f2['recurringDayToken']);const _0x542a4d=document['getElementById']('automation-frequency');_0x542a4d&&(_0x542a4d['value']=_0x2d80f2['frequency']),refreshAllAutomationModalCustomSelects(),updateAutomationFrequencyFields(),updateAutomationScheduleSummary();}function getAutomationTemplates(){const _0x3da77a=state['selectedEnvData']?.['templates']||[];if(_0x3da77a['length']>0x0)return _0x3da77a['map'](_0x3ef8b9=>{const _0x11b6bb=_0x3ef8b9['filename']?.['replace'](/\.md$/,'')||_0x3ef8b9['title'];return{'name':_0x11b6bb,'title':_0x3ef8b9['title']||_0x11b6bb,'description':_0x3ef8b9['description']||'','parameters':_0x3ef8b9['parameters']||{}};});const _0x45bce3=state['selectedEnvData']?.['task_templates']||[];return _0x45bce3['map'](_0x2ab966=>({'name':_0x2ab966['name'],'title':_0x2ab966['title']||_0x2ab966['name'],'description':'','parameters':{}}));}function getSelectedAutomationTemplate(){const _0x1cf72e=document['getElementById']('automation-template-name')?.['value']||'';return getAutomationTemplates()['find'](_0x502413=>_0x502413['name']===_0x1cf72e)||null;}function renderAutomationTemplateOptions(_0x4f7b21=''){const _0x269894=document['getElementById']('automation-template-name');if(!_0x269894)return;const _0x42df18=getAutomationTemplates();if(_0x42df18['length']===0x0){_0x269894['innerHTML']='<option\x20value=\x22\x22>No\x20templates\x20available</option>',_0x269894['value']='',refreshAutomationModalCustomSelect('automation-template-name');return;}_0x269894['innerHTML']=['<option\x20value=\x22\x22>Select\x20template...</option>',..._0x42df18['map'](_0x51a296=>'<option\x20value=\x22'+Utils['escapeHtml'](_0x51a296['name'])+'\x22>'+Utils['escapeHtml'](_0x51a296['title'])+'</option>')]['join'](''),_0x269894['value']=_0x4f7b21&&_0x42df18['some'](_0x4accdf=>_0x4accdf['name']===_0x4f7b21)?_0x4f7b21:_0x42df18[0x0]['name'],refreshAutomationModalCustomSelect('automation-template-name');}function renderAutomationTemplateParameters(_0x53ec53=null){const _0x5f5a05=document['getElementById']('automation-template-params');if(!_0x5f5a05)return;_0x53ec53&&typeof _0x53ec53==='object'&&(state['automationTemplateParamValues']={..._0x53ec53});const _0x2a8c04=getSelectedAutomationTemplate(),_0xbea01e=_0x2a8c04?.['parameters']&&typeof _0x2a8c04['parameters']==='object'?Object['entries'](_0x2a8c04['parameters']):[];if(_0xbea01e['length']===0x0){_0x5f5a05['innerHTML']='<p\x20class=\x22text-muted\x20small\x22>This\x20template\x20has\x20no\x20parameters.</p>';return;}_0x5f5a05['innerHTML']=_0xbea01e['map'](([_0x149587,_0x37d33f])=>{const _0x25f365=Boolean(_0x37d33f?.['required']),_0x4a5084=_0x37d33f?.['type']||'string',_0x2a3d48=state['automationTemplateParamValues'][_0x149587]??_0x37d33f?.['default']??'',_0x540eb8=_0x37d33f?.['label']||_0x149587,_0x3bea43=_0x37d33f?.['description']||'',_0x55fcca=_0x4a5084==='number'?'number':'text';return'\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22form-row\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<label>'+Utils['escapeHtml'](_0x540eb8)+(_0x25f365?'\x20*':'')+'</label>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<input\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20type=\x22'+_0x55fcca+'\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20class=\x22form-input\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20data-automation-param=\x22'+Utils['escapeHtml'](_0x149587)+'\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20value=\x22'+Utils['escapeHtml'](String(_0x2a3d48))+'\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20placeholder=\x22'+Utils['escapeHtml'](_0x3bea43)+'\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20'+(_0x25f365?'required':'')+'>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20';})['join'](''),_0x5f5a05['querySelectorAll']('[data-automation-param]')['forEach'](_0x156a92=>{_0x156a92['addEventListener']('input',()=>{const _0x566970=_0x156a92['getAttribute']('data-automation-param');if(!_0x566970)return;state['automationTemplateParamValues'][_0x566970]=_0x156a92['value'];});});}function collectAutomationTemplateParameters(){const _0x3f1371=getSelectedAutomationTemplate(),_0xb970b6=_0x3f1371?.['parameters']&&typeof _0x3f1371['parameters']==='object'?_0x3f1371['parameters']:{},_0x383d9f={};return document['querySelectorAll']('[data-automation-param]')['forEach'](_0x17e33c=>{const _0x36c4d1=_0x17e33c['getAttribute']('data-automation-param');if(!_0x36c4d1)return;const _0x3138a7=_0xb970b6[_0x36c4d1]||{},_0x2d65cd=_0x17e33c['value']??'',_0x89c85=String(_0x2d65cd)['trim']();if(_0x89c85==='')return;if(_0x3138a7['type']==='number'){const _0x169b3d=Number(_0x89c85);_0x383d9f[_0x36c4d1]=Number['isNaN'](_0x169b3d)?_0x89c85:_0x169b3d;}else _0x3138a7['type']==='boolean'?_0x383d9f[_0x36c4d1]=_0x89c85['toLowerCase']()==='true':_0x383d9f[_0x36c4d1]=_0x89c85;}),_0x383d9f;}function setAutomationFormError(_0x329b4a=''){const _0x14ed92=document['getElementById']('automation-form-error');if(!_0x14ed92)return;_0x329b4a?(_0x14ed92['hidden']=![],_0x14ed92['textContent']=_0x329b4a):(_0x14ed92['hidden']=!![],_0x14ed92['textContent']='');}function resetAutomationModalForm(){setAutomationFormError(''),state['automationTemplateParamValues']={},state['editingAutomationId']=null,state['automationModalMode']='create',document['getElementById']('automation-name')['value']='',document['getElementById']('automation-description')['value']='',document['getElementById']('automation-frequency')['value']='daily',document['getElementById']('automation-daily-time')['value']='02:00',document['getElementById']('automation-weekly-day')['value']='1',document['getElementById']('automation-weekly-time')['value']='09:00',document['getElementById']('automation-monthly-day')['value']='1',document['getElementById']('automation-monthly-time')['value']='00:00',document['getElementById']('automation-recurring-interval')['value']='*/30\x20*\x20*\x20*\x20*',document['getElementById']('automation-recurring-start-hour')['value']='',document['getElementById']('automation-recurring-end-hour')['value']='',document['getElementById']('automation-custom-cron')['value']='',setRecurringDaySelectionToken('*');const _0x2bc663=state['selectedEnvData']?.['default_agent']||getAvailableAutomationAgentNames()[0x0]||'claude';setAutomationAgentSelection(_0x2bc663),document['getElementById']('automation-effort-level')['value']='',document['getElementById']('automation-reasoning-level')['value']='',document['getElementById']('automation-task-name')['value']='Automation\x20-\x20{{date}}',setAutomationInstructionsValue(''),document['querySelector']('input[name=\x22automation-task-mode\x22][value=\x22instructions\x22]')['checked']=!![],document['getElementById']('automation-enabled')['checked']=!![],renderAutomationTemplateOptions(),renderAutomationTemplateParameters({}),refreshAllAutomationModalCustomSelects(),updateAutomationFrequencyFields(),updateAutomationAgentFields(),updateAutomationTaskMode(),updateAutomationScheduleSummary();}function closeAutomationModal(){const _0x525b21=document['getElementById']('automation-modal');if(!_0x525b21)return;_0x525b21['hidden']=!![],setAutomationFormError('');}function findAutomationById(_0x371ebe){return state['automations']['find'](_0x5cdb8f=>_0x5cdb8f['id']===_0x371ebe)||null;}function applyAutomationToModal(_0x4bf14e){document['getElementById']('automation-name')['value']=_0x4bf14e['name']||'',document['getElementById']('automation-description')['value']=_0x4bf14e['description']||'',document['getElementById']('automation-task-name')['value']=_0x4bf14e['task']?.['name']||'Automation\x20-\x20{{date}}',setAutomationAgentSelection(_0x4bf14e['agent']?.['name']||state['selectedEnvData']?.['default_agent']||getAvailableAutomationAgentNames()[0x0]||'claude'),document['getElementById']('automation-effort-level')['value']=_0x4bf14e['agent']?.['effortLevel']||'',document['getElementById']('automation-reasoning-level')['value']=_0x4bf14e['agent']?.['reasoningLevel']||'',document['getElementById']('automation-enabled')['checked']=_0x4bf14e['enabled']!==![];const _0x5427ba=_0x4bf14e['task']?.['taskType']?'template':'instructions';document['querySelector']('input[name=\x22automation-task-mode\x22][value=\x22'+_0x5427ba+'\x22]')['checked']=!![],setAutomationInstructionsValue(_0x4bf14e['task']?.['instructions']||''),renderAutomationTemplateOptions(_0x4bf14e['task']?.['taskType']||''),state['automationTemplateParamValues']={..._0x4bf14e['task']?.['parameters']||{}},renderAutomationTemplateParameters(state['automationTemplateParamValues']),refreshAllAutomationModalCustomSelects(),applyAutomationScheduleToForm(_0x4bf14e['schedule']||'0\x202\x20*\x20*\x20*'),updateAutomationTaskMode(),updateAutomationAgentFields();}async function openAutomationModal(_0x588b73='create',_0x270a73=null){if(!state['selectedEnv'])return;await loadAvailableAutomationModels(),initializeAutomationModalCustomSelects(),initializeAutomationInstructionsEditor(),renderAutomationAgentOptions(state['selectedEnvData']?.['default_agent']||''),initializeAutomationFormOptions(),resetAutomationModalForm();const _0x429e01=document['getElementById']('automation-modal'),_0x453bb3=document['getElementById']('automation-modal-title');if(!_0x429e01||!_0x453bb3)return;if(_0x588b73==='edit'&&_0x270a73){state['automationModalMode']='edit',state['editingAutomationId']=_0x270a73,_0x453bb3['textContent']='Edit\x20Automation';const _0x1591ae=findAutomationById(_0x270a73);if(_0x1591ae)applyAutomationToModal(_0x1591ae);else try{const _0x131eff=await API['getAutomation'](_0x270a73);_0x131eff?.['automation']&&applyAutomationToModal(_0x131eff['automation']);}catch(_0x48c994){setAutomationFormError(_0x48c994['message']||'Failed\x20to\x20load\x20automation');}}else state['automationModalMode']='create',_0x453bb3['textContent']='Create\x20Automation';_0x429e01['hidden']=![];}function buildAutomationPayloadFromForm(){const _0x229cb2=document['getElementById']('automation-name')?.['value']?.['trim']()||'',_0x537e7f=document['getElementById']('automation-description')?.['value']?.['trim']()||'',_0x544f1d=document['getElementById']('automation-task-name')?.['value']?.['trim']()||'',_0x44222a=document['getElementById']('automation-enabled')?.['checked']!==![],_0x1e5341=document['getElementById']('automation-agent-name')?.['value']||state['selectedEnvData']?.['default_agent']||getAvailableAutomationAgentNames()[0x0]||'claude',_0x572c5d=document['getElementById']('automation-effort-level')?.['value']||null,_0x365ec8=document['getElementById']('automation-reasoning-level')?.['value']||null,_0x1d621e=getSelectedAutomationTaskMode();if(!_0x229cb2)throw new Error('Automation\x20name\x20is\x20required');if(!_0x544f1d)throw new Error('Task\x20name\x20template\x20is\x20required');const _0x519a71=buildAutomationScheduleFromForm();if(!_0x519a71['cron'])throw new Error('Schedule\x20is\x20required');const _0x43c934={'name':_0x229cb2,'description':_0x537e7f,'environment':state['selectedEnv'],'enabled':_0x44222a,'schedule':_0x519a71['cron'],'agent':{'name':_0x1e5341,'effortLevel':_0x1e5341==='claude'?_0x572c5d||null:null,'reasoningLevel':_0x1e5341==='codex'?_0x365ec8||null:null},'task':{'name':_0x544f1d,'instructions':'','taskType':null,'parameters':{},'skills':[]},'settings':{'retainHistoryDays':0x1e}};if(_0x1d621e==='template'){const _0x3b38a9=document['getElementById']('automation-template-name')?.['value']||'';if(!_0x3b38a9)throw new Error('Select\x20a\x20task\x20template');const _0x4f21bf=getSelectedAutomationTemplate(),_0x40b077=_0x4f21bf?.['parameters']&&typeof _0x4f21bf['parameters']==='object'?_0x4f21bf['parameters']:{},_0x5e8847=collectAutomationTemplateParameters(),_0x3b8525=Object['entries'](_0x40b077)['filter'](([_0x57aa23,_0x35531a])=>Boolean(_0x35531a?.['required'])&&String(_0x5e8847[_0x57aa23]??'')['trim']()==='')['map'](([_0xfc7fcb])=>_0xfc7fcb);if(_0x3b8525['length']>0x0)throw new Error('Missing\x20required\x20template\x20parameters:\x20'+_0x3b8525['join'](',\x20'));_0x43c934['task']['taskType']=_0x3b38a9,_0x43c934['task']['parameters']=_0x5e8847,_0x43c934['task']['instructions']=getAutomationInstructionsValue()['trim']();}else{const _0x23d4af=getAutomationInstructionsValue()['trim']();if(!_0x23d4af)throw new Error('Instructions\x20are\x20required');_0x43c934['task']['instructions']=_0x23d4af;}return _0x43c934;}async function saveAutomationFromModal(){try{setAutomationFormError('');const _0x32841f=buildAutomationPayloadFromForm();state['automationModalMode']==='edit'&&state['editingAutomationId']?(await API['updateAutomation'](state['editingAutomationId'],_0x32841f),Utils['showSuccess']('Automation\x20updated')):(await API['createAutomation'](_0x32841f),Utils['showSuccess']('Automation\x20created')),closeAutomationModal(),await renderAutomations(),state['viewingAutomationId']&&await openAutomationHistoryView(state['viewingAutomationId']);}catch(_0x558766){setAutomationFormError(_0x558766['message']||'Failed\x20to\x20save\x20automation');}}function closeAutomationHistoryView(){const _0x3c1239=document['getElementById']('automations-list-view'),_0x4db0c2=document['getElementById']('automation-history-view');if(_0x3c1239)_0x3c1239['hidden']=![];if(_0x4db0c2)_0x4db0c2['hidden']=!![];state['viewingAutomationId']=null;}async function triggerAutomationById(_0x319367){try{await API['triggerAutomation'](_0x319367),Utils['showSuccess']('Automation\x20triggered'),await renderAutomations(),state['viewingAutomationId']===_0x319367&&await openAutomationHistoryView(_0x319367);}catch(_0x4e7675){Utils['showError'](_0x4e7675['message']||'Failed\x20to\x20trigger\x20automation');}}async function triggerViewedAutomation(){if(!state['viewingAutomationId'])return;await triggerAutomationById(state['viewingAutomationId']);}async function openAutomationHistoryView(_0x4ba746){const _0x5d6781=findAutomationById(_0x4ba746);if(!_0x5d6781)return;const _0x8adcbe=document['getElementById']('automations-list-view'),_0x1797d4=document['getElementById']('automation-history-view'),_0x1bb685=document['getElementById']('automation-history-title'),_0x2191be=document['getElementById']('automation-history-subtitle'),_0x514d1a=document['getElementById']('automation-history-body'),_0x21e780=document['getElementById']('automation-history-tasks-link');if(!_0x8adcbe||!_0x1797d4||!_0x1bb685||!_0x2191be||!_0x514d1a)return;state['viewingAutomationId']=_0x4ba746,_0x8adcbe['hidden']=!![],_0x1797d4['hidden']=![],_0x1bb685['textContent']=_0x5d6781['name'],_0x2191be['textContent']=describeAutomationCron(_0x5d6781['schedule'])+'\x20·\x20'+(_0x5d6781['agent']?.['name']||'agent');_0x21e780&&(_0x21e780['href']=buildAutomationTaskFilterHref(_0x4ba746));try{const _0x2cf7bf=await API['getAutomationHistory'](_0x4ba746,0x32),_0x23d73d=_0x2cf7bf['runs']||[];if(_0x23d73d['length']===0x0){_0x514d1a['innerHTML']='<tr><td\x20colspan=\x224\x22\x20class=\x22text-muted\x22>No\x20runs\x20yet.</td></tr>';return;}_0x514d1a['innerHTML']=_0x23d73d['map'](_0x6418ac=>{const _0x409bec=_0x6418ac['status']==='failed'?'status-failed':_0x6418ac['status']==='running'?'status-running':'status-completed',_0x541832=_0x6418ac['triggeredAt']?new Date(_0x6418ac['triggeredAt'])['toLocaleString']():'-',_0x18d8b6=_0x6418ac['taskId']?'<a\x20href=\x22task.html?id='+encodeURIComponent(_0x6418ac['taskId'])+'\x22>View\x20Task</a>':'<span\x20class=\x22text-muted\x22>-</span>';return'\x0a\x20\x20\x20\x20\x20\x20\x20\x20<tr>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<td>'+Utils['escapeHtml'](_0x541832)+'</td>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<td>'+Utils['escapeHtml'](_0x6418ac['triggeredBy']||'-')+'</td>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<td><span\x20class=\x22automation-run-status\x20'+_0x409bec+'\x22>'+Utils['escapeHtml'](_0x6418ac['status']||'-')+'</span></td>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<td>'+_0x18d8b6+'</td>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</tr>\x0a\x20\x20\x20\x20\x20\x20';})['join']('');}catch(_0x5a1afc){_0x514d1a['innerHTML']='<tr><td\x20colspan=\x224\x22\x20class=\x22text-danger\x22>'+Utils['escapeHtml'](_0x5a1afc['message']||'Failed\x20to\x20load\x20history')+'</td></tr>';}}async function deleteAutomationById(_0x33beff){const _0x3ee45d=findAutomationById(_0x33beff);if(!_0x3ee45d)return;const _0x1ad148=await ConfirmDialog['show']({'title':'Delete\x20Automation','message':'Delete\x20automation\x20\x22'+_0x3ee45d['name']+'\x22?','confirmText':'Delete','danger':!![]});if(!_0x1ad148)return;try{await API['deleteAutomation'](_0x33beff),Utils['showSuccess']('Automation\x20deleted'),state['viewingAutomationId']===_0x33beff&&closeAutomationHistoryView(),await renderAutomations();}catch(_0x574759){Utils['showError'](_0x574759['message']||'Failed\x20to\x20delete\x20automation');}}async function handleAutomationTableToggleChange(_0x18307f){const _0xef20c0=_0x18307f['target']['closest']('[data-automation-toggle]');if(!_0xef20c0)return;const _0x303ba1=_0xef20c0['getAttribute']('data-automation-toggle'),_0x1bb3a1=_0xef20c0['checked'];try{await API['setAutomationEnabled'](_0x303ba1,_0x1bb3a1),Utils['showSuccess'](_0x1bb3a1?'Automation\x20enabled':'Automation\x20disabled'),await renderAutomations();}catch(_0xa9c70){_0xef20c0['checked']=!_0x1bb3a1,Utils['showError'](_0xa9c70['message']||'Failed\x20to\x20update\x20automation\x20status');}}async function handleAutomationTableActionClick(_0x50fa2c){const _0x43358a=_0x50fa2c['target']['closest']('[data-automation-action]');if(!_0x43358a)return;const _0x3278c4=_0x43358a['getAttribute']('data-automation-action'),_0x71ea9e=_0x43358a['getAttribute']('data-automation-id');if(!_0x71ea9e)return;if(_0x3278c4==='trigger'){await triggerAutomationById(_0x71ea9e);return;}if(_0x3278c4==='edit'){await openAutomationModal('edit',_0x71ea9e);return;}if(_0x3278c4==='delete'){await deleteAutomationById(_0x71ea9e);return;}_0x3278c4==='history'&&await openAutomationHistoryView(_0x71ea9e);}function renderAutomationsTable(){const _0x38838d=document['getElementById']('automations-count'),_0x5a7948=document['getElementById']('automations-empty'),_0x5012f5=document['getElementById']('automations-table-wrapper'),_0x2241ed=document['getElementById']('automations-table-body');if(!_0x38838d||!_0x5a7948||!_0x5012f5||!_0x2241ed)return;const _0x211c2b=state['automations']||[];_0x38838d['textContent']=_0x211c2b['length']+'\x20item'+(_0x211c2b['length']===0x1?'':'s');if(_0x211c2b['length']===0x0){_0x5a7948['hidden']=![],_0x5012f5['hidden']=!![],_0x2241ed['innerHTML']='';return;}_0x5a7948['hidden']=!![],_0x5012f5['hidden']=![],_0x2241ed['innerHTML']=_0x211c2b['map'](_0x4cb8a0=>{const _0x3a700b=_0x4cb8a0['description']?'<div\x20class=\x22text-muted\x20small\x22>'+Utils['escapeHtml'](_0x4cb8a0['description'])+'</div>':'',_0x323e2e=describeAutomationCron(_0x4cb8a0['schedule']),_0x2af9fb=_0x4cb8a0['lastRun']?'Last\x20run\x20'+Utils['formatRelativeTime'](_0x4cb8a0['lastRun']):'Never\x20run';return'\x0a\x20\x20\x20\x20\x20\x20<tr>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<td>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<strong>'+Utils['escapeHtml'](_0x4cb8a0['name'])+'</strong>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20'+_0x3a700b+'\x0a\x20\x20\x20\x20\x20\x20\x20\x20</td>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<td>'+Utils['escapeHtml'](_0x323e2e)+'</td>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<td>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<input\x20type=\x22checkbox\x22\x20data-automation-toggle=\x22'+Utils['escapeHtml'](_0x4cb8a0['id'])+'\x22\x20'+(_0x4cb8a0['enabled']?'checked':'')+'>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22text-muted\x20small\x22>'+Utils['escapeHtml'](_0x2af9fb)+'</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</td>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<td>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22automation-actions-cell\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20class=\x22btn-ghost\x20btn-small\x22\x20data-automation-action=\x22history\x22\x20data-automation-id=\x22'+Utils['escapeHtml'](_0x4cb8a0['id'])+'\x22>History</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20class=\x22btn-ghost\x20btn-small\x22\x20data-automation-action=\x22edit\x22\x20data-automation-id=\x22'+Utils['escapeHtml'](_0x4cb8a0['id'])+'\x22>Edit</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20class=\x22btn-ghost\x20btn-small\x20danger\x22\x20data-automation-action=\x22delete\x22\x20data-automation-id=\x22'+Utils['escapeHtml'](_0x4cb8a0['id'])+'\x22>Delete</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</td>\x0a\x20\x20\x20\x20\x20\x20</tr>\x0a\x20\x20\x20\x20';})['join']('');}async function renderAutomations(){if(!state['selectedEnv'])return;const _0x33919a=document['getElementById']('automations-loading'),_0x30ada7=document['getElementById']('automations-error');if(_0x33919a)_0x33919a['hidden']=![];_0x30ada7&&(_0x30ada7['hidden']=!![],_0x30ada7['textContent']='');const _0x116d81=state['selectedEnv'];try{const _0x5ecd84=await API['getAutomations']({'environment':_0x116d81});if(state['selectedEnv']!==_0x116d81)return;state['automations']=_0x5ecd84['automations']||[],state['automationsLoadedEnv']=_0x116d81,renderAutomationsTable(),updateTabBadge('badge-automations',state['automations']['length']);}catch(_0x2f971b){console['error']('Failed\x20to\x20load\x20automations:',_0x2f971b),_0x30ada7&&(_0x30ada7['hidden']=![],_0x30ada7['textContent']=_0x2f971b['message']||'Failed\x20to\x20load\x20automations');}finally{if(_0x33919a)_0x33919a['hidden']=!![];}}async function handleAutomationDeepLinkParams(){const {env:_0x18e628,tab:_0x4171d1,automation:_0x3e8573}=parseAutomationDeepLinkParams(window['location']['search']);if(!_0x18e628&&!_0x4171d1&&!_0x3e8573)return;_0x18e628&&_0x18e628!==state['selectedEnv']&&state['environments']['some'](_0x15df75=>_0x15df75['name']===_0x18e628)&&await selectEnvironment(_0x18e628),_0x4171d1&&switchTab(_0x4171d1),_0x3e8573&&(switchTab('automations'),await renderAutomations(),await openAutomationHistoryView(_0x3e8573));}window['switchTab']=function(_0x7f47c9){state['currentTab']=_0x7f47c9,sessionStorage['setItem'](SESSION_KEY_TAB,_0x7f47c9),document['querySelectorAll']('.content-tab')['forEach'](_0x2e6f42=>{const _0x21ff66=_0x2e6f42['dataset']['tab']===_0x7f47c9;_0x2e6f42['classList']['toggle']('active',_0x21ff66),_0x2e6f42['setAttribute']('aria-selected',_0x21ff66);}),scrollToActiveContentTab(),document['querySelectorAll']('.tab-panel')['forEach'](_0xe2a1cf=>{_0xe2a1cf['hidden']=_0xe2a1cf['id']!=='tab-'+_0x7f47c9;}),_0x7f47c9==='build'&&state['selectedEnv']&&(renderBuildTab(),loadBuildHistory()),_0x7f47c9==='deploy'&&state['selectedEnv']&&(renderDeployProfiles(),loadDeploymentHistory()),_0x7f47c9==='access'&&state['selectedEnv']&&loadAccessTab(),_0x7f47c9==='automations'&&state['selectedEnv']&&renderAutomations(),_0x7f47c9==='server'&&state['selectedEnv']&&renderServerConfig();};function renderRepos(){const _0x392552=document['querySelector']('.repos-sidebar'),_0x2f4bcb=state['selectedEnvData']['repos']||[];updateTabBadge('badge-repos',_0x2f4bcb['length']);const _0x4cebed=_0x392552['querySelector']('#new-repo-tab'),_0x666a6a=_0x2f4bcb['map']((_0x46abc3,_0x509707)=>'\x0a\x20\x20\x20\x20<button\x20class=\x22repo-tab\x22\x20data-repo=\x22'+_0x509707+'\x22\x20onclick=\x22selectRepo('+_0x509707+')\x22>\x0a\x20\x20\x20\x20\x20\x20<span\x20class=\x22repo-icon\x22>📁</span>\x0a\x20\x20\x20\x20\x20\x20<span>'+Utils['escapeHtml'](_0x46abc3['name'])+'</span>\x0a\x20\x20\x20\x20</button>\x0a\x20\x20')['join']('');_0x392552['innerHTML']=_0x4cebed['outerHTML']+_0x666a6a,_0x392552['querySelector']('#new-repo-tab')['addEventListener']('click',addRepo);if(_0x2f4bcb['length']>0x0&&state['currentRepo']===null)selectRepo(0x0);else _0x2f4bcb['length']===0x0&&showRepoEmptyState();}function showRepoEmptyState(){document['getElementById']('current-repo-name')['textContent']='Select\x20a\x20Repository',document['getElementById']('delete-repo-btn')['hidden']=!![],document['getElementById']('repo-details-container')['innerHTML']='<p\x20class=\x22text-muted\x22>Select\x20a\x20repository\x20from\x20the\x20sidebar\x20to\x20view\x20details,\x20or\x20add\x20a\x20new\x20one.</p>';}function persistCurrentRepoFormChanges(){if(state['currentRepo']===null)return;const _0x35148c=state['selectedEnvData']?.['repos'];if(!Array['isArray'](_0x35148c)||!_0x35148c[state['currentRepo']])return;const _0x38f412=document['getElementById']('repo-url'),_0x59aba=document['getElementById']('repo-allow-branch-selection'),_0x24cab8=document['getElementById']('repo-path'),_0x27530d=document['getElementById']('repo-description'),_0x17533e=document['getElementById']('repo-clone-auto'),_0x4b997d=document['getElementById']('repo-post-clone-action');if(!_0x38f412||!_0x59aba||!_0x24cab8||!_0x27530d||!_0x17533e||!_0x4b997d)return;const _0x247725=_0x35148c[state['currentRepo']],_0xfd2175=document['getElementById']('edit-repo-provider')?.['value']||'',_0x287dee=document['getElementById']('edit-repo-credential-mode')?.['value']||'app',_0x8719b2=monacoEditors['get']('repo-custom-action-editor'),_0x1b9e55=_0x8719b2?_0x8719b2['getValue']()['trim']():'';let _0x45e638;if(_0x4b997d['value']==='custom'&&_0x1b9e55)_0x45e638=_0x1b9e55;else _0x4b997d['value']!=='none'&&_0x4b997d['value']!=='custom'&&(_0x45e638=_0x4b997d['value']);const _0x231ed9={..._0x247725,'url':_0x38f412['value'],'branch':getEditRepoBranchValue(),'allow_branch_selection':_0x59aba['checked'],'path':_0x24cab8['value']||undefined,'description':_0x27530d['value']||undefined,'clone_auto':_0x17533e['checked'],'post_clone_action':_0x45e638||undefined};_0xfd2175?_0x231ed9['remote_provider']={'provider':_0xfd2175,'credential_mode':_0x287dee}:delete _0x231ed9['remote_provider'],_0x35148c[state['currentRepo']]=_0x231ed9;}window['selectRepo']=function(_0x2828a3){persistCurrentRepoFormChanges();const _0x11c855=monacoEditors['get']('repo-custom-action-editor');_0x11c855&&(_0x11c855['dispose'](),monacoEditors['delete']('repo-custom-action-editor'));state['currentRepo']=_0x2828a3;const _0x15e37c=state['selectedEnvData']['repos'][_0x2828a3],_0x55574d=_0x15e37c['remote_provider']&&_0x15e37c['remote_provider']['provider'];document['querySelectorAll']('.repo-tab')['forEach'](_0x5cbb00=>{_0x5cbb00['classList']['toggle']('active',_0x5cbb00['dataset']['repo']===String(_0x2828a3));}),document['getElementById']('current-repo-name')['textContent']=_0x15e37c['name'],document['getElementById']('delete-repo-btn')['hidden']=![];const _0x12c382='\x0a\x20\x20\x20\x20<div\x20class=\x22form-row\x22>\x0a\x20\x20\x20\x20\x20\x20<label\x20for=\x22edit-repo-provider\x22>Git\x20Provider</label>\x0a\x20\x20\x20\x20\x20\x20<select\x20id=\x22edit-repo-provider\x22\x20class=\x22form-input\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\x22\x22>None</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<!--\x20Providers\x20populated\x20via\x20loadEditRepoProviders()\x20-->\x0a\x20\x20\x20\x20\x20\x20</select>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20',_0x11818c=_0x15e37c['remote_provider']?.['credential_mode']||'app',_0x59f270='\x0a\x20\x20\x20\x20<div\x20id=\x22edit-repo-credential-mode-row\x22\x20class=\x22form-row\x22\x20'+(_0x55574d?'':'hidden')+'>\x0a\x20\x20\x20\x20\x20\x20<label\x20for=\x22edit-repo-credential-mode\x22>Credential\x20Mode</label>\x0a\x20\x20\x20\x20\x20\x20<select\x20id=\x22edit-repo-credential-mode\x22\x20class=\x22form-input\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\x22app\x22\x20'+(_0x11818c==='app'?'selected':'')+'>App\x20Credentials</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\x22user\x22\x20'+(_0x11818c==='user'?'selected':'')+'>User\x20Credentials</option>\x0a\x20\x20\x20\x20\x20\x20</select>\x0a\x20\x20\x20\x20\x20\x20<small\x20class=\x22form-hint\x22>For\x20tasks\x20and\x20deployments.\x20App:\x20app/bot\x20identity.\x20User:\x20personal\x20Git\x20account\x20(requires\x20connection).</small>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20',_0x88d6c6='\x0a\x20\x20\x20\x20<div\x20id=\x22edit-repo-url-row\x22\x20class=\x22form-row\x22\x20'+(_0x55574d?'hidden':'')+'>\x0a\x20\x20\x20\x20\x20\x20<label\x20for=\x22repo-url\x22>Repository\x20URL</label>\x0a\x20\x20\x20\x20\x20\x20<input\x20type=\x22text\x22\x20id=\x22repo-url\x22\x20class=\x22form-input\x20code-font\x22\x20value=\x22'+Utils['escapeHtml'](_0x15e37c['url'])+'\x22\x20placeholder=\x22https://github.com/user/repo.git\x22>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20',_0x7da796='\x0a\x20\x20\x20\x20<div\x20id=\x22edit-repo-autocomplete-row\x22\x20class=\x22form-row\x22\x20'+(_0x55574d?'':'hidden')+'\x20style=\x22margin-top:\x2016px;\x22>\x0a\x20\x20\x20\x20\x20\x20<label>Repository</label>\x0a\x20\x20\x20\x20\x20\x20<div\x20id=\x22edit-repo-autocomplete-container\x22></div>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20',_0xd3728f=document['getElementById']('repo-details-container');_0xd3728f['innerHTML']='\x0a\x20\x20\x20\x20<div\x20class=\x22form-single-column\x22>\x0a\x20\x20\x20\x20\x20\x20'+_0x12c382+'\x0a\x20\x20\x20\x20\x20\x20'+_0x59f270+'\x0a\x20\x20\x20\x20\x20\x20'+_0x88d6c6+'\x0a\x20\x20\x20\x20\x20\x20'+_0x7da796+'\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22form-row\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<label\x20for=\x22repo-branch-field\x22>Branch</label>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22autocomplete-control-with-icon\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20id=\x22repo-branch-field\x22></div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20type=\x22button\x22\x20class=\x22btn-icon\x20autocomplete-refresh-btn\x22\x20id=\x22repo-branch-refresh-btn\x22\x20title=\x22Reload\x20branch\x20list\x22\x20aria-label=\x22Reload\x20branch\x20list\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20↻\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22form-row\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<label>Allow\x20Branch\x20Selection</label>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<label\x20class=\x22toggle-switch\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<input\x20type=\x22checkbox\x22\x20id=\x22repo-allow-branch-selection\x22\x20'+(_0x15e37c['allow_branch_selection']?'checked':'')+'>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22toggle-slider\x22></span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</label>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22form-row\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<label>Path</label>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<input\x20type=\x22text\x22\x20id=\x22repo-path\x22\x20class=\x22form-input\x20code-font\x22\x20value=\x22'+Utils['escapeHtml'](_0x15e37c['path']||'')+'\x22\x20placeholder=\x22Optional\x20path\x20in\x20environment\x22>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22form-row\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<label>Description</label>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<input\x20type=\x22text\x22\x20id=\x22repo-description\x22\x20class=\x22form-input\x22\x20value=\x22'+Utils['escapeHtml'](_0x15e37c['description']||'')+'\x22\x20placeholder=\x22Optional\x20description\x22>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22form-row\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<label>Clone\x20Automatically</label>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<label\x20class=\x22toggle-switch\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<input\x20type=\x22checkbox\x22\x20id=\x22repo-clone-auto\x22\x20'+(_0x15e37c['clone_auto']!==![]?'checked':'')+'>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22toggle-slider\x22></span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</label>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<small\x20class=\x22form-hint\x22>Include\x20this\x20repository\x20in\x20the\x20Docker\x20build.\x20Disable\x20to\x20clone\x20manually\x20at\x20runtime\x20or\x20via\x20post-clone\x20script.</small>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22form-row\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<label\x20for=\x22repo-post-clone-action\x22>Post-clone\x20Action</label>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<select\x20id=\x22repo-post-clone-action\x22\x20class=\x22form-input\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\x22none\x22\x20'+(!_0x15e37c['post_clone_action']||_0x15e37c['post_clone_action']==='none'?'selected':'')+'>None</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<optgroup\x20label=\x22Node.js\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\x22npm\x20install\x22\x20'+(_0x15e37c['post_clone_action']==='npm\x20install'?'selected':'')+'>npm\x20install</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\x22npm\x20ci\x22\x20'+(_0x15e37c['post_clone_action']==='npm\x20ci'?'selected':'')+'>npm\x20ci</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\x22yarn\x22\x20'+(_0x15e37c['post_clone_action']==='yarn'?'selected':'')+'>yarn</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\x22pnpm\x20install\x22\x20'+(_0x15e37c['post_clone_action']==='pnpm\x20install'?'selected':'')+'>pnpm\x20install</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</optgroup>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<optgroup\x20label=\x22Python\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\x22pip\x20install\x20-r\x20requirements.txt\x22\x20'+(_0x15e37c['post_clone_action']==='pip\x20install\x20-r\x20requirements.txt'?'selected':'')+'>pip\x20install\x20-r\x20requirements.txt</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\x22pip\x20install\x20-e\x20.\x22\x20'+(_0x15e37c['post_clone_action']==='pip\x20install\x20-e\x20.'?'selected':'')+'>pip\x20install\x20-e\x20.\x20(editable)</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</optgroup>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<optgroup\x20label=\x22Java\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\x22mvn\x20install\x20-DskipTests\x22\x20'+(_0x15e37c['post_clone_action']==='mvn\x20install\x20-DskipTests'?'selected':'')+'>mvn\x20install\x20(skip\x20tests)</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\x22./gradlew\x20build\x20-x\x20test\x22\x20'+(_0x15e37c['post_clone_action']==='./gradlew\x20build\x20-x\x20test'?'selected':'')+'>gradle\x20build\x20(skip\x20tests)</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</optgroup>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<optgroup\x20label=\x22.NET\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\x22dotnet\x20restore\x22\x20'+(_0x15e37c['post_clone_action']==='dotnet\x20restore'?'selected':'')+'>dotnet\x20restore</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\x22dotnet\x20build\x22\x20'+(_0x15e37c['post_clone_action']==='dotnet\x20build'?'selected':'')+'>dotnet\x20build</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</optgroup>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<optgroup\x20label=\x22PHP\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\x22composer\x20install\x22\x20'+(_0x15e37c['post_clone_action']==='composer\x20install'?'selected':'')+'>composer\x20install</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</optgroup>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<optgroup\x20label=\x22Other\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\x22custom\x22\x20'+(_0x15e37c['post_clone_action']==='custom'||_0x15e37c['post_clone_action']&&!isKnownPostCloneAction(_0x15e37c['post_clone_action'])?'selected':'')+'>Custom\x20command...</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</optgroup>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</select>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<small\x20class=\x22form-hint\x22>Command\x20to\x20run\x20in\x20this\x20repository\x27s\x20directory\x20after\x20cloning.</small>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22form-row\x22\x20id=\x22repo-custom-action-row\x22\x20'+(_0x15e37c['post_clone_action']&&!isKnownPostCloneAction(_0x15e37c['post_clone_action'])&&_0x15e37c['post_clone_action']!=='none'?'':'hidden')+'>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<label\x20for=\x22repo-custom-action\x22>Custom\x20Command</label>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20id=\x22repo-custom-action-editor\x22\x20style=\x22height:\x20150px;\x20border:\x201px\x20solid\x20var(--color-border);\x20border-radius:\x204px;\x22></div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<small\x20class=\x22form-hint\x22>Shell\x20commands\x20to\x20run\x20after\x20cloning.\x20Use\x20multiple\x20lines\x20for\x20complex\x20commands.</small>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20',loadEditRepoProviders(_0x15e37c),initEditRepoBranchAutocomplete(_0x15e37c);const _0xb6444=document['getElementById']('repo-branch-refresh-btn');_0xb6444&&(_0xb6444['onclick']=_0x243d1a=>{_0x243d1a['preventDefault'](),reloadEditRepoBranchSuggestions();});document['getElementById']('edit-repo-provider')['addEventListener']('change',onEditRepoProviderChange),document['getElementById']('repo-post-clone-action')['addEventListener']('change',async _0x3f8f81=>{const _0x14a1e7=document['getElementById']('repo-custom-action-row'),_0x3d9561=_0x3f8f81['target']['value']==='custom';_0x14a1e7['hidden']=!_0x3d9561;if(_0x3d9561){const _0x58dccd=monacoEditors['get']('repo-custom-action-editor');if(!_0x58dccd){const _0x301f88=await createMonacoEditor('repo-custom-action-editor','','shell',![]);_0x301f88&&(_0x301f88['updateOptions']({'wordWrap':'off'}),_0x301f88['onDidChangeModelContent'](()=>markAsModified()));}}markAsModified();});if(_0x15e37c['post_clone_action']&&!isKnownPostCloneAction(_0x15e37c['post_clone_action'])&&_0x15e37c['post_clone_action']!=='none'){const _0xcc23c0=_0x15e37c['post_clone_action'];createMonacoEditor('repo-custom-action-editor',_0xcc23c0,'shell',![])['then'](_0x3da99f=>{_0x3da99f&&(_0x3da99f['updateOptions']({'wordWrap':'off'}),_0x3da99f['onDidChangeModelContent'](()=>markAsModified()));});}const _0x5dd5c6=['repo-url','repo-allow-branch-selection','repo-path','repo-description','repo-clone-auto','edit-repo-credential-mode'];_0x5dd5c6['forEach'](_0x4d859c=>{const _0x1daa6d=document['getElementById'](_0x4d859c);_0x1daa6d&&(_0x1daa6d['addEventListener']('input',markAsModified),_0x1daa6d['addEventListener']('change',markAsModified));});};const REPO_ICON_PUBLIC='<svg\x20viewBox=\x220\x200\x2016\x2016\x22><path\x20d=\x22M2\x202.5A2.5\x202.5\x200\x200\x201\x204.5\x200h8.75a.75.75\x200\x200\x201\x20.75.75v12.5a.75.75\x200\x200\x201-.75.75h-2.5a.75.75\x200\x200\x201\x200-1.5h1.75v-2h-8a1\x201\x200\x200\x200-.714\x201.7.75.75\x200\x201\x201-1.072\x201.05A2.495\x202.495\x200\x200\x201\x202\x2011.5Zm10.5-1h-8a1\x201\x200\x200\x200-1\x201v6.708A2.486\x202.486\x200\x200\x201\x204.5\x209h8ZM5\x2012.25a.25.25\x200\x200\x201\x20.25-.25h3.5a.25.25\x200\x200\x201\x20.25.25v3.25a.25.25\x200\x200\x201-.4.2l-1.45-1.087a.249.249\x200\x200\x200-.3\x200L5.4\x2015.7a.25.25\x200\x200\x201-.4-.2Z\x22></path></svg>',REPO_ICON_PRIVATE='<svg\x20viewBox=\x220\x200\x2016\x2016\x22><path\x20fill-rule=\x22evenodd\x22\x20d=\x22M4\x204v2h-.25A1.75\x201.75\x200\x20002\x207.75v5.5c0\x20.966.784\x201.75\x201.75\x201.75h8.5A1.75\x201.75\x200\x200014\x2013.25v-5.5A1.75\x201.75\x200\x200012.25\x206H12V4a4\x204\x200\x2010-8\x200zm6.5\x202V4a2.5\x202.5\x200\x2000-5\x200v2h5zM12\x207.5h.25a.25.25\x200\x2001.25.25v5.5a.25.25\x200\x2001-.25.25h-8.5a.25.25\x200\x2001-.25-.25v-5.5a.25.25\x200\x2001.25-.25H12z\x22></path></svg>';async function loadEditRepoProviders(_0x4a04f2){const _0x3d8751=document['getElementById']('edit-repo-provider');if(!_0x3d8751)return;const _0x5cebc1=_0x4a04f2['remote_provider']&&_0x4a04f2['remote_provider']['provider'];try{const _0x1f84a9=await API['get']('/environments/'+state['selectedEnv']+'/repos/providers'),_0xedf73e=_0x1f84a9['providers']||[];let _0x3740df='<option\x20value=\x22\x22>None</option>',_0x51f963=![];_0xedf73e['forEach'](_0x247dd8=>{const _0xcb166c=_0x5cebc1&&_0x4a04f2['remote_provider']['provider']===_0x247dd8['name'];if(_0xcb166c)_0x51f963=!![];const _0x130b3d=_0xcb166c?'selected':'';_0x3740df+='<option\x20value=\x22'+Utils['escapeHtml'](_0x247dd8['name'])+'\x22\x20'+_0x130b3d+'>'+Utils['escapeHtml'](_0x247dd8['name'])+'\x20('+Utils['escapeHtml'](_0x247dd8['type'])+')</option>';}),_0x5cebc1&&!_0x51f963&&(_0x3740df+='<option\x20value=\x22'+Utils['escapeHtml'](_0x4a04f2['remote_provider']['provider'])+'\x22\x20selected\x20disabled>'+Utils['escapeHtml'](_0x4a04f2['remote_provider']['provider'])+'\x20(unavailable)</option>'),_0x3d8751['innerHTML']=_0x3740df,state['editRepoProviders']=_0xedf73e,initEditRepoAutocomplete(_0x4a04f2);}catch(_0x51622c){console['error']('Failed\x20to\x20load\x20providers\x20for\x20edit\x20repo:',_0x51622c);}}function extractRepoFullName(_0xbf5207){if(!_0xbf5207)return'';try{const _0x4bbec9=_0xbf5207['match'](/\/([^/]+)\/_git\/([^/]+?)(?:\.git)?$/);if(_0x4bbec9)return _0x4bbec9[0x1]+'/'+_0x4bbec9[0x2];const _0x3d315b=_0xbf5207['match'](/[/:]([^/:]+\/[^/]+?)(?:\.git)?$/);return _0x3d315b?_0x3d315b[0x1]:_0xbf5207;}catch{return _0xbf5207;}}function normalizeGitUrl(_0x1692fe){if(!_0x1692fe)return _0x1692fe;const _0x4a9dfe=_0x1692fe['match'](/^(https?:\/\/)[^@/]+@(.+)$/i);if(_0x4a9dfe)return''+_0x4a9dfe[0x1]+_0x4a9dfe[0x2];return _0x1692fe;}function initEditRepoAutocomplete(_0x551a16){const _0x1bde30=document['getElementById']('edit-repo-autocomplete-container');if(!_0x1bde30)return;const _0x2a0cac=_0x551a16['remote_provider']&&_0x551a16['remote_provider']['provider'];editRepoAutocomplete&&(editRepoAutocomplete['destroy'](),editRepoAutocomplete=null);editRepoAutocomplete=new AutocompleteSelect(_0x1bde30,{'placeholder':'Search\x20for\x20a\x20repository','maxItems':0x64,'emptyMessage':'No\x20repositories\x20found','loadingMessage':'Loading\x20repositories...','preload':![],'searchMode':'server','loadItems':async _0x2dfd02=>{const _0x40ac9a=document['getElementById']('edit-repo-provider')['value'];if(!_0x40ac9a)return[];try{let _0x5bd71b='/environments/'+state['selectedEnv']+'/repos/available-from-provider?provider='+encodeURIComponent(_0x40ac9a)+'&limit=100';_0x2dfd02&&_0x2dfd02['trim']()&&(_0x5bd71b+='&search='+encodeURIComponent(_0x2dfd02['trim']()));const _0x6cea2e=await API['get'](_0x5bd71b);return _0x6cea2e['repositories']||[];}catch(_0x4687dc){console['error']('Failed\x20to\x20load\x20repositories:',_0x4687dc);throw _0x4687dc;}},'renderItem':_0x530c91=>{const _0x361296=_0x530c91['private']===!![];let _0x1fec57=_0x530c91['description']||'no\x20description';return _0x530c91['descriptionSource']==='project'&&_0x530c91['description']&&(_0x1fec57='Project:\x20'+_0x530c91['description']),{'primary':_0x530c91['full_name']||_0x530c91['name'],'secondary':_0x1fec57,'icon':_0x361296?REPO_ICON_PRIVATE:REPO_ICON_PUBLIC,'iconClass':_0x361296?'icon-private':'icon-public'};},'sortItems':_0x2c1935=>{return _0x2c1935['sort']((_0x5bd140,_0x20a61a)=>{const _0x18d9b2=(_0x5bd140['full_name']||_0x5bd140['name']||'')['toLowerCase'](),_0x2940e2=(_0x20a61a['full_name']||_0x20a61a['name']||'')['toLowerCase']();return _0x18d9b2['localeCompare'](_0x2940e2);});},'getItemValue':_0x3945f9=>_0x3945f9['clone_url']||_0x3945f9['url'],'onSelect':_0x3ce7ed=>{if(_0x3ce7ed){const _0x1e452a=document['getElementById']('repo-url');_0x1e452a&&(_0x1e452a['value']=_0x3ce7ed['clone_url']||_0x3ce7ed['url']||''),setEditRepoBranchValue(_0x3ce7ed['default_branch']||'main'),reloadEditRepoBranchSuggestions(),markAsModified();}}});if(_0x2a0cac){editRepoAutocomplete['enable'](),editRepoAutocomplete['preloadData']();const _0xc1e38e={'full_name':extractRepoFullName(_0x551a16['url']),'clone_url':_0x551a16['url'],'name':_0x551a16['name']};editRepoAutocomplete['setValue'](_0xc1e38e);}else editRepoAutocomplete['disable']();}function onEditRepoProviderChange(){const _0x3c0ac8=document['getElementById']('edit-repo-provider')['value'],_0xb3692c=document['getElementById']('edit-repo-url-row'),_0x12b9ac=document['getElementById']('edit-repo-autocomplete-row'),_0xfd2fc5=document['getElementById']('edit-repo-credential-mode-row'),_0x4604cd=document['getElementById']('repo-url');if(_0x3c0ac8){_0xb3692c['hidden']=!![],_0x12b9ac['hidden']=![];if(_0xfd2fc5)_0xfd2fc5['hidden']=![];_0x4604cd&&(_0x4604cd['value']=''),editRepoAutocomplete&&(editRepoAutocomplete['reset'](),editRepoAutocomplete['enable'](),editRepoAutocomplete['preloadData']());}else{_0xb3692c['hidden']=![],_0x12b9ac['hidden']=!![];if(_0xfd2fc5)_0xfd2fc5['hidden']=!![];_0x4604cd&&(_0x4604cd['value']=''),editRepoAutocomplete&&(editRepoAutocomplete['reset'](),editRepoAutocomplete['disable']());}reloadEditRepoBranchSuggestions(),markAsModified();}function cleanupEditRepoAutocomplete(){editRepoAutocomplete&&(editRepoAutocomplete['destroy'](),editRepoAutocomplete=null),editRepoBranchAutocomplete&&(editRepoBranchAutocomplete['destroy'](),editRepoBranchAutocomplete=null);}function initEditRepoBranchAutocomplete(_0x12e47b){const _0x5f199a=document['getElementById']('repo-branch-field');if(!_0x5f199a)return;editRepoBranchAutocomplete&&(editRepoBranchAutocomplete['destroy'](),editRepoBranchAutocomplete=null);editRepoBranchAutocomplete=new AutocompleteSelect(_0x5f199a,{'placeholder':'Search\x20for\x20a\x20branch','maxItems':0x64,'emptyMessage':'No\x20branches\x20found','loadingMessage':'Loading\x20branches...','preload':![],'searchMode':'server','loadItems':async _0x52b0fd=>{const {providerName:_0x3713bb,repoUrl:_0x6e563c}=getEditRepoBranchContext();if(!_0x3713bb||!_0x6e563c)return[];return fetchRepoBranches({'providerName':_0x3713bb,'repoUrl':_0x6e563c,'query':_0x52b0fd});},'renderItem':_0x4437b0=>({'primary':_0x4437b0['name'],'secondary':_0x4437b0['isDefault']?'default':''}),'sortItems':_0xcbe5e7=>_0xcbe5e7['sort']((_0x643007,_0x400fa7)=>{if(_0x643007['isDefault'])return-0x1;if(_0x400fa7['isDefault'])return 0x1;return(_0x643007['name']||'')['localeCompare'](_0x400fa7['name']||'');}),'getItemValue':_0x3de15d=>_0x3de15d['name'],'onSelect':_0x239d41=>{_0x239d41&&setEditRepoBranchValue(_0x239d41['name']),markAsModified();}}),setEditRepoBranchValue(_0x12e47b?.['branch']||'main');editRepoBranchAutocomplete['input']&&editRepoBranchAutocomplete['input']['addEventListener']('input',()=>{clearBranchAutocompleteError(editRepoBranchAutocomplete),markAsModified();});const _0x598fc7=document['getElementById']('edit-repo-provider')?.['value']||'',_0x1162f3=document['getElementById']('repo-url')?.['value']?.['trim']()||'';_0x598fc7&&_0x1162f3&&editRepoBranchAutocomplete['preloadData']();}function validateEditRepoForm(){const _0x5f149f=document['getElementById']('edit-repo-provider')?.['value']||'',_0x549e0f=document['getElementById']('repo-url')?.['value']?.['trim']()||'',_0x90d56f=getEditRepoBranchValue(),_0x13d1d3=[];return _0x5f149f?!_0x549e0f&&_0x13d1d3['push']('Please\x20select\x20a\x20repository\x20from\x20the\x20provider'):!_0x549e0f&&_0x13d1d3['push']('Repository\x20URL\x20is\x20required'),!_0x90d56f&&_0x13d1d3['push']('Branch\x20is\x20required'),_0x13d1d3;}function addRepo(){const _0x309712=document['getElementById']('new-repo-url'),_0xafed95=document['getElementById']('new-repo-name'),_0x1566fc=document['getElementById']('add-repo-error');document['getElementById']('repo-modal-title')['textContent']='Add\x20Repository',_0x309712['value']='',_0xafed95['value']='',setNewRepoBranchValue('main'),document['getElementById']('new-repo-allow-branch')['checked']=![],document['getElementById']('new-repo-path')['value']='',document['getElementById']('new-repo-description')['value']='',document['querySelector']('input[name=\x22repo-entry-mode\x22][value=\x22manual\x22]')['checked']=!![],document['getElementById']('repo-provider-selection')['hidden']=!![],document['getElementById']('repo-url-row')['hidden']=![],document['getElementById']('new-repo-source-provider')['value']='';repoAutocomplete&&(repoAutocomplete['reset'](),repoAutocomplete['disable']());const _0xbb6bfb=document['getElementById']('new-repo-credential-mode');_0xbb6bfb&&(_0xbb6bfb['value']='app');_0x309712['classList']['remove']('input-error'),_0xafed95['classList']['remove']('input-error'),clearBranchAutocompleteError(newRepoBranchAutocomplete),_0x1566fc['hidden']=!![];const _0x266936=_0x539869=>_0x539869['target']['classList']['remove']('input-error');_0x309712['addEventListener']('input',_0x266936,{'once':!![]}),_0xafed95['addEventListener']('input',_0x266936,{'once':!![]}),_0x309712['addEventListener']('input',()=>{const _0x16db82=_0x309712['value']['trim']();if(_0x16db82&&!_0xafed95['value']){const _0xdc1bef=_0x16db82['split']('/'),_0x5a5c4b=_0xdc1bef[_0xdc1bef['length']-0x1]['replace'](/\.git$/,'');_0xafed95['placeholder']=_0x5a5c4b||'Auto-extracted\x20from\x20URL';}}),loadRepoModalProviders(),initNewRepoBranchAutocomplete(),reloadNewRepoBranchSuggestions(),document['getElementById']('add-repo-modal')['hidden']=![];}function closeAddRepoModal(){document['getElementById']('add-repo-modal')['hidden']=!![],newRepoBranchAutocomplete&&(newRepoBranchAutocomplete['destroy'](),newRepoBranchAutocomplete=null),repoAutocomplete&&(repoAutocomplete['reset'](),repoAutocomplete['disable']());}function initNewRepoBranchAutocomplete(){const _0x201899=document['getElementById']('new-repo-branch-field');if(!_0x201899)return;newRepoBranchAutocomplete&&(newRepoBranchAutocomplete['destroy'](),newRepoBranchAutocomplete=null),newRepoBranchAutocomplete=new AutocompleteSelect(_0x201899,{'placeholder':'Search\x20for\x20a\x20branch','maxItems':0x64,'emptyMessage':'No\x20branches\x20found','loadingMessage':'Loading\x20branches...','preload':![],'searchMode':'server','loadItems':async _0x4ba68=>{const {providerName:_0x11de42,repoUrl:_0x5f1989}=getNewRepoBranchContext();if(!_0x11de42||!_0x5f1989)return[];return fetchRepoBranches({'providerName':_0x11de42,'repoUrl':_0x5f1989,'query':_0x4ba68});},'renderItem':_0x5b4d00=>({'primary':_0x5b4d00['name'],'secondary':_0x5b4d00['isDefault']?'default':''}),'sortItems':_0x295ab1=>_0x295ab1['sort']((_0x124353,_0xaef98)=>{if(_0x124353['isDefault'])return-0x1;if(_0xaef98['isDefault'])return 0x1;return(_0x124353['name']||'')['localeCompare'](_0xaef98['name']||'');}),'getItemValue':_0xb6f6dd=>_0xb6f6dd['name'],'onSelect':_0x48bb41=>{_0x48bb41&&setNewRepoBranchValue(_0x48bb41['name']);}}),newRepoBranchAutocomplete['input']&&newRepoBranchAutocomplete['input']['addEventListener']('input',()=>{clearBranchAutocompleteError(newRepoBranchAutocomplete);});}async function confirmAddRepo(){const _0x4c15f5=document['getElementById']('new-repo-url'),_0x1075bc=document['getElementById']('new-repo-name'),_0x1a2604=document['getElementById']('add-repo-error'),_0x5e28e5=_0x4c15f5['value']['trim'](),_0x45bf1f=getNewRepoBranchValue();let _0xdf131e=_0x1075bc['value']['trim']();_0x4c15f5['classList']['remove']('input-error'),_0x1075bc['classList']['remove']('input-error'),clearBranchAutocompleteError(newRepoBranchAutocomplete),_0x1a2604['hidden']=!![];const _0x54d93e=document['querySelector']('input[name=\x22repo-entry-mode\x22]:checked')['value'];let _0x1be23d=![],_0x290ad0='';if(_0x54d93e==='provider'){const _0xb5481b=document['getElementById']('new-repo-source-provider')['value'],_0x17baa1=repoAutocomplete?repoAutocomplete['getSelectedItem']():null;if(!_0xb5481b)_0x290ad0='Please\x20select\x20a\x20Git\x20provider',_0x1be23d=!![];else!_0x17baa1&&(_0x290ad0='Please\x20select\x20a\x20repository',_0x1be23d=!![]);}else!_0x5e28e5&&(_0x4c15f5['classList']['add']('input-error'),_0x290ad0='Repository\x20URL\x20is\x20required',_0x1be23d=!![]);!_0x45bf1f&&(setBranchAutocompleteErrorState(newRepoBranchAutocomplete,!![]),_0x290ad0=_0x290ad0||'Branch\x20is\x20required',_0x1be23d=!![]);if(!_0xdf131e&&_0x5e28e5){const _0x2f3a9b=_0x5e28e5['split']('/');_0xdf131e=_0x2f3a9b[_0x2f3a9b['length']-0x1]['replace'](/\.git$/,'');}!_0xdf131e&&(_0x1075bc['classList']['add']('input-error'),_0x290ad0=_0x290ad0||'Repository\x20name\x20is\x20required',_0x1be23d=!![]);if(_0x1be23d){_0x1a2604['textContent']=_0x290ad0,_0x1a2604['hidden']=![];return;}const _0x506667={'name':_0xdf131e,'url':_0x5e28e5,'branch':_0x45bf1f,'allow_branch_selection':document['getElementById']('new-repo-allow-branch')['checked'],'path':document['getElementById']('new-repo-path')['value']['trim']()||undefined,'description':document['getElementById']('new-repo-description')['value']['trim']()||undefined};if(_0x54d93e==='provider'){const _0x17cd2c=document['getElementById']('new-repo-source-provider')['value'];if(_0x17cd2c){const _0x19f00c=document['getElementById']('new-repo-credential-mode')?.['value']||'app';_0x506667['remote_provider']={'provider':_0x17cd2c,'credential_mode':_0x19f00c};}}state['selectedEnvData']['repos']=[...state['selectedEnvData']['repos']||[],_0x506667],renderRepos(),markAsModified(),closeAddRepoModal(),Utils['showSuccess']('Repository\x20added\x20(click\x20Save\x20to\x20persist\x20changes)');}async function loadRepoModalProviders(){try{const _0x2c5382=await API['get']('/environments/'+state['selectedEnv']+'/repos/providers'),_0x27b1ab=_0x2c5382['providers']||[],_0x205135=document['getElementById']('new-repo-source-provider');_0x205135['innerHTML']='<option\x20value=\x22\x22>--\x20Select\x20a\x20provider\x20--</option>',_0x27b1ab['forEach'](_0x132825=>{_0x205135['innerHTML']+='<option\x20value=\x22'+Utils['escapeHtml'](_0x132825['name'])+'\x22>'+Utils['escapeHtml'](_0x132825['name'])+'\x20('+Utils['escapeHtml'](_0x132825['type'])+')</option>';});}catch(_0x5569ba){console['error']('Failed\x20to\x20load\x20providers\x20for\x20repo\x20modal:',_0x5569ba);}}function onRepoEntryModeChange(_0xb98012){const _0x527d30=_0xb98012['target']['value'],_0x293e7a=document['getElementById']('repo-provider-selection'),_0x474c7e=document['getElementById']('repo-url-row'),_0x4ff7f6=document['getElementById']('new-repo-url'),_0x55ad21=document['getElementById']('new-repo-name'),_0x18dc3e=document['getElementById']('new-repo-source-provider');_0x527d30==='provider'?(_0x293e7a['hidden']=![],_0x474c7e['hidden']=!![],_0x18dc3e['value']='',initRepoAutocomplete(),_0x55ad21['placeholder']='Auto-extracted\x20from\x20URL'):(_0x293e7a['hidden']=!![],_0x474c7e['hidden']=![],_0x4ff7f6['value']='',repoAutocomplete&&(repoAutocomplete['reset'](),repoAutocomplete['disable']()),_0x55ad21['placeholder']='Auto-extracted\x20from\x20URL'),reloadNewRepoBranchSuggestions();}function initRepoAutocomplete(){const _0x453c0f=document['getElementById']('repo-autocomplete-container');if(!_0x453c0f)return;repoAutocomplete&&repoAutocomplete['destroy'](),repoAutocomplete=new AutocompleteSelect(_0x453c0f,{'placeholder':'Search\x20for\x20a\x20repository','maxItems':0x64,'emptyMessage':'No\x20repositories\x20found','loadingMessage':'Loading\x20repositories...','preload':![],'searchMode':'server','loadItems':async _0x1e49b5=>{const _0x39c436=document['getElementById']('new-repo-source-provider')['value'];if(!_0x39c436)return[];try{let _0x23e788='/environments/'+state['selectedEnv']+'/repos/available-from-provider?provider='+encodeURIComponent(_0x39c436)+'&limit=100';_0x1e49b5&&_0x1e49b5['trim']()&&(_0x23e788+='&search='+encodeURIComponent(_0x1e49b5['trim']()));const _0x79094=await API['get'](_0x23e788);return _0x79094['repositories']||[];}catch(_0x1a5c95){console['error']('Failed\x20to\x20load\x20repositories:',_0x1a5c95);throw _0x1a5c95;}},'renderItem':_0x57a28d=>{const _0x25dcef=_0x57a28d['private']===!![];let _0x311538=_0x57a28d['description']||'no\x20description';return _0x57a28d['descriptionSource']==='project'&&_0x57a28d['description']&&(_0x311538='Project:\x20'+_0x57a28d['description']),{'primary':_0x57a28d['full_name']||_0x57a28d['name'],'secondary':_0x311538,'icon':_0x25dcef?REPO_ICON_PRIVATE:REPO_ICON_PUBLIC,'iconClass':_0x25dcef?'icon-private':'icon-public'};},'sortItems':_0x178fbe=>{return _0x178fbe['sort']((_0x314ccd,_0x3667bd)=>{const _0xcf457e=(_0x314ccd['full_name']||_0x314ccd['name']||'')['toLowerCase'](),_0x59ffa6=(_0x3667bd['full_name']||_0x3667bd['name']||'')['toLowerCase']();return _0xcf457e['localeCompare'](_0x59ffa6);});},'getItemValue':_0x541148=>_0x541148['clone_url']||_0x541148['url'],'onSelect':_0x10c2fc=>{const _0x4b2e7a=document['getElementById']('new-repo-url'),_0x448b85=document['getElementById']('new-repo-name');if(_0x10c2fc){_0x4b2e7a['value']=_0x10c2fc['clone_url']||_0x10c2fc['url']||'';const _0x3adde3=(_0x10c2fc['full_name']||_0x10c2fc['name']||'')['split']('/')['pop']()||'';_0x448b85['placeholder']=_0x3adde3||'Auto-extracted\x20from\x20URL',setNewRepoBranchValue(_0x10c2fc['default_branch']||'main'),reloadNewRepoBranchSuggestions();}else _0x4b2e7a['value']='',_0x448b85['placeholder']='Auto-extracted\x20from\x20URL',setNewRepoBranchValue('main');}}),repoAutocomplete['disable']();}function onRepoSourceProviderChange(){const _0x4ff21c=document['getElementById']('new-repo-source-provider')['value'],_0x4d8dbf=document['getElementById']('new-repo-url'),_0x24803b=document['getElementById']('new-repo-name');_0x4d8dbf['value']='',_0x24803b['placeholder']='Auto-extracted\x20from\x20URL';if(!_0x4ff21c){repoAutocomplete&&(repoAutocomplete['reset'](),repoAutocomplete['disable']());reloadNewRepoBranchSuggestions();return;}repoAutocomplete&&(repoAutocomplete['reset'](),repoAutocomplete['enable'](),repoAutocomplete['preloadData']()),setNewRepoBranchValue('main'),reloadNewRepoBranchSuggestions();}function onRepoFromProviderSelect(){}window['editRepo']=function(_0x2c26a3){selectRepo(_0x2c26a3);},window['removeRepo']=function(_0x15c975){const _0x26efc3=state['selectedEnvData']['repos'][_0x15c975];document['getElementById']('delete-repo-name')['textContent']=_0x26efc3['name']||_0x26efc3['url'],document['getElementById']('delete-repo-confirm-btn')['dataset']['repoIndex']=_0x15c975,document['getElementById']('delete-repo-modal')['hidden']=![];};function closeDeleteRepoModal(){document['getElementById']('delete-repo-modal')['hidden']=!![];}function confirmDeleteRepo(){const _0xe14ec3=parseInt(document['getElementById']('delete-repo-confirm-btn')['dataset']['repoIndex']);state['selectedEnvData']['repos']=state['selectedEnvData']['repos']['filter']((_0x46ce34,_0x7bc2e5)=>_0x7bc2e5!==_0xe14ec3);if(state['currentRepo']===_0xe14ec3)state['currentRepo']=null,cleanupEditRepoAutocomplete();else state['currentRepo']>_0xe14ec3&&state['currentRepo']--;renderRepos(),markAsModified(),closeDeleteRepoModal(),Utils['showSuccess']('Repository\x20removed\x20(click\x20Save\x20to\x20persist\x20changes)');}function renderServerConfig(){const _0x11a898=state['selectedEnvData']['application_server'],_0x1409cb=_0x11a898?.['enabled']||![],_0x14e004=state['selectedEnvData']?.['external_connections']||[],_0x15ca4d=_0x14e004['find'](_0x5de1a0=>_0x5de1a0['type']==='ibmi'&&(_0x5de1a0['config']?.['features']||[])['includes']('interactive')&&_0x5de1a0['config']?.['pui_base_url']),_0x30e996=document['getElementById']('server-connection-banner'),_0x3f6a99=document['getElementById']('server-enabled'),_0x38f579=document['getElementById']('server-name'),_0x574d79=document['getElementById']('server-proxy');if(_0x15ca4d){const _0x10b6d6=Utils['escapeHtml'](_0x15ca4d['name']||'IBM\x20i\x20Session');_0x30e996['innerHTML']='<strong>External\x20Connection:</strong>\x20App\x20server\x20proxy,\x20launch\x20URL,\x20and\x20authentication\x20are\x20configured\x20by\x20connection\x20<strong>'+_0x10b6d6+'</strong>.\x20Edit\x20the\x20connection\x20to\x20change\x20these\x20settings.',_0x30e996['hidden']=![],_0x3f6a99['checked']=!![],_0x3f6a99['disabled']=!![],document['getElementById']('server-config')['hidden']=![],_0x38f579['value']=_0x15ca4d['name']||'IBM\x20i\x20Session',_0x38f579['disabled']=!![],addConnectionHint(_0x38f579,_0x10b6d6),_0x574d79['value']=_0x15ca4d['config']['pui_base_url'],_0x574d79['disabled']=!![],addConnectionHint(_0x574d79,_0x10b6d6);const _0x1cfc7a=document['getElementById']('env-screen-render-url');if(_0x1cfc7a){const _0x22d0fa=_0x15ca4d['config']['pui_render_path']||'/profoundui/genie';_0x1cfc7a['value']=''+_0x15ca4d['config']['pui_base_url']+_0x22d0fa,_0x1cfc7a['disabled']=!![],addConnectionHint(_0x1cfc7a,_0x10b6d6);}}else{_0x30e996['hidden']=!![],_0x30e996['innerHTML']='',_0x3f6a99['checked']=_0x1409cb,_0x3f6a99['disabled']=![],document['getElementById']('server-config')['hidden']=!_0x1409cb,_0x38f579['value']=_0x11a898?.['name']||'',_0x38f579['disabled']=![],removeConnectionHint(_0x38f579),_0x574d79['value']=_0x11a898?.['proxy']||'',_0x574d79['disabled']=![],removeConnectionHint(_0x574d79);const _0x1fd51d=document['getElementById']('env-screen-render-url');_0x1fd51d&&_0x1fd51d['disabled']&&(_0x1fd51d['disabled']=![],removeConnectionHint(_0x1fd51d));}const _0x4499b8=monacoEditors['get']('server-command-editor');_0x4499b8?_0x4499b8['setValue'](_0x11a898?.['start_command']||''):createMonacoEditor('server-command-editor',_0x11a898?.['start_command']||'','shell',![])['then'](_0x15bed4=>{_0x15bed4&&(_0x15bed4['updateOptions']({'wordWrap':'off'}),_0x15bed4['onDidChangeModelContent'](()=>markAsModified()));});document['getElementById']('server-qa-url')['value']=_0x11a898?.['qa_url']||'';const _0x2cf6cb=_0x11a898?.['basic_auth']||{};document['getElementById']('server-auth-user-property')['value']=_0x2cf6cb['user_property']||'',document['getElementById']('server-auth-password-property')['value']=_0x2cf6cb['password_property']||'',renderPorts(_0x11a898?.['ports']||[]);if(_0x15ca4d){const _0x5210f6=_0x15ca4d['config']['pui_launch_path']||'/profoundui/auth/genie',_0x3fdaec=_0x15ca4d['name']||'IBM\x20i\x20Session';state['_connectionLaunchUrl']={'name':'Genie\x20('+_0x3fdaec+')','path':_0x5210f6,'description':'From\x20connection:\x20'+_0x3fdaec};}else state['_connectionLaunchUrl']=null;renderURLs(_0x11a898?.['launch_urls']||[]),renderProxyHeaders(_0x11a898?.['proxy_headers']||{}),renderPortQaUrls(_0x11a898?.['port_qa_urls']||{}),renderVolumeMounts(state['selectedEnvData']?.['volume_mounts']||[]);}function addConnectionHint(_0x202540,_0x584d83){removeConnectionHint(_0x202540);const _0xed89ec=document['createElement']('small');_0xed89ec['className']='form-hint\x20connection-hint',_0xed89ec['textContent']='From\x20connection\x20\x22'+_0x584d83+'\x22',_0x202540['parentNode']['appendChild'](_0xed89ec);}function removeConnectionHint(_0x521523){const _0x2bd50c=_0x521523['parentNode']?.['querySelector']('.connection-hint');if(_0x2bd50c)_0x2bd50c['remove']();}function toggleRebuildSchedule(){const _0x17df48=document['getElementById']('rebuild-schedule-enabled-build-tab')['checked'];document['getElementById']('rebuild-schedule-config-build-tab')['hidden']=!_0x17df48,markAsModified();}function toggleServerConfig(){const _0x478115=document['getElementById']('server-enabled')['checked'];document['getElementById']('server-config')['hidden']=!_0x478115,markAsModified();}function renderPorts(_0x3faa37){const _0x582365=document['getElementById']('ports-list');_0x582365['innerHTML']=_0x3faa37['map']((_0x1ab322,_0x36f2c6)=>'\x0a\x20\x20\x20\x20<div\x20class=\x22config-item\x22>\x0a\x20\x20\x20\x20\x20\x20<input\x20type=\x22number\x22\x20value=\x22'+_0x1ab322['internal']+'\x22\x20placeholder=\x22Port\x22\x20class=\x22form-input\x22\x20oninput=\x22markAsModified()\x22>\x0a\x20\x20\x20\x20\x20\x20<input\x20type=\x22text\x22\x20value=\x22'+Utils['escapeHtml'](_0x1ab322['name'])+'\x22\x20placeholder=\x22Name\x22\x20class=\x22form-input\x22\x20oninput=\x22markAsModified()\x22>\x0a\x20\x20\x20\x20\x20\x20<button\x20class=\x22btn-icon\x22\x20onclick=\x22removePort('+_0x36f2c6+')\x22>×</button>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20')['join']('');}function renderURLs(_0x423040){const _0x49f244=document['getElementById']('urls-list'),_0xa02316=_0x423040['findIndex'](_0x33b17f=>_0x33b17f?.['primary']),_0x1ec4c1=document['getElementById']('clear-primary-url-btn');_0x1ec4c1&&(_0x1ec4c1['disabled']=_0xa02316===-0x1||!!state['_connectionLaunchUrl']);let _0x3e2adb='';const _0x2458c=state['_connectionLaunchUrl'];_0x2458c&&(_0x3e2adb+='\x0a\x20\x20\x20\x20<div\x20class=\x22config-item\x22\x20data-connection-derived=\x22true\x22>\x0a\x20\x20\x20\x20\x20\x20<input\x20type=\x22text\x22\x20data-field=\x22name\x22\x20value=\x22'+Utils['escapeHtml'](_0x2458c['name'])+'\x22\x20placeholder=\x22Name\x22\x20class=\x22form-input\x22\x20disabled>\x0a\x20\x20\x20\x20\x20\x20<input\x20type=\x22text\x22\x20data-field=\x22path\x22\x20value=\x22'+Utils['escapeHtml'](_0x2458c['path'])+'\x22\x20placeholder=\x22Path\x22\x20class=\x22form-input\x22\x20disabled>\x0a\x20\x20\x20\x20\x20\x20<input\x20type=\x22number\x22\x20data-field=\x22port\x22\x20value=\x22\x22\x20placeholder=\x22Port\x22\x20class=\x22form-input\x22\x20style=\x22max-width:\x2080px;\x22\x20disabled>\x0a\x20\x20\x20\x20\x20\x20<input\x20type=\x22text\x22\x20data-field=\x22description\x22\x20value=\x22'+Utils['escapeHtml'](_0x2458c['description']||'')+'\x22\x20placeholder=\x22Description\x22\x20class=\x22form-input\x22\x20disabled>\x0a\x20\x20\x20\x20\x20\x20<label\x20class=\x22primary-url-toggle\x20is-primary\x22\x20title=\x22Primary\x20URL\x20from\x20external\x20connection\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<input\x20type=\x22radio\x22\x20name=\x22connection-primary-url\x22\x20data-field=\x22primary\x22\x20checked\x20disabled>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<span>Primary</span>\x0a\x20\x20\x20\x20\x20\x20</label>\x0a\x20\x20\x20\x20\x20\x20<button\x20class=\x22btn-icon\x22\x20disabled>↑</button>\x0a\x20\x20\x20\x20\x20\x20<button\x20class=\x22btn-icon\x22\x20disabled>↓</button>\x0a\x20\x20\x20\x20\x20\x20<button\x20class=\x22btn-icon\x22\x20disabled>×</button>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20'),_0x3e2adb+=_0x423040['map']((_0x571b80,_0x21d9e9)=>{const _0x1db56f=_0xa02316===-0x1?![]:_0x21d9e9===_0xa02316;return'\x0a\x20\x20\x20\x20<div\x20class=\x22config-item\x22>\x0a\x20\x20\x20\x20\x20\x20<input\x20type=\x22text\x22\x20data-field=\x22name\x22\x20value=\x22'+Utils['escapeHtml'](_0x571b80['name'])+'\x22\x20placeholder=\x22Name\x22\x20class=\x22form-input\x22\x20oninput=\x22markAsModified()\x22>\x0a\x20\x20\x20\x20\x20\x20<input\x20type=\x22text\x22\x20data-field=\x22path\x22\x20value=\x22'+Utils['escapeHtml'](_0x571b80['path'])+'\x22\x20placeholder=\x22Path\x22\x20class=\x22form-input\x22\x20oninput=\x22markAsModified()\x22>\x0a\x20\x20\x20\x20\x20\x20<input\x20type=\x22number\x22\x20data-field=\x22port\x22\x20value=\x22'+(_0x571b80['port']??'')+'\x22\x20placeholder=\x22Port\x22\x20class=\x22form-input\x22\x20style=\x22max-width:\x2080px;\x22\x20oninput=\x22markAsModified()\x22>\x0a\x20\x20\x20\x20\x20\x20<input\x20type=\x22text\x22\x20data-field=\x22description\x22\x20value=\x22'+Utils['escapeHtml'](_0x571b80['description']||'')+'\x22\x20placeholder=\x22Description\x22\x20class=\x22form-input\x22\x20oninput=\x22markAsModified()\x22>\x0a\x20\x20\x20\x20\x20\x20<label\x20class=\x22primary-url-toggle\x20'+(_0x1db56f?'is-primary':'')+'\x22\x20title=\x22'+(_0x2458c?'Primary\x20is\x20set\x20by\x20external\x20connection':'Primary\x20URL\x20opened\x20by\x20the\x20Testing\x20button')+'\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<input\x20type=\x22radio\x22\x20name=\x22primary-launch-url\x22\x20data-field=\x22primary\x22\x20'+(_0x1db56f?'checked':'')+'\x20'+(_0x2458c?'disabled':'onclick=\x22setPrimaryURL('+_0x21d9e9+')\x22')+'>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<span>Primary</span>\x0a\x20\x20\x20\x20\x20\x20</label>\x0a\x20\x20\x20\x20\x20\x20<button\x20class=\x22btn-icon\x22\x20onclick=\x22moveURL('+_0x21d9e9+',\x20-1)\x22\x20title=\x22Move\x20up\x22\x20aria-label=\x22Move\x20URL\x20up\x22\x20'+(_0x21d9e9===0x0?'disabled':'')+'>↑</button>\x0a\x20\x20\x20\x20\x20\x20<button\x20class=\x22btn-icon\x22\x20onclick=\x22moveURL('+_0x21d9e9+',\x201)\x22\x20title=\x22Move\x20down\x22\x20aria-label=\x22Move\x20URL\x20down\x22\x20'+(_0x21d9e9===_0x423040['length']-0x1?'disabled':'')+'>↓</button>\x0a\x20\x20\x20\x20\x20\x20<button\x20class=\x22btn-icon\x22\x20onclick=\x22removeURL('+_0x21d9e9+')\x22>×</button>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20';})['join'](''),_0x49f244['innerHTML']=_0x3e2adb;}function collectURLsFromForm(_0xa639e4=![]){const _0x297d80=document['getElementById']('urls-list');if(!_0x297d80)return[];const _0x23618a=_0x297d80['querySelectorAll']('.config-item'),_0x269bc4=[];let _0x34d153=![];return _0x23618a['forEach'](_0x5369a2=>{if(_0x5369a2['hasAttribute']('data-connection-derived'))return;const _0x3902d8=_0x5369a2['querySelector']('input[data-field=\x22name\x22]'),_0x460c56=_0x5369a2['querySelector']('input[data-field=\x22path\x22]'),_0x32bf36=_0x5369a2['querySelector']('input[data-field=\x22port\x22]'),_0x16ff92=_0x5369a2['querySelector']('input[data-field=\x22description\x22]'),_0x5a0276=_0x5369a2['querySelector']('input[data-field=\x22primary\x22]');if(!_0x3902d8||!_0x460c56||!_0x32bf36||!_0x16ff92)return;const _0x1cd1be=_0x3902d8['value']['trim'](),_0x33a3a5=_0x460c56['value']['trim'](),_0xe43274=_0x32bf36['value']['trim'](),_0x3d33bb=_0x16ff92['value']['trim'](),_0x2ffaf4=_0x1cd1be||_0x33a3a5||_0xe43274||_0x3d33bb;if(_0xa639e4||_0x2ffaf4){const _0x18d44d={'name':_0x1cd1be,'path':_0x33a3a5};if(_0xe43274)_0x18d44d['port']=parseInt(_0xe43274,0xa);else _0xa639e4&&(_0x18d44d['port']='');if(_0x3d33bb)_0x18d44d['description']=_0x3d33bb;else _0xa639e4&&(_0x18d44d['description']='');const _0x1bedc8=_0x5a0276?.['checked']||![];_0x1bedc8&&!_0x34d153&&_0x2ffaf4&&(_0x18d44d['primary']=!![],_0x34d153=!![]),_0x269bc4['push'](_0x18d44d);}}),_0x269bc4;}function renderProxyHeaders(_0x34b4a0){const _0x8a602a=document['getElementById']('proxy-headers-list'),_0x5f1b86=Object['entries'](_0x34b4a0);_0x8a602a['innerHTML']=_0x5f1b86['map'](([_0x16851e,_0x31ab30],_0x5702d9)=>'\x0a\x20\x20\x20\x20<div\x20class=\x22config-item\x22>\x0a\x20\x20\x20\x20\x20\x20<input\x20type=\x22text\x22\x20value=\x22'+Utils['escapeHtml'](_0x16851e)+'\x22\x20placeholder=\x22Header\x20Name\x22\x20class=\x22form-input\x22\x20oninput=\x22markAsModified()\x22>\x0a\x20\x20\x20\x20\x20\x20<input\x20type=\x22text\x22\x20value=\x22'+Utils['escapeHtml'](_0x31ab30)+'\x22\x20placeholder=\x22Header\x20Value\x22\x20class=\x22form-input\x20code-font\x22\x20oninput=\x22markAsModified()\x22>\x0a\x20\x20\x20\x20\x20\x20<button\x20class=\x22btn-icon\x22\x20onclick=\x22removeProxyHeader('+_0x5702d9+')\x22>×</button>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20')['join']('');}function renderPortQaUrls(_0x34ef40){const _0x17e30e=document['getElementById']('port-qa-urls-list'),_0x166f2e=Object['entries'](_0x34ef40);_0x17e30e['innerHTML']=_0x166f2e['map'](([_0x50f815,_0x290007],_0x414c51)=>'\x0a\x20\x20\x20\x20<div\x20class=\x22config-item\x22>\x0a\x20\x20\x20\x20\x20\x20<input\x20type=\x22number\x22\x20value=\x22'+Utils['escapeHtml'](_0x50f815)+'\x22\x20placeholder=\x22Port\x22\x20class=\x22form-input\x22\x20style=\x22max-width:\x20100px;\x22\x20oninput=\x22markAsModified()\x22>\x0a\x20\x20\x20\x20\x20\x20<input\x20type=\x22text\x22\x20value=\x22'+Utils['escapeHtml'](_0x290007)+'\x22\x20placeholder=\x22QA\x20URL\x20(e.g.,\x20https://production.example.com)\x22\x20class=\x22form-input\x20code-font\x22\x20oninput=\x22markAsModified()\x22>\x0a\x20\x20\x20\x20\x20\x20<button\x20class=\x22btn-icon\x22\x20onclick=\x22removePortQaUrl('+_0x414c51+')\x22>×</button>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20')['join']('');}function addPortQaUrl(){const _0x526b62=document['getElementById']('port-qa-urls-list'),_0x16cc29=_0x526b62['querySelectorAll']('.config-item');if(_0x16cc29['length']>0x0){const _0x55bc07=_0x16cc29[_0x16cc29['length']-0x1],_0x4778fe=_0x55bc07['querySelectorAll']('input'),_0xe89b8d=_0x4778fe[0x0]['value']['trim'](),_0x4a55be=_0x4778fe[0x1]['value']['trim']();if(!_0xe89b8d&&!_0x4a55be)return;}const _0x41472f=state['selectedEnvData']['application_server']||{},_0x48a26b=_0x41472f['port_qa_urls']||{};_0x48a26b['']='',!state['selectedEnvData']['application_server']&&(state['selectedEnvData']['application_server']={}),state['selectedEnvData']['application_server']['port_qa_urls']=_0x48a26b,renderPortQaUrls(_0x48a26b),markAsModified();}function removePortQaUrl(_0x590d8a){const _0x5b64fa=document['getElementById']('port-qa-urls-list'),_0x513cb6=_0x5b64fa['querySelectorAll']('.config-item');_0x590d8a>=0x0&&_0x590d8a<_0x513cb6['length']&&(_0x513cb6[_0x590d8a]['remove'](),markAsModified());}function collectPortQaUrlsFromForm(){const _0x43989e=document['getElementById']('port-qa-urls-list');if(!_0x43989e)return{};const _0x3205b2=_0x43989e['querySelectorAll']('.config-item'),_0x184d63={};return _0x3205b2['forEach'](_0x4b7051=>{const _0x2e5fa8=_0x4b7051['querySelectorAll']('input');if(_0x2e5fa8['length']>=0x2){const _0x531051=_0x2e5fa8[0x0]['value']['trim'](),_0x4af3c7=_0x2e5fa8[0x1]['value']['trim']();_0x531051&&_0x4af3c7&&(_0x184d63[_0x531051]=_0x4af3c7);}}),_0x184d63;}function addPort(){const _0x497d23=document['getElementById']('ports-list'),_0x55888a=_0x497d23['querySelectorAll']('.config-item');if(_0x55888a['length']>0x0){const _0x4675ab=_0x55888a[_0x55888a['length']-0x1],_0x5ee275=_0x4675ab['querySelectorAll']('input'),_0xdc4f14=_0x5ee275[0x0]['value']['trim'](),_0x3a0b34=_0x5ee275[0x1]['value']['trim']();if(!_0xdc4f14&&!_0x3a0b34)return;}const _0x115e72=state['selectedEnvData']['application_server']||{},_0x58c658=_0x115e72['ports']||[];_0x58c658['push']({'internal':'','name':''}),!state['selectedEnvData']['application_server']&&(state['selectedEnvData']['application_server']={}),state['selectedEnvData']['application_server']['ports']=_0x58c658,renderPorts(_0x58c658),markAsModified();}function addURL(){const _0x12eb5e=document['getElementById']('urls-list'),_0xf3940f=_0x12eb5e['querySelectorAll']('.config-item');if(_0xf3940f['length']>0x0){const _0xef88ba=_0xf3940f[_0xf3940f['length']-0x1],_0x1098a4=_0xef88ba['querySelector']('input[data-field=\x22name\x22]')?.['value']['trim']()||'',_0x251903=_0xef88ba['querySelector']('input[data-field=\x22path\x22]')?.['value']['trim']()||'',_0x2cf270=_0xef88ba['querySelector']('input[data-field=\x22port\x22]')?.['value']['trim']()||'',_0x446671=_0xef88ba['querySelector']('input[data-field=\x22description\x22]')?.['value']['trim']()||'';if(!_0x1098a4&&!_0x251903&&!_0x2cf270&&!_0x446671)return;}const _0x23022a=state['selectedEnvData']['application_server']||{},_0x4e7c13=_0x23022a['launch_urls']||[];_0x4e7c13['push']({'name':'','path':''}),!state['selectedEnvData']['application_server']&&(state['selectedEnvData']['application_server']={}),state['selectedEnvData']['application_server']['launch_urls']=_0x4e7c13,renderURLs(_0x4e7c13),markAsModified();}window['removePort']=function(_0x1ee03c){const _0x1a3c75=state['selectedEnvData']['application_server']||{},_0x1877b6=_0x1a3c75['ports']||[];_0x1877b6['splice'](_0x1ee03c,0x1),state['selectedEnvData']['application_server']['ports']=_0x1877b6,renderPorts(_0x1877b6),markAsModified();},window['removeURL']=function(_0x8f2d16){const _0x210931=state['selectedEnvData']['application_server']||{},_0x363b92=_0x210931['launch_urls']||[];_0x363b92['splice'](_0x8f2d16,0x1),state['selectedEnvData']['application_server']['launch_urls']=_0x363b92,renderURLs(_0x363b92),markAsModified();},window['moveURL']=function(_0x24485b,_0x4f67cc){const _0x537e6c=collectURLsFromForm(!![]),_0x3b821e=_0x24485b+_0x4f67cc;if(_0x3b821e<0x0||_0x3b821e>=_0x537e6c['length'])return;const [_0x3b19bc]=_0x537e6c['splice'](_0x24485b,0x1);_0x537e6c['splice'](_0x3b821e,0x0,_0x3b19bc),!state['selectedEnvData']['application_server']&&(state['selectedEnvData']['application_server']={}),state['selectedEnvData']['application_server']['launch_urls']=_0x537e6c,renderURLs(_0x537e6c),markAsModified();},window['setPrimaryURL']=function(_0x560156){const _0x494f9a=collectURLsFromForm(!![]);_0x494f9a['forEach']((_0x3d2d6a,_0x462a0b)=>{_0x462a0b===_0x560156&&(_0x3d2d6a['name']||_0x3d2d6a['path']||_0x3d2d6a['port']||_0x3d2d6a['description'])?_0x3d2d6a['primary']=!![]:delete _0x3d2d6a['primary'];}),!state['selectedEnvData']['application_server']&&(state['selectedEnvData']['application_server']={}),state['selectedEnvData']['application_server']['launch_urls']=_0x494f9a,renderURLs(_0x494f9a),markAsModified();};function clearPrimaryURL(){const _0x46c936=collectURLsFromForm(!![]);_0x46c936['forEach'](_0x5de4da=>{delete _0x5de4da['primary'];}),!state['selectedEnvData']['application_server']&&(state['selectedEnvData']['application_server']={}),state['selectedEnvData']['application_server']['launch_urls']=_0x46c936,renderURLs(_0x46c936),markAsModified();}function addProxyHeader(){const _0x558258=document['getElementById']('proxy-headers-list'),_0x43c0bf=_0x558258['querySelectorAll']('.config-item');if(_0x43c0bf['length']>0x0){const _0x5dbdab=_0x43c0bf[_0x43c0bf['length']-0x1],_0x5a7356=_0x5dbdab['querySelectorAll']('input'),_0x4497c7=_0x5a7356[0x0]['value']['trim'](),_0xcc45fa=_0x5a7356[0x1]['value']['trim']();if(!_0x4497c7&&!_0xcc45fa)return;}const _0x13328d=state['selectedEnvData']['application_server']||{},_0x26272=_0x13328d['proxy_headers']||{};_0x26272['']='',!state['selectedEnvData']['application_server']&&(state['selectedEnvData']['application_server']={}),state['selectedEnvData']['application_server']['proxy_headers']=_0x26272,renderProxyHeaders(_0x26272),markAsModified();}window['removeProxyHeader']=function(_0xcb0d2f){const _0x5df708=state['selectedEnvData']['application_server']||{},_0x275a1b=_0x5df708['proxy_headers']||{},_0x4f8038=Object['keys'](_0x275a1b);_0xcb0d2f<_0x4f8038['length']&&delete _0x275a1b[_0x4f8038[_0xcb0d2f]],state['selectedEnvData']['application_server']['proxy_headers']=_0x275a1b,renderProxyHeaders(_0x275a1b),markAsModified();},window['removePortQaUrl']=function(_0x27dfa6){const _0xb2c7d8=state['selectedEnvData']['application_server']||{},_0x48c775=_0xb2c7d8['port_qa_urls']||{},_0x2c5d74=Object['keys'](_0x48c775);_0x27dfa6<_0x2c5d74['length']&&delete _0x48c775[_0x2c5d74[_0x27dfa6]],state['selectedEnvData']['application_server']['port_qa_urls']=_0x48c775,renderPortQaUrls(_0x48c775),markAsModified();};function renderReadme(){const _0x185696=state['selectedEnvData']['readmeContent']||'',_0x22d7ed=document['getElementById']('readme-preview'),_0x31580c=document['getElementById']('readme-editor'),_0x4ae2e1=document['getElementById']('preview-readme-btn');_0x185696?_0x22d7ed['innerHTML']=marked['parse'](_0x185696):_0x22d7ed['innerHTML']='<p\x20class=\x22text-muted\x22>No\x20README\x20content\x20yet.\x20Click\x20Edit\x20to\x20add\x20documentation\x20for\x20this\x20environment.</p>',_0x22d7ed['hidden']=![],_0x31580c['hidden']=!![],_0x4ae2e1['innerHTML']='<span>✏️</span>\x20Edit',!state['readmeContent']&&(state['readmeContent']=_0x185696);}window['toggleReadmePreview']=async function(){const _0x2e5fd0=document['getElementById']('readme-editor'),_0x3109e8=document['getElementById']('readme-preview'),_0xa67ba8=document['getElementById']('preview-readme-btn'),_0x3b56fd='readme-editor';if(_0x3109e8['hidden']){const _0x2977d7=getMonacoValue(_0x3b56fd)||'';_0x2977d7?_0x3109e8['innerHTML']=marked['parse'](_0x2977d7):_0x3109e8['innerHTML']='<p\x20class=\x22text-muted\x22>No\x20README\x20content\x20yet.</p>',_0x3109e8['hidden']=![],_0x2e5fd0['hidden']=!![],_0xa67ba8['innerHTML']='<span>✏️</span>\x20Edit';}else{_0x3109e8['hidden']=!![],_0x2e5fd0['hidden']=![],_0xa67ba8['innerHTML']='<span>👁</span>\x20Preview';const _0x3779c9=window['MarkdownFileEditor']&&window['MarkdownFileEditor']['editors']['has'](_0x3b56fd),_0x24518c=monacoEditors['has'](_0x3b56fd);if(!_0x3779c9&&!_0x24518c){const _0x470244=state['selectedEnvData']['readmeContent']||'';if(window['MarkdownFileEditor']){const _0x16c990=window['MarkdownFileEditor']['getOrCreate'](_0x3b56fd,_0x470244,![],'400px',()=>markAsModified());}else{const _0x15dec3=await createMonacoEditor(_0x3b56fd,_0x470244,'markdown',![]);_0x15dec3&&_0x15dec3['onDidChangeModelContent'](()=>{markAsModified();});}}}};async function renderAgentInstructions(){const _0xbf2c78=state['selectedEnvData']['agentsContent']||'',_0x5da7e2=document['getElementById']('agents-preview'),_0x1e92f2=document['getElementById']('agents-editor'),_0x297f77=document['getElementById']('preview-agents-btn');_0x5da7e2['innerHTML']=marked['parse'](_0xbf2c78),_0x5da7e2['hidden']=![],_0x1e92f2['hidden']=!![],_0x297f77['innerHTML']='<span>✏️</span>\x20Edit',state['agentsContent']=_0xbf2c78;}function updateAgentStats(){const _0x4d9be1=getMonacoValue('agents-editor')||'',_0x4e33f0=_0x4d9be1['split']('\x0a')['length'],_0x20f1e8=_0x4d9be1['trim']()['split'](/\s+/)['length'],_0x40497e=_0x4d9be1['length'];document['getElementById']('agents-stats')['textContent']='Lines:\x20'+_0x4e33f0+'\x20•\x20Words:\x20'+_0x20f1e8+'\x20•\x20Characters:\x20'+_0x40497e;}async function toggleAgentsPreview(){const _0x3acf3c=document['getElementById']('agents-editor'),_0x1ccf20=document['getElementById']('agents-preview'),_0x5941c3=document['getElementById']('preview-agents-btn'),_0x4d8105='agents-editor';if(_0x1ccf20['hidden']){const _0x842d7=getMonacoValue(_0x4d8105)||'';_0x1ccf20['innerHTML']=marked['parse'](_0x842d7),_0x1ccf20['hidden']=![],_0x3acf3c['hidden']=!![],_0x5941c3['innerHTML']='<span>✏️</span>\x20Edit';}else{_0x1ccf20['hidden']=!![],_0x3acf3c['hidden']=![],_0x5941c3['innerHTML']='<span>👁</span>\x20Preview';const _0x51d4cc=window['MarkdownFileEditor']&&window['MarkdownFileEditor']['editors']['has'](_0x4d8105),_0x28ff92=monacoEditors['has'](_0x4d8105);if(!_0x51d4cc&&!_0x28ff92){const _0x4fc652=state['agentsContent']||'';if(window['MarkdownFileEditor']){const _0x210106=window['MarkdownFileEditor']['getOrCreate'](_0x4d8105,_0x4fc652,![],'500px',()=>{updateAgentStats(),markAsModified();});}else{const _0x1a310c=await createMonacoEditor(_0x4d8105,_0x4fc652,'markdown',![]);_0x1a310c&&_0x1a310c['onDidChangeModelContent'](()=>{updateAgentStats(),markAsModified();});}updateAgentStats();}}}let currentScript='pre-clone';function renderBuildTab(){}function toggleScriptsSection(){const _0x17f55a=document['querySelector']('#scripts-section-header')['closest']('.collapsible-card'),_0x2b1b24=document['getElementById']('scripts-section-body');_0x2b1b24['hidden']?(_0x2b1b24['hidden']=![],_0x17f55a['classList']['add']('expanded'),!monacoEditors['has']('script-editor')&&switchScript(currentScript)):(_0x2b1b24['hidden']=!![],_0x17f55a['classList']['remove']('expanded'));}async function switchScript(_0x4c0800){currentScript=_0x4c0800,document['querySelectorAll']('#scripts-section-body\x20.script-tab')['forEach'](_0x593478=>{_0x593478['classList']['toggle']('active',_0x593478['dataset']['script']===_0x4c0800);});const _0x3d415b=['pre-clone','post-clone','setup','cleanup'];_0x3d415b['forEach'](_0x3f9dc8=>{const _0x231677=document['querySelector']('.script-desc-'+_0x3f9dc8);_0x231677&&(_0x231677['hidden']=_0x4c0800!==_0x3f9dc8&&_0x4c0800!==_0x3f9dc8+'.sh');});let _0x572fcf='';if(_0x4c0800==='pre-clone'||_0x4c0800==='post-clone'){const _0x31fd84=_0x4c0800==='pre-clone'?'pre_clone_instructions':'post_clone_instructions';_0x572fcf=state['selectedEnvData']['docker_config']?.[_0x31fd84]||'';}else _0x572fcf=state['selectedEnvData']['files']?.[_0x4c0800]||'';const _0x5a2e47=await createMonacoEditor('script-editor',_0x572fcf,'shell',![]);_0x5a2e47&&(_0x5a2e47['updateOptions']({'wordWrap':'off'}),_0x5a2e47['onDidChangeModelContent'](()=>{markAsModified();}));}function getCurrentScriptContent(){if(!monacoEditors['has']('script-editor'))return null;return getMonacoValue('script-editor');}function saveCurrentScriptToState(){const _0x142ac8=getCurrentScriptContent();if(_0x142ac8===null)return;if(currentScript==='pre-clone'||currentScript==='post-clone'){!state['selectedEnvData']['docker_config']&&(state['selectedEnvData']['docker_config']={});const _0x37df47=currentScript==='pre-clone'?'pre_clone_instructions':'post_clone_instructions';state['selectedEnvData']['docker_config'][_0x37df47]=_0x142ac8;}else!state['selectedEnvData']['files']&&(state['selectedEnvData']['files']={}),state['selectedEnvData']['files'][currentScript]=_0x142ac8;}function getCodermakeBuildCommands(_0x4576ee,_0x11933a){const _0x37131c=_0x4576ee['external_connections']||[],_0x154759=_0x4576ee['repos']||[],_0x5a20db=[];for(const _0x5557de of _0x37131c){if(_0x5557de['type']!=='ibmi')continue;const _0x4a6e94=_0x5557de['config']?.['features']||[];if(!_0x4a6e94['includes']('build'))continue;if(!_0x5557de['config']?.['build_repo'])continue;if(!_0x11933a['find'](_0x36244a=>_0x36244a['name']===_0x5557de['config']['build_repo']))continue;const _0x41376a=_0x154759['find'](_0x399100=>_0x399100['name']===_0x5557de['config']['build_repo']),_0x4b3763=_0x41376a?'/workspace/'+(_0x41376a['path']||_0x41376a['name']):'/workspace',_0x41b807=_0x5557de['config']['build_path']?_0x4b3763+'/'+_0x5557de['config']['build_path']:_0x4b3763;_0x5a20db['push']('cd\x20'+_0x41b807+'\x20&&\x20IBMI_BUILD_LIBRARY=container_setup_build\x20IBMI_HOST=dummy\x20IBMI_USER=dummy\x20codermake\x20-t');}return _0x5a20db;}function generateDockerfilePreview(){saveCurrentScriptToState();const _0x5b9dea=state['selectedEnvData'],_0x5a89a7='profoundlogic/coder-base:latest',_0x52818a=_0x5b9dea['repos']||[],_0x5770e2=_0x5b9dea['docker_config']?.['pre_clone_instructions']||'',_0x35b9f2=_0x5b9dea['docker_config']?.['post_clone_instructions']||'';let _0xba725a='FROM\x20'+_0x5a89a7+'\x0a\x0a';_0x5770e2['trim']()&&(_0xba725a+='#\x20Pre-clone\x20instructions\x0a',_0xba725a+=_0x5770e2['trim']()+'\x0a\x0a');const _0x26fba9=_0x52818a['filter'](_0x39432=>_0x39432['clone_auto']!==![]);if(_0x26fba9['length']>0x0){const _0x4e2bc3=_0x26fba9['map'](_0x2d7423=>{const _0x27594a=_0x2d7423['path']||_0x2d7423['name']||_0x2d7423['url']?.['split']('/')['pop']()?.['replace']('.git','')||'repo',_0x279867=normalizeGitUrl(_0x2d7423['url']);return'git\x20clone\x20--depth=50\x20--no-single-branch\x20'+_0x279867+'\x20/workspace/'+_0x27594a;}),_0x2c3e32=_0x26fba9['filter'](_0x985654=>_0x985654['post_clone_action']&&_0x985654['post_clone_action']!=='none')['map'](_0x10e54c=>{const _0x5ce8d9=_0x10e54c['path']||_0x10e54c['name']||_0x10e54c['url']?.['split']('/')['pop']()?.['replace']('.git','')||'repo',_0x359c6e=_0x10e54c['post_clone_action']['split']('\x0a')['map'](_0x2ca440=>_0x2ca440['replace'](/\r$/,''))['filter'](_0x5d2945=>_0x5d2945['trim']())['join']('\x20&&\x20\x5c\x0a\x20\x20\x20\x20');return'cd\x20/workspace/'+_0x5ce8d9+'\x20&&\x20'+_0x359c6e;}),_0x76895c=_0x26fba9['some'](_0x50d17d=>_0x50d17d['remote_provider']);_0xba725a+='#\x20Clone\x20repositories\x20and\x20install\x20dependencies\x0a';_0x76895c?_0xba725a+='RUN\x20--mount=type=secret,id=git-credentials,target=/root/.git-credentials\x20\x5c\x0a\x20\x20\x20\x20':_0xba725a+='RUN\x20';_0xba725a+=_0x4e2bc3['join']('\x20&&\x20\x5c\x0a\x20\x20\x20\x20');_0x2c3e32['length']>0x0&&(_0xba725a+='\x20&&\x20\x5c\x0a\x20\x20\x20\x20'+_0x2c3e32['join']('\x20&&\x20\x5c\x0a\x20\x20\x20\x20'));const _0x1fb51d=getCodermakeBuildCommands(_0x5b9dea,_0x26fba9);_0x1fb51d['length']>0x0&&(_0xba725a+='\x20&&\x20\x5c\x0a\x20\x20\x20\x20'+_0x1fb51d['join']('\x20&&\x20\x5c\x0a\x20\x20\x20\x20')),_0xba725a+='\x20&&\x20\x5c\x0a\x20\x20\x20\x20chown\x20-R\x20coder:coder\x20/workspace\x0a\x0a';}return _0x35b9f2['trim']()&&(_0xba725a+='#\x20Post-clone\x20instructions\x0a',_0xba725a+=_0x35b9f2['trim']()+'\x0a\x0a'),_0xba725a+='WORKDIR\x20/workspace\x0a',_0xba725a;}function showDockerfilePreview(){const _0x513bd4=generateDockerfilePreview(),_0x3547ff=document['getElementById']('dockerfile-preview-text');_0x3547ff['textContent']=_0x513bd4,document['getElementById']('dockerfile-preview-modal')['hidden']=![];}function closeDockerfilePreviewModal(){document['getElementById']('dockerfile-preview-modal')['hidden']=!![];}async function copyDockerfileToClipboard(){const _0x4e75a1=generateDockerfilePreview();try{await navigator['clipboard']['writeText'](_0x4e75a1);const _0x112aab=document['getElementById']('dockerfile-copy-btn'),_0x13dd75=_0x112aab['innerHTML'];_0x112aab['innerHTML']='<svg\x20width=\x2214\x22\x20height=\x2214\x22\x20viewBox=\x220\x200\x2024\x2024\x22\x20fill=\x22none\x22\x20stroke=\x22currentColor\x22\x20stroke-width=\x222\x22><polyline\x20points=\x2220\x206\x209\x2017\x204\x2012\x22></polyline></svg>\x20Copied!',setTimeout(()=>{_0x112aab['innerHTML']=_0x13dd75;},0x7d0);}catch(_0x9cbad7){console['error']('Failed\x20to\x20copy:',_0x9cbad7);}}function renderTests(){const _0x181859=document['querySelector']('.tests-sidebar'),_0x268f86=state['selectedEnvData']['tests']||{},_0x35c037=Object['keys'](_0x268f86);updateTabBadge('badge-tests',_0x35c037['length']);const _0x2e92b8=_0x181859['querySelector']('#new-test-tab'),_0x4ef921=_0x35c037['map']((_0x14804b,_0x3a5890)=>'\x0a\x20\x20\x20\x20<button\x20class=\x22test-tab\x22\x20data-test=\x22'+_0x3a5890+'\x22\x20onclick=\x22selectTest(\x27'+_0x14804b+'\x27)\x22>\x0a\x20\x20\x20\x20\x20\x20<span\x20class=\x22test-icon\x22>▶</span>\x0a\x20\x20\x20\x20\x20\x20<span>'+Utils['escapeHtml'](_0x14804b)+'</span>\x0a\x20\x20\x20\x20</button>\x0a\x20\x20')['join']('');_0x181859['innerHTML']=_0x2e92b8['outerHTML']+_0x4ef921,_0x181859['querySelector']('#new-test-tab')['addEventListener']('click',addTest);if(_0x35c037['length']>0x0&&state['currentTest']===null)selectTest(_0x35c037[0x0]);else _0x35c037['length']===0x0&&showTestEmptyState();}function showTestEmptyState(){document['getElementById']('current-test-name')['textContent']='Select\x20a\x20Test',document['getElementById']('delete-test-btn')['hidden']=!![],document['getElementById']('test-details-container')['innerHTML']='<p\x20class=\x22text-muted\x22>Select\x20a\x20test\x20from\x20the\x20sidebar\x20to\x20view\x20details,\x20or\x20add\x20a\x20new\x20one.</p>';}window['selectTest']=function(_0x3a314a){state['currentTest']=_0x3a314a;const _0x55acba=state['selectedEnvData']['tests'][_0x3a314a];document['querySelectorAll']('.test-tab')['forEach'](_0xd923d3=>{const _0x26f95e=_0xd923d3['querySelector']('span:last-child')['textContent'];_0xd923d3['classList']['toggle']('active',_0x26f95e===_0x3a314a);}),document['getElementById']('current-test-name')['textContent']=_0x3a314a,document['getElementById']('delete-test-btn')['hidden']=![];const _0x2a28fb=document['getElementById']('test-details-container');let _0x1a85fb='',_0x34e11d=![];if(_0x55acba['commands']&&Array['isArray'](_0x55acba['commands']))_0x1a85fb=_0x55acba['commands']['join']('\x0a'),_0x34e11d=!![];else _0x55acba['command']&&(Array['isArray'](_0x55acba['command'])?_0x1a85fb=_0x55acba['command']['join']('\x20&&\x20'):_0x1a85fb=_0x55acba['command']);const _0x5946eb=_0x55acba['parameters']?Object['keys'](_0x55acba['parameters'])['length']:0x0;_0x2a28fb['innerHTML']='\x0a\x20\x20\x20\x20<div\x20class=\x22form-single-column\x22>\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22form-row\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<label>Description</label>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<input\x20type=\x22text\x22\x20id=\x22test-description\x22\x20class=\x22form-input\x22\x20value=\x22'+Utils['escapeHtml'](_0x55acba['description']||'')+'\x22\x20placeholder=\x22Test\x20description\x22>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22form-row\x22\x20style=\x22align-items:\x20start;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<label>Command'+(_0x34e11d?'s':'')+'</label>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<textarea\x20id=\x22test-command\x22\x20class=\x22form-input\x20code-font\x22\x20rows=\x22'+(_0x34e11d?'8':'3')+'\x22\x20placeholder=\x22'+(_0x34e11d?'One\x20command\x20per\x20line':'Test\x20command')+'\x22>'+Utils['escapeHtml'](_0x1a85fb)+'</textarea>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20'+(_0x34e11d?'<p\x20class=\x22text-muted\x22\x20style=\x22margin-top:\x20-8px;\x20font-size:\x2012px;\x22>One\x20command\x20per\x20line</p>':'')+'\x0a\x20\x20\x20\x20</div>\x0a\x0a\x20\x20\x20\x20<!--\x20Parameters\x20Section\x20(visual\x20maintenance\x20like\x20Deploy\x20tab)\x20-->\x0a\x20\x20\x20\x20<div\x20class=\x22deploy-section\x22\x20style=\x22margin-top:\x2024px;\x22>\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22deploy-section-header\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<button\x20class=\x22deploy-section-toggle\x22\x20type=\x22button\x22\x20aria-expanded=\x22false\x22\x20aria-controls=\x22test-parameters-section\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22deploy-section-title\x22>Parameters</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22deploy-section-count\x22\x20id=\x22test-parameters-count\x22>'+_0x5946eb+'</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<button\x20class=\x22btn-secondary\x20btn-small\x22\x20onclick=\x22openAddTestParameterModal()\x22>+\x20Add</button>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22deploy-section-body\x22\x20id=\x22test-parameters-section\x22\x20hidden>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20id=\x22test-parameters-list\x22\x20class=\x22profile-list\x22></div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<p\x20class=\x22text-muted\x20small\x22>User-provided\x20values\x20prompted\x20when\x20running\x20this\x20test\x20command.</p>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20',['test-description','test-command']['forEach'](_0x384eb8=>{const _0x545899=document['getElementById'](_0x384eb8);_0x545899&&_0x545899['addEventListener']('input',markAsModified);}),initTestParameterSectionToggle(),renderTestParameters();};function initTestParameterSectionToggle(){const _0x117386=document['querySelector']('#test-details-container\x20.deploy-section-toggle');if(!_0x117386)return;_0x117386['addEventListener']('click',function(){const _0x5db144=this['getAttribute']('aria-expanded')==='true',_0x2ed507=this['getAttribute']('aria-controls'),_0x21bf4e=document['getElementById'](_0x2ed507);this['setAttribute']('aria-expanded',!_0x5db144),_0x21bf4e&&(_0x21bf4e['hidden']=_0x5db144);});}function addTest(){const _0x3eba5=document['getElementById']('new-test-name'),_0x1e2ba7=document['getElementById']('new-test-command'),_0xdcdba9=document['getElementById']('add-test-error');_0x3eba5['value']='',document['getElementById']('new-test-description')['value']='',_0x1e2ba7['value']='',_0x3eba5['classList']['remove']('input-error'),_0x1e2ba7['classList']['remove']('input-error'),_0xdcdba9['hidden']=!![],document['getElementById']('add-test-modal')['hidden']=![];}function closeAddTestModal(){document['getElementById']('add-test-modal')['hidden']=!![];}async function confirmAddTest(){const _0x3b9b8b=document['getElementById']('new-test-name'),_0x482e1e=document['getElementById']('new-test-command'),_0x9764e3=document['getElementById']('add-test-error'),_0x379784=_0x3b9b8b['value']['trim'](),_0x5c1a11=document['getElementById']('new-test-description')['value']['trim'](),_0x583ebf=_0x482e1e['value']['trim']();_0x3b9b8b['classList']['remove']('input-error'),_0x482e1e['classList']['remove']('input-error'),_0x9764e3['hidden']=!![];if(!_0x379784||!_0x583ebf){if(!_0x379784)_0x3b9b8b['classList']['add']('input-error');if(!_0x583ebf)_0x482e1e['classList']['add']('input-error');_0x9764e3['textContent']='Test\x20name\x20and\x20command\x20are\x20required',_0x9764e3['hidden']=![];return;}if(state['selectedEnvData']['tests'][_0x379784]){_0x3b9b8b['classList']['add']('input-error'),_0x9764e3['textContent']='A\x20test\x20with\x20this\x20name\x20already\x20exists',_0x9764e3['hidden']=![];return;}const _0x1be798=_0x583ebf['split']('\x0a')['filter'](_0x59646a=>_0x59646a['trim']());let _0x3efc30;_0x1be798['length']>0x1?_0x3efc30={'commands':_0x1be798}:_0x3efc30={'command':_0x1be798[0x0]};const _0x2453a2={'description':_0x5c1a11,..._0x3efc30};state['selectedEnvData']['tests']={...state['selectedEnvData']['tests'],[_0x379784]:_0x2453a2},renderTests(),markAsModified(),closeAddTestModal(),Utils['showSuccess']('Test\x20command\x20added\x20(click\x20Save\x20to\x20persist\x20changes)');}window['editTest']=function(_0x59319e){selectTest(_0x59319e);},window['removeTest']=function(_0x244eeb){document['getElementById']('delete-test-name')['textContent']=_0x244eeb,document['getElementById']('delete-test-confirm-btn')['dataset']['testKey']=_0x244eeb,document['getElementById']('delete-test-modal')['hidden']=![];};function closeDeleteTestModal(){document['getElementById']('delete-test-modal')['hidden']=!![];}function confirmDeleteTest(){const _0x4f3981=document['getElementById']('delete-test-confirm-btn')['dataset']['testKey'],_0x5158ad={...state['selectedEnvData']['tests']};delete _0x5158ad[_0x4f3981],state['selectedEnvData']['tests']=_0x5158ad,state['currentTest']===_0x4f3981&&(state['currentTest']=null),renderTests(),markAsModified(),closeDeleteTestModal(),Utils['showSuccess']('Test\x20command\x20removed\x20(click\x20Save\x20to\x20persist\x20changes)');}function renderTemplates(){const _0x498866=document['querySelector']('.templates-sidebar'),_0x15ab34=state['selectedEnvData']['templates']||[];updateTabBadge('badge-templates',_0x15ab34['length']);const _0x29ba37=_0x498866['querySelector']('#new-template-tab'),_0x183638=_0x15ab34['map']((_0x4a4777,_0x298f73)=>'\x0a\x20\x20\x20\x20<button\x20class=\x22template-tab\x22\x20data-template=\x22'+_0x298f73+'\x22\x20onclick=\x22selectTemplate('+_0x298f73+')\x22>\x0a\x20\x20\x20\x20\x20\x20<span\x20class=\x22template-icon\x22>📝</span>\x0a\x20\x20\x20\x20\x20\x20<span>'+Utils['escapeHtml'](_0x4a4777['title'])+'</span>\x0a\x20\x20\x20\x20</button>\x0a\x20\x20')['join']('');_0x498866['innerHTML']=_0x29ba37['outerHTML']+_0x183638,_0x498866['querySelector']('#new-template-tab')['addEventListener']('click',createNewTemplate);if(_0x15ab34['length']>0x0&&state['currentTemplate']===null)selectTemplate(0x0);else _0x15ab34['length']===0x0&&showTemplateEmptyState();}function showTemplateEmptyState(){document['getElementById']('current-template-name')['textContent']='Select\x20a\x20Template',document['getElementById']('delete-template-btn')['hidden']=!![],document['getElementById']('preview-template-btn')['hidden']=!![],document['getElementById']('template-editor-container')['innerHTML']='<p\x20class=\x22text-muted\x22>Select\x20a\x20template\x20from\x20the\x20sidebar\x20to\x20edit,\x20or\x20create\x20a\x20new\x20one.</p>';}window['selectTemplate']=async function(_0x5b8b72){state['currentTemplate']=_0x5b8b72;const _0x47ea9d=state['selectedEnvData']['templates'][_0x5b8b72],_0x5747e8=monacoEditors['get']('template-md-editor');_0x5747e8&&(_0x5747e8['dispose'](),monacoEditors['delete']('template-md-editor'));document['querySelectorAll']('.template-tab')['forEach'](_0x54f74f=>{_0x54f74f['classList']['toggle']('active',_0x54f74f['dataset']['template']===String(_0x5b8b72));}),document['getElementById']('current-template-name')['textContent']=_0x47ea9d['title'],document['getElementById']('delete-template-btn')['hidden']=![],document['getElementById']('preview-template-btn')['hidden']=![],document['getElementById']('preview-template-btn')['innerHTML']='<span>✏️</span>\x20Edit';const _0x5e2826=_0x47ea9d['parameters']?Object['keys'](_0x47ea9d['parameters'])['length']:0x0,_0x412806=document['getElementById']('template-editor-container');_0x412806['innerHTML']='\x0a\x20\x20\x20\x20<div\x20id=\x22template-preview-container\x22>\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22form-group\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<label>Template\x20Content</label>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22markdown-preview-container\x22\x20id=\x22template-md-preview\x22></div>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22form-group\x22\x20style=\x22margin-top:\x2024px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<label>Template\x20Metadata</label>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22form-single-column\x22\x20style=\x22margin-top:\x208px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22form-row\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<label>Title</label>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<input\x20type=\x22text\x22\x20class=\x22form-input\x22\x20value=\x22'+Utils['escapeHtml'](_0x47ea9d['title']||'')+'\x22\x20disabled>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20'+(_0x47ea9d['description']?'\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22form-row\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<label>Description</label>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<input\x20type=\x22text\x22\x20class=\x22form-input\x22\x20value=\x22'+Utils['escapeHtml'](_0x47ea9d['description'])+'\x22\x20disabled>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20':'')+'\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x0a\x20\x20\x20\x20\x20\x20<!--\x20Parameters\x20Section\x20(visual\x20maintenance\x20-\x20preview\x20mode\x20shows\x20summary)\x20-->\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22deploy-section\x22\x20style=\x22margin-top:\x2024px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22deploy-section-header\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20class=\x22deploy-section-toggle\x22\x20type=\x22button\x22\x20aria-expanded=\x22false\x22\x20aria-controls=\x22template-parameters-section-preview\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22deploy-section-title\x22>Parameters</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22deploy-section-count\x22>'+_0x5e2826+'</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22deploy-section-body\x22\x20id=\x22template-parameters-section-preview\x22\x20hidden>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20id=\x22template-parameters-preview-list\x22\x20class=\x22profile-list\x22></div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<p\x20class=\x22text-muted\x20small\x22>Switch\x20to\x20Edit\x20mode\x20to\x20add\x20or\x20modify\x20parameters.</p>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20<div\x20id=\x22template-editor-container-edit\x22\x20hidden>\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22form-group\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<label>Template\x20Content\x20(Markdown)</label>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20id=\x22template-md-editor\x22\x20style=\x22height:\x20400px;\x20border:\x201px\x20solid\x20var(--color-border);\x20margin-top:\x208px;\x22></div>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22form-group\x22\x20style=\x22margin-top:\x2024px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<label>Template\x20Metadata</label>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22form-single-column\x22\x20style=\x22margin-top:\x208px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22form-row\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<label\x20for=\x22template-edit-title\x22>Title</label>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<input\x20type=\x22text\x22\x20id=\x22template-edit-title\x22\x20class=\x22form-input\x22\x20value=\x22'+Utils['escapeHtml'](_0x47ea9d['title']||'')+'\x22\x20placeholder=\x22Template\x20title\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22form-row\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<label\x20for=\x22template-edit-description\x22>Description</label>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<input\x20type=\x22text\x22\x20id=\x22template-edit-description\x22\x20class=\x22form-input\x22\x20value=\x22'+Utils['escapeHtml'](_0x47ea9d['description']||'')+'\x22\x20placeholder=\x22Short\x20description\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x0a\x20\x20\x20\x20\x20\x20<!--\x20Parameters\x20Section\x20(visual\x20maintenance\x20-\x20edit\x20mode)\x20-->\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22deploy-section\x22\x20style=\x22margin-top:\x2024px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22deploy-section-header\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20class=\x22deploy-section-toggle\x20template-param-toggle\x22\x20type=\x22button\x22\x20aria-expanded=\x22false\x22\x20aria-controls=\x22template-parameters-section\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22deploy-section-title\x22>Parameters</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22deploy-section-count\x22\x20id=\x22template-parameters-count\x22>'+_0x5e2826+'</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20class=\x22btn-secondary\x20btn-small\x22\x20onclick=\x22openAddTemplateParameterModal()\x22>+\x20Add</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22deploy-section-body\x22\x20id=\x22template-parameters-section\x22\x20hidden>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20id=\x22template-parameters-list\x22\x20class=\x22profile-list\x22></div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<p\x20class=\x22text-muted\x20small\x22>Define\x20parameters\x20that\x20will\x20be\x20prompted\x20when\x20using\x20this\x20template.</p>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20';const _0x2cba12=document['getElementById']('template-md-preview');_0x2cba12['innerHTML']=marked['parse'](_0x47ea9d['content']||''),state['currentTemplateData']={..._0x47ea9d,'parameters':_0x47ea9d['parameters']?JSON['parse'](JSON['stringify'](_0x47ea9d['parameters'])):{}},initTemplateSectionToggles(),renderTemplateParametersPreview();};function initTemplateSectionToggles(){document['querySelectorAll']('#template-editor-container\x20.deploy-section-toggle')['forEach'](_0x5ebd74=>{_0x5ebd74['addEventListener']('click',function(){const _0x2923ef=this['getAttribute']('aria-expanded')==='true',_0x3fc42f=this['getAttribute']('aria-controls'),_0x1b45c3=document['getElementById'](_0x3fc42f);this['setAttribute']('aria-expanded',!_0x2923ef),_0x1b45c3&&(_0x1b45c3['hidden']=_0x2923ef);});});}function renderTemplateParametersPreview(){const _0x3f047f=document['getElementById']('template-parameters-preview-list');if(!_0x3f047f)return;const _0x5ef061=state['currentTemplateData']?.['parameters']||{},_0x18274f=Array['isArray'](_0x5ef061)?Object['fromEntries'](_0x5ef061['map'](_0x1953a1=>[_0x1953a1['name'],_0x1953a1])):_0x5ef061,_0x3aa2f2=Object['entries'](_0x18274f);if(_0x3aa2f2['length']===0x0){_0x3f047f['innerHTML']='<div\x20class=\x22profile-list-empty\x22>No\x20parameters\x20defined</div>';return;}_0x3f047f['innerHTML']=_0x3aa2f2['map'](([_0x3d58ca,_0x23f788])=>{const _0x32eaf3=getParameterTypeLabel(_0x23f788),_0x4a16d3=_0x23f788['prompt']?.['label']||_0x23f788['label']||'';return'\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22profile-param-item\x22\x20data-name=\x22'+Utils['escapeHtml'](_0x3d58ca)+'\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22profile-item-key\x22>'+Utils['escapeHtml'](_0x3d58ca)+'</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22param-type-badge\x22>'+_0x32eaf3+'</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22profile-item-value\x22>'+(_0x4a16d3?Utils['escapeHtml'](_0x4a16d3):'')+'</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20'+(_0x23f788['required']?'<span\x20class=\x22param-required\x22>Required</span>':'')+'\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20';})['join']('');}async function toggleTemplatePreview(){const _0x3ff7cf=document['getElementById']('template-preview-container'),_0x482021=document['getElementById']('template-editor-container-edit'),_0x15d36b=document['getElementById']('preview-template-btn');if(!_0x3ff7cf||!_0x482021)return;if(_0x3ff7cf['hidden']){const _0x7cb42a=getMonacoValue('template-md-editor');if(_0x7cb42a!==null){const _0x36820e=document['getElementById']('template-md-preview');_0x36820e&&(_0x36820e['innerHTML']=marked['parse'](_0x7cb42a));}const _0x4bf721=document['getElementById']('template-edit-title'),_0x3fbfe0=document['getElementById']('template-edit-description');_0x4bf721&&state['currentTemplateData']&&(state['currentTemplateData']['title']=_0x4bf721['value']),_0x3fbfe0&&state['currentTemplateData']&&(state['currentTemplateData']['description']=_0x3fbfe0['value']),renderTemplateParametersPreview(),_0x3ff7cf['hidden']=![],_0x482021['hidden']=!![],_0x15d36b['innerHTML']='<span>✏️</span>\x20Edit';}else{_0x3ff7cf['hidden']=!![],_0x482021['hidden']=![],_0x15d36b['innerHTML']='<span>👁</span>\x20Preview';const _0x1a3a82=state['currentTemplateData'],_0x1170c8='template-md-editor',_0x1ef7ee=window['MarkdownFileEditor']&&window['MarkdownFileEditor']['editors']['has'](_0x1170c8),_0x3e8189=monacoEditors['has'](_0x1170c8);if(_0x1a3a82&&!_0x1ef7ee&&!_0x3e8189){if(window['MarkdownFileEditor']){const _0x1d333c=window['MarkdownFileEditor']['getOrCreate'](_0x1170c8,_0x1a3a82['content']||'',![],'400px',()=>markAsModified());}else{const _0x165a01=await createMonacoEditor(_0x1170c8,_0x1a3a82['content']||'','markdown',![]);_0x165a01&&_0x165a01['onDidChangeModelContent'](()=>{markAsModified();});}}const _0x16f120=document['getElementById']('template-edit-title'),_0x104e12=document['getElementById']('template-edit-description');_0x16f120&&_0x16f120['addEventListener']('input',markAsModified),_0x104e12&&_0x104e12['addEventListener']('input',markAsModified),renderTemplateParameters();}}function createNewTemplate(){const _0x48111c=document['getElementById']('new-template-title'),_0x1fb8a4=document['getElementById']('new-template-description'),_0x5c451d=document['getElementById']('new-template-filename'),_0x192bcc=document['getElementById']('add-template-error');_0x48111c['value']='',_0x1fb8a4['value']='',_0x5c451d['value']='',_0x48111c['classList']['remove']('input-error'),_0x5c451d['classList']['remove']('input-error'),_0x192bcc['hidden']=!![],_0x48111c['addEventListener']('input',()=>{const _0x3c7915=_0x48111c['value']['trim']();if(_0x3c7915&&!_0x5c451d['value']){const _0x5dd70b=_0x3c7915['toLowerCase']()['replace'](/[^a-z0-9]+/g,'-')['replace'](/^-+|-+$/g,'')+'.md';_0x5c451d['placeholder']=_0x5dd70b;}}),document['getElementById']('add-template-modal')['hidden']=![];}function closeAddTemplateModal(){document['getElementById']('add-template-modal')['hidden']=!![];}function confirmAddTemplate(){const _0x4374d3=document['getElementById']('new-template-title'),_0x4e4cae=document['getElementById']('new-template-filename'),_0x4deeec=document['getElementById']('add-template-error'),_0x3c6a13=_0x4374d3['value']['trim'](),_0x51bd3d=document['getElementById']('new-template-description')['value']['trim']();let _0x3437cb=_0x4e4cae['value']['trim']();_0x4374d3['classList']['remove']('input-error'),_0x4e4cae['classList']['remove']('input-error'),_0x4deeec['hidden']=!![];if(!_0x3c6a13){_0x4374d3['classList']['add']('input-error'),_0x4deeec['textContent']='Template\x20title\x20is\x20required',_0x4deeec['hidden']=![];return;}!_0x3437cb&&(_0x3437cb=_0x3c6a13['toLowerCase']()['replace'](/[^a-z0-9]+/g,'-')['replace'](/^-+|-+$/g,'')+'.md');!_0x3437cb['endsWith']('.md')&&(_0x3437cb+='.md');if(state['selectedEnvData']['templates']['some'](_0x32641e=>_0x32641e['filename']===_0x3437cb)){_0x4e4cae['classList']['add']('input-error'),_0x4deeec['textContent']='A\x20template\x20with\x20this\x20filename\x20already\x20exists',_0x4deeec['hidden']=![];return;}const _0x14dbb6={'title':_0x3c6a13,'description':_0x51bd3d||undefined,'filename':_0x3437cb,'content':'','parameters':[]};state['selectedEnvData']['templates']=[...state['selectedEnvData']['templates']||[],_0x14dbb6],renderTemplates(),markAsModified(),closeAddTemplateModal(),Utils['showSuccess']('Template\x20added\x20(click\x20Save\x20to\x20persist\x20changes)');}window['editTemplate']=function(_0x141724){selectTemplate(_0x141724);},window['removeTemplate']=function(_0x24dde0){const _0x56a98f=state['selectedEnvData']['templates'][_0x24dde0];document['getElementById']('delete-template-name')['textContent']=_0x56a98f['title'],document['getElementById']('delete-template-confirm-btn')['dataset']['templateIndex']=_0x24dde0,document['getElementById']('delete-template-modal')['hidden']=![];};function closeDeleteTemplateModal(){document['getElementById']('delete-template-modal')['hidden']=!![];}function confirmDeleteTemplate(){const _0x414d32=parseInt(document['getElementById']('delete-template-confirm-btn')['dataset']['templateIndex']);state['selectedEnvData']['templates']=state['selectedEnvData']['templates']['filter']((_0x593d69,_0x18bcac)=>_0x18bcac!==_0x414d32);if(state['currentTemplate']===_0x414d32)state['currentTemplate']=null;else state['currentTemplate']>_0x414d32&&state['currentTemplate']--;renderTemplates(),markAsModified(),closeDeleteTemplateModal(),Utils['showSuccess']('Template\x20removed\x20(click\x20Save\x20to\x20persist\x20changes)');}function renderDeployProfiles(){const _0x330915=document['querySelector']('.deploy-sidebar'),_0x78e071=state['selectedEnvData']['deployment_profiles']||[];updateTabBadge('badge-deploy',_0x78e071['length']);const _0x1c747f=_0x330915['querySelector']('#new-deploy-profile-tab'),_0x2e66fc=_0x78e071['map'](_0x474d5d=>'\x0a\x20\x20\x20\x20<button\x20class=\x22deploy-profile-tab\x20'+(!_0x474d5d['hasScript']?'missing-script':'')+'\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20data-profile=\x22'+Utils['escapeHtml'](_0x474d5d['name'])+'\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20onclick=\x22selectDeployProfile(\x27'+Utils['escapeHtml'](_0x474d5d['name'])+'\x27)\x22>\x0a\x20\x20\x20\x20\x20\x20<svg\x20class=\x22deploy-profile-icon\x22\x20width=\x2216\x22\x20height=\x2216\x22\x20viewBox=\x220\x200\x2024\x2024\x22\x20fill=\x22none\x22\x20stroke=\x22currentColor\x22\x20stroke-width=\x222\x22\x20stroke-linecap=\x22round\x22\x20stroke-linejoin=\x22round\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<polygon\x20points=\x2212\x202\x202\x207\x2012\x2012\x2022\x207\x2012\x202\x22></polygon>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<polyline\x20points=\x222\x2017\x2012\x2022\x2022\x2017\x22></polyline>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<polyline\x20points=\x222\x2012\x2012\x2017\x2022\x2012\x22></polyline>\x0a\x20\x20\x20\x20\x20\x20</svg>\x0a\x20\x20\x20\x20\x20\x20<span>'+Utils['escapeHtml'](_0x474d5d['name'])+'</span>\x0a\x20\x20\x20\x20</button>\x0a\x20\x20')['join']('');_0x330915['innerHTML']=_0x1c747f['outerHTML']+_0x2e66fc,_0x330915['querySelector']('#new-deploy-profile-tab')['addEventListener']('click',openAddDeployProfileModal);if(_0x78e071['length']>0x0&&state['currentDeployProfile']===null)selectDeployProfile(_0x78e071[0x0]['name']);else{if(_0x78e071['length']===0x0)showDeployProfileEmptyState();else{if(state['currentDeployProfile']){const _0x55fe5a=_0x78e071['find'](_0x51927e=>_0x51927e['name']===state['currentDeployProfile']);_0x55fe5a?selectDeployProfile(state['currentDeployProfile']):(state['currentDeployProfile']=null,showDeployProfileEmptyState());}}}}function showDeployProfileEmptyState(){document['getElementById']('current-deploy-profile-name')['textContent']='Select\x20a\x20Profile',document['getElementById']('run-deploy-profile-btn')['hidden']=!![],document['getElementById']('delete-deploy-profile-btn')['hidden']=!![],document['getElementById']('deploy-profile-details-container')['hidden']=![],document['getElementById']('deploy-profile-editor')['hidden']=!![],document['getElementById']('deployment-progress-panel')['hidden']=!![],updateDeploySectionCount('deploy-secrets-count',0x0),updateDeploySectionCount('deploy-parameters-count',0x0),state['profileScriptEditor']&&(state['profileScriptEditor']['dispose'](),state['profileScriptEditor']=null),state['currentDeployProfile']=null,state['currentDeployProfileData']=null,state['profileHasUnsavedChanges']=![];}window['selectDeployProfile']=async function(_0xdd4970){if(state['profileHasUnsavedChanges']&&state['currentDeployProfile']!==_0xdd4970){const _0x38cca7=confirm('You\x20have\x20unsaved\x20changes\x20to\x20this\x20profile.\x20Switch\x20anyway?\x0a\x0aUse\x20the\x20global\x20Save\x20button\x20to\x20save\x20all\x20changes.');if(!_0x38cca7)return;state['profileHasUnsavedChanges']=![];}state['currentDeployProfile']=_0xdd4970,document['querySelectorAll']('.deploy-profile-tab')['forEach'](_0x4060aa=>{_0x4060aa['classList']['toggle']('active',_0x4060aa['dataset']['profile']===_0xdd4970);});const _0x3fc224=state['selectedEnvData']['deployment_profiles']||[],_0xf649df=_0x3fc224['find'](_0x503f3e=>_0x503f3e['name']===_0xdd4970);if(!_0xf649df){showDeployProfileEmptyState();return;}try{const _0xb87361=await API['get']('/environments/'+state['selectedEnv']+'/deployment-profiles/'+_0xdd4970);state['currentDeployProfileData']=_0xb87361,document['getElementById']('current-deploy-profile-name')['textContent']=_0xdd4970;const _0x50f59f=document['getElementById']('run-deploy-profile-btn');_0x50f59f['hidden']=![],_0x50f59f['disabled']=!_0xb87361['hasScript'],document['getElementById']('delete-deploy-profile-btn')['hidden']=![],document['getElementById']('deploy-profile-details-container')['hidden']=!![],document['getElementById']('deploy-profile-editor')['hidden']=![],document['getElementById']('profile-description')['value']=_0xb87361['description']||'',document['getElementById']('profile-script-filename')['textContent']=_0xdd4970+'.sh',await initProfileScriptEditor(_0xb87361['scriptContent']||''),renderProfileSecrets(),renderProfileParameters();}catch(_0x484e36){console['error']('Failed\x20to\x20load\x20profile:',_0x484e36),Utils['showError']('Failed\x20to\x20load\x20profile\x20details'),showDeployProfileEmptyState();}};async function initProfileScriptEditor(_0x2a04dc){state['profileScriptEditor']&&(state['profileScriptEditor']['dispose'](),state['profileScriptEditor']=null),state['profileScriptEditor']=await createMonacoEditor('profile-script-editor',_0x2a04dc,'shell',![]),state['profileScriptEditor']&&state['profileScriptEditor']['onDidChangeModelContent'](()=>{markProfileAsModified();});}function markProfileAsModified(){state['profileHasUnsavedChanges']=!![],markAsModified();}function renderProfileSecrets(){const _0x178bdd=document['getElementById']('profile-secrets-list'),_0x378f4f=state['currentDeployProfileData']?.['secrets']||[];updateDeploySectionCount('deploy-secrets-count',_0x378f4f['length']);if(_0x378f4f['length']===0x0){_0x178bdd['innerHTML']='<div\x20class=\x22profile-list-empty\x22>No\x20secrets\x20configured</div>';return;}const _0x3e5518=state['secrets']['map'](_0xd66544=>_0xd66544['name']);_0x178bdd['innerHTML']=_0x378f4f['map']((_0x2a74b6,_0x22e7ee)=>{const _0x35a752=_0x3e5518['includes'](_0x2a74b6['name']),_0x2d9dae=_0x2a74b6['expose_as']==='file'?'File':'Env\x20Var';return'\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22profile-secret-item\x20'+(!_0x35a752?'warning':'')+'\x22\x20data-index=\x22'+_0x22e7ee+'\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22profile-item-key\x22>'+Utils['escapeHtml'](_0x2a74b6['name'])+'</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22secret-expose-type\x20'+_0x2a74b6['expose_as']+'\x22>'+_0x2d9dae+'</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22profile-item-value\x22\x20title=\x22'+Utils['escapeHtml'](_0x2a74b6['target'])+'\x22>'+Utils['escapeHtml'](_0x2a74b6['target'])+'</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20'+(!_0x35a752?'<span\x20class=\x22profile-item-meta\x22\x20style=\x22color:\x20var(--color-warning);\x22>⚠\x20Not\x20found</span>':'')+'\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22profile-item-actions\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20class=\x22profile-item-delete\x22\x20onclick=\x22deleteProfileSecret('+_0x22e7ee+')\x22\x20title=\x22Delete\x22>🗑</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20';})['join']('');}function renderProfileParameters(){const _0x596dec=document['getElementById']('profile-parameters-list'),_0x27443b=state['currentDeployProfileData']?.['parameters']||{},_0x268b16=Object['entries'](_0x27443b);updateDeploySectionCount('deploy-parameters-count',_0x268b16['length']);if(_0x268b16['length']===0x0){_0x596dec['innerHTML']='<div\x20class=\x22profile-list-empty\x22>No\x20parameters\x20defined</div>';return;}_0x596dec['innerHTML']=_0x268b16['map'](([_0x514f38,_0x5516fe])=>{const _0x3b4f8c=getParameterTypeLabel(_0x5516fe),_0x4f78fc=_0x5516fe['label']||'';return'\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22profile-param-item\x22\x20data-name=\x22'+Utils['escapeHtml'](_0x514f38)+'\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22profile-item-key\x22>'+Utils['escapeHtml'](_0x514f38)+'</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22param-type-badge\x22>'+_0x3b4f8c+'</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22profile-item-value\x22>'+(_0x4f78fc?Utils['escapeHtml'](_0x4f78fc):'')+'</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20'+(_0x5516fe['required']?'<span\x20class=\x22param-required\x22>Required</span>':'')+'\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22profile-item-actions\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20class=\x22profile-item-edit\x22\x20onclick=\x22editProfileParameter(\x27'+Utils['escapeHtml'](_0x514f38)+'\x27)\x22\x20title=\x22Edit\x22>✏️</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20class=\x22profile-item-delete\x22\x20onclick=\x22deleteProfileParameter(\x27'+Utils['escapeHtml'](_0x514f38)+'\x27)\x22\x20title=\x22Delete\x22>🗑</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20';})['join']('');}function openRunDeploymentModal(){if(!state['currentDeployProfileData']||!state['currentDeployProfile'])return;const _0x20e961=document['getElementById']('run-deployment-modal'),_0x393739=document['getElementById']('run-deployment-error'),_0x2773e7=state['currentDeployProfile'];document['getElementById']('run-deployment-profile-name')['textContent']=_0x2773e7,document['getElementById']('run-deployment-dry-run')['checked']=![],document['getElementById']('run-deployment-start-btn')['disabled']=![],_0x393739['hidden']=!![],_0x393739['textContent']='',renderDeploymentParameterInputs(state['currentDeployProfileData']['parameters']||{}),_0x20e961['hidden']=![];}function closeRunDeploymentModal(){document['getElementById']('run-deployment-modal')['hidden']=!![];}function renderDeploymentParameterInputs(_0x5ee879){const _0x5a6a96=document['getElementById']('run-deployment-parameters');_0x5a6a96['innerHTML']='';const _0x30164e=Object['entries'](_0x5ee879);if(_0x30164e['length']===0x0){_0x5a6a96['innerHTML']='<p\x20class=\x22text-muted\x20small\x22>No\x20parameters\x20required\x20for\x20this\x20deployment.</p>';return;}for(const [_0x52479f,_0xa884b4]of _0x30164e){const _0x3d3acc=document['createElement']('div');_0x3d3acc['className']='deployment-param-row',_0x3d3acc['dataset']['param']=_0x52479f,_0x3d3acc['dataset']['type']=_0xa884b4['type']||'text';const _0x257a5d=document['createElement']('label');_0x257a5d['className']='deployment-param-label',_0x257a5d['setAttribute']('for','deployment-param-'+_0x52479f),_0x257a5d['textContent']=_0xa884b4['label']||_0x52479f;if(_0xa884b4['required']){const _0x49bb2f=document['createElement']('span');_0x49bb2f['className']='param-required',_0x49bb2f['textContent']='Required',_0x257a5d['appendChild'](_0x49bb2f);}_0x3d3acc['appendChild'](_0x257a5d);let _0x485b39;if(_0xa884b4['type']==='select')_0x485b39=document['createElement']('select'),_0x485b39['className']='form-input',_0x485b39['innerHTML']=(_0xa884b4['options']||[])['map'](_0x40d32d=>{const _0x17b37e=Utils['escapeHtml'](_0x40d32d);return'<option\x20value=\x22'+_0x17b37e+'\x22>'+_0x17b37e+'</option>';})['join'](''),_0xa884b4['default']&&(_0x485b39['value']=_0xa884b4['default']);else{if(_0xa884b4['type']==='boolean')_0x485b39=document['createElement']('input'),_0x485b39['type']='checkbox',_0x485b39['checked']=_0xa884b4['default']===!![]||_0xa884b4['default']==='true';else _0xa884b4['type']==='command'?(_0x485b39=document['createElement']('select'),_0x485b39['className']='form-input',_0x485b39['disabled']=!![],_0x485b39['innerHTML']='<option\x20value=\x22\x22>Loading\x20options...</option>'):(_0x485b39=document['createElement']('input'),_0x485b39['type']='text',_0x485b39['className']='form-input',_0x485b39['placeholder']=_0xa884b4['default']||'',_0xa884b4['default']&&(_0x485b39['value']=_0xa884b4['default']));}_0x485b39['id']='deployment-param-'+_0x52479f,_0x3d3acc['appendChild'](_0x485b39);if(_0xa884b4['description']){const _0x17cce3=document['createElement']('div');_0x17cce3['className']='deployment-param-description',_0x17cce3['textContent']=_0xa884b4['description'],_0x3d3acc['appendChild'](_0x17cce3);}_0x5a6a96['appendChild'](_0x3d3acc),_0xa884b4['type']==='command'&&loadDeploymentCommandOptions(_0x52479f,_0xa884b4,_0x485b39);}}async function loadDeploymentCommandOptions(_0x2b3ecb,_0x3f208a,_0x4db0df){const _0x544719=state['selectedEnv']+':'+state['currentDeployProfile']+':'+_0x2b3ecb;if(state['deploymentParamCache'][_0x544719]){populateDeploymentCommandOptions(_0x4db0df,state['deploymentParamCache'][_0x544719],_0x3f208a['default']);return;}try{const _0x1b0db7=await API['promptParameter']({'environment':state['selectedEnv'],'command':_0x3f208a['command'],'parser':'lines'}),_0x5324fa=_0x1b0db7['choices']||[];state['deploymentParamCache'][_0x544719]=_0x5324fa,populateDeploymentCommandOptions(_0x4db0df,_0x5324fa,_0x3f208a['default']);}catch(_0x37030a){_0x4db0df['disabled']=!![],_0x4db0df['innerHTML']='<option\x20value=\x22\x22>Failed\x20to\x20load\x20options</option>',console['error']('Failed\x20to\x20load\x20deployment\x20parameter\x20options:',_0x37030a);}}function populateDeploymentCommandOptions(_0x357891,_0xa0203a,_0x59f245){_0x357891['disabled']=![];if(_0xa0203a['length']===0x0){_0x357891['innerHTML']='<option\x20value=\x22\x22>No\x20options\x20available</option>';return;}_0x357891['innerHTML']=_0xa0203a['map'](_0x2555d0=>{const _0x55348d=Utils['escapeHtml'](_0x2555d0['value']),_0xc7fcfa=Utils['escapeHtml'](_0x2555d0['label']||_0x2555d0['value']);return'<option\x20value=\x22'+_0x55348d+'\x22>'+_0xc7fcfa+'</option>';})['join'](''),_0x59f245&&_0xa0203a['some'](_0x46a58f=>_0x46a58f['value']===_0x59f245)&&(_0x357891['value']=_0x59f245);}function collectDeploymentParameters(){const _0x206f00={};return document['querySelectorAll']('#run-deployment-parameters\x20[data-param]')['forEach'](_0x4ca59c=>{const _0x3afa70=_0x4ca59c['dataset']['param'],_0xbbf12b=_0x4ca59c['dataset']['type'],_0x2672d1=_0x4ca59c['querySelector']('input,\x20select');if(!_0x2672d1)return;if(_0xbbf12b==='boolean')_0x206f00[_0x3afa70]=_0x2672d1['checked'];else{const _0x589c40=_0x2672d1['value']['trim']();_0x589c40!==''&&(_0x206f00[_0x3afa70]=_0x589c40);}}),_0x206f00;}function validateDeploymentInputs(_0x44aef3,_0x42e94f){const _0x50f866=[];return Object['entries'](_0x42e94f||{})['forEach'](([_0x47b27f,_0x5e7475])=>{if(!_0x5e7475['required'])return;if(_0x5e7475['type']==='boolean')return;!_0x44aef3[_0x47b27f]&&_0x50f866['push'](_0x47b27f);}),_0x50f866;}async function startDeployment(){if(!state['currentDeployProfile'])return;const _0x1927a9=document['getElementById']('run-deployment-error');_0x1927a9['hidden']=!![],_0x1927a9['textContent']='';const _0x38b0d3=collectDeploymentParameters(),_0x415b82=validateDeploymentInputs(_0x38b0d3,state['currentDeployProfileData']?.['parameters']||{});if(_0x415b82['length']>0x0){_0x1927a9['textContent']='Missing\x20required\x20parameters:\x20'+_0x415b82['join'](',\x20'),_0x1927a9['hidden']=![];return;}const _0x1ae007=document['getElementById']('run-deployment-dry-run')['checked'],_0x5dc2c8=document['getElementById']('run-deployment-start-btn');_0x5dc2c8['disabled']=!![];try{const _0xd153e2=await API['post']('/environments/'+state['selectedEnv']+'/deployment-profiles/'+state['currentDeployProfile']+'/execute',{'parameters':_0x38b0d3,'dryRun':_0x1ae007});closeRunDeploymentModal(),_0xd153e2['status']==='running'?(startDeploymentPolling(_0xd153e2['deploymentId']),Utils['showSuccess']('Deployment\x20started')):(Utils['showSuccess']('Deployment\x20dry\x20run\x20completed'),await loadDeploymentHistory());}catch(_0x3d28e6){_0x1927a9['textContent']=_0x3d28e6['message']||'Failed\x20to\x20start\x20deployment',_0x1927a9['hidden']=![];}finally{_0x5dc2c8['disabled']=![];}}function startDeploymentPolling(_0x50bce6){state['currentDeploymentId']=_0x50bce6,state['deploymentStartTime']=Date['now'](),state['deploymentOutput']='';const _0x444020=document['getElementById']('deployment-progress-panel');_0x444020['hidden']=![];const _0x4b4ec5=document['getElementById']('deployment-progress-profile');_0x4b4ec5&&(_0x4b4ec5['textContent']=state['currentDeployProfile']||''),document['getElementById']('deployment-output')['textContent']='',state['deploymentPollInterval']&&clearInterval(state['deploymentPollInterval']),pollDeploymentStatus(),state['deploymentPollInterval']=setInterval(pollDeploymentStatus,0x7d0);}function stopDeploymentPolling(){state['deploymentPollInterval']&&(clearInterval(state['deploymentPollInterval']),state['deploymentPollInterval']=null);}async function pollDeploymentStatus(){if(!state['currentDeploymentId'])return;try{const _0x5afc6b=await API['get']('/environments/'+state['selectedEnv']+'/deployments/'+state['currentDeploymentId']);updateDeploymentProgress(_0x5afc6b),_0x5afc6b['status']&&_0x5afc6b['status']!=='running'&&(stopDeploymentPolling(),state['currentDeploymentId']=null,await loadDeploymentHistory());}catch(_0x4ba256){console['error']('Failed\x20to\x20poll\x20deployment\x20status:',_0x4ba256);}}function updateDeploymentProgress(_0x46b4be){const _0x512024=document['getElementById']('deployment-progress-profile'),_0x5aca83=document['getElementById']('deployment-progress-badge'),_0x4459eb=document['getElementById']('deployment-progress-duration'),_0x29535b=document['getElementById']('deployment-output');_0x512024&&_0x46b4be['profile']&&(_0x512024['textContent']=_0x46b4be['profile']);_0x5aca83&&(_0x5aca83['textContent']=_0x46b4be['status']||'running',_0x5aca83['className']='deployment-status-badge\x20'+(_0x46b4be['status']||'running'));if(_0x4459eb){const _0x5150c1=_0x46b4be['startedAt']?Date['parse'](_0x46b4be['startedAt']):state['deploymentStartTime'],_0x1653b0=_0x46b4be['completedAt']?Date['parse'](_0x46b4be['completedAt']):Date['now']();_0x4459eb['textContent']=formatDuration(_0x1653b0-_0x5150c1);}_0x29535b&&(_0x29535b['textContent']=_0x46b4be['output']||'',_0x29535b['scrollTop']=_0x29535b['scrollHeight']);}async function cancelDeploymentExecution(){if(!state['currentDeploymentId'])return;try{await API['post']('/environments/'+state['selectedEnv']+'/deployments/'+state['currentDeploymentId']+'/cancel',{}),Utils['showSuccess']('Deployment\x20cancelled');}catch(_0xc91a52){Utils['showError'](_0xc91a52['message']||'Failed\x20to\x20cancel\x20deployment');}}async function loadDeploymentHistory(){if(!state['selectedEnv'])return;try{const _0x487eb9=await API['get']('/environments/'+state['selectedEnv']+'/deployment-history?limit=20');state['deploymentHistory']=_0x487eb9['deployments']||[],renderDeploymentHistory();}catch(_0x5c4654){console['error']('Failed\x20to\x20load\x20deployment\x20history:',_0x5c4654),state['deploymentHistory']=[],renderDeploymentHistory();}}function renderDeploymentHistory(){const _0x14c940=document['getElementById']('deployment-history-list');if(!_0x14c940)return;updateDeploySectionCount('deploy-history-count',state['deploymentHistory']['length']);if(state['deploymentHistory']['length']===0x0){_0x14c940['innerHTML']='<div\x20class=\x22profile-list-empty\x22>No\x20deployments\x20yet</div>';return;}_0x14c940['innerHTML']='',state['deploymentHistory']['forEach'](_0x9ab2e4=>{const _0x1ce62d=document['createElement']('div');_0x1ce62d['className']='deployment-history-item';const _0x2e6d86=document['createElement']('div');_0x2e6d86['className']='deployment-history-header';const _0x1b55ff=document['createElement']('div');_0x1b55ff['className']='deployment-history-title',_0x1b55ff['textContent']=_0x9ab2e4['profile']+'\x20('+_0x9ab2e4['status']+')';const _0x92be11=document['createElement']('span');_0x92be11['className']='deployment-status-badge\x20'+_0x9ab2e4['status'],_0x92be11['textContent']=_0x9ab2e4['status'],_0x2e6d86['appendChild'](_0x1b55ff),_0x2e6d86['appendChild'](_0x92be11);const _0x19b043=document['createElement']('div');_0x19b043['className']='deployment-history-meta';const _0x231552=_0x9ab2e4['startedAt']?formatTimestamp(_0x9ab2e4['startedAt']):'Unknown\x20time',_0xa3aaa6=_0x9ab2e4['completedAt']?formatDuration(Date['parse'](_0x9ab2e4['completedAt'])-Date['parse'](_0x9ab2e4['startedAt'])):'Running';_0x19b043['innerHTML']='\x0a\x20\x20\x20\x20\x20\x20<span>'+_0x231552+'</span>\x0a\x20\x20\x20\x20\x20\x20<span>Duration:\x20'+_0xa3aaa6+'</span>\x0a\x20\x20\x20\x20\x20\x20<span>Triggered\x20by:\x20'+Utils['escapeHtml'](_0x9ab2e4['triggeredBy']||'unknown')+'</span>\x0a\x20\x20\x20\x20';const _0x2e6c99=document['createElement']('button');_0x2e6c99['className']='btn-ghost\x20btn-small',_0x2e6c99['textContent']='View\x20Output',_0x2e6d86['appendChild'](_0x2e6c99);const _0x38473f=document['createElement']('div');_0x38473f['className']='deployment-history-output',_0x38473f['hidden']=!![],_0x38473f['textContent']=_0x9ab2e4['output']||'No\x20output\x20captured.',_0x2e6c99['addEventListener']('click',()=>{_0x38473f['hidden']=!_0x38473f['hidden'],_0x2e6c99['textContent']=_0x38473f['hidden']?'View\x20Output':'Hide\x20Output';}),_0x1ce62d['appendChild'](_0x2e6d86),_0x1ce62d['appendChild'](_0x19b043),_0x1ce62d['appendChild'](_0x38473f),_0x14c940['appendChild'](_0x1ce62d);});}function formatTimestamp(_0x2f4116){try{const _0x1ce748=new Date(_0x2f4116);return _0x1ce748['toLocaleString']();}catch{return _0x2f4116;}}function initDeploySectionToggles(){document['querySelectorAll']('.deploy-section-toggle')['forEach'](_0x4e8866=>{_0x4e8866['addEventListener']('click',()=>{const _0x1b9e08=_0x4e8866['getAttribute']('aria-controls');if(!_0x1b9e08)return;const _0x193ea4=document['getElementById'](_0x1b9e08);if(!_0x193ea4)return;const _0x44b82b=_0x4e8866['getAttribute']('aria-expanded')==='true';_0x4e8866['setAttribute']('aria-expanded',String(!_0x44b82b)),_0x193ea4['hidden']=_0x44b82b;});});}function updateDeploySectionCount(_0x379a78,_0x273637){const _0xc3fe11=document['getElementById'](_0x379a78);if(!_0xc3fe11)return;_0xc3fe11['textContent']=String(_0x273637),_0xc3fe11['title']=_0x273637+'\x20item'+(_0x273637===0x1?'':'s');}function openAddProfileSecretModal(){const _0x1f5077=document['getElementById']('profile-secret-modal'),_0x38df0=document['getElementById']('profile-secret-name'),_0x3be3d4=document['getElementById']('profile-secret-error');_0x3be3d4['hidden']=!![],populateProfileSecretSelect(),updateProfileSecretInfo(),_0x1f5077['hidden']=![],_0x38df0['focus']();}function populateProfileSecretSelect(){const _0x302977=document['getElementById']('profile-secret-name'),_0x1e06fd=state['secrets']||[],_0x3afc3e=_0x1e06fd['filter'](_0x434ede=>{const _0x5c6305=_0x434ede['available_for']||[];return _0x5c6305['includes']('deploy');});if(_0x3afc3e['length']===0x0){_0x302977['innerHTML']='<option\x20value=\x22\x22>No\x20secrets\x20available\x20for\x20deploy</option>';return;}const _0x4b49b0=(state['currentDeployProfileData']?.['secrets']||[])['map'](_0x12ec3d=>typeof _0x12ec3d==='string'?_0x12ec3d:_0x12ec3d['name']),_0x3dd482=_0x3afc3e['filter'](_0x167c26=>!_0x4b49b0['includes'](_0x167c26['name']));if(_0x3dd482['length']===0x0){_0x302977['innerHTML']='<option\x20value=\x22\x22>All\x20deploy\x20secrets\x20already\x20added</option>';return;}_0x302977['innerHTML']=_0x3dd482['map'](_0x2c3a97=>'<option\x20value=\x22'+Utils['escapeHtml'](_0x2c3a97['name'])+'\x22>'+Utils['escapeHtml'](_0x2c3a97['name'])+(_0x2c3a97['description']?'\x20-\x20'+Utils['escapeHtml'](_0x2c3a97['description']):'')+'</option>')['join']('');}function updateProfileSecretInfo(){const _0xba2e8d=document['getElementById']('profile-secret-name'),_0x21110e=document['getElementById']('profile-secret-info'),_0x2c1ddd=_0xba2e8d['value'];if(!_0x2c1ddd){_0x21110e['hidden']=!![];return;}const _0x445ffc=state['secrets']['find'](_0x3c33ba=>_0x3c33ba['name']===_0x2c1ddd);if(!_0x445ffc){_0x21110e['hidden']=!![];return;}const _0x25ca17=_0x445ffc['expose_as']==='file'?'File\x20(bind\x20mount)':'Environment\x20Variable',_0x40d207=_0x445ffc['expose_as']==='file'?'Container\x20Path':'Variable\x20Name';_0x21110e['innerHTML']='\x0a\x20\x20\x20\x20<div\x20class=\x22secret-info-item\x22>\x0a\x20\x20\x20\x20\x20\x20<span\x20class=\x22secret-info-label\x22>Expose\x20As:</span>\x0a\x20\x20\x20\x20\x20\x20<span\x20class=\x22secret-info-value\x22>'+Utils['escapeHtml'](_0x25ca17)+'</span>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20<div\x20class=\x22secret-info-item\x22>\x0a\x20\x20\x20\x20\x20\x20<span\x20class=\x22secret-info-label\x22>'+Utils['escapeHtml'](_0x40d207)+':</span>\x0a\x20\x20\x20\x20\x20\x20<span\x20class=\x22secret-info-value\x20code-font\x22>'+Utils['escapeHtml'](_0x445ffc['target']||'Not\x20set')+'</span>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20',_0x21110e['hidden']=![];}function closeProfileSecretModal(){document['getElementById']('profile-secret-modal')['hidden']=!![];}function saveProfileSecret(){const _0x35c7f1=document['getElementById']('profile-secret-name'),_0x22f7cd=document['getElementById']('profile-secret-error'),_0x3fe6fd=_0x35c7f1['value'];if(!_0x3fe6fd){_0x22f7cd['textContent']='Please\x20select\x20a\x20secret',_0x22f7cd['hidden']=![];return;}!state['currentDeployProfileData']['secrets']&&(state['currentDeployProfileData']['secrets']=[]),state['currentDeployProfileData']['secrets']['push']({'name':_0x3fe6fd}),closeProfileSecretModal(),renderProfileSecrets(),markProfileAsModified();}window['deleteProfileSecret']=function(_0x5f2bb8){if(!state['currentDeployProfileData']?.['secrets'])return;if(!confirm('Delete\x20this\x20secret\x20reference?'))return;state['currentDeployProfileData']['secrets']['splice'](_0x5f2bb8,0x1),renderProfileSecrets(),markProfileAsModified();};function openAddParameterModal(_0x1bc944){state['parameterModalContext']=_0x1bc944,state['editingParamName']=null,state['parameterOptions']=[];const _0x21a32f=document['getElementById']('profile-parameter-modal'),_0x1c4d18=document['getElementById']('profile-parameter-modal-title'),_0x1b1c4=document['getElementById']('profile-parameter-error');_0x1c4d18['textContent']='Add\x20Parameter',_0x1b1c4['hidden']=!![],document['getElementById']('profile-param-name')['value']='',document['getElementById']('profile-param-name')['disabled']=![],document['getElementById']('profile-param-label')['value']='',document['getElementById']('profile-param-description')['value']='',document['getElementById']('profile-param-type')['value']='text',document['getElementById']('profile-param-command')['value']='',document['getElementById']('profile-param-parser')['value']='lines',document['getElementById']('profile-param-repos')['value']='',document['getElementById']('profile-param-path')['value']='',document['getElementById']('profile-param-include')['value']='files',document['getElementById']('profile-param-pattern')['value']='',document['getElementById']('profile-param-files-repos')['value']='',document['getElementById']('profile-param-multiselect')['checked']=![],document['getElementById']('profile-param-default')['value']='',document['getElementById']('profile-param-required')['checked']=![],renderParameterOptionsList(),updateProfileParamTypeVisibility(),_0x21a32f['hidden']=![],document['getElementById']('profile-param-name')['focus']();}function openAddProfileParameterModal(){openAddParameterModal('deploy');}function updateProfileParamTypeVisibility(){const _0x21f846=document['getElementById']('profile-param-type')['value'],_0x5c11a7=document['getElementById']('profile-param-options-row'),_0x5da56a=document['getElementById']('profile-param-command-row'),_0x1f6d67=document['getElementById']('profile-param-files-row'),_0x7159c9=document['getElementById']('profile-param-multiselect-row');_0x5c11a7['hidden']=!![],_0x5da56a['hidden']=!![],_0x1f6d67['hidden']=!![],_0x7159c9['hidden']=!![];if(_0x21f846==='list')_0x5c11a7['hidden']=![],_0x7159c9['hidden']=![];else{if(_0x21f846==='command')_0x5da56a['hidden']=![],_0x7159c9['hidden']=![];else _0x21f846==='files'&&(_0x1f6d67['hidden']=![],_0x7159c9['hidden']=![]);}}function addParameterOption(){state['parameterOptions']['push']({'value':'','label':'','description':''}),renderParameterOptionsList();const _0x188450=document['querySelectorAll']('#profile-param-options-list\x20.option-value-input');_0x188450['length']>0x0&&_0x188450[_0x188450['length']-0x1]['focus']();}window['removeParameterOption']=function(_0x3a23ba){state['parameterOptions']['splice'](_0x3a23ba,0x1),renderParameterOptionsList();},window['updateParameterOption']=function(_0x57ac71,_0x2eb3b5,_0x988a12){state['parameterOptions'][_0x57ac71]&&(state['parameterOptions'][_0x57ac71][_0x2eb3b5]=_0x988a12);};function renderParameterOptionsList(){const _0x53d6b8=document['getElementById']('profile-param-options-list');if(!_0x53d6b8)return;if(state['parameterOptions']['length']===0x0){_0x53d6b8['innerHTML']='<div\x20class=\x22options-empty\x20text-muted\x22>No\x20options\x20defined.\x20Click\x20\x22+\x20Add\x20Option\x22\x20to\x20add\x20one.</div>';return;}_0x53d6b8['innerHTML']=state['parameterOptions']['map']((_0x2a495f,_0x3843e0)=>'\x0a\x20\x20\x20\x20<div\x20class=\x22option-item\x22\x20data-index=\x22'+_0x3843e0+'\x22>\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22option-row\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<input\x20type=\x22text\x22\x20class=\x22form-input\x20option-value-input\x22\x20placeholder=\x22Value\x20(required)\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20value=\x22'+Utils['escapeHtml'](_0x2a495f['value']||'')+'\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20onchange=\x22updateParameterOption('+_0x3843e0+',\x20\x27value\x27,\x20this.value)\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<input\x20type=\x22text\x22\x20class=\x22form-input\x20option-label-input\x22\x20placeholder=\x22Label\x20(optional)\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20value=\x22'+Utils['escapeHtml'](_0x2a495f['label']||'')+'\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20onchange=\x22updateParameterOption('+_0x3843e0+',\x20\x27label\x27,\x20this.value)\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<button\x20type=\x22button\x22\x20class=\x22btn-icon\x20btn-danger-icon\x22\x20onclick=\x22removeParameterOption('+_0x3843e0+')\x22\x20title=\x22Remove\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<svg\x20width=\x2214\x22\x20height=\x2214\x22\x20viewBox=\x220\x200\x2024\x2024\x22\x20fill=\x22none\x22\x20stroke=\x22currentColor\x22\x20stroke-width=\x222\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<line\x20x1=\x2218\x22\x20y1=\x226\x22\x20x2=\x226\x22\x20y2=\x2218\x22></line>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<line\x20x1=\x226\x22\x20y1=\x226\x22\x20x2=\x2218\x22\x20y2=\x2218\x22></line>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</svg>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</button>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20<input\x20type=\x22text\x22\x20class=\x22form-input\x20option-desc-input\x22\x20placeholder=\x22Description\x20(optional)\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20value=\x22'+Utils['escapeHtml'](_0x2a495f['description']||'')+'\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20onchange=\x22updateParameterOption('+_0x3843e0+',\x20\x27description\x27,\x20this.value)\x22>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20')['join']('');}function openEditParameterModal(_0x581bdb,_0x1bd48b){state['parameterModalContext']=_0x1bd48b,state['editingParamName']=_0x581bdb;let _0x513b57;if(_0x1bd48b==='deploy')_0x513b57=state['currentDeployProfileData']?.['parameters']?.[_0x581bdb];else{if(_0x1bd48b==='test'){const _0x819da4=state['selectedEnvData']?.['tests']?.[state['currentTest']];_0x513b57=_0x819da4?.['parameters']?.[_0x581bdb];}else _0x1bd48b==='template'&&(_0x513b57=state['currentTemplateData']?.['parameters']?.[_0x581bdb]);}if(!_0x513b57)return;const _0x1eb9a2=document['getElementById']('profile-parameter-modal'),_0x128150=document['getElementById']('profile-parameter-modal-title'),_0x57ef11=document['getElementById']('profile-parameter-error');_0x128150['textContent']='Edit\x20Parameter',_0x57ef11['hidden']=!![],document['getElementById']('profile-param-name')['value']=_0x581bdb,document['getElementById']('profile-param-name')['disabled']=!![],document['getElementById']('profile-param-description')['value']=_0x513b57['description']||'',document['getElementById']('profile-param-default')['value']=_0x513b57['default']||'',document['getElementById']('profile-param-required')['checked']=_0x513b57['required']||![];const _0x43d7f0=_0x513b57['prompt'];if(_0x43d7f0){document['getElementById']('profile-param-label')['value']=_0x43d7f0['label']||'',document['getElementById']('profile-param-multiselect')['checked']=_0x43d7f0['multiSelect']||![];if(_0x43d7f0['type']==='list')document['getElementById']('profile-param-type')['value']='list',state['parameterOptions']=(_0x43d7f0['options']||[])['map'](_0x49e20f=>{if(typeof _0x49e20f==='string')return{'value':_0x49e20f,'label':'','description':''};return{'value':_0x49e20f['value']||'','label':_0x49e20f['label']||'','description':_0x49e20f['description']||''};});else{if(_0x43d7f0['type']==='command')document['getElementById']('profile-param-type')['value']='command',document['getElementById']('profile-param-command')['value']=_0x43d7f0['command']||'',document['getElementById']('profile-param-parser')['value']=_0x43d7f0['parser']||'lines',document['getElementById']('profile-param-repos')['value']=(_0x43d7f0['repos']||[])['join'](',\x20'),state['parameterOptions']=[];else _0x43d7f0['type']==='files'?(document['getElementById']('profile-param-type')['value']='files',document['getElementById']('profile-param-path')['value']=_0x43d7f0['path']||'',document['getElementById']('profile-param-include')['value']=_0x43d7f0['include']||'files',document['getElementById']('profile-param-pattern')['value']=_0x43d7f0['pattern']||'',document['getElementById']('profile-param-files-repos')['value']=(_0x43d7f0['repos']||[])['join'](',\x20'),state['parameterOptions']=[]):(document['getElementById']('profile-param-type')['value']='text',state['parameterOptions']=[]);}}else{document['getElementById']('profile-param-label')['value']=_0x513b57['label']||'',document['getElementById']('profile-param-multiselect')['checked']=![];const _0x1b8518=_0x513b57['type']||'text';if(_0x1b8518==='select')document['getElementById']('profile-param-type')['value']='list',state['parameterOptions']=(_0x513b57['options']||[])['map'](_0x419adc=>{if(typeof _0x419adc==='string')return{'value':_0x419adc,'label':'','description':''};return{'value':_0x419adc['value']||_0x419adc,'label':_0x419adc['label']||'','description':_0x419adc['description']||''};});else{if(_0x1b8518==='command')document['getElementById']('profile-param-type')['value']='command',document['getElementById']('profile-param-command')['value']=_0x513b57['command']||'',document['getElementById']('profile-param-parser')['value']=_0x513b57['parser']||'lines',document['getElementById']('profile-param-repos')['value']=(_0x513b57['repos']||[])['join'](',\x20'),state['parameterOptions']=[];else _0x1b8518==='boolean'?(document['getElementById']('profile-param-type')['value']='boolean',state['parameterOptions']=[]):(document['getElementById']('profile-param-type')['value']='text',state['parameterOptions']=[]);}}renderParameterOptionsList(),updateProfileParamTypeVisibility(),_0x1eb9a2['hidden']=![],document['getElementById']('profile-param-label')['focus']();}window['editProfileParameter']=function(_0x2bbf7a){openEditParameterModal(_0x2bbf7a,'deploy');},window['editTestParameter']=function(_0x1a710f){openEditParameterModal(_0x1a710f,'test');},window['editTemplateParameter']=function(_0xfe1f05){openEditParameterModal(_0xfe1f05,'template');};function closeProfileParameterModal(){document['getElementById']('profile-parameter-modal')['hidden']=!![],state['editingParamName']=null,state['parameterModalContext']=null,state['parameterOptions']=[];}function saveProfileParameter(){const _0x348d34=document['getElementById']('profile-param-name'),_0xf59753=document['getElementById']('profile-param-label'),_0x22fab7=document['getElementById']('profile-param-description'),_0x3d212d=document['getElementById']('profile-param-type'),_0x194db9=document['getElementById']('profile-param-command'),_0x53f8b0=document['getElementById']('profile-param-parser'),_0x4fc2e6=document['getElementById']('profile-param-repos'),_0x5403f6=document['getElementById']('profile-param-path'),_0x33fb91=document['getElementById']('profile-param-include'),_0x3f011e=document['getElementById']('profile-param-pattern'),_0x4a849e=document['getElementById']('profile-param-files-repos'),_0x4dac06=document['getElementById']('profile-param-multiselect'),_0x45bd93=document['getElementById']('profile-param-default'),_0xbd6345=document['getElementById']('profile-param-required'),_0x488697=document['getElementById']('profile-parameter-error'),_0x2436a2=_0x348d34['value']['trim'](),_0x57594c=_0xf59753['value']['trim'](),_0xa67707=_0x22fab7['value']['trim'](),_0xa2a7b3=_0x3d212d['value'],_0x4ff87a=_0xbd6345['checked'],_0x2f2b78=_0x45bd93['value']['trim'](),_0x58ff2e=_0x4dac06['checked'],_0x4c8348=state['parameterModalContext'];if(!_0x2436a2){_0x488697['textContent']='Parameter\x20name\x20is\x20required',_0x488697['hidden']=![],_0x348d34['focus']();return;}if(!/^[A-Za-z_][A-Za-z0-9_]*$/['test'](_0x2436a2)){_0x488697['textContent']='Invalid\x20parameter\x20name.\x20Use\x20letters,\x20numbers,\x20and\x20underscores.',_0x488697['hidden']=![],_0x348d34['focus']();return;}let _0x56e5c8;if(_0x4c8348==='deploy')!state['currentDeployProfileData']['parameters']&&(state['currentDeployProfileData']['parameters']={}),_0x56e5c8=state['currentDeployProfileData']['parameters'];else{if(_0x4c8348==='test'){const _0x164645=state['selectedEnvData']['tests'][state['currentTest']];!_0x164645['parameters']&&(_0x164645['parameters']={}),_0x56e5c8=_0x164645['parameters'];}else _0x4c8348==='template'&&(!state['currentTemplateData']['parameters']&&(state['currentTemplateData']['parameters']={}),_0x56e5c8=state['currentTemplateData']['parameters']);}if(state['editingParamName']===null&&_0x56e5c8[_0x2436a2]){_0x488697['textContent']='Parameter\x20\x22'+_0x2436a2+'\x22\x20already\x20exists',_0x488697['hidden']=![];return;}let _0x259c95;if(_0x4c8348==='deploy'){_0x259c95={'required':_0x4ff87a};if(_0x57594c)_0x259c95['label']=_0x57594c;if(_0xa67707)_0x259c95['description']=_0xa67707;if(_0x2f2b78)_0x259c95['default']=_0x2f2b78;if(_0xa2a7b3==='list'){_0x259c95['type']='select';const _0xbbcfd3=state['parameterOptions']['filter'](_0xed74b4=>_0xed74b4['value']['trim']());if(_0xbbcfd3['length']<0x1){_0x488697['textContent']='At\x20least\x20one\x20option\x20with\x20a\x20value\x20is\x20required',_0x488697['hidden']=![];return;}_0x259c95['options']=_0xbbcfd3['map'](_0x4a1698=>{if(_0x4a1698['label']||_0x4a1698['description'])return{'value':_0x4a1698['value'],'label':_0x4a1698['label']||undefined,'description':_0x4a1698['description']||undefined};return _0x4a1698['value'];});}else{if(_0xa2a7b3==='command'){_0x259c95['type']='command';const _0x5a053e=_0x194db9['value']['trim']();if(!_0x5a053e){_0x488697['textContent']='Command\x20is\x20required\x20for\x20dynamic\x20type',_0x488697['hidden']=![],_0x194db9['focus']();return;}_0x259c95['command']=_0x5a053e;const _0x33ca4e=_0x53f8b0['value'];if(_0x33ca4e&&_0x33ca4e!=='lines')_0x259c95['parser']=_0x33ca4e;const _0x1b8076=_0x4fc2e6['value']['split'](',')['map'](_0x4dd128=>_0x4dd128['trim']())['filter'](_0x13c538=>_0x13c538);if(_0x1b8076['length']>0x0)_0x259c95['repos']=_0x1b8076;}else{if(_0xa2a7b3==='files'){_0x259c95['type']='files';const _0x5a2f7c=_0x5403f6['value']['trim']();if(!_0x5a2f7c){_0x488697['textContent']='Directory\x20path\x20is\x20required\x20for\x20file\x20browser\x20type',_0x488697['hidden']=![],_0x5403f6['focus']();return;}_0x259c95['path']=_0x5a2f7c,_0x259c95['include']=_0x33fb91['value'];const _0x424ee3=_0x3f011e['value']['trim']();if(_0x424ee3)_0x259c95['pattern']=_0x424ee3;const _0x45457b=_0x4a849e['value']['split'](',')['map'](_0x54811e=>_0x54811e['trim']())['filter'](_0x1c57e7=>_0x1c57e7);if(_0x45457b['length']>0x0)_0x259c95['repos']=_0x45457b;if(_0x58ff2e)_0x259c95['multiSelect']=!![];}else _0xa2a7b3==='boolean'?_0x259c95['type']='boolean':_0x259c95['type']='text';}}}else{_0x259c95={'required':_0x4ff87a};if(_0xa67707)_0x259c95['description']=_0xa67707;if(_0x2f2b78)_0x259c95['default']=_0x2f2b78;if(_0xa2a7b3!=='text'&&_0xa2a7b3!=='boolean'){_0x259c95['prompt']={'type':_0xa2a7b3};if(_0x57594c)_0x259c95['prompt']['label']=_0x57594c;if(_0x58ff2e)_0x259c95['prompt']['multiSelect']=!![];if(_0xa2a7b3==='list'){const _0x2bef88=state['parameterOptions']['filter'](_0xcb0dfd=>_0xcb0dfd['value']['trim']());if(_0x2bef88['length']<0x1){_0x488697['textContent']='At\x20least\x20one\x20option\x20with\x20a\x20value\x20is\x20required',_0x488697['hidden']=![];return;}_0x259c95['prompt']['options']=_0x2bef88['map'](_0x29759d=>{const _0x163f1e={'value':_0x29759d['value']};if(_0x29759d['label'])_0x163f1e['label']=_0x29759d['label'];if(_0x29759d['description'])_0x163f1e['description']=_0x29759d['description'];return _0x163f1e;});}else{if(_0xa2a7b3==='command'){const _0x264c4b=_0x194db9['value']['trim']();if(!_0x264c4b){_0x488697['textContent']='Command\x20is\x20required\x20for\x20dynamic\x20type',_0x488697['hidden']=![],_0x194db9['focus']();return;}_0x259c95['prompt']['command']=_0x264c4b;const _0x209b3=_0x53f8b0['value'];if(_0x209b3&&_0x209b3!=='json')_0x259c95['prompt']['parser']=_0x209b3;const _0x3c94d8=_0x4fc2e6['value']['split'](',')['map'](_0x2066fe=>_0x2066fe['trim']())['filter'](_0x2f797e=>_0x2f797e);if(_0x3c94d8['length']>0x0)_0x259c95['prompt']['repos']=_0x3c94d8;}else{if(_0xa2a7b3==='files'){const _0x22416a=_0x5403f6['value']['trim']();if(!_0x22416a){_0x488697['textContent']='Directory\x20path\x20is\x20required\x20for\x20file\x20browser\x20type',_0x488697['hidden']=![],_0x5403f6['focus']();return;}_0x259c95['prompt']['path']=_0x22416a;const _0x4060e2=_0x33fb91['value'];if(_0x4060e2!=='files')_0x259c95['prompt']['include']=_0x4060e2;const _0x41408a=_0x3f011e['value']['trim']();if(_0x41408a)_0x259c95['prompt']['pattern']=_0x41408a;const _0x109ce4=_0x4a849e['value']['split'](',')['map'](_0x3f9d6f=>_0x3f9d6f['trim']())['filter'](_0x4ba4da=>_0x4ba4da);if(_0x109ce4['length']>0x0)_0x259c95['prompt']['repos']=_0x109ce4;}}}}}_0x56e5c8[_0x2436a2]=_0x259c95,closeProfileParameterModal();if(_0x4c8348==='deploy')renderProfileParameters(),markProfileAsModified();else{if(_0x4c8348==='test')renderTestParameters(),markAsModified();else _0x4c8348==='template'&&(renderTemplateParameters(),markAsModified());}}function deleteParameter(_0x373336,_0x303b69){if(!confirm('Delete\x20this\x20parameter?'))return;if(_0x303b69==='deploy'){if(!state['currentDeployProfileData']?.['parameters'])return;delete state['currentDeployProfileData']['parameters'][_0x373336],renderProfileParameters(),markProfileAsModified();}else{if(_0x303b69==='test'){const _0x2c4354=state['selectedEnvData']?.['tests']?.[state['currentTest']];if(!_0x2c4354?.['parameters'])return;delete _0x2c4354['parameters'][_0x373336],renderTestParameters(),markAsModified();}else{if(_0x303b69==='template'){if(!state['currentTemplateData']?.['parameters'])return;delete state['currentTemplateData']['parameters'][_0x373336],renderTemplateParameters(),markAsModified();}}}}window['deleteProfileParameter']=function(_0x1b712a){deleteParameter(_0x1b712a,'deploy');},window['deleteTestParameter']=function(_0x4a61d3){deleteParameter(_0x4a61d3,'test');},window['deleteTemplateParameter']=function(_0x175293){deleteParameter(_0x175293,'template');};function renderTestParameters(){const _0x398579=document['getElementById']('test-parameters-list');if(!_0x398579)return;const _0x303c9f=state['selectedEnvData']?.['tests']?.[state['currentTest']],_0x32439a=_0x303c9f?.['parameters']||{},_0x460dc0=Object['entries'](_0x32439a),_0x318dd3=document['getElementById']('test-parameters-count');if(_0x318dd3)_0x318dd3['textContent']=_0x460dc0['length'];if(_0x460dc0['length']===0x0){_0x398579['innerHTML']='<div\x20class=\x22profile-list-empty\x22>No\x20parameters\x20defined</div>';return;}_0x398579['innerHTML']=_0x460dc0['map'](([_0x31471a,_0xfba406])=>{const _0x2df23b=getParameterTypeLabel(_0xfba406),_0x2427a9=_0xfba406['prompt']?.['label']||_0xfba406['label']||'';return'\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22profile-param-item\x22\x20data-name=\x22'+Utils['escapeHtml'](_0x31471a)+'\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22profile-item-key\x22>'+Utils['escapeHtml'](_0x31471a)+'</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22param-type-badge\x22>'+_0x2df23b+'</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22profile-item-value\x22>'+(_0x2427a9?Utils['escapeHtml'](_0x2427a9):'')+'</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20'+(_0xfba406['required']?'<span\x20class=\x22param-required\x22>Required</span>':'')+'\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22profile-item-actions\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20class=\x22profile-item-edit\x22\x20onclick=\x22editTestParameter(\x27'+Utils['escapeHtml'](_0x31471a)+'\x27)\x22\x20title=\x22Edit\x22>✏️</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20class=\x22profile-item-delete\x22\x20onclick=\x22deleteTestParameter(\x27'+Utils['escapeHtml'](_0x31471a)+'\x27)\x22\x20title=\x22Delete\x22>🗑</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20';})['join']('');}function renderTemplateParameters(){const _0x37b0a1=document['getElementById']('template-parameters-list');if(!_0x37b0a1)return;const _0x2cb76c=state['currentTemplateData']?.['parameters']||{},_0x4a1910=Array['isArray'](_0x2cb76c)?Object['fromEntries'](_0x2cb76c['map'](_0x1b42d0=>[_0x1b42d0['name'],_0x1b42d0])):_0x2cb76c,_0x70c139=Object['entries'](_0x4a1910),_0x47a389=document['getElementById']('template-parameters-count');if(_0x47a389)_0x47a389['textContent']=_0x70c139['length'];if(_0x70c139['length']===0x0){_0x37b0a1['innerHTML']='<div\x20class=\x22profile-list-empty\x22>No\x20parameters\x20defined</div>';return;}_0x37b0a1['innerHTML']=_0x70c139['map'](([_0x48a05c,_0x49459f])=>{const _0x28c334=getParameterTypeLabel(_0x49459f),_0x5c6f70=_0x49459f['prompt']?.['label']||_0x49459f['label']||'';return'\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22profile-param-item\x22\x20data-name=\x22'+Utils['escapeHtml'](_0x48a05c)+'\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22profile-item-key\x22>'+Utils['escapeHtml'](_0x48a05c)+'</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22param-type-badge\x22>'+_0x28c334+'</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22profile-item-value\x22>'+(_0x5c6f70?Utils['escapeHtml'](_0x5c6f70):'')+'</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20'+(_0x49459f['required']?'<span\x20class=\x22param-required\x22>Required</span>':'')+'\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22profile-item-actions\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20class=\x22profile-item-edit\x22\x20onclick=\x22editTemplateParameter(\x27'+Utils['escapeHtml'](_0x48a05c)+'\x27)\x22\x20title=\x22Edit\x22>✏️</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20class=\x22profile-item-delete\x22\x20onclick=\x22deleteTemplateParameter(\x27'+Utils['escapeHtml'](_0x48a05c)+'\x27)\x22\x20title=\x22Delete\x22>🗑</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20';})['join']('');}function getParameterTypeLabel(_0x30cecd){if(_0x30cecd['prompt'])return _0x30cecd['prompt']['type']||'text';const _0x4b1b73=_0x30cecd['type']||'text';if(_0x4b1b73==='select')return'list';return _0x4b1b73;}window['openAddTestParameterModal']=function(){openAddParameterModal('test');},window['openAddTemplateParameterModal']=function(){openAddParameterModal('template');};function openAddDeployProfileModal(){const _0xd8ef95=document['getElementById']('add-deploy-profile-modal'),_0x105a95=document['getElementById']('new-deploy-profile-name'),_0x226083=document['getElementById']('new-deploy-profile-description'),_0x583195=document['getElementById']('add-deploy-profile-error');_0x105a95['value']='',_0x226083['value']='',_0x583195['hidden']=!![],_0x105a95['classList']['remove']('input-error'),_0x226083['classList']['remove']('input-error'),_0xd8ef95['hidden']=![],_0x105a95['focus']();}function closeAddDeployProfileModal(){document['getElementById']('add-deploy-profile-modal')['hidden']=!![];}async function confirmAddDeployProfile(){const _0x6ecf34=document['getElementById']('new-deploy-profile-name'),_0x3b5c7a=document['getElementById']('new-deploy-profile-description'),_0x1fef51=document['getElementById']('add-deploy-profile-error'),_0x18d77b=_0x6ecf34['value']['trim'](),_0x49b1fc=_0x3b5c7a['value']['trim']();_0x6ecf34['classList']['remove']('input-error'),_0x3b5c7a['classList']['remove']('input-error'),_0x1fef51['hidden']=!![];if(!_0x18d77b){_0x6ecf34['classList']['add']('input-error'),_0x1fef51['textContent']='Profile\x20name\x20is\x20required',_0x1fef51['hidden']=![];return;}if(!/^[A-Za-z_][A-Za-z0-9_-]*$/['test'](_0x18d77b)){_0x6ecf34['classList']['add']('input-error'),_0x1fef51['textContent']='Profile\x20name\x20must\x20start\x20with\x20a\x20letter\x20or\x20underscore,\x20and\x20contain\x20only\x20letters,\x20numbers,\x20hyphens,\x20and\x20underscores',_0x1fef51['hidden']=![];return;}if(!_0x49b1fc){_0x3b5c7a['classList']['add']('input-error'),_0x1fef51['textContent']='Description\x20is\x20required',_0x1fef51['hidden']=![];return;}const _0x4a9a52=state['selectedEnvData']['deployment_profiles']||[];if(_0x4a9a52['find'](_0x545644=>_0x545644['name']['toLowerCase']()===_0x18d77b['toLowerCase']())){_0x6ecf34['classList']['add']('input-error'),_0x1fef51['textContent']='A\x20profile\x20with\x20this\x20name\x20already\x20exists',_0x1fef51['hidden']=![];return;}try{const _0x4bfd4d=await fetch('/environments/'+state['selectedEnv']+'/deployment-profiles',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'profileName':_0x18d77b,'description':_0x49b1fc})}),_0x4763f8=await _0x4bfd4d['json']();if(!_0x4bfd4d['ok']){_0x1fef51['textContent']=_0x4763f8['error']||'Failed\x20to\x20create\x20profile',_0x1fef51['hidden']=![];return;}await loadEnvironmentDetails(state['selectedEnv']),state['currentDeployProfile']=_0x18d77b,renderDeployProfiles(),closeAddDeployProfileModal(),Utils['showSuccess']('Deployment\x20profile\x20\x22'+_0x18d77b+'\x22\x20created');}catch(_0x3d98eb){_0x1fef51['textContent']=_0x3d98eb['message']||'Failed\x20to\x20create\x20profile',_0x1fef51['hidden']=![];}}function openDeleteDeployProfileModal(){if(!state['currentDeployProfile'])return;document['getElementById']('delete-deploy-profile-name')['textContent']=state['currentDeployProfile'],document['getElementById']('delete-deploy-profile-modal')['hidden']=![];}function closeDeleteDeployProfileModal(){document['getElementById']('delete-deploy-profile-modal')['hidden']=!![];}async function confirmDeleteDeployProfile(){if(!state['currentDeployProfile'])return;const _0x4a0236=state['currentDeployProfile'];try{const _0x1b29ca=await fetch('/environments/'+state['selectedEnv']+'/deployment-profiles/'+_0x4a0236,{'method':'DELETE'}),_0x4821ab=await _0x1b29ca['json']();if(!_0x1b29ca['ok']){Utils['showError'](_0x4821ab['error']||'Failed\x20to\x20delete\x20profile'),closeDeleteDeployProfileModal();return;}await loadEnvironmentDetails(state['selectedEnv']),state['currentDeployProfile']=null,state['currentDeployProfileData']=null,renderDeployProfiles(),closeDeleteDeployProfileModal(),Utils['showSuccess']('Deployment\x20profile\x20\x22'+_0x4a0236+'\x22\x20deleted');}catch(_0xfaeb42){Utils['showError'](_0xfaeb42['message']||'Failed\x20to\x20delete\x20profile'),closeDeleteDeployProfileModal();}}async function loadSecrets(){if(!state['selectedEnv']){state['secrets']=[];return;}try{const _0xbd2a19=await API['get']('/environments/'+state['selectedEnv']+'/secrets');state['secrets']=_0xbd2a19['secrets']||[];}catch(_0x1ad22e){console['error']('Failed\x20to\x20load\x20secrets:',_0x1ad22e),state['secrets']=[];}}function renderSecrets(){const _0x401f63=document['getElementById']('secrets-list'),_0x424369=document['getElementById']('secrets-empty'),_0x43853c=document['getElementById']('secrets-filter');if(!_0x401f63||!_0x424369)return;updateTabBadge('badge-secrets',state['secrets']?.['length']||0x0);const _0x5a35c6=_0x43853c?.['value']||'all',_0x409438=_0x5a35c6==='all'?state['secrets']:state['secrets']['filter'](_0x205b78=>{const _0x5c7f8b=_0x205b78['available_for']||[];return _0x5c7f8b['includes'](_0x5a35c6);});if(_0x409438['length']===0x0){_0x401f63['innerHTML']='',_0x401f63['hidden']=!![];state['secrets']['length']>0x0&&_0x5a35c6!=='all'?_0x424369['innerHTML']='\x0a\x20\x20\x20\x20\x20\x20\x20\x20<p>No\x20secrets\x20match\x20the\x20\x22'+_0x5a35c6+'\x22\x20filter.</p>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<p\x20class=\x22text-muted\x22>Try\x20selecting\x20\x22All\x22\x20to\x20see\x20all\x20secrets.</p>\x0a\x20\x20\x20\x20\x20\x20':_0x424369['innerHTML']='\x0a\x20\x20\x20\x20\x20\x20\x20\x20<p>No\x20secrets\x20configured.</p>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<p\x20class=\x22text-muted\x22>Secrets\x20can\x20be\x20referenced\x20in\x20builds,\x20tasks,\x20and\x20deployment\x20profiles\x20and\x20exposed\x20as\x20environment\x20variables\x20or\x20mounted\x20files.</p>\x0a\x20\x20\x20\x20\x20\x20';_0x424369['hidden']=![];return;}_0x401f63['hidden']=![],_0x424369['hidden']=!![],_0x401f63['innerHTML']=_0x409438['map'](_0x54b6c9=>{const _0x2e874d=_0x54b6c9['type']==='file'?'file':'value',_0x142013=_0x54b6c9['type']==='file'?'File':'Value',_0x589167=_0x54b6c9['type']==='file'?'<span\x20class=\x22secret-source\x22\x20title=\x22'+Utils['escapeHtml'](_0x54b6c9['source'])+'\x22>'+Utils['escapeHtml'](_0x54b6c9['source'])+'</span>':_0x54b6c9['value']?'':'<span\x20class=\x22secret-meta-text\x20warning\x22>No\x20value</span>',_0x474a02=_0x54b6c9['available_for']||[],_0x367b19='\x0a\x20\x20\x20\x20\x20\x20<span\x20class=\x22secret-availability-badges\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20'+(_0x474a02['includes']('build')?'<span\x20class=\x22availability-badge\x20build\x22>Build</span>':'')+'\x0a\x20\x20\x20\x20\x20\x20\x20\x20'+(_0x474a02['includes']('tasks')?'<span\x20class=\x22availability-badge\x20tasks\x22>Tasks</span>':'')+'\x0a\x20\x20\x20\x20\x20\x20\x20\x20'+(_0x474a02['includes']('deploy')?'<span\x20class=\x22availability-badge\x20deploy\x22>Deploy</span>':'')+'\x0a\x20\x20\x20\x20\x20\x20</span>\x0a\x20\x20\x20\x20',_0x43cc08=_0x54b6c9['git_remote']?'<span\x20class=\x22git-pat-badge\x22\x20title=\x22Git\x20PAT\x20for\x20'+Utils['escapeHtml'](_0x54b6c9['git_remote'])+'\x22>PAT:\x20'+Utils['escapeHtml'](_0x54b6c9['git_remote'])+'</span>':'';return'\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22secret-item\x22\x20data-secret=\x22'+Utils['escapeHtml'](_0x54b6c9['name'])+'\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22secret-info\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22secret-name\x22>'+Utils['escapeHtml'](_0x54b6c9['name'])+'</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22secret-meta\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20'+_0x367b19+'\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22secret-type-badge\x20'+_0x2e874d+'\x22>'+_0x142013+'</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20'+_0x43cc08+'\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20'+(_0x54b6c9['description']?'<span\x20class=\x22secret-description\x22\x20title=\x22'+Utils['escapeHtml'](_0x54b6c9['description'])+'\x22>'+Utils['escapeHtml'](_0x54b6c9['description'])+'</span>':'')+'\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22secret-meta-column\x22>'+_0x589167+'</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22secret-actions\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20class=\x22secret-edit\x22\x20title=\x22Edit\x20secret\x22\x20onclick=\x22openEditSecretModal(\x27'+Utils['escapeHtml'](_0x54b6c9['name'])+'\x27)\x22>✏️</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20class=\x22secret-delete\x22\x20title=\x22Delete\x20secret\x22\x20onclick=\x22openDeleteSecretModal(\x27'+Utils['escapeHtml'](_0x54b6c9['name'])+'\x27)\x22>🗑</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20';})['join']('');}function openAddSecretModal(){state['editingSecret']=null;const _0x47d9e5=document['getElementById']('secret-modal'),_0x295b10=document['getElementById']('secret-modal-title'),_0x2993fe=document['getElementById']('secret-name'),_0x6503cb=document['getElementById']('secret-description'),_0x529d34=document['getElementById']('secret-type-file'),_0x4af565=document['getElementById']('secret-type-value'),_0x121554=document['getElementById']('secret-source'),_0x3ffb6f=document['getElementById']('secret-value'),_0x36c4af=document['getElementById']('secret-modal-error'),_0x5d2d1c=document['getElementById']('secret-source-validation'),_0x6ace2b=document['getElementById']('secret-available-build'),_0x29a8fa=document['getElementById']('secret-available-tasks'),_0x55f1fb=document['getElementById']('secret-available-deploy'),_0x44a0cb=document['getElementById']('secret-expose-env'),_0x582740=document['getElementById']('secret-expose-file'),_0x18d449=document['getElementById']('secret-target');_0x295b10['textContent']='Add\x20Secret',_0x2993fe['value']='',_0x2993fe['disabled']=![],_0x6503cb['value']='',_0x4af565['checked']=!![],_0x529d34['checked']=![],_0x121554['value']='',resetSecretValueVisibility(''),_0x36c4af['hidden']=!![],_0x5d2d1c['hidden']=!![];const _0x3e8ef7=document['getElementById']('secrets-filter'),_0x10e714=_0x3e8ef7?.['value']||'all';_0x10e714==='all'?(_0x6ace2b['checked']=![],_0x29a8fa['checked']=!![],_0x55f1fb['checked']=![]):(_0x6ace2b['checked']=_0x10e714==='build',_0x29a8fa['checked']=_0x10e714==='tasks',_0x55f1fb['checked']=_0x10e714==='deploy');_0x44a0cb['checked']=!![],_0x582740['checked']=![],_0x18d449['value']='',handleSecretTypeChange(),resetGitPatFields(),updateGitPatVisibility(),updateExposeAsVisibility(),updateSecretTargetLabel();const _0x1b7ea5=document['getElementById']('secret-source-hint');_0x1b7ea5&&state['selectedEnvData']?.['path']&&(_0x1b7ea5['textContent']='Absolute\x20path,\x20or\x20relative\x20to:\x20'+state['selectedEnvData']['path']),_0x47d9e5['hidden']=![],_0x2993fe['focus']();}window['openEditSecretModal']=async function(_0x5e8ab3){state['editingSecret']=_0x5e8ab3;const _0x2a5305=state['secrets']['find'](_0x2b8650=>_0x2b8650['name']===_0x5e8ab3);if(!_0x2a5305){Utils['showError']('Secret\x20not\x20found');return;}const _0x57e012=document['getElementById']('secret-modal'),_0x5bd50e=document['getElementById']('secret-modal-title'),_0xdfb7f6=document['getElementById']('secret-name'),_0x1064b2=document['getElementById']('secret-description'),_0x4b7ae7=document['getElementById']('secret-type-file'),_0x2d9db4=document['getElementById']('secret-type-value'),_0x13bde5=document['getElementById']('secret-source'),_0x5876e3=document['getElementById']('secret-value'),_0x47c8c5=document['getElementById']('secret-modal-error'),_0x58c137=document['getElementById']('secret-source-validation'),_0x9bb03=document['getElementById']('secret-available-build'),_0x544131=document['getElementById']('secret-available-tasks'),_0x27db74=document['getElementById']('secret-available-deploy'),_0x501352=document['getElementById']('secret-expose-env'),_0x25969e=document['getElementById']('secret-expose-file'),_0x2100c2=document['getElementById']('secret-target');_0x5bd50e['textContent']='Edit\x20Secret',_0xdfb7f6['value']=_0x5e8ab3,_0xdfb7f6['disabled']=!![],_0x1064b2['value']=_0x2a5305['description']||'';_0x2a5305['type']==='file'?(_0x4b7ae7['checked']=!![],_0x2d9db4['checked']=![],_0x13bde5['value']=_0x2a5305['source']||'',resetSecretValueVisibility('')):(_0x2d9db4['checked']=!![],_0x4b7ae7['checked']=![],_0x13bde5['value']='',resetSecretValueVisibility(_0x2a5305['value']||''),_0x5876e3['placeholder']='Enter\x20secret\x20value');const _0x5309ac=_0x2a5305['available_for']||[];_0x9bb03['checked']=_0x5309ac['includes']('build'),_0x544131['checked']=_0x5309ac['includes']('tasks'),_0x27db74['checked']=_0x5309ac['includes']('deploy');_0x2a5305['expose_as']==='file'?(_0x25969e['checked']=!![],_0x501352['checked']=![]):(_0x501352['checked']=!![],_0x25969e['checked']=![]);_0x2100c2['value']=_0x2a5305['target']||'',setGitPatFields(_0x2a5305['git_remote']),_0x47c8c5['hidden']=!![],_0x58c137['hidden']=!![],handleSecretTypeChange(),updateGitPatVisibility(),updateExposeAsVisibility(),updateSecretTargetLabel();const _0x527c8e=document['getElementById']('secret-source-hint');_0x527c8e&&state['selectedEnvData']?.['path']&&(_0x527c8e['textContent']='Absolute\x20path,\x20or\x20relative\x20to:\x20'+state['selectedEnvData']['path']),_0x57e012['hidden']=![];};function closeSecretModal(){document['getElementById']('secret-modal')['hidden']=!![],state['editingSecret']=null,document['getElementById']('secret-value')['placeholder']='Enter\x20secret\x20value\x20(e.g.,\x20SSH\x20private\x20key\x20content)',resetSecretValueVisibility('');}function handleSecretTypeChange(){const _0x1d14c1=document['getElementById']('secret-type-file')['checked'];document['getElementById']('secret-source-row')['hidden']=!_0x1d14c1,document['getElementById']('secret-value-row')['hidden']=_0x1d14c1;}function updateExposeAsVisibility(){const _0x3e8424=document['getElementById']('secret-available-tasks')['checked'],_0x5644d0=document['getElementById']('secret-available-deploy')['checked'],_0x4c3d3c=document['getElementById']('secret-git-pat-checkbox')['checked'],_0x7f7911=(_0x3e8424||_0x5644d0)&&!_0x4c3d3c;document['getElementById']('secret-expose-as-row')['hidden']=!_0x7f7911,document['getElementById']('secret-target-row')['hidden']=!_0x7f7911;}function updateSecretTargetLabel(){const _0x5b87ec=document['getElementById']('secret-expose-file')['checked'],_0x87c6c4=document['getElementById']('secret-target-label'),_0xbfeade=document['getElementById']('secret-target-hint'),_0x469e9e=document['getElementById']('secret-target');_0x5b87ec?(_0x87c6c4['innerHTML']='Container\x20Path\x20<span\x20class=\x22required\x22>*</span>',_0xbfeade['textContent']='Absolute\x20path\x20where\x20file\x20will\x20be\x20mounted\x20in\x20container',_0x469e9e['placeholder']='e.g.,\x20/secrets/key.pem'):(_0x87c6c4['innerHTML']='Variable\x20Name\x20<span\x20class=\x22required\x22>*</span>',_0xbfeade['textContent']='The\x20environment\x20variable\x20name',_0x469e9e['placeholder']='e.g.,\x20SSH_PRIVATE_KEY');}function updateGitPatVisibility(){document['getElementById']('secret-git-pat-row')['hidden']=![];}function handleGitPatCheckboxChange(){const _0x52df18=document['getElementById']('secret-git-pat-checkbox')['checked'],_0x482f4a=document['getElementById']('secret-git-host-row');_0x482f4a['hidden']=!_0x52df18,!_0x52df18&&(document['getElementById']('secret-git-custom-host-row')['hidden']=!![],document['getElementById']('secret-git-host')['value']='',document['getElementById']('secret-git-custom-host')['value']=''),updateExposeAsVisibility();}function handleGitHostChange(){const _0x440aa6=document['getElementById']('secret-git-host')['value'],_0x2e7dee=document['getElementById']('secret-git-custom-host-row');_0x2e7dee['hidden']=_0x440aa6!=='custom',_0x440aa6!=='custom'&&(document['getElementById']('secret-git-custom-host')['value']='');}function getGitRemoteValue(){const _0x28a9d8=document['getElementById']('secret-git-pat-checkbox')['checked'];if(!_0x28a9d8)return null;const _0x3848cd=document['getElementById']('secret-git-host')['value'];if(!_0x3848cd)return null;if(_0x3848cd==='custom'){const _0x5105a4=document['getElementById']('secret-git-custom-host')['value']['trim']();return _0x5105a4||null;}return _0x3848cd;}function setGitPatFields(_0x2a52db){const _0x3f44c9=document['getElementById']('secret-git-pat-checkbox'),_0x58db96=document['getElementById']('secret-git-host'),_0x4146e0=document['getElementById']('secret-git-custom-host'),_0x2b98ab=document['getElementById']('secret-git-host-row'),_0x5a6fa1=document['getElementById']('secret-git-custom-host-row');if(!_0x2a52db){_0x3f44c9['checked']=![],_0x58db96['value']='',_0x4146e0['value']='',_0x2b98ab['hidden']=!![],_0x5a6fa1['hidden']=!![];return;}_0x3f44c9['checked']=!![],_0x2b98ab['hidden']=![];const _0x26e0b3=['github.com','dev.azure.com','bitbucket.org','gitlab.com'];_0x26e0b3['includes'](_0x2a52db['toLowerCase']())?(_0x58db96['value']=_0x2a52db['toLowerCase'](),_0x5a6fa1['hidden']=!![],_0x4146e0['value']=''):(_0x58db96['value']='custom',_0x5a6fa1['hidden']=![],_0x4146e0['value']=_0x2a52db);}function resetGitPatFields(){document['getElementById']('secret-git-pat-checkbox')['checked']=![],document['getElementById']('secret-git-host')['value']='',document['getElementById']('secret-git-custom-host')['value']='',document['getElementById']('secret-git-host-row')['hidden']=!![],document['getElementById']('secret-git-custom-host-row')['hidden']=!![];}async function validateSecretSourcePath(){const _0x2392ba=document['getElementById']('secret-source'),_0x68b9b2=document['getElementById']('secret-source-validation'),_0x36b237=_0x2392ba['value']['trim']();if(!_0x36b237){_0x68b9b2['hidden']=!![];return;}try{const _0x545f70=await fetch('/environments/'+state['selectedEnv']+'/secrets/_validate/validate',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'source':_0x36b237})}),_0x7c04f7=await _0x545f70['json']();if(_0x7c04f7['exists']&&_0x7c04f7['isFile'])_0x68b9b2['className']='field-validation\x20valid',_0x68b9b2['innerHTML']='✓\x20File\x20exists\x20('+formatBytes(_0x7c04f7['size'])+')';else _0x7c04f7['exists']&&!_0x7c04f7['isFile']?(_0x68b9b2['className']='field-validation\x20warning',_0x68b9b2['innerHTML']='⚠\x20Path\x20exists\x20but\x20is\x20not\x20a\x20file'):(_0x68b9b2['className']='field-validation\x20warning',_0x68b9b2['innerHTML']='⚠\x20File\x20not\x20found');_0x68b9b2['hidden']=![];}catch(_0x22687e){_0x68b9b2['className']='field-validation\x20warning',_0x68b9b2['innerHTML']='⚠\x20Could\x20not\x20validate\x20path',_0x68b9b2['hidden']=![];}}function formatBytes(_0x2987a5){if(_0x2987a5===0x0)return'0\x20B';const _0x2fc43d=0x400,_0x561950=['B','KB','MB','GB'],_0x17d813=Math['floor'](Math['log'](_0x2987a5)/Math['log'](_0x2fc43d));return parseFloat((_0x2987a5/Math['pow'](_0x2fc43d,_0x17d813))['toFixed'](0x1))+'\x20'+_0x561950[_0x17d813];}function resetSecretValueVisibility(_0x2bafd4){secretValueStore=_0x2bafd4,secretValueVisible=![],lastCursorPosition=0x0;const _0x3fd04c=document['getElementById']('secret-value'),_0xa7b989=document['querySelector']('.secret-toggle-visibility');_0x3fd04c&&(_0x3fd04c['value']=_0x2bafd4?'•'['repeat'](_0x2bafd4['length']):''),_0xa7b989&&(_0xa7b989['hidden']=![],_0xa7b989['querySelector']('.eye-open')['style']['display']='block',_0xa7b989['querySelector']('.eye-closed')['style']['display']='none');}function toggleSecretValueVisibility(){const _0xcf3f48=document['getElementById']('secret-value'),_0x1a20ab=document['querySelector']('.secret-toggle-visibility');secretValueVisible=!secretValueVisible,secretValueVisible?(_0xcf3f48['value']=secretValueStore,_0x1a20ab['querySelector']('.eye-open')['style']['display']='none',_0x1a20ab['querySelector']('.eye-closed')['style']['display']='block'):(_0xcf3f48['value']=secretValueStore?'•'['repeat'](secretValueStore['length']):'',_0x1a20ab['querySelector']('.eye-open')['style']['display']='block',_0x1a20ab['querySelector']('.eye-closed')['style']['display']='none');}function handleSecretValueBeforeInput(_0x480d67){if(!secretValueVisible){const _0x590af0=_0x480d67['target'];lastCursorPosition=_0x590af0['selectionStart'],_0x590af0['dataset']['selectionEnd']=_0x590af0['selectionEnd'];}}function handleSecretValueInput(_0x227cc1){const _0x40a536=_0x227cc1['target'];if(secretValueVisible)secretValueStore=_0x40a536['value'];else{const _0x42a357=_0x227cc1['inputType'],_0x59580e=_0x40a536['value'],_0x101a9e='•',_0x178841=_0x40a536['selectionStart'],_0x2ab64f=_0x59580e['replace'](new RegExp(_0x101a9e,'g'),''),_0x5e7b6b=secretValueStore['length'],_0x25b80d=lastCursorPosition,_0x239dd0=parseInt(_0x40a536['dataset']['selectionEnd']||_0x25b80d),_0x1d54eb=_0x239dd0>_0x25b80d;if(_0x59580e==='')secretValueStore='',lastCursorPosition=0x0;else{if(_0x42a357&&_0x42a357['startsWith']('delete')){if(_0x1d54eb)secretValueStore=secretValueStore['slice'](0x0,_0x25b80d)+secretValueStore['slice'](_0x239dd0),lastCursorPosition=_0x25b80d;else{const _0x48b77e=_0x5e7b6b-_0x59580e['length'];_0x42a357==='deleteContentBackward'?secretValueStore=secretValueStore['slice'](0x0,_0x178841)+secretValueStore['slice'](_0x178841+_0x48b77e):secretValueStore=secretValueStore['slice'](0x0,_0x178841)+secretValueStore['slice'](_0x178841+_0x48b77e),lastCursorPosition=_0x178841;}}else{if(_0x2ab64f['length']>0x0){const _0x3b5d83=_0x59580e['length']-_0x2ab64f['length'];if(_0x3b5d83===0x0)secretValueStore=_0x2ab64f,lastCursorPosition=_0x2ab64f['length'];else _0x1d54eb?(secretValueStore=secretValueStore['slice'](0x0,_0x25b80d)+_0x2ab64f+secretValueStore['slice'](_0x239dd0),lastCursorPosition=_0x25b80d+_0x2ab64f['length']):(secretValueStore=secretValueStore['slice'](0x0,_0x25b80d)+_0x2ab64f+secretValueStore['slice'](_0x25b80d),lastCursorPosition=_0x25b80d+_0x2ab64f['length']);}else _0x59580e['length']<_0x5e7b6b?(secretValueStore=secretValueStore['slice'](0x0,_0x59580e['length']),lastCursorPosition=_0x178841):lastCursorPosition=_0x178841;}}const _0x327c74=_0x101a9e['repeat'](secretValueStore['length']);_0x40a536['value']=_0x327c74,_0x40a536['setSelectionRange'](lastCursorPosition,lastCursorPosition),delete _0x40a536['dataset']['selectionEnd'];}}function handleSecretFileImport(_0x596031){const _0x5edfd0=_0x596031['target']['files'][0x0];if(!_0x5edfd0)return;const _0x248f4b=new FileReader();_0x248f4b['onload']=function(_0x41c3fa){const _0x2a9523=_0x41c3fa['target']['result'];document['getElementById']('secret-value')['value']=_0x2a9523,secretValueStore=_0x2a9523,secretValueVisible=!![];const _0x16d2f2=document['querySelector']('.secret-toggle-visibility');_0x16d2f2&&(_0x16d2f2['querySelector']('.eye-open')['style']['display']='none',_0x16d2f2['querySelector']('.eye-closed')['style']['display']='block');},_0x248f4b['onerror']=function(){Utils['showError']('Failed\x20to\x20read\x20file');},_0x248f4b['readAsText'](_0x5edfd0),_0x596031['target']['value']='';}async function saveSecret(){const _0x19b490=document['getElementById']('secret-name'),_0x370045=document['getElementById']('secret-description'),_0x598a32=document['getElementById']('secret-type-file')['checked'],_0x2c8263=document['getElementById']('secret-source'),_0x5507c9=document['getElementById']('secret-value'),_0x2d9705=document['getElementById']('secret-modal-error'),_0x218b43=document['getElementById']('secret-available-build'),_0x560df5=document['getElementById']('secret-available-tasks'),_0x3560e3=document['getElementById']('secret-available-deploy'),_0x19f02d=document['getElementById']('secret-expose-file')['checked'],_0x335061=document['getElementById']('secret-target'),_0x49a566=_0x19b490['value']['trim'](),_0x250232=_0x370045['value']['trim'](),_0x241a0b=_0x598a32?'file':'value',_0x47ea9b=_0x2c8263['value']['trim'](),_0x1e27e3=secretValueStore,_0x4fa650=_0x19f02d?'file':'env_var',_0x43aeec=_0x335061['value']['trim'](),_0x342145=getGitRemoteValue(),_0x3aa27e=document['getElementById']('secret-git-pat-checkbox')['checked'],_0xc6de93=[];if(_0x218b43['checked'])_0xc6de93['push']('build');if(_0x560df5['checked'])_0xc6de93['push']('tasks');if(_0x3560e3['checked'])_0xc6de93['push']('deploy');const _0x4f4a8d=_0x560df5['checked']||_0x3560e3['checked'];_0x2d9705['hidden']=!![];if(!_0x49a566){_0x2d9705['textContent']='Secret\x20name\x20is\x20required',_0x2d9705['hidden']=![],_0x19b490['focus']();return;}if(!/^[A-Za-z_][A-Za-z0-9_]*$/['test'](_0x49a566)){_0x2d9705['textContent']='Secret\x20name\x20must\x20start\x20with\x20a\x20letter\x20or\x20underscore,\x20and\x20contain\x20only\x20letters,\x20numbers,\x20and\x20underscores',_0x2d9705['hidden']=![],_0x19b490['focus']();return;}if(_0x598a32&&!_0x47ea9b){_0x2d9705['textContent']='File\x20path\x20is\x20required\x20for\x20file-type\x20secrets',_0x2d9705['hidden']=![],_0x2c8263['focus']();return;}if(!_0x598a32&&!_0x1e27e3){_0x2d9705['textContent']='Value\x20is\x20required\x20for\x20value-type\x20secrets',_0x2d9705['hidden']=![],_0x5507c9['focus']();return;}if(_0xc6de93['length']===0x0){_0x2d9705['textContent']='At\x20least\x20one\x20availability\x20option\x20must\x20be\x20selected\x20(Build,\x20Tasks,\x20or\x20Deploy)',_0x2d9705['hidden']=![];return;}if(_0x4f4a8d&&!_0x3aa27e){if(!_0x43aeec){_0x2d9705['textContent']=_0x4fa650==='env_var'?'Variable\x20name\x20is\x20required\x20when\x20available\x20for\x20Tasks\x20or\x20Deploy':'Container\x20path\x20is\x20required\x20when\x20available\x20for\x20Tasks\x20or\x20Deploy',_0x2d9705['hidden']=![],_0x335061['focus']();return;}if(_0x4fa650==='env_var'&&!/^[A-Za-z_][A-Za-z0-9_]*$/['test'](_0x43aeec)){_0x2d9705['textContent']='Variable\x20name\x20must\x20start\x20with\x20a\x20letter\x20or\x20underscore,\x20and\x20contain\x20only\x20letters,\x20numbers,\x20and\x20underscores',_0x2d9705['hidden']=![],_0x335061['focus']();return;}if(_0x4fa650==='file'&&!_0x43aeec['startsWith']('/')){_0x2d9705['textContent']='Container\x20path\x20must\x20be\x20an\x20absolute\x20path\x20(start\x20with\x20/)',_0x2d9705['hidden']=![],_0x335061['focus']();return;}if(_0x4fa650==='file'&&!_0x598a32){_0x2d9705['textContent']='Value-type\x20secrets\x20cannot\x20be\x20exposed\x20as\x20files.\x20Select\x20\x22File\x20on\x20host\x22\x20as\x20source\x20type\x20or\x20expose\x20as\x20\x22Environment\x20Variable\x22.',_0x2d9705['hidden']=![];return;}if(_0x4fa650==='env_var'&&_0x598a32){_0x2d9705['textContent']='File-type\x20secrets\x20cannot\x20be\x20exposed\x20as\x20environment\x20variables.\x20Select\x20\x22Direct\x20value\x22\x20as\x20source\x20type\x20or\x20expose\x20as\x20\x22File\x20(bind\x20mount)\x22.',_0x2d9705['hidden']=![];return;}}if(_0x3aa27e){const _0x21c774=document['getElementById']('secret-git-host'),_0x3dff6c=document['getElementById']('secret-git-custom-host'),_0x57b27d=_0x21c774['value'];if(!_0x57b27d){_0x2d9705['textContent']='Please\x20select\x20a\x20Git\x20host\x20for\x20the\x20PAT',_0x2d9705['hidden']=![],_0x21c774['focus']();return;}if(_0x57b27d==='custom'){const _0x3dcb5d=_0x3dff6c['value']['trim']();if(!_0x3dcb5d){_0x2d9705['textContent']='Please\x20enter\x20a\x20custom\x20Git\x20hostname',_0x2d9705['hidden']=![],_0x3dff6c['focus']();return;}if(!/^[a-zA-Z0-9]([a-zA-Z0-9\-\.]*[a-zA-Z0-9])?$/['test'](_0x3dcb5d)){_0x2d9705['textContent']='Invalid\x20hostname\x20format.\x20Use\x20a\x20valid\x20hostname\x20like\x20\x22git.mycompany.com\x22',_0x2d9705['hidden']=![],_0x3dff6c['focus']();return;}}}try{const _0x333a27={'type':_0x241a0b,'description':_0x250232,'available_for':_0xc6de93,..._0x4f4a8d&&!_0x3aa27e?{'expose_as':_0x4fa650,'target':_0x43aeec}:{},..._0x598a32?{'source':_0x47ea9b}:{},...!_0x598a32&&_0x1e27e3?{'value':_0x1e27e3}:{},'git_remote':_0x342145};state['editingSecret']?(await API['put']('/environments/'+state['selectedEnv']+'/secrets/'+_0x49a566,_0x333a27),Utils['showSuccess']('Secret\x20\x22'+_0x49a566+'\x22\x20updated')):(_0x333a27['secretName']=_0x49a566,await API['post']('/environments/'+state['selectedEnv']+'/secrets',_0x333a27),Utils['showSuccess']('Secret\x20\x22'+_0x49a566+'\x22\x20created')),closeSecretModal(),await loadSecrets(),renderSecrets();}catch(_0x286b5b){_0x2d9705['textContent']=_0x286b5b['message']||'Failed\x20to\x20save\x20secret',_0x2d9705['hidden']=![];}}window['openDeleteSecretModal']=function(_0x29248d){document['getElementById']('delete-secret-name')['textContent']=_0x29248d,document['getElementById']('delete-secret-modal')['hidden']=![],document['getElementById']('delete-secret-modal')['dataset']['secretName']=_0x29248d;};function closeDeleteSecretModal(){document['getElementById']('delete-secret-modal')['hidden']=!![];}async function confirmDeleteSecret(){const _0x17d0af=document['getElementById']('delete-secret-modal')['dataset']['secretName'];try{await API['delete']('/environments/'+state['selectedEnv']+'/secrets/'+_0x17d0af),Utils['showSuccess']('Secret\x20\x22'+_0x17d0af+'\x22\x20deleted'),closeDeleteSecretModal(),await loadSecrets(),renderSecrets();}catch(_0x28f98a){Utils['showError'](_0x28f98a['message']||'Failed\x20to\x20delete\x20secret'),closeDeleteSecretModal();}}function loadConnections(){if(!state['selectedEnvData'])return;!state['selectedEnvData']['external_connections']&&(state['selectedEnvData']['external_connections']=[]);}function renderConnections(){const _0x170d4e=document['getElementById']('connections-list'),_0x69ed80=document['getElementById']('connections-empty');if(!_0x170d4e||!_0x69ed80)return;const _0x4c4f76=state['selectedEnvData']?.['external_connections']||[];if(_0x4c4f76['length']===0x0){_0x170d4e['innerHTML']='',_0x170d4e['hidden']=!![],_0x69ed80['hidden']=![];return;}_0x170d4e['hidden']=![],_0x69ed80['hidden']=!![],_0x170d4e['innerHTML']=_0x4c4f76['map'](_0x351802=>{const _0xb9d210={'sqlserver':'SQL\x20Server','ibmi':'IBM\x20i','ssh':'SSH'},_0x280d79=_0xb9d210[_0x351802['type']]||_0x351802['type'],_0x5964a1=_0x351802['type']==='ibmi'?_0x351802['config']?.['features']||[]:[],_0x24e77d=_0x5964a1['map'](_0x10ce13=>'<span\x20class=\x22connection-feature-tag\x22>'+Utils['escapeHtml'](_0x10ce13)+'</span>')['join'](''),_0x5b1e85=_0x351802['available_for']||[],_0xe9ef6f='\x0a\x20\x20\x20\x20\x20\x20<span\x20class=\x22secret-availability-badges\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20'+(_0x5b1e85['includes']('tasks')?'<span\x20class=\x22availability-badge\x20tasks\x22>Tasks</span>':'')+'\x0a\x20\x20\x20\x20\x20\x20\x20\x20'+(_0x5b1e85['includes']('deploy')?'<span\x20class=\x22availability-badge\x20deploy\x22>Deploy</span>':'')+'\x0a\x20\x20\x20\x20\x20\x20</span>';return'\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22connection-item\x22\x20data-connection-id=\x22'+Utils['escapeHtml'](_0x351802['id'])+'\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22connection-info\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22connection-name\x22>'+Utils['escapeHtml'](_0x351802['name'])+'</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22connection-meta\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20'+_0xe9ef6f+'\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22connection-type-badge\x20'+_0x351802['type']+'\x22>'+_0x280d79+'</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20'+_0x24e77d+'\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20'+(_0x351802['description']?'<span\x20class=\x22connection-description\x22>'+Utils['escapeHtml'](_0x351802['description'])+'</span>':'')+'\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22connection-host\x22>'+Utils['escapeHtml'](_0x351802['config']?.['host']||'')+'</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22connection-actions\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20class=\x22connection-edit\x22\x20title=\x22Edit\x20connection\x22\x20onclick=\x22openEditConnectionModal(\x27'+Utils['escapeHtml'](_0x351802['id'])+'\x27)\x22>✏️</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20class=\x22connection-delete\x22\x20title=\x22Delete\x20connection\x22\x20onclick=\x22openDeleteConnectionModal(\x27'+Utils['escapeHtml'](_0x351802['id'])+'\x27)\x22>🗑</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20</div>';})['join']('');}function openAddConnectionModal(){state['editingConnection']=null,document['getElementById']('connection-modal-title')['textContent']='Add\x20Connection',document['getElementById']('connection-name')['value']='',document['getElementById']('connection-description')['value']='',document['getElementById']('connection-host')['value']='',document['getElementById']('connection-verify-cert')['checked']=!![],document['getElementById']('connection-verify-cert-warning')['hidden']=!![],document['getElementById']('connection-database')['value']='',document['getElementById']('connection-user')['value']='',document['getElementById']('connection-password')['value']='',document['getElementById']('connection-password')['type']='password',resetPasswordToggleIcon(),resetSshKeyVisibility(''),document['getElementById']('connection-ssh-public-key')['value']='',document['getElementById']('connection-pui-base-url')['value']='',document['getElementById']('connection-pui-render-path')['value']='',document['getElementById']('connection-pui-launch-path')['value']='',document['getElementById']('connection-build-library-prefix')['value']='AITSK',document['getElementById']('connection-build-repo')['value']='',document['getElementById']('connection-build-path')['value']='',document['querySelectorAll']('input[name=\x22connection-type\x22]')['forEach'](_0x885374=>_0x885374['disabled']=![]),document['getElementById']('connection-type-sqlserver')['checked']=!![],document['getElementById']('feature-sql')['checked']=!![],document['getElementById']('feature-build')['checked']=![],document['getElementById']('feature-interactive')['checked']=![],document['getElementById']('feature-ssh')['checked']=![],document['getElementById']('feature-ssh')['disabled']=![],document['getElementById']('feature-sync')['checked']=![],document['getElementById']('connection-available-tasks')['checked']=!![],document['getElementById']('connection-available-deploy')['checked']=![];const _0x16afd9=document['getElementById']('connection-modal-error');_0x16afd9['hidden']=!![],_0x16afd9['textContent']='',clearConnectionTestResult(),updateConnectionFormVisibility(),document['getElementById']('connection-modal')['hidden']=![];}window['openEditConnectionModal']=function(_0x32c765){const _0x5f2503=state['selectedEnvData']?.['external_connections']||[],_0x1fce95=_0x5f2503['find'](_0x555448=>_0x555448['id']===_0x32c765);if(!_0x1fce95)return;state['editingConnection']=_0x32c765,document['getElementById']('connection-modal-title')['textContent']='Edit\x20Connection',document['getElementById']('connection-name')['value']=_0x1fce95['name']||'',document['getElementById']('connection-description')['value']=_0x1fce95['description']||'',document['getElementById']('connection-host')['value']=_0x1fce95['config']?.['host']||'';const _0x3b1ebe=_0x1fce95['config']?.['verify_db_server_certificate']!==![];document['getElementById']('connection-verify-cert')['checked']=_0x3b1ebe,document['getElementById']('connection-verify-cert-warning')['hidden']=_0x3b1ebe,document['getElementById']('connection-database')['value']=_0x1fce95['config']?.['database']||'',document['getElementById']('connection-user')['value']=_0x1fce95['config']?.['user']||'',document['getElementById']('connection-password')['value']=_0x1fce95['password']||'',document['getElementById']('connection-password')['type']='password',resetPasswordToggleIcon(),resetSshKeyVisibility(_0x1fce95['ssh_private_key']||''),document['getElementById']('connection-ssh-public-key')['value']=_0x1fce95['ssh_public_key']||'',document['getElementById']('connection-pui-base-url')['value']=_0x1fce95['config']?.['pui_base_url']||'',document['getElementById']('connection-pui-render-path')['value']=_0x1fce95['config']?.['pui_render_path']||'',document['getElementById']('connection-pui-launch-path')['value']=_0x1fce95['config']?.['pui_launch_path']||'',document['getElementById']('connection-build-library-prefix')['value']=_0x1fce95['config']?.['build_library_prefix']||'AITSK',populateBuildRepoSelect(_0x1fce95['config']?.['build_repo']||''),document['getElementById']('connection-build-path')['value']=_0x1fce95['config']?.['build_path']||'',document['querySelectorAll']('input[name=\x22connection-type\x22]')['forEach'](_0x30502c=>{_0x30502c['disabled']=!![],_0x30502c['checked']=_0x30502c['value']===_0x1fce95['type'];});if(_0x1fce95['type']==='ibmi'){const _0x11f5f4=_0x1fce95['config']?.['features']||[];document['getElementById']('feature-sql')['checked']=_0x11f5f4['includes']('sql'),document['getElementById']('feature-build')['checked']=_0x11f5f4['includes']('build'),document['getElementById']('feature-interactive')['checked']=_0x11f5f4['includes']('interactive'),document['getElementById']('feature-ssh')['checked']=_0x11f5f4['includes']('ssh'),document['getElementById']('feature-sync')['checked']=_0x11f5f4['includes']('sync'),_0x11f5f4['includes']('sync')?document['getElementById']('feature-ssh')['disabled']=!![]:document['getElementById']('feature-ssh')['disabled']=![];}else document['getElementById']('feature-sql')['checked']=!![],document['getElementById']('feature-build')['checked']=![],document['getElementById']('feature-interactive')['checked']=![],document['getElementById']('feature-ssh')['checked']=![],document['getElementById']('feature-ssh')['disabled']=![],document['getElementById']('feature-sync')['checked']=![];const _0x54501d=_0x1fce95['available_for']||[];document['getElementById']('connection-available-tasks')['checked']=_0x54501d['includes']('tasks'),document['getElementById']('connection-available-deploy')['checked']=_0x54501d['includes']('deploy');const _0x518815=document['getElementById']('connection-modal-error');_0x518815['hidden']=!![],_0x518815['textContent']='',clearConnectionTestResult(),updateConnectionFormVisibility(),document['getElementById']('connection-modal')['hidden']=![];};function isFullyQualifiedHostname(_0x518d4a){if(!_0x518d4a||typeof _0x518d4a!=='string')return![];return/^[a-zA-Z0-9]([a-zA-Z0-9-]*[a-zA-Z0-9])?(\.[a-zA-Z0-9]([a-zA-Z0-9-]*[a-zA-Z0-9])?)+$/['test'](_0x518d4a);}function syncHostToPuiBaseUrl(){const _0x438e1e=document['querySelector']('input[name=\x22connection-type\x22]:checked')?.['value'];if(_0x438e1e!=='ibmi')return;if(!document['getElementById']('feature-interactive')['checked'])return;const _0x13efe8=document['getElementById']('connection-host')['value']['trim'](),_0x16422e=document['getElementById']('connection-pui-base-url'),_0x28a3c5=_0x16422e['value']['trim']();if(!_0x13efe8)return;if(!_0x28a3c5)_0x16422e['value']='https://'+_0x13efe8;else try{const _0x33c071=new URL(_0x28a3c5);_0x33c071['hostname']=_0x13efe8,_0x16422e['value']=_0x33c071['origin'];}catch{}}function syncPuiBaseUrlToHost(){const _0x3e6212=document['querySelector']('input[name=\x22connection-type\x22]:checked')?.['value'];if(_0x3e6212!=='ibmi')return;const _0x632e7=document['getElementById']('connection-pui-base-url')['value']['trim']();if(!_0x632e7)return;try{const _0x22b0e6=new URL(_0x632e7),_0x538729=_0x22b0e6['hostname'];_0x538729&&(document['getElementById']('connection-host')['value']=_0x538729);}catch{}}function populateBuildRepoSelect(_0x312ecc){const _0x1a8232=document['getElementById']('connection-build-repo'),_0x2df668=state['selectedEnvData']?.['repos']||[];_0x1a8232['innerHTML']='<option\x20value=\x22\x22>—\x20Select\x20a\x20repo\x20—</option>'+_0x2df668['map'](_0x24c60c=>'<option\x20value=\x22'+Utils['escapeHtml'](_0x24c60c['name'])+'\x22'+(_0x24c60c['name']===_0x312ecc?'\x20selected':'')+'>'+Utils['escapeHtml'](_0x24c60c['name'])+'</option>')['join']('');}function updateConnectionFormVisibility(){const _0x468979=document['querySelector']('input[name=\x22connection-type\x22]:checked')?.['value']||'sqlserver',_0x46524c=_0x468979==='ibmi',_0x2517da=_0x468979==='ssh',_0x526c9e=_0x468979==='sqlserver',_0x459378=document['getElementById']('feature-sql')['checked'],_0x22350a=document['getElementById']('feature-build')['checked'],_0x3c78e8=document['getElementById']('feature-interactive')['checked'],_0x54a68c=document['getElementById']('feature-ssh')['checked'],_0x79267f=document['getElementById']('feature-sync')['checked'],_0x2c9fa0=document['getElementById']('connection-available-tasks')['checked'];document['getElementById']('connection-database-row')['hidden']=!_0x526c9e;const _0x486d15=_0x526c9e||_0x46524c&&_0x459378;document['getElementById']('connection-verify-cert-row')['hidden']=!_0x486d15,document['getElementById']('connection-features-row')['hidden']=!_0x46524c,document['getElementById']('connection-pui-settings')['hidden']=!(_0x46524c&&_0x3c78e8),document['getElementById']('connection-ssh-settings')['hidden']=!(_0x2517da||_0x46524c&&(_0x54a68c||_0x22350a)),document['getElementById']('connection-password-row')['hidden']=!(_0x526c9e||_0x46524c&&(_0x459378||_0x3c78e8));const _0x3c68e9=document['getElementById']('connection-build-repo-row'),_0x306a7a=document['getElementById']('connection-build-path-row'),_0x4b6538=_0x46524c&&_0x22350a;_0x3c68e9['hidden']=!_0x4b6538,_0x306a7a['hidden']=!_0x4b6538;_0x4b6538&&populateBuildRepoSelect(document['getElementById']('connection-build-repo')['value']);const _0x255251=document['getElementById']('connection-build-library-prefix-row'),_0x4f5545=_0x46524c&&_0x22350a&&_0x2c9fa0;_0x255251['hidden']=!_0x4f5545;!_0x4f5545&&(document['getElementById']('connection-build-library-prefix')['value']=document['getElementById']('connection-build-library-prefix')['value']||'AITSK');document['getElementById']('connection-ibmi-helper-row')['hidden']=!_0x46524c;const _0x713cde=_0x526c9e||_0x46524c&&_0x459378,_0x170fd6=_0x46524c&&(_0x54a68c||_0x22350a||_0x79267f)||_0x2517da;document['getElementById']('connection-test-row')['hidden']=!(_0x713cde||_0x170fd6),document['getElementById']('connection-test-sql-btn')['hidden']=!_0x713cde,document['getElementById']('connection-test-ssh-btn')['hidden']=!_0x170fd6;const _0x4b1e4f=document['getElementById']('connection-ssh-public-key')['value'];document['getElementById']('connection-install-key-row')['hidden']=!(_0x4b1e4f&&_0x4b1e4f!=='***');}function closeConnectionModal(){document['getElementById']('connection-modal')['hidden']=!![],state['editingConnection']=null;}function validateConnectionFrontend(_0x5c7a85,_0x47a076=[],_0x3e848e=null){const _0x434db6=[],_0x2b1fa7=['sqlserver','ibmi','ssh'],_0x43845c=['tasks','deploy'],_0x34570a=['sql','build','interactive','ssh','sync'],_0x569d1c=['build','interactive'],_0x26b6e3={'sync':['ssh']},_0x6e9d77=['sql','interactive'],_0x86d86b=['build','ssh','sync'],_0x24c668=/^[A-Z@#$][A-Z@#$0-9_.]{0,4}$/;if(!_0x5c7a85['name']||typeof _0x5c7a85['name']!=='string')_0x434db6['push']('Connection\x20name\x20is\x20required');else{if(!/^[a-zA-Z0-9_-]+$/['test'](_0x5c7a85['name']))_0x434db6['push']('Connection\x20name\x20must\x20contain\x20only\x20letters,\x20numbers,\x20hyphens,\x20and\x20underscores');else{const _0x32356e=_0x5c7a85['name']['toLowerCase'](),_0x3bc649=_0x47a076['find'](_0x9bd00d=>_0x9bd00d['id']!==_0x3e848e&&_0x9bd00d['name']['toLowerCase']()===_0x32356e);_0x3bc649&&_0x434db6['push']('Connection\x20name\x20\x22'+_0x5c7a85['name']+'\x22\x20is\x20already\x20in\x20use');}}if(!Array['isArray'](_0x5c7a85['available_for'])||_0x5c7a85['available_for']['length']===0x0)_0x434db6['push']('At\x20least\x20one\x20availability\x20scope\x20is\x20required\x20(tasks,\x20deploy)');else _0x5c7a85['available_for']['some'](_0x278c23=>!_0x43845c['includes'](_0x278c23))&&_0x434db6['push']('Available\x20scopes\x20must\x20be:\x20'+_0x43845c['join'](',\x20'));(!_0x5c7a85['type']||!_0x2b1fa7['includes'](_0x5c7a85['type']))&&_0x434db6['push']('Connection\x20type\x20must\x20be\x20one\x20of:\x20'+_0x2b1fa7['join'](',\x20'));if(_0x5c7a85['type']==='sqlserver'){if(!_0x5c7a85['config']?.['host'])_0x434db6['push']('Host\x20is\x20required\x20for\x20SQL\x20Server');else!isFullyQualifiedHostname(_0x5c7a85['config']['host'])&&_0x434db6['push']('Host\x20must\x20be\x20a\x20fully\x20qualified\x20hostname\x20(e.g.\x20myserver.mycompany.com)');if(!_0x5c7a85['config']?.['database'])_0x434db6['push']('Database\x20is\x20required\x20for\x20SQL\x20Server');if(!_0x5c7a85['config']?.['user'])_0x434db6['push']('User\x20is\x20required\x20for\x20SQL\x20Server');if(!_0x5c7a85['password'])_0x434db6['push']('Password\x20is\x20required\x20for\x20SQL\x20Server');}else{if(_0x5c7a85['type']==='ibmi'){if(!_0x5c7a85['config']?.['host'])_0x434db6['push']('Host\x20is\x20required\x20for\x20IBM\x20i');else!isFullyQualifiedHostname(_0x5c7a85['config']['host'])&&_0x434db6['push']('Host\x20must\x20be\x20a\x20fully\x20qualified\x20hostname\x20(e.g.\x20myserver.mycompany.com)');if(!_0x5c7a85['config']?.['user'])_0x434db6['push']('User\x20is\x20required\x20for\x20IBM\x20i');const _0x410291=_0x5c7a85['config']?.['features']||[];_0x410291['some'](_0x4c106c=>_0x6e9d77['includes'](_0x4c106c))&&!_0x5c7a85['password']&&_0x434db6['push']('Password\x20is\x20required\x20for\x20IBM\x20i\x20SQL\x20and\x20Interactive\x20features');if(!Array['isArray'](_0x410291)||_0x410291['length']===0x0)_0x434db6['push']('At\x20least\x20one\x20IBM\x20i\x20feature\x20is\x20required');else{const _0x3e2d06=_0x410291['filter'](_0x1269ec=>!_0x34570a['includes'](_0x1269ec));_0x3e2d06['length']>0x0&&_0x434db6['push']('Invalid\x20IBM\x20i\x20features:\x20'+_0x3e2d06['join'](',\x20'));for(const [_0x27c5c6,_0x47a560]of Object['entries'](_0x26b6e3)){if(_0x410291['includes'](_0x27c5c6))for(const _0x20992a of _0x47a560){!_0x410291['includes'](_0x20992a)&&_0x434db6['push']('IBM\x20i\x20feature\x20\x22'+_0x27c5c6+'\x22\x20requires\x20\x22'+_0x20992a+'\x22');}}if(_0x410291['includes']('build')){!_0x5c7a85['config']?.['build_repo']&&_0x434db6['push']('Build\x20repo\x20is\x20required\x20when\x20Build\x20feature\x20is\x20selected');const _0x2f7f6b=_0x5c7a85['config']?.['build_path'];if(_0x2f7f6b){const _0x1bec34=_0x2f7f6b['split']('/');_0x1bec34['some'](_0x43df16=>_0x43df16==='.'||_0x43df16==='..')&&_0x434db6['push']('Build\x20directory\x20must\x20not\x20contain\x20\x22.\x22\x20or\x20\x22..\x22\x20segments');}}if(_0x410291['includes']('build')&&_0x5c7a85['available_for']?.['includes']('tasks')){const _0x2a572a=_0x5c7a85['config']?.['build_library_prefix'];if(!_0x2a572a)_0x434db6['push']('Build\x20library\x20prefix\x20is\x20required\x20when\x20Build\x20feature\x20is\x20used\x20with\x20Tasks\x20scope');else!_0x24c668['test'](_0x2a572a)&&_0x434db6['push']('Build\x20library\x20prefix\x20must\x20be\x201-5\x20characters:\x20first\x20character\x20A-Z,\x20@,\x20#,\x20or\x20$;\x20remaining\x20characters\x20A-Z,\x20@,\x20#,\x20$,\x200-9,\x20_,\x20or\x20.');}_0x410291['some'](_0x258afd=>_0x86d86b['includes'](_0x258afd))&&!_0x5c7a85['ssh_private_key']&&_0x434db6['push']('SSH\x20private\x20key\x20is\x20required\x20for\x20this\x20connection\x20type');_0x410291['includes']('interactive')&&!(_0x5c7a85['available_for']||[])['includes']('tasks')&&_0x434db6['push']('Interactive\x20feature\x20requires\x20Tasks\x20availability\x20scope');if(_0x410291['includes']('interactive')){if(!_0x5c7a85['config']?.['pui_base_url'])_0x434db6['push']('PUI\x20Base\x20URL\x20is\x20required\x20when\x20Interactive\x20feature\x20is\x20selected');else{if(_0x5c7a85['config']?.['host'])try{const _0x104dac=new URL(_0x5c7a85['config']['pui_base_url'])['hostname'];_0x104dac&&_0x104dac!==_0x5c7a85['config']['host']&&_0x434db6['push']('PUI\x20Base\x20URL\x20hostname\x20\x22'+_0x104dac+'\x22\x20must\x20match\x20the\x20connection\x20host\x20\x22'+_0x5c7a85['config']['host']+'\x22');}catch{_0x434db6['push']('PUI\x20Base\x20URL\x20must\x20be\x20a\x20valid\x20URL\x20(e.g.\x20https://myibmi.mycompany.com:8080)');}}}const _0x39fd09=_0x410291['some'](_0x89767c=>_0x569d1c['includes'](_0x89767c));if(_0x39fd09&&Array['isArray'](_0x5c7a85['available_for'])){const _0x1230f2=_0x47a076['filter'](_0x10f504=>_0x10f504['id']!==_0x3e848e&&_0x10f504['type']==='ibmi'&&(_0x10f504['config']?.['features']||[])['some'](_0x17c868=>_0x569d1c['includes'](_0x17c868)));for(const _0x30396d of _0x1230f2){const _0x3268f0=_0x5c7a85['available_for']['filter'](_0x5d64dc=>(_0x30396d['available_for']||[])['includes'](_0x5d64dc));if(_0x3268f0['length']>0x0){_0x434db6['push']('Only\x20one\x20IBM\x20i\x20connection\x20with\x20build/interactive\x20features\x20is\x20allowed\x20per\x20scope.\x20'+('Connection\x20\x22'+_0x30396d['name']+'\x22\x20already\x20has\x20build/interactive\x20in\x20scope:\x20'+_0x3268f0['join'](',\x20')));break;}}}}}else{if(_0x5c7a85['type']==='ssh'){if(!_0x5c7a85['config']?.['host'])_0x434db6['push']('Host\x20is\x20required\x20for\x20SSH');else!isFullyQualifiedHostname(_0x5c7a85['config']['host'])&&_0x434db6['push']('Host\x20must\x20be\x20a\x20fully\x20qualified\x20hostname\x20(e.g.\x20myserver.mycompany.com)');if(!_0x5c7a85['config']?.['user'])_0x434db6['push']('User\x20is\x20required\x20for\x20SSH');!_0x5c7a85['ssh_private_key']&&_0x434db6['push']('SSH\x20private\x20key\x20is\x20required\x20for\x20SSH\x20connections');}}}return{'valid':_0x434db6['length']===0x0,'errors':_0x434db6};}async function saveConnection(){const _0x49eb03=document['getElementById']('connection-modal-error');_0x49eb03['hidden']=!![];const _0x4f6ff0=document['querySelector']('input[name=\x22connection-type\x22]:checked')?.['value'],_0x5643d5=document['getElementById']('connection-name')['value']['trim'](),_0x1835c7=document['getElementById']('connection-description')['value']['trim'](),_0x2ea5fd=document['getElementById']('connection-host')['value']['trim'](),_0x52411d=document['getElementById']('connection-user')['value']['trim'](),_0x344552=[];if(document['getElementById']('connection-available-tasks')['checked'])_0x344552['push']('tasks');if(document['getElementById']('connection-available-deploy')['checked'])_0x344552['push']('deploy');const _0x4ee483={'host':_0x2ea5fd,'user':_0x52411d};if(_0x4f6ff0==='sqlserver')_0x4ee483['database']=document['getElementById']('connection-database')['value']['trim'](),!document['getElementById']('connection-verify-cert')['checked']&&(_0x4ee483['verify_db_server_certificate']=![]);else{if(_0x4f6ff0==='ibmi'){const _0x28dfa7=[];if(document['getElementById']('feature-sql')['checked'])_0x28dfa7['push']('sql');if(document['getElementById']('feature-build')['checked'])_0x28dfa7['push']('build');if(document['getElementById']('feature-interactive')['checked'])_0x28dfa7['push']('interactive');if(document['getElementById']('feature-ssh')['checked']||document['getElementById']('feature-ssh')['disabled'])_0x28dfa7['push']('ssh');if(document['getElementById']('feature-sync')['checked'])_0x28dfa7['push']('sync');_0x4ee483['features']=_0x28dfa7;_0x28dfa7['includes']('sql')&&!document['getElementById']('connection-verify-cert')['checked']&&(_0x4ee483['verify_db_server_certificate']=![]);if(_0x28dfa7['includes']('interactive')){_0x4ee483['pui_base_url']=document['getElementById']('connection-pui-base-url')['value']['trim']();const _0x5f455f=document['getElementById']('connection-pui-render-path')['value']['trim'](),_0x316888=document['getElementById']('connection-pui-launch-path')['value']['trim']();if(_0x5f455f)_0x4ee483['pui_render_path']=_0x5f455f;if(_0x316888)_0x4ee483['pui_launch_path']=_0x316888;}if(_0x28dfa7['includes']('build')){const _0x5eebe0=document['getElementById']('connection-build-repo')['value'];if(!_0x5eebe0){_0x49eb03['textContent']='Build\x20repo\x20is\x20required\x20when\x20Build\x20feature\x20is\x20selected',_0x49eb03['hidden']=![];return;}_0x4ee483['build_repo']=_0x5eebe0;let _0x3ffe7c=document['getElementById']('connection-build-path')['value']['trim']();_0x3ffe7c=_0x3ffe7c['replace'](/^\/+/,'');if(_0x3ffe7c){const _0x4d84de=_0x3ffe7c['split']('/');if(_0x4d84de['some'](_0x206086=>_0x206086==='.'||_0x206086==='..')){_0x49eb03['textContent']='Build\x20directory\x20must\x20not\x20contain\x20\x22.\x22\x20or\x20\x22..\x22\x20segments',_0x49eb03['hidden']=![];return;}_0x4ee483['build_path']=_0x3ffe7c;}}if(_0x28dfa7['includes']('build')&&_0x344552['includes']('tasks')){let _0x1c631b=document['getElementById']('connection-build-library-prefix')['value']['trim']()['toUpperCase']();document['getElementById']('connection-build-library-prefix')['value']=_0x1c631b;if(!_0x1c631b){_0x49eb03['textContent']='Build\x20library\x20prefix\x20is\x20required',_0x49eb03['hidden']=![];return;}if(!/^[A-Z@#$][A-Z@#$0-9_.]{0,4}$/['test'](_0x1c631b)){_0x49eb03['textContent']='Build\x20library\x20prefix\x20must\x20be\x201-5\x20characters:\x20first\x20character\x20A-Z,\x20@,\x20#,\x20$;\x20remaining\x20A-Z,\x20@,\x20#,\x20$,\x200-9,\x20_,\x20.',_0x49eb03['hidden']=![];return;}_0x4ee483['build_library_prefix']=_0x1c631b;}}}const _0x33001f={'name':_0x5643d5,'type':_0x4f6ff0,'description':_0x1835c7,'available_for':_0x344552,'config':_0x4ee483};state['editingConnection']?_0x33001f['id']=state['editingConnection']:_0x33001f['id']=crypto['randomUUID']();const _0x2f4ec0=document['getElementById']('connection-password')['value'];if(_0x2f4ec0)_0x33001f['password']=_0x2f4ec0;if(sshKeyValueStore)_0x33001f['ssh_private_key']=sshKeyValueStore;const _0x56e7f2=document['getElementById']('connection-ssh-public-key')['value'];if(_0x56e7f2)_0x33001f['ssh_public_key']=_0x56e7f2;const _0xcb3d50=state['selectedEnvData']?.['external_connections']||[],_0x55ee46=validateConnectionFrontend(_0x33001f,_0xcb3d50,state['editingConnection']);if(!_0x55ee46['valid']){_0x49eb03['textContent']=_0x55ee46['errors'][0x0],_0x49eb03['hidden']=![];return;}if(state['editingConnection']){const _0x3c5731=_0xcb3d50['findIndex'](_0x5419b7=>_0x5419b7['id']===state['editingConnection']);_0x3c5731>=0x0&&(_0xcb3d50[_0x3c5731]=_0x33001f);}else _0xcb3d50['push'](_0x33001f);state['selectedEnvData']['external_connections']=_0xcb3d50,Utils['showSuccess']('Connection\x20\x22'+_0x5643d5+'\x22\x20'+(state['editingConnection']?'updated':'added')+'\x20(click\x20Save\x20to\x20persist\x20changes)'),closeConnectionModal(),renderConnections(),markAsModified();const _0x388f47=getRequiredSkillsForConnection(_0x33001f);_0x388f47['length']>0x0&&await autoImportConnectionSkills(_0x388f47);}window['openDeleteConnectionModal']=function(_0x42d2dd){const _0x312f9b=state['selectedEnvData']?.['external_connections']||[],_0x5d2203=_0x312f9b['find'](_0xb077dd=>_0xb077dd['id']===_0x42d2dd);if(!_0x5d2203)return;document['getElementById']('delete-connection-name')['textContent']=_0x5d2203['name']+'\x20('+_0x5d2203['type']+')',document['getElementById']('delete-connection-modal')['dataset']['connectionId']=_0x42d2dd,document['getElementById']('delete-connection-modal')['hidden']=![];};function closeDeleteConnectionModal(){document['getElementById']('delete-connection-modal')['hidden']=!![];}function confirmDeleteConnection(){const _0x2a6bb8=document['getElementById']('delete-connection-modal')['dataset']['connectionId'],_0x366e59=state['selectedEnvData']?.['external_connections']||[];state['selectedEnvData']['external_connections']=_0x366e59['filter'](_0x17a26e=>_0x17a26e['id']!==_0x2a6bb8),Utils['showSuccess']('Connection\x20removed\x20(click\x20Save\x20to\x20persist\x20changes)'),closeDeleteConnectionModal(),renderConnections(),markAsModified();}function openIbmiHelperDialog(){const _0x20617c=document['getElementById']('connection-user')['value']['trim']()||'{USER}',_0x55aa1f=_0x20617c['toUpperCase'](),_0x2f3ca0=_0x20617c['toLowerCase'](),_0x232803=document['getElementById']('connection-password')['value'],_0x1e48f9=_0x232803&&_0x232803!=='***'?_0x232803:'',_0x49e83e=['CRTUSRPRF\x20USRPRF('+_0x55aa1f+')\x20PASSWORD('+_0x1e48f9+')\x20USRCLS(*USER)\x20INLMNU(*SIGNOFF)\x20LMTCPB(*YES)\x20TEXT(\x27CoderFlow\x20service\x20account\x27)\x20SPCAUT(*NONE)\x20JOBD(JOB_DESCRIPTION)','CRTDIR\x20DIR(\x27/home/'+_0x2f3ca0+'\x27)','CHGOWN\x20OBJ(\x27/home/'+_0x2f3ca0+'\x27)\x20NEWOWN('+_0x55aa1f+')','QSH\x20CMD(\x27chmod\x20755\x20/home/'+_0x2f3ca0+'\x27)'],_0x52da27=document['getElementById']('ibmi-helper-commands');_0x52da27['innerHTML']='',_0x49e83e['forEach'](_0x10157f=>{const _0x4548ab=document['createElement']('div');_0x4548ab['className']='command-line';const _0x4c419f=document['createElement']('code');_0x4c419f['textContent']=_0x10157f;const _0x50b650=document['createElement']('button');_0x50b650['type']='button',_0x50b650['className']='btn-icon\x20copy-btn',_0x50b650['title']='Copy',_0x50b650['innerHTML']='<svg\x20width=\x2214\x22\x20height=\x2214\x22\x20viewBox=\x220\x200\x2024\x2024\x22\x20fill=\x22none\x22\x20stroke=\x22currentColor\x22\x20stroke-width=\x222\x22><rect\x20x=\x229\x22\x20y=\x229\x22\x20width=\x2213\x22\x20height=\x2213\x22\x20rx=\x222\x22/><path\x20d=\x22M5\x2015H4a2\x202\x200\x2001-2-2V4a2\x202\x200\x20012-2h9a2\x202\x200\x20012\x202v1\x22/></svg>',_0x50b650['addEventListener']('click',()=>{navigator['clipboard']['writeText'](_0x10157f)['then'](()=>{_0x50b650['innerHTML']='<svg\x20width=\x2214\x22\x20height=\x2214\x22\x20viewBox=\x220\x200\x2024\x2024\x22\x20fill=\x22none\x22\x20stroke=\x22currentColor\x22\x20stroke-width=\x222\x22><path\x20d=\x22M20\x206L9\x2017l-5-5\x22/></svg>',setTimeout(()=>{_0x50b650['innerHTML']='<svg\x20width=\x2214\x22\x20height=\x2214\x22\x20viewBox=\x220\x200\x2024\x2024\x22\x20fill=\x22none\x22\x20stroke=\x22currentColor\x22\x20stroke-width=\x222\x22><rect\x20x=\x229\x22\x20y=\x229\x22\x20width=\x2213\x22\x20height=\x2213\x22\x20rx=\x222\x22/><path\x20d=\x22M5\x2015H4a2\x202\x200\x2001-2-2V4a2\x202\x200\x20012-2h9a2\x202\x200\x20012\x202v1\x22/></svg>';},0x5dc);});}),_0x4548ab['appendChild'](_0x4c419f),_0x4548ab['appendChild'](_0x50b650),_0x52da27['appendChild'](_0x4548ab);}),document['getElementById']('ibmi-helper-modal')['hidden']=![];}function resetPasswordToggleIcon(){const _0x2e5039=document['getElementById']('connection-password-toggle');_0x2e5039['querySelector']('.eye-open')['style']['display']='',_0x2e5039['querySelector']('.eye-closed')['style']['display']='none';}function toggleConnectionPasswordVisibility(){const _0x42c65b=document['getElementById']('connection-password'),_0x117673=document['getElementById']('connection-password-toggle'),_0x3ae821=_0x42c65b['type']==='password';_0x42c65b['type']=_0x3ae821?'text':'password',_0x117673['querySelector']('.eye-open')['style']['display']=_0x3ae821?'none':'',_0x117673['querySelector']('.eye-closed')['style']['display']=_0x3ae821?'':'none';}function resetSshKeyVisibility(_0xbf34ce){sshKeyValueStore=_0xbf34ce,sshKeyValueVisible=![],sshKeyLastCursorPosition=0x0;const _0x10b9f8=document['getElementById']('connection-ssh-private-key'),_0x54b602=document['querySelector']('.connection-ssh-key-toggle');_0x10b9f8&&(_0x10b9f8['value']=_0xbf34ce?'•'['repeat'](_0xbf34ce['length']):''),_0x54b602&&(_0x54b602['hidden']=![],_0x54b602['querySelector']('.eye-open')['style']['display']='block',_0x54b602['querySelector']('.eye-closed')['style']['display']='none');}function toggleSshKeyVisibility(){const _0x41838d=document['getElementById']('connection-ssh-private-key'),_0x209cff=document['querySelector']('.connection-ssh-key-toggle');sshKeyValueVisible=!sshKeyValueVisible,sshKeyValueVisible?(_0x41838d['value']=sshKeyValueStore,_0x209cff['querySelector']('.eye-open')['style']['display']='none',_0x209cff['querySelector']('.eye-closed')['style']['display']='block'):(_0x41838d['value']=sshKeyValueStore?'•'['repeat'](sshKeyValueStore['length']):'',_0x209cff['querySelector']('.eye-open')['style']['display']='block',_0x209cff['querySelector']('.eye-closed')['style']['display']='none');}function handleSshKeyBeforeInput(_0x420d9e){if(!sshKeyValueVisible){const _0x26d4eb=_0x420d9e['target'];sshKeyLastCursorPosition=_0x26d4eb['selectionStart'],_0x26d4eb['dataset']['selectionEnd']=_0x26d4eb['selectionEnd'];}}function handleSshKeyInput(_0x1e810a){const _0x3091f9=_0x1e810a['target'];if(sshKeyValueVisible)sshKeyValueStore=_0x3091f9['value'];else{const _0x2b0155=_0x1e810a['inputType'],_0x57e74e=_0x3091f9['value'],_0x4b3937='•',_0xc4fa1b=_0x3091f9['selectionStart'],_0x389396=_0x57e74e['replace'](new RegExp(_0x4b3937,'g'),''),_0x415a30=sshKeyValueStore['length'],_0x4ea2af=sshKeyLastCursorPosition,_0x2692e5=parseInt(_0x3091f9['dataset']['selectionEnd']||_0x4ea2af),_0x4d23a4=_0x2692e5>_0x4ea2af;if(_0x57e74e==='')sshKeyValueStore='',sshKeyLastCursorPosition=0x0;else{if(_0x2b0155&&_0x2b0155['startsWith']('delete')){if(_0x4d23a4)sshKeyValueStore=sshKeyValueStore['slice'](0x0,_0x4ea2af)+sshKeyValueStore['slice'](_0x2692e5),sshKeyLastCursorPosition=_0x4ea2af;else{const _0x4fc0bd=_0x415a30-_0x57e74e['length'];_0x2b0155==='deleteContentBackward'?sshKeyValueStore=sshKeyValueStore['slice'](0x0,_0xc4fa1b)+sshKeyValueStore['slice'](_0xc4fa1b+_0x4fc0bd):sshKeyValueStore=sshKeyValueStore['slice'](0x0,_0xc4fa1b)+sshKeyValueStore['slice'](_0xc4fa1b+_0x4fc0bd),sshKeyLastCursorPosition=_0xc4fa1b;}}else{if(_0x389396['length']>0x0){const _0xadf6ad=_0x57e74e['length']-_0x389396['length'];if(_0xadf6ad===0x0)sshKeyValueStore=_0x389396,sshKeyLastCursorPosition=_0x389396['length'];else _0x4d23a4?(sshKeyValueStore=sshKeyValueStore['slice'](0x0,_0x4ea2af)+_0x389396+sshKeyValueStore['slice'](_0x2692e5),sshKeyLastCursorPosition=_0x4ea2af+_0x389396['length']):(sshKeyValueStore=sshKeyValueStore['slice'](0x0,_0x4ea2af)+_0x389396+sshKeyValueStore['slice'](_0x4ea2af),sshKeyLastCursorPosition=_0x4ea2af+_0x389396['length']);}else _0x57e74e['length']<_0x415a30?(sshKeyValueStore=sshKeyValueStore['slice'](0x0,_0x57e74e['length']),sshKeyLastCursorPosition=_0xc4fa1b):sshKeyLastCursorPosition=_0xc4fa1b;}}const _0x1d709c=_0x4b3937['repeat'](sshKeyValueStore['length']);_0x3091f9['value']=_0x1d709c,_0x3091f9['setSelectionRange'](sshKeyLastCursorPosition,sshKeyLastCursorPosition),delete _0x3091f9['dataset']['selectionEnd'];}}function handleSshKeyFileImport(_0x4f370a){const _0x347b2e=_0x4f370a['target']['files'][0x0];if(!_0x347b2e)return;const _0x5036cb=new FileReader();_0x5036cb['onload']=function(_0x3614fa){const _0x376560=_0x3614fa['target']['result'];sshKeyValueStore=_0x376560,sshKeyValueVisible=!![],document['getElementById']('connection-ssh-private-key')['value']=_0x376560;const _0x561062=document['querySelector']('.connection-ssh-key-toggle');_0x561062&&(_0x561062['querySelector']('.eye-open')['style']['display']='none',_0x561062['querySelector']('.eye-closed')['style']['display']='block');},_0x5036cb['onerror']=function(){Utils['showError']('Failed\x20to\x20read\x20file');},_0x5036cb['readAsText'](_0x347b2e),_0x4f370a['target']['value']='';}function handleSshPubKeyFileImport(_0x1638b0){const _0x53db99=_0x1638b0['target']['files'][0x0];if(!_0x53db99)return;const _0x2e4b43=new FileReader();_0x2e4b43['onload']=function(_0x4ee600){document['getElementById']('connection-ssh-public-key')['value']=_0x4ee600['target']['result'],updateConnectionFormVisibility();},_0x2e4b43['onerror']=function(){Utils['showError']('Failed\x20to\x20read\x20file');},_0x2e4b43['readAsText'](_0x53db99),_0x1638b0['target']['value']='';}async function generateKeypair(){try{const _0x201336=await API['post']('/environments/'+state['selectedEnv']+'/connections/generate-keypair');sshKeyValueStore=_0x201336['privateKey'],sshKeyValueVisible=!![],document['getElementById']('connection-ssh-private-key')['value']=_0x201336['privateKey'];const _0x437b17=document['querySelector']('.connection-ssh-key-toggle');_0x437b17&&(_0x437b17['querySelector']('.eye-open')['style']['display']='none',_0x437b17['querySelector']('.eye-closed')['style']['display']='block'),document['getElementById']('connection-ssh-public-key')['value']=_0x201336['publicKey'],updateConnectionFormVisibility(),Utils['showSuccess']('SSH\x20keypair\x20generated');}catch(_0x252e2d){Utils['showError'](_0x252e2d['message']||'Failed\x20to\x20generate\x20keypair');}}function showConnectionTestResult(_0x443b8e,_0xe9905a,_0x4f7140){const _0x45fcb2=document['getElementById']('connection-test-spinner'),_0x2795cf=document['getElementById']('connection-test-result');_0x45fcb2['hidden']=!![];let _0x1aa70a='<div\x20class=\x22test-result-title\x22>'+Utils['escapeHtml'](_0xe9905a)+'</div>';_0x4f7140&&(_0x1aa70a+='<div\x20class=\x22test-result-detail\x22>'+Utils['escapeHtml'](_0x4f7140)+'</div>'),_0x2795cf['innerHTML']=_0x1aa70a,_0x2795cf['className']='connection-test-result\x20'+(_0x443b8e?'success':'error'),_0x2795cf['hidden']=![];}function clearConnectionTestResult(){document['getElementById']('connection-test-spinner')['hidden']=!![];const _0x251d09=document['getElementById']('connection-test-result');_0x251d09['hidden']=!![],_0x251d09['innerHTML']='',_0x251d09['className']='connection-test-result';}async function testConnection(_0x3972ab){const _0x3a8528=state['editingConnection']||'_unsaved',_0x3668e9=document['getElementById']('connection-test-spinner');clearConnectionTestResult(),_0x3668e9['hidden']=![];try{const _0x2f1d0f=document['querySelector']('input[name=\x22connection-type\x22]:checked')?.['value'],_0xb60bfd={'testType':_0x3972ab,'type':_0x2f1d0f,'host':document['getElementById']('connection-host')['value']['trim'](),'user':document['getElementById']('connection-user')['value']['trim']()};_0x2f1d0f==='ibmi'&&(_0xb60bfd['features']=['sql','build','ssh','sync']['filter'](_0x4ed08c=>document['getElementById']('feature-'+_0x4ed08c)['checked']));_0x3972ab==='sql'?(_0xb60bfd['password']=document['getElementById']('connection-password')['value'],_0xb60bfd['database']=document['getElementById']('connection-database')['value']['trim'](),!document['getElementById']('connection-verify-cert')['checked']&&(_0xb60bfd['verify_db_server_certificate']=![])):_0xb60bfd['ssh_private_key']=sshKeyValueStore;const _0x1e6087=await API['post']('/environments/'+state['selectedEnv']+'/connections/'+_0x3a8528+'/test',_0xb60bfd);showConnectionTestResult(!![],_0x1e6087['message']||'Connection\x20successful');}catch(_0x5d2687){showConnectionTestResult(![],_0x5d2687['message']||'Connection\x20failed',_0x5d2687['detail']);}}function openInstallKeyModal(){const _0x3edc7f=document['getElementById']('connection-host')['value']['trim'](),_0x3b1349=document['getElementById']('connection-user')['value']['trim'](),_0x21bb99=document['getElementById']('connection-ssh-public-key')['value']['trim']();if(!_0x3edc7f||!_0x3b1349){showConnectionTestResult(![],'Host\x20and\x20user\x20are\x20required\x20to\x20install\x20the\x20public\x20key');return;}if(!_0x21bb99||_0x21bb99==='***'){showConnectionTestResult(![],'A\x20public\x20key\x20is\x20required\x20to\x20install');return;}const _0x3708d9=document['getElementById']('connection-password')['value'],_0xab7913=document['getElementById']('connection-password-row'),_0x1b680e=document['getElementById']('install-key-password');_0x1b680e['value']=!_0xab7913['hidden']&&_0x3708d9&&_0x3708d9!=='***'?_0x3708d9:'',_0x1b680e['type']='password';const _0x2d2420=document['getElementById']('install-key-password-toggle');_0x2d2420['querySelector']('.eye-open')['style']['display']='',_0x2d2420['querySelector']('.eye-closed')['style']['display']='none';const _0x249d0f=document['getElementById']('install-key-result');_0x249d0f['hidden']=!![],_0x249d0f['innerHTML']='',_0x249d0f['className']='connection-test-result',document['getElementById']('install-key-confirm-btn')['disabled']=![],document['getElementById']('install-key-modal')['hidden']=![];}function closeInstallKeyModal(){document['getElementById']('install-key-modal')['hidden']=!![];}async function installPublicKey(){const _0x2cc34b=document['getElementById']('install-key-password')['value'];if(!_0x2cc34b){const _0x43e8f2=document['getElementById']('install-key-result');_0x43e8f2['innerHTML']='<div\x20class=\x22test-result-title\x22>'+Utils['escapeHtml']('Password\x20is\x20required')+'</div>',_0x43e8f2['className']='connection-test-result\x20error',_0x43e8f2['hidden']=![];return;}const _0x42e8c8=state['editingConnection']||'_unsaved',_0x54bed7=document['getElementById']('connection-host')['value']['trim'](),_0x35ce66=document['getElementById']('connection-user')['value']['trim'](),_0x176bc5=document['getElementById']('connection-ssh-public-key')['value']['trim'](),_0x1d89de=document['getElementById']('install-key-result');_0x1d89de['innerHTML']='Installing...',_0x1d89de['className']='connection-test-result',_0x1d89de['hidden']=![],document['getElementById']('install-key-confirm-btn')['disabled']=!![];try{const _0x30a764={'host':_0x54bed7,'user':_0x35ce66,'password':_0x2cc34b,'public_key':_0x176bc5},_0x1244b6=await API['post']('/environments/'+state['selectedEnv']+'/connections/'+_0x42e8c8+'/install-public-key',_0x30a764);_0x1d89de['innerHTML']='<div\x20class=\x22test-result-title\x22>'+Utils['escapeHtml'](_0x1244b6['message']||'Public\x20key\x20installed\x20successfully')+'</div>',_0x1d89de['className']='connection-test-result\x20success';}catch(_0x55a369){let _0xe17870='<div\x20class=\x22test-result-title\x22>'+Utils['escapeHtml'](_0x55a369['message']||'Failed\x20to\x20install\x20public\x20key')+'</div>';_0x55a369['detail']&&(_0xe17870+='<div\x20class=\x22test-result-detail\x22>'+Utils['escapeHtml'](_0x55a369['detail'])+'</div>'),_0x1d89de['innerHTML']=_0xe17870,_0x1d89de['className']='connection-test-result\x20error',document['getElementById']('install-key-confirm-btn')['disabled']=![];}}function getRequiredSkillsForConnection(_0x4242dc){const _0x3300f9={'sqlserver':['sql'],'ibmi':{'sql':['sql'],'build':['codermake'],'interactive':['ibmi-interactive-session'],'ssh':['ibmi-clcmd'],'sync':[]},'ssh':[]};if(_0x4242dc['type']==='sqlserver')return[..._0x3300f9['sqlserver']];if(_0x4242dc['type']==='ibmi'){const _0x319e51=[];for(const _0x5c86d9 of _0x4242dc['config']?.['features']||[]){const _0x1bbfc9=_0x3300f9['ibmi'][_0x5c86d9];if(_0x1bbfc9)for(const _0x4e26c8 of _0x1bbfc9){if(!_0x319e51['includes'](_0x4e26c8))_0x319e51['push'](_0x4e26c8);}}return _0x319e51;}return[];}function getConnectionRequiredSkills(){const _0xee7623={'sqlserver':['sql'],'ibmi':{'sql':['sql'],'build':['codermake'],'interactive':['ibmi-interactive-session'],'ssh':['ibmi-clcmd'],'sync':[]},'ssh':[]},_0x1d7d1c=new Set();for(const _0x2c35ba of state['selectedEnvData']?.['external_connections']||[]){if(_0x2c35ba['type']==='sqlserver')_0xee7623['sqlserver']['forEach'](_0x28b72f=>_0x1d7d1c['add'](_0x28b72f));else{if(_0x2c35ba['type']==='ibmi')for(const _0x4c01d5 of _0x2c35ba['config']?.['features']||[]){const _0x5a2ab8=_0xee7623['ibmi'][_0x4c01d5];if(_0x5a2ab8)_0x5a2ab8['forEach'](_0x2bfcf1=>_0x1d7d1c['add'](_0x2bfcf1));}}}return _0x1d7d1c;}async function autoImportConnectionSkills(_0x178ed0){const _0x32f6f8=state['selectedEnvData']?.['skills']||[];for(const _0x227096 of _0x178ed0){if(_0x32f6f8['includes'](_0x227096))continue;try{await API['post']('/external-skills/import/catalog',{'skillId':_0x227096});}catch(_0x116b7b){console['debug']('Skill\x20import\x20(may\x20already\x20exist):',_0x227096,_0x116b7b['message']);}!_0x32f6f8['includes'](_0x227096)&&_0x32f6f8['push'](_0x227096);}state['selectedEnvData']&&(state['selectedEnvData']['skills']=_0x32f6f8,markAsModified(),renderEnvironmentSkills());}function debounce(_0x43d2bf,_0x582a29){let _0x1970cb;return function _0x48ac16(..._0x1b7396){const _0x1422ae=()=>{clearTimeout(_0x1970cb),_0x43d2bf(..._0x1b7396);};clearTimeout(_0x1970cb),_0x1970cb=setTimeout(_0x1422ae,_0x582a29);};}window['markAsModified']=function(){state['hasUnsavedChanges']=!![],updateButtonStates();};function updateButtonStates(){const _0x55ee74=document['getElementById']('save-btn'),_0x34bcd8=document['getElementById']('repo-commit-btn'),_0x5d1225=document['getElementById']('repo-discard-btn');_0x55ee74&&(_0x55ee74['disabled']=!state['hasUnsavedChanges']);_0x34bcd8&&(_0x34bcd8['disabled']=state['modifiedFiles']['size']===0x0);if(_0x5d1225){const _0x261e93=state['changedFiles']&&state['changedFiles']['length']>0x0;_0x5d1225['disabled']=!_0x261e93;}}async function saveChanges(){if(!state['hasUnsavedChanges'])return;if(state['currentRepo']!==null&&document['getElementById']('edit-repo-provider')){const _0x385044=validateEditRepoForm();if(_0x385044['length']>0x0){Utils['showError'](_0x385044[0x0]);return;}}try{const _0x32dc49=document['getElementById']('save-btn');_0x32dc49['disabled']=!![],_0x32dc49['innerHTML']='<span>⏳</span>\x20Saving...';const _0x4e594e=await saveCurrentState(),_0x5c06d4=[];_0x4e594e['modifiedEnvironmentJson']&&_0x5c06d4['push']('environment.json');_0x4e594e['modifiedTests']&&_0x5c06d4['push']('tests.json');const _0x2ec2ba=_0x5d4918=>{return monacoEditors['has'](_0x5d4918)||window['MarkdownFileEditor']&&window['MarkdownFileEditor']['editors']['has'](_0x5d4918);};if(state['currentTab']==='agents')_0x5c06d4['push']('AGENTS.md');else{if(state['currentTab']==='files')_0x5c06d4['push'](state['currentFile']);else{if(state['currentTab']==='build')monacoEditors['has']('script-editor')&&_0x5c06d4['push'](currentScript);else state['currentTab']==='overview'&&(_0x2ec2ba('readme-editor')&&_0x5c06d4['push']('README.md'));}}_0x4e594e['modifiedDeployProfile']&&_0x5c06d4['push']('deployment-profiles/'+_0x4e594e['modifiedDeployProfile']+'.sh'),_0x5c06d4['forEach'](_0x3a2288=>state['modifiedFiles']['add'](_0x3a2288)),state['hasUnsavedChanges']=![],updateButtonStates(),await refreshRepositoryGitStatus(),Utils['showSuccess']('Changes\x20saved\x20to\x20files'),_0x32dc49['innerHTML']='<span>💾</span>\x20Save';}catch(_0x403ec5){console['error']('Save\x20failed:',_0x403ec5);const _0x49145e=_0x403ec5['message']&&(_0x403ec5['message']['includes']('Invalid\x20JSON\x20in\x20Parameters\x20field')||_0x403ec5['message']['includes']('Invalid\x20JSON\x20in\x20template\x20metadata'));!_0x49145e&&Utils['showError']('Failed\x20to\x20save\x20changes');const _0x2c8130=document['getElementById']('save-btn');_0x2c8130['disabled']=![],_0x2c8130['innerHTML']='<span>💾</span>\x20Save';}}async function saveCurrentState(){const _0x2f4d7c={'description':document['getElementById']('env-description')['value'],'default_agent':defaultAgentSelect['selectedValue'],'image_name':document['getElementById']('env-image-name')['value'],'timezone':document['getElementById']('env-timezone')['value']||undefined,'screenRenderUrl':document['getElementById']('env-screen-render-url')['disabled']?state['selectedEnvData']['screenRenderUrl']||undefined:document['getElementById']('env-screen-render-url')['value']||undefined,'skills':state['selectedEnvData']['skills']||[]},_0x5f38c4=document['getElementById']('rebuild-schedule-enabled-build-tab')['checked'];_0x5f38c4?_0x2f4d7c['rebuild_schedule']={'enabled':!![],'interval_hours':parseInt(document['getElementById']('rebuild-interval-build-tab')['value'],0xa)}:_0x2f4d7c['rebuild_schedule']={'enabled':![]};monacoEditors['has']('script-editor')&¤tScript&&(currentScript==='pre-clone'||currentScript==='post-clone')&&saveCurrentScriptToState();const _0x357f03=state['selectedEnvData']['docker_config'],_0x4de513=_0x357f03&&(Object['prototype']['hasOwnProperty']['call'](_0x357f03,'pre_clone_instructions')||Object['prototype']['hasOwnProperty']['call'](_0x357f03,'post_clone_instructions'));_0x4de513&&(_0x2f4d7c['docker_config']={'pre_clone_instructions':_0x357f03['pre_clone_instructions']||'','post_clone_instructions':_0x357f03['post_clone_instructions']||''});const _0x50be94=[...state['selectedEnvData']['repos']||[]];state['selectedEnvData']['repos']=_0x50be94,persistCurrentRepoFormChanges(),_0x2f4d7c['repos']=_0x50be94;const _0x505ee5={...state['selectedEnvData']['tests']};if(state['currentTest']!==null&&document['getElementById']('test-description')){const _0x484176=document['getElementById']('test-command')['value']['trim']();let _0x3f0cae;const _0x302bc5=_0x484176['split']('\x0a')['filter'](_0x4a67f9=>_0x4a67f9['trim']());if(_0x302bc5['length']>0x1)_0x3f0cae={'commands':_0x302bc5};else _0x302bc5['length']===0x1?_0x3f0cae={'command':_0x302bc5[0x0]}:_0x3f0cae={'command':''};const _0x369b4b=state['selectedEnvData']['tests'][state['currentTest']],_0x259e1a=_0x369b4b?.['parameters']&&Object['keys'](_0x369b4b['parameters'])['length']>0x0?{'parameters':_0x369b4b['parameters']}:{};_0x505ee5[state['currentTest']]={..._0x505ee5[state['currentTest']],'description':document['getElementById']('test-description')['value'],..._0x3f0cae,..._0x259e1a};}_0x2f4d7c['tests']=_0x505ee5;const _0x223496=document['getElementById']('server-name');if(_0x223496){const _0x3bbf17=document['getElementById']('server-enabled'),_0x420ad8=document['getElementById']('server-proxy'),_0x551260={...state['selectedEnvData']['application_server'],'enabled':_0x3bbf17['disabled']?!![]:_0x3bbf17['checked'],'name':_0x223496['disabled']?state['selectedEnvData']['application_server']?.['name']||'':_0x223496['value']},_0x5eb7c3=monacoEditors['get']('server-command-editor'),_0x298bbe=_0x5eb7c3?_0x5eb7c3['getValue']()['trim']():'';_0x298bbe?_0x551260['start_command']=_0x298bbe:delete _0x551260['start_command'];const _0x49580c=_0x420ad8['disabled']?(state['selectedEnvData']['application_server']?.['proxy']||'')['trim']():_0x420ad8['value']['trim']();_0x49580c?_0x551260['proxy']=_0x49580c:delete _0x551260['proxy'];const _0x1b9609=document['getElementById']('server-qa-url')['value']['trim']();_0x1b9609?_0x551260['qa_url']=_0x1b9609:delete _0x551260['qa_url'];const _0x1de6a0=collectPortQaUrlsFromForm();Object['keys'](_0x1de6a0)['length']>0x0?_0x551260['port_qa_urls']=_0x1de6a0:delete _0x551260['port_qa_urls'];const _0x4d096a=document['getElementById']('server-auth-user-property')['value']['trim'](),_0x5e0586=document['getElementById']('server-auth-password-property')['value']['trim']();if(_0x4d096a||_0x5e0586){_0x551260['basic_auth']={};if(_0x4d096a)_0x551260['basic_auth']['user_property']=_0x4d096a;if(_0x5e0586)_0x551260['basic_auth']['password_property']=_0x5e0586;}else delete _0x551260['basic_auth'];const _0xc97382=document['getElementById']('ports-list');if(_0xc97382){const _0x502e7e=_0xc97382['querySelectorAll']('.config-item'),_0x159eca=[];_0x502e7e['forEach'](_0x346d2e=>{const _0x234265=_0x346d2e['querySelectorAll']('input');if(_0x234265['length']>=0x2){const _0x5659a3=_0x234265[0x0]['value']['trim'](),_0x247741=_0x234265[0x1]['value']['trim']();(_0x5659a3||_0x247741)&&_0x159eca['push']({'internal':_0x5659a3?parseInt(_0x5659a3,0xa):'','name':_0x247741});}}),_0x159eca['length']>0x0?_0x551260['ports']=_0x159eca:delete _0x551260['ports'];}const _0x3ed329=collectURLsFromForm(![]);_0x3ed329['length']>0x0?_0x551260['launch_urls']=_0x3ed329:delete _0x551260['launch_urls'];const _0x23fab3=document['getElementById']('proxy-headers-list');if(_0x23fab3){const _0x57db7d=_0x23fab3['querySelectorAll']('.config-item'),_0x3dfac1={};_0x57db7d['forEach'](_0x53c60e=>{const _0x3ebfdf=_0x53c60e['querySelectorAll']('input');if(_0x3ebfdf['length']>=0x2){const _0xa596fa=_0x3ebfdf[0x0]['value']['trim'](),_0x57fcc3=_0x3ebfdf[0x1]['value']['trim']();_0xa596fa&&_0x57fcc3&&(_0x3dfac1[_0xa596fa]=_0x57fcc3);}}),Object['keys'](_0x3dfac1)['length']>0x0?_0x551260['proxy_headers']=_0x3dfac1:delete _0x551260['proxy_headers'];}const _0x191e17=_0x551260['name']||_0x551260['start_command']||_0x551260['proxy']||_0x551260['qa_url']||_0x551260['basic_auth']||_0x551260['ports']?.['length']>0x0||_0x551260['launch_urls']?.['length']>0x0||Object['keys'](_0x551260['proxy_headers']||{})['length']>0x0;_0x191e17?_0x2f4d7c['application_server']=_0x551260:_0x2f4d7c['application_server']=null;}_0x2f4d7c['volume_mounts']=state['selectedEnvData']['volume_mounts']||[];state['selectedEnvData']['external_connections']!==undefined&&(_0x2f4d7c['external_connections']=state['selectedEnvData']['external_connections']);const _0xbb8b58=_0x173dc0=>{return monacoEditors['has'](_0x173dc0)||window['MarkdownFileEditor']&&window['MarkdownFileEditor']['editors']['has'](_0x173dc0);};if(_0xbb8b58('agents-editor')){const _0x231d3c=getMonacoValue('agents-editor');await API['post']('/environments/'+state['selectedEnv']+'/files/AGENTS.md',{'content':_0x231d3c}),state['selectedEnvData']['agentsContent']=_0x231d3c;}if(_0xbb8b58('readme-editor')){const _0x2d1996=getMonacoValue('readme-editor');await API['post']('/environments/'+state['selectedEnv']+'/files/README.md',{'content':_0x2d1996}),state['selectedEnvData']['readmeContent']=_0x2d1996;}if(_0xbb8b58('file-editor')&&state['currentFile']){const _0x228fd2=getMonacoValue('file-editor');await API['post']('/environments/'+state['selectedEnv']+'/files/'+state['currentFile'],{'content':_0x228fd2}),!state['selectedEnvData']['files']&&(state['selectedEnvData']['files']={}),state['selectedEnvData']['files'][state['currentFile']]=_0x228fd2;}if(monacoEditors['has']('script-editor')&¤tScript){saveCurrentScriptToState();if(currentScript==='pre-clone'||currentScript==='post-clone'){}else{const _0x5d9bb0=getMonacoValue('script-editor');await API['post']('/environments/'+state['selectedEnv']+'/files/'+currentScript,{'content':_0x5d9bb0}),!state['selectedEnvData']['files']&&(state['selectedEnvData']['files']={}),state['selectedEnvData']['files'][currentScript]=_0x5d9bb0;}}const _0x509042=(state['selectedEnvData']['templates']||[])['map'](_0x26f099=>_0x26f099['filename']),_0x25fbe4=state['originalTemplates']||[],_0x8a9450=_0x509042['filter'](_0x127bc3=>!_0x25fbe4['includes'](_0x127bc3)),_0x5341e8=_0x25fbe4['filter'](_0x3898de=>!_0x509042['includes'](_0x3898de));for(const _0x24541a of _0x8a9450){const _0x15e1ac=state['selectedEnvData']['templates']['find'](_0x3a78e4=>_0x3a78e4['filename']===_0x24541a);if(_0x15e1ac){await API['post']('/environments/'+state['selectedEnv']+'/files/task-templates/'+_0x24541a,{'content':_0x15e1ac['content']||''});const _0x87e97e=_0x24541a['replace'](/\.md$/,'.json'),_0x4418ba={'title':_0x15e1ac['title'],'description':_0x15e1ac['description'],'parameters':_0x15e1ac['parameters']||[]};await API['post']('/environments/'+state['selectedEnv']+'/files/task-templates/'+_0x87e97e,{'content':JSON['stringify'](_0x4418ba,null,0x2)});}}for(const _0x345c9a of _0x5341e8){const _0x136576=_0x345c9a['replace'](/\.md$/,'.json');await API['delete']('/environments/'+state['selectedEnv']+'/files/task-templates/'+_0x345c9a),await API['delete']('/environments/'+state['selectedEnv']+'/files/task-templates/'+_0x136576);}if(state['currentTemplate']!==null&&state['currentTemplateData']){const _0x37fade=state['selectedEnvData']['templates'][state['currentTemplate']],_0x1f365c=_0xbb8b58('template-md-editor')?getMonacoValue('template-md-editor'):state['currentTemplateData']['content']||'',_0x4f0d8e=document['getElementById']('template-edit-title'),_0x256308=document['getElementById']('template-edit-description'),_0x466658={'title':_0x4f0d8e?_0x4f0d8e['value']:state['currentTemplateData']['title'],'description':_0x256308?_0x256308['value']:state['currentTemplateData']['description'],'parameters':state['currentTemplateData']['parameters']||{}};await API['post']('/environments/'+state['selectedEnv']+'/files/task-templates/'+_0x37fade['filename'],{'content':_0x1f365c});const _0x23471=_0x37fade['filename']['replace'](/\.md$/,'.json'),_0x33958a=_0x466658['title']||_0x466658['description']||_0x466658['parameters']&&Object['keys'](_0x466658['parameters'])['length']>0x0;_0x33958a&&await API['post']('/environments/'+state['selectedEnv']+'/files/task-templates/'+_0x23471,{'content':JSON['stringify'](_0x466658,null,0x2)}),state['selectedEnvData']['templates'][state['currentTemplate']]={..._0x37fade,'content':_0x1f365c,..._0x466658};}state['originalTemplates']=_0x509042;let _0x5060bb=null;if(state['profileHasUnsavedChanges']&&state['currentDeployProfile']&&state['currentDeployProfileData']){const _0x4d72c6=state['currentDeployProfile'],_0x2294e0=document['getElementById']('profile-description')?.['value']['trim']()||'',_0x61e62d=state['profileScriptEditor']?state['profileScriptEditor']['getValue']():'',_0x858ca3=state['currentDeployProfileData']['env_vars']||[],_0x50b511=state['currentDeployProfileData']['secrets']||[],_0x2efa65=state['currentDeployProfileData']['parameters']||{};await API['put']('/environments/'+state['selectedEnv']+'/deployment-profiles/'+_0x4d72c6,{'description':_0x2294e0,'scriptContent':_0x61e62d,'env_vars':_0x858ca3,'secrets':_0x50b511,'parameters':_0x2efa65}),_0x5060bb=_0x4d72c6,state['profileHasUnsavedChanges']=![];}return await API['put']('/environments/'+state['selectedEnv'],_0x2f4d7c),Object['assign'](state['selectedEnvData'],_0x2f4d7c),{'modifiedEnvironmentJson':!![],'modifiedTests':_0x2f4d7c['tests']!==undefined,'modifiedDeployProfile':_0x5060bb};}async function createNewEnvironment(){document['getElementById']('new-env-name')['value']='',document['getElementById']('new-env-description')['value']='',document['getElementById']('new-env-repo-url')['value']='',document['getElementById']('new-env-image')['value']='',document['getElementById']('new-env-error')['hidden']=!![],document['querySelector']('input[name=\x22new-env-repo-mode\x22][value=\x22none\x22]')['checked']=!![],document['getElementById']('new-env-repo-url-row')['hidden']=!![],document['getElementById']('new-env-repo-provider-selection')['hidden']=!![];const _0x4f7602=document['getElementById']('new-env-repo-source-provider');newEnvRepoAutocomplete&&(newEnvRepoAutocomplete['reset'](),newEnvRepoAutocomplete['disable']());const _0xe29ce7=document['getElementById']('new-env-repo-credential-mode');_0xe29ce7&&(_0xe29ce7['value']='app');try{const _0x331fcd=await API['get']('/settings/git-providers');_0x4f7602['innerHTML']='<option\x20value=\x22\x22>--\x20Select\x20a\x20provider\x20--</option>';for(const _0x17b508 of _0x331fcd['providers']||[]){_0x4f7602['innerHTML']+='<option\x20value=\x22'+Utils['escapeHtml'](_0x17b508['name'])+'\x22>'+Utils['escapeHtml'](_0x17b508['name'])+'</option>';}}catch(_0x435809){console['error']('Failed\x20to\x20load\x20git\x20providers:',_0x435809),_0x4f7602['innerHTML']='<option\x20value=\x22\x22>--\x20No\x20providers\x20available\x20--</option>';}if(!newEnvAgentSelect){const _0x1b1111=document['getElementById']('new-env-agent-wrapper');_0x1b1111['innerHTML']='';const _0x2a3308=document['createElement']('select');_0x2a3308['id']='new-env-agent',_0x2a3308['innerHTML']='\x0a\x20\x20\x20\x20\x20\x20<option\x20value=\x22\x22\x20disabled\x20selected\x20hidden>Select\x20default\x20agent...</option>\x0a\x20\x20\x20\x20\x20\x20<option\x20value=\x22claude\x22>Claude</option>\x0a\x20\x20\x20\x20\x20\x20<option\x20value=\x22codex\x22>Codex</option>\x0a\x20\x20\x20\x20\x20\x20<option\x20value=\x22gemini\x22>Gemini</option>\x0a\x20\x20\x20\x20',_0x1b1111['appendChild'](_0x2a3308),newEnvAgentSelect=new CustomSelect(_0x2a3308,{'searchable':![]});}else newEnvAgentSelect['select']('');document['getElementById']('new-env-modal')['hidden']=![],setTimeout(()=>{document['getElementById']('new-env-name')['focus']();},0x64);}function closeNewEnvModal(){document['getElementById']('new-env-modal')['hidden']=!![];}window['onNewEnvRepoModeChange']=function(_0x3414f7){const _0x4dc93f=_0x3414f7['value'],_0x256255=document['getElementById']('new-env-repo-url-row'),_0x9995b9=document['getElementById']('new-env-repo-provider-selection'),_0x4d3078=document['getElementById']('new-env-repo-url'),_0x4481e3=document['getElementById']('new-env-repo-source-provider');if(_0x4dc93f==='none')_0x256255['hidden']=!![],_0x9995b9['hidden']=!![],_0x4d3078['value']='',newEnvRepoAutocomplete&&(newEnvRepoAutocomplete['reset'](),newEnvRepoAutocomplete['disable']());else{if(_0x4dc93f==='manual')_0x256255['hidden']=![],_0x9995b9['hidden']=!![],_0x4d3078['value']='',newEnvRepoAutocomplete&&(newEnvRepoAutocomplete['reset'](),newEnvRepoAutocomplete['disable']());else _0x4dc93f==='provider'&&(_0x256255['hidden']=!![],_0x9995b9['hidden']=![],_0x4481e3['value']='',initNewEnvRepoAutocomplete());}},window['onNewEnvRepoProviderChange']=async function(){const _0xddfaf3=document['getElementById']('new-env-repo-source-provider')['value'];if(!_0xddfaf3){newEnvRepoAutocomplete&&(newEnvRepoAutocomplete['reset'](),newEnvRepoAutocomplete['disable']());return;}newEnvRepoAutocomplete&&(newEnvRepoAutocomplete['reset'](),newEnvRepoAutocomplete['enable'](),newEnvRepoAutocomplete['preloadData']());};function initNewEnvRepoAutocomplete(){const _0x213b74=document['getElementById']('new-env-repo-autocomplete-container');if(!_0x213b74)return;newEnvRepoAutocomplete&&newEnvRepoAutocomplete['destroy'](),newEnvRepoAutocomplete=new AutocompleteSelect(_0x213b74,{'placeholder':'Search\x20for\x20a\x20repository','maxItems':0x64,'emptyMessage':'No\x20repositories\x20found','loadingMessage':'Loading\x20repositories...','preload':![],'searchMode':'server','loadItems':async _0x4660e=>{const _0x54fc9b=document['getElementById']('new-env-repo-source-provider')['value'];if(!_0x54fc9b)return[];try{let _0x399cee='/settings/git-providers/'+encodeURIComponent(_0x54fc9b)+'/repositories?limit=100';_0x4660e&&_0x4660e['trim']()&&(_0x399cee+='&search='+encodeURIComponent(_0x4660e['trim']()));const _0x35c9fa=await API['get'](_0x399cee);return _0x35c9fa['repositories']||[];}catch(_0x1acdbb){console['error']('Failed\x20to\x20load\x20repositories:',_0x1acdbb);throw _0x1acdbb;}},'renderItem':_0x154868=>{const _0x23339a=_0x154868['private']===!![];let _0x2837a5=_0x154868['description']||'no\x20description';return _0x154868['descriptionSource']==='project'&&_0x154868['description']&&(_0x2837a5='Project:\x20'+_0x154868['description']),{'primary':_0x154868['full_name']||_0x154868['name'],'secondary':_0x2837a5,'icon':_0x23339a?REPO_ICON_PRIVATE:REPO_ICON_PUBLIC,'iconClass':_0x23339a?'icon-private':'icon-public'};},'sortItems':_0x54e688=>{return _0x54e688['sort']((_0x46d97a,_0x97628b)=>{const _0xfe69e8=(_0x46d97a['full_name']||_0x46d97a['name']||'')['toLowerCase'](),_0x4fc1ce=(_0x97628b['full_name']||_0x97628b['name']||'')['toLowerCase']();return _0xfe69e8['localeCompare'](_0x4fc1ce);});},'getItemValue':_0x5cc69f=>_0x5cc69f['clone_url']||_0x5cc69f['url'],'onSelect':_0x24f7a3=>{}}),newEnvRepoAutocomplete['disable']();}function showNewEnvError(_0x5f2692){const _0x1e7090=document['getElementById']('new-env-error');_0x1e7090['textContent']=_0x5f2692,_0x1e7090['hidden']=![];}function hideNewEnvError(){document['getElementById']('new-env-error')['hidden']=!![];}async function confirmCreateEnvironment(){const _0x4664de=document['getElementById']('new-env-name'),_0x3dab09=document['getElementById']('new-env-image'),_0x478a15=document['getElementById']('new-env-error'),_0x500b34=_0x4664de['value']['trim'](),_0x50501b=document['getElementById']('new-env-description')['value']['trim'](),_0x528401=_0x3dab09['value']['trim'](),_0x4d96f0=newEnvAgentSelect['selectedValue'],_0x1cdac9=document['querySelector']('input[name=\x22new-env-repo-mode\x22]:checked')['value'],_0x10c689=document['getElementById']('new-env-repo-url')['value']['trim'](),_0x5f29c3=newEnvRepoAutocomplete?newEnvRepoAutocomplete['getSelectedItem']():null,_0x209458=_0x5f29c3?_0x5f29c3['clone_url']||_0x5f29c3['url']:'',_0x154f05=document['getElementById']('new-env-repo-source-provider')['value'];_0x4664de['classList']['remove']('input-error'),_0x3dab09['classList']['remove']('input-error'),_0x478a15['hidden']=!![];let _0x37627d=![],_0x499e05='';if(!_0x500b34)_0x4664de['classList']['add']('input-error'),_0x37627d=!![],_0x499e05='Environment\x20name\x20is\x20required';else!/^[a-z0-9-]+$/['test'](_0x500b34)&&(_0x4664de['classList']['add']('input-error'),_0x37627d=!![],_0x499e05='Environment\x20name\x20must\x20contain\x20only\x20lowercase\x20letters,\x20numbers,\x20and\x20hyphens');if(!_0x528401){_0x3dab09['classList']['add']('input-error'),_0x37627d=!![];if(!_0x499e05)_0x499e05='Docker\x20image\x20is\x20required';}if(!_0x4d96f0){_0x37627d=!![];if(!_0x499e05)_0x499e05='Default\x20agent\x20is\x20required';}if(_0x1cdac9==='provider'){if(!_0x154f05){_0x37627d=!![];if(!_0x499e05)_0x499e05='Please\x20select\x20a\x20Git\x20provider';}else{if(!_0x5f29c3){_0x37627d=!![];if(!_0x499e05)_0x499e05='Please\x20select\x20a\x20repository';}}}if(_0x37627d){_0x478a15['textContent']=_0x499e05,_0x478a15['hidden']=![];return;}const _0x33dc97=document['getElementById']('new-env-create-btn');_0x33dc97['disabled']=!![],_0x33dc97['textContent']='Creating...';try{const _0x154a84={'name':_0x500b34,'image_name':_0x528401,'default_agent':_0x4d96f0};_0x50501b&&(_0x154a84['description']=_0x50501b);if(_0x1cdac9==='manual'&&_0x10c689)_0x154a84['repo_url']=_0x10c689;else{if(_0x1cdac9==='provider'&&_0x209458){_0x154a84['repo_url']=_0x209458;const _0x51f3c7=document['getElementById']('new-env-repo-credential-mode')?.['value']||'app';_0x154a84['repo_provider']={'provider':_0x154f05,'credential_mode':_0x51f3c7};}}await API['post']('/environments',_0x154a84),Utils['showSuccess']('Environment\x20\x22'+_0x500b34+'\x22\x20created\x20successfully'),closeNewEnvModal(),await loadEnvironments(),await refreshRepositoryGitStatus(),state['environments']['find'](_0xabe21f=>_0xabe21f['name']===_0x500b34)&&await window['selectEnvironment'](_0x500b34);}catch(_0x29a566){console['error']('Failed\x20to\x20create\x20environment:',_0x29a566),showNewEnvError(_0x29a566['message']||'Unknown\x20error');}finally{_0x33dc97['disabled']=![],_0x33dc97['textContent']='Create\x20Environment';}}async function deleteEnvironment(){const _0x33ba5a=state['selectedEnv'];if(!_0x33ba5a){Utils['showError']('No\x20environment\x20selected');return;}document['getElementById']('delete-env-name-display')['textContent']=_0x33ba5a,document['getElementById']('delete-env-modal')['hidden']=![];}function closeDeleteEnvModal(){document['getElementById']('delete-env-modal')['hidden']=!![];}async function confirmDeleteEnvironment(){const _0x9ae6fd=state['selectedEnv'];if(!_0x9ae6fd){closeDeleteEnvModal();return;}try{await API['delete']('/environments/'+_0x9ae6fd),Utils['showSuccess']('Environment\x20\x22'+_0x9ae6fd+'\x22\x20deleted\x20successfully'),closeDeleteEnvModal(),state['selectedEnv']=null,state['selectedEnvData']=null,sessionStorage['removeItem'](SESSION_KEY_ENV),await loadEnvironments(),await refreshRepositoryGitStatus(),state['environments']['length']===0x0&&(document['getElementById']('env-details')['hidden']=!![],document['getElementById']('env-empty-state')['hidden']=![]);}catch(_0x25b5e3){console['error']('Failed\x20to\x20delete\x20environment:',_0x25b5e3),Utils['showError']('Failed\x20to\x20delete\x20environment:\x20'+(_0x25b5e3['message']||'Unknown\x20error')),closeDeleteEnvModal();}}async function cloneEnvironment(){Utils['showToast']('Clone\x20environment\x20coming\x20soon','info');}function openRenameEnvModal(){const _0x38c788=state['selectedEnv'];if(!_0x38c788){Utils['showError']('No\x20environment\x20selected');return;}document['getElementById']('rename-env-error')['hidden']=!![],document['getElementById']('rename-env-current')['value']=_0x38c788,document['getElementById']('rename-env-new')['value']='',document['getElementById']('rename-env-modal')['hidden']=![],setTimeout(()=>{document['getElementById']('rename-env-new')['focus']();},0x64);}function closeRenameEnvModal(){document['getElementById']('rename-env-modal')['hidden']=!![],document['getElementById']('rename-env-error')['hidden']=!![];}async function confirmRenameEnvironment(){const _0x305925=state['selectedEnv'],_0x58c610=document['getElementById']('rename-env-new')['value']['trim'](),_0x823264=document['getElementById']('rename-env-error');if(!_0x58c610){_0x823264['textContent']='Please\x20enter\x20a\x20new\x20name',_0x823264['hidden']=![];return;}if(!/^[a-z0-9-]+$/['test'](_0x58c610)){_0x823264['textContent']='Name\x20must\x20contain\x20only\x20lowercase\x20letters,\x20numbers,\x20and\x20hyphens',_0x823264['hidden']=![];return;}if(_0x58c610===_0x305925){_0x823264['textContent']='New\x20name\x20must\x20be\x20different\x20from\x20current\x20name',_0x823264['hidden']=![];return;}if(state['environments']['some'](_0x18d52d=>_0x18d52d['name']===_0x58c610)){_0x823264['textContent']='An\x20environment\x20with\x20this\x20name\x20already\x20exists',_0x823264['hidden']=![];return;}const _0x5de50a=document['getElementById']('rename-env-confirm-btn'),_0x26b411=_0x5de50a['textContent'];try{_0x5de50a['disabled']=!![],_0x5de50a['textContent']='Renaming...',await API['post']('/environments/'+_0x305925+'/rename',{'newName':_0x58c610}),Utils['showSuccess']('Environment\x20renamed\x20to\x20\x22'+_0x58c610+'\x22'),closeRenameEnvModal(),state['selectedEnv']=_0x58c610,await loadEnvironments(),await selectEnvironment(_0x58c610),await refreshRepositoryGitStatus();}catch(_0x5391b3){console['error']('Failed\x20to\x20rename\x20environment:',_0x5391b3),_0x823264['textContent']=_0x5391b3['message']||'Failed\x20to\x20rename\x20environment',_0x823264['hidden']=![];}finally{_0x5de50a['disabled']=![],_0x5de50a['textContent']=_0x26b411;}}async function loadMonaco(){if(monacoLoaded)return;const _0x604559=document['querySelector']('script[src*=\x22monaco-editor\x22][src*=\x22loader.min.js\x22]');if(_0x604559){if(typeof monaco!=='undefined'){monacoLoaded=!![],monaco['editor']['setTheme'](getMonacoTheme());return;}return new Promise((_0xf70423,_0x15f62f)=>{const _0x300415=setInterval(()=>{typeof monaco!=='undefined'&&(clearInterval(_0x300415),monacoLoaded=!![],monaco['editor']['setTheme'](getMonacoTheme()),_0xf70423());},0x64);setTimeout(()=>{clearInterval(_0x300415),_0x15f62f(new Error('Monaco\x20loading\x20timeout'));},0x2710);});}return new Promise((_0x5e4980,_0x1cab06)=>{const _0x41a0e7=document['createElement']('script');_0x41a0e7['src']='https://cdnjs.cloudflare.com/ajax/libs/monaco-editor/0.45.0/min/vs/loader.min.js',_0x41a0e7['onload']=()=>{require['config']({'paths':{'vs':'https://cdnjs.cloudflare.com/ajax/libs/monaco-editor/0.45.0/min/vs'}}),require(['vs/editor/editor.main'],()=>{monacoLoaded=!![],monaco['editor']['setTheme'](getMonacoTheme()),_0x5e4980();});},_0x41a0e7['onerror']=()=>_0x1cab06(new Error('Failed\x20to\x20load\x20Monaco\x20Editor')),document['head']['appendChild'](_0x41a0e7);});}async function createMonacoEditor(_0x2f03d8,_0x10bba2,_0x1fbf96,_0xb4ee04=![]){!monacoLoaded&&await loadMonaco();const _0x5f0ed4=document['getElementById'](_0x2f03d8);if(!_0x5f0ed4)return console['error']('Monaco\x20container\x20not\x20found:',_0x2f03d8),null;const _0x5c0078=monacoEditors['get'](_0x2f03d8);_0x5c0078&&_0x5c0078['dispose']();const _0x30a1b8=monaco['editor']['create'](_0x5f0ed4,{'value':_0x10bba2||'','language':_0x1fbf96,'theme':getMonacoTheme(),'readOnly':_0xb4ee04,'minimap':{'enabled':![]},'fontSize':0xd,'lineNumbers':'on','scrollBeyondLastLine':![],'automaticLayout':!![],'wordWrap':'on','tabSize':0x2}),_0x53952d=_0x30a1b8['getModel']();return _0x53952d&&_0x53952d['setEOL'](monaco['editor']['EndOfLineSequence']['LF']),monacoEditors['set'](_0x2f03d8,_0x30a1b8),_0x30a1b8;}function getLanguageFromFilename(_0x5dfce8){const _0x19a483=_0x5dfce8['split']('.')['pop']()['toLowerCase'](),_0x4d8412={'js':'javascript','ts':'typescript','json':'json','md':'markdown','sh':'shell','dockerfile':'dockerfile','py':'python','java':'java','xml':'xml','html':'html','css':'css','yml':'yaml','yaml':'yaml'};if(_0x5dfce8==='Dockerfile')return'dockerfile';return _0x4d8412[_0x19a483]||'plaintext';}function getMonacoValue(_0x2e90d2){if(window['MarkdownFileEditor']&&window['MarkdownFileEditor']['editors']['has'](_0x2e90d2)){const _0x2fdd7e=window['MarkdownFileEditor']['editors']['get'](_0x2e90d2);return _0x2fdd7e?_0x2fdd7e['getValue']():null;}const _0x3ea9c0=monacoEditors['get'](_0x2e90d2);if(!_0x3ea9c0)return null;return _0x3ea9c0['getValue'](monaco['editor']['EndOfLinePreference']['LF']);}let buildPollTimer=null,buildElapsedTimer=null,currentBuildId=null,currentBuildEnv=null,buildOutputEventSource=null,buildOutputExpanded=!![];function openBaseImageRequiredModal(){document['getElementById']('base-image-required-modal')['hidden']=![];}function closeBaseImageRequiredModal(){document['getElementById']('base-image-required-modal')['hidden']=!![];}function openBaseImageBuildFromRequiredModal(){closeBaseImageRequiredModal(),openBaseImageBuildModal();}async function ensureBaseImageAvailableForBuild(){try{const _0x485709=await API['get']('/build/base/availability');if(_0x485709['available'])return!![];return openBaseImageRequiredModal(),![];}catch(_0x137052){return console['error']('Failed\x20to\x20check\x20base\x20image\x20availability:',_0x137052),Utils['showError'](_0x137052['message']||'Failed\x20to\x20verify\x20base\x20image\x20availability'),![];}}window['showBuildConfirmation']=async function(){if(!state['selectedEnv']){Utils['showError']('No\x20environment\x20selected');return;}const _0x5bf9c9=await ensureBaseImageAvailableForBuild();if(!_0x5bf9c9)return;document['getElementById']('build-confirm-env-name')['textContent']=state['selectedEnv'],document['getElementById']('build-confirm-modal')['hidden']=![];};function closeBuildConfirmModal(){document['getElementById']('build-confirm-modal')['hidden']=!![];}async function confirmStartBuild(){closeBuildConfirmModal(),await startManualBuild();}async function startManualBuild(){if(!state['selectedEnv']){Utils['showError']('No\x20environment\x20selected');return;}const _0x25be97=state['selectedEnv'],_0xf82c92=document['getElementById']('build-now-btn'),_0x2afa3f=document['getElementById']('build-status-message');try{_0xf82c92&&(_0xf82c92['disabled']=!![],_0xf82c92['innerHTML']='<span>⏳</span>\x20Building...');const _0x202940=await API['post']('/environments/'+_0x25be97+'/build',{});currentBuildId=_0x202940['buildId'],currentBuildEnv=_0x25be97,_0x2afa3f&&(_0x2afa3f['hidden']=![],_0x2afa3f['className']='alert\x20alert-info',_0x2afa3f['innerHTML']='\x0a\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22alert-icon\x22>⏳</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<strong>Build\x20in\x20progress...</strong>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<p\x20id=\x22build-elapsed-time\x22>Elapsed\x20time:\x200s</p>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20'),showBuildOutputContainer(),clearBuildOutput(),scrollBuildOutputIntoView(),startBuildOutputStreaming(_0x202940['buildId'],_0x25be97),startBuildPolling(_0x202940['buildId'],_0x25be97);}catch(_0x27e015){console['error']('Failed\x20to\x20start\x20build:',_0x27e015),(_0x27e015['message']||'')['toLowerCase']()['includes']('base\x20image')?openBaseImageRequiredModal():Utils['showError'](_0x27e015['message']||'Failed\x20to\x20start\x20build'),_0xf82c92&&(_0xf82c92['disabled']=![],_0xf82c92['innerHTML']='<span>📦</span>\x20Build\x20Now');}};function clearBuildTimers(){buildPollTimer&&(clearInterval(buildPollTimer),buildPollTimer=null),buildElapsedTimer&&(clearInterval(buildElapsedTimer),buildElapsedTimer=null);}function isActiveBuildContext(_0x899d32,_0x46d4d8){return currentBuildId===_0x899d32&¤tBuildEnv===_0x46d4d8;}function startBuildPolling(_0x4e7d24,_0x4f8912){const _0x303d38=Date['now']();clearBuildTimers(),buildElapsedTimer=setInterval(()=>{if(!isActiveBuildContext(_0x4e7d24,_0x4f8912)){clearBuildTimers();return;}const _0x6d073c=Math['floor']((Date['now']()-_0x303d38)/0x3e8),_0x598171=document['getElementById']('build-elapsed-time');if(_0x598171){const _0x2b6dc6=Math['floor'](_0x6d073c/0x3c),_0xd94a86=_0x6d073c%0x3c;_0x598171['textContent']=_0x2b6dc6>0x0?'Elapsed\x20time:\x20'+_0x2b6dc6+'m\x20'+_0xd94a86+'s':'Elapsed\x20time:\x20'+_0xd94a86+'s';}},0x3e8),buildPollTimer=setInterval(async()=>{if(!isActiveBuildContext(_0x4e7d24,_0x4f8912)){clearBuildTimers();return;}try{const _0x2c9e4d=await API['get']('/environments/'+_0x4f8912+'/build-status/'+_0x4e7d24);if(!isActiveBuildContext(_0x4e7d24,_0x4f8912))return;if(_0x2c9e4d['status']==='success'||_0x2c9e4d['status']==='failed'){clearBuildTimers(),currentBuildId=null,currentBuildEnv=null,stopBuildOutputStreaming();const _0x400eb6=document['getElementById']('build-now-btn');_0x400eb6&&(_0x400eb6['disabled']=![],_0x400eb6['innerHTML']='<span>📦</span>\x20Build\x20Now');const _0x1144dc=document['getElementById']('build-status-message'),_0x5399d4=formatDuration(_0x2c9e4d['duration']);_0x1144dc?(_0x2c9e4d['status']==='success'?(_0x1144dc['className']='alert\x20alert-success',_0x1144dc['innerHTML']='\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22alert-icon\x22>✅</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<strong>Build\x20completed\x20successfully!</strong>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<p>Duration:\x20'+_0x5399d4+'</p>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20',Utils['showToast']('Build\x20completed\x20in\x20'+_0x5399d4,'success')):(_0x1144dc['className']='alert\x20alert-error',_0x1144dc['innerHTML']='\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22alert-icon\x22>❌</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<strong>Build\x20failed</strong>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<p>'+Utils['escapeHtml'](_0x2c9e4d['error']||'Unknown\x20error')+'</p>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<p\x20style=\x22margin-top:\x204px;\x20font-size:\x2013px;\x22>Duration:\x20'+_0x5399d4+'</p>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20',Utils['showToast']('Build\x20failed\x20-\x20check\x20output\x20for\x20details','error')),setTimeout(()=>{_0x1144dc&&state['selectedEnv']===_0x4f8912&&(_0x1144dc['hidden']=!![]);},0x2710)):_0x2c9e4d['status']==='success'?Utils['showToast']('Build\x20completed\x20in\x20'+_0x5399d4,'success'):Utils['showToast']('Build\x20failed\x20-\x20check\x20output\x20for\x20details','error'),setTimeout(()=>{state['selectedEnv']===_0x4f8912&&loadBuildHistory();},0x3e8);}}catch(_0x10a3d5){if(!isActiveBuildContext(_0x4e7d24,_0x4f8912))return;console['error']('Failed\x20to\x20poll\x20build\x20status:',_0x10a3d5),clearBuildTimers(),currentBuildId=null,currentBuildEnv=null,stopBuildOutputStreaming();const _0x338d72=document['getElementById']('build-now-btn');_0x338d72&&(_0x338d72['disabled']=![],_0x338d72['innerHTML']='<span>📦</span>\x20Build\x20Now'),state['selectedEnv']===_0x4f8912&&loadBuildHistory();}},0xbb8);}function stopBuildPolling(){clearBuildTimers(),stopBuildOutputStreaming(),currentBuildId=null,currentBuildEnv=null;}function resetBuildPanelForEnvironmentChange(){stopBuildPolling(),clearBuildOutput(),hideBuildOutputContainer();const _0x2bfd6f=document['getElementById']('build-status-message');_0x2bfd6f&&(_0x2bfd6f['hidden']=!![],_0x2bfd6f['className']='',_0x2bfd6f['innerHTML']='');const _0x3c7695=document['getElementById']('build-now-btn');_0x3c7695&&(_0x3c7695['disabled']=![],_0x3c7695['innerHTML']='<span>📦</span>\x20Build\x20Now');}function showBuildOutputContainer(){const _0x44257a=document['getElementById']('build-output-container');_0x44257a&&(_0x44257a['hidden']=![],buildOutputExpanded=!![],updateBuildOutputToggle());}function scrollBuildOutputIntoView(){const _0x5d3c65=document['getElementById']('build-output-container');if(!_0x5d3c65||_0x5d3c65['hidden'])return;requestAnimationFrame(()=>{_0x5d3c65['scrollIntoView']({'behavior':'smooth','block':'start'});});}function hideBuildOutputContainer(){const _0x17952d=document['getElementById']('build-output-container');_0x17952d&&(_0x17952d['hidden']=!![]);}function clearBuildOutput(){const _0x587521=document['getElementById']('build-output-text');_0x587521&&(_0x587521['textContent']='');}window['toggleBuildOutput']=function(){buildOutputExpanded=!buildOutputExpanded,updateBuildOutputToggle();};function updateBuildOutputToggle(){const _0x462a00=document['getElementById']('build-output-content'),_0x25cc91=document['getElementById']('build-output-toggle-icon');_0x462a00&&(_0x462a00['style']['display']=buildOutputExpanded?'block':'none'),_0x25cc91&&(_0x25cc91['innerHTML']=buildOutputExpanded?'▼':'▶');}function appendToBuildOutput(_0x3d3751){const _0xb0a0c5=document['getElementById']('build-output-text'),_0x39c0b8=document['getElementById']('build-output-content');_0xb0a0c5&&(_0xb0a0c5['textContent']+=_0x3d3751,_0x39c0b8&&(_0x39c0b8['scrollTop']=_0x39c0b8['scrollHeight']));}function startBuildOutputStreaming(_0x48dece,_0xdad0b5){stopBuildOutputStreaming();try{const _0x366e1e=new EventSource('/build/output/stream/'+_0x48dece);buildOutputEventSource=_0x366e1e,_0x366e1e['onmessage']=_0x5e2ef5=>{if(buildOutputEventSource!==_0x366e1e)return;if(!isActiveBuildContext(_0x48dece,_0xdad0b5)||state['selectedEnv']!==_0xdad0b5){_0x366e1e['close']();buildOutputEventSource===_0x366e1e&&(buildOutputEventSource=null);return;}try{const _0x517da1=JSON['parse'](_0x5e2ef5['data']);if(_0x517da1['type']==='output')appendToBuildOutput(_0x517da1['data']);else _0x517da1['type']==='complete'&&(console['log']('Build\x20completed\x20via\x20stream:',_0x517da1),stopBuildOutputStreaming());}catch(_0x15485b){console['error']('Failed\x20to\x20parse\x20build\x20output\x20event:',_0x15485b);}},_0x366e1e['onerror']=_0xa5051f=>{if(buildOutputEventSource!==_0x366e1e)return;console['error']('Build\x20output\x20stream\x20error:',_0xa5051f),_0x366e1e['readyState']===EventSource['CLOSED']&&stopBuildOutputStreaming();};}catch(_0x15a6ae){console['error']('Failed\x20to\x20start\x20build\x20output\x20streaming:',_0x15a6ae);}}function stopBuildOutputStreaming(){buildOutputEventSource&&(buildOutputEventSource['close'](),buildOutputEventSource=null);}async function loadBuildOutputForBuild(_0x5f58f9){const _0x47a063=state['selectedEnv'];showBuildOutputContainer(),clearBuildOutput(),scrollBuildOutputIntoView();const _0x7d6bb3=document['getElementById']('build-output-text');_0x7d6bb3&&(_0x7d6bb3['textContent']='Loading\x20build\x20output...');try{const _0x4b6db3=await API['get']('/build/output/'+_0x5f58f9);if(_0x47a063!==state['selectedEnv'])return;_0x4b6db3['output']?_0x7d6bb3&&(_0x7d6bb3['textContent']=_0x4b6db3['output']):_0x7d6bb3&&(_0x7d6bb3['textContent']='No\x20output\x20available\x20for\x20this\x20build.');}catch(_0x5ba9a5){if(_0x47a063!==state['selectedEnv'])return;console['error']('Failed\x20to\x20load\x20build\x20output:',_0x5ba9a5),_0x7d6bb3&&(_0x7d6bb3['textContent']='Failed\x20to\x20load\x20build\x20output:\x20'+(_0x5ba9a5['message']||'Unknown\x20error'));}}window['viewBuildOutput']=function(_0x544dc2){loadBuildOutputForBuild(_0x544dc2);},window['loadBuildHistory']=async function(){if(!state['selectedEnv'])return;const _0x39a0e8=state['selectedEnv'],_0x27b6dc=document['getElementById']('build-history-container');if(!_0x27b6dc)return;try{_0x27b6dc['innerHTML']='<p\x20class=\x22text-muted\x22>Loading\x20build\x20history...</p>';const _0x113a01=await API['get']('/environments/'+_0x39a0e8+'/build-history?limit=20');if(_0x39a0e8!==state['selectedEnv'])return;const _0x5accd3=_0x113a01['builds']||[];if(_0x5accd3['length']===0x0){_0x27b6dc['innerHTML']='<p\x20class=\x22text-muted\x22>No\x20build\x20history\x20available\x20yet.\x20Build\x20this\x20environment\x20to\x20see\x20history.</p>';return;}_0x27b6dc['innerHTML']='\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22build-history-table\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<table\x20style=\x22width:\x20100%;\x20border-collapse:\x20collapse;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<thead>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<tr\x20style=\x22border-bottom:\x202px\x20solid\x20var(--color-border);\x20text-align:\x20left;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<th\x20style=\x22padding:\x208px;\x22>Status</th>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<th\x20style=\x22padding:\x208px;\x22>Build\x20Time</th>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<th\x20style=\x22padding:\x208px;\x22>Duration</th>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<th\x20style=\x22padding:\x208px;\x22>Triggered\x20By</th>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<th\x20style=\x22padding:\x208px;\x22>Output</th>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</tr>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</thead>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<tbody>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20'+_0x5accd3['map'](_0x3344a2=>{const _0x3be8a3=new Date(_0x3344a2['timestamp']),_0x2093e6=_0x3be8a3['toLocaleString'](),_0x253b52=formatDuration(_0x3344a2['duration']),_0x2e5808=_0x3344a2['status']==='success'?'✅':'❌',_0x2f4096=_0x3344a2['status']==='success'?'Success':'Failed',_0x5b828f=_0x3344a2['status']==='success'?'var(--color-success)':'var(--color-error)',_0x4dc440=Utils['escapeHtml'](_0x3344a2['buildId']);return'\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<tr\x20style=\x22border-bottom:\x201px\x20solid\x20var(--color-border);\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<td\x20style=\x22padding:\x208px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20style=\x22color:\x20'+_0x5b828f+';\x22>'+_0x2e5808+'\x20'+_0x2f4096+'</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</td>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<td\x20style=\x22padding:\x208px;\x20font-family:\x20var(--font-mono);\x20font-size:\x2013px;\x22>'+_0x2093e6+'</td>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<td\x20style=\x22padding:\x208px;\x22>'+_0x253b52+'</td>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<td\x20style=\x22padding:\x208px;\x22>'+Utils['escapeHtml'](formatTriggeredBy(_0x3344a2['triggeredBy']))+'</td>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<td\x20style=\x22padding:\x208px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20class=\x22btn-ghost\x20btn-small\x22\x20onclick=\x22viewBuildOutput(\x27'+_0x4dc440+'\x27)\x22\x20title=\x22View\x20build\x20output\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20View\x20Output\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</td>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</tr>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20';})['join']('')+'\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</tbody>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</table>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20';}catch(_0x1d8f15){if(_0x39a0e8!==state['selectedEnv'])return;console['error']('Failed\x20to\x20load\x20build\x20history:',_0x1d8f15),_0x27b6dc['innerHTML']='<p\x20class=\x22text-muted\x22\x20style=\x22color:\x20var(--color-error);\x22>Failed\x20to\x20load\x20build\x20history</p>';}},window['renderVolumeMounts']=function(_0x43258d){const _0x4a4092=document['getElementById']('volume-mounts-list'),_0x307bb6=_0x43258d!==undefined?_0x43258d:state['selectedEnvData']?.['volume_mounts']||[];if(!_0x4a4092)return;if(_0x307bb6['length']===0x0){_0x4a4092['innerHTML']='<p\x20class=\x22text-muted\x22>No\x20volume\x20mounts\x20configured.</p>';return;}_0x4a4092['innerHTML']=_0x307bb6['map']((_0x2937fb,_0x44a815)=>'\x0a\x20\x20\x20\x20<div\x20class=\x22volume-mount-item\x22\x20style=\x22background:\x20var(--color-bg-secondary);\x20padding:\x2016px;\x20border-radius:\x208px;\x20margin-bottom:\x2012px;\x20border:\x201px\x20solid\x20var(--color-border);\x22>\x0a\x20\x20\x20\x20\x20\x20<div\x20style=\x22display:\x20flex;\x20justify-content:\x20space-between;\x20align-items:\x20flex-start;\x20margin-bottom:\x2012px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22flex:\x201;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22font-weight:\x20500;\x20margin-bottom:\x204px;\x22>'+Utils['escapeHtml'](_0x2937fb['description']||'Volume\x20Mount')+'</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22font-size:\x2013px;\x20color:\x20var(--color-text-muted);\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20'+(_0x2937fb['read_only']?'🔒\x20Read-only':'✏️\x20Read/Write')+'\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<button\x20class=\x22btn-ghost\x20btn-small\x22\x20onclick=\x22removeVolumeMount('+_0x44a815+')\x22\x20title=\x22Remove\x20mount\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span>🗑</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</button>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20<div\x20style=\x22display:\x20grid;\x20grid-template-columns:\x201fr\x201fr;\x20gap:\x2012px;\x20font-family:\x20var(--font-mono);\x20font-size:\x2013px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22color:\x20var(--color-text-muted);\x20font-size:\x2011px;\x20margin-bottom:\x204px;\x22>HOST\x20PATH</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22background:\x20var(--color-bg);\x20padding:\x206px\x208px;\x20border-radius:\x204px;\x20word-break:\x20break-all;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20'+Utils['escapeHtml'](_0x2937fb['host_path'])+'\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22color:\x20var(--color-text-muted);\x20font-size:\x2011px;\x20margin-bottom:\x204px;\x22>CONTAINER\x20PATH</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22background:\x20var(--color-bg);\x20padding:\x206px\x208px;\x20border-radius:\x204px;\x20word-break:\x20break-all;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20'+Utils['escapeHtml'](_0x2937fb['container_path'])+'\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20<div\x20style=\x22margin-top:\x208px;\x20text-align:\x20right;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<button\x20class=\x22btn-ghost\x20btn-small\x22\x20onclick=\x22editVolumeMount('+_0x44a815+')\x22\x20style=\x22font-size:\x2012px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span>✏️</span>\x20Edit\x0a\x20\x20\x20\x20\x20\x20\x20\x20</button>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20')['join']('');},document['getElementById']('add-volume-mount-btn')?.['addEventListener']('click',()=>{showVolumeMountDialog();}),window['showVolumeMountDialog']=function(_0x57df19=null){const _0x3bd722=_0x57df19!==null?state['selectedEnvData']['volume_mounts'][_0x57df19]:null,_0x45cb8e=_0x3bd722!==null;Utils['showModal']({'title':_0x45cb8e?'Edit\x20Volume\x20Mount':'Add\x20Volume\x20Mount','content':'\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22modal-form\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20id=\x22volume-mount-error\x22\x20class=\x22modal-error\x22\x20style=\x22display:\x20none;\x20margin-bottom:\x2016px;\x20padding:\x2012px;\x20background:\x20var(--color-error-bg,\x20#fee);\x20border:\x201px\x20solid\x20var(--color-error,\x20#c00);\x20border-radius:\x206px;\x20color:\x20var(--color-error,\x20#c00);\x22></div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22form-single-column\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22form-row\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<label\x20for=\x22mount-description\x22>Description</label>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<input\x20type=\x22text\x22\x20id=\x22mount-description\x22\x20class=\x22form-input\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20placeholder=\x22e.g.,\x20Task\x20storage\x20directory\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20value=\x22'+Utils['escapeHtml'](_0x3bd722?.['description']||'')+'\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22form-row\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<label\x20for=\x22mount-host-path\x22>Host\x20Path</label>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<input\x20type=\x22text\x22\x20id=\x22mount-host-path\x22\x20class=\x22form-input\x20code-font\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20placeholder=\x22e.g.,\x20${TASK_STORAGE_PATH}\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20value=\x22'+Utils['escapeHtml'](_0x3bd722?.['host_path']||'')+'\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<p\x20class=\x22text-muted\x22\x20style=\x22margin-top:\x204px;\x20font-size:\x2012px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20Use\x20variables\x20like\x20${TASK_STORAGE_PATH},\x20${CODER_SETUP_PATH},\x20${SERVER_DATA_PATH}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</p>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22form-row\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<label\x20for=\x22mount-container-path\x22>Container\x20Path</label>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<input\x20type=\x22text\x22\x20id=\x22mount-container-path\x22\x20class=\x22form-input\x20code-font\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20placeholder=\x22e.g.,\x20/host-data/tasks\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20value=\x22'+Utils['escapeHtml'](_0x3bd722?.['container_path']||'')+'\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<p\x20class=\x22text-muted\x22\x20style=\x22margin-top:\x204px;\x20font-size:\x2012px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20Absolute\x20path\x20inside\x20the\x20container\x20where\x20the\x20volume\x20will\x20be\x20mounted\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</p>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22form-row\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<label\x20class=\x22toggle-switch\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<input\x20type=\x22checkbox\x22\x20id=\x22mount-read-only\x22\x20'+(_0x3bd722?.['read_only']?'checked':'')+'>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22toggle-slider\x22></span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22toggle-label\x22>Read-only</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</label>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<p\x20class=\x22text-muted\x22\x20style=\x22margin-top:\x204px;\x20font-size:\x2012px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20Prevent\x20containers\x20from\x20modifying\x20the\x20mounted\x20directory\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</p>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20','buttons':[{'text':'Cancel','className':'btn-secondary','onClick':()=>Utils['hideModal']()},{'text':_0x45cb8e?'Save':'Add','className':'btn-primary','onClick':()=>{const _0x2c1326=document['getElementById']('mount-description')['value']['trim'](),_0x3d0e58=document['getElementById']('mount-host-path')['value']['trim'](),_0x3e74dd=document['getElementById']('mount-container-path')['value']['trim'](),_0x23ecf7=document['getElementById']('mount-read-only')['checked'],_0x47f8bb=document['getElementById']('volume-mount-error');_0x47f8bb['style']['display']='none',_0x47f8bb['textContent']='';if(!_0x3d0e58||!_0x3e74dd){_0x47f8bb['textContent']='Host\x20path\x20and\x20container\x20path\x20are\x20required',_0x47f8bb['style']['display']='block';return;}if(!_0x3e74dd['startsWith']('/')){_0x47f8bb['textContent']='Container\x20path\x20must\x20be\x20absolute\x20(start\x20with\x20/)',_0x47f8bb['style']['display']='block';return;}const _0x36d53e={'description':_0x2c1326,'host_path':_0x3d0e58,'container_path':_0x3e74dd,'read_only':_0x23ecf7};!state['selectedEnvData']['volume_mounts']&&(state['selectedEnvData']['volume_mounts']=[]),_0x45cb8e?state['selectedEnvData']['volume_mounts'][_0x57df19]=_0x36d53e:state['selectedEnvData']['volume_mounts']['push'](_0x36d53e),renderVolumeMounts(),state['hasUnsavedChanges']=!![],updateButtonStates(),Utils['hideModal'](),Utils['showToast']('Volume\x20mount\x20'+(_0x45cb8e?'updated':'added'),'success');}}]});},window['editVolumeMount']=function(_0x13c9b1){showVolumeMountDialog(_0x13c9b1);},window['removeVolumeMount']=function(_0xdcfc18){Utils['showModal']({'title':'Remove\x20Volume\x20Mount','content':'\x0a\x20\x20\x20\x20\x20\x20<p>Are\x20you\x20sure\x20you\x20want\x20to\x20remove\x20this\x20volume\x20mount?</p>\x0a\x20\x20\x20\x20\x20\x20<div\x20style=\x22background:\x20var(--color-bg-secondary);\x20padding:\x2012px;\x20border-radius:\x206px;\x20margin-top:\x2012px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22font-weight:\x20500;\x20margin-bottom:\x204px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20'+Utils['escapeHtml'](state['selectedEnvData']['volume_mounts'][_0xdcfc18]['description']||'Volume\x20Mount')+'\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22font-family:\x20var(--font-mono);\x20font-size:\x2012px;\x20color:\x20var(--color-text-muted);\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20'+Utils['escapeHtml'](state['selectedEnvData']['volume_mounts'][_0xdcfc18]['host_path'])+'\x20→\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20'+Utils['escapeHtml'](state['selectedEnvData']['volume_mounts'][_0xdcfc18]['container_path'])+'\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20','buttons':[{'text':'Cancel','className':'btn-secondary','onClick':()=>Utils['hideModal']()},{'text':'Remove','className':'btn-danger','onClick':()=>{state['selectedEnvData']['volume_mounts']['splice'](_0xdcfc18,0x1),renderVolumeMounts(),state['hasUnsavedChanges']=!![],updateButtonStates(),Utils['hideModal'](),Utils['showToast']('Volume\x20mount\x20removed','success');}}]});};const accessTabState={'bindings':[],'roles':[],'teams':[],'users':[],'loaded':![]};async function loadAccessTab(){const _0x4bc498=document['getElementById']('access-loading'),_0x1b7baa=document['getElementById']('access-empty'),_0x2979db=document['getElementById']('access-bindings-container'),_0x22cedc=document['getElementById']('access-add-binding-btn');if(!_0x4bc498)return;_0x4bc498['hidden']=![],_0x1b7baa['hidden']=!![],_0x2979db['style']['display']='none',document['getElementById']('access-add-form')['hidden']=!![];try{const [_0x524550,_0x1be413]=await Promise['all']([API['getBindings']({'resource_type':'environment','resource_id':state['selectedEnv']}),API['getRoleDefinitions']()]);accessTabState['bindings']=_0x524550['bindings']||[],accessTabState['roles']=_0x1be413['roles']||[];try{const _0x4e518e=await API['getTeams']();accessTabState['teams']=_0x4e518e['teams']||[];}catch{accessTabState['teams']=[];}try{const _0x4b25d2=await API['getUsers']();accessTabState['users']=_0x4b25d2['users']||[];}catch{accessTabState['users']=[];}accessTabState['loaded']=!![],_0x4bc498['hidden']=!![],updateTabBadge('badge-access',accessTabState['bindings']['length']);accessTabState['bindings']['length']===0x0?_0x1b7baa['hidden']=![]:(_0x2979db['style']['display']='',renderAccessBindings());const _0x480517=state['currentUser'];_0x480517?.['hasEnvironmentsManageAccess']&&(_0x22cedc['hidden']=![]);}catch(_0x265b7a){_0x4bc498['hidden']=!![],Utils['showToast']('Failed\x20to\x20load\x20access\x20bindings:\x20'+_0x265b7a['message'],'error');}}function renderAccessBindings(){const _0x275c94=document['getElementById']('access-bindings-body');if(!_0x275c94)return;const _0x44f581=state['currentUser']?.['hasEnvironmentsManageAccess'];_0x275c94['innerHTML']=accessTabState['bindings']['map'](_0x4cd278=>{const _0x18ca68=_0x4cd278['created_at']?new Date(_0x4cd278['created_at'])['toLocaleDateString']():'—';return'\x0a\x20\x20\x20\x20\x20\x20<tr>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<td>'+Utils['escapeHtml'](_0x4cd278['subject_name']||_0x4cd278['subject_id'])+'</td>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<td><span\x20class=\x22tag\x22\x20style=\x22font-size:\x200.75em;\x20text-transform:\x20capitalize;\x22>'+Utils['escapeHtml'](_0x4cd278['subject_type'])+'</span></td>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<td>'+Utils['escapeHtml'](_0x4cd278['role_name']||_0x4cd278['role_id'])+'</td>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<td>'+Utils['escapeHtml'](_0x4cd278['created_by']||'—')+'</td>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<td\x20style=\x22white-space:\x20nowrap;\x22>'+_0x18ca68+'</td>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<td>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20'+(_0x44f581?'<button\x20class=\x22btn-ghost\x20btn-small\x22\x20onclick=\x22window.removeAccessBinding(\x27'+_0x4cd278['id']+'\x27)\x22\x20style=\x22color:\x20var(--color-danger);\x22>Remove</button>':'—')+'\x0a\x20\x20\x20\x20\x20\x20\x20\x20</td>\x0a\x20\x20\x20\x20\x20\x20</tr>';})['join']('');}function populateAccessSubjectSelect(){const _0x303a51=document['getElementById']('access-subject-type'),_0x17ce57=document['getElementById']('access-subject-id'),_0x1447bc=_0x303a51?.['value'];if(!_0x17ce57)return;const _0x347cc5=new Set(accessTabState['bindings']['filter'](_0x374032=>_0x374032['subject_type']===_0x1447bc)['map'](_0x2aaad5=>_0x2aaad5['subject_id'])),_0x15a232=_0x1447bc==='team'?accessTabState['teams']['filter'](_0x40393b=>!_0x347cc5['has'](_0x40393b['id'])):accessTabState['users']['filter'](_0x4ada1c=>!_0x347cc5['has'](_0x4ada1c['id']));_0x17ce57['innerHTML']=_0x15a232['length']?_0x15a232['map'](_0x237b3b=>{const _0x3c77a2=_0x1447bc==='team'?_0x237b3b['name']:_0x237b3b['username']||_0x237b3b['name'];return'<option\x20value=\x22'+_0x237b3b['id']+'\x22>'+Utils['escapeHtml'](_0x3c77a2)+'</option>';})['join'](''):'<option\x20value=\x22\x22>None\x20available</option>';}document['addEventListener']('DOMContentLoaded',()=>{document['getElementById']('access-add-binding-btn')?.['addEventListener']('click',()=>{const _0xbd372b=document['getElementById']('access-role-id');_0xbd372b&&(_0xbd372b['innerHTML']=accessTabState['roles']['map'](_0x4842ae=>'<option\x20value=\x22'+_0x4842ae['id']+'\x22>'+Utils['escapeHtml'](_0x4842ae['name'])+'</option>')['join']('')),populateAccessSubjectSelect(),document['getElementById']('access-add-form')['hidden']=![],document['getElementById']('access-add-binding-btn')['hidden']=!![];}),document['getElementById']('access-subject-type')?.['addEventListener']('change',populateAccessSubjectSelect),document['getElementById']('access-cancel-binding-btn')?.['addEventListener']('click',()=>{document['getElementById']('access-add-form')['hidden']=!![],document['getElementById']('access-add-binding-btn')['hidden']=![];}),document['getElementById']('access-save-binding-btn')?.['addEventListener']('click',async()=>{const _0x299725=document['getElementById']('access-subject-type')['value'],_0x585871=document['getElementById']('access-subject-id')['value'],_0x4969da=document['getElementById']('access-role-id')['value'];if(!_0x585871||!_0x4969da||!state['selectedEnv'])return;const _0x185dcd=document['getElementById']('access-save-binding-btn');_0x185dcd['disabled']=!![],_0x185dcd['textContent']='Adding…';try{await API['createBinding']({'subject_type':_0x299725,'subject_id':_0x585871,'role_id':_0x4969da,'resource_type':'environment','resource_id':state['selectedEnv']}),Utils['showToast']('Binding\x20added','success'),document['getElementById']('access-add-form')['hidden']=!![],document['getElementById']('access-add-binding-btn')['hidden']=![],await loadAccessTab();}catch(_0x5062f3){Utils['showToast'](_0x5062f3['message'],'error');}finally{_0x185dcd['disabled']=![],_0x185dcd['textContent']='Add\x20Binding';}});}),window['removeAccessBinding']=async function(_0x1f50b1){try{await API['deleteBinding'](_0x1f50b1),Utils['showToast']('Binding\x20removed','success'),await loadAccessTab();}catch(_0x37d0f1){Utils['showToast'](_0x37d0f1['message'],'error');}};
|