vibe64 0.1.38 → 0.1.39
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/assets/{GithubBrowserTabs-BykoCFfz.js → GithubBrowserTabs-C2NO5l8g.js} +1 -1
- package/dist/assets/{Vibe64AuthSettingsButton-CIwtchKm.js → Vibe64AuthSettingsButton-fY4ZiIFF.js} +1 -1
- package/dist/assets/{Vibe64DashboardShell-DXVDJUAY.js → Vibe64DashboardShell-BSq7uXEW.js} +1 -1
- package/dist/assets/{Vibe64DatabaseWorkspace-Ca8IHSRq.js → Vibe64DatabaseWorkspace-CEml9BWn.js} +1 -1
- package/dist/assets/{Vibe64OutputControls-DngQNTTt.js → Vibe64OutputControls-_zhGX9ne.js} +1 -1
- package/dist/assets/{Vibe64RepositoryWorkspace-BfsZozSJ.js → Vibe64RepositoryWorkspace-obZFXkoG.js} +1 -1
- package/dist/assets/{Vibe64SessionFiles-n87RqqY6.js → Vibe64SessionFiles-CQzs6fee.js} +1 -1
- package/dist/assets/{_sessionId_-B_TTRB4c.js → _sessionId_-CKkGH3Rx.js} +1 -1
- package/dist/assets/{_slug_-DsqilUs_.js → _slug_-BclonbST.js} +7 -7
- package/dist/assets/{_slug_-Buxpw0T4.css → _slug_-CZ1bxO9C.css} +1 -1
- package/dist/assets/{access-tl4ht_d8.js → access-WlhPvPgy.js} +1 -1
- package/dist/assets/{app-DT4_MliP.js → app-BNP_n_Tt.js} +1 -1
- package/dist/assets/{changes-DZWHZguL.js → changes-CHJjrZAc.js} +1 -1
- package/dist/assets/{dashboard-iREwhGqv.js → dashboard-CuutW8iv.js} +1 -1
- package/dist/assets/{definitions-CNu5E87y.js → definitions-BrMvu6yV.js} +1 -1
- package/dist/assets/{env-D5KpTEw7.js → env-D3KQGvRe.js} +1 -1
- package/dist/assets/{history-DVURy45X.js → history-1_NU8azF.js} +1 -1
- package/dist/assets/{index-GBRpNZLy.js → index-dNxr4Lg9.js} +4 -4
- package/dist/assets/{integrations-Dy5jIiJ5.js → integrations-BMzWQQpa.js} +1 -1
- package/dist/assets/{issues-lh7R775d.js → issues-Bywux4s7.js} +1 -1
- package/dist/assets/{learning-_O1PEaam.js → learning-Bdi3XRS7.js} +1 -1
- package/dist/assets/{pull-requests-ByE-Dvk7.js → pull-requests-ncmKT3sS.js} +1 -1
- package/dist/assets/{repository-BUfUAyS9.js → repository-BL_2bgzC.js} +1 -1
- package/dist/assets/{settings-CzhIcn9K.js → settings-1rpuL7eR.js} +1 -1
- package/dist/assets/{useArchivedVibe64Sessions-CLHJOyeW.js → useArchivedVibe64Sessions-_LB2XxEa.js} +1 -1
- package/dist/assets/{useVibe64ConversationLog-B4JgmxUf.js → useVibe64ConversationLog-BqUI0S5n.js} +1 -1
- package/dist/assets/{useVibe64SessionData-YhhE_5pC.js → useVibe64SessionData-B686lToN.js} +1 -1
- package/dist/assets/{useVibe64SessionSelection-CuZCzAcY.js → useVibe64SessionSelection-BzL1y_Vq.js} +1 -1
- package/dist/assets/{vibe64SessionFocus-Cz5Vq1re.js → vibe64SessionFocus-CqZNTvYF.js} +1 -1
- package/dist/index.html +1 -1
- package/docs/colleague-usage/learning-environment.md +1 -2
- package/docs/colleague-usage/lesson-step-bar.md +15 -16
- package/docs/training-content.md +2 -1
- package/package.json +2 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
import{D as createVNode,E as createTextVNode,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,xt as renderSlot,y as createCommentVNode}from"./runtime-core.esm-bundler-DGXg_mpN.js";import{T as ROUTE_VISIBILITY_PUBLIC,t as useEndpointResource}from"./useEndpointResource-DWoQ2keu.js";import{g as useRoute}from"./useApi-BPuI6ZR9-CFWU1m37.js";import{t as VChip}from"./VChip-CcI-Oo2J.js";import{t as VTextField}from"./VTextField-BR2eZeFT.js";import{St as mdiFileCogOutline,Vn as mdiRefresh}from"./mdi-CG9pWOSj.js";import{t as VBtn}from"./VBtn-B2MBK2DL.js";import{t as VAlert}from"./VAlert-P256xaE0.js";import{t as VCheckbox}from"./VCheckbox-C7A1ZW4D.js";import{t as VDialog}from"./VDialog-Bu3EfKb1.js";import{i as VCardTitle,n as VCardText,o as VCardActions,t as VCard}from"./VCard-mXy0k4aS.js";import{t as VSpacer}from"./VSpacer-Dhmsvk4t.js";import{i as VExpansionPanelText,n as VExpansionPanel,r as VExpansionPanelTitle,t as VExpansionPanels}from"./VExpansionPanels-Dgjrop0V.js";import{t as _plugin_vue_export_helper_default}from"./_plugin-vue_export-helper-DNW4j-dv.js";import{t as useCommand}from"./useCommand-Bqxb-naz.js";import{t as useVibe64ProjectSlug}from"./useVibe64ProjectScope-Bp1ImZlz.js";import{Kt as VTabs,Zt as VTable,qt as VTab}from"./index-GBRpNZLy.js";import{_ as VIBE64_ENV_USER_VALUES_API_SUFFIX,a as ENV_SECRET_REVEAL_ENDPOINT,g as VIBE64_ENV_SECRET_REVEAL_API_SUFFIX,i as ENV_ENDPOINT,o as ENV_USER_VALUES_ENDPOINT,w as envQueryKey,y as VIBE64_PROJECT_CHANGED_EVENT}from"./studioGateApi-DcCqiD9V.js";import{t as Vibe64AsyncModuleState_default}from"./Vibe64AsyncModuleState-Do9EqX3S.js";import{n as useVibe64SessionSelection}from"./useVibe64SessionSelection-CuZCzAcY.js";import{t as Vibe64DashboardPageHeader_default}from"./Vibe64DashboardPageHeader-BXQR00HK.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={key:0,class:`runtime-config-records-table__secret-value`};var _hoisted_5$2={key:0};var _hoisted_6={class:`runtime-config-records-table__edit`};var _sfc_main$3={__name:`RuntimeConfigRecordsTable`,props:{environmentLabel:{default:`environment`,type:String},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`,`remove-record`,`reveal-secret`,`save-record`],setup(__props,{emit:__emit}){const emit=__emit;const props=__props;const draftValues=ref({});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??``)}}function recordValueLabel(record={}){if(record.secret)return secretIsRevealed(record)?String(props.revealedSecrets[record.key]??``):record.valuePresent?`********`:``;return String(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)}function saveRecord(record={}){if(!props.showActions||!draftTouched(record))return;const key=recordKey(record);const value=draftValue(record);const nextDraftValues={...draftValues.value};delete nextDraftValues[key];draftValues.value=nextDraftValues;emit(`save-record`,{record,value})}function removeRecord(record={}){if(props.showActions)emit(`remove-record`,record)}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[0]||(_cache[0]=createBaseVNode(`col`,{class:`runtime-config-records-table__key-column`},null,-1)),_cache[1]||(_cache[1]=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[2]||(_cache[2]=createBaseVNode(`th`,null,`Key`,-1)),_cache[3]||(_cache[3]=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,[record.secret?(openBlock(),createElementBlock(`div`,_hoisted_4$2,[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:1},[createTextVNode(toDisplayString(recordValueLabel(record)),1)],64))]),__props.showActions?(openBlock(),createElementBlock(`td`,_hoisted_5$2,[createBaseVNode(`div`,_hoisted_6,[createVNode(VTextField,{"model-value":draftValue(record),type:record.secret?`password`:`text`,density:`compact`,"hide-details":``,label:`New value`,spellcheck:`false`,variant:`outlined`,"onUpdate:modelValue":$event=>setDraftValue(record,$event)},null,8,[`model-value`,`type`,`onUpdate:modelValue`]),createVNode(VBtn,{disabled:!draftTouched(record),loading:__props.saveBusy,size:`small`,type:`button`,variant:`tonal`,onClick:$event=>saveRecord(record)},{default:withCtx(()=>[..._cache[4]||(_cache[4]=[createTextVNode(` Save `,-1)])]),_:1},8,[`disabled`,`loading`,`onClick`]),createVNode(VBtn,{loading:__props.saveBusy,size:`small`,type:`button`,variant:`text`,onClick:$event=>removeRecord(record)},{default:withCtx(()=>[..._cache[5]||(_cache[5]=[createTextVNode(` Remove `,-1)])]),_:1},8,[`loading`,`onClick`])])])):createCommentVNode(``,true)])}),128))])]),_:1})}}};var RuntimeConfigRecordsTable_default=_plugin_vue_export_helper_default(_sfc_main$3,[[`__scopeId`,`data-v-415eca92`]]);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},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`,`remove-record`,`reveal-secret`,`save-record`],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}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":``,onHideSecret:_cache[0]||(_cache[0]=$event=>_ctx.$emit(`hide-secret`,$event)),onRemoveRecord:_cache[1]||(_cache[1]=$event=>_ctx.$emit(`remove-record`,$event)),onRevealSecret:_cache[2]||(_cache[2]=$event=>_ctx.$emit(`reveal-secret`,$event)),onSaveRecord:_cache[3]||(_cache[3]=$event=>_ctx.$emit(`save-record`,$event))},null,8,[`environment-label`,`records`,`revealed-secrets`,`save-busy`,`secret-reveal-busy-key`,`secret-reveal-enabled`])):(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[4]||(_cache[4]=$event=>_ctx.$emit(`hide-secret`,$event)),onRevealSecret:_cache[5]||(_cache[5]=$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-3c890d9c`]]);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:2,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 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 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}});watch([projectSlug,selectedSessionId],clearRevealedSecrets);const env=computed(()=>envResource.data.value?.env||{});const envConfigSourceLabel=computed(()=>String(env.value?.configSource?.label||``));const envLoading=computed(()=>envResource.isLoading.value===true);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(){clearRevealedSecrets();await envResource.reload()}async function saveRecord({record={},value=``}={}){if(!recordEditable(record))return;await saveValues({[record.key]:{secret:record.secret===true,value}})}function requestRemoveRecord(record={}){if(!recordEditable(record))return;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}await saveValues({[record.key]:{remove:true}});pendingRemoval.value=null}async function saveNewValue(){const key=String(newValue.value.key||``).trim();if(!key)return;await saveValues({[key]:{secret:newValue.value.secret===true,value:newValue.value.value}});newValue.value=emptyNewValue()}async function saveValues(values={}){clearRevealedSecrets();await saveCommand.run({values});await envResource.reload()}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(),createBlock(VBtn,{key:0,loading:envLoading.value,"prepend-icon":unref(mdiRefresh),rounded:`pill`,type:`button`,variant:`tonal`,onClick:refresh},{default:withCtx(()=>[..._cache[5]||(_cache[5]=[createTextVNode(` Refresh `,-1)])]),_:1},8,[`loading`,`prepend-icon`])):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[6]||(_cache[6]=[createTextVNode(`Development`,-1)])]),_:1}),renderSlot(_ctx.$slots,`tabs`,{},void 0,true)]),_:3},8,[`modelValue`]),projectEnvTabActive.value&&(envLoading.value||envLoadError.value)?(openBlock(),createBlock(Vibe64AsyncModuleState_default,{key:0,label:`Env`,loading:envLoading.value,message:envLoadError.value||`Loading Env.`,"min-height":`12rem`,onReload:reloadPage,onRetry:refresh},null,8,[`loading`,`message`])):projectEnvTabActive.value?(openBlock(),createElementBlock(Fragment,{key:1},[envUnavailable.value?(openBlock(),createBlock(VAlert,{key:0,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:1,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[7]||(_cache[7]=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:3,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[1]||(_cache[1]=$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[2]||(_cache[2]=$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[3]||(_cache[3]=$event=>newValue.value.secret=$event),density:`compact`,"hide-details":``,label:`Secret`},null,8,[`modelValue`]),createVNode(VBtn,{disabled:!newValue.value.key,loading:saveBusy.value,color:`primary`,type:`button`,variant:`flat`,onClick:saveNewValue},{default:withCtx(()=>[createTextVNode(toDisplayString(existingNewValue.value?`Replace value`:`Add`),1)]),_:1},8,[`disabled`,`loading`])]),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},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[4]||(_cache[4]=$event=>removeConfirmOpen.value=$event),"max-width":`30rem`},{default:withCtx(()=>[createVNode(VCard,null,{default:withCtx(()=>[createVNode(VCardTitle,null,{default:withCtx(()=>[..._cache[8]||(_cache[8]=[createTextVNode(`Remove Env value?`,-1)])]),_:1}),createVNode(VCardText,null,{default:withCtx(()=>[createBaseVNode(`code`,null,toDisplayString(pendingRemovalKey.value),1),_cache[9]||(_cache[9]=createTextVNode(` will no longer be supplied to this project's development processes. `,-1))]),_:1}),createVNode(VCardActions,null,{default:withCtx(()=>[createVNode(VSpacer),createVNode(VBtn,{disabled:saveBusy.value,type:`button`,variant:`text`,onClick:cancelRemoveRecord},{default:withCtx(()=>[..._cache[10]||(_cache[10]=[createTextVNode(` Cancel `,-1)])]),_:1},8,[`disabled`]),createVNode(VBtn,{color:`error`,loading:saveBusy.value,type:`button`,variant:`flat`,onClick:confirmRemoveRecord},{default:withCtx(()=>[..._cache[11]||(_cache[11]=[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-681a8f14`]]);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{D as createVNode,E as createTextVNode,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,xt as renderSlot,y as createCommentVNode}from"./runtime-core.esm-bundler-DGXg_mpN.js";import{T as ROUTE_VISIBILITY_PUBLIC,t as useEndpointResource}from"./useEndpointResource-DWoQ2keu.js";import{g as useRoute}from"./useApi-BPuI6ZR9-CFWU1m37.js";import{t as VChip}from"./VChip-CcI-Oo2J.js";import{t as VTextField}from"./VTextField-BR2eZeFT.js";import{St as mdiFileCogOutline,Vn as mdiRefresh}from"./mdi-CG9pWOSj.js";import{t as VBtn}from"./VBtn-B2MBK2DL.js";import{t as VAlert}from"./VAlert-P256xaE0.js";import{t as VCheckbox}from"./VCheckbox-C7A1ZW4D.js";import{t as VDialog}from"./VDialog-Bu3EfKb1.js";import{i as VCardTitle,n as VCardText,o as VCardActions,t as VCard}from"./VCard-mXy0k4aS.js";import{t as VSpacer}from"./VSpacer-Dhmsvk4t.js";import{i as VExpansionPanelText,n as VExpansionPanel,r as VExpansionPanelTitle,t as VExpansionPanels}from"./VExpansionPanels-Dgjrop0V.js";import{t as _plugin_vue_export_helper_default}from"./_plugin-vue_export-helper-DNW4j-dv.js";import{t as useCommand}from"./useCommand-Bqxb-naz.js";import{t as useVibe64ProjectSlug}from"./useVibe64ProjectScope-Bp1ImZlz.js";import{Kt as VTabs,Zt as VTable,qt as VTab}from"./index-dNxr4Lg9.js";import{_ as VIBE64_ENV_USER_VALUES_API_SUFFIX,a as ENV_SECRET_REVEAL_ENDPOINT,g as VIBE64_ENV_SECRET_REVEAL_API_SUFFIX,i as ENV_ENDPOINT,o as ENV_USER_VALUES_ENDPOINT,w as envQueryKey,y as VIBE64_PROJECT_CHANGED_EVENT}from"./studioGateApi-DcCqiD9V.js";import{t as Vibe64AsyncModuleState_default}from"./Vibe64AsyncModuleState-Do9EqX3S.js";import{n as useVibe64SessionSelection}from"./useVibe64SessionSelection-BzL1y_Vq.js";import{t as Vibe64DashboardPageHeader_default}from"./Vibe64DashboardPageHeader-BXQR00HK.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={key:0,class:`runtime-config-records-table__secret-value`};var _hoisted_5$2={key:0};var _hoisted_6={class:`runtime-config-records-table__edit`};var _sfc_main$3={__name:`RuntimeConfigRecordsTable`,props:{environmentLabel:{default:`environment`,type:String},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`,`remove-record`,`reveal-secret`,`save-record`],setup(__props,{emit:__emit}){const emit=__emit;const props=__props;const draftValues=ref({});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??``)}}function recordValueLabel(record={}){if(record.secret)return secretIsRevealed(record)?String(props.revealedSecrets[record.key]??``):record.valuePresent?`********`:``;return String(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)}function saveRecord(record={}){if(!props.showActions||!draftTouched(record))return;const key=recordKey(record);const value=draftValue(record);const nextDraftValues={...draftValues.value};delete nextDraftValues[key];draftValues.value=nextDraftValues;emit(`save-record`,{record,value})}function removeRecord(record={}){if(props.showActions)emit(`remove-record`,record)}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[0]||(_cache[0]=createBaseVNode(`col`,{class:`runtime-config-records-table__key-column`},null,-1)),_cache[1]||(_cache[1]=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[2]||(_cache[2]=createBaseVNode(`th`,null,`Key`,-1)),_cache[3]||(_cache[3]=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,[record.secret?(openBlock(),createElementBlock(`div`,_hoisted_4$2,[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:1},[createTextVNode(toDisplayString(recordValueLabel(record)),1)],64))]),__props.showActions?(openBlock(),createElementBlock(`td`,_hoisted_5$2,[createBaseVNode(`div`,_hoisted_6,[createVNode(VTextField,{"model-value":draftValue(record),type:record.secret?`password`:`text`,density:`compact`,"hide-details":``,label:`New value`,spellcheck:`false`,variant:`outlined`,"onUpdate:modelValue":$event=>setDraftValue(record,$event)},null,8,[`model-value`,`type`,`onUpdate:modelValue`]),createVNode(VBtn,{disabled:!draftTouched(record),loading:__props.saveBusy,size:`small`,type:`button`,variant:`tonal`,onClick:$event=>saveRecord(record)},{default:withCtx(()=>[..._cache[4]||(_cache[4]=[createTextVNode(` Save `,-1)])]),_:1},8,[`disabled`,`loading`,`onClick`]),createVNode(VBtn,{loading:__props.saveBusy,size:`small`,type:`button`,variant:`text`,onClick:$event=>removeRecord(record)},{default:withCtx(()=>[..._cache[5]||(_cache[5]=[createTextVNode(` Remove `,-1)])]),_:1},8,[`loading`,`onClick`])])])):createCommentVNode(``,true)])}),128))])]),_:1})}}};var RuntimeConfigRecordsTable_default=_plugin_vue_export_helper_default(_sfc_main$3,[[`__scopeId`,`data-v-415eca92`]]);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},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`,`remove-record`,`reveal-secret`,`save-record`],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}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":``,onHideSecret:_cache[0]||(_cache[0]=$event=>_ctx.$emit(`hide-secret`,$event)),onRemoveRecord:_cache[1]||(_cache[1]=$event=>_ctx.$emit(`remove-record`,$event)),onRevealSecret:_cache[2]||(_cache[2]=$event=>_ctx.$emit(`reveal-secret`,$event)),onSaveRecord:_cache[3]||(_cache[3]=$event=>_ctx.$emit(`save-record`,$event))},null,8,[`environment-label`,`records`,`revealed-secrets`,`save-busy`,`secret-reveal-busy-key`,`secret-reveal-enabled`])):(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[4]||(_cache[4]=$event=>_ctx.$emit(`hide-secret`,$event)),onRevealSecret:_cache[5]||(_cache[5]=$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-3c890d9c`]]);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:2,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 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 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}});watch([projectSlug,selectedSessionId],clearRevealedSecrets);const env=computed(()=>envResource.data.value?.env||{});const envConfigSourceLabel=computed(()=>String(env.value?.configSource?.label||``));const envLoading=computed(()=>envResource.isLoading.value===true);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(){clearRevealedSecrets();await envResource.reload()}async function saveRecord({record={},value=``}={}){if(!recordEditable(record))return;await saveValues({[record.key]:{secret:record.secret===true,value}})}function requestRemoveRecord(record={}){if(!recordEditable(record))return;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}await saveValues({[record.key]:{remove:true}});pendingRemoval.value=null}async function saveNewValue(){const key=String(newValue.value.key||``).trim();if(!key)return;await saveValues({[key]:{secret:newValue.value.secret===true,value:newValue.value.value}});newValue.value=emptyNewValue()}async function saveValues(values={}){clearRevealedSecrets();await saveCommand.run({values});await envResource.reload()}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(),createBlock(VBtn,{key:0,loading:envLoading.value,"prepend-icon":unref(mdiRefresh),rounded:`pill`,type:`button`,variant:`tonal`,onClick:refresh},{default:withCtx(()=>[..._cache[5]||(_cache[5]=[createTextVNode(` Refresh `,-1)])]),_:1},8,[`loading`,`prepend-icon`])):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[6]||(_cache[6]=[createTextVNode(`Development`,-1)])]),_:1}),renderSlot(_ctx.$slots,`tabs`,{},void 0,true)]),_:3},8,[`modelValue`]),projectEnvTabActive.value&&(envLoading.value||envLoadError.value)?(openBlock(),createBlock(Vibe64AsyncModuleState_default,{key:0,label:`Env`,loading:envLoading.value,message:envLoadError.value||`Loading Env.`,"min-height":`12rem`,onReload:reloadPage,onRetry:refresh},null,8,[`loading`,`message`])):projectEnvTabActive.value?(openBlock(),createElementBlock(Fragment,{key:1},[envUnavailable.value?(openBlock(),createBlock(VAlert,{key:0,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:1,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[7]||(_cache[7]=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:3,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[1]||(_cache[1]=$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[2]||(_cache[2]=$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[3]||(_cache[3]=$event=>newValue.value.secret=$event),density:`compact`,"hide-details":``,label:`Secret`},null,8,[`modelValue`]),createVNode(VBtn,{disabled:!newValue.value.key,loading:saveBusy.value,color:`primary`,type:`button`,variant:`flat`,onClick:saveNewValue},{default:withCtx(()=>[createTextVNode(toDisplayString(existingNewValue.value?`Replace value`:`Add`),1)]),_:1},8,[`disabled`,`loading`])]),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},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[4]||(_cache[4]=$event=>removeConfirmOpen.value=$event),"max-width":`30rem`},{default:withCtx(()=>[createVNode(VCard,null,{default:withCtx(()=>[createVNode(VCardTitle,null,{default:withCtx(()=>[..._cache[8]||(_cache[8]=[createTextVNode(`Remove Env value?`,-1)])]),_:1}),createVNode(VCardText,null,{default:withCtx(()=>[createBaseVNode(`code`,null,toDisplayString(pendingRemovalKey.value),1),_cache[9]||(_cache[9]=createTextVNode(` will no longer be supplied to this project's development processes. `,-1))]),_:1}),createVNode(VCardActions,null,{default:withCtx(()=>[createVNode(VSpacer),createVNode(VBtn,{disabled:saveBusy.value,type:`button`,variant:`text`,onClick:cancelRemoveRecord},{default:withCtx(()=>[..._cache[10]||(_cache[10]=[createTextVNode(` Cancel `,-1)])]),_:1},8,[`disabled`]),createVNode(VBtn,{color:`error`,loading:saveBusy.value,type:`button`,variant:`flat`,onClick:confirmRemoveRecord},{default:withCtx(()=>[..._cache[11]||(_cache[11]=[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-681a8f14`]]);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{h as VIcon}from"./ripple-BVltMmyV.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{t as VChip}from"./VChip-CcI-Oo2J.js";import{Ut as mdiHistory}from"./mdi-CG9pWOSj.js";import{t as VBtn}from"./VBtn-B2MBK2DL.js";import{t as VAlert}from"./VAlert-P256xaE0.js";import{t as VSheet}from"./VSheet-DZWsu0kL.js";import{n as VCardText,t as VCard}from"./VCard-mXy0k4aS.js";import{t as VSkeletonLoader}from"./VSkeletonLoader-CttxM1tw.js";import{t as _plugin_vue_export_helper_default}from"./_plugin-vue_export-helper-DNW4j-dv.js";import{t as Vibe64UnavailableSessions_default}from"./Vibe64UnavailableSessions-Ca5nC7KH.js";import{t as Vibe64DashboardPageHeader_default}from"./Vibe64DashboardPageHeader-BXQR00HK.js";import{n as archivedVibe64SessionsEmits,o as useArchivedVibe64Sessions,r as archivedVibe64SessionsProps}from"./useArchivedVibe64Sessions-
|
|
1
|
+
import{h as VIcon}from"./ripple-BVltMmyV.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{t as VChip}from"./VChip-CcI-Oo2J.js";import{Ut as mdiHistory}from"./mdi-CG9pWOSj.js";import{t as VBtn}from"./VBtn-B2MBK2DL.js";import{t as VAlert}from"./VAlert-P256xaE0.js";import{t as VSheet}from"./VSheet-DZWsu0kL.js";import{n as VCardText,t as VCard}from"./VCard-mXy0k4aS.js";import{t as VSkeletonLoader}from"./VSkeletonLoader-CttxM1tw.js";import{t as _plugin_vue_export_helper_default}from"./_plugin-vue_export-helper-DNW4j-dv.js";import{t as Vibe64UnavailableSessions_default}from"./Vibe64UnavailableSessions-Ca5nC7KH.js";import{t as Vibe64DashboardPageHeader_default}from"./Vibe64DashboardPageHeader-BXQR00HK.js";import{n as archivedVibe64SessionsEmits,o as useArchivedVibe64Sessions,r as archivedVibe64SessionsProps}from"./useArchivedVibe64Sessions-_LB2XxEa.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{archiveIcon,error,formatArchivedAt,loadSessions,loading,mdiEyeOutline,mdiRefresh,sessionRoute,sessions,unavailableSessions,shortSessionId,statusColor,statusLabel}=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(archiveIcon),size:`22`},null,8,[`icon`])]),createBaseVNode(`div`,_hoisted_13,[createBaseVNode(`div`,_hoisted_14,toDisplayString(session.sessionName||unref(shortSessionId)(session.sessionId)),1),createBaseVNode(`div`,_hoisted_15,[createVNode(VChip,{color:unref(statusColor)(session.status),size:`x-small`,variant:`tonal`},{default:withCtx(()=>[createTextVNode(toDisplayString(unref(statusLabel)(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-594ec046`]]);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};
|