vibe64 0.1.35 → 0.1.36

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.
Files changed (208) hide show
  1. package/bin/run.js +1919 -1660
  2. package/bin/server.js +158 -111
  3. package/bin/upgrade-state.js +5783 -5605
  4. package/dist/assets/GithubBrowserTabs-BzJF4k9Y.js +1 -0
  5. package/dist/assets/{StudioErrorNotice-sQfmeR-z.js → StudioErrorNotice-BdllGqRy.js} +1 -1
  6. package/dist/assets/{Vibe64AsyncModuleState-Dx7YKRPp.js → Vibe64AsyncModuleState-Bi0TqlIu.js} +1 -1
  7. package/dist/assets/Vibe64AuthSettingsButton-BuvmwGiT.js +5 -0
  8. package/dist/assets/Vibe64AuthSettingsButton-M44SSmZ9.css +1 -0
  9. package/dist/assets/{Vibe64DashboardBackButton-yE6cyYg2.js → Vibe64DashboardBackButton-Ccd4hpD6.js} +1 -1
  10. package/dist/assets/Vibe64DashboardShell-D67m4aWz.js +1 -0
  11. package/dist/assets/{Vibe64DashboardShell-MBkUHjs-.css → Vibe64DashboardShell-De2mbdpI.css} +1 -1
  12. package/dist/assets/{Vibe64DatabaseWorkspace-BONJdxBS.js → Vibe64DatabaseWorkspace-D3uK1gDm.js} +3 -3
  13. package/dist/assets/{Vibe64DatabaseWorkspace-CR4pzzcf.css → Vibe64DatabaseWorkspace-DPDMxhAW.css} +1 -1
  14. package/dist/assets/Vibe64OutputControls-BfESn5kJ.js +8 -0
  15. package/dist/assets/Vibe64OutputControls-D2CCECo5.css +1 -0
  16. package/dist/assets/{Vibe64RepositoryWorkspace-ByQlZbyO.js → Vibe64RepositoryWorkspace-0jAxvdA8.js} +2 -2
  17. package/dist/assets/{Vibe64RepositoryWorkspace-CVHcT93M.css → Vibe64RepositoryWorkspace-Agyt4O-V.css} +1 -1
  18. package/dist/assets/Vibe64SessionFiles-B3ONZrBL.css +1 -0
  19. package/dist/assets/Vibe64SessionFiles-BCOJ4QmR.js +41 -0
  20. package/dist/assets/{Vibe64TemporaryAiFixAction-BGlcrq4d.js → Vibe64TemporaryAiFixAction-DM2jpPbQ.js} +1 -1
  21. package/dist/assets/{Vibe64UiStoryboardView-Brlwdvqi.js → Vibe64UiStoryboardView-DP5af46a.js} +1 -1
  22. package/dist/assets/{Vibe64UnavailableSessions-zwlWlcZD.js → Vibe64UnavailableSessions-C7XwH1SS.js} +1 -1
  23. package/dist/assets/{_sessionId_-CvOkQbVy.js → _sessionId_-B1Ymr7c_.js} +1 -1
  24. package/dist/assets/{_sessionTool_-Dwod5ns9.js → _sessionTool_-DVYdREoI.js} +1 -1
  25. package/dist/assets/_slug_-CQseA9pt.css +1 -0
  26. package/dist/assets/_slug_-CYO2vjCd.js +24 -0
  27. package/dist/assets/{access-BVu5XYm2.js → access-Cb7dkN53.js} +1 -1
  28. package/dist/assets/app-BvgY7oVf.js +1 -0
  29. package/dist/assets/app-CZu7oxUO.css +1 -0
  30. package/dist/assets/{assistantRouting-CwbwfkwB.js → assistantRouting-B38ujQ7x.js} +1 -1
  31. package/dist/assets/{changes-olY8cnFK.js → changes-lsBcuikn.js} +1 -1
  32. package/dist/assets/client-CRI5CNKl.js +2 -0
  33. package/dist/assets/client-TGaWwOhc.css +1 -0
  34. package/dist/assets/conversation-CDEt9jBx.js +17 -0
  35. package/dist/assets/conversation-vxJGwmtW.css +1 -0
  36. package/dist/assets/{dashboard-BnXD-H4R.js → dashboard-D8HOAw46.js} +1 -1
  37. package/dist/assets/definitions-DLTX17nI.js +1 -0
  38. package/dist/assets/{env-DJhnLOH7.css → env-BzRtyO0w.css} +1 -1
  39. package/dist/assets/env-DJezQixO.js +1 -0
  40. package/dist/assets/health-BJvooRnJ.css +1 -0
  41. package/dist/assets/health-CtKdN_Nf.js +1 -0
  42. package/dist/assets/{history-BxlpB-YH.js → history-BdZFOtz4.js} +1 -1
  43. package/dist/assets/{incoming-BOxRVlOM.js → incoming-VsQNnL9m.js} +1 -1
  44. package/dist/assets/index-C-osVUKw.css +1 -0
  45. package/dist/assets/index-C4K3ntms.js +138 -0
  46. package/dist/assets/{integrations-BFltGDVI.js → integrations-CMQ9EDmt.js} +2 -2
  47. package/dist/assets/issues-DHpY5hSr.js +1 -0
  48. package/dist/assets/learning-DXlMuwzh.js +1 -0
  49. package/dist/assets/mdi-yXT-CQ6u.js +1 -0
  50. package/dist/assets/placement-NpX2s7u8.js +1 -0
  51. package/dist/assets/pull-requests-BcKNEUYH.js +1 -0
  52. package/dist/assets/{repository-JWLVST3D.js → repository-ClEgntHW.js} +1 -1
  53. package/dist/assets/roboto-latin-wght-normal-ccAYIvAh.woff2 +0 -0
  54. package/dist/assets/{session-C5Nj8Dlq.js → session-BlD46q-d.js} +1 -1
  55. package/dist/assets/settings-BwukeIKe.js +1 -0
  56. package/dist/assets/shared-BM2SV6fi.js +2 -0
  57. package/dist/assets/studioGateApi-DcCqiD9V.js +1 -0
  58. package/dist/assets/studioUrls-DmMMIScP.js +1 -0
  59. package/dist/assets/useArchivedVibe64Sessions-D5zUA-BC.js +1 -0
  60. package/dist/assets/useCommand-Bqxb-naz.js +1 -0
  61. package/dist/assets/useEndpointResource-DWoQ2keu.js +1 -0
  62. package/dist/assets/useRealtimeEvent-Bwapstla.js +1 -0
  63. package/dist/assets/{useUiFeedback-0FqKuZRP.js → useUiFeedback-BPBF_0bp.js} +1 -1
  64. package/dist/assets/useVibe64ConversationLog-Dy6YTPQn.js +1 -0
  65. package/dist/assets/useVibe64DatabaseTools-d6L09ugW.js +1 -0
  66. package/dist/assets/useVibe64Learning-cNKTv64W.js +1 -0
  67. package/dist/assets/useVibe64ProjectScope-Bp1ImZlz.js +1 -0
  68. package/dist/assets/useVibe64SessionData-C_jqncih.js +1 -0
  69. package/dist/assets/useVibe64SessionSelection-uCEIWd3b.js +1 -0
  70. package/dist/assets/useVibe64SystemGraph-B4RmsC9Y.js +1 -0
  71. package/dist/assets/{useVibe64Terminal-BPnN25WH.js → useVibe64Terminal-BbghGR4x.js} +1 -1
  72. package/dist/assets/vibe64AssistantHost-BL1bnKm8.js +1 -0
  73. package/dist/assets/{vibe64SessionFocus-kqPOPaOH.js → vibe64SessionFocus-DSJKVuRN.js} +1 -1
  74. package/dist/assets/{vibe64SessionInfo-BHxtTrLX.js → vibe64SessionInfo-B_r1OMN0.js} +1 -1
  75. package/dist/assets/{vibe64SessionPanelModel-BMf64fv7.js → vibe64SessionPanelModel-DDorOuiL.js} +1 -1
  76. package/dist/assets/{vibe64SessionToolDefinitions-NfLd1HZI.js → vibe64SessionToolDefinitions-BualCK_5.js} +1 -1
  77. package/dist/index.html +21 -20
  78. package/docs/colleague-usage/account-profile-and-appearance.md +8 -2
  79. package/docs/colleague-usage/ai-accounts-and-routing.md +123 -15
  80. package/docs/colleague-usage/ai-onboarding.md +230 -0
  81. package/docs/colleague-usage/coding-agent-goal-pause.md +5 -5
  82. package/docs/colleague-usage/coding-agents.md +17 -0
  83. package/docs/colleague-usage/colleague-watches.md +4 -23
  84. package/docs/colleague-usage/colleague.md +10 -2
  85. package/docs/colleague-usage/connected-projects.md +2 -2
  86. package/docs/colleague-usage/conversation-context.md +2 -0
  87. package/docs/colleague-usage/dashboard-navigation.md +19 -27
  88. package/docs/colleague-usage/database.md +6 -11
  89. package/docs/colleague-usage/development-copies.md +2 -1
  90. package/docs/colleague-usage/development-env.md +6 -0
  91. package/docs/colleague-usage/github-work.md +9 -0
  92. package/docs/colleague-usage/health-checks.md +11 -5
  93. package/docs/colleague-usage/integrations.md +3 -1
  94. package/docs/colleague-usage/learning-code-questions.md +23 -51
  95. package/docs/colleague-usage/learning-course-catalogue.md +8 -6
  96. package/docs/colleague-usage/learning-environment.md +345 -0
  97. package/docs/colleague-usage/learning-history.md +70 -101
  98. package/docs/colleague-usage/learning-mode-ui.md +122 -214
  99. package/docs/colleague-usage/learning-practice-projects.md +168 -78
  100. package/docs/colleague-usage/learning-teacher-guide.md +48 -26
  101. package/docs/colleague-usage/learning-with-colleague.md +171 -216
  102. package/docs/colleague-usage/lesson-authoring.md +32 -24
  103. package/docs/colleague-usage/managed-app-access.md +7 -0
  104. package/docs/colleague-usage/message-delivery-recovery.md +7 -6
  105. package/docs/colleague-usage/preview-browser-checks.md +9 -1
  106. package/docs/colleague-usage/preview-starting-application.md +0 -1
  107. package/docs/colleague-usage/preview.md +9 -1
  108. package/docs/colleague-usage/project-messages.md +2 -2
  109. package/docs/colleague-usage/project-setup.md +9 -2
  110. package/docs/colleague-usage/running-vibe64-on-your-computer.md +61 -0
  111. package/docs/colleague-usage/sessions.md +25 -33
  112. package/docs/colleague-usage/teaching-content.md +11 -40
  113. package/docs/colleague-usage/temporary-chats.md +23 -2
  114. package/docs/colleague-usage/voice-chat.md +5 -10
  115. package/docs/colleague-usage/voice-face-and-speaking-voice.md +6 -8
  116. package/docs/colleague-usage/voice-recovery.md +3 -2
  117. package/docs/templates/learn-topic/README.md +6 -6
  118. package/docs/templates/learn-topic/training/lessons/TOPIC-01/lesson.json +28 -7
  119. package/docs/templates/learn-topic/training/lessons/TOPIC-01/notes.md +19 -0
  120. package/docs/templates/learn-topic/training/lessons/TOPIC-01/steps/check-understanding.md +3 -0
  121. package/docs/templates/learn-topic/training/lessons/TOPIC-01/steps/explain-idea.md +3 -0
  122. package/docs/templates/learn-topic/training/lessons/TOPIC-01/steps/try-it.md +3 -0
  123. package/docs/templates/learn-topic/training/outline.md +1 -1
  124. package/docs/training-content.md +179 -65
  125. package/node_modules/@jskit-ai/assistant-core/package.json +1 -1
  126. package/node_modules/@jskit-ai/assistant-runtime/package.json +1 -1
  127. package/node_modules/@jskit-ai/assistant-runtime/patterns/assistant-surface/PATTERN.md +3 -2
  128. package/node_modules/@jskit-ai/assistant-runtime/patterns/assistant-surface/example/integrations.json +3 -2
  129. package/node_modules/@jskit-ai/assistant-voice/package.json +1 -1
  130. package/node_modules/@jskit-ai/connectors-catalog/package.json +1 -1
  131. package/node_modules/@jskit-ai/connectors-catalog/patterns/ai-connections/PATTERN.md +4 -3
  132. package/node_modules/@jskit-ai/connectors-catalog/src/shared/ai-models.json +0 -1
  133. package/node_modules/@local/vibe64-accounts/package.json +1 -0
  134. package/node_modules/@local/vibe64-colleague/package.json +2 -1
  135. package/node_modules/@local/vibe64-core/package.json +3 -0
  136. package/node_modules/@local/vibe64-execution/package.json +1 -0
  137. package/node_modules/@local/vibe64-execution/src/host/execHelper.js +171 -174
  138. package/node_modules/@local/vibe64-execution/src/server/engines/stdioBridge.js +9 -9
  139. package/node_modules/@local/vibe64-genesis/README.md +10 -37
  140. package/node_modules/@local/vibe64-genesis/bin/vibe64-genesis-host-context +790 -779
  141. package/node_modules/@local/vibe64-genesis/package.json +1 -0
  142. package/node_modules/@local/vibe64-genesis/src/server/agentSpecs.js +255 -0
  143. package/node_modules/@local/vibe64-genesis/src/server/index.js +473 -450
  144. package/node_modules/@local/vibe64-genesis/src/server/promptContext.js +148 -148
  145. package/node_modules/@local/vibe64-project/package.json +2 -1
  146. package/node_modules/@local/vibe64-runtime/package.json +1 -2
  147. package/node_modules/@local/vibe64-runtime/src/server/codexAppServerProcess.js +526 -512
  148. package/node_modules/@local/vibe64-runtime/src/shared/assistantRoutingScores.json +0 -1
  149. package/node_modules/@local/vibe64-source-editor/package.json +1 -0
  150. package/node_modules/@local/vibe64-terminals/package.json +1 -0
  151. package/node_modules/@local/vibe64-terminals/src/server/opencodeSessionEnvironmentPlugin.js +129 -131
  152. package/node_modules/@local/vibe64-terminals/src/server/sessionWorkOperationCommand.js +1508 -1456
  153. package/node_modules/@local/vibe64-training/package.json +13 -27
  154. package/package.json +7 -7
  155. package/server.bundle.mjs +40946 -41456
  156. package/dist/assets/GithubBrowserTabs-DO5PHon-.js +0 -1
  157. package/dist/assets/GithubMarkdown-BQ6MfCDJ.js +0 -3
  158. package/dist/assets/GithubMarkdown-U7-j-qNI.css +0 -1
  159. package/dist/assets/Vibe64DashboardShell-CuCVMhOc.js +0 -1
  160. package/dist/assets/Vibe64OutputControls-DAAmA09l.js +0 -8
  161. package/dist/assets/Vibe64OutputControls-DPBsyDZM.css +0 -1
  162. package/dist/assets/Vibe64SessionFiles-B0u9HKdF.js +0 -107
  163. package/dist/assets/Vibe64SessionFiles-NjOMVwPR.css +0 -1
  164. package/dist/assets/_slug_-B31c15cc.css +0 -1
  165. package/dist/assets/_slug_-Dy35qLo1.js +0 -1
  166. package/dist/assets/app-DRXCcv05.css +0 -1
  167. package/dist/assets/app-zt7HwQKT.js +0 -1
  168. package/dist/assets/client-BrV4QPwG.js +0 -2
  169. package/dist/assets/client-C1bwIlu6.css +0 -1
  170. package/dist/assets/definitions-DaOPIkyB.js +0 -1
  171. package/dist/assets/env-DN0vW4EI.js +0 -1
  172. package/dist/assets/health-7oIQODer.css +0 -1
  173. package/dist/assets/health-Z6m96GDr.js +0 -1
  174. package/dist/assets/index-BUq-MczL.js +0 -86
  175. package/dist/assets/index-DtmBqE3h.css +0 -1
  176. package/dist/assets/issues-1iS5zoed.js +0 -1
  177. package/dist/assets/layout-BkWVNT37.js +0 -1
  178. package/dist/assets/mdi-C54lQ0i_.js +0 -1
  179. package/dist/assets/placement-DLsU3pCW.js +0 -1
  180. package/dist/assets/pull-requests-BJOwNL4k.js +0 -1
  181. package/dist/assets/settings-c273Ikrm.js +0 -1
  182. package/dist/assets/shared-YZb7ocaK.js +0 -2
  183. package/dist/assets/studioGateApi-DhA9IJGZ.js +0 -1
  184. package/dist/assets/studioUrls-Dj8rXeXO.js +0 -1
  185. package/dist/assets/useArchivedVibe64Sessions-CVZx2Rtm.js +0 -1
  186. package/dist/assets/useCommand-DWuxfAV0.js +0 -1
  187. package/dist/assets/useEndpointResource-MWVNfmMa.js +0 -1
  188. package/dist/assets/useVibe64ConversationLog-8cKh1eDm.js +0 -1
  189. package/dist/assets/useVibe64DatabaseTools-BcRG1s3i.js +0 -1
  190. package/dist/assets/useVibe64LearningMode-Bl0dGdCh.js +0 -28
  191. package/dist/assets/useVibe64LearningMode-C3PcXdVg.css +0 -1
  192. package/dist/assets/useVibe64ProjectScope-DOEVkBqX.js +0 -1
  193. package/dist/assets/useVibe64SessionData-DFTyLzci.js +0 -1
  194. package/dist/assets/useVibe64SessionSelection-j9lsllx4.js +0 -1
  195. package/dist/assets/useVibe64SystemGraph-tNkIwSBQ.js +0 -1
  196. package/dist/assets/vibe64AssistantHost-DdE_-lZF.js +0 -1
  197. package/dist/assets/vibe64LessonDashboard-DlKYjisq.js +0 -1
  198. package/dist/assets/vibe64ProjectScope.local-DqT6e5un.js +0 -1
  199. package/docs/colleague-usage/learning-chat-retention.md +0 -74
  200. package/docs/colleague-usage/learning-diagrams-and-voice.md +0 -97
  201. package/docs/colleague-usage/learning-lesson-watch.md +0 -95
  202. package/docs/colleague-usage/learning-native-session.md +0 -206
  203. package/docs/colleague-usage/learning-practical-exercises.md +0 -71
  204. package/docs/colleague-usage/learning-practical-gestures.md +0 -48
  205. package/docs/colleague-usage/learning-session-creation.md +0 -95
  206. package/docs/colleague-usage/lesson-practical-assessment.md +0 -54
  207. package/docs/colleague-usage/preview-lesson-presentation.md +0 -56
  208. package/docs/templates/learn-topic/training/lessons/TOPIC-01/lesson.md +0 -44
