@madh-io/alfred-ai 0.19.0-jarvis.1196 → 0.19.0-jarvis.1197

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (63) hide show
  1. package/bundle/index.js +3 -3
  2. package/bundle/web-ui/404/index.html +1 -1
  3. package/bundle/web-ui/404.html +1 -1
  4. package/bundle/web-ui/_next/static/chunks/app/lebenszeichen/page-d3f56f469f6ca9dc.js +1 -0
  5. package/bundle/web-ui/_next/static/exmjf2Jpr25IuJk0JqSJp/_buildManifest.js +1 -0
  6. package/bundle/web-ui/_next/static/exmjf2Jpr25IuJk0JqSJp/_ssgManifest.js +1 -0
  7. package/bundle/web-ui/background-tasks/index.html +1 -1
  8. package/bundle/web-ui/background-tasks/index.txt +1 -1
  9. package/bundle/web-ui/chat/index.html +1 -1
  10. package/bundle/web-ui/chat/index.txt +1 -1
  11. package/bundle/web-ui/cli-usage/index.html +1 -1
  12. package/bundle/web-ui/cli-usage/index.txt +1 -1
  13. package/bundle/web-ui/cluster/index.html +1 -1
  14. package/bundle/web-ui/cluster/index.txt +1 -1
  15. package/bundle/web-ui/cmdb/index.html +1 -1
  16. package/bundle/web-ui/cmdb/index.txt +1 -1
  17. package/bundle/web-ui/dashboard/index.html +1 -1
  18. package/bundle/web-ui/dashboard/index.txt +1 -1
  19. package/bundle/web-ui/docs/index.html +1 -1
  20. package/bundle/web-ui/docs/index.txt +1 -1
  21. package/bundle/web-ui/goals/index.html +1 -1
  22. package/bundle/web-ui/goals/index.txt +1 -1
  23. package/bundle/web-ui/history/index.html +1 -1
  24. package/bundle/web-ui/history/index.txt +1 -1
  25. package/bundle/web-ui/index.html +1 -1
  26. package/bundle/web-ui/index.txt +1 -1
  27. package/bundle/web-ui/insights/index.html +1 -1
  28. package/bundle/web-ui/insights/index.txt +1 -1
  29. package/bundle/web-ui/interactive/index.html +1 -1
  30. package/bundle/web-ui/interactive/index.txt +1 -1
  31. package/bundle/web-ui/interests/index.html +1 -1
  32. package/bundle/web-ui/interests/index.txt +1 -1
  33. package/bundle/web-ui/itsm/index.html +1 -1
  34. package/bundle/web-ui/itsm/index.txt +1 -1
  35. package/bundle/web-ui/knowledge/index.html +1 -1
  36. package/bundle/web-ui/knowledge/index.txt +1 -1
  37. package/bundle/web-ui/lebenszeichen/index.html +1 -1
  38. package/bundle/web-ui/lebenszeichen/index.txt +2 -2
  39. package/bundle/web-ui/logs/index.html +1 -1
  40. package/bundle/web-ui/logs/index.txt +1 -1
  41. package/bundle/web-ui/memories/index.html +1 -1
  42. package/bundle/web-ui/memories/index.txt +1 -1
  43. package/bundle/web-ui/notes/index.html +1 -1
  44. package/bundle/web-ui/notes/index.txt +1 -1
  45. package/bundle/web-ui/project-agents/index.html +1 -1
  46. package/bundle/web-ui/project-agents/index.txt +1 -1
  47. package/bundle/web-ui/projects/index.html +1 -1
  48. package/bundle/web-ui/projects/index.txt +1 -1
  49. package/bundle/web-ui/runbooks/index.html +1 -1
  50. package/bundle/web-ui/runbooks/index.txt +1 -1
  51. package/bundle/web-ui/sandboxes/index.html +1 -1
  52. package/bundle/web-ui/sandboxes/index.txt +1 -1
  53. package/bundle/web-ui/services/index.html +1 -1
  54. package/bundle/web-ui/services/index.txt +1 -1
  55. package/bundle/web-ui/settings/index.html +1 -1
  56. package/bundle/web-ui/settings/index.txt +1 -1
  57. package/bundle/web-ui/social/index.html +1 -1
  58. package/bundle/web-ui/social/index.txt +1 -1
  59. package/bundle/web-ui/todos/index.html +1 -1
  60. package/bundle/web-ui/todos/index.txt +1 -1
  61. package/bundle/web-ui/vorgaenge/index.html +1 -1
  62. package/bundle/web-ui/vorgaenge/index.txt +1 -1
  63. package/package.json +1 -1
