@profoundlogic/coderflow-server 0.5.4 → 0.5.5
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 +409 -0
- 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 +2975 -2022
- package/dist/web-ui/public/task.html +98 -2
- 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 _0x476e8f 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(_0x5256c1=>{window['monaco']?.['editor']&&monaco['editor']['setTheme'](_0x5256c1==='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(_0x2646ff){return _0x2646ff?.['input']?.['value']?.['trim']()||'';}function setBranchAutocompleteValue(_0x493147,_0xab1268){if(!_0x493147||!_0x493147['input'])return;const _0x13ff57=(_0xab1268||'')['trim']();_0x493147['input']['value']=_0x13ff57,_0x493147['clearBtn']['hidden']=!_0x13ff57,(!_0x13ff57||_0x493147['selectedItem']?.['name']!==_0x13ff57)&&(_0x493147['selectedItem']=null);}function clearBranchAutocompleteError(_0x348fa2){_0x348fa2?.['wrapper']&&_0x348fa2['wrapper']['classList']['remove']('input-error');}function setBranchAutocompleteErrorState(_0x8b0c98,_0x3f4c8a){if(!_0x8b0c98?.['wrapper'])return;_0x8b0c98['wrapper']['classList']['toggle']('input-error',Boolean(_0x3f4c8a));}function getNewRepoBranchValue(){return getBranchAutocompleteInputValue(newRepoBranchAutocomplete);}function setNewRepoBranchValue(_0x60965b){setBranchAutocompleteValue(newRepoBranchAutocomplete,_0x60965b);}function getEditRepoBranchValue(){return getBranchAutocompleteInputValue(editRepoBranchAutocomplete);}function setEditRepoBranchValue(_0xb0b86e){setBranchAutocompleteValue(editRepoBranchAutocomplete,_0xb0b86e);}function getNewRepoBranchContext(){const _0x397eb3=document['querySelector']('input[name=\x22repo-entry-mode\x22]:checked')?.['value']||'manual',_0x1609cc=_0x397eb3==='provider'?document['getElementById']('new-repo-source-provider')?.['value']||'':'',_0x539dbb=_0x397eb3==='provider'?repoAutocomplete?repoAutocomplete['getSelectedItem']():null:null,_0x1acc20=_0x397eb3==='provider'?_0x539dbb?.['clone_url']||_0x539dbb?.['url']||'':document['getElementById']('new-repo-url')?.['value']?.['trim']()||'';return{'providerName':_0x1609cc,'repoUrl':_0x1acc20};}function getEditRepoBranchContext(){const _0x50ea91=document['getElementById']('edit-repo-provider')?.['value']||'',_0x3adc83=document['getElementById']('repo-url')?.['value']?.['trim']()||'';return{'providerName':_0x50ea91,'repoUrl':_0x3adc83};}async function fetchRepoBranches({providerName:_0x485f9f,repoUrl:_0x1125fb,query:_0x3c3363}){if(!_0x485f9f||!_0x1125fb)return[];const _0x3469a7='/settings/git-providers/'+encodeURIComponent(_0x485f9f)+'/branches';let _0x225259=_0x3469a7+'?repoUrl='+encodeURIComponent(_0x1125fb)+'&limit=100';_0x3c3363&&_0x3c3363['trim']()&&(_0x225259+='&search='+encodeURIComponent(_0x3c3363['trim']()));try{const _0x3d68a0=await API['get'](_0x225259);return _0x3d68a0['branches']||[];}catch(_0x512482){console['error']('Failed\x20to\x20load\x20repository\x20branches:',_0x512482);throw _0x512482;}}function reloadNewRepoBranchSuggestions(){if(!newRepoBranchAutocomplete)return;const {providerName:_0x2cff57,repoUrl:_0x46059a}=getNewRepoBranchContext();newRepoBranchAutocomplete['selectedItem']=null,newRepoBranchAutocomplete['clearBtn']['hidden']=!![];if(!_0x2cff57||!_0x46059a){newRepoBranchAutocomplete['close']();return;}return newRepoBranchAutocomplete['loadAndShow']('');}function reloadEditRepoBranchSuggestions(){if(!editRepoBranchAutocomplete)return;const {providerName:_0x5dcc2b,repoUrl:_0x542e26}=getEditRepoBranchContext();editRepoBranchAutocomplete['selectedItem']=null,editRepoBranchAutocomplete['clearBtn']['hidden']=!![];if(!_0x5dcc2b||!_0x542e26){editRepoBranchAutocomplete['close']();return;}return editRepoBranchAutocomplete['loadAndShow']('');}function isKnownPostCloneAction(_0x34ef35){return KNOWN_POST_CLONE_ACTIONS['includes'](_0x34ef35);}document['addEventListener']('DOMContentLoaded',initialize);async function initialize(){try{initTheme(),mountThemeToggle(),await checkAdminAccess();const _0x29ed63=await API['get']('/auth/me');state['currentUser']=_0x29ed63['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(_0x342514){console['error']('Initialization\x20error:',_0x342514),Utils['showError']('Failed\x20to\x20initialize\x20environment\x20management');}}async function checkAdminAccess(){try{const _0x13b614=await API['getCurrentUser']();if(!_0x13b614['hasEnvironmentsManage']){Utils['showToast']('Access\x20denied:\x20Environment\x20admin\x20privileges\x20required','error'),setTimeout(()=>{window['location']['href']='index.html';},0x7d0);return;}}catch(_0x36a247){window['location']['href']='login.html';}}function initializeCustomSelects(){if(!defaultAgentSelect){const _0x37c1ef=document['getElementById']('env-default-agent-wrapper');if(!_0x37c1ef){console['error']('Wrapper\x20element\x20not\x20found');return;}_0x37c1ef['innerHTML']='';const _0x4953f=document['createElement']('select');_0x4953f['id']='env-default-agent',_0x4953f['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',_0x37c1ef['appendChild'](_0x4953f),defaultAgentSelect=new CustomSelect(_0x4953f,{'searchable':![]}),_0x4953f['addEventListener']('change',()=>{if(defaultAgentSelectInitializing)return;markAsModified();});}}function setupEventListeners(){document['querySelectorAll']('.content-tab')['forEach'](_0x292202=>{_0x292202['addEventListener']('click',()=>switchTab(_0x292202['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',_0xbeeee5=>{const _0x1d8086=_0xbeeee5['target']['value']['trim'](),_0x1ce7ef=document['getElementById']('new-env-image');!_0x1ce7ef['dataset']['userModified']&&(_0x1ce7ef['value']=_0x1d8086);}),document['getElementById']('new-env-image')['addEventListener']('input',_0x2ecda0=>{const _0x27ae39=document['getElementById']('new-env-name')['value']['trim']();_0x2ecda0['target']['value']!==_0x27ae39?_0x2ecda0['target']['dataset']['userModified']='true':delete _0x2ecda0['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',_0x17295d=>{_0x17295d['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 _0x1bb82a=document['getElementById']('secret-value');_0x1bb82a['addEventListener']('beforeinput',handleSecretValueBeforeInput),_0x1bb82a['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'](_0x3f0103=>document['getElementById'](_0x3f0103)['addEventListener']('change',updateConnectionFormVisibility)),document['getElementById']('feature-sync')['addEventListener']('change',_0x1a2c4e=>{const _0x467d99=document['getElementById']('feature-ssh');_0x1a2c4e['target']['checked']?(_0x467d99['checked']=!![],_0x467d99['disabled']=!![]):_0x467d99['disabled']=![];}),document['getElementById']('connection-available-tasks')['addEventListener']('change',updateConnectionFormVisibility),document['getElementById']('connection-available-deploy')['addEventListener']('change',updateConnectionFormVisibility),document['getElementById']('connection-verify-cert')['addEventListener']('change',_0x21dcb1=>{document['getElementById']('connection-verify-cert-warning')['hidden']=_0x21dcb1['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 _0x4f69cf=document['getElementById']('connection-ssh-private-key');_0x4f69cf['addEventListener']('beforeinput',handleSshKeyBeforeInput),_0x4f69cf['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 _0x5184d6=document['getElementById']('install-key-password'),_0xf4889=document['getElementById']('install-key-password-toggle'),_0x49a614=_0x5184d6['type']==='password';_0x5184d6['type']=_0x49a614?'text':'password',_0xf4889['querySelector']('.eye-open')['style']['display']=_0x49a614?'none':'',_0xf4889['querySelector']('.eye-closed')['style']['display']=_0x49a614?'':'none';}),document['getElementById']('connection-ibmi-helper-link')['addEventListener']('click',_0xb1fcfd=>{_0xb1fcfd['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'](_0x444830=>{_0x444830['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 _0x450660=document['getElementById']('delete-repo-btn');_0x450660&&_0x450660['addEventListener']('click',()=>{state['currentRepo']!==null&&removeRepo(state['currentRepo']);});const _0xa4311=document['getElementById']('delete-test-btn');_0xa4311&&_0xa4311['addEventListener']('click',()=>{state['currentTest']!==null&&removeTest(state['currentTest']);});const _0x591571=document['getElementById']('delete-template-btn');_0x591571&&_0x591571['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 _0x382aa5=document['getElementById']('env-skills-manage-btn');if(_0x382aa5)_0x382aa5['addEventListener']('click',openSkillsModal);const _0x443635=document['getElementById']('skills-modal');if(_0x443635){const _0x350228=_0x443635['querySelector']('.modal-close'),_0x299c1a=_0x443635['querySelector']('.modal-overlay'),_0x58a08f=document['getElementById']('skills-modal-cancel-btn'),_0xf3e9a1=document['getElementById']('skills-modal-apply-btn'),_0x397c5e=document['getElementById']('skills-modal-search-input'),_0x4d1872=document['getElementById']('skills-modal-search-clear');_0x350228?.['addEventListener']('click',closeSkillsModal),_0x299c1a?.['addEventListener']('click',closeSkillsModal),_0x58a08f?.['addEventListener']('click',closeSkillsModal),_0xf3e9a1?.['addEventListener']('click',applySkillsModalSelection),_0x397c5e?.['addEventListener']('input',renderSkillsModal),_0x4d1872?.['addEventListener']('click',()=>{_0x397c5e&&(_0x397c5e['value']='',_0x397c5e['focus']()),renderSkillsModal();});}const _0x345d9c=document['getElementById']('actions-menu-btn'),_0x52b622=document['getElementById']('actions-menu');_0x345d9c['addEventListener']('click',_0x1b70b5=>{_0x1b70b5['stopPropagation']();const _0x4d9306=document['getElementById']('admin-menu');if(_0x4d9306)_0x4d9306['hidden']=!![];_0x52b622['hidden']=!_0x52b622['hidden'];}),document['addEventListener']('click',_0xeb4325=>{!_0x52b622['hidden']&&!_0x52b622['contains'](_0xeb4325['target'])&&(_0x52b622['hidden']=!![]);}),_0x52b622['addEventListener']('click',()=>{_0x52b622['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 _0xd20c63=document['getElementById']('env-tabs-wrapper'),_0x163921=document['getElementById']('env-tabs-scroll-left'),_0x1260b2=document['getElementById']('env-tabs-scroll-right');if(!_0xd20c63||!_0x163921||!_0x1260b2)return;const _0x41a825=0xc8;function _0x2e9f03(){const {scrollLeft:_0x822ae4,scrollWidth:_0x5810c5,clientWidth:_0x42393f}=_0xd20c63,_0x163b87=_0x822ae4>0x1,_0x32a181=_0x822ae4<_0x5810c5-_0x42393f-0x1;_0x163921['classList']['toggle']('visible',_0x163b87),_0x1260b2['classList']['toggle']('visible',_0x32a181),_0xd20c63['classList']['toggle']('fade-left',_0x163b87),_0xd20c63['classList']['toggle']('fade-right',_0x32a181);}_0x163921['addEventListener']('click',()=>{_0xd20c63['scrollBy']({'left':-_0x41a825,'behavior':'smooth'});}),_0x1260b2['addEventListener']('click',()=>{_0xd20c63['scrollBy']({'left':_0x41a825,'behavior':'smooth'});}),_0xd20c63['addEventListener']('scroll',_0x2e9f03);const _0xedfa02=new ResizeObserver(()=>{_0x2e9f03();});_0xedfa02['observe'](_0xd20c63),_0x2e9f03(),window['updateEnvTabsScrollState']=_0x2e9f03;}function scrollToActiveEnvTab(){const _0x17292b=document['getElementById']('env-tabs-wrapper'),_0x388085=document['querySelector']('.env-tab.active');if(!_0x17292b||!_0x388085)return;const _0x3f8a31=_0x17292b['getBoundingClientRect'](),_0x4499b7=_0x388085['getBoundingClientRect']();if(_0x4499b7['left']<_0x3f8a31['left'])_0x17292b['scrollBy']({'left':_0x4499b7['left']-_0x3f8a31['left']-0x10,'behavior':'smooth'});else _0x4499b7['right']>_0x3f8a31['right']&&_0x17292b['scrollBy']({'left':_0x4499b7['right']-_0x3f8a31['right']+0x10,'behavior':'smooth'});}function setupContentNavScrolling(){const _0x45bc58=document['getElementById']('content-nav'),_0x32994a=document['getElementById']('content-nav-scroll-left'),_0x2e483f=document['getElementById']('content-nav-scroll-right');if(!_0x45bc58||!_0x32994a||!_0x2e483f)return;const _0x8a5f7=0x96;function _0x4112a4(){const {scrollLeft:_0x18569b,scrollWidth:_0x3a9c01,clientWidth:_0x118d9b}=_0x45bc58,_0x46734a=_0x18569b>0x1,_0x184be2=_0x18569b<_0x3a9c01-_0x118d9b-0x1;_0x32994a['classList']['toggle']('visible',_0x46734a),_0x2e483f['classList']['toggle']('visible',_0x184be2),_0x45bc58['classList']['toggle']('fade-left',_0x46734a),_0x45bc58['classList']['toggle']('fade-right',_0x184be2);}_0x32994a['addEventListener']('click',()=>{_0x45bc58['scrollBy']({'left':-_0x8a5f7,'behavior':'smooth'});}),_0x2e483f['addEventListener']('click',()=>{_0x45bc58['scrollBy']({'left':_0x8a5f7,'behavior':'smooth'});}),_0x45bc58['addEventListener']('scroll',_0x4112a4);const _0x41714a=new ResizeObserver(()=>{_0x4112a4();});_0x41714a['observe'](_0x45bc58),_0x4112a4(),window['updateContentNavScrollState']=_0x4112a4;}function scrollToActiveContentTab(){const _0x1e5509=document['getElementById']('content-nav'),_0x562663=document['querySelector']('.content-tab.active');if(!_0x1e5509||!_0x562663)return;const _0x33a9fe=_0x1e5509['getBoundingClientRect'](),_0x201684=_0x562663['getBoundingClientRect']();if(_0x201684['left']<_0x33a9fe['left'])_0x1e5509['scrollBy']({'left':_0x201684['left']-_0x33a9fe['left']-0x10,'behavior':'smooth'});else _0x201684['right']>_0x33a9fe['right']&&_0x1e5509['scrollBy']({'left':_0x201684['right']-_0x33a9fe['right']+0x10,'behavior':'smooth'});}async function loadEnvironments(){try{const _0x2689a9=await API['get']('/environments');state['environments']=_0x2689a9['environments']||[],renderEnvironmentsList();if(state['environments']['length']>0x0){const _0x11b39a=sessionStorage['getItem'](SESSION_KEY_ENV),_0x1f8f47=_0x2689a9['default_environment'];let _0x4e572c;if(_0x11b39a&&state['environments']['find'](_0x5ae689=>_0x5ae689['name']===_0x11b39a))_0x4e572c=_0x11b39a;else _0x1f8f47&&state['environments']['find'](_0x3476c0=>_0x3476c0['name']===_0x1f8f47)?_0x4e572c=_0x1f8f47:_0x4e572c=state['environments'][0x0]['name'];await selectEnvironment(_0x4e572c);}}catch(_0x57f0fa){console['error']('Failed\x20to\x20load\x20environments:',_0x57f0fa),document['getElementById']('env-tabs')['innerHTML']='<div\x20class=\x22error\x22>Failed\x20to\x20load\x20environments</div>';}}function renderEnvironmentsList(){const _0x2afb4a=document['getElementById']('env-tabs');if(state['environments']['length']===0x0){_0x2afb4a['innerHTML']='<div\x20class=\x22empty-state-inline\x22>No\x20environments\x20found</div>';return;}_0x2afb4a['innerHTML']=state['environments']['map'](_0x2e4af9=>'\x0a\x20\x20\x20\x20<button\x20class=\x22env-tab\x20'+(_0x2e4af9['name']===state['selectedEnv']?'active':'')+'\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20data-env=\x22'+_0x2e4af9['name']+'\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20onclick=\x22selectEnvironment(\x27'+_0x2e4af9['name']+'\x27)\x22>\x0a\x20\x20\x20\x20\x20\x20'+_0x2e4af9['name']+'\x0a\x20\x20\x20\x20</button>\x0a\x20\x20')['join'](''),window['updateEnvTabsScrollState']&&requestAnimationFrame(()=>{window['updateEnvTabsScrollState']();});}window['selectEnvironment']=async function(_0x31ef6e){if(state['hasUnsavedChanges']){const _0x28eab7=await ConfirmDialog['show']({'title':'Unsaved\x20Changes','message':'You\x20have\x20unsaved\x20changes\x20that\x20will\x20be\x20lost.\x20Continue?','confirmText':'Continue','danger':!![]});if(!_0x28eab7)return;}const _0x49e29a=state['selectedEnv'];_0x49e29a&&_0x49e29a!==_0x31ef6e&&resetBuildPanelForEnvironmentChange(),state['selectedEnv']=_0x31ef6e,sessionStorage['setItem'](SESSION_KEY_ENV,_0x31ef6e),state['hasUnsavedChanges']=![],document['querySelectorAll']('.env-tab')['forEach'](_0x3c3cff=>{_0x3c3cff['classList']['toggle']('active',_0x3c3cff['dataset']['env']===_0x31ef6e);}),scrollToActiveEnvTab(),document['getElementById']('env-empty-state')['hidden']=!![],document['getElementById']('env-details')['hidden']=![],await loadEnvironmentDetails(_0x31ef6e);};async function loadEnvironmentDetails(_0x917b1e){try{const _0x17b66a=await API['get']('/environments/'+_0x917b1e);if(_0x917b1e!==state['selectedEnv'])return;state['selectedEnvData']=_0x17b66a,state['originalTemplates']=(_0x17b66a['templates']||[])['map'](_0x3565c2=>_0x3565c2['filename']),state['hasUnsavedChanges']=![],state['currentRepo']=null,cleanupEditRepoAutocomplete();const _0x532839=['server-command-editor','file-editor','script-editor','template-md-editor'];for(const _0x113428 of _0x532839){const _0x24d2b5=monacoEditors['get'](_0x113428);_0x24d2b5&&(_0x24d2b5['dispose'](),monacoEditors['delete'](_0x113428));}const _0x3440bf=['agents-editor','readme-editor'];for(const _0x4ef76e of _0x3440bf){window['MarkdownFileEditor']&&window['MarkdownFileEditor']['has'](_0x4ef76e)&&window['MarkdownFileEditor']['dispose'](_0x4ef76e);const _0x1efe84=monacoEditors['get'](_0x4ef76e);_0x1efe84&&(_0x1efe84['dispose'](),monacoEditors['delete'](_0x4ef76e));}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 _0x3826a1=document['getElementById']('deployment-progress-panel');_0x3826a1&&(_0x3826a1['hidden']=!![]),state['deploymentParamCache']={},updateButtonStates(),renderEnvironmentDetails(),setupTabEventListeners(),state['currentTab']==='deploy'&&loadDeploymentHistory();}catch(_0x3ab259){console['error']('Failed\x20to\x20load\x20environment\x20details:',_0x3ab259),Utils['showError']('Failed\x20to\x20load\x20environment\x20details');}}function setupTabEventListeners(){const _0x485dc7=document['getElementById']('rebuild-schedule-enabled-build-tab'),_0x3aae5c=document['getElementById']('rebuild-interval-build-tab');if(_0x485dc7)_0x485dc7['addEventListener']('change',toggleRebuildSchedule);if(_0x3aae5c)_0x3aae5c['addEventListener']('input',markAsModified);const _0x3052e4=document['getElementById']('server-enabled'),_0x211217=document['getElementById']('server-name'),_0x1f90b4=document['getElementById']('server-proxy'),_0x4f123e=document['getElementById']('server-qa-url'),_0x3a046e=document['getElementById']('server-auth-user-property'),_0x5bb694=document['getElementById']('server-auth-password-property'),_0x5a9755=document['getElementById']('add-port-btn'),_0x196b25=document['getElementById']('add-url-btn'),_0x17a735=document['getElementById']('clear-primary-url-btn'),_0x7cb532=document['getElementById']('add-proxy-header-btn'),_0x27078b=document['getElementById']('add-port-qa-url-btn');if(_0x3052e4)_0x3052e4['addEventListener']('change',toggleServerConfig);if(_0x211217)_0x211217['addEventListener']('input',markAsModified);if(_0x1f90b4)_0x1f90b4['addEventListener']('input',markAsModified);if(_0x4f123e)_0x4f123e['addEventListener']('input',markAsModified);if(_0x3a046e)_0x3a046e['addEventListener']('input',markAsModified);if(_0x5bb694)_0x5bb694['addEventListener']('input',markAsModified);if(_0x5a9755)_0x5a9755['addEventListener']('click',addPort);if(_0x196b25)_0x196b25['addEventListener']('click',addURL);if(_0x17a735)_0x17a735['addEventListener']('click',clearPrimaryURL);if(_0x7cb532)_0x7cb532['addEventListener']('click',addProxyHeader);if(_0x27078b)_0x27078b['addEventListener']('click',addPortQaUrl);const _0x43e80e=document['getElementById']('agents-editor'),_0x2fbd6a=document['getElementById']('preview-agents-btn');_0x43e80e&&_0x43e80e['addEventListener']('input',()=>{markAsModified(),updateAgentStats();});if(_0x2fbd6a)_0x2fbd6a['addEventListener']('click',toggleAgentsPreview);document['querySelectorAll']('#scripts-section-body\x20.script-tab')['forEach'](_0x1d138a=>{_0x1d138a['addEventListener']('click',()=>{saveCurrentScriptToState(),switchScript(_0x1d138a['dataset']['script']);});});const _0x54b7d0=document['getElementById']('scripts-section-header');_0x54b7d0&&_0x54b7d0['addEventListener']('click',toggleScriptsSection);const _0x500e9d=document['getElementById']('preview-dockerfile-btn');_0x500e9d&&_0x500e9d['addEventListener']('click',showDockerfilePreview);const _0x228025=document['getElementById']('dockerfile-preview-modal');_0x228025&&(_0x228025['querySelector']('.modal-close')['addEventListener']('click',closeDockerfilePreviewModal),_0x228025['querySelector']('.modal-overlay')['addEventListener']('click',closeDockerfilePreviewModal),document['getElementById']('dockerfile-preview-close-btn')['addEventListener']('click',closeDockerfilePreviewModal),document['getElementById']('dockerfile-copy-btn')['addEventListener']('click',copyDockerfileToClipboard));const _0xdef268=document['getElementById']('preview-template-btn');if(_0xdef268)_0xdef268['addEventListener']('click',toggleTemplatePreview);initializeAutomationFormOptions(),initializeAutomationModalCustomSelects(),initializeAutomationInstructionsEditor();const _0x1a5b65=document['getElementById']('add-automation-btn');if(_0x1a5b65)_0x1a5b65['addEventListener']('click',()=>openAutomationModal('create'));const _0x2a0f84=document['getElementById']('automations-empty-create-btn');if(_0x2a0f84)_0x2a0f84['addEventListener']('click',()=>openAutomationModal('create'));const _0x2902a3=document['getElementById']('automation-history-back-btn');if(_0x2902a3)_0x2902a3['addEventListener']('click',closeAutomationHistoryView);const _0x3797e1=document['getElementById']('automation-history-run-btn');if(_0x3797e1)_0x3797e1['addEventListener']('click',triggerViewedAutomation);const _0x13cec4=document['getElementById']('automations-table-body');_0x13cec4&&(_0x13cec4['addEventListener']('click',handleAutomationTableActionClick),_0x13cec4['addEventListener']('change',handleAutomationTableToggleChange));const _0x2efaa2=document['getElementById']('automation-modal'),_0x572405=_0x2efaa2?.['querySelector']('.modal-overlay');if(_0x572405)_0x572405['addEventListener']('click',closeAutomationModal);const _0x420552=document['getElementById']('automation-modal-close');if(_0x420552)_0x420552['addEventListener']('click',closeAutomationModal);const _0xa98acf=document['getElementById']('automation-cancel-btn');if(_0xa98acf)_0xa98acf['addEventListener']('click',closeAutomationModal);const _0x533d42=document['getElementById']('automation-save-btn');if(_0x533d42)_0x533d42['addEventListener']('click',saveAutomationFromModal);const _0x578356=document['getElementById']('automation-frequency');_0x578356&&_0x578356['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'](_0x2d783b=>{_0x2d783b['addEventListener']('change',updateAutomationScheduleSummary),_0x2d783b['addEventListener']('input',updateAutomationScheduleSummary);});const _0x202a4e=document['getElementById']('automation-recurring-days');_0x202a4e&&_0x202a4e['addEventListener']('change',updateAutomationScheduleSummary);const _0x7357db=document['getElementById']('automation-agent-name');if(_0x7357db)_0x7357db['addEventListener']('change',updateAutomationAgentFields);document['querySelectorAll']('input[name=\x22automation-task-mode\x22]')['forEach'](_0x3366d8=>{_0x3366d8['addEventListener']('change',updateAutomationTaskMode);});const _0x276e0=document['getElementById']('automation-template-name');_0x276e0&&_0x276e0['addEventListener']('change',()=>{renderAutomationTemplateParameters();});}function updateTabBadge(_0x106e4f,_0x341ae3){const _0x27bb5f=document['getElementById'](_0x106e4f);if(!_0x27bb5f)return;_0x341ae3>0x0?(_0x27bb5f['textContent']=_0x341ae3,_0x27bb5f['hidden']=![]):_0x27bb5f['hidden']=!![];}function renderEnvironmentDetails(){const _0xdc53c3=state['selectedEnvData'];updateTabBadge('badge-secrets',0x0),updateTabBadge('badge-automations',0x0),updateTabBadge('badge-access',0x0),updateTabBadge('badge-deploy',(_0xdc53c3['deployment_profiles']||[])['length']),document['getElementById']('env-name-display')['textContent']=_0xdc53c3['name'],document['getElementById']('env-description-display')['textContent']=_0xdc53c3['description']||'No\x20description',initializeCustomSelects(),defaultAgentSelectInitializing=!![],document['getElementById']('env-description')['value']=_0xdc53c3['description']||'',defaultAgentSelect['select'](_0xdc53c3['default_agent']||'claude'),document['getElementById']('env-image-name')['value']=_0xdc53c3['image_name']||'',document['getElementById']('env-timezone')['value']=_0xdc53c3['timezone']||'',document['getElementById']('env-screen-render-url')['value']=_0xdc53c3['screenRenderUrl']||'',state['selectedEnvData']['skills']=Array['isArray'](_0xdc53c3['skills'])?_0xdc53c3['skills']:[];const _0x4d9ec3=_0xdc53c3['rebuild_schedule']||{},_0x698b7e=_0x4d9ec3['enabled']===!![];document['getElementById']('rebuild-schedule-enabled-build-tab')['checked']=_0x698b7e,document['getElementById']('rebuild-interval-build-tab')['value']=_0x4d9ec3['interval_hours']||0x18,document['getElementById']('rebuild-schedule-config-build-tab')['hidden']=!_0x698b7e,defaultAgentSelectInitializing=![];const _0x3e90b2=_0xdc53c3['repos']?.['length']||0x0,_0x41ab81=Object['keys'](_0xdc53c3['tests']||{})['length'],_0x1bd9bc=_0xdc53c3['templates']?.['length']||0x0,_0x83600=_0xdc53c3['deployment_profiles']?.['length']||0x0;document['getElementById']('stat-repos')['textContent']=_0x3e90b2,document['getElementById']('stat-repos-label')['textContent']=_0x3e90b2===0x1?'Repository':'Repositories',document['getElementById']('stat-tests')['textContent']=_0x41ab81,document['getElementById']('stat-tests-label')['textContent']=_0x41ab81===0x1?'Test\x20Command':'Test\x20Commands',document['getElementById']('stat-templates')['textContent']=_0x1bd9bc,document['getElementById']('stat-templates-label')['textContent']=_0x1bd9bc===0x1?'Template':'Templates',document['getElementById']('stat-deploy-profiles')['textContent']=_0x83600,document['getElementById']('stat-deploy-profiles-label')['textContent']=_0x83600===0x1?'Deploy\x20Profile':'Deploy\x20Profiles',renderReadme(),renderEnvironmentSkills();const _0xa1aacd=state['selectedEnv'];loadAvailableSkills()['then'](()=>{if(state['selectedEnv']!==_0xa1aacd)return;renderEnvironmentSkills(),state['skillsModalOpen']&&renderSkillsModal();}),renderRepos(),renderServerConfig(),renderAgentInstructions(),renderTests(),renderTemplates(),state['viewingAutomationId']=null,closeAutomationHistoryView(),renderAutomationAgentOptions(_0xdc53c3['default_agent']||''),renderAutomations();const _0x4fac17=state['selectedEnv'];loadSecrets()['then'](()=>{if(state['selectedEnv']!==_0x4fac17)return;renderSecrets();}),loadConnections(),renderConnections();const _0xa8a921=state['selectedEnv'];API['getBindings']({'environment':state['selectedEnv']})['then'](_0x15acac=>{if(state['selectedEnv']!==_0xa8a921)return;updateTabBadge('badge-access',(_0x15acac['bindings']||[])['length']);})['catch'](()=>{}),state['currentTab']==='build'&&loadBuildHistory();}async function loadAvailableSkills(){if(state['availableSkillsLoaded']||state['availableSkillsLoading'])return;state['availableSkillsLoading']=!![],state['availableSkillsError']=null;try{const _0xfd6de3=await API['getSkills']();state['availableSkills']=_0xfd6de3['skills']||[],state['availableSkillsLoaded']=!![];}catch(_0x4c5abc){console['error']('Failed\x20to\x20load\x20skills:',_0x4c5abc),state['availableSkillsError']=_0x4c5abc['message']||'Failed\x20to\x20load\x20skills.';}finally{state['availableSkillsLoading']=![];}}function getSkillDisplayInfo(_0x5c54a3){const _0x4627aa=state['availableSkills']['find'](_0x3b4c6c=>_0x3b4c6c['id']===_0x5c54a3);if(_0x4627aa)return{'id':_0x4627aa['id'],'name':_0x4627aa['name']||_0x4627aa['id'],'description':_0x4627aa['description']||''};return{'id':_0x5c54a3,'name':_0x5c54a3,'description':''};}function renderEnvironmentSkills(){const _0x53f81c=document['getElementById']('env-skills-chips'),_0x24c582=document['getElementById']('env-skills-empty');if(!_0x53f81c||!_0x24c582)return;const _0x5643d3=state['selectedEnvData']?.['skills']||[];_0x53f81c['innerHTML']='';if(_0x5643d3['length']===0x0){_0x53f81c['hidden']=!![],_0x53f81c['classList']['add']('skills-chip-grid-empty'),_0x24c582['hidden']=![];return;}_0x53f81c['hidden']=![],_0x53f81c['classList']['remove']('skills-chip-grid-empty'),_0x24c582['hidden']=!![],_0x5643d3['forEach'](_0x43ce6e=>{const _0x2fb32f=getSkillDisplayInfo(_0x43ce6e),_0x1fc72f=document['createElement']('div');_0x1fc72f['className']='skill-chip',_0x1fc72f['dataset']['skillId']=_0x2fb32f['id'],_0x1fc72f['innerHTML']='\x0a\x20\x20\x20\x20\x20\x20<span\x20class=\x22skill-chip-name\x22>'+Utils['escapeHtml'](_0x2fb32f['name'])+'</span>\x0a\x20\x20\x20\x20\x20\x20<span\x20class=\x22skill-chip-id\x22>'+Utils['escapeHtml'](_0x2fb32f['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 _0x4ef45e=_0x1fc72f['querySelector']('.skill-chip-remove');_0x4ef45e['addEventListener']('click',()=>removeSkillFromEnvironment(_0x2fb32f['id'])),_0x53f81c['appendChild'](_0x1fc72f);});}function removeSkillFromEnvironment(_0x5599a3){const _0x16529a=getConnectionRequiredSkills();if(_0x16529a['has'](_0x5599a3)){Utils['showError']('Cannot\x20remove\x20skill\x20\x22'+_0x5599a3+'\x22\x20—\x20it\x20is\x20required\x20by\x20an\x20external\x20connection.\x20Remove\x20the\x20connection\x20first.');return;}const _0x57c80d=state['selectedEnvData']?.['skills']||[],_0x1d7324=_0x57c80d['filter'](_0x15482d=>_0x15482d!==_0x5599a3);state['selectedEnvData']['skills']=_0x1d7324,markAsModified(),renderEnvironmentSkills(),state['skillsModalOpen']&&(state['skillsModalSelection']=[..._0x1d7324],renderSkillsModal());}function openSkillsModal(){if(!state['selectedEnvData'])return;const _0x24c025=document['getElementById']('skills-modal');if(!_0x24c025)return;state['skillsModalOpen']=!![],state['skillsModalSelection']=[...state['selectedEnvData']['skills']||[]];const _0x19587e=document['getElementById']('skills-modal-search-input');_0x19587e&&(_0x19587e['value']=''),_0x24c025['hidden']=![],loadAvailableSkills()['then'](()=>{renderSkillsModal(),_0x19587e&&_0x19587e['focus']();}),renderSkillsModal();}function closeSkillsModal(){const _0x5a2660=document['getElementById']('skills-modal');_0x5a2660&&(_0x5a2660['hidden']=!![]),state['skillsModalOpen']=![];}function applySkillsModalSelection(){if(!state['selectedEnvData'])return;state['selectedEnvData']['skills']=[...state['skillsModalSelection']],markAsModified(),renderEnvironmentSkills(),closeSkillsModal();}function renderSkillsModal(){const _0x4746fe=document['getElementById']('skills-modal-list'),_0x365482=document['getElementById']('skills-modal-selected-list'),_0x11619f=document['getElementById']('skills-modal-selected-empty'),_0x636f21=document['getElementById']('skills-modal-selected-count'),_0x3ce9d4=document['getElementById']('skills-modal-search-input'),_0x271647=document['getElementById']('skills-modal-search-clear'),_0x4d462c=document['getElementById']('skills-modal-search-meta'),_0x259b7e=document['getElementById']('skills-modal-error'),_0x19dd86=document['getElementById']('skills-modal-loading');if(!_0x4746fe||!_0x365482||!_0x11619f||!_0x636f21)return;const _0x2b351a=(_0x3ce9d4?.['value']||'')['trim']()['toLowerCase']();_0x271647&&(_0x271647['hidden']=!_0x2b351a);_0x259b7e&&(_0x259b7e['hidden']=!![]);_0x19dd86&&(_0x19dd86['hidden']=!state['availableSkillsLoading']);state['availableSkillsError']&&_0x259b7e&&(_0x259b7e['textContent']=state['availableSkillsError'],_0x259b7e['hidden']=![]);const _0x558f11=state['availableSkills']||[],_0x4f17c4=_0x558f11['filter'](_0x5f20ff=>{const _0x4e6b0f=(_0x5f20ff['name']||'')['toLowerCase'](),_0x172b9e=(_0x5f20ff['id']||'')['toLowerCase'](),_0x168742=(_0x5f20ff['description']||'')['toLowerCase']();return!_0x2b351a||_0x4e6b0f['includes'](_0x2b351a)||_0x172b9e['includes'](_0x2b351a)||_0x168742['includes'](_0x2b351a);});_0x4746fe['innerHTML']='';if(!state['availableSkillsLoading']&&_0x4f17c4['length']===0x0){const _0x560ae9=document['createElement']('div');_0x560ae9['className']='text-muted',_0x560ae9['textContent']=_0x2b351a?'No\x20skills\x20match\x20your\x20search.':'No\x20skills\x20available\x20yet.',_0x4746fe['appendChild'](_0x560ae9);}_0x4f17c4['forEach'](_0x3364f4=>{const _0x2dfa15=state['skillsModalSelection']['includes'](_0x3364f4['id']),_0x28da70=document['createElement']('div');_0x28da70['className']='skills-modal-item'+(_0x2dfa15?'\x20selected':''),_0x28da70['innerHTML']='\x0a\x20\x20\x20\x20\x20\x20<label>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<input\x20type=\x22checkbox\x22\x20'+(_0x2dfa15?'checked':'')+'\x20aria-label=\x22Select\x20'+Utils['escapeHtml'](_0x3364f4['name']||_0x3364f4['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'](_0x3364f4['name']||_0x3364f4['id'])+'</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22skills-modal-item-id\x22>'+Utils['escapeHtml'](_0x3364f4['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'](_0x3364f4['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 _0x10ce8a=_0x28da70['querySelector']('input[type=\x22checkbox\x22]');_0x10ce8a['addEventListener']('change',_0x27018a=>{toggleSkillSelection(_0x3364f4['id'],_0x27018a['target']['checked']);}),_0x4746fe['appendChild'](_0x28da70);}),_0x365482['innerHTML']='';const _0x2a6655=state['skillsModalSelection']['map'](getSkillDisplayInfo);_0x636f21['textContent']=_0x2a6655['length']['toString']();_0x2a6655['length']===0x0?_0x11619f['hidden']=![]:(_0x11619f['hidden']=!![],_0x2a6655['forEach'](_0x5537c1=>{const _0x54c0f5=document['createElement']('div');_0x54c0f5['className']='skill-chip',_0x54c0f5['dataset']['skillId']=_0x5537c1['id'],_0x54c0f5['innerHTML']='\x0a\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22skill-chip-name\x22>'+Utils['escapeHtml'](_0x5537c1['name'])+'</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22skill-chip-id\x22>'+Utils['escapeHtml'](_0x5537c1['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 _0x22e000=_0x54c0f5['querySelector']('.skill-chip-remove');_0x22e000['addEventListener']('click',()=>toggleSkillSelection(_0x5537c1['id'],![])),_0x365482['appendChild'](_0x54c0f5);}));if(_0x4d462c){if(state['availableSkillsLoading'])_0x4d462c['textContent']='Loading\x20skills...';else{if(!_0x558f11['length'])_0x4d462c['textContent']='No\x20skills\x20available\x20yet.';else _0x2b351a?_0x4d462c['textContent']=_0x4f17c4['length']?_0x4f17c4['length']+'\x20skill'+(_0x4f17c4['length']===0x1?'':'s')+'\x20found':'No\x20matching\x20skills\x20found.':_0x4d462c['textContent']=_0x558f11['length']+'\x20skill'+(_0x558f11['length']===0x1?'':'s')+'\x20available';}}}function toggleSkillSelection(_0x42e528,_0x507561){const _0x42dbda=new Set(state['skillsModalSelection']);_0x507561?_0x42dbda['add'](_0x42e528):_0x42dbda['delete'](_0x42e528),state['skillsModalSelection']=Array['from'](_0x42dbda),renderSkillsModal();}async function refreshRepositoryGitStatus(){try{const _0x55cc72=await _0x476e8f['fetchGitStatus']();state['changedFiles']=_0x55cc72['changedFiles']||[],state['setupRepoAuth']=_0x55cc72['setupRepoAuth']||null,invalidateDiffCache(),_0x476e8f['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')},_0x55cc72),updatePushButtonState(_0x55cc72);}catch(_0x35fa45){console['error']('Failed\x20to\x20get\x20repository\x20git\x20status:',_0x35fa45),_0x476e8f['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 _0x1c8444=await _0x476e8f['fetchGitDiff']();state['uncommittedDiff']=_0x1c8444['diff']||'',state['uncommittedDiffFiles']=parsePatchContent(state['uncommittedDiff']);}catch(_0x35608f){console['error']('Failed\x20to\x20fetch\x20diff:',_0x35608f),state['uncommittedDiff']='',state['uncommittedDiffFiles']=[];}}async function handleFileClick(_0x263642,_0x188b11){const _0x3570b8=_0x188b11['nextElementSibling'];if(_0x3570b8&&_0x3570b8['classList']['contains']('inline-file-diff')){_0x3570b8['remove'](),_0x188b11['classList']['remove']('diff-expanded');return;}const _0x26c638=_0x188b11['closest']('ul');_0x26c638['querySelectorAll']('.inline-file-diff')['forEach'](_0x59eced=>_0x59eced['remove']()),_0x26c638['querySelectorAll']('.diff-expanded')['forEach'](_0x2fb8c1=>_0x2fb8c1['classList']['remove']('diff-expanded')),_0x188b11['classList']['add']('diff-expanded');const _0x3afa38=document['createElement']('li');_0x3afa38['className']='inline-file-diff\x20inline-file-diff-loading',_0x3afa38['textContent']='Loading\x20diff...',_0x188b11['after'](_0x3afa38),await loadUncommittedDiff();const _0x27c51f=state['uncommittedDiffFiles']?.['find'](_0x40e451=>_0x40e451['newPath']===_0x263642||_0x40e451['oldPath']===_0x263642);if(!_0x27c51f){_0x3afa38['innerHTML']='<div\x20class=\x22inline-diff-empty\x22>No\x20diff\x20available\x20for\x20this\x20file</div>';return;}const _0x229fd5=renderUnifiedDiff([_0x27c51f],'env-uncommitted-'+safeBase64(_0x263642));_0x3afa38['className']='inline-file-diff',_0x3afa38['innerHTML']=_0x229fd5,_0x3afa38['querySelectorAll']('.file-diff-header')['forEach'](_0x43fc70=>{_0x43fc70['addEventListener']('click',_0x37b094=>{if(_0x37b094['target']['closest']('.file-diff-toggle-btn'))return;const _0x2d3090=_0x43fc70['dataset']['diffId'],_0x5c5852=document['getElementById'](_0x2d3090);if(_0x5c5852){const _0x962c1=_0x5c5852['classList']['toggle']('collapsed'),_0x159250=_0x43fc70['querySelector']('.file-diff-toggle-btn');if(_0x159250)_0x159250['dataset']['collapsed']=String(_0x962c1);}});}),_0x3afa38['querySelectorAll']('.file-diff-toggle-btn')['forEach'](_0x2dad4a=>{_0x2dad4a['addEventListener']('click',_0x497533=>{_0x497533['stopPropagation']();const _0xb2d21f=document['getElementById'](_0x2dad4a['dataset']['diffId']);if(_0xb2d21f){const _0x4b035d=_0xb2d21f['classList']['toggle']('collapsed');_0x2dad4a['dataset']['collapsed']=String(_0x4b035d);}});});}function updatePushButtonState(_0x28c374){const _0xf56765=document['getElementById']('repo-push-btn');if(!_0xf56765)return;const _0x3a3b1c=Boolean(_0x28c374)&&!_0x28c374['hasUncommittedChanges']&&Number(_0x28c374['ahead']||0x0)>0x0&&Number(_0x28c374['behind']||0x0)===0x0;_0xf56765['hidden']=!_0x3a3b1c,_0xf56765['disabled']=!_0x3a3b1c;}async function pushRepositoryChanges(){const _0x597c55=document['getElementById']('repo-push-btn');if(!_0x597c55||_0x597c55['hidden']||_0x597c55['disabled'])return;try{const _0x3f216b=document['getElementById']('repo-status-icon'),_0x51ec62=document['getElementById']('repo-status-text');_0x597c55['disabled']=!![],_0x597c55['innerHTML']='<span>📤</span>\x20Pushing...',_0x3f216b['textContent']='📤',_0x51ec62['textContent']='Pushing\x20to\x20git...',await API['post']('/environments/git/push'),Utils['showSuccess']('Successfully\x20pushed\x20local\x20commits'),await refreshRepositoryGitStatus();}catch(_0x2a4ad4){_0x2a4ad4['message']==='setup_repo_user_not_connected'?(savePendingSetupRepoAction('push'),showSetupRepoConnectPrompt(state['setupRepoAuth']?.['provider'],state['setupRepoAuth']?.['provider_type'])):Utils['showError'](_0x2a4ad4['message']||'Failed\x20to\x20push\x20commits'),await refreshRepositoryGitStatus();}finally{_0x597c55['disabled']=![],_0x597c55['innerHTML']='<span>📤</span>\x20Push\x20to\x20Git';}}async function pullRepositoryChanges(){try{const _0x4cc901=document['getElementById']('repo-pull-btn'),_0x4c9733=document['getElementById']('repo-status-icon'),_0x2ea798=document['getElementById']('repo-status-text');_0x4cc901['disabled']=!![],_0x4cc901['innerHTML']='<span>🔄</span>\x20Pulling...',_0x4c9733['textContent']='🔄',_0x2ea798['textContent']='Pulling\x20from\x20git...';const _0x5670fe=await API['post']('/environments/git/pull');_0x5670fe['conflicts']?(Utils['showError']('Pull\x20resulted\x20in\x20conflicts.\x20Please\x20resolve\x20manually.'),_0x4c9733['textContent']='⚠️',_0x2ea798['textContent']='Conflicts\x20detected'):(Utils['showSuccess']('Successfully\x20pulled\x20latest\x20changes'),await refreshRepositoryGitStatus(),state['selectedEnv']&&await loadEnvironmentDetails(state['selectedEnv']));}catch(_0x307bd8){_0x307bd8['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 _0x28a06e=document['getElementById']('repo-pull-btn');_0x28a06e['disabled']=![],_0x28a06e['innerHTML']='<span>🔄</span>\x20Pull\x20from\x20Git';}}const PENDING_SETUP_REPO_ACTION_KEY='pendingSetupRepoAction_environments';function savePendingSetupRepoAction(_0xcf0993,_0x499599={}){sessionStorage['setItem'](PENDING_SETUP_REPO_ACTION_KEY,JSON['stringify']({'action':_0xcf0993,'data':_0x499599,'timestamp':Date['now']()}));}function loadAndClearPendingSetupRepoAction(){try{const _0x45f283=sessionStorage['getItem'](PENDING_SETUP_REPO_ACTION_KEY);sessionStorage['removeItem'](PENDING_SETUP_REPO_ACTION_KEY);if(!_0x45f283)return null;const _0x4801c6=JSON['parse'](_0x45f283);if(Date['now']()-_0x4801c6['timestamp']>0xa*0x3c*0x3e8)return null;return _0x4801c6;}catch{return null;}}async function handleSetupRepoOAuthReturn(){const _0x328abd=new URLSearchParams(window['location']['search']);if(_0x328abd['get']('git_connection')!=='success')return;const _0xc9e750=new URL(window['location']);_0xc9e750['searchParams']['delete']('git_connection'),_0xc9e750['searchParams']['delete']('provider'),window['history']['replaceState']({},'',_0xc9e750),Utils['showSuccess']('Account\x20connected\x20successfully');const _0x22e676=loadAndClearPendingSetupRepoAction();if(!_0x22e676)return;if(_0x22e676['action']==='pull')setTimeout(()=>pullRepositoryChanges(),0x1f4);else{if(_0x22e676['action']==='push')setTimeout(()=>pushRepositoryChanges(),0x1f4);else{if(_0x22e676['action']==='commit'){const {message:_0x8f1a0,pullFirst:_0x5c8d52,push:_0x4f113d}=_0x22e676['data'];setTimeout(async()=>{try{const _0x654ca8=await API['post']('/environments/git/commit',{'message':_0x8f1a0,'pullFirst':_0x5c8d52,'push':_0x4f113d});_0x654ca8['success']&&(Utils['showSuccess'](_0x4f113d?'Changes\x20committed\x20and\x20pushed':'Changes\x20committed\x20locally'),state['modifiedFiles']['clear'](),updateButtonStates(),await refreshRepositoryGitStatus(),state['selectedEnv']&&await loadEnvironmentDetails(state['selectedEnv']));}catch(_0x13633c){console['error']('Commit\x20retry\x20failed:',_0x13633c),Utils['showError'](_0x13633c['message']||'Failed\x20to\x20commit\x20changes');}},0x1f4);}}}}function initGitConnectionsRequiredModal(){const _0x4f43c9=document['getElementById']('git-connections-required-modal');if(!_0x4f43c9)return;const _0x45ff2f=_0x4f43c9['querySelector']('.modal-close'),_0x44a9a9=document['getElementById']('git-connections-close-btn'),_0x4f6bc4=_0x4f43c9['querySelector']('.modal-overlay'),_0x8650d8=()=>{_0x4f43c9['hidden']=!![];};_0x45ff2f?.['addEventListener']('click',_0x8650d8),_0x44a9a9?.['addEventListener']('click',_0x8650d8),_0x4f6bc4?.['addEventListener']('click',_0x8650d8);}function showSetupRepoConnectPrompt(_0x4025c4,_0x3f3f5e){const _0x2d5a96=document['getElementById']('git-connections-required-modal'),_0x5c2a67=document['getElementById']('git-connections-required-list');if(!_0x2d5a96||!_0x5c2a67){Utils['showError']('Your\x20account\x20is\x20not\x20connected\x20to\x20provider\x20\x22'+_0x4025c4+'\x22.\x20Please\x20connect\x20via\x20Settings.');return;}const _0x3dd902=_0x3f3f5e==='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>';_0x5c2a67['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>'+_0x3dd902+'</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'](_0x4025c4)+'</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'](_0x4025c4)+'\x27)\x22>Connect</button>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20',_0x2d5a96['hidden']=![];}window['connectGitProviderFromModal']=async function(_0x3e7a74){try{const _0x4bcb0f=await API['post']('/api/git-oauth/start',{'provider_name':_0x3e7a74,'redirect_after':window['location']['pathname']+'?git_connection=success&provider='+encodeURIComponent(_0x3e7a74)}),_0x3a645e=document['getElementById']('git-connections-required-modal');if(_0x3a645e)_0x3a645e['hidden']=!![];window['location']['href']=_0x4bcb0f['oauth_url'];}catch(_0x40b1e4){console['error']('Failed\x20to\x20start\x20OAuth\x20flow:',_0x40b1e4),Utils['showError'](_0x40b1e4['message']||'Failed\x20to\x20start\x20connection');}};function openCommitModal(){invalidateDiffCache(),_0x476e8f['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 _0x2aca24=document['getElementById']('commit-error'),_0x53b0ef=document['getElementById']('commit-message'),_0x2a864b=_0x53b0ef['value']['trim']();_0x2aca24['hidden']=!![],_0x53b0ef['classList']['remove']('input-error');if(!_0x2a864b){_0x2aca24['textContent']='Please\x20enter\x20a\x20commit\x20message',_0x2aca24['hidden']=![],_0x53b0ef['classList']['add']('input-error');return;}if(state['hasUnsavedChanges']){_0x2aca24['textContent']='Please\x20save\x20your\x20changes\x20before\x20committing',_0x2aca24['hidden']=![];return;}const _0x193ee1=document['getElementById']('commit-pull-first')['checked'],_0x17b1fd=document['getElementById']('commit-push')['checked'];try{const _0x152f06=document['getElementById']('commit-confirm-btn');_0x152f06['disabled']=!![],_0x152f06['textContent']='Committing...';const _0x5dfb45=await API['post']('/environments/git/commit',{'message':_0x2a864b,'pullFirst':_0x193ee1,'push':_0x17b1fd});_0x5dfb45['success']?(Utils['showSuccess'](_0x17b1fd?'Changes\x20committed\x20and\x20pushed':'Changes\x20committed\x20locally'),state['modifiedFiles']['clear'](),updateButtonStates(),closeCommitModal(),await refreshRepositoryGitStatus(),state['selectedEnv']&&await loadEnvironmentDetails(state['selectedEnv'])):(_0x2aca24['textContent']=_0x5dfb45['error']||'Commit\x20failed',_0x2aca24['hidden']=![]);}catch(_0x17b32e){_0x17b32e['message']==='setup_repo_user_not_connected'?(savePendingSetupRepoAction('commit',{'message':_0x2a864b,'pullFirst':_0x193ee1,'push':_0x17b1fd}),closeCommitModal(),showSetupRepoConnectPrompt(state['setupRepoAuth']?.['provider'],state['setupRepoAuth']?.['provider_type'])):(_0x2aca24['textContent']=_0x17b32e['message']||'Failed\x20to\x20commit\x20changes',_0x2aca24['hidden']=![]);}finally{const _0x510e6e=document['getElementById']('commit-confirm-btn');_0x510e6e['disabled']=![],_0x510e6e['textContent']='Commit\x20&\x20Push';}}function handleRepoStatusClick(){const _0x1fc2f7=document['getElementById']('repo-status-text')['textContent'];_0x1fc2f7==='Uncommitted\x20changes'&&openUncommittedChangesModal();}function openUncommittedChangesModal(){invalidateDiffCache(),_0x476e8f['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(),_0x476e8f['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 _0x42c4b2=document['getElementById']('discard-confirm-btn');_0x42c4b2['disabled']=!![],_0x42c4b2['textContent']='Discarding...';const _0x153f00=await API['post']('/environments/git/discard');_0x153f00['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'](_0x153f00['error']||'Failed\x20to\x20discard\x20changes');}catch(_0x5d3a78){console['error']('Discard\x20failed:',_0x5d3a78),Utils['showError'](_0x5d3a78['message']||'Failed\x20to\x20discard\x20changes');}finally{const _0xaa6f3=document['getElementById']('discard-confirm-btn');_0xaa6f3['disabled']=![],_0xaa6f3['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 _0x16a02d=document['getElementById']('base-image-build-output');if(_0x16a02d){_0x16a02d['hidden']=!![];const _0xbc55c6=_0x16a02d['querySelector']('pre');if(_0xbc55c6)_0xbc55c6['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 _0x139bf5=document['getElementById']('base-image-no-cache')['checked'],_0x1169da=document['getElementById']('base-image-build-start-btn'),_0x24337a=document['getElementById']('base-image-build-cancel-btn'),_0x50cc5f=document['getElementById']('base-image-build-status'),_0x417cfe=_0x50cc5f['querySelector']('.build-status-message');_0x1169da['disabled']=!![],_0x1169da['innerHTML']='<span>Building...</span>',_0x50cc5f['hidden']=![],_0x417cfe['innerHTML']='<span\x20class=\x22status-icon\x22>⏳</span>\x20Starting\x20base\x20image\x20build...',_0x417cfe['className']='build-status-message\x20status-building',showBaseImageBuildOutput(),clearBaseImageBuildOutput();try{const _0x3e2ff1=await API['post']('/build/base',{'noCache':_0x139bf5});if(_0x3e2ff1['buildId'])startBaseImageBuildOutputStreaming(_0x3e2ff1['buildId']),pollBaseImageBuildStatus(_0x3e2ff1['buildId']);else throw new Error('No\x20build\x20ID\x20received');}catch(_0x596cab){console['error']('Failed\x20to\x20start\x20base\x20image\x20build:',_0x596cab),_0x417cfe['innerHTML']='<span\x20class=\x22status-icon\x22>❌</span>\x20Failed\x20to\x20start\x20build:\x20'+(_0x596cab['message']||'Unknown\x20error'),_0x417cfe['className']='build-status-message\x20status-failed',_0x1169da['innerHTML']='<span>Build</span>',_0x1169da['disabled']=![];}}function pollBaseImageBuildStatus(_0x2ea5ff){const _0x148464=document['getElementById']('base-image-build-status'),_0x2217b6=_0x148464['querySelector']('.build-status-message'),_0x2f29d7=document['getElementById']('base-image-build-start-btn'),_0x15633b=document['getElementById']('base-image-build-cancel-btn');baseImageBuildPollingInterval=setInterval(async()=>{try{const _0x1b4783=await API['get']('/build/base/status/'+_0x2ea5ff);if(_0x1b4783['status']==='building'){const _0x83b35f=_0x1b4783['duration']?Math['floor'](_0x1b4783['duration']/0x3e8):0x0;_0x2217b6['innerHTML']='<span\x20class=\x22status-icon\x22>⏳</span>\x20Building\x20base\x20image...\x20('+formatDuration(_0x83b35f*0x3e8)+')',_0x2217b6['className']='build-status-message\x20status-building';}else{if(_0x1b4783['status']==='success'){clearInterval(baseImageBuildPollingInterval),baseImageBuildPollingInterval=null,stopBaseImageBuildOutputStreaming();const _0x3e4022=_0x1b4783['duration']?formatDuration(_0x1b4783['duration']):'unknown';_0x2217b6['innerHTML']='<span\x20class=\x22status-icon\x22>✅</span>\x20Base\x20image\x20built\x20successfully\x20in\x20'+_0x3e4022,_0x2217b6['className']='build-status-message\x20status-success',_0x2f29d7['innerHTML']='<span>Build</span>',_0x2f29d7['disabled']=![],_0x15633b['textContent']='Close',Utils['showSuccess']('Base\x20image\x20built\x20successfully'),loadBaseImageBuildHistory();}else _0x1b4783['status']==='failed'&&(clearInterval(baseImageBuildPollingInterval),baseImageBuildPollingInterval=null,stopBaseImageBuildOutputStreaming(),_0x2217b6['innerHTML']='<span\x20class=\x22status-icon\x22>❌</span>\x20Build\x20failed:\x20'+(_0x1b4783['error']||'Unknown\x20error'),_0x2217b6['className']='build-status-message\x20status-failed',_0x2f29d7['innerHTML']='<span>Build</span>',_0x2f29d7['disabled']=![],Utils['showError']('Base\x20image\x20build\x20failed\x20-\x20check\x20output\x20for\x20details'),loadBaseImageBuildHistory());}}catch(_0x324e00){console['error']('Failed\x20to\x20poll\x20build\x20status:',_0x324e00);}},0xbb8);}function formatDuration(_0x73dd3){const _0x3d0e5d=Math['floor'](_0x73dd3/0x3e8),_0x1549fb=Math['floor'](_0x3d0e5d/0x3c),_0x2a2808=_0x3d0e5d%0x3c;if(_0x1549fb>0x0)return _0x1549fb+'m\x20'+_0x2a2808+'s';return _0x3d0e5d+'s';}function formatTriggeredBy(_0x30305c){if(typeof _0x30305c!=='string'||_0x30305c['trim']()==='')return'Manual';const _0x112db7=_0x30305c['trim']()['toLowerCase']();if(_0x112db7==='manual')return'Manual';if(_0x112db7==='scheduled'||_0x112db7==='schedule')return'Scheduled';if(_0x112db7==='system')return'System';return _0x30305c;}async function loadBaseImageBuildHistory(){const _0xce3937=document['getElementById']('base-image-build-history');if(!_0xce3937)return;try{_0xce3937['innerHTML']='<p\x20class=\x22text-muted\x22>Loading...</p>';const _0x52ff29=await API['get']('/build/base/history?limit=5'),_0x531c22=_0x52ff29['builds']||[];if(_0x531c22['length']===0x0){_0xce3937['innerHTML']='<p\x20class=\x22text-muted\x22>No\x20build\x20history\x20yet.</p>';return;}const _0x5949d7=_0x531c22['map'](_0x53ca1d=>{const _0x4dc76a=new Date(_0x53ca1d['startTime']),_0xc19c80=_0x4dc76a['toLocaleDateString']()+'\x20'+_0x4dc76a['toLocaleTimeString']([],{'hour':'2-digit','minute':'2-digit'}),_0x45eb8b=_0x53ca1d['duration']?formatDuration(_0x53ca1d['duration']):'-',_0x59649f=_0x53ca1d['status']==='success'?'✅':'❌',_0x6d88fb=formatTriggeredBy(_0x53ca1d['triggeredBy']),_0x2950a4=Utils['escapeHtml'](_0x53ca1d['buildId']);return'\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22build-history-row\x20'+_0x53ca1d['status']+'\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22build-status-icon\x22>'+_0x59649f+'</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22build-date\x22>'+_0xc19c80+'</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22build-duration\x22>'+_0x45eb8b+'</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22build-triggered-by\x22>'+Utils['escapeHtml'](_0x6d88fb)+'</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20class=\x22btn-ghost\x20btn-small\x22\x20onclick=\x22viewBaseImageBuildOutput(\x27'+_0x2950a4+'\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']('');_0xce3937['innerHTML']='\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22build-history-compact-list\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20'+_0x5949d7+'\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20';}catch(_0x1bc1d3){console['error']('Failed\x20to\x20load\x20base\x20image\x20build\x20history:',_0x1bc1d3),_0xce3937['innerHTML']='<p\x20class=\x22text-muted\x22\x20style=\x22color:\x20var(--color-error);\x22>Failed\x20to\x20load\x20history</p>';}}function showBaseImageBuildOutput(){const _0x469e78=document['getElementById']('base-image-build-output');_0x469e78&&(_0x469e78['hidden']=![]);}function clearBaseImageBuildOutput(){const _0x170f60=document['getElementById']('base-image-build-output');if(_0x170f60){const _0x142d0f=_0x170f60['querySelector']('pre');_0x142d0f&&(_0x142d0f['textContent']='');}}function appendToBaseImageBuildOutput(_0x287bb6){const _0x10d336=document['getElementById']('base-image-build-output');if(_0x10d336){const _0x1ee4b2=_0x10d336['querySelector']('pre');_0x1ee4b2&&(_0x1ee4b2['textContent']+=_0x287bb6,_0x10d336['scrollTop']=_0x10d336['scrollHeight']);}}function startBaseImageBuildOutputStreaming(_0x636904){stopBaseImageBuildOutputStreaming();try{baseImageBuildOutputEventSource=new EventSource('/build/output/stream/'+_0x636904),baseImageBuildOutputEventSource['onmessage']=_0x1772fa=>{try{const _0x49ecba=JSON['parse'](_0x1772fa['data']);if(_0x49ecba['type']==='output')appendToBaseImageBuildOutput(_0x49ecba['data']);else _0x49ecba['type']==='complete'&&(console['log']('Base\x20image\x20build\x20completed\x20via\x20stream:',_0x49ecba),stopBaseImageBuildOutputStreaming());}catch(_0x63f568){console['error']('Failed\x20to\x20parse\x20base\x20image\x20build\x20output\x20event:',_0x63f568);}},baseImageBuildOutputEventSource['onerror']=_0x45ef07=>{console['error']('Base\x20image\x20build\x20output\x20stream\x20error:',_0x45ef07),baseImageBuildOutputEventSource&&baseImageBuildOutputEventSource['readyState']===EventSource['CLOSED']&&stopBaseImageBuildOutputStreaming();};}catch(_0x12df9b){console['error']('Failed\x20to\x20start\x20base\x20image\x20build\x20output\x20streaming:',_0x12df9b);}}function stopBaseImageBuildOutputStreaming(){baseImageBuildOutputEventSource&&(baseImageBuildOutputEventSource['close'](),baseImageBuildOutputEventSource=null);}window['viewBaseImageBuildOutput']=async function(_0x385c60){showBaseImageBuildOutput(),clearBaseImageBuildOutput();const _0x3c1cb9=document['getElementById']('base-image-build-output');if(_0x3c1cb9){const _0xd9d944=_0x3c1cb9['querySelector']('pre');_0xd9d944&&(_0xd9d944['textContent']='Loading\x20build\x20output...');}try{const _0x1a17c4=await API['get']('/build/output/'+_0x385c60);if(_0x1a17c4['output']&&_0x3c1cb9){const _0x448040=_0x3c1cb9['querySelector']('pre');_0x448040&&(_0x448040['textContent']=_0x1a17c4['output']);}else{if(_0x3c1cb9){const _0x19fbae=_0x3c1cb9['querySelector']('pre');_0x19fbae&&(_0x19fbae['textContent']='No\x20output\x20available\x20for\x20this\x20build.');}}}catch(_0x2aff3b){console['error']('Failed\x20to\x20load\x20base\x20image\x20build\x20output:',_0x2aff3b);if(_0x3c1cb9){const _0x64323d=_0x3c1cb9['querySelector']('pre');_0x64323d&&(_0x64323d['textContent']='Failed\x20to\x20load\x20build\x20output:\x20'+(_0x2aff3b['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(_0x3b1a7b,_0x154695){const _0x529dad=Number['parseInt'](_0x3b1a7b,0xa),_0x37761d=Number['parseInt'](_0x154695,0xa);if(!Number['isInteger'](_0x529dad)||!Number['isInteger'](_0x37761d))return _0x3b1a7b+':'+_0x154695;const _0x26d858=_0x529dad>=0xc?'PM':'AM',_0x4a1db2=_0x529dad%0xc||0xc;return _0x4a1db2+':'+String(_0x37761d)['padStart'](0x2,'0')+'\x20'+_0x26d858;}function parseAutomationTimeInputValue(_0x23a74a,_0xc08ef9='0',_0x46bde4='0'){const _0x39594b={'hour':String(Number['parseInt'](_0xc08ef9,0xa)||0x0),'minute':String(Number['parseInt'](_0x46bde4,0xa)||0x0)},_0x5041e4=String(_0x23a74a||'')['trim']()['match'](/^(\d{1,2}):(\d{2})$/);if(!_0x5041e4)return _0x39594b;const _0x2ad1e4=Number['parseInt'](_0x5041e4[0x1],0xa),_0x4da804=Number['parseInt'](_0x5041e4[0x2],0xa);if(!Number['isInteger'](_0x2ad1e4)||_0x2ad1e4<0x0||_0x2ad1e4>0x17)return _0x39594b;if(!Number['isInteger'](_0x4da804)||_0x4da804<0x0||_0x4da804>0x3b)return _0x39594b;return{'hour':String(_0x2ad1e4),'minute':String(_0x4da804)};}function formatAutomationTimeInputValue(_0x3c5df8,_0x323af9,_0x52de54='0',_0x1fcbd2='0'){const _0x12acb5=parseAutomationTimeInputValue(String(_0x3c5df8??'')['trim']()+':'+String(_0x323af9??'')['trim']()['padStart'](0x2,'0'),_0x52de54,_0x1fcbd2);return _0x12acb5['hour']['padStart'](0x2,'0')+':'+_0x12acb5['minute']['padStart'](0x2,'0');}function getAutomationTimeInputState(_0x34f682,_0xdda7f6='0',_0xc3573f='0'){return parseAutomationTimeInputValue(document['getElementById'](_0x34f682)?.['value']||'',_0xdda7f6,_0xc3573f);}function setAutomationTimeInputValue(_0x14ed2f,_0x21419a,_0x61bf43,_0x65600c='0',_0x4ff73b='0'){const _0x5c3cb5=document['getElementById'](_0x14ed2f);if(!_0x5c3cb5)return;_0x5c3cb5['value']=formatAutomationTimeInputValue(_0x21419a,_0x61bf43,_0x65600c,_0x4ff73b);}function formatOrdinal(_0x404df1){const _0x1d63a8=Number['parseInt'](_0x404df1,0xa);if(!Number['isInteger'](_0x1d63a8))return''+_0x404df1;const _0x43472f=_0x1d63a8%0xa,_0xa36cd4=_0x1d63a8%0x64;if(_0x43472f===0x1&&_0xa36cd4!==0xb)return _0x1d63a8+'st';if(_0x43472f===0x2&&_0xa36cd4!==0xc)return _0x1d63a8+'nd';if(_0x43472f===0x3&&_0xa36cd4!==0xd)return _0x1d63a8+'rd';return _0x1d63a8+'th';}function initializeAutomationModalCustomSelects(){for(const _0xedf2b8 of AUTOMATION_MODAL_SELECT_IDS){if(automationCustomSelects[_0xedf2b8])continue;const _0x1f3b00=document['getElementById'](_0xedf2b8);if(!_0x1f3b00)continue;automationCustomSelects[_0xedf2b8]=new CustomSelect(_0x1f3b00,{'searchable':_0xedf2b8==='automation-template-name'});}}function refreshAutomationModalCustomSelect(_0x379b64){const _0x102558=automationCustomSelects[_0x379b64];if(!_0x102558||!_0x102558['nativeSelect'])return;_0x102558['selectedValue']=_0x102558['nativeSelect']['value']||'',_0x102558['updateDisplay']();}function refreshAllAutomationModalCustomSelects(){for(const _0x450dec of AUTOMATION_MODAL_SELECT_IDS){refreshAutomationModalCustomSelect(_0x450dec);}}function initializeAutomationInstructionsEditor(){if(automationInstructionsEditor)return;const _0x532bf7=document['getElementById']('automation-instructions');if(!_0x532bf7||!window['MarkdownEditor'])return;automationInstructionsEditor=new window['MarkdownEditor'](_0x532bf7,{'placeholder':'What\x20should\x20the\x20agent\x20do?','minHeight':'140px','toolbar':!![]});}function setAutomationInstructionsValue(_0x491003=''){if(automationInstructionsEditor){automationInstructionsEditor['setMarkdown'](_0x491003||'');return;}const _0x45c3a1=document['getElementById']('automation-instructions');_0x45c3a1&&(_0x45c3a1['value']=_0x491003||'');}function getAutomationInstructionsValue(){if(automationInstructionsEditor)return automationInstructionsEditor['getMarkdown']();return document['getElementById']('automation-instructions')?.['value']||'';}function initializeAutomationFormOptions(){const _0x5ea61a=(_0x2a9539,_0x56dcd5)=>{const _0x1e64b4=document['getElementById'](_0x2a9539);if(!_0x1e64b4||_0x1e64b4['dataset']['initialized']==='true')return;_0x1e64b4['value']=_0x56dcd5,_0x1e64b4['dataset']['initialized']='true';},_0xc32207=(_0x52b374,_0x311ca8=![])=>{const _0x59c7b1=document['getElementById'](_0x52b374);if(!_0x59c7b1||_0x59c7b1['dataset']['initialized']==='true')return;const _0x3f7244=[];_0x311ca8&&_0x3f7244['push']('<option\x20value=\x22\x22>Any</option>');for(let _0x18ad01=0x0;_0x18ad01<=0x17;_0x18ad01+=0x1){const _0x39e29a=String(_0x18ad01);_0x3f7244['push']('<option\x20value=\x22'+_0x39e29a+'\x22>'+formatAutomationTime(_0x18ad01,0x0)+'</option>');}_0x59c7b1['innerHTML']=_0x3f7244['join'](''),_0x59c7b1['dataset']['initialized']='true';};_0x5ea61a('automation-daily-time','02:00'),_0x5ea61a('automation-weekly-time','09:00'),_0x5ea61a('automation-monthly-time','00:00'),_0xc32207('automation-recurring-start-hour',!![]),_0xc32207('automation-recurring-end-hour',!![]);const _0x4d831d=document['getElementById']('automation-weekly-day');_0x4d831d&&_0x4d831d['dataset']['initialized']!=='true'&&(_0x4d831d['innerHTML']=AUTOMATION_WEEKDAYS['map'](_0x5f2efe=>'<option\x20value=\x22'+_0x5f2efe['value']+'\x22>'+_0x5f2efe['label']+'</option>')['join'](''),_0x4d831d['dataset']['initialized']='true');const _0x4c9ad8=document['getElementById']('automation-monthly-day');if(_0x4c9ad8&&_0x4c9ad8['dataset']['initialized']!=='true'){const _0x14a460=[];for(let _0x3f7530=0x1;_0x3f7530<=AUTOMATION_MONTHLY_DAY_MAX;_0x3f7530+=0x1){_0x14a460['push']('<option\x20value=\x22'+_0x3f7530+'\x22>'+formatOrdinal(_0x3f7530)+'</option>');}_0x4c9ad8['innerHTML']=_0x14a460['join'](''),_0x4c9ad8['dataset']['initialized']='true';}const _0x2afbe7=document['getElementById']('automation-recurring-days');_0x2afbe7&&_0x2afbe7['dataset']['initialized']!=='true'&&(_0x2afbe7['innerHTML']=AUTOMATION_WEEKDAYS['map'](_0x4b429b=>'\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'+_0x4b429b['value']+'\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<span>'+_0x4b429b['label']['slice'](0x0,0x3)+'</span>\x0a\x20\x20\x20\x20\x20\x20</label>\x0a\x20\x20\x20\x20')['join'](''),_0x2afbe7['dataset']['initialized']='true'),refreshAllAutomationModalCustomSelects();}function formatAutomationAgentLabel(_0x1e5375){const _0x33d3f5=String(_0x1e5375||'')['trim']();if(!_0x33d3f5)return'Agent';if(AUTOMATION_AGENT_LABELS[_0x33d3f5])return AUTOMATION_AGENT_LABELS[_0x33d3f5];return _0x33d3f5['replace'](/[_-]+/g,'\x20')['replace'](/\b\w/g,_0x43aa57=>_0x43aa57['toUpperCase']());}function getAvailableAutomationAgentNames(){const _0x184524=Object['entries'](state['availableModels']||{})['filter'](([_0x1c8db5,_0x18af77])=>Boolean(_0x1c8db5)&&_0x18af77&&typeof _0x18af77==='object'&&Array['isArray'](_0x18af77['models']))['map'](([_0x551f8b])=>_0x551f8b);if(_0x184524['length']>0x0)return _0x184524;return[...FALLBACK_AUTOMATION_AGENTS];}async function loadAvailableAutomationModels(_0xd841f5=![]){if(state['availableModelsLoaded']&&!_0xd841f5)return state['availableModels'];state['availableModelsLoaded']=!![];if(!state['currentUser']?.['hasSettingsView'])return state['availableModels']=null,state['availableModels'];try{const _0x44677d=await API['get']('/settings/available-models');state['availableModels']=_0x44677d&&typeof _0x44677d==='object'?_0x44677d:null;}catch(_0x1c5f02){state['availableModels']=null,console['warn']('Failed\x20to\x20load\x20available\x20models\x20for\x20automations:',_0x1c5f02);}return state['availableModels'];}function renderAutomationAgentOptions(_0x126404=''){const _0x30e6f9=document['getElementById']('automation-agent-name');if(!_0x30e6f9)return;const _0xe782dc=String(state['selectedEnvData']?.['default_agent']||'')['trim'](),_0xace319=String(_0x126404||_0x30e6f9['value']||'')['trim'](),_0xbedcd1=[],_0x39c0f4=_0x361da1=>{const _0x5ae426=String(_0x361da1||'')['trim']();if(!_0x5ae426||_0xbedcd1['includes'](_0x5ae426))return;_0xbedcd1['push'](_0x5ae426);};getAvailableAutomationAgentNames()['forEach'](_0x39c0f4),_0x39c0f4(_0xe782dc),_0x39c0f4(_0xace319);_0xbedcd1['length']===0x0&&_0x39c0f4('claude');_0x30e6f9['innerHTML']=_0xbedcd1['map'](_0x4cadaf=>'<option\x20value=\x22'+Utils['escapeHtml'](_0x4cadaf)+'\x22>'+Utils['escapeHtml'](formatAutomationAgentLabel(_0x4cadaf))+'</option>')['join']('');const _0x3de764=_0xbedcd1['includes'](_0xace319)?_0xace319:_0xbedcd1['includes'](_0xe782dc)?_0xe782dc:_0xbedcd1[0x0];_0x3de764&&(_0x30e6f9['value']=_0x3de764),refreshAutomationModalCustomSelect('automation-agent-name');}function setAutomationAgentSelection(_0x75ddfb=''){renderAutomationAgentOptions(_0x75ddfb),updateAutomationAgentFields();}function updateAutomationFrequencyFields(){const _0x2f0feb=document['getElementById']('automation-frequency')?.['value']||'daily',_0x78b287={'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'](_0x78b287)['forEach'](([_0x55c040,_0x3ebd95])=>{if(!_0x3ebd95)return;_0x3ebd95['hidden']=_0x55c040!==_0x2f0feb;});}function updateAutomationAgentFields(){const _0x57898a=document['getElementById']('automation-agent-name')?.['value']||state['selectedEnvData']?.['default_agent']||getAvailableAutomationAgentNames()[0x0]||'claude',_0x12c7c9=document['getElementById']('automation-effort-row'),_0x308e58=document['getElementById']('automation-reasoning-row');if(_0x12c7c9)_0x12c7c9['hidden']=_0x57898a!=='claude';if(_0x308e58)_0x308e58['hidden']=_0x57898a!=='codex';}function getSelectedAutomationTaskMode(){return document['querySelector']('input[name=\x22automation-task-mode\x22]:checked')?.['value']||'instructions';}function updateAutomationTaskMode(){const _0x2bcf62=getSelectedAutomationTaskMode(),_0xaa730c=document['getElementById']('automation-template-row'),_0x1d4600=document['getElementById']('automation-instructions-label');if(_0xaa730c)_0xaa730c['hidden']=_0x2bcf62!=='template';_0x1d4600&&(_0x1d4600['textContent']=_0x2bcf62==='template'?'Additional\x20Instructions':'Instructions');}function parseRecurringDayToken(_0x50165d){const _0x45e457=new Set(),_0x2ba04e=String(_0x50165d||'')['trim']();if(!_0x2ba04e||_0x2ba04e==='*')return _0x45e457;return _0x2ba04e['split'](',')['forEach'](_0x29e7ff=>{const _0x30577b=_0x29e7ff['trim']();if(!_0x30577b)return;if(_0x30577b['includes']('-')){const [_0x30f65c,_0x213630]=_0x30577b['split']('-'),_0x5cdaaf=Number['parseInt'](_0x30f65c,0xa),_0x3a4d91=Number['parseInt'](_0x213630,0xa);if(Number['isInteger'](_0x5cdaaf)&&Number['isInteger'](_0x3a4d91)&&_0x5cdaaf<=_0x3a4d91)for(let _0x4c75fa=_0x5cdaaf;_0x4c75fa<=_0x3a4d91;_0x4c75fa+=0x1){_0x45e457['add'](String(_0x4c75fa===0x7?0x0:_0x4c75fa));}return;}const _0x2f5f9a=Number['parseInt'](_0x30577b,0xa);Number['isInteger'](_0x2f5f9a)&&_0x45e457['add'](String(_0x2f5f9a===0x7?0x0:_0x2f5f9a));}),_0x45e457;}function getRecurringDaySelectionToken(){const _0x25933f=document['querySelectorAll']('#automation-recurring-days\x20input[type=\x22checkbox\x22]:checked'),_0x4be36b=[..._0x25933f]['map'](_0x61bb2f=>_0x61bb2f['value']);if(_0x4be36b['length']===0x0)return'*';return _0x4be36b['sort']((_0x5dbad9,_0x30ac17)=>Number['parseInt'](_0x5dbad9,0xa)-Number['parseInt'](_0x30ac17,0xa)),_0x4be36b['join'](',');}function setRecurringDaySelectionToken(_0x4e6dad){const _0x2eda67=parseRecurringDayToken(_0x4e6dad);document['querySelectorAll']('#automation-recurring-days\x20input[type=\x22checkbox\x22]')['forEach'](_0x69d96=>{_0x69d96['checked']=_0x2eda67['has'](_0x69d96['value']);});}function getAutomationScheduleFormState(){const _0x165808=getAutomationTimeInputState('automation-daily-time','2','0'),_0x5f42ec=getAutomationTimeInputState('automation-weekly-time','9','0'),_0x536a83=getAutomationTimeInputState('automation-monthly-time','0','0');return{'frequency':document['getElementById']('automation-frequency')?.['value']||'daily','customCron':document['getElementById']('automation-custom-cron')?.['value']?.['trim']()||'','dailyHour':_0x165808['hour'],'dailyMinute':_0x165808['minute'],'weeklyDay':document['getElementById']('automation-weekly-day')?.['value']||'1','weeklyHour':_0x5f42ec['hour'],'weeklyMinute':_0x5f42ec['minute'],'monthlyDay':document['getElementById']('automation-monthly-day')?.['value']||'1','monthlyHour':_0x536a83['hour'],'monthlyMinute':_0x536a83['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 _0x2d750e=getAutomationScheduleFormState(),_0x2c7d9c=_0x2d750e['frequency'],_0x24f59e=_0x2d750e['customCron'];if(_0x2c7d9c==='custom')return{'cron':buildAutomationCronFromFormState(_0x2d750e),'summary':_0x24f59e?'Custom:\x20'+_0x24f59e:'Custom\x20cron\x20expression'};if(_0x2c7d9c==='daily')return{'cron':buildAutomationCronFromFormState(_0x2d750e),'summary':'Every\x20day\x20at\x20'+formatAutomationTime(_0x2d750e['dailyHour'],_0x2d750e['dailyMinute'])};if(_0x2c7d9c==='weekly'){const _0xf88a26=AUTOMATION_WEEKDAYS['find'](_0x1272a5=>_0x1272a5['value']===_0x2d750e['weeklyDay'])?.['label']||'Selected\x20day';return{'cron':buildAutomationCronFromFormState(_0x2d750e),'summary':'Every\x20'+_0xf88a26+'\x20at\x20'+formatAutomationTime(_0x2d750e['weeklyHour'],_0x2d750e['weeklyMinute'])};}if(_0x2c7d9c==='monthly')return{'cron':buildAutomationCronFromFormState(_0x2d750e),'summary':formatOrdinal(_0x2d750e['monthlyDay'])+'\x20of\x20every\x20month\x20at\x20'+formatAutomationTime(_0x2d750e['monthlyHour'],_0x2d750e['monthlyMinute'])};const _0x575e77=_0x2d750e['recurringInterval'],[_0x3c76fb,_0x385a3a]=_0x575e77['split']('\x20'),_0x23522=[],_0x57ee90=_0x2d750e['recurringStartHour'],_0x3fa289=_0x2d750e['recurringEndHour'];if(_0x57ee90!==''&&_0x3fa289!==''){const _0x468525=Number['parseInt'](_0x57ee90,0xa),_0x54249a=Number['parseInt'](_0x3fa289,0xa);Number['isInteger'](_0x468525)&&Number['isInteger'](_0x54249a)&&_0x468525<=_0x54249a&&_0x23522['push'](formatAutomationTime(_0x468525,0x0)+'\x20-\x20'+formatAutomationTime(_0x54249a,0x0));}const _0x43eb84=_0x2d750e['recurringDayToken'];if(_0x43eb84!=='*'){const _0x1f6c89=_0x43eb84['split'](',')['map'](_0x2e4a8a=>AUTOMATION_WEEKDAYS['find'](_0x1a54ac=>_0x1a54ac['value']===_0x2e4a8a)?.['label']?.['slice'](0x0,0x3))['filter'](Boolean);_0x1f6c89['length']>0x0&&_0x23522['push'](_0x1f6c89['join'](',\x20'));}let _0x360b9c='';if(_0x3c76fb==='*/15')_0x360b9c='Every\x2015\x20minutes';else{if(_0x3c76fb==='*/30')_0x360b9c='Every\x2030\x20minutes';else{if(_0x3c76fb==='0'&&_0x385a3a==='*')_0x360b9c='Every\x20hour';else{if(_0x3c76fb==='0'&&_0x385a3a['startsWith']('*/'))_0x360b9c='Every\x20'+_0x385a3a['slice'](0x2)+'\x20hours';else _0x360b9c='Recurring\x20schedule\x20('+_0x575e77+')';}}}return _0x23522['length']>0x0&&(_0x360b9c=_0x360b9c+',\x20'+_0x23522['join'](',\x20')),{'cron':buildAutomationCronFromFormState(_0x2d750e),'summary':_0x360b9c};}function updateAutomationScheduleSummary(){const _0x5272d5=document['getElementById']('automation-schedule-summary');if(!_0x5272d5)return;try{const {summary:_0x44adcf}=buildAutomationScheduleFromForm();_0x5272d5['textContent']=_0x44adcf||'Choose\x20schedule\x20options';}catch(_0x230604){_0x5272d5['textContent']='Invalid\x20schedule\x20settings:\x20'+_0x230604['message'];}}function describeAutomationCron(_0x5b69fe){const _0x5c9b0f=String(_0x5b69fe||'')['trim'](),_0x1290e7=_0x5c9b0f['match'](/^(\d{1,2}) (\d{1,2}) \* \* \*$/);if(_0x1290e7)return'Every\x20day\x20at\x20'+formatAutomationTime(_0x1290e7[0x2],_0x1290e7[0x1]);const _0x358945=_0x5c9b0f['match'](/^(\d{1,2}) (\d{1,2}) \* \* ([0-7])$/);if(_0x358945){const _0x5d9ead=_0x358945[0x3]==='7'?'0':_0x358945[0x3],_0x27bd37=AUTOMATION_WEEKDAYS['find'](_0x280002=>_0x280002['value']===_0x5d9ead)?.['label']||'Day\x20'+_0x5d9ead;return'Every\x20'+_0x27bd37+'\x20at\x20'+formatAutomationTime(_0x358945[0x2],_0x358945[0x1]);}const _0x265e09=_0x5c9b0f['match'](/^(\d{1,2}) (\d{1,2}) (\d{1,2}) \* \*$/);if(_0x265e09)return formatOrdinal(_0x265e09[0x3])+'\x20of\x20every\x20month\x20at\x20'+formatAutomationTime(_0x265e09[0x2],_0x265e09[0x1]);const _0x2e88ee=_0x5c9b0f['match'](/^(\*\/15|\*\/30|0) ([^\s]+) \* \* ([^\s]+)$/);if(_0x2e88ee){const [_0x208159,_0x1bd962,_0x794eab,_0x330b1e]=_0x2e88ee;let _0x2244d4='Recurring';if(_0x1bd962==='*/15')_0x2244d4='Every\x2015\x20minutes';else{if(_0x1bd962==='*/30')_0x2244d4='Every\x2030\x20minutes';else{if(_0x1bd962==='0'&&(_0x794eab==='*'||/\d+-\d+$/['test'](_0x794eab)))_0x2244d4='Every\x20hour';else{if(_0x1bd962==='0'&&_0x794eab['startsWith']('*/'))_0x2244d4='Every\x20'+_0x794eab['slice'](0x2)+'\x20hours';else{if(_0x1bd962==='0'){const _0x39f6ae=_0x794eab['match'](/^[\d-]+\/(\d+)$/);if(_0x39f6ae)_0x2244d4='Every\x20'+_0x39f6ae[0x1]+'\x20hours';}}}}}const _0x1b1974=[_0x2244d4],_0x592a45=_0x794eab['match'](/^(\d+)-(\d+)(?:\/\d+)?$/);_0x592a45&&_0x1b1974['push'](formatAutomationTime(_0x592a45[0x1],0x0)+'\x20-\x20'+formatAutomationTime(_0x592a45[0x2],0x0));if(_0x330b1e!=='*'){const _0x412101=[...parseRecurringDayToken(_0x330b1e)]['sort']((_0x33edfa,_0x1dd481)=>Number['parseInt'](_0x33edfa,0xa)-Number['parseInt'](_0x1dd481,0xa))['map'](_0x3bd4af=>AUTOMATION_WEEKDAYS['find'](_0x342d67=>_0x342d67['value']===_0x3bd4af)?.['label']?.['slice'](0x0,0x3))['filter'](Boolean);_0x412101['length']>0x0&&_0x1b1974['push'](_0x412101['join'](',\x20'));}return _0x1b1974['join'](',\x20');}return _0x5c9b0f||'Custom\x20schedule';}function applyAutomationScheduleToForm(_0x233ccd){const _0x4efae3=parseAutomationScheduleToFormState(_0x233ccd);setAutomationTimeInputValue('automation-daily-time',_0x4efae3['dailyHour'],_0x4efae3['dailyMinute'],'2','0'),setAutomationTimeInputValue('automation-weekly-time',_0x4efae3['weeklyHour'],_0x4efae3['weeklyMinute'],'9','0'),document['getElementById']('automation-weekly-day')['value']=_0x4efae3['weeklyDay'],setAutomationTimeInputValue('automation-monthly-time',_0x4efae3['monthlyHour'],_0x4efae3['monthlyMinute'],'0','0'),document['getElementById']('automation-monthly-day')['value']=_0x4efae3['monthlyDay'],document['getElementById']('automation-recurring-interval')['value']=_0x4efae3['recurringInterval'],document['getElementById']('automation-recurring-start-hour')['value']=_0x4efae3['recurringStartHour'],document['getElementById']('automation-recurring-end-hour')['value']=_0x4efae3['recurringEndHour'],document['getElementById']('automation-custom-cron')['value']=_0x4efae3['frequency']==='custom'?_0x4efae3['customCron']:'',setRecurringDaySelectionToken(_0x4efae3['recurringDayToken']);const _0x7596ae=document['getElementById']('automation-frequency');_0x7596ae&&(_0x7596ae['value']=_0x4efae3['frequency']),refreshAllAutomationModalCustomSelects(),updateAutomationFrequencyFields(),updateAutomationScheduleSummary();}function getAutomationTemplates(){const _0x1beb0c=state['selectedEnvData']?.['templates']||[];if(_0x1beb0c['length']>0x0)return _0x1beb0c['map'](_0x4cd3b9=>{const _0x3f97d4=_0x4cd3b9['filename']?.['replace'](/\.md$/,'')||_0x4cd3b9['title'];return{'name':_0x3f97d4,'title':_0x4cd3b9['title']||_0x3f97d4,'description':_0x4cd3b9['description']||'','parameters':_0x4cd3b9['parameters']||{}};});const _0x2dab44=state['selectedEnvData']?.['task_templates']||[];return _0x2dab44['map'](_0x18c6e7=>({'name':_0x18c6e7['name'],'title':_0x18c6e7['title']||_0x18c6e7['name'],'description':'','parameters':{}}));}function getSelectedAutomationTemplate(){const _0x29f5dc=document['getElementById']('automation-template-name')?.['value']||'';return getAutomationTemplates()['find'](_0x229543=>_0x229543['name']===_0x29f5dc)||null;}function renderAutomationTemplateOptions(_0x48117f=''){const _0x830a47=document['getElementById']('automation-template-name');if(!_0x830a47)return;const _0x1369b2=getAutomationTemplates();if(_0x1369b2['length']===0x0){_0x830a47['innerHTML']='<option\x20value=\x22\x22>No\x20templates\x20available</option>',_0x830a47['value']='',refreshAutomationModalCustomSelect('automation-template-name');return;}_0x830a47['innerHTML']=['<option\x20value=\x22\x22>Select\x20template...</option>',..._0x1369b2['map'](_0x52a28a=>'<option\x20value=\x22'+Utils['escapeHtml'](_0x52a28a['name'])+'\x22>'+Utils['escapeHtml'](_0x52a28a['title'])+'</option>')]['join'](''),_0x830a47['value']=_0x48117f&&_0x1369b2['some'](_0x162f88=>_0x162f88['name']===_0x48117f)?_0x48117f:_0x1369b2[0x0]['name'],refreshAutomationModalCustomSelect('automation-template-name');}function renderAutomationTemplateParameters(_0x4bc90d=null){const _0x590dd6=document['getElementById']('automation-template-params');if(!_0x590dd6)return;_0x4bc90d&&typeof _0x4bc90d==='object'&&(state['automationTemplateParamValues']={..._0x4bc90d});const _0x42fd68=getSelectedAutomationTemplate(),_0x57db4e=_0x42fd68?.['parameters']&&typeof _0x42fd68['parameters']==='object'?Object['entries'](_0x42fd68['parameters']):[];if(_0x57db4e['length']===0x0){_0x590dd6['innerHTML']='<p\x20class=\x22text-muted\x20small\x22>This\x20template\x20has\x20no\x20parameters.</p>';return;}_0x590dd6['innerHTML']=_0x57db4e['map'](([_0x482cc4,_0x2b0970])=>{const _0x167434=Boolean(_0x2b0970?.['required']),_0x152854=_0x2b0970?.['type']||'string',_0x26f3e2=state['automationTemplateParamValues'][_0x482cc4]??_0x2b0970?.['default']??'',_0x29e52b=_0x2b0970?.['label']||_0x482cc4,_0x4e0d30=_0x2b0970?.['description']||'',_0x1a4ef8=_0x152854==='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'](_0x29e52b)+(_0x167434?'\x20*':'')+'</label>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<input\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20type=\x22'+_0x1a4ef8+'\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'](_0x482cc4)+'\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20value=\x22'+Utils['escapeHtml'](String(_0x26f3e2))+'\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20placeholder=\x22'+Utils['escapeHtml'](_0x4e0d30)+'\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20'+(_0x167434?'required':'')+'>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20';})['join'](''),_0x590dd6['querySelectorAll']('[data-automation-param]')['forEach'](_0x23249f=>{_0x23249f['addEventListener']('input',()=>{const _0x45fb3d=_0x23249f['getAttribute']('data-automation-param');if(!_0x45fb3d)return;state['automationTemplateParamValues'][_0x45fb3d]=_0x23249f['value'];});});}function collectAutomationTemplateParameters(){const _0x34a104=getSelectedAutomationTemplate(),_0x2f934a=_0x34a104?.['parameters']&&typeof _0x34a104['parameters']==='object'?_0x34a104['parameters']:{},_0x37364b={};return document['querySelectorAll']('[data-automation-param]')['forEach'](_0x555a14=>{const _0x25fe90=_0x555a14['getAttribute']('data-automation-param');if(!_0x25fe90)return;const _0x3d4f3c=_0x2f934a[_0x25fe90]||{},_0x41b23c=_0x555a14['value']??'',_0x22f40d=String(_0x41b23c)['trim']();if(_0x22f40d==='')return;if(_0x3d4f3c['type']==='number'){const _0x520ee2=Number(_0x22f40d);_0x37364b[_0x25fe90]=Number['isNaN'](_0x520ee2)?_0x22f40d:_0x520ee2;}else _0x3d4f3c['type']==='boolean'?_0x37364b[_0x25fe90]=_0x22f40d['toLowerCase']()==='true':_0x37364b[_0x25fe90]=_0x22f40d;}),_0x37364b;}function setAutomationFormError(_0x441563=''){const _0x404cb5=document['getElementById']('automation-form-error');if(!_0x404cb5)return;_0x441563?(_0x404cb5['hidden']=![],_0x404cb5['textContent']=_0x441563):(_0x404cb5['hidden']=!![],_0x404cb5['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 _0x11be99=state['selectedEnvData']?.['default_agent']||getAvailableAutomationAgentNames()[0x0]||'claude';setAutomationAgentSelection(_0x11be99),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 _0x1d4b72=document['getElementById']('automation-modal');if(!_0x1d4b72)return;_0x1d4b72['hidden']=!![],setAutomationFormError('');}function findAutomationById(_0x1a50e0){return state['automations']['find'](_0x587766=>_0x587766['id']===_0x1a50e0)||null;}function applyAutomationToModal(_0x438ee5){document['getElementById']('automation-name')['value']=_0x438ee5['name']||'',document['getElementById']('automation-description')['value']=_0x438ee5['description']||'',document['getElementById']('automation-task-name')['value']=_0x438ee5['task']?.['name']||'Automation\x20-\x20{{date}}',setAutomationAgentSelection(_0x438ee5['agent']?.['name']||state['selectedEnvData']?.['default_agent']||getAvailableAutomationAgentNames()[0x0]||'claude'),document['getElementById']('automation-effort-level')['value']=_0x438ee5['agent']?.['effortLevel']||'',document['getElementById']('automation-reasoning-level')['value']=_0x438ee5['agent']?.['reasoningLevel']||'',document['getElementById']('automation-enabled')['checked']=_0x438ee5['enabled']!==![];const _0x13900e=_0x438ee5['task']?.['taskType']?'template':'instructions';document['querySelector']('input[name=\x22automation-task-mode\x22][value=\x22'+_0x13900e+'\x22]')['checked']=!![],setAutomationInstructionsValue(_0x438ee5['task']?.['instructions']||''),renderAutomationTemplateOptions(_0x438ee5['task']?.['taskType']||''),state['automationTemplateParamValues']={..._0x438ee5['task']?.['parameters']||{}},renderAutomationTemplateParameters(state['automationTemplateParamValues']),refreshAllAutomationModalCustomSelects(),applyAutomationScheduleToForm(_0x438ee5['schedule']||'0\x202\x20*\x20*\x20*'),updateAutomationTaskMode(),updateAutomationAgentFields();}async function openAutomationModal(_0xa357bc='create',_0x33e363=null){if(!state['selectedEnv'])return;await loadAvailableAutomationModels(),initializeAutomationModalCustomSelects(),initializeAutomationInstructionsEditor(),renderAutomationAgentOptions(state['selectedEnvData']?.['default_agent']||''),initializeAutomationFormOptions(),resetAutomationModalForm();const _0xb39262=document['getElementById']('automation-modal'),_0x80c39a=document['getElementById']('automation-modal-title');if(!_0xb39262||!_0x80c39a)return;if(_0xa357bc==='edit'&&_0x33e363){state['automationModalMode']='edit',state['editingAutomationId']=_0x33e363,_0x80c39a['textContent']='Edit\x20Automation';const _0x487b95=findAutomationById(_0x33e363);if(_0x487b95)applyAutomationToModal(_0x487b95);else try{const _0x421817=await API['getAutomation'](_0x33e363);_0x421817?.['automation']&&applyAutomationToModal(_0x421817['automation']);}catch(_0x7d92ef){setAutomationFormError(_0x7d92ef['message']||'Failed\x20to\x20load\x20automation');}}else state['automationModalMode']='create',_0x80c39a['textContent']='Create\x20Automation';_0xb39262['hidden']=![];}function buildAutomationPayloadFromForm(){const _0x4d61db=document['getElementById']('automation-name')?.['value']?.['trim']()||'',_0x53116e=document['getElementById']('automation-description')?.['value']?.['trim']()||'',_0x271d3e=document['getElementById']('automation-task-name')?.['value']?.['trim']()||'',_0x1023ac=document['getElementById']('automation-enabled')?.['checked']!==![],_0x1578c8=document['getElementById']('automation-agent-name')?.['value']||state['selectedEnvData']?.['default_agent']||getAvailableAutomationAgentNames()[0x0]||'claude',_0x13bcf9=document['getElementById']('automation-effort-level')?.['value']||null,_0x5ac6b3=document['getElementById']('automation-reasoning-level')?.['value']||null,_0x16d4f4=getSelectedAutomationTaskMode();if(!_0x4d61db)throw new Error('Automation\x20name\x20is\x20required');if(!_0x271d3e)throw new Error('Task\x20name\x20template\x20is\x20required');const _0x2a9180=buildAutomationScheduleFromForm();if(!_0x2a9180['cron'])throw new Error('Schedule\x20is\x20required');const _0x57e47f={'name':_0x4d61db,'description':_0x53116e,'environment':state['selectedEnv'],'enabled':_0x1023ac,'schedule':_0x2a9180['cron'],'agent':{'name':_0x1578c8,'effortLevel':_0x1578c8==='claude'?_0x13bcf9||null:null,'reasoningLevel':_0x1578c8==='codex'?_0x5ac6b3||null:null},'task':{'name':_0x271d3e,'instructions':'','taskType':null,'parameters':{},'skills':[]},'settings':{'retainHistoryDays':0x1e}};if(_0x16d4f4==='template'){const _0x4f0220=document['getElementById']('automation-template-name')?.['value']||'';if(!_0x4f0220)throw new Error('Select\x20a\x20task\x20template');const _0x571872=getSelectedAutomationTemplate(),_0x32ffca=_0x571872?.['parameters']&&typeof _0x571872['parameters']==='object'?_0x571872['parameters']:{},_0x3fb4a9=collectAutomationTemplateParameters(),_0x3b5826=Object['entries'](_0x32ffca)['filter'](([_0x4920c6,_0x38b6de])=>Boolean(_0x38b6de?.['required'])&&String(_0x3fb4a9[_0x4920c6]??'')['trim']()==='')['map'](([_0x387423])=>_0x387423);if(_0x3b5826['length']>0x0)throw new Error('Missing\x20required\x20template\x20parameters:\x20'+_0x3b5826['join'](',\x20'));_0x57e47f['task']['taskType']=_0x4f0220,_0x57e47f['task']['parameters']=_0x3fb4a9,_0x57e47f['task']['instructions']=getAutomationInstructionsValue()['trim']();}else{const _0x107939=getAutomationInstructionsValue()['trim']();if(!_0x107939)throw new Error('Instructions\x20are\x20required');_0x57e47f['task']['instructions']=_0x107939;}return _0x57e47f;}async function saveAutomationFromModal(){try{setAutomationFormError('');const _0x8f729f=buildAutomationPayloadFromForm();state['automationModalMode']==='edit'&&state['editingAutomationId']?(await API['updateAutomation'](state['editingAutomationId'],_0x8f729f),Utils['showSuccess']('Automation\x20updated')):(await API['createAutomation'](_0x8f729f),Utils['showSuccess']('Automation\x20created')),closeAutomationModal(),await renderAutomations(),state['viewingAutomationId']&&await openAutomationHistoryView(state['viewingAutomationId']);}catch(_0x48d165){setAutomationFormError(_0x48d165['message']||'Failed\x20to\x20save\x20automation');}}function closeAutomationHistoryView(){const _0x5e286f=document['getElementById']('automations-list-view'),_0x30ea45=document['getElementById']('automation-history-view');if(_0x5e286f)_0x5e286f['hidden']=![];if(_0x30ea45)_0x30ea45['hidden']=!![];state['viewingAutomationId']=null;}async function triggerAutomationById(_0x145cc6){try{await API['triggerAutomation'](_0x145cc6),Utils['showSuccess']('Automation\x20triggered'),await renderAutomations(),state['viewingAutomationId']===_0x145cc6&&await openAutomationHistoryView(_0x145cc6);}catch(_0x51644f){Utils['showError'](_0x51644f['message']||'Failed\x20to\x20trigger\x20automation');}}async function triggerViewedAutomation(){if(!state['viewingAutomationId'])return;await triggerAutomationById(state['viewingAutomationId']);}async function openAutomationHistoryView(_0x11f4fe){const _0xe2f017=findAutomationById(_0x11f4fe);if(!_0xe2f017)return;const _0x450c46=document['getElementById']('automations-list-view'),_0x535621=document['getElementById']('automation-history-view'),_0x2c469a=document['getElementById']('automation-history-title'),_0x8ed172=document['getElementById']('automation-history-subtitle'),_0x40397d=document['getElementById']('automation-history-body'),_0x517e7c=document['getElementById']('automation-history-tasks-link');if(!_0x450c46||!_0x535621||!_0x2c469a||!_0x8ed172||!_0x40397d)return;state['viewingAutomationId']=_0x11f4fe,_0x450c46['hidden']=!![],_0x535621['hidden']=![],_0x2c469a['textContent']=_0xe2f017['name'],_0x8ed172['textContent']=describeAutomationCron(_0xe2f017['schedule'])+'\x20·\x20'+(_0xe2f017['agent']?.['name']||'agent');_0x517e7c&&(_0x517e7c['href']=buildAutomationTaskFilterHref(_0x11f4fe));try{const _0x1ab837=await API['getAutomationHistory'](_0x11f4fe,0x32),_0x238d4d=_0x1ab837['runs']||[];if(_0x238d4d['length']===0x0){_0x40397d['innerHTML']='<tr><td\x20colspan=\x224\x22\x20class=\x22text-muted\x22>No\x20runs\x20yet.</td></tr>';return;}_0x40397d['innerHTML']=_0x238d4d['map'](_0x6095a0=>{const _0x1c8ba9=_0x6095a0['status']==='failed'?'status-failed':_0x6095a0['status']==='running'?'status-running':'status-completed',_0x275caa=_0x6095a0['triggeredAt']?new Date(_0x6095a0['triggeredAt'])['toLocaleString']():'-',_0x28d332=_0x6095a0['taskId']?'<a\x20href=\x22task.html?id='+encodeURIComponent(_0x6095a0['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'](_0x275caa)+'</td>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<td>'+Utils['escapeHtml'](_0x6095a0['triggeredBy']||'-')+'</td>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<td><span\x20class=\x22automation-run-status\x20'+_0x1c8ba9+'\x22>'+Utils['escapeHtml'](_0x6095a0['status']||'-')+'</span></td>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<td>'+_0x28d332+'</td>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</tr>\x0a\x20\x20\x20\x20\x20\x20';})['join']('');}catch(_0x2be971){_0x40397d['innerHTML']='<tr><td\x20colspan=\x224\x22\x20class=\x22text-danger\x22>'+Utils['escapeHtml'](_0x2be971['message']||'Failed\x20to\x20load\x20history')+'</td></tr>';}}async function deleteAutomationById(_0x1de943){const _0x2d60c0=findAutomationById(_0x1de943);if(!_0x2d60c0)return;const _0x2db0b5=await ConfirmDialog['show']({'title':'Delete\x20Automation','message':'Delete\x20automation\x20\x22'+_0x2d60c0['name']+'\x22?','confirmText':'Delete','danger':!![]});if(!_0x2db0b5)return;try{await API['deleteAutomation'](_0x1de943),Utils['showSuccess']('Automation\x20deleted'),state['viewingAutomationId']===_0x1de943&&closeAutomationHistoryView(),await renderAutomations();}catch(_0x380109){Utils['showError'](_0x380109['message']||'Failed\x20to\x20delete\x20automation');}}async function handleAutomationTableToggleChange(_0x2d9be8){const _0x107047=_0x2d9be8['target']['closest']('[data-automation-toggle]');if(!_0x107047)return;const _0x4576c0=_0x107047['getAttribute']('data-automation-toggle'),_0x444d5c=_0x107047['checked'];try{await API['setAutomationEnabled'](_0x4576c0,_0x444d5c),Utils['showSuccess'](_0x444d5c?'Automation\x20enabled':'Automation\x20disabled'),await renderAutomations();}catch(_0x1238d6){_0x107047['checked']=!_0x444d5c,Utils['showError'](_0x1238d6['message']||'Failed\x20to\x20update\x20automation\x20status');}}async function handleAutomationTableActionClick(_0x46e16b){const _0x58a1cf=_0x46e16b['target']['closest']('[data-automation-action]');if(!_0x58a1cf)return;const _0xe0f579=_0x58a1cf['getAttribute']('data-automation-action'),_0x5d202f=_0x58a1cf['getAttribute']('data-automation-id');if(!_0x5d202f)return;if(_0xe0f579==='trigger'){await triggerAutomationById(_0x5d202f);return;}if(_0xe0f579==='edit'){await openAutomationModal('edit',_0x5d202f);return;}if(_0xe0f579==='delete'){await deleteAutomationById(_0x5d202f);return;}_0xe0f579==='history'&&await openAutomationHistoryView(_0x5d202f);}function renderAutomationsTable(){const _0xe0a1df=document['getElementById']('automations-count'),_0x3619d5=document['getElementById']('automations-empty'),_0xdaab2b=document['getElementById']('automations-table-wrapper'),_0x14c712=document['getElementById']('automations-table-body');if(!_0xe0a1df||!_0x3619d5||!_0xdaab2b||!_0x14c712)return;const _0x3b6753=state['automations']||[];_0xe0a1df['textContent']=_0x3b6753['length']+'\x20item'+(_0x3b6753['length']===0x1?'':'s');if(_0x3b6753['length']===0x0){_0x3619d5['hidden']=![],_0xdaab2b['hidden']=!![],_0x14c712['innerHTML']='';return;}_0x3619d5['hidden']=!![],_0xdaab2b['hidden']=![],_0x14c712['innerHTML']=_0x3b6753['map'](_0x400763=>{const _0x61a7e7=_0x400763['description']?'<div\x20class=\x22text-muted\x20small\x22>'+Utils['escapeHtml'](_0x400763['description'])+'</div>':'',_0x1b45fc=describeAutomationCron(_0x400763['schedule']),_0x237ccc=_0x400763['lastRun']?'Last\x20run\x20'+Utils['formatRelativeTime'](_0x400763['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'](_0x400763['name'])+'</strong>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20'+_0x61a7e7+'\x0a\x20\x20\x20\x20\x20\x20\x20\x20</td>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<td>'+Utils['escapeHtml'](_0x1b45fc)+'</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'](_0x400763['id'])+'\x22\x20'+(_0x400763['enabled']?'checked':'')+'>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22text-muted\x20small\x22>'+Utils['escapeHtml'](_0x237ccc)+'</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'](_0x400763['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'](_0x400763['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'](_0x400763['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 _0x161560=document['getElementById']('automations-loading'),_0x48d9a2=document['getElementById']('automations-error');if(_0x161560)_0x161560['hidden']=![];_0x48d9a2&&(_0x48d9a2['hidden']=!![],_0x48d9a2['textContent']='');const _0x409077=state['selectedEnv'];try{const _0x336370=await API['getAutomations']({'environment':_0x409077});if(state['selectedEnv']!==_0x409077)return;state['automations']=_0x336370['automations']||[],state['automationsLoadedEnv']=_0x409077,renderAutomationsTable(),updateTabBadge('badge-automations',state['automations']['length']);}catch(_0x3349c8){console['error']('Failed\x20to\x20load\x20automations:',_0x3349c8),_0x48d9a2&&(_0x48d9a2['hidden']=![],_0x48d9a2['textContent']=_0x3349c8['message']||'Failed\x20to\x20load\x20automations');}finally{if(_0x161560)_0x161560['hidden']=!![];}}async function handleAutomationDeepLinkParams(){const {env:_0x2c1ce7,tab:_0x89808,automation:_0x334272}=parseAutomationDeepLinkParams(window['location']['search']);if(!_0x2c1ce7&&!_0x89808&&!_0x334272)return;_0x2c1ce7&&_0x2c1ce7!==state['selectedEnv']&&state['environments']['some'](_0x4a02c0=>_0x4a02c0['name']===_0x2c1ce7)&&await selectEnvironment(_0x2c1ce7),_0x89808&&switchTab(_0x89808),_0x334272&&(switchTab('automations'),await renderAutomations(),await openAutomationHistoryView(_0x334272));}window['switchTab']=function(_0x55cb32){state['currentTab']=_0x55cb32,sessionStorage['setItem'](SESSION_KEY_TAB,_0x55cb32),document['querySelectorAll']('.content-tab')['forEach'](_0x4417c2=>{const _0x50fac5=_0x4417c2['dataset']['tab']===_0x55cb32;_0x4417c2['classList']['toggle']('active',_0x50fac5),_0x4417c2['setAttribute']('aria-selected',_0x50fac5);}),scrollToActiveContentTab(),document['querySelectorAll']('.tab-panel')['forEach'](_0x1c4bb8=>{_0x1c4bb8['hidden']=_0x1c4bb8['id']!=='tab-'+_0x55cb32;}),_0x55cb32==='build'&&state['selectedEnv']&&(renderBuildTab(),loadBuildHistory()),_0x55cb32==='deploy'&&state['selectedEnv']&&(renderDeployProfiles(),loadDeploymentHistory()),_0x55cb32==='access'&&state['selectedEnv']&&loadAccessTab(),_0x55cb32==='automations'&&state['selectedEnv']&&renderAutomations(),_0x55cb32==='server'&&state['selectedEnv']&&renderServerConfig();};function renderRepos(){const _0x34df63=document['querySelector']('.repos-sidebar'),_0x5064c6=state['selectedEnvData']['repos']||[];updateTabBadge('badge-repos',_0x5064c6['length']);const _0x3d9506=_0x34df63['querySelector']('#new-repo-tab'),_0x2f4e31=_0x5064c6['map']((_0xc52a48,_0x260da6)=>'\x0a\x20\x20\x20\x20<button\x20class=\x22repo-tab\x22\x20data-repo=\x22'+_0x260da6+'\x22\x20onclick=\x22selectRepo('+_0x260da6+')\x22>\x0a\x20\x20\x20\x20\x20\x20<span\x20class=\x22repo-icon\x22>📁</span>\x0a\x20\x20\x20\x20\x20\x20<span>'+Utils['escapeHtml'](_0xc52a48['name'])+'</span>\x0a\x20\x20\x20\x20</button>\x0a\x20\x20')['join']('');_0x34df63['innerHTML']=_0x3d9506['outerHTML']+_0x2f4e31,_0x34df63['querySelector']('#new-repo-tab')['addEventListener']('click',addRepo);if(_0x5064c6['length']>0x0&&state['currentRepo']===null)selectRepo(0x0);else _0x5064c6['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 _0x53b6c7=state['selectedEnvData']?.['repos'];if(!Array['isArray'](_0x53b6c7)||!_0x53b6c7[state['currentRepo']])return;const _0x142aaa=document['getElementById']('repo-url'),_0x233272=document['getElementById']('repo-allow-branch-selection'),_0x10d298=document['getElementById']('repo-path'),_0x3fde21=document['getElementById']('repo-description'),_0x5094e5=document['getElementById']('repo-clone-auto'),_0x5313e4=document['getElementById']('repo-post-clone-action');if(!_0x142aaa||!_0x233272||!_0x10d298||!_0x3fde21||!_0x5094e5||!_0x5313e4)return;const _0x349be7=_0x53b6c7[state['currentRepo']],_0x29d177=document['getElementById']('edit-repo-provider')?.['value']||'',_0x1b71d2=document['getElementById']('edit-repo-credential-mode')?.['value']||'app',_0x5d2b00=monacoEditors['get']('repo-custom-action-editor'),_0x3b2c84=_0x5d2b00?_0x5d2b00['getValue']()['trim']():'';let _0x3bc159;if(_0x5313e4['value']==='custom'&&_0x3b2c84)_0x3bc159=_0x3b2c84;else _0x5313e4['value']!=='none'&&_0x5313e4['value']!=='custom'&&(_0x3bc159=_0x5313e4['value']);const _0x8201ca={..._0x349be7,'url':_0x142aaa['value'],'branch':getEditRepoBranchValue(),'allow_branch_selection':_0x233272['checked'],'path':_0x10d298['value']||undefined,'description':_0x3fde21['value']||undefined,'clone_auto':_0x5094e5['checked'],'post_clone_action':_0x3bc159||undefined};_0x29d177?_0x8201ca['remote_provider']={'provider':_0x29d177,'credential_mode':_0x1b71d2}:delete _0x8201ca['remote_provider'],_0x53b6c7[state['currentRepo']]=_0x8201ca;}window['selectRepo']=function(_0x3ac465){persistCurrentRepoFormChanges();const _0x9b79de=monacoEditors['get']('repo-custom-action-editor');_0x9b79de&&(_0x9b79de['dispose'](),monacoEditors['delete']('repo-custom-action-editor'));state['currentRepo']=_0x3ac465;const _0x1256e5=state['selectedEnvData']['repos'][_0x3ac465],_0x2b5283=_0x1256e5['remote_provider']&&_0x1256e5['remote_provider']['provider'];document['querySelectorAll']('.repo-tab')['forEach'](_0x59f7d9=>{_0x59f7d9['classList']['toggle']('active',_0x59f7d9['dataset']['repo']===String(_0x3ac465));}),document['getElementById']('current-repo-name')['textContent']=_0x1256e5['name'],document['getElementById']('delete-repo-btn')['hidden']=![];const _0x839f5d='\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',_0x3bab66=_0x1256e5['remote_provider']?.['credential_mode']||'app',_0x1d6eb5='\x0a\x20\x20\x20\x20<div\x20id=\x22edit-repo-credential-mode-row\x22\x20class=\x22form-row\x22\x20'+(_0x2b5283?'':'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'+(_0x3bab66==='app'?'selected':'')+'>App\x20Credentials</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\x22user\x22\x20'+(_0x3bab66==='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',_0x4d8645='\x0a\x20\x20\x20\x20<div\x20id=\x22edit-repo-url-row\x22\x20class=\x22form-row\x22\x20'+(_0x2b5283?'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'](_0x1256e5['url'])+'\x22\x20placeholder=\x22https://github.com/user/repo.git\x22>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20',_0xa4c5d8='\x0a\x20\x20\x20\x20<div\x20id=\x22edit-repo-autocomplete-row\x22\x20class=\x22form-row\x22\x20'+(_0x2b5283?'':'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',_0x1ec962=document['getElementById']('repo-details-container');_0x1ec962['innerHTML']='\x0a\x20\x20\x20\x20<div\x20class=\x22form-single-column\x22>\x0a\x20\x20\x20\x20\x20\x20'+_0x839f5d+'\x0a\x20\x20\x20\x20\x20\x20'+_0x1d6eb5+'\x0a\x20\x20\x20\x20\x20\x20'+_0x4d8645+'\x0a\x20\x20\x20\x20\x20\x20'+_0xa4c5d8+'\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'+(_0x1256e5['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'](_0x1256e5['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'](_0x1256e5['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'+(_0x1256e5['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'+(!_0x1256e5['post_clone_action']||_0x1256e5['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'+(_0x1256e5['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'+(_0x1256e5['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'+(_0x1256e5['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'+(_0x1256e5['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'+(_0x1256e5['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'+(_0x1256e5['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'+(_0x1256e5['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'+(_0x1256e5['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'+(_0x1256e5['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'+(_0x1256e5['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'+(_0x1256e5['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'+(_0x1256e5['post_clone_action']==='custom'||_0x1256e5['post_clone_action']&&!isKnownPostCloneAction(_0x1256e5['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'+(_0x1256e5['post_clone_action']&&!isKnownPostCloneAction(_0x1256e5['post_clone_action'])&&_0x1256e5['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(_0x1256e5),initEditRepoBranchAutocomplete(_0x1256e5);const _0x1e369e=document['getElementById']('repo-branch-refresh-btn');_0x1e369e&&(_0x1e369e['onclick']=_0x37a91a=>{_0x37a91a['preventDefault'](),reloadEditRepoBranchSuggestions();});document['getElementById']('edit-repo-provider')['addEventListener']('change',onEditRepoProviderChange),document['getElementById']('repo-post-clone-action')['addEventListener']('change',async _0x4e2b50=>{const _0x1f3fda=document['getElementById']('repo-custom-action-row'),_0x2f4e3b=_0x4e2b50['target']['value']==='custom';_0x1f3fda['hidden']=!_0x2f4e3b;if(_0x2f4e3b){const _0x4fd618=monacoEditors['get']('repo-custom-action-editor');if(!_0x4fd618){const _0x573cc2=await createMonacoEditor('repo-custom-action-editor','','shell',![]);_0x573cc2&&(_0x573cc2['updateOptions']({'wordWrap':'off'}),_0x573cc2['onDidChangeModelContent'](()=>markAsModified()));}}markAsModified();});if(_0x1256e5['post_clone_action']&&!isKnownPostCloneAction(_0x1256e5['post_clone_action'])&&_0x1256e5['post_clone_action']!=='none'){const _0x3b21b9=_0x1256e5['post_clone_action'];createMonacoEditor('repo-custom-action-editor',_0x3b21b9,'shell',![])['then'](_0x2937cd=>{_0x2937cd&&(_0x2937cd['updateOptions']({'wordWrap':'off'}),_0x2937cd['onDidChangeModelContent'](()=>markAsModified()));});}const _0x2abe89=['repo-url','repo-allow-branch-selection','repo-path','repo-description','repo-clone-auto','edit-repo-credential-mode'];_0x2abe89['forEach'](_0x30fc93=>{const _0x4fc17d=document['getElementById'](_0x30fc93);_0x4fc17d&&(_0x4fc17d['addEventListener']('input',markAsModified),_0x4fc17d['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(_0x4adf58){const _0x2c01f5=document['getElementById']('edit-repo-provider');if(!_0x2c01f5)return;const _0x5dd33f=_0x4adf58['remote_provider']&&_0x4adf58['remote_provider']['provider'];try{const _0x1d13e9=await API['get']('/environments/'+state['selectedEnv']+'/repos/providers'),_0x14d74a=_0x1d13e9['providers']||[];let _0x2176b9='<option\x20value=\x22\x22>None</option>',_0x31ecd1=![];_0x14d74a['forEach'](_0x5b033a=>{const _0x29dcc1=_0x5dd33f&&_0x4adf58['remote_provider']['provider']===_0x5b033a['name'];if(_0x29dcc1)_0x31ecd1=!![];const _0x3367e5=_0x29dcc1?'selected':'';_0x2176b9+='<option\x20value=\x22'+Utils['escapeHtml'](_0x5b033a['name'])+'\x22\x20'+_0x3367e5+'>'+Utils['escapeHtml'](_0x5b033a['name'])+'\x20('+Utils['escapeHtml'](_0x5b033a['type'])+')</option>';}),_0x5dd33f&&!_0x31ecd1&&(_0x2176b9+='<option\x20value=\x22'+Utils['escapeHtml'](_0x4adf58['remote_provider']['provider'])+'\x22\x20selected\x20disabled>'+Utils['escapeHtml'](_0x4adf58['remote_provider']['provider'])+'\x20(unavailable)</option>'),_0x2c01f5['innerHTML']=_0x2176b9,state['editRepoProviders']=_0x14d74a,initEditRepoAutocomplete(_0x4adf58);}catch(_0x59ee0f){console['error']('Failed\x20to\x20load\x20providers\x20for\x20edit\x20repo:',_0x59ee0f);}}function extractRepoFullName(_0x3864ba){if(!_0x3864ba)return'';try{const _0x227a68=_0x3864ba['match'](/\/([^/]+)\/_git\/([^/]+?)(?:\.git)?$/);if(_0x227a68)return _0x227a68[0x1]+'/'+_0x227a68[0x2];const _0x6df8b7=_0x3864ba['match'](/[/:]([^/:]+\/[^/]+?)(?:\.git)?$/);return _0x6df8b7?_0x6df8b7[0x1]:_0x3864ba;}catch{return _0x3864ba;}}function normalizeGitUrl(_0x116719){if(!_0x116719)return _0x116719;const _0x264aec=_0x116719['match'](/^(https?:\/\/)[^@/]+@(.+)$/i);if(_0x264aec)return''+_0x264aec[0x1]+_0x264aec[0x2];return _0x116719;}function initEditRepoAutocomplete(_0x41725f){const _0x1b9bb7=document['getElementById']('edit-repo-autocomplete-container');if(!_0x1b9bb7)return;const _0x4ad4d0=_0x41725f['remote_provider']&&_0x41725f['remote_provider']['provider'];editRepoAutocomplete&&(editRepoAutocomplete['destroy'](),editRepoAutocomplete=null);editRepoAutocomplete=new AutocompleteSelect(_0x1b9bb7,{'placeholder':'Search\x20for\x20a\x20repository','maxItems':0x64,'emptyMessage':'No\x20repositories\x20found','loadingMessage':'Loading\x20repositories...','preload':![],'searchMode':'server','loadItems':async _0x58a78c=>{const _0x555521=document['getElementById']('edit-repo-provider')['value'];if(!_0x555521)return[];try{let _0xd8592b='/environments/'+state['selectedEnv']+'/repos/available-from-provider?provider='+encodeURIComponent(_0x555521)+'&limit=100';_0x58a78c&&_0x58a78c['trim']()&&(_0xd8592b+='&search='+encodeURIComponent(_0x58a78c['trim']()));const _0x3a20e5=await API['get'](_0xd8592b);return _0x3a20e5['repositories']||[];}catch(_0x3e624f){console['error']('Failed\x20to\x20load\x20repositories:',_0x3e624f);throw _0x3e624f;}},'renderItem':_0x22758d=>{const _0x2e187b=_0x22758d['private']===!![];let _0x2a7f23=_0x22758d['description']||'no\x20description';return _0x22758d['descriptionSource']==='project'&&_0x22758d['description']&&(_0x2a7f23='Project:\x20'+_0x22758d['description']),{'primary':_0x22758d['full_name']||_0x22758d['name'],'secondary':_0x2a7f23,'icon':_0x2e187b?REPO_ICON_PRIVATE:REPO_ICON_PUBLIC,'iconClass':_0x2e187b?'icon-private':'icon-public'};},'sortItems':_0x5d515b=>{return _0x5d515b['sort']((_0x408d1c,_0x55848d)=>{const _0x4dd3cc=(_0x408d1c['full_name']||_0x408d1c['name']||'')['toLowerCase'](),_0x23c029=(_0x55848d['full_name']||_0x55848d['name']||'')['toLowerCase']();return _0x4dd3cc['localeCompare'](_0x23c029);});},'getItemValue':_0x232f65=>_0x232f65['clone_url']||_0x232f65['url'],'onSelect':_0x44a2bc=>{if(_0x44a2bc){const _0x28f54a=document['getElementById']('repo-url');_0x28f54a&&(_0x28f54a['value']=_0x44a2bc['clone_url']||_0x44a2bc['url']||''),setEditRepoBranchValue(_0x44a2bc['default_branch']||'main'),reloadEditRepoBranchSuggestions(),markAsModified();}}});if(_0x4ad4d0){editRepoAutocomplete['enable'](),editRepoAutocomplete['preloadData']();const _0x1acef9={'full_name':extractRepoFullName(_0x41725f['url']),'clone_url':_0x41725f['url'],'name':_0x41725f['name']};editRepoAutocomplete['setValue'](_0x1acef9);}else editRepoAutocomplete['disable']();}function onEditRepoProviderChange(){const _0x105ab0=document['getElementById']('edit-repo-provider')['value'],_0x2e4908=document['getElementById']('edit-repo-url-row'),_0x1bc385=document['getElementById']('edit-repo-autocomplete-row'),_0x57f027=document['getElementById']('edit-repo-credential-mode-row'),_0x143d47=document['getElementById']('repo-url');if(_0x105ab0){_0x2e4908['hidden']=!![],_0x1bc385['hidden']=![];if(_0x57f027)_0x57f027['hidden']=![];_0x143d47&&(_0x143d47['value']=''),editRepoAutocomplete&&(editRepoAutocomplete['reset'](),editRepoAutocomplete['enable'](),editRepoAutocomplete['preloadData']());}else{_0x2e4908['hidden']=![],_0x1bc385['hidden']=!![];if(_0x57f027)_0x57f027['hidden']=!![];_0x143d47&&(_0x143d47['value']=''),editRepoAutocomplete&&(editRepoAutocomplete['reset'](),editRepoAutocomplete['disable']());}reloadEditRepoBranchSuggestions(),markAsModified();}function cleanupEditRepoAutocomplete(){editRepoAutocomplete&&(editRepoAutocomplete['destroy'](),editRepoAutocomplete=null),editRepoBranchAutocomplete&&(editRepoBranchAutocomplete['destroy'](),editRepoBranchAutocomplete=null);}function initEditRepoBranchAutocomplete(_0x4e402b){const _0x336d0f=document['getElementById']('repo-branch-field');if(!_0x336d0f)return;editRepoBranchAutocomplete&&(editRepoBranchAutocomplete['destroy'](),editRepoBranchAutocomplete=null);editRepoBranchAutocomplete=new AutocompleteSelect(_0x336d0f,{'placeholder':'Search\x20for\x20a\x20branch','maxItems':0x64,'emptyMessage':'No\x20branches\x20found','loadingMessage':'Loading\x20branches...','preload':![],'searchMode':'server','loadItems':async _0xf5f3db=>{const {providerName:_0x3a631b,repoUrl:_0x1b582b}=getEditRepoBranchContext();if(!_0x3a631b||!_0x1b582b)return[];return fetchRepoBranches({'providerName':_0x3a631b,'repoUrl':_0x1b582b,'query':_0xf5f3db});},'renderItem':_0x4643f8=>({'primary':_0x4643f8['name'],'secondary':_0x4643f8['isDefault']?'default':''}),'sortItems':_0xa96406=>_0xa96406['sort']((_0x1c583d,_0x312f10)=>{if(_0x1c583d['isDefault'])return-0x1;if(_0x312f10['isDefault'])return 0x1;return(_0x1c583d['name']||'')['localeCompare'](_0x312f10['name']||'');}),'getItemValue':_0x593f44=>_0x593f44['name'],'onSelect':_0x39448b=>{_0x39448b&&setEditRepoBranchValue(_0x39448b['name']),markAsModified();}}),setEditRepoBranchValue(_0x4e402b?.['branch']||'main');editRepoBranchAutocomplete['input']&&editRepoBranchAutocomplete['input']['addEventListener']('input',()=>{clearBranchAutocompleteError(editRepoBranchAutocomplete),markAsModified();});const _0x70b90f=document['getElementById']('edit-repo-provider')?.['value']||'',_0x291b87=document['getElementById']('repo-url')?.['value']?.['trim']()||'';_0x70b90f&&_0x291b87&&editRepoBranchAutocomplete['preloadData']();}function validateEditRepoForm(){const _0xa95153=document['getElementById']('edit-repo-provider')?.['value']||'',_0xc2d885=document['getElementById']('repo-url')?.['value']?.['trim']()||'',_0x523087=getEditRepoBranchValue(),_0x41520d=[];return _0xa95153?!_0xc2d885&&_0x41520d['push']('Please\x20select\x20a\x20repository\x20from\x20the\x20provider'):!_0xc2d885&&_0x41520d['push']('Repository\x20URL\x20is\x20required'),!_0x523087&&_0x41520d['push']('Branch\x20is\x20required'),_0x41520d;}function addRepo(){const _0x9b7600=document['getElementById']('new-repo-url'),_0x23cdbd=document['getElementById']('new-repo-name'),_0x1e3320=document['getElementById']('add-repo-error');document['getElementById']('repo-modal-title')['textContent']='Add\x20Repository',_0x9b7600['value']='',_0x23cdbd['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 _0x58b4eb=document['getElementById']('new-repo-credential-mode');_0x58b4eb&&(_0x58b4eb['value']='app');_0x9b7600['classList']['remove']('input-error'),_0x23cdbd['classList']['remove']('input-error'),clearBranchAutocompleteError(newRepoBranchAutocomplete),_0x1e3320['hidden']=!![];const _0x1fa084=_0x41cef7=>_0x41cef7['target']['classList']['remove']('input-error');_0x9b7600['addEventListener']('input',_0x1fa084,{'once':!![]}),_0x23cdbd['addEventListener']('input',_0x1fa084,{'once':!![]}),_0x9b7600['addEventListener']('input',()=>{const _0x381215=_0x9b7600['value']['trim']();if(_0x381215&&!_0x23cdbd['value']){const _0x5129be=_0x381215['split']('/'),_0x270a20=_0x5129be[_0x5129be['length']-0x1]['replace'](/\.git$/,'');_0x23cdbd['placeholder']=_0x270a20||'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 _0x2985d7=document['getElementById']('new-repo-branch-field');if(!_0x2985d7)return;newRepoBranchAutocomplete&&(newRepoBranchAutocomplete['destroy'](),newRepoBranchAutocomplete=null),newRepoBranchAutocomplete=new AutocompleteSelect(_0x2985d7,{'placeholder':'Search\x20for\x20a\x20branch','maxItems':0x64,'emptyMessage':'No\x20branches\x20found','loadingMessage':'Loading\x20branches...','preload':![],'searchMode':'server','loadItems':async _0x4cf164=>{const {providerName:_0x12d6d2,repoUrl:_0x4043a5}=getNewRepoBranchContext();if(!_0x12d6d2||!_0x4043a5)return[];return fetchRepoBranches({'providerName':_0x12d6d2,'repoUrl':_0x4043a5,'query':_0x4cf164});},'renderItem':_0x3e384c=>({'primary':_0x3e384c['name'],'secondary':_0x3e384c['isDefault']?'default':''}),'sortItems':_0x221ae3=>_0x221ae3['sort']((_0x3ccefc,_0x499a0d)=>{if(_0x3ccefc['isDefault'])return-0x1;if(_0x499a0d['isDefault'])return 0x1;return(_0x3ccefc['name']||'')['localeCompare'](_0x499a0d['name']||'');}),'getItemValue':_0x3625eb=>_0x3625eb['name'],'onSelect':_0x26ffeb=>{_0x26ffeb&&setNewRepoBranchValue(_0x26ffeb['name']);}}),newRepoBranchAutocomplete['input']&&newRepoBranchAutocomplete['input']['addEventListener']('input',()=>{clearBranchAutocompleteError(newRepoBranchAutocomplete);});}async function confirmAddRepo(){const _0xadede8=document['getElementById']('new-repo-url'),_0x5a8aff=document['getElementById']('new-repo-name'),_0x47a36d=document['getElementById']('add-repo-error'),_0x5b129b=_0xadede8['value']['trim'](),_0x5e1066=getNewRepoBranchValue();let _0xb75354=_0x5a8aff['value']['trim']();_0xadede8['classList']['remove']('input-error'),_0x5a8aff['classList']['remove']('input-error'),clearBranchAutocompleteError(newRepoBranchAutocomplete),_0x47a36d['hidden']=!![];const _0x13c194=document['querySelector']('input[name=\x22repo-entry-mode\x22]:checked')['value'];let _0x16dc58=![],_0x1c0cc1='';if(_0x13c194==='provider'){const _0x5561e2=document['getElementById']('new-repo-source-provider')['value'],_0x3884df=repoAutocomplete?repoAutocomplete['getSelectedItem']():null;if(!_0x5561e2)_0x1c0cc1='Please\x20select\x20a\x20Git\x20provider',_0x16dc58=!![];else!_0x3884df&&(_0x1c0cc1='Please\x20select\x20a\x20repository',_0x16dc58=!![]);}else!_0x5b129b&&(_0xadede8['classList']['add']('input-error'),_0x1c0cc1='Repository\x20URL\x20is\x20required',_0x16dc58=!![]);!_0x5e1066&&(setBranchAutocompleteErrorState(newRepoBranchAutocomplete,!![]),_0x1c0cc1=_0x1c0cc1||'Branch\x20is\x20required',_0x16dc58=!![]);if(!_0xb75354&&_0x5b129b){const _0x3b8b5f=_0x5b129b['split']('/');_0xb75354=_0x3b8b5f[_0x3b8b5f['length']-0x1]['replace'](/\.git$/,'');}!_0xb75354&&(_0x5a8aff['classList']['add']('input-error'),_0x1c0cc1=_0x1c0cc1||'Repository\x20name\x20is\x20required',_0x16dc58=!![]);if(_0x16dc58){_0x47a36d['textContent']=_0x1c0cc1,_0x47a36d['hidden']=![];return;}const _0x1f4c45={'name':_0xb75354,'url':_0x5b129b,'branch':_0x5e1066,'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(_0x13c194==='provider'){const _0x357439=document['getElementById']('new-repo-source-provider')['value'];if(_0x357439){const _0x1deb6b=document['getElementById']('new-repo-credential-mode')?.['value']||'app';_0x1f4c45['remote_provider']={'provider':_0x357439,'credential_mode':_0x1deb6b};}}state['selectedEnvData']['repos']=[...state['selectedEnvData']['repos']||[],_0x1f4c45],renderRepos(),markAsModified(),closeAddRepoModal(),Utils['showSuccess']('Repository\x20added\x20(click\x20Save\x20to\x20persist\x20changes)');}async function loadRepoModalProviders(){try{const _0x11bd76=await API['get']('/environments/'+state['selectedEnv']+'/repos/providers'),_0x4152c4=_0x11bd76['providers']||[],_0x5eaae9=document['getElementById']('new-repo-source-provider');_0x5eaae9['innerHTML']='<option\x20value=\x22\x22>--\x20Select\x20a\x20provider\x20--</option>',_0x4152c4['forEach'](_0x3b4f7d=>{_0x5eaae9['innerHTML']+='<option\x20value=\x22'+Utils['escapeHtml'](_0x3b4f7d['name'])+'\x22>'+Utils['escapeHtml'](_0x3b4f7d['name'])+'\x20('+Utils['escapeHtml'](_0x3b4f7d['type'])+')</option>';});}catch(_0x126ce7){console['error']('Failed\x20to\x20load\x20providers\x20for\x20repo\x20modal:',_0x126ce7);}}function onRepoEntryModeChange(_0x42ab4b){const _0x39124=_0x42ab4b['target']['value'],_0x5ef9af=document['getElementById']('repo-provider-selection'),_0x2a66fd=document['getElementById']('repo-url-row'),_0x266490=document['getElementById']('new-repo-url'),_0x46d469=document['getElementById']('new-repo-name'),_0x41d8af=document['getElementById']('new-repo-source-provider');_0x39124==='provider'?(_0x5ef9af['hidden']=![],_0x2a66fd['hidden']=!![],_0x41d8af['value']='',initRepoAutocomplete(),_0x46d469['placeholder']='Auto-extracted\x20from\x20URL'):(_0x5ef9af['hidden']=!![],_0x2a66fd['hidden']=![],_0x266490['value']='',repoAutocomplete&&(repoAutocomplete['reset'](),repoAutocomplete['disable']()),_0x46d469['placeholder']='Auto-extracted\x20from\x20URL'),reloadNewRepoBranchSuggestions();}function initRepoAutocomplete(){const _0x8c9a97=document['getElementById']('repo-autocomplete-container');if(!_0x8c9a97)return;repoAutocomplete&&repoAutocomplete['destroy'](),repoAutocomplete=new AutocompleteSelect(_0x8c9a97,{'placeholder':'Search\x20for\x20a\x20repository','maxItems':0x64,'emptyMessage':'No\x20repositories\x20found','loadingMessage':'Loading\x20repositories...','preload':![],'searchMode':'server','loadItems':async _0x11f0e3=>{const _0x186898=document['getElementById']('new-repo-source-provider')['value'];if(!_0x186898)return[];try{let _0xf8fe01='/environments/'+state['selectedEnv']+'/repos/available-from-provider?provider='+encodeURIComponent(_0x186898)+'&limit=100';_0x11f0e3&&_0x11f0e3['trim']()&&(_0xf8fe01+='&search='+encodeURIComponent(_0x11f0e3['trim']()));const _0x1a2c89=await API['get'](_0xf8fe01);return _0x1a2c89['repositories']||[];}catch(_0xbc5f66){console['error']('Failed\x20to\x20load\x20repositories:',_0xbc5f66);throw _0xbc5f66;}},'renderItem':_0x1be570=>{const _0x296f69=_0x1be570['private']===!![];let _0x625449=_0x1be570['description']||'no\x20description';return _0x1be570['descriptionSource']==='project'&&_0x1be570['description']&&(_0x625449='Project:\x20'+_0x1be570['description']),{'primary':_0x1be570['full_name']||_0x1be570['name'],'secondary':_0x625449,'icon':_0x296f69?REPO_ICON_PRIVATE:REPO_ICON_PUBLIC,'iconClass':_0x296f69?'icon-private':'icon-public'};},'sortItems':_0x4b04fc=>{return _0x4b04fc['sort']((_0x28c92c,_0x4150db)=>{const _0x5154c4=(_0x28c92c['full_name']||_0x28c92c['name']||'')['toLowerCase'](),_0x4b0541=(_0x4150db['full_name']||_0x4150db['name']||'')['toLowerCase']();return _0x5154c4['localeCompare'](_0x4b0541);});},'getItemValue':_0x346cd5=>_0x346cd5['clone_url']||_0x346cd5['url'],'onSelect':_0x501d62=>{const _0x563bc1=document['getElementById']('new-repo-url'),_0x46f050=document['getElementById']('new-repo-name');if(_0x501d62){_0x563bc1['value']=_0x501d62['clone_url']||_0x501d62['url']||'';const _0x134ec7=(_0x501d62['full_name']||_0x501d62['name']||'')['split']('/')['pop']()||'';_0x46f050['placeholder']=_0x134ec7||'Auto-extracted\x20from\x20URL',setNewRepoBranchValue(_0x501d62['default_branch']||'main'),reloadNewRepoBranchSuggestions();}else _0x563bc1['value']='',_0x46f050['placeholder']='Auto-extracted\x20from\x20URL',setNewRepoBranchValue('main');}}),repoAutocomplete['disable']();}function onRepoSourceProviderChange(){const _0x2d4417=document['getElementById']('new-repo-source-provider')['value'],_0x1edef6=document['getElementById']('new-repo-url'),_0x16d4ec=document['getElementById']('new-repo-name');_0x1edef6['value']='',_0x16d4ec['placeholder']='Auto-extracted\x20from\x20URL';if(!_0x2d4417){repoAutocomplete&&(repoAutocomplete['reset'](),repoAutocomplete['disable']());reloadNewRepoBranchSuggestions();return;}repoAutocomplete&&(repoAutocomplete['reset'](),repoAutocomplete['enable'](),repoAutocomplete['preloadData']()),setNewRepoBranchValue('main'),reloadNewRepoBranchSuggestions();}function onRepoFromProviderSelect(){}window['editRepo']=function(_0x4430bb){selectRepo(_0x4430bb);},window['removeRepo']=function(_0x23085a){const _0x307a76=state['selectedEnvData']['repos'][_0x23085a];document['getElementById']('delete-repo-name')['textContent']=_0x307a76['name']||_0x307a76['url'],document['getElementById']('delete-repo-confirm-btn')['dataset']['repoIndex']=_0x23085a,document['getElementById']('delete-repo-modal')['hidden']=![];};function closeDeleteRepoModal(){document['getElementById']('delete-repo-modal')['hidden']=!![];}function confirmDeleteRepo(){const _0x1d60e5=parseInt(document['getElementById']('delete-repo-confirm-btn')['dataset']['repoIndex']);state['selectedEnvData']['repos']=state['selectedEnvData']['repos']['filter']((_0x31bc3b,_0x174648)=>_0x174648!==_0x1d60e5);if(state['currentRepo']===_0x1d60e5)state['currentRepo']=null,cleanupEditRepoAutocomplete();else state['currentRepo']>_0x1d60e5&&state['currentRepo']--;renderRepos(),markAsModified(),closeDeleteRepoModal(),Utils['showSuccess']('Repository\x20removed\x20(click\x20Save\x20to\x20persist\x20changes)');}function renderServerConfig(){const _0x4e6eef=state['selectedEnvData']['application_server'],_0x50ea65=_0x4e6eef?.['enabled']||![],_0x1f85ff=state['selectedEnvData']?.['external_connections']||[],_0x24730c=_0x1f85ff['find'](_0x11df6a=>_0x11df6a['type']==='ibmi'&&(_0x11df6a['config']?.['features']||[])['includes']('interactive')&&_0x11df6a['config']?.['pui_base_url']),_0x59dd46=document['getElementById']('server-connection-banner'),_0x529288=document['getElementById']('server-enabled'),_0xc4bf19=document['getElementById']('server-name'),_0xad8a74=document['getElementById']('server-proxy');if(_0x24730c){const _0x5e9d5e=Utils['escapeHtml'](_0x24730c['name']||'IBM\x20i\x20Session');_0x59dd46['innerHTML']='<strong>External\x20Connection:</strong>\x20App\x20server\x20proxy,\x20launch\x20URL,\x20and\x20authentication\x20are\x20configured\x20by\x20connection\x20<strong>'+_0x5e9d5e+'</strong>.\x20Edit\x20the\x20connection\x20to\x20change\x20these\x20settings.',_0x59dd46['hidden']=![],_0x529288['checked']=!![],_0x529288['disabled']=!![],document['getElementById']('server-config')['hidden']=![],_0xc4bf19['value']=_0x24730c['name']||'IBM\x20i\x20Session',_0xc4bf19['disabled']=!![],addConnectionHint(_0xc4bf19,_0x5e9d5e),_0xad8a74['value']=_0x24730c['config']['pui_base_url'],_0xad8a74['disabled']=!![],addConnectionHint(_0xad8a74,_0x5e9d5e);const _0x482076=document['getElementById']('env-screen-render-url');if(_0x482076){const _0x169885=_0x24730c['config']['pui_render_path']||'/profoundui/genie';_0x482076['value']=''+_0x24730c['config']['pui_base_url']+_0x169885,_0x482076['disabled']=!![],addConnectionHint(_0x482076,_0x5e9d5e);}}else{_0x59dd46['hidden']=!![],_0x59dd46['innerHTML']='',_0x529288['checked']=_0x50ea65,_0x529288['disabled']=![],document['getElementById']('server-config')['hidden']=!_0x50ea65,_0xc4bf19['value']=_0x4e6eef?.['name']||'',_0xc4bf19['disabled']=![],removeConnectionHint(_0xc4bf19),_0xad8a74['value']=_0x4e6eef?.['proxy']||'',_0xad8a74['disabled']=![],removeConnectionHint(_0xad8a74);const _0x167783=document['getElementById']('env-screen-render-url');_0x167783&&_0x167783['disabled']&&(_0x167783['disabled']=![],removeConnectionHint(_0x167783));}const _0x195ac3=monacoEditors['get']('server-command-editor');_0x195ac3?_0x195ac3['setValue'](_0x4e6eef?.['start_command']||''):createMonacoEditor('server-command-editor',_0x4e6eef?.['start_command']||'','shell',![])['then'](_0x567390=>{_0x567390&&(_0x567390['updateOptions']({'wordWrap':'off'}),_0x567390['onDidChangeModelContent'](()=>markAsModified()));});document['getElementById']('server-qa-url')['value']=_0x4e6eef?.['qa_url']||'';const _0x8e525a=_0x4e6eef?.['basic_auth']||{};document['getElementById']('server-auth-user-property')['value']=_0x8e525a['user_property']||'',document['getElementById']('server-auth-password-property')['value']=_0x8e525a['password_property']||'',renderPorts(_0x4e6eef?.['ports']||[]);if(_0x24730c){const _0x2c12ce=_0x24730c['config']['pui_launch_path']||'/profoundui/auth/genie',_0x36c025=_0x24730c['name']||'IBM\x20i\x20Session';state['_connectionLaunchUrl']={'name':'Genie\x20('+_0x36c025+')','path':_0x2c12ce,'description':'From\x20connection:\x20'+_0x36c025};}else state['_connectionLaunchUrl']=null;renderURLs(_0x4e6eef?.['launch_urls']||[]),renderProxyHeaders(_0x4e6eef?.['proxy_headers']||{}),renderPortQaUrls(_0x4e6eef?.['port_qa_urls']||{}),renderVolumeMounts(state['selectedEnvData']?.['volume_mounts']||[]);}function addConnectionHint(_0x570cd7,_0x56ddbb){removeConnectionHint(_0x570cd7);const _0x265b39=document['createElement']('small');_0x265b39['className']='form-hint\x20connection-hint',_0x265b39['textContent']='From\x20connection\x20\x22'+_0x56ddbb+'\x22',_0x570cd7['parentNode']['appendChild'](_0x265b39);}function removeConnectionHint(_0x556f69){const _0x41b3d8=_0x556f69['parentNode']?.['querySelector']('.connection-hint');if(_0x41b3d8)_0x41b3d8['remove']();}function toggleRebuildSchedule(){const _0x3b8c03=document['getElementById']('rebuild-schedule-enabled-build-tab')['checked'];document['getElementById']('rebuild-schedule-config-build-tab')['hidden']=!_0x3b8c03,markAsModified();}function toggleServerConfig(){const _0x3f4724=document['getElementById']('server-enabled')['checked'];document['getElementById']('server-config')['hidden']=!_0x3f4724,markAsModified();}function renderPorts(_0x3b335b){const _0x4dbe97=document['getElementById']('ports-list');_0x4dbe97['innerHTML']=_0x3b335b['map']((_0x92b07,_0xe94902)=>'\x0a\x20\x20\x20\x20<div\x20class=\x22config-item\x22>\x0a\x20\x20\x20\x20\x20\x20<input\x20type=\x22number\x22\x20value=\x22'+_0x92b07['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'](_0x92b07['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('+_0xe94902+')\x22>×</button>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20')['join']('');}function renderURLs(_0x156904){const _0x5c0b36=document['getElementById']('urls-list'),_0x37be06=_0x156904['findIndex'](_0x21e7f0=>_0x21e7f0?.['primary']),_0x40ee85=document['getElementById']('clear-primary-url-btn');_0x40ee85&&(_0x40ee85['disabled']=_0x37be06===-0x1||!!state['_connectionLaunchUrl']);let _0x28d014='';const _0x2e9b34=state['_connectionLaunchUrl'];_0x2e9b34&&(_0x28d014+='\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'](_0x2e9b34['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'](_0x2e9b34['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'](_0x2e9b34['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'),_0x28d014+=_0x156904['map']((_0x118323,_0x15dbaf)=>{const _0x5d5002=_0x37be06===-0x1?![]:_0x15dbaf===_0x37be06;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'](_0x118323['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'](_0x118323['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'+(_0x118323['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'](_0x118323['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'+(_0x5d5002?'is-primary':'')+'\x22\x20title=\x22'+(_0x2e9b34?'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'+(_0x5d5002?'checked':'')+'\x20'+(_0x2e9b34?'disabled':'onclick=\x22setPrimaryURL('+_0x15dbaf+')\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('+_0x15dbaf+',\x20-1)\x22\x20title=\x22Move\x20up\x22\x20aria-label=\x22Move\x20URL\x20up\x22\x20'+(_0x15dbaf===0x0?'disabled':'')+'>↑</button>\x0a\x20\x20\x20\x20\x20\x20<button\x20class=\x22btn-icon\x22\x20onclick=\x22moveURL('+_0x15dbaf+',\x201)\x22\x20title=\x22Move\x20down\x22\x20aria-label=\x22Move\x20URL\x20down\x22\x20'+(_0x15dbaf===_0x156904['length']-0x1?'disabled':'')+'>↓</button>\x0a\x20\x20\x20\x20\x20\x20<button\x20class=\x22btn-icon\x22\x20onclick=\x22removeURL('+_0x15dbaf+')\x22>×</button>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20';})['join'](''),_0x5c0b36['innerHTML']=_0x28d014;}function collectURLsFromForm(_0x168057=![]){const _0x185b35=document['getElementById']('urls-list');if(!_0x185b35)return[];const _0x100494=_0x185b35['querySelectorAll']('.config-item'),_0x3d740f=[];let _0x18e0e0=![];return _0x100494['forEach'](_0x18025d=>{if(_0x18025d['hasAttribute']('data-connection-derived'))return;const _0x421803=_0x18025d['querySelector']('input[data-field=\x22name\x22]'),_0x3faa21=_0x18025d['querySelector']('input[data-field=\x22path\x22]'),_0x94e0ec=_0x18025d['querySelector']('input[data-field=\x22port\x22]'),_0x111601=_0x18025d['querySelector']('input[data-field=\x22description\x22]'),_0x1ca823=_0x18025d['querySelector']('input[data-field=\x22primary\x22]');if(!_0x421803||!_0x3faa21||!_0x94e0ec||!_0x111601)return;const _0x4c4a5f=_0x421803['value']['trim'](),_0x360822=_0x3faa21['value']['trim'](),_0x2d9f3c=_0x94e0ec['value']['trim'](),_0x3867c1=_0x111601['value']['trim'](),_0xb22215=_0x4c4a5f||_0x360822||_0x2d9f3c||_0x3867c1;if(_0x168057||_0xb22215){const _0x358b1b={'name':_0x4c4a5f,'path':_0x360822};if(_0x2d9f3c)_0x358b1b['port']=parseInt(_0x2d9f3c,0xa);else _0x168057&&(_0x358b1b['port']='');if(_0x3867c1)_0x358b1b['description']=_0x3867c1;else _0x168057&&(_0x358b1b['description']='');const _0xf1913e=_0x1ca823?.['checked']||![];_0xf1913e&&!_0x18e0e0&&_0xb22215&&(_0x358b1b['primary']=!![],_0x18e0e0=!![]),_0x3d740f['push'](_0x358b1b);}}),_0x3d740f;}function renderProxyHeaders(_0x4482b3){const _0x2ffbde=document['getElementById']('proxy-headers-list'),_0x22a4c8=Object['entries'](_0x4482b3);_0x2ffbde['innerHTML']=_0x22a4c8['map'](([_0x186868,_0x63f781],_0x35bc85)=>'\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'](_0x186868)+'\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'](_0x63f781)+'\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('+_0x35bc85+')\x22>×</button>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20')['join']('');}function renderPortQaUrls(_0x3a6213){const _0x56a9f2=document['getElementById']('port-qa-urls-list'),_0x585ece=Object['entries'](_0x3a6213);_0x56a9f2['innerHTML']=_0x585ece['map'](([_0x319b32,_0x3a7e3d],_0xf86fd)=>'\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'](_0x319b32)+'\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'](_0x3a7e3d)+'\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('+_0xf86fd+')\x22>×</button>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20')['join']('');}function addPortQaUrl(){const _0x181628=document['getElementById']('port-qa-urls-list'),_0x157ac0=_0x181628['querySelectorAll']('.config-item');if(_0x157ac0['length']>0x0){const _0x4c6561=_0x157ac0[_0x157ac0['length']-0x1],_0x5c4215=_0x4c6561['querySelectorAll']('input'),_0x5c79aa=_0x5c4215[0x0]['value']['trim'](),_0x4c56db=_0x5c4215[0x1]['value']['trim']();if(!_0x5c79aa&&!_0x4c56db)return;}const _0x298c10=state['selectedEnvData']['application_server']||{},_0x35ba6d=_0x298c10['port_qa_urls']||{};_0x35ba6d['']='',!state['selectedEnvData']['application_server']&&(state['selectedEnvData']['application_server']={}),state['selectedEnvData']['application_server']['port_qa_urls']=_0x35ba6d,renderPortQaUrls(_0x35ba6d),markAsModified();}function removePortQaUrl(_0x508d05){const _0x44d74a=document['getElementById']('port-qa-urls-list'),_0x154ab6=_0x44d74a['querySelectorAll']('.config-item');_0x508d05>=0x0&&_0x508d05<_0x154ab6['length']&&(_0x154ab6[_0x508d05]['remove'](),markAsModified());}function collectPortQaUrlsFromForm(){const _0x4977bd=document['getElementById']('port-qa-urls-list');if(!_0x4977bd)return{};const _0x3fdb27=_0x4977bd['querySelectorAll']('.config-item'),_0x5629d6={};return _0x3fdb27['forEach'](_0x3944a2=>{const _0x4e08f9=_0x3944a2['querySelectorAll']('input');if(_0x4e08f9['length']>=0x2){const _0x1259d3=_0x4e08f9[0x0]['value']['trim'](),_0x50aa61=_0x4e08f9[0x1]['value']['trim']();_0x1259d3&&_0x50aa61&&(_0x5629d6[_0x1259d3]=_0x50aa61);}}),_0x5629d6;}function addPort(){const _0x2c3755=document['getElementById']('ports-list'),_0x498533=_0x2c3755['querySelectorAll']('.config-item');if(_0x498533['length']>0x0){const _0x7ec28b=_0x498533[_0x498533['length']-0x1],_0x2c6f07=_0x7ec28b['querySelectorAll']('input'),_0x3de1c6=_0x2c6f07[0x0]['value']['trim'](),_0x568ba8=_0x2c6f07[0x1]['value']['trim']();if(!_0x3de1c6&&!_0x568ba8)return;}const _0x1c87de=state['selectedEnvData']['application_server']||{},_0x3de871=_0x1c87de['ports']||[];_0x3de871['push']({'internal':'','name':''}),!state['selectedEnvData']['application_server']&&(state['selectedEnvData']['application_server']={}),state['selectedEnvData']['application_server']['ports']=_0x3de871,renderPorts(_0x3de871),markAsModified();}function addURL(){const _0x56760f=document['getElementById']('urls-list'),_0x25e1b8=_0x56760f['querySelectorAll']('.config-item');if(_0x25e1b8['length']>0x0){const _0x7347fb=_0x25e1b8[_0x25e1b8['length']-0x1],_0x16af16=_0x7347fb['querySelector']('input[data-field=\x22name\x22]')?.['value']['trim']()||'',_0x479f08=_0x7347fb['querySelector']('input[data-field=\x22path\x22]')?.['value']['trim']()||'',_0x2e4a50=_0x7347fb['querySelector']('input[data-field=\x22port\x22]')?.['value']['trim']()||'',_0x5bbb93=_0x7347fb['querySelector']('input[data-field=\x22description\x22]')?.['value']['trim']()||'';if(!_0x16af16&&!_0x479f08&&!_0x2e4a50&&!_0x5bbb93)return;}const _0x3374fd=state['selectedEnvData']['application_server']||{},_0x4cbaf0=_0x3374fd['launch_urls']||[];_0x4cbaf0['push']({'name':'','path':''}),!state['selectedEnvData']['application_server']&&(state['selectedEnvData']['application_server']={}),state['selectedEnvData']['application_server']['launch_urls']=_0x4cbaf0,renderURLs(_0x4cbaf0),markAsModified();}window['removePort']=function(_0x26aff7){const _0x4188d5=state['selectedEnvData']['application_server']||{},_0x1ecd9f=_0x4188d5['ports']||[];_0x1ecd9f['splice'](_0x26aff7,0x1),state['selectedEnvData']['application_server']['ports']=_0x1ecd9f,renderPorts(_0x1ecd9f),markAsModified();},window['removeURL']=function(_0x1a12d8){const _0x2566b0=state['selectedEnvData']['application_server']||{},_0x2c7645=_0x2566b0['launch_urls']||[];_0x2c7645['splice'](_0x1a12d8,0x1),state['selectedEnvData']['application_server']['launch_urls']=_0x2c7645,renderURLs(_0x2c7645),markAsModified();},window['moveURL']=function(_0x4b57db,_0x29b8e7){const _0x1f5a00=collectURLsFromForm(!![]),_0x2880db=_0x4b57db+_0x29b8e7;if(_0x2880db<0x0||_0x2880db>=_0x1f5a00['length'])return;const [_0x34f68d]=_0x1f5a00['splice'](_0x4b57db,0x1);_0x1f5a00['splice'](_0x2880db,0x0,_0x34f68d),!state['selectedEnvData']['application_server']&&(state['selectedEnvData']['application_server']={}),state['selectedEnvData']['application_server']['launch_urls']=_0x1f5a00,renderURLs(_0x1f5a00),markAsModified();},window['setPrimaryURL']=function(_0x1c04e3){const _0x2d152f=collectURLsFromForm(!![]);_0x2d152f['forEach']((_0x993115,_0x3f64cd)=>{_0x3f64cd===_0x1c04e3&&(_0x993115['name']||_0x993115['path']||_0x993115['port']||_0x993115['description'])?_0x993115['primary']=!![]:delete _0x993115['primary'];}),!state['selectedEnvData']['application_server']&&(state['selectedEnvData']['application_server']={}),state['selectedEnvData']['application_server']['launch_urls']=_0x2d152f,renderURLs(_0x2d152f),markAsModified();};function clearPrimaryURL(){const _0x6d2c88=collectURLsFromForm(!![]);_0x6d2c88['forEach'](_0xd42bfc=>{delete _0xd42bfc['primary'];}),!state['selectedEnvData']['application_server']&&(state['selectedEnvData']['application_server']={}),state['selectedEnvData']['application_server']['launch_urls']=_0x6d2c88,renderURLs(_0x6d2c88),markAsModified();}function addProxyHeader(){const _0x388f0b=document['getElementById']('proxy-headers-list'),_0x49fea6=_0x388f0b['querySelectorAll']('.config-item');if(_0x49fea6['length']>0x0){const _0x3fda28=_0x49fea6[_0x49fea6['length']-0x1],_0x2525d1=_0x3fda28['querySelectorAll']('input'),_0x45ab9b=_0x2525d1[0x0]['value']['trim'](),_0x16708e=_0x2525d1[0x1]['value']['trim']();if(!_0x45ab9b&&!_0x16708e)return;}const _0x42775f=state['selectedEnvData']['application_server']||{},_0x49a309=_0x42775f['proxy_headers']||{};_0x49a309['']='',!state['selectedEnvData']['application_server']&&(state['selectedEnvData']['application_server']={}),state['selectedEnvData']['application_server']['proxy_headers']=_0x49a309,renderProxyHeaders(_0x49a309),markAsModified();}window['removeProxyHeader']=function(_0x1e58d5){const _0x54da75=state['selectedEnvData']['application_server']||{},_0x23f538=_0x54da75['proxy_headers']||{},_0x45858b=Object['keys'](_0x23f538);_0x1e58d5<_0x45858b['length']&&delete _0x23f538[_0x45858b[_0x1e58d5]],state['selectedEnvData']['application_server']['proxy_headers']=_0x23f538,renderProxyHeaders(_0x23f538),markAsModified();},window['removePortQaUrl']=function(_0x296b17){const _0x2f0a3c=state['selectedEnvData']['application_server']||{},_0x44da7c=_0x2f0a3c['port_qa_urls']||{},_0x16ab62=Object['keys'](_0x44da7c);_0x296b17<_0x16ab62['length']&&delete _0x44da7c[_0x16ab62[_0x296b17]],state['selectedEnvData']['application_server']['port_qa_urls']=_0x44da7c,renderPortQaUrls(_0x44da7c),markAsModified();};function renderReadme(){const _0xd869e9=state['selectedEnvData']['readmeContent']||'',_0x180167=document['getElementById']('readme-preview'),_0x24e434=document['getElementById']('readme-editor'),_0x51fb37=document['getElementById']('preview-readme-btn');_0xd869e9?_0x180167['innerHTML']=marked['parse'](_0xd869e9):_0x180167['innerHTML']='<p\x20class=\x22text-muted\x22>No\x20README\x20content\x20yet.\x20Click\x20Edit\x20to\x20add\x20documentation\x20for\x20this\x20environment.</p>',_0x180167['hidden']=![],_0x24e434['hidden']=!![],_0x51fb37['innerHTML']='<span>✏️</span>\x20Edit',!state['readmeContent']&&(state['readmeContent']=_0xd869e9);}window['toggleReadmePreview']=async function(){const _0x340dc7=document['getElementById']('readme-editor'),_0x37116c=document['getElementById']('readme-preview'),_0x374659=document['getElementById']('preview-readme-btn'),_0x5f4d04='readme-editor';if(_0x37116c['hidden']){const _0x481cd3=getMonacoValue(_0x5f4d04)||'';_0x481cd3?_0x37116c['innerHTML']=marked['parse'](_0x481cd3):_0x37116c['innerHTML']='<p\x20class=\x22text-muted\x22>No\x20README\x20content\x20yet.</p>',_0x37116c['hidden']=![],_0x340dc7['hidden']=!![],_0x374659['innerHTML']='<span>✏️</span>\x20Edit';}else{_0x37116c['hidden']=!![],_0x340dc7['hidden']=![],_0x374659['innerHTML']='<span>👁</span>\x20Preview';const _0x233fb=window['MarkdownFileEditor']&&window['MarkdownFileEditor']['editors']['has'](_0x5f4d04),_0x51fc29=monacoEditors['has'](_0x5f4d04);if(!_0x233fb&&!_0x51fc29){const _0x2a5a7c=state['selectedEnvData']['readmeContent']||'';if(window['MarkdownFileEditor']){const _0xd24be=window['MarkdownFileEditor']['getOrCreate'](_0x5f4d04,_0x2a5a7c,![],'400px',()=>markAsModified());}else{const _0x18c36c=await createMonacoEditor(_0x5f4d04,_0x2a5a7c,'markdown',![]);_0x18c36c&&_0x18c36c['onDidChangeModelContent'](()=>{markAsModified();});}}}};async function renderAgentInstructions(){const _0x5048ee=state['selectedEnvData']['agentsContent']||'',_0x4144c0=document['getElementById']('agents-preview'),_0x39a1d1=document['getElementById']('agents-editor'),_0x3d4547=document['getElementById']('preview-agents-btn');_0x4144c0['innerHTML']=marked['parse'](_0x5048ee),_0x4144c0['hidden']=![],_0x39a1d1['hidden']=!![],_0x3d4547['innerHTML']='<span>✏️</span>\x20Edit',state['agentsContent']=_0x5048ee;}function updateAgentStats(){const _0xf405e7=getMonacoValue('agents-editor')||'',_0x44e068=_0xf405e7['split']('\x0a')['length'],_0x157821=_0xf405e7['trim']()['split'](/\s+/)['length'],_0x23a3cc=_0xf405e7['length'];document['getElementById']('agents-stats')['textContent']='Lines:\x20'+_0x44e068+'\x20•\x20Words:\x20'+_0x157821+'\x20•\x20Characters:\x20'+_0x23a3cc;}async function toggleAgentsPreview(){const _0x5a695d=document['getElementById']('agents-editor'),_0x18a0c7=document['getElementById']('agents-preview'),_0x71309a=document['getElementById']('preview-agents-btn'),_0x2ce343='agents-editor';if(_0x18a0c7['hidden']){const _0x454755=getMonacoValue(_0x2ce343)||'';_0x18a0c7['innerHTML']=marked['parse'](_0x454755),_0x18a0c7['hidden']=![],_0x5a695d['hidden']=!![],_0x71309a['innerHTML']='<span>✏️</span>\x20Edit';}else{_0x18a0c7['hidden']=!![],_0x5a695d['hidden']=![],_0x71309a['innerHTML']='<span>👁</span>\x20Preview';const _0x29c2d7=window['MarkdownFileEditor']&&window['MarkdownFileEditor']['editors']['has'](_0x2ce343),_0x2e8b70=monacoEditors['has'](_0x2ce343);if(!_0x29c2d7&&!_0x2e8b70){const _0x1e2f90=state['agentsContent']||'';if(window['MarkdownFileEditor']){const _0x278987=window['MarkdownFileEditor']['getOrCreate'](_0x2ce343,_0x1e2f90,![],'500px',()=>{updateAgentStats(),markAsModified();});}else{const _0x1677a9=await createMonacoEditor(_0x2ce343,_0x1e2f90,'markdown',![]);_0x1677a9&&_0x1677a9['onDidChangeModelContent'](()=>{updateAgentStats(),markAsModified();});}updateAgentStats();}}}let currentScript='pre-clone';function renderBuildTab(){}function toggleScriptsSection(){const _0x373eaa=document['querySelector']('#scripts-section-header')['closest']('.collapsible-card'),_0x32b2e0=document['getElementById']('scripts-section-body');_0x32b2e0['hidden']?(_0x32b2e0['hidden']=![],_0x373eaa['classList']['add']('expanded'),!monacoEditors['has']('script-editor')&&switchScript(currentScript)):(_0x32b2e0['hidden']=!![],_0x373eaa['classList']['remove']('expanded'));}async function switchScript(_0x16dba9){currentScript=_0x16dba9,document['querySelectorAll']('#scripts-section-body\x20.script-tab')['forEach'](_0x4c0732=>{_0x4c0732['classList']['toggle']('active',_0x4c0732['dataset']['script']===_0x16dba9);});const _0x411683=['pre-clone','post-clone','setup','cleanup'];_0x411683['forEach'](_0x1bc8d9=>{const _0x344c1b=document['querySelector']('.script-desc-'+_0x1bc8d9);_0x344c1b&&(_0x344c1b['hidden']=_0x16dba9!==_0x1bc8d9&&_0x16dba9!==_0x1bc8d9+'.sh');});let _0xa9c401='';if(_0x16dba9==='pre-clone'||_0x16dba9==='post-clone'){const _0x14d05d=_0x16dba9==='pre-clone'?'pre_clone_instructions':'post_clone_instructions';_0xa9c401=state['selectedEnvData']['docker_config']?.[_0x14d05d]||'';}else _0xa9c401=state['selectedEnvData']['files']?.[_0x16dba9]||'';const _0x3c567e=await createMonacoEditor('script-editor',_0xa9c401,'shell',![]);_0x3c567e&&(_0x3c567e['updateOptions']({'wordWrap':'off'}),_0x3c567e['onDidChangeModelContent'](()=>{markAsModified();}));}function getCurrentScriptContent(){if(!monacoEditors['has']('script-editor'))return null;return getMonacoValue('script-editor');}function saveCurrentScriptToState(){const _0xf4e646=getCurrentScriptContent();if(_0xf4e646===null)return;if(currentScript==='pre-clone'||currentScript==='post-clone'){!state['selectedEnvData']['docker_config']&&(state['selectedEnvData']['docker_config']={});const _0x352e2d=currentScript==='pre-clone'?'pre_clone_instructions':'post_clone_instructions';state['selectedEnvData']['docker_config'][_0x352e2d]=_0xf4e646;}else!state['selectedEnvData']['files']&&(state['selectedEnvData']['files']={}),state['selectedEnvData']['files'][currentScript]=_0xf4e646;}function getCodermakeBuildCommands(_0x293f2c,_0x593502){const _0x354abf=_0x293f2c['external_connections']||[],_0x318a8b=_0x293f2c['repos']||[],_0x595190=[];for(const _0x49b4a0 of _0x354abf){if(_0x49b4a0['type']!=='ibmi')continue;const _0x57ebbb=_0x49b4a0['config']?.['features']||[];if(!_0x57ebbb['includes']('build'))continue;if(!_0x49b4a0['config']?.['build_repo'])continue;if(!_0x593502['find'](_0x45c87f=>_0x45c87f['name']===_0x49b4a0['config']['build_repo']))continue;const _0xff6f0a=_0x318a8b['find'](_0x483fac=>_0x483fac['name']===_0x49b4a0['config']['build_repo']),_0x23f0e1=_0xff6f0a?'/workspace/'+(_0xff6f0a['path']||_0xff6f0a['name']):'/workspace',_0x11cadf=_0x49b4a0['config']['build_path']?_0x23f0e1+'/'+_0x49b4a0['config']['build_path']:_0x23f0e1;_0x595190['push']('cd\x20'+_0x11cadf+'\x20&&\x20IBMI_BUILD_LIBRARY=container_setup_build\x20IBMI_HOST=dummy\x20IBMI_USER=dummy\x20codermake\x20-t');}return _0x595190;}function generateDockerfilePreview(){saveCurrentScriptToState();const _0xbdc075=state['selectedEnvData'],_0xd144ec='profoundlogic/coder-base:latest',_0x10d039=_0xbdc075['repos']||[],_0x400635=_0xbdc075['docker_config']?.['pre_clone_instructions']||'',_0x2c4c9e=_0xbdc075['docker_config']?.['post_clone_instructions']||'';let _0x5f5bf8='FROM\x20'+_0xd144ec+'\x0a\x0a';_0x400635['trim']()&&(_0x5f5bf8+='#\x20Pre-clone\x20instructions\x0a',_0x5f5bf8+=_0x400635['trim']()+'\x0a\x0a');const _0x3add6e=_0x10d039['filter'](_0x443af5=>_0x443af5['clone_auto']!==![]);if(_0x3add6e['length']>0x0){const _0x527100=_0x3add6e['map'](_0x59d6d9=>{const _0x3f3efa=_0x59d6d9['path']||_0x59d6d9['name']||_0x59d6d9['url']?.['split']('/')['pop']()?.['replace']('.git','')||'repo',_0x598e0b=normalizeGitUrl(_0x59d6d9['url']);return'git\x20clone\x20--depth=50\x20--no-single-branch\x20'+_0x598e0b+'\x20/workspace/'+_0x3f3efa;}),_0x4d6a69=_0x3add6e['filter'](_0x407fa2=>_0x407fa2['post_clone_action']&&_0x407fa2['post_clone_action']!=='none')['map'](_0x55a9d6=>{const _0x319bdc=_0x55a9d6['path']||_0x55a9d6['name']||_0x55a9d6['url']?.['split']('/')['pop']()?.['replace']('.git','')||'repo',_0xe7943=_0x55a9d6['post_clone_action']['split']('\x0a')['map'](_0x5e8f96=>_0x5e8f96['replace'](/\r$/,''))['filter'](_0x21c2e6=>_0x21c2e6['trim']())['join']('\x20&&\x20\x5c\x0a\x20\x20\x20\x20');return'cd\x20/workspace/'+_0x319bdc+'\x20&&\x20'+_0xe7943;}),_0x5acf94=_0x3add6e['some'](_0x357f8f=>_0x357f8f['remote_provider']);_0x5f5bf8+='#\x20Clone\x20repositories\x20and\x20install\x20dependencies\x0a';_0x5acf94?_0x5f5bf8+='RUN\x20--mount=type=secret,id=git-credentials,target=/root/.git-credentials\x20\x5c\x0a\x20\x20\x20\x20':_0x5f5bf8+='RUN\x20';_0x5f5bf8+=_0x527100['join']('\x20&&\x20\x5c\x0a\x20\x20\x20\x20');_0x4d6a69['length']>0x0&&(_0x5f5bf8+='\x20&&\x20\x5c\x0a\x20\x20\x20\x20'+_0x4d6a69['join']('\x20&&\x20\x5c\x0a\x20\x20\x20\x20'));const _0x423a9e=getCodermakeBuildCommands(_0xbdc075,_0x3add6e);_0x423a9e['length']>0x0&&(_0x5f5bf8+='\x20&&\x20\x5c\x0a\x20\x20\x20\x20'+_0x423a9e['join']('\x20&&\x20\x5c\x0a\x20\x20\x20\x20')),_0x5f5bf8+='\x20&&\x20\x5c\x0a\x20\x20\x20\x20chown\x20-R\x20coder:coder\x20/workspace\x0a\x0a';}return _0x2c4c9e['trim']()&&(_0x5f5bf8+='#\x20Post-clone\x20instructions\x0a',_0x5f5bf8+=_0x2c4c9e['trim']()+'\x0a\x0a'),_0x5f5bf8+='WORKDIR\x20/workspace\x0a',_0x5f5bf8;}function showDockerfilePreview(){const _0x4debd9=generateDockerfilePreview(),_0x3b5103=document['getElementById']('dockerfile-preview-text');_0x3b5103['textContent']=_0x4debd9,document['getElementById']('dockerfile-preview-modal')['hidden']=![];}function closeDockerfilePreviewModal(){document['getElementById']('dockerfile-preview-modal')['hidden']=!![];}async function copyDockerfileToClipboard(){const _0x432995=generateDockerfilePreview();try{await navigator['clipboard']['writeText'](_0x432995);const _0x56489e=document['getElementById']('dockerfile-copy-btn'),_0x17302a=_0x56489e['innerHTML'];_0x56489e['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(()=>{_0x56489e['innerHTML']=_0x17302a;},0x7d0);}catch(_0x4ae798){console['error']('Failed\x20to\x20copy:',_0x4ae798);}}function renderTests(){const _0x3ccbdc=document['querySelector']('.tests-sidebar'),_0xbfdc1a=state['selectedEnvData']['tests']||{},_0xa62f8=Object['keys'](_0xbfdc1a);updateTabBadge('badge-tests',_0xa62f8['length']);const _0xee718a=_0x3ccbdc['querySelector']('#new-test-tab'),_0x29b885=_0xa62f8['map']((_0xc0394f,_0x145204)=>'\x0a\x20\x20\x20\x20<button\x20class=\x22test-tab\x22\x20data-test=\x22'+_0x145204+'\x22\x20onclick=\x22selectTest(\x27'+_0xc0394f+'\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'](_0xc0394f)+'</span>\x0a\x20\x20\x20\x20</button>\x0a\x20\x20')['join']('');_0x3ccbdc['innerHTML']=_0xee718a['outerHTML']+_0x29b885,_0x3ccbdc['querySelector']('#new-test-tab')['addEventListener']('click',addTest);if(_0xa62f8['length']>0x0&&state['currentTest']===null)selectTest(_0xa62f8[0x0]);else _0xa62f8['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(_0x4b6ba4){state['currentTest']=_0x4b6ba4;const _0x738a9a=state['selectedEnvData']['tests'][_0x4b6ba4];document['querySelectorAll']('.test-tab')['forEach'](_0x283bdc=>{const _0x54f234=_0x283bdc['querySelector']('span:last-child')['textContent'];_0x283bdc['classList']['toggle']('active',_0x54f234===_0x4b6ba4);}),document['getElementById']('current-test-name')['textContent']=_0x4b6ba4,document['getElementById']('delete-test-btn')['hidden']=![];const _0x3ba644=document['getElementById']('test-details-container');let _0x285207='',_0x3d69a7=![];if(_0x738a9a['commands']&&Array['isArray'](_0x738a9a['commands']))_0x285207=_0x738a9a['commands']['join']('\x0a'),_0x3d69a7=!![];else _0x738a9a['command']&&(Array['isArray'](_0x738a9a['command'])?_0x285207=_0x738a9a['command']['join']('\x20&&\x20'):_0x285207=_0x738a9a['command']);const _0xb420ec=_0x738a9a['parameters']?Object['keys'](_0x738a9a['parameters'])['length']:0x0;_0x3ba644['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'](_0x738a9a['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'+(_0x3d69a7?'s':'')+'</label>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<textarea\x20id=\x22test-command\x22\x20class=\x22form-input\x20code-font\x22\x20rows=\x22'+(_0x3d69a7?'8':'3')+'\x22\x20placeholder=\x22'+(_0x3d69a7?'One\x20command\x20per\x20line':'Test\x20command')+'\x22>'+Utils['escapeHtml'](_0x285207)+'</textarea>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20'+(_0x3d69a7?'<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>'+_0xb420ec+'</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'](_0x389872=>{const _0xdb15a7=document['getElementById'](_0x389872);_0xdb15a7&&_0xdb15a7['addEventListener']('input',markAsModified);}),initTestParameterSectionToggle(),renderTestParameters();};function initTestParameterSectionToggle(){const _0x1c3eae=document['querySelector']('#test-details-container\x20.deploy-section-toggle');if(!_0x1c3eae)return;_0x1c3eae['addEventListener']('click',function(){const _0x39209f=this['getAttribute']('aria-expanded')==='true',_0x236ae4=this['getAttribute']('aria-controls'),_0x1622fa=document['getElementById'](_0x236ae4);this['setAttribute']('aria-expanded',!_0x39209f),_0x1622fa&&(_0x1622fa['hidden']=_0x39209f);});}function addTest(){const _0x24fd51=document['getElementById']('new-test-name'),_0x302c74=document['getElementById']('new-test-command'),_0x1b5d22=document['getElementById']('add-test-error');_0x24fd51['value']='',document['getElementById']('new-test-description')['value']='',_0x302c74['value']='',_0x24fd51['classList']['remove']('input-error'),_0x302c74['classList']['remove']('input-error'),_0x1b5d22['hidden']=!![],document['getElementById']('add-test-modal')['hidden']=![];}function closeAddTestModal(){document['getElementById']('add-test-modal')['hidden']=!![];}async function confirmAddTest(){const _0x1fd096=document['getElementById']('new-test-name'),_0x57bb4f=document['getElementById']('new-test-command'),_0x4e354f=document['getElementById']('add-test-error'),_0x1db978=_0x1fd096['value']['trim'](),_0x3bf832=document['getElementById']('new-test-description')['value']['trim'](),_0x1b515f=_0x57bb4f['value']['trim']();_0x1fd096['classList']['remove']('input-error'),_0x57bb4f['classList']['remove']('input-error'),_0x4e354f['hidden']=!![];if(!_0x1db978||!_0x1b515f){if(!_0x1db978)_0x1fd096['classList']['add']('input-error');if(!_0x1b515f)_0x57bb4f['classList']['add']('input-error');_0x4e354f['textContent']='Test\x20name\x20and\x20command\x20are\x20required',_0x4e354f['hidden']=![];return;}if(state['selectedEnvData']['tests'][_0x1db978]){_0x1fd096['classList']['add']('input-error'),_0x4e354f['textContent']='A\x20test\x20with\x20this\x20name\x20already\x20exists',_0x4e354f['hidden']=![];return;}const _0x40ac76=_0x1b515f['split']('\x0a')['filter'](_0x28886e=>_0x28886e['trim']());let _0x3829a0;_0x40ac76['length']>0x1?_0x3829a0={'commands':_0x40ac76}:_0x3829a0={'command':_0x40ac76[0x0]};const _0x4d93c2={'description':_0x3bf832,..._0x3829a0};state['selectedEnvData']['tests']={...state['selectedEnvData']['tests'],[_0x1db978]:_0x4d93c2},renderTests(),markAsModified(),closeAddTestModal(),Utils['showSuccess']('Test\x20command\x20added\x20(click\x20Save\x20to\x20persist\x20changes)');}window['editTest']=function(_0x3c5f67){selectTest(_0x3c5f67);},window['removeTest']=function(_0x4db0f6){document['getElementById']('delete-test-name')['textContent']=_0x4db0f6,document['getElementById']('delete-test-confirm-btn')['dataset']['testKey']=_0x4db0f6,document['getElementById']('delete-test-modal')['hidden']=![];};function closeDeleteTestModal(){document['getElementById']('delete-test-modal')['hidden']=!![];}function confirmDeleteTest(){const _0x4f000a=document['getElementById']('delete-test-confirm-btn')['dataset']['testKey'],_0x386557={...state['selectedEnvData']['tests']};delete _0x386557[_0x4f000a],state['selectedEnvData']['tests']=_0x386557,state['currentTest']===_0x4f000a&&(state['currentTest']=null),renderTests(),markAsModified(),closeDeleteTestModal(),Utils['showSuccess']('Test\x20command\x20removed\x20(click\x20Save\x20to\x20persist\x20changes)');}function renderTemplates(){const _0x55d599=document['querySelector']('.templates-sidebar'),_0x34091=state['selectedEnvData']['templates']||[];updateTabBadge('badge-templates',_0x34091['length']);const _0x24e052=_0x55d599['querySelector']('#new-template-tab'),_0x1553d4=_0x34091['map']((_0x25076b,_0x44babf)=>'\x0a\x20\x20\x20\x20<button\x20class=\x22template-tab\x22\x20data-template=\x22'+_0x44babf+'\x22\x20onclick=\x22selectTemplate('+_0x44babf+')\x22>\x0a\x20\x20\x20\x20\x20\x20<span\x20class=\x22template-icon\x22>📝</span>\x0a\x20\x20\x20\x20\x20\x20<span>'+Utils['escapeHtml'](_0x25076b['title'])+'</span>\x0a\x20\x20\x20\x20</button>\x0a\x20\x20')['join']('');_0x55d599['innerHTML']=_0x24e052['outerHTML']+_0x1553d4,_0x55d599['querySelector']('#new-template-tab')['addEventListener']('click',createNewTemplate);if(_0x34091['length']>0x0&&state['currentTemplate']===null)selectTemplate(0x0);else _0x34091['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(_0x237491){state['currentTemplate']=_0x237491;const _0x16812d=state['selectedEnvData']['templates'][_0x237491],_0x3347ce=monacoEditors['get']('template-md-editor');_0x3347ce&&(_0x3347ce['dispose'](),monacoEditors['delete']('template-md-editor'));document['querySelectorAll']('.template-tab')['forEach'](_0xfbec68=>{_0xfbec68['classList']['toggle']('active',_0xfbec68['dataset']['template']===String(_0x237491));}),document['getElementById']('current-template-name')['textContent']=_0x16812d['title'],document['getElementById']('delete-template-btn')['hidden']=![],document['getElementById']('preview-template-btn')['hidden']=![],document['getElementById']('preview-template-btn')['innerHTML']='<span>✏️</span>\x20Edit';const _0x27e038=_0x16812d['parameters']?Object['keys'](_0x16812d['parameters'])['length']:0x0,_0x3ad5be=document['getElementById']('template-editor-container');_0x3ad5be['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'](_0x16812d['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'+(_0x16812d['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'](_0x16812d['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>'+_0x27e038+'</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'](_0x16812d['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'](_0x16812d['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>'+_0x27e038+'</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 _0x15d991=document['getElementById']('template-md-preview');_0x15d991['innerHTML']=marked['parse'](_0x16812d['content']||''),state['currentTemplateData']={..._0x16812d,'parameters':_0x16812d['parameters']?JSON['parse'](JSON['stringify'](_0x16812d['parameters'])):{}},initTemplateSectionToggles(),renderTemplateParametersPreview();};function initTemplateSectionToggles(){document['querySelectorAll']('#template-editor-container\x20.deploy-section-toggle')['forEach'](_0x4dceb5=>{_0x4dceb5['addEventListener']('click',function(){const _0xf68899=this['getAttribute']('aria-expanded')==='true',_0x49db63=this['getAttribute']('aria-controls'),_0x260ac1=document['getElementById'](_0x49db63);this['setAttribute']('aria-expanded',!_0xf68899),_0x260ac1&&(_0x260ac1['hidden']=_0xf68899);});});}function renderTemplateParametersPreview(){const _0x577d08=document['getElementById']('template-parameters-preview-list');if(!_0x577d08)return;const _0x534561=state['currentTemplateData']?.['parameters']||{},_0xe9b26=Array['isArray'](_0x534561)?Object['fromEntries'](_0x534561['map'](_0x2b27ca=>[_0x2b27ca['name'],_0x2b27ca])):_0x534561,_0x5ad38b=Object['entries'](_0xe9b26);if(_0x5ad38b['length']===0x0){_0x577d08['innerHTML']='<div\x20class=\x22profile-list-empty\x22>No\x20parameters\x20defined</div>';return;}_0x577d08['innerHTML']=_0x5ad38b['map'](([_0x17430b,_0x4dd0a7])=>{const _0x342cd1=getParameterTypeLabel(_0x4dd0a7),_0x1ef9da=_0x4dd0a7['prompt']?.['label']||_0x4dd0a7['label']||'';return'\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22profile-param-item\x22\x20data-name=\x22'+Utils['escapeHtml'](_0x17430b)+'\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22profile-item-key\x22>'+Utils['escapeHtml'](_0x17430b)+'</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22param-type-badge\x22>'+_0x342cd1+'</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22profile-item-value\x22>'+(_0x1ef9da?Utils['escapeHtml'](_0x1ef9da):'')+'</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20'+(_0x4dd0a7['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 _0x4ee526=document['getElementById']('template-preview-container'),_0x1bbc06=document['getElementById']('template-editor-container-edit'),_0x219a48=document['getElementById']('preview-template-btn');if(!_0x4ee526||!_0x1bbc06)return;if(_0x4ee526['hidden']){const _0x456a31=getMonacoValue('template-md-editor');if(_0x456a31!==null){const _0x11f692=document['getElementById']('template-md-preview');_0x11f692&&(_0x11f692['innerHTML']=marked['parse'](_0x456a31));}const _0x1ab06a=document['getElementById']('template-edit-title'),_0x351737=document['getElementById']('template-edit-description');_0x1ab06a&&state['currentTemplateData']&&(state['currentTemplateData']['title']=_0x1ab06a['value']),_0x351737&&state['currentTemplateData']&&(state['currentTemplateData']['description']=_0x351737['value']),renderTemplateParametersPreview(),_0x4ee526['hidden']=![],_0x1bbc06['hidden']=!![],_0x219a48['innerHTML']='<span>✏️</span>\x20Edit';}else{_0x4ee526['hidden']=!![],_0x1bbc06['hidden']=![],_0x219a48['innerHTML']='<span>👁</span>\x20Preview';const _0x373cae=state['currentTemplateData'],_0x17a967='template-md-editor',_0x649159=window['MarkdownFileEditor']&&window['MarkdownFileEditor']['editors']['has'](_0x17a967),_0x1c2d2e=monacoEditors['has'](_0x17a967);if(_0x373cae&&!_0x649159&&!_0x1c2d2e){if(window['MarkdownFileEditor']){const _0x162817=window['MarkdownFileEditor']['getOrCreate'](_0x17a967,_0x373cae['content']||'',![],'400px',()=>markAsModified());}else{const _0x2a8056=await createMonacoEditor(_0x17a967,_0x373cae['content']||'','markdown',![]);_0x2a8056&&_0x2a8056['onDidChangeModelContent'](()=>{markAsModified();});}}const _0x41d177=document['getElementById']('template-edit-title'),_0x5d0787=document['getElementById']('template-edit-description');_0x41d177&&_0x41d177['addEventListener']('input',markAsModified),_0x5d0787&&_0x5d0787['addEventListener']('input',markAsModified),renderTemplateParameters();}}function createNewTemplate(){const _0x215fb4=document['getElementById']('new-template-title'),_0x3be563=document['getElementById']('new-template-description'),_0xe3ac90=document['getElementById']('new-template-filename'),_0x9d9000=document['getElementById']('add-template-error');_0x215fb4['value']='',_0x3be563['value']='',_0xe3ac90['value']='',_0x215fb4['classList']['remove']('input-error'),_0xe3ac90['classList']['remove']('input-error'),_0x9d9000['hidden']=!![],_0x215fb4['addEventListener']('input',()=>{const _0x55d3cf=_0x215fb4['value']['trim']();if(_0x55d3cf&&!_0xe3ac90['value']){const _0x2f79d3=_0x55d3cf['toLowerCase']()['replace'](/[^a-z0-9]+/g,'-')['replace'](/^-+|-+$/g,'')+'.md';_0xe3ac90['placeholder']=_0x2f79d3;}}),document['getElementById']('add-template-modal')['hidden']=![];}function closeAddTemplateModal(){document['getElementById']('add-template-modal')['hidden']=!![];}function confirmAddTemplate(){const _0x259715=document['getElementById']('new-template-title'),_0x4d2349=document['getElementById']('new-template-filename'),_0x45b26c=document['getElementById']('add-template-error'),_0x42c4d5=_0x259715['value']['trim'](),_0x2a9187=document['getElementById']('new-template-description')['value']['trim']();let _0x56440b=_0x4d2349['value']['trim']();_0x259715['classList']['remove']('input-error'),_0x4d2349['classList']['remove']('input-error'),_0x45b26c['hidden']=!![];if(!_0x42c4d5){_0x259715['classList']['add']('input-error'),_0x45b26c['textContent']='Template\x20title\x20is\x20required',_0x45b26c['hidden']=![];return;}!_0x56440b&&(_0x56440b=_0x42c4d5['toLowerCase']()['replace'](/[^a-z0-9]+/g,'-')['replace'](/^-+|-+$/g,'')+'.md');!_0x56440b['endsWith']('.md')&&(_0x56440b+='.md');if(state['selectedEnvData']['templates']['some'](_0x1ae800=>_0x1ae800['filename']===_0x56440b)){_0x4d2349['classList']['add']('input-error'),_0x45b26c['textContent']='A\x20template\x20with\x20this\x20filename\x20already\x20exists',_0x45b26c['hidden']=![];return;}const _0x4804e0={'title':_0x42c4d5,'description':_0x2a9187||undefined,'filename':_0x56440b,'content':'','parameters':[]};state['selectedEnvData']['templates']=[...state['selectedEnvData']['templates']||[],_0x4804e0],renderTemplates(),markAsModified(),closeAddTemplateModal(),Utils['showSuccess']('Template\x20added\x20(click\x20Save\x20to\x20persist\x20changes)');}window['editTemplate']=function(_0x4e6c3a){selectTemplate(_0x4e6c3a);},window['removeTemplate']=function(_0x5d5684){const _0x39fada=state['selectedEnvData']['templates'][_0x5d5684];document['getElementById']('delete-template-name')['textContent']=_0x39fada['title'],document['getElementById']('delete-template-confirm-btn')['dataset']['templateIndex']=_0x5d5684,document['getElementById']('delete-template-modal')['hidden']=![];};function closeDeleteTemplateModal(){document['getElementById']('delete-template-modal')['hidden']=!![];}function confirmDeleteTemplate(){const _0x4f124d=parseInt(document['getElementById']('delete-template-confirm-btn')['dataset']['templateIndex']);state['selectedEnvData']['templates']=state['selectedEnvData']['templates']['filter']((_0x2026dd,_0x162038)=>_0x162038!==_0x4f124d);if(state['currentTemplate']===_0x4f124d)state['currentTemplate']=null;else state['currentTemplate']>_0x4f124d&&state['currentTemplate']--;renderTemplates(),markAsModified(),closeDeleteTemplateModal(),Utils['showSuccess']('Template\x20removed\x20(click\x20Save\x20to\x20persist\x20changes)');}function renderDeployProfiles(){const _0x56dab3=document['querySelector']('.deploy-sidebar'),_0x5982a9=state['selectedEnvData']['deployment_profiles']||[];updateTabBadge('badge-deploy',_0x5982a9['length']);const _0x52a233=_0x56dab3['querySelector']('#new-deploy-profile-tab'),_0x14c057=_0x5982a9['map'](_0x132884=>'\x0a\x20\x20\x20\x20<button\x20class=\x22deploy-profile-tab\x20'+(!_0x132884['hasScript']?'missing-script':'')+'\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20data-profile=\x22'+Utils['escapeHtml'](_0x132884['name'])+'\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20onclick=\x22selectDeployProfile(\x27'+Utils['escapeHtml'](_0x132884['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'](_0x132884['name'])+'</span>\x0a\x20\x20\x20\x20</button>\x0a\x20\x20')['join']('');_0x56dab3['innerHTML']=_0x52a233['outerHTML']+_0x14c057,_0x56dab3['querySelector']('#new-deploy-profile-tab')['addEventListener']('click',openAddDeployProfileModal);if(_0x5982a9['length']>0x0&&state['currentDeployProfile']===null)selectDeployProfile(_0x5982a9[0x0]['name']);else{if(_0x5982a9['length']===0x0)showDeployProfileEmptyState();else{if(state['currentDeployProfile']){const _0x28298e=_0x5982a9['find'](_0x300d8a=>_0x300d8a['name']===state['currentDeployProfile']);_0x28298e?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(_0x79d2aa){if(state['profileHasUnsavedChanges']&&state['currentDeployProfile']!==_0x79d2aa){const _0xdb8aa2=confirm('You\x20have\x20unsaved\x20changes\x20to\x20this\x20profile.\x20Switch\x20anyway?\x0a\x0aUse\x20the\x20global\x20Save\x20button\x20to\x20save\x20all\x20changes.');if(!_0xdb8aa2)return;state['profileHasUnsavedChanges']=![];}state['currentDeployProfile']=_0x79d2aa,document['querySelectorAll']('.deploy-profile-tab')['forEach'](_0x2417d7=>{_0x2417d7['classList']['toggle']('active',_0x2417d7['dataset']['profile']===_0x79d2aa);});const _0x1e88dd=state['selectedEnvData']['deployment_profiles']||[],_0x48c2ac=_0x1e88dd['find'](_0x4f855f=>_0x4f855f['name']===_0x79d2aa);if(!_0x48c2ac){showDeployProfileEmptyState();return;}try{const _0x4a5c73=await API['get']('/environments/'+state['selectedEnv']+'/deployment-profiles/'+_0x79d2aa);state['currentDeployProfileData']=_0x4a5c73,document['getElementById']('current-deploy-profile-name')['textContent']=_0x79d2aa;const _0x1ab443=document['getElementById']('run-deploy-profile-btn');_0x1ab443['hidden']=![],_0x1ab443['disabled']=!_0x4a5c73['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']=_0x4a5c73['description']||'',document['getElementById']('profile-script-filename')['textContent']=_0x79d2aa+'.sh',await initProfileScriptEditor(_0x4a5c73['scriptContent']||''),renderProfileSecrets(),renderProfileParameters();}catch(_0x481463){console['error']('Failed\x20to\x20load\x20profile:',_0x481463),Utils['showError']('Failed\x20to\x20load\x20profile\x20details'),showDeployProfileEmptyState();}};async function initProfileScriptEditor(_0x156190){state['profileScriptEditor']&&(state['profileScriptEditor']['dispose'](),state['profileScriptEditor']=null),state['profileScriptEditor']=await createMonacoEditor('profile-script-editor',_0x156190,'shell',![]),state['profileScriptEditor']&&state['profileScriptEditor']['onDidChangeModelContent'](()=>{markProfileAsModified();});}function markProfileAsModified(){state['profileHasUnsavedChanges']=!![],markAsModified();}function renderProfileSecrets(){const _0x362447=document['getElementById']('profile-secrets-list'),_0x55664b=state['currentDeployProfileData']?.['secrets']||[];updateDeploySectionCount('deploy-secrets-count',_0x55664b['length']);if(_0x55664b['length']===0x0){_0x362447['innerHTML']='<div\x20class=\x22profile-list-empty\x22>No\x20secrets\x20configured</div>';return;}const _0x52879f=state['secrets']['map'](_0x19a765=>_0x19a765['name']);_0x362447['innerHTML']=_0x55664b['map']((_0x537703,_0x4ea444)=>{const _0x55f2df=_0x52879f['includes'](_0x537703['name']),_0x1bd5b2=_0x537703['expose_as']==='file'?'File':'Env\x20Var';return'\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22profile-secret-item\x20'+(!_0x55f2df?'warning':'')+'\x22\x20data-index=\x22'+_0x4ea444+'\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22profile-item-key\x22>'+Utils['escapeHtml'](_0x537703['name'])+'</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22secret-expose-type\x20'+_0x537703['expose_as']+'\x22>'+_0x1bd5b2+'</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22profile-item-value\x22\x20title=\x22'+Utils['escapeHtml'](_0x537703['target'])+'\x22>'+Utils['escapeHtml'](_0x537703['target'])+'</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20'+(!_0x55f2df?'<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('+_0x4ea444+')\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 _0x1bd6ec=document['getElementById']('profile-parameters-list'),_0x5cdbac=state['currentDeployProfileData']?.['parameters']||{},_0x1c861e=Object['entries'](_0x5cdbac);updateDeploySectionCount('deploy-parameters-count',_0x1c861e['length']);if(_0x1c861e['length']===0x0){_0x1bd6ec['innerHTML']='<div\x20class=\x22profile-list-empty\x22>No\x20parameters\x20defined</div>';return;}_0x1bd6ec['innerHTML']=_0x1c861e['map'](([_0x1448b6,_0x5eaf62])=>{const _0x25dd02=getParameterTypeLabel(_0x5eaf62),_0x1121eb=_0x5eaf62['label']||'';return'\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22profile-param-item\x22\x20data-name=\x22'+Utils['escapeHtml'](_0x1448b6)+'\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22profile-item-key\x22>'+Utils['escapeHtml'](_0x1448b6)+'</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22param-type-badge\x22>'+_0x25dd02+'</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22profile-item-value\x22>'+(_0x1121eb?Utils['escapeHtml'](_0x1121eb):'')+'</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20'+(_0x5eaf62['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'](_0x1448b6)+'\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'](_0x1448b6)+'\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 _0x1ddb2c=document['getElementById']('run-deployment-modal'),_0x1e9975=document['getElementById']('run-deployment-error'),_0x43df5f=state['currentDeployProfile'];document['getElementById']('run-deployment-profile-name')['textContent']=_0x43df5f,document['getElementById']('run-deployment-dry-run')['checked']=![],document['getElementById']('run-deployment-start-btn')['disabled']=![],_0x1e9975['hidden']=!![],_0x1e9975['textContent']='',renderDeploymentParameterInputs(state['currentDeployProfileData']['parameters']||{}),_0x1ddb2c['hidden']=![];}function closeRunDeploymentModal(){document['getElementById']('run-deployment-modal')['hidden']=!![];}function renderDeploymentParameterInputs(_0x50f846){const _0xa2bb63=document['getElementById']('run-deployment-parameters');_0xa2bb63['innerHTML']='';const _0x587225=Object['entries'](_0x50f846);if(_0x587225['length']===0x0){_0xa2bb63['innerHTML']='<p\x20class=\x22text-muted\x20small\x22>No\x20parameters\x20required\x20for\x20this\x20deployment.</p>';return;}for(const [_0x7499f7,_0x1209e2]of _0x587225){const _0x143108=document['createElement']('div');_0x143108['className']='deployment-param-row',_0x143108['dataset']['param']=_0x7499f7,_0x143108['dataset']['type']=_0x1209e2['type']||'text';const _0x1f68b1=document['createElement']('label');_0x1f68b1['className']='deployment-param-label',_0x1f68b1['setAttribute']('for','deployment-param-'+_0x7499f7),_0x1f68b1['textContent']=_0x1209e2['label']||_0x7499f7;if(_0x1209e2['required']){const _0x5653d9=document['createElement']('span');_0x5653d9['className']='param-required',_0x5653d9['textContent']='Required',_0x1f68b1['appendChild'](_0x5653d9);}_0x143108['appendChild'](_0x1f68b1);let _0x58b47e;if(_0x1209e2['type']==='select')_0x58b47e=document['createElement']('select'),_0x58b47e['className']='form-input',_0x58b47e['innerHTML']=(_0x1209e2['options']||[])['map'](_0x258547=>{const _0x3ddfd7=Utils['escapeHtml'](_0x258547);return'<option\x20value=\x22'+_0x3ddfd7+'\x22>'+_0x3ddfd7+'</option>';})['join'](''),_0x1209e2['default']&&(_0x58b47e['value']=_0x1209e2['default']);else{if(_0x1209e2['type']==='boolean')_0x58b47e=document['createElement']('input'),_0x58b47e['type']='checkbox',_0x58b47e['checked']=_0x1209e2['default']===!![]||_0x1209e2['default']==='true';else _0x1209e2['type']==='command'?(_0x58b47e=document['createElement']('select'),_0x58b47e['className']='form-input',_0x58b47e['disabled']=!![],_0x58b47e['innerHTML']='<option\x20value=\x22\x22>Loading\x20options...</option>'):(_0x58b47e=document['createElement']('input'),_0x58b47e['type']='text',_0x58b47e['className']='form-input',_0x58b47e['placeholder']=_0x1209e2['default']||'',_0x1209e2['default']&&(_0x58b47e['value']=_0x1209e2['default']));}_0x58b47e['id']='deployment-param-'+_0x7499f7,_0x143108['appendChild'](_0x58b47e);if(_0x1209e2['description']){const _0x883afc=document['createElement']('div');_0x883afc['className']='deployment-param-description',_0x883afc['textContent']=_0x1209e2['description'],_0x143108['appendChild'](_0x883afc);}_0xa2bb63['appendChild'](_0x143108),_0x1209e2['type']==='command'&&loadDeploymentCommandOptions(_0x7499f7,_0x1209e2,_0x58b47e);}}async function loadDeploymentCommandOptions(_0x4db437,_0x4446a7,_0x251ea6){const _0x3e0655=state['selectedEnv']+':'+state['currentDeployProfile']+':'+_0x4db437;if(state['deploymentParamCache'][_0x3e0655]){populateDeploymentCommandOptions(_0x251ea6,state['deploymentParamCache'][_0x3e0655],_0x4446a7['default']);return;}try{const _0xb70725=await API['promptParameter']({'environment':state['selectedEnv'],'command':_0x4446a7['command'],'parser':'lines'}),_0x9dc274=_0xb70725['choices']||[];state['deploymentParamCache'][_0x3e0655]=_0x9dc274,populateDeploymentCommandOptions(_0x251ea6,_0x9dc274,_0x4446a7['default']);}catch(_0x58e252){_0x251ea6['disabled']=!![],_0x251ea6['innerHTML']='<option\x20value=\x22\x22>Failed\x20to\x20load\x20options</option>',console['error']('Failed\x20to\x20load\x20deployment\x20parameter\x20options:',_0x58e252);}}function populateDeploymentCommandOptions(_0x1d1151,_0x32baba,_0x7a6e6){_0x1d1151['disabled']=![];if(_0x32baba['length']===0x0){_0x1d1151['innerHTML']='<option\x20value=\x22\x22>No\x20options\x20available</option>';return;}_0x1d1151['innerHTML']=_0x32baba['map'](_0x5d9745=>{const _0xfd2e4b=Utils['escapeHtml'](_0x5d9745['value']),_0x16f1be=Utils['escapeHtml'](_0x5d9745['label']||_0x5d9745['value']);return'<option\x20value=\x22'+_0xfd2e4b+'\x22>'+_0x16f1be+'</option>';})['join'](''),_0x7a6e6&&_0x32baba['some'](_0x507aeb=>_0x507aeb['value']===_0x7a6e6)&&(_0x1d1151['value']=_0x7a6e6);}function collectDeploymentParameters(){const _0x16e6fe={};return document['querySelectorAll']('#run-deployment-parameters\x20[data-param]')['forEach'](_0x417f97=>{const _0x33b487=_0x417f97['dataset']['param'],_0x4509e5=_0x417f97['dataset']['type'],_0x3c6ebb=_0x417f97['querySelector']('input,\x20select');if(!_0x3c6ebb)return;if(_0x4509e5==='boolean')_0x16e6fe[_0x33b487]=_0x3c6ebb['checked'];else{const _0x173c95=_0x3c6ebb['value']['trim']();_0x173c95!==''&&(_0x16e6fe[_0x33b487]=_0x173c95);}}),_0x16e6fe;}function validateDeploymentInputs(_0x393ded,_0x46096f){const _0x3add85=[];return Object['entries'](_0x46096f||{})['forEach'](([_0x563858,_0x3fdbe2])=>{if(!_0x3fdbe2['required'])return;if(_0x3fdbe2['type']==='boolean')return;!_0x393ded[_0x563858]&&_0x3add85['push'](_0x563858);}),_0x3add85;}async function startDeployment(){if(!state['currentDeployProfile'])return;const _0x2ec13e=document['getElementById']('run-deployment-error');_0x2ec13e['hidden']=!![],_0x2ec13e['textContent']='';const _0xbbe3c1=collectDeploymentParameters(),_0x10b135=validateDeploymentInputs(_0xbbe3c1,state['currentDeployProfileData']?.['parameters']||{});if(_0x10b135['length']>0x0){_0x2ec13e['textContent']='Missing\x20required\x20parameters:\x20'+_0x10b135['join'](',\x20'),_0x2ec13e['hidden']=![];return;}const _0x2006d7=document['getElementById']('run-deployment-dry-run')['checked'],_0x31098a=document['getElementById']('run-deployment-start-btn');_0x31098a['disabled']=!![];try{const _0x1d24bd=await API['post']('/environments/'+state['selectedEnv']+'/deployment-profiles/'+state['currentDeployProfile']+'/execute',{'parameters':_0xbbe3c1,'dryRun':_0x2006d7});closeRunDeploymentModal(),_0x1d24bd['status']==='running'?(startDeploymentPolling(_0x1d24bd['deploymentId']),Utils['showSuccess']('Deployment\x20started')):(Utils['showSuccess']('Deployment\x20dry\x20run\x20completed'),await loadDeploymentHistory());}catch(_0xafcaba){_0x2ec13e['textContent']=_0xafcaba['message']||'Failed\x20to\x20start\x20deployment',_0x2ec13e['hidden']=![];}finally{_0x31098a['disabled']=![];}}function startDeploymentPolling(_0xc4b4a9){state['currentDeploymentId']=_0xc4b4a9,state['deploymentStartTime']=Date['now'](),state['deploymentOutput']='';const _0x231872=document['getElementById']('deployment-progress-panel');_0x231872['hidden']=![];const _0x2e8f2c=document['getElementById']('deployment-progress-profile');_0x2e8f2c&&(_0x2e8f2c['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 _0x2b2323=await API['get']('/environments/'+state['selectedEnv']+'/deployments/'+state['currentDeploymentId']);updateDeploymentProgress(_0x2b2323),_0x2b2323['status']&&_0x2b2323['status']!=='running'&&(stopDeploymentPolling(),state['currentDeploymentId']=null,await loadDeploymentHistory());}catch(_0x4c7578){console['error']('Failed\x20to\x20poll\x20deployment\x20status:',_0x4c7578);}}function updateDeploymentProgress(_0x261d02){const _0x1111e6=document['getElementById']('deployment-progress-profile'),_0x509353=document['getElementById']('deployment-progress-badge'),_0x1951d2=document['getElementById']('deployment-progress-duration'),_0x587e84=document['getElementById']('deployment-output');_0x1111e6&&_0x261d02['profile']&&(_0x1111e6['textContent']=_0x261d02['profile']);_0x509353&&(_0x509353['textContent']=_0x261d02['status']||'running',_0x509353['className']='deployment-status-badge\x20'+(_0x261d02['status']||'running'));if(_0x1951d2){const _0x30279f=_0x261d02['startedAt']?Date['parse'](_0x261d02['startedAt']):state['deploymentStartTime'],_0x1e8409=_0x261d02['completedAt']?Date['parse'](_0x261d02['completedAt']):Date['now']();_0x1951d2['textContent']=formatDuration(_0x1e8409-_0x30279f);}_0x587e84&&(_0x587e84['textContent']=_0x261d02['output']||'',_0x587e84['scrollTop']=_0x587e84['scrollHeight']);}async function cancelDeploymentExecution(){if(!state['currentDeploymentId'])return;try{await API['post']('/environments/'+state['selectedEnv']+'/deployments/'+state['currentDeploymentId']+'/cancel',{}),Utils['showSuccess']('Deployment\x20cancelled');}catch(_0x11bb19){Utils['showError'](_0x11bb19['message']||'Failed\x20to\x20cancel\x20deployment');}}async function loadDeploymentHistory(){if(!state['selectedEnv'])return;try{const _0x482782=await API['get']('/environments/'+state['selectedEnv']+'/deployment-history?limit=20');state['deploymentHistory']=_0x482782['deployments']||[],renderDeploymentHistory();}catch(_0x333f76){console['error']('Failed\x20to\x20load\x20deployment\x20history:',_0x333f76),state['deploymentHistory']=[],renderDeploymentHistory();}}function renderDeploymentHistory(){const _0x5dcf3c=document['getElementById']('deployment-history-list');if(!_0x5dcf3c)return;updateDeploySectionCount('deploy-history-count',state['deploymentHistory']['length']);if(state['deploymentHistory']['length']===0x0){_0x5dcf3c['innerHTML']='<div\x20class=\x22profile-list-empty\x22>No\x20deployments\x20yet</div>';return;}_0x5dcf3c['innerHTML']='',state['deploymentHistory']['forEach'](_0x4a7f48=>{const _0x277703=document['createElement']('div');_0x277703['className']='deployment-history-item';const _0x5c5093=document['createElement']('div');_0x5c5093['className']='deployment-history-header';const _0x5e39ca=document['createElement']('div');_0x5e39ca['className']='deployment-history-title',_0x5e39ca['textContent']=_0x4a7f48['profile']+'\x20('+_0x4a7f48['status']+')';const _0x508d86=document['createElement']('span');_0x508d86['className']='deployment-status-badge\x20'+_0x4a7f48['status'],_0x508d86['textContent']=_0x4a7f48['status'],_0x5c5093['appendChild'](_0x5e39ca),_0x5c5093['appendChild'](_0x508d86);const _0x3f12f7=document['createElement']('div');_0x3f12f7['className']='deployment-history-meta';const _0x2cb128=_0x4a7f48['startedAt']?formatTimestamp(_0x4a7f48['startedAt']):'Unknown\x20time',_0x1bd1fe=_0x4a7f48['completedAt']?formatDuration(Date['parse'](_0x4a7f48['completedAt'])-Date['parse'](_0x4a7f48['startedAt'])):'Running';_0x3f12f7['innerHTML']='\x0a\x20\x20\x20\x20\x20\x20<span>'+_0x2cb128+'</span>\x0a\x20\x20\x20\x20\x20\x20<span>Duration:\x20'+_0x1bd1fe+'</span>\x0a\x20\x20\x20\x20\x20\x20<span>Triggered\x20by:\x20'+Utils['escapeHtml'](_0x4a7f48['triggeredBy']||'unknown')+'</span>\x0a\x20\x20\x20\x20';const _0x30c04d=document['createElement']('button');_0x30c04d['className']='btn-ghost\x20btn-small',_0x30c04d['textContent']='View\x20Output',_0x5c5093['appendChild'](_0x30c04d);const _0x303a0b=document['createElement']('div');_0x303a0b['className']='deployment-history-output',_0x303a0b['hidden']=!![],_0x303a0b['textContent']=_0x4a7f48['output']||'No\x20output\x20captured.',_0x30c04d['addEventListener']('click',()=>{_0x303a0b['hidden']=!_0x303a0b['hidden'],_0x30c04d['textContent']=_0x303a0b['hidden']?'View\x20Output':'Hide\x20Output';}),_0x277703['appendChild'](_0x5c5093),_0x277703['appendChild'](_0x3f12f7),_0x277703['appendChild'](_0x303a0b),_0x5dcf3c['appendChild'](_0x277703);});}function formatTimestamp(_0x526cdf){try{const _0x15dcd4=new Date(_0x526cdf);return _0x15dcd4['toLocaleString']();}catch{return _0x526cdf;}}function initDeploySectionToggles(){document['querySelectorAll']('.deploy-section-toggle')['forEach'](_0x53f26f=>{_0x53f26f['addEventListener']('click',()=>{const _0x4ed76c=_0x53f26f['getAttribute']('aria-controls');if(!_0x4ed76c)return;const _0x28e943=document['getElementById'](_0x4ed76c);if(!_0x28e943)return;const _0x2d59f0=_0x53f26f['getAttribute']('aria-expanded')==='true';_0x53f26f['setAttribute']('aria-expanded',String(!_0x2d59f0)),_0x28e943['hidden']=_0x2d59f0;});});}function updateDeploySectionCount(_0x58db9d,_0x453dad){const _0x586fdb=document['getElementById'](_0x58db9d);if(!_0x586fdb)return;_0x586fdb['textContent']=String(_0x453dad),_0x586fdb['title']=_0x453dad+'\x20item'+(_0x453dad===0x1?'':'s');}function openAddProfileSecretModal(){const _0x5f5b6e=document['getElementById']('profile-secret-modal'),_0x585730=document['getElementById']('profile-secret-name'),_0x5bcb0c=document['getElementById']('profile-secret-error');_0x5bcb0c['hidden']=!![],populateProfileSecretSelect(),updateProfileSecretInfo(),_0x5f5b6e['hidden']=![],_0x585730['focus']();}function populateProfileSecretSelect(){const _0x14495a=document['getElementById']('profile-secret-name'),_0x1a25a3=state['secrets']||[],_0xd47834=_0x1a25a3['filter'](_0x1a2d4c=>{const _0x20f3da=_0x1a2d4c['available_for']||[];return _0x20f3da['includes']('deploy');});if(_0xd47834['length']===0x0){_0x14495a['innerHTML']='<option\x20value=\x22\x22>No\x20secrets\x20available\x20for\x20deploy</option>';return;}const _0x591551=(state['currentDeployProfileData']?.['secrets']||[])['map'](_0xf67fd=>typeof _0xf67fd==='string'?_0xf67fd:_0xf67fd['name']),_0x592af8=_0xd47834['filter'](_0x15e2e4=>!_0x591551['includes'](_0x15e2e4['name']));if(_0x592af8['length']===0x0){_0x14495a['innerHTML']='<option\x20value=\x22\x22>All\x20deploy\x20secrets\x20already\x20added</option>';return;}_0x14495a['innerHTML']=_0x592af8['map'](_0x3d477e=>'<option\x20value=\x22'+Utils['escapeHtml'](_0x3d477e['name'])+'\x22>'+Utils['escapeHtml'](_0x3d477e['name'])+(_0x3d477e['description']?'\x20-\x20'+Utils['escapeHtml'](_0x3d477e['description']):'')+'</option>')['join']('');}function updateProfileSecretInfo(){const _0x4446af=document['getElementById']('profile-secret-name'),_0x639c7d=document['getElementById']('profile-secret-info'),_0x37f801=_0x4446af['value'];if(!_0x37f801){_0x639c7d['hidden']=!![];return;}const _0x24b933=state['secrets']['find'](_0x272d20=>_0x272d20['name']===_0x37f801);if(!_0x24b933){_0x639c7d['hidden']=!![];return;}const _0x916869=_0x24b933['expose_as']==='file'?'File\x20(bind\x20mount)':'Environment\x20Variable',_0x5b17dd=_0x24b933['expose_as']==='file'?'Container\x20Path':'Variable\x20Name';_0x639c7d['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'](_0x916869)+'</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'](_0x5b17dd)+':</span>\x0a\x20\x20\x20\x20\x20\x20<span\x20class=\x22secret-info-value\x20code-font\x22>'+Utils['escapeHtml'](_0x24b933['target']||'Not\x20set')+'</span>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20',_0x639c7d['hidden']=![];}function closeProfileSecretModal(){document['getElementById']('profile-secret-modal')['hidden']=!![];}function saveProfileSecret(){const _0x4b3875=document['getElementById']('profile-secret-name'),_0x337d11=document['getElementById']('profile-secret-error'),_0x4b5e3c=_0x4b3875['value'];if(!_0x4b5e3c){_0x337d11['textContent']='Please\x20select\x20a\x20secret',_0x337d11['hidden']=![];return;}!state['currentDeployProfileData']['secrets']&&(state['currentDeployProfileData']['secrets']=[]),state['currentDeployProfileData']['secrets']['push']({'name':_0x4b5e3c}),closeProfileSecretModal(),renderProfileSecrets(),markProfileAsModified();}window['deleteProfileSecret']=function(_0xe13750){if(!state['currentDeployProfileData']?.['secrets'])return;if(!confirm('Delete\x20this\x20secret\x20reference?'))return;state['currentDeployProfileData']['secrets']['splice'](_0xe13750,0x1),renderProfileSecrets(),markProfileAsModified();};function openAddParameterModal(_0x5a8478){state['parameterModalContext']=_0x5a8478,state['editingParamName']=null,state['parameterOptions']=[];const _0x595b9d=document['getElementById']('profile-parameter-modal'),_0x1fc45e=document['getElementById']('profile-parameter-modal-title'),_0x33cec6=document['getElementById']('profile-parameter-error');_0x1fc45e['textContent']='Add\x20Parameter',_0x33cec6['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(),_0x595b9d['hidden']=![],document['getElementById']('profile-param-name')['focus']();}function openAddProfileParameterModal(){openAddParameterModal('deploy');}function updateProfileParamTypeVisibility(){const _0xb03765=document['getElementById']('profile-param-type')['value'],_0x4f7c51=document['getElementById']('profile-param-options-row'),_0x5439fa=document['getElementById']('profile-param-command-row'),_0x3939df=document['getElementById']('profile-param-files-row'),_0x1957c2=document['getElementById']('profile-param-multiselect-row');_0x4f7c51['hidden']=!![],_0x5439fa['hidden']=!![],_0x3939df['hidden']=!![],_0x1957c2['hidden']=!![];if(_0xb03765==='list')_0x4f7c51['hidden']=![],_0x1957c2['hidden']=![];else{if(_0xb03765==='command')_0x5439fa['hidden']=![],_0x1957c2['hidden']=![];else _0xb03765==='files'&&(_0x3939df['hidden']=![],_0x1957c2['hidden']=![]);}}function addParameterOption(){state['parameterOptions']['push']({'value':'','label':'','description':''}),renderParameterOptionsList();const _0x516b7e=document['querySelectorAll']('#profile-param-options-list\x20.option-value-input');_0x516b7e['length']>0x0&&_0x516b7e[_0x516b7e['length']-0x1]['focus']();}window['removeParameterOption']=function(_0x32872c){state['parameterOptions']['splice'](_0x32872c,0x1),renderParameterOptionsList();},window['updateParameterOption']=function(_0xa7a7a7,_0x5a1d99,_0x4090a2){state['parameterOptions'][_0xa7a7a7]&&(state['parameterOptions'][_0xa7a7a7][_0x5a1d99]=_0x4090a2);};function renderParameterOptionsList(){const _0x4f4dce=document['getElementById']('profile-param-options-list');if(!_0x4f4dce)return;if(state['parameterOptions']['length']===0x0){_0x4f4dce['innerHTML']='<div\x20class=\x22options-empty\x20text-muted\x22>No\x20options\x20defined.\x20Click\x20\x22+\x20Add\x20Option\x22\x20to\x20add\x20one.</div>';return;}_0x4f4dce['innerHTML']=state['parameterOptions']['map']((_0x1b4125,_0x99f6e9)=>'\x0a\x20\x20\x20\x20<div\x20class=\x22option-item\x22\x20data-index=\x22'+_0x99f6e9+'\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'](_0x1b4125['value']||'')+'\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20onchange=\x22updateParameterOption('+_0x99f6e9+',\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'](_0x1b4125['label']||'')+'\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20onchange=\x22updateParameterOption('+_0x99f6e9+',\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('+_0x99f6e9+')\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'](_0x1b4125['description']||'')+'\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20onchange=\x22updateParameterOption('+_0x99f6e9+',\x20\x27description\x27,\x20this.value)\x22>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20')['join']('');}function openEditParameterModal(_0x32b8a3,_0x4d7cba){state['parameterModalContext']=_0x4d7cba,state['editingParamName']=_0x32b8a3;let _0x4d57e6;if(_0x4d7cba==='deploy')_0x4d57e6=state['currentDeployProfileData']?.['parameters']?.[_0x32b8a3];else{if(_0x4d7cba==='test'){const _0xa39aec=state['selectedEnvData']?.['tests']?.[state['currentTest']];_0x4d57e6=_0xa39aec?.['parameters']?.[_0x32b8a3];}else _0x4d7cba==='template'&&(_0x4d57e6=state['currentTemplateData']?.['parameters']?.[_0x32b8a3]);}if(!_0x4d57e6)return;const _0x514e35=document['getElementById']('profile-parameter-modal'),_0x1de7de=document['getElementById']('profile-parameter-modal-title'),_0x9d5496=document['getElementById']('profile-parameter-error');_0x1de7de['textContent']='Edit\x20Parameter',_0x9d5496['hidden']=!![],document['getElementById']('profile-param-name')['value']=_0x32b8a3,document['getElementById']('profile-param-name')['disabled']=!![],document['getElementById']('profile-param-description')['value']=_0x4d57e6['description']||'',document['getElementById']('profile-param-default')['value']=_0x4d57e6['default']||'',document['getElementById']('profile-param-required')['checked']=_0x4d57e6['required']||![];const _0x137a99=_0x4d57e6['prompt'];if(_0x137a99){document['getElementById']('profile-param-label')['value']=_0x137a99['label']||'',document['getElementById']('profile-param-multiselect')['checked']=_0x137a99['multiSelect']||![];if(_0x137a99['type']==='list')document['getElementById']('profile-param-type')['value']='list',state['parameterOptions']=(_0x137a99['options']||[])['map'](_0x1910c1=>{if(typeof _0x1910c1==='string')return{'value':_0x1910c1,'label':'','description':''};return{'value':_0x1910c1['value']||'','label':_0x1910c1['label']||'','description':_0x1910c1['description']||''};});else{if(_0x137a99['type']==='command')document['getElementById']('profile-param-type')['value']='command',document['getElementById']('profile-param-command')['value']=_0x137a99['command']||'',document['getElementById']('profile-param-parser')['value']=_0x137a99['parser']||'lines',document['getElementById']('profile-param-repos')['value']=(_0x137a99['repos']||[])['join'](',\x20'),state['parameterOptions']=[];else _0x137a99['type']==='files'?(document['getElementById']('profile-param-type')['value']='files',document['getElementById']('profile-param-path')['value']=_0x137a99['path']||'',document['getElementById']('profile-param-include')['value']=_0x137a99['include']||'files',document['getElementById']('profile-param-pattern')['value']=_0x137a99['pattern']||'',document['getElementById']('profile-param-files-repos')['value']=(_0x137a99['repos']||[])['join'](',\x20'),state['parameterOptions']=[]):(document['getElementById']('profile-param-type')['value']='text',state['parameterOptions']=[]);}}else{document['getElementById']('profile-param-label')['value']=_0x4d57e6['label']||'',document['getElementById']('profile-param-multiselect')['checked']=![];const _0x41392a=_0x4d57e6['type']||'text';if(_0x41392a==='select')document['getElementById']('profile-param-type')['value']='list',state['parameterOptions']=(_0x4d57e6['options']||[])['map'](_0x5942e0=>{if(typeof _0x5942e0==='string')return{'value':_0x5942e0,'label':'','description':''};return{'value':_0x5942e0['value']||_0x5942e0,'label':_0x5942e0['label']||'','description':_0x5942e0['description']||''};});else{if(_0x41392a==='command')document['getElementById']('profile-param-type')['value']='command',document['getElementById']('profile-param-command')['value']=_0x4d57e6['command']||'',document['getElementById']('profile-param-parser')['value']=_0x4d57e6['parser']||'lines',document['getElementById']('profile-param-repos')['value']=(_0x4d57e6['repos']||[])['join'](',\x20'),state['parameterOptions']=[];else _0x41392a==='boolean'?(document['getElementById']('profile-param-type')['value']='boolean',state['parameterOptions']=[]):(document['getElementById']('profile-param-type')['value']='text',state['parameterOptions']=[]);}}renderParameterOptionsList(),updateProfileParamTypeVisibility(),_0x514e35['hidden']=![],document['getElementById']('profile-param-label')['focus']();}window['editProfileParameter']=function(_0x1a475f){openEditParameterModal(_0x1a475f,'deploy');},window['editTestParameter']=function(_0x818613){openEditParameterModal(_0x818613,'test');},window['editTemplateParameter']=function(_0x1d5b7d){openEditParameterModal(_0x1d5b7d,'template');};function closeProfileParameterModal(){document['getElementById']('profile-parameter-modal')['hidden']=!![],state['editingParamName']=null,state['parameterModalContext']=null,state['parameterOptions']=[];}function saveProfileParameter(){const _0x125e0f=document['getElementById']('profile-param-name'),_0x1903f4=document['getElementById']('profile-param-label'),_0x2cc2da=document['getElementById']('profile-param-description'),_0x453305=document['getElementById']('profile-param-type'),_0x4cdbcd=document['getElementById']('profile-param-command'),_0x39a4d8=document['getElementById']('profile-param-parser'),_0x850542=document['getElementById']('profile-param-repos'),_0x40864d=document['getElementById']('profile-param-path'),_0x49f14a=document['getElementById']('profile-param-include'),_0x376a9a=document['getElementById']('profile-param-pattern'),_0xdc087=document['getElementById']('profile-param-files-repos'),_0x6ca587=document['getElementById']('profile-param-multiselect'),_0x4ced58=document['getElementById']('profile-param-default'),_0x48dd8f=document['getElementById']('profile-param-required'),_0x5876c1=document['getElementById']('profile-parameter-error'),_0x2d6380=_0x125e0f['value']['trim'](),_0x393f65=_0x1903f4['value']['trim'](),_0x470df1=_0x2cc2da['value']['trim'](),_0x58119c=_0x453305['value'],_0x49e35e=_0x48dd8f['checked'],_0x5e9864=_0x4ced58['value']['trim'](),_0x23b261=_0x6ca587['checked'],_0x2dfc9f=state['parameterModalContext'];if(!_0x2d6380){_0x5876c1['textContent']='Parameter\x20name\x20is\x20required',_0x5876c1['hidden']=![],_0x125e0f['focus']();return;}if(!/^[A-Za-z_][A-Za-z0-9_]*$/['test'](_0x2d6380)){_0x5876c1['textContent']='Invalid\x20parameter\x20name.\x20Use\x20letters,\x20numbers,\x20and\x20underscores.',_0x5876c1['hidden']=![],_0x125e0f['focus']();return;}let _0x5bae44;if(_0x2dfc9f==='deploy')!state['currentDeployProfileData']['parameters']&&(state['currentDeployProfileData']['parameters']={}),_0x5bae44=state['currentDeployProfileData']['parameters'];else{if(_0x2dfc9f==='test'){const _0x28453d=state['selectedEnvData']['tests'][state['currentTest']];!_0x28453d['parameters']&&(_0x28453d['parameters']={}),_0x5bae44=_0x28453d['parameters'];}else _0x2dfc9f==='template'&&(!state['currentTemplateData']['parameters']&&(state['currentTemplateData']['parameters']={}),_0x5bae44=state['currentTemplateData']['parameters']);}if(state['editingParamName']===null&&_0x5bae44[_0x2d6380]){_0x5876c1['textContent']='Parameter\x20\x22'+_0x2d6380+'\x22\x20already\x20exists',_0x5876c1['hidden']=![];return;}let _0x55cfa1;if(_0x2dfc9f==='deploy'){_0x55cfa1={'required':_0x49e35e};if(_0x393f65)_0x55cfa1['label']=_0x393f65;if(_0x470df1)_0x55cfa1['description']=_0x470df1;if(_0x5e9864)_0x55cfa1['default']=_0x5e9864;if(_0x58119c==='list'){_0x55cfa1['type']='select';const _0x411625=state['parameterOptions']['filter'](_0x23abbb=>_0x23abbb['value']['trim']());if(_0x411625['length']<0x1){_0x5876c1['textContent']='At\x20least\x20one\x20option\x20with\x20a\x20value\x20is\x20required',_0x5876c1['hidden']=![];return;}_0x55cfa1['options']=_0x411625['map'](_0x1c8254=>{if(_0x1c8254['label']||_0x1c8254['description'])return{'value':_0x1c8254['value'],'label':_0x1c8254['label']||undefined,'description':_0x1c8254['description']||undefined};return _0x1c8254['value'];});}else{if(_0x58119c==='command'){_0x55cfa1['type']='command';const _0x17e6be=_0x4cdbcd['value']['trim']();if(!_0x17e6be){_0x5876c1['textContent']='Command\x20is\x20required\x20for\x20dynamic\x20type',_0x5876c1['hidden']=![],_0x4cdbcd['focus']();return;}_0x55cfa1['command']=_0x17e6be;const _0x237df9=_0x39a4d8['value'];if(_0x237df9&&_0x237df9!=='lines')_0x55cfa1['parser']=_0x237df9;const _0x195c6b=_0x850542['value']['split'](',')['map'](_0xe76a4e=>_0xe76a4e['trim']())['filter'](_0x2b262c=>_0x2b262c);if(_0x195c6b['length']>0x0)_0x55cfa1['repos']=_0x195c6b;}else{if(_0x58119c==='files'){_0x55cfa1['type']='files';const _0x414e4e=_0x40864d['value']['trim']();if(!_0x414e4e){_0x5876c1['textContent']='Directory\x20path\x20is\x20required\x20for\x20file\x20browser\x20type',_0x5876c1['hidden']=![],_0x40864d['focus']();return;}_0x55cfa1['path']=_0x414e4e,_0x55cfa1['include']=_0x49f14a['value'];const _0x4ddec6=_0x376a9a['value']['trim']();if(_0x4ddec6)_0x55cfa1['pattern']=_0x4ddec6;const _0x4c5596=_0xdc087['value']['split'](',')['map'](_0x5ec500=>_0x5ec500['trim']())['filter'](_0x97b317=>_0x97b317);if(_0x4c5596['length']>0x0)_0x55cfa1['repos']=_0x4c5596;if(_0x23b261)_0x55cfa1['multiSelect']=!![];}else _0x58119c==='boolean'?_0x55cfa1['type']='boolean':_0x55cfa1['type']='text';}}}else{_0x55cfa1={'required':_0x49e35e};if(_0x470df1)_0x55cfa1['description']=_0x470df1;if(_0x5e9864)_0x55cfa1['default']=_0x5e9864;if(_0x58119c!=='text'&&_0x58119c!=='boolean'){_0x55cfa1['prompt']={'type':_0x58119c};if(_0x393f65)_0x55cfa1['prompt']['label']=_0x393f65;if(_0x23b261)_0x55cfa1['prompt']['multiSelect']=!![];if(_0x58119c==='list'){const _0x2152a5=state['parameterOptions']['filter'](_0x46154b=>_0x46154b['value']['trim']());if(_0x2152a5['length']<0x1){_0x5876c1['textContent']='At\x20least\x20one\x20option\x20with\x20a\x20value\x20is\x20required',_0x5876c1['hidden']=![];return;}_0x55cfa1['prompt']['options']=_0x2152a5['map'](_0x4cf56c=>{const _0xa913e9={'value':_0x4cf56c['value']};if(_0x4cf56c['label'])_0xa913e9['label']=_0x4cf56c['label'];if(_0x4cf56c['description'])_0xa913e9['description']=_0x4cf56c['description'];return _0xa913e9;});}else{if(_0x58119c==='command'){const _0x3e2737=_0x4cdbcd['value']['trim']();if(!_0x3e2737){_0x5876c1['textContent']='Command\x20is\x20required\x20for\x20dynamic\x20type',_0x5876c1['hidden']=![],_0x4cdbcd['focus']();return;}_0x55cfa1['prompt']['command']=_0x3e2737;const _0x1971ac=_0x39a4d8['value'];if(_0x1971ac&&_0x1971ac!=='json')_0x55cfa1['prompt']['parser']=_0x1971ac;const _0x44b84c=_0x850542['value']['split'](',')['map'](_0x28b595=>_0x28b595['trim']())['filter'](_0x3a409f=>_0x3a409f);if(_0x44b84c['length']>0x0)_0x55cfa1['prompt']['repos']=_0x44b84c;}else{if(_0x58119c==='files'){const _0x577d04=_0x40864d['value']['trim']();if(!_0x577d04){_0x5876c1['textContent']='Directory\x20path\x20is\x20required\x20for\x20file\x20browser\x20type',_0x5876c1['hidden']=![],_0x40864d['focus']();return;}_0x55cfa1['prompt']['path']=_0x577d04;const _0x456f94=_0x49f14a['value'];if(_0x456f94!=='files')_0x55cfa1['prompt']['include']=_0x456f94;const _0xbda9d0=_0x376a9a['value']['trim']();if(_0xbda9d0)_0x55cfa1['prompt']['pattern']=_0xbda9d0;const _0x4281df=_0xdc087['value']['split'](',')['map'](_0x21983a=>_0x21983a['trim']())['filter'](_0x5f25cb=>_0x5f25cb);if(_0x4281df['length']>0x0)_0x55cfa1['prompt']['repos']=_0x4281df;}}}}}_0x5bae44[_0x2d6380]=_0x55cfa1,closeProfileParameterModal();if(_0x2dfc9f==='deploy')renderProfileParameters(),markProfileAsModified();else{if(_0x2dfc9f==='test')renderTestParameters(),markAsModified();else _0x2dfc9f==='template'&&(renderTemplateParameters(),markAsModified());}}function deleteParameter(_0x7fab47,_0x2d6661){if(!confirm('Delete\x20this\x20parameter?'))return;if(_0x2d6661==='deploy'){if(!state['currentDeployProfileData']?.['parameters'])return;delete state['currentDeployProfileData']['parameters'][_0x7fab47],renderProfileParameters(),markProfileAsModified();}else{if(_0x2d6661==='test'){const _0x47d097=state['selectedEnvData']?.['tests']?.[state['currentTest']];if(!_0x47d097?.['parameters'])return;delete _0x47d097['parameters'][_0x7fab47],renderTestParameters(),markAsModified();}else{if(_0x2d6661==='template'){if(!state['currentTemplateData']?.['parameters'])return;delete state['currentTemplateData']['parameters'][_0x7fab47],renderTemplateParameters(),markAsModified();}}}}window['deleteProfileParameter']=function(_0x2b9444){deleteParameter(_0x2b9444,'deploy');},window['deleteTestParameter']=function(_0x4f796d){deleteParameter(_0x4f796d,'test');},window['deleteTemplateParameter']=function(_0x2cb7fb){deleteParameter(_0x2cb7fb,'template');};function renderTestParameters(){const _0x2fbfd1=document['getElementById']('test-parameters-list');if(!_0x2fbfd1)return;const _0x3efff0=state['selectedEnvData']?.['tests']?.[state['currentTest']],_0x40b7f9=_0x3efff0?.['parameters']||{},_0x87f413=Object['entries'](_0x40b7f9),_0x2bd79d=document['getElementById']('test-parameters-count');if(_0x2bd79d)_0x2bd79d['textContent']=_0x87f413['length'];if(_0x87f413['length']===0x0){_0x2fbfd1['innerHTML']='<div\x20class=\x22profile-list-empty\x22>No\x20parameters\x20defined</div>';return;}_0x2fbfd1['innerHTML']=_0x87f413['map'](([_0x4720d7,_0x2c4b35])=>{const _0x3b45af=getParameterTypeLabel(_0x2c4b35),_0x1617d3=_0x2c4b35['prompt']?.['label']||_0x2c4b35['label']||'';return'\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22profile-param-item\x22\x20data-name=\x22'+Utils['escapeHtml'](_0x4720d7)+'\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22profile-item-key\x22>'+Utils['escapeHtml'](_0x4720d7)+'</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22param-type-badge\x22>'+_0x3b45af+'</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22profile-item-value\x22>'+(_0x1617d3?Utils['escapeHtml'](_0x1617d3):'')+'</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20'+(_0x2c4b35['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'](_0x4720d7)+'\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'](_0x4720d7)+'\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 _0x4a1225=document['getElementById']('template-parameters-list');if(!_0x4a1225)return;const _0x184cb4=state['currentTemplateData']?.['parameters']||{},_0x22bdc8=Array['isArray'](_0x184cb4)?Object['fromEntries'](_0x184cb4['map'](_0x502348=>[_0x502348['name'],_0x502348])):_0x184cb4,_0x2aafaa=Object['entries'](_0x22bdc8),_0xbfa765=document['getElementById']('template-parameters-count');if(_0xbfa765)_0xbfa765['textContent']=_0x2aafaa['length'];if(_0x2aafaa['length']===0x0){_0x4a1225['innerHTML']='<div\x20class=\x22profile-list-empty\x22>No\x20parameters\x20defined</div>';return;}_0x4a1225['innerHTML']=_0x2aafaa['map'](([_0x561e00,_0x1b44cd])=>{const _0x1289bc=getParameterTypeLabel(_0x1b44cd),_0x3fa62e=_0x1b44cd['prompt']?.['label']||_0x1b44cd['label']||'';return'\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22profile-param-item\x22\x20data-name=\x22'+Utils['escapeHtml'](_0x561e00)+'\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22profile-item-key\x22>'+Utils['escapeHtml'](_0x561e00)+'</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22param-type-badge\x22>'+_0x1289bc+'</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22profile-item-value\x22>'+(_0x3fa62e?Utils['escapeHtml'](_0x3fa62e):'')+'</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20'+(_0x1b44cd['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'](_0x561e00)+'\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'](_0x561e00)+'\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(_0x5af6a2){if(_0x5af6a2['prompt'])return _0x5af6a2['prompt']['type']||'text';const _0x3551cd=_0x5af6a2['type']||'text';if(_0x3551cd==='select')return'list';return _0x3551cd;}window['openAddTestParameterModal']=function(){openAddParameterModal('test');},window['openAddTemplateParameterModal']=function(){openAddParameterModal('template');};function openAddDeployProfileModal(){const _0xb8a48a=document['getElementById']('add-deploy-profile-modal'),_0x15d47b=document['getElementById']('new-deploy-profile-name'),_0x2b954a=document['getElementById']('new-deploy-profile-description'),_0x24bd39=document['getElementById']('add-deploy-profile-error');_0x15d47b['value']='',_0x2b954a['value']='',_0x24bd39['hidden']=!![],_0x15d47b['classList']['remove']('input-error'),_0x2b954a['classList']['remove']('input-error'),_0xb8a48a['hidden']=![],_0x15d47b['focus']();}function closeAddDeployProfileModal(){document['getElementById']('add-deploy-profile-modal')['hidden']=!![];}async function confirmAddDeployProfile(){const _0x8c02=document['getElementById']('new-deploy-profile-name'),_0xf48dee=document['getElementById']('new-deploy-profile-description'),_0x2ce43f=document['getElementById']('add-deploy-profile-error'),_0x4a62ce=_0x8c02['value']['trim'](),_0x276b4c=_0xf48dee['value']['trim']();_0x8c02['classList']['remove']('input-error'),_0xf48dee['classList']['remove']('input-error'),_0x2ce43f['hidden']=!![];if(!_0x4a62ce){_0x8c02['classList']['add']('input-error'),_0x2ce43f['textContent']='Profile\x20name\x20is\x20required',_0x2ce43f['hidden']=![];return;}if(!/^[A-Za-z_][A-Za-z0-9_-]*$/['test'](_0x4a62ce)){_0x8c02['classList']['add']('input-error'),_0x2ce43f['textContent']='Profile\x20name\x20must\x20start\x20with\x20a\x20letter\x20or\x20underscore,\x20and\x20contain\x20only\x20letters,\x20numbers,\x20hyphens,\x20and\x20underscores',_0x2ce43f['hidden']=![];return;}if(!_0x276b4c){_0xf48dee['classList']['add']('input-error'),_0x2ce43f['textContent']='Description\x20is\x20required',_0x2ce43f['hidden']=![];return;}const _0x1ba726=state['selectedEnvData']['deployment_profiles']||[];if(_0x1ba726['find'](_0x599ec7=>_0x599ec7['name']['toLowerCase']()===_0x4a62ce['toLowerCase']())){_0x8c02['classList']['add']('input-error'),_0x2ce43f['textContent']='A\x20profile\x20with\x20this\x20name\x20already\x20exists',_0x2ce43f['hidden']=![];return;}try{const _0x210ad0=await fetch('/environments/'+state['selectedEnv']+'/deployment-profiles',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'profileName':_0x4a62ce,'description':_0x276b4c})}),_0x3d8a66=await _0x210ad0['json']();if(!_0x210ad0['ok']){_0x2ce43f['textContent']=_0x3d8a66['error']||'Failed\x20to\x20create\x20profile',_0x2ce43f['hidden']=![];return;}await loadEnvironmentDetails(state['selectedEnv']),state['currentDeployProfile']=_0x4a62ce,renderDeployProfiles(),closeAddDeployProfileModal(),Utils['showSuccess']('Deployment\x20profile\x20\x22'+_0x4a62ce+'\x22\x20created');}catch(_0x3bffb4){_0x2ce43f['textContent']=_0x3bffb4['message']||'Failed\x20to\x20create\x20profile',_0x2ce43f['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 _0x510bbe=state['currentDeployProfile'];try{const _0x39b2ae=await fetch('/environments/'+state['selectedEnv']+'/deployment-profiles/'+_0x510bbe,{'method':'DELETE'}),_0x6ae477=await _0x39b2ae['json']();if(!_0x39b2ae['ok']){Utils['showError'](_0x6ae477['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'+_0x510bbe+'\x22\x20deleted');}catch(_0x2b9904){Utils['showError'](_0x2b9904['message']||'Failed\x20to\x20delete\x20profile'),closeDeleteDeployProfileModal();}}async function loadSecrets(){if(!state['selectedEnv']){state['secrets']=[];return;}try{const _0x129f5c=await API['get']('/environments/'+state['selectedEnv']+'/secrets');state['secrets']=_0x129f5c['secrets']||[];}catch(_0x2f6b0b){console['error']('Failed\x20to\x20load\x20secrets:',_0x2f6b0b),state['secrets']=[];}}function renderSecrets(){const _0xd08c1=document['getElementById']('secrets-list'),_0x568d43=document['getElementById']('secrets-empty'),_0x441f35=document['getElementById']('secrets-filter');if(!_0xd08c1||!_0x568d43)return;updateTabBadge('badge-secrets',state['secrets']?.['length']||0x0);const _0x2f94d4=_0x441f35?.['value']||'all',_0x22e720=_0x2f94d4==='all'?state['secrets']:state['secrets']['filter'](_0x4b9a94=>{const _0x1e9710=_0x4b9a94['available_for']||[];return _0x1e9710['includes'](_0x2f94d4);});if(_0x22e720['length']===0x0){_0xd08c1['innerHTML']='',_0xd08c1['hidden']=!![];state['secrets']['length']>0x0&&_0x2f94d4!=='all'?_0x568d43['innerHTML']='\x0a\x20\x20\x20\x20\x20\x20\x20\x20<p>No\x20secrets\x20match\x20the\x20\x22'+_0x2f94d4+'\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':_0x568d43['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';_0x568d43['hidden']=![];return;}_0xd08c1['hidden']=![],_0x568d43['hidden']=!![],_0xd08c1['innerHTML']=_0x22e720['map'](_0x417fdd=>{const _0x4fc570=_0x417fdd['type']==='file'?'file':'value',_0x52a012=_0x417fdd['type']==='file'?'File':'Value',_0x3aa94d=_0x417fdd['type']==='file'?'<span\x20class=\x22secret-source\x22\x20title=\x22'+Utils['escapeHtml'](_0x417fdd['source'])+'\x22>'+Utils['escapeHtml'](_0x417fdd['source'])+'</span>':_0x417fdd['value']?'':'<span\x20class=\x22secret-meta-text\x20warning\x22>No\x20value</span>',_0x502156=_0x417fdd['available_for']||[],_0x19de3a='\x0a\x20\x20\x20\x20\x20\x20<span\x20class=\x22secret-availability-badges\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20'+(_0x502156['includes']('build')?'<span\x20class=\x22availability-badge\x20build\x22>Build</span>':'')+'\x0a\x20\x20\x20\x20\x20\x20\x20\x20'+(_0x502156['includes']('tasks')?'<span\x20class=\x22availability-badge\x20tasks\x22>Tasks</span>':'')+'\x0a\x20\x20\x20\x20\x20\x20\x20\x20'+(_0x502156['includes']('deploy')?'<span\x20class=\x22availability-badge\x20deploy\x22>Deploy</span>':'')+'\x0a\x20\x20\x20\x20\x20\x20</span>\x0a\x20\x20\x20\x20',_0x544d3a=_0x417fdd['git_remote']?'<span\x20class=\x22git-pat-badge\x22\x20title=\x22Git\x20PAT\x20for\x20'+Utils['escapeHtml'](_0x417fdd['git_remote'])+'\x22>PAT:\x20'+Utils['escapeHtml'](_0x417fdd['git_remote'])+'</span>':'';return'\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22secret-item\x22\x20data-secret=\x22'+Utils['escapeHtml'](_0x417fdd['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'](_0x417fdd['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'+_0x19de3a+'\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22secret-type-badge\x20'+_0x4fc570+'\x22>'+_0x52a012+'</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20'+_0x544d3a+'\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20'+(_0x417fdd['description']?'<span\x20class=\x22secret-description\x22\x20title=\x22'+Utils['escapeHtml'](_0x417fdd['description'])+'\x22>'+Utils['escapeHtml'](_0x417fdd['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>'+_0x3aa94d+'</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'](_0x417fdd['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'](_0x417fdd['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 _0x102b30=document['getElementById']('secret-modal'),_0x180b7c=document['getElementById']('secret-modal-title'),_0x5327fb=document['getElementById']('secret-name'),_0x3cb882=document['getElementById']('secret-description'),_0x18794e=document['getElementById']('secret-type-file'),_0x20b124=document['getElementById']('secret-type-value'),_0x64e7f6=document['getElementById']('secret-source'),_0x3ee029=document['getElementById']('secret-value'),_0x250e52=document['getElementById']('secret-modal-error'),_0x4e23fa=document['getElementById']('secret-source-validation'),_0x326870=document['getElementById']('secret-available-build'),_0x20a6e0=document['getElementById']('secret-available-tasks'),_0x14e351=document['getElementById']('secret-available-deploy'),_0x4da1ce=document['getElementById']('secret-expose-env'),_0xecf76e=document['getElementById']('secret-expose-file'),_0x20dc7b=document['getElementById']('secret-target');_0x180b7c['textContent']='Add\x20Secret',_0x5327fb['value']='',_0x5327fb['disabled']=![],_0x3cb882['value']='',_0x20b124['checked']=!![],_0x18794e['checked']=![],_0x64e7f6['value']='',resetSecretValueVisibility(''),_0x250e52['hidden']=!![],_0x4e23fa['hidden']=!![];const _0x29d051=document['getElementById']('secrets-filter'),_0x3928b9=_0x29d051?.['value']||'all';_0x3928b9==='all'?(_0x326870['checked']=![],_0x20a6e0['checked']=!![],_0x14e351['checked']=![]):(_0x326870['checked']=_0x3928b9==='build',_0x20a6e0['checked']=_0x3928b9==='tasks',_0x14e351['checked']=_0x3928b9==='deploy');_0x4da1ce['checked']=!![],_0xecf76e['checked']=![],_0x20dc7b['value']='',handleSecretTypeChange(),resetGitPatFields(),updateGitPatVisibility(),updateExposeAsVisibility(),updateSecretTargetLabel();const _0x31cdb3=document['getElementById']('secret-source-hint');_0x31cdb3&&state['selectedEnvData']?.['path']&&(_0x31cdb3['textContent']='Absolute\x20path,\x20or\x20relative\x20to:\x20'+state['selectedEnvData']['path']),_0x102b30['hidden']=![],_0x5327fb['focus']();}window['openEditSecretModal']=async function(_0x491557){state['editingSecret']=_0x491557;const _0x2eea01=state['secrets']['find'](_0x3d1b66=>_0x3d1b66['name']===_0x491557);if(!_0x2eea01){Utils['showError']('Secret\x20not\x20found');return;}const _0x1c4fd3=document['getElementById']('secret-modal'),_0x461349=document['getElementById']('secret-modal-title'),_0x35ba46=document['getElementById']('secret-name'),_0x33e838=document['getElementById']('secret-description'),_0x2fd432=document['getElementById']('secret-type-file'),_0x12ced1=document['getElementById']('secret-type-value'),_0x49db5b=document['getElementById']('secret-source'),_0x4a7a7d=document['getElementById']('secret-value'),_0x45432=document['getElementById']('secret-modal-error'),_0x5c9bce=document['getElementById']('secret-source-validation'),_0x52a0b6=document['getElementById']('secret-available-build'),_0x559ac3=document['getElementById']('secret-available-tasks'),_0x48d97b=document['getElementById']('secret-available-deploy'),_0x139de0=document['getElementById']('secret-expose-env'),_0x4b7623=document['getElementById']('secret-expose-file'),_0x374c65=document['getElementById']('secret-target');_0x461349['textContent']='Edit\x20Secret',_0x35ba46['value']=_0x491557,_0x35ba46['disabled']=!![],_0x33e838['value']=_0x2eea01['description']||'';_0x2eea01['type']==='file'?(_0x2fd432['checked']=!![],_0x12ced1['checked']=![],_0x49db5b['value']=_0x2eea01['source']||'',resetSecretValueVisibility('')):(_0x12ced1['checked']=!![],_0x2fd432['checked']=![],_0x49db5b['value']='',resetSecretValueVisibility(_0x2eea01['value']||''),_0x4a7a7d['placeholder']='Enter\x20secret\x20value');const _0x16fd23=_0x2eea01['available_for']||[];_0x52a0b6['checked']=_0x16fd23['includes']('build'),_0x559ac3['checked']=_0x16fd23['includes']('tasks'),_0x48d97b['checked']=_0x16fd23['includes']('deploy');_0x2eea01['expose_as']==='file'?(_0x4b7623['checked']=!![],_0x139de0['checked']=![]):(_0x139de0['checked']=!![],_0x4b7623['checked']=![]);_0x374c65['value']=_0x2eea01['target']||'',setGitPatFields(_0x2eea01['git_remote']),_0x45432['hidden']=!![],_0x5c9bce['hidden']=!![],handleSecretTypeChange(),updateGitPatVisibility(),updateExposeAsVisibility(),updateSecretTargetLabel();const _0xb8b173=document['getElementById']('secret-source-hint');_0xb8b173&&state['selectedEnvData']?.['path']&&(_0xb8b173['textContent']='Absolute\x20path,\x20or\x20relative\x20to:\x20'+state['selectedEnvData']['path']),_0x1c4fd3['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 _0x8019b5=document['getElementById']('secret-type-file')['checked'];document['getElementById']('secret-source-row')['hidden']=!_0x8019b5,document['getElementById']('secret-value-row')['hidden']=_0x8019b5;}function updateExposeAsVisibility(){const _0x4e2316=document['getElementById']('secret-available-tasks')['checked'],_0x5dc628=document['getElementById']('secret-available-deploy')['checked'],_0x55ce8a=document['getElementById']('secret-git-pat-checkbox')['checked'],_0x32eda2=(_0x4e2316||_0x5dc628)&&!_0x55ce8a;document['getElementById']('secret-expose-as-row')['hidden']=!_0x32eda2,document['getElementById']('secret-target-row')['hidden']=!_0x32eda2;}function updateSecretTargetLabel(){const _0x511738=document['getElementById']('secret-expose-file')['checked'],_0x57ef68=document['getElementById']('secret-target-label'),_0xfe5cee=document['getElementById']('secret-target-hint'),_0x47ecaf=document['getElementById']('secret-target');_0x511738?(_0x57ef68['innerHTML']='Container\x20Path\x20<span\x20class=\x22required\x22>*</span>',_0xfe5cee['textContent']='Absolute\x20path\x20where\x20file\x20will\x20be\x20mounted\x20in\x20container',_0x47ecaf['placeholder']='e.g.,\x20/secrets/key.pem'):(_0x57ef68['innerHTML']='Variable\x20Name\x20<span\x20class=\x22required\x22>*</span>',_0xfe5cee['textContent']='The\x20environment\x20variable\x20name',_0x47ecaf['placeholder']='e.g.,\x20SSH_PRIVATE_KEY');}function updateGitPatVisibility(){document['getElementById']('secret-git-pat-row')['hidden']=![];}function handleGitPatCheckboxChange(){const _0x1c3be9=document['getElementById']('secret-git-pat-checkbox')['checked'],_0x1fd4f8=document['getElementById']('secret-git-host-row');_0x1fd4f8['hidden']=!_0x1c3be9,!_0x1c3be9&&(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 _0x2ddfe6=document['getElementById']('secret-git-host')['value'],_0x31b304=document['getElementById']('secret-git-custom-host-row');_0x31b304['hidden']=_0x2ddfe6!=='custom',_0x2ddfe6!=='custom'&&(document['getElementById']('secret-git-custom-host')['value']='');}function getGitRemoteValue(){const _0x5b894c=document['getElementById']('secret-git-pat-checkbox')['checked'];if(!_0x5b894c)return null;const _0x5ab689=document['getElementById']('secret-git-host')['value'];if(!_0x5ab689)return null;if(_0x5ab689==='custom'){const _0x3c681e=document['getElementById']('secret-git-custom-host')['value']['trim']();return _0x3c681e||null;}return _0x5ab689;}function setGitPatFields(_0x3cef81){const _0x31ca4b=document['getElementById']('secret-git-pat-checkbox'),_0xcb7e67=document['getElementById']('secret-git-host'),_0x24e9a3=document['getElementById']('secret-git-custom-host'),_0x1a6701=document['getElementById']('secret-git-host-row'),_0x538d74=document['getElementById']('secret-git-custom-host-row');if(!_0x3cef81){_0x31ca4b['checked']=![],_0xcb7e67['value']='',_0x24e9a3['value']='',_0x1a6701['hidden']=!![],_0x538d74['hidden']=!![];return;}_0x31ca4b['checked']=!![],_0x1a6701['hidden']=![];const _0x27a3b7=['github.com','dev.azure.com','bitbucket.org','gitlab.com'];_0x27a3b7['includes'](_0x3cef81['toLowerCase']())?(_0xcb7e67['value']=_0x3cef81['toLowerCase'](),_0x538d74['hidden']=!![],_0x24e9a3['value']=''):(_0xcb7e67['value']='custom',_0x538d74['hidden']=![],_0x24e9a3['value']=_0x3cef81);}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 _0x50ad71=document['getElementById']('secret-source'),_0x27e9c8=document['getElementById']('secret-source-validation'),_0x32398a=_0x50ad71['value']['trim']();if(!_0x32398a){_0x27e9c8['hidden']=!![];return;}try{const _0x493ce5=await fetch('/environments/'+state['selectedEnv']+'/secrets/_validate/validate',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'source':_0x32398a})}),_0x10eb54=await _0x493ce5['json']();if(_0x10eb54['exists']&&_0x10eb54['isFile'])_0x27e9c8['className']='field-validation\x20valid',_0x27e9c8['innerHTML']='✓\x20File\x20exists\x20('+formatBytes(_0x10eb54['size'])+')';else _0x10eb54['exists']&&!_0x10eb54['isFile']?(_0x27e9c8['className']='field-validation\x20warning',_0x27e9c8['innerHTML']='⚠\x20Path\x20exists\x20but\x20is\x20not\x20a\x20file'):(_0x27e9c8['className']='field-validation\x20warning',_0x27e9c8['innerHTML']='⚠\x20File\x20not\x20found');_0x27e9c8['hidden']=![];}catch(_0x491a14){_0x27e9c8['className']='field-validation\x20warning',_0x27e9c8['innerHTML']='⚠\x20Could\x20not\x20validate\x20path',_0x27e9c8['hidden']=![];}}function formatBytes(_0xa8bff9){if(_0xa8bff9===0x0)return'0\x20B';const _0x1009cd=0x400,_0x4709c7=['B','KB','MB','GB'],_0x2112bb=Math['floor'](Math['log'](_0xa8bff9)/Math['log'](_0x1009cd));return parseFloat((_0xa8bff9/Math['pow'](_0x1009cd,_0x2112bb))['toFixed'](0x1))+'\x20'+_0x4709c7[_0x2112bb];}function resetSecretValueVisibility(_0xda85f3){secretValueStore=_0xda85f3,secretValueVisible=![],lastCursorPosition=0x0;const _0x26e7d3=document['getElementById']('secret-value'),_0x12eb81=document['querySelector']('.secret-toggle-visibility');_0x26e7d3&&(_0x26e7d3['value']=_0xda85f3?'•'['repeat'](_0xda85f3['length']):''),_0x12eb81&&(_0x12eb81['hidden']=![],_0x12eb81['querySelector']('.eye-open')['style']['display']='block',_0x12eb81['querySelector']('.eye-closed')['style']['display']='none');}function toggleSecretValueVisibility(){const _0x3e06d6=document['getElementById']('secret-value'),_0x5a8ef4=document['querySelector']('.secret-toggle-visibility');secretValueVisible=!secretValueVisible,secretValueVisible?(_0x3e06d6['value']=secretValueStore,_0x5a8ef4['querySelector']('.eye-open')['style']['display']='none',_0x5a8ef4['querySelector']('.eye-closed')['style']['display']='block'):(_0x3e06d6['value']=secretValueStore?'•'['repeat'](secretValueStore['length']):'',_0x5a8ef4['querySelector']('.eye-open')['style']['display']='block',_0x5a8ef4['querySelector']('.eye-closed')['style']['display']='none');}function handleSecretValueBeforeInput(_0x4fa75c){if(!secretValueVisible){const _0xef4eda=_0x4fa75c['target'];lastCursorPosition=_0xef4eda['selectionStart'],_0xef4eda['dataset']['selectionEnd']=_0xef4eda['selectionEnd'];}}function handleSecretValueInput(_0x408b2d){const _0x3aa6c5=_0x408b2d['target'];if(secretValueVisible)secretValueStore=_0x3aa6c5['value'];else{const _0x39ef09=_0x408b2d['inputType'],_0x3ed3f3=_0x3aa6c5['value'],_0x3c4717='•',_0x5db916=_0x3aa6c5['selectionStart'],_0x5b278e=_0x3ed3f3['replace'](new RegExp(_0x3c4717,'g'),''),_0x4d81dc=secretValueStore['length'],_0x4f4c7d=lastCursorPosition,_0x5d313b=parseInt(_0x3aa6c5['dataset']['selectionEnd']||_0x4f4c7d),_0x4a26d2=_0x5d313b>_0x4f4c7d;if(_0x3ed3f3==='')secretValueStore='',lastCursorPosition=0x0;else{if(_0x39ef09&&_0x39ef09['startsWith']('delete')){if(_0x4a26d2)secretValueStore=secretValueStore['slice'](0x0,_0x4f4c7d)+secretValueStore['slice'](_0x5d313b),lastCursorPosition=_0x4f4c7d;else{const _0x4f00fc=_0x4d81dc-_0x3ed3f3['length'];_0x39ef09==='deleteContentBackward'?secretValueStore=secretValueStore['slice'](0x0,_0x5db916)+secretValueStore['slice'](_0x5db916+_0x4f00fc):secretValueStore=secretValueStore['slice'](0x0,_0x5db916)+secretValueStore['slice'](_0x5db916+_0x4f00fc),lastCursorPosition=_0x5db916;}}else{if(_0x5b278e['length']>0x0){const _0x315405=_0x3ed3f3['length']-_0x5b278e['length'];if(_0x315405===0x0)secretValueStore=_0x5b278e,lastCursorPosition=_0x5b278e['length'];else _0x4a26d2?(secretValueStore=secretValueStore['slice'](0x0,_0x4f4c7d)+_0x5b278e+secretValueStore['slice'](_0x5d313b),lastCursorPosition=_0x4f4c7d+_0x5b278e['length']):(secretValueStore=secretValueStore['slice'](0x0,_0x4f4c7d)+_0x5b278e+secretValueStore['slice'](_0x4f4c7d),lastCursorPosition=_0x4f4c7d+_0x5b278e['length']);}else _0x3ed3f3['length']<_0x4d81dc?(secretValueStore=secretValueStore['slice'](0x0,_0x3ed3f3['length']),lastCursorPosition=_0x5db916):lastCursorPosition=_0x5db916;}}const _0x494a58=_0x3c4717['repeat'](secretValueStore['length']);_0x3aa6c5['value']=_0x494a58,_0x3aa6c5['setSelectionRange'](lastCursorPosition,lastCursorPosition),delete _0x3aa6c5['dataset']['selectionEnd'];}}function handleSecretFileImport(_0x484354){const _0x52703d=_0x484354['target']['files'][0x0];if(!_0x52703d)return;const _0x26cc9b=new FileReader();_0x26cc9b['onload']=function(_0x5cda4c){const _0x222ae5=_0x5cda4c['target']['result'];document['getElementById']('secret-value')['value']=_0x222ae5,secretValueStore=_0x222ae5,secretValueVisible=!![];const _0x229d59=document['querySelector']('.secret-toggle-visibility');_0x229d59&&(_0x229d59['querySelector']('.eye-open')['style']['display']='none',_0x229d59['querySelector']('.eye-closed')['style']['display']='block');},_0x26cc9b['onerror']=function(){Utils['showError']('Failed\x20to\x20read\x20file');},_0x26cc9b['readAsText'](_0x52703d),_0x484354['target']['value']='';}async function saveSecret(){const _0x117407=document['getElementById']('secret-name'),_0x4f3304=document['getElementById']('secret-description'),_0x10bd2e=document['getElementById']('secret-type-file')['checked'],_0x1f54cf=document['getElementById']('secret-source'),_0x5d9476=document['getElementById']('secret-value'),_0x1f2d63=document['getElementById']('secret-modal-error'),_0x35674e=document['getElementById']('secret-available-build'),_0xd8e169=document['getElementById']('secret-available-tasks'),_0x6e10d5=document['getElementById']('secret-available-deploy'),_0x304812=document['getElementById']('secret-expose-file')['checked'],_0xbc2b00=document['getElementById']('secret-target'),_0x4e0884=_0x117407['value']['trim'](),_0x4456c7=_0x4f3304['value']['trim'](),_0x40342d=_0x10bd2e?'file':'value',_0x822515=_0x1f54cf['value']['trim'](),_0x25665c=secretValueStore,_0x4c4484=_0x304812?'file':'env_var',_0x1bfd1e=_0xbc2b00['value']['trim'](),_0x47df47=getGitRemoteValue(),_0x43fa41=document['getElementById']('secret-git-pat-checkbox')['checked'],_0x1543eb=[];if(_0x35674e['checked'])_0x1543eb['push']('build');if(_0xd8e169['checked'])_0x1543eb['push']('tasks');if(_0x6e10d5['checked'])_0x1543eb['push']('deploy');const _0x19f0bb=_0xd8e169['checked']||_0x6e10d5['checked'];_0x1f2d63['hidden']=!![];if(!_0x4e0884){_0x1f2d63['textContent']='Secret\x20name\x20is\x20required',_0x1f2d63['hidden']=![],_0x117407['focus']();return;}if(!/^[A-Za-z_][A-Za-z0-9_]*$/['test'](_0x4e0884)){_0x1f2d63['textContent']='Secret\x20name\x20must\x20start\x20with\x20a\x20letter\x20or\x20underscore,\x20and\x20contain\x20only\x20letters,\x20numbers,\x20and\x20underscores',_0x1f2d63['hidden']=![],_0x117407['focus']();return;}if(_0x10bd2e&&!_0x822515){_0x1f2d63['textContent']='File\x20path\x20is\x20required\x20for\x20file-type\x20secrets',_0x1f2d63['hidden']=![],_0x1f54cf['focus']();return;}if(!_0x10bd2e&&!_0x25665c){_0x1f2d63['textContent']='Value\x20is\x20required\x20for\x20value-type\x20secrets',_0x1f2d63['hidden']=![],_0x5d9476['focus']();return;}if(_0x1543eb['length']===0x0){_0x1f2d63['textContent']='At\x20least\x20one\x20availability\x20option\x20must\x20be\x20selected\x20(Build,\x20Tasks,\x20or\x20Deploy)',_0x1f2d63['hidden']=![];return;}if(_0x19f0bb&&!_0x43fa41){if(!_0x1bfd1e){_0x1f2d63['textContent']=_0x4c4484==='env_var'?'Variable\x20name\x20is\x20required\x20when\x20available\x20for\x20Tasks\x20or\x20Deploy':'Container\x20path\x20is\x20required\x20when\x20available\x20for\x20Tasks\x20or\x20Deploy',_0x1f2d63['hidden']=![],_0xbc2b00['focus']();return;}if(_0x4c4484==='env_var'&&!/^[A-Za-z_][A-Za-z0-9_]*$/['test'](_0x1bfd1e)){_0x1f2d63['textContent']='Variable\x20name\x20must\x20start\x20with\x20a\x20letter\x20or\x20underscore,\x20and\x20contain\x20only\x20letters,\x20numbers,\x20and\x20underscores',_0x1f2d63['hidden']=![],_0xbc2b00['focus']();return;}if(_0x4c4484==='file'&&!_0x1bfd1e['startsWith']('/')){_0x1f2d63['textContent']='Container\x20path\x20must\x20be\x20an\x20absolute\x20path\x20(start\x20with\x20/)',_0x1f2d63['hidden']=![],_0xbc2b00['focus']();return;}if(_0x4c4484==='file'&&!_0x10bd2e){_0x1f2d63['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.',_0x1f2d63['hidden']=![];return;}if(_0x4c4484==='env_var'&&_0x10bd2e){_0x1f2d63['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.',_0x1f2d63['hidden']=![];return;}}if(_0x43fa41){const _0x1cc537=document['getElementById']('secret-git-host'),_0x300f75=document['getElementById']('secret-git-custom-host'),_0x1fb0e0=_0x1cc537['value'];if(!_0x1fb0e0){_0x1f2d63['textContent']='Please\x20select\x20a\x20Git\x20host\x20for\x20the\x20PAT',_0x1f2d63['hidden']=![],_0x1cc537['focus']();return;}if(_0x1fb0e0==='custom'){const _0x98fb24=_0x300f75['value']['trim']();if(!_0x98fb24){_0x1f2d63['textContent']='Please\x20enter\x20a\x20custom\x20Git\x20hostname',_0x1f2d63['hidden']=![],_0x300f75['focus']();return;}if(!/^[a-zA-Z0-9]([a-zA-Z0-9\-\.]*[a-zA-Z0-9])?$/['test'](_0x98fb24)){_0x1f2d63['textContent']='Invalid\x20hostname\x20format.\x20Use\x20a\x20valid\x20hostname\x20like\x20\x22git.mycompany.com\x22',_0x1f2d63['hidden']=![],_0x300f75['focus']();return;}}}try{const _0x47750b={'type':_0x40342d,'description':_0x4456c7,'available_for':_0x1543eb,..._0x19f0bb&&!_0x43fa41?{'expose_as':_0x4c4484,'target':_0x1bfd1e}:{},..._0x10bd2e?{'source':_0x822515}:{},...!_0x10bd2e&&_0x25665c?{'value':_0x25665c}:{},'git_remote':_0x47df47};state['editingSecret']?(await API['put']('/environments/'+state['selectedEnv']+'/secrets/'+_0x4e0884,_0x47750b),Utils['showSuccess']('Secret\x20\x22'+_0x4e0884+'\x22\x20updated')):(_0x47750b['secretName']=_0x4e0884,await API['post']('/environments/'+state['selectedEnv']+'/secrets',_0x47750b),Utils['showSuccess']('Secret\x20\x22'+_0x4e0884+'\x22\x20created')),closeSecretModal(),await loadSecrets(),renderSecrets();}catch(_0x21aa99){_0x1f2d63['textContent']=_0x21aa99['message']||'Failed\x20to\x20save\x20secret',_0x1f2d63['hidden']=![];}}window['openDeleteSecretModal']=function(_0x370989){document['getElementById']('delete-secret-name')['textContent']=_0x370989,document['getElementById']('delete-secret-modal')['hidden']=![],document['getElementById']('delete-secret-modal')['dataset']['secretName']=_0x370989;};function closeDeleteSecretModal(){document['getElementById']('delete-secret-modal')['hidden']=!![];}async function confirmDeleteSecret(){const _0x81eb69=document['getElementById']('delete-secret-modal')['dataset']['secretName'];try{await API['delete']('/environments/'+state['selectedEnv']+'/secrets/'+_0x81eb69),Utils['showSuccess']('Secret\x20\x22'+_0x81eb69+'\x22\x20deleted'),closeDeleteSecretModal(),await loadSecrets(),renderSecrets();}catch(_0x6d4b20){Utils['showError'](_0x6d4b20['message']||'Failed\x20to\x20delete\x20secret'),closeDeleteSecretModal();}}function loadConnections(){if(!state['selectedEnvData'])return;!state['selectedEnvData']['external_connections']&&(state['selectedEnvData']['external_connections']=[]);}function renderConnections(){const _0x3d1540=document['getElementById']('connections-list'),_0x374795=document['getElementById']('connections-empty');if(!_0x3d1540||!_0x374795)return;const _0x2b5e43=state['selectedEnvData']?.['external_connections']||[];if(_0x2b5e43['length']===0x0){_0x3d1540['innerHTML']='',_0x3d1540['hidden']=!![],_0x374795['hidden']=![];return;}_0x3d1540['hidden']=![],_0x374795['hidden']=!![],_0x3d1540['innerHTML']=_0x2b5e43['map'](_0x484eb4=>{const _0x57429b={'sqlserver':'SQL\x20Server','ibmi':'IBM\x20i','ssh':'SSH'},_0x4882d2=_0x57429b[_0x484eb4['type']]||_0x484eb4['type'],_0x484664=_0x484eb4['type']==='ibmi'?_0x484eb4['config']?.['features']||[]:[],_0x5c09ee=_0x484664['map'](_0xdbd63a=>'<span\x20class=\x22connection-feature-tag\x22>'+Utils['escapeHtml'](_0xdbd63a)+'</span>')['join'](''),_0x6d372d=_0x484eb4['available_for']||[],_0x310f94='\x0a\x20\x20\x20\x20\x20\x20<span\x20class=\x22secret-availability-badges\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20'+(_0x6d372d['includes']('tasks')?'<span\x20class=\x22availability-badge\x20tasks\x22>Tasks</span>':'')+'\x0a\x20\x20\x20\x20\x20\x20\x20\x20'+(_0x6d372d['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'](_0x484eb4['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'](_0x484eb4['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'+_0x310f94+'\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22connection-type-badge\x20'+_0x484eb4['type']+'\x22>'+_0x4882d2+'</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20'+_0x5c09ee+'\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20'+(_0x484eb4['description']?'<span\x20class=\x22connection-description\x22>'+Utils['escapeHtml'](_0x484eb4['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'](_0x484eb4['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'](_0x484eb4['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'](_0x484eb4['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'](_0x44d7c8=>_0x44d7c8['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 _0x7d194d=document['getElementById']('connection-modal-error');_0x7d194d['hidden']=!![],_0x7d194d['textContent']='',clearConnectionTestResult(),updateConnectionFormVisibility(),document['getElementById']('connection-modal')['hidden']=![];}window['openEditConnectionModal']=function(_0x16e311){const _0x5af585=state['selectedEnvData']?.['external_connections']||[],_0x3ae950=_0x5af585['find'](_0x2c76f5=>_0x2c76f5['id']===_0x16e311);if(!_0x3ae950)return;state['editingConnection']=_0x16e311,document['getElementById']('connection-modal-title')['textContent']='Edit\x20Connection',document['getElementById']('connection-name')['value']=_0x3ae950['name']||'',document['getElementById']('connection-description')['value']=_0x3ae950['description']||'',document['getElementById']('connection-host')['value']=_0x3ae950['config']?.['host']||'';const _0x5471d6=_0x3ae950['config']?.['verify_db_server_certificate']!==![];document['getElementById']('connection-verify-cert')['checked']=_0x5471d6,document['getElementById']('connection-verify-cert-warning')['hidden']=_0x5471d6,document['getElementById']('connection-database')['value']=_0x3ae950['config']?.['database']||'',document['getElementById']('connection-user')['value']=_0x3ae950['config']?.['user']||'',document['getElementById']('connection-password')['value']=_0x3ae950['password']||'',document['getElementById']('connection-password')['type']='password',resetPasswordToggleIcon(),resetSshKeyVisibility(_0x3ae950['ssh_private_key']||''),document['getElementById']('connection-ssh-public-key')['value']=_0x3ae950['ssh_public_key']||'',document['getElementById']('connection-pui-base-url')['value']=_0x3ae950['config']?.['pui_base_url']||'',document['getElementById']('connection-pui-render-path')['value']=_0x3ae950['config']?.['pui_render_path']||'',document['getElementById']('connection-pui-launch-path')['value']=_0x3ae950['config']?.['pui_launch_path']||'',document['getElementById']('connection-build-library-prefix')['value']=_0x3ae950['config']?.['build_library_prefix']||'AITSK',populateBuildRepoSelect(_0x3ae950['config']?.['build_repo']||''),document['getElementById']('connection-build-path')['value']=_0x3ae950['config']?.['build_path']||'',document['querySelectorAll']('input[name=\x22connection-type\x22]')['forEach'](_0x1562f9=>{_0x1562f9['disabled']=!![],_0x1562f9['checked']=_0x1562f9['value']===_0x3ae950['type'];});if(_0x3ae950['type']==='ibmi'){const _0x190738=_0x3ae950['config']?.['features']||[];document['getElementById']('feature-sql')['checked']=_0x190738['includes']('sql'),document['getElementById']('feature-build')['checked']=_0x190738['includes']('build'),document['getElementById']('feature-interactive')['checked']=_0x190738['includes']('interactive'),document['getElementById']('feature-ssh')['checked']=_0x190738['includes']('ssh'),document['getElementById']('feature-sync')['checked']=_0x190738['includes']('sync'),_0x190738['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 _0x288db4=_0x3ae950['available_for']||[];document['getElementById']('connection-available-tasks')['checked']=_0x288db4['includes']('tasks'),document['getElementById']('connection-available-deploy')['checked']=_0x288db4['includes']('deploy');const _0x446c9c=document['getElementById']('connection-modal-error');_0x446c9c['hidden']=!![],_0x446c9c['textContent']='',clearConnectionTestResult(),updateConnectionFormVisibility(),document['getElementById']('connection-modal')['hidden']=![];};function isFullyQualifiedHostname(_0xb50733){if(!_0xb50733||typeof _0xb50733!=='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'](_0xb50733);}function syncHostToPuiBaseUrl(){const _0x277c95=document['querySelector']('input[name=\x22connection-type\x22]:checked')?.['value'];if(_0x277c95!=='ibmi')return;if(!document['getElementById']('feature-interactive')['checked'])return;const _0x193300=document['getElementById']('connection-host')['value']['trim'](),_0x2af289=document['getElementById']('connection-pui-base-url'),_0x58d5bf=_0x2af289['value']['trim']();if(!_0x193300)return;if(!_0x58d5bf)_0x2af289['value']='https://'+_0x193300;else try{const _0x68dfbf=new URL(_0x58d5bf);_0x68dfbf['hostname']=_0x193300,_0x2af289['value']=_0x68dfbf['origin'];}catch{}}function syncPuiBaseUrlToHost(){const _0xc85c6a=document['querySelector']('input[name=\x22connection-type\x22]:checked')?.['value'];if(_0xc85c6a!=='ibmi')return;const _0x174383=document['getElementById']('connection-pui-base-url')['value']['trim']();if(!_0x174383)return;try{const _0x15833e=new URL(_0x174383),_0x5c8e12=_0x15833e['hostname'];_0x5c8e12&&(document['getElementById']('connection-host')['value']=_0x5c8e12);}catch{}}function populateBuildRepoSelect(_0x32fbb5){const _0x5a4273=document['getElementById']('connection-build-repo'),_0x48c7b2=state['selectedEnvData']?.['repos']||[];_0x5a4273['innerHTML']='<option\x20value=\x22\x22>—\x20Select\x20a\x20repo\x20—</option>'+_0x48c7b2['map'](_0x472f22=>'<option\x20value=\x22'+Utils['escapeHtml'](_0x472f22['name'])+'\x22'+(_0x472f22['name']===_0x32fbb5?'\x20selected':'')+'>'+Utils['escapeHtml'](_0x472f22['name'])+'</option>')['join']('');}function updateConnectionFormVisibility(){const _0x8d670e=document['querySelector']('input[name=\x22connection-type\x22]:checked')?.['value']||'sqlserver',_0x427f40=_0x8d670e==='ibmi',_0x19b5c1=_0x8d670e==='ssh',_0x4085bb=_0x8d670e==='sqlserver',_0x1e9ce2=document['getElementById']('feature-sql')['checked'],_0x3e2545=document['getElementById']('feature-build')['checked'],_0x21c72b=document['getElementById']('feature-interactive')['checked'],_0x37550c=document['getElementById']('feature-ssh')['checked'],_0x280fe0=document['getElementById']('feature-sync')['checked'],_0x592f1f=document['getElementById']('connection-available-tasks')['checked'];document['getElementById']('connection-database-row')['hidden']=!_0x4085bb;const _0x5c89fb=_0x4085bb||_0x427f40&&_0x1e9ce2;document['getElementById']('connection-verify-cert-row')['hidden']=!_0x5c89fb,document['getElementById']('connection-features-row')['hidden']=!_0x427f40,document['getElementById']('connection-pui-settings')['hidden']=!(_0x427f40&&_0x21c72b),document['getElementById']('connection-ssh-settings')['hidden']=!(_0x19b5c1||_0x427f40&&(_0x37550c||_0x3e2545)),document['getElementById']('connection-password-row')['hidden']=!(_0x4085bb||_0x427f40&&(_0x1e9ce2||_0x21c72b));const _0x5254e4=document['getElementById']('connection-build-repo-row'),_0x44ee60=document['getElementById']('connection-build-path-row'),_0x36e266=_0x427f40&&_0x3e2545;_0x5254e4['hidden']=!_0x36e266,_0x44ee60['hidden']=!_0x36e266;_0x36e266&&populateBuildRepoSelect(document['getElementById']('connection-build-repo')['value']);const _0x5a2f4b=document['getElementById']('connection-build-library-prefix-row'),_0x1b2ce4=_0x427f40&&_0x3e2545&&_0x592f1f;_0x5a2f4b['hidden']=!_0x1b2ce4;!_0x1b2ce4&&(document['getElementById']('connection-build-library-prefix')['value']=document['getElementById']('connection-build-library-prefix')['value']||'AITSK');document['getElementById']('connection-ibmi-helper-row')['hidden']=!_0x427f40;const _0x3299d2=_0x4085bb||_0x427f40&&_0x1e9ce2,_0x22ff53=_0x427f40&&(_0x37550c||_0x3e2545||_0x280fe0)||_0x19b5c1;document['getElementById']('connection-test-row')['hidden']=!(_0x3299d2||_0x22ff53),document['getElementById']('connection-test-sql-btn')['hidden']=!_0x3299d2,document['getElementById']('connection-test-ssh-btn')['hidden']=!_0x22ff53;const _0x509723=document['getElementById']('connection-ssh-public-key')['value'];document['getElementById']('connection-install-key-row')['hidden']=!(_0x509723&&_0x509723!=='***');}function closeConnectionModal(){document['getElementById']('connection-modal')['hidden']=!![],state['editingConnection']=null;}function validateConnectionFrontend(_0x37917b,_0x4f68b6=[],_0x324b2d=null){const _0x3b95b4=[],_0x115076=['sqlserver','ibmi','ssh'],_0x31695e=['tasks','deploy'],_0x4a9074=['sql','build','interactive','ssh','sync'],_0x399932=['build','interactive'],_0x35f55a={'sync':['ssh']},_0xa63712=['sql','interactive'],_0x232869=['build','ssh','sync'],_0x3e5e93=/^[A-Z@#$][A-Z@#$0-9_.]{0,4}$/;if(!_0x37917b['name']||typeof _0x37917b['name']!=='string')_0x3b95b4['push']('Connection\x20name\x20is\x20required');else{if(!/^[a-zA-Z0-9_-]+$/['test'](_0x37917b['name']))_0x3b95b4['push']('Connection\x20name\x20must\x20contain\x20only\x20letters,\x20numbers,\x20hyphens,\x20and\x20underscores');else{const _0x20f858=_0x37917b['name']['toLowerCase'](),_0x3f1448=_0x4f68b6['find'](_0x7963d5=>_0x7963d5['id']!==_0x324b2d&&_0x7963d5['name']['toLowerCase']()===_0x20f858);_0x3f1448&&_0x3b95b4['push']('Connection\x20name\x20\x22'+_0x37917b['name']+'\x22\x20is\x20already\x20in\x20use');}}if(!Array['isArray'](_0x37917b['available_for'])||_0x37917b['available_for']['length']===0x0)_0x3b95b4['push']('At\x20least\x20one\x20availability\x20scope\x20is\x20required\x20(tasks,\x20deploy)');else _0x37917b['available_for']['some'](_0x4be25b=>!_0x31695e['includes'](_0x4be25b))&&_0x3b95b4['push']('Available\x20scopes\x20must\x20be:\x20'+_0x31695e['join'](',\x20'));(!_0x37917b['type']||!_0x115076['includes'](_0x37917b['type']))&&_0x3b95b4['push']('Connection\x20type\x20must\x20be\x20one\x20of:\x20'+_0x115076['join'](',\x20'));if(_0x37917b['type']==='sqlserver'){if(!_0x37917b['config']?.['host'])_0x3b95b4['push']('Host\x20is\x20required\x20for\x20SQL\x20Server');else!isFullyQualifiedHostname(_0x37917b['config']['host'])&&_0x3b95b4['push']('Host\x20must\x20be\x20a\x20fully\x20qualified\x20hostname\x20(e.g.\x20myserver.mycompany.com)');if(!_0x37917b['config']?.['database'])_0x3b95b4['push']('Database\x20is\x20required\x20for\x20SQL\x20Server');if(!_0x37917b['config']?.['user'])_0x3b95b4['push']('User\x20is\x20required\x20for\x20SQL\x20Server');if(!_0x37917b['password'])_0x3b95b4['push']('Password\x20is\x20required\x20for\x20SQL\x20Server');}else{if(_0x37917b['type']==='ibmi'){if(!_0x37917b['config']?.['host'])_0x3b95b4['push']('Host\x20is\x20required\x20for\x20IBM\x20i');else!isFullyQualifiedHostname(_0x37917b['config']['host'])&&_0x3b95b4['push']('Host\x20must\x20be\x20a\x20fully\x20qualified\x20hostname\x20(e.g.\x20myserver.mycompany.com)');if(!_0x37917b['config']?.['user'])_0x3b95b4['push']('User\x20is\x20required\x20for\x20IBM\x20i');const _0x32d5ee=_0x37917b['config']?.['features']||[];_0x32d5ee['some'](_0x5cbe4c=>_0xa63712['includes'](_0x5cbe4c))&&!_0x37917b['password']&&_0x3b95b4['push']('Password\x20is\x20required\x20for\x20IBM\x20i\x20SQL\x20and\x20Interactive\x20features');if(!Array['isArray'](_0x32d5ee)||_0x32d5ee['length']===0x0)_0x3b95b4['push']('At\x20least\x20one\x20IBM\x20i\x20feature\x20is\x20required');else{const _0x5377d0=_0x32d5ee['filter'](_0x1b7a82=>!_0x4a9074['includes'](_0x1b7a82));_0x5377d0['length']>0x0&&_0x3b95b4['push']('Invalid\x20IBM\x20i\x20features:\x20'+_0x5377d0['join'](',\x20'));for(const [_0x47e2bf,_0x4c152c]of Object['entries'](_0x35f55a)){if(_0x32d5ee['includes'](_0x47e2bf))for(const _0x820d43 of _0x4c152c){!_0x32d5ee['includes'](_0x820d43)&&_0x3b95b4['push']('IBM\x20i\x20feature\x20\x22'+_0x47e2bf+'\x22\x20requires\x20\x22'+_0x820d43+'\x22');}}if(_0x32d5ee['includes']('build')){!_0x37917b['config']?.['build_repo']&&_0x3b95b4['push']('Build\x20repo\x20is\x20required\x20when\x20Build\x20feature\x20is\x20selected');const _0x476edf=_0x37917b['config']?.['build_path'];if(_0x476edf){const _0x5e573e=_0x476edf['split']('/');_0x5e573e['some'](_0xa88605=>_0xa88605==='.'||_0xa88605==='..')&&_0x3b95b4['push']('Build\x20directory\x20must\x20not\x20contain\x20\x22.\x22\x20or\x20\x22..\x22\x20segments');}}if(_0x32d5ee['includes']('build')&&_0x37917b['available_for']?.['includes']('tasks')){const _0x4dbb60=_0x37917b['config']?.['build_library_prefix'];if(!_0x4dbb60)_0x3b95b4['push']('Build\x20library\x20prefix\x20is\x20required\x20when\x20Build\x20feature\x20is\x20used\x20with\x20Tasks\x20scope');else!_0x3e5e93['test'](_0x4dbb60)&&_0x3b95b4['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.');}_0x32d5ee['some'](_0x5bf202=>_0x232869['includes'](_0x5bf202))&&!_0x37917b['ssh_private_key']&&_0x3b95b4['push']('SSH\x20private\x20key\x20is\x20required\x20for\x20this\x20connection\x20type');_0x32d5ee['includes']('interactive')&&!(_0x37917b['available_for']||[])['includes']('tasks')&&_0x3b95b4['push']('Interactive\x20feature\x20requires\x20Tasks\x20availability\x20scope');if(_0x32d5ee['includes']('interactive')){if(!_0x37917b['config']?.['pui_base_url'])_0x3b95b4['push']('PUI\x20Base\x20URL\x20is\x20required\x20when\x20Interactive\x20feature\x20is\x20selected');else{if(_0x37917b['config']?.['host'])try{const _0x2aa8ea=new URL(_0x37917b['config']['pui_base_url'])['hostname'];_0x2aa8ea&&_0x2aa8ea!==_0x37917b['config']['host']&&_0x3b95b4['push']('PUI\x20Base\x20URL\x20hostname\x20\x22'+_0x2aa8ea+'\x22\x20must\x20match\x20the\x20connection\x20host\x20\x22'+_0x37917b['config']['host']+'\x22');}catch{_0x3b95b4['push']('PUI\x20Base\x20URL\x20must\x20be\x20a\x20valid\x20URL\x20(e.g.\x20https://myibmi.mycompany.com:8080)');}}}const _0xc29328=_0x32d5ee['some'](_0x7eb58b=>_0x399932['includes'](_0x7eb58b));if(_0xc29328&&Array['isArray'](_0x37917b['available_for'])){const _0x312529=_0x4f68b6['filter'](_0xbba8fa=>_0xbba8fa['id']!==_0x324b2d&&_0xbba8fa['type']==='ibmi'&&(_0xbba8fa['config']?.['features']||[])['some'](_0x3aa9d0=>_0x399932['includes'](_0x3aa9d0)));for(const _0x42b49d of _0x312529){const _0x1b2786=_0x37917b['available_for']['filter'](_0x1417b0=>(_0x42b49d['available_for']||[])['includes'](_0x1417b0));if(_0x1b2786['length']>0x0){_0x3b95b4['push']('Only\x20one\x20IBM\x20i\x20connection\x20with\x20build/interactive\x20features\x20is\x20allowed\x20per\x20scope.\x20'+('Connection\x20\x22'+_0x42b49d['name']+'\x22\x20already\x20has\x20build/interactive\x20in\x20scope:\x20'+_0x1b2786['join'](',\x20')));break;}}}}}else{if(_0x37917b['type']==='ssh'){if(!_0x37917b['config']?.['host'])_0x3b95b4['push']('Host\x20is\x20required\x20for\x20SSH');else!isFullyQualifiedHostname(_0x37917b['config']['host'])&&_0x3b95b4['push']('Host\x20must\x20be\x20a\x20fully\x20qualified\x20hostname\x20(e.g.\x20myserver.mycompany.com)');if(!_0x37917b['config']?.['user'])_0x3b95b4['push']('User\x20is\x20required\x20for\x20SSH');!_0x37917b['ssh_private_key']&&_0x3b95b4['push']('SSH\x20private\x20key\x20is\x20required\x20for\x20SSH\x20connections');}}}return{'valid':_0x3b95b4['length']===0x0,'errors':_0x3b95b4};}async function saveConnection(){const _0x29328b=document['getElementById']('connection-modal-error');_0x29328b['hidden']=!![];const _0x1e6308=document['querySelector']('input[name=\x22connection-type\x22]:checked')?.['value'],_0x275676=document['getElementById']('connection-name')['value']['trim'](),_0x4a5b77=document['getElementById']('connection-description')['value']['trim'](),_0x50d281=document['getElementById']('connection-host')['value']['trim'](),_0x3939d5=document['getElementById']('connection-user')['value']['trim'](),_0x10c655=[];if(document['getElementById']('connection-available-tasks')['checked'])_0x10c655['push']('tasks');if(document['getElementById']('connection-available-deploy')['checked'])_0x10c655['push']('deploy');const _0x582539={'host':_0x50d281,'user':_0x3939d5};if(_0x1e6308==='sqlserver')_0x582539['database']=document['getElementById']('connection-database')['value']['trim'](),!document['getElementById']('connection-verify-cert')['checked']&&(_0x582539['verify_db_server_certificate']=![]);else{if(_0x1e6308==='ibmi'){const _0x987ad2=[];if(document['getElementById']('feature-sql')['checked'])_0x987ad2['push']('sql');if(document['getElementById']('feature-build')['checked'])_0x987ad2['push']('build');if(document['getElementById']('feature-interactive')['checked'])_0x987ad2['push']('interactive');if(document['getElementById']('feature-ssh')['checked']||document['getElementById']('feature-ssh')['disabled'])_0x987ad2['push']('ssh');if(document['getElementById']('feature-sync')['checked'])_0x987ad2['push']('sync');_0x582539['features']=_0x987ad2;_0x987ad2['includes']('sql')&&!document['getElementById']('connection-verify-cert')['checked']&&(_0x582539['verify_db_server_certificate']=![]);if(_0x987ad2['includes']('interactive')){_0x582539['pui_base_url']=document['getElementById']('connection-pui-base-url')['value']['trim']();const _0x1d5319=document['getElementById']('connection-pui-render-path')['value']['trim'](),_0xcf7726=document['getElementById']('connection-pui-launch-path')['value']['trim']();if(_0x1d5319)_0x582539['pui_render_path']=_0x1d5319;if(_0xcf7726)_0x582539['pui_launch_path']=_0xcf7726;}if(_0x987ad2['includes']('build')){const _0x4a95b5=document['getElementById']('connection-build-repo')['value'];if(!_0x4a95b5){_0x29328b['textContent']='Build\x20repo\x20is\x20required\x20when\x20Build\x20feature\x20is\x20selected',_0x29328b['hidden']=![];return;}_0x582539['build_repo']=_0x4a95b5;let _0x15388b=document['getElementById']('connection-build-path')['value']['trim']();_0x15388b=_0x15388b['replace'](/^\/+/,'');if(_0x15388b){const _0x15fad9=_0x15388b['split']('/');if(_0x15fad9['some'](_0xd4fb5f=>_0xd4fb5f==='.'||_0xd4fb5f==='..')){_0x29328b['textContent']='Build\x20directory\x20must\x20not\x20contain\x20\x22.\x22\x20or\x20\x22..\x22\x20segments',_0x29328b['hidden']=![];return;}_0x582539['build_path']=_0x15388b;}}if(_0x987ad2['includes']('build')&&_0x10c655['includes']('tasks')){let _0x2d8515=document['getElementById']('connection-build-library-prefix')['value']['trim']()['toUpperCase']();document['getElementById']('connection-build-library-prefix')['value']=_0x2d8515;if(!_0x2d8515){_0x29328b['textContent']='Build\x20library\x20prefix\x20is\x20required',_0x29328b['hidden']=![];return;}if(!/^[A-Z@#$][A-Z@#$0-9_.]{0,4}$/['test'](_0x2d8515)){_0x29328b['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.',_0x29328b['hidden']=![];return;}_0x582539['build_library_prefix']=_0x2d8515;}}}const _0x5e961a={'name':_0x275676,'type':_0x1e6308,'description':_0x4a5b77,'available_for':_0x10c655,'config':_0x582539};state['editingConnection']?_0x5e961a['id']=state['editingConnection']:_0x5e961a['id']=crypto['randomUUID']();const _0x4519d1=document['getElementById']('connection-password')['value'];if(_0x4519d1)_0x5e961a['password']=_0x4519d1;if(sshKeyValueStore)_0x5e961a['ssh_private_key']=sshKeyValueStore;const _0x4afdf1=document['getElementById']('connection-ssh-public-key')['value'];if(_0x4afdf1)_0x5e961a['ssh_public_key']=_0x4afdf1;const _0x556aa6=state['selectedEnvData']?.['external_connections']||[],_0x3d5a2f=validateConnectionFrontend(_0x5e961a,_0x556aa6,state['editingConnection']);if(!_0x3d5a2f['valid']){_0x29328b['textContent']=_0x3d5a2f['errors'][0x0],_0x29328b['hidden']=![];return;}if(state['editingConnection']){const _0x451a83=_0x556aa6['findIndex'](_0x2287a6=>_0x2287a6['id']===state['editingConnection']);_0x451a83>=0x0&&(_0x556aa6[_0x451a83]=_0x5e961a);}else _0x556aa6['push'](_0x5e961a);state['selectedEnvData']['external_connections']=_0x556aa6,Utils['showSuccess']('Connection\x20\x22'+_0x275676+'\x22\x20'+(state['editingConnection']?'updated':'added')+'\x20(click\x20Save\x20to\x20persist\x20changes)'),closeConnectionModal(),renderConnections(),markAsModified();const _0x24f75e=getRequiredSkillsForConnection(_0x5e961a);_0x24f75e['length']>0x0&&await autoImportConnectionSkills(_0x24f75e);}window['openDeleteConnectionModal']=function(_0x989823){const _0x326469=state['selectedEnvData']?.['external_connections']||[],_0x505484=_0x326469['find'](_0x1863f6=>_0x1863f6['id']===_0x989823);if(!_0x505484)return;document['getElementById']('delete-connection-name')['textContent']=_0x505484['name']+'\x20('+_0x505484['type']+')',document['getElementById']('delete-connection-modal')['dataset']['connectionId']=_0x989823,document['getElementById']('delete-connection-modal')['hidden']=![];};function closeDeleteConnectionModal(){document['getElementById']('delete-connection-modal')['hidden']=!![];}function confirmDeleteConnection(){const _0x11b8a7=document['getElementById']('delete-connection-modal')['dataset']['connectionId'],_0x1132a2=state['selectedEnvData']?.['external_connections']||[];state['selectedEnvData']['external_connections']=_0x1132a2['filter'](_0x460bf0=>_0x460bf0['id']!==_0x11b8a7),Utils['showSuccess']('Connection\x20removed\x20(click\x20Save\x20to\x20persist\x20changes)'),closeDeleteConnectionModal(),renderConnections(),markAsModified();}function openIbmiHelperDialog(){const _0x44846d=document['getElementById']('connection-user')['value']['trim']()||'{USER}',_0x44c6ae=_0x44846d['toUpperCase'](),_0x68b55=_0x44846d['toLowerCase'](),_0x2a99aa=document['getElementById']('connection-password')['value'],_0x1be9cb=_0x2a99aa&&_0x2a99aa!=='***'?_0x2a99aa:'',_0x93f75f=['CRTUSRPRF\x20USRPRF('+_0x44c6ae+')\x20PASSWORD('+_0x1be9cb+')\x20USRCLS(*USER)\x20INLMNU(*SIGNOFF)\x20LMTCPB(*YES)\x20TEXT(\x27CoderFlow\x20service\x20account\x27)\x20SPCAUT(*NONE)\x20JOBD(JOB_DESCRIPTION)','CRTDIR\x20DIR(\x27/home/'+_0x68b55+'\x27)','CHGOWN\x20OBJ(\x27/home/'+_0x68b55+'\x27)\x20NEWOWN('+_0x44c6ae+')','QSH\x20CMD(\x27chmod\x20755\x20/home/'+_0x68b55+'\x27)'],_0x5690e8=document['getElementById']('ibmi-helper-commands');_0x5690e8['innerHTML']='',_0x93f75f['forEach'](_0x28f1d9=>{const _0xeb1e2b=document['createElement']('div');_0xeb1e2b['className']='command-line';const _0x25110f=document['createElement']('code');_0x25110f['textContent']=_0x28f1d9;const _0x1161e7=document['createElement']('button');_0x1161e7['type']='button',_0x1161e7['className']='btn-icon\x20copy-btn',_0x1161e7['title']='Copy',_0x1161e7['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>',_0x1161e7['addEventListener']('click',()=>{navigator['clipboard']['writeText'](_0x28f1d9)['then'](()=>{_0x1161e7['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(()=>{_0x1161e7['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);});}),_0xeb1e2b['appendChild'](_0x25110f),_0xeb1e2b['appendChild'](_0x1161e7),_0x5690e8['appendChild'](_0xeb1e2b);}),document['getElementById']('ibmi-helper-modal')['hidden']=![];}function resetPasswordToggleIcon(){const _0x50156e=document['getElementById']('connection-password-toggle');_0x50156e['querySelector']('.eye-open')['style']['display']='',_0x50156e['querySelector']('.eye-closed')['style']['display']='none';}function toggleConnectionPasswordVisibility(){const _0x5cb0d6=document['getElementById']('connection-password'),_0x650df=document['getElementById']('connection-password-toggle'),_0x13b84f=_0x5cb0d6['type']==='password';_0x5cb0d6['type']=_0x13b84f?'text':'password',_0x650df['querySelector']('.eye-open')['style']['display']=_0x13b84f?'none':'',_0x650df['querySelector']('.eye-closed')['style']['display']=_0x13b84f?'':'none';}function resetSshKeyVisibility(_0x3aa1b5){sshKeyValueStore=_0x3aa1b5,sshKeyValueVisible=![],sshKeyLastCursorPosition=0x0;const _0x167fd6=document['getElementById']('connection-ssh-private-key'),_0x54d4ef=document['querySelector']('.connection-ssh-key-toggle');_0x167fd6&&(_0x167fd6['value']=_0x3aa1b5?'•'['repeat'](_0x3aa1b5['length']):''),_0x54d4ef&&(_0x54d4ef['hidden']=![],_0x54d4ef['querySelector']('.eye-open')['style']['display']='block',_0x54d4ef['querySelector']('.eye-closed')['style']['display']='none');}function toggleSshKeyVisibility(){const _0x28585c=document['getElementById']('connection-ssh-private-key'),_0x325f5a=document['querySelector']('.connection-ssh-key-toggle');sshKeyValueVisible=!sshKeyValueVisible,sshKeyValueVisible?(_0x28585c['value']=sshKeyValueStore,_0x325f5a['querySelector']('.eye-open')['style']['display']='none',_0x325f5a['querySelector']('.eye-closed')['style']['display']='block'):(_0x28585c['value']=sshKeyValueStore?'•'['repeat'](sshKeyValueStore['length']):'',_0x325f5a['querySelector']('.eye-open')['style']['display']='block',_0x325f5a['querySelector']('.eye-closed')['style']['display']='none');}function handleSshKeyBeforeInput(_0x3698b7){if(!sshKeyValueVisible){const _0x13a13f=_0x3698b7['target'];sshKeyLastCursorPosition=_0x13a13f['selectionStart'],_0x13a13f['dataset']['selectionEnd']=_0x13a13f['selectionEnd'];}}function handleSshKeyInput(_0x342323){const _0x48e188=_0x342323['target'];if(sshKeyValueVisible)sshKeyValueStore=_0x48e188['value'];else{const _0x191200=_0x342323['inputType'],_0x5add07=_0x48e188['value'],_0x3364='•',_0x4be90c=_0x48e188['selectionStart'],_0x4e6c26=_0x5add07['replace'](new RegExp(_0x3364,'g'),''),_0x1d7ff9=sshKeyValueStore['length'],_0x418e41=sshKeyLastCursorPosition,_0x1ca1f2=parseInt(_0x48e188['dataset']['selectionEnd']||_0x418e41),_0x221679=_0x1ca1f2>_0x418e41;if(_0x5add07==='')sshKeyValueStore='',sshKeyLastCursorPosition=0x0;else{if(_0x191200&&_0x191200['startsWith']('delete')){if(_0x221679)sshKeyValueStore=sshKeyValueStore['slice'](0x0,_0x418e41)+sshKeyValueStore['slice'](_0x1ca1f2),sshKeyLastCursorPosition=_0x418e41;else{const _0x23b362=_0x1d7ff9-_0x5add07['length'];_0x191200==='deleteContentBackward'?sshKeyValueStore=sshKeyValueStore['slice'](0x0,_0x4be90c)+sshKeyValueStore['slice'](_0x4be90c+_0x23b362):sshKeyValueStore=sshKeyValueStore['slice'](0x0,_0x4be90c)+sshKeyValueStore['slice'](_0x4be90c+_0x23b362),sshKeyLastCursorPosition=_0x4be90c;}}else{if(_0x4e6c26['length']>0x0){const _0x29a371=_0x5add07['length']-_0x4e6c26['length'];if(_0x29a371===0x0)sshKeyValueStore=_0x4e6c26,sshKeyLastCursorPosition=_0x4e6c26['length'];else _0x221679?(sshKeyValueStore=sshKeyValueStore['slice'](0x0,_0x418e41)+_0x4e6c26+sshKeyValueStore['slice'](_0x1ca1f2),sshKeyLastCursorPosition=_0x418e41+_0x4e6c26['length']):(sshKeyValueStore=sshKeyValueStore['slice'](0x0,_0x418e41)+_0x4e6c26+sshKeyValueStore['slice'](_0x418e41),sshKeyLastCursorPosition=_0x418e41+_0x4e6c26['length']);}else _0x5add07['length']<_0x1d7ff9?(sshKeyValueStore=sshKeyValueStore['slice'](0x0,_0x5add07['length']),sshKeyLastCursorPosition=_0x4be90c):sshKeyLastCursorPosition=_0x4be90c;}}const _0x3eaab8=_0x3364['repeat'](sshKeyValueStore['length']);_0x48e188['value']=_0x3eaab8,_0x48e188['setSelectionRange'](sshKeyLastCursorPosition,sshKeyLastCursorPosition),delete _0x48e188['dataset']['selectionEnd'];}}function handleSshKeyFileImport(_0x2dd616){const _0x1d42d5=_0x2dd616['target']['files'][0x0];if(!_0x1d42d5)return;const _0x1ffc84=new FileReader();_0x1ffc84['onload']=function(_0x1fc390){const _0x359ae8=_0x1fc390['target']['result'];sshKeyValueStore=_0x359ae8,sshKeyValueVisible=!![],document['getElementById']('connection-ssh-private-key')['value']=_0x359ae8;const _0x4343ff=document['querySelector']('.connection-ssh-key-toggle');_0x4343ff&&(_0x4343ff['querySelector']('.eye-open')['style']['display']='none',_0x4343ff['querySelector']('.eye-closed')['style']['display']='block');},_0x1ffc84['onerror']=function(){Utils['showError']('Failed\x20to\x20read\x20file');},_0x1ffc84['readAsText'](_0x1d42d5),_0x2dd616['target']['value']='';}function handleSshPubKeyFileImport(_0x24e8bc){const _0x8bf95d=_0x24e8bc['target']['files'][0x0];if(!_0x8bf95d)return;const _0x30e99f=new FileReader();_0x30e99f['onload']=function(_0x1b0b54){document['getElementById']('connection-ssh-public-key')['value']=_0x1b0b54['target']['result'],updateConnectionFormVisibility();},_0x30e99f['onerror']=function(){Utils['showError']('Failed\x20to\x20read\x20file');},_0x30e99f['readAsText'](_0x8bf95d),_0x24e8bc['target']['value']='';}async function generateKeypair(){try{const _0x51aa62=await API['post']('/environments/'+state['selectedEnv']+'/connections/generate-keypair');sshKeyValueStore=_0x51aa62['privateKey'],sshKeyValueVisible=!![],document['getElementById']('connection-ssh-private-key')['value']=_0x51aa62['privateKey'];const _0x44ab90=document['querySelector']('.connection-ssh-key-toggle');_0x44ab90&&(_0x44ab90['querySelector']('.eye-open')['style']['display']='none',_0x44ab90['querySelector']('.eye-closed')['style']['display']='block'),document['getElementById']('connection-ssh-public-key')['value']=_0x51aa62['publicKey'],updateConnectionFormVisibility(),Utils['showSuccess']('SSH\x20keypair\x20generated');}catch(_0x5a511a){Utils['showError'](_0x5a511a['message']||'Failed\x20to\x20generate\x20keypair');}}function showConnectionTestResult(_0x4937b7,_0x2014ff,_0x41115d){const _0x5e5999=document['getElementById']('connection-test-spinner'),_0x1658e3=document['getElementById']('connection-test-result');_0x5e5999['hidden']=!![];let _0x4a3d78='<div\x20class=\x22test-result-title\x22>'+Utils['escapeHtml'](_0x2014ff)+'</div>';_0x41115d&&(_0x4a3d78+='<div\x20class=\x22test-result-detail\x22>'+Utils['escapeHtml'](_0x41115d)+'</div>'),_0x1658e3['innerHTML']=_0x4a3d78,_0x1658e3['className']='connection-test-result\x20'+(_0x4937b7?'success':'error'),_0x1658e3['hidden']=![];}function clearConnectionTestResult(){document['getElementById']('connection-test-spinner')['hidden']=!![];const _0x204db5=document['getElementById']('connection-test-result');_0x204db5['hidden']=!![],_0x204db5['innerHTML']='',_0x204db5['className']='connection-test-result';}async function testConnection(_0x4051de){const _0x5c1a2c=state['editingConnection']||'_unsaved',_0x13273d=document['getElementById']('connection-test-spinner');clearConnectionTestResult(),_0x13273d['hidden']=![];try{const _0x317f60=document['querySelector']('input[name=\x22connection-type\x22]:checked')?.['value'],_0x38642e={'testType':_0x4051de,'type':_0x317f60,'host':document['getElementById']('connection-host')['value']['trim'](),'user':document['getElementById']('connection-user')['value']['trim']()};_0x317f60==='ibmi'&&(_0x38642e['features']=['sql','build','ssh','sync']['filter'](_0x4adea8=>document['getElementById']('feature-'+_0x4adea8)['checked']));_0x4051de==='sql'?(_0x38642e['password']=document['getElementById']('connection-password')['value'],_0x38642e['database']=document['getElementById']('connection-database')['value']['trim'](),!document['getElementById']('connection-verify-cert')['checked']&&(_0x38642e['verify_db_server_certificate']=![])):_0x38642e['ssh_private_key']=sshKeyValueStore;const _0x31f464=await API['post']('/environments/'+state['selectedEnv']+'/connections/'+_0x5c1a2c+'/test',_0x38642e);showConnectionTestResult(!![],_0x31f464['message']||'Connection\x20successful');}catch(_0x43db9c){showConnectionTestResult(![],_0x43db9c['message']||'Connection\x20failed',_0x43db9c['detail']);}}function openInstallKeyModal(){const _0xb7e8dc=document['getElementById']('connection-host')['value']['trim'](),_0x55e9bb=document['getElementById']('connection-user')['value']['trim'](),_0x4d1acc=document['getElementById']('connection-ssh-public-key')['value']['trim']();if(!_0xb7e8dc||!_0x55e9bb){showConnectionTestResult(![],'Host\x20and\x20user\x20are\x20required\x20to\x20install\x20the\x20public\x20key');return;}if(!_0x4d1acc||_0x4d1acc==='***'){showConnectionTestResult(![],'A\x20public\x20key\x20is\x20required\x20to\x20install');return;}const _0x365d6c=document['getElementById']('connection-password')['value'],_0x5a0199=document['getElementById']('connection-password-row'),_0x53a277=document['getElementById']('install-key-password');_0x53a277['value']=!_0x5a0199['hidden']&&_0x365d6c&&_0x365d6c!=='***'?_0x365d6c:'',_0x53a277['type']='password';const _0x2177a9=document['getElementById']('install-key-password-toggle');_0x2177a9['querySelector']('.eye-open')['style']['display']='',_0x2177a9['querySelector']('.eye-closed')['style']['display']='none';const _0x31bfe6=document['getElementById']('install-key-result');_0x31bfe6['hidden']=!![],_0x31bfe6['innerHTML']='',_0x31bfe6['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 _0x3483d2=document['getElementById']('install-key-password')['value'];if(!_0x3483d2){const _0x45f1d2=document['getElementById']('install-key-result');_0x45f1d2['innerHTML']='<div\x20class=\x22test-result-title\x22>'+Utils['escapeHtml']('Password\x20is\x20required')+'</div>',_0x45f1d2['className']='connection-test-result\x20error',_0x45f1d2['hidden']=![];return;}const _0x4e4843=state['editingConnection']||'_unsaved',_0x43c6a3=document['getElementById']('connection-host')['value']['trim'](),_0x1eef45=document['getElementById']('connection-user')['value']['trim'](),_0x229859=document['getElementById']('connection-ssh-public-key')['value']['trim'](),_0x1d984=document['getElementById']('install-key-result');_0x1d984['innerHTML']='Installing...',_0x1d984['className']='connection-test-result',_0x1d984['hidden']=![],document['getElementById']('install-key-confirm-btn')['disabled']=!![];try{const _0x53c68c={'host':_0x43c6a3,'user':_0x1eef45,'password':_0x3483d2,'public_key':_0x229859},_0x2d14fe=await API['post']('/environments/'+state['selectedEnv']+'/connections/'+_0x4e4843+'/install-public-key',_0x53c68c);_0x1d984['innerHTML']='<div\x20class=\x22test-result-title\x22>'+Utils['escapeHtml'](_0x2d14fe['message']||'Public\x20key\x20installed\x20successfully')+'</div>',_0x1d984['className']='connection-test-result\x20success';}catch(_0x4a5336){let _0x401be4='<div\x20class=\x22test-result-title\x22>'+Utils['escapeHtml'](_0x4a5336['message']||'Failed\x20to\x20install\x20public\x20key')+'</div>';_0x4a5336['detail']&&(_0x401be4+='<div\x20class=\x22test-result-detail\x22>'+Utils['escapeHtml'](_0x4a5336['detail'])+'</div>'),_0x1d984['innerHTML']=_0x401be4,_0x1d984['className']='connection-test-result\x20error',document['getElementById']('install-key-confirm-btn')['disabled']=![];}}function getRequiredSkillsForConnection(_0x3dad38){const _0x57262b={'sqlserver':['sql'],'ibmi':{'sql':['sql'],'build':['codermake'],'interactive':['ibmi-interactive-session'],'ssh':['ibmi-clcmd'],'sync':[]},'ssh':[]};if(_0x3dad38['type']==='sqlserver')return[..._0x57262b['sqlserver']];if(_0x3dad38['type']==='ibmi'){const _0x53d6dd=[];for(const _0x55d39d of _0x3dad38['config']?.['features']||[]){const _0x187e83=_0x57262b['ibmi'][_0x55d39d];if(_0x187e83)for(const _0x2a9d1b of _0x187e83){if(!_0x53d6dd['includes'](_0x2a9d1b))_0x53d6dd['push'](_0x2a9d1b);}}return _0x53d6dd;}return[];}function getConnectionRequiredSkills(){const _0x15b21e={'sqlserver':['sql'],'ibmi':{'sql':['sql'],'build':['codermake'],'interactive':['ibmi-interactive-session'],'ssh':['ibmi-clcmd'],'sync':[]},'ssh':[]},_0x2aacbd=new Set();for(const _0x3bdfa8 of state['selectedEnvData']?.['external_connections']||[]){if(_0x3bdfa8['type']==='sqlserver')_0x15b21e['sqlserver']['forEach'](_0xc99e71=>_0x2aacbd['add'](_0xc99e71));else{if(_0x3bdfa8['type']==='ibmi')for(const _0x282be7 of _0x3bdfa8['config']?.['features']||[]){const _0xc7c5bd=_0x15b21e['ibmi'][_0x282be7];if(_0xc7c5bd)_0xc7c5bd['forEach'](_0x55b071=>_0x2aacbd['add'](_0x55b071));}}}return _0x2aacbd;}async function autoImportConnectionSkills(_0xdd161e){const _0x252801=state['selectedEnvData']?.['skills']||[];for(const _0x3c4303 of _0xdd161e){if(_0x252801['includes'](_0x3c4303))continue;try{await API['post']('/external-skills/import/catalog',{'skillId':_0x3c4303});}catch(_0x3b119b){console['debug']('Skill\x20import\x20(may\x20already\x20exist):',_0x3c4303,_0x3b119b['message']);}!_0x252801['includes'](_0x3c4303)&&_0x252801['push'](_0x3c4303);}state['selectedEnvData']&&(state['selectedEnvData']['skills']=_0x252801,markAsModified(),renderEnvironmentSkills());}function debounce(_0x1ddccc,_0x2ea682){let _0x55a9d3;return function _0x25ddc7(..._0x55407c){const _0x38ff00=()=>{clearTimeout(_0x55a9d3),_0x1ddccc(..._0x55407c);};clearTimeout(_0x55a9d3),_0x55a9d3=setTimeout(_0x38ff00,_0x2ea682);};}window['markAsModified']=function(){state['hasUnsavedChanges']=!![],updateButtonStates();};function updateButtonStates(){const _0x36b11c=document['getElementById']('save-btn'),_0x1ca431=document['getElementById']('repo-commit-btn'),_0x294eed=document['getElementById']('repo-discard-btn');_0x36b11c&&(_0x36b11c['disabled']=!state['hasUnsavedChanges']);_0x1ca431&&(_0x1ca431['disabled']=state['modifiedFiles']['size']===0x0);if(_0x294eed){const _0x1acbec=state['changedFiles']&&state['changedFiles']['length']>0x0;_0x294eed['disabled']=!_0x1acbec;}}async function saveChanges(){if(!state['hasUnsavedChanges'])return;if(state['currentRepo']!==null&&document['getElementById']('edit-repo-provider')){const _0x30d448=validateEditRepoForm();if(_0x30d448['length']>0x0){Utils['showError'](_0x30d448[0x0]);return;}}try{const _0x38c366=document['getElementById']('save-btn');_0x38c366['disabled']=!![],_0x38c366['innerHTML']='<span>⏳</span>\x20Saving...';const _0x20747e=await saveCurrentState(),_0x107a59=[];_0x20747e['modifiedEnvironmentJson']&&_0x107a59['push']('environment.json');_0x20747e['modifiedTests']&&_0x107a59['push']('tests.json');const _0x7cbd4b=_0x25d26a=>{return monacoEditors['has'](_0x25d26a)||window['MarkdownFileEditor']&&window['MarkdownFileEditor']['editors']['has'](_0x25d26a);};if(state['currentTab']==='agents')_0x107a59['push']('AGENTS.md');else{if(state['currentTab']==='files')_0x107a59['push'](state['currentFile']);else{if(state['currentTab']==='build')monacoEditors['has']('script-editor')&&_0x107a59['push'](currentScript);else state['currentTab']==='overview'&&(_0x7cbd4b('readme-editor')&&_0x107a59['push']('README.md'));}}_0x20747e['modifiedDeployProfile']&&_0x107a59['push']('deployment-profiles/'+_0x20747e['modifiedDeployProfile']+'.sh'),_0x107a59['forEach'](_0xb7539f=>state['modifiedFiles']['add'](_0xb7539f)),state['hasUnsavedChanges']=![],updateButtonStates(),await refreshRepositoryGitStatus(),Utils['showSuccess']('Changes\x20saved\x20to\x20files'),_0x38c366['innerHTML']='<span>💾</span>\x20Save';}catch(_0x4de466){console['error']('Save\x20failed:',_0x4de466);const _0x34313f=_0x4de466['message']&&(_0x4de466['message']['includes']('Invalid\x20JSON\x20in\x20Parameters\x20field')||_0x4de466['message']['includes']('Invalid\x20JSON\x20in\x20template\x20metadata'));!_0x34313f&&Utils['showError']('Failed\x20to\x20save\x20changes');const _0x3ace60=document['getElementById']('save-btn');_0x3ace60['disabled']=![],_0x3ace60['innerHTML']='<span>💾</span>\x20Save';}}async function saveCurrentState(){const _0x16f886={'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']||[]},_0x1bf37d=document['getElementById']('rebuild-schedule-enabled-build-tab')['checked'];_0x1bf37d?_0x16f886['rebuild_schedule']={'enabled':!![],'interval_hours':parseInt(document['getElementById']('rebuild-interval-build-tab')['value'],0xa)}:_0x16f886['rebuild_schedule']={'enabled':![]};monacoEditors['has']('script-editor')&¤tScript&&(currentScript==='pre-clone'||currentScript==='post-clone')&&saveCurrentScriptToState();const _0x580384=state['selectedEnvData']['docker_config'],_0x20345d=_0x580384&&(Object['prototype']['hasOwnProperty']['call'](_0x580384,'pre_clone_instructions')||Object['prototype']['hasOwnProperty']['call'](_0x580384,'post_clone_instructions'));_0x20345d&&(_0x16f886['docker_config']={'pre_clone_instructions':_0x580384['pre_clone_instructions']||'','post_clone_instructions':_0x580384['post_clone_instructions']||''});const _0x311332=[...state['selectedEnvData']['repos']||[]];state['selectedEnvData']['repos']=_0x311332,persistCurrentRepoFormChanges(),_0x16f886['repos']=_0x311332;const _0x111bff={...state['selectedEnvData']['tests']};if(state['currentTest']!==null&&document['getElementById']('test-description')){const _0x1c3680=document['getElementById']('test-command')['value']['trim']();let _0x19b0de;const _0x591683=_0x1c3680['split']('\x0a')['filter'](_0x4f419c=>_0x4f419c['trim']());if(_0x591683['length']>0x1)_0x19b0de={'commands':_0x591683};else _0x591683['length']===0x1?_0x19b0de={'command':_0x591683[0x0]}:_0x19b0de={'command':''};const _0x375ce4=state['selectedEnvData']['tests'][state['currentTest']],_0x2e4b7f=_0x375ce4?.['parameters']&&Object['keys'](_0x375ce4['parameters'])['length']>0x0?{'parameters':_0x375ce4['parameters']}:{};_0x111bff[state['currentTest']]={..._0x111bff[state['currentTest']],'description':document['getElementById']('test-description')['value'],..._0x19b0de,..._0x2e4b7f};}_0x16f886['tests']=_0x111bff;const _0x1b9eb4=document['getElementById']('server-name');if(_0x1b9eb4){const _0x11d2b6=document['getElementById']('server-enabled'),_0x29a64b=document['getElementById']('server-proxy'),_0x33af4c={...state['selectedEnvData']['application_server'],'enabled':_0x11d2b6['disabled']?!![]:_0x11d2b6['checked'],'name':_0x1b9eb4['disabled']?state['selectedEnvData']['application_server']?.['name']||'':_0x1b9eb4['value']},_0xe52f7e=monacoEditors['get']('server-command-editor'),_0x1f0883=_0xe52f7e?_0xe52f7e['getValue']()['trim']():'';_0x1f0883?_0x33af4c['start_command']=_0x1f0883:delete _0x33af4c['start_command'];const _0x7ed5c8=_0x29a64b['disabled']?(state['selectedEnvData']['application_server']?.['proxy']||'')['trim']():_0x29a64b['value']['trim']();_0x7ed5c8?_0x33af4c['proxy']=_0x7ed5c8:delete _0x33af4c['proxy'];const _0x5d90b2=document['getElementById']('server-qa-url')['value']['trim']();_0x5d90b2?_0x33af4c['qa_url']=_0x5d90b2:delete _0x33af4c['qa_url'];const _0x4772f3=collectPortQaUrlsFromForm();Object['keys'](_0x4772f3)['length']>0x0?_0x33af4c['port_qa_urls']=_0x4772f3:delete _0x33af4c['port_qa_urls'];const _0x4889f8=document['getElementById']('server-auth-user-property')['value']['trim'](),_0x2a4eb1=document['getElementById']('server-auth-password-property')['value']['trim']();if(_0x4889f8||_0x2a4eb1){_0x33af4c['basic_auth']={};if(_0x4889f8)_0x33af4c['basic_auth']['user_property']=_0x4889f8;if(_0x2a4eb1)_0x33af4c['basic_auth']['password_property']=_0x2a4eb1;}else delete _0x33af4c['basic_auth'];const _0x555ad7=document['getElementById']('ports-list');if(_0x555ad7){const _0x450faf=_0x555ad7['querySelectorAll']('.config-item'),_0x5a17d7=[];_0x450faf['forEach'](_0x2b3de4=>{const _0x273a61=_0x2b3de4['querySelectorAll']('input');if(_0x273a61['length']>=0x2){const _0x4e3b7c=_0x273a61[0x0]['value']['trim'](),_0x1e78fd=_0x273a61[0x1]['value']['trim']();(_0x4e3b7c||_0x1e78fd)&&_0x5a17d7['push']({'internal':_0x4e3b7c?parseInt(_0x4e3b7c,0xa):'','name':_0x1e78fd});}}),_0x5a17d7['length']>0x0?_0x33af4c['ports']=_0x5a17d7:delete _0x33af4c['ports'];}const _0x546caa=collectURLsFromForm(![]);_0x546caa['length']>0x0?_0x33af4c['launch_urls']=_0x546caa:delete _0x33af4c['launch_urls'];const _0x1d3471=document['getElementById']('proxy-headers-list');if(_0x1d3471){const _0x2f87fb=_0x1d3471['querySelectorAll']('.config-item'),_0x5c3d9c={};_0x2f87fb['forEach'](_0x56fa98=>{const _0xef6074=_0x56fa98['querySelectorAll']('input');if(_0xef6074['length']>=0x2){const _0x4fe5bb=_0xef6074[0x0]['value']['trim'](),_0x9528b7=_0xef6074[0x1]['value']['trim']();_0x4fe5bb&&_0x9528b7&&(_0x5c3d9c[_0x4fe5bb]=_0x9528b7);}}),Object['keys'](_0x5c3d9c)['length']>0x0?_0x33af4c['proxy_headers']=_0x5c3d9c:delete _0x33af4c['proxy_headers'];}const _0x916266=_0x33af4c['name']||_0x33af4c['start_command']||_0x33af4c['proxy']||_0x33af4c['qa_url']||_0x33af4c['basic_auth']||_0x33af4c['ports']?.['length']>0x0||_0x33af4c['launch_urls']?.['length']>0x0||Object['keys'](_0x33af4c['proxy_headers']||{})['length']>0x0;_0x916266?_0x16f886['application_server']=_0x33af4c:_0x16f886['application_server']=null;}_0x16f886['volume_mounts']=state['selectedEnvData']['volume_mounts']||[];state['selectedEnvData']['external_connections']!==undefined&&(_0x16f886['external_connections']=state['selectedEnvData']['external_connections']);const _0x129771=_0x47e665=>{return monacoEditors['has'](_0x47e665)||window['MarkdownFileEditor']&&window['MarkdownFileEditor']['editors']['has'](_0x47e665);};if(_0x129771('agents-editor')){const _0x446222=getMonacoValue('agents-editor');await API['post']('/environments/'+state['selectedEnv']+'/files/AGENTS.md',{'content':_0x446222}),state['selectedEnvData']['agentsContent']=_0x446222;}if(_0x129771('readme-editor')){const _0x21e8fc=getMonacoValue('readme-editor');await API['post']('/environments/'+state['selectedEnv']+'/files/README.md',{'content':_0x21e8fc}),state['selectedEnvData']['readmeContent']=_0x21e8fc;}if(_0x129771('file-editor')&&state['currentFile']){const _0x278e91=getMonacoValue('file-editor');await API['post']('/environments/'+state['selectedEnv']+'/files/'+state['currentFile'],{'content':_0x278e91}),!state['selectedEnvData']['files']&&(state['selectedEnvData']['files']={}),state['selectedEnvData']['files'][state['currentFile']]=_0x278e91;}if(monacoEditors['has']('script-editor')&¤tScript){saveCurrentScriptToState();if(currentScript==='pre-clone'||currentScript==='post-clone'){}else{const _0x47c553=getMonacoValue('script-editor');await API['post']('/environments/'+state['selectedEnv']+'/files/'+currentScript,{'content':_0x47c553}),!state['selectedEnvData']['files']&&(state['selectedEnvData']['files']={}),state['selectedEnvData']['files'][currentScript]=_0x47c553;}}const _0x4aecbe=(state['selectedEnvData']['templates']||[])['map'](_0x5857c6=>_0x5857c6['filename']),_0x4dad4e=state['originalTemplates']||[],_0x20d5e5=_0x4aecbe['filter'](_0xee610=>!_0x4dad4e['includes'](_0xee610)),_0x52251a=_0x4dad4e['filter'](_0xa58788=>!_0x4aecbe['includes'](_0xa58788));for(const _0x3eb2a of _0x20d5e5){const _0x4e89f0=state['selectedEnvData']['templates']['find'](_0x158561=>_0x158561['filename']===_0x3eb2a);if(_0x4e89f0){await API['post']('/environments/'+state['selectedEnv']+'/files/task-templates/'+_0x3eb2a,{'content':_0x4e89f0['content']||''});const _0x42d37c=_0x3eb2a['replace'](/\.md$/,'.json'),_0x1c4580={'title':_0x4e89f0['title'],'description':_0x4e89f0['description'],'parameters':_0x4e89f0['parameters']||[]};await API['post']('/environments/'+state['selectedEnv']+'/files/task-templates/'+_0x42d37c,{'content':JSON['stringify'](_0x1c4580,null,0x2)});}}for(const _0x3f5ab3 of _0x52251a){const _0x5525d9=_0x3f5ab3['replace'](/\.md$/,'.json');await API['delete']('/environments/'+state['selectedEnv']+'/files/task-templates/'+_0x3f5ab3),await API['delete']('/environments/'+state['selectedEnv']+'/files/task-templates/'+_0x5525d9);}if(state['currentTemplate']!==null&&state['currentTemplateData']){const _0x4c5a22=state['selectedEnvData']['templates'][state['currentTemplate']],_0x474821=_0x129771('template-md-editor')?getMonacoValue('template-md-editor'):state['currentTemplateData']['content']||'',_0x5e9f6d=document['getElementById']('template-edit-title'),_0x117dc6=document['getElementById']('template-edit-description'),_0x284525={'title':_0x5e9f6d?_0x5e9f6d['value']:state['currentTemplateData']['title'],'description':_0x117dc6?_0x117dc6['value']:state['currentTemplateData']['description'],'parameters':state['currentTemplateData']['parameters']||{}};await API['post']('/environments/'+state['selectedEnv']+'/files/task-templates/'+_0x4c5a22['filename'],{'content':_0x474821});const _0x1487f2=_0x4c5a22['filename']['replace'](/\.md$/,'.json'),_0x537b65=_0x284525['title']||_0x284525['description']||_0x284525['parameters']&&Object['keys'](_0x284525['parameters'])['length']>0x0;_0x537b65&&await API['post']('/environments/'+state['selectedEnv']+'/files/task-templates/'+_0x1487f2,{'content':JSON['stringify'](_0x284525,null,0x2)}),state['selectedEnvData']['templates'][state['currentTemplate']]={..._0x4c5a22,'content':_0x474821,..._0x284525};}state['originalTemplates']=_0x4aecbe;let _0x5b7928=null;if(state['profileHasUnsavedChanges']&&state['currentDeployProfile']&&state['currentDeployProfileData']){const _0x151b8f=state['currentDeployProfile'],_0x483a97=document['getElementById']('profile-description')?.['value']['trim']()||'',_0x30cc0a=state['profileScriptEditor']?state['profileScriptEditor']['getValue']():'',_0xff8497=state['currentDeployProfileData']['env_vars']||[],_0x5ec41d=state['currentDeployProfileData']['secrets']||[],_0x466298=state['currentDeployProfileData']['parameters']||{};await API['put']('/environments/'+state['selectedEnv']+'/deployment-profiles/'+_0x151b8f,{'description':_0x483a97,'scriptContent':_0x30cc0a,'env_vars':_0xff8497,'secrets':_0x5ec41d,'parameters':_0x466298}),_0x5b7928=_0x151b8f,state['profileHasUnsavedChanges']=![];}return await API['put']('/environments/'+state['selectedEnv'],_0x16f886),Object['assign'](state['selectedEnvData'],_0x16f886),{'modifiedEnvironmentJson':!![],'modifiedTests':_0x16f886['tests']!==undefined,'modifiedDeployProfile':_0x5b7928};}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 _0x398682=document['getElementById']('new-env-repo-source-provider');newEnvRepoAutocomplete&&(newEnvRepoAutocomplete['reset'](),newEnvRepoAutocomplete['disable']());const _0x1292f2=document['getElementById']('new-env-repo-credential-mode');_0x1292f2&&(_0x1292f2['value']='app');try{const _0x2bf4fa=await API['get']('/settings/git-providers');_0x398682['innerHTML']='<option\x20value=\x22\x22>--\x20Select\x20a\x20provider\x20--</option>';for(const _0x1b6c29 of _0x2bf4fa['providers']||[]){_0x398682['innerHTML']+='<option\x20value=\x22'+Utils['escapeHtml'](_0x1b6c29['name'])+'\x22>'+Utils['escapeHtml'](_0x1b6c29['name'])+'</option>';}}catch(_0x1cb5ea){console['error']('Failed\x20to\x20load\x20git\x20providers:',_0x1cb5ea),_0x398682['innerHTML']='<option\x20value=\x22\x22>--\x20No\x20providers\x20available\x20--</option>';}if(!newEnvAgentSelect){const _0x4edb0a=document['getElementById']('new-env-agent-wrapper');_0x4edb0a['innerHTML']='';const _0x1e8e0f=document['createElement']('select');_0x1e8e0f['id']='new-env-agent',_0x1e8e0f['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',_0x4edb0a['appendChild'](_0x1e8e0f),newEnvAgentSelect=new CustomSelect(_0x1e8e0f,{'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(_0x22eb83){const _0x18e44a=_0x22eb83['value'],_0x49b26c=document['getElementById']('new-env-repo-url-row'),_0x4aa9f0=document['getElementById']('new-env-repo-provider-selection'),_0x5d4c8a=document['getElementById']('new-env-repo-url'),_0x2e02fc=document['getElementById']('new-env-repo-source-provider');if(_0x18e44a==='none')_0x49b26c['hidden']=!![],_0x4aa9f0['hidden']=!![],_0x5d4c8a['value']='',newEnvRepoAutocomplete&&(newEnvRepoAutocomplete['reset'](),newEnvRepoAutocomplete['disable']());else{if(_0x18e44a==='manual')_0x49b26c['hidden']=![],_0x4aa9f0['hidden']=!![],_0x5d4c8a['value']='',newEnvRepoAutocomplete&&(newEnvRepoAutocomplete['reset'](),newEnvRepoAutocomplete['disable']());else _0x18e44a==='provider'&&(_0x49b26c['hidden']=!![],_0x4aa9f0['hidden']=![],_0x2e02fc['value']='',initNewEnvRepoAutocomplete());}},window['onNewEnvRepoProviderChange']=async function(){const _0x1b553f=document['getElementById']('new-env-repo-source-provider')['value'];if(!_0x1b553f){newEnvRepoAutocomplete&&(newEnvRepoAutocomplete['reset'](),newEnvRepoAutocomplete['disable']());return;}newEnvRepoAutocomplete&&(newEnvRepoAutocomplete['reset'](),newEnvRepoAutocomplete['enable'](),newEnvRepoAutocomplete['preloadData']());};function initNewEnvRepoAutocomplete(){const _0x216a76=document['getElementById']('new-env-repo-autocomplete-container');if(!_0x216a76)return;newEnvRepoAutocomplete&&newEnvRepoAutocomplete['destroy'](),newEnvRepoAutocomplete=new AutocompleteSelect(_0x216a76,{'placeholder':'Search\x20for\x20a\x20repository','maxItems':0x64,'emptyMessage':'No\x20repositories\x20found','loadingMessage':'Loading\x20repositories...','preload':![],'searchMode':'server','loadItems':async _0x5ca43b=>{const _0x1a96e5=document['getElementById']('new-env-repo-source-provider')['value'];if(!_0x1a96e5)return[];try{let _0x1a957a='/settings/git-providers/'+encodeURIComponent(_0x1a96e5)+'/repositories?limit=100';_0x5ca43b&&_0x5ca43b['trim']()&&(_0x1a957a+='&search='+encodeURIComponent(_0x5ca43b['trim']()));const _0x1db560=await API['get'](_0x1a957a);return _0x1db560['repositories']||[];}catch(_0x8d5e13){console['error']('Failed\x20to\x20load\x20repositories:',_0x8d5e13);throw _0x8d5e13;}},'renderItem':_0x54fc30=>{const _0x35c82b=_0x54fc30['private']===!![];let _0x2cd7b3=_0x54fc30['description']||'no\x20description';return _0x54fc30['descriptionSource']==='project'&&_0x54fc30['description']&&(_0x2cd7b3='Project:\x20'+_0x54fc30['description']),{'primary':_0x54fc30['full_name']||_0x54fc30['name'],'secondary':_0x2cd7b3,'icon':_0x35c82b?REPO_ICON_PRIVATE:REPO_ICON_PUBLIC,'iconClass':_0x35c82b?'icon-private':'icon-public'};},'sortItems':_0x2664f5=>{return _0x2664f5['sort']((_0xe5a8ba,_0x268345)=>{const _0x336183=(_0xe5a8ba['full_name']||_0xe5a8ba['name']||'')['toLowerCase'](),_0x388abe=(_0x268345['full_name']||_0x268345['name']||'')['toLowerCase']();return _0x336183['localeCompare'](_0x388abe);});},'getItemValue':_0xb72932=>_0xb72932['clone_url']||_0xb72932['url'],'onSelect':_0x5e1f78=>{}}),newEnvRepoAutocomplete['disable']();}function showNewEnvError(_0x286e6b){const _0x48b4fd=document['getElementById']('new-env-error');_0x48b4fd['textContent']=_0x286e6b,_0x48b4fd['hidden']=![];}function hideNewEnvError(){document['getElementById']('new-env-error')['hidden']=!![];}async function confirmCreateEnvironment(){const _0x2897c8=document['getElementById']('new-env-name'),_0x56f17e=document['getElementById']('new-env-image'),_0x58eb12=document['getElementById']('new-env-error'),_0x4e3fb7=_0x2897c8['value']['trim'](),_0x34f2c1=document['getElementById']('new-env-description')['value']['trim'](),_0x1f6826=_0x56f17e['value']['trim'](),_0x6060af=newEnvAgentSelect['selectedValue'],_0x14b2b7=document['querySelector']('input[name=\x22new-env-repo-mode\x22]:checked')['value'],_0xf74048=document['getElementById']('new-env-repo-url')['value']['trim'](),_0xfbae60=newEnvRepoAutocomplete?newEnvRepoAutocomplete['getSelectedItem']():null,_0xcdf55d=_0xfbae60?_0xfbae60['clone_url']||_0xfbae60['url']:'',_0x357a27=document['getElementById']('new-env-repo-source-provider')['value'];_0x2897c8['classList']['remove']('input-error'),_0x56f17e['classList']['remove']('input-error'),_0x58eb12['hidden']=!![];let _0x2a1650=![],_0x4c171a='';if(!_0x4e3fb7)_0x2897c8['classList']['add']('input-error'),_0x2a1650=!![],_0x4c171a='Environment\x20name\x20is\x20required';else!/^[a-z0-9-]+$/['test'](_0x4e3fb7)&&(_0x2897c8['classList']['add']('input-error'),_0x2a1650=!![],_0x4c171a='Environment\x20name\x20must\x20contain\x20only\x20lowercase\x20letters,\x20numbers,\x20and\x20hyphens');if(!_0x1f6826){_0x56f17e['classList']['add']('input-error'),_0x2a1650=!![];if(!_0x4c171a)_0x4c171a='Docker\x20image\x20is\x20required';}if(!_0x6060af){_0x2a1650=!![];if(!_0x4c171a)_0x4c171a='Default\x20agent\x20is\x20required';}if(_0x14b2b7==='provider'){if(!_0x357a27){_0x2a1650=!![];if(!_0x4c171a)_0x4c171a='Please\x20select\x20a\x20Git\x20provider';}else{if(!_0xfbae60){_0x2a1650=!![];if(!_0x4c171a)_0x4c171a='Please\x20select\x20a\x20repository';}}}if(_0x2a1650){_0x58eb12['textContent']=_0x4c171a,_0x58eb12['hidden']=![];return;}const _0x22764c=document['getElementById']('new-env-create-btn');_0x22764c['disabled']=!![],_0x22764c['textContent']='Creating...';try{const _0x5b418e={'name':_0x4e3fb7,'image_name':_0x1f6826,'default_agent':_0x6060af};_0x34f2c1&&(_0x5b418e['description']=_0x34f2c1);if(_0x14b2b7==='manual'&&_0xf74048)_0x5b418e['repo_url']=_0xf74048;else{if(_0x14b2b7==='provider'&&_0xcdf55d){_0x5b418e['repo_url']=_0xcdf55d;const _0x35494e=document['getElementById']('new-env-repo-credential-mode')?.['value']||'app';_0x5b418e['repo_provider']={'provider':_0x357a27,'credential_mode':_0x35494e};}}await API['post']('/environments',_0x5b418e),Utils['showSuccess']('Environment\x20\x22'+_0x4e3fb7+'\x22\x20created\x20successfully'),closeNewEnvModal(),await loadEnvironments(),await refreshRepositoryGitStatus(),state['environments']['find'](_0x2a4f69=>_0x2a4f69['name']===_0x4e3fb7)&&await window['selectEnvironment'](_0x4e3fb7);}catch(_0x44bfe7){console['error']('Failed\x20to\x20create\x20environment:',_0x44bfe7),showNewEnvError(_0x44bfe7['message']||'Unknown\x20error');}finally{_0x22764c['disabled']=![],_0x22764c['textContent']='Create\x20Environment';}}async function deleteEnvironment(){const _0x5ef628=state['selectedEnv'];if(!_0x5ef628){Utils['showError']('No\x20environment\x20selected');return;}document['getElementById']('delete-env-name-display')['textContent']=_0x5ef628,document['getElementById']('delete-env-modal')['hidden']=![];}function closeDeleteEnvModal(){document['getElementById']('delete-env-modal')['hidden']=!![];}async function confirmDeleteEnvironment(){const _0x56efdc=state['selectedEnv'];if(!_0x56efdc){closeDeleteEnvModal();return;}try{await API['delete']('/environments/'+_0x56efdc),Utils['showSuccess']('Environment\x20\x22'+_0x56efdc+'\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(_0x24136f){console['error']('Failed\x20to\x20delete\x20environment:',_0x24136f),Utils['showError']('Failed\x20to\x20delete\x20environment:\x20'+(_0x24136f['message']||'Unknown\x20error')),closeDeleteEnvModal();}}async function cloneEnvironment(){Utils['showToast']('Clone\x20environment\x20coming\x20soon','info');}function openRenameEnvModal(){const _0x4b750c=state['selectedEnv'];if(!_0x4b750c){Utils['showError']('No\x20environment\x20selected');return;}document['getElementById']('rename-env-error')['hidden']=!![],document['getElementById']('rename-env-current')['value']=_0x4b750c,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 _0x1901a3=state['selectedEnv'],_0x103d11=document['getElementById']('rename-env-new')['value']['trim'](),_0x22d90c=document['getElementById']('rename-env-error');if(!_0x103d11){_0x22d90c['textContent']='Please\x20enter\x20a\x20new\x20name',_0x22d90c['hidden']=![];return;}if(!/^[a-z0-9-]+$/['test'](_0x103d11)){_0x22d90c['textContent']='Name\x20must\x20contain\x20only\x20lowercase\x20letters,\x20numbers,\x20and\x20hyphens',_0x22d90c['hidden']=![];return;}if(_0x103d11===_0x1901a3){_0x22d90c['textContent']='New\x20name\x20must\x20be\x20different\x20from\x20current\x20name',_0x22d90c['hidden']=![];return;}if(state['environments']['some'](_0x4c12ad=>_0x4c12ad['name']===_0x103d11)){_0x22d90c['textContent']='An\x20environment\x20with\x20this\x20name\x20already\x20exists',_0x22d90c['hidden']=![];return;}const _0x156b30=document['getElementById']('rename-env-confirm-btn'),_0x4d6146=_0x156b30['textContent'];try{_0x156b30['disabled']=!![],_0x156b30['textContent']='Renaming...',await API['post']('/environments/'+_0x1901a3+'/rename',{'newName':_0x103d11}),Utils['showSuccess']('Environment\x20renamed\x20to\x20\x22'+_0x103d11+'\x22'),closeRenameEnvModal(),state['selectedEnv']=_0x103d11,await loadEnvironments(),await selectEnvironment(_0x103d11),await refreshRepositoryGitStatus();}catch(_0x2c2bb4){console['error']('Failed\x20to\x20rename\x20environment:',_0x2c2bb4),_0x22d90c['textContent']=_0x2c2bb4['message']||'Failed\x20to\x20rename\x20environment',_0x22d90c['hidden']=![];}finally{_0x156b30['disabled']=![],_0x156b30['textContent']=_0x4d6146;}}async function loadMonaco(){if(monacoLoaded)return;const _0x1a9e09=document['querySelector']('script[src*=\x22monaco-editor\x22][src*=\x22loader.min.js\x22]');if(_0x1a9e09){if(typeof monaco!=='undefined'){monacoLoaded=!![],monaco['editor']['setTheme'](getMonacoTheme());return;}return new Promise((_0x21b8e0,_0x584e07)=>{const _0x10dba1=setInterval(()=>{typeof monaco!=='undefined'&&(clearInterval(_0x10dba1),monacoLoaded=!![],monaco['editor']['setTheme'](getMonacoTheme()),_0x21b8e0());},0x64);setTimeout(()=>{clearInterval(_0x10dba1),_0x584e07(new Error('Monaco\x20loading\x20timeout'));},0x2710);});}return new Promise((_0xa75b42,_0x3e50f4)=>{const _0x339ffb=document['createElement']('script');_0x339ffb['src']='https://cdnjs.cloudflare.com/ajax/libs/monaco-editor/0.45.0/min/vs/loader.min.js',_0x339ffb['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()),_0xa75b42();});},_0x339ffb['onerror']=()=>_0x3e50f4(new Error('Failed\x20to\x20load\x20Monaco\x20Editor')),document['head']['appendChild'](_0x339ffb);});}async function createMonacoEditor(_0x1406f6,_0x259ecb,_0x38fb34,_0x4fa89b=![]){!monacoLoaded&&await loadMonaco();const _0x2158b0=document['getElementById'](_0x1406f6);if(!_0x2158b0)return console['error']('Monaco\x20container\x20not\x20found:',_0x1406f6),null;const _0x36541b=monacoEditors['get'](_0x1406f6);_0x36541b&&_0x36541b['dispose']();const _0x27e2de=monaco['editor']['create'](_0x2158b0,{'value':_0x259ecb||'','language':_0x38fb34,'theme':getMonacoTheme(),'readOnly':_0x4fa89b,'minimap':{'enabled':![]},'fontSize':0xd,'lineNumbers':'on','scrollBeyondLastLine':![],'automaticLayout':!![],'wordWrap':'on','tabSize':0x2}),_0x3e9a66=_0x27e2de['getModel']();return _0x3e9a66&&_0x3e9a66['setEOL'](monaco['editor']['EndOfLineSequence']['LF']),monacoEditors['set'](_0x1406f6,_0x27e2de),_0x27e2de;}function getLanguageFromFilename(_0x2fa3b8){const _0x309472=_0x2fa3b8['split']('.')['pop']()['toLowerCase'](),_0x2acf7d={'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(_0x2fa3b8==='Dockerfile')return'dockerfile';return _0x2acf7d[_0x309472]||'plaintext';}function getMonacoValue(_0x372660){if(window['MarkdownFileEditor']&&window['MarkdownFileEditor']['editors']['has'](_0x372660)){const _0x4836a1=window['MarkdownFileEditor']['editors']['get'](_0x372660);return _0x4836a1?_0x4836a1['getValue']():null;}const _0x3dde14=monacoEditors['get'](_0x372660);if(!_0x3dde14)return null;return _0x3dde14['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 _0xf824d7=await API['get']('/build/base/availability');if(_0xf824d7['available'])return!![];return openBaseImageRequiredModal(),![];}catch(_0x5f418e){return console['error']('Failed\x20to\x20check\x20base\x20image\x20availability:',_0x5f418e),Utils['showError'](_0x5f418e['message']||'Failed\x20to\x20verify\x20base\x20image\x20availability'),![];}}window['showBuildConfirmation']=async function(){if(!state['selectedEnv']){Utils['showError']('No\x20environment\x20selected');return;}const _0x305e94=await ensureBaseImageAvailableForBuild();if(!_0x305e94)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 _0x1569ed=state['selectedEnv'],_0xab437d=document['getElementById']('build-now-btn'),_0x1a1854=document['getElementById']('build-status-message');try{_0xab437d&&(_0xab437d['disabled']=!![],_0xab437d['innerHTML']='<span>⏳</span>\x20Building...');const _0x2d7fb3=await API['post']('/environments/'+_0x1569ed+'/build',{});currentBuildId=_0x2d7fb3['buildId'],currentBuildEnv=_0x1569ed,_0x1a1854&&(_0x1a1854['hidden']=![],_0x1a1854['className']='alert\x20alert-info',_0x1a1854['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(_0x2d7fb3['buildId'],_0x1569ed),startBuildPolling(_0x2d7fb3['buildId'],_0x1569ed);}catch(_0xe13c00){console['error']('Failed\x20to\x20start\x20build:',_0xe13c00),(_0xe13c00['message']||'')['toLowerCase']()['includes']('base\x20image')?openBaseImageRequiredModal():Utils['showError'](_0xe13c00['message']||'Failed\x20to\x20start\x20build'),_0xab437d&&(_0xab437d['disabled']=![],_0xab437d['innerHTML']='<span>📦</span>\x20Build\x20Now');}};function clearBuildTimers(){buildPollTimer&&(clearInterval(buildPollTimer),buildPollTimer=null),buildElapsedTimer&&(clearInterval(buildElapsedTimer),buildElapsedTimer=null);}function isActiveBuildContext(_0x5edc8d,_0x2d6c49){return currentBuildId===_0x5edc8d&¤tBuildEnv===_0x2d6c49;}function startBuildPolling(_0x2b7d93,_0x25389c){const _0xee12a=Date['now']();clearBuildTimers(),buildElapsedTimer=setInterval(()=>{if(!isActiveBuildContext(_0x2b7d93,_0x25389c)){clearBuildTimers();return;}const _0x4598d7=Math['floor']((Date['now']()-_0xee12a)/0x3e8),_0x18506f=document['getElementById']('build-elapsed-time');if(_0x18506f){const _0x1440f5=Math['floor'](_0x4598d7/0x3c),_0x269000=_0x4598d7%0x3c;_0x18506f['textContent']=_0x1440f5>0x0?'Elapsed\x20time:\x20'+_0x1440f5+'m\x20'+_0x269000+'s':'Elapsed\x20time:\x20'+_0x269000+'s';}},0x3e8),buildPollTimer=setInterval(async()=>{if(!isActiveBuildContext(_0x2b7d93,_0x25389c)){clearBuildTimers();return;}try{const _0x5a79c2=await API['get']('/environments/'+_0x25389c+'/build-status/'+_0x2b7d93);if(!isActiveBuildContext(_0x2b7d93,_0x25389c))return;if(_0x5a79c2['status']==='success'||_0x5a79c2['status']==='failed'){clearBuildTimers(),currentBuildId=null,currentBuildEnv=null,stopBuildOutputStreaming();const _0x5aaa43=document['getElementById']('build-now-btn');_0x5aaa43&&(_0x5aaa43['disabled']=![],_0x5aaa43['innerHTML']='<span>📦</span>\x20Build\x20Now');const _0x454714=document['getElementById']('build-status-message'),_0x20d0de=formatDuration(_0x5a79c2['duration']);_0x454714?(_0x5a79c2['status']==='success'?(_0x454714['className']='alert\x20alert-success',_0x454714['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'+_0x20d0de+'</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'+_0x20d0de,'success')):(_0x454714['className']='alert\x20alert-error',_0x454714['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'](_0x5a79c2['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'+_0x20d0de+'</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(()=>{_0x454714&&state['selectedEnv']===_0x25389c&&(_0x454714['hidden']=!![]);},0x2710)):_0x5a79c2['status']==='success'?Utils['showToast']('Build\x20completed\x20in\x20'+_0x20d0de,'success'):Utils['showToast']('Build\x20failed\x20-\x20check\x20output\x20for\x20details','error'),setTimeout(()=>{state['selectedEnv']===_0x25389c&&loadBuildHistory();},0x3e8);}}catch(_0x2d7a75){if(!isActiveBuildContext(_0x2b7d93,_0x25389c))return;console['error']('Failed\x20to\x20poll\x20build\x20status:',_0x2d7a75),clearBuildTimers(),currentBuildId=null,currentBuildEnv=null,stopBuildOutputStreaming();const _0x161f30=document['getElementById']('build-now-btn');_0x161f30&&(_0x161f30['disabled']=![],_0x161f30['innerHTML']='<span>📦</span>\x20Build\x20Now'),state['selectedEnv']===_0x25389c&&loadBuildHistory();}},0xbb8);}function stopBuildPolling(){clearBuildTimers(),stopBuildOutputStreaming(),currentBuildId=null,currentBuildEnv=null;}function resetBuildPanelForEnvironmentChange(){stopBuildPolling(),clearBuildOutput(),hideBuildOutputContainer();const _0xb18ac6=document['getElementById']('build-status-message');_0xb18ac6&&(_0xb18ac6['hidden']=!![],_0xb18ac6['className']='',_0xb18ac6['innerHTML']='');const _0x228fe2=document['getElementById']('build-now-btn');_0x228fe2&&(_0x228fe2['disabled']=![],_0x228fe2['innerHTML']='<span>📦</span>\x20Build\x20Now');}function showBuildOutputContainer(){const _0xd7a221=document['getElementById']('build-output-container');_0xd7a221&&(_0xd7a221['hidden']=![],buildOutputExpanded=!![],updateBuildOutputToggle());}function scrollBuildOutputIntoView(){const _0x3be253=document['getElementById']('build-output-container');if(!_0x3be253||_0x3be253['hidden'])return;requestAnimationFrame(()=>{_0x3be253['scrollIntoView']({'behavior':'smooth','block':'start'});});}function hideBuildOutputContainer(){const _0x3e0a69=document['getElementById']('build-output-container');_0x3e0a69&&(_0x3e0a69['hidden']=!![]);}function clearBuildOutput(){const _0x34885f=document['getElementById']('build-output-text');_0x34885f&&(_0x34885f['textContent']='');}window['toggleBuildOutput']=function(){buildOutputExpanded=!buildOutputExpanded,updateBuildOutputToggle();};function updateBuildOutputToggle(){const _0x485736=document['getElementById']('build-output-content'),_0x379156=document['getElementById']('build-output-toggle-icon');_0x485736&&(_0x485736['style']['display']=buildOutputExpanded?'block':'none'),_0x379156&&(_0x379156['innerHTML']=buildOutputExpanded?'▼':'▶');}function appendToBuildOutput(_0x4ccc15){const _0x4c96e6=document['getElementById']('build-output-text'),_0x33d84a=document['getElementById']('build-output-content');_0x4c96e6&&(_0x4c96e6['textContent']+=_0x4ccc15,_0x33d84a&&(_0x33d84a['scrollTop']=_0x33d84a['scrollHeight']));}function startBuildOutputStreaming(_0x253494,_0x3df50c){stopBuildOutputStreaming();try{const _0x41588e=new EventSource('/build/output/stream/'+_0x253494);buildOutputEventSource=_0x41588e,_0x41588e['onmessage']=_0x585ac7=>{if(buildOutputEventSource!==_0x41588e)return;if(!isActiveBuildContext(_0x253494,_0x3df50c)||state['selectedEnv']!==_0x3df50c){_0x41588e['close']();buildOutputEventSource===_0x41588e&&(buildOutputEventSource=null);return;}try{const _0x53ae7e=JSON['parse'](_0x585ac7['data']);if(_0x53ae7e['type']==='output')appendToBuildOutput(_0x53ae7e['data']);else _0x53ae7e['type']==='complete'&&(console['log']('Build\x20completed\x20via\x20stream:',_0x53ae7e),stopBuildOutputStreaming());}catch(_0x26ef9b){console['error']('Failed\x20to\x20parse\x20build\x20output\x20event:',_0x26ef9b);}},_0x41588e['onerror']=_0x4bbe38=>{if(buildOutputEventSource!==_0x41588e)return;console['error']('Build\x20output\x20stream\x20error:',_0x4bbe38),_0x41588e['readyState']===EventSource['CLOSED']&&stopBuildOutputStreaming();};}catch(_0x1572af){console['error']('Failed\x20to\x20start\x20build\x20output\x20streaming:',_0x1572af);}}function stopBuildOutputStreaming(){buildOutputEventSource&&(buildOutputEventSource['close'](),buildOutputEventSource=null);}async function loadBuildOutputForBuild(_0x55d724){const _0x13c650=state['selectedEnv'];showBuildOutputContainer(),clearBuildOutput(),scrollBuildOutputIntoView();const _0x9bd8e5=document['getElementById']('build-output-text');_0x9bd8e5&&(_0x9bd8e5['textContent']='Loading\x20build\x20output...');try{const _0x3d190b=await API['get']('/build/output/'+_0x55d724);if(_0x13c650!==state['selectedEnv'])return;_0x3d190b['output']?_0x9bd8e5&&(_0x9bd8e5['textContent']=_0x3d190b['output']):_0x9bd8e5&&(_0x9bd8e5['textContent']='No\x20output\x20available\x20for\x20this\x20build.');}catch(_0x1563b0){if(_0x13c650!==state['selectedEnv'])return;console['error']('Failed\x20to\x20load\x20build\x20output:',_0x1563b0),_0x9bd8e5&&(_0x9bd8e5['textContent']='Failed\x20to\x20load\x20build\x20output:\x20'+(_0x1563b0['message']||'Unknown\x20error'));}}window['viewBuildOutput']=function(_0x46f45a){loadBuildOutputForBuild(_0x46f45a);},window['loadBuildHistory']=async function(){if(!state['selectedEnv'])return;const _0x4e4b6c=state['selectedEnv'],_0xc4fc28=document['getElementById']('build-history-container');if(!_0xc4fc28)return;try{_0xc4fc28['innerHTML']='<p\x20class=\x22text-muted\x22>Loading\x20build\x20history...</p>';const _0x24ffbc=await API['get']('/environments/'+_0x4e4b6c+'/build-history?limit=20');if(_0x4e4b6c!==state['selectedEnv'])return;const _0x444076=_0x24ffbc['builds']||[];if(_0x444076['length']===0x0){_0xc4fc28['innerHTML']='<p\x20class=\x22text-muted\x22>No\x20build\x20history\x20available\x20yet.\x20Build\x20this\x20environment\x20to\x20see\x20history.</p>';return;}_0xc4fc28['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'+_0x444076['map'](_0x462666=>{const _0x2b646c=new Date(_0x462666['timestamp']),_0x2f6d4c=_0x2b646c['toLocaleString'](),_0x5ca3da=formatDuration(_0x462666['duration']),_0x451fdb=_0x462666['status']==='success'?'✅':'❌',_0x594fa3=_0x462666['status']==='success'?'Success':'Failed',_0x17786c=_0x462666['status']==='success'?'var(--color-success)':'var(--color-error)',_0x1b3c09=Utils['escapeHtml'](_0x462666['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'+_0x17786c+';\x22>'+_0x451fdb+'\x20'+_0x594fa3+'</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>'+_0x2f6d4c+'</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>'+_0x5ca3da+'</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(_0x462666['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'+_0x1b3c09+'\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(_0x1e5a22){if(_0x4e4b6c!==state['selectedEnv'])return;console['error']('Failed\x20to\x20load\x20build\x20history:',_0x1e5a22),_0xc4fc28['innerHTML']='<p\x20class=\x22text-muted\x22\x20style=\x22color:\x20var(--color-error);\x22>Failed\x20to\x20load\x20build\x20history</p>';}},window['renderVolumeMounts']=function(_0x4c0be4){const _0x4c866c=document['getElementById']('volume-mounts-list'),_0x4ccb7f=_0x4c0be4!==undefined?_0x4c0be4:state['selectedEnvData']?.['volume_mounts']||[];if(!_0x4c866c)return;if(_0x4ccb7f['length']===0x0){_0x4c866c['innerHTML']='<p\x20class=\x22text-muted\x22>No\x20volume\x20mounts\x20configured.</p>';return;}_0x4c866c['innerHTML']=_0x4ccb7f['map']((_0xfe5ef1,_0x549956)=>'\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'](_0xfe5ef1['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'+(_0xfe5ef1['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('+_0x549956+')\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'](_0xfe5ef1['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'](_0xfe5ef1['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('+_0x549956+')\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(_0xcaab6b=null){const _0x2082d6=_0xcaab6b!==null?state['selectedEnvData']['volume_mounts'][_0xcaab6b]:null,_0x1c84e5=_0x2082d6!==null;Utils['showModal']({'title':_0x1c84e5?'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'](_0x2082d6?.['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'](_0x2082d6?.['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'](_0x2082d6?.['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'+(_0x2082d6?.['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':_0x1c84e5?'Save':'Add','className':'btn-primary','onClick':()=>{const _0x5af319=document['getElementById']('mount-description')['value']['trim'](),_0x3bd6a8=document['getElementById']('mount-host-path')['value']['trim'](),_0xdf0cd2=document['getElementById']('mount-container-path')['value']['trim'](),_0x4a32b3=document['getElementById']('mount-read-only')['checked'],_0xe90445=document['getElementById']('volume-mount-error');_0xe90445['style']['display']='none',_0xe90445['textContent']='';if(!_0x3bd6a8||!_0xdf0cd2){_0xe90445['textContent']='Host\x20path\x20and\x20container\x20path\x20are\x20required',_0xe90445['style']['display']='block';return;}if(!_0xdf0cd2['startsWith']('/')){_0xe90445['textContent']='Container\x20path\x20must\x20be\x20absolute\x20(start\x20with\x20/)',_0xe90445['style']['display']='block';return;}const _0xc2897d={'description':_0x5af319,'host_path':_0x3bd6a8,'container_path':_0xdf0cd2,'read_only':_0x4a32b3};!state['selectedEnvData']['volume_mounts']&&(state['selectedEnvData']['volume_mounts']=[]),_0x1c84e5?state['selectedEnvData']['volume_mounts'][_0xcaab6b]=_0xc2897d:state['selectedEnvData']['volume_mounts']['push'](_0xc2897d),renderVolumeMounts(),state['hasUnsavedChanges']=!![],updateButtonStates(),Utils['hideModal'](),Utils['showToast']('Volume\x20mount\x20'+(_0x1c84e5?'updated':'added'),'success');}}]});},window['editVolumeMount']=function(_0x50f233){showVolumeMountDialog(_0x50f233);},window['removeVolumeMount']=function(_0x20c9d9){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'][_0x20c9d9]['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'][_0x20c9d9]['host_path'])+'\x20→\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20'+Utils['escapeHtml'](state['selectedEnvData']['volume_mounts'][_0x20c9d9]['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'](_0x20c9d9,0x1),renderVolumeMounts(),state['hasUnsavedChanges']=!![],updateButtonStates(),Utils['hideModal'](),Utils['showToast']('Volume\x20mount\x20removed','success');}}]});};const accessTabState={'bindings':[],'roles':[],'teams':[],'users':[],'loaded':![]};async function loadAccessTab(){const _0x575ff8=document['getElementById']('access-loading'),_0x222a83=document['getElementById']('access-empty'),_0x1078ee=document['getElementById']('access-bindings-container'),_0x581c45=document['getElementById']('access-add-binding-btn');if(!_0x575ff8)return;_0x575ff8['hidden']=![],_0x222a83['hidden']=!![],_0x1078ee['style']['display']='none',document['getElementById']('access-add-form')['hidden']=!![];try{const [_0x2ceaf2,_0x227260]=await Promise['all']([API['getBindings']({'resource_type':'environment','resource_id':state['selectedEnv']}),API['getRoleDefinitions']()]);accessTabState['bindings']=_0x2ceaf2['bindings']||[],accessTabState['roles']=_0x227260['roles']||[];try{const _0x143332=await API['getTeams']();accessTabState['teams']=_0x143332['teams']||[];}catch{accessTabState['teams']=[];}try{const _0x1c2fbe=await API['getUsers']();accessTabState['users']=_0x1c2fbe['users']||[];}catch{accessTabState['users']=[];}accessTabState['loaded']=!![],_0x575ff8['hidden']=!![],updateTabBadge('badge-access',accessTabState['bindings']['length']);accessTabState['bindings']['length']===0x0?_0x222a83['hidden']=![]:(_0x1078ee['style']['display']='',renderAccessBindings());const _0x1f7f3d=state['currentUser'];_0x1f7f3d?.['hasEnvironmentsManageAccess']&&(_0x581c45['hidden']=![]);}catch(_0x5d04f2){_0x575ff8['hidden']=!![],Utils['showToast']('Failed\x20to\x20load\x20access\x20bindings:\x20'+_0x5d04f2['message'],'error');}}function renderAccessBindings(){const _0x1e75cb=document['getElementById']('access-bindings-body');if(!_0x1e75cb)return;const _0x1d4758=state['currentUser']?.['hasEnvironmentsManageAccess'];_0x1e75cb['innerHTML']=accessTabState['bindings']['map'](_0x34a136=>{const _0x4ac51c=_0x34a136['created_at']?new Date(_0x34a136['created_at'])['toLocaleDateString']():'—';return'\x0a\x20\x20\x20\x20\x20\x20<tr>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<td>'+Utils['escapeHtml'](_0x34a136['subject_name']||_0x34a136['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'](_0x34a136['subject_type'])+'</span></td>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<td>'+Utils['escapeHtml'](_0x34a136['role_name']||_0x34a136['role_id'])+'</td>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<td>'+Utils['escapeHtml'](_0x34a136['created_by']||'—')+'</td>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<td\x20style=\x22white-space:\x20nowrap;\x22>'+_0x4ac51c+'</td>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<td>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20'+(_0x1d4758?'<button\x20class=\x22btn-ghost\x20btn-small\x22\x20onclick=\x22window.removeAccessBinding(\x27'+_0x34a136['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 _0x47a305=document['getElementById']('access-subject-type'),_0xe2494e=document['getElementById']('access-subject-id'),_0x50e71b=_0x47a305?.['value'];if(!_0xe2494e)return;const _0x48d47b=new Set(accessTabState['bindings']['filter'](_0x4392bb=>_0x4392bb['subject_type']===_0x50e71b)['map'](_0x5bcfdc=>_0x5bcfdc['subject_id'])),_0x336e50=_0x50e71b==='team'?accessTabState['teams']['filter'](_0x56cc68=>!_0x48d47b['has'](_0x56cc68['id'])):accessTabState['users']['filter'](_0x1e979a=>!_0x48d47b['has'](_0x1e979a['id']));_0xe2494e['innerHTML']=_0x336e50['length']?_0x336e50['map'](_0x36f9e2=>{const _0x3209da=_0x50e71b==='team'?_0x36f9e2['name']:_0x36f9e2['username']||_0x36f9e2['name'];return'<option\x20value=\x22'+_0x36f9e2['id']+'\x22>'+Utils['escapeHtml'](_0x3209da)+'</option>';})['join'](''):'<option\x20value=\x22\x22>None\x20available</option>';}document['addEventListener']('DOMContentLoaded',()=>{document['getElementById']('access-add-binding-btn')?.['addEventListener']('click',()=>{const _0x508369=document['getElementById']('access-role-id');_0x508369&&(_0x508369['innerHTML']=accessTabState['roles']['map'](_0x4fe9d5=>'<option\x20value=\x22'+_0x4fe9d5['id']+'\x22>'+Utils['escapeHtml'](_0x4fe9d5['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 _0x589649=document['getElementById']('access-subject-type')['value'],_0xd78a65=document['getElementById']('access-subject-id')['value'],_0x1d185f=document['getElementById']('access-role-id')['value'];if(!_0xd78a65||!_0x1d185f||!state['selectedEnv'])return;const _0x24669d=document['getElementById']('access-save-binding-btn');_0x24669d['disabled']=!![],_0x24669d['textContent']='Adding…';try{await API['createBinding']({'subject_type':_0x589649,'subject_id':_0xd78a65,'role_id':_0x1d185f,'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(_0x46567d){Utils['showToast'](_0x46567d['message'],'error');}finally{_0x24669d['disabled']=![],_0x24669d['textContent']='Add\x20Binding';}});}),window['removeAccessBinding']=async function(_0x5b5de0){try{await API['deleteBinding'](_0x5b5de0),Utils['showToast']('Binding\x20removed','success'),await loadAccessTab();}catch(_0x2e3b3a){Utils['showToast'](_0x2e3b3a['message'],'error');}};
|
|
1
|
+
import{API,Utils,CustomSelect,ConfirmDialog,AutocompleteSelect,initializeAdminMenu}from'./app.js';import{getCurrentTheme,initTheme,mountThemeToggle,onThemeChange}from'./theme.js';import*as _0x5dd540 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(_0x501666=>{window['monaco']?.['editor']&&monaco['editor']['setTheme'](_0x501666==='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(_0x3fa2a0){return _0x3fa2a0?.['input']?.['value']?.['trim']()||'';}function setBranchAutocompleteValue(_0x4db3f2,_0x2ec5a6){if(!_0x4db3f2||!_0x4db3f2['input'])return;const _0x337cfe=(_0x2ec5a6||'')['trim']();_0x4db3f2['input']['value']=_0x337cfe,_0x4db3f2['clearBtn']['hidden']=!_0x337cfe,(!_0x337cfe||_0x4db3f2['selectedItem']?.['name']!==_0x337cfe)&&(_0x4db3f2['selectedItem']=null);}function clearBranchAutocompleteError(_0x43b732){_0x43b732?.['wrapper']&&_0x43b732['wrapper']['classList']['remove']('input-error');}function setBranchAutocompleteErrorState(_0x4af6f1,_0x349dee){if(!_0x4af6f1?.['wrapper'])return;_0x4af6f1['wrapper']['classList']['toggle']('input-error',Boolean(_0x349dee));}function getNewRepoBranchValue(){return getBranchAutocompleteInputValue(newRepoBranchAutocomplete);}function setNewRepoBranchValue(_0x47a6e7){setBranchAutocompleteValue(newRepoBranchAutocomplete,_0x47a6e7);}function getEditRepoBranchValue(){return getBranchAutocompleteInputValue(editRepoBranchAutocomplete);}function setEditRepoBranchValue(_0x26d370){setBranchAutocompleteValue(editRepoBranchAutocomplete,_0x26d370);}function getNewRepoBranchContext(){const _0x465b77=document['querySelector']('input[name=\x22repo-entry-mode\x22]:checked')?.['value']||'manual',_0x2c89b5=_0x465b77==='provider'?document['getElementById']('new-repo-source-provider')?.['value']||'':'',_0x98d325=_0x465b77==='provider'?repoAutocomplete?repoAutocomplete['getSelectedItem']():null:null,_0x7b6ec6=_0x465b77==='provider'?_0x98d325?.['clone_url']||_0x98d325?.['url']||'':document['getElementById']('new-repo-url')?.['value']?.['trim']()||'';return{'providerName':_0x2c89b5,'repoUrl':_0x7b6ec6};}function getEditRepoBranchContext(){const _0x10ee31=document['getElementById']('edit-repo-provider')?.['value']||'',_0x414cee=document['getElementById']('repo-url')?.['value']?.['trim']()||'';return{'providerName':_0x10ee31,'repoUrl':_0x414cee};}async function fetchRepoBranches({providerName:_0x5f1000,repoUrl:_0x26e20a,query:_0x23082b}){if(!_0x5f1000||!_0x26e20a)return[];const _0x460417='/settings/git-providers/'+encodeURIComponent(_0x5f1000)+'/branches';let _0x3df545=_0x460417+'?repoUrl='+encodeURIComponent(_0x26e20a)+'&limit=100';_0x23082b&&_0x23082b['trim']()&&(_0x3df545+='&search='+encodeURIComponent(_0x23082b['trim']()));try{const _0x5b2ab4=await API['get'](_0x3df545);return _0x5b2ab4['branches']||[];}catch(_0x2337cc){console['error']('Failed\x20to\x20load\x20repository\x20branches:',_0x2337cc);throw _0x2337cc;}}function reloadNewRepoBranchSuggestions(){if(!newRepoBranchAutocomplete)return;const {providerName:_0x47f15c,repoUrl:_0x331f04}=getNewRepoBranchContext();newRepoBranchAutocomplete['selectedItem']=null,newRepoBranchAutocomplete['clearBtn']['hidden']=!![];if(!_0x47f15c||!_0x331f04){newRepoBranchAutocomplete['close']();return;}return newRepoBranchAutocomplete['loadAndShow']('');}function reloadEditRepoBranchSuggestions(){if(!editRepoBranchAutocomplete)return;const {providerName:_0x2b107d,repoUrl:_0x400eae}=getEditRepoBranchContext();editRepoBranchAutocomplete['selectedItem']=null,editRepoBranchAutocomplete['clearBtn']['hidden']=!![];if(!_0x2b107d||!_0x400eae){editRepoBranchAutocomplete['close']();return;}return editRepoBranchAutocomplete['loadAndShow']('');}function isKnownPostCloneAction(_0x5385f0){return KNOWN_POST_CLONE_ACTIONS['includes'](_0x5385f0);}document['addEventListener']('DOMContentLoaded',initialize);async function initialize(){try{initTheme(),mountThemeToggle(),await checkAdminAccess();const _0x4806dc=await API['get']('/auth/me');state['currentUser']=_0x4806dc['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(_0x2edabe){console['error']('Initialization\x20error:',_0x2edabe),Utils['showError']('Failed\x20to\x20initialize\x20environment\x20management');}}async function checkAdminAccess(){try{const _0x4cd813=await API['getCurrentUser']();if(!_0x4cd813['hasEnvironmentsManage']){Utils['showToast']('Access\x20denied:\x20Environment\x20admin\x20privileges\x20required','error'),setTimeout(()=>{window['location']['href']='index.html';},0x7d0);return;}}catch(_0x3e567b){window['location']['href']='login.html';}}function initializeCustomSelects(){if(!defaultAgentSelect){const _0x1f2bff=document['getElementById']('env-default-agent-wrapper');if(!_0x1f2bff){console['error']('Wrapper\x20element\x20not\x20found');return;}_0x1f2bff['innerHTML']='';const _0x2b48b4=document['createElement']('select');_0x2b48b4['id']='env-default-agent',_0x2b48b4['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',_0x1f2bff['appendChild'](_0x2b48b4),defaultAgentSelect=new CustomSelect(_0x2b48b4,{'searchable':![]}),_0x2b48b4['addEventListener']('change',()=>{if(defaultAgentSelectInitializing)return;markAsModified();});}}function setupEventListeners(){document['querySelectorAll']('.content-tab')['forEach'](_0x35b7e2=>{_0x35b7e2['addEventListener']('click',()=>switchTab(_0x35b7e2['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',_0x5f5d27=>{const _0x33d1ec=_0x5f5d27['target']['value']['trim'](),_0x8da1e0=document['getElementById']('new-env-image');!_0x8da1e0['dataset']['userModified']&&(_0x8da1e0['value']=_0x33d1ec);}),document['getElementById']('new-env-image')['addEventListener']('input',_0x5e1d30=>{const _0x4e2006=document['getElementById']('new-env-name')['value']['trim']();_0x5e1d30['target']['value']!==_0x4e2006?_0x5e1d30['target']['dataset']['userModified']='true':delete _0x5e1d30['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',_0xd4959a=>{_0xd4959a['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 _0x6f7d32=document['getElementById']('secret-value');_0x6f7d32['addEventListener']('beforeinput',handleSecretValueBeforeInput),_0x6f7d32['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'](_0xb215f7=>document['getElementById'](_0xb215f7)['addEventListener']('change',updateConnectionFormVisibility)),document['getElementById']('feature-sync')['addEventListener']('change',_0x1c3699=>{const _0x42c8bd=document['getElementById']('feature-ssh');_0x1c3699['target']['checked']?(_0x42c8bd['checked']=!![],_0x42c8bd['disabled']=!![]):_0x42c8bd['disabled']=![];}),document['getElementById']('connection-available-tasks')['addEventListener']('change',updateConnectionFormVisibility),document['getElementById']('connection-available-deploy')['addEventListener']('change',updateConnectionFormVisibility),document['getElementById']('connection-verify-cert')['addEventListener']('change',_0x3be674=>{document['getElementById']('connection-verify-cert-warning')['hidden']=_0x3be674['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 _0x135be9=document['getElementById']('connection-ssh-private-key');_0x135be9['addEventListener']('beforeinput',handleSshKeyBeforeInput),_0x135be9['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 _0x4c9589=document['getElementById']('install-key-password'),_0x37f540=document['getElementById']('install-key-password-toggle'),_0x337ef4=_0x4c9589['type']==='password';_0x4c9589['type']=_0x337ef4?'text':'password',_0x37f540['querySelector']('.eye-open')['style']['display']=_0x337ef4?'none':'',_0x37f540['querySelector']('.eye-closed')['style']['display']=_0x337ef4?'':'none';}),document['getElementById']('connection-ibmi-helper-link')['addEventListener']('click',_0x550697=>{_0x550697['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'](_0x1bab52=>{_0x1bab52['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 _0x549365=document['getElementById']('delete-repo-btn');_0x549365&&_0x549365['addEventListener']('click',()=>{state['currentRepo']!==null&&removeRepo(state['currentRepo']);});const _0x1816c5=document['getElementById']('delete-test-btn');_0x1816c5&&_0x1816c5['addEventListener']('click',()=>{state['currentTest']!==null&&removeTest(state['currentTest']);});const _0x4af148=document['getElementById']('delete-template-btn');_0x4af148&&_0x4af148['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 _0x3e3ab0=document['getElementById']('env-skills-manage-btn');if(_0x3e3ab0)_0x3e3ab0['addEventListener']('click',openSkillsModal);const _0xc4807f=document['getElementById']('skills-modal');if(_0xc4807f){const _0x4452dd=_0xc4807f['querySelector']('.modal-close'),_0x55829b=_0xc4807f['querySelector']('.modal-overlay'),_0xc4cf6b=document['getElementById']('skills-modal-cancel-btn'),_0x6c9ac6=document['getElementById']('skills-modal-apply-btn'),_0x30adb1=document['getElementById']('skills-modal-search-input'),_0x4d7e63=document['getElementById']('skills-modal-search-clear');_0x4452dd?.['addEventListener']('click',closeSkillsModal),_0x55829b?.['addEventListener']('click',closeSkillsModal),_0xc4cf6b?.['addEventListener']('click',closeSkillsModal),_0x6c9ac6?.['addEventListener']('click',applySkillsModalSelection),_0x30adb1?.['addEventListener']('input',renderSkillsModal),_0x4d7e63?.['addEventListener']('click',()=>{_0x30adb1&&(_0x30adb1['value']='',_0x30adb1['focus']()),renderSkillsModal();});}const _0x2026a5=document['getElementById']('actions-menu-btn'),_0x554f2c=document['getElementById']('actions-menu');_0x2026a5['addEventListener']('click',_0x3f7dad=>{_0x3f7dad['stopPropagation']();const _0x4b582b=document['getElementById']('admin-menu');if(_0x4b582b)_0x4b582b['hidden']=!![];_0x554f2c['hidden']=!_0x554f2c['hidden'];}),document['addEventListener']('click',_0x1af4a6=>{!_0x554f2c['hidden']&&!_0x554f2c['contains'](_0x1af4a6['target'])&&(_0x554f2c['hidden']=!![]);}),_0x554f2c['addEventListener']('click',()=>{_0x554f2c['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 _0x409261=document['getElementById']('env-tabs-wrapper'),_0x5f1fdc=document['getElementById']('env-tabs-scroll-left'),_0x3e38a4=document['getElementById']('env-tabs-scroll-right');if(!_0x409261||!_0x5f1fdc||!_0x3e38a4)return;const _0x5bc98d=0xc8;function _0xdebbc8(){const {scrollLeft:_0x4b1cde,scrollWidth:_0x14ffc6,clientWidth:_0x10c1c9}=_0x409261,_0x68696f=_0x4b1cde>0x1,_0x3478a5=_0x4b1cde<_0x14ffc6-_0x10c1c9-0x1;_0x5f1fdc['classList']['toggle']('visible',_0x68696f),_0x3e38a4['classList']['toggle']('visible',_0x3478a5),_0x409261['classList']['toggle']('fade-left',_0x68696f),_0x409261['classList']['toggle']('fade-right',_0x3478a5);}_0x5f1fdc['addEventListener']('click',()=>{_0x409261['scrollBy']({'left':-_0x5bc98d,'behavior':'smooth'});}),_0x3e38a4['addEventListener']('click',()=>{_0x409261['scrollBy']({'left':_0x5bc98d,'behavior':'smooth'});}),_0x409261['addEventListener']('scroll',_0xdebbc8);const _0x2c11cc=new ResizeObserver(()=>{_0xdebbc8();});_0x2c11cc['observe'](_0x409261),_0xdebbc8(),window['updateEnvTabsScrollState']=_0xdebbc8;}function scrollToActiveEnvTab(){const _0xa24a85=document['getElementById']('env-tabs-wrapper'),_0x4caf68=document['querySelector']('.env-tab.active');if(!_0xa24a85||!_0x4caf68)return;const _0x451e1f=_0xa24a85['getBoundingClientRect'](),_0x591fd4=_0x4caf68['getBoundingClientRect']();if(_0x591fd4['left']<_0x451e1f['left'])_0xa24a85['scrollBy']({'left':_0x591fd4['left']-_0x451e1f['left']-0x10,'behavior':'smooth'});else _0x591fd4['right']>_0x451e1f['right']&&_0xa24a85['scrollBy']({'left':_0x591fd4['right']-_0x451e1f['right']+0x10,'behavior':'smooth'});}function setupContentNavScrolling(){const _0x3fb140=document['getElementById']('content-nav'),_0x5611f4=document['getElementById']('content-nav-scroll-left'),_0x90886f=document['getElementById']('content-nav-scroll-right');if(!_0x3fb140||!_0x5611f4||!_0x90886f)return;const _0x94c803=0x96;function _0x457cd2(){const {scrollLeft:_0x1d31bb,scrollWidth:_0x51ab4c,clientWidth:_0x20d7eb}=_0x3fb140,_0x217d4e=_0x1d31bb>0x1,_0x8b0ea=_0x1d31bb<_0x51ab4c-_0x20d7eb-0x1;_0x5611f4['classList']['toggle']('visible',_0x217d4e),_0x90886f['classList']['toggle']('visible',_0x8b0ea),_0x3fb140['classList']['toggle']('fade-left',_0x217d4e),_0x3fb140['classList']['toggle']('fade-right',_0x8b0ea);}_0x5611f4['addEventListener']('click',()=>{_0x3fb140['scrollBy']({'left':-_0x94c803,'behavior':'smooth'});}),_0x90886f['addEventListener']('click',()=>{_0x3fb140['scrollBy']({'left':_0x94c803,'behavior':'smooth'});}),_0x3fb140['addEventListener']('scroll',_0x457cd2);const _0x5587f0=new ResizeObserver(()=>{_0x457cd2();});_0x5587f0['observe'](_0x3fb140),_0x457cd2(),window['updateContentNavScrollState']=_0x457cd2;}function scrollToActiveContentTab(){const _0x303491=document['getElementById']('content-nav'),_0x115b73=document['querySelector']('.content-tab.active');if(!_0x303491||!_0x115b73)return;const _0x122a68=_0x303491['getBoundingClientRect'](),_0x428951=_0x115b73['getBoundingClientRect']();if(_0x428951['left']<_0x122a68['left'])_0x303491['scrollBy']({'left':_0x428951['left']-_0x122a68['left']-0x10,'behavior':'smooth'});else _0x428951['right']>_0x122a68['right']&&_0x303491['scrollBy']({'left':_0x428951['right']-_0x122a68['right']+0x10,'behavior':'smooth'});}async function loadEnvironments(){try{const _0x57a509=await API['get']('/environments');state['environments']=_0x57a509['environments']||[],renderEnvironmentsList();if(state['environments']['length']>0x0){const _0x543d41=sessionStorage['getItem'](SESSION_KEY_ENV),_0x4eb56d=_0x57a509['default_environment'];let _0x7893da;if(_0x543d41&&state['environments']['find'](_0x54f8d3=>_0x54f8d3['name']===_0x543d41))_0x7893da=_0x543d41;else _0x4eb56d&&state['environments']['find'](_0x173137=>_0x173137['name']===_0x4eb56d)?_0x7893da=_0x4eb56d:_0x7893da=state['environments'][0x0]['name'];await selectEnvironment(_0x7893da);}}catch(_0x2582dc){console['error']('Failed\x20to\x20load\x20environments:',_0x2582dc),document['getElementById']('env-tabs')['innerHTML']='<div\x20class=\x22error\x22>Failed\x20to\x20load\x20environments</div>';}}function renderEnvironmentsList(){const _0x5d64a2=document['getElementById']('env-tabs');if(state['environments']['length']===0x0){_0x5d64a2['innerHTML']='<div\x20class=\x22empty-state-inline\x22>No\x20environments\x20found</div>';return;}_0x5d64a2['innerHTML']=state['environments']['map'](_0x227ee8=>'\x0a\x20\x20\x20\x20<button\x20class=\x22env-tab\x20'+(_0x227ee8['name']===state['selectedEnv']?'active':'')+'\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20data-env=\x22'+_0x227ee8['name']+'\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20onclick=\x22selectEnvironment(\x27'+_0x227ee8['name']+'\x27)\x22>\x0a\x20\x20\x20\x20\x20\x20'+_0x227ee8['name']+'\x0a\x20\x20\x20\x20</button>\x0a\x20\x20')['join'](''),window['updateEnvTabsScrollState']&&requestAnimationFrame(()=>{window['updateEnvTabsScrollState']();});}window['selectEnvironment']=async function(_0x5b26af){if(state['hasUnsavedChanges']){const _0x33b2ee=await ConfirmDialog['show']({'title':'Unsaved\x20Changes','message':'You\x20have\x20unsaved\x20changes\x20that\x20will\x20be\x20lost.\x20Continue?','confirmText':'Continue','danger':!![]});if(!_0x33b2ee)return;}const _0x5eb419=state['selectedEnv'];_0x5eb419&&_0x5eb419!==_0x5b26af&&resetBuildPanelForEnvironmentChange(),state['selectedEnv']=_0x5b26af,sessionStorage['setItem'](SESSION_KEY_ENV,_0x5b26af),state['hasUnsavedChanges']=![],document['querySelectorAll']('.env-tab')['forEach'](_0x4b664e=>{_0x4b664e['classList']['toggle']('active',_0x4b664e['dataset']['env']===_0x5b26af);}),scrollToActiveEnvTab(),document['getElementById']('env-empty-state')['hidden']=!![],document['getElementById']('env-details')['hidden']=![],await loadEnvironmentDetails(_0x5b26af);};async function loadEnvironmentDetails(_0x32db3b){try{const _0x5c7651=await API['get']('/environments/'+_0x32db3b);if(_0x32db3b!==state['selectedEnv'])return;state['selectedEnvData']=_0x5c7651,state['originalTemplates']=(_0x5c7651['templates']||[])['map'](_0x433894=>_0x433894['filename']),state['hasUnsavedChanges']=![],state['currentRepo']=null,cleanupEditRepoAutocomplete();const _0x536ff8=['server-command-editor','file-editor','script-editor','template-md-editor'];for(const _0x34b097 of _0x536ff8){const _0x386f1a=monacoEditors['get'](_0x34b097);_0x386f1a&&(_0x386f1a['dispose'](),monacoEditors['delete'](_0x34b097));}const _0x32737b=['agents-editor','readme-editor'];for(const _0xa575d4 of _0x32737b){window['MarkdownFileEditor']&&window['MarkdownFileEditor']['has'](_0xa575d4)&&window['MarkdownFileEditor']['dispose'](_0xa575d4);const _0x4a7cd7=monacoEditors['get'](_0xa575d4);_0x4a7cd7&&(_0x4a7cd7['dispose'](),monacoEditors['delete'](_0xa575d4));}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 _0x20480c=document['getElementById']('deployment-progress-panel');_0x20480c&&(_0x20480c['hidden']=!![]),state['deploymentParamCache']={},updateButtonStates(),renderEnvironmentDetails(),setupTabEventListeners(),state['currentTab']==='deploy'&&loadDeploymentHistory();}catch(_0x41fa36){console['error']('Failed\x20to\x20load\x20environment\x20details:',_0x41fa36),Utils['showError']('Failed\x20to\x20load\x20environment\x20details');}}function setupTabEventListeners(){const _0x363130=document['getElementById']('rebuild-schedule-enabled-build-tab'),_0x5690f0=document['getElementById']('rebuild-interval-build-tab');if(_0x363130)_0x363130['addEventListener']('change',toggleRebuildSchedule);if(_0x5690f0)_0x5690f0['addEventListener']('input',markAsModified);const _0x489ebe=document['getElementById']('server-enabled'),_0x53bc11=document['getElementById']('server-name'),_0x2f4978=document['getElementById']('server-proxy'),_0x537beb=document['getElementById']('server-qa-url'),_0x348e07=document['getElementById']('server-auth-user-property'),_0x7ceeec=document['getElementById']('server-auth-password-property'),_0x4ccb8c=document['getElementById']('add-port-btn'),_0x37abea=document['getElementById']('add-url-btn'),_0x20bf9f=document['getElementById']('clear-primary-url-btn'),_0x35b961=document['getElementById']('add-proxy-header-btn'),_0x26cbba=document['getElementById']('add-port-qa-url-btn');if(_0x489ebe)_0x489ebe['addEventListener']('change',toggleServerConfig);if(_0x53bc11)_0x53bc11['addEventListener']('input',markAsModified);if(_0x2f4978)_0x2f4978['addEventListener']('input',markAsModified);if(_0x537beb)_0x537beb['addEventListener']('input',markAsModified);if(_0x348e07)_0x348e07['addEventListener']('input',markAsModified);if(_0x7ceeec)_0x7ceeec['addEventListener']('input',markAsModified);if(_0x4ccb8c)_0x4ccb8c['addEventListener']('click',addPort);if(_0x37abea)_0x37abea['addEventListener']('click',addURL);if(_0x20bf9f)_0x20bf9f['addEventListener']('click',clearPrimaryURL);if(_0x35b961)_0x35b961['addEventListener']('click',addProxyHeader);if(_0x26cbba)_0x26cbba['addEventListener']('click',addPortQaUrl);const _0xc56b0f=document['getElementById']('agents-editor'),_0xb3afc2=document['getElementById']('preview-agents-btn');_0xc56b0f&&_0xc56b0f['addEventListener']('input',()=>{markAsModified(),updateAgentStats();});if(_0xb3afc2)_0xb3afc2['addEventListener']('click',toggleAgentsPreview);document['querySelectorAll']('#scripts-section-body\x20.script-tab')['forEach'](_0x5074f7=>{_0x5074f7['addEventListener']('click',()=>{saveCurrentScriptToState(),switchScript(_0x5074f7['dataset']['script']);});});const _0x140cd1=document['getElementById']('scripts-section-header');_0x140cd1&&_0x140cd1['addEventListener']('click',toggleScriptsSection);const _0x1fe167=document['getElementById']('preview-dockerfile-btn');_0x1fe167&&_0x1fe167['addEventListener']('click',showDockerfilePreview);const _0x4ebaa0=document['getElementById']('dockerfile-preview-modal');_0x4ebaa0&&(_0x4ebaa0['querySelector']('.modal-close')['addEventListener']('click',closeDockerfilePreviewModal),_0x4ebaa0['querySelector']('.modal-overlay')['addEventListener']('click',closeDockerfilePreviewModal),document['getElementById']('dockerfile-preview-close-btn')['addEventListener']('click',closeDockerfilePreviewModal),document['getElementById']('dockerfile-copy-btn')['addEventListener']('click',copyDockerfileToClipboard));const _0x3a2e44=document['getElementById']('preview-template-btn');if(_0x3a2e44)_0x3a2e44['addEventListener']('click',toggleTemplatePreview);initializeAutomationFormOptions(),initializeAutomationModalCustomSelects(),initializeAutomationInstructionsEditor();const _0x16d1a4=document['getElementById']('add-automation-btn');if(_0x16d1a4)_0x16d1a4['addEventListener']('click',()=>openAutomationModal('create'));const _0x1a7343=document['getElementById']('automations-empty-create-btn');if(_0x1a7343)_0x1a7343['addEventListener']('click',()=>openAutomationModal('create'));const _0x313d92=document['getElementById']('automation-history-back-btn');if(_0x313d92)_0x313d92['addEventListener']('click',closeAutomationHistoryView);const _0x51efec=document['getElementById']('automation-history-run-btn');if(_0x51efec)_0x51efec['addEventListener']('click',triggerViewedAutomation);const _0x4f99f4=document['getElementById']('automations-table-body');_0x4f99f4&&(_0x4f99f4['addEventListener']('click',handleAutomationTableActionClick),_0x4f99f4['addEventListener']('change',handleAutomationTableToggleChange));const _0x175c50=document['getElementById']('automation-modal'),_0x17e6c2=_0x175c50?.['querySelector']('.modal-overlay');if(_0x17e6c2)_0x17e6c2['addEventListener']('click',closeAutomationModal);const _0x4bd563=document['getElementById']('automation-modal-close');if(_0x4bd563)_0x4bd563['addEventListener']('click',closeAutomationModal);const _0x228806=document['getElementById']('automation-cancel-btn');if(_0x228806)_0x228806['addEventListener']('click',closeAutomationModal);const _0x7bc977=document['getElementById']('automation-save-btn');if(_0x7bc977)_0x7bc977['addEventListener']('click',saveAutomationFromModal);const _0x1b85ff=document['getElementById']('automation-frequency');_0x1b85ff&&_0x1b85ff['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'](_0x550ead=>{_0x550ead['addEventListener']('change',updateAutomationScheduleSummary),_0x550ead['addEventListener']('input',updateAutomationScheduleSummary);});const _0xc93b1f=document['getElementById']('automation-recurring-days');_0xc93b1f&&_0xc93b1f['addEventListener']('change',updateAutomationScheduleSummary);const _0x11fea4=document['getElementById']('automation-agent-name');if(_0x11fea4)_0x11fea4['addEventListener']('change',updateAutomationAgentFields);document['querySelectorAll']('input[name=\x22automation-task-mode\x22]')['forEach'](_0x358cd2=>{_0x358cd2['addEventListener']('change',updateAutomationTaskMode);});const _0x405b1c=document['getElementById']('automation-template-name');_0x405b1c&&_0x405b1c['addEventListener']('change',()=>{renderAutomationTemplateParameters();});}function updateTabBadge(_0xacd6fc,_0x52ab83){const _0x2d401f=document['getElementById'](_0xacd6fc);if(!_0x2d401f)return;_0x52ab83>0x0?(_0x2d401f['textContent']=_0x52ab83,_0x2d401f['hidden']=![]):_0x2d401f['hidden']=!![];}function renderEnvironmentDetails(){const _0x7fa7d=state['selectedEnvData'];updateTabBadge('badge-secrets',0x0),updateTabBadge('badge-automations',0x0),updateTabBadge('badge-access',0x0),updateTabBadge('badge-deploy',(_0x7fa7d['deployment_profiles']||[])['length']),document['getElementById']('env-name-display')['textContent']=_0x7fa7d['name'],document['getElementById']('env-description-display')['textContent']=_0x7fa7d['description']||'No\x20description',initializeCustomSelects(),defaultAgentSelectInitializing=!![],document['getElementById']('env-description')['value']=_0x7fa7d['description']||'',defaultAgentSelect['select'](_0x7fa7d['default_agent']||'claude'),document['getElementById']('env-image-name')['value']=_0x7fa7d['image_name']||'',document['getElementById']('env-timezone')['value']=_0x7fa7d['timezone']||'',document['getElementById']('env-screen-render-url')['value']=_0x7fa7d['screenRenderUrl']||'',state['selectedEnvData']['skills']=Array['isArray'](_0x7fa7d['skills'])?_0x7fa7d['skills']:[];const _0x444c7b=_0x7fa7d['rebuild_schedule']||{},_0x3ca12c=_0x444c7b['enabled']===!![];document['getElementById']('rebuild-schedule-enabled-build-tab')['checked']=_0x3ca12c,document['getElementById']('rebuild-interval-build-tab')['value']=_0x444c7b['interval_hours']||0x18,document['getElementById']('rebuild-schedule-config-build-tab')['hidden']=!_0x3ca12c,defaultAgentSelectInitializing=![];const _0x1c23e1=_0x7fa7d['repos']?.['length']||0x0,_0x52f5ff=Object['keys'](_0x7fa7d['tests']||{})['length'],_0x9f0d85=_0x7fa7d['templates']?.['length']||0x0,_0x591bb8=_0x7fa7d['deployment_profiles']?.['length']||0x0;document['getElementById']('stat-repos')['textContent']=_0x1c23e1,document['getElementById']('stat-repos-label')['textContent']=_0x1c23e1===0x1?'Repository':'Repositories',document['getElementById']('stat-tests')['textContent']=_0x52f5ff,document['getElementById']('stat-tests-label')['textContent']=_0x52f5ff===0x1?'Test\x20Command':'Test\x20Commands',document['getElementById']('stat-templates')['textContent']=_0x9f0d85,document['getElementById']('stat-templates-label')['textContent']=_0x9f0d85===0x1?'Template':'Templates',document['getElementById']('stat-deploy-profiles')['textContent']=_0x591bb8,document['getElementById']('stat-deploy-profiles-label')['textContent']=_0x591bb8===0x1?'Deploy\x20Profile':'Deploy\x20Profiles',renderReadme(),renderEnvironmentSkills();const _0x49601e=state['selectedEnv'];loadAvailableSkills()['then'](()=>{if(state['selectedEnv']!==_0x49601e)return;renderEnvironmentSkills(),state['skillsModalOpen']&&renderSkillsModal();}),renderRepos(),renderServerConfig(),renderAgentInstructions(),renderTests(),renderTemplates(),state['viewingAutomationId']=null,closeAutomationHistoryView(),renderAutomationAgentOptions(_0x7fa7d['default_agent']||''),renderAutomations();const _0xf11f50=state['selectedEnv'];loadSecrets()['then'](()=>{if(state['selectedEnv']!==_0xf11f50)return;renderSecrets();}),loadConnections(),renderConnections();const _0x3f7ad0=state['selectedEnv'];API['getBindings']({'environment':state['selectedEnv']})['then'](_0x5ead06=>{if(state['selectedEnv']!==_0x3f7ad0)return;updateTabBadge('badge-access',(_0x5ead06['bindings']||[])['length']);})['catch'](()=>{}),state['currentTab']==='build'&&loadBuildHistory();}async function loadAvailableSkills(){if(state['availableSkillsLoaded']||state['availableSkillsLoading'])return;state['availableSkillsLoading']=!![],state['availableSkillsError']=null;try{const _0xff35ca=await API['getSkills']();state['availableSkills']=_0xff35ca['skills']||[],state['availableSkillsLoaded']=!![];}catch(_0x36a804){console['error']('Failed\x20to\x20load\x20skills:',_0x36a804),state['availableSkillsError']=_0x36a804['message']||'Failed\x20to\x20load\x20skills.';}finally{state['availableSkillsLoading']=![];}}function getSkillDisplayInfo(_0x1a74b4){const _0x472c5a=state['availableSkills']['find'](_0x5dbac0=>_0x5dbac0['id']===_0x1a74b4);if(_0x472c5a)return{'id':_0x472c5a['id'],'name':_0x472c5a['name']||_0x472c5a['id'],'description':_0x472c5a['description']||''};return{'id':_0x1a74b4,'name':_0x1a74b4,'description':''};}function renderEnvironmentSkills(){const _0x360c09=document['getElementById']('env-skills-chips'),_0x4d66e7=document['getElementById']('env-skills-empty');if(!_0x360c09||!_0x4d66e7)return;const _0x1f8f4a=state['selectedEnvData']?.['skills']||[];_0x360c09['innerHTML']='';if(_0x1f8f4a['length']===0x0){_0x360c09['hidden']=!![],_0x360c09['classList']['add']('skills-chip-grid-empty'),_0x4d66e7['hidden']=![];return;}_0x360c09['hidden']=![],_0x360c09['classList']['remove']('skills-chip-grid-empty'),_0x4d66e7['hidden']=!![],_0x1f8f4a['forEach'](_0xd320f6=>{const _0x36a6a5=getSkillDisplayInfo(_0xd320f6),_0x174b31=document['createElement']('div');_0x174b31['className']='skill-chip',_0x174b31['dataset']['skillId']=_0x36a6a5['id'],_0x174b31['innerHTML']='\x0a\x20\x20\x20\x20\x20\x20<span\x20class=\x22skill-chip-name\x22>'+Utils['escapeHtml'](_0x36a6a5['name'])+'</span>\x0a\x20\x20\x20\x20\x20\x20<span\x20class=\x22skill-chip-id\x22>'+Utils['escapeHtml'](_0x36a6a5['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 _0x13e01e=_0x174b31['querySelector']('.skill-chip-remove');_0x13e01e['addEventListener']('click',()=>removeSkillFromEnvironment(_0x36a6a5['id'])),_0x360c09['appendChild'](_0x174b31);});}function removeSkillFromEnvironment(_0x410b89){const _0x3bdc87=getConnectionRequiredSkills();if(_0x3bdc87['has'](_0x410b89)){Utils['showError']('Cannot\x20remove\x20skill\x20\x22'+_0x410b89+'\x22\x20—\x20it\x20is\x20required\x20by\x20an\x20external\x20connection.\x20Remove\x20the\x20connection\x20first.');return;}const _0x5473a9=state['selectedEnvData']?.['skills']||[],_0x3e915c=_0x5473a9['filter'](_0x117237=>_0x117237!==_0x410b89);state['selectedEnvData']['skills']=_0x3e915c,markAsModified(),renderEnvironmentSkills(),state['skillsModalOpen']&&(state['skillsModalSelection']=[..._0x3e915c],renderSkillsModal());}function openSkillsModal(){if(!state['selectedEnvData'])return;const _0x102ff9=document['getElementById']('skills-modal');if(!_0x102ff9)return;state['skillsModalOpen']=!![],state['skillsModalSelection']=[...state['selectedEnvData']['skills']||[]];const _0x45f92f=document['getElementById']('skills-modal-search-input');_0x45f92f&&(_0x45f92f['value']=''),_0x102ff9['hidden']=![],loadAvailableSkills()['then'](()=>{renderSkillsModal(),_0x45f92f&&_0x45f92f['focus']();}),renderSkillsModal();}function closeSkillsModal(){const _0x2d825b=document['getElementById']('skills-modal');_0x2d825b&&(_0x2d825b['hidden']=!![]),state['skillsModalOpen']=![];}function applySkillsModalSelection(){if(!state['selectedEnvData'])return;state['selectedEnvData']['skills']=[...state['skillsModalSelection']],markAsModified(),renderEnvironmentSkills(),closeSkillsModal();}function renderSkillsModal(){const _0xb852ff=document['getElementById']('skills-modal-list'),_0x590337=document['getElementById']('skills-modal-selected-list'),_0x127897=document['getElementById']('skills-modal-selected-empty'),_0x2ef360=document['getElementById']('skills-modal-selected-count'),_0x2ba110=document['getElementById']('skills-modal-search-input'),_0x43fb76=document['getElementById']('skills-modal-search-clear'),_0x485c35=document['getElementById']('skills-modal-search-meta'),_0xd3220b=document['getElementById']('skills-modal-error'),_0x1d992f=document['getElementById']('skills-modal-loading');if(!_0xb852ff||!_0x590337||!_0x127897||!_0x2ef360)return;const _0x8a9d13=(_0x2ba110?.['value']||'')['trim']()['toLowerCase']();_0x43fb76&&(_0x43fb76['hidden']=!_0x8a9d13);_0xd3220b&&(_0xd3220b['hidden']=!![]);_0x1d992f&&(_0x1d992f['hidden']=!state['availableSkillsLoading']);state['availableSkillsError']&&_0xd3220b&&(_0xd3220b['textContent']=state['availableSkillsError'],_0xd3220b['hidden']=![]);const _0x285ee7=state['availableSkills']||[],_0x41f1c5=_0x285ee7['filter'](_0x5b6b8d=>{const _0x161f14=(_0x5b6b8d['name']||'')['toLowerCase'](),_0x4c2bc3=(_0x5b6b8d['id']||'')['toLowerCase'](),_0x276891=(_0x5b6b8d['description']||'')['toLowerCase']();return!_0x8a9d13||_0x161f14['includes'](_0x8a9d13)||_0x4c2bc3['includes'](_0x8a9d13)||_0x276891['includes'](_0x8a9d13);});_0xb852ff['innerHTML']='';if(!state['availableSkillsLoading']&&_0x41f1c5['length']===0x0){const _0x5f9e38=document['createElement']('div');_0x5f9e38['className']='text-muted',_0x5f9e38['textContent']=_0x8a9d13?'No\x20skills\x20match\x20your\x20search.':'No\x20skills\x20available\x20yet.',_0xb852ff['appendChild'](_0x5f9e38);}_0x41f1c5['forEach'](_0x5018e8=>{const _0x5f4c76=state['skillsModalSelection']['includes'](_0x5018e8['id']),_0x535085=document['createElement']('div');_0x535085['className']='skills-modal-item'+(_0x5f4c76?'\x20selected':''),_0x535085['innerHTML']='\x0a\x20\x20\x20\x20\x20\x20<label>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<input\x20type=\x22checkbox\x22\x20'+(_0x5f4c76?'checked':'')+'\x20aria-label=\x22Select\x20'+Utils['escapeHtml'](_0x5018e8['name']||_0x5018e8['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'](_0x5018e8['name']||_0x5018e8['id'])+'</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22skills-modal-item-id\x22>'+Utils['escapeHtml'](_0x5018e8['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'](_0x5018e8['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 _0x2c2ee9=_0x535085['querySelector']('input[type=\x22checkbox\x22]');_0x2c2ee9['addEventListener']('change',_0x2c4ff8=>{toggleSkillSelection(_0x5018e8['id'],_0x2c4ff8['target']['checked']);}),_0xb852ff['appendChild'](_0x535085);}),_0x590337['innerHTML']='';const _0x3d8229=state['skillsModalSelection']['map'](getSkillDisplayInfo);_0x2ef360['textContent']=_0x3d8229['length']['toString']();_0x3d8229['length']===0x0?_0x127897['hidden']=![]:(_0x127897['hidden']=!![],_0x3d8229['forEach'](_0xd618bd=>{const _0x218ba3=document['createElement']('div');_0x218ba3['className']='skill-chip',_0x218ba3['dataset']['skillId']=_0xd618bd['id'],_0x218ba3['innerHTML']='\x0a\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22skill-chip-name\x22>'+Utils['escapeHtml'](_0xd618bd['name'])+'</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22skill-chip-id\x22>'+Utils['escapeHtml'](_0xd618bd['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 _0x2789d4=_0x218ba3['querySelector']('.skill-chip-remove');_0x2789d4['addEventListener']('click',()=>toggleSkillSelection(_0xd618bd['id'],![])),_0x590337['appendChild'](_0x218ba3);}));if(_0x485c35){if(state['availableSkillsLoading'])_0x485c35['textContent']='Loading\x20skills...';else{if(!_0x285ee7['length'])_0x485c35['textContent']='No\x20skills\x20available\x20yet.';else _0x8a9d13?_0x485c35['textContent']=_0x41f1c5['length']?_0x41f1c5['length']+'\x20skill'+(_0x41f1c5['length']===0x1?'':'s')+'\x20found':'No\x20matching\x20skills\x20found.':_0x485c35['textContent']=_0x285ee7['length']+'\x20skill'+(_0x285ee7['length']===0x1?'':'s')+'\x20available';}}}function toggleSkillSelection(_0xac9c0b,_0x264aeb){const _0x19beb9=new Set(state['skillsModalSelection']);_0x264aeb?_0x19beb9['add'](_0xac9c0b):_0x19beb9['delete'](_0xac9c0b),state['skillsModalSelection']=Array['from'](_0x19beb9),renderSkillsModal();}async function refreshRepositoryGitStatus(){try{const _0x3be3fb=await _0x5dd540['fetchGitStatus']();state['changedFiles']=_0x3be3fb['changedFiles']||[],state['setupRepoAuth']=_0x3be3fb['setupRepoAuth']||null,invalidateDiffCache(),_0x5dd540['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')},_0x3be3fb),updatePushButtonState(_0x3be3fb);}catch(_0x1a8d3c){console['error']('Failed\x20to\x20get\x20repository\x20git\x20status:',_0x1a8d3c),_0x5dd540['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 _0x2ac249=await _0x5dd540['fetchGitDiff']();state['uncommittedDiff']=_0x2ac249['diff']||'',state['uncommittedDiffFiles']=parsePatchContent(state['uncommittedDiff']);}catch(_0x178b9a){console['error']('Failed\x20to\x20fetch\x20diff:',_0x178b9a),state['uncommittedDiff']='',state['uncommittedDiffFiles']=[];}}async function handleFileClick(_0x34060b,_0x35a944){const _0x3543ab=_0x35a944['nextElementSibling'];if(_0x3543ab&&_0x3543ab['classList']['contains']('inline-file-diff')){_0x3543ab['remove'](),_0x35a944['classList']['remove']('diff-expanded');return;}const _0x2b3f99=_0x35a944['closest']('ul');_0x2b3f99['querySelectorAll']('.inline-file-diff')['forEach'](_0x224f68=>_0x224f68['remove']()),_0x2b3f99['querySelectorAll']('.diff-expanded')['forEach'](_0x34bee1=>_0x34bee1['classList']['remove']('diff-expanded')),_0x35a944['classList']['add']('diff-expanded');const _0x39a5f0=document['createElement']('li');_0x39a5f0['className']='inline-file-diff\x20inline-file-diff-loading',_0x39a5f0['textContent']='Loading\x20diff...',_0x35a944['after'](_0x39a5f0),await loadUncommittedDiff();const _0x3507c2=state['uncommittedDiffFiles']?.['find'](_0xb1f9a6=>_0xb1f9a6['newPath']===_0x34060b||_0xb1f9a6['oldPath']===_0x34060b);if(!_0x3507c2){_0x39a5f0['innerHTML']='<div\x20class=\x22inline-diff-empty\x22>No\x20diff\x20available\x20for\x20this\x20file</div>';return;}const _0x1cf341=renderUnifiedDiff([_0x3507c2],'env-uncommitted-'+safeBase64(_0x34060b));_0x39a5f0['className']='inline-file-diff',_0x39a5f0['innerHTML']=_0x1cf341,_0x39a5f0['querySelectorAll']('.file-diff-header')['forEach'](_0x5185ca=>{_0x5185ca['addEventListener']('click',_0xe203fe=>{if(_0xe203fe['target']['closest']('.file-diff-toggle-btn'))return;const _0x48ff9b=_0x5185ca['dataset']['diffId'],_0x3c31b1=document['getElementById'](_0x48ff9b);if(_0x3c31b1){const _0x32ed76=_0x3c31b1['classList']['toggle']('collapsed'),_0x3fbc30=_0x5185ca['querySelector']('.file-diff-toggle-btn');if(_0x3fbc30)_0x3fbc30['dataset']['collapsed']=String(_0x32ed76);}});}),_0x39a5f0['querySelectorAll']('.file-diff-toggle-btn')['forEach'](_0x61f1d4=>{_0x61f1d4['addEventListener']('click',_0x9d38d6=>{_0x9d38d6['stopPropagation']();const _0x4efeb8=document['getElementById'](_0x61f1d4['dataset']['diffId']);if(_0x4efeb8){const _0x17dbd4=_0x4efeb8['classList']['toggle']('collapsed');_0x61f1d4['dataset']['collapsed']=String(_0x17dbd4);}});});}function updatePushButtonState(_0x4f82c7){const _0x640f32=document['getElementById']('repo-push-btn');if(!_0x640f32)return;const _0x5bf658=Boolean(_0x4f82c7)&&!_0x4f82c7['hasUncommittedChanges']&&Number(_0x4f82c7['ahead']||0x0)>0x0&&Number(_0x4f82c7['behind']||0x0)===0x0;_0x640f32['hidden']=!_0x5bf658,_0x640f32['disabled']=!_0x5bf658;}async function pushRepositoryChanges(){const _0x1ee14d=document['getElementById']('repo-push-btn');if(!_0x1ee14d||_0x1ee14d['hidden']||_0x1ee14d['disabled'])return;try{const _0x13d1ec=document['getElementById']('repo-status-icon'),_0x354c46=document['getElementById']('repo-status-text');_0x1ee14d['disabled']=!![],_0x1ee14d['innerHTML']='<span>📤</span>\x20Pushing...',_0x13d1ec['textContent']='📤',_0x354c46['textContent']='Pushing\x20to\x20git...',await API['post']('/environments/git/push'),Utils['showSuccess']('Successfully\x20pushed\x20local\x20commits'),await refreshRepositoryGitStatus();}catch(_0x4ea252){_0x4ea252['message']==='setup_repo_user_not_connected'?(savePendingSetupRepoAction('push'),showSetupRepoConnectPrompt(state['setupRepoAuth']?.['provider'],state['setupRepoAuth']?.['provider_type'])):Utils['showError'](_0x4ea252['message']||'Failed\x20to\x20push\x20commits'),await refreshRepositoryGitStatus();}finally{_0x1ee14d['disabled']=![],_0x1ee14d['innerHTML']='<span>📤</span>\x20Push\x20to\x20Git';}}async function pullRepositoryChanges(){try{const _0x50a770=document['getElementById']('repo-pull-btn'),_0x163468=document['getElementById']('repo-status-icon'),_0x4eb514=document['getElementById']('repo-status-text');_0x50a770['disabled']=!![],_0x50a770['innerHTML']='<span>🔄</span>\x20Pulling...',_0x163468['textContent']='🔄',_0x4eb514['textContent']='Pulling\x20from\x20git...';const _0x319f0e=await API['post']('/environments/git/pull');_0x319f0e['conflicts']?(Utils['showError']('Pull\x20resulted\x20in\x20conflicts.\x20Please\x20resolve\x20manually.'),_0x163468['textContent']='⚠️',_0x4eb514['textContent']='Conflicts\x20detected'):(Utils['showSuccess']('Successfully\x20pulled\x20latest\x20changes'),await refreshRepositoryGitStatus(),state['selectedEnv']&&await loadEnvironmentDetails(state['selectedEnv']));}catch(_0x4bd2d9){_0x4bd2d9['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 _0x35126c=document['getElementById']('repo-pull-btn');_0x35126c['disabled']=![],_0x35126c['innerHTML']='<span>🔄</span>\x20Pull\x20from\x20Git';}}const PENDING_SETUP_REPO_ACTION_KEY='pendingSetupRepoAction_environments';function savePendingSetupRepoAction(_0x29eaf8,_0x3ccd14={}){sessionStorage['setItem'](PENDING_SETUP_REPO_ACTION_KEY,JSON['stringify']({'action':_0x29eaf8,'data':_0x3ccd14,'timestamp':Date['now']()}));}function loadAndClearPendingSetupRepoAction(){try{const _0x4f6edd=sessionStorage['getItem'](PENDING_SETUP_REPO_ACTION_KEY);sessionStorage['removeItem'](PENDING_SETUP_REPO_ACTION_KEY);if(!_0x4f6edd)return null;const _0x46a5bc=JSON['parse'](_0x4f6edd);if(Date['now']()-_0x46a5bc['timestamp']>0xa*0x3c*0x3e8)return null;return _0x46a5bc;}catch{return null;}}async function handleSetupRepoOAuthReturn(){const _0x303700=new URLSearchParams(window['location']['search']);if(_0x303700['get']('git_connection')!=='success')return;const _0x1c01a4=new URL(window['location']);_0x1c01a4['searchParams']['delete']('git_connection'),_0x1c01a4['searchParams']['delete']('provider'),window['history']['replaceState']({},'',_0x1c01a4),Utils['showSuccess']('Account\x20connected\x20successfully');const _0x4ca1dc=loadAndClearPendingSetupRepoAction();if(!_0x4ca1dc)return;if(_0x4ca1dc['action']==='pull')setTimeout(()=>pullRepositoryChanges(),0x1f4);else{if(_0x4ca1dc['action']==='push')setTimeout(()=>pushRepositoryChanges(),0x1f4);else{if(_0x4ca1dc['action']==='commit'){const {message:_0x675110,pullFirst:_0x341c16,push:_0x290c29}=_0x4ca1dc['data'];setTimeout(async()=>{try{const _0x17ed02=await API['post']('/environments/git/commit',{'message':_0x675110,'pullFirst':_0x341c16,'push':_0x290c29});_0x17ed02['success']&&(Utils['showSuccess'](_0x290c29?'Changes\x20committed\x20and\x20pushed':'Changes\x20committed\x20locally'),state['modifiedFiles']['clear'](),updateButtonStates(),await refreshRepositoryGitStatus(),state['selectedEnv']&&await loadEnvironmentDetails(state['selectedEnv']));}catch(_0x157604){console['error']('Commit\x20retry\x20failed:',_0x157604),Utils['showError'](_0x157604['message']||'Failed\x20to\x20commit\x20changes');}},0x1f4);}}}}function initGitConnectionsRequiredModal(){const _0x2be7e0=document['getElementById']('git-connections-required-modal');if(!_0x2be7e0)return;const _0x1e787c=_0x2be7e0['querySelector']('.modal-close'),_0x40683a=document['getElementById']('git-connections-close-btn'),_0x1d5500=_0x2be7e0['querySelector']('.modal-overlay'),_0x13cf4d=()=>{_0x2be7e0['hidden']=!![];};_0x1e787c?.['addEventListener']('click',_0x13cf4d),_0x40683a?.['addEventListener']('click',_0x13cf4d),_0x1d5500?.['addEventListener']('click',_0x13cf4d);}function showSetupRepoConnectPrompt(_0x2384de,_0x49a9b3){const _0x54ec22=document['getElementById']('git-connections-required-modal'),_0x877960=document['getElementById']('git-connections-required-list');if(!_0x54ec22||!_0x877960){Utils['showError']('Your\x20account\x20is\x20not\x20connected\x20to\x20provider\x20\x22'+_0x2384de+'\x22.\x20Please\x20connect\x20via\x20Settings.');return;}const _0x59b140=_0x49a9b3==='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>';_0x877960['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>'+_0x59b140+'</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'](_0x2384de)+'</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'](_0x2384de)+'\x27)\x22>Connect</button>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20',_0x54ec22['hidden']=![];}window['connectGitProviderFromModal']=async function(_0x4d637b){try{const _0x5c83c6=await API['post']('/api/git-oauth/start',{'provider_name':_0x4d637b,'redirect_after':window['location']['pathname']+'?git_connection=success&provider='+encodeURIComponent(_0x4d637b)}),_0x39c3c2=document['getElementById']('git-connections-required-modal');if(_0x39c3c2)_0x39c3c2['hidden']=!![];window['location']['href']=_0x5c83c6['oauth_url'];}catch(_0x27b082){console['error']('Failed\x20to\x20start\x20OAuth\x20flow:',_0x27b082),Utils['showError'](_0x27b082['message']||'Failed\x20to\x20start\x20connection');}};function openCommitModal(){invalidateDiffCache(),_0x5dd540['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 _0x49234=document['getElementById']('commit-error'),_0x4eb23a=document['getElementById']('commit-message'),_0x5034ad=_0x4eb23a['value']['trim']();_0x49234['hidden']=!![],_0x4eb23a['classList']['remove']('input-error');if(!_0x5034ad){_0x49234['textContent']='Please\x20enter\x20a\x20commit\x20message',_0x49234['hidden']=![],_0x4eb23a['classList']['add']('input-error');return;}if(state['hasUnsavedChanges']){_0x49234['textContent']='Please\x20save\x20your\x20changes\x20before\x20committing',_0x49234['hidden']=![];return;}const _0x549d42=document['getElementById']('commit-pull-first')['checked'],_0x28e0e7=document['getElementById']('commit-push')['checked'];try{const _0x3d7519=document['getElementById']('commit-confirm-btn');_0x3d7519['disabled']=!![],_0x3d7519['textContent']='Committing...';const _0x45dabe=await API['post']('/environments/git/commit',{'message':_0x5034ad,'pullFirst':_0x549d42,'push':_0x28e0e7});_0x45dabe['success']?(Utils['showSuccess'](_0x28e0e7?'Changes\x20committed\x20and\x20pushed':'Changes\x20committed\x20locally'),state['modifiedFiles']['clear'](),updateButtonStates(),closeCommitModal(),await refreshRepositoryGitStatus(),state['selectedEnv']&&await loadEnvironmentDetails(state['selectedEnv'])):(_0x49234['textContent']=_0x45dabe['error']||'Commit\x20failed',_0x49234['hidden']=![]);}catch(_0x507899){_0x507899['message']==='setup_repo_user_not_connected'?(savePendingSetupRepoAction('commit',{'message':_0x5034ad,'pullFirst':_0x549d42,'push':_0x28e0e7}),closeCommitModal(),showSetupRepoConnectPrompt(state['setupRepoAuth']?.['provider'],state['setupRepoAuth']?.['provider_type'])):(_0x49234['textContent']=_0x507899['message']||'Failed\x20to\x20commit\x20changes',_0x49234['hidden']=![]);}finally{const _0x5af4f4=document['getElementById']('commit-confirm-btn');_0x5af4f4['disabled']=![],_0x5af4f4['textContent']='Commit\x20&\x20Push';}}function handleRepoStatusClick(){const _0x5eab55=document['getElementById']('repo-status-text')['textContent'];_0x5eab55==='Uncommitted\x20changes'&&openUncommittedChangesModal();}function openUncommittedChangesModal(){invalidateDiffCache(),_0x5dd540['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(),_0x5dd540['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 _0x15a840=document['getElementById']('discard-confirm-btn');_0x15a840['disabled']=!![],_0x15a840['textContent']='Discarding...';const _0x36765e=await API['post']('/environments/git/discard');_0x36765e['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'](_0x36765e['error']||'Failed\x20to\x20discard\x20changes');}catch(_0x1aa80e){console['error']('Discard\x20failed:',_0x1aa80e),Utils['showError'](_0x1aa80e['message']||'Failed\x20to\x20discard\x20changes');}finally{const _0x7c12fc=document['getElementById']('discard-confirm-btn');_0x7c12fc['disabled']=![],_0x7c12fc['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 _0x21a7d3=document['getElementById']('base-image-build-output');if(_0x21a7d3){_0x21a7d3['hidden']=!![];const _0x18e0b8=_0x21a7d3['querySelector']('pre');if(_0x18e0b8)_0x18e0b8['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 _0x39495a=document['getElementById']('base-image-no-cache')['checked'],_0x4041bf=document['getElementById']('base-image-build-start-btn'),_0x4600ef=document['getElementById']('base-image-build-cancel-btn'),_0x114f41=document['getElementById']('base-image-build-status'),_0xeb2bbd=_0x114f41['querySelector']('.build-status-message');_0x4041bf['disabled']=!![],_0x4041bf['innerHTML']='<span>Building...</span>',_0x114f41['hidden']=![],_0xeb2bbd['innerHTML']='<span\x20class=\x22status-icon\x22>⏳</span>\x20Starting\x20base\x20image\x20build...',_0xeb2bbd['className']='build-status-message\x20status-building',showBaseImageBuildOutput(),clearBaseImageBuildOutput();try{const _0x370c91=await API['post']('/build/base',{'noCache':_0x39495a});if(_0x370c91['buildId'])startBaseImageBuildOutputStreaming(_0x370c91['buildId']),pollBaseImageBuildStatus(_0x370c91['buildId']);else throw new Error('No\x20build\x20ID\x20received');}catch(_0x533f0e){console['error']('Failed\x20to\x20start\x20base\x20image\x20build:',_0x533f0e),_0xeb2bbd['innerHTML']='<span\x20class=\x22status-icon\x22>❌</span>\x20Failed\x20to\x20start\x20build:\x20'+(_0x533f0e['message']||'Unknown\x20error'),_0xeb2bbd['className']='build-status-message\x20status-failed',_0x4041bf['innerHTML']='<span>Build</span>',_0x4041bf['disabled']=![];}}function pollBaseImageBuildStatus(_0x4a55a6){const _0x7029d7=document['getElementById']('base-image-build-status'),_0x3508c1=_0x7029d7['querySelector']('.build-status-message'),_0xd3e7fb=document['getElementById']('base-image-build-start-btn'),_0x588c0c=document['getElementById']('base-image-build-cancel-btn');baseImageBuildPollingInterval=setInterval(async()=>{try{const _0x46440e=await API['get']('/build/base/status/'+_0x4a55a6);if(_0x46440e['status']==='building'){const _0x4fe47f=_0x46440e['duration']?Math['floor'](_0x46440e['duration']/0x3e8):0x0;_0x3508c1['innerHTML']='<span\x20class=\x22status-icon\x22>⏳</span>\x20Building\x20base\x20image...\x20('+formatDuration(_0x4fe47f*0x3e8)+')',_0x3508c1['className']='build-status-message\x20status-building';}else{if(_0x46440e['status']==='success'){clearInterval(baseImageBuildPollingInterval),baseImageBuildPollingInterval=null,stopBaseImageBuildOutputStreaming();const _0x81045f=_0x46440e['duration']?formatDuration(_0x46440e['duration']):'unknown';_0x3508c1['innerHTML']='<span\x20class=\x22status-icon\x22>✅</span>\x20Base\x20image\x20built\x20successfully\x20in\x20'+_0x81045f,_0x3508c1['className']='build-status-message\x20status-success',_0xd3e7fb['innerHTML']='<span>Build</span>',_0xd3e7fb['disabled']=![],_0x588c0c['textContent']='Close',Utils['showSuccess']('Base\x20image\x20built\x20successfully'),loadBaseImageBuildHistory();}else _0x46440e['status']==='failed'&&(clearInterval(baseImageBuildPollingInterval),baseImageBuildPollingInterval=null,stopBaseImageBuildOutputStreaming(),_0x3508c1['innerHTML']='<span\x20class=\x22status-icon\x22>❌</span>\x20Build\x20failed:\x20'+(_0x46440e['error']||'Unknown\x20error'),_0x3508c1['className']='build-status-message\x20status-failed',_0xd3e7fb['innerHTML']='<span>Build</span>',_0xd3e7fb['disabled']=![],Utils['showError']('Base\x20image\x20build\x20failed\x20-\x20check\x20output\x20for\x20details'),loadBaseImageBuildHistory());}}catch(_0x58c506){console['error']('Failed\x20to\x20poll\x20build\x20status:',_0x58c506);}},0xbb8);}function formatDuration(_0x591eb9){const _0x174a5f=Math['floor'](_0x591eb9/0x3e8),_0x2ca736=Math['floor'](_0x174a5f/0x3c),_0x25f9c2=_0x174a5f%0x3c;if(_0x2ca736>0x0)return _0x2ca736+'m\x20'+_0x25f9c2+'s';return _0x174a5f+'s';}function formatTriggeredBy(_0x3185b3){if(typeof _0x3185b3!=='string'||_0x3185b3['trim']()==='')return'Manual';const _0x4391d1=_0x3185b3['trim']()['toLowerCase']();if(_0x4391d1==='manual')return'Manual';if(_0x4391d1==='scheduled'||_0x4391d1==='schedule')return'Scheduled';if(_0x4391d1==='system')return'System';return _0x3185b3;}async function loadBaseImageBuildHistory(){const _0x48f75d=document['getElementById']('base-image-build-history');if(!_0x48f75d)return;try{_0x48f75d['innerHTML']='<p\x20class=\x22text-muted\x22>Loading...</p>';const _0x16c4c5=await API['get']('/build/base/history?limit=5'),_0x555567=_0x16c4c5['builds']||[];if(_0x555567['length']===0x0){_0x48f75d['innerHTML']='<p\x20class=\x22text-muted\x22>No\x20build\x20history\x20yet.</p>';return;}const _0x105350=_0x555567['map'](_0x35694c=>{const _0x2c5d26=new Date(_0x35694c['startTime']),_0x2935d0=_0x2c5d26['toLocaleDateString']()+'\x20'+_0x2c5d26['toLocaleTimeString']([],{'hour':'2-digit','minute':'2-digit'}),_0x335631=_0x35694c['duration']?formatDuration(_0x35694c['duration']):'-',_0x2d6563=_0x35694c['status']==='success'?'✅':'❌',_0x4fe3d5=formatTriggeredBy(_0x35694c['triggeredBy']),_0x37ee61=Utils['escapeHtml'](_0x35694c['buildId']);return'\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22build-history-row\x20'+_0x35694c['status']+'\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22build-status-icon\x22>'+_0x2d6563+'</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22build-date\x22>'+_0x2935d0+'</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22build-duration\x22>'+_0x335631+'</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22build-triggered-by\x22>'+Utils['escapeHtml'](_0x4fe3d5)+'</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20class=\x22btn-ghost\x20btn-small\x22\x20onclick=\x22viewBaseImageBuildOutput(\x27'+_0x37ee61+'\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']('');_0x48f75d['innerHTML']='\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22build-history-compact-list\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20'+_0x105350+'\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20';}catch(_0x1cfc20){console['error']('Failed\x20to\x20load\x20base\x20image\x20build\x20history:',_0x1cfc20),_0x48f75d['innerHTML']='<p\x20class=\x22text-muted\x22\x20style=\x22color:\x20var(--color-error);\x22>Failed\x20to\x20load\x20history</p>';}}function showBaseImageBuildOutput(){const _0x40ff48=document['getElementById']('base-image-build-output');_0x40ff48&&(_0x40ff48['hidden']=![]);}function clearBaseImageBuildOutput(){const _0x3f7e07=document['getElementById']('base-image-build-output');if(_0x3f7e07){const _0x5d2c19=_0x3f7e07['querySelector']('pre');_0x5d2c19&&(_0x5d2c19['textContent']='');}}function appendToBaseImageBuildOutput(_0x57808d){const _0xb4d11c=document['getElementById']('base-image-build-output');if(_0xb4d11c){const _0x2e34d4=_0xb4d11c['querySelector']('pre');_0x2e34d4&&(_0x2e34d4['textContent']+=_0x57808d,_0xb4d11c['scrollTop']=_0xb4d11c['scrollHeight']);}}function startBaseImageBuildOutputStreaming(_0xc95373){stopBaseImageBuildOutputStreaming();try{baseImageBuildOutputEventSource=new EventSource('/build/output/stream/'+_0xc95373),baseImageBuildOutputEventSource['onmessage']=_0x428247=>{try{const _0x3352b7=JSON['parse'](_0x428247['data']);if(_0x3352b7['type']==='output')appendToBaseImageBuildOutput(_0x3352b7['data']);else _0x3352b7['type']==='complete'&&(console['log']('Base\x20image\x20build\x20completed\x20via\x20stream:',_0x3352b7),stopBaseImageBuildOutputStreaming());}catch(_0x2b345e){console['error']('Failed\x20to\x20parse\x20base\x20image\x20build\x20output\x20event:',_0x2b345e);}},baseImageBuildOutputEventSource['onerror']=_0x45d9fa=>{console['error']('Base\x20image\x20build\x20output\x20stream\x20error:',_0x45d9fa),baseImageBuildOutputEventSource&&baseImageBuildOutputEventSource['readyState']===EventSource['CLOSED']&&stopBaseImageBuildOutputStreaming();};}catch(_0x12ecba){console['error']('Failed\x20to\x20start\x20base\x20image\x20build\x20output\x20streaming:',_0x12ecba);}}function stopBaseImageBuildOutputStreaming(){baseImageBuildOutputEventSource&&(baseImageBuildOutputEventSource['close'](),baseImageBuildOutputEventSource=null);}window['viewBaseImageBuildOutput']=async function(_0x4f283f){showBaseImageBuildOutput(),clearBaseImageBuildOutput();const _0x324603=document['getElementById']('base-image-build-output');if(_0x324603){const _0x320c16=_0x324603['querySelector']('pre');_0x320c16&&(_0x320c16['textContent']='Loading\x20build\x20output...');}try{const _0x4aa4ad=await API['get']('/build/output/'+_0x4f283f);if(_0x4aa4ad['output']&&_0x324603){const _0x3ef467=_0x324603['querySelector']('pre');_0x3ef467&&(_0x3ef467['textContent']=_0x4aa4ad['output']);}else{if(_0x324603){const _0x44f1e7=_0x324603['querySelector']('pre');_0x44f1e7&&(_0x44f1e7['textContent']='No\x20output\x20available\x20for\x20this\x20build.');}}}catch(_0xc7c34e){console['error']('Failed\x20to\x20load\x20base\x20image\x20build\x20output:',_0xc7c34e);if(_0x324603){const _0x2d40c1=_0x324603['querySelector']('pre');_0x2d40c1&&(_0x2d40c1['textContent']='Failed\x20to\x20load\x20build\x20output:\x20'+(_0xc7c34e['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(_0x34e6f9,_0x9da782){const _0x378ade=Number['parseInt'](_0x34e6f9,0xa),_0x5676cc=Number['parseInt'](_0x9da782,0xa);if(!Number['isInteger'](_0x378ade)||!Number['isInteger'](_0x5676cc))return _0x34e6f9+':'+_0x9da782;const _0x2ce251=_0x378ade>=0xc?'PM':'AM',_0x340877=_0x378ade%0xc||0xc;return _0x340877+':'+String(_0x5676cc)['padStart'](0x2,'0')+'\x20'+_0x2ce251;}function parseAutomationTimeInputValue(_0x536acd,_0x62a9af='0',_0xbe73aa='0'){const _0x13061a={'hour':String(Number['parseInt'](_0x62a9af,0xa)||0x0),'minute':String(Number['parseInt'](_0xbe73aa,0xa)||0x0)},_0x524717=String(_0x536acd||'')['trim']()['match'](/^(\d{1,2}):(\d{2})$/);if(!_0x524717)return _0x13061a;const _0xa1b035=Number['parseInt'](_0x524717[0x1],0xa),_0x2e9c75=Number['parseInt'](_0x524717[0x2],0xa);if(!Number['isInteger'](_0xa1b035)||_0xa1b035<0x0||_0xa1b035>0x17)return _0x13061a;if(!Number['isInteger'](_0x2e9c75)||_0x2e9c75<0x0||_0x2e9c75>0x3b)return _0x13061a;return{'hour':String(_0xa1b035),'minute':String(_0x2e9c75)};}function formatAutomationTimeInputValue(_0xf3fa00,_0x3cbea6,_0x1723dc='0',_0x2e5dbe='0'){const _0x159239=parseAutomationTimeInputValue(String(_0xf3fa00??'')['trim']()+':'+String(_0x3cbea6??'')['trim']()['padStart'](0x2,'0'),_0x1723dc,_0x2e5dbe);return _0x159239['hour']['padStart'](0x2,'0')+':'+_0x159239['minute']['padStart'](0x2,'0');}function getAutomationTimeInputState(_0x2a7e7a,_0x5e5296='0',_0x147332='0'){return parseAutomationTimeInputValue(document['getElementById'](_0x2a7e7a)?.['value']||'',_0x5e5296,_0x147332);}function setAutomationTimeInputValue(_0xdf6b72,_0x272d6c,_0x4423b3,_0x223d14='0',_0x4f118b='0'){const _0x584fc4=document['getElementById'](_0xdf6b72);if(!_0x584fc4)return;_0x584fc4['value']=formatAutomationTimeInputValue(_0x272d6c,_0x4423b3,_0x223d14,_0x4f118b);}function formatOrdinal(_0x31b441){const _0x3b51f2=Number['parseInt'](_0x31b441,0xa);if(!Number['isInteger'](_0x3b51f2))return''+_0x31b441;const _0x14216b=_0x3b51f2%0xa,_0x2e7e17=_0x3b51f2%0x64;if(_0x14216b===0x1&&_0x2e7e17!==0xb)return _0x3b51f2+'st';if(_0x14216b===0x2&&_0x2e7e17!==0xc)return _0x3b51f2+'nd';if(_0x14216b===0x3&&_0x2e7e17!==0xd)return _0x3b51f2+'rd';return _0x3b51f2+'th';}function initializeAutomationModalCustomSelects(){for(const _0x21051e of AUTOMATION_MODAL_SELECT_IDS){if(automationCustomSelects[_0x21051e])continue;const _0x2170fd=document['getElementById'](_0x21051e);if(!_0x2170fd)continue;automationCustomSelects[_0x21051e]=new CustomSelect(_0x2170fd,{'searchable':_0x21051e==='automation-template-name'});}}function refreshAutomationModalCustomSelect(_0x23b8c8){const _0xdfc138=automationCustomSelects[_0x23b8c8];if(!_0xdfc138||!_0xdfc138['nativeSelect'])return;_0xdfc138['selectedValue']=_0xdfc138['nativeSelect']['value']||'',_0xdfc138['updateDisplay']();}function refreshAllAutomationModalCustomSelects(){for(const _0x5379c1 of AUTOMATION_MODAL_SELECT_IDS){refreshAutomationModalCustomSelect(_0x5379c1);}}function initializeAutomationInstructionsEditor(){if(automationInstructionsEditor)return;const _0x20db45=document['getElementById']('automation-instructions');if(!_0x20db45||!window['MarkdownEditor'])return;automationInstructionsEditor=new window['MarkdownEditor'](_0x20db45,{'placeholder':'What\x20should\x20the\x20agent\x20do?','minHeight':'140px','toolbar':!![]});}function setAutomationInstructionsValue(_0x342073=''){if(automationInstructionsEditor){automationInstructionsEditor['setMarkdown'](_0x342073||'');return;}const _0x3accf8=document['getElementById']('automation-instructions');_0x3accf8&&(_0x3accf8['value']=_0x342073||'');}function getAutomationInstructionsValue(){if(automationInstructionsEditor)return automationInstructionsEditor['getMarkdown']();return document['getElementById']('automation-instructions')?.['value']||'';}function initializeAutomationFormOptions(){const _0xdf13bc=(_0x21a207,_0x4c8b22)=>{const _0xe27c64=document['getElementById'](_0x21a207);if(!_0xe27c64||_0xe27c64['dataset']['initialized']==='true')return;_0xe27c64['value']=_0x4c8b22,_0xe27c64['dataset']['initialized']='true';},_0x8467a6=(_0x25b4d6,_0x39e69a=![])=>{const _0x29a3c5=document['getElementById'](_0x25b4d6);if(!_0x29a3c5||_0x29a3c5['dataset']['initialized']==='true')return;const _0x46e594=[];_0x39e69a&&_0x46e594['push']('<option\x20value=\x22\x22>Any</option>');for(let _0x202ee0=0x0;_0x202ee0<=0x17;_0x202ee0+=0x1){const _0x4dd1c5=String(_0x202ee0);_0x46e594['push']('<option\x20value=\x22'+_0x4dd1c5+'\x22>'+formatAutomationTime(_0x202ee0,0x0)+'</option>');}_0x29a3c5['innerHTML']=_0x46e594['join'](''),_0x29a3c5['dataset']['initialized']='true';};_0xdf13bc('automation-daily-time','02:00'),_0xdf13bc('automation-weekly-time','09:00'),_0xdf13bc('automation-monthly-time','00:00'),_0x8467a6('automation-recurring-start-hour',!![]),_0x8467a6('automation-recurring-end-hour',!![]);const _0x282fc1=document['getElementById']('automation-weekly-day');_0x282fc1&&_0x282fc1['dataset']['initialized']!=='true'&&(_0x282fc1['innerHTML']=AUTOMATION_WEEKDAYS['map'](_0x301f77=>'<option\x20value=\x22'+_0x301f77['value']+'\x22>'+_0x301f77['label']+'</option>')['join'](''),_0x282fc1['dataset']['initialized']='true');const _0x2bfdcf=document['getElementById']('automation-monthly-day');if(_0x2bfdcf&&_0x2bfdcf['dataset']['initialized']!=='true'){const _0x5990bc=[];for(let _0x2daa4e=0x1;_0x2daa4e<=AUTOMATION_MONTHLY_DAY_MAX;_0x2daa4e+=0x1){_0x5990bc['push']('<option\x20value=\x22'+_0x2daa4e+'\x22>'+formatOrdinal(_0x2daa4e)+'</option>');}_0x2bfdcf['innerHTML']=_0x5990bc['join'](''),_0x2bfdcf['dataset']['initialized']='true';}const _0x244fcb=document['getElementById']('automation-recurring-days');_0x244fcb&&_0x244fcb['dataset']['initialized']!=='true'&&(_0x244fcb['innerHTML']=AUTOMATION_WEEKDAYS['map'](_0x36f805=>'\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'+_0x36f805['value']+'\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<span>'+_0x36f805['label']['slice'](0x0,0x3)+'</span>\x0a\x20\x20\x20\x20\x20\x20</label>\x0a\x20\x20\x20\x20')['join'](''),_0x244fcb['dataset']['initialized']='true'),refreshAllAutomationModalCustomSelects();}function formatAutomationAgentLabel(_0x5a8a6e){const _0x95f5d4=String(_0x5a8a6e||'')['trim']();if(!_0x95f5d4)return'Agent';if(AUTOMATION_AGENT_LABELS[_0x95f5d4])return AUTOMATION_AGENT_LABELS[_0x95f5d4];return _0x95f5d4['replace'](/[_-]+/g,'\x20')['replace'](/\b\w/g,_0x3b5dd5=>_0x3b5dd5['toUpperCase']());}function getAvailableAutomationAgentNames(){const _0x1bfac2=Object['entries'](state['availableModels']||{})['filter'](([_0x2b8461,_0x329df7])=>Boolean(_0x2b8461)&&_0x329df7&&typeof _0x329df7==='object'&&Array['isArray'](_0x329df7['models']))['map'](([_0x30cf7c])=>_0x30cf7c);if(_0x1bfac2['length']>0x0)return _0x1bfac2;return[...FALLBACK_AUTOMATION_AGENTS];}async function loadAvailableAutomationModels(_0x1225cf=![]){if(state['availableModelsLoaded']&&!_0x1225cf)return state['availableModels'];state['availableModelsLoaded']=!![];if(!state['currentUser']?.['hasSettingsView'])return state['availableModels']=null,state['availableModels'];try{const _0x2f3603=await API['get']('/settings/available-models');state['availableModels']=_0x2f3603&&typeof _0x2f3603==='object'?_0x2f3603:null;}catch(_0x45becd){state['availableModels']=null,console['warn']('Failed\x20to\x20load\x20available\x20models\x20for\x20automations:',_0x45becd);}return state['availableModels'];}function renderAutomationAgentOptions(_0x1c6d13=''){const _0x311f2a=document['getElementById']('automation-agent-name');if(!_0x311f2a)return;const _0x507fbf=String(state['selectedEnvData']?.['default_agent']||'')['trim'](),_0x397a3b=String(_0x1c6d13||_0x311f2a['value']||'')['trim'](),_0x2b7ad8=[],_0x1d3f13=_0x18f56d=>{const _0x134a29=String(_0x18f56d||'')['trim']();if(!_0x134a29||_0x2b7ad8['includes'](_0x134a29))return;_0x2b7ad8['push'](_0x134a29);};getAvailableAutomationAgentNames()['forEach'](_0x1d3f13),_0x1d3f13(_0x507fbf),_0x1d3f13(_0x397a3b);_0x2b7ad8['length']===0x0&&_0x1d3f13('claude');_0x311f2a['innerHTML']=_0x2b7ad8['map'](_0xb9a6fd=>'<option\x20value=\x22'+Utils['escapeHtml'](_0xb9a6fd)+'\x22>'+Utils['escapeHtml'](formatAutomationAgentLabel(_0xb9a6fd))+'</option>')['join']('');const _0x542c38=_0x2b7ad8['includes'](_0x397a3b)?_0x397a3b:_0x2b7ad8['includes'](_0x507fbf)?_0x507fbf:_0x2b7ad8[0x0];_0x542c38&&(_0x311f2a['value']=_0x542c38),refreshAutomationModalCustomSelect('automation-agent-name');}function setAutomationAgentSelection(_0x239e30=''){renderAutomationAgentOptions(_0x239e30),updateAutomationAgentFields();}function updateAutomationFrequencyFields(){const _0x3d93f0=document['getElementById']('automation-frequency')?.['value']||'daily',_0x17e56e={'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'](_0x17e56e)['forEach'](([_0x3df7ab,_0x2edb8b])=>{if(!_0x2edb8b)return;_0x2edb8b['hidden']=_0x3df7ab!==_0x3d93f0;});}function updateAutomationAgentFields(){const _0x5a7624=document['getElementById']('automation-agent-name')?.['value']||state['selectedEnvData']?.['default_agent']||getAvailableAutomationAgentNames()[0x0]||'claude',_0x8ee626=document['getElementById']('automation-effort-row'),_0x30900c=document['getElementById']('automation-reasoning-row');if(_0x8ee626)_0x8ee626['hidden']=_0x5a7624!=='claude';if(_0x30900c)_0x30900c['hidden']=_0x5a7624!=='codex';}function getSelectedAutomationTaskMode(){return document['querySelector']('input[name=\x22automation-task-mode\x22]:checked')?.['value']||'instructions';}function updateAutomationTaskMode(){const _0x75c898=getSelectedAutomationTaskMode(),_0x54b29a=document['getElementById']('automation-template-row'),_0x4ca811=document['getElementById']('automation-instructions-label');if(_0x54b29a)_0x54b29a['hidden']=_0x75c898!=='template';_0x4ca811&&(_0x4ca811['textContent']=_0x75c898==='template'?'Additional\x20Instructions':'Instructions');}function parseRecurringDayToken(_0x31e040){const _0x172d6f=new Set(),_0x376eda=String(_0x31e040||'')['trim']();if(!_0x376eda||_0x376eda==='*')return _0x172d6f;return _0x376eda['split'](',')['forEach'](_0x25a79=>{const _0x13a76e=_0x25a79['trim']();if(!_0x13a76e)return;if(_0x13a76e['includes']('-')){const [_0x58d145,_0x11c0f3]=_0x13a76e['split']('-'),_0x92228d=Number['parseInt'](_0x58d145,0xa),_0x41fadd=Number['parseInt'](_0x11c0f3,0xa);if(Number['isInteger'](_0x92228d)&&Number['isInteger'](_0x41fadd)&&_0x92228d<=_0x41fadd)for(let _0x14ac5a=_0x92228d;_0x14ac5a<=_0x41fadd;_0x14ac5a+=0x1){_0x172d6f['add'](String(_0x14ac5a===0x7?0x0:_0x14ac5a));}return;}const _0x15d791=Number['parseInt'](_0x13a76e,0xa);Number['isInteger'](_0x15d791)&&_0x172d6f['add'](String(_0x15d791===0x7?0x0:_0x15d791));}),_0x172d6f;}function getRecurringDaySelectionToken(){const _0x438b56=document['querySelectorAll']('#automation-recurring-days\x20input[type=\x22checkbox\x22]:checked'),_0x47bf80=[..._0x438b56]['map'](_0x443a38=>_0x443a38['value']);if(_0x47bf80['length']===0x0)return'*';return _0x47bf80['sort']((_0x4aa62a,_0x2ea503)=>Number['parseInt'](_0x4aa62a,0xa)-Number['parseInt'](_0x2ea503,0xa)),_0x47bf80['join'](',');}function setRecurringDaySelectionToken(_0x469ec4){const _0x32b2f3=parseRecurringDayToken(_0x469ec4);document['querySelectorAll']('#automation-recurring-days\x20input[type=\x22checkbox\x22]')['forEach'](_0xfd29a1=>{_0xfd29a1['checked']=_0x32b2f3['has'](_0xfd29a1['value']);});}function getAutomationScheduleFormState(){const _0xd633be=getAutomationTimeInputState('automation-daily-time','2','0'),_0x352d7b=getAutomationTimeInputState('automation-weekly-time','9','0'),_0xa37ee5=getAutomationTimeInputState('automation-monthly-time','0','0');return{'frequency':document['getElementById']('automation-frequency')?.['value']||'daily','customCron':document['getElementById']('automation-custom-cron')?.['value']?.['trim']()||'','dailyHour':_0xd633be['hour'],'dailyMinute':_0xd633be['minute'],'weeklyDay':document['getElementById']('automation-weekly-day')?.['value']||'1','weeklyHour':_0x352d7b['hour'],'weeklyMinute':_0x352d7b['minute'],'monthlyDay':document['getElementById']('automation-monthly-day')?.['value']||'1','monthlyHour':_0xa37ee5['hour'],'monthlyMinute':_0xa37ee5['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 _0x421353=getAutomationScheduleFormState(),_0x18fb48=_0x421353['frequency'],_0x490c70=_0x421353['customCron'];if(_0x18fb48==='custom')return{'cron':buildAutomationCronFromFormState(_0x421353),'summary':_0x490c70?'Custom:\x20'+_0x490c70:'Custom\x20cron\x20expression'};if(_0x18fb48==='daily')return{'cron':buildAutomationCronFromFormState(_0x421353),'summary':'Every\x20day\x20at\x20'+formatAutomationTime(_0x421353['dailyHour'],_0x421353['dailyMinute'])};if(_0x18fb48==='weekly'){const _0x3e8278=AUTOMATION_WEEKDAYS['find'](_0x366fdb=>_0x366fdb['value']===_0x421353['weeklyDay'])?.['label']||'Selected\x20day';return{'cron':buildAutomationCronFromFormState(_0x421353),'summary':'Every\x20'+_0x3e8278+'\x20at\x20'+formatAutomationTime(_0x421353['weeklyHour'],_0x421353['weeklyMinute'])};}if(_0x18fb48==='monthly')return{'cron':buildAutomationCronFromFormState(_0x421353),'summary':formatOrdinal(_0x421353['monthlyDay'])+'\x20of\x20every\x20month\x20at\x20'+formatAutomationTime(_0x421353['monthlyHour'],_0x421353['monthlyMinute'])};const _0xbe2e4d=_0x421353['recurringInterval'],[_0x20418f,_0x5d54ee]=_0xbe2e4d['split']('\x20'),_0x17240f=[],_0x566f47=_0x421353['recurringStartHour'],_0x16ecc1=_0x421353['recurringEndHour'];if(_0x566f47!==''&&_0x16ecc1!==''){const _0x3a9b61=Number['parseInt'](_0x566f47,0xa),_0x4a7f5c=Number['parseInt'](_0x16ecc1,0xa);Number['isInteger'](_0x3a9b61)&&Number['isInteger'](_0x4a7f5c)&&_0x3a9b61<=_0x4a7f5c&&_0x17240f['push'](formatAutomationTime(_0x3a9b61,0x0)+'\x20-\x20'+formatAutomationTime(_0x4a7f5c,0x0));}const _0x46a988=_0x421353['recurringDayToken'];if(_0x46a988!=='*'){const _0x4a126e=_0x46a988['split'](',')['map'](_0x487b55=>AUTOMATION_WEEKDAYS['find'](_0x450d1e=>_0x450d1e['value']===_0x487b55)?.['label']?.['slice'](0x0,0x3))['filter'](Boolean);_0x4a126e['length']>0x0&&_0x17240f['push'](_0x4a126e['join'](',\x20'));}let _0x39967d='';if(_0x20418f==='*/15')_0x39967d='Every\x2015\x20minutes';else{if(_0x20418f==='*/30')_0x39967d='Every\x2030\x20minutes';else{if(_0x20418f==='0'&&_0x5d54ee==='*')_0x39967d='Every\x20hour';else{if(_0x20418f==='0'&&_0x5d54ee['startsWith']('*/'))_0x39967d='Every\x20'+_0x5d54ee['slice'](0x2)+'\x20hours';else _0x39967d='Recurring\x20schedule\x20('+_0xbe2e4d+')';}}}return _0x17240f['length']>0x0&&(_0x39967d=_0x39967d+',\x20'+_0x17240f['join'](',\x20')),{'cron':buildAutomationCronFromFormState(_0x421353),'summary':_0x39967d};}function updateAutomationScheduleSummary(){const _0x5ee6ad=document['getElementById']('automation-schedule-summary');if(!_0x5ee6ad)return;try{const {summary:_0x33147f}=buildAutomationScheduleFromForm();_0x5ee6ad['textContent']=_0x33147f||'Choose\x20schedule\x20options';}catch(_0x2b35d5){_0x5ee6ad['textContent']='Invalid\x20schedule\x20settings:\x20'+_0x2b35d5['message'];}}function describeAutomationCron(_0x3cee05){const _0x2018b7=String(_0x3cee05||'')['trim'](),_0x4d86e8=_0x2018b7['match'](/^(\d{1,2}) (\d{1,2}) \* \* \*$/);if(_0x4d86e8)return'Every\x20day\x20at\x20'+formatAutomationTime(_0x4d86e8[0x2],_0x4d86e8[0x1]);const _0x18e6a6=_0x2018b7['match'](/^(\d{1,2}) (\d{1,2}) \* \* ([0-7])$/);if(_0x18e6a6){const _0x3a5b8b=_0x18e6a6[0x3]==='7'?'0':_0x18e6a6[0x3],_0x37d7e7=AUTOMATION_WEEKDAYS['find'](_0x30d90d=>_0x30d90d['value']===_0x3a5b8b)?.['label']||'Day\x20'+_0x3a5b8b;return'Every\x20'+_0x37d7e7+'\x20at\x20'+formatAutomationTime(_0x18e6a6[0x2],_0x18e6a6[0x1]);}const _0x5b6efd=_0x2018b7['match'](/^(\d{1,2}) (\d{1,2}) (\d{1,2}) \* \*$/);if(_0x5b6efd)return formatOrdinal(_0x5b6efd[0x3])+'\x20of\x20every\x20month\x20at\x20'+formatAutomationTime(_0x5b6efd[0x2],_0x5b6efd[0x1]);const _0x42b8cd=_0x2018b7['match'](/^(\*\/15|\*\/30|0) ([^\s]+) \* \* ([^\s]+)$/);if(_0x42b8cd){const [_0x937463,_0x12ad1f,_0x5ac2fb,_0x22085a]=_0x42b8cd;let _0x10efa7='Recurring';if(_0x12ad1f==='*/15')_0x10efa7='Every\x2015\x20minutes';else{if(_0x12ad1f==='*/30')_0x10efa7='Every\x2030\x20minutes';else{if(_0x12ad1f==='0'&&(_0x5ac2fb==='*'||/\d+-\d+$/['test'](_0x5ac2fb)))_0x10efa7='Every\x20hour';else{if(_0x12ad1f==='0'&&_0x5ac2fb['startsWith']('*/'))_0x10efa7='Every\x20'+_0x5ac2fb['slice'](0x2)+'\x20hours';else{if(_0x12ad1f==='0'){const _0x577941=_0x5ac2fb['match'](/^[\d-]+\/(\d+)$/);if(_0x577941)_0x10efa7='Every\x20'+_0x577941[0x1]+'\x20hours';}}}}}const _0x85de1f=[_0x10efa7],_0x376e82=_0x5ac2fb['match'](/^(\d+)-(\d+)(?:\/\d+)?$/);_0x376e82&&_0x85de1f['push'](formatAutomationTime(_0x376e82[0x1],0x0)+'\x20-\x20'+formatAutomationTime(_0x376e82[0x2],0x0));if(_0x22085a!=='*'){const _0x303748=[...parseRecurringDayToken(_0x22085a)]['sort']((_0x530a53,_0x32d214)=>Number['parseInt'](_0x530a53,0xa)-Number['parseInt'](_0x32d214,0xa))['map'](_0x195400=>AUTOMATION_WEEKDAYS['find'](_0xb76125=>_0xb76125['value']===_0x195400)?.['label']?.['slice'](0x0,0x3))['filter'](Boolean);_0x303748['length']>0x0&&_0x85de1f['push'](_0x303748['join'](',\x20'));}return _0x85de1f['join'](',\x20');}return _0x2018b7||'Custom\x20schedule';}function applyAutomationScheduleToForm(_0x5f38f1){const _0x144513=parseAutomationScheduleToFormState(_0x5f38f1);setAutomationTimeInputValue('automation-daily-time',_0x144513['dailyHour'],_0x144513['dailyMinute'],'2','0'),setAutomationTimeInputValue('automation-weekly-time',_0x144513['weeklyHour'],_0x144513['weeklyMinute'],'9','0'),document['getElementById']('automation-weekly-day')['value']=_0x144513['weeklyDay'],setAutomationTimeInputValue('automation-monthly-time',_0x144513['monthlyHour'],_0x144513['monthlyMinute'],'0','0'),document['getElementById']('automation-monthly-day')['value']=_0x144513['monthlyDay'],document['getElementById']('automation-recurring-interval')['value']=_0x144513['recurringInterval'],document['getElementById']('automation-recurring-start-hour')['value']=_0x144513['recurringStartHour'],document['getElementById']('automation-recurring-end-hour')['value']=_0x144513['recurringEndHour'],document['getElementById']('automation-custom-cron')['value']=_0x144513['frequency']==='custom'?_0x144513['customCron']:'',setRecurringDaySelectionToken(_0x144513['recurringDayToken']);const _0x2d6671=document['getElementById']('automation-frequency');_0x2d6671&&(_0x2d6671['value']=_0x144513['frequency']),refreshAllAutomationModalCustomSelects(),updateAutomationFrequencyFields(),updateAutomationScheduleSummary();}function getAutomationTemplates(){const _0x518928=state['selectedEnvData']?.['templates']||[];if(_0x518928['length']>0x0)return _0x518928['map'](_0xe13b3=>{const _0x59dbf9=_0xe13b3['filename']?.['replace'](/\.md$/,'')||_0xe13b3['title'];return{'name':_0x59dbf9,'title':_0xe13b3['title']||_0x59dbf9,'description':_0xe13b3['description']||'','parameters':_0xe13b3['parameters']||{}};});const _0x8e3426=state['selectedEnvData']?.['task_templates']||[];return _0x8e3426['map'](_0x898805=>({'name':_0x898805['name'],'title':_0x898805['title']||_0x898805['name'],'description':'','parameters':{}}));}function getSelectedAutomationTemplate(){const _0x2d8c26=document['getElementById']('automation-template-name')?.['value']||'';return getAutomationTemplates()['find'](_0x361659=>_0x361659['name']===_0x2d8c26)||null;}function renderAutomationTemplateOptions(_0x309222=''){const _0x340dfc=document['getElementById']('automation-template-name');if(!_0x340dfc)return;const _0x545d14=getAutomationTemplates();if(_0x545d14['length']===0x0){_0x340dfc['innerHTML']='<option\x20value=\x22\x22>No\x20templates\x20available</option>',_0x340dfc['value']='',refreshAutomationModalCustomSelect('automation-template-name');return;}_0x340dfc['innerHTML']=['<option\x20value=\x22\x22>Select\x20template...</option>',..._0x545d14['map'](_0xed6e8b=>'<option\x20value=\x22'+Utils['escapeHtml'](_0xed6e8b['name'])+'\x22>'+Utils['escapeHtml'](_0xed6e8b['title'])+'</option>')]['join'](''),_0x340dfc['value']=_0x309222&&_0x545d14['some'](_0x28088f=>_0x28088f['name']===_0x309222)?_0x309222:_0x545d14[0x0]['name'],refreshAutomationModalCustomSelect('automation-template-name');}function renderAutomationTemplateParameters(_0x18fe1d=null){const _0x21a3a1=document['getElementById']('automation-template-params');if(!_0x21a3a1)return;_0x18fe1d&&typeof _0x18fe1d==='object'&&(state['automationTemplateParamValues']={..._0x18fe1d});const _0x231f32=getSelectedAutomationTemplate(),_0x43d1c7=_0x231f32?.['parameters']&&typeof _0x231f32['parameters']==='object'?Object['entries'](_0x231f32['parameters']):[];if(_0x43d1c7['length']===0x0){_0x21a3a1['innerHTML']='<p\x20class=\x22text-muted\x20small\x22>This\x20template\x20has\x20no\x20parameters.</p>';return;}_0x21a3a1['innerHTML']=_0x43d1c7['map'](([_0x2da780,_0x296692])=>{const _0x5afed6=Boolean(_0x296692?.['required']),_0x17367b=_0x296692?.['type']||'string',_0x1c716e=state['automationTemplateParamValues'][_0x2da780]??_0x296692?.['default']??'',_0x563a9e=_0x296692?.['label']||_0x2da780,_0x3fbb7b=_0x296692?.['description']||'',_0x1f59dc=_0x17367b==='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'](_0x563a9e)+(_0x5afed6?'\x20*':'')+'</label>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<input\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20type=\x22'+_0x1f59dc+'\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'](_0x2da780)+'\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20value=\x22'+Utils['escapeHtml'](String(_0x1c716e))+'\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20placeholder=\x22'+Utils['escapeHtml'](_0x3fbb7b)+'\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20'+(_0x5afed6?'required':'')+'>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20';})['join'](''),_0x21a3a1['querySelectorAll']('[data-automation-param]')['forEach'](_0x35301c=>{_0x35301c['addEventListener']('input',()=>{const _0x1fb98a=_0x35301c['getAttribute']('data-automation-param');if(!_0x1fb98a)return;state['automationTemplateParamValues'][_0x1fb98a]=_0x35301c['value'];});});}function collectAutomationTemplateParameters(){const _0x588844=getSelectedAutomationTemplate(),_0xf8c92b=_0x588844?.['parameters']&&typeof _0x588844['parameters']==='object'?_0x588844['parameters']:{},_0x4df471={};return document['querySelectorAll']('[data-automation-param]')['forEach'](_0x330da7=>{const _0x18e1da=_0x330da7['getAttribute']('data-automation-param');if(!_0x18e1da)return;const _0x53381c=_0xf8c92b[_0x18e1da]||{},_0x453570=_0x330da7['value']??'',_0x37de0b=String(_0x453570)['trim']();if(_0x37de0b==='')return;if(_0x53381c['type']==='number'){const _0x3d40a4=Number(_0x37de0b);_0x4df471[_0x18e1da]=Number['isNaN'](_0x3d40a4)?_0x37de0b:_0x3d40a4;}else _0x53381c['type']==='boolean'?_0x4df471[_0x18e1da]=_0x37de0b['toLowerCase']()==='true':_0x4df471[_0x18e1da]=_0x37de0b;}),_0x4df471;}function setAutomationFormError(_0x513233=''){const _0x141617=document['getElementById']('automation-form-error');if(!_0x141617)return;_0x513233?(_0x141617['hidden']=![],_0x141617['textContent']=_0x513233):(_0x141617['hidden']=!![],_0x141617['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 _0x1e0900=state['selectedEnvData']?.['default_agent']||getAvailableAutomationAgentNames()[0x0]||'claude';setAutomationAgentSelection(_0x1e0900),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 _0x8b9437=document['getElementById']('automation-modal');if(!_0x8b9437)return;_0x8b9437['hidden']=!![],setAutomationFormError('');}function findAutomationById(_0x3a3af3){return state['automations']['find'](_0x4675df=>_0x4675df['id']===_0x3a3af3)||null;}function applyAutomationToModal(_0x299ef9){document['getElementById']('automation-name')['value']=_0x299ef9['name']||'',document['getElementById']('automation-description')['value']=_0x299ef9['description']||'',document['getElementById']('automation-task-name')['value']=_0x299ef9['task']?.['name']||'Automation\x20-\x20{{date}}',setAutomationAgentSelection(_0x299ef9['agent']?.['name']||state['selectedEnvData']?.['default_agent']||getAvailableAutomationAgentNames()[0x0]||'claude'),document['getElementById']('automation-effort-level')['value']=_0x299ef9['agent']?.['effortLevel']||'',document['getElementById']('automation-reasoning-level')['value']=_0x299ef9['agent']?.['reasoningLevel']||'',document['getElementById']('automation-enabled')['checked']=_0x299ef9['enabled']!==![];const _0x2e946a=_0x299ef9['task']?.['taskType']?'template':'instructions';document['querySelector']('input[name=\x22automation-task-mode\x22][value=\x22'+_0x2e946a+'\x22]')['checked']=!![],setAutomationInstructionsValue(_0x299ef9['task']?.['instructions']||''),renderAutomationTemplateOptions(_0x299ef9['task']?.['taskType']||''),state['automationTemplateParamValues']={..._0x299ef9['task']?.['parameters']||{}},renderAutomationTemplateParameters(state['automationTemplateParamValues']),refreshAllAutomationModalCustomSelects(),applyAutomationScheduleToForm(_0x299ef9['schedule']||'0\x202\x20*\x20*\x20*'),updateAutomationTaskMode(),updateAutomationAgentFields();}async function openAutomationModal(_0x4b7dad='create',_0x2b7818=null){if(!state['selectedEnv'])return;await loadAvailableAutomationModels(),initializeAutomationModalCustomSelects(),initializeAutomationInstructionsEditor(),renderAutomationAgentOptions(state['selectedEnvData']?.['default_agent']||''),initializeAutomationFormOptions(),resetAutomationModalForm();const _0x232458=document['getElementById']('automation-modal'),_0x35a2b2=document['getElementById']('automation-modal-title');if(!_0x232458||!_0x35a2b2)return;if(_0x4b7dad==='edit'&&_0x2b7818){state['automationModalMode']='edit',state['editingAutomationId']=_0x2b7818,_0x35a2b2['textContent']='Edit\x20Automation';const _0x3552dc=findAutomationById(_0x2b7818);if(_0x3552dc)applyAutomationToModal(_0x3552dc);else try{const _0x569a53=await API['getAutomation'](_0x2b7818);_0x569a53?.['automation']&&applyAutomationToModal(_0x569a53['automation']);}catch(_0x4cf4c9){setAutomationFormError(_0x4cf4c9['message']||'Failed\x20to\x20load\x20automation');}}else state['automationModalMode']='create',_0x35a2b2['textContent']='Create\x20Automation';_0x232458['hidden']=![];}function buildAutomationPayloadFromForm(){const _0x1c9fed=document['getElementById']('automation-name')?.['value']?.['trim']()||'',_0x4b2467=document['getElementById']('automation-description')?.['value']?.['trim']()||'',_0x3a6806=document['getElementById']('automation-task-name')?.['value']?.['trim']()||'',_0x24f1f0=document['getElementById']('automation-enabled')?.['checked']!==![],_0x5a9579=document['getElementById']('automation-agent-name')?.['value']||state['selectedEnvData']?.['default_agent']||getAvailableAutomationAgentNames()[0x0]||'claude',_0x2c3f6a=document['getElementById']('automation-effort-level')?.['value']||null,_0x316d88=document['getElementById']('automation-reasoning-level')?.['value']||null,_0x81faa8=getSelectedAutomationTaskMode();if(!_0x1c9fed)throw new Error('Automation\x20name\x20is\x20required');if(!_0x3a6806)throw new Error('Task\x20name\x20template\x20is\x20required');const _0xbdf82=buildAutomationScheduleFromForm();if(!_0xbdf82['cron'])throw new Error('Schedule\x20is\x20required');const _0x49b601={'name':_0x1c9fed,'description':_0x4b2467,'environment':state['selectedEnv'],'enabled':_0x24f1f0,'schedule':_0xbdf82['cron'],'agent':{'name':_0x5a9579,'effortLevel':_0x5a9579==='claude'?_0x2c3f6a||null:null,'reasoningLevel':_0x5a9579==='codex'?_0x316d88||null:null},'task':{'name':_0x3a6806,'instructions':'','taskType':null,'parameters':{},'skills':[]},'settings':{'retainHistoryDays':0x1e}};if(_0x81faa8==='template'){const _0x327f25=document['getElementById']('automation-template-name')?.['value']||'';if(!_0x327f25)throw new Error('Select\x20a\x20task\x20template');const _0x4fbfb6=getSelectedAutomationTemplate(),_0x35ae91=_0x4fbfb6?.['parameters']&&typeof _0x4fbfb6['parameters']==='object'?_0x4fbfb6['parameters']:{},_0x8bc4a2=collectAutomationTemplateParameters(),_0x370418=Object['entries'](_0x35ae91)['filter'](([_0x3141c2,_0x29c992])=>Boolean(_0x29c992?.['required'])&&String(_0x8bc4a2[_0x3141c2]??'')['trim']()==='')['map'](([_0xfb9768])=>_0xfb9768);if(_0x370418['length']>0x0)throw new Error('Missing\x20required\x20template\x20parameters:\x20'+_0x370418['join'](',\x20'));_0x49b601['task']['taskType']=_0x327f25,_0x49b601['task']['parameters']=_0x8bc4a2,_0x49b601['task']['instructions']=getAutomationInstructionsValue()['trim']();}else{const _0x544776=getAutomationInstructionsValue()['trim']();if(!_0x544776)throw new Error('Instructions\x20are\x20required');_0x49b601['task']['instructions']=_0x544776;}return _0x49b601;}async function saveAutomationFromModal(){try{setAutomationFormError('');const _0x5d559f=buildAutomationPayloadFromForm();state['automationModalMode']==='edit'&&state['editingAutomationId']?(await API['updateAutomation'](state['editingAutomationId'],_0x5d559f),Utils['showSuccess']('Automation\x20updated')):(await API['createAutomation'](_0x5d559f),Utils['showSuccess']('Automation\x20created')),closeAutomationModal(),await renderAutomations(),state['viewingAutomationId']&&await openAutomationHistoryView(state['viewingAutomationId']);}catch(_0x404bfb){setAutomationFormError(_0x404bfb['message']||'Failed\x20to\x20save\x20automation');}}function closeAutomationHistoryView(){const _0x62e9d3=document['getElementById']('automations-list-view'),_0x48b61b=document['getElementById']('automation-history-view');if(_0x62e9d3)_0x62e9d3['hidden']=![];if(_0x48b61b)_0x48b61b['hidden']=!![];state['viewingAutomationId']=null;}async function triggerAutomationById(_0x264873){try{await API['triggerAutomation'](_0x264873),Utils['showSuccess']('Automation\x20triggered'),await renderAutomations(),state['viewingAutomationId']===_0x264873&&await openAutomationHistoryView(_0x264873);}catch(_0x4d070d){Utils['showError'](_0x4d070d['message']||'Failed\x20to\x20trigger\x20automation');}}async function triggerViewedAutomation(){if(!state['viewingAutomationId'])return;await triggerAutomationById(state['viewingAutomationId']);}async function openAutomationHistoryView(_0x1d850b){const _0x1a7f25=findAutomationById(_0x1d850b);if(!_0x1a7f25)return;const _0x322e3e=document['getElementById']('automations-list-view'),_0x299a0e=document['getElementById']('automation-history-view'),_0x44ebbb=document['getElementById']('automation-history-title'),_0xfeb9fc=document['getElementById']('automation-history-subtitle'),_0x2391f8=document['getElementById']('automation-history-body'),_0x2675f3=document['getElementById']('automation-history-tasks-link');if(!_0x322e3e||!_0x299a0e||!_0x44ebbb||!_0xfeb9fc||!_0x2391f8)return;state['viewingAutomationId']=_0x1d850b,_0x322e3e['hidden']=!![],_0x299a0e['hidden']=![],_0x44ebbb['textContent']=_0x1a7f25['name'],_0xfeb9fc['textContent']=describeAutomationCron(_0x1a7f25['schedule'])+'\x20·\x20'+(_0x1a7f25['agent']?.['name']||'agent');_0x2675f3&&(_0x2675f3['href']=buildAutomationTaskFilterHref(_0x1d850b));try{const _0x1ee8ee=await API['getAutomationHistory'](_0x1d850b,0x32),_0x371f57=_0x1ee8ee['runs']||[];if(_0x371f57['length']===0x0){_0x2391f8['innerHTML']='<tr><td\x20colspan=\x224\x22\x20class=\x22text-muted\x22>No\x20runs\x20yet.</td></tr>';return;}_0x2391f8['innerHTML']=_0x371f57['map'](_0x514441=>{const _0x3c7646=_0x514441['status']==='failed'?'status-failed':_0x514441['status']==='running'?'status-running':'status-completed',_0x1609d2=_0x514441['triggeredAt']?new Date(_0x514441['triggeredAt'])['toLocaleString']():'-',_0x4d999b=_0x514441['taskId']?'<a\x20href=\x22task.html?id='+encodeURIComponent(_0x514441['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'](_0x1609d2)+'</td>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<td>'+Utils['escapeHtml'](_0x514441['triggeredBy']||'-')+'</td>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<td><span\x20class=\x22automation-run-status\x20'+_0x3c7646+'\x22>'+Utils['escapeHtml'](_0x514441['status']||'-')+'</span></td>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<td>'+_0x4d999b+'</td>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</tr>\x0a\x20\x20\x20\x20\x20\x20';})['join']('');}catch(_0xcb203a){_0x2391f8['innerHTML']='<tr><td\x20colspan=\x224\x22\x20class=\x22text-danger\x22>'+Utils['escapeHtml'](_0xcb203a['message']||'Failed\x20to\x20load\x20history')+'</td></tr>';}}async function deleteAutomationById(_0x36a564){const _0x3f9ef7=findAutomationById(_0x36a564);if(!_0x3f9ef7)return;const _0xf78de9=await ConfirmDialog['show']({'title':'Delete\x20Automation','message':'Delete\x20automation\x20\x22'+_0x3f9ef7['name']+'\x22?','confirmText':'Delete','danger':!![]});if(!_0xf78de9)return;try{await API['deleteAutomation'](_0x36a564),Utils['showSuccess']('Automation\x20deleted'),state['viewingAutomationId']===_0x36a564&&closeAutomationHistoryView(),await renderAutomations();}catch(_0x2bf5c2){Utils['showError'](_0x2bf5c2['message']||'Failed\x20to\x20delete\x20automation');}}async function handleAutomationTableToggleChange(_0x29ed03){const _0x5c1205=_0x29ed03['target']['closest']('[data-automation-toggle]');if(!_0x5c1205)return;const _0x3be1bd=_0x5c1205['getAttribute']('data-automation-toggle'),_0x2e4134=_0x5c1205['checked'];try{await API['setAutomationEnabled'](_0x3be1bd,_0x2e4134),Utils['showSuccess'](_0x2e4134?'Automation\x20enabled':'Automation\x20disabled'),await renderAutomations();}catch(_0x4436bb){_0x5c1205['checked']=!_0x2e4134,Utils['showError'](_0x4436bb['message']||'Failed\x20to\x20update\x20automation\x20status');}}async function handleAutomationTableActionClick(_0x4ea767){const _0x43205c=_0x4ea767['target']['closest']('[data-automation-action]');if(!_0x43205c)return;const _0x130678=_0x43205c['getAttribute']('data-automation-action'),_0xb2fbe2=_0x43205c['getAttribute']('data-automation-id');if(!_0xb2fbe2)return;if(_0x130678==='trigger'){await triggerAutomationById(_0xb2fbe2);return;}if(_0x130678==='edit'){await openAutomationModal('edit',_0xb2fbe2);return;}if(_0x130678==='delete'){await deleteAutomationById(_0xb2fbe2);return;}_0x130678==='history'&&await openAutomationHistoryView(_0xb2fbe2);}function renderAutomationsTable(){const _0x58c1eb=document['getElementById']('automations-count'),_0x1b9dad=document['getElementById']('automations-empty'),_0x40a495=document['getElementById']('automations-table-wrapper'),_0x2925ad=document['getElementById']('automations-table-body');if(!_0x58c1eb||!_0x1b9dad||!_0x40a495||!_0x2925ad)return;const _0x337841=state['automations']||[];_0x58c1eb['textContent']=_0x337841['length']+'\x20item'+(_0x337841['length']===0x1?'':'s');if(_0x337841['length']===0x0){_0x1b9dad['hidden']=![],_0x40a495['hidden']=!![],_0x2925ad['innerHTML']='';return;}_0x1b9dad['hidden']=!![],_0x40a495['hidden']=![],_0x2925ad['innerHTML']=_0x337841['map'](_0x4ade0d=>{const _0x1b9532=_0x4ade0d['description']?'<div\x20class=\x22text-muted\x20small\x22>'+Utils['escapeHtml'](_0x4ade0d['description'])+'</div>':'',_0x553f69=describeAutomationCron(_0x4ade0d['schedule']),_0x12d9a6=_0x4ade0d['lastRun']?'Last\x20run\x20'+Utils['formatRelativeTime'](_0x4ade0d['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'](_0x4ade0d['name'])+'</strong>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20'+_0x1b9532+'\x0a\x20\x20\x20\x20\x20\x20\x20\x20</td>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<td>'+Utils['escapeHtml'](_0x553f69)+'</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'](_0x4ade0d['id'])+'\x22\x20'+(_0x4ade0d['enabled']?'checked':'')+'>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22text-muted\x20small\x22>'+Utils['escapeHtml'](_0x12d9a6)+'</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'](_0x4ade0d['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'](_0x4ade0d['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'](_0x4ade0d['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 _0x3f5fb5=document['getElementById']('automations-loading'),_0x158071=document['getElementById']('automations-error');if(_0x3f5fb5)_0x3f5fb5['hidden']=![];_0x158071&&(_0x158071['hidden']=!![],_0x158071['textContent']='');const _0x2bae81=state['selectedEnv'];try{const _0x3c16ec=await API['getAutomations']({'environment':_0x2bae81});if(state['selectedEnv']!==_0x2bae81)return;state['automations']=_0x3c16ec['automations']||[],state['automationsLoadedEnv']=_0x2bae81,renderAutomationsTable(),updateTabBadge('badge-automations',state['automations']['length']);}catch(_0x3dcb00){console['error']('Failed\x20to\x20load\x20automations:',_0x3dcb00),_0x158071&&(_0x158071['hidden']=![],_0x158071['textContent']=_0x3dcb00['message']||'Failed\x20to\x20load\x20automations');}finally{if(_0x3f5fb5)_0x3f5fb5['hidden']=!![];}}async function handleAutomationDeepLinkParams(){const {env:_0x3e9202,tab:_0x4b3e61,automation:_0x991b7f}=parseAutomationDeepLinkParams(window['location']['search']);if(!_0x3e9202&&!_0x4b3e61&&!_0x991b7f)return;_0x3e9202&&_0x3e9202!==state['selectedEnv']&&state['environments']['some'](_0x550422=>_0x550422['name']===_0x3e9202)&&await selectEnvironment(_0x3e9202),_0x4b3e61&&switchTab(_0x4b3e61),_0x991b7f&&(switchTab('automations'),await renderAutomations(),await openAutomationHistoryView(_0x991b7f));}window['switchTab']=function(_0xe50b43){state['currentTab']=_0xe50b43,sessionStorage['setItem'](SESSION_KEY_TAB,_0xe50b43),document['querySelectorAll']('.content-tab')['forEach'](_0x33ab03=>{const _0x50c94b=_0x33ab03['dataset']['tab']===_0xe50b43;_0x33ab03['classList']['toggle']('active',_0x50c94b),_0x33ab03['setAttribute']('aria-selected',_0x50c94b);}),scrollToActiveContentTab(),document['querySelectorAll']('.tab-panel')['forEach'](_0x4a62d8=>{_0x4a62d8['hidden']=_0x4a62d8['id']!=='tab-'+_0xe50b43;}),_0xe50b43==='build'&&state['selectedEnv']&&(renderBuildTab(),loadBuildHistory()),_0xe50b43==='deploy'&&state['selectedEnv']&&(renderDeployProfiles(),loadDeploymentHistory()),_0xe50b43==='access'&&state['selectedEnv']&&loadAccessTab(),_0xe50b43==='automations'&&state['selectedEnv']&&renderAutomations(),_0xe50b43==='server'&&state['selectedEnv']&&renderServerConfig();};function renderRepos(){const _0x39e039=document['querySelector']('.repos-sidebar'),_0x215089=state['selectedEnvData']['repos']||[];updateTabBadge('badge-repos',_0x215089['length']);const _0x16a666=_0x39e039['querySelector']('#new-repo-tab'),_0x2e98b1=_0x215089['map']((_0x5a4f92,_0x144317)=>'\x0a\x20\x20\x20\x20<button\x20class=\x22repo-tab\x22\x20data-repo=\x22'+_0x144317+'\x22\x20onclick=\x22selectRepo('+_0x144317+')\x22>\x0a\x20\x20\x20\x20\x20\x20<span\x20class=\x22repo-icon\x22>📁</span>\x0a\x20\x20\x20\x20\x20\x20<span>'+Utils['escapeHtml'](_0x5a4f92['name'])+'</span>\x0a\x20\x20\x20\x20</button>\x0a\x20\x20')['join']('');_0x39e039['innerHTML']=_0x16a666['outerHTML']+_0x2e98b1,_0x39e039['querySelector']('#new-repo-tab')['addEventListener']('click',addRepo);if(_0x215089['length']>0x0&&state['currentRepo']===null)selectRepo(0x0);else _0x215089['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 _0x1341f9=state['selectedEnvData']?.['repos'];if(!Array['isArray'](_0x1341f9)||!_0x1341f9[state['currentRepo']])return;const _0xdc8bb4=document['getElementById']('repo-url'),_0x38c490=document['getElementById']('repo-allow-branch-selection'),_0x545858=document['getElementById']('repo-path'),_0x5d47d5=document['getElementById']('repo-description'),_0x9c309d=document['getElementById']('repo-clone-auto'),_0x251f86=document['getElementById']('repo-post-clone-action');if(!_0xdc8bb4||!_0x38c490||!_0x545858||!_0x5d47d5||!_0x9c309d||!_0x251f86)return;const _0x16c9f1=_0x1341f9[state['currentRepo']],_0x55f58e=document['getElementById']('edit-repo-provider')?.['value']||'',_0x2eab96=document['getElementById']('edit-repo-credential-mode')?.['value']||'app',_0x48b2dd=monacoEditors['get']('repo-custom-action-editor'),_0x59db13=_0x48b2dd?_0x48b2dd['getValue']()['trim']():'';let _0x3d7358;if(_0x251f86['value']==='custom'&&_0x59db13)_0x3d7358=_0x59db13;else _0x251f86['value']!=='none'&&_0x251f86['value']!=='custom'&&(_0x3d7358=_0x251f86['value']);const _0x5f5565={..._0x16c9f1,'url':_0xdc8bb4['value'],'branch':getEditRepoBranchValue(),'allow_branch_selection':_0x38c490['checked'],'path':_0x545858['value']||undefined,'description':_0x5d47d5['value']||undefined,'clone_auto':_0x9c309d['checked'],'post_clone_action':_0x3d7358||undefined};_0x55f58e?_0x5f5565['remote_provider']={'provider':_0x55f58e,'credential_mode':_0x2eab96}:delete _0x5f5565['remote_provider'],_0x1341f9[state['currentRepo']]=_0x5f5565;}window['selectRepo']=function(_0x744a2d){persistCurrentRepoFormChanges();const _0xaddfbb=monacoEditors['get']('repo-custom-action-editor');_0xaddfbb&&(_0xaddfbb['dispose'](),monacoEditors['delete']('repo-custom-action-editor'));state['currentRepo']=_0x744a2d;const _0xa32c8a=state['selectedEnvData']['repos'][_0x744a2d],_0x2f0cf7=_0xa32c8a['remote_provider']&&_0xa32c8a['remote_provider']['provider'];document['querySelectorAll']('.repo-tab')['forEach'](_0x51d7b9=>{_0x51d7b9['classList']['toggle']('active',_0x51d7b9['dataset']['repo']===String(_0x744a2d));}),document['getElementById']('current-repo-name')['textContent']=_0xa32c8a['name'],document['getElementById']('delete-repo-btn')['hidden']=![];const _0x326ec6='\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',_0x492c3d=_0xa32c8a['remote_provider']?.['credential_mode']||'app',_0x838ca1='\x0a\x20\x20\x20\x20<div\x20id=\x22edit-repo-credential-mode-row\x22\x20class=\x22form-row\x22\x20'+(_0x2f0cf7?'':'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'+(_0x492c3d==='app'?'selected':'')+'>App\x20Credentials</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\x22user\x22\x20'+(_0x492c3d==='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',_0x34b9ad='\x0a\x20\x20\x20\x20<div\x20id=\x22edit-repo-url-row\x22\x20class=\x22form-row\x22\x20'+(_0x2f0cf7?'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'](_0xa32c8a['url'])+'\x22\x20placeholder=\x22https://github.com/user/repo.git\x22>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20',_0x815bb4='\x0a\x20\x20\x20\x20<div\x20id=\x22edit-repo-autocomplete-row\x22\x20class=\x22form-row\x22\x20'+(_0x2f0cf7?'':'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',_0x27f7c1=document['getElementById']('repo-details-container');_0x27f7c1['innerHTML']='\x0a\x20\x20\x20\x20<div\x20class=\x22form-single-column\x22>\x0a\x20\x20\x20\x20\x20\x20'+_0x326ec6+'\x0a\x20\x20\x20\x20\x20\x20'+_0x838ca1+'\x0a\x20\x20\x20\x20\x20\x20'+_0x34b9ad+'\x0a\x20\x20\x20\x20\x20\x20'+_0x815bb4+'\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'+(_0xa32c8a['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'](_0xa32c8a['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'](_0xa32c8a['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'+(_0xa32c8a['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'+(!_0xa32c8a['post_clone_action']||_0xa32c8a['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'+(_0xa32c8a['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'+(_0xa32c8a['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'+(_0xa32c8a['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'+(_0xa32c8a['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'+(_0xa32c8a['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'+(_0xa32c8a['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'+(_0xa32c8a['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'+(_0xa32c8a['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'+(_0xa32c8a['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'+(_0xa32c8a['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'+(_0xa32c8a['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'+(_0xa32c8a['post_clone_action']==='custom'||_0xa32c8a['post_clone_action']&&!isKnownPostCloneAction(_0xa32c8a['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'+(_0xa32c8a['post_clone_action']&&!isKnownPostCloneAction(_0xa32c8a['post_clone_action'])&&_0xa32c8a['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(_0xa32c8a),initEditRepoBranchAutocomplete(_0xa32c8a);const _0x4edcf5=document['getElementById']('repo-branch-refresh-btn');_0x4edcf5&&(_0x4edcf5['onclick']=_0x14b728=>{_0x14b728['preventDefault'](),reloadEditRepoBranchSuggestions();});document['getElementById']('edit-repo-provider')['addEventListener']('change',onEditRepoProviderChange),document['getElementById']('repo-post-clone-action')['addEventListener']('change',async _0x2a5165=>{const _0x1961cc=document['getElementById']('repo-custom-action-row'),_0x5311f3=_0x2a5165['target']['value']==='custom';_0x1961cc['hidden']=!_0x5311f3;if(_0x5311f3){const _0x39725c=monacoEditors['get']('repo-custom-action-editor');if(!_0x39725c){const _0x5579f1=await createMonacoEditor('repo-custom-action-editor','','shell',![]);_0x5579f1&&(_0x5579f1['updateOptions']({'wordWrap':'off'}),_0x5579f1['onDidChangeModelContent'](()=>markAsModified()));}}markAsModified();});if(_0xa32c8a['post_clone_action']&&!isKnownPostCloneAction(_0xa32c8a['post_clone_action'])&&_0xa32c8a['post_clone_action']!=='none'){const _0x256f48=_0xa32c8a['post_clone_action'];createMonacoEditor('repo-custom-action-editor',_0x256f48,'shell',![])['then'](_0x17be8f=>{_0x17be8f&&(_0x17be8f['updateOptions']({'wordWrap':'off'}),_0x17be8f['onDidChangeModelContent'](()=>markAsModified()));});}const _0x1d7e3f=['repo-url','repo-allow-branch-selection','repo-path','repo-description','repo-clone-auto','edit-repo-credential-mode'];_0x1d7e3f['forEach'](_0x2ca948=>{const _0x516ce4=document['getElementById'](_0x2ca948);_0x516ce4&&(_0x516ce4['addEventListener']('input',markAsModified),_0x516ce4['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(_0x37a22c){const _0x376019=document['getElementById']('edit-repo-provider');if(!_0x376019)return;const _0x1d850e=_0x37a22c['remote_provider']&&_0x37a22c['remote_provider']['provider'];try{const _0x33844a=await API['get']('/environments/'+state['selectedEnv']+'/repos/providers'),_0x22d799=_0x33844a['providers']||[];let _0x2fd3bf='<option\x20value=\x22\x22>None</option>',_0x2b4ac7=![];_0x22d799['forEach'](_0x5bde0b=>{const _0x59d1e8=_0x1d850e&&_0x37a22c['remote_provider']['provider']===_0x5bde0b['name'];if(_0x59d1e8)_0x2b4ac7=!![];const _0x466096=_0x59d1e8?'selected':'';_0x2fd3bf+='<option\x20value=\x22'+Utils['escapeHtml'](_0x5bde0b['name'])+'\x22\x20'+_0x466096+'>'+Utils['escapeHtml'](_0x5bde0b['name'])+'\x20('+Utils['escapeHtml'](_0x5bde0b['type'])+')</option>';}),_0x1d850e&&!_0x2b4ac7&&(_0x2fd3bf+='<option\x20value=\x22'+Utils['escapeHtml'](_0x37a22c['remote_provider']['provider'])+'\x22\x20selected\x20disabled>'+Utils['escapeHtml'](_0x37a22c['remote_provider']['provider'])+'\x20(unavailable)</option>'),_0x376019['innerHTML']=_0x2fd3bf,state['editRepoProviders']=_0x22d799,initEditRepoAutocomplete(_0x37a22c);}catch(_0x3bc9ec){console['error']('Failed\x20to\x20load\x20providers\x20for\x20edit\x20repo:',_0x3bc9ec);}}function extractRepoFullName(_0x143977){if(!_0x143977)return'';try{const _0x44f321=_0x143977['match'](/\/([^/]+)\/_git\/([^/]+?)(?:\.git)?$/);if(_0x44f321)return _0x44f321[0x1]+'/'+_0x44f321[0x2];const _0x44726f=_0x143977['match'](/[/:]([^/:]+\/[^/]+?)(?:\.git)?$/);return _0x44726f?_0x44726f[0x1]:_0x143977;}catch{return _0x143977;}}function normalizeGitUrl(_0x23174e){if(!_0x23174e)return _0x23174e;const _0x2592b9=_0x23174e['match'](/^(https?:\/\/)[^@/]+@(.+)$/i);if(_0x2592b9)return''+_0x2592b9[0x1]+_0x2592b9[0x2];return _0x23174e;}function initEditRepoAutocomplete(_0x2fcb18){const _0x29d2aa=document['getElementById']('edit-repo-autocomplete-container');if(!_0x29d2aa)return;const _0x45099f=_0x2fcb18['remote_provider']&&_0x2fcb18['remote_provider']['provider'];editRepoAutocomplete&&(editRepoAutocomplete['destroy'](),editRepoAutocomplete=null);editRepoAutocomplete=new AutocompleteSelect(_0x29d2aa,{'placeholder':'Search\x20for\x20a\x20repository','maxItems':0x64,'emptyMessage':'No\x20repositories\x20found','loadingMessage':'Loading\x20repositories...','preload':![],'searchMode':'server','loadItems':async _0x2c4452=>{const _0x463a81=document['getElementById']('edit-repo-provider')['value'];if(!_0x463a81)return[];try{let _0x27b641='/environments/'+state['selectedEnv']+'/repos/available-from-provider?provider='+encodeURIComponent(_0x463a81)+'&limit=100';_0x2c4452&&_0x2c4452['trim']()&&(_0x27b641+='&search='+encodeURIComponent(_0x2c4452['trim']()));const _0x68aa69=await API['get'](_0x27b641);return _0x68aa69['repositories']||[];}catch(_0x1f69d4){console['error']('Failed\x20to\x20load\x20repositories:',_0x1f69d4);throw _0x1f69d4;}},'renderItem':_0x20c8bd=>{const _0x5f1dc1=_0x20c8bd['private']===!![];let _0x2e551f=_0x20c8bd['description']||'no\x20description';return _0x20c8bd['descriptionSource']==='project'&&_0x20c8bd['description']&&(_0x2e551f='Project:\x20'+_0x20c8bd['description']),{'primary':_0x20c8bd['full_name']||_0x20c8bd['name'],'secondary':_0x2e551f,'icon':_0x5f1dc1?REPO_ICON_PRIVATE:REPO_ICON_PUBLIC,'iconClass':_0x5f1dc1?'icon-private':'icon-public'};},'sortItems':_0x132b94=>{return _0x132b94['sort']((_0x4314f1,_0x1263d4)=>{const _0x2be141=(_0x4314f1['full_name']||_0x4314f1['name']||'')['toLowerCase'](),_0xd3ad36=(_0x1263d4['full_name']||_0x1263d4['name']||'')['toLowerCase']();return _0x2be141['localeCompare'](_0xd3ad36);});},'getItemValue':_0x452258=>_0x452258['clone_url']||_0x452258['url'],'onSelect':_0x2c9de1=>{if(_0x2c9de1){const _0x2a1183=document['getElementById']('repo-url');_0x2a1183&&(_0x2a1183['value']=_0x2c9de1['clone_url']||_0x2c9de1['url']||''),setEditRepoBranchValue(_0x2c9de1['default_branch']||'main'),reloadEditRepoBranchSuggestions(),markAsModified();}}});if(_0x45099f){editRepoAutocomplete['enable'](),editRepoAutocomplete['preloadData']();const _0x2ac348={'full_name':extractRepoFullName(_0x2fcb18['url']),'clone_url':_0x2fcb18['url'],'name':_0x2fcb18['name']};editRepoAutocomplete['setValue'](_0x2ac348);}else editRepoAutocomplete['disable']();}function onEditRepoProviderChange(){const _0x4a0596=document['getElementById']('edit-repo-provider')['value'],_0x4078fb=document['getElementById']('edit-repo-url-row'),_0x20da16=document['getElementById']('edit-repo-autocomplete-row'),_0x1b685c=document['getElementById']('edit-repo-credential-mode-row'),_0x346b38=document['getElementById']('repo-url');if(_0x4a0596){_0x4078fb['hidden']=!![],_0x20da16['hidden']=![];if(_0x1b685c)_0x1b685c['hidden']=![];_0x346b38&&(_0x346b38['value']=''),editRepoAutocomplete&&(editRepoAutocomplete['reset'](),editRepoAutocomplete['enable'](),editRepoAutocomplete['preloadData']());}else{_0x4078fb['hidden']=![],_0x20da16['hidden']=!![];if(_0x1b685c)_0x1b685c['hidden']=!![];_0x346b38&&(_0x346b38['value']=''),editRepoAutocomplete&&(editRepoAutocomplete['reset'](),editRepoAutocomplete['disable']());}reloadEditRepoBranchSuggestions(),markAsModified();}function cleanupEditRepoAutocomplete(){editRepoAutocomplete&&(editRepoAutocomplete['destroy'](),editRepoAutocomplete=null),editRepoBranchAutocomplete&&(editRepoBranchAutocomplete['destroy'](),editRepoBranchAutocomplete=null);}function initEditRepoBranchAutocomplete(_0x262d3e){const _0x5f1ce4=document['getElementById']('repo-branch-field');if(!_0x5f1ce4)return;editRepoBranchAutocomplete&&(editRepoBranchAutocomplete['destroy'](),editRepoBranchAutocomplete=null);editRepoBranchAutocomplete=new AutocompleteSelect(_0x5f1ce4,{'placeholder':'Search\x20for\x20a\x20branch','maxItems':0x64,'emptyMessage':'No\x20branches\x20found','loadingMessage':'Loading\x20branches...','preload':![],'searchMode':'server','loadItems':async _0x481428=>{const {providerName:_0xa63769,repoUrl:_0x2ae9bc}=getEditRepoBranchContext();if(!_0xa63769||!_0x2ae9bc)return[];return fetchRepoBranches({'providerName':_0xa63769,'repoUrl':_0x2ae9bc,'query':_0x481428});},'renderItem':_0x14495a=>({'primary':_0x14495a['name'],'secondary':_0x14495a['isDefault']?'default':''}),'sortItems':_0x24a0cc=>_0x24a0cc['sort']((_0x5c0afc,_0x4bcc39)=>{if(_0x5c0afc['isDefault'])return-0x1;if(_0x4bcc39['isDefault'])return 0x1;return(_0x5c0afc['name']||'')['localeCompare'](_0x4bcc39['name']||'');}),'getItemValue':_0x42ea9f=>_0x42ea9f['name'],'onSelect':_0x347dea=>{_0x347dea&&setEditRepoBranchValue(_0x347dea['name']),markAsModified();}}),setEditRepoBranchValue(_0x262d3e?.['branch']||'main');editRepoBranchAutocomplete['input']&&editRepoBranchAutocomplete['input']['addEventListener']('input',()=>{clearBranchAutocompleteError(editRepoBranchAutocomplete),markAsModified();});const _0x49cae2=document['getElementById']('edit-repo-provider')?.['value']||'',_0x20f168=document['getElementById']('repo-url')?.['value']?.['trim']()||'';_0x49cae2&&_0x20f168&&editRepoBranchAutocomplete['preloadData']();}function validateEditRepoForm(){const _0x5a3ea0=document['getElementById']('edit-repo-provider')?.['value']||'',_0xfb991b=document['getElementById']('repo-url')?.['value']?.['trim']()||'',_0x5ad3dc=getEditRepoBranchValue(),_0x1aa1f1=[];return _0x5a3ea0?!_0xfb991b&&_0x1aa1f1['push']('Please\x20select\x20a\x20repository\x20from\x20the\x20provider'):!_0xfb991b&&_0x1aa1f1['push']('Repository\x20URL\x20is\x20required'),!_0x5ad3dc&&_0x1aa1f1['push']('Branch\x20is\x20required'),_0x1aa1f1;}function addRepo(){const _0x2ca939=document['getElementById']('new-repo-url'),_0x182814=document['getElementById']('new-repo-name'),_0x558d18=document['getElementById']('add-repo-error');document['getElementById']('repo-modal-title')['textContent']='Add\x20Repository',_0x2ca939['value']='',_0x182814['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 _0xbd6600=document['getElementById']('new-repo-credential-mode');_0xbd6600&&(_0xbd6600['value']='app');_0x2ca939['classList']['remove']('input-error'),_0x182814['classList']['remove']('input-error'),clearBranchAutocompleteError(newRepoBranchAutocomplete),_0x558d18['hidden']=!![];const _0x54be25=_0x2d9b19=>_0x2d9b19['target']['classList']['remove']('input-error');_0x2ca939['addEventListener']('input',_0x54be25,{'once':!![]}),_0x182814['addEventListener']('input',_0x54be25,{'once':!![]}),_0x2ca939['addEventListener']('input',()=>{const _0x1c03d4=_0x2ca939['value']['trim']();if(_0x1c03d4&&!_0x182814['value']){const _0x36fb49=_0x1c03d4['split']('/'),_0x1944df=_0x36fb49[_0x36fb49['length']-0x1]['replace'](/\.git$/,'');_0x182814['placeholder']=_0x1944df||'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 _0x21ae09=document['getElementById']('new-repo-branch-field');if(!_0x21ae09)return;newRepoBranchAutocomplete&&(newRepoBranchAutocomplete['destroy'](),newRepoBranchAutocomplete=null),newRepoBranchAutocomplete=new AutocompleteSelect(_0x21ae09,{'placeholder':'Search\x20for\x20a\x20branch','maxItems':0x64,'emptyMessage':'No\x20branches\x20found','loadingMessage':'Loading\x20branches...','preload':![],'searchMode':'server','loadItems':async _0x40c29a=>{const {providerName:_0xb2b000,repoUrl:_0x2d4f75}=getNewRepoBranchContext();if(!_0xb2b000||!_0x2d4f75)return[];return fetchRepoBranches({'providerName':_0xb2b000,'repoUrl':_0x2d4f75,'query':_0x40c29a});},'renderItem':_0x3375f0=>({'primary':_0x3375f0['name'],'secondary':_0x3375f0['isDefault']?'default':''}),'sortItems':_0x4e08d4=>_0x4e08d4['sort']((_0x46c4cc,_0x588c0a)=>{if(_0x46c4cc['isDefault'])return-0x1;if(_0x588c0a['isDefault'])return 0x1;return(_0x46c4cc['name']||'')['localeCompare'](_0x588c0a['name']||'');}),'getItemValue':_0x1dd8ce=>_0x1dd8ce['name'],'onSelect':_0x15b83d=>{_0x15b83d&&setNewRepoBranchValue(_0x15b83d['name']);}}),newRepoBranchAutocomplete['input']&&newRepoBranchAutocomplete['input']['addEventListener']('input',()=>{clearBranchAutocompleteError(newRepoBranchAutocomplete);});}async function confirmAddRepo(){const _0x3e6d3b=document['getElementById']('new-repo-url'),_0x12e4c9=document['getElementById']('new-repo-name'),_0x3c3b72=document['getElementById']('add-repo-error'),_0x1c1ffc=_0x3e6d3b['value']['trim'](),_0x27279d=getNewRepoBranchValue();let _0x95ea3d=_0x12e4c9['value']['trim']();_0x3e6d3b['classList']['remove']('input-error'),_0x12e4c9['classList']['remove']('input-error'),clearBranchAutocompleteError(newRepoBranchAutocomplete),_0x3c3b72['hidden']=!![];const _0x66ca5b=document['querySelector']('input[name=\x22repo-entry-mode\x22]:checked')['value'];let _0x855a38=![],_0x4df84f='';if(_0x66ca5b==='provider'){const _0x101ad8=document['getElementById']('new-repo-source-provider')['value'],_0x2a4ae3=repoAutocomplete?repoAutocomplete['getSelectedItem']():null;if(!_0x101ad8)_0x4df84f='Please\x20select\x20a\x20Git\x20provider',_0x855a38=!![];else!_0x2a4ae3&&(_0x4df84f='Please\x20select\x20a\x20repository',_0x855a38=!![]);}else!_0x1c1ffc&&(_0x3e6d3b['classList']['add']('input-error'),_0x4df84f='Repository\x20URL\x20is\x20required',_0x855a38=!![]);!_0x27279d&&(setBranchAutocompleteErrorState(newRepoBranchAutocomplete,!![]),_0x4df84f=_0x4df84f||'Branch\x20is\x20required',_0x855a38=!![]);if(!_0x95ea3d&&_0x1c1ffc){const _0xb43df1=_0x1c1ffc['split']('/');_0x95ea3d=_0xb43df1[_0xb43df1['length']-0x1]['replace'](/\.git$/,'');}!_0x95ea3d&&(_0x12e4c9['classList']['add']('input-error'),_0x4df84f=_0x4df84f||'Repository\x20name\x20is\x20required',_0x855a38=!![]);if(_0x855a38){_0x3c3b72['textContent']=_0x4df84f,_0x3c3b72['hidden']=![];return;}const _0x5d9081={'name':_0x95ea3d,'url':_0x1c1ffc,'branch':_0x27279d,'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(_0x66ca5b==='provider'){const _0x4f2545=document['getElementById']('new-repo-source-provider')['value'];if(_0x4f2545){const _0x48669f=document['getElementById']('new-repo-credential-mode')?.['value']||'app';_0x5d9081['remote_provider']={'provider':_0x4f2545,'credential_mode':_0x48669f};}}state['selectedEnvData']['repos']=[...state['selectedEnvData']['repos']||[],_0x5d9081],renderRepos(),markAsModified(),closeAddRepoModal(),Utils['showSuccess']('Repository\x20added\x20(click\x20Save\x20to\x20persist\x20changes)');}async function loadRepoModalProviders(){try{const _0x47286f=await API['get']('/environments/'+state['selectedEnv']+'/repos/providers'),_0x593b0d=_0x47286f['providers']||[],_0x25b801=document['getElementById']('new-repo-source-provider');_0x25b801['innerHTML']='<option\x20value=\x22\x22>--\x20Select\x20a\x20provider\x20--</option>',_0x593b0d['forEach'](_0x2712b9=>{_0x25b801['innerHTML']+='<option\x20value=\x22'+Utils['escapeHtml'](_0x2712b9['name'])+'\x22>'+Utils['escapeHtml'](_0x2712b9['name'])+'\x20('+Utils['escapeHtml'](_0x2712b9['type'])+')</option>';});}catch(_0x56aad4){console['error']('Failed\x20to\x20load\x20providers\x20for\x20repo\x20modal:',_0x56aad4);}}function onRepoEntryModeChange(_0x36d7c4){const _0x562228=_0x36d7c4['target']['value'],_0x51490f=document['getElementById']('repo-provider-selection'),_0x10dd65=document['getElementById']('repo-url-row'),_0x3f3c74=document['getElementById']('new-repo-url'),_0x4debc3=document['getElementById']('new-repo-name'),_0x47a97b=document['getElementById']('new-repo-source-provider');_0x562228==='provider'?(_0x51490f['hidden']=![],_0x10dd65['hidden']=!![],_0x47a97b['value']='',initRepoAutocomplete(),_0x4debc3['placeholder']='Auto-extracted\x20from\x20URL'):(_0x51490f['hidden']=!![],_0x10dd65['hidden']=![],_0x3f3c74['value']='',repoAutocomplete&&(repoAutocomplete['reset'](),repoAutocomplete['disable']()),_0x4debc3['placeholder']='Auto-extracted\x20from\x20URL'),reloadNewRepoBranchSuggestions();}function initRepoAutocomplete(){const _0x56c06b=document['getElementById']('repo-autocomplete-container');if(!_0x56c06b)return;repoAutocomplete&&repoAutocomplete['destroy'](),repoAutocomplete=new AutocompleteSelect(_0x56c06b,{'placeholder':'Search\x20for\x20a\x20repository','maxItems':0x64,'emptyMessage':'No\x20repositories\x20found','loadingMessage':'Loading\x20repositories...','preload':![],'searchMode':'server','loadItems':async _0x20c61e=>{const _0x490bca=document['getElementById']('new-repo-source-provider')['value'];if(!_0x490bca)return[];try{let _0x269fb0='/environments/'+state['selectedEnv']+'/repos/available-from-provider?provider='+encodeURIComponent(_0x490bca)+'&limit=100';_0x20c61e&&_0x20c61e['trim']()&&(_0x269fb0+='&search='+encodeURIComponent(_0x20c61e['trim']()));const _0x5dcb72=await API['get'](_0x269fb0);return _0x5dcb72['repositories']||[];}catch(_0x4c46be){console['error']('Failed\x20to\x20load\x20repositories:',_0x4c46be);throw _0x4c46be;}},'renderItem':_0x34176e=>{const _0x4600cb=_0x34176e['private']===!![];let _0x1426e7=_0x34176e['description']||'no\x20description';return _0x34176e['descriptionSource']==='project'&&_0x34176e['description']&&(_0x1426e7='Project:\x20'+_0x34176e['description']),{'primary':_0x34176e['full_name']||_0x34176e['name'],'secondary':_0x1426e7,'icon':_0x4600cb?REPO_ICON_PRIVATE:REPO_ICON_PUBLIC,'iconClass':_0x4600cb?'icon-private':'icon-public'};},'sortItems':_0xe85b4c=>{return _0xe85b4c['sort']((_0x4e9e0a,_0x49adb9)=>{const _0x2280ee=(_0x4e9e0a['full_name']||_0x4e9e0a['name']||'')['toLowerCase'](),_0x4f364e=(_0x49adb9['full_name']||_0x49adb9['name']||'')['toLowerCase']();return _0x2280ee['localeCompare'](_0x4f364e);});},'getItemValue':_0x66a649=>_0x66a649['clone_url']||_0x66a649['url'],'onSelect':_0x46d4ca=>{const _0x5d2b41=document['getElementById']('new-repo-url'),_0x372453=document['getElementById']('new-repo-name');if(_0x46d4ca){_0x5d2b41['value']=_0x46d4ca['clone_url']||_0x46d4ca['url']||'';const _0x5a7cf7=(_0x46d4ca['full_name']||_0x46d4ca['name']||'')['split']('/')['pop']()||'';_0x372453['placeholder']=_0x5a7cf7||'Auto-extracted\x20from\x20URL',setNewRepoBranchValue(_0x46d4ca['default_branch']||'main'),reloadNewRepoBranchSuggestions();}else _0x5d2b41['value']='',_0x372453['placeholder']='Auto-extracted\x20from\x20URL',setNewRepoBranchValue('main');}}),repoAutocomplete['disable']();}function onRepoSourceProviderChange(){const _0x5067e9=document['getElementById']('new-repo-source-provider')['value'],_0x49e745=document['getElementById']('new-repo-url'),_0x42f991=document['getElementById']('new-repo-name');_0x49e745['value']='',_0x42f991['placeholder']='Auto-extracted\x20from\x20URL';if(!_0x5067e9){repoAutocomplete&&(repoAutocomplete['reset'](),repoAutocomplete['disable']());reloadNewRepoBranchSuggestions();return;}repoAutocomplete&&(repoAutocomplete['reset'](),repoAutocomplete['enable'](),repoAutocomplete['preloadData']()),setNewRepoBranchValue('main'),reloadNewRepoBranchSuggestions();}function onRepoFromProviderSelect(){}window['editRepo']=function(_0x38a941){selectRepo(_0x38a941);},window['removeRepo']=function(_0x5083e6){const _0x2052f5=state['selectedEnvData']['repos'][_0x5083e6];document['getElementById']('delete-repo-name')['textContent']=_0x2052f5['name']||_0x2052f5['url'],document['getElementById']('delete-repo-confirm-btn')['dataset']['repoIndex']=_0x5083e6,document['getElementById']('delete-repo-modal')['hidden']=![];};function closeDeleteRepoModal(){document['getElementById']('delete-repo-modal')['hidden']=!![];}function confirmDeleteRepo(){const _0x1dbe7c=parseInt(document['getElementById']('delete-repo-confirm-btn')['dataset']['repoIndex']);state['selectedEnvData']['repos']=state['selectedEnvData']['repos']['filter']((_0x50446e,_0x4bd572)=>_0x4bd572!==_0x1dbe7c);if(state['currentRepo']===_0x1dbe7c)state['currentRepo']=null,cleanupEditRepoAutocomplete();else state['currentRepo']>_0x1dbe7c&&state['currentRepo']--;renderRepos(),markAsModified(),closeDeleteRepoModal(),Utils['showSuccess']('Repository\x20removed\x20(click\x20Save\x20to\x20persist\x20changes)');}function renderServerConfig(){const _0x55e600=state['selectedEnvData']['application_server'],_0xc31e37=_0x55e600?.['enabled']||![],_0x4abbb9=state['selectedEnvData']?.['external_connections']||[],_0x10cb2d=_0x4abbb9['find'](_0x410ae8=>_0x410ae8['type']==='ibmi'&&(_0x410ae8['config']?.['features']||[])['includes']('interactive')&&_0x410ae8['config']?.['pui_base_url']),_0x559c4b=document['getElementById']('server-connection-banner'),_0x30fc1b=document['getElementById']('server-enabled'),_0x21ebd4=document['getElementById']('server-name'),_0x1d41a7=document['getElementById']('server-proxy');if(_0x10cb2d){const _0x32aac6=Utils['escapeHtml'](_0x10cb2d['name']||'IBM\x20i\x20Session');_0x559c4b['innerHTML']='<strong>External\x20Connection:</strong>\x20App\x20server\x20proxy,\x20launch\x20URL,\x20and\x20authentication\x20are\x20configured\x20by\x20connection\x20<strong>'+_0x32aac6+'</strong>.\x20Edit\x20the\x20connection\x20to\x20change\x20these\x20settings.',_0x559c4b['hidden']=![],_0x30fc1b['checked']=!![],_0x30fc1b['disabled']=!![],document['getElementById']('server-config')['hidden']=![],_0x21ebd4['value']=_0x10cb2d['name']||'IBM\x20i\x20Session',_0x21ebd4['disabled']=!![],addConnectionHint(_0x21ebd4,_0x32aac6),_0x1d41a7['value']=_0x10cb2d['config']['pui_base_url'],_0x1d41a7['disabled']=!![],addConnectionHint(_0x1d41a7,_0x32aac6);const _0x5202a4=document['getElementById']('env-screen-render-url');if(_0x5202a4){const _0x1e150d=_0x10cb2d['config']['pui_render_path']||'/profoundui/genie';_0x5202a4['value']=''+_0x10cb2d['config']['pui_base_url']+_0x1e150d,_0x5202a4['disabled']=!![],addConnectionHint(_0x5202a4,_0x32aac6);}}else{_0x559c4b['hidden']=!![],_0x559c4b['innerHTML']='',_0x30fc1b['checked']=_0xc31e37,_0x30fc1b['disabled']=![],document['getElementById']('server-config')['hidden']=!_0xc31e37,_0x21ebd4['value']=_0x55e600?.['name']||'',_0x21ebd4['disabled']=![],removeConnectionHint(_0x21ebd4),_0x1d41a7['value']=_0x55e600?.['proxy']||'',_0x1d41a7['disabled']=![],removeConnectionHint(_0x1d41a7);const _0x34f705=document['getElementById']('env-screen-render-url');_0x34f705&&_0x34f705['disabled']&&(_0x34f705['disabled']=![],removeConnectionHint(_0x34f705));}const _0x3026fa=monacoEditors['get']('server-command-editor');_0x3026fa?_0x3026fa['setValue'](_0x55e600?.['start_command']||''):createMonacoEditor('server-command-editor',_0x55e600?.['start_command']||'','shell',![])['then'](_0x338066=>{_0x338066&&(_0x338066['updateOptions']({'wordWrap':'off'}),_0x338066['onDidChangeModelContent'](()=>markAsModified()));});document['getElementById']('server-qa-url')['value']=_0x55e600?.['qa_url']||'';const _0x5dba33=_0x55e600?.['basic_auth']||{};document['getElementById']('server-auth-user-property')['value']=_0x5dba33['user_property']||'',document['getElementById']('server-auth-password-property')['value']=_0x5dba33['password_property']||'',renderPorts(_0x55e600?.['ports']||[]);if(_0x10cb2d){const _0x2a2df7=_0x10cb2d['config']['pui_launch_path']||'/profoundui/auth/genie',_0x4f1488=_0x10cb2d['name']||'IBM\x20i\x20Session';state['_connectionLaunchUrl']={'name':'Genie\x20('+_0x4f1488+')','path':_0x2a2df7,'description':'From\x20connection:\x20'+_0x4f1488};}else state['_connectionLaunchUrl']=null;renderURLs(_0x55e600?.['launch_urls']||[]),renderProxyHeaders(_0x55e600?.['proxy_headers']||{}),renderPortQaUrls(_0x55e600?.['port_qa_urls']||{}),renderVolumeMounts(state['selectedEnvData']?.['volume_mounts']||[]);}function addConnectionHint(_0x10de04,_0x28e22a){removeConnectionHint(_0x10de04);const _0x4ecf94=document['createElement']('small');_0x4ecf94['className']='form-hint\x20connection-hint',_0x4ecf94['textContent']='From\x20connection\x20\x22'+_0x28e22a+'\x22',_0x10de04['parentNode']['appendChild'](_0x4ecf94);}function removeConnectionHint(_0x12e1bd){const _0x3e0280=_0x12e1bd['parentNode']?.['querySelector']('.connection-hint');if(_0x3e0280)_0x3e0280['remove']();}function toggleRebuildSchedule(){const _0x2ce77b=document['getElementById']('rebuild-schedule-enabled-build-tab')['checked'];document['getElementById']('rebuild-schedule-config-build-tab')['hidden']=!_0x2ce77b,markAsModified();}function toggleServerConfig(){const _0x5c3b90=document['getElementById']('server-enabled')['checked'];document['getElementById']('server-config')['hidden']=!_0x5c3b90,markAsModified();}function renderPorts(_0x3237c5){const _0x401a99=document['getElementById']('ports-list');_0x401a99['innerHTML']=_0x3237c5['map']((_0x3b5a0a,_0x475b99)=>'\x0a\x20\x20\x20\x20<div\x20class=\x22config-item\x22>\x0a\x20\x20\x20\x20\x20\x20<input\x20type=\x22number\x22\x20value=\x22'+_0x3b5a0a['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'](_0x3b5a0a['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('+_0x475b99+')\x22>×</button>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20')['join']('');}function renderURLs(_0x5c59e9){const _0xba6b3a=document['getElementById']('urls-list'),_0x5cecfe=_0x5c59e9['findIndex'](_0x782639=>_0x782639?.['primary']),_0x4d0077=document['getElementById']('clear-primary-url-btn');_0x4d0077&&(_0x4d0077['disabled']=_0x5cecfe===-0x1||!!state['_connectionLaunchUrl']);let _0x776454='';const _0x540ba4=state['_connectionLaunchUrl'];_0x540ba4&&(_0x776454+='\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'](_0x540ba4['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'](_0x540ba4['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'](_0x540ba4['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'),_0x776454+=_0x5c59e9['map']((_0x11d5b2,_0x54c92b)=>{const _0x501f1b=_0x5cecfe===-0x1?![]:_0x54c92b===_0x5cecfe;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'](_0x11d5b2['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'](_0x11d5b2['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'+(_0x11d5b2['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'](_0x11d5b2['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'+(_0x501f1b?'is-primary':'')+'\x22\x20title=\x22'+(_0x540ba4?'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'+(_0x501f1b?'checked':'')+'\x20'+(_0x540ba4?'disabled':'onclick=\x22setPrimaryURL('+_0x54c92b+')\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('+_0x54c92b+',\x20-1)\x22\x20title=\x22Move\x20up\x22\x20aria-label=\x22Move\x20URL\x20up\x22\x20'+(_0x54c92b===0x0?'disabled':'')+'>↑</button>\x0a\x20\x20\x20\x20\x20\x20<button\x20class=\x22btn-icon\x22\x20onclick=\x22moveURL('+_0x54c92b+',\x201)\x22\x20title=\x22Move\x20down\x22\x20aria-label=\x22Move\x20URL\x20down\x22\x20'+(_0x54c92b===_0x5c59e9['length']-0x1?'disabled':'')+'>↓</button>\x0a\x20\x20\x20\x20\x20\x20<button\x20class=\x22btn-icon\x22\x20onclick=\x22removeURL('+_0x54c92b+')\x22>×</button>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20';})['join'](''),_0xba6b3a['innerHTML']=_0x776454;}function collectURLsFromForm(_0x2d8405=![]){const _0x51fcb4=document['getElementById']('urls-list');if(!_0x51fcb4)return[];const _0xb620c6=_0x51fcb4['querySelectorAll']('.config-item'),_0x2f61e3=[];let _0x7349c2=![];return _0xb620c6['forEach'](_0x455244=>{if(_0x455244['hasAttribute']('data-connection-derived'))return;const _0x89ce25=_0x455244['querySelector']('input[data-field=\x22name\x22]'),_0x3df2b5=_0x455244['querySelector']('input[data-field=\x22path\x22]'),_0x26727a=_0x455244['querySelector']('input[data-field=\x22port\x22]'),_0x29f706=_0x455244['querySelector']('input[data-field=\x22description\x22]'),_0x481e3d=_0x455244['querySelector']('input[data-field=\x22primary\x22]');if(!_0x89ce25||!_0x3df2b5||!_0x26727a||!_0x29f706)return;const _0x551d2f=_0x89ce25['value']['trim'](),_0x2b0d42=_0x3df2b5['value']['trim'](),_0x967e7d=_0x26727a['value']['trim'](),_0x5501c0=_0x29f706['value']['trim'](),_0x32b398=_0x551d2f||_0x2b0d42||_0x967e7d||_0x5501c0;if(_0x2d8405||_0x32b398){const _0x1c345f={'name':_0x551d2f,'path':_0x2b0d42};if(_0x967e7d)_0x1c345f['port']=parseInt(_0x967e7d,0xa);else _0x2d8405&&(_0x1c345f['port']='');if(_0x5501c0)_0x1c345f['description']=_0x5501c0;else _0x2d8405&&(_0x1c345f['description']='');const _0x1a647e=_0x481e3d?.['checked']||![];_0x1a647e&&!_0x7349c2&&_0x32b398&&(_0x1c345f['primary']=!![],_0x7349c2=!![]),_0x2f61e3['push'](_0x1c345f);}}),_0x2f61e3;}function renderProxyHeaders(_0x1db83d){const _0x599f6f=document['getElementById']('proxy-headers-list'),_0x3fd82d=Object['entries'](_0x1db83d);_0x599f6f['innerHTML']=_0x3fd82d['map'](([_0x24b640,_0x50f226],_0x9ab47d)=>'\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'](_0x24b640)+'\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'](_0x50f226)+'\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('+_0x9ab47d+')\x22>×</button>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20')['join']('');}function renderPortQaUrls(_0x5149d3){const _0x409181=document['getElementById']('port-qa-urls-list'),_0x2b9420=Object['entries'](_0x5149d3);_0x409181['innerHTML']=_0x2b9420['map'](([_0x3c98be,_0x28a909],_0x103527)=>'\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'](_0x3c98be)+'\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'](_0x28a909)+'\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('+_0x103527+')\x22>×</button>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20')['join']('');}function addPortQaUrl(){const _0x4da4ef=document['getElementById']('port-qa-urls-list'),_0x581f89=_0x4da4ef['querySelectorAll']('.config-item');if(_0x581f89['length']>0x0){const _0x26330b=_0x581f89[_0x581f89['length']-0x1],_0x3f5746=_0x26330b['querySelectorAll']('input'),_0x539481=_0x3f5746[0x0]['value']['trim'](),_0x3db03b=_0x3f5746[0x1]['value']['trim']();if(!_0x539481&&!_0x3db03b)return;}const _0x1ed35c=state['selectedEnvData']['application_server']||{},_0x5bbd28=_0x1ed35c['port_qa_urls']||{};_0x5bbd28['']='',!state['selectedEnvData']['application_server']&&(state['selectedEnvData']['application_server']={}),state['selectedEnvData']['application_server']['port_qa_urls']=_0x5bbd28,renderPortQaUrls(_0x5bbd28),markAsModified();}function removePortQaUrl(_0x52cb2f){const _0x24ddc1=document['getElementById']('port-qa-urls-list'),_0x4ba2d5=_0x24ddc1['querySelectorAll']('.config-item');_0x52cb2f>=0x0&&_0x52cb2f<_0x4ba2d5['length']&&(_0x4ba2d5[_0x52cb2f]['remove'](),markAsModified());}function collectPortQaUrlsFromForm(){const _0x317cfe=document['getElementById']('port-qa-urls-list');if(!_0x317cfe)return{};const _0x4a40b5=_0x317cfe['querySelectorAll']('.config-item'),_0x291df3={};return _0x4a40b5['forEach'](_0x476cbb=>{const _0x5bf81c=_0x476cbb['querySelectorAll']('input');if(_0x5bf81c['length']>=0x2){const _0x36d6ba=_0x5bf81c[0x0]['value']['trim'](),_0x5515f5=_0x5bf81c[0x1]['value']['trim']();_0x36d6ba&&_0x5515f5&&(_0x291df3[_0x36d6ba]=_0x5515f5);}}),_0x291df3;}function addPort(){const _0x4aead9=document['getElementById']('ports-list'),_0x53a369=_0x4aead9['querySelectorAll']('.config-item');if(_0x53a369['length']>0x0){const _0x1974dd=_0x53a369[_0x53a369['length']-0x1],_0x4d7f6b=_0x1974dd['querySelectorAll']('input'),_0x2b483a=_0x4d7f6b[0x0]['value']['trim'](),_0x3093d1=_0x4d7f6b[0x1]['value']['trim']();if(!_0x2b483a&&!_0x3093d1)return;}const _0x32985d=state['selectedEnvData']['application_server']||{},_0x40305a=_0x32985d['ports']||[];_0x40305a['push']({'internal':'','name':''}),!state['selectedEnvData']['application_server']&&(state['selectedEnvData']['application_server']={}),state['selectedEnvData']['application_server']['ports']=_0x40305a,renderPorts(_0x40305a),markAsModified();}function addURL(){const _0xdb1397=document['getElementById']('urls-list'),_0x145747=_0xdb1397['querySelectorAll']('.config-item');if(_0x145747['length']>0x0){const _0x306873=_0x145747[_0x145747['length']-0x1],_0x17060c=_0x306873['querySelector']('input[data-field=\x22name\x22]')?.['value']['trim']()||'',_0x177e16=_0x306873['querySelector']('input[data-field=\x22path\x22]')?.['value']['trim']()||'',_0x215755=_0x306873['querySelector']('input[data-field=\x22port\x22]')?.['value']['trim']()||'',_0x5701e9=_0x306873['querySelector']('input[data-field=\x22description\x22]')?.['value']['trim']()||'';if(!_0x17060c&&!_0x177e16&&!_0x215755&&!_0x5701e9)return;}const _0x2f0e83=state['selectedEnvData']['application_server']||{},_0x9b2a67=_0x2f0e83['launch_urls']||[];_0x9b2a67['push']({'name':'','path':''}),!state['selectedEnvData']['application_server']&&(state['selectedEnvData']['application_server']={}),state['selectedEnvData']['application_server']['launch_urls']=_0x9b2a67,renderURLs(_0x9b2a67),markAsModified();}window['removePort']=function(_0x356cad){const _0x2594b5=state['selectedEnvData']['application_server']||{},_0x84b61e=_0x2594b5['ports']||[];_0x84b61e['splice'](_0x356cad,0x1),state['selectedEnvData']['application_server']['ports']=_0x84b61e,renderPorts(_0x84b61e),markAsModified();},window['removeURL']=function(_0x3e61fc){const _0x2a0074=state['selectedEnvData']['application_server']||{},_0x523ffa=_0x2a0074['launch_urls']||[];_0x523ffa['splice'](_0x3e61fc,0x1),state['selectedEnvData']['application_server']['launch_urls']=_0x523ffa,renderURLs(_0x523ffa),markAsModified();},window['moveURL']=function(_0x105f07,_0x53aea7){const _0x133225=collectURLsFromForm(!![]),_0x94f0a6=_0x105f07+_0x53aea7;if(_0x94f0a6<0x0||_0x94f0a6>=_0x133225['length'])return;const [_0x1b45ec]=_0x133225['splice'](_0x105f07,0x1);_0x133225['splice'](_0x94f0a6,0x0,_0x1b45ec),!state['selectedEnvData']['application_server']&&(state['selectedEnvData']['application_server']={}),state['selectedEnvData']['application_server']['launch_urls']=_0x133225,renderURLs(_0x133225),markAsModified();},window['setPrimaryURL']=function(_0x34f83b){const _0x1f2dcc=collectURLsFromForm(!![]);_0x1f2dcc['forEach']((_0x2e5e51,_0x295682)=>{_0x295682===_0x34f83b&&(_0x2e5e51['name']||_0x2e5e51['path']||_0x2e5e51['port']||_0x2e5e51['description'])?_0x2e5e51['primary']=!![]:delete _0x2e5e51['primary'];}),!state['selectedEnvData']['application_server']&&(state['selectedEnvData']['application_server']={}),state['selectedEnvData']['application_server']['launch_urls']=_0x1f2dcc,renderURLs(_0x1f2dcc),markAsModified();};function clearPrimaryURL(){const _0x1b51c1=collectURLsFromForm(!![]);_0x1b51c1['forEach'](_0x4c1782=>{delete _0x4c1782['primary'];}),!state['selectedEnvData']['application_server']&&(state['selectedEnvData']['application_server']={}),state['selectedEnvData']['application_server']['launch_urls']=_0x1b51c1,renderURLs(_0x1b51c1),markAsModified();}function addProxyHeader(){const _0x1e6e7a=document['getElementById']('proxy-headers-list'),_0x4d2d81=_0x1e6e7a['querySelectorAll']('.config-item');if(_0x4d2d81['length']>0x0){const _0x14c8ca=_0x4d2d81[_0x4d2d81['length']-0x1],_0x1cd031=_0x14c8ca['querySelectorAll']('input'),_0x3ed787=_0x1cd031[0x0]['value']['trim'](),_0x2dc3da=_0x1cd031[0x1]['value']['trim']();if(!_0x3ed787&&!_0x2dc3da)return;}const _0x316854=state['selectedEnvData']['application_server']||{},_0x1a7644=_0x316854['proxy_headers']||{};_0x1a7644['']='',!state['selectedEnvData']['application_server']&&(state['selectedEnvData']['application_server']={}),state['selectedEnvData']['application_server']['proxy_headers']=_0x1a7644,renderProxyHeaders(_0x1a7644),markAsModified();}window['removeProxyHeader']=function(_0x41779b){const _0x1f4f8e=state['selectedEnvData']['application_server']||{},_0x24e3aa=_0x1f4f8e['proxy_headers']||{},_0x49e22e=Object['keys'](_0x24e3aa);_0x41779b<_0x49e22e['length']&&delete _0x24e3aa[_0x49e22e[_0x41779b]],state['selectedEnvData']['application_server']['proxy_headers']=_0x24e3aa,renderProxyHeaders(_0x24e3aa),markAsModified();},window['removePortQaUrl']=function(_0x186909){const _0x5580fa=state['selectedEnvData']['application_server']||{},_0x34ec6e=_0x5580fa['port_qa_urls']||{},_0x4b2198=Object['keys'](_0x34ec6e);_0x186909<_0x4b2198['length']&&delete _0x34ec6e[_0x4b2198[_0x186909]],state['selectedEnvData']['application_server']['port_qa_urls']=_0x34ec6e,renderPortQaUrls(_0x34ec6e),markAsModified();};function renderReadme(){const _0x1d1339=state['selectedEnvData']['readmeContent']||'',_0x32f263=document['getElementById']('readme-preview'),_0x127ea9=document['getElementById']('readme-editor'),_0x5df3a5=document['getElementById']('preview-readme-btn');_0x1d1339?_0x32f263['innerHTML']=marked['parse'](_0x1d1339):_0x32f263['innerHTML']='<p\x20class=\x22text-muted\x22>No\x20README\x20content\x20yet.\x20Click\x20Edit\x20to\x20add\x20documentation\x20for\x20this\x20environment.</p>',_0x32f263['hidden']=![],_0x127ea9['hidden']=!![],_0x5df3a5['innerHTML']='<span>✏️</span>\x20Edit',!state['readmeContent']&&(state['readmeContent']=_0x1d1339);}window['toggleReadmePreview']=async function(){const _0x1194a1=document['getElementById']('readme-editor'),_0x3ac372=document['getElementById']('readme-preview'),_0x1c6819=document['getElementById']('preview-readme-btn'),_0x4e795b='readme-editor';if(_0x3ac372['hidden']){const _0x2c18be=getMonacoValue(_0x4e795b)||'';_0x2c18be?_0x3ac372['innerHTML']=marked['parse'](_0x2c18be):_0x3ac372['innerHTML']='<p\x20class=\x22text-muted\x22>No\x20README\x20content\x20yet.</p>',_0x3ac372['hidden']=![],_0x1194a1['hidden']=!![],_0x1c6819['innerHTML']='<span>✏️</span>\x20Edit';}else{_0x3ac372['hidden']=!![],_0x1194a1['hidden']=![],_0x1c6819['innerHTML']='<span>👁</span>\x20Preview';const _0x35bdfd=window['MarkdownFileEditor']&&window['MarkdownFileEditor']['editors']['has'](_0x4e795b),_0x3956d0=monacoEditors['has'](_0x4e795b);if(!_0x35bdfd&&!_0x3956d0){const _0x4639b3=state['selectedEnvData']['readmeContent']||'';if(window['MarkdownFileEditor']){const _0x36e2c2=window['MarkdownFileEditor']['getOrCreate'](_0x4e795b,_0x4639b3,![],'400px',()=>markAsModified());}else{const _0x2ff0f0=await createMonacoEditor(_0x4e795b,_0x4639b3,'markdown',![]);_0x2ff0f0&&_0x2ff0f0['onDidChangeModelContent'](()=>{markAsModified();});}}}};async function renderAgentInstructions(){const _0x4a8443=state['selectedEnvData']['agentsContent']||'',_0x4b2fb5=document['getElementById']('agents-preview'),_0x1d5496=document['getElementById']('agents-editor'),_0xa45742=document['getElementById']('preview-agents-btn');_0x4b2fb5['innerHTML']=marked['parse'](_0x4a8443),_0x4b2fb5['hidden']=![],_0x1d5496['hidden']=!![],_0xa45742['innerHTML']='<span>✏️</span>\x20Edit',state['agentsContent']=_0x4a8443;}function updateAgentStats(){const _0x325c96=getMonacoValue('agents-editor')||'',_0x3f13d4=_0x325c96['split']('\x0a')['length'],_0x204448=_0x325c96['trim']()['split'](/\s+/)['length'],_0x592d0e=_0x325c96['length'];document['getElementById']('agents-stats')['textContent']='Lines:\x20'+_0x3f13d4+'\x20•\x20Words:\x20'+_0x204448+'\x20•\x20Characters:\x20'+_0x592d0e;}async function toggleAgentsPreview(){const _0x3bc8cb=document['getElementById']('agents-editor'),_0x31bc2e=document['getElementById']('agents-preview'),_0x52c283=document['getElementById']('preview-agents-btn'),_0x2f847a='agents-editor';if(_0x31bc2e['hidden']){const _0x545c74=getMonacoValue(_0x2f847a)||'';_0x31bc2e['innerHTML']=marked['parse'](_0x545c74),_0x31bc2e['hidden']=![],_0x3bc8cb['hidden']=!![],_0x52c283['innerHTML']='<span>✏️</span>\x20Edit';}else{_0x31bc2e['hidden']=!![],_0x3bc8cb['hidden']=![],_0x52c283['innerHTML']='<span>👁</span>\x20Preview';const _0x1ce4c7=window['MarkdownFileEditor']&&window['MarkdownFileEditor']['editors']['has'](_0x2f847a),_0x46c844=monacoEditors['has'](_0x2f847a);if(!_0x1ce4c7&&!_0x46c844){const _0x560d71=state['agentsContent']||'';if(window['MarkdownFileEditor']){const _0x3a2f05=window['MarkdownFileEditor']['getOrCreate'](_0x2f847a,_0x560d71,![],'500px',()=>{updateAgentStats(),markAsModified();});}else{const _0x3182f6=await createMonacoEditor(_0x2f847a,_0x560d71,'markdown',![]);_0x3182f6&&_0x3182f6['onDidChangeModelContent'](()=>{updateAgentStats(),markAsModified();});}updateAgentStats();}}}let currentScript='pre-clone';function renderBuildTab(){}function toggleScriptsSection(){const _0x54f1b3=document['querySelector']('#scripts-section-header')['closest']('.collapsible-card'),_0x289981=document['getElementById']('scripts-section-body');_0x289981['hidden']?(_0x289981['hidden']=![],_0x54f1b3['classList']['add']('expanded'),!monacoEditors['has']('script-editor')&&switchScript(currentScript)):(_0x289981['hidden']=!![],_0x54f1b3['classList']['remove']('expanded'));}async function switchScript(_0x171ae2){currentScript=_0x171ae2,document['querySelectorAll']('#scripts-section-body\x20.script-tab')['forEach'](_0x203b75=>{_0x203b75['classList']['toggle']('active',_0x203b75['dataset']['script']===_0x171ae2);});const _0x344864=['pre-clone','post-clone','setup','cleanup'];_0x344864['forEach'](_0x15e425=>{const _0x1ba368=document['querySelector']('.script-desc-'+_0x15e425);_0x1ba368&&(_0x1ba368['hidden']=_0x171ae2!==_0x15e425&&_0x171ae2!==_0x15e425+'.sh');});let _0xf1dcb='';if(_0x171ae2==='pre-clone'||_0x171ae2==='post-clone'){const _0xf0fd8=_0x171ae2==='pre-clone'?'pre_clone_instructions':'post_clone_instructions';_0xf1dcb=state['selectedEnvData']['docker_config']?.[_0xf0fd8]||'';}else _0xf1dcb=state['selectedEnvData']['files']?.[_0x171ae2]||'';const _0x42e86a=await createMonacoEditor('script-editor',_0xf1dcb,'shell',![]);_0x42e86a&&(_0x42e86a['updateOptions']({'wordWrap':'off'}),_0x42e86a['onDidChangeModelContent'](()=>{markAsModified();}));}function getCurrentScriptContent(){if(!monacoEditors['has']('script-editor'))return null;return getMonacoValue('script-editor');}function saveCurrentScriptToState(){const _0x2b7a4c=getCurrentScriptContent();if(_0x2b7a4c===null)return;if(currentScript==='pre-clone'||currentScript==='post-clone'){!state['selectedEnvData']['docker_config']&&(state['selectedEnvData']['docker_config']={});const _0x2ce434=currentScript==='pre-clone'?'pre_clone_instructions':'post_clone_instructions';state['selectedEnvData']['docker_config'][_0x2ce434]=_0x2b7a4c;}else!state['selectedEnvData']['files']&&(state['selectedEnvData']['files']={}),state['selectedEnvData']['files'][currentScript]=_0x2b7a4c;}function getCodermakeBuildCommands(_0x36e7f8,_0x27d617){const _0x2ac588=_0x36e7f8['external_connections']||[],_0x141260=_0x36e7f8['repos']||[],_0x350909=[];for(const _0x41bd3f of _0x2ac588){if(_0x41bd3f['type']!=='ibmi')continue;const _0x5cb7eb=_0x41bd3f['config']?.['features']||[];if(!_0x5cb7eb['includes']('build'))continue;if(!_0x41bd3f['config']?.['build_repo'])continue;if(!_0x27d617['find'](_0x43c004=>_0x43c004['name']===_0x41bd3f['config']['build_repo']))continue;const _0x2e0e6a=_0x141260['find'](_0x4e6199=>_0x4e6199['name']===_0x41bd3f['config']['build_repo']),_0x103fec=_0x2e0e6a?'/workspace/'+(_0x2e0e6a['path']||_0x2e0e6a['name']):'/workspace',_0x4f5d6c=_0x41bd3f['config']['build_path']?_0x103fec+'/'+_0x41bd3f['config']['build_path']:_0x103fec;_0x350909['push']('cd\x20'+_0x4f5d6c+'\x20&&\x20IBMI_BUILD_LIBRARY=container_setup_build\x20IBMI_HOST=dummy\x20IBMI_USER=dummy\x20codermake\x20-t');}return _0x350909;}function generateDockerfilePreview(){saveCurrentScriptToState();const _0xb76bec=state['selectedEnvData'],_0x28f045='profoundlogic/coder-base:latest',_0x19ed1c=_0xb76bec['repos']||[],_0x38c64b=_0xb76bec['docker_config']?.['pre_clone_instructions']||'',_0x21afeb=_0xb76bec['docker_config']?.['post_clone_instructions']||'';let _0x2e3797='FROM\x20'+_0x28f045+'\x0a\x0a';_0x38c64b['trim']()&&(_0x2e3797+='#\x20Pre-clone\x20instructions\x0a',_0x2e3797+=_0x38c64b['trim']()+'\x0a\x0a');const _0x124354=_0x19ed1c['filter'](_0x599feb=>_0x599feb['clone_auto']!==![]);if(_0x124354['length']>0x0){const _0x2d946d=_0x124354['map'](_0x504860=>{const _0x43b11d=_0x504860['path']||_0x504860['name']||_0x504860['url']?.['split']('/')['pop']()?.['replace']('.git','')||'repo',_0x481109=normalizeGitUrl(_0x504860['url']);return'git\x20clone\x20--depth=50\x20--no-single-branch\x20'+_0x481109+'\x20/workspace/'+_0x43b11d;}),_0x4da739=_0x124354['filter'](_0x35d088=>_0x35d088['post_clone_action']&&_0x35d088['post_clone_action']!=='none')['map'](_0x123c3a=>{const _0x378a24=_0x123c3a['path']||_0x123c3a['name']||_0x123c3a['url']?.['split']('/')['pop']()?.['replace']('.git','')||'repo',_0x28d984=_0x123c3a['post_clone_action']['split']('\x0a')['map'](_0x1dfa58=>_0x1dfa58['replace'](/\r$/,''))['filter'](_0xe67ecc=>_0xe67ecc['trim']())['join']('\x20&&\x20\x5c\x0a\x20\x20\x20\x20');return'cd\x20/workspace/'+_0x378a24+'\x20&&\x20'+_0x28d984;}),_0xdd427=_0x124354['some'](_0xaeb29=>_0xaeb29['remote_provider']);_0x2e3797+='#\x20Clone\x20repositories\x20and\x20install\x20dependencies\x0a';_0xdd427?_0x2e3797+='RUN\x20--mount=type=secret,id=git-credentials,target=/root/.git-credentials\x20\x5c\x0a\x20\x20\x20\x20':_0x2e3797+='RUN\x20';_0x2e3797+=_0x2d946d['join']('\x20&&\x20\x5c\x0a\x20\x20\x20\x20');_0x4da739['length']>0x0&&(_0x2e3797+='\x20&&\x20\x5c\x0a\x20\x20\x20\x20'+_0x4da739['join']('\x20&&\x20\x5c\x0a\x20\x20\x20\x20'));const _0x466acd=getCodermakeBuildCommands(_0xb76bec,_0x124354);_0x466acd['length']>0x0&&(_0x2e3797+='\x20&&\x20\x5c\x0a\x20\x20\x20\x20'+_0x466acd['join']('\x20&&\x20\x5c\x0a\x20\x20\x20\x20')),_0x2e3797+='\x20&&\x20\x5c\x0a\x20\x20\x20\x20chown\x20-R\x20coder:coder\x20/workspace\x0a\x0a';}return _0x21afeb['trim']()&&(_0x2e3797+='#\x20Post-clone\x20instructions\x0a',_0x2e3797+=_0x21afeb['trim']()+'\x0a\x0a'),_0x2e3797+='WORKDIR\x20/workspace\x0a',_0x2e3797;}function showDockerfilePreview(){const _0x2ac58b=generateDockerfilePreview(),_0x1c3136=document['getElementById']('dockerfile-preview-text');_0x1c3136['textContent']=_0x2ac58b,document['getElementById']('dockerfile-preview-modal')['hidden']=![];}function closeDockerfilePreviewModal(){document['getElementById']('dockerfile-preview-modal')['hidden']=!![];}async function copyDockerfileToClipboard(){const _0x416d05=generateDockerfilePreview();try{await navigator['clipboard']['writeText'](_0x416d05);const _0x5cd514=document['getElementById']('dockerfile-copy-btn'),_0x221e14=_0x5cd514['innerHTML'];_0x5cd514['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(()=>{_0x5cd514['innerHTML']=_0x221e14;},0x7d0);}catch(_0x25da16){console['error']('Failed\x20to\x20copy:',_0x25da16);}}function renderTests(){const _0x55868a=document['querySelector']('.tests-sidebar'),_0x3a9044=state['selectedEnvData']['tests']||{},_0x4ca682=Object['keys'](_0x3a9044);updateTabBadge('badge-tests',_0x4ca682['length']);const _0x40d46e=_0x55868a['querySelector']('#new-test-tab'),_0x1d5713=_0x4ca682['map']((_0x307188,_0x374612)=>'\x0a\x20\x20\x20\x20<button\x20class=\x22test-tab\x22\x20data-test=\x22'+_0x374612+'\x22\x20onclick=\x22selectTest(\x27'+_0x307188+'\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'](_0x307188)+'</span>\x0a\x20\x20\x20\x20</button>\x0a\x20\x20')['join']('');_0x55868a['innerHTML']=_0x40d46e['outerHTML']+_0x1d5713,_0x55868a['querySelector']('#new-test-tab')['addEventListener']('click',addTest);if(_0x4ca682['length']>0x0&&state['currentTest']===null)selectTest(_0x4ca682[0x0]);else _0x4ca682['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(_0x180972){state['currentTest']=_0x180972;const _0x1d4427=state['selectedEnvData']['tests'][_0x180972];document['querySelectorAll']('.test-tab')['forEach'](_0xbf9789=>{const _0x4cd7c1=_0xbf9789['querySelector']('span:last-child')['textContent'];_0xbf9789['classList']['toggle']('active',_0x4cd7c1===_0x180972);}),document['getElementById']('current-test-name')['textContent']=_0x180972,document['getElementById']('delete-test-btn')['hidden']=![];const _0x556d6a=document['getElementById']('test-details-container');let _0x1d7dfa='',_0x1ae4f7=![];if(_0x1d4427['commands']&&Array['isArray'](_0x1d4427['commands']))_0x1d7dfa=_0x1d4427['commands']['join']('\x0a'),_0x1ae4f7=!![];else _0x1d4427['command']&&(Array['isArray'](_0x1d4427['command'])?_0x1d7dfa=_0x1d4427['command']['join']('\x20&&\x20'):_0x1d7dfa=_0x1d4427['command']);const _0x58045d=_0x1d4427['parameters']?Object['keys'](_0x1d4427['parameters'])['length']:0x0;_0x556d6a['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'](_0x1d4427['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'+(_0x1ae4f7?'s':'')+'</label>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<textarea\x20id=\x22test-command\x22\x20class=\x22form-input\x20code-font\x22\x20rows=\x22'+(_0x1ae4f7?'8':'3')+'\x22\x20placeholder=\x22'+(_0x1ae4f7?'One\x20command\x20per\x20line':'Test\x20command')+'\x22>'+Utils['escapeHtml'](_0x1d7dfa)+'</textarea>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20'+(_0x1ae4f7?'<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>'+_0x58045d+'</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'](_0x5e5f27=>{const _0x4fdc85=document['getElementById'](_0x5e5f27);_0x4fdc85&&_0x4fdc85['addEventListener']('input',markAsModified);}),initTestParameterSectionToggle(),renderTestParameters();};function initTestParameterSectionToggle(){const _0x51577a=document['querySelector']('#test-details-container\x20.deploy-section-toggle');if(!_0x51577a)return;_0x51577a['addEventListener']('click',function(){const _0x43053d=this['getAttribute']('aria-expanded')==='true',_0x103a8d=this['getAttribute']('aria-controls'),_0x384347=document['getElementById'](_0x103a8d);this['setAttribute']('aria-expanded',!_0x43053d),_0x384347&&(_0x384347['hidden']=_0x43053d);});}function addTest(){const _0xfcdd10=document['getElementById']('new-test-name'),_0x2e083c=document['getElementById']('new-test-command'),_0x3305d4=document['getElementById']('add-test-error');_0xfcdd10['value']='',document['getElementById']('new-test-description')['value']='',_0x2e083c['value']='',_0xfcdd10['classList']['remove']('input-error'),_0x2e083c['classList']['remove']('input-error'),_0x3305d4['hidden']=!![],document['getElementById']('add-test-modal')['hidden']=![];}function closeAddTestModal(){document['getElementById']('add-test-modal')['hidden']=!![];}async function confirmAddTest(){const _0x3bd653=document['getElementById']('new-test-name'),_0x2eecca=document['getElementById']('new-test-command'),_0x30c376=document['getElementById']('add-test-error'),_0x126481=_0x3bd653['value']['trim'](),_0x485603=document['getElementById']('new-test-description')['value']['trim'](),_0x3590bb=_0x2eecca['value']['trim']();_0x3bd653['classList']['remove']('input-error'),_0x2eecca['classList']['remove']('input-error'),_0x30c376['hidden']=!![];if(!_0x126481||!_0x3590bb){if(!_0x126481)_0x3bd653['classList']['add']('input-error');if(!_0x3590bb)_0x2eecca['classList']['add']('input-error');_0x30c376['textContent']='Test\x20name\x20and\x20command\x20are\x20required',_0x30c376['hidden']=![];return;}if(state['selectedEnvData']['tests'][_0x126481]){_0x3bd653['classList']['add']('input-error'),_0x30c376['textContent']='A\x20test\x20with\x20this\x20name\x20already\x20exists',_0x30c376['hidden']=![];return;}const _0x1f7bda=_0x3590bb['split']('\x0a')['filter'](_0x520ee2=>_0x520ee2['trim']());let _0xc7b951;_0x1f7bda['length']>0x1?_0xc7b951={'commands':_0x1f7bda}:_0xc7b951={'command':_0x1f7bda[0x0]};const _0x5c63ac={'description':_0x485603,..._0xc7b951};state['selectedEnvData']['tests']={...state['selectedEnvData']['tests'],[_0x126481]:_0x5c63ac},renderTests(),markAsModified(),closeAddTestModal(),Utils['showSuccess']('Test\x20command\x20added\x20(click\x20Save\x20to\x20persist\x20changes)');}window['editTest']=function(_0x2c731a){selectTest(_0x2c731a);},window['removeTest']=function(_0x105ae1){document['getElementById']('delete-test-name')['textContent']=_0x105ae1,document['getElementById']('delete-test-confirm-btn')['dataset']['testKey']=_0x105ae1,document['getElementById']('delete-test-modal')['hidden']=![];};function closeDeleteTestModal(){document['getElementById']('delete-test-modal')['hidden']=!![];}function confirmDeleteTest(){const _0x49d24b=document['getElementById']('delete-test-confirm-btn')['dataset']['testKey'],_0x31f396={...state['selectedEnvData']['tests']};delete _0x31f396[_0x49d24b],state['selectedEnvData']['tests']=_0x31f396,state['currentTest']===_0x49d24b&&(state['currentTest']=null),renderTests(),markAsModified(),closeDeleteTestModal(),Utils['showSuccess']('Test\x20command\x20removed\x20(click\x20Save\x20to\x20persist\x20changes)');}function renderTemplates(){const _0x51fa67=document['querySelector']('.templates-sidebar'),_0xc02018=state['selectedEnvData']['templates']||[];updateTabBadge('badge-templates',_0xc02018['length']);const _0x29ce1d=_0x51fa67['querySelector']('#new-template-tab'),_0x4eb6e7=_0xc02018['map']((_0x42f3d5,_0x2fb9db)=>'\x0a\x20\x20\x20\x20<button\x20class=\x22template-tab\x22\x20data-template=\x22'+_0x2fb9db+'\x22\x20onclick=\x22selectTemplate('+_0x2fb9db+')\x22>\x0a\x20\x20\x20\x20\x20\x20<span\x20class=\x22template-icon\x22>📝</span>\x0a\x20\x20\x20\x20\x20\x20<span>'+Utils['escapeHtml'](_0x42f3d5['title'])+'</span>\x0a\x20\x20\x20\x20</button>\x0a\x20\x20')['join']('');_0x51fa67['innerHTML']=_0x29ce1d['outerHTML']+_0x4eb6e7,_0x51fa67['querySelector']('#new-template-tab')['addEventListener']('click',createNewTemplate);if(_0xc02018['length']>0x0&&state['currentTemplate']===null)selectTemplate(0x0);else _0xc02018['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(_0x3526cc){state['currentTemplate']=_0x3526cc;const _0x71c800=state['selectedEnvData']['templates'][_0x3526cc],_0x230ab0=monacoEditors['get']('template-md-editor');_0x230ab0&&(_0x230ab0['dispose'](),monacoEditors['delete']('template-md-editor'));document['querySelectorAll']('.template-tab')['forEach'](_0x431585=>{_0x431585['classList']['toggle']('active',_0x431585['dataset']['template']===String(_0x3526cc));}),document['getElementById']('current-template-name')['textContent']=_0x71c800['title'],document['getElementById']('delete-template-btn')['hidden']=![],document['getElementById']('preview-template-btn')['hidden']=![],document['getElementById']('preview-template-btn')['innerHTML']='<span>✏️</span>\x20Edit';const _0x42e891=_0x71c800['parameters']?Object['keys'](_0x71c800['parameters'])['length']:0x0,_0xf47558=document['getElementById']('template-editor-container');_0xf47558['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'](_0x71c800['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'+(_0x71c800['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'](_0x71c800['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>'+_0x42e891+'</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'](_0x71c800['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'](_0x71c800['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>'+_0x42e891+'</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 _0xa90c07=document['getElementById']('template-md-preview');_0xa90c07['innerHTML']=marked['parse'](_0x71c800['content']||''),state['currentTemplateData']={..._0x71c800,'parameters':_0x71c800['parameters']?JSON['parse'](JSON['stringify'](_0x71c800['parameters'])):{}},initTemplateSectionToggles(),renderTemplateParametersPreview();};function initTemplateSectionToggles(){document['querySelectorAll']('#template-editor-container\x20.deploy-section-toggle')['forEach'](_0x3859c9=>{_0x3859c9['addEventListener']('click',function(){const _0x30779f=this['getAttribute']('aria-expanded')==='true',_0x34bdf9=this['getAttribute']('aria-controls'),_0x28809a=document['getElementById'](_0x34bdf9);this['setAttribute']('aria-expanded',!_0x30779f),_0x28809a&&(_0x28809a['hidden']=_0x30779f);});});}function renderTemplateParametersPreview(){const _0x1d758f=document['getElementById']('template-parameters-preview-list');if(!_0x1d758f)return;const _0x57e2d8=state['currentTemplateData']?.['parameters']||{},_0x1d34ca=Array['isArray'](_0x57e2d8)?Object['fromEntries'](_0x57e2d8['map'](_0x390fd2=>[_0x390fd2['name'],_0x390fd2])):_0x57e2d8,_0x30b0be=Object['entries'](_0x1d34ca);if(_0x30b0be['length']===0x0){_0x1d758f['innerHTML']='<div\x20class=\x22profile-list-empty\x22>No\x20parameters\x20defined</div>';return;}_0x1d758f['innerHTML']=_0x30b0be['map'](([_0x394070,_0x2653b3])=>{const _0xf76768=getParameterTypeLabel(_0x2653b3),_0x568e04=_0x2653b3['prompt']?.['label']||_0x2653b3['label']||'';return'\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22profile-param-item\x22\x20data-name=\x22'+Utils['escapeHtml'](_0x394070)+'\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22profile-item-key\x22>'+Utils['escapeHtml'](_0x394070)+'</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22param-type-badge\x22>'+_0xf76768+'</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22profile-item-value\x22>'+(_0x568e04?Utils['escapeHtml'](_0x568e04):'')+'</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20'+(_0x2653b3['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 _0x5a4dfe=document['getElementById']('template-preview-container'),_0x400141=document['getElementById']('template-editor-container-edit'),_0x3576d3=document['getElementById']('preview-template-btn');if(!_0x5a4dfe||!_0x400141)return;if(_0x5a4dfe['hidden']){const _0x494867=getMonacoValue('template-md-editor');if(_0x494867!==null){const _0xe02807=document['getElementById']('template-md-preview');_0xe02807&&(_0xe02807['innerHTML']=marked['parse'](_0x494867));}const _0x3e6ce9=document['getElementById']('template-edit-title'),_0x3dce22=document['getElementById']('template-edit-description');_0x3e6ce9&&state['currentTemplateData']&&(state['currentTemplateData']['title']=_0x3e6ce9['value']),_0x3dce22&&state['currentTemplateData']&&(state['currentTemplateData']['description']=_0x3dce22['value']),renderTemplateParametersPreview(),_0x5a4dfe['hidden']=![],_0x400141['hidden']=!![],_0x3576d3['innerHTML']='<span>✏️</span>\x20Edit';}else{_0x5a4dfe['hidden']=!![],_0x400141['hidden']=![],_0x3576d3['innerHTML']='<span>👁</span>\x20Preview';const _0xb58267=state['currentTemplateData'],_0x237eb2='template-md-editor',_0x70d7e8=window['MarkdownFileEditor']&&window['MarkdownFileEditor']['editors']['has'](_0x237eb2),_0x50c648=monacoEditors['has'](_0x237eb2);if(_0xb58267&&!_0x70d7e8&&!_0x50c648){if(window['MarkdownFileEditor']){const _0x337747=window['MarkdownFileEditor']['getOrCreate'](_0x237eb2,_0xb58267['content']||'',![],'400px',()=>markAsModified());}else{const _0x1da29b=await createMonacoEditor(_0x237eb2,_0xb58267['content']||'','markdown',![]);_0x1da29b&&_0x1da29b['onDidChangeModelContent'](()=>{markAsModified();});}}const _0x44c19b=document['getElementById']('template-edit-title'),_0x5bab70=document['getElementById']('template-edit-description');_0x44c19b&&_0x44c19b['addEventListener']('input',markAsModified),_0x5bab70&&_0x5bab70['addEventListener']('input',markAsModified),renderTemplateParameters();}}function createNewTemplate(){const _0x287d1c=document['getElementById']('new-template-title'),_0x3eadab=document['getElementById']('new-template-description'),_0x40e8c1=document['getElementById']('new-template-filename'),_0x3c4a26=document['getElementById']('add-template-error');_0x287d1c['value']='',_0x3eadab['value']='',_0x40e8c1['value']='',_0x287d1c['classList']['remove']('input-error'),_0x40e8c1['classList']['remove']('input-error'),_0x3c4a26['hidden']=!![],_0x287d1c['addEventListener']('input',()=>{const _0x18bd31=_0x287d1c['value']['trim']();if(_0x18bd31&&!_0x40e8c1['value']){const _0x318e52=_0x18bd31['toLowerCase']()['replace'](/[^a-z0-9]+/g,'-')['replace'](/^-+|-+$/g,'')+'.md';_0x40e8c1['placeholder']=_0x318e52;}}),document['getElementById']('add-template-modal')['hidden']=![];}function closeAddTemplateModal(){document['getElementById']('add-template-modal')['hidden']=!![];}function confirmAddTemplate(){const _0x43736e=document['getElementById']('new-template-title'),_0x522528=document['getElementById']('new-template-filename'),_0x36e705=document['getElementById']('add-template-error'),_0x3126c5=_0x43736e['value']['trim'](),_0x966120=document['getElementById']('new-template-description')['value']['trim']();let _0x5402f4=_0x522528['value']['trim']();_0x43736e['classList']['remove']('input-error'),_0x522528['classList']['remove']('input-error'),_0x36e705['hidden']=!![];if(!_0x3126c5){_0x43736e['classList']['add']('input-error'),_0x36e705['textContent']='Template\x20title\x20is\x20required',_0x36e705['hidden']=![];return;}!_0x5402f4&&(_0x5402f4=_0x3126c5['toLowerCase']()['replace'](/[^a-z0-9]+/g,'-')['replace'](/^-+|-+$/g,'')+'.md');!_0x5402f4['endsWith']('.md')&&(_0x5402f4+='.md');if(state['selectedEnvData']['templates']['some'](_0x2dfd2a=>_0x2dfd2a['filename']===_0x5402f4)){_0x522528['classList']['add']('input-error'),_0x36e705['textContent']='A\x20template\x20with\x20this\x20filename\x20already\x20exists',_0x36e705['hidden']=![];return;}const _0x1078b8={'title':_0x3126c5,'description':_0x966120||undefined,'filename':_0x5402f4,'content':'','parameters':[]};state['selectedEnvData']['templates']=[...state['selectedEnvData']['templates']||[],_0x1078b8],renderTemplates(),markAsModified(),closeAddTemplateModal(),Utils['showSuccess']('Template\x20added\x20(click\x20Save\x20to\x20persist\x20changes)');}window['editTemplate']=function(_0x3d932f){selectTemplate(_0x3d932f);},window['removeTemplate']=function(_0x4cbec1){const _0x37e44a=state['selectedEnvData']['templates'][_0x4cbec1];document['getElementById']('delete-template-name')['textContent']=_0x37e44a['title'],document['getElementById']('delete-template-confirm-btn')['dataset']['templateIndex']=_0x4cbec1,document['getElementById']('delete-template-modal')['hidden']=![];};function closeDeleteTemplateModal(){document['getElementById']('delete-template-modal')['hidden']=!![];}function confirmDeleteTemplate(){const _0x2a9af3=parseInt(document['getElementById']('delete-template-confirm-btn')['dataset']['templateIndex']);state['selectedEnvData']['templates']=state['selectedEnvData']['templates']['filter']((_0x844e11,_0x2ab570)=>_0x2ab570!==_0x2a9af3);if(state['currentTemplate']===_0x2a9af3)state['currentTemplate']=null;else state['currentTemplate']>_0x2a9af3&&state['currentTemplate']--;renderTemplates(),markAsModified(),closeDeleteTemplateModal(),Utils['showSuccess']('Template\x20removed\x20(click\x20Save\x20to\x20persist\x20changes)');}function renderDeployProfiles(){const _0x3d5216=document['querySelector']('.deploy-sidebar'),_0x70125b=state['selectedEnvData']['deployment_profiles']||[];updateTabBadge('badge-deploy',_0x70125b['length']);const _0xc00d23=_0x3d5216['querySelector']('#new-deploy-profile-tab'),_0x24547d=_0x70125b['map'](_0x2bb204=>'\x0a\x20\x20\x20\x20<button\x20class=\x22deploy-profile-tab\x20'+(!_0x2bb204['hasScript']?'missing-script':'')+'\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20data-profile=\x22'+Utils['escapeHtml'](_0x2bb204['name'])+'\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20onclick=\x22selectDeployProfile(\x27'+Utils['escapeHtml'](_0x2bb204['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'](_0x2bb204['name'])+'</span>\x0a\x20\x20\x20\x20</button>\x0a\x20\x20')['join']('');_0x3d5216['innerHTML']=_0xc00d23['outerHTML']+_0x24547d,_0x3d5216['querySelector']('#new-deploy-profile-tab')['addEventListener']('click',openAddDeployProfileModal);if(_0x70125b['length']>0x0&&state['currentDeployProfile']===null)selectDeployProfile(_0x70125b[0x0]['name']);else{if(_0x70125b['length']===0x0)showDeployProfileEmptyState();else{if(state['currentDeployProfile']){const _0x5c4f16=_0x70125b['find'](_0x1e7fe5=>_0x1e7fe5['name']===state['currentDeployProfile']);_0x5c4f16?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(_0x2326b8){if(state['profileHasUnsavedChanges']&&state['currentDeployProfile']!==_0x2326b8){const _0x335cec=confirm('You\x20have\x20unsaved\x20changes\x20to\x20this\x20profile.\x20Switch\x20anyway?\x0a\x0aUse\x20the\x20global\x20Save\x20button\x20to\x20save\x20all\x20changes.');if(!_0x335cec)return;state['profileHasUnsavedChanges']=![];}state['currentDeployProfile']=_0x2326b8,document['querySelectorAll']('.deploy-profile-tab')['forEach'](_0x3aa08e=>{_0x3aa08e['classList']['toggle']('active',_0x3aa08e['dataset']['profile']===_0x2326b8);});const _0x37c688=state['selectedEnvData']['deployment_profiles']||[],_0x43c0ef=_0x37c688['find'](_0x2db7bd=>_0x2db7bd['name']===_0x2326b8);if(!_0x43c0ef){showDeployProfileEmptyState();return;}try{const _0x52a785=await API['get']('/environments/'+state['selectedEnv']+'/deployment-profiles/'+_0x2326b8);state['currentDeployProfileData']=_0x52a785,document['getElementById']('current-deploy-profile-name')['textContent']=_0x2326b8;const _0x4db141=document['getElementById']('run-deploy-profile-btn');_0x4db141['hidden']=![],_0x4db141['disabled']=!_0x52a785['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']=_0x52a785['description']||'',document['getElementById']('profile-script-filename')['textContent']=_0x2326b8+'.sh',await initProfileScriptEditor(_0x52a785['scriptContent']||''),renderProfileSecrets(),renderProfileParameters();}catch(_0x12b446){console['error']('Failed\x20to\x20load\x20profile:',_0x12b446),Utils['showError']('Failed\x20to\x20load\x20profile\x20details'),showDeployProfileEmptyState();}};async function initProfileScriptEditor(_0x8784e5){state['profileScriptEditor']&&(state['profileScriptEditor']['dispose'](),state['profileScriptEditor']=null),state['profileScriptEditor']=await createMonacoEditor('profile-script-editor',_0x8784e5,'shell',![]),state['profileScriptEditor']&&state['profileScriptEditor']['onDidChangeModelContent'](()=>{markProfileAsModified();});}function markProfileAsModified(){state['profileHasUnsavedChanges']=!![],markAsModified();}function renderProfileSecrets(){const _0x53cc48=document['getElementById']('profile-secrets-list'),_0x55d37f=state['currentDeployProfileData']?.['secrets']||[];updateDeploySectionCount('deploy-secrets-count',_0x55d37f['length']);if(_0x55d37f['length']===0x0){_0x53cc48['innerHTML']='<div\x20class=\x22profile-list-empty\x22>No\x20secrets\x20configured</div>';return;}const _0x4fb89a=state['secrets']['map'](_0x412056=>_0x412056['name']);_0x53cc48['innerHTML']=_0x55d37f['map']((_0x427db8,_0x2abda2)=>{const _0x2ae93f=_0x4fb89a['includes'](_0x427db8['name']),_0x17d463=_0x427db8['expose_as']==='file'?'File':'Env\x20Var';return'\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22profile-secret-item\x20'+(!_0x2ae93f?'warning':'')+'\x22\x20data-index=\x22'+_0x2abda2+'\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22profile-item-key\x22>'+Utils['escapeHtml'](_0x427db8['name'])+'</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22secret-expose-type\x20'+_0x427db8['expose_as']+'\x22>'+_0x17d463+'</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22profile-item-value\x22\x20title=\x22'+Utils['escapeHtml'](_0x427db8['target'])+'\x22>'+Utils['escapeHtml'](_0x427db8['target'])+'</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20'+(!_0x2ae93f?'<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('+_0x2abda2+')\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 _0x302926=document['getElementById']('profile-parameters-list'),_0x39ae1d=state['currentDeployProfileData']?.['parameters']||{},_0x1f3ab9=Object['entries'](_0x39ae1d);updateDeploySectionCount('deploy-parameters-count',_0x1f3ab9['length']);if(_0x1f3ab9['length']===0x0){_0x302926['innerHTML']='<div\x20class=\x22profile-list-empty\x22>No\x20parameters\x20defined</div>';return;}_0x302926['innerHTML']=_0x1f3ab9['map'](([_0x5a3994,_0x334f5a])=>{const _0x106f3a=getParameterTypeLabel(_0x334f5a),_0xcfd4dc=_0x334f5a['label']||'';return'\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22profile-param-item\x22\x20data-name=\x22'+Utils['escapeHtml'](_0x5a3994)+'\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22profile-item-key\x22>'+Utils['escapeHtml'](_0x5a3994)+'</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22param-type-badge\x22>'+_0x106f3a+'</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22profile-item-value\x22>'+(_0xcfd4dc?Utils['escapeHtml'](_0xcfd4dc):'')+'</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20'+(_0x334f5a['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'](_0x5a3994)+'\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'](_0x5a3994)+'\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 _0x2a5468=document['getElementById']('run-deployment-modal'),_0x3b42d4=document['getElementById']('run-deployment-error'),_0x48c39d=state['currentDeployProfile'];document['getElementById']('run-deployment-profile-name')['textContent']=_0x48c39d,document['getElementById']('run-deployment-dry-run')['checked']=![],document['getElementById']('run-deployment-start-btn')['disabled']=![],_0x3b42d4['hidden']=!![],_0x3b42d4['textContent']='',renderDeploymentParameterInputs(state['currentDeployProfileData']['parameters']||{}),_0x2a5468['hidden']=![];}function closeRunDeploymentModal(){document['getElementById']('run-deployment-modal')['hidden']=!![];}function renderDeploymentParameterInputs(_0x6d3c50){const _0x293108=document['getElementById']('run-deployment-parameters');_0x293108['innerHTML']='';const _0x2db32b=Object['entries'](_0x6d3c50);if(_0x2db32b['length']===0x0){_0x293108['innerHTML']='<p\x20class=\x22text-muted\x20small\x22>No\x20parameters\x20required\x20for\x20this\x20deployment.</p>';return;}for(const [_0x340c01,_0x397883]of _0x2db32b){const _0x335606=document['createElement']('div');_0x335606['className']='deployment-param-row',_0x335606['dataset']['param']=_0x340c01,_0x335606['dataset']['type']=_0x397883['type']||'text';const _0x2b2132=document['createElement']('label');_0x2b2132['className']='deployment-param-label',_0x2b2132['setAttribute']('for','deployment-param-'+_0x340c01),_0x2b2132['textContent']=_0x397883['label']||_0x340c01;if(_0x397883['required']){const _0x33adc3=document['createElement']('span');_0x33adc3['className']='param-required',_0x33adc3['textContent']='Required',_0x2b2132['appendChild'](_0x33adc3);}_0x335606['appendChild'](_0x2b2132);let _0x43217b;if(_0x397883['type']==='select')_0x43217b=document['createElement']('select'),_0x43217b['className']='form-input',_0x43217b['innerHTML']=(_0x397883['options']||[])['map'](_0x2f33e0=>{const _0x45e22a=Utils['escapeHtml'](_0x2f33e0);return'<option\x20value=\x22'+_0x45e22a+'\x22>'+_0x45e22a+'</option>';})['join'](''),_0x397883['default']&&(_0x43217b['value']=_0x397883['default']);else{if(_0x397883['type']==='boolean')_0x43217b=document['createElement']('input'),_0x43217b['type']='checkbox',_0x43217b['checked']=_0x397883['default']===!![]||_0x397883['default']==='true';else _0x397883['type']==='command'?(_0x43217b=document['createElement']('select'),_0x43217b['className']='form-input',_0x43217b['disabled']=!![],_0x43217b['innerHTML']='<option\x20value=\x22\x22>Loading\x20options...</option>'):(_0x43217b=document['createElement']('input'),_0x43217b['type']='text',_0x43217b['className']='form-input',_0x43217b['placeholder']=_0x397883['default']||'',_0x397883['default']&&(_0x43217b['value']=_0x397883['default']));}_0x43217b['id']='deployment-param-'+_0x340c01,_0x335606['appendChild'](_0x43217b);if(_0x397883['description']){const _0x501def=document['createElement']('div');_0x501def['className']='deployment-param-description',_0x501def['textContent']=_0x397883['description'],_0x335606['appendChild'](_0x501def);}_0x293108['appendChild'](_0x335606),_0x397883['type']==='command'&&loadDeploymentCommandOptions(_0x340c01,_0x397883,_0x43217b);}}async function loadDeploymentCommandOptions(_0x13a4d5,_0x280fdc,_0x49fdb2){const _0x12d2df=state['selectedEnv']+':'+state['currentDeployProfile']+':'+_0x13a4d5;if(state['deploymentParamCache'][_0x12d2df]){populateDeploymentCommandOptions(_0x49fdb2,state['deploymentParamCache'][_0x12d2df],_0x280fdc['default']);return;}try{const _0x2d7c6b=await API['promptParameter']({'environment':state['selectedEnv'],'command':_0x280fdc['command'],'parser':'lines'}),_0x46d398=_0x2d7c6b['choices']||[];state['deploymentParamCache'][_0x12d2df]=_0x46d398,populateDeploymentCommandOptions(_0x49fdb2,_0x46d398,_0x280fdc['default']);}catch(_0x535e90){_0x49fdb2['disabled']=!![],_0x49fdb2['innerHTML']='<option\x20value=\x22\x22>Failed\x20to\x20load\x20options</option>',console['error']('Failed\x20to\x20load\x20deployment\x20parameter\x20options:',_0x535e90);}}function populateDeploymentCommandOptions(_0x425b51,_0x1f1cd2,_0x69f0de){_0x425b51['disabled']=![];if(_0x1f1cd2['length']===0x0){_0x425b51['innerHTML']='<option\x20value=\x22\x22>No\x20options\x20available</option>';return;}_0x425b51['innerHTML']=_0x1f1cd2['map'](_0x5629fe=>{const _0x539ae4=Utils['escapeHtml'](_0x5629fe['value']),_0x24948d=Utils['escapeHtml'](_0x5629fe['label']||_0x5629fe['value']);return'<option\x20value=\x22'+_0x539ae4+'\x22>'+_0x24948d+'</option>';})['join'](''),_0x69f0de&&_0x1f1cd2['some'](_0x8e004b=>_0x8e004b['value']===_0x69f0de)&&(_0x425b51['value']=_0x69f0de);}function collectDeploymentParameters(){const _0x18064b={};return document['querySelectorAll']('#run-deployment-parameters\x20[data-param]')['forEach'](_0x24d288=>{const _0x42b4c0=_0x24d288['dataset']['param'],_0x3df509=_0x24d288['dataset']['type'],_0x5f29d5=_0x24d288['querySelector']('input,\x20select');if(!_0x5f29d5)return;if(_0x3df509==='boolean')_0x18064b[_0x42b4c0]=_0x5f29d5['checked'];else{const _0x43f585=_0x5f29d5['value']['trim']();_0x43f585!==''&&(_0x18064b[_0x42b4c0]=_0x43f585);}}),_0x18064b;}function validateDeploymentInputs(_0x2ffdba,_0x535744){const _0x407dae=[];return Object['entries'](_0x535744||{})['forEach'](([_0x537f06,_0x1992df])=>{if(!_0x1992df['required'])return;if(_0x1992df['type']==='boolean')return;!_0x2ffdba[_0x537f06]&&_0x407dae['push'](_0x537f06);}),_0x407dae;}async function startDeployment(){if(!state['currentDeployProfile'])return;const _0x5ae27c=document['getElementById']('run-deployment-error');_0x5ae27c['hidden']=!![],_0x5ae27c['textContent']='';const _0x519769=collectDeploymentParameters(),_0x2dbb22=validateDeploymentInputs(_0x519769,state['currentDeployProfileData']?.['parameters']||{});if(_0x2dbb22['length']>0x0){_0x5ae27c['textContent']='Missing\x20required\x20parameters:\x20'+_0x2dbb22['join'](',\x20'),_0x5ae27c['hidden']=![];return;}const _0x141b34=document['getElementById']('run-deployment-dry-run')['checked'],_0x54eee9=document['getElementById']('run-deployment-start-btn');_0x54eee9['disabled']=!![];try{const _0x35d3c9=await API['post']('/environments/'+state['selectedEnv']+'/deployment-profiles/'+state['currentDeployProfile']+'/execute',{'parameters':_0x519769,'dryRun':_0x141b34});closeRunDeploymentModal(),_0x35d3c9['status']==='running'?(startDeploymentPolling(_0x35d3c9['deploymentId']),Utils['showSuccess']('Deployment\x20started')):(Utils['showSuccess']('Deployment\x20dry\x20run\x20completed'),await loadDeploymentHistory());}catch(_0x3b3ec6){_0x5ae27c['textContent']=_0x3b3ec6['message']||'Failed\x20to\x20start\x20deployment',_0x5ae27c['hidden']=![];}finally{_0x54eee9['disabled']=![];}}function startDeploymentPolling(_0x376942){state['currentDeploymentId']=_0x376942,state['deploymentStartTime']=Date['now'](),state['deploymentOutput']='';const _0x3f03e0=document['getElementById']('deployment-progress-panel');_0x3f03e0['hidden']=![];const _0x3e1694=document['getElementById']('deployment-progress-profile');_0x3e1694&&(_0x3e1694['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 _0x110dad=await API['get']('/environments/'+state['selectedEnv']+'/deployments/'+state['currentDeploymentId']);updateDeploymentProgress(_0x110dad),_0x110dad['status']&&_0x110dad['status']!=='running'&&(stopDeploymentPolling(),state['currentDeploymentId']=null,await loadDeploymentHistory());}catch(_0x212d29){console['error']('Failed\x20to\x20poll\x20deployment\x20status:',_0x212d29);}}function updateDeploymentProgress(_0x464344){const _0x5d36bc=document['getElementById']('deployment-progress-profile'),_0x1218e9=document['getElementById']('deployment-progress-badge'),_0x310540=document['getElementById']('deployment-progress-duration'),_0xe429d2=document['getElementById']('deployment-output');_0x5d36bc&&_0x464344['profile']&&(_0x5d36bc['textContent']=_0x464344['profile']);_0x1218e9&&(_0x1218e9['textContent']=_0x464344['status']||'running',_0x1218e9['className']='deployment-status-badge\x20'+(_0x464344['status']||'running'));if(_0x310540){const _0x35a10c=_0x464344['startedAt']?Date['parse'](_0x464344['startedAt']):state['deploymentStartTime'],_0x510658=_0x464344['completedAt']?Date['parse'](_0x464344['completedAt']):Date['now']();_0x310540['textContent']=formatDuration(_0x510658-_0x35a10c);}_0xe429d2&&(_0xe429d2['textContent']=_0x464344['output']||'',_0xe429d2['scrollTop']=_0xe429d2['scrollHeight']);}async function cancelDeploymentExecution(){if(!state['currentDeploymentId'])return;try{await API['post']('/environments/'+state['selectedEnv']+'/deployments/'+state['currentDeploymentId']+'/cancel',{}),Utils['showSuccess']('Deployment\x20cancelled');}catch(_0xba430e){Utils['showError'](_0xba430e['message']||'Failed\x20to\x20cancel\x20deployment');}}async function loadDeploymentHistory(){if(!state['selectedEnv'])return;try{const _0x45adc6=await API['get']('/environments/'+state['selectedEnv']+'/deployment-history?limit=20');state['deploymentHistory']=_0x45adc6['deployments']||[],renderDeploymentHistory();}catch(_0x3ec00e){console['error']('Failed\x20to\x20load\x20deployment\x20history:',_0x3ec00e),state['deploymentHistory']=[],renderDeploymentHistory();}}function renderDeploymentHistory(){const _0x5ce8f7=document['getElementById']('deployment-history-list');if(!_0x5ce8f7)return;updateDeploySectionCount('deploy-history-count',state['deploymentHistory']['length']);if(state['deploymentHistory']['length']===0x0){_0x5ce8f7['innerHTML']='<div\x20class=\x22profile-list-empty\x22>No\x20deployments\x20yet</div>';return;}_0x5ce8f7['innerHTML']='',state['deploymentHistory']['forEach'](_0xa0b44d=>{const _0xbf847c=document['createElement']('div');_0xbf847c['className']='deployment-history-item';const _0x271fe6=document['createElement']('div');_0x271fe6['className']='deployment-history-header';const _0x141a34=document['createElement']('div');_0x141a34['className']='deployment-history-title',_0x141a34['textContent']=_0xa0b44d['profile']+'\x20('+_0xa0b44d['status']+')';const _0x18bf91=document['createElement']('span');_0x18bf91['className']='deployment-status-badge\x20'+_0xa0b44d['status'],_0x18bf91['textContent']=_0xa0b44d['status'],_0x271fe6['appendChild'](_0x141a34),_0x271fe6['appendChild'](_0x18bf91);const _0xc862be=document['createElement']('div');_0xc862be['className']='deployment-history-meta';const _0x380ff0=_0xa0b44d['startedAt']?formatTimestamp(_0xa0b44d['startedAt']):'Unknown\x20time',_0x2fe3f6=_0xa0b44d['completedAt']?formatDuration(Date['parse'](_0xa0b44d['completedAt'])-Date['parse'](_0xa0b44d['startedAt'])):'Running';_0xc862be['innerHTML']='\x0a\x20\x20\x20\x20\x20\x20<span>'+_0x380ff0+'</span>\x0a\x20\x20\x20\x20\x20\x20<span>Duration:\x20'+_0x2fe3f6+'</span>\x0a\x20\x20\x20\x20\x20\x20<span>Triggered\x20by:\x20'+Utils['escapeHtml'](_0xa0b44d['triggeredBy']||'unknown')+'</span>\x0a\x20\x20\x20\x20';const _0x6a3114=document['createElement']('button');_0x6a3114['className']='btn-ghost\x20btn-small',_0x6a3114['textContent']='View\x20Output',_0x271fe6['appendChild'](_0x6a3114);const _0x2978e9=document['createElement']('div');_0x2978e9['className']='deployment-history-output',_0x2978e9['hidden']=!![],_0x2978e9['textContent']=_0xa0b44d['output']||'No\x20output\x20captured.',_0x6a3114['addEventListener']('click',()=>{_0x2978e9['hidden']=!_0x2978e9['hidden'],_0x6a3114['textContent']=_0x2978e9['hidden']?'View\x20Output':'Hide\x20Output';}),_0xbf847c['appendChild'](_0x271fe6),_0xbf847c['appendChild'](_0xc862be),_0xbf847c['appendChild'](_0x2978e9),_0x5ce8f7['appendChild'](_0xbf847c);});}function formatTimestamp(_0x30511d){try{const _0x467e01=new Date(_0x30511d);return _0x467e01['toLocaleString']();}catch{return _0x30511d;}}function initDeploySectionToggles(){document['querySelectorAll']('.deploy-section-toggle')['forEach'](_0x534c64=>{_0x534c64['addEventListener']('click',()=>{const _0x1a06cf=_0x534c64['getAttribute']('aria-controls');if(!_0x1a06cf)return;const _0x4a21b0=document['getElementById'](_0x1a06cf);if(!_0x4a21b0)return;const _0x3d117e=_0x534c64['getAttribute']('aria-expanded')==='true';_0x534c64['setAttribute']('aria-expanded',String(!_0x3d117e)),_0x4a21b0['hidden']=_0x3d117e;});});}function updateDeploySectionCount(_0x4daee0,_0x33bb70){const _0x22d108=document['getElementById'](_0x4daee0);if(!_0x22d108)return;_0x22d108['textContent']=String(_0x33bb70),_0x22d108['title']=_0x33bb70+'\x20item'+(_0x33bb70===0x1?'':'s');}function openAddProfileSecretModal(){const _0xef654d=document['getElementById']('profile-secret-modal'),_0x48bf16=document['getElementById']('profile-secret-name'),_0xc89726=document['getElementById']('profile-secret-error');_0xc89726['hidden']=!![],populateProfileSecretSelect(),updateProfileSecretInfo(),_0xef654d['hidden']=![],_0x48bf16['focus']();}function populateProfileSecretSelect(){const _0x1b05cb=document['getElementById']('profile-secret-name'),_0x310086=state['secrets']||[],_0x5f227e=_0x310086['filter'](_0x2d6701=>{const _0x1cc868=_0x2d6701['available_for']||[];return _0x1cc868['includes']('deploy');});if(_0x5f227e['length']===0x0){_0x1b05cb['innerHTML']='<option\x20value=\x22\x22>No\x20secrets\x20available\x20for\x20deploy</option>';return;}const _0x15fdd7=(state['currentDeployProfileData']?.['secrets']||[])['map'](_0x3c6b84=>typeof _0x3c6b84==='string'?_0x3c6b84:_0x3c6b84['name']),_0x13a543=_0x5f227e['filter'](_0xebddd5=>!_0x15fdd7['includes'](_0xebddd5['name']));if(_0x13a543['length']===0x0){_0x1b05cb['innerHTML']='<option\x20value=\x22\x22>All\x20deploy\x20secrets\x20already\x20added</option>';return;}_0x1b05cb['innerHTML']=_0x13a543['map'](_0x44cb2a=>'<option\x20value=\x22'+Utils['escapeHtml'](_0x44cb2a['name'])+'\x22>'+Utils['escapeHtml'](_0x44cb2a['name'])+(_0x44cb2a['description']?'\x20-\x20'+Utils['escapeHtml'](_0x44cb2a['description']):'')+'</option>')['join']('');}function updateProfileSecretInfo(){const _0xd3da55=document['getElementById']('profile-secret-name'),_0x48563f=document['getElementById']('profile-secret-info'),_0x35dc53=_0xd3da55['value'];if(!_0x35dc53){_0x48563f['hidden']=!![];return;}const _0xd45ccf=state['secrets']['find'](_0x4c800c=>_0x4c800c['name']===_0x35dc53);if(!_0xd45ccf){_0x48563f['hidden']=!![];return;}const _0x1fce01=_0xd45ccf['expose_as']==='file'?'File\x20(bind\x20mount)':'Environment\x20Variable',_0x48d7fd=_0xd45ccf['expose_as']==='file'?'Container\x20Path':'Variable\x20Name';_0x48563f['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'](_0x1fce01)+'</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'](_0x48d7fd)+':</span>\x0a\x20\x20\x20\x20\x20\x20<span\x20class=\x22secret-info-value\x20code-font\x22>'+Utils['escapeHtml'](_0xd45ccf['target']||'Not\x20set')+'</span>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20',_0x48563f['hidden']=![];}function closeProfileSecretModal(){document['getElementById']('profile-secret-modal')['hidden']=!![];}function saveProfileSecret(){const _0x1a9537=document['getElementById']('profile-secret-name'),_0x1927cc=document['getElementById']('profile-secret-error'),_0x523f10=_0x1a9537['value'];if(!_0x523f10){_0x1927cc['textContent']='Please\x20select\x20a\x20secret',_0x1927cc['hidden']=![];return;}!state['currentDeployProfileData']['secrets']&&(state['currentDeployProfileData']['secrets']=[]),state['currentDeployProfileData']['secrets']['push']({'name':_0x523f10}),closeProfileSecretModal(),renderProfileSecrets(),markProfileAsModified();}window['deleteProfileSecret']=function(_0x592882){if(!state['currentDeployProfileData']?.['secrets'])return;if(!confirm('Delete\x20this\x20secret\x20reference?'))return;state['currentDeployProfileData']['secrets']['splice'](_0x592882,0x1),renderProfileSecrets(),markProfileAsModified();};function openAddParameterModal(_0x156c9c){state['parameterModalContext']=_0x156c9c,state['editingParamName']=null,state['parameterOptions']=[];const _0x41b183=document['getElementById']('profile-parameter-modal'),_0x43689e=document['getElementById']('profile-parameter-modal-title'),_0xa4b510=document['getElementById']('profile-parameter-error');_0x43689e['textContent']='Add\x20Parameter',_0xa4b510['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(),_0x41b183['hidden']=![],document['getElementById']('profile-param-name')['focus']();}function openAddProfileParameterModal(){openAddParameterModal('deploy');}function updateProfileParamTypeVisibility(){const _0x1ec0c7=document['getElementById']('profile-param-type')['value'],_0x430d5d=document['getElementById']('profile-param-options-row'),_0xab7b70=document['getElementById']('profile-param-command-row'),_0x416110=document['getElementById']('profile-param-files-row'),_0x38be64=document['getElementById']('profile-param-multiselect-row');_0x430d5d['hidden']=!![],_0xab7b70['hidden']=!![],_0x416110['hidden']=!![],_0x38be64['hidden']=!![];if(_0x1ec0c7==='list')_0x430d5d['hidden']=![],_0x38be64['hidden']=![];else{if(_0x1ec0c7==='command')_0xab7b70['hidden']=![],_0x38be64['hidden']=![];else _0x1ec0c7==='files'&&(_0x416110['hidden']=![],_0x38be64['hidden']=![]);}}function addParameterOption(){state['parameterOptions']['push']({'value':'','label':'','description':''}),renderParameterOptionsList();const _0x3e501b=document['querySelectorAll']('#profile-param-options-list\x20.option-value-input');_0x3e501b['length']>0x0&&_0x3e501b[_0x3e501b['length']-0x1]['focus']();}window['removeParameterOption']=function(_0x26a8d7){state['parameterOptions']['splice'](_0x26a8d7,0x1),renderParameterOptionsList();},window['updateParameterOption']=function(_0x493b66,_0x7f7c7d,_0x4b89a1){state['parameterOptions'][_0x493b66]&&(state['parameterOptions'][_0x493b66][_0x7f7c7d]=_0x4b89a1);};function renderParameterOptionsList(){const _0x43679f=document['getElementById']('profile-param-options-list');if(!_0x43679f)return;if(state['parameterOptions']['length']===0x0){_0x43679f['innerHTML']='<div\x20class=\x22options-empty\x20text-muted\x22>No\x20options\x20defined.\x20Click\x20\x22+\x20Add\x20Option\x22\x20to\x20add\x20one.</div>';return;}_0x43679f['innerHTML']=state['parameterOptions']['map']((_0x24313a,_0x55b114)=>'\x0a\x20\x20\x20\x20<div\x20class=\x22option-item\x22\x20data-index=\x22'+_0x55b114+'\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'](_0x24313a['value']||'')+'\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20onchange=\x22updateParameterOption('+_0x55b114+',\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'](_0x24313a['label']||'')+'\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20onchange=\x22updateParameterOption('+_0x55b114+',\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('+_0x55b114+')\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'](_0x24313a['description']||'')+'\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20onchange=\x22updateParameterOption('+_0x55b114+',\x20\x27description\x27,\x20this.value)\x22>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20')['join']('');}function openEditParameterModal(_0x3bb344,_0x248468){state['parameterModalContext']=_0x248468,state['editingParamName']=_0x3bb344;let _0x1b3f95;if(_0x248468==='deploy')_0x1b3f95=state['currentDeployProfileData']?.['parameters']?.[_0x3bb344];else{if(_0x248468==='test'){const _0x2cb087=state['selectedEnvData']?.['tests']?.[state['currentTest']];_0x1b3f95=_0x2cb087?.['parameters']?.[_0x3bb344];}else _0x248468==='template'&&(_0x1b3f95=state['currentTemplateData']?.['parameters']?.[_0x3bb344]);}if(!_0x1b3f95)return;const _0x3b97e4=document['getElementById']('profile-parameter-modal'),_0x1f4dfb=document['getElementById']('profile-parameter-modal-title'),_0x35dde2=document['getElementById']('profile-parameter-error');_0x1f4dfb['textContent']='Edit\x20Parameter',_0x35dde2['hidden']=!![],document['getElementById']('profile-param-name')['value']=_0x3bb344,document['getElementById']('profile-param-name')['disabled']=!![],document['getElementById']('profile-param-description')['value']=_0x1b3f95['description']||'',document['getElementById']('profile-param-default')['value']=_0x1b3f95['default']||'',document['getElementById']('profile-param-required')['checked']=_0x1b3f95['required']||![];const _0x2a240d=_0x1b3f95['prompt'];if(_0x2a240d){document['getElementById']('profile-param-label')['value']=_0x2a240d['label']||'',document['getElementById']('profile-param-multiselect')['checked']=_0x2a240d['multiSelect']||![];if(_0x2a240d['type']==='list')document['getElementById']('profile-param-type')['value']='list',state['parameterOptions']=(_0x2a240d['options']||[])['map'](_0x29f131=>{if(typeof _0x29f131==='string')return{'value':_0x29f131,'label':'','description':''};return{'value':_0x29f131['value']||'','label':_0x29f131['label']||'','description':_0x29f131['description']||''};});else{if(_0x2a240d['type']==='command')document['getElementById']('profile-param-type')['value']='command',document['getElementById']('profile-param-command')['value']=_0x2a240d['command']||'',document['getElementById']('profile-param-parser')['value']=_0x2a240d['parser']||'lines',document['getElementById']('profile-param-repos')['value']=(_0x2a240d['repos']||[])['join'](',\x20'),state['parameterOptions']=[];else _0x2a240d['type']==='files'?(document['getElementById']('profile-param-type')['value']='files',document['getElementById']('profile-param-path')['value']=_0x2a240d['path']||'',document['getElementById']('profile-param-include')['value']=_0x2a240d['include']||'files',document['getElementById']('profile-param-pattern')['value']=_0x2a240d['pattern']||'',document['getElementById']('profile-param-files-repos')['value']=(_0x2a240d['repos']||[])['join'](',\x20'),state['parameterOptions']=[]):(document['getElementById']('profile-param-type')['value']='text',state['parameterOptions']=[]);}}else{document['getElementById']('profile-param-label')['value']=_0x1b3f95['label']||'',document['getElementById']('profile-param-multiselect')['checked']=![];const _0x391155=_0x1b3f95['type']||'text';if(_0x391155==='select')document['getElementById']('profile-param-type')['value']='list',state['parameterOptions']=(_0x1b3f95['options']||[])['map'](_0x21b883=>{if(typeof _0x21b883==='string')return{'value':_0x21b883,'label':'','description':''};return{'value':_0x21b883['value']||_0x21b883,'label':_0x21b883['label']||'','description':_0x21b883['description']||''};});else{if(_0x391155==='command')document['getElementById']('profile-param-type')['value']='command',document['getElementById']('profile-param-command')['value']=_0x1b3f95['command']||'',document['getElementById']('profile-param-parser')['value']=_0x1b3f95['parser']||'lines',document['getElementById']('profile-param-repos')['value']=(_0x1b3f95['repos']||[])['join'](',\x20'),state['parameterOptions']=[];else _0x391155==='boolean'?(document['getElementById']('profile-param-type')['value']='boolean',state['parameterOptions']=[]):(document['getElementById']('profile-param-type')['value']='text',state['parameterOptions']=[]);}}renderParameterOptionsList(),updateProfileParamTypeVisibility(),_0x3b97e4['hidden']=![],document['getElementById']('profile-param-label')['focus']();}window['editProfileParameter']=function(_0x1cd36d){openEditParameterModal(_0x1cd36d,'deploy');},window['editTestParameter']=function(_0x22d346){openEditParameterModal(_0x22d346,'test');},window['editTemplateParameter']=function(_0x5f2881){openEditParameterModal(_0x5f2881,'template');};function closeProfileParameterModal(){document['getElementById']('profile-parameter-modal')['hidden']=!![],state['editingParamName']=null,state['parameterModalContext']=null,state['parameterOptions']=[];}function saveProfileParameter(){const _0x90edcd=document['getElementById']('profile-param-name'),_0x53d4fa=document['getElementById']('profile-param-label'),_0x19d5e9=document['getElementById']('profile-param-description'),_0x377db7=document['getElementById']('profile-param-type'),_0x4e337e=document['getElementById']('profile-param-command'),_0x7a7721=document['getElementById']('profile-param-parser'),_0x4fbb60=document['getElementById']('profile-param-repos'),_0xc0ab31=document['getElementById']('profile-param-path'),_0x5cb2e1=document['getElementById']('profile-param-include'),_0x6e7e00=document['getElementById']('profile-param-pattern'),_0x196c5d=document['getElementById']('profile-param-files-repos'),_0x88d648=document['getElementById']('profile-param-multiselect'),_0x538adf=document['getElementById']('profile-param-default'),_0x1c05d8=document['getElementById']('profile-param-required'),_0x37f5de=document['getElementById']('profile-parameter-error'),_0x7a6e11=_0x90edcd['value']['trim'](),_0x50c153=_0x53d4fa['value']['trim'](),_0xf5536e=_0x19d5e9['value']['trim'](),_0x234580=_0x377db7['value'],_0xfc2276=_0x1c05d8['checked'],_0x295cad=_0x538adf['value']['trim'](),_0x2e2a7c=_0x88d648['checked'],_0x1b9197=state['parameterModalContext'];if(!_0x7a6e11){_0x37f5de['textContent']='Parameter\x20name\x20is\x20required',_0x37f5de['hidden']=![],_0x90edcd['focus']();return;}if(!/^[A-Za-z_][A-Za-z0-9_]*$/['test'](_0x7a6e11)){_0x37f5de['textContent']='Invalid\x20parameter\x20name.\x20Use\x20letters,\x20numbers,\x20and\x20underscores.',_0x37f5de['hidden']=![],_0x90edcd['focus']();return;}let _0x1d1722;if(_0x1b9197==='deploy')!state['currentDeployProfileData']['parameters']&&(state['currentDeployProfileData']['parameters']={}),_0x1d1722=state['currentDeployProfileData']['parameters'];else{if(_0x1b9197==='test'){const _0x53bf73=state['selectedEnvData']['tests'][state['currentTest']];!_0x53bf73['parameters']&&(_0x53bf73['parameters']={}),_0x1d1722=_0x53bf73['parameters'];}else _0x1b9197==='template'&&(!state['currentTemplateData']['parameters']&&(state['currentTemplateData']['parameters']={}),_0x1d1722=state['currentTemplateData']['parameters']);}if(state['editingParamName']===null&&_0x1d1722[_0x7a6e11]){_0x37f5de['textContent']='Parameter\x20\x22'+_0x7a6e11+'\x22\x20already\x20exists',_0x37f5de['hidden']=![];return;}let _0x7e3870;if(_0x1b9197==='deploy'){_0x7e3870={'required':_0xfc2276};if(_0x50c153)_0x7e3870['label']=_0x50c153;if(_0xf5536e)_0x7e3870['description']=_0xf5536e;if(_0x295cad)_0x7e3870['default']=_0x295cad;if(_0x234580==='list'){_0x7e3870['type']='select';const _0x59aa34=state['parameterOptions']['filter'](_0x425759=>_0x425759['value']['trim']());if(_0x59aa34['length']<0x1){_0x37f5de['textContent']='At\x20least\x20one\x20option\x20with\x20a\x20value\x20is\x20required',_0x37f5de['hidden']=![];return;}_0x7e3870['options']=_0x59aa34['map'](_0x351aa4=>{if(_0x351aa4['label']||_0x351aa4['description'])return{'value':_0x351aa4['value'],'label':_0x351aa4['label']||undefined,'description':_0x351aa4['description']||undefined};return _0x351aa4['value'];});}else{if(_0x234580==='command'){_0x7e3870['type']='command';const _0x1896fa=_0x4e337e['value']['trim']();if(!_0x1896fa){_0x37f5de['textContent']='Command\x20is\x20required\x20for\x20dynamic\x20type',_0x37f5de['hidden']=![],_0x4e337e['focus']();return;}_0x7e3870['command']=_0x1896fa;const _0xb6ddd=_0x7a7721['value'];if(_0xb6ddd&&_0xb6ddd!=='lines')_0x7e3870['parser']=_0xb6ddd;const _0x594719=_0x4fbb60['value']['split'](',')['map'](_0x1f8ba5=>_0x1f8ba5['trim']())['filter'](_0x3652b3=>_0x3652b3);if(_0x594719['length']>0x0)_0x7e3870['repos']=_0x594719;}else{if(_0x234580==='files'){_0x7e3870['type']='files';const _0x288632=_0xc0ab31['value']['trim']();if(!_0x288632){_0x37f5de['textContent']='Directory\x20path\x20is\x20required\x20for\x20file\x20browser\x20type',_0x37f5de['hidden']=![],_0xc0ab31['focus']();return;}_0x7e3870['path']=_0x288632,_0x7e3870['include']=_0x5cb2e1['value'];const _0x3e5c23=_0x6e7e00['value']['trim']();if(_0x3e5c23)_0x7e3870['pattern']=_0x3e5c23;const _0x461299=_0x196c5d['value']['split'](',')['map'](_0x56df01=>_0x56df01['trim']())['filter'](_0x2fcbb6=>_0x2fcbb6);if(_0x461299['length']>0x0)_0x7e3870['repos']=_0x461299;if(_0x2e2a7c)_0x7e3870['multiSelect']=!![];}else _0x234580==='boolean'?_0x7e3870['type']='boolean':_0x7e3870['type']='text';}}}else{_0x7e3870={'required':_0xfc2276};if(_0xf5536e)_0x7e3870['description']=_0xf5536e;if(_0x295cad)_0x7e3870['default']=_0x295cad;if(_0x234580!=='text'&&_0x234580!=='boolean'){_0x7e3870['prompt']={'type':_0x234580};if(_0x50c153)_0x7e3870['prompt']['label']=_0x50c153;if(_0x2e2a7c)_0x7e3870['prompt']['multiSelect']=!![];if(_0x234580==='list'){const _0x58e513=state['parameterOptions']['filter'](_0x4c882a=>_0x4c882a['value']['trim']());if(_0x58e513['length']<0x1){_0x37f5de['textContent']='At\x20least\x20one\x20option\x20with\x20a\x20value\x20is\x20required',_0x37f5de['hidden']=![];return;}_0x7e3870['prompt']['options']=_0x58e513['map'](_0x15a257=>{const _0x145727={'value':_0x15a257['value']};if(_0x15a257['label'])_0x145727['label']=_0x15a257['label'];if(_0x15a257['description'])_0x145727['description']=_0x15a257['description'];return _0x145727;});}else{if(_0x234580==='command'){const _0x3f5142=_0x4e337e['value']['trim']();if(!_0x3f5142){_0x37f5de['textContent']='Command\x20is\x20required\x20for\x20dynamic\x20type',_0x37f5de['hidden']=![],_0x4e337e['focus']();return;}_0x7e3870['prompt']['command']=_0x3f5142;const _0x4251de=_0x7a7721['value'];if(_0x4251de&&_0x4251de!=='json')_0x7e3870['prompt']['parser']=_0x4251de;const _0x309867=_0x4fbb60['value']['split'](',')['map'](_0x5823cb=>_0x5823cb['trim']())['filter'](_0x4cd3b9=>_0x4cd3b9);if(_0x309867['length']>0x0)_0x7e3870['prompt']['repos']=_0x309867;}else{if(_0x234580==='files'){const _0x517a11=_0xc0ab31['value']['trim']();if(!_0x517a11){_0x37f5de['textContent']='Directory\x20path\x20is\x20required\x20for\x20file\x20browser\x20type',_0x37f5de['hidden']=![],_0xc0ab31['focus']();return;}_0x7e3870['prompt']['path']=_0x517a11;const _0xfe8971=_0x5cb2e1['value'];if(_0xfe8971!=='files')_0x7e3870['prompt']['include']=_0xfe8971;const _0x206c86=_0x6e7e00['value']['trim']();if(_0x206c86)_0x7e3870['prompt']['pattern']=_0x206c86;const _0x4f586b=_0x196c5d['value']['split'](',')['map'](_0x4ce43c=>_0x4ce43c['trim']())['filter'](_0x2b74b8=>_0x2b74b8);if(_0x4f586b['length']>0x0)_0x7e3870['prompt']['repos']=_0x4f586b;}}}}}_0x1d1722[_0x7a6e11]=_0x7e3870,closeProfileParameterModal();if(_0x1b9197==='deploy')renderProfileParameters(),markProfileAsModified();else{if(_0x1b9197==='test')renderTestParameters(),markAsModified();else _0x1b9197==='template'&&(renderTemplateParameters(),markAsModified());}}function deleteParameter(_0x1ac7fe,_0x487a18){if(!confirm('Delete\x20this\x20parameter?'))return;if(_0x487a18==='deploy'){if(!state['currentDeployProfileData']?.['parameters'])return;delete state['currentDeployProfileData']['parameters'][_0x1ac7fe],renderProfileParameters(),markProfileAsModified();}else{if(_0x487a18==='test'){const _0x1b65b0=state['selectedEnvData']?.['tests']?.[state['currentTest']];if(!_0x1b65b0?.['parameters'])return;delete _0x1b65b0['parameters'][_0x1ac7fe],renderTestParameters(),markAsModified();}else{if(_0x487a18==='template'){if(!state['currentTemplateData']?.['parameters'])return;delete state['currentTemplateData']['parameters'][_0x1ac7fe],renderTemplateParameters(),markAsModified();}}}}window['deleteProfileParameter']=function(_0x1fac46){deleteParameter(_0x1fac46,'deploy');},window['deleteTestParameter']=function(_0x168776){deleteParameter(_0x168776,'test');},window['deleteTemplateParameter']=function(_0x7dffc9){deleteParameter(_0x7dffc9,'template');};function renderTestParameters(){const _0x2889ad=document['getElementById']('test-parameters-list');if(!_0x2889ad)return;const _0x4f60db=state['selectedEnvData']?.['tests']?.[state['currentTest']],_0x46b2e2=_0x4f60db?.['parameters']||{},_0x4bb3e7=Object['entries'](_0x46b2e2),_0x4b6af0=document['getElementById']('test-parameters-count');if(_0x4b6af0)_0x4b6af0['textContent']=_0x4bb3e7['length'];if(_0x4bb3e7['length']===0x0){_0x2889ad['innerHTML']='<div\x20class=\x22profile-list-empty\x22>No\x20parameters\x20defined</div>';return;}_0x2889ad['innerHTML']=_0x4bb3e7['map'](([_0x49fce0,_0x540b18])=>{const _0x40709d=getParameterTypeLabel(_0x540b18),_0x55bd52=_0x540b18['prompt']?.['label']||_0x540b18['label']||'';return'\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22profile-param-item\x22\x20data-name=\x22'+Utils['escapeHtml'](_0x49fce0)+'\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22profile-item-key\x22>'+Utils['escapeHtml'](_0x49fce0)+'</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22param-type-badge\x22>'+_0x40709d+'</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22profile-item-value\x22>'+(_0x55bd52?Utils['escapeHtml'](_0x55bd52):'')+'</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20'+(_0x540b18['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'](_0x49fce0)+'\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'](_0x49fce0)+'\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 _0x631f94=document['getElementById']('template-parameters-list');if(!_0x631f94)return;const _0x1e337b=state['currentTemplateData']?.['parameters']||{},_0x425912=Array['isArray'](_0x1e337b)?Object['fromEntries'](_0x1e337b['map'](_0x4e1c92=>[_0x4e1c92['name'],_0x4e1c92])):_0x1e337b,_0x3c8f0e=Object['entries'](_0x425912),_0x24ac4d=document['getElementById']('template-parameters-count');if(_0x24ac4d)_0x24ac4d['textContent']=_0x3c8f0e['length'];if(_0x3c8f0e['length']===0x0){_0x631f94['innerHTML']='<div\x20class=\x22profile-list-empty\x22>No\x20parameters\x20defined</div>';return;}_0x631f94['innerHTML']=_0x3c8f0e['map'](([_0x4ebdc2,_0xdc2017])=>{const _0x5c92d1=getParameterTypeLabel(_0xdc2017),_0x19093d=_0xdc2017['prompt']?.['label']||_0xdc2017['label']||'';return'\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22profile-param-item\x22\x20data-name=\x22'+Utils['escapeHtml'](_0x4ebdc2)+'\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22profile-item-key\x22>'+Utils['escapeHtml'](_0x4ebdc2)+'</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22param-type-badge\x22>'+_0x5c92d1+'</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22profile-item-value\x22>'+(_0x19093d?Utils['escapeHtml'](_0x19093d):'')+'</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20'+(_0xdc2017['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'](_0x4ebdc2)+'\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'](_0x4ebdc2)+'\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(_0x5e0de1){if(_0x5e0de1['prompt'])return _0x5e0de1['prompt']['type']||'text';const _0x5768ef=_0x5e0de1['type']||'text';if(_0x5768ef==='select')return'list';return _0x5768ef;}window['openAddTestParameterModal']=function(){openAddParameterModal('test');},window['openAddTemplateParameterModal']=function(){openAddParameterModal('template');};function openAddDeployProfileModal(){const _0x11dbbe=document['getElementById']('add-deploy-profile-modal'),_0x510c02=document['getElementById']('new-deploy-profile-name'),_0x2d1c3b=document['getElementById']('new-deploy-profile-description'),_0x5bad5b=document['getElementById']('add-deploy-profile-error');_0x510c02['value']='',_0x2d1c3b['value']='',_0x5bad5b['hidden']=!![],_0x510c02['classList']['remove']('input-error'),_0x2d1c3b['classList']['remove']('input-error'),_0x11dbbe['hidden']=![],_0x510c02['focus']();}function closeAddDeployProfileModal(){document['getElementById']('add-deploy-profile-modal')['hidden']=!![];}async function confirmAddDeployProfile(){const _0x20f22a=document['getElementById']('new-deploy-profile-name'),_0x152168=document['getElementById']('new-deploy-profile-description'),_0x11b953=document['getElementById']('add-deploy-profile-error'),_0x3871f5=_0x20f22a['value']['trim'](),_0xc0b78b=_0x152168['value']['trim']();_0x20f22a['classList']['remove']('input-error'),_0x152168['classList']['remove']('input-error'),_0x11b953['hidden']=!![];if(!_0x3871f5){_0x20f22a['classList']['add']('input-error'),_0x11b953['textContent']='Profile\x20name\x20is\x20required',_0x11b953['hidden']=![];return;}if(!/^[A-Za-z_][A-Za-z0-9_-]*$/['test'](_0x3871f5)){_0x20f22a['classList']['add']('input-error'),_0x11b953['textContent']='Profile\x20name\x20must\x20start\x20with\x20a\x20letter\x20or\x20underscore,\x20and\x20contain\x20only\x20letters,\x20numbers,\x20hyphens,\x20and\x20underscores',_0x11b953['hidden']=![];return;}if(!_0xc0b78b){_0x152168['classList']['add']('input-error'),_0x11b953['textContent']='Description\x20is\x20required',_0x11b953['hidden']=![];return;}const _0xa25c08=state['selectedEnvData']['deployment_profiles']||[];if(_0xa25c08['find'](_0x3f2506=>_0x3f2506['name']['toLowerCase']()===_0x3871f5['toLowerCase']())){_0x20f22a['classList']['add']('input-error'),_0x11b953['textContent']='A\x20profile\x20with\x20this\x20name\x20already\x20exists',_0x11b953['hidden']=![];return;}try{const _0x1160ec=await fetch('/environments/'+state['selectedEnv']+'/deployment-profiles',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'profileName':_0x3871f5,'description':_0xc0b78b})}),_0x1834b0=await _0x1160ec['json']();if(!_0x1160ec['ok']){_0x11b953['textContent']=_0x1834b0['error']||'Failed\x20to\x20create\x20profile',_0x11b953['hidden']=![];return;}await loadEnvironmentDetails(state['selectedEnv']),state['currentDeployProfile']=_0x3871f5,renderDeployProfiles(),closeAddDeployProfileModal(),Utils['showSuccess']('Deployment\x20profile\x20\x22'+_0x3871f5+'\x22\x20created');}catch(_0x15696d){_0x11b953['textContent']=_0x15696d['message']||'Failed\x20to\x20create\x20profile',_0x11b953['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 _0x1776b8=state['currentDeployProfile'];try{const _0x415c58=await fetch('/environments/'+state['selectedEnv']+'/deployment-profiles/'+_0x1776b8,{'method':'DELETE'}),_0x4b65b9=await _0x415c58['json']();if(!_0x415c58['ok']){Utils['showError'](_0x4b65b9['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'+_0x1776b8+'\x22\x20deleted');}catch(_0x310270){Utils['showError'](_0x310270['message']||'Failed\x20to\x20delete\x20profile'),closeDeleteDeployProfileModal();}}async function loadSecrets(){if(!state['selectedEnv']){state['secrets']=[];return;}try{const _0x1f6d47=await API['get']('/environments/'+state['selectedEnv']+'/secrets');state['secrets']=_0x1f6d47['secrets']||[];}catch(_0x510178){console['error']('Failed\x20to\x20load\x20secrets:',_0x510178),state['secrets']=[];}}function renderSecrets(){const _0x503d67=document['getElementById']('secrets-list'),_0x2c7435=document['getElementById']('secrets-empty'),_0x5933fc=document['getElementById']('secrets-filter');if(!_0x503d67||!_0x2c7435)return;updateTabBadge('badge-secrets',state['secrets']?.['length']||0x0);const _0xc97cf8=_0x5933fc?.['value']||'all',_0x3e0d60=_0xc97cf8==='all'?state['secrets']:state['secrets']['filter'](_0x5a3d96=>{const _0x2231ae=_0x5a3d96['available_for']||[];return _0x2231ae['includes'](_0xc97cf8);});if(_0x3e0d60['length']===0x0){_0x503d67['innerHTML']='',_0x503d67['hidden']=!![];state['secrets']['length']>0x0&&_0xc97cf8!=='all'?_0x2c7435['innerHTML']='\x0a\x20\x20\x20\x20\x20\x20\x20\x20<p>No\x20secrets\x20match\x20the\x20\x22'+_0xc97cf8+'\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':_0x2c7435['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';_0x2c7435['hidden']=![];return;}_0x503d67['hidden']=![],_0x2c7435['hidden']=!![],_0x503d67['innerHTML']=_0x3e0d60['map'](_0x340dce=>{const _0x533aea=_0x340dce['type']==='file'?'file':'value',_0x219c28=_0x340dce['type']==='file'?'File':'Value',_0x306454=_0x340dce['type']==='file'?'<span\x20class=\x22secret-source\x22\x20title=\x22'+Utils['escapeHtml'](_0x340dce['source'])+'\x22>'+Utils['escapeHtml'](_0x340dce['source'])+'</span>':_0x340dce['value']?'':'<span\x20class=\x22secret-meta-text\x20warning\x22>No\x20value</span>',_0x2fe944=_0x340dce['available_for']||[],_0x330233='\x0a\x20\x20\x20\x20\x20\x20<span\x20class=\x22secret-availability-badges\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20'+(_0x2fe944['includes']('build')?'<span\x20class=\x22availability-badge\x20build\x22>Build</span>':'')+'\x0a\x20\x20\x20\x20\x20\x20\x20\x20'+(_0x2fe944['includes']('tasks')?'<span\x20class=\x22availability-badge\x20tasks\x22>Tasks</span>':'')+'\x0a\x20\x20\x20\x20\x20\x20\x20\x20'+(_0x2fe944['includes']('deploy')?'<span\x20class=\x22availability-badge\x20deploy\x22>Deploy</span>':'')+'\x0a\x20\x20\x20\x20\x20\x20</span>\x0a\x20\x20\x20\x20',_0x203227=_0x340dce['git_remote']?'<span\x20class=\x22git-pat-badge\x22\x20title=\x22Git\x20PAT\x20for\x20'+Utils['escapeHtml'](_0x340dce['git_remote'])+'\x22>PAT:\x20'+Utils['escapeHtml'](_0x340dce['git_remote'])+'</span>':'';return'\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22secret-item\x22\x20data-secret=\x22'+Utils['escapeHtml'](_0x340dce['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'](_0x340dce['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'+_0x330233+'\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22secret-type-badge\x20'+_0x533aea+'\x22>'+_0x219c28+'</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20'+_0x203227+'\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20'+(_0x340dce['description']?'<span\x20class=\x22secret-description\x22\x20title=\x22'+Utils['escapeHtml'](_0x340dce['description'])+'\x22>'+Utils['escapeHtml'](_0x340dce['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>'+_0x306454+'</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'](_0x340dce['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'](_0x340dce['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 _0x104b5b=document['getElementById']('secret-modal'),_0x4d4a16=document['getElementById']('secret-modal-title'),_0x43d79c=document['getElementById']('secret-name'),_0x325746=document['getElementById']('secret-description'),_0x34c2b3=document['getElementById']('secret-type-file'),_0x5b18ea=document['getElementById']('secret-type-value'),_0x386f57=document['getElementById']('secret-source'),_0x4665c3=document['getElementById']('secret-value'),_0x1f1451=document['getElementById']('secret-modal-error'),_0x657402=document['getElementById']('secret-source-validation'),_0x4471d0=document['getElementById']('secret-available-build'),_0x59d77d=document['getElementById']('secret-available-tasks'),_0x5b019e=document['getElementById']('secret-available-deploy'),_0x3b3e8e=document['getElementById']('secret-expose-env'),_0x288f11=document['getElementById']('secret-expose-file'),_0x4b798f=document['getElementById']('secret-target');_0x4d4a16['textContent']='Add\x20Secret',_0x43d79c['value']='',_0x43d79c['disabled']=![],_0x325746['value']='',_0x5b18ea['checked']=!![],_0x34c2b3['checked']=![],_0x386f57['value']='',resetSecretValueVisibility(''),_0x1f1451['hidden']=!![],_0x657402['hidden']=!![];const _0x3f397b=document['getElementById']('secrets-filter'),_0x4fb91d=_0x3f397b?.['value']||'all';_0x4fb91d==='all'?(_0x4471d0['checked']=![],_0x59d77d['checked']=!![],_0x5b019e['checked']=![]):(_0x4471d0['checked']=_0x4fb91d==='build',_0x59d77d['checked']=_0x4fb91d==='tasks',_0x5b019e['checked']=_0x4fb91d==='deploy');_0x3b3e8e['checked']=!![],_0x288f11['checked']=![],_0x4b798f['value']='',handleSecretTypeChange(),resetGitPatFields(),updateGitPatVisibility(),updateExposeAsVisibility(),updateSecretTargetLabel();const _0x289449=document['getElementById']('secret-source-hint');_0x289449&&state['selectedEnvData']?.['path']&&(_0x289449['textContent']='Absolute\x20path,\x20or\x20relative\x20to:\x20'+state['selectedEnvData']['path']),_0x104b5b['hidden']=![],_0x43d79c['focus']();}window['openEditSecretModal']=async function(_0x5d3d9f){state['editingSecret']=_0x5d3d9f;const _0x16bc87=state['secrets']['find'](_0x3ba184=>_0x3ba184['name']===_0x5d3d9f);if(!_0x16bc87){Utils['showError']('Secret\x20not\x20found');return;}const _0x5ab7e0=document['getElementById']('secret-modal'),_0x141200=document['getElementById']('secret-modal-title'),_0x5d868b=document['getElementById']('secret-name'),_0x369d78=document['getElementById']('secret-description'),_0xd2e048=document['getElementById']('secret-type-file'),_0x15860b=document['getElementById']('secret-type-value'),_0x3921b3=document['getElementById']('secret-source'),_0x62316b=document['getElementById']('secret-value'),_0x2702a4=document['getElementById']('secret-modal-error'),_0x1b62a2=document['getElementById']('secret-source-validation'),_0x49bf00=document['getElementById']('secret-available-build'),_0x52cd54=document['getElementById']('secret-available-tasks'),_0x49204c=document['getElementById']('secret-available-deploy'),_0x2ed759=document['getElementById']('secret-expose-env'),_0x56b76b=document['getElementById']('secret-expose-file'),_0x373c49=document['getElementById']('secret-target');_0x141200['textContent']='Edit\x20Secret',_0x5d868b['value']=_0x5d3d9f,_0x5d868b['disabled']=!![],_0x369d78['value']=_0x16bc87['description']||'';_0x16bc87['type']==='file'?(_0xd2e048['checked']=!![],_0x15860b['checked']=![],_0x3921b3['value']=_0x16bc87['source']||'',resetSecretValueVisibility('')):(_0x15860b['checked']=!![],_0xd2e048['checked']=![],_0x3921b3['value']='',resetSecretValueVisibility(_0x16bc87['value']||''),_0x62316b['placeholder']='Enter\x20secret\x20value');const _0x4914a8=_0x16bc87['available_for']||[];_0x49bf00['checked']=_0x4914a8['includes']('build'),_0x52cd54['checked']=_0x4914a8['includes']('tasks'),_0x49204c['checked']=_0x4914a8['includes']('deploy');_0x16bc87['expose_as']==='file'?(_0x56b76b['checked']=!![],_0x2ed759['checked']=![]):(_0x2ed759['checked']=!![],_0x56b76b['checked']=![]);_0x373c49['value']=_0x16bc87['target']||'',setGitPatFields(_0x16bc87['git_remote']),_0x2702a4['hidden']=!![],_0x1b62a2['hidden']=!![],handleSecretTypeChange(),updateGitPatVisibility(),updateExposeAsVisibility(),updateSecretTargetLabel();const _0x5bdb2d=document['getElementById']('secret-source-hint');_0x5bdb2d&&state['selectedEnvData']?.['path']&&(_0x5bdb2d['textContent']='Absolute\x20path,\x20or\x20relative\x20to:\x20'+state['selectedEnvData']['path']),_0x5ab7e0['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 _0xca1396=document['getElementById']('secret-type-file')['checked'];document['getElementById']('secret-source-row')['hidden']=!_0xca1396,document['getElementById']('secret-value-row')['hidden']=_0xca1396;}function updateExposeAsVisibility(){const _0x4e889f=document['getElementById']('secret-available-tasks')['checked'],_0x594a8b=document['getElementById']('secret-available-deploy')['checked'],_0x586c54=document['getElementById']('secret-git-pat-checkbox')['checked'],_0x5731da=(_0x4e889f||_0x594a8b)&&!_0x586c54;document['getElementById']('secret-expose-as-row')['hidden']=!_0x5731da,document['getElementById']('secret-target-row')['hidden']=!_0x5731da;}function updateSecretTargetLabel(){const _0x290ece=document['getElementById']('secret-expose-file')['checked'],_0x573f2b=document['getElementById']('secret-target-label'),_0x3da200=document['getElementById']('secret-target-hint'),_0x5a3234=document['getElementById']('secret-target');_0x290ece?(_0x573f2b['innerHTML']='Container\x20Path\x20<span\x20class=\x22required\x22>*</span>',_0x3da200['textContent']='Absolute\x20path\x20where\x20file\x20will\x20be\x20mounted\x20in\x20container',_0x5a3234['placeholder']='e.g.,\x20/secrets/key.pem'):(_0x573f2b['innerHTML']='Variable\x20Name\x20<span\x20class=\x22required\x22>*</span>',_0x3da200['textContent']='The\x20environment\x20variable\x20name',_0x5a3234['placeholder']='e.g.,\x20SSH_PRIVATE_KEY');}function updateGitPatVisibility(){document['getElementById']('secret-git-pat-row')['hidden']=![];}function handleGitPatCheckboxChange(){const _0x534b9=document['getElementById']('secret-git-pat-checkbox')['checked'],_0x3f4b9e=document['getElementById']('secret-git-host-row');_0x3f4b9e['hidden']=!_0x534b9,!_0x534b9&&(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 _0xef9837=document['getElementById']('secret-git-host')['value'],_0x6a8ed5=document['getElementById']('secret-git-custom-host-row');_0x6a8ed5['hidden']=_0xef9837!=='custom',_0xef9837!=='custom'&&(document['getElementById']('secret-git-custom-host')['value']='');}function getGitRemoteValue(){const _0x2d3108=document['getElementById']('secret-git-pat-checkbox')['checked'];if(!_0x2d3108)return null;const _0x412af6=document['getElementById']('secret-git-host')['value'];if(!_0x412af6)return null;if(_0x412af6==='custom'){const _0x40e232=document['getElementById']('secret-git-custom-host')['value']['trim']();return _0x40e232||null;}return _0x412af6;}function setGitPatFields(_0x7b37e){const _0x5a32a5=document['getElementById']('secret-git-pat-checkbox'),_0x1f6a93=document['getElementById']('secret-git-host'),_0x2afe62=document['getElementById']('secret-git-custom-host'),_0x3639a2=document['getElementById']('secret-git-host-row'),_0x3712ff=document['getElementById']('secret-git-custom-host-row');if(!_0x7b37e){_0x5a32a5['checked']=![],_0x1f6a93['value']='',_0x2afe62['value']='',_0x3639a2['hidden']=!![],_0x3712ff['hidden']=!![];return;}_0x5a32a5['checked']=!![],_0x3639a2['hidden']=![];const _0x5391a9=['github.com','dev.azure.com','bitbucket.org','gitlab.com'];_0x5391a9['includes'](_0x7b37e['toLowerCase']())?(_0x1f6a93['value']=_0x7b37e['toLowerCase'](),_0x3712ff['hidden']=!![],_0x2afe62['value']=''):(_0x1f6a93['value']='custom',_0x3712ff['hidden']=![],_0x2afe62['value']=_0x7b37e);}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 _0x158c5c=document['getElementById']('secret-source'),_0x2577cd=document['getElementById']('secret-source-validation'),_0x36ffdd=_0x158c5c['value']['trim']();if(!_0x36ffdd){_0x2577cd['hidden']=!![];return;}try{const _0x3c31aa=await fetch('/environments/'+state['selectedEnv']+'/secrets/_validate/validate',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'source':_0x36ffdd})}),_0x5a733a=await _0x3c31aa['json']();if(_0x5a733a['exists']&&_0x5a733a['isFile'])_0x2577cd['className']='field-validation\x20valid',_0x2577cd['innerHTML']='✓\x20File\x20exists\x20('+formatBytes(_0x5a733a['size'])+')';else _0x5a733a['exists']&&!_0x5a733a['isFile']?(_0x2577cd['className']='field-validation\x20warning',_0x2577cd['innerHTML']='⚠\x20Path\x20exists\x20but\x20is\x20not\x20a\x20file'):(_0x2577cd['className']='field-validation\x20warning',_0x2577cd['innerHTML']='⚠\x20File\x20not\x20found');_0x2577cd['hidden']=![];}catch(_0x479968){_0x2577cd['className']='field-validation\x20warning',_0x2577cd['innerHTML']='⚠\x20Could\x20not\x20validate\x20path',_0x2577cd['hidden']=![];}}function formatBytes(_0x22bac7){if(_0x22bac7===0x0)return'0\x20B';const _0x31905a=0x400,_0x276063=['B','KB','MB','GB'],_0x3fa003=Math['floor'](Math['log'](_0x22bac7)/Math['log'](_0x31905a));return parseFloat((_0x22bac7/Math['pow'](_0x31905a,_0x3fa003))['toFixed'](0x1))+'\x20'+_0x276063[_0x3fa003];}function resetSecretValueVisibility(_0x46bd06){secretValueStore=_0x46bd06,secretValueVisible=![],lastCursorPosition=0x0;const _0x296b68=document['getElementById']('secret-value'),_0x11e6c1=document['querySelector']('.secret-toggle-visibility');_0x296b68&&(_0x296b68['value']=_0x46bd06?'•'['repeat'](_0x46bd06['length']):''),_0x11e6c1&&(_0x11e6c1['hidden']=![],_0x11e6c1['querySelector']('.eye-open')['style']['display']='block',_0x11e6c1['querySelector']('.eye-closed')['style']['display']='none');}function toggleSecretValueVisibility(){const _0x4dddbe=document['getElementById']('secret-value'),_0x5e8877=document['querySelector']('.secret-toggle-visibility');secretValueVisible=!secretValueVisible,secretValueVisible?(_0x4dddbe['value']=secretValueStore,_0x5e8877['querySelector']('.eye-open')['style']['display']='none',_0x5e8877['querySelector']('.eye-closed')['style']['display']='block'):(_0x4dddbe['value']=secretValueStore?'•'['repeat'](secretValueStore['length']):'',_0x5e8877['querySelector']('.eye-open')['style']['display']='block',_0x5e8877['querySelector']('.eye-closed')['style']['display']='none');}function handleSecretValueBeforeInput(_0x527661){if(!secretValueVisible){const _0x3a9f59=_0x527661['target'];lastCursorPosition=_0x3a9f59['selectionStart'],_0x3a9f59['dataset']['selectionEnd']=_0x3a9f59['selectionEnd'];}}function handleSecretValueInput(_0x42dc9f){const _0x22ed21=_0x42dc9f['target'];if(secretValueVisible)secretValueStore=_0x22ed21['value'];else{const _0x1d7104=_0x42dc9f['inputType'],_0x419809=_0x22ed21['value'],_0x2a16a9='•',_0x3afae3=_0x22ed21['selectionStart'],_0x5ecbc3=_0x419809['replace'](new RegExp(_0x2a16a9,'g'),''),_0x1c33d2=secretValueStore['length'],_0x1affe3=lastCursorPosition,_0x4b19a4=parseInt(_0x22ed21['dataset']['selectionEnd']||_0x1affe3),_0x5221dd=_0x4b19a4>_0x1affe3;if(_0x419809==='')secretValueStore='',lastCursorPosition=0x0;else{if(_0x1d7104&&_0x1d7104['startsWith']('delete')){if(_0x5221dd)secretValueStore=secretValueStore['slice'](0x0,_0x1affe3)+secretValueStore['slice'](_0x4b19a4),lastCursorPosition=_0x1affe3;else{const _0x346897=_0x1c33d2-_0x419809['length'];_0x1d7104==='deleteContentBackward'?secretValueStore=secretValueStore['slice'](0x0,_0x3afae3)+secretValueStore['slice'](_0x3afae3+_0x346897):secretValueStore=secretValueStore['slice'](0x0,_0x3afae3)+secretValueStore['slice'](_0x3afae3+_0x346897),lastCursorPosition=_0x3afae3;}}else{if(_0x5ecbc3['length']>0x0){const _0x334281=_0x419809['length']-_0x5ecbc3['length'];if(_0x334281===0x0)secretValueStore=_0x5ecbc3,lastCursorPosition=_0x5ecbc3['length'];else _0x5221dd?(secretValueStore=secretValueStore['slice'](0x0,_0x1affe3)+_0x5ecbc3+secretValueStore['slice'](_0x4b19a4),lastCursorPosition=_0x1affe3+_0x5ecbc3['length']):(secretValueStore=secretValueStore['slice'](0x0,_0x1affe3)+_0x5ecbc3+secretValueStore['slice'](_0x1affe3),lastCursorPosition=_0x1affe3+_0x5ecbc3['length']);}else _0x419809['length']<_0x1c33d2?(secretValueStore=secretValueStore['slice'](0x0,_0x419809['length']),lastCursorPosition=_0x3afae3):lastCursorPosition=_0x3afae3;}}const _0x38bc01=_0x2a16a9['repeat'](secretValueStore['length']);_0x22ed21['value']=_0x38bc01,_0x22ed21['setSelectionRange'](lastCursorPosition,lastCursorPosition),delete _0x22ed21['dataset']['selectionEnd'];}}function handleSecretFileImport(_0xa4d1f9){const _0x36db7a=_0xa4d1f9['target']['files'][0x0];if(!_0x36db7a)return;const _0x2af08d=new FileReader();_0x2af08d['onload']=function(_0x7b5bba){const _0x143301=_0x7b5bba['target']['result'];document['getElementById']('secret-value')['value']=_0x143301,secretValueStore=_0x143301,secretValueVisible=!![];const _0x38101d=document['querySelector']('.secret-toggle-visibility');_0x38101d&&(_0x38101d['querySelector']('.eye-open')['style']['display']='none',_0x38101d['querySelector']('.eye-closed')['style']['display']='block');},_0x2af08d['onerror']=function(){Utils['showError']('Failed\x20to\x20read\x20file');},_0x2af08d['readAsText'](_0x36db7a),_0xa4d1f9['target']['value']='';}async function saveSecret(){const _0x2306c9=document['getElementById']('secret-name'),_0x508f55=document['getElementById']('secret-description'),_0x3199a0=document['getElementById']('secret-type-file')['checked'],_0x9d6daa=document['getElementById']('secret-source'),_0x3179e1=document['getElementById']('secret-value'),_0xc661e2=document['getElementById']('secret-modal-error'),_0xef0987=document['getElementById']('secret-available-build'),_0xfec385=document['getElementById']('secret-available-tasks'),_0x341e50=document['getElementById']('secret-available-deploy'),_0x2507ca=document['getElementById']('secret-expose-file')['checked'],_0x2aeb85=document['getElementById']('secret-target'),_0x2733c2=_0x2306c9['value']['trim'](),_0x38b4d3=_0x508f55['value']['trim'](),_0x1f2e5f=_0x3199a0?'file':'value',_0xda68cd=_0x9d6daa['value']['trim'](),_0x25bc6f=secretValueStore,_0x39cb98=_0x2507ca?'file':'env_var',_0x1c2e08=_0x2aeb85['value']['trim'](),_0xce4b95=getGitRemoteValue(),_0x42ce4b=document['getElementById']('secret-git-pat-checkbox')['checked'],_0x102dd9=[];if(_0xef0987['checked'])_0x102dd9['push']('build');if(_0xfec385['checked'])_0x102dd9['push']('tasks');if(_0x341e50['checked'])_0x102dd9['push']('deploy');const _0x1dc033=_0xfec385['checked']||_0x341e50['checked'];_0xc661e2['hidden']=!![];if(!_0x2733c2){_0xc661e2['textContent']='Secret\x20name\x20is\x20required',_0xc661e2['hidden']=![],_0x2306c9['focus']();return;}if(!/^[A-Za-z_][A-Za-z0-9_]*$/['test'](_0x2733c2)){_0xc661e2['textContent']='Secret\x20name\x20must\x20start\x20with\x20a\x20letter\x20or\x20underscore,\x20and\x20contain\x20only\x20letters,\x20numbers,\x20and\x20underscores',_0xc661e2['hidden']=![],_0x2306c9['focus']();return;}if(_0x3199a0&&!_0xda68cd){_0xc661e2['textContent']='File\x20path\x20is\x20required\x20for\x20file-type\x20secrets',_0xc661e2['hidden']=![],_0x9d6daa['focus']();return;}if(!_0x3199a0&&!_0x25bc6f){_0xc661e2['textContent']='Value\x20is\x20required\x20for\x20value-type\x20secrets',_0xc661e2['hidden']=![],_0x3179e1['focus']();return;}if(_0x102dd9['length']===0x0){_0xc661e2['textContent']='At\x20least\x20one\x20availability\x20option\x20must\x20be\x20selected\x20(Build,\x20Tasks,\x20or\x20Deploy)',_0xc661e2['hidden']=![];return;}if(_0x1dc033&&!_0x42ce4b){if(!_0x1c2e08){_0xc661e2['textContent']=_0x39cb98==='env_var'?'Variable\x20name\x20is\x20required\x20when\x20available\x20for\x20Tasks\x20or\x20Deploy':'Container\x20path\x20is\x20required\x20when\x20available\x20for\x20Tasks\x20or\x20Deploy',_0xc661e2['hidden']=![],_0x2aeb85['focus']();return;}if(_0x39cb98==='env_var'&&!/^[A-Za-z_][A-Za-z0-9_]*$/['test'](_0x1c2e08)){_0xc661e2['textContent']='Variable\x20name\x20must\x20start\x20with\x20a\x20letter\x20or\x20underscore,\x20and\x20contain\x20only\x20letters,\x20numbers,\x20and\x20underscores',_0xc661e2['hidden']=![],_0x2aeb85['focus']();return;}if(_0x39cb98==='file'&&!_0x1c2e08['startsWith']('/')){_0xc661e2['textContent']='Container\x20path\x20must\x20be\x20an\x20absolute\x20path\x20(start\x20with\x20/)',_0xc661e2['hidden']=![],_0x2aeb85['focus']();return;}if(_0x39cb98==='file'&&!_0x3199a0){_0xc661e2['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.',_0xc661e2['hidden']=![];return;}if(_0x39cb98==='env_var'&&_0x3199a0){_0xc661e2['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.',_0xc661e2['hidden']=![];return;}}if(_0x42ce4b){const _0x406505=document['getElementById']('secret-git-host'),_0x4dfbcb=document['getElementById']('secret-git-custom-host'),_0x169035=_0x406505['value'];if(!_0x169035){_0xc661e2['textContent']='Please\x20select\x20a\x20Git\x20host\x20for\x20the\x20PAT',_0xc661e2['hidden']=![],_0x406505['focus']();return;}if(_0x169035==='custom'){const _0x5f531d=_0x4dfbcb['value']['trim']();if(!_0x5f531d){_0xc661e2['textContent']='Please\x20enter\x20a\x20custom\x20Git\x20hostname',_0xc661e2['hidden']=![],_0x4dfbcb['focus']();return;}if(!/^[a-zA-Z0-9]([a-zA-Z0-9\-\.]*[a-zA-Z0-9])?$/['test'](_0x5f531d)){_0xc661e2['textContent']='Invalid\x20hostname\x20format.\x20Use\x20a\x20valid\x20hostname\x20like\x20\x22git.mycompany.com\x22',_0xc661e2['hidden']=![],_0x4dfbcb['focus']();return;}}}try{const _0x3f0bfa={'type':_0x1f2e5f,'description':_0x38b4d3,'available_for':_0x102dd9,..._0x1dc033&&!_0x42ce4b?{'expose_as':_0x39cb98,'target':_0x1c2e08}:{},..._0x3199a0?{'source':_0xda68cd}:{},...!_0x3199a0&&_0x25bc6f?{'value':_0x25bc6f}:{},'git_remote':_0xce4b95};state['editingSecret']?(await API['put']('/environments/'+state['selectedEnv']+'/secrets/'+_0x2733c2,_0x3f0bfa),Utils['showSuccess']('Secret\x20\x22'+_0x2733c2+'\x22\x20updated')):(_0x3f0bfa['secretName']=_0x2733c2,await API['post']('/environments/'+state['selectedEnv']+'/secrets',_0x3f0bfa),Utils['showSuccess']('Secret\x20\x22'+_0x2733c2+'\x22\x20created')),closeSecretModal(),await loadSecrets(),renderSecrets();}catch(_0x47bf25){_0xc661e2['textContent']=_0x47bf25['message']||'Failed\x20to\x20save\x20secret',_0xc661e2['hidden']=![];}}window['openDeleteSecretModal']=function(_0x27233e){document['getElementById']('delete-secret-name')['textContent']=_0x27233e,document['getElementById']('delete-secret-modal')['hidden']=![],document['getElementById']('delete-secret-modal')['dataset']['secretName']=_0x27233e;};function closeDeleteSecretModal(){document['getElementById']('delete-secret-modal')['hidden']=!![];}async function confirmDeleteSecret(){const _0x28cd60=document['getElementById']('delete-secret-modal')['dataset']['secretName'];try{await API['delete']('/environments/'+state['selectedEnv']+'/secrets/'+_0x28cd60),Utils['showSuccess']('Secret\x20\x22'+_0x28cd60+'\x22\x20deleted'),closeDeleteSecretModal(),await loadSecrets(),renderSecrets();}catch(_0x5d6a1b){Utils['showError'](_0x5d6a1b['message']||'Failed\x20to\x20delete\x20secret'),closeDeleteSecretModal();}}function loadConnections(){if(!state['selectedEnvData'])return;!state['selectedEnvData']['external_connections']&&(state['selectedEnvData']['external_connections']=[]);}function renderConnections(){const _0x71cdc0=document['getElementById']('connections-list'),_0xf93fad=document['getElementById']('connections-empty');if(!_0x71cdc0||!_0xf93fad)return;const _0x7d971f=state['selectedEnvData']?.['external_connections']||[];if(_0x7d971f['length']===0x0){_0x71cdc0['innerHTML']='',_0x71cdc0['hidden']=!![],_0xf93fad['hidden']=![];return;}_0x71cdc0['hidden']=![],_0xf93fad['hidden']=!![],_0x71cdc0['innerHTML']=_0x7d971f['map'](_0x432f62=>{const _0xb9cbcb={'sqlserver':'SQL\x20Server','ibmi':'IBM\x20i','ssh':'SSH'},_0x539f75=_0xb9cbcb[_0x432f62['type']]||_0x432f62['type'],_0x484e58=_0x432f62['type']==='ibmi'?_0x432f62['config']?.['features']||[]:[],_0xbdea8=_0x484e58['map'](_0x23a186=>'<span\x20class=\x22connection-feature-tag\x22>'+Utils['escapeHtml'](_0x23a186)+'</span>')['join'](''),_0x10479b=_0x432f62['available_for']||[],_0x5a8be5='\x0a\x20\x20\x20\x20\x20\x20<span\x20class=\x22secret-availability-badges\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20'+(_0x10479b['includes']('tasks')?'<span\x20class=\x22availability-badge\x20tasks\x22>Tasks</span>':'')+'\x0a\x20\x20\x20\x20\x20\x20\x20\x20'+(_0x10479b['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'](_0x432f62['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'](_0x432f62['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'+_0x5a8be5+'\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22connection-type-badge\x20'+_0x432f62['type']+'\x22>'+_0x539f75+'</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20'+_0xbdea8+'\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20'+(_0x432f62['description']?'<span\x20class=\x22connection-description\x22>'+Utils['escapeHtml'](_0x432f62['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'](_0x432f62['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'](_0x432f62['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'](_0x432f62['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'](_0x518275=>_0x518275['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 _0x51b8a4=document['getElementById']('connection-modal-error');_0x51b8a4['hidden']=!![],_0x51b8a4['textContent']='',clearConnectionTestResult(),updateConnectionFormVisibility(),document['getElementById']('connection-modal')['hidden']=![];}window['openEditConnectionModal']=function(_0x142745){const _0x2ffc52=state['selectedEnvData']?.['external_connections']||[],_0x30f0a4=_0x2ffc52['find'](_0x4026d1=>_0x4026d1['id']===_0x142745);if(!_0x30f0a4)return;state['editingConnection']=_0x142745,document['getElementById']('connection-modal-title')['textContent']='Edit\x20Connection',document['getElementById']('connection-name')['value']=_0x30f0a4['name']||'',document['getElementById']('connection-description')['value']=_0x30f0a4['description']||'',document['getElementById']('connection-host')['value']=_0x30f0a4['config']?.['host']||'';const _0x1a9b37=_0x30f0a4['config']?.['verify_db_server_certificate']!==![];document['getElementById']('connection-verify-cert')['checked']=_0x1a9b37,document['getElementById']('connection-verify-cert-warning')['hidden']=_0x1a9b37,document['getElementById']('connection-database')['value']=_0x30f0a4['config']?.['database']||'',document['getElementById']('connection-user')['value']=_0x30f0a4['config']?.['user']||'',document['getElementById']('connection-password')['value']=_0x30f0a4['password']||'',document['getElementById']('connection-password')['type']='password',resetPasswordToggleIcon(),resetSshKeyVisibility(_0x30f0a4['ssh_private_key']||''),document['getElementById']('connection-ssh-public-key')['value']=_0x30f0a4['ssh_public_key']||'',document['getElementById']('connection-pui-base-url')['value']=_0x30f0a4['config']?.['pui_base_url']||'',document['getElementById']('connection-pui-render-path')['value']=_0x30f0a4['config']?.['pui_render_path']||'',document['getElementById']('connection-pui-launch-path')['value']=_0x30f0a4['config']?.['pui_launch_path']||'',document['getElementById']('connection-build-library-prefix')['value']=_0x30f0a4['config']?.['build_library_prefix']||'AITSK',populateBuildRepoSelect(_0x30f0a4['config']?.['build_repo']||''),document['getElementById']('connection-build-path')['value']=_0x30f0a4['config']?.['build_path']||'',document['querySelectorAll']('input[name=\x22connection-type\x22]')['forEach'](_0x1133a8=>{_0x1133a8['disabled']=!![],_0x1133a8['checked']=_0x1133a8['value']===_0x30f0a4['type'];});if(_0x30f0a4['type']==='ibmi'){const _0x2e6afd=_0x30f0a4['config']?.['features']||[];document['getElementById']('feature-sql')['checked']=_0x2e6afd['includes']('sql'),document['getElementById']('feature-build')['checked']=_0x2e6afd['includes']('build'),document['getElementById']('feature-interactive')['checked']=_0x2e6afd['includes']('interactive'),document['getElementById']('feature-ssh')['checked']=_0x2e6afd['includes']('ssh'),document['getElementById']('feature-sync')['checked']=_0x2e6afd['includes']('sync'),_0x2e6afd['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 _0x5dbcb3=_0x30f0a4['available_for']||[];document['getElementById']('connection-available-tasks')['checked']=_0x5dbcb3['includes']('tasks'),document['getElementById']('connection-available-deploy')['checked']=_0x5dbcb3['includes']('deploy');const _0x59414b=document['getElementById']('connection-modal-error');_0x59414b['hidden']=!![],_0x59414b['textContent']='',clearConnectionTestResult(),updateConnectionFormVisibility(),document['getElementById']('connection-modal')['hidden']=![];};function isFullyQualifiedHostname(_0x564196){if(!_0x564196||typeof _0x564196!=='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'](_0x564196);}function syncHostToPuiBaseUrl(){const _0x51630b=document['querySelector']('input[name=\x22connection-type\x22]:checked')?.['value'];if(_0x51630b!=='ibmi')return;if(!document['getElementById']('feature-interactive')['checked'])return;const _0x3c1b33=document['getElementById']('connection-host')['value']['trim'](),_0x402383=document['getElementById']('connection-pui-base-url'),_0x213118=_0x402383['value']['trim']();if(!_0x3c1b33)return;if(!_0x213118)_0x402383['value']='https://'+_0x3c1b33;else try{const _0x96f047=new URL(_0x213118);_0x96f047['hostname']=_0x3c1b33,_0x402383['value']=_0x96f047['origin'];}catch{}}function syncPuiBaseUrlToHost(){const _0x5212d9=document['querySelector']('input[name=\x22connection-type\x22]:checked')?.['value'];if(_0x5212d9!=='ibmi')return;const _0x51426a=document['getElementById']('connection-pui-base-url')['value']['trim']();if(!_0x51426a)return;try{const _0x4af616=new URL(_0x51426a),_0x69c86=_0x4af616['hostname'];_0x69c86&&(document['getElementById']('connection-host')['value']=_0x69c86);}catch{}}function populateBuildRepoSelect(_0x1697a1){const _0x44ded8=document['getElementById']('connection-build-repo'),_0x214f34=state['selectedEnvData']?.['repos']||[];_0x44ded8['innerHTML']='<option\x20value=\x22\x22>—\x20Select\x20a\x20repo\x20—</option>'+_0x214f34['map'](_0x372bc9=>'<option\x20value=\x22'+Utils['escapeHtml'](_0x372bc9['name'])+'\x22'+(_0x372bc9['name']===_0x1697a1?'\x20selected':'')+'>'+Utils['escapeHtml'](_0x372bc9['name'])+'</option>')['join']('');}function updateConnectionFormVisibility(){const _0x4583a4=document['querySelector']('input[name=\x22connection-type\x22]:checked')?.['value']||'sqlserver',_0x2c4956=_0x4583a4==='ibmi',_0x529e6f=_0x4583a4==='ssh',_0x19e351=_0x4583a4==='sqlserver',_0x2e0687=document['getElementById']('feature-sql')['checked'],_0x4dc85e=document['getElementById']('feature-build')['checked'],_0x3392a8=document['getElementById']('feature-interactive')['checked'],_0x33dec0=document['getElementById']('feature-ssh')['checked'],_0x44403c=document['getElementById']('feature-sync')['checked'],_0x583e27=document['getElementById']('connection-available-tasks')['checked'];document['getElementById']('connection-database-row')['hidden']=!_0x19e351;const _0x3e3be4=_0x19e351||_0x2c4956&&_0x2e0687;document['getElementById']('connection-verify-cert-row')['hidden']=!_0x3e3be4,document['getElementById']('connection-features-row')['hidden']=!_0x2c4956,document['getElementById']('connection-pui-settings')['hidden']=!(_0x2c4956&&_0x3392a8),document['getElementById']('connection-ssh-settings')['hidden']=!(_0x529e6f||_0x2c4956&&(_0x33dec0||_0x4dc85e)),document['getElementById']('connection-password-row')['hidden']=!(_0x19e351||_0x2c4956&&(_0x2e0687||_0x3392a8));const _0x86d830=document['getElementById']('connection-build-repo-row'),_0x38f7df=document['getElementById']('connection-build-path-row'),_0x3f6764=_0x2c4956&&_0x4dc85e;_0x86d830['hidden']=!_0x3f6764,_0x38f7df['hidden']=!_0x3f6764;_0x3f6764&&populateBuildRepoSelect(document['getElementById']('connection-build-repo')['value']);const _0x67efcc=document['getElementById']('connection-build-library-prefix-row'),_0x1a3598=_0x2c4956&&_0x4dc85e&&_0x583e27;_0x67efcc['hidden']=!_0x1a3598;!_0x1a3598&&(document['getElementById']('connection-build-library-prefix')['value']=document['getElementById']('connection-build-library-prefix')['value']||'AITSK');document['getElementById']('connection-ibmi-helper-row')['hidden']=!_0x2c4956;const _0x433252=_0x19e351||_0x2c4956&&_0x2e0687,_0x78f78c=_0x2c4956&&(_0x33dec0||_0x4dc85e||_0x44403c)||_0x529e6f;document['getElementById']('connection-test-row')['hidden']=!(_0x433252||_0x78f78c),document['getElementById']('connection-test-sql-btn')['hidden']=!_0x433252,document['getElementById']('connection-test-ssh-btn')['hidden']=!_0x78f78c;const _0x3a1d49=document['getElementById']('connection-ssh-public-key')['value'];document['getElementById']('connection-install-key-row')['hidden']=!(_0x3a1d49&&_0x3a1d49!=='***');}function closeConnectionModal(){document['getElementById']('connection-modal')['hidden']=!![],state['editingConnection']=null;}function validateConnectionFrontend(_0x1014a2,_0x333262=[],_0x1e00dc=null){const _0x58b8fc=[],_0x2fa5fd=['sqlserver','ibmi','ssh'],_0x292c8a=['tasks','deploy'],_0x442748=['sql','build','interactive','ssh','sync'],_0x46dd1e=['build','interactive'],_0x25d434={'sync':['ssh']},_0x6e263e=['sql','interactive'],_0x3f4ce1=['build','ssh','sync'],_0x3ec68e=/^[A-Z@#$][A-Z@#$0-9_.]{0,4}$/;if(!_0x1014a2['name']||typeof _0x1014a2['name']!=='string')_0x58b8fc['push']('Connection\x20name\x20is\x20required');else{if(!/^[a-zA-Z0-9_-]+$/['test'](_0x1014a2['name']))_0x58b8fc['push']('Connection\x20name\x20must\x20contain\x20only\x20letters,\x20numbers,\x20hyphens,\x20and\x20underscores');else{const _0x3727b4=_0x1014a2['name']['toLowerCase'](),_0x57bef2=_0x333262['find'](_0x723bcd=>_0x723bcd['id']!==_0x1e00dc&&_0x723bcd['name']['toLowerCase']()===_0x3727b4);_0x57bef2&&_0x58b8fc['push']('Connection\x20name\x20\x22'+_0x1014a2['name']+'\x22\x20is\x20already\x20in\x20use');}}if(!Array['isArray'](_0x1014a2['available_for'])||_0x1014a2['available_for']['length']===0x0)_0x58b8fc['push']('At\x20least\x20one\x20availability\x20scope\x20is\x20required\x20(tasks,\x20deploy)');else _0x1014a2['available_for']['some'](_0xaedbd1=>!_0x292c8a['includes'](_0xaedbd1))&&_0x58b8fc['push']('Available\x20scopes\x20must\x20be:\x20'+_0x292c8a['join'](',\x20'));(!_0x1014a2['type']||!_0x2fa5fd['includes'](_0x1014a2['type']))&&_0x58b8fc['push']('Connection\x20type\x20must\x20be\x20one\x20of:\x20'+_0x2fa5fd['join'](',\x20'));if(_0x1014a2['type']==='sqlserver'){if(!_0x1014a2['config']?.['host'])_0x58b8fc['push']('Host\x20is\x20required\x20for\x20SQL\x20Server');else!isFullyQualifiedHostname(_0x1014a2['config']['host'])&&_0x58b8fc['push']('Host\x20must\x20be\x20a\x20fully\x20qualified\x20hostname\x20(e.g.\x20myserver.mycompany.com)');if(!_0x1014a2['config']?.['database'])_0x58b8fc['push']('Database\x20is\x20required\x20for\x20SQL\x20Server');if(!_0x1014a2['config']?.['user'])_0x58b8fc['push']('User\x20is\x20required\x20for\x20SQL\x20Server');if(!_0x1014a2['password'])_0x58b8fc['push']('Password\x20is\x20required\x20for\x20SQL\x20Server');}else{if(_0x1014a2['type']==='ibmi'){if(!_0x1014a2['config']?.['host'])_0x58b8fc['push']('Host\x20is\x20required\x20for\x20IBM\x20i');else!isFullyQualifiedHostname(_0x1014a2['config']['host'])&&_0x58b8fc['push']('Host\x20must\x20be\x20a\x20fully\x20qualified\x20hostname\x20(e.g.\x20myserver.mycompany.com)');if(!_0x1014a2['config']?.['user'])_0x58b8fc['push']('User\x20is\x20required\x20for\x20IBM\x20i');const _0x36dfc2=_0x1014a2['config']?.['features']||[];_0x36dfc2['some'](_0x4bd14e=>_0x6e263e['includes'](_0x4bd14e))&&!_0x1014a2['password']&&_0x58b8fc['push']('Password\x20is\x20required\x20for\x20IBM\x20i\x20SQL\x20and\x20Interactive\x20features');if(!Array['isArray'](_0x36dfc2)||_0x36dfc2['length']===0x0)_0x58b8fc['push']('At\x20least\x20one\x20IBM\x20i\x20feature\x20is\x20required');else{const _0x4e4d1e=_0x36dfc2['filter'](_0x5ea753=>!_0x442748['includes'](_0x5ea753));_0x4e4d1e['length']>0x0&&_0x58b8fc['push']('Invalid\x20IBM\x20i\x20features:\x20'+_0x4e4d1e['join'](',\x20'));for(const [_0x1030d5,_0x9c3b37]of Object['entries'](_0x25d434)){if(_0x36dfc2['includes'](_0x1030d5))for(const _0x4e90c6 of _0x9c3b37){!_0x36dfc2['includes'](_0x4e90c6)&&_0x58b8fc['push']('IBM\x20i\x20feature\x20\x22'+_0x1030d5+'\x22\x20requires\x20\x22'+_0x4e90c6+'\x22');}}if(_0x36dfc2['includes']('build')){!_0x1014a2['config']?.['build_repo']&&_0x58b8fc['push']('Build\x20repo\x20is\x20required\x20when\x20Build\x20feature\x20is\x20selected');const _0x1950e7=_0x1014a2['config']?.['build_path'];if(_0x1950e7){const _0x3b6a2d=_0x1950e7['split']('/');_0x3b6a2d['some'](_0x1e3d98=>_0x1e3d98==='.'||_0x1e3d98==='..')&&_0x58b8fc['push']('Build\x20directory\x20must\x20not\x20contain\x20\x22.\x22\x20or\x20\x22..\x22\x20segments');}}if(_0x36dfc2['includes']('build')&&_0x1014a2['available_for']?.['includes']('tasks')){const _0x2da089=_0x1014a2['config']?.['build_library_prefix'];if(!_0x2da089)_0x58b8fc['push']('Build\x20library\x20prefix\x20is\x20required\x20when\x20Build\x20feature\x20is\x20used\x20with\x20Tasks\x20scope');else!_0x3ec68e['test'](_0x2da089)&&_0x58b8fc['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.');}_0x36dfc2['some'](_0x2883f5=>_0x3f4ce1['includes'](_0x2883f5))&&!_0x1014a2['ssh_private_key']&&_0x58b8fc['push']('SSH\x20private\x20key\x20is\x20required\x20for\x20this\x20connection\x20type');_0x36dfc2['includes']('interactive')&&!(_0x1014a2['available_for']||[])['includes']('tasks')&&_0x58b8fc['push']('Interactive\x20feature\x20requires\x20Tasks\x20availability\x20scope');if(_0x36dfc2['includes']('interactive')){if(!_0x1014a2['config']?.['pui_base_url'])_0x58b8fc['push']('PUI\x20Base\x20URL\x20is\x20required\x20when\x20Interactive\x20feature\x20is\x20selected');else{if(_0x1014a2['config']?.['host'])try{const _0x347caa=new URL(_0x1014a2['config']['pui_base_url'])['hostname'];_0x347caa&&_0x347caa!==_0x1014a2['config']['host']&&_0x58b8fc['push']('PUI\x20Base\x20URL\x20hostname\x20\x22'+_0x347caa+'\x22\x20must\x20match\x20the\x20connection\x20host\x20\x22'+_0x1014a2['config']['host']+'\x22');}catch{_0x58b8fc['push']('PUI\x20Base\x20URL\x20must\x20be\x20a\x20valid\x20URL\x20(e.g.\x20https://myibmi.mycompany.com:8080)');}}}const _0x281c97=_0x36dfc2['some'](_0x16ed77=>_0x46dd1e['includes'](_0x16ed77));if(_0x281c97&&Array['isArray'](_0x1014a2['available_for'])){const _0x3e42d2=_0x333262['filter'](_0x24a46e=>_0x24a46e['id']!==_0x1e00dc&&_0x24a46e['type']==='ibmi'&&(_0x24a46e['config']?.['features']||[])['some'](_0x3ee253=>_0x46dd1e['includes'](_0x3ee253)));for(const _0x1067ba of _0x3e42d2){const _0x551ede=_0x1014a2['available_for']['filter'](_0x1d191b=>(_0x1067ba['available_for']||[])['includes'](_0x1d191b));if(_0x551ede['length']>0x0){_0x58b8fc['push']('Only\x20one\x20IBM\x20i\x20connection\x20with\x20build/interactive\x20features\x20is\x20allowed\x20per\x20scope.\x20'+('Connection\x20\x22'+_0x1067ba['name']+'\x22\x20already\x20has\x20build/interactive\x20in\x20scope:\x20'+_0x551ede['join'](',\x20')));break;}}}}}else{if(_0x1014a2['type']==='ssh'){if(!_0x1014a2['config']?.['host'])_0x58b8fc['push']('Host\x20is\x20required\x20for\x20SSH');else!isFullyQualifiedHostname(_0x1014a2['config']['host'])&&_0x58b8fc['push']('Host\x20must\x20be\x20a\x20fully\x20qualified\x20hostname\x20(e.g.\x20myserver.mycompany.com)');if(!_0x1014a2['config']?.['user'])_0x58b8fc['push']('User\x20is\x20required\x20for\x20SSH');!_0x1014a2['ssh_private_key']&&_0x58b8fc['push']('SSH\x20private\x20key\x20is\x20required\x20for\x20SSH\x20connections');}}}return{'valid':_0x58b8fc['length']===0x0,'errors':_0x58b8fc};}async function saveConnection(){const _0x231def=document['getElementById']('connection-modal-error');_0x231def['hidden']=!![];const _0x4bf5f9=document['querySelector']('input[name=\x22connection-type\x22]:checked')?.['value'],_0xd867c7=document['getElementById']('connection-name')['value']['trim'](),_0x5bb397=document['getElementById']('connection-description')['value']['trim'](),_0x1c01d3=document['getElementById']('connection-host')['value']['trim'](),_0x369f29=document['getElementById']('connection-user')['value']['trim'](),_0x5ac8e7=[];if(document['getElementById']('connection-available-tasks')['checked'])_0x5ac8e7['push']('tasks');if(document['getElementById']('connection-available-deploy')['checked'])_0x5ac8e7['push']('deploy');const _0x527688={'host':_0x1c01d3,'user':_0x369f29};if(_0x4bf5f9==='sqlserver')_0x527688['database']=document['getElementById']('connection-database')['value']['trim'](),!document['getElementById']('connection-verify-cert')['checked']&&(_0x527688['verify_db_server_certificate']=![]);else{if(_0x4bf5f9==='ibmi'){const _0x26b4d5=[];if(document['getElementById']('feature-sql')['checked'])_0x26b4d5['push']('sql');if(document['getElementById']('feature-build')['checked'])_0x26b4d5['push']('build');if(document['getElementById']('feature-interactive')['checked'])_0x26b4d5['push']('interactive');if(document['getElementById']('feature-ssh')['checked']||document['getElementById']('feature-ssh')['disabled'])_0x26b4d5['push']('ssh');if(document['getElementById']('feature-sync')['checked'])_0x26b4d5['push']('sync');_0x527688['features']=_0x26b4d5;_0x26b4d5['includes']('sql')&&!document['getElementById']('connection-verify-cert')['checked']&&(_0x527688['verify_db_server_certificate']=![]);if(_0x26b4d5['includes']('interactive')){_0x527688['pui_base_url']=document['getElementById']('connection-pui-base-url')['value']['trim']();const _0xa3322d=document['getElementById']('connection-pui-render-path')['value']['trim'](),_0x5968d2=document['getElementById']('connection-pui-launch-path')['value']['trim']();if(_0xa3322d)_0x527688['pui_render_path']=_0xa3322d;if(_0x5968d2)_0x527688['pui_launch_path']=_0x5968d2;}if(_0x26b4d5['includes']('build')){const _0x4c6e1d=document['getElementById']('connection-build-repo')['value'];if(!_0x4c6e1d){_0x231def['textContent']='Build\x20repo\x20is\x20required\x20when\x20Build\x20feature\x20is\x20selected',_0x231def['hidden']=![];return;}_0x527688['build_repo']=_0x4c6e1d;let _0x218cb4=document['getElementById']('connection-build-path')['value']['trim']();_0x218cb4=_0x218cb4['replace'](/^\/+/,'');if(_0x218cb4){const _0x1c3ed7=_0x218cb4['split']('/');if(_0x1c3ed7['some'](_0x423829=>_0x423829==='.'||_0x423829==='..')){_0x231def['textContent']='Build\x20directory\x20must\x20not\x20contain\x20\x22.\x22\x20or\x20\x22..\x22\x20segments',_0x231def['hidden']=![];return;}_0x527688['build_path']=_0x218cb4;}}if(_0x26b4d5['includes']('build')&&_0x5ac8e7['includes']('tasks')){let _0x40e850=document['getElementById']('connection-build-library-prefix')['value']['trim']()['toUpperCase']();document['getElementById']('connection-build-library-prefix')['value']=_0x40e850;if(!_0x40e850){_0x231def['textContent']='Build\x20library\x20prefix\x20is\x20required',_0x231def['hidden']=![];return;}if(!/^[A-Z@#$][A-Z@#$0-9_.]{0,4}$/['test'](_0x40e850)){_0x231def['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.',_0x231def['hidden']=![];return;}_0x527688['build_library_prefix']=_0x40e850;}}}const _0x234669={'name':_0xd867c7,'type':_0x4bf5f9,'description':_0x5bb397,'available_for':_0x5ac8e7,'config':_0x527688};state['editingConnection']?_0x234669['id']=state['editingConnection']:_0x234669['id']=crypto['randomUUID']();const _0x663d2e=document['getElementById']('connection-password')['value'];if(_0x663d2e)_0x234669['password']=_0x663d2e;if(sshKeyValueStore)_0x234669['ssh_private_key']=sshKeyValueStore;const _0x5557f1=document['getElementById']('connection-ssh-public-key')['value'];if(_0x5557f1)_0x234669['ssh_public_key']=_0x5557f1;const _0x285bdc=state['selectedEnvData']?.['external_connections']||[],_0x3f6717=validateConnectionFrontend(_0x234669,_0x285bdc,state['editingConnection']);if(!_0x3f6717['valid']){_0x231def['textContent']=_0x3f6717['errors'][0x0],_0x231def['hidden']=![];return;}if(state['editingConnection']){const _0x25ccf3=_0x285bdc['findIndex'](_0x345b3a=>_0x345b3a['id']===state['editingConnection']);_0x25ccf3>=0x0&&(_0x285bdc[_0x25ccf3]=_0x234669);}else _0x285bdc['push'](_0x234669);state['selectedEnvData']['external_connections']=_0x285bdc,Utils['showSuccess']('Connection\x20\x22'+_0xd867c7+'\x22\x20'+(state['editingConnection']?'updated':'added')+'\x20(click\x20Save\x20to\x20persist\x20changes)'),closeConnectionModal(),renderConnections(),markAsModified();const _0x495fa7=getRequiredSkillsForConnection(_0x234669);_0x495fa7['length']>0x0&&await autoImportConnectionSkills(_0x495fa7);}window['openDeleteConnectionModal']=function(_0x5a07d4){const _0x556213=state['selectedEnvData']?.['external_connections']||[],_0x13c8be=_0x556213['find'](_0x5e7ac0=>_0x5e7ac0['id']===_0x5a07d4);if(!_0x13c8be)return;document['getElementById']('delete-connection-name')['textContent']=_0x13c8be['name']+'\x20('+_0x13c8be['type']+')',document['getElementById']('delete-connection-modal')['dataset']['connectionId']=_0x5a07d4,document['getElementById']('delete-connection-modal')['hidden']=![];};function closeDeleteConnectionModal(){document['getElementById']('delete-connection-modal')['hidden']=!![];}function confirmDeleteConnection(){const _0x301614=document['getElementById']('delete-connection-modal')['dataset']['connectionId'],_0x27028a=state['selectedEnvData']?.['external_connections']||[];state['selectedEnvData']['external_connections']=_0x27028a['filter'](_0x32a97d=>_0x32a97d['id']!==_0x301614),Utils['showSuccess']('Connection\x20removed\x20(click\x20Save\x20to\x20persist\x20changes)'),closeDeleteConnectionModal(),renderConnections(),markAsModified();}function openIbmiHelperDialog(){const _0x20b297=document['getElementById']('connection-user')['value']['trim']()||'{USER}',_0x43370f=_0x20b297['toUpperCase'](),_0x176a9e=_0x20b297['toLowerCase'](),_0x42d8de=document['getElementById']('connection-password')['value'],_0x5252cd=_0x42d8de&&_0x42d8de!=='***'?_0x42d8de:'',_0x1f3d22=['CRTUSRPRF\x20USRPRF('+_0x43370f+')\x20PASSWORD('+_0x5252cd+')\x20USRCLS(*USER)\x20INLMNU(*SIGNOFF)\x20LMTCPB(*YES)\x20TEXT(\x27CoderFlow\x20service\x20account\x27)\x20SPCAUT(*NONE)\x20JOBD(JOB_DESCRIPTION)','CRTDIR\x20DIR(\x27/home/'+_0x176a9e+'\x27)','CHGOWN\x20OBJ(\x27/home/'+_0x176a9e+'\x27)\x20NEWOWN('+_0x43370f+')','QSH\x20CMD(\x27chmod\x20755\x20/home/'+_0x176a9e+'\x27)'],_0x1d9abe=document['getElementById']('ibmi-helper-commands');_0x1d9abe['innerHTML']='',_0x1f3d22['forEach'](_0x4b347a=>{const _0x39e622=document['createElement']('div');_0x39e622['className']='command-line';const _0x395401=document['createElement']('code');_0x395401['textContent']=_0x4b347a;const _0x43d08c=document['createElement']('button');_0x43d08c['type']='button',_0x43d08c['className']='btn-icon\x20copy-btn',_0x43d08c['title']='Copy',_0x43d08c['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>',_0x43d08c['addEventListener']('click',()=>{navigator['clipboard']['writeText'](_0x4b347a)['then'](()=>{_0x43d08c['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(()=>{_0x43d08c['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);});}),_0x39e622['appendChild'](_0x395401),_0x39e622['appendChild'](_0x43d08c),_0x1d9abe['appendChild'](_0x39e622);}),document['getElementById']('ibmi-helper-modal')['hidden']=![];}function resetPasswordToggleIcon(){const _0xb813cb=document['getElementById']('connection-password-toggle');_0xb813cb['querySelector']('.eye-open')['style']['display']='',_0xb813cb['querySelector']('.eye-closed')['style']['display']='none';}function toggleConnectionPasswordVisibility(){const _0x16b95e=document['getElementById']('connection-password'),_0x547a10=document['getElementById']('connection-password-toggle'),_0x3010cc=_0x16b95e['type']==='password';_0x16b95e['type']=_0x3010cc?'text':'password',_0x547a10['querySelector']('.eye-open')['style']['display']=_0x3010cc?'none':'',_0x547a10['querySelector']('.eye-closed')['style']['display']=_0x3010cc?'':'none';}function resetSshKeyVisibility(_0x5e7677){sshKeyValueStore=_0x5e7677,sshKeyValueVisible=![],sshKeyLastCursorPosition=0x0;const _0x1ae342=document['getElementById']('connection-ssh-private-key'),_0x3b1cc9=document['querySelector']('.connection-ssh-key-toggle');_0x1ae342&&(_0x1ae342['value']=_0x5e7677?'•'['repeat'](_0x5e7677['length']):''),_0x3b1cc9&&(_0x3b1cc9['hidden']=![],_0x3b1cc9['querySelector']('.eye-open')['style']['display']='block',_0x3b1cc9['querySelector']('.eye-closed')['style']['display']='none');}function toggleSshKeyVisibility(){const _0x1e4f64=document['getElementById']('connection-ssh-private-key'),_0x4eff48=document['querySelector']('.connection-ssh-key-toggle');sshKeyValueVisible=!sshKeyValueVisible,sshKeyValueVisible?(_0x1e4f64['value']=sshKeyValueStore,_0x4eff48['querySelector']('.eye-open')['style']['display']='none',_0x4eff48['querySelector']('.eye-closed')['style']['display']='block'):(_0x1e4f64['value']=sshKeyValueStore?'•'['repeat'](sshKeyValueStore['length']):'',_0x4eff48['querySelector']('.eye-open')['style']['display']='block',_0x4eff48['querySelector']('.eye-closed')['style']['display']='none');}function handleSshKeyBeforeInput(_0x8833ae){if(!sshKeyValueVisible){const _0x2ea1b0=_0x8833ae['target'];sshKeyLastCursorPosition=_0x2ea1b0['selectionStart'],_0x2ea1b0['dataset']['selectionEnd']=_0x2ea1b0['selectionEnd'];}}function handleSshKeyInput(_0x57033c){const _0x5bb098=_0x57033c['target'];if(sshKeyValueVisible)sshKeyValueStore=_0x5bb098['value'];else{const _0x1bf8df=_0x57033c['inputType'],_0x39ba94=_0x5bb098['value'],_0x5eb846='•',_0x541866=_0x5bb098['selectionStart'],_0x293269=_0x39ba94['replace'](new RegExp(_0x5eb846,'g'),''),_0x28db12=sshKeyValueStore['length'],_0x610a37=sshKeyLastCursorPosition,_0x502c92=parseInt(_0x5bb098['dataset']['selectionEnd']||_0x610a37),_0x2d02b7=_0x502c92>_0x610a37;if(_0x39ba94==='')sshKeyValueStore='',sshKeyLastCursorPosition=0x0;else{if(_0x1bf8df&&_0x1bf8df['startsWith']('delete')){if(_0x2d02b7)sshKeyValueStore=sshKeyValueStore['slice'](0x0,_0x610a37)+sshKeyValueStore['slice'](_0x502c92),sshKeyLastCursorPosition=_0x610a37;else{const _0x2817a7=_0x28db12-_0x39ba94['length'];_0x1bf8df==='deleteContentBackward'?sshKeyValueStore=sshKeyValueStore['slice'](0x0,_0x541866)+sshKeyValueStore['slice'](_0x541866+_0x2817a7):sshKeyValueStore=sshKeyValueStore['slice'](0x0,_0x541866)+sshKeyValueStore['slice'](_0x541866+_0x2817a7),sshKeyLastCursorPosition=_0x541866;}}else{if(_0x293269['length']>0x0){const _0x4d3d8e=_0x39ba94['length']-_0x293269['length'];if(_0x4d3d8e===0x0)sshKeyValueStore=_0x293269,sshKeyLastCursorPosition=_0x293269['length'];else _0x2d02b7?(sshKeyValueStore=sshKeyValueStore['slice'](0x0,_0x610a37)+_0x293269+sshKeyValueStore['slice'](_0x502c92),sshKeyLastCursorPosition=_0x610a37+_0x293269['length']):(sshKeyValueStore=sshKeyValueStore['slice'](0x0,_0x610a37)+_0x293269+sshKeyValueStore['slice'](_0x610a37),sshKeyLastCursorPosition=_0x610a37+_0x293269['length']);}else _0x39ba94['length']<_0x28db12?(sshKeyValueStore=sshKeyValueStore['slice'](0x0,_0x39ba94['length']),sshKeyLastCursorPosition=_0x541866):sshKeyLastCursorPosition=_0x541866;}}const _0x27265c=_0x5eb846['repeat'](sshKeyValueStore['length']);_0x5bb098['value']=_0x27265c,_0x5bb098['setSelectionRange'](sshKeyLastCursorPosition,sshKeyLastCursorPosition),delete _0x5bb098['dataset']['selectionEnd'];}}function handleSshKeyFileImport(_0x12f80f){const _0x1baf47=_0x12f80f['target']['files'][0x0];if(!_0x1baf47)return;const _0x2c2dc5=new FileReader();_0x2c2dc5['onload']=function(_0x5086d0){const _0x46e210=_0x5086d0['target']['result'];sshKeyValueStore=_0x46e210,sshKeyValueVisible=!![],document['getElementById']('connection-ssh-private-key')['value']=_0x46e210;const _0x5d710e=document['querySelector']('.connection-ssh-key-toggle');_0x5d710e&&(_0x5d710e['querySelector']('.eye-open')['style']['display']='none',_0x5d710e['querySelector']('.eye-closed')['style']['display']='block');},_0x2c2dc5['onerror']=function(){Utils['showError']('Failed\x20to\x20read\x20file');},_0x2c2dc5['readAsText'](_0x1baf47),_0x12f80f['target']['value']='';}function handleSshPubKeyFileImport(_0x42018a){const _0x43acdb=_0x42018a['target']['files'][0x0];if(!_0x43acdb)return;const _0x415c0a=new FileReader();_0x415c0a['onload']=function(_0x315280){document['getElementById']('connection-ssh-public-key')['value']=_0x315280['target']['result'],updateConnectionFormVisibility();},_0x415c0a['onerror']=function(){Utils['showError']('Failed\x20to\x20read\x20file');},_0x415c0a['readAsText'](_0x43acdb),_0x42018a['target']['value']='';}async function generateKeypair(){try{const _0x2d6d02=await API['post']('/environments/'+state['selectedEnv']+'/connections/generate-keypair');sshKeyValueStore=_0x2d6d02['privateKey'],sshKeyValueVisible=!![],document['getElementById']('connection-ssh-private-key')['value']=_0x2d6d02['privateKey'];const _0x4d309c=document['querySelector']('.connection-ssh-key-toggle');_0x4d309c&&(_0x4d309c['querySelector']('.eye-open')['style']['display']='none',_0x4d309c['querySelector']('.eye-closed')['style']['display']='block'),document['getElementById']('connection-ssh-public-key')['value']=_0x2d6d02['publicKey'],updateConnectionFormVisibility(),Utils['showSuccess']('SSH\x20keypair\x20generated');}catch(_0x5bb837){Utils['showError'](_0x5bb837['message']||'Failed\x20to\x20generate\x20keypair');}}function showConnectionTestResult(_0x52e503,_0x12efa2,_0x163a59){const _0x2c3863=document['getElementById']('connection-test-spinner'),_0x59ae82=document['getElementById']('connection-test-result');_0x2c3863['hidden']=!![];let _0x2243e1='<div\x20class=\x22test-result-title\x22>'+Utils['escapeHtml'](_0x12efa2)+'</div>';_0x163a59&&(_0x2243e1+='<div\x20class=\x22test-result-detail\x22>'+Utils['escapeHtml'](_0x163a59)+'</div>'),_0x59ae82['innerHTML']=_0x2243e1,_0x59ae82['className']='connection-test-result\x20'+(_0x52e503?'success':'error'),_0x59ae82['hidden']=![];}function clearConnectionTestResult(){document['getElementById']('connection-test-spinner')['hidden']=!![];const _0x1fe21e=document['getElementById']('connection-test-result');_0x1fe21e['hidden']=!![],_0x1fe21e['innerHTML']='',_0x1fe21e['className']='connection-test-result';}async function testConnection(_0x21e9b9){const _0x28507e=state['editingConnection']||'_unsaved',_0x51b666=document['getElementById']('connection-test-spinner');clearConnectionTestResult(),_0x51b666['hidden']=![];try{const _0x46e89a=document['querySelector']('input[name=\x22connection-type\x22]:checked')?.['value'],_0xd21046={'testType':_0x21e9b9,'type':_0x46e89a,'host':document['getElementById']('connection-host')['value']['trim'](),'user':document['getElementById']('connection-user')['value']['trim']()};_0x46e89a==='ibmi'&&(_0xd21046['features']=['sql','build','ssh','sync']['filter'](_0x580c8c=>document['getElementById']('feature-'+_0x580c8c)['checked']));_0x21e9b9==='sql'?(_0xd21046['password']=document['getElementById']('connection-password')['value'],_0xd21046['database']=document['getElementById']('connection-database')['value']['trim'](),!document['getElementById']('connection-verify-cert')['checked']&&(_0xd21046['verify_db_server_certificate']=![])):_0xd21046['ssh_private_key']=sshKeyValueStore;const _0x186d2f=await API['post']('/environments/'+state['selectedEnv']+'/connections/'+_0x28507e+'/test',_0xd21046);showConnectionTestResult(!![],_0x186d2f['message']||'Connection\x20successful');}catch(_0x4f2987){showConnectionTestResult(![],_0x4f2987['message']||'Connection\x20failed',_0x4f2987['detail']);}}function openInstallKeyModal(){const _0x19231a=document['getElementById']('connection-host')['value']['trim'](),_0x44b5a4=document['getElementById']('connection-user')['value']['trim'](),_0xf9e12f=document['getElementById']('connection-ssh-public-key')['value']['trim']();if(!_0x19231a||!_0x44b5a4){showConnectionTestResult(![],'Host\x20and\x20user\x20are\x20required\x20to\x20install\x20the\x20public\x20key');return;}if(!_0xf9e12f||_0xf9e12f==='***'){showConnectionTestResult(![],'A\x20public\x20key\x20is\x20required\x20to\x20install');return;}const _0x2d707f=document['getElementById']('connection-password')['value'],_0x2744a7=document['getElementById']('connection-password-row'),_0x34d7c2=document['getElementById']('install-key-password');_0x34d7c2['value']=!_0x2744a7['hidden']&&_0x2d707f&&_0x2d707f!=='***'?_0x2d707f:'',_0x34d7c2['type']='password';const _0x8c9303=document['getElementById']('install-key-password-toggle');_0x8c9303['querySelector']('.eye-open')['style']['display']='',_0x8c9303['querySelector']('.eye-closed')['style']['display']='none';const _0xbdaeac=document['getElementById']('install-key-result');_0xbdaeac['hidden']=!![],_0xbdaeac['innerHTML']='',_0xbdaeac['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 _0x29f373=document['getElementById']('install-key-password')['value'];if(!_0x29f373){const _0x35534a=document['getElementById']('install-key-result');_0x35534a['innerHTML']='<div\x20class=\x22test-result-title\x22>'+Utils['escapeHtml']('Password\x20is\x20required')+'</div>',_0x35534a['className']='connection-test-result\x20error',_0x35534a['hidden']=![];return;}const _0x3066cf=state['editingConnection']||'_unsaved',_0x26c549=document['getElementById']('connection-host')['value']['trim'](),_0x100b0e=document['getElementById']('connection-user')['value']['trim'](),_0x5d939e=document['getElementById']('connection-ssh-public-key')['value']['trim'](),_0xef81eb=document['getElementById']('install-key-result');_0xef81eb['innerHTML']='Installing...',_0xef81eb['className']='connection-test-result',_0xef81eb['hidden']=![],document['getElementById']('install-key-confirm-btn')['disabled']=!![];try{const _0x4e49f2={'host':_0x26c549,'user':_0x100b0e,'password':_0x29f373,'public_key':_0x5d939e},_0x182a46=await API['post']('/environments/'+state['selectedEnv']+'/connections/'+_0x3066cf+'/install-public-key',_0x4e49f2);_0xef81eb['innerHTML']='<div\x20class=\x22test-result-title\x22>'+Utils['escapeHtml'](_0x182a46['message']||'Public\x20key\x20installed\x20successfully')+'</div>',_0xef81eb['className']='connection-test-result\x20success';}catch(_0x1976cc){let _0x1f356a='<div\x20class=\x22test-result-title\x22>'+Utils['escapeHtml'](_0x1976cc['message']||'Failed\x20to\x20install\x20public\x20key')+'</div>';_0x1976cc['detail']&&(_0x1f356a+='<div\x20class=\x22test-result-detail\x22>'+Utils['escapeHtml'](_0x1976cc['detail'])+'</div>'),_0xef81eb['innerHTML']=_0x1f356a,_0xef81eb['className']='connection-test-result\x20error',document['getElementById']('install-key-confirm-btn')['disabled']=![];}}function getRequiredSkillsForConnection(_0x29723b){const _0x5be0b5={'sqlserver':['sql'],'ibmi':{'sql':['sql'],'build':['codermake'],'interactive':['ibmi-interactive-session'],'ssh':['ibmi-clcmd'],'sync':[]},'ssh':[]};if(_0x29723b['type']==='sqlserver')return[..._0x5be0b5['sqlserver']];if(_0x29723b['type']==='ibmi'){const _0x1b26b4=[];for(const _0x676573 of _0x29723b['config']?.['features']||[]){const _0x3d6b20=_0x5be0b5['ibmi'][_0x676573];if(_0x3d6b20)for(const _0x117c4c of _0x3d6b20){if(!_0x1b26b4['includes'](_0x117c4c))_0x1b26b4['push'](_0x117c4c);}}return _0x1b26b4;}return[];}function getConnectionRequiredSkills(){const _0x57db3b={'sqlserver':['sql'],'ibmi':{'sql':['sql'],'build':['codermake'],'interactive':['ibmi-interactive-session'],'ssh':['ibmi-clcmd'],'sync':[]},'ssh':[]},_0x54426d=new Set();for(const _0x142ec0 of state['selectedEnvData']?.['external_connections']||[]){if(_0x142ec0['type']==='sqlserver')_0x57db3b['sqlserver']['forEach'](_0x34b247=>_0x54426d['add'](_0x34b247));else{if(_0x142ec0['type']==='ibmi')for(const _0x4a4363 of _0x142ec0['config']?.['features']||[]){const _0x3696fc=_0x57db3b['ibmi'][_0x4a4363];if(_0x3696fc)_0x3696fc['forEach'](_0xeda48e=>_0x54426d['add'](_0xeda48e));}}}return _0x54426d;}async function autoImportConnectionSkills(_0x5e92c1){const _0x5cacea=state['selectedEnvData']?.['skills']||[];for(const _0x55e747 of _0x5e92c1){if(_0x5cacea['includes'](_0x55e747))continue;try{await API['post']('/external-skills/import/catalog',{'skillId':_0x55e747});}catch(_0x398d16){console['debug']('Skill\x20import\x20(may\x20already\x20exist):',_0x55e747,_0x398d16['message']);}!_0x5cacea['includes'](_0x55e747)&&_0x5cacea['push'](_0x55e747);}state['selectedEnvData']&&(state['selectedEnvData']['skills']=_0x5cacea,markAsModified(),renderEnvironmentSkills());}function debounce(_0x4b4995,_0x1eba19){let _0xa4efd5;return function _0x347799(..._0x4d0e6c){const _0x5c6b70=()=>{clearTimeout(_0xa4efd5),_0x4b4995(..._0x4d0e6c);};clearTimeout(_0xa4efd5),_0xa4efd5=setTimeout(_0x5c6b70,_0x1eba19);};}window['markAsModified']=function(){state['hasUnsavedChanges']=!![],updateButtonStates();};function updateButtonStates(){const _0x1c5d17=document['getElementById']('save-btn'),_0x33e3b2=document['getElementById']('repo-commit-btn'),_0x1e82ad=document['getElementById']('repo-discard-btn');_0x1c5d17&&(_0x1c5d17['disabled']=!state['hasUnsavedChanges']);_0x33e3b2&&(_0x33e3b2['disabled']=state['modifiedFiles']['size']===0x0);if(_0x1e82ad){const _0x2e356e=state['changedFiles']&&state['changedFiles']['length']>0x0;_0x1e82ad['disabled']=!_0x2e356e;}}async function saveChanges(){if(!state['hasUnsavedChanges'])return;if(state['currentRepo']!==null&&document['getElementById']('edit-repo-provider')){const _0x5daa62=validateEditRepoForm();if(_0x5daa62['length']>0x0){Utils['showError'](_0x5daa62[0x0]);return;}}try{const _0x1a299e=document['getElementById']('save-btn');_0x1a299e['disabled']=!![],_0x1a299e['innerHTML']='<span>⏳</span>\x20Saving...';const _0x215ea7=await saveCurrentState(),_0x49328c=[];_0x215ea7['modifiedEnvironmentJson']&&_0x49328c['push']('environment.json');_0x215ea7['modifiedTests']&&_0x49328c['push']('tests.json');const _0x5d958a=_0x2415e1=>{return monacoEditors['has'](_0x2415e1)||window['MarkdownFileEditor']&&window['MarkdownFileEditor']['editors']['has'](_0x2415e1);};if(state['currentTab']==='agents')_0x49328c['push']('AGENTS.md');else{if(state['currentTab']==='files')_0x49328c['push'](state['currentFile']);else{if(state['currentTab']==='build')monacoEditors['has']('script-editor')&&_0x49328c['push'](currentScript);else state['currentTab']==='overview'&&(_0x5d958a('readme-editor')&&_0x49328c['push']('README.md'));}}_0x215ea7['modifiedDeployProfile']&&_0x49328c['push']('deployment-profiles/'+_0x215ea7['modifiedDeployProfile']+'.sh'),_0x49328c['forEach'](_0x154e72=>state['modifiedFiles']['add'](_0x154e72)),state['hasUnsavedChanges']=![],updateButtonStates(),await refreshRepositoryGitStatus(),Utils['showSuccess']('Changes\x20saved\x20to\x20files'),_0x1a299e['innerHTML']='<span>💾</span>\x20Save';}catch(_0x224563){console['error']('Save\x20failed:',_0x224563);const _0x46b213=_0x224563['message']&&(_0x224563['message']['includes']('Invalid\x20JSON\x20in\x20Parameters\x20field')||_0x224563['message']['includes']('Invalid\x20JSON\x20in\x20template\x20metadata'));!_0x46b213&&Utils['showError']('Failed\x20to\x20save\x20changes');const _0x5ee907=document['getElementById']('save-btn');_0x5ee907['disabled']=![],_0x5ee907['innerHTML']='<span>💾</span>\x20Save';}}async function saveCurrentState(){const _0x475c46={'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']||[]},_0x2ea56a=document['getElementById']('rebuild-schedule-enabled-build-tab')['checked'];_0x2ea56a?_0x475c46['rebuild_schedule']={'enabled':!![],'interval_hours':parseInt(document['getElementById']('rebuild-interval-build-tab')['value'],0xa)}:_0x475c46['rebuild_schedule']={'enabled':![]};monacoEditors['has']('script-editor')&¤tScript&&(currentScript==='pre-clone'||currentScript==='post-clone')&&saveCurrentScriptToState();const _0xed9d28=state['selectedEnvData']['docker_config'],_0x1df4d6=_0xed9d28&&(Object['prototype']['hasOwnProperty']['call'](_0xed9d28,'pre_clone_instructions')||Object['prototype']['hasOwnProperty']['call'](_0xed9d28,'post_clone_instructions'));_0x1df4d6&&(_0x475c46['docker_config']={'pre_clone_instructions':_0xed9d28['pre_clone_instructions']||'','post_clone_instructions':_0xed9d28['post_clone_instructions']||''});const _0x28a645=[...state['selectedEnvData']['repos']||[]];state['selectedEnvData']['repos']=_0x28a645,persistCurrentRepoFormChanges(),_0x475c46['repos']=_0x28a645;const _0x428b3e={...state['selectedEnvData']['tests']};if(state['currentTest']!==null&&document['getElementById']('test-description')){const _0x9213b6=document['getElementById']('test-command')['value']['trim']();let _0x4a9190;const _0x1e84f4=_0x9213b6['split']('\x0a')['filter'](_0x21fefd=>_0x21fefd['trim']());if(_0x1e84f4['length']>0x1)_0x4a9190={'commands':_0x1e84f4};else _0x1e84f4['length']===0x1?_0x4a9190={'command':_0x1e84f4[0x0]}:_0x4a9190={'command':''};const _0x378f3d=state['selectedEnvData']['tests'][state['currentTest']],_0x12fee1=_0x378f3d?.['parameters']&&Object['keys'](_0x378f3d['parameters'])['length']>0x0?{'parameters':_0x378f3d['parameters']}:{};_0x428b3e[state['currentTest']]={..._0x428b3e[state['currentTest']],'description':document['getElementById']('test-description')['value'],..._0x4a9190,..._0x12fee1};}_0x475c46['tests']=_0x428b3e;const _0x440697=document['getElementById']('server-name');if(_0x440697){const _0x2cff3d=document['getElementById']('server-enabled'),_0x46f4cc=document['getElementById']('server-proxy'),_0x26c42={...state['selectedEnvData']['application_server'],'enabled':_0x2cff3d['disabled']?!![]:_0x2cff3d['checked'],'name':_0x440697['disabled']?state['selectedEnvData']['application_server']?.['name']||'':_0x440697['value']},_0x2b7753=monacoEditors['get']('server-command-editor'),_0xf9ca10=_0x2b7753?_0x2b7753['getValue']()['trim']():'';_0xf9ca10?_0x26c42['start_command']=_0xf9ca10:delete _0x26c42['start_command'];const _0x1a734a=_0x46f4cc['disabled']?(state['selectedEnvData']['application_server']?.['proxy']||'')['trim']():_0x46f4cc['value']['trim']();_0x1a734a?_0x26c42['proxy']=_0x1a734a:delete _0x26c42['proxy'];const _0x44e3db=document['getElementById']('server-qa-url')['value']['trim']();_0x44e3db?_0x26c42['qa_url']=_0x44e3db:delete _0x26c42['qa_url'];const _0x23e3b2=collectPortQaUrlsFromForm();Object['keys'](_0x23e3b2)['length']>0x0?_0x26c42['port_qa_urls']=_0x23e3b2:delete _0x26c42['port_qa_urls'];const _0x8c0f6f=document['getElementById']('server-auth-user-property')['value']['trim'](),_0x2acd36=document['getElementById']('server-auth-password-property')['value']['trim']();if(_0x8c0f6f||_0x2acd36){_0x26c42['basic_auth']={};if(_0x8c0f6f)_0x26c42['basic_auth']['user_property']=_0x8c0f6f;if(_0x2acd36)_0x26c42['basic_auth']['password_property']=_0x2acd36;}else delete _0x26c42['basic_auth'];const _0x40dd4c=document['getElementById']('ports-list');if(_0x40dd4c){const _0x5910b5=_0x40dd4c['querySelectorAll']('.config-item'),_0x2778c6=[];_0x5910b5['forEach'](_0x2d25c8=>{const _0x239e76=_0x2d25c8['querySelectorAll']('input');if(_0x239e76['length']>=0x2){const _0x2bcfb1=_0x239e76[0x0]['value']['trim'](),_0x2ee658=_0x239e76[0x1]['value']['trim']();(_0x2bcfb1||_0x2ee658)&&_0x2778c6['push']({'internal':_0x2bcfb1?parseInt(_0x2bcfb1,0xa):'','name':_0x2ee658});}}),_0x2778c6['length']>0x0?_0x26c42['ports']=_0x2778c6:delete _0x26c42['ports'];}const _0x40ecb6=collectURLsFromForm(![]);_0x40ecb6['length']>0x0?_0x26c42['launch_urls']=_0x40ecb6:delete _0x26c42['launch_urls'];const _0x1fd604=document['getElementById']('proxy-headers-list');if(_0x1fd604){const _0x5a9652=_0x1fd604['querySelectorAll']('.config-item'),_0x244210={};_0x5a9652['forEach'](_0x3f6ef5=>{const _0xafdade=_0x3f6ef5['querySelectorAll']('input');if(_0xafdade['length']>=0x2){const _0x485e13=_0xafdade[0x0]['value']['trim'](),_0x511954=_0xafdade[0x1]['value']['trim']();_0x485e13&&_0x511954&&(_0x244210[_0x485e13]=_0x511954);}}),Object['keys'](_0x244210)['length']>0x0?_0x26c42['proxy_headers']=_0x244210:delete _0x26c42['proxy_headers'];}const _0xafd0aa=_0x26c42['name']||_0x26c42['start_command']||_0x26c42['proxy']||_0x26c42['qa_url']||_0x26c42['basic_auth']||_0x26c42['ports']?.['length']>0x0||_0x26c42['launch_urls']?.['length']>0x0||Object['keys'](_0x26c42['proxy_headers']||{})['length']>0x0;_0xafd0aa?_0x475c46['application_server']=_0x26c42:_0x475c46['application_server']=null;}_0x475c46['volume_mounts']=state['selectedEnvData']['volume_mounts']||[];state['selectedEnvData']['external_connections']!==undefined&&(_0x475c46['external_connections']=state['selectedEnvData']['external_connections']);const _0x2bdc12=_0x4d398a=>{return monacoEditors['has'](_0x4d398a)||window['MarkdownFileEditor']&&window['MarkdownFileEditor']['editors']['has'](_0x4d398a);};if(_0x2bdc12('agents-editor')){const _0x4ded4c=getMonacoValue('agents-editor');await API['post']('/environments/'+state['selectedEnv']+'/files/AGENTS.md',{'content':_0x4ded4c}),state['selectedEnvData']['agentsContent']=_0x4ded4c;}if(_0x2bdc12('readme-editor')){const _0x1b28b6=getMonacoValue('readme-editor');await API['post']('/environments/'+state['selectedEnv']+'/files/README.md',{'content':_0x1b28b6}),state['selectedEnvData']['readmeContent']=_0x1b28b6;}if(_0x2bdc12('file-editor')&&state['currentFile']){const _0x2ef3bf=getMonacoValue('file-editor');await API['post']('/environments/'+state['selectedEnv']+'/files/'+state['currentFile'],{'content':_0x2ef3bf}),!state['selectedEnvData']['files']&&(state['selectedEnvData']['files']={}),state['selectedEnvData']['files'][state['currentFile']]=_0x2ef3bf;}if(monacoEditors['has']('script-editor')&¤tScript){saveCurrentScriptToState();if(currentScript==='pre-clone'||currentScript==='post-clone'){}else{const _0x463085=getMonacoValue('script-editor');await API['post']('/environments/'+state['selectedEnv']+'/files/'+currentScript,{'content':_0x463085}),!state['selectedEnvData']['files']&&(state['selectedEnvData']['files']={}),state['selectedEnvData']['files'][currentScript]=_0x463085;}}const _0x107324=(state['selectedEnvData']['templates']||[])['map'](_0x2fafcf=>_0x2fafcf['filename']),_0x18adc1=state['originalTemplates']||[],_0x2165a8=_0x107324['filter'](_0x3b980b=>!_0x18adc1['includes'](_0x3b980b)),_0x5d8a0e=_0x18adc1['filter'](_0x1dad56=>!_0x107324['includes'](_0x1dad56));for(const _0x1ce040 of _0x2165a8){const _0x42c2cf=state['selectedEnvData']['templates']['find'](_0x186403=>_0x186403['filename']===_0x1ce040);if(_0x42c2cf){await API['post']('/environments/'+state['selectedEnv']+'/files/task-templates/'+_0x1ce040,{'content':_0x42c2cf['content']||''});const _0x39ddba=_0x1ce040['replace'](/\.md$/,'.json'),_0x3a0fa3={'title':_0x42c2cf['title'],'description':_0x42c2cf['description'],'parameters':_0x42c2cf['parameters']||[]};await API['post']('/environments/'+state['selectedEnv']+'/files/task-templates/'+_0x39ddba,{'content':JSON['stringify'](_0x3a0fa3,null,0x2)});}}for(const _0x382020 of _0x5d8a0e){const _0x4da982=_0x382020['replace'](/\.md$/,'.json');await API['delete']('/environments/'+state['selectedEnv']+'/files/task-templates/'+_0x382020),await API['delete']('/environments/'+state['selectedEnv']+'/files/task-templates/'+_0x4da982);}if(state['currentTemplate']!==null&&state['currentTemplateData']){const _0xa209bc=state['selectedEnvData']['templates'][state['currentTemplate']],_0x50526e=_0x2bdc12('template-md-editor')?getMonacoValue('template-md-editor'):state['currentTemplateData']['content']||'',_0x1d3af0=document['getElementById']('template-edit-title'),_0x45364b=document['getElementById']('template-edit-description'),_0x2a0e06={'title':_0x1d3af0?_0x1d3af0['value']:state['currentTemplateData']['title'],'description':_0x45364b?_0x45364b['value']:state['currentTemplateData']['description'],'parameters':state['currentTemplateData']['parameters']||{}};await API['post']('/environments/'+state['selectedEnv']+'/files/task-templates/'+_0xa209bc['filename'],{'content':_0x50526e});const _0x41bee3=_0xa209bc['filename']['replace'](/\.md$/,'.json'),_0x3e8812=_0x2a0e06['title']||_0x2a0e06['description']||_0x2a0e06['parameters']&&Object['keys'](_0x2a0e06['parameters'])['length']>0x0;_0x3e8812&&await API['post']('/environments/'+state['selectedEnv']+'/files/task-templates/'+_0x41bee3,{'content':JSON['stringify'](_0x2a0e06,null,0x2)}),state['selectedEnvData']['templates'][state['currentTemplate']]={..._0xa209bc,'content':_0x50526e,..._0x2a0e06};}state['originalTemplates']=_0x107324;let _0x960540=null;if(state['profileHasUnsavedChanges']&&state['currentDeployProfile']&&state['currentDeployProfileData']){const _0x450642=state['currentDeployProfile'],_0x85e1fa=document['getElementById']('profile-description')?.['value']['trim']()||'',_0xb0ec8d=state['profileScriptEditor']?state['profileScriptEditor']['getValue']():'',_0x140817=state['currentDeployProfileData']['env_vars']||[],_0x13cf49=state['currentDeployProfileData']['secrets']||[],_0x1f0c6d=state['currentDeployProfileData']['parameters']||{};await API['put']('/environments/'+state['selectedEnv']+'/deployment-profiles/'+_0x450642,{'description':_0x85e1fa,'scriptContent':_0xb0ec8d,'env_vars':_0x140817,'secrets':_0x13cf49,'parameters':_0x1f0c6d}),_0x960540=_0x450642,state['profileHasUnsavedChanges']=![];}return await API['put']('/environments/'+state['selectedEnv'],_0x475c46),Object['assign'](state['selectedEnvData'],_0x475c46),{'modifiedEnvironmentJson':!![],'modifiedTests':_0x475c46['tests']!==undefined,'modifiedDeployProfile':_0x960540};}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 _0x3cb563=document['getElementById']('new-env-repo-source-provider');newEnvRepoAutocomplete&&(newEnvRepoAutocomplete['reset'](),newEnvRepoAutocomplete['disable']());const _0x24fd10=document['getElementById']('new-env-repo-credential-mode');_0x24fd10&&(_0x24fd10['value']='app');try{const _0x24865b=await API['get']('/settings/git-providers');_0x3cb563['innerHTML']='<option\x20value=\x22\x22>--\x20Select\x20a\x20provider\x20--</option>';for(const _0x236860 of _0x24865b['providers']||[]){_0x3cb563['innerHTML']+='<option\x20value=\x22'+Utils['escapeHtml'](_0x236860['name'])+'\x22>'+Utils['escapeHtml'](_0x236860['name'])+'</option>';}}catch(_0x4e99b3){console['error']('Failed\x20to\x20load\x20git\x20providers:',_0x4e99b3),_0x3cb563['innerHTML']='<option\x20value=\x22\x22>--\x20No\x20providers\x20available\x20--</option>';}if(!newEnvAgentSelect){const _0x5aacaf=document['getElementById']('new-env-agent-wrapper');_0x5aacaf['innerHTML']='';const _0x26bc50=document['createElement']('select');_0x26bc50['id']='new-env-agent',_0x26bc50['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',_0x5aacaf['appendChild'](_0x26bc50),newEnvAgentSelect=new CustomSelect(_0x26bc50,{'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(_0x194503){const _0x35195d=_0x194503['value'],_0x5c588b=document['getElementById']('new-env-repo-url-row'),_0x5a04ba=document['getElementById']('new-env-repo-provider-selection'),_0x4cf8cd=document['getElementById']('new-env-repo-url'),_0x1d1450=document['getElementById']('new-env-repo-source-provider');if(_0x35195d==='none')_0x5c588b['hidden']=!![],_0x5a04ba['hidden']=!![],_0x4cf8cd['value']='',newEnvRepoAutocomplete&&(newEnvRepoAutocomplete['reset'](),newEnvRepoAutocomplete['disable']());else{if(_0x35195d==='manual')_0x5c588b['hidden']=![],_0x5a04ba['hidden']=!![],_0x4cf8cd['value']='',newEnvRepoAutocomplete&&(newEnvRepoAutocomplete['reset'](),newEnvRepoAutocomplete['disable']());else _0x35195d==='provider'&&(_0x5c588b['hidden']=!![],_0x5a04ba['hidden']=![],_0x1d1450['value']='',initNewEnvRepoAutocomplete());}},window['onNewEnvRepoProviderChange']=async function(){const _0x5a4d5d=document['getElementById']('new-env-repo-source-provider')['value'];if(!_0x5a4d5d){newEnvRepoAutocomplete&&(newEnvRepoAutocomplete['reset'](),newEnvRepoAutocomplete['disable']());return;}newEnvRepoAutocomplete&&(newEnvRepoAutocomplete['reset'](),newEnvRepoAutocomplete['enable'](),newEnvRepoAutocomplete['preloadData']());};function initNewEnvRepoAutocomplete(){const _0x3637ea=document['getElementById']('new-env-repo-autocomplete-container');if(!_0x3637ea)return;newEnvRepoAutocomplete&&newEnvRepoAutocomplete['destroy'](),newEnvRepoAutocomplete=new AutocompleteSelect(_0x3637ea,{'placeholder':'Search\x20for\x20a\x20repository','maxItems':0x64,'emptyMessage':'No\x20repositories\x20found','loadingMessage':'Loading\x20repositories...','preload':![],'searchMode':'server','loadItems':async _0x1e8951=>{const _0x4ea034=document['getElementById']('new-env-repo-source-provider')['value'];if(!_0x4ea034)return[];try{let _0x1ffa9a='/settings/git-providers/'+encodeURIComponent(_0x4ea034)+'/repositories?limit=100';_0x1e8951&&_0x1e8951['trim']()&&(_0x1ffa9a+='&search='+encodeURIComponent(_0x1e8951['trim']()));const _0x4b62ad=await API['get'](_0x1ffa9a);return _0x4b62ad['repositories']||[];}catch(_0x57359f){console['error']('Failed\x20to\x20load\x20repositories:',_0x57359f);throw _0x57359f;}},'renderItem':_0x2d4933=>{const _0x2eb0d7=_0x2d4933['private']===!![];let _0x5927e4=_0x2d4933['description']||'no\x20description';return _0x2d4933['descriptionSource']==='project'&&_0x2d4933['description']&&(_0x5927e4='Project:\x20'+_0x2d4933['description']),{'primary':_0x2d4933['full_name']||_0x2d4933['name'],'secondary':_0x5927e4,'icon':_0x2eb0d7?REPO_ICON_PRIVATE:REPO_ICON_PUBLIC,'iconClass':_0x2eb0d7?'icon-private':'icon-public'};},'sortItems':_0x3db333=>{return _0x3db333['sort']((_0x4a072b,_0x4d61ff)=>{const _0x82c30f=(_0x4a072b['full_name']||_0x4a072b['name']||'')['toLowerCase'](),_0x57ce4f=(_0x4d61ff['full_name']||_0x4d61ff['name']||'')['toLowerCase']();return _0x82c30f['localeCompare'](_0x57ce4f);});},'getItemValue':_0x207ab2=>_0x207ab2['clone_url']||_0x207ab2['url'],'onSelect':_0x336507=>{}}),newEnvRepoAutocomplete['disable']();}function showNewEnvError(_0x395a41){const _0x44f91e=document['getElementById']('new-env-error');_0x44f91e['textContent']=_0x395a41,_0x44f91e['hidden']=![];}function hideNewEnvError(){document['getElementById']('new-env-error')['hidden']=!![];}async function confirmCreateEnvironment(){const _0x2efd35=document['getElementById']('new-env-name'),_0xabc171=document['getElementById']('new-env-image'),_0x3df826=document['getElementById']('new-env-error'),_0x4c94c0=_0x2efd35['value']['trim'](),_0xcc8a25=document['getElementById']('new-env-description')['value']['trim'](),_0x435107=_0xabc171['value']['trim'](),_0x169fbe=newEnvAgentSelect['selectedValue'],_0x2718ad=document['querySelector']('input[name=\x22new-env-repo-mode\x22]:checked')['value'],_0x46a084=document['getElementById']('new-env-repo-url')['value']['trim'](),_0x3670c2=newEnvRepoAutocomplete?newEnvRepoAutocomplete['getSelectedItem']():null,_0x4eb290=_0x3670c2?_0x3670c2['clone_url']||_0x3670c2['url']:'',_0x4897cc=document['getElementById']('new-env-repo-source-provider')['value'];_0x2efd35['classList']['remove']('input-error'),_0xabc171['classList']['remove']('input-error'),_0x3df826['hidden']=!![];let _0x3f9baa=![],_0x32bb26='';if(!_0x4c94c0)_0x2efd35['classList']['add']('input-error'),_0x3f9baa=!![],_0x32bb26='Environment\x20name\x20is\x20required';else!/^[a-z0-9-]+$/['test'](_0x4c94c0)&&(_0x2efd35['classList']['add']('input-error'),_0x3f9baa=!![],_0x32bb26='Environment\x20name\x20must\x20contain\x20only\x20lowercase\x20letters,\x20numbers,\x20and\x20hyphens');if(!_0x435107){_0xabc171['classList']['add']('input-error'),_0x3f9baa=!![];if(!_0x32bb26)_0x32bb26='Docker\x20image\x20is\x20required';}if(!_0x169fbe){_0x3f9baa=!![];if(!_0x32bb26)_0x32bb26='Default\x20agent\x20is\x20required';}if(_0x2718ad==='provider'){if(!_0x4897cc){_0x3f9baa=!![];if(!_0x32bb26)_0x32bb26='Please\x20select\x20a\x20Git\x20provider';}else{if(!_0x3670c2){_0x3f9baa=!![];if(!_0x32bb26)_0x32bb26='Please\x20select\x20a\x20repository';}}}if(_0x3f9baa){_0x3df826['textContent']=_0x32bb26,_0x3df826['hidden']=![];return;}const _0x408a44=document['getElementById']('new-env-create-btn');_0x408a44['disabled']=!![],_0x408a44['textContent']='Creating...';try{const _0x1b9179={'name':_0x4c94c0,'image_name':_0x435107,'default_agent':_0x169fbe};_0xcc8a25&&(_0x1b9179['description']=_0xcc8a25);if(_0x2718ad==='manual'&&_0x46a084)_0x1b9179['repo_url']=_0x46a084;else{if(_0x2718ad==='provider'&&_0x4eb290){_0x1b9179['repo_url']=_0x4eb290;const _0x5bfcd4=document['getElementById']('new-env-repo-credential-mode')?.['value']||'app';_0x1b9179['repo_provider']={'provider':_0x4897cc,'credential_mode':_0x5bfcd4};}}await API['post']('/environments',_0x1b9179),Utils['showSuccess']('Environment\x20\x22'+_0x4c94c0+'\x22\x20created\x20successfully'),closeNewEnvModal(),await loadEnvironments(),await refreshRepositoryGitStatus(),state['environments']['find'](_0x626181=>_0x626181['name']===_0x4c94c0)&&await window['selectEnvironment'](_0x4c94c0);}catch(_0x5d952f){console['error']('Failed\x20to\x20create\x20environment:',_0x5d952f),showNewEnvError(_0x5d952f['message']||'Unknown\x20error');}finally{_0x408a44['disabled']=![],_0x408a44['textContent']='Create\x20Environment';}}async function deleteEnvironment(){const _0x58e604=state['selectedEnv'];if(!_0x58e604){Utils['showError']('No\x20environment\x20selected');return;}document['getElementById']('delete-env-name-display')['textContent']=_0x58e604,document['getElementById']('delete-env-modal')['hidden']=![];}function closeDeleteEnvModal(){document['getElementById']('delete-env-modal')['hidden']=!![];}async function confirmDeleteEnvironment(){const _0x28a71c=state['selectedEnv'];if(!_0x28a71c){closeDeleteEnvModal();return;}try{await API['delete']('/environments/'+_0x28a71c),Utils['showSuccess']('Environment\x20\x22'+_0x28a71c+'\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(_0x1804c0){console['error']('Failed\x20to\x20delete\x20environment:',_0x1804c0),Utils['showError']('Failed\x20to\x20delete\x20environment:\x20'+(_0x1804c0['message']||'Unknown\x20error')),closeDeleteEnvModal();}}async function cloneEnvironment(){Utils['showToast']('Clone\x20environment\x20coming\x20soon','info');}function openRenameEnvModal(){const _0x366ee6=state['selectedEnv'];if(!_0x366ee6){Utils['showError']('No\x20environment\x20selected');return;}document['getElementById']('rename-env-error')['hidden']=!![],document['getElementById']('rename-env-current')['value']=_0x366ee6,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 _0x27d450=state['selectedEnv'],_0x58952b=document['getElementById']('rename-env-new')['value']['trim'](),_0x4c6f03=document['getElementById']('rename-env-error');if(!_0x58952b){_0x4c6f03['textContent']='Please\x20enter\x20a\x20new\x20name',_0x4c6f03['hidden']=![];return;}if(!/^[a-z0-9-]+$/['test'](_0x58952b)){_0x4c6f03['textContent']='Name\x20must\x20contain\x20only\x20lowercase\x20letters,\x20numbers,\x20and\x20hyphens',_0x4c6f03['hidden']=![];return;}if(_0x58952b===_0x27d450){_0x4c6f03['textContent']='New\x20name\x20must\x20be\x20different\x20from\x20current\x20name',_0x4c6f03['hidden']=![];return;}if(state['environments']['some'](_0x5b2251=>_0x5b2251['name']===_0x58952b)){_0x4c6f03['textContent']='An\x20environment\x20with\x20this\x20name\x20already\x20exists',_0x4c6f03['hidden']=![];return;}const _0x52a38a=document['getElementById']('rename-env-confirm-btn'),_0x388b2b=_0x52a38a['textContent'];try{_0x52a38a['disabled']=!![],_0x52a38a['textContent']='Renaming...',await API['post']('/environments/'+_0x27d450+'/rename',{'newName':_0x58952b}),Utils['showSuccess']('Environment\x20renamed\x20to\x20\x22'+_0x58952b+'\x22'),closeRenameEnvModal(),state['selectedEnv']=_0x58952b,await loadEnvironments(),await selectEnvironment(_0x58952b),await refreshRepositoryGitStatus();}catch(_0x5a717a){console['error']('Failed\x20to\x20rename\x20environment:',_0x5a717a),_0x4c6f03['textContent']=_0x5a717a['message']||'Failed\x20to\x20rename\x20environment',_0x4c6f03['hidden']=![];}finally{_0x52a38a['disabled']=![],_0x52a38a['textContent']=_0x388b2b;}}async function loadMonaco(){if(monacoLoaded)return;const _0xf6f92a=document['querySelector']('script[src*=\x22monaco-editor\x22][src*=\x22loader.min.js\x22]');if(_0xf6f92a){if(typeof monaco!=='undefined'){monacoLoaded=!![],monaco['editor']['setTheme'](getMonacoTheme());return;}return new Promise((_0x1cb79b,_0x5b8bda)=>{const _0x27784a=setInterval(()=>{typeof monaco!=='undefined'&&(clearInterval(_0x27784a),monacoLoaded=!![],monaco['editor']['setTheme'](getMonacoTheme()),_0x1cb79b());},0x64);setTimeout(()=>{clearInterval(_0x27784a),_0x5b8bda(new Error('Monaco\x20loading\x20timeout'));},0x2710);});}return new Promise((_0x1c2857,_0xaa9ecc)=>{const _0x50cf8e=document['createElement']('script');_0x50cf8e['src']='https://cdnjs.cloudflare.com/ajax/libs/monaco-editor/0.45.0/min/vs/loader.min.js',_0x50cf8e['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()),_0x1c2857();});},_0x50cf8e['onerror']=()=>_0xaa9ecc(new Error('Failed\x20to\x20load\x20Monaco\x20Editor')),document['head']['appendChild'](_0x50cf8e);});}async function createMonacoEditor(_0x50e26b,_0x102d87,_0x17087a,_0x81c598=![]){!monacoLoaded&&await loadMonaco();const _0x5f04a9=document['getElementById'](_0x50e26b);if(!_0x5f04a9)return console['error']('Monaco\x20container\x20not\x20found:',_0x50e26b),null;const _0x157bf4=monacoEditors['get'](_0x50e26b);_0x157bf4&&_0x157bf4['dispose']();const _0x138851=monaco['editor']['create'](_0x5f04a9,{'value':_0x102d87||'','language':_0x17087a,'theme':getMonacoTheme(),'readOnly':_0x81c598,'minimap':{'enabled':![]},'fontSize':0xd,'lineNumbers':'on','scrollBeyondLastLine':![],'automaticLayout':!![],'wordWrap':'on','tabSize':0x2}),_0x5e3668=_0x138851['getModel']();return _0x5e3668&&_0x5e3668['setEOL'](monaco['editor']['EndOfLineSequence']['LF']),monacoEditors['set'](_0x50e26b,_0x138851),_0x138851;}function getLanguageFromFilename(_0x54d7d2){const _0x763b5f=_0x54d7d2['split']('.')['pop']()['toLowerCase'](),_0x3480f5={'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(_0x54d7d2==='Dockerfile')return'dockerfile';return _0x3480f5[_0x763b5f]||'plaintext';}function getMonacoValue(_0x220bb9){if(window['MarkdownFileEditor']&&window['MarkdownFileEditor']['editors']['has'](_0x220bb9)){const _0x5d3e8a=window['MarkdownFileEditor']['editors']['get'](_0x220bb9);return _0x5d3e8a?_0x5d3e8a['getValue']():null;}const _0x51328a=monacoEditors['get'](_0x220bb9);if(!_0x51328a)return null;return _0x51328a['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 _0x574879=await API['get']('/build/base/availability');if(_0x574879['available'])return!![];return openBaseImageRequiredModal(),![];}catch(_0x4304eb){return console['error']('Failed\x20to\x20check\x20base\x20image\x20availability:',_0x4304eb),Utils['showError'](_0x4304eb['message']||'Failed\x20to\x20verify\x20base\x20image\x20availability'),![];}}window['showBuildConfirmation']=async function(){if(!state['selectedEnv']){Utils['showError']('No\x20environment\x20selected');return;}const _0x367d7a=await ensureBaseImageAvailableForBuild();if(!_0x367d7a)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 _0xf43d99=state['selectedEnv'],_0x168e52=document['getElementById']('build-now-btn'),_0x53b541=document['getElementById']('build-status-message');try{_0x168e52&&(_0x168e52['disabled']=!![],_0x168e52['innerHTML']='<span>⏳</span>\x20Building...');const _0x3b1675=await API['post']('/environments/'+_0xf43d99+'/build',{});currentBuildId=_0x3b1675['buildId'],currentBuildEnv=_0xf43d99,_0x53b541&&(_0x53b541['hidden']=![],_0x53b541['className']='alert\x20alert-info',_0x53b541['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(_0x3b1675['buildId'],_0xf43d99),startBuildPolling(_0x3b1675['buildId'],_0xf43d99);}catch(_0x12c9ac){console['error']('Failed\x20to\x20start\x20build:',_0x12c9ac),(_0x12c9ac['message']||'')['toLowerCase']()['includes']('base\x20image')?openBaseImageRequiredModal():Utils['showError'](_0x12c9ac['message']||'Failed\x20to\x20start\x20build'),_0x168e52&&(_0x168e52['disabled']=![],_0x168e52['innerHTML']='<span>📦</span>\x20Build\x20Now');}};function clearBuildTimers(){buildPollTimer&&(clearInterval(buildPollTimer),buildPollTimer=null),buildElapsedTimer&&(clearInterval(buildElapsedTimer),buildElapsedTimer=null);}function isActiveBuildContext(_0x2972dc,_0x11c316){return currentBuildId===_0x2972dc&¤tBuildEnv===_0x11c316;}function startBuildPolling(_0x5f26e0,_0x209ad4){const _0x12c408=Date['now']();clearBuildTimers(),buildElapsedTimer=setInterval(()=>{if(!isActiveBuildContext(_0x5f26e0,_0x209ad4)){clearBuildTimers();return;}const _0x292cbb=Math['floor']((Date['now']()-_0x12c408)/0x3e8),_0xfca0ed=document['getElementById']('build-elapsed-time');if(_0xfca0ed){const _0x4721d9=Math['floor'](_0x292cbb/0x3c),_0x355499=_0x292cbb%0x3c;_0xfca0ed['textContent']=_0x4721d9>0x0?'Elapsed\x20time:\x20'+_0x4721d9+'m\x20'+_0x355499+'s':'Elapsed\x20time:\x20'+_0x355499+'s';}},0x3e8),buildPollTimer=setInterval(async()=>{if(!isActiveBuildContext(_0x5f26e0,_0x209ad4)){clearBuildTimers();return;}try{const _0x15829f=await API['get']('/environments/'+_0x209ad4+'/build-status/'+_0x5f26e0);if(!isActiveBuildContext(_0x5f26e0,_0x209ad4))return;if(_0x15829f['status']==='success'||_0x15829f['status']==='failed'){clearBuildTimers(),currentBuildId=null,currentBuildEnv=null,stopBuildOutputStreaming();const _0x48dfa2=document['getElementById']('build-now-btn');_0x48dfa2&&(_0x48dfa2['disabled']=![],_0x48dfa2['innerHTML']='<span>📦</span>\x20Build\x20Now');const _0x1a1c73=document['getElementById']('build-status-message'),_0x2caac2=formatDuration(_0x15829f['duration']);_0x1a1c73?(_0x15829f['status']==='success'?(_0x1a1c73['className']='alert\x20alert-success',_0x1a1c73['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'+_0x2caac2+'</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'+_0x2caac2,'success')):(_0x1a1c73['className']='alert\x20alert-error',_0x1a1c73['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'](_0x15829f['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'+_0x2caac2+'</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(()=>{_0x1a1c73&&state['selectedEnv']===_0x209ad4&&(_0x1a1c73['hidden']=!![]);},0x2710)):_0x15829f['status']==='success'?Utils['showToast']('Build\x20completed\x20in\x20'+_0x2caac2,'success'):Utils['showToast']('Build\x20failed\x20-\x20check\x20output\x20for\x20details','error'),setTimeout(()=>{state['selectedEnv']===_0x209ad4&&loadBuildHistory();},0x3e8);}}catch(_0x4947e5){if(!isActiveBuildContext(_0x5f26e0,_0x209ad4))return;console['error']('Failed\x20to\x20poll\x20build\x20status:',_0x4947e5),clearBuildTimers(),currentBuildId=null,currentBuildEnv=null,stopBuildOutputStreaming();const _0x5c9887=document['getElementById']('build-now-btn');_0x5c9887&&(_0x5c9887['disabled']=![],_0x5c9887['innerHTML']='<span>📦</span>\x20Build\x20Now'),state['selectedEnv']===_0x209ad4&&loadBuildHistory();}},0xbb8);}function stopBuildPolling(){clearBuildTimers(),stopBuildOutputStreaming(),currentBuildId=null,currentBuildEnv=null;}function resetBuildPanelForEnvironmentChange(){stopBuildPolling(),clearBuildOutput(),hideBuildOutputContainer();const _0x43d812=document['getElementById']('build-status-message');_0x43d812&&(_0x43d812['hidden']=!![],_0x43d812['className']='',_0x43d812['innerHTML']='');const _0x3b027a=document['getElementById']('build-now-btn');_0x3b027a&&(_0x3b027a['disabled']=![],_0x3b027a['innerHTML']='<span>📦</span>\x20Build\x20Now');}function showBuildOutputContainer(){const _0x4c2097=document['getElementById']('build-output-container');_0x4c2097&&(_0x4c2097['hidden']=![],buildOutputExpanded=!![],updateBuildOutputToggle());}function scrollBuildOutputIntoView(){const _0x5742ba=document['getElementById']('build-output-container');if(!_0x5742ba||_0x5742ba['hidden'])return;requestAnimationFrame(()=>{_0x5742ba['scrollIntoView']({'behavior':'smooth','block':'start'});});}function hideBuildOutputContainer(){const _0x2fcda5=document['getElementById']('build-output-container');_0x2fcda5&&(_0x2fcda5['hidden']=!![]);}function clearBuildOutput(){const _0x1034d8=document['getElementById']('build-output-text');_0x1034d8&&(_0x1034d8['textContent']='');}window['toggleBuildOutput']=function(){buildOutputExpanded=!buildOutputExpanded,updateBuildOutputToggle();};function updateBuildOutputToggle(){const _0x46f98a=document['getElementById']('build-output-content'),_0x5f3af2=document['getElementById']('build-output-toggle-icon');_0x46f98a&&(_0x46f98a['style']['display']=buildOutputExpanded?'block':'none'),_0x5f3af2&&(_0x5f3af2['innerHTML']=buildOutputExpanded?'▼':'▶');}function appendToBuildOutput(_0x524f03){const _0x31f030=document['getElementById']('build-output-text'),_0x37ca76=document['getElementById']('build-output-content');_0x31f030&&(_0x31f030['textContent']+=_0x524f03,_0x37ca76&&(_0x37ca76['scrollTop']=_0x37ca76['scrollHeight']));}function startBuildOutputStreaming(_0x783364,_0x4e16a0){stopBuildOutputStreaming();try{const _0x176789=new EventSource('/build/output/stream/'+_0x783364);buildOutputEventSource=_0x176789,_0x176789['onmessage']=_0x43c74d=>{if(buildOutputEventSource!==_0x176789)return;if(!isActiveBuildContext(_0x783364,_0x4e16a0)||state['selectedEnv']!==_0x4e16a0){_0x176789['close']();buildOutputEventSource===_0x176789&&(buildOutputEventSource=null);return;}try{const _0x549f96=JSON['parse'](_0x43c74d['data']);if(_0x549f96['type']==='output')appendToBuildOutput(_0x549f96['data']);else _0x549f96['type']==='complete'&&(console['log']('Build\x20completed\x20via\x20stream:',_0x549f96),stopBuildOutputStreaming());}catch(_0x3d0176){console['error']('Failed\x20to\x20parse\x20build\x20output\x20event:',_0x3d0176);}},_0x176789['onerror']=_0x2191d3=>{if(buildOutputEventSource!==_0x176789)return;console['error']('Build\x20output\x20stream\x20error:',_0x2191d3),_0x176789['readyState']===EventSource['CLOSED']&&stopBuildOutputStreaming();};}catch(_0x3a8b01){console['error']('Failed\x20to\x20start\x20build\x20output\x20streaming:',_0x3a8b01);}}function stopBuildOutputStreaming(){buildOutputEventSource&&(buildOutputEventSource['close'](),buildOutputEventSource=null);}async function loadBuildOutputForBuild(_0x5b842e){const _0x2ee693=state['selectedEnv'];showBuildOutputContainer(),clearBuildOutput(),scrollBuildOutputIntoView();const _0x593b0a=document['getElementById']('build-output-text');_0x593b0a&&(_0x593b0a['textContent']='Loading\x20build\x20output...');try{const _0x15b307=await API['get']('/build/output/'+_0x5b842e);if(_0x2ee693!==state['selectedEnv'])return;_0x15b307['output']?_0x593b0a&&(_0x593b0a['textContent']=_0x15b307['output']):_0x593b0a&&(_0x593b0a['textContent']='No\x20output\x20available\x20for\x20this\x20build.');}catch(_0x1c24f3){if(_0x2ee693!==state['selectedEnv'])return;console['error']('Failed\x20to\x20load\x20build\x20output:',_0x1c24f3),_0x593b0a&&(_0x593b0a['textContent']='Failed\x20to\x20load\x20build\x20output:\x20'+(_0x1c24f3['message']||'Unknown\x20error'));}}window['viewBuildOutput']=function(_0x5e365b){loadBuildOutputForBuild(_0x5e365b);},window['loadBuildHistory']=async function(){if(!state['selectedEnv'])return;const _0x3bcbfe=state['selectedEnv'],_0xf07d5=document['getElementById']('build-history-container');if(!_0xf07d5)return;try{_0xf07d5['innerHTML']='<p\x20class=\x22text-muted\x22>Loading\x20build\x20history...</p>';const _0x52651f=await API['get']('/environments/'+_0x3bcbfe+'/build-history?limit=20');if(_0x3bcbfe!==state['selectedEnv'])return;const _0x477545=_0x52651f['builds']||[];if(_0x477545['length']===0x0){_0xf07d5['innerHTML']='<p\x20class=\x22text-muted\x22>No\x20build\x20history\x20available\x20yet.\x20Build\x20this\x20environment\x20to\x20see\x20history.</p>';return;}_0xf07d5['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'+_0x477545['map'](_0x509fc6=>{const _0x22af96=new Date(_0x509fc6['timestamp']),_0x25d20c=_0x22af96['toLocaleString'](),_0x2413cc=formatDuration(_0x509fc6['duration']),_0xf5d89a=_0x509fc6['status']==='success'?'✅':'❌',_0x3b0e87=_0x509fc6['status']==='success'?'Success':'Failed',_0xe1fe36=_0x509fc6['status']==='success'?'var(--color-success)':'var(--color-error)',_0x2fa0b1=Utils['escapeHtml'](_0x509fc6['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'+_0xe1fe36+';\x22>'+_0xf5d89a+'\x20'+_0x3b0e87+'</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>'+_0x25d20c+'</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>'+_0x2413cc+'</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(_0x509fc6['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'+_0x2fa0b1+'\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(_0x4c51c6){if(_0x3bcbfe!==state['selectedEnv'])return;console['error']('Failed\x20to\x20load\x20build\x20history:',_0x4c51c6),_0xf07d5['innerHTML']='<p\x20class=\x22text-muted\x22\x20style=\x22color:\x20var(--color-error);\x22>Failed\x20to\x20load\x20build\x20history</p>';}},window['renderVolumeMounts']=function(_0x318199){const _0x13837b=document['getElementById']('volume-mounts-list'),_0x156422=_0x318199!==undefined?_0x318199:state['selectedEnvData']?.['volume_mounts']||[];if(!_0x13837b)return;if(_0x156422['length']===0x0){_0x13837b['innerHTML']='<p\x20class=\x22text-muted\x22>No\x20volume\x20mounts\x20configured.</p>';return;}_0x13837b['innerHTML']=_0x156422['map']((_0x5411a7,_0x142698)=>'\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'](_0x5411a7['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'+(_0x5411a7['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('+_0x142698+')\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'](_0x5411a7['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'](_0x5411a7['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('+_0x142698+')\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(_0x30a664=null){const _0x11af51=_0x30a664!==null?state['selectedEnvData']['volume_mounts'][_0x30a664]:null,_0x5509bd=_0x11af51!==null;Utils['showModal']({'title':_0x5509bd?'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'](_0x11af51?.['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'](_0x11af51?.['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'](_0x11af51?.['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'+(_0x11af51?.['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':_0x5509bd?'Save':'Add','className':'btn-primary','onClick':()=>{const _0x4cf7ea=document['getElementById']('mount-description')['value']['trim'](),_0x229eec=document['getElementById']('mount-host-path')['value']['trim'](),_0x4f7e26=document['getElementById']('mount-container-path')['value']['trim'](),_0x2d833a=document['getElementById']('mount-read-only')['checked'],_0x5b648e=document['getElementById']('volume-mount-error');_0x5b648e['style']['display']='none',_0x5b648e['textContent']='';if(!_0x229eec||!_0x4f7e26){_0x5b648e['textContent']='Host\x20path\x20and\x20container\x20path\x20are\x20required',_0x5b648e['style']['display']='block';return;}if(!_0x4f7e26['startsWith']('/')){_0x5b648e['textContent']='Container\x20path\x20must\x20be\x20absolute\x20(start\x20with\x20/)',_0x5b648e['style']['display']='block';return;}const _0x1ba789={'description':_0x4cf7ea,'host_path':_0x229eec,'container_path':_0x4f7e26,'read_only':_0x2d833a};!state['selectedEnvData']['volume_mounts']&&(state['selectedEnvData']['volume_mounts']=[]),_0x5509bd?state['selectedEnvData']['volume_mounts'][_0x30a664]=_0x1ba789:state['selectedEnvData']['volume_mounts']['push'](_0x1ba789),renderVolumeMounts(),state['hasUnsavedChanges']=!![],updateButtonStates(),Utils['hideModal'](),Utils['showToast']('Volume\x20mount\x20'+(_0x5509bd?'updated':'added'),'success');}}]});},window['editVolumeMount']=function(_0x5729cf){showVolumeMountDialog(_0x5729cf);},window['removeVolumeMount']=function(_0x3d39d6){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'][_0x3d39d6]['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'][_0x3d39d6]['host_path'])+'\x20→\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20'+Utils['escapeHtml'](state['selectedEnvData']['volume_mounts'][_0x3d39d6]['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'](_0x3d39d6,0x1),renderVolumeMounts(),state['hasUnsavedChanges']=!![],updateButtonStates(),Utils['hideModal'](),Utils['showToast']('Volume\x20mount\x20removed','success');}}]});};const accessTabState={'bindings':[],'roles':[],'teams':[],'users':[],'loaded':![]};async function loadAccessTab(){const _0x5be2b6=document['getElementById']('access-loading'),_0x1ce57f=document['getElementById']('access-empty'),_0x4fbf22=document['getElementById']('access-bindings-container'),_0x33dd77=document['getElementById']('access-add-binding-btn');if(!_0x5be2b6)return;_0x5be2b6['hidden']=![],_0x1ce57f['hidden']=!![],_0x4fbf22['style']['display']='none',document['getElementById']('access-add-form')['hidden']=!![];try{const [_0x1cfd53,_0x57995b]=await Promise['all']([API['getBindings']({'resource_type':'environment','resource_id':state['selectedEnv']}),API['getRoleDefinitions']()]);accessTabState['bindings']=_0x1cfd53['bindings']||[],accessTabState['roles']=_0x57995b['roles']||[];try{const _0x1109a7=await API['getTeams']();accessTabState['teams']=_0x1109a7['teams']||[];}catch{accessTabState['teams']=[];}try{const _0x4a8dcd=await API['getUsers']();accessTabState['users']=_0x4a8dcd['users']||[];}catch{accessTabState['users']=[];}accessTabState['loaded']=!![],_0x5be2b6['hidden']=!![],updateTabBadge('badge-access',accessTabState['bindings']['length']);accessTabState['bindings']['length']===0x0?_0x1ce57f['hidden']=![]:(_0x4fbf22['style']['display']='',renderAccessBindings());const _0x5c60ef=state['currentUser'];_0x5c60ef?.['hasEnvironmentsManageAccess']&&(_0x33dd77['hidden']=![]);}catch(_0x2bc6ac){_0x5be2b6['hidden']=!![],Utils['showToast']('Failed\x20to\x20load\x20access\x20bindings:\x20'+_0x2bc6ac['message'],'error');}}function renderAccessBindings(){const _0x3117f3=document['getElementById']('access-bindings-body');if(!_0x3117f3)return;const _0x5eeb59=state['currentUser']?.['hasEnvironmentsManageAccess'];_0x3117f3['innerHTML']=accessTabState['bindings']['map'](_0x298f3f=>{const _0x3a0acd=_0x298f3f['created_at']?new Date(_0x298f3f['created_at'])['toLocaleDateString']():'—';return'\x0a\x20\x20\x20\x20\x20\x20<tr>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<td>'+Utils['escapeHtml'](_0x298f3f['subject_name']||_0x298f3f['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'](_0x298f3f['subject_type'])+'</span></td>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<td>'+Utils['escapeHtml'](_0x298f3f['role_name']||_0x298f3f['role_id'])+'</td>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<td>'+Utils['escapeHtml'](_0x298f3f['created_by']||'—')+'</td>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<td\x20style=\x22white-space:\x20nowrap;\x22>'+_0x3a0acd+'</td>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<td>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20'+(_0x5eeb59?'<button\x20class=\x22btn-ghost\x20btn-small\x22\x20onclick=\x22window.removeAccessBinding(\x27'+_0x298f3f['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 _0x4961c1=document['getElementById']('access-subject-type'),_0x5b6c86=document['getElementById']('access-subject-id'),_0x4debf7=_0x4961c1?.['value'];if(!_0x5b6c86)return;const _0x2dcb05=new Set(accessTabState['bindings']['filter'](_0xcf9de2=>_0xcf9de2['subject_type']===_0x4debf7)['map'](_0x487cc3=>_0x487cc3['subject_id'])),_0xb01036=_0x4debf7==='team'?accessTabState['teams']['filter'](_0x1bd7ce=>!_0x2dcb05['has'](_0x1bd7ce['id'])):accessTabState['users']['filter'](_0x192ea7=>!_0x2dcb05['has'](_0x192ea7['id']));_0x5b6c86['innerHTML']=_0xb01036['length']?_0xb01036['map'](_0x16f01c=>{const _0x37dd61=_0x4debf7==='team'?_0x16f01c['name']:_0x16f01c['username']||_0x16f01c['name'];return'<option\x20value=\x22'+_0x16f01c['id']+'\x22>'+Utils['escapeHtml'](_0x37dd61)+'</option>';})['join'](''):'<option\x20value=\x22\x22>None\x20available</option>';}document['addEventListener']('DOMContentLoaded',()=>{document['getElementById']('access-add-binding-btn')?.['addEventListener']('click',()=>{const _0x15e99f=document['getElementById']('access-role-id');_0x15e99f&&(_0x15e99f['innerHTML']=accessTabState['roles']['map'](_0x560cca=>'<option\x20value=\x22'+_0x560cca['id']+'\x22>'+Utils['escapeHtml'](_0x560cca['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 _0x4056db=document['getElementById']('access-subject-type')['value'],_0x27f69b=document['getElementById']('access-subject-id')['value'],_0x3f1ca6=document['getElementById']('access-role-id')['value'];if(!_0x27f69b||!_0x3f1ca6||!state['selectedEnv'])return;const _0x148972=document['getElementById']('access-save-binding-btn');_0x148972['disabled']=!![],_0x148972['textContent']='Adding…';try{await API['createBinding']({'subject_type':_0x4056db,'subject_id':_0x27f69b,'role_id':_0x3f1ca6,'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(_0x357197){Utils['showToast'](_0x357197['message'],'error');}finally{_0x148972['disabled']=![],_0x148972['textContent']='Add\x20Binding';}});}),window['removeAccessBinding']=async function(_0x4a1bca){try{await API['deleteBinding'](_0x4a1bca),Utils['showToast']('Binding\x20removed','success'),await loadAccessTab();}catch(_0x18933c){Utils['showToast'](_0x18933c['message'],'error');}};
|