@seqyuan/annovibe 0.8.111 → 0.8.114
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.next/BUILD_ID +1 -1
- package/.next/app-path-routes-manifest.json +16 -16
- package/.next/build-manifest.json +2 -2
- package/.next/prerender-manifest.json +3 -3
- package/.next/required-server-files.js +1 -1
- package/.next/required-server-files.json +1 -1
- package/.next/server/app/_global-error/page_client-reference-manifest.js +1 -1
- package/.next/server/app/_global-error.html +1 -1
- package/.next/server/app/_global-error.rsc +1 -1
- package/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
- package/.next/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +1 -1
- package/.next/server/app/_global-error.segments/_global-error.segment.rsc +1 -1
- package/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
- package/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
- package/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
- package/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
- package/.next/server/app/_not-found.html +1 -1
- package/.next/server/app/_not-found.rsc +1 -1
- package/.next/server/app/_not-found.segments/_full.segment.rsc +1 -1
- package/.next/server/app/_not-found.segments/_head.segment.rsc +1 -1
- package/.next/server/app/_not-found.segments/_index.segment.rsc +1 -1
- package/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
- package/.next/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
- package/.next/server/app/_not-found.segments/_tree.segment.rsc +1 -1
- package/.next/server/app/api/agent/[id]/events/route.js +1 -1
- package/.next/server/app/api/agent/[id]/prepare/route.js +1 -1
- package/.next/server/app/api/agent/[id]/route.js +1 -1
- package/.next/server/app/api/agent/new/route.js +1 -1
- package/.next/server/app/api/agent/running/events/route.js +1 -1
- package/.next/server/app/api/agent/runtime/route.js +1 -1
- package/.next/server/app/api/files/[...path]/route.js +2 -4
- package/.next/server/app/api/im/cancel/route.js +1 -1
- package/.next/server/app/api/im/gateway-status/route.js +1 -3
- package/.next/server/app/api/im/gateway-token/route.js +1 -3
- package/.next/server/app/api/im/project/route.js +1 -3
- package/.next/server/app/api/im/projects/route.js +1 -3
- package/.next/server/app/api/im/session-ids/route.js +1 -1
- package/.next/server/app/api/im/turn/route.js +1 -1
- package/.next/server/app/api/internal/runtime/route.js +1 -1
- package/.next/server/app/api/models/route.js +1 -1
- package/.next/server/app/api/plot-kernels/status/route.js +1 -1
- package/.next/server/app/api/plot-kernels/stop/route.js +1 -1
- package/.next/server/app/api/projects/route.js +1 -3
- package/.next/server/app/api/search/route.js +1 -3
- package/.next/server/app/api/sessions/[id]/context/route.js +1 -3
- package/.next/server/app/api/sessions/[id]/kernel-state/route.js +1 -1
- package/.next/server/app/api/sessions/[id]/plan/route.js +1 -3
- package/.next/server/app/api/sessions/[id]/route.js +1 -1
- package/.next/server/app/api/sessions/[id]/workbench-artifact/route.js +1 -1
- package/.next/server/app/api/sessions/[id]/workbench-review/route.js +1 -1
- package/.next/server/app/api/sessions/route.js +1 -1
- package/.next/server/app/api/version/route.js +1 -1
- package/.next/server/app/index.html +1 -1
- package/.next/server/app/index.rsc +2 -2
- package/.next/server/app/index.segments/__PAGE__.segment.rsc +2 -2
- package/.next/server/app/index.segments/_full.segment.rsc +2 -2
- package/.next/server/app/index.segments/_head.segment.rsc +1 -1
- package/.next/server/app/index.segments/_index.segment.rsc +1 -1
- package/.next/server/app/index.segments/_tree.segment.rsc +1 -1
- package/.next/server/app/login/page_client-reference-manifest.js +1 -1
- package/.next/server/app/login.html +1 -1
- package/.next/server/app/login.rsc +1 -1
- package/.next/server/app/login.segments/_full.segment.rsc +1 -1
- package/.next/server/app/login.segments/_head.segment.rsc +1 -1
- package/.next/server/app/login.segments/_index.segment.rsc +1 -1
- package/.next/server/app/login.segments/_tree.segment.rsc +1 -1
- package/.next/server/app/login.segments/login/__PAGE__.segment.rsc +1 -1
- package/.next/server/app/login.segments/login.segment.rsc +1 -1
- package/.next/server/app/page.js +6 -6
- package/.next/server/app/page_client-reference-manifest.js +1 -1
- package/.next/server/app/smoke/page_client-reference-manifest.js +1 -1
- package/.next/server/app/smoke.html +1 -1
- package/.next/server/app/smoke.rsc +1 -1
- package/.next/server/app/smoke.segments/_full.segment.rsc +1 -1
- package/.next/server/app/smoke.segments/_head.segment.rsc +1 -1
- package/.next/server/app/smoke.segments/_index.segment.rsc +1 -1
- package/.next/server/app/smoke.segments/_tree.segment.rsc +1 -1
- package/.next/server/app/smoke.segments/smoke/__PAGE__.segment.rsc +1 -1
- package/.next/server/app/smoke.segments/smoke.segment.rsc +1 -1
- package/.next/server/app-paths-manifest.json +16 -16
- package/.next/server/chunks/1494.js +2 -2
- package/.next/server/chunks/2562.js +12 -0
- package/.next/server/chunks/5582.js +3 -0
- package/.next/server/chunks/6429.js +13 -2
- package/.next/server/middleware-build-manifest.js +1 -1
- package/.next/server/middleware.js +3 -3
- package/.next/server/pages/404.html +1 -1
- package/.next/server/pages/500.html +1 -1
- package/.next/server/server-reference-manifest.json +1 -1
- package/.next/static/chunks/app/{page-ff67e486e055880b.js → page-ab7d1107ac4f0999.js} +4 -4
- package/package.json +3 -3
- package/.next/server/chunks/7914.js +0 -14
- /package/.next/static/{ed60keCxJ_yQf1h0-NAar → zNTq4wuwYdF4hI5SqkDDt}/_buildManifest.js +0 -0
- /package/.next/static/{ed60keCxJ_yQf1h0-NAar → zNTq4wuwYdF4hI5SqkDDt}/_ssgManifest.js +0 -0
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@seqyuan/annovibe",
|
|
3
|
-
"version": "0.8.
|
|
3
|
+
"version": "0.8.114",
|
|
4
4
|
"description": "AI-native bioinformatics workspace by Annoroad",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"bin": {
|
|
@@ -34,8 +34,8 @@
|
|
|
34
34
|
"release": "npm version patch --no-git-tag-version && npm run build && npm run pack:check && npm publish --access public"
|
|
35
35
|
},
|
|
36
36
|
"dependencies": {
|
|
37
|
-
"@earendil-works/pi-ai": "
|
|
38
|
-
"@earendil-works/pi-coding-agent": "
|
|
37
|
+
"@earendil-works/pi-ai": "0.80.2",
|
|
38
|
+
"@earendil-works/pi-coding-agent": "0.80.2",
|
|
39
39
|
"@seqyuan/kernel-lite-core": "^0.2.1",
|
|
40
40
|
"@seqyuan/pi-kernel-plot": "^0.2.1",
|
|
41
41
|
"bcryptjs": "^3.0.3",
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
exports.id=7914,exports.ids=[7914],exports.modules={12039:(a,b,c)=>{"use strict";function d(a){if("assistant"!==a.role)return a;let b=a.content;if(!Array.isArray(b))return a;let c=b.map(a=>("object"!=typeof a||null===a||Array.isArray(a)||"toolCall"!==a.type?null:{type:"toolCall",toolCallId:"string"==typeof a.toolCallId?a.toolCallId:"string"==typeof a.id?a.id:"",toolName:"string"==typeof a.toolName?a.toolName:"string"==typeof a.name?a.name:"",input:"object"!=typeof a.input||null===a.input||Array.isArray(a.input)?"object"!=typeof a.arguments||null===a.arguments||Array.isArray(a.arguments)?{}:a.arguments:a.input})??a);return{...a,content:c}}c.d(b,{B:()=>d})},40402:(a,b,c)=>{"use strict";c.a(a,async(a,d)=>{try{c.d(b,{$M:()=>e.getAgentDir,BR:()=>q,CF:()=>v,DK:()=>r,O8:()=>p,Uv:()=>s,dQ:()=>l,ev:()=>u,lG:()=>w,m1:()=>m,os:()=>o});var e=c(75430),f=c(12039),g=c(74788),h=c(29021),i=c(33873),j=a([e,g]);function k(a,b,c,d){return a.map(a=>{d.set(a.id,a.path);let e=c[a.id]??null;return{path:a.path,id:a.id,cwd:a.cwd,name:a.name,created:a.created instanceof Date?a.created.toISOString():String(a.created),modified:a.modified instanceof Date?a.modified.toISOString():String(a.modified),messageCount:a.messageCount,firstMessage:a.firstMessage||"(no messages)",parentSessionId:a.parentSessionPath?b.get(a.parentSessionPath):void 0,sessionKind:e?.sessionKind,createdBy:e?.createdBy,sessionMeta:e}})}async function l(){let a=await e.SessionManager.listAll(),b=new Map;for(let c of a)b.set(c.path,c.id);let c=(0,g.tS)();return k(a,b,c,n())}async function m(a){let b=[];for(let c of a){let a=function(a){let b=(0,i.resolve)(a),c=`--${b.replace(/^[/\\]/,"").replace(/[/\\:]/g,"-")}--`;return(0,i.join)((0,e.getAgentDir)(),"sessions",c)}(c);if((0,h.existsSync)(a))try{let c=await e.SessionManager.listAll(a);b.push(...c)}catch{}}let c=new Map;for(let a of b)c.set(a.path,a.id);let d=(0,g.tS)();return k(b,c,d,n())}function n(){return globalThis.__piSessionPathCache||(globalThis.__piSessionPathCache=new Map),globalThis.__piSessionPathCache}async function o(a){let b=n().get(a);return b||(await l(),n().get(a)??null)}function p(a,b){n().set(a,b)}function q(a){n().delete(a)}function r(a){return e.SessionManager.open(a).getEntries()}function s(a,b){let c,d,g,h=new Map;for(let b of a)h.set(b.id,b);let i=(0,e.buildSessionContext)(a,b,h);if(null===b||(b&&(c=h.get(b)),c||(c=a[a.length-1]),!c))return{messages:[],entryIds:[],thinkingLevel:i.thinkingLevel,model:i.model};let j=[],k=c;for(;k;)j.unshift(k),k=k.parentId?h.get(k.parentId):void 0;for(let a of j)"compaction"===a.type&&(d=a.id,g=a.firstKeptEntryId);let l=[];if(d){l.push(d);let a=j.findIndex(a=>a.id===d),b=g?j.findIndex((b,c)=>c<a&&b.id===g):-1,c=b>=0?b:a;for(let b=c;b<a;b++)"message"===j[b].type&&l.push(j[b].id);for(let b=a+1;b<j.length;b++)"message"===j[b].type&&l.push(j[b].id)}else for(let a of j)"message"===a.type&&l.push(a.id);return{messages:i.messages.map(a=>"compactionSummary"===a.role?{role:"user",content:`*The conversation history before this point was compacted into the following summary:*
|
|
2
|
-
|
|
3
|
-
${a.summary??""}`,timestamp:a.timestamp}:(0,f.B)(a)),entryIds:l,thinkingLevel:i.thinkingLevel,model:i.model}}function t(){return globalThis.__piSessionContextCache||(globalThis.__piSessionContextCache={map:new Map,order:[]}),globalThis.__piSessionContextCache}function u(a,b){let c=t(),d=c.map.get(a);if(!d)return null;if(d.mtime!==b){c.map.delete(a);let b=c.order.indexOf(a);return b>-1&&c.order.splice(b,1),null}let e=c.order.indexOf(a);return e>-1&&c.order.splice(e,1),c.order.push(a),d}function v(a,b){let c=t(),d=c.map.has(a);if(!d&&c.order.length>=5){let a=c.order.shift();a&&c.map.delete(a)}if(c.map.set(a,b),d){let b=c.order.indexOf(a);b>-1&&c.order.splice(b,1),c.order.push(a)}else c.order.push(a)}function w(a){let b=t();b.map.delete(a);let c=b.order.indexOf(a);c>-1&&b.order.splice(c,1)}[e,g]=j.then?(await j)():j,d()}catch(a){d(a)}})},60103:(a,b,c)=>{"use strict";c.d(b,{f:()=>g,v:()=>h});var d=c(29021);function e(a,b){let c=a.split("\n"),d=[],e="python"===b?[/^(\w+)\s*=\s*(?:sc\.read|scanpy\.read|pd\.read_csv|pd\.read_parquet|pd\.read_excel|pd\.read_table|pd\.read_hdf|dd\.read_csv)\(/,/^(\w+)\s*=\s*(?:np\.load|pickle\.load)\(/]:[/^(\w+)\s*<-\s*(?:readRDS|read\.rds|qread|qs::qread|read\.qs|read_csv|read\.csv|read_parquet)\(/,/^(\w+)\s*=\s*(?:readRDS|read\.rds|qread|qs::qread|read\.qs|read_csv|read\.csv)\(/];for(let a of c){let b=a.trim();for(let c of e){let e=b.match(c);if(e){d.push({name:e[1],source:a.trim(),loadedInRun:-1});break}}}return d}function f(a){if("string"==typeof a)try{return JSON.parse(a)}catch{return null}return"object"!=typeof a||null===a||Array.isArray(a)?null:a}function g(a){let b;try{b=(0,d.readFileSync)(a,"utf-8")}catch{return null}let c=b.split("\n").filter(a=>a.trim()),g=[],h=new Map,i=new Set,j=new Set,k=new Map,l=[],m=null,n=null;for(let a of c){let b=function(a){try{return JSON.parse(a)}catch{return null}}(a);if(!b||"message"!==b.type)continue;let c=b.message;if(!c)continue;let d=c.role,p=c.content;if(p){if("assistant"===d)for(let a of p){let c=a.type;if("toolCall"!==c&&"tool_call"!==c)continue;let d=a.name??a.toolName;if("kernel_plot_run"!==d&&"kernel_plot_render"!==d&&"kernel_plot_inspect"!==d)continue;let f=a.toolCallId??a.id,l=function(a){let b=a.input??a.arguments;if("object"==typeof b&&null!==b&&!Array.isArray(b))return b;if("string"==typeof b)try{return JSON.parse(b)}catch{}return null}(a);if(!l||!f)continue;if("kernel_plot_inspect"===d){i.add(f);let a="string"==typeof l.language?l.language:null,b="string"==typeof l.kernelId?l.kernelId:void 0;a&&(m=a),b&&(n=b);continue}let o="string"==typeof l.code?l.code:"",p="string"==typeof b.timestamp?b.timestamp:void 0,q="string"==typeof l.language?l.language:null,r="string"==typeof l.runtime?l.runtime:void 0,s="string"==typeof l.kernelId?l.kernelId:void 0,t="string"==typeof l.title&&l.title.trim()?l.title.trim():function(a){let b=a.split("\n")[0]?.trim()??"";return b.startsWith("import ")||b.startsWith("from ")||b.startsWith("library(")?"":b.replace(/^#\s*/,"").slice(0,80)}(o)||("kernel_plot_run"===d?"kernel_plot_run":"kernel_plot_render");if(q&&(m=q),s&&(n=s),q){for(let a of function(a,b){let c=a.split("\n"),d=[];for(let a of c){let c=a.trim();"python"===b?(c.startsWith("import ")||c.startsWith("from "))&&d.push(c.replace(/\s*#.*$/,"").trim()):"r"===b&&c.match(/^(library|require)\(/)&&d.push(c)}return d}(o,q))j.add(a);for(let a of e(o,q))k.set(a.name,a)}let u={index:g.length+1,toolCallId:f,language:q??"python",runtime:r,kernelId:s,title:t,code:o,status:"unknown",stdoutPreview:"",stderrPreview:"",artifacts:[],createdAt:p};g.push(u),h.set(f,{cell:u})}else if("toolResult"===d||"tool_result"===d){let a=c.toolCallId??c.id;if(!a)continue;let b="";for(let a of p)"text"===a.type&&"string"==typeof a.text&&(b+=a.text+"\n");if(i.has(a)){let a=f(c.details);a?.objects&&Array.isArray(a.objects)&&(l=a.objects.reduce((a,b)=>{if(!b||"object"!=typeof b)return a;let c="string"==typeof b.name?b.name:"",d="string"==typeof b.type?b.type:"";return c&&a.push({name:c,type:d,shape:"string"==typeof b.shape?b.shape:null,attrs:"string"==typeof b.attrs?b.attrs:null}),a},[]));continue}let d=h.get(a);if(d){let a=d.cell,e=f(c.details);if(a){var o;if(e?.run&&"object"==typeof e.run&&!Array.isArray(e.run)){let b=e.run;"string"==typeof b.runId&&(a.runId=b.runId)}let c=b.match(/stdout:\n?([\s\S]*?)(?:\nstderr:|\nerror:|\n?$)/),d=b.match(/stderr:\n?([\s\S]*?)(?:\nartifacts:|\nerror:|\n?$)/);a.stdoutPreview=(c?.[1]??"").trim().slice(0,2e3),a.stderrPreview=(d?.[1]??"").trim().slice(0,2e3),a.status=b.includes("succeeded")||b.includes("kernel_plot_run succeeded")?"succeeded":b.includes("failed")||b.includes("error")?"failed":"unknown",e?.artifacts&&(a.artifacts=Array.isArray(o=e.artifacts)?o.map(a=>"string"==typeof a?{path:a}:"object"==typeof a&&null!==a?{path:("string"==typeof a.path?a.path:"")||("string"==typeof a.filePath?a.filePath:""),kind:"string"==typeof a.kind?a.kind:void 0,mimeType:"string"==typeof a.mimeType?a.mimeType:void 0}:{path:""}).filter(a=>a.path):[])}}}}}if(0===g.length)return null;for(let a of g)for(let b of e(a.code,a.language)){let c=k.get(b.name);c&&-1===c.loadedInRun&&(c.loadedInRun=a.index)}return{freshness:l.length>0?"live":"inferred",language:m,kernelId:n,totalRuns:g.length,imports:[...j],liveObjects:l,loadedObjects:[...k.values()].filter(a=>a.loadedInRun>=0),recentRuns:g.slice(-5).map(a=>({index:a.index,title:a.title,status:a.status})),cells:g}}function h(a){let b=[`<workbench-kernel-state freshness="${a.freshness}">`],c=a.language??"?",d=a.kernelId?` \xb7 kernel: ${a.kernelId}`:"";if(b.push(`${"python"===c?"Python":"R"} kernel-lite has executed ${a.totalRuns} runs${d}.`),"live"===a.freshness?b.push("This state comes from the latest kernel_plot_inspect live runtime inspection."):(b.push("This state is inferred from prior code cells, not live-inspected. If the workbench session/kernel may have restarted, verify required objects before using or reloading them."),b.push(`Suggestion: if this session has just been resumed or the kernel may have restarted, run kernel_plot_inspect(language="${"python"===c?"python":"r"}") to check which objects are still live.`)),a.imports.length>0){let c=a.imports.map(a=>a.replace(/\s*#.*$/,"").trim()).filter((a,b,c)=>c.indexOf(a)===b);for(let a of(b.push(`
|
|
4
|
-
Historically imported packages (inferred):`),c.slice(0,15)))b.push(` ${a}`);c.length>15&&b.push(` ... and ${c.length-15} more`)}if("live"===a.freshness&&a.liveObjects.length>0)for(let c of(b.push(`
|
|
5
|
-
Live objects currently in memory:`),a.liveObjects.slice(0,12)))b.push(` ${c.name}: ${c.type}${c.shape?` (${c.shape})`:""}${c.attrs?` — ${c.attrs}`:""}`);else if(a.loadedObjects.length>0)for(let c of(b.push(`
|
|
6
|
-
Historically loaded objects (may still be in memory — verify before reloading):`),a.loadedObjects.slice(0,8)))b.push(` ${c.name} (loaded in run #${c.loadedInRun})`);if(a.recentRuns.length>0)for(let c of(b.push(`
|
|
7
|
-
Recent runs:`),a.recentRuns)){let a="succeeded"===c.status?"✅":"failed"===c.status?"❌":"⬜";b.push(` #${c.index} ${a} ${c.title}`)}return b.push(`
|
|
8
|
-
Rules:
|
|
9
|
-
- If freshness is live and a required object is listed, reuse it and do not reload.
|
|
10
|
-
- If freshness is inferred or a required object is not listed, first inspect/check existence before loading.
|
|
11
|
-
- Cheap package imports are acceptable after a resume if needed, but avoid repeating boilerplate in every call.
|
|
12
|
-
- For large objects, first check existence: Python: if 'name' not in globals() — R: if (!exists('name')).
|
|
13
|
-
- Do NOT call sc.read() / readRDS() / qread() blindly at the top of every call.
|
|
14
|
-
- If a required object is missing after a resumed session, reload only that missing object from its known source path, then continue using it.`),b.push("</workbench-kernel-state>"),b.join("\n")}},74788:(a,b,c)=>{"use strict";c.a(a,async(a,d)=>{try{c.d(b,{LN:()=>o,Of:()=>p,U5:()=>m,oR:()=>n,tS:()=>l});var e=c(29021),f=c(55511),g=c(33873),h=c(75430),i=a([h]);h=(i.then?(await i)():i)[0];let q=(0,g.join)((0,h.getAgentDir)(),"annovibe-session-meta.json"),r=Promise.resolve();function j(a){let b;b=(0,g.dirname)(q),(0,e.existsSync)(b)||(0,e.mkdirSync)(b,{recursive:!0});let c=`${q}.${(0,f.randomUUID)().slice(0,8)}.tmp`;(0,e.writeFileSync)(c,JSON.stringify(a,null,2)),(0,e.renameSync)(c,q)}async function k(a){let b,c=r;r=new Promise(a=>{b=a}),await c;try{return await a()}finally{b()}}function l(){if(!(0,e.existsSync)(q))return{};try{let a=JSON.parse((0,e.readFileSync)(q,"utf-8")),b={};for(let[c,d]of Object.entries(a)){let a=function(a){let b;if(!a||"object"!=typeof a)return null;let c="workbench"===a.sessionKind||"chat"===a.sessionKind?a.sessionKind:null;if(!c)return null;let d="launcher"===a.createdBy||"fork"===a.createdBy||"manual"===a.createdBy?a.createdBy:"manual",e=Array.isArray(a.lastToolNames)?a.lastToolNames.filter(a=>"string"==typeof a):[],f="string"==typeof a.createdAt?a.createdAt:new Date().toISOString(),g="string"==typeof a.initialSourcePath&&a.initialSourcePath?a.initialSourcePath:void 0,h="r"===a.initialKernel||"python"===a.initialKernel?a.initialKernel:void 0,i="string"==typeof a.initialKernelId&&a.initialKernelId?a.initialKernelId:void 0,j="string"==typeof a.initialKernelDisplayName&&a.initialKernelDisplayName?a.initialKernelDisplayName:void 0;if(a.goal&&"object"==typeof a.goal){let c=a.goal;"string"==typeof c.id&&"string"==typeof c.objective&&"string"==typeof c.status&&(b={id:c.id,objective:c.objective,status:c.status,tokenBudget:"number"==typeof c.tokenBudget?c.tokenBudget:void 0,tokensUsed:"number"==typeof c.tokensUsed?c.tokensUsed:0,timeUsedSeconds:"number"==typeof c.timeUsedSeconds?c.timeUsedSeconds:0,createdAt:"number"==typeof c.createdAt?c.createdAt:Date.now(),updatedAt:"number"==typeof c.updatedAt?c.updatedAt:Date.now()})}return{sessionKind:c,lastToolNames:e,createdBy:d,createdAt:f,initialSourcePath:g,initialKernel:h,initialKernelId:i,initialKernelDisplayName:j,goal:b}}(d);a&&(b[c]=a)}return b}catch{return{}}}function m(a){return l()[a]??null}async function n(a,b){await k(()=>{let c=l();c[a]=b,j(c)})}async function o(a,b){await k(()=>{let c=l(),d=c[a];d&&(c[a]={...d,...b},j(c))})}async function p(a){await k(()=>{let b=l();a in b&&(delete b[a],j(b))})}d()}catch(a){d(a)}})},78335:()=>{},96487:()=>{}};
|
|
File without changes
|
|
File without changes
|