@wujie-shell/core 2.0.2 → 3.0.0

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 (44) hide show
  1. package/bin/wujie-shell.mjs +65 -0
  2. package/dist/bin/wujie-shell.mjs +1 -1
  3. package/dist/src/agents/bundled-agent-skills.mjs +1 -1
  4. package/dist/src/agents/bundled-agents.mjs +1 -1
  5. package/dist/src/chat/media-archive.mjs +1 -1
  6. package/dist/src/chat/queue.mjs +1 -1
  7. package/dist/src/common/diagnostics.mjs +1 -1
  8. package/dist/src/common/logging.mjs +1 -1
  9. package/dist/src/common/runtime-logger.mjs +1 -1
  10. package/dist/src/common/user-events.mjs +1 -1
  11. package/dist/src/common/utils.mjs +1 -1
  12. package/dist/src/config/controller.mjs +1 -1
  13. package/dist/src/connectors/config-utils.mjs +1 -1
  14. package/dist/src/connectors/constants.mjs +1 -1
  15. package/dist/src/connectors/controller.mjs +1 -1
  16. package/dist/src/connectors/kdocs-cli.mjs +1 -1
  17. package/dist/src/electron/main.mjs +1 -1
  18. package/dist/src/electron/preload.mjs +1 -1
  19. package/dist/src/files/generated-files-store.mjs +1 -1
  20. package/dist/src/files/handlers.mjs +1 -1
  21. package/dist/src/gateway/chat-delta.mjs +1 -0
  22. package/dist/src/gateway/controller.mjs +1 -1
  23. package/dist/src/gateway/ws-client.mjs +1 -1
  24. package/dist/src/index.mjs +1 -1
  25. package/dist/src/log-reporting/handlers.mjs +1 -1
  26. package/dist/src/log-reporting/report-logs.mjs +1 -1
  27. package/dist/src/models/handlers.mjs +1 -1
  28. package/dist/src/preferences/store.mjs +1 -1
  29. package/dist/src/runtime/index.mjs +1 -1
  30. package/dist/src/runtime/patch-channel-plugin-runtime.mjs +1 -1
  31. package/dist/src/runtime/patch-chat-history-mixed-tool-content.mjs +1 -1
  32. package/dist/src/runtime/patch-session-store-sqlite.mjs +1 -0
  33. package/dist/src/runtime/plugin-sync.mjs +1 -1
  34. package/dist/src/sessions/agent-sessions-map-store.mjs +1 -1
  35. package/dist/src/sessions/runtime-bridge.mjs +1 -0
  36. package/dist/src/sessions/session-sqlite-store.mjs +1 -0
  37. package/dist/src/sessions/sql/001_init.sql +120 -0
  38. package/dist/src/sessions/sql/002_session_local_metadata.sql +15 -0
  39. package/dist/src/sessions/sql/schema.md +115 -0
  40. package/dist/src/skills/import.mjs +1 -1
  41. package/dist/src/skills/market.mjs +1 -1
  42. package/dist/src/terminal/manager.mjs +1 -1
  43. package/dist/src/updates/controller.mjs +1 -0
  44. package/package.json +10 -4
