diff --git a/site/src/router/api.ts b/site/src/router/api.ts index 3d927df..a76c454 100644 --- a/site/src/router/api.ts +++ b/site/src/router/api.ts @@ -124,9 +124,9 @@ export const API = { byId: (uuid: string) => `training-file/${uuid}/`, retry: (uuid: string) => `training-file/${uuid}/retry/`, }, - roleRagDocuments: { - list: () => 'role-rag-document/', - byId: (uuid: string) => `role-rag-document/${uuid}/`, + knowledgeChunks: { + list: () => 'knowledge-chunk/', + byId: (uuid: string) => `knowledge-chunk/${uuid}/`, }, }, diff --git a/site/src/router/index.ts b/site/src/router/index.ts index 41a806c..f83f2db 100644 --- a/site/src/router/index.ts +++ b/site/src/router/index.ts @@ -54,7 +54,7 @@ const router = createRouter({ path: '/invite/:inviteUuid', name: 'invite-accept', component: () => import('../views/InviteAccept.vue'), - meta: { requiresAuth: true }, + meta: { requiresAuth: true, authRedirect: '/register' }, }, { path: '/agents', @@ -103,7 +103,8 @@ router.beforeEach((to, from, next) => { return next({ path: '/' }) } if (to.meta?.requiresAuth && !isAuthenticated) { - return next({ path: '/login', query: { redirect: to.fullPath } }) + const authPath = (to.meta?.authRedirect as string) || '/login' + return next({ path: authPath, query: { redirect: to.fullPath } }) } if (to.meta?.requiresManager && !isManager) { return next({ path: '/' }) diff --git a/site/src/stores/agentStore.ts b/site/src/stores/agentStore.ts index 31ca94f..e8bd4f7 100644 --- a/site/src/stores/agentStore.ts +++ b/site/src/stores/agentStore.ts @@ -123,6 +123,9 @@ export const useAgentStore = defineStore('agent', () => { clearReconnectTimer() reconnectAttempts = 0 streamBuffer.value = '' + eventLog.value = [] + executionStatus.value = 'idle' + lastExecutionId.value = null if (socket.value) { socket.value.close() diff --git a/site/src/stores/onboardingAgentStore.ts b/site/src/stores/onboardingAgentStore.ts index b39004f..9bf8b09 100644 --- a/site/src/stores/onboardingAgentStore.ts +++ b/site/src/stores/onboardingAgentStore.ts @@ -124,6 +124,10 @@ export const useOnboardingAgentStore = defineStore('onboarding-agent', () => { intentionalClose = false clearReconnectTimer() reconnectAttempts = 0 + eventLog.value = [] + executionStatus.value = 'idle' + lastExecutionId.value = null + currentPhase.value = null if (socket.value) { socket.value.close() diff --git a/site/src/views/AgentDetailView.vue b/site/src/views/AgentDetailView.vue index 055ef48..532e26a 100644 --- a/site/src/views/AgentDetailView.vue +++ b/site/src/views/AgentDetailView.vue @@ -2,6 +2,7 @@ import { ref, onMounted, onUnmounted, computed } from 'vue' import { useRoute } from 'vue-router' import { + Alert, Card, Typography, Button, @@ -48,6 +49,13 @@ const agentTypeOptions = [ { label: 'Assessment Agent', value: 'assessment' }, { label: 'Progress Monitor', value: 'monitor' }, ] + +const agentTypeDescriptions: Record = { + curriculum: 'Guides new hires through a structured onboarding path — presenting content, tasks, and milestones in a defined sequence for a given role.', + knowledge: 'Answers ad-hoc questions by searching your uploaded training documents and knowledge base. Use this for open-ended Q&A during onboarding.', + assessment: 'Tests understanding through role-specific questions and scenarios, then reports results back to the onboarding session so progress can be tracked.', + monitor: 'Tracks overall session progress and surfaces completions or blockers for manager review without directly interacting with the new hire.', +} const maxTokens = ref(256) const queryInput = ref('') @@ -202,6 +210,13 @@ onUnmounted(() => { disabled style="width: 100%" /> +
diff --git a/site/src/views/AgentsView.vue b/site/src/views/AgentsView.vue index 082d6ad..0374a14 100644 --- a/site/src/views/AgentsView.vue +++ b/site/src/views/AgentsView.vue @@ -1,6 +1,6 @@