@wujie-shell/core 2.0.2 → 3.0.1

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(_0xcdc69b,_0x1bcee8){const _0x5441e3=_0x27d2,_0x19a4e6=_0xcdc69b();while(!![]){try{const _0x5d03e0=parseInt(_0x5441e3(0x24a))/0x1+parseInt(_0x5441e3(0x25b))/0x2*(parseInt(_0x5441e3(0x254))/0x3)+parseInt(_0x5441e3(0x247))/0x4*(parseInt(_0x5441e3(0x226))/0x5)+parseInt(_0x5441e3(0x1de))/0x6*(-parseInt(_0x5441e3(0x271))/0x7)+parseInt(_0x5441e3(0x231))/0x8*(parseInt(_0x5441e3(0x26d))/0x9)+parseInt(_0x5441e3(0x230))/0xa*(parseInt(_0x5441e3(0x1f0))/0xb)+-parseInt(_0x5441e3(0x1f3))/0xc*(parseInt(_0x5441e3(0x1f9))/0xd);if(_0x5d03e0===_0x1bcee8)break;else _0x19a4e6['push'](_0x19a4e6['shift']());}catch(_0x1bcca6){_0x19a4e6['push'](_0x19a4e6['shift']());}}}(_0x1e2d,0xe349b));function _0x1e2d(){const _0x26ede7=['resolveS','isFile','killKey','call','zipUrl','zip','arrayBuf','andledIn','code','prototyp','trim','49464hdWGnc','skill\x20co','-NonInte',':\x5cs*(.+)','18641eYKwac','isArray','entries','^\x5cs*','1218aqKxTd','keys','LS.md','filter','SKILLS.M','ase','-NoProfi','gatewayS','version','sured\x20wi','ed-skill','igWriteH','ZIP\x20中未找到','toUpperC','overwrit','skillKey','\x20失败(HTTP','\x27\x20-Desti','439549OvZqlo','导入技能\x20ZIP','d\x20或\x20SKIL','12RwjCOF','platform','Dialog','hasOwnPr','stringif','filePath','49402457ghyXan','已取消导入','load-','\x20SKILL.m','writeCon','thout\x20ga','请先关闭技能后再','slice','下载技能\x20ZIP','unzip','nfig\x20upd','apiKey','nfig\x20ent','workspac','markConf','ath\x20\x27','imported','operty','位于自定义\x20sk','内置/扩展技能无','replace','法删除','size','ll.exe','th\x20\x27','find','push','hout\x20gat','是否覆盖','技能不存在或已移','boolean','Skill\x20ke','bundled','env','SKILLS.m','y\x20is\x20req','SKILL.md','match','ill-impo','-bundled','length','nationPa','fer','config','openclaw','35ZKvUnP','tateDir','add','extracte','map','ternally','tart','showOpen','\x22已存在,请确认','skills','90HaGPQc','1960lWGnCr','enabled','pathname','EXDEV','技能目录\x22','\x20添加成功','ated\x20wit','win32','uired','toString','ries\x20rem','isDirect','未找到该技能在磁','skills\x20c','name','__MACOSX','eway\x20res','盘上的目录,可能','ractive','能导入一个','-skill','SKILL.MD','939512pwRspE','disabled','utf8','207832RyToVG','download','error','ory','temp','oved\x20wit','ZIP\x20中包含多','catch','load','readConf','6LimCHI','ills\x20路径,','个\x20skill\x20','start','ZIP\x20Arch','getPath','rchive\x20-','1713620wJkwlJ','status','has','ive','extraDir','powershe','selected'];_0x1e2d=function(){return _0x26ede7;};return _0x1e2d();}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(_0x23b81e){const _0x145648=_0x27d2;let _0x41613d=getTrimmedString(_0x23b81e)[_0x145648(0x20d)](/[<>:"/\\|?*\u0000-\u001f]/g,'-');return _0x41613d=_0x41613d[_0x145648(0x20d)](/-+/g,'-')[_0x145648(0x20d)](/^[-.]+|[-.]+$/g,''),_0x41613d[_0x145648(0x200)](0x0,0x78);}function buildManagedSkillDirectoryName(_0x5e9e4c,_0x321233,_0xe27160){const _0x28e1f7=_0x27d2,_0xbd84dd=sanitizeManagedSkillDirSegment(_0x5e9e4c)||sanitizeManagedSkillDirSegment(_0xe27160)||_0x28e1f7(0x209)+_0x28e1f7(0x245),_0x355aaf=sanitizeManagedSkillDirSegment(_0x321233),_0x632c27=_0x355aaf?_0xbd84dd+'-'+_0x355aaf:_0xbd84dd;return _0x632c27[_0x28e1f7(0x200)](0x0,0xc8)||_0x28e1f7(0x209)+'-skill';}function extractVersionFromZipUrl(_0x48f7ec){const _0x4d1867=_0x27d2;if(!getTrimmedString(_0x48f7ec))return null;try{const _0x21ce2e=basename(new URL(_0x48f7ec)['pathname']),_0x2a6595=_0x21ce2e['replace'](/\.zip$/i,'');return _0x2a6595[_0x4d1867(0x21e)](/(?:^|[-_v])(\d+\.\d+\.\d+(?:[-+][\w.-]+)?)(?:$|[-_])/i)?.[0x1]??null;}catch{return null;}}async function extractZipToDirectory(_0x3fd920,_0x422aea){await new Promise((_0x41402f,_0x37cc1e)=>{const _0x4fcd8e=_0x27d2;let _0x50255f;if(process[_0x4fcd8e(0x1f4)]===_0x4fcd8e(0x238)){const _0x11bec3=_0x3fd920[_0x4fcd8e(0x20d)](/'/g,'\x27\x27'),_0x23f59a=_0x422aea['replace'](/'/g,'\x27\x27');_0x50255f=execFile(_0x4fcd8e(0x260)+_0x4fcd8e(0x210),[_0x4fcd8e(0x1e4)+'le',_0x4fcd8e(0x26f)+_0x4fcd8e(0x243),'-Command','Expand-A'+_0x4fcd8e(0x25a)+'LiteralP'+_0x4fcd8e(0x208)+_0x11bec3+(_0x4fcd8e(0x1ef)+_0x4fcd8e(0x222)+_0x4fcd8e(0x211))+_0x23f59a+'\x27\x20-Force'],_0x78b56b=>_0x78b56b?_0x37cc1e(_0x78b56b):_0x41402f());}else _0x50255f=execFile(_0x4fcd8e(0x202),['-q',_0x3fd920,'-d',_0x422aea],_0x27a258=>_0x27a258?_0x37cc1e(_0x27a258):_0x41402f());_0x50255f['on'](_0x4fcd8e(0x24c),_0x37cc1e);});}async function findSkillManifestDirectories(_0x498455){const _0x5aafbe=[];async function _0x2f4ca5(_0x2688a7){const _0x9e28ac=_0x27d2,_0x51cf97=await readdir(_0x2688a7,{'withFileTypes':!![]}),_0x10eedf=new Set(_0x51cf97[_0x9e28ac(0x22a)](_0x55b2d9=>_0x55b2d9['name'][_0x9e28ac(0x1eb)+_0x9e28ac(0x1e3)]()));if(_0x10eedf[_0x9e28ac(0x25d)](_0x9e28ac(0x246))||_0x10eedf[_0x9e28ac(0x25d)](_0x9e28ac(0x1e2)+'D')){_0x5aafbe[_0x9e28ac(0x213)](_0x2688a7);return;}for(const _0x5838d4 of _0x51cf97){if(!_0x5838d4[_0x9e28ac(0x23c)+_0x9e28ac(0x24d)]()||_0x5838d4['name']===_0x9e28ac(0x240)||_0x5838d4['name']['startsWi'+'th']('.'))continue;await _0x2f4ca5(join(_0x2688a7,_0x5838d4[_0x9e28ac(0x23f)]));}}return await _0x2f4ca5(_0x498455),_0x5aafbe;}async function normalizeImportedSkillManifest(_0x1d92eb){const _0x5411b8=_0x27d2,_0x5db91b=join(_0x1d92eb,_0x5411b8(0x21d)),_0x30330b=await readdir(_0x1d92eb,{'withFileTypes':!![]})[_0x5411b8(0x251)](()=>[]);let _0x171e17=null,_0x48eb93=null;for(const _0x1d999c of _0x30330b){if(!_0x1d999c[_0x5411b8(0x263)]())continue;const _0x3124b1=_0x1d999c[_0x5411b8(0x23f)][_0x5411b8(0x1eb)+_0x5411b8(0x1e3)]();if(_0x3124b1==='SKILL.MD')_0x171e17=_0x1d999c[_0x5411b8(0x23f)];else{if(_0x3124b1===_0x5411b8(0x1e2)+'D')_0x48eb93=_0x1d999c[_0x5411b8(0x23f)];}}if(_0x171e17==='SKILL.md')return;const _0x1ed368=_0x171e17??_0x48eb93;if(!_0x1ed368)return;const _0x3826f4=join(_0x1d92eb,_0x1ed368);if(_0x3826f4!==_0x5db91b)await rename(_0x3826f4,_0x5db91b);}async function moveDirectoryWithOverwrite(_0x4c9a2a,_0x1f84f1){const _0x1d0f1d=_0x27d2;await mkdir(dirname(_0x1f84f1),{'recursive':!![]});try{await rename(_0x4c9a2a,_0x1f84f1);return;}catch(_0xef47ff){if(_0xef47ff?.[_0x1d0f1d(0x26a)]!==_0x1d0f1d(0x234))throw _0xef47ff;}await cp(_0x4c9a2a,_0x1f84f1,{'recursive':!![],'force':!![]}),await rm(_0x4c9a2a,{'recursive':!![],'force':!![]});}async function readManifestText(_0x31234f){const _0x57af32=_0x27d2,_0x53cd6d=[join(_0x31234f,_0x57af32(0x21d)),join(_0x31234f,_0x57af32(0x21b)+'d')]['find'](_0x29c4f4=>existsSync(_0x29c4f4));if(!_0x53cd6d)return'';return await readFile(_0x53cd6d,_0x57af32(0x249))['catch'](()=>'');}function resolveFrontmatterValue(_0x414c7b,_0x2613cb){const _0x52ba73=_0x27d2,_0xd5ce5a=_0x414c7b[_0x52ba73(0x21e)](/^---\s*\r?\n([\s\S]*?)\r?\n---/),_0x27d8c9=_0xd5ce5a?.[0x1]??'',_0x4bbb3a=_0x27d8c9[_0x52ba73(0x21e)](new RegExp(_0x52ba73(0x1dd)+_0x2613cb+(_0x52ba73(0x270)+'$'),'m'))?.[0x1];return getTrimmedString(_0x4bbb3a)[_0x52ba73(0x20d)](/^["']|["']$/g,'')||null;}async function resolveSkillKeyFromManifest(_0x3b9b23){const _0xa5f6f2=_0x27d2,_0xfe8028=await readManifestText(_0x3b9b23);if(!_0xfe8028[_0xa5f6f2(0x26c)]())return null;const _0x18009d=_0xfe8028[_0xa5f6f2(0x21e)](/"skillKey"\s*:\s*"([^"]+)"/);if(_0x18009d?.[0x1])return getTrimmedString(_0x18009d[0x1]);return resolveFrontmatterValue(_0xfe8028,'skillKey')||resolveFrontmatterValue(_0xfe8028,_0xa5f6f2(0x23f));}async function resolveSkillVersionFromManifest(_0x3b16fd){const _0x180374=_0x27d2,_0x780a4c=await readManifestText(_0x3b16fd);if(!_0x780a4c[_0x180374(0x26c)]())return null;const _0x52dd09=_0x780a4c[_0x180374(0x21e)](/"version"\s*:\s*"([^"]+)"/);if(_0x52dd09?.[0x1])return getTrimmedString(_0x52dd09[0x1]);return resolveFrontmatterValue(_0x780a4c,_0x180374(0x1e6));}async function collectSkillDirsUnderRoot(_0x3fff96,_0x21553e,_0x5f954d){const _0x2bdb6f=_0x27d2;if(!existsSync(_0x3fff96))return;for(const _0x39e9ab of await readdir(_0x3fff96,{'withFileTypes':!![]})[_0x2bdb6f(0x251)](()=>[])){if(!_0x39e9ab[_0x2bdb6f(0x23c)+_0x2bdb6f(0x24d)]())continue;const _0x2daa7e=join(_0x3fff96,_0x39e9ab[_0x2bdb6f(0x23f)]),_0x12aab8=await resolveSkillKeyFromManifest(_0x2daa7e);if(_0x12aab8&&_0x21553e[_0x2bdb6f(0x25d)](_0x12aab8))_0x5f954d[_0x2bdb6f(0x228)](_0x2daa7e);}}function _0x27d2(_0x1c8b66,_0x553024){_0x1c8b66=_0x1c8b66-0x1dc;const _0x1e2de8=_0x1e2d();let _0x27d23b=_0x1e2de8[_0x1c8b66];return _0x27d23b;}async function removeSkillConfigEntries(_0x4fe256,_0x5f2dfb){const _0x5c722a=_0x27d2,_0x536f52=new Set(_0x5f2dfb[_0x5c722a(0x22a)](getTrimmedString)[_0x5c722a(0x1e1)](Boolean));if(_0x536f52[_0x5c722a(0x20f)]===0x0)return;const _0xf16c72=await _0x4fe256[_0x5c722a(0x253)+'ig']()['catch'](()=>({})),_0x825358=asRecord(_0xf16c72[_0x5c722a(0x22f)]),_0x529e5e={...asRecord(_0x825358[_0x5c722a(0x1dc)])};let _0x38a7bf=![];for(const _0x12e1eb of _0x536f52){Object[_0x5c722a(0x26b)+'e'][_0x5c722a(0x1f6)+'operty'][_0x5c722a(0x265)](_0x529e5e,_0x12e1eb)&&(delete _0x529e5e[_0x12e1eb],_0x38a7bf=!![]);}if(!_0x38a7bf)return;_0x825358[_0x5c722a(0x1dc)]=_0x529e5e,_0xf16c72[_0x5c722a(0x22f)]=_0x825358,_0x4fe256['markConf'+'igWriteH'+_0x5c722a(0x269)+_0x5c722a(0x22b)]?.(),await _0x4fe256[_0x5c722a(0x1fd)+'fig']?.(_0xf16c72,_0x5c722a(0x26e)+_0x5c722a(0x205)+_0x5c722a(0x23b)+_0x5c722a(0x24f)+_0x5c722a(0x214)+_0x5c722a(0x241)+_0x5c722a(0x22c));}export async function deleteManagedSkill({payload:payload={},gateway:_0x14e401,configController:_0x22c612}){const _0x262b31=_0x27d2,_0x1a06b2=asRecord(payload),_0x232e34=getTrimmedString(_0x1a06b2[_0x262b31(0x1ed)]??_0x1a06b2[_0x262b31(0x23f)]);if(!_0x232e34)throw new Error(_0x262b31(0x218)+_0x262b31(0x21c)+_0x262b31(0x239));const _0x20906a=await _0x14e401[_0x262b31(0x22f)][_0x262b31(0x25c)]()[_0x262b31(0x251)](()=>({'skills':[]})),_0x47969e=Array[_0x262b31(0x272)](asRecord(_0x20906a)['skills'])?asRecord(_0x20906a)[_0x262b31(0x22f)]:[],_0x44cd76=_0x47969e['map'](asRecord)[_0x262b31(0x212)](_0x3d254b=>{const _0x2f407f=_0x262b31;return getTrimmedString(_0x3d254b[_0x2f407f(0x1ed)])===_0x232e34||getTrimmedString(_0x3d254b[_0x2f407f(0x1e5)+_0x2f407f(0x264)])===_0x232e34||getTrimmedString(_0x3d254b[_0x2f407f(0x23f)])===_0x232e34;});if(!_0x44cd76)throw new Error(_0x262b31(0x216)+'除');if(_0x44cd76['always'])throw new Error('该技能不允许删除');if(_0x44cd76[_0x262b31(0x219)]||_0x44cd76['source']===_0x262b31(0x225)+_0x262b31(0x220)||_0x44cd76['source']===_0x262b31(0x225)+'-extra')throw new Error(_0x262b31(0x20c)+_0x262b31(0x20e));if(!_0x44cd76[_0x262b31(0x248)])throw new Error(_0x262b31(0x1ff)+'删除');const _0x575770=getTrimmedString(_0x44cd76[_0x262b31(0x1e5)+_0x262b31(0x264)])||_0x232e34,_0x35cfc0=new Set([_0x232e34,_0x575770,getTrimmedString(_0x44cd76[_0x262b31(0x23f)])][_0x262b31(0x1e1)](Boolean)),_0x2a6291=new Set([join(_0x22c612[_0x262b31(0x262)+_0x262b31(0x227)](),'skills'),join(_0x22c612[_0x262b31(0x262)+'tateDir'](),_0x262b31(0x206)+'e',_0x262b31(0x22f))]),_0x1d5e34=new Set();for(const _0x1d6a43 of _0x2a6291)await collectSkillDirsUnderRoot(_0x1d6a43,_0x35cfc0,_0x1d5e34);if(_0x1d5e34[_0x262b31(0x20f)]===0x0)throw new Error(_0x262b31(0x23d)+_0x262b31(0x242)+_0x262b31(0x20b)+_0x262b31(0x255)+'请手动删除');for(const _0x4b78dc of _0x1d5e34)await rm(_0x4b78dc,{'recursive':!![],'force':!![]});return await removeSkillConfigEntries(_0x22c612,[..._0x35cfc0]),{'ok':!![],'skillKey':_0x232e34};}export async function updateManagedSkillConfig({payload:payload={},configController:_0x1f4b6f}){const _0x17dbde=_0x27d2,_0x2a9d98=asRecord(payload),_0x578bab=getTrimmedString(_0x2a9d98[_0x17dbde(0x1ed)]??_0x2a9d98[_0x17dbde(0x23f)]);if(!_0x578bab)throw new Error(_0x17dbde(0x218)+_0x17dbde(0x21c)+'uired');const _0x454fcd=await _0x1f4b6f[_0x17dbde(0x253)+'ig']()['catch'](()=>({})),_0x40d1ed=asRecord(_0x454fcd['skills']),_0x4bcef5={...asRecord(_0x40d1ed[_0x17dbde(0x1dc)])},_0x22daae=asRecord(_0x4bcef5[_0x578bab]),_0x12c043={..._0x22daae};typeof _0x2a9d98[_0x17dbde(0x232)]===_0x17dbde(0x217)&&(_0x12c043[_0x17dbde(0x232)]=_0x2a9d98[_0x17dbde(0x232)]);const _0x2962e1={...asRecord(_0x2a9d98[_0x17dbde(0x21a)])},_0xad3be1=getTrimmedString(_0x2a9d98[_0x17dbde(0x204)]);if(_0xad3be1)_0x2962e1[_0x17dbde(0x204)]=_0xad3be1;Object[_0x17dbde(0x1df)](_0x2962e1)[_0x17dbde(0x221)]>0x0&&(_0x12c043[_0x17dbde(0x21a)]={...asRecord(_0x22daae['env']),..._0x2962e1});const _0x602c7d=asRecord(_0x2a9d98['config']);return Object['keys'](_0x602c7d)['length']>0x0&&(_0x12c043[_0x17dbde(0x224)]={...asRecord(_0x22daae[_0x17dbde(0x224)]),..._0x602c7d}),_0x4bcef5[_0x578bab]=_0x12c043,_0x40d1ed[_0x17dbde(0x1dc)]=_0x4bcef5,_0x454fcd[_0x17dbde(0x22f)]=_0x40d1ed,_0x1f4b6f[_0x17dbde(0x207)+_0x17dbde(0x1e9)+_0x17dbde(0x269)+'ternally']?.(),await _0x1f4b6f[_0x17dbde(0x1fd)+'fig']?.(_0x454fcd,_0x17dbde(0x26e)+_0x17dbde(0x203)+_0x17dbde(0x237)+_0x17dbde(0x214)+_0x17dbde(0x241)+_0x17dbde(0x22c)),{'ok':!![],'skillKey':_0x578bab};}async function ensureManagedSkillsConfig(_0x27121f,_0x5dc4df=[]){const _0x294aeb=_0x27d2,_0x1ae670=await _0x27121f[_0x294aeb(0x253)+'ig']()[_0x294aeb(0x251)](()=>({})),_0x1f882d=asRecord(_0x1ae670[_0x294aeb(0x22f)]),_0x2b1111=asRecord(_0x1f882d[_0x294aeb(0x252)]),_0x4bfaa2=Array[_0x294aeb(0x272)](_0x2b1111[_0x294aeb(0x25f)+'s'])?_0x2b1111['extraDir'+'s']:[],_0x3bf5c7=join(_0x27121f[_0x294aeb(0x262)+'tateDir'](),_0x294aeb(0x22f)),_0x2a6412=dedupeStrings([..._0x4bfaa2,_0x3bf5c7]),_0x3b68fb={...asRecord(_0x1f882d[_0x294aeb(0x1dc)])};let _0x1190b4=JSON['stringif'+'y'](_0x4bfaa2)!==JSON[_0x294aeb(0x1f7)+'y'](_0x2a6412);for(const _0x56c393 of _0x5dc4df[_0x294aeb(0x22a)](getTrimmedString)[_0x294aeb(0x1e1)](Boolean)){if(Object['prototyp'+'e'][_0x294aeb(0x1f6)+_0x294aeb(0x20a)][_0x294aeb(0x265)](_0x3b68fb,_0x56c393))continue;_0x3b68fb[_0x56c393]={'enabled':!![]},_0x1190b4=!![];}if(!_0x1190b4)return;_0x2b1111[_0x294aeb(0x25f)+'s']=_0x2a6412,_0x1f882d['load']=_0x2b1111,_0x1f882d[_0x294aeb(0x1dc)]=_0x3b68fb,_0x1ae670['skills']=_0x1f882d,_0x27121f[_0x294aeb(0x207)+_0x294aeb(0x1e9)+'andledIn'+'ternally']?.(),await _0x27121f['writeCon'+'fig']?.(_0x1ae670,'managed\x20'+_0x294aeb(0x23e)+'onfig\x20en'+_0x294aeb(0x1e7)+_0x294aeb(0x1fe)+'teway\x20re'+_0x294aeb(0x257));}export async function syncManagedSkillsToConfig(_0x4ed4cd){const _0x38f46a=_0x27d2,_0x5e7d3e=join(_0x4ed4cd[_0x38f46a(0x262)+_0x38f46a(0x227)](),_0x38f46a(0x22f)),_0x1fe9f1=[];for(const _0x591b64 of await readdir(_0x5e7d3e,{'withFileTypes':!![]})[_0x38f46a(0x251)](()=>[])){if(!_0x591b64[_0x38f46a(0x23c)+_0x38f46a(0x24d)]())continue;const _0x21e283=await resolveSkillKeyFromManifest(join(_0x5e7d3e,_0x591b64[_0x38f46a(0x23f)]));if(_0x21e283)_0x1fe9f1[_0x38f46a(0x213)](_0x21e283);}return await ensureManagedSkillsConfig(_0x4ed4cd,_0x1fe9f1),{'skillKeys':_0x1fe9f1};}async function resolveZipPath({payload:_0x4e78e4,app:_0x5d68a,dialog:_0x5c2e35,dialogWindow:_0x2f9700}){const _0xf8fe62=_0x27d2,_0x80aac5=getTrimmedString(_0x4e78e4[_0xf8fe62(0x266)]);let _0x30f4ec=getTrimmedString(_0x4e78e4[_0xf8fe62(0x261)+'ZipPath']),_0x25a90a=null;if(!_0x30f4ec&&_0x80aac5){const _0x56f427=new URL(_0x80aac5);_0x25a90a=await mkdtemp(join(_0x5d68a[_0xf8fe62(0x259)](_0xf8fe62(0x24e)),'wujie-sk'+'ill-down'+_0xf8fe62(0x1fb))),_0x30f4ec=join(_0x25a90a,basename(_0x56f427[_0xf8fe62(0x233)])||_0xf8fe62(0x24b)+_0xf8fe62(0x1e8)+'.zip');const _0x446e4d=await fetch(_0x56f427[_0xf8fe62(0x23a)]());if(!_0x446e4d['ok'])throw new Error(_0xf8fe62(0x201)+_0xf8fe62(0x1ee)+'\x20'+_0x446e4d['status']+')');await writeFile(_0x30f4ec,Buffer['from'](await _0x446e4d[_0xf8fe62(0x268)+_0xf8fe62(0x223)]()));}if(!_0x30f4ec){const _0x25f0aa={'title':_0xf8fe62(0x1f1),'properties':['openFile'],'filters':[{'name':_0xf8fe62(0x258)+_0xf8fe62(0x25e),'extensions':[_0xf8fe62(0x267)]}]},_0x2b5d1e=_0x2f9700?await _0x5c2e35[_0xf8fe62(0x22d)+'Dialog'](_0x2f9700,_0x25f0aa):await _0x5c2e35[_0xf8fe62(0x22d)+_0xf8fe62(0x1f5)](_0x25f0aa);if(_0x2b5d1e['canceled']||_0x2b5d1e[_0xf8fe62(0x1f8)+'s'][_0xf8fe62(0x221)]===0x0)return{'cancelled':!![],'zipPath':null,'downloadedZipDir':_0x25a90a};_0x30f4ec=_0x2b5d1e[_0xf8fe62(0x1f8)+'s'][0x0];}return{'cancelled':![],'zipPath':_0x30f4ec,'downloadedZipDir':_0x25a90a};}export async function importSkillZip({payload:payload={},app:_0x49ff71,dialog:_0x3e9411,dialogWindow:_0x5d4e69,configController:_0x11e4b5}){const _0x531034=_0x27d2,_0x4e1506=asRecord(payload),_0x4a0a30=getTrimmedString(_0x4e1506['zipUrl']),{cancelled:_0x3a4a83,zipPath:_0x1f74fa,downloadedZipDir:_0x23523c}=await resolveZipPath({'payload':_0x4e1506,'app':_0x49ff71,'dialog':_0x3e9411,'dialogWindow':_0x5d4e69});if(_0x3a4a83)return{'cancelled':!![],'imported':![],'overwritten':![],'skillDirName':null,'selectedZipPath':null,'zipUrl':_0x4a0a30||null,'message':_0x531034(0x1fa)};const _0x2ce565=await mkdtemp(join(_0x49ff71[_0x531034(0x259)](_0x531034(0x24e)),'wujie-sk'+_0x531034(0x21f)+'rt-')),_0x1f064a=join(_0x2ce565,_0x531034(0x229)+'d');try{await mkdir(_0x1f064a,{'recursive':!![]}),await extractZipToDirectory(_0x1f74fa,_0x1f064a);const _0x26c9c8=await findSkillManifestDirectories(_0x1f064a);if(_0x26c9c8['length']===0x0)throw new Error(_0x531034(0x1ea)+_0x531034(0x1fc)+_0x531034(0x1f2)+_0x531034(0x1e0));if(_0x26c9c8[_0x531034(0x221)]>0x1)throw new Error(_0x531034(0x250)+_0x531034(0x256)+'目录,当前一次只'+_0x531034(0x244));const _0x384fa3=_0x26c9c8[0x0];await normalizeImportedSkillManifest(_0x384fa3);const _0x31b21f=basename(_0x384fa3),_0x5d33e8=parse(_0x1f74fa)['name'][_0x531034(0x26c)]()||_0x531034(0x209)+_0x531034(0x245),_0x9e659f=_0x31b21f===_0x531034(0x229)+'d'?_0x5d33e8:_0x31b21f,_0x2340dc=await resolveSkillKeyFromManifest(_0x384fa3)??_0x9e659f,_0x3e5724=await resolveSkillVersionFromManifest(_0x384fa3)??(getTrimmedString(_0x4e1506['version'])||extractVersionFromZipUrl(_0x4a0a30)),_0x5781f3=buildManagedSkillDirectoryName(_0x2340dc,_0x3e5724,_0x9e659f),_0x4f8197=join(_0x11e4b5[_0x531034(0x262)+_0x531034(0x227)](),_0x531034(0x22f)),_0x106e9c=join(_0x4f8197,_0x5781f3);if(existsSync(_0x106e9c)){if(_0x4e1506[_0x531034(0x1ec)+'e']!==!![])return{'cancelled':![],'imported':![],'overwritten':![],'needConfirmOverwrite':!![],'skillDirName':_0x5781f3,'overwriteTargetPath':_0x106e9c,'selectedZipPath':_0x1f74fa,'zipUrl':_0x4a0a30||null,'message':_0x531034(0x235)+_0x5781f3+(_0x531034(0x22e)+_0x531034(0x215))};await rm(_0x106e9c,{'recursive':!![],'force':!![]});}let _0x5d5c2e=_0x384fa3;return _0x31b21f===_0x531034(0x229)+'d'&&(_0x5d5c2e=join(_0x2ce565,_0x5781f3),await rename(_0x384fa3,_0x5d5c2e)),await moveDirectoryWithOverwrite(_0x5d5c2e,_0x106e9c),await ensureManagedSkillsConfig(_0x11e4b5,[_0x2340dc]),{'cancelled':![],'imported':!![],'overwritten':_0x4e1506[_0x531034(0x1ec)+'e']===!![],'skillKey':_0x2340dc,'manifestKey':_0x2340dc,'skillDirName':_0x5781f3,'targetPath':_0x106e9c,'selectedZipPath':_0x1f74fa,'zipUrl':_0x4a0a30||null,'message':_0x5781f3+_0x531034(0x236)};}finally{await rm(_0x2ce565,{'recursive':!![],'force':!![]});if(_0x23523c)await rm(_0x23523c,{'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
+ function _0x5ed5(_0x40b5c1,_0x22eec5){_0x40b5c1=_0x40b5c1-0x1b2;const _0x373f39=_0x373f();let _0x5ed5db=_0x373f39[_0x40b5c1];return _0x5ed5db;}const _0xf40333=_0x5ed5;(function(_0x1b65ff,_0x3f50a7){const _0x590333=_0x5ed5,_0x197cb6=_0x1b65ff();while(!![]){try{const _0x4f3a32=-parseInt(_0x590333(0x1eb))/0x1+-parseInt(_0x590333(0x1cb))/0x2+-parseInt(_0x590333(0x1dc))/0x3+-parseInt(_0x590333(0x1ce))/0x4*(parseInt(_0x590333(0x1de))/0x5)+parseInt(_0x590333(0x1e2))/0x6+parseInt(_0x590333(0x1c9))/0x7*(-parseInt(_0x590333(0x1b9))/0x8)+parseInt(_0x590333(0x1d8))/0x9;if(_0x4f3a32===_0x3f50a7)break;else _0x197cb6['push'](_0x197cb6['shift']());}catch(_0x127b10){_0x197cb6['push'](_0x197cb6['shift']());}}}(_0x373f,0xb3266));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='aipc-mar'+_0xf40333(0x1d5);function _0x373f(){const _0x3e5237=['map','15NyYMeq','descript','size','skills','1046412iDHgHa','version','utf8','name','gatewayS','catch','Key','isArray','^\x5cs*','1004137ekxxiQ','tateDir','targetPa','market','SKILL.md','killKey','match',':\x5cs*(.+)','3032vTPZVC','sort','kills.js','接口返回的\x20co','SKILLS.m','parse','filter','trim','fromEntr','localeCo','imported','mpare','ory','keys','length','resolveS','18613biTCoV','ies','1085284CrSBFO','entries','技能商店安装需要','1676348FnFxmL','market-s','skillKey','skillDir','code','接口返回的\x20na','isDirect','ket','ion','source','50348115bfvpbN','has','logo_url','logoUrl','3669114IpdVDq'];_0x373f=function(){return _0x3e5237;};return _0x373f();}async function readMarketSkillRegistry(_0x228cc7){const _0x3336f4=_0xf40333;try{const _0x1852cf=JSON[_0x3336f4(0x1be)](await readFile(_0x228cc7,_0x3336f4(0x1e4)));if(!_0x1852cf||typeof _0x1852cf!=='object'||Array[_0x3336f4(0x1e9)](_0x1852cf))return{};return _0x1852cf;}catch{return{};}}export async function readSkillMarketRegistry(_0x52d261){const _0x43a5d9=_0xf40333;return await readMarketSkillRegistry(join(_0x52d261,'market-s'+_0x43a5d9(0x1bb)+'on'));}async function upsertMarketSkillRegistryEntry(_0x12a6be,_0x241f28,_0x239ce1,_0x390613,_0x35240e={}){const _0x21f1b7=_0xf40333,_0x38e981=getTrimmedString(_0x241f28),_0x22a76a=getTrimmedString(_0x239ce1),_0x5928fb=getTrimmedString(_0x390613);if(!_0x38e981||!_0x22a76a||!_0x5928fb)return;const _0x561276=await readMarketSkillRegistry(_0x12a6be);_0x561276[_0x38e981]={'version':_0x5928fb,'code':_0x22a76a,...getTrimmedString(_0x35240e[_0x21f1b7(0x1e5)])?{'name':getTrimmedString(_0x35240e[_0x21f1b7(0x1e5)])}:{},...getTrimmedString(_0x35240e[_0x21f1b7(0x1db)])?{'logo_url':getTrimmedString(_0x35240e['logoUrl'])}:{},...getTrimmedString(_0x35240e['descript'+_0x21f1b7(0x1d6)])?{'description':getTrimmedString(_0x35240e['descript'+_0x21f1b7(0x1d6)])}:{}};if(_0x561276[_0x22a76a]&&_0x22a76a!==_0x38e981)delete _0x561276[_0x22a76a];for(const [_0x261f15,_0x1c7caa]of Object[_0x21f1b7(0x1cc)](_0x561276)){if(_0x261f15!==_0x38e981&&asRecord(_0x1c7caa)[_0x21f1b7(0x1d2)]===_0x22a76a)delete _0x561276[_0x261f15];}const _0x5ac953=Object['fromEntr'+_0x21f1b7(0x1ca)](Object[_0x21f1b7(0x1cc)](_0x561276)[_0x21f1b7(0x1ba)](([_0x56cdbb],[_0x2a03b7])=>_0x56cdbb[_0x21f1b7(0x1c2)+_0x21f1b7(0x1c4)](_0x2a03b7)));await writeJson(_0x12a6be,_0x5ac953);}async function removeMarketSkillRegistryKeys(_0x4d6960,_0x287c64){const _0x24c20d=_0xf40333,_0x17c249=new Set(_0x287c64[_0x24c20d(0x1dd)](getTrimmedString)[_0x24c20d(0x1bf)](Boolean));if(_0x17c249[_0x24c20d(0x1e0)]===0x0)return;const _0x115d8c=await readMarketSkillRegistry(_0x4d6960);let _0x1f72d7=![];for(const _0x3d02fc of Object[_0x24c20d(0x1c6)](_0x115d8c)){const _0x224985=asRecord(_0x115d8c[_0x3d02fc]);(_0x17c249[_0x24c20d(0x1d9)](_0x3d02fc)||_0x17c249[_0x24c20d(0x1d9)](getTrimmedString(_0x224985[_0x24c20d(0x1d2)])))&&(delete _0x115d8c[_0x3d02fc],_0x1f72d7=!![]);}if(_0x1f72d7){const _0x228709=Object[_0x24c20d(0x1c1)+_0x24c20d(0x1ca)](Object['entries'](_0x115d8c)['sort'](([_0x2b7d26],[_0xc70296])=>_0x2b7d26['localeCo'+_0x24c20d(0x1c4)](_0xc70296)));await writeJson(_0x4d6960,_0x228709);}}async function readSkillManifestText(_0x1199c2){const _0x3cae6e=_0xf40333,_0x276405=[join(_0x1199c2,_0x3cae6e(0x1b5)),join(_0x1199c2,_0x3cae6e(0x1bd)+'d')];for(const _0x1b2240 of _0x276405){const _0x282223=await readFile(_0x1b2240,_0x3cae6e(0x1e4))[_0x3cae6e(0x1e7)](()=>'');if(_0x282223[_0x3cae6e(0x1c0)]())return _0x282223;}return'';}function resolveFrontmatterValue(_0x41de95,_0x38bf27){const _0x52834d=_0xf40333,_0x3b9b9e=_0x41de95[_0x52834d(0x1b7)](/^---\s*\r?\n([\s\S]*?)\r?\n---/),_0x710dd7=_0x3b9b9e?.[0x1]??'',_0x15d211=_0x710dd7[_0x52834d(0x1b7)](new RegExp(_0x52834d(0x1ea)+_0x38bf27+(_0x52834d(0x1b8)+'$'),'m'))?.[0x1];return getTrimmedString(_0x15d211)['replace'](/^["']|["']$/g,'')||null;}async function resolveSkillKeyFromManifest(_0x1746fd){const _0x27ef0f=_0xf40333,_0x249b6f=await readSkillManifestText(_0x1746fd);if(!_0x249b6f[_0x27ef0f(0x1c0)]())return null;const _0x64f281=_0x249b6f[_0x27ef0f(0x1b7)](/"skillKey"\s*:\s*"([^"]+)"/);if(_0x64f281?.[0x1])return getTrimmedString(_0x64f281[0x1]);return resolveFrontmatterValue(_0x249b6f,'skillKey')||resolveFrontmatterValue(_0x249b6f,'name');}async function removeOtherMarketSkillVersions(_0x27e5cb,_0x4bde58,_0x3d91a3){const _0x482d03=_0xf40333,_0x2a348c=getTrimmedString(_0x3d91a3);if(!_0x2a348c)return;for(const _0x1e37fb of await readdir(_0x27e5cb,{'withFileTypes':!![]})['catch'](()=>[])){if(!_0x1e37fb[_0x482d03(0x1d4)+_0x482d03(0x1c5)]())continue;const _0x4575f9=join(_0x27e5cb,_0x1e37fb[_0x482d03(0x1e5)]);if(_0x4575f9===_0x4bde58)continue;const _0x13d453=await resolveSkillKeyFromManifest(_0x4575f9);_0x13d453&&_0x13d453[_0x482d03(0x1c0)]()===_0x2a348c&&await rm(_0x4575f9,{'recursive':!![],'force':!![]});}}export async function importMarketSkillZip({payload:payload={},importSkillZip:_0x52588b,configController:_0x353929}={}){const _0x57056f=_0xf40333,_0x21e1e9=asRecord(payload);if(_0x21e1e9[_0x57056f(0x1d7)]!==_0x57056f(0x1b4))return _0x52588b({'payload':payload});const _0xb636af=getTrimmedString(_0x21e1e9[_0x57056f(0x1d2)]),_0x41324e=getTrimmedString(_0x21e1e9[_0x57056f(0x1e3)]),_0x249ee5=getTrimmedString(_0x21e1e9[_0x57056f(0x1e5)]);if(!_0xb636af)throw new Error(_0x57056f(0x1cd)+_0x57056f(0x1bc)+'de');if(!_0x41324e)throw new Error(_0x57056f(0x1cd)+'接口返回的\x20ve'+'rsion');if(!_0x249ee5)throw new Error('技能商店安装需要'+_0x57056f(0x1d3)+'me');const _0x4c0ec9=await _0x52588b({'payload':{..._0x21e1e9,'version':_0x41324e}});if(!_0x4c0ec9?.[_0x57056f(0x1c3)])return _0x4c0ec9;const _0x1f6bca=getTrimmedString(_0x4c0ec9[_0x57056f(0x1d0)])||getTrimmedString(_0x4c0ec9['manifest'+_0x57056f(0x1e8)])||getTrimmedString(_0x4c0ec9[_0x57056f(0x1d1)+'Name']);return await removeOtherMarketSkillVersions(join(_0x353929[_0x57056f(0x1c8)+_0x57056f(0x1b2)](),_0x57056f(0x1e1)),_0x4c0ec9[_0x57056f(0x1b3)+'th'],_0x1f6bca),await upsertMarketSkillRegistryEntry(join(_0x353929['resolveS'+'tateDir'](),_0x57056f(0x1cf)+_0x57056f(0x1bb)+'on'),_0x1f6bca,_0xb636af,_0x41324e,{'name':_0x249ee5,'logoUrl':getTrimmedString(_0x21e1e9[_0x57056f(0x1db)]),'description':getTrimmedString(_0x21e1e9[_0x57056f(0x1df)+_0x57056f(0x1d6)])}),_0x4c0ec9;}export async function deleteMarketSkillRegistryEntry({payload:payload={},deleteManagedSkill:_0x312725,configController:_0x4bd06f}={}){const _0x26a643=_0xf40333,_0xf3348f=await _0x312725({'payload':payload}),_0xae6b06=asRecord(payload),_0x299a26=getTrimmedString(_0xf3348f?.['skillKey']??_0xae6b06[_0x26a643(0x1d0)]??_0xae6b06[_0x26a643(0x1e5)]),_0x1ff694=[_0x299a26,getTrimmedString(_0xae6b06[_0x26a643(0x1e6)+_0x26a643(0x1b6)]),getTrimmedString(_0xae6b06['name'])];return await removeMarketSkillRegistryKeys(join(_0x4bd06f[_0x26a643(0x1c8)+_0x26a643(0x1b2)](),_0x26a643(0x1cf)+_0x26a643(0x1bb)+'on'),_0x1ff694),_0xf3348f;}export function mapMarketRegisteredSkills(_0x4d4eb8,_0x25eeb3){const _0x474ca8=_0xf40333,_0x1ab372=Array[_0x474ca8(0x1e9)](asRecord(_0x4d4eb8)['skills'])?asRecord(_0x4d4eb8)[_0x474ca8(0x1e1)]:[];if(_0x1ab372[_0x474ca8(0x1c7)]===0x0||Object[_0x474ca8(0x1c6)](_0x25eeb3)['length']===0x0)return _0x4d4eb8;const _0x9784e6=_0x1ab372[_0x474ca8(0x1dd)](_0xee42fc=>{const _0x208d8c=_0x474ca8,_0x31f60c=asRecord(_0xee42fc),_0x2f56b8=getTrimmedString(_0x31f60c['skillKey'])||getTrimmedString(_0x31f60c[_0x208d8c(0x1e5)]);let _0x2005a5=_0x2f56b8,_0x1135ea=asRecord(_0x25eeb3[_0x2f56b8]);if(!Object[_0x208d8c(0x1c6)](_0x1135ea)[_0x208d8c(0x1c7)])for(const [_0x1bf489,_0x1f5585]of Object['entries'](_0x25eeb3)){const _0x452284=asRecord(_0x1f5585);if(getTrimmedString(_0x452284[_0x208d8c(0x1d2)])===_0x2f56b8){_0x2005a5=_0x1bf489,_0x1135ea=_0x452284;break;}}if(!Object[_0x208d8c(0x1c6)](_0x1135ea)[_0x208d8c(0x1c7)])return _0xee42fc;const _0x121fba=getTrimmedString(_0x1135ea['code']),_0x634d9c=getTrimmedString(_0x1135ea[_0x208d8c(0x1e5)]),_0x412f8d=getTrimmedString(_0x1135ea[_0x208d8c(0x1df)+_0x208d8c(0x1d6)]),_0x53e8f3=getTrimmedString(_0x1135ea[_0x208d8c(0x1da)]),_0x58e3ee=getTrimmedString(_0x1135ea['version']);return{..._0x31f60c,'source':SKILL_SOURCE_MARKET,'skillKey':_0x121fba||_0x2f56b8,'gatewaySkillKey':_0x121fba?_0x2005a5:null,'marketInstalledVersion':_0x58e3ee||null,..._0x634d9c?{'name':_0x634d9c}:{},..._0x412f8d?{'description':_0x412f8d}:{},..._0x53e8f3?{'logoUrl':_0x53e8f3}:{}};});return{...asRecord(_0x4d4eb8),'skills':_0x9784e6};}export function createMarketSkillRuntime({configController:_0x1275a0}){return{'mapSkillsStatus':async _0x598616=>{const _0x87b863=_0x5ed5,_0x5ca7cc=await readSkillMarketRegistry(_0x1275a0['resolveS'+_0x87b863(0x1b2)]())[_0x87b863(0x1e7)](()=>({}));return mapMarketRegisteredSkills(_0x598616,_0x5ca7cc);}};}
@@ -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(_0x1bb910,_0xf9ac2d){const _0x79b025=_0x2710,_0x174071=_0x1bb910();while(!![]){try{const _0x44d53f=parseInt(_0x79b025(0xb1))/0x1+-parseInt(_0x79b025(0xcd))/0x2*(parseInt(_0x79b025(0xe2))/0x3)+-parseInt(_0x79b025(0xac))/0x4+-parseInt(_0x79b025(0xd4))/0x5+parseInt(_0x79b025(0xcb))/0x6+parseInt(_0x79b025(0xc3))/0x7+parseInt(_0x79b025(0xb9))/0x8*(parseInt(_0x79b025(0xa7))/0x9);if(_0x44d53f===_0xf9ac2d)break;else _0x174071['push'](_0x174071['shift']());}catch(_0x55e78e){_0x174071['push'](_0x174071['shift']());}}}(_0x1069,0x56b04));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';function _0x1069(){const _0x19b270=['No\x20suppo','ase','68100yGYmnm','ebrew/bi','/opt/hom','clear','--login','kill','data','child','bash','path','object','split','truecolo','n/zsh','3uxsbSg','pwsh','delete','platform','ll\x20found','.cmd','al/bin/z','get','718623vZcRhV','F_OK','al/bin/b','sessionI','write','1753312YMsYUE','.bat','\x20session','env','cmd','415960XDAzCW','n/bash','toLowerC','error','keys','pipe','toString','stdin','8avjpLK','string','push','includes','trim','darwin','cwd','set','/usr/loc','ash','4217325ETHxaM','values','win32','/bin/zsh','.exe','Terminal','rted\x20she','6color','617844TSdijg','find','788464hFwYQE','powershe','\x20not\x20fou','rted\x20Win','dows\x20she'];_0x1069=function(){return _0x19b270;};return _0x1069();}const FILE_EXTENSION_REGEX=/\.[a-z0-9]+$/i;function _0x2710(_0x31a45f,_0x158de9){_0x31a45f=_0x31a45f-0xa6;const _0x10693a=_0x1069();let _0x2710ac=_0x10693a[_0x31a45f];return _0x2710ac;}function resolvePathEntries(_0xb7a361){const _0x2232fc=_0x2710,_0x50363c=Object[_0x2232fc(0xb5)](_0xb7a361)[_0x2232fc(0xcc)](_0x1075d5=>_0x1075d5[_0x2232fc(0xb3)+_0x2232fc(0xd3)]()===_0x2232fc(0xdd))??'PATH';return String(_0xb7a361[_0x50363c]||'')[_0x2232fc(0xdf)](delimiter)['filter'](Boolean);}function canExecute(_0x5a3ccd){const _0x436bc8=_0x2710;try{return accessSync(_0x5a3ccd,process['platform']==='win32'?constants[_0x436bc8(0xa8)]:constants['X_OK']),!![];}catch{return![];}}function resolveExecutableOnPath(_0x53a07b,_0x1fc45c){const _0x12c276=_0x2710,_0x544f7c=String(_0x53a07b||'')['trim']();if(!_0x544f7c)return null;if(_0x544f7c[_0x12c276(0xbc)]('/')||_0x544f7c[_0x12c276(0xbc)]('\x5c'))return existsSync(_0x544f7c)?_0x544f7c:null;const _0x5495cb=[_0x544f7c];process['platform']===_0x12c276(0xc5)&&!FILE_EXTENSION_REGEX['test'](_0x544f7c)&&_0x5495cb[_0x12c276(0xbb)](_0x544f7c+_0x12c276(0xc7),_0x544f7c+_0x12c276(0xe7),_0x544f7c+_0x12c276(0xad));for(const _0x394c21 of resolvePathEntries(_0x1fc45c)){for(const _0x114773 of _0x5495cb){const _0x168ee0=join(_0x394c21,_0x114773);if(canExecute(_0x168ee0))return _0x168ee0;}}return null;}function resolveShellLaunchConfig(_0x5844eb){const _0x2b879b=_0x2710;if(process[_0x2b879b(0xe5)]===_0x2b879b(0xc5)){const _0x291c3d=resolveExecutableOnPath(_0x2b879b(0xe3),_0x5844eb)??resolveExecutableOnPath(_0x2b879b(0xce)+'ll',_0x5844eb);if(_0x291c3d)return{'command':_0x291c3d,'args':['-NoLogo']};const _0x2cffb7=resolveExecutableOnPath(_0x2b879b(0xb0),_0x5844eb);if(_0x2cffb7)return{'command':_0x2cffb7,'args':['/Q']};throw new Error(_0x2b879b(0xd2)+_0x2b879b(0xd0)+_0x2b879b(0xd1)+_0x2b879b(0xe6));}if(process[_0x2b879b(0xe5)]===_0x2b879b(0xbe)){const _0x31afa0=[_0x2b879b(0xc6),_0x2b879b(0xc1)+_0x2b879b(0xe8)+'sh','/opt/hom'+_0x2b879b(0xd5)+_0x2b879b(0xe1)][_0x2b879b(0xcc)](canExecute);if(_0x31afa0)return{'command':_0x31afa0,'args':['-i']};const _0x377e08=['/bin/bas'+'h',_0x2b879b(0xc1)+_0x2b879b(0xa9)+_0x2b879b(0xc2),_0x2b879b(0xd6)+_0x2b879b(0xd5)+_0x2b879b(0xb2)][_0x2b879b(0xcc)](canExecute);if(_0x377e08)return{'command':_0x377e08,'args':[_0x2b879b(0xd8),'-i']};}const _0x400c6b=resolveExecutableOnPath(process.env.SHELL||'',_0x5844eb)??resolveExecutableOnPath(_0x2b879b(0xdc),_0x5844eb)??resolveExecutableOnPath('sh',_0x5844eb);if(!_0x400c6b)throw new Error(_0x2b879b(0xd2)+_0x2b879b(0xc9)+_0x2b879b(0xe6));return{'command':_0x400c6b,'args':['-l','-i']};}export function createTerminalManager({cwd:_0x5989ba,emitData:_0x1a5499,emitExit:_0xa3e902}){const _0x51d64e=new Map();function _0x113628(_0x29e1d5){const _0x30aa44=_0x2710,_0x35c706=_0x51d64e[_0x30aa44(0xa6)](_0x29e1d5);if(!_0x35c706)throw new Error(_0x30aa44(0xc8)+_0x30aa44(0xae)+_0x30aa44(0xcf)+'nd');return _0x35c706;}async function _0x5527d2(_0x165687={}){const _0x1b47f1=_0x2710,_0x477c4c={...process.env,'TERM':'xterm-25'+_0x1b47f1(0xca),'COLORTERM':_0x1b47f1(0xe0)+'r',..._0x165687[_0x1b47f1(0xaf)]&&typeof _0x165687['env']===_0x1b47f1(0xde)?_0x165687[_0x1b47f1(0xaf)]:{}},_0x215db8=typeof _0x165687[_0x1b47f1(0xbf)]===_0x1b47f1(0xba)&&_0x165687[_0x1b47f1(0xbf)][_0x1b47f1(0xbd)]()?_0x165687[_0x1b47f1(0xbf)]:'',_0x53f837=_0x215db8||_0x5989ba;await mkdir(_0x53f837,{'recursive':!![]});const {command:_0x33c6f7,args:_0xe2d9c5}=resolveShellLaunchConfig(_0x477c4c),_0x4246c2=randomUUID(),_0x20172f=spawn(_0x33c6f7,_0xe2d9c5,{'cwd':_0x53f837,'env':_0x477c4c,'stdio':_0x1b47f1(0xb6)});return _0x51d64e[_0x1b47f1(0xc0)](_0x4246c2,{'sessionId':_0x4246c2,'child':_0x20172f}),_0x20172f['stdout']['on'](_0x1b47f1(0xda),_0x533214=>_0x1a5499({'sessionId':_0x4246c2,'data':_0x533214[_0x1b47f1(0xb7)]()})),_0x20172f['stderr']['on']('data',_0x8d1414=>_0x1a5499({'sessionId':_0x4246c2,'data':_0x8d1414[_0x1b47f1(0xb7)]()})),_0x20172f['on']('close',(_0x24ac7d,_0x181a5c)=>{const _0x5a5e04=_0x1b47f1;_0x51d64e[_0x5a5e04(0xe4)](_0x4246c2),_0xa3e902({'sessionId':_0x4246c2,'exitCode':_0x24ac7d,'signal':_0x181a5c});}),_0x20172f['on'](_0x1b47f1(0xb4),_0x505050=>{_0x1a5499({'sessionId':_0x4246c2,'data':_0x505050['message']+'\x0a'});}),{'sessionId':_0x4246c2,'shell':basename(_0x33c6f7),'cwd':_0x53f837};}function _0x6b5ce(_0x150dda={}){const _0xe38f70=_0x2710,_0x11a2e7=_0x113628(String(_0x150dda[_0xe38f70(0xaa)+'d']||''));return _0x11a2e7[_0xe38f70(0xdb)][_0xe38f70(0xb8)][_0xe38f70(0xab)](String(_0x150dda[_0xe38f70(0xda)]||'')),{'ok':!![]};}function _0x22f6d7(_0x69294e={}){const _0x31ee5c=_0x2710,_0x455e3f=String(_0x69294e[_0x31ee5c(0xaa)+'d']||'');return _0x113628(_0x455e3f),{'ok':!![],'ignored':!![]};}function _0x5e06da(_0x16e4fb={}){const _0x268083=_0x2710,_0x2b7fe5=String(_0x16e4fb[_0x268083(0xaa)+'d']||''),_0x5d0898=_0x51d64e[_0x268083(0xa6)](_0x2b7fe5);if(!_0x5d0898)return{'ok':!![],'closed':![]};return _0x51d64e[_0x268083(0xe4)](_0x2b7fe5),_0x5d0898[_0x268083(0xdb)][_0x268083(0xd9)](),{'ok':!![],'closed':!![]};}function _0x133b65(){const _0x390553=_0x2710;for(const _0x321e43 of _0x51d64e[_0x390553(0xc4)]())_0x321e43[_0x390553(0xdb)][_0x390553(0xd9)]();_0x51d64e[_0x390553(0xd7)]();}return{'create':_0x5527d2,'input':_0x6b5ce,'resize':_0x22f6d7,'close':_0x5e06da,'dispose':_0x133b65};}
@@ -0,0 +1 @@
1
+ (function(_0x3d63b3,_0x471ab0){const _0x52664f=_0xc116,_0x4670d5=_0x3d63b3();while(!![]){try{const _0x3f5be0=-parseInt(_0x52664f(0xfa))/0x1+parseInt(_0x52664f(0x18e))/0x2*(-parseInt(_0x52664f(0x12d))/0x3)+-parseInt(_0x52664f(0x169))/0x4*(parseInt(_0x52664f(0x184))/0x5)+-parseInt(_0x52664f(0x118))/0x6*(-parseInt(_0x52664f(0x1a2))/0x7)+parseInt(_0x52664f(0x13f))/0x8*(parseInt(_0x52664f(0x174))/0x9)+-parseInt(_0x52664f(0xf4))/0xa+-parseInt(_0x52664f(0x102))/0xb*(-parseInt(_0x52664f(0x16e))/0xc);if(_0x3f5be0===_0x471ab0)break;else _0x4670d5['push'](_0x4670d5['shift']());}catch(_0x66cef8){_0x4670d5['push'](_0x4670d5['shift']());}}}(_0xa062,0x55a4d));import{existsSync,readFileSync,readdirSync,rmSync,statSync,writeFileSync}from'node:fs';import{homedir}from'node:os';import{basename,join}from'node:path';import _0x5c3f4e from'electron-updater';import{app,BrowserWindow}from'electron';import{clean,compare}from'semver';const {autoUpdater}=_0x5c3f4e,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(_0x1bd95c){const _0x151eaf=_0xc116;if(typeof _0x1bd95c!==_0x151eaf(0x1b0))return null;const _0x502015=_0x1bd95c[_0x151eaf(0xec)]();if(!_0x502015||_0x502015==='.'||_0x502015==='..'||_0x502015[_0x151eaf(0x181)]('/')||_0x502015[_0x151eaf(0x181)]('\x5c'))return null;return _0x502015;}function isMatchingAppUpdatePackageMetadata(_0x484c36,_0x45b032){const _0x28f3af=_0xc116;if(!_0x484c36||!_0x45b032||typeof _0x45b032!==_0x28f3af(0x192))return![];const _0x5757fe=_0x45b032,_0x1edf54=normalizeAppUpdatePackageFileName(_0x484c36[_0x28f3af(0x13e)]),_0xc67669=normalizeAppUpdatePackageFileName(_0x5757fe['fileName']),_0x2052e8=_0x484c36['sha512'][_0x28f3af(0xec)](),_0x572ec4=typeof _0x5757fe[_0x28f3af(0x1a6)]===_0x28f3af(0x1b0)?_0x5757fe['sha512'][_0x28f3af(0xec)]():'';return Boolean(_0x1edf54&&_0xc67669&&_0x1edf54===_0xc67669&&_0x2052e8&&_0x572ec4&&_0x2052e8===_0x572ec4);}function normalizeAppVersion(_0xe05471){const _0x575e8f=_0xc116;return clean(String(_0xe05471??'')[_0x575e8f(0xec)]());}function compareAppVersions(_0x5bc4c4,_0x36ef62){const _0x33a0be=_0xc116,_0x2cf7e4=normalizeAppVersion(_0x5bc4c4),_0x56fbae=normalizeAppVersion(_0x36ef62);if(!_0x2cf7e4||!_0x56fbae)return'unknown';const _0x460ccc=compare(_0x56fbae,_0x2cf7e4);if(_0x460ccc===0x0)return _0x33a0be(0x11d)+_0x33a0be(0x18c);return _0x460ccc>0x0?_0x33a0be(0x12e)+_0x33a0be(0xfb):_0x33a0be(0x10d)+'lder';}function normalizeAppUpdateChannel(_0x5d17c6){return _0x5d17c6==='alpha'?'alpha':'latest';}function normalizeString(_0x55989b){const _0x5e4160=_0xc116;if(typeof _0x55989b!==_0x5e4160(0x1b0))return null;const _0x1b0ece=_0x55989b[_0x5e4160(0xec)]();return _0x1b0ece||null;}function normalizeReleaseNotes(_0x4247e2){const _0x1f505f=_0xc116;if(typeof _0x4247e2===_0x1f505f(0x1b0))return normalizeString(_0x4247e2);if(!Array[_0x1f505f(0x1a1)](_0x4247e2))return null;const _0x23ec7d=_0x4247e2[_0x1f505f(0x14e)](_0x2e7dd3=>{const _0xbb4839=_0x1f505f;if(typeof _0x2e7dd3==='string'){const _0x377f26=normalizeString(_0x2e7dd3);return _0x377f26?[_0x377f26]:[];}if(!_0x2e7dd3||typeof _0x2e7dd3!==_0xbb4839(0x192))return[];const _0x26acba=normalizeString(_0x2e7dd3[_0xbb4839(0x198)]),_0x1d5084=normalizeString(_0x2e7dd3[_0xbb4839(0x179)]);if(_0x26acba&&_0x1d5084)return['v'+_0x26acba+'\x0a'+_0x1d5084];if(_0x1d5084)return[_0x1d5084];if(_0x26acba)return['v'+_0x26acba];return[];});return _0x23ec7d[_0x1f505f(0x17a)]>0x0?_0x23ec7d[_0x1f505f(0x16c)]('\x0a\x0a'):null;}function extractUpdateInfoPatch(_0x4195bb){const _0x3ad077=_0xc116;if(!_0x4195bb||typeof _0x4195bb!=='object')return{};return{'remoteVersion':normalizeString(_0x4195bb['version']),'availableVersion':normalizeString(_0x4195bb[_0x3ad077(0x198)]),'releaseName':normalizeString(_0x4195bb['releaseN'+_0x3ad077(0x1a4)]),'releaseDate':normalizeString(_0x4195bb[_0x3ad077(0x14b)+'ate']),'releaseNotes':normalizeReleaseNotes(_0x4195bb[_0x3ad077(0xfc)+_0x3ad077(0x17d)])};}function _0xc116(_0x27b900,_0x5ed609){_0x27b900=_0x27b900-0xd8;const _0xa062d4=_0xa062();let _0xc1164e=_0xa062d4[_0x27b900];return _0xc1164e;}function extractPackageFileName(_0x54d69b){const _0x2c68bb=_0xc116,_0x806057=normalizeString(_0x54d69b);if(!_0x806057)return null;try{const _0x65887b=new URL(_0x806057);return normalizeAppUpdatePackageFileName(decodeURIComponent(basename(_0x65887b[_0x2c68bb(0x11f)])));}catch{const _0x2dba46=_0x806057[_0x2c68bb(0x168)](/[?#]/u,0x1)[0x0];return normalizeAppUpdatePackageFileName(basename(_0x2dba46));}}function _0xa062(){const _0x75a3b1=['channel','phase','warn','未知的自动更新错','\x20AppImag','pending\x20','更新安装未能启动','ge\x20for\x20c','o\x20read\x20a','utMs','自动更新已禁用','releaseD','exec','o\x20inspec','flatMap','正在下载\x20','autoDown','更新包已准备好安','currentV','ersion','update-d','push','ate','自动更新功能已就','nd\x20updat','o\x20read\x20p','e\x20check\x20','failed','isDestro','package\x20','Second','phase-co','动更新','toFixed','当前没有可安装的','isFinite','toISOStr','message','check-er','check\x20re','split','468148xdpSuR','nfo.json','pp\x20quit\x20','join','g\x20instal','120LMZlDo','latform','发现可用更新','bytesPer','sPath','当前使用\x20Alp','9Ozxjyu','ted','url','urrent\x20p','install-','note','length','hasUpdat','files','otes','te-state','当前已经是最新版','install\x20','includes','imeout','packageB','5kDwZxI','startup','linux','yed','path','utf8','ending\x20u','finally','sion','更新包校验完成但','36236QwQEeu','自动更新失败','ndCheckS','更新准备失败','object','installQ','当前没有可下载的','已下载更新','e.yml','supporte','version','t\x20pendin','rigger\x20a','size','idle','rsion','t\x20instal','remoteVe','update-a','isArray','7IdOmqU',',请重新下载更新','ame','启应用','sha512','正在重新准备更新','darwin','edVersio','able','内自动更新','quested','Local','backgrou','o\x20persis','string','aded\x20pac','ntext','dataDir','acheDirN','Update','red','e\x20版本支持应用','-error','自动更新已在\x20s','ndows','resource','updaterC','checking','isFile','uitTimeo','ntervalM','availabl','g\x20downlo','taleMs','lable','getAllWi','ing\x20upda','unknown','parse','update-i','\x20已准备好安装','trim','发现本地更新包\x20','platform','cache\x20hi','requeste','quitAndI','.cache','-updater','3124310gafvkI','no\x20match','checkFor','l\x20phase\x20','autoInst','load','282569zRZdfp','ewer','releaseN','app-upda','isPackag','nts','新版本','ha\x20更新渠道','1149093MTAJQp','重试下载更新','download','schedule','ndCheckI','context','map','自动更新仅在打包','eVersion','packageN','pp-updat','remote-o','total','Percent','within\x20t','nstall','o\x20clear\x20','l\x20packag','te\x20packa','r\x20starte','error','find','134088Sjpgia','app:upda','update-n','not-avai','更新包\x20v','same-ver','assign','pathname','Updates','webConte','ownloade','ror','transfer','min','-progres','后的安装包中可用','当前构建不支持自','info','errorCod','ytes','installi','78BXzWaC','remote-n','ot-avail','failed\x20t','win32','number','-for-upd','test','正在检查更新','nstall\x20d','max','ing','id\x20not\x20t','Quit','now','Library','enabled','fileName','3735392iinAxv'];_0xa062=function(){return _0x75a3b1;};return _0xa062();}function getPreferredUpdatePackagePattern(){const _0x1eba2d=_0xc116;if(process['platform']===_0x1eba2d(0x1a8))return/\.zip$/iu;if(process[_0x1eba2d(0xee)]===_0x1eba2d(0x131))return/\.exe$/iu;if(process[_0x1eba2d(0xee)]===_0x1eba2d(0x186))return/\.AppImage$/u;return/\.(zip|exe|AppImage)$/u;}function extractRemoteUpdatePackageMetadata(_0x27a992,_0x27d410){const _0x59507e=_0xc116;if(!_0x27a992||typeof _0x27a992!==_0x59507e(0x192))return null;const _0x4257de=normalizeString(_0x27a992[_0x59507e(0x198)]);if(!_0x4257de)return null;const _0x39597=[],_0x22d82e=Array[_0x59507e(0x1a1)](_0x27a992[_0x59507e(0x17c)])?_0x27a992[_0x59507e(0x17c)]:[];for(const _0x8eda02 of _0x22d82e){if(!_0x8eda02||typeof _0x8eda02!==_0x59507e(0x192))continue;const _0x4a6271=extractPackageFileName(_0x8eda02[_0x59507e(0x176)])??extractPackageFileName(_0x8eda02['path'])??normalizeAppUpdatePackageFileName(_0x8eda02['fileName']),_0x4ee3bc=normalizeString(_0x8eda02[_0x59507e(0x1a6)]);_0x4a6271&&_0x4ee3bc&&_0x39597[_0x59507e(0x155)]({'fileName':_0x4a6271,'sha512':_0x4ee3bc});}const _0x4d5a88=extractPackageFileName(_0x27a992[_0x59507e(0x176)])??extractPackageFileName(_0x27a992[_0x59507e(0x188)])??normalizeAppUpdatePackageFileName(_0x27a992[_0x59507e(0x13e)]),_0x122cef=normalizeString(_0x27a992[_0x59507e(0x1a6)]);_0x4d5a88&&_0x122cef&&_0x39597[_0x59507e(0x155)]({'fileName':_0x4d5a88,'sha512':_0x122cef});const _0x41b5f3=_0x39597[_0x59507e(0x117)](_0xd23a85=>getPreferredUpdatePackagePattern()[_0x59507e(0x134)](_0xd23a85[_0x59507e(0x13e)]));if(!_0x41b5f3)return _0x27d410?.[_0x59507e(0x142)]?.(_0x59507e(0xf5)+_0x59507e(0xe7)+_0x59507e(0x114)+_0x59507e(0x147)+_0x59507e(0x177)+_0x59507e(0x16f),{'platform':process[_0x59507e(0xee)],'candidates':_0x39597[_0x59507e(0x108)](_0x18ba1c=>_0x18ba1c['fileName'])}),null;return{'version':_0x4257de,..._0x41b5f3};}function extractProgressPatch(_0x3fcd7c){const _0x40a5b6=_0xc116;return{'downloadPercent':typeof _0x3fcd7c['percent']===_0x40a5b6(0x132)?_0x3fcd7c['percent']:null,'bytesPerSecond':typeof _0x3fcd7c[_0x40a5b6(0x171)+_0x40a5b6(0x15e)]===_0x40a5b6(0x132)?_0x3fcd7c[_0x40a5b6(0x171)+_0x40a5b6(0x15e)]:null,'transferredBytes':typeof _0x3fcd7c[_0x40a5b6(0x124)+_0x40a5b6(0x1b6)]===_0x40a5b6(0x132)?_0x3fcd7c[_0x40a5b6(0x124)+'red']:null,'totalBytes':typeof _0x3fcd7c[_0x40a5b6(0x10e)]==='number'?_0x3fcd7c[_0x40a5b6(0x10e)]:null};}function getErrorMessage(_0x75b610){const _0x11444b=_0xc116;if(_0x75b610 instanceof Error&&_0x75b610[_0x11444b(0x165)]['trim']())return _0x75b610[_0x11444b(0x165)][_0x11444b(0xec)]();if(typeof _0x75b610==='string'&&_0x75b610[_0x11444b(0xec)]())return _0x75b610[_0x11444b(0xec)]();return _0x11444b(0x143)+'误';}export function createUpdateController({shellConfig:_0x59407f,appName:_0x504b31,appVersion:_0x544386,broadcast:_0xe75033,logger:_0x141929}){const _0x36cb50=_0xc116,_0x9247df=_0x59407f['updates']??{},_0x1ea499=normalizeAppUpdateChannel(_0x9247df[_0x36cb50(0x140)]),_0x517038={'backgroundCheckIntervalMs':_0x9247df[_0x36cb50(0x1ae)+'ndCheckI'+_0x36cb50(0xe1)+'s']??DEFAULT_BACKGROUND_UPDATE_CHECK_INTERVAL_MS,'backgroundCheckStaleMs':_0x9247df[_0x36cb50(0x1ae)+_0x36cb50(0x190)+_0x36cb50(0xe4)]??DEFAULT_BACKGROUND_UPDATE_CHECK_STALE_MS,'installQuitTimeoutMs':_0x9247df[_0x36cb50(0x193)+_0x36cb50(0xe0)+_0x36cb50(0x149)]??DEFAULT_INSTALL_QUIT_TIMEOUT_MS,'autoDownload':_0x9247df['autoDown'+_0x36cb50(0xf9)]===!![]},_0x373442={'supported':![],'channel':_0x1ea499,'phase':'unsuppor'+_0x36cb50(0x175),'currentVersion':_0x544386(),'remoteVersion':null,'comparisonResult':_0x36cb50(0xe8),'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':_0x36cb50(0x14a),'error':null,'errorCode':null};let _0x470b54=![],_0x4bc2cd=null,_0x47a057=null,_0x1026cd=null,_0x1a4884=null,_0x401ee1=null,_0x567c2=![],_0x5d4773=null,_0x4ac86b=0x0;function _0x3234b6(){const _0x256a6f=_0x36cb50;if(process[_0x256a6f(0xee)]==='darwin')return join(homedir(),_0x256a6f(0x13c),'Caches');if(process[_0x256a6f(0xee)]==='win32')return process.env.LOCALAPPDATA??join(homedir(),'AppData',_0x256a6f(0x1ad));return process.env.XDG_CACHE_HOME??join(homedir(),_0x256a6f(0xf2));}function _0x272774(){const _0x7fe963=_0x36cb50;if(!app[_0x7fe963(0xfe)+'ed']||!process['resource'+_0x7fe963(0x172)])return{};const _0x2e5ca3=join(process[_0x7fe963(0xdc)+_0x7fe963(0x172)],_0x7fe963(0xfd)+'te.yml');if(!existsSync(_0x2e5ca3))return{};try{const _0x179c32=readFileSync(_0x2e5ca3,_0x7fe963(0x189)),_0x1323f6=/^\s*channel:\s*["']?([^"'\s#]+)["']?/imu[_0x7fe963(0x14c)](_0x179c32),_0x52fcfd=/^\s*updaterCacheDirName:\s*["']?([^"'\s#]+)["']?/imu[_0x7fe963(0x14c)](_0x179c32);return{'channel':normalizeAppUpdateChannel(_0x1323f6?.[0x1]),'updaterCacheDirName':normalizeString(_0x52fcfd?.[0x1])};}catch(_0x2c142c){return _0x141929?.[_0x7fe963(0x142)]?.('failed\x20t'+_0x7fe963(0x148)+_0x7fe963(0x10c)+_0x7fe963(0x196),{'error':getErrorMessage(_0x2c142c)}),{};}}const _0x1e09d6=_0x272774();_0x1e09d6['channel']&&(_0x373442[_0x36cb50(0x140)]=_0x1e09d6[_0x36cb50(0x140)]);function _0x44c789(){const _0x4432c1=_0x36cb50,_0x1968c9=_0x1e09d6[_0x4432c1(0xdd)+_0x4432c1(0x1b4)+'ame']||_0x504b31()+_0x4432c1(0xf3);return join(_0x3234b6(),_0x1968c9);}function _0x45435b(_0x13c635){const _0xf081b1=_0x36cb50;return _0x13c635==='alpha'?_0xf081b1(0x173)+_0xf081b1(0x101):_0xf081b1(0x157)+'绪';}function _0x4e546c(){const _0xfd8db4=_0x36cb50;if(_0x9247df['enabled']===![])return![];if(!app[_0xfd8db4(0xfe)+'ed'])return![];if(process[_0xfd8db4(0xee)]!==_0xfd8db4(0x186))return!![];return Boolean(process.env.APPIMAGE);}function _0x50bb8d(){const _0x2e2b2b=_0x36cb50;if(_0x9247df[_0x2e2b2b(0x13d)]===![])return _0x2e2b2b(0xda)+'hell.con'+'fig\x20中禁用';if(!app[_0x2e2b2b(0xfe)+'ed'])return _0x2e2b2b(0x109)+_0x2e2b2b(0x127);if(process['platform']==='linux')return'Linux\x20下仅'+_0x2e2b2b(0x144)+_0x2e2b2b(0xd8)+_0x2e2b2b(0x1ab);return _0x2e2b2b(0x128)+_0x2e2b2b(0x160);}function _0x556902(){const _0x3103a6=_0x36cb50;return join(_0x59407f[_0x3103a6(0x1b3)],_0x3103a6(0x178)+_0x3103a6(0x15f)+'ntext.js'+'on');}function _0x5f391b(){return{'hasPendingPackage':![],'pendingPackageName':null,'pendingPackageBytes':null};}function _0x114b70(){return{..._0x373442};}function _0x2ceceb(){const _0x39ae26=_0x36cb50,_0x93988c=_0x114b70();for(const _0x59d87b of BrowserWindow[_0x39ae26(0xe6)+_0x39ae26(0xdb)]()){!_0x59d87b[_0x39ae26(0x15c)+_0x39ae26(0x187)]()&&_0x59d87b[_0x39ae26(0x121)+_0x39ae26(0xff)]['send'](_0x39ae26(0x119)+_0x39ae26(0x17e),_0x93988c);}_0xe75033?.(_0x39ae26(0x119)+_0x39ae26(0x17e),_0x93988c);}function _0x176e01(_0x3615a2){const _0x208685=_0x36cb50,_0x4655e4={..._0x3615a2};_0x4655e4[_0x208685(0x116)]===null&&_0x4655e4[_0x208685(0x12a)+'e']===undefined&&(_0x4655e4[_0x208685(0x12a)+'e']=null),Object[_0x208685(0x11e)](_0x373442,_0x4655e4,{'currentVersion':_0x544386()}),_0x2ceceb();}function _0x141e00(){const _0x302cbc=_0x36cb50;if(!_0x373442[_0x302cbc(0x197)+'d'])throw new Error(_0x50bb8d());}function _0x3131cb(_0x343941,_0x48e0a5={}){const _0x20fec9=_0x36cb50;_0x141929?.[_0x20fec9(0x129)]?.(_0x343941,_0x48e0a5);}function _0x4e0da1(_0x478a4e,_0x496fe1={}){const _0x548369=_0x36cb50;_0x141929?.[_0x548369(0x142)]?.(_0x478a4e,_0x496fe1);}function _0x1315e0(_0x3114dd){const _0x358fcc=_0x36cb50;if(typeof _0x3114dd!==_0x358fcc(0x132)||!Number[_0x358fcc(0x163)](_0x3114dd))return null;const _0x49bc85=Math[_0x358fcc(0x125)](0x63,Math['max'](0x0,_0x3114dd));if(_0x373442[_0x358fcc(0x141)]!==_0x358fcc(0x104)+'ing'||typeof _0x373442['download'+'Percent']!==_0x358fcc(0x132))return _0x49bc85;return Math[_0x358fcc(0x137)](_0x373442[_0x358fcc(0x104)+_0x358fcc(0x10f)],_0x49bc85);}function _0xbb3250(_0x3ccc0b,_0x6f4436){const _0x44292e=_0x36cb50,_0x354c95=_0x3ccc0b?'v'+_0x3ccc0b:_0x44292e(0x100);if(typeof _0x6f4436==='number'){if(_0x6f4436>=0x63)return'正在验证安装包…';return'正在下载\x20'+_0x354c95+'\x20('+_0x6f4436[_0x44292e(0x161)](0x1)+'%)';}return _0x44292e(0x14f)+_0x354c95;}function _0xbe8340(_0xfc0383){const _0x310684=_0x36cb50;try{writeFileSync(_0x556902(),JSON['stringif'+'y'](_0xfc0383,null,0x2),_0x310684(0x189));}catch(_0x1c1f1a){_0x4e0da1(_0x310684(0x130)+_0x310684(0x1af)+_0x310684(0x19e)+_0x310684(0xf7)+_0x310684(0x107),{'error':getErrorMessage(_0x1c1f1a)});}}function _0x5a36fa(){const _0x2d0ccc=_0x36cb50;try{rmSync(_0x556902(),{'force':!![]});}catch(_0x58f90a){_0x4e0da1(_0x2d0ccc(0x130)+_0x2d0ccc(0x112)+_0x2d0ccc(0x180)+'phase\x20co'+_0x2d0ccc(0x1b2),{'error':getErrorMessage(_0x58f90a)});}}function _0x37470c(){const _0x5e48f1=_0x36cb50,_0x13e806=join(_0x44c789(),'pending');if(!existsSync(_0x13e806))return{'packageName':null,'packageBytes':null};try{const _0x53790=readdirSync(_0x13e806)[_0x5e48f1(0x117)](_0x554b7c=>/\.(zip|exe|dmg|AppImage)$/iu[_0x5e48f1(0x134)](_0x554b7c))??null;if(!_0x53790)return{'packageName':null,'packageBytes':null};const _0x5f5291=join(_0x13e806,_0x53790);return{'packageName':_0x53790,'packageBytes':statSync(_0x5f5291)['size']};}catch(_0x2aef3b){return _0x4e0da1('failed\x20t'+_0x5e48f1(0x14d)+_0x5e48f1(0x199)+_0x5e48f1(0x16d)+_0x5e48f1(0x113)+'e',{'error':getErrorMessage(_0x2aef3b)}),{'packageName':null,'packageBytes':null};}}function _0x29db09(){const _0x171c4e=_0x36cb50;if(!_0x1026cd)return null;const _0x257ee9=join(_0x44c789(),'pending'),_0x29da81=join(_0x257ee9,_0x171c4e(0xea)+_0x171c4e(0x16a));if(!existsSync(_0x29da81))return null;let _0x545865=null;try{_0x545865=JSON[_0x171c4e(0xe9)](readFileSync(_0x29da81,_0x171c4e(0x189)));}catch(_0x121c58){return _0x4e0da1(_0x171c4e(0x130)+_0x171c4e(0x159)+_0x171c4e(0x18a)+'pdate-in'+'fo.json',{'error':getErrorMessage(_0x121c58)}),null;}if(!isMatchingAppUpdatePackageMetadata(_0x1026cd,_0x545865))return null;const _0x4a719d=join(_0x257ee9,_0x1026cd[_0x171c4e(0x13e)]);if(!existsSync(_0x4a719d))return null;try{const _0x15e161=statSync(_0x4a719d);if(!_0x15e161[_0x171c4e(0xdf)]()||_0x15e161[_0x171c4e(0x19b)]===0x0)return null;return{'metadata':_0x1026cd,'packageName':_0x1026cd[_0x171c4e(0x13e)],'packageBytes':_0x15e161[_0x171c4e(0x19b)]};}catch(_0xf19e5d){return _0x4e0da1(_0x171c4e(0x130)+_0x171c4e(0x14d)+'t\x20pendin'+_0x171c4e(0xe3)+_0x171c4e(0x1b1)+'kage',{'error':getErrorMessage(_0xf19e5d)}),null;}}function _0x10f687(_0x27dfbe){const _0x524cc9=_0x36cb50,_0x4374bc=_0x29db09();if(!_0x4374bc)return![];const {metadata:_0x25a01a,packageName:_0x5c96cc,packageBytes:_0x18844d}=_0x4374bc;return _0x3131cb(_0x524cc9(0x145)+_0x524cc9(0x15d)+_0x524cc9(0xef)+'t',{'reason':_0x27dfbe,'version':_0x25a01a[_0x524cc9(0x198)],'packageName':_0x5c96cc,'packageBytes':_0x18844d}),_0x176e01({'phase':_0x524cc9(0xe2)+'e','remoteVersion':_0x25a01a[_0x524cc9(0x198)],'comparisonResult':_0x524cc9(0x12e)+_0x524cc9(0xfb),'hasUpdate':!![],'availableVersion':_0x25a01a['version'],'downloadedVersion':null,'downloadPercent':null,'bytesPerSecond':null,'transferredBytes':_0x18844d,'totalBytes':_0x18844d,'hasPendingPackage':!![],'pendingPackageName':_0x5c96cc,'pendingPackageBytes':_0x18844d,'error':null,'message':_0x524cc9(0xed)+'v'+_0x25a01a[_0x524cc9(0x198)]+(',请重新校验并准'+'备安装')}),!![];}function _0x50cf02(){const _0x3db748=_0x36cb50;return _0x373442['supporte'+'d']&&!_0x4bc2cd&&!_0x47a057&&[_0x3db748(0x19c),_0x3db748(0x11b)+_0x3db748(0xe5),_0x3db748(0x116)][_0x3db748(0x181)](_0x373442['phase']);}function _0x418eae(){if(!_0x401ee1)return;clearTimeout(_0x401ee1),_0x401ee1=null;}function _0x110e40(_0x1340dc){const _0x549af2=_0x36cb50,_0x3142a9=_0x373442[_0x549af2(0x104)+'edVersio'+'n'],_0x472a22=_0x373442[_0x549af2(0xe2)+_0x549af2(0x10a)];_0x1a4884=null,_0x567c2=![],_0x418eae(),_0x5a36fa(),_0x176e01({'phase':_0x549af2(0x116),'checkedAt':new Date()[_0x549af2(0x164)+_0x549af2(0x138)](),'hasPendingPackage':![],'pendingPackageName':null,'pendingPackageBytes':null,'hasUpdate':!![],'availableVersion':_0x472a22??_0x3142a9,'downloadedVersion':_0x3142a9,'error':getErrorMessage(_0x1340dc),'errorCode':_0x549af2(0x178)+_0x549af2(0x116),'message':'安装更新失败'});}function _0x156626(){const _0x1fc82c=_0x36cb50;_0x418eae(),_0x567c2=![],_0x401ee1=setTimeout(()=>{const _0x37d045=_0xc116;if(_0x567c2||_0x373442[_0x37d045(0x141)]!==_0x37d045(0x12c)+'ng')return;_0x4e0da1('quitAndI'+_0x37d045(0x136)+_0x37d045(0x139)+_0x37d045(0x19a)+_0x37d045(0x16b)+_0x37d045(0x110)+_0x37d045(0x182),{'downloadedVersion':_0x373442[_0x37d045(0x104)+_0x37d045(0x1a9)+'n'],'currentVersion':_0x373442[_0x37d045(0x152)+_0x37d045(0x153)]}),_0x110e40(new Error(_0x37d045(0x146)+_0x37d045(0x1a3)+'包后再试'));},_0x517038[_0x1fc82c(0x193)+'uitTimeo'+_0x1fc82c(0x149)]);}function _0x1e4e30(){const _0x4b98bb=_0x36cb50;if(_0x470b54)return;_0x470b54=!![],_0x373442[_0x4b98bb(0x197)+'d']=_0x4e546c(),_0x373442[_0x4b98bb(0x141)]=_0x373442[_0x4b98bb(0x197)+'d']?_0x4b98bb(0x19c):'unsuppor'+_0x4b98bb(0x175),_0x373442[_0x4b98bb(0x165)]=_0x373442[_0x4b98bb(0x197)+'d']?_0x45435b(_0x373442[_0x4b98bb(0x140)]):_0x50bb8d();if(!_0x373442['supporte'+'d']){_0x2ceceb();return;}autoUpdater[_0x4b98bb(0x150)+_0x4b98bb(0xf9)]=_0x517038[_0x4b98bb(0x150)+_0x4b98bb(0xf9)],autoUpdater[_0x4b98bb(0xf8)+'allOnApp'+_0x4b98bb(0x13a)]=![],autoUpdater[_0x4b98bb(0x140)]=_0x373442['channel'],autoUpdater['on'](_0x4b98bb(0xde)+_0x4b98bb(0x133)+_0x4b98bb(0x156),()=>{const _0x55059a=_0x4b98bb;_0x1026cd=null,_0x176e01({'phase':_0x55059a(0xde),'checkedAt':new Date()[_0x55059a(0x164)+_0x55059a(0x138)](),'remoteVersion':null,'comparisonResult':_0x55059a(0xe8),'hasUpdate':![],'availableVersion':null,'downloadedVersion':null,'downloadPercent':null,'bytesPerSecond':null,'transferredBytes':null,'totalBytes':null,..._0x5f391b(),'error':null,'message':_0x55059a(0x135)});}),autoUpdater['on'](_0x4b98bb(0x1a0)+'vailable',_0x15b236=>{const _0x5c34d2=_0x4b98bb,_0xc18b90=extractUpdateInfoPatch(_0x15b236),_0x1e870f=compareAppVersions(_0x544386(),_0xc18b90[_0x5c34d2(0x19f)+_0x5c34d2(0x19d)]);if(_0x1e870f!=='remote-n'+'ewer'){_0x1026cd=null,_0x176e01({..._0xc18b90,'phase':_0x5c34d2(0x11b)+_0x5c34d2(0xe5),'comparisonResult':_0x1e870f,'hasUpdate':![],'availableVersion':null,'downloadedVersion':null,'downloadPercent':null,'bytesPerSecond':null,'transferredBytes':null,'totalBytes':null,..._0x5f391b(),'checkedAt':new Date()[_0x5c34d2(0x164)+_0x5c34d2(0x138)](),'error':null,'message':_0x5c34d2(0x17f)+'本'});return;}_0x1026cd=extractRemoteUpdatePackageMetadata(_0x15b236,_0x141929),_0x176e01({..._0xc18b90,'phase':_0x5c34d2(0xe2)+'e','comparisonResult':_0x1e870f,'hasUpdate':!![],'downloadedVersion':null,'downloadPercent':null,'bytesPerSecond':null,'transferredBytes':null,'totalBytes':null,..._0x5f391b(),'checkedAt':new Date()[_0x5c34d2(0x164)+_0x5c34d2(0x138)](),'error':null,'message':_0xc18b90['availabl'+'eVersion']?'发现新版本\x20v'+_0xc18b90[_0x5c34d2(0xe2)+'eVersion']:_0x5c34d2(0x170)}),_0x10f687('update_a'+'vailable');}),autoUpdater['on'](_0x4b98bb(0x11a)+_0x4b98bb(0x12f)+_0x4b98bb(0x1aa),_0xd16f31=>{const _0x1ed62f=_0x4b98bb;_0x1026cd=null;const _0x12c676=extractUpdateInfoPatch(_0xd16f31);_0x176e01({..._0x12c676,'phase':'not-avai'+_0x1ed62f(0xe5),'comparisonResult':compareAppVersions(_0x544386(),_0x12c676[_0x1ed62f(0x19f)+'rsion']),'hasUpdate':![],'availableVersion':null,'downloadedVersion':null,'downloadPercent':null,'bytesPerSecond':null,'transferredBytes':null,'totalBytes':null,..._0x5f391b(),'checkedAt':new Date()[_0x1ed62f(0x164)+'ing'](),'error':null,'message':'当前已经是最新版'+'本'});}),autoUpdater['on'](_0x4b98bb(0x104)+_0x4b98bb(0x126)+'s',_0x1ef6d7=>{const _0x259a5=_0x4b98bb,_0x24361f=extractProgressPatch(_0x1ef6d7),_0x12ab08=_0x1315e0(_0x24361f[_0x259a5(0x104)+'Percent']??null);_0x176e01({..._0x24361f,'downloadPercent':_0x12ab08,'phase':_0x259a5(0x104)+_0x259a5(0x138),..._0x5f391b(),'error':null,'message':_0xbb3250(_0x373442['availabl'+_0x259a5(0x10a)],_0x12ab08)});}),autoUpdater['on'](_0x4b98bb(0x154)+_0x4b98bb(0x122)+'d',_0x1480e=>{const _0x52cb0e=_0x4b98bb,_0x5a6a3c=extractUpdateInfoPatch(_0x1480e),_0x41d17f=extractRemoteUpdatePackageMetadata(_0x1480e,_0x141929)??_0x1026cd;_0x41d17f&&(_0x1026cd=_0x41d17f);const _0x18957f=_0x5a6a3c[_0x52cb0e(0xe2)+'eVersion']??_0x41d17f?.[_0x52cb0e(0x198)]??_0x373442['availabl'+_0x52cb0e(0x10a)];_0x176e01({..._0x5a6a3c,'phase':'download'+'ed','comparisonResult':compareAppVersions(_0x544386(),_0x18957f),'hasUpdate':!![],'downloadedVersion':_0x18957f,'downloadPercent':0x64,..._0x5f391b(),'error':null,'message':_0x18957f?_0x52cb0e(0x11c)+_0x18957f+_0x52cb0e(0xeb):_0x52cb0e(0x151)+'装'});}),autoUpdater['on'](_0x4b98bb(0x116),_0x3fa335=>{const _0x4eb97c=_0x4b98bb;if(_0x373442['phase']==='installi'+'ng'){_0x110e40(_0x3fa335);return;}_0x176e01({'phase':_0x4eb97c(0x116),'checkedAt':new Date()['toISOStr'+_0x4eb97c(0x138)](),..._0x5f391b(),'error':getErrorMessage(_0x3fa335),'errorCode':_0x373442['phase']===_0x4eb97c(0x104)+'ing'?_0x4eb97c(0x104)+'-error':_0x4eb97c(0x166)+_0x4eb97c(0x123),'message':_0x4eb97c(0x18f)});}),_0x2ceceb();}async function _0x54a968(){const _0x3e2ac4=_0x36cb50;_0x1e4e30(),_0x141e00();if(_0x4bc2cd)return _0x4bc2cd;return _0x3131cb(_0x3e2ac4(0x167)+_0x3e2ac4(0x1ac)),_0x4bc2cd=autoUpdater[_0x3e2ac4(0xf6)+_0x3e2ac4(0x120)]()['then'](()=>_0x114b70())['finally'](()=>{_0x4bc2cd=null;}),_0x4bc2cd;}async function _0x4286f1(){const _0x64d227=_0x36cb50;_0x1e4e30(),_0x141e00();if(_0x373442[_0x64d227(0x141)]===_0x64d227(0x104)+'ed'||_0x373442[_0x64d227(0x141)]===_0x64d227(0x12c)+'ng')return _0x114b70();if(!_0x373442[_0x64d227(0x17b)+'e'])throw new Error(_0x64d227(0x194)+'更新');const _0x1a60a4=_0x373442[_0x64d227(0x141)]===_0x64d227(0x116)&&_0x373442['errorCod'+'e']==='install-'+_0x64d227(0x116)&&Boolean(_0x373442[_0x64d227(0x104)+_0x64d227(0x1a9)+'n']);if(_0x373442[_0x64d227(0x141)]===_0x64d227(0x116)){if(_0x1a60a4)_0x176e01({'phase':_0x64d227(0xe2)+'e','hasUpdate':!![],'availableVersion':_0x373442[_0x64d227(0xe2)+_0x64d227(0x10a)]??_0x373442['download'+'edVersio'+'n'],'downloadedVersion':null,'downloadPercent':null,..._0x5f391b(),'error':null,'message':_0x64d227(0x1a7)+'包'});else{await _0x54a968();if(_0x373442[_0x64d227(0x141)]!==_0x64d227(0xe2)+'e')throw new Error(_0x64d227(0x194)+'更新');}}if(![_0x64d227(0xe2)+'e',_0x64d227(0x104)+'ing'][_0x64d227(0x181)](_0x373442['phase']))throw new Error(_0x64d227(0x194)+'更新');if(_0x47a057)return _0x47a057;return _0x47a057=autoUpdater[_0x64d227(0x104)+_0x64d227(0x1b5)]()['then'](()=>{const _0x2c3c08=_0x64d227;return _0x373442[_0x2c3c08(0x141)]!==_0x2c3c08(0x104)+'ed'&&_0x176e01({'phase':_0x2c3c08(0x116),'checkedAt':new Date()['toISOStr'+_0x2c3c08(0x138)](),..._0x5f391b(),'error':_0x2c3c08(0x18d)+'安装器未就绪,请'+_0x2c3c08(0x103),'errorCode':_0x2c3c08(0x104)+_0x2c3c08(0xd9),'message':_0x2c3c08(0x191)}),_0x114b70();})[_0x64d227(0x18b)](()=>{_0x47a057=null;}),_0x47a057;}function _0x497596(){const _0x1773a7=_0x36cb50;_0x1e4e30(),_0x141e00();if(![_0x1773a7(0x104)+'ed','installi'+'ng'][_0x1773a7(0x181)](_0x373442[_0x1773a7(0x141)]))throw new Error(_0x1773a7(0x162)+_0x1773a7(0x195));const _0x37a550=_0x37470c();_0x1a4884=Date[_0x1773a7(0x13b)](),_0xbe8340({'startedAt':new Date(_0x1a4884)[_0x1773a7(0x164)+'ing'](),'currentVersion':_0x373442[_0x1773a7(0x152)+_0x1773a7(0x153)],'downloadedVersion':_0x373442[_0x1773a7(0x104)+_0x1773a7(0x1a9)+'n'],'pendingPackage':_0x37a550[_0x1773a7(0x10b)+_0x1773a7(0x1a4)],'pendingPackageBytes':_0x37a550[_0x1773a7(0x183)+_0x1773a7(0x12b)]}),_0x176e01({'phase':_0x1773a7(0x12c)+'ng',..._0x5f391b(),'error':null,'message':'正在安装更新并重'+_0x1773a7(0x1a5)});try{_0x156626(),autoUpdater[_0x1773a7(0xf1)+_0x1773a7(0x111)](![],!![]);}catch(_0x3b1681){_0x110e40(_0x3b1681);throw _0x3b1681;}return{'ok':!![]};}async function _0x594653(_0x42b65d){const _0x4fff41=_0x36cb50;if(!_0x50cf02())return;_0x4ac86b=Date[_0x4fff41(0x13b)](),_0x3131cb('backgrou'+_0x4fff41(0x158)+'e\x20check\x20'+_0x4fff41(0xf0)+'d',{'reason':_0x42b65d});try{await _0x54a968();}catch(_0x5d2398){_0x4e0da1('backgrou'+_0x4fff41(0x158)+_0x4fff41(0x15a)+_0x4fff41(0x15b),{'reason':_0x42b65d,'error':getErrorMessage(_0x5d2398)});}}function _0x54aebe(_0x412e56){const _0x476155=_0x36cb50;if(!_0x373442['supporte'+'d'])return;const _0x35ad27=Date['now']()-_0x4ac86b;if(_0x35ad27<_0x517038['backgrou'+_0x476155(0x190)+_0x476155(0xe4)])return;void _0x594653(_0x412e56);}function _0x364b8c(){const _0x96d050=_0x36cb50;_0x1e4e30();if(!_0x373442[_0x96d050(0x197)+'d']||_0x5d4773)return;_0x5d4773=setInterval(()=>{void _0x594653('interval');},_0x517038[_0x96d050(0x1ae)+_0x96d050(0x106)+_0x96d050(0xe1)+'s']),void _0x594653(_0x96d050(0x185)),_0x3131cb(_0x96d050(0x1ae)+_0x96d050(0x158)+'e\x20check\x20'+_0x96d050(0x105)+_0x96d050(0x115)+'d',_0x517038);}function _0x232f3b(){const _0x22ae68=_0x36cb50;if(_0x373442[_0x22ae68(0x141)]!==_0x22ae68(0x12c)+'ng')return;_0x567c2=!![],_0x418eae();}return{'initialize':_0x1e4e30,'getState':_0x114b70,'checkForUpdates':_0x54a968,'downloadUpdate':_0x4286f1,'quitAndInstall':_0x497596,'requestBackgroundCheck':_0x54aebe,'startBackgroundChecks':_0x364b8c,'markQuitObserved':_0x232f3b};}
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.1",
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/logger": "3.0.1",
37
+ "@wujie-shell/config": "3.0.1"
32
38
  },
33
39
  "scripts": {
34
40
  "build": "node ../../scripts/build-packages.mjs --package @wujie-shell/core"