(function(){"use strict";try{if(typeof document<"u"){var a=document.createElement("style");a.appendChild(document.createTextNode(".activity-view[data-v-5a3f5b6a]{display:flex;flex-direction:column;gap:16px}.activity-title-row[data-v-5a3f5b6a],.detail-header[data-v-5a3f5b6a]{display:flex;align-items:flex-start;justify-content:space-between;gap:16px}.activity-title-row h3[data-v-5a3f5b6a],.detail-header h4[data-v-5a3f5b6a]{margin:0 0 4px}.activity-title-row p[data-v-5a3f5b6a],.detail-header p[data-v-5a3f5b6a],.privacy-note[data-v-5a3f5b6a]{margin:0;color:var(--color-text-maxcontrast)}.activity-actions[data-v-5a3f5b6a],.detail-actions[data-v-5a3f5b6a]{display:flex;flex-wrap:wrap;gap:8px}.privacy-note[data-v-5a3f5b6a]{padding:10px 12px;border-left:3px solid var(--color-primary-element);background:var(--color-background-hover)}.filters[data-v-5a3f5b6a]{display:grid;grid-template-columns:minmax(180px,1fr) minmax(140px,180px) minmax(150px,190px) minmax(130px,150px) minmax(130px,150px) auto auto auto;gap:12px;align-items:end}.filters label[data-v-5a3f5b6a]{display:flex;flex-direction:column;gap:4px;font-weight:600}.filters input[data-v-5a3f5b6a],.filters select[data-v-5a3f5b6a]{min-height:36px}.checkbox-label[data-v-5a3f5b6a]{flex-direction:row!important;align-items:center;min-height:36px}.error-banner[data-v-5a3f5b6a]{padding:10px 12px;border-radius:var(--border-radius);background:var(--color-error);color:var(--color-error-text)}.loading[data-v-5a3f5b6a],.empty-state[data-v-5a3f5b6a],.empty-detail[data-v-5a3f5b6a],.loading-small[data-v-5a3f5b6a]{display:flex;align-items:center;justify-content:center;gap:8px;min-height:120px;color:var(--color-text-maxcontrast)}.empty-state[data-v-5a3f5b6a]{flex-direction:column}.activity-layout[data-v-5a3f5b6a]{display:grid;grid-template-columns:minmax(320px,.9fr) minmax(420px,1.3fr);gap:16px;align-items:start}.trace-list[data-v-5a3f5b6a],.trace-detail[data-v-5a3f5b6a]{min-width:0}.trace-row[data-v-5a3f5b6a]{display:flex;align-items:center;justify-content:space-between;width:100%;min-height:72px;margin-bottom:8px;padding:10px 12px;border:1px solid var(--color-border);border-radius:var(--border-radius);background:var(--color-main-background);color:var(--color-main-text);text-align:left;cursor:pointer}.trace-row.selected[data-v-5a3f5b6a],.trace-row[data-v-5a3f5b6a]:hover{border-color:var(--color-primary-element);background:var(--color-background-hover)}.trace-main[data-v-5a3f5b6a]{min-width:0}.trace-meta[data-v-5a3f5b6a],.trace-counts[data-v-5a3f5b6a],.event-header[data-v-5a3f5b6a]{display:flex;flex-wrap:wrap;align-items:center;gap:8px;color:var(--color-text-maxcontrast);font-size:13px}.trace-preview[data-v-5a3f5b6a]{display:block;overflow:hidden;margin-top:6px;text-overflow:ellipsis;white-space:nowrap}.trace-counts[data-v-5a3f5b6a]{justify-content:flex-end;min-width:88px}.status-badge[data-v-5a3f5b6a]{display:inline-flex;align-items:center;min-height:22px;padding:0 8px;border-radius:999px;background:var(--color-background-dark);color:var(--color-main-text);font-size:12px;font-weight:700}.status-badge.success[data-v-5a3f5b6a],.status-badge.ok[data-v-5a3f5b6a]{background:var(--color-success);color:var(--color-primary-element-text)}.status-badge.error[data-v-5a3f5b6a]{background:var(--color-error);color:var(--color-error-text)}.status-badge.partial[data-v-5a3f5b6a],.status-badge.running[data-v-5a3f5b6a],.status-badge.started[data-v-5a3f5b6a]{background:var(--color-warning);color:var(--color-main-text)}.pagination[data-v-5a3f5b6a]{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-top:12px}.trace-detail[data-v-5a3f5b6a]{padding:16px;border:1px solid var(--color-border);border-radius:var(--border-radius);background:var(--color-main-background)}.run-summary[data-v-5a3f5b6a]{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px;margin:16px 0}.run-summary div[data-v-5a3f5b6a]{display:flex;flex-direction:column;gap:4px;padding:8px;border-radius:var(--border-radius);background:var(--color-background-hover)}.event-list[data-v-5a3f5b6a]{display:flex;flex-direction:column;gap:12px;margin:0;padding:0;list-style:none}.event-item[data-v-5a3f5b6a]{padding:12px;border:1px solid var(--color-border);border-radius:var(--border-radius)}.event-type[data-v-5a3f5b6a]{color:var(--color-main-text);font-weight:700;text-transform:capitalize}.event-tool[data-v-5a3f5b6a]{font-family:var(--font-face-monospace)}.event-time[data-v-5a3f5b6a]{margin-left:auto}.event-error[data-v-5a3f5b6a]{color:var(--color-error);font-weight:600}.raw-llm-payload[data-v-5a3f5b6a]{margin-top:10px;color:var(--color-text-maxcontrast);font-size:12px}.raw-llm-payload summary[data-v-5a3f5b6a]{cursor:pointer;font-weight:600}.raw-llm-payload pre[data-v-5a3f5b6a]{overflow:auto;max-height:420px;margin:6px 0;padding:10px;border:1px dashed var(--color-border);border-radius:var(--border-radius);background:var(--color-background-hover);color:var(--color-main-text);font-size:12px;line-height:1.35;white-space:pre-wrap;word-break:break-word}.event-block[data-v-5a3f5b6a]{margin-top:10px}.event-block pre[data-v-5a3f5b6a]{overflow:auto;max-height:260px;margin:6px 0;padding:10px;border-radius:var(--border-radius);background:var(--color-background-dark);white-space:pre-wrap;word-break:break-word}.event-duration[data-v-5a3f5b6a]{margin-top:8px;color:var(--color-text-maxcontrast);font-size:13px}@media(max-width:1000px){.activity-layout[data-v-5a3f5b6a],.filters[data-v-5a3f5b6a]{grid-template-columns:1fr}.activity-title-row[data-v-5a3f5b6a],.detail-header[data-v-5a3f5b6a]{flex-direction:column}}@media(max-width:700px){.run-summary[data-v-5a3f5b6a]{grid-template-columns:1fr 1fr}.trace-row[data-v-5a3f5b6a]{align-items:flex-start;flex-direction:column}}.bot-card[data-v-788d6bff]{background:var(--color-main-background);border:1px solid var(--color-border);border-radius:8px;padding:20px;position:relative;transition:box-shadow .2s}.bot-card[data-v-788d6bff]:hover{box-shadow:0 2px 8px #0000001a}.bot-card.inactive[data-v-788d6bff]{opacity:.6}.bot-header[data-v-788d6bff]{margin-bottom:12px}.bot-header h3[data-v-788d6bff]{margin:0 0 8px;font-size:18px;font-weight:600}.mention-badge[data-v-788d6bff]{display:inline-block;background:var(--color-primary-element);color:#fff;padding:4px 12px;border-radius:12px;font-size:13px;font-weight:600}.bot-prompt[data-v-788d6bff]{margin-bottom:16px;min-height:60px}.bot-visibility[data-v-788d6bff]{margin-bottom:12px}.visibility-badge[data-v-788d6bff]{display:inline-block;padding:3px 10px;border-radius:12px;font-size:12px;font-weight:600}.visibility-badge.global[data-v-788d6bff]{background:var(--color-success);color:#000}.visibility-badge.teams[data-v-788d6bff]{background:var(--color-primary-element);color:#fff}.visibility-badge.groups[data-v-788d6bff]{background:var(--color-warning);color:#000}.visibility-badge.personal[data-v-788d6bff]{background:var(--color-primary-element-light);color:var(--color-primary-element-dark)}.approval-badge[data-v-788d6bff]{position:absolute;top:10px;right:10px;padding:4px 10px;border-radius:12px;font-size:11px;font-weight:600;text-transform:uppercase}.approval-badge.draft[data-v-788d6bff]{background:var(--color-background-dark);color:var(--color-text-lighter);border:1px solid var(--color-border)}.approval-badge.pending[data-v-788d6bff]{background:var(--color-warning);color:#000}.approval-badge.personal[data-v-788d6bff]{background:var(--color-primary-element-light);color:var(--color-primary-element-dark)}.button.primary[data-v-788d6bff]{background-color:var(--color-primary);color:#fff;border-color:var(--color-primary)}.button.primary[data-v-788d6bff]:hover{background-color:var(--color-primary-element-light)}.button.disabled[data-v-788d6bff]{opacity:.6;cursor:not-allowed;background:var(--color-background-dark);color:var(--color-text-lighter)}.bot-prompt p[data-v-788d6bff]{margin:0;color:var(--color-text-lighter);font-size:14px;line-height:1.5}.bot-meta[data-v-788d6bff]{display:flex;align-items:center;gap:6px;color:var(--color-text-lighter);font-size:13px;margin-bottom:16px}.bot-actions[data-v-788d6bff]{display:flex;gap:10px}.button[data-v-788d6bff]{flex:1;padding:8px 12px;border:1px solid var(--color-border);background:var(--color-main-background);border-radius:3px;cursor:pointer;display:flex;align-items:center;justify-content:center;gap:6px;font-size:14px;transition:all .2s}.button[data-v-788d6bff]:hover{background:var(--color-background-hover)}.button.error[data-v-788d6bff]{color:var(--color-error)}.button.error[data-v-788d6bff]:hover{background:var(--color-error);color:#fff;border-color:var(--color-error)}.bot-status[data-v-788d6bff]{position:absolute;top:10px;right:10px;background:var(--color-error);color:#fff;padding:4px 10px;border-radius:12px;font-size:12px;display:flex;align-items:center;gap:4px}.bot-management[data-v-65f5dfaa]{padding:20px;max-width:1200px;margin:0 auto}.header[data-v-65f5dfaa]{display:flex;justify-content:space-between;align-items:center;margin-bottom:30px}.header h2[data-v-65f5dfaa]{margin:0;font-size:24px;font-weight:600}.bot-grid[data-v-65f5dfaa]{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:20px;margin-bottom:40px}.empty-state[data-v-65f5dfaa]{text-align:center;padding:60px 20px}.loading[data-v-65f5dfaa]{text-align:center;padding:40px}.button[data-v-65f5dfaa]{padding:8px 16px;border:1px solid var(--color-border);background:var(--color-main-background);border-radius:3px;cursor:pointer;font-size:14px;display:inline-flex;align-items:center;gap:6px}.button[data-v-65f5dfaa]:hover{background:var(--color-background-hover)}.button.primary[data-v-65f5dfaa]{background-color:var(--color-primary);color:#fff;border:none;padding:10px 20px;border-radius:3px;cursor:pointer;font-size:14px}.button.primary[data-v-65f5dfaa]:hover{background-color:var(--color-primary-element-light)}.button.error[data-v-65f5dfaa]{color:var(--color-error)}.button.error[data-v-65f5dfaa]:hover{background:var(--color-error);color:#fff;border-color:var(--color-error)}.approval-section[data-v-65f5dfaa]{margin-top:40px;padding-top:30px;border-top:2px solid var(--color-border)}.section-header[data-v-65f5dfaa]{display:flex;align-items:center;gap:12px;margin-bottom:20px}.section-header h3[data-v-65f5dfaa]{margin:0;font-size:20px;font-weight:600}.section-header .badge[data-v-65f5dfaa]{background:var(--color-warning);color:#000;padding:2px 10px;border-radius:12px;font-size:13px;font-weight:600}.loading-small[data-v-65f5dfaa]{display:flex;align-items:center;gap:8px;color:var(--color-text-lighter);padding:20px 0}.empty-approvals[data-v-65f5dfaa]{color:var(--color-text-lighter);padding:20px 0}.approval-grid[data-v-65f5dfaa]{display:flex;flex-direction:column;gap:16px}.approval-card[data-v-65f5dfaa]{background:var(--color-main-background);border:1px solid var(--color-border);border-radius:8px;padding:16px 20px;display:flex;justify-content:space-between;align-items:center;gap:20px}.approval-info h4[data-v-65f5dfaa]{margin:0 0 6px;font-size:16px;font-weight:600}.approval-info .mention-badge[data-v-65f5dfaa]{display:inline-block;background:var(--color-primary-element);color:#fff;padding:2px 10px;border-radius:10px;font-size:12px;font-weight:600}.approval-info .owner[data-v-65f5dfaa]{margin:8px 0 4px;font-size:13px;color:var(--color-text-lighter)}.approval-info .visibility[data-v-65f5dfaa]{margin:4px 0}.visibility-badge[data-v-65f5dfaa]{display:inline-block;padding:2px 8px;border-radius:10px;font-size:11px;font-weight:600}.visibility-badge.global[data-v-65f5dfaa]{background:var(--color-success);color:#000}.visibility-badge.teams[data-v-65f5dfaa]{background:var(--color-primary-element);color:#fff}.visibility-badge.groups[data-v-65f5dfaa]{background:var(--color-warning);color:#000}.visibility-badge.personal[data-v-65f5dfaa]{background:var(--color-primary-element-light);color:var(--color-primary-element-dark)}.update-badge[data-v-65f5dfaa]{display:inline-block;padding:2px 8px;border-radius:10px;font-size:11px;font-weight:600;background:var(--color-primary-element);color:#fff;margin-left:6px}.new-badge[data-v-65f5dfaa]{display:inline-block;padding:2px 8px;border-radius:10px;font-size:11px;font-weight:600;background:var(--color-success);color:#000;margin-left:6px}.approval-info .submitted-time[data-v-65f5dfaa]{margin:4px 0 0;font-size:12px;color:var(--color-text-lighter)}.review-note[data-v-65f5dfaa]{margin:8px 0;font-size:13px;color:var(--color-text-lighter)}.approval-actions[data-v-65f5dfaa]{display:flex;gap:8px;flex-shrink:0}.modal-mask[data-v-65f5dfaa]{position:fixed;z-index:9998;top:0;left:0;width:100%;height:100%;background-color:#00000080;display:flex;align-items:center;justify-content:center}.modal-container[data-v-65f5dfaa]{background:var(--color-main-background);border-radius:8px;box-shadow:0 2px 8px #00000054;max-width:640px;width:90%;max-height:90vh;overflow-y:auto}.modal-header[data-v-65f5dfaa],.modal-footer[data-v-65f5dfaa]{padding:16px 20px;border-bottom:1px solid var(--color-border);display:flex;justify-content:space-between;align-items:center}.modal-footer[data-v-65f5dfaa]{border-top:1px solid var(--color-border);border-bottom:none;justify-content:flex-end;gap:10px}.modal-body[data-v-65f5dfaa]{padding:20px;display:flex;flex-direction:column;gap:16px}.modal-header h2[data-v-65f5dfaa]{margin:0;font-size:18px}.close-button[data-v-65f5dfaa]{background:none;border:none;cursor:pointer;padding:8px;font-size:20px;opacity:.7}.close-button[data-v-65f5dfaa]:hover{opacity:1}.modal-body .form-group label[data-v-65f5dfaa]{font-weight:600}.modal-body textarea[data-v-65f5dfaa]{width:100%;border:1px solid var(--color-border);border-radius:4px;padding:8px;font-family:inherit}.questionnaire p[data-v-65f5dfaa]{margin:4px 0;font-size:13px;color:var(--color-text-lighter)}.review-preview-modal[data-v-65f5dfaa]{max-width:760px}.preview-block[data-v-65f5dfaa]{margin:0;padding:10px 12px;background:var(--color-background-dark);border-radius:6px;white-space:pre-wrap}.preview-code[data-v-65f5dfaa]{margin:0;padding:12px;background:var(--color-background-dark);border-radius:6px;white-space:pre-wrap;font-family:var(--font-face-monospace);font-size:13px}.preview-tool-list[data-v-65f5dfaa]{margin:0;padding-left:18px}.preview-tool-list li[data-v-65f5dfaa]{margin:6px 0}.preview-source-list[data-v-65f5dfaa]{margin:0;padding:0;list-style:none;display:flex;flex-direction:column;gap:8px}.preview-source-list li[data-v-65f5dfaa]{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:10px 12px;background:var(--color-background-dark);border-radius:6px}.source-open-link[data-v-65f5dfaa]{flex-shrink:0}.error-text[data-v-65f5dfaa]{color:var(--color-error)}.educai-personal-settings[data-v-43fef29c]{max-width:1280px;margin:0 auto;padding:24px}.personal-header[data-v-43fef29c]{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;margin-bottom:20px}.personal-header h2[data-v-43fef29c]{margin:0 0 4px;font-size:24px}.personal-header p[data-v-43fef29c]{margin:0;color:var(--color-text-maxcontrast)}.personal-tabs[data-v-43fef29c]{display:inline-flex;gap:4px;padding:4px;border:1px solid var(--color-border);border-radius:var(--border-radius);background:var(--color-main-background)}.tab-button[data-v-43fef29c]{display:inline-flex;align-items:center;gap:8px;min-height:36px;padding:0 12px;border:0;border-radius:var(--border-radius);background:transparent;color:var(--color-main-text);font-weight:600;cursor:pointer}.tab-button.active[data-v-43fef29c]{background:var(--color-primary-element);color:var(--color-primary-element-text)}.tab-button span[data-v-43fef29c]{filter:var(--background-invert-if-dark)}.tab-button.active span[data-v-43fef29c]{filter:none}@media(max-width:700px){.educai-personal-settings[data-v-43fef29c]{padding:16px}.personal-header[data-v-43fef29c]{flex-direction:column}.personal-tabs[data-v-43fef29c]{width:100%}.tab-button[data-v-43fef29c]{flex:1;justify-content:center}}")),document.head.appendChild(a)}}catch(r){console.error("vite-plugin-css-injected-by-js",r)}})(); import{s as g}from"./appIconRuntime-ltIyK5iP.chunk.mjs";import{B as h}from"./BotForm-S-ACeDfi.chunk.mjs";import{n as _,A as m,c as r,a as o,s as l,b as c,V as b}from"./branding-cqWE0Otc.chunk.mjs";const y={name:"PersonalActivity",data(){return{APP_DISPLAY_NAME:m,traces:[],total:0,limit:25,offset:0,loading:!1,clearing:!1,error:"",selectedTraceId:null,selectedTrace:null,events:[],detailLoading:!1,detailError:"",filters:{q:"",status:"",botMentionName:"",fromDate:"",toDate:"",onlyErrors:!1,onlyWithTools:!1}}},mounted(){this.loadTraces()},methods:{async loadTraces(){this.loading=!0,this.error="";try{const e={limit:this.limit,offset:this.offset};this.filters.q&&(e.q=this.filters.q),this.filters.status&&(e.status=this.filters.status),this.filters.botMentionName&&(e.botMentionName=this.filters.botMentionName),this.filters.fromDate&&(e.from=this.startOfDay(this.filters.fromDate)),this.filters.toDate&&(e.to=this.endOfDay(this.filters.toDate)),this.filters.onlyErrors&&(e.onlyErrors="1"),this.filters.onlyWithTools&&(e.onlyWithTools="1");const s=await r.get(o.generateUrl("/apps/educai/api/v1/traces"),{params:e});this.traces=s.data.traces||[],this.total=s.data.total||0,this.limit=s.data.limit||this.limit,this.offset=s.data.offset||this.offset,this.traces.length>0&&!this.selectedTraceId?await this.selectTrace(this.traces[0].id):this.selectedTraceId&&!this.traces.some(a=>a.id===this.selectedTraceId)&&this.clearSelection()}catch(e){this.error=e.response?.data?.error||"Failed to load traces",c(this.error)}finally{this.loading=!1}},applyFilters(){this.offset=0,this.clearSelection(),this.loadTraces()},async selectTrace(e){this.selectedTraceId=e,this.detailLoading=!0,this.detailError="";try{const s=await r.get(o.generateUrl(`/apps/educai/api/v1/traces/${e}`));this.selectedTrace=s.data.trace,this.events=s.data.events||[]}catch(s){this.detailError=s.response?.data?.error||"Trace details unavailable",c(this.detailError)}finally{this.detailLoading=!1}},async deleteSelectedTrace(){if(!(!this.selectedTrace||!confirm("Delete this activity trace?")))try{await r.delete(o.generateUrl(`/apps/educai/api/v1/traces/${this.selectedTrace.id}`)),l("Trace deleted"),this.clearSelection(),await this.loadTraces()}catch(e){c(e.response?.data?.error||"Deletion failed")}},async clearActivity(){if(confirm(`Clear all of your ${m} activity traces?`)){this.clearing=!0;try{await r.delete(o.generateUrl("/apps/educai/api/v1/traces")),l("Activity cleared"),this.clearSelection(),await this.loadTraces()}catch(e){c(e.response?.data?.error||"Deletion failed")}finally{this.clearing=!1}}},exportSelectedTrace(){if(!this.selectedTrace)return;const e={trace:this.selectedTrace,events:this.events},s=new Blob([JSON.stringify(e,null,2)],{type:"application/json"}),a=URL.createObjectURL(s),i=document.createElement("a");i.href=a,i.download=`educai-trace-${this.selectedTrace.id}.json`,document.body.appendChild(i),i.click(),document.body.removeChild(i),URL.revokeObjectURL(a)},nextPage(){this.offset+=this.limit,this.loadTraces()},previousPage(){this.offset=Math.max(0,this.offset-this.limit),this.loadTraces()},clearSelection(){this.selectedTraceId=null,this.selectedTrace=null,this.events=[],this.detailError=""},formatDate(e){return e?new Date(e*1e3).toLocaleString():"-"},formatDuration(e){return e==null?"-":e<1e3?`${e} ms`:`${(e/1e3).toFixed(1)} s`},formatTokens(e){if(e==null||e==="")return"-";const s=Number(e);return Number.isFinite(s)?`${s.toLocaleString()} ${s===1?"token":"tokens"}`:"-"},formatStatus(e){return e?e.charAt(0).toUpperCase()+e.slice(1):"Unknown"},formatEventType(e){return(e||"").replaceAll("_"," ")},getRawLlmPayload(e){return!e||e.event_type!=="llm_request"||!e.payload_json?null:e.payload_json.request_payload||null},formatJson(e){return JSON.stringify(e,null,2)},startOfDay(e){const s=new Date(`${e}T00:00:00`);return Math.floor(s.getTime()/1e3)},endOfDay(e){const s=new Date(`${e}T23:59:59`);return Math.floor(s.getTime()/1e3)}}};var w=function(){var e=this,s=e._self._c;return s("section",{staticClass:"activity-view"},[s("div",{staticClass:"activity-title-row"},[s("div",[s("h3",[e._v("Activity")]),s("p",[e._v("This page shows "+e._s(e.APP_DISPLAY_NAME)+" interactions you started. Detailed tool inputs and results are visible only to you.")])]),s("div",{staticClass:"activity-actions"},[s("button",{staticClass:"button",attrs:{type:"button",disabled:e.loading},on:{click:e.loadTraces}},[s("span",{staticClass:"icon-history"}),e._v(" Refresh ")]),s("button",{staticClass:"button error",attrs:{type:"button",disabled:e.traces.length===0||e.clearing},on:{click:e.clearActivity}},[s("span",{staticClass:"icon-delete"}),e._v(" Clear my activity ")])])]),s("p",{staticClass:"privacy-note"},[e._v(" Only interactions started by your account are shown here. We take privacy seriously: your trace history is private to your account and cannot be viewed by anyone else. ")]),s("div",{staticClass:"filters"},[s("label",[s("span",[e._v("Search")]),s("input",{directives:[{name:"model",rawName:"v-model.trim",value:e.filters.q,expression:"filters.q",modifiers:{trim:!0}}],attrs:{type:"search",placeholder:"Message, bot, or error"},domProps:{value:e.filters.q},on:{keyup:function(a){return!a.type.indexOf("key")&&e._k(a.keyCode,"enter",13,a.key,"Enter")?null:e.applyFilters.apply(null,arguments)},input:function(a){a.target.composing||e.$set(e.filters,"q",a.target.value.trim())},blur:function(a){return e.$forceUpdate()}}})]),s("label",[s("span",[e._v("Status")]),s("select",{directives:[{name:"model",rawName:"v-model",value:e.filters.status,expression:"filters.status"}],on:{change:[function(a){var i=Array.prototype.filter.call(a.target.options,function(d){return d.selected}).map(function(d){var v="_value"in d?d._value:d.value;return v});e.$set(e.filters,"status",a.target.multiple?i:i[0])},e.applyFilters]}},[s("option",{attrs:{value:""}},[e._v("Any status")]),s("option",{attrs:{value:"running"}},[e._v("Running")]),s("option",{attrs:{value:"success"}},[e._v("Success")]),s("option",{attrs:{value:"error"}},[e._v("Error")]),s("option",{attrs:{value:"partial"}},[e._v("Partial")])])]),s("label",[s("span",[e._v("Bot mention name")]),s("input",{directives:[{name:"model",rawName:"v-model.trim",value:e.filters.botMentionName,expression:"filters.botMentionName",modifiers:{trim:!0}}],attrs:{type:"search"},domProps:{value:e.filters.botMentionName},on:{keyup:function(a){return!a.type.indexOf("key")&&e._k(a.keyCode,"enter",13,a.key,"Enter")?null:e.applyFilters.apply(null,arguments)},input:function(a){a.target.composing||e.$set(e.filters,"botMentionName",a.target.value.trim())},blur:function(a){return e.$forceUpdate()}}})]),s("label",[s("span",[e._v("From")]),s("input",{directives:[{name:"model",rawName:"v-model",value:e.filters.fromDate,expression:"filters.fromDate"}],attrs:{type:"date"},domProps:{value:e.filters.fromDate},on:{change:e.applyFilters,input:function(a){a.target.composing||e.$set(e.filters,"fromDate",a.target.value)}}})]),s("label",[s("span",[e._v("To")]),s("input",{directives:[{name:"model",rawName:"v-model",value:e.filters.toDate,expression:"filters.toDate"}],attrs:{type:"date"},domProps:{value:e.filters.toDate},on:{change:e.applyFilters,input:function(a){a.target.composing||e.$set(e.filters,"toDate",a.target.value)}}})]),s("label",{staticClass:"checkbox-label"},[s("input",{directives:[{name:"model",rawName:"v-model",value:e.filters.onlyErrors,expression:"filters.onlyErrors"}],attrs:{type:"checkbox"},domProps:{checked:Array.isArray(e.filters.onlyErrors)?e._i(e.filters.onlyErrors,null)>-1:e.filters.onlyErrors},on:{change:[function(a){var i=e.filters.onlyErrors,d=a.target,v=!!d.checked;if(Array.isArray(i)){var u=null,p=e._i(i,u);d.checked?p<0&&e.$set(e.filters,"onlyErrors",i.concat([u])):p>-1&&e.$set(e.filters,"onlyErrors",i.slice(0,p).concat(i.slice(p+1)))}else e.$set(e.filters,"onlyErrors",v)},e.applyFilters]}}),s("span",[e._v("Only errors")])]),s("label",{staticClass:"checkbox-label"},[s("input",{directives:[{name:"model",rawName:"v-model",value:e.filters.onlyWithTools,expression:"filters.onlyWithTools"}],attrs:{type:"checkbox"},domProps:{checked:Array.isArray(e.filters.onlyWithTools)?e._i(e.filters.onlyWithTools,null)>-1:e.filters.onlyWithTools},on:{change:[function(a){var i=e.filters.onlyWithTools,d=a.target,v=!!d.checked;if(Array.isArray(i)){var u=null,p=e._i(i,u);d.checked?p<0&&e.$set(e.filters,"onlyWithTools",i.concat([u])):p>-1&&e.$set(e.filters,"onlyWithTools",i.slice(0,p).concat(i.slice(p+1)))}else e.$set(e.filters,"onlyWithTools",v)},e.applyFilters]}}),s("span",[e._v("Only with tools")])]),s("button",{staticClass:"button primary",attrs:{type:"button"},on:{click:e.applyFilters}},[s("span",{staticClass:"icon-search"}),e._v(" Apply ")])]),e.error?s("div",{staticClass:"error-banner"},[e._v(" "+e._s(e.error)+" ")]):e._e(),e.loading?s("div",{staticClass:"loading"},[s("span",{staticClass:"icon-loading"}),s("p",[e._v("Loading activity...")])]):e.traces.length===0?s("div",{staticClass:"empty-state"},[s("span",{staticClass:"icon-comment"}),s("h3",[e._v("No activity yet")]),s("p",[e._v("Use a bot in Nextcloud Talk and your own trace history will appear here.")])]):s("div",{staticClass:"activity-layout"},[s("div",{staticClass:"trace-list",attrs:{role:"list"}},[e._l(e.traces,function(a){return s("button",{key:a.id,staticClass:"trace-row",class:{selected:e.selectedTraceId===a.id},attrs:{type:"button"},on:{click:function(i){return e.selectTrace(a.id)}}},[s("span",{staticClass:"trace-main"},[s("span",{staticClass:"trace-meta"},[s("span",[e._v(e._s(e.formatDate(a.started_at)))]),s("span",[e._v(e._s(a.bot_mention_name||e.APP_DISPLAY_NAME))]),s("span",{staticClass:"status-badge",class:a.status},[e._v(e._s(e.formatStatus(a.status)))])]),s("span",{staticClass:"trace-preview"},[e._v(e._s(a.user_message_preview||"No message preview"))])]),s("span",{staticClass:"trace-counts"},[s("span",[e._v(e._s(a.tool_call_count)+" tools")]),s("span",[e._v(e._s(e.formatDuration(a.duration_ms)))])])])}),s("div",{staticClass:"pagination"},[s("button",{staticClass:"button",attrs:{type:"button",disabled:e.offset===0},on:{click:e.previousPage}},[e._v(" Previous ")]),s("span",[e._v(e._s(e.offset+1)+"-"+e._s(Math.min(e.offset+e.limit,e.total))+" of "+e._s(e.total))]),s("button",{staticClass:"button",attrs:{type:"button",disabled:e.offset+e.limit>=e.total},on:{click:e.nextPage}},[e._v(" Next ")])])],2),s("aside",{staticClass:"trace-detail"},[e.detailLoading?s("div",{staticClass:"loading-small"},[s("span",{staticClass:"icon-loading"}),s("span",[e._v("Loading trace details...")])]):e.detailError?s("div",{staticClass:"error-banner"},[e._v(" "+e._s(e.detailError)+" ")]):e.selectedTrace?s("div",[s("div",{staticClass:"detail-header"},[s("div",[s("h4",[e._v(e._s(e.selectedTrace.bot_mention_name||e.APP_DISPLAY_NAME+" run"))]),s("p",[e._v(" "+e._s(e.formatDate(e.selectedTrace.started_at))+" - "+e._s(e.formatStatus(e.selectedTrace.status))+" - "+e._s(e.selectedTrace.event_count)+" events ")])]),s("div",{staticClass:"detail-actions"},[s("button",{staticClass:"button",attrs:{type:"button"},on:{click:e.exportSelectedTrace}},[s("span",{staticClass:"icon-download"}),e._v(" Export JSON ")]),s("button",{staticClass:"button error",attrs:{type:"button"},on:{click:e.deleteSelectedTrace}},[s("span",{staticClass:"icon-delete"}),e._v(" Delete ")])])]),s("div",{staticClass:"run-summary"},[s("div",[s("strong",[e._v("Status")]),s("span",[e._v(e._s(e.formatStatus(e.selectedTrace.status)))])]),s("div",[s("strong",[e._v("Duration")]),s("span",[e._v(e._s(e.formatDuration(e.selectedTrace.duration_ms)))])]),s("div",[s("strong",[e._v("Tools")]),s("span",[e._v(e._s(e.selectedTrace.tool_call_count))])]),s("div",[s("strong",[e._v("Tokens")]),s("span",[e._v(e._s(e.formatTokens(e.selectedTrace.total_token_count)))])])]),s("ol",{staticClass:"event-list"},e._l(e.events,function(a){return s("li",{key:a.id,staticClass:"event-item"},[s("div",{staticClass:"event-header"},[s("span",{staticClass:"event-type"},[e._v(e._s(e.formatEventType(a.event_type)))]),a.tool_name?s("span",{staticClass:"event-tool"},[e._v(e._s(a.tool_name))]):e._e(),a.status?s("span",{staticClass:"status-badge",class:a.status},[e._v(e._s(e.formatStatus(a.status)))]):e._e(),s("span",{staticClass:"event-time"},[e._v(e._s(e.formatDate(a.created_at)))])]),a.error_message?s("p",{staticClass:"event-error"},[e._v(" "+e._s(a.error_message)+" ")]):e._e(),e.getRawLlmPayload(a)?s("details",{staticClass:"raw-llm-payload"},[s("summary",[e._v("Raw LLM payload")]),s("pre",[e._v(e._s(e.formatJson(e.getRawLlmPayload(a))))])]):e._e(),a.payload_preview?s("div",{staticClass:"event-block"},[s("strong",[e._v("Payload")]),s("pre",[e._v(e._s(a.payload_preview))]),a.payload_json?s("details",[s("summary",[e._v("Show JSON")]),s("pre",[e._v(e._s(e.formatJson(a.payload_json)))])]):e._e()]):e._e(),a.result_preview?s("div",{staticClass:"event-block"},[s("strong",[e._v("Result")]),s("pre",[e._v(e._s(a.result_preview))]),a.result_json?s("details",[s("summary",[e._v("Show JSON")]),s("pre",[e._v(e._s(e.formatJson(a.result_json)))])]):e._e()]):e._e(),a.duration_ms!==null&&a.duration_ms!==void 0?s("div",{staticClass:"event-duration"},[e._v(" "+e._s(e.formatDuration(a.duration_ms))+" ")]):e._e()])}),0)]):s("div",{staticClass:"empty-detail"},[e._v(" Select an activity run to inspect its timeline. ")])])])])},f=[],C=_(y,w,f,!1,null,"5a3f5b6a");const P=C.exports,T={name:"BotCard",props:{bot:{type:Object,required:!0},readonly:{type:Boolean,default:!1},userPermissions:{type:Object,default:()=>({hasApprovalRights:!1})}},computed:{truncatedPrompt(){const e=this.bot.system_prompt||"";return e.length>150?e.substring(0,150)+"...":e},approvalStatus(){return this.bot.approval_status||"approved"},approvalStatusLabel(){const e=this.approvalStatus;return e==="draft"?"Draft":e==="pending"?"Pending Approval":e==="personal"?"Personal":""},visibilityLabel(){const e=this.bot.visibility?this.bot.visibility:this.bot.is_public?"global":"groups";return e==="global"?"Global":e==="personal"?"Personal":e==="teams"?"Team access":"Group access"},visibilityClass(){const e=this.bot.visibility?this.bot.visibility:this.bot.is_public?"global":"groups";return e==="global"?"global":e==="personal"?"personal":e==="teams"?"teams":"groups"},canEdit(){if(this.readonly)return!1;const e=this.approvalStatus;return!0},editBlockedReason(){return null}},methods:{formatDate(e){return`on ${new Date(e*1e3).toLocaleDateString(void 0,{day:"numeric",month:"long",year:"numeric"})}`}}};var S=function(){var e=this,s=e._self._c;return s("div",{staticClass:"bot-card",class:{inactive:!e.bot.is_active}},[e.approvalStatus!=="approved"?s("div",{staticClass:"approval-badge",class:e.approvalStatus},[e._v(" "+e._s(e.approvalStatusLabel)+" ")]):e._e(),s("div",{staticClass:"bot-header"},[s("h3",[e._v(e._s(e.bot.bot_name))]),s("span",{staticClass:"mention-badge"},[e._v(e._s(e.bot.mention_name))])]),s("div",{staticClass:"bot-prompt"},[s("p",[e._v(e._s(e.truncatedPrompt))])]),s("div",{staticClass:"bot-visibility"},[s("span",{staticClass:"visibility-badge",class:e.visibilityClass},[e._v(e._s(e.visibilityLabel))])]),s("div",{staticClass:"bot-meta"},[s("span",{staticClass:"icon-calendar"}),s("span",[e._v("Created "+e._s(e.formatDate(e.bot.created_at)))])]),e.readonly?e._e():s("div",{staticClass:"bot-actions"},[e.canEdit?s("button",{staticClass:"button",on:{click:function(a){return e.$emit("edit",e.bot)}}},[s("span",{staticClass:"icon-rename"}),e._v(" Edit ")]):e.editBlockedReason?s("button",{staticClass:"button disabled",attrs:{title:e.editBlockedReason,disabled:""}},[s("span",{staticClass:"icon-lock"}),e._v(" View Only ")]):e._e(),e.approvalStatus==="draft"?s("button",{staticClass:"button primary",on:{click:function(a){return e.$emit("submit",e.bot.id)}}},[s("span",{staticClass:"icon-checkmark"}),e._v(" Submit for Approval ")]):e._e(),s("button",{staticClass:"button error",on:{click:function(a){return e.$emit("delete",e.bot.id)}}},[s("span",{staticClass:"icon-delete"}),e._v(" Delete ")])]),!e.bot.is_active&&e.approvalStatus==="approved"?s("div",{staticClass:"bot-status"},[s("span",{staticClass:"icon-close"}),e._v(" Inactive ")]):e._e()])},A=[],k=_(T,S,A,!1,null,"788d6bff");const F=k.exports,B={name:"PersonalBots",components:{BotCard:F,BotForm:h},data(){return{APP_DISPLAY_NAME:m,bots:[],showCreateForm:!1,editingBot:null,loading:!1,userPermissions:{isAdmin:!1,isGroupAdmin:!1,isTeamAdmin:!1,hasApprovalRights:!1,adminGroups:[],adminTeams:[]},pendingApprovals:[],loadingApprovals:!1,showSubmitModal:!1,showReviewPreview:!1,reviewPreviewBot:null,reviewSources:[],reviewSourcesLoading:!1,reviewSourcesError:"",submitForm:{botId:null,mentionName:"",approvalReason:"",botCapabilities:"",ragSourceDescription:"",testingDescription:""}}},mounted(){this.loadPermissions(),this.loadBots()},methods:{async loadPermissions(){try{const e=await r.get(o.generateUrl("/apps/educai/api/v1/permissions"));console.log("[TalkAI] Permissions response:",e.data),this.userPermissions=e.data.permissions||this.userPermissions,console.log("[TalkAI] userPermissions set to:",this.userPermissions),this.userPermissions.hasApprovalRights&&this.loadPendingApprovals()}catch(e){console.error("Failed to load permissions:",e)}},async loadPendingApprovals(){if(this.userPermissions.hasApprovalRights){this.loadingApprovals=!0;try{const e=await r.get(o.generateUrl("/apps/educai/api/v1/approvals"));this.pendingApprovals=e.data.bots||[]}catch(e){console.error("Failed to load pending approvals:",e)}finally{this.loadingApprovals=!1}}},async loadBots(){this.loading=!0;try{const e=await r.get(o.generateUrl("/apps/educai/api/v1/bots"));this.bots=e.data}catch(e){console.error("Failed to load bots:",e),c("Failed to load bots")}finally{this.loading=!1}},async saveBot(e){try{if(e.id){const s=(await r.put(o.generateUrl(`/apps/educai/api/v1/bots/${e.id}`),e)).data.approval_status||"approved";s==="draft"?l("Bot updated and saved as draft. Submit for approval when ready."):s==="pending"?l("Bot updated. Approval is required before the new shared version goes live."):s==="personal"?l("Personal bot updated successfully"):l("Bot updated successfully")}else{const s=(await r.post(o.generateUrl("/apps/educai/api/v1/bots"),e)).data.approval_status||"approved";s==="draft"?l("Bot saved as draft. Submit for approval when ready."):s==="personal"?l("Personal bot created successfully"):l("Bot created successfully")}await this.loadBots(),this.closeForm()}catch(s){console.error("Failed to save bot:",s),c(s.response?.data?.error||"Failed to save bot")}},submitForApproval(e){const s=this.bots.find(a=>a.id===e);if(!s){c("Bot not found");return}this.submitForm.botId=e,this.submitForm.mentionName=s.mention_name,this.submitForm.approvalReason="",this.submitForm.botCapabilities="",this.submitForm.ragSourceDescription="",this.submitForm.testingDescription="",this.showSubmitModal=!0},async confirmSubmitForApproval(){if(this.submitForm.botId)try{await r.post(o.generateUrl(`/apps/educai/api/v1/bots/${this.submitForm.botId}/submit`),{approval_reason:this.submitForm.approvalReason,bot_capabilities:this.submitForm.botCapabilities,rag_source_description:this.submitForm.ragSourceDescription,testing_description:this.submitForm.testingDescription}),l("Bot submitted for approval"),await this.loadBots(),this.closeSubmitModal()}catch(e){console.error("Failed to submit bot for approval:",e),c(e.response?.data?.error||"Failed to submit for approval")}},closeSubmitModal(){this.showSubmitModal=!1,this.submitForm.botId=null},async approveBot(e){try{await r.post(o.generateUrl(`/apps/educai/api/v1/bots/${e}/approve`)),l("Bot approved successfully"),await this.loadPendingApprovals()}catch(s){console.error("Failed to approve bot:",s),c(s.response?.data?.error||"Failed to approve bot")}},async rejectBot(e){const s=prompt("Optional: Enter a reason for rejection");try{await r.post(o.generateUrl(`/apps/educai/api/v1/bots/${e}/reject`),{reason:s}),l("Bot rejected and returned to draft"),await this.loadPendingApprovals()}catch(a){console.error("Failed to reject bot:",a),c(a.response?.data?.error||"Failed to reject bot")}},getReviewTarget(e){return e.review_target||{bot_name:e.bot_name,description:e.description,system_prompt:e.system_prompt,temperature:e.temperature,visibility:e.visibility||(e.is_public?"global":"groups"),allowed_groups:e.allowed_groups||[],allowed_teams:e.allowed_teams||[],allowed_team_names:e.allowed_team_names||[],tools:[],is_update:!!e.has_pending_changes}},previewBot(e){this.reviewPreviewBot=e,this.showReviewPreview=!0,this.reviewSources=[],this.reviewSourcesError="",this.getReviewTarget(e).rag_enabled&&this.loadReviewSources(e)},closeReviewPreview(){this.showReviewPreview=!1,this.reviewPreviewBot=null,this.reviewSources=[],this.reviewSourcesError="",this.reviewSourcesLoading=!1},async loadReviewSources(e){this.reviewSourcesLoading=!0,this.reviewSourcesError="";try{const s=(await r.get(o.generateUrl(`/apps/educai/api/v1/bots/${e.id}/sources`))).data?.sources;this.reviewSources=Array.isArray(s)?s:[]}catch(s){console.error("Failed to load RAG sources for review:",s),this.reviewSourcesError=s.response?.data?.error||"Failed to load RAG sources"}finally{this.reviewSourcesLoading=!1}},reviewTeamNames(e){return Array.isArray(e.allowed_team_names)&&e.allowed_team_names.length>0?e.allowed_team_names:Array.isArray(e.allowed_teams)?e.allowed_teams:[]},describeReviewSource(e){return e.display_name?e.display_name:e.path?e.path:e.source_url?e.source_url:`Source #${e.id}`},sourceOpenUrl(e){return e?e.node_type==="url"&&e.source_url?e.source_url:e.node_id&&Number(e.node_id)>0?o.generateUrl(`/f/${e.node_id}`):null:null},formatSourceStatus(e){return e==="ready"?"Ready":e==="error"?"Error":e==="pending"?"Pending":e||"Unknown"},async enableTest(e){try{await r.post(o.generateUrl(`/apps/educai/api/v1/bots/${e.id}/enable-test`)),l(`Testing enabled. Mention ${e.mention_name} in Nextcloud Talk to try the pending version.`)}catch(s){console.error("Failed to enable testing:",s),c(s.response?.data?.error||"Failed to enable testing")}},async deleteBot(e){if(confirm("Delete this bot? All conversation history will be lost."))try{await r.delete(o.generateUrl(`/apps/educai/api/v1/bots/${e}`)),l("Bot deleted successfully"),await this.loadBots()}catch(s){console.error("Failed to delete bot:",s),c(s.response?.data?.error||"Failed to delete bot")}},editBot(e){this.editingBot=e},closeForm(){this.showCreateForm=!1,this.editingBot=null},formatVisibility(e){return e==="global"?"Global":e==="personal"?"Personal":e==="teams"?"Team access":"Group access"},formatDate(e){return e?new Date(e*1e3).toLocaleDateString(void 0,{day:"numeric",month:"short",year:"numeric",hour:"2-digit",minute:"2-digit"}):""},formatTemperature(e){const s=Number(e);return Number.isFinite(s)?s.toFixed(2):"Uses global default"}}};var R=function(){var e=this,s=e._self._c;return s("div",{staticClass:"bot-management"},[s("div",{staticClass:"header"},[s("h2",[e._v(e._s(e.APP_DISPLAY_NAME)+" - Multi-Bot Manager")]),s("button",{staticClass:"button primary",on:{click:function(a){e.showCreateForm=!0}}},[s("span",{staticClass:"icon-add"}),e._v(" Create New Bot ")])]),e.bots.length>0?s("div",{staticClass:"bot-grid"},e._l(e.bots,function(a){return s("BotCard",{key:a.id,attrs:{bot:a,"user-permissions":e.userPermissions},on:{edit:e.editBot,delete:e.deleteBot,submit:e.submitForApproval}})}),1):e._e(),e.bots.length===0&&!e.loading?s("div",{staticClass:"empty-state"},[s("span",{staticClass:"icon-comment"}),s("h3",[e._v("No bots created yet")]),s("p",[e._v("Create your first AI bot to get started with Nextcloud Talk integration")]),s("button",{staticClass:"button primary",on:{click:function(a){e.showCreateForm=!0}}},[e._v(" Create Your First Bot ")])]):e._e(),e.loading?s("div",{staticClass:"loading"},[s("span",{staticClass:"icon-loading"}),s("p",[e._v("Loading bots...")])]):e._e(),e.userPermissions.hasApprovalRights?s("div",{staticClass:"approval-section"},[s("div",{staticClass:"section-header"},[s("h3",[e._v("Pending Approvals")]),e.pendingApprovals.length>0?s("span",{staticClass:"badge"},[e._v(e._s(e.pendingApprovals.length))]):e._e()]),e.loadingApprovals?s("div",{staticClass:"loading-small"},[s("span",{staticClass:"icon-loading"}),s("span",[e._v("Loading pending approvals...")])]):e.pendingApprovals.length===0?s("div",{staticClass:"empty-approvals"},[s("p",[e._v("No bots are pending approval.")])]):s("div",{staticClass:"approval-grid"},e._l(e.pendingApprovals,function(a){return s("div",{key:"pending-"+a.id,staticClass:"approval-card"},[s("div",{staticClass:"approval-info"},[s("h4",[e._v(e._s(e.getReviewTarget(a).bot_name))]),s("span",{staticClass:"mention-badge"},[e._v(e._s(a.mention_name))]),s("p",{staticClass:"owner"},[e._v(" Submitted by "+e._s(a.owner_name)+" ")]),s("p",{staticClass:"visibility"},[s("span",{staticClass:"visibility-badge",class:e.getReviewTarget(a).visibility||"groups"},[e._v(" "+e._s(e.formatVisibility(e.getReviewTarget(a).visibility))+" ")]),e.getReviewTarget(a).is_update?s("span",{staticClass:"update-badge"},[e._v(" Update to existing bot ")]):s("span",{staticClass:"new-badge"},[e._v(" New bot ")])]),e.getReviewTarget(a).is_update?s("p",{staticClass:"review-note"},[e._v(" Reviewing the submitted pending version. The currently approved version stays live until approval. ")]):e._e(),s("div",{staticClass:"questionnaire"},[a.approval_reason?s("p",[s("strong",[e._v("Why share:")]),e._v(" "+e._s(a.approval_reason)+" ")]):e._e(),a.bot_capabilities?s("p",[s("strong",[e._v("What it does well:")]),e._v(" "+e._s(a.bot_capabilities)+" ")]):e._e(),a.rag_source_description?s("p",[s("strong",[e._v("RAG sources:")]),e._v(" "+e._s(a.rag_source_description)+" ")]):e._e(),a.testing_description?s("p",[s("strong",[e._v("Testing done:")]),e._v(" "+e._s(a.testing_description)+" ")]):e._e()]),a.submitted_at?s("p",{staticClass:"submitted-time"},[e._v(" Submitted "+e._s(e.formatDate(a.submitted_at))+" ")]):e._e()]),s("div",{staticClass:"approval-actions"},[s("button",{staticClass:"button",on:{click:function(i){return e.enableTest(a)}}},[s("span",{staticClass:"icon-play"}),e._v(" Test Bot ")]),s("button",{staticClass:"button",on:{click:function(i){return e.previewBot(a)}}},[s("span",{staticClass:"icon-details"}),e._v(" Preview ")]),s("button",{staticClass:"button primary",on:{click:function(i){return e.approveBot(a.id)}}},[s("span",{staticClass:"icon-checkmark"}),e._v(" Approve ")]),s("button",{staticClass:"button error",on:{click:function(i){return e.rejectBot(a.id)}}},[s("span",{staticClass:"icon-close"}),e._v(" Reject ")])])])}),0)]):e._e(),e.showCreateForm||e.editingBot?s("BotForm",{attrs:{bot:e.editingBot,"user-permissions":e.userPermissions},on:{save:e.saveBot,cancel:e.closeForm}}):e._e(),e.showSubmitModal?s("div",{staticClass:"modal-mask",on:{click:function(a){return a.target!==a.currentTarget?null:e.closeSubmitModal.apply(null,arguments)}}},[s("div",{staticClass:"modal-container"},[s("div",{staticClass:"modal-header"},[s("h2",[e._v("Submit for Approval")]),s("button",{staticClass:"close-button",on:{click:e.closeSubmitModal}},[s("span",{staticClass:"icon-close"})])]),s("div",{staticClass:"modal-body"},[s("p",{staticClass:"hint"},[e._v(" You can test the bot yourself in Nextcloud Talk before submitting. Mention "),s("strong",[e._v(e._s(e.submitForm.mentionName))]),e._v(" in any conversation. ")]),s("div",{staticClass:"form-group"},[s("label",[e._v("Why do you want to share your bot with this specific group (or global)?")]),s("textarea",{directives:[{name:"model",rawName:"v-model",value:e.submitForm.approvalReason,expression:"submitForm.approvalReason"}],attrs:{rows:"3"},domProps:{value:e.submitForm.approvalReason},on:{input:function(a){a.target.composing||e.$set(e.submitForm,"approvalReason",a.target.value)}}})]),s("div",{staticClass:"form-group"},[s("label",[e._v("What is your bot good at?")]),s("textarea",{directives:[{name:"model",rawName:"v-model",value:e.submitForm.botCapabilities,expression:"submitForm.botCapabilities"}],attrs:{rows:"3"},domProps:{value:e.submitForm.botCapabilities},on:{input:function(a){a.target.composing||e.$set(e.submitForm,"botCapabilities",a.target.value)}}})]),s("div",{staticClass:"form-group"},[s("label",[e._v("What is/are the source(s) of the information you fed the RAG?")]),s("textarea",{directives:[{name:"model",rawName:"v-model",value:e.submitForm.ragSourceDescription,expression:"submitForm.ragSourceDescription"}],attrs:{rows:"3"},domProps:{value:e.submitForm.ragSourceDescription},on:{input:function(a){a.target.composing||e.$set(e.submitForm,"ragSourceDescription",a.target.value)}}})]),s("div",{staticClass:"form-group"},[s("label",[e._v("Describe fully how you tested your bot so we can reproduce its behaviour.")]),s("textarea",{directives:[{name:"model",rawName:"v-model",value:e.submitForm.testingDescription,expression:"submitForm.testingDescription"}],attrs:{rows:"3"},domProps:{value:e.submitForm.testingDescription},on:{input:function(a){a.target.composing||e.$set(e.submitForm,"testingDescription",a.target.value)}}})])]),s("div",{staticClass:"modal-footer"},[s("button",{staticClass:"button",on:{click:e.closeSubmitModal}},[e._v(" Cancel ")]),s("button",{staticClass:"button primary",on:{click:e.confirmSubmitForApproval}},[e._v(" Submit ")])])])]):e._e(),e.showReviewPreview&&e.reviewPreviewBot?s("div",{staticClass:"modal-mask",on:{click:function(a){return a.target!==a.currentTarget?null:e.closeReviewPreview.apply(null,arguments)}}},[s("div",{staticClass:"modal-container review-preview-modal"},[s("div",{staticClass:"modal-header"},[s("h2",[e._v(e._s(e.getReviewTarget(e.reviewPreviewBot).bot_name))]),s("button",{staticClass:"close-button",on:{click:e.closeReviewPreview}},[s("span",{staticClass:"icon-close"})])]),s("div",{staticClass:"modal-body"},[s("p",{staticClass:"hint"},[e._v(" Review target for "),s("strong",[e._v(e._s(e.reviewPreviewBot.mention_name))]),e.getReviewTarget(e.reviewPreviewBot).is_update?s("span",[e._v(" . This is the pending version that owner and enabled reviewer can test in Talk. ")]):e._e()]),s("div",{staticClass:"form-group"},[s("label",[e._v("Description")]),s("p",{staticClass:"preview-block"},[e._v(" "+e._s(e.getReviewTarget(e.reviewPreviewBot).description||"No description provided")+" ")])]),s("div",{staticClass:"form-group"},[s("label",[e._v("Visibility")]),s("p",{staticClass:"preview-block"},[e._v(" "+e._s(e.formatVisibility(e.getReviewTarget(e.reviewPreviewBot).visibility))+" ")])]),s("div",{staticClass:"form-group"},[s("label",[e._v("Temperature")]),s("p",{staticClass:"preview-block"},[e._v(" "+e._s(e.getReviewTarget(e.reviewPreviewBot).temperature===null||e.getReviewTarget(e.reviewPreviewBot).temperature===void 0?"Uses global default":e.formatTemperature(e.getReviewTarget(e.reviewPreviewBot).temperature))+" ")])]),e.getReviewTarget(e.reviewPreviewBot).allowed_groups?.length||e.getReviewTarget(e.reviewPreviewBot).allowed_teams?.length?s("div",{staticClass:"form-group"},[s("label",[e._v("Target Audience")]),e.getReviewTarget(e.reviewPreviewBot).allowed_groups?.length?s("p",{staticClass:"preview-block"},[e._v(" Groups: "+e._s(e.getReviewTarget(e.reviewPreviewBot).allowed_groups.join(", "))+" ")]):e._e(),e.getReviewTarget(e.reviewPreviewBot).allowed_teams?.length?s("p",{staticClass:"preview-block"},[e._v(" Teams: "+e._s(e.reviewTeamNames(e.getReviewTarget(e.reviewPreviewBot)).join(", "))+" ")]):e._e()]):e._e(),e.getReviewTarget(e.reviewPreviewBot).rag_enabled?s("div",{staticClass:"form-group"},[s("label",[e._v("RAG Sources")]),e.reviewSourcesLoading?s("p",{staticClass:"preview-block"},[e._v(" Loading sources... ")]):e.reviewSourcesError?s("p",{staticClass:"preview-block error-text"},[e._v(" "+e._s(e.reviewSourcesError)+" ")]):e.reviewSources.length===0?s("p",{staticClass:"preview-block"},[e._v(" No knowledge sources attached ")]):s("ul",{staticClass:"preview-source-list"},e._l(e.reviewSources,function(a){return s("li",{key:`${e.reviewPreviewBot.id}-source-${a.id}`},[s("span",[s("strong",[e._v(e._s(e.describeReviewSource(a)))]),a.status?s("span",[e._v(" - "+e._s(e.formatSourceStatus(a.status)))]):e._e()]),e.sourceOpenUrl(a)?s("a",{staticClass:"source-open-link",attrs:{href:e.sourceOpenUrl(a),target:"_blank",rel:"noopener noreferrer"}},[e._v(" Open ")]):e._e()])}),0)]):e._e(),s("div",{staticClass:"form-group"},[s("label",[e._v("System Prompt")]),s("pre",{staticClass:"preview-code"},[e._v(e._s(e.getReviewTarget(e.reviewPreviewBot).system_prompt))])]),s("div",{staticClass:"form-group"},[s("label",[e._v("Enabled Tools")]),e.getReviewTarget(e.reviewPreviewBot).tools&&e.getReviewTarget(e.reviewPreviewBot).tools.length>0?s("ul",{staticClass:"preview-tool-list"},e._l(e.getReviewTarget(e.reviewPreviewBot).tools,function(a,i){return s("li",{key:`${e.reviewPreviewBot.id}-tool-${i}`},[s("strong",[e._v(e._s(a.name))]),a.description?s("span",[e._v(" - "+e._s(a.description))]):e._e()])}),0):s("p",{staticClass:"preview-block"},[e._v(" No tools configured ")])])]),s("div",{staticClass:"modal-footer"},[s("button",{staticClass:"button",on:{click:e.closeReviewPreview}},[e._v(" Close ")])])])]):e._e()],1)},D=[],N=_(B,R,D,!1,null,"65f5dfaa");const E=N.exports,$={name:"PersonalSettings",components:{PersonalActivity:P,PersonalBots:E},data(){return{APP_DISPLAY_NAME:m,activeView:this.initialView()}},methods:{initialView(){return new URLSearchParams(window.location.search).get("view")==="activity"?"activity":"bots"},setView(e){this.activeView=e;const s=new URL(window.location.href);e==="activity"?s.searchParams.set("view","activity"):s.searchParams.delete("view"),window.history.replaceState({},"",s.toString())}}};var x=function(){var e=this,s=e._self._c;return s("div",{staticClass:"educai-personal-settings"},[s("header",{staticClass:"personal-header"},[s("div",[s("h2",[e._v(e._s(e.APP_DISPLAY_NAME))]),s("p",[e._v("Manage your bots and review your own AI activity.")])]),s("nav",{staticClass:"personal-tabs",attrs:{"aria-label":e.APP_DISPLAY_NAME+" personal settings"}},[s("button",{staticClass:"tab-button",class:{active:e.activeView==="bots"},attrs:{type:"button"},on:{click:function(a){return e.setView("bots")}}},[s("span",{staticClass:"icon-comment"}),e._v(" My bots ")]),s("button",{staticClass:"tab-button",class:{active:e.activeView==="activity"},attrs:{type:"button"},on:{click:function(a){return e.setView("activity")}}},[s("span",{staticClass:"icon-search"}),e._v(" Activity ")])])]),e.activeView==="bots"?s("PersonalBots"):s("PersonalActivity")],1)},L=[],M=_($,x,L,!1,null,"43fef29c");const U=M.exports;b.mixin({methods:{t,n}});const I=b.extend(U);new I().$mount("#educai-personal-root"),g(); //# sourceMappingURL=educai-personal.mjs.map