vibe64 0.1.48 → 0.1.49
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bin/run.js +1746 -1725
- package/bin/server.js +75 -75
- package/bin/upgrade-state.js +4275 -4254
- package/dist/assets/GithubBrowserTabs-BwpiRS2u.js +1 -0
- package/dist/assets/{LocalDatabaseServer-ih_gadbx.js → LocalDatabaseServer-u_Ky7bNS.js} +1 -1
- package/dist/assets/{Vibe64AuthSettingsButton-BZsCIA2Z.js → Vibe64AuthSettingsButton-BCwswT1G.js} +1 -1
- package/dist/assets/{Vibe64DashboardShell-DFE-2tFZ.js → Vibe64DashboardShell-CWlgrR2B.js} +1 -1
- package/dist/assets/{Vibe64DatabaseWorkspace-BdvxuFPT.js → Vibe64DatabaseWorkspace-Dhs8_H0P.js} +1 -1
- package/dist/assets/Vibe64OutputControls-Dn548CZa.js +8 -0
- package/dist/assets/{Vibe64RepositoryWorkspace-CVN2HKCB.js → Vibe64RepositoryWorkspace-C-8S4JUF.js} +1 -1
- package/dist/assets/{Vibe64SessionFiles-DKo5wd8-.js → Vibe64SessionFiles-Cx6J7DDN.js} +1 -1
- package/dist/assets/{Vibe64UiStoryboardView-BYqVdBAt.js → Vibe64UiStoryboardView-DHyhJiWS.js} +1 -1
- package/dist/assets/{Vibe64UnavailableSessions-CQjgoaS0.js → Vibe64UnavailableSessions-Da4RxIhA.js} +1 -1
- package/dist/assets/{_sessionId_-ByUkrRd7.js → _sessionId_-DCpgDPSI.js} +1 -1
- package/dist/assets/_slug_-BbEWp01a.js +25 -0
- package/dist/assets/{_slug_-B16mTWjj.css → _slug_-DerKOisL.css} +1 -1
- package/dist/assets/{access-CWZMu-ND.js → access-D4di2sCr.js} +1 -1
- package/dist/assets/{app-D_itm2S5.js → app-Adr9Iz8p.js} +1 -1
- package/dist/assets/{changes-BYuFfnEm.js → changes-3Dd1O8Lu.js} +1 -1
- package/dist/assets/{client-CP2EwnrY.js → client-BAXHGUOC.js} +1 -1
- package/dist/assets/{client-B88Jggew.js → client-CCZIu6yc.js} +1 -1
- package/dist/assets/{conversation-DL4AODd9.js → conversation-ErAO1CmH.js} +1 -1
- package/dist/assets/{dashboard-R4qgYv8O.js → dashboard-0tCzDYCX.js} +1 -1
- package/dist/assets/{english-definitions-CdIGswXU.js → english-definitions-DeiQ-jTT.js} +1 -1
- package/dist/assets/env-DsyQ2MFX.js +1 -0
- package/dist/assets/{health-Ut9eZrbK.js → health-DyTXU-nb.js} +1 -1
- package/dist/assets/{history-BrmvkGgi.js → history-BXGAdPMI.js} +1 -1
- package/dist/assets/{incoming-CicEs40v.js → incoming-yajkdGBY.js} +1 -1
- package/dist/assets/{index-DZgCwvFD.js → index-CGz4Yow6.js} +4 -4
- package/dist/assets/{integrations-QHeHC-C9.js → integrations-BMrXET36.js} +1 -1
- package/dist/assets/{issues-Ds7iAQFQ.js → issues-kc1XBZCK.js} +1 -1
- package/dist/assets/{learning-Dq0xbg3x.js → learning-CIE5ghYv.js} +1 -1
- package/dist/assets/publish-DTh6amqi.js +3 -0
- package/dist/assets/{pull-requests-DHLK83qZ.js → pull-requests-CbfGSSIh.js} +1 -1
- package/dist/assets/{repository-DWw1VFIQ.js → repository-BstMh-bG.js} +1 -1
- package/dist/assets/settings-Bf8C6dls.js +1 -0
- package/dist/assets/useArchivedVibe64Sessions-DIOpfUxD.js +1 -0
- package/dist/assets/{useCommand-DhwB5k1w.js → useCommand-CVuya6vG.js} +1 -1
- package/dist/assets/{useEndpointResource-tVvsJvd4.js → useEndpointResource-7-YDfAxX.js} +1 -1
- package/dist/assets/{useUiFeedback-DLUToc5y.js → useUiFeedback-Bd3rao6E.js} +1 -1
- package/dist/assets/useVibe64ConversationLog-ChJOU2SD.js +1 -0
- package/dist/assets/{useVibe64DatabaseTools-Cac_aZnv.js → useVibe64DatabaseTools-DKV-TeNJ.js} +1 -1
- package/dist/assets/useVibe64SessionData-BkIHUrP5.js +1 -0
- package/dist/assets/useVibe64SessionSelection-N8wX5oqo.js +1 -0
- package/dist/assets/{useVibe64SystemGraph-idV9zXa9.js → useVibe64SystemGraph-Db_eD-X8.js} +1 -1
- package/dist/assets/vibe64RepositoryRealtime-CHT4-6VN.js +1 -0
- package/dist/assets/vibe64SessionFocus-CS6Ex53G.js +1 -0
- package/dist/assets/vibe64SessionFocus-CSm4YJQD.css +1 -0
- package/dist/assets/vibe64SessionRequestConfig-xIx-5jxQ.js +1 -0
- package/dist/index.html +10 -9
- package/docs/colleague-usage/ai-accounts.md +6 -2
- package/docs/colleague-usage/ai-balance-and-allowance.md +15 -2
- package/docs/colleague-usage/coding-agent-failures.md +2 -1
- package/docs/colleague-usage/coding-agent-goals.md +8 -3
- package/docs/colleague-usage/coding-agents.md +16 -0
- package/docs/colleague-usage/github-work.md +14 -0
- package/docs/colleague-usage/project-setup.md +6 -3
- package/docs/colleague-usage/running-vibe64-on-your-computer.md +3 -1
- package/docs/colleague-usage/sessions.md +35 -7
- package/docs/colleague-usage/starter-apps.md +3 -0
- package/docs/colleague-usage/temporary-chat-context.md +2 -1
- package/docs/colleague-usage/temporary-chats.md +17 -5
- package/node_modules/@jskit-ai/assistant-core/package.json +1 -1
- package/node_modules/@jskit-ai/assistant-runtime/README.md +2 -1
- package/node_modules/@jskit-ai/assistant-runtime/locales/en.json +2 -1
- package/node_modules/@jskit-ai/assistant-runtime/package.json +1 -1
- package/node_modules/@jskit-ai/assistant-voice/package.json +1 -1
- package/node_modules/@local/vibe64-execution/src/host/execHelper.js +34 -34
- package/node_modules/@local/vibe64-execution/src/server/gitTurnCheckpointCommand.js +1327 -0
- package/node_modules/@local/vibe64-genesis/bin/vibe64-genesis-host-context +120 -120
- package/node_modules/@local/vibe64-runtime/src/server/codexAppServerProcess.js +143 -143
- package/node_modules/@local/vibe64-sessions/package.json +2 -1
- package/node_modules/@local/vibe64-terminals/src/server/sessionWorkOperationCommand.js +1385 -1362
- package/package.json +5 -5
- package/server.bundle.mjs +38576 -38459
- package/dist/assets/GithubBrowserTabs-_l6htLOV.js +0 -1
- package/dist/assets/Vibe64OutputControls-DsCbasR0.js +0 -8
- package/dist/assets/_slug_-hep_be7Z.js +0 -24
- package/dist/assets/env-DtkytCtq.js +0 -1
- package/dist/assets/publish-eErG67LW.js +0 -3
- package/dist/assets/settings-QkwnoNn3.js +0 -1
- package/dist/assets/useArchivedVibe64Sessions-Biy_4sxD.js +0 -1
- package/dist/assets/useVibe64ConversationLog-jM3KOvN7.js +0 -1
- package/dist/assets/useVibe64SessionData-FGnNvFfK.js +0 -1
- package/dist/assets/useVibe64SessionSelection-Bgsif-tm.js +0 -1
- package/dist/assets/vibe64RepositoryRealtime-C-J0I5jY.js +0 -1
- package/dist/assets/vibe64SessionFocus-CDIB5Gpr.js +0 -1
- package/dist/assets/vibe64SessionFocus-DSW5Irm6.css +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{D as createVNode,E as createTextVNode,Ht as watch,On as unref,_ as createBaseVNode,b as createElementBlock,g as computed,mt as openBlock,o as Fragment,qt as withCtx,tr as toDisplayString,tt as nextTick,v as createBlock,vn as ref,y as createCommentVNode}from"./runtime-core.esm-bundler-DGXg_mpN.js";import{_ as VIcon,p as VProgressLinear}from"./VAvatar-H2hyOWlB.js";import{t as useEndpointResource}from"./useEndpointResource-7-YDfAxX.js";import{t as VSelect}from"./VSelect-Dqnp_CFi.js";import{t as VTextField}from"./VTextField-CnkGeXaT.js";import{r as scopedDevelopmentApiUrl}from"./studioUrls-B0-GdWh8.js";import{X as mdiClose,it as mdiCogOutline,xr as mdiSourcePull}from"./mdi-X9prU-DG.js";import{t as VBtn}from"./VBtn-Sj5jAuOx.js";import{t as VAlert}from"./VAlert-7_VM9EUm.js";import{t as VSheet}from"./VSheet-CMhyReNa.js";import{t as VDialog}from"./VDialog-Drp3yzSH.js";import{i as VCardTitle,n as VCardText,o as VCardActions,t as VCard}from"./VCard-DExT9Cji.js";import{t as VSpacer}from"./VSpacer-BSTt0_VA.js";import{u as requestVibe64AiOnboarding,x as useModelRouting}from"./client-CCZIu6yc.js";import{t as VSkeletonLoader}from"./VSkeletonLoader-pc4bBTxv.js";import{t as VSwitch}from"./VSwitch-B_DmcTxG.js";import{t as VTextarea}from"./VTextarea-wqoRFl1K.js";import{t as _plugin_vue_export_helper_default}from"./_plugin-vue_export-helper-DNW4j-dv.js";import{b as sameVibe64AssistantSelection,c as vibe64AssistantSelectionLabel}from"./shared-TUhK_uYM.js";import{t as useUiFeedback}from"./useUiFeedback-Bd3rao6E.js";import{D as vibe64RepositoryApiPath,F as vibe64SessionPath,o as VIBE64_SESSIONS_API_SUFFIX}from"./vibe64SessionRequestConfig-xIx-5jxQ.js";import{C as readRefOrGetterValue,S as Vibe64SessionAssistantMenu_default,T as requestVibe64AccountConnectionsDialog}from"./index-CGz4Yow6.js";import{a as vibe64SessionPullRequest,i as vibe64SessionDisplayTitle}from"./vibe64SessionViewModel-B0cCumM8.js";import{a as githubProjectRepositoryName,t as GITHUB_BODY_MAX_LENGTH}from"./vibe64GithubProject-Bct-bzKq.js";var _hoisted_1$1={class:`d-flex align-center justify-space-between ga-2 pa-5 pb-2`};var _hoisted_2$1={class:`d-flex align-center ga-3`};var _hoisted_3$1={class:`text-label-large`};var _hoisted_4$1={class:`text-body-medium mt-1`};var _hoisted_5$1={key:0,role:`status`};var _sfc_main$1={__name:`Vibe64CreatePullRequestDialog`,props:{modelValue:Boolean,dashboardContext:{type:Object,default:()=>({})}},emits:[`update:modelValue`,`created`],setup(__props,{emit:__emit}){const props=__props;const emit=__emit;const title=ref(``);const body=ref(``);const draft=ref(true);const pending=ref(false);const destinationReview=ref(null);const feedback=useUiFeedback({source:`vibe64.pullRequests.create`});const session=computed(()=>props.dashboardContext.session||{});const source=computed(()=>vibe64SessionPullRequest(session.value));const repository=computed(()=>githubProjectRepositoryName(props.dashboardContext.projectContext));const branch=computed(()=>{if(source.value?.headBranch)return source.value.headBranch;const destination=props.dashboardContext.workState?.destination;if(destination?.mode===`github`&&destination.branch!==props.dashboardContext.projectContext?.repository?.defaultBranch)return destination.branch;return`vibe64/pr-${props.dashboardContext.sessionId}`});const base=computed(()=>source.value?.baseBranch||props.dashboardContext.projectContext?.repository?.defaultBranch||``);const path=computed(()=>vibe64SessionPath(readRefOrGetterValue(props.dashboardContext.sessionsApiPath),props.dashboardContext.sessionId,`/pull-request`));const resource=useEndpointResource({path,queryKey:computed(()=>[`vibe64.createPullRequest`,path.value]),enabled:false});watch(()=>props.modelValue,open=>{if(open)destinationReview.value=props.dashboardContext.workState?.destination?{...props.dashboardContext.workState.destination}:null},{immediate:true});watch(()=>props.dashboardContext.sessionId,()=>{title.value=source.value?.title||vibe64SessionDisplayTitle(session.value);body.value=source.value?.body||``;draft.value=true},{immediate:true});async function submit(){if(pending.value||!title.value.trim())return;pending.value=true;try{const result=await resource.save({title:title.value.trim(),body:body.value,draft:draft.value,destinationReview:destinationReview.value},{method:`POST`});feedback.success(`Pull request created. Future commits update its source branch.`);emit(`created`,result.pullRequest);emit(`update:modelValue`,false);props.dashboardContext.refreshSessionWork?.()}catch(error){feedback.error(error,`The pull request could not be confirmed. Retry to check GitHub and continue.`)}finally{pending.value=false}}return(_ctx,_cache)=>{return openBlock(),createBlock(VDialog,{"model-value":__props.modelValue,"max-width":`38rem`,scrollable:``,persistent:pending.value,"onUpdate:modelValue":_cache[5]||(_cache[5]=$event=>emit(`update:modelValue`,$event))},{default:withCtx(()=>[createVNode(VCard,{rounded:`xl`},{default:withCtx(()=>[createBaseVNode(`div`,_hoisted_1$1,[createBaseVNode(`div`,_hoisted_2$1,[createVNode(VIcon,{icon:unref(mdiSourcePull),color:`primary`},null,8,[`icon`]),_cache[6]||(_cache[6]=createBaseVNode(`h2`,{class:`text-title-large`},`Create pull request`,-1))]),createVNode(VBtn,{icon:unref(mdiClose),size:`48`,variant:`text`,"aria-label":`Close pull request dialog`,disabled:pending.value,onClick:_cache[0]||(_cache[0]=$event=>emit(`update:modelValue`,false))},null,8,[`icon`,`disabled`])]),createVNode(VCardText,{class:`d-flex flex-column ga-3`},{default:withCtx(()=>[createVNode(VSheet,{color:`surface-light`,rounded:`lg`,class:`pa-3 pr-destination`},{default:withCtx(()=>[createBaseVNode(`div`,_hoisted_3$1,toDisplayString(repository.value),1),createBaseVNode(`div`,_hoisted_4$1,toDisplayString(branch.value)+` → `+toDisplayString(base.value),1),_cache[7]||(_cache[7]=createBaseVNode(`p`,{class:`text-body-small text-medium-emphasis mt-2 mb-0`},`The base branch stays unchanged.`,-1))]),_:1}),_cache[8]||(_cache[8]=createBaseVNode(`p`,{class:`text-body-small ma-0`},`Save open file edits first.`,-1)),!destinationReview.value?(openBlock(),createElementBlock(`p`,_hoisted_5$1,`Refresh repository status before creating a pull request.`)):createCommentVNode(``,true),createVNode(VTextField,{modelValue:title.value,"onUpdate:modelValue":_cache[1]||(_cache[1]=$event=>title.value=$event),label:`Title`,variant:`outlined`,maxlength:`256`,disabled:pending.value,"hide-details":``},null,8,[`modelValue`,`disabled`]),createVNode(VTextarea,{modelValue:body.value,"onUpdate:modelValue":_cache[2]||(_cache[2]=$event=>body.value=$event),label:`Description`,placeholder:`What changed, and how did you check it?`,variant:`outlined`,rows:`3`,"auto-grow":``,maxlength:unref(GITHUB_BODY_MAX_LENGTH),disabled:pending.value,"hide-details":``},null,8,[`modelValue`,`maxlength`,`disabled`]),createVNode(VSwitch,{modelValue:draft.value,"onUpdate:modelValue":_cache[3]||(_cache[3]=$event=>draft.value=$event),color:`primary`,label:`Create as draft`,disabled:pending.value,"hide-details":``},null,8,[`modelValue`,`disabled`]),_cache[9]||(_cache[9]=createBaseVNode(`details`,{class:`pr-details text-body-small`},[createBaseVNode(`summary`,{class:`py-3`},`What gets pushed`),createBaseVNode(`p`,null,`All saved file changes are committed and pushed to the PR branch. Database data and chat history are separate. GitHub automation may run; this does not deploy the app.`)],-1))]),_:1}),createVNode(VCardActions,{class:`pa-5 pt-2`},{default:withCtx(()=>[createVNode(VSpacer),createVNode(VBtn,{variant:`text`,height:`48`,disabled:pending.value,onClick:_cache[4]||(_cache[4]=$event=>emit(`update:modelValue`,false))},{default:withCtx(()=>[..._cache[10]||(_cache[10]=[createTextVNode(`Cancel`,-1)])]),_:1},8,[`disabled`]),createVNode(VBtn,{color:`primary`,variant:`flat`,rounded:`pill`,height:`48`,disabled:pending.value||!title.value.trim()||!destinationReview.value||__props.dashboardContext.sourceOperationsSuspended,"aria-busy":pending.value,onClick:submit},{default:withCtx(()=>[createTextVNode(toDisplayString(pending.value?`Creating…`:draft.value?`Create draft PR`:`Create pull request`),1)]),_:1},8,[`disabled`,`aria-busy`])]),_:1})]),_:1})]),_:1},8,[`model-value`,`persistent`])}}};var Vibe64CreatePullRequestDialog_default=_plugin_vue_export_helper_default(_sfc_main$1,[[`__scopeId`,`data-v-07c592d1`]]);var _hoisted_1={class:`vibe64-assistant-dialog__title-copy`};var _hoisted_2={class:`text-body-small`};var _hoisted_3={key:2,class:`vibe64-assistant-dialog__ai`};var _hoisted_4={class:`text-body-medium mb-0`};var _hoisted_5={key:3,class:`d-flex flex-column ga-2`};var _hoisted_6={key:0,class:`d-flex flex-column ga-3 mt-3`};var _hoisted_7={key:0,class:`text-body-small`,style:{"overflow-wrap":`anywhere`}};var _hoisted_8={key:0,class:`vibe64-assistant-dialog__progress`,role:`status`,"aria-live":`polite`};var _sfc_main={__name:`Vibe64AssistantSessionDialog`,props:{modelValue:Boolean,toolbar:{type:Object,default:()=>({})}},emits:[`created`,`update:model-value`],setup(__props,{emit:__emit}){const props=__props;const emit=__emit;const routing=useModelRouting({enabled:computed(()=>props.modelValue),view:`main`});const mainSelection=routing.mainChatSelection;const openConnectionSettings=()=>requestVibe64AccountConnectionsDialog({section:`ai`});const canChooseSessionAi=computed(()=>routing.resource.data.value?.canConfigure===true);const sessionAi=ref(null);const customOpen=ref(false);const changeButton=ref(null);const aiSummary=computed(()=>sessionAi.value?`This session runs on: ${vibe64AssistantSelectionLabel(sessionAi.value)}`:`Runs on your main AI: ${vibe64AssistantSelectionLabel(mainSelection.value)}`);function openSessionAiChoice(){if(canChooseSessionAi.value&&!submitting.value)customOpen.value=true}function chooseSessionAi(selection){sessionAi.value=sameVibe64AssistantSelection(selection,mainSelection.value)?null:selection;return{ok:true}}function useMainAi(){sessionAi.value=null}function setUpAi(){close();requestVibe64AiOnboarding()}const submitButton=ref(null);const submitting=computed(()=>props.toolbar.createSessionRunning===true);const branchMode=ref(`project`);const chooseBranch=computed(()=>branchMode.value!==`project`);const createBranch=computed(()=>branchMode.value===`new`);const branchName=ref(``);const newBranchName=ref(``);const branchProject=computed(()=>props.toolbar.projectContext||{});const branchSelectionAvailable=computed(()=>!props.toolbar.repositoryBranchSelectionDisabled&&[`github`,`managed_git`].includes(branchProject.value.repositoryMode||branchProject.value.repository?.mode));const branchChoices=computed(()=>[{title:`Project branch (${branchProject.value.repository?.defaultBranch||`main`})`,value:`project`},{title:`Create a new branch`,value:`new`},{title:`Use an existing branch`,value:`existing`}]);const branchRepository=computed(()=>branchProject.value.githubRepository?.fullName||branchProject.value.repository?.github?.fullName||branchProject.value.slug);const branchPath=computed(()=>scopedDevelopmentApiUrl(`${vibe64RepositoryApiPath(`/api${VIBE64_SESSIONS_API_SUFFIX}`)}/branches`,branchProject.value.slug));const branches=useEndpointResource({path:branchPath,queryKey:computed(()=>[`vibe64.branches`,branchPath.value]),enabled:computed(()=>props.modelValue&&branchSelectionAvailable.value&&chooseBranch.value),queryOptions:{retry:false},fallbackLoadError:`Repository branches could not load.`});const selectedBranch=computed(()=>branches.data.value?.branches?.find(item=>item.name===branchName.value));const branchAlreadyExists=computed(()=>branches.data.value?.branches?.some(item=>item.name===newBranchName.value.trim()));const branchSelectionReady=computed(()=>{if(!chooseBranch.value)return true;if(!selectedBranch.value||branches.isLoading.value||branches.loadError.value)return false;return!createBranch.value||Boolean(newBranchName.value.trim())&&!branchAlreadyExists.value});watch(()=>branches.data.value,value=>{if(!value?.branches?.some(item=>item.name===branchName.value))branchName.value=value?.defaultBranch||``},{immediate:true});function close(){if(!submitting.value)emit(`update:model-value`,false)}async function submit(){if(!mainSelection.value||submitting.value||!branchSelectionReady.value)return;let response;try{const options={};if(chooseBranch.value)options.repositoryBranch={name:createBranch.value?newBranchName.value.trim():branchName.value,...createBranch.value?{fromBranch:branchName.value}:{},expectedCommit:selectedBranch.value.commit};response=await props.toolbar.createSession?.(sessionAi.value||{},options)}catch{return}if(response?.ok!==false&&response?.sessionId){emit(`created`,response);emit(`update:model-value`,false)}}watch(()=>props.modelValue,open=>{if(!open)return;branchMode.value=`project`;branchName.value=branches.data.value?.defaultBranch||``;newBranchName.value=``;sessionAi.value=null;customOpen.value=false},{immediate:true});watch(submitting,async(running,wasRunning)=>{if(running||!wasRunning||!props.modelValue)return;await nextTick();const target=submitButton.value?.$el||submitButton.value;if(target?.isConnected===true&&typeof target.focus===`function`)target.focus({preventScroll:true})});return(_ctx,_cache)=>{return openBlock(),createBlock(VDialog,{"model-value":__props.modelValue,persistent:submitting.value,"max-width":`38rem`,scrollable:``,"onUpdate:modelValue":_cache[6]||(_cache[6]=$event=>!$event&&close())},{default:withCtx(()=>[createVNode(VCard,{class:`vibe64-assistant-dialog`,rounded:`xl`},{default:withCtx(()=>[createVNode(VCardTitle,{class:`vibe64-assistant-dialog__title`},{default:withCtx(()=>[createBaseVNode(`span`,_hoisted_1,[_cache[7]||(_cache[7]=createBaseVNode(`strong`,{class:`text-title-large`},`Start an AI session`,-1)),createBaseVNode(`small`,_hoisted_2,toDisplayString(sessionAi.value?`Starts in Custom. Choose Senior, Junior or Auto from chat.`:`Start with Senior. Choose Junior or Auto from chat.`),1)]),createVNode(VBtn,{"aria-label":`Close AI session dialog`,disabled:submitting.value,icon:unref(mdiClose),title:`Close`,variant:`text`,onClick:close},null,8,[`disabled`,`icon`])]),_:1}),createVNode(VCardText,{class:`vibe64-assistant-dialog__body`},{default:withCtx(()=>[unref(routing).resource.isInitialLoading.value?(openBlock(),createBlock(VSkeletonLoader,{key:0,type:`list-item-two-line`})):unref(routing).loadError.value?(openBlock(),createBlock(VAlert,{key:1,type:`error`,variant:`tonal`},{default:withCtx(()=>[createTextVNode(toDisplayString(unref(routing).loadError.value)+` `,1),createVNode(VBtn,{variant:`text`,onClick:_cache[0]||(_cache[0]=$event=>unref(routing).resource.reload())},{default:withCtx(()=>[..._cache[8]||(_cache[8]=[createTextVNode(`Try again`,-1)])]),_:1})]),_:1})):unref(mainSelection)?(openBlock(),createElementBlock(`div`,_hoisted_3,[createBaseVNode(`p`,_hoisted_4,[createTextVNode(toDisplayString(aiSummary.value)+` `,1),canChooseSessionAi.value?(openBlock(),createBlock(VBtn,{key:0,ref_key:`changeButton`,ref:changeButton,disabled:submitting.value,size:`small`,variant:`text`,onClick:openSessionAiChoice},{default:withCtx(()=>[..._cache[9]||(_cache[9]=[createTextVNode(` Change `,-1)])]),_:1},8,[`disabled`])):createCommentVNode(``,true),sessionAi.value?(openBlock(),createBlock(VBtn,{key:1,disabled:submitting.value,size:`small`,variant:`text`,onClick:useMainAi},{default:withCtx(()=>[..._cache[10]||(_cache[10]=[createTextVNode(`Use main AI`,-1)])]),_:1},8,[`disabled`])):createCommentVNode(``,true)]),createVNode(VBtn,{class:`vibe64-assistant-dialog__main-ai`,disabled:submitting.value,"prepend-icon":unref(mdiCogOutline),size:`small`,variant:`text`,onClick:openConnectionSettings},{default:withCtx(()=>[..._cache[11]||(_cache[11]=[createTextVNode(` Change main AI for all sessions `,-1)])]),_:1},8,[`disabled`,`prepend-icon`])])):(openBlock(),createElementBlock(`div`,_hoisted_5,[_cache[13]||(_cache[13]=createBaseVNode(`strong`,null,`No AI is set up yet`,-1)),_cache[14]||(_cache[14]=createBaseVNode(`span`,{class:`text-body-small`},`Set up your AI, then come back to start a session.`,-1)),createVNode(VBtn,{color:`primary`,variant:`flat`,class:`align-self-start`,onClick:setUpAi},{default:withCtx(()=>[..._cache[12]||(_cache[12]=[createTextVNode(`Set up your AI`,-1)])]),_:1})])),branchSelectionAvailable.value?(openBlock(),createElementBlock(Fragment,{key:4},[createVNode(VSelect,{modelValue:branchMode.value,"onUpdate:modelValue":_cache[1]||(_cache[1]=$event=>branchMode.value=$event),items:branchChoices.value,label:`Work on`,disabled:submitting.value,"hide-details":``,class:`mt-4`},null,8,[`modelValue`,`items`,`disabled`]),chooseBranch.value?(openBlock(),createElementBlock(`div`,_hoisted_6,[createBranch.value?(openBlock(),createBlock(VTextField,{key:0,modelValue:newBranchName.value,"onUpdate:modelValue":_cache[2]||(_cache[2]=$event=>newBranchName.value=$event),label:`New branch name`,placeholder:`e.g. improve-booking`,maxlength:`255`,disabled:submitting.value,"error-messages":newBranchName.value.trim()&&branchAlreadyExists.value?`That branch already exists. Choose an existing branch instead.`:[],"hide-details":`auto`},null,8,[`modelValue`,`disabled`,`error-messages`])):createCommentVNode(``,true),unref(branches).isLoading.value?(openBlock(),createBlock(VSkeletonLoader,{key:1,type:`list-item-two-line, paragraph`})):unref(branches).loadError.value?(openBlock(),createBlock(VAlert,{key:2,type:`error`,variant:`tonal`},{default:withCtx(()=>[createTextVNode(toDisplayString(unref(branches).loadError.value)+` `,1),createVNode(VBtn,{variant:`text`,onClick:_cache[3]||(_cache[3]=$event=>unref(branches).reload())},{default:withCtx(()=>[..._cache[15]||(_cache[15]=[createTextVNode(`Try again`,-1)])]),_:1})]),_:1})):(openBlock(),createElementBlock(Fragment,{key:3},[createVNode(VSelect,{modelValue:branchName.value,"onUpdate:modelValue":_cache[4]||(_cache[4]=$event=>branchName.value=$event),items:unref(branches).data.value?.branches||[],"item-title":`name`,"item-value":`name`,label:createBranch.value?`Create from`:`Branch`,disabled:submitting.value,"hide-details":``},null,8,[`modelValue`,`items`,`label`,`disabled`]),selectedBranch.value?(openBlock(),createElementBlock(`p`,_hoisted_7,toDisplayString(createBranch.value?`Creates the branch and opens a new session.`:`Opens a new session on this branch.`)+` Your changes will be saved to `+toDisplayString(branchRepository.value)+`:`+toDisplayString(createBranch.value?newBranchName.value.trim()||`your new branch`:branchName.value)+`. `,1)):createCommentVNode(``,true),_cache[16]||(_cache[16]=createBaseVNode(`p`,{class:`text-body-small`},`Deploying the app still uses the project branch.`,-1))],64))])):createCommentVNode(``,true)],64)):createCommentVNode(``,true)]),_:1}),submitting.value?(openBlock(),createElementBlock(`div`,_hoisted_8,[createVNode(VProgressLinear,{indeterminate:``,color:`primary`,rounded:``}),_cache[17]||(_cache[17]=createBaseVNode(`p`,{class:`text-body-small mb-0`},` Copying the project source for the new session. This can take a little while for a large project. Any connected projects and workspace setup then continue in the session, which shows their progress. `,-1))])):createCommentVNode(``,true),createVNode(VCardActions,{class:`vibe64-assistant-dialog__actions`},{default:withCtx(()=>[createVNode(VBtn,{disabled:submitting.value,variant:`text`,onClick:close},{default:withCtx(()=>[..._cache[18]||(_cache[18]=[createTextVNode(`Cancel`,-1)])]),_:1},8,[`disabled`]),createVNode(VBtn,{ref_key:`submitButton`,ref:submitButton,"aria-busy":submitting.value?`true`:void 0,color:`primary`,disabled:!unref(mainSelection)||submitting.value||!branchSelectionReady.value,variant:`flat`,onClick:submit},{default:withCtx(()=>[createTextVNode(toDisplayString(submitting.value?`Creating session…`:chooseBranch.value&&createBranch.value?`Create branch & session`:`Create session`),1)]),_:1},8,[`aria-busy`,`disabled`])]),_:1}),createVNode(Vibe64SessionAssistantMenu_default,{modelValue:customOpen.value,"onUpdate:modelValue":_cache[5]||(_cache[5]=$event=>customOpen.value=$event),target:changeButton.value?.$el||null,selection:sessionAi.value||unref(mainSelection),"can-configure":canChooseSessionAi.value,"changes-disabled":submitting.value,"save-selection":chooseSessionAi},null,8,[`modelValue`,`target`,`selection`,`can-configure`,`changes-disabled`])]),_:1})]),_:1},8,[`model-value`,`persistent`])}}};var Vibe64AssistantSessionDialog_default=_plugin_vue_export_helper_default(_sfc_main,[[`__scopeId`,`data-v-674eb2c2`]]);var CREATED_SESSION_FOCUS_TIMEOUT_MS=2e3;async function focusCreatedVibe64SessionTab(sessionId=``){const normalizedSessionId=String(sessionId||``).trim();if(!normalizedSessionId||typeof document===`undefined`)return false;const deadline=Date.now()+CREATED_SESSION_FOCUS_TIMEOUT_MS;while(Date.now()<deadline){const dialogVisible=[...document.querySelectorAll(`.vibe64-assistant-dialog`)].some(element=>element.getClientRects().length>0);const target=[...document.querySelectorAll(`[data-vibe64-session-id]`)].find(element=>element.getAttribute(`data-vibe64-session-id`)===normalizedSessionId&&element.getClientRects().length>0);if(!dialogVisible&&target&&typeof target.focus===`function`){target.focus({preventScroll:true});return document.activeElement===target}await new Promise(resolve=>{(globalThis.requestAnimationFrame||(callback=>setTimeout(callback,16)))(resolve)})}return false}export{Vibe64AssistantSessionDialog_default as n,Vibe64CreatePullRequestDialog_default as r,focusCreatedVibe64SessionTab as t};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
.pr-destination[data-v-07c592d1]{overflow-wrap:anywhere}.pr-details summary[data-v-07c592d1]{cursor:pointer;min-height:48px}.vibe64-assistant-dialog__progress[data-v-674eb2c2]{gap:.5rem;padding:0 1.5rem .5rem;display:grid}.vibe64-assistant-dialog[data-v-674eb2c2]{border:1px solid rgba(var(--v-theme-outline), .18)}.vibe64-assistant-dialog__title[data-v-674eb2c2]{justify-content:space-between;align-items:center;padding:1rem 1.25rem .75rem;display:flex}.vibe64-assistant-dialog__title-copy[data-v-674eb2c2]{gap:.15rem;display:grid}.vibe64-assistant-dialog__title-copy small[data-v-674eb2c2]{color:rgba(var(--v-theme-on-surface), .66);white-space:normal}.vibe64-assistant-dialog__body[data-v-674eb2c2]{padding:.25rem 1.25rem 1rem!important}.vibe64-assistant-dialog__ai[data-v-674eb2c2]{overflow-wrap:anywhere;justify-items:start;gap:.25rem;display:grid}.vibe64-assistant-dialog__main-ai[data-v-674eb2c2]{margin-inline-start:-.5rem}.vibe64-assistant-dialog__actions[data-v-674eb2c2]{border-top:1px solid rgba(var(--v-theme-outline), .14);justify-content:flex-end;gap:.5rem;padding:.75rem 1.25rem}@media (width<=600px){.vibe64-assistant-dialog__body[data-v-674eb2c2],.vibe64-assistant-dialog__actions[data-v-674eb2c2],.vibe64-assistant-dialog__title[data-v-674eb2c2]{padding-inline:1rem!important}}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{c as vibe64ProjectScopedStorageKey,s as vibe64ProjectQueryScope}from"./vibe64ProjectScope.local-l5_-E6pq.js";import{n as vibe64RealtimeOriginPayload}from"./vibe64BrowserTabOrigin-SF9E31vi.js";var VIBE64_SESSIONS_API_SUFFIX=`/vibe64/sessions`;var VIBE64_ARCHIVED_SESSIONS_API_SUFFIX=`${VIBE64_SESSIONS_API_SUFFIX}/archived`;var VIBE64_ASSISTANTS_API_SUFFIX=`/vibe64/assistants/capabilities`;var VIBE64_ASSISTANT_MODEL_ACCESS_API_SUFFIX=`/vibe64/assistants/model-access`;var VIBE64_CURRENT_SESSION_API_SUFFIX=`${VIBE64_SESSIONS_API_SUFFIX}/current`;var VIBE64_API_SUFFIX=`/vibe64`;var VIBE64_SESSION_CHANGED_EVENT=`vibe64.session.changed`;var VIBE64_SOURCE_EDITOR_FILE_CHANGED_EVENT=`vibe64.source-editor.file.changed`;var VIBE64_SOURCE_EDITOR_SYNC_ERROR_EVENT=`vibe64.source-editor.sync.error`;var VIBE64_SOURCE_EDITOR_SYNC_READY_EVENT=`vibe64.source-editor.sync.ready`;var SELECTED_SESSION_STORAGE_KEY=`vibe64:selected-session-id`;function agentTurnControlPayloadFromContext(context={}){const source=context&&typeof context===`object`&&!Array.isArray(context)?context:{};const{agentSettings:_agentSettings,sessionId:_sessionId,...body}=source;return vibe64RealtimeOriginPayload({...body,...agentSettingsInputFromContext(source)})}function selectedSessionStorageKey(projectSlug){return vibe64ProjectScopedStorageKey(SELECTED_SESSION_STORAGE_KEY,projectSlug)}function vibe64SessionsQueryKey(surfaceId,ownershipFilter,projectSlug){return[`vibe64`,...vibe64ProjectQueryScope(projectSlug),surfaceId,ownershipFilter,`sessions`]}function vibe64SessionQueryKey(surfaceId,ownershipFilter,projectSlug){return[`vibe64`,...vibe64ProjectQueryScope(projectSlug),surfaceId,ownershipFilter,`session`]}function vibe64SessionEventMatchesScope(payload={},{projectSlug=``}={}){return!payload.learningAttemptId&&(!payload.projectSlug||payload.projectSlug===projectSlug)}function vibe64AssistantCapabilitiesQueryKey(surfaceId,ownershipFilter,projectSlug,scope=`overview`){return[`vibe64`,...vibe64ProjectQueryScope(projectSlug),surfaceId,ownershipFilter,`assistant-capabilities`,String(scope||`overview`)]}function encodePathSegment(value=``){return encodeURIComponent(String(value||``).trim())}function vibe64SessionPath(sessionsApiPath=``,sessionId=``,suffix=``){return`${sessionsApiPath}/${encodePathSegment(sessionId)}${suffix}`}function vibe64AssistantModelAccessPath(capabilitiesApiPath=``){return String(capabilitiesApiPath||``).replace(/\/assistants\/capabilities(?=\?|#|$)/u,`/assistants/model-access`)}function vibe64RepositoryApiPath(sessionsApiPath=``){const normalized=String(sessionsApiPath||``).replace(/\/+$/u,``);return normalized.endsWith(`/vibe64/sessions`)?`${normalized.slice(0,-16)}/vibe64/repository`:`${normalized}/repository`}function vibe64RepositoryHistoryPath(sessionsApiPath=``,options={}){const params=new URLSearchParams;const sessionId=String(options?.sessionId||``).trim();const cursor=String(options?.cursor||``).trim();if(sessionId)params.set(`sessionId`,sessionId);if(cursor)params.set(`cursor`,cursor);const query=params.toString();const base=`${vibe64RepositoryApiPath(sessionsApiPath)}/history`;return query?`${base}?${query}`:base}function vibe64RepositoryVersionFilesPath(sessionsApiPath=``,commit=``,options={}){const params=new URLSearchParams;const sessionId=String(options?.sessionId||``).trim();const historySnapshotCommit=String(options?.historySnapshotCommit||``).trim();if(sessionId)params.set(`sessionId`,sessionId);if(historySnapshotCommit)params.set(`historySnapshotCommit`,historySnapshotCommit);if(Number.isInteger(Number(options?.offset))&&Number(options.offset)>0)params.set(`offset`,String(Number(options.offset)));if(Number.isInteger(Number(options?.limit))&&Number(options.limit)>0)params.set(`limit`,String(Number(options.limit)));const query=params.toString();const base=`${vibe64RepositoryApiPath(sessionsApiPath)}/history/${encodePathSegment(commit)}/files`;return query?`${base}?${query}`:base}function vibe64RepositoryVersionDiffPath(sessionsApiPath=``,commit=``,sourcePath=``,options={}){const params=new URLSearchParams({path:String(sourcePath||``)});const sessionId=String(options?.sessionId||``).trim();const historySnapshotCommit=String(options?.historySnapshotCommit||``).trim();if(sessionId)params.set(`sessionId`,sessionId);if(historySnapshotCommit)params.set(`historySnapshotCommit`,historySnapshotCommit);return`${vibe64RepositoryApiPath(sessionsApiPath)}/history/${encodePathSegment(commit)}/diff?${params.toString()}`}function vibe64SessionChangesPath(sessionsApiPath=``,sessionId=``,options={}){const params=new URLSearchParams;if(Number.isInteger(Number(options?.offset))&&Number(options.offset)>0)params.set(`offset`,String(Number(options.offset)));if(Number.isInteger(Number(options?.limit))&&Number(options.limit)>0)params.set(`limit`,String(Number(options.limit)));const query=params.toString();const base=vibe64SessionPath(sessionsApiPath,sessionId,`/changes`);return query?`${base}?${query}`:base}function vibe64SessionCheckUpdatesPath(sessionsApiPath=``,sessionId=``){return vibe64SessionPath(sessionsApiPath,sessionId,`/updates/check`)}function vibe64SessionChangeDiffPath(sessionsApiPath=``,sessionId=``,sourcePath=``){return`${vibe64SessionPath(sessionsApiPath,sessionId,`/changes/diff`)}?path=${encodeURIComponent(String(sourcePath||``))}`}function vibe64AgentAttachmentPath(sessionsApiPath=``,sessionId=``){return vibe64SessionPath(sessionsApiPath,sessionId,`/agent-attachments`)}function vibe64AgentAttachmentFilePath(sessionsApiPath=``,sessionId=``,attachmentId=``){return`${vibe64AgentAttachmentPath(sessionsApiPath,sessionId)}/${encodePathSegment(attachmentId)}`}function vibe64TemporaryConversationsPath(sessionsApiPath=``,sessionId=``){return vibe64SessionPath(sessionsApiPath,sessionId,`/temporary-conversations`)}function vibe64TemporaryConversationPath(sessionsApiPath=``,sessionId=``,conversationId=``){return`${vibe64TemporaryConversationsPath(sessionsApiPath,sessionId)}/${encodePathSegment(conversationId)}`}function vibe64AgentTerminalPath(sessionsApiPath=``,sessionId=``,terminalSessionId=``){return vibe64SessionPath(sessionsApiPath,sessionId,terminalSessionId?`/agent-terminal/${encodePathSegment(terminalSessionId)}`:`/agent-terminal`)}function vibe64AgentTerminalControlTextPath(sessionsApiPath=``,sessionId=``,terminalSessionId=``){return`${vibe64AgentTerminalPath(sessionsApiPath,sessionId,terminalSessionId)}/control/text`}function vibe64ConversationLogPath(sessionsApiPath=``,sessionId=``){return vibe64SessionPath(sessionsApiPath,sessionId,`/conversation-log`)}function vibe64SessionPromptHintsPath(sessionsApiPath=``,sessionId=``){return vibe64SessionPath(sessionsApiPath,sessionId,`/prompt-hints`)}function vibe64SessionPromptHintsCancelPath(sessionsApiPath=``,sessionId=``){return`${vibe64SessionPromptHintsPath(sessionsApiPath,sessionId)}/cancel`}function vibe64SessionPreviewStatePath(sessionsApiPath=``,sessionId=``){return vibe64SessionPath(sessionsApiPath,sessionId,`/preview-state`)}function vibe64OutputsPath(sessionsApiPath=``,sessionId=``){return vibe64SessionPath(sessionsApiPath,sessionId,`/outputs`)}function vibe64PreviewIdentityPath(sessionsApiPath=``,sessionId=``){return vibe64SessionPath(sessionsApiPath,sessionId,`/preview-identity`)}function vibe64OutputRunPath(sessionsApiPath=``,sessionId=``,terminalSessionId=``){return vibe64SessionPath(sessionsApiPath,sessionId,terminalSessionId?`/output-runs/${encodePathSegment(terminalSessionId)}/terminal`:`/output-runs`)}function vibe64OutputRunStopPath(sessionsApiPath=``,sessionId=``,terminalSessionId=``){return vibe64SessionPath(sessionsApiPath,sessionId,`/output-runs/${encodePathSegment(terminalSessionId)}/stop`)}function vibe64OutputResultPath(sessionsApiPath=``,sessionId=``,resultId=``){return vibe64SessionPath(sessionsApiPath,sessionId,`/output-results/${encodePathSegment(resultId)}`)}function vibe64SourceEditorTreePath(sessionsApiPath=``,sessionId=``,options={}){const basePath=vibe64SessionPath(sessionsApiPath,sessionId,`/source-editor/tree`);const params=new URLSearchParams;const normalizedPath=String(options?.path||``).trim();if(normalizedPath)params.set(`path`,normalizedPath);if(Number.isInteger(Number(options?.offset))&&Number(options.offset)>0)params.set(`offset`,String(Number(options.offset)));if(Number.isInteger(Number(options?.limit))&&Number(options.limit)>0)params.set(`limit`,String(Number(options.limit)));const query=params.toString();return query?`${basePath}?${query}`:basePath}function vibe64SourceEditorFilesPath(sessionsApiPath=``,sessionId=``,query=``){const basePath=vibe64SessionPath(sessionsApiPath,sessionId,`/source-editor/files`);const normalizedQuery=String(query||``).trim();return normalizedQuery?`${basePath}?q=${encodeURIComponent(normalizedQuery)}`:basePath}function vibe64SourceEditorSearchPath(sessionsApiPath=``,sessionId=``,query=``){const basePath=vibe64SessionPath(sessionsApiPath,sessionId,`/source-editor/search`);const normalizedQuery=String(query||``).trim();return normalizedQuery?`${basePath}?q=${encodeURIComponent(normalizedQuery)}`:basePath}function vibe64SourceEditorResolvePathPath(sessionsApiPath=``,sessionId=``){return vibe64SessionPath(sessionsApiPath,sessionId,`/source-editor/resolve-path`)}function vibe64SourceEditorFilePath(sessionsApiPath=``,sessionId=``,sourcePath=``){const basePath=vibe64SessionPath(sessionsApiPath,sessionId,`/source-editor/file`);const normalizedPath=String(sourcePath||``).trim();return normalizedPath?`${basePath}?path=${encodeURIComponent(normalizedPath)}`:basePath}function vibe64SourceEditorCreateFilePath(sessionsApiPath=``,sessionId=``){return vibe64SessionPath(sessionsApiPath,sessionId,`/source-editor/file`)}function vibe64SourceEditorStarsPath(sessionsApiPath=``,sessionId=``){return vibe64SessionPath(sessionsApiPath,sessionId,`/source-editor/stars`)}function vibe64SourceEditorDownloadPath(sessionsApiPath=``,sessionId=``,sourcePath=``){return`${vibe64SessionPath(sessionsApiPath,sessionId,`/source-editor/download`)}?path=${encodeURIComponent(sourcePath)}`}function vibe64SourceEditorChangesStreamPath(sessionsApiPath=``,sessionId=``,sourcePath=``){const basePath=vibe64SessionPath(sessionsApiPath,sessionId,`/source-editor/changes/stream`);const normalizedPath=String(sourcePath||``).trim();return normalizedPath?`${basePath}?path=${encodeURIComponent(normalizedPath)}`:basePath}function vibe64SourceEditorExplanationsPath(sessionsApiPath=``,sessionId=``){return vibe64SessionPath(sessionsApiPath,sessionId,`/source-editor/explanations`)}function vibe64SourceEditorExplanationsStreamPath(sessionsApiPath=``,sessionId=``){return`${vibe64SourceEditorExplanationsPath(sessionsApiPath,sessionId)}/stream`}function vibe64SourceEditorExplanationsCleanupPath(sessionsApiPath=``,sessionId=``){return`${vibe64SourceEditorExplanationsPath(sessionsApiPath,sessionId)}/cleanup`}function vibe64SourceEditorExplanationPath(sessionsApiPath=``,sessionId=``,explanationId=``){return vibe64SessionPath(sessionsApiPath,sessionId,`/source-editor/explanations/${encodePathSegment(explanationId)}`)}function vibe64SourceEditorExplanationFollowupsPath(sessionsApiPath=``,sessionId=``,explanationId=``){return`${vibe64SourceEditorExplanationPath(sessionsApiPath,sessionId,explanationId)}/followups`}function vibe64SourceEditorExplanationFollowupsStreamPath(sessionsApiPath=``,sessionId=``,explanationId=``){return`${vibe64SourceEditorExplanationFollowupsPath(sessionsApiPath,sessionId,explanationId)}/stream`}function vibe64SourceEditorExplanationStopPath(sessionsApiPath=``,sessionId=``,explanationId=``){return`${vibe64SourceEditorExplanationPath(sessionsApiPath,sessionId,explanationId)}/stop`}function vibe64ConversationLogQueryKey(surfaceId,ownershipFilter,sessionId=``,projectSlug){return[`vibe64`,...vibe64ProjectQueryScope(projectSlug),surfaceId,ownershipFilter,`conversation-log`,encodePathSegment(sessionId)]}function vibe64OutputsQueryKey(surfaceId,ownershipFilter,sessionId=``,projectSlug){return[`vibe64`,...vibe64ProjectQueryScope(projectSlug),surfaceId,ownershipFilter,`outputs`,encodePathSegment(sessionId)]}function agentSettingsInputFromContext(context={}){return context?.agentSettings&&typeof context.agentSettings===`object`&&!Array.isArray(context.agentSettings)?{agentSettings:context.agentSettings}:{}}export{vibe64SourceEditorStarsPath as $,vibe64RepositoryVersionFilesPath as A,vibe64SessionsQueryKey as B,vibe64OutputRunStopPath as C,vibe64RepositoryApiPath as D,vibe64PreviewIdentityPath as E,vibe64SessionPath as F,vibe64SourceEditorExplanationPath as G,vibe64SourceEditorCreateFilePath as H,vibe64SessionPreviewStatePath as I,vibe64SourceEditorExplanationsStreamPath as J,vibe64SourceEditorExplanationStopPath as K,vibe64SessionPromptHintsCancelPath as L,vibe64SessionChangesPath as M,vibe64SessionCheckUpdatesPath as N,vibe64RepositoryHistoryPath as O,vibe64SessionEventMatchesScope as P,vibe64SourceEditorSearchPath as Q,vibe64SessionPromptHintsPath as R,vibe64OutputRunPath as S,vibe64OutputsQueryKey as T,vibe64SourceEditorDownloadPath as U,vibe64SourceEditorChangesStreamPath as V,vibe64SourceEditorExplanationFollowupsStreamPath as W,vibe64SourceEditorFilesPath as X,vibe64SourceEditorFilePath as Y,vibe64SourceEditorResolvePathPath as Z,vibe64AssistantCapabilitiesQueryKey as _,VIBE64_CURRENT_SESSION_API_SUFFIX as a,vibe64ConversationLogQueryKey as b,VIBE64_SOURCE_EDITOR_FILE_CHANGED_EVENT as c,agentTurnControlPayloadFromContext as d,vibe64SourceEditorTreePath as et,selectedSessionStorageKey as f,vibe64AgentTerminalPath as g,vibe64AgentTerminalControlTextPath as h,VIBE64_ASSISTANT_MODEL_ACCESS_API_SUFFIX as i,vibe64SessionChangeDiffPath as j,vibe64RepositoryVersionDiffPath as k,VIBE64_SOURCE_EDITOR_SYNC_ERROR_EVENT as l,vibe64AgentAttachmentPath as m,VIBE64_ARCHIVED_SESSIONS_API_SUFFIX as n,vibe64TemporaryConversationsPath as nt,VIBE64_SESSIONS_API_SUFFIX as o,vibe64AgentAttachmentFilePath as p,vibe64SourceEditorExplanationsCleanupPath as q,VIBE64_ASSISTANTS_API_SUFFIX as r,VIBE64_SESSION_CHANGED_EVENT as s,VIBE64_API_SUFFIX as t,vibe64TemporaryConversationPath as tt,VIBE64_SOURCE_EDITOR_SYNC_READY_EVENT as u,vibe64AssistantModelAccessPath as v,vibe64OutputsPath as w,vibe64OutputResultPath as x,vibe64ConversationLogPath as y,vibe64SessionQueryKey as z};
|
package/dist/index.html
CHANGED
|
@@ -21,7 +21,7 @@
|
|
|
21
21
|
}, true);
|
|
22
22
|
</script>
|
|
23
23
|
<style>#startup-shell{color:#25232a;background:#faf9fc;grid-template-rows:56px 1fr;font:15px system-ui,sans-serif;display:grid;position:fixed;inset:0}#startup-shell header{border-bottom:1px solid #dedce3;align-items:center;padding:0 24px;font-weight:600;display:flex}#startup-shell main{grid-template-columns:240px 1fr;min-height:0;display:grid}#startup-shell aside{border-right:1px solid #dedce3;padding:24px}#startup-shell .startup-placeholder{background:#e5e2eb;border-radius:4px;height:16px;margin-bottom:20px}#startup-shell section{padding:32px}#startup-shell a{min-height:48px;color:inherit;align-items:center;display:inline-flex}@media (width<=600px){#startup-shell main{grid-template-columns:1fr}#startup-shell aside{display:none}}@media (prefers-color-scheme:dark){#startup-shell{color:#eeeaf3;background:#19181d}#startup-shell header,#startup-shell aside{border-color:#3c3942}#startup-shell .startup-placeholder{background:#35323d}}</style>
|
|
24
|
-
<script type="module" crossorigin src="/assets/index-
|
|
24
|
+
<script type="module" crossorigin src="/assets/index-CGz4Yow6.js"></script>
|
|
25
25
|
<link rel="modulepreload" crossorigin href="/assets/rolldown-runtime-DBalRfVu.js">
|
|
26
26
|
<link rel="modulepreload" crossorigin href="/assets/runtime-core.esm-bundler-DGXg_mpN.js">
|
|
27
27
|
<link rel="modulepreload" crossorigin href="/assets/VAvatar-H2hyOWlB.js">
|
|
@@ -31,7 +31,7 @@
|
|
|
31
31
|
<link rel="modulepreload" crossorigin href="/assets/deepFreeze-BgoYkoTa.js">
|
|
32
32
|
<link rel="modulepreload" crossorigin href="/assets/vibe64ProjectScope.local-l5_-E6pq.js">
|
|
33
33
|
<link rel="modulepreload" crossorigin href="/assets/useRealtimeEvent-BNXVwzFG.js">
|
|
34
|
-
<link rel="modulepreload" crossorigin href="/assets/useEndpointResource-
|
|
34
|
+
<link rel="modulepreload" crossorigin href="/assets/useEndpointResource-7-YDfAxX.js">
|
|
35
35
|
<link rel="modulepreload" crossorigin href="/assets/useApi-BPuI6ZR9-CFWU1m37.js">
|
|
36
36
|
<link rel="modulepreload" crossorigin href="/assets/linkPath-Ch9eft18.js">
|
|
37
37
|
<link rel="modulepreload" crossorigin href="/assets/preload-helper-BvdcsxN9.js">
|
|
@@ -49,7 +49,7 @@
|
|
|
49
49
|
<link rel="modulepreload" crossorigin href="/assets/surface-DzO5xqc8.js">
|
|
50
50
|
<link rel="modulepreload" crossorigin href="/assets/studioUrls-B0-GdWh8.js">
|
|
51
51
|
<link rel="modulepreload" crossorigin href="/assets/asyncModuleRecovery-DJsn5NrL.js">
|
|
52
|
-
<link rel="modulepreload" crossorigin href="/assets/client-
|
|
52
|
+
<link rel="modulepreload" crossorigin href="/assets/client-BAXHGUOC.js">
|
|
53
53
|
<link rel="modulepreload" crossorigin href="/assets/mdi-X9prU-DG.js">
|
|
54
54
|
<link rel="modulepreload" crossorigin href="/assets/VBtn-Sj5jAuOx.js">
|
|
55
55
|
<link rel="modulepreload" crossorigin href="/assets/VAlert-7_VM9EUm.js">
|
|
@@ -69,8 +69,8 @@
|
|
|
69
69
|
<link rel="modulepreload" crossorigin href="/assets/placement-DYM3JJ-F.js">
|
|
70
70
|
<link rel="modulepreload" crossorigin href="/assets/pathname-Bb895US8.js">
|
|
71
71
|
<link rel="modulepreload" crossorigin href="/assets/usePaths-Y6UuQxmI.js">
|
|
72
|
-
<link rel="modulepreload" crossorigin href="/assets/useUiFeedback-
|
|
73
|
-
<link rel="modulepreload" crossorigin href="/assets/useCommand-
|
|
72
|
+
<link rel="modulepreload" crossorigin href="/assets/useUiFeedback-Bd3rao6E.js">
|
|
73
|
+
<link rel="modulepreload" crossorigin href="/assets/useCommand-CVuya6vG.js">
|
|
74
74
|
<link rel="modulepreload" crossorigin href="/assets/StudioErrorNotice-DudSuU3G.js">
|
|
75
75
|
<link rel="modulepreload" crossorigin href="/assets/browserLocalStorage-B4C7rHrs.js">
|
|
76
76
|
<link rel="modulepreload" crossorigin href="/assets/clipboard-CZs9aH3L.js">
|
|
@@ -78,14 +78,15 @@
|
|
|
78
78
|
<link rel="modulepreload" crossorigin href="/assets/shared-BEwrtWSp.js">
|
|
79
79
|
<link rel="modulepreload" crossorigin href="/assets/vibe64ApiResponses-B4VY77Q_.js">
|
|
80
80
|
<link rel="modulepreload" crossorigin href="/assets/studioGateApi-mkX1eOTX.js">
|
|
81
|
-
<link rel="modulepreload" crossorigin href="/assets/client-
|
|
81
|
+
<link rel="modulepreload" crossorigin href="/assets/client-CCZIu6yc.js">
|
|
82
82
|
<link rel="modulepreload" crossorigin href="/assets/VTextarea-wqoRFl1K.js">
|
|
83
83
|
<link rel="modulepreload" crossorigin href="/assets/conversation-DG9lp25w.js">
|
|
84
|
-
<link rel="modulepreload" crossorigin href="/assets/conversation-
|
|
84
|
+
<link rel="modulepreload" crossorigin href="/assets/conversation-ErAO1CmH.js">
|
|
85
85
|
<link rel="modulepreload" crossorigin href="/assets/useVibe64ProjectScope-DXjsKKhl.js">
|
|
86
86
|
<link rel="modulepreload" crossorigin href="/assets/vibe64BrowserTabOrigin-SF9E31vi.js">
|
|
87
|
-
<link rel="modulepreload" crossorigin href="/assets/
|
|
88
|
-
<link rel="modulepreload" crossorigin href="/assets/
|
|
87
|
+
<link rel="modulepreload" crossorigin href="/assets/vibe64SessionRequestConfig-xIx-5jxQ.js">
|
|
88
|
+
<link rel="modulepreload" crossorigin href="/assets/useVibe64DatabaseTools-DKV-TeNJ.js">
|
|
89
|
+
<link rel="modulepreload" crossorigin href="/assets/useVibe64SystemGraph-Db_eD-X8.js">
|
|
89
90
|
<link rel="stylesheet" crossorigin href="/assets/VAvatar-nHaK192T.css">
|
|
90
91
|
<link rel="stylesheet" crossorigin href="/assets/VOverlay-DG-PukqI.css">
|
|
91
92
|
<link rel="stylesheet" crossorigin href="/assets/VDivider-DvkP_iX7.css">
|
|
@@ -162,7 +162,8 @@ consent remain your interaction in **AI Accounts**.
|
|
|
162
162
|
|
|
163
163
|
For Claude, a failed status check is distinct from being signed out. Retry the
|
|
164
164
|
status check before starting another login; Colleague can recheck readiness,
|
|
165
|
-
while provider consent remains your step.
|
|
165
|
+
while provider consent remains your step. **AI Accounts** shows the same Claude
|
|
166
|
+
Code sign-in your chats use.
|
|
166
167
|
If Claude reports that another process is refreshing its OAuth token, wait a
|
|
167
168
|
minute before retrying. If the error persists, ask the workspace operator to
|
|
168
169
|
check the managed Claude version and refresh-lock recovery. This error alone
|
|
@@ -170,7 +171,7 @@ does not prove that you signed out or need to replace your credentials.
|
|
|
170
171
|
Changing the workspace's Claude account stops its existing Claude processes.
|
|
171
172
|
Sign-ins and key checks show a spinner and what is happening while they wait,
|
|
172
173
|
as described in [AI onboarding](ai-onboarding.md#while-it-works).
|
|
173
|
-
Main chats keep their history and resume with the newly connected account; they
|
|
174
|
+
Main and temporary chats keep their history and resume with the newly connected account; they
|
|
174
175
|
do not require access to the previous account. Model selection in **Chat mode**
|
|
175
176
|
also uses the current workspace connection. If the old process cannot be stopped,
|
|
176
177
|
resolve the reported stop failure before retrying; a replacement cannot start
|
|
@@ -246,6 +247,9 @@ If those choices changed while the dialog was open, press **Cancel**, reopen
|
|
|
246
247
|
**Custom**, review your selection and apply again. A loading error offers
|
|
247
248
|
**Retry**. Neither action changes saved provider connections.
|
|
248
249
|
Claude Code uses its selected provider for background model calls as well.
|
|
250
|
+
To start a new session on such a choice, select **Change** in **Start an AI
|
|
251
|
+
session**: it opens the same **Custom AI** choice, and the new chat starts in
|
|
252
|
+
Custom (see [Create and switch sessions](sessions.md)).
|
|
249
253
|
|
|
250
254
|
If an administrator's stopped-service upgrade reports an unsupported saved
|
|
251
255
|
model request even though the conversation uses current Senior, Junior, Auto
|
|
@@ -12,7 +12,14 @@ mobile; tap the value on either layout to open its details.
|
|
|
12
12
|
such as **68%**. The weekly quota is shown when supplied; otherwise the supplied
|
|
13
13
|
coding quota is used. Details include shorter windows and reset times when known.
|
|
14
14
|
- Native **Claude** subscriptions and **Codex** ChatGPT plans retain their weekly
|
|
15
|
-
percentage and existing **Refresh** control.
|
|
15
|
+
percentage and existing **Refresh** control. The percentage appears only while
|
|
16
|
+
the reading is current. While the page is visible, Claude's is read about once
|
|
17
|
+
a minute through a Claude chat running for that account. When no chat is running,
|
|
18
|
+
or the running chat can't confirm a current figure, a short check that stops as
|
|
19
|
+
soon as it answers runs at most every five minutes. When no current reading can be
|
|
20
|
+
obtained, the value shows **?%**. Its details say, for example, **Can't check
|
|
21
|
+
your Claude allowance right now.** and, when known, when it was last checked
|
|
22
|
+
and what was left then.
|
|
16
23
|
|
|
17
24
|
The selected connection must be available in **AI Accounts**, and you must have
|
|
18
25
|
permission to use it. To choose a model explicitly, open **Chat mode**, choose
|
|
@@ -47,12 +54,18 @@ can reject a configured key; a missing balance alone is not a reason to replace
|
|
|
47
54
|
the key. Check the provider's Billing page for the account balance. GPT API keys
|
|
48
55
|
do not show a balance. A confirmed zero does display as zero.
|
|
49
56
|
|
|
57
|
+
For Claude and Codex, **?%** means the allowance can't be checked right now; it
|
|
58
|
+
does not mean zero, and the last checked value in its details may be out of date.
|
|
59
|
+
Tap it and choose **Refresh** to try again, or use **Usage details** to see the
|
|
60
|
+
provider's current figure.
|
|
61
|
+
|
|
50
62
|
Colleague can explain these controls, help identify the session's selected model,
|
|
51
63
|
and offer to change the selection through its existing session actions. A change
|
|
52
64
|
requires the person's request or acceptance and normal access checks. Colleague
|
|
53
65
|
can read the same balance or allowance for a session: the amount and currency,
|
|
54
66
|
or the remaining percentage with its reset time, and when it was checked. Like
|
|
55
|
-
the indicator, no reading does not mean zero
|
|
67
|
+
the indicator, no reading does not mean zero, and a reading reported as stale is
|
|
68
|
+
the last value checked, not the current one. Colleague has no access to API
|
|
56
69
|
keys; the person opens the provider site and handles any account payment or top-up.
|
|
57
70
|
|
|
58
71
|
Verified against `Vibe64AgentPlanUsage.vue`, `Vibe64ChatModeControls.vue`,
|
|
@@ -44,7 +44,8 @@ deleted or prevent you from chatting. An interrupted snapshot command is named
|
|
|
44
44
|
as such; expand **Technical details** for the original error and recovery steps.
|
|
45
45
|
Vibe64 attempts another snapshot when the next assistant turn finishes, including
|
|
46
46
|
failed or stopped turns—not immediately when you send a message. A successful
|
|
47
|
-
snapshot clears the warning automatically.
|
|
47
|
+
snapshot clears the warning automatically. A snapshot stops after two minutes at
|
|
48
|
+
most, and a later snapshot removes the temporary files of one that was stopped.
|
|
48
49
|
|
|
49
50
|
Select **Dismiss** to hide this particular failure. This takes effect immediately
|
|
50
51
|
and is remembered for this project/session in the same browser across reloads.
|
|
@@ -100,11 +100,16 @@ through the explanation.
|
|
|
100
100
|
|
|
101
101
|
Failed Main-chat messages offer **Retry** and **Cancel** on desktop and mobile.
|
|
102
102
|
**Retry** checks an uncertain attempt's original message ID first. If it was
|
|
103
|
-
already delivered, the failure controls disappear without another send.
|
|
103
|
+
already delivered, the failure controls disappear without another send. If the
|
|
104
|
+
AI proves it never received the message, Retry sends it once with the same ID;
|
|
105
|
+
while delivery is unknown, nothing is sent.
|
|
104
106
|
**Cancel** removes an old local failed attempt immediately without stopping a
|
|
105
107
|
newer goal or deleting delivered conversation history. For a request still
|
|
106
|
-
owned by the current route, the bubble hides while cancellation is checked
|
|
107
|
-
|
|
108
|
+
owned by the current route, the bubble hides while cancellation is checked. An
|
|
109
|
+
unconfirmed request is removed only once the AI proves it never received it:
|
|
110
|
+
while that is unknown, Cancel stops the turn and checks once more. The bubble
|
|
111
|
+
returns if delivery remains unknown or cancellation fails. Only Claude can
|
|
112
|
+
currently prove that a message never arrived. Colleague can explain
|
|
108
113
|
these controls; the person presses them in Main chat.
|
|
109
114
|
|
|
110
115
|
New goals pass exactly your objective to the native goal evaluator. Model and
|
|
@@ -108,6 +108,22 @@ When an assistant cannot start, stops by itself or reports a failure, see [When
|
|
|
108
108
|
4. Wait for the actual answer and inspect its reported checks. Delivery or a
|
|
109
109
|
working status is not a completed implementation.
|
|
110
110
|
|
|
111
|
+
A steered message joins the running turn on that turn's own AI connection, so
|
|
112
|
+
the composer can refuse it while the turn runs:
|
|
113
|
+
|
|
114
|
+
- **Only the owner can steer this turn. You can send a message when it
|
|
115
|
+
finishes.** The turn runs on the workspace owner's personal plan and you are
|
|
116
|
+
not the owner (see [Personal-use AI subscriptions](ai-personal-use.md)).
|
|
117
|
+
- **This turn's AI connection is unavailable right now, so you can't steer it.
|
|
118
|
+
Check AI Accounts, or send your message when the turn finishes.** Vibe64 could
|
|
119
|
+
not confirm that connection: it may be signed out, or its check failed. This
|
|
120
|
+
applies to the owner too, and the turn keeps running. When the turn ends,
|
|
121
|
+
Vibe64 checks the connection again; returning to the browser window also
|
|
122
|
+
rechecks it. If the hint stays, open AI Accounts and reconnect the account.
|
|
123
|
+
|
|
124
|
+
Both hints keep your draft and are the same on desktop and phone. Colleague can
|
|
125
|
+
explain them; reconnecting an account remains your step.
|
|
126
|
+
|
|
111
127
|
On compact screens, reveal chat before using its composer. Failed submissions
|
|
112
128
|
remain visibly failed or pending; inspect the target before retrying an uncertain
|
|
113
129
|
write. Retry reuses the original request identity rather than starting duplicate work.
|
|
@@ -13,6 +13,20 @@ pull-request policy. **Update this session (rebase)** reconciles newer saved pro
|
|
|
13
13
|
work when offered; Save does not silently perform that update for you. A failed or
|
|
14
14
|
uncertain push needs a state check before another request.
|
|
15
15
|
|
|
16
|
+
While a browser tab shows the project, or an AI turn runs in one of its sessions,
|
|
17
|
+
Vibe64 checks the project's repository every 30 seconds. Newer saved work pushed
|
|
18
|
+
from elsewhere, or committed in a local project folder, turns each affected
|
|
19
|
+
session's tab and header action to **Update this session (rebase)** within about
|
|
20
|
+
half a minute; a Save from another Vibe64 session shows it at once. Nothing is
|
|
21
|
+
checked while no tab shows the project and no AI works in it; it checks again as
|
|
22
|
+
soon as you return. If a check fails, the session's repository status shows the
|
|
23
|
+
error and Vibe64 retries every minute. **Check for updates** in Repository checks
|
|
24
|
+
immediately. These steps apply on desktop and mobile.
|
|
25
|
+
|
|
26
|
+
Vibe64 reuses your GitHub login for a few minutes across repository operations.
|
|
27
|
+
If you reconnect GitHub and the previous login was revoked, the next operation can
|
|
28
|
+
fail once with a GitHub authentication error; retry it and it uses the new login.
|
|
29
|
+
|
|
16
30
|
In Auto, **Automatic save after completing a plan** (on by default in the chat
|
|
17
31
|
mode menu) runs this same Save once a plan is completed and its review turn ends.
|
|
18
32
|
Its progress, result and recovery are the ordinary Save's; when it cannot save,
|
|
@@ -67,9 +67,12 @@ work. Public applications and non-web projects do not need preview accounts.
|
|
|
67
67
|
accounts. Available starters depend on the installation; do not assume an
|
|
68
68
|
absent card exists.
|
|
69
69
|
2. Choose **Use this starter →** on the intended card only when it matches the
|
|
70
|
-
product you want. Preparation adds it to this session
|
|
71
|
-
|
|
72
|
-
|
|
70
|
+
product you want. Preparation adds it to this session, whose tab then counts
|
|
71
|
+
the starter's files as unsaved changes and whose **Save** button turns red;
|
|
72
|
+
use **Save** to keep the work in the project. Until then, other and new
|
|
73
|
+
sessions do not have the starter, and archiving this session leaves it out of
|
|
74
|
+
the project; the **Archive session** dialog warns about this unsaved work. A
|
|
75
|
+
failed application reports its error and preserves existing work.
|
|
73
76
|
3. You can also describe the app directly in the session's main chat. In an
|
|
74
77
|
empty folder that was never set up, the coding agent first initializes Genesis,
|
|
75
78
|
then proposes a Blueprint and the matching Stack components for your answer.
|
|
@@ -69,7 +69,9 @@ Vibe64 keeps each project's history with Git (2.28 or newer).
|
|
|
69
69
|
- **Your name on commits.** Commits use the name and email from your own Git
|
|
70
70
|
settings. If Git has none, they are saved with a stand-in name ending in
|
|
71
71
|
“via Vibe64”, and **Health** and the Save result show the two
|
|
72
|
-
`git config --global` lines to set yours.
|
|
72
|
+
`git config --global` lines to set yours. Those lines take effect on the
|
|
73
|
+
next command; a name set some other way (an included file, or one
|
|
74
|
+
repository's own settings) can take up to 30 seconds to be used.
|
|
73
75
|
- **Signed commits.** If your Git signs every commit (`commit.gpgsign`) and the
|
|
74
76
|
key needs a passphrase, Vibe64 can't type it. Make one signed commit in a
|
|
75
77
|
terminal to unlock the key, then try again. Vibe64 doesn't change the setting.
|
|
@@ -2,8 +2,25 @@
|
|
|
2
2
|
|
|
3
3
|
Use **New session** (+), or **Create session** when there are no open sessions,
|
|
4
4
|
to open **Start an AI session**. It shows **Runs on your main AI:** and the main
|
|
5
|
-
AI's model
|
|
6
|
-
|
|
5
|
+
AI's model. A saved setup appears straight away: the dialog does not wait for
|
|
6
|
+
each AI tool's model list or start any AI tool. Without a change the new session
|
|
7
|
+
runs on the main AI and starts with Senior.
|
|
8
|
+
|
|
9
|
+
To run only this new session on another AI, for example DeepSeek, select
|
|
10
|
+
**Change** beside the main AI. It opens **Custom AI**, the same choice as a
|
|
11
|
+
chat's **Custom** mode, and only then loads the model choices. Choose
|
|
12
|
+
**Orchestrator**, **Model** and **Thinking** and press **Apply**; a loading
|
|
13
|
+
error offers **Retry**, and **Configure more AIs** opens account setup when the
|
|
14
|
+
provider you want is not connected. **Cancel** there keeps the current choice. The
|
|
15
|
+
dialog then shows **This session runs on:** with your choice and says the
|
|
16
|
+
session **Starts in Custom**; the new chat runs on that AI in **Custom** mode,
|
|
17
|
+
and your main AI and other sessions are unchanged. **Use main AI** discards the
|
|
18
|
+
choice, as does closing the dialog. Choosing the main AI's own model keeps the
|
|
19
|
+
main AI. **Change** is offered only to the person who manages the workspace's
|
|
20
|
+
AI; a team member's sessions always start on the owner's main AI.
|
|
21
|
+
|
|
22
|
+
To change the main AI for every session instead, select **Change main AI for
|
|
23
|
+
all sessions**, which opens AI setup. Review any branch choice,
|
|
7
24
|
then select **Create session** (or
|
|
8
25
|
**Create branch & session**). While **Creating session…** is shown, the dialog
|
|
9
26
|
shows a progress bar and explains that it is copying the project source. It stays open: clicking outside,
|
|
@@ -27,8 +44,9 @@ finishes; see [Prepare a session after updating its source](workspace-preparatio
|
|
|
27
44
|
for failures and retry.
|
|
28
45
|
|
|
29
46
|
Creation through an action without an explicit AI choice uses the main AI. An
|
|
30
|
-
explicit model choice makes the new chat Custom
|
|
31
|
-
unavailable: fix its account or AI setup
|
|
47
|
+
explicit model choice, like **Change** in the dialog, makes the new chat Custom
|
|
48
|
+
and is preserved even when it is unavailable: fix its account or AI setup, or
|
|
49
|
+
choose another AI, before retrying. A team member's new
|
|
32
50
|
session still records the owner's main AI; main chat runs on the owner's AI. Colleague
|
|
33
51
|
can read the available choices and explain recovery; it must not claim a failed
|
|
34
52
|
request left no saved lesson without checking that lesson's current state.
|
|
@@ -140,6 +158,13 @@ fresh session does not authorize further coding work.
|
|
|
140
158
|
Select the session, choose **Archive session**, and confirm **Archive session**
|
|
141
159
|
in the dialog. This stops its assistant and terminals, preserves the session and
|
|
142
160
|
removes its active workspace. Desktop and mobile use the same confirmation.
|
|
161
|
+
Archiving does not Save. Work the project does not have yet, such as an added
|
|
162
|
+
starter, stays only in the session archive, and archived sessions cannot restore
|
|
163
|
+
source to the project. When the session has unsaved changes, the dialog says how
|
|
164
|
+
many and its button reads **Archive without saving**; choose **Cancel**, then
|
|
165
|
+
**Save**, to keep them. When Vibe64 has not yet confirmed whether the work is
|
|
166
|
+
saved, the dialog says so. A new session starts from the project's saved source,
|
|
167
|
+
so it does not contain an archived session's unsaved work.
|
|
143
168
|
An OpenCode session can be archived before its main chat has started; an idle
|
|
144
169
|
assistant with no native conversation does not need a main-turn Stop request.
|
|
145
170
|
Its helper conversations and terminals still go through normal cleanup.
|
|
@@ -158,9 +183,12 @@ If the last open session cannot be archived, its chat is selected again so you
|
|
|
158
183
|
can inspect the failure and retry. If another session is already selected, that
|
|
159
184
|
selection stays in place and the failed session becomes available in its tab.
|
|
160
185
|
Colleague can explain these steps and the reported error. When you explicitly
|
|
161
|
-
ask it to archive a named session, it
|
|
162
|
-
|
|
163
|
-
|
|
186
|
+
ask it to archive a named session, it first checks that session's saved-work
|
|
187
|
+
status. If the session has unsaved changes, or their status is unconfirmed, it
|
|
188
|
+
tells you how many, offers **Save**, and archives only after you confirm
|
|
189
|
+
archiving without saving. It archives through the same action; the same pin,
|
|
190
|
+
renewal and preparation guards apply, and it reports a failed cleanup for retry.
|
|
191
|
+
Stopping an agent or ending Colleague is never an archive request.
|
|
164
192
|
|
|
165
193
|
## Chat availability
|
|
166
194
|
|
|
@@ -28,6 +28,9 @@ The same choices appear on desktop and mobile. Applying a starter imports its
|
|
|
28
28
|
source and starts **Prepare workspace** at once: it installs dependencies,
|
|
29
29
|
provisions the declared resources (an installation that supplies the database
|
|
30
30
|
does so here) and runs migrations; a failed preparation offers **Retry**.
|
|
31
|
+
The imported files are unsaved session work: the session's tab counts them and
|
|
32
|
+
its **Save** button turns red. Save them to keep the starter in the project;
|
|
33
|
+
archiving the session first leaves it out.
|
|
31
34
|
The coding agent can then follow the first feature request using the existing
|
|
32
35
|
test commands documented in the starter's `docs/colleague-usage/testing.md`.
|
|
33
36
|
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
# Start a temporary chat with recent context
|
|
2
2
|
|
|
3
3
|
Open **Temporary AI** to create the first chat, or select **New temporary AI task**
|
|
4
|
-
(the plus beside existing temporary chat tabs).
|
|
4
|
+
(the plus beside existing temporary chat tabs). When the session already has
|
|
5
|
+
temporary chats, **Temporary AI** opens them instead and offers no new chat. Leave
|
|
5
6
|
**Include recent chat context** unchecked for an empty conversation, or check it
|
|
6
7
|
and select **Create chat** to copy recent context from Main in this session.
|
|
7
8
|
When Main has no messages yet there is nothing to copy, so the chat opens
|
|
@@ -1,8 +1,13 @@
|
|
|
1
1
|
# Choose the AI for a temporary chat
|
|
2
2
|
|
|
3
3
|
Open **Temporary AI** from the session toolbar, or from **Session actions** in
|
|
4
|
-
a chat too narrow for it.
|
|
5
|
-
|
|
4
|
+
a chat too narrow for it. If the session already has temporary chats, it shows
|
|
5
|
+
them and creates nothing; it starts a new chat only when there are none. Just
|
|
6
|
+
after a session opens, it waits for the saved chats to load before deciding. If
|
|
7
|
+
they cannot be loaded, it shows the error and **Try again** instead of starting
|
|
8
|
+
one. To add another chat, select **New temporary AI task** (the plus beside the
|
|
9
|
+
tabs). Select the temporary chat you want to change. Its **Chat mode** icon is
|
|
10
|
+
inside the message box.
|
|
6
11
|
|
|
7
12
|
In **New temporary chat**, **Cancel** returns directly to Main when starting the
|
|
8
13
|
first chat. If another temporary or host conversation was selected, it stays
|
|
@@ -159,10 +164,17 @@ original settings and files. Anything you typed or attached afterward stays in
|
|
|
159
164
|
the composer. Accepted files leave the composer; later attachments remain.
|
|
160
165
|
|
|
161
166
|
If a message shows **Retry**, use that control with the original message.
|
|
162
|
-
It checks whether that exact message reached the selected chat
|
|
163
|
-
|
|
167
|
+
It checks whether that exact message reached the selected chat. If it did,
|
|
168
|
+
nothing is sent again. If the AI proves it never received the message, Retry
|
|
169
|
+
sends it once with its original settings; while delivery is still unknown,
|
|
170
|
+
nothing is sent. A visible message can still be awaiting confirmation. If the
|
|
164
171
|
connection cannot read the native receipt, keep the chat and retry the check
|
|
165
|
-
after reconnecting. **
|
|
172
|
+
after reconnecting. **Cancel** on an unconfirmed message stops ongoing work and
|
|
173
|
+
then checks it: the message is removed, and stays removed after a reload, once
|
|
174
|
+
the AI proves it never received it; a message that did arrive stays in the
|
|
175
|
+
conversation. While delivery remains unknown, Cancel keeps the message and says
|
|
176
|
+
so; try again in a moment. Only Claude can currently prove that a message never
|
|
177
|
+
arrived; with other AIs an unknown delivery stays until it is confirmed. **Stop** remains available for ongoing work. **Close** removes
|
|
166
178
|
the temporary chat only after its native work and attachments are safely cleaned
|
|
167
179
|
up; a failed Close can be retried. If you used more than one AI in this chat,
|
|
168
180
|
Close cleans up each retained native conversation. A retry continues the unfinished
|
|
@@ -34,7 +34,8 @@ modes) and `packages/agent-docs/site/guide/app-extras/assistant-conversation.md`
|
|
|
34
34
|
With the existing realtime diagnostic option (`JSKIT_REALTIME_DEBUG=1`, or
|
|
35
35
|
`config.realtime.debug=true`), conversation subscriptions emit one `pending`
|
|
36
36
|
warning if admission/snapshot reading has not returned within the client's
|
|
37
|
-
10-second
|
|
37
|
+
10-second budget, after which the client shows a loading notice and keeps waiting
|
|
38
|
+
(it gives up only after 120 seconds). The warning names the current stage and the
|
|
38
39
|
server-generated epoch; a conversation identity is included only after its
|
|
39
40
|
successful authorized open. Observer release also records the current stage and
|
|
40
41
|
reason. While diagnostics are enabled, every stage transition is recorded at
|
|
@@ -130,7 +130,8 @@
|
|
|
130
130
|
},
|
|
131
131
|
"errors": {
|
|
132
132
|
"assistant_history_inspection_required": "This conversation has ambiguous historical SQL rows. Inspect the reported rows offline before using the common runtime; no history was changed.",
|
|
133
|
-
"assistant_subscription_transport_failed": "Chat updates could not reconnect. Retrying automatically; Reload chat to try now."
|
|
133
|
+
"assistant_subscription_transport_failed": "Chat updates could not reconnect. Retrying automatically; Reload chat to try now.",
|
|
134
|
+
"assistant_subscription_waiting": "Chat is still loading. Waiting for the server; Reload chat to try now."
|
|
134
135
|
}
|
|
135
136
|
}
|
|
136
137
|
}
|