@@ -1 +0,0 @@
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-MWVNfmMa.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{Fn as mdiRefresh,vt as mdiFileCogOutline}from"./mdi-C54lQ0i_.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-DWuxfAV0.js";import{t as useVibe64ProjectSlug}from"./useVibe64ProjectScope-DOEVkBqX.js";import{i as lessonDashboardApiPath,s as useVibe64LessonDashboard}from"./vibe64LessonDashboard-DlKYjisq.js";import{cn as VTab,pn as VTable,sn as VTabs}from"./index-BUq-MczL.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-DhA9IJGZ.js";import{t as Vibe64AsyncModuleState_default}from"./Vibe64AsyncModuleState-Dx7YKRPp.js";import{n as useVibe64SessionSelection}from"./useVibe64SessionSelection-j9lsllx4.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 sessionSelection=useVibe64SessionSelection({projectSlug});const lessonDashboard=useVibe64LessonDashboard();const selectedSessionId=computed(()=>lessonDashboard.value?lessonDashboard.value.sessionId:sessionSelection.selectedId.value);const envQueryProject=computed(()=>lessonDashboard.value?`lesson:${lessonDashboard.value.attemptId}`:projectSlug.value);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:computed(()=>lessonDashboardApiPath(lessonDashboard.value,ENV_ENDPOINT)),queryKey:computed(()=>[...envQueryKey(`app`,ROUTE_VISIBILITY_PUBLIC,envQueryProject.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:lessonDashboardApiPath(lessonDashboard.value,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":!unref(lessonDashboard),"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`,`secret-reveal-enabled`,`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-6f06796a`]]);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 +0,0 @@
1
- .studio-health[data-v-31d912f3]{align-content:start;gap:var(--v64-space-4,16px);width:100%;max-width:64rem;margin-inline:auto;display:grid}.studio-health__check[data-v-31d912f3],.studio-health__check-heading[data-v-31d912f3]{display:flex}.studio-health__check-copy p[data-v-31d912f3],.studio-health__check-copy small[data-v-31d912f3]{margin:0}.studio-health__check-heading span[data-v-31d912f3]{color:rgba(var(--v-theme-on-surface), var(--v-medium-emphasis-opacity));letter-spacing:.06em;text-transform:uppercase;font-size:.75rem}.studio-health__checks[data-v-31d912f3]{gap:.75rem;display:grid}.studio-health__check[data-v-31d912f3]{background:var(--v64-surface-container-low);border:1px solid var(--v64-outline-variant,#0000001f);border-radius:var(--v64-shape-lg,16px);align-items:start;gap:var(--v64-space-3,12px);padding:var(--v64-space-4,16px)}.studio-health__check-copy[data-v-31d912f3]{overflow-wrap:anywhere;gap:.3rem;min-width:0;display:grid}.studio-health__check-heading[data-v-31d912f3]{flex-wrap:wrap;align-items:baseline;gap:.55rem}.studio-health__check-copy p[data-v-31d912f3]{white-space:pre-line}.studio-health__check-copy small[data-v-31d912f3]{color:rgba(var(--v-theme-on-surface), var(--v-medium-emphasis-opacity))}
@@ -1 +0,0 @@
1
- import{h as VIcon}from"./ripple-BVltMmyV.js";import{D as createVNode,E as createTextVNode,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}from"./runtime-core.esm-bundler-DGXg_mpN.js";import{T as ROUTE_VISIBILITY_PUBLIC,t as useEndpointResource}from"./useEndpointResource-MWVNfmMa.js";import{A as mdiCheckCircleOutline,Fn as mdiRefresh,Rt as mdiHeartPulse,l as mdiAlertCircleOutline}from"./mdi-C54lQ0i_.js";import{t as VBtn}from"./VBtn-B2MBK2DL.js";import{t as VAlert}from"./VAlert-P256xaE0.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{r as vibe64ResourceResponseError}from"./vibe64ApiResponses-DNLY1Kel.js";import{O as studioHealthQueryKey,d as STUDIO_HEALTH_ENDPOINT}from"./studioGateApi-DhA9IJGZ.js";import{t as Vibe64DashboardPageHeader_default}from"./Vibe64DashboardPageHeader-BXQR00HK.js";var _hoisted_1={class:`studio-health`};var _hoisted_2={class:`studio-health__checks`};var _hoisted_3={class:`studio-health__check-copy`};var _hoisted_4={class:`studio-health__check-heading`};var _sfc_main$1={__name:`StudioHealthScreen`,setup(__props){const{data,isFetching,isInitialLoading,loadError:endpointLoadError,reload}=useEndpointResource({fallbackLoadError:`Studio Health could not run.`,path:computed(()=>STUDIO_HEALTH_ENDPOINT),queryKey:computed(()=>studioHealthQueryKey(`app`,ROUTE_VISIBILITY_PUBLIC)),queryOptions:{refetchOnMount:false,refetchOnWindowFocus:false},requestRecoveryLabel:`Studio Health`});const health=computed(()=>data.value||{});const checks=computed(()=>Array.isArray(health.value.checks)?health.value.checks:[]);const loadError=computed(()=>vibe64ResourceResponseError(health.value,`Studio Health could not run.`)||endpointLoadError.value);const summaryText=computed(()=>{const summary=health.value.summary||{};if(health.value.healthy===true)return`All ${Number(summary.total||checks.value.length)} platform checks passed.`;return`${Number(summary.failed||0)} of ${Number(summary.total||checks.value.length)} platform checks need attention.`});return(_ctx,_cache)=>{return openBlock(),createElementBlock(`section`,_hoisted_1,[createVNode(Vibe64DashboardPageHeader_default,{description:`Read-only checks for the editor, credentials, Genesis, and pinned runtimes.`,icon:unref(mdiHeartPulse),title:`Studio Health`},{actions:withCtx(()=>[createVNode(VBtn,{disabled:unref(isFetching),loading:unref(isFetching),"prepend-icon":unref(mdiRefresh),rounded:`pill`,type:`button`,variant:`tonal`,onClick:unref(reload)},{default:withCtx(()=>[..._cache[0]||(_cache[0]=[createTextVNode(` Refresh `,-1)])]),_:1},8,[`disabled`,`loading`,`prepend-icon`,`onClick`])]),_:1},8,[`icon`]),loadError.value?(openBlock(),createBlock(VAlert,{key:0,border:`start`,type:`error`,variant:`tonal`},{default:withCtx(()=>[createTextVNode(toDisplayString(loadError.value),1)]),_:1})):unref(isInitialLoading)?(openBlock(),createBlock(VSkeletonLoader,{key:1,"aria-label":`Checking Studio health`,type:`list-item-three-line@5`})):(openBlock(),createElementBlock(Fragment,{key:2},[createVNode(VAlert,{type:health.value.healthy?`success`:`warning`,variant:`tonal`},{default:withCtx(()=>[createTextVNode(toDisplayString(summaryText.value),1)]),_:1},8,[`type`]),createBaseVNode(`div`,_hoisted_2,[(openBlock(true),createElementBlock(Fragment,null,renderList(checks.value,check=>{return openBlock(),createElementBlock(`article`,{key:check.id,class:`studio-health__check`},[createVNode(VIcon,{color:check.status===`pass`?`success`:`warning`,icon:check.status===`pass`?unref(mdiCheckCircleOutline):unref(mdiAlertCircleOutline),size:`22`},null,8,[`color`,`icon`]),createBaseVNode(`div`,_hoisted_3,[createBaseVNode(`div`,_hoisted_4,[createBaseVNode(`strong`,null,toDisplayString(check.label),1),createBaseVNode(`span`,null,toDisplayString(check.group),1)]),createBaseVNode(`p`,null,toDisplayString(check.observed),1),createBaseVNode(`small`,null,toDisplayString(check.explanation),1)])])}),128))])],64))])}}};var StudioHealthScreen_default=_plugin_vue_export_helper_default(_sfc_main$1,[[`__scopeId`,`data-v-31d912f3`]]);var _sfc_main={__name:`index`,setup(__props){return(_ctx,_cache)=>{return openBlock(),createBlock(StudioHealthScreen_default)}}};export{_sfc_main as default};