package/bundle/index.js CHANGED
@@ -4061,7 +4061,7 @@ ${r}`:r;await this.db.execute("UPDATE cmdb_problems SET analysis_notes = ?, upda
4061
4061
  WHERE user_id = ? AND sampled_at >= ?
4062
4062
  ORDER BY sampled_at ASC`,[e,r]),o=new Map;for(let d of a){let u=`${d.asset_id??"\u2205"}::${d.metric_name}`,h=o.get(u)??[];h.push({t:new Date(d.sampled_at).getTime()/864e5,v:Number(d.value)}),o.set(u,h)}let c=[];for(let[d,u]of o){if(u.length<i)continue;let[h,p]=d.split("::"),f=u.length,g=u.reduce((I,$)=>I+$.t,0),y=u.reduce((I,$)=>I+$.v,0),w=u.reduce((I,$)=>I+$.t*$.v,0),_=u.reduce((I,$)=>I+$.t*$.t,0),E=f*_-g*g,T=E===0?0:(f*w-g*y)/E,k=(y-T*g)/f,b=u[u.length-1],v=Date.now()/864e5,N=null;if(T>0&&b.v<n){let I=(n-k)/T;N=Math.max(0,Math.round(I-v))}else b.v>=n&&(N=0);c.push({metricName:p,assetId:h==="\u2205"?void 0:h,samplesCount:f,firstSeen:new Date(u[0].t*864e5).toISOString(),lastSeen:new Date(b.t*864e5).toISOString(),latestValue:b.v,slopePerDay:T,daysUntilThreshold:N,threshold:n})}return c.sort((d,u)=>d.daysUntilThreshold!=null&&u.daysUntilThreshold!=null?d.daysUntilThreshold-u.daysUntilThreshold:d.daysUntilThreshold!=null?-1:u.daysUntilThreshold!=null?1:u.slopePerDay-d.slopePerDay)}}});import{randomUUID as FU}from"node:crypto";function lS(l){try{return JSON.parse(l)}catch{return}}var ju,dS=A(()=>{"use strict";ju=class{static{m(this,"InsightsRepository")}db;constructor(e){this.db=e}async upsertCandidate(e,t){let s=new Date().toISOString();if(await this.isCategoryMuted(e,t.category))return{inserted:!1,id:"",muted:!0};if(t.dedupeKey){let i=await this.db.queryOne("SELECT id, status FROM alfred_insights WHERE user_id = ? AND dedupe_key = ?",[e,t.dedupeKey]);if(i)return(i.status==="pending"||i.status==="snoozed")&&await this.db.execute("UPDATE alfred_insights SET title = ?, body = ?, confidence = ?, source_data = ?, action_skill = ?, action_params = ?, updated_at = ? WHERE id = ?",[t.title,t.body,t.confidence??.5,t.sourceData?JSON.stringify(t.sourceData):null,t.actionSkill??null,t.actionParams?JSON.stringify(t.actionParams):null,s,i.id]),{inserted:!1,id:i.id}}let n=FU();return await this.db.execute(`INSERT INTO alfred_insights (id, user_id, category, title, body, confidence, source_data, action_skill, action_params, status, dedupe_key, created_at, updated_at)
4063
4063
  VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, 'pending', ?, ?, ?)`,[n,e,t.category,t.title,t.body,t.confidence??.5,t.sourceData?JSON.stringify(t.sourceData):null,t.actionSkill??null,t.actionParams?JSON.stringify(t.actionParams):null,t.dedupeKey??null,s,s]),{inserted:!0,id:n}}async setCategoryMuted(e,t,s){let n=new Date().toISOString();await this.db.queryOne("SELECT category FROM insight_category_prefs WHERE user_id = ? AND category = ?",[e,t])?await this.db.execute("UPDATE insight_category_prefs SET muted = ?, updated_at = ? WHERE user_id = ? AND category = ?",[s?1:0,n,e,t]):await this.db.execute("INSERT INTO insight_category_prefs (user_id, category, muted, updated_at) VALUES (?, ?, ?, ?)",[e,t,s?1:0,n])}async isCategoryMuted(e,t){try{let s=await this.db.queryOne("SELECT muted FROM insight_category_prefs WHERE user_id = ? AND category = ?",[e,t]);return s?s.muted===1||s.muted===!0:!1}catch{return!1}}async listMutedCategories(e){try{return(await this.db.query("SELECT category FROM insight_category_prefs WHERE user_id = ? AND muted = 1",[e])).map(s=>s.category)}catch{return[]}}async list(e,t){let s=["user_id = ?"],n=[e],i=t?.status?Array.isArray(t.status)?t.status:[t.status]:["pending","snoozed"];return i.length===1?(s.push("status = ?"),n.push(i[0])):(s.push(`status IN (${i.map(()=>"?").join(",")})`),n.push(...i)),t?.category&&(s.push("category = ?"),n.push(t.category)),t?.includeExpiredSnoozes||(s.push("(status != 'snoozed' OR snoozed_until IS NULL OR snoozed_until <= ?)"),n.push(new Date().toISOString())),n.push(t?.limit??100),(await this.db.query(`SELECT * FROM alfred_insights WHERE ${s.join(" AND ")}
4064
- ORDER BY confidence DESC, created_at DESC LIMIT ?`,n)).map(a=>this.mapRow(a))}async getById(e,t){let s=await this.db.queryOne("SELECT * FROM alfred_insights WHERE id = ? AND user_id = ?",[t,e]);return s?this.mapRow(s):null}async getByIdAnyOwner(e){let t=await this.db.queryOne("SELECT * FROM alfred_insights WHERE id = ?",[e]);return t?this.mapRow(t):null}async dismiss(e,t){let s=new Date().toISOString();await this.db.execute("UPDATE alfred_insights SET status = 'dismissed', dismissed_at = ?, updated_at = ? WHERE id = ? AND user_id = ?",[s,s,t,e])}async dismissCategory(e,t){let s=new Date().toISOString();return(await this.db.execute("UPDATE alfred_insights SET status = 'dismissed', dismissed_at = ?, updated_at = ? WHERE user_id = ? AND category = ? AND status IN ('pending', 'snoozed')",[s,s,e,t])).changes??0}async snooze(e,t,s){let n=new Date().toISOString(),i=new Date(Date.now()+s*36e5).toISOString();await this.db.execute("UPDATE alfred_insights SET status = 'snoozed', snoozed_until = ?, updated_at = ? WHERE id = ? AND user_id = ?",[i,n,t,e])}async markActed(e,t){let s=new Date().toISOString();await this.db.execute("UPDATE alfred_insights SET status = 'acted', acted_at = ?, updated_at = ? WHERE id = ? AND user_id = ?",[s,s,t,e])}async expireSnoozes(e){let t=new Date().toISOString();return(await this.db.execute("UPDATE alfred_insights SET status = 'pending', snoozed_until = NULL, updated_at = ? WHERE user_id = ? AND status = 'snoozed' AND snoozed_until <= ?",[t,e,t])).changes??0}async expireStale(e,t=21){let s=new Date(Date.now()-t*864e5).toISOString(),n=new Date().toISOString();return(await this.db.execute("UPDATE alfred_insights SET status = 'expired', updated_at = ? WHERE user_id = ? AND status = 'pending' AND created_at <= ?",[n,e,s])).changes??0}async stats(e){let t=await this.db.query("SELECT status, COUNT(*) AS c FROM alfred_insights WHERE user_id = ? GROUP BY status",[e]),s={pending:0,snoozed:0,dismissed:0,acted:0,expired:0};for(let n of t)s[n.status]=Number(n.c);return s}mapRow(e){return{id:e.id,userId:e.user_id,category:e.category,title:e.title,body:e.body,confidence:Number(e.confidence??.5),sourceData:e.source_data?lS(e.source_data):void 0,actionSkill:e.action_skill,actionParams:e.action_params?lS(e.action_params):void 0,status:e.status,snoozedUntil:e.snoozed_until,dedupeKey:e.dedupe_key,createdAt:e.created_at,updatedAt:e.updated_at,actedAt:e.acted_at,dismissedAt:e.dismissed_at}}};m(lS,"safeJson")});import{randomUUID as kg,createHash as jU}from"node:crypto";function Tc(l){let e=l.url&&l.url.trim().length>0?l.url.trim().toLowerCase().replace(/[?#].*$/,"").replace(/\/+$/,""):l.title.toLowerCase().replace(/[^a-zä-ü0-9]+/gi," ").trim();return jU("sha1").update(e).digest("hex")}var Bu,uS=A(()=>{"use strict";m(Tc,"topicItemDedupeHash");Bu=class{static{m(this,"InterestsRepository")}db;constructor(e){this.db=e}async createTopic(e,t){let s=kg(),n=new Date().toISOString();return await this.db.execute(`INSERT INTO interest_topics (id, user_id, name, keywords, status, origin, notify_threshold, created_at)
4064
+ ORDER BY confidence DESC, created_at DESC LIMIT ?`,n)).map(a=>this.mapRow(a))}async getById(e,t){let s=await this.db.queryOne("SELECT * FROM alfred_insights WHERE id = ? AND user_id = ?",[t,e]);return s?this.mapRow(s):null}async getByIdAnyOwner(e){let t=await this.db.queryOne("SELECT * FROM alfred_insights WHERE id = ?",[e]);return t?this.mapRow(t):null}async dismiss(e,t){let s=new Date().toISOString();await this.db.execute("UPDATE alfred_insights SET status = 'dismissed', dismissed_at = ?, updated_at = ? WHERE id = ? AND user_id = ?",[s,s,t,e])}async dismissCategory(e,t){let s=new Date().toISOString();return(await this.db.execute("UPDATE alfred_insights SET status = 'dismissed', dismissed_at = ?, updated_at = ? WHERE user_id = ? AND category = ? AND status IN ('pending', 'snoozed')",[s,s,e,t])).changes??0}async snooze(e,t,s){let n=new Date().toISOString(),i=new Date(Date.now()+s*36e5).toISOString();await this.db.execute("UPDATE alfred_insights SET status = 'snoozed', snoozed_until = ?, updated_at = ? WHERE id = ? AND user_id = ?",[i,n,t,e])}async markActed(e,t){let s=new Date().toISOString();await this.db.execute("UPDATE alfred_insights SET status = 'acted', acted_at = ?, updated_at = ? WHERE id = ? AND user_id = ?",[s,s,t,e])}async expireSnoozes(e){let t=new Date().toISOString();return(await this.db.execute("UPDATE alfred_insights SET status = 'pending', snoozed_until = NULL, updated_at = ? WHERE user_id = ? AND status = 'snoozed' AND snoozed_until <= ?",[t,e,t])).changes??0}async expireStale(e,t=21,s){let n=new Date(Date.now()-t*864e5).toISOString(),i=new Date().toISOString();return(await this.db.execute(`UPDATE alfred_insights SET status = 'expired', updated_at = ? WHERE user_id = ? AND status = 'pending' AND created_at <= ?${s?" AND category = ?":""}`,s?[i,e,n,s]:[i,e,n])).changes??0}async stats(e){let t=await this.db.query("SELECT status, COUNT(*) AS c FROM alfred_insights WHERE user_id = ? GROUP BY status",[e]),s={pending:0,snoozed:0,dismissed:0,acted:0,expired:0};for(let n of t)s[n.status]=Number(n.c);return s}mapRow(e){return{id:e.id,userId:e.user_id,category:e.category,title:e.title,body:e.body,confidence:Number(e.confidence??.5),sourceData:e.source_data?lS(e.source_data):void 0,actionSkill:e.action_skill,actionParams:e.action_params?lS(e.action_params):void 0,status:e.status,snoozedUntil:e.snoozed_until,dedupeKey:e.dedupe_key,createdAt:e.created_at,updatedAt:e.updated_at,actedAt:e.acted_at,dismissedAt:e.dismissed_at}}};m(lS,"safeJson")});import{randomUUID as kg,createHash as jU}from"node:crypto";function Tc(l){let e=l.url&&l.url.trim().length>0?l.url.trim().toLowerCase().replace(/[?#].*$/,"").replace(/\/+$/,""):l.title.toLowerCase().replace(/[^a-zä-ü0-9]+/gi," ").trim();return jU("sha1").update(e).digest("hex")}var Bu,uS=A(()=>{"use strict";m(Tc,"topicItemDedupeHash");Bu=class{static{m(this,"InterestsRepository")}db;constructor(e){this.db=e}async createTopic(e,t){let s=kg(),n=new Date().toISOString();return await this.db.execute(`INSERT INTO interest_topics (id, user_id, name, keywords, status, origin, notify_threshold, created_at)
4065
4065
  VALUES (?, ?, ?, ?, 'active', ?, ?, ?)`,[s,e,t.name,JSON.stringify(t.keywords??[]),t.origin??"manual",t.notifyThreshold??"high",n]),{id:s,userId:e,name:t.name,keywords:t.keywords??[],status:"active",origin:t.origin??"manual",notifyThreshold:t.notifyThreshold??"high",createdAt:n}}async listTopics(e,t){let s=t?Array.isArray(t)?t:[t]:void 0,n=["user_id = ?"],i=[e];return s&&s.length>0&&(n.push(`status IN (${s.map(()=>"?").join(",")})`),i.push(...s)),(await this.db.query(`SELECT * FROM interest_topics WHERE ${n.join(" AND ")} ORDER BY created_at DESC`,i)).map(a=>this.mapTopic(a))}async getTopicById(e,t){let s=await this.db.queryOne("SELECT * FROM interest_topics WHERE id = ? AND user_id = ?",[t,e]);return s?this.mapTopic(s):null}async findTopicByNameExact(e,t){let s=await this.listTopics(e),n=t.toLowerCase().trim();return s.find(i=>i.name.toLowerCase().trim()===n)??null}async findTopicByName(e,t){let s=await this.listTopics(e),n=t.toLowerCase().trim(),i=s.find(a=>a.name.toLowerCase()===n);if(i)return i;let r=s.find(a=>a.name.toLowerCase().includes(n)||n.includes(a.name.toLowerCase()));return r||(s.find(a=>a.keywords.some(o=>{let c=o.toLowerCase().trim();return c.length<4?c===n:c===n?!0:new RegExp(`(^|[^a-z\xE4-\xFC0-9])${c.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}([^a-z\xE4-\xFC0-9]|$)`,"i").test(n)}))??null)}async updateTopic(e,t,s){let n=[],i=[];s.name!==void 0&&(n.push("name = ?"),i.push(s.name)),s.keywords!==void 0&&(n.push("keywords = ?"),i.push(JSON.stringify(s.keywords))),s.status!==void 0&&(n.push("status = ?"),i.push(s.status)),s.notifyThreshold!==void 0&&(n.push("notify_threshold = ?"),i.push(s.notifyThreshold)),n.length!==0&&(i.push(t,e),await this.db.execute(`UPDATE interest_topics SET ${n.join(", ")} WHERE id = ? AND user_id = ?`,i))}async touchActivity(e){await this.db.execute("UPDATE interest_topics SET last_activity_at = ? WHERE id = ?",[new Date().toISOString(),e])}async listAllActiveTopics(){return(await this.db.query("SELECT * FROM interest_topics WHERE status = 'active'",[])).map(t=>this.mapTopic(t))}async addSource(e,t){let s=kg(),n=new Date().toISOString();return await this.db.execute(`INSERT INTO topic_sources (id, topic_id, kind, config, added_by, enabled, created_at)
4066
4066
  VALUES (?, ?, ?, ?, ?, 1, ?)`,[s,e,t.kind,JSON.stringify(t.config),t.addedBy??"manual",n]),{id:s,topicId:e,kind:t.kind,config:t.config,addedBy:t.addedBy??"manual",enabled:!0,createdAt:n}}async listSources(e,t=!1){return(await this.db.query(`SELECT * FROM topic_sources WHERE topic_id = ?${t?" AND enabled = 1":""} ORDER BY created_at`,[e])).map(n=>this.mapSource(n))}async removeSource(e,t){return((await this.db.execute("DELETE FROM topic_sources WHERE id = ? AND topic_id = ?",[t,e])).changes??0)>0}async setSourceEnabled(e,t){await this.db.execute("UPDATE topic_sources SET enabled = ? WHERE id = ?",[t?1:0,e])}async updateSourceConfig(e,t){await this.db.execute("UPDATE topic_sources SET config = ? WHERE id = ?",[JSON.stringify(t),e])}async markSourceChecked(e){await this.db.execute("UPDATE topic_sources SET last_checked_at = ? WHERE id = ?",[new Date().toISOString(),e])}async insertItem(e,t){let s=Tc(t),n=await this.db.queryOne("SELECT id FROM topic_items WHERE topic_id = ? AND dedupe_hash = ?",[e,s]);if(n)return{inserted:!1,id:n.id};let i=kg();return await this.db.execute(`INSERT INTO topic_items (id, topic_id, title, url, summary, source_kind, published_at, importance, dedupe_hash, created_at)
4067
4067
  VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)`,[i,e,t.title.slice(0,300),t.url??null,t.summary?.slice(0,2e3)??null,t.sourceKind,t.publishedAt??null,t.importance??null,s,new Date().toISOString()]),{inserted:!0,id:i}}async itemExists(e,t){return await this.db.queryOne("SELECT id FROM topic_items WHERE topic_id = ? AND dedupe_hash = ?",[e,t])!==void 0}async listItems(e,t){let s=["topic_id = ?"],n=[e];return t?.sinceIso&&(s.push("created_at >= ?"),n.push(t.sinceIso)),n.push(t?.limit??30),(await this.db.query(`SELECT * FROM topic_items WHERE ${s.join(" AND ")} ORDER BY created_at DESC LIMIT ?`,n)).map(r=>this.mapItem(r))}async countItemsSince(e,t){let s=await this.db.queryOne("SELECT COUNT(*) AS c FROM topic_items WHERE topic_id = ? AND created_at >= ?",[e,t]);return s?Number(s.c):0}async getDigest(e){let t=await this.db.queryOne("SELECT * FROM topic_digests WHERE topic_id = ?",[e]);return t?{topicId:String(t.topic_id),summary:String(t.summary),itemsSinceUpdate:Number(t.items_since_update??0),updatedAt:String(t.updated_at)}:null}async upsertDigest(e,t){let s=new Date().toISOString();await this.db.queryOne("SELECT topic_id FROM topic_digests WHERE topic_id = ?",[e])?await this.db.execute("UPDATE topic_digests SET summary = ?, items_since_update = 0, updated_at = ? WHERE topic_id = ?",[t,s,e]):await this.db.execute("INSERT INTO topic_digests (topic_id, summary, items_since_update, updated_at) VALUES (?, ?, 0, ?)",[e,t,s])}mapTopic(e){let t=[];try{let s=JSON.parse(String(e.keywords??"[]"));Array.isArray(s)&&(t=s.map(String))}catch{}return{id:String(e.id),userId:String(e.user_id),name:String(e.name),keywords:t,status:String(e.status),origin:String(e.origin),notifyThreshold:String(e.notify_threshold??"high"),createdAt:String(e.created_at),lastActivityAt:e.last_activity_at?String(e.last_activity_at):void 0}}mapSource(e){let t={};try{let s=JSON.parse(String(e.config??"{}"));s&&typeof s=="object"&&(t=s)}catch{}return{id:String(e.id),topicId:String(e.topic_id),kind:String(e.kind),config:t,addedBy:e.added_by==="auto"?"auto":"manual",enabled:e.enabled===1||e.enabled===!0,lastCheckedAt:e.last_checked_at?String(e.last_checked_at):void 0,createdAt:String(e.created_at)}}mapItem(e){return{id:String(e.id),topicId:String(e.topic_id),title:String(e.title),url:e.url?String(e.url):void 0,summary:e.summary?String(e.summary):void 0,sourceKind:String(e.source_kind),publishedAt:e.published_at?String(e.published_at):void 0,importance:e.importance!==null&&e.importance!==void 0?Number(e.importance):void 0,createdAt:String(e.created_at)}}}});import{randomUUID as ui}from"node:crypto";function Sg(l,e){return BU[l]?.includes(e)??!1}function hS(l){if(!(typeof l!="string"||!l.trim()))try{let e=JSON.parse(l);if(e&&typeof e=="object"&&!Array.isArray(e)){let t={};for(let[s,n]of Object.entries(e))typeof n=="string"&&(t[s]=n);return Object.keys(t).length>0?t:void 0}}catch{}}function Ec(l){try{return JSON.parse(l)}catch{return}}function bg(l){let e=Ec(l);return Array.isArray(e)?e.map(String):[]}var BU,zu,pS=A(()=>{"use strict";BU={idea:["draft","rejected"],draft:["scheduled","approved","rejected"],scheduled:["approved","rejected","draft"],approved:["publishing","published","rejected","scheduled"],publishing:["published","failed"],failed:["approved","publishing","rejected"],published:[],rejected:["draft"]};m(Sg,"isValidTransition");m(hS,"parseChannelUses");zu=class{static{m(this,"SocialRepository")}db;constructor(e){this.db=e}async createChannel(e,t){let s=ui(),n=new Date().toISOString();return await this.db.execute(`INSERT INTO social_channels (id, user_id, project_id, platform, name, handle, mode, publish_mode,
@@ -7724,7 +7724,7 @@ ${p}
7724
7724
  ${h.trim()}
7725
7725
  `}return{ok:!0,markdown:h,costUsd:o}}catch(i){return{ok:!1,costUsd:0,reason:i.message}}}parseToNeutralFormat(e,t){let s={},n=t.language==="de"?LX:OX,i=e.split(`
7726
7726
  `),r=null,a=[],o=m(()=>{if(r&&a.length>0){let c=a.join(`
7727
- `).trim();c&&(s[r]=c)}a=[]},"flushSection");for(let c of i){let d=c.match(/^##\s+(.+?)\s*$/);if(d){o();let u=d[1].trim(),h=null;for(let p of CX)if(u.toLowerCase().includes(n[p].split(" ")[0].toLowerCase())){h=p;break}if(!h){let p=u.toLowerCase();p.includes("gotcha")||p.includes("stolper")||p.includes("pitfall")?h="gotchas":p.includes("test")?h="testSetup":p.includes("command")||p.includes("build")?h="commands":p.includes("arch")?h="architecture":p.includes("style")?h="style":p.includes("touch")||p.includes("not modify")?h="doNotTouch":(p.includes("stack")||p.includes("setup"))&&(h="stack")}r=h}else r&&a.push(c)}return o(),{meta:{version:"1",generatedAt:new Date().toISOString(),scanHash:t.scanHash,lessonsCount:0,language:t.language},sections:s,lessons:[]}}}});var cL={};Le(cL,{InsightEngine:()=>rE});var rE,lL=A(()=>{"use strict";rE=class{static{m(this,"InsightEngine")}repo;logger;adapters=[];constructor(e,t){this.repo=e,this.logger=t}register(e){this.adapters.push(e),this.logger.debug({adapter:e.name},"InsightEngine: adapter registered")}async sweep(e){try{await this.repo.expireSnoozes(e.userId)}catch{}try{await this.repo.expireStale(e.userId,21)}catch{}let t={},s=[],n=0,i=0,r=await Promise.allSettled(this.adapters.map(async a=>{try{let o=await a.generate(e);t[a.name]=o.length;for(let c of o)try{(await this.repo.upsertCandidate(e.userId,c)).inserted?n++:i++}catch(d){this.logger.warn({err:d,adapter:a.name},"Insight upsert failed")}}catch(o){s.push(`${a.name}: ${o.message}`),this.logger.warn({err:o,adapter:a.name},"Adapter execution failed")}}));return this.logger.info({inserted:n,refreshed:i,adapters:t,errors:s.length},"Insight sweep complete"),{inserted:n,refreshed:i,perAdapter:t,errors:s}}listRegistered(){return this.adapters.map(e=>e.name)}}});var dL={};Le(dL,{InfraForecastAdapter:()=>aE});var aE,uL=A(()=>{"use strict";aE=class{static{m(this,"InfraForecastAdapter")}metrics;itsm;problems;name="infra-forecast";constructor(e,t,s){this.metrics=e,this.itsm=t,this.problems=s}async generate(e){let t=[],s=[];try{s=await this.metrics.forecast(e.userId,{windowDays:30,threshold:95})}catch{return t}let n=s.filter(c=>c.daysUntilThreshold!=null&&c.daysUntilThreshold<=30);if(n.length===0)return t;let i=[];try{i=await this.itsm.serviceHealthScore(e.userId,{windowDays:30})}catch{}let r=new Set;for(let c of i.filter(d=>d.score<70))try{let d=await this.itsm.getServiceById(e.userId,c.serviceId);if(d?.assetIds)for(let u of d.assetIds)r.add(u)}catch{}let a=[];try{a=await this.problems.detectPatterns(e.userId,{windowDays:14,minIncidents:2})}catch{}let o=new Set;for(let c of a)for(let d of c.assetIds)o.add(d);for(let c of n){let d=c.assetId,u=d?r.has(d):!1,h=d?o.has(d):!1,p=[!0,u,h].filter(Boolean).length,f=p===3?.95:p===2?.75:.55,g=c.daysUntilThreshold??0,w=`${g<=7?"\u{1F534} dringlich":g<=14?"\u26A0\uFE0F baldig":"\u{1F7E1} mittelfristig"}: ${c.metricName}${d?` @ Asset ${d.slice(0,8)}`:""} erreicht ${c.threshold}% in ~${g}d`,_=[];_.push(`**Trend**: aktuell ${c.latestValue.toFixed(1)}%, ${c.slopePerDay>=0?"+":""}${c.slopePerDay.toFixed(2)}%/Tag, Schwelle ${c.threshold}%.`),h&&_.push(`**Pattern**: bereits ${a.find(E=>E.assetIds.includes(d))?.incidentCount??"?"} Incidents am selben Asset (Pattern-Detection).`),u&&_.push("**Service-Health**: Asset geh\xF6rt zu Service(s) mit Health-Score <70."),p===3&&_.push(""),p===3?_.push("Drei Signale gleichzeitig \u2192 Capacity-Upgrade jetzt einplanen ist deutlich g\xFCnstiger als Notfall-Migration nach Schwellen-Bruch."):_.push(""),_.push("**Empfohlene Aktion**: Change-Request f\xFCr Capacity-Upgrade (RAM/Disk je nach Metrik) erstellen."),t.push({category:"infra-forecast",title:w,body:_.join(`
7727
+ `).trim();c&&(s[r]=c)}a=[]},"flushSection");for(let c of i){let d=c.match(/^##\s+(.+?)\s*$/);if(d){o();let u=d[1].trim(),h=null;for(let p of CX)if(u.toLowerCase().includes(n[p].split(" ")[0].toLowerCase())){h=p;break}if(!h){let p=u.toLowerCase();p.includes("gotcha")||p.includes("stolper")||p.includes("pitfall")?h="gotchas":p.includes("test")?h="testSetup":p.includes("command")||p.includes("build")?h="commands":p.includes("arch")?h="architecture":p.includes("style")?h="style":p.includes("touch")||p.includes("not modify")?h="doNotTouch":(p.includes("stack")||p.includes("setup"))&&(h="stack")}r=h}else r&&a.push(c)}return o(),{meta:{version:"1",generatedAt:new Date().toISOString(),scanHash:t.scanHash,lessonsCount:0,language:t.language},sections:s,lessons:[]}}}});var cL={};Le(cL,{InsightEngine:()=>rE});var rE,lL=A(()=>{"use strict";rE=class{static{m(this,"InsightEngine")}repo;logger;adapters=[];constructor(e,t){this.repo=e,this.logger=t}register(e){this.adapters.push(e),this.logger.debug({adapter:e.name},"InsightEngine: adapter registered")}async sweep(e){try{await this.repo.expireSnoozes(e.userId)}catch{}try{await this.repo.expireStale(e.userId,21)}catch{}try{let a=await this.repo.expireStale(e.userId,3,"interests");a>0&&this.logger.info({abgelaufen:a},"v1197 Themen-Insights nach 3 Tagen abgelaufen")}catch{}let t={},s=[],n=0,i=0,r=await Promise.allSettled(this.adapters.map(async a=>{try{let o=await a.generate(e);t[a.name]=o.length;for(let c of o)try{(await this.repo.upsertCandidate(e.userId,c)).inserted?n++:i++}catch(d){this.logger.warn({err:d,adapter:a.name},"Insight upsert failed")}}catch(o){s.push(`${a.name}: ${o.message}`),this.logger.warn({err:o,adapter:a.name},"Adapter execution failed")}}));return this.logger.info({inserted:n,refreshed:i,adapters:t,errors:s.length},"Insight sweep complete"),{inserted:n,refreshed:i,perAdapter:t,errors:s}}listRegistered(){return this.adapters.map(e=>e.name)}}});var dL={};Le(dL,{InfraForecastAdapter:()=>aE});var aE,uL=A(()=>{"use strict";aE=class{static{m(this,"InfraForecastAdapter")}metrics;itsm;problems;name="infra-forecast";constructor(e,t,s){this.metrics=e,this.itsm=t,this.problems=s}async generate(e){let t=[],s=[];try{s=await this.metrics.forecast(e.userId,{windowDays:30,threshold:95})}catch{return t}let n=s.filter(c=>c.daysUntilThreshold!=null&&c.daysUntilThreshold<=30);if(n.length===0)return t;let i=[];try{i=await this.itsm.serviceHealthScore(e.userId,{windowDays:30})}catch{}let r=new Set;for(let c of i.filter(d=>d.score<70))try{let d=await this.itsm.getServiceById(e.userId,c.serviceId);if(d?.assetIds)for(let u of d.assetIds)r.add(u)}catch{}let a=[];try{a=await this.problems.detectPatterns(e.userId,{windowDays:14,minIncidents:2})}catch{}let o=new Set;for(let c of a)for(let d of c.assetIds)o.add(d);for(let c of n){let d=c.assetId,u=d?r.has(d):!1,h=d?o.has(d):!1,p=[!0,u,h].filter(Boolean).length,f=p===3?.95:p===2?.75:.55,g=c.daysUntilThreshold??0,w=`${g<=7?"\u{1F534} dringlich":g<=14?"\u26A0\uFE0F baldig":"\u{1F7E1} mittelfristig"}: ${c.metricName}${d?` @ Asset ${d.slice(0,8)}`:""} erreicht ${c.threshold}% in ~${g}d`,_=[];_.push(`**Trend**: aktuell ${c.latestValue.toFixed(1)}%, ${c.slopePerDay>=0?"+":""}${c.slopePerDay.toFixed(2)}%/Tag, Schwelle ${c.threshold}%.`),h&&_.push(`**Pattern**: bereits ${a.find(E=>E.assetIds.includes(d))?.incidentCount??"?"} Incidents am selben Asset (Pattern-Detection).`),u&&_.push("**Service-Health**: Asset geh\xF6rt zu Service(s) mit Health-Score <70."),p===3&&_.push(""),p===3?_.push("Drei Signale gleichzeitig \u2192 Capacity-Upgrade jetzt einplanen ist deutlich g\xFCnstiger als Notfall-Migration nach Schwellen-Bruch."):_.push(""),_.push("**Empfohlene Aktion**: Change-Request f\xFCr Capacity-Upgrade (RAM/Disk je nach Metrik) erstellen."),t.push({category:"infra-forecast",title:w,body:_.join(`
7728
7728
  `),confidence:f,sourceData:{metric:c.metricName,assetId:d,latestValue:c.latestValue,daysUntilThreshold:g,hasPattern:h,hasLowScoreService:u},actionSkill:"itsm",actionParams:{action:"create_change_request",title:`Capacity-Upgrade: ${c.metricName}${d?" @ "+d.slice(0,8):""}`,type:"capacity",risk_level:p===3?"high":"medium",implementation_plan:`Erkennung \xFCber InfraForecastAdapter (${p} Signale). Aktueller Wert ${c.latestValue.toFixed(1)}%, Trend ${c.slopePerDay.toFixed(2)}%/d \u2192 Schwelle ${c.threshold}% in ~${g}d.`,affected_asset_ids:d?[d]:[]},dedupeKey:`infra-forecast:${d??"no-asset"}:${c.metricName}`})}return t}}});var hL={};Le(hL,{OpenLoopAdapter:()=>oE});var oE,pL=A(()=>{"use strict";oE=class{static{m(this,"OpenLoopAdapter")}conversations;name="open-loop";constructor(e){this.conversations=e}async generate(e){let t=new Date(Date.now()-6048e5).toISOString(),s=[],n=await this.conversations.listConversations({userIds:e.linkedUserIds,limit:50});for(let i of n){if(i.chatId.startsWith("scheduled-")||!(i.lastMessagePreview??""))continue;let a=i.lastMessageAt??i.updatedAt;if(a>=t)continue;let o=await this.conversations.getMessagesPaged(i.id,{limit:5});if(o.length===0)continue;let c=o[o.length-1];if(c.role!=="user")continue;let d=(c.content??"").trim();if(!(d.endsWith("?")||/\b(wie|wann|was|wo|warum|sollen wir|sollte ich|hast du|kannst du|hattest du|gibt es)\b/i.test(d)))continue;let h=Math.round((Date.now()-new Date(a).getTime())/864e5);s.push({category:"open-loop",title:`Offene Frage in ${i.platform}: ${d.slice(0,60)}${d.length>60?"\u2026":""}`,body:`Letzte Nachricht in dieser Conversation ist deine Frage:
7729
7729
 
7730
7730
  > ${d.slice(0,280)}${d.length>280?"\u2026":""}
@@ -7816,7 +7816,7 @@ Base commit: \`${e.baseCommitSha.slice(0,8)}\``;return{ok:!0,prUrl:(await a.crea
7816
7816
  `)+d.join(`
7817
7817
  `)+`
7818
7818
  `;r(o,u,"utf8")}}catch(i){this.deps.logger.debug({err:i},"v726 .gitignore update skipped")}if(t.kind!=="empty")try{let{copyFileSync:i,statSync:r}=await import("node:fs");if(t.kind==="repo_path"){if(t.path.includes(".."))throw new Error("repo_path darf kein .. enthalten");let a=Xt.resolve(s,t.path);if(!a.startsWith(Xt.resolve(s)))throw new Error("repo_path verl\xE4sst projectCwd");let o=Xt.join(n,Xt.basename(a));i(a,o),this.deps.logger.info({src:a,target:o,size:r(o).size},"v726 db-seed copied from repo_path")}else if(t.kind==="upload"){if(!this.deps.dbSeedRepo||!this.deps.uploadSeedsPath)throw new Error("Upload-Seed angefordert aber dbSeedRepo/uploadSeedsPath nicht konfiguriert");let a=await this.deps.dbSeedRepo.getById(t.seedId);if(!a)throw new Error(`Seed ${t.seedId} nicht gefunden`);if(a.kind!=="upload")throw new Error(`Seed ${t.seedId} ist kind=${a.kind}, nicht upload`);let o=Xt.resolve(this.deps.uploadSeedsPath,a.storageRef);if(!o.startsWith(Xt.resolve(this.deps.uploadSeedsPath)))throw new Error("Upload-Seed verl\xE4sst uploadSeedsPath");let c=Xt.join(n,a.name);i(o,c),this.deps.logger.info({src:o,target:c,size:r(c).size},"v726 db-seed copied from upload")}}catch(i){this.deps.logger.warn({err:i},"v726 db-seed copy failed (sandbox startet mit leerem .alfred-data)")}}};m(Ds,"runGit");m(AW,"runGitBoth");IW=[{name:"AWS Access Key",re:/\bAKIA[0-9A-Z]{16}\b/g},{name:"GitHub Token",re:/\bghp_[A-Za-z0-9]{36}\b/g},{name:"GitHub PAT",re:/\bghs_[A-Za-z0-9]{36}\b/g},{name:"GitLab Token",re:/\bglpat-[A-Za-z0-9_-]{20}\b/g},{name:"OpenAI Key",re:/\bsk-[A-Za-z0-9]{48,}\b/g},{name:"Anthropic Key",re:/\bsk-ant-[A-Za-z0-9-_]{24,}\b/g},{name:"Stripe Secret",re:/\bsk_live_[A-Za-z0-9]{24,}\b/g},{name:"Slack Token",re:/\bxox[abp]-[A-Za-z0-9-]{10,}\b/g},{name:"Private Key",re:/-----BEGIN (?:RSA |EC |DSA )?PRIVATE KEY-----/g},{name:"JWT Token",re:/\beyJ[A-Za-z0-9_-]{20,}\.[A-Za-z0-9_-]{20,}\.[A-Za-z0-9_-]{20,}\b/g}];m(RW,"stripAnsi");m(NW,"summarizeTestFailure");m($W,"scanForSecrets");m(CW,"parseRepoFromUrl");m(LW,"resolveDockerfilesDir")});var qL={};Le(qL,{IdentityResolver:()=>IE});var IE,JL=A(()=>{"use strict";Zi();IE=class{static{m(this,"IdentityResolver")}users;projects;logger;constructor(e,t,s){this.users=e,this.projects=t,this.logger=s}async resolveOwnerFromConfig(e,t){if(!e||typeof e!="string")throw new Error("IdentityResolver.resolveOwnerFromConfig: empty/invalid envValue");if(Yr(e)){try{await this.users.findById(e)||this.logger.warn({envValue:e.slice(0,8)},"v804 owner UUID not found in users-table \u2014 accepting anyway (may belong to alfred_users table)")}catch{}return mg(e)}let s=t??this.guessPlatformFromFormat(e);if(!s)throw new Error(`IdentityResolver.resolveOwnerFromConfig: "${e.slice(0,20)}" ist kein UUID-Format und keine platform-hint angegeben. Setze ALFRED_OWNER_PLATFORM=telegram (oder matrix/discord/etc.) oder ALFRED_OWNER_USER_ID direkt auf den DB-UUID.`);let n=await this.users.findOrCreate(s,e),i=fc(n.id);if(!i)throw new Error(`IdentityResolver: findOrCreate returned non-UUID id "${n.id}"`);return this.logger.info({platform:s,platformUserId:e.slice(0,12)+"\u2026",resolvedUUID:i.slice(0,8)+"\u2026"},"v804 owner platform-id resolved to UUID"),i}async resolveMasterId(e){try{let t=await this.users.getMasterUserId(e);return fc(t)??e}catch(t){return this.logger.debug({err:t,userId:e.slice(0,8)},"v804 getMasterUserId failed, returning original"),e}}async findProjectOwner(e){if(!this.projects)return null;try{let t=await this.projects.getByIdAnyOwner(e);return t?fc(t.userId)??null:null}catch(t){return this.logger.debug({err:t,projectId:e},"v804 findProjectOwner failed"),null}}guessPlatformFromFormat(e){if(/^\d{6,15}$/.test(e))return"telegram";if(/^@[^:]+:[\w.-]+$/.test(e))return"matrix"}}});var YL={};Le(YL,{UserIdAuditScanner:()=>RE});import{randomUUID as OW}from"node:crypto";var DW,RE,ZL=A(()=>{"use strict";Zi();DW=[{table:"memories",pk:"id",uidColumn:"user_id"},{table:"documents",pk:"id",uidColumn:"user_id"},{table:"document_chunks",pk:"id",uidColumn:"user_id"},{table:"todos",pk:"id",uidColumn:"user_id"},{table:"notes",pk:"id",uidColumn:"user_id"},{table:"reminders",pk:"id",uidColumn:"user_id"},{table:"conversations",pk:"id",uidColumn:"user_id"},{table:"projects",pk:"id",uidColumn:"user_id"},{table:"background_tasks",pk:"id",uidColumn:"user_id"},{table:"agent_sessions",pk:"id",uidColumn:"user_id"},{table:"sandboxes",pk:"id",uidColumn:"user_id"},{table:"project_automations",pk:"id",uidColumn:"user_id"},{table:"goals",pk:"id",uidColumn:"user_id"},{table:"runbooks",pk:"id",uidColumn:"user_id"},{table:"insights",pk:"id",uidColumn:"user_id"}],RE=class{static{m(this,"UserIdAuditScanner")}adapter;logger;targets;constructor(e,t,s=DW){this.adapter=e,this.logger=t,this.targets=s}async scan(){let e={scanned:0,flaggedNew:0,alreadyFlagged:0,skippedTables:[]},t=new Date().toISOString();for(let s of this.targets)try{let n=await this.adapter.query(`SELECT ${s.pk} AS row_id, ${s.uidColumn} AS uid FROM ${s.table} WHERE ${s.uidColumn} IS NOT NULL`);for(let i of n){e.scanned+=1;let r=gg(i.uid);if(r==="uuid")continue;if(await this.adapter.queryOne("SELECT id FROM user_id_format_audit WHERE table_name = ? AND column_name = ? AND row_id = ?",[s.table,s.uidColumn,String(i.row_id)])){e.alreadyFlagged+=1;continue}await this.adapter.execute(`INSERT INTO user_id_format_audit (id, table_name, column_name, row_id, user_id_value, format_class, detected_at)
7819
- VALUES (?, ?, ?, ?, ?, ?, ?)`,[OW(),s.table,s.uidColumn,String(i.row_id),i.uid,r,t]),e.flaggedNew+=1}}catch(n){let i=n.message??"";if(/no such table|does not exist|relation .* does not exist/i.test(i)){e.skippedTables.push(s.table);continue}this.logger.warn({err:n,table:s.table},"v808 audit-scan failed for table (continuing)")}return e.flaggedNew>0?this.logger.warn({scanned:e.scanned,flaggedNew:e.flaggedNew,alreadyFlagged:e.alreadyFlagged,skipped:e.skippedTables.length},"v808 UserIdAudit: non-UUID user_id rows detected \u2014 see user_id_format_audit table"):this.logger.debug({scanned:e.scanned,alreadyFlagged:e.alreadyFlagged,skipped:e.skippedTables.length},"v808 UserIdAudit: scan complete, all user_id rows have UUID format"),e}}});var lm={};Le(lm,{default:()=>MW});var MW,dm=A(()=>{MW={name:"@madh-io/alfred-ai",version:"0.19.0-jarvis.1196",description:"Alfred \u2014 Personal AI Assistant across Telegram, Discord, WhatsApp, Matrix & Signal",type:"module",bin:{alfred:"bundle/index.js"},files:["bundle"],scripts:{build:"tsc",bundle:"node ../../scripts/bundle.mjs",prepublishOnly:"npm run build && npm run bundle",clean:"rm -rf dist bundle *.tsbuildinfo"},keywords:["ai","assistant","chatbot","telegram","discord","whatsapp","matrix","signal","claude","openai","ollama"],license:"MIT",repository:{type:"git",url:"https://github.com/madh99/alfred-ai.git"},homepage:"https://github.com/madh99/alfred-ai#readme",bugs:{url:"https://github.com/madh99/alfred-ai/issues"},dependencies:{"@anthropic-ai/sdk":"^0.105.0","@google/genai":"^1.45.0","@modelcontextprotocol/sdk":"^1.12.1","better-sqlite3":"^11.8.0",botbuilder:"^4.23.0",ccxt:"^4.4.0","discord.js":"^14.18.0",docx:"^9.0.0",dotenv:"^16.4.0",exceljs:"^4.4.0",grammy:"^1.35.0",imapflow:"^1.2.10","js-yaml":"^4.1.0",mammoth:"^1.8.0",mqtt:"^5.0.0",nodemailer:"^8.0.1",openai:"^6.44.0","pdf-parse":"^1.1.1",pdfkit:"^0.16.0",pino:"^9.6.0","pino-pretty":"^13.0.0",puppeteer:"^24.0.0","puppeteer-core":"^24.0.0","rss-parser":"^3.13.0",sharp:"^0.34.0",sonos:"^1.14.0",undici:"^7.10.0","youtube-transcript":"^1.3.0",zod:"^3.24.0"},optionalDependencies:{"@aws-sdk/client-s3":"^3.700.0","@influxdata/influxdb-client":"^1.35.0","@whiskeysockets/baileys":"6.7.21",googleapis:"^144.0.0","hafas-client":"^6.3.0",ioredis:"^5.4.0","matrix-bot-sdk":"^0.8.0",mongodb:"^6.12.0",mssql:"^11.0.0",mysql2:"^3.12.0",pg:"^8.13.0",tsdav:"^2.1.0"},devDependencies:{"@alfred/config":"workspace:*","@alfred/core":"workspace:*","@alfred/logger":"workspace:*","@alfred/mcp-server":"workspace:*","@alfred/security":"workspace:*","@alfred/storage":"workspace:*","@alfred/types":"workspace:*","@types/js-yaml":"^4.0.9"},publishConfig:{access:"public"},engines:{node:">=20"}}});var QL={};Le(QL,{collectNodeMetrics:()=>um});import Vo from"node:os";import{statfs as PW}from"node:fs/promises";async function um(l){let e=[],t=new Set;for(let s of l)if(s)try{let n=await PW(s),i=Number(n.blocks)*Number(n.bsize),r=Number(n.bavail)*Number(n.bsize);if(i<=0)continue;let a=`${i}:${Number(n.bfree)}:${Number(n.type)}`;if(t.has(a))continue;t.add(a),e.push({path:s,totalGb:NE(i/1024**3),freeGb:NE(r/1024**3),usedPct:Math.min(100,Math.max(0,Math.round((1-r/i)*100)))})}catch{}return{cpuLoad1m:NE(Vo.loadavg()[0]??0),cpuCores:Vo.cpus().length,memTotalMb:Math.round(Vo.totalmem()/1024**2),memFreeMb:Math.round(Vo.freemem()/1024**2),rssMb:Math.round(process.memoryUsage().rss/1024**2),nodeJs:process.version,platform:Vo.platform(),osRelease:Vo.release(),disks:e}}function NE(l){return Math.round(l*10)/10}var hm=A(()=>{"use strict";m(um,"collectNodeMetrics");m(NE,"round1")});var tO={};Le(tO,{ClusterManager:()=>Od});import eO from"node:os";var Od,$E=A(()=>{"use strict";hm();Od=class{static{m(this,"ClusterManager")}config;logger;redis;heartbeatTimer;heartbeatMs;failoverMs;constructor(e,t){this.config=e,this.logger=t,this.heartbeatMs=e.heartbeatIntervalMs??1e4,this.failoverMs=e.failoverAfterMs??3e4}async connect(){try{let e;try{e=(await Function('return import("ioredis")')()).default}catch{throw new Error('Cluster mode requires the "ioredis" package. Install it: npm install ioredis')}this.redis=new e(this.config.redisUrl),this.logger.info({nodeId:this.config.nodeId,role:this.config.role},"Cluster manager connected to Redis")}catch(e){this.logger.error({err:e},"Failed to connect to Redis \u2014 cluster features disabled");return}this.heartbeatTimer=setInterval(()=>this.sendHeartbeat(),this.heartbeatMs),await this.sendHeartbeat()}async disconnect(){this.heartbeatTimer&&clearInterval(this.heartbeatTimer),await this.redis?.quit()}nodeInfo;setNodeInfo(e){this.nodeInfo=e}async collectMetricsSafe(){try{return JSON.stringify(await um(this.nodeInfo?.diskPaths??["/"]))}catch{return"{}"}}async sendHeartbeat(){try{let e=Math.floor(process.uptime()),t=JSON.stringify({id:this.config.nodeId,role:this.config.role,timestamp:new Date().toISOString(),uptime:e,host:eO.hostname(),version:this.nodeInfo?.version??"",adapters:this.nodeInfo?.adapters?.()??[]});await this.redis.set(`alfred:cluster:heartbeat:${this.config.nodeId}`,t,"EX",Math.ceil(this.failoverMs/1e3))}catch(e){this.logger.warn({err:e},"Heartbeat send failed")}}async getNodes(){if(!this.redis)return[];try{let e=await this.redis.keys("alfred:cluster:heartbeat:*"),t=[];for(let s of e){let n=await this.redis.get(s);if(n)try{let i=JSON.parse(n);t.push({...i,healthy:!0})}catch{}}return t}catch{return[]}}async acquireLock(e,t=3e5){if(!this.redis)return!0;try{return await this.redis.set(`alfred:lock:${e}`,this.config.nodeId,"NX","PX",t)==="OK"}catch{return!0}}async releaseLock(e){if(this.redis)try{await this.redis.get(`alfred:lock:${e}`)===this.config.nodeId&&await this.redis.del(`alfred:lock:${e}`)}catch{}}async publish(e,t){if(this.redis)try{await this.redis.publish(`alfred:${e}`,JSON.stringify({...t,nodeId:this.config.nodeId}))}catch(s){this.logger.warn({err:s,channel:e},"Cluster publish failed")}}async subscribe(e,t){if(this.redis)try{let s=this.redis.duplicate();await s.subscribe(`alfred:${e}`),s.on("message",(n,i)=>{try{let r=JSON.parse(i);r.nodeId!==this.config.nodeId&&t(r)}catch{}})}catch(s){this.logger.warn({err:s,channel:e},"Cluster subscribe failed")}}async routeMessage(e,t,s){await this.publish("messages",{type:"send_message",targetPlatform:e,chatId:t,text:s})}failoverCheckTimer;onFailoverCallback;startFailoverMonitoring(e){this.config.role==="secondary"&&(this.onFailoverCallback=e,this.failoverCheckTimer=setInterval(async()=>{try{let t=await this.getNodes(),s=new Set(t.map(n=>n.id));for(let n of this.config.nodes??[])n.id!==this.config.nodeId&&(s.has(n.id)||(this.logger.warn({deadNodeId:n.id},"Node heartbeat missing \u2014 failover triggered"),this.onFailoverCallback?.(n.id)))}catch(t){this.logger.debug({err:t},"Failover check error")}},this.failoverMs))}stopFailoverMonitoring(){this.failoverCheckTimer&&clearInterval(this.failoverCheckTimer)}async announceTakeover(e,t){await this.publish("events",{type:"failover",deadNodeId:e,takenOverBy:this.config.nodeId,adapters:t}),this.logger.info({deadNodeId:e,adapters:t},"Failover: adapters taken over")}async syncConfig(e,t){await this.publish("config-sync",{type:e,...t})}async onConfigSync(e){await this.subscribe("config-sync",t=>{let{type:s,...n}=t;e(s,n)})}get nodeId(){return this.config.nodeId}get role(){return this.config.role??"node"}get isConnected(){return!!this.redis}pgAdapter;pgHeartbeatTimer;startPgHeartbeat(e){this.pgAdapter=e,this.pgHeartbeatTimer=setInterval(()=>this.sendPgHeartbeat(),this.heartbeatMs),this.sendPgHeartbeat()}async sendPgHeartbeat(){if(this.pgAdapter)try{let e=new Date().toISOString(),t=Math.floor(process.uptime()),s=new Date(Date.now()-t*1e3).toISOString(),n=await this.collectMetricsSafe();await this.pgAdapter.execute(`INSERT INTO node_heartbeats (node_id, host, last_seen_at, started_at, uptime_s, adapters, version, metrics)
7819
+ VALUES (?, ?, ?, ?, ?, ?, ?)`,[OW(),s.table,s.uidColumn,String(i.row_id),i.uid,r,t]),e.flaggedNew+=1}}catch(n){let i=n.message??"";if(/no such table|does not exist|relation .* does not exist/i.test(i)){e.skippedTables.push(s.table);continue}this.logger.warn({err:n,table:s.table},"v808 audit-scan failed for table (continuing)")}return e.flaggedNew>0?this.logger.warn({scanned:e.scanned,flaggedNew:e.flaggedNew,alreadyFlagged:e.alreadyFlagged,skipped:e.skippedTables.length},"v808 UserIdAudit: non-UUID user_id rows detected \u2014 see user_id_format_audit table"):this.logger.debug({scanned:e.scanned,alreadyFlagged:e.alreadyFlagged,skipped:e.skippedTables.length},"v808 UserIdAudit: scan complete, all user_id rows have UUID format"),e}}});var lm={};Le(lm,{default:()=>MW});var MW,dm=A(()=>{MW={name:"@madh-io/alfred-ai",version:"0.19.0-jarvis.1197",description:"Alfred \u2014 Personal AI Assistant across Telegram, Discord, WhatsApp, Matrix & Signal",type:"module",bin:{alfred:"bundle/index.js"},files:["bundle"],scripts:{build:"tsc",bundle:"node ../../scripts/bundle.mjs",prepublishOnly:"npm run build && npm run bundle",clean:"rm -rf dist bundle *.tsbuildinfo"},keywords:["ai","assistant","chatbot","telegram","discord","whatsapp","matrix","signal","claude","openai","ollama"],license:"MIT",repository:{type:"git",url:"https://github.com/madh99/alfred-ai.git"},homepage:"https://github.com/madh99/alfred-ai#readme",bugs:{url:"https://github.com/madh99/alfred-ai/issues"},dependencies:{"@anthropic-ai/sdk":"^0.105.0","@google/genai":"^1.45.0","@modelcontextprotocol/sdk":"^1.12.1","better-sqlite3":"^11.8.0",botbuilder:"^4.23.0",ccxt:"^4.4.0","discord.js":"^14.18.0",docx:"^9.0.0",dotenv:"^16.4.0",exceljs:"^4.4.0",grammy:"^1.35.0",imapflow:"^1.2.10","js-yaml":"^4.1.0",mammoth:"^1.8.0",mqtt:"^5.0.0",nodemailer:"^8.0.1",openai:"^6.44.0","pdf-parse":"^1.1.1",pdfkit:"^0.16.0",pino:"^9.6.0","pino-pretty":"^13.0.0",puppeteer:"^24.0.0","puppeteer-core":"^24.0.0","rss-parser":"^3.13.0",sharp:"^0.34.0",sonos:"^1.14.0",undici:"^7.10.0","youtube-transcript":"^1.3.0",zod:"^3.24.0"},optionalDependencies:{"@aws-sdk/client-s3":"^3.700.0","@influxdata/influxdb-client":"^1.35.0","@whiskeysockets/baileys":"6.7.21",googleapis:"^144.0.0","hafas-client":"^6.3.0",ioredis:"^5.4.0","matrix-bot-sdk":"^0.8.0",mongodb:"^6.12.0",mssql:"^11.0.0",mysql2:"^3.12.0",pg:"^8.13.0",tsdav:"^2.1.0"},devDependencies:{"@alfred/config":"workspace:*","@alfred/core":"workspace:*","@alfred/logger":"workspace:*","@alfred/mcp-server":"workspace:*","@alfred/security":"workspace:*","@alfred/storage":"workspace:*","@alfred/types":"workspace:*","@types/js-yaml":"^4.0.9"},publishConfig:{access:"public"},engines:{node:">=20"}}});var QL={};Le(QL,{collectNodeMetrics:()=>um});import Vo from"node:os";import{statfs as PW}from"node:fs/promises";async function um(l){let e=[],t=new Set;for(let s of l)if(s)try{let n=await PW(s),i=Number(n.blocks)*Number(n.bsize),r=Number(n.bavail)*Number(n.bsize);if(i<=0)continue;let a=`${i}:${Number(n.bfree)}:${Number(n.type)}`;if(t.has(a))continue;t.add(a),e.push({path:s,totalGb:NE(i/1024**3),freeGb:NE(r/1024**3),usedPct:Math.min(100,Math.max(0,Math.round((1-r/i)*100)))})}catch{}return{cpuLoad1m:NE(Vo.loadavg()[0]??0),cpuCores:Vo.cpus().length,memTotalMb:Math.round(Vo.totalmem()/1024**2),memFreeMb:Math.round(Vo.freemem()/1024**2),rssMb:Math.round(process.memoryUsage().rss/1024**2),nodeJs:process.version,platform:Vo.platform(),osRelease:Vo.release(),disks:e}}function NE(l){return Math.round(l*10)/10}var hm=A(()=>{"use strict";m(um,"collectNodeMetrics");m(NE,"round1")});var tO={};Le(tO,{ClusterManager:()=>Od});import eO from"node:os";var Od,$E=A(()=>{"use strict";hm();Od=class{static{m(this,"ClusterManager")}config;logger;redis;heartbeatTimer;heartbeatMs;failoverMs;constructor(e,t){this.config=e,this.logger=t,this.heartbeatMs=e.heartbeatIntervalMs??1e4,this.failoverMs=e.failoverAfterMs??3e4}async connect(){try{let e;try{e=(await Function('return import("ioredis")')()).default}catch{throw new Error('Cluster mode requires the "ioredis" package. Install it: npm install ioredis')}this.redis=new e(this.config.redisUrl),this.logger.info({nodeId:this.config.nodeId,role:this.config.role},"Cluster manager connected to Redis")}catch(e){this.logger.error({err:e},"Failed to connect to Redis \u2014 cluster features disabled");return}this.heartbeatTimer=setInterval(()=>this.sendHeartbeat(),this.heartbeatMs),await this.sendHeartbeat()}async disconnect(){this.heartbeatTimer&&clearInterval(this.heartbeatTimer),await this.redis?.quit()}nodeInfo;setNodeInfo(e){this.nodeInfo=e}async collectMetricsSafe(){try{return JSON.stringify(await um(this.nodeInfo?.diskPaths??["/"]))}catch{return"{}"}}async sendHeartbeat(){try{let e=Math.floor(process.uptime()),t=JSON.stringify({id:this.config.nodeId,role:this.config.role,timestamp:new Date().toISOString(),uptime:e,host:eO.hostname(),version:this.nodeInfo?.version??"",adapters:this.nodeInfo?.adapters?.()??[]});await this.redis.set(`alfred:cluster:heartbeat:${this.config.nodeId}`,t,"EX",Math.ceil(this.failoverMs/1e3))}catch(e){this.logger.warn({err:e},"Heartbeat send failed")}}async getNodes(){if(!this.redis)return[];try{let e=await this.redis.keys("alfred:cluster:heartbeat:*"),t=[];for(let s of e){let n=await this.redis.get(s);if(n)try{let i=JSON.parse(n);t.push({...i,healthy:!0})}catch{}}return t}catch{return[]}}async acquireLock(e,t=3e5){if(!this.redis)return!0;try{return await this.redis.set(`alfred:lock:${e}`,this.config.nodeId,"NX","PX",t)==="OK"}catch{return!0}}async releaseLock(e){if(this.redis)try{await this.redis.get(`alfred:lock:${e}`)===this.config.nodeId&&await this.redis.del(`alfred:lock:${e}`)}catch{}}async publish(e,t){if(this.redis)try{await this.redis.publish(`alfred:${e}`,JSON.stringify({...t,nodeId:this.config.nodeId}))}catch(s){this.logger.warn({err:s,channel:e},"Cluster publish failed")}}async subscribe(e,t){if(this.redis)try{let s=this.redis.duplicate();await s.subscribe(`alfred:${e}`),s.on("message",(n,i)=>{try{let r=JSON.parse(i);r.nodeId!==this.config.nodeId&&t(r)}catch{}})}catch(s){this.logger.warn({err:s,channel:e},"Cluster subscribe failed")}}async routeMessage(e,t,s){await this.publish("messages",{type:"send_message",targetPlatform:e,chatId:t,text:s})}failoverCheckTimer;onFailoverCallback;startFailoverMonitoring(e){this.config.role==="secondary"&&(this.onFailoverCallback=e,this.failoverCheckTimer=setInterval(async()=>{try{let t=await this.getNodes(),s=new Set(t.map(n=>n.id));for(let n of this.config.nodes??[])n.id!==this.config.nodeId&&(s.has(n.id)||(this.logger.warn({deadNodeId:n.id},"Node heartbeat missing \u2014 failover triggered"),this.onFailoverCallback?.(n.id)))}catch(t){this.logger.debug({err:t},"Failover check error")}},this.failoverMs))}stopFailoverMonitoring(){this.failoverCheckTimer&&clearInterval(this.failoverCheckTimer)}async announceTakeover(e,t){await this.publish("events",{type:"failover",deadNodeId:e,takenOverBy:this.config.nodeId,adapters:t}),this.logger.info({deadNodeId:e,adapters:t},"Failover: adapters taken over")}async syncConfig(e,t){await this.publish("config-sync",{type:e,...t})}async onConfigSync(e){await this.subscribe("config-sync",t=>{let{type:s,...n}=t;e(s,n)})}get nodeId(){return this.config.nodeId}get role(){return this.config.role??"node"}get isConnected(){return!!this.redis}pgAdapter;pgHeartbeatTimer;startPgHeartbeat(e){this.pgAdapter=e,this.pgHeartbeatTimer=setInterval(()=>this.sendPgHeartbeat(),this.heartbeatMs),this.sendPgHeartbeat()}async sendPgHeartbeat(){if(this.pgAdapter)try{let e=new Date().toISOString(),t=Math.floor(process.uptime()),s=new Date(Date.now()-t*1e3).toISOString(),n=await this.collectMetricsSafe();await this.pgAdapter.execute(`INSERT INTO node_heartbeats (node_id, host, last_seen_at, started_at, uptime_s, adapters, version, metrics)
7820
7820
  VALUES (?, ?, ?, ?, ?, ?, ?, ?)
7821
7821
  ON CONFLICT (node_id) DO UPDATE SET
7822
7822
  host = excluded.host,
@@ -1 +1 @@
1
- <!DOCTYPE html><!--dgpjnZ5_RfTfsm5lTugzB--><html lang="de"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="/alfred/_next/static/css/f0761175a8b5e35f.css" data-precedence="next"/><link rel="preload" as="script" fetchPriority="low" href="/alfred/_next/static/chunks/webpack-a80a11427021d142.js"/><script src="/alfred/_next/static/chunks/8e6518bb-ac69cad76942bec4.js" async=""></script><script src="/alfred/_next/static/chunks/743-8d9b5b61ab50b7b3.js" async=""></script><script src="/alfred/_next/static/chunks/main-app-bf91f7268c1fdab4.js" async=""></script><script src="/alfred/_next/static/chunks/719-2880b6276161d80c.js" async=""></script><script src="/alfred/_next/static/chunks/app/layout-893502dcb97a8de9.js" async=""></script><meta name="robots" content="noindex"/><title>Alfred AI</title><meta name="description" content="Self-hosted AI Assistant"/><script src="/alfred/_next/static/chunks/polyfills-42372ed130431b0a.js" noModule=""></script></head><body class="bg-[#0a0a0a] text-gray-200 h-screen overflow-hidden"><div hidden=""><!--$--><!--/$--></div><div class="flex items-center justify-center h-screen bg-[#0a0a0a]"><div class="text-gray-400">Verbinde...</div></div><script src="/alfred/_next/static/chunks/webpack-a80a11427021d142.js" id="_R_" async=""></script><script>(self.__next_f=self.__next_f||[]).push([0])</script><script>self.__next_f.push([1,"1:\"$Sreact.fragment\"\n2:I[8719,[\"719\",\"static/chunks/719-2880b6276161d80c.js\",\"177\",\"static/chunks/app/layout-893502dcb97a8de9.js\"],\"ConfigProvider\"]\n3:I[6117,[\"719\",\"static/chunks/719-2880b6276161d80c.js\",\"177\",\"static/chunks/app/layout-893502dcb97a8de9.js\"],\"AuthGate\"]\n4:I[4314,[\"719\",\"static/chunks/719-2880b6276161d80c.js\",\"177\",\"static/chunks/app/layout-893502dcb97a8de9.js\"],\"Sidebar\"]\n5:I[8954,[],\"\"]\n6:I[5640,[],\"\"]\n7:I[2051,[],\"OutletBoundary\"]\n9:I[6658,[],\"AsyncMetadataOutlet\"]\nb:I[2051,[],\"ViewportBoundary\"]\nd:I[2051,[],\"MetadataBoundary\"]\ne:\"$Sreact.suspense\"\n10:I[7698,[],\"\"]\n:HL[\"/alfred/_next/static/css/f0761175a8b5e35f.css\",\"style\"]\n"])</script><script>self.__next_f.push([1,"0:{\"P\":null,\"b\":\"dgpjnZ5-RfTfsm5lTugzB\",\"p\":\"/alfred\",\"c\":[\"\",\"_not-found\",\"\"],\"i\":false,\"f\":[[[\"\",{\"children\":[\"/_not-found\",{\"children\":[\"__PAGE__\",{}]}]},\"$undefined\",\"$undefined\",true],[\"\",[\"$\",\"$1\",\"c\",{\"children\":[[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/alfred/_next/static/css/f0761175a8b5e35f.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}]],[\"$\",\"html\",null,{\"lang\":\"de\",\"children\":[\"$\",\"body\",null,{\"className\":\"bg-[#0a0a0a] text-gray-200 h-screen overflow-hidden\",\"children\":[\"$\",\"$L2\",null,{\"children\":[\"$\",\"$L3\",null,{\"children\":[\"$\",\"div\",null,{\"className\":\"flex h-full\",\"children\":[[\"$\",\"$L4\",null,{}],[\"$\",\"main\",null,{\"className\":\"flex-1 overflow-y-auto\",\"children\":[\"$\",\"$L5\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L6\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]}]]}]}]}]}]}]]}],{\"children\":[\"/_not-found\",[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$L5\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L6\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}],{\"children\":[\"__PAGE__\",[\"$\",\"$1\",\"c\",{\"children\":[[[\"$\",\"title\",null,{\"children\":\"404: This page could not be found.\"}],[\"$\",\"div\",null,{\"style\":{\"fontFamily\":\"system-ui,\\\"Segoe UI\\\",Roboto,Helvetica,Arial,sans-serif,\\\"Apple Color Emoji\\\",\\\"Segoe UI Emoji\\\"\",\"height\":\"100vh\",\"textAlign\":\"center\",\"display\":\"flex\",\"flexDirection\":\"column\",\"alignItems\":\"center\",\"justifyContent\":\"center\"},\"children\":[\"$\",\"div\",null,{\"children\":[[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}\"}}],[\"$\",\"h1\",null,{\"className\":\"next-error-h1\",\"style\":{\"display\":\"inline-block\",\"margin\":\"0 20px 0 0\",\"padding\":\"0 23px 0 0\",\"fontSize\":24,\"fontWeight\":500,\"verticalAlign\":\"top\",\"lineHeight\":\"49px\"},\"children\":404}],[\"$\",\"div\",null,{\"style\":{\"display\":\"inline-block\"},\"children\":[\"$\",\"h2\",null,{\"style\":{\"fontSize\":14,\"fontWeight\":400,\"lineHeight\":\"49px\",\"margin\":0},\"children\":\"This page could not be found.\"}]}]]}]}]],null,[\"$\",\"$L7\",null,{\"children\":[\"$L8\",[\"$\",\"$L9\",null,{\"promise\":\"$@a\"}]]}]]}],{},null,false]},null,false]},null,false],[\"$\",\"$1\",\"h\",{\"children\":[[\"$\",\"meta\",null,{\"name\":\"robots\",\"content\":\"noindex\"}],[[\"$\",\"$Lb\",null,{\"children\":\"$Lc\"}],null],[\"$\",\"$Ld\",null,{\"children\":[\"$\",\"div\",null,{\"hidden\":true,\"children\":[\"$\",\"$e\",null,{\"fallback\":null,\"children\":\"$Lf\"}]}]}]]}],false]],\"m\":\"$undefined\",\"G\":[\"$10\",[]],\"s\":false,\"S\":true}\n"])</script><script>self.__next_f.push([1,"c:[[\"$\",\"meta\",\"0\",{\"charSet\":\"utf-8\"}],[\"$\",\"meta\",\"1\",{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1\"}]]\n8:null\n"])</script><script>self.__next_f.push([1,"a:{\"metadata\":[[\"$\",\"title\",\"0\",{\"children\":\"Alfred AI\"}],[\"$\",\"meta\",\"1\",{\"name\":\"description\",\"content\":\"Self-hosted AI Assistant\"}]],\"error\":null,\"digest\":\"$undefined\"}\n"])</script><script>self.__next_f.push([1,"f:\"$a:metadata\"\n"])</script></body></html>
1
+ <!DOCTYPE html><!--exmjf2Jpr25IuJk0JqSJp--><html lang="de"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="/alfred/_next/static/css/f0761175a8b5e35f.css" data-precedence="next"/><link rel="preload" as="script" fetchPriority="low" href="/alfred/_next/static/chunks/webpack-a80a11427021d142.js"/><script src="/alfred/_next/static/chunks/8e6518bb-ac69cad76942bec4.js" async=""></script><script src="/alfred/_next/static/chunks/743-8d9b5b61ab50b7b3.js" async=""></script><script src="/alfred/_next/static/chunks/main-app-bf91f7268c1fdab4.js" async=""></script><script src="/alfred/_next/static/chunks/719-2880b6276161d80c.js" async=""></script><script src="/alfred/_next/static/chunks/app/layout-893502dcb97a8de9.js" async=""></script><meta name="robots" content="noindex"/><title>Alfred AI</title><meta name="description" content="Self-hosted AI Assistant"/><script src="/alfred/_next/static/chunks/polyfills-42372ed130431b0a.js" noModule=""></script></head><body class="bg-[#0a0a0a] text-gray-200 h-screen overflow-hidden"><div hidden=""><!--$--><!--/$--></div><div class="flex items-center justify-center h-screen bg-[#0a0a0a]"><div class="text-gray-400">Verbinde...</div></div><script src="/alfred/_next/static/chunks/webpack-a80a11427021d142.js" id="_R_" async=""></script><script>(self.__next_f=self.__next_f||[]).push([0])</script><script>self.__next_f.push([1,"1:\"$Sreact.fragment\"\n2:I[8719,[\"719\",\"static/chunks/719-2880b6276161d80c.js\",\"177\",\"static/chunks/app/layout-893502dcb97a8de9.js\"],\"ConfigProvider\"]\n3:I[6117,[\"719\",\"static/chunks/719-2880b6276161d80c.js\",\"177\",\"static/chunks/app/layout-893502dcb97a8de9.js\"],\"AuthGate\"]\n4:I[4314,[\"719\",\"static/chunks/719-2880b6276161d80c.js\",\"177\",\"static/chunks/app/layout-893502dcb97a8de9.js\"],\"Sidebar\"]\n5:I[8954,[],\"\"]\n6:I[5640,[],\"\"]\n7:I[2051,[],\"OutletBoundary\"]\n9:I[6658,[],\"AsyncMetadataOutlet\"]\nb:I[2051,[],\"ViewportBoundary\"]\nd:I[2051,[],\"MetadataBoundary\"]\ne:\"$Sreact.suspense\"\n10:I[7698,[],\"\"]\n:HL[\"/alfred/_next/static/css/f0761175a8b5e35f.css\",\"style\"]\n"])</script><script>self.__next_f.push([1,"0:{\"P\":null,\"b\":\"exmjf2Jpr25IuJk0JqSJp\",\"p\":\"/alfred\",\"c\":[\"\",\"_not-found\",\"\"],\"i\":false,\"f\":[[[\"\",{\"children\":[\"/_not-found\",{\"children\":[\"__PAGE__\",{}]}]},\"$undefined\",\"$undefined\",true],[\"\",[\"$\",\"$1\",\"c\",{\"children\":[[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/alfred/_next/static/css/f0761175a8b5e35f.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}]],[\"$\",\"html\",null,{\"lang\":\"de\",\"children\":[\"$\",\"body\",null,{\"className\":\"bg-[#0a0a0a] text-gray-200 h-screen overflow-hidden\",\"children\":[\"$\",\"$L2\",null,{\"children\":[\"$\",\"$L3\",null,{\"children\":[\"$\",\"div\",null,{\"className\":\"flex h-full\",\"children\":[[\"$\",\"$L4\",null,{}],[\"$\",\"main\",null,{\"className\":\"flex-1 overflow-y-auto\",\"children\":[\"$\",\"$L5\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L6\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]}]]}]}]}]}]}]]}],{\"children\":[\"/_not-found\",[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$L5\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L6\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}],{\"children\":[\"__PAGE__\",[\"$\",\"$1\",\"c\",{\"children\":[[[\"$\",\"title\",null,{\"children\":\"404: This page could not be found.\"}],[\"$\",\"div\",null,{\"style\":{\"fontFamily\":\"system-ui,\\\"Segoe UI\\\",Roboto,Helvetica,Arial,sans-serif,\\\"Apple Color Emoji\\\",\\\"Segoe UI Emoji\\\"\",\"height\":\"100vh\",\"textAlign\":\"center\",\"display\":\"flex\",\"flexDirection\":\"column\",\"alignItems\":\"center\",\"justifyContent\":\"center\"},\"children\":[\"$\",\"div\",null,{\"children\":[[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}\"}}],[\"$\",\"h1\",null,{\"className\":\"next-error-h1\",\"style\":{\"display\":\"inline-block\",\"margin\":\"0 20px 0 0\",\"padding\":\"0 23px 0 0\",\"fontSize\":24,\"fontWeight\":500,\"verticalAlign\":\"top\",\"lineHeight\":\"49px\"},\"children\":404}],[\"$\",\"div\",null,{\"style\":{\"display\":\"inline-block\"},\"children\":[\"$\",\"h2\",null,{\"style\":{\"fontSize\":14,\"fontWeight\":400,\"lineHeight\":\"49px\",\"margin\":0},\"children\":\"This page could not be found.\"}]}]]}]}]],null,[\"$\",\"$L7\",null,{\"children\":[\"$L8\",[\"$\",\"$L9\",null,{\"promise\":\"$@a\"}]]}]]}],{},null,false]},null,false]},null,false],[\"$\",\"$1\",\"h\",{\"children\":[[\"$\",\"meta\",null,{\"name\":\"robots\",\"content\":\"noindex\"}],[[\"$\",\"$Lb\",null,{\"children\":\"$Lc\"}],null],[\"$\",\"$Ld\",null,{\"children\":[\"$\",\"div\",null,{\"hidden\":true,\"children\":[\"$\",\"$e\",null,{\"fallback\":null,\"children\":\"$Lf\"}]}]}]]}],false]],\"m\":\"$undefined\",\"G\":[\"$10\",[]],\"s\":false,\"S\":true}\n"])</script><script>self.__next_f.push([1,"c:[[\"$\",\"meta\",\"0\",{\"charSet\":\"utf-8\"}],[\"$\",\"meta\",\"1\",{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1\"}]]\n8:null\n"])</script><script>self.__next_f.push([1,"a:{\"metadata\":[[\"$\",\"title\",\"0\",{\"children\":\"Alfred AI\"}],[\"$\",\"meta\",\"1\",{\"name\":\"description\",\"content\":\"Self-hosted AI Assistant\"}]],\"error\":null,\"digest\":\"$undefined\"}\n"])</script><script>self.__next_f.push([1,"f:\"$a:metadata\"\n"])</script></body></html>
@@ -1 +1 @@
1
- <!DOCTYPE html><!--dgpjnZ5_RfTfsm5lTugzB--><html lang="de"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="/alfred/_next/static/css/f0761175a8b5e35f.css" data-precedence="next"/><link rel="preload" as="script" fetchPriority="low" href="/alfred/_next/static/chunks/webpack-a80a11427021d142.js"/><script src="/alfred/_next/static/chunks/8e6518bb-ac69cad76942bec4.js" async=""></script><script src="/alfred/_next/static/chunks/743-8d9b5b61ab50b7b3.js" async=""></script><script src="/alfred/_next/static/chunks/main-app-bf91f7268c1fdab4.js" async=""></script><script src="/alfred/_next/static/chunks/719-2880b6276161d80c.js" async=""></script><script src="/alfred/_next/static/chunks/app/layout-893502dcb97a8de9.js" async=""></script><meta name="robots" content="noindex"/><title>Alfred AI</title><meta name="description" content="Self-hosted AI Assistant"/><script src="/alfred/_next/static/chunks/polyfills-42372ed130431b0a.js" noModule=""></script></head><body class="bg-[#0a0a0a] text-gray-200 h-screen overflow-hidden"><div hidden=""><!--$--><!--/$--></div><div class="flex items-center justify-center h-screen bg-[#0a0a0a]"><div class="text-gray-400">Verbinde...</div></div><script src="/alfred/_next/static/chunks/webpack-a80a11427021d142.js" id="_R_" async=""></script><script>(self.__next_f=self.__next_f||[]).push([0])</script><script>self.__next_f.push([1,"1:\"$Sreact.fragment\"\n2:I[8719,[\"719\",\"static/chunks/719-2880b6276161d80c.js\",\"177\",\"static/chunks/app/layout-893502dcb97a8de9.js\"],\"ConfigProvider\"]\n3:I[6117,[\"719\",\"static/chunks/719-2880b6276161d80c.js\",\"177\",\"static/chunks/app/layout-893502dcb97a8de9.js\"],\"AuthGate\"]\n4:I[4314,[\"719\",\"static/chunks/719-2880b6276161d80c.js\",\"177\",\"static/chunks/app/layout-893502dcb97a8de9.js\"],\"Sidebar\"]\n5:I[8954,[],\"\"]\n6:I[5640,[],\"\"]\n7:I[2051,[],\"OutletBoundary\"]\n9:I[6658,[],\"AsyncMetadataOutlet\"]\nb:I[2051,[],\"ViewportBoundary\"]\nd:I[2051,[],\"MetadataBoundary\"]\ne:\"$Sreact.suspense\"\n10:I[7698,[],\"\"]\n:HL[\"/alfred/_next/static/css/f0761175a8b5e35f.css\",\"style\"]\n"])</script><script>self.__next_f.push([1,"0:{\"P\":null,\"b\":\"dgpjnZ5-RfTfsm5lTugzB\",\"p\":\"/alfred\",\"c\":[\"\",\"_not-found\",\"\"],\"i\":false,\"f\":[[[\"\",{\"children\":[\"/_not-found\",{\"children\":[\"__PAGE__\",{}]}]},\"$undefined\",\"$undefined\",true],[\"\",[\"$\",\"$1\",\"c\",{\"children\":[[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/alfred/_next/static/css/f0761175a8b5e35f.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}]],[\"$\",\"html\",null,{\"lang\":\"de\",\"children\":[\"$\",\"body\",null,{\"className\":\"bg-[#0a0a0a] text-gray-200 h-screen overflow-hidden\",\"children\":[\"$\",\"$L2\",null,{\"children\":[\"$\",\"$L3\",null,{\"children\":[\"$\",\"div\",null,{\"className\":\"flex h-full\",\"children\":[[\"$\",\"$L4\",null,{}],[\"$\",\"main\",null,{\"className\":\"flex-1 overflow-y-auto\",\"children\":[\"$\",\"$L5\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L6\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]}]]}]}]}]}]}]]}],{\"children\":[\"/_not-found\",[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$L5\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L6\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}],{\"children\":[\"__PAGE__\",[\"$\",\"$1\",\"c\",{\"children\":[[[\"$\",\"title\",null,{\"children\":\"404: This page could not be found.\"}],[\"$\",\"div\",null,{\"style\":{\"fontFamily\":\"system-ui,\\\"Segoe UI\\\",Roboto,Helvetica,Arial,sans-serif,\\\"Apple Color Emoji\\\",\\\"Segoe UI Emoji\\\"\",\"height\":\"100vh\",\"textAlign\":\"center\",\"display\":\"flex\",\"flexDirection\":\"column\",\"alignItems\":\"center\",\"justifyContent\":\"center\"},\"children\":[\"$\",\"div\",null,{\"children\":[[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}\"}}],[\"$\",\"h1\",null,{\"className\":\"next-error-h1\",\"style\":{\"display\":\"inline-block\",\"margin\":\"0 20px 0 0\",\"padding\":\"0 23px 0 0\",\"fontSize\":24,\"fontWeight\":500,\"verticalAlign\":\"top\",\"lineHeight\":\"49px\"},\"children\":404}],[\"$\",\"div\",null,{\"style\":{\"display\":\"inline-block\"},\"children\":[\"$\",\"h2\",null,{\"style\":{\"fontSize\":14,\"fontWeight\":400,\"lineHeight\":\"49px\",\"margin\":0},\"children\":\"This page could not be found.\"}]}]]}]}]],null,[\"$\",\"$L7\",null,{\"children\":[\"$L8\",[\"$\",\"$L9\",null,{\"promise\":\"$@a\"}]]}]]}],{},null,false]},null,false]},null,false],[\"$\",\"$1\",\"h\",{\"children\":[[\"$\",\"meta\",null,{\"name\":\"robots\",\"content\":\"noindex\"}],[[\"$\",\"$Lb\",null,{\"children\":\"$Lc\"}],null],[\"$\",\"$Ld\",null,{\"children\":[\"$\",\"div\",null,{\"hidden\":true,\"children\":[\"$\",\"$e\",null,{\"fallback\":null,\"children\":\"$Lf\"}]}]}]]}],false]],\"m\":\"$undefined\",\"G\":[\"$10\",[]],\"s\":false,\"S\":true}\n"])</script><script>self.__next_f.push([1,"c:[[\"$\",\"meta\",\"0\",{\"charSet\":\"utf-8\"}],[\"$\",\"meta\",\"1\",{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1\"}]]\n8:null\n"])</script><script>self.__next_f.push([1,"a:{\"metadata\":[[\"$\",\"title\",\"0\",{\"children\":\"Alfred AI\"}],[\"$\",\"meta\",\"1\",{\"name\":\"description\",\"content\":\"Self-hosted AI Assistant\"}]],\"error\":null,\"digest\":\"$undefined\"}\n"])</script><script>self.__next_f.push([1,"f:\"$a:metadata\"\n"])</script></body></html>
1
+ <!DOCTYPE html><!--exmjf2Jpr25IuJk0JqSJp--><html lang="de"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="/alfred/_next/static/css/f0761175a8b5e35f.css" data-precedence="next"/><link rel="preload" as="script" fetchPriority="low" href="/alfred/_next/static/chunks/webpack-a80a11427021d142.js"/><script src="/alfred/_next/static/chunks/8e6518bb-ac69cad76942bec4.js" async=""></script><script src="/alfred/_next/static/chunks/743-8d9b5b61ab50b7b3.js" async=""></script><script src="/alfred/_next/static/chunks/main-app-bf91f7268c1fdab4.js" async=""></script><script src="/alfred/_next/static/chunks/719-2880b6276161d80c.js" async=""></script><script src="/alfred/_next/static/chunks/app/layout-893502dcb97a8de9.js" async=""></script><meta name="robots" content="noindex"/><title>Alfred AI</title><meta name="description" content="Self-hosted AI Assistant"/><script src="/alfred/_next/static/chunks/polyfills-42372ed130431b0a.js" noModule=""></script></head><body class="bg-[#0a0a0a] text-gray-200 h-screen overflow-hidden"><div hidden=""><!--$--><!--/$--></div><div class="flex items-center justify-center h-screen bg-[#0a0a0a]"><div class="text-gray-400">Verbinde...</div></div><script src="/alfred/_next/static/chunks/webpack-a80a11427021d142.js" id="_R_" async=""></script><script>(self.__next_f=self.__next_f||[]).push([0])</script><script>self.__next_f.push([1,"1:\"$Sreact.fragment\"\n2:I[8719,[\"719\",\"static/chunks/719-2880b6276161d80c.js\",\"177\",\"static/chunks/app/layout-893502dcb97a8de9.js\"],\"ConfigProvider\"]\n3:I[6117,[\"719\",\"static/chunks/719-2880b6276161d80c.js\",\"177\",\"static/chunks/app/layout-893502dcb97a8de9.js\"],\"AuthGate\"]\n4:I[4314,[\"719\",\"static/chunks/719-2880b6276161d80c.js\",\"177\",\"static/chunks/app/layout-893502dcb97a8de9.js\"],\"Sidebar\"]\n5:I[8954,[],\"\"]\n6:I[5640,[],\"\"]\n7:I[2051,[],\"OutletBoundary\"]\n9:I[6658,[],\"AsyncMetadataOutlet\"]\nb:I[2051,[],\"ViewportBoundary\"]\nd:I[2051,[],\"MetadataBoundary\"]\ne:\"$Sreact.suspense\"\n10:I[7698,[],\"\"]\n:HL[\"/alfred/_next/static/css/f0761175a8b5e35f.css\",\"style\"]\n"])</script><script>self.__next_f.push([1,"0:{\"P\":null,\"b\":\"exmjf2Jpr25IuJk0JqSJp\",\"p\":\"/alfred\",\"c\":[\"\",\"_not-found\",\"\"],\"i\":false,\"f\":[[[\"\",{\"children\":[\"/_not-found\",{\"children\":[\"__PAGE__\",{}]}]},\"$undefined\",\"$undefined\",true],[\"\",[\"$\",\"$1\",\"c\",{\"children\":[[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/alfred/_next/static/css/f0761175a8b5e35f.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}]],[\"$\",\"html\",null,{\"lang\":\"de\",\"children\":[\"$\",\"body\",null,{\"className\":\"bg-[#0a0a0a] text-gray-200 h-screen overflow-hidden\",\"children\":[\"$\",\"$L2\",null,{\"children\":[\"$\",\"$L3\",null,{\"children\":[\"$\",\"div\",null,{\"className\":\"flex h-full\",\"children\":[[\"$\",\"$L4\",null,{}],[\"$\",\"main\",null,{\"className\":\"flex-1 overflow-y-auto\",\"children\":[\"$\",\"$L5\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L6\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]}]]}]}]}]}]}]]}],{\"children\":[\"/_not-found\",[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$L5\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L6\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}],{\"children\":[\"__PAGE__\",[\"$\",\"$1\",\"c\",{\"children\":[[[\"$\",\"title\",null,{\"children\":\"404: This page could not be found.\"}],[\"$\",\"div\",null,{\"style\":{\"fontFamily\":\"system-ui,\\\"Segoe UI\\\",Roboto,Helvetica,Arial,sans-serif,\\\"Apple Color Emoji\\\",\\\"Segoe UI Emoji\\\"\",\"height\":\"100vh\",\"textAlign\":\"center\",\"display\":\"flex\",\"flexDirection\":\"column\",\"alignItems\":\"center\",\"justifyContent\":\"center\"},\"children\":[\"$\",\"div\",null,{\"children\":[[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}\"}}],[\"$\",\"h1\",null,{\"className\":\"next-error-h1\",\"style\":{\"display\":\"inline-block\",\"margin\":\"0 20px 0 0\",\"padding\":\"0 23px 0 0\",\"fontSize\":24,\"fontWeight\":500,\"verticalAlign\":\"top\",\"lineHeight\":\"49px\"},\"children\":404}],[\"$\",\"div\",null,{\"style\":{\"display\":\"inline-block\"},\"children\":[\"$\",\"h2\",null,{\"style\":{\"fontSize\":14,\"fontWeight\":400,\"lineHeight\":\"49px\",\"margin\":0},\"children\":\"This page could not be found.\"}]}]]}]}]],null,[\"$\",\"$L7\",null,{\"children\":[\"$L8\",[\"$\",\"$L9\",null,{\"promise\":\"$@a\"}]]}]]}],{},null,false]},null,false]},null,false],[\"$\",\"$1\",\"h\",{\"children\":[[\"$\",\"meta\",null,{\"name\":\"robots\",\"content\":\"noindex\"}],[[\"$\",\"$Lb\",null,{\"children\":\"$Lc\"}],null],[\"$\",\"$Ld\",null,{\"children\":[\"$\",\"div\",null,{\"hidden\":true,\"children\":[\"$\",\"$e\",null,{\"fallback\":null,\"children\":\"$Lf\"}]}]}]]}],false]],\"m\":\"$undefined\",\"G\":[\"$10\",[]],\"s\":false,\"S\":true}\n"])</script><script>self.__next_f.push([1,"c:[[\"$\",\"meta\",\"0\",{\"charSet\":\"utf-8\"}],[\"$\",\"meta\",\"1\",{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1\"}]]\n8:null\n"])</script><script>self.__next_f.push([1,"a:{\"metadata\":[[\"$\",\"title\",\"0\",{\"children\":\"Alfred AI\"}],[\"$\",\"meta\",\"1\",{\"name\":\"description\",\"content\":\"Self-hosted AI Assistant\"}]],\"error\":null,\"digest\":\"$undefined\"}\n"])</script><script>self.__next_f.push([1,"f:\"$a:metadata\"\n"])</script></body></html>
@@ -0,0 +1 @@
1
+ (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[74],{4875:(e,s,t)=>{"use strict";t.d(s,{LebenszeichenPage:()=>o});var a=t(8111),r=t(5271),l=t(5242),n=t(8719);function c(e){if(!e)return"—";let s=Math.round((Date.now()-Date.parse(e))/6e4);if(s<1)return"gerade eben";if(s<60)return"vor ".concat(s," min");let t=Math.round(s/60);return t<48?"vor ".concat(t," h"):"vor ".concat(Math.round(t/24)," Tagen")}function i(e){return"taeglich"===e.art?936e5:"woechentlich"===e.art?6912e5:Math.max(18e5,2*e.minuten*6e4)}let d={ok:"bg-emerald-500",warn:"bg-amber-400",bad:"bg-red-500"},h=[["vollpaesse","Vollp\xe4sse"],["rundgaenge","Rundg\xe4nge ohne LLM"],["miniPaesse","Mini-P\xe4sse"],["insightsGesendet","Insights gesendet"],["insightsAufgeschoben","aufgeschoben"],["insightsStill","still abgelegt"],["gateTreffer","Gate-Treffer"],["gateAusgesetzt","Gate ausgesetzt"],["aktionenAusgefuehrt","Aktionen ausgef\xfchrt"],["aktionenBestaetigung","zur Best\xe4tigung"],["aktionenBlockiert","blockiert"],["aktionenUebersprungen","\xfcbersprungen"],["aktionenFehlgeschlagen","fehlgeschlagen"],["vorgaengeAngelegt","Vorg\xe4nge angelegt"]];function x(e){let{zustand:s}=e;return(0,a.jsx)("span",{className:(0,l.A)("inline-block w-2.5 h-2.5 rounded-full",d[s])})}function o(){var e;let{client:s}=(0,n.U)(),[t,d]=(0,r.useState)(null),[o,m]=(0,r.useState)(!0),[g,u]=(0,r.useState)(null),p=(0,r.useCallback)(async()=>{m(!0);try{let e=await s.fetchLebenszeichen();d(e),u(e?null:"Keine Daten (Endpoint nicht verf\xfcgbar)")}catch(e){u(e.message)}finally{m(!1)}},[s]);(0,r.useEffect)(()=>{p();let e=setInterval(p,6e4);return()=>clearInterval(e)},[p]);let j=null!=(e=null==t?void 0:t.offen)?e:[];return(0,a.jsxs)("div",{className:"p-6 max-w-5xl mx-auto space-y-6",children:[(0,a.jsxs)("div",{className:"flex items-center justify-between",children:[(0,a.jsx)("h1",{className:"text-xl font-semibold text-gray-200",children:"\uD83D\uDC93 Lebenszeichen"}),(0,a.jsx)("button",{onClick:p,className:"px-2.5 py-1 text-xs rounded border border-[#1f1f1f] text-gray-500 hover:text-gray-300",children:"Aktualisieren"})]}),o&&!t&&(0,a.jsx)("div",{className:"text-gray-500 text-sm",children:"Laden…"}),g&&(0,a.jsxs)("div",{className:"text-red-400 text-sm",children:["Fehler: ",g]}),t&&(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)("div",{className:(0,l.A)("rounded-lg px-4 py-2.5 text-xs border",j.length?"bg-red-500/5 border-red-500/30 text-red-300":"bg-emerald-500/5 border-emerald-500/20 text-emerald-300/80"),children:0===j.length?"✅ Keine offene Meldung — alle Tiers, Jobs und Datenquellen im Takt.":(0,a.jsx)("ul",{className:"space-y-1",children:j.map(e=>(0,a.jsxs)("li",{children:["⚠️ ",e.text," ",(0,a.jsxs)("span",{className:"text-gray-500",children:["(offen seit ",c(e.offenSeit),", zuletzt gemeldet ",c(e.zuletztGemeldet),")"]})]},e.key))})}),t.warum&&t.warum.length>0&&(0,a.jsxs)("section",{className:"bg-[#111111] border border-[#1f1f1f] rounded-xl p-4",children:[(0,a.jsx)("h2",{className:"text-sm font-semibold text-gray-300 mb-1",children:"Warum? — Begr\xfcndungen der letzten Meldungen"}),(0,a.jsx)("div",{className:"text-xs text-gray-500 mb-3",children:'Deterministisch aus dem Pass: Art, Ausl\xf6ser (ge\xe4nderte Sektion mit erster Abweichung oder Zustandswechsel), Gate-Aussetzung, Zustellung. Im Chat gen\xfcgt „warum?".'}),(0,a.jsx)("ul",{className:"space-y-2 text-xs",children:t.warum.map(e=>(0,a.jsxs)("li",{className:"border-t border-[#1a1a1a] pt-2",children:[(0,a.jsxs)("div",{className:"flex flex-wrap gap-x-3 text-gray-400",children:[(0,a.jsx)("span",{className:"text-gray-200",children:c(e.zeit)}),(0,a.jsx)("span",{children:"vollpass"===e.art?"Vollpass":"minipass"===e.art?"Mini-Pass":"Ereignis-Pass"}),(0,a.jsx)("span",{className:(0,l.A)("gesendet"===e.zustellung?"text-emerald-400":"aufgeschoben"===e.zustellung?"text-amber-300":"text-gray-500"),children:e.zustellung}),e.dauerMs?(0,a.jsxs)("span",{children:[(e.dauerMs/1e3).toFixed(1)," s"]}):null,e.insights.length>0&&(0,a.jsxs)("span",{children:[e.insights.length," Meldung",1===e.insights.length?"":"en"]})]}),(0,a.jsxs)("div",{className:"text-gray-300",children:["Ausl\xf6ser: ",e.ausloeser.length?e.ausloeser.join(" \xb7 "):"Vollpass nach Zeitablauf"]}),e.gateAusgesetzt.length>0&&(0,a.jsxs)("div",{className:"text-amber-300",children:["Gate ausgesetzt: ",e.gateAusgesetzt.join(", ")]}),e.insights.length>0&&(0,a.jsx)("div",{className:"text-gray-500",children:e.insights.map(e=>"„".concat(e,'"')).join(", ")})]},e.zeit))})]}),t.kennzahlen&&(0,a.jsxs)("section",{className:"bg-[#111111] border border-[#1f1f1f] rounded-xl p-4",children:[(0,a.jsx)("h2",{className:"text-sm font-semibold text-gray-300 mb-1",children:"Kennzahlen"}),(0,a.jsxs)("div",{className:"text-xs text-gray-500 mb-3",children:["gez\xe4hlt seit ",c(t.kennzahlen.seit)," — Tagesabschluss 23:50 schreibt sie als Messwerte, die Lern-Telemetrie (So 19:15) rechnet die Woche"]}),(0,a.jsx)("div",{className:"grid grid-cols-2 sm:grid-cols-4 lg:grid-cols-7 gap-2",children:h.map(e=>{var s,r;let[l,n]=e;return(0,a.jsxs)("div",{className:"rounded-lg border border-[#1a1a1a] px-3 py-2",children:[(0,a.jsx)("div",{className:"text-lg tabular-nums text-gray-200",children:null!=(r=null==(s=t.kennzahlen)?void 0:s.werte[l])?r:0}),(0,a.jsx)("div",{className:"text-[11px] text-gray-500 leading-tight",children:n})]},l)})})]}),t.adapter&&t.adapter.length>0&&(0,a.jsxs)("section",{className:"bg-[#111111] border border-[#1f1f1f] rounded-xl p-4",children:[(0,a.jsx)("h2",{className:"text-sm font-semibold text-gray-300 mb-3",children:"Messaging-Adapter"}),(0,a.jsx)("div",{className:"flex flex-wrap gap-2",children:t.adapter.map(e=>(0,a.jsxs)("div",{className:"flex items-center gap-2 rounded-lg border border-[#1a1a1a] px-3 py-1.5 text-xs",children:[(0,a.jsx)(x,{zustand:"connected"===e.status?"ok":"bad"}),(0,a.jsx)("span",{className:"text-gray-200",children:e.platform}),(0,a.jsx)("span",{className:"text-gray-500",children:"connected"===e.status?"verbunden":"".concat(e.status).concat(e.getrenntSeitMs?" \xb7 seit ".concat(c(new Date(e.getrenntSeitMs).toISOString())):"")})]},e.platform))})]}),(0,a.jsxs)("section",{className:"bg-[#111111] border border-[#1f1f1f] rounded-xl p-4",children:[(0,a.jsx)("h2",{className:"text-sm font-semibold text-gray-300 mb-3",children:"Provider-Puls"}),0===t.puls.length&&(0,a.jsx)("div",{className:"text-xs text-gray-500",children:"Noch keine LLM-Aufrufe seit Start."}),(0,a.jsxs)("table",{className:"w-full text-xs",children:[(0,a.jsx)("thead",{className:"text-gray-500 text-left",children:(0,a.jsxs)("tr",{children:[(0,a.jsx)("th",{className:"py-1 pr-2"}),(0,a.jsx)("th",{className:"py-1 pr-3",children:"Tier"}),(0,a.jsx)("th",{className:"py-1 pr-3",children:"Provider / Modell"}),(0,a.jsx)("th",{className:"py-1 pr-3",children:"Letzter Erfolg"}),(0,a.jsx)("th",{className:"py-1 pr-3",children:"Letzter Fehler"}),(0,a.jsx)("th",{className:"py-1 pr-3",children:"Klasse"}),(0,a.jsx)("th",{className:"py-1 pr-3",children:"Gest\xf6rt seit"}),(0,a.jsx)("th",{className:"py-1 text-right",children:"OK / Fehler"})]})}),(0,a.jsx)("tbody",{className:"text-gray-300",children:t.puls.map(e=>{var s;return(0,a.jsxs)("tr",{className:"border-t border-[#1a1a1a]",children:[(0,a.jsx)("td",{className:"py-1.5 pr-2",children:(0,a.jsx)(x,{zustand:e.letzterFehler?!e.letzterErfolg||e.letzterFehler>e.letzterErfolg?"bad":"ok":e.letzterErfolg?"ok":"warn"})}),(0,a.jsx)("td",{className:"py-1.5 pr-3 font-medium",children:e.tier}),(0,a.jsxs)("td",{className:"py-1.5 pr-3 text-gray-400",children:[e.provider," / ",e.model]}),(0,a.jsx)("td",{className:"py-1.5 pr-3",children:c(e.letzterErfolg)}),(0,a.jsx)("td",{className:"py-1.5 pr-3",children:c(e.letzterFehler)}),(0,a.jsx)("td",{className:"py-1.5 pr-3",children:null!=(s=e.fehlerKlasse)?s:"—"}),(0,a.jsx)("td",{className:"py-1.5 pr-3",children:e.gestoertSeit?c(e.gestoertSeit):"—"}),(0,a.jsxs)("td",{className:"py-1.5 text-right tabular-nums",children:[e.erfolge," / ",e.fehler]})]},e.tier)})})]})]}),(0,a.jsxs)("section",{className:"bg-[#111111] border border-[#1f1f1f] rounded-xl p-4",children:[(0,a.jsx)("h2",{className:"text-sm font-semibold text-gray-300 mb-1",children:"Jobs im Register"}),(0,a.jsxs)("div",{className:"text-[11px] text-gray-500 mb-3",children:["Register gestartet ",c(t.registerGestartetAm)," \xb7 10-min-Raster \xb7 Nachholen nach Restart"]}),(0,a.jsxs)("table",{className:"w-full text-xs",children:[(0,a.jsx)("thead",{className:"text-gray-500 text-left",children:(0,a.jsxs)("tr",{children:[(0,a.jsx)("th",{className:"py-1 pr-2"}),(0,a.jsx)("th",{className:"py-1 pr-3",children:"Job"}),(0,a.jsx)("th",{className:"py-1 pr-3",children:"Takt"}),(0,a.jsx)("th",{className:"py-1 pr-3",children:"Bereich"}),(0,a.jsx)("th",{className:"py-1 pr-3",children:"Letzter Lauf"}),(0,a.jsx)("th",{className:"py-1 pr-3",children:"Ergebnis"}),(0,a.jsx)("th",{className:"py-1",children:"Z\xe4hler"})]})}),(0,a.jsx)("tbody",{className:"text-gray-300",children:t.jobs.map(e=>{var s,r,l,n,d,h;return(0,a.jsxs)("tr",{className:"border-t border-[#1a1a1a]",children:[(0,a.jsx)("td",{className:"py-1.5 pr-2",children:(0,a.jsx)(x,{zustand:(d=e,h=t.registerGestartetAm,d.letzterLauf?!1===d.letzterLauf.ok||Date.now()-Date.parse(d.letzterLauf.startedAt)>i(d.takt)?"bad":"ok":h&&Date.now()-Date.parse(h)>i(d.takt)?"bad":"warn")})}),(0,a.jsxs)("td",{className:"py-1.5 pr-3",children:[(0,a.jsx)("div",{className:"font-medium",children:e.key}),(0,a.jsx)("div",{className:"text-gray-500",children:e.beschreibung})]}),(0,a.jsx)("td",{className:"py-1.5 pr-3",children:"taeglich"===(n=e.takt).art?"t\xe4glich ".concat(n.um):"woechentlich"===n.art?"".concat(["So","Mo","Di","Mi","Do","Fr","Sa"][n.tag]," ").concat(n.um):"alle ".concat(n.minuten," min")}),(0,a.jsx)("td",{className:"py-1.5 pr-3",children:e.bereich}),(0,a.jsx)("td",{className:"py-1.5 pr-3",children:c(null==(s=e.letzterLauf)?void 0:s.startedAt)}),(0,a.jsx)("td",{className:"py-1.5 pr-3",children:e.letzterLauf?e.letzterLauf.ok?"ok":(0,a.jsx)("span",{className:"text-red-400",children:null!=(l=e.letzterLauf.fehler)?l:"Fehler"}):"—"}),(0,a.jsx)("td",{className:"py-1.5 text-gray-400",children:(null==(r=e.letzterLauf)?void 0:r.zaehler)?Object.entries(e.letzterLauf.zaehler).map(e=>{let[s,t]=e;return"".concat(s," ").concat(t)}).join(" \xb7 "):""})]},e.key)})})]})]}),(0,a.jsxs)("section",{className:"bg-[#111111] border border-[#1f1f1f] rounded-xl p-4",children:[(0,a.jsx)("h2",{className:"text-sm font-semibold text-gray-300 mb-1",children:"Synthetische Proben"}),(0,a.jsxs)("div",{className:"text-[11px] text-gray-500 mb-3",children:["t\xe4glich 06:50 \xb7 ",t.proben.zeit?"zuletzt ".concat(c(t.proben.zeit)):"noch nicht gelaufen (erster Lauf 06:50)"]}),t.proben.ergebnisse.length>0&&(0,a.jsx)("ul",{className:"space-y-1 text-xs text-gray-300",children:t.proben.ergebnisse.map(e=>(0,a.jsxs)("li",{className:"flex items-start gap-2",children:[(0,a.jsx)(x,{zustand:e.ok?"ok":"bad"}),(0,a.jsx)("span",{className:"text-gray-500 w-12 shrink-0",children:e.art}),(0,a.jsx)("span",{className:"font-medium w-40 shrink-0",children:e.name}),(0,a.jsx)("span",{className:"text-gray-400",children:e.detail})]},"".concat(e.art,":").concat(e.name)))})]}),(0,a.jsxs)("section",{className:"bg-[#111111] border border-[#1f1f1f] rounded-xl p-4",children:[(0,a.jsx)("h2",{className:"text-sm font-semibold text-gray-300 mb-3",children:"Letzte L\xe4ufe (job_runs)"}),(0,a.jsxs)("table",{className:"w-full text-xs",children:[(0,a.jsx)("thead",{className:"text-gray-500 text-left",children:(0,a.jsxs)("tr",{children:[(0,a.jsx)("th",{className:"py-1 pr-3",children:"Zeit"}),(0,a.jsx)("th",{className:"py-1 pr-3",children:"Job"}),(0,a.jsx)("th",{className:"py-1 pr-3",children:"User"}),(0,a.jsx)("th",{className:"py-1 pr-3",children:"Dauer"}),(0,a.jsx)("th",{className:"py-1 pr-3",children:"Ergebnis"}),(0,a.jsx)("th",{className:"py-1",children:"Z\xe4hler / Fehler"})]})}),(0,a.jsx)("tbody",{className:"text-gray-300",children:t.letzteLaeufe.map(e=>{var s;return(0,a.jsxs)("tr",{className:"border-t border-[#1a1a1a]",children:[(0,a.jsx)("td",{className:"py-1 pr-3 text-gray-400 whitespace-nowrap",children:new Date(e.startedAt).toLocaleString("de-AT")}),(0,a.jsx)("td",{className:"py-1 pr-3",children:e.jobKey}),(0,a.jsx)("td",{className:"py-1 pr-3 text-gray-500",children:e.userId?e.userId.slice(0,8):"global"}),(0,a.jsx)("td",{className:"py-1 pr-3 tabular-nums",children:e.finishedAt?"".concat(Math.max(0,Math.round((Date.parse(e.finishedAt)-Date.parse(e.startedAt))/1e3))," s"):"l\xe4uft"}),(0,a.jsx)("td",{className:"py-1 pr-3",children:void 0===e.ok?"…":e.ok?"ok":(0,a.jsx)("span",{className:"text-red-400",children:"Fehler"})}),(0,a.jsx)("td",{className:"py-1 text-gray-400",children:null!=(s=e.fehler)?s:e.zaehler?Object.entries(e.zaehler).map(e=>{let[s,t]=e;return"".concat(s," ").concat(t)}).join(" \xb7 "):""})]},e.id)})})]}),0===t.letzteLaeufe.length&&(0,a.jsx)("div",{className:"text-xs text-gray-500",children:"Noch keine L\xe4ufe — der erste Nachtjob schreibt ab 03:00."})]})]})]})}},5242:(e,s,t)=>{"use strict";t.d(s,{A:()=>a});let a=function(){for(var e,s,t=0,a="",r=arguments.length;t<r;t++)(e=arguments[t])&&(s=function e(s){var t,a,r="";if("string"==typeof s||"number"==typeof s)r+=s;else if("object"==typeof s)if(Array.isArray(s)){var l=s.length;for(t=0;t<l;t++)s[t]&&(a=e(s[t]))&&(r&&(r+=" "),r+=a)}else for(a in s)s[a]&&(r&&(r+=" "),r+=a);return r}(e))&&(a&&(a+=" "),a+=s);return a}},6283:(e,s,t)=>{Promise.resolve().then(t.bind(t,4875))}},e=>{e.O(0,[719,814,743,358],()=>e(e.s=6283)),_N_E=e.O()}]);
@@ -0,0 +1 @@
1
+ self.__BUILD_MANIFEST=function(e,r,t){return{__rewrites:{afterFiles:[],beforeFiles:[],fallback:[]},__routerFilterStatic:{numItems:29,errorRate:1e-4,numBits:556,numHashes:14,bitArray:[0,0,r,r,1,1,r,r,e,r,r,e,e,e,e,e,r,r,r,e,r,r,r,r,r,e,r,e,r,r,r,e,r,r,e,r,r,e,e,e,e,e,e,e,e,e,r,r,e,r,r,e,r,e,e,r,r,r,r,e,e,e,r,r,e,e,e,r,e,r,r,r,e,r,e,r,e,r,r,r,r,r,r,e,e,e,r,r,r,e,r,r,r,e,e,e,e,e,e,r,r,r,e,e,r,r,r,r,e,e,r,e,e,e,r,r,r,e,e,e,r,e,r,e,r,e,r,e,r,r,r,e,r,e,e,r,e,r,r,r,e,e,r,e,e,e,e,e,e,r,r,r,r,r,e,e,e,e,e,e,r,r,e,e,e,r,e,e,e,e,r,e,e,r,r,r,e,e,e,r,r,e,r,e,r,e,r,e,e,e,r,e,e,e,r,r,r,e,r,r,e,r,r,e,r,e,e,r,r,e,e,e,e,e,e,e,r,e,e,r,e,e,e,e,e,r,e,r,r,e,r,e,r,r,e,r,r,r,r,r,e,r,e,r,e,r,e,r,e,r,r,r,e,r,e,r,e,e,e,e,r,e,e,r,e,r,r,e,e,e,r,e,e,r,r,r,r,r,r,e,e,r,e,e,e,r,r,e,r,r,e,r,r,r,r,e,r,e,e,r,r,e,r,r,r,e,r,e,e,e,e,e,r,e,e,r,r,r,e,e,e,e,e,r,e,e,r,r,r,r,r,e,e,e,e,e,e,e,r,r,r,e,e,r,r,e,r,r,r,r,e,r,e,e,r,e,e,e,e,r,e,r,e,r,r,r,e,r,e,r,e,r,r,r,r,e,r,e,e,e,e,r,r,r,r,r,e,r,e,r,r,r,r,e,e,r,r,r,r,r,r,r,e,e,e,e,r,e,e,r,e,r,e,e,e,r,e,r,e,r,e,e,r,e,e,e,e,r,e,r,e,r,e,r,r,e,e,r,e,e,e,r,e,e,e,e,e,e,r,e,e,e,e,e,e,e,e,e,r,r,e,r,e,r,e,r,r,r,r,r,r,e,r,r,r,r,e,e,e,e,r,r,e,e,r,e,r,e,r,e,e,e,e,r,r,e,r,r,e,r,r,r,e,r,r,r,e,r,e,r,r,e,r,e,e,r,e,r,e,e,r,e,r,r,e,r,e,r,r,e,r,e,r,e,e,e,r,e,r,e,e,e,r,e,e,e,e,e,r,e,r,e,e,e,e,e]},__routerFilterDynamic:{numItems:r,errorRate:1e-4,numBits:r,numHashes:null,bitArray:[]},"/_error":["static/chunks/pages/_error-01ab52c470df0174.js"],sortedPages:["/_app","/_error"]}}(1,0,1e-4),self.__BUILD_MANIFEST_CB&&self.__BUILD_MANIFEST_CB();
@@ -0,0 +1 @@
1
+ self.__SSG_MANIFEST=new Set([]);self.__SSG_MANIFEST_CB&&self.__SSG_MANIFEST_CB()
@@ -1 +1 @@
1
- <!DOCTYPE html><!--dgpjnZ5_RfTfsm5lTugzB--><html lang="de"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="/alfred/_next/static/css/f0761175a8b5e35f.css" data-precedence="next"/><link rel="preload" as="script" fetchPriority="low" href="/alfred/_next/static/chunks/webpack-a80a11427021d142.js"/><script src="/alfred/_next/static/chunks/8e6518bb-ac69cad76942bec4.js" async=""></script><script src="/alfred/_next/static/chunks/743-8d9b5b61ab50b7b3.js" async=""></script><script src="/alfred/_next/static/chunks/main-app-bf91f7268c1fdab4.js" async=""></script><script src="/alfred/_next/static/chunks/719-2880b6276161d80c.js" async=""></script><script src="/alfred/_next/static/chunks/app/layout-893502dcb97a8de9.js" async=""></script><script src="/alfred/_next/static/chunks/app/background-tasks/page-06a7315f90f821da.js" async=""></script><title>Alfred AI</title><meta name="description" content="Self-hosted AI Assistant"/><script src="/alfred/_next/static/chunks/polyfills-42372ed130431b0a.js" noModule=""></script></head><body class="bg-[#0a0a0a] text-gray-200 h-screen overflow-hidden"><div hidden=""><!--$--><!--/$--></div><div class="flex items-center justify-center h-screen bg-[#0a0a0a]"><div class="text-gray-400">Verbinde...</div></div><script src="/alfred/_next/static/chunks/webpack-a80a11427021d142.js" id="_R_" async=""></script><script>(self.__next_f=self.__next_f||[]).push([0])</script><script>self.__next_f.push([1,"1:\"$Sreact.fragment\"\n2:I[8719,[\"719\",\"static/chunks/719-2880b6276161d80c.js\",\"177\",\"static/chunks/app/layout-893502dcb97a8de9.js\"],\"ConfigProvider\"]\n3:I[6117,[\"719\",\"static/chunks/719-2880b6276161d80c.js\",\"177\",\"static/chunks/app/layout-893502dcb97a8de9.js\"],\"AuthGate\"]\n4:I[4314,[\"719\",\"static/chunks/719-2880b6276161d80c.js\",\"177\",\"static/chunks/app/layout-893502dcb97a8de9.js\"],\"Sidebar\"]\n5:I[8954,[],\"\"]\n6:I[5640,[],\"\"]\n7:I[9854,[\"719\",\"static/chunks/719-2880b6276161d80c.js\",\"488\",\"static/chunks/app/background-tasks/page-06a7315f90f821da.js\"],\"BackgroundTasksPage\"]\n8:I[2051,[],\"OutletBoundary\"]\na:I[6658,[],\"AsyncMetadataOutlet\"]\nc:I[2051,[],\"ViewportBoundary\"]\ne:I[2051,[],\"MetadataBoundary\"]\nf:\"$Sreact.suspense\"\n11:I[7698,[],\"\"]\n:HL[\"/alfred/_next/static/css/f0761175a8b5e35f.css\",\"style\"]\n"])</script><script>self.__next_f.push([1,"0:{\"P\":null,\"b\":\"dgpjnZ5-RfTfsm5lTugzB\",\"p\":\"/alfred\",\"c\":[\"\",\"background-tasks\",\"\"],\"i\":false,\"f\":[[[\"\",{\"children\":[\"background-tasks\",{\"children\":[\"__PAGE__\",{}]}]},\"$undefined\",\"$undefined\",true],[\"\",[\"$\",\"$1\",\"c\",{\"children\":[[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/alfred/_next/static/css/f0761175a8b5e35f.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}]],[\"$\",\"html\",null,{\"lang\":\"de\",\"children\":[\"$\",\"body\",null,{\"className\":\"bg-[#0a0a0a] text-gray-200 h-screen overflow-hidden\",\"children\":[\"$\",\"$L2\",null,{\"children\":[\"$\",\"$L3\",null,{\"children\":[\"$\",\"div\",null,{\"className\":\"flex h-full\",\"children\":[[\"$\",\"$L4\",null,{}],[\"$\",\"main\",null,{\"className\":\"flex-1 overflow-y-auto\",\"children\":[\"$\",\"$L5\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L6\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":[[[\"$\",\"title\",null,{\"children\":\"404: This page could not be found.\"}],[\"$\",\"div\",null,{\"style\":{\"fontFamily\":\"system-ui,\\\"Segoe UI\\\",Roboto,Helvetica,Arial,sans-serif,\\\"Apple Color Emoji\\\",\\\"Segoe UI Emoji\\\"\",\"height\":\"100vh\",\"textAlign\":\"center\",\"display\":\"flex\",\"flexDirection\":\"column\",\"alignItems\":\"center\",\"justifyContent\":\"center\"},\"children\":[\"$\",\"div\",null,{\"children\":[[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}\"}}],[\"$\",\"h1\",null,{\"className\":\"next-error-h1\",\"style\":{\"display\":\"inline-block\",\"margin\":\"0 20px 0 0\",\"padding\":\"0 23px 0 0\",\"fontSize\":24,\"fontWeight\":500,\"verticalAlign\":\"top\",\"lineHeight\":\"49px\"},\"children\":404}],[\"$\",\"div\",null,{\"style\":{\"display\":\"inline-block\"},\"children\":[\"$\",\"h2\",null,{\"style\":{\"fontSize\":14,\"fontWeight\":400,\"lineHeight\":\"49px\",\"margin\":0},\"children\":\"This page could not be found.\"}]}]]}]}]],[]],\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]}]]}]}]}]}]}]]}],{\"children\":[\"background-tasks\",[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$L5\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L6\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}],{\"children\":[\"__PAGE__\",[\"$\",\"$1\",\"c\",{\"children\":[[\"$\",\"$L7\",null,{}],null,[\"$\",\"$L8\",null,{\"children\":[\"$L9\",[\"$\",\"$La\",null,{\"promise\":\"$@b\"}]]}]]}],{},null,false]},null,false]},null,false],[\"$\",\"$1\",\"h\",{\"children\":[null,[[\"$\",\"$Lc\",null,{\"children\":\"$Ld\"}],null],[\"$\",\"$Le\",null,{\"children\":[\"$\",\"div\",null,{\"hidden\":true,\"children\":[\"$\",\"$f\",null,{\"fallback\":null,\"children\":\"$L10\"}]}]}]]}],false]],\"m\":\"$undefined\",\"G\":[\"$11\",[]],\"s\":false,\"S\":true}\n"])</script><script>self.__next_f.push([1,"d:[[\"$\",\"meta\",\"0\",{\"charSet\":\"utf-8\"}],[\"$\",\"meta\",\"1\",{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1\"}]]\n9:null\n"])</script><script>self.__next_f.push([1,"b:{\"metadata\":[[\"$\",\"title\",\"0\",{\"children\":\"Alfred AI\"}],[\"$\",\"meta\",\"1\",{\"name\":\"description\",\"content\":\"Self-hosted AI Assistant\"}]],\"error\":null,\"digest\":\"$undefined\"}\n"])</script><script>self.__next_f.push([1,"10:\"$b:metadata\"\n"])</script></body></html>
1
+ <!DOCTYPE html><!--exmjf2Jpr25IuJk0JqSJp--><html lang="de"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="/alfred/_next/static/css/f0761175a8b5e35f.css" data-precedence="next"/><link rel="preload" as="script" fetchPriority="low" href="/alfred/_next/static/chunks/webpack-a80a11427021d142.js"/><script src="/alfred/_next/static/chunks/8e6518bb-ac69cad76942bec4.js" async=""></script><script src="/alfred/_next/static/chunks/743-8d9b5b61ab50b7b3.js" async=""></script><script src="/alfred/_next/static/chunks/main-app-bf91f7268c1fdab4.js" async=""></script><script src="/alfred/_next/static/chunks/719-2880b6276161d80c.js" async=""></script><script src="/alfred/_next/static/chunks/app/layout-893502dcb97a8de9.js" async=""></script><script src="/alfred/_next/static/chunks/app/background-tasks/page-06a7315f90f821da.js" async=""></script><title>Alfred AI</title><meta name="description" content="Self-hosted AI Assistant"/><script src="/alfred/_next/static/chunks/polyfills-42372ed130431b0a.js" noModule=""></script></head><body class="bg-[#0a0a0a] text-gray-200 h-screen overflow-hidden"><div hidden=""><!--$--><!--/$--></div><div class="flex items-center justify-center h-screen bg-[#0a0a0a]"><div class="text-gray-400">Verbinde...</div></div><script src="/alfred/_next/static/chunks/webpack-a80a11427021d142.js" id="_R_" async=""></script><script>(self.__next_f=self.__next_f||[]).push([0])</script><script>self.__next_f.push([1,"1:\"$Sreact.fragment\"\n2:I[8719,[\"719\",\"static/chunks/719-2880b6276161d80c.js\",\"177\",\"static/chunks/app/layout-893502dcb97a8de9.js\"],\"ConfigProvider\"]\n3:I[6117,[\"719\",\"static/chunks/719-2880b6276161d80c.js\",\"177\",\"static/chunks/app/layout-893502dcb97a8de9.js\"],\"AuthGate\"]\n4:I[4314,[\"719\",\"static/chunks/719-2880b6276161d80c.js\",\"177\",\"static/chunks/app/layout-893502dcb97a8de9.js\"],\"Sidebar\"]\n5:I[8954,[],\"\"]\n6:I[5640,[],\"\"]\n7:I[9854,[\"719\",\"static/chunks/719-2880b6276161d80c.js\",\"488\",\"static/chunks/app/background-tasks/page-06a7315f90f821da.js\"],\"BackgroundTasksPage\"]\n8:I[2051,[],\"OutletBoundary\"]\na:I[6658,[],\"AsyncMetadataOutlet\"]\nc:I[2051,[],\"ViewportBoundary\"]\ne:I[2051,[],\"MetadataBoundary\"]\nf:\"$Sreact.suspense\"\n11:I[7698,[],\"\"]\n:HL[\"/alfred/_next/static/css/f0761175a8b5e35f.css\",\"style\"]\n"])</script><script>self.__next_f.push([1,"0:{\"P\":null,\"b\":\"exmjf2Jpr25IuJk0JqSJp\",\"p\":\"/alfred\",\"c\":[\"\",\"background-tasks\",\"\"],\"i\":false,\"f\":[[[\"\",{\"children\":[\"background-tasks\",{\"children\":[\"__PAGE__\",{}]}]},\"$undefined\",\"$undefined\",true],[\"\",[\"$\",\"$1\",\"c\",{\"children\":[[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/alfred/_next/static/css/f0761175a8b5e35f.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}]],[\"$\",\"html\",null,{\"lang\":\"de\",\"children\":[\"$\",\"body\",null,{\"className\":\"bg-[#0a0a0a] text-gray-200 h-screen overflow-hidden\",\"children\":[\"$\",\"$L2\",null,{\"children\":[\"$\",\"$L3\",null,{\"children\":[\"$\",\"div\",null,{\"className\":\"flex h-full\",\"children\":[[\"$\",\"$L4\",null,{}],[\"$\",\"main\",null,{\"className\":\"flex-1 overflow-y-auto\",\"children\":[\"$\",\"$L5\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L6\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":[[[\"$\",\"title\",null,{\"children\":\"404: This page could not be found.\"}],[\"$\",\"div\",null,{\"style\":{\"fontFamily\":\"system-ui,\\\"Segoe UI\\\",Roboto,Helvetica,Arial,sans-serif,\\\"Apple Color Emoji\\\",\\\"Segoe UI Emoji\\\"\",\"height\":\"100vh\",\"textAlign\":\"center\",\"display\":\"flex\",\"flexDirection\":\"column\",\"alignItems\":\"center\",\"justifyContent\":\"center\"},\"children\":[\"$\",\"div\",null,{\"children\":[[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}\"}}],[\"$\",\"h1\",null,{\"className\":\"next-error-h1\",\"style\":{\"display\":\"inline-block\",\"margin\":\"0 20px 0 0\",\"padding\":\"0 23px 0 0\",\"fontSize\":24,\"fontWeight\":500,\"verticalAlign\":\"top\",\"lineHeight\":\"49px\"},\"children\":404}],[\"$\",\"div\",null,{\"style\":{\"display\":\"inline-block\"},\"children\":[\"$\",\"h2\",null,{\"style\":{\"fontSize\":14,\"fontWeight\":400,\"lineHeight\":\"49px\",\"margin\":0},\"children\":\"This page could not be found.\"}]}]]}]}]],[]],\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]}]]}]}]}]}]}]]}],{\"children\":[\"background-tasks\",[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$L5\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L6\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}],{\"children\":[\"__PAGE__\",[\"$\",\"$1\",\"c\",{\"children\":[[\"$\",\"$L7\",null,{}],null,[\"$\",\"$L8\",null,{\"children\":[\"$L9\",[\"$\",\"$La\",null,{\"promise\":\"$@b\"}]]}]]}],{},null,false]},null,false]},null,false],[\"$\",\"$1\",\"h\",{\"children\":[null,[[\"$\",\"$Lc\",null,{\"children\":\"$Ld\"}],null],[\"$\",\"$Le\",null,{\"children\":[\"$\",\"div\",null,{\"hidden\":true,\"children\":[\"$\",\"$f\",null,{\"fallback\":null,\"children\":\"$L10\"}]}]}]]}],false]],\"m\":\"$undefined\",\"G\":[\"$11\",[]],\"s\":false,\"S\":true}\n"])</script><script>self.__next_f.push([1,"d:[[\"$\",\"meta\",\"0\",{\"charSet\":\"utf-8\"}],[\"$\",\"meta\",\"1\",{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1\"}]]\n9:null\n"])</script><script>self.__next_f.push([1,"b:{\"metadata\":[[\"$\",\"title\",\"0\",{\"children\":\"Alfred AI\"}],[\"$\",\"meta\",\"1\",{\"name\":\"description\",\"content\":\"Self-hosted AI Assistant\"}]],\"error\":null,\"digest\":\"$undefined\"}\n"])</script><script>self.__next_f.push([1,"10:\"$b:metadata\"\n"])</script></body></html>
@@ -12,7 +12,7 @@ e:I[2051,[],"MetadataBoundary"]
12
12
  f:"$Sreact.suspense"
13
13
  11:I[7698,[],""]
14
14
  :HL["/alfred/_next/static/css/f0761175a8b5e35f.css","style"]
15
- 0:{"P":null,"b":"dgpjnZ5-RfTfsm5lTugzB","p":"/alfred","c":["","background-tasks",""],"i":false,"f":[[["",{"children":["background-tasks",{"children":["__PAGE__",{}]}]},"$undefined","$undefined",true],["",["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/alfred/_next/static/css/f0761175a8b5e35f.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}]],["$","html",null,{"lang":"de","children":["$","body",null,{"className":"bg-[#0a0a0a] text-gray-200 h-screen overflow-hidden","children":["$","$L2",null,{"children":["$","$L3",null,{"children":["$","div",null,{"className":"flex h-full","children":[["$","$L4",null,{}],["$","main",null,{"className":"flex-1 overflow-y-auto","children":["$","$L5",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L6",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]],"forbidden":"$undefined","unauthorized":"$undefined"}]}]]}]}]}]}]}]]}],{"children":["background-tasks",["$","$1","c",{"children":[null,["$","$L5",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L6",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":["__PAGE__",["$","$1","c",{"children":[["$","$L7",null,{}],null,["$","$L8",null,{"children":["$L9",["$","$La",null,{"promise":"$@b"}]]}]]}],{},null,false]},null,false]},null,false],["$","$1","h",{"children":[null,[["$","$Lc",null,{"children":"$Ld"}],null],["$","$Le",null,{"children":["$","div",null,{"hidden":true,"children":["$","$f",null,{"fallback":null,"children":"$L10"}]}]}]]}],false]],"m":"$undefined","G":["$11",[]],"s":false,"S":true}
15
+ 0:{"P":null,"b":"exmjf2Jpr25IuJk0JqSJp","p":"/alfred","c":["","background-tasks",""],"i":false,"f":[[["",{"children":["background-tasks",{"children":["__PAGE__",{}]}]},"$undefined","$undefined",true],["",["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/alfred/_next/static/css/f0761175a8b5e35f.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}]],["$","html",null,{"lang":"de","children":["$","body",null,{"className":"bg-[#0a0a0a] text-gray-200 h-screen overflow-hidden","children":["$","$L2",null,{"children":["$","$L3",null,{"children":["$","div",null,{"className":"flex h-full","children":[["$","$L4",null,{}],["$","main",null,{"className":"flex-1 overflow-y-auto","children":["$","$L5",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L6",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]],"forbidden":"$undefined","unauthorized":"$undefined"}]}]]}]}]}]}]}]]}],{"children":["background-tasks",["$","$1","c",{"children":[null,["$","$L5",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L6",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":["__PAGE__",["$","$1","c",{"children":[["$","$L7",null,{}],null,["$","$L8",null,{"children":["$L9",["$","$La",null,{"promise":"$@b"}]]}]]}],{},null,false]},null,false]},null,false],["$","$1","h",{"children":[null,[["$","$Lc",null,{"children":"$Ld"}],null],["$","$Le",null,{"children":["$","div",null,{"hidden":true,"children":["$","$f",null,{"fallback":null,"children":"$L10"}]}]}]]}],false]],"m":"$undefined","G":["$11",[]],"s":false,"S":true}
16
16
  d:[["$","meta","0",{"charSet":"utf-8"}],["$","meta","1",{"name":"viewport","content":"width=device-width, initial-scale=1"}]]
17
17
  9:null
18
18
  b:{"metadata":[["$","title","0",{"children":"Alfred AI"}],["$","meta","1",{"name":"description","content":"Self-hosted AI Assistant"}]],"error":null,"digest":"$undefined"}
@@ -1 +1 @@
1
- <!DOCTYPE html><!--dgpjnZ5_RfTfsm5lTugzB--><html lang="de"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="/alfred/_next/static/css/f0761175a8b5e35f.css" data-precedence="next"/><link rel="preload" as="script" fetchPriority="low" href="/alfred/_next/static/chunks/webpack-a80a11427021d142.js"/><script src="/alfred/_next/static/chunks/8e6518bb-ac69cad76942bec4.js" async=""></script><script src="/alfred/_next/static/chunks/743-8d9b5b61ab50b7b3.js" async=""></script><script src="/alfred/_next/static/chunks/main-app-bf91f7268c1fdab4.js" async=""></script><script src="/alfred/_next/static/chunks/719-2880b6276161d80c.js" async=""></script><script src="/alfred/_next/static/chunks/app/layout-893502dcb97a8de9.js" async=""></script><script src="/alfred/_next/static/chunks/915-660ab09c4b0a3b92.js" async=""></script><script src="/alfred/_next/static/chunks/550-7b038e1d67d66931.js" async=""></script><script src="/alfred/_next/static/chunks/app/chat/page-278ea057f23c2397.js" async=""></script><title>Alfred AI</title><meta name="description" content="Self-hosted AI Assistant"/><script src="/alfred/_next/static/chunks/polyfills-42372ed130431b0a.js" noModule=""></script></head><body class="bg-[#0a0a0a] text-gray-200 h-screen overflow-hidden"><div hidden=""><!--$--><!--/$--></div><div class="flex items-center justify-center h-screen bg-[#0a0a0a]"><div class="text-gray-400">Verbinde...</div></div><script src="/alfred/_next/static/chunks/webpack-a80a11427021d142.js" id="_R_" async=""></script><script>(self.__next_f=self.__next_f||[]).push([0])</script><script>self.__next_f.push([1,"1:\"$Sreact.fragment\"\n2:I[8719,[\"719\",\"static/chunks/719-2880b6276161d80c.js\",\"177\",\"static/chunks/app/layout-893502dcb97a8de9.js\"],\"ConfigProvider\"]\n3:I[6117,[\"719\",\"static/chunks/719-2880b6276161d80c.js\",\"177\",\"static/chunks/app/layout-893502dcb97a8de9.js\"],\"AuthGate\"]\n4:I[4314,[\"719\",\"static/chunks/719-2880b6276161d80c.js\",\"177\",\"static/chunks/app/layout-893502dcb97a8de9.js\"],\"Sidebar\"]\n5:I[8954,[],\"\"]\n6:I[5640,[],\"\"]\n7:I[9550,[\"915\",\"static/chunks/915-660ab09c4b0a3b92.js\",\"719\",\"static/chunks/719-2880b6276161d80c.js\",\"550\",\"static/chunks/550-7b038e1d67d66931.js\",\"457\",\"static/chunks/app/chat/page-278ea057f23c2397.js\"],\"ChatPage\"]\n8:I[2051,[],\"OutletBoundary\"]\na:I[6658,[],\"AsyncMetadataOutlet\"]\nc:I[2051,[],\"ViewportBoundary\"]\ne:I[2051,[],\"MetadataBoundary\"]\nf:\"$Sreact.suspense\"\n11:I[7698,[],\"\"]\n:HL[\"/alfred/_next/static/css/f0761175a8b5e35f.css\",\"style\"]\n"])</script><script>self.__next_f.push([1,"0:{\"P\":null,\"b\":\"dgpjnZ5-RfTfsm5lTugzB\",\"p\":\"/alfred\",\"c\":[\"\",\"chat\",\"\"],\"i\":false,\"f\":[[[\"\",{\"children\":[\"chat\",{\"children\":[\"__PAGE__\",{}]}]},\"$undefined\",\"$undefined\",true],[\"\",[\"$\",\"$1\",\"c\",{\"children\":[[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/alfred/_next/static/css/f0761175a8b5e35f.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}]],[\"$\",\"html\",null,{\"lang\":\"de\",\"children\":[\"$\",\"body\",null,{\"className\":\"bg-[#0a0a0a] text-gray-200 h-screen overflow-hidden\",\"children\":[\"$\",\"$L2\",null,{\"children\":[\"$\",\"$L3\",null,{\"children\":[\"$\",\"div\",null,{\"className\":\"flex h-full\",\"children\":[[\"$\",\"$L4\",null,{}],[\"$\",\"main\",null,{\"className\":\"flex-1 overflow-y-auto\",\"children\":[\"$\",\"$L5\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L6\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":[[[\"$\",\"title\",null,{\"children\":\"404: This page could not be found.\"}],[\"$\",\"div\",null,{\"style\":{\"fontFamily\":\"system-ui,\\\"Segoe UI\\\",Roboto,Helvetica,Arial,sans-serif,\\\"Apple Color Emoji\\\",\\\"Segoe UI Emoji\\\"\",\"height\":\"100vh\",\"textAlign\":\"center\",\"display\":\"flex\",\"flexDirection\":\"column\",\"alignItems\":\"center\",\"justifyContent\":\"center\"},\"children\":[\"$\",\"div\",null,{\"children\":[[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}\"}}],[\"$\",\"h1\",null,{\"className\":\"next-error-h1\",\"style\":{\"display\":\"inline-block\",\"margin\":\"0 20px 0 0\",\"padding\":\"0 23px 0 0\",\"fontSize\":24,\"fontWeight\":500,\"verticalAlign\":\"top\",\"lineHeight\":\"49px\"},\"children\":404}],[\"$\",\"div\",null,{\"style\":{\"display\":\"inline-block\"},\"children\":[\"$\",\"h2\",null,{\"style\":{\"fontSize\":14,\"fontWeight\":400,\"lineHeight\":\"49px\",\"margin\":0},\"children\":\"This page could not be found.\"}]}]]}]}]],[]],\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]}]]}]}]}]}]}]]}],{\"children\":[\"chat\",[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$L5\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L6\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}],{\"children\":[\"__PAGE__\",[\"$\",\"$1\",\"c\",{\"children\":[[\"$\",\"$L7\",null,{}],null,[\"$\",\"$L8\",null,{\"children\":[\"$L9\",[\"$\",\"$La\",null,{\"promise\":\"$@b\"}]]}]]}],{},null,false]},null,false]},null,false],[\"$\",\"$1\",\"h\",{\"children\":[null,[[\"$\",\"$Lc\",null,{\"children\":\"$Ld\"}],null],[\"$\",\"$Le\",null,{\"children\":[\"$\",\"div\",null,{\"hidden\":true,\"children\":[\"$\",\"$f\",null,{\"fallback\":null,\"children\":\"$L10\"}]}]}]]}],false]],\"m\":\"$undefined\",\"G\":[\"$11\",[]],\"s\":false,\"S\":true}\n"])</script><script>self.__next_f.push([1,"d:[[\"$\",\"meta\",\"0\",{\"charSet\":\"utf-8\"}],[\"$\",\"meta\",\"1\",{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1\"}]]\n9:null\n"])</script><script>self.__next_f.push([1,"b:{\"metadata\":[[\"$\",\"title\",\"0\",{\"children\":\"Alfred AI\"}],[\"$\",\"meta\",\"1\",{\"name\":\"description\",\"content\":\"Self-hosted AI Assistant\"}]],\"error\":null,\"digest\":\"$undefined\"}\n"])</script><script>self.__next_f.push([1,"10:\"$b:metadata\"\n"])</script></body></html>
1
+ <!DOCTYPE html><!--exmjf2Jpr25IuJk0JqSJp--><html lang="de"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="/alfred/_next/static/css/f0761175a8b5e35f.css" data-precedence="next"/><link rel="preload" as="script" fetchPriority="low" href="/alfred/_next/static/chunks/webpack-a80a11427021d142.js"/><script src="/alfred/_next/static/chunks/8e6518bb-ac69cad76942bec4.js" async=""></script><script src="/alfred/_next/static/chunks/743-8d9b5b61ab50b7b3.js" async=""></script><script src="/alfred/_next/static/chunks/main-app-bf91f7268c1fdab4.js" async=""></script><script src="/alfred/_next/static/chunks/719-2880b6276161d80c.js" async=""></script><script src="/alfred/_next/static/chunks/app/layout-893502dcb97a8de9.js" async=""></script><script src="/alfred/_next/static/chunks/915-660ab09c4b0a3b92.js" async=""></script><script src="/alfred/_next/static/chunks/550-7b038e1d67d66931.js" async=""></script><script src="/alfred/_next/static/chunks/app/chat/page-278ea057f23c2397.js" async=""></script><title>Alfred AI</title><meta name="description" content="Self-hosted AI Assistant"/><script src="/alfred/_next/static/chunks/polyfills-42372ed130431b0a.js" noModule=""></script></head><body class="bg-[#0a0a0a] text-gray-200 h-screen overflow-hidden"><div hidden=""><!--$--><!--/$--></div><div class="flex items-center justify-center h-screen bg-[#0a0a0a]"><div class="text-gray-400">Verbinde...</div></div><script src="/alfred/_next/static/chunks/webpack-a80a11427021d142.js" id="_R_" async=""></script><script>(self.__next_f=self.__next_f||[]).push([0])</script><script>self.__next_f.push([1,"1:\"$Sreact.fragment\"\n2:I[8719,[\"719\",\"static/chunks/719-2880b6276161d80c.js\",\"177\",\"static/chunks/app/layout-893502dcb97a8de9.js\"],\"ConfigProvider\"]\n3:I[6117,[\"719\",\"static/chunks/719-2880b6276161d80c.js\",\"177\",\"static/chunks/app/layout-893502dcb97a8de9.js\"],\"AuthGate\"]\n4:I[4314,[\"719\",\"static/chunks/719-2880b6276161d80c.js\",\"177\",\"static/chunks/app/layout-893502dcb97a8de9.js\"],\"Sidebar\"]\n5:I[8954,[],\"\"]\n6:I[5640,[],\"\"]\n7:I[9550,[\"915\",\"static/chunks/915-660ab09c4b0a3b92.js\",\"719\",\"static/chunks/719-2880b6276161d80c.js\",\"550\",\"static/chunks/550-7b038e1d67d66931.js\",\"457\",\"static/chunks/app/chat/page-278ea057f23c2397.js\"],\"ChatPage\"]\n8:I[2051,[],\"OutletBoundary\"]\na:I[6658,[],\"AsyncMetadataOutlet\"]\nc:I[2051,[],\"ViewportBoundary\"]\ne:I[2051,[],\"MetadataBoundary\"]\nf:\"$Sreact.suspense\"\n11:I[7698,[],\"\"]\n:HL[\"/alfred/_next/static/css/f0761175a8b5e35f.css\",\"style\"]\n"])</script><script>self.__next_f.push([1,"0:{\"P\":null,\"b\":\"exmjf2Jpr25IuJk0JqSJp\",\"p\":\"/alfred\",\"c\":[\"\",\"chat\",\"\"],\"i\":false,\"f\":[[[\"\",{\"children\":[\"chat\",{\"children\":[\"__PAGE__\",{}]}]},\"$undefined\",\"$undefined\",true],[\"\",[\"$\",\"$1\",\"c\",{\"children\":[[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/alfred/_next/static/css/f0761175a8b5e35f.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}]],[\"$\",\"html\",null,{\"lang\":\"de\",\"children\":[\"$\",\"body\",null,{\"className\":\"bg-[#0a0a0a] text-gray-200 h-screen overflow-hidden\",\"children\":[\"$\",\"$L2\",null,{\"children\":[\"$\",\"$L3\",null,{\"children\":[\"$\",\"div\",null,{\"className\":\"flex h-full\",\"children\":[[\"$\",\"$L4\",null,{}],[\"$\",\"main\",null,{\"className\":\"flex-1 overflow-y-auto\",\"children\":[\"$\",\"$L5\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L6\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":[[[\"$\",\"title\",null,{\"children\":\"404: This page could not be found.\"}],[\"$\",\"div\",null,{\"style\":{\"fontFamily\":\"system-ui,\\\"Segoe UI\\\",Roboto,Helvetica,Arial,sans-serif,\\\"Apple Color Emoji\\\",\\\"Segoe UI Emoji\\\"\",\"height\":\"100vh\",\"textAlign\":\"center\",\"display\":\"flex\",\"flexDirection\":\"column\",\"alignItems\":\"center\",\"justifyContent\":\"center\"},\"children\":[\"$\",\"div\",null,{\"children\":[[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}\"}}],[\"$\",\"h1\",null,{\"className\":\"next-error-h1\",\"style\":{\"display\":\"inline-block\",\"margin\":\"0 20px 0 0\",\"padding\":\"0 23px 0 0\",\"fontSize\":24,\"fontWeight\":500,\"verticalAlign\":\"top\",\"lineHeight\":\"49px\"},\"children\":404}],[\"$\",\"div\",null,{\"style\":{\"display\":\"inline-block\"},\"children\":[\"$\",\"h2\",null,{\"style\":{\"fontSize\":14,\"fontWeight\":400,\"lineHeight\":\"49px\",\"margin\":0},\"children\":\"This page could not be found.\"}]}]]}]}]],[]],\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]}]]}]}]}]}]}]]}],{\"children\":[\"chat\",[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$L5\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L6\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}],{\"children\":[\"__PAGE__\",[\"$\",\"$1\",\"c\",{\"children\":[[\"$\",\"$L7\",null,{}],null,[\"$\",\"$L8\",null,{\"children\":[\"$L9\",[\"$\",\"$La\",null,{\"promise\":\"$@b\"}]]}]]}],{},null,false]},null,false]},null,false],[\"$\",\"$1\",\"h\",{\"children\":[null,[[\"$\",\"$Lc\",null,{\"children\":\"$Ld\"}],null],[\"$\",\"$Le\",null,{\"children\":[\"$\",\"div\",null,{\"hidden\":true,\"children\":[\"$\",\"$f\",null,{\"fallback\":null,\"children\":\"$L10\"}]}]}]]}],false]],\"m\":\"$undefined\",\"G\":[\"$11\",[]],\"s\":false,\"S\":true}\n"])</script><script>self.__next_f.push([1,"d:[[\"$\",\"meta\",\"0\",{\"charSet\":\"utf-8\"}],[\"$\",\"meta\",\"1\",{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1\"}]]\n9:null\n"])</script><script>self.__next_f.push([1,"b:{\"metadata\":[[\"$\",\"title\",\"0\",{\"children\":\"Alfred AI\"}],[\"$\",\"meta\",\"1\",{\"name\":\"description\",\"content\":\"Self-hosted AI Assistant\"}]],\"error\":null,\"digest\":\"$undefined\"}\n"])</script><script>self.__next_f.push([1,"10:\"$b:metadata\"\n"])</script></body></html>
@@ -12,7 +12,7 @@ e:I[2051,[],"MetadataBoundary"]
12
12
  f:"$Sreact.suspense"
13
13
  11:I[7698,[],""]
14
14
  :HL["/alfred/_next/static/css/f0761175a8b5e35f.css","style"]
15
- 0:{"P":null,"b":"dgpjnZ5-RfTfsm5lTugzB","p":"/alfred","c":["","chat",""],"i":false,"f":[[["",{"children":["chat",{"children":["__PAGE__",{}]}]},"$undefined","$undefined",true],["",["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/alfred/_next/static/css/f0761175a8b5e35f.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}]],["$","html",null,{"lang":"de","children":["$","body",null,{"className":"bg-[#0a0a0a] text-gray-200 h-screen overflow-hidden","children":["$","$L2",null,{"children":["$","$L3",null,{"children":["$","div",null,{"className":"flex h-full","children":[["$","$L4",null,{}],["$","main",null,{"className":"flex-1 overflow-y-auto","children":["$","$L5",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L6",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]],"forbidden":"$undefined","unauthorized":"$undefined"}]}]]}]}]}]}]}]]}],{"children":["chat",["$","$1","c",{"children":[null,["$","$L5",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L6",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":["__PAGE__",["$","$1","c",{"children":[["$","$L7",null,{}],null,["$","$L8",null,{"children":["$L9",["$","$La",null,{"promise":"$@b"}]]}]]}],{},null,false]},null,false]},null,false],["$","$1","h",{"children":[null,[["$","$Lc",null,{"children":"$Ld"}],null],["$","$Le",null,{"children":["$","div",null,{"hidden":true,"children":["$","$f",null,{"fallback":null,"children":"$L10"}]}]}]]}],false]],"m":"$undefined","G":["$11",[]],"s":false,"S":true}
15
+ 0:{"P":null,"b":"exmjf2Jpr25IuJk0JqSJp","p":"/alfred","c":["","chat",""],"i":false,"f":[[["",{"children":["chat",{"children":["__PAGE__",{}]}]},"$undefined","$undefined",true],["",["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/alfred/_next/static/css/f0761175a8b5e35f.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}]],["$","html",null,{"lang":"de","children":["$","body",null,{"className":"bg-[#0a0a0a] text-gray-200 h-screen overflow-hidden","children":["$","$L2",null,{"children":["$","$L3",null,{"children":["$","div",null,{"className":"flex h-full","children":[["$","$L4",null,{}],["$","main",null,{"className":"flex-1 overflow-y-auto","children":["$","$L5",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L6",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]],"forbidden":"$undefined","unauthorized":"$undefined"}]}]]}]}]}]}]}]]}],{"children":["chat",["$","$1","c",{"children":[null,["$","$L5",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L6",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":["__PAGE__",["$","$1","c",{"children":[["$","$L7",null,{}],null,["$","$L8",null,{"children":["$L9",["$","$La",null,{"promise":"$@b"}]]}]]}],{},null,false]},null,false]},null,false],["$","$1","h",{"children":[null,[["$","$Lc",null,{"children":"$Ld"}],null],["$","$Le",null,{"children":["$","div",null,{"hidden":true,"children":["$","$f",null,{"fallback":null,"children":"$L10"}]}]}]]}],false]],"m":"$undefined","G":["$11",[]],"s":false,"S":true}
16
16
  d:[["$","meta","0",{"charSet":"utf-8"}],["$","meta","1",{"name":"viewport","content":"width=device-width, initial-scale=1"}]]
17
17
  9:null
18
18
  b:{"metadata":[["$","title","0",{"children":"Alfred AI"}],["$","meta","1",{"name":"description","content":"Self-hosted AI Assistant"}]],"error":null,"digest":"$undefined"}
@@ -1 +1 @@
1
- <!DOCTYPE html><!--dgpjnZ5_RfTfsm5lTugzB--><html lang="de"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="/alfred/_next/static/css/f0761175a8b5e35f.css" data-precedence="next"/><link rel="preload" as="script" fetchPriority="low" href="/alfred/_next/static/chunks/webpack-a80a11427021d142.js"/><script src="/alfred/_next/static/chunks/8e6518bb-ac69cad76942bec4.js" async=""></script><script src="/alfred/_next/static/chunks/743-8d9b5b61ab50b7b3.js" async=""></script><script src="/alfred/_next/static/chunks/main-app-bf91f7268c1fdab4.js" async=""></script><script src="/alfred/_next/static/chunks/719-2880b6276161d80c.js" async=""></script><script src="/alfred/_next/static/chunks/app/layout-893502dcb97a8de9.js" async=""></script><script src="/alfred/_next/static/chunks/app/cli-usage/page-6ebfcc4560abe7d3.js" async=""></script><title>Alfred AI</title><meta name="description" content="Self-hosted AI Assistant"/><script src="/alfred/_next/static/chunks/polyfills-42372ed130431b0a.js" noModule=""></script></head><body class="bg-[#0a0a0a] text-gray-200 h-screen overflow-hidden"><div hidden=""><!--$--><!--/$--></div><div class="flex items-center justify-center h-screen bg-[#0a0a0a]"><div class="text-gray-400">Verbinde...</div></div><script src="/alfred/_next/static/chunks/webpack-a80a11427021d142.js" id="_R_" async=""></script><script>(self.__next_f=self.__next_f||[]).push([0])</script><script>self.__next_f.push([1,"1:\"$Sreact.fragment\"\n2:I[8719,[\"719\",\"static/chunks/719-2880b6276161d80c.js\",\"177\",\"static/chunks/app/layout-893502dcb97a8de9.js\"],\"ConfigProvider\"]\n3:I[6117,[\"719\",\"static/chunks/719-2880b6276161d80c.js\",\"177\",\"static/chunks/app/layout-893502dcb97a8de9.js\"],\"AuthGate\"]\n4:I[4314,[\"719\",\"static/chunks/719-2880b6276161d80c.js\",\"177\",\"static/chunks/app/layout-893502dcb97a8de9.js\"],\"Sidebar\"]\n5:I[8954,[],\"\"]\n6:I[5640,[],\"\"]\n7:I[7740,[\"719\",\"static/chunks/719-2880b6276161d80c.js\",\"41\",\"static/chunks/app/cli-usage/page-6ebfcc4560abe7d3.js\"],\"CliUsagePage\"]\n8:I[2051,[],\"OutletBoundary\"]\na:I[6658,[],\"AsyncMetadataOutlet\"]\nc:I[2051,[],\"ViewportBoundary\"]\ne:I[2051,[],\"MetadataBoundary\"]\nf:\"$Sreact.suspense\"\n11:I[7698,[],\"\"]\n:HL[\"/alfred/_next/static/css/f0761175a8b5e35f.css\",\"style\"]\n"])</script><script>self.__next_f.push([1,"0:{\"P\":null,\"b\":\"dgpjnZ5-RfTfsm5lTugzB\",\"p\":\"/alfred\",\"c\":[\"\",\"cli-usage\",\"\"],\"i\":false,\"f\":[[[\"\",{\"children\":[\"cli-usage\",{\"children\":[\"__PAGE__\",{}]}]},\"$undefined\",\"$undefined\",true],[\"\",[\"$\",\"$1\",\"c\",{\"children\":[[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/alfred/_next/static/css/f0761175a8b5e35f.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}]],[\"$\",\"html\",null,{\"lang\":\"de\",\"children\":[\"$\",\"body\",null,{\"className\":\"bg-[#0a0a0a] text-gray-200 h-screen overflow-hidden\",\"children\":[\"$\",\"$L2\",null,{\"children\":[\"$\",\"$L3\",null,{\"children\":[\"$\",\"div\",null,{\"className\":\"flex h-full\",\"children\":[[\"$\",\"$L4\",null,{}],[\"$\",\"main\",null,{\"className\":\"flex-1 overflow-y-auto\",\"children\":[\"$\",\"$L5\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L6\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":[[[\"$\",\"title\",null,{\"children\":\"404: This page could not be found.\"}],[\"$\",\"div\",null,{\"style\":{\"fontFamily\":\"system-ui,\\\"Segoe UI\\\",Roboto,Helvetica,Arial,sans-serif,\\\"Apple Color Emoji\\\",\\\"Segoe UI Emoji\\\"\",\"height\":\"100vh\",\"textAlign\":\"center\",\"display\":\"flex\",\"flexDirection\":\"column\",\"alignItems\":\"center\",\"justifyContent\":\"center\"},\"children\":[\"$\",\"div\",null,{\"children\":[[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}\"}}],[\"$\",\"h1\",null,{\"className\":\"next-error-h1\",\"style\":{\"display\":\"inline-block\",\"margin\":\"0 20px 0 0\",\"padding\":\"0 23px 0 0\",\"fontSize\":24,\"fontWeight\":500,\"verticalAlign\":\"top\",\"lineHeight\":\"49px\"},\"children\":404}],[\"$\",\"div\",null,{\"style\":{\"display\":\"inline-block\"},\"children\":[\"$\",\"h2\",null,{\"style\":{\"fontSize\":14,\"fontWeight\":400,\"lineHeight\":\"49px\",\"margin\":0},\"children\":\"This page could not be found.\"}]}]]}]}]],[]],\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]}]]}]}]}]}]}]]}],{\"children\":[\"cli-usage\",[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$L5\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L6\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}],{\"children\":[\"__PAGE__\",[\"$\",\"$1\",\"c\",{\"children\":[[\"$\",\"$L7\",null,{}],null,[\"$\",\"$L8\",null,{\"children\":[\"$L9\",[\"$\",\"$La\",null,{\"promise\":\"$@b\"}]]}]]}],{},null,false]},null,false]},null,false],[\"$\",\"$1\",\"h\",{\"children\":[null,[[\"$\",\"$Lc\",null,{\"children\":\"$Ld\"}],null],[\"$\",\"$Le\",null,{\"children\":[\"$\",\"div\",null,{\"hidden\":true,\"children\":[\"$\",\"$f\",null,{\"fallback\":null,\"children\":\"$L10\"}]}]}]]}],false]],\"m\":\"$undefined\",\"G\":[\"$11\",[]],\"s\":false,\"S\":true}\n"])</script><script>self.__next_f.push([1,"d:[[\"$\",\"meta\",\"0\",{\"charSet\":\"utf-8\"}],[\"$\",\"meta\",\"1\",{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1\"}]]\n9:null\n"])</script><script>self.__next_f.push([1,"b:{\"metadata\":[[\"$\",\"title\",\"0\",{\"children\":\"Alfred AI\"}],[\"$\",\"meta\",\"1\",{\"name\":\"description\",\"content\":\"Self-hosted AI Assistant\"}]],\"error\":null,\"digest\":\"$undefined\"}\n"])</script><script>self.__next_f.push([1,"10:\"$b:metadata\"\n"])</script></body></html>
1
+ <!DOCTYPE html><!--exmjf2Jpr25IuJk0JqSJp--><html lang="de"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="/alfred/_next/static/css/f0761175a8b5e35f.css" data-precedence="next"/><link rel="preload" as="script" fetchPriority="low" href="/alfred/_next/static/chunks/webpack-a80a11427021d142.js"/><script src="/alfred/_next/static/chunks/8e6518bb-ac69cad76942bec4.js" async=""></script><script src="/alfred/_next/static/chunks/743-8d9b5b61ab50b7b3.js" async=""></script><script src="/alfred/_next/static/chunks/main-app-bf91f7268c1fdab4.js" async=""></script><script src="/alfred/_next/static/chunks/719-2880b6276161d80c.js" async=""></script><script src="/alfred/_next/static/chunks/app/layout-893502dcb97a8de9.js" async=""></script><script src="/alfred/_next/static/chunks/app/cli-usage/page-6ebfcc4560abe7d3.js" async=""></script><title>Alfred AI</title><meta name="description" content="Self-hosted AI Assistant"/><script src="/alfred/_next/static/chunks/polyfills-42372ed130431b0a.js" noModule=""></script></head><body class="bg-[#0a0a0a] text-gray-200 h-screen overflow-hidden"><div hidden=""><!--$--><!--/$--></div><div class="flex items-center justify-center h-screen bg-[#0a0a0a]"><div class="text-gray-400">Verbinde...</div></div><script src="/alfred/_next/static/chunks/webpack-a80a11427021d142.js" id="_R_" async=""></script><script>(self.__next_f=self.__next_f||[]).push([0])</script><script>self.__next_f.push([1,"1:\"$Sreact.fragment\"\n2:I[8719,[\"719\",\"static/chunks/719-2880b6276161d80c.js\",\"177\",\"static/chunks/app/layout-893502dcb97a8de9.js\"],\"ConfigProvider\"]\n3:I[6117,[\"719\",\"static/chunks/719-2880b6276161d80c.js\",\"177\",\"static/chunks/app/layout-893502dcb97a8de9.js\"],\"AuthGate\"]\n4:I[4314,[\"719\",\"static/chunks/719-2880b6276161d80c.js\",\"177\",\"static/chunks/app/layout-893502dcb97a8de9.js\"],\"Sidebar\"]\n5:I[8954,[],\"\"]\n6:I[5640,[],\"\"]\n7:I[7740,[\"719\",\"static/chunks/719-2880b6276161d80c.js\",\"41\",\"static/chunks/app/cli-usage/page-6ebfcc4560abe7d3.js\"],\"CliUsagePage\"]\n8:I[2051,[],\"OutletBoundary\"]\na:I[6658,[],\"AsyncMetadataOutlet\"]\nc:I[2051,[],\"ViewportBoundary\"]\ne:I[2051,[],\"MetadataBoundary\"]\nf:\"$Sreact.suspense\"\n11:I[7698,[],\"\"]\n:HL[\"/alfred/_next/static/css/f0761175a8b5e35f.css\",\"style\"]\n"])</script><script>self.__next_f.push([1,"0:{\"P\":null,\"b\":\"exmjf2Jpr25IuJk0JqSJp\",\"p\":\"/alfred\",\"c\":[\"\",\"cli-usage\",\"\"],\"i\":false,\"f\":[[[\"\",{\"children\":[\"cli-usage\",{\"children\":[\"__PAGE__\",{}]}]},\"$undefined\",\"$undefined\",true],[\"\",[\"$\",\"$1\",\"c\",{\"children\":[[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/alfred/_next/static/css/f0761175a8b5e35f.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}]],[\"$\",\"html\",null,{\"lang\":\"de\",\"children\":[\"$\",\"body\",null,{\"className\":\"bg-[#0a0a0a] text-gray-200 h-screen overflow-hidden\",\"children\":[\"$\",\"$L2\",null,{\"children\":[\"$\",\"$L3\",null,{\"children\":[\"$\",\"div\",null,{\"className\":\"flex h-full\",\"children\":[[\"$\",\"$L4\",null,{}],[\"$\",\"main\",null,{\"className\":\"flex-1 overflow-y-auto\",\"children\":[\"$\",\"$L5\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L6\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":[[[\"$\",\"title\",null,{\"children\":\"404: This page could not be found.\"}],[\"$\",\"div\",null,{\"style\":{\"fontFamily\":\"system-ui,\\\"Segoe UI\\\",Roboto,Helvetica,Arial,sans-serif,\\\"Apple Color Emoji\\\",\\\"Segoe UI Emoji\\\"\",\"height\":\"100vh\",\"textAlign\":\"center\",\"display\":\"flex\",\"flexDirection\":\"column\",\"alignItems\":\"center\",\"justifyContent\":\"center\"},\"children\":[\"$\",\"div\",null,{\"children\":[[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}\"}}],[\"$\",\"h1\",null,{\"className\":\"next-error-h1\",\"style\":{\"display\":\"inline-block\",\"margin\":\"0 20px 0 0\",\"padding\":\"0 23px 0 0\",\"fontSize\":24,\"fontWeight\":500,\"verticalAlign\":\"top\",\"lineHeight\":\"49px\"},\"children\":404}],[\"$\",\"div\",null,{\"style\":{\"display\":\"inline-block\"},\"children\":[\"$\",\"h2\",null,{\"style\":{\"fontSize\":14,\"fontWeight\":400,\"lineHeight\":\"49px\",\"margin\":0},\"children\":\"This page could not be found.\"}]}]]}]}]],[]],\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]}]]}]}]}]}]}]]}],{\"children\":[\"cli-usage\",[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$L5\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L6\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}],{\"children\":[\"__PAGE__\",[\"$\",\"$1\",\"c\",{\"children\":[[\"$\",\"$L7\",null,{}],null,[\"$\",\"$L8\",null,{\"children\":[\"$L9\",[\"$\",\"$La\",null,{\"promise\":\"$@b\"}]]}]]}],{},null,false]},null,false]},null,false],[\"$\",\"$1\",\"h\",{\"children\":[null,[[\"$\",\"$Lc\",null,{\"children\":\"$Ld\"}],null],[\"$\",\"$Le\",null,{\"children\":[\"$\",\"div\",null,{\"hidden\":true,\"children\":[\"$\",\"$f\",null,{\"fallback\":null,\"children\":\"$L10\"}]}]}]]}],false]],\"m\":\"$undefined\",\"G\":[\"$11\",[]],\"s\":false,\"S\":true}\n"])</script><script>self.__next_f.push([1,"d:[[\"$\",\"meta\",\"0\",{\"charSet\":\"utf-8\"}],[\"$\",\"meta\",\"1\",{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1\"}]]\n9:null\n"])</script><script>self.__next_f.push([1,"b:{\"metadata\":[[\"$\",\"title\",\"0\",{\"children\":\"Alfred AI\"}],[\"$\",\"meta\",\"1\",{\"name\":\"description\",\"content\":\"Self-hosted AI Assistant\"}]],\"error\":null,\"digest\":\"$undefined\"}\n"])</script><script>self.__next_f.push([1,"10:\"$b:metadata\"\n"])</script></body></html>
@@ -12,7 +12,7 @@ e:I[2051,[],"MetadataBoundary"]
12
12
  f:"$Sreact.suspense"
13
13
  11:I[7698,[],""]
14
14
  :HL["/alfred/_next/static/css/f0761175a8b5e35f.css","style"]
15
- 0:{"P":null,"b":"dgpjnZ5-RfTfsm5lTugzB","p":"/alfred","c":["","cli-usage",""],"i":false,"f":[[["",{"children":["cli-usage",{"children":["__PAGE__",{}]}]},"$undefined","$undefined",true],["",["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/alfred/_next/static/css/f0761175a8b5e35f.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}]],["$","html",null,{"lang":"de","children":["$","body",null,{"className":"bg-[#0a0a0a] text-gray-200 h-screen overflow-hidden","children":["$","$L2",null,{"children":["$","$L3",null,{"children":["$","div",null,{"className":"flex h-full","children":[["$","$L4",null,{}],["$","main",null,{"className":"flex-1 overflow-y-auto","children":["$","$L5",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L6",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]],"forbidden":"$undefined","unauthorized":"$undefined"}]}]]}]}]}]}]}]]}],{"children":["cli-usage",["$","$1","c",{"children":[null,["$","$L5",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L6",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":["__PAGE__",["$","$1","c",{"children":[["$","$L7",null,{}],null,["$","$L8",null,{"children":["$L9",["$","$La",null,{"promise":"$@b"}]]}]]}],{},null,false]},null,false]},null,false],["$","$1","h",{"children":[null,[["$","$Lc",null,{"children":"$Ld"}],null],["$","$Le",null,{"children":["$","div",null,{"hidden":true,"children":["$","$f",null,{"fallback":null,"children":"$L10"}]}]}]]}],false]],"m":"$undefined","G":["$11",[]],"s":false,"S":true}
15
+ 0:{"P":null,"b":"exmjf2Jpr25IuJk0JqSJp","p":"/alfred","c":["","cli-usage",""],"i":false,"f":[[["",{"children":["cli-usage",{"children":["__PAGE__",{}]}]},"$undefined","$undefined",true],["",["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/alfred/_next/static/css/f0761175a8b5e35f.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}]],["$","html",null,{"lang":"de","children":["$","body",null,{"className":"bg-[#0a0a0a] text-gray-200 h-screen overflow-hidden","children":["$","$L2",null,{"children":["$","$L3",null,{"children":["$","div",null,{"className":"flex h-full","children":[["$","$L4",null,{}],["$","main",null,{"className":"flex-1 overflow-y-auto","children":["$","$L5",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L6",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]],"forbidden":"$undefined","unauthorized":"$undefined"}]}]]}]}]}]}]}]]}],{"children":["cli-usage",["$","$1","c",{"children":[null,["$","$L5",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L6",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":["__PAGE__",["$","$1","c",{"children":[["$","$L7",null,{}],null,["$","$L8",null,{"children":["$L9",["$","$La",null,{"promise":"$@b"}]]}]]}],{},null,false]},null,false]},null,false],["$","$1","h",{"children":[null,[["$","$Lc",null,{"children":"$Ld"}],null],["$","$Le",null,{"children":["$","div",null,{"hidden":true,"children":["$","$f",null,{"fallback":null,"children":"$L10"}]}]}]]}],false]],"m":"$undefined","G":["$11",[]],"s":false,"S":true}
16
16
  d:[["$","meta","0",{"charSet":"utf-8"}],["$","meta","1",{"name":"viewport","content":"width=device-width, initial-scale=1"}]]
17
17
  9:null
18
18
  b:{"metadata":[["$","title","0",{"children":"Alfred AI"}],["$","meta","1",{"name":"description","content":"Self-hosted AI Assistant"}]],"error":null,"digest":"$undefined"}