@@ -0,0 +1,115 @@
1
+ # Session SQLite Schema
2
+
3
+ ## 目标
4
+
5
+ - `session_records` 仅保留运行时热点核心字段。
6
+ - 原 `sessions.json` 的二级及更深层字段不再落 JSON 列,而是进入关联子表。
7
+ - 所有表主键都使用内部 surrogate key,不使用业务字段作为主键。
8
+ - 通过 `sql/*.sql` 增量脚本驱动初始化和升级。
9
+
10
+ ## 表结构
11
+
12
+ ### `session_records`
13
+
14
+ 核心会话摘要表,保留以下热点字段:
15
+
16
+ - `agent_id`
17
+ - `session_key`
18
+ - `session_id`
19
+ - `label`
20
+ - `session_file`
21
+ - `updated_at`
22
+ - `session_started_at`
23
+ - `last_interaction_at`
24
+ - `system_sent`
25
+ - `aborted_last_run`
26
+ - `chat_type`
27
+ - `last_channel`
28
+ - `status`
29
+ - `started_at`
30
+ - `ended_at`
31
+ - `runtime_ms`
32
+ - `model_provider`
33
+ - `model`
34
+ - `context_tokens`
35
+ - `input_tokens`
36
+ - `output_tokens`
37
+ - `cache_read`
38
+ - `cache_write`
39
+ - `estimated_cost_usd`
40
+ - `total_tokens`
41
+ - `total_tokens_fresh`
42
+
43
+ 约束:
44
+
45
+ - `id` 为自增主键
46
+ - `session_key` 唯一索引
47
+ - `agent_id`、`session_id`、`updated_at` 独立索引
48
+
49
+ ### `session_sections`
50
+
51
+ 顶层非核心字段表。每个 `session_records` 可关联多个 section,例如:
52
+
53
+ - `route`
54
+ - `deliveryContext`
55
+ - `origin`
56
+ - `skillsSnapshot`
57
+ - `systemPromptReport`
58
+ - 以及未来新增的其他顶层非核心字段
59
+
60
+ 字段说明:
61
+
62
+ - `section_name`:顶层字段名
63
+ - `section_kind`:`object` / `array` / `string` / `number` / `boolean` / `null`
64
+ - 标量 section 直接落在 `text_value` / `number_value` / `boolean_value`
65
+
66
+ 约束:
67
+
68
+ - `id` 为自增主键
69
+ - `(session_record_id, section_name)` 唯一
70
+
71
+ ### `session_section_nodes`
72
+
73
+ 递归规范化 section 内部的全部嵌套结构,不使用 JSON 列。
74
+
75
+ 字段说明:
76
+
77
+ - `section_id`:所属 section
78
+ - `parent_node_id`:父节点,根层节点为空
79
+ - `node_key`:对象属性名
80
+ - `array_index`:数组序号
81
+ - `node_kind`:`object` / `array` / `string` / `number` / `boolean` / `null`
82
+ - 标量值落在 `text_value` / `number_value` / `boolean_value`
83
+
84
+ 这张表负责承载原 `skillsSnapshot.skills[]`、`skillsSnapshot.skillFilter[]`、
85
+ `systemPromptReport.tools.entries[]`、`systemPromptReport.injectedWorkspaceFiles[]`
86
+ 等所有深层结构。
87
+
88
+ ### `session_local_metadata`
89
+
90
+ 本地产品扩展元数据表,承载不属于 OpenClaw 原始 session store 的 UI 状态:
91
+
92
+ - `session_key`
93
+ - `custom_name`
94
+ - `pinned`
95
+ - `pinned_order`
96
+
97
+ 约束:
98
+
99
+ - `session_key` 唯一
100
+ - `session_key` 外键关联 `session_records(session_key)`,删除 session 时级联清理
101
+ - `pinned_order` 仅在 `pinned = 1` 时参与置顶排序
102
+
103
+ ### 元数据表
104
+
105
+ - `session_store_migrations`:记录已执行的 SQL 版本
106
+ - `session_store_meta`:通用元数据
107
+ - `session_store_legacy_imports`:记录 legacy `sessions.json` 的一次性导入状态
108
+
109
+ ## 迁移策略
110
+
111
+ 1. 初始化或升级时按文件名顺序执行 `sql/*.sql`
112
+ 2. 每个脚本成功后写入 `session_store_migrations`
113
+ 3. 启动期扫描 legacy `agents/*/sessions/sessions.json`
114
+ 4. 已导入的 legacy 文件写入 `session_store_legacy_imports`
115
+ 5. 运行时只读写 SQLite,不再把 `sessions.json` 当权威源
@@ -1 +1 @@
1
- function _0x1317(){const _0x444792=['download','8TszHPx','.zip','tateDir','内置/扩展技能无','config','version','ZIP\x20中未找到','push','Expand-A','369520TxsMGC','盘上的目录,可能','ries\x20rem','nfig\x20upd','operty','find','3ifGjlH','workspac','ed-skill','markConf','EXDEV','ath\x20\x27','hasOwnPr','isDirect','ternally','match','bundled','load','from','fer','length','7734fHtFHV','fig','zipUrl','下载技能\x20ZIP','zip','能导入一个','writeCon','openFile','848889SqaYQF','个\x20skill\x20','call','arrayBuf','skillKey','nationPa','该技能不允许删除','imported','boolean','igWriteH','toUpperC','name','canceled','onfig\x20en','filter','-skill','skills\x20c','startsWi','error','isFile','trim','技能目录\x22','resolveS','SKILL.MD','-Command','技能不存在或已移','size','法删除','3549yBSUss','showOpen','openclaw','selected','enabled','rt-','apiKey','\x20失败(HTTP','pathname','andledIn','status','platform','2080685DcHpVv','env','keys','位于自定义\x20sk','892712BGuhXj','未找到该技能在磁','temp','y\x20is\x20req','disabled','ractive','LS.md','slice','getPath','gatewayS','ill-down','432873BXnFKS','win32','SKILL.md','Dialog','^\x5cs*','add','isArray','map','entries','ZIP\x20中包含多','th\x20\x27','-NonInte','导入技能\x20ZIP','-extra','code','extracte','Skill\x20ke','has','-bundled','d\x20或\x20SKIL','catch','replace','managed\x20','killKey','overwrit','filePath','prototyp','unzip','wujie-sk','extraDir','ase','SKILLS.M','__MACOSX','readConf','skills','source','ory','\x20SKILL.m','\x27\x20-Desti','utf8','ive','stringif','已取消导入','uired','31852wawGlt','rchive\x20-','目录,当前一次只','请手动删除','是否覆盖','skill\x20co','always','powershe'];_0x1317=function(){return _0x444792;};return _0x1317();}(function(_0x496664,_0x224950){const _0x4d387d=_0x26df,_0x562158=_0x496664();while(!![]){try{const _0x568a06=-parseInt(_0x4d387d(0x25f))/0x1+-parseInt(_0x4d387d(0x1f9))/0x2*(-parseInt(_0x4d387d(0x211))/0x3)+-parseInt(_0x4d387d(0x254))/0x4+parseInt(_0x4d387d(0x250))/0x5+parseInt(_0x4d387d(0x220))/0x6*(parseInt(_0x4d387d(0x244))/0x7)+-parseInt(_0x4d387d(0x202))/0x8*(parseInt(_0x4d387d(0x228))/0x9)+parseInt(_0x4d387d(0x20b))/0xa;if(_0x568a06===_0x224950)break;else _0x562158['push'](_0x562158['shift']());}catch(_0x291f11){_0x562158['push'](_0x562158['shift']());}}}(_0x1317,0x5adc6));import{execFile}from'node:child_process';import{existsSync}from'node:fs';function _0x26df(_0x1c42c6,_0x2eb6ec){_0x1c42c6=_0x1c42c6-0x1eb;const _0x13177f=_0x1317();let _0x26df64=_0x13177f[_0x1c42c6];return _0x26df64;}import{cp,mkdir,mkdtemp,readFile,readdir,rename,rm,writeFile}from'node:fs/promises';import{basename,dirname,join,parse}from'node:path';import{asRecord,dedupeStrings,getTrimmedString}from'../common/utils.mjs';function sanitizeManagedSkillDirSegment(_0x44b0e1){const _0x1d9032=_0x26df;let _0x315b17=getTrimmedString(_0x44b0e1)[_0x1d9032(0x274)](/[<>:"/\\|?*\u0000-\u001f]/g,'-');return _0x315b17=_0x315b17[_0x1d9032(0x274)](/-+/g,'-')[_0x1d9032(0x274)](/^[-.]+|[-.]+$/g,''),_0x315b17['slice'](0x0,0x78);}function buildManagedSkillDirectoryName(_0x44cafb,_0x424c2f,_0x2d40b8){const _0x572687=_0x26df,_0x1f9e75=sanitizeManagedSkillDirSegment(_0x44cafb)||sanitizeManagedSkillDirSegment(_0x2d40b8)||'imported'+_0x572687(0x237),_0x54c37b=sanitizeManagedSkillDirSegment(_0x424c2f),_0xe828c4=_0x54c37b?_0x1f9e75+'-'+_0x54c37b:_0x1f9e75;return _0xe828c4[_0x572687(0x25b)](0x0,0xc8)||_0x572687(0x22f)+'-skill';}function extractVersionFromZipUrl(_0x25d421){const _0x334504=_0x26df;if(!getTrimmedString(_0x25d421))return null;try{const _0x258bd3=basename(new URL(_0x25d421)[_0x334504(0x24c)]),_0x2dd8c8=_0x258bd3[_0x334504(0x274)](/\.zip$/i,'');return _0x2dd8c8[_0x334504(0x21a)](/(?:^|[-_v])(\d+\.\d+\.\d+(?:[-+][\w.-]+)?)(?:$|[-_])/i)?.[0x1]??null;}catch{return null;}}async function extractZipToDirectory(_0x5604e2,_0x31a076){await new Promise((_0x28ea36,_0x28f607)=>{const _0x142a16=_0x26df;let _0x49f9c0;if(process[_0x142a16(0x24f)]===_0x142a16(0x260)){const _0x549b47=_0x5604e2[_0x142a16(0x274)](/'/g,'\x27\x27'),_0x17993c=_0x31a076[_0x142a16(0x274)](/'/g,'\x27\x27');_0x49f9c0=execFile(_0x142a16(0x200)+'ll.exe',['-NoProfi'+'le',_0x142a16(0x26a)+_0x142a16(0x259),_0x142a16(0x240),_0x142a16(0x20a)+_0x142a16(0x1fa)+'LiteralP'+_0x142a16(0x216)+_0x549b47+(_0x142a16(0x1f3)+_0x142a16(0x22d)+_0x142a16(0x269))+_0x17993c+'\x27\x20-Force'],_0x1d034b=>_0x1d034b?_0x28f607(_0x1d034b):_0x28ea36());}else _0x49f9c0=execFile(_0x142a16(0x27a),['-q',_0x5604e2,'-d',_0x31a076],_0x585d39=>_0x585d39?_0x28f607(_0x585d39):_0x28ea36());_0x49f9c0['on'](_0x142a16(0x23a),_0x28f607);});}async function findSkillManifestDirectories(_0x3646c4){const _0x488c02=[];async function _0xba99c7(_0x29676e){const _0x4f6e6f=_0x26df,_0x156e41=await readdir(_0x29676e,{'withFileTypes':!![]}),_0x3c11a6=new Set(_0x156e41[_0x4f6e6f(0x266)](_0x4a4e81=>_0x4a4e81[_0x4f6e6f(0x233)][_0x4f6e6f(0x232)+'ase']()));if(_0x3c11a6[_0x4f6e6f(0x270)](_0x4f6e6f(0x23f))||_0x3c11a6['has'](_0x4f6e6f(0x1ec)+'D')){_0x488c02[_0x4f6e6f(0x209)](_0x29676e);return;}for(const _0x4dcd01 of _0x156e41){if(!_0x4dcd01[_0x4f6e6f(0x218)+_0x4f6e6f(0x1f1)]()||_0x4dcd01[_0x4f6e6f(0x233)]===_0x4f6e6f(0x1ed)||_0x4dcd01[_0x4f6e6f(0x233)][_0x4f6e6f(0x239)+'th']('.'))continue;await _0xba99c7(join(_0x29676e,_0x4dcd01[_0x4f6e6f(0x233)]));}}return await _0xba99c7(_0x3646c4),_0x488c02;}async function normalizeImportedSkillManifest(_0xc8085e){const _0x32aac6=_0x26df,_0xfc0b3d=join(_0xc8085e,'SKILL.md'),_0x52435c=await readdir(_0xc8085e,{'withFileTypes':!![]})['catch'](()=>[]);let _0x3207c1=null,_0x3e37ca=null;for(const _0x2bb35c of _0x52435c){if(!_0x2bb35c[_0x32aac6(0x23b)]())continue;const _0x3829d0=_0x2bb35c[_0x32aac6(0x233)][_0x32aac6(0x232)+_0x32aac6(0x1eb)]();if(_0x3829d0===_0x32aac6(0x23f))_0x3207c1=_0x2bb35c[_0x32aac6(0x233)];else{if(_0x3829d0==='SKILLS.M'+'D')_0x3e37ca=_0x2bb35c[_0x32aac6(0x233)];}}if(_0x3207c1===_0x32aac6(0x261))return;const _0x1ad8f8=_0x3207c1??_0x3e37ca;if(!_0x1ad8f8)return;const _0x370a3d=join(_0xc8085e,_0x1ad8f8);if(_0x370a3d!==_0xfc0b3d)await rename(_0x370a3d,_0xfc0b3d);}async function moveDirectoryWithOverwrite(_0x38d246,_0x2dc1fd){const _0x512b86=_0x26df;await mkdir(dirname(_0x2dc1fd),{'recursive':!![]});try{await rename(_0x38d246,_0x2dc1fd);return;}catch(_0x1f4c82){if(_0x1f4c82?.[_0x512b86(0x26d)]!==_0x512b86(0x215))throw _0x1f4c82;}await cp(_0x38d246,_0x2dc1fd,{'recursive':!![],'force':!![]}),await rm(_0x38d246,{'recursive':!![],'force':!![]});}async function readManifestText(_0x172a2f){const _0x5a352f=_0x26df,_0x1e2ab0=[join(_0x172a2f,_0x5a352f(0x261)),join(_0x172a2f,'SKILLS.m'+'d')][_0x5a352f(0x210)](_0x2870ab=>existsSync(_0x2870ab));if(!_0x1e2ab0)return'';return await readFile(_0x1e2ab0,_0x5a352f(0x1f4))['catch'](()=>'');}function resolveFrontmatterValue(_0x3abfd7,_0x61dc75){const _0x27a12f=_0x26df,_0x32460e=_0x3abfd7[_0x27a12f(0x21a)](/^---\s*\r?\n([\s\S]*?)\r?\n---/),_0x17226d=_0x32460e?.[0x1]??'',_0x4e9037=_0x17226d[_0x27a12f(0x21a)](new RegExp(_0x27a12f(0x263)+_0x61dc75+(':\x5cs*(.+)'+'$'),'m'))?.[0x1];return getTrimmedString(_0x4e9037)['replace'](/^["']|["']$/g,'')||null;}async function resolveSkillKeyFromManifest(_0x491332){const _0x21ab52=_0x26df,_0x5da22a=await readManifestText(_0x491332);if(!_0x5da22a[_0x21ab52(0x23c)]())return null;const _0x1f1022=_0x5da22a['match'](/"skillKey"\s*:\s*"([^"]+)"/);if(_0x1f1022?.[0x1])return getTrimmedString(_0x1f1022[0x1]);return resolveFrontmatterValue(_0x5da22a,'skillKey')||resolveFrontmatterValue(_0x5da22a,_0x21ab52(0x233));}async function resolveSkillVersionFromManifest(_0x198d42){const _0x4b5452=_0x26df,_0x2e9a08=await readManifestText(_0x198d42);if(!_0x2e9a08[_0x4b5452(0x23c)]())return null;const _0x13f4c2=_0x2e9a08[_0x4b5452(0x21a)](/"version"\s*:\s*"([^"]+)"/);if(_0x13f4c2?.[0x1])return getTrimmedString(_0x13f4c2[0x1]);return resolveFrontmatterValue(_0x2e9a08,_0x4b5452(0x207));}async function collectSkillDirsUnderRoot(_0xadb5b2,_0x50b598,_0x4d27d5){const _0x1da192=_0x26df;if(!existsSync(_0xadb5b2))return;for(const _0x104dfe of await readdir(_0xadb5b2,{'withFileTypes':!![]})[_0x1da192(0x273)](()=>[])){if(!_0x104dfe[_0x1da192(0x218)+_0x1da192(0x1f1)]())continue;const _0x69aa31=join(_0xadb5b2,_0x104dfe[_0x1da192(0x233)]),_0x483cf9=await resolveSkillKeyFromManifest(_0x69aa31);if(_0x483cf9&&_0x50b598['has'](_0x483cf9))_0x4d27d5[_0x1da192(0x264)](_0x69aa31);}}async function removeSkillConfigEntries(_0x464aaa,_0x3ef327){const _0x382759=_0x26df,_0x3d1d50=new Set(_0x3ef327[_0x382759(0x266)](getTrimmedString)['filter'](Boolean));if(_0x3d1d50['size']===0x0)return;const _0x455d1d=await _0x464aaa[_0x382759(0x1ee)+'ig']()[_0x382759(0x273)](()=>({})),_0x160874=asRecord(_0x455d1d[_0x382759(0x1ef)]),_0x555a7e={...asRecord(_0x160874[_0x382759(0x267)])};let _0x227edb=![];for(const _0xf5e9cb of _0x3d1d50){Object[_0x382759(0x279)+'e'][_0x382759(0x217)+'operty'][_0x382759(0x22a)](_0x555a7e,_0xf5e9cb)&&(delete _0x555a7e[_0xf5e9cb],_0x227edb=!![]);}if(!_0x227edb)return;_0x160874[_0x382759(0x267)]=_0x555a7e,_0x455d1d[_0x382759(0x1ef)]=_0x160874,_0x464aaa[_0x382759(0x214)+_0x382759(0x231)+_0x382759(0x24d)+_0x382759(0x219)]?.(),await _0x464aaa[_0x382759(0x226)+_0x382759(0x221)](_0x455d1d,_0x382759(0x1fe)+'nfig\x20ent'+_0x382759(0x20d)+'oved');}export async function deleteManagedSkill({payload:payload={},gateway:_0x4b910e,configController:_0x4bd4a1}){const _0x5115de=_0x26df,_0x133471=asRecord(payload),_0x526fc7=getTrimmedString(_0x133471[_0x5115de(0x22c)]??_0x133471['name']);if(!_0x526fc7)throw new Error(_0x5115de(0x26f)+_0x5115de(0x257)+_0x5115de(0x1f8));const _0x183fb9=await _0x4b910e[_0x5115de(0x1ef)][_0x5115de(0x24e)]()['catch'](()=>({'skills':[]})),_0x163a8e=Array['isArray'](asRecord(_0x183fb9)[_0x5115de(0x1ef)])?asRecord(_0x183fb9)[_0x5115de(0x1ef)]:[],_0x2124a9=_0x163a8e[_0x5115de(0x266)](asRecord)[_0x5115de(0x210)](_0x229cb3=>{const _0x8154e1=_0x5115de;return getTrimmedString(_0x229cb3[_0x8154e1(0x22c)])===_0x526fc7||getTrimmedString(_0x229cb3['gatewayS'+_0x8154e1(0x276)])===_0x526fc7||getTrimmedString(_0x229cb3[_0x8154e1(0x233)])===_0x526fc7;});if(!_0x2124a9)throw new Error(_0x5115de(0x241)+'除');if(_0x2124a9[_0x5115de(0x1ff)])throw new Error(_0x5115de(0x22e));if(_0x2124a9[_0x5115de(0x21b)]||_0x2124a9[_0x5115de(0x1f0)]===_0x5115de(0x246)+_0x5115de(0x271)||_0x2124a9[_0x5115de(0x1f0)]===_0x5115de(0x246)+_0x5115de(0x26c))throw new Error(_0x5115de(0x205)+_0x5115de(0x243));if(!_0x2124a9[_0x5115de(0x258)])throw new Error('请先关闭技能后再'+'删除');const _0x14a61e=getTrimmedString(_0x2124a9[_0x5115de(0x25d)+_0x5115de(0x276)])||_0x526fc7,_0x2ed62c=new Set([_0x526fc7,_0x14a61e,getTrimmedString(_0x2124a9[_0x5115de(0x233)])][_0x5115de(0x236)](Boolean)),_0x5024d8=new Set([join(_0x4bd4a1[_0x5115de(0x23e)+'tateDir'](),'skills'),join(_0x4bd4a1[_0x5115de(0x23e)+'tateDir'](),_0x5115de(0x212)+'e',_0x5115de(0x1ef))]),_0x37a92a=new Set();for(const _0x17581a of _0x5024d8)await collectSkillDirsUnderRoot(_0x17581a,_0x2ed62c,_0x37a92a);if(_0x37a92a[_0x5115de(0x242)]===0x0)throw new Error(_0x5115de(0x255)+_0x5115de(0x20c)+_0x5115de(0x253)+'ills\x20路径,'+_0x5115de(0x1fc));for(const _0x1ad5d9 of _0x37a92a)await rm(_0x1ad5d9,{'recursive':!![],'force':!![]});return await removeSkillConfigEntries(_0x4bd4a1,[..._0x2ed62c]),{'ok':!![],'skillKey':_0x526fc7};}export async function updateManagedSkillConfig({payload:payload={},configController:_0x4f5c89}){const _0x1463e3=_0x26df,_0x520d04=asRecord(payload),_0x3556b1=getTrimmedString(_0x520d04[_0x1463e3(0x22c)]??_0x520d04[_0x1463e3(0x233)]);if(!_0x3556b1)throw new Error('Skill\x20ke'+_0x1463e3(0x257)+_0x1463e3(0x1f8));const _0x57814a=await _0x4f5c89[_0x1463e3(0x1ee)+'ig']()[_0x1463e3(0x273)](()=>({})),_0x1e3a8b=asRecord(_0x57814a[_0x1463e3(0x1ef)]),_0x39d8e8={...asRecord(_0x1e3a8b[_0x1463e3(0x267)])},_0x5a1c10=asRecord(_0x39d8e8[_0x3556b1]),_0xac6142={..._0x5a1c10};typeof _0x520d04[_0x1463e3(0x248)]===_0x1463e3(0x230)&&(_0xac6142[_0x1463e3(0x248)]=_0x520d04[_0x1463e3(0x248)]);const _0x159373={...asRecord(_0x520d04[_0x1463e3(0x251)])},_0x2de991=getTrimmedString(_0x520d04[_0x1463e3(0x24a)]);if(_0x2de991)_0x159373[_0x1463e3(0x24a)]=_0x2de991;Object['keys'](_0x159373)[_0x1463e3(0x21f)]>0x0&&(_0xac6142[_0x1463e3(0x251)]={...asRecord(_0x5a1c10[_0x1463e3(0x251)]),..._0x159373});const _0x333a67=asRecord(_0x520d04[_0x1463e3(0x206)]);return Object[_0x1463e3(0x252)](_0x333a67)[_0x1463e3(0x21f)]>0x0&&(_0xac6142[_0x1463e3(0x206)]={...asRecord(_0x5a1c10[_0x1463e3(0x206)]),..._0x333a67}),_0x39d8e8[_0x3556b1]=_0xac6142,_0x1e3a8b[_0x1463e3(0x267)]=_0x39d8e8,_0x57814a[_0x1463e3(0x1ef)]=_0x1e3a8b,_0x4f5c89[_0x1463e3(0x214)+_0x1463e3(0x231)+'andledIn'+'ternally']?.(),await _0x4f5c89[_0x1463e3(0x226)+_0x1463e3(0x221)](_0x57814a,_0x1463e3(0x1fe)+_0x1463e3(0x20e)+'ated'),{'ok':!![],'skillKey':_0x3556b1};}async function ensureManagedSkillsConfig(_0x5b6431,_0x43a3c4=[]){const _0x23e938=_0x26df,_0x1c26ec=await _0x5b6431['readConf'+'ig']()['catch'](()=>({})),_0x101ed5=asRecord(_0x1c26ec[_0x23e938(0x1ef)]),_0x254b66=asRecord(_0x101ed5[_0x23e938(0x21c)]),_0x30e3c1=Array[_0x23e938(0x265)](_0x254b66['extraDir'+'s'])?_0x254b66[_0x23e938(0x27c)+'s']:[],_0x1e6b3f=join(_0x5b6431[_0x23e938(0x23e)+'tateDir'](),_0x23e938(0x1ef)),_0x457f1d=dedupeStrings([..._0x30e3c1,_0x1e6b3f]),_0x28098d={...asRecord(_0x101ed5[_0x23e938(0x267)])};let _0xb85904=JSON['stringif'+'y'](_0x30e3c1)!==JSON[_0x23e938(0x1f6)+'y'](_0x457f1d);for(const _0x4ee884 of _0x43a3c4['map'](getTrimmedString)[_0x23e938(0x236)](Boolean)){if(Object[_0x23e938(0x279)+'e'][_0x23e938(0x217)+_0x23e938(0x20f)]['call'](_0x28098d,_0x4ee884))continue;_0x28098d[_0x4ee884]={'enabled':!![]},_0xb85904=!![];}if(!_0xb85904)return;_0x254b66[_0x23e938(0x27c)+'s']=_0x457f1d,_0x101ed5['load']=_0x254b66,_0x101ed5['entries']=_0x28098d,_0x1c26ec[_0x23e938(0x1ef)]=_0x101ed5,_0x5b6431[_0x23e938(0x214)+_0x23e938(0x231)+_0x23e938(0x24d)+_0x23e938(0x219)]?.(),await _0x5b6431[_0x23e938(0x226)+_0x23e938(0x221)](_0x1c26ec,_0x23e938(0x275)+_0x23e938(0x238)+_0x23e938(0x235)+'sured');}export async function syncManagedSkillsToConfig(_0x3370a1){const _0x1a5db4=_0x26df,_0x8cf38a=join(_0x3370a1[_0x1a5db4(0x23e)+_0x1a5db4(0x204)](),'skills'),_0x1a8a30=[];for(const _0x5f5964 of await readdir(_0x8cf38a,{'withFileTypes':!![]})['catch'](()=>[])){if(!_0x5f5964[_0x1a5db4(0x218)+_0x1a5db4(0x1f1)]())continue;const _0x27b569=await resolveSkillKeyFromManifest(join(_0x8cf38a,_0x5f5964[_0x1a5db4(0x233)]));if(_0x27b569)_0x1a8a30['push'](_0x27b569);}return await ensureManagedSkillsConfig(_0x3370a1,_0x1a8a30),{'skillKeys':_0x1a8a30};}async function resolveZipPath({payload:_0x44588a,app:_0x5eec23,dialog:_0x44ade7,dialogWindow:_0x240fde}){const _0x52fe7f=_0x26df,_0x42bec0=getTrimmedString(_0x44588a[_0x52fe7f(0x222)]);let _0x3f441b=getTrimmedString(_0x44588a[_0x52fe7f(0x247)+'ZipPath']),_0x2cad7a=null;if(!_0x3f441b&&_0x42bec0){const _0x22450c=new URL(_0x42bec0);_0x2cad7a=await mkdtemp(join(_0x5eec23[_0x52fe7f(0x25c)](_0x52fe7f(0x256)),_0x52fe7f(0x27b)+_0x52fe7f(0x25e)+'load-')),_0x3f441b=join(_0x2cad7a,basename(_0x22450c['pathname'])||_0x52fe7f(0x201)+_0x52fe7f(0x213)+_0x52fe7f(0x203));const _0x138864=await fetch(_0x22450c['toString']());if(!_0x138864['ok'])throw new Error(_0x52fe7f(0x223)+_0x52fe7f(0x24b)+'\x20'+_0x138864['status']+')');await writeFile(_0x3f441b,Buffer[_0x52fe7f(0x21d)](await _0x138864[_0x52fe7f(0x22b)+_0x52fe7f(0x21e)]()));}if(!_0x3f441b){const _0x5d45ed={'title':_0x52fe7f(0x26b),'properties':[_0x52fe7f(0x227)],'filters':[{'name':'ZIP\x20Arch'+_0x52fe7f(0x1f5),'extensions':[_0x52fe7f(0x224)]}]},_0x4ccc22=_0x240fde?await _0x44ade7[_0x52fe7f(0x245)+_0x52fe7f(0x262)](_0x240fde,_0x5d45ed):await _0x44ade7[_0x52fe7f(0x245)+_0x52fe7f(0x262)](_0x5d45ed);if(_0x4ccc22[_0x52fe7f(0x234)]||_0x4ccc22[_0x52fe7f(0x278)+'s'][_0x52fe7f(0x21f)]===0x0)return{'cancelled':!![],'zipPath':null,'downloadedZipDir':_0x2cad7a};_0x3f441b=_0x4ccc22[_0x52fe7f(0x278)+'s'][0x0];}return{'cancelled':![],'zipPath':_0x3f441b,'downloadedZipDir':_0x2cad7a};}export async function importSkillZip({payload:payload={},app:_0x1d2ada,dialog:_0xc71216,dialogWindow:_0x44db7d,configController:_0x5a1198}){const _0x56e0ab=_0x26df,_0x4a660a=asRecord(payload),_0x4caf64=getTrimmedString(_0x4a660a['zipUrl']),{cancelled:_0x2f58f5,zipPath:_0x1653c0,downloadedZipDir:_0x94f754}=await resolveZipPath({'payload':_0x4a660a,'app':_0x1d2ada,'dialog':_0xc71216,'dialogWindow':_0x44db7d});if(_0x2f58f5)return{'cancelled':!![],'imported':![],'overwritten':![],'skillDirName':null,'selectedZipPath':null,'zipUrl':_0x4caf64||null,'message':_0x56e0ab(0x1f7)};const _0x4a108e=await mkdtemp(join(_0x1d2ada[_0x56e0ab(0x25c)](_0x56e0ab(0x256)),_0x56e0ab(0x27b)+'ill-impo'+_0x56e0ab(0x249))),_0x116491=join(_0x4a108e,_0x56e0ab(0x26e)+'d');try{await mkdir(_0x116491,{'recursive':!![]}),await extractZipToDirectory(_0x1653c0,_0x116491);const _0x5b44d6=await findSkillManifestDirectories(_0x116491);if(_0x5b44d6[_0x56e0ab(0x21f)]===0x0)throw new Error(_0x56e0ab(0x208)+_0x56e0ab(0x1f2)+_0x56e0ab(0x272)+_0x56e0ab(0x25a));if(_0x5b44d6[_0x56e0ab(0x21f)]>0x1)throw new Error(_0x56e0ab(0x268)+_0x56e0ab(0x229)+_0x56e0ab(0x1fb)+_0x56e0ab(0x225));const _0x2941a0=_0x5b44d6[0x0];await normalizeImportedSkillManifest(_0x2941a0);const _0x1c6a79=basename(_0x2941a0),_0x1eb787=parse(_0x1653c0)[_0x56e0ab(0x233)][_0x56e0ab(0x23c)]()||'imported'+_0x56e0ab(0x237),_0x33d780=_0x1c6a79==='extracte'+'d'?_0x1eb787:_0x1c6a79,_0x51a5e8=await resolveSkillKeyFromManifest(_0x2941a0)??_0x33d780,_0xd44737=await resolveSkillVersionFromManifest(_0x2941a0)??(getTrimmedString(_0x4a660a['version'])||extractVersionFromZipUrl(_0x4caf64)),_0x18bac3=buildManagedSkillDirectoryName(_0x51a5e8,_0xd44737,_0x33d780),_0x17fc5a=join(_0x5a1198[_0x56e0ab(0x23e)+_0x56e0ab(0x204)](),_0x56e0ab(0x1ef)),_0x3a1375=join(_0x17fc5a,_0x18bac3);if(existsSync(_0x3a1375)){if(_0x4a660a[_0x56e0ab(0x277)+'e']!==!![])return{'cancelled':![],'imported':![],'overwritten':![],'needConfirmOverwrite':!![],'skillDirName':_0x18bac3,'overwriteTargetPath':_0x3a1375,'selectedZipPath':_0x1653c0,'zipUrl':_0x4caf64||null,'message':_0x56e0ab(0x23d)+_0x18bac3+('\x22已存在,请确认'+_0x56e0ab(0x1fd))};await rm(_0x3a1375,{'recursive':!![],'force':!![]});}let _0xaad42c=_0x2941a0;return _0x1c6a79==='extracte'+'d'&&(_0xaad42c=join(_0x4a108e,_0x18bac3),await rename(_0x2941a0,_0xaad42c)),await moveDirectoryWithOverwrite(_0xaad42c,_0x3a1375),await ensureManagedSkillsConfig(_0x5a1198,[_0x51a5e8]),{'cancelled':![],'imported':!![],'overwritten':_0x4a660a[_0x56e0ab(0x277)+'e']===!![],'skillKey':_0x51a5e8,'manifestKey':_0x51a5e8,'skillDirName':_0x18bac3,'targetPath':_0x3a1375,'selectedZipPath':_0x1653c0,'zipUrl':_0x4caf64||null,'message':_0x18bac3+'\x20添加成功'};}finally{await rm(_0x4a108e,{'recursive':!![],'force':!![]});if(_0x94f754)await rm(_0x94f754,{'recursive':!![],'force':!![]});}}
1
+ (function(_0x2e833e,_0x34debb){const _0x3a8bc0=_0x1e89,_0x33af44=_0x2e833e();while(!![]){try{const _0x51324f=parseInt(_0x3a8bc0(0x129))/0x1*(parseInt(_0x3a8bc0(0xcc))/0x2)+-parseInt(_0x3a8bc0(0xdc))/0x3*(-parseInt(_0x3a8bc0(0xce))/0x4)+-parseInt(_0x3a8bc0(0x147))/0x5*(parseInt(_0x3a8bc0(0xc0))/0x6)+parseInt(_0x3a8bc0(0x125))/0x7+-parseInt(_0x3a8bc0(0xfc))/0x8*(parseInt(_0x3a8bc0(0x109))/0x9)+parseInt(_0x3a8bc0(0x137))/0xa*(-parseInt(_0x3a8bc0(0xf9))/0xb)+-parseInt(_0x3a8bc0(0xd4))/0xc;if(_0x51324f===_0x34debb)break;else _0x33af44['push'](_0x33af44['shift']());}catch(_0x22102d){_0x33af44['push'](_0x33af44['shift']());}}}(_0x4eb6,0x70d2c));import{execFile}from'node:child_process';import{existsSync}from'node:fs';import{cp,mkdir,mkdtemp,readFile,readdir,rename,rm,writeFile}from'node:fs/promises';import{basename,dirname,join,parse}from'node:path';import{asRecord,dedupeStrings,getTrimmedString}from'../common/utils.mjs';function sanitizeManagedSkillDirSegment(_0x47e129){const _0x3773e6=_0x1e89;let _0x2bc939=getTrimmedString(_0x47e129)[_0x3773e6(0x10b)](/[<>:"/\\|?*\u0000-\u001f]/g,'-');return _0x2bc939=_0x2bc939['replace'](/-+/g,'-')[_0x3773e6(0x10b)](/^[-.]+|[-.]+$/g,''),_0x2bc939[_0x3773e6(0x104)](0x0,0x78);}function buildManagedSkillDirectoryName(_0x423c82,_0x2803d2,_0x4776e9){const _0x544541=_0x1e89,_0x4d1b57=sanitizeManagedSkillDirSegment(_0x423c82)||sanitizeManagedSkillDirSegment(_0x4776e9)||_0x544541(0x118)+_0x544541(0xfe),_0x5e52d4=sanitizeManagedSkillDirSegment(_0x2803d2),_0x20af5c=_0x5e52d4?_0x4d1b57+'-'+_0x5e52d4:_0x4d1b57;return _0x20af5c[_0x544541(0x104)](0x0,0xc8)||'imported'+'-skill';}function extractVersionFromZipUrl(_0x362fdc){const _0x1ddc8f=_0x1e89;if(!getTrimmedString(_0x362fdc))return null;try{const _0x2f2b7e=basename(new URL(_0x362fdc)[_0x1ddc8f(0xea)]),_0x200554=_0x2f2b7e['replace'](/\.zip$/i,'');return _0x200554[_0x1ddc8f(0xca)](/(?:^|[-_v])(\d+\.\d+\.\d+(?:[-+][\w.-]+)?)(?:$|[-_])/i)?.[0x1]??null;}catch{return null;}}async function extractZipToDirectory(_0x40480c,_0x30e2fa){await new Promise((_0x3d2d48,_0xe2959d)=>{const _0x2422e4=_0x1e89;let _0x31eb12;if(process[_0x2422e4(0xf4)]===_0x2422e4(0x115)){const _0x3786e3=_0x40480c['replace'](/'/g,'\x27\x27'),_0x42078b=_0x30e2fa['replace'](/'/g,'\x27\x27');_0x31eb12=execFile(_0x2422e4(0xec)+_0x2422e4(0xeb),[_0x2422e4(0x14d)+'le',_0x2422e4(0xe6)+_0x2422e4(0xe0),_0x2422e4(0xd6),_0x2422e4(0xc6)+'rchive\x20-'+_0x2422e4(0xfb)+_0x2422e4(0x106)+_0x3786e3+(_0x2422e4(0xc5)+_0x2422e4(0x11b)+_0x2422e4(0xe4))+_0x42078b+_0x2422e4(0xf8)],_0x172b56=>_0x172b56?_0xe2959d(_0x172b56):_0x3d2d48());}else _0x31eb12=execFile(_0x2422e4(0xfd),['-q',_0x40480c,'-d',_0x30e2fa],_0x21b6ef=>_0x21b6ef?_0xe2959d(_0x21b6ef):_0x3d2d48());_0x31eb12['on']('error',_0xe2959d);});}async function findSkillManifestDirectories(_0x10adb4){const _0x48543c=[];async function _0x185378(_0x2cd84e){const _0x5c4402=_0x1e89,_0x174752=await readdir(_0x2cd84e,{'withFileTypes':!![]}),_0x4c70bd=new Set(_0x174752[_0x5c4402(0x13e)](_0x1d6384=>_0x1d6384[_0x5c4402(0x124)][_0x5c4402(0xff)+_0x5c4402(0x12c)]()));if(_0x4c70bd['has'](_0x5c4402(0xc2))||_0x4c70bd[_0x5c4402(0xcf)]('SKILLS.M'+'D')){_0x48543c[_0x5c4402(0xbd)](_0x2cd84e);return;}for(const _0x50036b of _0x174752){if(!_0x50036b[_0x5c4402(0x111)+'ory']()||_0x50036b[_0x5c4402(0x124)]===_0x5c4402(0xbf)||_0x50036b[_0x5c4402(0x124)][_0x5c4402(0x133)+'th']('.'))continue;await _0x185378(join(_0x2cd84e,_0x50036b[_0x5c4402(0x124)]));}}return await _0x185378(_0x10adb4),_0x48543c;}function _0x4eb6(){const _0x3bd878=['ill-impo','该技能不允许删除','ed-skill','platform','zipUrl','igWriteH','是否覆盖','\x27\x20-Force','77869IDxxDW','status','LiteralP','2050504OlaJXi','unzip','-skill','toUpperC','Skill\x20ke','andledIn','ternally','LS.md','slice','teway\x20re','ath\x20\x27','extraDir','ZIP\x20Arch','27ugihGk','ZIP\x20中包含多','replace','extracte','skillKey','source','y\x20is\x20req','resolveS','isDirect','技能不存在或已移','version','trim','win32','always','load-','imported','stringif','法删除','nationPa','d\x20或\x20SKIL','hasOwnPr','ills\x20路径,','ive','env','length','readConf','tart','name','5457690gkTApT','showOpen','skills\x20c','prototyp','1MQDHdD','技能目录\x22','能导入一个','ase','config','EXDEV','download','skills','apiKey','导入技能\x20ZIP','startsWi','isFile','ated\x20wit','size','310zqxxzo','uired','Dialog','eway\x20res','fer','-bundled','arrayBuf','map','openFile','code','oved\x20wit','目录,当前一次只','from','onfig\x20en','overwrit','killKey','5fXKAYb','zip','add','load','call','ill-down','-NoProfi','内置/扩展技能无','nfig\x20ent','selected','\x20添加成功','tateDir','SKILL.md','ZIP\x20中未找到','writeCon','push','rt-','__MACOSX','979878JAePIF','^\x5cs*','SKILL.MD',':\x5cs*(.+)','temp','\x27\x20-Desti','Expand-A','openclaw','markConf','hout\x20gat','match','fig','265978XVzTBa','sured\x20wi','3039604ZPUKDD','has','disabled','enabled','managed\x20','keys','704820VyeqPx','filter','-Command','\x22已存在,请确认','entries','operty','ory','gatewayS','3PKTUgS','SKILLS.M','nfig\x20upd','getPath','ractive','boolean','-extra','skill\x20co','th\x20\x27','thout\x20ga','-NonInte','bundled','find','utf8','pathname','ll.exe','powershe','wujie-sk','filePath','isArray','catch'];_0x4eb6=function(){return _0x3bd878;};return _0x4eb6();}async function normalizeImportedSkillManifest(_0x5e3570){const _0x5a3dd2=_0x1e89,_0xc02be0=join(_0x5e3570,_0x5a3dd2(0xba)),_0xa391ba=await readdir(_0x5e3570,{'withFileTypes':!![]})[_0x5a3dd2(0xf0)](()=>[]);let _0x530097=null,_0x47abe7=null;for(const _0x2d6c63 of _0xa391ba){if(!_0x2d6c63[_0x5a3dd2(0x134)]())continue;const _0xd0f997=_0x2d6c63[_0x5a3dd2(0x124)]['toUpperC'+'ase']();if(_0xd0f997===_0x5a3dd2(0xc2))_0x530097=_0x2d6c63['name'];else{if(_0xd0f997===_0x5a3dd2(0xdd)+'D')_0x47abe7=_0x2d6c63['name'];}}if(_0x530097===_0x5a3dd2(0xba))return;const _0x4daaf3=_0x530097??_0x47abe7;if(!_0x4daaf3)return;const _0x205f7c=join(_0x5e3570,_0x4daaf3);if(_0x205f7c!==_0xc02be0)await rename(_0x205f7c,_0xc02be0);}async function moveDirectoryWithOverwrite(_0x4d0fd2,_0x2fd51a){const _0x24f276=_0x1e89;await mkdir(dirname(_0x2fd51a),{'recursive':!![]});try{await rename(_0x4d0fd2,_0x2fd51a);return;}catch(_0x277bdd){if(_0x277bdd?.[_0x24f276(0x140)]!==_0x24f276(0x12e))throw _0x277bdd;}await cp(_0x4d0fd2,_0x2fd51a,{'recursive':!![],'force':!![]}),await rm(_0x4d0fd2,{'recursive':!![],'force':!![]});}async function readManifestText(_0x1f0f9b){const _0x15b893=_0x1e89,_0x496bb3=[join(_0x1f0f9b,'SKILL.md'),join(_0x1f0f9b,'SKILLS.m'+'d')]['find'](_0x52ceb0=>existsSync(_0x52ceb0));if(!_0x496bb3)return'';return await readFile(_0x496bb3,_0x15b893(0xe9))[_0x15b893(0xf0)](()=>'');}function resolveFrontmatterValue(_0x4d46bc,_0x3c7923){const _0x2f71a9=_0x1e89,_0x7ae77f=_0x4d46bc['match'](/^---\s*\r?\n([\s\S]*?)\r?\n---/),_0x93c2a0=_0x7ae77f?.[0x1]??'',_0x134dd8=_0x93c2a0[_0x2f71a9(0xca)](new RegExp(_0x2f71a9(0xc1)+_0x3c7923+(_0x2f71a9(0xc3)+'$'),'m'))?.[0x1];return getTrimmedString(_0x134dd8)[_0x2f71a9(0x10b)](/^["']|["']$/g,'')||null;}async function resolveSkillKeyFromManifest(_0x4612dc){const _0x2abaf6=_0x1e89,_0x2cfba0=await readManifestText(_0x4612dc);if(!_0x2cfba0[_0x2abaf6(0x114)]())return null;const _0x58d015=_0x2cfba0[_0x2abaf6(0xca)](/"skillKey"\s*:\s*"([^"]+)"/);if(_0x58d015?.[0x1])return getTrimmedString(_0x58d015[0x1]);return resolveFrontmatterValue(_0x2cfba0,'skillKey')||resolveFrontmatterValue(_0x2cfba0,_0x2abaf6(0x124));}async function resolveSkillVersionFromManifest(_0x173e5b){const _0x46dd2a=_0x1e89,_0x554759=await readManifestText(_0x173e5b);if(!_0x554759['trim']())return null;const _0x9f451a=_0x554759[_0x46dd2a(0xca)](/"version"\s*:\s*"([^"]+)"/);if(_0x9f451a?.[0x1])return getTrimmedString(_0x9f451a[0x1]);return resolveFrontmatterValue(_0x554759,_0x46dd2a(0x113));}async function collectSkillDirsUnderRoot(_0x11a4b9,_0x234763,_0x46feb5){const _0x3c94fa=_0x1e89;if(!existsSync(_0x11a4b9))return;for(const _0x34491a of await readdir(_0x11a4b9,{'withFileTypes':!![]})[_0x3c94fa(0xf0)](()=>[])){if(!_0x34491a[_0x3c94fa(0x111)+_0x3c94fa(0xda)]())continue;const _0x3ed63d=join(_0x11a4b9,_0x34491a[_0x3c94fa(0x124)]),_0x3bcf39=await resolveSkillKeyFromManifest(_0x3ed63d);if(_0x3bcf39&&_0x234763[_0x3c94fa(0xcf)](_0x3bcf39))_0x46feb5[_0x3c94fa(0x149)](_0x3ed63d);}}async function removeSkillConfigEntries(_0x423a6d,_0x24a829){const _0x14d22e=_0x1e89,_0x3ae2d3=new Set(_0x24a829[_0x14d22e(0x13e)](getTrimmedString)[_0x14d22e(0xd5)](Boolean));if(_0x3ae2d3[_0x14d22e(0x136)]===0x0)return;const _0x202542=await _0x423a6d['readConf'+'ig']()[_0x14d22e(0xf0)](()=>({})),_0x349ca9=asRecord(_0x202542['skills']),_0x2479ba={...asRecord(_0x349ca9[_0x14d22e(0xd8)])};let _0x5c3100=![];for(const _0x59afa0 of _0x3ae2d3){Object[_0x14d22e(0x128)+'e'][_0x14d22e(0x11d)+'operty'][_0x14d22e(0x14b)](_0x2479ba,_0x59afa0)&&(delete _0x2479ba[_0x59afa0],_0x5c3100=!![]);}if(!_0x5c3100)return;_0x349ca9[_0x14d22e(0xd8)]=_0x2479ba,_0x202542[_0x14d22e(0x130)]=_0x349ca9,_0x423a6d[_0x14d22e(0xc8)+_0x14d22e(0xf6)+_0x14d22e(0x101)+_0x14d22e(0x102)]?.(),await _0x423a6d[_0x14d22e(0xbc)+_0x14d22e(0xcb)]?.(_0x202542,_0x14d22e(0xe3)+_0x14d22e(0x14f)+'ries\x20rem'+_0x14d22e(0x141)+_0x14d22e(0xc9)+_0x14d22e(0x13a)+'tart');}export async function deleteManagedSkill({payload:payload={},gateway:_0x551bb5,configController:_0x550fd7}){const _0x1320ed=_0x1e89,_0x2202d0=asRecord(payload),_0xbf3a5d=getTrimmedString(_0x2202d0[_0x1320ed(0x10d)]??_0x2202d0[_0x1320ed(0x124)]);if(!_0xbf3a5d)throw new Error('Skill\x20ke'+'y\x20is\x20req'+_0x1320ed(0x138));const _0x1926da=await _0x551bb5['skills'][_0x1320ed(0xfa)]()[_0x1320ed(0xf0)](()=>({'skills':[]})),_0x48fbbc=Array[_0x1320ed(0xef)](asRecord(_0x1926da)['skills'])?asRecord(_0x1926da)[_0x1320ed(0x130)]:[],_0x3e734f=_0x48fbbc[_0x1320ed(0x13e)](asRecord)[_0x1320ed(0xe8)](_0x2ba24c=>{const _0x1fcec1=_0x1320ed;return getTrimmedString(_0x2ba24c['skillKey'])===_0xbf3a5d||getTrimmedString(_0x2ba24c[_0x1fcec1(0xdb)+_0x1fcec1(0x146)])===_0xbf3a5d||getTrimmedString(_0x2ba24c['name'])===_0xbf3a5d;});if(!_0x3e734f)throw new Error(_0x1320ed(0x112)+'除');if(_0x3e734f[_0x1320ed(0x116)])throw new Error(_0x1320ed(0xf2));if(_0x3e734f[_0x1320ed(0xe7)]||_0x3e734f[_0x1320ed(0x10e)]===_0x1320ed(0xc7)+_0x1320ed(0x13c)||_0x3e734f[_0x1320ed(0x10e)]===_0x1320ed(0xc7)+_0x1320ed(0xe2))throw new Error(_0x1320ed(0x14e)+_0x1320ed(0x11a));if(!_0x3e734f[_0x1320ed(0xd0)])throw new Error('请先关闭技能后再'+'删除');const _0x38feb5=getTrimmedString(_0x3e734f[_0x1320ed(0xdb)+_0x1320ed(0x146)])||_0xbf3a5d,_0x1b6e90=new Set([_0xbf3a5d,_0x38feb5,getTrimmedString(_0x3e734f['name'])][_0x1320ed(0xd5)](Boolean)),_0x353763=new Set([join(_0x550fd7[_0x1320ed(0x110)+_0x1320ed(0x152)](),'skills'),join(_0x550fd7['resolveS'+_0x1320ed(0x152)](),'workspac'+'e','skills')]),_0x1f24e0=new Set();for(const _0x4463ce of _0x353763)await collectSkillDirsUnderRoot(_0x4463ce,_0x1b6e90,_0x1f24e0);if(_0x1f24e0[_0x1320ed(0x136)]===0x0)throw new Error('未找到该技能在磁'+'盘上的目录,可能'+'位于自定义\x20sk'+_0x1320ed(0x11e)+'请手动删除');for(const _0x82dbf1 of _0x1f24e0)await rm(_0x82dbf1,{'recursive':!![],'force':!![]});return await removeSkillConfigEntries(_0x550fd7,[..._0x1b6e90]),{'ok':!![],'skillKey':_0xbf3a5d};}export async function updateManagedSkillConfig({payload:payload={},configController:_0x3ac307}){const _0xeb93e8=_0x1e89,_0x305831=asRecord(payload),_0x2b6b65=getTrimmedString(_0x305831[_0xeb93e8(0x10d)]??_0x305831[_0xeb93e8(0x124)]);if(!_0x2b6b65)throw new Error(_0xeb93e8(0x100)+_0xeb93e8(0x10f)+_0xeb93e8(0x138));const _0x5f5176=await _0x3ac307[_0xeb93e8(0x122)+'ig']()[_0xeb93e8(0xf0)](()=>({})),_0x5edfd0=asRecord(_0x5f5176['skills']),_0x1b6f15={...asRecord(_0x5edfd0[_0xeb93e8(0xd8)])},_0x120afe=asRecord(_0x1b6f15[_0x2b6b65]),_0x3609e8={..._0x120afe};typeof _0x305831[_0xeb93e8(0xd1)]===_0xeb93e8(0xe1)&&(_0x3609e8['enabled']=_0x305831[_0xeb93e8(0xd1)]);const _0x417380={...asRecord(_0x305831[_0xeb93e8(0x120)])},_0x58017a=getTrimmedString(_0x305831[_0xeb93e8(0x131)]);if(_0x58017a)_0x417380[_0xeb93e8(0x131)]=_0x58017a;Object['keys'](_0x417380)[_0xeb93e8(0x121)]>0x0&&(_0x3609e8[_0xeb93e8(0x120)]={...asRecord(_0x120afe[_0xeb93e8(0x120)]),..._0x417380});const _0x48fb71=asRecord(_0x305831[_0xeb93e8(0x12d)]);return Object[_0xeb93e8(0xd3)](_0x48fb71)[_0xeb93e8(0x121)]>0x0&&(_0x3609e8['config']={...asRecord(_0x120afe[_0xeb93e8(0x12d)]),..._0x48fb71}),_0x1b6f15[_0x2b6b65]=_0x3609e8,_0x5edfd0['entries']=_0x1b6f15,_0x5f5176[_0xeb93e8(0x130)]=_0x5edfd0,_0x3ac307[_0xeb93e8(0xc8)+_0xeb93e8(0xf6)+_0xeb93e8(0x101)+_0xeb93e8(0x102)]?.(),await _0x3ac307[_0xeb93e8(0xbc)+_0xeb93e8(0xcb)]?.(_0x5f5176,_0xeb93e8(0xe3)+_0xeb93e8(0xde)+_0xeb93e8(0x135)+'hout\x20gat'+_0xeb93e8(0x13a)+_0xeb93e8(0x123)),{'ok':!![],'skillKey':_0x2b6b65};}async function ensureManagedSkillsConfig(_0x3577ea,_0xa22828=[]){const _0x473a99=_0x1e89,_0x1fe145=await _0x3577ea[_0x473a99(0x122)+'ig']()[_0x473a99(0xf0)](()=>({})),_0xc5cfe8=asRecord(_0x1fe145[_0x473a99(0x130)]),_0x50d69e=asRecord(_0xc5cfe8[_0x473a99(0x14a)]),_0x5ddcc3=Array['isArray'](_0x50d69e[_0x473a99(0x107)+'s'])?_0x50d69e[_0x473a99(0x107)+'s']:[],_0x1b1a38=join(_0x3577ea['resolveS'+_0x473a99(0x152)](),_0x473a99(0x130)),_0x2fb4e4=dedupeStrings([..._0x5ddcc3,_0x1b1a38]),_0x23a998={...asRecord(_0xc5cfe8[_0x473a99(0xd8)])};let _0x369f53=JSON[_0x473a99(0x119)+'y'](_0x5ddcc3)!==JSON[_0x473a99(0x119)+'y'](_0x2fb4e4);for(const _0x42cdc1 of _0xa22828[_0x473a99(0x13e)](getTrimmedString)[_0x473a99(0xd5)](Boolean)){if(Object[_0x473a99(0x128)+'e'][_0x473a99(0x11d)+_0x473a99(0xd9)][_0x473a99(0x14b)](_0x23a998,_0x42cdc1))continue;_0x23a998[_0x42cdc1]={'enabled':!![]},_0x369f53=!![];}if(!_0x369f53)return;_0x50d69e['extraDir'+'s']=_0x2fb4e4,_0xc5cfe8[_0x473a99(0x14a)]=_0x50d69e,_0xc5cfe8['entries']=_0x23a998,_0x1fe145['skills']=_0xc5cfe8,_0x3577ea['markConf'+_0x473a99(0xf6)+'andledIn'+_0x473a99(0x102)]?.(),await _0x3577ea[_0x473a99(0xbc)+_0x473a99(0xcb)]?.(_0x1fe145,_0x473a99(0xd2)+_0x473a99(0x127)+_0x473a99(0x144)+_0x473a99(0xcd)+_0x473a99(0xe5)+_0x473a99(0x105)+'start');}export async function syncManagedSkillsToConfig(_0x3cfee4){const _0x7fc154=_0x1e89,_0x27a188=join(_0x3cfee4[_0x7fc154(0x110)+_0x7fc154(0x152)](),_0x7fc154(0x130)),_0xe4750f=[];for(const _0x15b5e9 of await readdir(_0x27a188,{'withFileTypes':!![]})[_0x7fc154(0xf0)](()=>[])){if(!_0x15b5e9[_0x7fc154(0x111)+_0x7fc154(0xda)]())continue;const _0x2d4970=await resolveSkillKeyFromManifest(join(_0x27a188,_0x15b5e9[_0x7fc154(0x124)]));if(_0x2d4970)_0xe4750f[_0x7fc154(0xbd)](_0x2d4970);}return await ensureManagedSkillsConfig(_0x3cfee4,_0xe4750f),{'skillKeys':_0xe4750f};}async function resolveZipPath({payload:_0x1c3972,app:_0xe0c02f,dialog:_0x484ac8,dialogWindow:_0x3f83d8}){const _0x29b217=_0x1e89,_0xd57004=getTrimmedString(_0x1c3972[_0x29b217(0xf5)]);let _0x1a9aa7=getTrimmedString(_0x1c3972[_0x29b217(0x150)+'ZipPath']),_0x501ab4=null;if(!_0x1a9aa7&&_0xd57004){const _0x116831=new URL(_0xd57004);_0x501ab4=await mkdtemp(join(_0xe0c02f[_0x29b217(0xdf)](_0x29b217(0xc4)),_0x29b217(0xed)+_0x29b217(0x14c)+_0x29b217(0x117))),_0x1a9aa7=join(_0x501ab4,basename(_0x116831[_0x29b217(0xea)])||_0x29b217(0x12f)+_0x29b217(0xf3)+'.zip');const _0x2ac636=await fetch(_0x116831['toString']());if(!_0x2ac636['ok'])throw new Error('下载技能\x20ZIP'+'\x20失败(HTTP'+'\x20'+_0x2ac636[_0x29b217(0xfa)]+')');await writeFile(_0x1a9aa7,Buffer[_0x29b217(0x143)](await _0x2ac636[_0x29b217(0x13d)+_0x29b217(0x13b)]()));}if(!_0x1a9aa7){const _0x4450d1={'title':_0x29b217(0x132),'properties':[_0x29b217(0x13f)],'filters':[{'name':_0x29b217(0x108)+_0x29b217(0x11f),'extensions':[_0x29b217(0x148)]}]},_0xd4e9e1=_0x3f83d8?await _0x484ac8[_0x29b217(0x126)+'Dialog'](_0x3f83d8,_0x4450d1):await _0x484ac8[_0x29b217(0x126)+_0x29b217(0x139)](_0x4450d1);if(_0xd4e9e1['canceled']||_0xd4e9e1[_0x29b217(0xee)+'s'][_0x29b217(0x121)]===0x0)return{'cancelled':!![],'zipPath':null,'downloadedZipDir':_0x501ab4};_0x1a9aa7=_0xd4e9e1[_0x29b217(0xee)+'s'][0x0];}return{'cancelled':![],'zipPath':_0x1a9aa7,'downloadedZipDir':_0x501ab4};}function _0x1e89(_0x169702,_0x599368){_0x169702=_0x169702-0xba;const _0x4eb6aa=_0x4eb6();let _0x1e895b=_0x4eb6aa[_0x169702];return _0x1e895b;}export async function importSkillZip({payload:payload={},app:_0x5ce844,dialog:_0x11d9ce,dialogWindow:_0x120ada,configController:_0x4f15d8}){const _0x3ffe85=_0x1e89,_0x4ad51c=asRecord(payload),_0x2a9b9a=getTrimmedString(_0x4ad51c[_0x3ffe85(0xf5)]),{cancelled:_0x513ef,zipPath:_0x43d397,downloadedZipDir:_0x4095fb}=await resolveZipPath({'payload':_0x4ad51c,'app':_0x5ce844,'dialog':_0x11d9ce,'dialogWindow':_0x120ada});if(_0x513ef)return{'cancelled':!![],'imported':![],'overwritten':![],'skillDirName':null,'selectedZipPath':null,'zipUrl':_0x2a9b9a||null,'message':'已取消导入'};const _0x3056cb=await mkdtemp(join(_0x5ce844[_0x3ffe85(0xdf)](_0x3ffe85(0xc4)),_0x3ffe85(0xed)+_0x3ffe85(0xf1)+_0x3ffe85(0xbe))),_0x2e27bb=join(_0x3056cb,_0x3ffe85(0x10c)+'d');try{await mkdir(_0x2e27bb,{'recursive':!![]}),await extractZipToDirectory(_0x43d397,_0x2e27bb);const _0x512b36=await findSkillManifestDirectories(_0x2e27bb);if(_0x512b36[_0x3ffe85(0x121)]===0x0)throw new Error(_0x3ffe85(0xbb)+'\x20SKILL.m'+_0x3ffe85(0x11c)+_0x3ffe85(0x103));if(_0x512b36[_0x3ffe85(0x121)]>0x1)throw new Error(_0x3ffe85(0x10a)+'个\x20skill\x20'+_0x3ffe85(0x142)+_0x3ffe85(0x12b));const _0x18afa6=_0x512b36[0x0];await normalizeImportedSkillManifest(_0x18afa6);const _0x5ef5ca=basename(_0x18afa6),_0x314774=parse(_0x43d397)[_0x3ffe85(0x124)][_0x3ffe85(0x114)]()||_0x3ffe85(0x118)+_0x3ffe85(0xfe),_0x3dcf41=_0x5ef5ca===_0x3ffe85(0x10c)+'d'?_0x314774:_0x5ef5ca,_0x2caf5d=await resolveSkillKeyFromManifest(_0x18afa6)??_0x3dcf41,_0x15a96b=await resolveSkillVersionFromManifest(_0x18afa6)??(getTrimmedString(_0x4ad51c[_0x3ffe85(0x113)])||extractVersionFromZipUrl(_0x2a9b9a)),_0x14a321=buildManagedSkillDirectoryName(_0x2caf5d,_0x15a96b,_0x3dcf41),_0x4723d3=join(_0x4f15d8[_0x3ffe85(0x110)+_0x3ffe85(0x152)](),'skills'),_0x209a12=join(_0x4723d3,_0x14a321);if(existsSync(_0x209a12)){if(_0x4ad51c[_0x3ffe85(0x145)+'e']!==!![])return{'cancelled':![],'imported':![],'overwritten':![],'needConfirmOverwrite':!![],'skillDirName':_0x14a321,'overwriteTargetPath':_0x209a12,'selectedZipPath':_0x43d397,'zipUrl':_0x2a9b9a||null,'message':_0x3ffe85(0x12a)+_0x14a321+(_0x3ffe85(0xd7)+_0x3ffe85(0xf7))};await rm(_0x209a12,{'recursive':!![],'force':!![]});}let _0x980b3=_0x18afa6;return _0x5ef5ca==='extracte'+'d'&&(_0x980b3=join(_0x3056cb,_0x14a321),await rename(_0x18afa6,_0x980b3)),await moveDirectoryWithOverwrite(_0x980b3,_0x209a12),await ensureManagedSkillsConfig(_0x4f15d8,[_0x2caf5d]),{'cancelled':![],'imported':!![],'overwritten':_0x4ad51c[_0x3ffe85(0x145)+'e']===!![],'skillKey':_0x2caf5d,'manifestKey':_0x2caf5d,'skillDirName':_0x14a321,'targetPath':_0x209a12,'selectedZipPath':_0x43d397,'zipUrl':_0x2a9b9a||null,'message':_0x14a321+_0x3ffe85(0x151)};}finally{await rm(_0x3056cb,{'recursive':!![],'force':!![]});if(_0x4095fb)await rm(_0x4095fb,{'recursive':!![],'force':!![]});}}
@@ -1 +1 @@
1
- const _0x2b2970=_0x4011;function _0xb6b4(){const _0x1e88d5=['ory','logo_url','logoUrl','fromEntr','isDirect','sort','ion','isArray','keys','code','^\x5cs*','has','19344NmwRxr','trim','gatewayS','21640sJgXVh','tateDir','length','68708vdbNGO','killKey','localeCo','skillKey','name','接口返回的\x20na','entries','descript','map','3087RxmgxT','19OLOCZV','535678YUSiKP','SKILL.md','ies','match','skills','7217441eILUUt','version','接口返回的\x20co','8xqBfVO','catch','aipc-mar','skillDir','201969PansuD','targetPa','mpare','parse','object','kills.js','utf8','1665khdMle','ket','market-s','source','接口返回的\x20ve','resolveS','filter','36WJyPHj',':\x5cs*(.+)','191841yOVzAI','manifest','SKILLS.m','market','12rjwOyg','技能商店安装需要'];_0xb6b4=function(){return _0x1e88d5;};return _0xb6b4();}(function(_0x16c2e6,_0x208c3e){const _0x2a6a9d=_0x4011,_0x3d6c55=_0x16c2e6();while(!![]){try{const _0x28cc8c=parseInt(_0x2a6a9d(0x1ce))/0x1*(parseInt(_0x2a6a9d(0x1c4))/0x2)+parseInt(_0x2a6a9d(0x1db))/0x3*(parseInt(_0x2a6a9d(0x1e9))/0x4)+-parseInt(_0x2a6a9d(0x1e2))/0x5*(-parseInt(_0x2a6a9d(0x1fd))/0x6)+-parseInt(_0x2a6a9d(0x1d4))/0x7*(parseInt(_0x2a6a9d(0x1d7))/0x8)+parseInt(_0x2a6a9d(0x1cd))/0x9*(-parseInt(_0x2a6a9d(0x200))/0xa)+parseInt(_0x2a6a9d(0x1cf))/0xb+-parseInt(_0x2a6a9d(0x1ef))/0xc*(parseInt(_0x2a6a9d(0x1eb))/0xd);if(_0x28cc8c===_0x208c3e)break;else _0x3d6c55['push'](_0x3d6c55['shift']());}catch(_0xf6b449){_0x3d6c55['push'](_0x3d6c55['shift']());}}}(_0xb6b4,0x90bd3));import{readFile,readdir,rm}from'node:fs/promises';import{join}from'node:path';import{asRecord,getTrimmedString,writeJson}from'../common/utils.mjs';const SKILL_SOURCE_MARKET=_0x2b2970(0x1d9)+_0x2b2970(0x1e3);async function readMarketSkillRegistry(_0x13eca3){const _0x577463=_0x2b2970;try{const _0x55af91=JSON[_0x577463(0x1de)](await readFile(_0x13eca3,'utf8'));if(!_0x55af91||typeof _0x55af91!==_0x577463(0x1df)||Array['isArray'](_0x55af91))return{};return _0x55af91;}catch{return{};}}export async function readSkillMarketRegistry(_0x3dc483){const _0x1e732e=_0x2b2970;return await readMarketSkillRegistry(join(_0x3dc483,_0x1e732e(0x1e4)+'kills.js'+'on'));}async function upsertMarketSkillRegistryEntry(_0x224979,_0x94b019,_0x393bea,_0x566942,_0x1fe183={}){const _0x1a892d=_0x2b2970,_0x2fa946=getTrimmedString(_0x94b019),_0xef0574=getTrimmedString(_0x393bea),_0x2ad117=getTrimmedString(_0x566942);if(!_0x2fa946||!_0xef0574||!_0x2ad117)return;const _0x43ebf8=await readMarketSkillRegistry(_0x224979);_0x43ebf8[_0x2fa946]={'version':_0x2ad117,'code':_0xef0574,...getTrimmedString(_0x1fe183[_0x1a892d(0x1c8)])?{'name':getTrimmedString(_0x1fe183[_0x1a892d(0x1c8)])}:{},...getTrimmedString(_0x1fe183[_0x1a892d(0x1f3)])?{'logo_url':getTrimmedString(_0x1fe183[_0x1a892d(0x1f3)])}:{},...getTrimmedString(_0x1fe183[_0x1a892d(0x1cb)+'ion'])?{'description':getTrimmedString(_0x1fe183[_0x1a892d(0x1cb)+_0x1a892d(0x1f7)])}:{}};if(_0x43ebf8[_0xef0574]&&_0xef0574!==_0x2fa946)delete _0x43ebf8[_0xef0574];for(const [_0x3e9cdf,_0x1c61a6]of Object['entries'](_0x43ebf8)){if(_0x3e9cdf!==_0x2fa946&&asRecord(_0x1c61a6)[_0x1a892d(0x1fa)]===_0xef0574)delete _0x43ebf8[_0x3e9cdf];}const _0x3be82=Object[_0x1a892d(0x1f4)+_0x1a892d(0x1d1)](Object[_0x1a892d(0x1ca)](_0x43ebf8)['sort'](([_0x29f2cf],[_0x54ea1b])=>_0x29f2cf['localeCo'+_0x1a892d(0x1dd)](_0x54ea1b)));await writeJson(_0x224979,_0x3be82);}async function removeMarketSkillRegistryKeys(_0x3ad19b,_0x185f5c){const _0x4cd43e=_0x2b2970,_0xd8bb9b=new Set(_0x185f5c['map'](getTrimmedString)[_0x4cd43e(0x1e8)](Boolean));if(_0xd8bb9b['size']===0x0)return;const _0x3c0f24=await readMarketSkillRegistry(_0x3ad19b);let _0x4fd013=![];for(const _0x47048a of Object[_0x4cd43e(0x1f9)](_0x3c0f24)){const _0x50571c=asRecord(_0x3c0f24[_0x47048a]);(_0xd8bb9b[_0x4cd43e(0x1fc)](_0x47048a)||_0xd8bb9b['has'](getTrimmedString(_0x50571c[_0x4cd43e(0x1fa)])))&&(delete _0x3c0f24[_0x47048a],_0x4fd013=!![]);}if(_0x4fd013){const _0x27e81e=Object[_0x4cd43e(0x1f4)+'ies'](Object[_0x4cd43e(0x1ca)](_0x3c0f24)[_0x4cd43e(0x1f6)](([_0x342586],[_0x143e80])=>_0x342586[_0x4cd43e(0x1c6)+_0x4cd43e(0x1dd)](_0x143e80)));await writeJson(_0x3ad19b,_0x27e81e);}}async function readSkillManifestText(_0x3b2fd4){const _0x440867=_0x2b2970,_0x4d2d34=[join(_0x3b2fd4,_0x440867(0x1d0)),join(_0x3b2fd4,_0x440867(0x1ed)+'d')];for(const _0x39a3b0 of _0x4d2d34){const _0x186c85=await readFile(_0x39a3b0,_0x440867(0x1e1))['catch'](()=>'');if(_0x186c85[_0x440867(0x1fe)]())return _0x186c85;}return'';}function _0x4011(_0x54b66c,_0x25b989){_0x54b66c=_0x54b66c-0x1c4;const _0xb6b48c=_0xb6b4();let _0x4011c1=_0xb6b48c[_0x54b66c];return _0x4011c1;}function resolveFrontmatterValue(_0x41cf4e,_0x5579c9){const _0x19c340=_0x2b2970,_0x1f583f=_0x41cf4e[_0x19c340(0x1d2)](/^---\s*\r?\n([\s\S]*?)\r?\n---/),_0x227064=_0x1f583f?.[0x1]??'',_0x508dc1=_0x227064[_0x19c340(0x1d2)](new RegExp(_0x19c340(0x1fb)+_0x5579c9+(_0x19c340(0x1ea)+'$'),'m'))?.[0x1];return getTrimmedString(_0x508dc1)['replace'](/^["']|["']$/g,'')||null;}async function resolveSkillKeyFromManifest(_0x1ce565){const _0x1600a5=_0x2b2970,_0x5cbe37=await readSkillManifestText(_0x1ce565);if(!_0x5cbe37['trim']())return null;const _0x5a1bf8=_0x5cbe37['match'](/"skillKey"\s*:\s*"([^"]+)"/);if(_0x5a1bf8?.[0x1])return getTrimmedString(_0x5a1bf8[0x1]);return resolveFrontmatterValue(_0x5cbe37,_0x1600a5(0x1c7))||resolveFrontmatterValue(_0x5cbe37,_0x1600a5(0x1c8));}async function removeOtherMarketSkillVersions(_0xd1da1a,_0x1d4581,_0x54ff00){const _0x344045=_0x2b2970,_0x273877=getTrimmedString(_0x54ff00);if(!_0x273877)return;for(const _0xcf08ad of await readdir(_0xd1da1a,{'withFileTypes':!![]})[_0x344045(0x1d8)](()=>[])){if(!_0xcf08ad[_0x344045(0x1f5)+_0x344045(0x1f1)]())continue;const _0x1c7cdd=join(_0xd1da1a,_0xcf08ad['name']);if(_0x1c7cdd===_0x1d4581)continue;const _0x5a684a=await resolveSkillKeyFromManifest(_0x1c7cdd);_0x5a684a&&_0x5a684a[_0x344045(0x1fe)]()===_0x273877&&await rm(_0x1c7cdd,{'recursive':!![],'force':!![]});}}export async function importMarketSkillZip({payload:payload={},importSkillZip:_0x524a23,configController:_0x374079}={}){const _0x1abd81=_0x2b2970,_0xce87e8=asRecord(payload);if(_0xce87e8[_0x1abd81(0x1e5)]!==_0x1abd81(0x1ee))return _0x524a23({'payload':payload});const _0x436d0b=getTrimmedString(_0xce87e8['code']),_0x8a36f9=getTrimmedString(_0xce87e8[_0x1abd81(0x1d5)]),_0x1af858=getTrimmedString(_0xce87e8[_0x1abd81(0x1c8)]);if(!_0x436d0b)throw new Error(_0x1abd81(0x1f0)+_0x1abd81(0x1d6)+'de');if(!_0x8a36f9)throw new Error(_0x1abd81(0x1f0)+_0x1abd81(0x1e6)+'rsion');if(!_0x1af858)throw new Error(_0x1abd81(0x1f0)+_0x1abd81(0x1c9)+'me');const _0x28b2a2=await _0x524a23({'payload':{..._0xce87e8,'version':_0x8a36f9}});if(!_0x28b2a2?.['imported'])return _0x28b2a2;const _0x5062bd=getTrimmedString(_0x28b2a2[_0x1abd81(0x1c7)])||getTrimmedString(_0x28b2a2[_0x1abd81(0x1ec)+'Key'])||getTrimmedString(_0x28b2a2[_0x1abd81(0x1da)+'Name']);return await removeOtherMarketSkillVersions(join(_0x374079[_0x1abd81(0x1e7)+_0x1abd81(0x201)](),'skills'),_0x28b2a2[_0x1abd81(0x1dc)+'th'],_0x5062bd),await upsertMarketSkillRegistryEntry(join(_0x374079[_0x1abd81(0x1e7)+_0x1abd81(0x201)](),_0x1abd81(0x1e4)+_0x1abd81(0x1e0)+'on'),_0x5062bd,_0x436d0b,_0x8a36f9,{'name':_0x1af858,'logoUrl':getTrimmedString(_0xce87e8[_0x1abd81(0x1f3)]),'description':getTrimmedString(_0xce87e8['descript'+_0x1abd81(0x1f7)])}),_0x28b2a2;}export async function deleteMarketSkillRegistryEntry({payload:payload={},deleteManagedSkill:_0x2139b3,configController:_0x1f6f2e}={}){const _0x5437c8=_0x2b2970,_0x30dd6a=await _0x2139b3({'payload':payload}),_0x1d35e6=asRecord(payload),_0x990f4e=getTrimmedString(_0x30dd6a?.['skillKey']??_0x1d35e6['skillKey']??_0x1d35e6[_0x5437c8(0x1c8)]),_0x1b4a73=[_0x990f4e,getTrimmedString(_0x1d35e6[_0x5437c8(0x1ff)+_0x5437c8(0x1c5)]),getTrimmedString(_0x1d35e6['name'])];return await removeMarketSkillRegistryKeys(join(_0x1f6f2e[_0x5437c8(0x1e7)+_0x5437c8(0x201)](),_0x5437c8(0x1e4)+_0x5437c8(0x1e0)+'on'),_0x1b4a73),_0x30dd6a;}export function mapMarketRegisteredSkills(_0x15f9c9,_0x4a396c){const _0x778d7a=_0x2b2970,_0x8377de=Array[_0x778d7a(0x1f8)](asRecord(_0x15f9c9)[_0x778d7a(0x1d3)])?asRecord(_0x15f9c9)['skills']:[];if(_0x8377de[_0x778d7a(0x202)]===0x0||Object[_0x778d7a(0x1f9)](_0x4a396c)['length']===0x0)return _0x15f9c9;const _0x5be593=_0x8377de[_0x778d7a(0x1cc)](_0x34cc82=>{const _0x4b76cc=_0x778d7a,_0x579f31=asRecord(_0x34cc82),_0x254790=getTrimmedString(_0x579f31['skillKey'])||getTrimmedString(_0x579f31[_0x4b76cc(0x1c8)]);let _0x578852=_0x254790,_0x47df9b=asRecord(_0x4a396c[_0x254790]);if(!Object[_0x4b76cc(0x1f9)](_0x47df9b)['length'])for(const [_0x38767f,_0x2b70ca]of Object[_0x4b76cc(0x1ca)](_0x4a396c)){const _0x39b2d5=asRecord(_0x2b70ca);if(getTrimmedString(_0x39b2d5[_0x4b76cc(0x1fa)])===_0x254790){_0x578852=_0x38767f,_0x47df9b=_0x39b2d5;break;}}if(!Object[_0x4b76cc(0x1f9)](_0x47df9b)['length'])return _0x34cc82;const _0xbef7f2=getTrimmedString(_0x47df9b[_0x4b76cc(0x1fa)]),_0x1a2a56=getTrimmedString(_0x47df9b[_0x4b76cc(0x1c8)]),_0x531cf5=getTrimmedString(_0x47df9b[_0x4b76cc(0x1cb)+_0x4b76cc(0x1f7)]),_0x37e7ed=getTrimmedString(_0x47df9b[_0x4b76cc(0x1f2)]),_0x28d93b=getTrimmedString(_0x47df9b[_0x4b76cc(0x1d5)]);return{..._0x579f31,'source':SKILL_SOURCE_MARKET,'skillKey':_0xbef7f2||_0x254790,'gatewaySkillKey':_0xbef7f2?_0x578852:null,'marketInstalledVersion':_0x28d93b||null,..._0x1a2a56?{'name':_0x1a2a56}:{},..._0x531cf5?{'description':_0x531cf5}:{},..._0x37e7ed?{'logoUrl':_0x37e7ed}:{}};});return{...asRecord(_0x15f9c9),'skills':_0x5be593};}export function createMarketSkillRuntime({configController:_0x46e322}){return{'mapSkillsStatus':async _0x47eb33=>{const _0x37e714=_0x4011,_0x115746=await readSkillMarketRegistry(_0x46e322['resolveS'+'tateDir']())[_0x37e714(0x1d8)](()=>({}));return mapMarketRegisteredSkills(_0x47eb33,_0x115746);}};}
1
+ const _0x3a21d1=_0x2497;(function(_0x4f56c2,_0x231131){const _0x1fd0de=_0x2497,_0xc4f4b8=_0x4f56c2();while(!![]){try{const _0x4867f6=parseInt(_0x1fd0de(0x1cc))/0x1+-parseInt(_0x1fd0de(0x1de))/0x2*(parseInt(_0x1fd0de(0x1da))/0x3)+-parseInt(_0x1fd0de(0x1d9))/0x4*(-parseInt(_0x1fd0de(0x1f0))/0x5)+-parseInt(_0x1fd0de(0x1e4))/0x6*(-parseInt(_0x1fd0de(0x1ce))/0x7)+-parseInt(_0x1fd0de(0x1ee))/0x8+parseInt(_0x1fd0de(0x1c6))/0x9*(parseInt(_0x1fd0de(0x1d0))/0xa)+-parseInt(_0x1fd0de(0x1d4))/0xb;if(_0x4867f6===_0x231131)break;else _0xc4f4b8['push'](_0xc4f4b8['shift']());}catch(_0x527542){_0xc4f4b8['push'](_0xc4f4b8['shift']());}}}(_0x2ca4,0xde1a0));import{readFile,readdir,rm}from'node:fs/promises';import{join}from'node:path';import{asRecord,getTrimmedString,writeJson}from'../common/utils.mjs';const SKILL_SOURCE_MARKET=_0x3a21d1(0x1e9)+_0x3a21d1(0x1cd);function _0x2497(_0x1424bd,_0xfe8056){_0x1424bd=_0x1424bd-0x1bb;const _0x2ca424=_0x2ca4();let _0x2497c6=_0x2ca424[_0x1424bd];return _0x2497c6;}async function readMarketSkillRegistry(_0x56f808){const _0x40045c=_0x3a21d1;try{const _0x1ac562=JSON[_0x40045c(0x1f1)](await readFile(_0x56f808,_0x40045c(0x1eb)));if(!_0x1ac562||typeof _0x1ac562!==_0x40045c(0x1c1)||Array[_0x40045c(0x1ed)](_0x1ac562))return{};return _0x1ac562;}catch{return{};}}export async function readSkillMarketRegistry(_0x36631e){const _0x57b072=_0x3a21d1;return await readMarketSkillRegistry(join(_0x36631e,_0x57b072(0x1e5)+_0x57b072(0x1dc)+'on'));}async function upsertMarketSkillRegistryEntry(_0x2604a8,_0x1bdc48,_0x54c0b8,_0x16fb03,_0x50b93c={}){const _0x5d1556=_0x3a21d1,_0xf7a846=getTrimmedString(_0x1bdc48),_0x2393c7=getTrimmedString(_0x54c0b8),_0xfd9ec5=getTrimmedString(_0x16fb03);if(!_0xf7a846||!_0x2393c7||!_0xfd9ec5)return;const _0x268156=await readMarketSkillRegistry(_0x2604a8);_0x268156[_0xf7a846]={'version':_0xfd9ec5,'code':_0x2393c7,...getTrimmedString(_0x50b93c[_0x5d1556(0x1f3)])?{'name':getTrimmedString(_0x50b93c[_0x5d1556(0x1f3)])}:{},...getTrimmedString(_0x50b93c[_0x5d1556(0x1ec)])?{'logo_url':getTrimmedString(_0x50b93c[_0x5d1556(0x1ec)])}:{},...getTrimmedString(_0x50b93c['descript'+_0x5d1556(0x1c7)])?{'description':getTrimmedString(_0x50b93c[_0x5d1556(0x1d2)+'ion'])}:{}};if(_0x268156[_0x2393c7]&&_0x2393c7!==_0xf7a846)delete _0x268156[_0x2393c7];for(const [_0x43043a,_0x2f8deb]of Object[_0x5d1556(0x1c2)](_0x268156)){if(_0x43043a!==_0xf7a846&&asRecord(_0x2f8deb)[_0x5d1556(0x1d5)]===_0x2393c7)delete _0x268156[_0x43043a];}const _0x500002=Object['fromEntr'+_0x5d1556(0x1e3)](Object['entries'](_0x268156)['sort'](([_0x239a2c],[_0x211b76])=>_0x239a2c[_0x5d1556(0x1d1)+_0x5d1556(0x1bf)](_0x211b76)));await writeJson(_0x2604a8,_0x500002);}async function removeMarketSkillRegistryKeys(_0x21891a,_0x4dc327){const _0x50c8ec=_0x3a21d1,_0x236780=new Set(_0x4dc327[_0x50c8ec(0x1f2)](getTrimmedString)[_0x50c8ec(0x1e6)](Boolean));if(_0x236780['size']===0x0)return;const _0x3062f4=await readMarketSkillRegistry(_0x21891a);let _0x43e55d=![];for(const _0x3fae32 of Object[_0x50c8ec(0x1be)](_0x3062f4)){const _0xe38711=asRecord(_0x3062f4[_0x3fae32]);(_0x236780[_0x50c8ec(0x1ef)](_0x3fae32)||_0x236780[_0x50c8ec(0x1ef)](getTrimmedString(_0xe38711[_0x50c8ec(0x1d5)])))&&(delete _0x3062f4[_0x3fae32],_0x43e55d=!![]);}if(_0x43e55d){const _0x165c05=Object[_0x50c8ec(0x1d3)+_0x50c8ec(0x1e3)](Object[_0x50c8ec(0x1c2)](_0x3062f4)['sort'](([_0x223290],[_0x313ce0])=>_0x223290['localeCo'+_0x50c8ec(0x1bf)](_0x313ce0)));await writeJson(_0x21891a,_0x165c05);}}async function readSkillManifestText(_0x4115c1){const _0x1c24d5=_0x3a21d1,_0x57b0fe=[join(_0x4115c1,'SKILL.md'),join(_0x4115c1,_0x1c24d5(0x1cb)+'d')];for(const _0x4765ed of _0x57b0fe){const _0x2aebea=await readFile(_0x4765ed,'utf8')[_0x1c24d5(0x1d6)](()=>'');if(_0x2aebea[_0x1c24d5(0x1e2)]())return _0x2aebea;}return'';}function resolveFrontmatterValue(_0x120864,_0x59f519){const _0xa7adc=_0x3a21d1,_0x1b09bf=_0x120864['match'](/^---\s*\r?\n([\s\S]*?)\r?\n---/),_0x2f6485=_0x1b09bf?.[0x1]??'',_0x1a4296=_0x2f6485[_0xa7adc(0x1bb)](new RegExp(_0xa7adc(0x1cf)+_0x59f519+(_0xa7adc(0x1bc)+'$'),'m'))?.[0x1];return getTrimmedString(_0x1a4296)[_0xa7adc(0x1f5)](/^["']|["']$/g,'')||null;}async function resolveSkillKeyFromManifest(_0x43abbb){const _0x78f888=_0x3a21d1,_0x3431c9=await readSkillManifestText(_0x43abbb);if(!_0x3431c9[_0x78f888(0x1e2)]())return null;const _0x57eb54=_0x3431c9[_0x78f888(0x1bb)](/"skillKey"\s*:\s*"([^"]+)"/);if(_0x57eb54?.[0x1])return getTrimmedString(_0x57eb54[0x1]);return resolveFrontmatterValue(_0x3431c9,_0x78f888(0x1c9))||resolveFrontmatterValue(_0x3431c9,_0x78f888(0x1f3));}async function removeOtherMarketSkillVersions(_0x336c5b,_0x1947c4,_0x10950b){const _0x3d4afa=_0x3a21d1,_0x3e1fe6=getTrimmedString(_0x10950b);if(!_0x3e1fe6)return;for(const _0x3b0f41 of await readdir(_0x336c5b,{'withFileTypes':!![]})[_0x3d4afa(0x1d6)](()=>[])){if(!_0x3b0f41[_0x3d4afa(0x1f4)+_0x3d4afa(0x1d8)]())continue;const _0x5b9d57=join(_0x336c5b,_0x3b0f41[_0x3d4afa(0x1f3)]);if(_0x5b9d57===_0x1947c4)continue;const _0xe28fd7=await resolveSkillKeyFromManifest(_0x5b9d57);_0xe28fd7&&_0xe28fd7[_0x3d4afa(0x1e2)]()===_0x3e1fe6&&await rm(_0x5b9d57,{'recursive':!![],'force':!![]});}}export async function importMarketSkillZip({payload:payload={},importSkillZip:_0x2470a2,configController:_0x4a3bce}={}){const _0x162632=_0x3a21d1,_0x132e57=asRecord(payload);if(_0x132e57[_0x162632(0x1d7)]!==_0x162632(0x1e8))return _0x2470a2({'payload':payload});const _0x2c0d84=getTrimmedString(_0x132e57[_0x162632(0x1d5)]),_0x1d173a=getTrimmedString(_0x132e57[_0x162632(0x1ea)]),_0x1b3073=getTrimmedString(_0x132e57[_0x162632(0x1f3)]);if(!_0x2c0d84)throw new Error(_0x162632(0x1c4)+_0x162632(0x1df)+'de');if(!_0x1d173a)throw new Error(_0x162632(0x1c4)+_0x162632(0x1bd)+'rsion');if(!_0x1b3073)throw new Error(_0x162632(0x1c4)+'接口返回的\x20na'+'me');const _0x3cf450=await _0x2470a2({'payload':{..._0x132e57,'version':_0x1d173a}});if(!_0x3cf450?.[_0x162632(0x1c3)])return _0x3cf450;const _0x4ca5b4=getTrimmedString(_0x3cf450[_0x162632(0x1c9)])||getTrimmedString(_0x3cf450[_0x162632(0x1c5)+_0x162632(0x1e0)])||getTrimmedString(_0x3cf450[_0x162632(0x1c0)+_0x162632(0x1c8)]);return await removeOtherMarketSkillVersions(join(_0x4a3bce['resolveS'+'tateDir'](),_0x162632(0x1e7)),_0x3cf450[_0x162632(0x1ca)+'th'],_0x4ca5b4),await upsertMarketSkillRegistryEntry(join(_0x4a3bce[_0x162632(0x1db)+_0x162632(0x1e1)](),_0x162632(0x1e5)+'kills.js'+'on'),_0x4ca5b4,_0x2c0d84,_0x1d173a,{'name':_0x1b3073,'logoUrl':getTrimmedString(_0x132e57['logoUrl']),'description':getTrimmedString(_0x132e57[_0x162632(0x1d2)+_0x162632(0x1c7)])}),_0x3cf450;}export async function deleteMarketSkillRegistryEntry({payload:payload={},deleteManagedSkill:_0x3f8128,configController:_0x39206f}={}){const _0x400d12=_0x3a21d1,_0x545921=await _0x3f8128({'payload':payload}),_0x2226bd=asRecord(payload),_0xa8fcf0=getTrimmedString(_0x545921?.[_0x400d12(0x1c9)]??_0x2226bd[_0x400d12(0x1c9)]??_0x2226bd['name']),_0x861a4d=[_0xa8fcf0,getTrimmedString(_0x2226bd['gatewayS'+'killKey']),getTrimmedString(_0x2226bd[_0x400d12(0x1f3)])];return await removeMarketSkillRegistryKeys(join(_0x39206f[_0x400d12(0x1db)+_0x400d12(0x1e1)](),_0x400d12(0x1e5)+'kills.js'+'on'),_0x861a4d),_0x545921;}export function mapMarketRegisteredSkills(_0x4f39cd,_0x58e212){const _0x87477d=_0x3a21d1,_0x1af9b7=Array[_0x87477d(0x1ed)](asRecord(_0x4f39cd)[_0x87477d(0x1e7)])?asRecord(_0x4f39cd)[_0x87477d(0x1e7)]:[];if(_0x1af9b7[_0x87477d(0x1dd)]===0x0||Object[_0x87477d(0x1be)](_0x58e212)[_0x87477d(0x1dd)]===0x0)return _0x4f39cd;const _0x202ae2=_0x1af9b7[_0x87477d(0x1f2)](_0x26b177=>{const _0x2caea2=_0x87477d,_0xbd80b0=asRecord(_0x26b177),_0x3e7604=getTrimmedString(_0xbd80b0[_0x2caea2(0x1c9)])||getTrimmedString(_0xbd80b0[_0x2caea2(0x1f3)]);let _0x34ff8c=_0x3e7604,_0x2f0009=asRecord(_0x58e212[_0x3e7604]);if(!Object[_0x2caea2(0x1be)](_0x2f0009)['length'])for(const [_0x327c05,_0x5186ed]of Object[_0x2caea2(0x1c2)](_0x58e212)){const _0x5158d9=asRecord(_0x5186ed);if(getTrimmedString(_0x5158d9['code'])===_0x3e7604){_0x34ff8c=_0x327c05,_0x2f0009=_0x5158d9;break;}}if(!Object[_0x2caea2(0x1be)](_0x2f0009)[_0x2caea2(0x1dd)])return _0x26b177;const _0x1c20aa=getTrimmedString(_0x2f0009['code']),_0x16a41a=getTrimmedString(_0x2f0009[_0x2caea2(0x1f3)]),_0x200428=getTrimmedString(_0x2f0009[_0x2caea2(0x1d2)+_0x2caea2(0x1c7)]),_0x3f2675=getTrimmedString(_0x2f0009['logo_url']),_0x38b567=getTrimmedString(_0x2f0009[_0x2caea2(0x1ea)]);return{..._0xbd80b0,'source':SKILL_SOURCE_MARKET,'skillKey':_0x1c20aa||_0x3e7604,'gatewaySkillKey':_0x1c20aa?_0x34ff8c:null,'marketInstalledVersion':_0x38b567||null,..._0x16a41a?{'name':_0x16a41a}:{},..._0x200428?{'description':_0x200428}:{},..._0x3f2675?{'logoUrl':_0x3f2675}:{}};});return{...asRecord(_0x4f39cd),'skills':_0x202ae2};}export function createMarketSkillRuntime({configController:_0x1cd909}){return{'mapSkillsStatus':async _0x386e64=>{const _0x25db42=_0x2497,_0x3cf7a6=await readSkillMarketRegistry(_0x1cd909['resolveS'+_0x25db42(0x1e1)]())[_0x25db42(0x1d6)](()=>({}));return mapMarketRegisteredSkills(_0x386e64,_0x3cf7a6);}};}function _0x2ca4(){const _0x4379ef=['4777787BaCdGQ','^\x5cs*','60tfZYsX','localeCo','descript','fromEntr','14045262IKHNer','code','catch','source','ory','1970444qvcIYb','5055186ZalewN','resolveS','kills.js','length','2joqJQx','接口返回的\x20co','Key','tateDir','trim','ies','6PfiYsT','market-s','filter','skills','market','aipc-mar','version','utf8','logoUrl','isArray','1174184SCTTIS','has','5bvXSsD','parse','map','name','isDirect','replace','match',':\x5cs*(.+)','接口返回的\x20ve','keys','mpare','skillDir','object','entries','imported','技能商店安装需要','manifest','2178963ylRyYy','ion','Name','skillKey','targetPa','SKILLS.m','1390611NVWGJq','ket'];_0x2ca4=function(){return _0x4379ef;};return _0x2ca4();}
@@ -1 +1 @@
1
- (function(_0x3f8c34,_0x20ec18){const _0xf1e169=_0x186d,_0x1f36b4=_0x3f8c34();while(!![]){try{const _0xac69eb=-parseInt(_0xf1e169(0x218))/0x1*(-parseInt(_0xf1e169(0x21b))/0x2)+parseInt(_0xf1e169(0x225))/0x3+-parseInt(_0xf1e169(0x209))/0x4+parseInt(_0xf1e169(0x1ed))/0x5*(-parseInt(_0xf1e169(0x202))/0x6)+-parseInt(_0xf1e169(0x1e9))/0x7*(-parseInt(_0xf1e169(0x1ea))/0x8)+parseInt(_0xf1e169(0x20e))/0x9*(parseInt(_0xf1e169(0x21c))/0xa)+-parseInt(_0xf1e169(0x1ec))/0xb*(parseInt(_0xf1e169(0x1e8))/0xc);if(_0xac69eb===_0x20ec18)break;else _0x1f36b4['push'](_0x1f36b4['shift']());}catch(_0x150aef){_0x1f36b4['push'](_0x1f36b4['shift']());}}}(_0x4efe,0x509e4));import{spawn}from'node:child_process';function _0x186d(_0x2bdd0c,_0x5dda74){_0x2bdd0c=_0x2bdd0c-0x1e2;const _0x4efe13=_0x4efe();let _0x186ddb=_0x4efe13[_0x2bdd0c];return _0x186ddb;}import{randomUUID}from'node:crypto';import{accessSync,constants,existsSync}from'node:fs';import{mkdir}from'node:fs/promises';import{basename,delimiter,join}from'node:path';const FILE_EXTENSION_REGEX=/\.[a-z0-9]+$/i;function resolvePathEntries(_0x2a203c){const _0x4c7483=_0x186d,_0x37d558=Object[_0x4c7483(0x214)](_0x2a203c)[_0x4c7483(0x208)](_0x58111b=>_0x58111b[_0x4c7483(0x1ff)+_0x4c7483(0x229)]()===_0x4c7483(0x1f2))??_0x4c7483(0x1f0);return String(_0x2a203c[_0x37d558]||'')[_0x4c7483(0x206)](delimiter)[_0x4c7483(0x1f9)](Boolean);}function canExecute(_0x4498f6){const _0x5d9c9e=_0x186d;try{return accessSync(_0x4498f6,process['platform']===_0x5d9c9e(0x1f6)?constants['F_OK']:constants[_0x5d9c9e(0x20d)]),!![];}catch{return![];}}function resolveExecutableOnPath(_0x50bcce,_0x37df8c){const _0x5cf76b=_0x186d,_0x38ca7f=String(_0x50bcce||'')[_0x5cf76b(0x215)]();if(!_0x38ca7f)return null;if(_0x38ca7f[_0x5cf76b(0x1eb)]('/')||_0x38ca7f[_0x5cf76b(0x1eb)]('\x5c'))return existsSync(_0x38ca7f)?_0x38ca7f:null;const _0x1d411f=[_0x38ca7f];process['platform']===_0x5cf76b(0x1f6)&&!FILE_EXTENSION_REGEX['test'](_0x38ca7f)&&_0x1d411f[_0x5cf76b(0x204)](_0x38ca7f+_0x5cf76b(0x21d),_0x38ca7f+_0x5cf76b(0x200),_0x38ca7f+_0x5cf76b(0x1fc));for(const _0x318703 of resolvePathEntries(_0x37df8c)){for(const _0x1d8bf2 of _0x1d411f){const _0xd603c3=join(_0x318703,_0x1d8bf2);if(canExecute(_0xd603c3))return _0xd603c3;}}return null;}function resolveShellLaunchConfig(_0x1f6c89){const _0x45765a=_0x186d;if(process[_0x45765a(0x1e3)]===_0x45765a(0x1f6)){const _0x4151b5=resolveExecutableOnPath(_0x45765a(0x201),_0x1f6c89)??resolveExecutableOnPath(_0x45765a(0x1f5)+'ll',_0x1f6c89);if(_0x4151b5)return{'command':_0x4151b5,'args':[_0x45765a(0x213)]};const _0x5105d4=resolveExecutableOnPath(_0x45765a(0x1e6),_0x1f6c89);if(_0x5105d4)return{'command':_0x5105d4,'args':['/Q']};throw new Error(_0x45765a(0x1f8)+_0x45765a(0x1ef)+_0x45765a(0x221)+'ll\x20found');}if(process[_0x45765a(0x1e3)]===_0x45765a(0x1f4)){const _0x34f49f=[_0x45765a(0x1f3),'/usr/loc'+_0x45765a(0x20c)+'sh',_0x45765a(0x21a)+_0x45765a(0x20f)+_0x45765a(0x21f)]['find'](canExecute);if(_0x34f49f)return{'command':_0x34f49f,'args':['-i']};const _0x1f7ce6=[_0x45765a(0x21e)+'h','/usr/loc'+_0x45765a(0x1fa)+_0x45765a(0x20a),_0x45765a(0x21a)+_0x45765a(0x20f)+_0x45765a(0x20b)]['find'](canExecute);if(_0x1f7ce6)return{'command':_0x1f7ce6,'args':[_0x45765a(0x220),'-i']};}const _0x1af691=resolveExecutableOnPath(process.env.SHELL||'',_0x1f6c89)??resolveExecutableOnPath(_0x45765a(0x1ee),_0x1f6c89)??resolveExecutableOnPath('sh',_0x1f6c89);if(!_0x1af691)throw new Error(_0x45765a(0x1f8)+'rted\x20she'+_0x45765a(0x219));return{'command':_0x1af691,'args':['-l','-i']};}function _0x4efe(){const _0x8e5227=['push','object','split','child','find','978864RIitlT','ash','n/bash','al/bin/z','X_OK','9pHRSQQ','ebrew/bi','data','values','get','-NoLogo','keys','trim','close','6color','649kWXdkj','ll\x20found','/opt/hom','1714GqCOsm','1223190IlGsNx','.exe','/bin/bas','n/zsh','--login','dows\x20she','\x20session','Terminal','string','1547466zNKweQ','write','xterm-25','set','ase','stdin','platform','error','clear','cmd','toString','977172gmTAkA','28YSRVIP','493264vCeAre','includes','44vluSOU','10XxUoUb','bash','rted\x20Win','PATH','\x20not\x20fou','path','/bin/zsh','darwin','powershe','win32','env','No\x20suppo','filter','al/bin/b','cwd','.bat','message','sessionI','toLowerC','.cmd','pwsh','1620942JBsaus','truecolo'];_0x4efe=function(){return _0x8e5227;};return _0x4efe();}export function createTerminalManager({cwd:_0x7a6b8,emitData:_0x11322c,emitExit:_0x3b89d6}){const _0x5056d9=new Map();function _0x2eff4d(_0x442de9){const _0x38b56d=_0x186d,_0x3d822a=_0x5056d9[_0x38b56d(0x212)](_0x442de9);if(!_0x3d822a)throw new Error(_0x38b56d(0x223)+_0x38b56d(0x222)+_0x38b56d(0x1f1)+'nd');return _0x3d822a;}async function _0x1513f9(_0x3597b1={}){const _0x56e4b8=_0x186d,_0x420b56={...process.env,'TERM':_0x56e4b8(0x227)+_0x56e4b8(0x217),'COLORTERM':_0x56e4b8(0x203)+'r',..._0x3597b1[_0x56e4b8(0x1f7)]&&typeof _0x3597b1[_0x56e4b8(0x1f7)]===_0x56e4b8(0x205)?_0x3597b1[_0x56e4b8(0x1f7)]:{}},_0x8415d2=typeof _0x3597b1[_0x56e4b8(0x1fb)]===_0x56e4b8(0x224)&&_0x3597b1[_0x56e4b8(0x1fb)][_0x56e4b8(0x215)]()?_0x3597b1[_0x56e4b8(0x1fb)]:'',_0x55e769=_0x8415d2||_0x7a6b8;await mkdir(_0x55e769,{'recursive':!![]});const {command:_0x5d9027,args:_0x272397}=resolveShellLaunchConfig(_0x420b56),_0x3548a7=randomUUID(),_0x2d4a73=spawn(_0x5d9027,_0x272397,{'cwd':_0x55e769,'env':_0x420b56,'stdio':'pipe'});return _0x5056d9[_0x56e4b8(0x228)](_0x3548a7,{'sessionId':_0x3548a7,'child':_0x2d4a73}),_0x2d4a73['stdout']['on']('data',_0x4fc103=>_0x11322c({'sessionId':_0x3548a7,'data':_0x4fc103[_0x56e4b8(0x1e7)]()})),_0x2d4a73['stderr']['on'](_0x56e4b8(0x210),_0x34222b=>_0x11322c({'sessionId':_0x3548a7,'data':_0x34222b[_0x56e4b8(0x1e7)]()})),_0x2d4a73['on'](_0x56e4b8(0x216),(_0x4622e8,_0x3211e9)=>{_0x5056d9['delete'](_0x3548a7),_0x3b89d6({'sessionId':_0x3548a7,'exitCode':_0x4622e8,'signal':_0x3211e9});}),_0x2d4a73['on'](_0x56e4b8(0x1e4),_0x32dc47=>{const _0x5c37e7=_0x56e4b8;_0x11322c({'sessionId':_0x3548a7,'data':_0x32dc47[_0x5c37e7(0x1fd)]+'\x0a'});}),{'sessionId':_0x3548a7,'shell':basename(_0x5d9027),'cwd':_0x55e769};}function _0x454dc8(_0x46ea00={}){const _0x1d7fe3=_0x186d,_0x49d77c=_0x2eff4d(String(_0x46ea00[_0x1d7fe3(0x1fe)+'d']||''));return _0x49d77c[_0x1d7fe3(0x207)][_0x1d7fe3(0x1e2)][_0x1d7fe3(0x226)](String(_0x46ea00['data']||'')),{'ok':!![]};}function _0xd103fa(_0x34ad98={}){const _0x5bd1d5=String(_0x34ad98['sessionI'+'d']||'');return _0x2eff4d(_0x5bd1d5),{'ok':!![],'ignored':!![]};}function _0x2523a1(_0x1c9a4f={}){const _0x161ca8=_0x186d,_0x256ace=String(_0x1c9a4f['sessionI'+'d']||''),_0x46c219=_0x5056d9[_0x161ca8(0x212)](_0x256ace);if(!_0x46c219)return{'ok':!![],'closed':![]};return _0x5056d9['delete'](_0x256ace),_0x46c219[_0x161ca8(0x207)]['kill'](),{'ok':!![],'closed':!![]};}function _0x9aa09a(){const _0x2e0b71=_0x186d;for(const _0x161d56 of _0x5056d9[_0x2e0b71(0x211)]())_0x161d56['child']['kill']();_0x5056d9[_0x2e0b71(0x1e5)]();}return{'create':_0x1513f9,'input':_0x454dc8,'resize':_0xd103fa,'close':_0x2523a1,'dispose':_0x9aa09a};}
1
+ function _0x32d1(){const _0x477226=['2600409bSbRXJ','1236448ucfanO','kill','split','truecolo','.cmd','toString','write','toLowerC','2fbSfFS','ll\x20found','find','string','cwd','keys','rted\x20she','120MJMHLc','xterm-25','dows\x20she','platform','filter','3170382SSIQCS','delete','push','n/bash','includes','ebrew/bi','32948PyAqaq','/bin/bas','-NoLogo','6134980gjCKEr','--login','env','3705592MFfdyY','\x20session','message','F_OK','trim','close','.exe','set','darwin','6color','values','al/bin/z','PATH','ase','/opt/hom','cmd','16ZcIZux','stderr','child','sessionI','win32','stdin','Terminal','14wgyMTW','/usr/loc','3358188aDgSVn','n/zsh','pwsh','.bat','675IcrEAB','data','ash'];_0x32d1=function(){return _0x477226;};return _0x32d1();}(function(_0x4bb55d,_0x2f285a){const _0x109faf=_0x16ae,_0x202489=_0x4bb55d();while(!![]){try{const _0x4128a4=-parseInt(_0x109faf(0x126))/0x1+parseInt(_0x109faf(0x12e))/0x2*(parseInt(_0x109faf(0x125))/0x3)+parseInt(_0x109faf(0x140))/0x4*(-parseInt(_0x109faf(0x122))/0x5)+parseInt(_0x109faf(0x13a))/0x6*(-parseInt(_0x109faf(0x11c))/0x7)+-parseInt(_0x109faf(0x115))/0x8*(parseInt(_0x109faf(0x11e))/0x9)+parseInt(_0x109faf(0x143))/0xa+-parseInt(_0x109faf(0x146))/0xb*(-parseInt(_0x109faf(0x135))/0xc);if(_0x4128a4===_0x2f285a)break;else _0x202489['push'](_0x202489['shift']());}catch(_0x46387a){_0x202489['push'](_0x202489['shift']());}}}(_0x32d1,0xaa4b0));import{spawn}from'node:child_process';import{randomUUID}from'node:crypto';import{accessSync,constants,existsSync}from'node:fs';import{mkdir}from'node:fs/promises';import{basename,delimiter,join}from'node:path';const FILE_EXTENSION_REGEX=/\.[a-z0-9]+$/i;function resolvePathEntries(_0x229dd8){const _0xd88903=_0x16ae,_0x3e9960=Object[_0xd88903(0x133)](_0x229dd8)[_0xd88903(0x130)](_0x22e424=>_0x22e424[_0xd88903(0x12d)+_0xd88903(0x112)]()==='path')??_0xd88903(0x111);return String(_0x229dd8[_0x3e9960]||'')[_0xd88903(0x128)](delimiter)[_0xd88903(0x139)](Boolean);}function canExecute(_0x3edbc0){const _0x4c6088=_0x16ae;try{return accessSync(_0x3edbc0,process[_0x4c6088(0x138)]===_0x4c6088(0x119)?constants[_0x4c6088(0x149)]:constants['X_OK']),!![];}catch{return![];}}function _0x16ae(_0x128675,_0x6cdcdd){_0x128675=_0x128675-0x10e;const _0x32d11f=_0x32d1();let _0x16ae4b=_0x32d11f[_0x128675];return _0x16ae4b;}function resolveExecutableOnPath(_0x56dd68,_0x3d4e82){const _0x270297=_0x16ae,_0x4e3b5a=String(_0x56dd68||'')['trim']();if(!_0x4e3b5a)return null;if(_0x4e3b5a[_0x270297(0x13e)]('/')||_0x4e3b5a[_0x270297(0x13e)]('\x5c'))return existsSync(_0x4e3b5a)?_0x4e3b5a:null;const _0xe619f3=[_0x4e3b5a];process[_0x270297(0x138)]===_0x270297(0x119)&&!FILE_EXTENSION_REGEX['test'](_0x4e3b5a)&&_0xe619f3[_0x270297(0x13c)](_0x4e3b5a+_0x270297(0x14c),_0x4e3b5a+_0x270297(0x12a),_0x4e3b5a+_0x270297(0x121));for(const _0x193398 of resolvePathEntries(_0x3d4e82)){for(const _0x2a5a23 of _0xe619f3){const _0x3fbbf8=join(_0x193398,_0x2a5a23);if(canExecute(_0x3fbbf8))return _0x3fbbf8;}}return null;}function resolveShellLaunchConfig(_0x343980){const _0x3355d8=_0x16ae;if(process[_0x3355d8(0x138)]===_0x3355d8(0x119)){const _0x529190=resolveExecutableOnPath(_0x3355d8(0x120),_0x343980)??resolveExecutableOnPath('powershe'+'ll',_0x343980);if(_0x529190)return{'command':_0x529190,'args':[_0x3355d8(0x142)]};const _0x3d6290=resolveExecutableOnPath(_0x3355d8(0x114),_0x343980);if(_0x3d6290)return{'command':_0x3d6290,'args':['/Q']};throw new Error('No\x20suppo'+'rted\x20Win'+_0x3355d8(0x137)+_0x3355d8(0x12f));}if(process[_0x3355d8(0x138)]===_0x3355d8(0x14e)){const _0x234c61=['/bin/zsh',_0x3355d8(0x11d)+_0x3355d8(0x110)+'sh','/opt/hom'+_0x3355d8(0x13f)+_0x3355d8(0x11f)][_0x3355d8(0x130)](canExecute);if(_0x234c61)return{'command':_0x234c61,'args':['-i']};const _0x3db00e=[_0x3355d8(0x141)+'h',_0x3355d8(0x11d)+'al/bin/b'+_0x3355d8(0x124),_0x3355d8(0x113)+'ebrew/bi'+_0x3355d8(0x13d)][_0x3355d8(0x130)](canExecute);if(_0x3db00e)return{'command':_0x3db00e,'args':[_0x3355d8(0x144),'-i']};}const _0x366df0=resolveExecutableOnPath(process.env.SHELL||'',_0x343980)??resolveExecutableOnPath('bash',_0x343980)??resolveExecutableOnPath('sh',_0x343980);if(!_0x366df0)throw new Error('No\x20suppo'+_0x3355d8(0x134)+'ll\x20found');return{'command':_0x366df0,'args':['-l','-i']};}export function createTerminalManager({cwd:_0x38b17b,emitData:_0xe349ea,emitExit:_0x36149f}){const _0x3a81dc=new Map();function _0x2df1c1(_0x3157da){const _0x45fe5d=_0x16ae,_0x360ffe=_0x3a81dc['get'](_0x3157da);if(!_0x360ffe)throw new Error(_0x45fe5d(0x11b)+_0x45fe5d(0x147)+'\x20not\x20fou'+'nd');return _0x360ffe;}async function _0x1d27cc(_0x421540={}){const _0xfe1adc=_0x16ae,_0x44164d={...process.env,'TERM':_0xfe1adc(0x136)+_0xfe1adc(0x10e),'COLORTERM':_0xfe1adc(0x129)+'r',..._0x421540[_0xfe1adc(0x145)]&&typeof _0x421540[_0xfe1adc(0x145)]==='object'?_0x421540[_0xfe1adc(0x145)]:{}},_0xa8b3=typeof _0x421540[_0xfe1adc(0x132)]===_0xfe1adc(0x131)&&_0x421540[_0xfe1adc(0x132)][_0xfe1adc(0x14a)]()?_0x421540[_0xfe1adc(0x132)]:'',_0x5bdfd7=_0xa8b3||_0x38b17b;await mkdir(_0x5bdfd7,{'recursive':!![]});const {command:_0x5c2995,args:_0x4e8383}=resolveShellLaunchConfig(_0x44164d),_0x44d5ae=randomUUID(),_0x483391=spawn(_0x5c2995,_0x4e8383,{'cwd':_0x5bdfd7,'env':_0x44164d,'stdio':'pipe'});return _0x3a81dc[_0xfe1adc(0x14d)](_0x44d5ae,{'sessionId':_0x44d5ae,'child':_0x483391}),_0x483391['stdout']['on'](_0xfe1adc(0x123),_0x5997cf=>_0xe349ea({'sessionId':_0x44d5ae,'data':_0x5997cf[_0xfe1adc(0x12b)]()})),_0x483391[_0xfe1adc(0x116)]['on'](_0xfe1adc(0x123),_0x7abc24=>_0xe349ea({'sessionId':_0x44d5ae,'data':_0x7abc24[_0xfe1adc(0x12b)]()})),_0x483391['on'](_0xfe1adc(0x14b),(_0x55532c,_0x21030a)=>{const _0x3b939b=_0xfe1adc;_0x3a81dc[_0x3b939b(0x13b)](_0x44d5ae),_0x36149f({'sessionId':_0x44d5ae,'exitCode':_0x55532c,'signal':_0x21030a});}),_0x483391['on']('error',_0x69270c=>{const _0x63f447=_0xfe1adc;_0xe349ea({'sessionId':_0x44d5ae,'data':_0x69270c[_0x63f447(0x148)]+'\x0a'});}),{'sessionId':_0x44d5ae,'shell':basename(_0x5c2995),'cwd':_0x5bdfd7};}function _0x5731df(_0x5714d9={}){const _0x20c48a=_0x16ae,_0x22628d=_0x2df1c1(String(_0x5714d9[_0x20c48a(0x118)+'d']||''));return _0x22628d[_0x20c48a(0x117)][_0x20c48a(0x11a)][_0x20c48a(0x12c)](String(_0x5714d9[_0x20c48a(0x123)]||'')),{'ok':!![]};}function _0x144bb4(_0xf2c55d={}){const _0x25c6a6=_0x16ae,_0x2688ff=String(_0xf2c55d[_0x25c6a6(0x118)+'d']||'');return _0x2df1c1(_0x2688ff),{'ok':!![],'ignored':!![]};}function _0x1268b8(_0x893ac9={}){const _0x36914e=_0x16ae,_0x31a6c1=String(_0x893ac9['sessionI'+'d']||''),_0x36b368=_0x3a81dc['get'](_0x31a6c1);if(!_0x36b368)return{'ok':!![],'closed':![]};return _0x3a81dc['delete'](_0x31a6c1),_0x36b368[_0x36914e(0x117)]['kill'](),{'ok':!![],'closed':!![]};}function _0x5b07e5(){const _0x126006=_0x16ae;for(const _0x5ef73f of _0x3a81dc[_0x126006(0x10f)]())_0x5ef73f[_0x126006(0x117)][_0x126006(0x127)]();_0x3a81dc['clear']();}return{'create':_0x1d27cc,'input':_0x5731df,'resize':_0x144bb4,'close':_0x1268b8,'dispose':_0x5b07e5};}
@@ -0,0 +1 @@
1
+ (function(_0x3fa457,_0x177f84){const _0xbc567e=_0x5e37,_0x1942bb=_0x3fa457();while(!![]){try{const _0x255d0b=-parseInt(_0xbc567e(0x1c8))/0x1*(-parseInt(_0xbc567e(0x19d))/0x2)+parseInt(_0xbc567e(0x1fa))/0x3*(-parseInt(_0xbc567e(0x1e6))/0x4)+parseInt(_0xbc567e(0x16a))/0x5*(-parseInt(_0xbc567e(0x165))/0x6)+parseInt(_0xbc567e(0x19f))/0x7+parseInt(_0xbc567e(0x1d9))/0x8+parseInt(_0xbc567e(0x19a))/0x9*(parseInt(_0xbc567e(0x232))/0xa)+parseInt(_0xbc567e(0x188))/0xb;if(_0x255d0b===_0x177f84)break;else _0x1942bb['push'](_0x1942bb['shift']());}catch(_0x36aad3){_0x1942bb['push'](_0x1942bb['shift']());}}}(_0x4c70,0x607f1));import{existsSync,readFileSync,readdirSync,rmSync,statSync,writeFileSync}from'node:fs';import{homedir}from'node:os';import{basename,join}from'node:path';import _0x47ccac from'electron-updater';import{app,BrowserWindow}from'electron';import{clean,compare}from'semver';const {autoUpdater}=_0x47ccac,DEFAULT_INSTALL_QUIT_TIMEOUT_MS=0xea60,DEFAULT_BACKGROUND_UPDATE_CHECK_INTERVAL_MS=0x3c*0x3c*0x3e8,DEFAULT_BACKGROUND_UPDATE_CHECK_STALE_MS=0x1e*0x3c*0x3e8;function normalizeAppUpdatePackageFileName(_0x5eb7c9){const _0x55cd7e=_0x5e37;if(typeof _0x5eb7c9!==_0x55cd7e(0x1cb))return null;const _0x40959b=_0x5eb7c9[_0x55cd7e(0x234)]();if(!_0x40959b||_0x40959b==='.'||_0x40959b==='..'||_0x40959b['includes']('/')||_0x40959b[_0x55cd7e(0x1f5)]('\x5c'))return null;return _0x40959b;}function isMatchingAppUpdatePackageMetadata(_0x500cd1,_0x206e22){const _0x592b56=_0x5e37;if(!_0x500cd1||!_0x206e22||typeof _0x206e22!==_0x592b56(0x227))return![];const _0x2100c2=_0x206e22,_0x38ebca=normalizeAppUpdatePackageFileName(_0x500cd1['fileName']),_0x17df96=normalizeAppUpdatePackageFileName(_0x2100c2['fileName']),_0x3376c5=_0x500cd1[_0x592b56(0x22c)][_0x592b56(0x234)](),_0x2cd5d6=typeof _0x2100c2[_0x592b56(0x22c)]==='string'?_0x2100c2['sha512']['trim']():'';return Boolean(_0x38ebca&&_0x17df96&&_0x38ebca===_0x17df96&&_0x3376c5&&_0x2cd5d6&&_0x3376c5===_0x2cd5d6);}function normalizeAppVersion(_0xe8e16b){const _0x13d5d7=_0x5e37;return clean(String(_0xe8e16b??'')[_0x13d5d7(0x234)]());}function compareAppVersions(_0x5a5249,_0x3580a0){const _0xd54fd6=_0x5e37,_0x46a283=normalizeAppVersion(_0x5a5249),_0x4f0c9b=normalizeAppVersion(_0x3580a0);if(!_0x46a283||!_0x4f0c9b)return _0xd54fd6(0x180);const _0x31e4af=compare(_0x4f0c9b,_0x46a283);if(_0x31e4af===0x0)return _0xd54fd6(0x1b8)+_0xd54fd6(0x215);return _0x31e4af>0x0?_0xd54fd6(0x186)+'ewer':_0xd54fd6(0x1e7)+'lder';}function normalizeAppUpdateChannel(_0x277e01){const _0xb668e2=_0x5e37;return _0x277e01===_0xb668e2(0x1af)?'alpha':_0xb668e2(0x1b1);}function normalizeString(_0x468ad7){const _0x506cb6=_0x5e37;if(typeof _0x468ad7!==_0x506cb6(0x1cb))return null;const _0x290530=_0x468ad7[_0x506cb6(0x234)]();return _0x290530||null;}function normalizeReleaseNotes(_0x5f27bf){const _0x117aab=_0x5e37;if(typeof _0x5f27bf===_0x117aab(0x1cb))return normalizeString(_0x5f27bf);if(!Array[_0x117aab(0x1ff)](_0x5f27bf))return null;const _0x33abe4=_0x5f27bf[_0x117aab(0x168)](_0x2ea51e=>{const _0x29d048=_0x117aab;if(typeof _0x2ea51e===_0x29d048(0x1cb)){const _0x3a2006=normalizeString(_0x2ea51e);return _0x3a2006?[_0x3a2006]:[];}if(!_0x2ea51e||typeof _0x2ea51e!==_0x29d048(0x227))return[];const _0x5de2a6=normalizeString(_0x2ea51e[_0x29d048(0x233)]),_0x3f5d9a=normalizeString(_0x2ea51e[_0x29d048(0x1ae)]);if(_0x5de2a6&&_0x3f5d9a)return['v'+_0x5de2a6+'\x0a'+_0x3f5d9a];if(_0x3f5d9a)return[_0x3f5d9a];if(_0x5de2a6)return['v'+_0x5de2a6];return[];});return _0x33abe4['length']>0x0?_0x33abe4['join']('\x0a\x0a'):null;}function _0x4c70(){const _0x2be068=['files','r\x20starte','installi','utf8','isArray','uitTimeo','当前已经是最新版','ytes','\x20已准备好安装','isFile','warn','hell.con','o\x20inspec','e\x20check\x20','isDestro','ewer','check\x20re','win32','ndCheckI','error','load','url','resource','map','errorCod','id\x20not\x20t','sion','quitAndI','t\x20pendin','.cache','toFixed','autoDown','Second','edVersio','o\x20read\x20a','ndCheckS','Local','urrent\x20p','failed','Library','l\x20phase\x20','darwin','transfer','ending\x20u','object','新版本','当前没有可下载的','number','ntervalM','sha512','fileName','install-','unsuppor','更新安装未能启动','then','10JjTYqQ','version','trim','l\x20packag','ntext.js','t\x20instal','exec','备安装','-error','parse','fig\x20中禁用','392388EcTeRk','ge\x20for\x20c','当前没有可安装的','flatMap','自动更新仅在打包','45dxEjPS','ate','acheDirN','pathname','重试下载更新','te\x20packa','toISOStr','bytesPer','test','app:upda','vailable','o\x20read\x20p','更新包已准备好安','nstall','lable','fo.json','发现可用更新','g\x20instal','安装器未就绪,请','taleMs','Percent','isFinite','unknown','Quit','pp-updat','within\x20t','未知的自动更新错','webConte','remote-n','ted','1061467dprjEG','releaseN','rigger\x20a','\x20AppImag','enabled','ame','hasUpdat','download','update-d','quested','pp\x20quit\x20','nd\x20updat','更新包\x20v','context','sPath','cache\x20hi','当前构建不支持自','ntext','3196809GvYKpg','aded\x20pac','yed','4RcNTCH','supporte','4607505LFWWFU','ing','te-state','已下载更新','finally','otes','now','channel','linux','正在验证安装包…','interval',',请重新下载更新','发现本地更新包\x20','min','allOnApp','note','alpha','platform','latest','ndows','assign','imeout','check-er','isPackag','te.yml','same-ver','正在安装更新并重','percent','正在重新准备更新','eVersion','backgrou','send',',请重新校验并准','find','max','AppData','Updates','Update','latform','正在下载\x20','rsion','172043nOlZSM','availabl','app-upda','string','Linux\x20下仅','red','pdate-in','ersion','utMs','自动更新已在\x20s','o\x20clear\x20','currentV','no\x20match','-for-upd','pending','autoInst','update-n','1105672meDElx','自动更新已禁用','idle','schedule','path','package\x20','phase-co','able','info','update-i','ownloade','stringif','ot-avail','347644OzbFxs','remote-o','install\x20','not-avai','-updater','total','size','包后再试','remoteVe','message','failed\x20t','e\x20版本支持应用','发现新版本\x20v','ha\x20更新渠道','push','includes','phase','releaseD','getAllWi','kage','21IoBguL'];_0x4c70=function(){return _0x2be068;};return _0x4c70();}function extractUpdateInfoPatch(_0x108bf5){const _0x165db4=_0x5e37;if(!_0x108bf5||typeof _0x108bf5!==_0x165db4(0x227))return{};return{'remoteVersion':normalizeString(_0x108bf5['version']),'availableVersion':normalizeString(_0x108bf5['version']),'releaseName':normalizeString(_0x108bf5[_0x165db4(0x189)+'ame']),'releaseDate':normalizeString(_0x108bf5[_0x165db4(0x1f7)+_0x165db4(0x16b)]),'releaseNotes':normalizeReleaseNotes(_0x108bf5['releaseN'+_0x165db4(0x1a4)])};}function extractPackageFileName(_0x37e831){const _0x4f4051=_0x5e37,_0x462aa8=normalizeString(_0x37e831);if(!_0x462aa8)return null;try{const _0x4cb85c=new URL(_0x462aa8);return normalizeAppUpdatePackageFileName(decodeURIComponent(basename(_0x4cb85c[_0x4f4051(0x16d)])));}catch{const _0x1145a8=_0x462aa8['split'](/[?#]/u,0x1)[0x0];return normalizeAppUpdatePackageFileName(basename(_0x1145a8));}}function getPreferredUpdatePackagePattern(){const _0x1078cf=_0x5e37;if(process[_0x1078cf(0x1b0)]===_0x1078cf(0x224))return/\.zip$/iu;if(process[_0x1078cf(0x1b0)]===_0x1078cf(0x20c))return/\.exe$/iu;if(process['platform']===_0x1078cf(0x1a7))return/\.AppImage$/u;return/\.(zip|exe|AppImage)$/u;}function extractRemoteUpdatePackageMetadata(_0xcc47d6,_0xf54d8c){const _0xa2d3fe=_0x5e37;if(!_0xcc47d6||typeof _0xcc47d6!==_0xa2d3fe(0x227))return null;const _0x5ce219=normalizeString(_0xcc47d6[_0xa2d3fe(0x233)]);if(!_0x5ce219)return null;const _0x387d2a=[],_0x3bcb13=Array[_0xa2d3fe(0x1ff)](_0xcc47d6[_0xa2d3fe(0x1fb)])?_0xcc47d6[_0xa2d3fe(0x1fb)]:[];for(const _0x29c8c1 of _0x3bcb13){if(!_0x29c8c1||typeof _0x29c8c1!==_0xa2d3fe(0x227))continue;const _0x4596e=extractPackageFileName(_0x29c8c1['url'])??extractPackageFileName(_0x29c8c1[_0xa2d3fe(0x1dd)])??normalizeAppUpdatePackageFileName(_0x29c8c1[_0xa2d3fe(0x22d)]),_0x57f6f8=normalizeString(_0x29c8c1[_0xa2d3fe(0x22c)]);_0x4596e&&_0x57f6f8&&_0x387d2a[_0xa2d3fe(0x1f4)]({'fileName':_0x4596e,'sha512':_0x57f6f8});}const _0x4e6626=extractPackageFileName(_0xcc47d6[_0xa2d3fe(0x210)])??extractPackageFileName(_0xcc47d6[_0xa2d3fe(0x1dd)])??normalizeAppUpdatePackageFileName(_0xcc47d6['fileName']),_0x586921=normalizeString(_0xcc47d6[_0xa2d3fe(0x22c)]);_0x4e6626&&_0x586921&&_0x387d2a[_0xa2d3fe(0x1f4)]({'fileName':_0x4e6626,'sha512':_0x586921});const _0x3e141b=_0x387d2a[_0xa2d3fe(0x1c0)](_0x696514=>getPreferredUpdatePackagePattern()[_0xa2d3fe(0x172)](_0x696514['fileName']));if(!_0x3e141b)return _0xf54d8c?.[_0xa2d3fe(0x205)]?.(_0xa2d3fe(0x1d4)+'ing\x20upda'+_0xa2d3fe(0x16f)+_0xa2d3fe(0x166)+_0xa2d3fe(0x220)+_0xa2d3fe(0x1c5),{'platform':process[_0xa2d3fe(0x1b0)],'candidates':_0x387d2a[_0xa2d3fe(0x212)](_0x2fc113=>_0x2fc113[_0xa2d3fe(0x22d)])}),null;return{'version':_0x5ce219,..._0x3e141b};}function extractProgressPatch(_0x1901c4){const _0x4c156e=_0x5e37;return{'downloadPercent':typeof _0x1901c4[_0x4c156e(0x1ba)]===_0x4c156e(0x22a)?_0x1901c4['percent']:null,'bytesPerSecond':typeof _0x1901c4[_0x4c156e(0x171)+_0x4c156e(0x21b)]===_0x4c156e(0x22a)?_0x1901c4[_0x4c156e(0x171)+_0x4c156e(0x21b)]:null,'transferredBytes':typeof _0x1901c4[_0x4c156e(0x225)+'red']===_0x4c156e(0x22a)?_0x1901c4[_0x4c156e(0x225)+_0x4c156e(0x1cd)]:null,'totalBytes':typeof _0x1901c4[_0x4c156e(0x1eb)]==='number'?_0x1901c4['total']:null};}function _0x5e37(_0x51c91d,_0x15a61a){_0x51c91d=_0x51c91d-0x161;const _0x4c7033=_0x4c70();let _0x5e37d9=_0x4c7033[_0x51c91d];return _0x5e37d9;}function getErrorMessage(_0x1af385){const _0x402a30=_0x5e37;if(_0x1af385 instanceof Error&&_0x1af385['message']['trim']())return _0x1af385[_0x402a30(0x1ef)][_0x402a30(0x234)]();if(typeof _0x1af385===_0x402a30(0x1cb)&&_0x1af385[_0x402a30(0x234)]())return _0x1af385[_0x402a30(0x234)]();return _0x402a30(0x184)+'误';}export function createUpdateController({shellConfig:_0x21c893,appName:_0x52aadf,appVersion:_0x497584,broadcast:_0x1908b3,logger:_0x1b2578}){const _0x53937c=_0x5e37,_0x2d08e4=_0x21c893['updates']??{},_0x240388=normalizeAppUpdateChannel(_0x2d08e4[_0x53937c(0x1a6)]),_0x20da88={'backgroundCheckIntervalMs':_0x2d08e4[_0x53937c(0x1bd)+_0x53937c(0x20d)+_0x53937c(0x22b)+'s']??DEFAULT_BACKGROUND_UPDATE_CHECK_INTERVAL_MS,'backgroundCheckStaleMs':_0x2d08e4['backgrou'+'ndCheckS'+_0x53937c(0x17d)]??DEFAULT_BACKGROUND_UPDATE_CHECK_STALE_MS,'installQuitTimeoutMs':_0x2d08e4['installQ'+_0x53937c(0x200)+_0x53937c(0x1d0)]??DEFAULT_INSTALL_QUIT_TIMEOUT_MS,'autoDownload':_0x2d08e4['autoDown'+_0x53937c(0x20f)]===!![]},_0x554240={'supported':![],'channel':_0x240388,'phase':'unsuppor'+_0x53937c(0x187),'currentVersion':_0x497584(),'remoteVersion':null,'comparisonResult':_0x53937c(0x180),'hasUpdate':![],'availableVersion':null,'downloadedVersion':null,'releaseName':null,'releaseDate':null,'releaseNotes':null,'downloadPercent':null,'bytesPerSecond':null,'transferredBytes':null,'totalBytes':null,'hasPendingPackage':![],'pendingPackageName':null,'pendingPackageBytes':null,'checkedAt':null,'message':_0x53937c(0x1da),'error':null,'errorCode':null};let _0x281618=![],_0x2bb88a=null,_0x2ce4cd=null,_0xd18189=null,_0x49da25=null,_0x4bf8c1=null,_0x1b451d=![],_0x4dc004=null,_0x42548c=0x0;function _0x10d32b(){const _0x4dd421=_0x53937c;if(process[_0x4dd421(0x1b0)]===_0x4dd421(0x224))return join(homedir(),_0x4dd421(0x222),'Caches');if(process['platform']===_0x4dd421(0x20c))return process.env.LOCALAPPDATA??join(homedir(),_0x4dd421(0x1c2),_0x4dd421(0x21f));return process.env.XDG_CACHE_HOME??join(homedir(),_0x4dd421(0x218));}function _0x1d86b5(){const _0x484064=_0x53937c;if(!app[_0x484064(0x1b6)+'ed']||!process[_0x484064(0x211)+_0x484064(0x196)])return{};const _0x46c355=join(process[_0x484064(0x211)+_0x484064(0x196)],_0x484064(0x1ca)+_0x484064(0x1b7));if(!existsSync(_0x46c355))return{};try{const _0x501213=readFileSync(_0x46c355,_0x484064(0x1fe)),_0x5227f9=/^\s*channel:\s*["']?([^"'\s#]+)["']?/imu[_0x484064(0x238)](_0x501213),_0x439007=/^\s*updaterCacheDirName:\s*["']?([^"'\s#]+)["']?/imu[_0x484064(0x238)](_0x501213);return{'channel':normalizeAppUpdateChannel(_0x5227f9?.[0x1]),'updaterCacheDirName':normalizeString(_0x439007?.[0x1])};}catch(_0x449a84){return _0x1b2578?.[_0x484064(0x205)]?.(_0x484064(0x1f0)+_0x484064(0x21d)+_0x484064(0x182)+'e.yml',{'error':getErrorMessage(_0x449a84)}),{};}}const _0x43f53b=_0x1d86b5();_0x43f53b[_0x53937c(0x1a6)]&&(_0x554240['channel']=_0x43f53b[_0x53937c(0x1a6)]);function _0x5d74ee(){const _0x7f9ae1=_0x53937c,_0x2a04ef=_0x43f53b['updaterC'+_0x7f9ae1(0x16c)+_0x7f9ae1(0x18d)]||_0x52aadf()+_0x7f9ae1(0x1ea);return join(_0x10d32b(),_0x2a04ef);}function _0x5b86d3(_0x470d81){const _0x92a653=_0x53937c;return _0x470d81==='alpha'?'当前使用\x20Alp'+_0x92a653(0x1f3):'自动更新功能已就'+'绪';}function _0x2e6c1c(){if(_0x2d08e4['enabled']===![])return![];if(!app['isPackag'+'ed'])return![];if(process['platform']!=='linux')return!![];return Boolean(process.env.APPIMAGE);}function _0x4aef70(){const _0x48ba9f=_0x53937c;if(_0x2d08e4[_0x48ba9f(0x18c)]===![])return _0x48ba9f(0x1d1)+_0x48ba9f(0x206)+_0x48ba9f(0x164);if(!app[_0x48ba9f(0x1b6)+'ed'])return _0x48ba9f(0x169)+'后的安装包中可用';if(process[_0x48ba9f(0x1b0)]===_0x48ba9f(0x1a7))return _0x48ba9f(0x1cc)+_0x48ba9f(0x18b)+_0x48ba9f(0x1f1)+'内自动更新';return _0x48ba9f(0x198)+'动更新';}function _0x2d1a85(){const _0x1ec329=_0x53937c;return join(_0x21c893['dataDir'],_0x1ec329(0x22e)+_0x1ec329(0x1df)+_0x1ec329(0x236)+'on');}function _0x5701fe(){return{'hasPendingPackage':![],'pendingPackageName':null,'pendingPackageBytes':null};}function _0x48cf29(){return{..._0x554240};}function _0x37755b(){const _0x29d9ed=_0x53937c,_0x5d2069=_0x48cf29();for(const _0x566544 of BrowserWindow[_0x29d9ed(0x1f8)+_0x29d9ed(0x1b2)]()){!_0x566544[_0x29d9ed(0x209)+_0x29d9ed(0x19c)]()&&_0x566544[_0x29d9ed(0x185)+'nts'][_0x29d9ed(0x1be)](_0x29d9ed(0x173)+_0x29d9ed(0x1a1),_0x5d2069);}_0x1908b3?.(_0x29d9ed(0x173)+'te-state',_0x5d2069);}function _0x567516(_0x2aa049){const _0x7477a9=_0x53937c,_0x5ae23a={..._0x2aa049};_0x5ae23a[_0x7477a9(0x20e)]===null&&_0x5ae23a[_0x7477a9(0x213)+'e']===undefined&&(_0x5ae23a[_0x7477a9(0x213)+'e']=null),Object[_0x7477a9(0x1b3)](_0x554240,_0x5ae23a,{'currentVersion':_0x497584()}),_0x37755b();}function _0x283c6b(){const _0x15e71e=_0x53937c;if(!_0x554240[_0x15e71e(0x19e)+'d'])throw new Error(_0x4aef70());}function _0xdd2627(_0x395919,_0x37d41b={}){const _0x569828=_0x53937c;_0x1b2578?.[_0x569828(0x1e1)]?.(_0x395919,_0x37d41b);}function _0x376bb1(_0x32c1ef,_0x449a89={}){const _0x13f065=_0x53937c;_0x1b2578?.[_0x13f065(0x205)]?.(_0x32c1ef,_0x449a89);}function _0x4b27c7(_0x3ac106){const _0x22df74=_0x53937c;if(typeof _0x3ac106!==_0x22df74(0x22a)||!Number[_0x22df74(0x17f)](_0x3ac106))return null;const _0xefa003=Math[_0x22df74(0x1ac)](0x63,Math['max'](0x0,_0x3ac106));if(_0x554240[_0x22df74(0x1f6)]!=='download'+_0x22df74(0x1a0)||typeof _0x554240[_0x22df74(0x18f)+_0x22df74(0x17e)]!==_0x22df74(0x22a))return _0xefa003;return Math[_0x22df74(0x1c1)](_0x554240[_0x22df74(0x18f)+_0x22df74(0x17e)],_0xefa003);}function _0x4dbf85(_0x34c1c4,_0x56c818){const _0x12a232=_0x53937c,_0x318f06=_0x34c1c4?'v'+_0x34c1c4:_0x12a232(0x228);if(typeof _0x56c818===_0x12a232(0x22a)){if(_0x56c818>=0x63)return _0x12a232(0x1a8);return'正在下载\x20'+_0x318f06+'\x20('+_0x56c818[_0x12a232(0x219)](0x1)+'%)';}return _0x12a232(0x1c6)+_0x318f06;}function _0x512d51(_0x1f9839){const _0x29e2bb=_0x53937c;try{writeFileSync(_0x2d1a85(),JSON[_0x29e2bb(0x1e4)+'y'](_0x1f9839,null,0x2),_0x29e2bb(0x1fe));}catch(_0x52faa1){_0x376bb1(_0x29e2bb(0x1f0)+'o\x20persis'+_0x29e2bb(0x237)+_0x29e2bb(0x223)+_0x29e2bb(0x195),{'error':getErrorMessage(_0x52faa1)});}}function _0x2ac565(){const _0x1e244a=_0x53937c;try{rmSync(_0x2d1a85(),{'force':!![]});}catch(_0x3a85dc){_0x376bb1('failed\x20t'+_0x1e244a(0x1d2)+_0x1e244a(0x1e8)+'phase\x20co'+_0x1e244a(0x199),{'error':getErrorMessage(_0x3a85dc)});}}function _0x46be02(){const _0x37b6d9=_0x53937c,_0x1e5a6f=join(_0x5d74ee(),_0x37b6d9(0x1d6));if(!existsSync(_0x1e5a6f))return{'packageName':null,'packageBytes':null};try{const _0x3efc7a=readdirSync(_0x1e5a6f)['find'](_0xe4923d=>/\.(zip|exe|dmg|AppImage)$/iu[_0x37b6d9(0x172)](_0xe4923d))??null;if(!_0x3efc7a)return{'packageName':null,'packageBytes':null};const _0x12dc99=join(_0x1e5a6f,_0x3efc7a);return{'packageName':_0x3efc7a,'packageBytes':statSync(_0x12dc99)[_0x37b6d9(0x1ec)]};}catch(_0x41918d){return _0x376bb1(_0x37b6d9(0x1f0)+_0x37b6d9(0x207)+_0x37b6d9(0x217)+_0x37b6d9(0x17b)+_0x37b6d9(0x235)+'e',{'error':getErrorMessage(_0x41918d)}),{'packageName':null,'packageBytes':null};}}function _0x37a353(){const _0x3f67dc=_0x53937c;if(!_0xd18189)return null;const _0x848927=join(_0x5d74ee(),_0x3f67dc(0x1d6)),_0x7a0bcf=join(_0x848927,_0x3f67dc(0x1e2)+'nfo.json');if(!existsSync(_0x7a0bcf))return null;let _0x286266=null;try{_0x286266=JSON[_0x3f67dc(0x163)](readFileSync(_0x7a0bcf,'utf8'));}catch(_0x373c24){return _0x376bb1(_0x3f67dc(0x1f0)+_0x3f67dc(0x175)+_0x3f67dc(0x226)+_0x3f67dc(0x1ce)+_0x3f67dc(0x179),{'error':getErrorMessage(_0x373c24)}),null;}if(!isMatchingAppUpdatePackageMetadata(_0xd18189,_0x286266))return null;const _0x524f26=join(_0x848927,_0xd18189[_0x3f67dc(0x22d)]);if(!existsSync(_0x524f26))return null;try{const _0x256dcf=statSync(_0x524f26);if(!_0x256dcf[_0x3f67dc(0x204)]()||_0x256dcf[_0x3f67dc(0x1ec)]===0x0)return null;return{'metadata':_0xd18189,'packageName':_0xd18189[_0x3f67dc(0x22d)],'packageBytes':_0x256dcf[_0x3f67dc(0x1ec)]};}catch(_0x5e0ea3){return _0x376bb1(_0x3f67dc(0x1f0)+_0x3f67dc(0x207)+_0x3f67dc(0x217)+'g\x20downlo'+_0x3f67dc(0x19b)+_0x3f67dc(0x1f9),{'error':getErrorMessage(_0x5e0ea3)}),null;}}function _0x6feb17(_0x12a4ed){const _0x4988ab=_0x53937c,_0x2c455c=_0x37a353();if(!_0x2c455c)return![];const {metadata:_0x4b33cc,packageName:_0x54308a,packageBytes:_0x15ce0c}=_0x2c455c;return _0xdd2627('pending\x20'+_0x4988ab(0x1de)+_0x4988ab(0x197)+'t',{'reason':_0x12a4ed,'version':_0x4b33cc[_0x4988ab(0x233)],'packageName':_0x54308a,'packageBytes':_0x15ce0c}),_0x567516({'phase':_0x4988ab(0x1c9)+'e','remoteVersion':_0x4b33cc[_0x4988ab(0x233)],'comparisonResult':_0x4988ab(0x186)+_0x4988ab(0x20a),'hasUpdate':!![],'availableVersion':_0x4b33cc[_0x4988ab(0x233)],'downloadedVersion':null,'downloadPercent':null,'bytesPerSecond':null,'transferredBytes':_0x15ce0c,'totalBytes':_0x15ce0c,'hasPendingPackage':!![],'pendingPackageName':_0x54308a,'pendingPackageBytes':_0x15ce0c,'error':null,'message':_0x4988ab(0x1ab)+'v'+_0x4b33cc['version']+(_0x4988ab(0x1bf)+_0x4988ab(0x161))}),!![];}function _0x3d7aed(){const _0xbb2c9a=_0x53937c;return _0x554240[_0xbb2c9a(0x19e)+'d']&&!_0x2bb88a&&!_0x2ce4cd&&['idle',_0xbb2c9a(0x1e9)+_0xbb2c9a(0x178),'error'][_0xbb2c9a(0x1f5)](_0x554240[_0xbb2c9a(0x1f6)]);}function _0x26765c(){if(!_0x4bf8c1)return;clearTimeout(_0x4bf8c1),_0x4bf8c1=null;}function _0x5d2184(_0x4b277f){const _0xa03c61=_0x53937c,_0x5f49b6=_0x554240[_0xa03c61(0x18f)+_0xa03c61(0x21c)+'n'],_0xce87fc=_0x554240[_0xa03c61(0x1c9)+_0xa03c61(0x1bc)];_0x49da25=null,_0x1b451d=![],_0x26765c(),_0x2ac565(),_0x567516({'phase':_0xa03c61(0x20e),'checkedAt':new Date()[_0xa03c61(0x170)+_0xa03c61(0x1a0)](),'hasPendingPackage':![],'pendingPackageName':null,'pendingPackageBytes':null,'hasUpdate':!![],'availableVersion':_0xce87fc??_0x5f49b6,'downloadedVersion':_0x5f49b6,'error':getErrorMessage(_0x4b277f),'errorCode':_0xa03c61(0x22e)+_0xa03c61(0x20e),'message':'安装更新失败'});}function _0x357e34(){const _0x1ea4ba=_0x53937c;_0x26765c(),_0x1b451d=![],_0x4bf8c1=setTimeout(()=>{const _0x428c8d=_0x5e37;if(_0x1b451d||_0x554240[_0x428c8d(0x1f6)]!==_0x428c8d(0x1fd)+'ng')return;_0x376bb1(_0x428c8d(0x216)+'nstall\x20d'+_0x428c8d(0x214)+_0x428c8d(0x18a)+_0x428c8d(0x192)+_0x428c8d(0x183)+_0x428c8d(0x1b4),{'downloadedVersion':_0x554240[_0x428c8d(0x18f)+_0x428c8d(0x21c)+'n'],'currentVersion':_0x554240[_0x428c8d(0x1d3)+_0x428c8d(0x1cf)]}),_0x5d2184(new Error(_0x428c8d(0x230)+_0x428c8d(0x1aa)+_0x428c8d(0x1ed)));},_0x20da88['installQ'+_0x1ea4ba(0x200)+_0x1ea4ba(0x1d0)]);}function _0x4d4cb1(){const _0x525d4e=_0x53937c;if(_0x281618)return;_0x281618=!![],_0x554240['supporte'+'d']=_0x2e6c1c(),_0x554240['phase']=_0x554240[_0x525d4e(0x19e)+'d']?_0x525d4e(0x1db):_0x525d4e(0x22f)+_0x525d4e(0x187),_0x554240[_0x525d4e(0x1ef)]=_0x554240[_0x525d4e(0x19e)+'d']?_0x5b86d3(_0x554240[_0x525d4e(0x1a6)]):_0x4aef70();if(!_0x554240['supporte'+'d']){_0x37755b();return;}autoUpdater[_0x525d4e(0x21a)+_0x525d4e(0x20f)]=_0x20da88[_0x525d4e(0x21a)+_0x525d4e(0x20f)],autoUpdater[_0x525d4e(0x1d7)+_0x525d4e(0x1ad)+_0x525d4e(0x181)]=![],autoUpdater['channel']=_0x554240[_0x525d4e(0x1a6)],autoUpdater['on']('checking'+_0x525d4e(0x1d5)+_0x525d4e(0x16b),()=>{const _0x513f43=_0x525d4e;_0xd18189=null,_0x567516({'phase':'checking','checkedAt':new Date()[_0x513f43(0x170)+'ing'](),'remoteVersion':null,'comparisonResult':'unknown','hasUpdate':![],'availableVersion':null,'downloadedVersion':null,'downloadPercent':null,'bytesPerSecond':null,'transferredBytes':null,'totalBytes':null,..._0x5701fe(),'error':null,'message':'正在检查更新'});}),autoUpdater['on']('update-a'+_0x525d4e(0x174),_0x4b6de5=>{const _0x2fcde7=_0x525d4e,_0x36bc55=extractUpdateInfoPatch(_0x4b6de5),_0x2fb7f8=compareAppVersions(_0x497584(),_0x36bc55['remoteVe'+_0x2fcde7(0x1c7)]);if(_0x2fb7f8!==_0x2fcde7(0x186)+_0x2fcde7(0x20a)){_0xd18189=null,_0x567516({..._0x36bc55,'phase':_0x2fcde7(0x1e9)+_0x2fcde7(0x178),'comparisonResult':_0x2fb7f8,'hasUpdate':![],'availableVersion':null,'downloadedVersion':null,'downloadPercent':null,'bytesPerSecond':null,'transferredBytes':null,'totalBytes':null,..._0x5701fe(),'checkedAt':new Date()[_0x2fcde7(0x170)+_0x2fcde7(0x1a0)](),'error':null,'message':_0x2fcde7(0x201)+'本'});return;}_0xd18189=extractRemoteUpdatePackageMetadata(_0x4b6de5,_0x1b2578),_0x567516({..._0x36bc55,'phase':'availabl'+'e','comparisonResult':_0x2fb7f8,'hasUpdate':!![],'downloadedVersion':null,'downloadPercent':null,'bytesPerSecond':null,'transferredBytes':null,'totalBytes':null,..._0x5701fe(),'checkedAt':new Date()[_0x2fcde7(0x170)+_0x2fcde7(0x1a0)](),'error':null,'message':_0x36bc55[_0x2fcde7(0x1c9)+'eVersion']?_0x2fcde7(0x1f2)+_0x36bc55[_0x2fcde7(0x1c9)+_0x2fcde7(0x1bc)]:_0x2fcde7(0x17a)}),_0x6feb17('update_a'+'vailable');}),autoUpdater['on'](_0x525d4e(0x1d8)+_0x525d4e(0x1e5)+_0x525d4e(0x1e0),_0x44c1d1=>{const _0x1731c0=_0x525d4e;_0xd18189=null;const _0xa79356=extractUpdateInfoPatch(_0x44c1d1);_0x567516({..._0xa79356,'phase':_0x1731c0(0x1e9)+_0x1731c0(0x178),'comparisonResult':compareAppVersions(_0x497584(),_0xa79356[_0x1731c0(0x1ee)+_0x1731c0(0x1c7)]),'hasUpdate':![],'availableVersion':null,'downloadedVersion':null,'downloadPercent':null,'bytesPerSecond':null,'transferredBytes':null,'totalBytes':null,..._0x5701fe(),'checkedAt':new Date()[_0x1731c0(0x170)+_0x1731c0(0x1a0)](),'error':null,'message':_0x1731c0(0x201)+'本'});}),autoUpdater['on'](_0x525d4e(0x18f)+'-progres'+'s',_0xa1ebfe=>{const _0x39d6b5=_0x525d4e,_0x4ef75c=extractProgressPatch(_0xa1ebfe),_0x3fdc6d=_0x4b27c7(_0x4ef75c[_0x39d6b5(0x18f)+'Percent']??null);_0x567516({..._0x4ef75c,'downloadPercent':_0x3fdc6d,'phase':_0x39d6b5(0x18f)+_0x39d6b5(0x1a0),..._0x5701fe(),'error':null,'message':_0x4dbf85(_0x554240[_0x39d6b5(0x1c9)+'eVersion'],_0x3fdc6d)});}),autoUpdater['on'](_0x525d4e(0x190)+_0x525d4e(0x1e3)+'d',_0x4c0dd1=>{const _0x5b3beb=_0x525d4e,_0x19616a=extractUpdateInfoPatch(_0x4c0dd1),_0x2b2712=extractRemoteUpdatePackageMetadata(_0x4c0dd1,_0x1b2578)??_0xd18189;_0x2b2712&&(_0xd18189=_0x2b2712);const _0x4f90e4=_0x19616a[_0x5b3beb(0x1c9)+'eVersion']??_0x2b2712?.[_0x5b3beb(0x233)]??_0x554240['availabl'+'eVersion'];_0x567516({..._0x19616a,'phase':_0x5b3beb(0x18f)+'ed','comparisonResult':compareAppVersions(_0x497584(),_0x4f90e4),'hasUpdate':!![],'downloadedVersion':_0x4f90e4,'downloadPercent':0x64,..._0x5701fe(),'error':null,'message':_0x4f90e4?_0x5b3beb(0x194)+_0x4f90e4+_0x5b3beb(0x203):_0x5b3beb(0x176)+'装'});}),autoUpdater['on']('error',_0x3d77e7=>{const _0x31324e=_0x525d4e;if(_0x554240[_0x31324e(0x1f6)]==='installi'+'ng'){_0x5d2184(_0x3d77e7);return;}_0x567516({'phase':'error','checkedAt':new Date()[_0x31324e(0x170)+_0x31324e(0x1a0)](),..._0x5701fe(),'error':getErrorMessage(_0x3d77e7),'errorCode':_0x554240[_0x31324e(0x1f6)]===_0x31324e(0x18f)+_0x31324e(0x1a0)?'download'+_0x31324e(0x162):_0x31324e(0x1b5)+'ror','message':'自动更新失败'});}),_0x37755b();}async function _0xe71007(){const _0x574b63=_0x53937c;_0x4d4cb1(),_0x283c6b();if(_0x2bb88a)return _0x2bb88a;return _0xdd2627(_0x574b63(0x20b)+_0x574b63(0x191)),_0x2bb88a=autoUpdater['checkFor'+_0x574b63(0x1c3)]()[_0x574b63(0x231)](()=>_0x48cf29())[_0x574b63(0x1a3)](()=>{_0x2bb88a=null;}),_0x2bb88a;}async function _0xcdbfe2(){const _0x32c962=_0x53937c;_0x4d4cb1(),_0x283c6b();if(_0x554240[_0x32c962(0x1f6)]===_0x32c962(0x18f)+'ed'||_0x554240['phase']==='installi'+'ng')return _0x48cf29();if(!_0x554240[_0x32c962(0x18e)+'e'])throw new Error(_0x32c962(0x229)+'更新');const _0x2e6177=_0x554240[_0x32c962(0x1f6)]==='error'&&_0x554240[_0x32c962(0x213)+'e']===_0x32c962(0x22e)+_0x32c962(0x20e)&&Boolean(_0x554240['download'+_0x32c962(0x21c)+'n']);if(_0x554240['phase']==='error'){if(_0x2e6177)_0x567516({'phase':_0x32c962(0x1c9)+'e','hasUpdate':!![],'availableVersion':_0x554240[_0x32c962(0x1c9)+_0x32c962(0x1bc)]??_0x554240['download'+'edVersio'+'n'],'downloadedVersion':null,'downloadPercent':null,..._0x5701fe(),'error':null,'message':_0x32c962(0x1bb)+'包'});else{await _0xe71007();if(_0x554240[_0x32c962(0x1f6)]!=='availabl'+'e')throw new Error(_0x32c962(0x229)+'更新');}}if(![_0x32c962(0x1c9)+'e','download'+'ing'][_0x32c962(0x1f5)](_0x554240[_0x32c962(0x1f6)]))throw new Error(_0x32c962(0x229)+'更新');if(_0x2ce4cd)return _0x2ce4cd;return _0x2ce4cd=autoUpdater['download'+_0x32c962(0x1c4)]()['then'](()=>{const _0x141204=_0x32c962;return _0x554240[_0x141204(0x1f6)]!==_0x141204(0x18f)+'ed'&&_0x567516({'phase':'error','checkedAt':new Date()[_0x141204(0x170)+_0x141204(0x1a0)](),..._0x5701fe(),'error':'更新包校验完成但'+_0x141204(0x17c)+_0x141204(0x16e),'errorCode':_0x141204(0x18f)+_0x141204(0x162),'message':'更新准备失败'}),_0x48cf29();})[_0x32c962(0x1a3)](()=>{_0x2ce4cd=null;}),_0x2ce4cd;}function _0x4bad51(){const _0x7a487f=_0x53937c;_0x4d4cb1(),_0x283c6b();if(![_0x7a487f(0x18f)+'ed',_0x7a487f(0x1fd)+'ng'][_0x7a487f(0x1f5)](_0x554240[_0x7a487f(0x1f6)]))throw new Error(_0x7a487f(0x167)+_0x7a487f(0x1a2));const _0x9e5fc7=_0x46be02();_0x49da25=Date[_0x7a487f(0x1a5)](),_0x512d51({'startedAt':new Date(_0x49da25)[_0x7a487f(0x170)+_0x7a487f(0x1a0)](),'currentVersion':_0x554240['currentV'+_0x7a487f(0x1cf)],'downloadedVersion':_0x554240[_0x7a487f(0x18f)+_0x7a487f(0x21c)+'n'],'pendingPackage':_0x9e5fc7['packageN'+_0x7a487f(0x18d)],'pendingPackageBytes':_0x9e5fc7['packageB'+_0x7a487f(0x202)]}),_0x567516({'phase':'installi'+'ng',..._0x5701fe(),'error':null,'message':_0x7a487f(0x1b9)+'启应用'});try{_0x357e34(),autoUpdater[_0x7a487f(0x216)+_0x7a487f(0x177)](![],!![]);}catch(_0x44a3c3){_0x5d2184(_0x44a3c3);throw _0x44a3c3;}return{'ok':!![]};}async function _0x14ba7f(_0x51d8f8){const _0xc602b5=_0x53937c;if(!_0x3d7aed())return;_0x42548c=Date[_0xc602b5(0x1a5)](),_0xdd2627('backgrou'+'nd\x20updat'+_0xc602b5(0x208)+'requeste'+'d',{'reason':_0x51d8f8});try{await _0xe71007();}catch(_0xc49f96){_0x376bb1(_0xc602b5(0x1bd)+'nd\x20updat'+_0xc602b5(0x208)+_0xc602b5(0x221),{'reason':_0x51d8f8,'error':getErrorMessage(_0xc49f96)});}}function _0x5e0225(_0x79ecb5){const _0x1c9e7b=_0x53937c;if(!_0x554240[_0x1c9e7b(0x19e)+'d'])return;const _0x3fb277=Date[_0x1c9e7b(0x1a5)]()-_0x42548c;if(_0x3fb277<_0x20da88[_0x1c9e7b(0x1bd)+_0x1c9e7b(0x21e)+_0x1c9e7b(0x17d)])return;void _0x14ba7f(_0x79ecb5);}function _0x1c7643(){const _0x96856c=_0x53937c;_0x4d4cb1();if(!_0x554240['supporte'+'d']||_0x4dc004)return;_0x4dc004=setInterval(()=>{const _0x90fb98=_0x5e37;void _0x14ba7f(_0x90fb98(0x1a9));},_0x20da88[_0x96856c(0x1bd)+_0x96856c(0x20d)+_0x96856c(0x22b)+'s']),void _0x14ba7f('startup'),_0xdd2627('backgrou'+_0x96856c(0x193)+_0x96856c(0x208)+_0x96856c(0x1dc)+_0x96856c(0x1fc)+'d',_0x20da88);}function _0x20835b(){const _0x777681=_0x53937c;if(_0x554240[_0x777681(0x1f6)]!==_0x777681(0x1fd)+'ng')return;_0x1b451d=!![],_0x26765c();}return{'initialize':_0x4d4cb1,'getState':_0x48cf29,'checkForUpdates':_0xe71007,'downloadUpdate':_0xcdbfe2,'quitAndInstall':_0x4bad51,'requestBackgroundCheck':_0x5e0225,'startBackgroundChecks':_0x1c7643,'markQuitObserved':_0x20835b};}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@wujie-shell/core",
3
- "version": "2.0.2",
3
+ "version": "3.0.0",
4
4
  "type": "module",
5
5
  "main": "dist/src/index.mjs",
6
6
  "exports": {
@@ -15,20 +15,26 @@
15
15
  "./runtime": {
16
16
  "wujie-source": "./src/runtime/index.mjs",
17
17
  "default": "./dist/src/runtime/index.mjs"
18
+ },
19
+ "./sessions": {
20
+ "wujie-source": "./src/sessions/session-sqlite-store.mjs",
21
+ "default": "./dist/src/sessions/session-sqlite-store.mjs"
18
22
  }
19
23
  },
20
24
  "bin": {
21
- "wujie-shell": "dist/bin/wujie-shell.mjs"
25
+ "wujie-shell": "bin/wujie-shell.mjs"
22
26
  },
23
27
  "files": [
28
+ "bin",
24
29
  "dist",
25
30
  "README.md"
26
31
  ],
27
32
  "dependencies": {
28
33
  "get-port": "^7.2.0",
34
+ "semver": "^7.8.3",
29
35
  "ws": "^8.20.0",
30
- "@wujie-shell/config": "2.0.2",
31
- "@wujie-shell/logger": "2.0.2"
36
+ "@wujie-shell/config": "3.0.0",
37
+ "@wujie-shell/logger": "3.0.0"
32
38
  },
33
39
  "scripts": {
34
40
  "build": "node ../../scripts/build-packages.mjs --package @wujie-shell/core"