vibe64 0.1.52 → 0.1.53
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/bin/upgrade-state.js +975 -974
- package/dist/assets/{GithubBrowserTabs-D7DveB8M.js → GithubBrowserTabs-DG2nCSNW.js} +1 -1
- package/dist/assets/{Vibe64AuthSettingsButton-DDArM5uw.js → Vibe64AuthSettingsButton-9OLqOZao.js} +1 -1
- package/dist/assets/{Vibe64DashboardShell-Ab65VYSS.js → Vibe64DashboardShell-hWNziCur.js} +1 -1
- package/dist/assets/{Vibe64DatabaseWorkspace-DHLt5bST.js → Vibe64DatabaseWorkspace-TqXOZJpI.js} +1 -1
- package/dist/assets/{Vibe64FileArea-DCqpclYH.js → Vibe64FileArea-BljhpApn.js} +1 -1
- package/dist/assets/{Vibe64OutputControls-BPDF1XfG.js → Vibe64OutputControls-Dk_DWuFb.js} +1 -1
- package/dist/assets/{Vibe64RepositoryWorkspace-C107tX19.js → Vibe64RepositoryWorkspace-CDnsAlIz.js} +1 -1
- package/dist/assets/{Vibe64SessionFiles-BKJ1Qem_.js → Vibe64SessionFiles-DjeEvtpc.js} +1 -1
- package/dist/assets/{Vibe64UiStoryboardView-CJajdYSt.js → Vibe64UiStoryboardView-idZz86bx.js} +1 -1
- package/dist/assets/{_sessionId_-BaNhTTVN.js → _sessionId_-DLLJsju9.js} +1 -1
- package/dist/assets/{_slug_-D7mzZsk3.css → _slug_-BRPxP_Yn.css} +1 -1
- package/dist/assets/{_slug_-nHO3Bg-f.js → _slug_-JgF_FQ6F.js} +7 -7
- package/dist/assets/{app-DbGzTUVN.js → app-Cuw9E-ru.js} +1 -1
- package/dist/assets/{changes-D7NjgKWf.js → changes-CoR0-8EL.js} +1 -1
- package/dist/assets/{conversation-DV8qCsqw.js → conversation-B1UoWMaA.js} +1 -1
- package/dist/assets/{dashboard-DL95BPsz.js → dashboard-DnuIxR1s.js} +1 -1
- package/dist/assets/{english-definitions-ChTTs3cC.js → english-definitions-By4b_Yl2.js} +1 -1
- package/dist/assets/{env-BdJvhqF-.js → env-KUPen-sS.js} +1 -1
- package/dist/assets/{history-DmGNxMVh.js → history-S_cJLehJ.js} +1 -1
- package/dist/assets/{index-BXZp5ztx.js → index-CNkd6O5t.js} +3 -3
- package/dist/assets/{integrations-DAYe7RkJ.js → integrations-Dmbbbs_A.js} +1 -1
- package/dist/assets/{issues-D_zOo2IW.js → issues-EeBajY3I.js} +1 -1
- package/dist/assets/{learning-ilyEoffw.js → learning-DDRM-FoP.js} +1 -1
- package/dist/assets/{project-files-CJWdFXh4.js → project-files-CQ1BLaaP.js} +1 -1
- package/dist/assets/{publish-D728amkk.js → publish-bvwc-KoQ.js} +1 -1
- package/dist/assets/{pull-requests-BsbM-5MA.js → pull-requests-Ce1ECyuL.js} +1 -1
- package/dist/assets/{repository-C8NwO4bj.js → repository-CK3osHmp.js} +1 -1
- package/dist/assets/{settings-DTLY7ZT5.js → settings-PQGw4vfn.js} +1 -1
- package/dist/assets/{useArchivedVibe64Sessions-Cc9GdKlD.js → useArchivedVibe64Sessions-BAQjW01a.js} +1 -1
- package/dist/assets/{useAssistantAttachments-DJKqt1hL.js → useAssistantAttachments-DJWb1KdF.js} +1 -1
- package/dist/assets/{useVibe64ConversationLog-Co0DhC3R.js → useVibe64ConversationLog-CjUZuvV7.js} +1 -1
- package/dist/assets/{useVibe64SessionData-D7fBm9xf.js → useVibe64SessionData-CbY_B5mC.js} +1 -1
- package/dist/assets/{vibe64SessionFocus-8fHAeoyU.js → vibe64SessionFocus-Bd3JuuZe.js} +1 -1
- package/dist/index.html +4 -4
- package/docs/colleague-usage/conversation-context.md +3 -1
- package/docs/colleague-usage/temporary-chats.md +26 -1
- package/docs/colleague-usage/workspace-preparation.md +17 -0
- package/node_modules/@jskit-ai/assistant-core/locales/en.json +1 -0
- package/node_modules/@jskit-ai/assistant-core/package.json +1 -1
- package/node_modules/@jskit-ai/assistant-runtime/package.json +1 -1
- package/node_modules/@jskit-ai/assistant-voice/package.json +1 -1
- package/node_modules/@jskit-ai/connector-google-calendar/package.json +1 -1
- package/node_modules/@jskit-ai/connectors-catalog/package.json +1 -1
- package/node_modules/@jskit-ai/connectors-core/locales/en.json +1 -0
- package/node_modules/@jskit-ai/connectors-core/package.json +1 -1
- package/node_modules/@local/vibe64-genesis/bin/vibe64-genesis-host-context +43 -43
- package/node_modules/@local/vibe64-genesis/src/server/index.js +189 -182
- package/node_modules/@local/vibe64-genesis/src/server/promptContext.js +68 -61
- package/node_modules/@local/vibe64-terminals/src/server/sessionWorkOperationCommand.js +532 -532
- package/package.json +7 -7
- package/server.bundle.mjs +28835 -28791
|
@@ -1 +1 @@
|
|
|
1
|
-
import{t as VChip,x as VIcon}from"./VChip-BRhZ1px1.js";import{D as createVNode,E as createTextVNode,En as toValue,Ht as watch,On as unref,_ as createBaseVNode,b as createElementBlock,bt as renderList,g as computed,mt as openBlock,o as Fragment,qt as withCtx,tr as toDisplayString,v as createBlock,vn as ref,wt as resolveDynamicComponent,xt as renderSlot,y as createCommentVNode}from"./runtime-core.esm-bundler-DGXg_mpN.js";import{t as useEndpointResource}from"./useEndpointResource-BaT7yEQ5.js";import{g as useRoute}from"./useApi-BPuI6ZR9-CFWU1m37.js";import{t as VTextField}from"./VTextField-Dmm1M-tz.js";import{s as ROUTE_VISIBILITY_PUBLIC}from"./errorMessageHelpers-KoewcxJa.js";import{In as mdiLinkVariant,Ot as mdiDownload,Pt as mdiFileCogOutline,gr as mdiRefresh}from"./mdi-DwGK7nOu.js";import{t as VBtn}from"./VBtn-B6ryRXW-.js";import{t as VAlert}from"./VAlert-CBpSKTfy.js";import{t as VCheckbox}from"./VCheckbox-Bybg_FNE.js";import{t as VDialog}from"./VDialog-CYfdjZRu.js";import{i as VCardTitle,n as VCardText,o as VCardActions,t as VCard}from"./VCard-BzaViLPx.js";import{t as VSpacer}from"./VSpacer-B5ip6FSG.js";import{i as VExpansionPanelText,n as VExpansionPanel,r as VExpansionPanelTitle,t as VExpansionPanels}from"./VExpansionPanels-vKIuai-q.js";import{t as _plugin_vue_export_helper_default}from"./_plugin-vue_export-helper-DNW4j-dv.js";import{t as useCommand}from"./useCommand-DGM7l3ja.js";import{D as envQueryKey,S as VIBE64_PROJECT_CHANGED_EVENT,a as ENV_ENDPOINT,b as VIBE64_ENV_USER_VALUES_API_SUFFIX,i as ENV_DOWNLOAD_ENDPOINT,o as ENV_SECRET_REVEAL_ENDPOINT,s as ENV_USER_VALUES_ENDPOINT,v as VIBE64_ENV_DOWNLOAD_API_SUFFIX,y as VIBE64_ENV_SECRET_REVEAL_API_SUFFIX}from"./studioGateApi-1C9rkDqt.js";import{n as useVibe64ProjectSlug}from"./useVibe64ProjectScope-C4-hpbwc.js";import{$ as VTable,X as VTab,Y as VTabs}from"./index-BXZp5ztx.js";import{t as Vibe64AsyncModuleState_default}from"./Vibe64AsyncModuleState-DcRTYHoG.js";import{n as saveBlobAsFile}from"./vibe64AttachmentDownload-Cngh16Hf.js";import{n as useVibe64SessionSelection}from"./useVibe64SessionSelection-BJxwH8Z7.js";import{t as Vibe64DashboardPageHeader_default}from"./Vibe64DashboardPageHeader-BKo3ufyj.js";import{n as savedEnvValueEnvironment,r as useVibe64SavedEnvValues,t as recordIsSavedEnvValue}from"./vibe64SavedEnvValues-9FX5u8Ht.js";var _hoisted_1$3={key:0,class:`runtime-config-records-table__actions-column`};var _hoisted_2$2={key:0};var _hoisted_3$2=[`onClick`];var _hoisted_4$2=[`title`];var _hoisted_5$2={class:`runtime-config-records-table__linked-label`};var _hoisted_6$1={key:1,class:`runtime-config-records-table__secret-value`};var _hoisted_7={key:0};var _hoisted_8={key:0,class:`runtime-config-records-table__saved-actions`};var _hoisted_9={key:1,class:`runtime-config-records-table__edit`};var _hoisted_10={class:`runtime-config-records-table__edit-actions`};var _sfc_main$3={__name:`RuntimeConfigRecordsTable`,props:{environmentLabel:{default:`environment`,type:String},onRemoveRecord:{default:null,type:Function},onSaveRecord:{default:null,type:Function},records:{default:()=>[],type:Array},revealedSecrets:{default:()=>({}),type:Object},saveBusy:{default:false,type:Boolean},secretRevealBusyKey:{default:``,type:String},secretRevealEnabled:{default:false,type:Boolean},showActions:{default:false,type:Boolean}},emits:[`hide-secret`,`reveal-secret`,`saved-value-changed`],setup(__props,{emit:__emit}){const emit=__emit;const props=__props;const draftValues=ref({});const pendingRow=ref(null);const rowErrors=ref({});const savedRowValues=ref({});watch(()=>props.records,()=>{savedRowValues.value={}});const writeBusy=computed(()=>props.saveBusy||Boolean(pendingRow.value));const projectSlug=useVibe64ProjectSlug();const savedValues=useVibe64SavedEnvValues();function recordKey(record={}){return`${record.scope||props.environmentLabel}:${record.key||``}`}function draftTouched(record={}){return Object.hasOwn(draftValues.value,recordKey(record))}function draftValue(record={}){return draftTouched(record)?draftValues.value[recordKey(record)]:``}function setDraftValue(record={},value=``){draftValues.value={...draftValues.value,[recordKey(record)]:String(value??``)};setRowError(recordKey(record),``)}function rowPending(record={},action=``){return pendingRow.value?.key===recordKey(record)&&pendingRow.value.action===action}function rowError(record={}){return rowErrors.value[recordKey(record)]||``}function setRowError(key=``,message=``){const{[key]:_previous,...others}=rowErrors.value;rowErrors.value=message?{...others,[key]:message}:others}async function runRowWrite(record,action,write,fallbackError){const key=recordKey(record);pendingRow.value={action,key};setRowError(key,``);try{await write();return true}catch(error){setRowError(key,String(error?.message||fallbackError));return false}finally{pendingRow.value=null}}function recordValueLabel(record={}){const saved=Object.hasOwn(savedRowValues.value,recordKey(record));if(record.secret)return secretIsRevealed(record)?String(props.revealedSecrets[record.key]??``):record.valuePresent||saved?`********`:``;return String(saved?savedRowValues.value[recordKey(record)]:record.value??``)}function secretIsRevealed(record={}){return Boolean(record.key)&&Object.hasOwn(props.revealedSecrets,record.key)}function secretVisibilityAction(record={}){return secretIsRevealed(record)?`Hide`:`Reveal`}function secretVisibilityLabel(record={}){return`${secretVisibilityAction(record)} ${record.key||`secret`}`}function toggleSecretVisibility(record={}){emit(secretIsRevealed(record)?`hide-secret`:`reveal-secret`,record)}async function saveRecord(record={}){if(!props.showActions||!draftTouched(record)||writeBusy.value)return false;const key=recordKey(record);const value=draftValue(record);const saved=await runRowWrite(record,`save`,()=>props.onSaveRecord?.({record,value}),`${record.key||`The value`} could not be saved.`);if(saved)savedRowValues.value={...savedRowValues.value,[key]:value};if(saved&&draftValues.value[key]===value){const{[key]:_saved,...others}=draftValues.value;draftValues.value=others}return saved}async function removeRecord(record={}){if(!props.showActions||writeBusy.value)return false;return runRowWrite(record,`remove`,()=>props.onRemoveRecord?.(record),`${record.key||`The value`} could not be removed.`)}async function copyKey(key=``){const text=String(key||``);if(typeof navigator!==`undefined`&&navigator.clipboard&&text)await navigator.clipboard.writeText(text)}return(_ctx,_cache)=>{return openBlock(),createBlock(VTable,{class:`runtime-config-records-table`,density:`compact`},{default:withCtx(()=>[createBaseVNode(`colgroup`,null,[_cache[2]||(_cache[2]=createBaseVNode(`col`,{class:`runtime-config-records-table__key-column`},null,-1)),_cache[3]||(_cache[3]=createBaseVNode(`col`,{class:`runtime-config-records-table__value-column`},null,-1)),__props.showActions?(openBlock(),createElementBlock(`col`,_hoisted_1$3)):createCommentVNode(``,true)]),createBaseVNode(`thead`,null,[createBaseVNode(`tr`,null,[_cache[4]||(_cache[4]=createBaseVNode(`th`,null,`Key`,-1)),_cache[5]||(_cache[5]=createBaseVNode(`th`,null,`Value`,-1)),__props.showActions?(openBlock(),createElementBlock(`th`,_hoisted_2$2,`Actions`)):createCommentVNode(``,true)])]),createBaseVNode(`tbody`,null,[(openBlock(true),createElementBlock(Fragment,null,renderList(__props.records,record=>{return openBlock(),createElementBlock(`tr`,{key:recordKey(record)},[createBaseVNode(`td`,null,[createBaseVNode(`button`,{class:`runtime-config-records-table__key`,type:`button`,onClick:$event=>copyKey(record.key)},toDisplayString(record.key),9,_hoisted_3$2)]),createBaseVNode(`td`,null,[unref(recordIsSavedEnvValue)(record)?(openBlock(),createElementBlock(`div`,{key:0,class:`runtime-config-records-table__linked`,title:record.label},[createVNode(VIcon,{class:`runtime-config-records-table__linked-icon`,icon:unref(mdiLinkVariant),size:`16`},null,8,[`icon`]),createBaseVNode(`span`,_hoisted_5$2,toDisplayString(record.label||`Linked`),1)],8,_hoisted_4$2)):record.secret?(openBlock(),createElementBlock(`div`,_hoisted_6$1,[createBaseVNode(`code`,null,toDisplayString(recordValueLabel(record)),1),__props.secretRevealEnabled&&record.valuePresent?(openBlock(),createBlock(VBtn,{key:0,"aria-label":secretVisibilityLabel(record),disabled:Boolean(__props.secretRevealBusyKey)&&__props.secretRevealBusyKey!==record.key,loading:__props.secretRevealBusyKey===record.key,size:`x-small`,type:`button`,variant:`text`,onClick:$event=>toggleSecretVisibility(record)},{default:withCtx(()=>[createTextVNode(toDisplayString(secretVisibilityAction(record)),1)]),_:2},1032,[`aria-label`,`disabled`,`loading`,`onClick`])):createCommentVNode(``,true)])):(openBlock(),createElementBlock(Fragment,{key:2},[createTextVNode(toDisplayString(recordValueLabel(record)),1)],64))]),__props.showActions?(openBlock(),createElementBlock(`td`,_hoisted_7,[unref(recordIsSavedEnvValue)(record)?(openBlock(),createElementBlock(`div`,_hoisted_8,[unref(savedValues)?(openBlock(),createBlock(resolveDynamicComponent(unref(savedValues).component),{key:0,environment:unref(savedEnvValueEnvironment)(__props.environmentLabel),placement:`env-row`,"project-slug":unref(projectSlug),secret:record.secret===true,variable:record.key,onChanged:_cache[0]||(_cache[0]=$event=>_ctx.$emit(`saved-value-changed`))},null,40,[`environment`,`project-slug`,`secret`,`variable`])):createCommentVNode(``,true)])):(openBlock(),createElementBlock(`div`,_hoisted_9,[createVNode(VTextField,{"error-messages":rowError(record),"hide-details":!rowError(record),"model-value":draftValue(record),type:record.secret?`password`:`text`,density:`compact`,label:`New value`,spellcheck:`false`,variant:`outlined`,"onUpdate:modelValue":$event=>setDraftValue(record,$event)},null,8,[`error-messages`,`hide-details`,`model-value`,`type`,`onUpdate:modelValue`]),createBaseVNode(`span`,_hoisted_10,[unref(savedValues)?(openBlock(),createBlock(resolveDynamicComponent(unref(savedValues).component),{key:0,environment:unref(savedEnvValueEnvironment)(__props.environmentLabel),"has-value":record.valuePresent===true,placement:`env-row`,"project-slug":unref(projectSlug),secret:record.secret===true,variable:record.key,onChanged:_cache[1]||(_cache[1]=$event=>_ctx.$emit(`saved-value-changed`))},null,40,[`environment`,`has-value`,`project-slug`,`secret`,`variable`])):createCommentVNode(``,true),createVNode(VBtn,{disabled:!draftTouched(record)||writeBusy.value&&!rowPending(record,`save`),loading:rowPending(record,`save`),size:`small`,type:`button`,variant:`tonal`,onClick:$event=>saveRecord(record)},{default:withCtx(()=>[..._cache[6]||(_cache[6]=[createTextVNode(` Save `,-1)])]),_:1},8,[`disabled`,`loading`,`onClick`]),createVNode(VBtn,{disabled:writeBusy.value&&!rowPending(record,`remove`),loading:rowPending(record,`remove`),size:`small`,type:`button`,variant:`text`,onClick:$event=>removeRecord(record)},{default:withCtx(()=>[..._cache[7]||(_cache[7]=[createTextVNode(` Remove `,-1)])]),_:1},8,[`disabled`,`loading`,`onClick`])])]))])):createCommentVNode(``,true)])}),128))])]),_:1})}}};var RuntimeConfigRecordsTable_default=_plugin_vue_export_helper_default(_sfc_main$3,[[`__scopeId`,`data-v-08ec4e93`]]);var _hoisted_1$2={class:`runtime-config-records`};var _hoisted_2$1={class:`runtime-config-records__section`};var _hoisted_3$1={class:`runtime-config-records__heading`};var _hoisted_4$1={key:1,class:`runtime-config-records__empty`};var _hoisted_5$1={class:`runtime-config-records__system-title`};var _sfc_main$2={__name:`RuntimeConfigRecordsView`,props:{editableEmptyText:{default:`No user Env values.`,type:String},editableTitle:{default:`User values`,type:String},environmentLabel:{default:`environment`,type:String},onRemoveRecord:{default:null,type:Function},onSaveRecord:{default:null,type:Function},readonly:{default:false,type:Boolean},records:{default:()=>[],type:Array},revealedSecrets:{default:()=>({}),type:Object},saveBusy:{default:false,type:Boolean},secretRevealBusyKey:{default:``,type:String},secretRevealEnabled:{default:false,type:Boolean},systemTitle:{default:`System values`,type:String}},emits:[`hide-secret`,`reveal-secret`,`saved-value-changed`],setup(__props){const props=__props;const records=computed(()=>Array.isArray(props.records)?props.records:[]);const editableRecords=computed(()=>records.value.filter(recordEditable));const systemRecords=computed(()=>records.value.filter(record=>!recordEditable(record)));function recordEditable(record={}){return record.editable===true||recordIsSavedEnvValue(record)}return(_ctx,_cache)=>{return openBlock(),createElementBlock(`section`,_hoisted_1$2,[createBaseVNode(`section`,_hoisted_2$1,[createBaseVNode(`div`,_hoisted_3$1,[createBaseVNode(`h2`,null,toDisplayString(__props.editableTitle),1),createVNode(VChip,{size:`x-small`,variant:`tonal`},{default:withCtx(()=>[createTextVNode(toDisplayString(editableRecords.value.length),1)]),_:1})]),editableRecords.value.length?(openBlock(),createBlock(RuntimeConfigRecordsTable_default,{key:0,"environment-label":__props.environmentLabel,records:editableRecords.value,"revealed-secrets":__props.revealedSecrets,"save-busy":__props.saveBusy,"secret-reveal-busy-key":__props.secretRevealBusyKey,"secret-reveal-enabled":__props.secretRevealEnabled,"show-actions":!__props.readonly,"on-remove-record":__props.onRemoveRecord,"on-save-record":__props.onSaveRecord,onHideSecret:_cache[0]||(_cache[0]=$event=>_ctx.$emit(`hide-secret`,$event)),onRevealSecret:_cache[1]||(_cache[1]=$event=>_ctx.$emit(`reveal-secret`,$event)),onSavedValueChanged:_cache[2]||(_cache[2]=$event=>_ctx.$emit(`saved-value-changed`))},null,8,[`environment-label`,`records`,`revealed-secrets`,`save-busy`,`secret-reveal-busy-key`,`secret-reveal-enabled`,`show-actions`,`on-remove-record`,`on-save-record`])):(openBlock(),createElementBlock(`p`,_hoisted_4$1,toDisplayString(__props.editableEmptyText),1))]),systemRecords.value.length?(openBlock(),createBlock(VExpansionPanels,{key:0,class:`runtime-config-records__system`,variant:`accordion`},{default:withCtx(()=>[createVNode(VExpansionPanel,null,{default:withCtx(()=>[createVNode(VExpansionPanelTitle,null,{default:withCtx(()=>[createBaseVNode(`span`,_hoisted_5$1,[createTextVNode(toDisplayString(__props.systemTitle)+` `,1),createVNode(VChip,{size:`x-small`,variant:`tonal`},{default:withCtx(()=>[createTextVNode(toDisplayString(systemRecords.value.length),1)]),_:1})])]),_:1}),createVNode(VExpansionPanelText,null,{default:withCtx(()=>[createVNode(RuntimeConfigRecordsTable_default,{"environment-label":__props.environmentLabel,records:systemRecords.value,"revealed-secrets":__props.revealedSecrets,"secret-reveal-busy-key":__props.secretRevealBusyKey,"secret-reveal-enabled":__props.secretRevealEnabled,onHideSecret:_cache[3]||(_cache[3]=$event=>_ctx.$emit(`hide-secret`,$event)),onRevealSecret:_cache[4]||(_cache[4]=$event=>_ctx.$emit(`reveal-secret`,$event))},null,8,[`environment-label`,`records`,`revealed-secrets`,`secret-reveal-busy-key`,`secret-reveal-enabled`])]),_:1})]),_:1})]),_:1})):createCommentVNode(``,true)])}}};var RuntimeConfigRecordsView_default=_plugin_vue_export_helper_default(_sfc_main$2,[[`__scopeId`,`data-v-c614f692`]]);function useRuntimeConfigDotenvDownload({fileName,readContent}={}){if(typeof readContent!==`function`)throw new TypeError(`useRuntimeConfigDotenvDownload requires readContent().`);const downloadBusy=ref(false);const downloadError=ref(``);async function downloadDotenv(){if(downloadBusy.value)return false;downloadBusy.value=true;downloadError.value=``;try{const content=await readContent();if(typeof content!==`string`)return false;saveBlobAsFile(new Blob([content],{type:`text/plain;charset=utf-8`}),String(toValue(fileName)));return true}catch(error){downloadError.value=String(error?.message||`The .env file could not be downloaded.`);return false}finally{downloadBusy.value=false}}return{downloadBusy,downloadDotenv,downloadError}}function runtimeConfigSecretKey(value={}){return String(typeof value===`string`?value:value?.key||``).trim()}function useRuntimeConfigSecretReveal({revealValue}={}){if(typeof revealValue!==`function`)throw new TypeError(`useRuntimeConfigSecretReveal requires revealValue().`);const revealedSecrets=ref({});const secretRevealBusyKey=ref(``);async function revealSecret(record={}){const key=runtimeConfigSecretKey(record);if(!key||secretRevealBusyKey.value)return false;secretRevealBusyKey.value=key;try{const value=await revealValue(key,record);if(value===void 0||value===null)return false;revealedSecrets.value={...revealedSecrets.value,[key]:String(value)};return true}finally{secretRevealBusyKey.value=``}}function hideSecret(record={}){const key=runtimeConfigSecretKey(record);if(!key||!Object.hasOwn(revealedSecrets.value,key))return false;const next={...revealedSecrets.value};delete next[key];revealedSecrets.value=next;return true}function clearRevealedSecrets(){revealedSecrets.value={}}return{clearRevealedSecrets,hideSecret,revealedSecrets,revealSecret,secretRevealBusyKey}}var _hoisted_1$1={class:`env-panel`};var _hoisted_2={key:3,class:`env-panel__expected`};var _hoisted_3={class:`env-panel__section-heading env-panel__section-heading--inline`};var _hoisted_4={class:`env-panel__expected-keys`};var _hoisted_5={class:`env-panel__add`};var _hoisted_6={key:1,class:`env-panel__add-error`,role:`alert`};var PROJECT_ENV_TAB=`dev`;var PROJECT_ENVIRONMENT=`dev`;var PROJECT_ENVIRONMENT_LABEL=`development`;var _sfc_main$1={__name:`EnvPanel`,setup(__props){const projectSlug=useVibe64ProjectSlug();const selectedSessionId=useVibe64SessionSelection({projectSlug}).selectedId;const activeTab=ref(PROJECT_ENV_TAB);const savedValues=useVibe64SavedEnvValues();const newValue=ref(emptyNewValue());const route=useRoute();watch(()=>[route.query.prefillKey,route.query.prefillValue,route.query.prefillSecret],([key,value,secret])=>{if(typeof key!==`string`||!/^[A-Z_][A-Z0-9_]*$/u.test(key)||key.length>200)return;if(secret===`true`)newValue.value={key,value:``,secret:true};else if(value===void 0||typeof value===`string`&&value.length<=4096)newValue.value={key,value:value??``,secret:false}},{immediate:true});const pendingRemoval=ref(null);const envResource=useEndpointResource({fallbackLoadError:`Env could not load.`,path:ENV_ENDPOINT,queryKey:computed(()=>[...envQueryKey(`app`,ROUTE_VISIBILITY_PUBLIC,projectSlug.value),PROJECT_ENVIRONMENT,selectedSessionId.value||`baseline`]),readQuery:computed(()=>({environment:PROJECT_ENVIRONMENT,...selectedSessionId.value?{sessionId:selectedSessionId.value}:{}})),realtime:{event:VIBE64_PROJECT_CHANGED_EVENT},refreshOnPull:true,requestRecoveryLabel:`Env`});const saveCommand=useCommand({access:`never`,apiSuffix:VIBE64_ENV_USER_VALUES_API_SUFFIX,buildCommandOptions:()=>({method:`PUT`,path:ENV_USER_VALUES_ENDPOINT}),buildRawPayload:(_model,{context})=>({environment:PROJECT_ENVIRONMENT,...selectedSessionId.value?{sessionId:selectedSessionId.value}:{},values:context.values||{}}),fallbackRunError:`Env value could not be saved.`,messages:{error:`Env value could not be saved.`,success:`Env saved.`},ownershipFilter:ROUTE_VISIBILITY_PUBLIC,placementSource:`vibe64.env.user-values.save`,surfaceId:`app`,writeMethod:`PUT`});const revealCommand=useCommand({access:`never`,apiSuffix:VIBE64_ENV_SECRET_REVEAL_API_SUFFIX,buildCommandOptions:()=>({method:`POST`,path:ENV_SECRET_REVEAL_ENDPOINT}),buildRawPayload:(_model,{context})=>({environment:PROJECT_ENVIRONMENT,key:context.key,...selectedSessionId.value?{sessionId:selectedSessionId.value}:{}}),fallbackRunError:`Env secret could not be revealed.`,messages:{error:`Env secret could not be revealed.`},ownershipFilter:ROUTE_VISIBILITY_PUBLIC,placementSource:`vibe64.env.secret.reveal`,suppressSuccessMessage:true,surfaceId:`app`,writeMethod:`POST`});const{clearRevealedSecrets,hideSecret,revealedSecrets,revealSecret,secretRevealBusyKey}=useRuntimeConfigSecretReveal({async revealValue(key){const response=await revealCommand.run({key});return response?.ok===false?null:response?.value}});const downloadCommand=useCommand({access:`never`,apiSuffix:VIBE64_ENV_DOWNLOAD_API_SUFFIX,buildCommandOptions:()=>({method:`POST`,path:ENV_DOWNLOAD_ENDPOINT}),buildRawPayload:()=>({environment:PROJECT_ENVIRONMENT,...selectedSessionId.value?{sessionId:selectedSessionId.value}:{}}),fallbackRunError:`Env could not be downloaded.`,messages:{error:`Env could not be downloaded.`},ownershipFilter:ROUTE_VISIBILITY_PUBLIC,placementSource:`vibe64.env.download`,suppressSuccessMessage:true,surfaceId:`app`,writeMethod:`POST`});const{downloadBusy,downloadDotenv,downloadError}=useRuntimeConfigDotenvDownload({fileName:()=>`${projectSlug.value}-${PROJECT_ENVIRONMENT_LABEL}.env`,async readContent(){return(await downloadCommand.run())?.content}});watch([projectSlug,selectedSessionId],()=>{clearRevealedSecrets();downloadError.value=``;addError.value=``});const env=computed(()=>envResource.data.value?.env||{});const envConfigSourceLabel=computed(()=>String(env.value?.configSource?.label||``));const envInitialLoading=computed(()=>envResource.isInitialLoading.value===true);const refreshBusy=ref(false);const addBusy=ref(false);const addError=ref(``);const removeError=ref(``);const envLoadError=computed(()=>String(envResource.loadError.value||``));const envUnavailable=computed(()=>Boolean(env.value?.unavailable));const envUnavailableMessage=computed(()=>String(env.value?.unavailable?.message||`Project Env is unavailable. Fix the project configuration and try again.`));const saveBusy=computed(()=>saveCommand.isRunning===true);const removeConfirmOpen=computed({get:()=>Boolean(pendingRemoval.value),set:open=>{if(!open&&!saveBusy.value)pendingRemoval.value=null}});const pendingRemovalKey=computed(()=>String(pendingRemoval.value?.key||``));const projectEnvTabActive=computed(()=>activeTab.value===PROJECT_ENV_TAB);const records=computed(()=>Array.isArray(env.value?.records)?env.value.records:[]);const existingNewValue=computed(()=>records.value.some(record=>record.key===String(newValue.value.key||``).trim()&&record.valuePresent===true));const missingRecords=computed(()=>records.value.filter(recordMissing));const expectedMissingRecords=computed(()=>missingRecords.value.filter(recordEditable));const environmentLabel=PROJECT_ENVIRONMENT_LABEL;function emptyNewValue(){return{key:``,secret:true,value:``}}function recordEditable(record={}){return record.editable===true}function recordMissing(record={}){return record.valuePresent!==true&&(record.missing===true||Array.isArray(record.requiredFor)&&record.requiredFor.length>0)}function selectExpectedRecord(record={}){const key=String(record.key||``).trim();if(!key)return;newValue.value={key,secret:record.secret===true,value:``}}async function refresh(){refreshBusy.value=true;try{await reloadEnv()}finally{refreshBusy.value=false}}async function reloadEnv(){clearRevealedSecrets();await envResource.reload()}async function saveRecord({record={},value=``}={}){if(!recordEditable(record))return;await saveValues({[record.key]:{secret:record.secret===true,value}},{waitForRefresh:false})}function requestRemoveRecord(record={}){if(!recordEditable(record))return;removeError.value=``;pendingRemoval.value=record}function cancelRemoveRecord(){if(!saveBusy.value)pendingRemoval.value=null}async function confirmRemoveRecord(){const record=pendingRemoval.value;if(!recordEditable(record)){pendingRemoval.value=null;return}removeError.value=``;try{await saveValues({[record.key]:{remove:true}});pendingRemoval.value=null}catch(error){removeError.value=String(error?.message||`${record.key} could not be removed.`)}}async function saveNewValue(){const key=String(newValue.value.key||``).trim();if(!key)return;addBusy.value=true;addError.value=``;try{await saveValues({[key]:{secret:newValue.value.secret===true,value:newValue.value.value}});newValue.value=emptyNewValue()}catch(error){addError.value=String(error?.message||`${key} could not be saved.`)}finally{addBusy.value=false}}async function saveValues(values={},{waitForRefresh=true}={}){for(const key of Object.keys(values))hideSecret(key);await saveCommand.run({values});const refreshed=envResource.reload();if(waitForRefresh)await refreshed}async function savedValueChanged(){newValue.value=emptyNewValue();await reloadEnv()}function reloadPage(){if(typeof window!==`undefined`)window.location.reload()}return(_ctx,_cache)=>{return openBlock(),createElementBlock(`section`,_hoisted_1$1,[createVNode(Vibe64DashboardPageHeader_default,{description:`Values supplied to this project's development processes.`,icon:unref(mdiFileCogOutline),title:`Env`},{meta:withCtx(()=>[envConfigSourceLabel.value?(openBlock(),createBlock(VChip,{key:0,class:`env-panel__source`,label:``,size:`small`,variant:`tonal`},{default:withCtx(()=>[createTextVNode(toDisplayString(envConfigSourceLabel.value),1)]),_:1})):createCommentVNode(``,true)]),actions:withCtx(()=>[projectEnvTabActive.value?(openBlock(),createElementBlock(Fragment,{key:0},[createVNode(VBtn,{disabled:envInitialLoading.value,loading:unref(downloadBusy),"prepend-icon":unref(mdiDownload),rounded:`pill`,type:`button`,variant:`tonal`,onClick:unref(downloadDotenv)},{default:withCtx(()=>[..._cache[6]||(_cache[6]=[createTextVNode(` Download .env `,-1)])]),_:1},8,[`disabled`,`loading`,`prepend-icon`,`onClick`]),createVNode(VBtn,{loading:refreshBusy.value,"prepend-icon":unref(mdiRefresh),rounded:`pill`,type:`button`,variant:`tonal`,onClick:refresh},{default:withCtx(()=>[..._cache[7]||(_cache[7]=[createTextVNode(` Refresh `,-1)])]),_:1},8,[`loading`,`prepend-icon`])],64)):createCommentVNode(``,true),renderSlot(_ctx.$slots,`tab-actions`,{activeTab:activeTab.value},void 0,true)]),_:3},8,[`icon`]),createVNode(VTabs,{modelValue:activeTab.value,"onUpdate:modelValue":_cache[0]||(_cache[0]=$event=>activeTab.value=$event),class:`env-panel__tabs`,color:`primary`,density:`comfortable`},{default:withCtx(()=>[createVNode(VTab,{value:PROJECT_ENV_TAB},{default:withCtx(()=>[..._cache[8]||(_cache[8]=[createTextVNode(`Development`,-1)])]),_:1}),renderSlot(_ctx.$slots,`tabs`,{},void 0,true)]),_:3},8,[`modelValue`]),projectEnvTabActive.value&&(envInitialLoading.value||envLoadError.value)?(openBlock(),createBlock(Vibe64AsyncModuleState_default,{key:0,label:`Env`,loading:envInitialLoading.value,message:envLoadError.value||`Loading Env.`,"min-height":`12rem`,onReload:reloadPage,onRetry:refresh},null,8,[`loading`,`message`])):projectEnvTabActive.value?(openBlock(),createElementBlock(Fragment,{key:1},[unref(downloadError)?(openBlock(),createBlock(VAlert,{key:0,class:`env-panel__alert`,closable:``,density:`compact`,type:`error`,variant:`tonal`,"onClick:close":_cache[1]||(_cache[1]=$event=>downloadError.value=``)},{default:withCtx(()=>[createTextVNode(toDisplayString(unref(downloadError)),1)]),_:1})):createCommentVNode(``,true),envUnavailable.value?(openBlock(),createBlock(VAlert,{key:1,class:`env-panel__alert`,type:`info`,variant:`tonal`,density:`compact`},{default:withCtx(()=>[createTextVNode(toDisplayString(envUnavailableMessage.value),1)]),_:1})):createCommentVNode(``,true),missingRecords.value.length?(openBlock(),createBlock(VAlert,{key:2,class:`env-panel__alert`,type:`warning`,variant:`tonal`,density:`compact`},{default:withCtx(()=>[createTextVNode(` Missing `+toDisplayString(unref(environmentLabel))+` value(s): `+toDisplayString(missingRecords.value.map(record=>record.key).join(`, `)),1)]),_:1})):createCommentVNode(``,true),expectedMissingRecords.value.length?(openBlock(),createElementBlock(`section`,_hoisted_2,[createBaseVNode(`div`,_hoisted_3,[_cache[9]||(_cache[9]=createBaseVNode(`h2`,null,`Expected user values`,-1)),createVNode(VChip,{size:`x-small`,variant:`tonal`},{default:withCtx(()=>[createTextVNode(toDisplayString(expectedMissingRecords.value.length),1)]),_:1})]),createBaseVNode(`div`,_hoisted_4,[(openBlock(true),createElementBlock(Fragment,null,renderList(expectedMissingRecords.value,record=>{return openBlock(),createBlock(VBtn,{key:`expected:${record.key}`,size:`small`,type:`button`,variant:`tonal`,onClick:$event=>selectExpectedRecord(record)},{default:withCtx(()=>[createTextVNode(toDisplayString(record.key),1)]),_:2},1032,[`onClick`])}),128))])])):createCommentVNode(``,true),existingNewValue.value?(openBlock(),createBlock(VAlert,{key:4,type:`info`,variant:`tonal`},{default:withCtx(()=>[createTextVNode(toDisplayString(newValue.value.key)+` already has a value. Saving replaces this value in development; other Env values stay unchanged. `,1)]),_:1})):createCommentVNode(``,true),createBaseVNode(`section`,_hoisted_5,[createVNode(VTextField,{modelValue:newValue.value.key,"onUpdate:modelValue":_cache[2]||(_cache[2]=$event=>newValue.value.key=$event),density:`compact`,"hide-details":``,label:`Key`,spellcheck:`false`,variant:`outlined`},null,8,[`modelValue`]),createVNode(VTextField,{modelValue:newValue.value.value,"onUpdate:modelValue":_cache[3]||(_cache[3]=$event=>newValue.value.value=$event),type:newValue.value.secret?`password`:`text`,density:`compact`,"hide-details":``,label:`Value`,spellcheck:`false`,variant:`outlined`},null,8,[`modelValue`,`type`]),createVNode(VCheckbox,{modelValue:newValue.value.secret,"onUpdate:modelValue":_cache[4]||(_cache[4]=$event=>newValue.value.secret=$event),density:`compact`,"hide-details":``,label:`Secret`},null,8,[`modelValue`]),createVNode(VBtn,{disabled:!newValue.value.key||saveBusy.value&&!addBusy.value,loading:addBusy.value,color:`primary`,type:`button`,variant:`flat`,onClick:saveNewValue},{default:withCtx(()=>[createTextVNode(toDisplayString(existingNewValue.value?`Replace value`:`Add`),1)]),_:1},8,[`disabled`,`loading`]),unref(savedValues)?(openBlock(),createBlock(resolveDynamicComponent(unref(savedValues).component),{key:0,environment:unref(savedEnvValueEnvironment)(unref(environmentLabel)),"has-value":existingNewValue.value,placement:`env-add`,"project-slug":unref(projectSlug),secret:newValue.value.secret===true,variable:String(newValue.value.key||``).trim(),onChanged:savedValueChanged},null,40,[`environment`,`has-value`,`project-slug`,`secret`,`variable`])):createCommentVNode(``,true),addError.value?(openBlock(),createElementBlock(`p`,_hoisted_6,toDisplayString(addError.value),1)):createCommentVNode(``,true)]),createVNode(RuntimeConfigRecordsView_default,{"editable-empty-text":`No user Env values.`,"editable-title":`User values`,"environment-label":unref(environmentLabel),records:records.value,"revealed-secrets":unref(revealedSecrets),"save-busy":saveBusy.value,"secret-reveal-busy-key":unref(secretRevealBusyKey),"secret-reveal-enabled":``,"system-title":`System values`,onHideSecret:unref(hideSecret),onRemoveRecord:requestRemoveRecord,onRevealSecret:unref(revealSecret),onSaveRecord:saveRecord,onSavedValueChanged:reloadEnv},null,8,[`environment-label`,`records`,`revealed-secrets`,`save-busy`,`secret-reveal-busy-key`,`onHideSecret`,`onRevealSecret`])],64)):renderSlot(_ctx.$slots,`tab-panel`,{activeTab:activeTab.value},void 0,true,2),createVNode(VDialog,{modelValue:removeConfirmOpen.value,"onUpdate:modelValue":_cache[5]||(_cache[5]=$event=>removeConfirmOpen.value=$event),"max-width":`30rem`},{default:withCtx(()=>[createVNode(VCard,null,{default:withCtx(()=>[createVNode(VCardTitle,null,{default:withCtx(()=>[..._cache[10]||(_cache[10]=[createTextVNode(`Remove Env value?`,-1)])]),_:1}),createVNode(VCardText,null,{default:withCtx(()=>[createBaseVNode(`code`,null,toDisplayString(pendingRemovalKey.value),1),_cache[11]||(_cache[11]=createTextVNode(` will no longer be supplied to this project's development processes. `,-1)),removeError.value?(openBlock(),createBlock(VAlert,{key:0,class:`mt-3`,density:`compact`,type:`error`,variant:`tonal`},{default:withCtx(()=>[createTextVNode(toDisplayString(removeError.value),1)]),_:1})):createCommentVNode(``,true)]),_:1}),createVNode(VCardActions,null,{default:withCtx(()=>[createVNode(VSpacer),createVNode(VBtn,{disabled:saveBusy.value,type:`button`,variant:`text`,onClick:cancelRemoveRecord},{default:withCtx(()=>[..._cache[12]||(_cache[12]=[createTextVNode(` Cancel `,-1)])]),_:1},8,[`disabled`]),createVNode(VBtn,{color:`error`,loading:saveBusy.value,type:`button`,variant:`flat`,onClick:confirmRemoveRecord},{default:withCtx(()=>[..._cache[13]||(_cache[13]=[createTextVNode(` Remove `,-1)])]),_:1},8,[`loading`])]),_:1})]),_:1})]),_:1},8,[`modelValue`])])}}};var EnvPanel_default=_plugin_vue_export_helper_default(_sfc_main$1,[[`__scopeId`,`data-v-cbab12e3`]]);var _hoisted_1={class:`vibe64-dashboard-page`};var _sfc_main={__name:`index`,setup(__props){return(_ctx,_cache)=>{return openBlock(),createElementBlock(`section`,_hoisted_1,[createVNode(EnvPanel_default)])}}};var env_default=_plugin_vue_export_helper_default(_sfc_main,[[`__scopeId`,`data-v-c6bb4035`]]);export{env_default as default};
|
|
1
|
+
import{t as VChip,x as VIcon}from"./VChip-BRhZ1px1.js";import{D as createVNode,E as createTextVNode,En as toValue,Ht as watch,On as unref,_ as createBaseVNode,b as createElementBlock,bt as renderList,g as computed,mt as openBlock,o as Fragment,qt as withCtx,tr as toDisplayString,v as createBlock,vn as ref,wt as resolveDynamicComponent,xt as renderSlot,y as createCommentVNode}from"./runtime-core.esm-bundler-DGXg_mpN.js";import{t as useEndpointResource}from"./useEndpointResource-BaT7yEQ5.js";import{g as useRoute}from"./useApi-BPuI6ZR9-CFWU1m37.js";import{t as VTextField}from"./VTextField-Dmm1M-tz.js";import{s as ROUTE_VISIBILITY_PUBLIC}from"./errorMessageHelpers-KoewcxJa.js";import{In as mdiLinkVariant,Ot as mdiDownload,Pt as mdiFileCogOutline,gr as mdiRefresh}from"./mdi-DwGK7nOu.js";import{t as VBtn}from"./VBtn-B6ryRXW-.js";import{t as VAlert}from"./VAlert-CBpSKTfy.js";import{t as VCheckbox}from"./VCheckbox-Bybg_FNE.js";import{t as VDialog}from"./VDialog-CYfdjZRu.js";import{i as VCardTitle,n as VCardText,o as VCardActions,t as VCard}from"./VCard-BzaViLPx.js";import{t as VSpacer}from"./VSpacer-B5ip6FSG.js";import{i as VExpansionPanelText,n as VExpansionPanel,r as VExpansionPanelTitle,t as VExpansionPanels}from"./VExpansionPanels-vKIuai-q.js";import{t as _plugin_vue_export_helper_default}from"./_plugin-vue_export-helper-DNW4j-dv.js";import{t as useCommand}from"./useCommand-DGM7l3ja.js";import{D as envQueryKey,S as VIBE64_PROJECT_CHANGED_EVENT,a as ENV_ENDPOINT,b as VIBE64_ENV_USER_VALUES_API_SUFFIX,i as ENV_DOWNLOAD_ENDPOINT,o as ENV_SECRET_REVEAL_ENDPOINT,s as ENV_USER_VALUES_ENDPOINT,v as VIBE64_ENV_DOWNLOAD_API_SUFFIX,y as VIBE64_ENV_SECRET_REVEAL_API_SUFFIX}from"./studioGateApi-1C9rkDqt.js";import{n as useVibe64ProjectSlug}from"./useVibe64ProjectScope-C4-hpbwc.js";import{$ as VTable,X as VTab,Y as VTabs}from"./index-CNkd6O5t.js";import{t as Vibe64AsyncModuleState_default}from"./Vibe64AsyncModuleState-DcRTYHoG.js";import{n as saveBlobAsFile}from"./vibe64AttachmentDownload-Cngh16Hf.js";import{n as useVibe64SessionSelection}from"./useVibe64SessionSelection-BJxwH8Z7.js";import{t as Vibe64DashboardPageHeader_default}from"./Vibe64DashboardPageHeader-BKo3ufyj.js";import{n as savedEnvValueEnvironment,r as useVibe64SavedEnvValues,t as recordIsSavedEnvValue}from"./vibe64SavedEnvValues-9FX5u8Ht.js";var _hoisted_1$3={key:0,class:`runtime-config-records-table__actions-column`};var _hoisted_2$2={key:0};var _hoisted_3$2=[`onClick`];var _hoisted_4$2=[`title`];var _hoisted_5$2={class:`runtime-config-records-table__linked-label`};var _hoisted_6$1={key:1,class:`runtime-config-records-table__secret-value`};var _hoisted_7={key:0};var _hoisted_8={key:0,class:`runtime-config-records-table__saved-actions`};var _hoisted_9={key:1,class:`runtime-config-records-table__edit`};var _hoisted_10={class:`runtime-config-records-table__edit-actions`};var _sfc_main$3={__name:`RuntimeConfigRecordsTable`,props:{environmentLabel:{default:`environment`,type:String},onRemoveRecord:{default:null,type:Function},onSaveRecord:{default:null,type:Function},records:{default:()=>[],type:Array},revealedSecrets:{default:()=>({}),type:Object},saveBusy:{default:false,type:Boolean},secretRevealBusyKey:{default:``,type:String},secretRevealEnabled:{default:false,type:Boolean},showActions:{default:false,type:Boolean}},emits:[`hide-secret`,`reveal-secret`,`saved-value-changed`],setup(__props,{emit:__emit}){const emit=__emit;const props=__props;const draftValues=ref({});const pendingRow=ref(null);const rowErrors=ref({});const savedRowValues=ref({});watch(()=>props.records,()=>{savedRowValues.value={}});const writeBusy=computed(()=>props.saveBusy||Boolean(pendingRow.value));const projectSlug=useVibe64ProjectSlug();const savedValues=useVibe64SavedEnvValues();function recordKey(record={}){return`${record.scope||props.environmentLabel}:${record.key||``}`}function draftTouched(record={}){return Object.hasOwn(draftValues.value,recordKey(record))}function draftValue(record={}){return draftTouched(record)?draftValues.value[recordKey(record)]:``}function setDraftValue(record={},value=``){draftValues.value={...draftValues.value,[recordKey(record)]:String(value??``)};setRowError(recordKey(record),``)}function rowPending(record={},action=``){return pendingRow.value?.key===recordKey(record)&&pendingRow.value.action===action}function rowError(record={}){return rowErrors.value[recordKey(record)]||``}function setRowError(key=``,message=``){const{[key]:_previous,...others}=rowErrors.value;rowErrors.value=message?{...others,[key]:message}:others}async function runRowWrite(record,action,write,fallbackError){const key=recordKey(record);pendingRow.value={action,key};setRowError(key,``);try{await write();return true}catch(error){setRowError(key,String(error?.message||fallbackError));return false}finally{pendingRow.value=null}}function recordValueLabel(record={}){const saved=Object.hasOwn(savedRowValues.value,recordKey(record));if(record.secret)return secretIsRevealed(record)?String(props.revealedSecrets[record.key]??``):record.valuePresent||saved?`********`:``;return String(saved?savedRowValues.value[recordKey(record)]:record.value??``)}function secretIsRevealed(record={}){return Boolean(record.key)&&Object.hasOwn(props.revealedSecrets,record.key)}function secretVisibilityAction(record={}){return secretIsRevealed(record)?`Hide`:`Reveal`}function secretVisibilityLabel(record={}){return`${secretVisibilityAction(record)} ${record.key||`secret`}`}function toggleSecretVisibility(record={}){emit(secretIsRevealed(record)?`hide-secret`:`reveal-secret`,record)}async function saveRecord(record={}){if(!props.showActions||!draftTouched(record)||writeBusy.value)return false;const key=recordKey(record);const value=draftValue(record);const saved=await runRowWrite(record,`save`,()=>props.onSaveRecord?.({record,value}),`${record.key||`The value`} could not be saved.`);if(saved)savedRowValues.value={...savedRowValues.value,[key]:value};if(saved&&draftValues.value[key]===value){const{[key]:_saved,...others}=draftValues.value;draftValues.value=others}return saved}async function removeRecord(record={}){if(!props.showActions||writeBusy.value)return false;return runRowWrite(record,`remove`,()=>props.onRemoveRecord?.(record),`${record.key||`The value`} could not be removed.`)}async function copyKey(key=``){const text=String(key||``);if(typeof navigator!==`undefined`&&navigator.clipboard&&text)await navigator.clipboard.writeText(text)}return(_ctx,_cache)=>{return openBlock(),createBlock(VTable,{class:`runtime-config-records-table`,density:`compact`},{default:withCtx(()=>[createBaseVNode(`colgroup`,null,[_cache[2]||(_cache[2]=createBaseVNode(`col`,{class:`runtime-config-records-table__key-column`},null,-1)),_cache[3]||(_cache[3]=createBaseVNode(`col`,{class:`runtime-config-records-table__value-column`},null,-1)),__props.showActions?(openBlock(),createElementBlock(`col`,_hoisted_1$3)):createCommentVNode(``,true)]),createBaseVNode(`thead`,null,[createBaseVNode(`tr`,null,[_cache[4]||(_cache[4]=createBaseVNode(`th`,null,`Key`,-1)),_cache[5]||(_cache[5]=createBaseVNode(`th`,null,`Value`,-1)),__props.showActions?(openBlock(),createElementBlock(`th`,_hoisted_2$2,`Actions`)):createCommentVNode(``,true)])]),createBaseVNode(`tbody`,null,[(openBlock(true),createElementBlock(Fragment,null,renderList(__props.records,record=>{return openBlock(),createElementBlock(`tr`,{key:recordKey(record)},[createBaseVNode(`td`,null,[createBaseVNode(`button`,{class:`runtime-config-records-table__key`,type:`button`,onClick:$event=>copyKey(record.key)},toDisplayString(record.key),9,_hoisted_3$2)]),createBaseVNode(`td`,null,[unref(recordIsSavedEnvValue)(record)?(openBlock(),createElementBlock(`div`,{key:0,class:`runtime-config-records-table__linked`,title:record.label},[createVNode(VIcon,{class:`runtime-config-records-table__linked-icon`,icon:unref(mdiLinkVariant),size:`16`},null,8,[`icon`]),createBaseVNode(`span`,_hoisted_5$2,toDisplayString(record.label||`Linked`),1)],8,_hoisted_4$2)):record.secret?(openBlock(),createElementBlock(`div`,_hoisted_6$1,[createBaseVNode(`code`,null,toDisplayString(recordValueLabel(record)),1),__props.secretRevealEnabled&&record.valuePresent?(openBlock(),createBlock(VBtn,{key:0,"aria-label":secretVisibilityLabel(record),disabled:Boolean(__props.secretRevealBusyKey)&&__props.secretRevealBusyKey!==record.key,loading:__props.secretRevealBusyKey===record.key,size:`x-small`,type:`button`,variant:`text`,onClick:$event=>toggleSecretVisibility(record)},{default:withCtx(()=>[createTextVNode(toDisplayString(secretVisibilityAction(record)),1)]),_:2},1032,[`aria-label`,`disabled`,`loading`,`onClick`])):createCommentVNode(``,true)])):(openBlock(),createElementBlock(Fragment,{key:2},[createTextVNode(toDisplayString(recordValueLabel(record)),1)],64))]),__props.showActions?(openBlock(),createElementBlock(`td`,_hoisted_7,[unref(recordIsSavedEnvValue)(record)?(openBlock(),createElementBlock(`div`,_hoisted_8,[unref(savedValues)?(openBlock(),createBlock(resolveDynamicComponent(unref(savedValues).component),{key:0,environment:unref(savedEnvValueEnvironment)(__props.environmentLabel),placement:`env-row`,"project-slug":unref(projectSlug),secret:record.secret===true,variable:record.key,onChanged:_cache[0]||(_cache[0]=$event=>_ctx.$emit(`saved-value-changed`))},null,40,[`environment`,`project-slug`,`secret`,`variable`])):createCommentVNode(``,true)])):(openBlock(),createElementBlock(`div`,_hoisted_9,[createVNode(VTextField,{"error-messages":rowError(record),"hide-details":!rowError(record),"model-value":draftValue(record),type:record.secret?`password`:`text`,density:`compact`,label:`New value`,spellcheck:`false`,variant:`outlined`,"onUpdate:modelValue":$event=>setDraftValue(record,$event)},null,8,[`error-messages`,`hide-details`,`model-value`,`type`,`onUpdate:modelValue`]),createBaseVNode(`span`,_hoisted_10,[unref(savedValues)?(openBlock(),createBlock(resolveDynamicComponent(unref(savedValues).component),{key:0,environment:unref(savedEnvValueEnvironment)(__props.environmentLabel),"has-value":record.valuePresent===true,placement:`env-row`,"project-slug":unref(projectSlug),secret:record.secret===true,variable:record.key,onChanged:_cache[1]||(_cache[1]=$event=>_ctx.$emit(`saved-value-changed`))},null,40,[`environment`,`has-value`,`project-slug`,`secret`,`variable`])):createCommentVNode(``,true),createVNode(VBtn,{disabled:!draftTouched(record)||writeBusy.value&&!rowPending(record,`save`),loading:rowPending(record,`save`),size:`small`,type:`button`,variant:`tonal`,onClick:$event=>saveRecord(record)},{default:withCtx(()=>[..._cache[6]||(_cache[6]=[createTextVNode(` Save `,-1)])]),_:1},8,[`disabled`,`loading`,`onClick`]),createVNode(VBtn,{disabled:writeBusy.value&&!rowPending(record,`remove`),loading:rowPending(record,`remove`),size:`small`,type:`button`,variant:`text`,onClick:$event=>removeRecord(record)},{default:withCtx(()=>[..._cache[7]||(_cache[7]=[createTextVNode(` Remove `,-1)])]),_:1},8,[`disabled`,`loading`,`onClick`])])]))])):createCommentVNode(``,true)])}),128))])]),_:1})}}};var RuntimeConfigRecordsTable_default=_plugin_vue_export_helper_default(_sfc_main$3,[[`__scopeId`,`data-v-08ec4e93`]]);var _hoisted_1$2={class:`runtime-config-records`};var _hoisted_2$1={class:`runtime-config-records__section`};var _hoisted_3$1={class:`runtime-config-records__heading`};var _hoisted_4$1={key:1,class:`runtime-config-records__empty`};var _hoisted_5$1={class:`runtime-config-records__system-title`};var _sfc_main$2={__name:`RuntimeConfigRecordsView`,props:{editableEmptyText:{default:`No user Env values.`,type:String},editableTitle:{default:`User values`,type:String},environmentLabel:{default:`environment`,type:String},onRemoveRecord:{default:null,type:Function},onSaveRecord:{default:null,type:Function},readonly:{default:false,type:Boolean},records:{default:()=>[],type:Array},revealedSecrets:{default:()=>({}),type:Object},saveBusy:{default:false,type:Boolean},secretRevealBusyKey:{default:``,type:String},secretRevealEnabled:{default:false,type:Boolean},systemTitle:{default:`System values`,type:String}},emits:[`hide-secret`,`reveal-secret`,`saved-value-changed`],setup(__props){const props=__props;const records=computed(()=>Array.isArray(props.records)?props.records:[]);const editableRecords=computed(()=>records.value.filter(recordEditable));const systemRecords=computed(()=>records.value.filter(record=>!recordEditable(record)));function recordEditable(record={}){return record.editable===true||recordIsSavedEnvValue(record)}return(_ctx,_cache)=>{return openBlock(),createElementBlock(`section`,_hoisted_1$2,[createBaseVNode(`section`,_hoisted_2$1,[createBaseVNode(`div`,_hoisted_3$1,[createBaseVNode(`h2`,null,toDisplayString(__props.editableTitle),1),createVNode(VChip,{size:`x-small`,variant:`tonal`},{default:withCtx(()=>[createTextVNode(toDisplayString(editableRecords.value.length),1)]),_:1})]),editableRecords.value.length?(openBlock(),createBlock(RuntimeConfigRecordsTable_default,{key:0,"environment-label":__props.environmentLabel,records:editableRecords.value,"revealed-secrets":__props.revealedSecrets,"save-busy":__props.saveBusy,"secret-reveal-busy-key":__props.secretRevealBusyKey,"secret-reveal-enabled":__props.secretRevealEnabled,"show-actions":!__props.readonly,"on-remove-record":__props.onRemoveRecord,"on-save-record":__props.onSaveRecord,onHideSecret:_cache[0]||(_cache[0]=$event=>_ctx.$emit(`hide-secret`,$event)),onRevealSecret:_cache[1]||(_cache[1]=$event=>_ctx.$emit(`reveal-secret`,$event)),onSavedValueChanged:_cache[2]||(_cache[2]=$event=>_ctx.$emit(`saved-value-changed`))},null,8,[`environment-label`,`records`,`revealed-secrets`,`save-busy`,`secret-reveal-busy-key`,`secret-reveal-enabled`,`show-actions`,`on-remove-record`,`on-save-record`])):(openBlock(),createElementBlock(`p`,_hoisted_4$1,toDisplayString(__props.editableEmptyText),1))]),systemRecords.value.length?(openBlock(),createBlock(VExpansionPanels,{key:0,class:`runtime-config-records__system`,variant:`accordion`},{default:withCtx(()=>[createVNode(VExpansionPanel,null,{default:withCtx(()=>[createVNode(VExpansionPanelTitle,null,{default:withCtx(()=>[createBaseVNode(`span`,_hoisted_5$1,[createTextVNode(toDisplayString(__props.systemTitle)+` `,1),createVNode(VChip,{size:`x-small`,variant:`tonal`},{default:withCtx(()=>[createTextVNode(toDisplayString(systemRecords.value.length),1)]),_:1})])]),_:1}),createVNode(VExpansionPanelText,null,{default:withCtx(()=>[createVNode(RuntimeConfigRecordsTable_default,{"environment-label":__props.environmentLabel,records:systemRecords.value,"revealed-secrets":__props.revealedSecrets,"secret-reveal-busy-key":__props.secretRevealBusyKey,"secret-reveal-enabled":__props.secretRevealEnabled,onHideSecret:_cache[3]||(_cache[3]=$event=>_ctx.$emit(`hide-secret`,$event)),onRevealSecret:_cache[4]||(_cache[4]=$event=>_ctx.$emit(`reveal-secret`,$event))},null,8,[`environment-label`,`records`,`revealed-secrets`,`secret-reveal-busy-key`,`secret-reveal-enabled`])]),_:1})]),_:1})]),_:1})):createCommentVNode(``,true)])}}};var RuntimeConfigRecordsView_default=_plugin_vue_export_helper_default(_sfc_main$2,[[`__scopeId`,`data-v-c614f692`]]);function useRuntimeConfigDotenvDownload({fileName,readContent}={}){if(typeof readContent!==`function`)throw new TypeError(`useRuntimeConfigDotenvDownload requires readContent().`);const downloadBusy=ref(false);const downloadError=ref(``);async function downloadDotenv(){if(downloadBusy.value)return false;downloadBusy.value=true;downloadError.value=``;try{const content=await readContent();if(typeof content!==`string`)return false;saveBlobAsFile(new Blob([content],{type:`text/plain;charset=utf-8`}),String(toValue(fileName)));return true}catch(error){downloadError.value=String(error?.message||`The .env file could not be downloaded.`);return false}finally{downloadBusy.value=false}}return{downloadBusy,downloadDotenv,downloadError}}function runtimeConfigSecretKey(value={}){return String(typeof value===`string`?value:value?.key||``).trim()}function useRuntimeConfigSecretReveal({revealValue}={}){if(typeof revealValue!==`function`)throw new TypeError(`useRuntimeConfigSecretReveal requires revealValue().`);const revealedSecrets=ref({});const secretRevealBusyKey=ref(``);async function revealSecret(record={}){const key=runtimeConfigSecretKey(record);if(!key||secretRevealBusyKey.value)return false;secretRevealBusyKey.value=key;try{const value=await revealValue(key,record);if(value===void 0||value===null)return false;revealedSecrets.value={...revealedSecrets.value,[key]:String(value)};return true}finally{secretRevealBusyKey.value=``}}function hideSecret(record={}){const key=runtimeConfigSecretKey(record);if(!key||!Object.hasOwn(revealedSecrets.value,key))return false;const next={...revealedSecrets.value};delete next[key];revealedSecrets.value=next;return true}function clearRevealedSecrets(){revealedSecrets.value={}}return{clearRevealedSecrets,hideSecret,revealedSecrets,revealSecret,secretRevealBusyKey}}var _hoisted_1$1={class:`env-panel`};var _hoisted_2={key:3,class:`env-panel__expected`};var _hoisted_3={class:`env-panel__section-heading env-panel__section-heading--inline`};var _hoisted_4={class:`env-panel__expected-keys`};var _hoisted_5={class:`env-panel__add`};var _hoisted_6={key:1,class:`env-panel__add-error`,role:`alert`};var PROJECT_ENV_TAB=`dev`;var PROJECT_ENVIRONMENT=`dev`;var PROJECT_ENVIRONMENT_LABEL=`development`;var _sfc_main$1={__name:`EnvPanel`,setup(__props){const projectSlug=useVibe64ProjectSlug();const selectedSessionId=useVibe64SessionSelection({projectSlug}).selectedId;const activeTab=ref(PROJECT_ENV_TAB);const savedValues=useVibe64SavedEnvValues();const newValue=ref(emptyNewValue());const route=useRoute();watch(()=>[route.query.prefillKey,route.query.prefillValue,route.query.prefillSecret],([key,value,secret])=>{if(typeof key!==`string`||!/^[A-Z_][A-Z0-9_]*$/u.test(key)||key.length>200)return;if(secret===`true`)newValue.value={key,value:``,secret:true};else if(value===void 0||typeof value===`string`&&value.length<=4096)newValue.value={key,value:value??``,secret:false}},{immediate:true});const pendingRemoval=ref(null);const envResource=useEndpointResource({fallbackLoadError:`Env could not load.`,path:ENV_ENDPOINT,queryKey:computed(()=>[...envQueryKey(`app`,ROUTE_VISIBILITY_PUBLIC,projectSlug.value),PROJECT_ENVIRONMENT,selectedSessionId.value||`baseline`]),readQuery:computed(()=>({environment:PROJECT_ENVIRONMENT,...selectedSessionId.value?{sessionId:selectedSessionId.value}:{}})),realtime:{event:VIBE64_PROJECT_CHANGED_EVENT},refreshOnPull:true,requestRecoveryLabel:`Env`});const saveCommand=useCommand({access:`never`,apiSuffix:VIBE64_ENV_USER_VALUES_API_SUFFIX,buildCommandOptions:()=>({method:`PUT`,path:ENV_USER_VALUES_ENDPOINT}),buildRawPayload:(_model,{context})=>({environment:PROJECT_ENVIRONMENT,...selectedSessionId.value?{sessionId:selectedSessionId.value}:{},values:context.values||{}}),fallbackRunError:`Env value could not be saved.`,messages:{error:`Env value could not be saved.`,success:`Env saved.`},ownershipFilter:ROUTE_VISIBILITY_PUBLIC,placementSource:`vibe64.env.user-values.save`,surfaceId:`app`,writeMethod:`PUT`});const revealCommand=useCommand({access:`never`,apiSuffix:VIBE64_ENV_SECRET_REVEAL_API_SUFFIX,buildCommandOptions:()=>({method:`POST`,path:ENV_SECRET_REVEAL_ENDPOINT}),buildRawPayload:(_model,{context})=>({environment:PROJECT_ENVIRONMENT,key:context.key,...selectedSessionId.value?{sessionId:selectedSessionId.value}:{}}),fallbackRunError:`Env secret could not be revealed.`,messages:{error:`Env secret could not be revealed.`},ownershipFilter:ROUTE_VISIBILITY_PUBLIC,placementSource:`vibe64.env.secret.reveal`,suppressSuccessMessage:true,surfaceId:`app`,writeMethod:`POST`});const{clearRevealedSecrets,hideSecret,revealedSecrets,revealSecret,secretRevealBusyKey}=useRuntimeConfigSecretReveal({async revealValue(key){const response=await revealCommand.run({key});return response?.ok===false?null:response?.value}});const downloadCommand=useCommand({access:`never`,apiSuffix:VIBE64_ENV_DOWNLOAD_API_SUFFIX,buildCommandOptions:()=>({method:`POST`,path:ENV_DOWNLOAD_ENDPOINT}),buildRawPayload:()=>({environment:PROJECT_ENVIRONMENT,...selectedSessionId.value?{sessionId:selectedSessionId.value}:{}}),fallbackRunError:`Env could not be downloaded.`,messages:{error:`Env could not be downloaded.`},ownershipFilter:ROUTE_VISIBILITY_PUBLIC,placementSource:`vibe64.env.download`,suppressSuccessMessage:true,surfaceId:`app`,writeMethod:`POST`});const{downloadBusy,downloadDotenv,downloadError}=useRuntimeConfigDotenvDownload({fileName:()=>`${projectSlug.value}-${PROJECT_ENVIRONMENT_LABEL}.env`,async readContent(){return(await downloadCommand.run())?.content}});watch([projectSlug,selectedSessionId],()=>{clearRevealedSecrets();downloadError.value=``;addError.value=``});const env=computed(()=>envResource.data.value?.env||{});const envConfigSourceLabel=computed(()=>String(env.value?.configSource?.label||``));const envInitialLoading=computed(()=>envResource.isInitialLoading.value===true);const refreshBusy=ref(false);const addBusy=ref(false);const addError=ref(``);const removeError=ref(``);const envLoadError=computed(()=>String(envResource.loadError.value||``));const envUnavailable=computed(()=>Boolean(env.value?.unavailable));const envUnavailableMessage=computed(()=>String(env.value?.unavailable?.message||`Project Env is unavailable. Fix the project configuration and try again.`));const saveBusy=computed(()=>saveCommand.isRunning===true);const removeConfirmOpen=computed({get:()=>Boolean(pendingRemoval.value),set:open=>{if(!open&&!saveBusy.value)pendingRemoval.value=null}});const pendingRemovalKey=computed(()=>String(pendingRemoval.value?.key||``));const projectEnvTabActive=computed(()=>activeTab.value===PROJECT_ENV_TAB);const records=computed(()=>Array.isArray(env.value?.records)?env.value.records:[]);const existingNewValue=computed(()=>records.value.some(record=>record.key===String(newValue.value.key||``).trim()&&record.valuePresent===true));const missingRecords=computed(()=>records.value.filter(recordMissing));const expectedMissingRecords=computed(()=>missingRecords.value.filter(recordEditable));const environmentLabel=PROJECT_ENVIRONMENT_LABEL;function emptyNewValue(){return{key:``,secret:true,value:``}}function recordEditable(record={}){return record.editable===true}function recordMissing(record={}){return record.valuePresent!==true&&(record.missing===true||Array.isArray(record.requiredFor)&&record.requiredFor.length>0)}function selectExpectedRecord(record={}){const key=String(record.key||``).trim();if(!key)return;newValue.value={key,secret:record.secret===true,value:``}}async function refresh(){refreshBusy.value=true;try{await reloadEnv()}finally{refreshBusy.value=false}}async function reloadEnv(){clearRevealedSecrets();await envResource.reload()}async function saveRecord({record={},value=``}={}){if(!recordEditable(record))return;await saveValues({[record.key]:{secret:record.secret===true,value}},{waitForRefresh:false})}function requestRemoveRecord(record={}){if(!recordEditable(record))return;removeError.value=``;pendingRemoval.value=record}function cancelRemoveRecord(){if(!saveBusy.value)pendingRemoval.value=null}async function confirmRemoveRecord(){const record=pendingRemoval.value;if(!recordEditable(record)){pendingRemoval.value=null;return}removeError.value=``;try{await saveValues({[record.key]:{remove:true}});pendingRemoval.value=null}catch(error){removeError.value=String(error?.message||`${record.key} could not be removed.`)}}async function saveNewValue(){const key=String(newValue.value.key||``).trim();if(!key)return;addBusy.value=true;addError.value=``;try{await saveValues({[key]:{secret:newValue.value.secret===true,value:newValue.value.value}});newValue.value=emptyNewValue()}catch(error){addError.value=String(error?.message||`${key} could not be saved.`)}finally{addBusy.value=false}}async function saveValues(values={},{waitForRefresh=true}={}){for(const key of Object.keys(values))hideSecret(key);await saveCommand.run({values});const refreshed=envResource.reload();if(waitForRefresh)await refreshed}async function savedValueChanged(){newValue.value=emptyNewValue();await reloadEnv()}function reloadPage(){if(typeof window!==`undefined`)window.location.reload()}return(_ctx,_cache)=>{return openBlock(),createElementBlock(`section`,_hoisted_1$1,[createVNode(Vibe64DashboardPageHeader_default,{description:`Values supplied to this project's development processes.`,icon:unref(mdiFileCogOutline),title:`Env`},{meta:withCtx(()=>[envConfigSourceLabel.value?(openBlock(),createBlock(VChip,{key:0,class:`env-panel__source`,label:``,size:`small`,variant:`tonal`},{default:withCtx(()=>[createTextVNode(toDisplayString(envConfigSourceLabel.value),1)]),_:1})):createCommentVNode(``,true)]),actions:withCtx(()=>[projectEnvTabActive.value?(openBlock(),createElementBlock(Fragment,{key:0},[createVNode(VBtn,{disabled:envInitialLoading.value,loading:unref(downloadBusy),"prepend-icon":unref(mdiDownload),rounded:`pill`,type:`button`,variant:`tonal`,onClick:unref(downloadDotenv)},{default:withCtx(()=>[..._cache[6]||(_cache[6]=[createTextVNode(` Download .env `,-1)])]),_:1},8,[`disabled`,`loading`,`prepend-icon`,`onClick`]),createVNode(VBtn,{loading:refreshBusy.value,"prepend-icon":unref(mdiRefresh),rounded:`pill`,type:`button`,variant:`tonal`,onClick:refresh},{default:withCtx(()=>[..._cache[7]||(_cache[7]=[createTextVNode(` Refresh `,-1)])]),_:1},8,[`loading`,`prepend-icon`])],64)):createCommentVNode(``,true),renderSlot(_ctx.$slots,`tab-actions`,{activeTab:activeTab.value},void 0,true)]),_:3},8,[`icon`]),createVNode(VTabs,{modelValue:activeTab.value,"onUpdate:modelValue":_cache[0]||(_cache[0]=$event=>activeTab.value=$event),class:`env-panel__tabs`,color:`primary`,density:`comfortable`},{default:withCtx(()=>[createVNode(VTab,{value:PROJECT_ENV_TAB},{default:withCtx(()=>[..._cache[8]||(_cache[8]=[createTextVNode(`Development`,-1)])]),_:1}),renderSlot(_ctx.$slots,`tabs`,{},void 0,true)]),_:3},8,[`modelValue`]),projectEnvTabActive.value&&(envInitialLoading.value||envLoadError.value)?(openBlock(),createBlock(Vibe64AsyncModuleState_default,{key:0,label:`Env`,loading:envInitialLoading.value,message:envLoadError.value||`Loading Env.`,"min-height":`12rem`,onReload:reloadPage,onRetry:refresh},null,8,[`loading`,`message`])):projectEnvTabActive.value?(openBlock(),createElementBlock(Fragment,{key:1},[unref(downloadError)?(openBlock(),createBlock(VAlert,{key:0,class:`env-panel__alert`,closable:``,density:`compact`,type:`error`,variant:`tonal`,"onClick:close":_cache[1]||(_cache[1]=$event=>downloadError.value=``)},{default:withCtx(()=>[createTextVNode(toDisplayString(unref(downloadError)),1)]),_:1})):createCommentVNode(``,true),envUnavailable.value?(openBlock(),createBlock(VAlert,{key:1,class:`env-panel__alert`,type:`info`,variant:`tonal`,density:`compact`},{default:withCtx(()=>[createTextVNode(toDisplayString(envUnavailableMessage.value),1)]),_:1})):createCommentVNode(``,true),missingRecords.value.length?(openBlock(),createBlock(VAlert,{key:2,class:`env-panel__alert`,type:`warning`,variant:`tonal`,density:`compact`},{default:withCtx(()=>[createTextVNode(` Missing `+toDisplayString(unref(environmentLabel))+` value(s): `+toDisplayString(missingRecords.value.map(record=>record.key).join(`, `)),1)]),_:1})):createCommentVNode(``,true),expectedMissingRecords.value.length?(openBlock(),createElementBlock(`section`,_hoisted_2,[createBaseVNode(`div`,_hoisted_3,[_cache[9]||(_cache[9]=createBaseVNode(`h2`,null,`Expected user values`,-1)),createVNode(VChip,{size:`x-small`,variant:`tonal`},{default:withCtx(()=>[createTextVNode(toDisplayString(expectedMissingRecords.value.length),1)]),_:1})]),createBaseVNode(`div`,_hoisted_4,[(openBlock(true),createElementBlock(Fragment,null,renderList(expectedMissingRecords.value,record=>{return openBlock(),createBlock(VBtn,{key:`expected:${record.key}`,size:`small`,type:`button`,variant:`tonal`,onClick:$event=>selectExpectedRecord(record)},{default:withCtx(()=>[createTextVNode(toDisplayString(record.key),1)]),_:2},1032,[`onClick`])}),128))])])):createCommentVNode(``,true),existingNewValue.value?(openBlock(),createBlock(VAlert,{key:4,type:`info`,variant:`tonal`},{default:withCtx(()=>[createTextVNode(toDisplayString(newValue.value.key)+` already has a value. Saving replaces this value in development; other Env values stay unchanged. `,1)]),_:1})):createCommentVNode(``,true),createBaseVNode(`section`,_hoisted_5,[createVNode(VTextField,{modelValue:newValue.value.key,"onUpdate:modelValue":_cache[2]||(_cache[2]=$event=>newValue.value.key=$event),density:`compact`,"hide-details":``,label:`Key`,spellcheck:`false`,variant:`outlined`},null,8,[`modelValue`]),createVNode(VTextField,{modelValue:newValue.value.value,"onUpdate:modelValue":_cache[3]||(_cache[3]=$event=>newValue.value.value=$event),type:newValue.value.secret?`password`:`text`,density:`compact`,"hide-details":``,label:`Value`,spellcheck:`false`,variant:`outlined`},null,8,[`modelValue`,`type`]),createVNode(VCheckbox,{modelValue:newValue.value.secret,"onUpdate:modelValue":_cache[4]||(_cache[4]=$event=>newValue.value.secret=$event),density:`compact`,"hide-details":``,label:`Secret`},null,8,[`modelValue`]),createVNode(VBtn,{disabled:!newValue.value.key||saveBusy.value&&!addBusy.value,loading:addBusy.value,color:`primary`,type:`button`,variant:`flat`,onClick:saveNewValue},{default:withCtx(()=>[createTextVNode(toDisplayString(existingNewValue.value?`Replace value`:`Add`),1)]),_:1},8,[`disabled`,`loading`]),unref(savedValues)?(openBlock(),createBlock(resolveDynamicComponent(unref(savedValues).component),{key:0,environment:unref(savedEnvValueEnvironment)(unref(environmentLabel)),"has-value":existingNewValue.value,placement:`env-add`,"project-slug":unref(projectSlug),secret:newValue.value.secret===true,variable:String(newValue.value.key||``).trim(),onChanged:savedValueChanged},null,40,[`environment`,`has-value`,`project-slug`,`secret`,`variable`])):createCommentVNode(``,true),addError.value?(openBlock(),createElementBlock(`p`,_hoisted_6,toDisplayString(addError.value),1)):createCommentVNode(``,true)]),createVNode(RuntimeConfigRecordsView_default,{"editable-empty-text":`No user Env values.`,"editable-title":`User values`,"environment-label":unref(environmentLabel),records:records.value,"revealed-secrets":unref(revealedSecrets),"save-busy":saveBusy.value,"secret-reveal-busy-key":unref(secretRevealBusyKey),"secret-reveal-enabled":``,"system-title":`System values`,onHideSecret:unref(hideSecret),onRemoveRecord:requestRemoveRecord,onRevealSecret:unref(revealSecret),onSaveRecord:saveRecord,onSavedValueChanged:reloadEnv},null,8,[`environment-label`,`records`,`revealed-secrets`,`save-busy`,`secret-reveal-busy-key`,`onHideSecret`,`onRevealSecret`])],64)):renderSlot(_ctx.$slots,`tab-panel`,{activeTab:activeTab.value},void 0,true,2),createVNode(VDialog,{modelValue:removeConfirmOpen.value,"onUpdate:modelValue":_cache[5]||(_cache[5]=$event=>removeConfirmOpen.value=$event),"max-width":`30rem`},{default:withCtx(()=>[createVNode(VCard,null,{default:withCtx(()=>[createVNode(VCardTitle,null,{default:withCtx(()=>[..._cache[10]||(_cache[10]=[createTextVNode(`Remove Env value?`,-1)])]),_:1}),createVNode(VCardText,null,{default:withCtx(()=>[createBaseVNode(`code`,null,toDisplayString(pendingRemovalKey.value),1),_cache[11]||(_cache[11]=createTextVNode(` will no longer be supplied to this project's development processes. `,-1)),removeError.value?(openBlock(),createBlock(VAlert,{key:0,class:`mt-3`,density:`compact`,type:`error`,variant:`tonal`},{default:withCtx(()=>[createTextVNode(toDisplayString(removeError.value),1)]),_:1})):createCommentVNode(``,true)]),_:1}),createVNode(VCardActions,null,{default:withCtx(()=>[createVNode(VSpacer),createVNode(VBtn,{disabled:saveBusy.value,type:`button`,variant:`text`,onClick:cancelRemoveRecord},{default:withCtx(()=>[..._cache[12]||(_cache[12]=[createTextVNode(` Cancel `,-1)])]),_:1},8,[`disabled`]),createVNode(VBtn,{color:`error`,loading:saveBusy.value,type:`button`,variant:`flat`,onClick:confirmRemoveRecord},{default:withCtx(()=>[..._cache[13]||(_cache[13]=[createTextVNode(` Remove `,-1)])]),_:1},8,[`loading`])]),_:1})]),_:1})]),_:1},8,[`modelValue`])])}}};var EnvPanel_default=_plugin_vue_export_helper_default(_sfc_main$1,[[`__scopeId`,`data-v-cbab12e3`]]);var _hoisted_1={class:`vibe64-dashboard-page`};var _sfc_main={__name:`index`,setup(__props){return(_ctx,_cache)=>{return openBlock(),createElementBlock(`section`,_hoisted_1,[createVNode(EnvPanel_default)])}}};var env_default=_plugin_vue_export_helper_default(_sfc_main,[[`__scopeId`,`data-v-c6bb4035`]]);export{env_default as default};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{t as VChip,x as VIcon}from"./VChip-BRhZ1px1.js";import{D as createVNode,E as createTextVNode,On as unref,Zn as normalizeClass,_ as createBaseVNode,b as createElementBlock,bt as renderList,mt as openBlock,o as Fragment,qt as withCtx,tr as toDisplayString,v as createBlock,xt as renderSlot,y as createCommentVNode}from"./runtime-core.esm-bundler-DGXg_mpN.js";import{cn as mdiHistory,gr as mdiRefresh,jt as mdiEyeOutline,x as mdiArchiveOutline}from"./mdi-DwGK7nOu.js";import{t as VBtn}from"./VBtn-B6ryRXW-.js";import{t as VAlert}from"./VAlert-CBpSKTfy.js";import{t as VSheet}from"./VSheet-C1Vro_q8.js";import{n as VCardText,t as VCard}from"./VCard-BzaViLPx.js";import{t as VSkeletonLoader}from"./VSkeletonLoader-DFBUIKJZ.js";import{t as _plugin_vue_export_helper_default}from"./_plugin-vue_export-helper-DNW4j-dv.js";import{c as vibe64SessionStatusColor,i as vibe64SessionDisplayTitle,l as vibe64SessionStatusLabel}from"./vibe64SessionViewModel-B0cCumM8.js";import{t as Vibe64UnavailableSessions_default}from"./Vibe64UnavailableSessions-CK0feE7T.js";import{t as Vibe64DashboardPageHeader_default}from"./Vibe64DashboardPageHeader-BKo3ufyj.js";import{a as useArchivedVibe64Sessions,n as archivedVibe64SessionsEmits,r as archivedVibe64SessionsProps}from"./useArchivedVibe64Sessions-
|
|
1
|
+
import{t as VChip,x as VIcon}from"./VChip-BRhZ1px1.js";import{D as createVNode,E as createTextVNode,On as unref,Zn as normalizeClass,_ as createBaseVNode,b as createElementBlock,bt as renderList,mt as openBlock,o as Fragment,qt as withCtx,tr as toDisplayString,v as createBlock,xt as renderSlot,y as createCommentVNode}from"./runtime-core.esm-bundler-DGXg_mpN.js";import{cn as mdiHistory,gr as mdiRefresh,jt as mdiEyeOutline,x as mdiArchiveOutline}from"./mdi-DwGK7nOu.js";import{t as VBtn}from"./VBtn-B6ryRXW-.js";import{t as VAlert}from"./VAlert-CBpSKTfy.js";import{t as VSheet}from"./VSheet-C1Vro_q8.js";import{n as VCardText,t as VCard}from"./VCard-BzaViLPx.js";import{t as VSkeletonLoader}from"./VSkeletonLoader-DFBUIKJZ.js";import{t as _plugin_vue_export_helper_default}from"./_plugin-vue_export-helper-DNW4j-dv.js";import{c as vibe64SessionStatusColor,i as vibe64SessionDisplayTitle,l as vibe64SessionStatusLabel}from"./vibe64SessionViewModel-B0cCumM8.js";import{t as Vibe64UnavailableSessions_default}from"./Vibe64UnavailableSessions-CK0feE7T.js";import{t as Vibe64DashboardPageHeader_default}from"./Vibe64DashboardPageHeader-BKo3ufyj.js";import{a as useArchivedVibe64Sessions,n as archivedVibe64SessionsEmits,r as archivedVibe64SessionsProps}from"./useArchivedVibe64Sessions-BAQjW01a.js";var _hoisted_1$1={class:`studio-archived-sessions d-flex flex-column ga-3`};var _hoisted_2={key:0,class:`studio-archived-sessions__copy`};var _hoisted_3={class:`text-headline-small font-weight-bold ma-0`};var _hoisted_4={key:0,class:`text-body-2 text-medium-emphasis mb-0`};var _hoisted_5={key:2,"aria-label":`Loading archived sessions`,class:`studio-archived-sessions__grid`,role:`status`};var _hoisted_6={class:`studio-archived-sessions__card-heading`};var _hoisted_7={class:`studio-archived-sessions__identity`};var _hoisted_8={class:`text-subtitle-1 mb-1`};var _hoisted_9={class:`text-body-2 text-medium-emphasis mb-0`};var _hoisted_10={key:4,class:`studio-archived-sessions__grid`};var _hoisted_11={class:`studio-archived-sessions__card-heading`};var _hoisted_12={class:`studio-archived-sessions__icon`};var _hoisted_13={class:`studio-archived-sessions__identity`};var _hoisted_14={class:`studio-archived-sessions__session-id`};var _hoisted_15={class:`studio-archived-sessions__meta`};var _hoisted_16=[`datetime`];var _sfc_main$1={__name:`ArchivedVibe64Sessions`,props:archivedVibe64SessionsProps,emits:archivedVibe64SessionsEmits,setup(__props,{expose:__expose,emit:__emit}){const{error,formatArchivedAt,loadSessions,loading,sessionRoute,sessions,unavailableSessions}=useArchivedVibe64Sessions(__emit);__expose({refresh:loadSessions});return(_ctx,_cache)=>{return openBlock(),createElementBlock(`section`,_hoisted_1$1,[_ctx.title||_ctx.$slots.title||_ctx.description||_ctx.showRefresh?(openBlock(),createElementBlock(`div`,{key:0,class:normalizeClass([`studio-archived-sessions__header`,{"studio-archived-sessions__header--actions-only":!_ctx.title&&!_ctx.$slots.title&&!_ctx.description}])},[_ctx.title||_ctx.$slots.title||_ctx.description?(openBlock(),createElementBlock(`div`,_hoisted_2,[renderSlot(_ctx.$slots,`title`,{},()=>[createBaseVNode(`h2`,_hoisted_3,toDisplayString(_ctx.title),1)],true),_ctx.description?(openBlock(),createElementBlock(`p`,_hoisted_4,toDisplayString(_ctx.description),1)):createCommentVNode(``,true)])):createCommentVNode(``,true),_ctx.showRefresh?(openBlock(),createBlock(VBtn,{key:1,class:`studio-archived-sessions__refresh`,disabled:unref(loading),"prepend-icon":unref(mdiRefresh),size:`small`,variant:`tonal`,onClick:unref(loadSessions)},{default:withCtx(()=>[createTextVNode(toDisplayString(unref(loading)?`Refreshing…`:`Refresh`),1)]),_:1},8,[`disabled`,`prepend-icon`,`onClick`])):createCommentVNode(``,true)],2)):createCommentVNode(``,true),unref(error)?(openBlock(),createBlock(VAlert,{key:1,type:`error`,variant:`tonal`,density:`comfortable`},{default:withCtx(()=>[createTextVNode(toDisplayString(unref(error)),1)]),_:1})):createCommentVNode(``,true),createVNode(Vibe64UnavailableSessions_default,{sessions:unref(unavailableSessions),loading:unref(loading),onRecheck:unref(loadSessions)},null,8,[`sessions`,`loading`,`onRecheck`]),unref(loading)&&unref(sessions).length<1?(openBlock(),createElementBlock(`div`,_hoisted_5,[(openBlock(),createElementBlock(Fragment,null,renderList(4,index=>{return createVNode(VCard,{key:`archived-session-skeleton-${index}`,class:`studio-archived-sessions__card`,rounded:`lg`,variant:`outlined`},{default:withCtx(()=>[createVNode(VCardText,{class:`studio-archived-sessions__card-body`},{default:withCtx(()=>[createBaseVNode(`div`,_hoisted_6,[createVNode(VSkeletonLoader,{class:`studio-archived-sessions__skeleton-icon`,type:`avatar`}),createBaseVNode(`div`,_hoisted_7,[createVNode(VSkeletonLoader,{type:`text`}),createVNode(VSkeletonLoader,{type:`chip@2`})]),createVNode(VSkeletonLoader,{class:`studio-archived-sessions__skeleton-button`,type:`button`})])]),_:1})]),_:1})}),64))])):createCommentVNode(``,true),!unref(loading)&&unref(sessions).length<1&&!unref(unavailableSessions).length&&!unref(error)?(openBlock(),createBlock(VSheet,{key:3,rounded:`lg`,border:``,class:`studio-archived-sessions__empty`},{default:withCtx(()=>[createBaseVNode(`h2`,_hoisted_8,toDisplayString(_ctx.emptyTitle),1),createBaseVNode(`p`,_hoisted_9,toDisplayString(_ctx.emptyText),1)]),_:1})):createCommentVNode(``,true),unref(sessions).length?(openBlock(),createElementBlock(`div`,_hoisted_10,[(openBlock(true),createElementBlock(Fragment,null,renderList(unref(sessions),session=>{return openBlock(),createBlock(VCard,{key:session.sessionId,class:`studio-archived-sessions__card`,rounded:`lg`,variant:`outlined`},{default:withCtx(()=>[createVNode(VCardText,{class:`studio-archived-sessions__card-body`},{default:withCtx(()=>[createBaseVNode(`div`,_hoisted_11,[createBaseVNode(`div`,_hoisted_12,[createVNode(VIcon,{icon:unref(mdiArchiveOutline),size:`22`},null,8,[`icon`])]),createBaseVNode(`div`,_hoisted_13,[createBaseVNode(`div`,_hoisted_14,toDisplayString(unref(vibe64SessionDisplayTitle)(session)),1),createBaseVNode(`div`,_hoisted_15,[createVNode(VChip,{color:unref(vibe64SessionStatusColor)(session.status),size:`x-small`,variant:`tonal`},{default:withCtx(()=>[createTextVNode(toDisplayString(unref(vibe64SessionStatusLabel)(session.status||`archived`)),1)]),_:2},1032,[`color`]),session.sourceReady?(openBlock(),createBlock(VChip,{key:0,color:`success`,size:`x-small`,variant:`tonal`},{default:withCtx(()=>[..._cache[0]||(_cache[0]=[createTextVNode(` source available `,-1)])]),_:1})):createCommentVNode(``,true)]),createBaseVNode(`time`,{class:`studio-archived-sessions__archived-at text-caption text-medium-emphasis`,datetime:session.archivedAt||void 0},` Archived `+toDisplayString(unref(formatArchivedAt)(session.archivedAt)),9,_hoisted_16)]),createVNode(VBtn,{class:`studio-archived-sessions__view`,"prepend-icon":unref(mdiEyeOutline),size:`small`,to:unref(sessionRoute)(session),variant:`tonal`},{default:withCtx(()=>[..._cache[1]||(_cache[1]=[createTextVNode(` View `,-1)])]),_:1},8,[`prepend-icon`,`to`])])]),_:2},1024)]),_:2},1024)}),128))])):createCommentVNode(``,true)])}}};var ArchivedVibe64Sessions_default=_plugin_vue_export_helper_default(_sfc_main$1,[[`__scopeId`,`data-v-9206865a`]]);var _hoisted_1={class:`vibe64-dashboard-page`};var _sfc_main={__name:`index`,setup(__props){return(_ctx,_cache)=>{return openBlock(),createElementBlock(`section`,_hoisted_1,[createVNode(ArchivedVibe64Sessions_default,{"empty-text":`Archived chats will appear here after their active workspaces are removed.`,"empty-title":`No archived chats`},{title:withCtx(()=>[createVNode(Vibe64DashboardPageHeader_default,{description:`Archived chats and their conversations.`,icon:unref(mdiHistory),title:`Session history`},null,8,[`icon`])]),_:1})])}}};var history_default=_plugin_vue_export_helper_default(_sfc_main,[[`__scopeId`,`data-v-6c313fbf`]]);export{history_default as default};
|